pdf_other.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  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. * Copyright (C) 2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
  9. *
  10. * This program is free software; you can redistribute it and/or modify
  11. * it under the terms of the GNU General Public License as published by
  12. * the Free Software Foundation; either version 3 of the License, or
  13. * (at your option) any later version.
  14. *
  15. * This program is distributed in the hope that it will be useful,
  16. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  18. * GNU General Public License for more details.
  19. *
  20. * You should have received a copy of the GNU General Public License
  21. * along with this program. If not, see <https://www.gnu.org/licenses/>.
  22. */
  23. /**
  24. * \file htdocs/admin/pdf.php
  25. * \brief Page to setup PDF options
  26. */
  27. // Load Dolibarr environment
  28. require '../main.inc.php';
  29. require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
  30. require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php';
  31. require_once DOL_DOCUMENT_ROOT.'/core/lib/usergroups.lib.php';
  32. require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
  33. require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
  34. require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php';
  35. // Load translation files required by the page
  36. $langs->loadLangs(array('admin', 'bills', 'companies', 'languages', 'members', 'other', 'products', 'propal', 'receptions', 'stocks', 'trips'));
  37. if (!$user->admin) {
  38. accessforbidden();
  39. }
  40. $action = GETPOST('action', 'aZ09');
  41. /*
  42. * Actions
  43. */
  44. if ($action == 'update') {
  45. if (GETPOSTISSET('MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING')) {
  46. dolibarr_set_const($db, "MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING", GETPOST("MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING"), 'chaine', 0, '', $conf->entity);
  47. }
  48. if (GETPOSTISSET('PROPOSAL_PDF_HIDE_PAYMENTTERM')) {
  49. dolibarr_set_const($db, "PROPOSAL_PDF_HIDE_PAYMENTTERM", GETPOST("PROPOSAL_PDF_HIDE_PAYMENTTERM"), 'chaine', 0, '', $conf->entity);
  50. }
  51. if (GETPOSTISSET('PROPOSAL_PDF_HIDE_PAYMENTMODE')) {
  52. dolibarr_set_const($db, "PROPOSAL_PDF_HIDE_PAYMENTMODE", GETPOST("PROPOSAL_PDF_HIDE_PAYMENTMODE"), 'chaine', 0, '', $conf->entity);
  53. }
  54. if (GETPOSTISSET('MAIN_GENERATE_PROPOSALS_WITH_PICTURE')) {
  55. dolibarr_set_const($db, "MAIN_GENERATE_PROPOSALS_WITH_PICTURE", GETPOST("MAIN_GENERATE_PROPOSALS_WITH_PICTURE"), 'chaine', 0, '', $conf->entity);
  56. }
  57. if (GETPOSTISSET('MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE')) {
  58. dolibarr_set_const($db, "MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE", GETPOST("MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE"), 'chaine', 0, '', $conf->entity);
  59. }
  60. if (GETPOSTISSET('MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN')) {
  61. dolibarr_set_const($db, "MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN", GETPOST("MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN"), 'chaine', 0, '', $conf->entity);
  62. }
  63. if (GETPOSTISSET('MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE')) {
  64. dolibarr_set_const($db, "MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE", GETPOST("MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE"), 'chaine', 0, '', $conf->entity);
  65. }
  66. if (GETPOSTISSET('MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN')) {
  67. dolibarr_set_const($db, "MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN", GETPOST("MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN"), 'chaine', 0, '', $conf->entity);
  68. }
  69. if (GETPOSTISSET('MAIN_DOCUMENTS_WITH_PICTURE_WIDTH')) {
  70. dolibarr_set_const($db, "MAIN_DOCUMENTS_WITH_PICTURE_WIDTH", GETPOST("MAIN_DOCUMENTS_WITH_PICTURE_WIDTH", 'int'), 'chaine', 0, '', $conf->entity);
  71. }
  72. if (GETPOSTISSET('INVOICE_ADD_ZATCA_QR_CODE')) {
  73. dolibarr_set_const($db, "INVOICE_ADD_ZATCA_QR_CODE", GETPOST("INVOICE_ADD_ZATCA_QR_CODE", 'int'), 'chaine', 0, '', $conf->entity);
  74. if (GETPOSTINT('INVOICE_ADD_ZATCA_QR_CODE') == 1) {
  75. dolibarr_del_const($db, "INVOICE_ADD_SWISS_QR_CODE", $conf->entity);
  76. }
  77. }
  78. if (GETPOSTISSET('INVOICE_ADD_SWISS_QR_CODE')) {
  79. dolibarr_set_const($db, "INVOICE_ADD_SWISS_QR_CODE", GETPOST("INVOICE_ADD_SWISS_QR_CODE", 'alpha'), 'chaine', 0, '', $conf->entity);
  80. if (GETPOST('INVOICE_ADD_SWISS_QR_CODE', 'alpha') != '0') {
  81. dolibarr_del_const($db, "INVOICE_ADD_ZATCA_QR_CODE", $conf->entity);
  82. }
  83. }
  84. if (GETPOSTISSET('INVOICE_CATEGORY_OF_OPERATION')) {
  85. dolibarr_set_const($db, "INVOICE_CATEGORY_OF_OPERATION", GETPOST("INVOICE_CATEGORY_OF_OPERATION", 'int'), 'chaine', 0, '', $conf->entity);
  86. }
  87. if (GETPOSTISSET('INVOICE_SHOW_SHIPPING_ADDRESS')) {
  88. dolibarr_set_const($db, "INVOICE_SHOW_SHIPPING_ADDRESS", GETPOST("INVOICE_SHOW_SHIPPING_ADDRESS", 'int'), 'chaine', 0, '', $conf->entity);
  89. dolibarr_del_const($db, "INVOICE_SHOW_SHIPPING_ADDRESS", $conf->entity);
  90. }
  91. setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
  92. header("Location: ".$_SERVER["PHP_SELF"]."?mainmenu=home&leftmenu=setup");
  93. exit;
  94. }
  95. /*
  96. * View
  97. */
  98. $wikihelp = 'EN:First_setup|FR:Premiers_param&eacute;trages|ES:Primeras_configuraciones';
  99. llxHeader('', $langs->trans("Setup"), $wikihelp);
  100. $form = new Form($db);
  101. $formother = new FormOther($db);
  102. $formadmin = new FormAdmin($db);
  103. print load_fiche_titre($langs->trans("PDF"), '', 'title_setup');
  104. $head = pdf_admin_prepare_head();
  105. print dol_get_fiche_head($head, 'other', '', -1, '');
  106. $tooltiptext = '';
  107. print '<span class="opacitymedium">'.$form->textwithpicto($langs->trans("PDFOtherDesc"), $tooltiptext)."</span><br>\n";
  108. print "<br>\n";
  109. print '<form method="post" action="'.$_SERVER["PHP_SELF"].'">';
  110. print '<input type="hidden" name="token" value="'.newToken().'">';
  111. print '<input type="hidden" name="action" value="update">';
  112. if (isModEnabled('propal')) {
  113. print load_fiche_titre($langs->trans("Proposal"), '', 'proposal');
  114. print '<div class="div-table-responsive-no-min">';
  115. print '<table summary="more" class="noborder centpercent">';
  116. print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("Parameter").'</td><td width="200px">'.$langs->trans("Value").'</td></tr>';
  117. print '<tr class="oddeven"><td>';
  118. print $form->textwithpicto($langs->trans("MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING"), '');
  119. print '</td><td>';
  120. if ($conf->use_javascript_ajax) {
  121. print ajax_constantonoff('MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING');
  122. } else {
  123. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
  124. print $form->selectarray("MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING", $arrval, $conf->global->MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING);
  125. }
  126. print '</td></tr>';
  127. print '<tr class="oddeven"><td>';
  128. print $form->textwithpicto($langs->trans("MAIN_GENERATE_PROPOSALS_WITH_PICTURE"), $langs->trans("RandomlySelectedIfSeveral"));
  129. print '</td><td>';
  130. if ($conf->use_javascript_ajax) {
  131. print ajax_constantonoff('MAIN_GENERATE_PROPOSALS_WITH_PICTURE');
  132. } else {
  133. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
  134. print $form->selectarray("MAIN_GENERATE_PROPOSALS_WITH_PICTURE", $arrval, $conf->global->MAIN_GENERATE_PROPOSALS_WITH_PICTURE);
  135. }
  136. print '</td></tr>';
  137. print '</table>';
  138. print '</div>';
  139. }
  140. if (isModEnabled('supplier_proposal')) {
  141. $langs->load("supplier_proposal");
  142. print load_fiche_titre($langs->trans("SupplierProposal"), '', 'supplier_proposal');
  143. print '<div class="div-table-responsive-no-min">';
  144. print '<table summary="more" class="noborder centpercent">';
  145. print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("Parameter").'</td><td width="200px">'.$langs->trans("Value").'</td></tr>';
  146. print '<tr class="oddeven"><td>';
  147. print $form->textwithpicto($langs->trans("MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE"), '');
  148. print '</td><td>';
  149. if ($conf->use_javascript_ajax) {
  150. print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE');
  151. } else {
  152. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
  153. print $form->selectarray("MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE", $arrval, $conf->global->MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE);
  154. }
  155. print '</td></tr>';
  156. print '<tr class="oddeven"><td>';
  157. print $form->textwithpicto($langs->trans("MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN"), '');
  158. print '</td><td>';
  159. if ($conf->use_javascript_ajax) {
  160. print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN');
  161. } else {
  162. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
  163. print $form->selectarray("MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN", $arrval, $conf->global->MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN);
  164. }
  165. print '</td></tr>';
  166. print '</table>';
  167. print '</div>';
  168. }
  169. if (isModEnabled('supplier_order')) {
  170. $langs->load("supplier_order");
  171. print load_fiche_titre($langs->trans("SupplierOrder"), '', 'supplier_proposal');
  172. print '<div class="div-table-responsive-no-min">';
  173. print '<table summary="more" class="noborder centpercent">';
  174. print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("Parameter").'</td><td width="200px">'.$langs->trans("Value").'</td></tr>';
  175. print '<tr class="oddeven"><td>';
  176. print $form->textwithpicto($langs->trans("MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE"), '');
  177. print '</td><td>';
  178. if ($conf->use_javascript_ajax) {
  179. print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE');
  180. } else {
  181. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
  182. print $form->selectarray("MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE", $arrval, $conf->global->MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE);
  183. }
  184. print '</td></tr>';
  185. print '<tr class="oddeven"><td>';
  186. print $form->textwithpicto($langs->trans("MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN"), '');
  187. print '</td><td>';
  188. if ($conf->use_javascript_ajax) {
  189. print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN');
  190. } else {
  191. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
  192. print $form->selectarray("MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN", $arrval, $conf->global->MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN);
  193. }
  194. print '</td></tr>';
  195. print '</table>';
  196. print '</div>';
  197. }
  198. if (isModEnabled('facture')) {
  199. print load_fiche_titre($langs->trans("Invoices"), '', 'bill');
  200. print '<div class="div-table-responsive-no-min">';
  201. print '<table summary="more" class="noborder centpercent">';
  202. print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("Parameters").'</td><td width="200px">'.$langs->trans("Value").'</td></tr>';
  203. print '<tr class="oddeven"><td>';
  204. print $form->textwithpicto($langs->trans("INVOICE_ADD_ZATCA_QR_CODE"), $langs->trans("INVOICE_ADD_ZATCA_QR_CODEMore"));
  205. print '</td><td>';
  206. if ($conf->use_javascript_ajax) {
  207. print ajax_constantonoff('INVOICE_ADD_ZATCA_QR_CODE');
  208. } else {
  209. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
  210. print $form->selectarray("INVOICE_ADD_ZATCA_QR_CODE", $arrval, getDolGlobalString('INVOICE_ADD_ZATCA_QR_CODE'));
  211. }
  212. print '</td></tr>';
  213. print '<tr class="oddeven"><td>';
  214. if (getDolGlobalString('INVOICE_ADD_SWISS_QR_CODE') == 'bottom') {
  215. print $form->textwithpicto($langs->trans("INVOICE_ADD_SWISS_QR_CODE"), $langs->trans("INVOICE_ADD_SWISS_QR_CODEMore"));
  216. } else {
  217. print $langs->trans("INVOICE_ADD_SWISS_QR_CODE");
  218. }
  219. print '</td><td>';
  220. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
  221. if (getDolGlobalString('MAIN_FEATURES_LEVEL') >= 1) {
  222. $arrval['bottom'] = $langs->trans("AtBottomOfPage").' ('.$langs->trans("Experimental").' - Need PHP 8.1+ and some PHP libs)';
  223. }
  224. print $form->selectarray("INVOICE_ADD_SWISS_QR_CODE", $arrval, getDolGlobalString('INVOICE_ADD_SWISS_QR_CODE'));
  225. print '</td></tr>';
  226. // Mention category of operations
  227. // French Decret n°2099-1299 2022-10-07
  228. print '<tr class="oddeven"><td>';
  229. print $form->textwithpicto($langs->trans("InvoiceOptionCategoryOfOperations"), $langs->trans('InvoiceOptionCategoryOfOperationsHelp'), 1);
  230. print '</td><td>';
  231. $arrval = array('0'=>$langs->trans("No"),
  232. '1'=>$langs->trans("InvoiceOptionCategoryOfOperationsYes1"),
  233. '2'=>$langs->trans("InvoiceOptionCategoryOfOperationsYes2")
  234. );
  235. print $form->selectarray("INVOICE_CATEGORY_OF_OPERATION", $arrval, $conf->global->INVOICE_CATEGORY_OF_OPERATION, 0, 0, 0, '', 0, 0, 0, '', 'minwidth75imp');
  236. print '</td></tr>';
  237. print '<tr class="oddeven"><td>';
  238. print $form->textwithpicto($langs->trans("INVOICE_SHOW_SHIPPING_ADDRESS"), $langs->trans("INVOICE_SHOW_SHIPPING_ADDRESSMore"));
  239. print '</td><td>';
  240. if ($conf->use_javascript_ajax) {
  241. print ajax_constantonoff('INVOICE_SHOW_SHIPPING_ADDRESS');
  242. } else {
  243. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
  244. print $form->selectarray("INVOICE_SHOW_SHIPPING_ADDRESS", $arrval, $conf->global->INVOICE_SHOW_SHIPPING_ADDRESS);
  245. }
  246. print '</td></tr>';
  247. print '</table>';
  248. print '</div>';
  249. }
  250. if (isModEnabled('reception')) {
  251. print load_fiche_titre($langs->trans("Receptions"), '', 'reception');
  252. print '<div class="div-table-responsive-no-min">';
  253. print '<table summary="more" class="noborder centpercent">';
  254. print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("Parameters").'</td><td width="200px">'.$langs->trans("Value").'</td></tr>';
  255. print '<tr class="oddeven"><td>';
  256. print $langs->trans("RECEPTION_PDF_HIDE_ORDERED");
  257. print '</td><td>';
  258. if ($conf->use_javascript_ajax) {
  259. print ajax_constantonoff('RECEPTION_PDF_HIDE_ORDERED');
  260. } else {
  261. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
  262. print $form->selectarray("RECEPTION_PDF_HIDE_ORDERED", $arrval, $conf->global->RECEPTION_PDF_HIDE_ORDERED);
  263. }
  264. print '</td></tr>';
  265. print '<tr class="oddeven"><td>';
  266. print $langs->trans("MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT");
  267. print '</td><td>';
  268. if ($conf->use_javascript_ajax) {
  269. print ajax_constantonoff('MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT');
  270. } else {
  271. $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
  272. print $form->selectarray("MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT", $arrval, $conf->global->MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT);
  273. }
  274. print '</td></tr>';
  275. print '</table>';
  276. print '</div>';
  277. }
  278. print '<br><div class="center">';
  279. print '<input class="button button-save" type="submit" name="save" value="'.$langs->trans("Save").'">';
  280. print '</div>';
  281. print '</form>';
  282. // End of page
  283. llxFooter();
  284. $db->close();