Merge branch 'develop' into develop#6
This commit is contained in:
commit
e698d20789
@ -13,6 +13,7 @@ NEW: PHP 8.1 compatibility
|
|||||||
NEW: Support for recurring purchase invoices.
|
NEW: Support for recurring purchase invoices.
|
||||||
NEW: #20292 Include German public holidays
|
NEW: #20292 Include German public holidays
|
||||||
NEW: Can show ZATCA QRCode on PDFs
|
NEW: Can show ZATCA QRCode on PDFs
|
||||||
|
NEW: Can show Swiss QR Code on PDFs
|
||||||
NEW: #17123 added ExtraFields for Stock Mouvement
|
NEW: #17123 added ExtraFields for Stock Mouvement
|
||||||
NEW: #20609 : new massaction to assign a sale representatives on a selection of thirdparties
|
NEW: #20609 : new massaction to assign a sale representatives on a selection of thirdparties
|
||||||
NEW: #20653 edit discount pourcentage for all lines in one shot
|
NEW: #20653 edit discount pourcentage for all lines in one shot
|
||||||
@ -197,7 +198,7 @@ Following changes may create regressions for some external modules, but were nec
|
|||||||
* Method fetch_all_resources(), fetch_all_used(), fetch_all_available() of DolResource has been removed (they were not used by core code).
|
* Method fetch_all_resources(), fetch_all_used(), fetch_all_available() of DolResource has been removed (they were not used by core code).
|
||||||
* Method fetch_all of DolResource has been renamed into fetchAll() to match naming conventions.
|
* Method fetch_all of DolResource has been renamed into fetchAll() to match naming conventions.
|
||||||
* The hook 'upgrade' and 'doUpgrade2" has been renamed 'doUpgradeBefore' and 'doUpgradeAfterDB'. A new trigger 'doUpgradeAfterFiles' has been introduced.
|
* The hook 'upgrade' and 'doUpgrade2" has been renamed 'doUpgradeBefore' and 'doUpgradeAfterDB'. A new trigger 'doUpgradeAfterFiles' has been introduced.
|
||||||
|
* The context hook 'suppliercard' when on the supplier tab of a thirdparty has been renamed into 'thirdpartysupplier'
|
||||||
|
|
||||||
|
|
||||||
***** ChangeLog for 15.0.2 compared to 15.0.1 *****
|
***** ChangeLog for 15.0.2 compared to 15.0.1 *****
|
||||||
|
|||||||
@ -20,3 +20,10 @@ https://www.pwc.com/m1/en/services/tax/me-tax-legal-news/2021/saudi-arabia-guide
|
|||||||
https://www.tecklenborgh.com/post/ksa-zatca-publishes-guide-on-how-to-develop-a-fatoora-compliant-qr-code
|
https://www.tecklenborgh.com/post/ksa-zatca-publishes-guide-on-how-to-develop-a-fatoora-compliant-qr-code
|
||||||
|
|
||||||
Method to encode/decode ZATCA string is available in test/phpunit/BarcodeTest.php
|
Method to encode/decode ZATCA string is available in test/phpunit/BarcodeTest.php
|
||||||
|
|
||||||
|
|
||||||
|
* FOR QR-Bill in switzerland
|
||||||
|
----------------------------
|
||||||
|
Syntax of QR Code https://www.swiss-qr-invoice.org/fr/
|
||||||
|
Syntax of complentary field named "structured information of invoice S1": https://www.swiss-qr-invoice.org/downloads/qr-bill-s1-syntax-fr.pdf
|
||||||
|
To test/validate: https://www.swiss-qr-invoice.org/validator/
|
||||||
@ -350,6 +350,8 @@ if ($resql) {
|
|||||||
</script>';
|
</script>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$newcardbutton = '';
|
||||||
|
|
||||||
print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">';
|
print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">';
|
||||||
if ($optioncss != '') {
|
if ($optioncss != '') {
|
||||||
print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
|
print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
|
||||||
|
|||||||
@ -98,7 +98,6 @@ if (!empty($conf->loan->enabled)) {
|
|||||||
$list_account[] = 'ACCOUNTING_ACCOUNT_SUSPENSE';
|
$list_account[] = 'ACCOUNTING_ACCOUNT_SUSPENSE';
|
||||||
if (!empty($conf->societe->enabled)) {
|
if (!empty($conf->societe->enabled)) {
|
||||||
$list_account[] = '---Deposits---';
|
$list_account[] = '---Deposits---';
|
||||||
$list_account[] = 'ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -106,7 +105,7 @@ if (!empty($conf->societe->enabled)) {
|
|||||||
*/
|
*/
|
||||||
if ($action == 'update') {
|
if ($action == 'update') {
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
// Process $list_account_main
|
||||||
foreach ($list_account_main as $constname) {
|
foreach ($list_account_main as $constname) {
|
||||||
$constvalue = GETPOST($constname, 'alpha');
|
$constvalue = GETPOST($constname, 'alpha');
|
||||||
|
|
||||||
@ -114,7 +113,7 @@ if ($action == 'update') {
|
|||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Process $list_account
|
||||||
foreach ($list_account as $constname) {
|
foreach ($list_account as $constname) {
|
||||||
$reg = array();
|
$reg = array();
|
||||||
if (preg_match('/---(.*)---/', $constname, $reg)) { // This is a separator
|
if (preg_match('/---(.*)---/', $constname, $reg)) { // This is a separator
|
||||||
@ -128,6 +127,13 @@ if ($action == 'update') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$constname = 'ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT';
|
||||||
|
$constvalue = GETPOST($constname, 'int');
|
||||||
|
if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
|
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
|
||||||
} else {
|
} else {
|
||||||
@ -195,7 +201,8 @@ foreach ($list_account_main as $key) {
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
// Value
|
// Value
|
||||||
print '<td class="right">'; // Do not force class=right, or it align also the content of the select box
|
print '<td class="right">'; // Do not force class=right, or it align also the content of the select box
|
||||||
print $formaccounting->select_account($conf->global->$key, $key, 1, '', 1, 1, 'minwidth100 maxwidth300 maxwidthonsmartphone', 'accountsmain');
|
$key_value = getDolGlobalString($key);
|
||||||
|
print $formaccounting->select_account($key_value, $key, 1, '', 1, 1, 'minwidth100 maxwidth300 maxwidthonsmartphone', 'accountsmain');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
@ -246,10 +253,24 @@ foreach ($list_account as $key) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Customer deposit account
|
||||||
|
print '<tr class="oddeven value">';
|
||||||
|
// Param
|
||||||
|
print '<td>';
|
||||||
|
print img_picto('', 'bill', 'class="pictofixedwidth"') . $langs->trans('ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT');
|
||||||
|
print '</td>';
|
||||||
|
// Value
|
||||||
|
print '<td class="right">'; // Do not force class=right, or it align also the content of the select box
|
||||||
|
print $formaccounting->select_account(getDolGlobalString('ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT'), 'ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT', 1, '', 1, 1, 'minwidth100 maxwidth300 maxwidthonsmartphone', 'accounts');
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
|
||||||
if (!empty($conf->societe->enabled)) {
|
if (!empty($conf->societe->enabled)) {
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>' . img_picto('', 'bill', 'class="pictofixedwidth"') . $langs->trans("UseAuxiliaryAccountOnCustomerDeposit") . '</td>';
|
print '<td>' . img_picto('', 'bill', 'class="pictofixedwidth"') . $langs->trans("UseAuxiliaryAccountOnCustomerDeposit") . '</td>';
|
||||||
if (!empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER_USE_AUXILIARY_ON_DEPOSIT)) {
|
if (getDolGlobalInt('ACCOUNTING_ACCOUNT_CUSTOMER_USE_AUXILIARY_ON_DEPOSIT')) {
|
||||||
print '<td class="right"><a class="reposition" href="' . $_SERVER['PHP_SELF'] . '?token=' . newToken() . '&action=setdisableauxiliaryaccountoncustomerdeposit&value=0">';
|
print '<td class="right"><a class="reposition" href="' . $_SERVER['PHP_SELF'] . '?token=' . newToken() . '&action=setdisableauxiliaryaccountoncustomerdeposit&value=0">';
|
||||||
print img_picto($langs->trans("Activated"), 'switch_on', '', false, 0, 0, '', 'warning');
|
print img_picto($langs->trans("Activated"), 'switch_on', '', false, 0, 0, '', 'warning');
|
||||||
print '</a></td>';
|
print '</a></td>';
|
||||||
@ -264,7 +285,7 @@ if (!empty($conf->societe->enabled)) {
|
|||||||
print "</table>\n";
|
print "</table>\n";
|
||||||
print "</div>\n";
|
print "</div>\n";
|
||||||
|
|
||||||
print '<div class="center"><input type="submit" class="button button-edit" name="button" value="'.$langs->trans('Modify').'"></div>';
|
print '<div class="center"><input type="submit" class="button button-edit" name="button" value="'.$langs->trans('Save').'"></div>';
|
||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
|
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2017 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
* Copyright (C) 2013-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
|
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
|
||||||
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||||
* Copyright (C) 2017-2018 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2017-2018 Frédéric France <frederic.france@netlogic.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -211,7 +211,8 @@ if ($num) {
|
|||||||
|
|
||||||
// Value
|
// Value
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="text" size="20" id="'.$key.'" name="'.$key.'" value="'.$conf->global->$key.'">';
|
$key_value = getDolGlobalString($conf->global->$key, $conf->global->$key);
|
||||||
|
print '<input type="text" size="20" id="'.$key.'" name="'.$key.'" value="'.$key_value.'">';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -409,7 +409,7 @@ foreach ($list_binding as $key) {
|
|||||||
// Value
|
// Value
|
||||||
print '<td class="right">';
|
print '<td class="right">';
|
||||||
if ($key == 'ACCOUNTING_DATE_START_BINDING') {
|
if ($key == 'ACCOUNTING_DATE_START_BINDING') {
|
||||||
print $form->selectDate(($conf->global->$key ? $db->idate($conf->global->$key) : -1), $key, 0, 0, 1);
|
print $form->selectDate((!empty($conf->global->$key) ? $db->idate($conf->global->$key) : -1), $key, 0, 0, 1);
|
||||||
} elseif ($key == 'ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER') {
|
} elseif ($key == 'ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER') {
|
||||||
$array = array(0=>$langs->trans("PreviousMonth"), 1=>$langs->trans("CurrentMonth"), 2=>$langs->trans("Fiscalyear"));
|
$array = array(0=>$langs->trans("PreviousMonth"), 1=>$langs->trans("CurrentMonth"), 2=>$langs->trans("Fiscalyear"));
|
||||||
print $form->selectarray($key, $array, (isset($conf->global->ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER) ? $conf->global->ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER : 0));
|
print $form->selectarray($key, $array, (isset($conf->global->ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER) ? $conf->global->ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER : 0));
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2017 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
/* Copyright (C) 2017-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -76,6 +76,8 @@ if (empty($sortorder)) {
|
|||||||
|
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
|
$search_country_id = GETPOST('search_country_id', 'int');
|
||||||
|
|
||||||
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
||||||
$hookmanager->initHooks(array('admin'));
|
$hookmanager->initHooks(array('admin'));
|
||||||
|
|
||||||
|
|||||||
@ -132,6 +132,7 @@ $search_not_reconciled = GETPOST('search_not_reconciled', 'alpha');
|
|||||||
$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : (empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION) ? $conf->liste_limit : $conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION);
|
$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : (empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION) ? $conf->liste_limit : $conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION);
|
||||||
$sortfield = GETPOST('sortfield', 'aZ09comma');
|
$sortfield = GETPOST('sortfield', 'aZ09comma');
|
||||||
$sortorder = GETPOST('sortorder', 'aZ09comma');
|
$sortorder = GETPOST('sortorder', 'aZ09comma');
|
||||||
|
$optioncss = GETPOST('optioncss', 'alpha');
|
||||||
$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
|
$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
|
||||||
if (empty($page) || $page < 0) {
|
if (empty($page) || $page < 0) {
|
||||||
$page = 0;
|
$page = 0;
|
||||||
@ -913,6 +914,8 @@ if ($massactionbutton && $contextpage != 'poslist') {
|
|||||||
$selectedfields .= $form->showCheckAddButtons('checkforselect', 1);
|
$selectedfields .= $form->showCheckAddButtons('checkforselect', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$moreforfilter = '';
|
||||||
|
|
||||||
$parameters = array();
|
$parameters = array();
|
||||||
$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook
|
||||||
if (empty($reshook)) {
|
if (empty($reshook)) {
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
/* Copyright (C) 2016 Neil Orley <neil.orley@oeris.fr>
|
/* Copyright (C) 2016 Neil Orley <neil.orley@oeris.fr>
|
||||||
* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
|
* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2020 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2020 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2013-2021 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
* Copyright (C) 2013-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -40,6 +40,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
|||||||
$langs->loadLangs(array("accountancy", "compta"));
|
$langs->loadLangs(array("accountancy", "compta"));
|
||||||
|
|
||||||
$action = GETPOST('action', 'aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
|
$socid = GETPOST('socid', 'int');
|
||||||
$massaction = GETPOST('massaction', 'alpha');
|
$massaction = GETPOST('massaction', 'alpha');
|
||||||
$confirm = GETPOST('confirm', 'alpha');
|
$confirm = GETPOST('confirm', 'alpha');
|
||||||
$toselect = GETPOST('toselect', 'array');
|
$toselect = GETPOST('toselect', 'array');
|
||||||
@ -104,6 +105,7 @@ if (GETPOST("button_delmvt_x") || GETPOST("button_delmvt.x") || GETPOST("button_
|
|||||||
$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : (empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION) ? $conf->liste_limit : $conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION);
|
$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : (empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION) ? $conf->liste_limit : $conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION);
|
||||||
$sortfield = GETPOST('sortfield', 'aZ09comma');
|
$sortfield = GETPOST('sortfield', 'aZ09comma');
|
||||||
$sortorder = GETPOST('sortorder', 'aZ09comma');
|
$sortorder = GETPOST('sortorder', 'aZ09comma');
|
||||||
|
$optioncss = GETPOST('optioncss', 'alpha');
|
||||||
$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
|
$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
|
||||||
if (empty($page) || $page < 0) {
|
if (empty($page) || $page < 0) {
|
||||||
$page = 0;
|
$page = 0;
|
||||||
@ -571,6 +573,7 @@ $num = count($object->lines);
|
|||||||
//}
|
//}
|
||||||
|
|
||||||
// Print form confirm
|
// Print form confirm
|
||||||
|
$formconfirm = '';
|
||||||
print $formconfirm;
|
print $formconfirm;
|
||||||
|
|
||||||
// List of mass actions available
|
// List of mass actions available
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2013-2021 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
* Copyright (C) 2013-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -174,7 +174,9 @@ if ($action == 'validatehistory') {
|
|||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa2 ON " . $alias_product_perentity . ".accountancy_code_sell_intra = aa2.account_number AND aa2.active = 1 AND aa2.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa2.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa2 ON " . $alias_product_perentity . ".accountancy_code_sell_intra = aa2.account_number AND aa2.active = 1 AND aa2.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa2.entity = ".$conf->entity;
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa3 ON " . $alias_product_perentity . ".accountancy_code_sell_export = aa3.account_number AND aa3.active = 1 AND aa3.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa3.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa3 ON " . $alias_product_perentity . ".accountancy_code_sell_export = aa3.account_number AND aa3.active = 1 AND aa3.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa3.entity = ".$conf->entity;
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa4 ON " . $alias_societe_perentity . ".accountancy_code_sell = aa4.account_number AND aa4.active = 1 AND aa4.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa4.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa4 ON " . $alias_societe_perentity . ".accountancy_code_sell = aa4.account_number AND aa4.active = 1 AND aa4.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa4.entity = ".$conf->entity;
|
||||||
$sql .= " WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0 AND l.product_type <= 2 AND f.entity = ".((int) $conf->entity);
|
$sql .= " WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0";
|
||||||
|
$sql .= " AND l.product_type <= 2";
|
||||||
|
$sql .= " AND f.entity IN (".getEntity('invoice', 0).")"; // We don't share object for accountancy
|
||||||
if (!empty($conf->global->ACCOUNTING_DATE_START_BINDING)) {
|
if (!empty($conf->global->ACCOUNTING_DATE_START_BINDING)) {
|
||||||
$sql .= " AND f.datef >= '".$db->idate($conf->global->ACCOUNTING_DATE_START_BINDING)."'";
|
$sql .= " AND f.datef >= '".$db->idate($conf->global->ACCOUNTING_DATE_START_BINDING)."'";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -158,8 +158,8 @@ if (empty($reshook)) {
|
|||||||
|
|
||||||
// Mass actions
|
// Mass actions
|
||||||
$objectclass = 'AccountingAccount';
|
$objectclass = 'AccountingAccount';
|
||||||
$permissiontoread = $user->rights->accounting->read;
|
$permissiontoread = $user->hasRight('accounting', 'read');
|
||||||
$permissiontodelete = $user->rights->accounting->delete;
|
$permissiontodelete = $user->hasRight('accounting', 'delete');
|
||||||
$uploaddir = $conf->accounting->dir_output;
|
$uploaddir = $conf->accounting->dir_output;
|
||||||
include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
|
||||||
}
|
}
|
||||||
@ -469,7 +469,7 @@ if ($result) {
|
|||||||
|
|
||||||
print '<span class="opacitymedium">'.$langs->trans("DescVentilTodoCustomer").'</span></br><br>';
|
print '<span class="opacitymedium">'.$langs->trans("DescVentilTodoCustomer").'</span></br><br>';
|
||||||
|
|
||||||
if ($msg) {
|
if (!empty($msg)) {
|
||||||
print $msg.'<br>';
|
print $msg.'<br>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -150,8 +150,8 @@ if (empty($reshook)) {
|
|||||||
// Mass actions
|
// Mass actions
|
||||||
$objectclass = 'ExpenseReport';
|
$objectclass = 'ExpenseReport';
|
||||||
$objectlabel = 'ExpenseReport';
|
$objectlabel = 'ExpenseReport';
|
||||||
$permissiontoread = $user->rights->expensereport->read;
|
$permissiontoread = $user->hasRight('accounting', 'read');
|
||||||
$permissiontodelete = $user->rights->expensereport->delete;
|
$permissiontodelete = $user->hasRight('accounting', 'delete');
|
||||||
$uploaddir = $conf->expensereport->dir_output;
|
$uploaddir = $conf->expensereport->dir_output;
|
||||||
include DOL_DOCUMENT_ROOT . '/core/actions_massactions.inc.php';
|
include DOL_DOCUMENT_ROOT . '/core/actions_massactions.inc.php';
|
||||||
}
|
}
|
||||||
@ -370,7 +370,7 @@ if ($result) {
|
|||||||
|
|
||||||
print '<span class="opacitymedium">'.$langs->trans("DescVentilTodoExpenseReport").'</span></br><br>';
|
print '<span class="opacitymedium">'.$langs->trans("DescVentilTodoExpenseReport").'</span></br><br>';
|
||||||
|
|
||||||
if ($msg) {
|
if (!empty($msg)) {
|
||||||
print $msg.'<br>';
|
print $msg.'<br>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -305,8 +305,16 @@ if ($result) {
|
|||||||
|
|
||||||
// get_url may return -1 which is not traversable
|
// get_url may return -1 which is not traversable
|
||||||
if (is_array($links) && count($links) > 0) {
|
if (is_array($links) && count($links) > 0) {
|
||||||
|
$is_sc = false;
|
||||||
|
foreach ($links as $v) {
|
||||||
|
if ($v['type'] == 'sc') {
|
||||||
|
$is_sc = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
// Now loop on each link of record in bank (code similar to bankentries_list.php)
|
// Now loop on each link of record in bank (code similar to bankentries_list.php)
|
||||||
foreach ($links as $key => $val) {
|
foreach ($links as $key => $val) {
|
||||||
|
if ($links[$key]['type'] == 'user' && !$is_sc) continue;
|
||||||
if (in_array($links[$key]['type'], array('sc', 'payment_sc', 'payment', 'payment_supplier', 'payment_vat', 'payment_expensereport', 'banktransfert', 'payment_donation', 'member', 'payment_loan', 'payment_salary', 'payment_various'))) {
|
if (in_array($links[$key]['type'], array('sc', 'payment_sc', 'payment', 'payment_supplier', 'payment_vat', 'payment_expensereport', 'banktransfert', 'payment_donation', 'member', 'payment_loan', 'payment_salary', 'payment_various'))) {
|
||||||
// So we excluded 'company' and 'user' here. We want only payment lines
|
// So we excluded 'company' and 'user' here. We want only payment lines
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2021 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2021 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2013-2021 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
* Copyright (C) 2013-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -171,8 +171,10 @@ if ($action == 'validatehistory') {
|
|||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON " . $alias_product_perentity . ".accountancy_code_buy = aa.account_number AND aa.active = 1 AND aa.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON " . $alias_product_perentity . ".accountancy_code_buy = aa.account_number AND aa.active = 1 AND aa.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa.entity = ".$conf->entity;
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa2 ON " . $alias_product_perentity . ".accountancy_code_buy_intra = aa2.account_number AND aa2.active = 1 AND aa2.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa2.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa2 ON " . $alias_product_perentity . ".accountancy_code_buy_intra = aa2.account_number AND aa2.active = 1 AND aa2.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa2.entity = ".$conf->entity;
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa3 ON " . $alias_product_perentity . ".accountancy_code_buy_export = aa3.account_number AND aa3.active = 1 AND aa3.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa3.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa3 ON " . $alias_product_perentity . ".accountancy_code_buy_export = aa3.account_number AND aa3.active = 1 AND aa3.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa3.entity = ".$conf->entity;
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa4 ON " . $alias_societe_perentity . ".accountancy_code_buy = aa4.account_number AND aa4.active = 1 AND aa4.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa4.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa4 ON " . $alias_product_perentity . ".accountancy_code_buy = aa4.account_number AND aa4.active = 1 AND aa4.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa4.entity = ".$conf->entity;
|
||||||
$sql .= " WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0 AND l.product_type <= 2 AND f.entity = ".((int) $conf->entity);
|
$sql .= " WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0";
|
||||||
|
$sql .= " AND l.product_type <= 2";
|
||||||
|
$sql .= " AND f.entity IN (".getEntity('facture_fourn', 0).")"; // We don't share object for accountancy
|
||||||
if (!empty($conf->global->ACCOUNTING_DATE_START_BINDING)) {
|
if (!empty($conf->global->ACCOUNTING_DATE_START_BINDING)) {
|
||||||
$sql .= " AND f.datef >= '".$db->idate($conf->global->ACCOUNTING_DATE_START_BINDING)."'";
|
$sql .= " AND f.datef >= '".$db->idate($conf->global->ACCOUNTING_DATE_START_BINDING)."'";
|
||||||
}
|
}
|
||||||
@ -373,10 +375,14 @@ $sql .= " AND ff.fk_statut > 0";
|
|||||||
$sql .= " AND ffd.product_type <= 2";
|
$sql .= " AND ffd.product_type <= 2";
|
||||||
$sql .= " AND ff.entity IN (".getEntity('facture_fourn', 0).")"; // We don't share object for accountancy
|
$sql .= " AND ff.entity IN (".getEntity('facture_fourn', 0).")"; // We don't share object for accountancy
|
||||||
$sql .= " AND aa.account_number IS NULL";
|
$sql .= " AND aa.account_number IS NULL";
|
||||||
|
if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
|
||||||
|
$sql .= " AND ff.type IN (".FactureFournisseur::TYPE_STANDARD.",".FactureFournisseur::TYPE_REPLACEMENT.",".FactureFournisseur::TYPE_CREDIT_NOTE.")";
|
||||||
|
} else {
|
||||||
|
$sql .= " AND ff.type IN (".FactureFournisseur::TYPE_STANDARD.",".FactureFournisseur::TYPE_REPLACEMENT.",".FactureFournisseur::TYPE_CREDIT_NOTE.",".FactureFournisseur::TYPE_DEPOSIT.")";
|
||||||
|
}
|
||||||
$sql .= " GROUP BY ffd.fk_code_ventilation,aa.account_number,aa.label";
|
$sql .= " GROUP BY ffd.fk_code_ventilation,aa.account_number,aa.label";
|
||||||
$sql .= ' ORDER BY aa.account_number';
|
|
||||||
|
|
||||||
dol_syslog('htdocs/accountancy/supplier/index.php');
|
dol_syslog('htdocs/accountancy/supplier/index.php', LOG_DEBUG);
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
$num = $db->num_rows($resql);
|
$num = $db->num_rows($resql);
|
||||||
@ -474,11 +480,17 @@ $sql .= " AND ff.datef <= '".$db->idate($search_date_end)."'";
|
|||||||
if (!empty($conf->global->ACCOUNTING_DATE_START_BINDING)) {
|
if (!empty($conf->global->ACCOUNTING_DATE_START_BINDING)) {
|
||||||
$sql .= " AND ff.datef >= '".$db->idate($conf->global->ACCOUNTING_DATE_START_BINDING)."'";
|
$sql .= " AND ff.datef >= '".$db->idate($conf->global->ACCOUNTING_DATE_START_BINDING)."'";
|
||||||
}
|
}
|
||||||
|
$sql .= " AND ff.entity IN (".getEntity('facture_fourn', 0).")"; // We don't share object for accountancy
|
||||||
$sql .= " AND ff.fk_statut > 0";
|
$sql .= " AND ff.fk_statut > 0";
|
||||||
$sql .= " AND ffd.product_type <= 2";
|
$sql .= " AND ffd.product_type <= 2";
|
||||||
$sql .= " AND ff.entity IN (".getEntity('facture_fourn', 0).")"; // We don't share object for accountancy
|
if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
|
||||||
|
$sql .= " AND ff.type IN (".FactureFournisseur::TYPE_STANDARD.", ".FactureFournisseur::TYPE_REPLACEMENT.", ".FactureFournisseur::TYPE_CREDIT_NOTE.")";
|
||||||
|
} else {
|
||||||
|
$sql .= " AND ff.type IN (".FactureFournisseur::TYPE_STANDARD.", ".FactureFournisseur::TYPE_REPLACEMENT.", ".FactureFournisseur::TYPE_CREDIT_NOTE.", ".FactureFournisseur::TYPE_DEPOSIT.")";
|
||||||
|
}
|
||||||
$sql .= " AND aa.account_number IS NOT NULL";
|
$sql .= " AND aa.account_number IS NOT NULL";
|
||||||
$sql .= " GROUP BY ffd.fk_code_ventilation,aa.account_number,aa.label";
|
$sql .= " GROUP BY ffd.fk_code_ventilation,aa.account_number,aa.label";
|
||||||
|
$sql .= ' ORDER BY aa.account_number';
|
||||||
|
|
||||||
dol_syslog('htdocs/accountancy/supplier/index.php');
|
dol_syslog('htdocs/accountancy/supplier/index.php');
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
@ -494,13 +506,15 @@ if ($resql) {
|
|||||||
print length_accountg($row[0]);
|
print length_accountg($row[0]);
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td>';
|
|
||||||
|
print '<td class="left">';
|
||||||
if ($row[0] == 'tobind') {
|
if ($row[0] == 'tobind') {
|
||||||
print $langs->trans("UseMenuToSetBindindManualy", DOL_URL_ROOT.'/accountancy/supplier/list.php?search_year='.((int) $y), $langs->transnoentitiesnoconv("ToBind"));
|
print $langs->trans("UseMenuToSetBindindManualy", DOL_URL_ROOT.'/accountancy/supplier/list.php?search_year='.((int) $y), $langs->transnoentitiesnoconv("ToBind"));
|
||||||
} else {
|
} else {
|
||||||
print $row[1];
|
print $row[1];
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
for ($i = 2; $i <= 13; $i++) {
|
for ($i = 2; $i <= 13; $i++) {
|
||||||
print '<td class="right nowraponall amount">';
|
print '<td class="right nowraponall amount">';
|
||||||
print price($row[$i]);
|
print price($row[$i]);
|
||||||
@ -523,7 +537,6 @@ print "</table>\n";
|
|||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if ($conf->global->MAIN_FEATURES_LEVEL > 0) { // This part of code looks strange. Why showing a report that should rely on result of this step ?
|
if ($conf->global->MAIN_FEATURES_LEVEL > 0) { // This part of code looks strange. Why showing a report that should rely on result of this step ?
|
||||||
print '<br>';
|
print '<br>';
|
||||||
print '<br>';
|
print '<br>';
|
||||||
@ -560,9 +573,14 @@ if ($conf->global->MAIN_FEATURES_LEVEL > 0) { // This part of code looks strange
|
|||||||
if (!empty($conf->global->ACCOUNTING_DATE_START_BINDING)) {
|
if (!empty($conf->global->ACCOUNTING_DATE_START_BINDING)) {
|
||||||
$sql .= " AND ff.datef >= '".$db->idate($conf->global->ACCOUNTING_DATE_START_BINDING)."'";
|
$sql .= " AND ff.datef >= '".$db->idate($conf->global->ACCOUNTING_DATE_START_BINDING)."'";
|
||||||
}
|
}
|
||||||
|
$sql .= " AND ff.entity IN (".getEntity('facture_fourn', 0).")"; // We don't share object for accountancy
|
||||||
$sql .= " AND ff.fk_statut > 0";
|
$sql .= " AND ff.fk_statut > 0";
|
||||||
$sql .= " AND ffd.product_type <= 2";
|
$sql .= " AND ffd.product_type <= 2";
|
||||||
$sql .= " AND ff.entity IN (".getEntity('facture_fourn', 0).")"; // We don't share object for accountancy
|
if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
|
||||||
|
$sql .= " AND ff.type IN (".FactureFournisseur::TYPE_STANDARD.", ".FactureFournisseur::TYPE_REPLACEMENT.", ".FactureFournisseur::TYPE_CREDIT_NOTE.")";
|
||||||
|
} else {
|
||||||
|
$sql .= " AND ff.type IN (".FactureFournisseur::TYPE_STANDARD.", ".FactureFournisseur::TYPE_REPLACEMENT.", ".FactureFournisseur::TYPE_CREDIT_NOTE.", ".FactureFournisseur::TYPE_DEPOSIT.")";
|
||||||
|
}
|
||||||
|
|
||||||
dol_syslog('htdocs/accountancy/supplier/index.php');
|
dol_syslog('htdocs/accountancy/supplier/index.php');
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
|
|||||||
@ -384,7 +384,7 @@ if ($result) {
|
|||||||
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
||||||
print '<input type="hidden" name="page" value="'.$page.'">';
|
print '<input type="hidden" name="page" value="'.$page.'">';
|
||||||
|
|
||||||
print_barre_liste($langs->trans("InvoiceLinesDone"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num_lines, $nbtotalofrecords, 'title_accountancy', 0, '', '', $limit);
|
print_barre_liste($langs->trans("InvoiceLinesDone"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num_lines, $nbtotalofrecords, 'title_accountancy', 0, '', '', $limit);
|
||||||
print '<span class="opacitymedium">'.$langs->trans("DescVentilDoneSupplier").'</span><br>';
|
print '<span class="opacitymedium">'.$langs->trans("DescVentilDoneSupplier").'</span><br>';
|
||||||
|
|
||||||
print '<br><div class="inline-block divButAction paddingbottom">'.$langs->trans("ChangeAccount").' ';
|
print '<br><div class="inline-block divButAction paddingbottom">'.$langs->trans("ChangeAccount").' ';
|
||||||
|
|||||||
@ -161,8 +161,8 @@ if (empty($reshook)) {
|
|||||||
|
|
||||||
// Mass actions
|
// Mass actions
|
||||||
$objectclass = 'AccountingAccount';
|
$objectclass = 'AccountingAccount';
|
||||||
$permissiontoread = $user->rights->accounting->read;
|
$permissiontoread = $user->hasRight('accounting', 'read');
|
||||||
$permissiontodelete = $user->rights->accounting->delete;
|
$permissiontodelete = $user->hasRight('accounting', 'delete');
|
||||||
$uploaddir = $conf->accounting->dir_output;
|
$uploaddir = $conf->accounting->dir_output;
|
||||||
include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
|
||||||
}
|
}
|
||||||
@ -477,7 +477,7 @@ if ($result) {
|
|||||||
|
|
||||||
print '<span class="opacitymedium">'.$langs->trans("DescVentilTodoCustomer").'</span></br><br>';
|
print '<span class="opacitymedium">'.$langs->trans("DescVentilTodoCustomer").'</span></br><br>';
|
||||||
|
|
||||||
if ($msg) {
|
if (!empty($msg)) {
|
||||||
print $msg.'<br>';
|
print $msg.'<br>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1280,7 +1280,14 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
print '<tr><td><input type="checkbox" class="flat photodelete" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>';
|
print '<tr><td><input type="checkbox" class="flat photodelete" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>';
|
||||||
}
|
}
|
||||||
print '<tr><td>'.$langs->trans("PhotoFile").'</td></tr>';
|
print '<tr><td>'.$langs->trans("PhotoFile").'</td></tr>';
|
||||||
print '<tr><td><input type="file" class="flat" name="photo" id="photoinput"></td></tr>';
|
print '<tr><td>';
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
print '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
|
print '<input type="file" class="flat" name="photo" id="photoinput">';
|
||||||
|
print '</td></tr>';
|
||||||
print '</table>';
|
print '</table>';
|
||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|||||||
@ -477,6 +477,11 @@ if (!empty($conf->barcode->enabled)) {
|
|||||||
// Logo
|
// Logo
|
||||||
print '<tr class="oddeven"><td><label for="logo">'.$form->textwithpicto($langs->trans("Logo"), 'png, jpg').'</label></td><td>';
|
print '<tr class="oddeven"><td><label for="logo">'.$form->textwithpicto($langs->trans("Logo"), 'png, jpg').'</label></td><td>';
|
||||||
print '<div class="centpercent nobordernopadding valignmiddle "><div class="inline-block marginrightonly">';
|
print '<div class="centpercent nobordernopadding valignmiddle "><div class="inline-block marginrightonly">';
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
print '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
print '<input type="file" class="flat minwidth100 maxwidthinputfileonsmartphone" name="logo" id="logo" accept="image/*">';
|
print '<input type="file" class="flat minwidth100 maxwidthinputfileonsmartphone" name="logo" id="logo" accept="image/*">';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
if (!empty($mysoc->logo_small)) {
|
if (!empty($mysoc->logo_small)) {
|
||||||
@ -514,6 +519,11 @@ print '</td></tr>';
|
|||||||
// Logo (squarred)
|
// Logo (squarred)
|
||||||
print '<tr class="oddeven"><td><label for="logo_squarred">'.$form->textwithpicto($langs->trans("LogoSquarred"), 'png, jpg').'</label></td><td>';
|
print '<tr class="oddeven"><td><label for="logo_squarred">'.$form->textwithpicto($langs->trans("LogoSquarred"), 'png, jpg').'</label></td><td>';
|
||||||
print '<div class="centpercent nobordernopadding valignmiddle"><div class="inline-block marginrightonly">';
|
print '<div class="centpercent nobordernopadding valignmiddle"><div class="inline-block marginrightonly">';
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
print '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
print '<input type="file" class="flat minwidth100 maxwidthinputfileonsmartphone" name="logo_squarred" id="logo_squarred" accept="image/*">';
|
print '<input type="file" class="flat minwidth100 maxwidthinputfileonsmartphone" name="logo_squarred" id="logo_squarred" accept="image/*">';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
if (!empty($mysoc->logo_squarred_small)) {
|
if (!empty($mysoc->logo_squarred_small)) {
|
||||||
|
|||||||
@ -636,6 +636,11 @@ if ($mode == 'login') {
|
|||||||
if (!empty($conf->global->ADD_UNSPLASH_LOGIN_BACKGROUND)) {
|
if (!empty($conf->global->ADD_UNSPLASH_LOGIN_BACKGROUND)) {
|
||||||
$disabled = ' disabled="disabled"';
|
$disabled = ' disabled="disabled"';
|
||||||
}
|
}
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
print '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
print '<input type="file" class="flat maxwidthinputfileonsmartphone" name="imagebackground" id="imagebackground"' . $disabled . '>';
|
print '<input type="file" class="flat maxwidthinputfileonsmartphone" name="imagebackground" id="imagebackground"' . $disabled . '>';
|
||||||
if ($disabled) {
|
if ($disabled) {
|
||||||
print '(' . $langs->trans("DisabledByOptionADD_UNSPLASH_LOGIN_BACKGROUND") . ') ';
|
print '(' . $langs->trans("DisabledByOptionADD_UNSPLASH_LOGIN_BACKGROUND") . ') ';
|
||||||
|
|||||||
@ -1212,7 +1212,7 @@ if ($mode == 'deploy') {
|
|||||||
});
|
});
|
||||||
</script>'."\n";
|
</script>'."\n";
|
||||||
// MAX_FILE_SIZE doit précéder le champ input de type file
|
// MAX_FILE_SIZE doit précéder le champ input de type file
|
||||||
print '<input type="hidden" name="max_file_size" value="'.($maxmin * 1024).'">';
|
print '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">';
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<input class="flat minwidth400" type="file" name="fileinstall" id="fileinstall"> ';
|
print '<input class="flat minwidth400" type="file" name="fileinstall" id="fileinstall"> ';
|
||||||
|
|||||||
@ -62,6 +62,11 @@ if ($action == 'update') {
|
|||||||
}
|
}
|
||||||
if (GETPOSTISSET('INVOICE_ADD_ZATCA_QR_CODE')) {
|
if (GETPOSTISSET('INVOICE_ADD_ZATCA_QR_CODE')) {
|
||||||
dolibarr_set_const($db, "INVOICE_ADD_ZATCA_QR_CODE", GETPOST("INVOICE_ADD_ZATCA_QR_CODE", 'int'), 'chaine', 0, '', $conf->entity);
|
dolibarr_set_const($db, "INVOICE_ADD_ZATCA_QR_CODE", GETPOST("INVOICE_ADD_ZATCA_QR_CODE", 'int'), 'chaine', 0, '', $conf->entity);
|
||||||
|
dolibarr_del_const($db, "INVOICE_ADD_SWISS_QR_CODE", $conf->entity);
|
||||||
|
}
|
||||||
|
if (GETPOSTISSET('INVOICE_ADD_SWISS_QR_CODE')) {
|
||||||
|
dolibarr_set_const($db, "INVOICE_ADD_SWISS_QR_CODE", GETPOST("INVOICE_ADD_SWISS_QR_CODE", 'int'), 'chaine', 0, '', $conf->entity);
|
||||||
|
dolibarr_del_const($db, "INVOICE_ADD_ZATCA_QR_CODE", $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
|
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
|
||||||
@ -138,6 +143,17 @@ if (isModEnabled('facture')) {
|
|||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td>';
|
||||||
|
print $form->textwithpicto($langs->trans("INVOICE_ADD_SWISS_QR_CODE"), '');
|
||||||
|
print '</td><td>';
|
||||||
|
if ($conf->use_javascript_ajax) {
|
||||||
|
print ajax_constantonoff('INVOICE_ADD_SWISS_QR_CODE');
|
||||||
|
} else {
|
||||||
|
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
|
||||||
|
print $form->selectarray("INVOICE_ADD_SWISS_QR_CODE", $arrval, $conf->global->INVOICE_ADD_SWISS_QR_CODE);
|
||||||
|
}
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING").'</td><td>';
|
print '<tr class="oddeven"><td>'.$langs->trans("MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING").'</td><td>';
|
||||||
if ($conf->use_javascript_ajax) {
|
if ($conf->use_javascript_ajax) {
|
||||||
|
|||||||
@ -175,11 +175,10 @@ class Categorie extends CommonObject
|
|||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var array Object table mapping from type string (table llx_...) when value of key does not match table name.
|
* @var array Object table mapping from type string (table llx_...) when value of key does not match table name.
|
||||||
*
|
* This array may be completed by external modules with hook "constructCategory"
|
||||||
* @note Move to const array when PHP 5.6 will be our minimum target
|
|
||||||
*/
|
*/
|
||||||
public static $MAP_OBJ_TABLE = array(
|
public $MAP_OBJ_TABLE = array(
|
||||||
'customer' => 'societe',
|
'customer' => 'societe',
|
||||||
'supplier' => 'societe',
|
'supplier' => 'societe',
|
||||||
'member' => 'adherent',
|
'member' => 'adherent',
|
||||||
|
|||||||
@ -987,10 +987,10 @@ while ($i < $imaxinloop) {
|
|||||||
if (!empty($arrayfields['a.datep']['checked'])) {
|
if (!empty($arrayfields['a.datep']['checked'])) {
|
||||||
print '<td class="center nowraponall">';
|
print '<td class="center nowraponall">';
|
||||||
if (empty($obj->fulldayevent)) {
|
if (empty($obj->fulldayevent)) {
|
||||||
print dol_print_date($db->jdate($obj->dp), $formatToUse, 'tzuser');
|
print dol_print_date($db->jdate($obj->dp), $formatToUse, 'tzuserrel');
|
||||||
} else {
|
} else {
|
||||||
$tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT');
|
$tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT');
|
||||||
print dol_print_date($db->jdate($obj->dp), $formatToUse, ($tzforfullday ? $tzforfullday : 'tzuser'));
|
print dol_print_date($db->jdate($obj->dp), $formatToUse, ($tzforfullday ? $tzforfullday : 'tzuserrel'));
|
||||||
}
|
}
|
||||||
$late = 0;
|
$late = 0;
|
||||||
if ($actionstatic->hasDelay() && $actionstatic->percentage >= 0 && $actionstatic->percentage < 100 ) {
|
if ($actionstatic->hasDelay() && $actionstatic->percentage >= 0 && $actionstatic->percentage < 100 ) {
|
||||||
@ -1006,10 +1006,10 @@ while ($i < $imaxinloop) {
|
|||||||
if (!empty($arrayfields['a.datep2']['checked'])) {
|
if (!empty($arrayfields['a.datep2']['checked'])) {
|
||||||
print '<td class="center nowraponall">';
|
print '<td class="center nowraponall">';
|
||||||
if (empty($obj->fulldayevent)) {
|
if (empty($obj->fulldayevent)) {
|
||||||
print dol_print_date($db->jdate($obj->dp2), $formatToUse, 'tzuser');
|
print dol_print_date($db->jdate($obj->dp2), $formatToUse, 'tzuserrel');
|
||||||
} else {
|
} else {
|
||||||
$tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT');
|
$tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT');
|
||||||
print dol_print_date($db->jdate($obj->dp2), $formatToUse, ($tzforfullday ? $tzforfullday : 'tzuser'));
|
print dol_print_date($db->jdate($obj->dp2), $formatToUse, ($tzforfullday ? $tzforfullday : 'tzuserrel'));
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
@ -1091,11 +1091,11 @@ while ($i < $imaxinloop) {
|
|||||||
// Date creation
|
// Date creation
|
||||||
if (!empty($arrayfields['a.datec']['checked'])) {
|
if (!empty($arrayfields['a.datec']['checked'])) {
|
||||||
// Status/Percent
|
// Status/Percent
|
||||||
print '<td align="center" class="nowrap">'.dol_print_date($db->jdate($obj->datec), 'dayhour', 'tzuser').'</td>';
|
print '<td align="center" class="nowrap">'.dol_print_date($db->jdate($obj->datec), 'dayhour', 'tzuserrel').'</td>';
|
||||||
}
|
}
|
||||||
// Date update
|
// Date update
|
||||||
if (!empty($arrayfields['a.tms']['checked'])) {
|
if (!empty($arrayfields['a.tms']['checked'])) {
|
||||||
print '<td align="center" class="nowrap">'.dol_print_date($db->jdate($obj->datem), 'dayhour', 'tzuser').'</td>';
|
print '<td align="center" class="nowrap">'.dol_print_date($db->jdate($obj->datem), 'dayhour', 'tzuserrel').'</td>';
|
||||||
}
|
}
|
||||||
if (!empty($arrayfields['a.percent']['checked'])) {
|
if (!empty($arrayfields['a.percent']['checked'])) {
|
||||||
// Status/Percent
|
// Status/Percent
|
||||||
|
|||||||
@ -1121,7 +1121,7 @@ if ($object->id > 0) {
|
|||||||
* Latest contracts
|
* Latest contracts
|
||||||
*/
|
*/
|
||||||
if (!empty($conf->contrat->enabled) && $user->rights->contrat->lire) {
|
if (!empty($conf->contrat->enabled) && $user->rights->contrat->lire) {
|
||||||
$sql = "SELECT s.nom, s.rowid, c.rowid as id, c.ref as ref, c.statut as contract_status, c.datec as dc, c.date_contrat as dcon, c.ref_customer as refcus, c.ref_supplier as refsup";
|
$sql = "SELECT s.nom, s.rowid, c.rowid as id, c.ref as ref, c.statut as contract_status, c.datec as dc, c.date_contrat as dcon, c.ref_customer as refcus, c.ref_supplier as refsup, c.entity";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."contrat as c";
|
$sql .= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."contrat as c";
|
||||||
$sql .= " WHERE c.fk_soc = s.rowid ";
|
$sql .= " WHERE c.fk_soc = s.rowid ";
|
||||||
$sql .= " AND s.rowid = ".((int) $object->id);
|
$sql .= " AND s.rowid = ".((int) $object->id);
|
||||||
@ -1191,7 +1191,7 @@ if ($object->id > 0) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$relativepath = dol_sanitizeFileName($objp->ref).'/'.dol_sanitizeFileName($objp->ref).'.pdf';
|
$relativepath = dol_sanitizeFileName($objp->ref).'/'.dol_sanitizeFileName($objp->ref).'.pdf';
|
||||||
print $formfile->showPreview($file_list, $contrat->element, $relativepath, 0, $param);
|
print $formfile->showPreview($file_list, $contrat->element, $relativepath, 0);
|
||||||
}
|
}
|
||||||
// $filename = dol_sanitizeFileName($objp->ref);
|
// $filename = dol_sanitizeFileName($objp->ref);
|
||||||
// $filedir = $conf->contrat->multidir_output[$objp->entity].'/'.dol_sanitizeFileName($objp->ref);
|
// $filedir = $conf->contrat->multidir_output[$objp->entity].'/'.dol_sanitizeFileName($objp->ref);
|
||||||
@ -1409,6 +1409,7 @@ if ($object->id > 0) {
|
|||||||
$sql .= ', f.total_ht';
|
$sql .= ', f.total_ht';
|
||||||
$sql .= ', f.total_tva';
|
$sql .= ', f.total_tva';
|
||||||
$sql .= ', f.total_ttc';
|
$sql .= ', f.total_ttc';
|
||||||
|
$sql .= ', f.entity';
|
||||||
$sql .= ', f.datef as df, f.datec as dc, f.paye as paye, f.fk_statut as status';
|
$sql .= ', f.datef as df, f.datec as dc, f.paye as paye, f.fk_statut as status';
|
||||||
$sql .= ', s.nom, s.rowid as socid';
|
$sql .= ', s.nom, s.rowid as socid';
|
||||||
$sql .= ', SUM(pf.amount) as am';
|
$sql .= ', SUM(pf.amount) as am';
|
||||||
@ -1475,7 +1476,7 @@ if ($object->id > 0) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$relativepath = dol_sanitizeFileName($objp->ref).'/'.dol_sanitizeFileName($objp->ref).'.pdf';
|
$relativepath = dol_sanitizeFileName($objp->ref).'/'.dol_sanitizeFileName($objp->ref).'.pdf';
|
||||||
print $formfile->showPreview($file_list, $facturestatic->element, $relativepath, 0, $param);
|
print $formfile->showPreview($file_list, $facturestatic->element, $relativepath, 0);
|
||||||
}
|
}
|
||||||
// $filename = dol_sanitizeFileName($objp->ref);
|
// $filename = dol_sanitizeFileName($objp->ref);
|
||||||
// $filedir = $conf->facture->multidir_output[$objp->entity].'/'.dol_sanitizeFileName($objp->ref);
|
// $filedir = $conf->facture->multidir_output[$objp->entity].'/'.dol_sanitizeFileName($objp->ref);
|
||||||
|
|||||||
@ -1249,6 +1249,11 @@ if ($action == 'create') {
|
|||||||
$out .= '<span class="opacitymedium">'.$langs->trans("NoAttachedFiles").'</span><br>';
|
$out .= '<span class="opacitymedium">'.$langs->trans("NoAttachedFiles").'</span><br>';
|
||||||
}
|
}
|
||||||
// Add link to add file
|
// Add link to add file
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
$out .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
$out .= '<input type="file" class="flat" id="addedfile" name="addedfile" value="'.$langs->trans("Upload").'" />';
|
$out .= '<input type="file" class="flat" id="addedfile" name="addedfile" value="'.$langs->trans("Upload").'" />';
|
||||||
$out .= ' ';
|
$out .= ' ';
|
||||||
$out .= '<input type="submit" class="button" id="'.$addfileaction.'" name="'.$addfileaction.'" value="'.$langs->trans("MailingAddFile").'" />';
|
$out .= '<input type="submit" class="button" id="'.$addfileaction.'" name="'.$addfileaction.'" value="'.$langs->trans("MailingAddFile").'" />';
|
||||||
|
|||||||
@ -172,7 +172,7 @@ class PropaleStats extends Stats
|
|||||||
* @param int $format 0=Label of abscissa is a translated text, 1=Label of abscissa is month number, 2=Label of abscissa is first letter of month
|
* @param int $format 0=Label of abscissa is a translated text, 1=Label of abscissa is month number, 2=Label of abscissa is first letter of month
|
||||||
* @return array Array with amount by month
|
* @return array Array with amount by month
|
||||||
*/
|
*/
|
||||||
public function getAmountByMonth($year, $format)
|
public function getAmountByMonth($year, $format = 0)
|
||||||
{
|
{
|
||||||
global $user;
|
global $user;
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2017-2019 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
/* Copyright (C) 2017-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||||
* Copyright (C) 2020 Tobias Sekan <tobias.sekan@startmail.com>
|
* Copyright (C) 2020 Tobias Sekan <tobias.sekan@startmail.com>
|
||||||
@ -35,6 +35,8 @@ require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
|||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("compta", "banks", "bills", "accountancy"));
|
$langs->loadLangs(array("compta", "banks", "bills", "accountancy"));
|
||||||
|
|
||||||
|
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'directdebitcredittransferlist'; // To manage different context of search
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
$socid = GETPOST("socid", "int");
|
$socid = GETPOST("socid", "int");
|
||||||
if ($user->socid) {
|
if ($user->socid) {
|
||||||
@ -75,6 +77,7 @@ if (empty($search_datev_start)) {
|
|||||||
if (empty($search_datev_end)) {
|
if (empty($search_datev_end)) {
|
||||||
$search_datev_end = GETPOST("search_datev_end", 'int');
|
$search_datev_end = GETPOST("search_datev_end", 'int');
|
||||||
}
|
}
|
||||||
|
$search_type_id = GETPOST('search_type_id', 'int');
|
||||||
|
|
||||||
$sortfield = GETPOST('sortfield', 'aZ09comma');
|
$sortfield = GETPOST('sortfield', 'aZ09comma');
|
||||||
$sortorder = GETPOST('sortorder', 'aZ09comma');
|
$sortorder = GETPOST('sortorder', 'aZ09comma');
|
||||||
@ -94,19 +97,6 @@ if (!$sortorder) {
|
|||||||
|
|
||||||
$filtre = GETPOST("filtre", 'alpha');
|
$filtre = GETPOST("filtre", 'alpha');
|
||||||
|
|
||||||
if (!GETPOST('typeid')) {
|
|
||||||
$newfiltre = str_replace('filtre=', '', $filtre);
|
|
||||||
$filterarray = explode('-', $newfiltre);
|
|
||||||
foreach ($filterarray as $val) {
|
|
||||||
$part = explode(':', $val);
|
|
||||||
if ($part[0] == 'v.fk_typepayment') {
|
|
||||||
$typeid = $part[1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$typeid = GETPOST('typeid');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All test are required to be compatible with all browsers
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All test are required to be compatible with all browsers
|
||||||
$search_ref = '';
|
$search_ref = '';
|
||||||
$search_label = '';
|
$search_label = '';
|
||||||
@ -120,7 +110,7 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x'
|
|||||||
$search_bank_entry = '';
|
$search_bank_entry = '';
|
||||||
$search_accountancy_account = '';
|
$search_accountancy_account = '';
|
||||||
$search_accountancy_subledger = '';
|
$search_accountancy_subledger = '';
|
||||||
$typeid = '';
|
$search_type_id = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
$search_all = GETPOSTISSET("search_all") ? trim(GETPOST("search_all", 'alpha')) : trim(GETPOST('sall'));
|
$search_all = GETPOSTISSET("search_all") ? trim(GETPOST("search_all", 'alpha')) : trim(GETPOST('sall'));
|
||||||
@ -265,8 +255,8 @@ if ($search_accountancy_account > 0) {
|
|||||||
if ($search_accountancy_subledger > 0) {
|
if ($search_accountancy_subledger > 0) {
|
||||||
$sql .= " AND v.subledger_account = ".((int) $search_accountancy_subledger);
|
$sql .= " AND v.subledger_account = ".((int) $search_accountancy_subledger);
|
||||||
}
|
}
|
||||||
if ($typeid > 0) {
|
if ($search_type_id > 0) {
|
||||||
$sql .= " AND v.fk_typepayment=".((int) $typeid);
|
$sql .= " AND v.fk_typepayment=".((int) $search_type_id);
|
||||||
}
|
}
|
||||||
if ($search_all) {
|
if ($search_all) {
|
||||||
$sql .= natural_search(array_keys($fieldstosearchall), $search_all);
|
$sql .= natural_search(array_keys($fieldstosearchall), $search_all);
|
||||||
@ -324,8 +314,8 @@ if ($resql) {
|
|||||||
if ($search_datev_end) {
|
if ($search_datev_end) {
|
||||||
$param .= '&search_datev_end='.urlencode($search_datev_end);
|
$param .= '&search_datev_end='.urlencode($search_datev_end);
|
||||||
}
|
}
|
||||||
if ($typeid > 0) {
|
if ($search_type_id > 0) {
|
||||||
$param .= '&typeid='.urlencode($typeid);
|
$param .= '&search_type_id='.urlencode($search_type_id);
|
||||||
}
|
}
|
||||||
if ($search_amount_deb) {
|
if ($search_amount_deb) {
|
||||||
$param .= '&search_amount_deb='.urlencode($search_amount_deb);
|
$param .= '&search_amount_deb='.urlencode($search_amount_deb);
|
||||||
@ -375,6 +365,7 @@ if ($resql) {
|
|||||||
|
|
||||||
$varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage;
|
$varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage;
|
||||||
$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields
|
$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields
|
||||||
|
$moreforfilter= '';
|
||||||
|
|
||||||
print '<div class="div-table-responsive">';
|
print '<div class="div-table-responsive">';
|
||||||
print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">';
|
print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">';
|
||||||
@ -427,7 +418,7 @@ if ($resql) {
|
|||||||
// Payment type
|
// Payment type
|
||||||
if ($arrayfields['type']['checked']) {
|
if ($arrayfields['type']['checked']) {
|
||||||
print '<td class="liste_titre center">';
|
print '<td class="liste_titre center">';
|
||||||
$form->select_types_paiements($typeid, 'typeid', '', 0, 1, 1, 16, 1, 'maxwidth100');
|
$form->select_types_paiements($search_type_id, 'search_type_id', '', 0, 1, 1, 16, 1, 'maxwidth100');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -544,6 +535,8 @@ if ($resql) {
|
|||||||
|
|
||||||
|
|
||||||
$totalarray = array();
|
$totalarray = array();
|
||||||
|
$totalarray['nbfield'] = 0;
|
||||||
|
$totalarray['val']['total_cred'] = 0;
|
||||||
while ($i < min($num, $limit)) {
|
while ($i < min($num, $limit)) {
|
||||||
$obj = $db->fetch_object($resql);
|
$obj = $db->fetch_object($resql);
|
||||||
|
|
||||||
@ -656,7 +649,7 @@ if ($resql) {
|
|||||||
if ($arrayfields['account']['checked']) {
|
if ($arrayfields['account']['checked']) {
|
||||||
$accountingaccount->fetch('', $obj->accountancy_code, 1);
|
$accountingaccount->fetch('', $obj->accountancy_code, 1);
|
||||||
|
|
||||||
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->accountancy_code.' '.$obj->accountancy_label).'">'.$accountingaccount->getNomUrl(0, 1, 1, '', 1).'</td>';
|
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->accountancy_code.' '.$accountingaccount->label).'">'.$accountingaccount->getNomUrl(0, 1, 1, '', 1).'</td>';
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2001-2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2001-2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
* Copyright (C) 2004-2016 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2004-2016 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2005-2010 Regis Houssin <regis.houssin@inodbox.com>
|
* Copyright (C) 2005-2010 Regis Houssin <regis.houssin@inodbox.com>
|
||||||
* Copyright (C) 2011-2016 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
* Copyright (C) 2011-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2011-2014 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2011-2014 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||||
* Copyright (C) 2019 Nicolas ZABOURI <info@inovea-conseil.com>
|
* Copyright (C) 2019 Nicolas ZABOURI <info@inovea-conseil.com>
|
||||||
* Copyright (C) 2021 Gauthier VERDOL <gauthier.verdol@atm-consulting.fr>
|
* Copyright (C) 2021 Gauthier VERDOL <gauthier.verdol@atm-consulting.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -58,6 +58,7 @@ $filtre = GETPOST("filtre", 'alpha');
|
|||||||
if (!$year) {
|
if (!$year) {
|
||||||
$year = date("Y", time());
|
$year = date("Y", time());
|
||||||
}
|
}
|
||||||
|
$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
|
||||||
|
|
||||||
$search_account = GETPOST('search_account', 'int');
|
$search_account = GETPOST('search_account', 'int');
|
||||||
|
|
||||||
@ -184,7 +185,6 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) {
|
|||||||
$num = $db->num_rows($resql);
|
$num = $db->num_rows($resql);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
$total = 0;
|
$total = 0;
|
||||||
$totalnb = 0;
|
|
||||||
$totalpaid = 0;
|
$totalpaid = 0;
|
||||||
|
|
||||||
while ($i < min($num, $limit)) {
|
while ($i < min($num, $limit)) {
|
||||||
@ -204,7 +204,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) {
|
|||||||
print $socialcontrib->getNomUrl(1, '20');
|
print $socialcontrib->getNomUrl(1, '20');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
// Type
|
// Type
|
||||||
print '<td><a href="../sociales/list.php?filtre=cs.fk_type:'.$obj->type.'">'.$obj->label.'</a></td>';
|
print '<td><a href="'.DOL_URL_ROOT.'/compta/sociales/list.php?filtre=cs.fk_type:'.$obj->type.'">'.$obj->label.'</a></td>';
|
||||||
// Expected to pay
|
// Expected to pay
|
||||||
print '<td class="right"><span class="amount">'.price($obj->total).'</span></td>';
|
print '<td class="right"><span class="amount">'.price($obj->total).'</span></td>';
|
||||||
// Ref payment
|
// Ref payment
|
||||||
@ -246,7 +246,6 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) {
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
$total = $total + $obj->total;
|
$total = $total + $obj->total;
|
||||||
$totalnb = $totalnb + $obj->nb;
|
|
||||||
$totalpaid = $totalpaid + $obj->totalpaid;
|
$totalpaid = $totalpaid + $obj->totalpaid;
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
@ -274,7 +273,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) {
|
|||||||
|
|
||||||
print load_fiche_titre($langs->trans("VATDeclarations").($year ? ' ('.$langs->trans("Year").' '.$year.')' : ''), '', '');
|
print load_fiche_titre($langs->trans("VATDeclarations").($year ? ' ('.$langs->trans("Year").' '.$year.')' : ''), '', '');
|
||||||
|
|
||||||
$sql = "SELECT ptva.rowid, pv.rowid as id_tva, pv.amount as amount_tva, ptva.amount, pv.label, pv.datev as dm, ptva.datep as date_payment, ptva.fk_bank,";
|
$sql = "SELECT ptva.rowid, pv.rowid as id_tva, pv.amount as amount_tva, ptva.amount, pv.label, pv.datev as dm, ptva.datep as date_payment, ptva.fk_bank, ptva.num_paiement as num_payment,";
|
||||||
$sql .= " pct.code as payment_code,";
|
$sql .= " pct.code as payment_code,";
|
||||||
$sql .= " ba.rowid as bid, ba.ref as bref, ba.number as bnumber, ba.account_number, ba.fk_accountancy_journal, ba.label as blabel";
|
$sql .= " ba.rowid as bid, ba.ref as bref, ba.number as bnumber, ba.account_number, ba.fk_accountancy_journal, ba.label as blabel";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."tva as pv";
|
$sql .= " FROM ".MAIN_DB_PREFIX."tva as pv";
|
||||||
|
|||||||
@ -1030,7 +1030,7 @@ if (empty($reshook)) {
|
|||||||
$object->date = $dateinvoice;
|
$object->date = $dateinvoice;
|
||||||
$object->date_pointoftax = $date_pointoftax;
|
$object->date_pointoftax = $date_pointoftax;
|
||||||
$object->note_public = trim(GETPOST('note_public', 'restricthtml'));
|
$object->note_public = trim(GETPOST('note_public', 'restricthtml'));
|
||||||
// We do not copy the private note
|
$object->note_private = trim(GETPOST('note_private', 'restricthtml'));
|
||||||
$object->ref_client = GETPOST('ref_client', 'alphanohtml');
|
$object->ref_client = GETPOST('ref_client', 'alphanohtml');
|
||||||
$object->model_pdf = GETPOST('model', 'alphanohtml');
|
$object->model_pdf = GETPOST('model', 'alphanohtml');
|
||||||
$object->fk_project = GETPOST('projectid', 'int');
|
$object->fk_project = GETPOST('projectid', 'int');
|
||||||
@ -1083,7 +1083,7 @@ if (empty($reshook)) {
|
|||||||
$object->date = $dateinvoice;
|
$object->date = $dateinvoice;
|
||||||
$object->date_pointoftax = $date_pointoftax;
|
$object->date_pointoftax = $date_pointoftax;
|
||||||
$object->note_public = trim(GETPOST('note_public', 'restricthtml'));
|
$object->note_public = trim(GETPOST('note_public', 'restricthtml'));
|
||||||
// We do not copy the private note
|
$object->note_private = trim(GETPOST('note_private', 'restricthtml'));
|
||||||
$object->ref_client = GETPOST('ref_client');
|
$object->ref_client = GETPOST('ref_client');
|
||||||
$object->model_pdf = GETPOST('model');
|
$object->model_pdf = GETPOST('model');
|
||||||
$object->fk_project = GETPOST('projectid', 'int');
|
$object->fk_project = GETPOST('projectid', 'int');
|
||||||
@ -4711,36 +4711,36 @@ if ($action == 'create') {
|
|||||||
if (!empty($conf->multicurrency->enabled) && ($object->multicurrency_code != $conf->currency)) {
|
if (!empty($conf->multicurrency->enabled) && ($object->multicurrency_code != $conf->currency)) {
|
||||||
// Multicurrency Amount HT
|
// Multicurrency Amount HT
|
||||||
print '<tr><td class="titlefieldmiddle">'.$form->editfieldkey('MulticurrencyAmountHT', 'multicurrency_total_ht', '', $object, 0).'</td>';
|
print '<tr><td class="titlefieldmiddle">'.$form->editfieldkey('MulticurrencyAmountHT', 'multicurrency_total_ht', '', $object, 0).'</td>';
|
||||||
print '<td class="nowrap amountcard">'.price($sign * $object->multicurrency_total_ht, '', $langs, 0, -1, -1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)).'</td>';
|
print '<td class="nowrap right amountcard">'.price($sign * $object->multicurrency_total_ht, '', $langs, 0, -1, -1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)).'</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
// Multicurrency Amount VAT
|
// Multicurrency Amount VAT
|
||||||
print '<tr><td>'.$form->editfieldkey('MulticurrencyAmountVAT', 'multicurrency_total_tva', '', $object, 0).'</td>';
|
print '<tr><td>'.$form->editfieldkey('MulticurrencyAmountVAT', 'multicurrency_total_tva', '', $object, 0).'</td>';
|
||||||
print '<td class="nowrap amountcard">'.price($sign * $object->multicurrency_total_tva, '', $langs, 0, -1, -1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)).'</td>';
|
print '<td class="nowrap right amountcard">'.price($sign * $object->multicurrency_total_tva, '', $langs, 0, -1, -1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)).'</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
// Multicurrency Amount TTC
|
// Multicurrency Amount TTC
|
||||||
print '<tr><td>'.$form->editfieldkey('MulticurrencyAmountTTC', 'multicurrency_total_ttc', '', $object, 0).'</td>';
|
print '<tr><td>'.$form->editfieldkey('MulticurrencyAmountTTC', 'multicurrency_total_ttc', '', $object, 0).'</td>';
|
||||||
print '<td class="nowrap amountcard">'.price($sign * $object->multicurrency_total_ttc, '', $langs, 0, -1, -1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)).'</td>';
|
print '<td class="nowrap right amountcard">'.price($sign * $object->multicurrency_total_ttc, '', $langs, 0, -1, -1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)).'</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Amount
|
// Amount
|
||||||
print '<tr><td class="titlefieldmiddle">'.$langs->trans('AmountHT').'</td>';
|
print '<tr><td class="titlefieldmiddle">'.$langs->trans('AmountHT').'</td>';
|
||||||
print '<td class="nowrap amountcard">'.price($sign * $object->total_ht, 1, '', 1, - 1, - 1, $conf->currency).'</td></tr>';
|
print '<td class="nowrap right amountcard">'.price($sign * $object->total_ht, 1, '', 1, - 1, - 1, $conf->currency).'</td></tr>';
|
||||||
|
|
||||||
// Vat
|
// Vat
|
||||||
print '<tr><td>'.$langs->trans('AmountVAT').'</td><td colspan="3" class="nowrap amountcard">'.price($sign * $object->total_tva, 1, '', 1, - 1, - 1, $conf->currency).'</td></tr>';
|
print '<tr><td>'.$langs->trans('AmountVAT').'</td><td colspan="3" class="nowrap right amountcard">'.price($sign * $object->total_tva, 1, '', 1, - 1, - 1, $conf->currency).'</td></tr>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
// Amount Local Taxes
|
// Amount Local Taxes
|
||||||
if (($mysoc->localtax1_assuj == "1" && $mysoc->useLocalTax(1)) || $object->total_localtax1 != 0) { // Localtax1
|
if (($mysoc->localtax1_assuj == "1" && $mysoc->useLocalTax(1)) || $object->total_localtax1 != 0) { // Localtax1
|
||||||
print '<tr><td>'.$langs->transcountry("AmountLT1", $mysoc->country_code).'</td>';
|
print '<tr><td>'.$langs->transcountry("AmountLT1", $mysoc->country_code).'</td>';
|
||||||
print '<td class="nowrap amountcard">'.price($sign * $object->total_localtax1, 1, '', 1, - 1, - 1, $conf->currency).'</td></tr>';
|
print '<td class="nowrap right amountcard">'.price($sign * $object->total_localtax1, 1, '', 1, - 1, - 1, $conf->currency).'</td></tr>';
|
||||||
}
|
}
|
||||||
if (($mysoc->localtax2_assuj == "1" && $mysoc->useLocalTax(2)) || $object->total_localtax2 != 0) { // Localtax2
|
if (($mysoc->localtax2_assuj == "1" && $mysoc->useLocalTax(2)) || $object->total_localtax2 != 0) { // Localtax2
|
||||||
print '<tr><td>'.$langs->transcountry("AmountLT2", $mysoc->country_code).'</td>';
|
print '<tr><td>'.$langs->transcountry("AmountLT2", $mysoc->country_code).'</td>';
|
||||||
print '<td class="nowrap amountcard">'.price($sign * $object->total_localtax2, 1, '', 1, - 1, - 1, $conf->currency).'</td></tr>';
|
print '<td class="nowrap right amountcard">'.price($sign * $object->total_localtax2, 1, '', 1, - 1, - 1, $conf->currency).'</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Revenue stamp
|
// Revenue stamp
|
||||||
@ -4796,7 +4796,7 @@ if ($action == 'create') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Total with tax
|
// Total with tax
|
||||||
print '<tr><td>'.$langs->trans('AmountTTC').'</td><td class="nowrap amountcard">'.price($sign * $object->total_ttc, 1, '', 1, - 1, - 1, $conf->currency).'</td></tr>';
|
print '<tr><td>'.$langs->trans('AmountTTC').'</td><td class="nowrap right amountcard">'.price($sign * $object->total_ttc, 1, '', 1, - 1, - 1, $conf->currency).'</td></tr>';
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
|
|||||||
@ -256,7 +256,7 @@ $arrayfields = array(
|
|||||||
'f.fk_statut'=>array('label'=>"Status", 'checked'=>1, 'position'=>1000),
|
'f.fk_statut'=>array('label'=>"Status", 'checked'=>1, 'position'=>1000),
|
||||||
);
|
);
|
||||||
|
|
||||||
if (getDolGlobalString("INVOICE_USE_SITUATION") && $conf->global->INVOICE_USE_RETAINED_WARRANTY) {
|
if (getDolGlobalString("INVOICE_USE_SITUATION") && !empty($conf->global->INVOICE_USE_RETAINED_WARRANTY)) {
|
||||||
$arrayfields['f.retained_warranty'] = array('label'=>$langs->trans("RetainedWarranty"), 'checked'=>0, 'position'=>86);
|
$arrayfields['f.retained_warranty'] = array('label'=>$langs->trans("RetainedWarranty"), 'checked'=>0, 'position'=>86);
|
||||||
}
|
}
|
||||||
// Overwrite $arrayfields from columns into ->fields (transition before removal of $arrayoffields)
|
// Overwrite $arrayfields from columns into ->fields (transition before removal of $arrayoffields)
|
||||||
@ -1091,7 +1091,7 @@ if ($resql) {
|
|||||||
$param .= '&search_categ_cus='.urlencode($search_categ_cus);
|
$param .= '&search_categ_cus='.urlencode($search_categ_cus);
|
||||||
}
|
}
|
||||||
if (!empty($search_fac_rec_source_title)) {
|
if (!empty($search_fac_rec_source_title)) {
|
||||||
$param .= '&$search_fac_rec_source_title='.urlencode($search_fac_rec_source_title);
|
$param .= '&search_fac_rec_source_title='.urlencode($search_fac_rec_source_title);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add $param from extra fields
|
// Add $param from extra fields
|
||||||
|
|||||||
@ -564,8 +564,12 @@ while ($i < min($num, $limit)) {
|
|||||||
|
|
||||||
// Bank transaction
|
// Bank transaction
|
||||||
if (!empty($arrayfields['transaction']['checked'])) {
|
if (!empty($arrayfields['transaction']['checked'])) {
|
||||||
$bankline->fetch($objp->fk_bank);
|
print '<td>';
|
||||||
print '<td>'.$bankline->getNomUrl(1, 0).'</td>';
|
if ($objp->fk_bank > 0) {
|
||||||
|
$bankline->fetch($objp->fk_bank);
|
||||||
|
print $bankline->getNomUrl(1, 0);
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1271,7 +1271,14 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
print '<tr><td><input type="checkbox" class="flat photodelete" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>';
|
print '<tr><td><input type="checkbox" class="flat photodelete" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>';
|
||||||
}
|
}
|
||||||
//print '<tr><td>'.$langs->trans("PhotoFile").'</td></tr>';
|
//print '<tr><td>'.$langs->trans("PhotoFile").'</td></tr>';
|
||||||
print '<tr><td><input type="file" class="flat" name="photo" id="photoinput"></td></tr>';
|
print '<tr><td>';
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
print '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
|
print '<input type="file" class="flat" name="photo" id="photoinput">';
|
||||||
|
print '</td></tr>';
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|||||||
@ -159,7 +159,14 @@ if ($action == 'edit') {
|
|||||||
print '<tr><td class="center"><input type="checkbox" class="flat photodelete" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>';
|
print '<tr><td class="center"><input type="checkbox" class="flat photodelete" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>';
|
||||||
}
|
}
|
||||||
print '<tr><td>'.$langs->trans("PhotoFile").'</td></tr>';
|
print '<tr><td>'.$langs->trans("PhotoFile").'</td></tr>';
|
||||||
print '<tr><td><input type="file" class="flat" name="photo" id="photoinput"></td></tr>';
|
print '<tr><td>';
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
print '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
|
print '<input type="file" class="flat" name="photo" id="photoinput">';
|
||||||
|
print '</td></tr>';
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|||||||
@ -1415,7 +1415,7 @@ if ($action == 'create') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$arrayothercontracts = $object->getListOfContracts('others');
|
$arrayothercontracts = $object->getListOfContracts('others'); // array or -1 if technical error
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Lines of contracts
|
* Lines of contracts
|
||||||
@ -1544,9 +1544,9 @@ if ($action == 'create') {
|
|||||||
print '<td class="right nowraponall">'.price($objp->pa_ht).'</td>';
|
print '<td class="right nowraponall">'.price($objp->pa_ht).'</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Icon move, update et delete (statut contrat 0=brouillon,1=valide,2=ferme)
|
// Icon move, update et delete (status contract 0=draft,1=validated,2=closed)
|
||||||
print '<td class="nowraponall right">';
|
print '<td class="nowraponall right">';
|
||||||
if ($user->rights->contrat->creer && count($arrayothercontracts) && ($object->statut >= 0)) {
|
if ($user->rights->contrat->creer && is_array($arrayothercontracts) && count($arrayothercontracts) && ($object->statut >= 0)) {
|
||||||
print '<!-- link to move service line into another contract -->';
|
print '<!-- link to move service line into another contract -->';
|
||||||
print '<a class="reposition marginrightonly" style="padding-left: 5px;" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=move&token='.newToken().'&rowid='.$objp->rowid.'">';
|
print '<a class="reposition marginrightonly" style="padding-left: 5px;" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=move&token='.newToken().'&rowid='.$objp->rowid.'">';
|
||||||
print img_picto($langs->trans("MoveToAnotherContract"), 'uparrow');
|
print img_picto($langs->trans("MoveToAnotherContract"), 'uparrow');
|
||||||
|
|||||||
@ -1058,7 +1058,7 @@ class Contrat extends CommonObject
|
|||||||
if (count($exp->linkedObjectsIds['commande']) > 0) {
|
if (count($exp->linkedObjectsIds['commande']) > 0) {
|
||||||
foreach ($exp->linkedObjectsIds['commande'] as $key => $value) {
|
foreach ($exp->linkedObjectsIds['commande'] as $key => $value) {
|
||||||
$originforcontact = 'commande';
|
$originforcontact = 'commande';
|
||||||
$originidforcontact = $value->id;
|
$originidforcontact = $value;
|
||||||
break; // We take first one
|
break; // We take first one
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2126,7 +2126,7 @@ class Contrat extends CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return list of other contracts for same company than current contract
|
* Return list of other contracts for the same company than current contract
|
||||||
*
|
*
|
||||||
* @param string $option 'all' or 'others'
|
* @param string $option 'all' or 'others'
|
||||||
* @param array $status sort contracts having these status
|
* @param array $status sort contracts having these status
|
||||||
@ -2138,7 +2138,7 @@ class Contrat extends CommonObject
|
|||||||
{
|
{
|
||||||
$tab = array();
|
$tab = array();
|
||||||
|
|
||||||
$sql = "SELECT c.rowid, c.ref";
|
$sql = "SELECT c.rowid";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."contrat as c";
|
$sql .= " FROM ".MAIN_DB_PREFIX."contrat as c";
|
||||||
if (!empty($product_categories)) {
|
if (!empty($product_categories)) {
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."contratdet as cd ON cd.fk_contrat = c.rowid";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."contratdet as cd ON cd.fk_contrat = c.rowid";
|
||||||
@ -2159,12 +2159,12 @@ class Contrat extends CommonObject
|
|||||||
$obj = $this->db->fetch_object($resql);
|
$obj = $this->db->fetch_object($resql);
|
||||||
$contrat = new Contrat($this->db);
|
$contrat = new Contrat($this->db);
|
||||||
$contrat->fetch($obj->rowid);
|
$contrat->fetch($obj->rowid);
|
||||||
$tab[] = $contrat;
|
$tab[$contrat->id] = $contrat;
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
return $tab;
|
return $tab;
|
||||||
} else {
|
} else {
|
||||||
$this->error = $this->db->error();
|
$this->error = $this->db->lasterror();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -266,7 +266,7 @@ if ($action == 'update' && !empty($permissiontoadd)) {
|
|||||||
$action = 'view';
|
$action = 'view';
|
||||||
$urltogo = $backtopage ? str_replace('__ID__', $result, $backtopage) : $backurlforlist;
|
$urltogo = $backtopage ? str_replace('__ID__', $result, $backtopage) : $backurlforlist;
|
||||||
$urltogo = preg_replace('/--IDFORBACKTOPAGE--/', $object->id, $urltogo); // New method to autoselect project after a New on another form object creation
|
$urltogo = preg_replace('/--IDFORBACKTOPAGE--/', $object->id, $urltogo); // New method to autoselect project after a New on another form object creation
|
||||||
if ($urltogo) {
|
if ($urltogo && !$noback) {
|
||||||
header("Location: " . $urltogo);
|
header("Location: " . $urltogo);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -63,7 +63,7 @@ class box_scheduled_jobs extends ModeleBoxes
|
|||||||
|
|
||||||
$this->db = $db;
|
$this->db = $db;
|
||||||
|
|
||||||
$this->hidden = !($user->rights->service->lire && $user->rights->contrat->lire);
|
$this->hidden = !($user->hasRight('service', 'lire') && $user->hasRight('contrat', 'lire'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -168,17 +168,18 @@ abstract class CommonInvoice extends CommonObject
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Return amount (with tax) of all deposits invoices used by invoice.
|
* Return amount (with tax) of all deposits invoices used by invoice.
|
||||||
* Should always be empty, except if option FACTURE_DEPOSITS_ARE_JUST_PAYMENTS is on (not recommended).
|
* Should always be empty, except if option FACTURE_DEPOSITS_ARE_JUST_PAYMENTS is on for sale invoices (not recommended),
|
||||||
|
* of FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS is on for purchase invoices (not recommended).
|
||||||
*
|
*
|
||||||
* @param int $multicurrency Return multicurrency_amount instead of amount
|
* @param int $multicurrency Return multicurrency_amount instead of amount
|
||||||
* @return float <0 and set ->error if KO, Sum of deposits amount otherwise
|
* @return float <0 and set ->error if KO, Sum of deposits amount otherwise
|
||||||
*/
|
*/
|
||||||
public function getSumDepositsUsed($multicurrency = 0)
|
public function getSumDepositsUsed($multicurrency = 0)
|
||||||
{
|
{
|
||||||
if ($this->element == 'facture_fourn' || $this->element == 'invoice_supplier') {
|
/*if ($this->element == 'facture_fourn' || $this->element == 'invoice_supplier') {
|
||||||
// FACTURE_DEPOSITS_ARE_JUST_PAYMENTS was never supported for purchase invoice, so we can return 0 with no need of SQL for this case.
|
// FACTURE_DEPOSITS_ARE_JUST_PAYMENTS was never supported for purchase invoice, so we can return 0 with no need of SQL for this case.
|
||||||
return 0.0;
|
return 0.0;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/discount.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/discount.class.php';
|
||||||
|
|
||||||
@ -899,6 +900,101 @@ abstract class CommonInvoice extends CommonObject
|
|||||||
|
|
||||||
return $s;
|
return $s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build string for QR-Bill (Switzerland)
|
||||||
|
*
|
||||||
|
* @return string String for Switzerland QR Code if QR-Bill
|
||||||
|
*/
|
||||||
|
public function buildSwitzerlandQRString()
|
||||||
|
{
|
||||||
|
global $conf, $mysoc;
|
||||||
|
|
||||||
|
$tmplang = new Translate('', $conf);
|
||||||
|
$tmplang->setDefaultLang('en_US');
|
||||||
|
$tmplang->load("main");
|
||||||
|
|
||||||
|
$pricewithtaxstring = price2num($this->total_ttc, 2, 1);
|
||||||
|
$pricetaxstring = price2num($this->total_tva, 2, 1);
|
||||||
|
|
||||||
|
$complementaryinfo = '';
|
||||||
|
/*
|
||||||
|
Example: //S1/10/10201409/11/190512/20/1400.000-53/30/106017086/31/180508/32/7.7/40/2:10;0:30
|
||||||
|
/10/ Numéro de facture – 10201409
|
||||||
|
/11/ Date de facture – 12.05.2019
|
||||||
|
/20/ Référence client – 1400.000-53
|
||||||
|
/30/ Numéro IDE pour la TVA – CHE-106.017.086 TVA
|
||||||
|
/31/ Date de la prestation pour la comptabilisation de la TVA – 08.05.2018
|
||||||
|
/32/ Taux de TVA sur le montant total de la facture – 7.7%
|
||||||
|
/40/ Conditions – 2% d’escompte à 10 jours, paiement net à 30 jours
|
||||||
|
*/
|
||||||
|
$datestring = dol_print_date($this->date, '%y%m%d');
|
||||||
|
//$pricewithtaxstring = price($this->total_ttc, 0, $tmplang, 0, -1, 2);
|
||||||
|
//$pricetaxstring = price($this->total_tva, 0, $tmplang, 0, -1, 2);
|
||||||
|
$complementaryinfo = '//S1/10/'.str_replace('/', '', $this->ref).'/11/'.$datestring;
|
||||||
|
if ($this->ref_client) {
|
||||||
|
$complementaryinfo .= '/20/'.$this->ref_client;
|
||||||
|
}
|
||||||
|
if ($this->thirdparty->vat_number) {
|
||||||
|
$complementaryinfo .= '/30/'.$this->thirdparty->vat_number;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Header
|
||||||
|
$s .= "SPC\n";
|
||||||
|
$s .= "0200\n";
|
||||||
|
$s .= "1\n";
|
||||||
|
if ($this->fk_account > 0) {
|
||||||
|
// Bank BAN if country is LI or CH
|
||||||
|
// TODO Add
|
||||||
|
$bankaccount = new Account($this->db);
|
||||||
|
$bankaccount->fetch($this->fk_account);
|
||||||
|
$s .= $bankaccount->iban."\n";
|
||||||
|
} else {
|
||||||
|
$s .= "\n";
|
||||||
|
}
|
||||||
|
// Seller
|
||||||
|
$s .= "S\n";
|
||||||
|
$s .= dol_trunc($mysoc->name, 70, 'right', 'UTF-8', 1)."\n";
|
||||||
|
$addresslinearray = explode("\n", $mysoc->address);
|
||||||
|
$s .= dol_trunc(empty($addresslinearray[1]) ? '' : $addresslinearray[1], 70, 'right', 'UTF-8', 1)."\n"; // address line 1
|
||||||
|
$s .= dol_trunc(empty($addresslinearray[2]) ? '' : $addresslinearray[2], 70, 'right', 'UTF-8', 1)."\n"; // address line 2
|
||||||
|
$s .= dol_trunc($mysoc->zip, 16, 'right', 'UTF-8', 1)."\n";
|
||||||
|
$s .= dol_trunc($mysoc->town, 35, 'right', 'UTF-8', 1)."\n";
|
||||||
|
$s .= dol_trunc($mysoc->country_code, 2, 'right', 'UTF-8', 1)."\n";
|
||||||
|
// Final seller
|
||||||
|
$s .= "\n";
|
||||||
|
$s .= "\n";
|
||||||
|
$s .= "\n";
|
||||||
|
$s .= "\n";
|
||||||
|
$s .= "\n";
|
||||||
|
$s .= "\n";
|
||||||
|
$s .= "\n";
|
||||||
|
// Amount of payment (to do?)
|
||||||
|
$s .= price($pricewithtaxstring, 0, 'none', 0, 0, 2)."\n";
|
||||||
|
$s .= ($this->multicurrency_code ? $this->multicurrency_code : $conf->currency)."\n";
|
||||||
|
// Buyer
|
||||||
|
$s .= "S\n";
|
||||||
|
$s .= dol_trunc($this->thirdparty->name, 70, 'right', 'UTF-8', 1)."\n";
|
||||||
|
$addresslinearray = explode("\n", $this->thirdparty->address);
|
||||||
|
$s .= dol_trunc(empty($addresslinearray[1]) ? '' : $addresslinearray[1], 70, 'right', 'UTF-8', 1)."\n"; // address line 1
|
||||||
|
$s .= dol_trunc(empty($addresslinearray[2]) ? '' : $addresslinearray[2], 70, 'right', 'UTF-8', 1)."\n"; // address line 2
|
||||||
|
$s .= dol_trunc($this->thirdparty->zip, 16, 'right', 'UTF-8', 1)."\n";
|
||||||
|
$s .= dol_trunc($this->thirdparty->town, 35, 'right', 'UTF-8', 1)."\n";
|
||||||
|
$s .= dol_trunc($this->thirdparty->country_code, 2, 'right', 'UTF-8', 1)."\n";
|
||||||
|
// ID of payment
|
||||||
|
$s .= "NON\n"; // NON or QRR
|
||||||
|
$s .= "\n"; // QR Code if previous field is QRR
|
||||||
|
if ($complementaryinfo) {
|
||||||
|
$s .= $complementaryinfo."\n";
|
||||||
|
} else {
|
||||||
|
$s .= "\n";
|
||||||
|
}
|
||||||
|
$s .= "EPD\n";
|
||||||
|
$s .= "\n";
|
||||||
|
//var_dump($s);exit;
|
||||||
|
return $s;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -186,6 +186,12 @@ abstract class CommonObject
|
|||||||
*/
|
*/
|
||||||
public $projet;
|
public $projet;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated
|
||||||
|
* @see fk_project
|
||||||
|
*/
|
||||||
|
public $fk_projet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Contact a related contact
|
* @var Contact a related contact
|
||||||
* @see fetch_contact()
|
* @see fetch_contact()
|
||||||
@ -272,7 +278,7 @@ abstract class CommonObject
|
|||||||
public $country_id;
|
public $country_id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string The ISO country code on 2 chars.
|
||||||
* @see getFullAddress(), isInEEC(), country
|
* @see getFullAddress(), isInEEC(), country
|
||||||
*/
|
*/
|
||||||
public $country_code;
|
public $country_code;
|
||||||
|
|||||||
@ -746,8 +746,8 @@ class Conf
|
|||||||
$this->global->PDF_ALLOW_HTML_FOR_FREE_TEXT = 1; // allow html content into free footer text
|
$this->global->PDF_ALLOW_HTML_FOR_FREE_TEXT = 1; // allow html content into free footer text
|
||||||
}
|
}
|
||||||
|
|
||||||
// Default max file size for upload
|
// Default max file size for upload (deprecated)
|
||||||
$this->maxfilesize = (empty($this->global->MAIN_UPLOAD_DOC) ? 0 : (int) $this->global->MAIN_UPLOAD_DOC * 1024);
|
//$this->maxfilesize = (empty($this->global->MAIN_UPLOAD_DOC) ? 0 : (int) $this->global->MAIN_UPLOAD_DOC * 1024);
|
||||||
|
|
||||||
// By default, we propagate contacts
|
// By default, we propagate contacts
|
||||||
if (!isset($this->global->MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN)) {
|
if (!isset($this->global->MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN)) {
|
||||||
|
|||||||
@ -144,6 +144,10 @@ class EvalMath
|
|||||||
*/
|
*/
|
||||||
public function evaluate($expr)
|
public function evaluate($expr)
|
||||||
{
|
{
|
||||||
|
if (empty($expr)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
$this->last_error = null;
|
$this->last_error = null;
|
||||||
$this->last_error_code = null;
|
$this->last_error_code = null;
|
||||||
$expr = trim($expr);
|
$expr = trim($expr);
|
||||||
@ -374,10 +378,6 @@ class EvalMath
|
|||||||
*/
|
*/
|
||||||
private function pfx($tokens, $vars = array())
|
private function pfx($tokens, $vars = array())
|
||||||
{
|
{
|
||||||
if ($tokens == false) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$stack = new EvalMathStack();
|
$stack = new EvalMathStack();
|
||||||
|
|
||||||
foreach ($tokens as $token) { // nice and easy
|
foreach ($tokens as $token) { // nice and easy
|
||||||
|
|||||||
@ -60,6 +60,11 @@ class ExtraFields
|
|||||||
*/
|
*/
|
||||||
public $attribute_choice;
|
public $attribute_choice;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array array to store extrafields definition
|
||||||
|
* @deprecated
|
||||||
|
*/
|
||||||
|
public $attribute_list;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var array New array to store extrafields definition
|
* @var array New array to store extrafields definition
|
||||||
|
|||||||
@ -4749,7 +4749,7 @@ class Form
|
|||||||
print img_picto('', 'bank_account', 'class="pictofixedwidth"');
|
print img_picto('', 'bank_account', 'class="pictofixedwidth"');
|
||||||
$nbaccountfound = $this->select_comptes($selected, $htmlname, 0, '', $addempty);
|
$nbaccountfound = $this->select_comptes($selected, $htmlname, 0, '', $addempty);
|
||||||
if ($nbaccountfound > 0) {
|
if ($nbaccountfound > 0) {
|
||||||
print '<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">';
|
print '<input type="submit" class="button smallpaddingimp valignmiddle" value="'.$langs->trans("Modify").'">';
|
||||||
}
|
}
|
||||||
print '</form>';
|
print '</form>';
|
||||||
} else {
|
} else {
|
||||||
@ -4901,9 +4901,11 @@ class Form
|
|||||||
* @param int|string $height Force height of box (0 = auto)
|
* @param int|string $height Force height of box (0 = auto)
|
||||||
* @param int $width Force width of box ('999' or '90%'). Ignored and forced to 90% on smartphones.
|
* @param int $width Force width of box ('999' or '90%'). Ignored and forced to 90% on smartphones.
|
||||||
* @param int $disableformtag 1=Disable form tag. Can be used if we are already inside a <form> section.
|
* @param int $disableformtag 1=Disable form tag. Can be used if we are already inside a <form> section.
|
||||||
|
* @param string $labelbuttonyes Label for Yes
|
||||||
|
* @param string $labelbuttonno Label for No
|
||||||
* @return string HTML ajax code if a confirm ajax popup is required, Pure HTML code if it's an html form
|
* @return string HTML ajax code if a confirm ajax popup is required, Pure HTML code if it's an html form
|
||||||
*/
|
*/
|
||||||
public function formconfirm($page, $title, $question, $action, $formquestion = '', $selectedchoice = '', $useajax = 0, $height = 0, $width = 500, $disableformtag = 0)
|
public function formconfirm($page, $title, $question, $action, $formquestion = '', $selectedchoice = '', $useajax = 0, $height = 0, $width = 500, $disableformtag = 0, $labelbuttonyes = 'Yes', $labelbuttonno = 'No')
|
||||||
{
|
{
|
||||||
global $langs, $conf;
|
global $langs, $conf;
|
||||||
|
|
||||||
@ -5012,7 +5014,7 @@ class Form
|
|||||||
$more .= ' checked="checked"';
|
$more .= ' checked="checked"';
|
||||||
}
|
}
|
||||||
$more .= ' /> ';
|
$more .= ' /> ';
|
||||||
$more .= '<label for="'.dol_escape_htmltag($input['name'].$selkey).'">'.$selval.'</label>';
|
$more .= '<label for="'.dol_escape_htmltag($input['name'].$selkey).'" class="valignmiddle">'.$selval.'</label>';
|
||||||
$more .= '</div></div>'."\n";
|
$more .= '</div></div>'."\n";
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
@ -5118,6 +5120,7 @@ class Form
|
|||||||
$(this).parent().find("button.ui-button:eq(2)").focus();
|
$(this).parent().find("button.ui-button:eq(2)").focus();
|
||||||
},';
|
},';
|
||||||
}
|
}
|
||||||
|
|
||||||
$formconfirm .= '
|
$formconfirm .= '
|
||||||
resizable: false,
|
resizable: false,
|
||||||
height: "'.$height.'",
|
height: "'.$height.'",
|
||||||
@ -5125,7 +5128,7 @@ class Form
|
|||||||
modal: true,
|
modal: true,
|
||||||
closeOnEscape: false,
|
closeOnEscape: false,
|
||||||
buttons: {
|
buttons: {
|
||||||
"'.dol_escape_js($langs->transnoentities("Yes")).'": function() {
|
"'.dol_escape_js($langs->transnoentities($labelbuttonyes)).'": function() {
|
||||||
var options = "&token='.urlencode(newToken()).'";
|
var options = "&token='.urlencode(newToken()).'";
|
||||||
var inputok = '.json_encode($inputok).'; /* List of fields into form */
|
var inputok = '.json_encode($inputok).'; /* List of fields into form */
|
||||||
var pageyes = "'.dol_escape_js(!empty($pageyes) ? $pageyes : '').'";
|
var pageyes = "'.dol_escape_js(!empty($pageyes) ? $pageyes : '').'";
|
||||||
@ -5148,7 +5151,7 @@ class Form
|
|||||||
if (pageyes.length > 0) { location.href = urljump; }
|
if (pageyes.length > 0) { location.href = urljump; }
|
||||||
$(this).dialog("close");
|
$(this).dialog("close");
|
||||||
},
|
},
|
||||||
"'.dol_escape_js($langs->transnoentities("No")).'": function() {
|
"'.dol_escape_js($langs->transnoentities($labelbuttonno)).'": function() {
|
||||||
var options = "&token='.urlencode(newToken()).'";
|
var options = "&token='.urlencode(newToken()).'";
|
||||||
var inputko = '.json_encode($inputko).'; /* List of fields into form */
|
var inputko = '.json_encode($inputko).'; /* List of fields into form */
|
||||||
var pageno="'.dol_escape_js(!empty($pageno) ? $pageno : '').'";
|
var pageno="'.dol_escape_js(!empty($pageno) ? $pageno : '').'";
|
||||||
@ -5213,7 +5216,7 @@ class Form
|
|||||||
$formconfirm .= '<tr class="valid">';
|
$formconfirm .= '<tr class="valid">';
|
||||||
$formconfirm .= '<td class="valid">'.$question.'</td>';
|
$formconfirm .= '<td class="valid">'.$question.'</td>';
|
||||||
$formconfirm .= '<td class="valid center">';
|
$formconfirm .= '<td class="valid center">';
|
||||||
$formconfirm .= $this->selectyesno("confirm", $newselectedchoice, 0, false, 0, 0, 'marginleftonly marginrightonly');
|
$formconfirm .= $this->selectyesno("confirm", $newselectedchoice, 0, false, 0, 0, 'marginleftonly marginrightonly', $labelbuttonyes, $labelbuttonno);
|
||||||
$formconfirm .= '<input class="button valignmiddle confirmvalidatebutton small" type="submit" value="'.$langs->trans("Validate").'">';
|
$formconfirm .= '<input class="button valignmiddle confirmvalidatebutton small" type="submit" value="'.$langs->trans("Validate").'">';
|
||||||
$formconfirm .= '</td>';
|
$formconfirm .= '</td>';
|
||||||
$formconfirm .= '</tr>'."\n";
|
$formconfirm .= '</tr>'."\n";
|
||||||
@ -8844,9 +8847,11 @@ class Form
|
|||||||
* @param int $useempty 1=Add empty line
|
* @param int $useempty 1=Add empty line
|
||||||
* @param int $addjscombo 1=Add js beautifier on combo box
|
* @param int $addjscombo 1=Add js beautifier on combo box
|
||||||
* @param string $morecss More CSS
|
* @param string $morecss More CSS
|
||||||
* @return string See option
|
* @param string $labelyes Label for Yes
|
||||||
|
* @param string $labelno Label for No
|
||||||
|
* @return string See option
|
||||||
*/
|
*/
|
||||||
public function selectyesno($htmlname, $value = '', $option = 0, $disabled = false, $useempty = 0, $addjscombo = 0, $morecss = '')
|
public function selectyesno($htmlname, $value = '', $option = 0, $disabled = false, $useempty = 0, $addjscombo = 0, $morecss = '', $labelyes = 'Yes', $labelno = 'No')
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
@ -8857,6 +8862,7 @@ class Form
|
|||||||
$no = "0";
|
$no = "0";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$disabled = ($disabled ? ' disabled' : '');
|
$disabled = ($disabled ? ' disabled' : '');
|
||||||
|
|
||||||
$resultyesno = '<select class="flat width75'.($morecss ? ' '.$morecss : '').'" id="'.$htmlname.'" name="'.$htmlname.'"'.$disabled.'>'."\n";
|
$resultyesno = '<select class="flat width75'.($morecss ? ' '.$morecss : '').'" id="'.$htmlname.'" name="'.$htmlname.'"'.$disabled.'>'."\n";
|
||||||
@ -8864,12 +8870,12 @@ class Form
|
|||||||
$resultyesno .= '<option value="-1"'.(($value < 0) ? ' selected' : '').'> </option>'."\n";
|
$resultyesno .= '<option value="-1"'.(($value < 0) ? ' selected' : '').'> </option>'."\n";
|
||||||
}
|
}
|
||||||
if (("$value" == 'yes') || ($value == 1)) {
|
if (("$value" == 'yes') || ($value == 1)) {
|
||||||
$resultyesno .= '<option value="'.$yes.'" selected>'.$langs->trans("Yes").'</option>'."\n";
|
$resultyesno .= '<option value="'.$yes.'" selected>'.$langs->trans($labelyes).'</option>'."\n";
|
||||||
$resultyesno .= '<option value="'.$no.'">'.$langs->trans("No").'</option>'."\n";
|
$resultyesno .= '<option value="'.$no.'">'.$langs->trans($labelno).'</option>'."\n";
|
||||||
} else {
|
} else {
|
||||||
$selected = (($useempty && $value != '0' && $value != 'no') ? '' : ' selected');
|
$selected = (($useempty && $value != '0' && $value != 'no') ? '' : ' selected');
|
||||||
$resultyesno .= '<option value="'.$yes.'">'.$langs->trans("Yes").'</option>'."\n";
|
$resultyesno .= '<option value="'.$yes.'">'.$langs->trans($labelyes).'</option>'."\n";
|
||||||
$resultyesno .= '<option value="'.$no.'"'.$selected.'>'.$langs->trans("No").'</option>'."\n";
|
$resultyesno .= '<option value="'.$no.'"'.$selected.'>'.$langs->trans($labelno).'</option>'."\n";
|
||||||
}
|
}
|
||||||
$resultyesno .= '</select>'."\n";
|
$resultyesno .= '</select>'."\n";
|
||||||
|
|
||||||
@ -9361,7 +9367,14 @@ class Form
|
|||||||
if ($object->photo) {
|
if ($object->photo) {
|
||||||
$ret .= '<tr><td><input type="checkbox" class="flat photodelete" name="deletephoto" id="photodelete"> <label for="photodelete">'.$langs->trans("Delete").'</label><br><br></td></tr>';
|
$ret .= '<tr><td><input type="checkbox" class="flat photodelete" name="deletephoto" id="photodelete"> <label for="photodelete">'.$langs->trans("Delete").'</label><br><br></td></tr>';
|
||||||
}
|
}
|
||||||
$ret .= '<tr><td class="tdoverflow"><input type="file" class="flat maxwidth200onsmartphone" name="photo" id="photoinput" accept="image/*"'.($capture ? ' capture="'.$capture.'"' : '').'></td></tr>';
|
$ret .= '<tr><td class="tdoverflow">';
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
$ret .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
|
$ret .= '<input type="file" class="flat maxwidth200onsmartphone" name="photo" id="photoinput" accept="image/*"'.($capture ? ' capture="'.$capture.'"' : '').'>';
|
||||||
|
$ret .= '</td></tr>';
|
||||||
$ret .= '</table>';
|
$ret .= '</table>';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -283,7 +283,7 @@ class FormAccounting extends Form
|
|||||||
$out .= '</select>';
|
$out .= '</select>';
|
||||||
//if ($user->admin && $help) $out .= info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
|
//if ($user->admin && $help) $out .= info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
|
||||||
} else {
|
} else {
|
||||||
$out .= $langs->trans("ErrorNoAccountingCategoryForThisCountry", $mysoc->country_code);
|
$out = $langs->trans("ErrorNoAccountingCategoryForThisCountry", $mysoc->country_code);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
dol_print_error($this->db);
|
dol_print_error($this->db);
|
||||||
@ -505,6 +505,7 @@ class FormAccounting extends Form
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Build select
|
// Build select
|
||||||
|
$out = '';
|
||||||
$out .= Form::selectarray($htmlname, $aux_account, $selectid, ($showempty ? (is_numeric($showempty) ? 1 : $showempty): 0), 0, 0, '', 0, 0, 0, '', $morecss, 1);
|
$out .= Form::selectarray($htmlname, $aux_account, $selectid, ($showempty ? (is_numeric($showempty) ? 1 : $showempty): 0), 0, 0, '', 0, 0, 0, '', $morecss, 1);
|
||||||
//automatic filling if we give the name of the subledger_label input
|
//automatic filling if we give the name of the subledger_label input
|
||||||
if (!empty($conf->use_javascript_ajax) && !empty($labelhtmlname)) {
|
if (!empty($conf->use_javascript_ajax) && !empty($labelhtmlname)) {
|
||||||
|
|||||||
@ -188,7 +188,7 @@ class FormContract
|
|||||||
print '<input type="hidden" name="action" value="setcontract">';
|
print '<input type="hidden" name="action" value="setcontract">';
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
$this->select_contract($socid, $selected, $htmlname, $maxlength, $showempty, $showRef);
|
$this->select_contract($socid, $selected, $htmlname, $maxlength, $showempty, $showRef);
|
||||||
print '<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">';
|
print '<input type="submit" class="button smallpaddingimp valignmiddle" value="'.$langs->trans("Modify").'">';
|
||||||
print '</form>';
|
print '</form>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -148,64 +148,15 @@ class FormFile
|
|||||||
|
|
||||||
$out .= '<td class="valignmiddle nowrap">';
|
$out .= '<td class="valignmiddle nowrap">';
|
||||||
|
|
||||||
$max = $conf->global->MAIN_UPLOAD_DOC; // In Kb
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
$maxphp = @ini_get('upload_max_filesize'); // In unknown
|
$max = $maxfilesizearray['max'];
|
||||||
if (preg_match('/k$/i', $maxphp)) {
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
$maxphp = preg_replace('/k$/i', '', $maxphp);
|
$maxphptoshow = $maxfilesizearray['maxphptoshow'];
|
||||||
$maxphp = $maxphp * 1;
|
$maxphptoshowparam = $maxfilesizearray['maxphptoshowparam'];
|
||||||
}
|
|
||||||
if (preg_match('/m$/i', $maxphp)) {
|
|
||||||
$maxphp = preg_replace('/m$/i', '', $maxphp);
|
|
||||||
$maxphp = $maxphp * 1024;
|
|
||||||
}
|
|
||||||
if (preg_match('/g$/i', $maxphp)) {
|
|
||||||
$maxphp = preg_replace('/g$/i', '', $maxphp);
|
|
||||||
$maxphp = $maxphp * 1024 * 1024;
|
|
||||||
}
|
|
||||||
if (preg_match('/t$/i', $maxphp)) {
|
|
||||||
$maxphp = preg_replace('/t$/i', '', $maxphp);
|
|
||||||
$maxphp = $maxphp * 1024 * 1024 * 1024;
|
|
||||||
}
|
|
||||||
$maxphp2 = @ini_get('post_max_size'); // In unknown
|
|
||||||
if (preg_match('/k$/i', $maxphp2)) {
|
|
||||||
$maxphp2 = preg_replace('/k$/i', '', $maxphp2);
|
|
||||||
$maxphp2 = $maxphp2 * 1;
|
|
||||||
}
|
|
||||||
if (preg_match('/m$/i', $maxphp2)) {
|
|
||||||
$maxphp2 = preg_replace('/m$/i', '', $maxphp2);
|
|
||||||
$maxphp2 = $maxphp2 * 1024;
|
|
||||||
}
|
|
||||||
if (preg_match('/g$/i', $maxphp2)) {
|
|
||||||
$maxphp2 = preg_replace('/g$/i', '', $maxphp2);
|
|
||||||
$maxphp2 = $maxphp2 * 1024 * 1024;
|
|
||||||
}
|
|
||||||
if (preg_match('/t$/i', $maxphp2)) {
|
|
||||||
$maxphp2 = preg_replace('/t$/i', '', $maxphp2);
|
|
||||||
$maxphp2 = $maxphp2 * 1024 * 1024 * 1024;
|
|
||||||
}
|
|
||||||
// Now $max and $maxphp and $maxphp2 are in Kb
|
|
||||||
$maxmin = $max;
|
|
||||||
$maxphptoshow = $maxphptoshowparam = '';
|
|
||||||
if ($maxphp > 0) {
|
|
||||||
$maxmin = min($max, $maxphp);
|
|
||||||
$maxphptoshow = $maxphp;
|
|
||||||
$maxphptoshowparam = 'upload_max_filesize';
|
|
||||||
}
|
|
||||||
if ($maxphp2 > 0) {
|
|
||||||
$maxmin = min($max, $maxphp2);
|
|
||||||
if ($maxphp2 < $maxphp) {
|
|
||||||
$maxphptoshow = $maxphp2;
|
|
||||||
$maxphptoshowparam = 'post_max_size';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($maxmin > 0) {
|
if ($maxmin > 0) {
|
||||||
// MAX_FILE_SIZE doit précéder le champ input de type file
|
$out .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
$out .= '<input type="hidden" name="max_file_size" value="'.($maxmin * 1024).'">';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$out .= '<input class="flat minwidth400 maxwidth200onsmartphone" type="file"';
|
$out .= '<input class="flat minwidth400 maxwidth200onsmartphone" type="file"';
|
||||||
//$out .= ((!empty($conf->global->MAIN_DISABLE_MULTIPLE_FILEUPLOAD) || $conf->browser->layout != 'classic') ? ' name="userfile"' : ' name="userfile[]" multiple');
|
|
||||||
$out .= ((!empty($conf->global->MAIN_DISABLE_MULTIPLE_FILEUPLOAD) || $disablemulti) ? ' name="userfile"' : ' name="userfile[]" multiple');
|
$out .= ((!empty($conf->global->MAIN_DISABLE_MULTIPLE_FILEUPLOAD) || $disablemulti) ? ' name="userfile"' : ' name="userfile[]" multiple');
|
||||||
$out .= (empty($conf->global->MAIN_UPLOAD_DOC) || empty($perm) ? ' disabled' : '');
|
$out .= (empty($conf->global->MAIN_UPLOAD_DOC) || empty($perm) ? ' disabled' : '');
|
||||||
$out .= (!empty($accept) ? ' accept="'.$accept.'"' : ' accept=""');
|
$out .= (!empty($accept) ? ' accept="'.$accept.'"' : ' accept=""');
|
||||||
|
|||||||
@ -829,6 +829,11 @@ class FormMail extends Form
|
|||||||
$out .= '<span class="opacitymedium">'.$langs->trans("NoAttachedFiles").'</span><br>';
|
$out .= '<span class="opacitymedium">'.$langs->trans("NoAttachedFiles").'</span><br>';
|
||||||
}
|
}
|
||||||
if ($this->withfile == 2) {
|
if ($this->withfile == 2) {
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
$out .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
// Can add other files
|
// Can add other files
|
||||||
if (!empty($conf->global->FROM_MAIL_USE_INPUT_FILE_MULTIPLE)) {
|
if (!empty($conf->global->FROM_MAIL_USE_INPUT_FILE_MULTIPLE)) {
|
||||||
$out .= '<input type="file" class="flat" id="addedfile" name="addedfile[]" value="'.$langs->trans("Upload").'" multiple />';
|
$out .= '<input type="file" class="flat" id="addedfile" name="addedfile[]" value="'.$langs->trans("Upload").'" multiple />';
|
||||||
|
|||||||
@ -700,11 +700,14 @@ class FormOther
|
|||||||
print ' selected';
|
print ' selected';
|
||||||
}
|
}
|
||||||
|
|
||||||
$labeltoshow = $langs->trans("Project").' '.$lines[$i]->projectref;
|
$labeltoshow = $lines[$i]->projectref;
|
||||||
|
//$labeltoshow .= ' '.$lines[$i]->projectlabel;
|
||||||
if (empty($lines[$i]->public)) {
|
if (empty($lines[$i]->public)) {
|
||||||
$labeltoshow .= ' <span class="opacitymedium">('.$langs->trans("Visibility").': '.$langs->trans("PrivateProject").')</span>';
|
//$labeltoshow .= ' <span class="opacitymedium">('.$langs->trans("Visibility").': '.$langs->trans("PrivateProject").')</span>';
|
||||||
|
$labeltoshow = img_picto($lines[$i]->projectlabel, 'project', 'class="pictofixedwidth"').$labeltoshow;
|
||||||
} else {
|
} else {
|
||||||
$labeltoshow .= ' <span class="opacitymedium">('.$langs->trans("Visibility").': '.$langs->trans("SharedProject").')</span>';
|
//$labeltoshow .= ' <span class="opacitymedium">('.$langs->trans("Visibility").': '.$langs->trans("SharedProject").')</span>';
|
||||||
|
$labeltoshow = img_picto($lines[$i]->projectlabel, 'projectpub', 'class="pictofixedwidth"').$labeltoshow;
|
||||||
}
|
}
|
||||||
|
|
||||||
print ' data-html="'.dol_escape_htmltag($labeltoshow).'"';
|
print ' data-html="'.dol_escape_htmltag($labeltoshow).'"';
|
||||||
@ -738,12 +741,14 @@ class FormOther
|
|||||||
print ' disabled';
|
print ' disabled';
|
||||||
}
|
}
|
||||||
|
|
||||||
$labeltoshow = $langs->trans("Project").' '.$lines[$i]->projectref;
|
$labeltoshow = $lines[$i]->projectref;
|
||||||
$labeltoshow .= ' '.$lines[$i]->projectlabel;
|
//$labeltoshow .= ' '.$lines[$i]->projectlabel;
|
||||||
if (empty($lines[$i]->public)) {
|
if (empty($lines[$i]->public)) {
|
||||||
$labeltoshow .= ' <span class="opacitymedium">('.$langs->trans("Visibility").': '.$langs->trans("PrivateProject").')</span>';
|
//$labeltoshow .= ' <span class="opacitymedium">('.$langs->trans("Visibility").': '.$langs->trans("PrivateProject").')</span>';
|
||||||
|
$labeltoshow = img_picto($lines[$i]->projectlabel, 'project', 'class="pictofixedwidth"').$labeltoshow;
|
||||||
} else {
|
} else {
|
||||||
$labeltoshow .= ' <span class="opacitymedium">('.$langs->trans("Visibility").': '.$langs->trans("SharedProject").')</span>';
|
//$labeltoshow .= ' <span class="opacitymedium">('.$langs->trans("Visibility").': '.$langs->trans("SharedProject").')</span>';
|
||||||
|
$labeltoshow = img_picto($lines[$i]->projectlabel, 'projectpub', 'class="pictofixedwidth"').$labeltoshow;
|
||||||
}
|
}
|
||||||
if ($lines[$i]->id) {
|
if ($lines[$i]->id) {
|
||||||
$labeltoshow .= ' > ';
|
$labeltoshow .= ' > ';
|
||||||
|
|||||||
@ -491,6 +491,11 @@ class FormTicket
|
|||||||
$out .= $langs->trans("NoAttachedFiles").'<br>';
|
$out .= $langs->trans("NoAttachedFiles").'<br>';
|
||||||
}
|
}
|
||||||
if ($this->withfile == 2) { // Can add other files
|
if ($this->withfile == 2) { // Can add other files
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
$out .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
$out .= '<input type="file" class="flat" id="addedfile" name="addedfile" value="'.$langs->trans("Upload").'" />';
|
$out .= '<input type="file" class="flat" id="addedfile" name="addedfile" value="'.$langs->trans("Upload").'" />';
|
||||||
$out .= ' ';
|
$out .= ' ';
|
||||||
$out .= '<input type="submit" class="button smallpaddingimp reposition" id="addfile" name="addfile" value="'.$langs->trans("MailingAddFile").'" />';
|
$out .= '<input type="submit" class="button smallpaddingimp reposition" id="addfile" name="addfile" value="'.$langs->trans("MailingAddFile").'" />';
|
||||||
|
|||||||
@ -33,6 +33,13 @@ abstract class Stats
|
|||||||
protected $lastfetchdate = array(); // Dates of cache file read by methods
|
protected $lastfetchdate = array(); // Dates of cache file read by methods
|
||||||
public $cachefilesuffix = ''; // Suffix to add to name of cache file (to avoid file name conflicts)
|
public $cachefilesuffix = ''; // Suffix to add to name of cache file (to avoid file name conflicts)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $year number
|
||||||
|
* @param int $format 0=Label of abscissa is a translated text, 1=Label of abscissa is month number, 2=Label of abscissa is first letter of month
|
||||||
|
* @return int value
|
||||||
|
*/
|
||||||
|
protected abstract function getNbByMonth($year, $format = 0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return nb of elements by month for several years
|
* Return nb of elements by month for several years
|
||||||
*
|
*
|
||||||
@ -123,6 +130,13 @@ abstract class Stats
|
|||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $year year number
|
||||||
|
* @param int $format 0=Label of abscissa is a translated text, 1=Label of abscissa is month number, 2=Label of abscissa is first letter of month
|
||||||
|
* @return int value
|
||||||
|
*/
|
||||||
|
protected abstract function getAmountByMonth($year, $format = 0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return amount of elements by month for several years.
|
* Return amount of elements by month for several years.
|
||||||
* Criterias used to build request are defined into the constructor of parent class into xxx/class/xxxstats.class.php
|
* Criterias used to build request are defined into the constructor of parent class into xxx/class/xxxstats.class.php
|
||||||
@ -460,7 +474,6 @@ abstract class Stats
|
|||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
|
||||||
/**
|
/**
|
||||||
* Return the amount per month for a given year
|
* Return the amount per month for a given year
|
||||||
|
|||||||
@ -300,13 +300,13 @@ class Validate
|
|||||||
/**
|
/**
|
||||||
* Check for all values in db
|
* Check for all values in db
|
||||||
*
|
*
|
||||||
* @param array $values Boolean to validate
|
* @param integer $id of element
|
||||||
* @param string $classname the class name
|
* @param string $classname the class name
|
||||||
* @param string $classpath the class path
|
* @param string $classpath the class path
|
||||||
* @return boolean Validity is ok or not
|
* @return boolean Validity is ok or not
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function isFetchable($values, $classname, $classpath)
|
public function isFetchable($id, $classname, $classpath)
|
||||||
{
|
{
|
||||||
if (!empty($classpath)) {
|
if (!empty($classpath)) {
|
||||||
if (dol_include_once($classpath)) {
|
if (dol_include_once($classpath)) {
|
||||||
@ -319,7 +319,7 @@ class Validate
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($object->table_element) && $object->isExistingObject($object->table_element, $values)) {
|
if (!empty($object->table_element) && $object->isExistingObject($object->table_element, $id)) {
|
||||||
return true;
|
return true;
|
||||||
} else { $this->error = $this->outputLang->trans('RequireValidExistingElement'); }
|
} else { $this->error = $this->outputLang->trans('RequireValidExistingElement'); }
|
||||||
} else { $this->error = $this->outputLang->trans('BadSetupOfFieldClassNotFoundForValidation'); }
|
} else { $this->error = $this->outputLang->trans('BadSetupOfFieldClassNotFoundForValidation'); }
|
||||||
|
|||||||
@ -132,6 +132,9 @@ function getEntity($element, $shared = 1, $currentobject = null)
|
|||||||
case 'order_supplier':
|
case 'order_supplier':
|
||||||
$element = 'supplier_order';
|
$element = 'supplier_order';
|
||||||
break; // "/fourn/class/fournisseur.commande.class.php"
|
break; // "/fourn/class/fournisseur.commande.class.php"
|
||||||
|
case 'invoice_supplier':
|
||||||
|
$element = 'supplier_invoice';
|
||||||
|
break; // "/fourn/class/fournisseur.facture.class.php"
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_object($mc)) {
|
if (is_object($mc)) {
|
||||||
@ -2246,6 +2249,7 @@ function dol_banner_tab($object, $paramid, $morehtml = '', $shownav = 1, $fieldi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Show address and email
|
||||||
if (method_exists($object, 'getBannerAddress') && !in_array($object->element, array('product', 'bookmark', 'ecm_directories', 'ecm_files'))) {
|
if (method_exists($object, 'getBannerAddress') && !in_array($object->element, array('product', 'bookmark', 'ecm_directories', 'ecm_files'))) {
|
||||||
$moreaddress = $object->getBannerAddress('refaddress', $object);
|
$moreaddress = $object->getBannerAddress('refaddress', $object);
|
||||||
if ($moreaddress) {
|
if ($moreaddress) {
|
||||||
@ -2950,6 +2954,7 @@ function dol_print_email($email, $cid = 0, $socid = 0, $addlink = 0, $max = 64,
|
|||||||
//$rep .= '</div>';
|
//$rep .= '</div>';
|
||||||
if ($hookmanager) {
|
if ($hookmanager) {
|
||||||
$parameters = array('cid' => $cid, 'socid' => $socid, 'addlink' => $addlink, 'picto' => $withpicto);
|
$parameters = array('cid' => $cid, 'socid' => $socid, 'addlink' => $addlink, 'picto' => $withpicto);
|
||||||
|
|
||||||
$reshook = $hookmanager->executeHooks('printEmail', $parameters, $email);
|
$reshook = $hookmanager->executeHooks('printEmail', $parameters, $email);
|
||||||
if ($reshook > 0) {
|
if ($reshook > 0) {
|
||||||
$rep = '';
|
$rep = '';
|
||||||
@ -5464,7 +5469,7 @@ function vatrate($rate, $addpercent = false, $info_bits = 0, $usestarfornpr = 0)
|
|||||||
*
|
*
|
||||||
* @param float $amount Amount to format
|
* @param float $amount Amount to format
|
||||||
* @param integer $form Type of format, HTML or not (not by default)
|
* @param integer $form Type of format, HTML or not (not by default)
|
||||||
* @param Translate|string $outlangs Object langs for output
|
* @param Translate|string $outlangs Object langs for output. '' use default lang. 'none' use international separators.
|
||||||
* @param int $trunc 1=Truncate if there is more decimals than MAIN_MAX_DECIMALS_SHOWN (default), 0=Does not truncate. Deprecated because amount are rounded (to unit or total amount accurancy) before beeing inserted into database or after a computation, so this parameter should be useless.
|
* @param int $trunc 1=Truncate if there is more decimals than MAIN_MAX_DECIMALS_SHOWN (default), 0=Does not truncate. Deprecated because amount are rounded (to unit or total amount accurancy) before beeing inserted into database or after a computation, so this parameter should be useless.
|
||||||
* @param int $rounding Minimum number of decimal to show. If 0, no change, if -1, we use min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT)
|
* @param int $rounding Minimum number of decimal to show. If 0, no change, if -1, we use min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT)
|
||||||
* @param int $forcerounding Force the number of decimal to forcerounding decimal (-1=do not force)
|
* @param int $forcerounding Force the number of decimal to forcerounding decimal (-1=do not force)
|
||||||
@ -5487,25 +5492,31 @@ function price($amount, $form = 0, $outlangs = '', $trunc = 1, $rounding = -1, $
|
|||||||
}
|
}
|
||||||
$nbdecimal = $rounding;
|
$nbdecimal = $rounding;
|
||||||
|
|
||||||
// Output separators by default (french)
|
if ($outlangs === 'none') {
|
||||||
$dec = ',';
|
// Use international separators
|
||||||
$thousand = ' ';
|
$dec = '.';
|
||||||
|
|
||||||
// If $outlangs not forced, we use use language
|
|
||||||
if (!is_object($outlangs)) {
|
|
||||||
$outlangs = $langs;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($outlangs->transnoentitiesnoconv("SeparatorDecimal") != "SeparatorDecimal") {
|
|
||||||
$dec = $outlangs->transnoentitiesnoconv("SeparatorDecimal");
|
|
||||||
}
|
|
||||||
if ($outlangs->transnoentitiesnoconv("SeparatorThousand") != "SeparatorThousand") {
|
|
||||||
$thousand = $outlangs->transnoentitiesnoconv("SeparatorThousand");
|
|
||||||
}
|
|
||||||
if ($thousand == 'None') {
|
|
||||||
$thousand = '';
|
$thousand = '';
|
||||||
} elseif ($thousand == 'Space') {
|
} else {
|
||||||
|
// Output separators by default (french)
|
||||||
|
$dec = ',';
|
||||||
$thousand = ' ';
|
$thousand = ' ';
|
||||||
|
|
||||||
|
// If $outlangs not forced, we use use language
|
||||||
|
if (!is_object($outlangs)) {
|
||||||
|
$outlangs = $langs;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($outlangs->transnoentitiesnoconv("SeparatorDecimal") != "SeparatorDecimal") {
|
||||||
|
$dec = $outlangs->transnoentitiesnoconv("SeparatorDecimal");
|
||||||
|
}
|
||||||
|
if ($outlangs->transnoentitiesnoconv("SeparatorThousand") != "SeparatorThousand") {
|
||||||
|
$thousand = $outlangs->transnoentitiesnoconv("SeparatorThousand");
|
||||||
|
}
|
||||||
|
if ($thousand == 'None') {
|
||||||
|
$thousand = '';
|
||||||
|
} elseif ($thousand == 'Space') {
|
||||||
|
$thousand = ' ';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//print "outlangs=".$outlangs->defaultlang." amount=".$amount." html=".$form." trunc=".$trunc." nbdecimal=".$nbdecimal." dec='".$dec."' thousand='".$thousand."'<br>";
|
//print "outlangs=".$outlangs->defaultlang." amount=".$amount." html=".$form." trunc=".$trunc." nbdecimal=".$nbdecimal." dec='".$dec."' thousand='".$thousand."'<br>";
|
||||||
|
|
||||||
@ -5544,7 +5555,7 @@ function price($amount, $form = 0, $outlangs = '', $trunc = 1, $rounding = -1, $
|
|||||||
}
|
}
|
||||||
// Add symbol of currency if requested
|
// Add symbol of currency if requested
|
||||||
$cursymbolbefore = $cursymbolafter = '';
|
$cursymbolbefore = $cursymbolafter = '';
|
||||||
if ($currency_code) {
|
if ($currency_code && is_object($outlangs)) {
|
||||||
if ($currency_code == 'auto') {
|
if ($currency_code == 'auto') {
|
||||||
$currency_code = $conf->currency;
|
$currency_code = $conf->currency;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -650,7 +650,7 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t
|
|||||||
|
|
||||||
if ($showproject) {
|
if ($showproject) {
|
||||||
// Project ref
|
// Project ref
|
||||||
print "<td>";
|
print '<td class="nowraponall">';
|
||||||
//if ($showlineingray) print '<i>';
|
//if ($showlineingray) print '<i>';
|
||||||
if ($lines[$i]->public || in_array($lines[$i]->fk_project, $projectsArrayId) || !empty($user->rights->projet->all->lire)) {
|
if ($lines[$i]->public || in_array($lines[$i]->fk_project, $projectsArrayId) || !empty($user->rights->projet->all->lire)) {
|
||||||
print $projectstatic->getNomUrl(1);
|
print $projectstatic->getNomUrl(1);
|
||||||
@ -701,21 +701,21 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (count($arrayfields) > 0 && !empty($arrayfields['t.description']['checked'])) {
|
if (count($arrayfields) > 0 && !empty($arrayfields['t.description']['checked'])) {
|
||||||
print "<td>";
|
print '<td class="tdoverflowmax200" title="'.dol_escape_htmltag($lines[$i]->description).'">';
|
||||||
print $lines[$i]->description;
|
print $lines[$i]->description;
|
||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Date start
|
// Date start
|
||||||
if (count($arrayfields) > 0 && !empty($arrayfields['t.dateo']['checked'])) {
|
if (count($arrayfields) > 0 && !empty($arrayfields['t.dateo']['checked'])) {
|
||||||
print '<td class="center">';
|
print '<td class="center nowraponall">';
|
||||||
print dol_print_date($lines[$i]->date_start, 'dayhour');
|
print dol_print_date($lines[$i]->date_start, 'dayhour');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Date end
|
// Date end
|
||||||
if (count($arrayfields) > 0 && !empty($arrayfields['t.datee']['checked'])) {
|
if (count($arrayfields) > 0 && !empty($arrayfields['t.datee']['checked'])) {
|
||||||
print '<td class="center">';
|
print '<td class="center nowraponall">';
|
||||||
print dol_print_date($lines[$i]->date_end, 'dayhour');
|
print dol_print_date($lines[$i]->date_end, 'dayhour');
|
||||||
if ($taskstatic->hasDelay()) {
|
if ($taskstatic->hasDelay()) {
|
||||||
print img_warning($langs->trans("Late"));
|
print img_warning($langs->trans("Late"));
|
||||||
|
|||||||
@ -977,3 +977,70 @@ function accessforbidden($message = '', $printheader = 1, $printfooter = 1, $sho
|
|||||||
}
|
}
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the max allowed for file upload.
|
||||||
|
* Analyze among: upload_max_filesize, post_max_size, MAIN_UPLOAD_DOC
|
||||||
|
*
|
||||||
|
* @return array Array with all max size for file upload
|
||||||
|
*/
|
||||||
|
function getMaxFileSizeArray()
|
||||||
|
{
|
||||||
|
global $conf;
|
||||||
|
|
||||||
|
$max = $conf->global->MAIN_UPLOAD_DOC; // In Kb
|
||||||
|
$maxphp = @ini_get('upload_max_filesize'); // In unknown
|
||||||
|
if (preg_match('/k$/i', $maxphp)) {
|
||||||
|
$maxphp = preg_replace('/k$/i', '', $maxphp);
|
||||||
|
$maxphp = $maxphp * 1;
|
||||||
|
}
|
||||||
|
if (preg_match('/m$/i', $maxphp)) {
|
||||||
|
$maxphp = preg_replace('/m$/i', '', $maxphp);
|
||||||
|
$maxphp = $maxphp * 1024;
|
||||||
|
}
|
||||||
|
if (preg_match('/g$/i', $maxphp)) {
|
||||||
|
$maxphp = preg_replace('/g$/i', '', $maxphp);
|
||||||
|
$maxphp = $maxphp * 1024 * 1024;
|
||||||
|
}
|
||||||
|
if (preg_match('/t$/i', $maxphp)) {
|
||||||
|
$maxphp = preg_replace('/t$/i', '', $maxphp);
|
||||||
|
$maxphp = $maxphp * 1024 * 1024 * 1024;
|
||||||
|
}
|
||||||
|
$maxphp2 = @ini_get('post_max_size'); // In unknown
|
||||||
|
if (preg_match('/k$/i', $maxphp2)) {
|
||||||
|
$maxphp2 = preg_replace('/k$/i', '', $maxphp2);
|
||||||
|
$maxphp2 = $maxphp2 * 1;
|
||||||
|
}
|
||||||
|
if (preg_match('/m$/i', $maxphp2)) {
|
||||||
|
$maxphp2 = preg_replace('/m$/i', '', $maxphp2);
|
||||||
|
$maxphp2 = $maxphp2 * 1024;
|
||||||
|
}
|
||||||
|
if (preg_match('/g$/i', $maxphp2)) {
|
||||||
|
$maxphp2 = preg_replace('/g$/i', '', $maxphp2);
|
||||||
|
$maxphp2 = $maxphp2 * 1024 * 1024;
|
||||||
|
}
|
||||||
|
if (preg_match('/t$/i', $maxphp2)) {
|
||||||
|
$maxphp2 = preg_replace('/t$/i', '', $maxphp2);
|
||||||
|
$maxphp2 = $maxphp2 * 1024 * 1024 * 1024;
|
||||||
|
}
|
||||||
|
// Now $max and $maxphp and $maxphp2 are in Kb
|
||||||
|
$maxmin = $max;
|
||||||
|
$maxphptoshow = $maxphptoshowparam = '';
|
||||||
|
if ($maxphp > 0) {
|
||||||
|
$maxmin = min($maxmin, $maxphp);
|
||||||
|
$maxphptoshow = $maxphp;
|
||||||
|
$maxphptoshowparam = 'upload_max_filesize';
|
||||||
|
}
|
||||||
|
if ($maxphp2 > 0) {
|
||||||
|
$maxmin = min($maxmin, $maxphp2);
|
||||||
|
if ($maxphp2 < $maxphp) {
|
||||||
|
$maxphptoshow = $maxphp2;
|
||||||
|
$maxphptoshowparam = 'post_max_size';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//var_dump($maxphp.'-'.$maxphp2);
|
||||||
|
//var_dump($maxmin);
|
||||||
|
|
||||||
|
return array('max'=>$max, 'maxmin'=>$maxmin, 'maxphptoshow'=>$maxphptoshow, 'maxphptoshowparam'=>$maxphptoshowparam);
|
||||||
|
}
|
||||||
|
|||||||
@ -174,7 +174,13 @@ class doc_generic_bom_odt extends ModelePDFBom
|
|||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
}
|
}
|
||||||
// Add input to upload a new template file.
|
// Add input to upload a new template file.
|
||||||
$texte .= '<div>'.$langs->trans("UploadNewTemplate").' <input type="file" name="uploadfile">';
|
$texte .= '<div>'.$langs->trans("UploadNewTemplate");
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
$texte .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
|
$texte .= ' <input type="file" name="uploadfile">';
|
||||||
$texte .= '<input type="hidden" value="BOM_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
$texte .= '<input type="hidden" value="BOM_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
||||||
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
|
|||||||
@ -181,7 +181,13 @@ class doc_generic_order_odt extends ModelePDFCommandes
|
|||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
}
|
}
|
||||||
// Add input to upload a new template file.
|
// Add input to upload a new template file.
|
||||||
$texte .= '<div>'.$langs->trans("UploadNewTemplate").' <input type="file" name="uploadfile">';
|
$texte .= '<div>'.$langs->trans("UploadNewTemplate");
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
$texte .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
|
$texte .= ' <input type="file" name="uploadfile">';
|
||||||
$texte .= '<input type="hidden" value="COMMANDE_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
$texte .= '<input type="hidden" value="COMMANDE_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
||||||
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
|
|||||||
@ -611,6 +611,9 @@ class pdf_einstein extends ModelePDFCommandes
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == 1) {
|
if ($pagenb == 1) {
|
||||||
|
|||||||
@ -835,6 +835,9 @@ class pdf_eratosthene extends ModelePDFCommandes
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == $pageposafter) {
|
if ($pagenb == $pageposafter) {
|
||||||
|
|||||||
@ -166,7 +166,13 @@ class doc_generic_contract_odt extends ModelePDFContract
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add input to upload a new template file.
|
// Add input to upload a new template file.
|
||||||
$texte .= '<div>'.$langs->trans("UploadNewTemplate").' <input type="file" name="uploadfile">';
|
$texte .= '<div>'.$langs->trans("UploadNewTemplate");
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
$texte .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
|
$texte .= ' <input type="file" name="uploadfile">';
|
||||||
$texte .= '<input type="hidden" value="CONTRACT_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
$texte .= '<input type="hidden" value="CONTRACT_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
||||||
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
|
|||||||
@ -437,6 +437,9 @@ class pdf_strato extends ModelePDFContract
|
|||||||
$pagenb++;
|
$pagenb++;
|
||||||
$pdf->setPage($pagenb);
|
$pdf->setPage($pagenb);
|
||||||
$pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it.
|
$pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it.
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
|
|||||||
@ -574,6 +574,9 @@ class pdf_storm extends ModelePDFDeliveryOrder
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == 1) {
|
if ($pagenb == 1) {
|
||||||
|
|||||||
@ -498,6 +498,9 @@ class pdf_typhon extends ModelePDFDeliveryOrder
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == 1) {
|
if ($pagenb == 1) {
|
||||||
|
|||||||
@ -180,7 +180,13 @@ class doc_generic_shipment_odt extends ModelePdfExpedition
|
|||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
}
|
}
|
||||||
// Add input to upload a new template file.
|
// Add input to upload a new template file.
|
||||||
$texte .= '<div>'.$langs->trans("UploadNewTemplate").' <input type="file" name="uploadfile">';
|
$texte .= '<div>'.$langs->trans("UploadNewTemplate");
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
$texte .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
|
$texte .= ' <input type="file" name="uploadfile">';
|
||||||
$texte .= '<input type="hidden" value="EXPEDITION_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
$texte .= '<input type="hidden" value="EXPEDITION_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
||||||
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
|
|||||||
@ -708,6 +708,9 @@ class pdf_espadon extends ModelePdfExpedition
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == 1) {
|
if ($pagenb == 1) {
|
||||||
|
|||||||
@ -614,6 +614,9 @@ class pdf_rouget extends ModelePdfExpedition
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == 1) {
|
if ($pagenb == 1) {
|
||||||
|
|||||||
@ -450,6 +450,9 @@ class pdf_standard extends ModeleExpenseReport
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == 1) {
|
if ($pagenb == 1) {
|
||||||
|
|||||||
@ -179,7 +179,13 @@ class doc_generic_invoice_odt extends ModelePDFFactures
|
|||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
}
|
}
|
||||||
// Add input to upload a new template file.
|
// Add input to upload a new template file.
|
||||||
$texte .= '<div>'.$langs->trans("UploadNewTemplate").' <input type="file" name="uploadfile">';
|
$texte .= '<div>'.$langs->trans("UploadNewTemplate");
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
$texte .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
|
$texte .= ' <input type="file" name="uploadfile">';
|
||||||
$texte .= '<input type="hidden" value="FACTURE_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
$texte .= '<input type="hidden" value="FACTURE_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
||||||
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
|
|||||||
@ -452,8 +452,13 @@ class pdf_crabe extends ModelePDFFactures
|
|||||||
|
|
||||||
// You can add more thing under header here, if you increase $extra_under_address_shift too.
|
// You can add more thing under header here, if you increase $extra_under_address_shift too.
|
||||||
$extra_under_address_shift = 0;
|
$extra_under_address_shift = 0;
|
||||||
|
$qrcodestring = '';
|
||||||
if (! empty($conf->global->INVOICE_ADD_ZATCA_QR_CODE)) {
|
if (! empty($conf->global->INVOICE_ADD_ZATCA_QR_CODE)) {
|
||||||
$qrcodestring = $object->buildZATCAQRString();
|
$qrcodestring = $object->buildZATCAQRString();
|
||||||
|
} elseif (! empty($conf->global->INVOICE_ADD_SWISS_QR_CODE)) {
|
||||||
|
$qrcodestring = $object->buildSwitzerlandQRString();
|
||||||
|
}
|
||||||
|
if ($qrcodestring) {
|
||||||
$qrcodecolor = array('25', '25', '25');
|
$qrcodecolor = array('25', '25', '25');
|
||||||
// set style for QR-code
|
// set style for QR-code
|
||||||
$styleQr = array(
|
$styleQr = array(
|
||||||
@ -795,6 +800,9 @@ class pdf_crabe extends ModelePDFFactures
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == 1) {
|
if ($pagenb == 1) {
|
||||||
|
|||||||
@ -435,8 +435,13 @@ class pdf_sponge extends ModelePDFFactures
|
|||||||
|
|
||||||
// You can add more thing under header here, if you increase $extra_under_address_shift too.
|
// You can add more thing under header here, if you increase $extra_under_address_shift too.
|
||||||
$extra_under_address_shift = 0;
|
$extra_under_address_shift = 0;
|
||||||
|
$qrcodestring = '';
|
||||||
if (! empty($conf->global->INVOICE_ADD_ZATCA_QR_CODE)) {
|
if (! empty($conf->global->INVOICE_ADD_ZATCA_QR_CODE)) {
|
||||||
$qrcodestring = $object->buildZATCAQRString();
|
$qrcodestring = $object->buildZATCAQRString();
|
||||||
|
} elseif (! empty($conf->global->INVOICE_ADD_SWISS_QR_CODE)) {
|
||||||
|
$qrcodestring = $object->buildSwitzerlandQRString();
|
||||||
|
}
|
||||||
|
if ($qrcodestring) {
|
||||||
$qrcodecolor = array('25', '25', '25');
|
$qrcodecolor = array('25', '25', '25');
|
||||||
// set style for QR-code
|
// set style for QR-code
|
||||||
$styleQr = array(
|
$styleQr = array(
|
||||||
@ -929,6 +934,9 @@ class pdf_sponge extends ModelePDFFactures
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs, $outputlangsbis);
|
$this->_pagehead($pdf, $object, 0, $outputlangs, $outputlangsbis);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
|
|||||||
@ -418,6 +418,9 @@ class pdf_soleil extends ModelePDFFicheinter
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == 1) {
|
if ($pagenb == 1) {
|
||||||
|
|||||||
@ -110,6 +110,11 @@ class mailing_xinputfile extends MailingTargets
|
|||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
$s = '';
|
$s = '';
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
$s .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
$s .= '<input type="file" name="username" class="flat">';
|
$s .= '<input type="file" name="username" class="flat">';
|
||||||
return $s;
|
return $s;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -169,7 +169,13 @@ class doc_generic_member_odt extends ModelePDFMember
|
|||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
}
|
}
|
||||||
// Add input to upload a new template file.
|
// Add input to upload a new template file.
|
||||||
$texte .= '<div>'.$langs->trans("UploadNewTemplate").' <input type="file" name="uploadfile">';
|
$texte .= '<div>'.$langs->trans("UploadNewTemplate");
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
$texte .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
|
$texte .= ' <input type="file" name="uploadfile">';
|
||||||
$texte .= '<input type="hidden" value="MEMBER_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
$texte .= '<input type="hidden" value="MEMBER_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
||||||
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
|
|||||||
@ -134,7 +134,7 @@ class modFacture extends DolibarrModules
|
|||||||
'objectname'=>'Facture',
|
'objectname'=>'Facture',
|
||||||
'method'=>'sendEmailsRemindersOnInvoiceDueDate',
|
'method'=>'sendEmailsRemindersOnInvoiceDueDate',
|
||||||
'parameters'=>"10,all,EmailTemplateCode",
|
'parameters'=>"10,all,EmailTemplateCode",
|
||||||
'comment'=>'Send an emails when the unpaid invoices reach a due date + n days = today. First param is the offset n of days, second parameter is "all" or a payment mode code, last parameter is the code of email template to use (an email template with EmailTemplateCode must exists. the version in the language of the thirdparty will be used in priority).',
|
'comment'=>'Send an emails when the unpaid invoices reach a due date + n days = today. First param is the offset n of days, second parameter is "all" or a payment mode code, last parameter is the code of email template to use (an email template with EmailTemplateCode must exists. The version in the language of the thirdparty will be used in priority to update the PDF of the sent invoice).',
|
||||||
'frequency'=>1,
|
'frequency'=>1,
|
||||||
'unitfrequency'=>3600 * 24,
|
'unitfrequency'=>3600 * 24,
|
||||||
'priority'=>50,
|
'priority'=>50,
|
||||||
|
|||||||
@ -675,6 +675,9 @@ class pdf_standard extends ModelePDFMovement
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == 1) {
|
if ($pagenb == 1) {
|
||||||
|
|||||||
@ -177,7 +177,13 @@ class doc_generic_product_odt extends ModelePDFProduct
|
|||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
}
|
}
|
||||||
// Add input to upload a new template file.
|
// Add input to upload a new template file.
|
||||||
$texte .= '<div>'.$langs->trans("UploadNewTemplate").' <input type="file" name="uploadfile">';
|
$texte .= '<div>'.$langs->trans("UploadNewTemplate");
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
$texte .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
|
$texte .= ' <input type="file" name="uploadfile">';
|
||||||
$texte .= '<input type="hidden" value="PRODUCT_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
$texte .= '<input type="hidden" value="PRODUCT_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
||||||
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
|
|||||||
@ -470,6 +470,9 @@ class pdf_baleine extends ModelePDFProjects
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == 1) {
|
if ($pagenb == 1) {
|
||||||
|
|||||||
@ -743,6 +743,9 @@ class pdf_beluga extends ModelePDFProjects
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -473,6 +473,9 @@ class pdf_timespent extends ModelePDFProjects
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == 1) {
|
if ($pagenb == 1) {
|
||||||
|
|||||||
@ -211,7 +211,13 @@ class doc_generic_proposal_odt extends ModelePDFPropales
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Add input to upload a new template file.
|
// Add input to upload a new template file.
|
||||||
$texte .= '<div>'.$langs->trans("UploadNewTemplate").' <input type="file" name="uploadfile">';
|
$texte .= '<div>'.$langs->trans("UploadNewTemplate");
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
$texte .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
|
$texte .= ' <input type="file" name="uploadfile">';
|
||||||
$texte .= '<input type="hidden" value="PROPALE_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
$texte .= '<input type="hidden" value="PROPALE_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
||||||
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
|
|||||||
@ -726,6 +726,9 @@ class pdf_azur extends ModelePDFPropales
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == 1) {
|
if ($pagenb == 1) {
|
||||||
|
|||||||
@ -850,6 +850,9 @@ class pdf_cyan extends ModelePDFPropales
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
|
|||||||
@ -173,7 +173,13 @@ class doc_generic_reception_odt extends ModelePdfReception
|
|||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
}
|
}
|
||||||
// Add input to upload a new template file.
|
// Add input to upload a new template file.
|
||||||
$texte .= '<div>'.$langs->trans("UploadNewTemplate").' <input type="file" name="uploadfile">';
|
$texte .= '<div>'.$langs->trans("UploadNewTemplate");
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
$texte .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
|
$texte .= ' <input type="file" name="uploadfile">';
|
||||||
$texte .= '<input type="hidden" value="RECEPTION_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
$texte .= '<input type="hidden" value="RECEPTION_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
||||||
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
|
|||||||
@ -538,6 +538,9 @@ class pdf_squille extends ModelePdfReception
|
|||||||
$pagenb++;
|
$pagenb++;
|
||||||
$pdf->setPage($pagenb);
|
$pdf->setPage($pagenb);
|
||||||
$pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it.
|
$pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it.
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == 1) {
|
if ($pagenb == 1) {
|
||||||
|
|||||||
@ -169,7 +169,13 @@ class doc_generic_odt extends ModeleThirdPartyDoc
|
|||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
}
|
}
|
||||||
// Add input to upload a new template file.
|
// Add input to upload a new template file.
|
||||||
$texte .= '<div>'.$langs->trans("UploadNewTemplate").' <input type="file" name="uploadfile">';
|
$texte .= '<div>'.$langs->trans("UploadNewTemplate");
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
$texte .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
|
$texte .= ' <input type="file" name="uploadfile">';
|
||||||
$texte .= '<input type="hidden" value="COMPANY_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
$texte .= '<input type="hidden" value="COMPANY_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
||||||
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
|
|||||||
@ -177,7 +177,13 @@ class doc_generic_stock_odt extends ModelePDFStock
|
|||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
}
|
}
|
||||||
// Add input to upload a new template file.
|
// Add input to upload a new template file.
|
||||||
$texte .= '<div>'.$langs->trans("UploadNewTemplate").' <input type="file" name="uploadfile">';
|
$texte .= '<div>'.$langs->trans("UploadNewTemplate");
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
$texte .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
|
$texte .= ' <input type="file" name="uploadfile">';
|
||||||
$texte .= '<input type="hidden" value="STOCK_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
$texte .= '<input type="hidden" value="STOCK_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
||||||
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
|
|||||||
@ -460,6 +460,9 @@ class pdf_standard extends ModelePDFStock
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == 1) {
|
if ($pagenb == 1) {
|
||||||
|
|||||||
@ -777,6 +777,9 @@ class pdf_cornas extends ModelePDFSuppliersOrders
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == $pageposafter) {
|
if ($pagenb == $pageposafter) {
|
||||||
|
|||||||
@ -659,6 +659,9 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == 1) {
|
if ($pagenb == 1) {
|
||||||
|
|||||||
@ -420,6 +420,9 @@ class pdf_standard extends ModelePDFSuppliersPayments
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == 1) {
|
if ($pagenb == 1) {
|
||||||
|
|||||||
@ -659,6 +659,9 @@ class pdf_aurore extends ModelePDFSupplierProposal
|
|||||||
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) {
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
if (!empty($tplidx)) {
|
||||||
|
$pdf->useTemplate($tplidx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) {
|
||||||
if ($pagenb == 1) {
|
if ($pagenb == 1) {
|
||||||
|
|||||||
@ -166,7 +166,13 @@ class doc_generic_ticket_odt extends ModelePDFTicket
|
|||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
}
|
}
|
||||||
// Add input to upload a new template file.
|
// Add input to upload a new template file.
|
||||||
$texte .= '<div>'.$langs->trans("UploadNewTemplate").' <input type="file" name="uploadfile">';
|
$texte .= '<div>'.$langs->trans("UploadNewTemplate");
|
||||||
|
$texte .= ' <input type="file" name="uploadfile">';
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
$texte .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
$texte .= '<input type="hidden" value="TICKET_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
$texte .= '<input type="hidden" value="TICKET_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
||||||
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
|
|||||||
@ -197,7 +197,13 @@ class doc_generic_user_odt extends ModelePDFUser
|
|||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
}
|
}
|
||||||
// Add input to upload a new template file.
|
// Add input to upload a new template file.
|
||||||
$texte .= '<div>'.$langs->trans("UploadNewTemplate").' <input type="file" name="uploadfile">';
|
$texte .= '<div>'.$langs->trans("UploadNewTemplate");
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
$texte .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
|
$texte .= ' <input type="file" name="uploadfile">';
|
||||||
$texte .= '<input type="hidden" value="USER_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
$texte .= '<input type="hidden" value="USER_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
||||||
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
$texte .= '<input type="submit" class="button small reposition" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
|
|||||||
@ -37,6 +37,13 @@ if (empty($conf) || !is_object($conf)) {
|
|||||||
<span class="btn btn-success fileinput-button">
|
<span class="btn btn-success fileinput-button">
|
||||||
<i class="icon-plus icon-white"></i>
|
<i class="icon-plus icon-white"></i>
|
||||||
<span><?php echo $langs->trans('AddFiles'); ?></span>
|
<span><?php echo $langs->trans('AddFiles'); ?></span>
|
||||||
|
<?php
|
||||||
|
$maxfilesizearray = getMaxFileSizeArray();
|
||||||
|
$maxmin = $maxfilesizearray['maxmin'];
|
||||||
|
if ($maxmin > 0) {
|
||||||
|
print '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
|
||||||
|
}
|
||||||
|
?>
|
||||||
<input type="file" name="files[]" multiple>
|
<input type="file" name="files[]" multiple>
|
||||||
</span>
|
</span>
|
||||||
<button type="submit" class="btn btn-primary start">
|
<button type="submit" class="btn btn-primary start">
|
||||||
|
|||||||
@ -353,6 +353,10 @@ if ($action == 'execute') {
|
|||||||
print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$id.'&securitykey='.$securitykey.$param, $langs->trans("CronExecute"), $langs->trans("CronConfirmExecute"), "confirm_execute", '', '', 1);
|
print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$id.'&securitykey='.$securitykey.$param, $langs->trans("CronExecute"), $langs->trans("CronConfirmExecute"), "confirm_execute", '', '', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($action == 'delete') {
|
||||||
|
print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$id.$param, $langs->trans("CronDelete"), $langs->trans("CronConfirmDelete"), "confirm_delete", '', '', 1);
|
||||||
|
}
|
||||||
|
|
||||||
// List of mass actions available
|
// List of mass actions available
|
||||||
$arrayofmassactions = array(
|
$arrayofmassactions = array(
|
||||||
//'presend'=>img_picto('', 'email', 'class="pictofixedwidth"').$langs->trans("SendByMail"),
|
//'presend'=>img_picto('', 'email', 'class="pictofixedwidth"').$langs->trans("SendByMail"),
|
||||||
|
|||||||
@ -40,7 +40,7 @@ class DolibarrDebugBar extends DebugBar
|
|||||||
//$this->addCollector(new DolExceptionsCollector());
|
//$this->addCollector(new DolExceptionsCollector());
|
||||||
$this->addCollector(new DolQueryCollector());
|
$this->addCollector(new DolQueryCollector());
|
||||||
$this->addCollector(new DolibarrCollector());
|
$this->addCollector(new DolibarrCollector());
|
||||||
if ($conf->syslog->enabled) {
|
if (isModEnabled('syslog')) {
|
||||||
$this->addCollector(new DolLogsCollector());
|
$this->addCollector(new DolLogsCollector());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -106,6 +106,8 @@ class Delivery extends CommonObject
|
|||||||
*/
|
*/
|
||||||
public $model_pdf;
|
public $model_pdf;
|
||||||
|
|
||||||
|
public $commande_id;
|
||||||
|
|
||||||
public $lines = array();
|
public $lines = array();
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -271,9 +271,9 @@ class EmailCollectorAction extends CommonObject
|
|||||||
public function fetch($id, $ref = null)
|
public function fetch($id, $ref = null)
|
||||||
{
|
{
|
||||||
$result = $this->fetchCommon($id, $ref);
|
$result = $this->fetchCommon($id, $ref);
|
||||||
if ($result > 0 && !empty($this->table_element_line)) {
|
// if ($result > 0 && !empty($this->table_element_line)) {
|
||||||
$this->fetchLines();
|
// $this->fetchLinesCommon();
|
||||||
}
|
// }
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
* Copyright (C) 2004-2020 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2004-2020 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@inodbox.com>
|
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@inodbox.com>
|
||||||
* Copyright (C) 2015-2021 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
* Copyright (C) 2015-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es>
|
* Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es>
|
||||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||||
*
|
*
|
||||||
@ -138,7 +138,7 @@ $candelete = 0;
|
|||||||
if (!empty($user->rights->expensereport->supprimer)) {
|
if (!empty($user->rights->expensereport->supprimer)) {
|
||||||
$candelete = 1;
|
$candelete = 1;
|
||||||
}
|
}
|
||||||
if ($object->statut == ExpenseReport::STATUS_DRAFT && $user->rights->expensereport->write && in_array($object->fk_user_author, $childids)) {
|
if ($object->statut == ExpenseReport::STATUS_DRAFT && !empty($user->rights->expensereport->write) && in_array($object->fk_user_author, $childids)) {
|
||||||
$candelete = 1;
|
$candelete = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1467,6 +1467,8 @@ if ($action == 'create') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Public note
|
// Public note
|
||||||
|
$note_public = GETPOSTISSET('note_public') ? GETPOST('note_public', 'restricthtml') : '';
|
||||||
|
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td class="tdtop">'.$langs->trans('NotePublic').'</td>';
|
print '<td class="tdtop">'.$langs->trans('NotePublic').'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
@ -1476,6 +1478,8 @@ if ($action == 'create') {
|
|||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Private note
|
// Private note
|
||||||
|
$note_private = GETPOSTISSET('note_private') ? GETPOST('note_private', 'restricthtml') : '';
|
||||||
|
|
||||||
if (empty($user->socid)) {
|
if (empty($user->socid)) {
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td class="tdtop">'.$langs->trans('NotePrivate').'</td>';
|
print '<td class="tdtop">'.$langs->trans('NotePrivate').'</td>';
|
||||||
@ -1624,6 +1628,8 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
print dol_get_fiche_head($head, 'card', $langs->trans("ExpenseReport"), -1, 'trip');
|
print dol_get_fiche_head($head, 'card', $langs->trans("ExpenseReport"), -1, 'trip');
|
||||||
|
|
||||||
|
$formconfirm = '';
|
||||||
|
|
||||||
// Clone confirmation
|
// Clone confirmation
|
||||||
if ($action == 'clone') {
|
if ($action == 'clone') {
|
||||||
// Create an array for form
|
// Create an array for form
|
||||||
@ -1923,6 +1929,7 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
// List of payments already done
|
// List of payments already done
|
||||||
$nbcols = 3;
|
$nbcols = 3;
|
||||||
|
$nbrows = 0;
|
||||||
if (!empty($conf->banque->enabled)) {
|
if (!empty($conf->banque->enabled)) {
|
||||||
$nbrows++;
|
$nbrows++;
|
||||||
$nbcols++;
|
$nbcols++;
|
||||||
|
|||||||
@ -1062,9 +1062,7 @@ if ($action == 'create') {
|
|||||||
print '</form>';
|
print '</form>';
|
||||||
}
|
}
|
||||||
} elseif ($id > 0 || !empty($ref)) {
|
} elseif ($id > 0 || !empty($ref)) {
|
||||||
/*
|
// View mode
|
||||||
* Affichage en mode visu
|
|
||||||
*/
|
|
||||||
|
|
||||||
$object->fetch($id, $ref);
|
$object->fetch($id, $ref);
|
||||||
$object->fetch_thirdparty();
|
$object->fetch_thirdparty();
|
||||||
@ -1201,7 +1199,7 @@ if ($action == 'create') {
|
|||||||
print '<div class="fichehalfleft">';
|
print '<div class="fichehalfleft">';
|
||||||
print '<div class="underbanner clearboth"></div>';
|
print '<div class="underbanner clearboth"></div>';
|
||||||
|
|
||||||
print '<table class="border tableforfield" width="100%">';
|
print '<table class="border tableforfield centpercent">';
|
||||||
|
|
||||||
if (!empty($conf->global->FICHINTER_USE_PLANNED_AND_DONE_DATES)) {
|
if (!empty($conf->global->FICHINTER_USE_PLANNED_AND_DONE_DATES)) {
|
||||||
// Date Start
|
// Date Start
|
||||||
@ -1230,7 +1228,7 @@ if ($action == 'create') {
|
|||||||
print '<tr><td class="titlefield">';
|
print '<tr><td class="titlefield">';
|
||||||
print $form->editfieldkey("Description", 'description', $object->description, $object, $user->rights->ficheinter->creer, 'textarea');
|
print $form->editfieldkey("Description", 'description', $object->description, $object, $user->rights->ficheinter->creer, 'textarea');
|
||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
print $form->editfieldval("Description", 'description', $object->description, $object, $user->rights->ficheinter->creer, 'textarea:8:80');
|
print $form->editfieldval("Description", 'description', $object->description, $object, $user->rights->ficheinter->creer, 'textarea:8');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user