32 require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
43 public $element =
'don';
48 public $table_element =
'don';
53 public $fk_element =
'fk_donation';
59 public $ismultientitymanaged = 1;
64 public $picto =
'donation';
111 public $phone_mobile;
126 public $fk_typepayment;
134 public $modepaymentid = 0;
147 public $labelStatusShort;
150 const STATUS_DRAFT = 0;
151 const STATUS_VALIDATED = 1;
152 const STATUS_PAID = 2;
153 const STATUS_CANCELED = -1;
175 return $this->
LibStatut($this->statut, $mode);
189 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
191 $langs->load(
"donations");
192 $this->labelStatus[-1] = $langs->transnoentitiesnoconv(
"Canceled");
193 $this->labelStatus[0] = $langs->transnoentitiesnoconv(
"DonationStatusPromiseNotValidated");
194 $this->labelStatus[1] = $langs->transnoentitiesnoconv(
"DonationStatusPromiseValidated");
195 $this->labelStatus[2] = $langs->transnoentitiesnoconv(
"DonationStatusPaid");
196 $this->labelStatusShort[-1] = $langs->transnoentitiesnoconv(
"Canceled");
197 $this->labelStatusShort[0] = $langs->transnoentitiesnoconv(
"DonationStatusPromiseNotValidatedShort");
198 $this->labelStatusShort[1] = $langs->transnoentitiesnoconv(
"DonationStatusPromiseValidatedShort");
199 $this->labelStatusShort[2] = $langs->transnoentitiesnoconv(
"DonationStatusPaidShort");
202 $statusType =
'status'.$status;
203 if ($status == self::STATUS_CANCELED) {
204 $statusType =
'status9';
206 if ($status == self::STATUS_PAID) {
207 $statusType =
'status6';
210 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
230 $sql =
"SELECT rowid";
231 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe";
232 $sql .=
" WHERE client IN (1, 3)";
233 $sql .=
" AND entity = ".$conf->entity;
236 $resql = $this->db->query(
$sql);
238 $num_socs = $this->db->num_rows($resql);
240 while ($i < $num_socs) {
241 $row = $this->db->fetch_row($resql);
242 $socids[$i] = $row[0];
250 $this->
ref =
'SPECIMEN';
252 $this->lastname =
'Doe';
253 $this->firstname =
'John';
254 $this->socid = empty($socids[0]) ? 0 : $socids[0];
256 $this->date_valid = $now;
257 $this->amount = 100.90;
259 $this->societe =
'The Company';
260 $this->address =
'Twist road';
261 $this->zip =
'99999';
262 $this->town =
'Town';
263 $this->note_private =
'Private note';
264 $this->note_public =
'Public note';
265 $this->email =
'email@email.com';
266 $this->phone =
'0123456789';
267 $this->phone_mobile =
'0606060606';
282 $langs->load(
'main');
283 $langs->load(
'companies');
285 $error_string = array();
290 $error_string[] = $langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'Company').
'/'.$langs->transnoentitiesnoconv(
'Firstname').
'-'.$langs->transnoentitiesnoconv(
'Lastname'));
296 $error_string[] = $langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'Address'));
301 $error_string[] = $langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'Zip'));
306 $error_string[] = $langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'Town'));
311 $error_string[] = $langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'EMail'));
315 $this->amount = trim($this->amount);
319 for ($i = 0; $i < $len; $i++) {
320 if (!isset($map[substr($this->amount, $i, 1)])) {
321 $error_string[] = $langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'Amount'));
328 if (!$amount_invalid) {
329 if ($this->amount == 0) {
330 $error_string[] = $langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'Amount'));
333 if ($this->amount < $minimum && $minimum > 0) {
334 $error_string[] = $langs->trans(
'MinimumAmount', $langs->transnoentitiesnoconv(
'$minimum'));
341 $this->errors = $error_string;
356 public function create($user, $notrigger = 0)
358 global $conf, $langs;
365 $this->address = ($this->address > 0 ? $this->address : $this->address);
366 $this->zip = ($this->zip > 0 ? $this->zip : $this->zip);
367 $this->town = ($this->town > 0 ? $this->town : $this->town);
368 $this->country_id = ($this->country_id > 0 ? $this->country_id : $this->country_id);
369 $this->country = ($this->country ? $this->country : $this->country);
370 $this->amount =
price2num($this->amount);
373 if ($this->amount < 0) {
374 $this->error = $langs->trans(
'FieldCannotBeNegative', $langs->transnoentitiesnoconv(
"Amount"));
380 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"don (";
384 $sql .=
", fk_payment";
386 $sql .=
", firstname";
387 $sql .=
", lastname";
392 $sql .=
", fk_country";
394 $sql .=
", fk_projet";
395 $sql .=
", note_private";
396 $sql .=
", note_public";
397 $sql .=
", fk_user_author";
398 $sql .=
", fk_user_valid";
402 $sql .=
", phone_mobile";
403 $sql .=
") VALUES (";
404 $sql .=
"'".$this->db->idate($this->date ? $this->date : $now).
"'";
405 $sql .=
", ".((int) $conf->entity);
406 $sql .=
", ".((float) $this->amount);
407 $sql .=
", ".($this->modepaymentid ? $this->modepaymentid :
"null");
408 $sql .=
", ".($this->socid > 0 ? $this->socid :
"null");
409 $sql .=
", '".$this->db->escape($this->firstname).
"'";
410 $sql .=
", '".$this->db->escape($this->lastname).
"'";
411 $sql .=
", '".$this->db->escape($this->societe).
"'";
412 $sql .=
", '".$this->db->escape($this->address).
"'";
413 $sql .=
", '".$this->db->escape($this->zip).
"'";
414 $sql .=
", '".$this->db->escape($this->town).
"'";
415 $sql .=
", ".(int) ($this->country_id > 0 ? $this->country_id : 0);
416 $sql .=
", ".(int) $this->
public;
417 $sql .=
", ".($this->fk_project > 0 ? (int) $this->fk_project :
"null");
418 $sql .=
", ".(!empty($this->note_private) ? (
"'".$this->db->escape($this->note_private).
"'") :
"NULL");
419 $sql .=
", ".(!empty($this->note_public) ? (
"'".$this->db->escape($this->note_public).
"'") :
"NULL");
420 $sql .=
", ".((int) $user->id);
422 $sql .=
", '".$this->db->idate($this->date).
"'";
423 $sql .=
", '".(!empty($this->email) ? $this->db->escape(trim($this->email)) :
"").
"'";
424 $sql .=
", '".(!empty($this->phone) ? $this->db->escape(trim($this->phone)) :
"").
"'";
425 $sql .=
", '".(!empty($this->phone_mobile) ? $this->db->escape(trim($this->phone_mobile)) :
"").
"'";
428 $resql = $this->db->query(
$sql);
430 $this->
id = $this->db->last_insert_id(MAIN_DB_PREFIX.
"don");
442 $this->error = $this->db->lasterror();
443 $this->errno = $this->db->lasterrno();
464 $this->db->rollback();
476 public function update($user, $notrigger = 0)
478 global $langs, $conf;
483 $this->address = ($this->address > 0 ? $this->address : $this->address);
484 $this->zip = ($this->zip > 0 ? $this->zip : $this->zip);
485 $this->town = ($this->town > 0 ? $this->town : $this->town);
486 $this->country_id = ($this->country_id > 0 ? $this->country_id : $this->country_id);
487 $this->country = ($this->country ? $this->country : $this->country);
488 $this->amount =
price2num($this->amount);
491 if ($this->amount < 0) {
492 $this->error = $langs->trans(
'FieldCannotBeNegative', $langs->transnoentitiesnoconv(
"Amount"));
498 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"don SET";
499 $sql .=
" amount = ".((float) $this->amount);
500 $sql .=
", fk_payment = ".($this->modepaymentid ? $this->modepaymentid :
"null");
501 $sql .=
", firstname = '".$this->db->escape($this->firstname).
"'";
502 $sql .=
", lastname='".$this->db->escape($this->lastname).
"'";
503 $sql .=
", societe='".$this->db->escape($this->societe).
"'";
504 $sql .=
", address='".$this->db->escape($this->address).
"'";
505 $sql .=
", zip='".$this->db->escape($this->zip).
"'";
506 $sql .=
", town='".$this->db->escape($this->town).
"'";
507 $sql .=
", fk_country = ".($this->country_id > 0 ? ((int) $this->country_id) :
'0');
508 $sql .=
", public=".((int) $this->
public);
509 $sql .=
", fk_projet=".($this->fk_project > 0 ? $this->fk_project :
'null');
510 $sql .=
", note_private=".(!empty($this->note_private) ? (
"'".$this->db->escape($this->note_private).
"'") :
"NULL");
511 $sql .=
", note_public=".(!empty($this->note_public) ? (
"'".$this->db->escape($this->note_public).
"'") :
"NULL");
512 $sql .=
", datedon='".$this->db->idate($this->date).
"'";
513 $sql .=
", date_valid=".($this->date_valid ?
"'".$this->db->idate($this->date).
"'" :
"null");
514 $sql .=
", email='".$this->db->escape(trim($this->email)).
"'";
515 $sql .=
", phone='".$this->db->escape(trim($this->phone)).
"'";
516 $sql .=
", phone_mobile='".$this->db->escape(trim($this->phone_mobile)).
"'";
517 $sql .=
", fk_statut=".((int) $this->statut);
518 $sql .=
" WHERE rowid = ".((int) $this->
id);
520 dol_syslog(get_class($this).
"::Update", LOG_DEBUG);
521 $resql = $this->db->query(
$sql);
544 $this->db->rollback();
548 $this->error = $this->db->lasterror();
549 $this->errors[] = $this->error;
550 $this->db->rollback();
551 dol_syslog(get_class($this).
"::Update error -2 ".$this->error, LOG_ERR);
564 public function delete($user, $notrigger = 0)
566 global $user, $conf, $langs;
567 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
573 if (!$error && !$notrigger) {
585 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"don_extrafields";
586 $sql .=
" WHERE fk_object = ".((int) $this->
id);
588 $resql = $this->db->query(
$sql);
590 $this->errors[] = $this->db->lasterror();
596 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"don";
597 $sql .=
" WHERE rowid=".((int) $this->
id);
599 $resql = $this->db->query(
$sql);
601 $this->errors[] = $this->db->lasterror();
610 foreach ($this->errors as $errmsg) {
611 dol_syslog(get_class($this).
"::delete ".$errmsg, LOG_ERR);
612 $this->error .= ($this->error ?
', '.$errmsg : $errmsg);
614 dol_syslog(get_class($this).
"::delete ".$this->error, LOG_ERR);
615 $this->db->rollback();
627 public function fetch($id, $ref =
'')
631 $sql =
"SELECT d.rowid, d.datec, d.date_valid, d.tms as datem, d.datedon,";
632 $sql .=
" d.fk_soc as socid,d.firstname, d.lastname, d.societe, d.amount, d.fk_statut, d.address, d.zip, d.town, ";
633 $sql .=
" d.fk_country, d.country as country_olddata, d.public, d.amount, d.fk_payment, d.paid, d.note_private, d.note_public, d.email, d.phone, ";
634 $sql .=
" d.phone_mobile, d.fk_projet as fk_project, d.model_pdf,";
635 $sql .=
" p.ref as project_ref,";
636 $sql .=
" cp.libelle as payment_label, cp.code as payment_code,";
637 $sql .=
" c.code as country_code, c.label as country";
638 $sql .=
" FROM ".MAIN_DB_PREFIX.
"don as d";
639 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"projet as p ON p.rowid = d.fk_projet";
640 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_paiement as cp ON cp.id = d.fk_payment";
641 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as c ON d.fk_country = c.rowid";
642 $sql .=
" WHERE d.entity IN (".getEntity(
'donation').
")";
644 $sql .=
" AND d.rowid=".((int) $id);
645 } elseif (!empty($ref)) {
646 $sql .=
" AND d.ref='".$this->db->escape($ref).
"'";
649 dol_syslog(get_class($this).
"::fetch", LOG_DEBUG);
650 $resql = $this->db->query(
$sql);
652 if ($this->db->num_rows($resql)) {
653 $obj = $this->db->fetch_object($resql);
655 $this->
id = $obj->rowid;
656 $this->
ref = $obj->rowid;
657 $this->date_creation = $this->db->jdate($obj->datec);
658 $this->datec = $this->db->jdate($obj->datec);
659 $this->date_validation = $this->db->jdate($obj->date_valid);
660 $this->date_valid = $this->db->jdate($obj->date_valid);
661 $this->date_modification = $this->db->jdate($obj->datem);
662 $this->datem = $this->db->jdate($obj->datem);
663 $this->date = $this->db->jdate($obj->datedon);
664 $this->socid = $obj->socid;
665 $this->firstname = $obj->firstname;
666 $this->lastname = $obj->lastname;
667 $this->societe = $obj->societe;
668 $this->statut = $obj->fk_statut;
669 $this->address = $obj->address;
670 $this->zip = $obj->zip;
671 $this->town = $obj->town;
672 $this->country_id = $obj->fk_country;
673 $this->country_code = $obj->country_code;
674 $this->country = $obj->country;
675 $this->country_olddata = $obj->country_olddata;
676 $this->email = $obj->email;
677 $this->phone = $obj->phone;
678 $this->phone_mobile = $obj->phone_mobile;
679 $this->project = $obj->project_ref;
680 $this->fk_projet = $obj->fk_project;
681 $this->fk_project = $obj->fk_project;
682 $this->
public = $obj->public;
683 $this->mode_reglement_id = $obj->fk_payment;
684 $this->mode_reglement_code = $obj->payment_code;
685 $this->mode_reglement = $obj->payment_label;
686 $this->paid = $obj->paid;
687 $this->amount = $obj->amount;
688 $this->note_private = $obj->note_private;
689 $this->note_public = $obj->note_public;
690 $this->model_pdf = $obj->model_pdf;
691 $this->modelpdf = $obj->model_pdf;
728 global $langs, $user;
734 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"don SET fk_statut = 1, fk_user_valid = ".((int) $userid).
" WHERE rowid = ".((int) $id).
" AND fk_statut = 0";
736 $resql = $this->db->query(
$sql);
738 if ($this->db->affected_rows($resql)) {
750 $this->error = $this->db->lasterror();
758 $this->db->rollback();
776 dol_syslog(get_class($this).
"::set_paid is deprecated, use setPaid instead", LOG_NOTICE);
777 return $this->
setPaid($id, $modepayment);
787 public function setPaid($id, $modepayment = 0)
789 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"don SET fk_statut = 2, paid = 1";
791 $sql .=
", fk_payment = ".((int) $modepayment);
793 $sql .=
" WHERE rowid = ".((int) $id).
" AND fk_statut = 1";
795 $resql = $this->db->query(
$sql);
797 if ($this->db->affected_rows($resql)) {
820 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"don SET fk_statut = -1 WHERE rowid = ".((int) $id);
822 $resql = $this->db->query(
$sql);
824 if ($this->db->affected_rows($resql)) {
843 public function reopen($user, $notrigger = 0)
846 if ($this->statut != self::STATUS_CANCELED) {
857 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'DON_REOPEN');
874 $sql =
"SELECT sum(amount) as total";
875 $sql .=
" FROM ".MAIN_DB_PREFIX.
"don";
876 $sql .=
" WHERE fk_statut = ".((int) $param);
877 $sql .=
" AND entity = ".$conf->entity;
879 $resql = $this->db->query(
$sql);
881 $obj = $this->db->fetch_object($resql);
882 $result = $obj->total;
901 $sql =
"SELECT count(d.rowid) as nb";
902 $sql .=
" FROM ".MAIN_DB_PREFIX.
"don as d";
903 $sql .=
" WHERE d.fk_statut > 0";
904 $sql .=
" AND d.entity IN (".getEntity(
'donation').
")";
906 $resql = $this->db->query(
$sql);
908 while ($obj = $this->db->fetch_object($resql)) {
909 $this->nb[
"donations"] = $obj->nb;
911 $this->db->free($resql);
915 $this->error = $this->db->error();
929 public function getNomUrl($withpicto = 0, $notooltip = 0, $moretitle =
'', $save_lastsearch_value = -1)
931 global $conf, $langs, $hookmanager;
933 if (!empty($conf->dol_no_mouse_hover)) {
938 $label =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"Donation").
'</u>';
939 if (isset($this->status)) {
940 $label .=
' '.$this->getLibStatut(5);
942 if (!empty($this->
id)) {
943 $label .=
'<br><b>'.$langs->trans(
'Ref').
':</b> '.$this->id;
944 $label .=
'<br><b>'.$langs->trans(
'Date').
':</b> '.
dol_print_date($this->date,
'day');
947 $label .=
' - '.$moretitle;
950 $url = DOL_URL_ROOT.
'/don/card.php?id='.$this->id;
952 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
953 if ($save_lastsearch_value == -1 && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
954 $add_save_lastsearch_values = 1;
956 if ($add_save_lastsearch_values) {
957 $url .=
'&save_lastsearch_values=1';
960 $linkstart =
'<a href="'.$url.
'" title="'.
dol_escape_htmltag($label, 1).
'" class="classfortooltip">';
963 $result .= $linkstart;
965 $result .=
img_object(($notooltip ?
'' : $label), $this->picto, ($notooltip ? (($withpicto != 2) ?
'class="paddingright"' :
'') :
'class="'.(($withpicto != 2) ?
'paddingright ' :
'').
'classfortooltip"'), 0, 0, $notooltip ? 0 : 1);
967 if ($withpicto != 2) {
968 $result .= $this->ref;
972 $hookmanager->initHooks(array($this->element .
'dao'));
973 $parameters = array(
'id'=>$this->
id,
'getnomurl' => &$result);
974 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
976 $result = $hookmanager->resPrint;
978 $result .= $hookmanager->resPrint;
991 $sql =
'SELECT d.rowid, d.datec, d.fk_user_author, d.fk_user_valid,';
992 $sql .=
' d.tms as datem';
993 $sql .=
' FROM '.MAIN_DB_PREFIX.
'don as d';
994 $sql .=
' WHERE d.rowid = '.((int) $id);
996 dol_syslog(get_class($this).
'::info', LOG_DEBUG);
997 $result = $this->db->query(
$sql);
1000 if ($this->db->num_rows($result)) {
1001 $obj = $this->db->fetch_object($result);
1002 $this->
id = $obj->rowid;
1004 $this->user_creation_id = $obj->fk_user_author;
1005 $this->user_validation_id = $obj->fk_user_valid;
1006 $this->date_creation = $this->db->jdate($obj->datec);
1007 $this->date_modification = (!empty($obj->tms) ? $this->db->jdate($obj->tms) :
"");
1009 $this->db->free($result);
1026 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0)
1028 global $conf, $langs;
1030 $langs->load(
"bills");
1033 $modele =
'html_cerfafr';
1035 if ($this->model_pdf) {
1036 $modele = $this->model_pdf;
1037 } elseif (!empty($conf->global->DON_ADDON_MODEL)) {
1038 $modele = $conf->global->DON_ADDON_MODEL;
1042 $modelpath =
"core/modules/dons/";
1048 $err = error_reporting();
1050 @set_time_limit(120);
1051 error_reporting($err);
1053 $srctemplatepath =
'';
1056 $tmp = explode(
':', $modele, 2);
1057 if (!empty($tmp[1])) {
1059 $srctemplatepath = $tmp[1];
1063 $file =
''; $classname =
''; $filefound = 0;
1064 $dirmodels = array(
'/');
1065 if (is_array($conf->modules_parts[
'models'])) {
1066 $dirmodels = array_merge($dirmodels, $conf->modules_parts[
'models']);
1068 foreach ($dirmodels as $reldir) {
1069 foreach (array(
'html',
'doc',
'pdf') as $prefix) {
1070 $file = $prefix.
"_".preg_replace(
'/^html_/',
'', $modele).
".modules.php";
1073 $file =
dol_buildpath($reldir.
"core/modules/dons/".$file, 0);
1074 if (file_exists($file)) {
1076 $classname = $prefix.
'_'.$modele;
1091 $classname = $modele;
1092 $obj =
new $classname($this->db);
1096 $sav_charset_output = $outputlangs->charset_output;
1097 if ($obj->write_file($object, $outputlangs, $srctemplatepath, $hidedetails, $hidedesc, $hideref) > 0) {
1098 $outputlangs->charset_output = $sav_charset_output;
1101 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
1105 $outputlangs->charset_output = $sav_charset_output;
1111 print $langs->trans(
"Error").
" ".$langs->trans(
"ErrorFileDoesNotExists", $file);
1142 if (empty($this->
id)) {
1143 $this->error =
'Missing object id';
1144 $this->errors[] = $this->error;
1145 dol_syslog(__METHOD__.
' : '.$this->error, LOG_ERR);
1149 $sql =
"SELECT SUM(amount) as sum_amount FROM ".MAIN_DB_PREFIX.
"payment_donation WHERE fk_donation = ".((int) $this->
id);
1150 $resql = $this->db->query(
$sql);
1155 $sum_amount = (
float) $this->db->fetch_object($resql)->sum_amount;
1156 return (
float) $this->amount - $sum_amount;
1171 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
1173 $return =
'<div class="box-flex-item box-flex-grow-zero">';
1174 $return .=
'<div class="info-box info-box-sm">';
1175 $return .=
'<span class="info-box-icon bg-infobox-action">';
1177 $return .=
'</span>';
1178 $return .=
'<div class="info-box-content">';
1179 $return .=
'<span class="info-box-ref">'.(method_exists($this,
'getNomUrl') ? $this->
getNomUrl(1) : $this->ref).
'</span>';
1180 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
1181 if (property_exists($this,
'date')) {
1182 $return .=
' | <span class="opacitymedium" >'.$langs->trans(
"Date").
'</span> : <span class="info-box-label">'.
dol_print_date($this->date).
'</span>';
1184 if (property_exists($this,
'societe') && !empty($this->societe)) {
1185 $return .=
'<br><span class="opacitymedium">'.$langs->trans(
"Company").
'</span> : <span class="info-box-label">'.$this->societe.
'</span>';
1187 if (property_exists($this,
'amount')) {
1188 $return .=
'<br><span class="opacitymedium" >'.$langs->trans(
"Amount").
'</span> : <span class="info-box-label amount">'.
price($this->amount).
'</span>';
1190 if (method_exists($this,
'LibStatut')) {
1191 $return .=
'<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).
'</div>';
1193 $return .=
'</div>';
1194 $return .=
'</div>';
1195 $return .=
'</div>';