<?php

/**
* Clase Dispacher para Cliente
*
* @package IM
* @subpackage ClienteDP
* @author Willy
* @version SVN: : ClienteDP.class.php,v 1.1 2009/05/24 17:57:02 Exp $
*/
class ClienteDP implements interfaceDP {

  protected $o_Bean;

  /**
  * Constructor donde asigna a un atributo el objeto ClienteBean
  *
  * @param ClienteBean $o_ClienteBean
  */
  public function __construct(ClienteBean $o_ClienteBean){
  
    $this->o_Bean = $o_ClienteBean;
    
  }
  
  /**
  * Retorna el objeto ClienteBean
  *
  * @return Object
  */
  protected function getObjetoBean(){
  
    if(!$this->o_Bean){
        $this->o_Bean = new ClienteBean();
    }        
    return $this->o_Bean;
    
  }
  
  /**
  * Ingresa un nuevo registro
  *
  * @return IdGenerado
  */
  public function save(){
    $con = Conexion::getConexion();
      $a_Fields = array();
      
      //if($this->getObjetoBean()->getIdCliente()) : $a_Fields['IdCliente'] = ($this->getObjetoBean()->getIdCliente()); endif;
	  
	  if($this->getObjetoBean()->getFlagInfocorp()) : $a_Fields['flaginfocorp'] = ($this->getObjetoBean()->getFlagInfocorp()); endif;
      if($this->getObjetoBean()->getScoreInfocorp()) : $a_Fields['scoreinfocorp'] = ($this->getObjetoBean()->getScoreInfocorp()); endif;
      if($this->getObjetoBean()->getClasificacionInfocorp()) : $a_Fields['clasificacioninfocorp'] = ($this->getObjetoBean()->getClasificacionInfocorp()); endif;
      if($this->getObjetoBean()->getFecActualizacionInfocorp()) : $a_Fields['fecactualizacioninfocorp'] = ($this->getObjetoBean()->getFecActualizacionInfocorp()); endif;
      if($this->getObjetoBean()->getUsrActualizacionInfocorp()) : $a_Fields['usractualizacioninfocorp'] = ($this->getObjetoBean()->getUsrActualizacionInfocorp()); endif;
      
      if($this->getObjetoBean()->getIdMercado()) : $a_Fields['IdMercado'] = ($this->getObjetoBean()->getIdMercado()); endif;
      if($this->getObjetoBean()->getIdTipoNegocio()) : $a_Fields['IdTipoNegocio'] = ($this->getObjetoBean()->getIdTipoNegocio()); endif;
      if($this->getObjetoBean()->getNombres()) : $a_Fields['Nombres'] = ($this->getObjetoBean()->getNombres()); endif;
      if($this->getObjetoBean()->getApellidoPaterno()) : $a_Fields['ApellidoPaterno'] = ($this->getObjetoBean()->getApellidoPaterno()); endif;
      if($this->getObjetoBean()->getApellidoMaterno()) : $a_Fields['ApellidoMaterno'] = ($this->getObjetoBean()->getApellidoMaterno()); endif;
      if($this->getObjetoBean()->getNombreCompleto()) : $a_Fields['NombreCompleto'] = ($this->getObjetoBean()->getNombreCompleto()); endif;
      if($this->getObjetoBean()->getEstado()) : $a_Fields['Estado'] = ($this->getObjetoBean()->getEstado()); endif;
      if($this->getObjetoBean()->getDireccion()) : $a_Fields['Direccion'] = ($this->getObjetoBean()->getDireccion()); endif;
      if($this->getObjetoBean()->getDireccionNegocio()) : $a_Fields['direccion_negocio'] = addslashes($this->getObjetoBean()->getDireccionNegocio()); endif;
      if($this->getObjetoBean()->getUsuarioCreacion()) : $a_Fields['UsuarioCreacion'] = ($this->getObjetoBean()->getUsuarioCreacion()); endif;
      if($this->getObjetoBean()->getFechaCreacion()) : $a_Fields['FechaCreacion'] = ($this->getObjetoBean()->getFechaCreacion()); endif;
      if($this->getObjetoBean()->getUsuarioModificacion()) : $a_Fields['UsuarioModificacion'] = ($this->getObjetoBean()->getUsuarioModificacion()); endif;
      if($this->getObjetoBean()->getFechaModificacion()) : $a_Fields['FechaModificacion'] = ($this->getObjetoBean()->getFechaModificacion()); endif;
      if($this->getObjetoBean()->getEliminado()) : $a_Fields['Eliminado'] = ($this->getObjetoBean()->getEliminado()); endif;
      if($this->getObjetoBean()->getFechaEliminado()) : $a_Fields['FechaEliminado'] = ($this->getObjetoBean()->getFechaEliminado()); endif;
      if($this->getObjetoBean()->getTipoDocumento()) : $a_Fields['TipoDocumento'] = ($this->getObjetoBean()->getTipoDocumento()); endif;
      if($this->getObjetoBean()->getDni()) : $a_Fields['Dni'] = ($this->getObjetoBean()->getDni()); endif;
      if($this->getObjetoBean()->getSexo()) : $a_Fields['Sexo'] = ($this->getObjetoBean()->getSexo()); endif;
      if($this->getObjetoBean()->getEstadoCivil()) : $a_Fields['EstadoCivil'] = ($this->getObjetoBean()->getEstadoCivil()); endif;
      if($this->getObjetoBean()->getFechaNacimiento()) : $a_Fields['FechaNacimiento'] = ($this->getObjetoBean()->getFechaNacimiento()); endif;
      if($this->getObjetoBean()->getTelefono()) : $a_Fields['Telefono'] = ($this->getObjetoBean()->getTelefono()); endif;
      if($this->getObjetoBean()->getCelular()) : $a_Fields['Celular'] = ($this->getObjetoBean()->getCelular()); endif;
      if($this->getObjetoBean()->getUsuarioEliminado()) : $a_Fields['UsuarioEliminado'] = ($this->getObjetoBean()->getUsuarioEliminado()); endif;
      
      if($this->getObjetoBean()->getFechaCaducidadDoc()) : $a_Fields['FechaCaducidadDoc'] = ($this->getObjetoBean()->getFechaCaducidadDoc()); endif;
      if($this->getObjetoBean()->getDireccionViviendaReal()) : $a_Fields['DireccionViviendaReal'] = addslashes($this->getObjetoBean()->getDireccionViviendaReal()); endif;
      if($this->getObjetoBean()->getReferenciaViviendaReal()) : $a_Fields['ReferenciaViviendaReal'] = addslashes($this->getObjetoBean()->getReferenciaViviendaReal()); endif;
      if($this->getObjetoBean()->getFechaCaducidadDoc()) : $a_Fields['FechaCaducidadDoc'] = ($this->getObjetoBean()->getFechaCaducidadDoc()); endif;
      if($this->getObjetoBean()->getJsonReniec()) : $a_Fields['JsonReniec'] = ($this->getObjetoBean()->getJsonReniec()); endif;
      if($this->getObjetoBean()->getFechaCaducidadDoc()) : $a_Fields['FechaCaducidadDoc'] = ($this->getObjetoBean()->getFechaCaducidadDoc()); endif;
      if($this->getObjetoBean()->getFechaConversion()) : $a_Fields['FechaConversion'] = ($this->getObjetoBean()->getFechaConversion()); endif;
      
      
      if($this->getObjetoBean()->getLongitudDomicilio()) : $a_Fields['LongitudDomicilio'] = ($this->getObjetoBean()->getLongitudDomicilio()); endif;
      if($this->getObjetoBean()->getLatitudDomicilio()) : $a_Fields['LatitudDomicilio'] = ($this->getObjetoBean()->getLatitudDomicilio()); endif;
      if($this->getObjetoBean()->getLongitudNegocio()) : $a_Fields['LongitudNegocio'] = ($this->getObjetoBean()->getLongitudNegocio()); endif;
      if($this->getObjetoBean()->getLatitudNegocio()) : $a_Fields['LatitudNegocio'] = ($this->getObjetoBean()->getLatitudNegocio()); endif;
      if($this->getObjetoBean()->getOtroTipoNegocio()) : $a_Fields['OtroTipoNegocio'] = ($this->getObjetoBean()->getOtroTipoNegocio()); endif;
      if($this->getObjetoBean()->getCorreo()) : $a_Fields['Correo'] = ($this->getObjetoBean()->getCorreo()); endif;
      if($this->getObjetoBean()->getDireccionNegocio()) : $a_Fields['direccion_negocio'] = ($this->getObjetoBean()->getDireccionNegocio()); endif;
      if($this->getObjetoBean()->getReferenciaNegocio()) : $a_Fields['ReferenciaNegocio'] = ($this->getObjetoBean()->getReferenciaNegocio()); endif;
      if($this->getObjetoBean()->getGastoAdministrativoPorcentaje()) : $a_Fields['GastoAdministrativoPorcentaje'] = ($this->getObjetoBean()->getGastoAdministrativoPorcentaje()); endif;
      if($this->getObjetoBean()->getInteresPorcentaje()) : $a_Fields['InteresPorcentaje'] = ($this->getObjetoBean()->getInteresPorcentaje()); endif;
       
      
      $sStringField = arrayClass::implode_keys(',', $a_Fields);
      $sStringValue = "'".implode("','", $a_Fields)."'";

      $sql = "INSERT INTO cr_cliente (".$sStringField.")
                      VALUES (".$sStringValue.");";
      //echo $sql;
      $iResultSave = mysql_db_query(Conexion::getNameDb(), $sql, $con);
      $iResul = mysql_insert_id($con);
      //mysql_close($con);
      if($iResul > 0){
        return $iResul;
      }else{
        return false;
      }
  
  }
  
  /**
  * Modifica un nuevo registro
  *
  * @return IdGenerado
  */
  public function update() {

    if($this->getObjetoBean()->getIdCliente()){
      $con = Conexion::getConexion();
      $a_Fields = array();
      
	  if($this->getObjetoBean()->getColorInfocorp()) : $a_Fields['colorinfocorp'] = ($this->getObjetoBean()->getColorInfocorp()); endif;
      if($this->getObjetoBean()->getFlagInfocorp()) : $a_Fields['flaginfocorp'] = ($this->getObjetoBean()->getFlagInfocorp()); endif;
      if($this->getObjetoBean()->getScoreInfocorp()) : $a_Fields['scoreinfocorp'] = ($this->getObjetoBean()->getScoreInfocorp()); endif;
      if($this->getObjetoBean()->getClasificacionInfocorp()) : $a_Fields['clasificacioninfocorp'] = ($this->getObjetoBean()->getClasificacionInfocorp()); endif;
      if($this->getObjetoBean()->getFecActualizacionInfocorp()) : $a_Fields['fecactualizacioninfocorp'] = ($this->getObjetoBean()->getFecActualizacionInfocorp()); endif;
      if($this->getObjetoBean()->getUsrActualizacionInfocorp()) : $a_Fields['usractualizacioninfocorp'] = ($this->getObjetoBean()->getUsrActualizacionInfocorp()); endif;
      
	  
      if($this->getObjetoBean()->getIdCliente()) : $a_Fields['IdCliente'] = ($this->getObjetoBean()->getIdCliente()); endif;
      if($this->getObjetoBean()->getIdMercado()) : $a_Fields['IdMercado'] = ($this->getObjetoBean()->getIdMercado()); endif;
      if($this->getObjetoBean()->getIdTipoNegocio()) : $a_Fields['IdTipoNegocio'] = ($this->getObjetoBean()->getIdTipoNegocio()); endif;
      if($this->getObjetoBean()->getNombres()) : $a_Fields['Nombres'] = ($this->getObjetoBean()->getNombres()); endif;
      if($this->getObjetoBean()->getApellidoPaterno()) : $a_Fields['ApellidoPaterno'] = ($this->getObjetoBean()->getApellidoPaterno()); endif;
      if($this->getObjetoBean()->getApellidoMaterno()) : $a_Fields['ApellidoMaterno'] = ($this->getObjetoBean()->getApellidoMaterno()); endif;
      if(trim($this->getObjetoBean()->getNombreCompleto()) != ",") : $a_Fields['NombreCompleto'] = ($this->getObjetoBean()->getNombreCompleto()); endif;
      if($this->getObjetoBean()->getEstado()) : $a_Fields['Estado'] = ($this->getObjetoBean()->getEstado()); endif;
      if($this->getObjetoBean()->getDireccion()) : $a_Fields['Direccion'] = ($this->getObjetoBean()->getDireccion()); endif;
      if($this->getObjetoBean()->getDireccionNegocio()) : $a_Fields['direccion_negocio'] = addslashes($this->getObjetoBean()->getDireccionNegocio()); endif;
      if($this->getObjetoBean()->getUsuarioCreacion()) : $a_Fields['UsuarioCreacion'] = ($this->getObjetoBean()->getUsuarioCreacion()); endif;
      if($this->getObjetoBean()->getFechaCreacion()) : $a_Fields['FechaCreacion'] = ($this->getObjetoBean()->getFechaCreacion()); endif;
      if($this->getObjetoBean()->getUsuarioModificacion()) : $a_Fields['UsuarioModificacion'] = ($this->getObjetoBean()->getUsuarioModificacion()); endif;
      if($this->getObjetoBean()->getFechaModificacion()) : $a_Fields['FechaModificacion'] = ($this->getObjetoBean()->getFechaModificacion()); endif;
      if($this->getObjetoBean()->getEliminado()) : $a_Fields['Eliminado'] = ($this->getObjetoBean()->getEliminado()); endif;
      if($this->getObjetoBean()->getFechaEliminado()) : $a_Fields['FechaEliminado'] = ($this->getObjetoBean()->getFechaEliminado()); endif;
      if($this->getObjetoBean()->getDni()) : $a_Fields['Dni'] = ($this->getObjetoBean()->getDni()); endif;
      if($this->getObjetoBean()->getSexo()) : $a_Fields['Sexo'] = ($this->getObjetoBean()->getSexo()); endif;
      if($this->getObjetoBean()->getEstadoCivil()) : $a_Fields['EstadoCivil'] = ($this->getObjetoBean()->getEstadoCivil()); endif;
      if($this->getObjetoBean()->getFechaNacimiento()) : $a_Fields['FechaNacimiento'] = ($this->getObjetoBean()->getFechaNacimiento()); endif;
      if($this->getObjetoBean()->getTelefono()) : $a_Fields['Telefono'] = ($this->getObjetoBean()->getTelefono()); endif;
      if($this->getObjetoBean()->getCelular()) : $a_Fields['Celular'] = ($this->getObjetoBean()->getCelular()); endif;
      if($this->getObjetoBean()->getUsuarioEliminado()) : $a_Fields['UsuarioEliminado'] = ($this->getObjetoBean()->getUsuarioEliminado()); endif;
      if($this->getObjetoBean()->getDireccionNegocio()) : $a_Fields['direccion_negocio'] = ($this->getObjetoBean()->getDireccionNegocio()); endif;
      
      if($this->getObjetoBean()->getFechaCaducidadDoc()) : $a_Fields['FechaCaducidadDoc'] = ($this->getObjetoBean()->getFechaCaducidadDoc()); endif;
      if($this->getObjetoBean()->getDireccionViviendaReal()) : $a_Fields['DireccionViviendaReal'] = addslashes($this->getObjetoBean()->getDireccionViviendaReal()); endif;
      if($this->getObjetoBean()->getReferenciaViviendaReal()) : $a_Fields['ReferenciaViviendaReal'] = addslashes($this->getObjetoBean()->getReferenciaViviendaReal()); endif;
      if($this->getObjetoBean()->getFechaCaducidadDoc()) : $a_Fields['FechaCaducidadDoc'] = ($this->getObjetoBean()->getFechaCaducidadDoc()); endif;
      if($this->getObjetoBean()->getJsonReniec()) : $a_Fields['JsonReniec'] = ($this->getObjetoBean()->getJsonReniec()); endif;
      if($this->getObjetoBean()->getFechaCaducidadDoc()) : $a_Fields['FechaCaducidadDoc'] = ($this->getObjetoBean()->getFechaCaducidadDoc()); endif;
      if($this->getObjetoBean()->getReferenciaNegocio()) : $a_Fields['ReferenciaNegocio'] = ($this->getObjetoBean()->getReferenciaNegocio()); endif;
      
      if($this->getObjetoBean()->getFechaConversion()) : $a_Fields['FechaConversion'] = ($this->getObjetoBean()->getFechaConversion()); endif;
      if($this->getObjetoBean()->getLongitudDomicilio()) : $a_Fields['LongitudDomicilio'] = ($this->getObjetoBean()->getLongitudDomicilio()); endif;
      if($this->getObjetoBean()->getLatitudDomicilio()) : $a_Fields['LatitudDomicilio'] = ($this->getObjetoBean()->getLatitudDomicilio()); endif;
      if($this->getObjetoBean()->getLongitudNegocio()) : $a_Fields['LongitudNegocio'] = ($this->getObjetoBean()->getLongitudNegocio()); endif;
      if($this->getObjetoBean()->getLatitudNegocio()) : $a_Fields['LatitudNegocio'] = ($this->getObjetoBean()->getLatitudNegocio()); endif;
      if($this->getObjetoBean()->getOtroTipoNegocio()) : $a_Fields['OtroTipoNegocio'] = ($this->getObjetoBean()->getOtroTipoNegocio()); endif;
      if($this->getObjetoBean()->getCorreo()) : $a_Fields['Correo'] = ($this->getObjetoBean()->getCorreo()); endif;
      if($this->getObjetoBean()->getGastoAdministrativoPorcentaje()) : $a_Fields['GastoAdministrativoPorcentaje'] = ($this->getObjetoBean()->getGastoAdministrativoPorcentaje()); endif;
      if($this->getObjetoBean()->getInteresPorcentaje()) : $a_Fields['InteresPorcentaje'] = ($this->getObjetoBean()->getInteresPorcentaje()); endif;
      
      
      
      $a_Fields['flagCC'] = '-1'; 
      $sString = arrayClass::implode_key_value(",", $a_Fields);

      $sql = "UPDATE cr_cliente SET
                  ".$sString."
            WHERE 1 AND IdCliente= '".$this->getObjetoBean()->getIdCliente()."' ";
      
      $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
      //mysql_close($con);
                  
      $iResultSave = $result;
      if($iResultSave > 0){
        return true;
      }else{
        return false;
      }

    }else{
      return false;
    }

  }
  
  
  /**
  * Elimina registro
  *
  * @return Boolean
  */
   public function delete(){
    
      $o_Cliente = new ClienteBean();
      
      $con = Conexion::getConexion();
      
      if($this->getObjetoBean()->getIdCliente()){
          $o_Cliente->setIdCliente($this->getObjetoBean()->getIdCliente());
      }
            
      $sql = "UPDATE cr_cliente 
              SET
                Eliminado = '1',
                FechaEliminado = '".date('Y-m-d H:i:s')."',
                UsuarioEliminado = '".$this->getObjetoBean()->getUsuarioEliminado()."'
            WHERE IdCliente= '".$this->getObjetoBean()->getIdCliente()."' ";
      
      $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
      
      $num_rows = mysql_affected_rows($con);
      mysql_close($con);
                  
      $iResultDelete = $num_rows;
      if($iResultDelete){
          return 1;
      }else{
          return false;
      }    
    
  }
  /**
  * Selecciona un nuevo registro
  *
  * @return IdGenerado
  */
  public function select(){
      
    $where = "";
        
    $tamPag           = is_null($this->getObjetoBean()->tamPag)?999999:$this->getObjetoBean()->tamPag;
    $pagina           = is_null($this->getObjetoBean()->page)?1:$this->getObjetoBean()->page;
    $numeroRegistros  = $this->selectNumRows();
    $limitInf         = ($pagina-1)*$tamPag;
    
    $where = $this->buildConsult();
    $orden = $this->buildOrderByField();
    //if(trim($orden) =='') $orden = "ORDER BY idcliente,nombres,ApellidoPaterno,ApellidoMaterno DESC";
    if(trim($orden) =='') $orden = "ORDER BY IdCliente DESC";
    $con = Conexion::getConexion();
    /*$sql = "SELECT * 
    		FROM cr_cliente
            WHERE Eliminado <> '1' ".$where." ".$orden." LIMIT ".$limitInf.",".$tamPag;*/
    
    $sql = "SELECT * 
    		FROM cr_cliente
            WHERE 1 = 1 ".$where." ".$orden." LIMIT ".$limitInf.",".$tamPag;
    
    //echo $sql;
    $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
    $num_rows = mysql_num_rows($result);
    //echo $sql;
    $a_tmp = array();

    if($num_rows>0){
      while ($o_valor = mysql_fetch_object($result)) {
      $a_tmp[] = $this->insertarObjetoBean($o_valor);
      }
    }

    //mysql_close($con);
   
    return count($a_tmp)>0?$a_tmp:null;
      
  }  
  
  /**
  * Retorna un objeto ClienteBean
  *
  * @return Object
  */
  public function selectByPk(){
  
    $con = Conexion::getConexion();
    $sql = "SELECT * 
            FROM cr_cliente
            WHERE 1=1 and  IdCliente = '".$this->getObjetoBean()->getIdCliente()."' ";
    
    $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
    $num_rows = mysql_num_rows($result);
    mysql_close($con); 
   
    if($num_rows>0){
      while ($o_valor = mysql_fetch_object($result)) {
      $a_tmp[] = $this->insertarObjetoBean($o_valor);
      }
    }
       
    return count($a_tmp)>0?$a_tmp:null;
      
  }
  
  /**
  * Reasigna valores retornados del propel a un objeto ClienteBean
  *
  * @param Object $o_Propel
  * @return ClienteBean
  */
  private function insertarObjetoBean($o_Propel){

    $o_ClienteBean = new ClienteBean();
    
    $o_ClienteBean->setIdCliente($o_Propel->IdCliente);
    $o_ClienteBean->setIdMercado($o_Propel->IdMercado);
    $o_ClienteBean->setIdTipoNegocio($o_Propel->IdTipoNegocio);
    $o_ClienteBean->setNombres($o_Propel->Nombres);
    $o_ClienteBean->setApellidoPaterno($o_Propel->ApellidoPaterno);
    $o_ClienteBean->setApellidoMaterno($o_Propel->ApellidoMaterno);
    $o_ClienteBean->setNombreCompleto($o_Propel->NombreCompleto);
    $o_ClienteBean->setEstado($o_Propel->Estado);
	
	$o_ClienteBean->setFlagInfocorp($o_Propel->flaginfocorp);
    $o_ClienteBean->setColorInfocorp($o_Propel->colorinfocorp);
    $o_ClienteBean->setScoreInfocorp($o_Propel->scoreinfocorp);
    $o_ClienteBean->setClasificacionInfocorp($o_Propel->clasificacioninfocorp);
    $o_ClienteBean->setFecActualizacionInfocorp($o_Propel->fecactualizacioninfocorp);
    $o_ClienteBean->setUsrActualizacionInfocorp($o_Propel->usractualizacioninfocorp);
    
    $o_ClienteBean->setDireccionNegocio($o_Propel->direccion_negocio);
    $o_ClienteBean->setLongitudDomicilio($o_Propel->LongitudDomicilio);
    $o_ClienteBean->setLatitudDomicilio($o_Propel->LatitudDomicilio);
    $o_ClienteBean->setLongitudNegocio($o_Propel->LongitudNegocio);
    $o_ClienteBean->setLatitudNegocio($o_Propel->LatitudNegocio);
    $o_ClienteBean->setSemaforo($this->getSemaforoUltimoPrestamo($o_Propel->IdCliente));
     $o_ClienteBean->setCorreo($o_Propel->Correo);
    $o_ClienteBean->setOtroTipoNegocio($o_Propel->OtroTipoNegocio);
    
    $o_ClienteBean->setTipoDocumento($o_Propel->TipoDocumento);
    $o_ClienteBean->setFechaCaducidadDoc($o_Propel->FechaCaducidadDoc);
    $o_ClienteBean->setDireccionViviendaReal($o_Propel->DireccionViviendaReal);
    $o_ClienteBean->setReferenciaViviendaReal($o_Propel->ReferenciaViviendaReal);
    $o_ClienteBean->setJsonReniec($o_Propel->JsonReniec);
    
    $o_ClienteBean->setFlagConHuella($o_Propel->flagConHuella);

    $o_ClienteBean->setFlagHuellaConProblema($o_Propel->FlagHuellaConProblema);

    $o_ClienteBean->setSemaforo($this->getSemaforoUltimoPrestamo($o_Propel->IdCliente));
    $o_ClienteBean->setFechaConversion($o_Propel->FechaConversion);
	
    $o_ClienteBean->setDireccion($o_Propel->Direccion);
    $o_ClienteBean->setReferenciaNegocio($o_Propel->ReferenciaNegocio);
    
    $o_ClienteBean->setUsuarioCreacion($o_Propel->UsuarioCreacion);
    $o_ClienteBean->setFechaCreacion($o_Propel->FechaCreacion);
    $o_ClienteBean->setUsuarioModificacion($o_Propel->UsuarioModificacion);
    $o_ClienteBean->setFechaModificacion($o_Propel->FechaModificacion);
    $o_ClienteBean->setEliminado($o_Propel->Eliminado);
    $o_ClienteBean->setFechaEliminado($o_Propel->FechaEliminado);
    $o_ClienteBean->setTipoDocumento($o_Propel->TipoDocumento);
    $o_ClienteBean->setDni($o_Propel->Dni);
    $o_ClienteBean->setSexo($o_Propel->Sexo);
    $o_ClienteBean->setEstadoCivil($o_Propel->EstadoCivil);
    $o_ClienteBean->setFechaNacimiento($o_Propel->FechaNacimiento);
    $o_ClienteBean->setTelefono($o_Propel->Telefono);
    $o_ClienteBean->setCelular($o_Propel->Celular);
    $o_ClienteBean->setUsuarioEliminado($o_Propel->UsuarioEliminado);
    $o_ClienteBean->setFechaConversion($o_Propel->fechaconversion);
    
     $o_ClienteBean->setGastoAdministrativoPorcentaje($o_Propel->GastoAdministrativoPorcentaje);
     $o_ClienteBean->setInteresPorcentaje($o_Propel->InteresPorcentaje);
    
         
    return $o_ClienteBean;    
    
  }
  
  public function selectNumRows(){
    $where = $this->buildConsult(); 
    $con = Conexion::getConexion();
    
   /* $sql = "SELECT * 
    		FROM cr_cliente
    		WHERE Eliminado <> '1'".$where;*/
    
    $sql = "SELECT * 
    		FROM cr_cliente
    		WHERE 1 = 1 ".$where;
   
    $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
    $num_rows = mysql_num_rows($result);
    mysql_close($con);
    
    return $num_rows;
    
  }
  
  public function TienePrestamo(){
  	$con = Conexion::getConexion();
    $sql = "SELECT * 
    		FROM cr_prestamo
            WHERE Eliminado <> '1' 
    		and FechaInicio = '".$this->getObjetoBean()->getFechaInicioPrestamo()."' 
    		and  IdCliente = '".$this->getObjetoBean()->getIdCliente()."'";
   
    $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
    $num_rows = mysql_num_rows($result);
    $a_tmp = array();

    if($num_rows>0){
     return true;
    }
    return false;
  }
  
  public function seleccionarClientesReCaptacion($idSucursal,$idMercado,$idColaborador=''){
  	$con = Conexion::getConexion();
  

	if($idSucursal){
		$where = " and idsucursal = '".$idSucursal."' ";
	}
	
	//Buscar todas las sucursales
	
	$sql = "select IdAdministrador,IdSucursal 
			from `cr_sucursal`
			WHERE Estado = 'A' $where and eliminado = '0'
			";
	
	$result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
	$num_rows = mysql_num_rows($result);
	
	if($num_rows>0){
	  while ($o_valor = mysql_fetch_object($result)) {
	  	$IdAdministrador = $o_valor->IdAdministrador;
	  	$IdSucursal = $o_valor->IdSucursal;
	  	//Buscar todos los mercados x cada sucursal
	  	if($idSucursal){
			$where = " and sm.idsucursal = '".$idSucursal."' ";
		}
		
		if($idMercado){
			$where .= " and m.IdMercado = '".$idMercado."' ";
		}
	
	  	$sql = "select m.IdMercado   
				from `cr_sucursal_mercado` sm
				left join cr_mercado m on m.IdMercado = sm.IdMercado
				WHERE 1=1 $where and m.eliminado = '0'
				";
	
	  	$resultms = mysql_db_query(Conexion::getNameDb(), $sql, $con);
		$num_rowsms = mysql_num_rows($resultms);
		 while ($o_valorms = mysql_fetch_object($resultms)) {
			if($num_rowsms > 0){
				$IdMercado = $o_valorms->IdMercado;
				//Buscar los colabaoradores x cada administrador
		  		$sql = "select IdCliente,NombreCompleto
					from `cr_cliente` c
					WHERE idMercado = '$IdMercado'
						and c.eliminado ='0'
						
					";
			//Limit 0 , 40
		  	
			  	$resultcli = mysql_db_query(Conexion::getNameDb(), $sql, $con);
				$num_rowscli = mysql_num_rows($resultcli);
				if($num_rowscli > 0){
					 while ($o_valorcli = mysql_fetch_object($resultcli)) {
				  		$IdCliente = $o_valorcli->IdCliente;
				  		$NombreCliente = $o_valorcli->NombreCompleto;
				  		//Buscar los prestamos vencidos
					  	$sql = "select c.IdCliente ,p.estado,max(fechaVencimiento) as fechaMax,max(FechaCancelacion) as fechaMaxC,count(*) as cantidad
								from `cr_prestamo` p
								left join cr_cliente c on c.idcliente = p.idcliente
								WHERE c.IdCliente = '$IdCliente'
								and p.eliminado = '0'
								and c.eliminado = '0'
								group by c.IdCliente, p.estado
								
								";
					  	if($IdCliente == '6005'){
					  			//echo "ok".$sql."<br>";	
					  	}
					  	$resultpre = mysql_db_query(Conexion::getNameDb(), $sql, $con);
						$num_rowspre = mysql_num_rows($resultpre);
						if($num_rowspre > 0){
							 while ($o_valorpre = mysql_fetch_object($resultpre)) {
								$IdCliente = $o_valorpre->IdCliente;
								$Estado = $o_valorpre->estado;
								$cantidad = $o_valorpre->cantidad;
								$fechaMax = $o_valorpre->fechaMax;
								$fechaMaxC = $o_valorpre->fechaMaxC;
								
								$a_cliente[$IdCliente][$Estado] = $cantidad;
								
								if($Estado == 'C' && $fechaMaxC){
									$a_cliente[$IdCliente]['fechaMaximo'] = $fechaMax;
									$a_cliente[$IdCliente]['fechaMaximoCancelado'] = $fechaMaxC;
									$a_cliente[$IdCliente]['IdMercado'] = $IdMercado;
									$a_cliente[$IdCliente]['IdSucursal'] = $IdSucursal;
									$a_cliente[$IdCliente]['NombreCliente'] = $NombreCliente;
									
								}
								
								/*if($IdCliente == '6005'){
									echo "<pre>";
									print_r($a_cliente);	
									echo "</pre>";
								}*/
			
							}
						
						}
						 
					 }
				 }
				 
			   }
			  
			}
			if(is_array($a_cliente)){
				foreach ($a_cliente as $keyc => $a_cliente ){
					//echo $a_cliente['fechaMaximoCancelado'];
					if(!$a_cliente['P'] && diferenciaDates(date('Y-m-d'),substr($a_cliente['fechaMaximoCancelado'],0,10))>20){
						$a_cliente_depurado[$keyc] = $a_cliente;
					}
				}
			}
	 	}
		
		//echo count($a_cliente_depurado);
		$a_clientes = array_sort($a_cliente_depurado, 'fechaMaximoCancelado', SORT_DESC);
		return $a_clientes;		
	}
  	
  }
  
  private function buildConsult(){
    
    $where = "";
     $where_eliminado = " AND cr_cliente.Eliminado <> '1'";
     
    if($this->getObjetoBean()->getIdCliente()){
       $where .= " AND cr_cliente.IdCliente = '".$this->getObjetoBean()->getIdCliente()."'";
    }
    if($this->getObjetoBean()->getIdMercado()){
       $where .= " AND IdMercado = '".$this->getObjetoBean()->getIdMercado()."'";
    }
    if($this->getObjetoBean()->getNotIdCliente()){
       $where .= " AND cr_cliente.IdCliente <> '".$this->getObjetoBean()->getNotIdCliente()."'";
    }
    
	if($this->getObjetoBean()->getFlagInfocorp()){
       $where .= " AND cr_cliente.FlagInfocorp  = '".$this->getObjetoBean()->getFlagInfocorp()."'";
    }
    if($this->getObjetoBean()->getNotIdCliente()){
       $where .= " AND cr_cliente.IdCliente <> '".$this->getObjetoBean()->getNotIdCliente()."'";
    }
	
    if($this->getObjetoBean()->getEstado()){
       $where .= " AND cr_cliente.Estado  = '".$this->getObjetoBean()->getEstado()."'";
    }
    if($this->getObjetoBean()->getIdTipoNegocio()){
       $where .= " AND IdTipoNegocio  = '".$this->getObjetoBean()->getIdTipoNegocio()."'";
    }
    if($this->getObjetoBean()->getApellidoPaterno()){
       $where .= " AND ApellidoPaterno like '".$this->getObjetoBean()->getApellidoPaterno()."%'";
    }
    if($this->getObjetoBean()->getApellidoMaterno()){
       $where .= " AND ApellidoMaterno like '".$this->getObjetoBean()->getApellidoMaterno()."%'";
    }
    if($this->getObjetoBean()->getNombres()){
       $where .= " AND Nombres like '%".$this->getObjetoBean()->getNombres()."%'";
    }
    if($this->getObjetoBean()->getNombreCompletoLike()){
       $where .= " AND NombreCompleto like '%".$this->getObjetoBean()->getNombreCompletoLike()."%'";
    }
	if($this->getObjetoBean()->getDni()){
       $where .= " AND dni like '".$this->getObjetoBean()->getDni()."%'";
    }
    if($this->getObjetoBean()->getDni()){
       $where .= " AND dni like '".$this->getObjetoBean()->getDni()."%'";
    }
    if($this->getObjetoBean()->getNuevoDni()){
       $where .= " AND Dni  = '".$this->getObjetoBean()->getNuevoDni()."'";
    }
    if($this->getObjetoBean()->getUsuarioCreacion()){
       $where .= " AND UsuarioCreacion  = '".$this->getObjetoBean()->getUsuarioCreacion()."'";
    }
    if($this->getObjetoBean()->getEliminado()){
      	 $where_eliminado = " AND cr_cliente.Eliminado  = '1'";
    }
    if(is_array($this->getObjetoBean()->getFiltroMercado())){
      	 $where .= " AND IdMercado in ('".implode("','",$this->getObjetoBean()->getFiltroMercado())."')";
    }
    if($this->getObjetoBean()->getFechaCreacion()){
      	 $where .= " AND cr_cliente.FechaCreacion >= '".$this->getObjetoBean()->getFechaCreacion()." 00:00:00'";
    }
    if($this->getObjetoBean()->getFechaCreacionFinal()){
      	 $where .= " AND cr_cliente.FechaCreacion <= '".$this->getObjetoBean()->getFechaCreacionFinal()." 23:59:59'";
    }
    if($this->getObjetoBean()->getFechaConversion()){
      	 $where .= " AND cr_cliente.FechaConversion >= '".$this->getObjetoBean()->getFechaConversion()." 00:00:00'";
    }
    if($this->getObjetoBean()->getFechaConversionFinal()){
      	 $where .= " AND cr_cliente.FechaConversion <= '".$this->getObjetoBean()->getFechaConversionFinal()." 23:59:59'";
    }
     return $where_eliminado." ". $where;
    
  }
  
   public function buildOrderByField(){
    $order_by = "";
    if($this->getObjetoBean()->sortCampos || $this->getObjetoBean()->sortCampos != ""){
      $a_valCampos = explode(";", $this->getObjetoBean()->sortCampos);
      $a_valtype   = explode(";", $this->getObjetoBean()->sortType);
      $order_by = " ORDER BY ";
      $a_order = array();
      foreach ($a_valCampos as $key => $val){
        $sTmpOrder = "";
        if(array_key_exists($val, self::$fieldNames)){
          $sTmpOrder .= self::$fieldNames[$val];
          switch ($a_valtype[$key]){
            case 1: $sTmpOrder .= " ASC"; break;
            case 2: $sTmpOrder .= " DESC"; break;
          }
          $a_order[] = $sTmpOrder;
        }
      }
      $order_by .= implode(", ", $a_order);
    }
    return $order_by;
  }
  
  public function getSemaforoUltimoPrestamo($idcliente){

    $where = " and  idcliente = '".$idcliente."'"; 

    $con = Conexion::getConexion();

     

    

    	$sql = "SELECT semaforo 
	    		FROM cr_prestamo
	    		WHERE 1 = 1 ".$where." 

	    		ORDER BY 1 desc
    			LIMIT 0,1";

    	;

    	//echo $sql;

    

    $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
    $num_rows = mysql_num_rows($result);

    

    $num_rows = mysql_num_rows($result);

     

   

    if($num_rows>0){

      while ($o_valor = mysql_fetch_object($result)) {

       return $o_valor->semaforo;

      }

    }

    return "";

  }
    
   public function getUltimoPrestamoCancelado($IdPrestamoUC=''){
  	
  	$con = Conexion::getConexion();
  
	//Buscar todas las sucursales
	
	if(!$IdPrestamoUC){
	
		if($this->getObjetoBean()->getIdCliente()){
	       $where .= " AND IdCliente = '".$this->getObjetoBean()->getIdCliente()."'";
	    
		
		$sql = "select *
				from `cr_prestamo`
				WHERE Estado = 'C' $where and eliminado = '0'
				order by idprestamo desc
				limit 0,1
				";
		
		$result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
		$num_rows = mysql_num_rows($result);
		
		if($num_rows>0){
		  while ($o_valor = mysql_fetch_object($result)) {
		  	 $o_valorPC = $o_valor;
		  }
		 }
		}
		
	    if(is_object($o_valorPC)){
	    	$NombreCategoria = $o_valorPC->nombrecategoria;
	    	$IdPrestamoUC = $o_valorPC->IdPrestamo;
	    }
	}
    //Buscar el nombre de la ultima categoria

	if($IdPrestamoUC){
        $a_prestamo['idprestamo'] = $IdPrestamoUC;
		//Busco los pagos del prestamo
		$sql = "SELECT *
				FROM  cr_categoria_prestamolog
				WHERE 1 and idprestamo = '".$IdPrestamoUC."'
				order by peso desc
				LIMIT 0,1
				";
	      
	      //exit;
	    $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
	    
	    $num_rows = mysql_num_rows($result);
	    
	    if($num_rows>0){
	    	while ($o_valor = mysql_fetch_object($result)) {
	      		$NombreCategoria = $o_valor->nombrecategoria;
	      		$idcategoria	 = $o_valor->idcategoria	;
		   	}
	    	$a_prestamo['idcategoria'] = $idcategoria;
	    	$a_prestamo['nombrecategoria'] = $NombreCategoria;
	    	$a_prestamo['IdPrestamoUC'] = $IdPrestamoUC;
	    }
	}else{
		return false;
	}
	return $a_prestamo;        
	
	
	
  }
  public function buscarProductosxAutocomplet($ItemValue,$a_mercado)
  {
    ob_start();
    $sCadenaUL = "";
    $result = ClienteDP::buscarItemxOpciones($ItemValue,$a_mercado);
    if(is_array($result))
    {
      foreach ($result as $retorno)
      {
        if(is_array($retorno))
        {
          $sCadenaUL .= $this->concatenarLineasLI($retorno);
        }
      }  
    }    
    $this->sCadena = '<ul>'.$sCadenaUL.'</ul>';
    ob_clean();
  }
  
  public function mostrarProductos()
  {
    return $this->sCadena;
  }
  
  public static  function buscarItemxOpciones($ItemValue,$a_mercado)
  {
    $result = false;
    $s     = substr($ItemValue, 0, 1);
    $value = substr($ItemValue, 1);
    
   
	if(is_array($a_mercado)){
      	 $where .= " AND IdMercado in ('".implode("','",$a_mercado)."')";
    }
	

	
    switch ($s)
    {
      case '>' :
        $sql = "SELECT distinct c.idcliente, c.dni, c.nombrecompleto,c.idmercado
                FROM cr_cliente c
                LEFT JOIN cr_prestamo p ON p.idcliente = c.idcliente
                WHERE p.estado='P' AND p.eliminado='0' AND dni LIKE '%$value%' ".$where."; ";
      break ;
      case ':' :
        $sql = "";
      break;
      case '-' :
        $sql = "SELECT distinct c.idcliente, c.dni, c.nombrecompleto,c.idmercado
                FROM cr_cliente c
                LEFT JOIN cr_prestamo p ON p.idcliente = c.idcliente 
                WHERE p.estado= 'P' AND p.eliminado='0' AND c.idcliente LIKE '$value%' ".$where."";
      break ;
      case '#' :
        $sql = "";
      break ;
      case '/' :
        $sql = "";
      break;    
       default :
	    $sql = "SELECT distinct c.idcliente, c.dni, c.nombrecompleto,c.idmercado
                FROM cr_cliente c
                LEFT JOIN cr_prestamo p ON p.idcliente = c.idcliente
                WHERE p.estado= 'P' AND p.eliminado='0' AND nombrecompleto LIKE '%$ItemValue%' ".$where.";";
      //echo $sql;
      break ; 
    }
    $con = Conexion::getConexion();
	//echo $sql;
    $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
	
    $num_rows = mysql_num_rows($result);
    $a_tmp = array();
    if($num_rows>0)
    {
      $i = 0;
      while ($o_valor = mysql_fetch_object($result))
      {
        
        //buscar el precio por item
        $iIdItem  = $o_valor->idcliente;
        $sItemCod = $o_valor->idcliente;
        $sDescrip = $o_valor->nombrecompleto;
        $idmercado = $o_valor->idmercado;
        $iStock   = $iStockDisponible;
        $fPrecio  = $fCostoTotal;
        $sDscTipo  = $o_valor->dni;
        
        //COLORES
        if($iStock==0)
        {
          $sColor = "red";
        }
        elseif ($iStock>0 && $iStock<5)
        {
          $sColor = "blue";
        }
        elseif ($iStock>=5)
        {
          $sColor = "green";
        }

        $a_tmp[$i][0] = str_replace(' ','&nbsp;',sprintf('%-15s',$sItemCod));
        $a_tmp[$i][1] = str_replace(' ','&nbsp;',sprintf('%-15s',$sItemCod));
        $a_tmp[$i][2] = $sColor;
        //$a_tmp[$i][3] = str_replace(' ','&nbsp;',sprintf('%10.2f',$fPrecio)."&nbsp;&nbsp;&nbsp;&nbsp;");
        //$a_tmp[$i][4] = str_replace(' ','&nbsp;',sprintf('%-5s',$iStock));
        $a_tmp[$i][5] = str_replace(' ','&nbsp;',sprintf('%-3s',$sDscTipo));
        $a_tmp[$i][6] = str_replace(' ','&nbsp;',sprintf('%-65s',$sDescrip));//." ".$idmercado
        
        $i++;        
      }
    }
    return $a_tmp;  
  }
  /*
  public function selectNumRowsCelularClientes($Celular,$idCliente=''){
  	$con = Conexion::getConexion();
  	if($idCliente){
  		$where = " and cr_cliente.idcliente <> $idCliente ";
  	}
  	$sql = "select 'Cliente' as tipo,cr_cliente.idcliente,nombrecompleto
			from cr_cliente_telefono 
			left join cr_cliente on cr_cliente.idcliente = cr_cliente_telefono.idcliente
			where numero = '".$Celular."'
				and cr_cliente.eliminado=0
				$where
			union 
			select 'Cliente' as tipo,idcliente ,nombrecompleto
			from cr_cliente 
			left join cr_mercado on cr_mercado.idmercado = cr_cliente.idmercado
			left join cr_sucursal_mercado on cr_sucursal_mercado.idmercado = cr_cliente.idmercado
			left join cr_sucursal on cr_sucursal_mercado.idsucursal = cr_sucursal.idsucursal
			where celular = '".$Celular."'
				and cr_cliente.eliminado=0
				$where
			union 
			select 'Empleado' as tipo,idcolaborador, concat(Nombres,' ',ApellidoPaterno,' ',ApellidoMaterno) as nombrecompleto
			from cr_colaborador 
			where eliminado = '0' and celular = '".$Celular."'";
	      
	      //exit;
    $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
    
    $num_rows = mysql_num_rows($result);
    
     return $num_rows;
  } */
  
  public function selectNumRowsCelularClientes($Celular,$idCliente=''){
  	$con = Conexion::getConexion();
  	if($idCliente){
  		$where = " and cr_cliente.idcliente = $idCliente ";
  	}
  	$sql = "select cr_cliente_telefono.Numero
			from cr_cliente_telefono 
			left join cr_cliente on cr_cliente.idcliente = cr_cliente_telefono.idcliente
			where 1
				and cr_cliente.eliminado=0
				$where
			";
	//echo $sql;
	      //exit;
    $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
    
    $num_rows = mysql_num_rows($result);
    
     return $num_rows;
  } 
  
  public function concatenarLineasLI($array)
  {
    $sCadenaLI = "";
    $sCadenaLI .=  "<li style='text-transform: uppercase; color:".$array[2].";' id='".$array[0]."' name='".$array[6]."'><b>".$array[1]."</b>";
    
    foreach ($array as $key=>$value)
    {
      if($key>2)
      {
        $sCadenaLI .=  "&nbsp;&nbsp;".$value;      
      }
    }
    $sCadenaLI .= "</li>\n";
    return $sCadenaLI;
  }

  
}

