pdf.php 25 KB

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