Merge branch 'develop' into develop#2
This commit is contained in:
commit
1115f9c0c9
2
.github/workflows/code_quality.yml
vendored
2
.github/workflows/code_quality.yml
vendored
@ -18,7 +18,7 @@ jobs:
|
|||||||
fetch-depth: 1
|
fetch-depth: 1
|
||||||
#php-version: '7.1'
|
#php-version: '7.1'
|
||||||
- name: 'Qodana Scan'
|
- name: 'Qodana Scan'
|
||||||
uses: JetBrains/qodana-action@v2022.3.0
|
uses: JetBrains/qodana-action@v2022.3.2
|
||||||
#with:
|
#with:
|
||||||
# php-version: '7.1'
|
# php-version: '7.1'
|
||||||
env:
|
env:
|
||||||
|
|||||||
23
ChangeLog
23
ChangeLog
@ -15,7 +15,7 @@ Following changes may create regressions for some external modules, but were nec
|
|||||||
* The method "nb_expedition()" has been renamed into "countNbOfShipments()"
|
* The method "nb_expedition()" has been renamed into "countNbOfShipments()"
|
||||||
* Revert default type of hooks. Default is now 'addreplace' hooks (and exception become 'output' hooks, that become deprecated).
|
* Revert default type of hooks. Default is now 'addreplace' hooks (and exception become 'output' hooks, that become deprecated).
|
||||||
* Deprecated property libelle removed from entrepot class.
|
* Deprecated property libelle removed from entrepot class.
|
||||||
|
* The type 'text' in ->fields property dos not accept html content anymore. Use the type 'html' for that.
|
||||||
|
|
||||||
|
|
||||||
***** ChangeLog for 17.0.0 compared to 16.0.0 *****
|
***** ChangeLog for 17.0.0 compared to 16.0.0 *****
|
||||||
@ -238,25 +238,38 @@ Following changes may create regressions for some external modules, but were nec
|
|||||||
* Rename the substitution for project label instead of project title in substitution variables
|
* Rename the substitution for project label instead of project title in substitution variables
|
||||||
|
|
||||||
|
|
||||||
***** ChangeLog for 16.0.4 compared to 16.0.2 *****
|
***** ChangeLog for 16.0.4 compared to 16.0.3 *****
|
||||||
|
|
||||||
FIX: Amount of localtax1 and 2 not correctly save on purchase order (the rate was saved instead)
|
FIX: Amount of localtax1 and 2 not correctly save on purchase order (the rate was saved instead)
|
||||||
FIX: #20415
|
FIX: #20415
|
||||||
FIX: #21280
|
FIX: #21280
|
||||||
FIX: #23008
|
FIX: #23008
|
||||||
FIX: #22271
|
FIX: #22271
|
||||||
|
FIX: #22524
|
||||||
FIX: #22837
|
FIX: #22837
|
||||||
|
FIX: #22964
|
||||||
|
FIX: #23012
|
||||||
FIX: #23019 Impossible to add task times to an existing draft invoice
|
FIX: #23019 Impossible to add task times to an existing draft invoice
|
||||||
FIX: #23072
|
FIX: #23072
|
||||||
FIX: #23087
|
FIX: #23087
|
||||||
FIX: #23115
|
FIX: #23115
|
||||||
FIX: #23116
|
FIX: #23116
|
||||||
FIX: #23281
|
FIX: #23281
|
||||||
|
FIX: #23420 : wrong check on $search_categ value causing FATAL ERROR
|
||||||
|
FIX: Accountancy - Quadra export
|
||||||
|
FIX: add border left on image product when conf activated
|
||||||
|
FIX: Add missing token when deleting template inn order_supplier admin menu
|
||||||
|
FIX: Amount of localtax1 and 2 not correctly save on purchase order (the
|
||||||
|
FIX: API access for deactivated users
|
||||||
FIX: bad selection of barcode numbering module
|
FIX: bad selection of barcode numbering module
|
||||||
FIX: Can't see all time spent by all user
|
FIX: Can't see all time spent by all user
|
||||||
FIX: CI
|
FIX: CI
|
||||||
FIX: CommonObject - showOptionals - Display blank td when MAIN_VIEW_LINE_NUMBER is enabled and action is confirm_valid
|
FIX: CommonObject - showOptionals - Display blank td when MAIN_VIEW_LINE_NUMBER is enabled and action is confirm_valid
|
||||||
FIX: Documents API inconsistency
|
FIX: Documents API inconsistency
|
||||||
|
FIX: Empty FormSetup emailTemplate type IF empty fieldvalue
|
||||||
|
FIX: Errors Handling for CreateFrom Hooks
|
||||||
|
FIX: error with dol_banner_tab, ref is needed
|
||||||
|
FIX: ExpenseReport card was not reloaded after addline
|
||||||
FIX: #23075
|
FIX: #23075
|
||||||
FIX: #23117
|
FIX: #23117
|
||||||
FIX: get multicurrency infos of propal when create order from propal with "WORKFLOW_PROPAL_AUTOCREATE_ORDER" conf
|
FIX: get multicurrency infos of propal when create order from propal with "WORKFLOW_PROPAL_AUTOCREATE_ORDER" conf
|
||||||
@ -264,12 +277,16 @@ FIX: Give predictable order to inventory lines
|
|||||||
FIX: include class multicurrency
|
FIX: include class multicurrency
|
||||||
FIX: methods declaration (backport fix 67b9a7dc07d708231d12b5e58800334d4a01ef98)
|
FIX: methods declaration (backport fix 67b9a7dc07d708231d12b5e58800334d4a01ef98)
|
||||||
FIX: multicurrency_tx and not currency_tx
|
FIX: multicurrency_tx and not currency_tx
|
||||||
FIX: PGSQL Integer type does not have a free length
|
FIX: on public ticket list, only the page 1 was accessible. Other pages were 404 error.
|
||||||
|
FIX: PGSQL Integer type does not have a free lenght
|
||||||
|
FIX: PGSQL Int type does not have a free lenght
|
||||||
FIX: Product list in setup.php in new Module
|
FIX: Product list in setup.php in new Module
|
||||||
FIX: propal and order stats broken on Tag+User(retricted customer list)
|
FIX: propal and order stats broken on Tag+User(retricted customer list)
|
||||||
FIX: saving of numbering module for jobs
|
FIX: saving of numbering module for jobs
|
||||||
FIX: Stickler
|
FIX: Stickler
|
||||||
FIX: travis
|
FIX: travis
|
||||||
|
FIX: wrong check on $search_categ value causing fatal error
|
||||||
|
FIX: wrong stock list with multicompany and without stock sharing
|
||||||
|
|
||||||
***** ChangeLog for 16.0.3 compared to 16.0.2 *****
|
***** ChangeLog for 16.0.3 compared to 16.0.2 *****
|
||||||
|
|
||||||
|
|||||||
@ -11,24 +11,24 @@ LaunchProgram=Launch %1
|
|||||||
AssocFileExtension=&Associate %1 with the %2 file extension
|
AssocFileExtension=&Associate %1 with the %2 file extension
|
||||||
AssocingFileExtension=Associating %1 with the %2 file extension...
|
AssocingFileExtension=Associating %1 with the %2 file extension...
|
||||||
|
|
||||||
YouWillInstallDoliWamp=You will install DoliWamp (so Dolibarr + all required third party software like Apache, Mysql and PHP) on your computer.
|
YouWillInstallDoliWamp=You will install DoliWamp (so Dolibarr plus all required third-party software like Apache, MySQL and PHP) on your computer.
|
||||||
ThisAssistantInstallOrUpgrade=WARNING: Using an ERP CRM installed on a local computer can be dangerous: if your computer break down, you can lose all your data. Do this if you are ready to manage backup yourself seriously. If not, use an installation in Saas instead (see https://saas.dolibarr.org).
|
ThisAssistantInstallOrUpgrade=WARNING: Using an ERP CRM installed on a local computer can be dangerous: if your computer breaks down, you can lose all your data. Do this if you are ready to manage backups yourself seriously. If not, use an installation in SaaS instead (see https://saas.dolibarr.org).
|
||||||
IfYouHaveTechnicalKnowledge=Moreover, if you have technical knowledges and want to manage your Apache, Mysql and PHP yourself, you should not use this assistant and make a manual installation of Dolibarr on your existing server with Apache, Mysql and PHP.
|
IfYouHaveTechnicalKnowledge=Moreover, if you have technical knowledge and want to manage Apache, MySQL and PHP yourself, you should not use this assistant and instead make a manual installation of Dolibarr on your existing server with Apache, MySQL and PHP.
|
||||||
ButIfYouLook=But if you look for an automatic setup on your local computer, you''re on the good way...
|
ButIfYouLook=But if you are looking for an automatic setup on your local computer, you're on the right path...
|
||||||
DoYouWantToStart=Do you want to start installation process ?
|
DoYouWantToStart=Do you want to start the installation process?
|
||||||
|
|
||||||
TechnicalParameters=Technical parameters
|
TechnicalParameters=Technical parameters
|
||||||
IfFirstInstall=If first install, please specify some technical parameters. If you don't understand, are not sure, or are doing an upgrade, just leave the default values.
|
IfFirstInstall=If this is the first install, please specify some technical parameters. If you don't understand, are not sure, or are doing an upgrade, just keep the default values.
|
||||||
|
|
||||||
; WARNING !!! STRINGS HERE MUST BE LOWER THAN 60 CHARACTERS
|
; WARNING !!! STRINGS HERE MUST BE LOWER THAN 60 CHARACTERS
|
||||||
SMTPServer=SMTP server (your own or ISP SMTP server, first install only):
|
SMTPServer=SMTP server (your own or ISP SMTP server, first install only):
|
||||||
ApachePort=Apache port (first install only, common choice is 80):
|
ApachePort=Apache port (first install only, common choice is 80):
|
||||||
MySqlPort=MySql port (first install only, common choice is 3306) :
|
MySqlPort=MySQL port (first install only, common choice is 3306):
|
||||||
MySqlPassword=MySql server and database password you want for root (first install only):
|
MySqlPassword=MySQL server and database password you want for root (first install only):
|
||||||
|
|
||||||
FailedToDeleteLock=Failed to delete the file %1/www/dolibarr/install.lock. You can ignore warning but you may have to remove it manually later when asked. Click OK to continue...
|
FailedToDeleteLock=Failed to delete the file %1/www/dolibarr/install.lock. You can ignore this warning but you may have to remove the file manually later when asked. Click OK to continue...
|
||||||
|
|
||||||
PortAlreadyInUse=Port %1 seems to be already in use. You should cancel to go back and choose another value for %2 port. Cancel choice and choose another value ?
|
PortAlreadyInUse=Port %1 seems to already be in use. You should cancel to go back and choose another value for %2 port. Cancel choice and choose another value?
|
||||||
|
|
||||||
FirefoxDetected=Firefox has been detected on your computer. Would you like to use it as the default browser for Dolibarr?
|
FirefoxDetected=Firefox has been detected on your computer. Would you like to use it as the default browser for Dolibarr?
|
||||||
ChromeDetected=Chrome has been detected on your computer. Would you like to use it as the default browser for Dolibarr?
|
ChromeDetected=Chrome has been detected on your computer. Would you like to use it as the default browser for Dolibarr?
|
||||||
@ -37,12 +37,12 @@ ChooseDefaultBrowser=Please choose your default browser (iexplore.exe, firefox.e
|
|||||||
|
|
||||||
LaunchNow=Launch Dolibarr now
|
LaunchNow=Launch Dolibarr now
|
||||||
|
|
||||||
ProgramHasBeenRemoved=Dolibarr program files have been removed. However, all your data files are still in directory %1. You must remove this directory manually for a complete uninstall.
|
ProgramHasBeenRemoved=Dolibarr's program files have been removed. However, all your data files are still in directory %1. You must remove this directory manually for a complete uninstall.
|
||||||
|
|
||||||
DoliWampWillStartApacheMysql=DoliWamp installer will now start or restart Apache and Mysql, this may last from several seconds to one minute after this confirmation. Start to install or upgrade the web and database server required by Dolibarr ?
|
DoliWampWillStartApacheMysql=DoliWamp installer will now start or restart Apache and MySQL. This may take from several seconds to one minute. Start to install or upgrade the web and database server required by Dolibarr?
|
||||||
|
|
||||||
OldVersionFoundAndMoveInNew=An old database version has been found and moved to be used by new Dolibarr version
|
OldVersionFoundAndMoveInNew=An old database version has been found and moved to be used by the new Dolibarr version
|
||||||
OldVersionFoundButFailedToMoveInNew=An old database version has been found but could not be moved to be used with new Dolibarr version
|
OldVersionFoundButFailedToMoveInNew=An old database version has been found but could not be moved to be used with the new Dolibarr version
|
||||||
|
|
||||||
DLLMissing=Your Windows installation is missing The "Micrsoft Visual C++ Redistributable for Visual Studio 2012" component. Please install the 32-bit version (vcredist_x86.exe) first (you can find it at https://www.microsoft.com/en-us/download/) and restart DoliWamp installation/upgrade after.
|
DLLMissing=Your Windows installation is missing the "Microsoft Visual C++ Redistributable for Visual Studio 2012" component. Please install the 32-bit version (vcredist_x86.exe) first (you can find it at https://www.microsoft.com/en-us/download/) and restart DoliWamp installation/upgrade after.
|
||||||
ContinueAnyway=Continue anyway (install process may fails without this prerequisite)
|
ContinueAnyway=Continue anyway (install process may fail without this prerequisite)
|
||||||
|
|||||||
@ -209,6 +209,11 @@ with
|
|||||||
with
|
with
|
||||||
foreach ($value[1] as $k => $v) {
|
foreach ($value[1] as $k => $v) {
|
||||||
|
|
||||||
|
* Fix by replacing
|
||||||
|
if ($res[0] == PDF_TYPE_OBJECT)
|
||||||
|
with
|
||||||
|
if (isset($res[0]) && $res[0] == PDF_TYPE_OBJECT)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
JSGANTT:
|
JSGANTT:
|
||||||
|
|||||||
@ -22,8 +22,7 @@ https://www.tecklenborgh.com/post/ksa-zatca-publishes-guide-on-how-to-develop-a-
|
|||||||
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
|
* FOR QR-Bill in switzerland - Facture-QR
|
||||||
----------------------------
|
Syntax of QR Code - See file ig-qr-bill-v2.2-fr.pdf (more doc on https://www.swiss-qr-invoice.org/downloads/)
|
||||||
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
|
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/
|
To test/validate: https://www.swiss-qr-invoice.org/validator/
|
||||||
|
|||||||
71291
dev/resources/iso-normes/qr-bar-codes/ig-qr-bill-v2.2-fr.pdf
Normal file
71291
dev/resources/iso-normes/qr-bar-codes/ig-qr-bill-v2.2-fr.pdf
Normal file
File diff suppressed because one or more lines are too long
@ -5,7 +5,7 @@
|
|||||||
* Copyright (C) 2015 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2015 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
* Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
||||||
* Copyright (C) 2016 Pierre-Henry Favre <phf@atm-consulting.fr>
|
* Copyright (C) 2016 Pierre-Henry Favre <phf@atm-consulting.fr>
|
||||||
* Copyright (C) 2016-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
* Copyright (C) 2016-2023 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2022 Lionel Vessiller <lvessiller@open-dsi.fr>
|
* Copyright (C) 2022 Lionel Vessiller <lvessiller@open-dsi.fr>
|
||||||
* Copyright (C) 2013-2017 Olivier Geffroy <jeff@jeffinfo.com>
|
* Copyright (C) 2013-2017 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2017 Elarifr. Ari Elbaz <github@accedinfo.com>
|
* Copyright (C) 2017 Elarifr. Ari Elbaz <github@accedinfo.com>
|
||||||
@ -203,7 +203,7 @@ class AccountancyExport
|
|||||||
'ACCOUNTING_EXPORT_FORMAT' => empty($conf->global->ACCOUNTING_EXPORT_FORMAT) ? 'txt' : $conf->global->ACCOUNTING_EXPORT_FORMAT,
|
'ACCOUNTING_EXPORT_FORMAT' => empty($conf->global->ACCOUNTING_EXPORT_FORMAT) ? 'txt' : $conf->global->ACCOUNTING_EXPORT_FORMAT,
|
||||||
'ACCOUNTING_EXPORT_SEPARATORCSV' => empty($conf->global->ACCOUNTING_EXPORT_SEPARATORCSV) ? ',' : $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV,
|
'ACCOUNTING_EXPORT_SEPARATORCSV' => empty($conf->global->ACCOUNTING_EXPORT_SEPARATORCSV) ? ',' : $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV,
|
||||||
'ACCOUNTING_EXPORT_ENDLINE' => empty($conf->global->ACCOUNTING_EXPORT_ENDLINE) ? 1 : $conf->global->ACCOUNTING_EXPORT_ENDLINE,
|
'ACCOUNTING_EXPORT_ENDLINE' => empty($conf->global->ACCOUNTING_EXPORT_ENDLINE) ? 1 : $conf->global->ACCOUNTING_EXPORT_ENDLINE,
|
||||||
'ACCOUNTING_EXPORT_DATE' => empty($conf->global->ACCOUNTING_EXPORT_DATE) ? '%d%m%Y' : $conf->global->ACCOUNTING_EXPORT_DATE,
|
'ACCOUNTING_EXPORT_DATE' => getDolGlobalString('ACCOUNTING_EXPORT_DATE', '%Y-%m-%d'),
|
||||||
),
|
),
|
||||||
self::$EXPORT_TYPE_CEGID => array(
|
self::$EXPORT_TYPE_CEGID => array(
|
||||||
'label' => $langs->trans('Modelcsv_CEGID'),
|
'label' => $langs->trans('Modelcsv_CEGID'),
|
||||||
@ -682,7 +682,7 @@ class AccountancyExport
|
|||||||
/**
|
/**
|
||||||
* Export format : Quadratus (Format ASCII)
|
* Export format : Quadratus (Format ASCII)
|
||||||
* Format since 2015 compatible QuadraCOMPTA
|
* Format since 2015 compatible QuadraCOMPTA
|
||||||
* Last review for this format : 2021/09/13 Alexandre Spangaro (aspangaro@open-dsi.fr)
|
* Last review for this format : 2023/01/28 Alexandre Spangaro (aspangaro@open-dsi.fr)
|
||||||
*
|
*
|
||||||
* Help : https://docplayer.fr/20769649-Fichier-d-entree-ascii-dans-quadracompta.html
|
* Help : https://docplayer.fr/20769649-Fichier-d-entree-ascii-dans-quadracompta.html
|
||||||
* In QuadraCompta | Use menu : "Outils" > "Suivi des dossiers" > "Import ASCII(Compta)"
|
* In QuadraCompta | Use menu : "Outils" > "Suivi des dossiers" > "Import ASCII(Compta)"
|
||||||
@ -703,6 +703,14 @@ class AccountancyExport
|
|||||||
// $date_ecriture = dol_print_date(dol_now(), $conf->global->ACCOUNTING_EXPORT_DATE); // format must be ddmmyy
|
// $date_ecriture = dol_print_date(dol_now(), $conf->global->ACCOUNTING_EXPORT_DATE); // format must be ddmmyy
|
||||||
// $date_ecriture = dol_print_date(time(), $conf->global->ACCOUNTING_EXPORT_DATE); // format must be ddmmyy
|
// $date_ecriture = dol_print_date(time(), $conf->global->ACCOUNTING_EXPORT_DATE); // format must be ddmmyy
|
||||||
foreach ($TData as $data) {
|
foreach ($TData as $data) {
|
||||||
|
// Clean some data
|
||||||
|
$data->doc_ref = dol_string_unaccent($data->doc_ref);
|
||||||
|
$data->label_operation = dol_string_unaccent($data->label_operation);
|
||||||
|
$data->numero_compte = dol_string_unaccent($data->numero_compte);
|
||||||
|
$data->label_compte = dol_string_unaccent($data->label_compte);
|
||||||
|
$data->subledger_account = dol_string_unaccent($data->subledger_account);
|
||||||
|
$data->subledger_label = dol_string_unaccent($data->subledger_label);
|
||||||
|
|
||||||
$code_compta = $data->numero_compte;
|
$code_compta = $data->numero_compte;
|
||||||
if (!empty($data->subledger_account)) {
|
if (!empty($data->subledger_account)) {
|
||||||
$code_compta = $data->subledger_account;
|
$code_compta = $data->subledger_account;
|
||||||
@ -734,9 +742,9 @@ class AccountancyExport
|
|||||||
if ($data->doc_type == 'customer_invoice') {
|
if ($data->doc_type == 'customer_invoice') {
|
||||||
$Tab['type_compte'] = 'C';
|
$Tab['type_compte'] = 'C';
|
||||||
} elseif ($data->doc_type == 'supplier_invoice') {
|
} elseif ($data->doc_type == 'supplier_invoice') {
|
||||||
$Tab['coll_compte'] = 'F';
|
$Tab['type_compte'] = 'F';
|
||||||
} else {
|
} else {
|
||||||
$Tab['coll_compte'] = 'G';
|
$Tab['type_compte'] = 'G';
|
||||||
}
|
}
|
||||||
|
|
||||||
$Tab['filler3'] = str_repeat(' ', 235);
|
$Tab['filler3'] = str_repeat(' ', 235);
|
||||||
@ -761,7 +769,7 @@ class AccountancyExport
|
|||||||
//$Tab['date_ecriture'] = $date_ecriture;
|
//$Tab['date_ecriture'] = $date_ecriture;
|
||||||
$Tab['date_ecriture'] = dol_print_date($data->doc_date, '%d%m%y');
|
$Tab['date_ecriture'] = dol_print_date($data->doc_date, '%d%m%y');
|
||||||
$Tab['filler'] = ' ';
|
$Tab['filler'] = ' ';
|
||||||
$Tab['libelle_ecriture'] = str_pad(self::trunc(dol_string_unaccent($data->doc_ref).' '.dol_string_unaccent($data->label_operation), 20), 20);
|
$Tab['libelle_ecriture'] = str_pad(self::trunc($data->doc_ref.' '.$data->label_operation, 20), 20);
|
||||||
|
|
||||||
// Credit invoice - invert sens
|
// Credit invoice - invert sens
|
||||||
/*
|
/*
|
||||||
@ -811,8 +819,8 @@ class AccountancyExport
|
|||||||
// TODO: we should filter more than only accent to avoid wrong line size
|
// TODO: we should filter more than only accent to avoid wrong line size
|
||||||
// TODO: remove invoice number doc_ref in libelle,
|
// TODO: remove invoice number doc_ref in libelle,
|
||||||
// TODO: we should offer an option for customer to build the libelle using invoice number / name / date in accounting software
|
// TODO: we should offer an option for customer to build the libelle using invoice number / name / date in accounting software
|
||||||
//$Tab['libelle_ecriture2'] = str_pad(self::trunc(dol_string_unaccent($data->doc_ref) . ' ' . dol_string_unaccent($data->label_operation), 30), 30);
|
//$Tab['libelle_ecriture2'] = str_pad(self::trunc($data->doc_ref . ' ' . $data->label_operation, 30), 30);
|
||||||
$Tab['libelle_ecriture2'] = str_pad(self::trunc(dol_string_unaccent($data->label_operation), 30), 30);
|
$Tab['libelle_ecriture2'] = str_pad(self::trunc($data->label_operation, 30), 30);
|
||||||
$Tab['codetva'] = str_repeat(' ', 2);
|
$Tab['codetva'] = str_repeat(' ', 2);
|
||||||
|
|
||||||
// We need to keep the 10 lastest number of invoice doc_ref not the beginning part that is the unusefull almost same part
|
// We need to keep the 10 lastest number of invoice doc_ref not the beginning part that is the unusefull almost same part
|
||||||
|
|||||||
@ -313,10 +313,6 @@ if (empty($reshook)) {
|
|||||||
$object->socialnetworks[$key] = trim(GETPOST($key, 'alphanohtml'));
|
$object->socialnetworks[$key] = trim(GETPOST($key, 'alphanohtml'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//$object->skype = trim(GETPOST("skype", 'alpha'));
|
|
||||||
//$object->twitter = trim(GETPOST("twitter", 'alpha'));
|
|
||||||
//$object->facebook = trim(GETPOST("facebook", 'alpha'));
|
|
||||||
//$object->linkedin = trim(GETPOST("linkedin", 'alpha'));
|
|
||||||
$object->birth = $birthdate;
|
$object->birth = $birthdate;
|
||||||
$object->default_lang = GETPOST('default_lang', 'alpha');
|
$object->default_lang = GETPOST('default_lang', 'alpha');
|
||||||
$object->typeid = GETPOST("typeid", 'int');
|
$object->typeid = GETPOST("typeid", 'int');
|
||||||
@ -488,11 +484,6 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// $object->skype = $skype;
|
|
||||||
// $object->twitter = $twitter;
|
|
||||||
// $object->facebook = $facebook;
|
|
||||||
// $object->linkedin = $linkedin;
|
|
||||||
|
|
||||||
$object->email = $email;
|
$object->email = $email;
|
||||||
$object->url = $url;
|
$object->url = $url;
|
||||||
$object->login = $login;
|
$object->login = $login;
|
||||||
|
|||||||
@ -639,7 +639,7 @@ class AdherentType extends CommonObject
|
|||||||
$sql .= ' AND ('.$excludefilter.')';
|
$sql .= ' AND ('.$excludefilter.')';
|
||||||
}
|
}
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::listUsersForGroup", LOG_DEBUG);
|
dol_syslog(get_class($this)."::listMembersForMemberType", LOG_DEBUG);
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
while ($obj = $this->db->fetch_object($resql)) {
|
while ($obj = $this->db->fetch_object($resql)) {
|
||||||
|
|||||||
@ -109,7 +109,7 @@ class Subscription extends CommonObject
|
|||||||
'datef' =>array('type'=>'datetime', 'label'=>'DateEndSubscription', 'enabled'=>1, 'visible'=>-1, 'position'=>35),
|
'datef' =>array('type'=>'datetime', 'label'=>'DateEndSubscription', 'enabled'=>1, 'visible'=>-1, 'position'=>35),
|
||||||
'subscription' =>array('type'=>'double(24,8)', 'label'=>'Amount', 'enabled'=>1, 'visible'=>-1, 'position'=>40, 'isameasure'=>1),
|
'subscription' =>array('type'=>'double(24,8)', 'label'=>'Amount', 'enabled'=>1, 'visible'=>-1, 'position'=>40, 'isameasure'=>1),
|
||||||
'fk_bank' =>array('type'=>'integer', 'label'=>'BankId', 'enabled'=>1, 'visible'=>-1, 'position'=>45),
|
'fk_bank' =>array('type'=>'integer', 'label'=>'BankId', 'enabled'=>1, 'visible'=>-1, 'position'=>45),
|
||||||
'note' =>array('type'=>'text', 'label'=>'Note', 'enabled'=>1, 'visible'=>-1, 'position'=>50),
|
'note' =>array('type'=>'html', 'label'=>'Note', 'enabled'=>1, 'visible'=>-1, 'position'=>50),
|
||||||
'fk_type' =>array('type'=>'integer', 'label'=>'MemberType', 'enabled'=>1, 'visible'=>-1, 'position'=>55),
|
'fk_type' =>array('type'=>'integer', 'label'=>'MemberType', 'enabled'=>1, 'visible'=>-1, 'position'=>55),
|
||||||
'fk_user_creat' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserAuthor', 'enabled'=>1, 'visible'=>-2, 'position'=>60),
|
'fk_user_creat' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserAuthor', 'enabled'=>1, 'visible'=>-2, 'position'=>60),
|
||||||
'fk_user_valid' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserValidation', 'enabled'=>1, 'visible'=>-1, 'position'=>65),
|
'fk_user_valid' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserValidation', 'enabled'=>1, 'visible'=>-1, 'position'=>65),
|
||||||
|
|||||||
@ -342,7 +342,7 @@ if ($sall) {
|
|||||||
$moreforfilter = '';
|
$moreforfilter = '';
|
||||||
|
|
||||||
$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, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')); // This also change content of $arrayfields
|
||||||
if ($massactionbutton) {
|
if ($massactionbutton) {
|
||||||
$selectedfields .= $form->showCheckAddButtons('checkforselect', 1);
|
$selectedfields .= $form->showCheckAddButtons('checkforselect', 1);
|
||||||
}
|
}
|
||||||
@ -353,7 +353,13 @@ print '<table class="tagtable nobottomiftotal liste'.($moreforfilter ? " listwit
|
|||||||
|
|
||||||
// Line for filters fields
|
// Line for filters fields
|
||||||
print '<tr class="liste_titre_filter">';
|
print '<tr class="liste_titre_filter">';
|
||||||
|
// Action column
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print '<td class="liste_titre right">';
|
||||||
|
$searchpicto = $form->showFilterButtons('left');
|
||||||
|
print $searchpicto;
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
// Line numbering
|
// Line numbering
|
||||||
if (!empty($conf->global->MAIN_SHOW_TECHNICAL_ID)) {
|
if (!empty($conf->global->MAIN_SHOW_TECHNICAL_ID)) {
|
||||||
print '<td class="liste_titre"> </td>';
|
print '<td class="liste_titre"> </td>';
|
||||||
@ -431,15 +437,19 @@ if (!empty($arrayfields['c.tms']['checked'])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Action column
|
// Action column
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print '<td class="liste_titre right">';
|
print '<td class="liste_titre right">';
|
||||||
$searchpicto = $form->showFilterButtons();
|
$searchpicto = $form->showFilterButtons();
|
||||||
print $searchpicto;
|
print $searchpicto;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
}
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], '', '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch ');
|
||||||
|
}
|
||||||
if (!empty($arrayfields['d.ref']['checked'])) {
|
if (!empty($arrayfields['d.ref']['checked'])) {
|
||||||
print_liste_field_titre($arrayfields['d.ref']['label'], $_SERVER["PHP_SELF"], "c.rowid", $param, "", "", $sortfield, $sortorder);
|
print_liste_field_titre($arrayfields['d.ref']['label'], $_SERVER["PHP_SELF"], "c.rowid", $param, "", "", $sortfield, $sortorder);
|
||||||
}
|
}
|
||||||
@ -484,7 +494,9 @@ if (!empty($arrayfields['c.datec']['checked'])) {
|
|||||||
if (!empty($arrayfields['c.tms']['checked'])) {
|
if (!empty($arrayfields['c.tms']['checked'])) {
|
||||||
print_liste_field_titre($arrayfields['c.tms']['label'], $_SERVER["PHP_SELF"], "c.tms", "", $param, 'align="center" class="nowrap"', $sortfield, $sortorder);
|
print_liste_field_titre($arrayfields['c.tms']['label'], $_SERVER["PHP_SELF"], "c.tms", "", $param, 'align="center" class="nowrap"', $sortfield, $sortorder);
|
||||||
}
|
}
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], '', '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch ');
|
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], '', '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch ');
|
||||||
|
}
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
|
|
||||||
@ -540,7 +552,21 @@ while ($i < min($num, $limit)) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
|
// Action column
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print '<td class="center">';
|
||||||
|
if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
|
||||||
|
$selected = 0;
|
||||||
|
if (in_array($obj->crowid, $arrayofselected)) {
|
||||||
|
$selected = 1;
|
||||||
|
}
|
||||||
|
print '<input id="cb'.$obj->crowid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->crowid.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
// Ref
|
// Ref
|
||||||
if (!empty($arrayfields['d.ref']['checked'])) {
|
if (!empty($arrayfields['d.ref']['checked'])) {
|
||||||
print '<td>'.$subscription->getNomUrl(1).'</td>';
|
print '<td>'.$subscription->getNomUrl(1).'</td>';
|
||||||
@ -662,6 +688,7 @@ while ($i < min($num, $limit)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Action column
|
// Action column
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
|
if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
|
||||||
$selected = 0;
|
$selected = 0;
|
||||||
@ -674,7 +701,7 @@ while ($i < min($num, $limit)) {
|
|||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
|
|||||||
@ -289,6 +289,9 @@ if (!$rowid && $action != 'create' && $action != 'edit') {
|
|||||||
print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
|
print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print '<th> </th>';
|
||||||
|
}
|
||||||
print '<th>'.$langs->trans("Ref").'</th>';
|
print '<th>'.$langs->trans("Ref").'</th>';
|
||||||
print '<th>'.$langs->trans("Label").'</th>';
|
print '<th>'.$langs->trans("Label").'</th>';
|
||||||
print '<th class="center">'.$langs->trans("MembersNature").'</th>';
|
print '<th class="center">'.$langs->trans("MembersNature").'</th>';
|
||||||
@ -297,7 +300,9 @@ if (!$rowid && $action != 'create' && $action != 'edit') {
|
|||||||
print '<th class="center">'.$langs->trans("CanEditAmountShort").'</th>';
|
print '<th class="center">'.$langs->trans("CanEditAmountShort").'</th>';
|
||||||
print '<th class="center">'.$langs->trans("VoteAllowed").'</th>';
|
print '<th class="center">'.$langs->trans("VoteAllowed").'</th>';
|
||||||
print '<th class="center">'.$langs->trans("Status").'</th>';
|
print '<th class="center">'.$langs->trans("Status").'</th>';
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print '<th> </th>';
|
print '<th> </th>';
|
||||||
|
}
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
$membertype = new AdherentType($db);
|
$membertype = new AdherentType($db);
|
||||||
@ -333,6 +338,13 @@ if (!$rowid && $action != 'create' && $action != 'edit') {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
if ($user->rights->adherent->configurer) {
|
||||||
|
print '<td class="right"><a class="editfielda" href="'.$_SERVER["PHP_SELF"].'?action=edit&rowid='.$objp->rowid.'">'.img_edit().'</a></td>';
|
||||||
|
} else {
|
||||||
|
print '<td class="right"> </td>';
|
||||||
|
}
|
||||||
|
}
|
||||||
print '<td class="nowraponall">';
|
print '<td class="nowraponall">';
|
||||||
print $membertype->getNomUrl(1);
|
print $membertype->getNomUrl(1);
|
||||||
//<a href="'.$_SERVER["PHP_SELF"].'?rowid='.$objp->rowid.'">'.img_object($langs->trans("ShowType"),'group').' '.$objp->rowid.'</a>
|
//<a href="'.$_SERVER["PHP_SELF"].'?rowid='.$objp->rowid.'">'.img_object($langs->trans("ShowType"),'group').' '.$objp->rowid.'</a>
|
||||||
@ -352,11 +364,13 @@ if (!$rowid && $action != 'create' && $action != 'edit') {
|
|||||||
print '<td class="center">'.yn($objp->caneditamount).'</td>';
|
print '<td class="center">'.yn($objp->caneditamount).'</td>';
|
||||||
print '<td class="center">'.yn($objp->vote).'</td>';
|
print '<td class="center">'.yn($objp->vote).'</td>';
|
||||||
print '<td class="center">'.$membertype->getLibStatut(5).'</td>';
|
print '<td class="center">'.$membertype->getLibStatut(5).'</td>';
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
if ($user->rights->adherent->configurer) {
|
if ($user->rights->adherent->configurer) {
|
||||||
print '<td class="right"><a class="editfielda" href="'.$_SERVER["PHP_SELF"].'?action=edit&rowid='.$objp->rowid.'">'.img_edit().'</a></td>';
|
print '<td class="right"><a class="editfielda" href="'.$_SERVER["PHP_SELF"].'?action=edit&rowid='.$objp->rowid.'">'.img_edit().'</a></td>';
|
||||||
} else {
|
} else {
|
||||||
print '<td class="right"> </td>';
|
print '<td class="right"> </td>';
|
||||||
}
|
}
|
||||||
|
}
|
||||||
print "</tr>";
|
print "</tr>";
|
||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
@ -708,13 +722,18 @@ if ($rowid > 0) {
|
|||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print_liste_field_titre("Action", $_SERVER["PHP_SELF"], "", $param, "", 'width="60" align="center"', $sortfield, $sortorder);
|
||||||
|
}
|
||||||
print_liste_field_titre("NameSlashCompany", $_SERVER["PHP_SELF"], "d.lastname", $param, "", "", $sortfield, $sortorder);
|
print_liste_field_titre("NameSlashCompany", $_SERVER["PHP_SELF"], "d.lastname", $param, "", "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Login", $_SERVER["PHP_SELF"], "d.login", $param, "", "", $sortfield, $sortorder);
|
print_liste_field_titre("Login", $_SERVER["PHP_SELF"], "d.login", $param, "", "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("MemberNature", $_SERVER["PHP_SELF"], "d.morphy", $param, "", "", $sortfield, $sortorder);
|
print_liste_field_titre("MemberNature", $_SERVER["PHP_SELF"], "d.morphy", $param, "", "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("EMail", $_SERVER["PHP_SELF"], "d.email", $param, "", "", $sortfield, $sortorder);
|
print_liste_field_titre("EMail", $_SERVER["PHP_SELF"], "d.email", $param, "", "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Status", $_SERVER["PHP_SELF"], "d.statut,d.datefin", $param, "", "", $sortfield, $sortorder);
|
print_liste_field_titre("Status", $_SERVER["PHP_SELF"], "d.statut,d.datefin", $param, "", "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("EndSubscription", $_SERVER["PHP_SELF"], "d.datefin", $param, "", 'align="center"', $sortfield, $sortorder);
|
print_liste_field_titre("EndSubscription", $_SERVER["PHP_SELF"], "d.datefin", $param, "", 'align="center"', $sortfield, $sortorder);
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print_liste_field_titre("Action", $_SERVER["PHP_SELF"], "", $param, "", 'width="60" align="center"', $sortfield, $sortorder);
|
print_liste_field_titre("Action", $_SERVER["PHP_SELF"], "", $param, "", 'width="60" align="center"', $sortfield, $sortorder);
|
||||||
|
}
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
$adh = new Adherent($db);
|
$adh = new Adherent($db);
|
||||||
@ -732,7 +751,17 @@ if ($rowid > 0) {
|
|||||||
$adh->statut = $objp->status;
|
$adh->statut = $objp->status;
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
|
// Actions
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print '<td class="center">';
|
||||||
|
if ($user->hasRight('adherent', 'creer')) {
|
||||||
|
print '<a class="editfielda marginleftonly" href="card.php?rowid='.$objp->rowid.'&action=edit&token='.newToken().'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?rowid='.$object->id).'">'.img_edit().'</a>';
|
||||||
|
}
|
||||||
|
if ($user->hasRight('adherent', 'supprimer')) {
|
||||||
|
print '<a class="marginleftonly" href="card.php?rowid='.$objp->rowid.'&action=resiliate&token='.newToken().'">'.img_picto($langs->trans("Resiliate"), 'disable.png').'</a>';
|
||||||
|
}
|
||||||
|
print "</td>";
|
||||||
|
}
|
||||||
// Lastname
|
// Lastname
|
||||||
if ($objp->company != '') {
|
if ($objp->company != '') {
|
||||||
print '<td><a href="card.php?rowid='.$objp->rowid.'">'.img_object($langs->trans("ShowMember"), "user", 'class="paddingright"').$adh->getFullName($langs, 0, -1, 20).' / '.dol_trunc($objp->company, 12).'</a></td>'."\n";
|
print '<td><a href="card.php?rowid='.$objp->rowid.'">'.img_object($langs->trans("ShowMember"), "user", 'class="paddingright"').$adh->getFullName($langs, 0, -1, 20).' / '.dol_trunc($objp->company, 12).'</a></td>'."\n";
|
||||||
@ -785,6 +814,7 @@ if ($rowid > 0) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Actions
|
// Actions
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
if ($user->hasRight('adherent', 'creer')) {
|
if ($user->hasRight('adherent', 'creer')) {
|
||||||
print '<a class="editfielda marginleftonly" href="card.php?rowid='.$objp->rowid.'&action=edit&token='.newToken().'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?rowid='.$object->id).'">'.img_edit().'</a>';
|
print '<a class="editfielda marginleftonly" href="card.php?rowid='.$objp->rowid.'&action=edit&token='.newToken().'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?rowid='.$object->id).'">'.img_edit().'</a>';
|
||||||
@ -793,7 +823,7 @@ if ($rowid > 0) {
|
|||||||
print '<a class="marginleftonly" href="card.php?rowid='.$objp->rowid.'&action=resiliate&token='.newToken().'">'.img_picto($langs->trans("Resiliate"), 'disable.png').'</a>';
|
print '<a class="marginleftonly" href="card.php?rowid='.$objp->rowid.'&action=resiliate&token='.newToken().'">'.img_picto($langs->trans("Resiliate"), 'disable.png').'</a>';
|
||||||
}
|
}
|
||||||
print "</td>";
|
print "</td>";
|
||||||
|
}
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -195,7 +195,7 @@ if (($action == 'update' && !GETPOST("cancel", 'alpha'))
|
|||||||
dolibarr_set_const($db, "MAIN_INFO_PROFID6", GETPOST("MAIN_INFO_PROFID6", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
|
dolibarr_set_const($db, "MAIN_INFO_PROFID6", GETPOST("MAIN_INFO_PROFID6", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
|
||||||
|
|
||||||
dolibarr_set_const($db, "MAIN_INFO_TVAINTRA", GETPOST("tva", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
|
dolibarr_set_const($db, "MAIN_INFO_TVAINTRA", GETPOST("tva", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_INFO_SOCIETE_OBJECT", GETPOST("object", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
|
dolibarr_set_const($db, "MAIN_INFO_SOCIETE_OBJECT", GETPOST("socialobject", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
|
||||||
|
|
||||||
dolibarr_set_const($db, "SOCIETE_FISCAL_MONTH_START", GETPOST("SOCIETE_FISCAL_MONTH_START", 'int'), 'chaine', 0, '', $conf->entity);
|
dolibarr_set_const($db, "SOCIETE_FISCAL_MONTH_START", GETPOST("SOCIETE_FISCAL_MONTH_START", 'int'), 'chaine', 0, '', $conf->entity);
|
||||||
|
|
||||||
@ -676,8 +676,8 @@ print '<input name="tva" id="intra_vat" class="minwidth200" value="'.dol_escape_
|
|||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Object of the company
|
// Object of the company
|
||||||
print '<tr class="oddeven"><td><label for="object">'.$langs->trans("CompanyObject").'</label></td><td>';
|
print '<tr class="oddeven"><td><label for="socialobject">'.$langs->trans("CompanyObject").'</label></td><td>';
|
||||||
print '<textarea class="flat quatrevingtpercent" name="object" id="object" rows="'.ROWS_5.'">'.(!empty($conf->global->MAIN_INFO_SOCIETE_OBJECT) ? $conf->global->MAIN_INFO_SOCIETE_OBJECT : '').'</textarea></td></tr>';
|
print '<textarea class="flat quatrevingtpercent" name="socialobject" id="socialobject" rows="'.ROWS_5.'">'.(!empty($conf->global->MAIN_INFO_SOCIETE_OBJECT) ? $conf->global->MAIN_INFO_SOCIETE_OBJECT : '').'</textarea></td></tr>';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|||||||
@ -387,7 +387,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
$morehtmlref = '<div class="refidno">';
|
$morehtmlref = '<div class="refidno">';
|
||||||
$morehtmlref .= '</div>';
|
$morehtmlref .= '</div>';
|
||||||
|
|
||||||
$morehtml = $langs->trans("NbOfEmailsInInbox").' : ';
|
$morehtml = '';
|
||||||
|
|
||||||
$sourcedir = $object->source_directory;
|
$sourcedir = $object->source_directory;
|
||||||
$targetdir = ($object->target_directory ? $object->target_directory : ''); // Can be '[Gmail]/Trash' or 'mytag'
|
$targetdir = ($object->target_directory ? $object->target_directory : ''); // Can be '[Gmail]/Trash' or 'mytag'
|
||||||
@ -404,6 +404,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
$connectstringserver = $object->getConnectStringIMAP($usessl);
|
$connectstringserver = $object->getConnectStringIMAP($usessl);
|
||||||
|
|
||||||
if ($action == 'scan') {
|
if ($action == 'scan') {
|
||||||
|
$nbemail = '';
|
||||||
if (!empty($conf->global->MAIN_IMAP_USE_PHPIMAP)) {
|
if (!empty($conf->global->MAIN_IMAP_USE_PHPIMAP)) {
|
||||||
if ($object->acces_type == 1) {
|
if ($object->acces_type == 1) {
|
||||||
// Mode OAUth2 with PHP-IMAP
|
// Mode OAUth2 with PHP-IMAP
|
||||||
@ -493,7 +494,6 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
|
|
||||||
$f = $client->getFolders(false, $object->source_directory);
|
$f = $client->getFolders(false, $object->source_directory);
|
||||||
$nbemail = $f[0]->examine()["exists"];
|
$nbemail = $f[0]->examine()["exists"];
|
||||||
$morehtml .= $nbemail;
|
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
if ($sourcedir) {
|
if ($sourcedir) {
|
||||||
@ -525,15 +525,15 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!$connection) {
|
if (!$connection) {
|
||||||
$morehtml .= 'Failed to open IMAP connection '.$connectstringsource;
|
$nbemail .= 'Failed to open IMAP connection '.$connectstringsource;
|
||||||
if (function_exists('imap_last_error')) {
|
if (function_exists('imap_last_error')) {
|
||||||
$morehtml .= '<br>'.imap_last_error();
|
$nbemail .= '<br>'.imap_last_error();
|
||||||
}
|
}
|
||||||
dol_syslog("Error ".$morehtml, LOG_WARNING);
|
dol_syslog("Error ".$morehtml, LOG_WARNING);
|
||||||
//var_dump(imap_errors())
|
//var_dump(imap_errors())
|
||||||
} else {
|
} else {
|
||||||
dol_syslog("Imap connected. Now we call imap_num_msg()");
|
dol_syslog("Imap connected. Now we call imap_num_msg()");
|
||||||
$morehtml .= imap_num_msg($connection);
|
$nbemail .= imap_num_msg($connection);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($connection) {
|
if ($connection) {
|
||||||
@ -541,12 +541,15 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
imap_close($connection);
|
imap_close($connection);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
$morehtml .= '<a class="flat" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=scan&token='.newToken().'">'.img_picto('', 'refresh', 'class="paddingrightonly"').$langs->trans("Refresh").'</a>';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$morehtml .= $form->textwithpicto('', 'connect string '.$connectstringserver);
|
$morehtml .= $form->textwithpicto($langs->trans("NbOfEmailsInInbox"), 'connect string '.$connectstringserver).': ';
|
||||||
|
|
||||||
|
$morehtml .= ($nbemail != '' ? $nbemail : '?');
|
||||||
|
|
||||||
|
$morehtml .= ' <a class="flat paddingleft marginleftonly" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=scan&token='.newToken().'">'.img_picto('', 'refresh', 'class="paddingrightonly"').$langs->trans("Refresh").'</a>';
|
||||||
} else {
|
} else {
|
||||||
|
$morehtml .= $langs->trans("NbOfEmailsInInbox").': ';
|
||||||
$morehtml .= 'IMAP functions not available on your PHP. ';
|
$morehtml .= 'IMAP functions not available on your PHP. ';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -601,13 +601,17 @@ while ($i < $imaxinloop) {
|
|||||||
//if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) $cssforfield = 'tdoverflowmax100';
|
//if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) $cssforfield = 'tdoverflowmax100';
|
||||||
|
|
||||||
if (!empty($arrayfields['t.'.$key]['checked'])) {
|
if (!empty($arrayfields['t.'.$key]['checked'])) {
|
||||||
print '<td'.($cssforfield ? ' class="'.$cssforfield.'"' : '');
|
print '<td'.($cssforfield ? ' class="'.$cssforfield.(preg_match('/tdoverflow/', $cssforfield) ? ' classfortooltip' : '').'"' : '');
|
||||||
if (preg_match('/tdoverflow/', $cssforfield)) {
|
if (preg_match('/tdoverflow/', $cssforfield)) {
|
||||||
print ' title="'.dol_escape_htmltag($object->$key).'"';
|
print ' title="'.dol_escape_htmltag($object->$key).'"';
|
||||||
}
|
}
|
||||||
print '>';
|
print '>';
|
||||||
if ($key == 'status') {
|
if ($key == 'status') {
|
||||||
print $object->getLibStatut(5);
|
print $object->getLibStatut(5);
|
||||||
|
} elseif ($key == 'lastresult') {
|
||||||
|
print '<div class="twolinesmax">';
|
||||||
|
print $object->showOutputField($val, $key, $object->$key, '');
|
||||||
|
print '</div>';
|
||||||
} elseif ($key == 'rowid') {
|
} elseif ($key == 'rowid') {
|
||||||
print $object->showOutputField($val, $key, $object->id, '');
|
print $object->showOutputField($val, $key, $object->id, '');
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -105,10 +105,15 @@ print '<br>';
|
|||||||
|
|
||||||
print '<section class="setupsection">';
|
print '<section class="setupsection">';
|
||||||
|
|
||||||
|
$nbmodulesnotautoenabled = count($conf->modules);
|
||||||
|
if (in_array('fckeditor', $conf->modules)) $nbmodulesnotautoenabled--;
|
||||||
|
if (in_array('export', $conf->modules)) $nbmodulesnotautoenabled--;
|
||||||
|
if (in_array('import', $conf->modules)) $nbmodulesnotautoenabled--;
|
||||||
|
|
||||||
// Show info setup module
|
// Show info setup module
|
||||||
print img_picto('', 'cog', 'class="paddingright valignmiddle double"').' '.$langs->trans("SetupDescriptionLink", DOL_URL_ROOT.'/admin/modules.php?mainmenu=home', $langs->transnoentities("Setup"), $langs->transnoentities("Modules"));
|
print img_picto('', 'cog', 'class="paddingright valignmiddle double"').' '.$langs->trans("SetupDescriptionLink", DOL_URL_ROOT.'/admin/modules.php?mainmenu=home', $langs->transnoentities("Setup"), $langs->transnoentities("Modules"));
|
||||||
print '<br><br>'.$langs->trans("SetupDescription4b");
|
print '<br><br>'.$langs->trans("SetupDescription4b");
|
||||||
if (count($conf->modules) <= (empty($conf->global->MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING) ? 1 : $conf->global->MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING)) { // If only minimal initial modules enabled
|
if ($nbmodulesnotautoenabled <= getDolGlobalInt('MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING', 1)) { // If only minimal initial modules enabled
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
$warnpicto = img_warning($langs->trans("WarningEnableYourModulesApplications"), 'style="padding-right: 6px;"');
|
$warnpicto = img_warning($langs->trans("WarningEnableYourModulesApplications"), 'style="padding-right: 6px;"');
|
||||||
print '<br><div class="warning"><a href="'.DOL_URL_ROOT.'/admin/modules.php?mainmenu=home">'.$warnpicto.$langs->trans("WarningEnableYourModulesApplications").'</a></div>';
|
print '<br><div class="warning"><a href="'.DOL_URL_ROOT.'/admin/modules.php?mainmenu=home">'.$warnpicto.$langs->trans("WarningEnableYourModulesApplications").'</a></div>';
|
||||||
|
|||||||
@ -416,7 +416,7 @@ if ($action != 'create') {
|
|||||||
print '<tr><td class="fieldrequired">'.$langs->trans("Label").'</td><td><input type="text" name="label" class="width300" value="'.GETPOST('label', 'alphanohtml').'" autofocus></td></tr>';
|
print '<tr><td class="fieldrequired">'.$langs->trans("Label").'</td><td><input type="text" name="label" class="width300" value="'.GETPOST('label', 'alphanohtml').'" autofocus></td></tr>';
|
||||||
print '<tr><td class="fieldrequired">'.$langs->trans("Email").'</td><td>';
|
print '<tr><td class="fieldrequired">'.$langs->trans("Email").'</td><td>';
|
||||||
print img_picto('', 'email', 'class="pictofixedwidth"');
|
print img_picto('', 'email', 'class="pictofixedwidth"');
|
||||||
print '<input type="text" name="email" value="'.GETPOST('email', 'alphanohtml').'"></td></tr>';
|
print '<input type="text" name="email" class="width300" value="'.GETPOST('email', 'alphanohtml').'"></td></tr>';
|
||||||
print '<tr><td>'.$langs->trans("Signature").'</td><td>';
|
print '<tr><td>'.$langs->trans("Signature").'</td><td>';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
|
||||||
$doleditor = new DolEditor('signature', GETPOST('signature'), '', 138, 'dolibarr_notes', 'In', true, true, empty($conf->global->FCKEDITOR_ENABLE_USERSIGN) ? 0 : 1, ROWS_4, '90%');
|
$doleditor = new DolEditor('signature', GETPOST('signature'), '', 138, 'dolibarr_notes', 'In', true, true, empty($conf->global->FCKEDITOR_ENABLE_USERSIGN) ? 0 : 1, ROWS_4, '90%');
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||||
* Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
* Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
||||||
* Copyright (C) 2018 Nicolas ZABOURI <info@inovea-conseil.com>
|
* Copyright (C) 2018 Nicolas ZABOURI <info@inovea-conseil.com>
|
||||||
* Copyright (C) 2021 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2021-2023 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
|
||||||
@ -251,7 +251,15 @@ if ($action == 'install') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'set' && $user->admin) {
|
if ($action == 'set' && $user->admin) {
|
||||||
|
$checkOldValue = getDolGlobalInt('CHECKLASTVERSION_EXTERNALMODULE');
|
||||||
|
$csrfCheckOldValue = getDolGlobalInt('MAIN_SECURITY_CSRF_WITH_TOKEN');
|
||||||
$resarray = activateModule($value);
|
$resarray = activateModule($value);
|
||||||
|
if ($checkOldValue != getDolGlobalInt('CHECKLASTVERSION_EXTERNALMODULE')) {
|
||||||
|
setEventMessage($langs->trans('WarningModuleHasChangedLastVersionCheckParameter', $value), 'warnings');
|
||||||
|
}
|
||||||
|
if ($csrfCheckOldValue != getDolGlobalInt('MAIN_SECURITY_CSRF_WITH_TOKEN')) {
|
||||||
|
setEventMessage($langs->trans('WarningModuleHasChangedSecurityCsrfParameter', $value), 'warnings');
|
||||||
|
}
|
||||||
dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", (int) $conf->global->MAIN_IHM_PARAMS_REV + 1, 'chaine', 0, '', $conf->entity);
|
dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", (int) $conf->global->MAIN_IHM_PARAMS_REV + 1, 'chaine', 0, '', $conf->entity);
|
||||||
if (!empty($resarray['errors'])) {
|
if (!empty($resarray['errors'])) {
|
||||||
setEventMessages('', $resarray['errors'], 'errors');
|
setEventMessages('', $resarray['errors'], 'errors');
|
||||||
@ -371,7 +379,6 @@ foreach ($modulesdir as $dir) {
|
|||||||
try {
|
try {
|
||||||
$res = include_once $dir.$file; // A class already exists in a different file will send a non catchable fatal error.
|
$res = include_once $dir.$file; // A class already exists in a different file will send a non catchable fatal error.
|
||||||
if (class_exists($modName)) {
|
if (class_exists($modName)) {
|
||||||
try {
|
|
||||||
$objMod = new $modName($db);
|
$objMod = new $modName($db);
|
||||||
$modNameLoaded[$modName] = $dir;
|
$modNameLoaded[$modName] = $dir;
|
||||||
if (!$objMod->numero > 0 && $modName != 'modUser') {
|
if (!$objMod->numero > 0 && $modName != 'modUser') {
|
||||||
@ -462,9 +469,6 @@ foreach ($modulesdir as $dir) {
|
|||||||
} else {
|
} else {
|
||||||
dol_syslog("Module ".get_class($objMod)." not qualified");
|
dol_syslog("Module ".get_class($objMod)." not qualified");
|
||||||
}
|
}
|
||||||
} catch (Exception $e) {
|
|
||||||
dol_syslog("Failed to load ".$dir.$file." ".$e->getMessage(), LOG_ERR);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
print "Warning bad descriptor file : ".$dir.$file." (Class ".$modName." not found into file)<br>";
|
print "Warning bad descriptor file : ".$dir.$file." (Class ".$modName." not found into file)<br>";
|
||||||
}
|
}
|
||||||
@ -515,12 +519,10 @@ asort($orders);
|
|||||||
|
|
||||||
$nbofactivatedmodules = count($conf->modules);
|
$nbofactivatedmodules = count($conf->modules);
|
||||||
|
|
||||||
//$conf->global->MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING = 1000;
|
$nbmodulesnotautoenabled = count($conf->modules);
|
||||||
/*$moreinfo = $langs->trans("TitleNumberOfActivatedModules");
|
if (in_array('fckeditor', $conf->modules)) $nbmodulesnotautoenabled--;
|
||||||
$moreinfo2 = '<b class="largenumber">'.($nbofactivatedmodules - 1).'</b> / <b class="largenumber">'.count($modules).'</b>';
|
if (in_array('export', $conf->modules)) $nbmodulesnotautoenabled--;
|
||||||
if ($nbofactivatedmodules <= (empty($conf->global->MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING) ? 1 : $conf->global->MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING)) {
|
if (in_array('import', $conf->modules)) $nbmodulesnotautoenabled--;
|
||||||
$moreinfo2 .= ' '.img_warning($langs->trans("YouMustEnableOneModule"));
|
|
||||||
}*/
|
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("ModulesSetup"), '', 'title_setup');
|
print load_fiche_titre($langs->trans("ModulesSetup"), '', 'title_setup');
|
||||||
|
|
||||||
@ -531,7 +533,7 @@ if ($mode == 'common' || $mode == 'commonkanban') {
|
|||||||
$desc .= ' '.$langs->trans("ModulesDesc2", '{picto2}');
|
$desc .= ' '.$langs->trans("ModulesDesc2", '{picto2}');
|
||||||
$desc = str_replace('{picto}', img_picto('', 'switch_off', 'class="size15x"'), $desc);
|
$desc = str_replace('{picto}', img_picto('', 'switch_off', 'class="size15x"'), $desc);
|
||||||
$desc = str_replace('{picto2}', img_picto('', 'setup', 'class="size15x"'), $desc);
|
$desc = str_replace('{picto2}', img_picto('', 'setup', 'class="size15x"'), $desc);
|
||||||
if (!count($conf->modules) <= (empty($conf->global->MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING) ? 1 : $conf->global->MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING)) { // If only minimal initial modules enabled
|
if ($nbmodulesnotautoenabled <= getDolGlobalInt('MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING', 1)) { // If only minimal initial modules enabled
|
||||||
$deschelp = '<div class="info hideonsmartphone">'.$desc."<br></div><br>\n";
|
$deschelp = '<div class="info hideonsmartphone">'.$desc."<br></div><br>\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -545,7 +547,7 @@ if ($mode == 'develop') {
|
|||||||
$deschelp = '<div class="info hideonsmartphone">'.$langs->trans("ModulesDevelopDesc")."<br></div><br>\n";
|
$deschelp = '<div class="info hideonsmartphone">'.$langs->trans("ModulesDevelopDesc")."<br></div><br>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
$head = modules_prepare_head($nbofactivatedmodules, count($modules));
|
$head = modules_prepare_head($nbofactivatedmodules, count($modules), $nbmodulesnotautoenabled);
|
||||||
|
|
||||||
|
|
||||||
if ($mode == 'common' || $mode == 'commonkanban') {
|
if ($mode == 'common' || $mode == 'commonkanban') {
|
||||||
@ -796,8 +798,8 @@ if ($mode == 'common' || $mode == 'commonkanban') {
|
|||||||
if ($objMod->isCoreOrExternalModule() == 'external'
|
if ($objMod->isCoreOrExternalModule() == 'external'
|
||||||
&& (
|
&& (
|
||||||
$action == 'checklastversion'
|
$action == 'checklastversion'
|
||||||
// This is a bad practice to activate a synch external access during building of a page. 1 external module can hang the application.
|
// This is a bad practice to activate a check on an external access during the building of the admin page. 1 external module can hang the application.
|
||||||
// Adding a cron job could be a good idea see DolibarrModules::checkForUpdate()
|
// Adding a cron job could be a good idea: see DolibarrModules::checkForUpdate()
|
||||||
|| !empty($conf->global->CHECKLASTVERSION_EXTERNALMODULE)
|
|| !empty($conf->global->CHECKLASTVERSION_EXTERNALMODULE)
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
|
|||||||
@ -565,6 +565,9 @@ if ($execmethod == 2) {
|
|||||||
print '<br>';
|
print '<br>';
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
|
print '<strong>MAIN_SECURITY_MAXFILESIZE_DOWNLOADED</strong> = '.getDolGlobalString('MAIN_SECURITY_MAXFILESIZE_DOWNLOADED', '<span class="opacitymedium">'.$langs->trans("Undefined").' ('.$langs->trans("Recommended").': 100000000)</span>')."<br>";
|
||||||
|
print '<br>';
|
||||||
|
|
||||||
print '<strong>MAIN_RESTRICTHTML_ONLY_VALID_HTML</strong> = '.getDolGlobalString('MAIN_RESTRICTHTML_ONLY_VALID_HTML', '<span class="opacitymedium">'.$langs->trans("Undefined").' ('.$langs->trans("Recommended").': 1)</span>')."<br>";
|
print '<strong>MAIN_RESTRICTHTML_ONLY_VALID_HTML</strong> = '.getDolGlobalString('MAIN_RESTRICTHTML_ONLY_VALID_HTML', '<span class="opacitymedium">'.$langs->trans("Undefined").' ('.$langs->trans("Recommended").': 1)</span>')."<br>";
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
|
|||||||
@ -43,10 +43,6 @@ $rowid = GETPOST('rowid', 'alpha');
|
|||||||
|
|
||||||
$id = 1;
|
$id = 1;
|
||||||
|
|
||||||
if (!$user->admin) {
|
|
||||||
accessforbidden();
|
|
||||||
}
|
|
||||||
|
|
||||||
$acts[0] = "activate";
|
$acts[0] = "activate";
|
||||||
$acts[1] = "disable";
|
$acts[1] = "disable";
|
||||||
$actl[0] = img_picto($langs->trans("Disabled"), 'switch_off', 'class="size15x"');
|
$actl[0] = img_picto($langs->trans("Disabled"), 'switch_off', 'class="size15x"');
|
||||||
@ -125,6 +121,10 @@ $tabfieldcheck[1] = array();
|
|||||||
$elementList = array();
|
$elementList = array();
|
||||||
$sourceList = array();
|
$sourceList = array();
|
||||||
|
|
||||||
|
if (!$user->admin) {
|
||||||
|
accessforbidden();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
@ -596,7 +596,9 @@ if ($id) {
|
|||||||
|
|
||||||
print '<td colspan="7" class="right"><a name="'.(!empty($obj->rowid) ? $obj->rowid : $obj->code).'"> </a>';
|
print '<td colspan="7" class="right"><a name="'.(!empty($obj->rowid) ? $obj->rowid : $obj->code).'"> </a>';
|
||||||
print '<input type="submit" class="button button-edit small" name="actionmodify" value="'.$langs->trans("Modify").'">';
|
print '<input type="submit" class="button button-edit small" name="actionmodify" value="'.$langs->trans("Modify").'">';
|
||||||
print ' <input type="submit" class="button button-cancel small" name="actioncancel" value="'.$langs->trans("Cancel").'"></td>';
|
print ' ';
|
||||||
|
print '<input type="submit" class="button button-cancel small" name="actioncancel" value="'.$langs->trans("Cancel").'">';
|
||||||
|
print '</td>';
|
||||||
} else {
|
} else {
|
||||||
$tmpaction = 'view';
|
$tmpaction = 'view';
|
||||||
$parameters = array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
$parameters = array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
||||||
|
|||||||
@ -144,6 +144,7 @@ class DolibarrApiAccess implements iAuthenticate
|
|||||||
throw new RestException(503, 'Error when searching login user from api key');
|
throw new RestException(503, 'Error when searching login user from api key');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$genericmessageerroruser = 'Error user not valid (not found or bad status or bad validity dates) (conf->entity='.$conf->entity.')';
|
$genericmessageerroruser = 'Error user not valid (not found or bad status or bad validity dates) (conf->entity='.$conf->entity.')';
|
||||||
|
|
||||||
$fuser = new User($this->db);
|
$fuser = new User($this->db);
|
||||||
@ -151,21 +152,27 @@ class DolibarrApiAccess implements iAuthenticate
|
|||||||
if ($result <= 0) {
|
if ($result <= 0) {
|
||||||
throw new RestException(503, $genericmessageerroruser);
|
throw new RestException(503, $genericmessageerroruser);
|
||||||
}
|
}
|
||||||
if ($fuser->statut == 0) {
|
|
||||||
throw new RestException(503, 'Error when fetching user. This user has been locked or disabled');
|
|
||||||
}
|
|
||||||
|
|
||||||
$now = dol_now();
|
// Check if user status is enabled
|
||||||
|
if ($fuser->statut != $fuser::STATUS_ENABLED) {
|
||||||
// Check date start validity
|
// Status is disabled
|
||||||
if ($fuser->datestartvalidity && $this->db->jdate($fuser->datestartvalidity) > $now) {
|
dol_syslog("The user has been disabled");
|
||||||
throw new RestException(503, $genericmessageerroruser);
|
|
||||||
}
|
|
||||||
// Check date end validity
|
|
||||||
if ($fuser->dateendvalidity && $this->db->jdate($fuser->dateendvalidity) < dol_get_first_hour($now)) {
|
|
||||||
throw new RestException(503, $genericmessageerroruser);
|
throw new RestException(503, $genericmessageerroruser);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if session was unvalidated by a password change
|
||||||
|
if (($fuser->flagdelsessionsbefore && !empty($_SESSION["dol_logindate"]) && $fuser->flagdelsessionsbefore > $_SESSION["dol_logindate"])) {
|
||||||
|
// Session is no more valid
|
||||||
|
dol_syslog("The user has a date for session invalidation = ".$fuser->flagdelsessionsbefore." and a session date = ".$_SESSION["dol_logindate"].". We must invalidate its sessions.");
|
||||||
|
throw new RestException(503, $genericmessageerroruser);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check date validity
|
||||||
|
if ($fuser->isNotIntoValidityDateRange()) {
|
||||||
|
// User validity dates are no more valid
|
||||||
|
dol_syslog("The user login has a validity between [".$fuser->datestartvalidity." and ".$fuser->dateendvalidity."], curren date is ".dol_now());
|
||||||
|
throw new RestException(503, $genericmessageerroruser);
|
||||||
|
}
|
||||||
|
|
||||||
// User seems valid
|
// User seems valid
|
||||||
$fuser->getrights();
|
$fuser->getrights();
|
||||||
|
|||||||
@ -1762,11 +1762,6 @@ class Setup extends DolibarrApi
|
|||||||
throw new RestException(403, 'Error API open to admin users only or to the users with logins defined into constant API_LOGINS_ALLOWED_FOR_GET_COMPANY');
|
throw new RestException(403, 'Error API open to admin users only or to the users with logins defined into constant API_LOGINS_ALLOWED_FOR_GET_COMPANY');
|
||||||
}
|
}
|
||||||
|
|
||||||
unset($mysoc->skype);
|
|
||||||
unset($mysoc->twitter);
|
|
||||||
unset($mysoc->facebook);
|
|
||||||
unset($mysoc->linkedin);
|
|
||||||
|
|
||||||
unset($mysoc->pays);
|
unset($mysoc->pays);
|
||||||
unset($mysoc->note);
|
unset($mysoc->note);
|
||||||
unset($mysoc->nom);
|
unset($mysoc->nom);
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2017-2020 Laurent Destailleur <eldy@users.sourceforge.net>
|
/* Copyright (C) 2017-2023 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2019 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2019 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
|
||||||
@ -275,7 +275,7 @@ if (empty($reshook)) {
|
|||||||
$object->calculateCosts();
|
$object->calculateCosts();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -559,6 +559,7 @@ if (empty($reshook)) {
|
|||||||
print dol_get_fiche_end();
|
print dol_get_fiche_end();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Lines
|
* Lines
|
||||||
*/
|
*/
|
||||||
@ -584,7 +585,7 @@ if (empty($reshook)) {
|
|||||||
|
|
||||||
print '<div class="div-table-responsive-no-min">';
|
print '<div class="div-table-responsive-no-min">';
|
||||||
if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) {
|
if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) {
|
||||||
print '<table id="tablelines" class="noborder noshadow" width="100%">';
|
print '<table id="tablelines" class="noborder noshadow centpercent">';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($object->lines)) {
|
if (!empty($object->lines)) {
|
||||||
@ -612,9 +613,6 @@ if (empty($reshook)) {
|
|||||||
|
|
||||||
print "</form>\n";
|
print "</form>\n";
|
||||||
|
|
||||||
mrpCollapseBomManagement();
|
|
||||||
|
|
||||||
|
|
||||||
// Services
|
// Services
|
||||||
$filtertype = 1;
|
$filtertype = 1;
|
||||||
$res = $object->fetchLinesbytypeproduct(1);
|
$res = $object->fetchLinesbytypeproduct(1);
|
||||||
@ -636,7 +634,7 @@ if (empty($reshook)) {
|
|||||||
|
|
||||||
print '<div class="div-table-responsive-no-min">';
|
print '<div class="div-table-responsive-no-min">';
|
||||||
if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) {
|
if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) {
|
||||||
print '<table id="tablelinesservice" class="noborder noshadow" width="100%">';
|
print '<table id="tablelinesservice" class="noborder noshadow centpercent">';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($object->lines)) {
|
if (!empty($object->lines)) {
|
||||||
@ -663,8 +661,10 @@ if (empty($reshook)) {
|
|||||||
|
|
||||||
print "</form>\n";
|
print "</form>\n";
|
||||||
|
|
||||||
|
|
||||||
mrpCollapseBomManagement();
|
mrpCollapseBomManagement();
|
||||||
|
|
||||||
|
|
||||||
$res = $object->fetchLines();
|
$res = $object->fetchLines();
|
||||||
|
|
||||||
// Buttons for actions
|
// Buttons for actions
|
||||||
@ -804,7 +804,7 @@ if (empty($reshook)) {
|
|||||||
|
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/card_presend.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/card_presend.tpl.php';
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// End of page
|
// End of page
|
||||||
llxFooter();
|
llxFooter();
|
||||||
|
|||||||
@ -187,8 +187,8 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
|
|
||||||
print dol_get_fiche_end();
|
print dol_get_fiche_end();
|
||||||
|
|
||||||
$viewlink = dolGetButtonTitle($langs->trans('GroupByProduct'), '', 'fa fa-bars imgforviewmode', $_SERVER['PHP_SELF'].'?id='.$object->id.'&token='.newToken(), '', 1, array('morecss' => 'reposition '.($action !== 'treeview' ? 'btnTitleSelected':'')));
|
$viewlink = dolGetButtonTitle($langs->trans('GroupByX', $langs->transnoentitiesnoconv("Products")), '', 'fa fa-bars imgforviewmode', $_SERVER['PHP_SELF'].'?id='.$object->id.'&token='.newToken(), '', 1, array('morecss' => 'reposition '.($action !== 'treeview' ? 'btnTitleSelected':'')));
|
||||||
$viewlink .= dolGetButtonTitle($langs->trans('TreeStructure'), '', 'fa fa-stream imgforviewmode', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=treeview&token='.newToken(), '', 1, array('morecss' => 'reposition marginleftonly '.($action == 'treeview' ? 'btnTitleSelected':'')));
|
$viewlink .= dolGetButtonTitle($langs->trans('TreeView'), '', 'fa fa-stream imgforviewmode', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=treeview&token='.newToken(), '', 1, array('morecss' => 'reposition marginleftonly '.($action == 'treeview' ? 'btnTitleSelected':'')));
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("BOMNetNeeds"), $viewlink, '');
|
print load_fiche_titre($langs->trans("BOMNetNeeds"), $viewlink, '');
|
||||||
|
|
||||||
|
|||||||
@ -370,7 +370,7 @@ class Boms extends DolibarrApi
|
|||||||
*
|
*
|
||||||
* @url PUT {id}/lines/{lineid}
|
* @url PUT {id}/lines/{lineid}
|
||||||
*
|
*
|
||||||
* @return array|bool
|
* @return object|bool
|
||||||
*/
|
*/
|
||||||
public function putLine($id, $lineid, $request_data = null)
|
public function putLine($id, $lineid, $request_data = null)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -102,9 +102,9 @@ class BOM extends CommonObject
|
|||||||
'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'notnull'=>1, 'searchall'=>1, 'showoncombobox'=>'2', 'autofocusoncreate'=>1, 'css'=>'minwidth300 maxwidth400', 'csslist'=>'tdoverflowmax200'),
|
'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'notnull'=>1, 'searchall'=>1, 'showoncombobox'=>'2', 'autofocusoncreate'=>1, 'css'=>'minwidth300 maxwidth400', 'csslist'=>'tdoverflowmax200'),
|
||||||
'bomtype' => array('type'=>'integer', 'label'=>'Type', 'enabled'=>1, 'visible'=>1, 'position'=>33, 'notnull'=>1, 'default'=>'0', 'arrayofkeyval'=>array(0=>'Manufacturing', 1=>'Disassemble'), 'css'=>'minwidth175', 'csslist'=>'minwidth175 center'),
|
'bomtype' => array('type'=>'integer', 'label'=>'Type', 'enabled'=>1, 'visible'=>1, 'position'=>33, 'notnull'=>1, 'default'=>'0', 'arrayofkeyval'=>array(0=>'Manufacturing', 1=>'Disassemble'), 'css'=>'minwidth175', 'csslist'=>'minwidth175 center'),
|
||||||
//'bomtype' => array('type'=>'integer', 'label'=>'Type', 'enabled'=>1, 'visible'=>-1, 'position'=>32, 'notnull'=>1, 'default'=>'0', 'arrayofkeyval'=>array(0=>'Manufacturing')),
|
//'bomtype' => array('type'=>'integer', 'label'=>'Type', 'enabled'=>1, 'visible'=>-1, 'position'=>32, 'notnull'=>1, 'default'=>'0', 'arrayofkeyval'=>array(0=>'Manufacturing')),
|
||||||
'fk_product' => array('type'=>'integer:Product:product/class/product.class.php:1:(finished IS NULL or finished <> 0)', 'label'=>'Product', 'picto'=>'product', 'enabled'=>1, 'visible'=>1, 'position'=>35, 'notnull'=>1, 'index'=>1, 'help'=>'ProductBOMHelp', 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax100'),
|
'fk_product' => array('type'=>'integer:Product:product/class/product.class.php:1:((finished:is:null) or (finished:!=:0))', 'label'=>'Product', 'picto'=>'product', 'enabled'=>1, 'visible'=>1, 'position'=>35, 'notnull'=>1, 'index'=>1, 'help'=>'ProductBOMHelp', 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax100'),
|
||||||
'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>-1, 'position'=>60, 'notnull'=>-1,),
|
'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>-1, 'position'=>60, 'notnull'=>-1,),
|
||||||
'qty' => array('type'=>'real', 'label'=>'Quantity', 'enabled'=>1, 'visible'=>1, 'default'=>1, 'position'=>55, 'notnull'=>1, 'isameasure'=>'1', 'css'=>'maxwidth75imp'),
|
'qty' => array('type'=>'real', 'label'=>'Quantity', 'enabled'=>1, 'visible'=>1, 'default'=>1, 'position'=>55, 'notnull'=>1, 'isameasure'=>'1', 'css'=>'maxwidth50imp right'),
|
||||||
//'efficiency' => array('type'=>'real', 'label'=>'ManufacturingEfficiency', 'enabled'=>1, 'visible'=>-1, 'default'=>1, 'position'=>100, 'notnull'=>0, 'css'=>'maxwidth50imp', 'help'=>'ValueOfMeansLossForProductProduced'),
|
//'efficiency' => array('type'=>'real', 'label'=>'ManufacturingEfficiency', 'enabled'=>1, 'visible'=>-1, 'default'=>1, 'position'=>100, 'notnull'=>0, 'css'=>'maxwidth50imp', 'help'=>'ValueOfMeansLossForProductProduced'),
|
||||||
'duration' => array('type'=>'duration', 'label'=>'EstimatedDuration', 'enabled'=>1, 'visible'=>-1, 'position'=>101, 'notnull'=>-1, 'css'=>'maxwidth50imp', 'help'=>'EstimatedDurationDesc'),
|
'duration' => array('type'=>'duration', 'label'=>'EstimatedDuration', 'enabled'=>1, 'visible'=>-1, 'position'=>101, 'notnull'=>-1, 'css'=>'maxwidth50imp', 'help'=>'EstimatedDurationDesc'),
|
||||||
'fk_warehouse' => array('type'=>'integer:Entrepot:product/stock/class/entrepot.class.php:0', 'label'=>'WarehouseForProduction', 'picto'=>'stock', 'enabled'=>1, 'visible'=>-1, 'position'=>102, 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax100'),
|
'fk_warehouse' => array('type'=>'integer:Entrepot:product/stock/class/entrepot.class.php:0', 'label'=>'WarehouseForProduction', 'picto'=>'stock', 'enabled'=>1, 'visible'=>-1, 'position'=>102, 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax100'),
|
||||||
|
|||||||
@ -107,7 +107,7 @@ print '<td class="bordertop nobottom linecoldescription minwidth500imp">';
|
|||||||
if (isModEnabled("product") || isModEnabled("service")) {
|
if (isModEnabled("product") || isModEnabled("service")) {
|
||||||
if ($filtertype == 1) {
|
if ($filtertype == 1) {
|
||||||
print $langs->trans("Service");
|
print $langs->trans("Service");
|
||||||
} elseif (!empty($conf->global->BOM_SUB_BOM)) {
|
} else {
|
||||||
print $langs->trans("Product");
|
print $langs->trans("Product");
|
||||||
}
|
}
|
||||||
echo '<span class="prod_entry_mode_predef">';
|
echo '<span class="prod_entry_mode_predef">';
|
||||||
|
|||||||
@ -171,7 +171,7 @@ $tmpbom->calculateCosts();
|
|||||||
print '<td id="costline_'.$line->id.'" class="linecolcost nowrap right">';
|
print '<td id="costline_'.$line->id.'" class="linecolcost nowrap right">';
|
||||||
$coldisplay++;
|
$coldisplay++;
|
||||||
if (!empty($line->fk_bom_child)) {
|
if (!empty($line->fk_bom_child)) {
|
||||||
echo '<span class="amount">'.price($tmpbom->total_cost).'</span>';
|
echo '<span class="amount">'.price($tmpbom->total_cost * $line->qty).'</span>';
|
||||||
} else {
|
} else {
|
||||||
echo '<span class="amount">'.price($line->total_cost).'</span>';
|
echo '<span class="amount">'.price($line->total_cost).'</span>';
|
||||||
}
|
}
|
||||||
@ -269,16 +269,20 @@ if ($resql) {
|
|||||||
$label = $sub_bom_product->getLabelOfUnit('long');
|
$label = $sub_bom_product->getLabelOfUnit('long');
|
||||||
if ($sub_bom_line->qty_frozen > 0) {
|
if ($sub_bom_line->qty_frozen > 0) {
|
||||||
print '<td class="linecolqty nowrap right" id="sub_bom_qty_'.$sub_bom_line->id.'">'.price($sub_bom_line->qty, 0, '', 0, 0).'</td>';
|
print '<td class="linecolqty nowrap right" id="sub_bom_qty_'.$sub_bom_line->id.'">'.price($sub_bom_line->qty, 0, '', 0, 0).'</td>';
|
||||||
|
if (!empty($conf->global->PRODUCT_USE_UNITS)) {
|
||||||
print '<td class="linecoluseunit nowrap left">';
|
print '<td class="linecoluseunit nowrap left">';
|
||||||
if ($label !== '') print $langs->trans($label);
|
if ($label !== '') print $langs->trans($label);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
}
|
||||||
print '<td class="linecolqtyfrozen nowrap right" id="sub_bom_qty_frozen_'.$sub_bom_line->id.'">'.$langs->trans('Yes').'</td>';
|
print '<td class="linecolqtyfrozen nowrap right" id="sub_bom_qty_frozen_'.$sub_bom_line->id.'">'.$langs->trans('Yes').'</td>';
|
||||||
} else {
|
} else {
|
||||||
print '<td class="linecolqty nowrap right" id="sub_bom_qty_'.$sub_bom_line->id.'">'.price($sub_bom_line->qty * $line->qty, 0, '', 0, 0).'</td>';
|
print '<td class="linecolqty nowrap right" id="sub_bom_qty_'.$sub_bom_line->id.'">'.price($sub_bom_line->qty * $line->qty, 0, '', 0, 0).'</td>';
|
||||||
|
if (!empty($conf->global->PRODUCT_USE_UNITS)) {
|
||||||
print '<td class="linecoluseunit nowrap left">';
|
print '<td class="linecoluseunit nowrap left">';
|
||||||
if ($label !== '') print $langs->trans($label);
|
if ($label !== '') print $langs->trans($label);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</td>';
|
}
|
||||||
|
|
||||||
print '<td class="linecolqtyfrozen nowrap right" id="sub_bom_qty_frozen_'.$sub_bom_line->id.'"> </td>';
|
print '<td class="linecolqtyfrozen nowrap right" id="sub_bom_qty_frozen_'.$sub_bom_line->id.'"> </td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -51,12 +51,12 @@ if ($id > 0) {
|
|||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
if (empty($user->rights->bookmark->lire)) {
|
restrictedArea($user, 'bookmark', $object);
|
||||||
restrictedArea($user, 'bookmarks');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
$permissiontoread = $user->hasRight('bookmark', 'lire');
|
||||||
|
$permissiontoadd = $user->hasRight('bookmark', 'creer');
|
||||||
|
$permissiontodelete = $user->hasRight('bookmark', 'supprimer');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -326,12 +326,12 @@ if ($id > 0 && !preg_match('/^add/i', $action)) {
|
|||||||
print "<div class=\"tabsAction\">\n";
|
print "<div class=\"tabsAction\">\n";
|
||||||
|
|
||||||
// Edit
|
// Edit
|
||||||
if ($user->rights->bookmark->creer && $action != 'edit') {
|
if ($permissiontoadd && $action != 'edit') {
|
||||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=edit&token='.newToken().'">'.$langs->trans("Edit").'</a>'."\n";
|
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=edit&token='.newToken().'">'.$langs->trans("Edit").'</a>'."\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove
|
// Remove
|
||||||
if ($user->rights->bookmark->supprimer && $action != 'edit') {
|
if ($permissiontodelete && $action != 'edit') {
|
||||||
print '<a class="butActionDelete" href="list.php?bid='.$object->id.'&action=delete&token='.newToken().'">'.$langs->trans("Delete").'</a>'."\n";
|
print '<a class="butActionDelete" href="list.php?bid='.$object->id.'&action=delete&token='.newToken().'">'.$langs->trans("Delete").'</a>'."\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -60,7 +60,7 @@ class Bookmark extends CommonObject
|
|||||||
public $id;
|
public $id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int User ID
|
* @var int User ID. If > 0, bookmark of one user. If == 0, bookmark public (for everybody)
|
||||||
*/
|
*/
|
||||||
public $fk_user;
|
public $fk_user;
|
||||||
|
|
||||||
@ -233,15 +233,14 @@ class Bookmark extends CommonObject
|
|||||||
/**
|
/**
|
||||||
* Removes the bookmark
|
* Removes the bookmark
|
||||||
*
|
*
|
||||||
* @param int $id Id removed bookmark
|
* @param User $user User deleting
|
||||||
* @return int <0 si ko, >0 si ok
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
public function remove($id)
|
public function delete($user)
|
||||||
{
|
{
|
||||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bookmark";
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bookmark";
|
||||||
$sql .= " WHERE rowid = ".((int) $id);
|
$sql .= " WHERE rowid = ".((int) $this->id);
|
||||||
|
|
||||||
dol_syslog("Bookmark::remove", LOG_DEBUG);
|
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
@ -63,14 +63,17 @@ if (!$sortorder) {
|
|||||||
|
|
||||||
// Initialize Objects
|
// Initialize Objects
|
||||||
$object = new Bookmark($db);
|
$object = new Bookmark($db);
|
||||||
|
if ($id > 0) {
|
||||||
|
$object->fetch($id);
|
||||||
|
}
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
restrictedArea($user, 'bookmark');
|
restrictedArea($user, 'bookmark', $object);
|
||||||
|
|
||||||
// Permissions
|
// Permissions
|
||||||
$permissiontoread = !empty($user->rights->bookmark->lire);
|
$permissiontoread = $user->hasRight('bookmark', 'lire');
|
||||||
$permissiontoadd = !empty($user->rights->bookmark->creer);
|
$permissiontoadd = $user->hasRight('bookmark', 'creer');
|
||||||
$permissiontodelete = !empty($user->rights->bookmark->supprimer);
|
$permissiontodelete = ($user->hasRight('bookmark', 'supprimer') || ($permissiontoadd && $object->fk_user == $user->id));
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -85,13 +88,15 @@ if (!GETPOST('confirmmassaction', 'alpha') && $massaction != 'presend' && $massa
|
|||||||
$massaction = '';
|
$massaction = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'delete') {
|
if ($action == 'delete' && $permissiontodelete) {
|
||||||
$res = $object->remove($id);
|
$object->fetch($id);
|
||||||
|
$res = $object->delete($user);
|
||||||
if ($res > 0) {
|
if ($res > 0) {
|
||||||
header("Location: ".$_SERVER["PHP_SELF"]);
|
header("Location: ".$_SERVER["PHP_SELF"]);
|
||||||
exit;
|
exit;
|
||||||
} else {
|
} else {
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
$action = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -196,7 +201,7 @@ print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
|
|||||||
print '<input type="hidden" name="mode" value="'.$mode.'">';
|
print '<input type="hidden" name="mode" value="'.$mode.'">';
|
||||||
|
|
||||||
$newcardbutton = '';
|
$newcardbutton = '';
|
||||||
$newcardbutton .= dolGetButtonTitle($langs->trans('New'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/bookmarks/card.php?action=create&backtopage='.urlencode(DOL_URL_ROOT.'/bookmarks/list.php'), '', !empty($user->rights->bookmark->creer));
|
$newcardbutton .= dolGetButtonTitle($langs->trans('New'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/bookmarks/card.php?action=create&backtopage='.urlencode(DOL_URL_ROOT.'/bookmarks/list.php'), '', $permissiontoadd);
|
||||||
|
|
||||||
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'bookmark', 0, $newcardbutton, '', $limit, 0, 0, 1);
|
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'bookmark', 0, $newcardbutton, '', $limit, 0, 0, 1);
|
||||||
|
|
||||||
@ -235,8 +240,8 @@ while ($i < min($num, $limit)) {
|
|||||||
}
|
}
|
||||||
$title = $obj->title;
|
$title = $obj->title;
|
||||||
$link = $obj->url;
|
$link = $obj->url;
|
||||||
$canedit = $user->rights->bookmark->supprimer;
|
$canedit = $permissiontoadd;
|
||||||
$candelete = $user->rights->bookmark->creer;
|
$candelete = $permissiontodelete;
|
||||||
|
|
||||||
// Title
|
// Title
|
||||||
print '<td class="tdoverflowmax200" alt="'.dol_escape_htmltag($title).'">';
|
print '<td class="tdoverflowmax200" alt="'.dol_escape_htmltag($title).'">';
|
||||||
@ -268,7 +273,7 @@ while ($i < min($num, $limit)) {
|
|||||||
|
|
||||||
// Author
|
// Author
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
if ($obj->fk_user) {
|
if ($obj->fk_user > 0) {
|
||||||
if (empty($conf->cache['users'][$obj->fk_user])) {
|
if (empty($conf->cache['users'][$obj->fk_user])) {
|
||||||
$tmpuser = new User($db);
|
$tmpuser = new User($db);
|
||||||
$tmpuser->fetch($obj->fk_user);
|
$tmpuser->fetch($obj->fk_user);
|
||||||
@ -294,10 +299,10 @@ while ($i < min($num, $limit)) {
|
|||||||
// Actions
|
// Actions
|
||||||
print '<td class="nowraponall right">';
|
print '<td class="nowraponall right">';
|
||||||
if ($canedit) {
|
if ($canedit) {
|
||||||
print '<a class="editfielda marginleftonly" href="'.DOL_URL_ROOT.'/bookmarks/card.php?action=edit&token='.newToken().'&id='.$obj->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"]).'">'.img_edit()."</a>";
|
print '<a class="editfielda marginleftonly marginrightonly" href="'.DOL_URL_ROOT.'/bookmarks/card.php?action=edit&token='.newToken().'&id='.$obj->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"]).'">'.img_edit()."</a>";
|
||||||
}
|
}
|
||||||
if ($candelete) {
|
if ($candelete) {
|
||||||
print '<a class="marginleftonly" href="'.$_SERVER["PHP_SELF"].'?action=delete&token='.newToken().'&id='.$obj->rowid.'">'.img_delete().'</a>';
|
print '<a class="marginleftonly marginrightonly" href="'.$_SERVER["PHP_SELF"].'?action=delete&token='.newToken().'&id='.$obj->rowid.'">'.img_delete().'</a>';
|
||||||
}
|
}
|
||||||
print "</td>";
|
print "</td>";
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|||||||
@ -924,6 +924,10 @@ while ($currentdaytoshow < $lastdaytoshow) {
|
|||||||
if ($usergroup > 0) {
|
if ($usergroup > 0) {
|
||||||
$sql .= " AND ug.fk_usergroup = ".((int) $usergroup);
|
$sql .= " AND ug.fk_usergroup = ".((int) $usergroup);
|
||||||
}
|
}
|
||||||
|
if ($user->socid > 0) {
|
||||||
|
// External users should see only contacts of their company
|
||||||
|
$sql .= " AND u.fk_soc = ".((int) $user->socid);
|
||||||
|
}
|
||||||
|
|
||||||
//print $sql;
|
//print $sql;
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
@ -948,26 +952,6 @@ while ($currentdaytoshow < $lastdaytoshow) {
|
|||||||
$usernames[] = $tmpuser;
|
$usernames[] = $tmpuser;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
if ($filtert > 0)
|
|
||||||
{
|
|
||||||
$tmpuser = new User($db);
|
|
||||||
$tmpuser->fetch($filtert);
|
|
||||||
$usernames[] = $tmpuser;
|
|
||||||
}
|
|
||||||
else if ($usergroup)
|
|
||||||
{
|
|
||||||
$tmpgroup = new UserGroup($db);
|
|
||||||
$tmpgroup->fetch($usergroup);
|
|
||||||
$usernames = $tmpgroup->listUsersForGroup();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$tmpgroup = new UserGroup($db);
|
|
||||||
//$tmpgroup->fetch($usergroup); No fetch, we want all users for all groups
|
|
||||||
$usernames = $tmpgroup->listUsersForGroup();
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// Load array of colors by type
|
// Load array of colors by type
|
||||||
$colorsbytype = array();
|
$colorsbytype = array();
|
||||||
$labelbytype = array();
|
$labelbytype = array();
|
||||||
|
|||||||
@ -61,25 +61,17 @@ if (isset($user->socid) && $user->socid > 0) {
|
|||||||
$socid = $user->socid;
|
$socid = $user->socid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$max = $conf->global->MAIN_SIZE_SHORTLIST_LIMIT;
|
$max = $conf->global->MAIN_SIZE_SHORTLIST_LIMIT;
|
||||||
|
$maxofloop = (empty($conf->global->MAIN_MAXLIST_OVERLOAD) ? 500 : $conf->global->MAIN_MAXLIST_OVERLOAD);
|
||||||
$now = dol_now();
|
$now = dol_now();
|
||||||
|
|
||||||
// Security check
|
//restrictedArea($user, 'societe', $socid, '&societe', '', 'fk_soc', 'rowid', 0);
|
||||||
//$socid = GETPOST("socid", 'int');
|
|
||||||
if ($user->socid > 0) {
|
|
||||||
$action = '';
|
|
||||||
$id = $user->socid;
|
|
||||||
} else {
|
|
||||||
$id = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//restrictedArea($user, 'societe', $id, '&societe', '', 'fk_soc', 'rowid', 0);
|
|
||||||
if (!$user->hasRight('propal', 'read') && !$user->hasRight('supplier_proposal', 'read') && !$user->hasRight('commande', 'read') && !$user->hasRight('fournisseur', 'commande', 'read')
|
if (!$user->hasRight('propal', 'read') && !$user->hasRight('supplier_proposal', 'read') && !$user->hasRight('commande', 'read') && !$user->hasRight('fournisseur', 'commande', 'read')
|
||||||
&& !$user->hasRight('supplier_order', 'read') && !$user->hasRight('fichinter', 'read')) {
|
&& !$user->hasRight('supplier_order', 'read') && !$user->hasRight('fichinter', 'read')) {
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
}
|
}
|
||||||
|
|
||||||
$maxofloop = (empty($conf->global->MAIN_MAXLIST_OVERLOAD) ? 500 : $conf->global->MAIN_MAXLIST_OVERLOAD);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@ -327,8 +327,8 @@ class Propal extends CommonObject
|
|||||||
'fk_cond_reglement' =>array('type'=>'integer', 'label'=>'PaymentTerm', 'enabled'=>1, 'visible'=>-1, 'position'=>160),
|
'fk_cond_reglement' =>array('type'=>'integer', 'label'=>'PaymentTerm', 'enabled'=>1, 'visible'=>-1, 'position'=>160),
|
||||||
'deposit_percent' =>array('type'=>'varchar(63)', 'label'=>'DepositPercent', 'enabled'=>1, 'visible'=>-1, 'position'=>161),
|
'deposit_percent' =>array('type'=>'varchar(63)', 'label'=>'DepositPercent', 'enabled'=>1, 'visible'=>-1, 'position'=>161),
|
||||||
'fk_mode_reglement' =>array('type'=>'integer', 'label'=>'PaymentMode', 'enabled'=>1, 'visible'=>-1, 'position'=>165),
|
'fk_mode_reglement' =>array('type'=>'integer', 'label'=>'PaymentMode', 'enabled'=>1, 'visible'=>-1, 'position'=>165),
|
||||||
'note_private' =>array('type'=>'text', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>170),
|
'note_private' =>array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>170),
|
||||||
'note_public' =>array('type'=>'text', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>175),
|
'note_public' =>array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>175),
|
||||||
'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'PDFTemplate', 'enabled'=>1, 'visible'=>0, 'position'=>180),
|
'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'PDFTemplate', 'enabled'=>1, 'visible'=>0, 'position'=>180),
|
||||||
'date_livraison' =>array('type'=>'date', 'label'=>'DateDeliveryPlanned', 'enabled'=>1, 'visible'=>-1, 'position'=>185),
|
'date_livraison' =>array('type'=>'date', 'label'=>'DateDeliveryPlanned', 'enabled'=>1, 'visible'=>-1, 'position'=>185),
|
||||||
'fk_shipping_method' =>array('type'=>'integer', 'label'=>'ShippingMethod', 'enabled'=>1, 'visible'=>-1, 'position'=>190),
|
'fk_shipping_method' =>array('type'=>'integer', 'label'=>'ShippingMethod', 'enabled'=>1, 'visible'=>-1, 'position'=>190),
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
* Copyright (C) 2005-2015 Regis Houssin <regis.houssin@inodbox.com>
|
* Copyright (C) 2005-2015 Regis Houssin <regis.houssin@inodbox.com>
|
||||||
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
|
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
|
||||||
* Copyright (C) 2010-2013 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2010-2013 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2011-2022 Philippe Grand <philippe.grand@atoo-net.com>
|
* Copyright (C) 2011-2023 Philippe Grand <philippe.grand@atoo-net.com>
|
||||||
* Copyright (C) 2012-2013 Christophe Battarel <christophe.battarel@altairis.fr>
|
* Copyright (C) 2012-2013 Christophe Battarel <christophe.battarel@altairis.fr>
|
||||||
* Copyright (C) 2012-2016 Marcos García <marcosgdf@gmail.com>
|
* Copyright (C) 2012-2016 Marcos García <marcosgdf@gmail.com>
|
||||||
* Copyright (C) 2012 Cedric Salvador <csalvador@gpcsolutions.fr>
|
* Copyright (C) 2012 Cedric Salvador <csalvador@gpcsolutions.fr>
|
||||||
@ -14,6 +14,7 @@
|
|||||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||||
* Copyright (C) 2018-2021 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2018-2021 Frédéric France <frederic.france@netlogic.fr>
|
||||||
* Copyright (C) 2022 Gauthier VERDOL <gauthier.verdol@atm-consulting.fr>
|
* Copyright (C) 2022 Gauthier VERDOL <gauthier.verdol@atm-consulting.fr>
|
||||||
|
* Copyright (C) 2023 Benjamin Falière <benjamin.faliere@altairis.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
|
||||||
@ -660,6 +661,10 @@ if (empty($reshook)) {
|
|||||||
$price_ht_devise = '';
|
$price_ht_devise = '';
|
||||||
$price_ttc = '';
|
$price_ttc = '';
|
||||||
$price_ttc_devise = '';
|
$price_ttc_devise = '';
|
||||||
|
$pu_ht = '';
|
||||||
|
$pu_ttc = '';
|
||||||
|
$pu_ht_devise = '';
|
||||||
|
$pu_ttc_devise = '';
|
||||||
|
|
||||||
if (GETPOST('price_ht') !== '') {
|
if (GETPOST('price_ht') !== '') {
|
||||||
$price_ht = price2num(GETPOST('price_ht'), 'MU', 2);
|
$price_ht = price2num(GETPOST('price_ht'), 'MU', 2);
|
||||||
@ -1837,25 +1842,25 @@ if ($action == 'create' && $usercancreate) {
|
|||||||
// Delivery delay
|
// Delivery delay
|
||||||
print '<tr class="fielddeliverydelay"><td>'.$langs->trans('AvailabilityPeriod').'</td><td>';
|
print '<tr class="fielddeliverydelay"><td>'.$langs->trans('AvailabilityPeriod').'</td><td>';
|
||||||
print img_picto('', 'clock', 'class="pictofixedwidth"');
|
print img_picto('', 'clock', 'class="pictofixedwidth"');
|
||||||
$form->selectAvailabilityDelay($availability_id, 'availability_id', '', 1, 'maxwidth200 widthcentpercentminusx');
|
$form->selectAvailabilityDelay((GETPOSTISSET('availability_id')?GETPOST('availability_id'):$availability_id), 'availability_id', '', 1, 'maxwidth200 widthcentpercentminusx');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Terms of payment
|
// Terms of payment
|
||||||
print '<tr><td class="nowrap">'.$langs->trans('PaymentConditionsShort').'</td><td>';
|
print '<tr><td class="nowrap">'.$langs->trans('PaymentConditionsShort').'</td><td>';
|
||||||
print img_picto('', 'payment', 'class="pictofixedwidth"');
|
print img_picto('', 'payment', 'class="pictofixedwidth"');
|
||||||
print $form->getSelectConditionsPaiements($cond_reglement_id, 'cond_reglement_id', 1, 1, 0, 'maxwidth200 widthcentpercentminusx', $deposit_percent);
|
print $form->getSelectConditionsPaiements((GETPOSTISSET('cond_reglement_id')?GETPOST('cond_reglement_id'):$cond_reglement_id), 'cond_reglement_id', 1, 1, 0, 'maxwidth200 widthcentpercentminusx', $deposit_percent);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Payment mode
|
// Payment mode
|
||||||
print '<tr><td>'.$langs->trans('PaymentMode').'</td><td>';
|
print '<tr><td>'.$langs->trans('PaymentMode').'</td><td>';
|
||||||
print img_picto('', 'bank', 'class="pictofixedwidth"');
|
print img_picto('', 'bank', 'class="pictofixedwidth"');
|
||||||
print $form->select_types_paiements($mode_reglement_id, 'mode_reglement_id', 'CRDT', 0, 1, 0, 0, 1, 'maxwidth200 widthcentpercentminusx', 1);
|
print $form->select_types_paiements((GETPOSTISSET('mode_reglement_id')?GETPOST('mode_reglement_id'):$mode_reglement_id), 'mode_reglement_id', 'CRDT', 0, 1, 0, 0, 1, 'maxwidth200 widthcentpercentminusx', 1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Bank Account
|
// Bank Account
|
||||||
if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_ORDER) && isModEnabled("banque")) {
|
if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_ORDER) && isModEnabled("banque")) {
|
||||||
print '<tr><td>'.$langs->trans('BankAccount').'</td><td>';
|
print '<tr><td>'.$langs->trans('BankAccount').'</td><td>';
|
||||||
print img_picto('', 'bank_account', 'class="pictofixedwidth"').$form->select_comptes($fk_account, 'fk_account', 0, '', 1, '', 0, 'maxwidth200 widthcentpercentminusx', 1);
|
print img_picto('', 'bank_account', 'class="pictofixedwidth"').$form->select_comptes((GETPOSTISSET('fk_account')?GETPOST('fk_account'):$fk_account), 'fk_account', 0, '', 1, '', 0, 'maxwidth200 widthcentpercentminusx', 1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1863,7 +1868,7 @@ if ($action == 'create' && $usercancreate) {
|
|||||||
if (isModEnabled('expedition')) {
|
if (isModEnabled('expedition')) {
|
||||||
print '<tr><td>'.$langs->trans('SendingMethod').'</td><td>';
|
print '<tr><td>'.$langs->trans('SendingMethod').'</td><td>';
|
||||||
print img_picto('', 'object_dolly', 'class="pictofixedwidth"');
|
print img_picto('', 'object_dolly', 'class="pictofixedwidth"');
|
||||||
$form->selectShippingMethod($shipping_method_id, 'shipping_method_id', '', 1, '', 0, 'maxwidth200 widthcentpercentminusx');
|
$form->selectShippingMethod((GETPOSTISSET('shipping_method_id')?GETPOST('shipping_method_id'):$shipping_method_id), 'shipping_method_id', '', 1, '', 0, 'maxwidth200 widthcentpercentminusx');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1872,14 +1877,14 @@ if ($action == 'create' && $usercancreate) {
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
|
||||||
$formproduct = new FormProduct($db);
|
$formproduct = new FormProduct($db);
|
||||||
print '<tr><td>'.$langs->trans('Warehouse').'</td><td>';
|
print '<tr><td>'.$langs->trans('Warehouse').'</td><td>';
|
||||||
print img_picto('', 'stock', 'class="pictofixedwidth"').$formproduct->selectWarehouses($warehouse_id, 'warehouse_id', '', 1, 0, 0, '', 0, 0, array(), 'maxwidth500 widthcentpercentminusxx');
|
print img_picto('', 'stock', 'class="pictofixedwidth"').$formproduct->selectWarehouses((GETPOSTISSET('warehouse_id')?GETPOST('warehouse_id'):$warehouse_id), 'warehouse_id', '', 1, 0, 0, '', 0, 0, array(), 'maxwidth500 widthcentpercentminusxx');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Source / Channel - What trigger creation
|
// Source / Channel - What trigger creation
|
||||||
print '<tr><td>'.$langs->trans('Channel').'</td><td>';
|
print '<tr><td>'.$langs->trans('Channel').'</td><td>';
|
||||||
print img_picto('', 'question', 'class="pictofixedwidth"');
|
print img_picto('', 'question', 'class="pictofixedwidth"');
|
||||||
$form->selectInputReason($demand_reason_id, 'demand_reason_id', '', 1, 'maxwidth200 widthcentpercentminusx');
|
$form->selectInputReason((GETPOSTISSET('demand_reason_id')?GETPOST('demand_reason_id'):$demand_reason_id), 'demand_reason_id', '', 1, 'maxwidth200 widthcentpercentminusx');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// TODO How record was recorded OrderMode (llx_c_input_method)
|
// TODO How record was recorded OrderMode (llx_c_input_method)
|
||||||
@ -1889,7 +1894,7 @@ if ($action == 'create' && $usercancreate) {
|
|||||||
$langs->load("projects");
|
$langs->load("projects");
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>'.$langs->trans("Project").'</td><td>';
|
print '<td>'.$langs->trans("Project").'</td><td>';
|
||||||
print img_picto('', 'project', 'class="pictofixedwidth"').$formproject->select_projects(($soc->id > 0 ? $soc->id : -1), $projectid, 'projectid', 0, 0, 1, 0, 0, 0, 0, '', 1, 0, 'maxwidth500 widthcentpercentminusxx');
|
print img_picto('', 'project', 'class="pictofixedwidth"').$formproject->select_projects(($soc->id > 0 ? $soc->id : -1), (GETPOSTISSET('projectid')?GETPOST('projectid'):$projectid), 'projectid', 0, 0, 1, 0, 0, 0, 0, '', 1, 0, 'maxwidth500 widthcentpercentminusxx');
|
||||||
print ' <a href="'.DOL_URL_ROOT.'/projet/card.php?socid='.$soc->id.'&action=create&status=1&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create&socid='.$soc->id).'"><span class="fa fa-plus-circle valignmiddle" title="'.$langs->trans("AddProject").'"></span></a>';
|
print ' <a href="'.DOL_URL_ROOT.'/projet/card.php?socid='.$soc->id.'&action=create&status=1&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create&socid='.$soc->id).'"><span class="fa fa-plus-circle valignmiddle" title="'.$langs->trans("AddProject").'"></span></a>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
@ -1948,7 +1953,7 @@ if ($action == 'create' && $usercancreate) {
|
|||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>'.$form->editfieldkey("Currency", 'multicurrency_code', '', $object, 0).'</td>';
|
print '<td>'.$form->editfieldkey("Currency", 'multicurrency_code', '', $object, 0).'</td>';
|
||||||
print '<td class="maxwidthonsmartphone">';
|
print '<td class="maxwidthonsmartphone">';
|
||||||
print img_picto('', 'currency', 'class="pictofixedwidth"').$form->selectMultiCurrency($currency_code, 'multicurrency_code', 0, '', false, 'maxwidth200 widthcentpercentminusx');
|
print img_picto('', 'currency', 'class="pictofixedwidth"').$form->selectMultiCurrency((GETPOSTISSET('multicurrency_code')?GETPOST('multicurrency_code'):$currency_code), 'multicurrency_code', 0, '', false, 'maxwidth200 widthcentpercentminusx');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1053,6 +1053,7 @@ class Orders extends DolibarrApi
|
|||||||
}
|
}
|
||||||
$shipment = new Expedition($this->db);
|
$shipment = new Expedition($this->db);
|
||||||
$shipment->socid = $this->commande->socid;
|
$shipment->socid = $this->commande->socid;
|
||||||
|
$shipment->origin_id = $this->commande->id;
|
||||||
$result = $shipment->create(DolibarrApiAccess::$user);
|
$result = $shipment->create(DolibarrApiAccess::$user);
|
||||||
if ($result <= 0) {
|
if ($result <= 0) {
|
||||||
throw new RestException(500, 'Error on creating expedition :'.$this->db->lasterror());
|
throw new RestException(500, 'Error on creating expedition :'.$this->db->lasterror());
|
||||||
|
|||||||
@ -328,8 +328,8 @@ class Commande extends CommonOrder
|
|||||||
'localtax2' =>array('type'=>'double(24,8)', 'label'=>'LocalTax2', 'enabled'=>1, 'visible'=>-1, 'position'=>135, 'isameasure'=>1),
|
'localtax2' =>array('type'=>'double(24,8)', 'label'=>'LocalTax2', 'enabled'=>1, 'visible'=>-1, 'position'=>135, 'isameasure'=>1),
|
||||||
'total_ht' =>array('type'=>'double(24,8)', 'label'=>'TotalHT', 'enabled'=>1, 'visible'=>-1, 'position'=>140, 'isameasure'=>1),
|
'total_ht' =>array('type'=>'double(24,8)', 'label'=>'TotalHT', 'enabled'=>1, 'visible'=>-1, 'position'=>140, 'isameasure'=>1),
|
||||||
'total_ttc' =>array('type'=>'double(24,8)', 'label'=>'TotalTTC', 'enabled'=>1, 'visible'=>-1, 'position'=>145, 'isameasure'=>1),
|
'total_ttc' =>array('type'=>'double(24,8)', 'label'=>'TotalTTC', 'enabled'=>1, 'visible'=>-1, 'position'=>145, 'isameasure'=>1),
|
||||||
'note_private' =>array('type'=>'text', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>150),
|
'note_private' =>array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>150),
|
||||||
'note_public' =>array('type'=>'text', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>155),
|
'note_public' =>array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>155),
|
||||||
'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'PDFTemplate', 'enabled'=>1, 'visible'=>0, 'position'=>160),
|
'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'PDFTemplate', 'enabled'=>1, 'visible'=>0, 'position'=>160),
|
||||||
//'facture' =>array('type'=>'tinyint(4)', 'label'=>'ParentInvoice', 'enabled'=>1, 'visible'=>-1, 'position'=>165),
|
//'facture' =>array('type'=>'tinyint(4)', 'label'=>'ParentInvoice', 'enabled'=>1, 'visible'=>-1, 'position'=>165),
|
||||||
'fk_account' =>array('type'=>'integer', 'label'=>'BankAccount', 'enabled'=>'$conf->banque->enabled', 'visible'=>-1, 'position'=>170),
|
'fk_account' =>array('type'=>'integer', 'label'=>'BankAccount', 'enabled'=>'$conf->banque->enabled', 'visible'=>-1, 'position'=>170),
|
||||||
|
|||||||
@ -72,6 +72,10 @@ if (is_array($remains)) {
|
|||||||
unset($remains[$key]);
|
unset($remains[$key]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} elseif ($remains) {
|
||||||
|
$remains = array(price2num($remains));
|
||||||
|
} else {
|
||||||
|
$remains = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Treatment
|
// Treatment
|
||||||
|
|||||||
@ -51,7 +51,7 @@ if (isModEnabled('accounting')) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("banks", "bills", "categories", "companies", "compta"));
|
$langs->loadLangs(array("banks", "bills", "categories", "companies", "compta", "withdrawals"));
|
||||||
|
|
||||||
$action = GETPOST('action', 'aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
$cancel = GETPOST('cancel', 'alpha');
|
$cancel = GETPOST('cancel', 'alpha');
|
||||||
@ -140,6 +140,9 @@ if (empty($reshook)) {
|
|||||||
|
|
||||||
$object->proprio = trim(GETPOST("proprio", 'alphanohtml'));
|
$object->proprio = trim(GETPOST("proprio", 'alphanohtml'));
|
||||||
$object->owner_address = trim(GETPOST("owner_address", 'alphanohtml'));
|
$object->owner_address = trim(GETPOST("owner_address", 'alphanohtml'));
|
||||||
|
$object->owner_zip = trim(GETPOST("owner_zip", 'alphanohtml'));
|
||||||
|
$object->owner_town = trim(GETPOST("owner_town", 'alphanohtml'));
|
||||||
|
$object->owner_country_id = GETPOST("owner_country_id", 'int');
|
||||||
|
|
||||||
$object->ics = trim(GETPOST("ics", 'alpha'));
|
$object->ics = trim(GETPOST("ics", 'alpha'));
|
||||||
$object->ics_transfer = trim(GETPOST("ics_transfer", 'alpha'));
|
$object->ics_transfer = trim(GETPOST("ics_transfer", 'alpha'));
|
||||||
@ -241,6 +244,9 @@ if (empty($reshook)) {
|
|||||||
|
|
||||||
$object->proprio = trim(GETPOST("proprio", 'alphanohtml'));
|
$object->proprio = trim(GETPOST("proprio", 'alphanohtml'));
|
||||||
$object->owner_address = trim(GETPOST("owner_address", 'alphanohtml'));
|
$object->owner_address = trim(GETPOST("owner_address", 'alphanohtml'));
|
||||||
|
$object->owner_zip = trim(GETPOST("owner_zip", 'alphanohtml'));
|
||||||
|
$object->owner_town = trim(GETPOST("owner_town", 'alphanohtml'));
|
||||||
|
$object->owner_country_id = GETPOST("owner_country_id", 'int');
|
||||||
|
|
||||||
$object->ics = trim(GETPOST("ics", 'alpha'));
|
$object->ics = trim(GETPOST("ics", 'alpha'));
|
||||||
$object->ics_transfer = trim(GETPOST("ics_transfer", 'alpha'));
|
$object->ics_transfer = trim(GETPOST("ics_transfer", 'alpha'));
|
||||||
@ -422,7 +428,8 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
print '<tr><td class="fieldrequired">'.$langs->trans("BankAccountCountry").'</td>';
|
print '<tr><td class="fieldrequired">'.$langs->trans("BankAccountCountry").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print img_picto('', 'country', 'class="pictofixedwidth"').$form->select_country($selectedcode, 'account_country_id');
|
print img_picto('', 'country', 'class="pictofixedwidth"');
|
||||||
|
print $form->select_country($selectedcode, 'account_country_id');
|
||||||
if ($user->admin) {
|
if ($user->admin) {
|
||||||
print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
|
print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
|
||||||
}
|
}
|
||||||
@ -438,6 +445,14 @@ if ($action == 'create') {
|
|||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
|
$type = (GETPOSTISSET("type") ? GETPOST('type', 'int') : Account::TYPE_CURRENT); // add default value
|
||||||
|
if ($type == Account::TYPE_SAVINGS || $type == Account::TYPE_CURRENT) {
|
||||||
|
print '<tr><td>'.$langs->trans("BankAccountDomiciliation").'</td><td>';
|
||||||
|
print '<textarea class="flat quatrevingtpercent" name="domiciliation" rows="'.ROWS_2.'">';
|
||||||
|
print (GETPOSTISSET('domiciliation') ?GETPOST('domiciliation') : $object->domiciliation);
|
||||||
|
print "</textarea></td></tr>";
|
||||||
|
}
|
||||||
|
|
||||||
// Web
|
// Web
|
||||||
print '<tr><td>'.$langs->trans("Web").'</td>';
|
print '<tr><td>'.$langs->trans("Web").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
@ -552,18 +567,15 @@ if ($action == 'create') {
|
|||||||
print '<td><input maxlength="11" type="text" class="flat minwidth150" name="bic" value="'.(GETPOSTISSET('bic') ?GETPOST('bic', 'alpha') : $object->bic).'"></td></tr>';
|
print '<td><input maxlength="11" type="text" class="flat minwidth150" name="bic" value="'.(GETPOSTISSET('bic') ?GETPOST('bic', 'alpha') : $object->bic).'"></td></tr>';
|
||||||
|
|
||||||
if (isModEnabled('paymentbybanktransfer')) {
|
if (isModEnabled('paymentbybanktransfer')) {
|
||||||
print '<tr><td>'.$langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation").'</td>';
|
print '<tr><td>'.$form->textwithpicto($langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation"), $langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp")).'</td>';
|
||||||
print '<td><input type="checkbox" class="flat minwidth150" name="pti_in_ctti"'. (empty(GETPOST('pti_in_ctti')) ? '' : ' checked ') . '> ';
|
print '<td><input type="checkbox" class="flat" name="pti_in_ctti"'. (empty(GETPOST('pti_in_ctti')) ? '' : ' checked ') . '>';
|
||||||
print img_picto($langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp"), 'info');
|
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
print '</table>';
|
||||||
|
print '<hr>';
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans("BankAccountDomiciliation").'</td><td>';
|
print '<table class="border centpercent">';
|
||||||
print '<textarea class="flat quatrevingtpercent" name="domiciliation" rows="'.ROWS_2.'">';
|
print '<tr><td class="titlefieldcreate">'.$langs->trans("BankAccountOwner").'</td>';
|
||||||
print (GETPOSTISSET('domiciliation') ?GETPOST('domiciliation') : $object->domiciliation);
|
|
||||||
print "</textarea></td></tr>";
|
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans("BankAccountOwner").'</td>';
|
|
||||||
print '<td><input type="text" class="flat minwidth300" name="proprio" value="'.(GETPOST('proprio') ?GETPOST('proprio', 'alpha') : $object->proprio).'">';
|
print '<td><input type="text" class="flat minwidth300" name="proprio" value="'.(GETPOST('proprio') ?GETPOST('proprio', 'alpha') : $object->proprio).'">';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
@ -572,8 +584,22 @@ if ($action == 'create') {
|
|||||||
print (GETPOST('owner_address') ?GETPOST('owner_address', 'alpha') : $object->owner_address);
|
print (GETPOST('owner_address') ?GETPOST('owner_address', 'alpha') : $object->owner_address);
|
||||||
print "</textarea></td></tr>";
|
print "</textarea></td></tr>";
|
||||||
|
|
||||||
|
print '<tr><td class="tdtop">'.$langs->trans("BankAccountOwnerZip").'</td>';
|
||||||
|
print '<td><input type="text" class="flat maxwidth100" name="owner_zip" value="'.(GETPOST('owner_zip') ?GETPOST('owner_zip', 'alpha') : $object->owner_zip).'">';
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr><td class="tdtop">'.$langs->trans("BankAccountOwnerTown").'</td>';
|
||||||
|
print '<td><input type="text" class="flat maxwidth200" name="owner_town" value="'.(GETPOST('owner_town') ?GETPOST('owner_town', 'alpha') : $object->owner_town).'">';
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr><td class="tdtop">'.$langs->trans("BankAccountOwnerCountry").'</td>';
|
||||||
|
print '<td>';
|
||||||
|
print img_picto('', 'country', 'class="pictofixedwidth"');
|
||||||
|
print $form->select_country(GETPOST('owner_country_id') ?GETPOST('owner_country_id', 'alpha') : $object->owner_country_id, 'owner_country_id');
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
print '<br>';
|
print '<hr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<table class="border centpercent">';
|
print '<table class="border centpercent">';
|
||||||
@ -722,8 +748,6 @@ if ($action == 'create') {
|
|||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
if ($object->type == Account::TYPE_SAVINGS || $object->type == Account::TYPE_CURRENT) {
|
if ($object->type == Account::TYPE_SAVINGS || $object->type == Account::TYPE_CURRENT) {
|
||||||
//print '<div class="underbanner clearboth"></div>';
|
|
||||||
|
|
||||||
print '<table class="border tableforfield centpercent">';
|
print '<table class="border tableforfield centpercent">';
|
||||||
|
|
||||||
print '<tr class="liste_titre"><td class="titlefield">'.$langs->trans("BankName").'</td>';
|
print '<tr class="liste_titre"><td class="titlefield">'.$langs->trans("BankName").'</td>';
|
||||||
@ -787,16 +811,11 @@ if ($action == 'create') {
|
|||||||
print '<td>'.$object->ics_transfer.'</td>';
|
print '<td>'.$object->ics_transfer.'</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation").'</td><td>';
|
print '<tr><td>'.$form->textwithpicto($langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation"), $langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp")).'</td><td>';
|
||||||
print (empty($object->pti_in_ctti) ? $langs->trans("No") : $langs->trans("Yes")) . ' ';
|
print (empty($object->pti_in_ctti) ? $langs->trans("No") : $langs->trans("Yes"));
|
||||||
print img_picto($langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp"), 'info');
|
|
||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans("BankAccountDomiciliation").'</td><td>';
|
|
||||||
print nl2br($object->domiciliation);
|
|
||||||
print "</td></tr>\n";
|
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans("BankAccountOwner").'</td><td>';
|
print '<tr><td>'.$langs->trans("BankAccountOwner").'</td><td>';
|
||||||
print $object->proprio;
|
print $object->proprio;
|
||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
@ -805,6 +824,22 @@ if ($action == 'create') {
|
|||||||
print nl2br($object->owner_address);
|
print nl2br($object->owner_address);
|
||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|
||||||
|
print '<tr><td class="tdtop">'.$langs->trans("BankAccountOwnerZip").'</td>';
|
||||||
|
print '<td>'.$object->owner_zip;
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr><td class="tdtop">'.$langs->trans("BankAccountOwnerTown").'</td>';
|
||||||
|
print '<td>'.$object->owner_town;
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr><td class="tdtop">'.$langs->trans("BankAccountOwnerCountry").'</td>';
|
||||||
|
print '<td>';
|
||||||
|
$object->owner_country_code = dol_getIdFromCode($db, $object->owner_country_id, 'c_country', 'rowid', 'code');
|
||||||
|
$langs->load("dict");
|
||||||
|
print (empty($object->owner_country_code) ? '' : $langs->convToOutputCharset($langs->transnoentitiesnoconv("Country".$object->owner_country_code)));
|
||||||
|
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -933,6 +968,14 @@ if ($action == 'create') {
|
|||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
|
$type = (GETPOSTISSET('type') ? GETPOST('type', 'int') : $object->type); // add default current value
|
||||||
|
if ($type == Account::TYPE_SAVINGS || $type == Account::TYPE_CURRENT) {
|
||||||
|
print '<tr><td>'.$langs->trans("BankAccountDomiciliation").'</td><td>';
|
||||||
|
print '<textarea class="flat quatrevingtpercent" name="domiciliation" rows="'.ROWS_2.'">';
|
||||||
|
print $object->domiciliation;
|
||||||
|
print "</textarea></td></tr>";
|
||||||
|
}
|
||||||
|
|
||||||
// Conciliable
|
// Conciliable
|
||||||
print '<tr><td>'.$langs->trans("Conciliable").'</td>';
|
print '<tr><td>'.$langs->trans("Conciliable").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
@ -942,7 +985,7 @@ if ($action == 'create') {
|
|||||||
} elseif ($conciliate == -3) {
|
} elseif ($conciliate == -3) {
|
||||||
print $langs->trans("No").' ('.$langs->trans("Closed").')';
|
print $langs->trans("No").' ('.$langs->trans("Closed").')';
|
||||||
} else {
|
} else {
|
||||||
print '<input type="checkbox" class="flat" id="norappro" name="norappro"'.(($conciliate > 0) ? '' : ' checked="checked"').'"> <label for="norappro">'.$langs->trans("DisableConciliation").'</label>';
|
print '<input type="checkbox" class="flat" id="norappro" name="norappro"'.(($conciliate > 0) ? '' : ' checked="checked"').'"> <label for="norappro" class="opacitymedium">'.$langs->trans("DisableConciliation").'</label>';
|
||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
@ -993,7 +1036,7 @@ if ($action == 'create') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
print '<br>';
|
print '<hr>';
|
||||||
|
|
||||||
|
|
||||||
//print '<div class="underbanner clearboth"></div>';
|
//print '<div class="underbanner clearboth"></div>';
|
||||||
@ -1030,8 +1073,6 @@ if ($action == 'create') {
|
|||||||
if ($type == Account::TYPE_SAVINGS || $type == Account::TYPE_CURRENT) {
|
if ($type == Account::TYPE_SAVINGS || $type == Account::TYPE_CURRENT) {
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
//print '<div class="underbanner clearboth"></div>';
|
|
||||||
|
|
||||||
print '<table class="border centpercent">';
|
print '<table class="border centpercent">';
|
||||||
|
|
||||||
// If bank account
|
// If bank account
|
||||||
@ -1087,26 +1128,39 @@ if ($action == 'create') {
|
|||||||
print '<tr><td>'.$form->textwithpicto($langs->trans("IDS"), $langs->trans("IDS").' ('.$langs->trans("UsedFor", $langs->transnoentitiesnoconv("BankTransfer")).')').'</td>';
|
print '<tr><td>'.$form->textwithpicto($langs->trans("IDS"), $langs->trans("IDS").' ('.$langs->trans("UsedFor", $langs->transnoentitiesnoconv("BankTransfer")).')').'</td>';
|
||||||
print '<td><input class="minwidth150 maxwidth200onsmartphone" maxlength="32" type="text" class="flat" name="ics_transfer" value="'.(GETPOSTISSET('ics_transfer') ? GETPOST('ics_transfer', 'alphanohtml') : $object->ics_transfer).'"></td></tr>';
|
print '<td><input class="minwidth150 maxwidth200onsmartphone" maxlength="32" type="text" class="flat" name="ics_transfer" value="'.(GETPOSTISSET('ics_transfer') ? GETPOST('ics_transfer', 'alphanohtml') : $object->ics_transfer).'"></td></tr>';
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation").'</td>';
|
print '<tr><td>'.$form->textwithpicto($langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation"), $langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp")).'</td>';
|
||||||
print '<td><input type="checkbox" class="flat minwidth150" name="pti_in_ctti"'. ($object->pti_in_ctti ? ' checked ' : '') . '> ';
|
print '<td><input type="checkbox" class="flat" name="pti_in_ctti"'. ($object->pti_in_ctti ? ' checked ' : '') . '>';
|
||||||
print img_picto($langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp"), 'info');
|
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans("BankAccountDomiciliation").'</td><td>';
|
|
||||||
print '<textarea class="flat quatrevingtpercent" name="domiciliation" rows="'.ROWS_2.'">';
|
|
||||||
print $object->domiciliation;
|
|
||||||
print "</textarea></td></tr>";
|
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans("BankAccountOwner").'</td>';
|
print '<tr><td>'.$langs->trans("BankAccountOwner").'</td>';
|
||||||
print '<td><input class="maxwidth200onsmartphone" type="text" class="flat" name="proprio" value="'.$object->proprio.'"></td>';
|
print '<td><input class="maxwidth200onsmartphone" type="text" class="flat" name="proprio" value="'.$object->proprio.'"></td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans("BankAccountOwnerAddress").'</td><td>';
|
print '</table>';
|
||||||
|
print '<hr>';
|
||||||
|
|
||||||
|
print '<table class="border centpercent">';
|
||||||
|
|
||||||
|
print '<tr><td class="titlefieldcreate">'.$langs->trans("BankAccountOwnerAddress").'</td><td>';
|
||||||
print '<textarea class="flat quatrevingtpercent" name="owner_address" rows="'.ROWS_2.'">';
|
print '<textarea class="flat quatrevingtpercent" name="owner_address" rows="'.ROWS_2.'">';
|
||||||
print $object->owner_address;
|
print $object->owner_address;
|
||||||
print "</textarea></td></tr>";
|
print "</textarea></td></tr>";
|
||||||
|
|
||||||
|
print '<tr><td class="tdtop">'.$langs->trans("BankAccountOwnerZip").'</td>';
|
||||||
|
print '<td><input type="text" class="flat maxwidth100" name="owner_zip" value="'.(GETPOST('owner_zip') ?GETPOST('owner_zip', 'alpha') : $object->owner_zip).'">';
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr><td class="tdtop">'.$langs->trans("BankAccountOwnerTown").'</td>';
|
||||||
|
print '<td><input type="text" class="flat maxwidth200" name="owner_town" value="'.(GETPOST('owner_town') ?GETPOST('owner_town', 'alpha') : $object->owner_town).'">';
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr><td class="tdtop">'.$langs->trans("BankAccountOwnerCountry").'</td>';
|
||||||
|
print '<td>';
|
||||||
|
print img_picto('', 'country', 'class="pictofixedwidth"');
|
||||||
|
print $form->select_country(GETPOST('owner_country_id') ?GETPOST('owner_country_id', 'alpha') : $object->owner_country_id, 'owner_country_id');
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -146,12 +146,6 @@ class Account extends CommonObject
|
|||||||
*/
|
*/
|
||||||
public $iban_prefix;
|
public $iban_prefix;
|
||||||
|
|
||||||
/**
|
|
||||||
* Address of the bank
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $domiciliation;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* XML SEPA format: place Payment Type Information (PmtTpInf) in Credit Transfer Transaction Information (CdtTrfTxInf)
|
* XML SEPA format: place Payment Type Information (PmtTpInf) in Credit Transfer Transaction Information (CdtTrfTxInf)
|
||||||
* @var int
|
* @var int
|
||||||
@ -169,7 +163,17 @@ class Account extends CommonObject
|
|||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public $owner_address;
|
public $owner_address;
|
||||||
|
public $owner_zip;
|
||||||
|
public $owner_town;
|
||||||
|
public $owner_country_id;
|
||||||
|
public $owner_country_code;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address of the bank account
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $domiciliation; // deprecated, use now address
|
||||||
|
public $address;
|
||||||
public $state_id;
|
public $state_id;
|
||||||
public $state_code;
|
public $state_code;
|
||||||
public $state;
|
public $state;
|
||||||
@ -297,10 +301,13 @@ class Account extends CommonObject
|
|||||||
'country_iban' =>array('type'=>'varchar(2)', 'label'=>'Country iban', 'enabled'=>1, 'visible'=>-1, 'position'=>75),
|
'country_iban' =>array('type'=>'varchar(2)', 'label'=>'Country iban', 'enabled'=>1, 'visible'=>-1, 'position'=>75),
|
||||||
'cle_iban' =>array('type'=>'varchar(2)', 'label'=>'Cle iban', 'enabled'=>1, 'visible'=>-1, 'position'=>80),
|
'cle_iban' =>array('type'=>'varchar(2)', 'label'=>'Cle iban', 'enabled'=>1, 'visible'=>-1, 'position'=>80),
|
||||||
'domiciliation' =>array('type'=>'varchar(255)', 'label'=>'Domiciliation', 'enabled'=>1, 'visible'=>-1, 'position'=>85),
|
'domiciliation' =>array('type'=>'varchar(255)', 'label'=>'Domiciliation', 'enabled'=>1, 'visible'=>-1, 'position'=>85),
|
||||||
'state_id' =>array('type'=>'integer', 'label'=>'State id', 'enabled'=>1, 'visible'=>-1, 'position'=>90),
|
'state_id' =>array('type'=>'integer', 'label'=>'StateId', 'enabled'=>1, 'visible'=>-1, 'position'=>90),
|
||||||
'fk_pays' =>array('type'=>'integer', 'label'=>'Fk pays', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>95),
|
'fk_pays' =>array('type'=>'integer', 'label'=>'Country', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>95),
|
||||||
'proprio' =>array('type'=>'varchar(60)', 'label'=>'Proprio', 'enabled'=>1, 'visible'=>-1, 'position'=>100),
|
'proprio' =>array('type'=>'varchar(60)', 'label'=>'Proprio', 'enabled'=>1, 'visible'=>-1, 'position'=>100),
|
||||||
'owner_address' =>array('type'=>'text', 'label'=>'Owner address', 'enabled'=>1, 'visible'=>-1, 'position'=>105),
|
'owner_address' =>array('type'=>'varchar(255)', 'label'=>'Owner address', 'enabled'=>1, 'visible'=>-1, 'position'=>105),
|
||||||
|
'owner_zip' =>array('type'=>'varchar(25)', 'label'=>'Owner zip', 'enabled'=>1, 'visible'=>-1, 'position'=>106),
|
||||||
|
'owner_town' =>array('type'=>'varchar(50)', 'label'=>'Owner town', 'enabled'=>1, 'visible'=>-1, 'position'=>107),
|
||||||
|
'owner_country_id' =>array('type'=>'integer', 'label'=>'Owner country', 'enabled'=>1, 'visible'=>-1, 'position'=>108),
|
||||||
'courant' =>array('type'=>'smallint(6)', 'label'=>'Courant', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>110),
|
'courant' =>array('type'=>'smallint(6)', 'label'=>'Courant', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>110),
|
||||||
'clos' =>array('type'=>'smallint(6)', 'label'=>'Clos', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>115),
|
'clos' =>array('type'=>'smallint(6)', 'label'=>'Clos', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>115),
|
||||||
'rappro' =>array('type'=>'smallint(6)', 'label'=>'Rappro', 'enabled'=>1, 'visible'=>-1, 'position'=>120),
|
'rappro' =>array('type'=>'smallint(6)', 'label'=>'Rappro', 'enabled'=>1, 'visible'=>-1, 'position'=>120),
|
||||||
@ -316,7 +323,7 @@ class Account extends CommonObject
|
|||||||
'tms' =>array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>157),
|
'tms' =>array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>157),
|
||||||
'fk_user_author' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'Fk user author', 'enabled'=>1, 'visible'=>-1, 'position'=>160),
|
'fk_user_author' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'Fk user author', 'enabled'=>1, 'visible'=>-1, 'position'=>160),
|
||||||
'fk_user_modif' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserModif', 'enabled'=>1, 'visible'=>-2, 'notnull'=>-1, 'position'=>165),
|
'fk_user_modif' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserModif', 'enabled'=>1, 'visible'=>-2, 'notnull'=>-1, 'position'=>165),
|
||||||
'note_public' =>array('type'=>'text', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>170),
|
'note_public' =>array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>170),
|
||||||
'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>1, 'visible'=>0, 'position'=>175),
|
'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>1, 'visible'=>0, 'position'=>175),
|
||||||
'import_key' =>array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>1, 'visible'=>-2, 'position'=>180),
|
'import_key' =>array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>1, 'visible'=>-2, 'position'=>180),
|
||||||
'extraparams' =>array('type'=>'varchar(255)', 'label'=>'Extraparams', 'enabled'=>1, 'visible'=>-1, 'position'=>185),
|
'extraparams' =>array('type'=>'varchar(255)', 'label'=>'Extraparams', 'enabled'=>1, 'visible'=>-1, 'position'=>185),
|
||||||
@ -698,6 +705,9 @@ class Account extends CommonObject
|
|||||||
$sql .= ", pti_in_ctti";
|
$sql .= ", pti_in_ctti";
|
||||||
$sql .= ", proprio";
|
$sql .= ", proprio";
|
||||||
$sql .= ", owner_address";
|
$sql .= ", owner_address";
|
||||||
|
$sql .= ", owner_zip";
|
||||||
|
$sql .= ", owner_town";
|
||||||
|
$sql .= ", owner_country_id";
|
||||||
$sql .= ", currency_code";
|
$sql .= ", currency_code";
|
||||||
$sql .= ", rappro";
|
$sql .= ", rappro";
|
||||||
$sql .= ", min_allowed";
|
$sql .= ", min_allowed";
|
||||||
@ -713,7 +723,7 @@ class Account extends CommonObject
|
|||||||
$sql .= ", '".$this->db->escape($this->label)."'";
|
$sql .= ", '".$this->db->escape($this->label)."'";
|
||||||
$sql .= ", ".((int) $conf->entity);
|
$sql .= ", ".((int) $conf->entity);
|
||||||
$sql .= ", '".$this->db->escape($this->account_number)."'";
|
$sql .= ", '".$this->db->escape($this->account_number)."'";
|
||||||
$sql .= ", ".($this->fk_accountancy_journal > 0 ? $this->db->escape($this->fk_accountancy_journal) : "null");
|
$sql .= ", ".($this->fk_accountancy_journal > 0 ? ((int) $this->fk_accountancy_journal) : "null");
|
||||||
$sql .= ", '".$this->db->escape($this->bank)."'";
|
$sql .= ", '".$this->db->escape($this->bank)."'";
|
||||||
$sql .= ", '".$this->db->escape($this->code_banque)."'";
|
$sql .= ", '".$this->db->escape($this->code_banque)."'";
|
||||||
$sql .= ", '".$this->db->escape($this->code_guichet)."'";
|
$sql .= ", '".$this->db->escape($this->code_guichet)."'";
|
||||||
@ -725,6 +735,9 @@ class Account extends CommonObject
|
|||||||
$sql .= ", ".((int) $this->pti_in_ctti);
|
$sql .= ", ".((int) $this->pti_in_ctti);
|
||||||
$sql .= ", '".$this->db->escape($this->proprio)."'";
|
$sql .= ", '".$this->db->escape($this->proprio)."'";
|
||||||
$sql .= ", '".$this->db->escape($this->owner_address)."'";
|
$sql .= ", '".$this->db->escape($this->owner_address)."'";
|
||||||
|
$sql .= ", '".$this->db->escape($this->owner_zip)."'";
|
||||||
|
$sql .= ", '".$this->db->escape($this->owner_town)."'";
|
||||||
|
$sql .= ", ".($this->owner_country_id > 0 ? ((int) $this->owner_country_id) : "null");
|
||||||
$sql .= ", '".$this->db->escape($this->currency_code)."'";
|
$sql .= ", '".$this->db->escape($this->currency_code)."'";
|
||||||
$sql .= ", ".((int) $this->rappro);
|
$sql .= ", ".((int) $this->rappro);
|
||||||
$sql .= ", ".price2num($this->min_allowed, 'MT');
|
$sql .= ", ".price2num($this->min_allowed, 'MT');
|
||||||
@ -836,7 +849,7 @@ class Account extends CommonObject
|
|||||||
$sql .= ",rappro = ".((int) $this->rappro);
|
$sql .= ",rappro = ".((int) $this->rappro);
|
||||||
$sql .= ",url = ".($this->url ? "'".$this->db->escape($this->url)."'" : "null");
|
$sql .= ",url = ".($this->url ? "'".$this->db->escape($this->url)."'" : "null");
|
||||||
$sql .= ",account_number = '".$this->db->escape($this->account_number)."'";
|
$sql .= ",account_number = '".$this->db->escape($this->account_number)."'";
|
||||||
$sql .= ",fk_accountancy_journal = ".($this->fk_accountancy_journal > 0 ? $this->db->escape($this->fk_accountancy_journal) : "null");
|
$sql .= ",fk_accountancy_journal = ".($this->fk_accountancy_journal > 0 ? ((int) $this->fk_accountancy_journal) : "null");
|
||||||
$sql .= ",bank = '".$this->db->escape($this->bank)."'";
|
$sql .= ",bank = '".$this->db->escape($this->bank)."'";
|
||||||
$sql .= ",code_banque='".$this->db->escape($this->code_banque)."'";
|
$sql .= ",code_banque='".$this->db->escape($this->code_banque)."'";
|
||||||
$sql .= ",code_guichet='".$this->db->escape($this->code_guichet)."'";
|
$sql .= ",code_guichet='".$this->db->escape($this->code_guichet)."'";
|
||||||
@ -848,6 +861,9 @@ class Account extends CommonObject
|
|||||||
$sql .= ",pti_in_ctti=".((int) $this->pti_in_ctti);
|
$sql .= ",pti_in_ctti=".((int) $this->pti_in_ctti);
|
||||||
$sql .= ",proprio = '".$this->db->escape($this->proprio)."'";
|
$sql .= ",proprio = '".$this->db->escape($this->proprio)."'";
|
||||||
$sql .= ",owner_address = '".$this->db->escape($this->owner_address)."'";
|
$sql .= ",owner_address = '".$this->db->escape($this->owner_address)."'";
|
||||||
|
$sql .= ",owner_zip = '".$this->db->escape($this->owner_zip)."'";
|
||||||
|
$sql .= ",owner_town = '".$this->db->escape($this->owner_town)."'";
|
||||||
|
$sql .= ",owner_country_id = ".($this->owner_country_id > 0 ? ((int) $this->owner_country_id) : "null");
|
||||||
|
|
||||||
$sql .= ",currency_code = '".$this->db->escape($this->currency_code)."'";
|
$sql .= ",currency_code = '".$this->db->escape($this->currency_code)."'";
|
||||||
|
|
||||||
@ -931,6 +947,9 @@ class Account extends CommonObject
|
|||||||
$sql .= ",domiciliation='".$this->db->escape($this->domiciliation)."'";
|
$sql .= ",domiciliation='".$this->db->escape($this->domiciliation)."'";
|
||||||
$sql .= ",proprio = '".$this->db->escape($this->proprio)."'";
|
$sql .= ",proprio = '".$this->db->escape($this->proprio)."'";
|
||||||
$sql .= ",owner_address = '".$this->db->escape($this->owner_address)."'";
|
$sql .= ",owner_address = '".$this->db->escape($this->owner_address)."'";
|
||||||
|
$sql .= ",owner_zip = '".$this->db->escape($this->owner_zip)."'";
|
||||||
|
$sql .= ",owner_town = '".$this->db->escape($this->owner_town)."'";
|
||||||
|
$sql .= ",owner_country_id = ".($this->owner_country_id > 0 ? ((int) $this->owner_country_id) : "null");
|
||||||
$sql .= ",state_id = ".($this->state_id > 0 ? $this->state_id : "null");
|
$sql .= ",state_id = ".($this->state_id > 0 ? $this->state_id : "null");
|
||||||
$sql .= ",fk_pays = ".($this->country_id > 0 ? $this->country_id : "null");
|
$sql .= ",fk_pays = ".($this->country_id > 0 ? $this->country_id : "null");
|
||||||
$sql .= " WHERE rowid = ".((int) $this->id);
|
$sql .= " WHERE rowid = ".((int) $this->id);
|
||||||
@ -967,13 +986,13 @@ class Account extends CommonObject
|
|||||||
|
|
||||||
$sql = "SELECT ba.rowid, ba.ref, ba.label, ba.bank, ba.number, ba.courant, ba.clos, ba.rappro, ba.url,";
|
$sql = "SELECT ba.rowid, ba.ref, ba.label, ba.bank, ba.number, ba.courant, ba.clos, ba.rappro, ba.url,";
|
||||||
$sql .= " ba.code_banque, ba.code_guichet, ba.cle_rib, ba.bic, ba.iban_prefix as iban,";
|
$sql .= " ba.code_banque, ba.code_guichet, ba.cle_rib, ba.bic, ba.iban_prefix as iban,";
|
||||||
$sql .= " ba.domiciliation, ba.pti_in_ctti, ba.proprio, ba.owner_address, ba.state_id, ba.fk_pays as country_id,";
|
$sql .= " ba.domiciliation as address, ba.pti_in_ctti, ba.proprio, ba.owner_address, ba.owner_zip, ba.owner_town, ba.owner_country_id, ba.state_id, ba.fk_pays as country_id,";
|
||||||
$sql .= " ba.account_number, ba.fk_accountancy_journal, ba.currency_code,";
|
$sql .= " ba.account_number, ba.fk_accountancy_journal, ba.currency_code,";
|
||||||
$sql .= " ba.min_allowed, ba.min_desired, ba.comment,";
|
$sql .= " ba.min_allowed, ba.min_desired, ba.comment,";
|
||||||
$sql .= " ba.datec as date_creation, ba.tms as date_update, ba.ics, ba.ics_transfer,";
|
$sql .= " ba.datec as date_creation, ba.tms as date_update, ba.ics, ba.ics_transfer,";
|
||||||
$sql .= ' c.code as country_code, c.label as country,';
|
$sql .= ' c.code as country_code, c.label as country,';
|
||||||
$sql .= ' d.code_departement as state_code, d.nom as state';
|
$sql .= ' d.code_departement as state_code, d.nom as state,';
|
||||||
$sql .= ' , aj.code as accountancy_journal';
|
$sql .= ' aj.code as accountancy_journal';
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."bank_account as ba";
|
$sql .= " FROM ".MAIN_DB_PREFIX."bank_account as ba";
|
||||||
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON ba.fk_pays = c.rowid';
|
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON ba.fk_pays = c.rowid';
|
||||||
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_departements as d ON ba.state_id = d.rowid';
|
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_departements as d ON ba.state_id = d.rowid';
|
||||||
@ -1009,10 +1028,14 @@ class Account extends CommonObject
|
|||||||
$this->cle_rib = $obj->cle_rib;
|
$this->cle_rib = $obj->cle_rib;
|
||||||
$this->bic = $obj->bic;
|
$this->bic = $obj->bic;
|
||||||
$this->iban = $obj->iban;
|
$this->iban = $obj->iban;
|
||||||
$this->domiciliation = $obj->domiciliation;
|
$this->domiciliation = $obj->address;
|
||||||
|
$this->address = $obj->address;
|
||||||
$this->pti_in_ctti = $obj->pti_in_ctti;
|
$this->pti_in_ctti = $obj->pti_in_ctti;
|
||||||
$this->proprio = $obj->proprio;
|
$this->proprio = $obj->proprio;
|
||||||
$this->owner_address = $obj->owner_address;
|
$this->owner_address = $obj->owner_address;
|
||||||
|
$this->owner_zip = $obj->owner_zip;
|
||||||
|
$this->owner_town = $obj->owner_town;
|
||||||
|
$this->owner_country_id = $obj->owner_country_id;
|
||||||
|
|
||||||
$this->state_id = $obj->state_id;
|
$this->state_id = $obj->state_id;
|
||||||
$this->state_code = $obj->state_code;
|
$this->state_code = $obj->state_code;
|
||||||
@ -1047,7 +1070,7 @@ class Account extends CommonObject
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$this->error = $this->db->lasterror;
|
$this->error = $this->db->lasterror();
|
||||||
$this->errors[] = $this->error;
|
$this->errors[] = $this->error;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -1723,6 +1746,9 @@ class Account extends CommonObject
|
|||||||
$this->domiciliation = 'Banque de France';
|
$this->domiciliation = 'Banque de France';
|
||||||
$this->proprio = 'Owner';
|
$this->proprio = 'Owner';
|
||||||
$this->owner_address = 'Owner address';
|
$this->owner_address = 'Owner address';
|
||||||
|
$this->owner_zip = 'Owner zip';
|
||||||
|
$this->owner_town = 'Owner town';
|
||||||
|
$this->owner_country_id = 'Owner country_id';
|
||||||
$this->country_id = 1;
|
$this->country_id = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -45,6 +45,26 @@ class BankCateg // extends CommonObject
|
|||||||
*/
|
*/
|
||||||
public $label;
|
public $label;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var DoliDB
|
||||||
|
*/
|
||||||
|
protected $db;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string error
|
||||||
|
*/
|
||||||
|
public $error;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array errors
|
||||||
|
*/
|
||||||
|
public $errors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array context
|
||||||
|
*/
|
||||||
|
public $context;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
@ -278,7 +298,7 @@ class BankCateg // extends CommonObject
|
|||||||
// Load source object
|
// Load source object
|
||||||
$object->fetch($fromid);
|
$object->fetch($fromid);
|
||||||
$object->id = 0;
|
$object->id = 0;
|
||||||
$object->statut = 0;
|
// $object->statut = 0;
|
||||||
|
|
||||||
// Create clone
|
// Create clone
|
||||||
$object->context['createfromclone'] = 'createfromclone';
|
$object->context['createfromclone'] = 'createfromclone';
|
||||||
|
|||||||
@ -396,7 +396,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, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')); // This also change content of $arrayfields
|
||||||
$moreforfilter= '';
|
$moreforfilter= '';
|
||||||
|
|
||||||
print '<div class="div-table-responsive">';
|
print '<div class="div-table-responsive">';
|
||||||
@ -404,6 +404,13 @@ if ($resql) {
|
|||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
|
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print '<td class="liste_titre maxwidthsearch">';
|
||||||
|
$searchpicto = $form->showFilterAndCheckAddButtons(0);
|
||||||
|
print $searchpicto;
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) {
|
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) {
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
@ -507,16 +514,22 @@ if ($resql) {
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print '<td class="liste_titre maxwidthsearch">';
|
print '<td class="liste_titre maxwidthsearch">';
|
||||||
$searchpicto = $form->showFilterAndCheckAddButtons(0);
|
$searchpicto = $form->showFilterAndCheckAddButtons(0);
|
||||||
print $searchpicto;
|
print $searchpicto;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
}
|
||||||
|
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
|
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'maxwidthsearch center ');
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) {
|
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) {
|
||||||
print_liste_field_titre('#', $_SERVER['PHP_SELF'], '', '', $param, '', $sortfield, $sortorder);
|
print_liste_field_titre('#', $_SERVER['PHP_SELF'], '', '', $param, '', $sortfield, $sortorder);
|
||||||
}
|
}
|
||||||
@ -563,7 +576,9 @@ if ($resql) {
|
|||||||
$reshook = $hookmanager->executeHooks('printFieldListOption', $parameters); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldListOption', $parameters); // Note that $action and $object may have been modified by hook
|
||||||
print $hookmanager->resPrint;
|
print $hookmanager->resPrint;
|
||||||
|
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'maxwidthsearch center ');
|
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'maxwidthsearch center ');
|
||||||
|
}
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
|
|
||||||
@ -602,6 +617,10 @@ if ($resql) {
|
|||||||
} else {
|
} else {
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
|
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print '<td></td>';
|
||||||
|
}
|
||||||
|
|
||||||
// No
|
// No
|
||||||
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) {
|
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) {
|
||||||
print '<td>'.(($offset * $limit) + $i).'</td>';
|
print '<td>'.(($offset * $limit) + $i).'</td>';
|
||||||
@ -751,8 +770,9 @@ if ($resql) {
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print '<td></td>';
|
print '<td></td>';
|
||||||
|
}
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -447,7 +447,7 @@ if (!empty($moreforfilter)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$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, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')); // This also change content of $arrayfields
|
||||||
$selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : '');
|
$selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : '');
|
||||||
|
|
||||||
print '<div class="div-table-responsive">'; // You can use div-table-responsive-no-min if you dont need reserved height for your table
|
print '<div class="div-table-responsive">'; // You can use div-table-responsive-no-min if you dont need reserved height for your table
|
||||||
@ -457,6 +457,13 @@ print '<table class="tagtable nobottomiftotal liste'.($moreforfilter ? " listwit
|
|||||||
// Fields title search
|
// Fields title search
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
|
// Action column
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print '<td class="liste_titre maxwidthsearch">';
|
||||||
|
$searchpicto = $form->showFilterButtons('left');
|
||||||
|
print $searchpicto;
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
foreach ($object->fields as $key => $val) {
|
foreach ($object->fields as $key => $val) {
|
||||||
$cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']);
|
$cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']);
|
||||||
if ($key == 'status') {
|
if ($key == 'status') {
|
||||||
@ -495,16 +502,22 @@ $parameters = array('arrayfields'=>$arrayfields);
|
|||||||
$reshook = $hookmanager->executeHooks('printFieldListOption', $parameters, $object); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldListOption', $parameters, $object); // Note that $action and $object may have been modified by hook
|
||||||
print $hookmanager->resPrint;
|
print $hookmanager->resPrint;
|
||||||
// Action column
|
// Action column
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print '<td class="liste_titre maxwidthsearch">';
|
print '<td class="liste_titre maxwidthsearch">';
|
||||||
$searchpicto = $form->showFilterButtons();
|
$searchpicto = $form->showFilterButtons();
|
||||||
print $searchpicto;
|
print $searchpicto;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
}
|
||||||
print '</tr>'."\n";
|
print '</tr>'."\n";
|
||||||
|
|
||||||
|
|
||||||
// Fields title label
|
// Fields title label
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
|
// Action column
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ')."\n";
|
||||||
|
}
|
||||||
foreach ($object->fields as $key => $val) {
|
foreach ($object->fields as $key => $val) {
|
||||||
$cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']);
|
$cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']);
|
||||||
if ($key == 'status') {
|
if ($key == 'status') {
|
||||||
@ -527,7 +540,9 @@ $parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$
|
|||||||
$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook
|
||||||
print $hookmanager->resPrint;
|
print $hookmanager->resPrint;
|
||||||
// Action column
|
// Action column
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ')."\n";
|
print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ')."\n";
|
||||||
|
}
|
||||||
print '</tr>'."\n";
|
print '</tr>'."\n";
|
||||||
|
|
||||||
|
|
||||||
@ -579,6 +594,20 @@ while ($i < ($limit ? min($num, $limit) : $num)) {
|
|||||||
// Show here line of result
|
// Show here line of result
|
||||||
$j = 0;
|
$j = 0;
|
||||||
print '<tr data-rowid="'.$object->id.'" class="oddeven">';
|
print '<tr data-rowid="'.$object->id.'" class="oddeven">';
|
||||||
|
|
||||||
|
// Action column
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print '<td class="nowrap center">';
|
||||||
|
if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
|
||||||
|
$selected = 0;
|
||||||
|
if (in_array($object->id, $arrayofselected)) {
|
||||||
|
$selected = 1;
|
||||||
|
}
|
||||||
|
print '<input id="cb'.$object->id.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$object->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($object->fields as $key => $val) {
|
foreach ($object->fields as $key => $val) {
|
||||||
$cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']);
|
$cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']);
|
||||||
if (in_array($val['type'], array('date', 'datetime', 'timestamp'))) {
|
if (in_array($val['type'], array('date', 'datetime', 'timestamp'))) {
|
||||||
@ -636,6 +665,7 @@ while ($i < ($limit ? min($num, $limit) : $num)) {
|
|||||||
$reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook
|
||||||
print $hookmanager->resPrint;
|
print $hookmanager->resPrint;
|
||||||
// Action column
|
// Action column
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print '<td class="nowrap center">';
|
print '<td class="nowrap center">';
|
||||||
if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
|
if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
|
||||||
$selected = 0;
|
$selected = 0;
|
||||||
@ -645,6 +675,7 @@ while ($i < ($limit ? min($num, $limit) : $num)) {
|
|||||||
print '<input id="cb'.$object->id.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$object->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
print '<input id="cb'.$object->id.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$object->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
}
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -185,8 +185,8 @@ class FactureRec extends CommonInvoice
|
|||||||
'fk_cond_reglement' =>array('type'=>'integer', 'label'=>'Fk cond reglement', 'enabled'=>1, 'visible'=>-1, 'position'=>90),
|
'fk_cond_reglement' =>array('type'=>'integer', 'label'=>'Fk cond reglement', 'enabled'=>1, 'visible'=>-1, 'position'=>90),
|
||||||
'fk_mode_reglement' =>array('type'=>'integer', 'label'=>'Fk mode reglement', 'enabled'=>1, 'visible'=>-1, 'position'=>95),
|
'fk_mode_reglement' =>array('type'=>'integer', 'label'=>'Fk mode reglement', 'enabled'=>1, 'visible'=>-1, 'position'=>95),
|
||||||
'date_lim_reglement' =>array('type'=>'date', 'label'=>'Date lim reglement', 'enabled'=>1, 'visible'=>-1, 'position'=>100),
|
'date_lim_reglement' =>array('type'=>'date', 'label'=>'Date lim reglement', 'enabled'=>1, 'visible'=>-1, 'position'=>100),
|
||||||
'note_private' =>array('type'=>'text', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>105),
|
'note_private' =>array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>105),
|
||||||
'note_public' =>array('type'=>'text', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>110),
|
'note_public' =>array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>110),
|
||||||
'modelpdf' =>array('type'=>'varchar(255)', 'label'=>'Modelpdf', 'enabled'=>1, 'visible'=>-1, 'position'=>115),
|
'modelpdf' =>array('type'=>'varchar(255)', 'label'=>'Modelpdf', 'enabled'=>1, 'visible'=>-1, 'position'=>115),
|
||||||
'date_when' =>array('type'=>'datetime', 'label'=>'Date when', 'enabled'=>1, 'visible'=>-1, 'position'=>130),
|
'date_when' =>array('type'=>'datetime', 'label'=>'Date when', 'enabled'=>1, 'visible'=>-1, 'position'=>130),
|
||||||
'date_last_gen' =>array('type'=>'datetime', 'label'=>'Date last gen', 'enabled'=>1, 'visible'=>-1, 'position'=>135),
|
'date_last_gen' =>array('type'=>'datetime', 'label'=>'Date last gen', 'enabled'=>1, 'visible'=>-1, 'position'=>135),
|
||||||
|
|||||||
@ -341,8 +341,8 @@ class Facture extends CommonInvoice
|
|||||||
'fk_currency' =>array('type'=>'varchar(3)', 'label'=>'CurrencyCode', 'enabled'=>1, 'visible'=>-1, 'position'=>185),
|
'fk_currency' =>array('type'=>'varchar(3)', 'label'=>'CurrencyCode', 'enabled'=>1, 'visible'=>-1, 'position'=>185),
|
||||||
'fk_cond_reglement' =>array('type'=>'integer', 'label'=>'PaymentTerm', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>190),
|
'fk_cond_reglement' =>array('type'=>'integer', 'label'=>'PaymentTerm', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>190),
|
||||||
'fk_mode_reglement' =>array('type'=>'integer', 'label'=>'PaymentMode', 'enabled'=>1, 'visible'=>-1, 'position'=>195),
|
'fk_mode_reglement' =>array('type'=>'integer', 'label'=>'PaymentMode', 'enabled'=>1, 'visible'=>-1, 'position'=>195),
|
||||||
'note_private' =>array('type'=>'text', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>205),
|
'note_private' =>array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>205),
|
||||||
'note_public' =>array('type'=>'text', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>210),
|
'note_public' =>array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>210),
|
||||||
'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>1, 'visible'=>0, 'position'=>215),
|
'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>1, 'visible'=>0, 'position'=>215),
|
||||||
'extraparams' =>array('type'=>'varchar(255)', 'label'=>'Extraparams', 'enabled'=>1, 'visible'=>-1, 'position'=>225),
|
'extraparams' =>array('type'=>'varchar(255)', 'label'=>'Extraparams', 'enabled'=>1, 'visible'=>-1, 'position'=>225),
|
||||||
'situation_cycle_ref' =>array('type'=>'smallint(6)', 'label'=>'Situation cycle ref', 'enabled'=>'$conf->global->INVOICE_USE_SITUATION', 'visible'=>-1, 'position'=>230),
|
'situation_cycle_ref' =>array('type'=>'smallint(6)', 'label'=>'Situation cycle ref', 'enabled'=>'$conf->global->INVOICE_USE_SITUATION', 'visible'=>-1, 'position'=>230),
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
* Copyright (C) 2019 Nicolas ZABOURI <info@inovea-conseil.com>
|
* Copyright (C) 2019 Nicolas ZABOURI <info@inovea-conseil.com>
|
||||||
* Copyright (C) 2020 Tobias Sekan <tobias.sekan@startmail.com>
|
* Copyright (C) 2020 Tobias Sekan <tobias.sekan@startmail.com>
|
||||||
* Copyright (C) 2020 Josep Lluís Amador <joseplluis@lliuretic.cat>
|
* Copyright (C) 2020 Josep Lluís Amador <joseplluis@lliuretic.cat>
|
||||||
* Copyright (C) 2021 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2021-2023 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
|
||||||
@ -111,7 +111,7 @@ if (isModEnabled('facture')) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isModEnabled('fournisseur') || isModEnabled('supplier_invoice')) {
|
if (isModEnabled('fournisseur') || isModEnabled('supplier_invoice')) {
|
||||||
print getNumberInvoicesPieChart('fourn');
|
print getNumberInvoicesPieChart('suppliers');
|
||||||
print '<br>';
|
print '<br>';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -487,7 +487,7 @@ if (isModEnabled('don') && !empty($user->rights->don->lire)) {
|
|||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print '<tr class="oddeven"><td colspan="4" class="opacitymedium">'.$langs->trans("None").'</td></tr>';
|
print '<tr class="oddeven"><td colspan="5" class="opacitymedium">'.$langs->trans("None").'</td></tr>';
|
||||||
}
|
}
|
||||||
print '</table></div><br>';
|
print '</table></div><br>';
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -46,6 +46,11 @@ $action = GETPOST('action', 'aZ09');
|
|||||||
$confirm = GETPOST('confirm', 'alpha');
|
$confirm = GETPOST('confirm', 'alpha');
|
||||||
$backtopage = GETPOST('backtopage', 'alpha');
|
$backtopage = GETPOST('backtopage', 'alpha');
|
||||||
|
|
||||||
|
$socid = GETPOST('socid', 'int');
|
||||||
|
if ($socid < 0) {
|
||||||
|
$socid = 0;
|
||||||
|
}
|
||||||
|
|
||||||
$object = new Paiement($db);
|
$object = new Paiement($db);
|
||||||
// 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('paymentcard', 'globalcard'));
|
$hookmanager->initHooks(array('paymentcard', 'globalcard'));
|
||||||
@ -53,7 +58,7 @@ $hookmanager->initHooks(array('paymentcard', 'globalcard'));
|
|||||||
// Load object
|
// Load object
|
||||||
include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once.
|
include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once.
|
||||||
|
|
||||||
$result = restrictedArea($user, $object->element, $object->id, 'paiement');
|
$result = restrictedArea($user, $object->element, $object->id, 'paiement'); // This also test permission on read invoice
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
if ($user->socid) {
|
if ($user->socid) {
|
||||||
|
|||||||
@ -643,6 +643,8 @@ class Paiement extends CommonObject
|
|||||||
$acc = new Account($this->db);
|
$acc = new Account($this->db);
|
||||||
$result = $acc->fetch($this->fk_account);
|
$result = $acc->fetch($this->fk_account);
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
|
$this->error = $acc->error;
|
||||||
|
$this->errors = $acc->errors;
|
||||||
$error++;
|
$error++;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -788,6 +790,7 @@ class Paiement extends CommonObject
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$this->error = $acc->error;
|
$this->error = $acc->error;
|
||||||
|
$this->errors = $acc->errors;
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -513,6 +513,7 @@ foreach ($arrayfields as $column) {
|
|||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
$totalarray = array();
|
$totalarray = array();
|
||||||
|
$totalarray['nbfield'] = 0;
|
||||||
while ($i < min($num, $limit)) {
|
while ($i < min($num, $limit)) {
|
||||||
$objp = $db->fetch_object($resql);
|
$objp = $db->fetch_object($resql);
|
||||||
|
|
||||||
@ -620,8 +621,12 @@ while ($i < min($num, $limit)) {
|
|||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
$totalarray['pos'][$checkedCount] = 'amount';
|
$totalarray['pos'][$checkedCount] = 'amount';
|
||||||
|
if (empty($totalarray['val']['amount'])) {
|
||||||
|
$totalarray['val']['amount'] = $objp->amount;
|
||||||
|
} else {
|
||||||
$totalarray['val']['amount'] += $objp->amount;
|
$totalarray['val']['amount'] += $objp->amount;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Status
|
// Status
|
||||||
if (!empty($arrayfields['p.statut']['checked'])) {
|
if (!empty($arrayfields['p.statut']['checked'])) {
|
||||||
|
|||||||
@ -412,7 +412,7 @@ $moreforfilter = '';
|
|||||||
$massactionbutton = '';
|
$massactionbutton = '';
|
||||||
|
|
||||||
$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, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')); // This also change content of $arrayfields
|
||||||
if ($massactionbutton) {
|
if ($massactionbutton) {
|
||||||
$selectedfields .= $form->showCheckAddButtons('checkforselect', 1);
|
$selectedfields .= $form->showCheckAddButtons('checkforselect', 1);
|
||||||
}
|
}
|
||||||
@ -422,6 +422,13 @@ print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" :
|
|||||||
|
|
||||||
print '<tr class="liste_titre_filter">';
|
print '<tr class="liste_titre_filter">';
|
||||||
|
|
||||||
|
// Filter: Buttons
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print '<td class="liste_titre maxwidthsearch">';
|
||||||
|
print $form->showFilterAndCheckAddButtons(0);
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
|
||||||
// Filters: Line number (placeholder)
|
// Filters: Line number (placeholder)
|
||||||
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) {
|
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) {
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
@ -522,13 +529,20 @@ $reshook = $hookmanager->executeHooks('printFieldListOption', $parameters); // N
|
|||||||
print $hookmanager->resPrint;
|
print $hookmanager->resPrint;
|
||||||
|
|
||||||
// Filter: Buttons
|
// Filter: Buttons
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print '<td class="liste_titre maxwidthsearch">';
|
print '<td class="liste_titre maxwidthsearch">';
|
||||||
print $form->showFilterAndCheckAddButtons(0);
|
print $form->showFilterAndCheckAddButtons(0);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
}
|
||||||
|
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
|
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'maxwidthsearch ');
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) {
|
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) {
|
||||||
print_liste_field_titre('#', $_SERVER['PHP_SELF'], '', '', $param, '', $sortfield, $sortorder);
|
print_liste_field_titre('#', $_SERVER['PHP_SELF'], '', '', $param, '', $sortfield, $sortorder);
|
||||||
}
|
}
|
||||||
@ -571,7 +585,9 @@ $parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$
|
|||||||
$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters); // Note that $action and $object may have been modified by hook
|
||||||
print $hookmanager->resPrint;
|
print $hookmanager->resPrint;
|
||||||
|
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'maxwidthsearch ');
|
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'maxwidthsearch ');
|
||||||
|
}
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
@ -611,6 +627,12 @@ while ($i < min($num, $limit)) {
|
|||||||
} else {
|
} else {
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
|
|
||||||
|
|
||||||
|
// Action column
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print '<td></td>';
|
||||||
|
}
|
||||||
|
|
||||||
// Line number
|
// Line number
|
||||||
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) {
|
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) {
|
||||||
print '<td>'.(($offset * $limit) + $i).'</td>';
|
print '<td>'.(($offset * $limit) + $i).'</td>';
|
||||||
@ -750,8 +772,10 @@ while ($i < min($num, $limit)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Buttons
|
// Action column
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print '<td></td>';
|
print '<td></td>';
|
||||||
|
}
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -249,9 +249,9 @@ if ($modecompta == 'CREANCES-DETTES') {
|
|||||||
$sql .= " sum(f.total_ht) as amount, sum(f.total_ttc) as amount_ttc";
|
$sql .= " sum(f.total_ht) as amount, sum(f.total_ttc) as amount_ttc";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f, ".MAIN_DB_PREFIX."societe as s";
|
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f, ".MAIN_DB_PREFIX."societe as s";
|
||||||
if ($selected_cat === -2) { // Without any category
|
if ($selected_cat === -2) { // Without any category
|
||||||
$sql .= " LEFT OUTER JOIN ".MAIN_DB_PREFIX."categorie_societe as cs ON s.rowid = cs.fk_soc";
|
$sql .= " LEFT OUTER JOIN ".MAIN_DB_PREFIX."categorie_fournisseur as cs ON s.rowid = cs.fk_soc";
|
||||||
} elseif ($selected_cat) { // Into a specific category
|
} elseif ($selected_cat) { // Into a specific category
|
||||||
$sql .= ", ".MAIN_DB_PREFIX."categorie as c, ".MAIN_DB_PREFIX."categorie_societe as cs";
|
$sql .= ", ".MAIN_DB_PREFIX."categorie as c, ".MAIN_DB_PREFIX."categorie_fournisseur as cs";
|
||||||
}
|
}
|
||||||
$sql .= " WHERE f.fk_statut in (1,2)";
|
$sql .= " WHERE f.fk_statut in (1,2)";
|
||||||
$sql .= " AND f.type IN (0,2)";
|
$sql .= " AND f.type IN (0,2)";
|
||||||
@ -276,9 +276,9 @@ if ($modecompta == 'CREANCES-DETTES') {
|
|||||||
$sql .= ", ".MAIN_DB_PREFIX."paiementfourn as p";
|
$sql .= ", ".MAIN_DB_PREFIX."paiementfourn as p";
|
||||||
$sql .= ", ".MAIN_DB_PREFIX."societe as s";
|
$sql .= ", ".MAIN_DB_PREFIX."societe as s";
|
||||||
if ($selected_cat === -2) { // Without any category
|
if ($selected_cat === -2) { // Without any category
|
||||||
$sql .= " LEFT OUTER JOIN ".MAIN_DB_PREFIX."categorie_societe as cs ON s.rowid = cs.fk_soc";
|
$sql .= " LEFT OUTER JOIN ".MAIN_DB_PREFIX."categorie_fournisseur as cs ON s.rowid = cs.fk_soc";
|
||||||
} elseif ($selected_cat) { // Into a specific category
|
} elseif ($selected_cat) { // Into a specific category
|
||||||
$sql .= ", ".MAIN_DB_PREFIX."categorie as c, ".MAIN_DB_PREFIX."categorie_societe as cs";
|
$sql .= ", ".MAIN_DB_PREFIX."categorie as c, ".MAIN_DB_PREFIX."categorie_fournisseur as cs";
|
||||||
}
|
}
|
||||||
$sql .= " WHERE p.rowid = pf.fk_paiementfourn";
|
$sql .= " WHERE p.rowid = pf.fk_paiementfourn";
|
||||||
$sql .= " AND pf.fk_facturefourn = f.rowid";
|
$sql .= " AND pf.fk_facturefourn = f.rowid";
|
||||||
|
|||||||
@ -328,7 +328,7 @@ $newcardbutton .= dolGetButtonTitle($langs->trans('NewVATPayment'), '', 'fa fa-p
|
|||||||
print_barre_liste($langs->trans("VATDeclarations"), $page, $_SERVER['PHP_SELF'], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_accountancy', 0, $newcardbutton, '', $limit, 0, 0, 1);
|
print_barre_liste($langs->trans("VATDeclarations"), $page, $_SERVER['PHP_SELF'], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_accountancy', 0, $newcardbutton, '', $limit, 0, 0, 1);
|
||||||
|
|
||||||
$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, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')); // This also change content of $arrayfields
|
||||||
if ($massactionbutton) {
|
if ($massactionbutton) {
|
||||||
$selectedfields .= $form->showCheckAddButtons('checkforselect', 1);
|
$selectedfields .= $form->showCheckAddButtons('checkforselect', 1);
|
||||||
}
|
}
|
||||||
@ -338,6 +338,13 @@ print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" :
|
|||||||
|
|
||||||
print '<tr class="liste_titre_filter">';
|
print '<tr class="liste_titre_filter">';
|
||||||
|
|
||||||
|
// Filter: Buttons
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print '<td class="liste_titre maxwidthsearch">';
|
||||||
|
print $form->showFilterAndCheckAddButtons(0);
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
|
||||||
// Filters: Lines (placeholder)
|
// Filters: Lines (placeholder)
|
||||||
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) {
|
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) {
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
@ -417,13 +424,17 @@ $reshook = $hookmanager->executeHooks('printFieldListOption', $parameters); // N
|
|||||||
print $hookmanager->resPrint;
|
print $hookmanager->resPrint;
|
||||||
|
|
||||||
// Filter: Buttons
|
// Filter: Buttons
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print '<td class="liste_titre maxwidthsearch">';
|
print '<td class="liste_titre maxwidthsearch">';
|
||||||
print $form->showFilterAndCheckAddButtons(0);
|
print $form->showFilterAndCheckAddButtons(0);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
}
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print_liste_field_titre($selectedfields, $_SERVER['PHP_SELF'], '', '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch ');
|
||||||
|
}
|
||||||
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) {
|
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) {
|
||||||
print_liste_field_titre('#', $_SERVER['PHP_SELF'], '', '', $param, '', $sortfield, $sortorder);
|
print_liste_field_titre('#', $_SERVER['PHP_SELF'], '', '', $param, '', $sortfield, $sortorder);
|
||||||
}
|
}
|
||||||
@ -454,7 +465,9 @@ $parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$
|
|||||||
$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters); // Note that $action and $object may have been modified by hook
|
||||||
print $hookmanager->resPrint;
|
print $hookmanager->resPrint;
|
||||||
|
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print_liste_field_titre($selectedfields, $_SERVER['PHP_SELF'], '', '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch ');
|
print_liste_field_titre($selectedfields, $_SERVER['PHP_SELF'], '', '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch ');
|
||||||
|
}
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
@ -488,6 +501,11 @@ while ($i < min($num, $limit)) {
|
|||||||
} else {
|
} else {
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
|
|
||||||
|
// Buttons
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print '<td></td>';
|
||||||
|
}
|
||||||
|
|
||||||
// No
|
// No
|
||||||
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) {
|
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) {
|
||||||
print '<td>'.(($offset * $limit) + $i).'</td>';
|
print '<td>'.(($offset * $limit) + $i).'</td>';
|
||||||
@ -527,7 +545,10 @@ while ($i < min($num, $limit)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Date payment
|
// Date payment
|
||||||
/*if (!empty($arrayfields['t.datep']['checked'])) {
|
/*if // Buttons
|
||||||
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
|
print '<td></td>';
|
||||||
|
}(!empty($arrayfields['t.datep']['checked'])) {
|
||||||
print '<td class="center">'.dol_print_date($db->jdate($obj->datep), 'day').'</td>';
|
print '<td class="center">'.dol_print_date($db->jdate($obj->datep), 'day').'</td>';
|
||||||
if (!$i) $totalarray['nbfield']++;
|
if (!$i) $totalarray['nbfield']++;
|
||||||
}*/
|
}*/
|
||||||
@ -591,8 +612,9 @@ while ($i < min($num, $limit)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Buttons
|
// Buttons
|
||||||
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print '<td></td>';
|
print '<td></td>';
|
||||||
|
}
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -302,7 +302,7 @@ $dolibarr_main_restrict_ip='';
|
|||||||
// This might be required if you access Dolibarr behind a proxy that make bad URL rewriting, to avoid false alarms.
|
// This might be required if you access Dolibarr behind a proxy that make bad URL rewriting, to avoid false alarms.
|
||||||
// In most cases, you should always keep this to 0.
|
// In most cases, you should always keep this to 0.
|
||||||
// Default value: 0
|
// Default value: 0
|
||||||
// Possible values: 0 or 1
|
// Possible values: 0 or 1 (no strict CSRF test, only test on referer) or 2 (no CSRF test at all)
|
||||||
// Examples:
|
// Examples:
|
||||||
// $dolibarr_nocsrfcheck='0';
|
// $dolibarr_nocsrfcheck='0';
|
||||||
//
|
//
|
||||||
|
|||||||
@ -213,11 +213,6 @@ if (empty($reshook)) {
|
|||||||
$object->town = (string) GETPOST("town", 'alpha');
|
$object->town = (string) GETPOST("town", 'alpha');
|
||||||
$object->country_id = (int) GETPOST("country_id", 'int');
|
$object->country_id = (int) GETPOST("country_id", 'int');
|
||||||
$object->state_id = (int) GETPOST("state_id", 'int');
|
$object->state_id = (int) GETPOST("state_id", 'int');
|
||||||
//$object->jabberid = GETPOST("jabberid", 'alpha');
|
|
||||||
//$object->skype = GETPOST("skype", 'alpha');
|
|
||||||
//$object->twitter = GETPOST("twitter", 'alpha');
|
|
||||||
//$object->facebook = GETPOST("facebook", 'alpha');
|
|
||||||
//$object->linkedin = GETPOST("linkedin", 'alpha');
|
|
||||||
$object->socialnetworks = array();
|
$object->socialnetworks = array();
|
||||||
if (isModEnabled('socialnetworks')) {
|
if (isModEnabled('socialnetworks')) {
|
||||||
foreach ($socialnetworks as $key => $value) {
|
foreach ($socialnetworks as $key => $value) {
|
||||||
@ -419,11 +414,6 @@ if (empty($reshook)) {
|
|||||||
|
|
||||||
$object->email = (string) GETPOST('email', 'custom', 0, FILTER_SANITIZE_EMAIL);
|
$object->email = (string) GETPOST('email', 'custom', 0, FILTER_SANITIZE_EMAIL);
|
||||||
$object->no_email = GETPOST("no_email", "int");
|
$object->no_email = GETPOST("no_email", "int");
|
||||||
//$object->jabberid = GETPOST("jabberid", 'alpha');
|
|
||||||
//$object->skype = GETPOST("skype", 'alpha');
|
|
||||||
//$object->twitter = GETPOST("twitter", 'alpha');
|
|
||||||
//$object->facebook = GETPOST("facebook", 'alpha');
|
|
||||||
//$object->linkedin = GETPOST("linkedin", 'alpha');
|
|
||||||
$object->socialnetworks = array();
|
$object->socialnetworks = array();
|
||||||
if (isModEnabled('socialnetworks')) {
|
if (isModEnabled('socialnetworks')) {
|
||||||
foreach ($socialnetworks as $key => $value) {
|
foreach ($socialnetworks as $key => $value) {
|
||||||
|
|||||||
@ -101,7 +101,7 @@ class Contact extends CommonObject
|
|||||||
'poste' =>array('type'=>'varchar(80)', 'label'=>'PostOrFunction', 'enabled'=>1, 'visible'=>-1, 'position'=>52),
|
'poste' =>array('type'=>'varchar(80)', 'label'=>'PostOrFunction', 'enabled'=>1, 'visible'=>-1, 'position'=>52),
|
||||||
'address' =>array('type'=>'varchar(255)', 'label'=>'Address', 'enabled'=>1, 'visible'=>-1, 'position'=>55),
|
'address' =>array('type'=>'varchar(255)', 'label'=>'Address', 'enabled'=>1, 'visible'=>-1, 'position'=>55),
|
||||||
'zip' =>array('type'=>'varchar(25)', 'label'=>'Zip', 'enabled'=>1, 'visible'=>1, 'position'=>60),
|
'zip' =>array('type'=>'varchar(25)', 'label'=>'Zip', 'enabled'=>1, 'visible'=>1, 'position'=>60),
|
||||||
'town' =>array('type'=>'text', 'label'=>'Town', 'enabled'=>1, 'visible'=>-1, 'position'=>65),
|
'town' =>array('type'=>'varchar(50)', 'label'=>'Town', 'enabled'=>1, 'visible'=>-1, 'position'=>65),
|
||||||
'fk_departement' =>array('type'=>'integer', 'label'=>'Fk departement', 'enabled'=>1, 'visible'=>3, 'position'=>70),
|
'fk_departement' =>array('type'=>'integer', 'label'=>'Fk departement', 'enabled'=>1, 'visible'=>3, 'position'=>70),
|
||||||
'fk_pays' =>array('type'=>'integer', 'label'=>'Fk pays', 'enabled'=>1, 'visible'=>3, 'position'=>75),
|
'fk_pays' =>array('type'=>'integer', 'label'=>'Fk pays', 'enabled'=>1, 'visible'=>3, 'position'=>75),
|
||||||
'fk_soc' =>array('type'=>'integer', 'label'=>'ThirdParty', 'enabled'=>1, 'visible'=>1, 'position'=>77, 'searchall'=>1),
|
'fk_soc' =>array('type'=>'integer', 'label'=>'ThirdParty', 'enabled'=>1, 'visible'=>1, 'position'=>77, 'searchall'=>1),
|
||||||
@ -117,8 +117,8 @@ class Contact extends CommonObject
|
|||||||
'fk_stcommcontact' =>array('type'=>'integer', 'label'=>'ProspectStatus', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>220),
|
'fk_stcommcontact' =>array('type'=>'integer', 'label'=>'ProspectStatus', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>220),
|
||||||
'fk_prospectlevel' =>array('type'=>'varchar(12)', 'label'=>'ProspectLevel', 'enabled'=>1, 'visible'=>-1, 'position'=>255),
|
'fk_prospectlevel' =>array('type'=>'varchar(12)', 'label'=>'ProspectLevel', 'enabled'=>1, 'visible'=>-1, 'position'=>255),
|
||||||
'no_email' =>array('type'=>'smallint(6)', 'label'=>'No_Email', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>180),
|
'no_email' =>array('type'=>'smallint(6)', 'label'=>'No_Email', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>180),
|
||||||
'note_private' =>array('type'=>'text', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>3, 'position'=>195, 'searchall'=>1),
|
'note_private' =>array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>3, 'position'=>195, 'searchall'=>1),
|
||||||
'note_public' =>array('type'=>'text', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>3, 'position'=>200, 'searchall'=>1),
|
'note_public' =>array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>3, 'position'=>200, 'searchall'=>1),
|
||||||
'default_lang' =>array('type'=>'varchar(6)', 'label'=>'Default lang', 'enabled'=>1, 'visible'=>3, 'position'=>205),
|
'default_lang' =>array('type'=>'varchar(6)', 'label'=>'Default lang', 'enabled'=>1, 'visible'=>3, 'position'=>205),
|
||||||
'canvas' =>array('type'=>'varchar(32)', 'label'=>'Canvas', 'enabled'=>1, 'visible'=>3, 'position'=>210),
|
'canvas' =>array('type'=>'varchar(32)', 'label'=>'Canvas', 'enabled'=>1, 'visible'=>3, 'position'=>210),
|
||||||
'datec' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-1, 'position'=>300),
|
'datec' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-1, 'position'=>300),
|
||||||
@ -702,22 +702,6 @@ class Contact extends CommonObject
|
|||||||
$tmpobj->socialnetworks = $this->socialnetworks;
|
$tmpobj->socialnetworks = $this->socialnetworks;
|
||||||
$usermustbemodified++;
|
$usermustbemodified++;
|
||||||
}
|
}
|
||||||
// if ($tmpobj->skype != $this->skype) {
|
|
||||||
// $tmpobj->skype = $this->skype;
|
|
||||||
// $usermustbemodified++;
|
|
||||||
// }
|
|
||||||
// if ($tmpobj->twitter != $this->twitter) {
|
|
||||||
// $tmpobj->twitter = $this->twitter;
|
|
||||||
// $usermustbemodified++;
|
|
||||||
// }
|
|
||||||
// if ($tmpobj->facebook != $this->facebook) {
|
|
||||||
// $tmpobj->facebook = $this->facebook;
|
|
||||||
// $usermustbemodified++;
|
|
||||||
// }
|
|
||||||
// if ($tmpobj->linkedin != $this->linkedin) {
|
|
||||||
// $tmpobj->linkedin = $this->linkedin;
|
|
||||||
// $usermustbemodified++;
|
|
||||||
// }
|
|
||||||
if ($usermustbemodified) {
|
if ($usermustbemodified) {
|
||||||
$result = $tmpobj->update($user, 0, 1, 1, 1);
|
$result = $tmpobj->update($user, 0, 1, 1, 1);
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
@ -850,9 +834,6 @@ class Contact extends CommonObject
|
|||||||
if ($this->fax && !empty($conf->global->LDAP_CONTACT_FIELD_FAX)) {
|
if ($this->fax && !empty($conf->global->LDAP_CONTACT_FIELD_FAX)) {
|
||||||
$info[$conf->global->LDAP_CONTACT_FIELD_FAX] = $this->fax;
|
$info[$conf->global->LDAP_CONTACT_FIELD_FAX] = $this->fax;
|
||||||
}
|
}
|
||||||
if ($this->skype && !empty($conf->global->LDAP_CONTACT_FIELD_SKYPE)) {
|
|
||||||
$info[$conf->global->LDAP_CONTACT_FIELD_SKYPE] = $this->skype;
|
|
||||||
}
|
|
||||||
if ($this->note_private && !empty($conf->global->LDAP_CONTACT_FIELD_DESCRIPTION)) {
|
if ($this->note_private && !empty($conf->global->LDAP_CONTACT_FIELD_DESCRIPTION)) {
|
||||||
$info[$conf->global->LDAP_CONTACT_FIELD_DESCRIPTION] = dol_string_nohtmltag($this->note_private, 2);
|
$info[$conf->global->LDAP_CONTACT_FIELD_DESCRIPTION] = dol_string_nohtmltag($this->note_private, 2);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -453,8 +453,6 @@ if ($search_priv != '0' && $search_priv != '1') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Search Categories
|
|
||||||
|
|
||||||
// Search Contact Categories
|
// Search Contact Categories
|
||||||
$searchCategoryContactList = $search_categ ? array($search_categ) : array();
|
$searchCategoryContactList = $search_categ ? array($search_categ) : array();
|
||||||
$searchCategoryContactOperator = 0;
|
$searchCategoryContactOperator = 0;
|
||||||
@ -464,17 +462,17 @@ if (!empty($searchCategoryContactList)) {
|
|||||||
$listofcategoryid = '';
|
$listofcategoryid = '';
|
||||||
foreach ($searchCategoryContactList as $searchCategoryContact) {
|
foreach ($searchCategoryContactList as $searchCategoryContact) {
|
||||||
if (intval($searchCategoryContact) == -2) {
|
if (intval($searchCategoryContact) == -2) {
|
||||||
$searchCategoryContactSqlList[] = "NOT EXISTS (SELECT ck.fk_socpeople FROM ".MAIN_DB_PREFIX."categorie_contact as ck WHERE s.rowid = ck.fk_socpeople)";
|
$searchCategoryContactSqlList[] = "NOT EXISTS (SELECT ck.fk_socpeople FROM ".MAIN_DB_PREFIX."categorie_contact as ck WHERE p.rowid = ck.fk_socpeople)";
|
||||||
} elseif (intval($searchCategoryContact) > 0) {
|
} elseif (intval($searchCategoryContact) > 0) {
|
||||||
if ($searchCategoryContactOperator == 0) {
|
if ($searchCategoryContactOperator == 0) {
|
||||||
$searchCategoryContactSqlList[] = " EXISTS (SELECT ck.fk_socpeople FROM ".MAIN_DB_PREFIX."categorie_contact as ck WHERE s.rowid = ck.fk_socpeople AND ck.fk_categorie = ".((int) $searchCategoryContact).")";
|
$searchCategoryContactSqlList[] = " EXISTS (SELECT ck.fk_socpeople FROM ".MAIN_DB_PREFIX."categorie_contact as ck WHERE p.rowid = ck.fk_socpeople AND ck.fk_categorie = ".((int) $searchCategoryContact).")";
|
||||||
} else {
|
} else {
|
||||||
$listofcategoryid .= ($listofcategoryid ? ', ' : '') .((int) $searchCategoryContact);
|
$listofcategoryid .= ($listofcategoryid ? ', ' : '') .((int) $searchCategoryContact);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($listofcategoryid) {
|
if ($listofcategoryid) {
|
||||||
$searchCategoryContactSqlList[] = " EXISTS (SELECT ck.fk_socpeople FROM ".MAIN_DB_PREFIX."categorie_contact as ck WHERE s.rowid = ck.fk_socpeople AND ck.fk_categorie IN (".$db->sanitize($listofcategoryid)."))";
|
$searchCategoryContactSqlList[] = " EXISTS (SELECT ck.fk_socpeople FROM ".MAIN_DB_PREFIX."categorie_contact as ck WHERE p.rowid = ck.fk_socpeople AND ck.fk_categorie IN (".$db->sanitize($listofcategoryid)."))";
|
||||||
}
|
}
|
||||||
if ($searchCategoryContactOperator == 1) {
|
if ($searchCategoryContactOperator == 1) {
|
||||||
if (!empty($searchCategoryContactSqlList)) {
|
if (!empty($searchCategoryContactSqlList)) {
|
||||||
|
|||||||
@ -238,8 +238,8 @@ class Contrat extends CommonObject
|
|||||||
'fk_commercial_signature' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'SaleRepresentative Signature', 'enabled'=>1, 'visible'=>-1, 'position'=>80),
|
'fk_commercial_signature' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'SaleRepresentative Signature', 'enabled'=>1, 'visible'=>-1, 'position'=>80),
|
||||||
'fk_commercial_suivi' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'SaleRepresentative follower', 'enabled'=>1, 'visible'=>-1, 'position'=>85),
|
'fk_commercial_suivi' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'SaleRepresentative follower', 'enabled'=>1, 'visible'=>-1, 'position'=>85),
|
||||||
'fk_user_author' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserAuthor', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>90),
|
'fk_user_author' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserAuthor', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>90),
|
||||||
'note_public' =>array('type'=>'text', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>105, 'searchall'=>1),
|
'note_public' =>array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>105, 'searchall'=>1),
|
||||||
'note_private' =>array('type'=>'text', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>110, 'searchall'=>1),
|
'note_private' =>array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>110, 'searchall'=>1),
|
||||||
'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>1, 'visible'=>0, 'position'=>115),
|
'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>1, 'visible'=>0, 'position'=>115),
|
||||||
'import_key' =>array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>1, 'visible'=>-2, 'position'=>120),
|
'import_key' =>array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>1, 'visible'=>-2, 'position'=>120),
|
||||||
'extraparams' =>array('type'=>'varchar(255)', 'label'=>'Extraparams', 'enabled'=>1, 'visible'=>-1, 'position'=>125),
|
'extraparams' =>array('type'=>'varchar(255)', 'label'=>'Extraparams', 'enabled'=>1, 'visible'=>-1, 'position'=>125),
|
||||||
@ -2988,8 +2988,8 @@ class ContratLigne extends CommonObjectLine
|
|||||||
'fk_contrat' =>array('type'=>'integer:Contrat:contrat/class/contrat.class.php', 'label'=>'Contract', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>70),
|
'fk_contrat' =>array('type'=>'integer:Contrat:contrat/class/contrat.class.php', 'label'=>'Contract', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>70),
|
||||||
'fk_product' =>array('type'=>'integer:Product:product/class/product.class.php:1', 'label'=>'Product', 'enabled'=>1, 'visible'=>-1, 'position'=>75),
|
'fk_product' =>array('type'=>'integer:Product:product/class/product.class.php:1', 'label'=>'Product', 'enabled'=>1, 'visible'=>-1, 'position'=>75),
|
||||||
//'fk_user_author' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'Fk user author', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>90),
|
//'fk_user_author' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'Fk user author', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>90),
|
||||||
'note_private' =>array('type'=>'text', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>105),
|
'note_private' =>array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>105),
|
||||||
'note_public' =>array('type'=>'text', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>110),
|
'note_public' =>array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>110),
|
||||||
//'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>1, 'visible'=>0, 'position'=>115),
|
//'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>1, 'visible'=>0, 'position'=>115),
|
||||||
//'import_key' =>array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>1, 'visible'=>-2, 'position'=>120),
|
//'import_key' =>array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>1, 'visible'=>-2, 'position'=>120),
|
||||||
//'extraparams' =>array('type'=>'varchar(255)', 'label'=>'Extraparams', 'enabled'=>1, 'visible'=>-1, 'position'=>125),
|
//'extraparams' =>array('type'=>'varchar(255)', 'label'=>'Extraparams', 'enabled'=>1, 'visible'=>-1, 'position'=>125),
|
||||||
|
|||||||
@ -469,6 +469,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) {
|
|||||||
} else {
|
} else {
|
||||||
/* The fast and low memory method to get and count full list converts the sql into a sql count */
|
/* The fast and low memory method to get and count full list converts the sql into a sql count */
|
||||||
$sqlforcount = preg_replace('/^'.preg_quote($sqlfields, '/').'/', 'SELECT COUNT(*) as nbtotalofrecords', $sql);
|
$sqlforcount = preg_replace('/^'.preg_quote($sqlfields, '/').'/', 'SELECT COUNT(*) as nbtotalofrecords', $sql);
|
||||||
|
$sqlforcount = preg_replace('/LEFT JOIN '.MAIN_DB_PREFIX.'contratdet as cd ON c.rowid = cd.fk_contrat /', '', $sqlforcount);
|
||||||
$sqlforcount = preg_replace('/GROUP BY.*$/', '', $sqlforcount);
|
$sqlforcount = preg_replace('/GROUP BY.*$/', '', $sqlforcount);
|
||||||
|
|
||||||
$resql = $db->query($sqlforcount);
|
$resql = $db->query($sqlforcount);
|
||||||
|
|||||||
@ -76,8 +76,20 @@ if ($action == 'add' && !empty($permissiontoadd)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set value to insert
|
// Set value to insert
|
||||||
if (in_array($object->fields[$key]['type'], array('text', 'html'))) {
|
if (preg_match('/^text/', $object->fields[$key]['type'])) {
|
||||||
|
$tmparray = explode(':', $object->fields[$key]['type']);
|
||||||
|
if (!empty($tmparray[1])) {
|
||||||
|
$value = GETPOST($key, $tmparray[1]);
|
||||||
|
} else {
|
||||||
|
$value = GETPOST($key, 'nohtml');
|
||||||
|
}
|
||||||
|
} elseif (preg_match('/^html/', $object->fields[$key]['type'])) {
|
||||||
|
$tmparray = explode(':', $object->fields[$key]['type']);
|
||||||
|
if (!empty($tmparray[1])) {
|
||||||
|
$value = GETPOST($key, $tmparray[1]);
|
||||||
|
} else {
|
||||||
$value = GETPOST($key, 'restricthtml');
|
$value = GETPOST($key, 'restricthtml');
|
||||||
|
}
|
||||||
} elseif ($object->fields[$key]['type'] == 'date') {
|
} elseif ($object->fields[$key]['type'] == 'date') {
|
||||||
$value = dol_mktime(12, 0, 0, GETPOST($key.'month', 'int'), GETPOST($key.'day', 'int'), GETPOST($key.'year', 'int')); // for date without hour, we use gmt
|
$value = dol_mktime(12, 0, 0, GETPOST($key.'month', 'int'), GETPOST($key.'day', 'int'), GETPOST($key.'year', 'int')); // for date without hour, we use gmt
|
||||||
} elseif ($object->fields[$key]['type'] == 'datetime') {
|
} elseif ($object->fields[$key]['type'] == 'datetime') {
|
||||||
@ -205,7 +217,14 @@ if ($action == 'update' && !empty($permissiontoadd)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set value to update
|
// Set value to update
|
||||||
if (preg_match('/^(text|html)/', $object->fields[$key]['type'])) {
|
if (preg_match('/^text/', $object->fields[$key]['type'])) {
|
||||||
|
$tmparray = explode(':', $object->fields[$key]['type']);
|
||||||
|
if (!empty($tmparray[1])) {
|
||||||
|
$value = GETPOST($key, $tmparray[1]);
|
||||||
|
} else {
|
||||||
|
$value = GETPOST($key, 'nohtml');
|
||||||
|
}
|
||||||
|
} elseif (preg_match('/^html/', $object->fields[$key]['type'])) {
|
||||||
$tmparray = explode(':', $object->fields[$key]['type']);
|
$tmparray = explode(':', $object->fields[$key]['type']);
|
||||||
if (!empty($tmparray[1])) {
|
if (!empty($tmparray[1])) {
|
||||||
$value = GETPOST($key, $tmparray[1]);
|
$value = GETPOST($key, $tmparray[1]);
|
||||||
|
|||||||
@ -60,7 +60,12 @@ if ($action == 'setnote_public' && !empty($permissionnote) && !GETPOST('cancel',
|
|||||||
$hidedesc = (GETPOST('hidedesc', 'int') ? GETPOST('hidedesc', 'int') : (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC) ? 1 : 0));
|
$hidedesc = (GETPOST('hidedesc', 'int') ? GETPOST('hidedesc', 'int') : (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC) ? 1 : 0));
|
||||||
$hideref = (GETPOST('hideref', 'int') ? GETPOST('hideref', 'int') : (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 1 : 0));
|
$hideref = (GETPOST('hideref', 'int') ? GETPOST('hideref', 'int') : (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 1 : 0));
|
||||||
|
|
||||||
$result = $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
//see #21072: Update a public note with a "document model not found" is not really a problem : the PDF is not created/updated
|
||||||
|
//but the note is saved, so just add a notification will be enought
|
||||||
|
$resultGenDoc = $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
|
if ($resultGenDoc < 0) {
|
||||||
|
setEventMessages($object->error, $object->errors, 'warnings');
|
||||||
|
}
|
||||||
|
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
dol_print_error($db, $result);
|
dol_print_error($db, $result);
|
||||||
|
|||||||
@ -82,6 +82,8 @@ class CGenericDic
|
|||||||
$fieldlabel = 'label';
|
$fieldlabel = 'label';
|
||||||
if ($this->table_element == 'c_stcomm') {
|
if ($this->table_element == 'c_stcomm') {
|
||||||
$fieldlabel = 'libelle';
|
$fieldlabel = 'libelle';
|
||||||
|
} elseif ($this->table_element == 'c_type_fees') {
|
||||||
|
$fieldrowid = 'id';
|
||||||
}
|
}
|
||||||
|
|
||||||
$error = 0;
|
$error = 0;
|
||||||
@ -162,6 +164,8 @@ class CGenericDic
|
|||||||
if ($this->table_element == 'c_stcomm') {
|
if ($this->table_element == 'c_stcomm') {
|
||||||
$fieldrowid = 'id';
|
$fieldrowid = 'id';
|
||||||
$fieldlabel = 'libelle';
|
$fieldlabel = 'libelle';
|
||||||
|
} elseif ($this->table_element == 'c_type_fees') {
|
||||||
|
$fieldrowid = 'id';
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "SELECT";
|
$sql = "SELECT";
|
||||||
@ -233,6 +237,8 @@ class CGenericDic
|
|||||||
if ($this->table_element == 'c_stcomm') {
|
if ($this->table_element == 'c_stcomm') {
|
||||||
$fieldrowid = 'id';
|
$fieldrowid = 'id';
|
||||||
$fieldlabel = 'libelle';
|
$fieldlabel = 'libelle';
|
||||||
|
} elseif ($this->table_element == 'c_type_fees') {
|
||||||
|
$fieldrowid = 'id';
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "SELECT";
|
$sql = "SELECT";
|
||||||
@ -303,6 +309,8 @@ class CGenericDic
|
|||||||
if ($this->table_element == 'c_stcomm') {
|
if ($this->table_element == 'c_stcomm') {
|
||||||
$fieldrowid = 'id';
|
$fieldrowid = 'id';
|
||||||
$fieldlabel = 'libelle';
|
$fieldlabel = 'libelle';
|
||||||
|
} elseif ($this->table_element == 'c_type_fees') {
|
||||||
|
$fieldrowid = 'id';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clean parameters
|
// Clean parameters
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
|
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||||
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
|
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
|
||||||
* Copyright (C) 2016 Charlie Benke <charlie@patas-monkey.com>
|
* Copyright (C) 2016 Charlie Benke <charlie@patas-monkey.com>
|
||||||
* Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2018-2023 Frédéric France <frederic.france@netlogic.fr>
|
||||||
* Copyright (C) 2020 Josep Lluís Amador <joseplluis@lliuretic.cat>
|
* Copyright (C) 2020 Josep Lluís Amador <joseplluis@lliuretic.cat>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -65,6 +65,21 @@ abstract class CommonDocGenerator
|
|||||||
*/
|
*/
|
||||||
public $scandir;
|
public $scandir;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string model name
|
||||||
|
*/
|
||||||
|
public $name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string model description (short text)
|
||||||
|
*/
|
||||||
|
public $description;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public $format;
|
||||||
|
|
||||||
public $page_hauteur;
|
public $page_hauteur;
|
||||||
public $page_largeur;
|
public $page_largeur;
|
||||||
public $marge_gauche;
|
public $marge_gauche;
|
||||||
@ -443,7 +458,7 @@ abstract class CommonDocGenerator
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$date = ($object->element == 'contrat' ? $object->date_contrat : $object->date);
|
$date = (isset($object->element) && $object->element == 'contrat' && isset($object->date_contrat)) ? $object->date_contrat : (isset($object->date) ? $object->date : null);
|
||||||
|
|
||||||
$resarray = array(
|
$resarray = array(
|
||||||
$array_key.'_id'=>$object->id,
|
$array_key.'_id'=>$object->id,
|
||||||
@ -452,7 +467,7 @@ abstract class CommonDocGenerator
|
|||||||
$array_key.'_ref_ext' => (property_exists($object, 'ref_ext') ? $object->ref_ext : ''),
|
$array_key.'_ref_ext' => (property_exists($object, 'ref_ext') ? $object->ref_ext : ''),
|
||||||
$array_key.'_ref_customer'=>(!empty($object->ref_client) ? $object->ref_client : (empty($object->ref_customer) ? '' : $object->ref_customer)),
|
$array_key.'_ref_customer'=>(!empty($object->ref_client) ? $object->ref_client : (empty($object->ref_customer) ? '' : $object->ref_customer)),
|
||||||
$array_key.'_ref_supplier'=>(!empty($object->ref_fournisseur) ? $object->ref_fournisseur : (empty($object->ref_supplier) ? '' : $object->ref_supplier)),
|
$array_key.'_ref_supplier'=>(!empty($object->ref_fournisseur) ? $object->ref_fournisseur : (empty($object->ref_supplier) ? '' : $object->ref_supplier)),
|
||||||
$array_key.'_source_invoice_ref'=>$invoice_source->ref,
|
$array_key.'_source_invoice_ref'=>((empty($invoice_source) || empty($invoice_source->ref)) ? '' : $invoice_source->ref),
|
||||||
// Dates
|
// Dates
|
||||||
$array_key.'_hour'=>dol_print_date($date, 'hour'),
|
$array_key.'_hour'=>dol_print_date($date, 'hour'),
|
||||||
$array_key.'_date'=>dol_print_date($date, 'day'),
|
$array_key.'_date'=>dol_print_date($date, 'day'),
|
||||||
@ -1279,7 +1294,7 @@ abstract class CommonDocGenerator
|
|||||||
$extrafieldOptionsKey = $extrafieldsKeyPrefix.$extrafieldKey;
|
$extrafieldOptionsKey = $extrafieldsKeyPrefix.$extrafieldKey;
|
||||||
|
|
||||||
|
|
||||||
// Load extrafiels if not allready does
|
// Load extra fields if they haven't been loaded already.
|
||||||
if (empty($this->extrafieldsCache)) {
|
if (empty($this->extrafieldsCache)) {
|
||||||
$this->extrafieldsCache = new ExtraFields($this->db);
|
$this->extrafieldsCache = new ExtraFields($this->db);
|
||||||
}
|
}
|
||||||
@ -1605,7 +1620,7 @@ abstract class CommonDocGenerator
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load extrafiels if not allready does
|
// Load extra fields if they haven't been loaded already.
|
||||||
if (empty($this->extrafieldsCache)) {
|
if (empty($this->extrafieldsCache)) {
|
||||||
$this->extrafieldsCache = new ExtraFields($this->db);
|
$this->extrafieldsCache = new ExtraFields($this->db);
|
||||||
}
|
}
|
||||||
@ -1615,7 +1630,7 @@ abstract class CommonDocGenerator
|
|||||||
$extrafields = $this->extrafieldsCache;
|
$extrafields = $this->extrafieldsCache;
|
||||||
|
|
||||||
|
|
||||||
if (!empty($extrafields->attributes[$object->table_element]) && is_array($extrafields->attributes[$object->table_element]['label'])) {
|
if (!empty($extrafields->attributes[$object->table_element]) && is_array($extrafields->attributes[$object->table_element]) && array_key_exists('label', $extrafields->attributes[$object->table_element]) && is_array($extrafields->attributes[$object->table_element]['label'])) {
|
||||||
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $label) {
|
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $label) {
|
||||||
// Dont display separator yet even is set to be displayed (not compatible yet)
|
// Dont display separator yet even is set to be displayed (not compatible yet)
|
||||||
if ($extrafields->attributes[$object->table_element]['type'][$key] == 'separate') {
|
if ($extrafields->attributes[$object->table_element]['type'][$key] == 'separate') {
|
||||||
|
|||||||
@ -336,6 +336,7 @@ abstract class CommonInvoice extends CommonObject
|
|||||||
$field = 'fk_facture';
|
$field = 'fk_facture';
|
||||||
$field2 = 'fk_paiement';
|
$field2 = 'fk_paiement';
|
||||||
$field3 = ', p.ref_ext';
|
$field3 = ', p.ref_ext';
|
||||||
|
$field4 = ', p.fk_bank'; // Bank line id
|
||||||
$sharedentity = 'facture';
|
$sharedentity = 'facture';
|
||||||
if ($this->element == 'facture_fourn' || $this->element == 'invoice_supplier') {
|
if ($this->element == 'facture_fourn' || $this->element == 'invoice_supplier') {
|
||||||
$table = 'paiementfourn_facturefourn';
|
$table = 'paiementfourn_facturefourn';
|
||||||
@ -346,7 +347,7 @@ abstract class CommonInvoice extends CommonObject
|
|||||||
$sharedentity = 'facture_fourn';
|
$sharedentity = 'facture_fourn';
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "SELECT p.ref, pf.amount, pf.multicurrency_amount, p.fk_paiement, p.datep, p.num_paiement as num, t.code".$field3;
|
$sql = "SELECT p.ref, pf.amount, pf.multicurrency_amount, p.fk_paiement, p.datep, p.num_paiement as num, t.code".$field3 . $field4;
|
||||||
$sql .= " FROM ".$this->db->prefix().$table." as pf, ".$this->db->prefix().$table2." as p, ".$this->db->prefix()."c_paiement as t";
|
$sql .= " FROM ".$this->db->prefix().$table." as pf, ".$this->db->prefix().$table2." as p, ".$this->db->prefix()."c_paiement as t";
|
||||||
$sql .= " WHERE pf.".$field." = ".((int) $this->id);
|
$sql .= " WHERE pf.".$field." = ".((int) $this->id);
|
||||||
$sql .= " AND pf.".$field2." = p.rowid";
|
$sql .= " AND pf.".$field2." = p.rowid";
|
||||||
@ -367,6 +368,9 @@ abstract class CommonInvoice extends CommonObject
|
|||||||
if (!empty($field3)) {
|
if (!empty($field3)) {
|
||||||
$tmp['ref_ext'] = $obj->ref_ext;
|
$tmp['ref_ext'] = $obj->ref_ext;
|
||||||
}
|
}
|
||||||
|
if (!empty($field4)) {
|
||||||
|
$tmp['fk_bank_line'] = $obj->fk_bank;
|
||||||
|
}
|
||||||
$retarray[] = $tmp;
|
$retarray[] = $tmp;
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
@ -1624,21 +1628,34 @@ abstract class CommonInvoice extends CommonObject
|
|||||||
$complementaryinfo .= '/30/'.$this->thirdparty->tva_intra;
|
$complementaryinfo .= '/30/'.$this->thirdparty->tva_intra;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
include_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
||||||
|
$bankaccount = new Account($this->db);
|
||||||
|
|
||||||
// Header
|
// Header
|
||||||
$s = '';
|
$s = '';
|
||||||
$s .= "SPC\n";
|
$s .= "SPC\n";
|
||||||
$s .= "0200\n";
|
$s .= "0200\n";
|
||||||
$s .= "1\n";
|
$s .= "1\n";
|
||||||
|
// Info Seller ("Compte / Payable à")
|
||||||
if ($this->fk_account > 0) {
|
if ($this->fk_account > 0) {
|
||||||
// Bank BAN if country is LI or CH
|
// Bank BAN if country is LI or CH. TODO Add a test to check than IBAN start with CH or LI
|
||||||
// TODO Add
|
|
||||||
$bankaccount = new Account($this->db);
|
|
||||||
$bankaccount->fetch($this->fk_account);
|
$bankaccount->fetch($this->fk_account);
|
||||||
$s .= $bankaccount->iban."\n";
|
$s .= $bankaccount->iban."\n";
|
||||||
} else {
|
} else {
|
||||||
$s .= "\n";
|
$s .= "\n";
|
||||||
}
|
}
|
||||||
// Seller
|
if ($bankaccount->id > 0 && getDolGlobalString('PDF_SWISS_QRCODE_USE_OWNER_OF_ACCOUNT_AS_CREDITOR')) {
|
||||||
|
// If a bank account is prodived and we ask to use it as creditor, we use the bank address
|
||||||
|
// TODO In a future, we may always use this address, and if name/address/zip/town/country differs from $mysoc, we can use the address of $mysoc into the final seller field ?
|
||||||
|
$s .= "S\n";
|
||||||
|
$s .= dol_trunc($bankaccount->proprio, 70, 'right', 'UTF-8', 1)."\n";
|
||||||
|
$addresslinearray = explode("\n", $bankaccount->owner_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";*/
|
||||||
|
} else {
|
||||||
$s .= "S\n";
|
$s .= "S\n";
|
||||||
$s .= dol_trunc($mysoc->name, 70, 'right', 'UTF-8', 1)."\n";
|
$s .= dol_trunc($mysoc->name, 70, 'right', 'UTF-8', 1)."\n";
|
||||||
$addresslinearray = explode("\n", $mysoc->address);
|
$addresslinearray = explode("\n", $mysoc->address);
|
||||||
@ -1647,7 +1664,8 @@ abstract class CommonInvoice extends CommonObject
|
|||||||
$s .= dol_trunc($mysoc->zip, 16, 'right', 'UTF-8', 1)."\n";
|
$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->town, 35, 'right', 'UTF-8', 1)."\n";
|
||||||
$s .= dol_trunc($mysoc->country_code, 2, 'right', 'UTF-8', 1)."\n";
|
$s .= dol_trunc($mysoc->country_code, 2, 'right', 'UTF-8', 1)."\n";
|
||||||
// Final seller
|
}
|
||||||
|
// Final seller (Ultimate seller) ("Créancier final" = "En faveur de")
|
||||||
$s .= "\n";
|
$s .= "\n";
|
||||||
$s .= "\n";
|
$s .= "\n";
|
||||||
$s .= "\n";
|
$s .= "\n";
|
||||||
@ -1669,13 +1687,18 @@ abstract class CommonInvoice extends CommonObject
|
|||||||
$s .= dol_trunc($this->thirdparty->country_code, 2, 'right', 'UTF-8', 1)."\n";
|
$s .= dol_trunc($this->thirdparty->country_code, 2, 'right', 'UTF-8', 1)."\n";
|
||||||
// ID of payment
|
// ID of payment
|
||||||
$s .= "NON\n"; // NON or QRR
|
$s .= "NON\n"; // NON or QRR
|
||||||
$s .= "\n"; // QR Code if previous field is QRR
|
$s .= "\n"; // QR Code reference if previous field is QRR
|
||||||
|
// Free text
|
||||||
if ($complementaryinfo) {
|
if ($complementaryinfo) {
|
||||||
$s .= $complementaryinfo."\n";
|
$s .= $complementaryinfo."\n";
|
||||||
} else {
|
} else {
|
||||||
$s .= "\n";
|
$s .= "\n";
|
||||||
}
|
}
|
||||||
$s .= "EPD\n";
|
$s .= "EPD\n";
|
||||||
|
// More text, complementary info
|
||||||
|
if ($complementaryinfo) {
|
||||||
|
$s .= $complementaryinfo."\n";
|
||||||
|
}
|
||||||
$s .= "\n";
|
$s .= "\n";
|
||||||
//var_dump($s);exit;
|
//var_dump($s);exit;
|
||||||
return $s;
|
return $s;
|
||||||
|
|||||||
@ -831,7 +831,7 @@ abstract class CommonObject
|
|||||||
}
|
}
|
||||||
if ($this->element == 'contact') {
|
if ($this->element == 'contact') {
|
||||||
$contactid = $this->id;
|
$contactid = $this->id;
|
||||||
$thirdpartyid = empty($object->fk_soc) ? 0 : $object->fk_soc;
|
$thirdpartyid = empty($this->fk_soc) ? 0 : $this->fk_soc;
|
||||||
}
|
}
|
||||||
if ($this->element == 'user') {
|
if ($this->element == 'user') {
|
||||||
$contactid = $this->contact_id;
|
$contactid = $this->contact_id;
|
||||||
@ -961,27 +961,6 @@ abstract class CommonObject
|
|||||||
}
|
}
|
||||||
$outdone++;
|
$outdone++;
|
||||||
}
|
}
|
||||||
} else { // Old code to remove
|
|
||||||
if (!empty($this->skype)) {
|
|
||||||
$outsocialnetwork .= dol_print_socialnetworks($this->skype, $this->id, $object->id, 'skype');
|
|
||||||
}
|
|
||||||
$outdone++;
|
|
||||||
if (!empty($this->jabberid)) {
|
|
||||||
$outsocialnetwork .= dol_print_socialnetworks($this->jabberid, $this->id, $object->id, 'jabber');
|
|
||||||
}
|
|
||||||
$outdone++;
|
|
||||||
if (!empty($this->twitter)) {
|
|
||||||
$outsocialnetwork .= dol_print_socialnetworks($this->twitter, $this->id, $object->id, 'twitter');
|
|
||||||
}
|
|
||||||
$outdone++;
|
|
||||||
if (!empty($this->facebook)) {
|
|
||||||
$outsocialnetwork .= dol_print_socialnetworks($this->facebook, $this->id, $object->id, 'facebook');
|
|
||||||
}
|
|
||||||
$outdone++;
|
|
||||||
if (!empty($this->linkedin)) {
|
|
||||||
$outsocialnetwork .= dol_print_socialnetworks($this->linkedin, $this->id, $object->id, 'linkedin');
|
|
||||||
}
|
|
||||||
$outdone++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($outsocialnetwork) {
|
if ($outsocialnetwork) {
|
||||||
@ -4285,7 +4264,7 @@ abstract class CommonObject
|
|||||||
* @param string $field_select name of field we need to get a list
|
* @param string $field_select name of field we need to get a list
|
||||||
* @param string $field_where name of field of object we need to get linked items
|
* @param string $field_where name of field of object we need to get linked items
|
||||||
* @param string $table_element name of association table
|
* @param string $table_element name of association table
|
||||||
* @return array Array of record
|
* @return array|int Array of record, -1 if empty
|
||||||
*/
|
*/
|
||||||
public static function getAllItemsLinkedByObjectID($fk_object_where, $field_select, $field_where, $table_element)
|
public static function getAllItemsLinkedByObjectID($fk_object_where, $field_select, $field_where, $table_element)
|
||||||
{
|
{
|
||||||
@ -6079,6 +6058,8 @@ abstract class CommonObject
|
|||||||
if (!empty($extrafields->attributes[$this->table_element]) && !empty($extrafields->attributes[$this->table_element]['computed'][$key])) {
|
if (!empty($extrafields->attributes[$this->table_element]) && !empty($extrafields->attributes[$this->table_element]['computed'][$key])) {
|
||||||
//var_dump($conf->disable_compute);
|
//var_dump($conf->disable_compute);
|
||||||
if (empty($conf->disable_compute)) {
|
if (empty($conf->disable_compute)) {
|
||||||
|
global $objectoffield; // We set a global variable to $objectoffield so
|
||||||
|
$objectoffield = $this; // we can use it inside computed formula
|
||||||
$this->array_options["options_".$key] = dol_eval($extrafields->attributes[$this->table_element]['computed'][$key], 1, 0, '');
|
$this->array_options["options_".$key] = dol_eval($extrafields->attributes[$this->table_element]['computed'][$key], 1, 0, '');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -6309,7 +6290,6 @@ abstract class CommonObject
|
|||||||
$new_array_options[$key] = $object->id;
|
$new_array_options[$key] = $object->id;
|
||||||
} else {
|
} else {
|
||||||
$this->error = "Id/Ref '".$value."' for object '".$object->element."' not found";
|
$this->error = "Id/Ref '".$value."' for object '".$object->element."' not found";
|
||||||
$this->db->rollback();
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -8087,10 +8067,16 @@ abstract class CommonObject
|
|||||||
$out .= "\n";
|
$out .= "\n";
|
||||||
|
|
||||||
$nbofextrafieldsshown = 0;
|
$nbofextrafieldsshown = 0;
|
||||||
$extrafields_collapse_num = '';
|
|
||||||
$e = 0; // var to manage the modulo (odd/even)
|
$e = 0; // var to manage the modulo (odd/even)
|
||||||
|
|
||||||
|
$lastseparatorkeyfound = '';
|
||||||
|
$extrafields_collapse_num = '';
|
||||||
|
$extrafields_collapse_num_old = '';
|
||||||
|
$i = 0;
|
||||||
|
|
||||||
foreach ($extrafields->attributes[$this->table_element]['label'] as $key => $label) {
|
foreach ($extrafields->attributes[$this->table_element]['label'] as $key => $label) {
|
||||||
|
$i++;
|
||||||
|
|
||||||
// Show only the key field in params
|
// Show only the key field in params
|
||||||
if (is_array($params) && array_key_exists('onlykey', $params) && $key != $params['onlykey']) {
|
if (is_array($params) && array_key_exists('onlykey', $params) && $key != $params['onlykey']) {
|
||||||
continue;
|
continue;
|
||||||
@ -8125,6 +8111,7 @@ abstract class CommonObject
|
|||||||
if (empty($perms)) {
|
if (empty($perms)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load language if required
|
// Load language if required
|
||||||
if (!empty($extrafields->attributes[$this->table_element]['langfile'][$key])) {
|
if (!empty($extrafields->attributes[$this->table_element]['langfile'][$key])) {
|
||||||
$langs->load($extrafields->attributes[$this->table_element]['langfile'][$key]);
|
$langs->load($extrafields->attributes[$this->table_element]['langfile'][$key]);
|
||||||
@ -8177,7 +8164,8 @@ abstract class CommonObject
|
|||||||
|
|
||||||
// Output value of the current field
|
// Output value of the current field
|
||||||
if ($extrafields->attributes[$this->table_element]['type'][$key] == 'separate') {
|
if ($extrafields->attributes[$this->table_element]['type'][$key] == 'separate') {
|
||||||
$extrafields_collapse_num = '';
|
$extrafields_collapse_num = $key;
|
||||||
|
/*
|
||||||
$extrafield_param = $extrafields->attributes[$this->table_element]['param'][$key];
|
$extrafield_param = $extrafields->attributes[$this->table_element]['param'][$key];
|
||||||
if (!empty($extrafield_param) && is_array($extrafield_param)) {
|
if (!empty($extrafield_param) && is_array($extrafield_param)) {
|
||||||
$extrafield_param_list = array_keys($extrafield_param['options']);
|
$extrafield_param_list = array_keys($extrafield_param['options']);
|
||||||
@ -8186,14 +8174,20 @@ abstract class CommonObject
|
|||||||
$extrafield_collapse_display_value = intval($extrafield_param_list[0]);
|
$extrafield_collapse_display_value = intval($extrafield_param_list[0]);
|
||||||
|
|
||||||
if ($extrafield_collapse_display_value == 1 || $extrafield_collapse_display_value == 2) {
|
if ($extrafield_collapse_display_value == 1 || $extrafield_collapse_display_value == 2) {
|
||||||
$extrafields_collapse_num = $extrafields->attributes[$this->table_element]['pos'][$key];
|
//$extrafields_collapse_num = $extrafields->attributes[$this->table_element]['pos'][$key];
|
||||||
|
$extrafields_collapse_num = $key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
// if colspan=0 or 1, the second column is not extended, so the separator must be on 2 columns
|
// if colspan=0 or 1, the second column is not extended, so the separator must be on 2 columns
|
||||||
$out .= $extrafields->showSeparator($key, $this, ($colspan ? $colspan + 1 : 2), $display_type, $mode);
|
$out .= $extrafields->showSeparator($key, $this, ($colspan ? $colspan + 1 : 2), $display_type, $mode);
|
||||||
|
|
||||||
|
$lastseparatorkeyfound = $key;
|
||||||
} else {
|
} else {
|
||||||
|
$collapse_group = $extrafields_collapse_num.(!empty($this->id) ? '_'.$this->id : '');
|
||||||
|
|
||||||
$class = (!empty($extrafields->attributes[$this->table_element]['hidden'][$key]) ? 'hideobject ' : '');
|
$class = (!empty($extrafields->attributes[$this->table_element]['hidden'][$key]) ? 'hideobject ' : '');
|
||||||
$csstyle = '';
|
$csstyle = '';
|
||||||
if (is_array($params) && count($params) > 0) {
|
if (is_array($params) && count($params) > 0) {
|
||||||
@ -8264,13 +8258,13 @@ abstract class CommonObject
|
|||||||
$helptoshow = $langs->trans($extrafields->attributes[$this->table_element]['help'][$key]);
|
$helptoshow = $langs->trans($extrafields->attributes[$this->table_element]['help'][$key]);
|
||||||
|
|
||||||
if ($display_type == 'card') {
|
if ($display_type == 'card') {
|
||||||
$out .= '<tr '.($html_id ? 'id="'.$html_id.'" ' : '').$csstyle.' class="field_options_'.$key.' '.$class.$this->element.'_extras_'.$key.' trextrafields_collapse'.$extrafields_collapse_num.(!empty($this->id)?'_'.$this->id:'').'" '.$domData.' >';
|
$out .= '<tr '.($html_id ? 'id="'.$html_id.'" ' : '').$csstyle.' class="field_options_'.$key.' '.$class.$this->element.'_extras_'.$key.' trextrafields_collapse'.$collapse_group.'" '.$domData.' >';
|
||||||
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER) && ($action == 'view' || $action == 'valid' || $action == 'editline' || $action == 'confirm_valid' || $action == 'confirm_cancel')) {
|
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER) && ($action == 'view' || $action == 'valid' || $action == 'editline' || $action == 'confirm_valid' || $action == 'confirm_cancel')) {
|
||||||
$out .= '<td></td>';
|
$out .= '<td></td>';
|
||||||
}
|
}
|
||||||
$out .= '<td class="titlefieldcreate wordbreak';
|
$out .= '<td class="titlefieldcreate wordbreak';
|
||||||
} elseif ($display_type == 'line') {
|
} elseif ($display_type == 'line') {
|
||||||
$out .= '<div '.($html_id ? 'id="'.$html_id.'" ' : '').$csstyle.' class="fieldline_options_'.$key.' '.$class.$this->element.'_extras_'.$key.' trextrafields_collapse'.$extrafields_collapse_num.(!empty($this->id)?'_'.$this->id:'').'" '.$domData.' >';
|
$out .= '<div '.($html_id ? 'id="'.$html_id.'" ' : '').$csstyle.' class="fieldline_options_'.$key.' '.$class.$this->element.'_extras_'.$key.' trextrafields_collapse'.$collapse_group.'" '.$domData.' >';
|
||||||
$out .= '<div style="display: inline-block; padding-right:4px" class="wordbreak';
|
$out .= '<div style="display: inline-block; padding-right:4px" class="wordbreak';
|
||||||
}
|
}
|
||||||
//$out .= "titlefield";
|
//$out .= "titlefield";
|
||||||
|
|||||||
@ -27,6 +27,12 @@
|
|||||||
*/
|
*/
|
||||||
trait CommonSocialNetworks
|
trait CommonSocialNetworks
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @var array array of socialnetworks
|
||||||
|
*/
|
||||||
|
public $socialnetworks;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show social network part if the module is enabled with hiding functionality
|
* Show social network part if the module is enabled with hiding functionality
|
||||||
*
|
*
|
||||||
@ -47,9 +53,11 @@ trait CommonSocialNetworks
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($nbofnetworks > 1) {
|
if ($nbofnetworks > 1) {
|
||||||
print '<tr><td><br><a class="paddingtop paddingbottom socialnetworklnk" id="socialnetworklnk" href="javascript:toogleSocialNetwork(true)"></a></td>';
|
print '<tr><td><br><a class="paddingtop paddingbottom socialnetworklnk onreposition" colspan="'.$colspan.'" id="socialnetworklnk" href="#"></a>';
|
||||||
print '<td'.($colspan ? ' colspan="'.($colspan-1).'"' : '').'>';
|
//print '</td>';
|
||||||
print '<br><a class="paddingtop paddingbottom socialnetworklnk" href="javascript:toogleSocialNetwork(true)"><span class="badge badge-secondary socialnetworklnk">'.$nbactive.'</span></a>';
|
//print '<td'.($colspan ? ' colspan="'.($colspan-1).'"' : '').'>';
|
||||||
|
//print '<br>';
|
||||||
|
print ' <a class="paddingtop paddingbottom socialnetworklnk onreposition" href="#"><span class="badge badge-secondary socialnetworklnk">'.$nbactive.'</span></a>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
@ -74,9 +82,10 @@ trait CommonSocialNetworks
|
|||||||
print '<script type="text/javascript">
|
print '<script type="text/javascript">
|
||||||
$("document").ready(function() { toogleSocialNetwork(false); });
|
$("document").ready(function() { toogleSocialNetwork(false); });
|
||||||
|
|
||||||
jQuery(".socialnetworklnk").onClick(function() {
|
jQuery(".socialnetworklnk").click(function() {
|
||||||
console.log("Click on link");
|
console.log("Click on link");
|
||||||
toogleSocialNetwork(true);
|
toogleSocialNetwork(true);
|
||||||
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
function toogleSocialNetwork(chgCookieState) {
|
function toogleSocialNetwork(chgCookieState) {
|
||||||
|
|||||||
@ -98,7 +98,7 @@ class EmailSenderProfile extends CommonObject
|
|||||||
'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'visible'=>1, 'enabled'=>1, 'position'=>30, 'notnull'=>1),
|
'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'visible'=>1, 'enabled'=>1, 'position'=>30, 'notnull'=>1),
|
||||||
'email' => array('type'=>'varchar(255)', 'label'=>'Email', 'visible'=>1, 'enabled'=>1, 'position'=>40, 'notnull'=>-1),
|
'email' => array('type'=>'varchar(255)', 'label'=>'Email', 'visible'=>1, 'enabled'=>1, 'position'=>40, 'notnull'=>-1),
|
||||||
'private' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'User', 'visible'=>-1, 'enabled'=>1, 'position'=>50, 'default'=>'0', 'notnull'=>1),
|
'private' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'User', 'visible'=>-1, 'enabled'=>1, 'position'=>50, 'default'=>'0', 'notnull'=>1),
|
||||||
'signature' => array('type'=>'text', 'label'=>'Signature', 'visible'=>3, 'enabled'=>1, 'position'=>400, 'notnull'=>-1, 'index'=>1,),
|
'signature' => array('type'=>'html', 'label'=>'Signature', 'visible'=>3, 'enabled'=>1, 'position'=>400, 'notnull'=>-1, 'index'=>1,),
|
||||||
'position' => array('type'=>'integer', 'label'=>'Position', 'visible'=>1, 'enabled'=>1, 'position'=>405, 'notnull'=>-1, 'index'=>1,),
|
'position' => array('type'=>'integer', 'label'=>'Position', 'visible'=>1, 'enabled'=>1, 'position'=>405, 'notnull'=>-1, 'index'=>1,),
|
||||||
'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'visible'=>-1, 'enabled'=>1, 'position'=>500, 'notnull'=>1,),
|
'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'visible'=>-1, 'enabled'=>1, 'position'=>500, 'notnull'=>1,),
|
||||||
'tms' => array('type'=>'timestamp', 'label'=>'DateModification', 'visible'=>-1, 'enabled'=>1, 'position'=>500, 'notnull'=>1,),
|
'tms' => array('type'=>'timestamp', 'label'=>'DateModification', 'visible'=>-1, 'enabled'=>1, 'position'=>500, 'notnull'=>1,),
|
||||||
|
|||||||
@ -1233,7 +1233,7 @@ class ExtraFields
|
|||||||
$InfoFieldList[4] = str_replace('$ID$', '0', $InfoFieldList[4]);
|
$InfoFieldList[4] = str_replace('$ID$', '0', $InfoFieldList[4]);
|
||||||
}
|
}
|
||||||
//We have to join on extrafield table
|
//We have to join on extrafield table
|
||||||
if (strpos($InfoFieldList[4], 'extra') !== false) {
|
if (strpos($InfoFieldList[4], 'extra.') !== false) {
|
||||||
$sql .= ' as main, '.$this->db->prefix().$InfoFieldList[0].'_extrafields as extra';
|
$sql .= ' as main, '.$this->db->prefix().$InfoFieldList[0].'_extrafields as extra';
|
||||||
$sqlwhere .= " WHERE extra.fk_object=main.".$InfoFieldList[2]." AND ".$InfoFieldList[4];
|
$sqlwhere .= " WHERE extra.fk_object=main.".$InfoFieldList[2]." AND ".$InfoFieldList[4];
|
||||||
} else {
|
} else {
|
||||||
@ -1690,7 +1690,7 @@ class ExtraFields
|
|||||||
|
|
||||||
$sql = "SELECT ".$keyList;
|
$sql = "SELECT ".$keyList;
|
||||||
$sql .= ' FROM '.$this->db->prefix().$InfoFieldList[0];
|
$sql .= ' FROM '.$this->db->prefix().$InfoFieldList[0];
|
||||||
if (!empty($InfoFieldList[4]) && strpos($InfoFieldList[4], 'extra') !== false) {
|
if (!empty($InfoFieldList[4]) && strpos($InfoFieldList[4], 'extra.') !== false) {
|
||||||
$sql .= ' as main';
|
$sql .= ' as main';
|
||||||
}
|
}
|
||||||
if ($selectkey == 'rowid' && empty($value)) {
|
if ($selectkey == 'rowid' && empty($value)) {
|
||||||
@ -1806,7 +1806,7 @@ class ExtraFields
|
|||||||
|
|
||||||
$sql = "SELECT ".$keyList;
|
$sql = "SELECT ".$keyList;
|
||||||
$sql .= " FROM ".$this->db->prefix().$InfoFieldList[0];
|
$sql .= " FROM ".$this->db->prefix().$InfoFieldList[0];
|
||||||
if (strpos($InfoFieldList[4], 'extra') !== false) {
|
if (strpos($InfoFieldList[4], 'extra.') !== false) {
|
||||||
$sql .= ' as main';
|
$sql .= ' as main';
|
||||||
}
|
}
|
||||||
// $sql.= " WHERE ".$selectkey."='".$this->db->escape($value)."'";
|
// $sql.= " WHERE ".$selectkey."='".$this->db->escape($value)."'";
|
||||||
@ -1975,21 +1975,27 @@ class ExtraFields
|
|||||||
if (!empty($extrafield_param) && is_array($extrafield_param)) {
|
if (!empty($extrafield_param) && is_array($extrafield_param)) {
|
||||||
$extrafield_param_list = array_keys($extrafield_param['options']);
|
$extrafield_param_list = array_keys($extrafield_param['options']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set $extrafield_collapse_display_value (do we have to collapse/expand the group after the separator)
|
||||||
$extrafield_collapse_display_value = -1;
|
$extrafield_collapse_display_value = -1;
|
||||||
$expand_display = false;
|
$expand_display = false;
|
||||||
if (is_array($extrafield_param_list) && count($extrafield_param_list) > 0) {
|
if (is_array($extrafield_param_list) && count($extrafield_param_list) > 0) {
|
||||||
$extrafield_collapse_display_value = intval($extrafield_param_list[0]);
|
$extrafield_collapse_display_value = intval($extrafield_param_list[0]);
|
||||||
$expand_display = ((isset($_COOKIE['DOLCOLLAPSE_'.$object->table_element.'_extrafields_'.$key]) || GETPOST('ignorecollapsesetup', 'int')) ? (empty($_COOKIE['DOLCOLLAPSE_'.$object->table_element.'_extrafields_'.$key]) ? false : true) : ($extrafield_collapse_display_value == 2 ? false : true));
|
$expand_display = ((isset($_COOKIE['DOLCOLLAPSE_'.$object->table_element.'_extrafields_'.$key]) || GETPOST('ignorecollapsesetup', 'int')) ? (empty($_COOKIE['DOLCOLLAPSE_'.$object->table_element.'_extrafields_'.$key]) ? false : true) : ($extrafield_collapse_display_value == 2 ? false : true));
|
||||||
}
|
}
|
||||||
|
$disabledcookiewrite = 0;
|
||||||
if ($mode == 'create') {
|
if ($mode == 'create') {
|
||||||
$extrafield_collapse_display_value = 0;
|
// On create mode, force separator group to not be collapsable
|
||||||
|
$extrafield_collapse_display_value = 1;
|
||||||
|
$expand_display = true; // We force group to be shown expanded
|
||||||
|
$disabledcookiewrite = 1; // We keep status of group unchanged into the cookie
|
||||||
}
|
}
|
||||||
|
|
||||||
$out = '<'.$tagtype.' id="trextrafieldseparator'.$key.(!empty($object->id)?'_'.$object->id:'').'" class="trextrafieldseparator trextrafieldseparator'.$key.(!empty($object->id)?'_'.$object->id:'').'">';
|
$out = '<'.$tagtype.' id="trextrafieldseparator'.$key.(!empty($object->id)?'_'.$object->id:'').'" class="trextrafieldseparator trextrafieldseparator'.$key.(!empty($object->id)?'_'.$object->id:'').'">';
|
||||||
$out .= '<'.$tagtype_dyn.' '.(!empty($colspan)?'colspan="' . $colspan . '"':'').'>';
|
$out .= '<'.$tagtype_dyn.' '.(!empty($colspan)?'colspan="' . $colspan . '"':'').'>';
|
||||||
// Some js code will be injected here to manage the collapsing of extrafields
|
// Some js code will be injected here to manage the collapsing of extrafields
|
||||||
// Output the picto
|
// Output the picto
|
||||||
$out .= '<span class="cursorpointer '.($extrafield_collapse_display_value == 0 ? 'fas fa-square opacitymedium' : 'far fa-'.(($expand_display ? 'minus' : 'plus').'-square')).'"></span>';
|
$out .= '<span class="'.($extrafield_collapse_display_value ? 'cursorpointer ' : '').($extrafield_collapse_display_value == 0 ? 'fas fa-square opacitymedium' : 'far fa-'.(($expand_display ? 'minus' : 'plus').'-square')).'"></span>';
|
||||||
$out .= ' ';
|
$out .= ' ';
|
||||||
$out .= '<strong>';
|
$out .= '<strong>';
|
||||||
$out .= $langs->trans($this->attributes[$object->table_element]['label'][$key]);
|
$out .= $langs->trans($this->attributes[$object->table_element]['label'][$key]);
|
||||||
@ -2004,10 +2010,11 @@ class ExtraFields
|
|||||||
// Set the collapse_display status to cookie in priority or if ignorecollapsesetup is 1, if cookie and ignorecollapsesetup not defined, use the setup.
|
// Set the collapse_display status to cookie in priority or if ignorecollapsesetup is 1, if cookie and ignorecollapsesetup not defined, use the setup.
|
||||||
$this->expand_display[$collapse_group] = $expand_display;
|
$this->expand_display[$collapse_group] = $expand_display;
|
||||||
|
|
||||||
if (!empty($conf->use_javascript_ajax) && $mode != 'create') {
|
if (!empty($conf->use_javascript_ajax)) {
|
||||||
$out .= '<!-- Add js script to manage the collapse/uncollapse of extrafields separators '.$key.' -->'."\n";
|
$out .= '<!-- Add js script to manage the collapse/uncollapse of extrafields separators '.$key.' -->'."\n";
|
||||||
$out .= '<script type="text/javascript">'."\n";
|
$out .= '<script type="text/javascript">'."\n";
|
||||||
$out .= 'jQuery(document).ready(function(){'."\n";
|
$out .= 'jQuery(document).ready(function(){'."\n";
|
||||||
|
if (empty($disabledcookiewrite)) {
|
||||||
if ($expand_display === false) {
|
if ($expand_display === false) {
|
||||||
$out .= ' console.log("Inject js for the collapsing of extrafield '.$key.' - hide");'."\n";
|
$out .= ' console.log("Inject js for the collapsing of extrafield '.$key.' - hide");'."\n";
|
||||||
$out .= ' jQuery(".trextrafields_collapse'.$collapse_group.'").hide();'."\n";
|
$out .= ' jQuery(".trextrafields_collapse'.$collapse_group.'").hide();'."\n";
|
||||||
@ -2015,8 +2022,9 @@ class ExtraFields
|
|||||||
$out .= ' console.log("Inject js for collapsing of extrafield '.$key.' - keep visible and set cookie");'."\n";
|
$out .= ' console.log("Inject js for collapsing of extrafield '.$key.' - keep visible and set cookie");'."\n";
|
||||||
$out .= ' document.cookie = "DOLCOLLAPSE_'.$object->table_element.'_extrafields_'.$key.'=1; path='.$_SERVER["PHP_SELF"].'"'."\n";
|
$out .= ' document.cookie = "DOLCOLLAPSE_'.$object->table_element.'_extrafields_'.$key.'=1; path='.$_SERVER["PHP_SELF"].'"'."\n";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
$out .= ' jQuery("#trextrafieldseparator'.$key.(!empty($object->id)?'_'.$object->id:'').'").click(function(){'."\n";
|
$out .= ' jQuery("#trextrafieldseparator'.$key.(!empty($object->id)?'_'.$object->id:'').'").click(function(){'."\n";
|
||||||
$out .= ' console.log("We click on collapse/uncollapse .trextrafields_collapse'.$collapse_group.'");'."\n";
|
$out .= ' console.log("We click on collapse/uncollapse to hide/show .trextrafields_collapse'.$collapse_group.'");'."\n";
|
||||||
$out .= ' jQuery(".trextrafields_collapse'.$collapse_group.'").toggle(100, function(){'."\n";
|
$out .= ' jQuery(".trextrafields_collapse'.$collapse_group.'").toggle(100, function(){'."\n";
|
||||||
$out .= ' if (jQuery(".trextrafields_collapse'.$collapse_group.'").is(":hidden")) {'."\n";
|
$out .= ' if (jQuery(".trextrafields_collapse'.$collapse_group.'").is(":hidden")) {'."\n";
|
||||||
$out .= ' jQuery("#trextrafieldseparator'.$key.(!empty($object->id)?'_'.$object->id:'').' '.$tagtype_dyn.' span").addClass("fa-plus-square").removeClass("fa-minus-square");'."\n";
|
$out .= ' jQuery("#trextrafieldseparator'.$key.(!empty($object->id)?'_'.$object->id:'').' '.$tagtype_dyn.' span").addClass("fa-plus-square").removeClass("fa-minus-square");'."\n";
|
||||||
|
|||||||
@ -5109,7 +5109,7 @@ class Form
|
|||||||
$more .= '</div></div>'."\n";
|
$more .= '</div></div>'."\n";
|
||||||
} elseif ($input['type'] == 'checkbox') {
|
} elseif ($input['type'] == 'checkbox') {
|
||||||
$more .= '<div class="tagtr">';
|
$more .= '<div class="tagtr">';
|
||||||
$more .= '<div class="tagtd'.(empty($input['tdclass']) ? '' : (' '.$input['tdclass'])).'">'.$input['label'].' </div><div class="tagtd">';
|
$more .= '<div class="tagtd'.(empty($input['tdclass']) ? '' : (' '.$input['tdclass'])).'"><label for="'.dol_escape_htmltag($input['name']).'">'.$input['label'].'</label></div><div class="tagtd">';
|
||||||
$more .= '<input type="checkbox" class="flat'.($morecss ? ' '.$morecss : '').'" id="'.dol_escape_htmltag($input['name']).'" name="'.dol_escape_htmltag($input['name']).'"'.$moreattr;
|
$more .= '<input type="checkbox" class="flat'.($morecss ? ' '.$morecss : '').'" id="'.dol_escape_htmltag($input['name']).'" name="'.dol_escape_htmltag($input['name']).'"'.$moreattr;
|
||||||
if (!is_bool($input['value']) && $input['value'] != 'false' && $input['value'] != '0' && $input['value'] != '') {
|
if (!is_bool($input['value']) && $input['value'] != 'false' && $input['value'] != '0' && $input['value'] != '') {
|
||||||
$more .= ' checked';
|
$more .= ' checked';
|
||||||
@ -7801,7 +7801,7 @@ class Form
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to forge a SQL criteria
|
* Function to forge a SQL criteria from a Dolibarr filter syntax string.
|
||||||
*
|
*
|
||||||
* @param array $matches Array of found string by regex search. Example: "t.ref:like:'SO-%'" or "t.date_creation:<:'20160101'" or "t.nature:is:NULL"
|
* @param array $matches Array of found string by regex search. Example: "t.ref:like:'SO-%'" or "t.date_creation:<:'20160101'" or "t.nature:is:NULL"
|
||||||
* @return string Forged criteria. Example: "t.field like 'abc%'"
|
* @return string Forged criteria. Example: "t.field like 'abc%'"
|
||||||
@ -7816,17 +7816,30 @@ class Form
|
|||||||
}
|
}
|
||||||
$tmp = explode(':', $matches[1]);
|
$tmp = explode(':', $matches[1]);
|
||||||
if (count($tmp) < 3) {
|
if (count($tmp) < 3) {
|
||||||
return '';
|
return '1=2'; // An always false request
|
||||||
}
|
}
|
||||||
|
|
||||||
$tmpescaped = $tmp[2];
|
$tmpescaped = $tmp[2];
|
||||||
$regbis = array();
|
$regbis = array();
|
||||||
|
|
||||||
if (preg_match('/^\'(.*)\'$/', $tmpescaped, $regbis)) {
|
if (preg_match('/^\'(.*)\'$/', $tmpescaped, $regbis)) {
|
||||||
$tmpescaped = "'".$db->escape($regbis[1])."'";
|
$tmpescaped = "'".$db->escape($regbis[1])."'";
|
||||||
} else {
|
} else {
|
||||||
$tmpescaped = $db->escape($tmpescaped);
|
$tmpescaped = $db->escape($tmpescaped);
|
||||||
}
|
}
|
||||||
return $db->escape($tmp[0]).' '.strtoupper($db->escape($tmp[1]))." ".$tmpescaped;
|
|
||||||
|
if ($tmp[1] == '!=') {
|
||||||
|
$tmp[1] = '<>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (preg_match('/[\(\)]/', $tmp[0])) {
|
||||||
|
return '1=2'; // An always false request
|
||||||
|
}
|
||||||
|
if (! in_array($tmp[1], array('<', '>', '<>', 'is', 'isnot', '=', 'like'))) {
|
||||||
|
return '1=2'; // An always false request
|
||||||
|
}
|
||||||
|
|
||||||
|
return $db->escape($tmp[0]).' '.strtoupper($db->escape($tmp[1])).' '.$tmpescaped;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -39,6 +39,9 @@ class FormProjets
|
|||||||
*/
|
*/
|
||||||
public $error = '';
|
public $error = '';
|
||||||
|
|
||||||
|
public $errors = array();
|
||||||
|
|
||||||
|
|
||||||
public $nboftasks;
|
public $nboftasks;
|
||||||
|
|
||||||
|
|
||||||
@ -622,6 +625,8 @@ class FormProjets
|
|||||||
if ($resql) {
|
if ($resql) {
|
||||||
$num = $this->db->num_rows($resql);
|
$num = $this->db->num_rows($resql);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
$sellist = '';
|
||||||
|
|
||||||
if ($num > 0) {
|
if ($num > 0) {
|
||||||
$sellist = '<select class="flat elementselect css'.$table_element.($morecss ? ' '.$morecss : '').'" name="elementselect">';
|
$sellist = '<select class="flat elementselect css'.$table_element.($morecss ? ' '.$morecss : '').'" name="elementselect">';
|
||||||
$sellist .= '<option value="-1"'.($placeholder ? ' class="optiongrey"' : '').'>'.$placeholder.'</option>';
|
$sellist .= '<option value="-1"'.($placeholder ? ' class="optiongrey"' : '').'>'.$placeholder.'</option>';
|
||||||
|
|||||||
@ -1291,7 +1291,6 @@ class Ldap
|
|||||||
$this->firstname = $this->convToOutputCharset($result[0][$this->attr_firstname][0], $this->ldapcharset);
|
$this->firstname = $this->convToOutputCharset($result[0][$this->attr_firstname][0], $this->ldapcharset);
|
||||||
$this->login = $this->convToOutputCharset($result[0][$this->attr_login][0], $this->ldapcharset);
|
$this->login = $this->convToOutputCharset($result[0][$this->attr_login][0], $this->ldapcharset);
|
||||||
$this->phone = $this->convToOutputCharset($result[0][$this->attr_phone][0], $this->ldapcharset);
|
$this->phone = $this->convToOutputCharset($result[0][$this->attr_phone][0], $this->ldapcharset);
|
||||||
$this->skype = $this->convToOutputCharset($result[0][$this->attr_skype][0], $this->ldapcharset);
|
|
||||||
$this->fax = $this->convToOutputCharset($result[0][$this->attr_fax][0], $this->ldapcharset);
|
$this->fax = $this->convToOutputCharset($result[0][$this->attr_fax][0], $this->ldapcharset);
|
||||||
$this->mail = $this->convToOutputCharset($result[0][$this->attr_mail][0], $this->ldapcharset);
|
$this->mail = $this->convToOutputCharset($result[0][$this->attr_mail][0], $this->ldapcharset);
|
||||||
$this->mobile = $this->convToOutputCharset($result[0][$this->attr_mobile][0], $this->ldapcharset);
|
$this->mobile = $this->convToOutputCharset($result[0][$this->attr_mobile][0], $this->ldapcharset);
|
||||||
|
|||||||
@ -417,13 +417,16 @@ class Utils
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// TODO Replace with Utils->executeCLI() function but
|
|
||||||
// we must first introduce the variant with $lowmemorydump into this method.
|
|
||||||
if ($execmethod == 1) {
|
if ($execmethod == 1) {
|
||||||
$output_arr = array();
|
$output_arr = array();
|
||||||
$retval = null;
|
$retval = null;
|
||||||
|
|
||||||
exec($fullcommandclear, $output_arr, $retval);
|
exec($fullcommandclear, $output_arr, $retval);
|
||||||
|
// TODO Replace this exec with Utils->executeCLI() function.
|
||||||
|
// We must check that the case for $lowmemorydump works too...
|
||||||
|
//$utils = new Utils($db);
|
||||||
|
//$outputfile = $conf->admin->dir_temp.'/dump.tmp';
|
||||||
|
//$utils->executeCLI($fullcommandclear, $outputfile, 0);
|
||||||
|
|
||||||
if ($retval != 0) {
|
if ($retval != 0) {
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
@ -438,6 +441,8 @@ class Utils
|
|||||||
if ($i == 1 && preg_match('/Warning.*Using a password/i', $read)) {
|
if ($i == 1 && preg_match('/Warning.*Using a password/i', $read)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
// Now check into the result file, that the file end with "-- Dump completed"
|
||||||
|
// This is possible only if $output_arr is the clear dump file, so not possible with $lowmemorydump set because file is already compressed.
|
||||||
if (!$lowmemorydump) {
|
if (!$lowmemorydump) {
|
||||||
fwrite($handle, $read.($execmethod == 2 ? '' : "\n"));
|
fwrite($handle, $read.($execmethod == 2 ? '' : "\n"));
|
||||||
if (preg_match('/'.preg_quote('-- Dump completed', '/').'/i', $read)) {
|
if (preg_match('/'.preg_quote('-- Dump completed', '/').'/i', $read)) {
|
||||||
|
|||||||
@ -705,7 +705,7 @@ class DoliDBMysqli extends DoliDB
|
|||||||
}
|
}
|
||||||
$tmpdatabase = preg_replace('/[^a-z0-9\.\-\_]/i', '', $database);
|
$tmpdatabase = preg_replace('/[^a-z0-9\.\-\_]/i', '', $database);
|
||||||
|
|
||||||
$sql = "SHOW TABLES FROM ".$tmpdatabase." ".$like.";";
|
$sql = "SHOW TABLES FROM `".$tmpdatabase."` ".$like.";";
|
||||||
//print $sql;
|
//print $sql;
|
||||||
$result = $this->query($sql);
|
$result = $this->query($sql);
|
||||||
if ($result) {
|
if ($result) {
|
||||||
|
|||||||
@ -316,7 +316,7 @@ class DoliDBSqlite3 extends DoliDB
|
|||||||
* @param string $passwd password
|
* @param string $passwd password
|
||||||
* @param string $name name of database (not used for mysql, used for pgsql)
|
* @param string $name name of database (not used for mysql, used for pgsql)
|
||||||
* @param integer $port Port of database server
|
* @param integer $port Port of database server
|
||||||
* @return SQLite3 Database access handler
|
* @return SQLite3|string Database access handler
|
||||||
* @see close()
|
* @see close()
|
||||||
*/
|
*/
|
||||||
public function connect($host, $login, $passwd, $name, $port = 0)
|
public function connect($host, $login, $passwd, $name, $port = 0)
|
||||||
|
|||||||
@ -99,12 +99,12 @@ function first_execution() {
|
|||||||
function check_events() {
|
function check_events() {
|
||||||
if (Notification.permission === "granted")
|
if (Notification.permission === "granted")
|
||||||
{
|
{
|
||||||
var newToken = 'notrequired';
|
var currentToken = 'notrequired';
|
||||||
const allMeta = document.getElementsByTagName("meta");
|
const allMeta = document.getElementsByTagName("meta");
|
||||||
for (let i = 0; i < allMeta.length; i++) {
|
for (let i = 0; i < allMeta.length; i++) {
|
||||||
if (allMeta[i].getAttribute("name") == 'anti-csrf-token') {
|
if (allMeta[i].getAttribute("name") == 'anti-csrf-currenttoken') {
|
||||||
newToken = allMeta[i].getAttribute('content');
|
currentToken = allMeta[i].getAttribute('content');
|
||||||
console.log("newToken in page = "+newToken);
|
console.log("currentToken in page = "+currentToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
time_js_next_test += time_auto_update;
|
time_js_next_test += time_auto_update;
|
||||||
@ -113,7 +113,7 @@ function check_events() {
|
|||||||
$.ajax("<?php print DOL_URL_ROOT.'/core/ajax/check_notifications.php'; ?>", {
|
$.ajax("<?php print DOL_URL_ROOT.'/core/ajax/check_notifications.php'; ?>", {
|
||||||
type: "post", // Usually post or get
|
type: "post", // Usually post or get
|
||||||
async: true,
|
async: true,
|
||||||
data: { time_js_next_test: time_js_next_test, forcechecknow: 1, token: newToken },
|
data: { time_js_next_test: time_js_next_test, forcechecknow: 1, token: currentToken },
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
success: function (result) {
|
success: function (result) {
|
||||||
//console.log(result);
|
//console.log(result);
|
||||||
@ -181,7 +181,7 @@ function check_events() {
|
|||||||
$.ajax("<?php print DOL_URL_ROOT.'/core/ajax/check_notifications.php?action=stopreminder&listofreminderids='; ?>"+listofreminderids, {
|
$.ajax("<?php print DOL_URL_ROOT.'/core/ajax/check_notifications.php?action=stopreminder&listofreminderids='; ?>"+listofreminderids, {
|
||||||
type: "POST", // Usually post or get
|
type: "POST", // Usually post or get
|
||||||
async: true,
|
async: true,
|
||||||
data: { time_js_next_test: time_js_next_test, token: newToken }
|
data: { time_js_next_test: time_js_next_test, token: currentToken }
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
console.log("No reminder to do found, next search at "+time_js_next_test);
|
console.log("No reminder to do found, next search at "+time_js_next_test);
|
||||||
|
|||||||
@ -698,9 +698,10 @@ function dolibarr_set_const($db, $name, $value, $type = 'chaine', $visible = 0,
|
|||||||
*
|
*
|
||||||
* @param int $nbofactivatedmodules Number if activated modules
|
* @param int $nbofactivatedmodules Number if activated modules
|
||||||
* @param int $nboftotalmodules Nb of total modules
|
* @param int $nboftotalmodules Nb of total modules
|
||||||
|
* @param int $nbmodulesnotautoenabled Nb of modules not auto enabled that are activated
|
||||||
* @return array Array of tabs to show
|
* @return array Array of tabs to show
|
||||||
*/
|
*/
|
||||||
function modules_prepare_head($nbofactivatedmodules, $nboftotalmodules)
|
function modules_prepare_head($nbofactivatedmodules, $nboftotalmodules, $nbmodulesnotautoenabled)
|
||||||
{
|
{
|
||||||
global $langs, $conf, $user, $form;
|
global $langs, $conf, $user, $form;
|
||||||
|
|
||||||
@ -711,7 +712,7 @@ function modules_prepare_head($nbofactivatedmodules, $nboftotalmodules)
|
|||||||
$head = array();
|
$head = array();
|
||||||
$mode = empty($conf->global->MAIN_MODULE_SETUP_ON_LIST_BY_DEFAULT) ? 'commonkanban' : $conf->global->MAIN_MODULE_SETUP_ON_LIST_BY_DEFAULT;
|
$mode = empty($conf->global->MAIN_MODULE_SETUP_ON_LIST_BY_DEFAULT) ? 'commonkanban' : $conf->global->MAIN_MODULE_SETUP_ON_LIST_BY_DEFAULT;
|
||||||
$head[$h][0] = DOL_URL_ROOT."/admin/modules.php?mode=".$mode;
|
$head[$h][0] = DOL_URL_ROOT."/admin/modules.php?mode=".$mode;
|
||||||
if ($nbofactivatedmodules <= (empty($conf->global->MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING) ? 1 : $conf->global->MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING)) { // If only minimal initial modules enabled)
|
if ($nbmodulesnotautoenabled <= getDolGlobalInt('MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING', 1)) { // If only minimal initial modules enabled)
|
||||||
//$head[$h][1] = $form->textwithpicto($langs->trans("AvailableModules"), $desc);
|
//$head[$h][1] = $form->textwithpicto($langs->trans("AvailableModules"), $desc);
|
||||||
$head[$h][1] = $langs->trans("AvailableModules");
|
$head[$h][1] = $langs->trans("AvailableModules");
|
||||||
$head[$h][1] .= $form->textwithpicto('', $langs->trans("YouMustEnableOneModule").'.<br><br><span class="opacitymedium">'.$desc.'</span>', 1, 'warning');
|
$head[$h][1] .= $form->textwithpicto('', $langs->trans("YouMustEnableOneModule").'.<br><br><span class="opacitymedium">'.$desc.'</span>', 1, 'warning');
|
||||||
|
|||||||
@ -1011,7 +1011,7 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '', $showuserl
|
|||||||
'name' =>array('type'=>'varchar(128)', 'label'=>'Name', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>1, 'index'=>1, 'position'=>10, 'searchall'=>1),
|
'name' =>array('type'=>'varchar(128)', 'label'=>'Name', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>1, 'index'=>1, 'position'=>10, 'searchall'=>1),
|
||||||
'poste' =>array('type'=>'varchar(128)', 'label'=>'PostOrFunction', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>2, 'index'=>1, 'position'=>20),
|
'poste' =>array('type'=>'varchar(128)', 'label'=>'PostOrFunction', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>2, 'index'=>1, 'position'=>20),
|
||||||
'address' =>array('type'=>'varchar(128)', 'label'=>'Address', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>3, 'index'=>1, 'position'=>30),
|
'address' =>array('type'=>'varchar(128)', 'label'=>'Address', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>3, 'index'=>1, 'position'=>30),
|
||||||
'note_private' =>array('type'=>'text', 'label'=>'NotePrivate', 'enabled'=>(!getDolGlobalInt('MAIN_LIST_HIDE_PRIVATE_NOTES')), 'visible'=>3, 'position'=>35),
|
'note_private' =>array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>(!getDolGlobalInt('MAIN_LIST_HIDE_PRIVATE_NOTES')), 'visible'=>3, 'position'=>35),
|
||||||
'role' =>array('type'=>'checkbox', 'label'=>'Role', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>4, 'index'=>1, 'position'=>40),
|
'role' =>array('type'=>'checkbox', 'label'=>'Role', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>4, 'index'=>1, 'position'=>40),
|
||||||
'birthday' =>array('type'=>'date', 'label'=>'Birthday', 'enabled'=>1, 'visible'=>-1, 'notnull'=> 0, 'position'=>45),
|
'birthday' =>array('type'=>'date', 'label'=>'Birthday', 'enabled'=>1, 'visible'=>-1, 'notnull'=> 0, 'position'=>45),
|
||||||
'statut' =>array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'default'=>0, 'index'=>1, 'position'=>50, 'arrayofkeyval'=>array(0=>$contactstatic->LibStatut(0, 1), 1=>$contactstatic->LibStatut(1, 1))),
|
'statut' =>array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'default'=>0, 'index'=>1, 'position'=>50, 'arrayofkeyval'=>array(0=>$contactstatic->LibStatut(0, 1), 1=>$contactstatic->LibStatut(1, 1))),
|
||||||
@ -1132,9 +1132,10 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '', $showuserl
|
|||||||
$extrafieldsobjectkey = $contactstatic->table_element;
|
$extrafieldsobjectkey = $contactstatic->table_element;
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
|
||||||
|
|
||||||
$sql = "SELECT t.rowid, t.entity, t.lastname, t.firstname, t.fk_pays as country_id, t.civility, t.poste, t.phone as phone_pro, t.phone_mobile, t.phone_perso, t.fax, t.email, t.socialnetworks, t.statut, t.photo,";
|
$sql = "SELECT t.rowid, t.entity, t.lastname, t.firstname, t.fk_pays as country_id, t.civility, t.poste,";
|
||||||
$sql .= " t.civility as civility_id, t.address, t.zip, t.town, t.birthday";
|
$sql .= " t.phone as phone_pro, t.phone_mobile, t.phone_perso, t.fax, t.email, t.socialnetworks, t.statut, t.photo, t.fk_soc,";
|
||||||
$sql .= ", t.note_private";
|
$sql .= " t.civility as civility_id, t.address, t.zip, t.town, t.birthday,";
|
||||||
|
$sql .= " t.note_private";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."socpeople as t";
|
$sql .= " FROM ".MAIN_DB_PREFIX."socpeople as t";
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople_extrafields as ef on (t.rowid = ef.fk_object)";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople_extrafields as ef on (t.rowid = ef.fk_object)";
|
||||||
$sql .= " WHERE t.fk_soc = ".((int) $object->id);
|
$sql .= " WHERE t.fk_soc = ".((int) $object->id);
|
||||||
@ -1300,6 +1301,7 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '', $showuserl
|
|||||||
$contactstatic->email = $obj->email;
|
$contactstatic->email = $obj->email;
|
||||||
$contactstatic->socialnetworks = $obj->socialnetworks;
|
$contactstatic->socialnetworks = $obj->socialnetworks;
|
||||||
$contactstatic->photo = $obj->photo;
|
$contactstatic->photo = $obj->photo;
|
||||||
|
$contactstatic->fk_soc = $obj->fk_soc;
|
||||||
$contactstatic->entity = $obj->entity;
|
$contactstatic->entity = $obj->entity;
|
||||||
|
|
||||||
$country_code = getCountry($obj->country_id, 2);
|
$country_code = getCountry($obj->country_id, 2);
|
||||||
|
|||||||
@ -515,7 +515,7 @@ function GETPOSTISARRAY($paramname, $method = 0)
|
|||||||
* 'aZ09'=check it's simple alpha string (recommended for keys)
|
* 'aZ09'=check it's simple alpha string (recommended for keys)
|
||||||
* 'aZ09comma'=check it's a string for a sortfield or sortorder
|
* 'aZ09comma'=check it's a string for a sortfield or sortorder
|
||||||
* 'san_alpha'=Use filter_var with FILTER_SANITIZE_STRING (do not use this for free text string)
|
* 'san_alpha'=Use filter_var with FILTER_SANITIZE_STRING (do not use this for free text string)
|
||||||
* 'nohtml'=check there is no html content and no " and no ../
|
* 'nohtml'=check there is no html content
|
||||||
* 'restricthtml'=check html content is restricted to some tags only
|
* 'restricthtml'=check html content is restricted to some tags only
|
||||||
* 'custom'= custom filter specify $filter and $options)
|
* 'custom'= custom filter specify $filter and $options)
|
||||||
* @param int $method Type of method (0 = get then post, 1 = only get, 2 = only post, 3 = post then get)
|
* @param int $method Type of method (0 = get then post, 1 = only get, 2 = only post, 3 = post then get)
|
||||||
@ -1328,6 +1328,10 @@ function dol_string_unaccent($str)
|
|||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
|
if (is_null($str)) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
if (utf8_check($str)) {
|
if (utf8_check($str)) {
|
||||||
if (extension_loaded('intl') && !empty($conf->global->MAIN_UNACCENT_USE_TRANSLITERATOR)) {
|
if (extension_loaded('intl') && !empty($conf->global->MAIN_UNACCENT_USE_TRANSLITERATOR)) {
|
||||||
$transliterator = \Transliterator::createFromRules(':: Any-Latin; :: Latin-ASCII; :: NFD; :: [:Nonspacing Mark:] Remove; :: NFC;', \Transliterator::FORWARD);
|
$transliterator = \Transliterator::createFromRules(':: Any-Latin; :: Latin-ASCII; :: NFD; :: [:Nonspacing Mark:] Remove; :: NFC;', \Transliterator::FORWARD);
|
||||||
@ -1440,6 +1444,10 @@ function dol_string_nounprintableascii($str, $removetabcrlf = 1)
|
|||||||
*/
|
*/
|
||||||
function dol_escape_js($stringtoescape, $mode = 0, $noescapebackslashn = 0)
|
function dol_escape_js($stringtoescape, $mode = 0, $noescapebackslashn = 0)
|
||||||
{
|
{
|
||||||
|
if (is_null($stringtoescape)) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
// escape quotes and backslashes, newlines, etc.
|
// escape quotes and backslashes, newlines, etc.
|
||||||
$substitjs = array("'"=>"\\'", "\r"=>'\\r');
|
$substitjs = array("'"=>"\\'", "\r"=>'\\r');
|
||||||
//$substitjs['</']='<\/'; // We removed this. Should be useless.
|
//$substitjs['</']='<\/'; // We removed this. Should be useless.
|
||||||
@ -5018,8 +5026,7 @@ function dol_print_error($db = '', $error = '', $errors = null)
|
|||||||
$out .= "<br>\n";
|
$out .= "<br>\n";
|
||||||
$syslog .= "url=".dol_escape_htmltag($_SERVER["REQUEST_URI"]);
|
$syslog .= "url=".dol_escape_htmltag($_SERVER["REQUEST_URI"]);
|
||||||
$syslog .= ", query_string=".dol_escape_htmltag($_SERVER["QUERY_STRING"]);
|
$syslog .= ", query_string=".dol_escape_htmltag($_SERVER["QUERY_STRING"]);
|
||||||
} else // Mode CLI
|
} else { // Mode CLI
|
||||||
{
|
|
||||||
$out .= '> '.$langs->transnoentities("ErrorInternalErrorDetected").":\n".$argv[0]."\n";
|
$out .= '> '.$langs->transnoentities("ErrorInternalErrorDetected").":\n".$argv[0]."\n";
|
||||||
$syslog .= "pid=".dol_getmypid();
|
$syslog .= "pid=".dol_getmypid();
|
||||||
}
|
}
|
||||||
@ -5031,12 +5038,15 @@ function dol_print_error($db = '', $error = '', $errors = null)
|
|||||||
if (is_object($db)) {
|
if (is_object($db)) {
|
||||||
if ($_SERVER['DOCUMENT_ROOT']) { // Mode web
|
if ($_SERVER['DOCUMENT_ROOT']) { // Mode web
|
||||||
$out .= "<b>".$langs->trans("DatabaseTypeManager").":</b> ".$db->type."<br>\n";
|
$out .= "<b>".$langs->trans("DatabaseTypeManager").":</b> ".$db->type."<br>\n";
|
||||||
$out .= "<b>".$langs->trans("RequestLastAccessInError").":</b> ".($db->lastqueryerror() ? dol_escape_htmltag($db->lastqueryerror()) : $langs->trans("ErrorNoRequestInError"))."<br>\n";
|
$lastqueryerror = $db->lastqueryerror();
|
||||||
|
if (!utf8_check($lastqueryerror)) {
|
||||||
|
$lastqueryerror = "SQL error string is not a valid UTF8 string. We can't show it.";
|
||||||
|
}
|
||||||
|
$out .= "<b>".$langs->trans("RequestLastAccessInError").":</b> ".($lastqueryerror ? dol_escape_htmltag($lastqueryerror) : $langs->trans("ErrorNoRequestInError"))."<br>\n";
|
||||||
$out .= "<b>".$langs->trans("ReturnCodeLastAccessInError").":</b> ".($db->lasterrno() ? dol_escape_htmltag($db->lasterrno()) : $langs->trans("ErrorNoRequestInError"))."<br>\n";
|
$out .= "<b>".$langs->trans("ReturnCodeLastAccessInError").":</b> ".($db->lasterrno() ? dol_escape_htmltag($db->lasterrno()) : $langs->trans("ErrorNoRequestInError"))."<br>\n";
|
||||||
$out .= "<b>".$langs->trans("InformationLastAccessInError").":</b> ".($db->lasterror() ? dol_escape_htmltag($db->lasterror()) : $langs->trans("ErrorNoRequestInError"))."<br>\n";
|
$out .= "<b>".$langs->trans("InformationLastAccessInError").":</b> ".($db->lasterror() ? dol_escape_htmltag($db->lasterror()) : $langs->trans("ErrorNoRequestInError"))."<br>\n";
|
||||||
$out .= "<br>\n";
|
$out .= "<br>\n";
|
||||||
} else // Mode CLI
|
} else { // Mode CLI
|
||||||
{
|
|
||||||
// No dol_escape_htmltag for output, we are in CLI mode
|
// No dol_escape_htmltag for output, we are in CLI mode
|
||||||
$out .= '> '.$langs->transnoentities("DatabaseTypeManager").":\n".$db->type."\n";
|
$out .= '> '.$langs->transnoentities("DatabaseTypeManager").":\n".$db->type."\n";
|
||||||
$out .= '> '.$langs->transnoentities("RequestLastAccessInError").":\n".($db->lastqueryerror() ? $db->lastqueryerror() : $langs->transnoentities("ErrorNoRequestInError"))."\n";
|
$out .= '> '.$langs->transnoentities("RequestLastAccessInError").":\n".($db->lastqueryerror() ? $db->lastqueryerror() : $langs->transnoentities("ErrorNoRequestInError"))."\n";
|
||||||
@ -7169,6 +7179,10 @@ function dolGetFirstLineOfText($text, $nboflines = 1, $charset = 'UTF-8')
|
|||||||
*/
|
*/
|
||||||
function dol_nl2br($stringtoencode, $nl2brmode = 0, $forxml = false)
|
function dol_nl2br($stringtoencode, $nl2brmode = 0, $forxml = false)
|
||||||
{
|
{
|
||||||
|
if (is_null($stringtoencode)) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
if (!$nl2brmode) {
|
if (!$nl2brmode) {
|
||||||
return nl2br($stringtoencode, $forxml);
|
return nl2br($stringtoencode, $forxml);
|
||||||
} else {
|
} else {
|
||||||
@ -8945,13 +8959,16 @@ function dol_eval($s, $returnvalue = 0, $hideerrors = 1, $onlysimplestring = '1'
|
|||||||
// Only global variables can be changed by eval function and returned to caller
|
// Only global variables can be changed by eval function and returned to caller
|
||||||
global $db, $langs, $user, $conf, $website, $websitepage;
|
global $db, $langs, $user, $conf, $website, $websitepage;
|
||||||
global $action, $mainmenu, $leftmenu;
|
global $action, $mainmenu, $leftmenu;
|
||||||
|
global $mysoc;
|
||||||
|
global $objectoffield;
|
||||||
|
|
||||||
|
// Old variables used
|
||||||
global $rights;
|
global $rights;
|
||||||
global $object;
|
global $object;
|
||||||
global $mysoc;
|
|
||||||
|
|
||||||
global $obj; // To get $obj used into list when dol_eval is used for computed fields and $obj is not yet $object
|
global $obj; // To get $obj used into list when dol_eval is used for computed fields and $obj is not yet $object
|
||||||
global $soc; // For backward compatibility
|
global $soc; // For backward compatibility
|
||||||
|
|
||||||
|
try {
|
||||||
// Test on dangerous char (used for RCE), we allow only characters to make PHP variable testing
|
// Test on dangerous char (used for RCE), we allow only characters to make PHP variable testing
|
||||||
if ($onlysimplestring == '1') {
|
if ($onlysimplestring == '1') {
|
||||||
// We must accept: '1 && getDolGlobalInt("doesnotexist1") && $conf->global->MAIN_FEATURES_LEVEL'
|
// We must accept: '1 && getDolGlobalInt("doesnotexist1") && $conf->global->MAIN_FEATURES_LEVEL'
|
||||||
@ -9045,6 +9062,13 @@ function dol_eval($s, $returnvalue = 0, $hideerrors = 1, $onlysimplestring = '1'
|
|||||||
eval($s);
|
eval($s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (Error $e) {
|
||||||
|
$error = 'Caught error : ';
|
||||||
|
$error .= $e->getMessage() . ', ';
|
||||||
|
$error .= 'Trace : ';
|
||||||
|
$error .= json_encode($e->getTrace());
|
||||||
|
error_log($error, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -11929,8 +11953,8 @@ function show_actions_messaging($conf, $langs, $db, $filterobj, $objcon = '', $n
|
|||||||
|
|
||||||
'contact_id'=>$obj->fk_contact,
|
'contact_id'=>$obj->fk_contact,
|
||||||
'socpeopleassigned' => $contactaction->socpeopleassigned,
|
'socpeopleassigned' => $contactaction->socpeopleassigned,
|
||||||
'lastname'=>$obj->lastname,
|
'lastname' => (empty($obj->lastname) ? '' : $obj->lastname),
|
||||||
'firstname'=>$obj->firstname,
|
'firstname' => (empty($obj->firstname) ? '' : $obj->firstname),
|
||||||
'fk_element'=>$obj->fk_element,
|
'fk_element'=>$obj->fk_element,
|
||||||
'elementtype'=>$obj->elementtype,
|
'elementtype'=>$obj->elementtype,
|
||||||
// Type of event
|
// Type of event
|
||||||
|
|||||||
@ -107,10 +107,14 @@ function getURLContent($url, $postorget = 'GET', $param = '', $followlocation =
|
|||||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, empty($conf->global->MAIN_USE_CONNECT_TIMEOUT) ? 5 : $conf->global->MAIN_USE_CONNECT_TIMEOUT);
|
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, empty($conf->global->MAIN_USE_CONNECT_TIMEOUT) ? 5 : $conf->global->MAIN_USE_CONNECT_TIMEOUT);
|
||||||
curl_setopt($ch, CURLOPT_TIMEOUT, empty($conf->global->MAIN_USE_RESPONSE_TIMEOUT) ? 30 : $conf->global->MAIN_USE_RESPONSE_TIMEOUT);
|
curl_setopt($ch, CURLOPT_TIMEOUT, empty($conf->global->MAIN_USE_RESPONSE_TIMEOUT) ? 30 : $conf->global->MAIN_USE_RESPONSE_TIMEOUT);
|
||||||
|
|
||||||
/*
|
// limit size of downloaded files. TODO Add MAIN_SECURITY_MAXFILESIZE_DOWNLOADED
|
||||||
if ($maxsize) {
|
$maxsize = getDolGlobalInt('MAIN_SECURITY_MAXFILESIZE_DOWNLOADED');
|
||||||
|
if ($maxsize && defined('CURLOPT_MAXFILESIZE_LARGE')) {
|
||||||
curl_setopt($ch, CURLOPT_MAXFILESIZE_LARGE, $maxsize);
|
curl_setopt($ch, CURLOPT_MAXFILESIZE_LARGE, $maxsize);
|
||||||
} */
|
}
|
||||||
|
if ($maxsize && defined('CURLOPT_MAXFILESIZE')) {
|
||||||
|
curl_setopt($ch, CURLOPT_MAXFILESIZE, $maxsize);
|
||||||
|
}
|
||||||
|
|
||||||
//curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true); // PHP 5.5
|
//curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true); // PHP 5.5
|
||||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // We want response
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // We want response
|
||||||
|
|||||||
@ -280,8 +280,9 @@ function supplier_invoice_rec_prepare_head($object)
|
|||||||
function getNumberInvoicesPieChart($mode)
|
function getNumberInvoicesPieChart($mode)
|
||||||
{
|
{
|
||||||
global $conf, $db, $langs, $user;
|
global $conf, $db, $langs, $user;
|
||||||
|
|
||||||
if (($mode == 'customers' && isModEnabled('facture') && !empty($user->rights->facture->lire))
|
if (($mode == 'customers' && isModEnabled('facture') && !empty($user->rights->facture->lire))
|
||||||
|| ($mode = 'suppliers') && (isModEnabled('fournisseur') || isModEnabled('supplier_invoice')) && !empty($user->rights->facture->lire)
|
|| ($mode == 'suppliers' && (isModEnabled('fournisseur') || isModEnabled('supplier_invoice')) && !empty($user->rights->facture->lire))
|
||||||
) {
|
) {
|
||||||
include DOL_DOCUMENT_ROOT.'/theme/'.$conf->theme.'/theme_vars.inc.php';
|
include DOL_DOCUMENT_ROOT.'/theme/'.$conf->theme.'/theme_vars.inc.php';
|
||||||
|
|
||||||
@ -406,7 +407,9 @@ function getNumberInvoicesPieChart($mode)
|
|||||||
dol_print_error($db);
|
dol_print_error($db);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a HTML table that contains a list with customer invoice drafts
|
* Return a HTML table that contains a list with customer invoice drafts
|
||||||
*
|
*
|
||||||
@ -418,9 +421,11 @@ function getCustomerInvoiceDraftTable($maxCount = 500, $socid = 0)
|
|||||||
{
|
{
|
||||||
global $conf, $db, $langs, $user, $hookmanager;
|
global $conf, $db, $langs, $user, $hookmanager;
|
||||||
|
|
||||||
|
$result = '';
|
||||||
|
|
||||||
|
if (isModEnabled('facture') && !empty($user->rights->facture->lire)) {
|
||||||
$maxofloop = (empty($conf->global->MAIN_MAXLIST_OVERLOAD) ? 500 : $conf->global->MAIN_MAXLIST_OVERLOAD);
|
$maxofloop = (empty($conf->global->MAIN_MAXLIST_OVERLOAD) ? 500 : $conf->global->MAIN_MAXLIST_OVERLOAD);
|
||||||
|
|
||||||
$result = '';
|
|
||||||
$tmpinvoice = new Facture($db);
|
$tmpinvoice = new Facture($db);
|
||||||
|
|
||||||
$sql = "SELECT f.rowid, f.ref, f.datef as date, f.total_ht, f.total_tva, f.total_ttc, f.ref_client";
|
$sql = "SELECT f.rowid, f.ref, f.datef as date, f.total_ht, f.total_tva, f.total_ttc, f.ref_client";
|
||||||
@ -550,6 +555,7 @@ function getCustomerInvoiceDraftTable($maxCount = 500, $socid = 0)
|
|||||||
} else {
|
} else {
|
||||||
dol_print_error($db);
|
dol_print_error($db);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
@ -565,9 +571,11 @@ function getDraftSupplierTable($maxCount = 500, $socid = 0)
|
|||||||
{
|
{
|
||||||
global $conf, $db, $langs, $user, $hookmanager;
|
global $conf, $db, $langs, $user, $hookmanager;
|
||||||
|
|
||||||
|
$result = '';
|
||||||
|
|
||||||
|
if ((isModEnabled('fournisseur') || isModEnabled('supplier_invoice')) && !empty($user->rights->facture->lire)) {
|
||||||
$maxofloop = (empty($conf->global->MAIN_MAXLIST_OVERLOAD) ? 500 : $conf->global->MAIN_MAXLIST_OVERLOAD);
|
$maxofloop = (empty($conf->global->MAIN_MAXLIST_OVERLOAD) ? 500 : $conf->global->MAIN_MAXLIST_OVERLOAD);
|
||||||
|
|
||||||
$result = '';
|
|
||||||
$facturesupplierstatic = new FactureFournisseur($db);
|
$facturesupplierstatic = new FactureFournisseur($db);
|
||||||
|
|
||||||
$sql = "SELECT f.ref, f.rowid, f.total_ht, f.total_tva, f.total_ttc, f.type, f.ref_supplier, f.fk_statut as status, f.paye";
|
$sql = "SELECT f.ref, f.rowid, f.total_ht, f.total_tva, f.total_ttc, f.type, f.ref_supplier, f.fk_statut as status, f.paye";
|
||||||
@ -679,6 +687,7 @@ function getDraftSupplierTable($maxCount = 500, $socid = 0)
|
|||||||
} else {
|
} else {
|
||||||
dol_print_error($db);
|
dol_print_error($db);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -170,7 +170,16 @@ function getValidOnlinePaymentMethods($paymentmethod = '')
|
|||||||
'validpaymentmethod' => &$validpaymentmethod
|
'validpaymentmethod' => &$validpaymentmethod
|
||||||
];
|
];
|
||||||
$tmpobject = new stdClass();
|
$tmpobject = new stdClass();
|
||||||
$hookmanager->executeHooks('doValidatePayment', $parameters, $tmpobject, $action);
|
$reshook = $hookmanager->executeHooks('getValidPayment', $parameters, $tmpobject, $action);
|
||||||
|
if ($reshook < 0) {
|
||||||
|
setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||||
|
} elseif (!empty($hookmanager->resArray['validpaymentmethod'])) {
|
||||||
|
if ($reshook == 0) {
|
||||||
|
$validpaymentmethod = array_merge($validpaymentmethod, $hookmanager->resArray['validpaymentmethod']);
|
||||||
|
} else {
|
||||||
|
$validpaymentmethod = $hookmanager->resArray['validpaymentmethod'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $validpaymentmethod;
|
return $validpaymentmethod;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2867,13 +2867,13 @@ function getTaskProgressView($task, $label = true, $progressNumber = true, $hide
|
|||||||
// good
|
// good
|
||||||
$out .= ' <div class="progress-bar '.$progressBarClass.'" style="width: '.floatval($task->progress).'%" title="'.floatval($task->progress).'%">';
|
$out .= ' <div class="progress-bar '.$progressBarClass.'" style="width: '.floatval($task->progress).'%" title="'.floatval($task->progress).'%">';
|
||||||
if (!empty($task->progress)) {
|
if (!empty($task->progress)) {
|
||||||
$out .= ' <div class="progress-bar progress-bar-consumed" style="width: '.floatval($progressCalculated / $task->progress * 100).'%" title="'.floatval($progressCalculated).'%"></div>';
|
$out .= ' <div class="progress-bar progress-bar-consumed" style="width: '.floatval($progressCalculated / (floatval($task->progress) === 0 ? 1 : $task->progress) * 100).'%" title="'.floatval($progressCalculated).'%"></div>';
|
||||||
}
|
}
|
||||||
$out .= ' </div>';
|
$out .= ' </div>';
|
||||||
} else {
|
} else {
|
||||||
// bad
|
// bad
|
||||||
$out .= ' <div class="progress-bar progress-bar-consumed-late" style="width: '.floatval($progressCalculated).'%" title="'.floatval($progressCalculated).'%">';
|
$out .= ' <div class="progress-bar progress-bar-consumed-late" style="width: '.floatval($progressCalculated).'%" title="'.floatval($progressCalculated).'%">';
|
||||||
$out .= ' <div class="progress-bar '.$progressBarClass.'" style="width: '.($task->progress ? floatval($task->progress / $progressCalculated * 100).'%' : '1px').'" title="'.floatval($task->progress).'%"></div>';
|
$out .= ' <div class="progress-bar '.$progressBarClass.'" style="width: '.($task->progress ? floatval($task->progress / (floatval($progressCalculated) === 0 ? 1 : $progressCalculated) * 100).'%' : '1px').'" title="'.floatval($task->progress).'%"></div>';
|
||||||
$out .= ' </div>';
|
$out .= ' </div>';
|
||||||
}
|
}
|
||||||
$out .= ' </div>';
|
$out .= ' </div>';
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
* Copyright (C) 2015 Charlie BENKE <charlie@patas-monkey.com>
|
* Copyright (C) 2015 Charlie BENKE <charlie@patas-monkey.com>
|
||||||
* Copyright (C) 2019 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
* Copyright (C) 2019 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2021 Gauthier VERDOL <gauthier.verdol@atm-consulting.fr>
|
* Copyright (C) 2021 Gauthier VERDOL <gauthier.verdol@atm-consulting.fr>
|
||||||
|
* Copyright (C) 2023 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
|
||||||
@ -76,7 +77,10 @@ function salaries_prepare_head($object)
|
|||||||
*/
|
*/
|
||||||
function salaries_admin_prepare_head()
|
function salaries_admin_prepare_head()
|
||||||
{
|
{
|
||||||
global $langs, $conf, $user;
|
global $conf, $db, $langs, $user;
|
||||||
|
|
||||||
|
$extrafields = new ExtraFields($db);
|
||||||
|
$extrafields->fetch_name_optionals_label('salary');
|
||||||
|
|
||||||
$h = 0;
|
$h = 0;
|
||||||
$head = array();
|
$head = array();
|
||||||
@ -94,6 +98,10 @@ function salaries_admin_prepare_head()
|
|||||||
|
|
||||||
$head[$h][0] = DOL_URL_ROOT.'/salaries/admin/salaries_extrafields.php';
|
$head[$h][0] = DOL_URL_ROOT.'/salaries/admin/salaries_extrafields.php';
|
||||||
$head[$h][1] = $langs->trans("ExtraFieldsSalaries");
|
$head[$h][1] = $langs->trans("ExtraFieldsSalaries");
|
||||||
|
$nbExtrafields = $extrafields->attributes['salary']['count'];
|
||||||
|
if ($nbExtrafields > 0) {
|
||||||
|
$head[$h][1] .= '<span class="badge marginleftonlyshort">'.$nbExtrafields.'</span>';
|
||||||
|
}
|
||||||
$head[$h][2] = 'attributes';
|
$head[$h][2] = 'attributes';
|
||||||
$h++;
|
$h++;
|
||||||
|
|
||||||
|
|||||||
@ -344,7 +344,9 @@ function restrictedArea(User $user, $features, $object = 0, $tableandshare = '',
|
|||||||
} else {
|
} else {
|
||||||
$objectid = $object; // $objectid can be X or 'X,Y,Z'
|
$objectid = $object; // $objectid can be X or 'X,Y,Z'
|
||||||
}
|
}
|
||||||
|
if ($objectid) {
|
||||||
$objectid = preg_replace('/[^0-9\.\,]/', '', $objectid); // For the case value is coming from a non sanitized user input
|
$objectid = preg_replace('/[^0-9\.\,]/', '', $objectid); // For the case value is coming from a non sanitized user input
|
||||||
|
}
|
||||||
|
|
||||||
//dol_syslog("functions.lib:restrictedArea $feature, $objectid, $dbtablename, $feature2, $dbt_socfield, $dbt_select, $isdraft");
|
//dol_syslog("functions.lib:restrictedArea $feature, $objectid, $dbtablename, $feature2, $dbt_socfield, $dbt_select, $isdraft");
|
||||||
//print "user_id=".$user->id.", features=".$features.", feature2=".$feature2.", objectid=".$objectid;
|
//print "user_id=".$user->id.", features=".$features.", feature2=".$feature2.", objectid=".$objectid;
|
||||||
@ -633,7 +635,13 @@ function restrictedArea(User $user, $features, $object = 0, $tableandshare = '',
|
|||||||
$nbko = 0;
|
$nbko = 0;
|
||||||
if ((GETPOST("action", "aZ09") == 'confirm_delete' && GETPOST("confirm", "aZ09") == 'yes') || GETPOST("action", "aZ09") == 'delete') {
|
if ((GETPOST("action", "aZ09") == 'confirm_delete' && GETPOST("confirm", "aZ09") == 'yes') || GETPOST("action", "aZ09") == 'delete') {
|
||||||
foreach ($featuresarray as $feature) {
|
foreach ($featuresarray as $feature) {
|
||||||
if ($feature == 'contact') {
|
if ($feature == 'bookmark') {
|
||||||
|
if (!$user->rights->bookmark->supprimer) {
|
||||||
|
if ($user->id != $object->fk_user || empty($user->rights->bookmark->creer)) {
|
||||||
|
$deleteok = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} elseif ($feature == 'contact') {
|
||||||
if (!$user->rights->societe->contact->supprimer) {
|
if (!$user->rights->societe->contact->supprimer) {
|
||||||
$deleteok = 0;
|
$deleteok = 0;
|
||||||
}
|
}
|
||||||
@ -803,6 +811,7 @@ function checkUserAccessToObject($user, array $featuresarray, $object = 0, $tabl
|
|||||||
$checkproject = array('projet', 'project'); // Test for project object
|
$checkproject = array('projet', 'project'); // Test for project object
|
||||||
$checktask = array('projet_task'); // Test for task object
|
$checktask = array('projet_task'); // Test for task object
|
||||||
$checkhierarchy = array('expensereport', 'holiday'); // check permission among the hierarchy of user
|
$checkhierarchy = array('expensereport', 'holiday'); // check permission among the hierarchy of user
|
||||||
|
$checkuser = array('bookmark'); // check permission among the fk_user (must be myself or null)
|
||||||
$nocheck = array('barcode', 'stock'); // No test
|
$nocheck = array('barcode', 'stock'); // No test
|
||||||
|
|
||||||
//$checkdefault = 'all other not already defined'; // Test on entity + link to third party on field $dbt_keyfield. Not allowed if link is empty (Ex: invoice, orders...).
|
//$checkdefault = 'all other not already defined'; // Test on entity + link to third party on field $dbt_keyfield. Not allowed if link is empty (Ex: invoice, orders...).
|
||||||
@ -1025,6 +1034,15 @@ function checkUserAccessToObject($user, array $featuresarray, $object = 0, $tabl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// For some object, we also have to check it is public or owned by user
|
||||||
|
// Param $object must be the full object and not a simple id to have this test possible.
|
||||||
|
if (in_array($feature, $checkuser) && is_object($object) && $objectid > 0) {
|
||||||
|
$useridtocheck = $object->fk_user;
|
||||||
|
if (!empty($useridtocheck) && $useridtocheck > 0 && $useridtocheck != $user->id && empty($user->admin)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($sql) {
|
if ($sql) {
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
|
|||||||
@ -96,7 +96,8 @@ function checkLoginPassEntity($usertotest, $passwordtotest, $entitytotest, $auth
|
|||||||
// Call function to check user/password
|
// Call function to check user/password
|
||||||
$function = 'check_user_password_'.$mode;
|
$function = 'check_user_password_'.$mode;
|
||||||
$login = call_user_func($function, $usertotest, $passwordtotest, $entitytotest, $context);
|
$login = call_user_func($function, $usertotest, $passwordtotest, $entitytotest, $context);
|
||||||
if ($login && $login != '--bad-login-validity--') { // Login is successfull
|
if ($login && $login != '--bad-login-validity--') {
|
||||||
|
// Login is successfull with this method
|
||||||
$test = false; // To stop once at first login success
|
$test = false; // To stop once at first login success
|
||||||
$conf->authmode = $mode; // This properties is defined only when logged to say what mode was successfully used
|
$conf->authmode = $mode; // This properties is defined only when logged to say what mode was successfully used
|
||||||
/*$dol_tz = GETPOST('tz');
|
/*$dol_tz = GETPOST('tz');
|
||||||
|
|||||||
@ -50,7 +50,7 @@ function shipping_prepare_head($object)
|
|||||||
if ($conf->delivery_note->enabled && $user->rights->expedition->delivery->lire) {
|
if ($conf->delivery_note->enabled && $user->rights->expedition->delivery->lire) {
|
||||||
// delivery link
|
// delivery link
|
||||||
$object->fetchObjectLinked($object->id, $object->element);
|
$object->fetchObjectLinked($object->id, $object->element);
|
||||||
if (is_array($object->linkedObjectsIds['delivery']) && count($object->linkedObjectsIds['delivery']) > 0) { // If there is a delivery
|
if (isset($object->linkedObjectsIds['delivery']) && is_array($object->linkedObjectsIds['delivery']) && count($object->linkedObjectsIds['delivery']) > 0) { // If there is a delivery
|
||||||
// Take first one element of array
|
// Take first one element of array
|
||||||
$tmp = reset($object->linkedObjectsIds['delivery']);
|
$tmp = reset($object->linkedObjectsIds['delivery']);
|
||||||
|
|
||||||
|
|||||||
@ -74,24 +74,6 @@ function check_user_password_dolibarr($usertotest, $passwordtotest, $entitytotes
|
|||||||
if ($resql) {
|
if ($resql) {
|
||||||
$obj = $db->fetch_object($resql);
|
$obj = $db->fetch_object($resql);
|
||||||
if ($obj) {
|
if ($obj) {
|
||||||
$now = dol_now();
|
|
||||||
// Check date start validity
|
|
||||||
if ($obj->datestartvalidity && $db->jdate($obj->datestartvalidity) > $now) {
|
|
||||||
// Load translation files required by the page
|
|
||||||
$langs->loadLangs(array('main', 'errors'));
|
|
||||||
$_SESSION["dol_loginmesg"] = $langs->transnoentitiesnoconv("ErrorLoginDateValidity");
|
|
||||||
dol_syslog("functions_dolibarr::check_user_password_dolibarr bad datestart validity", LOG_WARNING);
|
|
||||||
return '--bad-login-validity--';
|
|
||||||
}
|
|
||||||
// Check date end validity
|
|
||||||
if ($obj->dateendvalidity && $db->jdate($obj->dateendvalidity) < dol_get_first_hour($now)) {
|
|
||||||
// Load translation files required by the page
|
|
||||||
$langs->loadLangs(array('main', 'errors'));
|
|
||||||
$_SESSION["dol_loginmesg"] = $langs->transnoentitiesnoconv("ErrorLoginDateValidity");
|
|
||||||
dol_syslog("functions_dolibarr::check_user_password_dolibarr bad date end validity", LOG_WARNING);
|
|
||||||
return '--bad-login-validity--';
|
|
||||||
}
|
|
||||||
|
|
||||||
$passclear = $obj->pass;
|
$passclear = $obj->pass;
|
||||||
$passcrypted = $obj->pass_crypted;
|
$passcrypted = $obj->pass_crypted;
|
||||||
$passtyped = $passwordtotest;
|
$passtyped = $passwordtotest;
|
||||||
@ -121,7 +103,7 @@ function check_user_password_dolibarr($usertotest, $passwordtotest, $entitytotes
|
|||||||
if ((!$passcrypted || $passtyped)
|
if ((!$passcrypted || $passtyped)
|
||||||
&& ($passclear && ($passtyped == $passclear))) {
|
&& ($passclear && ($passtyped == $passclear))) {
|
||||||
$passok = true;
|
$passok = true;
|
||||||
dol_syslog("functions_dolibarr::check_user_password_dolibarr Authentification ok - found pass in database");
|
dol_syslog("functions_dolibarr::check_user_password_dolibarr Authentification ok - found old pass in database", LOG_WARNING);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1087,18 +1087,21 @@ function get_left_menu_home($mainmenu, &$newmenu, $usemenuhider = 1, $leftmenu =
|
|||||||
$newmenu->add("/admin/index.php?mainmenu=home&leftmenu=setup", $langs->trans("Setup"), 0, $user->admin, '', $mainmenu, 'setup', 0, '', '', '', '<i class="fa fa-tools fa-fw paddingright pictofixedwidth"></i>');
|
$newmenu->add("/admin/index.php?mainmenu=home&leftmenu=setup", $langs->trans("Setup"), 0, $user->admin, '', $mainmenu, 'setup', 0, '', '', '', '<i class="fa fa-tools fa-fw paddingright pictofixedwidth"></i>');
|
||||||
|
|
||||||
if ($usemenuhider || empty($leftmenu) || $leftmenu == "setup") {
|
if ($usemenuhider || empty($leftmenu) || $leftmenu == "setup") {
|
||||||
|
$nbmodulesnotautoenabled = count($conf->modules);
|
||||||
|
if (in_array('fckeditor', $conf->modules)) $nbmodulesnotautoenabled--;
|
||||||
|
if (in_array('export', $conf->modules)) $nbmodulesnotautoenabled--;
|
||||||
|
if (in_array('import', $conf->modules)) $nbmodulesnotautoenabled--;
|
||||||
|
|
||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("admin", "help"));
|
$langs->loadLangs(array("admin", "help"));
|
||||||
|
|
||||||
$warnpicto = '';
|
$warnpicto = '';
|
||||||
if (empty($conf->global->MAIN_INFO_SOCIETE_NOM) || empty($conf->global->MAIN_INFO_SOCIETE_COUNTRY)) {
|
if (empty($conf->global->MAIN_INFO_SOCIETE_NOM) || empty($conf->global->MAIN_INFO_SOCIETE_COUNTRY)) {
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
$warnpicto = img_warning($langs->trans("WarningMandatorySetupNotComplete"));
|
$warnpicto = img_warning($langs->trans("WarningMandatorySetupNotComplete"));
|
||||||
}
|
}
|
||||||
$newmenu->add("/admin/company.php?mainmenu=home", $langs->trans("MenuCompanySetup").$warnpicto, 1);
|
$newmenu->add("/admin/company.php?mainmenu=home", $langs->trans("MenuCompanySetup").$warnpicto, 1);
|
||||||
|
|
||||||
$warnpicto = '';
|
$warnpicto = '';
|
||||||
if (count($conf->modules) <= (empty($conf->global->MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING) ? 1 : $conf->global->MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING)) { // If only user module enabled
|
if ($nbmodulesnotautoenabled <= getDolGlobalInt('MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING', 1)) { // If only user module enabled
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
$warnpicto = img_warning($langs->trans("WarningMandatorySetupNotComplete"));
|
$warnpicto = img_warning($langs->trans("WarningMandatorySetupNotComplete"));
|
||||||
}
|
}
|
||||||
@ -1729,7 +1732,10 @@ function get_left_menu_accountancy($mainmenu, &$newmenu, $usemenuhider = 1, $lef
|
|||||||
|
|
||||||
if ($nature) {
|
if ($nature) {
|
||||||
$langs->load('accountancy');
|
$langs->load('accountancy');
|
||||||
$journallabel = $langs->transnoentities($objp->label); // Label of bank account in llx_accounting_journal
|
$journallabel = '';
|
||||||
|
if ($objp->label) {
|
||||||
|
$journallabel = '<span class="opacitymedium">('.$langs->transnoentities($objp->label).')</span>'; // Label of bank account in llx_accounting_journal
|
||||||
|
}
|
||||||
|
|
||||||
$key = $langs->trans("AccountingJournalType".strtoupper($objp->nature));
|
$key = $langs->trans("AccountingJournalType".strtoupper($objp->nature));
|
||||||
$transferlabel = ($objp->nature && $key != "AccountingJournalType".strtoupper($langs->trans($objp->nature)) ? $key.($journallabel != $key ? ' '.$journallabel : ''): $journallabel);
|
$transferlabel = ($objp->nature && $key != "AccountingJournalType".strtoupper($langs->trans($objp->nature)) ? $key.($journallabel != $key ? ' '.$journallabel : ''): $journallabel);
|
||||||
|
|||||||
@ -365,12 +365,16 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it
|
|||||||
*/
|
*/
|
||||||
public $phpmin;
|
public $phpmin;
|
||||||
|
|
||||||
|
public $phpmax;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var array Minimum version of Dolibarr required by module.
|
* @var array Minimum version of Dolibarr required by module.
|
||||||
* e.g.: Dolibarr ≥ 3.6 = array(3, 6)
|
* e.g.: Dolibarr ≥ 3.6 = array(3, 6)
|
||||||
*/
|
*/
|
||||||
public $need_dolibarr_version;
|
public $need_dolibarr_version;
|
||||||
|
|
||||||
|
public $enabled_bydefault;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var bool Whether to hide the module.
|
* @var bool Whether to hide the module.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -162,7 +162,7 @@ class html_cerfafr extends ModeleDon
|
|||||||
$form = str_replace('__MAIN_INFO_SOCIETE_ADDRESS__', $mysoc->address, $form);
|
$form = str_replace('__MAIN_INFO_SOCIETE_ADDRESS__', $mysoc->address, $form);
|
||||||
$form = str_replace('__MAIN_INFO_SOCIETE_ZIP__', $mysoc->zip, $form);
|
$form = str_replace('__MAIN_INFO_SOCIETE_ZIP__', $mysoc->zip, $form);
|
||||||
$form = str_replace('__MAIN_INFO_SOCIETE_TOWN__', $mysoc->town, $form);
|
$form = str_replace('__MAIN_INFO_SOCIETE_TOWN__', $mysoc->town, $form);
|
||||||
$form = str_replace('__MAIN_INFO_SOCIETE_OBJECT__', $mysoc->object, $form);
|
$form = str_replace('__MAIN_INFO_SOCIETE_OBJECT__', $mysoc->socialobject, $form);
|
||||||
$form = str_replace('__DONATOR_FIRSTNAME__', $don->firstname, $form);
|
$form = str_replace('__DONATOR_FIRSTNAME__', $don->firstname, $form);
|
||||||
$form = str_replace('__DONATOR_LASTNAME__', $don->lastname, $form);
|
$form = str_replace('__DONATOR_LASTNAME__', $don->lastname, $form);
|
||||||
$form = str_replace('__DONATOR_SOCIETE__', $don->societe, $form);
|
$form = str_replace('__DONATOR_SOCIETE__', $don->societe, $form);
|
||||||
|
|||||||
@ -336,7 +336,11 @@ class doc_generic_invoice_odt extends ModelePDFFactures
|
|||||||
$object->fetchObjectLinked('', '', '', '');
|
$object->fetchObjectLinked('', '', '', '');
|
||||||
//print_r($object->linkedObjects['propal']); exit;
|
//print_r($object->linkedObjects['propal']); exit;
|
||||||
|
|
||||||
|
if (isset($object->linkedObjects['propal'][0])) {
|
||||||
$propal_object = $object->linkedObjects['propal'][0];
|
$propal_object = $object->linkedObjects['propal'][0];
|
||||||
|
} else {
|
||||||
|
$propal_object = null;
|
||||||
|
}
|
||||||
|
|
||||||
// Make substitution
|
// Make substitution
|
||||||
$substitutionarray = array(
|
$substitutionarray = array(
|
||||||
@ -435,8 +439,8 @@ class doc_generic_invoice_odt extends ModelePDFFactures
|
|||||||
} else {
|
} else {
|
||||||
$odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8');
|
$odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8');
|
||||||
}
|
}
|
||||||
} else // Text
|
} else {
|
||||||
{
|
// Text
|
||||||
$odfHandler->setVars($key, $value, true, 'UTF-8');
|
$odfHandler->setVars($key, $value, true, 'UTF-8');
|
||||||
}
|
}
|
||||||
} catch (OdfException $e) {
|
} catch (OdfException $e) {
|
||||||
|
|||||||
@ -139,7 +139,7 @@ class modAccounting extends DolibarrModules
|
|||||||
$this->const[11] = array(
|
$this->const[11] = array(
|
||||||
"ACCOUNTING_EXPORT_DATE",
|
"ACCOUNTING_EXPORT_DATE",
|
||||||
"chaine",
|
"chaine",
|
||||||
"%d%m%Y",
|
"%Y-%m-%d",
|
||||||
"", 0, 'current', 0
|
"", 0, 'current', 0
|
||||||
);
|
);
|
||||||
$this->const[12] = array(
|
$this->const[12] = array(
|
||||||
@ -338,7 +338,7 @@ class modAccounting extends DolibarrModules
|
|||||||
'b.sens'=>'C' // This field is still used by accounting export. We can remove it once it has been replace into accountancyexport.class.php by a detection using ->debit and ->credit
|
'b.sens'=>'C' // This field is still used by accounting export. We can remove it once it has been replace into accountancyexport.class.php by a detection using ->debit and ->credit
|
||||||
);
|
);
|
||||||
|
|
||||||
// General ledger - Fichier FEC
|
// General ledger - File FEC
|
||||||
$r++;
|
$r++;
|
||||||
$this->import_code[$r] = $this->rights_class.'_'.$r;
|
$this->import_code[$r] = $this->rights_class.'_'.$r;
|
||||||
$this->import_label[$r] = 'ImportAccountingEntriesFECFormat';
|
$this->import_label[$r] = 'ImportAccountingEntriesFECFormat';
|
||||||
|
|||||||
@ -204,7 +204,7 @@ class modCommande extends DolibarrModules
|
|||||||
'co.code'=>"CountryCode", 's.phone'=>'Phone', 's.siren'=>'ProfId1', 's.siret'=>'ProfId2', 's.ape'=>'ProfId3', 's.idprof4'=>'ProfId4', 'c.rowid'=>"Id",
|
'co.code'=>"CountryCode", 's.phone'=>'Phone', 's.siren'=>'ProfId1', 's.siret'=>'ProfId2', 's.ape'=>'ProfId3', 's.idprof4'=>'ProfId4', 'c.rowid'=>"Id",
|
||||||
'c.ref'=>"Ref", 'c.ref_client'=>"RefCustomer", 'c.fk_soc'=>"IdCompany", 'c.date_creation'=>"DateCreation", 'c.date_commande'=>"OrderDate",
|
'c.ref'=>"Ref", 'c.ref_client'=>"RefCustomer", 'c.fk_soc'=>"IdCompany", 'c.date_creation'=>"DateCreation", 'c.date_commande'=>"OrderDate",
|
||||||
'c.date_livraison'=>"DateDeliveryPlanned", 'c.amount_ht'=>"Amount", 'c.total_ht'=>"TotalHT",
|
'c.date_livraison'=>"DateDeliveryPlanned", 'c.amount_ht'=>"Amount", 'c.total_ht'=>"TotalHT",
|
||||||
'c.total_ttc'=>"TotalTTC", 'c.facture'=>"Billed", 'c.fk_statut'=>'Status', 'c.note_public'=>"Note",
|
'c.total_ttc'=>"TotalTTC", 'c.facture'=>"Billed", 'c.fk_statut'=>'Status', 'c.note_public'=>"Note", 'sm.code'=>'SendingMethod',
|
||||||
'c.fk_user_author'=>'CreatedById', 'uc.login'=>'CreatedByLogin', 'c.fk_user_valid'=>'ValidatedById', 'uv.login'=>'ValidatedByLogin',
|
'c.fk_user_author'=>'CreatedById', 'uc.login'=>'CreatedByLogin', 'c.fk_user_valid'=>'ValidatedById', 'uv.login'=>'ValidatedByLogin',
|
||||||
'pj.ref'=>'ProjectRef', 'cd.rowid'=>'LineId', 'cd.description'=>"LineDescription", 'cd.product_type'=>'TypeOfLineServiceOrProduct',
|
'pj.ref'=>'ProjectRef', 'cd.rowid'=>'LineId', 'cd.description'=>"LineDescription", 'cd.product_type'=>'TypeOfLineServiceOrProduct',
|
||||||
'cd.tva_tx'=>"LineVATRate", 'cd.qty'=>"LineQty", 'cd.total_ht'=>"LineTotalHT", 'cd.total_tva'=>"LineTotalVAT", 'cd.total_ttc'=>"LineTotalTTC",
|
'cd.tva_tx'=>"LineVATRate", 'cd.qty'=>"LineQty", 'cd.total_ht'=>"LineTotalHT", 'cd.total_tva'=>"LineTotalVAT", 'cd.total_ttc'=>"LineTotalTTC",
|
||||||
@ -235,7 +235,7 @@ class modCommande extends DolibarrModules
|
|||||||
$this->export_TypeFields_array[$r] = array(
|
$this->export_TypeFields_array[$r] = array(
|
||||||
's.nom'=>'Text', 'ps.nom'=>'Text', 's.address'=>'Text', 's.zip'=>'Text', 's.town'=>'Text', 'co.label'=>'List:c_country:label:label', 'co.code'=>'Text', 's.phone'=>'Text',
|
's.nom'=>'Text', 'ps.nom'=>'Text', 's.address'=>'Text', 's.zip'=>'Text', 's.town'=>'Text', 'co.label'=>'List:c_country:label:label', 'co.code'=>'Text', 's.phone'=>'Text',
|
||||||
's.siren'=>'Text', 's.siret'=>'Text', 's.ape'=>'Text', 's.idprof4'=>'Text', 'c.ref'=>"Text", 'c.ref_client'=>"Text", 'c.date_creation'=>"Date",
|
's.siren'=>'Text', 's.siret'=>'Text', 's.ape'=>'Text', 's.idprof4'=>'Text', 'c.ref'=>"Text", 'c.ref_client'=>"Text", 'c.date_creation'=>"Date",
|
||||||
'c.date_commande'=>"Date", 'c.date_livraison'=>"Date", 'c.amount_ht'=>"Numeric", 'c.total_ht'=>"Numeric",
|
'c.date_commande'=>"Date", 'c.date_livraison'=>"Date", 'sm.code'=>"Text", 'c.amount_ht'=>"Numeric", 'c.total_ht'=>"Numeric",
|
||||||
'c.total_ttc'=>"Numeric", 'c.facture'=>"Boolean", 'c.fk_statut'=>'Status', 'c.note_public'=>"Text", 'pj.ref'=>'Text',
|
'c.total_ttc'=>"Numeric", 'c.facture'=>"Boolean", 'c.fk_statut'=>'Status', 'c.note_public'=>"Text", 'pj.ref'=>'Text',
|
||||||
'cd.description'=>"Text", 'cd.product_type'=>'Boolean', 'cd.tva_tx'=>"Numeric", 'cd.qty'=>"Numeric", 'cd.total_ht'=>"Numeric", 'cd.total_tva'=>"Numeric",
|
'cd.description'=>"Text", 'cd.product_type'=>'Boolean', 'cd.tva_tx'=>"Numeric", 'cd.qty'=>"Numeric", 'cd.total_ht'=>"Numeric", 'cd.total_tva'=>"Numeric",
|
||||||
'cd.total_ttc'=>"Numeric", 'p.rowid'=>'List:product:ref::product', 'p.ref'=>'Text', 'p.label'=>'Text', 'd.nom'=>'Text',
|
'cd.total_ttc'=>"Numeric", 'p.rowid'=>'List:product:ref::product', 'p.ref'=>'Text', 'p.label'=>'Text', 'd.nom'=>'Text',
|
||||||
@ -246,7 +246,7 @@ class modCommande extends DolibarrModules
|
|||||||
'co.code'=>'company', 's.phone'=>'company', 's.siren'=>'company', 's.ape'=>'company', 's.idprof4'=>'company', 's.siret'=>'company', 'c.rowid'=>"order",
|
'co.code'=>'company', 's.phone'=>'company', 's.siren'=>'company', 's.ape'=>'company', 's.idprof4'=>'company', 's.siret'=>'company', 'c.rowid'=>"order",
|
||||||
'c.ref'=>"order", 'c.ref_client'=>"order", 'c.fk_soc'=>"order", 'c.date_creation'=>"order", 'c.date_commande'=>"order", 'c.amount_ht'=>"order",
|
'c.ref'=>"order", 'c.ref_client'=>"order", 'c.fk_soc'=>"order", 'c.date_creation'=>"order", 'c.date_commande'=>"order", 'c.amount_ht'=>"order",
|
||||||
'c.total_ht'=>"order", 'c.total_ttc'=>"order", 'c.facture'=>"order", 'c.fk_statut'=>"order", 'c.note'=>"order",
|
'c.total_ht'=>"order", 'c.total_ttc'=>"order", 'c.facture'=>"order", 'c.fk_statut'=>"order", 'c.note'=>"order",
|
||||||
'c.date_livraison'=>"order", 'pj.ref'=>'project', 'cd.rowid'=>'order_line', 'cd.description'=>"order_line",
|
'c.date_livraison'=>"order", 'sm.code'=>"order", 'pj.ref'=>'project', 'cd.rowid'=>'order_line', 'cd.description'=>"order_line",
|
||||||
'cd.product_type'=>'order_line', 'cd.tva_tx'=>"order_line", 'cd.qty'=>"order_line", 'cd.total_ht'=>"order_line", 'cd.total_tva'=>"order_line",
|
'cd.product_type'=>'order_line', 'cd.tva_tx'=>"order_line", 'cd.qty'=>"order_line", 'cd.total_ht'=>"order_line", 'cd.total_tva'=>"order_line",
|
||||||
'cd.total_ttc'=>"order_line", 'p.rowid'=>'product', 'p.ref'=>'product', 'p.label'=>'product'
|
'cd.total_ttc'=>"order_line", 'p.rowid'=>'product', 'p.ref'=>'product', 'p.label'=>'product'
|
||||||
);
|
);
|
||||||
@ -277,6 +277,7 @@ class modCommande extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_departements as d ON s.fk_departement = d.rowid';
|
$this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_departements as d ON s.fk_departement = d.rowid';
|
||||||
$this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co ON s.fk_pays = co.rowid,';
|
$this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co ON s.fk_pays = co.rowid,';
|
||||||
$this->export_sql_end[$r] .= ' '.MAIN_DB_PREFIX.'commande as c';
|
$this->export_sql_end[$r] .= ' '.MAIN_DB_PREFIX.'commande as c';
|
||||||
|
$this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_shipment_mode as sm ON c.fk_shipping_method = sm.rowid';
|
||||||
$this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'projet as pj ON c.fk_projet = pj.rowid';
|
$this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'projet as pj ON c.fk_projet = pj.rowid';
|
||||||
$this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'user as uc ON c.fk_user_author = uc.rowid';
|
$this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'user as uc ON c.fk_user_author = uc.rowid';
|
||||||
$this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON c.fk_user_valid = uv.rowid';
|
$this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON c.fk_user_valid = uv.rowid';
|
||||||
|
|||||||
@ -63,7 +63,7 @@ class modFckeditor extends DolibarrModules
|
|||||||
$this->config_page_url = array("fckeditor.php");
|
$this->config_page_url = array("fckeditor.php");
|
||||||
|
|
||||||
// Dependencies
|
// Dependencies
|
||||||
$this->disabled = in_array(constant('JS_CKEDITOR'), array('disabled', 'disabled/'));
|
$this->disabled = (defined('JS_CKEDITOR') && in_array(constant('JS_CKEDITOR'), array('disabled', 'disabled/')));
|
||||||
$this->depends = array();
|
$this->depends = array();
|
||||||
$this->requiredby = array('modWebsites');
|
$this->requiredby = array('modWebsites');
|
||||||
$this->enabled_bydefault = true; // Will be enabled during install
|
$this->enabled_bydefault = true; // Will be enabled during install
|
||||||
|
|||||||
@ -250,9 +250,17 @@ class modHRM extends DolibarrModules
|
|||||||
$this->rights[$r][5] = 'read'; // In php code, permission will be checked by test if ($user->rights->hrm->compare_advance->read)
|
$this->rights[$r][5] = 'read'; // In php code, permission will be checked by test if ($user->rights->hrm->compare_advance->read)
|
||||||
$r++;
|
$r++;
|
||||||
|
|
||||||
|
// Evaluation
|
||||||
|
$this->rights[$r][0] = 4029; // Permission id (must not be already used)
|
||||||
|
$this->rights[$r][1] = 'Read all evaluations'; // Permission label
|
||||||
|
$this->rights[$r][3] = 0; // Permission by default for new user (0/1)
|
||||||
|
$this->rights[$r][4] = 'evaluation';
|
||||||
|
$this->rights[$r][5] = 'readall'; // In php code, permission will be checked by test if ($user->rights->hrm->evaluation->read)
|
||||||
|
$r++;
|
||||||
|
|
||||||
// Read employee
|
// Read employee
|
||||||
$this->rights[$r][0] = 4031; // Permission id (must not be already used)
|
$this->rights[$r][0] = 4031; // Permission id (must not be already used)
|
||||||
$this->rights[$r][1] = 'Read personal information'; // Permission label
|
$this->rights[$r][1] = 'Read personal/HR information'; // Permission label
|
||||||
$this->rights[$r][3] = 0; // Permission by default for new user (0/1)
|
$this->rights[$r][3] = 0; // Permission by default for new user (0/1)
|
||||||
$this->rights[$r][4] = 'read_personal_information';
|
$this->rights[$r][4] = 'read_personal_information';
|
||||||
$this->rights[$r][5] = 'read'; // In php code, permission will be checked by test if ($user->rights->hrm->read_personal_information->read)
|
$this->rights[$r][5] = 'read'; // In php code, permission will be checked by test if ($user->rights->hrm->read_personal_information->read)
|
||||||
@ -260,19 +268,11 @@ class modHRM extends DolibarrModules
|
|||||||
|
|
||||||
// Write employee
|
// Write employee
|
||||||
$this->rights[$r][0] = 4032; // Permission id (must not be already used)
|
$this->rights[$r][0] = 4032; // Permission id (must not be already used)
|
||||||
$this->rights[$r][1] = 'Write personal information'; // Permission label
|
$this->rights[$r][1] = 'Write personal/HR information'; // Permission label
|
||||||
$this->rights[$r][3] = 0; // Permission by default for new user (0/1)
|
$this->rights[$r][3] = 0; // Permission by default for new user (0/1)
|
||||||
$this->rights[$r][4] = 'write_personal_information';
|
$this->rights[$r][4] = 'write_personal_information';
|
||||||
$this->rights[$r][5] = 'write'; // In php code, permission will be checked by test if ($user->rights->hrm->write_personal_information->write)
|
$this->rights[$r][5] = 'write'; // In php code, permission will be checked by test if ($user->rights->hrm->write_personal_information->write)
|
||||||
$r++;
|
$r++;
|
||||||
|
|
||||||
// Evaluation
|
|
||||||
$this->rights[$r][0] = 4033; // Permission id (must not be already used)
|
|
||||||
$this->rights[$r][1] = 'Read all evaluations'; // Permission label
|
|
||||||
$this->rights[$r][3] = 0; // Permission by default for new user (0/1)
|
|
||||||
$this->rights[$r][4] = 'evaluation';
|
|
||||||
$this->rights[$r][5] = 'readall'; // In php code, permission will be checked by test if ($user->rights->hrm->evaluation->read)
|
|
||||||
$r++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -32,7 +32,6 @@ include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';
|
|||||||
*/
|
*/
|
||||||
class modImport extends DolibarrModules
|
class modImport extends DolibarrModules
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor. Define names, constants, directories, boxes, permissions
|
* Constructor. Define names, constants, directories, boxes, permissions
|
||||||
*
|
*
|
||||||
|
|||||||
@ -157,7 +157,7 @@ class modTicket extends DolibarrModules
|
|||||||
'tabfieldvalue' => array("code,label,pos,use_default", "code,label,pos,use_default", "code,label,pos,use_default,public,fk_parent", "code,label,pos,use_default"),
|
'tabfieldvalue' => array("code,label,pos,use_default", "code,label,pos,use_default", "code,label,pos,use_default,public,fk_parent", "code,label,pos,use_default"),
|
||||||
'tabfieldinsert' => array("code,label,pos,use_default", "code,label,pos,use_default", "code,label,pos,use_default,public,fk_parent", "code,label,pos,use_default"),
|
'tabfieldinsert' => array("code,label,pos,use_default", "code,label,pos,use_default", "code,label,pos,use_default,public,fk_parent", "code,label,pos,use_default"),
|
||||||
'tabrowid' => array("rowid", "rowid", "rowid", "rowid"),
|
'tabrowid' => array("rowid", "rowid", "rowid", "rowid"),
|
||||||
'tabcond' => array($conf->ticket->enabled, $conf->ticket->enabled, $conf->ticket->enabled, $conf->ticket->enabled && !empty($conf->global->TICKET_ENABLE_RESOLUTION)),
|
'tabcond' => array($conf->ticket->enabled, $conf->ticket->enabled, $conf->ticket->enabled, $conf->ticket->enabled && getDolGlobalString('TICKET_ENABLE_RESOLUTION')),
|
||||||
'tabhelp' => array(
|
'tabhelp' => array(
|
||||||
array('code'=>$langs->trans("EnterAnyCode"), 'use_default'=>$langs->trans("Enter0or1")),
|
array('code'=>$langs->trans("EnterAnyCode"), 'use_default'=>$langs->trans("Enter0or1")),
|
||||||
array('code'=>$langs->trans("EnterAnyCode"), 'use_default'=>$langs->trans("Enter0or1")),
|
array('code'=>$langs->trans("EnterAnyCode"), 'use_default'=>$langs->trans("Enter0or1")),
|
||||||
|
|||||||
@ -32,7 +32,6 @@ include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';
|
|||||||
*/
|
*/
|
||||||
class modUser extends DolibarrModules
|
class modUser extends DolibarrModules
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor. Define names, constants, directories, boxes, permissions
|
* Constructor. Define names, constants, directories, boxes, permissions
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2017 Laurent Destailleur <eldy@products.sourceforge.net>
|
/* Copyright (C) 2017 Laurent Destailleur <eldy@products.sourceforge.net>
|
||||||
|
* Copyright (C) 2023 Anthony Berton <anthony.berton@bb2a.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
|
||||||
@ -209,10 +210,10 @@ class pdf_standard extends ModelePDFProduct
|
|||||||
$pdf->SetDrawColor(128, 128, 128);
|
$pdf->SetDrawColor(128, 128, 128);
|
||||||
|
|
||||||
$pdf->SetTitle($outputlangs->convToOutputCharset($object->ref));
|
$pdf->SetTitle($outputlangs->convToOutputCharset($object->ref));
|
||||||
$pdf->SetSubject($outputlangs->transnoentities("Order"));
|
$pdf->SetSubject($outputlangs->transnoentities("Product"));
|
||||||
$pdf->SetCreator("Dolibarr ".DOL_VERSION);
|
$pdf->SetCreator("Dolibarr ".DOL_VERSION);
|
||||||
$pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs)));
|
$pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs)));
|
||||||
$pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("Order")." ".$outputlangs->convToOutputCharset($object->thirdparty->name));
|
$pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("Product"));
|
||||||
if (getDolGlobalString('MAIN_DISABLE_PDF_COMPRESSION')) {
|
if (getDolGlobalString('MAIN_DISABLE_PDF_COMPRESSION')) {
|
||||||
$pdf->SetCompression(false);
|
$pdf->SetCompression(false);
|
||||||
}
|
}
|
||||||
@ -242,6 +243,53 @@ class pdf_standard extends ModelePDFProduct
|
|||||||
$pdf->writeHTMLCell(190, 3, $this->marge_gauche, $tab_top, dol_htmlentitiesbr($object->label), 0, 1);
|
$pdf->writeHTMLCell(190, 3, $this->marge_gauche, $tab_top, dol_htmlentitiesbr($object->label), 0, 1);
|
||||||
$nexY = $pdf->GetY();
|
$nexY = $pdf->GetY();
|
||||||
|
|
||||||
|
// Show photo
|
||||||
|
if (getDolGlobalInt('PRODUCT_USE_OLD_PATH_FOR_PHOTO')) {
|
||||||
|
$pdir[0] = get_exdir($object->id, 2, 0, 0, $object, 'product').$object->id."/photos/";
|
||||||
|
$pdir[1] = get_exdir(0, 0, 0, 0, $object, 'product').dol_sanitizeFileName($object->ref).'/';
|
||||||
|
} else {
|
||||||
|
$pdir[0] = get_exdir(0, 0, 0, 0, $object, 'product'); // default
|
||||||
|
$pdir[1] = get_exdir($object->id, 2, 0, 0, $object, 'product').$object->id."/photos/"; // alternative
|
||||||
|
}
|
||||||
|
|
||||||
|
$arephoto = false;
|
||||||
|
foreach ($pdir as $midir) {
|
||||||
|
if (!$arephoto) {
|
||||||
|
if ($conf->entity != $object->entity) {
|
||||||
|
$dir = $conf->product->multidir_output[$object->entity].'/'.$midir; //Check repertories of current entities
|
||||||
|
} else {
|
||||||
|
$dir = $conf->product->dir_output.'/'.$midir; //Check repertory of the current product
|
||||||
|
}
|
||||||
|
foreach ($object->liste_photos($dir, 1) as $key => $obj) {
|
||||||
|
if (!getDolGlobalInt('CAT_HIGH_QUALITY_IMAGES')) { // If CAT_HIGH_QUALITY_IMAGES not defined, we use thumb if defined and then original photo
|
||||||
|
if ($obj['photo_vignette']) {
|
||||||
|
$filename = $obj['photo_vignette'];
|
||||||
|
} else {
|
||||||
|
$filename = $obj['photo'];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$filename = $obj['photo'];
|
||||||
|
}
|
||||||
|
$realpath = $dir.$filename;
|
||||||
|
$arephoto = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Define size of image if we need it
|
||||||
|
$imglinesize = array();
|
||||||
|
if (!empty($realpath) && $arephoto) {
|
||||||
|
$imgsize = pdf_getSizeForImage($realpath);
|
||||||
|
$imgsizewidth = $imgsize['width'] + 20;
|
||||||
|
$imgsizeheight = $imgsize['height'] + 20;
|
||||||
|
|
||||||
|
$midelpage = ($this->page_largeur - $this->marge_gauche - $this->marge_droite) / 2;
|
||||||
|
$posxphoto = $midelpage + ($midelpage / 2) - ($imgsizewidth / 2);
|
||||||
|
$posyphoto = $tab_top - 1;
|
||||||
|
$pdf->Image($realpath, $posxphoto, $posyphoto, $imgsizewidth, $imgsizeheight, '', '', '', 2, 300); // Use 300 dpi
|
||||||
|
$nexyafterphoto = $tab_top + $imgsizeheight;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Description
|
||||||
$pdf->SetFont('', '', $default_font_size);
|
$pdf->SetFont('', '', $default_font_size);
|
||||||
$pdf->writeHTMLCell(190, 3, $this->marge_gauche, $nexY, dol_htmlentitiesbr($object->description), 0, 1);
|
$pdf->writeHTMLCell(190, 3, $this->marge_gauche, $nexY, dol_htmlentitiesbr($object->description), 0, 1);
|
||||||
$nexY = $pdf->GetY();
|
$nexY = $pdf->GetY();
|
||||||
@ -276,30 +324,22 @@ class pdf_standard extends ModelePDFProduct
|
|||||||
$nexY = $pdf->GetY();
|
$nexY = $pdf->GetY();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$tab_top = 88;
|
||||||
|
if (!empty($nexyafterphoto) && $nexyafterphoto > $tab_top) {
|
||||||
|
$tab_top = $nexyafterphoto;
|
||||||
|
}
|
||||||
|
|
||||||
// Show notes
|
// Show notes
|
||||||
// TODO There is no public note on product yet
|
// TODO There is no public note on product yet
|
||||||
$notetoshow = empty($object->note_public) ? '' : $object->note_public;
|
$notetoshow = empty($object->note_public) ? '' : $object->note_public;
|
||||||
if (!empty($conf->global->MAIN_ADD_SALE_REP_SIGNATURE_IN_NOTE)) {
|
|
||||||
// Get first sale rep
|
|
||||||
if (is_object($object->thirdparty)) {
|
|
||||||
$salereparray = $object->thirdparty->getSalesRepresentatives($user);
|
|
||||||
$salerepobj = new User($this->db);
|
|
||||||
$salerepobj->fetch($salereparray[0]['id']);
|
|
||||||
if (!empty($salerepobj->signature)) {
|
|
||||||
$notetoshow = dol_concatdesc($notetoshow, $salerepobj->signature);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($notetoshow) {
|
if ($notetoshow) {
|
||||||
$substitutionarray = pdf_getSubstitutionArray($outputlangs, null, $object);
|
$substitutionarray = pdf_getSubstitutionArray($outputlangs, null, $object);
|
||||||
complete_substitutions_array($substitutionarray, $outputlangs, $object);
|
complete_substitutions_array($substitutionarray, $outputlangs, $object);
|
||||||
$notetoshow = make_substitutions($notetoshow, $substitutionarray, $outputlangs);
|
$notetoshow = make_substitutions($notetoshow, $substitutionarray, $outputlangs);
|
||||||
$notetoshow = convertBackOfficeMediasLinksToPublicLinks($notetoshow);
|
$notetoshow = convertBackOfficeMediasLinksToPublicLinks($notetoshow);
|
||||||
|
|
||||||
$tab_top = 88;
|
|
||||||
|
|
||||||
$pdf->SetFont('', '', $default_font_size - 1);
|
$pdf->SetFont('', '', $default_font_size - 1);
|
||||||
$pdf->writeHTMLCell(190, 3, $this->posxdesc - 1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1);
|
$pdf->writeHTMLCell(190, 3, $this->marge_gauche - 1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1);
|
||||||
$nexY = $pdf->GetY();
|
$nexY = $pdf->GetY();
|
||||||
$height_note = $nexY - $tab_top;
|
$height_note = $nexY - $tab_top;
|
||||||
|
|
||||||
@ -673,6 +713,9 @@ class pdf_standard extends ModelePDFProduct
|
|||||||
{
|
{
|
||||||
global $conf, $langs, $hookmanager;
|
global $conf, $langs, $hookmanager;
|
||||||
|
|
||||||
|
$ltrdirection = 'L';
|
||||||
|
if ($outputlangs->trans("DIRECTION") == 'rtl') $ltrdirection = 'R';
|
||||||
|
|
||||||
// Load traductions files required by page
|
// Load traductions files required by page
|
||||||
$outputlangs->loadLangs(array("main", "propal", "companies", "bills", "orders"));
|
$outputlangs->loadLangs(array("main", "propal", "companies", "bills", "orders"));
|
||||||
|
|
||||||
@ -687,34 +730,47 @@ class pdf_standard extends ModelePDFProduct
|
|||||||
pdf_pagehead($pdf, $outputlangs, $this->page_hauteur);
|
pdf_pagehead($pdf, $outputlangs, $this->page_hauteur);
|
||||||
|
|
||||||
// Show Draft Watermark
|
// Show Draft Watermark
|
||||||
if ($object->statut == 0 && getDolGlobalString('COMMANDE_DRAFT_WATERMARK')) {
|
if ($object->statut == 0 && getDolGlobalString('PRODUCT_DRAFT_WATERMARK')) {
|
||||||
pdf_watermark($pdf, $outputlangs, $this->page_hauteur, $this->page_largeur, 'mm', getDolGlobalString('COMMANDE_DRAFT_WATERMARK'));
|
pdf_watermark($pdf, $outputlangs, $this->page_hauteur, $this->page_largeur, 'mm', getDolGlobalString('COMMANDE_DRAFT_WATERMARK'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$pdf->SetTextColor(0, 0, 60);
|
$pdf->SetTextColor(0, 0, 60);
|
||||||
$pdf->SetFont('', 'B', $default_font_size + 3);
|
$pdf->SetFont('', 'B', $default_font_size + 3);
|
||||||
|
|
||||||
|
$w = 100;
|
||||||
|
|
||||||
$posy = $this->marge_haute;
|
$posy = $this->marge_haute;
|
||||||
$posx = $this->page_largeur - $this->marge_droite - 100;
|
$posx = $this->page_largeur - $this->marge_droite - 100;
|
||||||
|
|
||||||
$pdf->SetXY($this->marge_gauche, $posy);
|
$pdf->SetXY($this->marge_gauche, $posy);
|
||||||
|
|
||||||
// Logo
|
// Logo
|
||||||
$logo = $conf->mycompany->dir_output.'/logos/'.$this->emetteur->logo;
|
if (!getDolGlobalInt('PDF_DISABLE_MYCOMPANY_LOGO')) {
|
||||||
if ($this->emetteur->logo) {
|
if ($this->emetteur->logo) {
|
||||||
|
$logodir = $conf->mycompany->dir_output;
|
||||||
|
if (!empty($conf->mycompany->multidir_output[$object->entity])) {
|
||||||
|
$logodir = $conf->mycompany->multidir_output[$object->entity];
|
||||||
|
}
|
||||||
|
if (!getDolGlobalInt('MAIN_PDF_USE_LARGE_LOGO')) {
|
||||||
|
$logo = $logodir.'/logos/thumbs/'.$this->emetteur->logo_small;
|
||||||
|
} else {
|
||||||
|
$logo = $logodir.'/logos/'.$this->emetteur->logo;
|
||||||
|
}
|
||||||
if (is_readable($logo)) {
|
if (is_readable($logo)) {
|
||||||
$height = pdf_getHeightForLogo($logo);
|
$height = pdf_getHeightForLogo($logo);
|
||||||
$pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto)
|
$pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto)
|
||||||
} else {
|
} else {
|
||||||
$pdf->SetTextColor(200, 0, 0);
|
$pdf->SetTextColor(200, 0, 0);
|
||||||
$pdf->SetFont('', 'B', $default_font_size - 2);
|
$pdf->SetFont('', 'B', $default_font_size - 2);
|
||||||
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L');
|
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L');
|
||||||
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L');
|
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$text = $this->emetteur->name;
|
$text = $this->emetteur->name;
|
||||||
$pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L');
|
$pdf->MultiCell($w, 4, $outputlangs->convToOutputCharset($text), 0, $ltrdirection);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$pdf->SetFont('', 'B', $default_font_size + 3);
|
$pdf->SetFont('', 'B', $default_font_size + 3);
|
||||||
$pdf->SetXY($posx, $posy);
|
$pdf->SetXY($posx, $posy);
|
||||||
|
|||||||
@ -128,8 +128,7 @@ class mod_task_universal extends ModeleNumRefTask
|
|||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
||||||
|
|
||||||
// On defini critere recherche compteur
|
$mask = !empty($conf->global->PROJECT_TASK_UNIVERSAL_MASK) ? $conf->global->PROJECT_TASK_UNIVERSAL_MASK : '';
|
||||||
$mask = $conf->global->PROJECT_TASK_UNIVERSAL_MASK;
|
|
||||||
|
|
||||||
if (!$mask) {
|
if (!$mask) {
|
||||||
$this->error = 'NotConfigured';
|
$this->error = 'NotConfigured';
|
||||||
|
|||||||
@ -69,8 +69,22 @@ foreach ($object->fields as $key => $val) {
|
|||||||
$value = GETPOST($key, 'int');
|
$value = GETPOST($key, 'int');
|
||||||
} elseif ($val['type'] == 'double') {
|
} elseif ($val['type'] == 'double') {
|
||||||
$value = price2num(GETPOST($key, 'alphanohtml'));
|
$value = price2num(GETPOST($key, 'alphanohtml'));
|
||||||
} elseif ($val['type'] == 'text' || $val['type'] == 'html') {
|
} elseif (preg_match('/^text/', $val['type'])) {
|
||||||
$value = GETPOST($key, 'restricthtml');
|
$tmparray = explode(':', $val['type']);
|
||||||
|
if (!empty($tmparray[1])) {
|
||||||
|
$check = $tmparray[1];
|
||||||
|
} else {
|
||||||
|
$check = 'nohtml';
|
||||||
|
}
|
||||||
|
$value = GETPOST($key, $check);
|
||||||
|
} elseif (preg_match('/^html/', $val['type'])) {
|
||||||
|
$tmparray = explode(':', $val['type']);
|
||||||
|
if (!empty($tmparray[1])) {
|
||||||
|
$check = $tmparray[1];
|
||||||
|
} else {
|
||||||
|
$check = 'restricthtml';
|
||||||
|
}
|
||||||
|
$value = GETPOST($key, $check);
|
||||||
} elseif ($val['type'] == 'date') {
|
} elseif ($val['type'] == 'date') {
|
||||||
$value = dol_mktime(12, 0, 0, GETPOST($key.'month', 'int'), GETPOST($key.'day', 'int'), GETPOST($key.'year', 'int'));
|
$value = dol_mktime(12, 0, 0, GETPOST($key.'month', 'int'), GETPOST($key.'day', 'int'), GETPOST($key.'year', 'int'));
|
||||||
} elseif ($val['type'] == 'datetime') {
|
} elseif ($val['type'] == 'datetime') {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user