<?php 


class sigesp_apr_salctabco {

	function sigesp_apr_salctabco()
	{
	  require_once("class_folder/class_validacion.php");
	  require_once("../shared/class_folder/class_fecha.php");
	  require_once("../shared/class_folder/class_funciones.php");
	  require_once("../shared/class_folder/sigesp_c_generar_consecutivo.php");   		  		  
	  $this->ls_database_source = $_SESSION["ls_database"];
	  $this->ls_database_target = $_SESSION["ls_data_des"];
	  $this->io_mensajes        = new class_mensajes();		
	  $this->io_funciones       = new class_funciones();
	  $this->io_validacion      = new class_validacion();
	  $this->io_fecha           = new class_fecha();		 
	  $io_conect			    = new sigesp_include_covensol();
	  $io_conexion_origen       = $io_conect->uf_conectar();
	  $io_conexion_destino      = $io_conect->uf_conectar_otra_bd ($_SESSION["ls_hostname_destino"],$_SESSION["ls_login_destino"],$_SESSION["ls_password_destino"],$this->ls_database_target,$_SESSION["ls_gestor_destino"],$_SESSION["ls_port_destino"]); 
	  $this->io_sql_origen      = new class_sql_covensol($io_conexion_origen);
	  $this->io_sql_destino     = new class_sql_covensol($io_conexion_destino);
	  $this->io_keygen= new sigesp_c_generar_consecutivo();		
	  $ld_fecha                 = date("_d-m-Y");
	  $ls_nombrearchivo         = "resultado/".trim($_SESSION["la_empresa"]["sigemp"])."_saldos_banco_result_".$ld_fecha.".txt";
	  $this->lo_archivo         = @fopen("$ls_nombrearchivo","a+");
	  $this->empresa                = $_SESSION["la_empresa"];
	  $this->traspcoloc = 0;
	  
	  global $ruta;		
	  if($ruta==''){$ruta="../";}	
	  require_once($ruta."shared/class_folder/sigesp_conexiones.php");
	  $this->io_conexiones=new conexiones();
	}
	
	
	function uf_select_banco($as_codemp){
	 
	   $ls_sql    = " SELECT codban,nomban FROM scb_banco 
	                  WHERE codemp='".$as_codemp."'ORDER BY nomban ASC ";
	   $rs_data   = $this->io_sql_origen->select($ls_sql);
	   if($rs_data===false){			   	
		   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_select_banco ERROR-> ".$this->io_sql_origen->message);
		   return false;
	   }
	   
	   return $rs_data;         
	}
	
	function uf_select_cuentas($datos=array()){
	 
	  $ls_sql=" SELECT * FROM scb_ctabanco 
	            WHERE codemp='".$this->empresa["codemp"]."' 
				AND codban='".$datos['codban']."' 
				ORDER BY ctaban";
	   $rs_data   = $this->io_sql_origen->select($ls_sql);
	   if($rs_data===false){			   	
		   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_select_cuentas ERROR-> ".$this->io_sql_origen->message);
		   return false;
	   }
	   
	   return $rs_data;         
	}
		
	function uf_calcular_saldo_colocacion2($as_codemp){
	 
	   $ls_sql    = " SELECT codban,nomban FROM scb_banco 
	                  WHERE codemp='".$as_codemp."'ORDER BY nomban ASC ";
	   $rs_data   = $this->io_sql_origen->select($ls_sql);
	   if($rs_data===false){			   	
		   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_calcular_saldo_colocacion ERROR-> ".$this->io_sql_origen->message);
		   return false;
	   }
	   
	   return $rs_data;         
	}	
	
	function uf_verificar_apertura($datos=array()){
		
		$ls_sql="SELECT *
				   FROM scb_movbco
				  WHERE codemp='".$this->empresa["codemp"]."' 
					AND codban='".$datos['codban']."' 
					AND ctaban='".$datos['ctaban']."' 
					AND numdoc='".$datos['numdoc']."'";
		 $rs_data   = $this->io_sql_destino->select($ls_sql);
	     if($rs_data===false){			   	
			   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_verificar_apertura ERROR-> ".$this->io_sql_destino->message);
			   return false;
	     }
		 
		return $rs_data->RecordCount();
	}
	
	
	function uf_verificar_colocacion($datos=array()){
		
		$ls_sql = "SELECT numcol
					 FROM scb_colocacion
					WHERE ctaban='".$datos['ctaban']."' 
					  AND codban='".$datos['codban']."' 
					  AND codemp='".$this->empresa["codemp"]."' 
					  AND numcol='".$datos['numcol']."'";
		 $rs_data  = $this->io_sql_destino->select($ls_sql);
	     if($rs_data===false){			   	
			   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_verificar_colocacion ERROR-> ".$this->io_sql_destino->message);
			   return false;
	     }
		 
		 return $rs_data->RecordCount();
	
	}
		
	function uf_verificar_cuenta($datos=array()){
		
		$ls_sql=" SELECT ctaban FROM scb_ctabanco 
		          WHERE codemp='".$this->empresa["codemp"]."'  
				  AND codban='".$datos['codban']."'  
				  AND ctaban='".$datos['ctaban']."'";
		$rs_data  = $this->io_sql_destino->select($ls_sql);
	     if($rs_data===false){			   	
			   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_verificar_cuenta ERROR-> ".$this->io_sql_destino->message);
			   return false;
	     }
		
		 return $rs_data->RecordCount();
	}
	
	function uf_verificar_documento($datos=array()){
			
		$ls_sql="SELECT numdoc 
				   FROM scb_movbco 
				  WHERE codemp='".$datos["codemp"]."' 
					AND codban='".$datos['codban']."' 
					AND ctaban='".$datos['ctaban']."' 
					AND numdoc='".$datos['numdoc']."' 
					AND codope='".$datos['codope']."'";
		 $rs_data = $this->io_sql_destino->select($ls_sql);
	     if($rs_data===false){			   	
			   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_verificar_cuenta ERROR-> ".$this->io_sql_destino->message);			  
			   return false;
	     }
		
		 return $rs_data->RecordCount();
	}
	
	function uf_verificar_movimiento_colocacion($datos=array()){
		 
		 $ls_sql="SELECT numcol 
			   	    FROM scb_movcol
				   WHERE codemp='".$this->empresa["codemp"]."' 
					 AND codban='".$datos['codban']."' 
					 AND ctaban='".$datos['ctaban']."' 
					 AND numcol='".$datos['numcol']."' 
					 AND numdoc='".$datos['numdoc']."' 
					 AND codope='".$datos['codope']."'
					 AND estcol='".$datos['estcol']."'";
					 	 
		 $rs_data = $this->io_sql_destino->select($ls_sql);
	     if($rs_data===false){			   	
			   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_verificar_movimiento_colocacion ERROR-> ".$this->io_sql_destino->message);
			   return false;
	     }
		
		 return $rs_data->RecordCount();
	}

	function uf_calcular_saldo_colocacion($datos=array()){
	
			
			$ls_sql="SELECT 
						(
							SELECT COALESCE(SUM(monmovcol),0)
							   FROM scb_movcol
							  WHERE codemp='".$this->empresa["codemp"]."' 
								AND codban='".$datos['codban']."' 
								AND numcol='".$datos['numcol']."' 
								AND (codope='CH' OR codope='ND' OR codope='RE')	
								AND estcol<>'A'
						)  AS creditostmp,
						
						(
							SELECT COALESCE(SUM(monmovcol),0)
							   FROM scb_movcol
							  WHERE codemp='".$this->empresa["codemp"]."' 
								AND codban='".$datos['codban']."' 
								AND numcol='".$datos['numcol']."' 
								AND (codope='CH' OR codope='ND' OR codope='RE')	
								AND estcol='A'
						)  AS creditos_negativostmp,
						
						(
							SELECT COALESCE(SUM(monmovcol),0)
							   FROM scb_movcol
							  WHERE codemp='".$this->empresa["codemp"]."' 
								AND codban='".$datos['codban']."' 
								AND numcol='".$datos['numcol']."' 
								AND (codope='DP' OR codope='NC') 
								AND estcol<>'A'
						)  AS debitostmp,
						
						(
							SELECT COALESCE(SUM(monmovcol),0)
							   FROM scb_movcol
							  WHERE codemp='".$this->empresa["codemp"]."' 
								AND codban='".$datos['codban']."' 
								AND numcol='".$datos['numcol']."' 
								AND (codope='DP' OR codope='NC') 
								AND estcol='A'
						)  AS debitos_negativostmp
						
					";
	
			 $rs_data = $this->io_sql_origen->select($ls_sql);
			 if($rs_data===false){			   	
				   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_calcular_saldo_colocacion ERROR-> ".$this->io_sql_origen->message);
				   return false;
			 }	 
			 
			 $ldec_debitos  = $rs_data->fields['debitostmp']  - $rs_data->fields['debitos_negativostmp'];
			 $ldec_creditos = $rs_data->fields['creditostmp']  - $rs_data->fields['creditos_negativostmp'];
			 $ldec_saldo    = $ldec_creditos    - $ldec_debitos; 
			 $ldec_saldo = $ldec_debitos - $ldec_creditos;			 
			
			 return $ldec_saldo;
	
	}
	
	function uf_calcular_saldo_documento($datos=array()){		
		
		$ls_sql="SELECT codope AS operacion, (monto-monret) AS monto, estmov AS estado
				   FROM scb_movbco
				  WHERE codemp='".$this->empresa["codemp"]."' 
					AND codban='".$datos['codban']."' 
					AND ctaban='".$datos['ctaban']."'";
		
		 $rs_data = $this->io_sql_origen->select($ls_sql);
		 if($rs_data===false){			   	
			   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_calcular_saldo_documento ERROR-> ".$this->io_sql_origen->message);
			   return false;
		 }	 
		
		$ldec_debitostmp=0;
		$ldec_creditostmp=0;
		$ldec_debitos_negativostmp=0;
		$ldec_creditos_negativostmp=0;	
		
		if ($rs_data->RecordCount()){
			 foreach($rs_data as $row){
				$ls_operacion = $row["operacion"];
				$ls_estado    = $row["estado"];
				$ldec_monto   = $row["monto"];
				if((($ls_operacion=="CH") || ($ls_operacion=="ND") || ($ls_operacion=="RE")) && ($ls_estado!="A"))
				  {	
					$ldec_creditostmp+=$ldec_monto;
				  }	
				elseif((($ls_operacion=="CH") || ($ls_operacion=="ND") || ($ls_operacion=="RE")) && ($ls_estado=="A"))
				  {	
					$ldec_creditos_negativostmp+=$ldec_monto;
				  } 	
				elseif((($ls_operacion=="DP") || ($ls_operacion=="NC")) && ($ls_estado!="A"))
				  {	
					$ldec_debitostmp+=$ldec_monto;
				  }
				elseif((($ls_operacion=="DP") || ($ls_operacion=="NC")) && ($ls_estado=="A"))
				  {
					$ldec_debitos_negativostmp+=$ldec_monto;
				  }				
			  }//fin foreach				 
		  }//fin if
	
		  $ldec_debitos  = $ldec_debitostmp  - $ldec_debitos_negativostmp;
		  $ldec_creditos = $ldec_creditostmp - $ldec_creditos_negativostmp;
		  $ldec_saldo    = number_format($ldec_debitos,2,".","") - number_format($ldec_creditos,2,".","");				
		  return $ldec_saldo;
	
	}
	
	function obtener_mov_transito($datos=array()){
		
		$criterio='';
		if($datos['fecmov_d'] or $datos['fecmov_h']){
			if($datos['fecmov_h'] == ''){$datos['fecmov_h'] = $datos['fecmov_d'];}
			$criterio = $criterio." AND fecmov BETWEEN '".$this->io_conexiones->formatea_fecha_bd($datos['fecmov_d'])."' 
			                        AND '".$this->io_conexiones->formatea_fecha_bd($datos['fecmov_h'])."'  ";
		}
		
		$ls_sql=" SELECT *
				   FROM scb_movbco 
				  WHERE codemp='".$this->empresa["codemp"]."' 
					AND codban='".$datos['codban']."' 
					AND ctaban='".$datos['ctaban']."' 
					AND estcon=0 
					AND (estmov='C' OR estmov='L')
					".$criterio."
				  ORDER BY codban,ctaban,numdoc ";
		 $rs_data   = $this->io_sql_origen->select($ls_sql);
	     if($rs_data===false){			   	
			   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->obtener_cheques_transito ERROR-> ".$this->io_sql_origen->message);
			   return false;
	     }
		 
		return $rs_data;
	}
	
	function obtener_mov_transito_resumen($datos=array()){
	
		$ls_sql=" SELECT codban,ctaban,codope,SUM(monto-monret) AS total, estmov 
				   FROM scb_movbco 
				  WHERE codemp='".$this->empresa["codemp"]."' 
					AND codban='".$datos['codban']."' 
					AND ctaban='".$datos['ctaban']."'
					AND estcon=0 
					AND (estmov='C' OR estmov='L')
				  GROUP by codban,ctaban,codope,estmov 
				  ORDER BY codban,ctaban ";
		 $rs_data   = $this->io_sql_origen->select($ls_sql);
	     if($rs_data===false){			   	
			   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->obtener_cheques_transito ERROR-> ".$this->io_sql_origen->message);
			   return false;
	     }
		 
		return $rs_data;
	}
	
	
	function obtener_colocaciones($datos=array()){
		
		$ls_sql=" SELECT *
				  FROM scb_colocacion 
				  WHERE codemp='".$this->empresa["codemp"]."'";
				  
		 $rs_data   = $this->io_sql_origen->select($ls_sql);
	     if($rs_data===false){			   	
			   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->obtener_colocaciones ERROR-> ".$this->io_sql_origen->message);
			   return false;
	     }
		 
		return $rs_data;
	}	
	
	function estatus_movimiento($ls_estmov){
	
			switch($ls_estmov){
			  case 'C':
				$descestmov = 'Contabilizado';//Haber				   
			  break;
			  case 'N':
				$descestmov = 'No Contabilizado';//Haber				   
			  break;
			  case 'L':
				$descestmov = 'No Contabilizable';//Haber				   
			  break;
			  case 'A':
				$descestmov = 'Anulado';//Debe				    
			  break;					
			  case 'O':
				$descestmov = 'Original';//Haber				   
			  break;										
		   }
	   
	   	   return $descestmov;
	
	}
	
	function tipo_operacion($ls_estmov){
	
			switch($ls_estmov){
			  case 'ND':
				$descestmov = 'Nota de Débito';   
			  break;
			  case 'NC':
				$descestmov = 'Nota de Crédito';			   
			  break;
			  case 'DP':
				$descestmov = 'Depósito';			   
			  break;
			  case 'RE':
				$descestmov = 'Retiro';			    
			  break;					
			  case 'CH':
				$descestmov = 'Cheque';		   
			  break;										
		   }
	   
	   	   return $descestmov;
	
	}
	
	function tipo_estbpd($estbpd){
			
			 //Carta Orden :Pagar Solicitudes Programadas generando directamente una afectación de tipo de pago.
             //             Nota de Débito para pagar Porveedores o Beneficiarios.

			 //Pago Directo: Pagos que no tienen compromisos previos. Se cumplira simultaneamente con los tres momentos del Gasto
             //              Compromiso, Causa y Pago
			
			switch($estbpd){
			  case 'D':
				$descestmov = 'Pago Directo';   
			  break;
			  case 'P':
				$descestmov = 'Documento Proveedor';//Cuando Tipo de Destino es Proveedor			   
			  break;
			  case 'B':
				$descestmov = 'Documento Beneficiario';	//Cuando Tipo de Destino es Beneficiario		   
			  break;
			  case 'M':
				$descestmov = 'Movimiento de Bco';			    
			  break;					
			  case 'T':
				$descestmov = 'Carta Orden';		   
			  break;										
		   }
	   
	   	   return $descestmov;
	
	}
	
	function uf_generar_numero_nuevo($datos=array()){
	
	              $ls_sql = "SELECT substr(numconint,5) AS numconint
				             FROM scb_movbco 
							 WHERE codemp='".$this->empresa["codemp"]."' 
							 AND (TRIM(numconint)!='' AND TRIM(numconint) IS NOT NULL) 
							 ORDER BY 1 DESC LIMIT 1";
				  
				  $rs_data = $this->io_sql_destino->select($ls_sql);
				  if($rs_data===false){			   	
					   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_generar_numero_nuevo ERROR-> ".$this->io_sql_destino->message);
					   echo "CLASE->".get_class($this)." MÉTODO->insertar_movbco ERROR-> ".$this->io_sql_destino->message;
					   return false;
				  }
				  
				  $numero = $rs_data->fields['numconint'];				  
				  $numero = (integer)$numero;
				  $numero ++;
				  $numero = str_pad($numero,15,"0",STR_PAD_LEFT);				  
				  return $numero;
	}
	
	function insertar_movbco($datos=array()){
	
		$datos['emichefec'] = ($datos['emichefec'])?$datos['emichefec']:'1900-01-01';	
		$datos['fecordpagsig'] = ($datos['fecordpagsig'])?$datos['fecordpagsig']:'1900-01-01';	
		$datos['fechaconta'] = ($datos['fechaconta'])?$datos['fechaconta']:'1900-01-01';	
		$datos['fechaanula'] = ($datos['fechaanula'])?$datos['fechaanula']:'1900-01-01';	
		$datos['aliidb'] = ($datos['aliidb'])?$datos['aliidb']:0;
		$datos['monto'] = ($datos['monto'])?$datos['monto']:0;
		$datos['monobjret'] = ($datos['monobjret'])?$datos['monobjret']:0;
		$datos['monret'] = ($datos['monret'])?$datos['monret']:0;
		$datos['monamo'] = ($datos['monamo'])?$datos['monamo']:0;
		
		$datos['numconint'] = $this->uf_generar_numero_nuevo($datos);
					
		$ls_sql = "INSERT INTO scb_movbco (codemp, codban, ctaban, numdoc, 
										   codope, estmov, cod_pro, ced_bene, tipo_destino, 
										   codconmov, fecmov, conmov, nomproben, 
										   monto, estbpd,estcon, estcobing, esttra, chevau, 
										   estimpche, monobjret, monret, procede, 
										   comprobante, fecha, id_mco, emicheproc, 
										   emicheced, emichenom, emichefec, estmovint, codusu, 
										   codopeidb, aliidb, feccon, estreglib, 
										   numcarord, numpolcon, coduniadmsig, codbansig, 
										   fecordpagsig, tipdocressig, numdocressig, estmodordpag, 
										   codfuefin, forpagsig, medpagsig, codestprosig, 
										   nrocontrolop, fechaconta, fechaanula, conanu, 
										   estant, docant, monamo, numordpagmin, codtipfon, estserext, 
										   estmovcob, numconint, estapribs, estxmlibs, codper, codperi, 
										   tranoreglib 
											) 
					VALUES ('".$this->empresa["codemp"]."','".$datos['codban']."','".$datos['ctaban']."','".$datos['numdoc']."','".
							   $datos['codope']."','".$datos['estmov']."','".$datos['cod_pro']."','".$datos['ced_bene']."','".$datos['tipo_destino']."','".
							   $datos['codconmov']."','".$this->fecinipernuevo."','".$datos['conmov']."','".$datos['nomproben']."','".
							   $datos['monto']."','".$datos['estbpd']."','".$datos['estcon']."','".$datos['estcobing']."','".$datos['esttra']."','".$datos['chevau']."','".
							   $datos['estimpche']."','".$datos['monobjret']."','".$datos['monret']."','".$datos['procede']."','".
							   $datos['comprobante']."','".$this->fecinipernuevo."','".$datos['id_mco']."','".$datos['emicheproc']."','".
							   $datos['emicheced']."','".$datos['emichenom']."','".$datos['emichefec']."','".$datos['estmovint']."','".$datos['codusu']."','".
							   $datos['codopeidb']."','".$datos['aliidb']."','".$datos['feccon']."','".$datos['estreglib']."','".
							   $datos['numcarord']."','".$datos['numpolcon']."','".$datos['coduniadmsig']."','".$datos['codbansig']."','".
							   $datos['fecordpagsig']."','".$datos['tipdocressig']."','".$datos['numdocressig']."','".$datos['estmodordpag']."','".
							   $datos['codfuefin']."','".$datos['forpagsig']."','".$datos['medpagsig']."','".$datos['codestprosig']."','".
							   $datos['nrocontrolop']."','".$datos['fechaconta']."','".$datos['fechaanula']."','".$datos['conanu']."','".															   
							   $datos['estant']."','".
							   $datos['docant']."','".
							   $datos['monamo']."','".
							   $datos['numordpagmin']."','".
							   $datos['codtipfon']."','".
							   $datos['estserext']."','".
							   $datos['estmovcob']."','".
							   $datos['numconint']."','".
							   $datos['estapribs']."','".									  
							   $datos['estxmlibs']."','".
							   $datos['codper']."','".
							   $datos['codperi']."','".
							   $datos['tranoreglib']."'".")";
							
				 $rs_data = $this->io_sql_destino->select($ls_sql);
				 if($rs_data===false){			   	
					   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->insertar_movbco ERROR-> ".$this->io_sql_destino->message);
					   echo "CLASE->".get_class($this)." MÉTODO->insertar_movbco ERROR-> ".$this->io_sql_destino->message;
					   return false;
				 }
				 
				 return true;

	}
	
	
	function insertar_movinicapr($datos=array()){
			
			$datos['numconint'] = $this->uf_generar_numero_nuevo($datos);
			
			$ls_sql="INSERT INTO scb_movbco (codemp,numdoc,codban,ctaban,codope,fecmov,
			                                 conmov,codconmov,tipo_destino,estmov,
											 monto,estbpd,estcon,estimpche,monret,cod_pro,
							                 ced_bene,chevau,feccon,monobjret,nomproben,numconint,procede,emicheproc)
							VALUES ('".$this->empresa["codemp"]."','".
							           $datos['numdoc']."','".
									   $datos['codban']."','".
									   $datos['ctaban']."','".
									   $datos['codope']."','".
									   $datos['fecmov']."',
							           'SALDO INICIAL DE LA CUENTA',
									   '---',
									   'B',
									   'L','".
									   $datos['monto']."',
									   'M',
									   0,
									   1,
							           0.0000,
									   '----------',
									   '----------',
									   '',
									   '1900-01-01',".
							           $datos['monto'].",
									   '','".
							           $datos['numconint'].
							           "',
									   'SCBBCH',
									   '0')";
				
		
			 $rs_data = $this->io_sql_destino->select($ls_sql);
			 if($rs_data===false){			   	
				   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->insertar_movbco ERROR-> ".$this->io_sql_destino->message);
				   echo "CLASE->".get_class($this)." MÉTODO->insertar_movbco ERROR-> ".$this->io_sql_destino->message;
				   return false;
			 }
			 
			 return true;
	
	}
	
	function insertar_colocacion($datos=array()){
			
			$datos['estcob'] = ($datos['estcob'])?$datos['estcob']:0;
			$datos['esttranf'] = ($datos['esttranf'])?$datos['esttranf']:0;
			$datos['estvalmon'] = ($datos['estvalmon'])?$datos['estvalmon']:0;
			
			$ls_sql=" INSERT INTO scb_movcol	(  codemp, codban, ctaban, numcol, 
			                                       numdoc, codope, estcol, fecmovcol, 
												   monmovcol, tasmovcol, conmov, estcob, 
												   esttranf, estvalmon, codusu )
					  VALUES ( '".$datos['codemp']."','".$datos['codban']."','".$datos['ctaban']."','".$datos['numcol']."',
							   '".$datos['numdoc']."','".$datos['codope']."','".$datos['estcol']."','".$datos['fecmovcol']."',
							   '".$datos['monmovcol']."','".$datos['tasmovcol']."','".$datos['conmov']."',".$datos['estcob'].",
							    ".$datos['esttranf'].",".$datos['estvalmon'].",'".$datos['codusu']."')";
				
		
			 $rs_data = $this->io_sql_destino->select($ls_sql);
			 if($rs_data===false){			   	
				   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->insertar_movbco ERROR-> ".$this->io_sql_destino->message);
				   return false;
			 }
			 
			 return true;
	
	}
	
	function incrementar_periodo($peri){
		
		$periodo = explode('-',$peri);
		$periodo[0] = $periodo[0] + 1;
		$periodoapr = implode('-',$periodo);		
		return $periodoapr;

	}
	
	function decrementar_periodo($peri){
		
		$periodo = explode('-',$peri);
		$periodo[0] = $periodo[0] + 1;
		$periodoapr = implode('-',$periodo);		
		return $periodoapr;

	}
	
	function extraer_ano_periodo(){
		$periodo = explode('-',$this->empresa["periodo"]);
		return $periodo[0];	
	}
	
	function uf_trasladar_movimientos($datos=array()){

			if(!$datos['codban']){			
				$this->io_mensajes->message("Falta el Código del Banco");
				return false;
			}
			
			if(!$datos['ctaban']){			
				$this->io_mensajes->message("Falta el número de Cuenta de Banco");
				return false;
			}			
			
			$existe = $this->uf_verificar_cuenta($datos);
			if(!$existe){				
				$this->io_mensajes->message("La cuenta No. ".$datos['ctaban']." no existe en la Base de Datos Destino");
				return false;	
			}
	    	
			$this->fecinipernuevo = $datos['fecinipernuevo'];
			$this->fecfinperant = $datos['fecfinperant'];
			$this->PeriodoAnterior = substr($datos['fecfinperant'],3,2).substr($datos['fecfinperant'],6,4);
						
			$this->io_sql_destino->begin_transaction();
			
			$resp = $this->trasladar_movimientos_banco($datos);
			if($resp===false){$this->io_sql_destino->rollback(); return false;}			
			
			//$resp = $this->trasladar_colocaciones($datos);
			//if($resp===false){$this->io_sql_destino->rollback(); return false;}
			
			$this->io_sql_destino->commit();
			return true;
	}
	
	function uf_calcular_saldolibro($as_codban,$as_ctaban,$ad_fecha)
	{
		$ldec_monto_haber=0;$ldec_monto_debe=0;$ldec_saldo=0;

		$ls_codemp = $this->empresa["codemp"];
		$ld_fecha = $this->io_funciones->uf_convertirdatetobd($ad_fecha);

		$ls_sql="SELECT monhab,mondeb,(mondeb - monhab) As saldo
				 FROM ( SELECT COALESCE( SUM(monto - monret),0) As monhab
					   FROM  scb_movbco
					   WHERE codban='".$as_codban."' AND ctaban='".$as_ctaban."' AND
					   (codope='RE' OR codope='ND' OR codope='CH') AND  estmov<>'A' AND estmov<>'O' AND (estreglib<>'A' or (estreglib='A' AND estcon=1)) AND codemp='".$this->empresa["codemp"]."' AND fecmov<='".$ld_fecha."') D,
					 ( SELECT COALESCE( SUM(monto - monret),0) As mondeb
					   FROM scb_movbco
					   WHERE codban='".$as_codban."' AND ctaban='".$as_ctaban."' AND
					   (codope='NC' OR codope='DP') AND estmov<>'A' AND estmov<>'O' AND (estreglib<>'A' or (estreglib='A' AND estcon=1)) AND codemp='".$this->empresa["codemp"]."' AND fecmov<='".$ld_fecha."') H ";

		//echo $ls_sql.'<br>';		
		$rs_saldos   = $this->io_sql_origen->select($ls_sql);
		 if($rs_saldos===false){			   	
			   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_calcular_saldolibro ERROR-> ".$this->io_sql_origen->message);
			   return false;
		 }
		
		$ldec_mondeb=$rs_saldos->fields["mondeb"];
		$ldec_monhab=$rs_saldos->fields["monhab"];
		$ldec_saldo=$rs_saldos->fields["saldo"];
		if(is_null($ldec_saldo)){$ldec_saldo=0;}
		if( (is_null($ldec_monto_debe) )&&($ldec_monto_haber>0) ){$ldec_saldo=$ldec_monto_haber;}
		if( (is_null($ldec_monto_haber))&&($ldec_monto_debe>0) ){$ldec_saldo=$ldec_monto_debe;}
		
		return $ldec_saldo;

	
	}
	
	function uf_resumen_saldos($as_codban,$as_ctaban,$ad_fecha)
	{

		$ls_codemp = $this->empresa["codemp"];
		$ld_fecha = $this->io_funciones->uf_convertirdatetobd($ad_fecha);
		
		$ls_sql="
				SELECT scb_banco.codban,scb_banco.nomban,scb_ctabanco.ctaban,scb_ctabanco.dencta,scb_conciliacion.mesano,
					   scb_conciliacion.salseglib,scb_conciliacion.salsegbco,scb_conciliacion.estcon
				FROM scb_banco, scb_ctabanco, scb_conciliacion
				WHERE scb_conciliacion.estcon=1
				AND scb_banco.codemp=scb_ctabanco.codemp 
				AND scb_banco.codban=scb_ctabanco.codban				
				AND scb_banco.codemp=scb_conciliacion.codemp
				AND scb_banco.codban=scb_conciliacion.codban 
				AND scb_ctabanco.codemp=scb_conciliacion.codemp
				AND scb_ctabanco.codban=scb_conciliacion.codban
				AND scb_ctabanco.ctaban=scb_conciliacion.ctaban
				AND scb_banco.codban='".$as_codban."'
				AND scb_ctabanco.ctaban='".$as_ctaban."'
				AND mesano='".$this->PeriodoAnterior."'
		";

		//echo $ls_sql.'<br>';		
		$rs_saldos   = $this->io_sql_origen->select($ls_sql);
		 if($rs_saldos===false){			   	
			   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_calcular_saldolibro ERROR-> ".$this->io_sql_origen->message);
			   return false;
		 }
		
		return $rs_saldos->fields["salsegbco"];

	
	}
	
	
	function trasladar_movimientos_banco($datos=array()){			
			
			// SI LA OPCIÓN NO ESTA TILDADA RETORNA
			if(!$datos['mov_transito']){return true;}
			
			//MONTO ACUMULADO DE LOS MOVIMIENTOS PARA GENERAR LA NOTA DE APERTURA
			$movres = $this->obtener_mov_transito_resumen($datos);
			if($movres===false){return false;}			
			if(!$movres->RecordCount()){
				$this->io_mensajes->message("No hay movimientos de Banco en la base de datos origen");
			}
						
			$ldec_debitostmp=0;
			$ldec_creditostmp=0;
			$ldec_debitos_negativostmp=0;
			$ldec_creditos_negativostmp=0;
			
			foreach($movres as $mov){
					
				 $ls_operacion = $mov["codope"];
				 $ls_estado    = $mov["estmov"];
				 $ldec_monto   = $mov["total"];
				 
				 if((($ls_operacion=="CH") || ($ls_operacion=="ND") || ($ls_operacion=="RE")) && ($ls_estado!="A"))
				 {	
					$ldec_creditostmp+=$ldec_monto;
				 }	
				 elseif((($ls_operacion=="CH") || ($ls_operacion=="ND") || ($ls_operacion=="RE")) && ($ls_estado=="A"))
				 {	
					$ldec_creditos_negativostmp+=$ldec_monto;
				 }	
				 elseif((($ls_operacion=="DP") || ($ls_operacion=="NC")) && ($ls_estado!="A"))
				 {	
					$ldec_debitostmp+=$ldec_monto;
				 }
				 elseif((($ls_operacion=="DP") || ($ls_operacion=="NC")) && ($ls_estado=="A"))
				 {
					$ldec_debitos_negativostmp+=$ldec_monto;
				 }
			
			}
			
			
			$ldec_debitos  = $ldec_debitostmp  - $ldec_debitos_negativostmp;
			$ldec_creditos = $ldec_creditostmp - $ldec_creditos_negativostmp;
			$saldomov = $ldec_creditos - $ldec_debitos;
			
			$datos['numdoc'] = "0000000APERTURA";						
			$existe = $this->uf_verificar_apertura($datos);			
			if($existe===false){return false;}
			
			//CREAMOS LA NOTA DE CREDITO O DEBITO DE APERTURA
			if(!$existe){			         
				$datres = $datos;	
				//BUSCAMOS EL SALDO EN LIBRO DE BANCO
				$saldobco = $this->uf_resumen_saldos(trim($datos['codban']),trim($datos['ctaban']),trim($datos['fecfinperant']));
				if($saldobco===false){return false;}
				//DEPENDIENDO DEL SIGNO CREAMOS UNA NOTA DE CRÉDITO O DEBITO
				if($saldobco>=0){$datres['codope']="NC";}
				else{$datres['codope']="ND";}	
				//EL MONTO DE APERTURA ES LA SUMA DE LOS MOVIMIENTOS EN TRANSITO MAS EL SALDO EN BANCO
				//$saldobco=$saldomov+$saldobco;				
				$datos['numdoc'] = "0000000APERTURA";
				$datres['monto'] = abs($saldobco);				
				$datres['numconint'] = "0000000APERTURA";
				//echo $datres['monto']; exit();
				$datres['fecmov'] = $this->io_conexiones->formatea_fecha_bd($datos['fecinipernuevo']);		
				$resp = $this->insertar_movinicapr($datres);			
				if($resp===false){return false;}
			}
						
			// TRASPASAMOS LOS MOVIMIENTOS CONTABILIZADOS (C) Y NO CONTABILIZABLES (L)
			$movtrans = $this->obtener_mov_transito($datos);			
			$numconint = 1;
			foreach($movtrans as $fila){					
				$existe = $this->uf_verificar_documento($fila);
				if($existe===false){return false;}
				if(!$existe){
					$fila['numconint'] = 'APRTRAN'.str_pad($numconint,8,'0',STR_PAD_LEFT);						
					$fila['conmov']  = $fila['conmov'].". Fecha original del Documento:".$this->io_conexiones->formatea_fecha_normal($fila['fecmov']);
					$fila['estmov']= 'L'; //MOVIMIENTO NO CONTABILIZABLE (SIN AFECTACIÓN CONTABLE)
					$fila['estbpd']= 'D'; //PAGO DIRECTO
					$resp = $this->insertar_movbco($fila);					
					if($resp===false){echo 'error<br>'; return false;}
					$numconint++;
				}			
			}// FIN DEL FOREACH
			
			return true;	
	}
	
	
	function trasladar_colocaciones($datos=array()){
	
			$coloc = $this->obtener_colocaciones($datos);
			if($coloc===false){return false;}
			
			foreach($coloc as $fila){					
				$existe = $this->uf_verificar_colocacion($fila);
				if(!$existe){
				        $this->io_mensajes->message("No existe la colocación: ".$datos['numcol']);
						return false;
				}			
				if($existe){
									
					$fila['monmovcol']=$this->uf_calcular_saldo_colocacion($fila);	
					if(!$fila['monmovcol']){continue;}				
					if($fila['monmovcol']>=0){$fila['codope']="NC";}
				    else{$fila['codope']="ND";}
					
					$fila['numdoc']='0000000APERTURA';					
					$fila['codope']='NC';
					$fila['estcol']='L';
					$fila['tasmovcol']=0;
					$fila['conmov']='SALDO INICIAL DE LA COLOCACION';
					$fila['estcob']=0;
					$fila['esttranf']=0;
					$fila['fecmovcol']=$this->io_conexiones->formatea_fecha_bd($datos['fecfinperant']);
					
					$resp = $this->insertar_colocacion($fila);
					if($resp===false){return false;}
					$numconint++;
				}			
			}// FIN DEL FOREACH
			
			return true;
	}
	
	

}

?>