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