source: pmb4.2/trunk/fuentes/pmb/includes/fpdf.inc.php @ 819

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

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 47.5 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: fpdf.inc.php,v 1.81.2.1 2015-11-03 13:04:34 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");
8
9require_once($class_path."/amende.class.php");
10require_once($class_path."/comptes.class.php");
11require_once ("$include_path/notice_authors.inc.php");
12require_once($class_path."/serie.class.php");
13require_once ("$class_path/author.class.php");
14
15
16// Fonctions fpdf
17function biblio_info($x, $y, $short=0) {
18
19        global $ourPDF,$msg,$base_path;
20        global $biblio_name, $biblio_logo, $biblio_adr1, $biblio_adr2, $biblio_cp, $biblio_town, $biblio_state, $biblio_country, $biblio_phone, $biblio_email, $biblio_website ;
21        global $txt_biblio_info ;
22        global $pmb_pdf_font;
23
24        if ($short==1) {
25                        /*
26                if ($biblio_adr1 != "") $biblio_name = $biblio_name."\n";
27                if ($biblio_adr2 != "") $biblio_adr1 = $biblio_adr1."\n";
28                if ($biblio_cp != "") $biblio_cp = $biblio_cp." ";
29                if (($biblio_cp != "") || ($biblio_town != "")) $biblio_adr2 = $biblio_adr2."\n";
30                if ($biblio_state != "") $biblio_state = $biblio_state." ";
31                if (($biblio_state != "") || ($biblio_country != "")) $biblio_town = $biblio_town."\n";
32                if ($biblio_phone != "") $biblio_phone = $biblio_phone."\n ";
33                if ($biblio_email != "") $biblio_email = "@ : ".$biblio_email."\n ";
34                if ($biblio_website != "") $biblio_website = "Web : ".$biblio_website."\n ";
35                if (($biblio_phone != "") || ($biblio_email != "")) $biblio_country = $biblio_country."\n";
36                $txt_biblio_info_short = $biblio_adr1.$biblio_adr2.$biblio_cp.$biblio_town.$biblio_state.$biblio_country.$biblio_phone.$biblio_email.$biblio_website ;
37                */
38                $ourPDF->SetXY ($x,$y);
39                $ourPDF->setFont($pmb_pdf_font, 'B', 16);
40                $ourPDF->multiCell(120, 8, $biblio_name, 0, 'L', 0);
41                /*
42                $ourPDF->SetXY ($x,$y+20);
43                $ourPDF->setFont('Arial', '', 10);
44                $ourPDF->multiCell(0, 8, $txt_biblio_info_short, 0, 'L', 0);
45                */
46        } else {
47                // afin de ne générer qu'une fois l'adr et compagnie
48                if (!$txt_biblio_info) {
49                        if ($biblio_adr1 != "") $biblio_name = $biblio_name."\n";
50                        if ($biblio_adr2 != "") $biblio_adr1 = $biblio_adr1."\n";
51                        if ($biblio_cp != "") $biblio_cp = $biblio_cp." ";
52                        if (($biblio_cp != "") || ($biblio_town != "")) $biblio_adr2 = $biblio_adr2."\n";
53                        if ($biblio_state != "") $biblio_state = $biblio_state." ";
54                        if (($biblio_state != "") || ($biblio_country != "")) $biblio_town = $biblio_town."\n";
55                        if ($biblio_phone != "") $biblio_phone = $msg['lettre_titre_tel'].$biblio_phone."\n ";
56                        if ($biblio_email != "") $biblio_email = "@ : ".$biblio_email."\n ";
57                        if ($biblio_website != "") $biblio_website = "Web : ".$biblio_website."\n ";
58                        if (($biblio_phone != "") || ($biblio_email != "")) $biblio_country = $biblio_country."\n";
59                        $txt_biblio_info = $biblio_adr1.$biblio_adr2.$biblio_cp.$biblio_town.$biblio_state.$biblio_country.$biblio_phone.$biblio_email.$biblio_website ;
60                }
61
62                if ($biblio_logo) $ourPDF->Image($base_path."/images/".$biblio_logo, $x, $y ) ;
63
64                $ourPDF->SetXY ($x+60,$y);
65                $ourPDF->setFont($pmb_pdf_font, 'B', 16);
66                $ourPDF->multiCell(90, 8, $biblio_name, 0, 'C', 0);
67
68                $ourPDF->SetXY ($x,$y+50);
69                $ourPDF->setFont($pmb_pdf_font, '', 9);
70                $ourPDF->multiCell(0, 5, $txt_biblio_info, 0, 'L', 0);
71        }
72} /* fin biblio_info */
73
74function lecteur_info($id_empr, $x, $y, $link, $short=0, $droite=0,$use_param_bloc_adresse=false) {
75
76        global $ourPDF;
77        global $msg;
78        global $pmb_pdf_font;
79        global $pmb_afficher_numero_lecteur_lettres;
80
81        if ($use_param_bloc_adresse) {
82                //Vérifions si l'on demande un positionnement absolu
83                global $pmb_lettres_bloc_adresse_position_absolue;
84                $absolue_config = explode(" ", $pmb_lettres_bloc_adresse_position_absolue);
85                if ((count($absolue_config) == 3) && ($absolue_config[0] != 0)) {
86                        $x = $absolue_config[1]+0;
87                        $y = $absolue_config[2]+0;
88                }
89        }
90
91        $requete = "SELECT id_empr, empr_cb, empr_nom, empr_prenom, empr_adr1, empr_adr2, empr_cp, empr_ville, empr_pays, empr_mail, empr_tel1, empr_tel2, empr_date_adhesion, empr_date_expiration, date_format(empr_date_adhesion, '".$msg["format_date"]."') as aff_empr_date_adhesion, date_format(empr_date_expiration, '".$msg["format_date"]."') as aff_empr_date_expiration FROM empr WHERE id_empr='$id_empr' ";
92        $res = pmb_mysql_query($requete, $link);
93        $empr = pmb_mysql_fetch_object($res);
94
95        $requete = "SELECT group_concat(libelle_groupe SEPARATOR ', ') as_all_groupes, 1 as rien from groupe join empr_groupe on groupe_id=id_groupe WHERE lettre_rappel_show_nomgroup=1 and empr_id='$id_empr' group by rien ";
96        $lib_all_groupes=pmb_sql_value($requete);
97        if ($lib_all_groupes) $lib_all_groupes="\n".$lib_all_groupes;
98
99        $ourPDF->SetXY ($x,$y);
100        $ourPDF->setFont($pmb_pdf_font, 'B', 12);
101        if ($droite) $ourPDF->multiCell(100, 8, $empr->empr_prenom." ".$empr->empr_nom, 0, 'R', 0);
102                else $ourPDF->multiCell(100, 8, $empr->empr_prenom." ".$empr->empr_nom, 0, 'L', 0);
103
104        if ($short==1) return ;
105
106        if ($empr->empr_adr2 != "") $empr->empr_adr1 = $empr->empr_adr1."\n" ;
107        if (($empr->empr_cp != "") || ($empr->empr_ville != "")) $empr->empr_adr2 = $empr->empr_adr2."\n" ;
108        $adr = $empr->empr_adr1.$empr->empr_adr2.$empr->empr_cp." ".$empr->empr_ville ;
109        if ($empr->empr_pays != "") $adr = $adr."\n".$empr->empr_pays ;
110        if ($empr->empr_tel1 != "") {
111                $tel = $tel.$msg['fpdf_tel1']." ".$empr->empr_tel1." " ;
112                }
113        if ($empr->empr_tel2 != "") {
114                $tel = $tel.$msg['fpdf_tel2']." ".$empr->empr_tel2;
115                }
116        if ($empr->empr_mail != "") {
117                if ($tel) $tel = $tel."\n" ;
118                $mail = $msg['fpdf_email']." ".$empr->empr_mail;
119                }
120
121        $ourPDF->SetXY ($x,$y+8);
122        $ourPDF->setFont($pmb_pdf_font, '', 12);
123        $ourPDF->multiCell(100, 8, $adr, 0, 'L', 0);
124
125        $ourPDF->SetXY ($x,$y+32);
126        $ourPDF->setFont($pmb_pdf_font, '', 12);
127        $ourPDF->multiCell(100, 7, "\n".$tel.$mail.$lib_all_groupes, 0, 'L', 0);
128
129        $ourPDF->SetXY ($x,$y+58);
130        $ourPDF->setFont($pmb_pdf_font, 'I', 12);
131        $ourPDF->multiCell(100, 7, ($pmb_afficher_numero_lecteur_lettres ? $msg['fpdf_carte']." ".$empr->empr_cb : "")."\n".$msg['fpdf_adherent']." ".$empr->aff_empr_date_adhesion." ".$msg['fpdf_adherent_au']." ".$empr->aff_empr_date_expiration.".", 0, 'L', 0);
132} /* fin lecteur_info */
133
134// ********************* Imprime l'adresse d'un lecteur **********************************
135function lecteur_adresse($id_empr, $x, $y, $link, $no_cb=false, $show_nomgroupe=false, $use_param_bloc_adresse=false) {
136        global $ourPDF;
137        global $msg;
138        global $pmb_pdf_font;
139
140        //Vérifions si l'on demande un positionnement absolu
141        if ($use_param_bloc_adresse) {
142                global $pmb_lettres_bloc_adresse_position_absolue;
143                $absolue_config = explode(" ", $pmb_lettres_bloc_adresse_position_absolue);
144                if ((count($absolue_config) == 3) && ($absolue_config[0] != 0)) {
145                        $x = $absolue_config[1]+0;
146                        $y = $absolue_config[2]+0;
147                }
148
149                global $pmb_lettres_code_mail_position_absolue;
150                $absolue_config_code = explode(" ", $pmb_lettres_code_mail_position_absolue);
151                $x_code = 0;
152                $y_code = 0;
153                if ((count($absolue_config_code) == 3) && ($absolue_config_code[0] != 0)) {
154                        $x_code = $absolue_config_code[1]+0;
155                        $y_code = $absolue_config_code[2]+0;
156                }
157        }
158        $concerne="";
159        $temp_id_empr=$id_empr;
160        if($show_nomgroupe) {
161                //Recherche du groupe d'appartenance
162                $requete="select id_groupe,resp_groupe from groupe,empr_groupe where id_groupe=groupe_id and empr_id=$id_empr and resp_groupe and lettre_rappel limit 1";
163                $res=pmb_mysql_query($requete);
164                if(pmb_mysql_num_rows($res)) {
165                        $temp_id_empr=pmb_mysql_result($res,0,1);
166                } else  $temp_id_empr=$id_empr;
167
168                //Si le responsable n'est pas l'emprunteur, on précise qui est relancé
169                if ($temp_id_empr!=$id_empr) {
170                        $requete="select concat(empr_prenom,' ',empr_nom) from empr where id_empr=$id_empr"; //Idée de Quentin
171                        $res=pmb_mysql_query($requete);
172                        $concerne="\n".sprintf($msg["adresse_retard_concerne"],pmb_mysql_result($res,0,0))."\n";
173                }
174        }
175
176        $requete = "SELECT id_empr, empr_cb, empr_nom, empr_prenom, empr_adr1, empr_adr2, empr_cp, empr_ville, empr_pays, empr_mail, empr_tel1, empr_tel2  FROM empr WHERE id_empr='$temp_id_empr' LIMIT 1 ";
177        $res = pmb_mysql_query($requete, $link);
178        $empr = pmb_mysql_fetch_object($res);
179
180        $requete = "SELECT group_concat(libelle_groupe SEPARATOR ', ') as_all_groupes, 1 as rien from groupe join empr_groupe on groupe_id=id_groupe WHERE lettre_rappel_show_nomgroup=1 and empr_id='$id_empr' group by rien ";
181        $lib_all_groupes=pmb_sql_value($requete);
182        if ($lib_all_groupes) $lib_all_groupes="\n".$lib_all_groupes;
183
184        $ourPDF->SetXY ($x,$y);
185        $adr = $empr->empr_prenom." ".$empr->empr_nom."\n";
186        $ourPDF->setFont($pmb_pdf_font, '', 12);
187        if ($empr->empr_adr2 != "") $empr->empr_adr1 = $empr->empr_adr1."\n" ;
188        if (($empr->empr_cp != "") || ($empr->empr_ville != "")) $empr->empr_adr2 = $empr->empr_adr2."\n" ;
189        $adr.= $empr->empr_adr1.$empr->empr_adr2.$empr->empr_cp." ".$empr->empr_ville ;
190
191        if ($empr->empr_pays != "") $adr.="\n".$empr->empr_pays ;
192        if ($empr->empr_tel1 != "") {
193                $tel = "\n".$msg['fpdf_tel1']." ".$empr->empr_tel1;
194        } elseif ($empr->empr_tel2 != "") {
195                $adr.="\n" ;
196                $tel = $tel.$msg['fpdf_tel2']." ".$empr->empr_tel2;
197        } else {
198                $tel = "" ;
199        }
200        if ($empr->empr_mail != "") {
201                $tel = $tel."\n" ;
202                $mail = $msg['fpdf_email']." ".$empr->empr_mail;
203        } else {
204                $mail = "" ;
205        }
206
207        $ourPDF->SetDrawColor(255,255,255);
208        $ourPDF->SetFillColor(255,255,255);
209        $ourPDF->multiCell(100, 6, $adr, 0, 'L', true);
210
211        if ($no_cb==false) {
212                $ourPDF->SetXY (($x_code ? $x_code : $x),($y_code ? $ourPDF->GetY()+$y_code :$ourPDF->GetY()));
213                $ourPDF->setFont($pmb_pdf_font, 'I', 10);
214                $ourPDF->multiCell(100, 6, $msg['fpdf_carte']." ".$empr->empr_cb." ".$empr->empr_mail. $lib_all_groupes.$concerne, 0, 'L', true);
215        }
216} /* fin lecteur_adresse */
217
218// ******************** Imprime le libellé du groupe suivi le cas échéant des coordonnées du responsable
219function groupe_adresse($id_groupe, $x, $y, $link, $no_cb=false) {
220        global $ourPDF;
221        global $pmb_pdf_font;
222        global $pmb_afficher_numero_lecteur_lettres;
223
224        $requete = "SELECT libelle_groupe, resp_groupe  FROM groupe WHERE id_groupe='$id_groupe' ";
225        $res = pmb_mysql_query($requete, $link);
226        $groupe = pmb_mysql_fetch_object($res);
227
228        $ourPDF->SetXY ($x,$y);
229        $ourPDF->setFont($pmb_pdf_font, '', 12);
230        $ourPDF->multiCell(100, 8, $groupe->libelle_groupe, 0, 'L', 0);
231
232        if ($groupe->resp_groupe) {
233                $y=$y+8;
234                lecteur_adresse($groupe->resp_groupe, $x, $y, $link, $no_cb || !$pmb_afficher_numero_lecteur_lettres) ;
235                }
236        } /* fin groupe_adresse */
237
238function expl_info($cb_doc, $x, $y, $link, $short=0, $longmax=99999) {
239        global $ourPDF;
240        global $msg ;
241        global $pmb_pdf_font;
242
243        $requete = "SELECT notices_m.notice_id as m_id, notices_s.notice_id as s_id, expl_cb, expl_cote, pret_date, pret_retour, tdoc_libelle, section_libelle, location_libelle, trim(concat(ifnull(notices_m.tit1,''),ifnull(notices_s.tit1,''),' ',ifnull(bulletin_numero,''), if (mention_date, concat(' (',mention_date,')') ,''))) as tit, ";
244        $requete.= " date_format(pret_date, '".$msg["format_date"]."') as aff_pret_date, ";
245        $requete.= " date_format(pret_retour, '".$msg["format_date"]."') as aff_pret_retour, ";
246        $requete.= " IF(pret_retour>sysdate(),0,1) as retard, notices_m.tparent_id, notices_m.tnvol " ;
247        $requete.= " FROM (((exemplaires LEFT JOIN notices AS notices_m ON expl_notice = notices_m.notice_id ) LEFT JOIN bulletins ON expl_bulletin = bulletins.bulletin_id) LEFT JOIN notices AS notices_s ON bulletin_notice = notices_s.notice_id), docs_type, docs_section, docs_location, pret ";
248        $requete.= " WHERE expl_cb='".addslashes($cb_doc)."' and expl_typdoc = idtyp_doc and expl_section = idsection and expl_location = idlocation and pret_idexpl = expl_id  ";
249
250        $res = pmb_mysql_query($requete, $link) or die ("<br />".pmb_mysql_error());
251        $expl = pmb_mysql_fetch_object($res);
252
253        $responsabilites = get_notice_authors(($expl->m_id+$expl->s_id)) ;
254        $as = array_search ("0", $responsabilites["responsabilites"]) ;
255        if ($as!== FALSE && $as!== NULL) {
256                $auteur_0 = $responsabilites["auteurs"][$as] ;
257                $auteur = new auteur($auteur_0["id"]);
258                $header_aut .= $auteur->isbd_entry;
259        } else {
260                $aut1_libelle=array();
261                $as = array_keys ($responsabilites["responsabilites"], "1" ) ;
262                for ($i = 0 ; $i < count($as) ; $i++) {
263                        $indice = $as[$i] ;
264                        $auteur_1 = $responsabilites["auteurs"][$indice] ;
265                        $auteur = new auteur($auteur_1["id"]);
266                        $aut1_libelle[]= $auteur->isbd_entry;
267                }
268                $header_aut .= implode (", ",$aut1_libelle) ;
269        }
270        $header_aut ? $auteur=" / ".$header_aut : $auteur="";
271
272        // récupération du titre de série
273        if ($expl->tparent_id && $expl->m_id) {
274                $parent = new serie($expl->tparent_id);
275                $tit_serie = $parent->name;
276                if($expl->tnvol)
277                        $tit_serie .= ', '.$expl->tnvol;
278        }
279        if($tit_serie) {
280                $expl->tit = $tit_serie.'. '.$expl->tit;
281        }
282
283        if ($short==1) {
284                $ourPDF->SetXY ($x,$y);
285                $ourPDF->setFont($pmb_pdf_font, 'B', 10);
286                $ourPDF->multiCell(190, 8, substr($expl->tit.$auteur,0,$longmax) , 0, 'L', 0);
287
288                $ourPDF->SetXY ($x+10,$y+4);
289                $ourPDF->setFont($pmb_pdf_font, '', 9);
290                $ourPDF->multiCell(140, 8, $msg['fpdf_date_pret']." ".$expl->aff_pret_date, 0, 'L', 0);
291                $ourPDF->SetXY ($x+70,$y+4);
292                $ourPDF->setFont($pmb_pdf_font, 'B', 9);
293                $ourPDF->multiCell(70, 8, $msg['fpdf_retour_prevu']." ".$expl->aff_pret_retour, 0, 'L', 0);
294                $ourPDF->SetXY ($x+10,$y+8);
295                $ourPDF->setFont($pmb_pdf_font, 'I', 8);
296                $ourPDF->multiCell(190, 8, strip_tags($expl->location_libelle.": ".$expl->section_libelle.": ".$expl->expl_cote." (".$expl->expl_cb.")"), 0, 'L', 0);
297        } else {
298
299                $ourPDF->SetXY ($x,$y);
300                $ourPDF->setFont($pmb_pdf_font, 'BU', 14);
301                $nb = $ourPDF->NbLines(190,substr($expl->tit." (".$expl->tdoc_libelle.")",0,$longmax));
302                if ($nb > 1) {
303                        $font_size = $ourPDF->FontSizePt;
304                        $font_size--;
305                        for($s=$font_size; $s>=10; $s--) {
306                                $ourPDF->setFont($pmb_pdf_font, 'BU', $s);
307                                $nb = $ourPDF->NbLines(190,substr($expl->tit." (".$expl->tdoc_libelle.")",0,$longmax));
308                                if ($nb == 1) break;
309                        }
310                }
311                $ourPDF->multiCell(190, 8, substr($expl->tit." (".$expl->tdoc_libelle.")",0,$longmax), 0, 'L', 0);
312
313                $ourPDF->SetXY ($x+10,$y+6);
314                $ourPDF->setFont($pmb_pdf_font, '', 10);
315                $ourPDF->multiCell(190-30, 8, $msg['fpdf_date_pret']." ".$expl->aff_pret_date, 0, 'L', 0);
316                $ourPDF->SetXY ($x+70,$y+6);
317                $ourPDF->setFont($pmb_pdf_font, 'B', 10);
318                $ourPDF->multiCell((190 - 70), 8, $msg['fpdf_retour_prevu']." ".$expl->aff_pret_retour, 0, 'L', 0);
319
320                $ourPDF->SetXY ($x+10,$y+10);
321                $ourPDF->setFont($pmb_pdf_font, 'I', 8);
322                $ourPDF->multiCell(190, 8, strip_tags($expl->location_libelle.": ".$expl->section_libelle.": ".$expl->expl_cote." (".$expl->expl_cb.")"), 0, 'L', 0);
323        }
324} /* fin expl_info */
325
326function not_bull_info_resa ($id_empr, $notice, $bulletin, $x, $y, $link, $longmax=99999) {
327        global $ourPDF;
328        global $msg;
329        global $pmb_pdf_font;
330
331        $dates_resa_sql = "date_format(resa_date, '".$msg["format_date"]."') as date_pose_resa, IF(resa_date_fin>sysdate() or resa_date_fin='0000-00-00',0,1) as perimee, if(resa_date_debut='0000-00-00', '', date_format(resa_date_debut, '".$msg["format_date"]."')) as aff_resa_date_debut, if(resa_date_fin='0000-00-00', '', date_format(resa_date_fin, '".$msg["format_date"]."')) as aff_resa_date_fin " ;
332        if ($notice) {
333                $requete = "SELECT notice_id, resa_date, resa_idempr, tit1 as tit, ".$dates_resa_sql;
334                $requete.= "FROM notices, resa ";
335                $requete.= "WHERE notice_id='".$notice."' and resa_idnotice=notice_id order by resa_date ";
336        } else {
337                $requete = "SELECT notice_id, resa_date, resa_idempr, trim(concat(tit1,' ',ifnull(bulletin_numero,''), if (mention_date, concat(' (',mention_date,')') ,''))) as tit, ".$dates_resa_sql;
338                $requete.= "FROM bulletins, resa, notices ";
339                $requete.= "WHERE resa_idbulletin='$bulletin' and resa_idbulletin = bulletins.bulletin_id and bulletin_notice = notice_id order by resa_date ";
340        }
341
342        $res = pmb_mysql_query($requete, $link) or die ("<br />".pmb_mysql_error());
343        $nb_resa = pmb_mysql_num_rows($res) ;
344
345        for ($j=0 ; $j<$nb_resa ; $j++ ) {
346                $resa = pmb_mysql_fetch_object($res);
347                if ($resa->resa_idempr == $id_empr) {
348                        $responsabilites = get_notice_authors($resa->notice_id) ;
349                        $as = array_search ("0", $responsabilites["responsabilites"]) ;
350                        if ($as!== FALSE && $as!== NULL) {
351                                $auteur_0 = $responsabilites["auteurs"][$as] ;
352                                $auteur = new auteur($auteur_0["id"]);
353                                $header_aut .= $auteur->isbd_entry;
354                        } else {
355                                $aut1_libelle=array();
356                                $as = array_keys ($responsabilites["responsabilites"], "1" ) ;
357                                for ($i = 0 ; $i < count($as) ; $i++) {
358                                        $indice = $as[$i] ;
359                                        $auteur_1 = $responsabilites["auteurs"][$indice] ;
360                                        $auteur = new auteur($auteur_1["id"]);
361                                        $aut1_libelle[]= $auteur->isbd_entry;
362                                }
363                                $header_aut .= implode (", ",$aut1_libelle) ;
364                        }
365                        $header_aut ? $auteur=" / ".$header_aut : $auteur="";
366
367                        $ourPDF->SetXY ($x,$y);
368                        $ourPDF->setFont($pmb_pdf_font, 'BU', 14);
369                        $ourPDF->multiCell(190, 8, substr($resa->tit.$auteur,0,$longmax), 0, 'L', 0);
370
371                        if ($resa->aff_resa_date_debut) $tmpmsg_res = $msg['fpdf_reserve_du']." ".$resa->aff_resa_date_debut." ".$msg['fpdf_adherent_au']." ".$resa->aff_resa_date_fin;
372                        else $tmpmsg_res = $msg['fpdf_attente_valid'];
373                        $ourPDF->SetXY ($x+10,$y+6);
374                        $ourPDF->setFont('Arial', '', 10);
375                        $ourPDF->multiCell(140, 8, $tmpmsg_res, 0, 'L', 0);
376
377                        $date_resa = " ".$msg['fpdf_reserv_enreg']." ".$resa->date_pose_resa."." ;
378                        $ourPDF->SetXY ($x+10,$y+10);
379                        $ourPDF->setFont('Arial', '', 8);
380                        $ourPDF->multiCell(140, 8, $msg['fpdf_rang']." ".($j+1).$date_resa, 0, 'L', 0);
381                        return ;
382                }
383        } // fin for
384} /* fin not_bull_info_resa */
385
386// ************************* Imprime la ligne de retard pour un exemplaire sur la lettre du lecteur
387function expl_retard($cb_doc, $x, $y, $largeur, $retrait, $link) {
388
389        global $ourPDF;
390        global $msg;
391        global $pmb_gestion_financiere, $pmb_gestion_amende;
392        global $pmb_pdf_font;
393
394        $valeur=0;
395        $dates_resa_sql = " date_format(pret_date, '".$msg["format_date"]."') as aff_pret_date, date_format(pret_retour, '".$msg["format_date"]."') as aff_pret_retour " ;
396        $requete = "SELECT notices_m.notice_id as m_id, notices_s.notice_id as s_id, pret_idempr, expl_id, expl_cb,expl_cote, pret_date, pret_retour, tdoc_libelle, section_libelle, location_libelle, trim(concat(ifnull(notices_m.tit1,''),ifnull(notices_s.tit1,''),' ',ifnull(bulletin_numero,''), if (mention_date!='', concat(' (',mention_date,')') ,''))) as tit, ".$dates_resa_sql.", " ;
397        $requete.= " notices_m.tparent_id, notices_m.tnvol " ;
398        $requete.= " FROM (((exemplaires LEFT JOIN notices AS notices_m ON expl_notice = notices_m.notice_id ) LEFT JOIN bulletins ON expl_bulletin = bulletins.bulletin_id) LEFT JOIN notices AS notices_s ON bulletin_notice = notices_s.notice_id), docs_type, docs_section, docs_location, pret ";
399        $requete.= " WHERE expl_cb='".addslashes($cb_doc)."' and expl_typdoc = idtyp_doc and expl_section = idsection and expl_location = idlocation and pret_idexpl = expl_id  ";
400
401        $res = pmb_mysql_query($requete, $link) or die (pmb_mysql_error()." $requete");
402        $expl = pmb_mysql_fetch_object($res);
403
404        // récupération du titre de série
405        if ($expl->tparent_id && $expl->m_id) {
406                $parent = new serie($expl->tparent_id);
407                $tit_serie = $parent->name;
408                if($expl->tnvol)
409                        $tit_serie .= ', '.$expl->tnvol;
410        }
411        if($tit_serie) {
412                $expl->tit = $tit_serie.'. '.$expl->tit;
413        }
414        $libelle=$expl->tdoc_libelle;
415        $responsabilites=get_notice_authors($expl->m_id) ;
416        //print_r($responsabilites);
417        $as = array_keys ($responsabilites["responsabilites"], "0" ) ;
418        for ($i = 0 ; $i < count($as) ; $i++) {
419                $indice = $as[$i] ;
420                $auteur_1 = $responsabilites["auteurs"][$indice] ;
421                $auteur = new auteur($auteur_1["id"]);
422                $aut1_libelle[]= $auteur->isbd_entry;
423
424        }
425        if ($aut1_libelle) {
426                $auteurs_liste = implode ("; ",$aut1_libelle) ;
427                if ($auteurs_liste) $libelle .= ' / '. $auteurs_liste;
428
429        }
430        $libelle=$expl->tit." (".$libelle.")" ;
431        //substr($libelle,0,50);
432
433        $ourPDF->SetXY ($x,$y);
434        $ourPDF->setFont($pmb_pdf_font, 'BU', 10);
435
436        while( $ourPDF->GetStringWidth($libelle) > 178) {
437                $libelle=substr($libelle,0,count($libelle)-2);
438        }
439        //print $ourPDF->GetStringWidth($libelle);
440        $ourPDF->multiCell($largeur, 8, $libelle, 0, 'L', 0);
441
442        $ourPDF->SetXY ($x+$retrait,$y+4);
443        $ourPDF->setFont($pmb_pdf_font, '', 10);
444        $ourPDF->multiCell(($largeur - $retrait), 8, $msg['fpdf_date_pret']." ".$expl->aff_pret_date, 0, 'L', 0);
445        if (ceil($ourPDF->GetStringWidth($msg['fpdf_date_pret']." ".$expl->aff_pret_date)) > 52) {
446                $w_string =     ceil($ourPDF->GetStringWidth($msg['fpdf_date_pret']." ".$expl->aff_pret_date));
447        } else {
448                $w_string = 52;
449        }
450        $ourPDF->SetXY (($x+$retrait+$w_string),$y+4);
451        $ourPDF->setFont($pmb_pdf_font, 'B', 10);
452        $ourPDF->multiCell(($largeur - $retrait - 52), 8, $msg['fpdf_retour_prevu']." ".$expl->aff_pret_retour, 0, 'L', 0);
453
454        $ourPDF->SetXY ($x+$retrait,$y+8);
455        $ourPDF->setFont($pmb_pdf_font, 'I', 8);
456        $ourPDF->multiCell(($largeur - $retrait), 8, strip_tags($expl->location_libelle.": ".$expl->section_libelle.", ".$expl->expl_cote." (".$expl->expl_cb.")"), 0, 'L', 0);
457
458        if (($pmb_gestion_financiere)&&($pmb_gestion_amende)) {
459                $amende=new amende($expl->pret_idempr);
460                $amd=$amende->get_amende($expl->expl_id);
461                if ($amd["valeur"]) {
462                        $ourPDF->SetXY (($x+$retrait+120),$y+8);
463                        $ourPDF->multiCell(($largeur - $retrait - 120), 8, sprintf($msg["relance_lettre_retard_amende"],comptes::format_simple($amd["valeur"])), 0, 'R', 0);
464                        $valeur=$amd["valeur"];
465                }
466        }
467        return $valeur;
468} /* fin expl_retard */
469
470// ************************* Imprime la ligne de retard pour un exemplaire sur la lettre du lecteur
471function expl_retard_empr($id_empr, $cb_doc, $x, $y, $largeur, $retrait, $link) {
472
473        global $ourPDF;
474        global $msg;
475        global $pmb_pdf_font;
476
477        $requete = "SELECT id_empr, empr_cb, empr_nom, empr_prenom, empr_adr1, empr_adr2, empr_cp, empr_ville, empr_pays, empr_mail, empr_tel1, empr_tel2  FROM empr WHERE id_empr='$id_empr' LIMIT 1 ";
478        $res = pmb_mysql_query($requete, $link);
479        $empr = pmb_mysql_fetch_object($res);
480        $ourPDF->SetXY ($x,$y);
481        $ourPDF->setFont($pmb_pdf_font, '', 12);
482        $ourPDF->multiCell(100, 8, $empr->empr_prenom." ".$empr->empr_nom, 0, 'L', 0);
483        $y=$y+4;
484        expl_retard($cb_doc, $x, $y, $largeur, $retrait+10, $link) ;
485} // fin expl_retard_empr
486
487function date_edition($x, $y) {
488        global $ourPDF;
489        global $msg;
490        global $pmb_pdf_fontfixed;
491
492        $ourPDF->SetXY ($x,$y);
493        $ourPDF->setFont($pmb_pdf_fontfixed, 'I', 12);
494        $ourPDF->multiCell(140, 8, $msg['fpdf_edite']." ".formatdate(date("Y-m-d",time())), 0, 'L', 0);
495}
496
497function date_jour($x, $y) {
498
499        global $ourPDF;
500        global $pmb_pdf_fontfixed,$msg,$biblio_town,$pmb_pdf_font;
501        $ourPDF->SetXY ($x,$y);
502        $ourPDF->setFont($pmb_pdf_font, '', 10);
503        $c=str_replace("!!ville!!",$biblio_town,$msg['lettre_date_header']);
504        $c=str_replace("!!date!!",formatdate(date("Y-m-d",time())),$c);
505        $ourPDF->multiCell(100, 8, $c, 0, 'R', 0);
506}
507
508function lettre_retard_par_lecteur($id_empr) {
509
510        global $ourPDF, $dbh, $msg , $nb_page, $nb_1ere_page, $nb_par_page, $pmb_gestion_financiere, $pmb_gestion_amende, $niveau;
511        global $pmb_pdf_font;
512        // les variables sont lues en dehors
513        global $marge_page_gauche, $marge_page_droite, $largeur_page, $fdp, $after_list, $limite_after_list, $before_list, $madame_monsieur, $nb_1ere_page, $nb_par_page, $taille_bloc_expl, $debut_expl_1er_page, $debut_expl_page, $before_recouvrement,$after_recouvrement;
514        global $pmb_afficher_numero_lecteur_lettres;
515        global $pmb_hide_biblioinfo_letter;
516
517        //Pour les amendes
518        $valeur=0;
519        $ourPDF->addPage();
520
521        //date_jour($largeur_page-$marge_page_droite-30,10);
522        date_jour(($largeur_page - $marge_page_droite - $marge_page_gauche)/2,98);
523        if(!$pmb_hide_biblioinfo_letter) biblio_info( $marge_page_gauche, 15) ;
524        lecteur_adresse($id_empr, ($marge_page_gauche+90), 45, $dbh, !$pmb_afficher_numero_lecteur_lettres, true,true);
525
526        $rqt="select empr_nom, empr_prenom from empr where id_empr='".$id_empr."'";
527        $req=pmb_mysql_query($rqt) or die('Erreur SQL !<br />'.$rqt.'<br />'.pmb_mysql_error()); ;
528        $r = pmb_mysql_fetch_object($req);
529        $texte_madame_monsieur=str_replace("!!empr_name!!", $r->empr_nom,$madame_monsieur);
530        $texte_madame_monsieur=str_replace("!!empr_first_name!!", $r->empr_prenom,$texte_madame_monsieur);
531
532        $ourPDF->SetXY ($marge_page_gauche,105);
533        $ourPDF->setFont($pmb_pdf_font, '', 10);
534        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 8, $texte_madame_monsieur, 0, 'L', 0);
535        $ourPDF->SetXY ($marge_page_gauche,$ourPDF->GetY()+4);
536        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 5, $before_list, 0, 'J', 0);
537
538        //Calcul des frais de relance
539        if (($pmb_gestion_financiere)&&($pmb_gestion_amende)) {
540                $id_compte=comptes::get_compte_id_from_empr($id_empr,2);
541                if ($id_compte) {
542                        $cpte=new comptes($id_compte);
543                        $frais_relance=$cpte->summarize_transactions("","",0,$realisee=-1);
544                        if ($frais_relance<0) $frais_relance=-$frais_relance; else $frais_relance=0;
545                }
546        }
547
548        if($niveau!=3) {
549                $rqt = "select expl_cb from pret, exemplaires where pret_idempr='".$id_empr."' and pret_retour < curdate() and pret_idexpl=expl_id order by pret_date " ;
550                $req = pmb_mysql_query($rqt, $dbh) or die($msg['err_sql'].'<br />'.$rqt.'<br />'.pmb_mysql_error());
551
552                while ($data = pmb_mysql_fetch_array($req)) {
553                        if (($pos_page=$ourPDF->GetY())>260) {
554                                $ourPDF->addPage();
555                                $pos_page=$debut_expl_page;
556                        }
557                        $valeur+=expl_retard ($data['expl_cb'],$marge_page_gauche,$pos_page,($largeur_page - $marge_page_droite - $marge_page_gauche), 10,$dbh);
558                }
559                print_amendes($valeur,$frais_relance);
560
561                $ourPDF->SetX ($marge_page_gauche);
562                $ourPDF->setFont($pmb_pdf_font, '', 10);
563
564        } else {
565
566                $requete="select expl_cb from exemplaires, pret where pret_idempr=$id_empr and pret_idexpl=expl_id and niveau_relance=3";
567                $res_recouvre=pmb_mysql_query($requete);
568                while ($rrc=pmb_mysql_fetch_object($res_recouvre)) {
569                        $liste_r3[]=$rrc->expl_cb;
570                }
571                $rqt = "select expl_cb from pret, exemplaires where pret_idempr='".$id_empr."' and pret_retour < curdate() and pret_idexpl=expl_id order by pret_date " ;
572                $req = pmb_mysql_query($rqt, $dbh) or die($msg['err_sql'].'<br />'.$rqt.'<br />'.pmb_mysql_error());
573                while ($data = pmb_mysql_fetch_object($req)) {
574                        // Pas répéter les retard si déjà en niveau 3
575                        if(isset($liste_r3)){
576                                if(in_array($data->expl_cb,$liste_r3)===false){
577                                        $liste_r[] = $data->expl_cb;
578                                }
579                        }
580                }       
581
582                if($liste_r) {
583                        // Il y a des retard simple: on affiche d'abord les retards simples
584                        foreach($liste_r as $cb_expl) {
585                                if (($pos_page=$ourPDF->GetY())>260) {
586                                        $ourPDF->addPage();
587                                        $pos_page=$debut_expl_page;
588                                }
589                                $valeur+=expl_retard ($cb_expl,$marge_page_gauche,$pos_page,($largeur_page - $marge_page_droite - $marge_page_gauche), 10,$dbh);
590                        }
591                        $ourPDF->setFont($pmb_pdf_font, '', 10);
592                        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 5, $before_recouvrement, 0, 'J', 0);
593                        // affiche retards niveau 3
594                        if(isset($liste_r3)){
595                                foreach($liste_r3 as $cb_expl) {
596                                        if (($pos_page=$ourPDF->GetY())>260) {
597                                                $ourPDF->addPage();
598                                                $pos_page=$debut_expl_page;
599                                        }
600                                        $valeur+=expl_retard ($cb_expl,$marge_page_gauche,$pos_page,($largeur_page - $marge_page_droite - $marge_page_gauche), 10,$dbh);
601                                }
602                        }
603                        print_amendes($valeur,$frais_relance);
604
605                } else {
606                        // il n'y a que des retards niveau 3
607                        if(isset($liste_r3)){
608                                foreach($liste_r3 as $cb_expl) {
609                                        if (($pos_page=$ourPDF->GetY())>260) {
610                                                $ourPDF->addPage();
611                                                $pos_page=$debut_expl_page;
612                                        }
613                                        $valeur+=expl_retard ($cb_expl,$marge_page_gauche,$pos_page,($largeur_page - $marge_page_droite - $marge_page_gauche), 10,$dbh);
614                                }
615                        }
616                        print_amendes($valeur,$frais_relance);
617                        $ourPDF->setFont($pmb_pdf_font, '', 10);
618                        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 5, $after_recouvrement, 0, 'J', 0);
619                }
620                //if (($niveau==3)&&(($pmb_gestion_financiere)&&($pmb_gestion_amende))) {
621        }
622
623        $pos_page=$ourPDF->GetY();//Récupère la position dans la page pour prendre en compte l'ajout ou non des informations d'amendes et éviter la superposition d'informations
624
625        if (($pos_page+$taille_bloc_expl)>$limite_after_list) {
626                $ourPDF->addPage();
627                $pos_after_list = $debut_expl_page;
628        } else {
629                $pos_after_list = $pos_page+$taille_bloc_expl;
630        }
631        $ourPDF->SetXY ($marge_page_gauche,($pos_after_list));
632
633        $ourPDF->setFont($pmb_pdf_font, '', 10);
634        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 5, $after_list, 0, 'J', 0);
635
636        $ourPDF->setFont($pmb_pdf_font, 'I', 10);
637        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 5, $fdp, 0, 'R', 0);
638} // fin lettre_retard_par_lecteur
639
640
641function print_amendes($valeur,$frais_relance) {
642        global $pmb_pdf_font,$ourPDF,$largeur_page, $marge_page_droite, $marge_page_gauche,$msg,$debut_expl_page;
643        //Si il y a des amendes
644        $ourPDF->SetY ($ourPDF->GetY()+2);
645        $ourPDF->setFont($pmb_pdf_font, '', 10);
646        $ourPDF->SetWidths(array(70,30));
647
648        if ($ourPDF->GetY()>260) {
649                $ourPDF->addPage();
650                $ourPDF->SetY($debut_expl_page);
651        }
652        if ($valeur) {
653                $ourPDF->SetX ($marge_page_gauche+40);
654                 $ourPDF->Row(array($msg["relance_lettre_retard_total_amendes"], comptes::format_simple($valeur) ));
655        }
656        if ($frais_relance) {
657                $ourPDF->SetX ($marge_page_gauche+40);
658                $ourPDF->Row(array($msg["relance_lettre_retard_frais_relance"], comptes::format_simple($frais_relance) ));
659        }
660        if (($frais_relance)&&($valeur)) {
661                $ourPDF->SetX ($marge_page_gauche+40);
662                $ourPDF->Row(array($msg["relance_lettre_retard_total_du"], comptes::format_simple($valeur+$frais_relance) ));
663        }
664        $ourPDF->SetY ($ourPDF->GetY()+4);
665}
666
667// ******************** Imprime les lettres de retard pour un groupe ****************************
668function lettre_retard_par_groupe($id_groupe, $lecteurs_ids=array()) {
669
670        global $ourPDF, $dbh, $msg;
671        global $pmb_pdf_font;
672
673        // les variables sont lues en dehors
674        global $marge_page_gauche, $marge_page_droite, $largeur_page, $fdp_group,
675                $after_list_group, $limite_after_list, $before_list_group, $madame_monsieur_group, $nb_1ere_page,
676                $nb_par_page, $taille_bloc_expl, $debut_expl_1er_page, $debut_expl_page;
677        global $pmb_hide_biblioinfo_letter;
678
679        $ourPDF->addPage();
680        date_jour(($largeur_page - $marge_page_droite - $marge_page_gauche)/2,98);
681        if(!$pmb_hide_biblioinfo_letter) biblio_info( $marge_page_gauche, 15) ;
682        groupe_adresse($id_groupe, ($marge_page_gauche+90), 45, $dbh);
683
684        $rqt="select empr_nom, empr_prenom from empr join groupe on id_empr=resp_groupe where id_groupe='".$id_groupe."'";
685        $req=pmb_mysql_query($rqt) or die('Erreur SQL !<br />'.$rqt.'<br />'.pmb_mysql_error()); ;
686        if (pmb_mysql_num_rows($req) == 1) {
687                $r = pmb_mysql_fetch_object($req);
688                $texte_madame_monsieur_group=str_replace("!!empr_name!!", $r->empr_nom,$madame_monsieur_group);
689                $texte_madame_monsieur_group=str_replace("!!empr_first_name!!", $r->empr_prenom,$texte_madame_monsieur_group);
690        } else {
691                $texte_madame_monsieur_group=str_replace("!!empr_name!!", "",$madame_monsieur_group);
692                $texte_madame_monsieur_group=str_replace("!!empr_first_name!!", "",$texte_madame_monsieur_group);
693        }
694
695        $ourPDF->SetXY ($marge_page_gauche,125);
696        $ourPDF->setFont($pmb_pdf_font, '', 10);
697        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 8, $texte_madame_monsieur_group, 0, 'L', 0);
698        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 8, $before_list_group, 0, 'J', 0);
699
700        // compter les totaux pour ce groupe et les retards
701        $sqlcount = "SELECT count(pret_idexpl) as combien , IF(pret_retour>=curdate(),0,1) as retard ";
702        $sqlcount .= "FROM exemplaires, empr, pret, empr_groupe, groupe ";
703        $sqlcount .= "WHERE pret.pret_idempr = empr.id_empr AND pret.pret_idexpl = exemplaires.expl_id AND empr_groupe.empr_id = empr.id_empr AND groupe.id_groupe = empr_groupe.groupe_id and id_groupe=$id_groupe group by retard order by retard ";
704        $reqcount = pmb_mysql_query($sqlcount) or die(pmb_mysql_error()."<br />".$sqlcount);
705        $nbok=0;
706        $nbretard=0;
707        while ($datacount = pmb_mysql_fetch_object($reqcount)) {
708                if ($datacount->retard==0) $nbok=$datacount->combien;
709                if ($datacount->retard==1) $nbretard=$datacount->combien;
710        }
711        $retard_sur_total = str_replace ("!!nb_retards!!",$nbretard*1,$msg[n_retards_sur_total_de]);
712        $retard_sur_total = str_replace ("!!nb_total!!",($nbretard+$nbok)*1,$retard_sur_total);
713        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 8, $retard_sur_total, 0, 'L', 0);
714
715        if ($lecteurs_ids)
716                $lecteur_ids_text = " AND id_empr in (".implode(",",$lecteurs_ids).")";
717        else
718                $lecteur_ids_text = "";
719
720        $rqt = "select  empr_id, expl_cb from pret, exemplaires, empr_groupe, empr where groupe_id='".$id_groupe."' and pret_retour < curdate() and pret_idexpl=expl_id and empr_id=pret_idempr and empr_id=id_empr $lecteur_ids_text order by empr_nom, empr_prenom, pret_date " ;
721        $req = pmb_mysql_query($rqt, $dbh) or die ($msg['err_sql'].'<br />'.$rqt.'<br />'.pmb_mysql_error());
722        $i=0;
723        $nb_page=0;
724        $indice_page = 0 ;
725        while ($data = pmb_mysql_fetch_array($req)) {
726                if ($nb_page==0 && $i==$nb_1ere_page) {
727                        $ourPDF->addPage();
728                        $nb_page++;
729                        $indice_page = 0 ;
730                } elseif ((($nb_page>=1) && ((($i-$nb_1ere_page) % $nb_par_page)==0)) || ($ourPDF->GetY()>$limite_after_list)) {
731                        $ourPDF->addPage();
732                        $nb_page++;
733                        $indice_page = 0 ;
734                }
735                if ($nb_page==0) $pos_page = $debut_expl_1er_page+$taille_bloc_expl*$indice_page;
736                        else $pos_page = $debut_expl_page+$taille_bloc_expl*$indice_page;
737                expl_retard_empr ($data['empr_id'], $data['expl_cb'], $marge_page_gauche,$pos_page,($largeur_page - $marge_page_droite - $marge_page_gauche), 10,$dbh);
738                $i++;
739                $indice_page++;
740        }
741        $ourPDF->setFont($pmb_pdf_font, '', 10);
742        if (($pos_page+$taille_bloc_expl)>$limite_after_list) {
743                $ourPDF->addPage();
744                $pos_after_list = $debut_expl_page;
745        } else {
746                $pos_after_list = $pos_page+$taille_bloc_expl;
747        }
748        $ourPDF->SetXY ($marge_page_gauche,($pos_after_list));
749        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 8, $after_list_group."\n\n", 0, 'J', 0);
750        $ourPDF->setFont($pmb_pdf_font, 'I', 10);
751        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 8, $fdp_group, 0, 'R', 0);
752} // fin lettre_retard_par_groupe
753
754// **************** Réservations *************************************
755
756function lettre_resa_par_lecteur($id_empr) {
757
758        global $ourPDF, $dbh, $msg , $nb_page, $nb_1ere_page, $nb_par_page;
759
760        // les variables sont lues en dehors
761        global $marge_page_gauche, $marge_page_droite, $largeur_page, $fdp, $after_list, $limite_after_list, $before_list, $madame_monsieur, $nb_1ere_page, $nb_par_page, $taille_bloc_expl, $debut_expl_1er_page, $debut_expl_page;
762        global $pmb_pdf_font;
763        global $pmb_afficher_numero_lecteur_lettres;
764        global $pmb_hide_biblioinfo_letter;
765
766        $ourPDF->addPage();
767        if(!$pmb_hide_biblioinfo_letter) biblio_info( $marge_page_gauche, 10) ;
768        lecteur_adresse($id_empr, ($marge_page_gauche+90), 45, $dbh, !$pmb_afficher_numero_lecteur_lettres,false,true);
769
770        $rqt="select empr_nom, empr_prenom from empr where id_empr='".$id_empr."'";
771        $req=pmb_mysql_query($rqt) or die('Erreur SQL !<br />'.$rqt.'<br />'.pmb_mysql_error());
772        $r = pmb_mysql_fetch_object($req);
773        $texte_madame_monsieur=str_replace("!!empr_name!!", $r->empr_nom,$madame_monsieur);
774        $texte_madame_monsieur=str_replace("!!empr_first_name!!", $r->empr_prenom,$texte_madame_monsieur);
775
776        $ourPDF->SetXY ($marge_page_gauche,125);
777        $ourPDF->setFont($pmb_pdf_font, '', 12);
778        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 8, $texte_madame_monsieur, 0, 'L', 0);
779        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 8, $before_list, 0, 'J', 0);
780        $rqt = "select id_resa from resa where resa_idempr='$id_empr' and resa_cb is not null and resa_cb!='' order by resa_date_debut " ;
781
782        $req = pmb_mysql_query($rqt, $dbh) or die('Erreur SQL !<br />'.$rqt.'<br />'.pmb_mysql_error());
783
784        $i=0;
785        $nb_page=0;
786        $indice_page = 0 ;
787        while ($data = pmb_mysql_fetch_array($req)) {
788                if ($nb_page==0 && $i==$nb_1ere_page) {
789                        $ourPDF->addPage();
790                        $nb_page++;
791                        $indice_page = 0 ;
792                } elseif ((($nb_page>=1) && ((($i-$nb_1ere_page) % $nb_par_page)==0)) || ($ourPDF->GetY()>$limite_after_list)) {
793                        $ourPDF->addPage();
794                        $nb_page++;
795                        $indice_page = 0 ;
796                }
797
798                if ($nb_page==0) $pos_page = $debut_expl_1er_page+$taille_bloc_expl*$indice_page;
799                        else $pos_page = $debut_expl_page+$taille_bloc_expl*$indice_page;
800                notice_resa ($data['id_resa'],$marge_page_gauche,$pos_page,($largeur_page - $marge_page_droite - $marge_page_gauche), 10,$dbh);
801                $i++;
802                $indice_page++;
803
804                //echo "<br /> $i ";
805        }
806        //echo "<br />pos_page: $pos_page <br />taille_bloc_expl: $taille_bloc_expl <br />limite_after_list: $limite_after_list "; exit ;
807        $ourPDF->setFont($pmb_pdf_font, '', 12);
808        // dépassement sur autre page de cette partie
809        if (($pos_page+$taille_bloc_expl)>$limite_after_list) {
810                $ourPDF->addPage();
811                $pos_after_list = $debut_expl_page;
812        } else {
813                $pos_after_list = $pos_page+$taille_bloc_expl;
814        }
815        $ourPDF->SetXY ($marge_page_gauche,($pos_after_list));
816        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 8, $after_list."\n\n", 0, 'J', 0);
817        $ourPDF->setFont($pmb_pdf_font, 'I', 12);
818        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 8, $fdp, 0, 'R', 0);
819} // fin lettre_resa_par_lecteur
820
821
822function lettre_resa_planning_par_lecteur($id_empr) {
823
824        global $ourPDF, $dbh, $msg , $nb_page, $nb_1ere_page, $nb_par_page, $pmb_afficher_numero_lecteur_lettres;
825
826        // les variables sont lues en dehors
827        global $marge_page_gauche, $marge_page_droite, $largeur_page, $fdp, $after_list, $limite_after_list, $before_list, $madame_monsieur, $nb_1ere_page, $nb_par_page, $taille_bloc_expl, $debut_expl_1er_page, $debut_expl_page;
828        global $pmb_pdf_font;
829        global $pmb_afficher_numero_lecteur_lettres;
830        global $pmb_hide_biblioinfo_letter;
831
832        $ourPDF->addPage();
833        if(!$pmb_hide_biblioinfo_letter) biblio_info( $marge_page_gauche, 10) ;
834        lecteur_adresse($id_empr, ($marge_page_gauche+90), 45, $dbh, !$pmb_afficher_numero_lecteur_lettres,false,true);
835
836        $rqt="select empr_nom, empr_prenom from empr where id_empr='".$id_empr."'";
837        $req=pmb_mysql_query($rqt) or die('Erreur SQL !<br />'.$rqt.'<br />'.pmb_mysql_error());
838        $r = pmb_mysql_fetch_object($req);
839        $texte_madame_monsieur=str_replace("!!empr_name!!", $r->empr_nom,$madame_monsieur);
840        $texte_madame_monsieur=str_replace("!!empr_first_name!!", $r->empr_prenom,$texte_madame_monsieur);
841
842        $ourPDF->SetXY ($marge_page_gauche,125);
843        $ourPDF->setFont($pmb_pdf_font, '', 12);
844        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 8, $texte_madame_monsieur, 0, 'L', 0);
845        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 8, $before_list, 0, 'J', 0);
846        $rqt = "select id_resa from resa_planning where resa_idempr='$id_empr' and resa_validee=1 order by resa_date_debut " ;
847
848        $req = pmb_mysql_query($rqt, $dbh) or die('Erreur SQL !<br />'.$rqt.'<br />'.pmb_mysql_error());
849
850        $i=0;
851        $nb_page=0;
852        $indice_page=0;
853        while ($data = pmb_mysql_fetch_array($req)) {
854                if ($nb_page==0 && $i==$nb_1ere_page) {
855                        $ourPDF->addPage();
856                        $nb_page++;
857                        $indice_page = 0 ;
858                } elseif ((($nb_page>=1) && ((($i-$nb_1ere_page) % $nb_par_page)==0)) || ($ourPDF->GetY()>$limite_after_list)) {
859                        $ourPDF->addPage();
860                        $nb_page++;
861                        $indice_page = 0 ;
862                }
863
864                if ($nb_page==0) {
865                        $pos_page = $debut_expl_1er_page+$taille_bloc_expl*$indice_page;
866                } else {
867                        $pos_page = $debut_expl_page+$taille_bloc_expl*$indice_page;
868                }
869                notice_resa_planning ($data['id_resa'],$marge_page_gauche,$pos_page,($largeur_page - $marge_page_droite - $marge_page_gauche), 10,$dbh);
870                $i++;
871                $indice_page++;
872                //echo "<br /> $i ";
873        }
874        //echo "<br />pos_page: $pos_page <br />taille_bloc_expl: $taille_bloc_expl <br />limite_after_list: $limite_after_list "; exit ;
875        $ourPDF->setFont($pmb_pdf_font, '', 12);
876        // dépassement sur autre page de cette partie
877        if (($pos_page+$taille_bloc_expl)>$limite_after_list) {
878                $ourPDF->addPage();
879                $pos_after_list = $debut_expl_page;
880        } else {
881                $pos_after_list = $pos_page+$taille_bloc_expl;
882        }
883        $ourPDF->SetXY ($marge_page_gauche,($pos_after_list));
884        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 8, $after_list."\n\n", 0, 'J', 0);
885        $ourPDF->setFont($pmb_pdf_font, 'I', 12);
886        $ourPDF->multiCell(($largeur_page - $marge_page_droite - $marge_page_gauche), 8, $fdp, 0, 'R', 0);
887} // fin lettre_resa_planning_par_lecteur
888
889
890
891// ************************* Imprime la ligne de resa pour une notice sur la lettre de confirmation de réservation
892function notice_resa($id_resa_print, $x, $y, $largeur, $retrait, $link) {
893
894        global $ourPDF;
895        global $msg;
896        global $pmb_pdf_font;
897        global $pmb_transferts_actif,$transferts_choix_lieu_opac;
898
899        $dates_resa_sql = " date_format(resa_date_debut, '".$msg["format_date"]."') as aff_resa_date_debut, date_format(resa_date_fin, '".$msg["format_date"]."') as aff_resa_date_fin " ;
900        $requete = "SELECT notices_m.notice_id as m_id, notices_s.notice_id as s_id, resa_date_debut, resa_date_fin, resa_cb, resa_loc_retrait, ";
901        $requete .= "trim(concat(if(series_m.serie_name <>'', if(notices_m.tnvol <>'', concat(series_m.serie_name,', ',notices_m.tnvol,'. '), concat(series_m.serie_name,'. ')), if(notices_m.tnvol <>'', concat(notices_m.tnvol,'. '),'')), ";
902        $requete .= "if(series_s.serie_name <>'', if(notices_s.tnvol <>'', concat(series_s.serie_name,', ',notices_s.tnvol,'. '), series_s.serie_name), if(notices_s.tnvol <>'', concat(notices_s.tnvol,'. '),'')), ";
903        $requete .= "ifnull(notices_m.tit1,''),ifnull(notices_s.tit1,''),' ',ifnull(bulletin_numero,''), if (mention_date, concat(' (',mention_date,')') ,''))) as tit, ".$dates_resa_sql ;
904        $requete .= "FROM (((resa LEFT JOIN notices AS notices_m ON resa_idnotice = notices_m.notice_id ";
905        $requete .= "LEFT JOIN series AS series_m ON notices_m.tparent_id = series_m.serie_id ) ";
906        $requete .= "LEFT JOIN bulletins ON resa_idbulletin = bulletins.bulletin_id) ";
907        $requete .= "LEFT JOIN notices AS notices_s ON bulletin_notice = notices_s.notice_id ";
908        $requete .= "LEFT JOIN series AS series_s ON notices_s.tparent_id = series_s.serie_id ) ";
909        $requete .= "WHERE id_resa='".$id_resa_print."' ";
910
911        $res = pmb_mysql_query($requete, $link) or die (pmb_mysql_error()." $requete");
912        $expl = pmb_mysql_fetch_object($res);
913
914        $responsabilites = get_notice_authors(($expl->m_id+$expl->s_id)) ;
915        $as = array_search ("0", $responsabilites["responsabilites"]) ;
916        if ($as!== FALSE && $as!== NULL) {
917                $auteur_0 = $responsabilites["auteurs"][$as] ;
918                $auteur = new auteur($auteur_0["id"]);
919                $header_aut .= $auteur->isbd_entry;
920        } else {
921                        $aut1_libelle=array();
922                        $as = array_keys ($responsabilites["responsabilites"], "1" ) ;
923                for ($i = 0 ; $i < count($as) ; $i++) {
924                        $indice = $as[$i] ;
925                        $auteur_1 = $responsabilites["auteurs"][$indice] ;
926                        $auteur = new auteur($auteur_1["id"]);
927                        $aut1_libelle[]= $auteur->isbd_entry;
928                }
929
930                $header_aut .= implode (", ",$aut1_libelle) ;
931        }
932        $header_aut ? $auteur=" / ".$header_aut : $auteur="";
933
934        $rqt_detail = "select resa_confirmee, resa_cb,location_libelle, expl_cote from resa
935        left join exemplaires on expl_cb=resa_cb
936        left join docs_location on idlocation=expl_location
937        where id_resa =$id_resa_print  and resa_cb is not null and resa_cb!='' ";
938        $res_detail = pmb_mysql_query($rqt_detail) ;
939        $expl_detail = pmb_mysql_fetch_object($res_detail);
940
941        $ourPDF->SetXY ($x,$y);
942        $ourPDF->setFont($pmb_pdf_font, 'BU', 10);
943        $ourPDF->multiCell(($largeur - $x), 5, $expl->tit.$auteur,0, 'L', 0);
944        $ourPDF->SetXY ($x+$retrait,$y+7);
945        $ourPDF->setFont($pmb_pdf_font, '', 10);
946        $ourPDF->multiCell(($largeur - $retrait - $x), 7, strip_tags($msg[291]." : ".$expl_detail->resa_cb." $msg[296] : ".$expl_detail->expl_cote), 0, 'L', 0);
947        $ourPDF->SetXY ($x+$retrait,$y+10);
948        $ourPDF->setFont($pmb_pdf_font, '', 10);
949        $ourPDF->multiCell(($largeur - $retrait - $x), 10, $msg['fpdf_valide']." ".$expl->aff_resa_date_debut."  ".$msg['fpdf_valable']." ", 0, 'L', 0);
950        $ourPDF->SetXY (($x+$retrait+65),$y+10);
951        $ourPDF->setFont($pmb_pdf_font, 'B', 10);
952        $ourPDF->multiCell(($largeur - $x - $retrait - 65), 10, $expl->aff_resa_date_fin, 0, 'L', 0);
953
954        if($pmb_transferts_actif && $transferts_choix_lieu_opac==3) {
955                $rqt = "select resa_confirmee, resa_cb,resa_loc_retrait from resa where id_resa =$id_resa_print  and resa_cb is not null and resa_cb!='' ";
956                $res = pmb_mysql_query($rqt) ;
957                if(($resa_lue = pmb_mysql_fetch_object($res))) {
958                        if ($resa_lue->resa_confirmee) {
959                                if ($resa_lue->resa_loc_retrait) {
960                                        $loc_retait=$resa_lue->resa_loc_retrait;
961                                } else {
962                                        $rqt = "select expl_location from exemplaires where expl_cb='".$resa_lue->resa_cb."' ";
963                                        $res = pmb_mysql_query($rqt) ;
964                                        if(($res_expl = pmb_mysql_fetch_object($res))) {
965                                                $loc_retait=$res_expl->expl_location;
966                                        }
967                                }
968                                $rqt = "select location_libelle from docs_location where idlocation=".$loc_retait;
969                                $res = pmb_mysql_query($rqt) ;
970                                if(($res_expl = pmb_mysql_fetch_object($res))) {
971                                        $lieu_retrait=str_replace("!!location!!",$res_expl->location_libelle,$msg["resa_lettre_lieu_retrait"]);
972                                }
973                                $ourPDF->SetXY (($x+$retrait+110),$y+8);
974                                $ourPDF->setFont($pmb_pdf_font, 'B', 10);
975                                $ourPDF->multiCell(($largeur - $x - $retrait - 82), 8, $lieu_retrait, 0, 'L', 0);
976                        }
977                }
978        } else {
979                $ourPDF->SetXY (($x+$retrait+110),$y+8);
980                $ourPDF->setFont($pmb_pdf_font, 'B', 10);
981                $lieu_retrait=str_replace("!!location!!",$expl_detail->location_libelle,$msg["resa_lettre_lieu_retrait"]);
982                $ourPDF->multiCell(($largeur - $x - $retrait - 82), 8, $lieu_retrait, 0, 'L', 0);
983        }
984
985} /* fin notice_resa */
986
987
988function notice_resa_planning($id_resa_print, $x, $y, $largeur, $retrait, $link) {
989
990        global $ourPDF;
991        global $msg;
992        global $pmb_pdf_font;
993
994        $dates_resa_sql = " date_format(resa_date_debut, '".$msg["format_date"]."') as aff_resa_date_debut, date_format(resa_date_fin, '".$msg["format_date"]."') as aff_resa_date_fin " ;
995        $requete = "SELECT notices_m.notice_id as m_id, notices_s.notice_id as s_id, resa_date_debut, resa_date_fin, ";
996        $requete .= "trim(concat(if(series_m.serie_name <>'', if(notices_m.tnvol <>'', concat(series_m.serie_name,', ',notices_m.tnvol,'. '), concat(series_m.serie_name,'. ')), if(notices_m.tnvol <>'', concat(notices_m.tnvol,'. '),'')), ";
997        $requete .= "if(series_s.serie_name <>'', if(notices_s.tnvol <>'', concat(series_s.serie_name,', ',notices_s.tnvol,'. '), series_s.serie_name), if(notices_s.tnvol <>'', concat(notices_s.tnvol,'. '),'')), ";
998        $requete .= "ifnull(notices_m.tit1,''),ifnull(notices_s.tit1,''),' ',ifnull(bulletin_numero,''), if (mention_date, concat(' (',mention_date,')') ,''))) as tit, ".$dates_resa_sql ;
999        $requete .= "FROM (((resa_planning LEFT JOIN notices AS notices_m ON resa_idnotice = notices_m.notice_id ";
1000        $requete .= "LEFT JOIN series AS series_m ON notices_m.tparent_id = series_m.serie_id ) ";
1001        $requete .= "LEFT JOIN bulletins ON resa_idbulletin = bulletins.bulletin_id) ";
1002        $requete .= "LEFT JOIN notices AS notices_s ON bulletin_notice = notices_s.notice_id ";
1003        $requete .= "LEFT JOIN series AS series_s ON notices_s.tparent_id = series_s.serie_id ) ";
1004        $requete .= "WHERE id_resa='".$id_resa_print."' ";
1005
1006        $res = pmb_mysql_query($requete, $link) or die (pmb_mysql_error()." $requete");
1007        $expl = pmb_mysql_fetch_object($res);
1008
1009        $responsabilites = get_notice_authors($expl->notice_id) ;
1010        $as = array_search ("0", $responsabilites["responsabilites"]) ;
1011        if ($as!== FALSE && $as!== NULL) {
1012                $auteur_0 = $responsabilites["auteurs"][$as] ;
1013                $auteur = new auteur($auteur_0["id"]);
1014                $header_aut .= $auteur->isbd_entry;
1015        } else {
1016                $aut1_libelle=array();
1017                $as = array_keys ($responsabilites["responsabilites"], "1" ) ;
1018                for ($i = 0 ; $i < count($as) ; $i++) {
1019                        $indice = $as[$i] ;
1020                        $auteur_1 = $responsabilites["auteurs"][$indice] ;
1021                        $auteur = new auteur($auteur_1["id"]);
1022                        $aut1_libelle[]= $auteur->isbd_entry;
1023                }
1024                $header_aut .= implode (", ",$aut1_libelle) ;
1025        }
1026        $header_aut ? $auteur=" / ".$header_aut : $auteur="";
1027
1028        $ourPDF->SetXY ($x,$y);
1029        $ourPDF->setFont($pmb_pdf_font, 'BU', 10);
1030        $ourPDF->multiCell(($largeur - $x), 8, $expl->tit.$auteur, 0, 'L', 0);
1031
1032        $ourPDF->SetXY ($x+$retrait,$y+4);
1033        $ourPDF->setFont($pmb_pdf_font, '', 10);
1034        $ourPDF->multiCell(($largeur - $retrait - $x), 8, $msg['resa_planning_date_debut']." ".$expl->aff_resa_date_debut." ".$msg['resa_planning_date_fin']." ".$expl->aff_resa_date_fin, 0, 'L', 0);
1035} /* fin notice_resa */
Note: See TracBrowser for help on using the repository browser.