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),
176 public $code_guichet;
212 public $country_code;
222 public $currency_code;
259 public $exp_date_month;
263 public $exp_date_year;
280 public $max_total_amount_of_all_payments;
284 public $preapproval_key;
288 public $starting_date;
292 public $total_amount_of_all_payments;
298 public $ext_payment_site;
316 public $stripe_account;
323 public $stripe_card_ref;
343 const TRIGGER_PREFIX =
'COMPANY_RIB';
357 $this->default_rib = 0;
369 public function create($user =
null, $notrigger = 0)
376 if (empty($this->socid)) {
377 $this->
error =
'BadValueForParameter';
378 $this->errors[] = $this->error;
382 if (empty($this->datec)) {
388 $sql =
"SELECT rowid FROM ".MAIN_DB_PREFIX.
"societe_rib";
389 $sql .=
" WHERE fk_soc = ".((int) $this->socid).
" AND default_rib = 1 AND type = 'ban'";
390 $result = $this->db->query($sql);
392 $numrows = $this->db->num_rows($result);
393 if ($this->default_rib && $numrows > 0) {
394 $this->default_rib = 0;
396 if (empty($this->default_rib) && $numrows == 0) {
397 $this->default_rib = 1;
404 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"societe_rib (fk_soc, type, datec, model_pdf)";
405 $sql .=
" VALUES (".((int) $this->socid).
", '".$this->
type.
"', '".$this->db->idate($this->datec).
"',";
408 $resql = $this->db->query($sql);
410 if ($this->db->affected_rows($resql)) {
411 $this->
id = $this->db->last_insert_id(MAIN_DB_PREFIX.
"societe_rib");
415 $result = $this->
call_trigger(
'COMPANY_RIB_CREATE', $user);
424 $this->
error = $this->db->lasterror();
425 $this->errors[] = $this->error;
432 $this->db->rollback();
444 public function update($user =
null, $notrigger = 0)
458 $this->owner_address =
dol_trunc($this->owner_address, 254,
'right',
'UTF-8', 1);
461 if (isset($this->model_pdf)) {
462 $this->model_pdf = trim($this->model_pdf);
467 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"societe_rib SET";
468 $sql .=
" bank = '".$this->db->escape($this->bank).
"'";
469 $sql .=
",code_banque='".$this->db->escape($this->code_banque).
"'";
470 $sql .=
",code_guichet='".$this->db->escape($this->code_guichet).
"'";
471 $sql .=
",number='".$this->db->escape($this->number).
"'";
472 $sql .=
",cle_rib='".$this->db->escape($this->cle_rib).
"'";
473 $sql .=
",bic='".$this->db->escape($this->bic).
"'";
474 $sql .=
",iban_prefix = '".$this->db->escape(
dolEncrypt($this->iban)).
"'";
475 $sql .=
",domiciliation = '".$this->db->escape($this->
address).
"'";
476 $sql .=
",proprio = '".$this->db->escape($this->owner_name).
"'";
477 $sql .=
",owner_address = '".$this->db->escape($this->owner_address).
"'";
478 $sql .=
",default_rib = ".((int) $this->default_rib);
479 if (isModEnabled(
'prelevement')) {
480 $sql .=
",frstrecur = '".$this->db->escape($this->frstrecur).
"'";
481 $sql .=
",rum = '".$this->db->escape($this->rum).
"'";
482 $sql .=
",date_rum = ".($this->date_rum ?
"'".$this->db->idate($this->date_rum).
"'" :
"null");
484 if (trim($this->label) !=
'') {
485 $sql .=
",label = '".$this->db->escape($this->label).
"'";
487 $sql .=
",label = NULL";
489 $sql .=
",stripe_card_ref = '".$this->db->escape($this->stripe_card_ref).
"'";
490 $sql .=
",stripe_account = '".$this->db->escape($this->stripe_account).
"'";
491 $sql .=
",model_pdf=".(isset($this->model_pdf) ?
"'".$this->db->escape($this->model_pdf).
"'" :
"null");
492 $sql .=
" WHERE rowid = ".((int) $this->
id);
494 $result = $this->db->query($sql);
498 $result = $this->
call_trigger(
'COMPANY_RIB_MODIFY', $user);
506 if ($this->db->errno() ==
'DB_ERROR_RECORD_ALREADY_EXISTS') {
507 $this->
error = $langs->trans(
'ErrorDuplicateField');
509 $this->
error = $this->db->lasterror();
511 $this->errors[] = $this->error;
518 $this->db->rollback();
533 public function fetch($id, $ref =
'', $socid = 0, $default = 1, $type =
'ban')
535 if (empty($id) && empty($ref) && empty($socid)) {
539 $sql =
"SELECT rowid, label, type, fk_soc as socid, bank, number, code_banque, code_guichet, cle_rib, bic, iban_prefix as iban,";
540 $sql .=
" domiciliation as address,";
541 $sql .=
" proprio as owner_name, owner_address, default_rib, datec, tms as datem, rum, frstrecur, date_rum,";
542 $sql .=
" stripe_card_ref, stripe_account, ext_payment_site,";
543 $sql .=
" last_main_doc, model_pdf";
544 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe_rib";
547 $sql .=
" WHERE rowid = ".((int) $id);
549 $sql .=
" WHERE rowid = ".((int) $ref);
550 } elseif ($socid > 0) {
551 $sql .=
" WHERE fk_soc = ".((int) $socid);
553 $sql .=
" AND default_rib = ".((int) $default);
556 $sql .=
" AND type = '".$this->db->escape($type).
"'";
560 $resql = $this->db->query($sql);
562 if ($this->db->num_rows($resql)) {
563 $obj = $this->db->fetch_object($resql);
565 $this->
ref = $obj->socid.
'-'.$obj->label;
567 $this->
id = $obj->rowid;
568 $this->
type = $obj->type;
569 $this->socid = $obj->socid;
570 $this->bank = $obj->bank;
571 $this->code_banque = $obj->code_banque;
572 $this->code_guichet = $obj->code_guichet;
573 $this->number = $obj->number;
574 $this->cle_rib = $obj->cle_rib;
575 $this->bic = $obj->bic;
578 $this->
address = $obj->address;
580 $this->owner_name = $obj->owner_name;
581 $this->proprio = $obj->owner_name;
582 $this->owner_address = $obj->owner_address;
583 $this->label = $obj->label;
584 $this->default_rib = $obj->default_rib;
585 $this->datec = $this->db->jdate($obj->datec);
586 $this->datem = $this->db->jdate($obj->datem);
587 $this->rum = $obj->rum;
588 $this->frstrecur = $obj->frstrecur;
589 $this->date_rum = $this->db->jdate($obj->date_rum);
590 $this->stripe_card_ref = $obj->stripe_card_ref;
591 $this->stripe_account = $obj->stripe_account;
592 $this->ext_payment_site = $obj->ext_payment_site;
593 $this->last_main_doc = $obj->last_main_doc;
594 $this->model_pdf = $obj->model_pdf;
596 $this->db->free($resql);
612 public function delete($user =
null, $notrigger = 0)
616 dol_syslog(get_class($this).
"::delete ".$this->
id, LOG_DEBUG);
620 if (!$error && !$notrigger) {
622 $result = $this->
call_trigger(
'COMPANY_RIB_DELETE', $user);
630 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"societe_rib";
631 $sql .=
" WHERE rowid = ".((int) $this->
id);
633 if (!$this->db->query($sql)) {
635 $this->errors[] = $this->db->lasterror();
643 $this->db->rollback();
658 if ($this->code_banque || $this->code_guichet || $this->number || $this->cle_rib || $this->iban || $this->bic) {
659 if ($this->label && $displayriblabel) {
660 $rib = $this->label.
" : ";
678 $sql1 =
"SELECT rowid as id, fk_soc as socid FROM ".MAIN_DB_PREFIX.
"societe_rib";
679 $sql1 .=
" WHERE rowid = ".((int) ($rib ? $rib : $this->id));
681 dol_syslog(get_class($this).
'::setAsDefault', LOG_DEBUG);
682 $result1 = $this->db->query($sql1);
684 if ($this->db->num_rows($result1) == 0) {
687 $obj = $this->db->fetch_object($result1);
691 $sql2 =
"UPDATE ".MAIN_DB_PREFIX.
"societe_rib SET default_rib = 0";
692 $sql2 .=
" WHERE fk_soc = ".((int) $obj->socid);
693 if ($resetolddefaultfor) {
694 $sql2 .=
" AND type = '".$this->db->escape($resetolddefaultfor).
"'";
696 $result2 = $this->db->query($sql2);
698 $sql3 =
"UPDATE ".MAIN_DB_PREFIX.
"societe_rib SET default_rib = 1";
699 $sql3 .=
" WHERE rowid = ".((int) $obj->id);
700 $result3 = $this->db->query($sql3);
702 if (!$result2 || !$result3) {
703 $this->errors[] = $this->db->lasterror();
704 $this->db->rollback();
712 $this->errors[] = $this->db->lasterror();
729 $this->label =
'CustomerCorp Bank account';
730 $this->bank =
'CustomerCorp Bank';
732 $this->
status = Account::STATUS_OPEN;
733 $this->code_banque =
'123';
734 $this->code_guichet =
'456';
735 $this->number =
'CUST12345';
736 $this->cle_rib =
'50';
738 $this->iban =
'FR999999999';
740 $this->
address =
'Rue de Paris';
741 $this->country_id = 1;
743 $this->owner_name =
'Owner';
744 $this->owner_address =
'Owner address';
745 $this->owner_country_id = 1;
747 $this->rum =
'UMR-CU1212-0007-5-1475405262';
748 $this->date_rum =
dol_now() - 10000;
749 $this->frstrecur =
'FRST';
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=null, $notrigger=0)
Update bank account.
initAsSpecimen()
Initialise an instance with random values.
__construct(DoliDB $db)
Constructor.
create($user=null, $notrigger=0)
Create bank information record.
Class to manage Dolibarr database access.
print $langs trans("Ref").' m titre as m m statut as status
Or an array listing all the potential status of the object: array: int of the status => translated la...
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 a Dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
div refaddress div address
if(preg_match('/crypted:/i', $dolibarr_main_db_pass)||!empty($dolibarr_main_db_encrypted_pass)) $conf db type
dolEncrypt($chain, $key='', $ciphering='', $forceseed='')
Encode a string with a symmetric encryption.
dolDecrypt($chain, $key='')
Decode a string with a symmetric encryption.