<?php

use_helper('UrlFunctions');
use_helper('UtilFunctions');
$o_ObjectBean = new PrestamoBean();

if(myUser::getUser()->getRoleId() != "sys.ope"){
	exit("NO PERMISOS");
}

//Correspondencia del usuario operador con el mercado
getPermisoColaboradorMercado(myUser::getUser()->getIdColaborador(),$cboMercado);

if(myUser::getUser()->getIdPadre() == '1' || myUser::getUser()->getRoleId() == "sys.ope"){
  	$o_ColaboradorBean_Temp = new ColaboradorBean();
  	$o_ColaboradorBean_Temp->setIdColaborador(myUser::getUser()->getIdColaborador()); 
  	$o_ColaboradorBL_Temp = new ColaboradorBL();
  	$o_ColaboradorBeanResult = $o_ColaboradorBL_Temp->busquedaColaborador($o_ColaboradorBean_Temp);
  	$idAdministrador = $o_ColaboradorBeanResult[0]->getIdPadre();
  	//$FlagPermitirPago = $o_ColaboradorBeanResult[0]->getFlagPermitirPago();
  	
 }elseif(myUser::getUser()->getIdPadre() == "A"){ //Todos los Padres Rol actualmente sys.gen y sys.view
 	//SIN FILTRO
 }else{
  	$idAdministrador = myUser::getUser()->getIdColaborador();
 }
 
 if($FlagPermitirPago == -1){
 	exit("No esta permitido para ingresar pagos, consulte con el administrador.");
 }

 if($idAdministrador){
	$o_SucursalBean = new SucursalBean();
	$o_SucursalBean->setIdAdministrador($idAdministrador);
	$o_SucursalBL = new SucursalBL();
	$a_o_sucursal = $o_SucursalBL->busquedaSucursal($o_SucursalBean);
	//----------------------------------------------------
	
	$IdSucursal = $a_o_sucursal[0]->getIdSucursal();
	
 }
 
$o_BalanceDia = new BalanceDiaBean();
$o_BalanceDia->setIdSucursal($IdSucursal);
$o_BalanceDia->setIdAdministrador($idAdministrador);

$o_BalanceDiaDP = new BalanceDiaDP($o_BalanceDia);
$fecha = $o_BalanceDiaDP->ObtenerDiaAbierto();

if($control){
	
	$o_PrestamoDP = new PrestamoDP(new PrestamoBean());
	//$o_PrestamoDP->inicializarPagos($cboMercado,$fecha,myUser::getUser()->getIdColaborador());
	
	getPermisoColaboradorMercado(myUser::getUser()->getIdColaborador(),$cboMercado);
	getPermisoColaborador(myUser::getUser()->getIdColaborador(),$IdcolaboradorTrx);
	
	if(is_array($txtMontoPago)){
		while(list($idPrestamo,$MontoPago) = each($txtMontoPago)){
			if($MontoPago){
				$id_pago_update ="";
				if($MontoPago == "0"){
					
					$o_PrestamoBeanTemp = new PrestamoBean();
					$o_PrestamoBeanTemp->setIdPrestamo($idPrestamo);
					//$o_PrestamoBLTemp = new PrestamoBL();
					$o_PrestamoDP = new PrestamoDP($o_PrestamoBeanTemp);
				    $a_o_Prestamo = $o_PrestamoDP->select();
					foreach ($a_o_Prestamo as $key =>$o_Prestamo){
						$FechaInicio = $o_Prestamo->getFechaInicio();
					}
					
					//Preguntar si esta registrado en ese dia un Pago
					$o_PagoBean = new PagoBean();
					$o_PagoBean->setIdPrestamo($idPrestamo);
					$o_PagoBean->setFechaPago($fecha);
					$o_PagoBL = new PagoBL();
					$a_o_pago = $o_PagoBL->busquedaPago($o_PagoBean);
					if(is_array($a_o_pago) && count($a_o_pago)){
						$permtir_reg_pago = "0";
					}else{
						if($fecha > $FechaInicio){
							$permtir_reg_pago = "1";
						}else{
							$permtir_reg_pago = "0";
						}
					}
				}else{
					$permtir_reg_pago = "1";
					$o_PagoBean = new PagoBean();
					$o_PagoBean->setIdPrestamo($idPrestamo);
					$o_PagoBean->setFechaPago($fecha);
					$o_PagoBL = new PagoBL();
					$a_o_pago = $o_PagoBL->busquedaPago($o_PagoBean);
					
					if(is_array($a_o_pago) && count($a_o_pago)){//Update del Pago
						foreach ($a_o_pago as $key => $o_pago) {
							if($o_pago->getMontoPago()== 0){
								$id_pago_update = $o_pago->getIdPago();
							}
						}
					}
				}
				if($permtir_reg_pago){
					$o_PagoBean = new PagoBean();
					$o_PagoBean->setIdPrestamo($idPrestamo);
					$o_PagoBean->setMontoPago($MontoPago);
					$o_PagoBean->setFechaPago($fecha);
					$o_PagoBean->setUsuarioCreacion(myUser::getUser()->getUserId());
					$o_PagoBean->setIdColaborador(myUser::getUser()->getIdColaborador());
					$o_PagoBean->setFechaCreacion(date('Y-m-d H:i:s'));
					$o_PagoBL = new PagoBL();
					if($id_pago_update){
						$o_PagoBean->setIdPago($id_pago_update);
						$o_PagoBL->modificarPago($o_PagoBean);
					}else{
						$o_PagoBL->insertarPago($o_PagoBean);
					}
					
					//Actualizar el Saldo del Prestamo-----------------------
					
					$o_PrestamoBeanTemp = new PrestamoBean();
					$o_PrestamoBeanTemp->setIdPrestamo($idPrestamo);
					//$o_PrestamoBLTemp = new PrestamoBL();
					$o_PrestamoDP = new PrestamoDP($o_PrestamoBeanTemp);
				    $a_o_Prestamo = $o_PrestamoDP->select();
					foreach ($a_o_Prestamo as $key =>$o_Prestamo){
						$SaldoAnterior = $o_Prestamo->getSaldoPrestamo();
						$SaldoMoraAnterior = $o_Prestamo->getSaldoMora();
					}
					$o_PrestamoBean = new PrestamoBean();
					$o_PrestamoBean->setIdPrestamo($idPrestamo);
					$NuevoSaldo = $SaldoAnterior - $MontoPago;
					
					if($NuevoSaldo == 0){
						$o_PrestamoBean->setSaldoPrestamo("0.00");
						if($SaldoMoraAnterior == 0){
							$o_PrestamoBean->setEstado("C");
							$o_PrestamoBean->setFechaCancelacion(date('Y-m-d H:i:s'));
						}
						//Enviar correo
						
					}elseif($NuevoSaldo < 0){//Se cancelo con un monto mayor
						$NuevoSaldo = "0";
						$o_PrestamoBean->setSaldoPrestamo("0.00");
						if($SaldoMoraAnterior == 0){
							$o_PrestamoBean->setEstado("C");
							$o_PrestamoBean->setFechaCancelacion(date('Y-m-d H:i:s'));
						}
						//Enviar correo
											
						
					}else{//Descuento de saldo Normal
						$o_PrestamoBean->setSaldoPrestamo($NuevoSaldo);	
					}
					$o_PrestamoBL = new PrestamoBL();
					$o_PrestamoBL->modificarPrestamo($o_PrestamoBean);
				}
				//-------------------------------------------------------
			}
		}
	}
	
	//Actualizar los saldos de la Mora e insertar la Mora
	if(is_array($txtMora)){
		while(list($idPrestamo,$MontoMora) = each($txtMora)){
			if($MontoMora > 0){
				
				$o_PrestamoBeanTemp = new PrestamoBean();
				$o_PrestamoBeanTemp->setIdPrestamo($idPrestamo);
				//$o_PrestamoBLTemp = new PrestamoBL();
				$o_PrestamoDP = new PrestamoDP($o_PrestamoBeanTemp);
			    $a_o_Prestamo = $o_PrestamoDP->select();
				foreach ($a_o_Prestamo as $key =>$o_Prestamo){
					$SaldoAnteriorMora = $o_Prestamo->getSaldoMora();
					$SaldoAnterior = $o_Prestamo->getSaldoPrestamo();
				}
					
				$o_PrestamoBean = new PrestamoBean();
				$o_PrestamoBean->setIdPrestamo($idPrestamo);
				$NuevoSaldoMora = $SaldoAnteriorMora - $MontoMora;
				
				if($NuevoSaldoMora < 0){
					$MontoMora = $SaldoAnteriorMora;
				}
				
				$o_PrestamoBean->setInteresMora($txtIMora[$idPrestamo]);
				
				if($NuevoSaldoMora == 0 && $SaldoAnterior == 0){
					$o_PrestamoBean->setSaldoMora("0.00");
					$o_PrestamoBean->setEstado("C");
					$o_PrestamoBean->setFechaCancelacion(date('Y-m-d H:i:s'));
				}elseif($NuevoSaldoMora == 0){
					$o_PrestamoBean->setSaldoMora("0.00");
				}else{
				    //$o_PrestamoBean->setSaldoMora("0.00");
					$o_PrestamoBean->setSaldoMora($NuevoSaldoMora);
				}
				$o_PrestamoBL = new PrestamoBL();
				$o_PrestamoBL->modificarPrestamo($o_PrestamoBean);
					
				
					$o_PagoBean = new PagoBean();
					$o_PagoBean->setIdPrestamo($idPrestamo);
					$o_PagoBean->setMontoPago($MontoMora);
					$o_PagoBean->setFechaPago($fecha);
					$o_PagoBean->setTipopago(2);
					$o_PagoBean->setUsuarioCreacion(myUser::getUser()->getUserId());
					$o_PagoBean->setIdColaborador(myUser::getUser()->getIdColaborador());
					$o_PagoBean->setFechaCreacion(date('Y-m-d H:i:s'));
					$o_PagoBL = new PagoBL();
					
					$o_PagoBL->insertarPago($o_PagoBean);
				
				
			}
			if($prestamoNoCancelara[$idPrestamo]){
				
				$o_PrestamoBeanTemp = new PrestamoBean();
				$o_PrestamoBeanTemp->setIdPrestamo($idPrestamo);
				//$o_PrestamoBLTemp = new PrestamoBL();
				$o_PrestamoDP = new PrestamoDP($o_PrestamoBeanTemp);
			    $a_o_Prestamo = $o_PrestamoDP->select();
				foreach ($a_o_Prestamo as $key =>$o_Prestamo){
					$SaldoAnterior = $o_Prestamo->getSaldoPrestamo();
				}
				
				/*if($SaldoAnterior == 0){
					
					$o_PrestamoBean = new PrestamoBean();
					$o_PrestamoBean->setIdPrestamo($idPrestamo);
					$o_PrestamoBean->setEstado("C");
					//$o_PrestamoBean->setFechaCancelacion(date('Y-m-d H:i:s'));
					$o_PrestamoBean->setFechaModificacion(date('Y-m-d H:i:s'));
					$o_PrestamoBean->setFechaCancelacion($fecha." ".date('H:i:s'));
					$o_PrestamoDP = new PrestamoDP($o_PrestamoBean);
					$o_PrestamoDP->update();
				}*/
			}
		}
	}
	
	
	exit(" <script language=\"JavaScript\">
      parent.objMainTab.reqBody('".buildUrl('ipa/list')."','&block=001&insert=1&idMercado=".$cboMercado."');
     </script>");
}

//COLOCAR CAMPOS DE LA CABECERA DEL LISTADO  

$o_MercadoBean = new MercadoBean();
$o_MercadoBean->setIdMercado($cboMercado);

$o_MercadoBL = new MercadoBL();
$a_o_mercado = $o_MercadoBL->busquedaMercado($o_MercadoBean);

foreach ($a_o_mercado as $key => $o_mercado){
	$Descripcion = $o_mercado->getDescripcion();
}

$o_ObjectBean->setIdMercado($cboMercado); 
$o_ObjectBean->setEstado("P");
//echo myUser::getUser()->getIdColaborador();
//$o_ObjectBean->setIdColaboradorPrestamo(myUser::getUser()->getIdColaborador());

 
$o_class = new PrestamoBL();
$a_ObjectBean = $o_class->busquedaPrestamo($o_ObjectBean);

?>
<script>
    function activarMora(object,idMora,iMora){
		if(object.checked){
			$(idMora).disabled = false;	
			$(iMora).disabled = false;	
		}else{
			$(idMora).disabled = true;
			$(iMora).disabled = true;
		}
	}
	function VerificarSaldo(object,Saldo){
		Pago = parseFloat(object.value);
		if(parseFloat(Saldo) < Pago){
			alert('Pago invalido');
			return false;
		}
	}
	
	function calcularMontoMora(objeto,id){
		//alert(objeto.value);
		if(objeto.value !='') interesMora = parseFloat(objeto.value);
		a_id = id.split("_");
		prestamo = a_id[1];
		
		SaldoMora = $('txtSaldoPrestamo_'+prestamo).value;
		
		MontoMora = $('txtMora_'+prestamo).value;
		
		MoraTotal = SaldoMora*(interesMora/100).toFixed(2);
		 $('txtMora_'+prestamo).value = MoraTotal;
	}
	
	function calcularInteresMora(objeto,id){
		//alert(objeto.value);
		if(objeto.value !='') MontoMora = parseFloat(objeto.value);
		a_id = id.split("_");
		prestamo = a_id[1];
		
		if(MontoMora >0 ){
			SaldoMora = $('txtSaldoPrestamo_'+prestamo).value;
			
			InteresMora = $('txtIMora_'+prestamo).value;
			
			InteresMora =  ((MontoMora/SaldoMora)*100).toFixed(2);
			 $('txtIMora_'+prestamo).value = InteresMora;
		}
	}
</script>


<form id="form1" name="form1" method="POST"  >
 <input type="hidden" name="control" value="1">
 <input type="hidden" name="cboMercado" value="<?=$cboMercado?>">
 <input type="hidden" name="Descripcion" value="<?=$Descripcion?>">
  <input type="hidden" name="IdcolaboradorTrx" value="<?=myUser::getUser()->getIdColaborador()?>">
    <table>
    	<tr>
    		<td><label class="label req">Mercado</label></td>
    		<td><label class="label">&nbsp;:&nbsp;<?=$Descripcion?></label></td>
    	</tr>
    </table>  
	<table class="marco" border="0" cellpadding="0" cellspacing="0" width="100%" >
        <tr>
          <td colspan="2">
            <table class="grid" width="100%" border="1" cellpadding="0" cellspacing="0" style="font-size:16px">
              <tr height="23">
                <th width="4%" >No.</th>
			    <th width="20%" align="left">Cliente&nbsp;&nbsp;&nbsp;</th>
			    <!--<th width="4%" >F.Inicio</th>
				<th width="4%" >F.Vencim.</th>-->
				<th width="5%" >Capital &nbsp;&nbsp;&nbsp;</th>
               <!-- <th width="3%" >(%) &nbsp;&nbsp;&nbsp;</th>-->
                <th width="6%" >M. Total(S/.)</th>
               <!-- <th width="6%" >Cuota(S/.)</th>-->
                <th width="4%" >Saldo &nbsp;&nbsp;&nbsp;</th>
                
                
                
              
                <th width="5%" >Ing. Pago &nbsp;&nbsp;&nbsp;</th>
                <th width="4%" >Fecha Vencimiento &nbsp;&nbsp;&nbsp;</th>
                <th width="10%" >Mora</th>
                <th width="10%" >Interes(% del Saldo)</th>
                <th width="5%" >Total</th>
                
               </tr>
              <? 
              $contador_prestamo_pagado = 0;
              if(count($a_ObjectBean)>0){ ?>
	              <?php 
	              $i=0;
	              foreach ($a_ObjectBean as $iKey => $o_objBean){ 
	              	$i++;
	              	//Obtener la suma de los pagos realizados en el dia
	              	$suma_pago = 0;
	              	$o_Pago = new PagoBean();
	              	$o_Pago->setIdPrestamo($o_objBean->getIdPrestamo());
	              	$o_Pago->setEstado('P');
	              	$o_Pago->setFechaPago($fecha);
	              	$o_PagoBL = new PagoBL();
	              	$a_o_pagos = $o_PagoBL->busquedaPago($o_Pago);
	              	if(is_array($a_o_pagos)){
	              		foreach ($a_o_pagos as $key => $o_pago){
	              			$suma_pago += $o_pago->getMontoPago();
	              		}
	              	}
	              	if($suma_pago > 0){
	              		$contador_prestamo_pagado++; 
	              	}
	              	
	              	?>
	              <tr onClick="TR_click(this);" <?php if($suma_pago >0 ) echo "style='background:#99FFCC'"?> <?php if($o_objBean->getSaldoPrestamo() == 0 ) echo "style='color:#FF0000'"?>>
	                <td align="center"><?=$o_objBean->getIdPrestamo()?></td>
	                <td align="left"><?=mb_strtoupper($o_objBean->getObjectCliente()->getNombreCompleto())?></td>
	                <!--<td><?=$o_objBean->getFechaInicio()?></td>
	                <td><?=$o_objBean->getFechaVencimiento()?></td>  -->
					<td align="center"><?=$o_objBean->getMontoPrestado()?></td>
					<!--<td align="center"><?=$o_objBean->getInteresPorcentaje()?></td>-->
					<td align="center"><?=number_format($o_objBean->getMontoTotal(),2)?></td>
					<!--<td align="center"><?=$o_objBean->getCuotaPago()?></td>-->
					<td align="center"><?=$o_objBean->getSaldoPrestamo()?></td>
					
					<!-- <td nowrap="center"><input class="text" type="text" style="text-align:right;" name="txtMontoPago[<?=$o_objBean->getIdPrestamo()?>]" id="txtMontoPago[]" size="5" maxlength="5" align="right" onkeyup="return VerificarSaldo(this,'<?=$o_objBean->getSaldoPrestamo()?>');" <?php  echo "value='0.00'";?> style="font-size:16px"/></td> -->				
					<td nowrap="center"><input class="textp" type="text"  tabindex="<?php echo $i?>" style="text-align:right;" name="txtMontoPago[<?=$o_objBean->getIdPrestamo()?>]" id="txtMontoPago_<?=$iKey?>" size="5" maxlength="9" align="right" onkeyup="return VerificarSaldo(this,'<?=$o_objBean->getSaldoPrestamo()?>');" <?php  echo "value='0.00'";?> style="font-size:16px" onkeypress="return acceptNum(event)"/></td>				

					<td><label class="label"><?php 
					if($o_objBean->getFechaVencimiento() < $fecha){
						echo $o_objBean->getFechaVencimiento();
					}
				
					
					?></label>
					</td>
					<td align="right">
						
					<?php 
						
						//if($o_objBean->getFechaVencimiento() < $fecha){
//						print_r($o_objBean)?>
						
								
						<table border="0">
							<tr width="100%">
								<td  width="60%"><?php  if($o_objBean->getFechaVencimiento() < $fecha){?><input type="checkbox" name="habilitar" id="ctxtMora_<?=$iKey?>" onclick="activarMora(this,'txtMora_<?=$iKey?>','txtIMora_<?=$iKey?>')">&nbsp;<input disabled class="text textMora" type="text" tabindex="<?php echo count($a_ObjectBean) + $i?>"  style="text-align:right;" name="txtMora[<?=$o_objBean->getIdPrestamo()?>]" id="txtMora_<?=$iKey?>" size="5" maxlength="5" align="right" onkeyup="calcularInteresMora(this,this.id);" <?php  echo "value='0.00'";?> style="font-size:16px;color=#fff" onkeypress="return acceptNum(event);" /><?php }?>
								</td>
								<td   width="50%" align="right"><label class="label" style="color:#990000"><?php echo $o_objBean->getSaldoMora();?></label></td>
							</tr>
						</table>
						<?php //}?>	
					</td>
					<td align="center">
						<input type="text" disabled class="text" name="txtIMora[<?=$o_objBean->getIdPrestamo()?>]" id="txtIMora_<?=$iKey?>" value="<?php echo $o_objBean->getInteresMora();?>" size="4" maxlength="6" style="text-align:right" onkeyup="calcularMontoMora(this,this.id);" onkeypress="return acceptNum(event);">%
					</td>
									
					<td align="right"><div  style="margin-right:10px"><?php $totalsuma_pago += $su>ma_pago;if($suma_pago > 0) echo number_format($suma_pago,2);else echo "";?></div></td>
					
					<!--<input type="hidden" class="texthp" value="<?=$o_objBean->getSaldoPrestamo()?>" id="txtSaldoPrestamo_<?=$iKey?>">-->
					<input type="hidden" class="texthp" value="<?=$o_objBean->getMontoTotal()?>" id="txtSaldoPrestamo_<?=$iKey?>">
	              </tr>
	              <? } ?>
              <? }else{ ?>
              <tr>
                <td colspan="7" align="center">No se produjo resultado</td>
              </tr>
              <? } ?>
            </table>
          </td>
        </tr>
        <tr>
          <td>Total Registros: <?=count($a_ObjectBean)?></td>
          <td>Madici&oacute;n de Eficiencia de Pago : <b><?php if(count($a_ObjectBean)) echo round(($contador_prestamo_pagado/count($a_ObjectBean))*100,2)."%<br>"."Total Pago:".number_format($totalsuma_pago,2)?></b></td>
          
        </tr>
        <tr>
            <td><label style="color:#ff0000">*Debe coordinar con Administracion General, debe cobrarse la mora de los prestamos en ROJO.</label></td>
        </tr>
      </table>
      <table width="100%">
      	<tr>
      		<td align="right">
      		<input class="button" type="button" value="Cancelar" onclick="parent.objMainTab.reqBody('<?=buildUrl('ipa/list')?>','001')" />	
      		 <? if(count($a_ObjectBean)>0){ ?>
      			<input class="button" type="submit" name="btnGrabar"  id="btnGrabar" value="Grabar Pagos"><br><br>   		
      		<?php }?>	
      		</td>
        </tr>
      </table>	
      
</form>
<script type="text/javascript">
	function formCallback(result, form) {
		window.status = "valiation callback for form '" + form.id + "': result = " + result;
		
		var fp = $$('.textp');
	    var fhp = $$('.texthp');
		
		var fm = $$('.textMora');
	    var fhm = $$('.textMorah');
	    	    
		for(var i=0; i<fm.length; i++){
			var valor = parseFloat(fm[i].value);
			//alert(fm[i].id);
			a_id = fm[i].id.split("_");
			prestamo = a_id[1];
			var valorSaldo = parseFloat(fhm[i].value);
			
			txtMontoPago = $('txtMontoPago_'+prestamo).value;
			txtMora = $('txtMora_'+prestamo).value;
			
			if(txtMora == '') MontoMora = "0";
			else  MontoMora = txtMora;
			
			if(txtMontoPago == '') MontoPago = "0";
			else  MontoPago = txtMontoPago;
			valorpago = parseFloat(MontoPago).toFixed(2);
			valorpagocancela = parseFloat($('txtSaldoPrestamo_'+prestamo).value).toFixed(2);
			//alert(valorpago);
			//alert(valorpagocancela);
			if(MontoMora > 0 && valorpago >= 0){
				/*if(valorpago < valorpagocancela){
					alert('No se puede ingresar Mora de '+valor+' Debe ingresar el pago total de saldo de ese prestamo');
					return false;
				}*/
				/*if(valor > 0){
					if(valor > valorSaldo){
						alert('Un pago de la mora no es valido para el saldo de Mora '+valorSaldo+' y pago '+valor);
						return false;
					}
				}*/
			}
			
		}
		
		
		var f = $$('.textp');
	    var fh = $$('.texthp');
	    	    
		for(var i=0; i<f.length; i++){
			var valor = parseFloat(f[i].value);
			var valorSaldo = parseFloat(fh[i].value);
			
			
			if(valor > valorSaldo){
				alert('Un pago no es valido para el saldo '+valorSaldo+' y pago '+valor);
				f[i].focus();
				return false;
			}
			
			
		}
		
		
		
		
		
		document.getElementById("btnGrabar").value = "Enviando...";
 
		document.getElementById("btnGrabar").disabled = true;;
		return true;
	}
	var valid = new Validation('form1', {immediate : true, onFormValidate : formCallback});
	
	
</script>
