| [ Index ] |
|
Code source de Dolibarr 2.0.1 |
1 <?PHP 2 /* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> 3 * Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net> 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 * 19 * $Id: prelevement.php,v 1.5 2005/10/18 14:03:06 eldy Exp $ 20 * $Source: /cvsroot/dolibarr/dolibarr/scripts/prelevement.php,v $ 21 * 22 * Script de prelevement 23 */ 24 25 require_once ("../htdocs/master.inc.php"); 26 require_once(DOL_DOCUMENT_ROOT."/bon-prelevement.class.php"); 27 require_once (DOL_DOCUMENT_ROOT."/facture.class.php"); 28 require_once (DOL_DOCUMENT_ROOT."/societe.class.php"); 29 require_once(DOL_DOCUMENT_ROOT."/paiement.class.php"); 30 31 $error = 0; 32 33 $datetimeprev = time(); 34 35 $month = strftime("%m", $datetimeprev); 36 $year = strftime("%Y", $datetimeprev); 37 38 $user = new user($db, PRELEVEMENT_USER); 39 40 /* 41 * 42 * Lectures des factures 43 * 44 */ 45 46 $factures = array(); 47 $factures_prev = array(); 48 49 if (!$error) 50 { 51 52 $sql = "SELECT f.rowid, pfd.rowid as pfdrowid, f.fk_soc"; 53 $sql .= ", pfd.code_banque, pfd.code_guichet, pfd.number, pfd.cle_rib"; 54 $sql .= ", pfd.amount"; 55 $sql .= ", s.nom"; 56 $sql .= " FROM ".MAIN_DB_PREFIX."facture as f"; 57 $sql .= " , ".MAIN_DB_PREFIX."societe as s"; 58 $sql .= " , ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd"; 59 60 $sql .= " WHERE f.rowid = pfd.fk_facture"; 61 $sql .= " AND s.idp = f.fk_soc"; 62 $sql .= " AND f.fk_statut = 1"; 63 $sql .= " AND f.paye = 0"; 64 $sql .= " AND pfd.traite = 0"; 65 $sql .= " AND f.total_ttc > 0"; 66 $sql .= " AND f.fk_mode_reglement = 3"; 67 68 if ( $db->query($sql) ) 69 { 70 $num = $db->num_rows(); 71 $i = 0; 72 73 while ($i < $num) 74 { 75 $row = $db->fetch_row(); 76 77 $factures[$i] = $row; 78 79 $i++; 80 } 81 $db->free(); 82 dolibarr_syslog("$i factures à prélever"); 83 } 84 else 85 { 86 $error = 1; 87 dolibarr_syslog("Erreur -1"); 88 dolibarr_syslog($db->error()); 89 } 90 } 91 92 /* 93 * 94 * Verif des clients 95 * 96 */ 97 98 if (!$error) 99 { 100 /* 101 * Vérification des RIB 102 * 103 */ 104 $i = 0; 105 dolibarr_syslog("Début vérification des RIB"); 106 107 if (sizeof($factures) > 0) 108 { 109 foreach ($factures as $fac) 110 { 111 $fact = new Facture($db); 112 113 if ($fact->fetch($fac[0]) == 1) 114 { 115 $soc = new Societe($db); 116 if ($soc->fetch($fact->socidp) == 1) 117 { 118 if ($soc->verif_rib() == 1) 119 { 120 $factures_prev[$i] = $fac; 121 /* second tableau necessaire pour bon-prelevement */ 122 $factures_prev_id[$i] = $fac[0]; 123 $i++; 124 } 125 else 126 { 127 dolibarr_syslog("Erreur de RIB societe $fact->socidp $soc->nom"); 128 } 129 } 130 else 131 { 132 dolibarr_syslog("Impossible de lire la société"); 133 } 134 } 135 else 136 { 137 dolibarr_syslog("Impossible de lire la facture"); 138 } 139 } 140 } 141 else 142 { 143 dolibarr_syslog("Aucune factures a traiter"); 144 } 145 } 146 147 /* 148 * 149 * 150 * 151 */ 152 153 dolibarr_syslog(sizeof($factures_prev)." factures seront prélevées"); 154 155 if (sizeof($factures_prev) > 0) 156 { 157 /* 158 * Ouverture de la transaction 159 * 160 */ 161 162 if (!$db->query("BEGIN")) 163 { 164 $error++; 165 } 166 167 /* 168 * Traitements 169 * 170 */ 171 172 if (!$error) 173 { 174 $ref = "T".substr($year,-2).$month; 175 176 /* 177 * 178 * 179 */ 180 $sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."prelevement_bons"; 181 $sql .= " WHERE ref LIKE '$ref%'"; 182 183 if ($db->query($sql)) 184 { 185 $row = $db->fetch_row(); 186 } 187 else 188 { 189 $error++; 190 dolibarr_syslog("Erreur recherche reference"); 191 } 192 193 $ref = $ref . substr("00".($row[0]+1), -2); 194 195 $filebonprev = $ref; 196 197 /* 198 * Creation du bon de prelevement 199 * 200 */ 201 202 $sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_bons (ref,datec)"; 203 $sql .= " VALUES ('".$ref."',now())"; 204 205 if ($db->query($sql)) 206 { 207 $prev_id = $db->last_insert_id(MAIN_DB_PREFIX."prelevement_bons"); 208 209 $bonprev = new BonPrelevement($db, DOL_DATA_ROOT."/prelevement/bon/".$filebonprev); 210 $bonprev->id = $prev_id; 211 } 212 else 213 { 214 $error++; 215 dolibarr_syslog("Erreur création du bon de prelevement"); 216 } 217 218 } 219 220 /* 221 * 222 * 223 * 224 */ 225 if (!$error) 226 { 227 dolibarr_syslog("Début génération des paiements"); 228 dolibarr_syslog("Nombre de factures ".sizeof($factures_prev)); 229 230 if (sizeof($factures_prev) > 0) 231 { 232 foreach ($factures_prev as $fac) 233 { 234 $fact = new Facture($db); 235 $fact->fetch($fac[0]); 236 237 $pai = new Paiement($db); 238 239 $pai->amounts = array(); 240 $pai->amounts[$fac[0]] = $fact->total_ttc; 241 $pai->datepaye = $db->idate($datetimeprev); 242 $pai->paiementid = 3; // prélèvement 243 $pai->num_paiement = $ref; 244 245 if ($pai->create($user, 1) == -1) // on appelle en no_commit 246 { 247 $error++; 248 dolibarr_syslog("Erreur creation paiement facture ".$fac[0]); 249 } 250 else 251 { 252 /* 253 * Validation du paiement 254 */ 255 $pai->valide(); 256 257 /* 258 * Ajout d'une ligne de prélèvement 259 * 260 * 261 * $fac[3] : banque 262 * $fac[4] : guichet 263 * $fac[5] : number 264 * $fac[6] : cle rib 265 * $fac[7] : amount 266 * $fac[8] : client nom 267 * $fac[2] : client id 268 */ 269 270 $ri = $bonprev->AddFacture($fac[0], $fac[2], $fac[8], $fac[7], 271 $fac[3], $fac[4], $fac[5], $fac[6]); 272 if ($ri <> 0) 273 { 274 $error++; 275 } 276 277 /* 278 * Mise à jour des demandes 279 * 280 */ 281 $sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_facture_demande"; 282 $sql .= " SET traite = 1"; 283 $sql .= ", date_traite=now()"; 284 $sql .= ", fk_prelevement_bons = ".$prev_id; 285 $sql .= " WHERE rowid=".$fac[1]; 286 287 if ($db->query($sql)) 288 { 289 290 } 291 else 292 { 293 $error++; 294 dolibarr_syslog("Erreur mise a jour des demandes"); 295 dolibarr_syslog($db->error()); 296 } 297 298 } 299 } 300 } 301 302 dolibarr_syslog("Fin des paiements"); 303 } 304 305 if (!$error) 306 { 307 /* 308 * Bon de Prelevement 309 * 310 * 311 */ 312 313 dolibarr_syslog("Debut prelevement"); 314 dolibarr_syslog("Nombre de factures ".sizeof($factures_prev)); 315 316 if (sizeof($factures_prev) > 0) 317 { 318 $bonprev->date_echeance = $datetimeprev; 319 $bonprev->reference_remise = $ref; 320 321 322 $bonprev->numero_national_emetteur = PRELEVEMENT_NUMERO_NATIONAL_EMETTEUR; 323 $bonprev->raison_sociale = PRELEVEMENT_RAISON_SOCIALE; 324 325 $bonprev->emetteur_code_etablissement = PRELEVEMENT_CODE_BANQUE; 326 $bonprev->emetteur_code_guichet = PRELEVEMENT_CODE_GUICHET; 327 $bonprev->emetteur_numero_compte = PRELEVEMENT_NUMERO_COMPTE; 328 329 330 $bonprev->factures = $factures_prev_id; 331 332 $bonprev->generate(); 333 } 334 dolibarr_syslog( $filebonprev ) ; 335 dolibarr_syslog("Fin prelevement"); 336 } 337 338 /* 339 * Mise à jour du total 340 * 341 */ 342 343 $sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_bons"; 344 $sql .= " SET amount = ".ereg_replace(",",".",$bonprev->total); 345 $sql .= " WHERE rowid = ".$prev_id; 346 347 if (!$db->query($sql)) 348 { 349 $error++; 350 dolibarr_syslog("Erreur mise à jour du total"); 351 dolibarr_syslog($sql); 352 } 353 354 /* 355 * Rollback ou Commit 356 * 357 */ 358 if (!$error) 359 { 360 $db->query("COMMIT"); 361 dolibarr_syslog("COMMIT"); 362 } 363 else 364 { 365 $db->query("ROLLBAK"); 366 dolibarr_syslog("ROLLBACK"); 367 } 368 } 369 370 $db->close(); 371 372 // FIN 373 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
| Généré le : Mon Nov 26 12:29:37 2007 | par Balluche grâce à PHPXref 0.7 |
|