pdf.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585
  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 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->projet->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_USE_A')) {
  147. dolibarr_set_const($db, "PDF_USE_A", GETPOST('PDF_USE_A', 'alpha'), 'chaine', 0, '', $conf->entity);
  148. }
  149. if (GETPOSTISSET('PDF_BOLD_PRODUCT_LABEL')) {
  150. dolibarr_set_const($db, "PDF_BOLD_PRODUCT_LABEL", GETPOST('PDF_BOLD_PRODUCT_LABEL', 'alpha'), 'chaine', 0, '', $conf->entity);
  151. }
  152. if (GETPOSTISSET('PDF_BOLD_PRODUCT_REF_AND_PERIOD')) {
  153. dolibarr_set_const($db, "PDF_BOLD_PRODUCT_REF_AND_PERIOD", GETPOST('PDF_BOLD_PRODUCT_REF_AND_PERIOD', 'alpha'), 'chaine', 0, '', $conf->entity);
  154. }
  155. setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
  156. header("Location: ".$_SERVER["PHP_SELF"]."?mainmenu=home&leftmenu=setup");
  157. exit;
  158. }
  159. /*
  160. * View
  161. */
  162. $wikihelp = 'EN:First_setup|FR:Premiers_param&eacute;trages|ES:Primeras_configuraciones';
  163. llxHeader('', $langs->trans("Setup"), $wikihelp);
  164. $form = new Form($db);
  165. $formother = new FormOther($db);
  166. $formadmin = new FormAdmin($db);
  167. $arraydetailsforpdffoot = array(
  168. 0 => $langs->transnoentitiesnoconv('NoDetails'),
  169. 1 => $langs->transnoentitiesnoconv('DisplayCompanyInfo'),
  170. 2 => $langs->transnoentitiesnoconv('DisplayCompanyManagers'),
  171. 3 => $langs->transnoentitiesnoconv('DisplayCompanyInfoAndManagers')
  172. );
  173. $arraylistofpdfformat = array(
  174. 0 => $langs->transnoentitiesnoconv('PDF 1.7'),
  175. 1 => $langs->transnoentitiesnoconv('PDF/A-1b'),
  176. 3 => $langs->transnoentitiesnoconv('PDF/A-3b'),
  177. );
  178. $s = $langs->trans("LibraryToBuildPDF")."<br>";
  179. $i = 0;
  180. $pdf = pdf_getInstance('A4');
  181. if (class_exists('FPDF') && !class_exists('TCPDF')) {
  182. if ($i) {
  183. $s .= ' + ';
  184. }
  185. $s .= 'FPDF';
  186. $s .= ' ('.@constant('FPDF_PATH').')';
  187. $i++;
  188. }
  189. if (class_exists('TCPDF')) {
  190. if ($i) {
  191. $s .= ' + ';
  192. }
  193. $s .= 'TCPDF';
  194. $s .= ' ('.@constant('TCPDF_PATH').')';
  195. $i++;
  196. }
  197. if (class_exists('FPDI')) {
  198. if ($i) {
  199. $s .= ' + ';
  200. }
  201. $s .= 'FPDI';
  202. $s .= ' ('.@constant('FPDI_PATH').')';
  203. $i++;
  204. }
  205. if (class_exists('TCPDI')) {
  206. if ($i) {
  207. $s .= ' + ';
  208. }
  209. $s .= 'TCPDI';
  210. $s .= ' ('.@constant('TCPDI_PATH').')';
  211. $i++;
  212. }
  213. print load_fiche_titre($langs->trans("PDF"), '', 'title_setup');
  214. $head = pdf_admin_prepare_head();
  215. print dol_get_fiche_head($head, 'general', '', -1, '');
  216. print '<span class="opacitymedium">'.$form->textwithpicto($langs->trans("PDFDesc"), $s)."</span><br>\n";
  217. print "<br>\n";
  218. $noCountryCode = (empty($mysoc->country_code) ? true : false);
  219. print '<form method="post" action="'.$_SERVER["PHP_SELF"].'">';
  220. print '<input type="hidden" name="token" value="'.newToken().'">';
  221. print '<input type="hidden" name="action" value="update">';
  222. clearstatcache();
  223. // Misc options
  224. print load_fiche_titre($langs->trans("DictionaryPaperFormat"), '', '');
  225. print '<div class="div-table-responsive-no-min">';
  226. print '<table summary="more" class="noborder centpercent">';
  227. print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("Parameter").'</td><td width="200px">'.$langs->trans("Value").'</td></tr>';
  228. $selected = (isset($conf->global->MAIN_PDF_FORMAT) ? $conf->global->MAIN_PDF_FORMAT : '');
  229. if (empty($selected)) {
  230. $selected = dol_getDefaultFormat();
  231. }
  232. // Show pdf format
  233. print '<tr class="oddeven"><td>'.$langs->trans("DictionaryPaperFormat").'</td><td>';
  234. print $formadmin->select_paper_format($selected, 'MAIN_PDF_FORMAT');
  235. print '</td></tr>';
  236. print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_MARGIN_LEFT").'</td><td>';
  237. 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).'">';
  238. print '</td></tr>';
  239. print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_MARGIN_RIGHT").'</td><td>';
  240. 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).'">';
  241. print '</td></tr>';
  242. print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_MARGIN_TOP").'</td><td>';
  243. 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).'">';
  244. print '</td></tr>';
  245. print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_MARGIN_BOTTOM").'</td><td>';
  246. 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).'">';
  247. print '</td></tr>';
  248. print '</table>';
  249. print '</div>';
  250. print '<br>';
  251. // Addresses
  252. print load_fiche_titre($langs->trans("PDFAddressForging"), '', '');
  253. print '<div class="div-table-responsive-no-min">';
  254. print '<table summary="more" class="noborder centpercent">';
  255. print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("Parameter").'</td><td width="200px">'.$langs->trans("Value").'</td></tr>';
  256. // Hide VAT Intra on address
  257. print '<tr class="oddeven"><td>'.$langs->trans("ShowVATIntaInAddress").'</td><td>';
  258. if ($conf->use_javascript_ajax) {
  259. print ajax_constantonoff('MAIN_TVAINTRA_NOT_IN_ADDRESS');
  260. } else {
  261. 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);
  262. }
  263. print '</td></tr>';
  264. // Show prof id in address into pdf
  265. for ($i = 1; $i <= 6; $i++) {
  266. if (!$noCountryCode) {
  267. $pid = $langs->transcountry("ProfId".$i, $mysoc->country_code);
  268. if ($pid == '-') {
  269. $pid = false;
  270. }
  271. } else {
  272. $pid = img_warning().' <span class="error">'.$langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CompanyCountry")).'</span>';
  273. }
  274. if ($pid) {
  275. print '<tr class="oddeven"><td>'.$langs->trans("ShowProfIdInAddress").' - '.$pid.'</td><td>';
  276. $keyforconstant = 'MAIN_PROFID'.$i.'_IN_ADDRESS';
  277. if ($conf->use_javascript_ajax) {
  278. print ajax_constantonoff($keyforconstant);
  279. } else {
  280. print $form->selectyesno($keyforconstant, isset($conf->global->$keyforconstant) ? $conf->global->$keyforconstant : 0, 1, $noCountryCode);
  281. }
  282. print '</td></tr>';
  283. }
  284. }
  285. // Borders on address frame
  286. print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_NO_SENDER_FRAME").'</td><td>';
  287. if ($conf->use_javascript_ajax) {
  288. print ajax_constantonoff('MAIN_PDF_NO_SENDER_FRAME');
  289. } else {
  290. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
  291. print $form->selectarray("MAIN_PDF_NO_SENDER_FRAME", $arrval, $conf->global->MAIN_PDF_NO_SENDER_FRAME);
  292. }
  293. print '</td></tr>';
  294. print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_NO_RECIPENT_FRAME").'</td><td>';
  295. if ($conf->use_javascript_ajax) {
  296. print ajax_constantonoff('MAIN_PDF_NO_RECIPENT_FRAME');
  297. } else {
  298. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
  299. print $form->selectarray("MAIN_PDF_NO_RECIPENT_FRAME", $arrval, $conf->global->MAIN_PDF_NO_RECIPENT_FRAME);
  300. }
  301. // Show sender name
  302. print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_HIDE_SENDER_NAME").'</td><td>';
  303. if ($conf->use_javascript_ajax) {
  304. print ajax_constantonoff('MAIN_PDF_HIDE_SENDER_NAME');
  305. } else {
  306. 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);
  307. }
  308. print '</td></tr>';
  309. //Invert sender and recipient
  310. print '<tr class="oddeven"><td>'.$langs->trans("SwapSenderAndRecipientOnPDF").'</td><td>';
  311. if ($conf->use_javascript_ajax) {
  312. print ajax_constantonoff('MAIN_INVERT_SENDER_RECIPIENT');
  313. } else {
  314. print $form->selectyesno('MAIN_INVERT_SENDER_RECIPIENT', (!empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) ? $conf->global->MAIN_INVERT_SENDER_RECIPIENT : 0, 1);
  315. }
  316. print '</td></tr>';
  317. // Place customer adress to the ISO location
  318. print '<tr class="oddeven"><td>'.$langs->trans("PlaceCustomerAddressToIsoLocation").'</td><td>';
  319. if ($conf->use_javascript_ajax) {
  320. print ajax_constantonoff('MAIN_PDF_USE_ISO_LOCATION');
  321. } else {
  322. 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);
  323. }
  324. print '</td></tr>';
  325. print '</table>';
  326. print '</div>';
  327. print '<br>';
  328. // Localtaxes
  329. $locales = '';
  330. $text = '';
  331. if ($mysoc->useLocalTax(1) || $mysoc->useLocalTax(2)) {
  332. if ($mysoc->useLocalTax(1)) {
  333. $locales = $langs->transcountry("LT1", $mysoc->country_code);
  334. $text = '<tr class="oddeven"><td class="titlefieldmiddle">'.$langs->trans("HideLocalTaxOnPDF", $langs->transcountry("LT1", $mysoc->country_code)).'</td><td>';
  335. if ($conf->use_javascript_ajax) {
  336. $text .= ajax_constantonoff('MAIN_PDF_MAIN_HIDE_SECOND_TAX');
  337. } else {
  338. $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);
  339. }
  340. $text .= '</td></tr>';
  341. }
  342. if ($mysoc->useLocalTax(2)) {
  343. $locales .= ($locales ? ' & ' : '').$langs->transcountry("LT2", $mysoc->country_code);
  344. $text .= '<tr class="oddeven"><td class="titlefieldmiddle">'.$langs->trans("HideLocalTaxOnPDF", $langs->transcountry("LT2", $mysoc->country_code)).'</td><td>';
  345. if ($conf->use_javascript_ajax) {
  346. $text .= ajax_constantonoff('MAIN_PDF_MAIN_HIDE_THIRD_TAX');
  347. } else {
  348. $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);
  349. }
  350. $text .= '</td></tr>';
  351. }
  352. }
  353. $title = $langs->trans("PDFRulesForSalesTax");
  354. if ($mysoc->useLocalTax(1) || $mysoc->useLocalTax(2)) {
  355. $title .= ' - '.$langs->trans("PDFLocaltax", $locales);
  356. }
  357. print load_fiche_titre($title, '', '');
  358. print '<table summary="more" class="noborder centpercent">';
  359. print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("Parameter").'</td><td width="200px">'.$langs->trans("Value").'</td></tr>';
  360. // Hide any information on Sale tax / VAT
  361. print '<tr class="oddeven"><td>'.$langs->trans("HideAnyVATInformationOnPDF").'</td><td>';
  362. if ($conf->use_javascript_ajax) {
  363. print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT');
  364. } else {
  365. 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);
  366. }
  367. print '</td></tr>';
  368. // Locataxes
  369. print $text;
  370. print '</table>';
  371. print '<br>';
  372. // Other
  373. print load_fiche_titre($langs->trans("Other"), '', '');
  374. print '<div class="div-table-responsive-no-min">';
  375. print '<table summary="more" class="noborder centpercent">';
  376. print '<tr class="liste_titre"><td>'.$langs->trans("Parameter").'</td><td width="200px">'.$langs->trans("Value").'</td></tr>';
  377. // Use 2 languages into PDF
  378. print '<tr class="oddeven"><td>'.$langs->trans("PDF_USE_ALSO_LANGUAGE_CODE").'</td><td>';
  379. //if (! empty($conf->global->MAIN_MULTILANGS))
  380. //{
  381. $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);
  382. print $formadmin->select_language($selected, 'PDF_USE_ALSO_LANGUAGE_CODE', 0, null, 1);
  383. //} else {
  384. // print '<span class="opacitymedium">'.$langs->trans("MultiLangNotEnabled").'</span>';
  385. //}
  386. print '</td></tr>';
  387. // Height of logo
  388. print '<tr class="oddeven"><td>'.$langs->trans("MAIN_DOCUMENTS_LOGO_HEIGHT").'</td><td>';
  389. 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).'">';
  390. print '</td></tr>';
  391. // Show project
  392. if (!empty($conf->projet->enabled)) {
  393. print '<tr class="oddeven"><td>'.$langs->trans("PDF_SHOW_PROJECT").'</td><td>';
  394. $tmparray = array('no' => 'No', 'showprojectref' => 'RefProject', 'showprojectlabel' => 'ShowProjectLabel');
  395. $showprojectref = empty($conf->global->PDF_SHOW_PROJECT) ? (empty($conf->global->PDF_SHOW_PROJECT_TITLE) ? 'no' : 'showprojectlabel') : 'showprojectref';
  396. print $form->selectarray('PDF_SHOW_PROJECT_REF_OR_LABEL', $tmparray, $showprojectref, 0, 0, 0, '', 1);
  397. print '</td></tr>';
  398. }
  399. //
  400. print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_HIDE_CUSTOMER_CODE");
  401. print '</td><td>';
  402. if ($conf->use_javascript_ajax) {
  403. print ajax_constantonoff('MAIN_PDF_HIDE_CUSTOMER_CODE');
  404. } else {
  405. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
  406. print $form->selectarray("MAIN_PDF_HIDE_CUSTOMER_CODE", $arrval, $conf->global->MAIN_PDF_HIDE_CUSTOMER_CODE);
  407. }
  408. print '</td></tr>';
  409. // Ref
  410. print '<tr class="oddeven"><td>'.$langs->trans("HideRefOnPDF").'</td><td>';
  411. if ($conf->use_javascript_ajax) {
  412. print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_HIDE_REF');
  413. } else {
  414. 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);
  415. }
  416. print '</td></tr>';
  417. print '<tr class="oddeven"><td>'.$langs->trans("BoldLabelOnPDF").'</td><td>';
  418. if ($conf->use_javascript_ajax) {
  419. print ajax_constantonoff('PDF_BOLD_PRODUCT_LABEL');
  420. } else {
  421. print $form->selectyesno('PDF_BOLD_PRODUCT_LABEL', (!empty($conf->global->PDF_BOLD_PRODUCT_LABEL)) ? $conf->global->PDF_BOLD_PRODUCT_LABEL : 0, 1);
  422. }
  423. print '</td></tr>';
  424. print '<tr class="oddeven"><td>'.$langs->trans("BoldRefAndPeriodOnPDF").'</td><td>';
  425. if ($conf->use_javascript_ajax) {
  426. print ajax_constantonoff('PDF_BOLD_PRODUCT_REF_AND_PERIOD');
  427. } else {
  428. 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);
  429. }
  430. print '</td></tr>';
  431. // Desc
  432. print '<tr class="oddeven"><td>'.$langs->trans("HideDescOnPDF").'</td><td>';
  433. if ($conf->use_javascript_ajax) {
  434. print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_HIDE_DESC');
  435. } else {
  436. 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);
  437. }
  438. print '</td></tr>';
  439. // Details
  440. print '<tr class="oddeven"><td>'.$langs->trans("HideDetailsOnPDF").'</td><td>';
  441. if ($conf->use_javascript_ajax) {
  442. print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS');
  443. } else {
  444. 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);
  445. }
  446. print '</td></tr>';
  447. // SHOW_SUBPRODUCT_REF_IN_PDF - Option to show the detail of product ref for kits.
  448. print '<tr class="oddeven"><td>'.$langs->trans("SHOW_SUBPRODUCT_REF_IN_PDF", $langs->transnoentitiesnoconv("AssociatedProductsAbility"), $langs->transnoentitiesnoconv("Products")).'</td><td>';
  449. if ($conf->use_javascript_ajax) {
  450. print ajax_constantonoff('SHOW_SUBPRODUCT_REF_IN_PDF');
  451. } else {
  452. 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);
  453. }
  454. print '</td></tr>';
  455. // Show more details in footer
  456. print '<tr class="oddeven"><td>'.$langs->trans("ShowDetailsInPDFPageFoot").'</td><td>';
  457. 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));
  458. print '</td></tr>';
  459. // Show online payment link on invoices
  460. print '<tr class="oddeven"><td>'.$langs->trans("PDF_SHOW_LINK_TO_ONLINE_PAYMENT").'</td><td>';
  461. if ($conf->use_javascript_ajax) {
  462. print ajax_constantonoff('PDF_SHOW_LINK_TO_ONLINE_PAYMENT');
  463. } else {
  464. 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);
  465. }
  466. print '</td></tr>';
  467. print '<tr class="oddeven"><td>'.$langs->trans("PDF_USE_A").'</td><td>';
  468. print $form->selectarray('PDF_USE_A', $arraylistofpdfformat, (empty($conf->global->PDF_USE_A) ? 0 : $conf->global->PDF_USE_A));
  469. print '</td></tr>';
  470. print '</table>';
  471. print '</div>';
  472. print $form->buttonsSaveCancel("Save", '');
  473. print '</form>';
  474. // End of page
  475. llxFooter();
  476. $db->close();