42 |
var $emetteur_numero_compte; |
var $emetteur_numero_compte; |
43 |
var $emetteur_code_etablissement; |
var $emetteur_code_etablissement; |
44 |
var $total; |
var $total; |
45 |
|
var $_fetched; |
46 |
|
|
47 |
function BonPrelevement($DB, $filename='') |
function BonPrelevement($DB, $filename='') |
48 |
{ |
{ |
70 |
|
|
71 |
$this->methodes_trans[0] = "Internet"; |
$this->methodes_trans[0] = "Internet"; |
72 |
|
|
73 |
|
$this->_fetched = 0; |
74 |
|
|
75 |
return 1; |
return 1; |
76 |
} |
} |
77 |
/* |
/* |
184 |
* |
* |
185 |
* |
* |
186 |
*/ |
*/ |
187 |
|
function ReadError($error) |
188 |
|
{ |
189 |
|
$errors = array(); |
190 |
|
|
191 |
|
$errors[1027] = "Date invalide"; |
192 |
|
|
193 |
|
return $errors[abs($error)]; |
194 |
|
} |
195 |
|
/* |
196 |
|
* |
197 |
|
* |
198 |
|
*/ |
199 |
function Fetch($rowid) |
function Fetch($rowid) |
200 |
{ |
{ |
201 |
$sql = "SELECT p.rowid, p.ref, p.amount, p.note, p.credite"; |
$sql = "SELECT p.rowid, p.ref, p.amount, p.note, p.credite"; |
232 |
|
|
233 |
$this->statut = $obj->statut; |
$this->statut = $obj->statut; |
234 |
|
|
235 |
|
$this->_fetched = 1; |
236 |
|
|
237 |
return 0; |
return 0; |
238 |
} |
} |
239 |
else |
else |
339 |
{ |
{ |
340 |
$error == 0; |
$error == 0; |
341 |
|
|
342 |
if ($this->db->begin()) |
if ($this->_fetched == 1) |
343 |
{ |
{ |
344 |
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_bons "; |
if ($date >= $this->date_trans) |
|
$sql .= " SET fk_user_credit = ".$user->id; |
|
|
$sql .= " , statut = 2"; |
|
|
$sql .= " , date_credit='".$this->db->idate($date)."'"; |
|
|
$sql .= " WHERE rowid=".$this->id; |
|
|
$sql .= " AND statut = 1"; |
|
|
|
|
|
if (! $this->db->query($sql)) |
|
|
{ |
|
|
dolibarr_syslog("BonPrelevement::set_infocredit Erreur 1"); |
|
|
$error++; |
|
|
} |
|
|
|
|
|
/* |
|
|
* Fin de la procédure |
|
|
* |
|
|
*/ |
|
|
if ($error == 0) |
|
345 |
{ |
{ |
346 |
$this->db->commit(); |
if ($this->db->begin()) |
347 |
return 0; |
{ |
348 |
|
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_bons "; |
349 |
|
$sql .= " SET fk_user_credit = ".$user->id; |
350 |
|
$sql .= " , statut = 2"; |
351 |
|
$sql .= " , date_credit='".$this->db->idate($date)."'"; |
352 |
|
$sql .= " WHERE rowid=".$this->id; |
353 |
|
$sql .= " AND statut = 1"; |
354 |
|
|
355 |
|
if ($this->db->query($sql)) |
356 |
|
{ |
357 |
|
$subject = "Crédit prélévement ".$this->ref." à la banque"; |
358 |
|
$message = "Le bon de prélèvement ".$this->ref; |
359 |
|
$message .= " a été crédité par la banque "; |
360 |
|
$message .="le ".strftime("%A %e %B %Y", $date); |
361 |
|
|
362 |
|
$this->Notify($user,"cr", $subject, $message); |
363 |
|
} |
364 |
|
else |
365 |
|
{ |
366 |
|
dolibarr_syslog("BonPrelevement::set_infocredit Erreur 1"); |
367 |
|
$error++; |
368 |
|
} |
369 |
|
|
370 |
|
/* |
371 |
|
* Fin de la procédure |
372 |
|
* |
373 |
|
*/ |
374 |
|
if ($error == 0) |
375 |
|
{ |
376 |
|
$this->db->commit(); |
377 |
|
return 0; |
378 |
|
} |
379 |
|
else |
380 |
|
{ |
381 |
|
$this->db->rollback(); |
382 |
|
dolibarr_syslog("bon-prelevment::set_infocredit ROLLBACK "); |
383 |
|
return -1; |
384 |
|
} |
385 |
|
} |
386 |
|
else |
387 |
|
{ |
388 |
|
dolibarr_syslog("bon-prelevement::set_infocredit Ouverture transaction SQL impossible "); |
389 |
|
return -1025; |
390 |
|
} |
391 |
} |
} |
392 |
else |
else |
393 |
{ |
{ |
394 |
|
dolibarr_syslog("bon-prelevment::set_infocredit 1027 Date de credit < Date de trans "); |
395 |
$this->db->rollback(); |
return -1027; |
|
dolibarr_syslog("bon-prelevment::set_infotrans ROLLBACK "); |
|
|
|
|
|
return -1; |
|
396 |
} |
} |
397 |
} |
} |
398 |
else |
else |
399 |
{ |
{ |
400 |
|
return -1026; |
|
dolibarr_syslog("bon-prelevement::set_infocredit Ouverture transaction SQL impossible "); |
|
|
return -2; |
|
401 |
} |
} |
402 |
} |
} |
403 |
/** |
/** |
407 |
function set_infotrans($user, $date, $method) |
function set_infotrans($user, $date, $method) |
408 |
{ |
{ |
409 |
$error == 0; |
$error == 0; |
410 |
|
dolibarr_syslog("bon-prelevement::set_infotrans Start",LOG_INFO); |
411 |
if ($this->db->begin()) |
if ($this->db->begin()) |
412 |
{ |
{ |
413 |
|
$sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_bons "; |
|
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_bons "; |
|
414 |
$sql .= " SET fk_user_trans = ".$user->id; |
$sql .= " SET fk_user_trans = ".$user->id; |
415 |
$sql .= " , date_trans='".$this->db->idate($date)."'"; |
$sql .= " , date_trans='".$this->db->idate($date)."'"; |
416 |
$sql .= " , method_trans=".$method; |
$sql .= " , method_trans=".$method; |
420 |
|
|
421 |
if ($this->db->query($sql)) |
if ($this->db->query($sql)) |
422 |
{ |
{ |
423 |
// Appel des triggers |
$this->method_trans = $method; |
424 |
include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); |
|
425 |
$interface = new Interfaces($this->db); |
$subject = "Transmission du prélévement ".$this->ref." à la banque"; |
426 |
$ret=$interface->run_triggers('STANDINGORDER_TRANS',$this,$user,$lang,$conf); |
$message = "Le bon de prélèvement ".$this->ref; |
427 |
// Fin appel triggers |
$message .= " a été transmis à la banque par ".$user->prenom. " ".$user->nom; |
428 |
|
$message .= "\n\n"; |
429 |
|
$message .= "Méthode : ".$this->methodes_trans[$this->method_trans]; |
430 |
|
$message .="\nLe :".strftime("%a %e %B %Y", $date); |
431 |
|
|
432 |
|
|
433 |
|
$this->Notify($user,"tr", $subject, $message); |
434 |
} |
} |
435 |
else |
else |
436 |
{ |
{ |
437 |
dolibarr_syslog("bon-prelevement::set_infotrans Erreur 1"); |
dolibarr_syslog("bon-prelevement::set_infotrans Erreur 1", LOG_ERR); |
438 |
dolibarr_syslog($this->db->error()); |
dolibarr_syslog($this->db->error()); |
439 |
$error++; |
$error++; |
440 |
} |
} |
451 |
else |
else |
452 |
{ |
{ |
453 |
$this->db->rollback(); |
$this->db->rollback(); |
454 |
dolibarr_syslog("BonPrelevement::set_infotrans ROLLBACK "); |
dolibarr_syslog("BonPrelevement::set_infotrans ROLLBACK", LOG_ERR); |
455 |
|
|
456 |
return -1; |
return -1; |
457 |
} |
} |
459 |
else |
else |
460 |
{ |
{ |
461 |
|
|
462 |
dolibarr_syslog("BonPrelevement::set_infotrans Ouverture transaction SQL impossible "); |
dolibarr_syslog("BonPrelevement::set_infotrans Ouverture transaction SQL impossible", LOG_CRIT); |
463 |
return -2; |
return -2; |
464 |
} |
} |
465 |
} |
} |
466 |
|
/* |
467 |
|
* |
468 |
|
* |
469 |
|
*/ |
470 |
|
function Notify($user, $action, $subject, $message) |
471 |
|
{ |
472 |
|
$message .= "\n\n--\n"; |
473 |
|
$message .= "Ceci est un message automatique envoyé par Dolibarr"; |
474 |
|
|
475 |
|
|
476 |
|
$sql = "SELECT u.name, u.firstname, u.email"; |
477 |
|
$sql .= " FROM ".MAIN_DB_PREFIX."user as u"; |
478 |
|
$sql .= " , ".MAIN_DB_PREFIX."prelevement_notifications as pn"; |
479 |
|
$sql .= " WHERE pn.action ='".$action."'"; |
480 |
|
$sql .= " AND u.rowid = pn.fk_user;"; |
481 |
|
|
482 |
|
$resql = $this->db->query($sql); |
483 |
|
if ($resql) |
484 |
|
{ |
485 |
|
$num = $this->db->num_rows($resql); |
486 |
|
$i = 0; |
487 |
|
while ($i < $num) |
488 |
|
{ |
489 |
|
$obj = $this->db->fetch_object($resql); |
490 |
|
|
491 |
|
require_once(DOL_DOCUMENT_ROOT."/lib/dolibarrmail.class.php"); |
492 |
|
|
493 |
|
|
494 |
|
$sendto = $obj->firstname . " " .$obj->name . "<".$obj->email.">"; |
495 |
|
$from = $user->prenom . " " .$user->nom . "<".$user->email.">"; |
496 |
|
|
497 |
|
$mailfile = new DolibarrMail($subject, |
498 |
|
$sendto, |
499 |
|
$from, |
500 |
|
$message); |
501 |
|
$mailfile->sendfile(); |
502 |
|
|
503 |
|
|
504 |
|
|
505 |
|
$i++; |
506 |
|
} |
507 |
|
$this->db->free($resql); |
508 |
|
} |
509 |
|
} |
510 |
|
|
511 |
/** |
/** |
512 |
* \brief Recupére la liste des factures concernées |
* \brief Recupére la liste des factures concernées |
1003 |
} |
} |
1004 |
} |
} |
1005 |
} |
} |
1006 |
|
/* |
1007 |
|
* |
1008 |
|
* |
1009 |
|
*/ |
1010 |
|
function DeleteNotificationById($rowid) |
1011 |
|
{ |
1012 |
|
$result = 0; |
1013 |
|
|
1014 |
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX."prelevement_notifications "; |
1015 |
|
$sql .= " WHERE rowid = '".$rowid."';"; |
1016 |
|
|
1017 |
|
if ($this->db->query($sql)) |
1018 |
|
{ |
1019 |
|
return 0; |
1020 |
|
} |
1021 |
|
else |
1022 |
|
{ |
1023 |
|
return -1; |
1024 |
|
} |
1025 |
|
} |
1026 |
|
/* |
1027 |
|
* |
1028 |
|
*/ |
1029 |
|
function DeleteNotification($user, $action) |
1030 |
|
{ |
1031 |
|
$result = 0; |
1032 |
|
|
1033 |
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX."prelevement_notifications "; |
1034 |
|
$sql .= " WHERE fk_user = '".$user."' AND action = '".$action."';"; |
1035 |
|
|
1036 |
|
if ($this->db->query($sql)) |
1037 |
|
{ |
1038 |
|
return 0; |
1039 |
|
} |
1040 |
|
else |
1041 |
|
{ |
1042 |
|
return -1; |
1043 |
|
} |
1044 |
|
} |
1045 |
|
/* |
1046 |
|
* |
1047 |
|
* |
1048 |
|
*/ |
1049 |
|
function AddNotification($user, $action) |
1050 |
|
{ |
1051 |
|
$result = 0; |
1052 |
|
|
1053 |
|
if ($this->DeleteNotification($user, $action) == 0) |
1054 |
|
{ |
1055 |
|
|
1056 |
|
$sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_notifications "; |
1057 |
|
$sql .= " (fk_user, action )"; |
1058 |
|
$sql .= " VALUES ('".$user."','".$action."');"; |
1059 |
|
|
1060 |
|
if ($this->db->query($sql)) |
1061 |
|
{ |
1062 |
|
$result = 0; |
1063 |
|
} |
1064 |
|
else |
1065 |
|
{ |
1066 |
|
$result = -1; |
1067 |
|
dolibarr_syslog("BonPrelevement::AddNotification Erreur $result"); |
1068 |
|
} |
1069 |
|
} |
1070 |
|
|
1071 |
|
return $result; |
1072 |
|
} |
1073 |
/** |
/** |
1074 |
* Génération d'un bon de prélèvement |
* Génération d'un bon de prélèvement |
1075 |
* |
* |