function uf_cargar_datastore_plan_cuentas($ads_cuentas)
	{
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//	     Function: uf_cargar_datastore_plan_cuentas
		//		   Access: public 
		//      Arguments: ads_cuentas // Datastored de cuentas
		//	  Description: inserta la información del saldo de la cuenta correspondiente.
		//	      Returns: booleano lb_valido
		//	   Creado Por: Ing. Wilmer Briceño
		// Modificado Por: Ing. Yesenia Moreno								Fecha Última Modificación : 31/05/2007
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$li_fila=0;
		$i=0;
		$lb_valido=true;
		$ls_sc_cuentas="";
		$ls_denominacion="";
		$ls_status="";
		$ls_cadena="";
		$ls_sql="SELECT sc_cuenta,denominacion,status ". 	
				"  FROM scg_Cuentas " .
				" WHERE codemp='".$this->dat_emp["codemp"]."'".
				" ORDER BY sc_cuenta ";
		$rs_data=$this->io_sql->select($ls_sql);
		if($rs_data===false)
		{
			$lb_valido=false;
			$this->is_msg_error="CLASE->sigesp_int_scg MÉTODO->uf_cargar_datastore_plan_cuentas ERROR->".$this->io_function->uf_convertirmsg($this->io_sql->message);
		}
		else
		{
			$ads_cuentas=new class_datastore();
			while($row=$this->io_sql->fetch_row($rs_data)) 
			{
				$i=$i+1;
				$ls_sc_cuentas=trim($row["sc_cuenta"]);
				$ads_cuentas->insertRow("sc_cuenta",$ls_sc_cuentas);
				$ls_denominacion=trim($row["denominacion"]);
				$ads_cuentas->insertRow("denominacion",$ls_denominacion);
				$ls_status=trim($row["status"]);
				$ads_cuentas->insertRow("status",$ls_status);
			} //fin del while
		}
		$this->io_sql->free_result($rs_data);						
		return $lb_valido;
	} // end function uf_cargar_datastore_plan_cuentas
   function  uf_scg_reporte_balance_general($adt_feclimit,$ai_nivel) 
   {				 
	 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	 //	      Function :	uf_scg_reporte_balance_general
	 //         Access :	private
	 //     Argumentos :    $adt_feclimit  // fecha  limite
     //              	    $ai_nivel  // nivel de la cuenta
     //	       Returns :	Retorna true o false si se realizo la consulta para el reporte
	 //	   Description :	Reporte que genera salida del Balance General
	 //     Creado por :    Ing. Yozelin Barragan.
	 // Fecha Creaci� :    03/05/2006          Fecha ltima Modificacion : 08/05/06     Hora :
  	 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	  $lb_valido = true;
	  $ls_codemp = $this->dts_empresa["codemp"];
	  $this->dts_egresos->resetds("sc_cuenta");
	  $this->dts_reporte->resetds("sc_cuenta");
	  $dts_Balance2=new class_datastore();
      $li_activo = $this->dts_empresa["activo"];
      $li_pasivo = $this->dts_empresa["pasivo"];
      $li_resultado = $this->dts_empresa["resultado"];
      $li_capital = $this->dts_empresa["capital"];
      $li_orden_d = $this->dts_empresa["orden_d"];
      $li_orden_h = $this->dts_empresa["orden_h"];
	  $li_ingreso = $this->dts_empresa["ingreso"];
      $li_gasto = $this->dts_empresa["gasto"];
      $li_c_resultad = $this->dts_empresa["c_resultad"];
	  
	  $ls_sql=" SELECT SC.sc_cuenta,SC.denominacion,SC.status,SC.nivel as rnivel, ".
              "        coalesce(curSaldo.T_Debe,0) as total_debe, ".
              "        coalesce(curSaldo.T_Haber,0) as total_haber,0 as nivel ".
              " FROM scg_cuentas SC LEFT OUTER JOIN (SELECT codemp,sc_cuenta, coalesce(sum(debe_mes),0)as T_Debe, ".
			  "                                             coalesce(sum(haber_mes),0) as T_Haber ".
              "                                      FROM   scg_saldos ".
              "                                      WHERE  codemp='".$ls_codemp."' AND fecsal<='".$adt_feclimit."' ".
              "                                      GROUP BY sc_cuenta) curSaldo ".
              " ON SC.sc_cuenta=curSaldo.sc_cuenta ".
              " WHERE SC.codemp=curSaldo.codemp AND  curSaldo.codemp='".$ls_codemp."' AND ".
			  "       (SC.sc_cuenta like '".$li_activo."%' OR SC.sc_cuenta like '".$li_pasivo."%' OR ".
			  "        SC.sc_cuenta like '".$li_resultado."%' OR  SC.sc_cuenta like '".$li_capital."%' OR ".
			  "        SC.sc_cuenta like '".$li_orden_d."%' OR SC.sc_cuenta like '".$li_orden_h."%') ".
              " ORDER BY  SC.sc_cuenta ";
	 $rs_data=$this->SQL->select($ls_sql);
	 if($rs_data===false)
	 {// error interno sql
		$this->is_msg_error="Error en consulta metodo uf_scg_reporte_balance_general ".$this->fun->uf_convertirmsg($this->SQL->message);
		$lb_valido = false;
	 }
	 else
	 {
        $ld_saldo_ganancia=0;
		while($row=$this->SQL->fetch_row($rs_data))
		{
		  $ls_sc_cuenta=$row["sc_cuenta"];
		  $ls_denominacion=$row["denominacion"];
		  $ls_status=$row["status"];
		  $ls_rnivel=$row["rnivel"];
		  $ld_total_debe=$row["total_debe"];
		  $ld_total_haber=$row["total_haber"];
		  if($ls_status=="C")
		  {
    		$ls_nivel="4";		
		  }//if
		  else
		  {
    		$ls_nivel=$ls_rnivel;		
		  }//else
		  if($ls_nivel<=$ai_nivel)
		  {
			  $this->dts_Prebalance->insertRow("sc_cuenta",$ls_sc_cuenta);
			  $this->dts_Prebalance->insertRow("denominacion",$ls_denominacion);
			  $this->dts_Prebalance->insertRow("status",$ls_status);
			  $this->dts_Prebalance->insertRow("nivel",$ls_nivel);
			  $this->dts_Prebalance->insertRow("rnivel",$ls_rnivel);
			  $this->dts_Prebalance->insertRow("total_debe",$ld_total_debe);
			  $this->dts_Prebalance->insertRow("total_haber",$ld_total_haber);
		      $lb_valido = true;
		  }//if
		}//while
	    $li=$this->dts_Prebalance->getRowCount("sc_cuenta");
		if($li==0)
		{
		  $lb_valido = false;
		  return false;
		}//if
	 } //else
	 $ld_saldo_i=0;
	 if($lb_valido)
	 {
	   $lb_valido=$this->uf_scg_reporte_select_saldo_ingreso_BG($adt_feclimit,$li_ingreso,$ld_saldo_i);
	 } 
     if($lb_valido)
	 {
       $ld_saldo_g=0;	 
	   $lb_valido=$this->uf_scg_reporte_select_saldo_gasto_BG($adt_feclimit,$li_gasto,$ld_saldo_g);  
	 }//if
	 if($lb_valido)
	 {
	   $ld_saldo_ganancia=$ld_saldo_ganancia+($ld_saldo_i+$ld_saldo_g);
	 }//if
	 $la_sc_cuenta=array();
	 $la_denominacion=array();
	 $la_saldo=array();
	 for($i=1;$i<=$ai_nivel;$i++)
	 {
		 $la_sc_cuenta[$i]="";
		 $la_denominacion[$i]="";
		 $la_saldo[$i]=0;
	 }//for
	 $li_nro_reg=0;
     $ld_saldo_resultado=0;
	 $li_row=$this->dts_Prebalance->getRowCount("sc_cuenta");
	 for($li_i=1;$li_i<=$li_row;$li_i++)
	 {
		  $ls_sc_cuenta=$this->dts_Prebalance->data["sc_cuenta"][$li_i];
		  $ls_status=$this->dts_Prebalance->data["status"][$li_i];
		  $ls_denominacion=$this->dts_Prebalance->data["denominacion"][$li_i];
		  $ls_rnivel=$this->dts_Prebalance->data["rnivel"][$li_i];
		  $ld_total_debe=$this->dts_Prebalance->data["total_debe"][$li_i];
		  $ld_total_haber=$this->dts_Prebalance->data["total_haber"][$li_i]; 
		  $ls_nivel=$this->dts_Prebalance->data["nivel"][$li_i]; 

		  $ls_tipo_cuenta=substr($ls_sc_cuenta,0,1);
		  if($ls_tipo_cuenta==$li_activo) {	$ls_orden="1"; }	
		  if($ls_tipo_cuenta==$li_pasivo) {	$ls_orden="2"; }	
		  if($ls_tipo_cuenta==$li_capital) { $ls_orden="3"; }	
		  if($ls_tipo_cuenta==$li_resultado) { $ls_orden="4"; }	
		  if($ls_tipo_cuenta==$li_orden_d) { $ls_orden="5"; }
		  if($ls_tipo_cuenta== $li_orden_h){ $ls_orden="6"; }
		 
		  $ld_saldo=abs($ld_total_debe-$ld_total_haber);
		  if((($ls_tipo_cuenta==$li_pasivo)||($ls_tipo_cuenta==$li_resultado)||($ls_tipo_cuenta==$li_capital))&&($ls_nivel==1))
		  {
			  $ld_saldo_resultado=$ld_saldo_resultado+$ld_saldo;
		  }//if
		  if($ls_nivel==4)
		  {
		    $li_nro_reg=$li_nro_reg+1; 
		    $this->dts_Balance1->insertRow("orden",$ls_orden);
		    $this->dts_Balance1->insertRow("num_reg",$li_nro_reg);
		    $this->dts_Balance1->insertRow("sc_cuenta",$ls_sc_cuenta);
		    $this->dts_Balance1->insertRow("denominacion",$ls_denominacion);
			$this->dts_Balance1->insertRow("nivel",$ls_nivel);
			$this->dts_Balance1->insertRow("saldo",$ld_saldo);
		  }//if
		  else
		  {
		    if (empty($la_sc_cuenta[$ls_nivel]))
			{
			   $la_sc_cuenta[$ls_nivel]=$ls_sc_cuenta;
			   $la_denominacion[$ls_nivel]=$ls_denominacion;
			   $la_saldo[$ls_nivel]=$ld_saldo;
		       $li_nro_reg=$li_nro_reg+1;
			   $this->dts_Balance1->insertRow("orden",$ls_orden);
			   $this->dts_Balance1->insertRow("num_reg",$li_nro_reg);
			   $this->dts_Balance1->insertRow("sc_cuenta",$ls_sc_cuenta);
			   $this->dts_Balance1->insertRow("denominacion",$ls_denominacion);
			   $this->dts_Balance1->insertRow("nivel",-$ls_nivel);
			   $this->dts_Balance1->insertRow("saldo",$ld_saldo);
			}//if
            else
			{
			   $this->uf_scg_reporte_calcular_total_BG($li_nro_reg,$ls_prev_nivel,$ls_nivel,$la_sc_cuenta,$la_denominacion,$la_saldo,$li_activo,$li_pasivo,$li_capital,$li_resultado,$li_orden_d,$li_orden_h); 
			   $la_sc_cuenta[$ls_nivel]=$ls_sc_cuenta;
			   $la_denominacion[$ls_nivel]=$ls_denominacion;
			   $la_saldo[$ls_nivel]=$ld_saldo;
		       $li_nro_reg=$li_nro_reg+1;
			   $this->dts_Balance1->insertRow("orden",$ls_orden);
			   $this->dts_Balance1->insertRow("num_reg",$li_nro_reg);
			   $this->dts_Balance1->insertRow("sc_cuenta",$ls_sc_cuenta);
			   $this->dts_Balance1->insertRow("denominacion",$ls_denominacion);
			   $this->dts_Balance1->insertRow("nivel",-$ls_nivel);
			   $this->dts_Balance1->insertRow("saldo",$ld_saldo);
			}//else 			
          $ls_prev_nivel=$ls_nivel;		 
		}//else
	 }//for
	 $this->uf_scg_reporte_actualizar_resultado_BG($li_c_resultad,abs($ld_saldo_ganancia),$li_nro_reg,$ls_orden); 
	 if($ld_saldo_ganancia>0)
	 {
	 	$ld_saldo_resultado=$ld_saldo_resultado-$ld_saldo_ganancia;
	 }
	 else
	 {
	 	$ld_saldo_resultado=$ld_saldo_resultado+abs($ld_saldo_ganancia);
	 }
	 $li_total=$this->dts_Balance1->getRowCount("sc_cuenta");
	 for($li_i=1;$li_i<=$li_total;$li_i++)
	 {	
		  $ls_sc_cuenta=$this->dts_Balance1->data["sc_cuenta"][$li_i];
		  $ls_orden=$this->dts_Balance1->data["orden"][$li_i];
		  $li_nro_reg=$this->dts_Balance1->data["num_reg"][$li_i];
		  $ls_denominacion=$this->dts_Balance1->data["denominacion"][$li_i];
		  $ls_nivel=$this->dts_Balance1->data["nivel"][$li_i];
		  $ld_saldo=$this->dts_Balance1->data["saldo"][$li_i];
		  $li_pos=$this->dts_Prebalance->find("sc_cuenta",$ls_sc_cuenta);
		  if($li_pos>0)
		  { 
		    $ls_rnivel=$this->dts_Prebalance->data["rnivel"][$li_pos];
		  }
		  else
		  {
		    $ls_rnivel=0;
		  }
	      $dts_Balance2->insertRow("orden",$ls_orden);
	      $dts_Balance2->insertRow("num_reg",$li_nro_reg);
	      $dts_Balance2->insertRow("sc_cuenta",$ls_sc_cuenta);
	      $dts_Balance2->insertRow("denominacion",$ls_denominacion);
	      $dts_Balance2->insertRow("nivel",$ls_nivel);
	      $dts_Balance2->insertRow("saldo",abs($ld_saldo));
	      $dts_Balance2->insertRow("rnivel",$ls_rnivel);
		  $dts_Balance2->insertRow("total",abs($ld_saldo_resultado));
	 }//for
	 $li_tot=$dts_Balance2->getRowCount("sc_cuenta");
	 for($li_i=1;$li_i<=$li_tot;$li_i++)
	 { 
		  $ls_sc_cuenta=$dts_Balance2->data["sc_cuenta"][$li_i];
		  $ls_orden=$dts_Balance2->data["orden"][$li_i];
		  $li_nro_reg=$dts_Balance2->data["num_reg"][$li_i];
		  $ls_denominacion=$dts_Balance2->data["denominacion"][$li_i];
		  $ls_nivel=$dts_Balance2->data["nivel"][$li_i];
		  $ld_saldo=$dts_Balance2->data["saldo"][$li_i];
		  $ls_rnivel=$dts_Balance2->data["rnivel"][$li_i];
		  $ld_saldo_resultado=$dts_Balance2->data["total"][$li_i];
		  if($ls_rnivel<=$ai_nivel)
		  {
			  $this->dts_reporte->insertRow("orden",$ls_orden);
			  $this->dts_reporte->insertRow("num_reg",$li_nro_reg);
			  $this->dts_reporte->insertRow("sc_cuenta",$ls_sc_cuenta);
			  $this->dts_reporte->insertRow("denominacion",$ls_denominacion);
			  $this->dts_reporte->insertRow("nivel",$ls_nivel);
			  $this->dts_reporte->insertRow("saldo",$ld_saldo);
			  $this->dts_reporte->insertRow("rnivel",$ls_rnivel);
			  $this->dts_reporte->insertRow("total",$ld_saldo_resultado);
		  }//if	  
	 }//for
     unset($this->dts_Prebalance);
     unset($this->dts_Balance1);
     unset($dts_Balance2);
	 return $lb_valido;   
   }//uf_scg_reporte_balance_general
	function uf_print_cierrecuentas_cargo($ai_total,$as_cargarcargos,$as_tipo)
	{	
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//	     Function: uf_print_cierrecuentas_cargo
		//		   Access: private
		//	    Arguments: ai_total  // Total de filas a imprimir
		//                 as_cargarcargos // Si cargamos los cargos ó solo pintamos
		//                 as_tipo // Tipo de SEP si es de bienes ó de servicios
		//	  Description: Método que imprime el grid de las cuentas presupuestarias de los cargos
		//	   Creado Por: Ing. Yesenia Moreno/ Ing. Luis Lang
		// Modificado Por: Ing. Yozelin Barragan
		// Fecha Creación: 17/03/2007								Fecha Última Modificación : 12/05/2007
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		global $io_grid, $io_funciones_sep,$la_cuentacargo,$li_estmodest,$li_loncodestpro1,$li_loncodestpro2,$li_loncodestpro3,
	 	       $li_loncodestpro4,$li_loncodestpro5;
		require_once("../../shared/class_folder/class_datastore.php");
		$io_dscuentas=new class_datastore();
		
		// Titulos el Grid
		$lo_title[1]="Cr&eacute;dito";
		$lo_title[2]="Estructura Presupuestaria";
		$lo_title[3]="Cuenta";
		$lo_title[4]="Monto";
		//$lo_title[5]=""; 
		$ls_codpro="";
		// Recorrido del Grid de Cuentas Presupuestarias del Cargo
		for($li_fila=1;$li_fila<=$ai_total;$li_fila++)
		{ 
			$ls_cargo= trim($io_funciones_sep->uf_obtenervalor("txtcodcar".$li_fila,""));
			$li_moncue= $io_funciones_sep->uf_obtenervalor("txtmoncar".$li_fila,""); 
			$ls_cuenta= trim($io_funciones_sep->uf_obtenervalor("txtcodspgcre".$li_fila,""));
		    $ls_codpro= $io_funciones_sep->uf_obtenervalor("txtcodgascre".$li_fila,"");
			$ls_estcla= $io_funciones_sep->uf_obtenervalor("txtstatuscre".$li_fila,"");
			$li_moncue = str_replace(".","",$li_moncue);
			$li_moncue = str_replace(",",".",$li_moncue);
		    $ls_codestpro1 = substr($ls_codpro,0,25); 
			$ls_codestpro2 = substr($ls_codpro,25,25); 
			$ls_codestpro3 = substr($ls_codpro,50,25); 
			$ls_codestpro4 = substr($ls_codpro,75,25); 
			$ls_codestpro5 = substr($ls_codpro,100,25);	
			if($ls_cuenta!="")
			{
				$valores["codcargo"]=$ls_cargo;
				$valores["cuentacar"]=$ls_cuenta;
				$valores["estcla"]=$ls_estcla;
				$valores["codestpro1"]=$ls_codestpro1;
				$valores["codestpro2"]=$ls_codestpro2;
				$valores["codestpro3"]=$ls_codestpro3;
				$valores["codestpro4"]=$ls_codestpro4;
				$valores["codestpro5"]=$ls_codestpro5;
				$ll_row_found=$io_dscuentas->findValues($valores,"codcargo") ;
				if($ll_row_found>0)
				{  
					$ldec_monto=0;
					$ldec_monto=$io_dscuentas->getValue("moncuecar",$ll_row_found);
					$ldec_monto=$ldec_monto + $li_moncue;
					$io_dscuentas->updateRow("moncuecar",$ldec_monto,$ll_row_found);	
				}
				else
				{
					$io_dscuentas->insertRow("codcargo",$ls_cargo);			
					$io_dscuentas->insertRow("codprocar",$ls_codpro);			
					$io_dscuentas->insertRow("cuentacar",$ls_cuenta);			
					$io_dscuentas->insertRow("moncuecar",$li_moncue);
					$io_dscuentas->insertRow("estcla",$ls_estcla);
					$io_dscuentas->insertRow("codestpro1",$ls_codestpro1);
					$io_dscuentas->insertRow("codestpro2",$ls_codestpro2);
					$io_dscuentas->insertRow("codestpro3",$ls_codestpro3);
					$io_dscuentas->insertRow("codestpro4",$ls_codestpro4);
					$io_dscuentas->insertRow("codestpro5",$ls_codestpro5);	
				}		
			}
		}
		if($as_cargarcargos=="1")
		{	// si los cargos se deben cargar recorremos el arreglo de cuentas
			// que se lleno con los cargos 
			$li_cuenta=count($la_cuentacargo)-1;
			for($li_fila=1;($li_fila<=$li_cuenta);$li_fila++)
			{
				$ls_cargo        = trim($la_cuentacargo[$li_fila]["cargo"]);
				$ls_cuenta       = trim($la_cuentacargo[$li_fila]["cuenta"]);
				$ls_programatica = trim($la_cuentacargo[$li_fila]["programatica"]);
				$ls_estcla       = trim($la_cuentacargo[$li_fila]["estcla"]);
				$li_moncue="0.00";
				$ls_codestpro1 = substr($ls_programatica,0,25);
			    $ls_codestpro2 = substr($ls_programatica,25,25);
			    $ls_codestpro3 = substr($ls_programatica,50,25);
			    $ls_codestpro4 = substr($ls_programatica,75,25);
			    $ls_codestpro5 = substr($ls_programatica,100,25); 
				if($ls_cuenta!="")
				{
					$valores["codcargo"]=$ls_cargo;
					$valores["cuentacar"]=$ls_cuenta;
					$valores["estcla"]=$ls_estcla;
					$valores["codestpro1"]=$ls_codestpro1;
					$valores["codestpro2"]=$ls_codestpro2;
					$valores["codestpro3"]=$ls_codestpro3;
					$valores["codestpro4"]=$ls_codestpro4;
					$valores["codestpro5"]=$ls_codestpro5;
					$ll_row_found=$io_dscuentas->findValues($valores,"codcargo") ;
					if($ll_row_found>0)
					{  
						$ldec_monto=0;
						$ldec_monto=$io_dscuentas->getValue("moncuecar",$ll_row_found);
						$ldec_monto=$ldec_monto + $li_moncue;
						$io_dscuentas->updateRow("moncuecar",$ldec_monto,$ll_row_found);	
					}
					else
					{
						$io_dscuentas->insertRow("codcargo",$ls_cargo);			
						$io_dscuentas->insertRow("codprocar",$ls_programatica);			
						$io_dscuentas->insertRow("cuentacar",$ls_cuenta);			
						$io_dscuentas->insertRow("moncuecar",$li_moncue);
						$io_dscuentas->insertRow("estcla",$ls_estcla);
						$io_dscuentas->insertRow("codestpro1",$ls_codestpro1);
						$io_dscuentas->insertRow("codestpro2",$ls_codestpro2);
						$io_dscuentas->insertRow("codestpro3",$ls_codestpro3);
						$io_dscuentas->insertRow("codestpro4",$ls_codestpro4);
						$io_dscuentas->insertRow("codestpro5",$ls_codestpro5);
					}
				}			
			}
		} 
		// Agrupamos las cuentas por programatica y cuenta
		//$io_dscuentas->group_by(array('0'=>'codcargo','1'=>'codprocar','2'=>'cuentacar','3'=>'estcla'),array('0'=>'moncuecar'),'moncuecar');
		$io_dscuentas->group_by(array('0'=>'codcargo','1'=>'codestpro1','2'=>'codestpro2','3'=>'codestpro3','4'=>'codestpro4','5'=>'codestpro5',
		                              '6'=>'estcla','7'=>'cuentacar'),array('0'=>'moncuecar'),'moncuecar');
		$li_total=$io_dscuentas->getRowCount('codcargo');	
		//print_r($io_dscuentas->data);
		// Recorremos el data stored de cuentas que se lleno y se agrupo anteriormente
		for($li_fila=1;$li_fila<=$li_total;$li_fila++)
		{ 
			$ls_cargo     = $io_dscuentas->getValue('codcargo',$li_fila);
			$ls_codpro    = $io_dscuentas->getValue('codprocar',$li_fila);
			$ls_cuenta    = $io_dscuentas->getValue('cuentacar',$li_fila);
			$li_moncue    = number_format($io_dscuentas->getValue('moncuecar',$li_fila),2,",",".");
			$ls_codestpro = "";
			if (!empty($ls_codpro))
			   {
				 $ls_codestpro1 = substr($ls_codpro,0,25);
				 $ls_codestpro2 = substr($ls_codpro,25,25);
				 $ls_codestpro3 = substr($ls_codpro,50,25);
				 $ls_codestpro4 = substr($ls_codpro,75,25);
				 $ls_codestpro5 = substr($ls_codpro,100,25);
				 $ls_codestpro1 = substr($ls_codestpro1,-$li_loncodestpro1);
			 	 $ls_codestpro2 = substr($ls_codestpro2,-$li_loncodestpro2);
				 $ls_codestpro3 = substr($ls_codestpro3,-$li_loncodestpro3);
				 $ls_codestpro  = $ls_codestpro1.'-'.$ls_codestpro2.'-'.$ls_codestpro3;
			   } 
			if ($li_estmodest==2)
			   {
			     if (!empty($ls_codpro))
				    {
					  $ls_codestpro2 = substr($ls_codestpro2,-$li_loncodestpro2);
					  $ls_codestpro3 = substr($ls_codestpro3,-$li_loncodestpro3);
					  $ls_codestpro  = $ls_codestpro.'-'.$ls_codestpro4.'-'.$ls_codestpro5;
					}
			   }
			$ls_estcla = $io_dscuentas->getValue('estcla',$li_fila);
			if($ls_cuenta!="")
			{

				$lo_object[$li_fila][1]="<input name=txtcodcargo".$li_fila." type=text id=txtcodcargo".$li_fila." class=sin-borde  style=text-align:center size=12 value='".$ls_cargo."' readonly>";
				$lo_object[$li_fila][2]="<input name=txtprogramaticacar".$li_fila." type=text id=txtprogramaticacar".$li_fila." class=sin-borde  style=text-align:center size=75 value='".$ls_codestpro."' readonly>";
				$lo_object[$li_fila][3]="<input name=txtcuentacar".$li_fila." type=text id=txtcuentacar".$li_fila." class=sin-borde  style=text-align:center size=25 value='".$ls_cuenta."' readonly>";
				$lo_object[$li_fila][4]="<input name=txtmoncuecar".$li_fila." type=text id=txtmoncuecar".$li_fila." class=sin-borde  style=text-align:right  size=25 onKeyPress=return(ue_formatonumero(this,'.',',',event)); value='".$li_moncue."' readonly>".
				                        "<input name=txtcodprocar".$li_fila."  type=hidden id=txtcodprocar".$li_fila."  value='".$ls_codpro."'>".
										"<input name=estclacar".$li_fila."  type=hidden id=estclacar".$li_fila."  value='".$ls_estcla."'>";
			   // $lo_object[$li_fila][5]="<a href=javascript:ue_delete_cuenta_cargo('".$li_fila."','".$as_tipo."');><img src=../shared/imagebank/tools15/eliminar.gif title=Eliminar width=15 height=10 border=0></a>".
										
			}
		}
		$ai_total=$li_total+1;
		$lo_object[$ai_total][1]="<input name=txtcodcargo".$ai_total." type=text id=txtcodcargo".$ai_total." class=sin-borde  style=text-align:center size=12 value='' readonly>";
		$lo_object[$ai_total][2]="<input name=txtprogramaticacar".$ai_total." type=text id=txtprogramaticacar".$ai_total." class=sin-borde  style=text-align:center size=75 value='' readonly>";
		$lo_object[$ai_total][3]="<input name=txtcuentacar".$ai_total."       type=text id=txtcuentacar".$ai_total."       class=sin-borde  style=text-align:center size=25 value='' readonly>";
		$lo_object[$ai_total][4]="<input name=txtmoncuecar".$ai_total."       type=text id=txtmoncuecar".$ai_total."       class=sin-borde  style=text-align:right  size=25 value='' readonly>";
		$lo_object[$ai_total][5]="<input name=txtcodprocar".$ai_total."       type=hidden id=txtcodprocar".$ai_total."  value=''><input name=estclacar".$li_fila."  type=hidden id=estclacar".$li_fila."  value=''>";        

		print "<p>&nbsp;</p>";
		print "  <table width='840' border='0' align='center' cellpadding='0' cellspacing='0'";
		print "    <tr>";
		//print "      <td  align='left'><a href='javascript:ue_catalogo_cuentas_cargos();'><img src='../shared/imagebank/tools/nuevo.gif' width='20' height='20' border='0' title='Agregar Cuenta'>Agregar Cuenta Otros Cr&eacute;ditos</a>&nbsp;&nbsp;</td>";
		print "    </tr>";
		print "  </table>";
		$io_grid->makegrid($ai_total,$lo_title,$lo_object,840,"Cuentas Otros Cr&eacute;ditos","gridcuentascargos");
		unset($io_dscuentas);
	}// end function uf_print_cuentas_cargo
							  $ls_PadNextCuenta =$int_scg->uf_pad_cuenta_plan($dat["formplan"] , $ls_NextCuenta)	;				
							 
							  $int_scg->uf_select_plan_unico_cuenta($ls_PadNextCuenta,&$as_denominacion_plan);
							  
												
								  if($li_Nivel > 1)
								  {
									  $ls_cuenta_ref = $int_scg->uf_scg_next_cuenta_nivel( $ls_NextCuenta );
									  
								  }
								  else	
								  {
									  $ls_cuenta_ref = "             ";
								  }
								 
								  $lds_cuenta_temp->insertRow("SC_cuenta",$ls_NextCuenta);				  			  
								  $lds_cuenta_temp->insertRow("denominacion",$as_denominacion_plan);				  			  
								  $lds_cuenta_temp->insertRow("sc_cuenta_ref",$ls_cuenta_ref);				  			  
								  $lds_cuenta_temp->insertRow("Nivel",$li_Nivel);				  			  
								  $li_fila =  $li_fila + 1;
								  
							  } 
				
							if ($li_Nivel > 1)
							{
									$ls_NextCuenta = $int_scg->uf_scg_next_cuenta_nivel( $ls_NextCuenta );
									$li_Nivel      = $int_scg->uf_scg_obtener_nivel( $ls_NextCuenta );
									
							}
							else
							{
function uf_cargar_dtnotacon()
{
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //	     Function: uf_cargar_dtnotacon
    //		   Access: public
    //	  Description: Funcion para pintar detalles contables a la nota de debito y credito solo para recepciones documento tipo contable
    //	   Creado Por: Ing. Nelson Barraez
    // Fecha Creacin: 27/05/2007 								Fecha ltima Modificacin :
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    require_once "../../shared/class_folder/grid_param.php";
    require_once "../../shared/class_folder/class_datastore.php";
    $io_grid = new grid_param();
    global $io_funciones_cxp;
    $io_grid = new grid_param();
    $ds_detscg = new class_datastore();
    $ldec_total = 0;
    $li_totalactual = $io_funciones_cxp->uf_obtenervalor("totalactual", "");
    $ls_tiponota = $io_funciones_cxp->uf_obtenervalor("tiponota", "");
    $ls_cuentaprov = $io_funciones_cxp->uf_obtenervalor("txtctaprov", "");
    $ls_denctaprov = $io_funciones_cxp->uf_obtenervalor("denctascg", "");
    $ls_tipproben = $io_funciones_cxp->uf_obtenervalor("tipproben", "");
    $ls_codproben = trim($io_funciones_cxp->uf_obtenervalor("codproben", ""));
    $ls_numrecdoc = trim($io_funciones_cxp->uf_obtenervalor("numrecdoc", ""));
    $ls_codtipdoc = $io_funciones_cxp->uf_obtenervalor("codtipdoc", "");
    $ldec_totaldebe = 0;
    $ldec_totalhaber = 0;
    if ($li_totalactual == 0) {
        uf_dt_nota();
    } else {
        for ($lx = 1; $lx <= 4; $lx++) {
            $lo_object2[$lx][1] = "<input type=text name=txtcuentaspgncnd" . $lx . " id=txtcuentaspgncnd" . $lx . " class=sin-borde style=text-align:center size=22 readonly ><input type=hidden name=txtscgcuentadt" . $lx . "    id=txtscgcuentadt" . $lx . "  readonly><input type=hidden name=txtdenscgcuentadt" . $lx . "    id=txtdenscgcuentadt" . $lx . "><input type=hidden name=txtestcargo" . $lx . "    id=txtestcargo" . $lx . ">";
            $lo_object2[$lx][2] = "<input type=text name=txtcodestproncnd" . $lx . " id=txtcodestproncnd" . $lx . " class=sin-borde style=text-align:center   size=40    readonly><input name=txtcodpro" . $lx . " type=hidden id=txtcodpro" . $lx . " >";
            $lo_object2[$lx][3] = "<input type=text name=txtestclaaux" . $lx . "     id=txtestclaaux" . $lx . "     class=sin-borde style=text-align:center   size=20   readonly><input name=txtestclancnd" . $lx . " type=hidden id=txtestclancnd" . $lx . " >";
            $lo_object2[$lx][4] = "<input type=text name=txtdencuentancnd" . $lx . " id=txtdencuentancnd" . $lx . " class=sin-borde style=text-align:left size=39   readonly>";
            $lo_object2[$lx][5] = "<input type=text name=txtmontoncnd" . $lx . "     id=txtmontoncnd" . $lx . "     class=sin-borde style=text-align:right  size=20 readonly>";
        }
        for ($li = 1; $li <= $li_totalactual; $li++) {
            $ls_cuenta = $io_funciones_cxp->uf_obtenervalor("txtscgcuentancnd" . $li, "");
            $ls_dencuenta = $io_funciones_cxp->uf_obtenervalor("txtdencuentascgncnd" . $li, "");
            $ldec_mondeb = $io_funciones_cxp->uf_obtenervalor("txtdebencnd" . $li, "");
            $ldec_monhab = $io_funciones_cxp->uf_obtenervalor("txthaberncnd" . $li, "");
            if ($ls_tiponota == "NC") {
                if ($li == 1) {
                    $ds_detscg->insertRow("txtscgcuentancnd", $ls_cuentaprov);
                    $ds_detscg->insertRow("txtdencuentascgncnd", $ls_denctaprov);
                    $ds_detscg->insertRow("txtdebencnd", 0, 00);
                    $ds_detscg->insertRow("txthaberncnd", "0,00");
                    $ds_detscg->insertRow("txtdebhab", '');
                }
                $ds_detscg->insertRow("txtscgcuentancnd", $ls_cuenta);
                $ds_detscg->insertRow("txtdencuentascgncnd", $ls_dencuenta);
                $ds_detscg->insertRow("txtdebencnd", $ldec_monhab);
                $ds_detscg->insertRow("txthaberncnd", $ldec_mondeb);
                $ds_detscg->insertRow("txtdebhab", 'H');
                $ldec_monto = str_replace(".", "", $ldec_mondeb);
                $ldec_monto = str_replace(",", ".", $ldec_monto);
                $ldec_total = $ldec_total + $ldec_monto;
            } else {
                $ds_detscg->insertRow("txtscgcuentancnd", $ls_cuenta);
                $ds_detscg->insertRow("txtdencuentascgncnd", $ls_dencuenta);
                $ds_detscg->insertRow("txtdebencnd", $ldec_mondeb);
                $ds_detscg->insertRow("txthaberncnd", $ldec_monhab);
                $ds_detscg->insertRow("txtdebhab", 'D');
                $ldec_monto = str_replace(".", "", $ldec_mondeb);
                $ldec_monto = str_replace(",", ".", $ldec_monto);
                $ldec_total = $ldec_total + $ldec_monto;
            }
        }
        $ldec_total = number_format($ldec_total, 2, ",", ".");
        if ($ls_tiponota == "ND") {
            $ldec_mondebe = "0,00";
            $ldec_monhaber = $ldec_total;
            $li_aux++;
            $ds_detscg->insertRow("txtscgcuentancnd", $ls_cuentaprov);
            $ds_detscg->insertRow("txtdencuentascgncnd", $ls_denctaprov);
            $ds_detscg->insertRow("txtdebencnd", $ldec_mondebe);
            $ds_detscg->insertRow("txthaberncnd", $ldec_monhaber);
            $ds_detscg->insertRow("txtdebhab", 'H');
        } else {
            $ldec_mondebe = $ldec_total;
            $ldec_monhaber = "0,00";
            $ds_detscg->updateRow("txtdebencnd", $ldec_mondebe, 1);
            $ds_detscg->updateRow("txtdebhab", 'D', 1);
        }
        $aa_items = array('0' => 'txtscgcuentancnd', '1' => 'txtdebhab');
        $aa_sum = array('0' => 'txtdebencnd', '1' => 'txthaberncnd');
        $ds_detscg->group_by_conformato($aa_items, $aa_sum, 'txtscgcuentancnd');
        $li_totalrows = $ds_detscg->getRowCount("txtscgcuentancnd");
        for ($la = 1; $la <= $li_totalrows; $la++) {
            $ls_scgcuenta = $ds_detscg->getValue("txtscgcuentancnd", $la);
            $ls_dencuenta = $ds_detscg->getValue("txtdencuentascgncnd", $la);
            $ldec_mondebe = $ds_detscg->getValue("txtdebencnd", $la);
            $ldec_monhaber = $ds_detscg->getValue("txthaberncnd", $la);
            $ldec_auxdebe = str_replace(".", "", $ldec_mondebe);
            $ldec_auxdebe = str_replace(",", ".", $ldec_auxdebe);
            $ldec_auxhaber = str_replace(".", "", $ldec_monhaber);
            $ldec_auxhaber = str_replace(",", ".", $ldec_auxhaber);
            $ldec_totaldebe = $ldec_totaldebe + $ldec_auxdebe;
            $ldec_totalhaber = $ldec_totalhaber + $ldec_auxhaber;
            $lo_object[$la][1] = "<input type=text name=txtscgcuentancnd" . $la . "    id=txtscgcuentancnd" . $la . " class=sin-borde style=text-align:center size=22 value='{$ls_scgcuenta}'    readonly onClick='javascript:uf_select_filadelete({$la});'>";
            $lo_object[$la][2] = "<input type=text name=txtdencuentascgncnd" . $la . "    class=sin-borde style=text-align:left   size=59 value='{$ls_dencuenta}'    readonly onClick='javascript:uf_select_filadelete({$la});'>";
            $lo_object[$la][3] = "<input type=text name=txtdebencnd" . $la . "    class=sin-borde style=text-align:right size=20  value='{$ldec_mondebe}'   readonly onClick='javascript:uf_select_filadelete({$la});uf_mostrar_alerta();'>";
            $lo_object[$la][4] = "<input type=text name=txthaberncnd" . $la . "    class=sin-borde style=text-align:right  size=20 value='{$ldec_monhaber}' readonly onClick='javascript:uf_select_filadelete({$la});uf_mostrar_alerta();'>";
            $lo_object[$la][5] = "<a href=javascript:uf_delete_dtnota('" . $la . "');><img src=../shared/imagebank/tools15/eliminar.gif title=Eliminar width=15 height=10 border=0></a>";
        }
        $lo_title[1] = "C&oacute;digo Estad&iacute;stico";
        $lo_title[2] = "C&oacute;digo Program&aacute;tico ";
        $lo_title[3] = "Estatus";
        $lo_title[4] = "Denominaci&oacute;n";
        $lo_title[5] = "Monto";
        $io_grid->make_gridScroll($lx - 1, $lo_title, $lo_object2, 758, "Detalle Presupuestario de la Nota", "grid", 120);
        $lo_titlesc[1] = "Cuenta";
        $lo_titlesc[2] = "Denominaci&oacute;n";
        $lo_titlesc[3] = "Monto Debe";
        $lo_titlesc[4] = "Monto Haber";
        $lo_titlesc[5] = " ";
        $io_grid->make_gridScroll($la - 1, $lo_titlesc, $lo_object, 758, "Detalle Contable de la Nota", "gridscg", 120);
        print "<input type=hidden name=numrowsprenota id=numrowsprenota value=" . ($lx - 1) . ">";
        print "<input type=hidden name=numrowsconnota id=numrowsconnota value=" . ($la - 1) . ">";
        print "<table width='758' border='0' align='center' cellpadding='0' cellspacing='0' class='celdas-blancas'>";
        print "        <tr>";
        print "          <td width='508' height='22' align='right'><div align='right'><strong>Total Debe</strong></div></td>";
        print "          <td width='80' height='22' align='right'><input name='txtmontodeb'  type='text' id='txtmontodeb' style='text-align:right' value=" . number_format($ldec_totaldebe, 2, ",", ".") . " size='22' maxlength='20' readonly align='right' class='letras-negrita'></td>";
        print "          <td width='90' height='22' align='right'><div align='right'><strong>Total Haber</strong></div></td>";
        print "          <td width='80' height='22' align='right'><input name='txtmontohab'  type='text' id='txtmontohab' style='text-align:right' value=" . number_format($ldec_totalhaber, 2, ",", ".") . " size='22' maxlength='20' readonly align='right' class='letras-negrita'></td>";
        print "        </tr>";
        print "        <tr>";
        print "          <td width='508' height='22' align='right'>&nbsp;</td>";
        print "          <td width='80' height='22' align='right'>&nbsp;</td>";
        print "          <td width='90' height='22' align='right'>&nbsp;</td>";
        print "          <td width='80' height='22' align='right'>&nbsp;</td>";
        print "        </tr>";
        print "</table>";
        print "<table width=780 border=0 cellpadding=0 cellspacing=0 class=formato-blanco>";
        print " <tr class=titulo-ventana>";
        print "  <td height=23 colspan=4><div align=center class=Estilo1><b>TOTALES</b></div></td>";
        print "  </tr>";
        print "<tr height=20>";
        print " <td width=49>&nbsp;</td>";
        print " <td width=413>&nbsp;</td>";
        print " <td width=167><div align=right><b>SUBTOTAL</b></div></td>";
        print " <td width=151><input name=txtmontosincargo type=text id=txtmontosincargo value=" . $ldec_total . " style='text-align:right' class='letras-negrita' size='22' maxlength='20' readonly></td>";
        print "</tr>";
        print "<tr height=20>";
        print " <td width=49>&nbsp;</td>";
        print " <td width=413>&nbsp;</td>";
        print " <td width=167><div align=right><input name='btnotroscreditos' type='button' class='boton' id='btnotroscreditos' value='Otros Cr&eacute;ditos' onClick='javascript:uf_agregar_dtcargos(\"\",\"\",\"\",\"\",\"\");'></div></td>";
        print " <td width=151><input name=txtmontocargo type=text id=txtmontocargo value='0,00' style='text-align:right' class='letras-negrita' size='22' maxlength='20' readonly></td>";
        print "</tr>";
        print "<tr height=20>";
        print " <td width=49>&nbsp;</td>";
        print " <td width=413>&nbsp;</td>";
        print " <td width=147><div align=right><b>MONTO TOTAL</b></div></td>";
        print " <td width=171><input name=txtmonto type=text class=texto-rojo id=txtmonto value=" . $ldec_total . " style='text-align:right' size='22' maxlength='20' readonly></td>";
        print "</tr>";
        print "</table>";
    }
}
	$ld_fecha=$_GET["fecha"];
	$ls_observacion=$_GET["observacion"];	
	$lb_valido=uf_insert_seguridad();
	if($lb_valido)
	{
		uf_print_encabezado_pagina($ls_numanacot,$ld_fecha,$io_pdf);
		$lb_valido=$io_class_report->uf_cargar_cotizaciones_esp($ls_numanacot,$la_cotizaciones);
		if($lb_valido)
		{
			//print_r($la_cotizaciones);
			$li_totrow=count($la_cotizaciones);
			//print $li_totrow;
			for($li_i=1;$li_i<=$li_totrow;$li_i++)
			{
				$io_ds_detalle->insertRow("codigo",$la_cotizaciones[$li_i]["codigo"]);
				$io_ds_detallepro->insertRow("cod_pro",$la_cotizaciones[$li_i]["cod_pro"]);
				$io_ds_detallepro->insertRow("nompro",$la_cotizaciones[$li_i]["nompro"]);
			}
			$io_ds_detallepro->group('cod_pro');
			$io_ds_detalle->group('codigo');
			$lb_valido=$io_class_report->uf_count_cotizaciones($ls_numanacot,$ls_countcot);
			$ls_countcot=count($ls_countcot);
			if($lb_valido)
			{
				uf_print_proveedores($la_cotizaciones,$io_ds_detalle,$io_ds_detallepro,$ls_countcot,$io_pdf);
			}
			$lb_valido=$io_class_report->uf_select_items($ls_numanacot,$ls_tipsolcot,$la_items);
			if($lb_valido)
			{
				//uf_print_items($ls_tipsolcot,$la_items,$io_pdf);
				$la_ganadores=$io_class_report->uf_select_cotizacion_analisis($ls_numanacot,$ls_tipsolcot);
 error_reporting(E_ALL);
 set_time_limit(1800);
 $io_pdf = new Cezpdf('LETTER', 'portrait');
 // Instancia de la clase PDF
 $io_pdf->selectFont('../../shared/ezpdf/fonts/Helvetica.afm');
 // Seleccionamos el tipo de letra
 $io_pdf->ezSetCmMargins(3.6, 5, 3, 3);
 // Configuración de los margenes en centímetros
 $io_pdf->ezStartPageNumbers(570, 47, 8, '', '', 1);
 // Insertar el número de página
 $li_totrow = $io_report->DS->getRowCount("numsol");
 $li_monretiva = 0;
 if ($li_totrow > 1) {
     for ($li_i = 1; $li_i <= $li_totrow; $li_i++) {
         $ls_dencla = $io_report->DS->data["dencla"][$li_i];
         $ds_dencla->insertRow("dencla", $ls_denominacion);
     }
     $ds_dentipdoc->group("dencla");
     $li_fila = $ds_dentipdoc->getRowCount("dencla");
     for ($li_i = 1; $li_i <= $li_fila; $li_i++) {
         $ls_denominacion = $ds_dentipdoc->getValue("dencla", $li_i);
         if ($ls_denominacion != "") {
             if ($li_i == 1) {
                 $ls_dencla = $ls_denominacion;
             } else {
                 $ls_dencla = $ls_dencla . ", " . $ls_denominacion;
             }
         }
     }
 } else {
     $ls_dencla = $io_report->DS->data["dencla"][1];
function uf_balance_general_consolidado($ad_fecfin)
{
	$lb_valido=true;
	$ds_Balance2=new class_datastore();
	$ldec_resultado=0;
	$ld_saldo_ganancia=0;
	$this->ls_activo    = trim($this->la_empresa["activo"]);
	$this->ls_pasivo    = trim($this->la_empresa["pasivo"]);		
	$this->ls_capital   = trim($this->la_empresa["capital"]);
	$this->ls_orden_d   = trim($this->la_empresa["orden_d"]);
	$this->ls_orden_h   = trim($this->la_empresa["orden_h"]);
	$this->ls_ingreso   = trim($this->la_empresa["ingreso"]);
	$this->ls_gastos    = trim($this->la_empresa["gasto"]);
	
	$this->ls_cta_resultado = trim($this->la_empresa["c_resultad"]);
	$this->ls_resultado = trim($this->la_empresa["resultado"]);
	
	$ad_fecfin=$this->io_fun->uf_convertirdatetobd($ad_fecfin);
	$ls_codemp=$this->la_empresa["codemp"];
		
	 $ls_sql = "SELECT TRIM(scg_cuentas_consolida.sc_cuenta) as sc_cuenta, scg_cuentas_consolida.nivel,
					   scg_cuentas_consolida.denominacion,0 as mondeb, 0 as monhab
				  FROM scg_cuentas_consolida
				 WHERE sc_cuenta like '".$this->ls_activo."%' 
					OR sc_cuenta like '".$this->ls_pasivo."%' 
					OR sc_cuenta like '".$this->ls_resultado."%' 
					OR sc_cuenta like '".$this->ls_capital."%' 
					OR sc_cuenta like '".$this->ls_orden_d."%' 
					OR sc_cuenta like '".$this->ls_orden_h."%'
				 UNION
				SELECT TRIM(sc_cuenta) as sc_cuenta,0 as nivel,'' as denominacion,coalesce(sum(debe_mes),0)as mondeb, 
				       coalesce(sum(haber_mes),0) as monhab 
				  FROM scg_saldos_consolida 
				 WHERE (sc_cuenta like '".$this->ls_activo."%' 
					OR sc_cuenta like '".$this->ls_pasivo."%' 
					OR sc_cuenta like '".$this->ls_resultado."%' 
					OR sc_cuenta like '".$this->ls_capital."%' 
					OR sc_cuenta like '".$this->ls_orden_d."%' 
					OR sc_cuenta like '".$this->ls_orden_h."%')
				   AND fecsal<='".$ad_fecfin."'
				 GROUP BY sc_cuenta
				 ORDER BY sc_cuenta";
			 
     $rs_data=$this->io_sql->select($ls_sql);
	 if ($rs_data===false)
	    {
		  $this->is_msg_error="Error en consulta metodo uf_scg_reporte_balance_general_consolidado;".$this->io_fun->uf_convertirmsg($this->io_sql->message);
		  $lb_valido = false;
	    }
	 else
	    {
          $ld_saldo_ganancia=0;
		  while(!$rs_data->EOF)
		       {
			     $ls_scgcta = $rs_data->fields["sc_cuenta"];
				 $ls_dencta = $rs_data->fields["denominacion"];				 
				 $ld_mondeb = number_format($rs_data->fields["mondeb"],2,'.','');
				 $ld_monhab = number_format($rs_data->fields["monhab"],2,'.','');
				 $li_nivcta = $rs_data->fields["nivel"];
				 
				 $this->ds_Prebalance->insertRow("scgcta",$ls_scgcta);
				 $this->ds_Prebalance->insertRow("dencta",$ls_dencta);
				 $this->ds_Prebalance->insertRow("mondeb",$ld_mondeb);
				 $this->ds_Prebalance->insertRow("monhab",$ld_monhab);
				 $this->ds_Prebalance->insertRow("nivcta",$li_nivcta);
				 $this->ds_Prebalance->insertRow("rnivcta",$li_nivcta);				 
			     $rs_data->MoveNext();
			   }
		  $this->ds_Prebalance->group_by(array('0'=>'scgcta'),array('0'=>'monhab'),'scgcta');
		  $this->ds_Prebalance->sortData('scgcta');
	      $li_totrows = $this->ds_Prebalance->getRowCount("scgcta");
		  if ($li_totrows==0)
		     {
		       $lb_valido = false;
		       return false;
		     }
	    }
	 $ld_saldo_i=0;		
	 if ($lb_valido)
	    {
	      $lb_valido = $this->uf_scg_reporte_select_saldo_ingreso_consolida($ad_fecfin,$this->ls_ingreso,$ld_saldo_i);
	    }  
     if ($lb_valido)
	    {
          $ld_saldo_g=0;	 
	      $lb_valido=$this->uf_scg_reporte_select_saldo_gasto_consolida($ad_fecfin,$this->ls_gastos,$ld_saldo_g);  
	    }
	 if ($lb_valido)
	    {
	      $ld_saldo_ganancia=$ld_saldo_ganancia+($ld_saldo_i+$ld_saldo_g);
	    }
	 
	 $la_sc_cuenta	  =	array();
	 $la_denominacion = array();
	 $la_saldo		  = array();
	 for ($i=1;$i<=$li_nivcta;$i++)
		 {
		   $la_sc_cuenta[$i]="";
		   $la_denominacion[$i]="";
		   $la_saldo[$i]=0;
		 }
		 
	 $ld_saldo_resultado=0;
	 for ($li_z=1;$li_z<=$li_totrows;$li_z++)
	     {
		   $ls_scgcta = $this->ds_Prebalance->getValue("scgcta",$li_z);
		   $ld_mondeb = $this->ds_Prebalance->getValue("mondeb",$li_z);
		   $ld_monhab = $this->ds_Prebalance->getValue("monhab",$li_z);
		   $ls_dencta = $this->ds_Prebalance->getValue("dencta",$li_z);
		   $li_nivcta = $this->ds_Prebalance->getValue("nivcta",$li_z);
		   $ls_nivcta = $this->ds_Prebalance->getValue("rnivcta",$li_z);
		   $ls_tipcta = substr($ls_scgcta,0,1);
	 	   switch($ls_tipcta){
			  case $this->ls_activo:
				$ls_orden=1;
			  break;
			  case $this->ls_pasivo:
				$ls_orden=2;
			  break;
			  case $this->ls_capital:
				$ls_orden=3;
			  break;				
			  case $this->ls_resultado:
				$ls_orden=4;
			  break;
			  case $this->ls_orden_d:
				$ls_orden=5;
			  break;		
			  case $this->ls_orden_h:
				$ls_orden=6;
			  break;
			  default:
				$ls_orden=7;		
		   }
		   $ldec_saldo=$ld_mondeb-$ld_monhab;
		   if (($ls_tipcta==$this->ls_pasivo || $ls_tipcta==$this->ls_resultado || $ls_tipcta==$this->ls_capital)&&($li_nivcta==1))
		      {
			    $ld_saldo_resultado = $ld_saldo_resultado+$ldec_saldo;
		      }	
           $li_nro_reg=0;		
		   if ($li_nivcta==4)	
		      {
			    $li_nro_reg++;
				$la_sc_cuenta[$ls_nivcta]    = $ls_scgcta;
				$la_denominacion[$ls_nivcta] = $ls_dencta;
				$la_saldo[$ls_nivcta]        = $ldec_saldo;
			    $this->ds_Balance1->insertRow("orden",$ls_orden);
		        $this->ds_Balance1->insertRow("num_reg",$li_nro_reg);
				$this->ds_Balance1->insertRow("sc_cuenta",$ls_scgcta);
				$this->ds_Balance1->insertRow("denominacion",$ls_dencta);
				$this->ds_Balance1->insertRow("nivel",$li_nivcta);
				$this->ds_Balance1->insertRow("saldo",$ldec_saldo);
		      }
		   else
		      {
			    if (empty($la_sc_cuenta[$li_nivcta]))
				   {
				     $li_nro_reg++;
					 $la_sc_cuenta[$ls_nivcta]    = $ls_scgcta;
				     $la_denominacion[$ls_nivcta] = $ls_dencta;
				     $la_saldo[$ls_nivcta]        = $ldec_saldo;				     
				     $this->ds_Balance1->insertRow("orden",$ls_orden);
				     $this->ds_Balance1->insertRow("num_reg",$li_nro_reg);
				     $this->ds_Balance1->insertRow("sc_cuenta",$ls_scgcta);
				     $this->ds_Balance1->insertRow("denominacion",$ls_dencta);
				     $this->ds_Balance1->insertRow("nivel",-$li_nivcta);
				     $this->ds_Balance1->insertRow("saldo",$ldec_saldo);
				   }
			    else
				   {
				     $li_nro_reg++;
					 $this->uf_scg_reporte_calcular_total_BG($li_nro_reg,$ls_prev_nivel,$ls_nivcta,$la_sc_cuenta,$la_denominacion,$la_saldo); 
				     $la_sc_cuenta[$ls_nivcta]    = $ls_scgcta;
				     $la_denominacion[$ls_nivcta] = $ls_dencta;
				     $la_saldo[$ls_nivcta]	 	  = $ldec_saldo;
				     $this->ds_Balance1->insertRow("orden",$ls_orden);
				     $this->ds_Balance1->insertRow("num_reg",$li_nro_reg);
				     $this->ds_Balance1->insertRow("sc_cuenta",$ls_scgcta);
				     $this->ds_Balance1->insertRow("denominacion",$ls_dencta);
				     $this->ds_Balance1->insertRow("nivel",-$li_nivcta);
				     $this->ds_Balance1->insertRow("saldo",$ldec_saldo);
				   }
			 }
		   $ls_prev_nivel=$li_nivcta;			
	     }
	 $this->uf_scg_reporte_calcular_total_BG(&$li_nro_reg,$ls_prev_nivel,1,$la_sc_cuenta,$la_denominacion,$la_saldo); 			
	 $ld_saldo_resultado=($ld_saldo_resultado+$ld_saldo_ganancia);
	
	 $this->uf_scg_reporte_actualizar_resultado_BG($this->ls_cta_resultado,$ld_saldo_ganancia,$li_nro_reg,$ls_orden); 
	 $this->ds_Balance1->sortData("sc_cuenta");
	  
	 $li_total=$this->ds_Balance1->getRowCount("sc_cuenta");
	 
	 for ($li_i=1;$li_i<=$li_total;$li_i++)
	     {	
		   $ls_sc_cuenta	= $this->ds_Balance1->data["sc_cuenta"][$li_i];
		   $ls_orden		= $this->ds_Balance1->data["orden"][$li_i];
		   $li_nro_reg		= $this->ds_Balance1->data["num_reg"][$li_i];
		   $ls_denominacion = $this->ds_Balance1->data["denominacion"][$li_i];
		   $ls_nivel		= $this->ds_Balance1->data["nivel"][$li_i];
		   $ld_saldo		= $this->ds_Balance1->data["saldo"][$li_i];
		   $li_pos			= $this->ds_Prebalance->find("sc_cuenta",$ls_sc_cuenta);
		   if ($li_pos>0)
		      {  
		        $ls_rnivel = $this->ds_Prebalance->data["rnivel"][$li_pos];
		      }
		   else
		      {
		        $ls_rnivel=0;
		      }
	       $ds_Balance2->insertRow("orden",$ls_orden);
	       $ds_Balance2->insertRow("num_reg",$li_nro_reg);
	       $ds_Balance2->insertRow("sc_cuenta",$ls_sc_cuenta);
	       $ds_Balance2->insertRow("denominacion",$ls_denominacion);
	       $ds_Balance2->insertRow("nivel",$ls_nivel);
	       $ds_Balance2->insertRow("saldo",$ld_saldo);
	       $ds_Balance2->insertRow("rnivel",$ls_rnivel);
		   $ds_Balance2->insertRow("total",$ld_saldo_resultado);
	     }//for
	 $li_tot=$ds_Balance2->getRowCount("sc_cuenta");
	 for ($li_i=1;$li_i<=$li_tot;$li_i++)
	     {  
		   $ls_sc_cuenta	   = $ds_Balance2->data["sc_cuenta"][$li_i];
		   $ls_orden		   = $ds_Balance2->data["orden"][$li_i];
		   $li_nro_reg		   = $ds_Balance2->data["num_reg"][$li_i];
		   $ls_denominacion    = $ds_Balance2->data["denominacion"][$li_i];
		   $ls_nivel		   = $ds_Balance2->data["nivel"][$li_i];
		   $ld_saldo		   = $ds_Balance2->data["saldo"][$li_i];
		   $ls_rnivel		   = $ds_Balance2->data["rnivel"][$li_i];
		   $ld_saldo_resultado = $ds_Balance2->data["total"][$li_i];
		   $this->ds_reporte->insertRow("orden",$ls_orden);
		   $this->ds_reporte->insertRow("num_reg",$li_nro_reg);
		   $this->ds_reporte->insertRow("sc_cuenta",$ls_sc_cuenta);
		   $this->ds_reporte->insertRow("denominacion",$ls_denominacion);
		   $this->ds_reporte->insertRow("nivel",$ls_nivel);
		   $this->ds_reporte->insertRow("saldo",$ld_saldo);
		   $this->ds_reporte->insertRow("rnivel",$ls_rnivel);
		   $this->ds_reporte->insertRow("total",$ld_saldo_resultado);
	     }//for
     unset($this->ds_Prebalance,$this->ds_Balance1,$ds_Balance2);
	 return $lb_valido;  
	}
 function uf_load_creditos_nota($as_codemp, $as_numncnd, $as_numrecdoc, $as_codtipdoc, $as_numsol, $as_codope, $as_tipproben, $as_codproben)
 {
     require_once "../../shared/class_folder/sigesp_include.php";
     $io_include = new sigesp_include();
     $io_conexion = $io_include->uf_conectar();
     require_once "../../shared/class_folder/class_sql.php";
     $io_sql = new class_sql($io_conexion);
     require_once "../../shared/class_folder/class_mensajes.php";
     $io_mensajes = new class_mensajes();
     require_once "../../shared/class_folder/class_funciones.php";
     $io_funciones = new class_funciones();
     require_once "../../shared/class_folder/class_datastore.php";
     $io_ds_cargos = new class_datastore();
     $ls_sqlaux = "";
     $ld_montotcre = 0;
     if ($as_tipproben == 'P') {
         $ls_sqlaux = " AND cxp_dc_cargos.cod_pro='" . $as_codproben . "' AND cxp_dc_cargos.ced_bene='----------'";
     } elseif ($as_tipproben == 'B') {
         $ls_sqlaux = " AND trim(cxp_dc_cargos.ced_bene)='" . trim($as_codproben) . "' AND cxp_dc_cargos.cod_pro='----------'";
     } else {
         $ls_sqlaux = " AND cxp_dc_cargos.cod_pro='----------'";
     }
     $ls_sql = "SELECT cxp_dc_cargos.* \n\t               FROM cxp_dc_cargos, cxp_rd, cxp_solicitudes, cxp_dt_solicitudes\n\t\t\t\t  WHERE cxp_dc_cargos.codemp='" . $as_codemp . "'\n\t\t\t\t    AND cxp_dc_cargos.numsol='" . $as_numsol . "'\n\t\t\t\t\tAND trim(cxp_dc_cargos.numrecdoc)='" . trim($as_numrecdoc) . "'\n\t\t\t\t\tAND cxp_dc_cargos.codtipdoc='" . $as_codtipdoc . "'\n\t\t\t\t\tAND cxp_dc_cargos.codope='" . $as_codope . "'\n\t\t\t\t\tAND trim(cxp_dc_cargos.numdc)='" . trim($as_numncnd) . "' {$ls_sqlaux}\n\t\t\t\t\tAND cxp_dc_cargos.codemp=cxp_solicitudes.codemp\n\t\t\t\t\tAND cxp_dc_cargos.numsol=cxp_solicitudes.numsol\t\t\t\t\t\n\t\t\t\t\tAND cxp_solicitudes.codemp=cxp_dt_solicitudes.codemp\n\t\t\t\t\tAND cxp_solicitudes.numsol=cxp_dt_solicitudes.numsol\t\t\t\t\t\n\t\t\t\t\tAND cxp_dc_cargos.codemp=cxp_dt_solicitudes.codemp\n\t\t\t\t\tAND cxp_dc_cargos.codtipdoc=cxp_dt_solicitudes.codtipdoc\n\t\t\t\t\tAND cxp_dc_cargos.numrecdoc=cxp_dt_solicitudes.numrecdoc\n\t\t\t\t\tAND cxp_dc_cargos.cod_pro=cxp_dt_solicitudes.cod_pro\n\t\t\t\t\tAND cxp_dc_cargos.ced_bene=cxp_dt_solicitudes.ced_bene\t\t\t\t\t\n\t\t\t\t\tAND cxp_rd.codemp=cxp_dt_solicitudes.codemp\n\t\t\t\t\tAND cxp_rd.codtipdoc=cxp_dt_solicitudes.codtipdoc\n\t\t\t\t\tAND cxp_rd.numrecdoc=cxp_dt_solicitudes.numrecdoc\n\t\t\t\t\tAND cxp_rd.cod_pro=cxp_dt_solicitudes.cod_pro\n\t\t\t\t\tAND cxp_rd.ced_bene=cxp_dt_solicitudes.ced_bene";
     //echo $ls_sql.'<br>';
     $rs_data = $io_sql->select($ls_sql);
     if ($rs_data === false) {
         $this->io_mensajes->message("CLASE->Recepcion MÉTODO->uf_load_creditos_nota ERROR->" . $this->io_funciones->uf_convertirmsg($this->io_sql->message));
         $rs_data = false;
     } else {
         $li_numrows = $io_sql->num_rows($rs_data);
         if ($li_numrows > 0) {
             while ($row = $io_sql->fetch_row($rs_data)) {
                 $ls_codcar = $row["codcar"];
                 $ld_monret = $row["monret"];
                 $ls_spgcta = trim($row["spg_cuenta"]);
                 $ls_estcla = $row["estcla"];
                 $ld_monret = $row["monret"];
                 $ld_monobjret = $row["monobjret"];
                 $ls_codestpro = $row["codestpro1"] . $row["codestpro2"] . $row["codestpro3"] . $row["codestpro4"] . $row["codestpro5"];
                 $io_ds_cargos->insertRow("codcar", $ls_codcar);
                 $io_ds_cargos->insertRow("spg_cuenta", $ls_spgcta);
                 $io_ds_cargos->insertRow("estcla", $ls_estcla);
                 $io_ds_cargos->insertRow("codestpro", $ls_codestpro);
                 $io_ds_cargos->insertRow("monret", number_format($ld_monret, 2, ',', '.'));
                 $io_ds_cargos->insertRow("monobjret", number_format($ld_monobjret, 2, ',', '.'));
                 $ld_montotcre += $ld_monret;
             }
             $_SESSION["la_crenotas"] = $io_ds_cargos->data;
         }
     }
     unset($io_include, $io_conexion, $io_sql, $io_mensajes, $io_funciones, $io_ds_cargos);
     return $ld_montotcre;
 }
	function uf_balance_general($ad_fecfin,$ai_nivel)
	{
		$lb_valido=true;
		$ds_Balance2=new class_datastore();
		$ldec_resultado=0;
		$ld_saldo_ganancia=0;
		$this->ls_activo=trim($this->la_empresa["activo"]);
		$this->ls_pasivo=trim($this->la_empresa["pasivo"]);
		$this->ls_resultado=trim($this->la_empresa["resultado"]);
		$this->ls_capital=trim($this->la_empresa["capital"]);
		$this->ls_orden_d=trim($this->la_empresa["orden_d"]);
		$this->ls_orden_h=trim($this->la_empresa["orden_h"]);
		$this->ls_ingreso=trim($this->la_empresa["ingreso"]);
		$this->ls_gastos =trim($this->la_empresa["gasto"]);
		$this->ls_cta_resultado = trim($this->la_empresa["c_resultad"]);
		$ad_fecfin=$this->io_fun->uf_convertirdatetobd($ad_fecfin);
		$ls_codemp=$this->la_empresa["codemp"];
		$ls_sql=" SELECT SC.sc_cuenta,SC.denominacion,SC.status,SC.nivel as rnivel, ".
              "        coalesce(curSaldo.T_Debe,0) as total_debe, ".
              "        coalesce(curSaldo.T_Haber,0) as total_haber,0 as nivel ".
              " FROM scg_cuentas SC LEFT OUTER JOIN (SELECT codemp,sc_cuenta, coalesce(sum(debe_mesaux),0)as T_Debe, ".
			  "                                             coalesce(sum(haber_mesaux),0) as T_Haber ".
              "                                      FROM   scg_saldos ".
              "                                      WHERE  codemp='".$ls_codemp."' AND fecsal<='".$ad_fecfin."' ".
              "                                      GROUP BY codemp,sc_cuenta) curSaldo ".
              " ON SC.sc_cuenta=curSaldo.sc_cuenta ".
              " WHERE SC.codemp=curSaldo.codemp AND  curSaldo.codemp='".$ls_codemp."' AND ".
			  "       (SC.sc_cuenta like '".$this->ls_activo."%' OR SC.sc_cuenta like '".$this->ls_pasivo."%' OR ".
			  "        SC.sc_cuenta like '".$this->ls_resultado."%' OR  SC.sc_cuenta like '".$this->ls_capital."%' OR ".
			  "        SC.sc_cuenta like '".$this->ls_orden_d."%' OR SC.sc_cuenta like '".$this->ls_orden_h."%') ".
              " ORDER BY  SC.sc_cuenta ";
		$rs_data=$this->io_sql->select($ls_sql);

	 if($rs_data===false)
	 {// error interno sql
		$this->is_msg_error="Error en consulta metodo uf_scg_reporte_balance_general ".$this->io_fun->uf_convertirmsg($this->io_sql->message);
		print $this->io_sql->message;
		$lb_valido = false;
	 }
	 else
	 {
        $ld_saldo_ganancia=0;
		while($row=$this->io_sql->fetch_row($rs_data))
		{
		  $ls_sc_cuenta=$row["sc_cuenta"];
		  $ls_denominacion=$row["denominacion"];
		  $ls_status=$row["status"];
		  $ls_rnivel=$row["rnivel"];
		  $ld_total_debe=$row["total_debe"];
		  $ld_total_haber=$row["total_haber"];
		  if($ls_status=="C")
		  {
    		$ls_nivel="4";		
		  }//if
		  else
		  {
    		$ls_nivel=$ls_rnivel;		
		  }//else
		  if($ls_nivel<=$ai_nivel)
		  {
			  $this->ds_Prebalance->insertRow("sc_cuenta",$ls_sc_cuenta);
			  $this->ds_Prebalance->insertRow("denominacion",$ls_denominacion);
			  $this->ds_Prebalance->insertRow("status",$ls_status);
			  $this->ds_Prebalance->insertRow("nivel",$ls_nivel);
			  $this->ds_Prebalance->insertRow("rnivel",$ls_rnivel);
			  $this->ds_Prebalance->insertRow("total_debe",$ld_total_debe);
			  $this->ds_Prebalance->insertRow("total_haber",$ld_total_haber);
		      $lb_valido = true;
		  }//if
		}//while
	    $li=$this->ds_Prebalance->getRowCount("sc_cuenta");
		if($li==0)
		{
		  $lb_valido = false;
		  return false;
		}//if
	 } //else
	 $ld_saldo_i=0;		
		
	 if($lb_valido)
	 {
	   $lb_valido=$this->uf_scg_reporte_select_saldo_ingreso_BG($ad_fecfin,$this->ls_ingreso,$ld_saldo_i);
	 } 
     if($lb_valido)
	 {
       $ld_saldo_g=0;	 
	   $lb_valido=$this->uf_scg_reporte_select_saldo_gasto_BG($ad_fecfin,$this->ls_gastos,$ld_saldo_g);  
	 }//if
	 if($lb_valido)
	 {
	   $ld_saldo_ganancia=$ld_saldo_ganancia+($ld_saldo_i+$ld_saldo_g);
	 }//if
	 $la_sc_cuenta=array();
	 $la_denominacion=array();
	 $la_saldo=array();
	 for($i=1;$i<=$ai_nivel;$i++)
	 {
		 $la_sc_cuenta[$i]="";
		 $la_denominacion[$i]="";
		 $la_saldo[$i]=0;
	 }//for
	 $li_nro_reg=0;
     $ld_saldo_resultado=0;
	 $li_row=$this->ds_Prebalance->getRowCount("sc_cuenta");	
	 for($li_z=1;$li_z<=$li_row;$li_z++)
	 {
		$ls_sc_cuenta=$this->ds_Prebalance->getValue("sc_cuenta",$li_z);
		$ldec_debe=$this->ds_Prebalance->getValue("total_debe",$li_z);
		$ldec_haber=$this->ds_Prebalance->getValue("total_haber",$li_z);
		$li_nivel=$this->ds_Prebalance->getValue("nivel",$li_z);	
		$ls_denominacion=$this->ds_Prebalance->getValue("denominacion",$li_z);	
		$ls_tipo_cuenta=substr($ls_sc_cuenta,0,1);
	 	switch($ls_tipo_cuenta){
			case $this->ls_activo:
				$ls_orden=1;
				break;
			case $this->ls_pasivo:
				$ls_orden=2;
				break;
			case $this->ls_capital:
				$ls_orden=3;
				break;				
			case $this->ls_resultado:
				$ls_orden=4;
				break;
			case $this->ls_orden_d:
				$ls_orden=5;
				break;		
			case $this->ls_orden_h:
				$ls_orden=6;
				break;
			default:
				$ls_orden=7;		
		}
		$ldec_saldo=$ldec_debe-$ldec_haber;
		
		if( (($ls_tipo_cuenta==$this->ls_pasivo)||($ls_tipo_cuenta==$this->ls_resultado)||($ls_tipo_cuenta==$this->ls_capital))&&($li_nivel==1))
		{
			$ld_saldo_resultado=$ld_saldo_resultado+$ldec_saldo;
			//print $ld_saldo_resultado;
		}	
		
		if($li_nivel==4)	
		{
			$li_nro_reg=$li_nro_reg+1;
			$this->ds_Balance1->insertRow("orden",$ls_orden);
		    $this->ds_Balance1->insertRow("num_reg",$li_nro_reg);
		    $this->ds_Balance1->insertRow("sc_cuenta",$ls_sc_cuenta);
		    $this->ds_Balance1->insertRow("denominacion",$ls_denominacion);
			$this->ds_Balance1->insertRow("nivel",$li_nivel);
			$this->ds_Balance1->insertRow("saldo",$ldec_saldo);
		}
		else
		{
			if(empty($la_sc_cuenta[$li_nivel]))
			{
			   $la_sc_cuenta[$ls_nivel]=$ls_sc_cuenta;
			   $la_denominacion[$ls_nivel]=$ls_denominacion;
			   $la_saldo[$ls_nivel]=$ldec_saldo;
		       $li_nro_reg=$li_nro_reg+1;
			   $this->ds_Balance1->insertRow("orden",$ls_orden);
			   $this->ds_Balance1->insertRow("num_reg",$li_nro_reg);
			   $this->ds_Balance1->insertRow("sc_cuenta",$ls_sc_cuenta);
			   $this->ds_Balance1->insertRow("denominacion",$ls_denominacion);
			   $this->ds_Balance1->insertRow("nivel",-$li_nivel);
			   $this->ds_Balance1->insertRow("saldo",$ldec_saldo);
			}
			else
			{
			   $this->uf_scg_reporte_calcular_total_BG($li_nro_reg,$ls_prev_nivel,$ls_nivel,$la_sc_cuenta,$la_denominacion,$la_saldo); 
			   $la_sc_cuenta[$ls_nivel]=$ls_sc_cuenta;
			   $la_denominacion[$ls_nivel]=$ls_denominacion;
			   $la_saldo[$ls_nivel]=$ldec_saldo;
		       $li_nro_reg=$li_nro_reg+1;
			   $this->ds_Balance1->insertRow("orden",$ls_orden);
			   $this->ds_Balance1->insertRow("num_reg",$li_nro_reg);
			   $this->ds_Balance1->insertRow("sc_cuenta",$ls_sc_cuenta);
			   $this->ds_Balance1->insertRow("denominacion",$ls_denominacion);
			   $this->ds_Balance1->insertRow("nivel",-$li_nivel);
			   $this->ds_Balance1->insertRow("saldo",$ldec_saldo);
			}
		}
		$ls_prev_nivel=$li_nivel;		
	 }					
	 $this->uf_scg_reporte_calcular_total_BG(&$li_nro_reg,$ls_prev_nivel,1,$la_sc_cuenta,$la_denominacion,$la_saldo); 			
	 $ld_saldo_resultado=($ld_saldo_resultado+$ld_saldo_ganancia);
	 /*if($ld_saldo_ganancia>0)
	 {
	 	$ld_saldo_resultado=$ld_saldo_resultado-$ld_saldo_ganancia;
	 }
	 else
	 {
	 	$ld_saldo_resultado=$ld_saldo_resultado+abs($ld_saldo_ganancia);
	 }	*/
	 $this->uf_scg_reporte_actualizar_resultado_BG($this->ls_cta_resultado,$ld_saldo_ganancia,$li_nro_reg,$ls_orden); 
	 
	 $li_total=$this->ds_Balance1->getRowCount("sc_cuenta");
	 for($li_i=1;$li_i<=$li_total;$li_i++)
	 {	
		  $ls_sc_cuenta=$this->ds_Balance1->data["sc_cuenta"][$li_i];
		  $ls_orden=$this->ds_Balance1->data["orden"][$li_i];
		  $li_nro_reg=$this->ds_Balance1->data["num_reg"][$li_i];
		  $ls_denominacion=$this->ds_Balance1->data["denominacion"][$li_i];
		  $ls_nivel=$this->ds_Balance1->data["nivel"][$li_i];
		  $ld_saldo=$this->ds_Balance1->data["saldo"][$li_i];
		  $li_pos=$this->ds_Prebalance->find("sc_cuenta",$ls_sc_cuenta);
		  if($li_pos>0)
		  { 
		    $ls_rnivel=$this->ds_Prebalance->data["rnivel"][$li_pos];
		  }
		  else
		  {
		    $ls_rnivel=0;
		  }
	      $ds_Balance2->insertRow("orden",$ls_orden);
	      $ds_Balance2->insertRow("num_reg",$li_nro_reg);
	      $ds_Balance2->insertRow("sc_cuenta",$ls_sc_cuenta);
	      $ds_Balance2->insertRow("denominacion",$ls_denominacion);
	      $ds_Balance2->insertRow("nivel",$ls_nivel);
	      $ds_Balance2->insertRow("saldo",$ld_saldo);
	      $ds_Balance2->insertRow("rnivel",$ls_rnivel);
		  $ds_Balance2->insertRow("total",$ld_saldo_resultado);
	 }//for
	 $li_tot=$ds_Balance2->getRowCount("sc_cuenta");
	 for($li_i=1;$li_i<=$li_tot;$li_i++)
	 { 
		  $ls_sc_cuenta=$ds_Balance2->data["sc_cuenta"][$li_i];
		  $ls_orden=$ds_Balance2->data["orden"][$li_i];
		  $li_nro_reg=$ds_Balance2->data["num_reg"][$li_i];
		  $ls_denominacion=$ds_Balance2->data["denominacion"][$li_i];
		  $ls_nivel=$ds_Balance2->data["nivel"][$li_i];
		  $ld_saldo=$ds_Balance2->data["saldo"][$li_i];
		  $ls_rnivel=$ds_Balance2->data["rnivel"][$li_i];
		  $ld_saldo_resultado=$ds_Balance2->data["total"][$li_i];
		  if($ls_rnivel<=$ai_nivel)
		  {
			  $this->ds_reporte->insertRow("orden",$ls_orden);
			  $this->ds_reporte->insertRow("num_reg",$li_nro_reg);
			  $this->ds_reporte->insertRow("sc_cuenta",$ls_sc_cuenta);
			  $this->ds_reporte->insertRow("denominacion",$ls_denominacion);
			  $this->ds_reporte->insertRow("nivel",$ls_nivel);
			  $this->ds_reporte->insertRow("saldo",$ld_saldo);
			  $this->ds_reporte->insertRow("rnivel",$ls_rnivel);
			  $this->ds_reporte->insertRow("total",$ld_saldo_resultado);
		  }//if	  
	 }//for
     unset($this->ds_Prebalance);
     unset($this->ds_Balance1);
     unset($ds_Balance2);
	 return $lb_valido;  
	}
	function uf_calcular_saldolibro($as_codban,$as_ctaban,$ad_fecha)
	{
	/////////////////////////////////////////////////////////////////////////////
	// Funtion	    :  uf_calcular_saldolibro
	//	Return	    :  ldec_saldo
	//	Descripcion :  Fucnion que se encarga de obtener el saldo de los movimientos registrdos en libro
	///////////////////////////////////////////////////////////////////////////// 
	$ldec_monto_haber=0;$ldec_monto_debe=0;$ldec_saldo=0;
	
	$ls_codemp = $this->dat["codemp"];	
	$ld_fecha=$this->io_fecha->uf_last_day(substr($ad_fecha,0,2),substr($ad_fecha,3,4));
	$ld_fecha = $this->fun->uf_convertirdatetobd($ld_fecha);
	$ds_debe=new class_datastore();
	$ds_haber=new class_datastore();
	//--------------------DEBE------------------------------------//	
	$ls_sql="SELECT (monto - monret) As mondeb,estmov
				   FROM scb_movbco
				   WHERE codban='".$as_codban."' AND ctaban='".$as_ctaban."' AND  
	 			   (codope='NC' OR codope='DP')  
					AND ((estreglib IS NULL) or estreglib<>'A' or (estreglib='A' AND estcon=1)) AND 
					codemp='".$ls_codemp."' AND fecmov<='".$ld_fecha."'";
		
	$rs_saldos=$this->io_sql->select($ls_sql);
	if(($rs_saldos==false)&&($this->io_sql->message!=""))
	{
		print "Saldolibro".$this->io_sql->message;
	}
	else
	{
	    while($row=$this->io_sql->fetch_row($rs_saldos))
		{
			$ds_debe->insertRow("mondeb", $row["mondeb"]);
			$ds_debe->insertRow("estmov", $row["estmov"]);	
		}
	}
	$this->io_sql->free_result($rs_saldos);
	
//-----------------------HABER---------------------------------------//
	$ls_sql="SELECT (monto - monret) As monhab,estmov
				   FROM  scb_movbco 
				   WHERE codban='".$as_codban."' AND ctaban='".$as_ctaban."' AND  
	  			   (codope='RE' OR codope='ND' OR codope='CH') 
					 AND ((estreglib IS NULL) or estreglib<>'A' OR (estreglib='A' AND estcon=1)) AND codemp='".$ls_codemp."'
					  AND fecmov<='".$ld_fecha."'";
		    
	$rs_saldos=$this->io_sql->select($ls_sql);
	if(($rs_saldos==false)&&($this->io_sql->message!=""))
	{
		print "Saldolibro".$this->io_sql->message;
	}
	else
	{
	    while($row=$this->io_sql->fetch_row($rs_saldos))
		{
			$ds_haber->insertRow("monhab", $row["monhab"]);
			$ds_haber->insertRow("estmov", $row["estmov"]);	
		}
	}
	$this->io_sql->free_result($rs_saldos);	
	$li_totdebe=$ds_debe->getRowCount("estmov");
	$ldec_totdeb=0;
	$ldec_totdeb_anulado=0;
	for($li_i=1;$li_i<=$li_totdebe;$li_i++)
	{
		$ls_estmov=$ds_debe->getValue("estmov",$li_i);
		$ls_mondeb=$ds_debe->getValue("mondeb",$li_i);
		if($ls_estmov!='A')
		{
			$ldec_totdeb+=$ls_mondeb;
		}
		else
		{
			$ldec_totdeb_anulado+=$ls_mondeb;
		}		
	}
	
	$ldec_totdeb=$ldec_totdeb-$ldec_totdeb_anulado;
	$li_tothaber=$ds_haber->getRowCount("estmov");
	$ldec_tothab=0;
	$ldec_tothab_anulado=0;
	for($li_i=1;$li_i<=$li_tothaber;$li_i++)
	{
		$ls_estmov=$ds_haber->getValue("estmov",$li_i);
		$ls_monhab=$ds_haber->getValue("monhab",$li_i);
		if($ls_estmov!='A')
		{
			$ldec_tothab+=$ls_monhab;
		}
		else
		{
			$ldec_tothab_anulado+=$ls_monhab;
		}		
	}
	$ldec_tothab=number_format($ldec_tothab,4,'.','');
	$ldec_tothab_anulado=number_format($ldec_tothab_anulado,4,'.','');
	$ldec_tothab=$ldec_tothab-$ldec_tothab_anulado;
	$ldec_saldo=$ldec_totdeb-$ldec_tothab;
    return $ldec_saldo;	
	}
	function uf_preparar_resumen($ls_codemp,$adt_fecdesde,$adt_fechasta)
	{
		$ls_cuenta_resultado="";$ldec_ganancia="";
		$li_maxnivel=3;
		$li_activo=$this->la_empresa["activo"];
		$li_pasivo=$this->la_empresa["pasivo"];
		$li_resultado=$this->la_empresa["resultado"];
		$li_capital=$this->la_empresa["capital"];		
		$li_orden_d=$this->la_empresa["orden_d"];
		$li_orden_h=$this->la_empresa["orden_h"];		
		$li_ingreso=$this->la_empresa["ingreso"];
		$li_gastos =$this->la_empresa["gasto"];
		$ds_balance2=new class_datastore();
		$ls_cuenta_resultado = $this->la_empresa["c_resultad"];		
						
		$ls_sql=" SELECT SC.sc_cuenta,SC.denominacion,SC.status,SC.nivel as rnivel, ".
              "        coalesce(curSaldo.T_Debe,0) as total_debe, ".
              "        coalesce(curSaldo.T_Haber,0) as total_haber,0 as nivel ".
              " FROM scg_cuentas SC LEFT OUTER JOIN (SELECT codemp,sc_cuenta, coalesce(sum(debe_mesaux),0)as T_Debe, ".
			  "                                             coalesce(sum(haber_mesaux),0) as T_Haber ".
              "                                      FROM   scg_saldos ".
              "                                      WHERE  codemp='".$ls_codemp."' AND fecsal between '".$this->io_fun->uf_convertirdatetobd($adt_fecdesde)."' AND '".$this->io_fun->uf_convertirdatetobd($adt_fechasta)."' ".
              "                                      GROUP BY sc_cuenta) curSaldo ".
              " ON SC.sc_cuenta=curSaldo.sc_cuenta ".
              " WHERE SC.codemp=curSaldo.codemp AND  curSaldo.codemp='".$ls_codemp."' AND ".
			  "       (SC.sc_cuenta like '".$li_activo."%' OR SC.sc_cuenta like '".$li_pasivo."%' OR ".
			  "        SC.sc_cuenta like '".$li_resultado."%' OR  SC.sc_cuenta like '".$li_capital."%' OR ".
			  "        SC.sc_cuenta like '".$li_orden_d."%' OR SC.sc_cuenta like '".$li_orden_h."%') AND SC.nivel<=".$li_maxnivel.
              " ORDER BY  SC.sc_cuenta ";	
	 $rs_data=$this->io_sql->select($ls_sql);
	 if($rs_data===false)
	 {// error interno sql
		$this->is_msg_error="Error en consulta metodo uf_scg_reporte_balance_general ".$this->io_fun->uf_convertirmsg($this->io_sql->message);
		print $this->is_msg_error;
		$lb_valido = false;
	 }
	 else
	 {
        $ld_saldo_ganancia=0;
		while($row=$this->io_sql->fetch_row($rs_data))
		{
		  $ls_sc_cuenta=$row["sc_cuenta"];
		  $ls_denominacion=$row["denominacion"];
		  $ls_status=$row["status"];
		  $ls_rnivel=$row["rnivel"];
		  $ld_total_debe=$row["total_debe"];
		  $ld_total_haber=$row["total_haber"];
		  if($ls_status=="C")
		  {
    		$ls_nivel="4";		
		  }//if
		  else
		  {
    		$ls_nivel=$ls_rnivel;		
		  }//else
		  $this->ds_prebalance->insertRow("sc_cuenta",$ls_sc_cuenta);
		  $this->ds_prebalance->insertRow("denominacion",$ls_denominacion);
		  $this->ds_prebalance->insertRow("status",$ls_status);
		  $this->ds_prebalance->insertRow("nivel",$ls_nivel);
		  $this->ds_prebalance->insertRow("rnivel",$ls_rnivel);
		  $this->ds_prebalance->insertRow("total_debe",$ld_total_debe);
		  $this->ds_prebalance->insertRow("total_haber",$ld_total_haber);
		  $lb_valido = true;
		}//while
	    $li=$this->ds_prebalance->getRowCount("sc_cuenta");
		if($li==0)
		{
		  $lb_valido = false;
		  return false;
		}//if
	 } //else
	 $ld_saldo_i=0;
	 if($lb_valido)
	 {
	   $lb_valido=$this->uf_scg_reporte_select_saldo_ingreso_BG($adt_fecdesde,$adt_fechasta,$li_ingreso,$ld_saldo_i);
	 } 
     if($lb_valido)
	 {
       $ld_saldo_g=0;	 
	   $lb_valido=$this->uf_scg_reporte_select_saldo_gasto_BG($adt_fecdesde,$adt_fechasta,$li_gastos,$ld_saldo_g);  
	 }//if
	 if($lb_valido)
	 {
	   $ld_saldo_ganancia=$ld_saldo_ganancia+($ld_saldo_i+$ld_saldo_g);
	 }//if	 
     $la_sc_cuenta=array();
	 $la_denominacion=array();
	 $la_saldo=array();
	 $li_nivel=3;
	 for($i=1;$i<=$li_nivel;$i++)
	 {
		 $la_sc_cuenta[$i]="";
		 $la_denominacion[$i]="";
		 $la_saldo[$i]=0;
	 }//for				
		
	 $li_nro_reg=0;
     $ld_saldo_resultado=0;
	 $li_row=$this->ds_prebalance->getRowCount("sc_cuenta");
	 for($li_i=1;$li_i<=$li_row;$li_i++)
	 {
		  $ls_sc_cuenta=$this->ds_prebalance->getValue("sc_cuenta",$li_i);
		  $ls_status=$this->ds_prebalance->getValue("status",$li_i);
		  $ls_denominacion=$this->ds_prebalance->getValue("denominacion",$li_i);
		  $ls_rnivel=$this->ds_prebalance->getValue("rnivel",$li_i);
		  $ld_total_debe=$this->ds_prebalance->getValue("total_debe",$li_i);
		  $ld_total_haber=$this->ds_prebalance->getValue("total_haber",$li_i); 
		  $ls_nivel=$this->ds_prebalance->getValue("nivel",$li_i); 
		  $ls_tipo_cuenta=substr($ls_sc_cuenta,0,1);
		  $ls_orden="7";
		  if($ls_tipo_cuenta==$li_activo  ) { $ls_orden="1"; }	
		  if($ls_tipo_cuenta==$li_pasivo  ) { $ls_orden="2"; }	
		  if($ls_tipo_cuenta==$li_capital ) { $ls_orden="3"; }	
		  if($ls_tipo_cuenta==$li_resultado){ $ls_orden="4"; } 	
		  if($ls_tipo_cuenta==$li_orden_d ) { $ls_orden="5"; }
		  if($ls_tipo_cuenta==$li_orden_h ) { $ls_orden="6"; }	
		
		  $ld_saldo=abs($ld_total_debe-$ld_total_haber);
		  if((($ls_tipo_cuenta==$li_pasivo)||($ls_tipo_cuenta==$li_resultado)||($ls_tipo_cuenta==$li_capital))&&($ls_nivel==1))
		  {
			  $ld_saldo_resultado=$ld_saldo_resultado+$ld_saldo;
		  }//if
		  if($ls_nivel==4)
		  {
		    $li_nro_reg=$li_nro_reg+1; 
		    $this->ds_balance1->insertRow("orden",$ls_orden);
		    $this->ds_balance1->insertRow("num_reg",$li_nro_reg);
		    $this->ds_balance1->insertRow("sc_cuenta",$ls_sc_cuenta);
		    $this->ds_balance1->insertRow("denominacion",$ls_denominacion);
			$this->ds_balance1->insertRow("nivel",$ls_nivel);
			$this->ds_balance1->insertRow("saldo",$ld_saldo);
		  }//if
		  else
		  {
		    if (empty($la_sc_cuenta[$ls_nivel]))
			{
			   $la_sc_cuenta[$ls_nivel]=$ls_sc_cuenta;
			   $la_denominacion[$ls_nivel]=$ls_denominacion;
			   $la_saldo[$ls_nivel]=$ld_saldo;
		       $li_nro_reg=$li_nro_reg+1;
			   $this->ds_balance1->insertRow("orden",$ls_orden);
			   $this->ds_balance1->insertRow("num_reg",$li_nro_reg);
			   $this->ds_balance1->insertRow("sc_cuenta",$ls_sc_cuenta);
			   $this->ds_balance1->insertRow("denominacion",$ls_denominacion);
			   $this->ds_balance1->insertRow("nivel",-$ls_nivel);
			   $this->ds_balance1->insertRow("saldo",$ld_saldo);
			}//if
            else
			{
			   $this->uf_scg_reporte_calcular_total_BG($li_nro_reg,$ls_prev_nivel,$ls_nivel,$la_sc_cuenta,$la_denominacion,$la_saldo,$li_activo,$li_pasivo,$li_capital,$li_resultado,$li_orden_d,$li_orden_h); 
			   $la_sc_cuenta[$ls_nivel]=$ls_sc_cuenta;
			   $la_denominacion[$ls_nivel]=$ls_denominacion;
			   $la_saldo[$ls_nivel]=$ld_saldo;
		       $li_nro_reg=$li_nro_reg+1;
			   $this->ds_balance1->insertRow("orden",$ls_orden);
			   $this->ds_balance1->insertRow("num_reg",$li_nro_reg);
			   $this->ds_balance1->insertRow("sc_cuenta",$ls_sc_cuenta);
			   $this->ds_balance1->insertRow("denominacion",$ls_denominacion);
			   $this->ds_balance1->insertRow("nivel",-$ls_nivel);
			   $this->ds_balance1->insertRow("saldo",$ld_saldo);
			}//else 			
          $ls_prev_nivel=$ls_nivel;		 
		}//else
	 }//for
	 $this->uf_scg_reporte_actualizar_resultado_BG($ls_cuenta_resultado,abs($ld_saldo_ganancia),$li_nro_reg,$ls_orden); 
	 if($ld_saldo_ganancia>0)	
	  { 
		$ld_saldo_resultado=$ld_saldo_resultado-$ld_saldo_ganancia;
	  }
	  else
	  {
	   $ld_saldo_resultado=$ld_saldo_resultado+abs($ld_saldo_ganancia);
	  }
	 $li_total=$this->ds_balance1->getRowCount("sc_cuenta");
	 for($li_i=1;$li_i<=$li_total;$li_i++)
	 {	
		  $ls_sc_cuenta=$this->ds_balance1->data["sc_cuenta"][$li_i];
		  $ls_orden=$this->ds_balance1->data["orden"][$li_i];
		  $li_nro_reg=$this->ds_balance1->data["num_reg"][$li_i];
		  $ls_denominacion=$this->ds_balance1->data["denominacion"][$li_i];
		  $ls_nivel=$this->ds_balance1->data["nivel"][$li_i];
		  $ld_saldo=$this->ds_balance1->data["saldo"][$li_i];
		  $li_pos=$this->ds_prebalance->find("sc_cuenta",$ls_sc_cuenta);
		  if($li_pos>0)
		  { 
		    $ls_rnivel=$this->ds_prebalance->data["rnivel"][$li_pos];
		  }
		  else
		  {
		    $ls_rnivel=0;
		  }
	      $ds_balance2->insertRow("orden",$ls_orden);
	      $ds_balance2->insertRow("num_reg",$li_nro_reg);
	      $ds_balance2->insertRow("sc_cuenta",$ls_sc_cuenta);
	      $ds_balance2->insertRow("denominacion",$ls_denominacion);
	      $ds_balance2->insertRow("nivel",$ls_nivel);
	      $ds_balance2->insertRow("saldo",abs($ld_saldo));
	      $ds_balance2->insertRow("rnivel",$ls_rnivel);
		  $ds_balance2->insertRow("total",abs($ld_saldo_resultado));
	 }//for
	 $li_tot=$ds_balance2->getRowCount("sc_cuenta");
	 
	/* for($li_i=1;$li_i<=$li_tot;$li_i++)
	 { 
		  $ls_sc_cuenta   = $ds_balance2->data["sc_cuenta"][$li_i];
		  $ls_orden       = $ds_balance2->data["orden"][$li_i];
		  $li_nro_reg     = $ds_balance2->data["num_reg"][$li_i];
		  $ls_denominacion= $ds_balance2->data["denominacion"][$li_i];
		  $ls_nivel       = $ds_balance2->data["nivel"][$li_i];
		  $ld_saldo       = $ds_balance2->data["saldo"][$li_i];
		  $ls_rnivel      = $ds_balance2->data["rnivel"][$li_i];
		  $ld_saldo_resultado=$ds_balance2->data["total"][$li_i];
		  if($ls_rnivel<=$li_maxnivel)
		  {
			  $this->ds_reporte->insertRow("orden",$ls_orden);
			  $this->ds_reporte->insertRow("num_reg",$li_nro_reg);
			  $this->ds_reporte->insertRow("sc_cuenta",$ls_sc_cuenta);
			  $this->ds_reporte->insertRow("denominacion",$ls_denominacion);
			  $this->ds_reporte->insertRow("nivel",$ls_nivel);
			  $this->ds_reporte->insertRow("saldo",$ld_saldo);
			  $this->ds_reporte->insertRow("rnivel",$ls_rnivel);
			  $this->ds_reporte->insertRow("total",$ld_saldo_resultado);
		 }//if	  
	 }//for*/
     $this->ds_prebalance->reset_ds();
     $this->ds_balance1->reset_ds();
     $ds_balance2->reset_ds();
	 return $ld_saldo_resultado;  		
	
}
					   $ldec_baseimp   = $row["baseimp"];	
					   $ls_codcar      = $row["codcar"];
					   $ls_cargo       = '';
					   $lb_valido      = false;
					   $ls_scgcuenta   = $row["sc_cuenta"]; 
					   $io_dspresupuesto->insertRow('txtcodcar',$ls_codcar);
					   $io_dspresupuesto->insertRow('txtestcla',$ls_estcla);
					   $io_dspresupuesto->insertRow('txtmontopre',$ld_monto);
					   $io_dspresupuesto->insertRow('txtbaseimp',$ldec_baseimp);
					   $io_dspresupuesto->insertRow('txtestadistico',$ls_spgcuenta);
					   $io_dspresupuesto->insertRow('txtcompromisopre',$ls_comprobante);
					   $io_dspresupuesto->insertRow('txtprogramatico',$ls_programatica);
					   
					   $ld_monto     = doubleval($ld_monto);
					   $ld_montodebe = $ld_montodebe+$ld_monto;
					   $io_dscontable->insertRow('txtcompromisocon',$ls_comprobante);
					   $io_dscontable->insertRow('txtcontable',$ls_scgcuenta);
					   $io_dscontable->insertRow('txtoperacion','D');
					   $io_dscontable->insertRow('txtmontocont',$ld_monto);
					   $io_dscontable->insertRow('txtmontoorig',$ld_monto);     
					   $ls_deduccion = '';
					 }
				}
			   $io_dscontable->insertRow('txtcompromisocon',$ls_mov_document);
			   $io_dscontable->insertRow('txtcontable',$ls_cuenta_scg);
			   $io_dscontable->insertRow('txtoperacion','H');
			   $io_dscontable->insertRow('txtmontocont',$ld_montopro);
			   $io_dscontable->insertRow('txtmontoorig',$ld_montopro); 
			       
 			   $li_totdspresupuesto=$io_dspresupuesto->getRowCount('txtestadistico'); 
				$li_auxpre   = 0;
 function uf_procesar_programacion($as_filnam, $ai_totrow, $aa_seguridad)
 {
     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //	     Function: uf_procesar_programacion
     //		   Access: private
     //	    Arguments: $as_filnam
     //                   $ai_totrow
     //                   $aa_seguridad
     //	      Returns: .
     //	  Description: .
     //	   Creado Por: Ing. Nestor Falcón.
     //   Fecha Creación: 07/07/2008. 							Fecha Última Modificación : 07/07/2008.
     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     require_once "../shared/class_folder/class_datastore.php";
     $io_dsprog = new class_datastore();
     $lb_valido = true;
     $ls_cedben = $_POST["txtcedben"];
     $lb_exiben = $this->io_xml->uf_validar_beneficiario($this->ls_codemp, $ls_cedben);
     if ($lb_exiben) {
         $ls_numsol = $_POST["txtnumsol"];
         $ls_fecliq = $this->io_funcion->uf_convertirdatetobd($_POST["txtfecliq"]);
         $lb_valido = $this->uf_load_solicitud_pago($as_filnam, $ls_numsol, $ls_fecliq);
         if ($lb_valido) {
             for ($li_i = 1; $li_i <= $ai_totrow; $li_i++) {
                 $ls_numsoldes = $_POST["hidnumsol" . $li_i];
                 if ($ls_numsoldes != $ls_numsol) {
                     $ls_errmsg = "{$as_filnam}.- Inconsistencia entre Numeros de Solicitud (Cabecera/Detalle) !!!";
                     $this->io_msg->message($ls_errmsg);
                     $lb_valido = false;
                 }
                 if ($lb_valido) {
                     $ls_codban = $_POST["hidcodban" . $li_i];
                     $lb_exiban = $this->io_xml->uf_validar_banco($this->ls_codemp, $ls_codban);
                     if (!$lb_exiban) {
                         $ls_errmsg = "{$as_filnam}.- Codigo del Banco no encontrado !!!";
                         $this->io_msg->message($ls_errmsg);
                         $lb_valido = false;
                     }
                 }
                 if ($lb_valido) {
                     $ls_ctaban = $_POST["hidctaban" . $li_i];
                     $lb_exicta = $this->io_xml->uf_validar_cuenta_bancaria($this->ls_codemp, $ls_codban, $ls_ctaban);
                     if (!$lb_exicta) {
                         $ls_errmsg = "{$ls_filnam}.- Cuenta Bancaria no encontrada !!!";
                         $this->io_msg->message($ls_errmsg);
                         $lb_valido = false;
                     }
                 }
                 if ($lb_valido) {
                     $io_dsprog->insertRow("codban", $ls_codban);
                     $io_dsprog->insertRow("ctaban", $ls_ctaban);
                     $io_dsprog->insertRow("numsol", $ls_numsol);
                     $io_dsprog->insertRow("fecpropag", $ls_fecliq);
                 } else {
                     if (isset($io_dsprog) || !empty($io_dsprog)) {
                         unset($io_dsprog);
                     }
                 }
             }
         }
     } else {
         $ls_msgerr = "{$as_filnam}.- Código/Cédula del Beneficiario no encontrado !!!";
         $this->io_msg->message($ls_msgerr);
         $lb_valido = false;
     }
     if ($lb_valido) {
         $la_items = array('0' => 'numsol', '1' => 'codban', '2' => 'ctaban');
         $io_dsprog->group_by($la_items, array(), 'codban');
         $this->io_sql->begin_transaction();
         $lb_valido = $this->uf_insertar_programacion($io_dsprog, $aa_seguridad);
     }
     if ($lb_valido) {
         $this->io_sql->commit();
         $this->io_xml->{$io_docxml}->save($as_filnam);
         $this->io_msg->message("Documento {$as_filnam}, procesado con Éxito !!!");
     } else {
         $this->io_sql->rollback();
         $this->io_msg->message("Documento {$as_filnam}, No se realizó la Programación del Pago !!!");
     }
 }
     print " close();";
     print "</script>";
 } else {
     error_reporting(E_ALL);
     set_time_limit(1800);
     $io_pdf = new Cezpdf('LETTER', 'portrait');
     // Instancia de la clase PDF
     $io_pdf->selectFont('../../shared/ezpdf/fonts/Helvetica.afm');
     // Seleccionamos el tipo de letra
     $io_pdf->ezSetCmMargins(4, 2.5, 3, 3);
     // Configuración de los margenes en centímetros
     $li_totrow = $io_report->DS->getRowCount("numsol");
     if ($li_totrow > 1) {
         for ($li_i = 1; $li_i <= $li_totrow; $li_i++) {
             $ls_denominacion = $io_report->DS->data["dentipdoc"][$li_i];
             $ds_dentipdoc->insertRow("dentipsol", $ls_denominacion);
         }
         $ds_dentipdoc->group("dentipsol");
         $li_fila = $ds_dentipdoc->getRowCount("dentipsol");
         for ($li_i = 1; $li_i <= $li_fila; $li_i++) {
             $ls_denominacion = $ds_dentipdoc->getValue("dentipsol", $li_i);
             if ($ls_denominacion != "") {
                 if ($li_i == 1) {
                     $ls_dentipdoc = $ls_denominacion;
                 } else {
                     $ls_dentipdoc = $ls_dentipdoc . ", " . $ls_denominacion;
                 }
             }
         }
     } else {
         $ls_dentipdoc = $io_report->DS->data["dentipdoc"][1];
 function uf_procesar_cuentas($as_cuenta_spg, $as_denominacion_cta, $aa_estpro, $as_cuenta_scg, $aa_security)
 {
     $ls_spg_cuenta = $as_cuenta_spg;
     $ls_cuenta_tempo = $ls_spg_cuenta;
     $ls_denominacion_cta = $as_denominacion_cta;
     $ls_scg_cuenta = $as_cuenta_scg;
     $ls_codest1 = $aa_estpro[0];
     $ls_codest2 = $aa_estpro[1];
     $ls_codest3 = $aa_estpro[2];
     $ls_codest4 = $aa_estpro[3];
     $ls_codest5 = $aa_estpro[4];
     $ls_estcla = $aa_estpro[5];
     $ls_scgctaint = $aa_estpro[6];
     $lb_valido = true;
     //Tomo los valores anteriores de la cuenta y denominacion.
     if ($this->int_spg->uf_spg_select_cuenta($this->dat["codemp"], $aa_estpro, $ls_spg_cuenta, &$ls_status, &$ls_denominacion, $ls_scg_cuenta)) {
         $lb_valido = $this->int_spg->uf_spg_update_cuenta($ls_codest1, $ls_codest2, $ls_codest3, $ls_codest4, $ls_codest5, $ls_estcla, $ls_spg_cuenta, $ls_denominacion_cta, $as_cuenta_scg);
         if ($lb_valido) {
             $ls_estpro1 = "";
             $ls_estpro2 = "";
             $ls_ctapu = "";
             $ls_denctapu = "";
             $ls_ctaplan = "";
             $this->is_msg_error = "Denominación Actualizada";
             $disabled = "";
             $this->int_spg->io_sql->commit();
             /////////////////////////////////         SEGURIDAD               /////////////////////////////
             $ls_evento = "UPDATE";
             $ls_desc_event = "Actualizo la cuenta " . $ls_spg_cuenta . ", asociada a la programatica " . $ls_codest1 . "-" . $ls_codest2 . "-" . $ls_codest3 . "-" . $ls_codest4 . "-" . $ls_codest5 . " y a la cuenta contable " . $ls_scg_cuenta;
             $ls_variable = $this->io_seguridad->uf_sss_insert_eventos_ventana($aa_security[1], $aa_security[2], $ls_evento, $aa_security[3], $aa_security[4], $ls_desc_event);
             ////////////////////////////////         SEGURIDAD               //////////////////////////////
         } else {
             $this->is_msg_error = "Error " . $this->int_spg->io_sql->message;
         }
     } else {
         $ls_cuenta_tempo = $ls_spg_cuenta;
         $ls_denominacion = "";
         $ls_NextCuenta = $this->int_spg->uf_spg_next_cuenta_nivel($ls_spg_cuenta);
         $li_Nivel = $this->int_spg->uf_spg_obtener_nivel($ls_NextCuenta);
         $li_fila = 1;
         $lds_cuenta_temp = new class_datastore();
         do {
             if (!$this->int_spg->uf_spg_select_cuenta($this->dat["codemp"], $aa_estpro, $ls_NextCuenta, &$ls_status, &$ls_denominacion, $ls_scg_cuenta)) {
                 $ls_PadNextCuenta = $this->int_scg->uf_pad_cuenta_plan($this->dat["formplan"], $ls_NextCuenta);
                 $this->int_spg->uf_select_plan_unico_cuenta($ls_PadNextCuenta, &$as_denominacion_plan);
                 if ($li_Nivel > 1) {
                     $ls_cuenta_ref = $this->int_spg->uf_spg_next_cuenta_nivel($ls_NextCuenta);
                 } else {
                     $ls_cuenta_ref = "             ";
                 }
                 if ($as_denominacion_plan == "") {
                     $as_denominacion_plan = $as_denominacion_cta;
                 }
                 $lds_cuenta_temp->insertRow("sc_cuenta", trim($ls_scg_cuenta));
                 $lds_cuenta_temp->insertRow("spg_cuenta", $ls_NextCuenta);
                 $lds_cuenta_temp->insertRow("codestpro1", $ls_codest1);
                 $lds_cuenta_temp->insertRow("codestpro2", $ls_codest2);
                 $lds_cuenta_temp->insertRow("codestpro3", $ls_codest3);
                 $lds_cuenta_temp->insertRow("codestpro4", $ls_codest4);
                 $lds_cuenta_temp->insertRow("codestpro5", $ls_codest5);
                 $lds_cuenta_temp->insertRow("denominacion", $as_denominacion_plan);
                 $lds_cuenta_temp->insertRow("sc_cuenta_ref", $ls_cuenta_ref);
                 $lds_cuenta_temp->insertRow("nivel", $li_Nivel);
                 $lds_cuenta_temp->insertRow("estcla", $ls_estcla);
                 $lds_cuenta_temp->insertRow("scgctaint", $ls_scgctaint);
                 $li_fila++;
             }
             if ($li_Nivel > 1) {
                 $ls_NextCuenta = $this->int_spg->uf_spg_next_cuenta_nivel($ls_NextCuenta);
                 $li_Nivel = $this->int_spg->uf_spg_obtener_nivel($ls_NextCuenta);
             } else {
                 $li_Nivel = 0;
             }
         } while ($li_Nivel >= 1);
         $li_total = $lds_cuenta_temp->getRowCount("sc_cuenta");
         if ($li_total > 0) {
             $this->int_spg->io_sql->begin_transaction();
             for ($li_fila = 1; $li_fila <= $li_total; $li_fila++) {
                 $ls_sc_cuenta = $lds_cuenta_temp->getValue("sc_cuenta", $li_fila);
                 $ls_spg_cuenta = $lds_cuenta_temp->getValue("spg_cuenta", $li_fila);
                 $ls_codest1 = $lds_cuenta_temp->getValue("codestpro1", $li_fila);
                 $ls_codest2 = $lds_cuenta_temp->getValue("codestpro2", $li_fila);
                 $ls_codest3 = $lds_cuenta_temp->getValue("codestpro3", $li_fila);
                 $ls_codest4 = $lds_cuenta_temp->getValue("codestpro4", $li_fila);
                 $ls_codest5 = $lds_cuenta_temp->getValue("codestpro5", $li_fila);
                 $ls_denominacion = $lds_cuenta_temp->getValue("denominacion", $li_fila);
                 $ls_cuenta_ref = $lds_cuenta_temp->getValue("sc_cuenta_ref", $li_fila);
                 $li_Nivel = $lds_cuenta_temp->getValue("nivel", $li_fila);
                 $ls_estcla = $lds_cuenta_temp->getValue("estcla", $li_fila);
                 $ls_scgctaint = $lds_cuenta_temp->getValue("scgctaint", $li_fila);
                 $ls_mensaje_error = "Error en Guardar";
                 $ls_status = "S";
                 $lb_valido = $this->int_spg->uf_spg_insert_cuenta($ls_codest1, $ls_codest2, $ls_codest3, $ls_codest4, $ls_codest5, $ls_estcla, $ls_spg_cuenta, $ls_denominacion, trim($ls_sc_cuenta), $ls_status, $li_Nivel, $ls_cuenta_ref, $ls_scgctaint);
                 if (!$lb_valido) {
                     break;
                 } else {
                     /////////////////////////////////         SEGURIDAD               /////////////////////////////
                     $ls_evento = "INSERT";
                     $ls_desc_event = "Inserto la cuenta " . $ls_spg_cuenta . ", asociada a la programatica " . $ls_codest1 . "-" . $ls_codest2 . "-" . $ls_codest3 . "-" . $ls_codest4 . "-" . $ls_codest5 . " y a la cuenta contable " . $ls_sc_cuenta;
                     //////////////////////////////         SEGURIDAD               /////////////////////////////
                 }
             }
         }
         if ($lb_valido) {
             $ls_cuenta = $ls_cuenta_tempo;
             $ls_Cuenta_temp = $this->int_spg->uf_spg_padcuenta_plan($this->dat["formplan"], $ls_cuenta);
             $ls_NextCuenta = $this->int_spg->uf_spg_next_cuenta_nivel($ls_cuenta);
             $li_Nivel = $this->int_spg->uf_spg_obtener_nivel($ls_cuenta);
             $ls_status = "C";
             $lb_valido = $this->int_spg->uf_spg_insert_cuenta($ls_codest1, $ls_codest2, $ls_codest3, $ls_codest4, $ls_codest5, $ls_estcla, $ls_cuenta, $ls_denominacion_cta, $as_cuenta_scg, $ls_status, $li_Nivel, $ls_NextCuenta, $ls_scgctaint);
             /////////////////////////////////         SEGURIDAD               /////////////////////////////
             $ls_evento = "INSERT";
             $ls_desc_event = "Inserto la cuenta " . $ls_cuenta . ", asociada a la programatica " . $ls_codest1 . "-" . $ls_codest2 . "-" . $ls_codest3 . "-" . $ls_codest4 . "-" . $ls_codest5 . " y a la cuenta contable " . $as_cuenta_scg;
             //////////////////////////////         SEGURIDAD               /////////////////////////////
         }
         if ($lb_valido) {
             $this->int_spg->io_sql->commit();
             $this->is_msg_error = "Registro guardado";
             /////////////////////////////////         SEGURIDAD               /////////////////////////////
             $ls_variable = $this->io_seguridad->uf_sss_insert_eventos_ventana($aa_security[1], $aa_security[2], $ls_evento, $aa_security[3], $aa_security[4], $ls_desc_event);
             ////////////////////////////////         SEGURIDAD               //////////////////////////////
         } else {
             $this->int_spg->io_sql->rollback();
             $this->is_msg_error = "Error al guardar cuenta ";
         }
     }
     return $lb_valido;
 }
	function uf_obtener_mov_conciliacion($ls_mesano,$ls_codban,$ls_ctaban,$ldec_salseglib,$ldec_salsegbco)
	{
		$io_fecha=new class_fecha();
		$ds_mov=new class_datastore();
		$ds_movimientos=new class_datastore();
		$ls_codemp=$this->dat_emp["codemp"];
		$ld_fechasta=$io_fecha->uf_last_day(substr($ls_mesano,0,2),substr($ls_mesano,2,4));
		$ld_fechasta=$this->fun->uf_convertirdatetobd($ld_fechasta);
		$ld_fecdesde="01/".substr($ls_mesano,0,2)."/".substr($ls_mesano,2,4);
		$ld_fecdesde=$this->fun->uf_convertirdatetobd($ld_fecdesde);

		$ls_sql="SELECT * 
				 FROM scb_movbco
				 WHERE codemp='".$ls_codemp."' AND codban='".$ls_codban."' AND ctaban='".$ls_ctaban."' AND fecmov <='".$ld_fechasta."' AND (estreglib=' ' OR (estreglib<>' ' AND feccon<>'".$ld_fecdesde."'))";
				 
		$rs_data=$this->SQL->select($ls_sql);	
	 
		if($rs_data===false)
		{
			return false;
		}
		else
		{
			while($row=$this->SQL->fetch_row($rs_data))
			{
				$ls_codban=$row["codban"];
				$ds_mov->insertRow("codban",$ls_codban);
				$ls_ctaban=$row["ctaban"];
				$ds_mov->insertRow("ctaban",$ls_ctaban);
				$ls_numdoc=$row["numdoc"];
				$ds_mov->insertRow("numdoc",$ls_numdoc);
				$ls_nomproben=$row["nomproben"];
				$ds_mov->insertRow("nomproben",$ls_nomproben);
				$ld_fecmov=$row["fecmov"];
				$ds_mov->insertRow("fecmov",$ld_fecmov);
				$ldec_monto=$row["monto"];
				$ds_mov->insertRow("monto",$ldec_monto);
				$ls_conmov=$row["conmov"];
				$ds_mov->insertRow("conmov" ,$ls_conmov);	
				$ls_estmov=$row["estmov"];
				$ds_mov->insertRow("estmov" ,$ls_estmov);	
			}
			$this->SQL->free_result($rs_data);
		}		
		//$ldec_saldo_ant=$this->uf_calcular($ds_movimientos->data,$ls_mesano);
		$ldec_saldo_ant=$this->uf_calcular_saldolibro($ls_codban,$ls_ctaban,$ld_fechasta);

		if(abs($ldec_saldo_ant-$ldec_salseglib)>0.01)
		{
			$this->io_msg->message("Vuelva a modulo conciliación ya que hay movimientos no registrados");
			return false;
		}
		else
		{
			$this->io_msg->message("Todo Bien");
		}
		
			$ls_sql= "SELECT '01' as tipo, '-' as suma, numdoc , nomproben, fecmov , monto-monret as monto, codope  
					  FROM scb_movbco
					  WHERE fecmov <='".$ld_fechasta."' AND codban='".$ls_codban."' AND ctaban='".$ls_ctaban."' AND 
					        estreglib=''  AND ((feccon > '".$ld_fecdesde."'  ) OR (feccon='1900-01-01')) AND 
					       (((codope='CH' or codope='ND' or codope='RE') and estmov<>'A') or ((codope='DP' or codope='NC') and estmov='A'))";


		
		$rs_data= $this->SQL->select($ls_sql);

		if($rs_data===false)
		{
			print $this->SQL->message;
			$this->io_msg->message($this->uf_convertirmsg($this->SQL->message));
			return false;
		}
		else
		{
			while($row=$this->SQL->fetch_row($rs_data))
			{
				
				$ls_tipo=$row["tipo"];
				$ds_movimientos->insertRow("tipo",$ls_tipo);
				$ls_suma=$row["suma"];
				$ds_movimientos->insertRow("suma",$ls_suma);
				$ls_numdoc=$row["numdoc"];
				$ds_movimientos->insertRow("numdoc",$ls_numdoc);
				$ls_cedbene=$row["nomproben"];
				$ds_movimientos->insertRow("nomproben",$ls_cedbene);
				$ls_fecha=$this->fun->uf_convertirfecmostrar($row["fecmov"]);
				$ds_movimientos->insertRow("fecmov",$ls_fecha);
				$ldec_monto=$row["monto"];
				$ds_movimientos->insertRow("monto",$ldec_monto);
				$ls_codope=$row["codope"];
				$ds_movimientos->insertRow("codope",$ls_tipo);
			}
			$this->SQL->free_result($rs_data);
		}


			$ls_sql= "SELECT '02' as tipo, '+' as suma, numdoc, nomproben, fecmov, monto-monret as monto, codope
					  FROM   scb_movbco
					  WHERE  fecmov <='".$ld_fechasta."' AND codban='".$ls_codban."' AND ctaban='".$ls_ctaban."' AND estreglib=''
					  AND ((feccon > '".$ld_fecdesde."' ) OR (feccon='1900-01-01'))
					  AND (((codope='CH' OR codope='ND' OR codope='RE') AND estmov='A') OR ((codope='DP' OR codope='NC') AND estmov<>'A'))";
		
		$rs_data= $this->SQL->select($ls_sql);

		if($rs_data===false)
		{
			$this->io_msg->message($this->uf_convertirmsg($this->SQL->message));
			return false;
		}
		else
		{
			while($row=$this->SQL->fetch_row($rs_data))
			{
				$ls_tipo=$row["tipo"];
				$ds_movimientos->insertRow("tipo",$ls_tipo);
				$ls_suma=$row["suma"];
				$ds_movimientos->insertRow("suma",$ls_suma);
				$ls_numdoc=$row["numdoc"];
				$ds_movimientos->insertRow("numdoc",$ls_numdoc);
				$ls_cedbene=$row["nomproben"];
				$ds_movimientos->insertRow("nomproben",$ls_cedbene);
				$ls_fecha=$this->fun->uf_convertirfecmostrar($row["fecmov"]);
				$ds_movimientos->insertRow("fecmov",$ls_fecha);
				$ldec_monto=$row["monto"];
				$ds_movimientos->insertRow("monto",$ldec_monto);
				$ls_codope=$row["codope"];
				$ds_movimientos->insertRow("codope",$ls_tipo);
			}
			$this->SQL->free_result($rs_data);
		}
			
		
		// No Registradas en Libros
		
		   $ls_sql = "SELECT 'A1' as tipo, '+' as suma, numdoc, conmov as nomproben,fecmov, monto-monret as monto, codope
					  FROM   scb_movbco
					  WHERE  fecmov <='".$ld_fechasta."' AND codban='".$ls_codban."' AND ctaban='".$ls_ctaban."'
					  AND  feccon='".$ld_fecdesde."' AND estreglib='A' AND (((codope='CH' OR codope='ND' OR codope='RE') AND estmov<>'A') OR 
					  ((codope='DP' OR codope='NC') AND estmov='A'))"; 
		
		$rs_data= $this->SQL->select($ls_sql);		
		if($rs_data===false)
		{
			print $this->SQL->message;
			return false;
		}
		else
		{
			while($row=$this->SQL->fetch_row($rs_data))
			{
				$ls_tipo=$row["tipo"];
				$ds_movimientos->insertRow("tipo",$ls_tipo);
				$ls_suma=$row["suma"];
				$ds_movimientos->insertRow("suma",$ls_suma);
				$ls_numdoc=$row["numdoc"];
				$ds_movimientos->insertRow("numdoc",$ls_numdoc);
				$ls_cedbene=$row["nomproben"];
				$ds_movimientos->insertRow("nomproben",$ls_cedbene);
				$ls_fecha=$this->fun->uf_convertirfecmostrar($row["fecmov"]);
				$ds_movimientos->insertRow("fecmov",$ls_fecha);
				$ldec_monto=$row["monto"];
				$ds_movimientos->insertRow("monto",$ldec_monto);
				$ls_codope=$row["codope"];
				$ds_movimientos->insertRow("codope",$ls_tipo);
			}
			$this->SQL->free_result($rs_data);

		}
		
		
		
		$ls_sql="SELECT 'A2' as tipo, '-' as suma, numdoc, conmov as nomproben, fecmov, monto-monret as monto, codope 
				 FROM  scb_movbco
				 WHERE fecmov <='".$ld_fechasta."' AND codban='".$ls_codban."' AND ctaban='".$ls_ctaban."'
				 AND feccon='".$ld_fecdesde."' AND estreglib='A' 
				 AND (((codope='CH' OR codope='ND' OR codope='RE') AND estmov='A') OR ((codope='DP' OR codope='NC') AND estmov<>'A'))";
			
		$rs_data= $this->SQL->select($ls_sql);		
		if($rs_data===false)
		{
			print $this->SQL->message;
			return false;
		}
		else
		{
			while($row=$this->SQL->fetch_row($rs_data))
			{
				$ls_tipo=$row["tipo"];
				$ds_movimientos->insertRow("tipo",$ls_tipo);
				$ls_suma=$row["suma"];
				$ds_movimientos->insertRow("suma",$ls_suma);
				$ls_numdoc=$row["numdoc"];
				$ds_movimientos->insertRow("numdoc",$ls_numdoc);
				$ls_cedbene=$row["nomproben"];
				$ds_movimientos->insertRow("nomproben",$ls_cedbene);
				$ls_fecha=$this->fun->uf_convertirfecmostrar($row["fecmov"]);
				$ds_movimientos->insertRow("fecmov",$ls_fecha);
				$ldec_monto=$row["monto"];
				$ds_movimientos->insertRow("monto",$ldec_monto);
				$ls_codope=$row["codope"];
				$ds_movimientos->insertRow("codope",$ls_tipo);
			}
			$this->SQL->free_result($rs_data);

		}
		
		
		
		// Error Libro
		$ls_sql="SELECT 'B1' as tipo, '+' as suma, numdoc, conmov as nomproben, fecmov , monto-monret as monto, codope 
				FROM scb_movbco
				WHERE fecmov <='".$ld_fechasta."' AND codban='".$ls_codban."' AND ctaban='".$ls_ctaban."'
				AND feccon='".$ld_fecdesde."' AND estreglib='B' 
				AND (((codope='CH' OR codope='ND' OR codope='RE') AND estmov<>'A') OR ((codope='DP' OR codope='NC') AND estmov='A')) ";
			
		$rs_data= $this->SQL->select($ls_sql);		
		if($rs_data===false)
		{
			print $this->SQL->message;
			return false;
		}
		else
		{
			while($row=$this->SQL->fetch_row($rs_data))
			{
				$ls_tipo=$row["tipo"];
				$ds_movimientos->insertRow("tipo",$ls_tipo);
				$ls_suma=$row["suma"];
				$ds_movimientos->insertRow("suma",$ls_suma);
				$ls_numdoc=$row["numdoc"];
				$ds_movimientos->insertRow("numdoc",$ls_numdoc);
				$ls_cedbene=$row["nomproben"];
				$ds_movimientos->insertRow("nomproben",$ls_cedbene);
				$ls_fecha=$this->fun->uf_convertirfecmostrar($row["fecmov"]);
				$ds_movimientos->insertRow("fecmov",$ls_fecha);
				$ldec_monto=$row["monto"];
				$ds_movimientos->insertRow("monto",$ldec_monto);
				$ls_codope=$row["codope"];
				$ds_movimientos->insertRow("codope",$ls_tipo);
			}
			$this->SQL->free_result($rs_data);

		}
				
		
		$ls_sql="SELECT 'B2' as tipo, '-' as suma, numdoc, conmov as nomproben, fecmov , monto-monret as monto, codope 
				FROM scb_movbco
				WHERE fecmov <='".$ld_fechasta."' AND codban='".$ls_codban."' AND ctaban='".$ls_ctaban."'
				AND feccon='".$ld_fecdesde."' AND estreglib='B' 
				AND  (((codope='CH' OR codope='ND' OR codope='RE') AND estmov='A') OR ((codope='DP' OR codope='NC') AND estmov<>'A')) ";
		
		$rs_data= $this->SQL->select($ls_sql);		
		if($rs_data===false)
		{
			print $this->SQL->message;
			return false;
		}
		else
		{
			while($row=$this->SQL->fetch_row($rs_data))
			{
				$ls_tipo=$row["tipo"];
				$ds_movimientos->insertRow("tipo",$ls_tipo);
				$ls_suma=$row["suma"];
				$ds_movimientos->insertRow("suma",$ls_suma);
				$ls_numdoc=$row["numdoc"];
				$ds_movimientos->insertRow("numdoc",$ls_numdoc);
				$ls_cedbene=$row["nomproben"];
				$ds_movimientos->insertRow("nomproben",$ls_cedbene);
				$ls_fecha=$this->fun->uf_convertirfecmostrar($row["fecmov"]);
				$ds_movimientos->insertRow("fecmov",$ls_fecha);
				$ldec_monto=$row["monto"];
				$ds_movimientos->insertRow("monto",$ldec_monto);
				$ls_codope=$row["codope"];
				$ds_movimientos->insertRow("codope",$ls_tipo);
			}
			$this->SQL->free_result($rs_data);

		}
				
		// Error Banco
		$ls_sql="SELECT 'C1' as tipo, '-' as suma, numdoc, conmov as nomproben, fecmov, monmov as monto, codope 
				 FROM scb_errorconcbco 
				 WHERE fecmov <='".$ld_fechasta."' AND codban='".$ls_codban."' AND ctaban='".$ls_ctaban."' AND 
				 fecmesano='".$ld_fecdesde."' AND esterrcon='C' AND 
				 (((codope='CH' OR codope='ND' OR codope='RE') AND estmov<>'A') OR ((codope='DP' OR codope='NC') AND estmov='A')) ";
			
		$rs_data= $this->SQL->select($ls_sql);		

		if($rs_data===false)
		{
			print $this->SQL->message;
			return false;
		}
		else
		{
			while($row=$this->SQL->fetch_row($rs_data))
			{
				$ls_tipo=$row["tipo"];
				$ds_movimientos->insertRow("tipo",$ls_tipo);
				$ls_suma=$row["suma"];
				$ds_movimientos->insertRow("suma",$ls_suma);
				$ls_numdoc=$row["numdoc"];
				$ds_movimientos->insertRow("numdoc",$ls_numdoc);
				$ls_cedbene=$row["nomproben"];
				$ds_movimientos->insertRow("nomproben",$ls_cedbene);
				$ls_fecha=$this->fun->uf_convertirfecmostrar($row["fecmov"]);
				$ds_movimientos->insertRow("fecmov",$ls_fecha);
				$ldec_monto=$row["monto"];
				$ds_movimientos->insertRow("monto",$ldec_monto);
				$ls_codope=$row["codope"];
				$ds_movimientos->insertRow("codope",$ls_tipo);
			}
			$this->SQL->free_result($rs_data);

		}
		
		$ls_sql="SELECT 'C2' as tipo, '+' as suma, numdoc, conmov as nomproben, fecmov , monmov as monto, codope 
				 FROM  scb_errorconcbco 
		 		 WHERE fecmov <='".$ld_fechasta."' AND codban='".$ls_codban."' AND ctaban='".$ls_ctaban."' AND 
				 fecmesano='".$ld_fecdesde."' and esterrcon='C' AND 
				 (((codope='CH' OR codope='ND' OR codope='RE') AND estmov='A') OR ((codope='DP' OR codope='NC') AND estmov<>'A')) ";
		
		$rs_data= $this->SQL->select($ls_sql);		
		if($rs_data===false)
		{
			print $this->SQL->message;
			return false;
		}
		else
		{
			while($row=$this->SQL->fetch_row($rs_data))
			{
				$ls_tipo=$row["tipo"];
				$ds_movimientos->insertRow("tipo",$ls_tipo);
				$ls_suma=$row["suma"];
				$ds_movimientos->insertRow("suma",$ls_suma);
				$ls_numdoc=$row["numdoc"];
				$ds_movimientos->insertRow("numdoc",$ls_numdoc);
				$ls_cedbene=$row["nomproben"];
				$ds_movimientos->insertRow("nomproben",$ls_cedbene);
				$ls_fecha=$this->fun->uf_convertirfecmostrar($row["fecmov"]);
				$ds_movimientos->insertRow("fecmov",$ls_fecha);
				$ldec_monto=$row["monto"];
				$ds_movimientos->insertRow("monto",$ldec_monto);
				$ls_codope=$row["codope"];
				$ds_movimientos->insertRow("codope",$ls_tipo);
			}
			$this->SQL->free_result($rs_data);

		}		
				
		return $ds_movimientos->data;
	
	}
 function uf_calcular_saldolibro($as_codban, $as_ctaban, $ad_fecha)
 {
     /////////////////////////////////////////////////////////////////////////////
     // Funtion	    :  uf_calcular_saldolibro
     //
     //	Return	    :  ldec_saldo
     //
     //	Descripcion :  Fucnion que se encarga de obtener el saldo de los movimientos registrdos en libro
     /////////////////////////////////////////////////////////////////////////////
     $ldec_monto_haber = 0;
     $ldec_monto_debe = 0;
     $ldec_saldo = 0;
     $ls_codemp = $this->dat_emp["codemp"];
     $ld_fecha = $this->fun->uf_convertirdatetobd($ad_fecha);
     //fin
     $ls_fecha2 = substr($ld_fecha, 0, 8) . "01";
     //inicio
     $ds_debe = new class_datastore();
     $ds_haber = new class_datastore();
     $ds_debe = new class_datastore();
     $ds_haber = new class_datastore();
     //--------------------DEBE------------------------------------//
     $ls_sql = "SELECT (monto - monret) As mondeb,estmov\n\t\t\t\t FROM scb_movbco\n\t\t\t\tWHERE codemp='" . $ls_codemp . "'\n\t\t\t\t  AND codban='" . $as_codban . "'\n\t\t\t\t  AND ctaban='" . $as_ctaban . "'\n\t\t\t\t  AND (codope='NC' OR codope='DP')  \n\t\t\t\t  AND (estreglib<>'A' OR (estreglib='A' AND estcon=1))\n\t\t\t\t  AND fecmov<='" . $ld_fecha . "'";
     //echo $ls_sql.'<br><br><br>';
     $rs_saldos = $this->SQL->select($ls_sql);
     if ($rs_saldos == false && $this->SQL->message != "") {
         print "Saldolibro" . $this->SQL->message;
     } else {
         while ($row = $this->SQL->fetch_row($rs_saldos)) {
             $ds_debe->insertRow("mondeb", $row["mondeb"]);
             $ds_debe->insertRow("estmov", $row["estmov"]);
         }
     }
     $this->SQL->free_result($rs_saldos);
     //-----------------------HABER---------------------------------------//
     $ls_sql = "SELECT (monto - monret) As monhab,estmov\n\t\t\t   FROM scb_movbco\n\t\t\t  WHERE codemp='" . $ls_codemp . "'\n\t\t\t    AND codban='" . $as_codban . "'\n\t\t\t    AND ctaban='" . $as_ctaban . "'\n\t\t\t\tAND (codope='RE' OR codope='ND' OR codope='CH')\n\t\t\t\tAND (estreglib<>'A' OR (estreglib='A' AND estcon=1))\n\t\t\t\tAND fecmov<='" . $ld_fecha . "'";
     //echo $ls_sql.'<br><br><br>';
     $rs_saldos = $this->SQL->select($ls_sql);
     if ($rs_saldos == false && $this->SQL->message != "") {
         print "Saldolibro" . $this->SQL->message;
     } else {
         while ($row = $this->SQL->fetch_row($rs_saldos)) {
             $ds_haber->insertRow("monhab", $row["monhab"]);
             $ds_haber->insertRow("estmov", $row["estmov"]);
         }
     }
     $this->SQL->free_result($rs_saldos);
     $li_totdebe = $ds_debe->getRowCount("estmov");
     $ldec_totdeb = 0;
     $ldec_totdeb_anulado = 0;
     for ($li_i = 1; $li_i <= $li_totdebe; $li_i++) {
         $ls_estmov = $ds_debe->getValue("estmov", $li_i);
         $ls_mondeb = $ds_debe->getValue("mondeb", $li_i);
         if ($ls_estmov != 'A') {
             $ldec_totdeb += $ls_mondeb;
         } else {
             $ldec_totdeb_anulado += $ls_mondeb;
         }
     }
     $ldec_totdeb = $ldec_totdeb - $ldec_totdeb_anulado;
     $li_tothaber = $ds_haber->getRowCount("estmov");
     $ldec_tothab = 0;
     $ldec_tothab_anulado = 0;
     for ($li_i = 1; $li_i <= $li_tothaber; $li_i++) {
         $ls_estmov = $ds_haber->getValue("estmov", $li_i);
         $ls_monhab = $ds_haber->getValue("monhab", $li_i);
         if ($ls_estmov != 'A') {
             $ldec_tothab += $ls_monhab;
         } else {
             $ldec_tothab_anulado += $ls_monhab;
         }
     }
     $ldec_tothab = $ldec_tothab - $ldec_tothab_anulado;
     $ldec_saldo = $ldec_totdeb - $ldec_tothab;
     return $ldec_saldo;
 }