
<?php

/**
* Clase Dispacher para SobranteFaltante
*
* @package IM
* @subpackage SobranteFaltanteDP
* @author Willy
* @version SVN: : SobranteFaltanteDP.class.php,v 1.1 2009/06/01 13:16:53 Exp $
*/
class SobranteFaltanteDP implements interfaceDP {

  protected $o_Bean;

  /**
  * Constructor donde asigna a un atributo el objeto SobranteFaltanteBean
  *
  * @param SobranteFaltanteBean $o_SobranteFaltanteBean
  */
  public function __construct(SobranteFaltanteBean $o_SobranteFaltanteBean){
  
    $this->o_Bean = $o_SobranteFaltanteBean;
    
  }
  
  /**
  * Retorna el objeto SobranteFaltanteBean
  *
  * @return Object
  */
  protected function getObjetoBean(){
  
    if(!$this->o_Bean){
        $this->o_Bean = new SobranteFaltanteBean();
    }        
    return $this->o_Bean;
    
  }
  
  /**
  * Ingresa un nuevo registro
  *
  * @return IdGenerado
  */
  public function save(){
    $con = Conexion::getConexion();
      $a_Fields = array();
      
       //if($this->getObjetoBean()->getIdSobranteFaltante()) : $a_Fields['IdSobranteFaltante'] = ($this->getObjetoBean()->getIdSobranteFaltante()); endif;
      if($this->getObjetoBean()->getIdColaborador()) : $a_Fields['IdColaborador'] = ($this->getObjetoBean()->getIdColaborador()); endif;
      if($this->getObjetoBean()->getFechaSofa()) : $a_Fields['FechaSofa'] = ($this->getObjetoBean()->getFechaSofa()); endif;
      if($this->getObjetoBean()->getMonto()) : $a_Fields['Monto'] = ($this->getObjetoBean()->getMonto()); endif;
      if($this->getObjetoBean()->getDescripcion()) : $a_Fields['Descripcion'] = ($this->getObjetoBean()->getDescripcion()); endif;
      if($this->getObjetoBean()->getEstado()) : $a_Fields['Estado'] = ($this->getObjetoBean()->getEstado()); endif;
      if($this->getObjetoBean()->getTipoSofa()) : $a_Fields['TipoSofa'] = ($this->getObjetoBean()->getTipoSofa()); endif;
      if($this->getObjetoBean()->getEliminado()) : $a_Fields['Eliminado'] = ($this->getObjetoBean()->getEliminado()); 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()->getFechaEliminado()) : $a_Fields['FechaEliminado'] = ($this->getObjetoBean()->getFechaEliminado()); endif;
      if($this->getObjetoBean()->getUsuarioEliminado()) : $a_Fields['UsuarioEliminado'] = ($this->getObjetoBean()->getUsuarioEliminado()); endif;
  
      
      $sStringField = arrayClass::implode_keys(',', $a_Fields);
      $sStringValue = "'".implode("','", $a_Fields)."'";

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

    if($this->getObjetoBean()->getIdSofa()){
      $con = Conexion::getConexion();
      $a_Fields = array();
      
      if($this->getObjetoBean()->getIdSofa()) : $a_Fields['IdSofa'] = ($this->getObjetoBean()->getIdSofa()); endif;
      if($this->getObjetoBean()->getIdColaborador()) : $a_Fields['IdColaborador'] = ($this->getObjetoBean()->getIdColaborador()); endif;
      if($this->getObjetoBean()->getFechaSofa()) : $a_Fields['FechaSofa'] = ($this->getObjetoBean()->getFechaSofa()); endif;
      if($this->getObjetoBean()->getMonto()) : $a_Fields['Monto'] = ($this->getObjetoBean()->getMonto()); endif;
      if($this->getObjetoBean()->getDescripcion()) : $a_Fields['Descripcion'] = ($this->getObjetoBean()->getDescripcion()); endif;
      if($this->getObjetoBean()->getEstado()) : $a_Fields['Estado'] = ($this->getObjetoBean()->getEstado()); endif;
      if($this->getObjetoBean()->getTipoSofa()) : $a_Fields['TipoSofa'] = ($this->getObjetoBean()->getTipoSofa()); endif;
      if($this->getObjetoBean()->getEliminado()) : $a_Fields['Eliminado'] = ($this->getObjetoBean()->getEliminado()); 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()->getFechaEliminado()) : $a_Fields['FechaEliminado'] = ($this->getObjetoBean()->getFechaEliminado()); endif;
      if($this->getObjetoBean()->getUsuarioEliminado()) : $a_Fields['UsuarioEliminado'] = ($this->getObjetoBean()->getUsuarioEliminado()); endif;
      
      
      $sString = arrayClass::implode_key_value(",", $a_Fields);

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

    }else{
      return false;
    }

  }
  
  
  /**
  * Elimina registro
  *
  * @return Boolean
  */
  public function delete(){
    
      $o_SobranteFaltante = new SobranteFaltanteBean();
      
      $con = Conexion::getConexion();
      
      if($this->getObjetoBean()->getIdSofa()){
          $o_SobranteFaltante->setIdSofa($this->getObjetoBean()->getIdSofa());
      }
            
      $sql = "UPDATE cr_sobrante_faltante 
              SET
                Eliminado = '1',
                FechaEliminado = '".date('Y-m-d H:i:s')."',
                UsuarioEliminado = '".$this->getObjetoBean()->getUsuarioEliminado()."'
            WHERE IdSofa= '".$this->getObjetoBean()->getIdSofa()."' ";
      
      $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(){
    $tamPag           = is_null($this->getObjetoBean()->tamPag)?1:$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();
    
    $con = Conexion::getConexion();
    $sql = "SELECT sf.*, co.ApellidoPaterno,co.ApellidoMaterno,co.Nombres
            FROM cr_sobrante_faltante sf
             LEFT JOIN cr_colaborador co ON sf.IdColaborador = co.IdColaborador 
            WHERE sf.Eliminado <> '1' ".
            $where." ".$orden." LIMIT ".$limitInf.",".$tamPag;
    
    //echo $sql;
    $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
    $num_rows = mysql_num_rows($result);

    $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;
      
  }
   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;
  }
  
  
  /**
  * Retorna un objeto SobranteFaltanteBean
  *
  * @return Object
  */
 
  public function selectByPk(){
  
    $con = Conexion::getConexion();
    $sql = " SELECT sf.*, co.Nombres 
             FROM cr_sobrante_faltante sf
             LEFT JOIN cr_colaborador co ON sf.IdColaborador = co.IdColaborador 
    		 WHERE  sf.Eliminado <> '1' and IdSofa='".$this->getObjetoBean()->getIdSofa()."' ";
    $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
    $o_Propel = $result ? mysql_fetch_object($result) : null;
    mysql_close($con);
    //echo $sql;
    return $o_Propel?$this->insertarObjetoBean($o_Propel):null;
  
  }
  
   
  
  /**
  * Reasigna valores retornados del propel a un objeto SobranteFaltanteBean
  *
  * @param Object $o_Propel
  * @return SobranteFaltanteBean
  */
  private function insertarObjetoBean($o_Propel){

    $o_SobranteFaltanteBean = new SobranteFaltanteBean();
    
    $o_SobranteFaltanteBean->setIdSofa($o_Propel->IdSofa);
    $o_SobranteFaltanteBean->setIdColaborador($o_Propel->IdColaborador);
    $o_SobranteFaltanteBean->setFechaSofa($o_Propel->FechaSofa);
    $o_SobranteFaltanteBean->setMonto($o_Propel->Monto);
    $o_SobranteFaltanteBean->setDescripcion($o_Propel->Descripcion);
    $o_SobranteFaltanteBean->setEstado($o_Propel->Estado);
    $o_SobranteFaltanteBean->setTipoSofa($o_Propel->TipoSofa);
    $o_SobranteFaltanteBean->setEliminado($o_Propel->Eliminado);
    $o_SobranteFaltanteBean->setUsuarioCreacion($o_Propel->UsuarioCreacion);
    $o_SobranteFaltanteBean->setFechaCreacion($o_Propel->FechaCreacion);
    $o_SobranteFaltanteBean->setUsuarioModificacion($o_Propel->UsuarioModificacion);
    $o_SobranteFaltanteBean->setFechaModificacion($o_Propel->FechaModificacion);
    $o_SobranteFaltanteBean->setFechaEliminado($o_Propel->FechaEliminado);
    $o_SobranteFaltanteBean->setUsuarioEliminado($o_Propel->UsuarioEliminado);
    $o_SobranteFaltanteBean->setNombres($o_Propel->Nombres);  
    $o_SobranteFaltanteBean->setNombreCompleto($o_Propel->ApellidoPaterno." ".$o_Propel->ApellidoMaterno." ".$o_Propel->Nombres);
         
    return $o_SobranteFaltanteBean;    
    
  }
  public function selectNumRows(){
    
    $where = $this->buildConsult();
    
    $con = Conexion::getConexion();
    $sql = "SELECT *
             FROM cr_sobrante_faltante sf
             LEFT JOIN cr_colaborador co ON sf.IdColaborador = co.IdColaborador 
     		WHERE sf.Eliminado <> '1'".$where;
   
    $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
    $num_rows = mysql_num_rows($result);
    
    mysql_close($con);
   
    return $num_rows;
    
  }
  
   public function selectTotalMonto(){
    
    $where = $this->buildConsult();
    
    $con = Conexion::getConexion();
    $sql = "SELECT sum(Monto) as MONTO
    		 FROM cr_sobrante_faltante sf
             LEFT JOIN cr_colaborador co ON sf.IdColaborador = co.IdColaborador 
     		WHERE sf.Eliminado <> '1'".$where;
   
    $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
    $num_rows = mysql_num_rows($result);
    
     while ($o_valor = mysql_fetch_object($result)) {
      $monto_total = $o_valor->MONTO;
      }
    
    mysql_close($con);
   
    return $monto_total;
    
  }
  
  private function buildConsult(){
    
    $where = "";
    
    if($this->getObjetoBean()->getIdSofa()){
       $where .= " AND IdSofa  = '".$this->getObjetoBean()->getIdSofa()."'";
    }
    if($this->getObjetoBean()->getIdColaborador()){
      
       $where .= " AND sf.IdColaborador= '".$this->getObjetoBean()->getIdColaborador()."'";
       
    }
    if($this->getObjetoBean()->getFechaSofa()){
       $where .= " AND FechaSofa >='".$this->getObjetoBean()->getFechaSofa()."'";
    }
    if($this->getObjetoBean()->getEstado()){
        $where .= " AND sf.Estado  = '".$this->getObjetoBean()->getEstado()."'";
    }
    if($this->getObjetoBean()->getTipoSofa()){
        $where .= " AND sf.TipoSofa  = '".$this->getObjetoBean()->getTipoSofa()."'";
    }
   
    if($this->getObjetoBean()->getFechaFinal()){
       $where .= " AND FechaSofa <= '".$this->getObjetoBean()->getFechaFinal()."'";
    }
   if($this->getObjetoBean()->getIdColaboradores()){
       $where .= " AND sf.IdColaborador in ('".implode("','",$this->getObjetoBean()->getIdColaboradores())."')";
   }
    return $where;
    
  }
  
  function selectResultset(){
    
    $tamPag           = is_null($this->getObjetoBean()->tamPag)?9999:$this->getObjetoBean()->tamPag;
    $pagina           = is_null($this->getObjetoBean()->page)?1:$this->getObjetoBean()->page;
    $numeroRegistros  = $this->selectNumRows();
    $limitInf         = ($pagina-1)*$tamPag;
    
    $where = $this->buildConsult();
    
    
    $con = Conexion::getConexion();
    $sql = "SELECT *
             FROM cr_sobrante_faltante sf
             LEFT JOIN cr_colaborador co ON sf.IdColaborador = co.IdColaborador 
            WHERE sf.Eliminado <> '1' ".
            $where." ".$orden." LIMIT ".$limitInf.",".$tamPag;
    
    //echo $sql;
    $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
    $num_rows = mysql_num_rows($result);
    
    mysql_close($con);

    $a_tmp = array();

    if($num_rows>0){
      
      return $result;
      
    }else{
      return null;
    }
        
  }
    
}

