pdf.php 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643
  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. /**
  23. * \file htdocs/admin/pdf.php
  24. * \brief Page to setup PDF options
  25. */
  26. // Load Dolibarr environment
  27. require '../main.inc.php';
  28. require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
  29. require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php';
  30. require_once DOL_DOCUMENT_ROOT.'/core/lib/usergroups.lib.php';
  31. require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
  32. require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
  33. require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php';
  34. // Load translation files required by the page
  35. $langs->loadLangs(array('admin', 'companies', 'languages', 'members', 'other', 'products', 'stocks', 'trips'));
  36. if (!$user->admin) {
  37. accessforbidden();
  38. }
  39. $action = GETPOST('action', 'aZ09');
  40. $cancel = GETPOST('cancel', 'alpha');
  41. /*
  42. * Actions
  43. */
  44. if ($cancel) {
  45. $action = '';
  46. }
  47. if ($action == 'update') {
  48. if (GETPOSTISSET('MAIN_PDF_FORMAT')) {
  49. dolibarr_set_const($db, "MAIN_PDF_FORMAT", GETPOST("MAIN_PDF_FORMAT"), 'chaine', 0, '', $conf->entity);
  50. }
  51. if (GETPOSTISSET('MAIN_PDF_MARGIN_LEFT')) {
  52. dolibarr_set_const($db, "MAIN_PDF_MARGIN_LEFT", GETPOST("MAIN_PDF_MARGIN_LEFT"), 'chaine', 0, '', $conf->entity);
  53. }
  54. if (GETPOSTISSET('MAIN_PDF_MARGIN_RIGHT')) {
  55. dolibarr_set_const($db, "MAIN_PDF_MARGIN_RIGHT", GETPOST("MAIN_PDF_MARGIN_RIGHT"), 'chaine', 0, '', $conf->entity);
  56. }
  57. if (GETPOSTISSET('MAIN_PDF_MARGIN_TOP')) {
  58. dolibarr_set_const($db, "MAIN_PDF_MARGIN_TOP", GETPOST("MAIN_PDF_MARGIN_TOP"), 'chaine', 0, '', $conf->entity);
  59. }
  60. if (GETPOSTISSET('MAIN_PDF_MARGIN_BOTTOM')) {
  61. dolibarr_set_const($db, "MAIN_PDF_MARGIN_BOTTOM", GETPOST("MAIN_PDF_MARGIN_BOTTOM"), 'chaine', 0, '', $conf->entity);
  62. }
  63. if (GETPOSTISSET('MAIN_PROFID1_IN_ADDRESS')) {
  64. dolibarr_set_const($db, "MAIN_PROFID1_IN_ADDRESS", GETPOST("MAIN_PROFID1_IN_ADDRESS"), 'chaine', 0, '', $conf->entity);
  65. }
  66. if (GETPOSTISSET('MAIN_PROFID2_IN_ADDRESS')) {
  67. dolibarr_set_const($db, "MAIN_PROFID2_IN_ADDRESS", GETPOST("MAIN_PROFID2_IN_ADDRESS"), 'chaine', 0, '', $conf->entity);
  68. }
  69. if (GETPOSTISSET('MAIN_PROFID3_IN_ADDRESS')) {
  70. dolibarr_set_const($db, "MAIN_PROFID3_IN_ADDRESS", GETPOST("MAIN_PROFID3_IN_ADDRESS"), 'chaine', 0, '', $conf->entity);
  71. }
  72. if (GETPOSTISSET('MAIN_PROFID4_IN_ADDRESS')) {
  73. dolibarr_set_const($db, "MAIN_PROFID4_IN_ADDRESS", GETPOST("MAIN_PROFID4_IN_ADDRESS"), 'chaine', 0, '', $conf->entity);
  74. }
  75. if (GETPOSTISSET('MAIN_PROFID5_IN_ADDRESS')) {
  76. dolibarr_set_const($db, "MAIN_PROFID5_IN_ADDRESS", GETPOST("MAIN_PROFID5_IN_ADDRESS"), 'chaine', 0, '', $conf->entity);
  77. }
  78. if (GETPOSTISSET('MAIN_PROFID6_IN_ADDRESS')) {
  79. dolibarr_set_const($db, "MAIN_PROFID6_IN_ADDRESS", GETPOST("MAIN_PROFID6_IN_ADDRESS"), 'chaine', 0, '', $conf->entity);
  80. }
  81. if (GETPOSTISSET('MAIN_PDF_NO_SENDER_FRAME')) {
  82. dolibarr_set_const($db, "MAIN_PDF_NO_SENDER_FRAME", GETPOST("MAIN_PDF_NO_SENDER_FRAME"), 'chaine', 0, '', $conf->entity);
  83. }
  84. if (GETPOSTISSET('MAIN_PDF_NO_RECIPENT_FRAME')) {
  85. dolibarr_set_const($db, "MAIN_PDF_NO_RECIPENT_FRAME", GETPOST("MAIN_PDF_NO_RECIPENT_FRAME"), 'chaine', 0, '', $conf->entity);
  86. }
  87. /*if (GETPOSTISSET('MAIN_PDF_HIDE_SENDER_NAME')) {
  88. dolibarr_set_const($db, "MAIN_PDF_HIDE_SENDER_NAME", GETPOST("MAIN_PDF_HIDE_SENDER_NAME"), 'chaine', 0, '', $conf->entity);
  89. }*/
  90. if (GETPOSTISSET('MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT')) {
  91. dolibarr_set_const($db, "MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT", GETPOST("MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT"), 'chaine', 0, '', $conf->entity);
  92. }
  93. if (GETPOSTISSET('MAIN_TVAINTRA_NOT_IN_ADDRESS')) {
  94. dolibarr_set_const($db, "MAIN_TVAINTRA_NOT_IN_ADDRESS", GETPOST("MAIN_TVAINTRA_NOT_IN_ADDRESS"), 'chaine', 0, '', $conf->entity);
  95. }
  96. if (isModEnabled('project')) {
  97. if (GETPOST('PDF_SHOW_PROJECT_REF_OR_LABEL') == 'no') {
  98. dolibarr_del_const($db, "PDF_SHOW_PROJECT", $conf->entity);
  99. dolibarr_del_const($db, "PDF_SHOW_PROJECT_TITLE", $conf->entity);
  100. } elseif (GETPOST('PDF_SHOW_PROJECT_REF_OR_LABEL') == 'showprojectref') {
  101. dolibarr_set_const($db, "PDF_SHOW_PROJECT", GETPOST("PDF_SHOW_PROJECT_REF_OR_LABEL"), 'chaine', 0, '', $conf->entity);
  102. dolibarr_del_const($db, "PDF_SHOW_PROJECT_TITLE", $conf->entity);
  103. } elseif (GETPOST('PDF_SHOW_PROJECT_REF_OR_LABEL') == 'showprojectlabel') {
  104. dolibarr_del_const($db, "PDF_SHOW_PROJECT", $conf->entity);
  105. dolibarr_set_const($db, "PDF_SHOW_PROJECT_TITLE", GETPOST("PDF_SHOW_PROJECT_REF_OR_LABEL"), 'chaine', 0, '', $conf->entity);
  106. }
  107. }
  108. if (GETPOSTISSET('MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS')) {
  109. dolibarr_set_const($db, "MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS", GETPOST("MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS"), 'chaine', 0, '', $conf->entity);
  110. }
  111. if (GETPOSTISSET('MAIN_GENERATE_DOCUMENTS_HIDE_DESC')) {
  112. dolibarr_set_const($db, "MAIN_GENERATE_DOCUMENTS_HIDE_DESC", GETPOST("MAIN_GENERATE_DOCUMENTS_HIDE_DESC"), 'chaine', 0, '', $conf->entity);
  113. }
  114. if (GETPOSTISSET('MAIN_GENERATE_DOCUMENTS_HIDE_REF')) {
  115. dolibarr_set_const($db, "MAIN_GENERATE_DOCUMENTS_HIDE_REF", GETPOST("MAIN_GENERATE_DOCUMENTS_HIDE_REF"), 'chaine', 0, '', $conf->entity);
  116. }
  117. if (GETPOSTISSET('MAIN_GENERATE_DOCUMENTS_SHOW_PRODUCT_BARCODE')) {
  118. dolibarr_set_const($db, "MAIN_GENERATE_DOCUMENTS_SHOW_PRODUCT_BARCODE", GETPOST("MAIN_GENERATE_DOCUMENTS_SHOW_PRODUCT_BARCODE"), 'chaine', 0, '', $conf->entity);
  119. }
  120. if (GETPOSTISSET('MAIN_DOCUMENTS_LOGO_HEIGHT')) {
  121. dolibarr_set_const($db, "MAIN_DOCUMENTS_LOGO_HEIGHT", GETPOST("MAIN_DOCUMENTS_LOGO_HEIGHT", 'int'), 'chaine', 0, '', $conf->entity);
  122. }
  123. if (GETPOSTISSET('MAIN_INVERT_SENDER_RECIPIENT')) {
  124. dolibarr_set_const($db, "MAIN_INVERT_SENDER_RECIPIENT", GETPOST("MAIN_INVERT_SENDER_RECIPIENT"), 'chaine', 0, '', $conf->entity);
  125. }
  126. if (GETPOSTISSET('MAIN_PDF_USE_ISO_LOCATION')) {
  127. dolibarr_set_const($db, "MAIN_PDF_USE_ISO_LOCATION", GETPOST("MAIN_PDF_USE_ISO_LOCATION"), 'chaine', 0, '', $conf->entity);
  128. }
  129. if (GETPOSTISSET('MAIN_PDF_NO_CUSTOMER_CODE')) {
  130. dolibarr_set_const($db, "MAIN_PDF_NO_CUSTOMER_CODE", GETPOST("MAIN_PDF_NO_CUSTOMER_CODE"), 'chaine', 0, '', $conf->entity);
  131. }
  132. if (GETPOSTISSET('MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS')) {
  133. dolibarr_set_const($db, "MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS", GETPOST("MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS"), 'chaine', 0, '', $conf->entity);
  134. }
  135. if (GETPOSTISSET('MAIN_PDF_MAIN_HIDE_SECOND_TAX')) {
  136. dolibarr_set_const($db, "MAIN_PDF_MAIN_HIDE_SECOND_TAX", GETPOST("MAIN_PDF_MAIN_HIDE_SECOND_TAX"), 'chaine', 0, '', $conf->entity);
  137. }
  138. if (GETPOSTISSET('MAIN_PDF_MAIN_HIDE_THIRD_TAX')) {
  139. dolibarr_set_const($db, "MAIN_PDF_MAIN_HIDE_THIRD_TAX", GETPOST("MAIN_PDF_MAIN_HIDE_THIRD_TAX"), 'chaine', 0, '', $conf->entity);
  140. }
  141. if (GETPOSTISSET('PDF_USE_ALSO_LANGUAGE_CODE')) {
  142. dolibarr_set_const($db, "PDF_USE_ALSO_LANGUAGE_CODE", GETPOST('PDF_USE_ALSO_LANGUAGE_CODE', 'alpha'), 'chaine', 0, '', $conf->entity);
  143. }
  144. if (GETPOSTISSET('SHOW_SUBPRODUCT_REF_IN_PDF')) {
  145. dolibarr_set_const($db, "SHOW_SUBPRODUCT_REF_IN_PDF", GETPOST('SHOW_SUBPRODUCT_REF_IN_PDF', 'alpha'), 'chaine', 0, '', $conf->entity);
  146. }
  147. if (GETPOSTISSET('PDF_SHOW_LINK_TO_ONLINE_PAYMENT')) {
  148. dolibarr_set_const($db, "PDF_SHOW_LINK_TO_ONLINE_PAYMENT", GETPOST('PDF_SHOW_LINK_TO_ONLINE_PAYMENT', 'alpha'), 'chaine', 0, '', $conf->entity);
  149. }
  150. if (GETPOSTISSET('DOC_SHOW_FIRST_SALES_REP')) {
  151. dolibarr_set_const($db, "DOC_SHOW_FIRST_SALES_REP", GETPOST('DOC_SHOW_FIRST_SALES_REP', 'alpha'), 'chaine', 0, '', $conf->entity);
  152. }
  153. if (GETPOSTISSET('PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME')) {
  154. dolibarr_set_const($db, "PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME", GETPOST('PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME', 'alpha'), 'chaine', 0, '', $conf->entity);
  155. }
  156. if (GETPOSTISSET('PDF_USE_A')) {
  157. dolibarr_set_const($db, "PDF_USE_A", GETPOST('PDF_USE_A', 'alpha'), 'chaine', 0, '', $conf->entity);
  158. }
  159. if (GETPOSTISSET('PDF_BOLD_PRODUCT_LABEL')) {
  160. dolibarr_set_const($db, "PDF_BOLD_PRODUCT_LABEL", GETPOST('PDF_BOLD_PRODUCT_LABEL', 'alpha'), 'chaine', 0, '', $conf->entity);
  161. }
  162. if (GETPOSTISSET('PDF_BOLD_PRODUCT_REF_AND_PERIOD')) {
  163. dolibarr_set_const($db, "PDF_BOLD_PRODUCT_REF_AND_PERIOD", GETPOST('PDF_BOLD_PRODUCT_REF_AND_PERIOD', 'alpha'), 'chaine', 0, '', $conf->entity);
  164. }
  165. setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
  166. header("Location: ".$_SERVER["PHP_SELF"]."?mainmenu=home&leftmenu=setup");
  167. exit;
  168. }
  169. /*
  170. * View
  171. */
  172. $wikihelp = 'EN:First_setup|FR:Premiers_param&eacute;trages|ES:Primeras_configuraciones';
  173. llxHeader('', $langs->trans("Setup"), $wikihelp);
  174. $form = new Form($db);
  175. $formother = new FormOther($db);
  176. $formadmin = new FormAdmin($db);
  177. $arraydetailsforpdffoot = array(
  178. 0 => $langs->transnoentitiesnoconv('NoDetails'),
  179. 1 => $langs->transnoentitiesnoconv('DisplayCompanyInfo'),
  180. 2 => $langs->transnoentitiesnoconv('DisplayCompanyManagers'),
  181. 3 => $langs->transnoentitiesnoconv('DisplayCompanyInfoAndManagers')
  182. );
  183. $arraylistofpdfformat = array(
  184. 0 => $langs->transnoentitiesnoconv('PDF 1.7'),
  185. 1 => $langs->transnoentitiesnoconv('PDF/A-1b'),
  186. 3 => $langs->transnoentitiesnoconv('PDF/A-3b'),
  187. );
  188. $s = $langs->trans("LibraryToBuildPDF")."<br>";
  189. $i = 0;
  190. $pdf = pdf_getInstance('A4');
  191. if (class_exists('FPDF') && !class_exists('TCPDF')) {
  192. if ($i) {
  193. $s .= ' + ';
  194. }
  195. $s .= 'FPDF';
  196. $s .= ' ('.@constant('FPDF_PATH').')';
  197. $i++;
  198. }
  199. if (class_exists('TCPDF')) {
  200. if ($i) {
  201. $s .= ' + ';
  202. }
  203. $s .= 'TCPDF';
  204. $s .= ' ('.@constant('TCPDF_PATH').')';
  205. $i++;
  206. }
  207. if (class_exists('FPDI')) {
  208. if ($i) {
  209. $s .= ' + ';
  210. }
  211. $s .= 'FPDI';
  212. $s .= ' ('.@constant('FPDI_PATH').')';
  213. $i++;
  214. }
  215. if (class_exists('TCPDI')) {
  216. if ($i) {
  217. $s .= ' + ';
  218. }
  219. $s .= 'TCPDI';
  220. $s .= ' ('.@constant('TCPDI_PATH').')';
  221. $i++;
  222. }
  223. print load_fiche_titre($langs->trans("PDF"), '', 'title_setup');
  224. $head = pdf_admin_prepare_head();
  225. print dol_get_fiche_head($head, 'general', '', -1, '');
  226. print '<span class="opacitymedium">'.$form->textwithpicto($langs->trans("PDFDesc"), $s)."</span><br>\n";
  227. print "<br>\n";
  228. $noCountryCode = (empty($mysoc->country_code) ? true : false);
  229. print '<form method="post" action="'.$_SERVER["PHP_SELF"].'">';
  230. print '<input type="hidden" name="token" value="'.newToken().'">';
  231. print '<input type="hidden" name="action" value="update">';
  232. clearstatcache();
  233. if (getDolGlobalString('PDF_SECURITY_ENCRYPTION')) {
  234. print '<div class="warning">';
  235. 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";
  236. print 'You should disable this option.';
  237. print '</div>';
  238. }
  239. // Misc options
  240. print load_fiche_titre($langs->trans("DictionaryPaperFormat"), '', '');
  241. print '<div class="div-table-responsive-no-min">';
  242. print '<table summary="more" class="noborder centpercent">';
  243. print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("Parameters").'</td><td width="200px">'.$langs->trans("Value").'</td></tr>';
  244. $selected = (isset($conf->global->MAIN_PDF_FORMAT) ? $conf->global->MAIN_PDF_FORMAT : '');
  245. if (empty($selected)) {
  246. $selected = dol_getDefaultFormat();
  247. }
  248. // Show pdf format
  249. print '<tr class="oddeven"><td>'.$langs->trans("DictionaryPaperFormat").'</td><td>';
  250. print $formadmin->select_paper_format($selected, 'MAIN_PDF_FORMAT');
  251. print '</td></tr>';
  252. print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_MARGIN_LEFT").'</td><td>';
  253. print '<input type="text" class="maxwidth50" name="MAIN_PDF_MARGIN_LEFT" value="'.getDolGlobalInt('MAIN_PDF_MARGIN_LEFT', 10).'">';
  254. print '</td></tr>';
  255. print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_MARGIN_RIGHT").'</td><td>';
  256. print '<input type="text" class="maxwidth50" name="MAIN_PDF_MARGIN_RIGHT" value="'.getDolGlobalInt('MAIN_PDF_MARGIN_RIGHT', 10).'">';
  257. print '</td></tr>';
  258. print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_MARGIN_TOP").'</td><td>';
  259. print '<input type="text" class="maxwidth50" name="MAIN_PDF_MARGIN_TOP" value="'.getDolGlobalInt('MAIN_PDF_MARGIN_TOP', 10).'">';
  260. print '</td></tr>';
  261. print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_MARGIN_BOTTOM").'</td><td>';
  262. print '<input type="text" class="maxwidth50" name="MAIN_PDF_MARGIN_BOTTOM" value="'.getDolGlobalInt('MAIN_PDF_MARGIN_BOTTOM', 10).'">';
  263. print '</td></tr>';
  264. print '</table>';
  265. print '</div>';
  266. print '<br>';
  267. // Addresses
  268. print load_fiche_titre($langs->trans("PDFAddressForging"), '', '');
  269. print '<div class="div-table-responsive-no-min">';
  270. print '<table summary="more" class="noborder centpercent">';
  271. print '<tr class="liste_titre"><td class="">'.$langs->trans("Parameter").'</td><td></td></tr>';
  272. // Show sender name
  273. /* Set option as hidden because no need of this for 99.99% of users. Having it as hidden feature is enough.
  274. print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_HIDE_SENDER_NAME").'</td><td>';
  275. if ($conf->use_javascript_ajax) {
  276. print ajax_constantonoff('MAIN_PDF_HIDE_SENDER_NAME');
  277. } else {
  278. 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);
  279. }
  280. print '</td></tr>';
  281. */
  282. // Hide VAT Intra on address
  283. print '<tr class="oddeven"><td>'.$langs->trans("ShowVATIntaInAddress").' - <span class="opacitymedium">'.$langs->trans("ThirdPartyAddress").'</span></td><td>';
  284. if ($conf->use_javascript_ajax) {
  285. print ajax_constantonoff('MAIN_TVAINTRA_NOT_IN_ADDRESS');
  286. } else {
  287. print $form->selectyesno('MAIN_TVAINTRA_NOT_IN_ADDRESS', (getDolGlobalString('MAIN_TVAINTRA_NOT_IN_ADDRESS')) ? $conf->global->MAIN_TVAINTRA_NOT_IN_ADDRESS : 0, 1);
  288. }
  289. print '</td></tr>';
  290. // Show prof id in address into pdf
  291. for ($i = 1; $i <= 6; $i++) {
  292. if (!$noCountryCode) {
  293. $pid = $langs->transcountry("ProfId".$i, $mysoc->country_code);
  294. if ($pid == '-') {
  295. $pid = false;
  296. }
  297. } else {
  298. $pid = img_warning().' <span class="error">'.$langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CompanyCountry")).'</span>';
  299. }
  300. if ($pid) {
  301. print '<tr class="oddeven"><td>'.$langs->trans("ShowProfIdInAddress").' - '.$pid.' - <span class="opacitymedium">'.$langs->trans("ThirdPartyAddress").'</span></td><td>';
  302. $keyforconstant = 'MAIN_PROFID'.$i.'_IN_ADDRESS';
  303. if ($conf->use_javascript_ajax) {
  304. print ajax_constantonoff($keyforconstant);
  305. } else {
  306. print $form->selectyesno($keyforconstant, isset($conf->global->$keyforconstant) ? $conf->global->$keyforconstant : 0, 1, $noCountryCode);
  307. }
  308. print '</td></tr>';
  309. }
  310. }
  311. // Borders on address frame
  312. print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_NO_SENDER_FRAME").'</td><td>';
  313. if ($conf->use_javascript_ajax) {
  314. print ajax_constantonoff('MAIN_PDF_NO_SENDER_FRAME');
  315. } else {
  316. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
  317. print $form->selectarray("MAIN_PDF_NO_SENDER_FRAME", $arrval, $conf->global->MAIN_PDF_NO_SENDER_FRAME);
  318. }
  319. print '</td></tr>';
  320. print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_NO_RECIPENT_FRAME").'</td><td>';
  321. if ($conf->use_javascript_ajax) {
  322. print ajax_constantonoff('MAIN_PDF_NO_RECIPENT_FRAME');
  323. } else {
  324. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
  325. print $form->selectarray("MAIN_PDF_NO_RECIPENT_FRAME", $arrval, $conf->global->MAIN_PDF_NO_RECIPENT_FRAME);
  326. }
  327. print '</td></tr>';
  328. //Invert sender and recipient
  329. print '<tr class="oddeven"><td>'.$langs->trans("SwapSenderAndRecipientOnPDF").'</td><td>';
  330. if ($conf->use_javascript_ajax) {
  331. print ajax_constantonoff('MAIN_INVERT_SENDER_RECIPIENT');
  332. } else {
  333. print $form->selectyesno('MAIN_INVERT_SENDER_RECIPIENT', (getDolGlobalString('MAIN_INVERT_SENDER_RECIPIENT')) ? $conf->global->MAIN_INVERT_SENDER_RECIPIENT : 0, 1);
  334. }
  335. print '</td></tr>';
  336. // Place customer adress to the ISO location
  337. print '<tr class="oddeven"><td>'.$langs->trans("PlaceCustomerAddressToIsoLocation").'</td><td>';
  338. if ($conf->use_javascript_ajax) {
  339. print ajax_constantonoff('MAIN_PDF_USE_ISO_LOCATION');
  340. } else {
  341. print $form->selectyesno('MAIN_PDF_USE_ISO_LOCATION', (getDolGlobalString('MAIN_PDF_USE_ISO_LOCATION')) ? $conf->global->MAIN_PDF_USE_ISO_LOCATION : 0, 1);
  342. }
  343. print '</td></tr>';
  344. // Show alias in thirdparty name
  345. print '<tr class="oddeven"><td>'.$langs->trans("PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME").'</td><td>';
  346. if ($conf->use_javascript_ajax) {
  347. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("THIRDPARTY_ALIAS"), '2' => $langs->trans("ALIAS_THIRDPARTY"));
  348. print $form->selectarray("PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME", $arrval, getDolGlobalInt('PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME'));
  349. }
  350. print '</table>';
  351. print '</div>';
  352. print '<br>';
  353. // Localtaxes
  354. $locales = '';
  355. $text = '';
  356. if ($mysoc->useLocalTax(1) || $mysoc->useLocalTax(2)) {
  357. if ($mysoc->useLocalTax(1)) {
  358. $locales = $langs->transcountry("LT1", $mysoc->country_code);
  359. $text = '<tr class="oddeven"><td class="titlefieldmiddle">'.$langs->trans("HideLocalTaxOnPDF", $langs->transcountry("LT1", $mysoc->country_code)).'</td><td>';
  360. if ($conf->use_javascript_ajax) {
  361. $text .= ajax_constantonoff('MAIN_PDF_MAIN_HIDE_SECOND_TAX');
  362. } else {
  363. $text .= $form->selectyesno('MAIN_PDF_MAIN_HIDE_SECOND_TAX', (getDolGlobalString('MAIN_PDF_MAIN_HIDE_SECOND_TAX')) ? $conf->global->MAIN_PDF_MAIN_HIDE_SECOND_TAX : 0, 1);
  364. }
  365. $text .= '</td></tr>';
  366. }
  367. if ($mysoc->useLocalTax(2)) {
  368. $locales .= ($locales ? ' & ' : '').$langs->transcountry("LT2", $mysoc->country_code);
  369. $text .= '<tr class="oddeven"><td class="titlefieldmiddle">'.$langs->trans("HideLocalTaxOnPDF", $langs->transcountry("LT2", $mysoc->country_code)).'</td><td>';
  370. if ($conf->use_javascript_ajax) {
  371. $text .= ajax_constantonoff('MAIN_PDF_MAIN_HIDE_THIRD_TAX');
  372. } else {
  373. $text .= $form->selectyesno('MAIN_PDF_MAIN_HIDE_THIRD_TAX', (getDolGlobalString('MAIN_PDF_MAIN_HIDE_THIRD_TAX')) ? $conf->global->MAIN_PDF_MAIN_HIDE_THIRD_TAX : 0, 1);
  374. }
  375. $text .= '</td></tr>';
  376. }
  377. }
  378. $title = $langs->trans("PDFRulesForSalesTax");
  379. if ($mysoc->useLocalTax(1) || $mysoc->useLocalTax(2)) {
  380. $title .= ' - '.$langs->trans("PDFLocaltax", $locales);
  381. }
  382. print load_fiche_titre($title, '', '');
  383. print '<table summary="more" class="noborder centpercent">';
  384. print '<tr class="liste_titre"><td>'.$langs->trans("Parameter").'</td><td></td></tr>';
  385. // Hide any information on Sale tax / VAT
  386. print '<tr class="oddeven"><td>'.$langs->trans("HideAnyVATInformationOnPDF").'</td><td>';
  387. if ($conf->use_javascript_ajax) {
  388. print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT');
  389. } else {
  390. print $form->selectyesno('MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT', (getDolGlobalString('MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT')) ? $conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT : 0, 1);
  391. }
  392. print '</td></tr>';
  393. // Locataxes
  394. print $text;
  395. print '</table>';
  396. print '<br>';
  397. // Other
  398. print load_fiche_titre($langs->trans("Other"), '', '');
  399. print '<div class="div-table-responsive-no-min">';
  400. print '<table summary="more" class="noborder centpercent">';
  401. print '<tr class="liste_titre"><td>'.$langs->trans("Parameter").'</td><td>'.$langs->trans("Value").'</td></tr>';
  402. // Use 2 languages into PDF
  403. print '<tr class="oddeven"><td>';
  404. print $form->textwithpicto($langs->trans("PDFIn2Languages"), $langs->trans("PDF_USE_ALSO_LANGUAGE_CODE"));
  405. print '</td><td>';
  406. $selected = GETPOSTISSET('PDF_USE_ALSO_LANGUAGE_CODE') ? GETPOST('PDF_USE_ALSO_LANGUAGE_CODE') : (getDolGlobalString('PDF_USE_ALSO_LANGUAGE_CODE') ? $conf->global->PDF_USE_ALSO_LANGUAGE_CODE : 0);
  407. print $formadmin->select_language($selected, 'PDF_USE_ALSO_LANGUAGE_CODE', 0, null, 1);
  408. print '</td></tr>';
  409. // Height of logo
  410. print '<tr class="oddeven"><td>'.$langs->trans("MAIN_DOCUMENTS_LOGO_HEIGHT").'</td><td>';
  411. print '<input type="text" class="maxwidth50" name="MAIN_DOCUMENTS_LOGO_HEIGHT" value="'.(getDolGlobalString('MAIN_DOCUMENTS_LOGO_HEIGHT') ? $conf->global->MAIN_DOCUMENTS_LOGO_HEIGHT : 20).'">';
  412. print '</td></tr>';
  413. // Show project
  414. if (isModEnabled('project')) {
  415. print '<tr class="oddeven"><td>'.$langs->trans("PDF_SHOW_PROJECT").'</td><td>';
  416. $tmparray = array('no' => 'No', 'showprojectref' => 'RefProject', 'showprojectlabel' => 'ShowProjectLabel');
  417. $showprojectref = !getDolGlobalString('PDF_SHOW_PROJECT') ? (!getDolGlobalString('PDF_SHOW_PROJECT_TITLE') ? 'no' : 'showprojectlabel') : 'showprojectref';
  418. print $form->selectarray('PDF_SHOW_PROJECT_REF_OR_LABEL', $tmparray, $showprojectref, 0, 0, 0, '', 1);
  419. print '</td></tr>';
  420. }
  421. //
  422. print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_HIDE_CUSTOMER_CODE");
  423. print '</td><td>';
  424. if ($conf->use_javascript_ajax) {
  425. print ajax_constantonoff('MAIN_PDF_HIDE_CUSTOMER_CODE');
  426. } else {
  427. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
  428. print $form->selectarray("MAIN_PDF_HIDE_CUSTOMER_CODE", $arrval, $conf->global->MAIN_PDF_HIDE_CUSTOMER_CODE);
  429. }
  430. print '</td></tr>';
  431. // Ref
  432. print '<tr class="oddeven"><td>'.$langs->trans("HideRefOnPDF").'</td><td>';
  433. if ($conf->use_javascript_ajax) {
  434. print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_HIDE_REF');
  435. } else {
  436. print $form->selectyesno('MAIN_GENERATE_DOCUMENTS_HIDE_REF', (getDolGlobalString('MAIN_GENERATE_DOCUMENTS_HIDE_REF')) ? $conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF : 0, 1);
  437. }
  438. print '</td></tr>';
  439. // Barcode
  440. if (isModEnabled('barcode')) {
  441. print '<tr class="oddeven"><td>'.$langs->trans("ShowProductBarcodeOnPDF").'</td><td>';
  442. if ($conf->use_javascript_ajax) {
  443. print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_SHOW_PRODUCT_BARCODE');
  444. } else {
  445. print $form->selectyesno('MAIN_GENERATE_DOCUMENTS_SHOW_PRODUCT_BARCODE', (getDolGlobalString('MAIN_GENERATE_DOCUMENTS_SHOW_PRODUCT_BARCODE')) ? $conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_PRODUCT_BARCODE : 0, 1);
  446. }
  447. print '</td></tr>';
  448. }
  449. // Desc
  450. print '<tr class="oddeven"><td>'.$langs->trans("HideDescOnPDF").'</td><td>';
  451. if ($conf->use_javascript_ajax) {
  452. print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_HIDE_DESC');
  453. } else {
  454. print $form->selectyesno('MAIN_GENERATE_DOCUMENTS_HIDE_DESC', (getDolGlobalString('MAIN_GENERATE_DOCUMENTS_HIDE_DESC')) ? $conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC : 0, 1);
  455. }
  456. print '</td></tr>';
  457. // Details
  458. print '<tr class="oddeven"><td>'.$langs->trans("HideDetailsOnPDF").'</td><td>';
  459. if ($conf->use_javascript_ajax) {
  460. print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS');
  461. } else {
  462. print $form->selectyesno('MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS', (getDolGlobalString('MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS')) ? $conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS : 0, 1);
  463. }
  464. print '</td></tr>';
  465. // Swicth in Bold
  466. print '<tr class="oddeven"><td>'.$langs->trans("BoldLabelOnPDF").'</td><td>';
  467. if ($conf->use_javascript_ajax) {
  468. print ajax_constantonoff('PDF_BOLD_PRODUCT_LABEL');
  469. } else {
  470. print $form->selectyesno('PDF_BOLD_PRODUCT_LABEL', (getDolGlobalString('PDF_BOLD_PRODUCT_LABEL')) ? $conf->global->PDF_BOLD_PRODUCT_LABEL : 0, 1);
  471. }
  472. print '</td></tr>';
  473. // Swicth in Bold
  474. print '<tr class="oddeven"><td>'.$langs->trans("BoldRefAndPeriodOnPDF").'</td><td>';
  475. if ($conf->use_javascript_ajax) {
  476. print ajax_constantonoff('PDF_BOLD_PRODUCT_REF_AND_PERIOD');
  477. } else {
  478. print $form->selectyesno('PDF_BOLD_PRODUCT_REF_AND_PERIOD', (getDolGlobalString('PDF_BOLD_PRODUCT_REF_AND_PERIOD')) ? $conf->global->PDF_BOLD_PRODUCT_REF_AND_PERIOD : 0, 1);
  479. }
  480. print '</td></tr>';
  481. // SHOW_SUBPRODUCT_REF_IN_PDF - Option to show the detail of product ref for kits.
  482. print '<tr class="oddeven"><td>'.$langs->trans("SHOW_SUBPRODUCT_REF_IN_PDF", $langs->transnoentitiesnoconv("AssociatedProductsAbility"), $langs->transnoentitiesnoconv("Products")).'</td><td>';
  483. if ($conf->use_javascript_ajax) {
  484. print ajax_constantonoff('SHOW_SUBPRODUCT_REF_IN_PDF');
  485. } else {
  486. print $form->selectyesno('SHOW_SUBPRODUCT_REF_IN_PDF', (getDolGlobalString('SHOW_SUBPRODUCT_REF_IN_PDF')) ? $conf->global->SHOW_SUBPRODUCT_REF_IN_PDF : 0, 1);
  487. }
  488. print '</td></tr>';
  489. // Show more details in footer
  490. print '<tr class="oddeven"><td>'.$langs->trans("ShowDetailsInPDFPageFoot").'</td><td>';
  491. print $form->selectarray('MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS', $arraydetailsforpdffoot, (getDolGlobalString('MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS') ? $conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS : 0));
  492. print '</td></tr>';
  493. // Show the first sales representative
  494. print '<tr class="oddeven"><td>'.$langs->trans("DOC_SHOW_FIRST_SALES_REP");
  495. print ' <span class="opacitymedium">('.$langs->trans("SalesRepresentativeInfo").')</span>';
  496. print '</td><td>';
  497. if ($conf->use_javascript_ajax) {
  498. print ajax_constantonoff('DOC_SHOW_FIRST_SALES_REP');
  499. } else {
  500. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
  501. print $form->selectarray("DOC_SHOW_FIRST_SALES_REP", $arrval, $conf->global->DOC_SHOW_FIRST_SALES_REP);
  502. }
  503. // Show online payment link on invoices
  504. print '<tr class="oddeven"><td>'.$langs->trans("PDF_SHOW_LINK_TO_ONLINE_PAYMENT").'</td><td>';
  505. if ($conf->use_javascript_ajax) {
  506. print ajax_constantonoff('PDF_SHOW_LINK_TO_ONLINE_PAYMENT');
  507. } else {
  508. print $form->selectyesno('PDF_SHOW_LINK_TO_ONLINE_PAYMENT', (getDolGlobalString('PDF_SHOW_LINK_TO_ONLINE_PAYMENT')) ? $conf->global->PDF_SHOW_LINK_TO_ONLINE_PAYMENT : 0, 1);
  509. }
  510. print '</td></tr>';
  511. print '<tr class="oddeven"><td>'.$langs->trans("PDF_USE_A").'</td><td>';
  512. print $form->selectarray('PDF_USE_A', $arraylistofpdfformat, (!getDolGlobalString('PDF_USE_A') ? 0 : $conf->global->PDF_USE_A));
  513. print '</td></tr>';
  514. print '</table>';
  515. print '</div>';
  516. print $form->buttonsSaveCancel("Save", '');
  517. print '</form>';
  518. // End of page
  519. llxFooter();
  520. $db->close();