Test Failed
Push — main ( 1be143...29a1e7 )
by Rafael
51:40
created

CompanyPaymentMode::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) 2017       Laurent Destailleur     <[email protected]>
4
 * Copyright (C) 2024       Frédéric France         <[email protected]>
5
 * Copyright (C) 2024		MDW						<[email protected]>
6
 * Copyright (C) 2024       Rafael San José         <[email protected]>
7
 *
8
 * This program is free software; you can redistribute it and/or modify
9
 * it under the terms of the GNU General Public License as published by
10
 * the Free Software Foundation; either version 3 of the License, or
11
 * (at your option) any later version.
12
 *
13
 * This program is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 * GNU General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU General Public License
19
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
20
 */
21
22
/**
23
 * \file        class/companypaymentmode.class.php
24
 * \ingroup     company
25
 * \brief       This file is a CRUD class file for CompanyPaymentMode (Create/Read/Update/Delete)
26
 */
27
28
namespace DoliModules\Company\Model;
29
30
use DoliCore\Base\GenericDocument;
31
use DoliDB;
32
use User;
33
34
/**
35
 * Class for CompanyPaymentMode
36
 */
37
class CompanyPaymentMode extends GenericDocument
38
{
39
    const STATUS_ENABLED = 1;
40
    const STATUS_CANCELED = 0;
41
    /**
42
     * @var string ID to identify managed object
43
     */
44
    public $element = 'companypaymentmode';
45
    /**
46
     * @var string Name of table without prefix where object is stored
47
     */
48
    public $table_element = 'societe_rib';
49
    /**
50
     * @var string  Does this object support multicompany module ?
51
     * 0=No test on entity, 1=Test with field entity, 'field@table'=Test with link by field@table
52
     */
53
    public $ismultientitymanaged = 'fk_soc@societe';
54
    /**
55
     * @var int  Does companypaymentmode support extrafields ? 0=No, 1=Yes
56
     */
57
    public $isextrafieldmanaged = 0;
58
    /**
59
     * @var string String with name of icon for companypaymentmode. Must be the part after the 'object_' into
60
     *      object_companypaymentmode.png
61
     */
62
    public $picto = 'generic';
63
64
65
    /**
66
     *  'type' if the field format.
67
     *  'label' the translation key.
68
     *  'enabled' is a condition when the field must be managed.
69
     *  'visible' says if field is visible in list (Examples: 0=Not visible, 1=Visible on list and create/update/view
70
     *  forms, 2=Visible on list only. Using a negative value means field is not shown by default on list but can be
71
     *  selected for viewing)
72
     *  'notnull' is set to 1 if not null in database. Set to -1 if we must set data to null if empty ('' or 0).
73
     *  'index' if we want an index in database.
74
     *  'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommended to name the field fk_...).
75
     *  'position' is the sort order of field.
76
     *  'searchall' is 1 if we want to search in this field when making a search from the quick search button.
77
     *  'isameasure' must be set to 1 if you want to have a total on list for this field. Field type must be summable
78
     *  like integer or double(24,8).
79
     *  'help' is a string visible as a tooltip on field
80
     *  'comment' is not used. You can store here any text of your choice. It is not used by application.
81
     *  'default' is a default value for creation (can still be replaced by the global setup of default values)
82
     *  'showoncombobox' if field must be shown into the label of combobox
83
     */
84
85
    // BEGIN MODULEBUILDER PROPERTIES
86
    /**
87
     * @var array<string,array{type:string,label:string,enabled:int<0,2>|string,position:int,notnull:int,visible:int,noteditable?:int,default?:string,index?:int,foreignkey?:string,searchall?:int,isameasure?:int,css?:string,csslist?:string,help?:string,showoncombobox?:int,disabled?:int,arrayofkeyval?:array<int,string>,comment?:string}>
0 ignored issues
show
Documentation Bug introduced by
The doc comment array<string,array{type:...ring>,comment?:string}> at position 16 could not be parsed: Expected '}' at position 16, but found 'int'.
Loading history...
88
     *      Array with all fields and their property. Do not use it as a static var. It may be modified by constructor.
89
     */
90
    public $fields = [
91
        'rowid' => ['type' => 'integer', 'label' => 'Rowid', 'enabled' => 1, 'visible' => -2, 'notnull' => 1, 'position' => 10],
92
        'fk_soc' => ['type' => 'integer', 'label' => 'Fk soc', 'enabled' => 1, 'visible' => -2, 'notnull' => 1, 'position' => 15],
93
        'label' => ['type' => 'varchar(30)', 'label' => 'Label', 'enabled' => 1, 'visible' => -2, 'position' => 30],
94
        'bank' => ['type' => 'varchar(255)', 'label' => 'Bank', 'enabled' => 1, 'visible' => -2, 'position' => 35],
95
        'code_banque' => ['type' => 'varchar(128)', 'label' => 'Code banque', 'enabled' => 1, 'visible' => -2, 'position' => 40],
96
        'code_guichet' => ['type' => 'varchar(6)', 'label' => 'Code guichet', 'enabled' => 1, 'visible' => -2, 'position' => 45],
97
        'number' => ['type' => 'varchar(255)', 'label' => 'Number', 'enabled' => 1, 'visible' => -2, 'position' => 50],
98
        'cle_rib' => ['type' => 'varchar(5)', 'label' => 'Cle rib', 'enabled' => 1, 'visible' => -2, 'position' => 55],
99
        'bic' => ['type' => 'varchar(20)', 'label' => 'Bic', 'enabled' => 1, 'visible' => -2, 'position' => 60],
100
        'iban_prefix' => ['type' => 'varchar(34)', 'label' => 'Iban prefix', 'enabled' => 1, 'visible' => -2, 'position' => 65],
101
        'domiciliation' => ['type' => 'varchar(255)', 'label' => 'Domiciliation', 'enabled' => 1, 'visible' => -2, 'position' => 70],
102
        'proprio' => ['type' => 'varchar(60)', 'label' => 'Proprio', 'enabled' => 1, 'visible' => -2, 'position' => 75],
103
        'owner_address' => ['type' => 'text', 'label' => 'Owner address', 'enabled' => 1, 'visible' => -2, 'position' => 80],
104
        'default_rib' => ['type' => 'tinyint(4)', 'label' => 'Default rib', 'enabled' => 1, 'visible' => -2, 'notnull' => 1, 'position' => 85],
105
        'rum' => ['type' => 'varchar(32)', 'label' => 'Rum', 'enabled' => 1, 'visible' => -2, 'position' => 90],
106
        'date_rum' => ['type' => 'date', 'label' => 'Date rum', 'enabled' => 1, 'visible' => -2, 'position' => 95],
107
        'frstrecur' => ['type' => 'varchar(16)', 'label' => 'Frstrecur', 'enabled' => 1, 'visible' => -2, 'position' => 100],
108
        'type' => ['type' => 'varchar(32)', 'label' => 'Type', 'enabled' => 1, 'visible' => -2, 'position' => 110],
109
        'last_four' => ['type' => 'varchar(4)', 'label' => 'Last four', 'enabled' => 1, 'visible' => -2, 'position' => 115],
110
        'card_type' => ['type' => 'varchar(255)', 'label' => 'Card type', 'enabled' => 1, 'visible' => -2, 'position' => 120],
111
        'cvn' => ['type' => 'varchar(255)', 'label' => 'Cvn', 'enabled' => 1, 'visible' => -2, 'position' => 125],
112
        'exp_date_month' => ['type' => 'integer', 'label' => 'Exp date month', 'enabled' => 1, 'visible' => -2, 'position' => 130],
113
        'exp_date_year' => ['type' => 'integer', 'label' => 'Exp date year', 'enabled' => 1, 'visible' => -2, 'position' => 135],
114
        'country_code' => ['type' => 'varchar(10)', 'label' => 'Country code', 'enabled' => 1, 'visible' => -2, 'position' => 140],
115
        'approved' => ['type' => 'integer', 'label' => 'Approved', 'enabled' => 1, 'visible' => -2, 'position' => 145],
116
        'email' => ['type' => 'varchar(255)', 'label' => 'Email', 'enabled' => 1, 'visible' => -2, 'position' => 150],
117
        'max_total_amount_of_all_payments' => ['type' => 'double(24,8)', 'label' => 'Max total amount of all payments', 'enabled' => 1, 'visible' => -2, 'position' => 155],
118
        'preapproval_key' => ['type' => 'varchar(255)', 'label' => 'Preapproval key', 'enabled' => 1, 'visible' => -2, 'position' => 160],
119
        'total_amount_of_all_payments' => ['type' => 'double(24,8)', 'label' => 'Total amount of all payments', 'enabled' => 1, 'visible' => -2, 'position' => 165],
120
        'stripe_card_ref' => ['type' => 'varchar(128)', 'label' => 'ExternalSystemID', 'enabled' => 1, 'visible' => -2, 'position' => 170, 'help' => 'IDOfPaymentInAnExternalSystem'],
121
        'stripe_account' => ['type' => 'varchar(128)', 'label' => 'ExternalSystemCustomerAccount', 'enabled' => 1, 'visible' => -2, 'position' => 171, 'help' => 'IDOfCustomerInAnExternalSystem'],
122
        'ext_payment_site' => ['type' => 'varchar(128)', 'label' => 'ExternalSystem', 'enabled' => 1, 'visible' => -2, 'position' => 172, 'help' => 'NameOfExternalSystem'],
123
        'status' => ['type' => 'integer', 'label' => 'Status', 'enabled' => 1, 'visible' => -2, 'notnull' => 1, 'position' => 175],
124
        'starting_date' => ['type' => 'date', 'label' => 'Starting date', 'enabled' => 1, 'visible' => -2, 'position' => 180],
125
        'ending_date' => ['type' => 'date', 'label' => 'Ending date', 'enabled' => 1, 'visible' => -2, 'position' => 185],
126
        'datec' => ['type' => 'datetime', 'label' => 'DateCreation', 'enabled' => 1, 'visible' => -2, 'position' => 20],
127
        'tms' => ['type' => 'timestamp', 'label' => 'Tms', 'enabled' => 1, 'visible' => -2, 'notnull' => 1, 'position' => 25],
128
        'import_key' => ['type' => 'varchar(14)', 'label' => 'Import key', 'enabled' => 1, 'visible' => -2, 'position' => 105],
129
        //'aaa' =>array('type'=>'date', 'label'=>'Ending date', 'enabled'=>0, 'visible'=>-2, 'position'=>185),
130
    ];
131
132
    /**
133
     * @var int ID
134
     */
135
    public $rowid;
136
137
    /**
138
     * @var int Thirdparty ID
139
     */
140
    public $fk_soc;
141
142
    /**
143
     * @var string company payment mode label
144
     */
145
    public $label;
146
147
    public $bank;
148
    public $code_banque;
149
    public $code_guichet;
150
    public $number;
151
    public $cle_rib;
152
    public $bic;
153
154
    /**
155
     * @var string iban
156
     * @deprecated
157
     * @see $iban_prefix
158
     */
159
    public $iban;
160
161
    /**
162
     * iban_prefix
163
     * @var string
164
     */
165
    public $iban_prefix;
166
    public $domiciliation;
167
    public $proprio;
168
    public $owner_address;
169
    public $default_rib;
170
    public $rum;
171
    public $date_rum;
172
    public $frstrecur;
173
    public $type;
174
    public $last_four;
175
    public $card_type;
176
    public $cvn;
177
    public $exp_date_month;
178
    public $exp_date_year;
179
    public $country_code;
180
    public $approved;
181
    public $email;
182
    public $max_total_amount_of_all_payments;
183
    public $preapproval_key;
184
    public $total_amount_of_all_payments;
185
    public $stripe_card_ref;    // External system payment mode ID
186
    public $stripe_account;     // External system customer ID
187
    public $ext_payment_site;   // External system 'StripeLive', 'StripeTest', 'StancerLive', 'StancerTest', ...
188
189
    /**
190
     * @var int Status
191
     */
192
    public $status;
193
194
    public $starting_date;
195
    public $ending_date;
196
197
    /**
198
     * Date creation record (datec)
199
     *
200
     * @var integer
201
     */
202
    public $datec;
203
204
    public $import_key;
205
    // END MODULEBUILDER PROPERTIES
206
207
208
    /**
209
     * Constructor
210
     *
211
     * @param DoliDB $db Database handler
212
     */
213
    public function __construct(DoliDB $db)
214
    {
215
        global $conf;
216
217
        $this->db = $db;
218
219
        if (!getDolGlobalString('MAIN_SHOW_TECHNICAL_ID') && isset($this->fields['rowid'])) {
220
            $this->fields['rowid']['visible'] = 0;
221
        }
222
        if (!isModEnabled('multicompany') && isset($this->fields['entity'])) {
223
            $this->fields['entity']['enabled'] = 0;
224
        }
225
    }
226
227
    /**
228
     * Create object into database
229
     *
230
     * @param User $user      User that creates
231
     * @param int  $notrigger 0=launch triggers after, 1=disable triggers
232
     *
233
     * @return int             Return integer <0 if KO, Id of created object if OK
234
     */
235
    public function create(User $user, $notrigger = 0)
236
    {
237
        $idpayment = $this->createCommon($user, $notrigger);
238
239
        return $idpayment;
240
    }
241
242
    /**
243
     * Clone and object into another one
244
     *
245
     * @param User $user   User that creates
246
     * @param int  $fromid Id of object to clone
247
     *
248
     * @return  mixed               New object created, <0 if KO
249
     */
250
    public function createFromClone(User $user, $fromid)
251
    {
252
        global $hookmanager, $langs;
253
        $error = 0;
254
255
        dol_syslog(__METHOD__, LOG_DEBUG);
256
257
        $object = new self($this->db);
258
259
        $this->db->begin();
260
261
        // Load source object
262
        $object->fetchCommon($fromid);
263
        // Reset some properties
264
        unset($object->id);
265
        unset($object->fk_user_creat);
0 ignored issues
show
Deprecated Code introduced by
The property DoliCore\Base\GenericDocument::$fk_user_creat has been deprecated: Use $user_creation_id ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

265
        unset(/** @scrutinizer ignore-deprecated */ $object->fk_user_creat);

This property has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the property will be removed from the class and what other property to use instead.

Loading history...
266
        unset($object->import_key);
267
268
        // Clear fields
269
        $object->ref = "copy_of_" . $object->ref;
270
        // $object->title = $langs->trans("CopyOf")." ".$object->title;
271
272
        // Create clone
273
        $object->context['createfromclone'] = 'createfromclone';
274
        $result = $object->createCommon($user);
275
        if ($result < 0) {
276
            $error++;
277
            $this->error = $object->error;
278
            $this->errors = $object->errors;
279
        }
280
281
        unset($object->context['createfromclone']);
282
283
        // End
284
        if (!$error) {
285
            $this->db->commit();
286
            return $object;
287
        } else {
288
            $this->db->rollback();
289
            return -1;
290
        }
291
    }
292
293
    /**
294
     * Load object in memory from the database
295
     *
296
     * @param int    $id        Id object
297
     * @param string $ref       Ref
298
     * @param int    $socid     Id of company to get first default payment mode
299
     * @param string $type      Filter on type ('ban', 'card', ...)
300
     * @param string $morewhere More SQL filters (' AND ...')
301
     *
302
     * @return  int                     Return integer <0 if KO, 0 if not found, >0 if OK
303
     */
304
    public function fetch($id, $ref = null, $socid = 0, $type = '', $morewhere = '')
305
    {
306
        if ($socid) {
307
            $morewhere .= " AND fk_soc = " . ((int) $socid) . " AND default_rib = 1";
308
        }
309
        if ($type) {
310
            $morewhere .= " AND type = '" . $this->db->escape($type) . "'";
311
        }
312
313
        $result = $this->fetchCommon($id, $ref, $morewhere);
314
315
        // For backward compatibility
316
        $this->iban = $this->iban_prefix;
317
318
        //if ($result > 0 && !empty($this->table_element_line)) $this->fetchLines();
319
        return $result;
320
    }
321
322
    /**
323
     * Load object lines in memory from the database
324
     *
325
     * @return int         Return integer <0 if KO, 0 if not found, >0 if OK
326
     */
327
    /*public function fetchLines()
328
    {
329
        $this->lines=array();
330
331
        // Load lines with object CompanyPaymentModeLine
332
333
        return count($this->lines)?1:0;
334
    }*/
335
336
    /**
337
     * Update object into database
338
     *
339
     * @param User $user      User that modifies
340
     * @param int  $notrigger 0=launch triggers after, 1=disable triggers
341
     *
342
     * @return int             Return integer <0 if KO, >0 if OK
343
     */
344
    public function update(User $user, $notrigger = 0)
345
    {
346
        return $this->updateCommon($user, $notrigger);
347
    }
348
349
    /**
350
     * Delete object in database
351
     *
352
     * @param User $user      User that deletes
353
     * @param int  $notrigger 0=launch triggers after, 1=disable triggers
354
     *
355
     * @return int              Return integer <0 if KO, >0 if OK
356
     */
357
    public function delete(User $user, $notrigger = 0)
358
    {
359
        return $this->deleteCommon($user, $notrigger);
360
    }
361
362
    /**
363
     *  Return a link to the object card (with optionally the picto)
364
     *
365
     * @param int    $withpicto             Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto)
366
     * @param string $option                On what the link point to ('nolink', ...)
367
     * @param int    $notooltip             1=Disable tooltip
368
     * @param string $morecss               Add more css on link
369
     * @param int    $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save
370
     *                                      lastsearch_values whenclicking
371
     *
372
     * @return string                              String with URL
373
     */
374
    public function getNomUrl($withpicto = 0, $option = '', $notooltip = 0, $morecss = '', $save_lastsearch_value = -1)
375
    {
376
        global $db, $conf, $langs;
377
        global $dolibarr_main_authentication, $dolibarr_main_demo;
378
        global $menumanager;
379
380
        if (!empty($conf->dol_no_mouse_hover)) {
381
            $notooltip = 1; // Force disable tooltips
382
        }
383
384
        $result = '';
385
        $companylink = '';
386
387
        $label = '<u>' . $langs->trans("CompanyPaymentMode") . '</u>';
388
        $label .= '<br>';
389
        $label .= '<b>' . $langs->trans('Ref') . ':</b> ' . $this->ref;
390
391
        $url = '';
392
393
        if ($option != 'nolink') {
394
            // Add param to save lastsearch_values or not
395
            $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
396
            if ($save_lastsearch_value == -1 && isset($_SERVER['PHP_SELF']) && preg_match('/list\.php/', $_SERVER['PHP_SELF'])) {
397
                $add_save_lastsearch_values = 1;
398
            }
399
            if ($add_save_lastsearch_values) {
400
                $url .= '&save_lastsearch_values=1';
401
            }
402
        }
403
404
        $linkclose = '';
405
        if (empty($notooltip)) {
406
            if (getDolGlobalString('MAIN_OPTIMIZEFORTEXTBROWSER')) {
407
                $label = $langs->trans("ShowCompanyPaymentMode");
408
                $linkclose .= ' alt="' . dol_escape_htmltag($label, 1) . '"';
409
            }
410
            $linkclose .= ' title="' . dol_escape_htmltag($label, 1) . '"';
411
            $linkclose .= ' class="classfortooltip' . ($morecss ? ' ' . $morecss : '') . '"';
412
        } else {
413
            $linkclose = ($morecss ? ' class="' . $morecss . '"' : '');
414
        }
415
416
        $linkstart = '<a href="' . $url . '"';
417
        $linkstart .= $linkclose . '>';
418
        $linkend = '</a>';
419
420
        $result .= $linkstart;
421
        if ($withpicto) {
422
            $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);
423
        }
424
        if ($withpicto != 2) {
425
            $result .= $this->ref;
426
        }
427
        $result .= $linkend;
428
        //if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : '');
429
430
        return $result;
431
    }
432
433
    /**
434
     * Set a Payment mode as Default
435
     *
436
     * @param int $id       Payment mode ID
437
     * @param int $alltypes 1=The default is for all payment types instead of per type
438
     *
439
     * @return  int                 0 if KO, 1 if OK
440
     */
441
    public function setAsDefault($id = 0, $alltypes = 0)
442
    {
443
        $sql1 = "SELECT rowid as id, fk_soc, type FROM " . MAIN_DB_PREFIX . "societe_rib";
444
        $sql1 .= " WHERE rowid = " . ($id ? $id : $this->id);
445
446
        dol_syslog(get_class($this) . '::setAsDefault', LOG_DEBUG);
447
        $result1 = $this->db->query($sql1);
448
        if ($result1) {
449
            if ($this->db->num_rows($result1) == 0) {
450
                return 0;
451
            } else {
452
                $obj = $this->db->fetch_object($result1);
453
454
                $type = '';
455
                if (empty($alltypes)) {
456
                    $type = $obj->type;
457
                }
458
459
                $this->db->begin();
460
461
                $sql2 = "UPDATE " . MAIN_DB_PREFIX . "societe_rib SET default_rib = 0, tms = tms";
462
                $sql2 .= " WHERE default_rib <> 0 AND fk_soc = " . ((int) $obj->fk_soc);
463
                if ($type) {
464
                    $sql2 .= " AND type = '" . $this->db->escape($type) . "'";
465
                }
466
                dol_syslog(get_class($this) . '::setAsDefault', LOG_DEBUG);
467
                $result2 = $this->db->query($sql2);
468
469
                $sql3 = "UPDATE " . MAIN_DB_PREFIX . "societe_rib SET default_rib = 1";
470
                $sql3 .= " WHERE rowid = " . ((int) $obj->id);
471
                if ($type) {
472
                    $sql3 .= " AND type = '" . $this->db->escape($type) . "'";
473
                }
474
                dol_syslog(get_class($this) . '::setAsDefault', LOG_DEBUG);
475
                $result3 = $this->db->query($sql3);
476
477
                if (!$result2 || !$result3) {
478
                    dol_print_error($this->db);
479
                    $this->db->rollback();
480
                    return -1;
481
                } else {
482
                    $this->db->commit();
483
                    return 1;
484
                }
485
            }
486
        } else {
487
            dol_print_error($this->db);
488
            return -1;
489
        }
490
    }
491
492
    /**
493
     *  Return label of the status
494
     *
495
     * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short
496
     *                  label + Picto, 6=Long label + Picto
497
     *
498
     * @return string                 Label of status
499
     */
500
    public function getLibStatut($mode = 0)
501
    {
502
        return $this->LibStatut($this->status, $mode);
503
    }
504
505
    // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
506
507
    /**
508
     *  Return the status
509
     *
510
     * @param int $status Id status
511
     * @param int $mode   0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short
512
     *                    label + Picto, 6=Long label + Picto
513
     *
514
     * @return string                  Label of status
515
     */
516
    public function LibStatut($status, $mode = 0)
517
    {
518
        // phpcs:enable
519
        if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
520
            global $langs;
521
            //$langs->load("mymodule");
522
            $this->labelStatus[self::STATUS_ENABLED] = $langs->transnoentitiesnoconv('Enabled');
523
            $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv('Disabled');
524
            $this->labelStatusShort[self::STATUS_ENABLED] = $langs->transnoentitiesnoconv('Enabled');
525
            $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv('Disabled');
526
        }
527
528
        $statusType = 'status5';
529
        if ($status == self::STATUS_ENABLED) {
530
            $statusType = 'status4';
531
        }
532
533
        return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status], '', $statusType, $mode);
534
    }
535
536
    /**
537
     *  Load the info information in the object
538
     *
539
     * @param int $id Id of object
540
     *
541
     * @return void
542
     */
543
    public function info($id)
544
    {
545
        $sql = 'SELECT rowid, date_creation as datec, tms as datem,';
546
        $sql .= ' fk_user_creat, fk_user_modif';
547
        $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element . ' as t';
548
        $sql .= ' WHERE t.rowid = ' . ((int) $id);
549
        $result = $this->db->query($sql);
550
        if ($result) {
551
            if ($this->db->num_rows($result)) {
552
                $obj = $this->db->fetch_object($result);
553
554
                $this->id = $obj->rowid;
555
556
                $this->user_creation_id = $obj->fk_user_creat;
557
                $this->user_modification_id = $obj->fk_user_modif;
558
                $this->date_creation = $this->db->jdate($obj->datec);
559
                $this->date_modification = empty($obj->datem) ? '' : $this->db->jdate($obj->datem);
560
            }
561
562
            $this->db->free($result);
563
        } else {
564
            dol_print_error($this->db);
565
        }
566
    }
567
568
    /**
569
     * Initialise object with example values
570
     * Id must be 0 if object instance is a specimen
571
     *
572
     * @return int
573
     */
574
    public function initAsSpecimen()
575
    {
576
        return $this->initAsSpecimenCommon();
577
    }
578
}
579