/** * Función auxiliar para generar el balance de sumas y saldos de un ejercicio y unas fechas concretas. * Este informe muestra los saldos (distintos de cero) de cada cuenta y subcuenta * por periodos, pero siempre excluyendo los asientos de cierre y pérdidas y ganancias. */ public function sumas_y_saldos_all(&$pdf_doc, &$eje, $titulo, $fechaini, $fechafin, $excluir = FALSE, $np = TRUE) { $pgrupo = new pgrupo_epigrafes(); $partida = new partida(); /// metemos todo en una lista $auxlist = array(); $offset = 0; $pgrupo = $pgrupo->all_from_ejercicio($eje->codejercicio, $offset); foreach ($pgrupo as $pg) { $grupo = $pg->get_grupo(); $debe = 0; $haber = 0; $auxt = $partida->totales_pgrupo($pg->codpgrupo, $fechaini, $fechafin); $debe = $auxt['debe']; $haber = $auxt['haber']; if ($debe != 0 or $haber != 0) { if ($debe - $haber > 0) { $saldo_d = $debe - $haber; $saldo_a = 0; } else { $saldo_d = 0; $saldo_a = $haber - $debe; } $auxlist[] = array('cuenta' => TRUE, 'codigo' => $pg->codpgrupo, 'descripcion' => substr($pg->descripcion, 0, 34), 'debe' => $debe, 'haber' => $haber, 'saldo' => $saldo_d, 'saldoa' => $saldo_a); } foreach ($grupo as $g) { $epigrafe = $g->get_epigrafes(); $debe = 0; $haber = 0; $auxt = $partida->totales_grupo($g->codgrupo, $fechaini, $fechafin); $debe = $auxt['debe']; $haber = $auxt['haber']; if ($debe != 0 or $haber != 0) { if ($debe - $haber > 0) { $saldo_d = $debe - $haber; $saldo_a = 0; } else { $saldo_d = 0; $saldo_a = $haber - $debe; } $auxlist[] = array('cuenta' => FALSE, 'codigo' => $g->codgrupo, 'descripcion' => substr(' ' . $g->descripcion, 0, 34), 'debe' => $debe, 'haber' => $haber, 'saldo' => $saldo_d, 'saldoa' => $saldo_a); } foreach ($epigrafe as $e) { $cuentas = $e->get_cuentas(); $debe = 0; $haber = 0; $auxt = $partida->totales_epigrafe($e->codepigrafe, $fechaini, $fechafin); $debe = $auxt['debe']; $haber = $auxt['haber']; if ($debe != 0 or $haber != 0) { if ($debe - $haber > 0) { $saldo_d = $debe - $haber; $saldo_a = 0; } else { $saldo_d = 0; $saldo_a = $haber - $debe; } $auxlist[] = array('cuenta' => FALSE, 'codigo' => $e->codepigrafe, 'descripcion' => substr(' ' . $e->descripcion, 0, 34), 'debe' => $debe, 'haber' => $haber, 'saldo' => $saldo_d, 'saldoa' => $saldo_a); } foreach ($cuentas as $c) { $subcuentas = $c->get_subcuentas(); $debe = 0; $haber = 0; $auxt = $partida->totales_cuenta($c->codcuenta, $fechaini, $fechafin); $debe = $auxt['debe']; $haber = $auxt['haber']; if ($debe != 0 or $haber != 0) { if ($debe - $haber > 0) { $saldo_d = $debe - $haber; $saldo_a = 0; } else { $saldo_d = 0; $saldo_a = $haber - $debe; } $auxlist[] = array('cuenta' => FALSE, 'codigo' => $c->codcuenta, 'descripcion' => substr(' ' . $c->descripcion, 0, 34), 'debe' => $debe, 'haber' => $haber, 'saldo' => $saldo_d, 'saldoa' => $saldo_a); } foreach ($subcuentas as $sc) { $debe = 0; $haber = 0; ////////////////// // if(count($subcuentas)<200) // { $auxt = $partida->totales_subcuenta($sc->codsubcuenta, $fechaini, $fechafin); $debe = $auxt['debe']; $haber = $auxt['haber']; if ($debe != 0 or $haber != 0) { if ($debe - $haber > 0) { $saldo_d = $debe - $haber; $saldo_a = 0; } else { $saldo_d = 0; $saldo_a = $haber - $debe; } $auxlist[] = array('cuenta' => FALSE, 'codigo' => $sc->codsubcuenta, 'descripcion' => substr(' ' . $sc->descripcion, 0, 45), 'debe' => $debe, 'haber' => $haber, 'saldo' => $saldo_d, 'saldoa' => $saldo_a); } // } ///////////////////////////////////// } } } } $offset++; } //////////////////////////////////////////// /// a partir de la lista generamos el documento $linea = 0; $tdebe = 0; $thaber = 0; $tsaldod = 0; $tsaldoa = 0; while ($linea < count($auxlist)) { ///// if ($linea > 0 or $np) { $pdf_doc->pdf->ezNewPage(); } $pdf_doc->pdf->ezText($this->empresa->nombre . "\n" . $this->empresa->provincia . " - " . $this->empresa->ciudad . "\n\nBalance Acumulado Periodo : " . $eje->year() . ' ' . $titulo . ".\nFecha de Emisión : " . Date('d-m-Y') . " " . Date('H:i:s') . "\n", 10); /// Creamos la tabla con las lineas $pdf_doc->new_table(); $pdf_doc->add_table_header(array('subcuenta' => '<b>Cuenta</b>', 'descripcion' => '<b>Descripción</b>', 'debe' => '<b>Debe</b>', 'haber' => '<b>Haber</b>', 'saldo' => '<b>Saldo Deudor</b>', 'saldoa' => '<b>Saldo Acreedor</b>')); for ($i = $linea; $i < min(array($linea + 48, count($auxlist))); $i++) { if ($auxlist[$i]['cuenta']) { $a = '<b>'; $b = '</b>'; } else { $a = $b = ''; } $tdebe += $auxlist[$i]['debe']; $thaber += $auxlist[$i]['haber']; $tsaldod += $auxlist[$i]['saldo']; $tsaldoa += $auxlist[$i]['saldoa']; if ($this->show_numero($auxlist[$i]['debe']) == 0) { $num_debe = ''; } else { $num_debe = $this->show_numero($auxlist[$i]['debe']); } if ($this->show_numero($auxlist[$i]['haber']) == 0) { $num_haber = ''; } else { $num_haber = $this->show_numero($auxlist[$i]['haber']); } if ($this->show_numero($auxlist[$i]['saldo']) == 0) { $num_saldo = ''; } else { $num_saldo = $this->show_numero($auxlist[$i]['saldo']); } if ($this->show_numero($auxlist[$i]['saldoa']) == 0) { $num_saldoa = ''; } else { $num_saldoa = $this->show_numero($auxlist[$i]['saldoa']); } $pdf_doc->add_table_row(array('subcuenta' => $a . $auxlist[$i]['codigo'] . $b, 'descripcion' => $a . substr($auxlist[$i]['descripcion'], 0, 50) . $b, 'debe' => $a . $num_debe . $b, 'haber' => $a . $num_haber . $b, 'saldo' => $a . $num_saldo . $b, 'saldoa' => $a . $num_saldoa . $b)); } $linea += 48; if ($linea > count($auxlist)) { /// añadimos las sumas de la línea actual $pdf_doc->add_table_row(array('subcuenta' => '', 'descripcion' => '<b> Totales </b>', 'debe' => '<b>' . $this->show_numero($tdebe) . '</b>', 'haber' => '<b>' . $this->show_numero($thaber) . '</b>', 'saldo' => '<b>' . $tsaldod . '</b>', 'saldoa' => '<b>' . $tsaldoa . '</b>')); } $pdf_doc->save_table(array('fontSize' => 8, 'cols' => array('debe' => array('justification' => 'right'), 'haber' => array('justification' => 'right'), 'saldo' => array('justification' => 'right'), 'saldoa' => array('justification' => 'right')), 'width' => 545, 'shaded' => 0)); } ///// }