28require_once DOL_DOCUMENT_ROOT.
'/core/modules/societe/modules_societe.class.php';
39 public $name =
'Aquarium';
50 public $version =
'dolibarr';
52 public $prefixcustomeraccountancycode;
54 public $prefixsupplieraccountancycode;
56 public $position = 20;
65 if (!isset(
$conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER) || trim(
$conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER) ==
'') {
66 $conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER =
'411';
68 if (!isset(
$conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER) || trim(
$conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER) ==
'') {
69 $conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER =
'401';
73 $this->prefixcustomeraccountancycode =
'';
74 $this->prefixsupplieraccountancycode =
'';
76 $this->prefixcustomeraccountancycode =
getDolGlobalString(
'COMPANY_AQUARIUM_MASK_CUSTOMER');
77 $this->prefixsupplieraccountancycode =
getDolGlobalString(
'COMPANY_AQUARIUM_MASK_SUPPLIER');
88 public function info($langs)
92 $langs->load(
"companies");
95 $texte =
'<form action="'.$_SERVER[
"PHP_SELF"].
'" method="POST">';
96 $texte .=
'<input type="hidden" name="token" value="'.newToken().
'">';
97 $texte .=
'<input type="hidden" name="page_y" value="">';
98 $texte .=
'<input type="hidden" name="action" value="setModuleOptions">';
99 $texte .=
'<input type="hidden" name="param1" value="COMPANY_AQUARIUM_MASK_SUPPLIER">';
100 $texte .=
'<input type="hidden" name="param2" value="COMPANY_AQUARIUM_MASK_CUSTOMER">';
101 $texte .=
'<table class="nobordernopadding" width="100%">';
102 $s1 = $form->textwithpicto(
'<input type="text" class="flat" size="4" name="value1" value="' .
getDolGlobalString(
'COMPANY_AQUARIUM_MASK_SUPPLIER').
'">', $tooltip, 1,
'help',
'valignmiddle', 0, 3, $this->
name);
103 $s2 = $form->textwithpicto(
'<input type="text" class="flat" size="4" name="value2" value="' .
getDolGlobalString(
'COMPANY_AQUARIUM_MASK_CUSTOMER').
'">', $tooltip, 1,
'help',
'valignmiddle', 0, 3, $this->
name);
104 $texte .=
'<tr><td>';
106 $texte .= $langs->trans(
"ModuleCompanyCodeCustomer".$this->
name,
'{s2}').
"<br>\n";
107 $texte .= $langs->trans(
"ModuleCompanyCodeSupplier".$this->
name,
'{s1}').
"<br>\n";
108 $texte = str_replace(array(
'{s1}',
'{s2}'), array($s1, $s2), $texte);
111 $texte .= $langs->trans(
'RemoveSpecialChars').
' = '.
yn(1).
"<br>\n";
114 $texte .= $langs->trans(
'COMPANY_AQUARIUM_CLEAN_REGEX').
' = ' .
getDolGlobalString(
'COMPANY_AQUARIUM_CLEAN_REGEX').
"<br>\n";
118 $texte .= $langs->trans(
'COMPANY_AQUARIUM_NO_PREFIX').
' = ' .
getDolGlobalString(
'COMPANY_AQUARIUM_NO_PREFIX').
"<br>\n";
121 $texte .=
'<td class="right"><input type="submit" class="button button-edit reposition smallpaddingimp" name="modify" value="'.$langs->trans(
"Modify").
'"></td>';
122 $texte .=
'</tr></table>';
136 public function getExample($langs =
null, $objsoc =
'', $type = -1)
139 $s .= $this->prefixcustomeraccountancycode.
'CUSTCODE';
141 $s .= $this->prefixsupplieraccountancycode.
'SUPPCODE';
155 public function get_code($db, $societe, $type =
'')
163 dol_syslog(
"mod_codecompta_aquarium::get_code search code for type=".$type.
" company=".(!empty($societe->name) ? $societe->name :
''));
166 if ($type ==
'customer') {
167 $codetouse = (!empty($societe->code_client) ? $societe->code_client :
'CUSTCODE');
168 $prefix = $this->prefixcustomeraccountancycode;
169 } elseif ($type ==
'supplier') {
170 $codetouse = (!empty($societe->code_fournisseur) ? $societe->code_fournisseur :
'SUPPCODE');
171 $prefix = $this->prefixsupplieraccountancycode;
173 $this->error =
'Bad value for parameter type';
180 if (!isset(
$conf->global->COMPANY_AQUARIUM_REMOVE_SPECIAL) ||
getDolGlobalString(
'COMPANY_AQUARIUM_REMOVE_SPECIAL')) {
181 $codetouse = preg_replace(
'/([^a-z0-9])/i',
'', $codetouse);
185 $codetouse = preg_replace(
'/([a-z])/i',
'', $codetouse);
189 $codetouse = preg_replace(
'/' .
getDolGlobalString(
'COMPANY_AQUARIUM_CLEAN_REGEX').
'/',
'\1\2\3', $codetouse);
192 $codetouse = $prefix.strtoupper($codetouse);
194 $is_dispo = $this->
verif($db, $codetouse, $societe, $type);
195 $this->code = $codetouse;
196 dol_syslog(
"mod_codecompta_aquarium::get_code found code=".$this->code);
210 public function verif($db, $code, $societe, $type)
213 if ($type ==
'customer') {
214 $sql .=
"code_compta";
215 } elseif ($type ==
'supplier') {
216 $sql .=
"code_compta_fournisseur";
218 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe";
220 if ($type ==
'customer') {
221 $sql .=
"code_compta";
222 } elseif ($type ==
'supplier') {
223 $sql .=
"code_compta_fournisseur";
225 $sql .=
" = '".$db->escape($code).
"'";
226 if (!empty($societe->id)) {
227 $sql .=
" AND rowid <> ".$societe->id;
230 $resql = $db->query($sql);
232 if ($db->num_rows($resql) == 0) {
233 dol_syslog(
"mod_codecompta_aquarium::verif code '".$code.
"' available");
236 dol_syslog(
"mod_codecompta_aquarium::verif code '".$code.
"' not available");
240 $this->error = $db->error().
" sql=".$sql;
Parent class for third parties accountancy code generators.
Class to manage accountancy code of thirdparties with Aquarium rules.
getExample($langs=null, $objsoc='', $type=-1)
Return an example of result returned by getNextValue.
info($langs)
Return description of module.
verif($db, $code, $societe, $type)
Return if a code is available.
get_code($db, $societe, $type='')
Set accountancy account code for a third party into this->code.
__construct()
Constructor.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
yn($yesno, $format=1, $color=0)
Return yes or no in current language.
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.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
$conf db name
Only used if Module[ID]Name translation string is not found.