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