source: pmb4.1/trunk/fuentes/pmb/classes/lettre.class.php @ 478

Last change on this file since 478 was 478, checked in by mabarracus, 4 years ago

copy trusty code 4.1

  • Property svn:executable set to *
File size: 25.1 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: lettre.class.php,v 1.3 2013-04-17 08:37:34 mbertin Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.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
16class lettre{
17       
18        var $biblio_info = "";
19        var $lecteur_info = "";
20        var $groupe_info = "";
21        var $amendes_info = "";
22        var $expl_info = "";
23        var $idempr = 0;
24        var $id_groupe = 0;
25        var $lettreXml = "";
26        var $entete = "";
27        var $type_lettre = "";
28       
29        /*
30         * Constructeur
31         */
32        function lettre($id_empr=0,$type_lettre="",$id_groupe=0){
33                $this->idempr = $id_empr;
34                $this->type_lettre = $type_lettre;
35                $this->id_groupe = $id_groupe;
36                $this->entete = "<header>\n";
37                $this->biblio_info();
38                if($id_groupe){
39                        $this->groupe_info($this->id_groupe);
40                        $this->entete .= $this->biblio_info.$this->groupe_info.$this->lecteur_info;
41                } else {
42                        $this->lecteur_info($this->idempr);
43                        $this->entete .= $this->biblio_info.$this->lecteur_info;
44                }
45                $this->entete .= "</header>\n"; 
46                $this->construire_xml($this->type_lettre);
47        }
48       
49        /*
50         * Retourne le Xml bien formé
51         */
52        function getXml(){
53                return $this->lettreXml;
54        }
55       
56        function construire_xml($type_lettre){
57                $this->lettreXml .= "<lettre>\n";
58                $this->lettreXml .= $this->entete;
59                $this->lettreXml .= "</lettre>\n";
60        }
61       
62        /*
63         * Bloc d'info de la biblio
64         */
65        function biblio_info() {
66       
67                global $biblio_name, $biblio_logo, $biblio_adr1, $biblio_adr2, $biblio_cp, $biblio_town, $biblio_state, $biblio_country, $biblio_phone, $biblio_email, $biblio_website ;
68                global $msg, $charset ;
69               
70                $this->biblio_info="\t<library>\n";
71                 
72                // afin de ne générer qu'une fois l'adr et compagnie
73                if ($this->biblio_info) {
74                        if ($biblio_name != "") $this->biblio_info .= "\t\t<name>".htmlspecialchars($biblio_name,ENT_QUOTES,$charset)."</name>\n";
75                        if ($biblio_adr1 != "") $this->biblio_info .= "\t\t<adr1>".htmlspecialchars($biblio_adr1,ENT_QUOTES,$charset)."</adr1>\n";
76                        if ($biblio_cp != "") $this->biblio_info .= "\t\t<cp>".htmlspecialchars($biblio_cp,ENT_QUOTES,$charset)."</cp>\n";
77                        if ($biblio_adr2 != "") $this->biblio_info .= "\t\t<adr2>".htmlspecialchars($biblio_adr2,ENT_QUOTES,$charset)."</adr2>\n";
78                        if ($biblio_state != "") $this->biblio_info .= "\t\t<state>".htmlspecialchars($biblio_state,ENT_QUOTES,$charset)."</state>\n";
79                        if ($biblio_town != "") $this->biblio_info .= "\t\t<town>".htmlspecialchars($biblio_town,ENT_QUOTES,$charset)."</town>\n";
80                        if ($biblio_phone != "") $this->biblio_info .= "\t\t<phone>".htmlspecialchars($msg['lettre_titre_tel'].$biblio_phone,ENT_QUOTES,$charset)."</phone>\n ";
81                        if ($biblio_email != "") $this->biblio_info .= "\t\t<mail>@ : ".htmlspecialchars($biblio_email,ENT_QUOTES,$charset)."</mail>\n ";
82                        if ($biblio_website != "") $this->biblio_info .= "\t\t<website>Web : ".htmlspecialchars($biblio_website,ENT_QUOTES,$charset)."</website>\n";
83                        if ($biblio_country != "") $this->biblio_info .= "\t\t<country>".htmlspecialchars($biblio_country,ENT_QUOTES,$charset)."</country>\n";
84                }
85                       
86                if ($biblio_logo) $this->biblio_info .= "\t\t<logo>./images/".htmlspecialchars($biblio_logo,ENT_QUOTES,$charset)."</logo>\n";
87               
88                $this->biblio_info .= "\t</library>\n"; 
89        } 
90       
91        /*
92         * Bloc info du lecteur
93         */
94        function lecteur_info($id_empr){
95               
96                global $msg, $dbh,$charset,$niveau, $forcename;
97               
98                $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 ";
99                $lib_all_groupes=pmb_sql_value($requete);
100                if ($lib_all_groupes) 
101                        $lib_all_groupes = "\t\t<lib_all_groupes>".htmlspecialchars($lib_all_groupes,ENT_QUOTES,$charset)."</lib_all_groupes>\n"; 
102               
103                $concerne="";
104                $temp_id_empr=$id_empr;
105               
106                if(!$forcename){
107                        //Recherche du groupe d'appartenance
108                        $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";
109                        $res=mysql_query($requete);
110                        if(mysql_num_rows($res)) {
111                                $temp_id_empr=mysql_result($res,0,1);
112                        } else  $temp_id_empr=$id_empr;
113                       
114                        //Si le responsable n'est pas l'emprunteur, on précise qui est relancé
115                        if ($temp_id_empr!=$id_empr) {
116                                $requete="select concat(empr_prenom,' ',empr_nom) from empr where id_empr=$id_empr"; //Idée de Quentin
117                                $res=mysql_query($requete);
118                                $concerne="\t\t<concerne>".htmlspecialchars(sprintf($msg["adresse_retard_concerne"],mysql_result($res,0,0)),ENT_QUOTES,$charset)."</concerne>\n";
119                        } 
120                }       
121               
122                $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='$temp_id_empr' ";
123                $res = mysql_query($requete, $dbh);
124                $empr = mysql_fetch_object($res);
125
126                $this->lecteur_info = "\t<patron>\n";
127                $this->lecteur_info .= "\t\t<id>".htmlspecialchars($id_empr,ENT_QUOTES,$charset)."</id>\n";
128                $this->lecteur_info .= "\t\t<name>".htmlspecialchars($empr->empr_prenom,ENT_QUOTES,$charset)."</name>\n";
129                $this->lecteur_info .= "\t\t<surname>".htmlspecialchars($empr->empr_nom,ENT_QUOTES,$charset)."</surname>\n";
130       
131       
132                if ($empr->empr_adr1 != "") $this->lecteur_info .= "\t\t<adr1>".htmlspecialchars($empr->empr_adr1,ENT_QUOTES,$charset)."</adr1>\n" ;
133                if ($empr->empr_adr2 != "") $this->lecteur_info .= "\t\t<adr2>".htmlspecialchars($empr->empr_adr2,ENT_QUOTES,$charset)."</adr2>\n" ;
134                if ($empr->empr_cp != "") $this->lecteur_info .= "\t\t<cp>".htmlspecialchars($empr->empr_cp,ENT_QUOTES,$charset)."</cp>\n";
135                if ($empr->empr_ville != "") $this->lecteur_info .= "\t\t<town>".htmlspecialchars($empr->empr_ville,ENT_QUOTES,$charset)."</town>\n" ;
136                if ($empr->empr_pays != "") $this->lecteur_info .= "\t\t<country>".htmlspecialchars($empr->empr_pays,ENT_QUOTES,$charset)."</country>\n" ;
137                if ($empr->empr_tel1 != "") 
138                        $this->lecteur_info .= "\t\t<phone1>".htmlspecialchars($msg['fpdf_tel1']." ".$empr->empr_tel1,ENT_QUOTES,$charset)."</phone1>\n" ;
139                if ($empr->empr_tel2 != "") 
140                        $this->lecteur_info .= "\t\t<phone2>".htmlspecialchars($msg['fpdf_tel2']." ".$empr->empr_tel2,ENT_QUOTES,$charset)."</phone2>\n";
141                if ($empr->empr_mail != "")
142                        $this->lecteur_info .= "\t\t<mail>".htmlspecialchars($empr->empr_mail,ENT_QUOTES,$charset)."</mail>\n"; 
143
144                if($empr->empr_cb)
145                        $this->lecteur_info .= "\t\t<cb>".htmlspecialchars($msg['fpdf_carte']." ".$empr->empr_cb,ENT_QUOTES,$charset)."</cb>\n";
146                if($empr->aff_empr_date_adhesion)       
147                        $this->lecteur_info .= "\t\t<subscripion_date>".htmlspecialchars($empr->aff_empr_date_adhesion,ENT_QUOTES,$charset)."</subscripion_date>\n";
148                if($empr->aff_empr_date_expiration)
149                        $this->lecteur_info .= "\t\t<deadline>".htmlspecialchars($empr->aff_empr_date_expiration,ENT_QUOTES,$charset)."</deadline>\n";
150                       
151                $this->lecteur_info .= $lib_all_groupes;
152                $this->lecteur_info .= $concerne;
153                $this->lecteur_info .= "\t\t<empr_niveau>".$niveau."</empr_niveau>";
154               
155                $this->lecteur_info .= "\t</patron>\n";
156        }
157       
158        /*
159         * Info du groupe
160         */
161        function groupe_info($id_groupe,$no_cb=false) {
162                global $dbh, $charset;
163                global $pmb_pdf_font;
164                global $pmb_afficher_numero_lecteur_lettres;
165               
166                $requete = "SELECT libelle_groupe, resp_groupe  FROM groupe WHERE id_groupe='$id_groupe' ";
167                $res = mysql_query($requete, $dbh);
168                $groupe = mysql_fetch_object($res);
169               
170                $this->groupe_info = "\t<group>\n";
171                $this->groupe_info .= "\t\t<group_label>".htmlspecialchars($groupe->libelle_groupe,ENT_QUOTES,$charset)."</group_label>\n";
172                $this->groupe_info .= "\t</group>\n";
173               
174                if ($groupe->resp_groupe) {                     
175                        $this->lecteur_info($groupe->resp_groupe,0, $no_cb || !$pmb_afficher_numero_lecteur_lettres) ;
176                }
177        }
178       
179        /*
180         * Bloc des amendes
181         */
182        function print_amendes($valeur,$frais_relance) {
183                $this->amendes_info = "\t<fees>\n";
184                $this->amendes_info .= "\t\t<fees_amount>".htmlspecialchars(comptes::format_simple($valeur),ENT_QUOTES,$charset)."</fees_amount>\n";
185                $this->amendes_info .= "\t\t<postal_charge>".htmlspecialchars(comptes::format_simple($frais_relance),ENT_QUOTES,$charset)."</postal_charge>\n";
186                $this->amendes_info .= "\t\t<total>".htmlspecialchars(comptes::format_simple($valeur+$frais_relance),ENT_QUOTES,$charset)."</total>\n";
187                $this->amendes_info .= "\t</fees>\n";
188        }
189               
190}
191
192/*
193 * Récupération des données de la lettre de relance
194 */
195class lettre_relance extends lettre {
196
197        function lettre_relance($id_empr=0,$type_lettre,$id_groupe=0){
198                $this->lettre($id_empr,$type_lettre,$id_groupe);
199        }
200       
201        function construire_xml($type_lettre){
202                $this->lettreXml .= "<lettre>\n";
203                $this->lettreXml .= $this->entete;
204                $this->lettreXml .= "<specifics>\n"; 
205                switch($type_lettre){
206                        case 'liste_pret':
207                        case 'lettre_retard':
208                                $this->lettreXml .= $this->lettre_retard_par_lecteur($this->idempr);
209                                $this->lettreXml .= $this->amendes_info;
210                                break;
211                        case 'liste_pret_groupe':
212                        case 'lettre_retard_groupe':
213                                $this->lettreXml .= $this->lettre_retard_par_groupe($this->id_groupe);
214                                $this->lettreXml .= $this->amendes_info;
215                                break;
216                }               
217               
218                $this->lettreXml .= "</specifics>\n";   
219                $this->lettreXml .= "</lettre>\n";
220        }       
221       
222        function lettre_retard_par_lecteur($id_empr) {
223                global $dbh, $msg ,$pmb_gestion_financiere, $pmb_gestion_amende, $niveau;
224               
225                //Pour les amendes
226                $valeur=0;             
227                //Calcul des frais de relance
228                if (($pmb_gestion_financiere)&&($pmb_gestion_amende)) {
229                        $id_compte=comptes::get_compte_id_from_empr($id_empr,2);
230                        if ($id_compte) {
231                                $cpte=new comptes($id_compte);
232                                $frais_relance=$cpte->summarize_transactions("","",0,$realisee=-1);
233                                if ($frais_relance<0) $frais_relance=-$frais_relance; else $frais_relance=0;
234                        }
235                }
236               
237                if($niveau!=3) {
238                        $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 " ;
239                        $req = mysql_query($rqt, $dbh) or die($msg['err_sql'].'<br />'.$rqt.'<br />'.mysql_error()); 
240       
241                        while ($data = mysql_fetch_array($req)) {                       
242                                $valeur += $this->expl_retard ($data['expl_cb']);
243                        }               
244                        $this->print_amendes($valeur,$frais_relance);
245                                       
246                        $retards = "\t<retards>\n".$this->expl_info."\t</retards>\n";
247                } else {
248                       
249                        $requete="select expl_cb from exemplaires, pret where pret_idempr=$id_empr and pret_idexpl=expl_id and niveau_relance=3";
250                        $res_recouvre=mysql_query($requete);
251                        while ($rrc=mysql_fetch_object($res_recouvre)) {
252                                $liste_r3[]=$rrc->expl_cb;
253                        }       
254                        $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 " ;
255                        $req = mysql_query($rqt, $dbh) or die($msg['err_sql'].'<br />'.$rqt.'<br />'.mysql_error());           
256                        while ($data = mysql_fetch_object($req)) {
257                                // Pas répéter les retard si déjà en niveau 3
258                                if(in_array($data->expl_cb,$liste_r3)===false){
259                                        $liste_r[] = $data->expl_cb;
260                                }               
261                        }       
262               
263                        if($liste_r) {
264                                // Il y a des retard simple: on affiche d'abord les retards simples
265                                foreach($liste_r as $cb_expl) {
266                                        $valeur += $this->expl_retard ($cb_expl);               
267                                }
268                                // affiche retards niveau 3
269                                foreach($liste_r3 as $cb_expl) {
270                                        $valeur += $this->expl_retard ($cb_expl,3);                                                     
271                                }                       
272                                $this->print_amendes($valeur,$frais_relance);           
273                                $retards = "\t<retards>\n".$this->expl_info."\t</retards>\n";
274                        } else {
275                                // il n'y a que des retards niveau 3
276                                foreach($liste_r3 as $cb_expl) {
277                                        $valeur += $this->expl_retard ($cb_expl,3);
278                                        $retards .= $this->expl_info;                                                   
279                                }               
280                                $this->print_amendes($valeur,$frais_relance);
281                                $retards = "\t<retards>\n".$this->expl_info."\t</retards>\n";                           
282                        }                                       
283                }               
284               
285                return $retards;
286        } 
287       
288        function expl_retard($cb_doc,$niveau=0,$id_empr=0) {
289       
290                global $msg, $dbh, $charset;
291                global $pmb_gestion_financiere, $pmb_gestion_amende;
292                               
293                $valeur=0;
294                $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 " ;
295                $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.", " ;
296                $requete.= " notices_m.tparent_id, notices_m.tnvol " ; 
297                $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 ";
298                $requete.= " WHERE expl_cb='".$cb_doc."' and expl_typdoc = idtyp_doc and expl_section = idsection and expl_location = idlocation and pret_idexpl = expl_id  ";
299               
300                $res = mysql_query($requete, $dbh) or die (mysql_error()." $requete");
301                $expl = mysql_fetch_object($res);
302               
303                // récupération du titre de série
304                if ($expl->tparent_id && $expl->m_id) {
305                        $parent = new serie($expl->tparent_id);
306                        $tit_serie = $parent->name;
307                        if($expl->tnvol)
308                                $tit_serie .= ', '.$expl->tnvol;
309                }
310                if($tit_serie) {
311                        $expl->tit = $tit_serie.'. '.$expl->tit;
312                }       
313                $libelle=$expl->tdoc_libelle;
314                $responsabilites=get_notice_authors($expl->m_id) ;
315                //print_r($responsabilites);
316                $as = array_keys ($responsabilites["responsabilites"], "0" ) ;
317                for ($i = 0 ; $i < count($as) ; $i++) {
318                        $indice = $as[$i] ;
319                        $auteur_1 = $responsabilites["auteurs"][$indice] ;
320                        $auteur = new auteur($auteur_1["id"]);
321                        $aut1_libelle[]= $auteur->isbd_entry;
322                       
323                }
324                if ($aut1_libelle) {
325                        $auteurs_liste = implode ("; ",$aut1_libelle) ; 
326                        if ($auteurs_liste) $libelle .= ' / '. $auteurs_liste;
327                       
328                }       
329                $libelle=$expl->tit." (".$libelle.")" ;
330               
331                $this->expl_info .= " \t<expl>\n";
332                $this->expl_info .= "\t\t<label>".htmlspecialchars($libelle,ENT_QUOTES,$charset)."</label>\n";
333                $this->expl_info .= "\t\t<loan_date>".htmlspecialchars($expl->aff_pret_date,ENT_QUOTES,$charset)."</loan_date>\n";
334                $this->expl_info .= "\t\t<return_date>".htmlspecialchars($expl->aff_pret_retour,ENT_QUOTES,$charset)."</return_date>\n";
335                $this->expl_info .= "\t\t<location>".htmlspecialchars($expl->location_libelle,ENT_QUOTES,$charset)."</location>\n";
336                $this->expl_info .= "\t\t<section>".htmlspecialchars($expl->section_libelle,ENT_QUOTES,$charset)."</section>\n";
337                $this->expl_info .= "\t\t<expl_cb>".htmlspecialchars($expl->expl_cb,ENT_QUOTES,$charset)."</expl_cb>\n";
338                $this->expl_info .= "\t\t<expl_cote>".htmlspecialchars($expl->expl_cote,ENT_QUOTES,$charset)."</expl_cote>\n"; 
339                $this->expl_info .= "\t\t<tdoc_label>".htmlspecialchars($expl->tdoc_libelle,ENT_QUOTES,$charset)."</tdoc_label>\n";
340                       
341                if (($pmb_gestion_financiere)&&($pmb_gestion_amende)) {
342                        $amende=new amende($expl->pret_idempr);
343                        $amd=$amende->get_amende($expl->expl_id);
344                        if ($amd["valeur"]) {
345                                $this->expl_info .= "\t\t<expl_fee>".htmlspecialchars(comptes::format_simple($amd["valeur"]),ENT_QUOTES,$charset)."</expl_fee>\n";
346                                $valeur=$amd["valeur"];
347                        }
348                }
349                if($niveau) $this->expl_info .= "\t\t<expl_niveau>3</expl_niveau>\n";
350                if($id_empr){
351                        $req_empr = "select empr_nom as nom, empr_prenom as prenom from empr where id_empr=$id_empr";
352                        $res = mysql_query($req_empr,$dbh);
353                        $empr = mysql_fetch_object($res);
354                        $this->expl_info .= "<empr_surname>".htmlspecialchars($empr->nom,ENT_QUOTES,$charset)."</empr_surname>";
355                        $this->expl_info .= "<empr_name>".htmlspecialchars($empr->prenom,ENT_QUOTES,$charset)."</empr_name>";
356                }
357               
358                $this->expl_info .= " \t</expl>\n";
359               
360                return $valeur;
361               
362        }
363       
364        function lettre_retard_par_groupe($id_groupe, $lecteurs_ids=array()) {
365
366                global $dbh, $msg;
367                global $pmb_hide_biblioinfo_letter;
368                       
369                if ($lecteurs_ids)
370                        $lecteur_ids_text = " AND id_empr in (".implode(",",$lecteurs_ids).")";
371                else
372                        $lecteur_ids_text = "";
373                       
374                $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 " ;
375                $req = mysql_query($rqt, $dbh) or die ($msg['err_sql'].'<br />'.$rqt.'<br />'.mysql_error()); 
376                while ($data = mysql_fetch_array($req)) {
377                        $this->expl_retard($data['expl_cb'],0,$data['empr_id']);
378                }
379                $retards = "\t<retards>".$this->expl_info."</retards>";
380               
381                return $retards;
382        } 
383}
384
385/*
386 * Récupération des données de la lettre de reservation
387 */
388class lettre_reservation extends lettre{
389       
390        var $id_empr_tmp = array();
391        var $notice_resa = "";
392        var $notice_resa_planning = "";
393       
394        function lettre_reservation($ids_resa=array(),$type_lettre){
395                global $dbh;
396               
397                if($type_lettre=='lettre_resa_planning'){
398                        $rqt = "select resa_idempr from resa_planning where id_resa in ('".implode("','",$ids_resa)."')  ";
399                        $res = mysql_query ($rqt, $dbh) ;
400                } else {
401                        $rqt = "select resa_idempr from resa where id_resa in ('".implode("','",$ids_resa)."') ";
402                        $res = mysql_query ($rqt, $dbh) ;
403                }       
404               
405                while (($resa_validee=mysql_fetch_object($res))){
406                        if(array_search($resa_validee->resa_idempr,$this->id_empr_tmp) === false){
407                                $this->lettre($resa_validee->resa_idempr,$type_lettre);
408                                $this->id_empr_tmp[]=$resa_validee->resa_idempr;       
409                        }
410                }
411        }
412       
413        function construire_xml($type_lettre){
414                $this->notice_resa = "";
415                $this->lettreXml .= "<lettre>\n";
416                $this->lettreXml .= $this->entete;
417                $this->lettreXml .= "<specifics>\n"; 
418                switch($type_lettre){
419                        case 'lettre_resa':
420                                $this->lettre_resa($this->idempr,$type_lettre);
421                                $this->lettreXml .= "<resas>".$this->notice_resa."</resas>";
422                                break;
423                        case 'lettre_resa_planning':
424                                $this->lettre_resa($this->idempr,$type_lettre);
425                                $this->lettreXml .= "<resas>".$this->notice_resa_planning."</resas>";
426                                break;
427                }               
428               
429                $this->lettreXml .= "</specifics>\n";   
430                $this->lettreXml .= "</lettre>\n";
431        }       
432       
433        function lettre_resa($id_empr,$type_lettre=""){
434                global $dbh;
435               
436                if($type_lettre == 'lettre_resa_planning'){
437                        $rqt = "select id_resa from resa_planning where resa_idempr='$id_empr' order by resa_date_debut " ;
438                        $req = mysql_query($rqt, $dbh) or die('Erreur SQL !<br />'.$rqt.'<br />'.mysql_error()); 
439                       
440                        while($resa = mysql_fetch_object($req)){
441                                $this->notice_resa_planning($resa->id_resa);
442                        }
443                } else {               
444                        $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 " ;
445                        $req = mysql_query($rqt, $dbh) or die('Erreur SQL !<br />'.$rqt.'<br />'.mysql_error()); 
446       
447                        while($resa = mysql_fetch_object($req)){
448                                $this->notice_resa($resa->id_resa);
449                        }
450                }               
451        }
452       
453        /*
454         * Info de la ligne de resa pour une notice sur la lettre de confirmation de réservation
455         */
456        function notice_resa($id_resa_print) {
457               
458               
459                global $msg, $dbh, $charset;
460                global $pmb_transferts_actif,$transferts_choix_lieu_opac;
461               
462                $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 " ;
463                $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, trim(concat(ifnull(notices_m.tit1,''),ifnull(notices_s.tit1,''),' ',ifnull(bulletin_numero,''), if (mention_date, concat(' (',mention_date,')') ,''))) as tit, ".$dates_resa_sql ;
464                $requete.= "FROM (((resa LEFT JOIN notices AS notices_m ON resa_idnotice = notices_m.notice_id ) LEFT JOIN bulletins ON resa_idbulletin = bulletins.bulletin_id) LEFT JOIN notices AS notices_s ON bulletin_notice = notices_s.notice_id) ";
465                $requete.= "WHERE id_resa='".$id_resa_print."' ";
466               
467                $res = mysql_query($requete, $dbh) or die (mysql_error()." $requete");
468                $expl = mysql_fetch_object($res);
469               
470                $responsabilites = get_notice_authors(($expl->m_id+$expl->s_id)) ;
471                $as = array_search ("0", $responsabilites["responsabilites"]) ;
472                if ($as!== FALSE && $as!== NULL) {
473                        $auteur_0 = $responsabilites["auteurs"][$as] ;
474                        $auteur = new auteur($auteur_0["id"]);
475                        $header_aut .= $auteur->isbd_entry;
476                } else {
477                                $aut1_libelle=array();
478                                $as = array_keys ($responsabilites["responsabilites"], "1" ) ;
479                        for ($i = 0 ; $i < count($as) ; $i++) {
480                                $indice = $as[$i] ;
481                                $auteur_1 = $responsabilites["auteurs"][$indice] ;
482                                $auteur = new auteur($auteur_1["id"]);
483                                $aut1_libelle[]= $auteur->isbd_entry;
484                        }
485                               
486                        $header_aut .= implode (", ",$aut1_libelle) ;
487                }
488                $header_aut ? $auteur=" / ".$header_aut : $auteur="";
489               
490                $rqt_detail = "select resa_confirmee, resa_cb,location_libelle, expl_cote from resa
491                left join exemplaires on expl_cb=resa_cb
492                left join docs_location on idlocation=expl_location
493                where id_resa =$id_resa_print  and resa_cb is not null and resa_cb!='' ";
494                $res_detail = mysql_query ($rqt_detail) ;
495                $expl_detail = mysql_fetch_object($res_detail);
496               
497                $this->notice_resa .= "\t\t<notice_resa>\n";
498                $this->notice_resa .= "\t<tit>".htmlspecialchars($expl->tit.$auteur,ENT_QUOTES,$charset)."</tit>\n";
499                $this->notice_resa .= "\t<author>".htmlspecialchars($auteur,ENT_QUOTES,$charset)."</author>\n";
500                $this->notice_resa .= "\t<resa_cb>".htmlspecialchars($expl->resa_cb,ENT_QUOTES,$charset)."</resa_cb>\n";
501                $this->notice_resa .= "\t<expl_cote>".htmlspecialchars($expl->expl_cote,ENT_QUOTES,$charset)."</expl_cote>\n";
502                $this->notice_resa .= "\t<start_date>".htmlspecialchars($expl->aff_resa_date_debut,ENT_QUOTES,$charset)."</start_date>\n";
503                $this->notice_resa .= "\t<deadline>".htmlspecialchars($expl->aff_resa_date_fin,ENT_QUOTES,$charset)."</deadline>\n";
504               
505                if($pmb_transferts_actif && $transferts_choix_lieu_opac==3) {
506                        $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!='' ";
507                        $res = mysql_query ($rqt) ;
508                        if(($resa_lue = mysql_fetch_object($res))) {
509                                if ($resa_lue->resa_confirmee) {
510                                        if ($resa_lue->resa_loc_retrait) {
511                                                $loc_retait=$resa_lue->resa_loc_retrait;
512                                        } else {
513                                                $rqt = "select expl_location from exemplaires where expl_cb='".$resa_lue->resa_cb."' ";
514                                                $res = mysql_query ($rqt) ;
515                                                if(($res_expl = mysql_fetch_object($res))) {   
516                                                        $loc_retait=$res_expl->expl_location;
517                                                }
518                                        }
519                                        $rqt = "select location_libelle from docs_location where idlocation=".$loc_retait;
520                                        $res = mysql_query ($rqt) ;
521                                        if(($res_expl = mysql_fetch_object($res))) {   
522                                                $lieu_retrait=str_replace("!!location!!",$res_expl->location_libelle,$msg["resa_lettre_lieu_retrait"]);                                         
523                                        }       
524                                        $this->notice_resa .= "\t\t<location>".htmlspecialchars($lieu_retrait,ENT_QUOTES,$charset)."</location>\n";     
525                                }
526                        }
527                } else {
528                        $lieu_retrait=str_replace("!!location!!",$expl_detail->location_libelle,$msg["resa_lettre_lieu_retrait"]);
529                        $this->notice_resa .= "\t\t<location>".htmlspecialchars($lieu_retrait,ENT_QUOTES,$charset)."</location>\n";     
530                }
531               
532                $this->notice_resa .="\t</notice_resa>\n";
533        } /* fin notice_resa */
534
535        /*
536         * Bloc d'info notice_resa_planning
537         */
538        function notice_resa_planning($id_resa_print) {
539       
540                global $msg, $dbh, $charset;
541               
542                $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 " ;
543                $requete = "SELECT notice_id, resa_date_debut, resa_date_fin, trim(tit1) as tit, ".$dates_resa_sql ;
544                $requete.= "FROM resa_planning LEFT JOIN notices ON resa_idnotice = notice_id  ";
545                $requete.= "WHERE id_resa='".$id_resa_print."' ";
546               
547                $res = mysql_query($requete, $dbh) or die (mysql_error()." $requete");
548                $expl = mysql_fetch_object($res);
549               
550                $responsabilites = get_notice_authors($expl->notice_id) ;
551                       
552                $as = array_search ("0", $responsabilites["responsabilites"]) ;
553                if ($as!== FALSE && $as!== NULL) {
554                        $auteur_0 = $responsabilites["auteurs"][$as] ;
555                        $auteur = new auteur($auteur_0["id"]);
556                        $header_aut .= $auteur->isbd_entry;
557                } else {
558                        $aut1_libelle=array();
559                        $as = array_keys ($responsabilites["responsabilites"], "1" ) ;
560                        for ($i = 0 ; $i < count($as) ; $i++) {
561                                $indice = $as[$i] ;
562                                $auteur_1 = $responsabilites["auteurs"][$indice] ;
563                                $auteur = new auteur($auteur_1["id"]);
564                                $aut1_libelle[]= $auteur->isbd_entry;
565                        }
566                        $header_aut .= implode (", ",$aut1_libelle) ;
567                }
568                $header_aut ? $auteur=" / ".$header_aut : $auteur="";
569               
570                $this->notice_resa_planning .= "\t<notice_resa>\n";
571                $this->notice_resa_planning .= "\t\t<tit>".htmlspecialchars($expl->tit,ENT_QUOTES,$charset)."</tit>\n";
572                $this->notice_resa_planning .= "\t\t<author>".htmlspecialchars($auteur,ENT_QUOTES,$charset)."</author>\n";
573                $this->notice_resa_planning .= "\t\t<start_date>".htmlspecialchars($expl->aff_resa_date_debut,ENT_QUOTES,$charset)."</start_date>\n";
574                $this->notice_resa_planning .= "\t\t<deadline>".htmlspecialchars($expl->aff_resa_date_fin,ENT_QUOTES,$charset)."</deadline>\n";
575                $this->notice_resa_planning .= "\t</notice_resa>\n";
576        }
577}
Note: See TracBrowser for help on using the repository browser.