* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * $Id$ * $Source$ * * Génération des rapports * */ print "Mem : ".memory_get_usage() ."\n"; require ("../../master.inc.php"); require_once (DOL_DOCUMENT_ROOT."/telephonie/lignetel.class.php"); require_once (DOL_DOCUMENT_ROOT."/telephonie/facturetel.class.php"); require_once (DOL_DOCUMENT_ROOT."/telephonie/telephonie-tarif.class.php"); require_once (DOL_DOCUMENT_ROOT."/telephonie/communication.class.php"); require_once (DOL_DOCUMENT_ROOT."/telephonie/numero.class.php"); require_once (DOL_DOCUMENT_ROOT."/includes/php_writeexcel/class.writeexcel_workbook.inc.php"); require_once (DOL_DOCUMENT_ROOT."/includes/php_writeexcel/class.writeexcel_worksheet.inc.php"); $error = 0; $datetime = time(); $date = strftime("%d%h%Y%Hh%Mm%S",$datetime); $month = strftime("%m", $datetime); $year = strftime("%Y", $datetime); if ($month == 1) { $month = "12"; $year = $year - 1; } else { $month = substr("00".($month - 1), -2) ; } //$month = "02"; //$year = "2005"; /* * Lecture des groupes de lignes * */ $groupes = array(); $numdatas = array(); $lignes = array(); $tarif_vente = new TelephonieTarif($db, 1, "vente"); $sql = "SELECT rowid, nom FROM ".MAIN_DB_PREFIX."telephonie_groupeligne"; $resql = $db->query($sql); if ($resql) { $nums = $db->num_rows($resql); $i = 0; while($i < $nums) { $row = $db->fetch_row($resql); $groupes[$row[0]] = $row[1]; print "Mem : ".memory_get_usage() ."\n"; $i++; } $db->free($resql); } foreach ($groupes as $keygroupe => $groupe) { $dir = DOL_DATA_ROOT . "/telephonie/rapports/".$keygroupe; if (! file_exists($dir)) { umask(0); if (! @mkdir($dir, 0755)) { print "Erreur: Le répertoire '$dir' n'existe pas et Dolibarr n'a pu le créer."; } } $fname = $dir."/".substr('00'.$month, -2)."-".$year.".xls"; print "Open $fname\n"; $workbook = &new writeexcel_workbook($fname); $formatcc =& $workbook->addformat(); $formatcc->set_align('center'); $formatcc->set_align('vcenter'); $fclient =& $workbook->addformat(); $fclient->set_align('left'); $fclient->set_align('vcenter'); $fclient->set_border(1); $fcode =& $workbook->addformat(); $fcode->set_align('center'); $fcode->set_align('vcenter'); $fcode->set_border(1); $fligne =& $workbook->addformat(); $fligne->set_align('center'); $fligne->set_align('vcenter'); $fligne->set_right(6); $fligne->set_bottom(1); $fnb =& $workbook->addformat(); $fnb->set_align('vcenter'); $fnb->set_align('center'); $fnb->set_top(1); $fnb->set_right(1); $fnb->set_bottom(1); $fnb->set_left(6); $fduree =& $workbook->addformat(); $fduree->set_align('center'); $fduree->set_align('vcenter'); $fduree->set_border(1); $fcout =& $workbook->addformat(); $fcout->set_align('center'); $fcout->set_align('vcenter'); $fcout->set_num_format('0.00'); $fcout->set_border(1); $fmoy =& $workbook->addformat(); $fmoy->set_align('center'); $fmoy->set_align('vcenter'); $fmoy->set_right(6); $fmoy->set_bottom(1); $fmoy->set_num_format('0.0000'); $format_titre =& $workbook->addformat(); $format_titre->set_align('center'); $format_titre->set_align('vcenter'); $format_titre->set_bold(); $format_titre->set_border(1); $format_titre_nb =& $workbook->addformat(); $format_titre_nb->set_align('center'); $format_titre_nb->set_align('vcenter'); $format_titre_nb->set_bold(); $format_titre_nb->set_right(1); $format_titre_nb->set_top(1); $format_titre_nb->set_bottom(1); $format_titre_nb->set_left(6); $format_titre_moy =& $workbook->addformat(); $format_titre_moy->set_align('center'); $format_titre_moy->set_align('vcenter'); $format_titre_moy->set_bold(); $format_titre_moy->set_right(1); $format_titre_moy->set_top(1); $format_titre_moy->set_bottom(1); $format_titre_moy->set_right(6); $format_titre_agence1 =& $workbook->addformat(); $format_titre_agence1->set_align('center'); $format_titre_agence1->set_align('vcenter'); $format_titre_agence1->set_bold(); $format_titre_agence1->set_right(1); $format_titre_agence1->set_left(1); $format_titre_agence1->set_top(1); $format_titre_agence1->set_merge(); $format_titre_agence2 =& $workbook->addformat(); $format_titre_agence2->set_align('center'); $format_titre_agence2->set_align('vcenter'); $format_titre_agence2->set_bold(); $format_titre_agence2->set_right(1); $format_titre_agence2->set_left(1); $format_titre_agence2->set_bottom(1); $format_titre_agence2->set_merge(); $format_titre_nat1 =& $workbook->addformat(); $format_titre_nat1->set_align('center'); $format_titre_nat1->set_align('vcenter'); $format_titre_nat1->set_bold(); $format_titre_nat1->set_left(6); $format_titre_nat1->set_merge(); $format_titre_nat2 =& $workbook->addformat(); $format_titre_nat2->set_align('center'); $format_titre_nat2->set_align('vcenter'); $format_titre_nat2->set_bold(); $format_titre_nat2->set_merge(); $format_titre_nat3 =& $workbook->addformat(); $format_titre_nat3->set_align('center'); $format_titre_nat3->set_align('vcenter'); $format_titre_nat3->set_bold(); $format_titre_nat3->set_right(6); $format_titre_nat3->set_merge(); $format_titre_total1 =& $workbook->addformat(); $format_titre_total1->set_align('center'); $format_titre_total1->set_align('vcenter'); $format_titre_total1->set_bold(); $format_titre_total1->set_left(1); $format_titre_total1->set_top(1); $format_titre_total1->set_bottom(1); $format_titre_total1->set_merge(); $format_titre_total2 =& $workbook->addformat(); $format_titre_total2->set_align('center'); $format_titre_total2->set_align('vcenter'); $format_titre_total2->set_bold(); $format_titre_total2->set_top(1); $format_titre_total2->set_bottom(1); $format_titre_total2->set_merge(); $format_titre_total3 =& $workbook->addformat(); $format_titre_total3->set_align('center'); $format_titre_total3->set_align('vcenter'); $format_titre_total3->set_bold(); $format_titre_total3->set_right(6); $format_titre_total3->set_top(1); $format_titre_total3->set_bottom(1); $format_titre_total3->set_merge(); $formatc =& $workbook->addformat(); $formatc->set_align('vcenter'); $fnbBold =& $workbook->addformat(); $fnbBold->set_align('vcenter'); $fnbBold->set_bold(); $formatr =& $workbook->addformat(); $formatr->set_align('vcenter'); $formatr->set_align('right'); $fcoutBold =& $workbook->addformat(); $fcoutBold->set_align('right'); $fcoutBold->set_num_format('0.00'); $fcoutBold->set_bold(); $fgrey =& $workbook->addformat(); $fgrey->set_fg_color('yellow'); $fgrey->set_bold(); $fgrey->set_align('left'); $fgrey->set_pattern(0x1); $ftotal =& $workbook->addformat(); $ftotal->set_bold(); $ftotal->set_align('right'); $ftotal->set_align('vcenter'); $ftotal->set_pattern(0x1); /* * Chargement des numéros de datas * */ $sql = "SELECT n.numero "; $sql .=" FROM ".MAIN_DB_PREFIX."telephonie_numdata as n"; $sql .= " WHERE n.fk_groupe = ".$keygroupe; $resql = $db->query($sql); if ($resql) { $nums = $db->num_rows($resql); $si = 0; while($si < $nums) { $row = $db->fetch_row($resql); $numdatas[$row[0]] = $row[0]; $si++; } $db->free($resql); } else { print $db->error(); } /* * Boucle sur les mois */ for ($imonth = 1 ; $imonth <= ($month + 1) ; $imonth++) { if ($imonth > $month) { $page2 = &$workbook->addworksheet("Année $year"); } else { $page2 = &$workbook->addworksheet($year."-.".substr("00".$imonth,-2)); } for ($a = 0 ; $a < 200 ; $a++) { $page2->set_row($a,25); // A } $page2->set_column(0,0,40); // A $page2->set_column(1,1,10); // B $page2->set_column(2,2,13); // C $page2->set_column(3,3,7); // D $page2->set_column(6,6,7); // G $page2->set_column(9,9,7); // J $page2->set_column(12,12,7); // M $page2->set_column(4,5,10); // E-F $page2->set_column(7,8,10); // H-I $page2->set_column(10,11,10); // K-L $page2->set_column(13,14,10); // N-O $page2->write(0, 0, "Agence/Filiale", $format_titre_agence1); $page2->write_blank(1, 0, $format_titre_agence2); $page2->write(0, 1, "Site", $format_titre); $page2->write(0, 2, "Ligne", $format_titre); $page2->write(0, 3, "Local/National", $format_titre_nat1); $page2->write_blank(0, 4, $format_titre_nat2); $page2->write_blank(0, 5, $format_titre_nat3); $page2->write(1, 3, "Nb", $format_titre_nb); $page2->write(1, 4, "Durée", $format_titre); $page2->write(1, 5, "Coût", $format_titre); $page2->write(0, 6, "Mobile SFR/Orange", $format_titre_nat1); $page2->write_blank(0, 7, $format_titre_nat2); $page2->write_blank(0, 8, $format_titre_nat3); $page2->write(1, 6, "Nb", $format_titre_nb); $page2->write(1, 7, "Durée", $format_titre); $page2->write(1, 8, "Coût", $format_titre); $page2->write(0, 9, "Mobile Bouygues", $format_titre_nat1); $page2->write_blank(0, 10, $format_titre_nat2); $page2->write_blank(0, 11, $format_titre_nat3); $page2->write(1, 9, "Nb", $format_titre_nb); $page2->write(1, 10, "Durée", $format_titre); $page2->write(1, 11, "Coût", $format_titre); $page2->write(0, 12, "Données", $format_titre_nat1); $page2->write_blank(0, 13, $format_titre_nat2); $page2->write_blank(0, 14, $format_titre_nat3); $page2->write(1, 12, "Nb", $format_titre_nb); $page2->write(1, 13, "Durée", $format_titre); $page2->write(1, 14, "Coût", $format_titre); $page2->write(0, 15, "Total", $format_titre_nat1); $page2->write_blank(0, 16, $format_titre_nat2); $page2->write_blank(0, 17, $format_titre_nat2); $page2->write_blank(0, 18, $format_titre_nat3); $page2->write(1, 15, "Nb", $format_titre_nb); $page2->write(1, 16, "Durée", $format_titre); $page2->write(1, 17, "Coût", $format_titre); $page2->write(1, 18, "Moyenne\ncoût/sec", $format_titre_moy); unset ($lignes); /* * * */ $sql = "SELECT sl.rowid, sl.ligne"; $sql .=" FROM ".MAIN_DB_PREFIX."telephonie_societe_ligne as sl"; $sql .=" , ".MAIN_DB_PREFIX."telephonie_groupe_ligne as gl"; $sql .= " WHERE gl.fk_ligne = sl.rowid"; $sql .= " AND sl.statut <> 7"; $sql .= " AND gl.fk_groupe = ".$keygroupe; $sql .= " ORDER BY sl.fk_soc_facture ASC"; if ( $db->query($sql) ) { $nums = $db->num_rows(); $si = 0; while($si < $nums) { $row = $db->fetch_row(); $lignes[$row[0]] = $row[1]; //print "Lecture $row[1]\n"; $si++; } $db->free(); } else { print $db->error(); } /* * * */ $xx = 2; $oldxx = $xx+1; $oldana = ''; $oldfk_soc = ''; $lines = array(); $fksoc = 0; $tg = 0; // permet de gérer l'affichage du total groupe. $total_global_nb = 0; $total_global_duree = 0; $total_global_cout = 0; $total_global_mobile_nb = 0; $total_global_mobile_duree = 0; $total_global_mobile_cout = 0; $total_global_data_nb = 0; $total_global_data_duree = 0; $total_global_data_cout = 0; $total_global_inter_nb = 0; $total_global_inter_duree = 0; $total_global_inter_cout = 0; $total_global_national_nb = 0; $total_global_national_duree = 0; $total_global_national_cout = 0; $total_groupe_national_nb = 0; $total_groupe_national_duree = 0; $total_groupe_national_cout = 0; $total_groupe_mobile_sfr_nb = 0; $total_groupe_mobile_sfr_duree = 0; $total_groupe_mobile_sfr_cout = 0; $total_groupe_mobile_orange_nb = 0; $total_groupe_mobile_orange_duree = 0; $total_groupe_mobile_orange_cout = 0; $total_groupe_mobile_bouygues_nb = 0; $total_groupe_mobile_bouygues_duree = 0; $total_groupe_mobile_bouygues_cout = 0; $total_groupe_data_nb = 0; $total_groupe_data_duree = 0; $total_groupe_data_cout = 0; $total_groupe_duree = 0; $total_groupe_nb = 0; $total_groupe_cout = 0; foreach ($lignes as $keyligne => $ligne) { $lignetel = new LigneTel($db); $lignetel->fetch_by_id($keyligne); $client = new Societe($db); $client->fetch($lignetel->client_id); //print "Traitement ligne $keyligne ". $lignetel->numero."\n"; $national_nb = 0; $national_duree = 0; $national_cout = 0; $mobile_sfr_nb = 0; $mobile_sfr_duree = 0; $mobile_sfr_cout = 0; $mobile_orange_nb = 0; $mobile_orange_duree = 0; $mobile_orange_cout = 0; $mobile_bouygues_nb = 0; $mobile_bouygues_duree = 0; $mobile_bouygues_cout = 0; $inter_nb = 0; $inter_duree = 0; $inter_cout = 0; $data_nb = 0; $data_duree = 0; $data_cout = 0; if (($oldfk_soc <> $lignetel->client_facture_id) && ($fksoc > 0)) { $page2->write_string($xx, 0, 'Total', $format_titre_total1); $page2->write_blank($xx, 1, $format_titre_total2); $page2->write_blank($xx, 2, $format_titre_total3); $str = '=SUM(D'.$oldxx.':D'.($xx).')'; $page2->write_formula($xx, 3, $str, $fnb); //$page2->write($xx, 3, $total_groupe_national_nb, $fnb); $page2->write_string($xx, 4, duree_text($total_groupe_national_duree), $fduree); $str = '=SUM(F'.$oldxx.':F'.($xx).')'; $page2->write_formula($xx, 5, $str, $fcout); $str = '=SUM(G'.$oldxx.':G'.($xx).')'; $page2->write_formula($xx, 6, $str, $fnb); $page2->write_string($xx, 7, duree_text(($total_groupe_mobile_sfr_duree + $total_groupe_mobile_orange_duree)), $fduree); $str = '=SUM(I'.$oldxx.':I'.($xx).')'; $page2->write_formula($xx, 8, $str, $fcout); $str = '=SUM(J'.$oldxx.':J'.($xx).')'; $page2->write_formula($xx, 9, $str, $fnb); $page2->write_string($xx, 10, duree_text($total_groupe_mobile_bouygues_duree), $fduree); $str = '=SUM(L'.$oldxx.':L'.($xx).')'; $page2->write_formula($xx, 11, $str, $fcout); $str = '=SUM(M'.$oldxx.':M'.($xx).')'; $page2->write_formula($xx, 12, $str, $fnb); $page2->write_string($xx, 13, duree_text($total_groupe_data_duree), $fduree); $str = '=SUM(O'.$oldxx.':O'.($xx).')'; $page2->write_formula($xx, 14, $str, $fcout); $tlg_nb = $total_groupe_national_nb + $total_groupe_mobile_sfr_nb + $total_groupe_mobile_orange_nb + $total_groupe_mobile_bouygues_nb + $total_groupe_data_nb; $tlg_duree = $total_groupe_national_duree + $total_groupe_mobile_sfr_duree + $total_groupe_mobile_orange_duree + $total_groupe_mobile_bouygues_duree + $total_groupe_data_duree; $tlg_cout = $total_groupe_national_cout + $total_groupe_mobile_sfr_cout + $total_groupe_mobile_orange_cout + $total_groupe_mobile_bouygues_cout + $total_groupe_data_cout; $str ="=D".($xx+1)."+G".($xx+1)."+J".($xx+1)."+M".($xx+1); $page2->write_formula($xx, 15, $str, $fnb); $page2->write_string($xx, 16, duree_text($tlg_duree), $fduree); $str ="=F".($xx+1)."+I".($xx+1)."+L".($xx+1)."+O".($xx+1); $page2->write_formula($xx, 17, $str, $fcout); if ($tlg_duree > 0) { $page2->write($xx, 18, round(($tlg_cout/$tlg_duree),4), $fmoy); } else { $page2->write($xx, 18, 0, $fmoy); } $tg = 0; $total_groupe_duree = 0; $total_groupe_nb = 0; $total_groupe_cout = 0; $total_groupe_national_nb = 0; $total_groupe_national_duree = 0; $total_groupe_national_cout = 0; $total_groupe_mobile_sfr_nb = 0; $total_groupe_mobile_sfr_duree = 0; $total_groupe_mobile_sfr_cout = 0; $total_groupe_mobile_orange_nb = 0; $total_groupe_mobile_orange_duree = 0; $total_groupe_mobile_orange_cout = 0; $total_groupe_mobile_bouygues_nb = 0; $total_groupe_mobile_bouygues_duree = 0; $total_groupe_mobile_bouygues_cout = 0; $total_groupe_data_nb = 0; $total_groupe_data_duree = 0; $total_groupe_data_cout = 0; $lines = array(); $oldfk_soc = $lignetel->client_facture_id; $xx++; $oldxx = $xx+1; } else { if ($tg == 1) { // Ecrase le total groupe si la ligne suivante fait partie du même groupe $tg = 0; } } $page2->write_string($xx, 1, $lignetel->code_analytique, $fcode); $page2->write_string($xx, 0, $client->nom, $fclient); $total_duree = 0; $total_cout = 0; $total_nb=0; $page2->write_string($xx, 2, $lignetel->numero, $fligne); /* * Communications */ $sql = "SELECT ligne, numero, date, fourn_cout, fourn_montant, duree, tarif_achat_temp, tarif_achat_fixe, tarif_vente_temp, tarif_vente_fixe, cout_achat, cout_vente, remise"; $sql .= " FROM ".MAIN_DB_PREFIX."telephonie_communications_details as l"; $sql .= " WHERE ligne = '".$lignetel->numero."'"; if ($imonth > $month) { $sql .= " AND date_format(date,'%Y') = ".$year; } else { $sql .= " AND date_format(date,'%Y%m') = ".$year.substr("00".$imonth, -2); } $sql .= " ORDER BY date ASC "; $result = $db->query($sql); if ($result) { $num = $db->num_rows(); $i = 0; while ($i < $num) { $obj = $db->fetch_object(); $NumTel = new TelephonieNumero($obj->numero); $type = $NumTel->NumeroType($lignetel->numero); /* * Type appel * */ if ($type == 'mobile') { $z = ''; $nnum = '0033'.substr($obj->numero, 1); // print $nnum; $tarif_vente->cout($nnum, $x, $y, $z); // print " ".$z."\n"; if ($z == 'FRANCE MOBILE SFR') { $type = 'mobile_sfr'; } elseif ($z == 'FRANCE MOBILE ORANGE') { $type = 'mobile_orange'; } elseif ($z == 'FRANCE MOBILE BOUYGUES') { $type = 'mobile_bouygues'; } else { print "ERROR ERROR ERROR ERROR\n"; exit (1); } } if (array_key_exists($obj->numero, $numdatas) ) { $data_nb++; $data_duree += $obj->duree; $data_cout += $obj->cout_vente; $total_groupe_data_nb++; $total_groupe_data_duree += $obj->duree; $total_groupe_data_cout += $obj->cout_vente; $total_global_data_nb++; $total_global_data_duree += $obj->duree; $total_global_data_cout += $obj->cout_vente; } else { if ($type == 'mobile_sfr') { $mobile_sfr_nb++; $mobile_sfr_duree += $obj->duree; $mobile_sfr_cout += $obj->cout_vente; $total_groupe_mobile_sfr_nb++; $total_groupe_mobile_sfr_duree += $obj->duree; $total_groupe_mobile_sfr_cout += $obj->cout_vente; $total_global_mobile_sfr_nb++; $total_global_mobile_sfr_duree += $obj->duree; $total_global_mobile_sfr_cout += $obj->cout_vente; } elseif ($type == 'mobile_orange') { $mobile_orange_nb++; $mobile_orange_duree += $obj->duree; $mobile_orange_cout += $obj->cout_vente; $total_groupe_mobile_orange_nb++; $total_groupe_mobile_orange_duree += $obj->duree; $total_groupe_mobile_orange_cout += $obj->cout_vente; $total_global_mobile_orange_nb++; $total_global_mobile_orange_duree += $obj->duree; $total_global_mobile_orange_cout += $obj->cout_vente; } elseif ($type == 'mobile_bouygues') { $mobile_bouygues_nb++; $mobile_bouygues_duree += $obj->duree; $mobile_bouygues_cout += $obj->cout_vente; $total_groupe_mobile_bouygues_nb++; $total_groupe_mobile_bouygues_duree += $obj->duree; $total_groupe_mobile_bouygues_cout += $obj->cout_vente; $total_global_mobile_bouygues_nb++; $total_global_mobile_bouygues_duree += $obj->duree; $total_global_mobile_bouygues_cout += $obj->cout_vente; } elseif ($type == 'inter') { $inter_nb++; $inter_duree += $obj->duree; $inter_cout += $obj->cout_vente; $total_global_inter_nb++; $total_global_inter_duree += $obj->duree; $total_global_inter_cout += $obj->cout_vente; } elseif ($type == 'national') { $national_nb++; $national_duree += $obj->duree; $national_cout += $obj->cout_vente; $total_groupe_national_nb++; $total_groupe_national_duree += $obj->duree; $total_groupe_national_cout += $obj->cout_vente; $total_global_national_nb++; $total_global_national_duree += $obj->duree; $total_global_national_cout += $obj->cout_vente; } else { print "ERROR ERROR ERROR ERROR\n"; exit (1); } } $total_nb++; $total_duree += $obj->duree; $total_cout += $obj->cout_vente; $total_groupe_nb++; $total_groupe_duree += $obj->duree; $total_groupe_cout += $obj->cout_vente; $total_global_nb++; $total_global_duree += $obj->duree; $total_global_cout += $obj->cout_vente; $i++; } } else { print $db->error(); } /* $page2->write($xx, 3, $data_nb, $formatc); $page2->write_string($xx, 4, duree_text($data_duree), $fduree); $page2->write($xx, 5, $data_cout, $fcout); */ /* Local / National */ $page2->write($xx, 3, $national_nb, $fnb); $page2->write_string($xx, 4, duree_text($national_duree), $fduree); $page2->write($xx, 5, $national_cout, $fcout); /* Mobile SFR + Mobile Orange */ $page2->write($xx, 6, ($mobile_sfr_nb + $mobile_orange_nb), $fnb); $page2->write_string($xx, 7, duree_text($mobile_sfr_duree + $mobile_orange_duree), $fduree); $page2->write($xx, 8, ($mobile_sfr_cout+$mobile_orange_cout), $fcout); /* Mobile Bouygues */ $page2->write($xx, 9, $mobile_bouygues_nb, $fnb); $page2->write_string($xx, 10, duree_text($mobile_bouygues_duree), $fduree); $page2->write($xx, 11, $mobile_bouygues_cout, $fcout); /* Data */ $page2->write($xx, 12, $data_nb, $fnb); $page2->write_string($xx, 13, duree_text($data_duree), $fduree); $page2->write($xx, 14, $data_cout, $fcout); /* Totaux */ $tl_nb = $national_nb + $mobile_sfr_nb + $mobile_orange_nb + $mobile_bouygues_nb + $data_nb; $tl_cout = $national_cout + $mobile_sfr_cout + $mobile_orange_cout + $mobile_bouygues_cout + $data_cout; $tl_duree = $national_duree + $mobile_sfr_duree + $mobile_orange_duree + $mobile_bouygues_duree + $data_duree; $str ="=D".($xx+1)."+G".($xx+1)."+J".($xx+1)."+M".($xx+1); $page2->write_formula($xx, 15, $str , $fnb); $page2->write_string($xx, 16, duree_text($tl_duree), $fduree); $str ="=F".($xx+1)."+I".($xx+1)."+L".($xx+1)."+O".($xx+1); $page2->write($xx, 17, $str, $fcout); if ($tl_duree > 0) { $page2->write($xx, 18, round(($tl_cout/$tl_duree),4), $fmoy); } else { $page2->write($xx, 18, 0, $fmoy); } /* $page2->write($xx, 3, $inter_nb, $formatc); $page2->write_string($xx, 4, duree_text($inter_duree), $fduree); $page2->write($xx, 5, $inter_cout, $fcout); */ /* $page2->write($xx, 3, $total_nb, $ftotal); $page2->write_string($xx, 4, duree_text($total_duree), $fdureeBold); $page2->write($xx, 5, $total_cout, $fcoutBold); */ $xx++; $fksoc++; } // Fin de la boucle des lignes /* $page2->write_string($xx, 0, 'Total', $format_titre_total1); $page2->write_blank($xx, 1, $format_titre_total2); $page2->write_blank($xx, 2, $format_titre_total3); $page2->write($xx, 3, $total_groupe_national_nb, $fnb); $page2->write_string($xx, 4, duree_text($total_groupe_national_duree), $fduree); $page2->write($xx, 5, $total_groupe_national_cout, $fcout); $page2->write($xx, 6, ($total_groupe_mobile_sfr_nb + $total_groupe_mobile_orange_nb), $fnb); $page2->write_string($xx, 7, duree_text(($total_groupe_mobile_sfr_duree + $total_groupe_mobile_orange_duree)), $fduree); $page2->write($xx, 8, ($total_groupe_mobile_sfr_cout + $total_groupe_mobile_orange_cout), $fcout); $page2->write($xx, 9, $total_groupe_mobile_bouygues_nb, $fnb); $page2->write_string($xx, 10, duree_text($total_groupe_mobile_bouygues_duree ), $fduree); $page2->write($xx, 11, $total_groupe_mobile_bouygues_cout, $fcout); $page2->write($xx, 12, $total_groupe_data_nb, $fnb); $page2->write_string($xx, 13, duree_text($total_groupe_data_duree), $fduree); $page2->write($xx, 14, $total_groupe_data_cout, $fcout); $tlg_nb = $total_groupe_national_nb + $total_groupe_mobile_sfr_nb + $total_groupe_mobile_orange_nb + $total_groupe_mobile_bouygues_nb + $total_groupe_data_nb; $tlg_duree = $total_groupe_national_duree + $total_groupe_mobile_sfr_duree + $total_groupe_mobile_orange_duree + $total_groupe_mobile_bouygues_duree + $total_groupe_data_duree; $tlg_cout = $total_groupe_national_cout + $total_groupe_mobile_sfr_cout + $total_groupe_mobile_orange_cout + $total_groupe_mobile_bouygues_cout + $total_groupe_data_cout; $page2->write($xx, 19, $tlg_nb, $fnb); $page2->write_string($xx, 20, duree_text($tlg_duree), $fduree); $page2->write($xx, 21, $tlg_cout, $fcout); $page2->write($xx, 22, ($tlg_cout/$tlg_duree), $fmoy); */ /******************************/ $page2->write_string($xx, 0, 'Total', $format_titre_total1); $page2->write_blank($xx, 1, $format_titre_total2); $page2->write_blank($xx, 2, $format_titre_total3); $str = '=SUM(D'.$oldxx.':D'.($xx).')'; $page2->write_formula($xx, 3, $str, $fnb); //$page2->write($xx, 3, $total_groupe_national_nb, $fnb); $page2->write_string($xx, 4, duree_text($total_groupe_national_duree), $fduree); $str = '=SUM(F'.$oldxx.':F'.($xx).')'; $page2->write_formula($xx, 5, $str, $fcout); $str = '=SUM(G'.$oldxx.':G'.($xx).')'; $page2->write_formula($xx, 6, $str, $fnb); $page2->write_string($xx, 7, duree_text(($total_groupe_mobile_sfr_duree + $total_groupe_mobile_orange_duree)), $fduree); $str = '=SUM(I'.$oldxx.':I'.($xx).')'; $page2->write_formula($xx, 8, $str, $fcout); $str = '=SUM(J'.$oldxx.':J'.($xx).')'; $page2->write_formula($xx, 9, $str, $fnb); $page2->write_string($xx, 10, duree_text($total_groupe_mobile_bouygues_duree), $fduree); $str = '=SUM(L'.$oldxx.':L'.($xx).')'; $page2->write_formula($xx, 11, $str, $fcout); $str = '=SUM(M'.$oldxx.':M'.($xx).')'; $page2->write_formula($xx, 12, $str, $fnb); $page2->write_string($xx, 13, duree_text($total_groupe_data_duree), $fduree); $str = '=SUM(O'.$oldxx.':O'.($xx).')'; $page2->write_formula($xx, 14, $str, $fcout); $tlg_nb = $total_groupe_national_nb + $total_groupe_mobile_sfr_nb + $total_groupe_mobile_orange_nb + $total_groupe_mobile_bouygues_nb + $total_groupe_data_nb; $tlg_duree = $total_groupe_national_duree + $total_groupe_mobile_sfr_duree + $total_groupe_mobile_orange_duree + $total_groupe_mobile_bouygues_duree + $total_groupe_data_duree; $tlg_cout = $total_groupe_national_cout + $total_groupe_mobile_sfr_cout + $total_groupe_mobile_orange_cout + $total_groupe_mobile_bouygues_cout + $total_groupe_data_cout; $str ="=D".($xx+1)."+G".($xx+1)."+J".($xx+1)."+M".($xx+1); $page2->write_formula($xx, 15, $str, $fnb); $page2->write_string($xx, 16, duree_text($tlg_duree), $fduree); $str ="=F".($xx+1)."+I".($xx+1)."+L".($xx+1)."+O".($xx+1); $page2->write_formula($xx, 17, $str, $fcout); if ($tlg_duree > 0) { $page2->write($xx, 18, round(($tlg_cout/$tlg_duree),4), $fmoy); } else { $page2->write($xx, 18, 0, $fmoy); } /********************************/ $tg = 0; $total_groupe_duree = 0; $total_groupe_nb = 0; $total_groupe_cout = 0; $total_groupe_national_nb = 0; $total_groupe_national_duree = 0; $total_groupe_national_cout = 0; $total_groupe_mobile_sfr_nb = 0; $total_groupe_mobile_sfr_duree = 0; $total_groupe_mobile_sfr_cout = 0; $total_groupe_mobile_orange_nb = 0; $total_groupe_mobile_orange_duree = 0; $total_groupe_mobile_orange_cout = 0; $total_groupe_mobile_bouygues_nb = 0; $total_groupe_mobile_bouygues_duree = 0; $total_groupe_mobile_bouygues_cout = 0; $total_groupe_data_nb = 0; $total_groupe_data_duree = 0; $total_groupe_data_cout = 0; $oldfk_soc = $lignetel->client_facture_id; $xx++; } $workbook->close(); dolibarr_syslog("Close $fname"); } function duree_text($duree) { $h = floor($duree / 3600); $m = floor(($duree - ($h * 3600)) / 60); $s = ($duree - ( ($h * 3600 ) + ($m * 60) ) ); if ($h > 0) { $dt = $h . " h " . $m ." min " . $s ." sec" ; } else { if ($m > 0) { $dt = $m ." min " . $s ." sec" ; } else { $dt = $s ." sec" ; } } return $h.":".substr("00".$m, -2).":".substr("00".$s,-2); } ?>