30require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
41 public $element =
'societe_rib';
46 public $table_element =
'societe_rib';
91 public $fields = array(
92 'rowid' => array(
'type' =>
'integer',
'label' =>
'TechnicalID',
'enabled' => 1,
'position' => 10,
'notnull' => 1,
'visible' => -1,),
93 'type' => array(
'type' =>
'varchar(32)',
'label' =>
'Type',
'enabled' => 1,
'position' => 15,
'notnull' => 1,
'visible' => -1,),
94 'fk_soc' => array(
'type' =>
'integer:Societe:societe/class/societe.class.php',
'label' =>
'ThirdParty',
'picto' =>
'company',
'enabled' => 1,
'position' => 20,
'notnull' => 1,
'visible' => -1,
'css' =>
'maxwidth500 widthcentpercentminusxx',
'csslist' =>
'tdoverflowmax150',),
95 'datec' => array(
'type' =>
'datetime',
'label' =>
'DateCreation',
'enabled' => 1,
'position' => 25,
'notnull' => 0,
'visible' => -1,),
96 'tms' => array(
'type' =>
'timestamp',
'label' =>
'DateModification',
'enabled' => 1,
'position' => 30,
'notnull' => 1,
'visible' => -1,),
97 'label' => array(
'type' =>
'varchar(200)',
'label' =>
'Label',
'enabled' => 1,
'position' => 35,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,
'css' =>
'minwidth300',
'cssview' =>
'wordbreak',
'csslist' =>
'tdoverflowmax150',),
98 'bank' => array(
'type' =>
'varchar(255)',
'label' =>
'Bank',
'enabled' => 1,
'position' => 40,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
99 'code_banque' => array(
'type' =>
'varchar(128)',
'label' =>
'Codebanque',
'enabled' => 1,
'position' => 45,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
100 'code_guichet' => array(
'type' =>
'varchar(6)',
'label' =>
'Codeguichet',
'enabled' => 1,
'position' => 50,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
101 'number' => array(
'type' =>
'varchar(255)',
'label' =>
'Number',
'enabled' => 1,
'position' => 55,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
102 'cle_rib' => array(
'type' =>
'varchar(5)',
'label' =>
'Clerib',
'enabled' => 1,
'position' => 60,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
103 'bic' => array(
'type' =>
'varchar(20)',
'label' =>
'Bic',
'enabled' => 1,
'position' => 65,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
104 'iban_prefix' => array(
'type' =>
'varchar(34)',
'label' =>
'Ibanprefix',
'enabled' => 1,
'position' => 70,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
105 'domiciliation' => array(
'type' =>
'varchar(255)',
'label' =>
'Domiciliation',
'enabled' => 1,
'position' => 75,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
106 'proprio' => array(
'type' =>
'varchar(60)',
'label' =>
'Proprio',
'enabled' => 1,
'position' => 80,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
107 'owner_address' => array(
'type' =>
'varchar(255)',
'label' =>
'Owneraddress',
'enabled' => 1,
'position' => 85,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
108 'default_rib' => array(
'type' =>
'smallint(6)',
'label' =>
'Defaultrib',
'enabled' => 1,
'position' => 90,
'notnull' => 1,
'visible' => -1,
'alwayseditable' => 1,),
109 'state_id' => array(
'type' =>
'integer',
'label' =>
'Stateid',
'enabled' => 1,
'position' => 95,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
110 'fk_country' => array(
'type' =>
'integer',
'label' =>
'Fkcountry',
'enabled' => 1,
'position' => 100,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,
'css' =>
'maxwidth500 widthcentpercentminusxx',),
111 'currency_code' => array(
'type' =>
'varchar(3)',
'label' =>
'Currencycode',
'enabled' => 1,
'position' => 105,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
112 'rum' => array(
'type' =>
'varchar(32)',
'label' =>
'Rum',
'enabled' => 1,
'position' => 110,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
113 'date_rum' => array(
'type' =>
'date',
'label' =>
'Daterum',
'enabled' => 1,
'position' => 115,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
114 'frstrecur' => array(
'type' =>
'varchar(16)',
'label' =>
'Frstrecur',
'enabled' => 1,
'position' => 120,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
115 'import_key' => array(
'type' =>
'varchar(14)',
'label' =>
'ImportId',
'enabled' => 1,
'position' => 900,
'notnull' => 0,
'visible' => -2,
'alwayseditable' => 1,),
116 'last_four' => array(
'type' =>
'varchar(4)',
'label' =>
'Lastfour',
'enabled' => 1,
'position' => 130,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
117 'card_type' => array(
'type' =>
'varchar(255)',
'label' =>
'Cardtype',
'enabled' => 1,
'position' => 135,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
118 'cvn' => array(
'type' =>
'varchar(255)',
'label' =>
'Cvn',
'enabled' => 1,
'position' => 140,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
119 'exp_date_month' => array(
'type' =>
'integer',
'label' =>
'Expdatemonth',
'enabled' => 1,
'position' => 145,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
120 'exp_date_year' => array(
'type' =>
'integer',
'label' =>
'Expdateyear',
'enabled' => 1,
'position' => 150,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
121 'country_code' => array(
'type' =>
'varchar(10)',
'label' =>
'Countrycode',
'enabled' => 1,
'position' => 155,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
122 'approved' => array(
'type' =>
'integer',
'label' =>
'Approved',
'enabled' => 1,
'position' => 160,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
123 'email' => array(
'type' =>
'varchar(255)',
'label' =>
'Email',
'enabled' => 1,
'position' => 165,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
124 'ending_date' => array(
'type' =>
'date',
'label' =>
'Endingdate',
'enabled' => 1,
'position' => 170,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
125 'max_total_amount_of_all_payments' => array(
'type' =>
'double(24,8)',
'label' =>
'Maxtotalamountofallpayments',
'enabled' => 1,
'position' => 175,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
126 'preapproval_key' => array(
'type' =>
'varchar(255)',
'label' =>
'Preapprovalkey',
'enabled' => 1,
'position' => 180,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
127 'starting_date' => array(
'type' =>
'date',
'label' =>
'Startingdate',
'enabled' => 1,
'position' => 185,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
128 'total_amount_of_all_payments' => array(
'type' =>
'double(24,8)',
'label' =>
'Totalamountofallpayments',
'enabled' => 1,
'position' => 190,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
129 'stripe_card_ref' => array(
'type' =>
'varchar(128)',
'label' =>
'Stripecardref',
'enabled' => 1,
'position' => 195,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
130 'status' => array(
'type' =>
'integer',
'label' =>
'Status',
'enabled' => 1,
'position' => 500,
'notnull' => 1,
'visible' => -1,
'alwayseditable' => 1,),
131 'comment' => array(
'type' =>
'varchar(255)',
'label' =>
'Comment',
'enabled' => 1,
'position' => 205,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
132 'ipaddress' => array(
'type' =>
'varchar(68)',
'label' =>
'Ipaddress',
'enabled' => 1,
'position' => 210,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
133 'stripe_account' => array(
'type' =>
'varchar(128)',
'label' =>
'Stripeaccount',
'enabled' => 1,
'position' => 215,
'notnull' => 0,
'visible' => -1,
'alwayseditable' => 1,),
134 'last_main_doc' => array(
'type' =>
'varchar(255)',
'label' =>
'LastMainDoc',
'enabled' => 1,
'visible' => 0,
'position' => 230),
170 public $code_guichet;
188 public $country_code;
198 public $currency_code;
220 public $exp_date_month;
221 public $exp_date_year;
229 public $max_total_amount_of_all_payments;
230 public $preapproval_key;
231 public $starting_date;
232 public $total_amount_of_all_payments;
238 public $ext_payment_site;
256 public $stripe_account;
263 public $stripe_card_ref;
283 const TRIGGER_PREFIX =
'COMPANY_RIB';
297 $this->default_rib = 0;
316 if (empty($this->socid)) {
317 $this->
error =
'BadValueForParameter';
318 $this->errors[] = $this->error;
322 if (empty($this->datec)) {
328 $sql =
"SELECT rowid FROM ".MAIN_DB_PREFIX.
"societe_rib where fk_soc = ".((int) $this->socid).
" AND default_rib = 1 AND type = 'ban'";
329 $result = $this->db->query($sql);
331 $numrows = $this->db->num_rows($result);
332 if ($this->default_rib && $numrows > 0) {
333 $this->default_rib = 0;
335 if (empty($this->default_rib) && $numrows == 0) {
336 $this->default_rib = 1;
343 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"societe_rib (fk_soc, type, datec, model_pdf)";
344 $sql .=
" VALUES (".((int) $this->socid).
", '".$this->
type.
"', '".$this->db->idate($this->datec).
"',";
347 $resql = $this->db->query($sql);
349 if ($this->db->affected_rows($resql)) {
350 $this->
id = $this->db->last_insert_id(MAIN_DB_PREFIX.
"societe_rib");
354 $result = $this->
call_trigger(
'COMPANY_RIB_CREATE', $user);
363 $this->
error = $this->db->lasterror();
364 $this->errors[] = $this->error;
371 $this->db->rollback();
393 if (!empty($this->domiciliation) &&
dol_strlen($this->domiciliation) > 255) {
394 $this->domiciliation =
dol_trunc($this->domiciliation, 254,
'right',
'UTF-8', 1);
396 if (!empty($this->address) &&
dol_strlen($this->address) > 255) {
397 $this->address =
dol_trunc($this->address, 254,
'right',
'UTF-8', 1);
400 $this->owner_address =
dol_trunc($this->owner_address, 254,
'right',
'UTF-8', 1);
403 if (isset($this->model_pdf)) {
404 $this->model_pdf = trim($this->model_pdf);
409 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"societe_rib SET";
410 $sql .=
" bank = '".$this->db->escape($this->bank).
"'";
411 $sql .=
",code_banque='".$this->db->escape($this->code_banque).
"'";
412 $sql .=
",code_guichet='".$this->db->escape($this->code_guichet).
"'";
413 $sql .=
",number='".$this->db->escape($this->number).
"'";
414 $sql .=
",cle_rib='".$this->db->escape($this->cle_rib).
"'";
415 $sql .=
",bic='".$this->db->escape($this->bic).
"'";
416 $sql .=
",iban_prefix = '".$this->db->escape($this->iban).
"'";
417 $sql .=
",domiciliation = '".$this->db->escape($this->address ? $this->address : $this->domiciliation).
"'";
418 $sql .=
",proprio = '".$this->db->escape($this->proprio).
"'";
419 $sql .=
",owner_address = '".$this->db->escape($this->owner_address).
"'";
420 $sql .=
",default_rib = ".((int) $this->default_rib);
421 if (isModEnabled(
'prelevement')) {
422 $sql .=
",frstrecur = '".$this->db->escape($this->frstrecur).
"'";
423 $sql .=
",rum = '".$this->db->escape($this->rum).
"'";
424 $sql .=
",date_rum = ".($this->date_rum ?
"'".$this->db->idate($this->date_rum).
"'" :
"null");
426 if (trim($this->label) !=
'') {
427 $sql .=
",label = '".$this->db->escape($this->label).
"'";
429 $sql .=
",label = NULL";
431 $sql .=
",stripe_card_ref = '".$this->db->escape($this->stripe_card_ref).
"'";
432 $sql .=
",stripe_account = '".$this->db->escape($this->stripe_account).
"'";
433 $sql .=
",model_pdf=".(isset($this->model_pdf) ?
"'".$this->db->escape($this->model_pdf).
"'" :
"null");
434 $sql .=
" WHERE rowid = ".((int) $this->
id);
436 $result = $this->db->query($sql);
440 $result = $this->
call_trigger(
'COMPANY_RIB_MODIFY', $user);
448 if ($this->db->errno() ==
'DB_ERROR_RECORD_ALREADY_EXISTS') {
449 $this->
error = $langs->trans(
'ErrorDuplicateField');
451 $this->
error = $this->db->lasterror();
453 $this->errors[] = $this->error;
460 $this->db->rollback();
475 public function fetch($id, $ref =
'', $socid = 0, $default = 1, $type =
'ban')
477 if (empty($id) && empty($ref) && empty($socid)) {
481 $sql =
"SELECT rowid, label, type, fk_soc as socid, bank, number, code_banque, code_guichet, cle_rib, bic, iban_prefix as iban,";
482 $sql .=
" domiciliation as address,";
483 $sql .=
" proprio as owner_name, owner_address, default_rib, datec, tms as datem, rum, frstrecur, date_rum,";
484 $sql .=
" stripe_card_ref, stripe_account, ext_payment_site,";
485 $sql .=
" last_main_doc, model_pdf";
486 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe_rib";
489 $sql .=
" WHERE rowid = ".((int) $id);
491 $sql .=
" WHERE rowid = ".((int) $ref);
492 } elseif ($socid > 0) {
493 $sql .=
" WHERE fk_soc = ".((int) $socid);
495 $sql .=
" AND default_rib = ".((int) $default);
498 $sql .=
" AND type = '".$this->db->escape($type).
"'";
502 $resql = $this->db->query($sql);
504 if ($this->db->num_rows($resql)) {
505 $obj = $this->db->fetch_object($resql);
507 $this->
ref = $obj->socid.
'-'.$obj->label;
509 $this->
id = $obj->rowid;
510 $this->
type = $obj->type;
511 $this->socid = $obj->socid;
512 $this->bank = $obj->bank;
513 $this->code_banque = $obj->code_banque;
514 $this->code_guichet = $obj->code_guichet;
515 $this->number = $obj->number;
516 $this->cle_rib = $obj->cle_rib;
517 $this->bic = $obj->bic;
518 $this->iban = $obj->iban;
520 $this->domiciliation = $obj->address;
521 $this->address = $obj->address;
523 $this->proprio = $obj->owner_name;
524 $this->owner_name = $obj->owner_name;
525 $this->owner_address = $obj->owner_address;
526 $this->label = $obj->label;
527 $this->default_rib = $obj->default_rib;
528 $this->datec = $this->db->jdate($obj->datec);
529 $this->datem = $this->db->jdate($obj->datem);
530 $this->rum = $obj->rum;
531 $this->frstrecur = $obj->frstrecur;
532 $this->date_rum = $this->db->jdate($obj->date_rum);
533 $this->stripe_card_ref = $obj->stripe_card_ref;
534 $this->stripe_account = $obj->stripe_account;
535 $this->ext_payment_site = $obj->ext_payment_site;
536 $this->last_main_doc = $obj->last_main_doc;
537 $this->model_pdf = $obj->model_pdf;
539 $this->db->free($resql);
555 public function delete(
User $user =
null, $notrigger = 0)
559 dol_syslog(get_class($this).
"::delete ".$this->
id, LOG_DEBUG);
563 if (!$error && !$notrigger) {
565 $result = $this->
call_trigger(
'COMPANY_RIB_DELETE', $user);
573 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"societe_rib";
574 $sql .=
" WHERE rowid = ".((int) $this->
id);
576 if (!$this->db->query($sql)) {
578 $this->errors[] = $this->db->lasterror();
586 $this->db->rollback();
601 if ($this->code_banque || $this->code_guichet || $this->number || $this->cle_rib || $this->iban || $this->bic) {
602 if ($this->label && $displayriblabel) {
603 $rib = $this->label.
" : ";
621 $sql1 =
"SELECT rowid as id, fk_soc as socid FROM ".MAIN_DB_PREFIX.
"societe_rib";
622 $sql1 .=
" WHERE rowid = ".($rib ? $rib : $this->id);
624 dol_syslog(get_class($this).
'::setAsDefault', LOG_DEBUG);
625 $result1 = $this->db->query($sql1);
627 if ($this->db->num_rows($result1) == 0) {
630 $obj = $this->db->fetch_object($result1);
634 $sql2 =
"UPDATE ".MAIN_DB_PREFIX.
"societe_rib SET default_rib = 0";
635 $sql2 .=
" WHERE fk_soc = ".((int) $obj->socid);
636 if ($resetolddefaultfor) {
637 $sql2 .=
" AND type = '".$this->db->escape($resetolddefaultfor).
"'";
639 $result2 = $this->db->query($sql2);
641 $sql3 =
"UPDATE ".MAIN_DB_PREFIX.
"societe_rib SET default_rib = 1";
642 $sql3 .=
" WHERE rowid = ".((int) $obj->id);
643 $result3 = $this->db->query($sql3);
645 if (!$result2 || !$result3) {
646 $this->errors[] = $this->db->lasterror();
647 $this->db->rollback();
655 $this->errors[] = $this->db->lasterror();
672 $this->label =
'CustomerCorp Bank account';
673 $this->bank =
'CustomerCorp Bank';
675 $this->
status = Account::STATUS_OPEN;
676 $this->code_banque =
'123';
677 $this->code_guichet =
'456';
678 $this->number =
'CUST12345';
679 $this->cle_rib =
'50';
681 $this->iban =
'FR999999999';
683 $this->address =
'Rue de Paris';
684 $this->country_id = 1;
686 $this->proprio =
'Owner';
687 $this->owner_name =
'Owner';
688 $this->owner_address =
'Owner address';
689 $this->owner_country_id = 1;
691 $this->rum =
'UMR-CU1212-0007-5-1475405262';
692 $this->date_rum =
dol_now() - 10000;
693 $this->frstrecur =
'FRST';
print $langs trans("AuditedSecurityEvents").'</strong >< span class="opacitymedium"></span >< br > status
Or an array listing all the potential status of the object: array: int of the status => translated la...
Class to manage bank accounts.
solde($option=0, $date_end='', $field='dateo')
Return current balance.
call_trigger($triggerName, $user)
Call trigger based on this instance.
Class to manage bank accounts description of third parties.
setAsDefault($rib=0, $resetolddefaultfor='ban')
Set a BAN as Default.
fetch($id, $ref='', $socid=0, $default=1, $type='ban')
Load record from database.
getRibLabel($displayriblabel=true)
Return RIB.
update(User $user=null, $notrigger=0)
Update bank account.
initAsSpecimen()
Initialise an instance with random values.
create(User $user=null, $notrigger=0)
Create bank information record.
__construct(DoliDB $db)
Constructor.
Class to manage Dolibarr database access.
Class to manage Dolibarr users.
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
dol_now($mode='auto')
Return date for now.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dol_trunc($string, $size=40, $trunc='right', $stringencoding='UTF-8', $nodot=0, $display=0)
Truncate a string to a particular length adding '…' if string larger than length.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
if(preg_match('/crypted:/i', $dolibarr_main_db_pass)||!empty($dolibarr_main_db_encrypted_pass)) $conf db type