dolibarr  19.0.0-dev
pdf.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3  * Copyright (C) 2004-2022 Laurent Destailleur <eldy@users.sourceforge.net>
4  * Copyright (C) 2005-2011 Regis Houssin <regis.houssin@inodbox.com>
5  * Copyright (C) 2012-2107 Juanjo Menent <jmenent@2byte.es>
6  * Copyright (C) 2019 Ferran Marcet <fmarcet@2byte.es>
7  * Copyright (C) 2021-2022 Anthony Berton <bertonanthony@gmail.com>
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 3 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program. If not, see <https://www.gnu.org/licenses/>.
21  */
22 
28 // Load Dolibarr environment
29 require '../main.inc.php';
30 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
31 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php';
32 require_once DOL_DOCUMENT_ROOT.'/core/lib/usergroups.lib.php';
33 require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
34 require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
35 require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php';
36 
37 // Load translation files required by the page
38 $langs->loadLangs(array('admin', 'companies', 'languages', 'members', 'other', 'products', 'stocks', 'trips'));
39 
40 if (!$user->admin) {
42 }
43 
44 $action = GETPOST('action', 'aZ09');
45 $cancel = GETPOST('cancel', 'alpha');
46 
47 
48 /*
49  * Actions
50  */
51 
52 if ($cancel) {
53  $action = '';
54 }
55 
56 if ($action == 'update') {
57  if (GETPOSTISSET('MAIN_PDF_FORMAT')) {
58  dolibarr_set_const($db, "MAIN_PDF_FORMAT", GETPOST("MAIN_PDF_FORMAT"), 'chaine', 0, '', $conf->entity);
59  }
60 
61  if (GETPOSTISSET('MAIN_PDF_MARGIN_LEFT')) {
62  dolibarr_set_const($db, "MAIN_PDF_MARGIN_LEFT", GETPOST("MAIN_PDF_MARGIN_LEFT"), 'chaine', 0, '', $conf->entity);
63  }
64  if (GETPOSTISSET('MAIN_PDF_MARGIN_RIGHT')) {
65  dolibarr_set_const($db, "MAIN_PDF_MARGIN_RIGHT", GETPOST("MAIN_PDF_MARGIN_RIGHT"), 'chaine', 0, '', $conf->entity);
66  }
67  if (GETPOSTISSET('MAIN_PDF_MARGIN_TOP')) {
68  dolibarr_set_const($db, "MAIN_PDF_MARGIN_TOP", GETPOST("MAIN_PDF_MARGIN_TOP"), 'chaine', 0, '', $conf->entity);
69  }
70  if (GETPOSTISSET('MAIN_PDF_MARGIN_BOTTOM')) {
71  dolibarr_set_const($db, "MAIN_PDF_MARGIN_BOTTOM", GETPOST("MAIN_PDF_MARGIN_BOTTOM"), 'chaine', 0, '', $conf->entity);
72  }
73 
74  if (GETPOSTISSET('MAIN_PROFID1_IN_ADDRESS')) {
75  dolibarr_set_const($db, "MAIN_PROFID1_IN_ADDRESS", GETPOST("MAIN_PROFID1_IN_ADDRESS"), 'chaine', 0, '', $conf->entity);
76  }
77  if (GETPOSTISSET('MAIN_PROFID2_IN_ADDRESS')) {
78  dolibarr_set_const($db, "MAIN_PROFID2_IN_ADDRESS", GETPOST("MAIN_PROFID2_IN_ADDRESS"), 'chaine', 0, '', $conf->entity);
79  }
80  if (GETPOSTISSET('MAIN_PROFID3_IN_ADDRESS')) {
81  dolibarr_set_const($db, "MAIN_PROFID3_IN_ADDRESS", GETPOST("MAIN_PROFID3_IN_ADDRESS"), 'chaine', 0, '', $conf->entity);
82  }
83  if (GETPOSTISSET('MAIN_PROFID4_IN_ADDRESS')) {
84  dolibarr_set_const($db, "MAIN_PROFID4_IN_ADDRESS", GETPOST("MAIN_PROFID4_IN_ADDRESS"), 'chaine', 0, '', $conf->entity);
85  }
86  if (GETPOSTISSET('MAIN_PROFID5_IN_ADDRESS')) {
87  dolibarr_set_const($db, "MAIN_PROFID5_IN_ADDRESS", GETPOST("MAIN_PROFID5_IN_ADDRESS"), 'chaine', 0, '', $conf->entity);
88  }
89  if (GETPOSTISSET('MAIN_PROFID6_IN_ADDRESS')) {
90  dolibarr_set_const($db, "MAIN_PROFID6_IN_ADDRESS", GETPOST("MAIN_PROFID6_IN_ADDRESS"), 'chaine', 0, '', $conf->entity);
91  }
92 
93  if (GETPOSTISSET('MAIN_PDF_NO_SENDER_FRAME')) {
94  dolibarr_set_const($db, "MAIN_PDF_NO_SENDER_FRAME", GETPOST("MAIN_PDF_NO_SENDER_FRAME"), 'chaine', 0, '', $conf->entity);
95  }
96  if (GETPOSTISSET('MAIN_PDF_NO_RECIPENT_FRAME')) {
97  dolibarr_set_const($db, "MAIN_PDF_NO_RECIPENT_FRAME", GETPOST("MAIN_PDF_NO_RECIPENT_FRAME"), 'chaine', 0, '', $conf->entity);
98  }
99 
100  /*if (GETPOSTISSET('MAIN_PDF_HIDE_SENDER_NAME')) {
101  dolibarr_set_const($db, "MAIN_PDF_HIDE_SENDER_NAME", GETPOST("MAIN_PDF_HIDE_SENDER_NAME"), 'chaine', 0, '', $conf->entity);
102  }*/
103 
104  if (GETPOSTISSET('MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT')) {
105  dolibarr_set_const($db, "MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT", GETPOST("MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT"), 'chaine', 0, '', $conf->entity);
106  }
107 
108  if (GETPOSTISSET('MAIN_TVAINTRA_NOT_IN_ADDRESS')) {
109  dolibarr_set_const($db, "MAIN_TVAINTRA_NOT_IN_ADDRESS", GETPOST("MAIN_TVAINTRA_NOT_IN_ADDRESS"), 'chaine', 0, '', $conf->entity);
110  }
111 
112  if (isModEnabled('project')) {
113  if (GETPOST('PDF_SHOW_PROJECT_REF_OR_LABEL') == 'no') {
114  dolibarr_del_const($db, "PDF_SHOW_PROJECT", $conf->entity);
115  dolibarr_del_const($db, "PDF_SHOW_PROJECT_TITLE", $conf->entity);
116  } elseif (GETPOST('PDF_SHOW_PROJECT_REF_OR_LABEL') == 'showprojectref') {
117  dolibarr_set_const($db, "PDF_SHOW_PROJECT", GETPOST("PDF_SHOW_PROJECT_REF_OR_LABEL"), 'chaine', 0, '', $conf->entity);
118  dolibarr_del_const($db, "PDF_SHOW_PROJECT_TITLE", $conf->entity);
119  } elseif (GETPOST('PDF_SHOW_PROJECT_REF_OR_LABEL') == 'showprojectlabel') {
120  dolibarr_del_const($db, "PDF_SHOW_PROJECT", $conf->entity);
121  dolibarr_set_const($db, "PDF_SHOW_PROJECT_TITLE", GETPOST("PDF_SHOW_PROJECT_REF_OR_LABEL"), 'chaine', 0, '', $conf->entity);
122  }
123  }
124 
125  if (GETPOSTISSET('MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS')) {
126  dolibarr_set_const($db, "MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS", GETPOST("MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS"), 'chaine', 0, '', $conf->entity);
127  }
128  if (GETPOSTISSET('MAIN_GENERATE_DOCUMENTS_HIDE_DESC')) {
129  dolibarr_set_const($db, "MAIN_GENERATE_DOCUMENTS_HIDE_DESC", GETPOST("MAIN_GENERATE_DOCUMENTS_HIDE_DESC"), 'chaine', 0, '', $conf->entity);
130  }
131  if (GETPOSTISSET('MAIN_GENERATE_DOCUMENTS_HIDE_REF')) {
132  dolibarr_set_const($db, "MAIN_GENERATE_DOCUMENTS_HIDE_REF", GETPOST("MAIN_GENERATE_DOCUMENTS_HIDE_REF"), 'chaine', 0, '', $conf->entity);
133  }
134 
135  if (GETPOSTISSET('MAIN_DOCUMENTS_LOGO_HEIGHT')) {
136  dolibarr_set_const($db, "MAIN_DOCUMENTS_LOGO_HEIGHT", GETPOST("MAIN_DOCUMENTS_LOGO_HEIGHT", 'int'), 'chaine', 0, '', $conf->entity);
137  }
138  if (GETPOSTISSET('MAIN_INVERT_SENDER_RECIPIENT')) {
139  dolibarr_set_const($db, "MAIN_INVERT_SENDER_RECIPIENT", GETPOST("MAIN_INVERT_SENDER_RECIPIENT"), 'chaine', 0, '', $conf->entity);
140  }
141  if (GETPOSTISSET('MAIN_PDF_USE_ISO_LOCATION')) {
142  dolibarr_set_const($db, "MAIN_PDF_USE_ISO_LOCATION", GETPOST("MAIN_PDF_USE_ISO_LOCATION"), 'chaine', 0, '', $conf->entity);
143  }
144  if (GETPOSTISSET('MAIN_PDF_NO_CUSTOMER_CODE')) {
145  dolibarr_set_const($db, "MAIN_PDF_NO_CUSTOMER_CODE", GETPOST("MAIN_PDF_NO_CUSTOMER_CODE"), 'chaine', 0, '', $conf->entity);
146  }
147 
148  if (GETPOSTISSET('MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS')) {
149  dolibarr_set_const($db, "MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS", GETPOST("MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS"), 'chaine', 0, '', $conf->entity);
150  }
151 
152  if (GETPOSTISSET('MAIN_PDF_MAIN_HIDE_SECOND_TAX')) {
153  dolibarr_set_const($db, "MAIN_PDF_MAIN_HIDE_SECOND_TAX", GETPOST("MAIN_PDF_MAIN_HIDE_SECOND_TAX"), 'chaine', 0, '', $conf->entity);
154  }
155  if (GETPOSTISSET('MAIN_PDF_MAIN_HIDE_THIRD_TAX')) {
156  dolibarr_set_const($db, "MAIN_PDF_MAIN_HIDE_THIRD_TAX", GETPOST("MAIN_PDF_MAIN_HIDE_THIRD_TAX"), 'chaine', 0, '', $conf->entity);
157  }
158 
159  if (GETPOSTISSET('PDF_USE_ALSO_LANGUAGE_CODE')) {
160  dolibarr_set_const($db, "PDF_USE_ALSO_LANGUAGE_CODE", GETPOST('PDF_USE_ALSO_LANGUAGE_CODE', 'alpha'), 'chaine', 0, '', $conf->entity);
161  }
162  if (GETPOSTISSET('SHOW_SUBPRODUCT_REF_IN_PDF')) {
163  dolibarr_set_const($db, "SHOW_SUBPRODUCT_REF_IN_PDF", GETPOST('SHOW_SUBPRODUCT_REF_IN_PDF', 'alpha'), 'chaine', 0, '', $conf->entity);
164  }
165 
166  if (GETPOSTISSET('PDF_SHOW_LINK_TO_ONLINE_PAYMENT')) {
167  dolibarr_set_const($db, "PDF_SHOW_LINK_TO_ONLINE_PAYMENT", GETPOST('PDF_SHOW_LINK_TO_ONLINE_PAYMENT', 'alpha'), 'chaine', 0, '', $conf->entity);
168  }
169 
170  if (GETPOSTISSET('DOC_SHOW_FIRST_SALES_REP')) {
171  dolibarr_set_const($db, "DOC_SHOW_FIRST_SALES_REP", GETPOST('DOC_SHOW_FIRST_SALES_REP', 'alpha'), 'chaine', 0, '', $conf->entity);
172  }
173 
174  if (GETPOSTISSET('PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME')) {
175  dolibarr_set_const($db, "PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME", GETPOST('PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME', 'alpha'), 'chaine', 0, '', $conf->entity);
176  }
177  if (GETPOSTISSET('PDF_USE_A')) {
178  dolibarr_set_const($db, "PDF_USE_A", GETPOST('PDF_USE_A', 'alpha'), 'chaine', 0, '', $conf->entity);
179  }
180 
181  if (GETPOSTISSET('PDF_BOLD_PRODUCT_LABEL')) {
182  dolibarr_set_const($db, "PDF_BOLD_PRODUCT_LABEL", GETPOST('PDF_BOLD_PRODUCT_LABEL', 'alpha'), 'chaine', 0, '', $conf->entity);
183  }
184  if (GETPOSTISSET('PDF_BOLD_PRODUCT_REF_AND_PERIOD')) {
185  dolibarr_set_const($db, "PDF_BOLD_PRODUCT_REF_AND_PERIOD", GETPOST('PDF_BOLD_PRODUCT_REF_AND_PERIOD', 'alpha'), 'chaine', 0, '', $conf->entity);
186  }
187 
188  setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
189 
190  header("Location: ".$_SERVER["PHP_SELF"]."?mainmenu=home&leftmenu=setup");
191  exit;
192 }
193 
194 
195 
196 /*
197  * View
198  */
199 
200 $wikihelp = 'EN:First_setup|FR:Premiers_param&eacute;trages|ES:Primeras_configuraciones';
201 llxHeader('', $langs->trans("Setup"), $wikihelp);
202 
203 $form = new Form($db);
204 $formother = new FormOther($db);
205 $formadmin = new FormAdmin($db);
206 
207 $arraydetailsforpdffoot = array(
208  0 => $langs->transnoentitiesnoconv('NoDetails'),
209  1 => $langs->transnoentitiesnoconv('DisplayCompanyInfo'),
210  2 => $langs->transnoentitiesnoconv('DisplayCompanyManagers'),
211  3 => $langs->transnoentitiesnoconv('DisplayCompanyInfoAndManagers')
212 );
213 
214 $arraylistofpdfformat = array(
215  0 => $langs->transnoentitiesnoconv('PDF 1.7'),
216  1 => $langs->transnoentitiesnoconv('PDF/A-1b'),
217  3 => $langs->transnoentitiesnoconv('PDF/A-3b'),
218 );
219 
220 $s = $langs->trans("LibraryToBuildPDF")."<br>";
221 $i = 0;
222 $pdf = pdf_getInstance('A4');
223 if (class_exists('FPDF') && !class_exists('TCPDF')) {
224  if ($i) {
225  $s .= ' + ';
226  }
227  $s .= 'FPDF';
228  $s .= ' ('.@constant('FPDF_PATH').')';
229  $i++;
230 }
231 if (class_exists('TCPDF')) {
232  if ($i) {
233  $s .= ' + ';
234  }
235  $s .= 'TCPDF';
236  $s .= ' ('.@constant('TCPDF_PATH').')';
237  $i++;
238 }
239 if (class_exists('FPDI')) {
240  if ($i) {
241  $s .= ' + ';
242  }
243  $s .= 'FPDI';
244  $s .= ' ('.@constant('FPDI_PATH').')';
245  $i++;
246 }
247 if (class_exists('TCPDI')) {
248  if ($i) {
249  $s .= ' + ';
250  }
251  $s .= 'TCPDI';
252  $s .= ' ('.@constant('TCPDI_PATH').')';
253  $i++;
254 }
255 
256 print load_fiche_titre($langs->trans("PDF"), '', 'title_setup');
257 
258 $head = pdf_admin_prepare_head();
259 
260 print dol_get_fiche_head($head, 'general', '', -1, '');
261 
262 print '<span class="opacitymedium">'.$form->textwithpicto($langs->trans("PDFDesc"), $s)."</span><br>\n";
263 print "<br>\n";
264 
265 $noCountryCode = (empty($mysoc->country_code) ? true : false);
266 
267 print '<form method="post" action="'.$_SERVER["PHP_SELF"].'">';
268 print '<input type="hidden" name="token" value="'.newToken().'">';
269 print '<input type="hidden" name="action" value="update">';
270 
271 clearstatcache();
272 
273 
274 if (getDolGlobalString('PDF_SECURITY_ENCRYPTION')) {
275  print '<div class="warning">';
276  print 'The not supported and hidden option PDF_SECURITY_ENCRYPTION has been enabled. This means a lof of feature related to PDF will be broken, like mass PDF generation or online signature of PDF.'."\n";
277  print 'You should disable this option.';
278  print '</div>';
279 }
280 
281 
282 
283 // Misc options
284 print load_fiche_titre($langs->trans("DictionaryPaperFormat"), '', '');
285 
286 
287 print '<div class="div-table-responsive-no-min">';
288 print '<table summary="more" class="noborder centpercent">';
289 print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("Parameters").'</td><td width="200px">'.$langs->trans("Value").'</td></tr>';
290 
291 $selected = (isset($conf->global->MAIN_PDF_FORMAT) ? $conf->global->MAIN_PDF_FORMAT : '');
292 if (empty($selected)) {
293  $selected = dol_getDefaultFormat();
294 }
295 
296 // Show pdf format
297 
298 print '<tr class="oddeven"><td>'.$langs->trans("DictionaryPaperFormat").'</td><td>';
299 print $formadmin->select_paper_format($selected, 'MAIN_PDF_FORMAT');
300 print '</td></tr>';
301 
302 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_MARGIN_LEFT").'</td><td>';
303 print '<input type="text" class="maxwidth50" name="MAIN_PDF_MARGIN_LEFT" value="'.getDolGlobalInt('MAIN_PDF_MARGIN_LEFT', 10).'">';
304 print '</td></tr>';
305 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_MARGIN_RIGHT").'</td><td>';
306 print '<input type="text" class="maxwidth50" name="MAIN_PDF_MARGIN_RIGHT" value="'.getDolGlobalInt('MAIN_PDF_MARGIN_RIGHT', 10).'">';
307 print '</td></tr>';
308 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_MARGIN_TOP").'</td><td>';
309 print '<input type="text" class="maxwidth50" name="MAIN_PDF_MARGIN_TOP" value="'.getDolGlobalInt('MAIN_PDF_MARGIN_TOP', 10).'">';
310 print '</td></tr>';
311 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_MARGIN_BOTTOM").'</td><td>';
312 print '<input type="text" class="maxwidth50" name="MAIN_PDF_MARGIN_BOTTOM" value="'.getDolGlobalInt('MAIN_PDF_MARGIN_BOTTOM', 10).'">';
313 print '</td></tr>';
314 
315 print '</table>';
316 print '</div>';
317 
318 print '<br>';
319 
320 
321 // Addresses
322 print load_fiche_titre($langs->trans("PDFAddressForging"), '', '');
323 
324 print '<div class="div-table-responsive-no-min">';
325 print '<table summary="more" class="noborder centpercent">';
326 print '<tr class="liste_titre"><td class="">'.$langs->trans("Parameter").'</td><td></td></tr>';
327 
328 // Show sender name
329 
330 /* Set option as hidden because no need of this for 99.99% of users. Having it as hidden feature is enough.
331 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_HIDE_SENDER_NAME").'</td><td>';
332 if ($conf->use_javascript_ajax) {
333  print ajax_constantonoff('MAIN_PDF_HIDE_SENDER_NAME');
334 } else {
335  print $form->selectyesno('MAIN_PDF_HIDE_SENDER_NAME', (!empty($conf->global->MAIN_PDF_HIDE_SENDER_NAME)) ? $conf->global->MAIN_PDF_HIDE_SENDER_NAME : 0, 1);
336 }
337 print '</td></tr>';
338 */
339 
340 // Hide VAT Intra on address
341 
342 print '<tr class="oddeven"><td>'.$langs->trans("ShowVATIntaInAddress").' - <span class="opacitymedium">'.$langs->trans("ThirdPartyAddress").'</span></td><td>';
343 if ($conf->use_javascript_ajax) {
344  print ajax_constantonoff('MAIN_TVAINTRA_NOT_IN_ADDRESS');
345 } else {
346  print $form->selectyesno('MAIN_TVAINTRA_NOT_IN_ADDRESS', (!empty($conf->global->MAIN_TVAINTRA_NOT_IN_ADDRESS)) ? $conf->global->MAIN_TVAINTRA_NOT_IN_ADDRESS : 0, 1);
347 }
348 print '</td></tr>';
349 
350 // Show prof id in address into pdf
351 for ($i = 1; $i <= 6; $i++) {
352  if (!$noCountryCode) {
353  $pid = $langs->transcountry("ProfId".$i, $mysoc->country_code);
354  if ($pid == '-') {
355  $pid = false;
356  }
357  } else {
358  $pid = img_warning().' <span class="error">'.$langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CompanyCountry")).'</span>';
359  }
360  if ($pid) {
361  print '<tr class="oddeven"><td>'.$langs->trans("ShowProfIdInAddress").' - '.$pid.' - <span class="opacitymedium">'.$langs->trans("ThirdPartyAddress").'</span></td><td>';
362  $keyforconstant = 'MAIN_PROFID'.$i.'_IN_ADDRESS';
363  if ($conf->use_javascript_ajax) {
364  print ajax_constantonoff($keyforconstant);
365  } else {
366  print $form->selectyesno($keyforconstant, isset($conf->global->$keyforconstant) ? $conf->global->$keyforconstant : 0, 1, $noCountryCode);
367  }
368  print '</td></tr>';
369  }
370 }
371 
372 // Borders on address frame
373 
374 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_NO_SENDER_FRAME").'</td><td>';
375 if ($conf->use_javascript_ajax) {
376  print ajax_constantonoff('MAIN_PDF_NO_SENDER_FRAME');
377 } else {
378  $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
379  print $form->selectarray("MAIN_PDF_NO_SENDER_FRAME", $arrval, $conf->global->MAIN_PDF_NO_SENDER_FRAME);
380 }
381 print '</td></tr>';
382 
383 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_NO_RECIPENT_FRAME").'</td><td>';
384 if ($conf->use_javascript_ajax) {
385  print ajax_constantonoff('MAIN_PDF_NO_RECIPENT_FRAME');
386 } else {
387  $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
388  print $form->selectarray("MAIN_PDF_NO_RECIPENT_FRAME", $arrval, $conf->global->MAIN_PDF_NO_RECIPENT_FRAME);
389 }
390 print '</td></tr>';
391 
392 //Invert sender and recipient
393 
394 print '<tr class="oddeven"><td>'.$langs->trans("SwapSenderAndRecipientOnPDF").'</td><td>';
395 if ($conf->use_javascript_ajax) {
396  print ajax_constantonoff('MAIN_INVERT_SENDER_RECIPIENT');
397 } else {
398  print $form->selectyesno('MAIN_INVERT_SENDER_RECIPIENT', (!empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) ? $conf->global->MAIN_INVERT_SENDER_RECIPIENT : 0, 1);
399 }
400 print '</td></tr>';
401 
402 // Place customer adress to the ISO location
403 
404 print '<tr class="oddeven"><td>'.$langs->trans("PlaceCustomerAddressToIsoLocation").'</td><td>';
405 if ($conf->use_javascript_ajax) {
406  print ajax_constantonoff('MAIN_PDF_USE_ISO_LOCATION');
407 } else {
408  print $form->selectyesno('MAIN_PDF_USE_ISO_LOCATION', (!empty($conf->global->MAIN_PDF_USE_ISO_LOCATION)) ? $conf->global->MAIN_PDF_USE_ISO_LOCATION : 0, 1);
409 }
410 print '</td></tr>';
411 
412 // Show alias in thirdparty name
413 print '<tr class="oddeven"><td>'.$langs->trans("PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME").'</td><td>';
414 if ($conf->use_javascript_ajax) {
415  $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("THIRDPARTY_ALIAS"), '2' => $langs->trans("ALIAS_THIRDPARTY"));
416  print $form->selectarray("PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME", $arrval, getDolGlobalInt('PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME'));
417 }
418 
419 print '</table>';
420 print '</div>';
421 
422 
423 print '<br>';
424 
425 
426 // Localtaxes
427 $locales = '';
428 $text = '';
429 if ($mysoc->useLocalTax(1) || $mysoc->useLocalTax(2)) {
430  if ($mysoc->useLocalTax(1)) {
431  $locales = $langs->transcountry("LT1", $mysoc->country_code);
432  $text = '<tr class="oddeven"><td class="titlefieldmiddle">'.$langs->trans("HideLocalTaxOnPDF", $langs->transcountry("LT1", $mysoc->country_code)).'</td><td>';
433  if ($conf->use_javascript_ajax) {
434  $text .= ajax_constantonoff('MAIN_PDF_MAIN_HIDE_SECOND_TAX');
435  } else {
436  $text .= $form->selectyesno('MAIN_PDF_MAIN_HIDE_SECOND_TAX', (!empty($conf->global->MAIN_PDF_MAIN_HIDE_SECOND_TAX)) ? $conf->global->MAIN_PDF_MAIN_HIDE_SECOND_TAX : 0, 1);
437  }
438  $text .= '</td></tr>';
439  }
440 
441  if ($mysoc->useLocalTax(2)) {
442  $locales .= ($locales ? ' & ' : '').$langs->transcountry("LT2", $mysoc->country_code);
443 
444  $text .= '<tr class="oddeven"><td class="titlefieldmiddle">'.$langs->trans("HideLocalTaxOnPDF", $langs->transcountry("LT2", $mysoc->country_code)).'</td><td>';
445  if ($conf->use_javascript_ajax) {
446  $text .= ajax_constantonoff('MAIN_PDF_MAIN_HIDE_THIRD_TAX');
447  } else {
448  $text .= $form->selectyesno('MAIN_PDF_MAIN_HIDE_THIRD_TAX', (!empty($conf->global->MAIN_PDF_MAIN_HIDE_THIRD_TAX)) ? $conf->global->MAIN_PDF_MAIN_HIDE_THIRD_TAX : 0, 1);
449  }
450  $text .= '</td></tr>';
451  }
452 }
453 
454 $title = $langs->trans("PDFRulesForSalesTax");
455 if ($mysoc->useLocalTax(1) || $mysoc->useLocalTax(2)) {
456  $title .= ' - '.$langs->trans("PDFLocaltax", $locales);
457 }
458 
459 
460 print load_fiche_titre($title, '', '');
461 
462 print '<table summary="more" class="noborder centpercent">';
463 print '<tr class="liste_titre"><td>'.$langs->trans("Parameter").'</td><td></td></tr>';
464 
465 // Hide any information on Sale tax / VAT
466 
467 print '<tr class="oddeven"><td>'.$langs->trans("HideAnyVATInformationOnPDF").'</td><td>';
468 if ($conf->use_javascript_ajax) {
469  print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT');
470 } else {
471  print $form->selectyesno('MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT', (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) ? $conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT : 0, 1);
472 }
473 print '</td></tr>';
474 
475 // Locataxes
476 print $text;
477 
478 print '</table>';
479 print '<br>';
480 
481 
482 // Other
483 
484 print load_fiche_titre($langs->trans("Other"), '', '');
485 
486 print '<div class="div-table-responsive-no-min">';
487 print '<table summary="more" class="noborder centpercent">';
488 print '<tr class="liste_titre"><td>'.$langs->trans("Parameter").'</td><td>'.$langs->trans("Value").'</td></tr>';
489 
490 // Use 2 languages into PDF
491 
492 print '<tr class="oddeven"><td>';
493 print $form->textwithpicto($langs->trans("PDFIn2Languages"), $langs->trans("PDF_USE_ALSO_LANGUAGE_CODE"));
494 print '</td><td>';
495 $selected = GETPOSTISSET('PDF_USE_ALSO_LANGUAGE_CODE') ? GETPOST('PDF_USE_ALSO_LANGUAGE_CODE') : (!empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE) ? $conf->global->PDF_USE_ALSO_LANGUAGE_CODE : 0);
496 print $formadmin->select_language($selected, 'PDF_USE_ALSO_LANGUAGE_CODE', 0, null, 1);
497 print '</td></tr>';
498 
499 // Height of logo
500 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_DOCUMENTS_LOGO_HEIGHT").'</td><td>';
501 print '<input type="text" class="maxwidth50" name="MAIN_DOCUMENTS_LOGO_HEIGHT" value="'.(!empty($conf->global->MAIN_DOCUMENTS_LOGO_HEIGHT) ? $conf->global->MAIN_DOCUMENTS_LOGO_HEIGHT : 20).'">';
502 print '</td></tr>';
503 
504 // Show project
505 if (isModEnabled('project')) {
506  print '<tr class="oddeven"><td>'.$langs->trans("PDF_SHOW_PROJECT").'</td><td>';
507  $tmparray = array('no' => 'No', 'showprojectref' => 'RefProject', 'showprojectlabel' => 'ShowProjectLabel');
508  $showprojectref = empty($conf->global->PDF_SHOW_PROJECT) ? (empty($conf->global->PDF_SHOW_PROJECT_TITLE) ? 'no' : 'showprojectlabel') : 'showprojectref';
509  print $form->selectarray('PDF_SHOW_PROJECT_REF_OR_LABEL', $tmparray, $showprojectref, 0, 0, 0, '', 1);
510  print '</td></tr>';
511 }
512 
513 //
514 
515 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_HIDE_CUSTOMER_CODE");
516 print '</td><td>';
517 if ($conf->use_javascript_ajax) {
518  print ajax_constantonoff('MAIN_PDF_HIDE_CUSTOMER_CODE');
519 } else {
520  $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
521  print $form->selectarray("MAIN_PDF_HIDE_CUSTOMER_CODE", $arrval, $conf->global->MAIN_PDF_HIDE_CUSTOMER_CODE);
522 }
523 print '</td></tr>';
524 
525 // Ref
526 
527 print '<tr class="oddeven"><td>'.$langs->trans("HideRefOnPDF").'</td><td>';
528 if ($conf->use_javascript_ajax) {
529  print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_HIDE_REF');
530 } else {
531  print $form->selectyesno('MAIN_GENERATE_DOCUMENTS_HIDE_REF', (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF)) ? $conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF : 0, 1);
532 }
533 print '</td></tr>';
534 
535 // Desc
536 
537 print '<tr class="oddeven"><td>'.$langs->trans("HideDescOnPDF").'</td><td>';
538 if ($conf->use_javascript_ajax) {
539  print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_HIDE_DESC');
540 } else {
541  print $form->selectyesno('MAIN_GENERATE_DOCUMENTS_HIDE_DESC', (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC)) ? $conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC : 0, 1);
542 }
543 print '</td></tr>';
544 
545 // Details
546 
547 print '<tr class="oddeven"><td>'.$langs->trans("HideDetailsOnPDF").'</td><td>';
548 if ($conf->use_javascript_ajax) {
549  print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS');
550 } else {
551  print $form->selectyesno('MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS', (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS)) ? $conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS : 0, 1);
552 }
553 print '</td></tr>';
554 
555 // Swicth in Bold
556 
557 print '<tr class="oddeven"><td>'.$langs->trans("BoldLabelOnPDF").'</td><td>';
558 if ($conf->use_javascript_ajax) {
559  print ajax_constantonoff('PDF_BOLD_PRODUCT_LABEL');
560 } else {
561  print $form->selectyesno('PDF_BOLD_PRODUCT_LABEL', (!empty($conf->global->PDF_BOLD_PRODUCT_LABEL)) ? $conf->global->PDF_BOLD_PRODUCT_LABEL : 0, 1);
562 }
563 print '</td></tr>';
564 
565 // Swicth in Bold
566 
567 print '<tr class="oddeven"><td>'.$langs->trans("BoldRefAndPeriodOnPDF").'</td><td>';
568 if ($conf->use_javascript_ajax) {
569  print ajax_constantonoff('PDF_BOLD_PRODUCT_REF_AND_PERIOD');
570 } else {
571  print $form->selectyesno('PDF_BOLD_PRODUCT_REF_AND_PERIOD', (!empty($conf->global->PDF_BOLD_PRODUCT_REF_AND_PERIOD)) ? $conf->global->PDF_BOLD_PRODUCT_REF_AND_PERIOD : 0, 1);
572 }
573 print '</td></tr>';
574 
575 // SHOW_SUBPRODUCT_REF_IN_PDF - Option to show the detail of product ref for kits.
576 
577 print '<tr class="oddeven"><td>'.$langs->trans("SHOW_SUBPRODUCT_REF_IN_PDF", $langs->transnoentitiesnoconv("AssociatedProductsAbility"), $langs->transnoentitiesnoconv("Products")).'</td><td>';
578 if ($conf->use_javascript_ajax) {
579  print ajax_constantonoff('SHOW_SUBPRODUCT_REF_IN_PDF');
580 } else {
581  print $form->selectyesno('SHOW_SUBPRODUCT_REF_IN_PDF', (!empty($conf->global->SHOW_SUBPRODUCT_REF_IN_PDF)) ? $conf->global->SHOW_SUBPRODUCT_REF_IN_PDF : 0, 1);
582 }
583 print '</td></tr>';
584 
585 // Show more details in footer
586 
587 print '<tr class="oddeven"><td>'.$langs->trans("ShowDetailsInPDFPageFoot").'</td><td>';
588 print $form->selectarray('MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS', $arraydetailsforpdffoot, (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS) ? $conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS : 0));
589 print '</td></tr>';
590 
591 // Show the first sales representative
592 
593 print '<tr class="oddeven"><td>'.$langs->trans("DOC_SHOW_FIRST_SALES_REP");
594 print ' <span class="opacitymedium">('.$langs->trans("SalesRepresentativeInfo").')</span>';
595 print '</td><td>';
596 if ($conf->use_javascript_ajax) {
597  print ajax_constantonoff('DOC_SHOW_FIRST_SALES_REP');
598 } else {
599  $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
600  print $form->selectarray("DOC_SHOW_FIRST_SALES_REP", $arrval, $conf->global->DOC_SHOW_FIRST_SALES_REP);
601 }
602 
603 // Show online payment link on invoices
604 
605 print '<tr class="oddeven"><td>'.$langs->trans("PDF_SHOW_LINK_TO_ONLINE_PAYMENT").'</td><td>';
606 if ($conf->use_javascript_ajax) {
607  print ajax_constantonoff('PDF_SHOW_LINK_TO_ONLINE_PAYMENT');
608 } else {
609  print $form->selectyesno('PDF_SHOW_LINK_TO_ONLINE_PAYMENT', (!empty($conf->global->PDF_SHOW_LINK_TO_ONLINE_PAYMENT)) ? $conf->global->PDF_SHOW_LINK_TO_ONLINE_PAYMENT : 0, 1);
610 }
611 print '</td></tr>';
612 
613 print '<tr class="oddeven"><td>'.$langs->trans("PDF_USE_A").'</td><td>';
614 print $form->selectarray('PDF_USE_A', $arraylistofpdfformat, (empty($conf->global->PDF_USE_A) ? 0 : $conf->global->PDF_USE_A));
615 print '</td></tr>';
616 
617 print '</table>';
618 print '</div>';
619 
620 print $form->buttonsSaveCancel("Save", '');
621 
622 print '</form>';
623 
624 
625 // End of page
626 llxFooter();
627 $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:638
dolibarr_del_const($db, $name, $entity=1)
Delete a constant.
Definition: admin.lib.php:562
if(GETPOSTISSET('MAIN_AGENDA_XCAL_EXPORTKEY')) if(GETPOSTISSET('MAIN_AGENDA_EXPORT_PAST_DELAY')) if(GETPOSTISSET('MAIN_AGENDA_EXPORT_CACHE')) if(GETPOSTISSET('AGENDA_EXPORT_FIX_TZ')) if($actionsave) if(!isset($conf->global->MAIN_AGENDA_EXPORT_PAST_DELAY)) $wikihelp
View.
Definition: agenda_xcal.php:90
ajax_constantonoff($code, $input=array(), $entity=null, $revertonoff=0, $strict=0, $forcereload=0, $marginleftonlyshort=2, $forcenoajax=0, $setzeroinsteadofdel=0, $suffix='', $mode='', $morecss='inline-block')
On/off button for constant.
Definition: ajax.lib.php:630
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 generate html code for admin pages.
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.
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
Definition: card.php:143
dol_getDefaultFormat(Translate $outputlangs=null)
Try to guess default paper format according to language into $langs.
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
img_warning($titlealt='default', $moreatt='', $morecss='pictowarning')
Show warning logo.
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.
getDolGlobalInt($key, $default=0)
Return dolibarr global constant int value.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
pdf_admin_prepare_head()
Return array head with list of tabs to view object informations.
Definition: pdf.lib.php:47
pdf_getInstance($format='', $metric='mm', $pagetype='P')
Return a PDF instance object.
Definition: pdf.lib.php:127
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.