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;  		
	
}