source: pmb4.1/trunk/fuentes/pmb/classes/actes.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: 10.7 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2005 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: actes.class.php,v 1.36 2013-05-21 10:13:10 mbertin Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8global $pmb_indexation_lang;
9require_once($base_path.'/acquisition/achats/func_achats.inc.php');
10require_once($include_path.'/misc.inc.php');
11require_once($include_path.'/marc_tables/'.$pmb_indexation_lang.'/empty_words');
12
13require_once("$class_path/liens_actes.class.php");
14require_once("$class_path/audit.class.php");
15
16if(!defined('TYP_ACT_ALL')) define('TYP_ACT_ALL', -1);  //                              -1 = Tous types
17if(!defined('TYP_ACT_CDE')) define('TYP_ACT_CDE', 0);   //                              0 = Commande
18if(!defined('TYP_ACT_DEV')) define('TYP_ACT_DEV', 1);   //                              1 = Demande de devis
19if(!defined('TYP_ACT_LIV')) define('TYP_ACT_LIV', 2);   //                              2 = Bon de Livraison
20if(!defined('TYP_ACT_FAC')) define('TYP_ACT_FAC', 3);   //                              3 = Facture
21
22if(!defined('STA_ACT_ALL')) define('STA_ACT_ALL', -1);  //Statut acte   -1 = Tous
23if(!defined('STA_ACT_AVA')) define('STA_ACT_AVA', 1);   //                              1 = A valider
24if(!defined('STA_ACT_ENC')) define('STA_ACT_ENC', 2);   //                              2 = En cours
25if(!defined('STA_ACT_REC')) define('STA_ACT_REC', 4);   //                              4 = Reçu/Livré
26if(!defined('STA_ACT_FAC')) define('STA_ACT_FAC', 8);   //                              8 = Facturé
27if(!defined('STA_ACT_PAY')) define('STA_ACT_PAY', 16);  //                              16 = Payé
28if(!defined('STA_ACT_ARC')) define('STA_ACT_ARC', 32);  //                              32 = Archivé
29
30
31class actes{
32       
33        var $id_acte = 0;                                                       //Identifiant de l'acte
34        var $date_acte = '0000-00-00';                          //date de création de l'acte
35        var $numero = '';                                                       //Numero de l'acte
36        var $nom_acte = '';                                                     //Nom de l'acte
37        var $type_acte = 0;                                                     //Type d'acte (0 = Commande, 1 = Demande de devis, 2 = Bon de Livraison, 3 = Facture, ...)
38        var $statut = 0;                                                        //Statut de l'acte (
39                                                                                                //Commande                      1=A valider, 2=En cours, 4=Livrée, 8=Facturée, 16=Payée, 32=Archivée
40                                                                                                //Demande Devis         2=En cours, 4=Reçu, 32=Archivé
41                                                                                                //Bon de Livraison      4=Recu, 32=Archivé
42                                                                                                //Facture                       4=Reçue, 16=Payée, 32=Archivée
43        var $date_paiement = '0000-00-00';                      //Date du paiement (pré-paiement)
44        var $num_paiement = 0;                                          //Numéro de virement, chèque, ...
45        var $num_entite = 0;                                            //Identifiant de l'entité sur laquelle est affectée la acte
46        var $num_fournisseur = 0;                                       //Identifiant du fournisseur associé
47        var $num_contact_livr = 0;                                      //Identifiant du contact pour l'adresse de livraison
48        var $num_contact_fact = 0;                                      //Identifiant du contact pour l'adresse de facturation
49//TODO  Voir suppression num_exercice
50        var $num_exercice = 0;                                          //Identifiant de l'exercice auquel est affecté l'acte
51        var $commentaires = '';                                         //Lignes de commentaires de gestion
52        var $reference = '';                                            //Référence fournisseur
53        var $index_acte = '';                                           //Champ de recherche fulltext
54        var $commentaires_i = '';                                       //Lignes de commentaires imprimés sur la commande
55        var $devise = '';                                                       //Devise de la commande
56        var $date_ech = '0000-00-00';                           //Echeance acte
57       
58         
59        //Constructeur. 
60        function actes($id_acte=0) {
61               
62                if ($id_acte) {
63                        $this->id_acte = $id_acte;
64                        $this->load(); 
65                }
66
67        }       
68       
69       
70        // charge une acte à partir de la base.
71        function load(){
72       
73                global $dbh;
74               
75                $q = "select * from actes where id_acte = '".$this->id_acte."' ";
76                $r = mysql_query($q, $dbh) ;
77                $obj = mysql_fetch_object($r);
78                $this->date_acte = $obj->date_acte;
79                $this->numero = $obj->numero;
80                $this->nom_acte = $obj->nom_acte;
81                $this->type_acte = $obj->type_acte;
82                $this->statut = $obj->statut;
83                $this->date_paiement = $obj->date_paiement;
84                $this->num_paiement = $obj->num_paiement;
85                $this->num_entite = $obj->num_entite;
86                $this->num_fournisseur = $obj->num_fournisseur;
87                $this->num_contact_livr = $obj->num_contact_livr;
88                $this->num_contact_fact = $obj->num_contact_fact;
89//TODO Voir suppression num_exercice
90                $this->num_exercice = $obj->num_exercice;
91                $this->commentaires = $obj->commentaires;
92                $this->reference = $obj->reference;
93                $this->commentaires_i = $obj->commentaires_i;
94                $this->devise = $obj->devise;
95                $this->date_ech = $obj->date_ech;
96
97        }
98
99       
100        // enregistre un acte en base.
101        function save(){
102               
103                global $dbh, $num_cde,$num_dev;
104               
105                if ( !$this->num_entite  || !$this->num_fournisseur ) die("Erreur de création actes");
106               
107                //récupération du libelle fournisseur
108                $q = "select raison_sociale from entites where id_entite = '".$this->num_fournisseur."' ";
109                $r = mysql_query($q, $dbh);
110
111                $fou = mysql_result($r, 0, 0);
112               
113                if($this->type_acte == TYP_ACT_CDE)
114                        $num = trim($num_cde);
115                else if($this->type_acte == TYP_ACT_DEV)
116                        $num = trim($num_dev);
117                if ($this->id_acte) {
118                        if ($num!='') {
119                                $this->numero=$num;
120                        } else {
121                                $this->numero=addslashes($this->numero);
122                        }
123                        $q = "update actes set ";
124                        $q.= "numero = '".$this->numero."', ";
125                        $q.= "nom_acte = '".$this->nom_acte."', ";
126                        $q.= "statut = '".$this->statut."', ";
127                        $q.= "date_paiement = '".$this->date_paiement."', ";
128                        $q.= "num_paiement = '".$this->num_paiement."', ";
129                        $q.= "num_fournisseur = '".$this->num_fournisseur."', ";
130                        $q.= "num_contact_livr = '".$this->num_contact_livr."', ";
131                        $q.= "num_contact_fact = '".$this->num_contact_fact."', "; 
132//TODO Voir suppression num_exercice
133                        $q.= "num_exercice = '".$this->num_exercice."', ";
134                        $q.= "commentaires = '".$this->commentaires."', ";
135                        $q.= "reference = '".$this->reference."', ";
136                        $q.= "commentaires_i = '".$this->commentaires_i."', ";
137                        $q.= "devise = '".$this->devise."', ";
138                        $q.= "date_ech = '".$this->date_ech."', ";
139                        $q.= "index_acte = ' ".$this->numero." ".strip_empty_words($fou)." ".strip_empty_words($this->commentaires)." ".strip_empty_words($this->reference)." ' "; 
140                        $q.= "where id_acte = '".$this->id_acte."' ";
141                        $r = mysql_query($q, $dbh);
142                        audit::insert_modif(AUDIT_ACQUIS, $this->id_acte);
143               
144                } else {
145                        if ($num!='') {
146                                $this->numero=$num;
147                        } else {
148                                $this->calc();
149                        }
150                        $q = "insert into actes set type_acte = '".$this->type_acte."', ";
151                        $q.= "date_acte = '".today()."', ";
152                        $q.= "numero = '".$this->numero."', ";
153                        $q.= "nom_acte = '".$this->nom_acte."', ";
154                        $q.= "statut = '".$this->statut."', ";
155                        $q.= "date_paiement = '".$this->date_paiement."', ";
156                        $q.= "num_paiement = '".$this->num_paiement."', ";
157                        $q.= "num_entite = '".$this->num_entite."', ";
158                        $q.= "num_fournisseur = '".$this->num_fournisseur."', ";
159                        $q.= "num_contact_livr = '".$this->num_contact_livr."', ";
160                        $q.= "num_contact_fact = '".$this->num_contact_fact."', ";
161//TODO Voir suppression num_exercice                   
162                        $q.= "num_exercice = '".$this->num_exercice."', ";
163                        $q.= "commentaires = '".$this->commentaires."' , ";
164                        $q.= "reference = '".$this->reference."', "; 
165                        $q.= "commentaires_i = '".$this->commentaires_i."', ";
166                        $q.= "devise = '".$this->devise."', ";
167                        $q.= "date_ech = '".$this->date_ech."', ";
168                        $q.= "index_acte = ' ".strip_empty_words($this->numero)." ".strip_empty_words($fou)." ".strip_empty_words($this->commentaires)." ".strip_empty_words($this->reference)." ' "; 
169                        $r = mysql_query($q, $dbh);
170                        $this->id_acte = mysql_insert_id($dbh);
171                        audit::insert_creation(AUDIT_ACQUIS, $this->id_acte);           
172                }
173        }
174
175
176        //supprime un acte de la base
177        function delete($id_acte= 0) {
178               
179                global $dbh;
180
181                if(!$id_acte) $id_acte = $this->id_acte;       
182
183                actes::deleteLignes($id_acte);
184                liens_actes::delete($id_acte);
185                $q = "delete from actes where id_acte = '".$id_acte."' ";
186                mysql_query($q, $dbh);
187                audit::delete_audit(AUDIT_ACQUIS, $id_acte);
188
189        }
190
191
192        //supprime les lignes d'un acte
193        static function deleteLignes($id_acte) {
194
195                global $dbh;   
196
197                $q = "delete from lignes_actes where num_acte = '".$id_acte."' ";
198                mysql_query($q, $dbh);
199        }
200
201
202        //supprime les lignes de l'acte non comprises dans le tableau de lignes
203        function cleanLignes($id_acte = 0, $tab_lig=array()) {
204               
205                global $dbh;
206
207                if(!$id_acte) $id_acte=$this->id_acte;
208                if(count($tab_lig)==0) return;
209
210                $list_lig=implode("','", $tab_lig);
211                $q = "delete from lignes_actes where num_acte='".$id_acte."' and id_ligne not in ('".$list_lig."')";
212                mysql_query($q, $dbh);
213                               
214        }
215       
216       
217       
218        //Recherche la prochaine echeance d'une commande en cours
219        static function getNextLivr($id_acte) {
220               
221                global $dbh;
222                $q = "select min((date_format(date_ech, '%Y%m%d'))) from lignes_actes where num_acte = '".$id_acte."' and (('2' & statut) = '0') ";
223                $r = mysql_query($q, $dbh);
224                if (mysql_num_rows($r)) {
225                        $res = mysql_result($r,0,0);
226                        $res = substr($res,0,4).'-'.substr($res,4,2).'-'.substr($res,6,2);
227                } else $res = '0';
228                return $res;
229        }
230
231
232        // calcule le numéro d'un acte en base.
233        // Il faut d'abord avoir renseigné le numéro d'entité et le type d'acte
234        function calc(){
235       
236                $this->numero = calcNumero($this->num_entite, $this->type_acte);
237
238        }
239
240
241        // Retourne les lignes d'un acte
242        static function getLignes($id_acte=0, $param=0){
243       
244                global $dbh;
245               
246                //if(!$id_acte) $id_acte = $this->id_acte;
247                $q = "select * from lignes_actes where num_acte = '".$id_acte."' ";
248                if($param) $q.="and ".$param." ";
249                $r = mysql_query($q, $dbh);
250                return $r; 
251
252        }
253
254
255//TODO Voir suppression num_exercice
256        //Retourne la liste des actes appartenant à l'exercice passé en paramètres
257        static function listByExercice($num_exercice){
258       
259                global $dbh;
260               
261                $q = "select id_acte from actes where num_exercice = '".$num_exercice."' ";
262                $r = mysql_query($q, $dbh);
263                return $r; 
264        }
265
266
267        //Retourne un tableau de la liste des etats possibles pour un acte en fonction de son type (valeur, libelle)
268        static function getStatelist($type_acte, $all=TRUE) {
269               
270                global $msg;
271                $t=array();
272                switch($type_acte) {
273                        case TYP_ACT_DEV :
274                                if ($all) {
275                                        $t[-1]=$msg['acquisition_dev_tous'];
276                                }
277                                $t[2]=$msg['acquisition_dev_enc'];
278                                $t[4]=$msg['acquisition_dev_rec'];
279                                $t[32]=$msg['acquisition_dev_arc'];
280                                break;
281                        case TYP_ACT_CDE :
282                                if ($all) {
283                                        $t[-1]=$msg['acquisition_cde_tous'];
284                                }
285                                $t[1]=$msg['acquisition_cde_aval'];
286                                $t[2]=$msg['acquisition_cde_enc'];
287                                $t[4]=$msg['acquisition_cde_liv'];
288                                $t[32]=$msg['acquisition_cde_arc'];
289                                break;
290                        case TYP_ACT_LIV :
291                                if ($all) {
292                                        $t[-1]=$msg['acquisition_liv_tous'];
293                                }
294                                $t[4]=$msg['acquisition_liv_rec'];
295                                $t[32]=$msg['acquisition_liv_arc'];
296                                break;
297                        case TYP_ACT_FAC :
298                                if ($all) {
299                                        $t[-1]=$msg['acquisition_fac_tous'];
300                                }
301                                $t[4]=$msg['acquisition_fac_rec'];
302                                $t[16]=$msg['acquisition_fac_pay'];
303                                $t[32]=$msg['acquisition_fac_arc'];
304                                break;
305                }
306                return $t;
307        }
308       
309       
310        function update_statut($id_acte=0) {
311               
312                global $dbh;
313               
314                if(!$id_acte) $id_acte = $this->id_acte;
315                $q = "update actes set statut='".$this->statut."' where id_acte='".$id_acte."' ";
316                mysql_query($q, $dbh);
317        }
318       
319
320        //optimization de la table actes
321        function optimize() {
322               
323                global $dbh;
324               
325                $opt = mysql_query('OPTIMIZE TABLE actes', $dbh);
326                return $opt;
327                               
328        }
329       
330                               
331}
332?>
Note: See TracBrowser for help on using the repository browser.