source: pmb4.2/trunk/fuentes/pmb/circ/listado-carnets.inc.php @ 828

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

WIP in lliurex features and modifications 4

File size: 7.8 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5
6// $Id: carte-lecteur.inc.php,v 1.9 2007/03/10 09:03:17 touraine37 Exp $
7if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");
8
9// la largeur de la zone pour le nom
10$var = "pdfcartelecteur_largeur_nom";
11$largeur_nom = $$var;
12
13// la position en X
14$var = "pdfcartelecteur_pos_h";
15$pos_x = $$var;
16
17// la position en Y
18$var = "pdfcartelecteur_pos_v";
19$pos_y = $$var;
20
21// Valable du
22$var = "pdfcartelecteur_valabledu";
23$valabledu = $$var;
24// au
25$var = "pdfcartelecteur_valableau";
26$valableau = $$var;
27// Carte N°
28$var = "pdfcartelecteur_carteno";
29$carteno = $$var;
30
31// le texte qui apparait juste au dessus du code-barre
32$var = "pdfcartelecteur_biblio_name";
33eval ("\$bibli_name=\"".$$var."\";");
34
35// PARAMETRES
36// ----------
37//   cb_first : code barre de début
38//   nbr_cb : nombre de codes-barres à produire
39
40$cb_first="100000";
41$nbr_cb=1;
42
43define("CBG_NBR_X_CELLS",        4);     // Nombre d'étiquettes en largeur sur la page
44define("CBG_NBR_Y_CELLS",        19);     // Nombre d'étiquettes en hauteur
45
46
47// marges, mesures en mm
48
49define("CBG_LEFT_MARGIN",        6);
50define("CBG_RIGHT_MARGIN",       6);
51
52define("CBG_TOP_MARGIN",         13);
53define("CBG_BOTTOM_MARGIN",      13);
54
55
56// marges intérieures du bord de l'étiquette au code barre, mesures en mm
57
58define("CBG_INNER_LEFT_MARGIN",   4);
59define("CBG_INNER_RIGHT_MARGIN",  4);
60
61define("CBG_INNER_TOP_MARGIN",    1);
62define("CBG_INNER_BOTTOM_MARGIN", 1);
63
64
65// place allouée au nom de la bibliothèque, mesure en mm
66define("CBG_TEXT_HEIGHT",         2);
67// Taille de la police, en points
68
69define("CBG_TEXT_FONT_SIZE",      6);
70// Taille du texte du code-barre, 1 : le plus petit ; 5 : le plus grand
71define("CBG_CB_TEXT_SIZE",        3);
72
73// Résolution du code barre. Si vous augmentez ce paramètre, il faudra peut-être
74// augmenter la taille de la police. Une valeur faible produit un fichier moins volumineux
75define("CBG_CB_RES",              5);
76
77// l'apparence du code barre dépend étroitement de la résolution et de la taille du texte
78
79// Démarrage et configuration du pdf
80
81// FUNCIONES
82function str_squeeze($test) {
83    return trim(ereg_replace( ' +', '', $test));
84}
85
86function f_rellena_ceros($as_dato) {
87        if(strlen($as_dato)>0 && strlen($as_dato)<9){
88                for($i=strlen($as_dato); $i<9; $i++)
89                        $as_dato="0".$as_dato;
90        }
91               
92        return $as_dato;       
93}
94
95function getCodesRango($min, $max, $link) {
96        $matriz=array();
97        $query = "SELECT empr_cb FROM `empr`  WHERE convert(`empr_cb`, unsigned) BETWEEN " . $min . " AND " . $max;
98        //$query = "SELECT empr_cb FROM empr WHERE empr_cb >= '" . $min . "' AND empr_cb<='" . $max . "'";
99
100        $resultData = mysql_query($query, $link);
101
102        if (mysql_num_rows($resultData) != 0) {
103                while ($rowData = mysql_fetch_array($resultData))       
104                        $matriz[]= $rowData['empr_cb'];         
105        }
106        mysql_free_result($resultData);
107        return $matriz;
108}
109
110// Funcion que recoge lo introducido en la caja de texto del formulario y retorna una matriz de los codigos.
111function getUsersCodes ($codigos, $link2) {
112        $matriz=array();
113        $codigos=str_squeeze($codigos);
114
115        if((strpos($codigos, ",")!== false)) 
116                $aux=explode(",",$codigos);
117        else 
118                $aux=$codigos;
119       
120        if (is_array($aux)) {
121                foreach ($aux as $codi) {
122                        if(strpos($codi, "-") === false)
123                                $matriz[]= $codi;
124                        else if (strpos($codi, "-") !== false) { 
125                                $aux2=explode("-",$codi);
126                                if ($aux2[0]<$aux2[1]) 
127                                        $m2=getCodesRango($aux2[0], $aux2[1], $link2);
128                                else
129                                        $m2=getCodesRango($aux2[1], $aux2[0], $link2); 
130                                $matriz= array_merge($matriz, $m2); // Añadimos los codigos del rango                             
131                               
132                        }
133                }
134        }
135        elseif ($aux === "*"){
136                        $q ='SELECT empr_cb FROM empr';
137
138                        $resultData = @mysql_query($q, $link2);
139                        if (@mysql_num_rows($resultData) != 0) {
140                                while ($rowData = mysql_fetch_array($resultData))       
141                                        $matriz[]= $rowData['empr_cb'];                         
142                        }
143                        mysql_free_result($resultData);
144        }
145        else {
146                if(strpos($aux, "-") === false)
147                        $matriz[]= $aux;               
148                else if (strpos($aux, "-") !== false) { 
149                        $aux2=explode("-",$aux);
150                        if ($aux2[0]<$aux2[1]) 
151                                $matriz=getCodesRango($aux2[0], $aux2[1], $link2);
152                        else
153                                $matriz=getCodesRango($aux2[1], $aux2[0], $link2);     
154                }
155        }
156        return $matriz;
157}
158
159
160//Inicialmente cargamos el formulario de entrada de codigos
161$codigos=$_GET['empr_cb'];
162
163// Mostramos los carnets de usuario
164$base_noheader = 1;
165require_once ("$base_path/includes/init.inc.php");
166require("$base_path/includes/db_param.inc.php");
167
168$link2 = @mysql_connect(SQL_SERVER, USER_NAME, USER_PASS) OR die("Error MySQL");
169
170// Desglosamos los códigos introducidos
171$matriz=getUsersCodes($codigos,$link2);         
172
173
174// Démarrage et configuration du pdf
175$nom_classe=$fpdf."_Etiquette";
176$ourPDF=new $nom_classe(CBG_NBR_X_CELLS, CBG_NBR_Y_CELLS);
177$ourPDF->Open();
178$ourPDF->addPage();
179$ourPDF->SetPageMargins(CBG_TOP_MARGIN, CBG_BOTTOM_MARGIN, CBG_LEFT_MARGIN, CBG_RIGHT_MARGIN);
180
181$col=0;
182$row=0;
183$pos_x_save= $pos_x;
184$pos_y_save= $pos_y;
185
186foreach ($matriz as $codigo) {
187
188       
189        $query = "SELECT id_empr, empr_cb, empr_nom, empr_prenom, 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 empr_cb='$codigo' LIMIT 1 ";
190
191        $res = mysql_query($query, $link2);
192        $nrow  = mysql_num_rows($res);
193
194        //echo "SQL: $query <br>";
195        //echo "Numero de registros:" . $nrow;
196
197        // Comprobar si no retorna nada la consulta SQL no tenemos que generar el codigo de barras
198        if ($nrow != 0) {       
199                $empr = mysql_fetch_object($res);               
200               
201                $xpos_top = 12;
202                $ypos_left = 0;
203
204                $ourPDF->SetFont($pmb_pdf_font, '', 14);
205                $ourPDF->SetXY(($pos_x+40 - $largeur_nom/2), $pos_y);
206                $ourPDF->MultiCell($largeur_nom, 7, trim($empr->empr_prenom)." ".trim($empr->empr_nom), 0, "C", 0);
207
208                $largeur_carteno = 70;
209                $ourPDF->SetFont($pmb_pdf_font, '', 10);
210                $ourPDF->SetXY(($pos_x+40 - $largeur_carteno/2), $pos_y+30);
211                $ourPDF->MultiCell($largeur_carteno, 8, $carteno." ".trim($empr->empr_cb), 0, "C", 0);
212
213                $largeur_valable = 70;
214                $ourPDF->SetFont($pmb_pdf_font, '', 10);
215                $ourPDF->SetXY(($pos_x+40 - $largeur_valable/2), $pos_y+35);
216                $ourPDF->MultiCell($largeur_valable, 8, $valabledu." ".trim($empr->aff_empr_date_adhesion)." ".$valableau." ".trim($empr->aff_empr_date_expiration), 0, "C", 0);
217
218                $xpos = $pos_x + 16 ;
219                $ypos = $pos_y+16 ;
220       
221                // Código de barras
222                $ourPDF->SetFont($pmb_pdf_font, '', CBG_TEXT_FONT_SIZE);
223                $ourPDF->SetCBFontSize(CBG_CB_TEXT_SIZE);
224                $ourPDF->SetCBXRes(CBG_CB_RES);
225                $ourPDF->SetCBStyle(BCS_ALIGN_CENTER | BCS_BORDER | BCS_DRAW_TEXT);
226                $cbwidth = $ourPDF->GetStickWidth() - CBG_INNER_LEFT_MARGIN - CBG_INNER_RIGHT_MARGIN;
227                $cbheight = $ourPDF->GetStickHeight() - CBG_INNER_TOP_MARGIN - CBG_INNER_BOTTOM_MARGIN;
228                if ($bibli_name != '') $cbheight -= CBG_TEXT_HEIGHT;
229                if ($bibli_name != "") {
230                        $ourPDF->SetXY($xpos, $ypos + CBG_INNER_BOTTOM_MARGIN);
231                        $ourPDF->Cell($ourPDF->GetStickWidth(), CBG_TEXT_HEIGHT, $bibli_name, 0, 0, 'C');
232                        }
233                $x = $xpos + CBG_INNER_LEFT_MARGIN;
234                $y = $ypos + CBG_INNER_TOP_MARGIN;
235                if ($bibli_name != "") $y += CBG_TEXT_HEIGHT;
236                $ourPDF->DrawBarcode(trim($empr->empr_cb), $x, $y, $cbwidth, $cbheight, 'c39');
237                // Fin codigo de barras
238
239                $ourPDF->SetLineWidth(1);
240                $ourPDF->Rect($pos_x+10, $pos_y+14, 60, 17, "D");
241
242                // Siguiente carnet
243       
244                if ($row<=3) {
245                        if ($col==0) {
246                                // Segunda Columna
247                                $pos_x=$posx+110;               
248                                $col=1;                 
249                        }
250                        else {
251                                // Inicializamos la columna
252                                $pos_x=$pos_x_save;
253                                $col=0; 
254                                // Control de la fila
255                                $pos_y = $pos_y + 70; // Siguiente fila                 
256                                $row = $row + 1; // Controlamos la fila
257                                if ($row==4) {   //Cambio de página
258                                        $pos_y=$pos_y_save; 
259                                        $pos_x=$pos_x_save;
260                                        $row=$col=0;
261                                        $ourPDF->addPage();
262                                }
263                        }
264                } 
265        }
266}
267// Generamos PDF
268$ourPDF->Output();             
269
270?>
Note: See TracBrowser for help on using the repository browser.