Passed
Push — GENERAL_BUG_REVIEW_240911 ( 3362b2...8cbbee )
by Rafael
49:13
created

CashControl::getLibStatut()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
/* Copyright (C) 2008       Laurent Destailleur         <[email protected]>
4
 * Copyright (C) 2009       Regis Houssin               <[email protected]>
5
 * Copyright (C) 2016       Marcos García               <[email protected]>
6
 * Copyright (C) 2018       Andreu Bisquerra            <[email protected]>
7
 * Copyright (C) 2024		MDW							<[email protected]>
8
 * Copyright (C) 2024       Frédéric France             <[email protected]>
9
 * Copyright (C) 2024       Rafael San José             <[email protected]>
10
 *
11
 * This program is free software; you can redistribute it and/or modify
12
 * it under the terms of the GNU General Public License as published by
13
 * the Free Software Foundation; either version 3 of the License, or
14
 * (at your option) any later version.
15
 *
16
 * This program is distributed in the hope that it will be useful,
17
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19
 * GNU General Public License for more details.
20
 *
21
 * You should have received a copy of the GNU General Public License
22
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
23
 */
24
25
namespace Dolibarr\Code\Compta\Classes;
26
27
use Dolibarr\Core\Base\CommonObject;
28
use DoliDB;
29
30
/**
31
 * \file       htdocs/compta/cashcontrol/class/cashcontrol.class.php
32
 * \ingroup    cashdesk|takepos
33
 * \brief      This file is CRUD class file (Create/Read/Update/Delete) for cash fence table
34
 */
35
36
/**
37
 *    Class to manage cash fence
38
 */
39
class CashControl extends CommonObject
40
{
41
    /**
42
     * @var string ID to identify managed object
43
     */
44
    public $element = 'cashcontrol';
45
46
    /**
47
     * @var string Name of table without prefix where object is stored
48
     */
49
    public $table_element = 'pos_cash_fence';
50
51
    /**
52
     * @var string String with name of icon for pos_cash_fence. Must be the part after the 'object_' into object_pos_cash_fence.png
53
     */
54
    public $picto = 'cash-register';
55
56
    /**
57
     *  'type' field format ('integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter]]', 'sellist:TableName:LabelFieldName[:KeyFieldName[:KeyFieldParent[:Filter]]]', 'varchar(x)', 'double(24,8)', 'real', 'price', 'text', 'text:none', 'html', 'date', 'datetime', 'timestamp', 'duration', 'mail', 'phone', 'url', 'password')
58
     *         Note: Filter can be a string like "(t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.nature:is:NULL)"
59
     *  'label' the translation key.
60
     *  'picto' is code of a picto to show before value in forms
61
     *  'enabled' is a condition when the field must be managed (Example: 1 or 'getDolGlobalString("MY_SETUP_PARAM")'
62
     *  'position' is the sort order of field.
63
     *  'notnull' is set to 1 if not null in database. Set to -1 if we must set data to null if empty ('' or 0).
64
     *  'visible' says if field is visible in list (Examples: 0=Not visible, 1=Visible on list and create/update/view forms, 2=Visible on list only, 3=Visible on create/update/view form only (not list), 4=Visible on list and update/view form only (not create). 5=Visible on list and view only (not create/not update). Using a negative value means field is not shown by default on list but can be selected for viewing)
65
     *  'noteditable' says if field is not editable (1 or 0)
66
     *  'default' is a default value for creation (can still be overwrote by the Setup of Default Values if field is editable in creation form). Note: If default is set to '(PROV)' and field is 'ref', the default value will be set to '(PROVid)' where id is rowid when a new record is created.
67
     *  'index' if we want an index in database.
68
     *  'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommended to name the field fk_...).
69
     *  'searchall' is 1 if we want to search in this field when making a search from the quick search button.
70
     *  'isameasure' must be set to 1 if you want to have a total on list for this field. Field type must be summable like integer or double(24,8).
71
     *  'css' and 'cssview' and 'csslist' is the CSS style to use on field. 'css' is used in creation and update. 'cssview' is used in view mode. 'csslist' is used for columns in lists. For example: 'maxwidth200', 'wordbreak', 'tdoverflowmax200'
72
     *  'help' is a 'TranslationString' to use to show a tooltip on field. You can also use 'TranslationString:keyfortooltiponlick' for a tooltip on click.
73
     *  'showoncombobox' if value of the field must be visible into the label of the combobox that list record
74
     *  'disabled' is 1 if we want to have the field locked by a 'disabled' attribute. In most cases, this is never set into the definition of $fields into class, but is set dynamically by some part of code.
75
     *  'arrayofkeyval' to set list of value if type is a list of predefined values. For example: array("0"=>"Draft","1"=>"Active","-1"=>"Cancel")
76
     *  'autofocusoncreate' to have field having the focus on a create form. Only 1 field should have this property set to 1.
77
     *  'comment' is not used. You can store here any text of your choice. It is not used by application.
78
     *
79
     *  Note: To have value dynamic, you can set value to 0 in definition and edit the value on the fly into the constructor.
80
     */
81
    public $fields = array(
82
    'rowid' => array('type' => 'integer', 'label' => 'TechnicalID', 'enabled' => 1, 'visible' => -2, 'notnull' => 1, 'position' => 10),
83
    'entity' => array('type' => 'integer', 'label' => 'Entity', 'enabled' => 1, 'visible' => 0, 'notnull' => 1, 'position' => 15),
84
    'ref' => array('type' => 'varchar(64)', 'label' => 'Ref', 'enabled' => 1, 'visible' => 1, 'notnull' => 1, 'position' => 18),
85
    'posmodule' => array('type' => 'varchar(30)', 'label' => 'Module', 'enabled' => 1, 'visible' => 1, 'notnull' => 1, 'position' => 19),
86
    'posnumber' => array('type' => 'varchar(30)', 'label' => 'Terminal', 'enabled' => 1, 'visible' => 1, 'notnull' => 1, 'position' => 20, 'css' => 'center'),
87
    'label' => array('type' => 'varchar(255)', 'label' => 'Label', 'enabled' => 1, 'visible' => 0, 'position' => 24),
88
    'opening' => array('type' => 'price', 'label' => 'Opening', 'enabled' => 1, 'visible' => 1, 'position' => 25, 'csslist' => 'amount'),
89
    'cash' => array('type' => 'price', 'label' => 'Cash', 'enabled' => 1, 'visible' => 1, 'position' => 30, 'csslist' => 'amount'),
90
    'cheque' => array('type' => 'price', 'label' => 'Cheque', 'enabled' => 1, 'visible' => 1, 'position' => 33, 'csslist' => 'amount'),
91
    'card' => array('type' => 'price', 'label' => 'CreditCard', 'enabled' => 1, 'visible' => 1, 'position' => 36, 'csslist' => 'amount'),
92
    'year_close' => array('type' => 'integer', 'label' => 'Year close', 'enabled' => 1, 'visible' => 1, 'notnull' => 1, 'position' => 50, 'css' => 'center'),
93
    'month_close' => array('type' => 'integer', 'label' => 'Month close', 'enabled' => 1, 'visible' => 1, 'position' => 55, 'css' => 'center'),
94
    'day_close' => array('type' => 'integer', 'label' => 'Day close', 'enabled' => 1, 'visible' => 1, 'position' => 60, 'css' => 'center'),
95
    'date_creation' => array('type' => 'datetime', 'label' => 'DateCreation', 'enabled' => 1, 'visible' => -1, 'notnull' => 1, 'position' => 500),
96
    'date_valid' => array('type' => 'datetime', 'label' => 'DateValidation', 'enabled' => 1, 'visible' => -1, 'notnull' => 1, 'position' => 502),
97
    'tms' => array('type' => 'timestamp', 'label' => 'Tms', 'enabled' => 1, 'visible' => 0, 'notnull' => 1, 'position' => 505),
98
    'fk_user_creat' => array('type' => 'integer:User', 'label' => 'UserCreation', 'enabled' => 1, 'visible' => -1, 'notnull' => 1, 'position' => 600),
99
    'fk_user_valid' => array('type' => 'integer:User', 'label' => 'UserValidation', 'enabled' => 1, 'visible' => -1, 'notnull' => 1, 'position' => 602),
100
    'import_key' => array('type' => 'varchar(14)', 'label' => 'Import key', 'enabled' => 1, 'visible' => 0, 'position' => 700),
101
    'status' => array('type' => 'integer', 'label' => 'Status', 'enabled' => 1, 'visible' => 1, 'position' => 1000, 'notnull' => 1, 'index' => 1, 'arrayofkeyval' => array('0' => 'Draft', '1' => 'Validated')),
102
    );
103
104
    /**
105
     * @var int Object Id
106
     */
107
    public $id;
108
    public $label;
109
    public $opening;
110
    public $status;
111
    public $year_close;
112
    public $month_close;
113
    public $day_close;
114
    public $posmodule;
115
    public $posnumber;
116
    public $cash;
117
    public $cheque;
118
    public $card;
119
120
    /**
121
     * @var integer|string date_creation
122
     */
123
    public $date_creation;
124
    public $fk_user_creat;
125
126
    /**
127
     * @var integer|string $date_modification
128
     */
129
    public $date_modification;
130
131
    /**
132
     * @var integer|string $date_valid
133
     */
134
    public $date_valid;
135
    public $fk_user_valid;
136
137
138
    const STATUS_DRAFT = 0;
139
    const STATUS_VALIDATED = 1;
140
    const STATUS_CLOSED = 1; // For the moment CLOSED = VALIDATED
141
142
143
    /**
144
     * Constructor
145
     *
146
     * @param DoliDB $db Database handler
147
     */
148
    public function __construct(DoliDB $db)
149
    {
150
        $this->db = $db;
151
152
        $this->ismultientitymanaged = 1;
153
        $this->isextrafieldmanaged = 0;
154
    }
155
156
157
    /**
158
     *  Create in database
159
     *
160
     * @param  User $user User that create
161
     * @param  int $notrigger 0=launch triggers after, 1=disable triggers
162
     * @return int Return integer <0 if KO, Id of created object if OK
163
     */
164
    public function create(User $user, $notrigger = 0)
165
    {
166
        global $conf;
167
168
        $error = 0;
169
170
        // Clean data
171
        if (empty($this->cash)) {
172
            $this->cash = 0;
173
        }
174
        if (empty($this->cheque)) {
175
            $this->cheque = 0;
176
        }
177
        if (empty($this->card)) {
178
            $this->card = 0;
179
        }
180
181
        // Insert request
182
        $sql = "INSERT INTO " . MAIN_DB_PREFIX . "pos_cash_fence (";
183
        $sql .= "entity";
184
        //$sql .= ", ref";
185
        $sql .= ", opening";
186
        $sql .= ", status";
187
        $sql .= ", date_creation";
188
        $sql .= ", posmodule";
189
        $sql .= ", posnumber";
190
        $sql .= ", day_close";
191
        $sql .= ", month_close";
192
        $sql .= ", year_close";
193
        $sql .= ", cash";
194
        $sql .= ", cheque";
195
        $sql .= ", card";
196
        $sql .= ") VALUES (";
197
        //$sql .= "'(PROV)', ";
198
        $sql .= ((int) $conf->entity);
199
        $sql .= ", " . (is_numeric($this->opening) ? price2num($this->opening, 'MT') : 0);
200
        $sql .= ", 0"; // Draft by default
201
        $sql .= ", '" . $this->db->idate(dol_now()) . "'";
202
        $sql .= ", '" . $this->db->escape($this->posmodule) . "'";
203
        $sql .= ", '" . $this->db->escape($this->posnumber) . "'";
204
        $sql .= ", " . ($this->day_close > 0 ? $this->day_close : "null");
205
        $sql .= ", " . ($this->month_close > 0 ? $this->month_close : "null");
206
        $sql .= ", " . ((int) $this->year_close);
207
        $sql .= ", " . price2num($this->cash, 'MT');
208
        $sql .= ", " . price2num($this->cheque, 'MT');
209
        $sql .= ", " . price2num($this->card, 'MT');
210
        $sql .= ")";
211
212
        $this->db->begin();
213
214
        dol_syslog(get_class($this) . "::create", LOG_DEBUG);
215
        $resql = $this->db->query($sql);
216
        if (!$resql) {
217
            $error++;
218
            $this->errors[] = "Error " . $this->db->lasterror();
219
        }
220
221
        if (!$error) {
222
            $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX . "pos_cash_fence");
223
224
            $sql = 'UPDATE ' . MAIN_DB_PREFIX . 'pos_cash_fence SET ref = rowid where rowid = ' . ((int) $this->id);
225
            $this->db->query($sql);
226
        }
227
228
        // Commit or rollback
229
        if ($error) {
230
            foreach ($this->errors as $errmsg) {
231
                dol_syslog(get_class($this) . "::create " . $errmsg, LOG_ERR);
232
                $this->error .= ($this->error ? ', ' . $errmsg : $errmsg);
233
            }
234
            $this->db->rollback();
235
            return -1 * $error;
236
        } else {
237
            $this->db->commit();
238
            return $this->id;
239
        }
240
    }
241
242
    /**
243
     * Validate cash fence
244
     *
245
     * @param   User        $user       User
246
     * @param   int         $notrigger  No trigger
247
     * @return  int                     Return integer <0 if KO, >0 if OK
248
     */
249
    public function valid(User $user, $notrigger = 0)
250
    {
251
        global $conf, $langs;
252
        require_once constant('DOL_DOCUMENT_ROOT') . '/core/lib/files.lib.php';
253
254
        $error = 0;
255
256
        // Protection
257
        if ($this->status == self::STATUS_VALIDATED) {
258
            dol_syslog(get_class($this) . "::valid action abandoned: already validated", LOG_WARNING);
259
            return 0;
260
        }
261
262
        $now = dol_now();
263
264
        // Update request
265
        $sql = "UPDATE " . MAIN_DB_PREFIX . "pos_cash_fence";
266
        $sql .= " SET status = " . self::STATUS_VALIDATED . ",";
267
        $sql .= " date_valid='" . $this->db->idate($now) . "',";
268
        $sql .= " fk_user_valid = " . $user->id;
269
        $sql .= " WHERE rowid=" . ((int) $this->id);
270
271
        $this->db->begin();
272
273
        dol_syslog(get_class($this) . "::close", LOG_DEBUG);
274
        $resql = $this->db->query($sql);
275
        if (!$resql) {
276
            $error++;
277
            $this->errors[] = "Error " . $this->db->lasterror();
278
        }
279
280
        if (!$error) {
281
            $this->status = self::STATUS_VALIDATED;
282
            $this->date_valid = $now;
283
            $this->fk_user_valid = $user->id;
284
        }
285
286
        if (!$error && !$notrigger) {
287
            // Call trigger
288
            $result = $this->call_trigger('CASHCONTROL_VALIDATE', $user);
289
            if ($result < 0) {
290
                $error++;
291
            }
292
            // End call triggers
293
        }
294
295
        // Commit or rollback
296
        if ($error) {
297
            foreach ($this->errors as $errmsg) {
298
                dol_syslog(get_class($this) . "::create " . $errmsg, LOG_ERR);
299
                $this->error .= ($this->error ? ', ' . $errmsg : $errmsg);
300
            }
301
            $this->db->rollback();
302
            return -1 * $error;
303
        } else {
304
            $this->db->commit();
305
            return $this->id;
306
        }
307
    }
308
309
310
    /**
311
     * Load object in memory from the database
312
     *
313
     * @param int    $id   Id object
314
     * @param string $ref  Ref
315
     * @return int         Return integer <0 if KO, 0 if not found, >0 if OK
316
     */
317
    public function fetch($id, $ref = null)
318
    {
319
        $result = $this->fetchCommon($id, $ref);
320
        //if ($result > 0 && !empty($this->table_element_line)) $this->fetchLines();
321
        return $result;
322
    }
323
324
    /**
325
     * Update object into database
326
     *
327
     * @param  User $user      User that modifies
328
     * @param  int  $notrigger 0=launch triggers after, 1=disable triggers
329
     * @return int             Return integer <0 if KO, >0 if OK
330
     */
331
    public function update(User $user, $notrigger = 0)
332
    {
333
        return $this->updateCommon($user, $notrigger);
334
    }
335
336
    /**
337
     * Delete object in database
338
     *
339
     * @param User  $user       User that deletes
340
     * @param int   $notrigger  0=launch triggers after, 1=disable triggers
341
     * @return int              Return integer <0 if KO, >0 if OK
342
     */
343
    public function delete(User $user, $notrigger = 0)
344
    {
345
        return $this->deleteCommon($user, $notrigger);
346
        //return $this->deleteCommon($user, $notrigger, 1);
347
    }
348
349
    /**
350
     *  Return label of the status
351
     *
352
     *  @param  int     $mode          0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto, 6=Long label + Picto
353
     *  @return string                 Label of status
354
     */
355
    public function getLibStatut($mode = 0)
356
    {
357
        return $this->LibStatut($this->status, $mode);
358
    }
359
360
	// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
361
    /**
362
     *  Return the status
363
     *
364
     *  @param  int     $status        Id status
365
     *  @param  int     $mode          0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto, 6=Long label + Picto
366
     *  @return string                 Label of status
367
     */
368
    public function LibStatut($status, $mode = 0)
369
    {
370
		// phpcs:enable
371
        if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
372
            global $langs;
373
            //$langs->load("mymodule");
374
            $this->labelStatus[0] = $langs->transnoentitiesnoconv('Draft');
375
            $this->labelStatus[1] = $langs->transnoentitiesnoconv('Closed');
376
            $this->labelStatusShort[0] = $langs->transnoentitiesnoconv('Draft');
377
            $this->labelStatusShort[1] = $langs->transnoentitiesnoconv('Closed');
378
        }
379
380
        $statusType = 'status0';
381
        if ($status == self::STATUS_VALIDATED) {
382
            $statusType = 'status6';
383
        }
384
385
        return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status], '', $statusType, $mode);
386
    }
387
388
    /**
389
     *  Return clicable link of object (with eventually picto)
390
     *
391
     *  @param  int     $withpicto                  Add picto into link
392
     *  @param  string  $option                     On what the link point to ('nolink', ...)
393
     *  @param  int     $notooltip                  1=Disable tooltip
394
     *  @param  string  $morecss                    Add more css on link
395
     *  @param  int     $save_lastsearch_value      -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking
396
     *  @return string                              String with URL
397
     */
398
    public function getNomUrl($withpicto = 0, $option = '', $notooltip = 0, $morecss = '', $save_lastsearch_value = -1)
399
    {
400
        global $conf, $langs, $hookmanager;
401
402
        if (!empty($conf->dol_no_mouse_hover)) {
403
            $notooltip = 1; // Force disable tooltips
404
        }
405
406
        $result = '';
407
408
        $newref = ($this->ref ? $this->ref : $this->id);
409
410
        $label = '<u>' . $langs->trans("CashControl") . '</u>';
411
        $label .= '<br>';
412
        $label .= '<b>' . $langs->trans('Ref') . ':</b> ' . ($this->ref ? $this->ref : $this->id);
413
414
        $url = constant('BASE_URL') . '/compta/cashcontrol/cashcontrol_card.php?id=' . $this->id;
415
416
        if ($option != 'nolink') {
417
            // Add param to save lastsearch_values or not
418
            $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
419
            if ($save_lastsearch_value == -1 && isset($_SERVER["PHP_SELF"]) && preg_match('/list\.php/', $_SERVER["PHP_SELF"])) {
420
                $add_save_lastsearch_values = 1;
421
            }
422
            if ($add_save_lastsearch_values) {
423
                $url .= '&save_lastsearch_values=1';
424
            }
425
        }
426
427
        $linkclose = '';
428
        if (empty($notooltip)) {
429
            if (getDolGlobalString('MAIN_OPTIMIZEFORTEXTBROWSER')) {
430
                $label = $langs->trans("ShowMyObject");
431
                $linkclose .= ' alt="' . dol_escape_htmltag($label, 1) . '"';
432
            }
433
            $linkclose .= ' title="' . dol_escape_htmltag($label, 1) . '"';
434
            $linkclose .= ' class="classfortooltip' . ($morecss ? ' ' . $morecss : '') . '"';
435
        } else {
436
            $linkclose = ($morecss ? ' class="' . $morecss . '"' : '');
437
        }
438
439
        $linkstart = '<a href="' . $url . '"';
440
        $linkstart .= $linkclose . '>';
441
        $linkend = '</a>';
442
443
        $result .= $linkstart;
444
        if ($withpicto) {
445
            $result .= img_object(($notooltip ? '' : $label), ($this->picto ? $this->picto : 'generic'), ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : 'class="' . (($withpicto != 2) ? 'paddingright ' : '') . 'classfortooltip"'), 0, 0, $notooltip ? 0 : 1);
446
        }
447
        if ($withpicto != 2) {
448
            $result .= $this->ref;
449
        }
450
        $result .= $linkend;
451
        //if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : '');
452
453
        global $action;
454
        $hookmanager->initHooks(array('cashfencedao'));
455
        $parameters = array('id' => $this->id, 'getnomurl' => &$result);
456
        $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
457
        if ($reshook > 0) {
458
            $result = $hookmanager->resPrint;
459
        } else {
460
            $result .= $hookmanager->resPrint;
461
        }
462
463
        return $result;
464
    }
465
466
    /**
467
     *  Return clicable link of object (with eventually picto)
468
     *
469
     *  @param      string      $option                 Where point the link (0=> main card, 1,2 => shipment, 'nolink'=>No link)
470
     *  @param      array       $arraydata              Array of data
471
     *  @return     string                              HTML Code for Kanban thumb.
472
     */
473
    public function getKanbanView($option = '', $arraydata = null)
474
    {
475
        global $langs;
476
477
        $selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
478
479
        $return = '<div class="box-flex-item box-flex-grow-zero">';
480
        $return .= '<div class="info-box info-box-sm">';
481
        $return .= '<span class="info-box-icon bg-infobox-action">';
482
        $return .= img_picto('', $this->picto);
483
        //var_dump($this->fields['rowid']);exit;
484
        $return .= '</span>';
485
        $return .= '<div class="info-box-content">';
486
        $return .= '<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">' . (method_exists($this, 'getNomUrl') ? $this->getNomUrl(1, 1) : $this->ref) . '</span>';
487
        if ($selected >= 0) {
488
            $return .= '<input id="cb' . $this->id . '" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="' . $this->id . '"' . ($selected ? ' checked="checked"' : '') . '>';
489
        }
490
        if (property_exists($this, 'posmodule')) {
491
            $return .= '<br><span class="opacitymedium">' . substr($langs->trans("Module/Application"), 0, 12) . '</span> : <span class="info-box-label">' . $this->posmodule . '</span>';
492
        }
493
        if (property_exists($this, 'year_close')) {
494
            $return .= '<br><span class="info-box-label opacitymedium" >' . $langs->trans("Year") . '</span> : <span>' . $this->year_close . '</span>';
495
        }
496
        if (method_exists($this, 'getLibStatut')) {
497
            $return .= '<br><div class="info-box-status">' . $this->getLibStatut(3) . '</div>';
498
        }
499
        $return .= '</div>';
500
        $return .= '</div>';
501
        $return .= '</div>';
502
        return $return;
503
    }
504
}
505