source: pmb4.2/trunk/fuentes/pmb/classes/abts_pointage.class.php @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 63.0 KB
Line 
1<?php
2// +-------------------------------------------------+
3// | 2002-2007 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: abts_pointage.class.php,v 1.67.2.1 2015-11-05 13:21:13 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php"))
8        die("no access");
9
10require_once ($include_path . "/templates/abts_pointage.tpl.php");
11require_once ($class_path . "/serial_display.class.php");
12require_once ($include_path . "/abts_func.inc.php");
13require_once ($include_path . "/misc.inc.php");
14require_once ($class_path . "/parse_format.class.php");
15require_once ($class_path.'/entites.class.php');
16require_once($base_path."/classes/rtf/Rtf.php");
17require_once($base_path."/classes/fpdf.class.php");
18require_once($base_path."/classes/ufpdf.class.php");
19require_once("$class_path/coordonnees.class.php");
20       
21class abts_pointage {
22        var $num_notice; //notice id
23        var $print_mode = 0; //0 : rtf, 1 : pdf
24        var $error; //Erreur
25        var $error_message; //Message d'erreur
26        var $liste_rel=array(); 
27       
28        function abts_pointage($notice_id = "") {
29                global $msg,$dbh;
30               
31                //Verif de l'id de la notice
32                if ($notice_id) {
33                        $this->num_notice = 0;
34                        $requete = "select niveau_biblio from notices where notice_id=" . $notice_id;
35                        $resultat = pmb_mysql_query($requete,$dbh);
36                        if (pmb_mysql_result($resultat, 0, 0) == "s")
37                                $this->num_notice = $notice_id;
38
39                        else {
40                                $this->error = true;
41                                $this->error_message = $msg["pointage_message_no_serial"];
42                        }
43
44                }
45        }
46
47        function getData() {
48
49        }
50
51        function get_bulletinage($clause_filter="",$order=" date_parution,tit1,ordre,abt_name ") {
52                global $msg;
53                global $dbh;
54                global $pointage_form, $pointage_list;
55                global $location_view, $deflt_bulletinage_location;
56               
57                $this->fiche_bulletin=array();
58                $print_format=new parse_format();
59
60                if ($location_view == "") $location_view = $deflt_bulletinage_location;
61                if($this->num_notice) $and_rqt_notice=" and notice_id =". $this->num_notice ;
62               
63                $cpt_a_recevoir = $cpt_en_retard = $cpt_en_alerte = 0;
64                $numero_modele = '';
65               
66                $requete = "                   
67                SELECT id_bull,num_abt,abts_grille_abt.date_parution,modele_id,type,numero,nombre,ordre,state,fournisseur,abt_name,num_notice,location_id,tit1,index_sew,date_debut, date_fin,cote
68                FROM abts_grille_abt ,abts_abts, notices
69                WHERE abt_id=num_abt and notice_id= num_notice ";
70                if ($location_view) $requete .= " and location_id='$location_view' ";
71                $requete .= " $and_rqt_notice $clause_filter
72                order by $order;
73                ";
74
75                $memo_prochain=array();
76                $memo_abt_modele=array();
77
78                $resultat = pmb_mysql_query($requete,$dbh);
79                if ($resultat) {
80                        while ($r = pmb_mysql_fetch_object($resultat)) {
81                                $numero = $r->numero;
82                                $libelle_numero = $numero;
83                                $volume = "";
84                                $tome = "";
85       
86                                if (!$numero_modele[$r->modele_id]) {
87                                        $requete = "SELECT modele_name,num_cycle,num_combien,num_increment,num_date_unite,num_increment_date,num_depart,vol_actif,vol_increment,vol_date_unite,vol_increment_numero,vol_increment_date,vol_cycle,vol_combien,vol_depart,tom_actif,tom_increment,tom_date_unite,tom_increment_numero,tom_increment_date,tom_cycle,tom_combien,tom_depart, format_aff
88                                                                FROM abts_modeles WHERE modele_id=$r->modele_id";
89                                        $resultat_n = pmb_mysql_query($requete,$dbh);
90                                        if ($r_n = pmb_mysql_fetch_object($resultat_n)) {
91                                                $numero_modele[$r->modele_id]['modele_name'] = $r_n->modele_name;
92                                                $numero_modele[$r->modele_id]['num_cycle'] = $r_n->num_cycle;
93                                                $numero_modele[$r->modele_id]['num_combien'] = $r_n->num_combien;
94                                                $numero_modele[$r->modele_id]['num_increment'] = $r_n->num_increment;
95                                                $numero_modele[$r->modele_id]['num_date_unite'] = $r_n->num_date_unite;
96                                                $numero_modele[$r->modele_id]['num_increment_date'] = $r_n->num_increment_date;
97                                                $numero_modele[$r->modele_id]['num_depart'] = $r_n->num_depart;
98                                                $numero_modele[$r->modele_id]['vol_actif'] = $r_n->vol_actif;
99                                                $numero_modele[$r->modele_id]['vol_increment'] = $r_n->vol_increment;
100                                                $numero_modele[$r->modele_id]['vol_date_unite'] = $r_n->vol_date_unite;
101                                                $numero_modele[$r->modele_id]['vol_increment_numero'] = $r_n->vol_increment_numero;
102                                                $numero_modele[$r->modele_id]['vol_increment_date'] = $r_n->vol_increment_date;
103                                                $numero_modele[$r->modele_id]['vol_cycle'] = $r_n->vol_cycle;
104                                                $numero_modele[$r->modele_id]['vol_combien'] = $r_n->vol_combien;
105                                                $numero_modele[$r->modele_id]['vol_depart'] = $r_n->vol_depart;
106                                                $numero_modele[$r->modele_id]['tom_actif'] = $r_n->tom_actif;
107                                                $numero_modele[$r->modele_id]['tom_increment'] = $r_n->tom_increment;
108                                                $numero_modele[$r->modele_id]['tom_date_unite'] = $r_n->tom_date_unite;
109                                                $numero_modele[$r->modele_id]['tom_increment_numero'] = $r_n->tom_increment_numero;
110                                                $numero_modele[$r->modele_id]['tom_increment_date'] = $r_n->tom_increment_date;
111                                                $numero_modele[$r->modele_id]['tom_cycle'] = $r_n->tom_cycle;
112                                                $numero_modele[$r->modele_id]['tom_combien'] = $r_n->tom_combien;
113                                                $numero_modele[$r->modele_id]['tom_depart'] = $r_n->tom_depart;
114                                                $numero_modele[$r->modele_id]['format_aff'] = $r_n->format_aff;
115                                        }
116                                        $numero_modele[$r->modele_id]['date_debut'] = $r->date_debut;
117                                        //confection de la requette sql pour les num cyclique date
118                                        $requette = $numero_modele[$r->modele_id]['num_increment_date'];
119                                        if ($numero_modele[$r->modele_id]['num_date_unite'] == 1)       $requette .= " month ";
120                                        elseif ($numero_modele[$r->modele_id]['num_date_unite'] == 2) $requette .= " year ";
121                                        else $requette .= " day ";
122                                        $numero_modele[$r->modele_id]['num_date_sql'] = $requette;
123                                        $numero_modele[$r->modele_id]['num_date_fin_cycle'] = pmb_sql_value("SELECT DATE_ADD('" . $numero_modele[$r->modele_id]['date_debut'] . "', INTERVAL " . $numero_modele[$r->modele_id]['num_date_sql'] . ")");
124       
125                                        //confection de la requette sql pour les vol cyclique date
126                                        $requette = $numero_modele[$r->modele_id]['vol_increment_date'];
127                                        if ($numero_modele[$r->modele_id]['vol_date_unite'] == 1) $requette .= " month ";
128                                        elseif ($numero_modele[$r->modele_id]['vol_date_unite'] == 2) $requette .= " year ";
129                                        else $requette .= " day ";
130                                        $numero_modele[$r->modele_id]['vol_date_sql'] = $requette;
131                                        $numero_modele[$r->modele_id]['vol_date_fin_cycle'] = pmb_sql_value("SELECT DATE_ADD('" . $numero_modele[$r->modele_id]['date_debut'] . "', INTERVAL " . $numero_modele[$r->modele_id]['vol_date_sql'] . ")");
132       
133                                        //confection de la requette sql pour les tom cyclique date
134                                        $requette = $numero_modele[$r->modele_id]['tom_increment_date'];
135                                        if ($numero_modele[$r->modele_id]['tom_date_unite'] == 1) $requette .= " month ";
136                                        elseif ($numero_modele[$r->modele_id]['tom_date_unite'] == 2) $requette .= " year ";
137                                        else $requette .= " day ";
138                                        $numero_modele[$r->modele_id]['tom_date_sql'] = $requette;
139                                        $numero_modele[$r->modele_id]['tom_date_fin_cycle'] = pmb_sql_value("SELECT DATE_ADD('" . $numero_modele[$r->modele_id]['date_debut'] . "', INTERVAL " . $numero_modele[$r->modele_id]['tom_date_sql'] . ")");
140                                       
141                                }               
142                                $obj = $r->id_bull; //ce n'est pas un id de bulletin, mais l'id dans abts_grille_abt
143                               
144                                $diff = pmb_sql_value("SELECT DATEDIFF(CURDATE(),'$r->date_parution')");
145                                $libelle_numero=$libelle_abonnement="";
146                                if($diff<0) {
147                                        $retard=3;
148                                }else{         
149                                        if( $r->type != 2){
150                                                if (!$numero_modele[$r->modele_id][$r->num_abt]) {
151                                                        $requete = "SELECT num,vol, tome, delais,       critique FROM abts_abts_modeles WHERE modele_id=$r->modele_id and abt_id=$r->num_abt";
152                                                        $resultat_n = pmb_mysql_query($requete,$dbh);
153                                                        if ($r_abt = pmb_mysql_fetch_object($resultat_n)) {
154                                                                $numero_modele[$r->modele_id][$r->num_abt]['num'] = $r_abt->num;
155                                                                $numero_modele[$r->modele_id][$r->num_abt]['vol'] = $r_abt->vol;
156                                                                $numero_modele[$r->modele_id][$r->num_abt]['tom'] = $r_abt->tome;
157                                                                $numero_modele[$r->modele_id][$r->num_abt]['delais'] = $r_abt->delais;
158                                                                $numero_modele[$r->modele_id][$r->num_abt]['critique'] = $r_abt->critique;
159                                                                $numero_modele[$r->modele_id][$r->num_abt]['start_num'] = $r_abt->num;
160                                                                $numero_modele[$r->modele_id][$r->num_abt]['start_vol'] = $r_abt->vol;
161                                                                $numero_modele[$r->modele_id][$r->num_abt]['start_tom'] = $r_abt->tome;
162                                                                $numero_modele[$r->modele_id][$r->num_abt]['num_date_fin_cycle'] = $numero_modele[$r->modele_id]['num_date_fin_cycle'];
163                                                                $numero_modele[$r->modele_id][$r->num_abt]['vol_date_fin_cycle'] = $numero_modele[$r->modele_id]['vol_date_fin_cycle'];
164                                                                $numero_modele[$r->modele_id][$r->num_abt]['tom_date_fin_cycle'] = $numero_modele[$r->modele_id]['tom_date_fin_cycle'];
165                                                        }                                                       
166                                                       
167                                                        $numero_modele[$r->modele_id][$r->num_abt]['date_parution'] = $r->date_parution;
168                                                        $numero_modele[$r->modele_id][$r->num_abt]['num']--;
169                                                        increment_bulletin($r->modele_id, $numero_modele[$r->modele_id],$r->num_abt);                                                   
170                                                        $numero_modele[$r->modele_id][$r->num_abt]['ordre'] = $r->ordre;
171                                                       
172                                                } elseif (($numero_modele[$r->modele_id][$r->num_abt]['date_parution'] != $r->date_parution) || ($numero_modele[$r->modele_id][$r->num_abt]['ordre'] != $r->ordre)) {
173                                                        $numero_modele[$r->modele_id][$r->num_abt]['date_parution'] = $r->date_parution;
174                                                        $numero_modele[$r->modele_id][$r->num_abt]['ordre'] = $r->ordre;
175                                                        increment_bulletin($r->modele_id, $numero_modele[$r->modele_id],$r->num_abt);                   
176                                                }
177                                        }
178                                       
179                                        if ($r->type == 1) {                           
180                                                $numero_modele[$r->modele_id][abt_name] = $r->abt_name;
181                                                $libelle_abonnement = $numero_modele[$r->modele_id]['modele_name'] . " / " . $numero_modele[$r->modele_id]['abt_name'];                 
182                                               
183                                                $numero = $numero_modele[$r->modele_id][$r->num_abt]['num'];
184                                               
185                                                $volume = $numero_modele[$r->modele_id][$r->num_abt]['vol'];
186                                                $tome = $numero_modele[$r->modele_id][$r->num_abt]['tom'];
187                                                $format_aff = $numero_modele[$r->modele_id]['format_aff'];
188                                                if($format_aff){
189                                                        $print_format->var_format['DATE'] = $r->date_parution;
190                                                        $print_format->var_format['TOM'] = $tome;
191                                                        $print_format->var_format['VOL'] = $volume;
192                                                        $print_format->var_format['NUM'] = $numero;
193                                                        $print_format->var_format['START_NUM'] = $numero_modele[$r->modele_id][$r->num_abt]['start_num'];
194                                                        $print_format->var_format['START_VOL'] = $numero_modele[$r->modele_id][$r->num_abt]['start_vol'];
195                                                        $print_format->var_format['START_TOM'] = $numero_modele[$r->modele_id][$r->num_abt]['start_tom'];
196                                                        $print_format->var_format['START_DATE'] = $r->date_debut;
197                                                        $print_format->var_format['END_DATE'] = $r->date_fin;
198                                                                                               
199                                                        $print_format->cmd = $format_aff;
200                                                        $libelle_numero=$print_format->exec_cmd();
201                                                }       
202                                                else {
203                                                        $libelle_numero="";
204                                                        if($tome)$libelle_numero.= sprintf($msg['abts_tome'],$tome).' ';
205                                                        if($volume)$libelle_numero.= sprintf($msg['abts_vol'],$volume).' ';
206                                                        if($numero)$libelle_numero.= sprintf($msg['abts_no'],$numero);                                 
207                                                }
208                                        }
209                                        else if ($r->type == 2) {                               
210                                                $numero_modele[$r->modele_id][abt_name] = $r->abt_name;
211                                                $libelle_abonnement = $numero_modele[$r->modele_id]['modele_name'] . " / " . $numero_modele[$r->modele_id]['abt_name'];
212                                               
213                                                $volume = $numero_modele[$r->modele_id][$r->num_abt]['vol'];
214                                                $tome = $numero_modele[$r->modele_id][$r->num_abt]['tom'];
215                                                $format_aff = $numero_modele[$r->modele_id]['format_aff'];
216                                                if($format_aff){
217                                                        $print_format->var_format['DATE'] = $r->date_parution;
218                                                        $print_format->var_format['TOM'] = $tome;
219                                                        $print_format->var_format['VOL'] = $volume;
220                                                        $print_format->var_format['NUM'] = "HS".$numero;
221                                                        $print_format->var_format['START_NUM'] = $numero_modele[$r->modele_id][$r->num_abt]['start_num'];
222                                                        $print_format->var_format['START_VOL'] = $numero_modele[$r->modele_id][$r->num_abt]['start_vol'];
223                                                        $print_format->var_format['START_TOM'] = $numero_modele[$r->modele_id][$r->num_abt]['start_tom'];
224                                                        $print_format->var_format['START_DATE'] = $r->date_debut;
225                                                        $print_format->var_format['END_DATE'] = $r->date_fin;
226                                                                                               
227                                                        $print_format->cmd = $format_aff;
228                                                        $libelle_numero=$print_format->exec_cmd();
229                                                }       
230                                                else {
231                                                        $libelle_numero="";
232                                                        if($tome)$libelle_numero.= sprintf($msg['abts_tome'],$tome).' ';
233                                                        if($volume)$libelle_numero.= sprintf($msg['abts_vol'],$volume).' ';
234                                                        if($numero)$libelle_numero.= sprintf($msg['abts_hsno'],$numero);                                       
235                                                }
236                                        }
237                                       
238                                        if ($r->state == 0) {                   
239                                                $obj = $r->id_bull;
240                                                $fiche['date_parution']=$r->date_parution;
241                                                $fiche['periodique']="<a href=\"./catalog.php?categ=serials&sub=view&serial_id=" . $r->num_notice . "\">$r->tit1</a>";
242                                                $fiche['libelle_notice']=$r->tit1;
243                                                $fiche['libelle_numero']=$libelle_numero;
244                                                $fiche['libelle_abonnement']=$libelle_abonnement;
245                                                $fiche['link_recu']="onClick='bulletine(\"$obj\",event);'";
246                                                $fiche['link_non_recevable']="onClick='nonrecevable(\"$obj\",event);'";
247                                                $fiche['fournisseur_id']=$r->fournisseur;
248                                                $fiche['location_id']=$r->location_id;
249                                                $fiche['TOM']=$tome;
250                                                $fiche['VOL']=$volume;
251                                                $fiche['NUM']=$numero;
252                                                $fiche['cote'] = $r->cote;
253                                                $fiche['perio_id'] = $r->num_notice;
254                                                $fiche['abt_id'] = $r->num_abt;
255                                               
256                                                //Test des retards
257                                                $diff = pmb_sql_value("SELECT DATEDIFF(CURDATE(),'$r->date_parution')");
258                                                if($diff<0) {
259                                                        $retard=3;
260                                                }else{
261                                                        if ($diff <= $numero_modele[$r->modele_id][$r->num_abt]["delais"])      $retard=0;
262                                                        elseif ($diff <= $numero_modele[$r->modele_id][$r->num_abt]["critique"]) $retard=1;
263                                                        else $retard=2;
264                                                        $this->fiche_bulletin[$retard][$obj]=$fiche;
265                                                }               
266                                        }
267                                }
268                                $abtModele=$r->num_abt.$r->modele_id;
269                                if(!in_array($abtModele,$memo_abt_modele)){
270                                        // pour chaque modèle d'abonnement on va chercher le prochain
271                                        // le libellé de numéro sera calculé à la fin de toute la boucle                       
272                                        $req_prochain="SELECT * FROM abts_grille_abt
273                                                WHERE date_parution > CURDATE() and num_abt = ".$r->num_abt." AND modele_id=".$r->modele_id."
274                                                ORDER BY date_parution ";
275                                        $res_prochain = pmb_mysql_query($req_prochain,$dbh);
276                                        $deja_bulletine=0;
277                                        while ($r_prochain = pmb_mysql_fetch_object($res_prochain)) {
278                                                $prochain_id_bull=$r_prochain->id_bull;                                 
279                                                $fiche_prochain['date_parution']=$r_prochain->date_parution;
280                                                $fiche_prochain['periodique']="<a href=\"./catalog.php?categ=serials&sub=view&serial_id=" . $r->num_notice . "\">$r->tit1</a>";
281                                                $fiche_prochain['libelle_notice']=$r->tit1;
282                                                $fiche_prochain['libelle_numero']=$libelle_numero;
283                                                $fiche_prochain['libelle_abonnement']=$libelle_abonnement;
284                                                $fiche_prochain['link_recu']="onClick='bulletine(\"$prochain_id_bull\",event);'";
285                                                $fiche_prochain['link_non_recevable']="onClick='nonrecevable(\"$prochain_id_bull\",event);'";
286                                                $fiche_prochain['fournisseur_id']=$r->fournisseur;
287                                                $fiche_prochain['location_id']=$r->location_id;
288                                                $fiche_prochain['TOM']=$tome;
289                                                $fiche_prochain['VOL']=$volume;
290                                                $fiche_prochain['NUM']=$numero;
291                                                $fiche_prochain['cote'] = $r->cote;
292                                                $fiche_prochain['perio_id'] = $r->num_notice;
293                                                $fiche_prochain['abt_id'] = $r->num_abt;
294                                                $fiche_prochain['modele_id'] = $r->modele_id;
295                                                $fiche_prochain['ordre'] = $r->ordre;
296                                                $fiche_prochain['type'] = $r->type;
297                                                $fiche_prochain['abt_name'] = $r->abt_name;
298                                               
299                                                $memo_abt_modele[$abtModele]=$abtModele;
300                                                if($r_prochain->state== 0){
301                                                        $fiche_prochain['deja_bulletine'] = $deja_bulletine;
302                                                        $memo_prochain[$r_prochain->date_parution."_".$r->tit1."_".$prochain_id_bull]=array($prochain_id_bull,$fiche_prochain);
303                                                        break;
304                                                }else {
305                                                        $deja_bulletine++;
306                                                }
307                                        }                                                               
308                                }                               
309                        }
310                       
311                        // Traitement de prochains numéros
312                        ksort($memo_prochain);//Pour trier les prochain numéros par date puis titre
313                        foreach($memo_prochain as $table){
314                                $obj=$table[0];
315                                $this->fiche_bulletin[3][$obj]=$table[1];
316                                $modele_id=$this->fiche_bulletin[3][$obj]['modele_id'];
317                                $num_abt=$this->fiche_bulletin[3][$obj]['abt_id'];
318                                $date_parution=$this->fiche_bulletin[3][$obj]['date_parution'];
319                                $ordre=$this->fiche_bulletin[3][$obj]['ordre'];
320                                $type=$this->fiche_bulletin[3][$obj]['type'];
321                                $abt_name=$this->fiche_bulletin[3][$obj]['abt_name'];
322                               
323                                for($i=0; $i<$this->fiche_bulletin[3][$obj]['deja_bulletine']; $i++ ){                                                                 
324                                        increment_bulletin($modele_id, $numero_modele[$modele_id],$num_abt);
325                                }
326                                                       
327                                if (!$numero_modele[$modele_id][$num_abt]['ordre']) {
328                                        $requete = "SELECT num,vol, tome, delais,       critique FROM abts_abts_modeles WHERE modele_id=".$modele_id." and abt_id=".$num_abt;
329                                        $resultat_n = pmb_mysql_query($requete,$dbh);
330                                        if ($r_abt = pmb_mysql_fetch_object($resultat_n)) {
331                                                $numero_modele[$modele_id][$num_abt]['num'] = $r_abt->num;
332                                                $numero_modele[$modele_id][$num_abt]['vol'] = $r_abt->vol;
333                                                $numero_modele[$modele_id][$num_abt]['tom'] = $r_abt->tome;
334                                                $numero_modele[$modele_id][$num_abt]['delais'] = $r_abt->delais;
335                                                $numero_modele[$modele_id][$num_abt]['critique'] = $r_abt->critique;
336                                                $numero_modele[$modele_id][$num_abt]['start_num'] = $r_abt->num;
337                                                $numero_modele[$modele_id][$num_abt]['start_vol'] = $r_abt->vol;
338                                                $numero_modele[$modele_id][$num_abt]['start_tom'] = $r_abt->tome;
339                                        }
340                                       
341                                        $numero_modele[$modele_id][$num_abt]['num']--;
342                                        increment_bulletin($modele_id, $numero_modele[$modele_id],$num_abt);
343                                       
344                                } elseif (($numero_modele[$modele_id][$num_abt]['date_parution'] != $date_parution) || ($numero_modele[$modele_id][$num_abt]['ordre'] != $ordre)) {
345                                        increment_bulletin($modele_id, $numero_modele[$modele_id],$num_abt);
346                                }
347                               
348                                if ($type == 1) {
349                                        $numero_modele[$modele_id][abt_name] = $abt_name;
350                                        $libelle_abonnement = $numero_modele[$modele_id]['modele_name'] . " / " . $numero_modele[$modele_id]['abt_name'];
351                                               
352                                        $numero = $numero_modele[$modele_id][$num_abt]['num'];
353                                               
354                                        $volume = $numero_modele[$modele_id][$num_abt]['vol'];
355                                        $tome = $numero_modele[$modele_id][$num_abt]['tom'];
356                                        $format_aff = $numero_modele[$modele_id]['format_aff'];
357                                        if($format_aff){
358                                                $print_format->var_format['DATE'] = $date_parution;
359                                                $print_format->var_format['TOM'] = $tome;
360                                                $print_format->var_format['VOL'] = $volume;
361                                                $print_format->var_format['NUM'] = $numero;
362                                                $print_format->var_format['START_NUM'] = $numero_modele[$modele_id][$num_abt]['start_num'];
363                                                $print_format->var_format['START_VOL'] = $numero_modele[$modele_id][$num_abt]['start_vol'];
364                                                $print_format->var_format['START_TOM'] = $numero_modele[$modele_id][$num_abt]['start_tom'];
365                                                $print_format->var_format['START_DATE'] = $date_debut;
366                                                $print_format->var_format['END_DATE'] = $date_fin;
367                                                       
368                                                $print_format->cmd = $format_aff;
369                                                $libelle_numero=$print_format->exec_cmd();
370                                        }
371                                        else {
372                                                $libelle_numero="";
373                                                if($tome)$libelle_numero.= sprintf($msg['abts_tome'],$tome).' ';
374                                                if($volume)$libelle_numero.= sprintf($msg['abts_vol'],$volume).' ';
375                                                if($numero)$libelle_numero.= sprintf($msg['abts_no'],$numero);
376                                        }
377                                }
378                                else if ($type == 2) {
379                                        $numero_modele[$modele_id][abt_name] = $abt_name;
380                                        $libelle_abonnement = $numero_modele[$modele_id]['modele_name'] . " / " . $numero_modele[$modele_id]['abt_name'];
381                                               
382                                        $volume = $numero_modele[$modele_id][$num_abt]['vol'];
383                                        $tome = $numero_modele[$modele_id][$num_abt]['tom'];
384                                        $format_aff = $numero_modele[$modele_id]['format_aff'];
385                                        if($format_aff){
386                                                $print_format->var_format['DATE'] = $date_parution;
387                                                $print_format->var_format['TOM'] = $tome;
388                                                $print_format->var_format['VOL'] = $volume;
389                                                $print_format->var_format['NUM'] = "HS".$numero;
390                                                $print_format->var_format['START_NUM'] = $numero_modele[$modele_id][$num_abt]['start_num'];
391                                                $print_format->var_format['START_VOL'] = $numero_modele[$modele_id][$num_abt]['start_vol'];
392                                                $print_format->var_format['START_TOM'] = $numero_modele[$modele_id][$num_abt]['start_tom'];
393                                                $print_format->var_format['START_DATE'] = $date_debut;
394                                                $print_format->var_format['END_DATE'] = $date_fin;
395                                                       
396                                                $print_format->cmd = $format_aff;
397                                                $libelle_numero=$print_format->exec_cmd();
398                                        }
399                                        else {
400                                                $libelle_numero="";
401                                                if($tome)$libelle_numero.= sprintf($msg['abts_tome'],$tome).' ';
402                                                if($volume)$libelle_numero.= sprintf($msg['abts_vol'],$volume).' ';
403                                                if($numero)$libelle_numero.= sprintf($msg['abts_hsno'],$numero);
404                                        }
405                                }
406                                $this->fiche_bulletin[3][$obj]['libelle_numero']=$libelle_numero;
407                                $this->fiche_bulletin[3][$obj]['libelle_abonnement']=$libelle_abonnement;
408                        }                       
409                }       
410                return $this->fiche_bulletin;
411        }       
412
413        static function get_dashboard_info($location_view="") {
414                global $msg;
415                global $dbh;
416                global $deflt_bulletinage_location;     
417                               
418                $cpt_a_recevoir = $cpt_en_retard = $cpt_en_alerte = $prochain_numero = 0;
419               
420                $requete = "
421                select * from (
422                        SELECT id_bull,num_abt,abts_grille_abt.date_parution,modele_id,type,numero,nombre,ordre,state
423                        FROM abts_grille_abt ,abts_abts
424                        WHERE abts_grille_abt.date_parution <= CURDATE() and abt_id=num_abt  and state=0";
425                        if ($location_view) $requete .= " and location_id='$location_view'";
426                        $requete .= "
427                        union
428                        select id_bull,num_abt,prochain.date_parution,modele_id,type,numero,nombre,ordre,state
429                        from (
430                                SELECT id_bull,num_abt,abts_grille_abt.date_parution,modele_id,type,numero,nombre,ordre,state
431                                FROM abts_grille_abt ,abts_abts
432                                WHERE abts_grille_abt.date_parution > CURDATE()  and abt_id=num_abt  and state=0";
433                                if ($location_view) $requete .= " and location_id='$location_view'";
434                                $requete .= "
435                                ORDER BY abts_grille_abt.date_parution
436                        ) as prochain group by type,ordre,num_abt,modele_id
437                ) as liste_bull order by date_parution
438                ";
439                               
440                $resultat = pmb_mysql_query($requete,$dbh);
441                if ($resultat) {
442                        while ($r = pmb_mysql_fetch_object($resultat)) {
443                                // recheche des délais de retart
444                                if (!$numero_modele[$r->modele_id][$r->num_abt]) {
445                                        $requete = "SELECT delais,      critique FROM abts_abts_modeles WHERE modele_id=$r->modele_id and abt_id=$r->num_abt";
446                                        $resultat_n = pmb_mysql_query($requete,$dbh);
447                                        if ($r_abt = pmb_mysql_fetch_object($resultat_n)) {
448                                                $numero_modele[$r->modele_id][$r->num_abt]['delais'] = $r_abt->delais;
449                                                $numero_modele[$r->modele_id][$r->num_abt]['critique'] = $r_abt->critique;
450                                        }                                                       
451                                }
452                                if ($numero_modele[$r->modele_id][$r->num_abt]) {               
453                                        $diff = pmb_sql_value("SELECT DATEDIFF(CURDATE(),'$r->date_parution')");
454                                        if($diff<0 ) $prochain_numero++;                                       
455                                        elseif ($diff <= $numero_modele[$r->modele_id][$r->num_abt]["delais"])  $cpt_a_recevoir++;
456                                        elseif ($diff <= $numero_modele[$r->modele_id][$r->num_abt]["critique"]) $cpt_en_retard++;
457                                        else $cpt_en_alerte++;
458                                }
459                        }
460                }
461                return array(
462                        'a_recevoir'=>$cpt_a_recevoir,
463                        'en_retard'=>$cpt_en_retard,
464                        'en_alerte'=>$cpt_en_alerte,
465                        'prochain_numero'=>$prochain_numero
466                );                     
467        }       
468
469       
470       
471        function show_form() {
472                global $msg, $charset;
473                global $dbh;
474                global $pointage_form, $pointage_list;
475                global $location_view, $deflt_bulletinage_location,$serial_id,$pmb_abt_end_delay;
476                global $pmb_serialcirc_subst;
477               
478                if ($location_view == "") $location_view = $deflt_bulletinage_location;
479                $form = $pointage_form;
480
481                $form .=<<<ENDOFTEXT
482                <script type="text/javascript" src='./javascript/select.js'></script>
483                <script type="text/javascript" src='./javascript/ajax.js'></script>
484                <script type='text/javascript' src='./javascript/serialcirc.js'></script>
485                <script type="text/javascript">
486                function bulletine(obj,e) {
487                               
488                        var bull_layer=document.getElementById('bull_layer');
489                        if (undefined==bull_layer) {
490                               
491                                bull_layer=document.createElement("div");
492                                bull_layer.setAttribute('id','bull_layer');
493                                bull_layer.setAttribute('style','position:absolute;left:0;z-index:1001;');
494                                bull_layer.setAttribute('onclick','kill_frame_periodique();');
495                                bull_layer.style.width=getWindowWidth()+'px';
496                                bull_layer.style.height=getWindowHeight()+'px';
497                                bull_layer.style.top=getWindowScrollY()+'px';
498                                document.getElementsByTagName('body')[0].appendChild(bull_layer);
499               
500                        }
501                        bull_frame=document.createElement("iframe");           
502                        bull_frame.setAttribute('id','bull_frame');
503                        bull_frame.setAttribute('name','bull_frame');
504                       
505                        var obj_2=obj+"_2";
506                        var id_obj=document.getElementById(obj_2);
507                        var num=id_obj.getAttribute('num');     
508                        var nume=id_obj.getAttribute('nume');   
509                        var vol=id_obj.getAttribute('vol');     
510                        var tom=id_obj.getAttribute('tom');
511                       
512                        var url="./catalog/serials/pointage/pointage_exemplarise.php?id_bull="+obj+"&numero="+num+"&nume="+nume+"&vol="+vol+"&tom="+tom+"";
513                        bull_frame.src=url;
514                        bull_resizeFrame(obj);
515                        bull_frame.style.visibility="visible"; 
516                        bull_frame.style.display='block';       
517                        bull_layer.appendChild(bull_frame);             
518                        bull_layer.parentNode.style.overflow = "hidden";
519                }
520                               
521                //position verticale curseur
522                function getWindowScrollY(){
523                        if(window.scrollY)
524                                return window.scrollY;
525                        else return document.documentElement.scrollTop;
526                }
527                               
528                //hauteur fenetre
529                function getWindowHeight(){
530                        if(window.innerHeight)
531                                return window.innerHeight;
532                        else return document.body.clientHeight;
533                }
534               
535               
536                //largeur fenetre
537                function getWindowWidth(){
538                        if(window.innerWidth)
539                                return window.innerWidth;
540                        else return document.body.clientWidth;
541                }
542                               
543                //redimensionnement frame
544                function bull_resizeFrame() {
545                       
546                        var bull_layer = document.getElementById('bull_layer');
547                        if (bull_layer) {
548                                bull_layer.style.width=(getWindowWidth()-200)+'px';
549                                bull_layer.style.height=getWindowHeight()+'px';
550                                bull_layer.style.top=getWindowScrollY()+'px';
551                                bull_layer.style.left='200px';
552                               
553                                bull_frame.style.top='5%';
554                                bull_frame.style.width='95%';
555                                bull_frame.style.height='95%';
556                                bull_frame.style.left='5%';
557                               
558                        }
559                }
560               
561                function nonrecevable(obj,e) { 
562                               
563                        var bull_layer=document.getElementById('bull_layer');
564                        if (undefined==bull_layer) {
565                               
566                                bull_layer=document.createElement("div");
567                                bull_layer.setAttribute('id','bull_layer');
568                                bull_layer.setAttribute('style','position:absolute;left:0;z-index:1001;');
569                                bull_layer.setAttribute('onclick','kill_frame_periodique();');
570                                bull_layer.style.width=getWindowWidth()+'px';
571                                bull_layer.style.height=getWindowHeight()+'px';
572                                bull_layer.style.top=getWindowScrollY()+'px';
573                                document.getElementsByTagName('body')[0].appendChild(bull_layer);
574               
575                        }
576                        bull_frame=document.createElement("iframe");           
577                        bull_frame.setAttribute('id','bull_frame');
578                        bull_frame.setAttribute('name','bull_frame');
579                       
580                        var obj_2=obj+"_2";
581                        var id_obj=document.getElementById(obj_2);
582                        var num=id_obj.getAttribute('num');
583                       
584                        var url="./catalog/serials/pointage/pointage_exemplarise.php?nonrecevable=1&id_bull="+obj+"&numero="+num+"";
585                        bull_frame.src=url;
586                        bull_resizeFrame(obj);
587                        bull_frame.style.visibility="visible"; 
588                        bull_frame.style.display='block';       
589                        bull_layer.appendChild(bull_frame);             
590                        bull_layer.parentNode.style.overflow = "hidden";
591                }
592               
593                function kill_frame_periodique() {
594                        var bull_layer = document.getElementById('bull_layer');
595                        bull_layer.parentNode.style.overflow = "auto";
596                        bull_layer.parentNode.removeChild(bull_layer);
597                }
598
599
600                function imprime() {
601                        var selectBox=document.getElementById("location_id");
602                        value=selectBox.options[selectBox.selectedIndex].value;
603                        document.location="./pdf.php?pdfdoc=liste_bulletinage&act=print&location_view="+value;
604                }               
605               
606                function imprime_abts_depasse() {
607                        var selectBox=document.getElementById("location_id");
608                        value=selectBox.options[selectBox.selectedIndex].value;
609                        document.location="./pdf.php?pdfdoc=abts_depasse&act=print&location_view="+value;
610                }               
611                function imprime_cote(expl_id) {
612                        openPopUp("./ajax.php?module=circ&categ=periocirc&sub=print_cote&expl_id="+expl_id, "circulation", 600, 500, -2, -2, "toolbar=no, dependent=yes, resizable=yes");
613                }               
614                function imprime_all_cote() {
615                        openPopUp("./ajax.php?module=circ&categ=periocirc&sub=print_cote", "circulation", 600, 500, -2, -2, "toolbar=no, dependent=yes, resizable=yes");
616                }       
617ENDOFTEXT;
618                $link_bulletinage="";
619                if ($serial_id) {
620                        $link_bulletinage = "&serial_id=$serial_id";
621                }
622                               
623                $form.= "
624                        function localisation_change(selectBox) {                       
625                        id=selectBox.options[selectBox.selectedIndex].value;
626                        document.location='./catalog.php?categ=serials&sub=pointage".$link_bulletinage."&location_view='+id;
627                }
628                </script>       
629                ";
630
631
632                // select "localisation"
633                $form_localisation = gen_liste("select distinct idlocation, location_libelle from docs_location, docsloc_section where num_location=idlocation order by 2 ", "idlocation", "location_libelle", 'location_id', "localisation_change(this);", $location_view, "", "", "0", $msg["all_location"], 0);
634                $link_bulletinage="";
635                if ($serial_id) {
636                        $requete = "SELECT tit1 from notices WHERE notice_id= $serial_id";
637                        $resultat = pmb_mysql_query($requete,$dbh);
638                        if ($r = pmb_mysql_fetch_object($resultat)) {
639                               
640                                $link_bulletinage = "<a href='./catalog.php?categ=serials&sub=view&serial_id=$serial_id&location=$location_view'>"
641                                        .$r->tit1."</a>";
642                        }       
643                        $form_localisation.=$link_bulletinage;
644                }
645               
646                $form = str_replace('!!localisation!!',$form_localisation , $form);
647                $header_table = "<table class='sortable'>                       
648                                                <th>" . $msg['pointage_label_date'] . "</th>
649                                                <th>" . $msg['pointage_label_notice'] . "</th>
650                                                <th>" . $msg['pointage_label_numero'] . "</th>
651                                                <th>" . $msg['pointage_label_abonnement'] . "</th>
652                                                <th>" . $msg['pointage_label_a_recevoir'] . "</th>
653                                                <th>" . $msg['pointage_label_recu'] . "</th>
654                                                <th>" . $msg['pointage_label_supprimer_et_conserver'] . "</th>
655                                                <th>" . $msg['pointage_label_voir_bulletin'] . "</th>   ";                                                                                                     
656                $liste_bulletin=$this->get_bulletinage();
657                $a_recevoir = $en_retard = $en_alerte = "";
658                $cpt_a_recevoir = $cpt_en_retard = $cpt_en_alerte = 0;                                 
659               
660                if($liste_bulletin){
661                        //Tri par type de retard
662                        asort($liste_bulletin);
663                        foreach($liste_bulletin as $retard => $bulletin_retard){
664                                $cpt=0;
665                                $contenu='';
666                                foreach($bulletin_retard as $id_bull => $fiche){
667                                        if (++$cpt % 2) $pair_impair = "even"; else $pair_impair = "odd";
668                                        $tr_javascript=" onmouseover=\"this.className='surbrillance'\" onmouseout=\"this.className='$pair_impair'\" ";
669                                        $contenu_tmp = "<tr class='$pair_impair' $tr_javascript style='cursor: pointer'>";
670                                        $contenu_tmp .= "<td><strong>" . formatdate($fiche['date_parution']) . "</strong></td>";
671                                        $contenu_tmp .= "<td>".$fiche['periodique']."</td>";
672                                        $contenu_tmp .= "<td>".$fiche['libelle_numero']."</td>";
673                                        $contenu_tmp .= "<td>".$fiche['libelle_abonnement']."</td>";
674                                        $contenu_tmp .= "<td><input name='".$id_bull."' id='".$id_bull."_1' checked='checked'  value='1' type='radio'></td>";
675                                        $contenu_tmp .= "<td><input name='".$id_bull."' id='".$id_bull."_2' value='2' nume='". $fiche['NUM']."' vol='". $fiche['VOL']."'        tom='". $fiche['TOM']."' num='". htmlentities($fiche['libelle_numero'],ENT_QUOTES, $charset)."'  type='radio' ".$fiche['link_recu']." ></td>";
676                                        $contenu_tmp .= "<td><input name='".$id_bull."' id='".$id_bull."_3' value='3' type='radio' ".$fiche['link_non_recevable']." ></td>";
677                                        $contenu_tmp .= "<td id='". $id_bull."_bul'>&nbsp</td>";
678                                        $contenu_tmp .= "</tr>";       
679                                        $contenu=$contenu_tmp.$contenu;
680                                                               
681                                }
682                                $contenu = $header_table . $contenu . "</table>";
683                                if($cpt && $retard==3){
684                                        $prochain_numero = $this->gen_plus_form("prochain_numero", $msg["pointage_label_prochain_numero"] . " ($cpt)", $contenu);
685                                        $cpt_prochain_numero= $cpt;                             
686                                }                               
687                                if($cpt && $retard==0){
688                                        $a_recevoir = $this->gen_plus_form("a_recevoir", $msg["pointage_label_a_recevoir"] . " ($cpt)", $contenu);
689                                        $cpt_a_recevoir= $cpt;                         
690                                }       
691                                if($cpt && $retard==1){
692                                        $en_retard = $this->gen_plus_form("en_retard", $msg["pointage_label_en_retard"] . " ($cpt)", $contenu);
693                                        $cpt_en_retard= $cpt;           
694                                }                       
695                                if($cpt && $retard==2){
696                                        $en_alerte = $this->gen_plus_form("en_alerte", $msg["pointage_label_depasse"] . " ($cpt)", $contenu);   
697                                        $cpt_en_alerte= $cpt;   
698                                }                               
699                        }       
700                }       
701                $pointage_list = str_replace('!!prochain_numero!!', $prochain_numero, $pointage_list);
702                $pointage_list = str_replace('!!a_recevoir!!', $a_recevoir, $pointage_list);
703                $pointage_list = str_replace('!!en_retard!!', $en_retard, $pointage_list);
704                $pointage_list = str_replace('!!en_alerte!!', $en_alerte, $pointage_list);
705                // Gestion des abonnements qui arrive a terme
706                if(!$pmb_abt_end_delay || !is_numeric($pmb_abt_end_delay)) $pmb_abt_end_delay=30;
707                $header_table = "<table class='sortable'>                       
708                                        <th>" . $msg['pointage_label_date_fin'] . "</th>               
709                                        <th>" . $msg['pointage_label_abonnement'] . "</th>";                   
710                $requete = "SELECT abt_id,abt_name,tit1,num_notice, date_fin
711                                        FROM abts_abts,notices
712                                        WHERE date_fin BETWEEN CURDATE() AND  DATE_ADD(CURDATE(), INTERVAL $pmb_abt_end_delay DAY)
713                                        and notice_id= num_notice";
714                if ($location_view) $requete .= " and location_id='$location_view'";
715                $requete .= " ORDER BY date_fin,abt_name";
716                $resultat = pmb_mysql_query($requete,$dbh);     
717                $cpt=0;
718                $contenu='';
719                while ($r = pmb_mysql_fetch_object($resultat)) {
720                        if (++$cpt % 2) $pair_impair = "even"; else $pair_impair = "odd";
721                        $tr_javascript=" onmouseover=\"this.className='surbrillance'\" onmouseout=\"this.className='$pair_impair'\" ";
722                        $contenu .= "<tr class='$pair_impair' $tr_javascript style='cursor: pointer'>";
723                        $contenu .= "<td><strong>" . formatdate($r->date_fin) . "</strong></td>";
724                        $contenu .= "<td><a href=\"./catalog.php?categ=serials&sub=abon&serial_id=" . $r->num_notice . "&abt_id=" . $r->abt_id . "\">".$r->tit1." / ".$r->abt_name."</a></td>";         
725                        $contenu .= "</tr>";                           
726                }
727                $contenu = $header_table . $contenu . "</table>";
728                $fin_abonnement='';
729                if($cpt){
730                        $fin_abonnement = $this->gen_plus_form("fin_abonnement", $msg["pointage_alerte_fin_abonnement"] . " ($cpt)", $contenu);                 
731                }       
732                // Gestion des abonnements dont la date est dépassée
733                $requete = "SELECT abt_id,abt_name,tit1,num_notice, date_fin
734                                        FROM abts_abts,notices
735                                        WHERE date_fin < CURDATE()
736                                        and notice_id= num_notice";
737                if ($location_view) $requete .= " and location_id='$location_view'";
738                $requete .= " ORDER BY date_fin,abt_name";     
739                $resultat = pmb_mysql_query($requete,$dbh);     
740                $cpt=0;
741                $contenu='';
742                while ($r = pmb_mysql_fetch_object($resultat)) {
743                        if (++$cpt % 2) $pair_impair = "even"; else $pair_impair = "odd";
744                        $tr_javascript=" onmouseover=\"this.className='surbrillance'\" onmouseout=\"this.className='$pair_impair'\" ";
745                        $contenu .= "<tr class='$pair_impair' $tr_javascript style='cursor: pointer'>";
746                        $contenu .= "<td><strong>" . formatdate($r->date_fin) . "</strong></td>";
747                        $contenu .= "<td><a href=\"./catalog.php?categ=serials&sub=abon&serial_id=" . $r->num_notice . "&abt_id=" . $r->abt_id . "\">".$r->tit1." / ".$r->abt_name."</a></td>";
748                        $contenu .= "</tr>";   
749                        $flag_imprime_abts_depasse=1;                   
750                }
751                $contenu = $header_table . $contenu . "</table>";
752                $abonnement_depasse='';
753                if($cpt){
754                        $abonnement_depasse = $this->gen_plus_form("depasse_abonnement", $msg["pointage_alerte_abonnement_depasse"] . " ($cpt)", $contenu);                     
755                }                               
756                               
757                $pointage_list = str_replace('!!alerte_fin_abonnement!!', $fin_abonnement, $pointage_list);
758                $pointage_list = str_replace('!!alerte_abonnement_depasse!!', $abonnement_depasse, $pointage_list);
759               
760                $form = str_replace('!!bultinage!!', $pointage_list, $form);
761                if ($cpt_en_retard || $cpt_en_alerte)
762                        $form = str_replace("!!imprimer!!", "<input type=\"button\" class='bouton' value='" .
763                        $msg["abonnements_imprimer_lettres"] . "' onClick=\"imprime();\"/>", $form);                   
764                else $form = str_replace("!!imprimer!!", "", $form);
765                if ($flag_imprime_abts_depasse)
766                        $form = str_replace("!!imprime_abts_depasse!!", "<input type=\"button\" class='bouton' value='" .
767                        $msg["abts_print_depasse_bt"] . "' onClick=\"imprime_abts_depasse();\"/>", $form);                     
768                else $form = str_replace("!!imprime_abts_depasse!!", "", $form);
769               
770                $bt_gestion_retard="";
771                if ($cpt_en_alerte){
772                        $bt_gestion_retard="<input type=\"button\" class='bouton' value='" .$msg["abts_gestion_retard_bt"] . "' onClick=\"document.location='./catalog.php?categ=serials&sub=abts_retard&location_view=".$location_view."'\"/>";               
773                }
774                $bt_impression_etiquette_cote="";
775                if ($pmb_serialcirc_subst){
776                        $bt_impression_etiquette_cote="<input type=\"button\" class='bouton' value='" .$msg["abts_print_cote_bt"] . "' onClick=\"imprime_all_cote();return false;\"/>";         
777                }               
778               
779                $form = str_replace("!!gestion_retard!!", $bt_gestion_retard.$bt_impression_etiquette_cote, $form);
780               
781                $form = str_replace("!!action!!", "./catalog.php?categ=serials&sub=pointage&serial_id=" . "$serial_id&location_view=$location_view", $form);
782                return $form;
783        }
784
785
786        function imprimer() {
787                global $dbh;
788                global $msg;
789                global $include_path;
790        }
791
792        function proceed() {
793                global $act;
794                global $serial_id, $msg, $num_notice;
795               
796                switch ($act) {
797                        case 'print' :
798                                $liste_bulletin=$this->get_bulletinage();
799                                return $liste_bulletin;
800                                break;
801                        default :
802                                print $this->show_form();
803                                break;
804                }
805        }
806       
807       
808       
809        function get_form_retard(){
810                global $abts_gestion_retard_form_filter,$charset,$dbh,$msg;
811                global $location_view,$filter,$deflt_bulletinage_location;
812                global $abts_gestion_retard_fournisseur_first,$abts_gestion_retard_fournisseur_suite;
813                global $max_fourn,$abts_gestion_retard_form,$abts_gestion_retard_perio,$abts_gestion_retard_bulletin;
814               
815                $form=$abts_gestion_retard_form_filter;
816                if($location_view == "") $location_view=$deflt_bulletinage_location;
817                $select_location = gen_liste("select distinct idlocation, location_libelle from docs_location, docsloc_section where num_location=idlocation order by 2 ", "idlocation", "location_libelle", 'location_view', "", $location_view, "", "", "0", $msg[all_location], 0);
818                $form = str_replace("!!location_filter!!", $select_location, $form);
819                $form = str_replace("!!abts_state_selected_".$filter."!!", "selected='selected' ", $form);
820                $clause_filter="";
821                if($filter==1){ // abts actifs
822                        $clause_filter=" and date_debut <= CURDATE() and date_fin >= CURDATE() ";
823                }elseif($filter==2){ // abts dépassés
824                        $clause_filter=" and date_fin < CURDATE() ";
825                }
826                $fournisseurs=array();
827                $nb=0;
828                for($i=0;$i<$max_fourn; $i++){         
829                        eval ("global \$f_fourn_id$i; \$id=  \$f_fourn_id$i;");                                                                         
830                        $q = "select * from entites where id_entite = '".$id."' ";
831                        $res = pmb_mysql_query($q, $dbh);
832                        if (pmb_mysql_num_rows($res) != 0) {
833                                $coord = pmb_mysql_fetch_object($res);
834                                $fournisseurs[$nb]["libelle"]=$coord->raison_sociale;
835                                $fournisseurs[$nb]["id"]=$id;                           
836                                $nb++;
837                        }                       
838                }
839               
840                $clause_fournisseur="";         
841                if(count($fournisseurs)){               
842                        foreach($fournisseurs as $fournisseur){
843                                if($clause_fournisseur){
844                                        $clause_fournisseur.=" or ";
845                                }
846                                $clause_fournisseur.="  fournisseur= '".$fournisseur["id"]."' ";
847                        }       
848                        $clause_fournisseur=" and( $clause_fournisseur ) ";
849                }
850               
851                if (sizeof($fournisseurs)==0) $max_fourn = 1 ;
852                else $max_fourn = sizeof($fournisseurs) ;
853                for ($i = 0 ; $i < $max_fourn ; $i++) {
854                        $fourn_id = $fournisseurs[$i]["id"] ;
855                       
856                        if ($i==0) $tmp_fourn = str_replace('!!ifourn!!', $i, $abts_gestion_retard_fournisseur_first) ;
857                        else $tmp_fourn = str_replace('!!ifourn!!', $i, $abts_gestion_retard_fournisseur_suite) ;
858                               
859                        $tmp_fourn = str_replace('!!fourn_id!!',                        $fourn_id, $tmp_fourn);
860                        if ( sizeof($fournisseurs)==0 ) {
861                                $tmp_fourn = str_replace('!!fourn_libelle!!', '', $tmp_fourn);         
862                        } else {
863                                $tmp_fourn = str_replace('!!fourn_libelle!!',   htmlentities($fournisseurs[$i]["libelle"],ENT_QUOTES, $charset), $tmp_fourn);
864                        }
865                        $fourn_repetables .= $tmp_fourn ;
866                }
867                $form = str_replace('!!max_fourn!!', $max_fourn, $form);
868                $form = str_replace('!!fournisseurs_repetables!!', $fourn_repetables, $form);
869                       
870                $this->get_bulletinage($clause_filter.$clause_fournisseur," index_sew,abt_name,date_parution,ordre ");
871                $perio_id_old=0;
872                $form_perio="";
873                if($this->fiche_bulletin){
874                        $i=0;
875                }
876                $js_tab_perio_bulletin=$form_bulletin_liste="";
877                $tab_bulletins_to_post=array();
878                $js_perio_bulletin=$js_perio_bulletin_start=0;
879                $i_perio=0;
880                if($this->fiche_bulletin[2]) {
881                        foreach($this->fiche_bulletin[2] as $fiche){
882                                $i++;
883                                if($perio_id_old != $fiche['perio_id']){
884                                        $form_perio = str_replace("!!liste_retard!!", $form_bulletin_liste, $form_perio);
885                                        $form_perio_liste.=$form_perio;
886                                        $form_perio=$abts_gestion_retard_perio;
887                                        $form_perio = str_replace("!!perio_header!!", $fiche['libelle_notice'], $form_perio);
888                                        $form_perio=str_replace("!!num_perio!!", $fiche['perio_id'], $form_perio);
889                                        $form_perio=str_replace("!!i_perio!!", $i_perio++, $form_perio);
890                                        if ($perio_id_old) {
891                                                $js_tab_perio_bulletin.="tab_perio_bulletins[".$perio_id_old."]=new Array($js_perio_bulletin_start,$js_perio_bulletin);\n";
892                                        }
893                                        $js_perio_bulletin_start=$i;
894                                        $js_perio_bulletin=0;
895                                        $form_bulletin_liste="";
896                                        $perio_id_old = $fiche['perio_id'];
897                                        $class_tr="";
898                                }
899                                if($class_tr=='odd')$class_tr='even';else $class_tr='odd';
900                                $data_relance=$this->get_comment_form($fiche['abt_id'],$fiche['date_parution'],$fiche['libelle_numero'],$class_tr);
901                                $form_bulletin=$abts_gestion_retard_bulletin.$data_relance["suite"];
902                               
903                                $form_bulletin=str_replace("!!tr_class!!", $class_tr, $form_bulletin);
904                                $form_bulletin=str_replace("!!date!!",formatdate( $fiche['date_parution']), $form_bulletin);
905                                $form_bulletin=str_replace("!!numero!!", $fiche['libelle_numero'], $form_bulletin);
906                                $form_bulletin=str_replace("!!abonnement!!", $fiche['libelle_abonnement'], $form_bulletin);
907                                $form_bulletin=str_replace("!!num_perio!!", $fiche['perio_id'], $form_bulletin);
908                               
909                                $tab_bulletins_to_post['abt_id']=$fiche['abt_id'];
910                                $tab_bulletins_to_post['date_parution']=$fiche['date_parution'];
911                                $tab_bulletins_to_post['libelle_numero']=$fiche['libelle_numero'];
912                                $form_bulletin=str_replace("!!bulletin_serialise!!", htmlentities(serialize($tab_bulletins_to_post), ENT_QUOTES,$charset), $form_bulletin);
913                               
914                                $form_bulletin=str_replace("!!bulletin_number!!", $i, $form_bulletin);                 
915                                $form_bulletin=str_replace("!!comment_gestion!!", $data_relance["first_line"]['comment_gestion'], $form_bulletin);
916                                $form_bulletin=str_replace("!!comment_opac!!", $data_relance["first_line"]['comment_opac'], $form_bulletin);
917                                if($data_relance["first_line"]['nb_relance']) {
918                                        $form_bulletin=str_replace("!!nb_relance!!", "<a href='#'  onClick=\"gestion_retard_view_histo(!!rel_id!!,".$data_relance["first_line"]['nb_relance'].");return false;\">".$data_relance["first_line"]['nb_relance']."</a>", $form_bulletin);
919                                } else {
920                                        $form_bulletin=str_replace("!!nb_relance!!", $data_relance["first_line"]['nb_relance'], $form_bulletin);
921                                }
922                                $form_bulletin=str_replace("!!date_relance!!", $data_relance["first_line"]['date_relance'], $form_bulletin);
923                                $form_bulletin=str_replace("!!rel_id!!", $data_relance["first_line"]['rel_id'], $form_bulletin);       
924       
925                               
926                                $form_bulletin=str_replace("!!relnew_num!!", $data_relance["first_line"]['rel_id'], $form_bulletin);
927                                               
928                                $form_bulletin.$data_relance["suite"];
929                                $js_perio_bulletin++;
930                               
931                                $form_bulletin_liste.=$form_bulletin;
932                        }
933                }
934                $js_tab_perio_bulletin.="tab_perio_bulletins[".$fiche['perio_id']."]=new Array($js_perio_bulletin_start,$js_perio_bulletin);\n";
935                $form_perio = str_replace("!!liste_retard!!", $form_bulletin_liste, $form_perio);
936                $form_perio=str_replace("!!num_perio!!", $fiche['perio_id'], $form_perio);
937                $form_perio=str_replace("!!i_perio!!", $i_perio, $form_perio);
938                $form_perio_liste.=$form_perio;
939                $form.=$abts_gestion_retard_form;
940                $form = str_replace("!!perio_list!!", $form_perio_liste, $form);
941                $form = str_replace("!!nb_perios!!", $i_perio, $form);
942                $form = str_replace("!!nb_bulletins!!", $i, $form);
943                $form = str_replace("!!tab_perio!!", $js_tab_perio_bulletin, $form);
944                return $form;
945        }
946
947       
948        function get_comment_form($abt_id,$date_parution,$libelle_numero,$class_tr){
949                global $dbh,$abts_gestion_retard_bulletin_relance,$charset;
950               
951                $rel_max=0;
952                $i=0;
953                $form_list="";
954                $req="SELECT * from perio_relance where rel_abt_num='".$abt_id."' and rel_date_parution='".$date_parution."' and  rel_libelle_numero='".addslashes($libelle_numero)."' order by rel_nb desc";           
955                $result = pmb_mysql_query($req,$dbh);
956                if(pmb_mysql_num_rows($result)){
957                        while($r = pmb_mysql_fetch_object($result)) {                           
958                                if($i==0){
959                                        $rel_max=$r->rel_nb;
960                                        $rel_date_max=$r->rel_date;
961                                }
962                                if(!$r->rel_nb){
963                                        // Commentaire non relancé présent
964                                        $first_line["comment_gestion"]=htmlentities( $r->rel_comment_gestion, ENT_QUOTES,$charset);
965                                        $first_line["comment_opac"]=htmlentities( $r->rel_comment_opac, ENT_QUOTES,$charset);                           
966                                        if($rel_max){
967                                                $first_line["nb_relance"]=$rel_max;
968                                                $first_line["date_relance"]=formatdate($rel_date_max);
969                                        }
970                                        else{
971                                                $first_line["nb_relance"]="";
972                                                $first_line["date_relance"]="";
973                                        }                                       
974                                        $first_line["rel_id"]=$r->rel_id;
975                                }else{                                 
976                                        // c'est une relance effectuée
977                                        $form=$abts_gestion_retard_bulletin_relance;                                   
978                                        $form=str_replace("!!comment_gestion!!",htmlentities( $r->rel_comment_gestion, ENT_QUOTES,$charset), $form);
979                                        $form=str_replace("!!comment_opac!!",htmlentities( $r->rel_comment_opac, ENT_QUOTES,$charset), $form);
980                                        $form=str_replace("!!nb_relance!!", $r->rel_nb, $form);
981                                        $form=str_replace("!!date_relance!!",formatdate($r->rel_date), $form);
982                                        $form=str_replace("!!rel_id!!",$r->rel_id, $form);
983                                        $form_list.=$form;
984                                }
985                                $i++;
986                        }                               
987                } else {
988                        // aucune relance et aucun commentaire                 
989                }       
990                if(!$first_line) {
991                        $req="insert into perio_relance set rel_abt_num='".$abt_id."', rel_date_parution='".$date_parution."',  rel_libelle_numero='".addslashes($libelle_numero)."'  ";               
992                        pmb_mysql_query($req,$dbh);     
993                        $first_line["rel_id"]=pmb_mysql_insert_id($dbh);
994                        if($rel_max){
995                                $first_line["nb_relance"]=$rel_max;
996                                $first_line["date_relance"]=formatdate($rel_date_max);
997                        }
998                        else{
999                                $first_line["nb_relance"]="";
1000                                $first_line["date_relance"]="";
1001                        }                                       
1002                }                               
1003                //$first_line["nb_relance"]=$rel_max+1;
1004                $return_data["first_line"]=$first_line;         
1005                $return_data["suite"]=$form_list;
1006                return $return_data;                           
1007        }
1008       
1009        function set_comment_retard($type=0){
1010                global $dbh;
1011                global $bulletin, $comment;
1012                if(!$comment || !$bulletin) return;
1013                foreach($bulletin as $data){
1014                        $bulletin_info=unserialize(stripslashes($data));
1015                        if($type==1)    $type_comment ="rel_comment_gestion";
1016                        else                    $type_comment ="rel_comment_opac";
1017                        $req="SELECT rel_id from perio_relance where rel_abt_num='".$bulletin_info['abt_id']."' and rel_date_parution='".$bulletin_info['date_parution']."' and  rel_libelle_numero='".addslashes($bulletin_info['libelle_numero'])."' and rel_nb=0";
1018                        $result = pmb_mysql_query($req,$dbh);   
1019                        if(pmb_mysql_num_rows($result)){
1020                                $r = pmb_mysql_fetch_object($result);
1021                                $req= "update perio_relance set $type_comment='$comment' where rel_id=".$r->rel_id."  ";
1022                        } else {
1023                                $req="insert into perio_relance set rel_abt_num='".$bulletin_info['abt_id']."', rel_date_parution='".$bulletin_info['date_parution']."',  rel_libelle_numero='".addslashes($bulletin_info['libelle_numero'])."', $type_comment='$comment'  ";           
1024                        }
1025                        pmb_mysql_query($req,$dbh);     
1026                }               
1027        }
1028       
1029       
1030        function relance_retard(){
1031                global $dbh;
1032                global $sel_relance;   
1033                       
1034                if(!$sel_relance) return;               
1035                $rel_id_list=explode(",",$sel_relance);
1036                $this->liste_rel=array();
1037                foreach($rel_id_list as $rel_id){
1038                       
1039                        if(!$rel_id) continue;
1040                        $nb=0;
1041                        $req="SELECT * from perio_relance where rel_id=$rel_id ";
1042                        $result = pmb_mysql_query($req,$dbh);   
1043                        if(pmb_mysql_num_rows($result)){
1044                                $r = pmb_mysql_fetch_object($result);
1045                                $nb=$r->nb;
1046                                $bulletin_info['abt_id']=$r->rel_abt_num;
1047                                $bulletin_info['date_parution']=$r->rel_date_parution;
1048                                $bulletin_info['libelle_numero']=$r->rel_libelle_numero;
1049                        } else continue;
1050                        if($nb) continue;
1051                        // recherche de la plus grande relance
1052                        $req="SELECT max(rel_nb)as nb from perio_relance where rel_abt_num='".$bulletin_info['abt_id']."' and rel_date_parution='".$bulletin_info['date_parution']."' and  rel_libelle_numero='".addslashes($bulletin_info['libelle_numero'])."' ";
1053                        $result = pmb_mysql_query($req,$dbh);   
1054                        if(pmb_mysql_num_rows($result)){
1055                                $r = pmb_mysql_fetch_object($result);
1056                                $nb=$r->nb;
1057                        }                       
1058                        $nb++; 
1059                       
1060                        $req="SELECT * from perio_relance,abts_abts where abt_id=".$bulletin_info['abt_id']." and rel_id=$rel_id";
1061                        $result = pmb_mysql_query($req,$dbh);
1062                        if(pmb_mysql_num_rows($result)){
1063                                $r = pmb_mysql_fetch_object($result);
1064                                //if($r->rel_comment_gestion)   {       
1065                                        $this->liste_rel[$r->fournisseur][$r->num_notice][$r->rel_abt_num][$r->rel_id]["rel_date_parution"]=$r->rel_date_parution;
1066                                        $this->liste_rel[$r->fournisseur][$r->num_notice][$r->rel_abt_num][$r->rel_id]["rel_libelle_numero"]=$r->rel_libelle_numero;
1067                                        $this->liste_rel[$r->fournisseur][$r->num_notice][$r->rel_abt_num][$r->rel_id]["rel_comment_gestion"]=$r->rel_comment_gestion;
1068                                        $this->liste_rel[$r->fournisseur][$r->num_notice][$r->rel_abt_num][$r->rel_id]["rel_nb"]=$r->rel_nb;
1069                                        $req= "update perio_relance set rel_nb=$nb, rel_date=now() where rel_id=".$r->rel_id."  ";                             
1070                                        pmb_mysql_query($req,$dbh);             
1071                                //}             
1072                        }
1073                }
1074                if($this->print_mode==1){
1075                        $this->generate_PDF();
1076                }else{
1077                        $this->generate_RTF();
1078                }
1079                return;                 
1080        }
1081       
1082        static function delete_retard($abt_id,$date_parution='',$libelle_numero=''){
1083                global $dbh;           
1084                $req="DELETE from perio_relance where rel_abt_num='".$abt_id."' ";
1085                if($date_parution)      $req.=" and rel_date_parution='".$date_parution."'  ";
1086                if($libelle_numero)     $req.=" and rel_libelle_numero='".addslashes($libelle_numero)."' ";
1087                @pmb_mysql_query($req,$dbh);
1088        }
1089       
1090        function generate_PDF(){
1091                global $base_path,$charset, $msg, $biblio_logo;
1092                global $biblio_name, $biblio_logo, $biblio_adr1, $biblio_adr2, $biblio_cp, $biblio_town, $biblio_state, $biblio_country, $biblio_phone, $biblio_email, $biblio_website ;
1093                global $madame_monsieur;
1094                global $pmb_pdf_font,$fpdf;
1095               
1096                //Document
1097                $largeur_page = '210';
1098                $hauteur_page = '297';
1099                $orient_page = 'P';
1100                $marge_haut = '10';
1101                $marge_bas = '20';
1102                $marge_gauche = '10';
1103                $marge_droite = '10';
1104               
1105                $retraitFournisseur=100;
1106               
1107                $taille_doc=array($largeur_page,$hauteur_page);
1108                $ourPDF = new $fpdf($orient_page, 'mm', $taille_doc);
1109                $ourPDF->Open();
1110                $ourPDF->SetMargins($marge_gauche, $marge_haut, $marge_droite);
1111                $ourPDF->setFont($pmb_pdf_font);
1112               
1113                foreach($this->liste_rel as $id_fournisseur =>$info_fournisseur ){
1114                        //Nouvelle page
1115                        $ourPDF->addPage();
1116                       
1117                        //Affichage Bibli / date édition
1118                        $ourPDF->setFontSize(12);
1119                        $ourPDF->Cell(150,4,$this->to_utf8($biblio_name),0);
1120                        $ourPDF->Cell(0,4,$this->to_utf8($msg['fpdf_edite']." ".formatdate(date("Y-m-d",time()))),0);
1121                        $ourPDF->Ln();
1122                        $ourPDF->setFontSize(10);
1123                        if($biblio_adr1){
1124                                $ourPDF->Cell(0,4,$this->to_utf8($biblio_adr1),0);
1125                                $ourPDF->Ln();
1126                        }                       
1127                        if($biblio_adr2){
1128                                $ourPDF->Cell(0,4,$this->to_utf8($biblio_adr2),0);
1129                                $ourPDF->Ln();
1130                        }
1131                        if($biblio_cp || $biblio_town){
1132                                $ourPDF->Cell(0,4,$this->to_utf8(trim($biblio_cp." ".$biblio_town)),0);
1133                                $ourPDF->Ln();
1134                        }
1135                        if($biblio_phone){
1136                                $ourPDF->Cell(0,4,$this->to_utf8($biblio_phone),0);
1137                                $ourPDF->Ln();
1138                        }
1139                        if($biblio_email){
1140                                $ourPDF->Cell(0,4,$this->to_utf8($biblio_email),0);
1141                                $ourPDF->Ln();
1142                        }
1143                        //Fournisseur
1144                        if($id_fournisseur){
1145                                $fou = new entites($id_fournisseur);
1146                                $coord_fou = entites::get_coordonnees($id_fournisseur,1);
1147                                $coord_fou = pmb_mysql_fetch_object($coord_fou);
1148                                if($fou->raison_sociale != '') {
1149                                        $libelleFou = $fou->raison_sociale;
1150                                } else {
1151                                        $libelleFou = $coord_fou->libelle;
1152                                }
1153                               
1154                                //Affichage fournisseur
1155                                $ourPDF->Ln();
1156                                $ourPDF->Ln();
1157                                $ourPDF->setFontSize(12);
1158                                $ourPDF->Cell($retraitFournisseur,4,"",0);
1159                                $ourPDF->Cell(0,4,$this->to_utf8($libelleFou),0);
1160                                $ourPDF->Ln();
1161                                $ourPDF->setFontSize(10);
1162                                if($coord_fou->adr1){
1163                                        $ourPDF->Cell($retraitFournisseur,4,"",0);
1164                                        $ourPDF->Cell(0,4,$this->to_utf8($coord_fou->adr1),0);
1165                                        $ourPDF->Ln();
1166                                }
1167                                if($coord_fou->adr2){
1168                                        $ourPDF->Cell($retraitFournisseur,4,"",0);
1169                                        $ourPDF->Cell(0,4,$this->to_utf8($coord_fou->adr2),0);
1170                                        $ourPDF->Ln();
1171                                }
1172                                if($coord_fou->cp){
1173                                        $ourPDF->Cell($retraitFournisseur,4,"",0);
1174                                        $ourPDF->Cell(0,4,$this->to_utf8($coord_fou->cp),0);
1175                                        $ourPDF->Ln();
1176                                }
1177                                if($coord_fou->ville){
1178                                        $ourPDF->Cell($retraitFournisseur,4,"",0);
1179                                        $ourPDF->Cell(0,4,$this->to_utf8($coord_fou->ville),0);
1180                                        $ourPDF->Ln();
1181                                }
1182                                if($coord_fou->contact!=''){
1183                                        $ourPDF->Cell($retraitFournisseur,4,"",0);
1184                                        $ourPDF->Cell(0,4,$this->to_utf8($msg['acquisition_act_formule']." ".$coord_fou->contact),0);
1185                                        $ourPDF->Ln();
1186                                }
1187                        }
1188                       
1189                        $ourPDF->Ln();
1190                        $ourPDF->Ln();
1191                        $ourPDF->Ln();
1192                        $ourPDF->Ln();
1193                        $ourPDF->Ln();
1194                        $ourPDF->setFontSize(10);
1195                        $ourPDF->Cell(0,4,$this->to_utf8($msg["abts_gestion_retard_lettre_monsieur"]),0);
1196                        $ourPDF->Ln();
1197                        $ourPDF->Ln();
1198                        $ourPDF->Ln();
1199                       
1200                        foreach($info_fournisseur as $num_notice =>$info_notice ){
1201                                $perio= new serial_display($num_notice);
1202                                $ourPDF->Cell(0,4,$this->to_utf8($perio->notice->tit1),0);
1203                                $ourPDF->Ln();
1204                                $ourPDF->Cell(0,4,$this->to_utf8("________________________________________"),0);
1205                                $ourPDF->Ln();
1206                                $ourPDF->Ln();
1207                                foreach($info_notice as $abt_num => $info_abt){
1208                                        foreach($info_abt as $rel_id => $rel_info){
1209                                                $ourPDF->SetFont('','U');
1210                                                $ourPDF->Cell(20,4,$this->to_utf8($rel_info["rel_libelle_numero"]." :"),0,0);
1211                                                $ourPDF->SetFont('','');
1212                                                $ourPDF->Cell(0,4,$this->to_utf8(formatdate($rel_info["rel_date_parution"])),0);
1213                                                $ourPDF->Ln();
1214                                                $ourPDF->Cell(0,4,$this->to_utf8($rel_info["rel_comment_gestion"]),0);
1215                                                $ourPDF->Ln();
1216                                        }
1217                                }
1218                        }
1219                }
1220                $ourPDF->OutPut();
1221        }
1222       
1223        function generate_RTF(){
1224               
1225                global  $base_path,$charset, $msg, $biblio_logo;
1226                global $biblio_name, $biblio_logo, $biblio_adr1, $biblio_adr2, $biblio_cp, $biblio_town, $biblio_state, $biblio_country, $biblio_phone, $biblio_email, $biblio_website ;
1227                global $madame_monsieur;
1228                //Format des fonts             
1229                $fontHead = new Font(12, 'Arial','#0E298A');
1230                $fontHead->setBold();
1231                $fontSmall = new Font(1);
1232                $fontComment = new Font(10,'Arial');
1233                $fontComment->setItalic();
1234                $fontChapter = new Font(10,'Arial');
1235                $fontSubChapter = new Font(10,'Arial');
1236                $fontSubChapter->setUnderline();               
1237               
1238                //Format des paragraphes
1239                $parPmb = new ParFormat();
1240                $parPmb->setIndentRight(12.5);
1241                $parPmb->setBackColor('#0E298A');
1242                $parPmb->setSpaceAfter(8);                     
1243                $parHead = new ParFormat();
1244                $parHead->setSpaceBefore(5);           
1245                $parChapter = new ParFormat();
1246                $parChapter->setSpaceBefore(2);
1247                $parChapter->setSpaceAfter(1);                 
1248                $parComment = new ParFormat();
1249                $parComment->setIndentLeft(1);
1250                $parComment->setIndentRight(0.5);                       
1251                $parContenu = new ParFormat('justify');
1252                $parContenu->setIndentLeft(1);                         
1253                $parSubChapter = new ParFormat();
1254                $parSubChapter->setIndentLeft(0.5);             
1255                $parInfo = new ParFormat();
1256                $parInfo->setIndentLeft(0,5);
1257                $parInfo->setSpaceAfter(1.5);
1258                       
1259                $parInfoBib = new ParFormat();
1260                $parInfoBib->setIndentLeft(0);
1261                $parInfoBib->setSpaceAfter(1.5);               
1262               
1263                //Document
1264                $rtf = new Rtf();
1265                $rtf->setMargins(1, 1, 1 ,1);
1266               
1267                foreach($this->liste_rel as $id_fournisseur =>$info_fournisseur ){     
1268               
1269                $rtf->setMargins(1, 1, 1 ,1);
1270               
1271                        $sect = &$rtf->addSection();
1272                        $table = &$sect->addTable();
1273                        $table->addRows(1, 2);
1274                        $table->addColumnsList(array(15,4));
1275                        //$table->addImageToCell(1,1,$base_path."/images/".$biblio_logo,new ParFormat('center'),0,0);
1276                       
1277                        // Info biblio
1278                        $cell = &$table->getCell(1,1); 
1279                        $cell->writeText($this->to_utf8($biblio_name), new Font(14,'Arial','#0E298A'), new ParFormat('left'));
1280                        if($biblio_adr1)$cell->writeText($this->to_utf8($biblio_adr1), new Font(12,'Arial','#0E298A'), new ParFormat('left'));
1281                        if($biblio_adr2)$cell->writeText($this->to_utf8($biblio_adr2), new Font(12,'Arial','#0E298A'), new ParFormat('left'));
1282                        if($biblio_cp || $biblio_town)$cell->writeText($this->to_utf8($biblio_cp." ".$biblio_town), new Font(12,'Arial','#0E298A'), new ParFormat('left'));
1283                        if($biblio_phone)$cell->writeText($this->to_utf8($biblio_phone), new Font(12,'Arial','#0E298A'), new ParFormat('left'));
1284                        if($biblio_email)$cell->writeText($this->to_utf8($biblio_email), new Font(12,'Arial','#0E298A'), new ParFormat('left'));
1285       
1286                        // Info date de génération             
1287                        $cell = &$table->getCell(1,2);
1288                        if($biblio_email)$cell->writeText($this->to_utf8("\n".$msg['fpdf_edite']." ".formatdate(date("Y-m-d",time())),ENT_QUOTES,$charset), new Font(12,'Arial','#0E298A'), new ParFormat('right'));
1289       
1290                        if($id_fournisseur){           
1291                                $fou = new entites($id_fournisseur);
1292                                $coord_fou = entites::get_coordonnees($id_fournisseur,1);
1293                                $coord_fou = pmb_mysql_fetch_object($coord_fou);
1294                                if($fou->raison_sociale != '') {
1295                                        $libelle = $fou->raison_sociale;
1296                                } else { 
1297                                        $libelle = $coord_fou->libelle;
1298                                }                       
1299                                $table = &$sect->addTable();
1300                                $table->addRows(2, 2);
1301                                $table->addColumnsList(array(9, 10));
1302                                $cell = &$table->getCell(1,2);
1303                                $cell->writeText($this->to_utf8($libelle), new Font(14,'Arial','#0E298A'), new ParFormat('left'));
1304                                if($coord_fou->adr1) $cell->writeText($this->to_utf8($coord_fou->adr1), new Font(12,'Arial','#0E298A'), new ParFormat('left'));
1305                                if($coord_fou->adr2) $cell->writeText($this->to_utf8($coord_fou->adr2), new Font(12,'Arial','#0E298A'), new ParFormat('left'));                 
1306                                if($coord_fou->cp) $cell->writeText($this->to_utf8($coord_fou->cp), new Font(12,'Arial','#0E298A'), new ParFormat('left'));
1307                                if($coord_fou->ville)$cell->writeText($this->to_utf8($coord_fou->ville), new Font(12,'Arial','#0E298A'), new ParFormat('left'));
1308                                if ($coord_fou->contact != ''){
1309                                        $cell = &$table->getCell(2,2);
1310                                        $cell->writeText($this->to_utf8($msg['acquisition_act_formule']." ".$coord_fou->contact), new Font(12,'Arial','#0E298A'), new ParFormat('left'));
1311                                }
1312                        }               
1313                       
1314                        $sect->writeText($this->to_utf8($msg["abts_gestion_retard_lettre_monsieur"]."<br />"), new Font(12,'Arial','#0E298A'), new ParFormat('left'));                 
1315                        foreach($info_fournisseur as $num_notice =>$info_notice ){                     
1316                                //print $num_notice; print_r($info_notice) ;exit;
1317                                $perio= new serial_display($num_notice);
1318                                $sect->writeText($this->to_utf8($perio->notice->tit1), $fontHead, $parHead);
1319                                $sect->emptyParagraph($fontSmall, $parPmb);
1320                                foreach($info_notice as $abt_num => $info_abt){
1321                                        //$sect->writeText($this->to_utf8($doc), new Font(10,'Arial'), $parInfo);
1322                                        foreach($info_abt as $rel_id => $rel_info){                     
1323                                                $date = "<u>".$rel_info["rel_libelle_numero"]."</u> : ".formatdate($rel_info["rel_date_parution"]);                     
1324                                                $sect->writeText($this->to_utf8($date), new Font(10,'Arial'), $parInfo);       
1325                                                $sect->writeText($this->to_utf8($rel_info["rel_comment_gestion"]), new Font(10,'Arial'), $parSubChapter);
1326                                        }                               
1327                                }       
1328                        }       
1329                        $sect->insertPageBreak();
1330                }
1331                $rtf->sendRtf("rapport");
1332        }
1333               
1334       
1335       
1336        function to_utf8($string){
1337                global $charset;               
1338                if($charset != 'utf-8'){
1339                        return utf8_encode($string);
1340                }               
1341                return $string;
1342        }
1343       
1344        function gen_plus_form($id, $titre, $contenu) {
1345                return "       
1346                        <div class='row'></div>
1347                        <div id='$id' class='notice-parent'>
1348                                <img src='./images/plus.gif' class='img_plus' name='imEx' id='$id" . "Img' title='".addslashes($msg['plus_detail'])."' border='0' onClick=\"expandBase('$id', true); return false;\" hspace='3'>
1349                                <span class='notice-heada'>
1350                                        $titre
1351                                </span>
1352                        </div>
1353                        <div id='$id" . "Child' class='notice-child' style='margin-bottom:6px;display:none;width:94%'>
1354                                $contenu
1355                        </div>
1356                        ";
1357        }
1358       
1359        function calc_alert() {
1360                global $dbh;
1361                global $location_view, $deflt_bulletinage_location,$pmb_abt_end_delay;
1362                if ($location_view == "") $location_view = $deflt_bulletinage_location;
1363       
1364                $liste_bulletin=$this->get_bulletinage();
1365                $cpt_a_recevoir = $cpt_en_retard = $cpt_en_alerte = 0;
1366                $state=array();
1367                if($liste_bulletin){
1368                        //Tri par type de retard
1369                        asort($liste_bulletin);
1370                        foreach($liste_bulletin as $retard => $bulletin_retard){
1371                                $cpt=0;
1372                                $contenu='';
1373                                foreach($bulletin_retard as $id_bull => $fiche){
1374                                        if (++$cpt % 2) $pair_impair = "even"; else $pair_impair = "odd";
1375                                }
1376                                if($cpt && $retard==3){
1377                                        $state["prochain_numero"]= $cpt;
1378                                }
1379                                if($cpt && $retard==0){
1380                                        $state["a_recevoir"]= $cpt;
1381                                }
1382                                if($cpt && $retard==1){
1383                                        $state["en_retard"]=    $cpt;
1384                                }
1385                                if($cpt && $retard==2){
1386                                        $state["en_alerte"]=    $cpt;
1387                                }
1388                        }
1389                }
1390                return($state);
1391        }
1392       
1393}// Fin de la Classe
1394
1395function increment_bulletin($modele_id, &$num,$num_abt) {
1396        // num_cycle    num_combien     num_increment   num_date_unite  num_increment_date      num_depart     
1397        // vol_actif    vol_increment   vol_date_unite  vol_increment_numero    vol_increment_date      vol_cycle       vol_combien     vol_depart     
1398        // tom_actif    tom_increment   tom_date_unite  tom_increment_numero    tom_increment_date      tom_cycle       tom_combien     tom_depart     
1399        // format_aff                   
1400        $num[$num_abt]['num']++;
1401
1402        if ($num['num_cycle']) {
1403                if (!$num['num_increment']) { //numero cyclique selon un nombre de bulletin
1404                        if ($num[$num_abt]['num'] > $num['num_combien']) {
1405                                $num[$num_abt]['num'] = $num['num_depart'];
1406                        }
1407                } else { // numero cyclique selon la date
1408                        if (pmb_sql_value("SELECT DATEDIFF('" . $num[$num_abt]['num_date_fin_cycle'] . "','" . $num[$num_abt]['date_parution'] . "')") <= 0) {
1409                                $num[$num_abt]['num'] = $num['num_depart'];
1410                                $num[$num_abt]['num_date_fin_cycle'] = pmb_sql_value("SELECT DATE_ADD('" . $num[$num_abt]['num_date_fin_cycle'] . "', INTERVAL " . $num['num_date_sql'] . ")");
1411                        }
1412                }
1413        }
1414
1415        if ($num['vol_actif']) {
1416                if ($num['inc_vol'] == 1) {
1417                        $num[$num_abt]['vol']++;
1418                        $num['inc_vol'] = 0;
1419                }
1420                if (!$num['vol_increment']) { //volume s'incrémente selon un nombre de bulletin
1421                        $modulo = ($num[$num_abt]['num']) % ($num['vol_increment_numero']);
1422                        if ($modulo == 0) {
1423                                $num['inc_vol'] = 1;
1424                        }
1425                } else { // volume s'incrémente selon la date                   
1426                        if (pmb_sql_value("SELECT DATEDIFF('" . $num[$num_abt]['vol_date_fin_cycle'] . "','" . $num[$num_abt]['date_parution'] . "')") <= 0) {
1427                                $num[$num_abt]['vol']++;
1428                                $num[$num_abt]['vol_date_fin_cycle'] = pmb_sql_value("SELECT DATE_ADD('" . $num[$num_abt]['vol_date_fin_cycle'] . "', INTERVAL " . $num['vol_date_sql'] . ")");
1429                        }
1430                }
1431                // Si volume est cyclique
1432                if ($num['vol_cycle']) {
1433                        if ($num[$num_abt]['vol'] > $num['vol_combien']) {
1434                                $num[$num_abt]['vol'] = $num['vol_depart'];
1435                        }
1436                }
1437        }
1438
1439        if ($num['tom_actif']) {
1440                if (($num['inc_tom'] == 1) && ($num['val_vol'] != $num[$num_abt]['vol'])) {
1441                        $num[$num_abt]['tom']++;
1442                        $num['inc_tom'] = 0;
1443                }
1444                if (!$num['tom_increment']) { //tome s'incrémente selon un nombre de volume
1445                        if ($num['val_vol'] != $num[$num_abt]['vol']) {
1446                                $num['val_vol'] = $num[$num_abt]['vol'];
1447                                $modulo = ($num[$num_abt]['vol']) % ($num['tom_increment_numero']);
1448                                if ($modulo == 0) {
1449                                        $num['inc_tom'] = 1;
1450                                }
1451                        }
1452                } else { // tome s'incrémente selon la date
1453                        if (pmb_sql_value("SELECT DATEDIFF('" . $num[$num_abt]['tom_date_fin_cycle'] . "','" . $num[$num_abt]['date_parution'] . "')") <= 0) {
1454                                $num[$num_abt]['tom']++;
1455                                $num[$num_abt]['tom_date_fin_cycle'] = pmb_sql_value("SELECT DATE_ADD('" . $num[$num_abt]['tom_date_fin_cycle'] . "', INTERVAL " . $num['tom_date_sql'] . ")");
1456                        }
1457                }
1458                // Si tome est cyclique
1459                if ($num['tom_cycle']) {
1460                        if ($num[$num_abt]['tom'] > $num['tom_combien']) {
1461                                $num[$num_abt]['tom'] = $num['tom_depart'];
1462                        }
1463                }
1464        }
1465}
Note: See TracBrowser for help on using the repository browser.