<?php
/**
 * Clase DP para CrPlanillaConceptoPerDP
 *
 * @package    
 * @subpackage CrPlanillaConceptoPerDP
 * @author     Willy
 * @version    SVN:: CrPlanillaConceptoPerDP.class.php,v 1.1 2014-03-16 10:05:44 william.taype Exp $
 */
class CrPlanillaConceptoPerDP extends BaseCrPlanillaConceptoPerDP
{
	 
	public function openCP()
  {
  	 try
    {
      $con = Conexion::getConexion();
      $oLink = method_exists($con, 'getResource')?$con->getResource():$con;

      if($this->getPeriodo()){
      	
      	$periodo = $this->getPeriodo();
      	
      	$a_periodo = explode("-",$periodo);
      	$ano = $a_periodo[0];
      	$mes = $a_periodo[1];
      	
      	if($mes == 12){
      		$mes_sig = "01";
      		$ano_sig = $ano+1;
      	}else{
      		$mes_sig = $mes+1;
      		$ano_sig = $ano;
      	}
      	$periodo_sig = $ano_sig."-".str_pad($mes_sig,2,"0", STR_PAD_LEFT);
      	
      	$sql = "SELECT *
        		FROM  cr_planilla_periodo
        		WHERE IdEmpresa = '".$this->getIdEmpresa()."' and Periodo = '".$periodo_sig."'";
      	
		$result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
		$num_rows = mysql_num_rows($result);
		
		if($num_rows == 0){
			//throw new Exception('No se puede abrir un periodo si el periodo '.$periodo_sig.' esta cerrado.');	
		}else{
			while ($o_valor = mysql_fetch_object($result)) {
				if($o_valor->Estado == "C"){
					throw new Exception('No se puede abrir un periodo si el periodo '.$periodo_sig.' esta cerrado.');	
				}
			}
		}
      	
      	$sql = "SELECT *
        		FROM  pla_empresa_colaborador
        		WHERE IdEmpresa = '".$this->getIdEmpresa()."'";
      	
      	$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)) {
				$sql = "DELETE FROM `cr_adelanto_sueldo` WHERE idcolaborador = '".$o_valor->IdColaborador."' and `FechaAdelanto` LIKE '".$periodo_sig."%' and `UsuarioCreacion`='sys.planilla'";
				mysql_query($sql, $oLink);
			}
		}
      	
      	$sql = "DELETE  FROM `cr_planilla_concepto_per` WHERE `IdEmpresa` = '".$this->getIdEmpresa()."' and `Periodo` LIKE '".$this->getPeriodo()."';";
               
        $result = mysql_query($sql, $oLink);
        
        $sql = "DELETE  FROM `pla_empresa_colaborador_per` WHERE `IdEmpresa` = '".$this->getIdEmpresa()."' and `Periodo` LIKE '".$this->getPeriodo()."';";
               
        $result = mysql_query($sql, $oLink);
        
         
        $sql = "DELETE  FROM `cr_planilla` WHERE `IdEmpresa` = '".$this->getIdEmpresa()."' and `Periodo` LIKE '".$this->getPeriodo()."';";
               
        $result = mysql_query($sql, $oLink);  
        
        $sql = "DELETE  FROM `cr_colaborador_per` WHERE `IdEmpresa` = '".$this->getIdEmpresa()."' and `Periodo` LIKE '".$this->getPeriodo()."';";
               
        $result = mysql_query($sql, $oLink);
        
        $sql = "UPDATE `cr_planilla_periodo` SET `Estado` = 'A'  WHERE `IdEmpresa` = '".$this->getIdEmpresa()."' and `Periodo` LIKE '".$this->getPeriodo()."';";
               
        $result = mysql_query($sql, $oLink);
      }
      
    } catch ( Exception $o_Error )
    {
    	echo $o_Error->getMessage();
    	return false;
      //throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }
	public function saveCP()
  {
    try
    {
      $con = Conexion::getConexion();
     
      $oLink = method_exists($con, 'getResource')?$con->getResource():$con;

      if($this->getPeriodo()){
      	
      	$sql = "
        		INSERT INTO cr_sucursal_per 
        		(Periodo,IdSucursal,Descripcion,Ruc,Razonsocial,Direccion,Telefono,Eliminado,fechaInicioBalance,Estado,FechaModificacion,UsuarioModificacion,FechaCreacion,UsuarioCreacion,IdAdministrador,SaldoDisponibleIni,FechaSaldoIni,FechaEliminado,UsuarioEliminado)
        		SELECT '".$this->getPeriodo()."',IdSucursal,Descripcion,Ruc,Razonsocial,Direccion,Telefono,Eliminado,fechaInicioBalance,Estado,FechaModificacion,UsuarioModificacion,FechaCreacion,UsuarioCreacion,IdAdministrador,SaldoDisponibleIni,FechaSaldoIni,FechaEliminado,UsuarioEliminado
        		FROM  cr_sucursal";
               
        $result = mysql_query($sql, $oLink);
      	
        //Guarda backup de los colaboradores para el periodo
      	$sql = "
        		INSERT INTO cr_colaborador_per 
        		(IdEmpresa, Periodo,IdColaborador,IdPadre,IdTipoColaborador,dni,Nombres,ApellidoPaterno,ApellidoMaterno,FechaNacimiento,Sueldo,Direccion,Telefono,Celular,Email,Estado,Eliminado,Sexo,EstadoCivil,IdRol,Usuario,NumeroHijos,GradoInstruccion,FechaIngreso,UsuarioEliminado,FechaEliminado,FechaCreacion,UsuarioCreacion)
        		SELECT '".$this->getIdEmpresa()."','".$this->getPeriodo()."',IdColaborador,IdPadre,IdTipoColaborador,dni,Nombres,ApellidoPaterno,ApellidoMaterno,FechaNacimiento,Sueldo,Direccion,Telefono,Celular,Email,Estado,Eliminado,Sexo,EstadoCivil,IdRol,Usuario,NumeroHijos,GradoInstruccion,FechaIngreso,UsuarioEliminado,FechaEliminado,FechaCreacion,UsuarioCreacion
        		FROM  cr_colaborador
        		WHERE idcolaborador in (select IdColaborador from pla_empresa_colaborador where idempresa = '".$this->getIdEmpresa()."')";
        
       
        $result = mysql_query($sql, $oLink);
        
      	//Guarda backup de los conceptos para el periodo
        $sql = "
        		INSERT INTO cr_planilla_concepto_per 
        		(IdEmpresa,Periodo,IdConcepto,Codigo,Tipo,Ubicacion,VisualizarPlanilla,PosicionPlanilla,Descripcion,DescripcionPlanilla,DescripcionBoleta,Color,Estado,Formula,Editable,FechaCreacion,UsuarioCreacion)
        		SELECT '".$this->getIdEmpresa()."','".$this->getPeriodo()."',IdConcepto,Codigo,Tipo,Ubicacion,VisualizarPlanilla,PosicionPlanilla,Descripcion,DescripcionPlanilla,DescripcionBoleta,Color,Estado,Formula,Editable,FechaCreacion,UsuarioCreacion
        		FROM  cr_planilla_concepto";
        
        
        $result = mysql_query($sql, $oLink);
        
        //Guarda backup de los colaboradores para el periodo
      	$sql = "
        		INSERT INTO pla_empresa_colaborador_per 
        		(IdEmpresa, Periodo,IdColaborador,FechaCreacion,UsuarioCreacion)
        		SELECT IdEmpresa,'".$this->getPeriodo()."',IdColaborador,FechaCreacion,UsuarioCreacion
        		FROM  pla_empresa_colaborador
        		WHERE IdEmpresa = '".$this->getIdEmpresa()."'
        		";
        
       
        $result = mysql_query($sql, $oLink);
        
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows($oLink);
        }
        else
        {
          throw new Exception( mysql_error($oLink) );
        }
        
        //Cierra el devengue para ese Periodo
        $sql = "
        		UPDATE rh_pension_periodo
        		SET Estado = 'C'
        		where IdPeriodo = '".str_replace("-","",$this->getPeriodo())."'"
        		;
        
        
        $result = mysql_query($sql, $oLink);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows($oLink);
        }
        else
        {
          throw new Exception( mysql_error($oLink) );
        }
        
        $anio = substr($this->getPeriodo(),0,4);
        $mes = substr($this->getPeriodo(),5,2);
        if($mes == "12"){
        	$anio = $anio + 1;
        	$mes  = "01";
        }else{
        	$mes = $mes + 1;
        	$mes = str_pad($mes, 2, "0", STR_PAD_LEFT);
        }
        $idPeriodoS = $anio."-".$mes;
         //Cierra el devengue para ese Periodo
     		
        $sql = "
        		REPLACE INTO rh_pension_periodo (IdPeriodo)
        		values('".str_replace("-","",$idPeriodoS)."')"
        		;
        $result = mysql_query($sql, $oLink);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows($oLink);
        }
        else
        {
          throw new Exception( mysql_error($oLink) );
        }
        
        $sql = "
        		REPLACE INTO rh_pension_devengue 
        		(IdPeriodo,IdPension,ComisionFija,ComisionFlujo,ComisionMixtaFlujo,ComisionMixtaASaldo,Seguro,PorcentajeAporteObligatorio,RMA,FechaRegistro,UsuarioRegistro)
        		SELECT '".str_replace("-","",$idPeriodoS)."',IdPension,ComisionFija,ComisionFlujo,ComisionMixtaFlujo,ComisionMixtaASaldo,Seguro,PorcentajeAporteObligatorio,RMA,'".date('Y-m-d H:i:s')."',UsuarioRegistro
        		FROM  rh_pension_devengue
        		where IdPeriodo = '".str_replace("-","",$this->getPeriodo())."'
        		";
        
        
        
        $result = mysql_query($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;
  }
}