<?php
/**
 * Clase DP para CrPedidocabeceraDP
 *
 * @package    
 * @subpackage CrPedidocabeceraDP
 * @author     Willy
 * @version    SVN:: CrPedidocabeceraDP.class.php,v 1.1 2012-07-22 23:32:04 william.taype Exp $
 */
class CrPedidocabeceraDP extends BaseCrPedidocabeceraDP
{
	
	public function cierreCabecera()
  {
    try
    {
      if($this->getIdSucursal())
      {
        $a_Fields = array();
        
              
  		$con = Conexion::getConexion();
                
        if(!is_null($this->getEstado())) : $a_Fields['estado'] = ($this->getEstado()); endif;
       
        if(!is_null($this->getUsuariomodificacion())) : $a_Fields['usuariomodificacion'] = ($this->getUsuariomodificacion()); endif;
        if(!is_null($this->getFechamodificacion())) : $a_Fields['fechamodificacion'] = ($this->getFechamodificacion()); endif;
        if(!is_null($this->getComentario())) : $a_Fields['comentariorepresentante'] = ($this->getComentario()); endif;
       
        if(!is_null($this->getIdcolaboradordestino())) : $a_Fields['idcolaboradorsupervisor'] = ($this->getIdcolaboradordestino()); endif;
        //if(!is_null($this->getIdcolaboradorrepresentante())) : $a_Fields['idcolaboradorrepresentante'] = ($this->getIdcolaboradorrepresentante()); endif;
        if(!is_null($this->getIdcolaboradorrepresentante())) : $where = "and idcolaboradorrepresentante = '".$this->getIdcolaboradorrepresentante()."'"; endif;
        
        
       
        if(!is_null($this->getNumeropedidos())) : $a_Fields['numeropedidos'] = ($this->getNumeropedidos()); endif;
        if(!is_null($this->getNumeropedidosaprobados())) : $a_Fields['numeropedidosaprobados'] = ($this->getNumeropedidosaprobados()); endif;
        if(!is_null($this->getNumeropedidosdesaprobados())) : $a_Fields['numeropedidosdesaprobados'] = ($this->getNumeropedidosdesaprobados()); endif;

        $sStringField = arrayClass::implode_key_value(',', $a_Fields);
        
		$sql = "UPDATE cr_pedidocabecera SET ".$sStringField." WHERE 1 AND idsucursal='".$this->getIdSucursal()."' and fechaoperacion = '".$this->getFechaoperacion()."' $where;";
		
        $oLink = method_exists($con, 'getResource')?$con->getResource():$con;
        $result = mysql_db_query(Conexion::getNameDb(), $sql, $oLink);
        
        
       
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows($oLink);
        }
        else
        {
          throw new Exception( mysql_error($oLink) );
        }
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }
  
  
  public function updateTotales()
  {
    try
    {
      if($this->getIdSucursal())
      {
        $a_Fields = array();
        
         //Obtener el monto total de los campos numeropedidosaprobados numeropedidosdesaprobados|montototal|montoaprobado|montorechazado|montoentregado|montonoentregado
        
        $con = Conexion::getConexion();
	  	$oLink = method_exists($con, 'getResource')?$con->getResource():$con;
	  	
        if(!is_null($this->getIdcolaboradorrepresentante())){
        	$where = " and idcolaboradorrepresentante = '".$this->getIdcolaboradorrepresentante()."'";
        }
        
	  	
	    $sql = " 
				SELECT pc.idpedidocabecera ,idcolaboradorrepresentante,pd.estado,count(*) as cantidad,
																		sum(pd.montoprestado) as sumamontototal
																		
					FROM cr_pedidodetalle pd
					LEFT JOIN cr_pedidocabecera pc on pd.idpedidocabecera = pc.idpedidocabecera 
					
					WHERE pc.estado = 'P'
					AND (pd.eliminado ='0' or pd.eliminado is null)
					AND idsucursal ='".$this->getIdSucursal()."'
					and fechaoperacion = '".$this->getFechaoperacion()."' $where
					group by pc.idpedidocabecera , idcolaboradorrepresentante,pd.estado
					order by 1";
		   
	    
        
        $result1 = mysql_db_query(Conexion::getNameDb(), $sql, $oLink);
	    $num_rows = mysql_num_rows($result1);
	    
	    $a_tmp = array();
	
	    if($num_rows>0){
	      $idpedidocabeceraant = '';
	      $i = 0;
	      while ($o_valor = mysql_fetch_object($result1)) {
	      				
	      		
	      		if( $o_valor->idpedidocabecera != $idpedidocabeceraant){
	      			if($i > 0){
	      				$sStringField = arrayClass::implode_key_value(',', $a_Fields);
	      	 	
	      	 			$sql = "UPDATE cr_pedidocabecera SET ".$sStringField." WHERE 1 AND idpedidocabecera='".$idpedidocabeceraant."';";
	      	 			
				        $result2 = mysql_db_query(Conexion::getNameDb(), $sql, $oLink);
	      			}
	      			
	      			$a_Fields = null;
	      			$idpedidocabeceraant = $o_valor->idpedidocabecera;
	      		}
	      		
	      		$a_Fields['montototal'] += $o_valor->sumamontototal;
	      		if($o_valor->estado == 'A'){
	      			$a_Fields['montoaprobado'] = $o_valor->sumamontototal;
	      		}
	      		if($o_valor->estado == 'R'){
	      			$a_Fields['montorechazado'] = $o_valor->sumamontototal;
	      		}
	      	 	  	 	
	      		$i++;
	      }
	    }
	    
	    if($idpedidocabeceraant){
	    	$sStringField = arrayClass::implode_key_value(',', $a_Fields);
		
			$sql = "UPDATE cr_pedidocabecera SET ".$sStringField." WHERE 1 AND idpedidocabecera='".$idpedidocabeceraant."';";
			
			       
	        $result3 = mysql_db_query(Conexion::getNameDb(), $sql, $oLink);
			
	    }
	    
	    if(!is_null($this->getIdcolaboradorrepresentante())){
        	$where = " and idcolaboradorrepresentante = '".$this->getIdcolaboradorrepresentante()."'";
        }
        
	  	
	    $sql = " 
				SELECT pc.idpedidocabecera ,idcolaboradorrepresentante,
																		count(*) as cantidad,
																		sum(pd.montoprestado) as sumamontototal
																		
					FROM cr_pedidodetalle pd
					LEFT JOIN cr_pedidocabecera pc on pd.idpedidocabecera = pc.idpedidocabecera 
					
					WHERE pc.estado = 'P'
					AND (pd.eliminado ='0' or pd.eliminado is null)
					AND idsucursal ='".$this->getIdSucursal()."'
					and fechaoperacion = '".$this->getFechaoperacion()."' $where
					group by pc.idpedidocabecera , idcolaboradorrepresentante
					order by 1";
		   
	    
       
        $result4 = mysql_db_query(Conexion::getNameDb(), $sql, $oLink);
	    $num_rows = mysql_num_rows($result4);
	    
	    $a_tmp = array();
	
	    if($num_rows>0){
	      $idpedidocabeceraant = '';
	      $i = 0;
	      while ($o_valor = mysql_fetch_object($result4)) {
	      		
	      			      		
	      		if( $o_valor->idpedidocabecera != $idpedidocabeceraant){
	      			if($i > 0){
	      				$sStringField = arrayClass::implode_key_value(',', $a_Fields);
	      	 	
	      	 			$sql = "UPDATE cr_pedidocabecera SET ".$sStringField." WHERE 1 AND idpedidocabecera='".$idpedidocabeceraant."';";
	      	 			
	      	 			
				        $result5 = mysql_db_query(Conexion::getNameDb(), $sql, $oLink);
	      			}
	      			
	      			$a_Fields = null;
	      			$idpedidocabeceraant = $o_valor->idpedidocabecera;
	      		}

	      		$a_Fields['entregado'] = $o_valor->sumamontototal;	 	  	 	
	      		
	      		$i++;
	      }
	    }
	    if($idpedidocabeceraant){
	    	$sStringField = arrayClass::implode_key_value(',', $a_Fields);
		
			$sql = "UPDATE cr_pedidocabecera SET ".$sStringField." WHERE 1 AND idpedidocabecera='".$idpedidocabeceraant."';";
			
	        $result6 = mysql_db_query(Conexion::getNameDb(), $sql, $oLink);
			
	    }
       
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }
  
  
  function aperturaTotal($fecha,$idSucursal){
  	
  	
  	$con = Conexion::getConexion();
	$oLink = method_exists($con, 'getResource')?$con->getResource():$con;
	  	
      
	  	
	 $sql = " 
				UPDATE cr_pedidocabecera
				SET estado ='P'
				WHERE estado = 'C'
				AND idsucursal ='".$idSucursal."'
				and fechaoperacion = '".$fecha."'
				";
		   
	    
        
    $result1 = mysql_db_query(Conexion::getNameDb(), $sql, $oLink);
  	
  	
  }
  function cierreTotal($fecha,$idSucursal){
  	
  	
  	$con = Conexion::getConexion();
	$oLink = method_exists($con, 'getResource')?$con->getResource():$con;
	  	
      
	  	
	 $sql = " 
				UPDATE cr_pedidocabecera
				SET estado ='C'
				WHERE estado = 'P'
				AND idsucursal ='".$idSucursal."'
				and fechaoperacion = '".$fecha."'
				";
		   
	    
        
    $result1 = mysql_db_query(Conexion::getNameDb(), $sql, $oLink);
  	
  	
  }
}