Check(); $bal = new Acc_Balance($cn); try { $from_periode = $http->request("from_periode"); $to_periode = $http->request("to_periode"); $from_poste = $http->request("from_poste"); $to_poste = $http->request("to_poste"); $p_filter = $http->request("p_filter", "string"); } catch (Exception $exc) { record_log("Missing parameters"); record_log($exc); return; } // Compute for the summary $summary_tab = $bal->summary_init(); $summary_prev_tab = $bal->summary_init(); $is_summary = $http->get("summary", "string", 0); $bal->jrn = null; switch ($p_filter) { case 0: $bal->jrn = null; break; case 1: if (isset($_GET['r_jrn'])) { $selected = $http->get("r_jrn"); $array_ledger = $g_user->get_ledger('ALL', 3); $array = get_array_column($array_ledger, 'jrn_def_id'); for ($e = 0; $e < count($selected); $e++) { if (isset ($selected[$e]) && isNumber($selected[$e]) == 1 && in_array($selected[$e], $array)) { $bal->jrn[] = $selected[$e]; } } } break; case 2: if (isset($_GET['r_cat'])) $bal->filter_cat($http->get("r_cat")); break; } $bal->from_poste = $from_poste; $bal->to_poste = $to_poste; if (isset($_GET['unsold'])) $bal->unsold = true; $previous = (isset($_GET['previous_exc'])) ? 1 : 0; $array = $bal->get_row($from_periode, $to_periode, $previous); $previous = (isset ($array[0]['sum_cred_previous'])) ? 1 : 0; if (sizeof($array) == 0) { exit(); } $pPeriode = new Periode($cn); $a = $pPeriode->get_date_limit($from_periode); $b = $pPeriode->get_date_limit($to_periode); $per_text = sprintf(_("du %s au %s" ), $a['p_start'] ,$b['p_end']); // If compare with previous exercice , // we use the landscape mode if ($previous == 1) { $pdf = new PDFLand($cn); } else { $pdf = new PDF($cn); } $pdf->setDossierInfo(" Balance " . $per_text); $pdf->AliasNbPages(); $pdf->AddPage(); $pdf->SetAuthor('NOALYSS'); $pdf->SetFont('DejaVuCond', '', 7); $pdf->setTitle(_("Balance comptable"), true); $pdf->write_multi(30, 3, _('Poste')); $pdf->write_multi(60, 3, _('Libellé')); if ($previous == 1) { $pdf->write_cell(20, 6, 'Débit N-1', 0, 0, 'R'); $pdf->write_cell(20, 6, 'Crédit N-1', 0, 0, 'R'); $pdf->write_cell(20, 6, 'Solde N-1', 0, 0, 'R'); } $pdf->write_cell(25, 6, _('Ouverture'), 0, 0, 'R'); $pdf->write_cell(25, 6, _('Total Débit'), 0, 0, 'R'); $pdf->write_cell(25, 6, _('Total Crédit'), 0, 0, 'R'); $pdf->write_cell(25, 6, _('Solde'), 0, 0, 'R'); $pdf->line_new(10); $pdf->SetFont('DejaVuCond', '', 8); $tp_deb = 0; $tp_cred = 0; $tp_sold = 0; $tp_solc = 0; $tot_opening = 0; $tp_deb_previous = 0; $tp_cred_previous = 0; $tp_sold_previous = 0; $tp_solc_previous = 0; if ($previous == 1) { $a_sum = array('sum_cred', 'sum_deb', 'solde_deb', 'solde_cred', 'sum_cred_previous', 'sum_deb_previous', 'solde_deb_previous', 'solde_cred_previous', 'sum_cred_ope', 'sum_deb_ope'); } else { $a_sum = array('sum_cred', 'sum_deb', 'solde_deb', 'solde_cred', 'sum_cred_ope', 'sum_deb_ope'); } foreach ($a_sum as $a) { $nlvl1[$a] = 0; $nlvl2[$a] = 0; $nlvl3[$a] = 0; } $lvl1_old = ''; $lvl2_old = ''; $lvl3_old = ''; bcscale(2); if (!empty($array)) { $i = 0; foreach ($array as $key => $value) { $i++; /* * level x */ if ($value['poste'] == '') continue; foreach (array(3, 2, 1) as $ind) { $r = $value; if (!isset($_GET['lvl' . $ind])) continue; if (${'lvl' . $ind . '_old'} == '') ${'lvl' . $ind . '_old'} = substr($r['poste'], 0, $ind); if (${'lvl' . $ind . '_old'} != substr($r['poste'], 0, $ind)) { $pdf->SetFont('DejaVu', 'B', 7); $strTotal=sprintf(_("Totaux %s "),${'lvl' . $ind . '_old'}); $pdf->write_multi(30, 3, $strTotal,"TB"); $delta = bcsub(${'nlvl' . $ind}['solde_cred'], ${'nlvl' . $ind}['solde_deb']); $side = ($delta < 0) ? "D" : "C"; if ($previous == 1) { $delta_previous = bcsub(${'nlvl' . $ind}['solde_cred_previous'], ${'nlvl' . $ind}['solde_deb_previous']); $side_previous = ($delta_previous < 0) ? "D" : "C"; $pdf->write_cell(60, 6, sprintf(_("niveau %s"),$ind), "TB", 0, 'R'); $pdf->write_cell(22, 6, nbm(${'nlvl' . $ind}['sum_deb_previous']), "TB", 0, 'R'); $pdf->write_cell(22, 6, nbm(${'nlvl' . $ind}['sum_cred_previous']), "TB", 0, 'R'); $pdf->write_cell(22, 6, nbm(abs($delta_previous)) . " $side_previous", "TB", 0, 'R'); } else { $pdf->write_cell(60, 6, sprintf(_("niveau %s"),$ind), "TB", 0, 'R'); } $solde_lv = bcsub(${'nlvl' . $ind}['sum_deb_ope'], ${'nlvl' . $ind}['sum_cred_ope']); $side_lv = ($solde_lv < 0) ? " C" : " D"; $side_lv = ($solde_lv == 0) ? " " : $side_lv; $pdf->write_cell(25, 6, nbm(abs($solde_lv)) . $side_lv, "TB", 0, 'R'); $pdf->write_cell(25, 6, nbm(bcsub(${'nlvl' . $ind}['sum_deb'], ${'nlvl' . $ind}['sum_deb_ope'])), "TB", 0, 'R'); $pdf->write_cell(25, 6, nbm(bcsub(${'nlvl' . $ind}['sum_cred'], ${'nlvl' . $ind}['sum_cred_ope'])), "TB", 0, 'R'); $solde_lv = bcsub(${'nlvl' . $ind}['solde_deb'], ${'nlvl' . $ind}['solde_cred']); $side_lv = ($solde_lv > 0) ? "D" : "C"; $side_lv = ($solde_lv == 0) ? "" : $side_lv; $pdf->write_cell(25, 6, nbm(abs($solde_lv)) . " $side_lv", "TB", 0, 'R'); $pdf->line_new(); $pdf->SetFont('DejaVuCond', '', 7); ${'lvl' . $ind . '_old'} = substr($r['poste'], 0, $ind); foreach ($a_sum as $a) { ${'nlvl' . $ind}[$a] = 0; } } } foreach ($a_sum as $a) { $nlvl1[$a] = bcadd($nlvl1[$a], $r[$a]); $nlvl2[$a] = bcadd($nlvl2[$a], $r[$a]); $nlvl3[$a] = bcadd($nlvl3[$a], $r[$a]); } $fill=$pdf->is_fill($i); $label=$value['poste']; if (in_array($r['type'],array('CHA','ACT','PASINV','PROINV')) && $value['sum_deb']<$value['sum_cred']) { $label.=" ".mb_chr(0x26a0); } if (in_array($r['type'],array('PRO','PAS','ACTINV','CHAINV')) && $value['sum_deb']>$value['sum_cred']) { $label.=" ".mb_chr(0x26a0); } $pdf->write_multi(30, 5, $label, 0, 'L', $fill); $pdf->write_multi(60, 5, $value['label'], 0, 'L', $fill); $summary_tab = $bal->summary_add($summary_tab, $value['poste'], $value['sum_deb'], $value['sum_cred']); if ($previous == 1) { $pdf->write_cell(22, 6, nbm($value['sum_deb_previous']), 0, 0, 'R', $fill); $pdf->write_cell(22, 6, nbm($value['sum_cred_previous']), 0, 0, 'R', $fill); $solde_previous = bcsub($value['solde_cred_previous'], $value['solde_deb_previous']); $side_previous = ($solde_previous < 0) ? " D" : " C"; $side_previous = ($solde_previous == 0) ? "" : $side_previous; $pdf->write_cell(22, 6, nbm(abs($solde_previous)) . $side_previous, 0, 0, 'R', $fill); $tp_deb_previous = bcadd($tp_deb_previous, $value['sum_deb_previous']); $tp_cred_previous = bcadd($tp_cred_previous, $value['sum_cred_previous']); $tp_sold_previous = bcadd($tp_sold_previous, $value['solde_deb_previous']); $tp_solc_previous = bcadd($tp_solc_previous, $value['solde_cred_previous']); $summary_prev_tab = $bal->summary_add($summary_prev_tab, $value['poste'], $value['sum_deb_previous'], $value['sum_cred_previous']); } $solde_ope = bcsub($value['sum_deb_ope'], $value['sum_cred_ope']); $tot_opening=bcadd($tot_opening,$solde_ope); $side_ope = ($solde_ope > 0) ? " D" : "C"; $side_ope = ($solde_ope == 0) ? " " : $side_ope; // compute column value $deb = bcsub($value['sum_deb'], $value['sum_deb_ope']); $cred = bcsub($value['sum_cred'], $value['sum_cred_ope']); $pdf->write_cell(25, 6, nbm(abs($solde_ope)) . $side_ope, 0, 0, 'R', $fill); $pdf->write_cell(25, 6, nbm($deb), 0, 0, 'R', $fill); $pdf->write_cell(25, 6, nbm($cred), 0, 0, 'R', $fill); $solde = bcsub($value['sum_deb'], $value['sum_cred']); $side = ($solde > 0) ? "D" : "C"; $side = ($solde == 0) ? "" : $side; $pdf->write_cell(25, 6, nbm(abs($solde)) . $side, 0, 0, 'R', $fill); $pdf->line_new(); $tp_deb = bcadd($tp_deb, $deb); $tp_cred = bcadd($tp_cred, $cred); $tp_sold = bcadd($tp_sold, $value['solde_deb']); $tp_solc = bcadd($tp_solc, $value['solde_cred']); } foreach (array(3, 2, 1) as $ind) { $r = $value; if (!isset($_GET['lvl' . $ind])) continue; if (${'lvl' . $ind . '_old'} == '') ${'lvl' . $ind . '_old'} = substr($r['poste'], 0, $ind); if (${'lvl' . $ind . '_old'} != substr($r['poste'], 0, $ind)) { $pdf->SetFont('DejaVu', 'B', 7); $pdf->write_cell(30, 6, "Totaux " . $ind); $pdf->write_cell(60, 6, ${'lvl' . $ind . '_old'}); if ($previous == 1) { $pdf->write_cell(22, 6, nbm(${'nlvl' . $ind}['sum_deb_previous']), 0, 0, 'R'); $pdf->write_cell(22, 6, nbm(${'nlvl' . $ind}['sum_cred_previous']), 0, 0, 'R'); $pdf->write_cell(22, 6, nbm(${'nlvl' . $ind}['solde_deb_previous']), 0, 0, 'R'); $pdf->write_cell(22, 6, nbm(${'nlvl' . $ind}['solde_cred_previous']), 0, 0, 'R'); } $pdf->write_cell(25, 6, nbm(${'nlvl' . $ind}['sum_deb']), 0, 0, 'R'); $pdf->write_cell(25, 6, nbm(${'nlvl' . $ind}['sum_cred']), 0, 0, 'R'); $solde_lv = bcsub(${'nlvl' . $ind}['solde_deb'], ${'nlvl' . $ind}['solde_cred']); $side_lv = findSide($solde_lv ); $pdf->write_cell(25, 6, nbm(abs($solde_lv)) . " $side_lv", 0, 0, 'R'); $pdf->line_new(); $pdf->SetFont('DejaVuCond', '', 7); ${'lvl' . $ind . '_old'} = substr($r['poste'], 0, $ind); foreach ($a_sum as $a) { ${'nlvl' . $ind}[$a] = 0; } } } // Totaux $pdf->SetFont('DejaVuCond', 'B', 8); $pdf->write_cell(90, 6, $r['label']); if ($previous == 1) { $pdf->write_cell(22, 6, nbm($tp_deb_previous), 'T', 0, 'R', 0); $pdf->write_cell(22, 6, nbm($tp_cred_previous), 'T', 0, 'R', 0); $pdf->write_cell(22, 6, nbm(bcsub($tp_cred_previous,$tp_deb_previous,2)), 'T', 0, 'R', 0); } $solde = bcsub($tp_sold,$tp_solc); $solde_side = findSide($solde); $tot_opening_side = findSide($tot_opening); // --------------- // Footer column // --------------- $pdf->write_cell(25, 6, nbm(abs($tot_opening))." ".$tot_opening_side, 'T', 0, 'R', 0); $pdf->write_cell(25, 6, nbm($tp_deb), 'T', 0, 'R', 0); $pdf->write_cell(25, 6, nbm($tp_cred), 'T', 0, 'R', 0); $pdf->write_cell(25, 6, nbm(abs($solde)).$solde_side, 'T', 0, 'R', 0); $pdf->line_new(); } /** empty */ // display the summary if ($is_summary == 1) { if ($previous == 1) { $pdf->SetFont('DejaVuCond', 'B', 8); $pdf->write_cell(50, 8, _("Résumé Exercice précédent")); $pdf->line_new(); $pdf->SetFont('DejaVuCond', '', 7); $bal->summary_display_pdf($summary_prev_tab, $pdf); $pdf->line_new(); } $pdf->SetFont('DejaVuCond', 'B', 8); $pdf->write_cell(50, 8, _("Résumé Exercice courant")); $pdf->line_new(); $pdf->SetFont('DejaVuCond', '', 7); $bal->summary_display_pdf($summary_tab, $pdf); } $fDate = date('dmy-Hi'); $pdf->Output('balance-' . $fDate . '.pdf', 'D'); ?>