dolibarr  x.y.z
company.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2001-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3  * Copyright (C) 2004-2019 Laurent Destailleur <eldy@users.sourceforge.net>
4  * Copyright (C) 2005-2017 Regis Houssin <regis.houssin@inodbox.com>
5  * Copyright (C) 2010-2014 Juanjo Menent <jmenent@2byte.es>
6  * Copyright (C) 2011-2017 Philippe Grand <philippe.grand@atoo-net.com>
7  * Copyright (C) 2015 Alexandre Spangaro <aspangaro@open-dsi.fr>
8  * Copyright (C) 2017 Rui Strecht <rui.strecht@aliartalentos.com>
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 
30 // Load Dolibarr environment
31 require '../main.inc.php';
32 require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
33 require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
34 require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
35 require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php';
36 require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
37 require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
38 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
39 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
40 
41 $action = GETPOST('action', 'aZ09');
42 $contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'admincompany'; // To manage different context of search
43 
44 // Load translation files required by the page
45 $langs->loadLangs(array('admin', 'companies', 'bills'));
46 
47 if (!$user->admin) {
49 }
50 
51 $error = 0;
52 
53 // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
54 $hookmanager->initHooks(array('admincompany', 'globaladmin'));
55 
56 
57 /*
58  * Actions
59  */
60 
61 $parameters = array();
62 $reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
63 if ($reshook < 0) {
64  setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
65 }
66 
67 if (($action == 'update' && !GETPOST("cancel", 'alpha'))
68 || ($action == 'updateedit')) {
69  $tmparray = getCountry(GETPOST('country_id', 'int'), 'all', $db, $langs, 0);
70  if (!empty($tmparray['id'])) {
71  $mysoc->country_id = $tmparray['id'];
72  $mysoc->country_code = $tmparray['code'];
73  $mysoc->country_label = $tmparray['label'];
74 
75  $s = $mysoc->country_id.':'.$mysoc->country_code.':'.$mysoc->country_label;
76  dolibarr_set_const($db, "MAIN_INFO_SOCIETE_COUNTRY", $s, 'chaine', 0, '', $conf->entity);
77 
78  activateModulesRequiredByCountry($mysoc->country_code);
79  }
80 
81  $tmparray = getState(GETPOST('state_id', 'int'), 'all', $db, $langs, 0);
82  if (!empty($tmparray['id'])) {
83  $mysoc->state_id = $tmparray['id'];
84  $mysoc->state_code = $tmparray['code'];
85  $mysoc->state_label = $tmparray['label'];
86 
87  $s = $mysoc->state_id.':'.$mysoc->state_code.':'.$mysoc->state_label;
88  dolibarr_set_const($db, "MAIN_INFO_SOCIETE_STATE", $s, 'chaine', 0, '', $conf->entity);
89  } else {
90  dolibarr_del_const($db, "MAIN_INFO_SOCIETE_STATE", $conf->entity);
91  }
92 
93  $db->begin();
94 
95  dolibarr_set_const($db, "MAIN_INFO_SOCIETE_NOM", GETPOST("nom", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
96  dolibarr_set_const($db, "MAIN_INFO_SOCIETE_ADDRESS", GETPOST("MAIN_INFO_SOCIETE_ADDRESS", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
97  dolibarr_set_const($db, "MAIN_INFO_SOCIETE_TOWN", GETPOST("MAIN_INFO_SOCIETE_TOWN", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
98  dolibarr_set_const($db, "MAIN_INFO_SOCIETE_ZIP", GETPOST("MAIN_INFO_SOCIETE_ZIP", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
99  dolibarr_set_const($db, "MAIN_INFO_SOCIETE_REGION", GETPOST("region_code", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
100  dolibarr_set_const($db, "MAIN_MONNAIE", GETPOST("currency", 'aZ09'), 'chaine', 0, '', $conf->entity);
101  dolibarr_set_const($db, "MAIN_INFO_SOCIETE_TEL", GETPOST("tel", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
102  dolibarr_set_const($db, "MAIN_INFO_SOCIETE_FAX", GETPOST("fax", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
103  dolibarr_set_const($db, "MAIN_INFO_SOCIETE_MAIL", GETPOST("mail", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
104  dolibarr_set_const($db, "MAIN_INFO_SOCIETE_WEB", GETPOST("web", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
105  dolibarr_set_const($db, "MAIN_INFO_SOCIETE_NOTE", GETPOST("note", 'restricthtml'), 'chaine', 0, '', $conf->entity);
106  dolibarr_set_const($db, "MAIN_INFO_SOCIETE_GENCOD", GETPOST("barcode", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
107 
108  $dirforimage = $conf->mycompany->dir_output.'/logos/';
109 
110  $arrayofimages = array('logo', 'logo_squarred');
111  //var_dump($_FILES); exit;
112  foreach ($arrayofimages as $varforimage) {
113  if ($_FILES[$varforimage]["name"] && !preg_match('/(\.jpeg|\.jpg|\.png)$/i', $_FILES[$varforimage]["name"])) { // Logo can be used on a lot of different places. Only jpg and png can be supported.
114  $langs->load("errors");
115  setEventMessages($langs->trans("ErrorBadImageFormat"), null, 'errors');
116  break;
117  }
118 
119  // Remove to check file size to large
120  /*if ($_FILES[$varforimage]["tmp_name"]) {*/
121  $reg = array();
122  if (preg_match('/([^\\/:]+)$/i', $_FILES[$varforimage]["name"], $reg)) {
123  $original_file = $reg[1];
124 
125  $isimage = image_format_supported($original_file);
126  if ($isimage >= 0) {
127  dol_syslog("Move file ".$_FILES[$varforimage]["tmp_name"]." to ".$dirforimage.$original_file);
128  if (!is_dir($dirforimage)) {
129  dol_mkdir($dirforimage);
130  }
131  $result = dol_move_uploaded_file($_FILES[$varforimage]["tmp_name"], $dirforimage.$original_file, 1, 0, $_FILES[$varforimage]['error']);
132  if ($result > 0) {
133  $constant = "MAIN_INFO_SOCIETE_LOGO";
134  if ($varforimage == 'logo_squarred') {
135  $constant = "MAIN_INFO_SOCIETE_LOGO_SQUARRED";
136  }
137 
138  dolibarr_set_const($db, $constant, $original_file, 'chaine', 0, '', $conf->entity);
139 
140  // Create thumbs of logo (Note that PDF use original file and not thumbs)
141  if ($isimage > 0) {
142  // Create thumbs
143  //$object->addThumbs($newfile); // We can't use addThumbs here yet because we need name of generated thumbs to add them into constants. TODO Check if need such constants. We should be able to retrieve value with get...
144 
145  // Create small thumb, Used on logon for example
146  $imgThumbSmall = vignette($dirforimage.$original_file, $maxwidthsmall, $maxheightsmall, '_small', $quality);
147  if (image_format_supported($imgThumbSmall) >= 0 && preg_match('/([^\\/:]+)$/i', $imgThumbSmall, $reg)) {
148  $imgThumbSmall = $reg[1]; // Save only basename
149  dolibarr_set_const($db, $constant."_SMALL", $imgThumbSmall, 'chaine', 0, '', $conf->entity);
150  } else {
151  dol_syslog($imgThumbSmall);
152  }
153 
154  // Create mini thumb, Used on menu or for setup page for example
155  $imgThumbMini = vignette($dirforimage.$original_file, $maxwidthmini, $maxheightmini, '_mini', $quality);
156  if (image_format_supported($imgThumbMini) >= 0 && preg_match('/([^\\/:]+)$/i', $imgThumbMini, $reg)) {
157  $imgThumbMini = $reg[1]; // Save only basename
158  dolibarr_set_const($db, $constant."_MINI", $imgThumbMini, 'chaine', 0, '', $conf->entity);
159  } else {
160  dol_syslog($imgThumbMini);
161  }
162  } else {
163  dol_syslog("ErrorImageFormatNotSupported", LOG_WARNING);
164  }
165  } elseif (preg_match('/^ErrorFileIsInfectedWithAVirus/', $result)) {
166  $error++;
167  $langs->load("errors");
168  $tmparray = explode(':', $result);
169  setEventMessages($langs->trans('ErrorFileIsInfectedWithAVirus', $tmparray[1]), null, 'errors');
170  } elseif (preg_match('/^ErrorFileSizeTooLarge/', $result)) {
171  $error++;
172  setEventMessages($langs->trans("ErrorFileSizeTooLarge"), null, 'errors');
173  } else {
174  $error++;
175  setEventMessages($langs->trans("ErrorFailedToSaveFile"), null, 'errors');
176  }
177  } else {
178  $error++;
179  $langs->load("errors");
180  setEventMessages($langs->trans("ErrorBadImageFormat"), null, 'errors');
181  }
182  }
183  /*}*/
184  }
185 
186  dolibarr_set_const($db, "MAIN_INFO_SOCIETE_MANAGERS", GETPOST("MAIN_INFO_SOCIETE_MANAGERS", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
187  dolibarr_set_const($db, "MAIN_INFO_GDPR", GETPOST("MAIN_INFO_GDPR", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
188  dolibarr_set_const($db, "MAIN_INFO_CAPITAL", GETPOST("capital", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
189  dolibarr_set_const($db, "MAIN_INFO_SOCIETE_FORME_JURIDIQUE", GETPOST("forme_juridique_code", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
190  dolibarr_set_const($db, "MAIN_INFO_SIREN", GETPOST("siren", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
191  dolibarr_set_const($db, "MAIN_INFO_SIRET", GETPOST("siret", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
192  dolibarr_set_const($db, "MAIN_INFO_APE", GETPOST("ape", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
193  dolibarr_set_const($db, "MAIN_INFO_RCS", GETPOST("rcs", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
194  dolibarr_set_const($db, "MAIN_INFO_PROFID5", GETPOST("MAIN_INFO_PROFID5", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
195  dolibarr_set_const($db, "MAIN_INFO_PROFID6", GETPOST("MAIN_INFO_PROFID6", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
196 
197  dolibarr_set_const($db, "MAIN_INFO_TVAINTRA", GETPOST("tva", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
198  dolibarr_set_const($db, "MAIN_INFO_SOCIETE_OBJECT", GETPOST("object", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
199 
200  dolibarr_set_const($db, "SOCIETE_FISCAL_MONTH_START", GETPOST("SOCIETE_FISCAL_MONTH_START", 'int'), 'chaine', 0, '', $conf->entity);
201 
202  // Sale tax options
203  $usevat = GETPOST("optiontva", 'aZ09');
204  $uselocaltax1 = GETPOST("optionlocaltax1", 'aZ09');
205  $uselocaltax2 = GETPOST("optionlocaltax2", 'aZ09');
206  if ($uselocaltax1 == 'localtax1on' && !$usevat) {
207  setEventMessages($langs->trans("IfYouUseASecondTaxYouMustSetYouUseTheMainTax"), null, 'errors');
208  $error++;
209  }
210  if ($uselocaltax2 == 'localtax2on' && !$usevat) {
211  setEventMessages($langs->trans("IfYouUseAThirdTaxYouMustSetYouUseTheMainTax"), null, 'errors');
212  $error++;
213  }
214 
215  dolibarr_set_const($db, "FACTURE_TVAOPTION", $usevat, 'chaine', 0, '', $conf->entity);
216  dolibarr_set_const($db, "FACTURE_LOCAL_TAX1_OPTION", $uselocaltax1, 'chaine', 0, '', $conf->entity);
217  dolibarr_set_const($db, "FACTURE_LOCAL_TAX2_OPTION", $uselocaltax2, 'chaine', 0, '', $conf->entity);
218 
219  if (GETPOST("optionlocaltax1") == "localtax1on") {
220  if (!GETPOSTISSET('lt1')) {
221  dolibarr_set_const($db, "MAIN_INFO_VALUE_LOCALTAX1", 0, 'chaine', 0, '', $conf->entity);
222  } else {
223  dolibarr_set_const($db, "MAIN_INFO_VALUE_LOCALTAX1", GETPOST('lt1', 'aZ09'), 'chaine', 0, '', $conf->entity);
224  }
225  dolibarr_set_const($db, "MAIN_INFO_LOCALTAX_CALC1", GETPOST("clt1", 'aZ09'), 'chaine', 0, '', $conf->entity);
226  }
227  if (GETPOST("optionlocaltax2") == "localtax2on") {
228  if (!GETPOSTISSET('lt2')) {
229  dolibarr_set_const($db, "MAIN_INFO_VALUE_LOCALTAX2", 0, 'chaine', 0, '', $conf->entity);
230  } else {
231  dolibarr_set_const($db, "MAIN_INFO_VALUE_LOCALTAX2", GETPOST('lt2', 'aZ09'), 'chaine', 0, '', $conf->entity);
232  }
233  dolibarr_set_const($db, "MAIN_INFO_LOCALTAX_CALC2", GETPOST("clt2", 'aZ09'), 'chaine', 0, '', $conf->entity);
234  }
235 
236  if (!$error) {
237  if (GETPOST('save')) { // To avoid to show message when we juste switch the country that resubmit the form.
238  setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
239  }
240  $db->commit();
241  } else {
242  $db->rollback();
243  }
244 
245  if ($action != 'updateedit' && !$error) {
246  header("Location: ".$_SERVER["PHP_SELF"]);
247  exit;
248  }
249 }
250 
251 if ($action == 'addthumb' || $action == 'addthumbsquarred') { // Regenerate thumbs
252  if (file_exists($conf->mycompany->dir_output.'/logos/'.$_GET["file"])) {
253  $isimage = image_format_supported($_GET["file"]);
254 
255  // Create thumbs of logo
256  if ($isimage > 0) {
257  $constant = "MAIN_INFO_SOCIETE_LOGO";
258  if ($action == 'addthumbsquarred') {
259  $constant = "MAIN_INFO_SOCIETE_LOGO_SQUARRED";
260  }
261 
262  $reg = array();
263 
264  // Create thumbs
265  //$object->addThumbs($newfile); // We can't use addThumbs here yet because we need name of generated thumbs to add them into constants. TODO Check if need such constants. We should be able to retrieve value with get...
266 
267  // Create small thumb. Used on logon for example
268  $imgThumbSmall = vignette($conf->mycompany->dir_output.'/logos/'.$_GET["file"], $maxwidthsmall, $maxheightsmall, '_small', $quality);
269  if (image_format_supported($imgThumbSmall) >= 0 && preg_match('/([^\\/:]+)$/i', $imgThumbSmall, $reg)) {
270  $imgThumbSmall = $reg[1]; // Save only basename
271  dolibarr_set_const($db, $constant."_SMALL", $imgThumbSmall, 'chaine', 0, '', $conf->entity);
272  } else {
273  dol_syslog($imgThumbSmall);
274  }
275 
276  // Create mini thumbs. Used on menu or for setup page for example
277  $imgThumbMini = vignette($conf->mycompany->dir_output.'/logos/'.$_GET["file"], $maxwidthmini, $maxheightmini, '_mini', $quality);
278  if (image_format_supported($imgThumbSmall) >= 0 && preg_match('/([^\\/:]+)$/i', $imgThumbMini, $reg)) {
279  $imgThumbMini = $reg[1]; // Save only basename
280  dolibarr_set_const($db, $constant."_MINI", $imgThumbMini, 'chaine', 0, '', $conf->entity);
281  } else {
282  dol_syslog($imgThumbMini);
283  }
284 
285  header("Location: ".$_SERVER["PHP_SELF"]);
286  exit;
287  } else {
288  $error++;
289  $langs->load("errors");
290  setEventMessages($langs->trans("ErrorBadImageFormat"), null, 'errors');
291  dol_syslog($langs->transnoentities("ErrorBadImageFormat"), LOG_INFO);
292  }
293  } else {
294  $error++;
295  $langs->load("errors");
296  setEventMessages($langs->trans("ErrorFileDoesNotExists", GETPOST("file")), null, 'errors');
297  dol_syslog($langs->transnoentities("ErrorFileDoesNotExists", GETPOST("file")), LOG_WARNING);
298  }
299 }
300 
301 
302 if ($action == 'removelogo' || $action == 'removelogosquarred') {
303  $constant = "MAIN_INFO_SOCIETE_LOGO";
304  if ($action == 'removelogosquarred') {
305  $constant = "MAIN_INFO_SOCIETE_LOGO_SQUARRED";
306  }
307 
308  require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
309 
310  $logofilename = $mysoc->logo;
311  $logofilenamebis = $mysoc->logo_squarred;
312  if ($action == 'removelogosquarred') {
313  $logofilename = $mysoc->logo_squarred;
314  $logofilenamebis = $mysoc->logo;
315  }
316 
317  $logofile = $conf->mycompany->dir_output.'/logos/'.$logofilename;
318  if ($logofilename != '' && $logofilename != $logofilenamebis) {
319  dol_delete_file($logofile);
320  }
321  dolibarr_del_const($db, $constant, $conf->entity);
322  if ($action == 'removelogosquarred') {
323  $mysoc->logo_squarred = '';
324  } else {
325  $mysoc->logo = '';
326  }
327 
328  $logofilename = $mysoc->logo_small;
329  $logofilenamebis = $mysoc->logo_squarred_small;
330  if ($action == 'removelogosquarred') {
331  $logofilename = $mysoc->logo_squarred_small;
332  $logofilenamebis = $mysoc->logo_small;
333  }
334 
335  $logosmallfile = $conf->mycompany->dir_output.'/logos/thumbs/'.$logofilename;
336  if ($logofilename != '' && $logofilename != $logofilenamebis) {
337  dol_delete_file($logosmallfile);
338  }
339  dolibarr_del_const($db, $constant."_SMALL", $conf->entity);
340  if ($action == 'removelogosquarred') {
341  $mysoc->logo_squarred_small = '';
342  } else {
343  $mysoc->logo_small = '';
344  }
345 
346  $logofilename = $mysoc->logo_mini;
347  $logofilenamebis = $mysoc->logo_squarred_mini;
348  if ($action == 'removelogosquarred') {
349  $logofilename = $mysoc->logo_squarred_mini;
350  $logofilenamebis = $mysoc->logo_mini;
351  }
352 
353  $logominifile = $conf->mycompany->dir_output.'/logos/thumbs/'.$logofilename;
354  if ($logofilename != '' && $logofilename != $logofilenamebis) {
355  dol_delete_file($logominifile);
356  }
357  dolibarr_del_const($db, $constant."_MINI", $conf->entity);
358  if ($action == 'removelogosquarred') {
359  $mysoc->logo_squarred_mini = '';
360  } else {
361  $mysoc->logo_mini = '';
362  }
363 }
364 
365 
366 /*
367  * View
368  */
369 
370 $wikihelp = 'EN:First_setup|FR:Premiers_paramétrages|ES:Primeras_configuraciones';
371 llxHeader('', $langs->trans("Setup"), $wikihelp);
372 
373 $form = new Form($db);
374 $formother = new FormOther($db);
375 $formcompany = new FormCompany($db);
376 
377 $countrynotdefined = '<span class="error">'.$langs->trans("ErrorSetACountryFirst").' <a href="#trzipbeforecountry">('.$langs->trans("SeeAbove").')</a></span>';
378 
379 print load_fiche_titre($langs->trans("CompanyFoundation"), '', 'title_setup');
380 
382 
383 print dol_get_fiche_head($head, 'company', '', -1, '');
384 
385 print '<span class="opacitymedium">'.$langs->trans("CompanyFundationDesc", $langs->transnoentities("Save"))."</span><br>\n";
386 print "<br><br>\n";
387 
388 
389 // Edit parameters
390 
391 if (!empty($conf->use_javascript_ajax)) {
392  print "\n".'<script type="text/javascript">';
393  print '$(document).ready(function () {
394  $("#selectcountry_id").change(function() {
395  document.form_index.action.value="updateedit";
396  document.form_index.submit();
397  });
398  });';
399  print '</script>'."\n";
400 }
401 
402 print '<form enctype="multipart/form-data" method="POST" action="'.$_SERVER["PHP_SELF"].'" name="form_index">';
403 print '<input type="hidden" name="token" value="'.newToken().'">';
404 print '<input type="hidden" name="action" value="update">';
405 
406 print '<table class="noborder centpercent editmode">';
407 print '<tr class="liste_titre"><th class="titlefieldcreate wordbreak">'.$langs->trans("CompanyInfo").'</th><th>'.$langs->trans("Value").'</th></tr>'."\n";
408 
409 // Name
410 print '<tr class="oddeven"><td class="fieldrequired wordbreak"><label for="name">'.$langs->trans("CompanyName").'</label></td><td>';
411 print '<input name="nom" id="name" class="minwidth200" value="'.dol_escape_htmltag((GETPOSTISSET('nom') ? GETPOST('nom', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_NOM) ? $conf->global->MAIN_INFO_SOCIETE_NOM : ''))).'"'.(empty($conf->global->MAIN_INFO_SOCIETE_NOM) ? ' autofocus="autofocus"' : '').'></td></tr>'."\n";
412 
413 // Address
414 print '<tr class="oddeven"><td><label for="MAIN_INFO_SOCIETE_ADDRESS">'.$langs->trans("CompanyAddress").'</label></td><td>';
415 print '<textarea name="MAIN_INFO_SOCIETE_ADDRESS" id="MAIN_INFO_SOCIETE_ADDRESS" class="quatrevingtpercent" rows="'.ROWS_3.'">'.(GETPOSTISSET('MAIN_INFO_SOCIETE_ADDRESS') ? GETPOST('MAIN_INFO_SOCIETE_ADDRESS', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_ADDRESS) ? $conf->global->MAIN_INFO_SOCIETE_ADDRESS : '')).'</textarea></td></tr>'."\n";
416 
417 // Zip
418 print '<tr class="oddeven" id="trzipbeforecountry"><td><label for="MAIN_INFO_SOCIETE_ZIP">'.$langs->trans("CompanyZip").'</label></td><td>';
419 print '<input class="width100" name="MAIN_INFO_SOCIETE_ZIP" id="MAIN_INFO_SOCIETE_ZIP" value="'.dol_escape_htmltag((GETPOSTISSET('MAIN_INFO_SOCIETE_ZIP') ? GETPOST('MAIN_INFO_SOCIETE_ZIP', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_ZIP) ? $conf->global->MAIN_INFO_SOCIETE_ZIP : ''))).'"></td></tr>'."\n";
420 
421 print '<tr class="oddeven" id="trtownbeforecountry"><td><label for="MAIN_INFO_SOCIETE_TOWN">'.$langs->trans("CompanyTown").'</label></td><td>';
422 print '<input name="MAIN_INFO_SOCIETE_TOWN" class="minwidth200" id="MAIN_INFO_SOCIETE_TOWN" value="'.dol_escape_htmltag((GETPOSTISSET('MAIN_INFO_SOCIETE_TOWN') ? GETPOST('MAIN_INFO_SOCIETE_TOWN', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_TOWN) ? $conf->global->MAIN_INFO_SOCIETE_TOWN : ''))).'"></td></tr>'."\n";
423 
424 // Country
425 print '<tr class="oddeven"><td class="fieldrequired"><label for="selectcountry_id">'.$langs->trans("Country").'</label></td><td>';
426 print img_picto('', 'globe-americas', 'class="pictofixedwidth"');
427 print $form->select_country($mysoc->country_id, 'country_id', '', 0);
428 if ($user->admin) {
429  print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
430 }
431 print '</td></tr>'."\n";
432 
433 print '<tr class="oddeven"><td class="wordbreak"><label for="state_id">'.$langs->trans("State").'</label></td><td>';
434 $state_id = 0;
435 if (!empty($conf->global->MAIN_INFO_SOCIETE_STATE)) {
436  $tmp = explode(':', $conf->global->MAIN_INFO_SOCIETE_STATE);
437  $state_id = $tmp[0];
438 }
439 print img_picto('', 'state', 'class="pictofixedwidth"');
440 print $formcompany->select_state($state_id, $mysoc->country_code, 'state_id', 'maxwidth200onsmartphone minwidth300');
441 print '</td></tr>'."\n";
442 
443 // Currency
444 print '<tr class="oddeven"><td><label for="currency">'.$langs->trans("CompanyCurrency").'</label></td><td>';
445 print img_picto('', 'multicurrency', 'class="pictofixedwidth"');
446 print $form->selectCurrency($conf->currency, "currency");
447 print '</td></tr>'."\n";
448 
449 // Phone
450 print '<tr class="oddeven"><td><label for="phone">'.$langs->trans("Phone").'</label></td><td>';
451 print img_picto('', 'object_phoning', '', false, 0, 0, '', 'pictofixedwidth');
452 print '<input class="maxwidth150 widthcentpercentminusx" name="tel" id="phone" value="'.dol_escape_htmltag((GETPOSTISSET('tel') ? GETPOST('tel', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_TEL) ? $conf->global->MAIN_INFO_SOCIETE_TEL : ''))).'"></td></tr>';
453 print '</td></tr>'."\n";
454 
455 // Fax
456 print '<tr class="oddeven"><td><label for="fax">'.$langs->trans("Fax").'</label></td><td>';
457 print img_picto('', 'object_phoning_fax', '', false, 0, 0, '', 'pictofixedwidth');
458 print '<input class="maxwidth150" name="fax" id="fax" value="'.dol_escape_htmltag((GETPOSTISSET('fax') ? GETPOST('fax', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_FAX) ? $conf->global->MAIN_INFO_SOCIETE_FAX : ''))).'"></td></tr>';
459 print '</td></tr>'."\n";
460 
461 // Email
462 print '<tr class="oddeven"><td><label for="email">'.$langs->trans("EMail").'</label></td><td>';
463 print img_picto('', 'object_email', '', false, 0, 0, '', 'pictofixedwidth');
464 print '<input class="minwidth300 maxwidth500 widthcentpercentminusx" name="mail" id="email" value="'.dol_escape_htmltag((GETPOSTISSET('mail') ? GETPOST('mail', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_MAIL) ? $conf->global->MAIN_INFO_SOCIETE_MAIL : ''))).'"></td></tr>';
465 print '</td></tr>'."\n";
466 
467 // Web
468 print '<tr class="oddeven"><td><label for="web">'.$langs->trans("Web").'</label></td><td>';
469 print img_picto('', 'globe', '', false, 0, 0, '', 'pictofixedwidth');
470 print '<input class="maxwidth300 widthcentpercentminusx" name="web" id="web" value="'.dol_escape_htmltag((GETPOSTISSET('web') ? GETPOST('web', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_WEB) ? $conf->global->MAIN_INFO_SOCIETE_WEB : ''))).'"></td></tr>';
471 print '</td></tr>'."\n";
472 
473 // Barcode
474 if (isModEnabled('barcode')) {
475  print '<tr class="oddeven"><td>';
476  print '<label for="barcode">'.$langs->trans("Gencod").'</label></td><td>';
477  print '<span class="fa fa-barcode pictofixedwidth"></span>';
478  print '<input name="barcode" id="barcode" class="minwidth150 widthcentpercentminusx maxwidth300" value="'.dol_escape_htmltag((GETPOSTISSET('barcode') ? GETPOST('barcode', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_GENCODE) ? $conf->global->MAIN_INFO_SOCIETE_GENCODE : ''))).'"></td></tr>';
479  print '</td></tr>';
480 }
481 
482 // Tooltip for both Logo and LogSquarred
483 $tooltiplogo = $langs->trans('AvailableFormats').' : png, jpg, jpeg';
484 $maxfilesizearray = getMaxFileSizeArray();
485 $maxmin = $maxfilesizearray['maxmin'];
486 $tooltiplogo .= ($maxmin > 0) ? '<br>'.$langs->trans('MaxSize').' : '.$maxmin.' '.$langs->trans('Kb') : '';
487 
488 // Logo
489 print '<tr class="oddeven"><td><label for="logo">'.$form->textwithpicto($langs->trans("Logo"), $tooltiplogo).'</label></td><td>';
490 print '<div class="centpercent nobordernopadding valignmiddle "><div class="inline-block marginrightonly">';
491 if ($maxmin > 0) {
492  print '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
493 }
494 print '<input type="file" class="flat minwidth100 maxwidthinputfileonsmartphone" name="logo" id="logo" accept="image/*">';
495 print '</div>';
496 if (!empty($mysoc->logo_small)) {
497  if (file_exists($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_small)) {
498  print '<div class="inline-block valignmiddle">';
499  print '<img style="max-height: 80px; max-width: 200px;" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&file='.urlencode('logos/thumbs/'.$mysoc->logo_small).'">';
500  print '</div>';
501  } elseif (!empty($mysoc->logo)) {
502  if (!file_exists($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_mini)) {
503  $imgThumbMini = vignette($conf->mycompany->dir_output.'/logos/'.$mysoc->logo, $maxwidthmini, $maxheightmini, '_mini', $quality);
504  }
505  $imgThumbSmall = vignette($conf->mycompany->dir_output.'/logos/'.$mysoc->logo, $maxwidthmini, $maxheightmini, '_small', $quality);
506  print '<div class="inline-block valignmiddle">';
507  print '<img style="max-height: 80px; max-width: 200px;" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&amp;file='.urlencode('logos/thumbs/'.basename($imgThumbSmall)).'">';
508  print '</div>';
509  }
510  print '<div class="inline-block valignmiddle marginrightonly">';
511  print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=removelogo&token='.newToken().'">'.img_delete($langs->trans("Delete"), '', 'marginleftonly').'</a>';
512  print '</div>';
513 } elseif (!empty($mysoc->logo)) {
514  if (file_exists($conf->mycompany->dir_output.'/logos/'.$mysoc->logo)) {
515  print '<div class="inline-block valignmiddle">';
516  print '<img style="max-height: 80px" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&file='.urlencode('logos/'.$mysoc->logo).'">';
517  print '</div>';
518  print '<div class="inline-block valignmiddle marginrightonly"><a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=removelogo&token='.newToken().'">'.img_delete($langs->trans("Delete"), '', 'marginleftonly').'</a></div>';
519  } else {
520  print '<div class="inline-block valignmiddle">';
521  print '<img height="80" src="'.DOL_URL_ROOT.'/public/theme/common/nophoto.png">';
522  print '</div>';
523  }
524 }
525 print '</div>';
526 print '</td></tr>';
527 
528 // Logo (squarred)
529 print '<tr class="oddeven"><td><label for="logo_squarred">'.$form->textwithpicto($langs->trans("LogoSquarred"), $tooltiplogo).'</label></td><td>';
530 print '<div class="centpercent nobordernopadding valignmiddle"><div class="inline-block marginrightonly">';
531 $maxfilesizearray = getMaxFileSizeArray();
532 $maxmin = $maxfilesizearray['maxmin'];
533 if ($maxmin > 0) {
534  print '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
535 }
536 print '<input type="file" class="flat minwidth100 maxwidthinputfileonsmartphone" name="logo_squarred" id="logo_squarred" accept="image/*">';
537 print '</div>';
538 if (!empty($mysoc->logo_squarred_small)) {
539  if (file_exists($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_squarred_small)) {
540  print '<div class="inline-block valignmiddle marginrightonly">';
541  print '<img style="max-height: 80px" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&file='.urlencode('logos/thumbs/'.$mysoc->logo_squarred_small).'">';
542  print '</div>';
543  } elseif (!empty($mysoc->logo_squarred)) {
544  if (!file_exists($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_squarred_mini)) {
545  $imgThumbMini = vignette($conf->mycompany->dir_output.'/logos/'.$mysoc->logo_squarred, $maxwidthmini, $maxheightmini, '_mini', $quality);
546  }
547  $imgThumbSmall = vignette($conf->mycompany->dir_output.'/logos/'.$mysoc->logo_squarred, $maxwidthmini, $maxheightmini, '_small', $quality);
548  print '<div class="inline-block valignmiddle">';
549  print '<img style="max-height: 80px" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&file='.urlencode('logos/thumbs/'.basename($imgThumbSmall)).'">';
550  print '</div>';
551  }
552  print '<div class="inline-block valignmiddle marginrightonly"><a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=removelogosquarred&token='.newToken().'">'.img_delete($langs->trans("Delete"), '', 'marginleftonly').'</a></div>';
553 } elseif (!empty($mysoc->logo_squarred)) {
554  if (file_exists($conf->mycompany->dir_output.'/logos/'.$mysoc->logo_squarred)) {
555  print '<div class="inline-block valignmiddle">';
556  print '<img style="max-height: 80px" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&file='.urlencode('logos/'.$mysoc->logo_squarred).'">';
557  print '</div>';
558  print '<div class="inline-block valignmiddle marginrightonly"><a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=removelogosquarred&token='.newToken().'">'.img_delete($langs->trans("Delete"), '', 'marginleftonly').'</a></div>';
559  } else {
560  print '<div class="inline-block valignmiddle">';
561  print '<img height="80" src="'.DOL_URL_ROOT.'/public/theme/common/nophoto.png">';
562  print '</div>';
563  }
564 }
565 print '</div>';
566 print '</td></tr>';
567 
568 // Note
569 print '<tr class="oddeven"><td class="tdtop"><label for="note">'.$langs->trans("Note").'</label></td><td>';
570 print '<textarea class="flat quatrevingtpercent" name="note" id="note" rows="'.ROWS_5.'">'.(GETPOSTISSET('note') ? GETPOST('note', 'restricthtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_NOTE) ? $conf->global->MAIN_INFO_SOCIETE_NOTE : '')).'</textarea></td></tr>';
571 print '</td></tr>';
572 
573 print '</table>';
574 
575 print '<br>';
576 
577 // IDs of the company (country-specific)
578 print '<div class="div-table-responsive-no-min">';
579 print '<table class="noborder centpercent editmode">';
580 print '<tr class="liste_titre"><td class="titlefieldcreate wordbreak">'.$langs->trans("CompanyIds").'</td><td>'.$langs->trans("Value").'</td></tr>';
581 
582 $langs->load("companies");
583 
584 // Managing Director(s)
585 print '<tr class="oddeven"><td><label for="director">'.$langs->trans("ManagingDirectors").'</label></td><td>';
586 print '<input name="MAIN_INFO_SOCIETE_MANAGERS" id="directors" class="minwidth300" value="'.dol_escape_htmltag((GETPOSTISSET('MAIN_INFO_SOCIETE_MANAGERS') ? GETPOST('MAIN_INFO_SOCIETE_MANAGERS', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_MANAGERS) ? $conf->global->MAIN_INFO_SOCIETE_MANAGERS : ''))).'"></td></tr>';
587 
588 // GDPR contact
589 print '<tr class="oddeven"><td>';
590 print $form->textwithpicto($langs->trans("GDPRContact"), $langs->trans("GDPRContactDesc"));
591 print '</td><td>';
592 print '<input name="MAIN_INFO_GDPR" id="infodirector" class="minwidth300" value="'.dol_escape_htmltag((GETPOSTISSET("MAIN_INFO_GDPR") ? GETPOST("MAIN_INFO_GDPR", 'alphanohtml') : (!empty($conf->global->MAIN_INFO_GDPR) ? $conf->global->MAIN_INFO_GDPR : ''))).'"></td></tr>';
593 
594 // Capital
595 print '<tr class="oddeven"><td><label for="capital">'.$langs->trans("Capital").'</label></td><td>';
596 print '<input name="capital" id="capital" class="maxwidth100" value="'.dol_escape_htmltag((GETPOSTISSET('capital') ? GETPOST('capital', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_CAPITAL) ? $conf->global->MAIN_INFO_CAPITAL : ''))).'"></td></tr>';
597 
598 // Juridical Status
599 print '<tr class="oddeven"><td><label for="forme_juridique_code">'.$langs->trans("JuridicalStatus").'</label></td><td>';
600 if ($mysoc->country_code) {
601  print $formcompany->select_juridicalstatus($conf->global->MAIN_INFO_SOCIETE_FORME_JURIDIQUE, $mysoc->country_code, '', 'forme_juridique_code');
602 } else {
603  print $countrynotdefined;
604 }
605 print '</td></tr>';
606 
607 // ProfId1
608 if ($langs->transcountry("ProfId1", $mysoc->country_code) != '-') {
609  print '<tr class="oddeven"><td><label for="profid1">'.$langs->transcountry("ProfId1", $mysoc->country_code).'</label></td><td>';
610  if (!empty($mysoc->country_code)) {
611  print '<input name="siren" id="profid1" class="minwidth200" value="'.dol_escape_htmltag(!empty($conf->global->MAIN_INFO_SIREN) ? $conf->global->MAIN_INFO_SIREN : '').'">';
612  } else {
613  print $countrynotdefined;
614  }
615  print '</td></tr>';
616 }
617 
618 // ProfId2
619 if ($langs->transcountry("ProfId2", $mysoc->country_code) != '-') {
620  print '<tr class="oddeven"><td><label for="profid2">'.$langs->transcountry("ProfId2", $mysoc->country_code).'</label></td><td>';
621  if (!empty($mysoc->country_code)) {
622  print '<input name="siret" id="profid2" class="minwidth200" value="'.dol_escape_htmltag(!empty($conf->global->MAIN_INFO_SIRET) ? $conf->global->MAIN_INFO_SIRET : '').'">';
623  } else {
624  print $countrynotdefined;
625  }
626  print '</td></tr>';
627 }
628 
629 // ProfId3
630 if ($langs->transcountry("ProfId3", $mysoc->country_code) != '-') {
631  print '<tr class="oddeven"><td><label for="profid3">'.$langs->transcountry("ProfId3", $mysoc->country_code).'</label></td><td>';
632  if (!empty($mysoc->country_code)) {
633  print '<input name="ape" id="profid3" class="minwidth200" value="'.dol_escape_htmltag(!empty($conf->global->MAIN_INFO_APE) ? $conf->global->MAIN_INFO_APE : '').'">';
634  } else {
635  print $countrynotdefined;
636  }
637  print '</td></tr>';
638 }
639 
640 // ProfId4
641 if ($langs->transcountry("ProfId4", $mysoc->country_code) != '-') {
642  print '<tr class="oddeven"><td><label for="profid4">'.$langs->transcountry("ProfId4", $mysoc->country_code).'</label></td><td>';
643  if (!empty($mysoc->country_code)) {
644  print '<input name="rcs" id="profid4" class="minwidth200" value="'.dol_escape_htmltag(!empty($conf->global->MAIN_INFO_RCS) ? $conf->global->MAIN_INFO_RCS : '').'">';
645  } else {
646  print $countrynotdefined;
647  }
648  print '</td></tr>';
649 }
650 
651 // ProfId5
652 if ($langs->transcountry("ProfId5", $mysoc->country_code) != '-') {
653  print '<tr class="oddeven"><td><label for="profid5">'.$langs->transcountry("ProfId5", $mysoc->country_code).'</label></td><td>';
654  if (!empty($mysoc->country_code)) {
655  print '<input name="MAIN_INFO_PROFID5" id="profid5" class="minwidth200" value="'.dol_escape_htmltag(!empty($conf->global->MAIN_INFO_PROFID5) ? $conf->global->MAIN_INFO_PROFID5 : '').'">';
656  } else {
657  print $countrynotdefined;
658  }
659  print '</td></tr>';
660 }
661 
662 // ProfId6
663 if ($langs->transcountry("ProfId6", $mysoc->country_code) != '-') {
664  print '<tr class="oddeven"><td><label for="profid6">'.$langs->transcountry("ProfId6", $mysoc->country_code).'</label></td><td>';
665  if (!empty($mysoc->country_code)) {
666  print '<input name="MAIN_INFO_PROFID6" id="profid6" class="minwidth200" value="'.dol_escape_htmltag(!empty($conf->global->MAIN_INFO_PROFID6) ? $conf->global->MAIN_INFO_PROFID6 : '').'">';
667  } else {
668  print $countrynotdefined;
669  }
670  print '</td></tr>';
671 }
672 
673 // Intra-community VAT number
674 print '<tr class="oddeven"><td><label for="intra_vat">'.$langs->trans("VATIntra").'</label></td><td>';
675 print '<input name="tva" id="intra_vat" class="minwidth200" value="'.dol_escape_htmltag(!empty($conf->global->MAIN_INFO_TVAINTRA) ? $conf->global->MAIN_INFO_TVAINTRA : '').'">';
676 print '</td></tr>';
677 
678 // Object of the company
679 print '<tr class="oddeven"><td><label for="object">'.$langs->trans("CompanyObject").'</label></td><td>';
680 print '<textarea class="flat quatrevingtpercent" name="object" id="object" rows="'.ROWS_5.'">'.(!empty($conf->global->MAIN_INFO_SOCIETE_OBJECT) ? $conf->global->MAIN_INFO_SOCIETE_OBJECT : '').'</textarea></td></tr>';
681 print '</td></tr>';
682 
683 print '</table>';
684 print '</div>';
685 
686 
687 // Fiscal year start
688 print '<br>';
689 print '<table class="noborder centpercent editmode">';
690 print '<tr class="liste_titre">';
691 print '<td class="titlefieldcreate">'.$langs->trans("FiscalYearInformation").'</td><td>'.$langs->trans("Value").'</td>';
692 print "</tr>\n";
693 
694 print '<tr class="oddeven"><td><label for="SOCIETE_FISCAL_MONTH_START">'.$langs->trans("FiscalMonthStart").'</label></td><td>';
695 print $formother->select_month(!empty($conf->global->SOCIETE_FISCAL_MONTH_START) ? $conf->global->SOCIETE_FISCAL_MONTH_START : '', 'SOCIETE_FISCAL_MONTH_START', 0, 1, 'maxwidth100').'</td></tr>';
696 
697 print "</table>";
698 print '<br>';
699 
700 
701 // Sales taxes (VAT, IRPF, ...)
702 print load_fiche_titre($langs->trans("TypeOfSaleTaxes"), '', 'object_payment');
703 
704 print '<table class="noborder centpercent editmode">';
705 print '<tr class="liste_titre">';
706 print '<td class="titlefieldcreate">'.$langs->trans("VATManagement").'</td><td>'.$langs->trans("Description").'</td>';
707 print '<td class="right">&nbsp;</td>';
708 print "</tr>\n";
709 
710 // Main tax
711 print '<tr class="oddeven"><td><label><input type="radio" name="optiontva" id="use_vat" value="1"'.(empty($conf->global->FACTURE_TVAOPTION) ? "" : " checked")."> ".$langs->trans("VATIsUsed")."</label></td>";
712 print '<td colspan="2">';
713 $tooltiphelp = '';
714 if ($mysoc->country_code == 'FR') {
715  $tooltiphelp = '<i>'.$langs->trans("Example").': '.$langs->trans("VATIsUsedExampleFR")."</i>";
716 }
717 print '<label for="use_vat">'.$form->textwithpicto($langs->trans("VATIsUsedDesc"), $tooltiphelp)."</label>";
718 print "</td></tr>\n";
719 
720 
721 print '<tr class="oddeven"><td width="140"><label><input type="radio" name="optiontva" id="no_vat" value="0"'.(empty($conf->global->FACTURE_TVAOPTION) ? " checked" : "")."> ".$langs->trans("VATIsNotUsed")."</label></td>";
722 print '<td colspan="2">';
723 $tooltiphelp = '';
724 if ($mysoc->country_code == 'FR') {
725  $tooltiphelp = "<i>".$langs->trans("Example").': '.$langs->trans("VATIsNotUsedExampleFR")."</i>\n";
726 }
727 print '<label for="no_vat">'.$form->textwithpicto($langs->trans("VATIsNotUsedDesc"), $tooltiphelp)."</label>";
728 print "</td></tr>\n";
729 
730 print "</table>";
731 
732 // Second tax
733 print '<br>';
734 print '<table class="noborder centpercent editmode">';
735 print '<tr class="liste_titre">';
736 print '<td class="titlefieldcreate">'.$form->textwithpicto($langs->transcountry("LocalTax1Management", $mysoc->country_code), $langs->transcountry("LocalTax1IsUsedDesc", $mysoc->country_code)).'</td><td>'.$langs->trans("Description").'</td>';
737 print '<td class="right">&nbsp;</td>';
738 print "</tr>\n";
739 
740 if ($mysoc->useLocalTax(1)) {
741  // Note: When option is not set, it must not appears as set on on, because there is no default value for this option
742  print '<tr class="oddeven"><td><input type="radio" name="optionlocaltax1" id="lt1" value="localtax1on"'.(($conf->global->FACTURE_LOCAL_TAX1_OPTION == '1' || $conf->global->FACTURE_LOCAL_TAX1_OPTION == "localtax1on") ? " checked" : "").'> <label for="lt1">'.$langs->transcountry("LocalTax1IsUsed", $mysoc->country_code)."</label></td>";
743  print '<td colspan="2">';
744  print '<div class="nobordernopadding">';
745  $tooltiphelp = $langs->transcountry("LocalTax1IsUsedExample", $mysoc->country_code);
746  $tooltiphelp = ($tooltiphelp != "LocalTax1IsUsedExample" ? "<i>".$langs->trans("Example").': '.$langs->transcountry("LocalTax1IsUsedExample", $mysoc->country_code)."</i>\n" : "");
747  print $form->textwithpicto($langs->transcountry("LocalTax1IsUsedDesc", $mysoc->country_code), $tooltiphelp);
748  if (!isOnlyOneLocalTax(1)) {
749  print '<br><label for="lt1">'.$langs->trans("LTRate").'</label>: ';
750  $formcompany->select_localtax(1, $conf->global->MAIN_INFO_VALUE_LOCALTAX1, "lt1");
751  }
752 
753  $opcions = array($langs->trans("CalcLocaltax1").' '.$langs->trans("CalcLocaltax1Desc"), $langs->trans("CalcLocaltax2").' - '.$langs->trans("CalcLocaltax2Desc"), $langs->trans("CalcLocaltax3").' - '.$langs->trans("CalcLocaltax3Desc"));
754 
755  print '<br><label for="clt1">'.$langs->trans("CalcLocaltax").'</label>: ';
756  print $form->selectarray("clt1", $opcions, $conf->global->MAIN_INFO_LOCALTAX_CALC1);
757  print "</div>";
758  print "</td></tr>\n";
759 
760  print '<tr class="oddeven"><td><input type="radio" name="optionlocaltax1" id="nolt1" value="localtax1off"'.((empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) || $conf->global->FACTURE_LOCAL_TAX1_OPTION == "localtax1off") ? " checked" : "").'> <label for="nolt1">'.$langs->transcountry("LocalTax1IsNotUsed", $mysoc->country_code)."</label></td>";
761  print '<td colspan="2">';
762  $tooltiphelp = $langs->transcountry("LocalTax1IsNotUsedExample", $mysoc->country_code);
763  $tooltiphelp = ($tooltiphelp != "LocalTax1IsNotUsedExample" ? "<i>".$langs->trans("Example").': '.$langs->transcountry("LocalTax1IsNotUsedExample", $mysoc->country_code)."</i>\n" : "");
764  print $form->textwithpicto($langs->transcountry("LocalTax1IsNotUsedDesc", $mysoc->country_code), $tooltiphelp);
765  print "</td></tr>\n";
766 } else {
767  if (empty($mysoc->country_code)) {
768  print '<tr class="oddeven nohover"><td class="">'.$countrynotdefined.'</td><td></td><td></td></tr>';
769  } else {
770  print '<tr class="oddeven nohover"><td class="" colspan="3"><span class="opacitymedium">'.$langs->trans("NoLocalTaxXForThisCountry", $langs->transnoentitiesnoconv("Setup"), $langs->transnoentitiesnoconv("Dictionaries"), $langs->transnoentitiesnoconv("DictionaryVAT"), $langs->transnoentitiesnoconv("LocalTax1Management")).'</span></td></tr>';
771  }
772 }
773 
774 print "</table>";
775 
776 // Third tax system
777 print '<br>';
778 print '<table class="noborder centpercent editmode">';
779 print '<tr class="liste_titre">';
780 print '<td class="titlefieldcreate">'.$form->textwithpicto($langs->transcountry("LocalTax2Management", $mysoc->country_code), $langs->transcountry("LocalTax2IsUsedDesc", $mysoc->country_code)).'</td><td>'.$langs->trans("Description").'</td>';
781 print '<td class="right">&nbsp;</td>';
782 print "</tr>\n";
783 
784 if ($mysoc->useLocalTax(2)) {
785  // Note: When option is not set, it must not appears as set on on, because there is no default value for this option
786  print '<tr class="oddeven"><td><input type="radio" name="optionlocaltax2" id="lt2" value="localtax2on"'.(($conf->global->FACTURE_LOCAL_TAX2_OPTION == '1' || $conf->global->FACTURE_LOCAL_TAX2_OPTION == "localtax2on") ? " checked" : "").'> <label for="lt2">'.$langs->transcountry("LocalTax2IsUsed", $mysoc->country_code)."</label></td>";
787  print '<td colspan="2">';
788  print '<div class="nobordernopadding">';
789  print '<label for="lt2">'.$langs->transcountry("LocalTax2IsUsedDesc", $mysoc->country_code)."</label>";
790  $tooltiphelp = $langs->transcountry("LocalTax2IsUsedExample", $mysoc->country_code);
791  $tooltiphelp = ($tooltiphelp != "LocalTax2IsUsedExample" ? "<i>".$langs->trans("Example").': '.$langs->transcountry("LocalTax2IsUsedExample", $mysoc->country_code)."</i>\n" : "");
792  if (!isOnlyOneLocalTax(2)) {
793  print '<br><label for="lt2">'.$langs->trans("LTRate").'</label>: ';
794  $formcompany->select_localtax(2, $conf->global->MAIN_INFO_VALUE_LOCALTAX2, "lt2");
795  }
796  print '<br><label for="clt2">'.$langs->trans("CalcLocaltax").'</label>: ';
797  print $form->selectarray("clt2", $opcions, $conf->global->MAIN_INFO_LOCALTAX_CALC2);
798  print "</div>";
799  print "</td></tr>\n";
800 
801  print '<tr class="oddeven"><td><input type="radio" name="optionlocaltax2" id="nolt2" value="localtax2off"'.((empty($conf->global->FACTURE_LOCAL_TAX2_OPTION) || $conf->global->FACTURE_LOCAL_TAX2_OPTION == "localtax2off") ? " checked" : "").'> <label for="nolt2">'.$langs->transcountry("LocalTax2IsNotUsed", $mysoc->country_code)."</label></td>";
802  print '<td colspan="2">';
803  print "<div>";
804  $tooltiphelp = $langs->transcountry("LocalTax2IsNotUsedExample", $mysoc->country_code);
805  $tooltiphelp = ($tooltiphelp != "LocalTax2IsNotUsedExample" ? "<i>".$langs->trans("Example").': '.$langs->transcountry("LocalTax2IsNotUsedExample", $mysoc->country_code)."</i>\n" : "");
806  print "<label for=\"nolt2\">".$form->textwithpicto($langs->transcountry("LocalTax2IsNotUsedDesc", $mysoc->country_code), $tooltiphelp)."</label>";
807  print "</div>";
808  print "</td></tr>\n";
809 } else {
810  if (empty($mysoc->country_code)) {
811  print '<tr class="oddeven nohover"><td class="">'.$countrynotdefined.'</td><td></td><td></td></tr>';
812  } else {
813  print '<tr class="oddeven nohover"><td class="" colspan="3"><span class="opacitymedium">'.$langs->trans("NoLocalTaxXForThisCountry", $langs->transnoentitiesnoconv("Setup"), $langs->transnoentitiesnoconv("Dictionaries"), $langs->transnoentitiesnoconv("DictionaryVAT"), $langs->transnoentitiesnoconv("LocalTax2Management")).'</span></td></tr>';
814  }
815 }
816 
817 print "</table>";
818 
819 
820 // Tax stamp
821 print '<br>';
822 print '<table class="noborder centpercent editmode">';
823 print '<tr class="liste_titre">';
824 print '<td>'.$form->textwithpicto($langs->trans("RevenueStamp"), $langs->trans("RevenueStampDesc")).'</td><td>'.$langs->trans("Description").'</td>';
825 print '<td class="right">&nbsp;</td>';
826 print "</tr>\n";
827 if ($mysoc->useRevenueStamp()) {
828  // Note: When option is not set, it must not appears as set on on, because there is no default value for this option
829  print '<tr class="oddeven"><td>';
830  print $langs->trans("UseRevenueStamp");
831  print "</td>";
832  print '<td colspan="2">';
833  print $langs->trans("UseRevenueStampExample", $langs->transnoentitiesnoconv("Setup"), $langs->transnoentitiesnoconv("Dictionaries"), $langs->transnoentitiesnoconv("DictionaryRevenueStamp"));
834  print "</td></tr>\n";
835 } else {
836  if (empty($mysoc->country_code)) {
837  print '<tr class="oddeven nohover"><td class="">'.$countrynotdefined.'</td><td></td><td></td></tr>';
838  } else {
839  print '<tr class="oddeven nohover"><td class="" colspan="3"><span class="opacitymedium">'.$langs->trans("NoLocalTaxXForThisCountry", $langs->transnoentitiesnoconv("Setup"), $langs->transnoentitiesnoconv("Dictionaries"), $langs->transnoentitiesnoconv("DictionaryRevenueStamp"), $langs->transnoentitiesnoconv("RevenueStamp")).'</span></td></tr>';
840  }
841 }
842 
843 print "</table>";
844 
845 print $form->buttonsSaveCancel("Save", '');
846 
847 print '</form>';
848 
849 
850 // End of page
851 llxFooter();
852 $db->close();
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:632
dolibarr_del_const($db, $name, $entity=1)
Delete a constant.
Definition: admin.lib.php:556
activateModulesRequiredByCountry($country_code)
Activate external modules mandatory when country is country_code.
Definition: admin.lib.php:1466
company_admin_prepare_head()
Return array head with list of tabs to view object informations.
Definition: admin.lib.php:1977
if($actionsave) if(!isset($conf->global->MAIN_AGENDA_EXPORT_PAST_DELAY)) $wikihelp
View.
Definition: agenda_xcal.php:73
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
Definition: wrapper.php:56
llxFooter()
Empty footer.
Definition: wrapper.php:70
Class to build HTML component for third parties management Only common components are here.
Class to manage generation of HTML components Only common components must be here.
Classe permettant la generation de composants html autre Only common components are here.
getCountry($searchkey, $withcode='', $dbtouse=0, $outputlangs='', $entconv=1, $searchlabel='')
Return country label, code or id from an id, code or label.
getState($id, $withcode='', $dbtouse=0, $withregion=0, $outputlangs='', $entconv=1)
Return state translated from an id.
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
Definition: card.php:143
dol_delete_file($file, $disableglob=0, $nophperrors=0, $nohook=0, $object=null, $allowdotdot=false, $indexdatabase=1, $nolog=0)
Remove a file or several files with a mask.
Definition: files.lib.php:1250
dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disablevirusscan=0, $uploaderrorcode=0, $nohook=0, $varfiles='addedfile', $upload_dir='')
Make control on an uploaded file from an GUI page and move it to final destination.
Definition: files.lib.php:1111
isOnlyOneLocalTax($local)
Return true if LocalTax (1 or 2) is unique.
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='')
Show tabs of a record.
img_delete($titlealt='default', $other='class="pictodelete"', $morecss='')
Show delete logo.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='')
Set event messages in dol_events session object.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
newToken()
Return the value of token currently saved into session with name 'newtoken'.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
info_admin($text, $infoonimgalt=0, $nodiv=0, $admin='1', $morecss='hideonsmartphone', $textfordropdown='')
Show information for admin users or standard users.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
isModEnabled($module)
Is Dolibarr module enabled.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
dol_mkdir($dir, $dataroot='', $newmask='')
Creation of a directory (this can create recursive subdir)
vignette($file, $maxWidth=160, $maxHeight=120, $extName='_small', $quality=50, $outdir='thumbs', $targetformat=0)
Create a thumbnail from an image file (Supported extensions are gif, jpg, png and bmp).
Definition: images.lib.php:485
image_format_supported($file, $acceptsvg=0)
Return if a filename is file name of a supported image format.
Definition: images.lib.php:58
getMaxFileSizeArray()
Return the max allowed for file upload.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.