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;
337 const TRIGGER_PREFIX =
'COMPANY_RIB';
351 $this->default_rib = 0;
363 public function create($user =
null, $notrigger = 0)
370 if (empty($this->socid)) {
371 $this->
error =
'BadValueForParameter';
372 $this->errors[] = $this->error;
376 if (empty($this->datec)) {
382 $sql =
"SELECT rowid FROM ".MAIN_DB_PREFIX.
"societe_rib";
383 $sql .=
" WHERE fk_soc = ".((int) $this->socid).
" AND default_rib = 1 AND type = 'ban'";
384 $result = $this->db->query($sql);
386 $numrows = $this->db->num_rows($result);
387 if ($this->default_rib && $numrows > 0) {
388 $this->default_rib = 0;
390 if (empty($this->default_rib) && $numrows == 0) {
391 $this->default_rib = 1;
398 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"societe_rib (fk_soc, type, datec, model_pdf)";
399 $sql .=
" VALUES (".((int) $this->socid).
", '".$this->
type.
"', '".$this->db->idate($this->datec).
"',";
402 $resql = $this->db->query($sql);
404 if ($this->db->affected_rows($resql)) {
405 $this->
id = $this->db->last_insert_id(MAIN_DB_PREFIX.
"societe_rib");
409 $result = $this->
call_trigger(
'COMPANY_RIB_CREATE', $user);
418 $this->
error = $this->db->lasterror();
419 $this->errors[] = $this->error;
426 $this->db->rollback();
438 public function update($user =
null, $notrigger = 0)
452 $this->owner_address =
dol_trunc($this->owner_address, 254,
'right',
'UTF-8', 1);
455 if (isset($this->model_pdf)) {
456 $this->model_pdf = trim($this->model_pdf);
461 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"societe_rib SET";
462 $sql .=
" bank = '".$this->db->escape($this->bank).
"'";
463 $sql .=
",code_banque='".$this->db->escape($this->code_banque).
"'";
464 $sql .=
",code_guichet='".$this->db->escape($this->code_guichet).
"'";
465 $sql .=
",number='".$this->db->escape($this->number).
"'";
466 $sql .=
",cle_rib='".$this->db->escape($this->cle_rib).
"'";
467 $sql .=
",bic='".$this->db->escape($this->bic).
"'";
468 $sql .=
",iban_prefix = '".$this->db->escape(
dolEncrypt($this->iban)).
"'";
469 $sql .=
",domiciliation = '".$this->db->escape($this->
address).
"'";
470 $sql .=
",proprio = '".$this->db->escape($this->owner_name).
"'";
471 $sql .=
",owner_address = '".$this->db->escape($this->owner_address).
"'";
472 $sql .=
",default_rib = ".((int) $this->default_rib);
473 if (isModEnabled(
'prelevement')) {
474 $sql .=
",frstrecur = '".$this->db->escape($this->frstrecur).
"'";
475 $sql .=
",rum = '".$this->db->escape($this->rum).
"'";
476 $sql .=
",date_rum = ".($this->date_rum ?
"'".$this->db->idate($this->date_rum).
"'" :
"null");
478 if (trim($this->label) !=
'') {
479 $sql .=
",label = '".$this->db->escape($this->label).
"'";
481 $sql .=
",label = NULL";
483 $sql .=
",stripe_card_ref = '".$this->db->escape($this->stripe_card_ref).
"'";
484 $sql .=
",stripe_account = '".$this->db->escape($this->stripe_account).
"'";
485 $sql .=
",model_pdf=".(isset($this->model_pdf) ?
"'".$this->db->escape($this->model_pdf).
"'" :
"null");
486 $sql .=
" WHERE rowid = ".((int) $this->
id);
488 $result = $this->db->query($sql);
492 $result = $this->
call_trigger(
'COMPANY_RIB_MODIFY', $user);
500 if ($this->db->errno() ==
'DB_ERROR_RECORD_ALREADY_EXISTS') {
501 $this->
error = $langs->trans(
'ErrorDuplicateField');
503 $this->
error = $this->db->lasterror();
505 $this->errors[] = $this->error;
512 $this->db->rollback();
527 public function fetch($id, $ref =
'', $socid = 0, $default = 1, $type =
'ban')
529 if (empty($id) && empty($ref) && empty($socid)) {
533 $sql =
"SELECT rowid, label, type, fk_soc as socid, bank, number, code_banque, code_guichet, cle_rib, bic, iban_prefix as iban,";
534 $sql .=
" domiciliation as address,";
535 $sql .=
" proprio as owner_name, owner_address, default_rib, datec, tms as datem, rum, frstrecur, date_rum,";
536 $sql .=
" stripe_card_ref, stripe_account, ext_payment_site,";
537 $sql .=
" last_main_doc, model_pdf";
538 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe_rib";
541 $sql .=
" WHERE rowid = ".((int) $id);
543 $sql .=
" WHERE rowid = ".((int) $ref);
544 } elseif ($socid > 0) {
545 $sql .=
" WHERE fk_soc = ".((int) $socid);
547 $sql .=
" AND default_rib = ".((int) $default);
550 $sql .=
" AND type = '".$this->db->escape($type).
"'";
554 $resql = $this->db->query($sql);
556 if ($this->db->num_rows($resql)) {
557 $obj = $this->db->fetch_object($resql);
559 $this->
ref = $obj->socid.
'-'.$obj->label;
561 $this->
id = $obj->rowid;
562 $this->
type = $obj->type;
563 $this->socid = $obj->socid;
564 $this->bank = $obj->bank;
565 $this->code_banque = $obj->code_banque;
566 $this->code_guichet = $obj->code_guichet;
567 $this->number = $obj->number;
568 $this->cle_rib = $obj->cle_rib;
569 $this->bic = $obj->bic;
572 $this->
address = $obj->address;
574 $this->owner_name = $obj->owner_name;
575 $this->proprio = $obj->owner_name;
576 $this->owner_address = $obj->owner_address;
577 $this->label = $obj->label;
578 $this->default_rib = $obj->default_rib;
579 $this->datec = $this->db->jdate($obj->datec);
580 $this->datem = $this->db->jdate($obj->datem);
581 $this->rum = $obj->rum;
582 $this->frstrecur = $obj->frstrecur;
583 $this->date_rum = $this->db->jdate($obj->date_rum);
584 $this->stripe_card_ref = $obj->stripe_card_ref;
585 $this->stripe_account = $obj->stripe_account;
586 $this->ext_payment_site = $obj->ext_payment_site;
587 $this->last_main_doc = $obj->last_main_doc;
588 $this->model_pdf = $obj->model_pdf;
590 $this->db->free($resql);
606 public function delete($user =
null, $notrigger = 0)
610 dol_syslog(get_class($this).
"::delete ".$this->
id, LOG_DEBUG);
614 if (!$error && !$notrigger) {
616 $result = $this->
call_trigger(
'COMPANY_RIB_DELETE', $user);
624 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"societe_rib";
625 $sql .=
" WHERE rowid = ".((int) $this->
id);
627 if (!$this->db->query($sql)) {
629 $this->errors[] = $this->db->lasterror();
637 $this->db->rollback();
652 if ($this->code_banque || $this->code_guichet || $this->number || $this->cle_rib || $this->iban || $this->bic) {
653 if ($this->label && $displayriblabel) {
654 $rib = $this->label.
" : ";
672 $sql1 =
"SELECT rowid as id, fk_soc as socid FROM ".MAIN_DB_PREFIX.
"societe_rib";
673 $sql1 .=
" WHERE rowid = ".((int) ($rib ? $rib : $this->id));
675 dol_syslog(get_class($this).
'::setAsDefault', LOG_DEBUG);
676 $result1 = $this->db->query($sql1);
678 if ($this->db->num_rows($result1) == 0) {
681 $obj = $this->db->fetch_object($result1);
685 $sql2 =
"UPDATE ".MAIN_DB_PREFIX.
"societe_rib SET default_rib = 0";
686 $sql2 .=
" WHERE fk_soc = ".((int) $obj->socid);
687 if ($resetolddefaultfor) {
688 $sql2 .=
" AND type = '".$this->db->escape($resetolddefaultfor).
"'";
690 $result2 = $this->db->query($sql2);
692 $sql3 =
"UPDATE ".MAIN_DB_PREFIX.
"societe_rib SET default_rib = 1";
693 $sql3 .=
" WHERE rowid = ".((int) $obj->id);
694 $result3 = $this->db->query($sql3);
696 if (!$result2 || !$result3) {
697 $this->errors[] = $this->db->lasterror();
698 $this->db->rollback();
706 $this->errors[] = $this->db->lasterror();
723 $this->label =
'CustomerCorp Bank account';
724 $this->bank =
'CustomerCorp Bank';
726 $this->
status = Account::STATUS_OPEN;
727 $this->code_banque =
'123';
728 $this->code_guichet =
'456';
729 $this->number =
'CUST12345';
730 $this->cle_rib =
'50';
732 $this->iban =
'FR999999999';
734 $this->
address =
'Rue de Paris';
735 $this->country_id = 1;
737 $this->owner_name =
'Owner';
738 $this->owner_address =
'Owner address';
739 $this->owner_country_id = 1;
741 $this->rum =
'UMR-CU1212-0007-5-1475405262';
742 $this->date_rum =
dol_now() - 10000;
743 $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.