<?php
/**
 * Clase PrestamoBL
 *
 * @package    
 * @subpackage 
 * @author     PrestamoBL
 * @version    SVN: $Id: PrestamoBL.class.php,v 1.1 2008/02/08 21:56:44 william.taype Exp $ 
 */
class PrestamoBL{
    
  /**
  * 
  *
  * @param $o_PrestamoBean, objeto de  Prestamo 
  * @return Boolean
  */
  public function busquedaPrestamo(PrestamoBean $o_PrestamoBean){
    
    $o_PrestamoDP = new PrestamoDP($o_PrestamoBean);
    if($o_PrestamoBean->getIdPrestamo()){
      //$a_Prestamo = $o_PrestamoDP->selectByPk();
	  $a_Prestamo = $o_PrestamoDP->selectByPk_eliminado();
    }else{
      $a_Prestamo = $o_PrestamoDP->select();
    }
    
    if(is_array($a_Prestamo)){
    	foreach ($a_Prestamo as $key => $o_Prestamo){
		    //Administrador en el Gri unido la Tabla Sucursal con Colaborador 
		    $o_ClienteBean = new ClienteBean();
		    $o_ClienteBean->setIdCliente($o_Prestamo->getIdCliente());
		    $o_ClienteBL = new ClienteBL();
			$a_Cliente = $o_ClienteBL->busquedaCliente($o_ClienteBean);
		    $o_Prestamo->setObjectCliente($a_Cliente[0]);
		    $a_temp[] = $o_Prestamo;
    	}
    }elseif (is_object($a_Prestamo)){
    	 //Administrador en el Gri unido la Tabla Sucursal con Colaborador 
	    $o_ClienteBean = new ClienteBean();
	    $o_ClienteBean->setIdCliente($a_Prestamo->getIdCliente());
	    $o_ClienteBL = new ClienteBL();
		$a_Cliente = $o_ClienteBL->busquedaCliente($o_ClienteBean);
	    $a_Prestamo->setObjectCliente($a_Cliente[0]);
	    $a_temp[] = $a_Prestamo;
    }
    return $a_temp;
  }
  
    
  
  
  
  public function insertarPrestamo(PrestamoBean $o_PrestamoBean){
    
    $o_PrestamoCT = new PrestamoCT();
    return $o_PrestamoCT->guardar($o_PrestamoBean);
    
  }
  	public function modificarPrestamo(PrestamoBean $o_PrestamoBean){
	  
    $o_PrestamoCT = new PrestamoCT();
    return $o_PrestamoCT->modificar($o_PrestamoBean);
	
	}
	
	
  /**
	* Funci�n que retorna un objeto Prestamo o una lista de Objetos de Prestamo,
	* dependiendo del parametro que se le envia si este contiene o no el Id de Prestamo
	*
	* @param $o_PrestamoBean, es un objeto de  Prestamo
	* @return Object
	*/
	public function modificarEstadoPrestamo(PrestamoBean $o_PrestamoBean){
	  
	
	}
	
	/*public function busquedaPrestamoDetalles(PrestamoBean $o_PrestamoBean){
        
    $o_Prestamo = $this->busquedaPrestamo($o_PrestamoBean);
    
   $o_SucursalMercadoBean = new SucursalMercadoBean();
    $o_SucursalMercadoBean->setIdSucursal($o_Sucursal[0]->getIdSucursal());
    
   $o_SucursalMercadoBL = new SucursalMercadoBL();
   $a_tmpSucursalMercado = $o_SucursalMercadoBL->busquedaSucursalMercadoDetalle($o_SucursalMercadoBean);
    
    
		    
   $o_Sucursal[0]->setArraySucMercado($a_tmpSucursalMercado);
    
    return $o_Prestamo[0];
  
  }*/
	public function getPrestamo(PrestamoBean $o_PrestamoBean){
    
    $o_PrestamoCT = new PrestamoCT();
    return $o_PrestamoCT->seleccionar($o_PrestamoBean);
    
  }
  
  public function eliminarPrestamo(PrestamoBean $o_PrestamoBean){
     $o_PrestamoCT = new PrestamoCT();
    return $o_PrestamoCT->eliminar($o_PrestamoBean);
  }
  public function getCountResult(PrestamoBean $o_PrestamoBean){
    $o_PrestamoCT = new PrestamoCT();
    return $o_PrestamoCT->totalRegistros($o_PrestamoBean);
  }
  public function getTotalMonto(PrestamoBean $o_PrestamoBean){
    $o_PrestamoCT = new PrestamoCT();
    return $o_PrestamoCT->totalMonto($o_PrestamoBean);
  }
  
  
  //	$o_PrestamoBean = new PrestamoBean();
   // $o_PrestamoBean->setIdPedidoReferencia($IdPedidoReferencia)
   
   
  
  public function generarPrestamoToPedido(PrestamoBean $o_PrestamoBean){
  	//siempre y cuando el pedido este A
	 // la fecha de operacion
	$o_PrestamoBeanT = new PrestamoBean();
	$o_PrestamoBeanT->setIdPedidoReferencia($o_PrestamoBean->getIdPedidoReferencia());
	$o_PrestamoBeanT->setEstado('P');
	$o_PrestamoDPT = new PrestamoDP($o_PrestamoBeanT);
	$a_o_PrestamoDPT = $o_PrestamoDPT->select();
	
	if(is_array($a_o_PrestamoDPT)) return false;
    
	if($o_PrestamoBean->getIdPedidoReferencia()){
		$idPedidoDetalle = $o_PrestamoBean->getIdPedidoReferencia();
		
		$o_CrPedidodetalleFN = new CrPedidodetalleFN();
		$o_CrPedidodetalleFN->setIdpedidodetalle($idPedidoDetalle);
		$o_CrPedidodetalleFN->setEstado('A');
		$a_pedidodetalle = $o_CrPedidodetalleFN->select();
		
	    //Si el pedido esta aprobado
		if(is_array($a_pedidodetalle)){
		    /*
		    $o_pedidodetalleBN = $a_pedidodetalle[0];
		    $i_Idpedidocabecera = $o_pedidodetalleBN->getIdpedidocabecera();
		    
		    $o_CrPedidocabeceraFN = new CrPedidocabeceraFN();
		    $o_CrPedidocabeceraFN->setIdpedidocabecera( $i_Idpedidocabecera );
		    $o_CrPedidocabeceraBN = $o_CrPedidocabeceraFN->selectByPK();
		    */
			//Descargo los datos del pedido
			foreach ($a_pedidodetalle as $key => $o_pedidodetalle)
			{
			    $s_tipo = $o_pedidodetalle->getTipocodigo();
                switch ( $s_tipo )
                {
                    case '1':
                        $s_IdCliente = $o_pedidodetalle->getIdcliente();
                    break;
                    case '2':
                        $s_codigo = $o_pedidodetalle->getCodigocliente();
                        $o_PrestamoBean = new PrestamoBean();
                        $o_PrestamoBean->setIdPrestamo($s_codigo);
                        
                        $o_PrestamoBL = new PrestamoBL();
                        $o_PrestamoBN = $o_PrestamoBL->busquedaPrestamo($o_PrestamoBean);
                        if(is_array($o_PrestamoBN))
                        {
                            $o_PrestamoBN = $o_PrestamoBN[0];
                            $s_IdCliente = $o_PrestamoBN->getIdCliente();
                        }
                    break;
                }
                                        
				$montoTotal = $o_pedidodetalle->getMontototal();
				$fecha = $o_pedidodetalle->getFechainicio();
				$o_PrestamoBean->setMontoPrestado($o_pedidodetalle->getMontoprestado());
				$o_PrestamoBean->setMontoTotal($o_pedidodetalle->getMontototal());
				$o_PrestamoBean->setFechaInicio($fecha);
				$o_PrestamoBean->setSaldoPrestamo($o_pedidodetalle->getMontototal());
				$o_PrestamoBean->setDuracion($o_pedidodetalle->getDuracion());
				$o_PrestamoBean->setInteresmonto($o_pedidodetalle->getInteresMonto());
				$o_PrestamoBean->setInteresPorcentaje($o_pedidodetalle->getInteresMonto());
				$o_PrestamoBean->setInteresPorcentaje($o_pedidodetalle->getInteresporcentaje());
				$o_PrestamoBean->setGastoAdministrativo($o_pedidodetalle->getGastoAdministrativo());
				$o_PrestamoBean->setPeriodicidadpago($o_pedidodetalle->getPeriodicidadpago());
				$o_PrestamoBean->setIdcolaborador($o_pedidodetalle->getIdcolaborador());
				$o_PrestamoBean->setIdPedidoReferencia($idPedidoDetalle);
				$o_PrestamoBean->setEstado('P');
				$o_PrestamoBean->setOrigen("R");
				$o_PrestamoBean->setFechaCreacion(date("Y-m-d H:i:s"));
				$o_PrestamoBean->setIdColaborador(myUser::getUser()->getIdColaborador());
				$o_PrestamoBean->setUsuarioCreacion(myUser::getUser()->getUserId());
				$o_PrestamoBean->setFlagReporte("2");
				$o_PrestamoBean->setIdCliente( $s_IdCliente );
           		
				switch ($o_pedidodetalle->getPeriodicidadpago()){
					case "D" : 
							switch ($o_pedidodetalle->getDuracion()){
								/**********************/
								case 7 :  $MontoCuota = round($montoTotal/5,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +7 days'));
										  $NroCuotas=5; break;
								/*********************/
								case 15 : $MontoCuota = round($montoTotal/13,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +15 days'));
										  $NroCuotas=13; break;
								case 30 : $MontoCuota = round($montoTotal/26,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +30 days'));
										  $NroCuotas=26; break;
								case 45 : $MontoCuota = round($montoTotal/39,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +45 days'));
										  $NroCuotas=39; break;
								case 60 : $MontoCuota = round($montoTotal/52,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +60 days'));
										  $NroCuotas=52; break;
								case 75 : $MontoCuota = round($montoTotal/65,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +75 days'));
										  $NroCuotas=65; break;
								case 90 : $MontoCuota = round($montoTotal/88,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +90 days'));
										  $NroCuotas=88; break;
							}
							break;
					case "S":
							switch ($o_pedidodetalle->getDuracion()){
								/**********************/
								case 7 :  $MontoCuota = round($montoTotal/1,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +7 days'));
										  $NroCuotas=1; break;
								/*********************/
								case 15 : $MontoCuota = round($montoTotal/2,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +15 days'));
										  $NroCuotas=2; break;
								case 30 : $MontoCuota = round($montoTotal/4,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +30 days'));
										  $NroCuotas=4; break;
								case 45 : $MontoCuota = round($montoTotal/6,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +45 days'));
										  $NroCuotas=6; break;
								case 60 : $MontoCuota = round($montoTotal/8,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +60 days'));
										  $NroCuotas=8; break;
								case 75 : $MontoCuota = round($montoTotal/10,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +75 days'));
										  $NroCuotas=10; break;
								case 90 : $MontoCuota = round($montoTotal/12,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +90 days'));
										  $NroCuotas=12; break;
							}
							break;
					case "Q":
							switch ($o_pedidodetalle->getDuracion()){	
								case 15 : $MontoCuota = round($montoTotal/1,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +15 days'));
										  $NroCuotas=1; break;
								case 30 : $MontoCuota = round($montoTotal/2,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +30 days'));
										  $NroCuotas=2; break;
								case 45 : $MontoCuota = round($montoTotal/3,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +45 days'));
										  $NroCuotas=3; break;
								case 60 : $MontoCuota = round($montoTotal/4,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +60 days'));
										  $NroCuotas=4; break;
								case 75 : $MontoCuota = round($montoTotal/5,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +75 days'));
										  $NroCuotas=5; break;
								case 90 : $MontoCuota = round($montoTotal/6,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +90 days'));
										  $NroCuotas=6; break;
							}
							break;
					case "M":
							switch ($o_pedidodetalle->getDuracion()){	
								
								case 30 : $MontoCuota = round($montoTotal/1,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +30 days'));
										  $NroCuotas=1; break;
								case 60 : $MontoCuota = round($montoTotal/2,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +60 days'));
										  $NroCuotas=2; break;
								case 90 : $MontoCuota = round($montoTotal/3,2);
										  $fechaVencimiento = date('Y-m-d',strtotime($fecha.' +90 days'));
										  $NroCuotas=3; break;
							}
							break;
						
				}
				
				
				$o_PrestamoBean->setCuotaPago($MontoCuota);
				$o_PrestamoBean->setFechaVencimiento($fechaVencimiento);
				$o_PrestamoBean->setNroCuotas($NroCuotas);
				$o_PrestamoBean->setObservacion($txtObservacion);
				
				//Crear el prestamo
				$idPrestamo = $this->insertarPrestamo($o_PrestamoBean);
			
				
				//Actualizar el pedidodetalle
								
				$o_pedidodetalleDP = new CrPedidodetalleDP();
				$o_pedidodetalleDP->setIdpedidodetalle($idPedidoDetalle);
				$o_pedidodetalleDP->setEntregado($idPrestamo);
				$o_pedidodetalleDP->setFechaentregado(date("Y-m-d H:i:s"));
				$o_pedidodetalleDP->setUsuarioentregado(myUser::getUser()->getUserId());
				$o_pedidodetalleDP->setCuotapago($MontoCuota);
				$o_pedidodetalleDP->setNrocuotas($NroCuotas);
				$o_pedidodetalleDP->update();
				
            
			}
                        return true;
		}
	}
        return false;
  }
  
}?>