[ Index ] |
|
Code source de Dolibarr 2.0.1 |
1 <?php 2 /* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 * 18 * $Id: rejet-prelevement.class.php,v 1.22 2005/11/30 11:10:50 rodolphe Exp $ 19 * $Source: /cvsroot/dolibarr/dolibarr/htdocs/compta/prelevement/rejet-prelevement.class.php,v $ 20 * 21 */ 22 23 /* 24 \file htdocs/compta/prelevement/prelevement.class.php 25 \ingroup prelevement 26 \brief Fichier de la classe des prelevements 27 \version $Revision: 1.22 $ 28 */ 29 30 31 /*! 32 \class Prelevement 33 \brief Classe permettant la gestion des prelevements 34 */ 35 36 class RejetPrelevement 37 { 38 var $id; 39 var $db; 40 41 42 /** 43 * \brief Constructeur de la classe 44 * \param DB Handler accès base de données 45 * \param user Utilisateur 46 */ 47 function RejetPrelevement($DB, $user) 48 { 49 $this->db = $DB ; 50 $this->user = $user; 51 52 $this->motifs = array(); 53 $this->motifs[0] = "Non renseigné"; 54 $this->motifs[1] = "Provision insuffisante"; 55 $this->motifs[2] = "Tirage contesté"; 56 $this->motifs[3] = "Pas de bon à payer"; 57 $this->motifs[4] = "Opposition sur compte"; 58 $this->motifs[5] = "RIB inexploitable"; 59 $this->motifs[6] = "Compte soldé"; 60 61 } 62 63 function create($user, $id, $motif, $date_rejet, $bonid, $facturation=0) 64 { 65 $error = 0; 66 $this->id = $id; 67 $this->bon_id = $bonid; 68 69 dolibarr_syslog("RejetPrelevement::Create id $id"); 70 71 $facs = $this->_get_list_factures(); 72 73 $this->db->begin(); 74 75 76 /* Insert la ligne de rejet dans la base */ 77 78 $sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_rejet "; 79 $sql .= " (fk_prelevement_lignes, date_rejet"; 80 $sql .= " , motif , fk_user_creation, date_creation, afacturer)"; 81 $sql .= " VALUES (".$id; 82 $sql .= " ,'".$this->db->idate($date_rejet)."'"; 83 $sql .= " ,".$motif.",". $user->id.", now(),".$facturation.");"; 84 85 $result=$this->db->query($sql); 86 87 if (!$result) 88 { 89 dolibarr_syslog("RejetPrelevement::create Erreur 4"); 90 dolibarr_syslog("RejetPrelevement::create Erreur 4 $sql"); 91 $error++; 92 } 93 94 /* Tag la ligne de prev comme rejetée */ 95 96 $sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_lignes "; 97 $sql .= " SET statut = 3"; 98 $sql .= " WHERE rowid=".$id; 99 100 if (! $this->db->query($sql)) 101 { 102 dolibarr_syslog("RejetPrelevement::create Erreur 5"); 103 $error++; 104 } 105 106 107 for ($i = 0 ; $i < sizeof($facs) ; $i++) 108 { 109 $fac = new Facture($this->db); 110 $fac->fetch($facs[$i]); 111 112 /* Emet un paiement négatif */ 113 114 $pai = new Paiement($this->db); 115 116 $pai->amounts = array(); 117 // On remplace la virgule éventuelle par un point sinon 118 // certaines install de PHP renvoie uniquement la partie 119 // entiere negative 120 121 $pai->amounts[$facs[$i]] = ereg_replace(",",".",($fac->total_ttc * -1)); 122 $pai->datepaye = $this->db->idate($date_rejet); 123 $pai->paiementid = 3; // prélèvement 124 $pai->num_paiement = "Rejet"; 125 126 if ($pai->create($this->user, 1) == -1) // on appelle en no_commit 127 { 128 $error++; 129 dolibarr_syslog("RejetPrelevement::Create Erreur creation paiement facture ".$facs[$i]); 130 } 131 132 /* Valide le paiement */ 133 134 if ($pai->valide() <> 0) 135 { 136 $error++; 137 dolibarr_syslog("RejetPrelevement::Create Erreur validation du paiement"); 138 } 139 140 /* Tag la facture comme impayée */ 141 dolibarr_syslog("RejetPrelevement::Create set_unpayed fac ".$fac->ref); 142 $fac->set_unpayed($fac->id, $user); 143 144 /* Envoi un email à l'emetteur de la demande de prev */ 145 $this->_send_email($fac); 146 } 147 148 if ($error == 0) 149 { 150 dolibarr_syslog("RejetPrelevement::Create Commit"); 151 $this->db->commit(); 152 } 153 else 154 { 155 dolibarr_syslog("RejetPrelevement::Create Rollback"); 156 $this->db->rollback(); 157 } 158 159 } 160 161 /** 162 * \brief Envoi mail 163 * 164 */ 165 function _send_email($fac) 166 { 167 $userid = 0; 168 169 $sql = "SELECT fk_user_demande"; 170 $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd"; 171 $sql .= " WHERE pfd.fk_prelevement_bons = ".$this->bon_id; 172 $sql .= " AND pfd.fk_facture = ".$fac->id; 173 174 $resql=$this->db->query($sql); 175 if ($resql) 176 { 177 $num = $this->db->num_rows($resql); 178 if ($num > 0) 179 { 180 $row = $this->db->fetch_row($resql); 181 $userid = $row[0]; 182 } 183 } 184 else 185 { 186 dolibarr_syslog("RejetPrelevement::_send_email Erreur lecture user"); 187 } 188 189 if ($userid > 0) 190 { 191 $emuser = new User($this->db, $userid); 192 $emuser->fetch(); 193 194 $soc = new Societe($this->db); 195 $soc->fetch($fac->socidp); 196 197 require_once (DOL_DOCUMENT_ROOT."/lib/CMailFile.class.php"); 198 199 $subject = "Prélèvement rejeté"; 200 $sendto = $emuser->fullname." <".$emuser->email.">"; 201 $from = $this->user->fullname." <".$this->user->email.">"; 202 203 $arr_file = array(); 204 $arr_mime = array(); 205 $arr_name = array(); 206 207 $message = "Bonjour,\n"; 208 $message .= "\nLe prélèvement de la facture ".$fac->ref." pour le compte de la société ".$soc->nom." d'un montant de ".price($fac->total_ttc)." a été rejeté par la banque."; 209 $message .= "\n\n--\n".$this->user->fullname; 210 211 $mailfile = new CMailFile($subject,$sendto,$from,$message, 212 $arr_file,$arr_mime,$arr_name); 213 $mailfile->errors_to = $this->user->email; 214 215 $result=$mailfile->sendfile(); 216 if ($result) 217 { 218 dolibarr_syslog("RejetPrelevement::_send_email email envoyé"); 219 } 220 else 221 { 222 dolibarr_syslog("RejetPrelevement::_send_email Erreur envoi email"); 223 } 224 } 225 else 226 { 227 dolibarr_syslog("RejetPrelevement::_send_email Userid invalide"); 228 } 229 } 230 231 232 /** 233 * \brief Recupére la liste des factures concernées 234 */ 235 function _get_list_factures() 236 { 237 $arr = array(); 238 /* 239 * Renvoie toutes les factures associée à un prélèvement 240 * 241 */ 242 243 $sql = "SELECT f.rowid as facid"; 244 245 $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_facture as pf"; 246 $sql .= " , ".MAIN_DB_PREFIX."facture as f"; 247 248 $sql .= " WHERE pf.fk_prelevement_lignes = ".$this->id; 249 250 $sql .= " AND pf.fk_facture = f.rowid"; 251 252 $result=$this->db->query($sql); 253 if ($result) 254 { 255 $num = $this->db->num_rows(); 256 257 if ($num) 258 { 259 $i = 0; 260 while ($i < $num) 261 { 262 $row = $this->db->fetch_row(); 263 $arr[$i] = $row[0]; 264 $i++; 265 } 266 } 267 $this->db->free(); 268 } 269 else 270 { 271 dolibarr_syslog("RejetPrelevement Erreur"); 272 } 273 274 return $arr; 275 276 } 277 278 279 280 /** 281 * \brief Recupére l'objet prelevement 282 * \param rowid id de la facture a récupérer 283 */ 284 function fetch($rowid) 285 { 286 287 $sql = "SELECT ".$this->db->pdate("pr.date_rejet")." as dr"; 288 $sql .= ", motif"; 289 $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_rejet as pr"; 290 $sql .= " WHERE pr.fk_prelevement_lignes =".$rowid; 291 292 293 if ($this->db->query($sql)) 294 { 295 if ($this->db->num_rows()) 296 { 297 $obj = $this->db->fetch_object(); 298 299 $this->id = $rowid; 300 $this->date_rejet = $obj->dr; 301 $this->motif = $this->motifs[$obj->motif]; 302 303 $this->db->free(); 304 305 return 0; 306 } 307 else 308 { 309 dolibarr_syslog("RejetPrelevement::Fetch Erreur rowid=$rowid numrows=0"); 310 return -1; 311 } 312 } 313 else 314 { 315 dolibarr_syslog("RejetPrelevement::Fetch Erreur rowid=$rowid"); 316 return -2; 317 } 318 } 319 320 } 321 322 ?>
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 |
![]() |