<?php
/**
 * Clase DP para CrUtilidadDP
 *
 * @package    
 * @subpackage CrUtilidadDP
 * @author     Willy
 * @version    SVN:: CrUtilidadDP.class.php,v 1.1 2016-11-11 13:29:46 william.taype Exp $
 */
class CrUtilidadDP extends BaseCrUtilidadDP
{
	
	public function saveUtilidad($fecha)
  {
  	  
       echo $fecha."###<br>";
      $con = Conexion::getConexion();
      
     
      ///////   Seleccionar el pivot sumado la fecha version fijada en 1 temporalmente /////////
      $sql = "SELECT cr_sucursal.IdSucursal, cr_sucursal.Descripcion as NombreSucursal,  cr_mercado.IdMercado , cr_mercado.Descripcion as NombreMercado ,  cr_colaborador.IdColaborador , concat(cr_colaborador.ApellidoPaterno,' ',cr_colaborador.ApellidoMaterno,', ',cr_colaborador.Nombres) as NombreRepresentante 
       		  FROM cr_sucursal
       		  INNER JOIN  cr_sucursal_mercado 	on cr_sucursal.idSucursal = cr_sucursal_mercado.idSucursal
       		  INNER JOIN  cr_mercado 			on cr_mercado.idMercado = cr_sucursal_mercado.idMercado
       		  INNER JOIN  cr_mercado_representante	on cr_mercado.idMercado = cr_mercado_representante.idMercado
       		  INNER JOIN  cr_colaborador	on cr_colaborador.idColaborador = cr_mercado_representante.idColaborador
       		  WHERE cr_sucursal.eliminado = '0'
       		  		and  cr_mercado.eliminado = '0'  
       		  		and  cr_colaborador.eliminado = '0'  
       		  		and  cr_colaborador.idRol = 'sys.ope'
       		  		";
      
    
      $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
      //echo $sql;
     // echo "<br><br><br><br><br><br>ddddd";
      $num_rows = mysql_num_rows($result);
     // echo $num_rows;
      if($num_rows>0){
        while ($o_valorS = mysql_fetch_object($result)) {
        	echo "---";
        	//Pivot
        	$IdSucursal 		= $o_valorS->IdSucursal;
        	$IdMercado 			= $o_valorS->IdMercado;
        	$IdColaborador		= $o_valorS->IdColaborador;
        	$NombreSucursal		= $o_valorS->NombreSucursal;
        	$NombreMercado		= $o_valorS->NombreMercado;
     
        	$NombreRepresentante= $o_valorS->NombreRepresentante;
        	
        	
        	$this->guardarSucursalMercado($IdSucursal,$IdMercado);
        	$this->guardarMercadoRepresentante($IdMercado,$IdColaborador);
        	$this->guardarPrestamosCancelados($fecha,$IdSucursal,$IdMercado,$IdColaborador,$NombreSucursal,$NombreMercado);
        	
        	
        }
      }
         
      return count($a_tmp)>0?$a_tmp:null;
  }
  
  public function  guardarSucursalMercado($IdSucursal,$IdMercado){
  	
  	$con = Conexion::getConexion(); 
  
  	$sql = "REPLACE INTO  cr_utilidad_suc_mer
					(idSucursal, idMercado)
				VALUES
					('".$IdSucursal."','".$IdMercado."') 
				";
  	//echo "--------<br>";
  	//echo $sql."--------<br>";
  	//echo "--------<br>";
	$result2 = mysql_db_query(Conexion::getNameDb(), $sql, $con);
	$id = mysql_insert_id($con); 
	echo $id."****";
       
	return $id;
		
  }
  
  public function  guardarMercadoRepresentante($IdMercado,$IdColaborador){
  	
  	$con = Conexion::getConexion(); 
  
  	$sql = "REPLACE INTO  cr_utilidad_mer_rep
					(IdMercado, IdColaborador)
				VALUES
					('".$IdMercado."','".$IdColaborador."') 
				";
  	//echo "--------<br>";
  	//echo $sql."--------<br>";
  	//echo "--------<br>";
	$result2 = mysql_db_query(Conexion::getNameDb(), $sql, $con);
	$id = mysql_insert_id($con); 
	//echo $id."****";
       
	return $id;
		
  }
  
  public function getMontoMoraT($IdPrestamo){
  	$con = Conexion::getConexion(); 
  
  	$sql = "SELECT SUM(MontoPago) as SumaMora
				FROM cr_pago
				WHERE IdPrestamo = '".$IdPrestamo."' and TipoPago='2'
				";
  	//echo "--------<br>";
  	//echo $sql."--------<br>";
  	//echo "--------<br>";
	$result = mysql_db_query(Conexion::getNameDb(), $sql, $con);     	
        	
	//echo $sql;
	echo "<br><br><br><br><br><br>ddddd";
	$num_rows = mysql_num_rows($result);
	echo $num_rows;
	if($num_rows>0){
		while ($o_valorS = mysql_fetch_object($result)) {
			return $o_valorS->SumaMora;
		}
	}
	return 0;
  }
  
  public function  guardarPrestamosCancelados($fecha,$IdSucursal,$IdMercado,$IdColaborador,$NombreSucursal,$NombreMercado){
  	
  	$con = Conexion::getConexion(); 
  
  	$sql = "SELECT cr_mercado.descripcion,cr_cliente.NombreCompleto,concat(cr_colaborador.ApellidoPaterno,' ',cr_colaborador.ApellidoMaterno,', ',cr_colaborador.Nombres) as NombreRepresentante,MontoPrestado,cr_prestamo.IdColaborador,cr_prestamo.idPrestamo,cr_prestamo.SaldoPrestamo,cr_prestamo.Origen,cr_prestamo.IdPrestamoReferencia,cr_prestamo.IdCliente,cr_cliente.NombreCompleto as Cliente,MontoTotal,MontoPrestado,InteresMonto,GastoAdministrativo,cr_prestamo.FechaInicio,fechaCancelacion,cr_prestamo.FechaVencimiento,MontoExtra
			FROM cr_prestamo
			LEFT JOIN cr_cliente on cr_cliente.idcliente = cr_prestamo.idcliente
			left join cr_mercado on cr_cliente.idmercado = cr_mercado.idmercado
			left join cr_colaborador on cr_prestamo.IdColaborador = cr_colaborador.IdColaborador
			where 1=1 
				and fechaCancelacion is not null 
				and fechaCancelacion like '$fecha%' 
				and cr_cliente.idmercado = '$IdMercado' 
				and cr_prestamo.IdColaborador = '$IdColaborador' 
				and cr_prestamo.Estado ='C'
				and FlagContUtilidad = '-1'
				
			order by 1 
			";
	//and cr_prestamo.idprestamo='22196'
	//echo $sql."------------------------------";
	//echo "<br>";
	$result = mysql_db_query(Conexion::getNameDb(), $sql, $con);     	
        	
	//echo $sql;
	//echo "<br><br><br><br><br><br>ddddd";
	$num_rows = mysql_num_rows($result);
	//echo $num_rows;
	if($num_rows>0){
		while ($o_valorS = mysql_fetch_object($result)) {
        	$idPrestamo			= $o_valorS->idPrestamo;
        	$MontoTotal			= $o_valorS->MontoTotal;
        	$InteresMonto		= $o_valorS->InteresMonto;
        	$SaldoPrestamo		= $o_valorS->SaldoPrestamo;
        	
        	$GastoAdministrativo= $o_valorS->GastoAdministrativo;
        	$MontoMora = $this->getMontoMoraT($o_valorS->idPrestamo);
        	
        	$FechaInicio		= $o_valorS->FechaInicio;
        	$fechaCancelacion=	 $o_valorS->fechaCancelacion;
        	$FechaVencimiento	= $o_valorS->FechaVencimiento;
        	$MontoPrestado		= $o_valorS->MontoPrestado;
        	
        	//echo "M.E.-->".$MontoPrestado."--";
        	
        	$NombreRepresentante= $o_valorS->NombreRepresentante;
        	$IdCliente			= $o_valorS->IdCliente;
        	$Cliente			= $o_valorS->Cliente;
        	$GastoAdministrativo= $o_valorS->GastoAdministrativo;
        	$Origen				= $o_valorS->Origen;
        	$MontoExtra				= $o_valorS->MontoExtra;
        	
        	if($Origen == "R" && $MontoExtra == 0 && $SaldoPrestamo == 0){ //Cancelo un prestamo nuevo totalmente
        		$Ganancia = $InteresMonto + $GastoAdministrativo + $MontoMora;
        	}elseif($Origen == "R" && $MontoExtra == 0 && $SaldoPrestamo > 0){ //Cancelo un prestamo nuevo pero fue renovado
			    //Busco si realmente fue renovado
				$sql = "SELECT MontoExtra
							FROM cr_prestamo
							where 1 = 1 
								and cr_prestamo.IdPrestamoReferencia = '$idPrestamo' 							
								
							order by 1 
							";
				$resultFF = mysql_db_query(Conexion::getNameDb(), $sql, $con);     	
				//and cr_prestamo.Estado ='P'		
				// echo $sql;
				//echo "<br><br><br><br><br><br>ddddd";
				$num_rowsFF = mysql_num_rows($resultFF);
				//echo $num_rowsF;
				if($num_rowsFF >0){
					while ($o_valorSFF = mysql_fetch_object($resultFF)) {
						//Es Renovado con Monto Extra y Refinanciado Monto Extra sera 0
						$MontoExtraF	= round($o_valorSFF->MontoExtra,2);
						if($MontoExtraF > 0){ // Lo renovo
							$Ganancia = $InteresMonto + $GastoAdministrativo + $MontoMora;
						}else{
							continue 2; // Lo refinancio
						}
					}
				}
        		//$Ganancia = $InteresMonto + $GastoAdministrativo + $MontoMora;
        	}elseif(($Origen == "F" && $MontoExtra > 0 && $SaldoPrestamo == 0)){ //Cancelo un RENOVADO totalmente
        		$IdPrestamoReferencia= $o_valorS->IdPrestamoReferencia;
        		/*
        		while ($IdPrestamoReferencia > 0 ){
        		
	        		$sql = "SELECT cr_prestamo.idPrestamo,cr_prestamo.IdPrestamoReferencia,cr_prestamo.SaldoPrestamo,MontoTotal,InteresMonto,InteresMonto,MontoPrestado,GastoAdministrativo,FlagContUtilidad,MontoExtra
							FROM cr_prestamo
							where 1 = 1 
								and cr_prestamo.idPrestamo = '$IdPrestamoReferencia' 							
								and cr_prestamo.Estado ='C'
							
							order by 1 
							";
					// echo $sql;
					// echo "<br>";
					$resultF = mysql_db_query(Conexion::getNameDb(), $sql, $con);     	
				        	
					// echo $sql;
					//echo "<br><br><br><br><br><br>ddddd";
					$num_rowsF = mysql_num_rows($resultF);
					//echo $num_rowsF;
					if($num_rowsF >0){
						while ($o_valorSF = mysql_fetch_object($resultF)) {
							$IdPrestamoReferencia	= $o_valorSF->IdPrestamoReferencia;
							if($o_valorSF->MontoExtra == 0 && $o_valorSF->FlagContUtilidad == -1 ){
								$n_MontoTotal				= round($o_valorSF->MontoTotal,2);
								$n_SaldoPrestamo			= round($o_valorSF->SaldoPrestamo,2);
								$InteresMonto				+= $o_valorSF->InteresMonto;
								$n_Amortizo 				= $n_MontoTotal - $n_SaldoPrestamo;
								$MontoTotal					+= $n_Amortizo;
								$MontoPrestado				= $o_valorSF->MontoPrestado;
								$GastoAdministrativo		+= $o_valorSF->GastoAdministrativo;
								$MontoMora += $this->getMontoMoraT($o_valorSF->idPrestamo);
							}
						}
					}
					
	        	}
				*/
				$Ganancia = $InteresMonto + $GastoAdministrativo + $MontoMora;
				
        	}elseif(($Origen == "F" && $MontoExtra == 0 && $SaldoPrestamo == 0) ){ //Cancelo un Prestamo REFINANCIADO totalmente 
				$IdPrestamoReferencia= $o_valorS->IdPrestamoReferencia;
        		
        		while ($IdPrestamoReferencia > 0 ){
        		
	        		$sql = "SELECT cr_prestamo.idPrestamo,cr_prestamo.IdPrestamoReferencia,cr_prestamo.SaldoPrestamo,MontoTotal,InteresMonto,InteresMonto,MontoPrestado,GastoAdministrativo,FlagContUtilidad,MontoExtra
							FROM cr_prestamo
							where 1 = 1 
								and cr_prestamo.idPrestamo = '$IdPrestamoReferencia' 							
								
								
							order by 1 
							";
					//and cr_prestamo.Estado ='C'
					// echo $sql;
					// echo "<br>";
					$resultF = mysql_db_query(Conexion::getNameDb(), $sql, $con);     	
				        	
					// echo $sql;
					//echo "<br><br><br><br><br><br>ddddd";
					$num_rowsF = mysql_num_rows($resultF);
					//echo $num_rowsF;
					if($num_rowsF >0){
						while ($o_valorSF = mysql_fetch_object($resultF)) {
							$IdPrestamoReferencia	= $o_valorSF->IdPrestamoReferencia;
							if($o_valorSF->MontoExtra == 0 && $o_valorSF->FlagContUtilidad == -1 ){
								$n_MontoTotal				= round($o_valorSF->MontoTotal,2);
								$n_SaldoPrestamo			= round($o_valorSF->SaldoPrestamo,2);
								$InteresMonto				+= $o_valorSF->InteresMonto;
								$n_Amortizo 				= $n_MontoTotal - $n_SaldoPrestamo;
								$MontoTotal					+= $n_Amortizo;
								$MontoPrestado				= $o_valorSF->MontoPrestado;
								$GastoAdministrativo		+= $o_valorSF->GastoAdministrativo;
								$MontoMora += $this->getMontoMoraT($o_valorSF->idPrestamo);
							}elseif($o_valorSF->MontoExtra > 0){ // Vino de un Renovado
								$n_MontoTotal				= round($o_valorSF->MontoTotal,2);
								$n_SaldoPrestamo			= round($o_valorSF->SaldoPrestamo,2);
								$InteresMonto				+= $o_valorSF->InteresMonto;
								$n_Amortizo 				= $n_MontoTotal - $n_SaldoPrestamo;
								$MontoTotal					+= $n_Amortizo;
								$MontoPrestado				= $o_valorSF->MontoPrestado;
								$GastoAdministrativo		+= $o_valorSF->GastoAdministrativo;
								$MontoMora += $this->getMontoMoraT($o_valorSF->idPrestamo);
								break 2;
							}
						}
					}
					
	        	}	
        		//$Ganancia = $MontoTotal - $MontoPrestado + $GastoAdministrativo + $MontoMora;
        		$Ganancia = $InteresMonto + $GastoAdministrativo + $MontoMora;
        	
        			
        	}elseif($Origen == "F" && $MontoExtra == 0 && $SaldoPrestamo > 0){ //REFINANCIADO Cancelo pero lo volvio a REFINANCIAR el Prestamo 
				//Puede ser renovado o refinanciado y esta incluido
				
				
				$sql = "SELECT MontoExtra
							FROM cr_prestamo
							where 1 = 1 
								and cr_prestamo.IdPrestamoReferencia = '$idPrestamo' 							
								
							order by 1 
							";
				$resultFF = mysql_db_query(Conexion::getNameDb(), $sql, $con);     	
				//and cr_prestamo.Estado ='P'		
				// echo $sql;
				//echo "<br><br><br><br><br><br>ddddd";
				$num_rowsFF = mysql_num_rows($resultFF);
				//echo $num_rowsF;
				if($num_rowsFF >0){
					while ($o_valorSFF = mysql_fetch_object($resultFF)) {
						//Es Renovado con Monto Extra se calculara Utilidad y Refinanciado Monto Extra sera 0
						$MontoExtraF	= round($o_valorSFF->MontoExtra,2);
						if($MontoExtraF > 0){
							$IdPrestamoReferencia= $o_valorS->IdPrestamoReferencia;
        		
							while ($IdPrestamoReferencia > 0 ){
							
								$sql = "SELECT cr_prestamo.idPrestamo,cr_prestamo.IdPrestamoReferencia,cr_prestamo.SaldoPrestamo,MontoTotal,InteresMonto,InteresMonto,MontoPrestado,GastoAdministrativo,FlagContUtilidad,MontoExtra
										FROM cr_prestamo
										where 1 = 1 
											and cr_prestamo.idPrestamo = '$IdPrestamoReferencia' 							
											
											
										order by 1 
										";
								// echo $sql;
								// echo "<br>";
								//and cr_prestamo.Estado ='C'
								$resultF = mysql_db_query(Conexion::getNameDb(), $sql, $con);     	
										
								// echo $sql;
								//echo "<br><br><br><br><br><br>ddddd";
								$num_rowsF = mysql_num_rows($resultF);
								//echo $num_rowsF;
								if($num_rowsF >0){
									while ($o_valorSF = mysql_fetch_object($resultF)) {
										$IdPrestamoReferencia	= $o_valorSF->IdPrestamoReferencia;
										if($o_valorSF->MontoExtra == 0 && $o_valorSF->FlagContUtilidad == -1 ){
											$n_MontoTotal				= round($o_valorSF->MontoTotal,2);
											$n_SaldoPrestamo			= round($o_valorSF->SaldoPrestamo,2);
											$InteresMonto				+= $o_valorSF->InteresMonto;
											$n_Amortizo 				= $n_MontoTotal - $n_SaldoPrestamo;
											$MontoTotal					+= $n_Amortizo;
											$MontoPrestado				= $o_valorSF->MontoPrestado;
											$GastoAdministrativo		+= $o_valorSF->GastoAdministrativo;
											$MontoMora += $this->getMontoMoraT($o_valorSF->idPrestamo);
										}elseif($o_valorSF->MontoExtra > 0 && $o_valorSF->FlagContUtilidad == -1){
											$n_MontoTotal				= round($o_valorSF->MontoTotal,2);
											$n_SaldoPrestamo			= round($o_valorSF->SaldoPrestamo,2);
											$InteresMonto				+= $o_valorSF->InteresMonto;
											$n_Amortizo 				= $n_MontoTotal - $n_SaldoPrestamo;
											$MontoTotal					+= $n_Amortizo;
											$MontoPrestado				= $o_valorSF->MontoPrestado;
											$GastoAdministrativo		+= $o_valorSF->GastoAdministrativo;
											$MontoMora += $this->getMontoMoraT($o_valorSF->idPrestamo);
											break 2;
										}
									}
								}
								
							}	
							//$Ganancia = $MontoTotal - $MontoPrestado + $GastoAdministrativo + $MontoMora;
							$Ganancia = $InteresMonto + $GastoAdministrativo + $MontoMora;
							//$Ganancia = $InteresMonto + $GastoAdministrativo + $MontoMora;
						}else{
							continue 2;
						}
					}
				}
        	    //continue;
        	}elseif($Origen == "F" && $MontoExtra > 0 && $SaldoPrestamo > 0){ //RENOVADO Cancelo un RENOVADO pero lo volvio a REFINANCIAR el Prestamo 
        		//continue; //$Ganancia = $InteresMonto + $GastoAdministrativo + $MontoMora;
				//Puede ser renovado o refinanciado y esta incluido
				echo "entro entro entro <br>";
				$sql = "SELECT MontoExtra
							FROM cr_prestamo
							where 1 = 1 
								and cr_prestamo.IdPrestamoReferencia = '$idPrestamo' 							
								
							order by 1 
							";
				echo $sql;
				$resultFF = mysql_db_query(Conexion::getNameDb(), $sql, $con);     	
						
				// echo $sql;
				//echo "<br><br><br><br><br><br>ddddd";
				$num_rowsFF = mysql_num_rows($resultFF);
				//echo $num_rowsF;
				if($num_rowsFF >0){
					while ($o_valorSFF = mysql_fetch_object($resultFF)) {
						//Es Renovado con Monto Extra y Refinanciado Monto Extra sera 0
						$MontoExtraF	= round($o_valorSFF->MontoExtra,2);
						if($MontoExtraF > 0){
							echo "entro 2 entro 2 entro 2<br>";
							$Ganancia = $InteresMonto + $GastoAdministrativo + $MontoMora;
						}else{
							$noactualizar = 1;
							echo "entro 3 entro 3 entro 3<br>";
							continue 2;
						}
					}
				}
				//continue;
        	}
        	if(!$noactualizar){          	
				$sql = "UPDATE  cr_prestamo
						SET FlagContUtilidad='1' 
						where IdPrestamo = '".$idPrestamo."'";
				echo $sql;
				//echo "<br>";
				//echo "<br>";
				mysql_db_query(Conexion::getNameDb(), $sql, $con);   
			}
        	$sql = "REPLACE INTO  cr_utilidad
				(
				idSucursal, idMercado, IdRepresentante,  IdPrestamo, Origen,
				AnioCancelacion,PeriodoCancelacion,FechaCancelacion, FechaInicio, FechaVencimiento, IdCliente,
				MontoMora,MontoTotal,Utilidad, Ganancia, Sucursal, Mercado, Representante, Cliente,
				GastoAdministrativo,FechaRegistro
				)
			VALUES
				(
				'".$IdSucursal."','".$IdMercado."','".$IdColaborador."','".$idPrestamo."','".$Origen."',
				'".$fecha."','".$fecha."','".$fecha."','".$FechaInicio."','".$FechaVencimiento."','".$IdCliente."',
				'".$MontoMora."','".$MontoTotal."','".$InteresMonto."','".($Ganancia)."','".$NombreSucursal."','".$NombreMercado."','".$NombreRepresentante."',
				'".$Cliente."','".$GastoAdministrativo."','".date('Y-m-d H:i:s')."') 
			";
			echo $sql;
			
			//echo "<br>";
			//echo "<br>";
			mysql_db_query(Conexion::getNameDb(), $sql, $con);  

			
			 	
		}
	}
		
  }
}