dolibarr  16.0.1
defaultaccounts.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
3  * Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
4  * Copyright (C) 2013-2020 Alexandre Spangaro <aspangaro@open-dsi.fr>
5  * Copyright (C) 2014-2015 Ari Elbaz (elarifr) <github@accedinfo.com>
6  * Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
7  * Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
8  * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program. If not, see <https://www.gnu.org/licenses/>.
22  *
23  */
24 
30 require '../../main.inc.php';
31 
32 // Class
33 require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
34 require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
35 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
36 
37 // Load translation files required by the page
38 $langs->loadLangs(array("compta", "bills", "admin", "accountancy", "salaries", "loan"));
39 
40 // Security check
41 if (empty($user->rights->accounting->chartofaccount)) {
43 }
44 
45 $action = GETPOST('action', 'aZ09');
46 
47 
48 $list_account_main = array(
49  'ACCOUNTING_ACCOUNT_CUSTOMER',
50  'ACCOUNTING_ACCOUNT_SUPPLIER',
51  'SALARIES_ACCOUNTING_ACCOUNT_PAYMENT',
52 );
53 
54 $list_account = array();
55 
56 $list_account[] = '---Product---';
57 $list_account[] = 'ACCOUNTING_PRODUCT_SOLD_ACCOUNT';
58 if ($mysoc->isInEEC()) {
59  $list_account[] = 'ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT';
60 }
61 $list_account[] = 'ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT';
62 $list_account[] = 'ACCOUNTING_PRODUCT_BUY_ACCOUNT';
63 if ($mysoc->isInEEC()) {
64  $list_account[] = 'ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT';
65 }
66 $list_account[] = 'ACCOUNTING_PRODUCT_BUY_EXPORT_ACCOUNT';
67 
68 $list_account[] = '---Service---';
69 $list_account[] = 'ACCOUNTING_SERVICE_SOLD_ACCOUNT';
70 if ($mysoc->isInEEC()) {
71  $list_account[] = 'ACCOUNTING_SERVICE_SOLD_INTRA_ACCOUNT';
72 }
73 $list_account[] = 'ACCOUNTING_SERVICE_SOLD_EXPORT_ACCOUNT';
74 $list_account[] = 'ACCOUNTING_SERVICE_BUY_ACCOUNT';
75 if ($mysoc->isInEEC()) {
76  $list_account[] = 'ACCOUNTING_SERVICE_BUY_INTRA_ACCOUNT';
77 }
78 $list_account[] = 'ACCOUNTING_SERVICE_BUY_EXPORT_ACCOUNT';
79 
80 $list_account[] = '---Others---';
81 $list_account[] = 'ACCOUNTING_VAT_BUY_ACCOUNT';
82 $list_account[] = 'ACCOUNTING_VAT_SOLD_ACCOUNT';
83 $list_account[] = 'ACCOUNTING_VAT_PAY_ACCOUNT';
84 if (isModEnabled('banque')) {
85  $list_account[] = 'ACCOUNTING_ACCOUNT_TRANSFER_CASH';
86 }
87 if (isModEnabled('don')) {
88  $list_account[] = 'DONATION_ACCOUNTINGACCOUNT';
89 }
90 if (isModEnabled('adherent')) {
91  $list_account[] = 'ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT';
92 }
93 if (isModEnabled('loan')) {
94  $list_account[] = 'LOAN_ACCOUNTING_ACCOUNT_CAPITAL';
95  $list_account[] = 'LOAN_ACCOUNTING_ACCOUNT_INTEREST';
96  $list_account[] = 'LOAN_ACCOUNTING_ACCOUNT_INSURANCE';
97 }
98 $list_account[] = 'ACCOUNTING_ACCOUNT_SUSPENSE';
99 if (isModEnabled('societe')) {
100  $list_account[] = '---Deposits---';
101 }
102 
103 /*
104  * Actions
105  */
106 if ($action == 'update') {
107  $error = 0;
108  // Process $list_account_main
109  foreach ($list_account_main as $constname) {
110  $constvalue = GETPOST($constname, 'alpha');
111 
112  if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
113  $error++;
114  }
115  }
116  // Process $list_account
117  foreach ($list_account as $constname) {
118  $reg = array();
119  if (preg_match('/---(.*)---/', $constname, $reg)) { // This is a separator
120  continue;
121  }
122 
123  $constvalue = GETPOST($constname, 'alpha');
124 
125  if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
126  $error++;
127  }
128  }
129 
130  $constname = 'ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT';
131  $constvalue = GETPOST($constname, 'int');
132  if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
133  $error++;
134  }
135 
136 
137  if (!$error) {
138  setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
139  } else {
140  setEventMessages($langs->trans("Error"), null, 'errors');
141  }
142 }
143 
144 if ($action == 'setACCOUNTING_ACCOUNT_CUSTOMER_USE_AUXILIARY_ON_DEPOSIT') {
145  $setDisableAuxiliaryAccountOnCustomerDeposit = GETPOST('value', 'int');
146  $res = dolibarr_set_const($db, "ACCOUNTING_ACCOUNT_CUSTOMER_USE_AUXILIARY_ON_DEPOSIT", $setDisableAuxiliaryAccountOnCustomerDeposit, 'yesno', 0, '', $conf->entity);
147  if (!($res > 0)) {
148  $error++;
149  }
150 
151  if (!$error) {
152  setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
153  } else {
154  setEventMessages($langs->trans("Error"), null, 'mesgs');
155  }
156 }
157 
158 
159 /*
160  * View
161  */
162 
163 $form = new Form($db);
164 $formaccounting = new FormAccounting($db);
165 
166 llxHeader();
167 
168 $linkback = '';
169 print load_fiche_titre($langs->trans('MenuDefaultAccounts'), $linkback, 'title_accountancy');
170 
171 print '<span class="opacitymedium">'.$langs->trans("DefaultBindingDesc").'</span><br>';
172 print '<br>';
173 
174 print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
175 print '<input type="hidden" name="token" value="'.newToken().'">';
176 print '<input type="hidden" name="action" value="update">';
177 
178 
179 // Define main accounts for thirdparty
180 
181 print '<div class="div-table-responsive-no-min">';
182 print '<table class="noborder centpercent">';
183 print '<tr class="liste_titre"><td>'.$langs->trans("ThirdParties").' | '.$langs->trans("Users").'</td><td></td></tr>';
184 
185 foreach ($list_account_main as $key) {
186  print '<tr class="oddeven value">';
187  // Param
188  $label = $langs->trans($key);
189  $keydesc = $key.'_Desc';
190 
191  $htmltext = $langs->trans($keydesc);
192  print '<td class="fieldrequired">';
193  if ($key == 'ACCOUNTING_ACCOUNT_CUSTOMER') {
194  print img_picto('', 'company', 'class="pictofixedwidth"');
195  } elseif ($key == 'ACCOUNTING_ACCOUNT_SUPPLIER') {
196  print img_picto('', 'company', 'class="pictofixedwidth"');
197  } else {
198  print img_picto('', 'user', 'class="pictofixedwidth"');
199  }
200  print $form->textwithpicto($label, $htmltext);
201  print '</td>';
202  // Value
203  print '<td class="right">'; // Do not force class=right, or it align also the content of the select box
204  $key_value = getDolGlobalString($key);
205  print $formaccounting->select_account($key_value, $key, 1, '', 1, 1, 'minwidth100 maxwidth300 maxwidthonsmartphone', 'accountsmain');
206  print '</td>';
207  print '</tr>';
208 }
209 print "</table>\n";
210 print "</div>\n";
211 
212 
213 print '<div class="div-table-responsive-no-min">';
214 print '<table class="noborder centpercent">';
215 
216 foreach ($list_account as $key) {
217  $reg = array();
218  if (preg_match('/---(.*)---/', $key, $reg)) {
219  print '<tr class="liste_titre"><td>'.$langs->trans($reg[1]).'</td><td></td></tr>';
220  } else {
221  print '<tr class="oddeven value">';
222  // Param
223  $label = $langs->trans($key);
224  print '<td>';
225  if (preg_match('/^ACCOUNTING_PRODUCT/', $key)) {
226  print img_picto('', 'product', 'class="pictofixedwidth"');
227  } elseif (preg_match('/^ACCOUNTING_SERVICE/', $key)) {
228  print img_picto('', 'service', 'class="pictofixedwidth"');
229  } elseif (preg_match('/^ACCOUNTING_VAT_PAY_ACCOUNT/', $key)) {
230  print img_picto('', 'payment_vat', 'class="pictofixedwidth"');
231  } elseif (preg_match('/^ACCOUNTING_VAT/', $key)) {
232  print img_picto('', 'vat', 'class="pictofixedwidth"');
233  } elseif (preg_match('/^ACCOUNTING_ACCOUNT_CUSTOMER/', $key)) {
234  print img_picto('', 'bill', 'class="pictofixedwidth"');
235  } elseif (preg_match('/^LOAN_ACCOUNTING_ACCOUNT/', $key)) {
236  print img_picto('', 'loan', 'class="pictofixedwidth"');
237  } elseif (preg_match('/^DONATION_ACCOUNTING/', $key)) {
238  print img_picto('', 'donation', 'class="pictofixedwidth"');
239  } elseif (preg_match('/^ADHERENT_SUBSCRIPTION/', $key)) {
240  print img_picto('', 'member', 'class="pictofixedwidth"');
241  } elseif (preg_match('/^ACCOUNTING_ACCOUNT_TRANSFER/', $key)) {
242  print img_picto('', 'bank_account', 'class="pictofixedwidth"');
243  } elseif (preg_match('/^ACCOUNTING_ACCOUNT_SUSPENSE/', $key)) {
244  print img_picto('', 'question', 'class="pictofixedwidth"');
245  }
246  print $label;
247  print '</td>';
248  // Value
249  print '<td class="right">'; // Do not force class=right, or it align also the content of the select box
250  print $formaccounting->select_account(getDolGlobalString($key), $key, 1, '', 1, 1, 'minwidth100 maxwidth300 maxwidthonsmartphone', 'accounts');
251  print '</td>';
252  print '</tr>';
253  }
254 }
255 
256 
257 // Customer deposit account
258 print '<tr class="oddeven value">';
259 // Param
260 print '<td>';
261 print img_picto('', 'bill', 'class="pictofixedwidth"') . $langs->trans('ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT');
262 print '</td>';
263 // Value
264 print '<td class="right">'; // Do not force class=right, or it align also the content of the select box
265 print $formaccounting->select_account(getDolGlobalString('ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT'), 'ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT', 1, '', 1, 1, 'minwidth100 maxwidth300 maxwidthonsmartphone', 'accounts');
266 print '</td>';
267 print '</tr>';
268 
269 if (isModEnabled('societe') && getDolGlobalString('ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT') && getDolGlobalString('ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT') != '-1') {
270  print '<tr class="oddeven">';
271  print '<td>' . img_picto('', 'bill', 'class="pictofixedwidth"') . $langs->trans("UseAuxiliaryAccountOnCustomerDeposit") . '</td>';
272  if (getDolGlobalInt('ACCOUNTING_ACCOUNT_CUSTOMER_USE_AUXILIARY_ON_DEPOSIT')) {
273  print '<td class="right"><a class="reposition" href="' . $_SERVER['PHP_SELF'] . '?token=' . newToken() . '&action=setACCOUNTING_ACCOUNT_CUSTOMER_USE_AUXILIARY_ON_DEPOSIT&value=0">';
274  print img_picto($langs->trans("Activated"), 'switch_on', '', false, 0, 0, '', 'warning');
275  print '</a></td>';
276  } else {
277  print '<td class="right"><a class="reposition" href="' . $_SERVER['PHP_SELF'] . '?token=' . newToken() . '&action=setACCOUNTING_ACCOUNT_CUSTOMER_USE_AUXILIARY_ON_DEPOSIT&value=1">';
278  print img_picto($langs->trans("Disabled"), 'switch_off');
279  print '</a></td>';
280  }
281  print '</tr>';
282 }
283 
284 print "</table>\n";
285 print "</div>\n";
286 
287 print '<div class="center"><input type="submit" class="button button-edit" name="button" value="'.$langs->trans('Save').'"></div>';
288 
289 print '</form>';
290 
291 // End of page
292 llxFooter();
293 $db->close();
GETPOST($paramname, $check= 'alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
getDolGlobalInt($key, $default=0)
Return dolibarr global constant int value.
if($cancel &&!$id) if($action== 'add'&&!$cancel) if($action== 'delete') if($id) $form
Actions.
Definition: card.php:142
dolibarr_set_const($db, $name, $value, $type= 'chaine', $visible=0, $note= '', $entity=1)
Insert a parameter (key,value) into database (delete old key then insert it again).
Definition: admin.lib.php:627
if(!function_exists('utf8_encode')) if(!function_exists('utf8_decode')) getDolGlobalString($key, $default= '')
Return dolibarr global constant string value.
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOCSRFCHECK')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
Definition: wrapper.php:59
setEventMessages($mesg, $mesgs, $style= 'mesgs', $messagekey= '')
Set event messages in dol_events session object.
Class to manage generation of HTML components Only common components must be here.
load_fiche_titre($titre, $morehtmlright= '', $picto= 'generic', $pictoisfullpath=0, $id= '', $morecssontable= '', $morehtmlcenter= '')
Load a title with picto.
img_picto($titlealt, $picto, $moreatt= '', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt= '', $morecss= '', $marginleftonlyshort=2)
Show picto whatever it&#39;s its name (generic function)
accessforbidden($message= '', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program Calling this function terminate execution ...
Class to manage generation of HTML components for accounting management.
newToken()
Return the value of token currently saved into session with name &#39;newtoken&#39;.
isModEnabled($module)
Is Dolibarr module enabled.
llxFooter()
Empty footer.
Definition: wrapper.php:73