Merge branch 'develop' into kanbanPaymentSalary
This commit is contained in:
commit
e433b46b0f
25
.github/workflows/code_quality.yml
vendored
Normal file
25
.github/workflows/code_quality.yml
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
name: Qodana
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 20 * * *"
|
||||||
|
workflow_dispatch:
|
||||||
|
branches:
|
||||||
|
- develop
|
||||||
|
# push:
|
||||||
|
# branches:
|
||||||
|
# - develop
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
qodana:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 1
|
||||||
|
#php-version: '7.1'
|
||||||
|
- name: 'Qodana Scan'
|
||||||
|
uses: JetBrains/qodana-action@v2022.3.0
|
||||||
|
#with:
|
||||||
|
# php-version: '7.1'
|
||||||
|
env:
|
||||||
|
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
|
||||||
38
.github/workflows/doxygen-gh-pages.yml.disabled
vendored
Normal file
38
.github/workflows/doxygen-gh-pages.yml.disabled
vendored
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# See syntax file on https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions
|
||||||
|
name: Doxygen
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 15 * * *"
|
||||||
|
workflow_dispatch:
|
||||||
|
branches:
|
||||||
|
- develop
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Build
|
||||||
|
uses: DenverCoder1/doxygen-github-pages-action@v1.2.0
|
||||||
|
with:
|
||||||
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
branch: gh-pages
|
||||||
|
folder: build/html
|
||||||
|
config_file: build/doxygen/dolibarr-doxygen.doxyfile
|
||||||
|
|
||||||
|
# - name: Deploy
|
||||||
|
# uses: JamesIves/github-pages-deploy-action@v4
|
||||||
|
# with:
|
||||||
|
# branch: gh-pages
|
||||||
|
# folder: build/html # The folder the action should deploy.
|
||||||
|
# target-folder: docs/html2
|
||||||
|
|
||||||
|
#jobs:
|
||||||
|
# doxygen:
|
||||||
|
# runs-on: ubuntu-latest
|
||||||
|
# steps:
|
||||||
|
# - name: 'Doxygen'
|
||||||
|
# uses: mattnotmitt/doxygen-action@1.9.5
|
||||||
|
# with:
|
||||||
|
# doxyfile-path: build/doxygen
|
||||||
@ -4,6 +4,9 @@ name: "Exakat analysis"
|
|||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "0 20 * * *"
|
- cron: "0 20 * * *"
|
||||||
|
workflow_dispatch:
|
||||||
|
branches:
|
||||||
|
- develop
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@ -13,6 +16,8 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 1
|
||||||
- name: Exakat
|
- name: Exakat
|
||||||
uses: docker://exakat/exakat-ga
|
uses: docker://exakat/exakat-ga
|
||||||
with:
|
with:
|
||||||
3
.github/workflows/stale-issues-safe.yml
vendored
3
.github/workflows/stale-issues-safe.yml
vendored
@ -6,7 +6,8 @@ on:
|
|||||||
- cron: "0 21 * * *"
|
- cron: "0 21 * * *"
|
||||||
issue_comment:
|
issue_comment:
|
||||||
types: [created]
|
types: [created]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
permissions: {} # none
|
permissions: {} # none
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|||||||
81
ChangeLog
81
ChangeLog
@ -9,7 +9,7 @@ WARNING:
|
|||||||
|
|
||||||
Following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
|
Following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
|
||||||
* The deprecated method escapeunderscore() of database handlers has been removed. You must use escapeforlike instead.
|
* The deprecated method escapeunderscore() of database handlers has been removed. You must use escapeforlike instead.
|
||||||
|
* The method nb_expedition() has been renamed into countNbOfShipments()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ For users:
|
|||||||
NEW: Minimal PHP version is now PHP 7.0 instead of PHP 5.6
|
NEW: Minimal PHP version is now PHP 7.0 instead of PHP 5.6
|
||||||
NEW: #21780 Add pid field to Cronjob class and store PID on job execution
|
NEW: #21780 Add pid field to Cronjob class and store PID on job execution
|
||||||
NEW: #19680 Add option PRODUCT_ALLOW_EXTERNAL_DOWNLOAD to automatically have uploaded files shared publicly by a link
|
NEW: #19680 Add option PRODUCT_ALLOW_EXTERNAL_DOWNLOAD to automatically have uploaded files shared publicly by a link
|
||||||
NEW: #20650 can move the checkbox column on left (experimental option)
|
NEW: #20650 can move the checkbox column on left (experimental option MAIN_CHECKBOX_LEFT_COLUMN)
|
||||||
NEW: #21000 Added columns 'alias_name' on project, supplier invoice, supplier order, supplier proposals and task list
|
NEW: #21000 Added columns 'alias_name' on project, supplier invoice, supplier order, supplier proposals and task list
|
||||||
NEW: #21395 Added option for dark theme mode in display - color and theme
|
NEW: #21395 Added option for dark theme mode in display - color and theme
|
||||||
NEW: #21397 added option to auto define barcode numbers for third-parties in barcode module setup
|
NEW: #21397 added option to auto define barcode numbers for third-parties in barcode module setup
|
||||||
@ -96,18 +96,18 @@ NEW: can sort and preselected best supplier price
|
|||||||
NEW: Can use products categories to make inventory
|
NEW: Can use products categories to make inventory
|
||||||
NEW: Change filter type on tickets list into a multiselect combo
|
NEW: Change filter type on tickets list into a multiselect combo
|
||||||
NEW: conf TIMESPENT_ALWAYS_UPDATE_THM, when it's on we always check current thm of user to update it in task time line
|
NEW: conf TIMESPENT_ALWAYS_UPDATE_THM, when it's on we always check current thm of user to update it in task time line
|
||||||
NEW: constant PROPAL_NEW_AS_SIGNED
|
|
||||||
NEW: show date delivery planned on orders linked to company and product
|
NEW: show date delivery planned on orders linked to company and product
|
||||||
NEW: Default values in extrafields are not more limited to 255 char.
|
NEW: Default values in extrafields are not more limited to 255 char.
|
||||||
NEW: display currency in takepos menu
|
NEW: display currency in takepos menu
|
||||||
NEW: Enable online signature for interventions
|
NEW: Enable online signature for interventions
|
||||||
NEW: Encrypt all sensitive constants in llx_const
|
NEW: Encrypt all sensitive constants in llx_const
|
||||||
NEW: extrafield price with currency
|
|
||||||
NEW: filter on reception dates (from / to) in cheque paiement card
|
NEW: filter on reception dates (from / to) in cheque paiement card
|
||||||
NEW: Contracts: Default template of contract is not mandatory
|
NEW: Contracts: Default template of contract is not mandatory
|
||||||
NEW: Contracts: Manage Position (Rank) on Contract Lines
|
NEW: Contracts: Manage Position (Rank) on Contract Lines
|
||||||
NEW: EMail-Collector: add IMAP port setting
|
NEW: EMail-Collector: add IMAP port setting
|
||||||
NEW: EMail-Collector: add a button "Test collect"
|
NEW: EMail-Collector: add a button "Test collect"
|
||||||
|
NEW: Extrafields: field price with currency
|
||||||
|
NEW: Extrafields: support IP type in extrafields
|
||||||
NEW: Members: default_lang for members
|
NEW: Members: default_lang for members
|
||||||
NEW: Members: Table of membership types
|
NEW: Members: Table of membership types
|
||||||
NEW: Members: add free membership amounts at the membership type level
|
NEW: Members: add free membership amounts at the membership type level
|
||||||
@ -127,21 +127,17 @@ NEW: Website: can switch status of website and page from the website toolbar
|
|||||||
NEW: Website: Templates of websites are now directories and not zip into core repo
|
NEW: Website: Templates of websites are now directories and not zip into core repo
|
||||||
NEW: Website: add 4 other templates in website module
|
NEW: Website: add 4 other templates in website module
|
||||||
NEW: If we select another view list mode, we keep it
|
NEW: If we select another view list mode, we keep it
|
||||||
NEW: Init module bookcal
|
|
||||||
NEW: Introduce dolEncrypt and dolDecrypt to be able to encrypt data in db
|
NEW: Introduce dolEncrypt and dolDecrypt to be able to encrypt data in db
|
||||||
NEW: Invoice - Add french mention on pdf when vat debit option is on
|
NEW: Invoice - Add french mention on pdf when vat debit option is on
|
||||||
NEW: invoice export : add accounting affectation
|
NEW: invoice export : add accounting affectation
|
||||||
NEW: label on products categories filter
|
NEW: label on products categories filter
|
||||||
NEW: The link "add to bookmark" is always on top in the bookmark popup
|
NEW: The link "add to bookmark" is always on top in the bookmark popup
|
||||||
NEW: MAIN_SEARCH_CATEGORY_PRODUCT_ON_LISTS const to show category customer filter
|
|
||||||
NEW: Make module WebservicesClient deprecated. Use module WebHook instead.
|
NEW: Make module WebservicesClient deprecated. Use module WebHook instead.
|
||||||
NEW: manage no email with thirdparties (better for GDPR)
|
NEW: manage no email with thirdparties (better for GDPR)
|
||||||
NEW: Manage VAT on all lines on purchases cycle
|
NEW: Manage VAT on all lines on purchases cycle
|
||||||
NEW: manage virtual stock at a future date
|
NEW: manage virtual stock at a future date
|
||||||
NEW: On a bank reconciled line, we can modify the bank receipt
|
NEW: On a bank reconciled line, we can modify the bank receipt
|
||||||
NEW: On a form to send an email, we show all emails of all contacts of object
|
NEW: On a form to send an email, we show all emails of all contacts of object
|
||||||
NEW: Option PRODUCTBATCH_SHOW_WAREHOUSE_ON_SHIPMENT showing wh on PDF
|
|
||||||
NEW: Option PRODUIT_DESC_IN_FORM accept (desktop only or +smartphone)
|
|
||||||
NEW: Page for mass stock transfer can be used with no source stock
|
NEW: Page for mass stock transfer can be used with no source stock
|
||||||
NEW: parent company column and filter in invoice and order list
|
NEW: parent company column and filter in invoice and order list
|
||||||
NEW: Add show "Sales rep" option for PDF
|
NEW: Add show "Sales rep" option for PDF
|
||||||
@ -165,22 +161,28 @@ NEW: show product label on inventory
|
|||||||
NEW: show sell-by and eat-by dates only if not empty
|
NEW: show sell-by and eat-by dates only if not empty
|
||||||
NEW: show SellBy/EatBy dates for each batch product in shipment card
|
NEW: show SellBy/EatBy dates for each batch product in shipment card
|
||||||
NEW: skip accept/refuse process for proposals (option PROPAL_SKIP_ACCEPT_REFUSE)
|
NEW: skip accept/refuse process for proposals (option PROPAL_SKIP_ACCEPT_REFUSE)
|
||||||
NEW: SMTP using oauth2 authentication
|
NEW: experimental SMTP using PhpImap allowing OAuth2 authentication (need to add option MAIN_IMAP_USE_PHPIMAP)
|
||||||
NEW: can substitue project title in mail template
|
NEW: can substitue project title in mail template
|
||||||
NEW: Supplier order list - Add column private and public note
|
NEW: Supplier order list - Add column private and public note
|
||||||
NEW: Support IP type in extrafields
|
|
||||||
NEW: The purge of files can purge only if older than a number of seconds
|
NEW: The purge of files can purge only if older than a number of seconds
|
||||||
NEW: Update ActionComm type_code on email message ticket
|
NEW: Update ActionComm type_code on email message ticket
|
||||||
NEW: VAT - Admin - Add information on deadline day for submission of VAT declaration
|
NEW: VAT - Admin - Add information on deadline day for submission of VAT declaration
|
||||||
NEW: expand/collapse permissions on user permission page
|
NEW: expand/collapse permissions on user permission page
|
||||||
NEW: Add the target to select attendees of event for emailings
|
NEW: Add the target to select attendees of event for emailings
|
||||||
|
|
||||||
|
Option / Const for System:
|
||||||
|
NEW: Option PRODUCTBATCH_SHOW_WAREHOUSE_ON_SHIPMENT showing warehouse on PDF
|
||||||
|
NEW: Option PRODUIT_DESC_IN_FORM accept (desktop only or +smartphone)
|
||||||
|
NEW: MAIN_SEARCH_CATEGORY_PRODUCT_ON_LISTS const to show category customer filter
|
||||||
|
NEW: constant PROPAL_NEW_AS_SIGNED
|
||||||
|
|
||||||
Localisation:
|
Localisation:
|
||||||
NEW: adding JAPAN Chart-of-Account and regions/departments
|
NEW: adding JAPAN Chart-of-Account and regions/departments
|
||||||
NEW: adding NIF verification for Algeria
|
NEW: adding NIF verification for Algeria
|
||||||
|
|
||||||
Modules
|
Modules
|
||||||
NEW: Experimental module Asset
|
NEW: Experimental module Asset
|
||||||
|
NEW: Init module bookcal
|
||||||
|
|
||||||
|
|
||||||
For developers or integrators:
|
For developers or integrators:
|
||||||
@ -190,20 +192,26 @@ NEW: ModuleBuilder can generate code of class from an existing SQL table
|
|||||||
NEW: #20912 Add trigger to record the event of sending an email from a project
|
NEW: #20912 Add trigger to record the event of sending an email from a project
|
||||||
NEW: #21750 Added "Get lines and Post lines from BOM" at the REST Service
|
NEW: #21750 Added "Get lines and Post lines from BOM" at the REST Service
|
||||||
NEW: #22370 Modulebuilder supports 'alwayseditable' (like extrafields)
|
NEW: #22370 Modulebuilder supports 'alwayseditable' (like extrafields)
|
||||||
NEW: Removed completely the need for the library adodbtime
|
|
||||||
NEW: hook on agenda pages
|
|
||||||
NEW: hook to complete payment in TakePOS
|
|
||||||
NEW: hook "changeHelpURL" to modify target of the help button
|
|
||||||
NEW: hook formConfirm on action comm card
|
|
||||||
NEW: hook to modify supplier product html select
|
|
||||||
NEW: Add new hook for show virtual stock details on product stock card
|
|
||||||
NEW: Add new hooks for actioncomm
|
|
||||||
NEW: conf->global->SYSLOG_FILE_ONEPERSESSION accept a string
|
NEW: conf->global->SYSLOG_FILE_ONEPERSESSION accept a string
|
||||||
NEW: translate for contact type API, setup/ticket API, shipping method API
|
|
||||||
NEW: All ajax pages have now a top_httphead()
|
NEW: All ajax pages have now a top_httphead()
|
||||||
NEW: support multilang in Civilities API
|
|
||||||
|
API:
|
||||||
NEW: Add API for the partnership module
|
NEW: Add API for the partnership module
|
||||||
NEW: Add "Get lines and Post lines from BOM" in the API
|
NEW: Add "Get lines and Post lines from BOM" in the API
|
||||||
|
NEW: translate for contact type API, setup/ticket API, shipping method API
|
||||||
|
NEW: support multilang in Civilities API
|
||||||
|
|
||||||
|
Hooks:
|
||||||
|
NEW: Actioncomm - add new hooks for actioncomm
|
||||||
|
NEW: Actioncomm - hook formConfirm on action comm card
|
||||||
|
NEW: Agenda - hook on agenda pages
|
||||||
|
NEW: Help - hook "changeHelpURL" to modify target of the help button
|
||||||
|
NEW: Product - add hook to show virtual stock details on product stock card
|
||||||
|
NEW: Product - add hook to modify supplier product html select
|
||||||
|
NEW: TakePOS - add hook to complete payment in TakePOS
|
||||||
|
|
||||||
|
|
||||||
|
NEW: Removed completely the need for the library adodbtime
|
||||||
NEW: Replace fk_categories_product with categories_product in inventory
|
NEW: Replace fk_categories_product with categories_product in inventory
|
||||||
NEW: Rewrite of SQL request. Removed the join on category (for filter on categ), replaced with a EXISTS/NOT
|
NEW: Rewrite of SQL request. Removed the join on category (for filter on categ), replaced with a EXISTS/NOT
|
||||||
|
|
||||||
@ -222,6 +230,39 @@ 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 *****
|
||||||
|
|
||||||
|
FIX: Amount of localtax1 and 2 not correctly save on purchase order (the rate was saved instead)
|
||||||
|
FIX: #20415
|
||||||
|
FIX: #21280
|
||||||
|
FIX: #23008
|
||||||
|
FIX: #22271
|
||||||
|
FIX: #22837
|
||||||
|
FIX: #23019 Impossible to add task times to an existing draft invoice
|
||||||
|
FIX: #23072
|
||||||
|
FIX: #23087
|
||||||
|
FIX: #23115
|
||||||
|
FIX: #23116
|
||||||
|
FIX: #23281
|
||||||
|
FIX: bad selection of barcode numbering module
|
||||||
|
FIX: Can't see all time spent by all user
|
||||||
|
FIX: CI
|
||||||
|
FIX: CommonObject - showOptionals - Display blank td when MAIN_VIEW_LINE_NUMBER is enabled and action is confirm_valid
|
||||||
|
FIX: Documents API inconsistency
|
||||||
|
FIX: #23075
|
||||||
|
FIX: #23117
|
||||||
|
FIX: get multicurrency infos of propal when create order from propal with "WORKFLOW_PROPAL_AUTOCREATE_ORDER" conf
|
||||||
|
FIX: Give predictable order to inventory lines
|
||||||
|
FIX: include class multicurrency
|
||||||
|
FIX: methods declaration (backport fix 67b9a7dc07d708231d12b5e58800334d4a01ef98)
|
||||||
|
FIX: multicurrency_tx and not currency_tx
|
||||||
|
FIX: PGSQL Integer type does not have a free length
|
||||||
|
FIX: Product list in setup.php in new Module
|
||||||
|
FIX: propal and order stats broken on Tag+User(retricted customer list)
|
||||||
|
FIX: saving of numbering module for jobs
|
||||||
|
FIX: Stickler
|
||||||
|
FIX: travis
|
||||||
|
|
||||||
***** ChangeLog for 16.0.3 compared to 16.0.2 *****
|
***** ChangeLog for 16.0.3 compared to 16.0.2 *****
|
||||||
|
|
||||||
FIX: $sign is useless
|
FIX: $sign is useless
|
||||||
|
|||||||
@ -17,9 +17,9 @@ use Cwd;
|
|||||||
my $dir = getcwd;
|
my $dir = getcwd;
|
||||||
|
|
||||||
print "Current dir is: $dir\n";
|
print "Current dir is: $dir\n";
|
||||||
print "Running dir for doxygen must be: $DIR\n";
|
#print "Running dir for doxygen must be: $DIR\n";
|
||||||
|
|
||||||
if (! -s $CONFFILE)
|
if (! -s "build/doxygen/$CONFFILE")
|
||||||
{
|
{
|
||||||
print "Error: current directory for building Dolibarr doxygen documentation is not correct.\n";
|
print "Error: current directory for building Dolibarr doxygen documentation is not correct.\n";
|
||||||
print "\n";
|
print "\n";
|
||||||
@ -30,7 +30,7 @@ if (! -s $CONFFILE)
|
|||||||
exit 1;
|
exit 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$SOURCE="../..";
|
$SOURCE=".";
|
||||||
|
|
||||||
# Get version $MAJOR, $MINOR and $BUILD
|
# Get version $MAJOR, $MINOR and $BUILD
|
||||||
$result = open( IN, "< " . $SOURCE . "/htdocs/filefunc.inc.php" );
|
$result = open( IN, "< " . $SOURCE . "/htdocs/filefunc.inc.php" );
|
||||||
@ -47,8 +47,8 @@ $version=$MAJOR.".".$MINOR.".".$BUILD;
|
|||||||
|
|
||||||
|
|
||||||
print "Running doxygen for version ".$version.", please wait...\n";
|
print "Running doxygen for version ".$version.", please wait...\n";
|
||||||
print "cat $CONFFILE | sed -e 's/x\.y\.z/".$version."/' | doxygen $OPTIONS - 2>&1\n";
|
print "cat build/doxygen/$CONFFILE | sed -e 's/x\.y\.z/".$version."/' | doxygen $OPTIONS - 2>&1\n";
|
||||||
$result=`cat $CONFFILE | sed -e 's/x\.y\.z/$version/' | doxygen $OPTIONS - 2>&1`;
|
$result=`cat build/doxygen/$CONFFILE | sed -e 's/x\.y\.z/$version/' | doxygen $OPTIONS - 2>&1`;
|
||||||
|
|
||||||
print $result;
|
print $result;
|
||||||
|
|
||||||
|
|||||||
@ -1,14 +1,17 @@
|
|||||||
# Doxyfile 1.7.3
|
# Doxyfile 1.8.16
|
||||||
|
|
||||||
# This file describes the settings to be used by the documentation system
|
# This file describes the settings to be used by the documentation system
|
||||||
# doxygen (www.doxygen.org) for a project
|
# doxygen (www.doxygen.org) for a project.
|
||||||
#
|
#
|
||||||
# All text after a hash (#) is considered a comment and will be ignored
|
# All text after a double hash (##) is considered a comment and is placed in
|
||||||
|
# front of the TAG it is preceding.
|
||||||
|
#
|
||||||
|
# All text after a single hash (#) is considered a comment and will be ignored.
|
||||||
# The format is:
|
# The format is:
|
||||||
# TAG = value [value, ...]
|
# TAG = value [value, ...]
|
||||||
# For lists items can also be appended using:
|
# For lists, items can also be appended using:
|
||||||
# TAG += value [value, ...]
|
# TAG += value [value, ...]
|
||||||
# Values that contain spaces should be placed between quotes (" ")
|
# Values that contain spaces should be placed between quotes (\" \").
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# Project related configuration options
|
# Project related configuration options
|
||||||
@ -38,7 +41,7 @@ PROJECT_NUMBER = x.y.z
|
|||||||
# If a relative path is entered, it will be relative to the location
|
# If a relative path is entered, it will be relative to the location
|
||||||
# where doxygen was started. If left blank the current directory will be used.
|
# where doxygen was started. If left blank the current directory will be used.
|
||||||
|
|
||||||
OUTPUT_DIRECTORY = ../../build
|
OUTPUT_DIRECTORY = build
|
||||||
|
|
||||||
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
|
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
|
||||||
# 4096 sub-directories (in 2 levels) under the output directory of each output
|
# 4096 sub-directories (in 2 levels) under the output directory of each output
|
||||||
@ -114,7 +117,7 @@ FULL_PATH_NAMES = YES
|
|||||||
# If left blank the directory from which doxygen is run is used as the
|
# If left blank the directory from which doxygen is run is used as the
|
||||||
# path to strip.
|
# path to strip.
|
||||||
|
|
||||||
STRIP_FROM_PATH = "../.."
|
STRIP_FROM_PATH = "/home/dolibarr/doxygen.dolibarr.org/"
|
||||||
|
|
||||||
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
|
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
|
||||||
# the path mentioned in the documentation of a class, which tells
|
# the path mentioned in the documentation of a class, which tells
|
||||||
@ -287,7 +290,7 @@ TYPEDEF_HIDES_STRUCT = NO
|
|||||||
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
|
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
|
||||||
# corresponding to a cache size of 2^16 = 65536 symbols
|
# corresponding to a cache size of 2^16 = 65536 symbols
|
||||||
|
|
||||||
SYMBOL_CACHE_SIZE = 0
|
#SYMBOL_CACHE_SIZE = 0
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# Build related configuration options
|
# Build related configuration options
|
||||||
@ -448,7 +451,7 @@ GENERATE_TODOLIST = NO
|
|||||||
# disable (NO) the test list. This list is created by putting \test
|
# disable (NO) the test list. This list is created by putting \test
|
||||||
# commands in the documentation.
|
# commands in the documentation.
|
||||||
|
|
||||||
GENERATE_TESTLIST = YES
|
GENERATE_TESTLIST = NO
|
||||||
|
|
||||||
# The GENERATE_BUGLIST tag can be used to enable (YES) or
|
# The GENERATE_BUGLIST tag can be used to enable (YES) or
|
||||||
# disable (NO) the bug list. This list is created by putting \bug
|
# disable (NO) the bug list. This list is created by putting \bug
|
||||||
@ -487,7 +490,7 @@ SHOW_USED_FILES = YES
|
|||||||
# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
|
# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
|
||||||
# in the documentation. The default is NO.
|
# in the documentation. The default is NO.
|
||||||
|
|
||||||
SHOW_DIRECTORIES = YES
|
#SHOW_DIRECTORIES = YES
|
||||||
|
|
||||||
# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
|
# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
|
||||||
# This will remove the Files entry from the Quick Index and from the
|
# This will remove the Files entry from the Quick Index and from the
|
||||||
@ -571,7 +574,7 @@ WARN_FORMAT = "$file:$line: $text"
|
|||||||
# and error messages should be written. If left blank the output is written
|
# and error messages should be written. If left blank the output is written
|
||||||
# to stderr.
|
# to stderr.
|
||||||
|
|
||||||
WARN_LOGFILE = doxygen_warnings.log
|
WARN_LOGFILE = build/html/doxygen_warnings.log
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# configuration options related to the input files
|
# configuration options related to the input files
|
||||||
@ -582,7 +585,7 @@ WARN_LOGFILE = doxygen_warnings.log
|
|||||||
# directories like "/usr/src/myproject". Separate the files or directories
|
# directories like "/usr/src/myproject". Separate the files or directories
|
||||||
# with spaces.
|
# with spaces.
|
||||||
|
|
||||||
INPUT = ../../htdocs ../../scripts
|
INPUT = htdocs scripts
|
||||||
|
|
||||||
# This tag can be used to specify the character encoding of the source files
|
# This tag can be used to specify the character encoding of the source files
|
||||||
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
|
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
|
||||||
@ -611,7 +614,7 @@ RECURSIVE = YES
|
|||||||
# excluded from the INPUT source files. This way you can easily exclude a
|
# excluded from the INPUT source files. This way you can easily exclude a
|
||||||
# subdirectory from a directory tree whose root is specified with the INPUT tag.
|
# subdirectory from a directory tree whose root is specified with the INPUT tag.
|
||||||
|
|
||||||
EXCLUDE = ../../build ../../dev ../../doc ../../document ../../documents ../../htdocs/conf/conf.php ../../htdocs/custom ../../htdocs/document ../../htdocs/documents ../../htdocs/includes
|
EXCLUDE = build dev doc document documents htdocs/conf/conf.php htdocs/custom htdocs/document htdocs/documents htdocs/includes htdocs/install/doctemplates
|
||||||
|
|
||||||
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
|
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
|
||||||
# directories that are symbolic links (a Unix filesystem feature) are excluded
|
# directories that are symbolic links (a Unix filesystem feature) are excluded
|
||||||
@ -625,7 +628,7 @@ EXCLUDE_SYMLINKS = YES
|
|||||||
# against the file with absolute path, so to exclude all test directories
|
# against the file with absolute path, so to exclude all test directories
|
||||||
# for example use the pattern */test/*
|
# for example use the pattern */test/*
|
||||||
|
|
||||||
EXCLUDE_PATTERNS = */CVS/* *google* *pibarcode*
|
EXCLUDE_PATTERNS = */CVS/*
|
||||||
|
|
||||||
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
|
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
|
||||||
# (namespaces, classes, functions, etc.) that should be excluded from the
|
# (namespaces, classes, functions, etc.) that should be excluded from the
|
||||||
@ -639,27 +642,27 @@ EXCLUDE_SYMBOLS =
|
|||||||
# directories that contain example code fragments that are included (see
|
# directories that contain example code fragments that are included (see
|
||||||
# the \include command).
|
# the \include command).
|
||||||
|
|
||||||
EXAMPLE_PATH = ../../htdocs/modulebuilder/template
|
#EXAMPLE_PATH = htdocs/modulebuilder/template
|
||||||
|
|
||||||
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
|
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
|
||||||
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
|
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
|
||||||
# and *.h) to filter out the source-files in the directories. If left
|
# and *.h) to filter out the source-files in the directories. If left
|
||||||
# blank all files are included.
|
# blank all files are included.
|
||||||
|
|
||||||
EXAMPLE_PATTERNS = *.php
|
#EXAMPLE_PATTERNS = *.php
|
||||||
|
|
||||||
# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
|
# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
|
||||||
# searched for input files to be used with the \include or \dontinclude
|
# searched for input files to be used with the \include or \dontinclude
|
||||||
# commands irrespective of the value of the RECURSIVE tag.
|
# commands irrespective of the value of the RECURSIVE tag.
|
||||||
# Possible values are YES and NO. If left blank NO is used.
|
# Possible values are YES and NO. If left blank NO is used.
|
||||||
|
|
||||||
EXAMPLE_RECURSIVE = NO
|
#EXAMPLE_RECURSIVE = NO
|
||||||
|
|
||||||
# The IMAGE_PATH tag can be used to specify one or more files or
|
# The IMAGE_PATH tag can be used to specify one or more files or
|
||||||
# directories that contain image that are included in the documentation (see
|
# directories that contain image that are included in the documentation (see
|
||||||
# the \image command).
|
# the \image command).
|
||||||
|
|
||||||
IMAGE_PATH = ../../doc/images
|
IMAGE_PATH = doc/images
|
||||||
|
|
||||||
# The INPUT_FILTER tag can be used to specify a program that doxygen should
|
# The INPUT_FILTER tag can be used to specify a program that doxygen should
|
||||||
# invoke to filter for each input file. Doxygen will invoke the filter program
|
# invoke to filter for each input file. Doxygen will invoke the filter program
|
||||||
@ -762,7 +765,7 @@ ALPHABETICAL_INDEX = YES
|
|||||||
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
|
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
|
||||||
# in which this list will be split (can be a number in the range [1..20])
|
# in which this list will be split (can be a number in the range [1..20])
|
||||||
|
|
||||||
COLS_IN_ALPHA_INDEX = 5
|
#COLS_IN_ALPHA_INDEX = 5
|
||||||
|
|
||||||
# In case all classes in a project start with a common prefix, all
|
# In case all classes in a project start with a common prefix, all
|
||||||
# classes will be put under the same header in the alphabetical index.
|
# classes will be put under the same header in the alphabetical index.
|
||||||
@ -775,14 +778,16 @@ IGNORE_PREFIX =
|
|||||||
# configuration options related to the HTML output
|
# configuration options related to the HTML output
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
|
# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
|
||||||
# generate HTML output.
|
# The default value is: YES.
|
||||||
|
|
||||||
GENERATE_HTML = YES
|
GENERATE_HTML = YES
|
||||||
|
|
||||||
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
|
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
|
||||||
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
|
||||||
# put in front of it. If left blank `html' will be used as the default path.
|
# it.
|
||||||
|
# The default directory is: html.
|
||||||
|
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||||
|
|
||||||
HTML_OUTPUT = html
|
HTML_OUTPUT = html
|
||||||
|
|
||||||
@ -797,14 +802,14 @@ HTML_FILE_EXTENSION = .html
|
|||||||
# standard header.
|
# standard header.
|
||||||
|
|
||||||
# Does not work with 1.7.3
|
# Does not work with 1.7.3
|
||||||
#HTML_HEADER = doxygen_header.html
|
#HTML_HEADER = build/doxygen/doxygen_header.html
|
||||||
|
|
||||||
# The HTML_FOOTER tag can be used to specify a personal HTML footer for
|
# The HTML_FOOTER tag can be used to specify a personal HTML footer for
|
||||||
# each generated HTML page. If it is left blank doxygen will generate a
|
# each generated HTML page. If it is left blank doxygen will generate a
|
||||||
# standard footer.
|
# standard footer.
|
||||||
|
|
||||||
# Does not work with 1.7.3
|
# Does not work with 1.7.3
|
||||||
HTML_FOOTER = doxygen_footer.html
|
HTML_FOOTER = build/doxygen/doxygen_footer.html
|
||||||
|
|
||||||
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
|
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
|
||||||
# style sheet that is used by each HTML page. It can be used to
|
# style sheet that is used by each HTML page. It can be used to
|
||||||
@ -850,7 +855,18 @@ HTML_TIMESTAMP = YES
|
|||||||
# files or namespaces will be aligned in HTML using tables. If set to
|
# files or namespaces will be aligned in HTML using tables. If set to
|
||||||
# NO a bullet list will be used.
|
# NO a bullet list will be used.
|
||||||
|
|
||||||
HTML_ALIGN_MEMBERS = YES
|
#HTML_ALIGN_MEMBERS = YES
|
||||||
|
|
||||||
|
# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML
|
||||||
|
# documentation will contain a main index with vertical navigation menus that
|
||||||
|
# are dynamically created via Javascript. If disabled, the navigation index will
|
||||||
|
# consists of multiple levels of tabs that are statically embedded in every HTML
|
||||||
|
# page. Disable this option to support browsers that do not have Javascript,
|
||||||
|
# like the Qt help browser.
|
||||||
|
# The default value is: YES.
|
||||||
|
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||||
|
|
||||||
|
HTML_DYNAMIC_MENUS = NO
|
||||||
|
|
||||||
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
|
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
|
||||||
# documentation will contain sections that can be hidden and shown after the
|
# documentation will contain sections that can be hidden and shown after the
|
||||||
@ -858,7 +874,7 @@ HTML_ALIGN_MEMBERS = YES
|
|||||||
# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
|
# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
|
||||||
# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
|
# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
|
||||||
|
|
||||||
HTML_DYNAMIC_SECTIONS = YES
|
HTML_DYNAMIC_SECTIONS = NO
|
||||||
|
|
||||||
# If the GENERATE_DOCSET tag is set to YES, additional index files
|
# If the GENERATE_DOCSET tag is set to YES, additional index files
|
||||||
# will be generated that can be used as input for Apple's Xcode 3
|
# will be generated that can be used as input for Apple's Xcode 3
|
||||||
@ -1003,7 +1019,7 @@ QHG_LOCATION =
|
|||||||
# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
|
# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
|
||||||
# the help appears.
|
# the help appears.
|
||||||
|
|
||||||
GENERATE_ECLIPSEHELP = YES
|
GENERATE_ECLIPSEHELP = NO
|
||||||
|
|
||||||
# A unique identifier for the eclipse help plugin. When installing the plugin
|
# A unique identifier for the eclipse help plugin. When installing the plugin
|
||||||
# the directory name containing the HTML and XML files should also have
|
# the directory name containing the HTML and XML files should also have
|
||||||
@ -1035,7 +1051,7 @@ GENERATE_TREEVIEW = NO
|
|||||||
# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
|
# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
|
||||||
# and Class Hierarchy pages using a tree view instead of an ordered list.
|
# and Class Hierarchy pages using a tree view instead of an ordered list.
|
||||||
|
|
||||||
USE_INLINE_TREES = NO
|
#USE_INLINE_TREES = NO
|
||||||
|
|
||||||
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
|
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
|
||||||
# used to set the initial width (in pixels) of the frame in which the tree
|
# used to set the initial width (in pixels) of the frame in which the tree
|
||||||
@ -1072,7 +1088,7 @@ FORMULA_TRANSPARENT = YES
|
|||||||
# typically be disabled. For large projects the javascript based search engine
|
# typically be disabled. For large projects the javascript based search engine
|
||||||
# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
|
# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
|
||||||
|
|
||||||
SEARCHENGINE = NO
|
SEARCHENGINE = YES
|
||||||
|
|
||||||
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
|
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
|
||||||
# implemented using a PHP enabled web server instead of at the web client
|
# implemented using a PHP enabled web server instead of at the web client
|
||||||
@ -1082,7 +1098,7 @@ SEARCHENGINE = NO
|
|||||||
# full text search. The disadvances is that it is more difficult to setup
|
# full text search. The disadvances is that it is more difficult to setup
|
||||||
# and does not have live searching capabilities.
|
# and does not have live searching capabilities.
|
||||||
|
|
||||||
SERVER_BASED_SEARCH = NO
|
SERVER_BASED_SEARCH = YES
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# configuration options related to the LaTeX output
|
# configuration options related to the LaTeX output
|
||||||
@ -1260,13 +1276,13 @@ XML_OUTPUT = xml
|
|||||||
# which can be used by a validating XML parser to check the
|
# which can be used by a validating XML parser to check the
|
||||||
# syntax of the XML files.
|
# syntax of the XML files.
|
||||||
|
|
||||||
XML_SCHEMA =
|
#XML_SCHEMA =
|
||||||
|
|
||||||
# The XML_DTD tag can be used to specify an XML DTD,
|
# The XML_DTD tag can be used to specify an XML DTD,
|
||||||
# which can be used by a validating XML parser to check the
|
# which can be used by a validating XML parser to check the
|
||||||
# syntax of the XML files.
|
# syntax of the XML files.
|
||||||
|
|
||||||
XML_DTD =
|
#XML_DTD =
|
||||||
|
|
||||||
# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
|
# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
|
||||||
# dump the program listings (including syntax highlighting
|
# dump the program listings (including syntax highlighting
|
||||||
@ -1431,7 +1447,7 @@ EXTERNAL_GROUPS = YES
|
|||||||
# The PERL_PATH should be the absolute path and name of the perl script
|
# The PERL_PATH should be the absolute path and name of the perl script
|
||||||
# interpreter (i.e. the result of `which perl').
|
# interpreter (i.e. the result of `which perl').
|
||||||
|
|
||||||
PERL_PATH = /usr/bin/perl
|
#PERL_PATH = /usr/bin/perl
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# Configuration options related to the dot tool
|
# Configuration options related to the dot tool
|
||||||
@ -1453,7 +1469,7 @@ CLASS_DIAGRAMS = NO
|
|||||||
# the mscgen tool resides. If left empty the tool is assumed to be found in the
|
# the mscgen tool resides. If left empty the tool is assumed to be found in the
|
||||||
# default search path.
|
# default search path.
|
||||||
|
|
||||||
MSCGEN_PATH =
|
#MSCGEN_PATH =
|
||||||
|
|
||||||
# If set to YES, the inheritance and collaboration graphs will hide
|
# If set to YES, the inheritance and collaboration graphs will hide
|
||||||
# inheritance and usage relations if the target is undocumented
|
# inheritance and usage relations if the target is undocumented
|
||||||
@ -1485,7 +1501,7 @@ DOT_NUM_THREADS = 0
|
|||||||
# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
|
# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
|
||||||
# containing the font.
|
# containing the font.
|
||||||
|
|
||||||
DOT_FONTNAME = FreeSans.ttf
|
#DOT_FONTNAME = FreeSans.ttf
|
||||||
|
|
||||||
# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
|
# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
|
||||||
# The default size is 10pt.
|
# The default size is 10pt.
|
||||||
@ -1634,3 +1650,7 @@ GENERATE_LEGEND = YES
|
|||||||
# the various graphs.
|
# the various graphs.
|
||||||
|
|
||||||
DOT_CLEANUP = YES
|
DOT_CLEANUP = YES
|
||||||
|
|
||||||
|
|
||||||
|
FULL_SIDEBAR = NO
|
||||||
|
HTML_EXTRA_STYLESHEET = build/doxygen/doxygen-awesome.css
|
||||||
|
|||||||
2413
build/doxygen/doxygen-awesome.css
Normal file
2413
build/doxygen/doxygen-awesome.css
Normal file
File diff suppressed because it is too large
Load Diff
@ -47,6 +47,7 @@ $search_label = GETPOST('search_label', 'alpha');
|
|||||||
$search_labelshort = GETPOST('search_labelshort', 'alpha');
|
$search_labelshort = GETPOST('search_labelshort', 'alpha');
|
||||||
$search_accountparent = GETPOST('search_accountparent', 'alpha');
|
$search_accountparent = GETPOST('search_accountparent', 'alpha');
|
||||||
$search_pcgtype = GETPOST('search_pcgtype', 'alpha');
|
$search_pcgtype = GETPOST('search_pcgtype', 'alpha');
|
||||||
|
$search_import_key = GETPOST('search_import_key', 'alpha');
|
||||||
$toselect = GETPOST('toselect', 'array');
|
$toselect = GETPOST('toselect', 'array');
|
||||||
$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit;
|
$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit;
|
||||||
$confirm = GETPOST('confirm', 'alpha');
|
$confirm = GETPOST('confirm', 'alpha');
|
||||||
@ -83,16 +84,19 @@ if (!$sortorder) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$arrayfields = array(
|
$arrayfields = array(
|
||||||
'aa.account_number'=>array('label'=>$langs->trans("AccountNumber"), 'checked'=>1),
|
'aa.account_number'=>array('label'=>"AccountNumber", 'checked'=>1),
|
||||||
'aa.label'=>array('label'=>$langs->trans("Label"), 'checked'=>1),
|
'aa.label'=>array('label'=>"Label", 'checked'=>1),
|
||||||
'aa.labelshort'=>array('label'=>$langs->trans("LabelToShow"), 'checked'=>1),
|
'aa.labelshort'=>array('label'=>"LabelToShow", 'checked'=>1),
|
||||||
'aa.account_parent'=>array('label'=>$langs->trans("Accountparent"), 'checked'=>1),
|
'aa.account_parent'=>array('label'=>"Accountparent", 'checked'=>1),
|
||||||
'aa.pcg_type'=>array('label'=>$langs->trans("Pcgtype"), 'checked'=>1, 'help'=>'PcgtypeDesc'),
|
'aa.pcg_type'=>array('label'=>"Pcgtype", 'checked'=>1, 'help'=>'PcgtypeDesc'),
|
||||||
'aa.reconcilable'=>array('label'=>$langs->trans("Reconcilable"), 'checked'=>1),
|
'categories'=>array('label'=>"AccountingCategories", 'checked'=>-1, 'help'=>'AccountingCategoriesDesc'),
|
||||||
'aa.active'=>array('label'=>$langs->trans("Activated"), 'checked'=>1)
|
'aa.reconcilable'=>array('label'=>"Reconcilable", 'checked'=>1),
|
||||||
|
'aa.active'=>array('label'=>"Activated", 'checked'=>1),
|
||||||
|
'aa.import_key'=>array('label'=>"ImportId", 'checked'=>-1)
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($conf->global->MAIN_FEATURES_LEVEL < 2) {
|
if ($conf->global->MAIN_FEATURES_LEVEL < 2) {
|
||||||
|
unset($arrayfields['categories']);
|
||||||
unset($arrayfields['aa.reconcilable']);
|
unset($arrayfields['aa.reconcilable']);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -226,15 +230,12 @@ if ($action == 'delete') {
|
|||||||
|
|
||||||
$pcgver = $conf->global->CHARTOFACCOUNTS;
|
$pcgver = $conf->global->CHARTOFACCOUNTS;
|
||||||
|
|
||||||
$sql = "SELECT aa.rowid, aa.fk_pcg_version, aa.pcg_type, aa.account_number, aa.account_parent , aa.label, aa.labelshort, aa.reconcilable, aa.active, ";
|
$sql = "SELECT aa.rowid, aa.fk_pcg_version, aa.pcg_type, aa.account_number, aa.account_parent, aa.label, aa.labelshort, aa.fk_accounting_category,";
|
||||||
|
$sql .= " aa.reconcilable, aa.active, aa.import_key,";
|
||||||
$sql .= " a2.rowid as rowid2, a2.label as label2, a2.account_number as account_number2";
|
$sql .= " a2.rowid as rowid2, a2.label as label2, a2.account_number as account_number2";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."accounting_account as aa";
|
$sql .= " FROM ".MAIN_DB_PREFIX."accounting_account as aa";
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_system as asy ON aa.fk_pcg_version = asy.pcg_version AND aa.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_system as asy ON aa.fk_pcg_version = asy.pcg_version AND aa.entity = ".((int) $conf->entity);
|
||||||
if ($db->type == 'pgsql') {
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as a2 ON a2.rowid = aa.account_parent AND a2.entity = ".((int) $conf->entity);
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as a2 ON a2.rowid = aa.account_parent AND a2.entity = ".$conf->entity;
|
|
||||||
} else {
|
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as a2 ON a2.rowid = aa.account_parent AND a2.entity = ".$conf->entity;
|
|
||||||
}
|
|
||||||
$sql .= " WHERE asy.rowid = ".((int) $pcgver);
|
$sql .= " WHERE asy.rowid = ".((int) $pcgver);
|
||||||
//print $sql;
|
//print $sql;
|
||||||
if (strlen(trim($search_account))) {
|
if (strlen(trim($search_account))) {
|
||||||
@ -337,6 +338,9 @@ if ($resql) {
|
|||||||
if ($search_pcgtype) {
|
if ($search_pcgtype) {
|
||||||
$param .= '&search_pcgtype='.urlencode($search_pcgtype);
|
$param .= '&search_pcgtype='.urlencode($search_pcgtype);
|
||||||
}
|
}
|
||||||
|
if ($optioncss != '') {
|
||||||
|
$param .= '&search_import_key='.urlencode($search_import_key);
|
||||||
|
}
|
||||||
if ($optioncss != '') {
|
if ($optioncss != '') {
|
||||||
$param .= '&optioncss='.urlencode($optioncss);
|
$param .= '&optioncss='.urlencode($optioncss);
|
||||||
}
|
}
|
||||||
@ -439,8 +443,17 @@ if ($resql) {
|
|||||||
print $formaccounting->select_account($search_accountparent, 'search_accountparent', 2, array(), 0, 0, 'maxwidth150');
|
print $formaccounting->select_account($search_accountparent, 'search_accountparent', 2, array(), 0, 0, 'maxwidth150');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
// Predefined group
|
||||||
if (!empty($arrayfields['aa.pcg_type']['checked'])) {
|
if (!empty($arrayfields['aa.pcg_type']['checked'])) {
|
||||||
print '<td class="liste_titre"><input type="text" class="flat width100" name="search_pcgtype" value="'.$search_pcgtype.'"></td>';
|
print '<td class="liste_titre"><input type="text" class="flat width75" name="search_pcgtype" value="'.$search_pcgtype.'"></td>';
|
||||||
|
}
|
||||||
|
// Custom groups
|
||||||
|
if (!empty($arrayfields['categories']['checked'])) {
|
||||||
|
print '<td class="liste_titre"></td>';
|
||||||
|
}
|
||||||
|
// Import key
|
||||||
|
if (!empty($arrayfields['aa.import_key']['checked'])) {
|
||||||
|
print '<td class="liste_titre"><input type="text" class="flat width75" name="search_import_key" value="'.$search_import_key.'"></td>';
|
||||||
}
|
}
|
||||||
if ($conf->global->MAIN_FEATURES_LEVEL >= 2) {
|
if ($conf->global->MAIN_FEATURES_LEVEL >= 2) {
|
||||||
if (!empty($arrayfields['aa.reconcilable']['checked'])) {
|
if (!empty($arrayfields['aa.reconcilable']['checked'])) {
|
||||||
@ -471,6 +484,12 @@ if ($resql) {
|
|||||||
if (!empty($arrayfields['aa.pcg_type']['checked'])) {
|
if (!empty($arrayfields['aa.pcg_type']['checked'])) {
|
||||||
print_liste_field_titre($arrayfields['aa.pcg_type']['label'], $_SERVER["PHP_SELF"], 'aa.pcg_type,aa.account_number', '', $param, '', $sortfield, $sortorder, '', $arrayfields['aa.pcg_type']['help'], 1);
|
print_liste_field_titre($arrayfields['aa.pcg_type']['label'], $_SERVER["PHP_SELF"], 'aa.pcg_type,aa.account_number', '', $param, '', $sortfield, $sortorder, '', $arrayfields['aa.pcg_type']['help'], 1);
|
||||||
}
|
}
|
||||||
|
if (!empty($arrayfields['categories']['checked'])) {
|
||||||
|
print_liste_field_titre($arrayfields['categories']['label'], $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, '', $arrayfields['categories']['help'], 1);
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['aa.import_key']['checked'])) {
|
||||||
|
print_liste_field_titre($arrayfields['aa.import_key']['label'], $_SERVER["PHP_SELF"], 'aa.import_key', '', $param, '', $sortfield, $sortorder, '', $arrayfields['aa.import_key']['help'], 1);
|
||||||
|
}
|
||||||
if ($conf->global->MAIN_FEATURES_LEVEL >= 2) {
|
if ($conf->global->MAIN_FEATURES_LEVEL >= 2) {
|
||||||
if (!empty($arrayfields['aa.reconcilable']['checked'])) {
|
if (!empty($arrayfields['aa.reconcilable']['checked'])) {
|
||||||
print_liste_field_titre($arrayfields['aa.reconcilable']['label'], $_SERVER["PHP_SELF"], 'aa.reconcilable', '', $param, '', $sortfield, $sortorder);
|
print_liste_field_titre($arrayfields['aa.reconcilable']['label'], $_SERVER["PHP_SELF"], 'aa.reconcilable', '', $param, '', $sortfield, $sortorder);
|
||||||
@ -505,7 +524,7 @@ if ($resql) {
|
|||||||
// Account label
|
// Account label
|
||||||
if (!empty($arrayfields['aa.label']['checked'])) {
|
if (!empty($arrayfields['aa.label']['checked'])) {
|
||||||
print "<td>";
|
print "<td>";
|
||||||
print $obj->label;
|
print dol_escape_htmltag($obj->label);
|
||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
@ -515,7 +534,7 @@ if ($resql) {
|
|||||||
// Account label to show (label short)
|
// Account label to show (label short)
|
||||||
if (!empty($arrayfields['aa.labelshort']['checked'])) {
|
if (!empty($arrayfields['aa.labelshort']['checked'])) {
|
||||||
print "<td>";
|
print "<td>";
|
||||||
print $obj->labelshort;
|
print dol_escape_htmltag($obj->labelshort);
|
||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
@ -549,10 +568,30 @@ if ($resql) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Chart of accounts type
|
// Predefined group (deprecated)
|
||||||
if (!empty($arrayfields['aa.pcg_type']['checked'])) {
|
if (!empty($arrayfields['aa.pcg_type']['checked'])) {
|
||||||
print "<td>";
|
print "<td>";
|
||||||
print $obj->pcg_type;
|
print dol_escape_htmltag($obj->pcg_type);
|
||||||
|
print "</td>\n";
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Custom accounts
|
||||||
|
if (!empty($arrayfields['categories']['checked'])) {
|
||||||
|
print "<td>";
|
||||||
|
// TODO Get all custom groups labels the account is in
|
||||||
|
print dol_escape_htmltag($obj->fk_accounting_category);
|
||||||
|
print "</td>\n";
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Import id
|
||||||
|
if (!empty($arrayfields['aa.import_key']['checked'])) {
|
||||||
|
print "<td>";
|
||||||
|
print dol_escape_htmltag($obj->import_key);
|
||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
|
|||||||
@ -640,7 +640,8 @@ if ($id) {
|
|||||||
foreach ($fieldlist as $field => $value) {
|
foreach ($fieldlist as $field => $value) {
|
||||||
$showfield = 1;
|
$showfield = 1;
|
||||||
$class = "left";
|
$class = "left";
|
||||||
$valuetoshow = $obj->{$fieldlist[$field]};
|
$tmpvar = $fieldlist[$field];
|
||||||
|
$valuetoshow = $obj->$tmpvar;
|
||||||
if ($value == 'type_template') {
|
if ($value == 'type_template') {
|
||||||
$valuetoshow = isset($elementList[$valuetoshow]) ? $elementList[$valuetoshow] : $valuetoshow;
|
$valuetoshow = isset($elementList[$valuetoshow]) ? $elementList[$valuetoshow] : $valuetoshow;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -282,7 +282,7 @@ if ($action == 'create') {
|
|||||||
print $form->textwithpicto($langs->trans("AccountingCategory"), $langs->transnoentitiesnoconv("AccountingAccountGroupsDesc"));
|
print $form->textwithpicto($langs->trans("AccountingCategory"), $langs->transnoentitiesnoconv("AccountingAccountGroupsDesc"));
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$formaccounting->select_accounting_category($object->account_category, 'account_category', 1, 0, 1);
|
print $formaccounting->select_accounting_category($object->account_category, 'account_category', 1, 0, 1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
@ -359,7 +359,7 @@ if ($action == 'create') {
|
|||||||
print $form->textwithpicto($langs->trans("AccountingCategory"), $langs->transnoentitiesnoconv("AccountingAccountGroupsDesc"));
|
print $form->textwithpicto($langs->trans("AccountingCategory"), $langs->transnoentitiesnoconv("AccountingAccountGroupsDesc"));
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$formaccounting->select_accounting_category($object->account_category, 'account_category', 1);
|
print $formaccounting->select_accounting_category($object->account_category, 'account_category', 1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|||||||
@ -45,6 +45,26 @@ if ($cat_id == 0) {
|
|||||||
$cat_id = null;
|
$cat_id = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Load variable for pagination
|
||||||
|
$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit;
|
||||||
|
$sortfield = GETPOST('sortfield', 'aZ09comma');
|
||||||
|
$sortorder = GETPOST('sortorder', 'aZ09comma');
|
||||||
|
$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
|
||||||
|
if (empty($page) || $page < 0 || GETPOST('button_search', 'alpha') || GETPOST('button_removefilter', 'alpha')) {
|
||||||
|
// If $page is not defined, or '' or -1 or if we click on clear filters
|
||||||
|
$page = 0;
|
||||||
|
}
|
||||||
|
$offset = $limit * $page;
|
||||||
|
$pageprev = $page - 1;
|
||||||
|
$pagenext = $page + 1;
|
||||||
|
|
||||||
|
if (empty($sortfield)) {
|
||||||
|
$sortfield = 'account_number';
|
||||||
|
}
|
||||||
|
if (empty($sortorder)) {
|
||||||
|
$sortorder = 'ASC';
|
||||||
|
}
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
if (!$user->hasRight('accounting', 'chartofaccount')) {
|
if (!$user->hasRight('accounting', 'chartofaccount')) {
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
@ -111,7 +131,7 @@ print '<table class="border centpercent">';
|
|||||||
// Select the category
|
// Select the category
|
||||||
print '<tr><td class="titlefield">'.$langs->trans("AccountingCategory").'</td>';
|
print '<tr><td class="titlefield">'.$langs->trans("AccountingCategory").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$formaccounting->select_accounting_category($cat_id, 'account_category', 1, 0, 0, 0);
|
print $formaccounting->select_accounting_category($cat_id, 'account_category', 1, 0, 0, 0);
|
||||||
print '<input type="submit" class="button small" value="'.$langs->trans("Select").'">';
|
print '<input type="submit" class="button small" value="'.$langs->trans("Select").'">';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
@ -137,14 +157,6 @@ if (!empty($cat_id)) {
|
|||||||
if (is_array($accountingcategory->lines_cptbk) && count($accountingcategory->lines_cptbk) > 0) {
|
if (is_array($accountingcategory->lines_cptbk) && count($accountingcategory->lines_cptbk) > 0) {
|
||||||
print img_picto($langs->trans("AccountingAccount"), 'accounting_account', 'class="pictofixedwith"');
|
print img_picto($langs->trans("AccountingAccount"), 'accounting_account', 'class="pictofixedwith"');
|
||||||
print $form->multiselectarray('cpt_bk', $arraykeyvalue, GETPOST('cpt_bk', 'array'), null, null, '', 0, "80%", '', '', $langs->transnoentitiesnoconv("AddAccountFromBookKeepingWithNoCategories"));
|
print $form->multiselectarray('cpt_bk', $arraykeyvalue, GETPOST('cpt_bk', 'array'), null, null, '', 0, "80%", '', '', $langs->transnoentitiesnoconv("AddAccountFromBookKeepingWithNoCategories"));
|
||||||
//print '<br>';
|
|
||||||
/*print '<select class="flat minwidth200" size="8" name="cpt_bk[]" multiple>';
|
|
||||||
foreach ( $accountingcategory->lines_cptbk as $cpt ) {
|
|
||||||
print '<option value="' . length_accountg($cpt->numero_compte) . '">' . length_accountg($cpt->numero_compte) . ' (' . $cpt->label_compte . ' ' . $cpt->doc_ref . ')</option>';
|
|
||||||
}
|
|
||||||
print '</select><br>';
|
|
||||||
print ajax_combobox('cpt_bk');
|
|
||||||
*/
|
|
||||||
print '<input type="submit" class="button button-add small" id="" class="action-delete" value="'.$langs->trans("Add").'"> ';
|
print '<input type="submit" class="button button-add small" id="" class="action-delete" value="'.$langs->trans("Add").'"> ';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -152,13 +164,16 @@ if (!empty($cat_id)) {
|
|||||||
print '</form>';
|
print '</form>';
|
||||||
|
|
||||||
|
|
||||||
if ($action == 'display' || $action == 'delete') {
|
if ((empty($action) || $action == 'display' || $action == 'delete') && $cat_id > 0) {
|
||||||
|
$param = 'account_category='.((int) $cat_id);
|
||||||
|
|
||||||
print '<br>';
|
print '<br>';
|
||||||
print '<table class="noborder centpercent">'."\n";
|
print '<table class="noborder centpercent">'."\n";
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td class="liste_titre">'.$langs->trans("AccountAccounting")."</td>";
|
print getTitleFieldOfList('AccountAccounting', 0, $_SERVER['PHP_SELF'], 'account_number', '', $param, '', $sortfield, $sortorder, '')."\n";
|
||||||
print '<td class="liste_titre" colspan="2">'.$langs->trans("Label")."</td>";
|
print getTitleFieldOfList('Label', 0, $_SERVER['PHP_SELF'], 'label', '', $param, '', $sortfield, $sortorder, '')."\n";
|
||||||
print "</tr>\n";
|
print getTitleFieldOfList('', 0, $_SERVER['PHP_SELF'], '', '', $param, '', $sortfield, $sortorder, '')."\n";
|
||||||
|
print '</tr>'."\n";
|
||||||
|
|
||||||
if (!empty($cat_id)) {
|
if (!empty($cat_id)) {
|
||||||
$return = $accountingcategory->display($cat_id); // This load ->lines_display
|
$return = $accountingcategory->display($cat_id); // This load ->lines_display
|
||||||
@ -167,6 +182,8 @@ if ($action == 'display' || $action == 'delete') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (is_array($accountingcategory->lines_display) && count($accountingcategory->lines_display) > 0) {
|
if (is_array($accountingcategory->lines_display) && count($accountingcategory->lines_display) > 0) {
|
||||||
|
$accountingcategory->lines_display = dol_sort_array($accountingcategory->lines_display, $sortfield, $sortorder, -1, 0, 1);
|
||||||
|
|
||||||
foreach ($accountingcategory->lines_display as $cpt) {
|
foreach ($accountingcategory->lines_display as $cpt) {
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>'.length_accountg($cpt->account_number).'</td>';
|
print '<td>'.length_accountg($cpt->account_number).'</td>';
|
||||||
|
|||||||
@ -444,15 +444,37 @@ if ($search_country_id > 0) {
|
|||||||
if ($sortfield == 'country') {
|
if ($sortfield == 'country') {
|
||||||
$sortfield = 'country_code';
|
$sortfield = 'country_code';
|
||||||
}
|
}
|
||||||
|
if (empty($sortfield)) {
|
||||||
|
$sortfield = 'position';
|
||||||
|
}
|
||||||
|
|
||||||
$sql .= $db->order($sortfield, $sortorder);
|
$sql .= $db->order($sortfield, $sortorder);
|
||||||
$sql .= $db->plimit($listlimit + 1, $offset);
|
$sql .= $db->plimit($listlimit + 1, $offset);
|
||||||
//print $sql;
|
//print $sql;
|
||||||
|
|
||||||
$fieldlist = explode(',', $tabfield[$id]);
|
$fieldlist = explode(',', $tabfield[$id]);
|
||||||
|
|
||||||
|
$param = '&id='.$id;
|
||||||
|
if ($search_country_id > 0) {
|
||||||
|
$param .= '&search_country_id='.urlencode($search_country_id);
|
||||||
|
}
|
||||||
|
$paramwithsearch = $param;
|
||||||
|
if ($sortorder) {
|
||||||
|
$paramwithsearch .= '&sortorder='.urlencode($sortorder);
|
||||||
|
}
|
||||||
|
if ($sortfield) {
|
||||||
|
$paramwithsearch .= '&sortfield='.urlencode($sortfield);
|
||||||
|
}
|
||||||
|
if (GETPOST('from', 'alpha')) {
|
||||||
|
$paramwithsearch .= '&from='.urlencode(GETPOST('from', 'alpha'));
|
||||||
|
}
|
||||||
|
|
||||||
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$id.'" method="POST">';
|
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$id.'" method="POST">';
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
print '<input type="hidden" name="from" value="'.dol_escape_htmltag(GETPOST('from', 'alpha')).'">';
|
print '<input type="hidden" name="from" value="'.dol_escape_htmltag(GETPOST('from', 'alpha')).'">';
|
||||||
|
print '<input type="hidden" name="sortfield" value="'.dol_escape_htmltag($sortfield).'">';
|
||||||
|
print '<input type="hidden" name="sortorder" value="'.dol_escape_htmltag($sortorder).'">';
|
||||||
|
|
||||||
|
|
||||||
print '<div class="div-table-responsive">';
|
print '<div class="div-table-responsive">';
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
@ -571,20 +593,6 @@ if ($resql) {
|
|||||||
$num = $db->num_rows($resql);
|
$num = $db->num_rows($resql);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
$param = '&id='.$id;
|
|
||||||
if ($search_country_id > 0) {
|
|
||||||
$param .= '&search_country_id='.urlencode($search_country_id);
|
|
||||||
}
|
|
||||||
$paramwithsearch = $param;
|
|
||||||
if ($sortorder) {
|
|
||||||
$paramwithsearch .= '&sortorder='.$sortorder;
|
|
||||||
}
|
|
||||||
if ($sortfield) {
|
|
||||||
$paramwithsearch .= '&sortfield='.$sortfield;
|
|
||||||
}
|
|
||||||
if (GETPOST('from', 'alpha')) {
|
|
||||||
$paramwithsearch .= '&from='.GETPOST('from', 'alpha');
|
|
||||||
}
|
|
||||||
// There is several pages
|
// There is several pages
|
||||||
if ($num > $listlimit) {
|
if ($num > $listlimit) {
|
||||||
print '<tr class="none"><td class="right" colspan="'.(3 + count($fieldlist)).'">';
|
print '<tr class="none"><td class="right" colspan="'.(3 + count($fieldlist)).'">';
|
||||||
@ -743,7 +751,8 @@ if ($resql) {
|
|||||||
foreach ($fieldlist as $field => $value) {
|
foreach ($fieldlist as $field => $value) {
|
||||||
$showfield = 1;
|
$showfield = 1;
|
||||||
$class = "left";
|
$class = "left";
|
||||||
$valuetoshow = $obj->{$fieldlist[$field]};
|
$tmpvar = $fieldlist[$field];
|
||||||
|
$valuetoshow = $obj->$tmpvar;
|
||||||
if ($value == 'category_type') {
|
if ($value == 'category_type') {
|
||||||
$valuetoshow = yn($valuetoshow);
|
$valuetoshow = yn($valuetoshow);
|
||||||
} elseif ($valuetoshow == 'all') {
|
} elseif ($valuetoshow == 'all') {
|
||||||
@ -822,7 +831,7 @@ if ($resql) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Link to setup the group
|
// Link to setup the group
|
||||||
print '<td class="center">';
|
print '<td>';
|
||||||
if (empty($obj->formula)) {
|
if (empty($obj->formula)) {
|
||||||
print '<a href="'.DOL_URL_ROOT.'/accountancy/admin/categories.php?action=display&save_lastsearch_values=1&account_category='.$obj->rowid.'">';
|
print '<a href="'.DOL_URL_ROOT.'/accountancy/admin/categories.php?action=display&save_lastsearch_values=1&account_category='.$obj->rowid.'">';
|
||||||
print $langs->trans("ListOfAccounts");
|
print $langs->trans("ListOfAccounts");
|
||||||
|
|||||||
@ -84,6 +84,9 @@ $list_account[] = 'ACCOUNTING_VAT_PAY_ACCOUNT';
|
|||||||
if (isModEnabled('banque')) {
|
if (isModEnabled('banque')) {
|
||||||
$list_account[] = 'ACCOUNTING_ACCOUNT_TRANSFER_CASH';
|
$list_account[] = 'ACCOUNTING_ACCOUNT_TRANSFER_CASH';
|
||||||
}
|
}
|
||||||
|
if (!empty($conf->global->INVOICE_USE_RETAINED_WARRANTY)) {
|
||||||
|
$list_account[] = 'ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY';
|
||||||
|
}
|
||||||
if (isModEnabled('don')) {
|
if (isModEnabled('don')) {
|
||||||
$list_account[] = 'DONATION_ACCOUNTINGACCOUNT';
|
$list_account[] = 'DONATION_ACCOUNTINGACCOUNT';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -261,6 +261,20 @@ if ($action == 'setenablelettering') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($action == 'setenableautolettering') {
|
||||||
|
$setenableautolettering = GETPOST('value', 'int');
|
||||||
|
$res = dolibarr_set_const($db, "ACCOUNTING_ENABLE_AUTOLETTERING", $setenableautolettering, 'yesno', 0, '', $conf->entity);
|
||||||
|
if (!($res > 0)) {
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$error) {
|
||||||
|
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
|
||||||
|
} else {
|
||||||
|
setEventMessages($langs->trans("Error"), null, 'mesgs');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* View
|
* View
|
||||||
@ -430,7 +444,7 @@ foreach ($list_binding as $key) {
|
|||||||
print $form->selectDate((!empty($conf->global->$key) ? $db->idate($conf->global->$key) : -1), $key, 0, 0, 1);
|
print $form->selectDate((!empty($conf->global->$key) ? $db->idate($conf->global->$key) : -1), $key, 0, 0, 1);
|
||||||
} elseif ($key == 'ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER') {
|
} elseif ($key == 'ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER') {
|
||||||
$array = array(0=>$langs->trans("PreviousMonth"), 1=>$langs->trans("CurrentMonth"), 2=>$langs->trans("Fiscalyear"));
|
$array = array(0=>$langs->trans("PreviousMonth"), 1=>$langs->trans("CurrentMonth"), 2=>$langs->trans("Fiscalyear"));
|
||||||
print $form->selectarray($key, $array, (isset($conf->global->ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER) ? $conf->global->ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER : 0));
|
print $form->selectarray($key, $array, (isset($conf->global->ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER) ? $conf->global->ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER : 0), 0, 0, 0, '', 0, 0, 0, '', 'onrightofpage');
|
||||||
} else {
|
} else {
|
||||||
print '<input type="text" class="maxwidth100" id="'.$key.'" name="'.$key.'" value="'.getDolGlobalString($key).'">';
|
print '<input type="text" class="maxwidth100" id="'.$key.'" name="'.$key.'" value="'.getDolGlobalString($key).'">';
|
||||||
}
|
}
|
||||||
@ -479,6 +493,7 @@ if (!empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS)) {
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
print '<br>';
|
||||||
|
|
||||||
// Lettering params
|
// Lettering params
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
@ -499,6 +514,21 @@ if (!empty($conf->global->ACCOUNTING_ENABLE_LETTERING)) {
|
|||||||
}
|
}
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
|
if (!empty($conf->global->ACCOUNTING_ENABLE_LETTERING)) {
|
||||||
|
print '<tr class="oddeven">';
|
||||||
|
print '<td>' . $langs->trans("ACCOUNTING_ENABLE_AUTOLETTERING") . '</td>';
|
||||||
|
if (!empty($conf->global->ACCOUNTING_ENABLE_AUTOLETTERING)) {
|
||||||
|
print '<td class="right"><a class="reposition" href="' . $_SERVER['PHP_SELF'] . '?token=' . newToken() . '&action=setenableautolettering&value=0">';
|
||||||
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
|
print '</a></td>';
|
||||||
|
} else {
|
||||||
|
print '<td class="right"><a class="reposition" href="' . $_SERVER['PHP_SELF'] . '?token=' . newToken() . '&action=setenableautolettering&value=1">';
|
||||||
|
print img_picto($langs->trans("Disabled"), 'switch_off');
|
||||||
|
print '</a></td>';
|
||||||
|
}
|
||||||
|
print '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
print '<div class="center"><input type="submit" class="button button-edit" name="button" value="'.$langs->trans('Modify').'"></div>';
|
print '<div class="center"><input type="submit" class="button button-edit" name="button" value="'.$langs->trans('Modify').'"></div>';
|
||||||
|
|||||||
@ -587,7 +587,8 @@ if ($id) {
|
|||||||
foreach ($fieldlist as $field => $value) {
|
foreach ($fieldlist as $field => $value) {
|
||||||
$showfield = 1;
|
$showfield = 1;
|
||||||
$class = "left";
|
$class = "left";
|
||||||
$valuetoshow = $obj->{$fieldlist[$field]};
|
$tmpvar = $fieldlist[$field];
|
||||||
|
$valuetoshow = $obj->$tmpvar;
|
||||||
if ($valuetoshow == 'all') {
|
if ($valuetoshow == 'all') {
|
||||||
$valuetoshow = $langs->trans('All');
|
$valuetoshow = $langs->trans('All');
|
||||||
} elseif ($fieldlist[$field] == 'nature' && $tabname[$id] == MAIN_DB_PREFIX.'accounting_journal') {
|
} elseif ($fieldlist[$field] == 'nature' && $tabname[$id] == MAIN_DB_PREFIX.'accounting_journal') {
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
* Copyright (C) 2013-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
* Copyright (C) 2013-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr>
|
||||||
|
* Copyright (C) 2022 Waël Almoman <info@almoman.com>
|
||||||
*
|
*
|
||||||
* 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
|
||||||
@ -44,7 +45,7 @@ $cancel = GETPOST('cancel', 'aZ09');
|
|||||||
$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
|
$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
|
||||||
|
|
||||||
$id = GETPOST('id', 'int'); // id of record
|
$id = GETPOST('id', 'int'); // id of record
|
||||||
$mode = GETPOST('mode', 'aZ09'); // '' or '_tmp'
|
$mode = $mode = $action == 'create' ? "_tmp" : GETPOST('mode', 'aZ09'); // '' or '_tmp'
|
||||||
$piece_num = GETPOST("piece_num", 'int'); // id of transaction (several lines share the same transaction id)
|
$piece_num = GETPOST("piece_num", 'int'); // id of transaction (several lines share the same transaction id)
|
||||||
|
|
||||||
$accountingaccount = new AccountingAccount($db);
|
$accountingaccount = new AccountingAccount($db);
|
||||||
@ -54,10 +55,15 @@ $accountingaccount_number = GETPOST('accountingaccount_number', 'alphanohtml');
|
|||||||
$accountingaccount->fetch(null, $accountingaccount_number, true);
|
$accountingaccount->fetch(null, $accountingaccount_number, true);
|
||||||
$accountingaccount_label = $accountingaccount->label;
|
$accountingaccount_label = $accountingaccount->label;
|
||||||
|
|
||||||
$journal_code = GETPOST('code_journal', 'alpha');
|
$journal_code = GETPOST('code_journal', 'alpha') ? GETPOST('code_journal', 'alpha') : "NULL";
|
||||||
$accountingjournal->fetch(null, $journal_code);
|
$accountingjournal->fetch(null, $journal_code);
|
||||||
$journal_label = $accountingjournal->label;
|
$journal_label = $accountingjournal->label;
|
||||||
|
|
||||||
|
$next_num_mvt = (int) GETPOST('next_num_mvt', 'alpha');
|
||||||
|
$doc_ref = (string) GETPOST('doc_ref', 'alpha');
|
||||||
|
$doc_date = (string) GETPOST('doc_date', 'alpha');
|
||||||
|
$doc_date = $doc_date = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int'));
|
||||||
|
|
||||||
$subledger_account = GETPOST('subledger_account', 'alphanohtml');
|
$subledger_account = GETPOST('subledger_account', 'alphanohtml');
|
||||||
if ($subledger_account == -1) {
|
if ($subledger_account == -1) {
|
||||||
$subledger_account = null;
|
$subledger_account = null;
|
||||||
@ -72,6 +78,10 @@ $save = GETPOST('save', 'alpha');
|
|||||||
if (!empty($save)) {
|
if (!empty($save)) {
|
||||||
$action = 'add';
|
$action = 'add';
|
||||||
}
|
}
|
||||||
|
$valid = GETPOST('validate', 'alpha');
|
||||||
|
if (!empty($valid)) {
|
||||||
|
$action = 'valid';
|
||||||
|
}
|
||||||
$update = GETPOST('update', 'alpha');
|
$update = GETPOST('update', 'alpha');
|
||||||
if (!empty($update)) {
|
if (!empty($update)) {
|
||||||
$action = 'confirm_update';
|
$action = 'confirm_update';
|
||||||
@ -156,64 +166,79 @@ if ($action == "confirm_update") {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ($action == "add") {
|
} elseif ($action == 'add' || $action == 'valid') {
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
if ((floatval($debit) != 0.0) && (floatval($credit) != 0.0)) {
|
if (array_sum($debit) != array_sum($credit)) {
|
||||||
$error++;
|
$action = 'add';
|
||||||
setEventMessages($langs->trans('ErrorDebitCredit'), null, 'errors');
|
|
||||||
$action = '';
|
|
||||||
}
|
|
||||||
if (empty($accountingaccount_number) || $accountingaccount_number == '-1') {
|
|
||||||
$error++;
|
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("AccountAccountingShort")), null, 'errors');
|
|
||||||
$action = '';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$error) {
|
foreach ($accountingaccount_number as $key => $value) {
|
||||||
$object = new BookKeeping($db);
|
$accountingaccount->fetch(null, $accountingaccount_number[$key], true);
|
||||||
|
$accountingaccount_label[$key] = $accountingaccount->label[$key];
|
||||||
|
|
||||||
$object->numero_compte = $accountingaccount_number;
|
// if one added row is empty remove it before continue
|
||||||
$object->subledger_account = $subledger_account;
|
if ($key < 1 && (empty($accountingaccount_number[$key]) || $accountingaccount_number[$key] == '-1') || (floatval($debit[$key]) == 0.0) && (floatval($credit[$key]) == 0.0)) {
|
||||||
$object->subledger_label = $subledger_label;
|
continue;
|
||||||
$object->label_compte = $accountingaccount_label;
|
|
||||||
$object->label_operation = $label_operation;
|
|
||||||
$object->debit = $debit;
|
|
||||||
$object->credit = $credit;
|
|
||||||
$object->doc_date = (string) GETPOST('doc_date', 'alpha');
|
|
||||||
$object->doc_type = (string) GETPOST('doc_type', 'alpha');
|
|
||||||
$object->piece_num = $piece_num;
|
|
||||||
$object->doc_ref = (string) GETPOST('doc_ref', 'alpha');
|
|
||||||
$object->code_journal = $journal_code;
|
|
||||||
$object->journal_label = $journal_label;
|
|
||||||
$object->fk_doc = GETPOSTINT('fk_doc');
|
|
||||||
$object->fk_docdet = GETPOSTINT('fk_docdet');
|
|
||||||
|
|
||||||
if (floatval($debit) != 0.0) {
|
|
||||||
$object->montant = $debit; // deprecated
|
|
||||||
$object->amount = $debit;
|
|
||||||
$object->sens = 'D';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (floatval($credit) != 0.0) {
|
if ((floatval($debit[$key]) != 0.0) && (floatval($credit[$key]) != 0.0)) {
|
||||||
$object->montant = $credit; // deprecated
|
$error++;
|
||||||
$object->amount = $credit;
|
setEventMessages($langs->trans('ErrorDebitCredit'), null, 'errors');
|
||||||
$object->sens = 'C';
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = $object->createStd($user, false, $mode);
|
|
||||||
if ($result < 0) {
|
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
|
||||||
} else {
|
|
||||||
if ($mode != '_tmp') {
|
|
||||||
setEventMessages($langs->trans('RecordSaved'), null, 'mesgs');
|
|
||||||
}
|
|
||||||
|
|
||||||
$debit = 0;
|
|
||||||
$credit = 0;
|
|
||||||
|
|
||||||
$action = '';
|
$action = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (empty($accountingaccount_number[$key]) || $accountingaccount_number[$key] == '-1') {
|
||||||
|
$error++;
|
||||||
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("AccountAccountingShort")), null, 'errors');
|
||||||
|
$action = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$error) {
|
||||||
|
$object = new BookKeeping($db);
|
||||||
|
$object->numero_compte = $accountingaccount_number[$key];
|
||||||
|
$object->subledger_account = $subledger_account[$key];
|
||||||
|
$object->subledger_label = $subledger_label[$key];
|
||||||
|
$object->label_compte = $accountingaccount_label[$key];
|
||||||
|
$object->label_operation = $label_operation[$key];
|
||||||
|
$object->debit = price2num($debit[$key]);
|
||||||
|
$object->credit = price2num($credit[$key]);
|
||||||
|
$object->doc_date = $doc_date;
|
||||||
|
$object->doc_type = (string) GETPOST('doc_type', 'alpha');
|
||||||
|
$object->piece_num = $piece_num;
|
||||||
|
$object->doc_ref = $doc_ref;
|
||||||
|
$object->code_journal = $journal_code;
|
||||||
|
$object->journal_label = $journal_label;
|
||||||
|
$object->fk_doc = GETPOSTINT('fk_doc');
|
||||||
|
$object->fk_docdet = GETPOSTINT('fk_docdet');
|
||||||
|
|
||||||
|
if (floatval($debit[$key]) != 0.0) {
|
||||||
|
$object->montant = $object->debit; // deprecated
|
||||||
|
$object->amount = $object->debit;
|
||||||
|
$object->sens = 'D';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (floatval($credit[$key]) != 0.0) {
|
||||||
|
$object->montant = $object->credit; // deprecated
|
||||||
|
$object->amount = $object->credit;
|
||||||
|
$object->sens = 'C';
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $object->createStd($user, false, $mode);
|
||||||
|
if ($result < 0) {
|
||||||
|
$error++;
|
||||||
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (empty($error)) {
|
||||||
|
if ($mode != '_tmp') {
|
||||||
|
setEventMessages($langs->trans('RecordSaved'), null, 'mesgs');
|
||||||
|
}
|
||||||
|
$debit = 0;
|
||||||
|
$credit = 0;
|
||||||
|
|
||||||
|
$action = $action == 'add' ? '' : $action ; // stay in valid mode when not adding line
|
||||||
}
|
}
|
||||||
} elseif ($action == "confirm_delete") {
|
} elseif ($action == "confirm_delete") {
|
||||||
$object = new BookKeeping($db);
|
$object = new BookKeeping($db);
|
||||||
@ -230,17 +255,28 @@ if ($action == "confirm_update") {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$action = '';
|
$action = '';
|
||||||
} elseif ($action == "confirm_create") {
|
} elseif ($action == 'create') {
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
$object = new BookKeeping($db);
|
$object = new BookKeeping($db);
|
||||||
|
|
||||||
|
$next_num_mvt = !empty($next_num_mvt) ? $next_num_mvt : $object->getNextNumMvt('_tmp');
|
||||||
|
$doc_ref = !empty($doc_ref) ? $doc_ref : $next_num_mvt;
|
||||||
|
|
||||||
|
if (empty($doc_date)) {
|
||||||
|
$tmp_date = dol_getdate(dol_now());
|
||||||
|
$_POST['doc_dateday'] = $tmp_date['mday'];
|
||||||
|
$_POST['doc_datemonth'] = $tmp_date['mon'];
|
||||||
|
$_POST['doc_dateyear'] = $tmp_date['year'];
|
||||||
|
unset($tmp_date);
|
||||||
|
}
|
||||||
|
|
||||||
if (!$journal_code || $journal_code == '-1') {
|
if (!$journal_code || $journal_code == '-1') {
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Journal")), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Journal")), null, 'errors');
|
||||||
$action = 'create';
|
$action = 'create';
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
if (!GETPOST('doc_ref', 'alpha')) {
|
if (empty($doc_ref)) {
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Piece")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Piece")), null, 'errors');
|
||||||
$action = 'create';
|
$action = 'create';
|
||||||
$error++;
|
$error++;
|
||||||
@ -252,8 +288,8 @@ if ($action == "confirm_update") {
|
|||||||
$object->credit = 0;
|
$object->credit = 0;
|
||||||
$object->doc_date = $date_start = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int'));
|
$object->doc_date = $date_start = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int'));
|
||||||
$object->doc_type = GETPOST('doc_type', 'alpha');
|
$object->doc_type = GETPOST('doc_type', 'alpha');
|
||||||
$object->piece_num = GETPOST('next_num_mvt', 'alpha');
|
$object->piece_num = $next_num_mvt;
|
||||||
$object->doc_ref = GETPOST('doc_ref', 'alpha');
|
$object->doc_ref = $doc_ref;
|
||||||
$object->code_journal = $journal_code;
|
$object->code_journal = $journal_code;
|
||||||
$object->journal_label = $journal_label;
|
$object->journal_label = $journal_label;
|
||||||
$object->fk_doc = 0;
|
$object->fk_doc = 0;
|
||||||
@ -302,7 +338,7 @@ if ($action == 'setjournal') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'setdocref') {
|
if ($action == 'setdocref') {
|
||||||
$refdoc = GETPOST('doc_ref', 'alpha');
|
$refdoc = $doc_ref;
|
||||||
$result = $object->updateByMvt($piece_num, 'doc_ref', $refdoc, $mode);
|
$result = $object->updateByMvt($piece_num, 'doc_ref', $refdoc, $mode);
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
@ -333,7 +369,7 @@ if ($action == 'valid') {
|
|||||||
$html = new Form($db);
|
$html = new Form($db);
|
||||||
$formaccounting = new FormAccounting($db);
|
$formaccounting = new FormAccounting($db);
|
||||||
|
|
||||||
$title = $langs->trans("CreateMvts");
|
$title = $langs->trans($mode =="_tmp" ? "CreateMvts": "UpdateMvts");
|
||||||
|
|
||||||
llxHeader('', $title);
|
llxHeader('', $title);
|
||||||
|
|
||||||
@ -343,28 +379,37 @@ if ($action == 'delete') {
|
|||||||
print $formconfirm;
|
print $formconfirm;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'create') {
|
|
||||||
print load_fiche_titre($title);
|
|
||||||
|
|
||||||
$object = new BookKeeping($db);
|
$object = new BookKeeping($db);
|
||||||
$next_num_mvt = $object->getNextNumMvt('_tmp');
|
$result = $object->fetchPerMvt($piece_num, $mode);
|
||||||
|
if ($result < 0) {
|
||||||
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
}
|
||||||
|
|
||||||
if (empty($next_num_mvt)) {
|
if (!empty($object->piece_num)) {
|
||||||
dol_print_error('', 'Failed to get next piece number');
|
$backlink = '<a href="'.DOL_URL_ROOT.'/accountancy/bookkeeping/list.php?restore_lastsearch_values=1">'.$langs->trans('BackToList').'</a>';
|
||||||
|
|
||||||
|
print load_fiche_titre($langs->trans($mode =="_tmp" ? "CreateMvts": "UpdateMvts"), $backlink);
|
||||||
|
|
||||||
|
print '<form action="'.$_SERVER["PHP_SELF"].'?piece_num='.$object->piece_num.'" method="post">'; if ($optioncss != '') {
|
||||||
|
print '<input type="hidden" name="optioncss" value="'.$optioncss.'" />';
|
||||||
}
|
}
|
||||||
|
$head = array();
|
||||||
|
$h = 0;
|
||||||
|
$head[$h][0] = $_SERVER['PHP_SELF'].'?piece_num='.$object->piece_num.($mode ? '&mode='.$mode : '');
|
||||||
|
$head[$h][1] = $langs->trans("Transaction");
|
||||||
|
$head[$h][2] = 'transaction';
|
||||||
|
$h++;
|
||||||
|
|
||||||
print '<form action="'.$_SERVER["PHP_SELF"].'" name="create_mvt" method="POST">';
|
print dol_get_fiche_head($head, 'transaction', '', -1);
|
||||||
if ($optioncss != '') {
|
|
||||||
print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
|
|
||||||
}
|
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
|
||||||
print '<input type="hidden" name="action" value="confirm_create">'."\n";
|
|
||||||
print '<input type="hidden" name="next_num_mvt" value="'.$next_num_mvt.'">'."\n";
|
|
||||||
print '<input type="hidden" name="mode" value="_tmp">'."\n";
|
|
||||||
|
|
||||||
print dol_get_fiche_head();
|
//dol_banner_tab($object, '', $backlink);
|
||||||
|
|
||||||
print '<table class="border centpercent">';
|
print '<div class="fichecenter">';
|
||||||
|
print '<div class="fichehalfleft">';
|
||||||
|
|
||||||
|
print '<div class="underbanner clearboth"></div>';
|
||||||
|
print '<table class="border tableforfield" width="100%">';
|
||||||
|
|
||||||
/*print '<tr>';
|
/*print '<tr>';
|
||||||
print '<td class="titlefieldcreate fieldrequired">' . $langs->trans("NumPiece") . '</td>';
|
print '<td class="titlefieldcreate fieldrequired">' . $langs->trans("NumPiece") . '</td>';
|
||||||
@ -374,7 +419,7 @@ if ($action == 'create') {
|
|||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td class="titlefieldcreate fieldrequired">'.$langs->trans("Docdate").'</td>';
|
print '<td class="titlefieldcreate fieldrequired">'.$langs->trans("Docdate").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print $html->selectDate('', 'doc_date', '', '', '', "create_mvt", 1, 1);
|
print $html->selectDate($doc_date, 'doc_date', '', '', '', "create_mvt", 1, 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
@ -385,294 +430,218 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td class="fieldrequired">'.$langs->trans("Piece").'</td>';
|
print '<td class="fieldrequired">'.$langs->trans("Piece").'</td>';
|
||||||
print '<td><input type="text" class="minwidth200" name="doc_ref" value="'.GETPOST('doc_ref', 'alpha').'"></td>';
|
print '<td><input type="text" class="minwidth200" name="doc_ref" value="'.$doc_ref.'" /></td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>' . $langs->trans("Doctype") . '</td>';
|
print '<td>' . $langs->trans("Doctype") . '</td>';
|
||||||
print '<td><input type="text" class="minwidth200 name="doc_type" value=""/></td>';
|
print '<td><input type="text" class="minwidth200 name="doc_type" value="" /></td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
*/
|
*/
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
print dol_get_fiche_end();
|
print '</div>';
|
||||||
|
|
||||||
print $form->buttonsSaveCancel("Create");
|
print '<div class="fichehalfright">';
|
||||||
|
|
||||||
print '</form>';
|
print '<div class="underbanner clearboth"></div>';
|
||||||
} else {
|
print '<table class="border tableforfield centpercent">';
|
||||||
$object = new BookKeeping($db);
|
|
||||||
$result = $object->fetchPerMvt($piece_num, $mode);
|
// Doc type
|
||||||
if ($result < 0) {
|
if (!empty($object->doc_type)) {
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
print '<tr>';
|
||||||
|
print '<td class="titlefield">'.$langs->trans("Doctype").'</td>';
|
||||||
|
print '<td>'.$object->doc_type.'</td>';
|
||||||
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($object->piece_num)) {
|
// Date document creation
|
||||||
$backlink = '<a href="'.DOL_URL_ROOT.'/accountancy/bookkeeping/list.php?restore_lastsearch_values=1">'.$langs->trans('BackToList').'</a>';
|
print '<tr>';
|
||||||
|
print '<td class="titlefield">'.$langs->trans("DateCreation").'</td>';
|
||||||
|
print '<td>';
|
||||||
|
print $object->date_creation ? dol_print_date($object->date_creation, 'day') : ' ';
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("UpdateMvts"), $backlink);
|
// Don't show in tmp mode, inevitably empty
|
||||||
|
if ($mode != "_tmp") {
|
||||||
$head = array();
|
// Date document export
|
||||||
$h = 0;
|
|
||||||
$head[$h][0] = $_SERVER['PHP_SELF'].'?piece_num='.$object->piece_num.($mode ? '&mode='.$mode : '');
|
|
||||||
$head[$h][1] = $langs->trans("Transaction");
|
|
||||||
$head[$h][2] = 'transaction';
|
|
||||||
$h++;
|
|
||||||
|
|
||||||
print dol_get_fiche_head($head, 'transaction', '', -1);
|
|
||||||
|
|
||||||
//dol_banner_tab($object, '', $backlink);
|
|
||||||
|
|
||||||
print '<div class="fichecenter">';
|
|
||||||
print '<div class="fichehalfleft">';
|
|
||||||
|
|
||||||
print '<div class="underbanner clearboth"></div>';
|
|
||||||
print '<table class="border tableforfield" width="100%">';
|
|
||||||
|
|
||||||
// Account movement
|
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td class="titlefield">'.$langs->trans("NumMvts").'</td>';
|
print '<td class="titlefield">'.$langs->trans("DateExport").'</td>';
|
||||||
print '<td>'.($mode == '_tmp' ? '<span class="opacitymedium" title="Id tmp '.$object->piece_num.'">'.$langs->trans("Draft").'</span>' : $object->piece_num).'</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
// Date
|
|
||||||
print '<tr><td>';
|
|
||||||
print '<table class="nobordernopadding centpercent"><tr><td>';
|
|
||||||
print $langs->trans('Docdate');
|
|
||||||
print '</td>';
|
|
||||||
if ($action != 'editdate') {
|
|
||||||
print '<td class="right"><a class="editfielda reposition" href="'.$_SERVER["PHP_SELF"].'?action=editdate&token='.newToken().'&piece_num='.urlencode($object->piece_num).'&mode='.urlencode($mode).'">'.img_edit($langs->transnoentitiesnoconv('SetDate'), 1).'</a></td>';
|
|
||||||
}
|
|
||||||
print '</tr></table>';
|
|
||||||
print '</td><td colspan="3">';
|
|
||||||
if ($action == 'editdate') {
|
|
||||||
print '<form name="setdate" action="'.$_SERVER["PHP_SELF"].'?piece_num='.$object->piece_num.'" method="post">';
|
|
||||||
if ($optioncss != '') {
|
|
||||||
print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
|
|
||||||
}
|
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
|
||||||
print '<input type="hidden" name="action" value="setdate">';
|
|
||||||
print '<input type="hidden" name="mode" value="'.$mode.'">';
|
|
||||||
print $form->selectDate($object->doc_date ? $object->doc_date : - 1, 'doc_date', '', '', '', "setdate");
|
|
||||||
print '<input type="submit" class="button button-edit" value="'.$langs->trans('Modify').'">';
|
|
||||||
print '</form>';
|
|
||||||
} else {
|
|
||||||
print $object->doc_date ? dol_print_date($object->doc_date, 'day') : ' ';
|
|
||||||
}
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
// Journal
|
|
||||||
print '<tr><td>';
|
|
||||||
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
|
||||||
print $langs->trans('Codejournal');
|
|
||||||
print '</td>';
|
|
||||||
if ($action != 'editjournal') {
|
|
||||||
print '<td class="right"><a class="editfielda reposition" href="'.$_SERVER["PHP_SELF"].'?action=editjournal&token='.newToken().'&piece_num='.urlencode($object->piece_num).'&mode='.urlencode($mode).'">'.img_edit($langs->transnoentitiesnoconv('Edit'), 1).'</a></td>';
|
|
||||||
}
|
|
||||||
print '</tr></table>';
|
|
||||||
print '</td><td>';
|
|
||||||
if ($action == 'editjournal') {
|
|
||||||
print '<form name="setjournal" action="'.$_SERVER["PHP_SELF"].'?piece_num='.$object->piece_num.'" method="post">';
|
|
||||||
if ($optioncss != '') {
|
|
||||||
print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
|
|
||||||
}
|
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
|
||||||
print '<input type="hidden" name="action" value="setjournal">';
|
|
||||||
print '<input type="hidden" name="mode" value="'.$mode.'">';
|
|
||||||
print $formaccounting->select_journal($object->code_journal, 'code_journal', 0, 0, array(), 1, 1);
|
|
||||||
print '<input type="submit" class="button button-edit" value="'.$langs->trans('Modify').'">';
|
|
||||||
print '</form>';
|
|
||||||
} else {
|
|
||||||
print $object->code_journal;
|
|
||||||
}
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
// Ref document
|
|
||||||
print '<tr><td>';
|
|
||||||
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
|
||||||
print $langs->trans('Piece');
|
|
||||||
print '</td>';
|
|
||||||
if ($action != 'editdocref') {
|
|
||||||
print '<td class="right"><a class="editfielda reposition" href="'.$_SERVER["PHP_SELF"].'?action=editdocref&token='.newToken().'&piece_num='.urlencode($object->piece_num).'&mode='.urlencode($mode).'">'.img_edit($langs->transnoentitiesnoconv('Edit'), 1).'</a></td>';
|
|
||||||
}
|
|
||||||
print '</tr></table>';
|
|
||||||
print '</td><td>';
|
|
||||||
if ($action == 'editdocref') {
|
|
||||||
print '<form name="setdocref" action="'.$_SERVER["PHP_SELF"].'?piece_num='.$object->piece_num.'" method="post">';
|
|
||||||
if ($optioncss != '') {
|
|
||||||
print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
|
|
||||||
}
|
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
|
||||||
print '<input type="hidden" name="action" value="setdocref">';
|
|
||||||
print '<input type="hidden" name="mode" value="'.$mode.'">';
|
|
||||||
print '<input type="text" size="20" name="doc_ref" value="'.dol_escape_htmltag($object->doc_ref).'">';
|
|
||||||
print '<input type="submit" class="button button-edit" value="'.$langs->trans('Modify').'">';
|
|
||||||
print '</form>';
|
|
||||||
} else {
|
|
||||||
print $object->doc_ref;
|
|
||||||
}
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
print '</table>';
|
|
||||||
|
|
||||||
print '</div>';
|
|
||||||
|
|
||||||
print '<div class="fichehalfright">';
|
|
||||||
|
|
||||||
print '<div class="underbanner clearboth"></div>';
|
|
||||||
print '<table class="border tableforfield centpercent">';
|
|
||||||
|
|
||||||
// Doc type
|
|
||||||
if (!empty($object->doc_type)) {
|
|
||||||
print '<tr>';
|
|
||||||
print '<td class="titlefield">'.$langs->trans("Doctype").'</td>';
|
|
||||||
print '<td>'.$object->doc_type.'</td>';
|
|
||||||
print '</tr>';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Date document creation
|
|
||||||
print '<tr>';
|
|
||||||
print '<td class="titlefield">'.$langs->trans("DateCreation").'</td>';
|
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print $object->date_creation ? dol_print_date($object->date_creation, 'day') : ' ';
|
print $object->date_export ? dol_print_date($object->date_export, 'dayhour') : ' ';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
// Don't show in tmp mode, inevitably empty
|
// Date document validation
|
||||||
if ($mode != "_tmp") {
|
|
||||||
// Date document export
|
|
||||||
print '<tr>';
|
|
||||||
print '<td class="titlefield">' . $langs->trans("DateExport") . '</td>';
|
|
||||||
print '<td>';
|
|
||||||
print $object->date_export ? dol_print_date($object->date_export, 'dayhour') : ' ';
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
// Date document validation
|
|
||||||
print '<tr>';
|
|
||||||
print '<td class="titlefield">' . $langs->trans("DateValidation") . '</td>';
|
|
||||||
print '<td>';
|
|
||||||
print $object->date_validation ? dol_print_date($object->date_validation, 'dayhour') : ' ';
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Validate
|
|
||||||
/*
|
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td class="titlefield">' . $langs->trans("Status") . '</td>';
|
print '<td class="titlefield">'.$langs->trans("DateValidation").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
if (empty($object->validated)) {
|
print $object->date_validation ? dol_print_date($object->date_validation, 'dayhour') : ' ';
|
||||||
print '<a class="reposition" href="' . $_SERVER["PHP_SELF"] . '?piece_num=' . $line->id . '&action=enable&token='.newToken().'">';
|
print '</td>';
|
||||||
print img_picto($langs->trans("Disabled"), 'switch_off');
|
|
||||||
print '</a>';
|
|
||||||
} else {
|
|
||||||
print '<a class="reposition" href="' . $_SERVER["PHP_SELF"] . '?piece_num=' . $line->id . '&action=disable&token='.newToken().'">';
|
|
||||||
print img_picto($langs->trans("Activated"), 'switch_on');
|
|
||||||
print '</a>';
|
|
||||||
}
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
*/
|
}
|
||||||
|
// Validate
|
||||||
|
/*
|
||||||
|
print '<tr>';
|
||||||
|
print '<td class="titlefield">' . $langs->trans("Status") . '</td>';
|
||||||
|
print '<td>';
|
||||||
|
if (empty($object->validated)) {
|
||||||
|
print '<a class="reposition" href="' . $_SERVER["PHP_SELF"] . '?piece_num=' . $line->id . '&action=enable&token='.newToken().'">';
|
||||||
|
print img_picto($langs->trans("Disabled"), 'switch_off');
|
||||||
|
print '</a>';
|
||||||
|
} else {
|
||||||
|
print '<a class="reposition" href="' . $_SERVER["PHP_SELF"] . '?piece_num=' . $line->id . '&action=disable&token='.newToken().'">';
|
||||||
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
|
print '</a>';
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
*/
|
||||||
|
|
||||||
// check data
|
// check data
|
||||||
/*
|
/*
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td class="titlefield">' . $langs->trans("Control") . '</td>';
|
print '<td class="titlefield">' . $langs->trans("Control") . '</td>';
|
||||||
if ($object->doc_type == 'customer_invoice')
|
if ($object->doc_type == 'customer_invoice') {
|
||||||
{
|
$sqlmid = 'SELECT rowid as ref';
|
||||||
$sqlmid = 'SELECT rowid as ref';
|
$sqlmid .= " FROM ".MAIN_DB_PREFIX."facture as fac";
|
||||||
$sqlmid .= " FROM ".MAIN_DB_PREFIX."facture as fac";
|
$sqlmid .= " WHERE fac.rowid=" . ((int) $object->fk_doc);
|
||||||
$sqlmid .= " WHERE fac.rowid=" . ((int) $object->fk_doc);
|
dol_syslog("accountancy/bookkeeping/card.php::sqlmid=" . $sqlmid, LOG_DEBUG);
|
||||||
dol_syslog("accountancy/bookkeeping/card.php::sqlmid=" . $sqlmid, LOG_DEBUG);
|
$resultmid = $db->query($sqlmid);
|
||||||
$resultmid = $db->query($sqlmid);
|
if ($resultmid) {
|
||||||
if ($resultmid) {
|
$objmid = $db->fetch_object($resultmid);
|
||||||
$objmid = $db->fetch_object($resultmid);
|
$invoicestatic = new Facture($db);
|
||||||
$invoicestatic = new Facture($db);
|
$invoicestatic->fetch($objmid->ref);
|
||||||
$invoicestatic->fetch($objmid->ref);
|
$ref=$langs->trans("Invoice").' '.$invoicestatic->getNomUrl(1);
|
||||||
$ref=$langs->trans("Invoice").' '.$invoicestatic->getNomUrl(1);
|
|
||||||
}
|
|
||||||
else dol_print_error($db);
|
|
||||||
}
|
|
||||||
print '<td>' . $ref .'</td>';
|
|
||||||
print '</tr>';
|
|
||||||
*/
|
|
||||||
print "</table>\n";
|
|
||||||
|
|
||||||
print '</div>';
|
|
||||||
|
|
||||||
print dol_get_fiche_end();
|
|
||||||
|
|
||||||
print '<div style="clear:both"></div>';
|
|
||||||
|
|
||||||
print '<br>';
|
|
||||||
|
|
||||||
$result = $object->fetchAllPerMvt($piece_num, $mode); // This load $object->linesmvt
|
|
||||||
|
|
||||||
if ($result < 0) {
|
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
|
||||||
} else {
|
} else {
|
||||||
// List of movements
|
dol_print_error($db);
|
||||||
print load_fiche_titre($langs->trans("ListeMvts"), '', '');
|
}
|
||||||
|
}
|
||||||
|
print '<td>' . $ref .'</td>';
|
||||||
|
print '</tr>';
|
||||||
|
*/
|
||||||
|
print "</table>\n";
|
||||||
|
|
||||||
print '<form action="'.$_SERVER["PHP_SELF"].'?piece_num='.$object->piece_num.'" method="post">';
|
print dol_get_fiche_end();
|
||||||
if ($optioncss != '') {
|
|
||||||
print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
|
print '<div style="clear:both"></div>';
|
||||||
|
|
||||||
|
print '<br>';
|
||||||
|
|
||||||
|
$result = $object->fetchAllPerMvt($piece_num, $mode); // This load $object->linesmvt
|
||||||
|
if ($result < 0) {
|
||||||
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
} else {
|
||||||
|
// List of movements
|
||||||
|
print load_fiche_titre($langs->trans("ListeMvts"), '', '');
|
||||||
|
|
||||||
|
if ($optioncss != '') {
|
||||||
|
print '<input type="hidden" name="optioncss" value="'.$optioncss.'" />';
|
||||||
|
}
|
||||||
|
|
||||||
|
print '<input type="hidden" name="token" value="'.newToken().'" />';
|
||||||
|
print '<input type="hidden" name="doc_type" value="'.$object->doc_type.'" />'."\n";
|
||||||
|
print '<input type="hidden" name="fk_doc" value="'.$object->fk_doc.'" />'."\n";
|
||||||
|
print '<input type="hidden" name="fk_docdet" value="'.$object->fk_docdet.'" />'."\n";
|
||||||
|
print '<input type="hidden" name="mode" value="'.$mode.'" />'."\n";
|
||||||
|
|
||||||
|
if (count($object->linesmvt) > 0) {
|
||||||
|
print '<div class="div-table-responsive-no-min">';
|
||||||
|
print '<table class="noborder centpercent">';
|
||||||
|
|
||||||
|
$total_debit = 0;
|
||||||
|
$total_credit = 0;
|
||||||
|
|
||||||
|
// Don't show in tmp mode, inevitably empty
|
||||||
|
if ($mode != "_tmp") {
|
||||||
|
// Date document export
|
||||||
|
print '<tr>';
|
||||||
|
print '<td class="titlefield">' . $langs->trans("DateExport") . '</td>';
|
||||||
|
print '<td>';
|
||||||
|
print $object->date_export ? dol_print_date($object->date_export, 'dayhour') : ' ';
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
// Date document validation
|
||||||
|
print '<tr>';
|
||||||
|
print '<td class="titlefield">' . $langs->trans("DateValidation") . '</td>';
|
||||||
|
print '<td>';
|
||||||
|
print $object->date_validation ? dol_print_date($object->date_validation, 'dayhour') : ' ';
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
}
|
}
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
|
||||||
print '<input type="hidden" name="doc_date" value="'.$object->doc_date.'">'."\n";
|
|
||||||
print '<input type="hidden" name="doc_type" value="'.$object->doc_type.'">'."\n";
|
|
||||||
print '<input type="hidden" name="doc_ref" value="'.$object->doc_ref.'">'."\n";
|
|
||||||
print '<input type="hidden" name="code_journal" value="'.$object->code_journal.'">'."\n";
|
|
||||||
print '<input type="hidden" name="fk_doc" value="'.$object->fk_doc.'">'."\n";
|
|
||||||
print '<input type="hidden" name="fk_docdet" value="'.$object->fk_docdet.'">'."\n";
|
|
||||||
print '<input type="hidden" name="mode" value="'.$mode.'">'."\n";
|
|
||||||
|
|
||||||
if (count($object->linesmvt) > 0) {
|
print '<tr class="liste_titre">';
|
||||||
print '<div class="div-table-responsive-no-min">';
|
|
||||||
print '<table class="noborder centpercent">';
|
|
||||||
|
|
||||||
$total_debit = 0;
|
print_liste_field_titre("AccountAccountingShort");
|
||||||
$total_credit = 0;
|
print_liste_field_titre("SubledgerAccount");
|
||||||
|
print_liste_field_titre("LabelOperation");
|
||||||
|
print_liste_field_titre("AccountingDebit", "", "", "", "", 'class="right"');
|
||||||
|
print_liste_field_titre("AccountingCredit", "", "", "", "", 'class="right"');
|
||||||
|
if (empty($object->date_validation)) {
|
||||||
|
print_liste_field_titre("Action", "", "", "", "", 'width="60"', "", "", 'center ');
|
||||||
|
} else {
|
||||||
|
print_liste_field_titre("");
|
||||||
|
}
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print "</tr>\n";
|
||||||
|
|
||||||
print_liste_field_titre("AccountAccountingShort");
|
// In _tmp mode the first line is empty so we remove it
|
||||||
print_liste_field_titre("SubledgerAccount");
|
if ($mode == "_tmp") {
|
||||||
print_liste_field_titre("LabelOperation");
|
array_shift($object->linesmvt);
|
||||||
print_liste_field_titre("AccountingDebit", "", "", "", "", 'class="right"');
|
}
|
||||||
print_liste_field_titre("AccountingCredit", "", "", "", "", 'class="right"');
|
|
||||||
if (empty($object->date_validation)) {
|
|
||||||
print_liste_field_titre("Action", "", "", "", "", 'width="60"', "", "", 'center ');
|
|
||||||
} else {
|
|
||||||
print_liste_field_titre("");
|
|
||||||
}
|
|
||||||
|
|
||||||
print "</tr>\n";
|
// Add an empty line at the end to be able to add transaction
|
||||||
|
$line = new BookKeepingLine();
|
||||||
|
$object->linesmvt[] = $line;
|
||||||
|
|
||||||
// Add an empty line if there is not yet
|
// Add a second line empty line if there is not yet
|
||||||
if (!empty($object->linesmvt[0])) {
|
if (empty($object->linesmvt[1])) {
|
||||||
$tmpline = $object->linesmvt[0];
|
$line = new BookKeepingLine();
|
||||||
if (!empty($tmpline->numero_compte)) {
|
$object->linesmvt[] = $line;
|
||||||
$line = new BookKeepingLine();
|
}
|
||||||
$object->linesmvt[] = $line;
|
|
||||||
|
$count_line = count($object->linesmvt);
|
||||||
|
$num_line = 0;
|
||||||
|
foreach ($object->linesmvt as $key => $line) {
|
||||||
|
$num_line++;
|
||||||
|
print '<tr class="oddeven" data-lineid="'.((int) $line->id).'">';
|
||||||
|
$total_debit += $line->debit;
|
||||||
|
$total_credit += $line->credit;
|
||||||
|
|
||||||
|
if ($action == 'update' && $line->id == $id) {
|
||||||
|
print '<!-- td columns in edit mode -->';
|
||||||
|
print '<td>';
|
||||||
|
print $formaccounting->select_account((GETPOSTISSET("accountingaccount_number") ? GETPOST("accountingaccount_number", "alpha") : $line->numero_compte), 'accountingaccount_number', 1, array(), 1, 1, '');
|
||||||
|
print '</td>';
|
||||||
|
print '<td>';
|
||||||
|
// TODO For the moment we keep a free input text instead of a combo. The select_auxaccount has problem because:
|
||||||
|
// It does not use the setup of "key pressed" to select a thirdparty and this hang browser on large databases.
|
||||||
|
// Also, it is not possible to use a value that is not in the list.
|
||||||
|
// Also, the label is not automatically filled when a value is selected.
|
||||||
|
if (!empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX)) {
|
||||||
|
print $formaccounting->select_auxaccount((GETPOSTISSET("subledger_account") ? GETPOST("subledger_account", "alpha") : $line->subledger_account), 'subledger_account', 1, 'maxwidth250', '', 'subledger_label');
|
||||||
|
} else {
|
||||||
|
print '<input type="text" class="maxwidth150" name="subledger_account" value="'.(GETPOSTISSET("subledger_account") ? GETPOST("subledger_account", "alpha") : $line->subledger_account).'" placeholder="'.dol_escape_htmltag($langs->trans("SubledgerAccount")).'" />';
|
||||||
}
|
}
|
||||||
}
|
// Add also input for subledger label
|
||||||
|
print '<br><input type="text" class="maxwidth150" name="subledger_label" value="'.(GETPOSTISSET("subledger_label") ? GETPOST("subledger_label", "alpha") : $line->subledger_label).'" placeholder="'.dol_escape_htmltag($langs->trans("SubledgerAccountLabel")).'" />';
|
||||||
foreach ($object->linesmvt as $line) {
|
print '</td>';
|
||||||
print '<tr class="oddeven" data-lineid="'.((int) $line->id).'">';
|
print '<td><input type="text" class="minwidth200" name="label_operation" value="'.(GETPOSTISSET("label_operation") ? GETPOST("label_operation", "alpha") : $line->label_operation).'" /></td>';
|
||||||
$total_debit += $line->debit;
|
print '<td class="right"><input type="text" size="6" class="right" name="debit" value="'.(GETPOSTISSET("debit") ? GETPOST("debit", "alpha") : price($line->debit)).'" /></td>';
|
||||||
$total_credit += $line->credit;
|
print '<td class="right"><input type="text" size="6" class="right" name="credit" value="'.(GETPOSTISSET("credit") ? GETPOST("credit", "alpha") : price($line->credit)).'" /></td>';
|
||||||
|
print '<td>';
|
||||||
if ($action == 'update' && $line->id == $id) {
|
print '<input type="hidden" name="id" value="'.$line->id.'" />'."\n";
|
||||||
print '<!-- td columns in edit mode -->';
|
print '<input type="submit" class="button" name="update" value="'.$langs->trans("Update").'" />';
|
||||||
|
print '</td>';
|
||||||
|
} elseif (empty($line->numero_compte) || (empty($line->debit) && empty($line->credit))) {
|
||||||
|
if ($action == "" || $action == 'add') {
|
||||||
|
print '<!-- td columns in add mode -->';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print $formaccounting->select_account((GETPOSTISSET("accountingaccount_number") ? GETPOST("accountingaccount_number", "alpha") : $line->numero_compte), 'accountingaccount_number', 1, array(), 1, 1, 'minwidth200 maxwidth500');
|
print $formaccounting->select_account((is_array($accountingaccount_number) ? $accountingaccount_number[$key] : $accountingaccount_number ), 'accountingaccount_number['.$key.']', 1, array(), 1, 1, '');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
// TODO For the moment we keep a free input text instead of a combo. The select_auxaccount has problem because:
|
// TODO For the moment we keep a free input text instead of a combo. The select_auxaccount has problem because:
|
||||||
@ -680,124 +649,102 @@ if ($action == 'create') {
|
|||||||
// Also, it is not possible to use a value that is not in the list.
|
// Also, it is not possible to use a value that is not in the list.
|
||||||
// Also, the label is not automatically filled when a value is selected.
|
// Also, the label is not automatically filled when a value is selected.
|
||||||
if (!empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX)) {
|
if (!empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX)) {
|
||||||
print $formaccounting->select_auxaccount((GETPOSTISSET("subledger_account") ? GETPOST("subledger_account", "alpha") : $line->subledger_account), 'subledger_account', 1, 'maxwidth250', '', 'subledger_label');
|
print $formaccounting->select_auxaccount((is_array($subledger_account) ? $subledger_account[$key] : $subledger_account ), 'subledger_account['.$key.']', 1, 'maxwidth250', '', 'subledger_label');
|
||||||
} else {
|
} else {
|
||||||
print '<input type="text" class="maxwidth150" name="subledger_account" value="'.(GETPOSTISSET("subledger_account") ? GETPOST("subledger_account", "alpha") : $line->subledger_account).'" placeholder="'.dol_escape_htmltag($langs->trans("SubledgerAccount")).'">';
|
print '<input type="text" class="maxwidth150" name="subledger_account['.$key.']" value="' . (is_array($subledger_account) ? $subledger_account[$key] : $subledger_account ) . '" placeholder="' . dol_escape_htmltag($langs->trans("SubledgerAccount")) . '" />';
|
||||||
}
|
}
|
||||||
// Add also input for subledger label
|
print '<br><input type="text" class="maxwidth150" name="subledger_label['.$key.']" value="' . (is_array($subledger_label) ? $subledger_label[$key] : $subledger_label ) . '" placeholder="' . dol_escape_htmltag($langs->trans("SubledgerAccountLabel")) . '" />';
|
||||||
print '<br><input type="text" class="maxwidth150" name="subledger_label" value="'.(GETPOSTISSET("subledger_label") ? GETPOST("subledger_label", "alpha") : $line->subledger_label).'" placeholder="'.dol_escape_htmltag($langs->trans("SubledgerAccountLabel")).'">';
|
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td><input type="text" class="minwidth200" name="label_operation" value="'.(GETPOSTISSET("label_operation") ? GETPOST("label_operation", "alpha") : $line->label_operation).'"></td>';
|
print '<td><input type="text" class="minwidth200" name="label_operation['.$key.']" value="' . (is_array($label_operation) ? $label_operation[$key] : $label_operation ) . '"/></td>';
|
||||||
print '<td class="right"><input type="text" size="6" class="right" name="debit" value="'.(GETPOSTISSET("debit") ? GETPOST("debit", "alpha") : price($line->debit)).'"></td>';
|
print '<td class="right"><input type="text" size="6" class="right" name="debit['.$key.']" value="' . (is_array($debit) ? $debit[$key] : $debit ) . '" /></td>';
|
||||||
print '<td class="right"><input type="text" size="6" class="right" name="credit" value="'.(GETPOSTISSET("credit") ? GETPOST("credit", "alpha") : price($line->credit)).'"></td>';
|
print '<td class="right"><input type="text" size="6" class="right" name="credit['.$key.']" value="' . (is_array($credit) ? $credit[$key] : $credit ) . '" /></td>';
|
||||||
print '<td>';
|
// Add button should not appear twice
|
||||||
print '<input type="hidden" name="id" value="'.$line->id.'">'."\n";
|
if ($num_line === $count_line) {
|
||||||
print '<input type="submit" class="button" name="update" value="'.$langs->trans("Update").'">';
|
print '<td><input type="submit" class="button small" name="save" value="' . $langs->trans("Add") . '" /></td>';
|
||||||
print '</td>';
|
|
||||||
} elseif (empty($line->numero_compte) || (empty($line->debit) && empty($line->credit))) {
|
|
||||||
if ($action == "" || $action == 'add') {
|
|
||||||
print '<!-- td columns in add mode -->';
|
|
||||||
print '<td>';
|
|
||||||
print $formaccounting->select_account('', 'accountingaccount_number', 1, array(), 1, 1, 'minwidth200 maxwidth500');
|
|
||||||
print '</td>';
|
|
||||||
print '<td>';
|
|
||||||
// TODO For the moment we keep a free input text instead of a combo. The select_auxaccount has problem because:
|
|
||||||
// It does not use the setup of "key pressed" to select a thirdparty and this hang browser on large databases.
|
|
||||||
// Also, it is not possible to use a value that is not in the list.
|
|
||||||
// Also, the label is not automatically filled when a value is selected.
|
|
||||||
if (!empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX)) {
|
|
||||||
print $formaccounting->select_auxaccount('', 'subledger_account', 1, 'maxwidth250', '', 'subledger_label');
|
|
||||||
} else {
|
|
||||||
print '<input type="text" class="maxwidth150" name="subledger_account" value="" placeholder="' . dol_escape_htmltag($langs->trans("SubledgerAccount")) . '">';
|
|
||||||
}
|
|
||||||
print '<br><input type="text" class="maxwidth150" name="subledger_label" value="" placeholder="' . dol_escape_htmltag($langs->trans("SubledgerAccountLabel")) . '">';
|
|
||||||
print '</td>';
|
|
||||||
print '<td><input type="text" class="minwidth200" name="label_operation" value="' . $label_operation . '"/></td>';
|
|
||||||
print '<td class="right"><input type="text" size="6" class="right" name="debit" value=""/></td>';
|
|
||||||
print '<td class="right"><input type="text" size="6" class="right" name="credit" value=""/></td>';
|
|
||||||
print '<td class="center"><input type="submit" class="button small" name="save" value="' . $langs->trans("Add") . '"></td>';
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print '<!-- td columns in display mode -->';
|
|
||||||
$resultfetch = $accountingaccount->fetch(null, $line->numero_compte, true);
|
|
||||||
print '<td>';
|
|
||||||
if ($resultfetch > 0) {
|
|
||||||
print $accountingaccount->getNomUrl(0, 1, 1, '', 0);
|
|
||||||
} else {
|
} else {
|
||||||
print $line->numero_compte.' <span class="warning">('.$langs->trans("AccountRemovedFromCurrentChartOfAccount").')</span>';
|
print '<td class="right"></td>';
|
||||||
}
|
}
|
||||||
print '</td>';
|
|
||||||
print '<td>'.length_accounta($line->subledger_account);
|
|
||||||
if ($line->subledger_label) {
|
|
||||||
print ' - <span class="opacitymedium">'.$line->subledger_label.'</span>';
|
|
||||||
}
|
|
||||||
print '</td>';
|
|
||||||
print '<td>'.$line->label_operation.'</td>';
|
|
||||||
print '<td class="right nowraponall amount">'.($line->debit != 0 ? price($line->debit) : '').'</td>';
|
|
||||||
print '<td class="right nowraponall amount">'.($line->credit != 0 ? price($line->credit) : '').'</td>';
|
|
||||||
|
|
||||||
print '<td class="center nowraponall">';
|
|
||||||
if (empty($line->date_export) && empty($line->date_validation)) {
|
|
||||||
print '<a class="editfielda reposition" href="' . $_SERVER["PHP_SELF"] . '?action=update&id=' . $line->id . '&piece_num=' . urlencode($line->piece_num) . '&mode=' . urlencode($mode) . '&token=' . urlencode(newToken()) . '">';
|
|
||||||
print img_edit('', 0, 'class="marginrightonly"');
|
|
||||||
print '</a> ';
|
|
||||||
} else {
|
|
||||||
print '<a class="editfielda nohover cursornotallowed reposition disabled" href="#" title="'.dol_escape_htmltag($langs->trans("ForbiddenTransactionAlreadyExported")).'">';
|
|
||||||
print img_edit($langs->trans("ForbiddenTransactionAlreadyExported"), 0, 'class="marginrightonly"');
|
|
||||||
print '</a> ';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($line->date_validation)) {
|
|
||||||
$actiontodelete = 'delete';
|
|
||||||
if ($mode == '_tmp' || $action != 'delmouv') {
|
|
||||||
$actiontodelete = 'confirm_delete';
|
|
||||||
}
|
|
||||||
|
|
||||||
print '<a href="' . $_SERVER["PHP_SELF"] . '?action=' . $actiontodelete . '&id=' . $line->id . '&piece_num=' . urlencode($line->piece_num) . '&mode=' . urlencode($mode) . '&token=' . urlencode(newToken()) . '">';
|
|
||||||
print img_delete();
|
|
||||||
print '</a>';
|
|
||||||
} else {
|
|
||||||
print '<a class="editfielda nohover cursornotallowed disabled" href="#" title="'.dol_escape_htmltag($langs->trans("ForbiddenTransactionAlreadyExported")).'">';
|
|
||||||
print img_delete($langs->trans("ForbiddenTransactionAlreadyValidated"));
|
|
||||||
print '</a>';
|
|
||||||
}
|
|
||||||
|
|
||||||
print '</td>';
|
|
||||||
}
|
}
|
||||||
print "</tr>\n";
|
} else {
|
||||||
}
|
print '<!-- td columns in display mode -->';
|
||||||
|
$resultfetch = $accountingaccount->fetch(null, $line->numero_compte, true);
|
||||||
$total_debit = price2num($total_debit, 'MT');
|
print '<td>';
|
||||||
$total_credit = price2num($total_credit, 'MT');
|
if ($resultfetch > 0) {
|
||||||
|
print $accountingaccount->getNomUrl(0, 1, 1, '', 0);
|
||||||
if ($total_debit != $total_credit) {
|
|
||||||
setEventMessages(null, array($langs->trans('MvtNotCorrectlyBalanced', $total_debit, $total_credit)), 'warnings');
|
|
||||||
}
|
|
||||||
|
|
||||||
print '</table>';
|
|
||||||
print '</div>';
|
|
||||||
|
|
||||||
if ($mode == '_tmp' && $action == '') {
|
|
||||||
print '<br>';
|
|
||||||
print '<div class="center">';
|
|
||||||
if ($total_debit == $total_credit) {
|
|
||||||
print '<a class="button" href="'.$_SERVER["PHP_SELF"].'?piece_num='.$object->piece_num.'&action=valid">'.$langs->trans("ValidTransaction").'</a>';
|
|
||||||
} else {
|
} else {
|
||||||
print '<input type="submit" class="button" disabled="disabled" href="#" title="'.dol_escape_htmltag($langs->trans("MvtNotCorrectlyBalanced", $debit, $credit)).'" value="'.dol_escape_htmltag($langs->trans("ValidTransaction")).'">';
|
print $line->numero_compte.' <span class="warning">('.$langs->trans("AccountRemovedFromCurrentChartOfAccount").')</span>';
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
print '<td>'.length_accounta($line->subledger_account);
|
||||||
|
if ($line->subledger_label) {
|
||||||
|
print ' - <span class="opacitymedium">'.$line->subledger_label.'</span>';
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
print '<td>'.$line->label_operation.'</td>';
|
||||||
|
print '<td class="right nowraponall amount">'.($line->debit != 0 ? price($line->debit) : '').'</td>';
|
||||||
|
print '<td class="right nowraponall amount">'.($line->credit != 0 ? price($line->credit) : '').'</td>';
|
||||||
|
|
||||||
|
print '<td class="center nowraponall">';
|
||||||
|
if (empty($line->date_export) && empty($line->date_validation)) {
|
||||||
|
print '<a class="editfielda reposition" href="' . $_SERVER["PHP_SELF"] . '?action=update&id=' . $line->id . '&piece_num=' . urlencode($line->piece_num) . '&mode=' . urlencode($mode) . '&token=' . urlencode(newToken()) . '">';
|
||||||
|
print img_edit('', 0, 'class="marginrightonly"');
|
||||||
|
print '</a> ';
|
||||||
|
} else {
|
||||||
|
print '<a class="editfielda nohover cursornotallowed reposition disabled" href="#" title="'.dol_escape_htmltag($langs->trans("ForbiddenTransactionAlreadyExported")).'">';
|
||||||
|
print img_edit($langs->trans("ForbiddenTransactionAlreadyExported"), 0, 'class="marginrightonly"');
|
||||||
|
print '</a> ';
|
||||||
}
|
}
|
||||||
|
|
||||||
print ' ';
|
if (empty($line->date_validation)) {
|
||||||
print '<a class="button button-cancel" href="'.DOL_URL_ROOT.'/accountancy/bookkeeping/list.php">'.$langs->trans("Cancel").'</a>';
|
$actiontodelete = 'delete';
|
||||||
|
if ($mode == '_tmp' || $action != 'delmouv') {
|
||||||
|
$actiontodelete = 'confirm_delete';
|
||||||
|
}
|
||||||
|
|
||||||
print "</div>";
|
print '<a href="' . $_SERVER["PHP_SELF"] . '?action=' . $actiontodelete . '&id=' . $line->id . '&piece_num=' . urlencode($line->piece_num) . '&mode=' . urlencode($mode) . '&token=' . urlencode(newToken()) . '">';
|
||||||
|
print img_delete();
|
||||||
|
print '</a>';
|
||||||
|
} else {
|
||||||
|
print '<a class="editfielda nohover cursornotallowed disabled" href="#" title="'.dol_escape_htmltag($langs->trans("ForbiddenTransactionAlreadyExported")).'">';
|
||||||
|
print img_delete($langs->trans("ForbiddenTransactionAlreadyValidated"));
|
||||||
|
print '</a>';
|
||||||
|
}
|
||||||
|
|
||||||
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
print "</tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
print '</form>';
|
$total_debit = price2num($total_debit, 'MT');
|
||||||
|
$total_credit = price2num($total_credit, 'MT');
|
||||||
|
|
||||||
|
if ($total_debit != $total_credit) {
|
||||||
|
setEventMessages(null, array($langs->trans('MvtNotCorrectlyBalanced', $total_debit, $total_credit)), 'warnings');
|
||||||
|
}
|
||||||
|
|
||||||
|
print '</table>';
|
||||||
|
print '</div>';
|
||||||
|
|
||||||
|
if ($mode == '_tmp' && $action == '') {
|
||||||
|
print '<br>';
|
||||||
|
print '<div class="center">';
|
||||||
|
if ($total_debit == $total_credit) {
|
||||||
|
print '<input type="submit" class="button" name="validate" value="' . $langs->trans("ValidTransaction") . '" />';
|
||||||
|
} else {
|
||||||
|
print '<input type="submit" class="button" disabled="disabled" href="#" title="'.dol_escape_htmltag($langs->trans("MvtNotCorrectlyBalanced", $debit, $credit)).'" value="'.dol_escape_htmltag($langs->trans("ValidTransaction")).'" />';
|
||||||
|
}
|
||||||
|
|
||||||
|
print ' ';
|
||||||
|
print '<a class="button button-cancel" href="'.DOL_URL_ROOT.'/accountancy/bookkeeping/list.php">'.$langs->trans("Cancel").'</a>';
|
||||||
|
|
||||||
|
print "</div>";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
print load_fiche_titre($langs->trans("NoRecords"));
|
print '</form>';
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
print load_fiche_titre($langs->trans("NoRecords"));
|
||||||
}
|
}
|
||||||
|
|
||||||
print dol_get_fiche_end();
|
print dol_get_fiche_end();
|
||||||
|
|||||||
@ -2,8 +2,10 @@
|
|||||||
/* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2013-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
* Copyright (C) 2013-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
|
* Copyright (C) 2022 Lionel Vessiller <lvessiller@open-dsi.fr>
|
||||||
* Copyright (C) 2016-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2016-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* 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 Progiseize <a.bisotti@progiseize.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
|
||||||
@ -102,7 +104,9 @@ if (GETPOST("button_export_file_x") || GETPOST("button_export_file.x") || GETPOS
|
|||||||
$action = 'export_file';
|
$action = 'export_file';
|
||||||
}
|
}
|
||||||
|
|
||||||
$search_accountancy_code = GETPOST("search_accountancy_code");
|
$search_account_category = GETPOST('search_account_category', 'int');
|
||||||
|
|
||||||
|
$search_accountancy_code = GETPOST("search_accountancy_code", 'alpha');
|
||||||
$search_accountancy_code_start = GETPOST('search_accountancy_code_start', 'alpha');
|
$search_accountancy_code_start = GETPOST('search_accountancy_code_start', 'alpha');
|
||||||
if ($search_accountancy_code_start == - 1) {
|
if ($search_accountancy_code_start == - 1) {
|
||||||
$search_accountancy_code_start = '';
|
$search_accountancy_code_start = '';
|
||||||
@ -253,6 +257,7 @@ if (empty($reshook)) {
|
|||||||
$search_doc_type = '';
|
$search_doc_type = '';
|
||||||
$search_doc_ref = '';
|
$search_doc_ref = '';
|
||||||
$search_doc_date = '';
|
$search_doc_date = '';
|
||||||
|
$search_account_category = '';
|
||||||
$search_accountancy_code = '';
|
$search_accountancy_code = '';
|
||||||
$search_accountancy_code_start = '';
|
$search_accountancy_code_start = '';
|
||||||
$search_accountancy_code_end = '';
|
$search_accountancy_code_end = '';
|
||||||
@ -335,6 +340,20 @@ if (empty($reshook)) {
|
|||||||
$filter['t.doc_ref'] = $search_doc_ref;
|
$filter['t.doc_ref'] = $search_doc_ref;
|
||||||
$param .= '&search_doc_ref='.urlencode($search_doc_ref);
|
$param .= '&search_doc_ref='.urlencode($search_doc_ref);
|
||||||
}
|
}
|
||||||
|
if ($search_account_category != '-1' && !empty($search_account_category)) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountancycategory.class.php';
|
||||||
|
$accountingcategory = new AccountancyCategory($db);
|
||||||
|
|
||||||
|
$listofaccountsforgroup = $accountingcategory->getCptsCat(0, 'fk_accounting_category = '.((int) $search_account_category));
|
||||||
|
$listofaccountsforgroup2 = array();
|
||||||
|
if (is_array($listofaccountsforgroup)) {
|
||||||
|
foreach ($listofaccountsforgroup as $tmpval) {
|
||||||
|
$listofaccountsforgroup2[] = "'".$db->escape($tmpval['id'])."'";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$filter['t.search_accounting_code_in'] = join(',', $listofaccountsforgroup2);
|
||||||
|
$param .= '&search_account_category='.urlencode($search_account_category);
|
||||||
|
}
|
||||||
if (!empty($search_accountancy_code)) {
|
if (!empty($search_accountancy_code)) {
|
||||||
$filter['t.numero_compte'] = $search_accountancy_code;
|
$filter['t.numero_compte'] = $search_accountancy_code;
|
||||||
$param .= '&search_accountancy_code='.urlencode($search_accountancy_code);
|
$param .= '&search_accountancy_code='.urlencode($search_accountancy_code);
|
||||||
@ -642,6 +661,9 @@ $sql .= " t.tms as date_modification,";
|
|||||||
$sql .= " t.date_export,";
|
$sql .= " t.date_export,";
|
||||||
$sql .= " t.date_validated as date_validation,";
|
$sql .= " t.date_validated as date_validation,";
|
||||||
$sql .= " t.import_key";
|
$sql .= " t.import_key";
|
||||||
|
|
||||||
|
$sqlfields = $sql; // $sql fields to remove for count total
|
||||||
|
|
||||||
$sql .= ' FROM '.MAIN_DB_PREFIX.$object->table_element.' as t';
|
$sql .= ' FROM '.MAIN_DB_PREFIX.$object->table_element.' as t';
|
||||||
// Manage filter
|
// Manage filter
|
||||||
$sqlwhere = array();
|
$sqlwhere = array();
|
||||||
@ -672,7 +694,13 @@ if (count($filter) > 0) {
|
|||||||
} elseif ($key == 't.reconciled_option') {
|
} elseif ($key == 't.reconciled_option') {
|
||||||
$sqlwhere[] = 't.lettering_code IS NULL';
|
$sqlwhere[] = 't.lettering_code IS NULL';
|
||||||
} elseif ($key == 't.code_journal' && !empty($value)) {
|
} elseif ($key == 't.code_journal' && !empty($value)) {
|
||||||
$sqlwhere[] = natural_search("t.code_journal", join(',', $value), 3, 1);
|
if (is_array($value)) {
|
||||||
|
$sqlwhere[] = natural_search("t.code_journal", join(',', $value), 3, 1);
|
||||||
|
} else {
|
||||||
|
$sqlwhere[] = natural_search("t.code_journal", $value, 3, 1);
|
||||||
|
}
|
||||||
|
} elseif ($key == 't.search_accounting_code_in' && !empty($value)) {
|
||||||
|
$sqlwhere[] = 't.numero_compte IN ('.$db->sanitize($value, 1).')';
|
||||||
} else {
|
} else {
|
||||||
$sqlwhere[] = natural_search($key, $value, 0, 1);
|
$sqlwhere[] = natural_search($key, $value, 0, 1);
|
||||||
}
|
}
|
||||||
@ -685,9 +713,6 @@ if (empty($conf->global->ACCOUNTING_REEXPORT)) {
|
|||||||
if (count($sqlwhere) > 0) {
|
if (count($sqlwhere) > 0) {
|
||||||
$sql .= ' AND '.implode(' AND ', $sqlwhere);
|
$sql .= ' AND '.implode(' AND ', $sqlwhere);
|
||||||
}
|
}
|
||||||
if (!empty($sortfield)) {
|
|
||||||
$sql .= $db->order($sortfield, $sortorder);
|
|
||||||
}
|
|
||||||
//print $sql;
|
//print $sql;
|
||||||
|
|
||||||
|
|
||||||
@ -715,58 +740,62 @@ if ($action == 'export_fileconfirm' && $user->hasRight('accounting', 'mouvements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$mimetype = $accountancyexport->getMimeType($formatexportset);
|
|
||||||
|
|
||||||
top_httphead($mimetype, 1);
|
|
||||||
|
|
||||||
// Output data on screen
|
|
||||||
$accountancyexport->export($object->lines, $formatexportset);
|
|
||||||
|
|
||||||
$notifiedexportdate = GETPOST('notifiedexportdate', 'alpha');
|
$notifiedexportdate = GETPOST('notifiedexportdate', 'alpha');
|
||||||
$notifiedvalidationdate = GETPOST('notifiedvalidationdate', 'alpha');
|
$notifiedvalidationdate = GETPOST('notifiedvalidationdate', 'alpha');
|
||||||
|
$withAttachment = !empty(trim(GETPOST('notifiedexportfull', 'alphanohtml'))) ? 1 : 0;
|
||||||
|
|
||||||
if (!empty($accountancyexport->errors)) {
|
// Output data on screen or download
|
||||||
dol_print_error('', '', $accountancyexport->errors);
|
$result = $accountancyexport->export($object->lines, $formatexportset, $withAttachment);
|
||||||
} elseif (!empty($notifiedexportdate) || !empty($notifiedvalidationdate)) {
|
|
||||||
// Specify as export : update field date_export or date_validated
|
|
||||||
$error = 0;
|
|
||||||
$db->begin();
|
|
||||||
|
|
||||||
if (is_array($object->lines)) {
|
$error = 0;
|
||||||
foreach ($object->lines as $movement) {
|
if ($result < 0) {
|
||||||
$now = dol_now();
|
$error++;
|
||||||
|
} else {
|
||||||
|
if (!empty($notifiedexportdate) || !empty($notifiedvalidationdate)) {
|
||||||
|
if (is_array($object->lines)) {
|
||||||
|
// Specify as export : update field date_export or date_validated
|
||||||
|
$db->begin();
|
||||||
|
|
||||||
$sql = " UPDATE ".MAIN_DB_PREFIX."accounting_bookkeeping";
|
foreach ($object->lines as $movement) {
|
||||||
$sql .= " SET";
|
$now = dol_now();
|
||||||
if (!empty($notifiedexportdate) && !empty($notifiedvalidationdate)) {
|
|
||||||
$sql .= " date_export = '".$db->idate($now)."'";
|
$sql = " UPDATE ".MAIN_DB_PREFIX."accounting_bookkeeping";
|
||||||
$sql .= ", date_validated = '".$db->idate($now)."'";
|
$sql .= " SET";
|
||||||
} elseif (!empty($notifiedexportdate)) {
|
if (!empty($notifiedexportdate) && !empty($notifiedvalidationdate)) {
|
||||||
$sql .= " date_export = '".$db->idate($now)."'";
|
$sql .= " date_export = '".$db->idate($now)."'";
|
||||||
} elseif (!empty($notifiedvalidationdate)) {
|
$sql .= ", date_validated = '".$db->idate($now)."'";
|
||||||
$sql .= " date_validated = '".$db->idate($now)."'";
|
} elseif (!empty($notifiedexportdate)) {
|
||||||
|
$sql .= " date_export = '".$db->idate($now)."'";
|
||||||
|
} elseif (!empty($notifiedvalidationdate)) {
|
||||||
|
$sql .= " date_validated = '".$db->idate($now)."'";
|
||||||
|
}
|
||||||
|
$sql .= " WHERE rowid = ".((int) $movement->id);
|
||||||
|
|
||||||
|
dol_syslog("/accountancy/bookkeeping/list.php Function export_file Specify movements as exported", LOG_DEBUG);
|
||||||
|
|
||||||
|
$result = $db->query($sql);
|
||||||
|
if (!$result) {
|
||||||
|
$error++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$sql .= " WHERE rowid = ".((int) $movement->id);
|
|
||||||
|
|
||||||
dol_syslog("/accountancy/bookkeeping/list.php Function export_file Specify movements as exported", LOG_DEBUG);
|
if (!$error) {
|
||||||
|
$db->commit();
|
||||||
$result = $db->query($sql);
|
} else {
|
||||||
if (!$result) {
|
|
||||||
$error++;
|
$error++;
|
||||||
break;
|
$accountancyexport->errors[] = $langs->trans('NotAllExportedMovementsCouldBeRecordedAsExportedOrValidated');
|
||||||
|
$db->rollback();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$error) {
|
|
||||||
$db->commit();
|
|
||||||
} else {
|
|
||||||
$error++;
|
|
||||||
$db->rollback();
|
|
||||||
dol_print_error('', $langs->trans("NotAllExportedMovementsCouldBeRecordedAsExportedOrValidated"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
exit;
|
|
||||||
|
if ($error) {
|
||||||
|
setEventMessages('', $accountancyexport->errors, 'errors');
|
||||||
|
header('Location: '.$_SERVER['PHP_SELF']);
|
||||||
|
}
|
||||||
|
exit(); // download or show errors
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -783,28 +812,38 @@ $title_page = $langs->trans("Operations").' - '.$langs->trans("Journals");
|
|||||||
// Count total nb of records
|
// Count total nb of records
|
||||||
$nbtotalofrecords = '';
|
$nbtotalofrecords = '';
|
||||||
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) {
|
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) {
|
||||||
$resql = $db->query($sql);
|
/* The fast and low memory method to get and count full list converts the sql into a sql count */
|
||||||
$nbtotalofrecords = $db->num_rows($resql);
|
$sqlforcount = preg_replace('/^'.preg_quote($sqlfields, '/').'/', 'SELECT COUNT(*) as nbtotalofrecords', $sql);
|
||||||
if (($page * $limit) > $nbtotalofrecords) { // if total of record found is smaller than page * limit, goto and load page 0
|
$sqlforcount = preg_replace('/GROUP BY .*$/', '', $sqlforcount);
|
||||||
|
$resql = $db->query($sqlforcount);
|
||||||
|
if ($resql) {
|
||||||
|
$objforcount = $db->fetch_object($resql);
|
||||||
|
$nbtotalofrecords = $objforcount->nbtotalofrecords;
|
||||||
|
} else {
|
||||||
|
dol_print_error($db);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
||||||
$page = 0;
|
$page = 0;
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
}
|
}
|
||||||
|
$db->free($resql);
|
||||||
}
|
}
|
||||||
// if total of record found is smaller than limit, no need to do paging and to restart another select with limits set.
|
|
||||||
if (is_numeric($nbtotalofrecords) && $limit > $nbtotalofrecords) {
|
// Complete request and execute it with limit
|
||||||
$num = $nbtotalofrecords;
|
$sql .= $db->order($sortfield, $sortorder);
|
||||||
} else {
|
if ($limit) {
|
||||||
$sql .= $db->plimit($limit + 1, $offset);
|
$sql .= $db->plimit($limit + 1, $offset);
|
||||||
|
|
||||||
$resql = $db->query($sql);
|
|
||||||
if (!$resql) {
|
|
||||||
dol_print_error($db);
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
$num = $db->num_rows($resql);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$resql = $db->query($sql);
|
||||||
|
if (!$resql) {
|
||||||
|
dol_print_error($db);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$num = $db->num_rows($resql);
|
||||||
|
|
||||||
$arrayofselected = is_array($toselect) ? $toselect : array();
|
$arrayofselected = is_array($toselect) ? $toselect : array();
|
||||||
|
|
||||||
// Output page
|
// Output page
|
||||||
@ -854,7 +893,17 @@ if ($action == 'export_file') {
|
|||||||
$form_question['separator3'] = array('name'=>'separator3', 'type'=>'separator');
|
$form_question['separator3'] = array('name'=>'separator3', 'type'=>'separator');
|
||||||
}
|
}
|
||||||
|
|
||||||
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?'.$param, $langs->trans("ExportFilteredList").' ('.$listofformat[$formatexportset].')', $langs->trans('ConfirmExportFile'), 'export_fileconfirm', $form_question, '', 1, 350, 600);
|
// add documents in an archive for accountancy export (Quadratus)
|
||||||
|
if (getDolGlobalString('ACCOUNTING_EXPORT_MODELCSV') == AccountancyExport::$EXPORT_TYPE_QUADRATUS) {
|
||||||
|
$form_question['notifiedexportfull'] = array(
|
||||||
|
'name' => 'notifiedexportfull',
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'label' => $langs->trans('NotifiedExportFull'),
|
||||||
|
'value' => 'false',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?'.$param, $langs->trans("ExportFilteredList").' ('.$listofformat[$formatexportset].')', $langs->trans('ConfirmExportFile'), 'export_fileconfirm', $form_question, '', 1, 400, 600);
|
||||||
}
|
}
|
||||||
|
|
||||||
//if ($action == 'delbookkeepingyear') {
|
//if ($action == 'delbookkeepingyear') {
|
||||||
@ -997,6 +1046,12 @@ if ($massactionbutton && $contextpage != 'poslist') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$moreforfilter = '';
|
$moreforfilter = '';
|
||||||
|
$moreforfilter .= '<div class="divsearchfield">';
|
||||||
|
$moreforfilter .= $langs->trans('AccountingCategory').': ';
|
||||||
|
$moreforfilter .= '<div class="nowrap inline-block">';
|
||||||
|
$moreforfilter .= $formaccounting->select_accounting_category($search_account_category, 'search_account_category', 1, 0, 0, 0);
|
||||||
|
$moreforfilter .= '</div>';
|
||||||
|
$moreforfilter .= '</div>';
|
||||||
|
|
||||||
$parameters = array();
|
$parameters = array();
|
||||||
$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
||||||
@ -1006,6 +1061,10 @@ if (empty($reshook)) {
|
|||||||
$moreforfilter = $hookmanager->resPrint;
|
$moreforfilter = $hookmanager->resPrint;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print '<div class="liste_titre liste_titre_bydiv centpercent">';
|
||||||
|
print $moreforfilter;
|
||||||
|
print '</div>';
|
||||||
|
|
||||||
print '<div class="div-table-responsive">';
|
print '<div class="div-table-responsive">';
|
||||||
print '<table class="tagtable liste centpercent">';
|
print '<table class="tagtable liste centpercent">';
|
||||||
|
|
||||||
@ -1511,6 +1570,16 @@ while ($i < min($num, $limit)) {
|
|||||||
// Show total line
|
// Show total line
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php';
|
||||||
|
|
||||||
|
// If no record found
|
||||||
|
if ($num == 0) {
|
||||||
|
$colspan = 1;
|
||||||
|
foreach ($arrayfields as $key => $val) {
|
||||||
|
if (!empty($val['checked'])) {
|
||||||
|
$colspan++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print '<tr><td colspan="'.$colspan.'"><span class="opacitymedium">'.$langs->trans("NoRecordFound").'</span></td></tr>';
|
||||||
|
}
|
||||||
|
|
||||||
$parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql);
|
$parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql);
|
||||||
$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
||||||
|
|||||||
@ -79,7 +79,8 @@ $search_date_validation_start = dol_mktime(0, 0, 0, $search_date_validation_star
|
|||||||
$search_date_validation_end = dol_mktime(23, 59, 59, $search_date_validation_endmonth, $search_date_validation_endday, $search_date_validation_endyear);
|
$search_date_validation_end = dol_mktime(23, 59, 59, $search_date_validation_endmonth, $search_date_validation_endday, $search_date_validation_endyear);
|
||||||
$search_import_key = GETPOST("search_import_key", 'alpha');
|
$search_import_key = GETPOST("search_import_key", 'alpha');
|
||||||
|
|
||||||
$search_accountancy_code = GETPOST("search_accountancy_code");
|
$search_account_category = GETPOST('search_account_category', 'int');
|
||||||
|
|
||||||
$search_accountancy_code_start = GETPOST('search_accountancy_code_start', 'alpha');
|
$search_accountancy_code_start = GETPOST('search_accountancy_code_start', 'alpha');
|
||||||
if ($search_accountancy_code_start == - 1) {
|
if ($search_accountancy_code_start == - 1) {
|
||||||
$search_accountancy_code_start = '';
|
$search_accountancy_code_start = '';
|
||||||
@ -198,6 +199,8 @@ if (!$user->hasRight('accounting', 'mouvements', 'lire')) {
|
|||||||
accessforbidden();
|
accessforbidden();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$error = 0;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Action
|
* Action
|
||||||
@ -224,7 +227,7 @@ if (empty($reshook)) {
|
|||||||
|
|
||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers
|
||||||
$search_doc_date = '';
|
$search_doc_date = '';
|
||||||
$search_accountancy_code = '';
|
$search_account_category = '';
|
||||||
$search_accountancy_code_start = '';
|
$search_accountancy_code_start = '';
|
||||||
$search_accountancy_code_end = '';
|
$search_accountancy_code_end = '';
|
||||||
$search_label_account = '';
|
$search_label_account = '';
|
||||||
@ -280,6 +283,20 @@ if (empty($reshook)) {
|
|||||||
$filter['t.doc_date'] = $search_doc_date;
|
$filter['t.doc_date'] = $search_doc_date;
|
||||||
$param .= '&doc_datemonth='.GETPOST('doc_datemonth', 'int').'&doc_dateday='.GETPOST('doc_dateday', 'int').'&doc_dateyear='.GETPOST('doc_dateyear', 'int');
|
$param .= '&doc_datemonth='.GETPOST('doc_datemonth', 'int').'&doc_dateday='.GETPOST('doc_dateday', 'int').'&doc_dateyear='.GETPOST('doc_dateyear', 'int');
|
||||||
}
|
}
|
||||||
|
if ($search_account_category != '-1' && !empty($search_account_category)) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountancycategory.class.php';
|
||||||
|
$accountingcategory = new AccountancyCategory($db);
|
||||||
|
|
||||||
|
$listofaccountsforgroup = $accountingcategory->getCptsCat(0, 'fk_accounting_category = '.((int) $search_account_category));
|
||||||
|
$listofaccountsforgroup2 = array();
|
||||||
|
if (is_array($listofaccountsforgroup)) {
|
||||||
|
foreach ($listofaccountsforgroup as $tmpval) {
|
||||||
|
$listofaccountsforgroup2[] = "'".$db->escape($tmpval['id'])."'";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$filter['t.search_accounting_code_in'] = join(',', $listofaccountsforgroup2);
|
||||||
|
$param .= '&search_account_category='.urlencode($search_account_category);
|
||||||
|
}
|
||||||
if (!empty($search_accountancy_code_start)) {
|
if (!empty($search_accountancy_code_start)) {
|
||||||
if ($type == 'sub') {
|
if ($type == 'sub') {
|
||||||
$filter['t.subledger_account>='] = $search_accountancy_code_start;
|
$filter['t.subledger_account>='] = $search_accountancy_code_start;
|
||||||
@ -358,7 +375,6 @@ if (empty($reshook)) {
|
|||||||
$filter['t.import_key'] = $search_import_key;
|
$filter['t.import_key'] = $search_import_key;
|
||||||
$param .= '&search_import_key='.urlencode($search_import_key);
|
$param .= '&search_import_key='.urlencode($search_import_key);
|
||||||
}
|
}
|
||||||
|
|
||||||
// param with type of list
|
// param with type of list
|
||||||
$url_param = substr($param, 1); // remove first "&"
|
$url_param = substr($param, 1); // remove first "&"
|
||||||
if (!empty($type)) {
|
if (!empty($type)) {
|
||||||
@ -544,25 +560,29 @@ llxHeader('', $title_page);
|
|||||||
// List
|
// List
|
||||||
$nbtotalofrecords = '';
|
$nbtotalofrecords = '';
|
||||||
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) {
|
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) {
|
||||||
|
// TODO Perf Replace this by a count
|
||||||
if ($type == 'sub') {
|
if ($type == 'sub') {
|
||||||
$nbtotalofrecords = $object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter, 'AND', 1);
|
$nbtotalofrecords = $object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter, 'AND', 1, 1);
|
||||||
} else {
|
} else {
|
||||||
$nbtotalofrecords = $object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter);
|
$nbtotalofrecords = $object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter, 'AND', 0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($nbtotalofrecords < 0) {
|
if ($nbtotalofrecords < 0) {
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($type == 'sub') {
|
if (!$error) {
|
||||||
$result = $object->fetchAllByAccount($sortorder, $sortfield, $limit, $offset, $filter, 'AND', 1);
|
if ($type == 'sub') {
|
||||||
} else {
|
$result = $object->fetchAllByAccount($sortorder, $sortfield, $limit, $offset, $filter, 'AND', 1);
|
||||||
$result = $object->fetchAllByAccount($sortorder, $sortfield, $limit, $offset, $filter);
|
} else {
|
||||||
}
|
$result = $object->fetchAllByAccount($sortorder, $sortfield, $limit, $offset, $filter, 'AND', 0);
|
||||||
|
}
|
||||||
|
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$arrayofselected = is_array($toselect) ? $toselect : array();
|
$arrayofselected = is_array($toselect) ? $toselect : array();
|
||||||
@ -711,7 +731,7 @@ if ($type == 'sub') {
|
|||||||
|
|
||||||
$moreforfilter = '';
|
$moreforfilter = '';
|
||||||
|
|
||||||
// Accountancy account
|
// Search on accountancy custom groups or account
|
||||||
$moreforfilter .= '<div class="divsearchfield">';
|
$moreforfilter .= '<div class="divsearchfield">';
|
||||||
$moreforfilter .= $langs->trans('AccountAccounting').': ';
|
$moreforfilter .= $langs->trans('AccountAccounting').': ';
|
||||||
$moreforfilter .= '<div class="nowrap inline-block">';
|
$moreforfilter .= '<div class="nowrap inline-block">';
|
||||||
@ -729,6 +749,13 @@ if ($type == 'sub') {
|
|||||||
$moreforfilter .= '</div>';
|
$moreforfilter .= '</div>';
|
||||||
$moreforfilter .= '</div>';
|
$moreforfilter .= '</div>';
|
||||||
|
|
||||||
|
$moreforfilter .= '<div class="divsearchfield">';
|
||||||
|
$moreforfilter .= $langs->trans('AccountingCategory').': ';
|
||||||
|
$moreforfilter .= '<div class="nowrap inline-block">';
|
||||||
|
$moreforfilter .= $formaccounting->select_accounting_category($search_account_category, 'search_account_category', 1, 0, 0, 0);
|
||||||
|
$moreforfilter .= '</div>';
|
||||||
|
$moreforfilter .= '</div>';
|
||||||
|
|
||||||
$parameters = array();
|
$parameters = array();
|
||||||
$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook
|
||||||
if (empty($reshook)) {
|
if (empty($reshook)) {
|
||||||
@ -935,8 +962,8 @@ while ($i < min($num, $limit)) {
|
|||||||
} else {
|
} else {
|
||||||
print '<td class="right" colspan="' . $colspan . '">' . $langs->trans("TotalForAccount") . ' ' . length_accountg($displayed_account_number) . ':</td>';
|
print '<td class="right" colspan="' . $colspan . '">' . $langs->trans("TotalForAccount") . ' ' . length_accountg($displayed_account_number) . ':</td>';
|
||||||
}
|
}
|
||||||
print '<td class="nowrap right">'.price($sous_total_debit).'</td>';
|
print '<td class="nowrap right">'.price(price2num($sous_total_debit, 'MT')).'</td>';
|
||||||
print '<td class="nowrap right">'.price($sous_total_credit).'</td>';
|
print '<td class="nowrap right">'.price(price2num($sous_total_credit, 'MT')).'</td>';
|
||||||
print '<td colspan="'.$colspanend.'"></td>';
|
print '<td colspan="'.$colspanend.'"></td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
// Show balance of last shown account
|
// Show balance of last shown account
|
||||||
@ -945,13 +972,13 @@ while ($i < min($num, $limit)) {
|
|||||||
print '<td class="right" colspan="'.$colspan.'">'.$langs->trans("Balance").':</td>';
|
print '<td class="right" colspan="'.$colspan.'">'.$langs->trans("Balance").':</td>';
|
||||||
if ($balance > 0) {
|
if ($balance > 0) {
|
||||||
print '<td class="nowraponall right">';
|
print '<td class="nowraponall right">';
|
||||||
print price($sous_total_debit - $sous_total_credit);
|
print price(price2num($sous_total_debit - $sous_total_credit, 'MT'));
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td></td>';
|
print '<td></td>';
|
||||||
} else {
|
} else {
|
||||||
print '<td></td>';
|
print '<td></td>';
|
||||||
print '<td class="nowraponall right">';
|
print '<td class="nowraponall right">';
|
||||||
print price($sous_total_credit - $sous_total_debit);
|
print price(price2num($sous_total_credit - $sous_total_debit, 'MT'));
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
print '<td colspan="'.$colspanend.'"></td>';
|
print '<td colspan="'.$colspanend.'"></td>';
|
||||||
@ -1206,8 +1233,8 @@ while ($i < min($num, $limit)) {
|
|||||||
if ($num > 0 && $colspan > 0) {
|
if ($num > 0 && $colspan > 0) {
|
||||||
print '<tr class="liste_total">';
|
print '<tr class="liste_total">';
|
||||||
print '<td class="right" colspan="'.$colspan.'">'.$langs->trans("TotalForAccount").' '.$accountg.':</td>';
|
print '<td class="right" colspan="'.$colspan.'">'.$langs->trans("TotalForAccount").' '.$accountg.':</td>';
|
||||||
print '<td class="nowrap right">'.price($sous_total_debit).'</td>';
|
print '<td class="nowrap right">'.price(price2num($sous_total_debit, 'MT')).'</td>';
|
||||||
print '<td class="nowrap right">'.price($sous_total_credit).'</td>';
|
print '<td class="nowrap right">'.price(price2num($sous_total_credit, 'MT')).'</td>';
|
||||||
print '<td colspan="'.$colspanend.'"></td>';
|
print '<td colspan="'.$colspanend.'"></td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
// Show balance of last shown account
|
// Show balance of last shown account
|
||||||
@ -1216,22 +1243,42 @@ if ($num > 0 && $colspan > 0) {
|
|||||||
print '<td class="right" colspan="'.$colspan.'">'.$langs->trans("Balance").':</td>';
|
print '<td class="right" colspan="'.$colspan.'">'.$langs->trans("Balance").':</td>';
|
||||||
if ($balance > 0) {
|
if ($balance > 0) {
|
||||||
print '<td class="nowraponall right">';
|
print '<td class="nowraponall right">';
|
||||||
print price($sous_total_debit - $sous_total_credit);
|
print price(price2num($sous_total_debit - $sous_total_credit, 'MT'));
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td></td>';
|
print '<td></td>';
|
||||||
} else {
|
} else {
|
||||||
print '<td></td>';
|
print '<td></td>';
|
||||||
print '<td class="nowraponall right">';
|
print '<td class="nowraponall right">';
|
||||||
print price($sous_total_credit - $sous_total_debit);
|
print price(price2num($sous_total_credit - $sous_total_debit, 'MT'));
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
print '<td colspan="'.$colspanend.'"></td>';
|
print '<td colspan="'.$colspanend.'"></td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Clean total values to round them
|
||||||
|
if (!empty($totalarray['val']['totaldebit'])) {
|
||||||
|
$totalarray['val']['totaldebit'] = price2num($totalarray['val']['totaldebit'], 'MT');
|
||||||
|
}
|
||||||
|
if (!empty($totalarray['val']['totalcredit'])) {
|
||||||
|
$totalarray['val']['totalcredit'] = price2num($totalarray['val']['totalcredit'], 'MT');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Show total line
|
// Show total line
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php';
|
||||||
|
|
||||||
|
// If no record found
|
||||||
|
if ($num == 0) {
|
||||||
|
$colspan = 1;
|
||||||
|
foreach ($arrayfields as $key => $val) {
|
||||||
|
if (!empty($val['checked'])) {
|
||||||
|
$colspan++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print '<tr><td colspan="'.$colspan.'"><span class="opacitymedium">'.$langs->trans("NoRecordFound").'</span></td></tr>';
|
||||||
|
}
|
||||||
|
|
||||||
$parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql);
|
$parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql);
|
||||||
$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
||||||
|
|||||||
@ -446,7 +446,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
} else {
|
} else {
|
||||||
$this->error = "Error ".$this->db->lasterror();
|
$this->error = "Error ".$this->db->lasterror();
|
||||||
$this->errors[] = $this->error;
|
$this->errors[] = $this->error;
|
||||||
dol_syslog(__METHOD__." ".implode(','.$this->errors), LOG_ERR);
|
dol_syslog(__METHOD__." ".implode(',', $this->errors), LOG_ERR);
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -488,7 +488,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
} else {
|
} else {
|
||||||
$this->error = "Error ".$this->db->lasterror();
|
$this->error = "Error ".$this->db->lasterror();
|
||||||
$this->errors[] = $this->error;
|
$this->errors[] = $this->error;
|
||||||
dol_syslog(__METHOD__." ".implode(','.$this->errors), LOG_ERR);
|
dol_syslog(__METHOD__." ".implode(',', $this->errors), LOG_ERR);
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -605,60 +605,6 @@ class AccountancyCategory // extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Function to know all custom groupd from an accounting account
|
|
||||||
*
|
|
||||||
* @return array|integer Result in table (array), -1 if KO
|
|
||||||
*/
|
|
||||||
public function getCatsCpts()
|
|
||||||
{
|
|
||||||
global $mysoc, $conf;
|
|
||||||
|
|
||||||
if (empty($mysoc->country_id)) {
|
|
||||||
dol_print_error('', 'Call to select_accounting_account with mysoc country not yet defined');
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
$sql = "SELECT t.rowid, t.account_number, t.label as account_label, cat.code, cat.position, cat.label as name_cat, cat.sens ";
|
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."accounting_account as t, ".MAIN_DB_PREFIX."c_accounting_category as cat";
|
|
||||||
$sql .= " WHERE t.fk_accounting_category IN ( SELECT c.rowid ";
|
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."c_accounting_category as c";
|
|
||||||
$sql .= " WHERE c.active = 1";
|
|
||||||
$sql .= " AND c.entity = ".$conf->entity;
|
|
||||||
$sql .= " AND (c.fk_country = ".((int) $mysoc->country_id)." OR c.fk_country = 0)";
|
|
||||||
$sql .= " AND cat.rowid = t.fk_accounting_category";
|
|
||||||
$sql .= " AND t.entity = ".$conf->entity;
|
|
||||||
$sql .= " ORDER BY cat.position ASC";
|
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
|
||||||
if ($resql) {
|
|
||||||
$i = 0;
|
|
||||||
$obj = '';
|
|
||||||
$num = $this->db->num_rows($resql);
|
|
||||||
$data = array();
|
|
||||||
if ($num) {
|
|
||||||
while ($obj = $this->db->fetch_object($resql)) {
|
|
||||||
$name_cat = $obj->name_cat;
|
|
||||||
$data[$name_cat][$i] = array(
|
|
||||||
'id' => $obj->rowid,
|
|
||||||
'code' => $obj->code,
|
|
||||||
'position' => $obj->position,
|
|
||||||
'account_number' => $obj->account_number,
|
|
||||||
'account_label' => $obj->account_label,
|
|
||||||
'sens' => $obj->sens
|
|
||||||
);
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $data;
|
|
||||||
} else {
|
|
||||||
$this->error = "Error ".$this->db->lasterror();
|
|
||||||
dol_syslog(__METHOD__." ".$this->error, LOG_ERR);
|
|
||||||
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to show result of an accounting account from the ledger with a direction and a period
|
* Function to show result of an accounting account from the ledger with a direction and a period
|
||||||
*
|
*
|
||||||
@ -678,6 +624,22 @@ class AccountancyCategory // extends CommonObject
|
|||||||
$this->sdc = 0;
|
$this->sdc = 0;
|
||||||
$this->sdcpermonth = array();
|
$this->sdcpermonth = array();
|
||||||
|
|
||||||
|
if (is_array($cpt)) {
|
||||||
|
$listofaccount = '';
|
||||||
|
foreach ($cpt as $cptcursor) {
|
||||||
|
if (! is_null($cptcursor)) {
|
||||||
|
if ($listofaccount) {
|
||||||
|
$listofaccount .= ",";
|
||||||
|
}
|
||||||
|
$listofaccount .= "'".$cptcursor."'";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (empty($listofaccount)) {
|
||||||
|
// List of account is empty, so we do no try sql request, we can say result is empty.
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$sql = "SELECT SUM(t.debit) as debit, SUM(t.credit) as credit";
|
$sql = "SELECT SUM(t.debit) as debit, SUM(t.credit) as credit";
|
||||||
if (is_array($cpt)) {
|
if (is_array($cpt)) {
|
||||||
$sql .= ", t.numero_compte as accountancy_account";
|
$sql .= ", t.numero_compte as accountancy_account";
|
||||||
@ -686,13 +648,6 @@ class AccountancyCategory // extends CommonObject
|
|||||||
//if (in_array($this->db->type, array('mysql', 'mysqli'))) $sql.=' USE INDEX idx_accounting_bookkeeping_doc_date';
|
//if (in_array($this->db->type, array('mysql', 'mysqli'))) $sql.=' USE INDEX idx_accounting_bookkeeping_doc_date';
|
||||||
$sql .= " WHERE t.entity = ".$conf->entity;
|
$sql .= " WHERE t.entity = ".$conf->entity;
|
||||||
if (is_array($cpt)) {
|
if (is_array($cpt)) {
|
||||||
$listofaccount = '';
|
|
||||||
foreach ($cpt as $cptcursor) {
|
|
||||||
if ($listofaccount) {
|
|
||||||
$listofaccount .= ",";
|
|
||||||
}
|
|
||||||
$listofaccount .= "'".$cptcursor."'";
|
|
||||||
}
|
|
||||||
$sql .= " AND t.numero_compte IN (".$this->db->sanitize($listofaccount, 1).")";
|
$sql .= " AND t.numero_compte IN (".$this->db->sanitize($listofaccount, 1).")";
|
||||||
} else {
|
} else {
|
||||||
$sql .= " AND t.numero_compte = '".$this->db->escape($cpt)."'";
|
$sql .= " AND t.numero_compte = '".$this->db->escape($cpt)."'";
|
||||||
@ -709,22 +664,28 @@ class AccountancyCategory // extends CommonObject
|
|||||||
if (is_array($cpt)) {
|
if (is_array($cpt)) {
|
||||||
$sql .= " GROUP BY t.numero_compte";
|
$sql .= " GROUP BY t.numero_compte";
|
||||||
}
|
}
|
||||||
//print $sql;
|
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
$num = $this->db->num_rows($resql);
|
$num = $this->db->num_rows($resql);
|
||||||
if ($num) {
|
if ($num) {
|
||||||
$obj = $this->db->fetch_object($resql);
|
$i = 0;
|
||||||
if ($sens == 1) {
|
while ($i < $num) {
|
||||||
$this->sdc = $obj->debit - $obj->credit;
|
$obj = $this->db->fetch_object($resql);
|
||||||
} else {
|
if ($obj) {
|
||||||
$this->sdc = $obj->credit - $obj->debit;
|
if ($sens == 1) {
|
||||||
}
|
$this->sdc = $obj->debit - $obj->credit;
|
||||||
if (is_array($cpt)) {
|
} else {
|
||||||
$this->sdcperaccount[$obj->accountancy_account] = $this->sdc;
|
$this->sdc = $obj->credit - $obj->debit;
|
||||||
|
}
|
||||||
|
if (is_array($cpt)) {
|
||||||
|
$this->sdcperaccount[$obj->accountancy_account] = $this->sdc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $num;
|
return $num;
|
||||||
} else {
|
} else {
|
||||||
$this->error = "Error ".$this->db->lasterror();
|
$this->error = "Error ".$this->db->lasterror();
|
||||||
@ -734,12 +695,75 @@ class AccountancyCategory // extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function to get an array of all active custom groups (llx_c_accunting_categories) with their accounts from the chart of account (ll_accounting_acount)
|
||||||
|
*
|
||||||
|
* @param int $catid Custom group ID
|
||||||
|
* @return array|integer Result in table (array), -1 if KO
|
||||||
|
* @see getCats(), getCptsCat()
|
||||||
|
*/
|
||||||
|
public function getCatsCpts($catid = 0)
|
||||||
|
{
|
||||||
|
global $mysoc, $conf;
|
||||||
|
|
||||||
|
if (empty($mysoc->country_id)) {
|
||||||
|
$this->error = "Error ".$this->db->lasterror();
|
||||||
|
dol_syslog(__METHOD__." ".$this->error, LOG_ERR);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = "SELECT t.rowid, t.account_number, t.label as account_label,";
|
||||||
|
$sql .= " cat.code, cat.position, cat.label as name_cat, cat.sens, cat.category_type, cat.formula";
|
||||||
|
$sql .= " FROM ".MAIN_DB_PREFIX."accounting_account as t, ".MAIN_DB_PREFIX."c_accounting_category as cat";
|
||||||
|
$sql .= " WHERE t.fk_accounting_category IN (SELECT c.rowid";
|
||||||
|
$sql .= " FROM ".MAIN_DB_PREFIX."c_accounting_category as c";
|
||||||
|
$sql .= " WHERE c.active = 1";
|
||||||
|
$sql .= " AND c.entity = ".$conf->entity;
|
||||||
|
$sql .= " AND (c.fk_country = ".((int) $mysoc->country_id)." OR c.fk_country = 0)";
|
||||||
|
$sql .= " AND cat.rowid = t.fk_accounting_category";
|
||||||
|
$sql .= " AND t.entity = ".$conf->entity;
|
||||||
|
if ($catid > 0) {
|
||||||
|
$sql .= " AND cat.rowid = ".((int) $catid);
|
||||||
|
}
|
||||||
|
$sql .= " ORDER BY cat.position ASC";
|
||||||
|
|
||||||
|
$resql = $this->db->query($sql);
|
||||||
|
if ($resql) {
|
||||||
|
$obj = '';
|
||||||
|
$num = $this->db->num_rows($resql);
|
||||||
|
$data = array();
|
||||||
|
if ($num) {
|
||||||
|
while ($obj = $this->db->fetch_object($resql)) {
|
||||||
|
$name_cat = $obj->name_cat;
|
||||||
|
$data[$name_cat][$obj->rowid] = array(
|
||||||
|
'id' => $obj->rowid,
|
||||||
|
'code' => $obj->code,
|
||||||
|
'label' => $obj->label,
|
||||||
|
'position' => $obj->position,
|
||||||
|
'category_type' => $obj->category_type,
|
||||||
|
'formula' => $obj->formula,
|
||||||
|
'sens' => $obj->sens,
|
||||||
|
'account_number' => $obj->account_number,
|
||||||
|
'account_label' => $obj->account_label
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $data;
|
||||||
|
} else {
|
||||||
|
$this->error = "Error ".$this->db->lasterror();
|
||||||
|
dol_syslog(__METHOD__." ".$this->error, LOG_ERR);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return list of custom groups.
|
* Return list of custom groups.
|
||||||
|
* For list + detail of accounting account, see getCatsCpt()
|
||||||
*
|
*
|
||||||
* @param int $categorytype -1=All, 0=Only non computed groups, 1=Only computed groups
|
* @param int $categorytype -1=All, 0=Only non computed groups, 1=Only computed groups
|
||||||
* @param int $active 1= active, 0=not active
|
* @param int $active 1= active, 0=not active
|
||||||
* @return array|int Array of groups or -1 if error
|
* @return array|int Array of groups or -1 if error
|
||||||
|
* @see getCatsCpts(), getCptsCat()
|
||||||
*/
|
*/
|
||||||
public function getCats($categorytype = -1, $active = 1)
|
public function getCats($categorytype = -1, $active = 1)
|
||||||
{
|
{
|
||||||
@ -774,9 +798,10 @@ class AccountancyCategory // extends CommonObject
|
|||||||
'rowid' => $obj->rowid,
|
'rowid' => $obj->rowid,
|
||||||
'code' => $obj->code,
|
'code' => $obj->code,
|
||||||
'label' => $obj->label,
|
'label' => $obj->label,
|
||||||
'formula' => $obj->formula,
|
|
||||||
'position' => $obj->position,
|
'position' => $obj->position,
|
||||||
'category_type' => $obj->category_type,
|
'category_type' => $obj->category_type,
|
||||||
|
'formula' => $obj->formula,
|
||||||
|
'sens' => $obj->sens,
|
||||||
'bc' => $obj->sens
|
'bc' => $obj->sens
|
||||||
);
|
);
|
||||||
$i++;
|
$i++;
|
||||||
@ -794,12 +819,15 @@ class AccountancyCategory // extends CommonObject
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all accounting account of a custom group (or a list of custom groups).
|
* Get all accounting account of a given custom group (or a list of custom groups).
|
||||||
* You must choose between first parameter (personalized group) or the second (free criteria filter)
|
* You must choose between first parameter (personalized group) or the second (free criteria filter)
|
||||||
*
|
*
|
||||||
* @param int $cat_id Id if personalized accounting group/category
|
* @param int $cat_id Id if personalized accounting group/category
|
||||||
* @param string $predefinedgroupwhere Sql criteria filter to select accounting accounts. This value must not come from an input of a user.
|
* @param string $predefinedgroupwhere Sql criteria filter to select accounting accounts. This value must be sanitized and not come from an input of a user.
|
||||||
|
* Example: "pcg_type = 'EXPENSE' AND fk_pcg_version = 'xx'"
|
||||||
|
* Example: "fk_accounting_category = 99"
|
||||||
* @return array|int Array of accounting accounts or -1 if error
|
* @return array|int Array of accounting accounts or -1 if error
|
||||||
|
* @see getCats(), getCatsCpts()
|
||||||
*/
|
*/
|
||||||
public function getCptsCat($cat_id, $predefinedgroupwhere = '')
|
public function getCptsCat($cat_id, $predefinedgroupwhere = '')
|
||||||
{
|
{
|
||||||
|
|||||||
@ -5,13 +5,15 @@
|
|||||||
* 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-2021 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
* Copyright (C) 2016-2022 Alexandre Spangaro <aspangaro@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>
|
||||||
* Copyright (C) 2017-2019 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2017-2019 Frédéric France <frederic.france@netlogic.fr>
|
||||||
* Copyright (C) 2017 André Schild <a.schild@aarboard.ch>
|
* Copyright (C) 2017 André Schild <a.schild@aarboard.ch>
|
||||||
* Copyright (C) 2020 Guillaume Alexandre <guillaume@tag-info.fr>
|
* Copyright (C) 2020 Guillaume Alexandre <guillaume@tag-info.fr>
|
||||||
* Copyright (C) 2022 Joachim Kueter <jkueter@gmx.de>
|
* Copyright (C) 2022 Joachim Kueter <jkueter@gmx.de>
|
||||||
|
* Copyright (C) 2022 Progiseize <a.bisotti@progiseize.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
|
||||||
@ -36,6 +38,7 @@
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -313,9 +316,10 @@ class AccountancyExport
|
|||||||
*
|
*
|
||||||
* @param array $TData Array with data
|
* @param array $TData Array with data
|
||||||
* @param int $formatexportset Id of export format
|
* @param int $formatexportset Id of export format
|
||||||
* @return void
|
* @param int $withAttachment [=0] Not add files or 1 to have attached in an archive (ex : Quadratus)
|
||||||
|
* @return int <0 if KO, >0 OK
|
||||||
*/
|
*/
|
||||||
public function export(&$TData, $formatexportset)
|
public function export(&$TData, $formatexportset, $withAttachment = 0)
|
||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
global $search_date_end; // Used into /accountancy/tpl/export_journal.tpl.php
|
global $search_date_end; // Used into /accountancy/tpl/export_journal.tpl.php
|
||||||
@ -325,8 +329,44 @@ class AccountancyExport
|
|||||||
$type_export = 'general_ledger';
|
$type_export = 'general_ledger';
|
||||||
|
|
||||||
global $db; // The tpl file use $db
|
global $db; // The tpl file use $db
|
||||||
|
$completefilename = '';
|
||||||
|
$exportFile = null;
|
||||||
|
$exportFileName = '';
|
||||||
|
$exportFilePath = '';
|
||||||
|
$archiveFileList = array();
|
||||||
|
if ($withAttachment == 1) {
|
||||||
|
// PHP ZIP extension must be enabled
|
||||||
|
if (!extension_loaded('zip')) {
|
||||||
|
$langs->load('install');
|
||||||
|
$this->errors[] = $langs->trans('ErrorPHPDoesNotSupport', 'ZIP');
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$mimetype = $this->getMimeType($formatexportset);
|
||||||
|
top_httphead($mimetype, 1);
|
||||||
|
}
|
||||||
include DOL_DOCUMENT_ROOT.'/accountancy/tpl/export_journal.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/accountancy/tpl/export_journal.tpl.php';
|
||||||
|
if ($withAttachment == 1 && !empty($completefilename)) {
|
||||||
|
// create export file
|
||||||
|
$tmpDir = !empty($conf->accounting->multidir_temp[$conf->entity]) ? $conf->accounting->multidir_temp[$conf->entity] : $conf->accounting->dir_temp;
|
||||||
|
$exportFileFullName = $completefilename;
|
||||||
|
$exportFileBaseName = basename($exportFileFullName);
|
||||||
|
$exportFileName = pathinfo($exportFileBaseName, PATHINFO_FILENAME);
|
||||||
|
$exportFilePath = $tmpDir.'/'.$exportFileFullName;
|
||||||
|
$exportFile = fopen($exportFilePath, 'w');
|
||||||
|
if (!$exportFile) {
|
||||||
|
$this->errors[] = $langs->trans('ErrorFileNotFound', $exportFilePath);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
$archiveFileList[0] = array(
|
||||||
|
'path' => $exportFilePath,
|
||||||
|
'name' => $exportFileFullName,
|
||||||
|
);
|
||||||
|
|
||||||
|
// archive name and path
|
||||||
|
$archiveFullName = $exportFileName.'.zip';
|
||||||
|
$archivePath = $tmpDir.'/'.$archiveFullName;
|
||||||
|
}
|
||||||
|
|
||||||
switch ($formatexportset) {
|
switch ($formatexportset) {
|
||||||
case self::$EXPORT_TYPE_CONFIGURABLE:
|
case self::$EXPORT_TYPE_CONFIGURABLE:
|
||||||
@ -345,7 +385,7 @@ class AccountancyExport
|
|||||||
$this->exportCiel($TData);
|
$this->exportCiel($TData);
|
||||||
break;
|
break;
|
||||||
case self::$EXPORT_TYPE_QUADRATUS:
|
case self::$EXPORT_TYPE_QUADRATUS:
|
||||||
$this->exportQuadratus($TData);
|
$archiveFileList = $this->exportQuadratus($TData, $exportFile, $archiveFileList, $withAttachment);
|
||||||
break;
|
break;
|
||||||
case self::$EXPORT_TYPE_WINFIC:
|
case self::$EXPORT_TYPE_WINFIC:
|
||||||
$this->exportWinfic($TData);
|
$this->exportWinfic($TData);
|
||||||
@ -399,6 +439,69 @@ class AccountancyExport
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// create and download export file or archive
|
||||||
|
if ($withAttachment == 1) {
|
||||||
|
$error = 0;
|
||||||
|
|
||||||
|
// close export file
|
||||||
|
if ($exportFile) {
|
||||||
|
fclose($exportFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($archiveFullName) && !empty($archivePath) && !empty($archiveFileList)) {
|
||||||
|
// archive files
|
||||||
|
$downloadFileMimeType = 'application/zip';
|
||||||
|
$downloadFileFullName = $archiveFullName;
|
||||||
|
$downloadFilePath = $archivePath;
|
||||||
|
|
||||||
|
// create archive
|
||||||
|
$archive = new ZipArchive();
|
||||||
|
$res = $archive->open($archivePath, ZipArchive::OVERWRITE | ZipArchive::CREATE);
|
||||||
|
if ($res !== true) {
|
||||||
|
$error++;
|
||||||
|
$this->errors[] = $langs->trans('ErrorFileNotFound', $archivePath);
|
||||||
|
}
|
||||||
|
if (!$error) {
|
||||||
|
// add files
|
||||||
|
foreach ($archiveFileList as $archiveFileArr) {
|
||||||
|
$res = $archive->addFile($archiveFileArr['path'], $archiveFileArr['name']);
|
||||||
|
if (!$res) {
|
||||||
|
$error++;
|
||||||
|
$this->errors[] = $langs->trans('ErrorArchiveAddFile', $archiveFileArr['name']);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!$error) {
|
||||||
|
// close archive
|
||||||
|
$archive->close();
|
||||||
|
}
|
||||||
|
} elseif (!empty($exportFileFullName) && !empty($exportFilePath)) {
|
||||||
|
// only one file to download
|
||||||
|
$downloadFileMimeType = 'text/csv';
|
||||||
|
$downloadFileFullName = $exportFileFullName;
|
||||||
|
$downloadFilePath = $exportFilePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$error) {
|
||||||
|
// download export file
|
||||||
|
if (!empty($downloadFileMimeType) && !empty($downloadFileFullName) && !empty($downloadFilePath)) {
|
||||||
|
header('Content-Type: '.$downloadFileMimeType);
|
||||||
|
header('Content-Disposition: attachment; filename='.$downloadFileFullName);
|
||||||
|
header('Cache-Control: Public, must-revalidate');
|
||||||
|
header('Pragma: public');
|
||||||
|
header('Content-Length: '.dol_filesize($downloadFilePath));
|
||||||
|
readfileLowMemory($downloadFilePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($error) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -444,14 +547,14 @@ class AccountancyExport
|
|||||||
print $date.$separator;
|
print $date.$separator;
|
||||||
print $line->piece_num.$separator;
|
print $line->piece_num.$separator;
|
||||||
print length_accountg($line->numero_compte).$separator;
|
print length_accountg($line->numero_compte).$separator;
|
||||||
print ''.$separator;
|
print $separator;
|
||||||
print $line->label_operation.$separator;
|
print $line->label_operation.$separator;
|
||||||
print $date.$separator;
|
print $date.$separator;
|
||||||
if ($line->sens == 'D') {
|
if ($line->sens == 'D') {
|
||||||
print price($line->debit).$separator;
|
print price($line->debit).$separator;
|
||||||
print ''.$separator;
|
print $separator;
|
||||||
} elseif ($line->sens == 'C') {
|
} elseif ($line->sens == 'C') {
|
||||||
print ''.$separator;
|
print $separator;
|
||||||
print price($line->credit).$separator;
|
print price($line->credit).$separator;
|
||||||
}
|
}
|
||||||
print $line->doc_ref.$separator;
|
print $line->doc_ref.$separator;
|
||||||
@ -584,10 +687,13 @@ class AccountancyExport
|
|||||||
* 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)"
|
||||||
*
|
*
|
||||||
* @param array $TData data
|
* @param array $TData Data
|
||||||
* @return void
|
* @param resource $exportFile [=null] File resource to export or print if null
|
||||||
|
* @param array $archiveFileList [=array()] Archive file list : array of ['path', 'name']
|
||||||
|
* @param bool $withAttachment [=0] Not add files or 1 to have attached in an archive
|
||||||
|
* @return array Archive file list : array of ['path', 'name']
|
||||||
*/
|
*/
|
||||||
public function exportQuadratus(&$TData)
|
public function exportQuadratus(&$TData, $exportFile = null, $archiveFileList = array(), $withAttachment = 0)
|
||||||
{
|
{
|
||||||
global $conf, $db;
|
global $conf, $db;
|
||||||
|
|
||||||
@ -637,7 +743,11 @@ class AccountancyExport
|
|||||||
|
|
||||||
$Tab['end_line'] = $end_line;
|
$Tab['end_line'] = $end_line;
|
||||||
|
|
||||||
print implode($Tab);
|
if ($exportFile) {
|
||||||
|
fwrite($exportFile, implode($Tab));
|
||||||
|
} else {
|
||||||
|
print implode($Tab);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$Tab = array();
|
$Tab = array();
|
||||||
@ -708,12 +818,63 @@ class AccountancyExport
|
|||||||
// 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
|
||||||
// $Tab['num_piece3'] = str_pad(self::trunc($data->piece_num, 10), 10);
|
// $Tab['num_piece3'] = str_pad(self::trunc($data->piece_num, 10), 10);
|
||||||
$Tab['num_piece3'] = substr(self::trunc($data->doc_ref, 20), -10);
|
$Tab['num_piece3'] = substr(self::trunc($data->doc_ref, 20), -10);
|
||||||
$Tab['filler4'] = str_repeat(' ', 73);
|
$Tab['reserved'] = str_repeat(' ', 10); // position 159
|
||||||
|
$Tab['currency_amount'] = str_repeat(' ', 13); // position 169
|
||||||
|
// get document file
|
||||||
|
$attachmentFileName = '';
|
||||||
|
if ($withAttachment == 1) {
|
||||||
|
$attachmentFileKey = trim($data->piece_num);
|
||||||
|
|
||||||
|
if (!isset($archiveFileList[$attachmentFileKey])) {
|
||||||
|
$objectDirPath = '';
|
||||||
|
$objectFileName = dol_sanitizeFileName($data->doc_ref);
|
||||||
|
if ($data->doc_type == 'customer_invoice') {
|
||||||
|
$objectDirPath = !empty($conf->facture->multidir_output[$conf->entity]) ? $conf->facture->multidir_output[$conf->entity] : $conf->facture->dir_output;
|
||||||
|
} elseif ($data->doc_type == 'expense_report') {
|
||||||
|
$objectDirPath = !empty($conf->expensereport->multidir_output[$conf->entity]) ? $conf->expensereport->multidir_output[$conf->entity] : $conf->factureexpensereport->dir_output;
|
||||||
|
} elseif ($data->doc_type == 'supplier_invoice') {
|
||||||
|
$objectDirPath = !empty($conf->fournisseur->facture->multidir_output[$conf->entity]) ? $conf->fournisseur->facture->multidir_output[$conf->entity] : $conf->fournisseur->facture->dir_output;
|
||||||
|
}
|
||||||
|
$arrayofinclusion = array();
|
||||||
|
$arrayofinclusion[] = '^'.preg_quote($objectFileName, '/').'\.pdf$';
|
||||||
|
$fileFoundList = dol_dir_list($objectDirPath.'/'.$objectFileName, 'files', 0, implode('|', $arrayofinclusion), '(\.meta|_preview.*\.png)$', 'date', SORT_DESC, 0, true);
|
||||||
|
if (!empty($fileFoundList)) {
|
||||||
|
$attachmentFileNameTrunc = str_pad(self::trunc($data->piece_num, 8), 8, '0', STR_PAD_LEFT);
|
||||||
|
foreach ($fileFoundList as $fileFound) {
|
||||||
|
if (strstr($fileFound['name'], $objectFileName)) {
|
||||||
|
$fileFoundPath = $objectDirPath.'/'.$objectFileName.'/'.$fileFound['name'];
|
||||||
|
if (file_exists($fileFoundPath)) {
|
||||||
|
$archiveFileList[$attachmentFileKey] = array(
|
||||||
|
'path' => $fileFoundPath,
|
||||||
|
'name' => $attachmentFileNameTrunc.'.pdf',
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($archiveFileList[$attachmentFileKey])) {
|
||||||
|
$attachmentFileName = $archiveFileList[$attachmentFileKey]['name'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (dol_strlen($attachmentFileName) == 12) {
|
||||||
|
$Tab['attachment'] = $attachmentFileName; // position 182
|
||||||
|
} else {
|
||||||
|
$Tab['attachment'] = str_repeat(' ', 12); // position 182
|
||||||
|
}
|
||||||
|
$Tab['filler4'] = str_repeat(' ', 38);
|
||||||
$Tab['end_line'] = $end_line;
|
$Tab['end_line'] = $end_line;
|
||||||
|
|
||||||
print implode($Tab);
|
if ($exportFile) {
|
||||||
|
fwrite($exportFile, implode($Tab));
|
||||||
|
} else {
|
||||||
|
print implode($Tab);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return $archiveFileList;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -454,27 +454,12 @@ class AccountingJournal extends CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
$sql = "";
|
$sql = "";
|
||||||
|
|
||||||
// FIXME sql error with Mysql 5.7
|
|
||||||
/*if ($in_bookkeeping == 'already' || $in_bookkeeping == 'notyet') {
|
|
||||||
$sql .= "WITH in_accounting_bookkeeping(fk_docdet) AS (";
|
|
||||||
$sql .= " SELECT DISTINCT fk_docdet";
|
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping";
|
|
||||||
$sql .= " WHERE doc_type = 'asset'";
|
|
||||||
$sql .= ") ";
|
|
||||||
}*/
|
|
||||||
|
|
||||||
$sql .= "SELECT ad.fk_asset AS rowid, a.ref AS asset_ref, a.label AS asset_label, a.acquisition_value_ht AS asset_acquisition_value_ht";
|
$sql .= "SELECT ad.fk_asset AS rowid, a.ref AS asset_ref, a.label AS asset_label, a.acquisition_value_ht AS asset_acquisition_value_ht";
|
||||||
$sql .= ", a.disposal_date AS asset_disposal_date, a.disposal_amount_ht AS asset_disposal_amount_ht, a.disposal_subject_to_vat AS asset_disposal_subject_to_vat";
|
$sql .= ", a.disposal_date AS asset_disposal_date, a.disposal_amount_ht AS asset_disposal_amount_ht, a.disposal_subject_to_vat AS asset_disposal_subject_to_vat";
|
||||||
$sql .= ", ad.rowid AS depreciation_id, ad.depreciation_mode, ad.ref AS depreciation_ref, ad.depreciation_date, ad.depreciation_ht, ad.accountancy_code_debit, ad.accountancy_code_credit";
|
$sql .= ", ad.rowid AS depreciation_id, ad.depreciation_mode, ad.ref AS depreciation_ref, ad.depreciation_date, ad.depreciation_ht, ad.accountancy_code_debit, ad.accountancy_code_credit";
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "asset_depreciation as ad";
|
$sql .= " FROM " . MAIN_DB_PREFIX . "asset_depreciation as ad";
|
||||||
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "asset as a ON a.rowid = ad.fk_asset";
|
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "asset as a ON a.rowid = ad.fk_asset";
|
||||||
// FIXME sql error with Mysql 5.7
|
|
||||||
/*if ($in_bookkeeping == 'already' || $in_bookkeeping == 'notyet') {
|
|
||||||
$sql .= " LEFT JOIN in_accounting_bookkeeping as iab ON iab.fk_docdet = ad.rowid";
|
|
||||||
}*/
|
|
||||||
$sql .= " WHERE a.entity IN (" . getEntity('asset', 0) . ')'; // We don't share object for accountancy, we use source object sharing
|
$sql .= " WHERE a.entity IN (" . getEntity('asset', 0) . ')'; // We don't share object for accountancy, we use source object sharing
|
||||||
// Compatibility with Mysql 5.7
|
|
||||||
if ($in_bookkeeping == 'already') {
|
if ($in_bookkeeping == 'already') {
|
||||||
$sql .= " AND EXISTS (SELECT iab.fk_docdet FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping AS iab WHERE iab.fk_docdet = ad.rowid AND doc_type = 'asset')";
|
$sql .= " AND EXISTS (SELECT iab.fk_docdet FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping AS iab WHERE iab.fk_docdet = ad.rowid AND doc_type = 'asset')";
|
||||||
} elseif ($in_bookkeeping == 'notyet') {
|
} elseif ($in_bookkeeping == 'notyet') {
|
||||||
@ -488,11 +473,6 @@ class AccountingJournal extends CommonObject
|
|||||||
if (!empty($conf->global->ACCOUNTING_DATE_START_BINDING)) {
|
if (!empty($conf->global->ACCOUNTING_DATE_START_BINDING)) {
|
||||||
$sql .= " AND ad.depreciation_date >= '" . $this->db->idate($conf->global->ACCOUNTING_DATE_START_BINDING) . "'";
|
$sql .= " AND ad.depreciation_date >= '" . $this->db->idate($conf->global->ACCOUNTING_DATE_START_BINDING) . "'";
|
||||||
}
|
}
|
||||||
// Already in bookkeeping or not
|
|
||||||
// FIXME sql error with Mysql 5.7
|
|
||||||
/*if ($in_bookkeeping == 'already' || $in_bookkeeping == 'notyet') {
|
|
||||||
$sql .= " AND iab.fk_docdet IS" . ($in_bookkeeping == 'already' ? " NOT" : "") . " NULL";
|
|
||||||
}*/
|
|
||||||
$sql .= " ORDER BY ad.depreciation_date";
|
$sql .= " ORDER BY ad.depreciation_date";
|
||||||
|
|
||||||
dol_syslog(__METHOD__, LOG_DEBUG);
|
dol_syslog(__METHOD__, LOG_DEBUG);
|
||||||
@ -755,7 +735,7 @@ class AccountingJournal extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$journal_data[$pre_data_id] = $element;
|
$journal_data[(int) $pre_data_id] = $element;
|
||||||
}
|
}
|
||||||
unset($pre_data);
|
unset($pre_data);
|
||||||
|
|
||||||
|
|||||||
@ -817,56 +817,61 @@ class BookKeeping extends CommonObject
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load object in memory from the database
|
* Load object in memory from the database in ->lines. Or just make a simple count if $countonly=1.
|
||||||
*
|
*
|
||||||
* @param string $sortorder Sort Order
|
* @param string $sortorder Sort Order
|
||||||
* @param string $sortfield Sort field
|
* @param string $sortfield Sort field
|
||||||
* @param int $limit offset limit
|
* @param int $limit offset limit
|
||||||
* @param int $offset offset limit
|
* @param int $offset offset limit
|
||||||
* @param array $filter filter array
|
* @param array $filter filter array
|
||||||
* @param string $filtermode filter mode (AND or OR)
|
* @param string $filtermode filter mode (AND or OR)
|
||||||
* @param int $option option (0: general account or 1: subaccount)
|
* @param int $option option (0: general account or 1: subaccount)
|
||||||
*
|
* @param int $countonly Do not fill the $object->lines, return only the count.
|
||||||
* @return int <0 if KO, >=0 if OK
|
* @return int <0 if KO, Number of lines if OK
|
||||||
*/
|
*/
|
||||||
public function fetchAllByAccount($sortorder = '', $sortfield = '', $limit = 0, $offset = 0, array $filter = array(), $filtermode = 'AND', $option = 0)
|
public function fetchAllByAccount($sortorder = '', $sortfield = '', $limit = 0, $offset = 0, array $filter = array(), $filtermode = 'AND', $option = 0, $countonly = 0)
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
dol_syslog(__METHOD__, LOG_DEBUG);
|
dol_syslog(__METHOD__, LOG_DEBUG);
|
||||||
|
|
||||||
$this->lines = array();
|
$this->lines = array();
|
||||||
|
$num = 0;
|
||||||
|
|
||||||
$sql = 'SELECT';
|
$sql = 'SELECT';
|
||||||
$sql .= ' t.rowid,';
|
if ($countonly) {
|
||||||
$sql .= " t.doc_date,";
|
$sql .= ' COUNT(t.rowid) as nb';
|
||||||
$sql .= " t.doc_type,";
|
} else {
|
||||||
$sql .= " t.doc_ref,";
|
$sql .= ' t.rowid,';
|
||||||
$sql .= " t.fk_doc,";
|
$sql .= " t.doc_date,";
|
||||||
$sql .= " t.fk_docdet,";
|
$sql .= " t.doc_type,";
|
||||||
$sql .= " t.thirdparty_code,";
|
$sql .= " t.doc_ref,";
|
||||||
$sql .= " t.subledger_account,";
|
$sql .= " t.fk_doc,";
|
||||||
$sql .= " t.subledger_label,";
|
$sql .= " t.fk_docdet,";
|
||||||
$sql .= " t.numero_compte,";
|
$sql .= " t.thirdparty_code,";
|
||||||
$sql .= " t.label_compte,";
|
$sql .= " t.subledger_account,";
|
||||||
$sql .= " t.label_operation,";
|
$sql .= " t.subledger_label,";
|
||||||
$sql .= " t.debit,";
|
$sql .= " t.numero_compte,";
|
||||||
$sql .= " t.credit,";
|
$sql .= " t.label_compte,";
|
||||||
$sql .= " t.montant as amount,";
|
$sql .= " t.label_operation,";
|
||||||
$sql .= " t.sens,";
|
$sql .= " t.debit,";
|
||||||
$sql .= " t.multicurrency_amount,";
|
$sql .= " t.credit,";
|
||||||
$sql .= " t.multicurrency_code,";
|
$sql .= " t.montant as amount,";
|
||||||
$sql .= " t.lettering_code,";
|
$sql .= " t.sens,";
|
||||||
$sql .= " t.date_lettering,";
|
$sql .= " t.multicurrency_amount,";
|
||||||
$sql .= " t.fk_user_author,";
|
$sql .= " t.multicurrency_code,";
|
||||||
$sql .= " t.import_key,";
|
$sql .= " t.lettering_code,";
|
||||||
$sql .= " t.code_journal,";
|
$sql .= " t.date_lettering,";
|
||||||
$sql .= " t.journal_label,";
|
$sql .= " t.fk_user_author,";
|
||||||
$sql .= " t.piece_num,";
|
$sql .= " t.import_key,";
|
||||||
$sql .= " t.date_creation,";
|
$sql .= " t.code_journal,";
|
||||||
$sql .= " t.date_export,";
|
$sql .= " t.journal_label,";
|
||||||
$sql .= " t.date_validated as date_validation,";
|
$sql .= " t.piece_num,";
|
||||||
$sql .= " t.import_key";
|
$sql .= " t.date_creation,";
|
||||||
|
$sql .= " t.date_export,";
|
||||||
|
$sql .= " t.date_validated as date_validation,";
|
||||||
|
$sql .= " t.import_key";
|
||||||
|
}
|
||||||
// Manage filter
|
// Manage filter
|
||||||
$sqlwhere = array();
|
$sqlwhere = array();
|
||||||
if (count($filter) > 0) {
|
if (count($filter) > 0) {
|
||||||
@ -880,7 +885,7 @@ class BookKeeping extends CommonObject
|
|||||||
} elseif ($key == 't.fk_doc' || $key == 't.fk_docdet' || $key == 't.piece_num') {
|
} elseif ($key == 't.fk_doc' || $key == 't.fk_docdet' || $key == 't.piece_num') {
|
||||||
$sqlwhere[] = $key.'='.$value;
|
$sqlwhere[] = $key.'='.$value;
|
||||||
} elseif ($key == 't.subledger_account' || $key == 't.numero_compte') {
|
} elseif ($key == 't.subledger_account' || $key == 't.numero_compte') {
|
||||||
$sqlwhere[] = $key.' LIKE \''.$this->db->escape($value).'%\'';
|
$sqlwhere[] = $key.' LIKE \''.$this->db->escapeforlike($this->db->escape($value)).'%\'';
|
||||||
} elseif ($key == 't.date_creation>=' || $key == 't.date_creation<=') {
|
} elseif ($key == 't.date_creation>=' || $key == 't.date_creation<=') {
|
||||||
$sqlwhere[] = $key.'\''.$this->db->idate($value).'\'';
|
$sqlwhere[] = $key.'\''.$this->db->idate($value).'\'';
|
||||||
} elseif ($key == 't.date_export>=' || $key == 't.date_export<=') {
|
} elseif ($key == 't.date_export>=' || $key == 't.date_export<=') {
|
||||||
@ -897,18 +902,19 @@ class BookKeeping extends CommonObject
|
|||||||
} else {
|
} else {
|
||||||
$sqlwhere[] = natural_search("t.code_journal", $value, 3, 1);
|
$sqlwhere[] = natural_search("t.code_journal", $value, 3, 1);
|
||||||
}
|
}
|
||||||
|
} elseif ($key == 't.search_accounting_code_in' && !empty($value)) {
|
||||||
|
$sqlwhere[] = 't.numero_compte IN ('.$this->db->sanitize($value, 1).')';
|
||||||
} else {
|
} else {
|
||||||
$sqlwhere[] = natural_search($key, $value, 0, 1);
|
$sqlwhere[] = natural_search($key, $value, 0, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t';
|
$sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t';
|
||||||
$sql .= ' WHERE 1 = 1';
|
$sql .= ' WHERE entity = ' . ((int) $conf->entity); // Do not use getEntity for accounting features
|
||||||
$sql .= " AND entity = " . ((int) $conf->entity); // Do not use getEntity for accounting features
|
|
||||||
if (count($sqlwhere) > 0) {
|
if (count($sqlwhere) > 0) {
|
||||||
$sql .= " AND ".implode(" ".$filtermode." ", $sqlwhere);
|
$sql .= " AND ".implode(" ".$filtermode." ", $sqlwhere);
|
||||||
}
|
}
|
||||||
// Affichage par compte comptable
|
// Filter by ledger account or subledger account
|
||||||
if (!empty($option)) {
|
if (!empty($option)) {
|
||||||
$sql .= " AND t.subledger_account IS NOT NULL";
|
$sql .= " AND t.subledger_account IS NOT NULL";
|
||||||
$sql .= " AND t.subledger_account <> ''";
|
$sql .= " AND t.subledger_account <> ''";
|
||||||
@ -919,54 +925,63 @@ class BookKeeping extends CommonObject
|
|||||||
$sortorder = 'ASC'.($sortorder ? ','.$sortorder : '');
|
$sortorder = 'ASC'.($sortorder ? ','.$sortorder : '');
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql .= $this->db->order($sortfield, $sortorder);
|
if (!$countonly) {
|
||||||
if (!empty($limit)) {
|
$sql .= $this->db->order($sortfield, $sortorder);
|
||||||
$sql .= $this->db->plimit($limit + 1, $offset);
|
if (!empty($limit)) {
|
||||||
|
$sql .= $this->db->plimit($limit + 1, $offset);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
$num = $this->db->num_rows($resql);
|
if ($countonly) {
|
||||||
|
$obj = $this->db->fetch_object($resql);
|
||||||
|
if ($obj) {
|
||||||
|
$num = $obj->nb;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$num = $this->db->num_rows($resql);
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while (($obj = $this->db->fetch_object($resql)) && (empty($limit) || $i < min($limit, $num))) {
|
while (($obj = $this->db->fetch_object($resql)) && (empty($limit) || $i < min($limit, $num))) {
|
||||||
$line = new BookKeepingLine();
|
$line = new BookKeepingLine();
|
||||||
|
|
||||||
$line->id = $obj->rowid;
|
$line->id = $obj->rowid;
|
||||||
|
|
||||||
$line->doc_date = $this->db->jdate($obj->doc_date);
|
$line->doc_date = $this->db->jdate($obj->doc_date);
|
||||||
$line->doc_type = $obj->doc_type;
|
$line->doc_type = $obj->doc_type;
|
||||||
$line->doc_ref = $obj->doc_ref;
|
$line->doc_ref = $obj->doc_ref;
|
||||||
$line->fk_doc = $obj->fk_doc;
|
$line->fk_doc = $obj->fk_doc;
|
||||||
$line->fk_docdet = $obj->fk_docdet;
|
$line->fk_docdet = $obj->fk_docdet;
|
||||||
$line->thirdparty_code = $obj->thirdparty_code;
|
$line->thirdparty_code = $obj->thirdparty_code;
|
||||||
$line->subledger_account = $obj->subledger_account;
|
$line->subledger_account = $obj->subledger_account;
|
||||||
$line->subledger_label = $obj->subledger_label;
|
$line->subledger_label = $obj->subledger_label;
|
||||||
$line->numero_compte = $obj->numero_compte;
|
$line->numero_compte = $obj->numero_compte;
|
||||||
$line->label_compte = $obj->label_compte;
|
$line->label_compte = $obj->label_compte;
|
||||||
$line->label_operation = $obj->label_operation;
|
$line->label_operation = $obj->label_operation;
|
||||||
$line->debit = $obj->debit;
|
$line->debit = $obj->debit;
|
||||||
$line->credit = $obj->credit;
|
$line->credit = $obj->credit;
|
||||||
$line->montant = $obj->amount; // deprecated
|
$line->montant = $obj->amount; // deprecated
|
||||||
$line->amount = $obj->amount;
|
$line->amount = $obj->amount;
|
||||||
$line->sens = $obj->sens;
|
$line->sens = $obj->sens;
|
||||||
$line->multicurrency_amount = $obj->multicurrency_amount;
|
$line->multicurrency_amount = $obj->multicurrency_amount;
|
||||||
$line->multicurrency_code = $obj->multicurrency_code;
|
$line->multicurrency_code = $obj->multicurrency_code;
|
||||||
$line->lettering_code = $obj->lettering_code;
|
$line->lettering_code = $obj->lettering_code;
|
||||||
$line->date_lettering = $obj->date_lettering;
|
$line->date_lettering = $obj->date_lettering;
|
||||||
$line->fk_user_author = $obj->fk_user_author;
|
$line->fk_user_author = $obj->fk_user_author;
|
||||||
$line->import_key = $obj->import_key;
|
$line->import_key = $obj->import_key;
|
||||||
$line->code_journal = $obj->code_journal;
|
$line->code_journal = $obj->code_journal;
|
||||||
$line->journal_label = $obj->journal_label;
|
$line->journal_label = $obj->journal_label;
|
||||||
$line->piece_num = $obj->piece_num;
|
$line->piece_num = $obj->piece_num;
|
||||||
$line->date_creation = $this->db->jdate($obj->date_creation);
|
$line->date_creation = $this->db->jdate($obj->date_creation);
|
||||||
$line->date_export = $this->db->jdate($obj->date_export);
|
$line->date_export = $this->db->jdate($obj->date_export);
|
||||||
$line->date_validation = $this->db->jdate($obj->date_validation);
|
$line->date_validation = $this->db->jdate($obj->date_validation);
|
||||||
$line->import_key = $obj->import_key;
|
$line->import_key = $obj->import_key;
|
||||||
|
|
||||||
$this->lines[] = $line;
|
$this->lines[] = $line;
|
||||||
|
|
||||||
$i++;
|
$i++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$this->db->free($resql);
|
$this->db->free($resql);
|
||||||
|
|
||||||
|
|||||||
@ -126,21 +126,6 @@ if ($action == 'validatehistory') {
|
|||||||
$db->begin();
|
$db->begin();
|
||||||
|
|
||||||
// Now make the binding. Bind automatically only for product with a dedicated account that exists into chart of account, others need a manual bind
|
// Now make the binding. Bind automatically only for product with a dedicated account that exists into chart of account, others need a manual bind
|
||||||
/*if ($db->type == 'pgsql') {
|
|
||||||
$sql1 = "UPDATE " . MAIN_DB_PREFIX . "facturedet";
|
|
||||||
$sql1 .= " SET fk_code_ventilation = accnt.rowid";
|
|
||||||
$sql1 .= " FROM " . MAIN_DB_PREFIX . "product as p, " . MAIN_DB_PREFIX . "accounting_account as accnt , " . MAIN_DB_PREFIX . "accounting_system as syst";
|
|
||||||
$sql1 .= " WHERE " . MAIN_DB_PREFIX . "facturedet.fk_product = p.rowid AND accnt.fk_pcg_version = syst.pcg_version AND syst.rowid=" . ((int) $conf->global->CHARTOFACCOUNTS).' AND accnt.entity = '.((int) $conf->entity);
|
|
||||||
$sql1 .= " AND accnt.active = 1 AND p.accountancy_code_sell=accnt.account_number";
|
|
||||||
$sql1 .= " AND " . MAIN_DB_PREFIX . "facturedet.fk_code_ventilation = 0";
|
|
||||||
} else {
|
|
||||||
$sql1 = "UPDATE " . MAIN_DB_PREFIX . "facturedet as fd, " . MAIN_DB_PREFIX . "product as p, " . MAIN_DB_PREFIX . "accounting_account as accnt , " . MAIN_DB_PREFIX . "accounting_system as syst";
|
|
||||||
$sql1 .= " SET fk_code_ventilation = accnt.rowid";
|
|
||||||
$sql1 .= " WHERE fd.fk_product = p.rowid AND accnt.fk_pcg_version = syst.pcg_version AND syst.rowid=" . ((int) $conf->global->CHARTOFACCOUNTS).' AND accnt.entity = '.((int) $conf->entity);
|
|
||||||
$sql1 .= " AND accnt.active = 1 AND p.accountancy_code_sell=accnt.account_number";
|
|
||||||
$sql1 .= " AND fd.fk_code_ventilation = 0";
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// Customer Invoice lines (must be same request than into page list.php for manual binding)
|
// Customer Invoice lines (must be same request than into page list.php for manual binding)
|
||||||
$sql = "SELECT f.rowid as facid, f.ref as ref, f.datef, f.type as ftype, f.fk_facture_source,";
|
$sql = "SELECT f.rowid as facid, f.ref as ref, f.datef, f.type as ftype, f.fk_facture_source,";
|
||||||
$sql .= " l.rowid, l.fk_product, l.description, l.total_ht, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line, l.vat_src_code,";
|
$sql .= " l.rowid, l.fk_product, l.description, l.total_ht, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line, l.vat_src_code,";
|
||||||
@ -300,7 +285,10 @@ if ($action == 'validatehistory') {
|
|||||||
$db->rollback();
|
$db->rollback();
|
||||||
} else {
|
} else {
|
||||||
$db->commit();
|
$db->commit();
|
||||||
setEventMessages($langs->trans('AutomaticBindingDone', $nbbinddone, $notpossible), null, 'mesgs');
|
setEventMessages($langs->trans('AutomaticBindingDone', $nbbinddone, $notpossible), null, ($notpossible ? 'warnings' : 'mesgs'));
|
||||||
|
if ($notpossible) {
|
||||||
|
setEventMessages($langs->trans('DoManualBindingForFailedRecord', $notpossible), null, 'warnings');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -324,7 +312,7 @@ print '</span><br>';
|
|||||||
|
|
||||||
$y = $year_current;
|
$y = $year_current;
|
||||||
|
|
||||||
$buttonbind = '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?action=validatehistory&token='.newToken().'">'.$langs->trans("ValidateHistory").'</a>';
|
$buttonbind = '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?action=validatehistory&token='.newToken().'">'.img_picto($langs->trans("ValidateHistory"), 'link', 'class="pictofixedwidth fa-color-unset"').$langs->trans("ValidateHistory").'</a>';
|
||||||
|
|
||||||
print_barre_liste(img_picto('', 'unlink', 'class="paddingright fa-color-unset"').$langs->trans("OverviewOfAmountOfLinesNotBound"), '', '', '', '', '', '', -1, '', '', 0, $buttonbind, '', 0, 1, 1);
|
print_barre_liste(img_picto('', 'unlink', 'class="paddingright fa-color-unset"').$langs->trans("OverviewOfAmountOfLinesNotBound"), '', '', '', '', '', '', -1, '', '', 0, $buttonbind, '', 0, 1, 1);
|
||||||
//print load_fiche_titre($langs->trans("OverviewOfAmountOfLinesNotBound"), $buttonbind, '');
|
//print load_fiche_titre($langs->trans("OverviewOfAmountOfLinesNotBound"), $buttonbind, '');
|
||||||
@ -405,7 +393,17 @@ if ($resql) {
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
if ($row[0] == 'tobind') {
|
if ($row[0] == 'tobind') {
|
||||||
print $langs->trans("UseMenuToSetBindindManualy", DOL_URL_ROOT.'/accountancy/customer/list.php?search_year='.((int) $y), $langs->transnoentitiesnoconv("ToBind"));
|
$startmonth = ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1);
|
||||||
|
if ($startmonth > 12) {
|
||||||
|
$startmonth -= 12;
|
||||||
|
}
|
||||||
|
$startyear = ($startmonth < ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1)) ? $y + 1 : $y;
|
||||||
|
$endmonth = ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1) + 11;
|
||||||
|
if ($endmonth > 12) {
|
||||||
|
$endmonth -= 12;
|
||||||
|
}
|
||||||
|
$endyear = ($endmonth < ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1)) ? $y + 1 : $y;
|
||||||
|
print $langs->trans("UseMenuToSetBindindManualy", DOL_URL_ROOT.'/accountancy/customer/list.php?search_date_startday=1&search_date_startmonth='.((int) $startmonth).'&search_date_startyear='.((int) $startyear).'&search_date_endday=&search_date_endmonth='.((int) $endmonth).'&search_date_endyear='.((int) $endyear), $langs->transnoentitiesnoconv("ToBind"));
|
||||||
} else {
|
} else {
|
||||||
print $row[1];
|
print $row[1];
|
||||||
}
|
}
|
||||||
@ -420,6 +418,12 @@ if ($resql) {
|
|||||||
|
|
||||||
print '<td class="right nowraponall amount">';
|
print '<td class="right nowraponall amount">';
|
||||||
print price($row[$i]);
|
print price($row[$i]);
|
||||||
|
// Add link to make binding
|
||||||
|
if (!empty(price2num($row[$i]))) {
|
||||||
|
print '<a href="'.$_SERVER['PHP_SELF'].'?action=validatehistory&year='.$y.'&validatemonth='.((int) $cursormonth).'&validateyear='.((int) $cursoryear).'&token='.newToken().'">';
|
||||||
|
print img_picto($langs->trans("ValidateHistory").' ('.$langs->trans('Month'.str_pad($cursormonth, 2, '0', STR_PAD_LEFT)).' '.$cursoryear.')', 'link', 'class="marginleft2"');
|
||||||
|
print '</a>';
|
||||||
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
print '<td class="right nowraponall amount"><b>'.price($row[14]).'</b></td>';
|
print '<td class="right nowraponall amount"><b>'.price($row[14]).'</b></td>';
|
||||||
@ -558,7 +562,7 @@ print "</table>\n";
|
|||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
|
|
||||||
if ($conf->global->MAIN_FEATURES_LEVEL > 0) { // This part of code looks strange. Why showing a report that should rely on result of this step ?
|
if (getDolGlobalString('SHOW_TOTAL_OF_PREVIOUS_LISTS_IN_LIN_PAGE')) { // This part of code looks strange. Why showing a report that should rely on result of this step ?
|
||||||
print '<br>';
|
print '<br>';
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
|
|||||||
@ -162,7 +162,10 @@ if ($action == 'validatehistory') {
|
|||||||
$db->rollback();
|
$db->rollback();
|
||||||
} else {
|
} else {
|
||||||
$db->commit();
|
$db->commit();
|
||||||
setEventMessages($langs->trans('AutomaticBindingDone', $nbbinddone, $notpossible), null, 'mesgs');
|
setEventMessages($langs->trans('AutomaticBindingDone', $nbbinddone, $notpossible), null, ($notpossible ? 'warnings' : 'mesgs'));
|
||||||
|
if ($notpossible) {
|
||||||
|
setEventMessages($langs->trans('DoManualBindingForFailedRecord', $notpossible), null, 'warnings');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,7 +188,7 @@ print '</span><br>';
|
|||||||
|
|
||||||
$y = $year_current;
|
$y = $year_current;
|
||||||
|
|
||||||
$buttonbind = '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?action=validatehistory&token='.newToken().'&year='.$year_current.'">'.$langs->trans("ValidateHistory").'</a>';
|
$buttonbind = '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?action=validatehistory&token='.newToken().'&year='.$year_current.'">'.img_picto('', 'link', 'class="paddingright fa-color-unset"').$langs->trans("ValidateHistory").'</a>';
|
||||||
|
|
||||||
|
|
||||||
print_barre_liste(img_picto('', 'unlink', 'class="paddingright fa-color-unset"').$langs->trans("OverviewOfAmountOfLinesNotBound"), '', '', '', '', '', '', -1, '', '', 0, $buttonbind, '', 0, 1, 1);
|
print_barre_liste(img_picto('', 'unlink', 'class="paddingright fa-color-unset"').$langs->trans("OverviewOfAmountOfLinesNotBound"), '', '', '', '', '', '', -1, '', '', 0, $buttonbind, '', 0, 1, 1);
|
||||||
@ -263,20 +266,49 @@ if ($resql) {
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
if ($row[0] == 'tobind') {
|
if ($row[0] == 'tobind') {
|
||||||
print $langs->trans("UseMenuToSetBindindManualy", DOL_URL_ROOT.'/accountancy/expensereport/list.php?search_year='.((int) $y), $langs->transnoentitiesnoconv("ToBind"));
|
$startmonth = ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1);
|
||||||
|
if ($startmonth > 12) {
|
||||||
|
$startmonth -= 12;
|
||||||
|
}
|
||||||
|
$startyear = ($startmonth < ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1)) ? $y + 1 : $y;
|
||||||
|
$endmonth = ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1) + 11;
|
||||||
|
if ($endmonth > 12) {
|
||||||
|
$endmonth -= 12;
|
||||||
|
}
|
||||||
|
$endyear = ($endmonth < ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1)) ? $y + 1 : $y;
|
||||||
|
print $langs->trans("UseMenuToSetBindindManualy", DOL_URL_ROOT.'/accountancy/expensereport/list.php?search_date_startday=1&search_date_startmonth='.((int) $startmonth).'&search_date_startyear='.((int) $startyear).'&search_date_endday=&search_date_endmonth='.((int) $endmonth).'&search_date_endyear='.((int) $endyear), $langs->transnoentitiesnoconv("ToBind"));
|
||||||
} else {
|
} else {
|
||||||
print $row[1];
|
print $row[1];
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
for ($i = 2; $i <= 13; $i++) {
|
for ($i = 2; $i <= 13; $i++) {
|
||||||
|
$cursormonth = (($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1) + $i - 2);
|
||||||
|
if ($cursormonth > 12) {
|
||||||
|
$cursormonth -= 12;
|
||||||
|
}
|
||||||
|
$cursoryear = ($cursormonth < ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1)) ? $y + 1 : $y;
|
||||||
|
$tmp = dol_getdate(dol_get_last_day($cursoryear, $cursormonth, 'gmt'), false, 'gmt');
|
||||||
|
|
||||||
print '<td class="right nowraponall amount">';
|
print '<td class="right nowraponall amount">';
|
||||||
print price($row[$i]);
|
print price($row[$i]);
|
||||||
|
// Add link to make binding
|
||||||
|
if (!empty(price2num($row[$i]))) {
|
||||||
|
print '<a href="'.$_SERVER['PHP_SELF'].'?action=validatehistory&year='.$y.'&validatemonth='.((int) $cursormonth).'&validateyear='.((int) $cursoryear).'&token='.newToken().'">';
|
||||||
|
print img_picto($langs->trans("ValidateHistory").' ('.$langs->trans('Month'.str_pad($cursormonth, 2, '0', STR_PAD_LEFT)).' '.$cursoryear.')', 'link', 'class="marginleft2"');
|
||||||
|
print '</a>';
|
||||||
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
print '<td class="right nowraponall amount"><b>'.price($row[14]).'</b></td>';
|
print '<td class="right nowraponall amount"><b>'.price($row[14]).'</b></td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
$db->free($resql);
|
$db->free($resql);
|
||||||
|
|
||||||
|
if ($num == 0) {
|
||||||
|
print '<tr class="oddeven"><td colspan="16">';
|
||||||
|
print '<span class="opacitymedium">'.$langs->trans("NoRecordFound").'</span>';
|
||||||
|
print '</td></tr>';
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
print $db->lasterror(); // Show last sql error
|
print $db->lasterror(); // Show last sql error
|
||||||
}
|
}
|
||||||
@ -359,6 +391,12 @@ if ($resql) {
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
$db->free($resql);
|
$db->free($resql);
|
||||||
|
|
||||||
|
if ($num == 0) {
|
||||||
|
print '<tr class="oddeven"><td colspan="16">';
|
||||||
|
print '<span class="opacitymedium">'.$langs->trans("NoRecordFound").'</span>';
|
||||||
|
print '</td></tr>';
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
print $db->lasterror(); // Show last sql error
|
print $db->lasterror(); // Show last sql error
|
||||||
}
|
}
|
||||||
@ -367,7 +405,7 @@ print '</div>';
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
if ($conf->global->MAIN_FEATURES_LEVEL > 0) { // This part of code looks strange. Why showing a report where results depends on next step (so not yet available) ?
|
if (getDolGlobalString('SHOW_TOTAL_OF_PREVIOUS_LISTS_IN_LIN_PAGE')) { // This part of code looks strange. Why showing a report that should rely on result of this step ?
|
||||||
print '<br>';
|
print '<br>';
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
|
|||||||
@ -793,7 +793,7 @@ if (!$error && $action == 'writebookkeeping') {
|
|||||||
setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
|
setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ($lettering && getDolGlobalInt('ACCOUNTING_ENABLE_LETTERING')) {
|
if ($lettering && getDolGlobalInt('ACCOUNTING_ENABLE_LETTERING') && getDolGlobalInt('ACCOUNTING_ENABLE_AUTOLETTERING')) {
|
||||||
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/lettering.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/lettering.class.php';
|
||||||
$lettering_static = new Lettering($db);
|
$lettering_static = new Lettering($db);
|
||||||
$nb_lettering = $lettering_static->bookkeepingLetteringAll(array($bookkeeping->id));
|
$nb_lettering = $lettering_static->bookkeepingLetteringAll(array($bookkeeping->id));
|
||||||
|
|||||||
@ -376,7 +376,7 @@ if ($action == 'writebookkeeping') {
|
|||||||
setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
|
setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (getDolGlobalInt('ACCOUNTING_ENABLE_LETTERING')) {
|
if (getDolGlobalInt('ACCOUNTING_ENABLE_LETTERING') && getDolGlobalInt('ACCOUNTING_ENABLE_AUTOLETTERING')) {
|
||||||
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/lettering.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/lettering.class.php';
|
||||||
$lettering_static = new Lettering($db);
|
$lettering_static = new Lettering($db);
|
||||||
$nb_lettering = $lettering_static->bookkeepingLettering(array($bookkeeping->id));
|
$nb_lettering = $lettering_static->bookkeepingLettering(array($bookkeeping->id));
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2012 Regis Houssin <regis.houssin@inodbox.com>
|
* Copyright (C) 2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||||
* Copyright (C) 2013 Christophe Battarel <christophe.battarel@altairis.fr>
|
* Copyright (C) 2013 Christophe Battarel <christophe.battarel@altairis.fr>
|
||||||
* Copyright (C) 2013-2021 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
* Copyright (C) 2013-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
|
* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2014 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
* Copyright (C) 2014 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
||||||
@ -106,7 +106,7 @@ if (!GETPOSTISSET('date_startmonth') && (empty($date_start) || empty($date_end))
|
|||||||
$date_end = dol_get_last_day($pastmonthyear, $pastmonth, false);
|
$date_end = dol_get_last_day($pastmonthyear, $pastmonth, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "SELECT f.rowid, f.ref, f.type, f.datef as df, f.ref_client, f.date_lim_reglement as dlr, f.close_code,";
|
$sql = "SELECT f.rowid, f.ref, f.type, f.datef as df, f.ref_client, f.date_lim_reglement as dlr, f.close_code, f.retained_warranty,";
|
||||||
$sql .= " fd.rowid as fdid, fd.description, fd.product_type, fd.total_ht, fd.total_tva, fd.total_localtax1, fd.total_localtax2, fd.tva_tx, fd.total_ttc, fd.situation_percent, fd.vat_src_code,";
|
$sql .= " fd.rowid as fdid, fd.description, fd.product_type, fd.total_ht, fd.total_tva, fd.total_localtax1, fd.total_localtax2, fd.tva_tx, fd.total_ttc, fd.situation_percent, fd.vat_src_code,";
|
||||||
$sql .= " s.rowid as socid, s.nom as name, s.code_client, s.code_fournisseur,";
|
$sql .= " s.rowid as socid, s.nom as name, s.code_client, s.code_fournisseur,";
|
||||||
if (!empty($conf->global->MAIN_COMPANY_PERENTITY_SHARED)) {
|
if (!empty($conf->global->MAIN_COMPANY_PERENTITY_SHARED)) {
|
||||||
@ -168,6 +168,7 @@ if ($result) {
|
|||||||
$tabht = array();
|
$tabht = array();
|
||||||
$tabtva = array();
|
$tabtva = array();
|
||||||
$def_tva = array();
|
$def_tva = array();
|
||||||
|
$tabwarranty = array();
|
||||||
$tabttc = array();
|
$tabttc = array();
|
||||||
$tablocaltax1 = array();
|
$tablocaltax1 = array();
|
||||||
$tablocaltax2 = array();
|
$tablocaltax2 = array();
|
||||||
@ -248,7 +249,13 @@ if ($result) {
|
|||||||
$tablocaltax2[$obj->rowid][$compta_localtax2] = 0;
|
$tablocaltax2[$obj->rowid][$compta_localtax2] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$tabttc[$obj->rowid][$compta_soc] += $obj->total_ttc * $situation_ratio;
|
$total_ttc = $obj->total_ttc * $situation_ratio;
|
||||||
|
if (!empty($conf->global->INVOICE_USE_RETAINED_WARRANTY) && $obj->retained_warranty > 0) {
|
||||||
|
$retained_warranty = (double) price2num($total_ttc * $obj->retained_warranty / 100, 'MT');
|
||||||
|
$tabwarranty[$obj->rowid][$compta_soc] += $retained_warranty;
|
||||||
|
$total_ttc -= $retained_warranty;
|
||||||
|
}
|
||||||
|
$tabttc[$obj->rowid][$compta_soc] += $total_ttc;
|
||||||
$tabht[$obj->rowid][$compta_prod] += $obj->total_ht * $situation_ratio;
|
$tabht[$obj->rowid][$compta_prod] += $obj->total_ht * $situation_ratio;
|
||||||
if (empty($line->tva_npr)) {
|
if (empty($line->tva_npr)) {
|
||||||
$tabtva[$obj->rowid][$compta_tva] += $obj->total_tva * $situation_ratio; // We ignore line if VAT is a NPR
|
$tabtva[$obj->rowid][$compta_tva] += $obj->total_tva * $situation_ratio; // We ignore line if VAT is a NPR
|
||||||
@ -300,6 +307,10 @@ if ($action == 'writebookkeeping') {
|
|||||||
|
|
||||||
$accountingaccountcustomer->fetch(null, $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER, true);
|
$accountingaccountcustomer->fetch(null, $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER, true);
|
||||||
|
|
||||||
|
$accountingaccountcustomerwarranty = new AccountingAccount($db);
|
||||||
|
|
||||||
|
$accountingaccountcustomerwarranty->fetch(null, $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY, true);
|
||||||
|
|
||||||
foreach ($tabfac as $key => $val) { // Loop on each invoice
|
foreach ($tabfac as $key => $val) { // Loop on each invoice
|
||||||
$errorforline = 0;
|
$errorforline = 0;
|
||||||
|
|
||||||
@ -344,6 +355,55 @@ if ($action == 'writebookkeeping') {
|
|||||||
setEventMessages($langs->trans('ErrorInvoiceContainsLinesNotYetBounded', $val['ref']), null, 'errors');
|
setEventMessages($langs->trans('ErrorInvoiceContainsLinesNotYetBounded', $val['ref']), null, 'errors');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Warranty
|
||||||
|
if (!$errorforline) {
|
||||||
|
foreach ($tabwarranty[$key] as $k => $mt) {
|
||||||
|
$bookkeeping = new BookKeeping($db);
|
||||||
|
$bookkeeping->doc_date = $val["date"];
|
||||||
|
$bookkeeping->date_lim_reglement = $val["datereg"];
|
||||||
|
$bookkeeping->doc_ref = $val["ref"];
|
||||||
|
$bookkeeping->date_creation = $now;
|
||||||
|
$bookkeeping->doc_type = 'customer_invoice';
|
||||||
|
$bookkeeping->fk_doc = $key;
|
||||||
|
$bookkeeping->fk_docdet = 0; // Useless, can be several lines that are source of this record to add
|
||||||
|
$bookkeeping->thirdparty_code = $companystatic->code_client;
|
||||||
|
|
||||||
|
$bookkeeping->subledger_account = $tabcompany[$key]['code_compta'];
|
||||||
|
$bookkeeping->subledger_label = $tabcompany[$key]['name'];
|
||||||
|
|
||||||
|
$bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY;
|
||||||
|
$bookkeeping->label_compte = $accountingaccountcustomerwarranty->label;
|
||||||
|
|
||||||
|
$bookkeeping->label_operation = dol_trunc($companystatic->name, 16).' - '.$invoicestatic->ref.' - '.$langs->trans("Retainedwarranty");
|
||||||
|
$bookkeeping->montant = $mt;
|
||||||
|
$bookkeeping->sens = ($mt >= 0) ? 'D' : 'C';
|
||||||
|
$bookkeeping->debit = ($mt >= 0) ? $mt : 0;
|
||||||
|
$bookkeeping->credit = ($mt < 0) ? -$mt : 0;
|
||||||
|
$bookkeeping->code_journal = $journal;
|
||||||
|
$bookkeeping->journal_label = $langs->transnoentities($journal_label);
|
||||||
|
$bookkeeping->fk_user_author = $user->id;
|
||||||
|
$bookkeeping->entity = $conf->entity;
|
||||||
|
|
||||||
|
$totaldebit += $bookkeeping->debit;
|
||||||
|
$totalcredit += $bookkeeping->credit;
|
||||||
|
|
||||||
|
$result = $bookkeeping->create($user);
|
||||||
|
if ($result < 0) {
|
||||||
|
if ($bookkeeping->error == 'BookkeepingRecordAlreadyExists') { // Already exists
|
||||||
|
$error++;
|
||||||
|
$errorforline++;
|
||||||
|
$errorforinvoice[$key] = 'alreadyjournalized';
|
||||||
|
//setEventMessages('Transaction for ('.$bookkeeping->doc_type.', '.$bookkeeping->fk_doc.', '.$bookkeeping->fk_docdet.') were already recorded', null, 'warnings');
|
||||||
|
} else {
|
||||||
|
$error++;
|
||||||
|
$errorforline++;
|
||||||
|
$errorforinvoice[$key] = 'other';
|
||||||
|
setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Thirdparty
|
// Thirdparty
|
||||||
if (!$errorforline) {
|
if (!$errorforline) {
|
||||||
foreach ($tabttc[$key] as $k => $mt) {
|
foreach ($tabttc[$key] as $k => $mt) {
|
||||||
@ -390,7 +450,7 @@ if ($action == 'writebookkeeping') {
|
|||||||
setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
|
setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (getDolGlobalInt('ACCOUNTING_ENABLE_LETTERING')) {
|
if (getDolGlobalInt('ACCOUNTING_ENABLE_LETTERING') && getDolGlobalInt('ACCOUNTING_ENABLE_AUTOLETTERING')) {
|
||||||
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/lettering.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/lettering.class.php';
|
||||||
$lettering_static = new Lettering($db);
|
$lettering_static = new Lettering($db);
|
||||||
$nb_lettering = $lettering_static->bookkeepingLettering(array($bookkeeping->id));
|
$nb_lettering = $lettering_static->bookkeepingLettering(array($bookkeeping->id));
|
||||||
@ -624,6 +684,25 @@ if ($action == 'exportcsv') { // ISO and not UTF8 !
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Warranty
|
||||||
|
foreach ($tabwarranty[$key] as $k => $mt) {
|
||||||
|
//if ($mt) {
|
||||||
|
print '"'.$key.'"'.$sep;
|
||||||
|
print '"'.$date.'"'.$sep;
|
||||||
|
print '"'.$val["ref"].'"'.$sep;
|
||||||
|
print '"'.utf8_decode(dol_trunc($companystatic->name, 32)).'"'.$sep;
|
||||||
|
print '"'.length_accounta(html_entity_decode($k)).'"'.$sep;
|
||||||
|
print '"'.length_accountg($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY).'"'.$sep;
|
||||||
|
print '"'.length_accounta(html_entity_decode($k)).'"'.$sep;
|
||||||
|
print '"'.$langs->trans("Thirdparty").'"'.$sep;
|
||||||
|
print '"'.utf8_decode(dol_trunc($companystatic->name, 16)).' - '.$invoicestatic->ref.' - '.$langs->trans("Retainedwarranty").'"'.$sep;
|
||||||
|
print '"'.($mt >= 0 ? price($mt) : '').'"'.$sep;
|
||||||
|
print '"'.($mt < 0 ? price(-$mt) : '').'"'.$sep;
|
||||||
|
print '"'.$journal.'"';
|
||||||
|
print "\n";
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
// Third party
|
// Third party
|
||||||
foreach ($tabttc[$key] as $k => $mt) {
|
foreach ($tabttc[$key] as $k => $mt) {
|
||||||
//if ($mt) {
|
//if ($mt) {
|
||||||
@ -849,6 +928,36 @@ if (empty($action) || $action == 'view') {
|
|||||||
print "</tr>";
|
print "</tr>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Warranty
|
||||||
|
foreach ($tabwarranty[$key] as $k => $mt) {
|
||||||
|
print '<tr class="oddeven">';
|
||||||
|
print "<!-- Thirdparty warranty -->";
|
||||||
|
print "<td>".$date."</td>";
|
||||||
|
print "<td>".$invoicestatic->getNomUrl(1)."</td>";
|
||||||
|
// Account
|
||||||
|
print "<td>";
|
||||||
|
$accountoshow = length_accountg($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY);
|
||||||
|
if (($accountoshow == "") || $accountoshow == 'NotDefined') {
|
||||||
|
print '<span class="error">'.$langs->trans("MainAccountForCustomersNotDefined").'</span>';
|
||||||
|
} else {
|
||||||
|
print $accountoshow;
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
// Subledger account
|
||||||
|
print "<td>";
|
||||||
|
$accountoshow = length_accounta($k);
|
||||||
|
if (($accountoshow == "") || $accountoshow == 'NotDefined') {
|
||||||
|
print '<span class="error">'.$langs->trans("ThirdpartyAccountNotDefined").'</span>';
|
||||||
|
} else {
|
||||||
|
print $accountoshow;
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
print "<td>".$companystatic->getNomUrl(0, 'customer', 16).' - '.$invoicestatic->ref.' - '.$langs->trans("Retainedwarranty")."</td>";
|
||||||
|
print '<td class="right nowraponall amount">'.($mt >= 0 ? price($mt) : '')."</td>";
|
||||||
|
print '<td class="right nowraponall amount">'.($mt < 0 ? price(-$mt) : '')."</td>";
|
||||||
|
print "</tr>";
|
||||||
|
}
|
||||||
|
|
||||||
// Third party
|
// Third party
|
||||||
foreach ($tabttc[$key] as $k => $mt) {
|
foreach ($tabttc[$key] as $k => $mt) {
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
|
|||||||
@ -124,21 +124,6 @@ if ($action == 'validatehistory') {
|
|||||||
$db->begin();
|
$db->begin();
|
||||||
|
|
||||||
// Now make the binding. Bind automatically only for product with a dedicated account that exists into chart of account, others need a manual bind
|
// Now make the binding. Bind automatically only for product with a dedicated account that exists into chart of account, others need a manual bind
|
||||||
/*if ($db->type == 'pgsql') {
|
|
||||||
$sql1 = "UPDATE " . MAIN_DB_PREFIX . "facture_fourn_det";
|
|
||||||
$sql1 .= " SET fk_code_ventilation = accnt.rowid";
|
|
||||||
$sql1 .= " FROM " . MAIN_DB_PREFIX . "product as p, " . MAIN_DB_PREFIX . "accounting_account as accnt , " . MAIN_DB_PREFIX . "accounting_system as syst";
|
|
||||||
$sql1 .= " WHERE " . MAIN_DB_PREFIX . "facture_fourn_det.fk_product = p.rowid AND accnt.fk_pcg_version = syst.pcg_version AND syst.rowid=" . ((int) $conf->global->CHARTOFACCOUNTS).' AND accnt.entity = '.$conf->entity;
|
|
||||||
$sql1 .= " AND accnt.active = 1 AND p.accountancy_code_buy=accnt.account_number";
|
|
||||||
$sql1 .= " AND " . MAIN_DB_PREFIX . "facture_fourn_det.fk_code_ventilation = 0";
|
|
||||||
} else {
|
|
||||||
$sql1 = "UPDATE " . MAIN_DB_PREFIX . "facture_fourn_det as fd, " . MAIN_DB_PREFIX . "product as p, " . MAIN_DB_PREFIX . "accounting_account as accnt , " . MAIN_DB_PREFIX . "accounting_system as syst";
|
|
||||||
$sql1 .= " SET fk_code_ventilation = accnt.rowid";
|
|
||||||
$sql1 .= " WHERE fd.fk_product = p.rowid AND accnt.fk_pcg_version = syst.pcg_version AND syst.rowid=" . ((int) $conf->global->CHARTOFACCOUNTS).' AND accnt.entity = '.$conf->entity;
|
|
||||||
$sql1 .= " AND accnt.active = 1 AND p.accountancy_code_buy=accnt.account_number";
|
|
||||||
$sql1 .= " AND fd.fk_code_ventilation = 0";
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// Supplier Invoice Lines (must be same request than into page list.php for manual binding)
|
// Supplier Invoice Lines (must be same request than into page list.php for manual binding)
|
||||||
$sql = "SELECT f.rowid as facid, f.ref, f.ref_supplier, f.libelle as invoice_label, f.datef, f.type as ftype, f.fk_facture_source,";
|
$sql = "SELECT f.rowid as facid, f.ref, f.ref_supplier, f.libelle as invoice_label, f.datef, f.type as ftype, f.fk_facture_source,";
|
||||||
$sql .= " l.rowid, l.fk_product, l.description, l.total_ht, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line, l.vat_src_code,";
|
$sql .= " l.rowid, l.fk_product, l.description, l.total_ht, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line, l.vat_src_code,";
|
||||||
@ -298,7 +283,10 @@ if ($action == 'validatehistory') {
|
|||||||
$db->rollback();
|
$db->rollback();
|
||||||
} else {
|
} else {
|
||||||
$db->commit();
|
$db->commit();
|
||||||
setEventMessages($langs->trans('AutomaticBindingDone', $nbbinddone, $notpossible), null, 'mesgs');
|
setEventMessages($langs->trans('AutomaticBindingDone', $nbbinddone, $notpossible), null, ($notpossible ? 'warnings' : 'mesgs'));
|
||||||
|
if ($notpossible) {
|
||||||
|
setEventMessages($langs->trans('DoManualBindingForFailedRecord', $notpossible), null, 'warnings');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -320,7 +308,7 @@ print '</span><br>';
|
|||||||
|
|
||||||
$y = $year_current;
|
$y = $year_current;
|
||||||
|
|
||||||
$buttonbind = '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?action=validatehistory&token='.newToken().'">'.$langs->trans("ValidateHistory").'</a>';
|
$buttonbind = '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?action=validatehistory&token='.newToken().'">'.img_picto('', 'link', 'class="paddingright fa-color-unset"').$langs->trans("ValidateHistory").'</a>';
|
||||||
|
|
||||||
|
|
||||||
print_barre_liste(img_picto('', 'unlink', 'class="paddingright fa-color-unset"').$langs->trans("OverviewOfAmountOfLinesNotBound"), '', '', '', '', '', '', -1, '', '', 0, $buttonbind, '', 0, 1, 1);
|
print_barre_liste(img_picto('', 'unlink', 'class="paddingright fa-color-unset"').$langs->trans("OverviewOfAmountOfLinesNotBound"), '', '', '', '', '', '', -1, '', '', 0, $buttonbind, '', 0, 1, 1);
|
||||||
@ -402,14 +390,37 @@ if ($resql) {
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
if ($row[0] == 'tobind') {
|
if ($row[0] == 'tobind') {
|
||||||
print $langs->trans("UseMenuToSetBindindManualy", DOL_URL_ROOT.'/accountancy/supplier/list.php?search_year='.((int) $y), $langs->transnoentitiesnoconv("ToBind"));
|
$startmonth = ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1);
|
||||||
|
if ($startmonth > 12) {
|
||||||
|
$startmonth -= 12;
|
||||||
|
}
|
||||||
|
$startyear = ($startmonth < ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1)) ? $y + 1 : $y;
|
||||||
|
$endmonth = ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1) + 11;
|
||||||
|
if ($endmonth > 12) {
|
||||||
|
$endmonth -= 12;
|
||||||
|
}
|
||||||
|
$endyear = ($endmonth < ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1)) ? $y + 1 : $y;
|
||||||
|
print $langs->trans("UseMenuToSetBindindManualy", DOL_URL_ROOT.'/accountancy/supplier/list.php?search_date_startday=1&search_date_startmonth='.((int) $startmonth).'&search_date_startyear='.((int) $startyear).'&search_date_endday=&search_date_endmonth='.((int) $endmonth).'&search_date_endyear='.((int) $endyear), $langs->transnoentitiesnoconv("ToBind"));
|
||||||
} else {
|
} else {
|
||||||
print $row[1];
|
print $row[1];
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
for ($i = 2; $i <= 13; $i++) {
|
for ($i = 2; $i <= 13; $i++) {
|
||||||
|
$cursormonth = (($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1) + $i - 2);
|
||||||
|
if ($cursormonth > 12) {
|
||||||
|
$cursormonth -= 12;
|
||||||
|
}
|
||||||
|
$cursoryear = ($cursormonth < ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1)) ? $y + 1 : $y;
|
||||||
|
$tmp = dol_getdate(dol_get_last_day($cursoryear, $cursormonth, 'gmt'), false, 'gmt');
|
||||||
|
|
||||||
print '<td class="right nowraponall amount">';
|
print '<td class="right nowraponall amount">';
|
||||||
print price($row[$i]);
|
print price($row[$i]);
|
||||||
|
// Add link to make binding
|
||||||
|
if (!empty(price2num($row[$i]))) {
|
||||||
|
print '<a href="'.$_SERVER['PHP_SELF'].'?action=validatehistory&year='.$y.'&validatemonth='.((int) $cursormonth).'&validateyear='.((int) $cursoryear).'&token='.newToken().'">';
|
||||||
|
print img_picto($langs->trans("ValidateHistory").' ('.$langs->trans('Month'.str_pad($cursormonth, 2, '0', STR_PAD_LEFT)).' '.$cursoryear.')', 'link', 'class="marginleft2"');
|
||||||
|
print '</a>';
|
||||||
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
print '<td class="right nowraponall amount"><b>'.price($row[14]).'</b></td>';
|
print '<td class="right nowraponall amount"><b>'.price($row[14]).'</b></td>';
|
||||||
@ -541,7 +552,7 @@ print "</table>\n";
|
|||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
|
|
||||||
if ($conf->global->MAIN_FEATURES_LEVEL > 0) { // This part of code looks strange. Why showing a report that should rely on result of this step ?
|
if (getDolGlobalString('SHOW_TOTAL_OF_PREVIOUS_LISTS_IN_LIN_PAGE')) { // This part of code looks strange. Why showing a report that should rely on result of this step ?
|
||||||
print '<br>';
|
print '<br>';
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2015-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
/* Copyright (C) 2015-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
|
* Copyright (C) 2022 Lionel Vessiller <lvessiller@open-dsi.fr>
|
||||||
* Copyright (C) 2016 Charlie Benke <charlie@patas-monkey.com>
|
* Copyright (C) 2016 Charlie Benke <charlie@patas-monkey.com>
|
||||||
|
* Copyright (C) 2022 Progiseize <a.bisotti@progiseize.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
|
||||||
@ -33,7 +35,9 @@ $siren = getDolGlobalString('MAIN_INFO_SIREN');
|
|||||||
$date_export = "_".dol_print_date(dol_now(), '%Y%m%d%H%M%S');
|
$date_export = "_".dol_print_date(dol_now(), '%Y%m%d%H%M%S');
|
||||||
$endaccountingperiod = dol_print_date(dol_now(), '%Y%m%d');
|
$endaccountingperiod = dol_print_date(dol_now(), '%Y%m%d');
|
||||||
|
|
||||||
header('Content-Type: text/csv');
|
if (empty($withAttachment)) {
|
||||||
|
header('Content-Type: text/csv');
|
||||||
|
}
|
||||||
|
|
||||||
include_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountancyexport.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountancyexport.class.php';
|
||||||
$accountancyexport = new AccountancyExport($db);
|
$accountancyexport = new AccountancyExport($db);
|
||||||
@ -66,4 +70,6 @@ if (($accountancyexport->getFormatCode($formatexportset) == 'fec' || $accountanc
|
|||||||
$completefilename = ($code ? $code."_" : "").($prefix ? $prefix."_" : "").$filename.($nodateexport ? "" : $date_export).".".$format;
|
$completefilename = ($code ? $code."_" : "").($prefix ? $prefix."_" : "").$filename.($nodateexport ? "" : $date_export).".".$format;
|
||||||
}
|
}
|
||||||
|
|
||||||
header('Content-Disposition: attachment;filename='.$completefilename);
|
if (empty($withAttachment)) {
|
||||||
|
header('Content-Disposition: attachment;filename=' . $completefilename);
|
||||||
|
}
|
||||||
|
|||||||
@ -178,7 +178,7 @@ if (!empty($conf->global->MEMBER_ENABLE_PUBLIC)) {
|
|||||||
//print $langs->trans('FollowingLinksArePublic').'<br>';
|
//print $langs->trans('FollowingLinksArePublic').'<br>';
|
||||||
print img_picto('', 'globe').' <span class="opacitymedium">'.$langs->trans('BlankSubscriptionForm').'</span><br>';
|
print img_picto('', 'globe').' <span class="opacitymedium">'.$langs->trans('BlankSubscriptionForm').'</span><br>';
|
||||||
if (isModEnabled('multicompany')) {
|
if (isModEnabled('multicompany')) {
|
||||||
$entity_qr = '?entity='.$conf->entity;
|
$entity_qr = '?entity='.((int) $conf->entity);
|
||||||
} else {
|
} else {
|
||||||
$entity_qr = '';
|
$entity_qr = '';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -116,30 +116,5 @@ class ActionsAdherentCardDefault extends ActionsAdherentCardCommon
|
|||||||
$this->tpl['action_delete'] = $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$this->object->id, $langs->trans("DeleteAdherent"), $langs->trans("ConfirmDeleteAdherent"), "confirm_delete", '', 0, 1);
|
$this->tpl['action_delete'] = $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$this->object->id, $langs->trans("DeleteAdherent"), $langs->trans("ConfirmDeleteAdherent"), "confirm_delete", '', 0, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'list') {
|
|
||||||
$this->LoadListDatas($limit, $offset, $sortfield, $sortorder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
|
||||||
/**
|
|
||||||
* Fetch datas list and save into ->list_datas
|
|
||||||
*
|
|
||||||
* @param int $limit Limit number of responses
|
|
||||||
* @param int $offset Offset for first response
|
|
||||||
* @param string $sortfield Sort field
|
|
||||||
* @param string $sortorder Sort order ('ASC' or 'DESC')
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function LoadListDatas($limit, $offset, $sortfield, $sortorder)
|
|
||||||
{
|
|
||||||
// phpcs:enable
|
|
||||||
global $conf, $langs;
|
|
||||||
|
|
||||||
//$this->getFieldList();
|
|
||||||
|
|
||||||
$this->list_datas = array();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -565,7 +565,7 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
if (!empty($object->url) && !isValidUrl($object->url)) {
|
if (!empty($object->url) && !isValidUrl($object->url)) {
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
setEventMessages('', $langs->trans("ErrorBadUrl", $object->url), 'errors');
|
setEventMessages($langs->trans("ErrorBadUrl", $object->url), null, 'errors');
|
||||||
}
|
}
|
||||||
$public = 0;
|
$public = 0;
|
||||||
if (isset($public)) {
|
if (isset($public)) {
|
||||||
@ -1046,7 +1046,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
|
|
||||||
// Website
|
// Website
|
||||||
print '<tr><td>'.$form->editfieldkey('Web', 'member_url', GETPOST('member_url', 'alpha'), $object, 0).'</td>';
|
print '<tr><td>'.$form->editfieldkey('Web', 'member_url', GETPOST('member_url', 'alpha'), $object, 0).'</td>';
|
||||||
print '<td>'.img_picto('', 'globe').' <input type="text" class="maxwidth500 widthcentpercentminusx" name="member_url" id="member_url" value="'.(GETPOSTISSET('member_url', 'alpha') ? GETPOST('member_url', 'alpha') : $object->url).'"></td></tr>';
|
print '<td>'.img_picto('', 'globe').' <input type="text" class="maxwidth500 widthcentpercentminusx" name="member_url" id="member_url" value="'.(GETPOSTISSET('member_url') ? GETPOST('member_url', 'alpha') : $object->url).'"></td></tr>';
|
||||||
|
|
||||||
// Address
|
// Address
|
||||||
print '<tr><td class="tdtop">'.$langs->trans("Address").'</td><td>';
|
print '<tr><td class="tdtop">'.$langs->trans("Address").'</td><td>';
|
||||||
|
|||||||
@ -2907,8 +2907,8 @@ class Adherent extends CommonObject
|
|||||||
* Adds it to non existing supplied categories.
|
* Adds it to non existing supplied categories.
|
||||||
* Existing categories are left untouch.
|
* Existing categories are left untouch.
|
||||||
*
|
*
|
||||||
* @param int[]|int $categories Category or categories IDs
|
* @param int[]|int $categories Category or categories IDs
|
||||||
* @return void
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
public function setCategories($categories)
|
public function setCategories($categories)
|
||||||
{
|
{
|
||||||
@ -3203,4 +3203,40 @@ class Adherent extends CommonObject
|
|||||||
|
|
||||||
return $nbko;
|
return $nbko;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return clicable link of object (with eventually picto)
|
||||||
|
*
|
||||||
|
* @param string $option Where point the link (0=> main card, 1,2 => shipment, 'nolink'=>No link)
|
||||||
|
* @return string HTML Code for Kanban thumb.
|
||||||
|
*/
|
||||||
|
public function getKanbanView($option = '')
|
||||||
|
{
|
||||||
|
|
||||||
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
|
|
||||||
|
if (property_exists($this, 'photo') || !empty($this->photo)) {
|
||||||
|
$return.= Form::showphoto('memberphoto', $this, 0, 60, 0, 'photokanban photoref photowithmargin photologintooltip', 'small', 0, 1);
|
||||||
|
} else {
|
||||||
|
$return .= img_picto('', 'user');
|
||||||
|
}
|
||||||
|
$return .= '</span>';
|
||||||
|
$return .= '<div class="info-box-content">';
|
||||||
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
||||||
|
if (property_exists($this, 'type')) {
|
||||||
|
$return .= '<br><span class="info-box-label opacitymedium">'.$this->type.'</span>';
|
||||||
|
}
|
||||||
|
if (method_exists($this, 'getmorphylib')) {
|
||||||
|
$return .= '<br><span class="info-box-label">'.$this->getmorphylib('', 2).'</span>';
|
||||||
|
}
|
||||||
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
||||||
|
}
|
||||||
|
$return .= '</div>';
|
||||||
|
$return .= '</div>';
|
||||||
|
$return .= '</div>';
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -472,7 +472,7 @@ class AdherentType extends CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function that retrieves the status of the member
|
* Function that retrieves the properties of a membership type
|
||||||
*
|
*
|
||||||
* @param int $rowid Id of member type to load
|
* @param int $rowid Id of member type to load
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
@ -927,4 +927,46 @@ class AdherentType extends CommonObject
|
|||||||
|
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return clicable link of object (with eventually picto)
|
||||||
|
*
|
||||||
|
* @param string $option Where point the link (0=> main card, 1,2 => shipment, 'nolink'=>No link)
|
||||||
|
* @return string HTML Code for Kanban thumb.
|
||||||
|
*/
|
||||||
|
public function getKanbanView($option = '')
|
||||||
|
{
|
||||||
|
global $langs,$user;
|
||||||
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
|
$return .= img_picto('', $this->picto);
|
||||||
|
$return .= '</span>';
|
||||||
|
$return .= '<div class="info-box-content">';
|
||||||
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
||||||
|
if ($user->rights->adherent->configurer) {
|
||||||
|
$return .= '<span class="right paddingleft"><a class="editfielda" href="'.$_SERVER["PHP_SELF"].'?action=edit&rowid='.$this->ref.'">'.img_edit().'</a></span>';
|
||||||
|
} else {
|
||||||
|
$return .= '<span class="right"> </span>';
|
||||||
|
}
|
||||||
|
if (property_exists($this, 'vote')) {
|
||||||
|
$return .= '<br><span class="info-box-label opacitymedium">'.$langs->trans("VoteAllowed").' : '.yn($this->vote).'</span>';
|
||||||
|
}
|
||||||
|
if (property_exists($this, 'amount')) {
|
||||||
|
if (is_null($this->amount) || $this->amount === '') {
|
||||||
|
$return .= '<br>';
|
||||||
|
} else {
|
||||||
|
$return .= '<br><span class="info-box-label opacitymedium">'.$langs->trans("Amount").'</span>';
|
||||||
|
$return .= '<span class="amount"> : '.price($this->amount).'</span>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
||||||
|
}
|
||||||
|
$return .= '</div>';
|
||||||
|
$return .= '</div>';
|
||||||
|
$return .= '</div>';
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -505,4 +505,36 @@ class Subscription extends CommonObject
|
|||||||
dol_print_error($this->db);
|
dol_print_error($this->db);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return clicable link of object (with eventually picto)
|
||||||
|
*
|
||||||
|
* @param string $option Where point the link (0=> main card, 1,2 => shipment, 'nolink'=>No link)
|
||||||
|
* @return string HTML Code for Kanban thumb.
|
||||||
|
*/
|
||||||
|
public function getKanbanView($option = '')
|
||||||
|
{
|
||||||
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
|
$return .= img_picto('', $this->picto);
|
||||||
|
$return .= '</span>';
|
||||||
|
|
||||||
|
$return .= '<div class="info-box-content">';
|
||||||
|
$return .= '<span class="info-box-ref">'.(property_exists($this, 'fk_adherent')? $this->fk_adherent: $this->ref ).'</span>';
|
||||||
|
if (property_exists($this, 'dateh') || property_exists($this, 'datef')) {
|
||||||
|
$return .= '<br><span class="info-box-status opacitymedium">'.dol_print_date($this->dateh, 'day').' - '.dol_print_date($this->datef, 'day').'</span>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (property_exists($this, 'fk_bank')) {
|
||||||
|
$return .= '<br><span class="info-box-label ">'.$this->fk_bank.'</span>';
|
||||||
|
}
|
||||||
|
if (property_exists($this, 'amount')) {
|
||||||
|
$return .= '<br><div class="info-box-label margintoponly amount">'.price($this->amount).'</div>';
|
||||||
|
}
|
||||||
|
$return .= '</div>';
|
||||||
|
$return .= '</div>';
|
||||||
|
$return .= '</div>';
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -80,7 +80,7 @@ if ($id > 0 || !empty($ref)) {
|
|||||||
// Define variables to know what current user can do on properties of user linked to edited member
|
// Define variables to know what current user can do on properties of user linked to edited member
|
||||||
if ($object->user_id) {
|
if ($object->user_id) {
|
||||||
// $User is the user who edits, $object->user_id is the id of the related user in the edited member
|
// $User is the user who edits, $object->user_id is the id of the related user in the edited member
|
||||||
$caneditfielduser = ((($user->id == $object->user_id) && $$user->hasRight('user', 'self', 'creer'))
|
$caneditfielduser = ((($user->id == $object->user_id) && $user->hasRight('user', 'self', 'creer'))
|
||||||
|| (($user->id != $object->user_id) && $user->hasRight('user', 'user', 'creer')));
|
|| (($user->id != $object->user_id) && $user->hasRight('user', 'user', 'creer')));
|
||||||
$caneditpassworduser = ((($user->id == $object->user_id) && $user->hasRight('user', 'self', 'password'))
|
$caneditpassworduser = ((($user->id == $object->user_id) && $user->hasRight('user', 'self', 'password'))
|
||||||
|| (($user->id != $object->user_id) && $user->hasRight('user', 'user', 'password')));
|
|| (($user->id != $object->user_id) && $user->hasRight('user', 'user', 'password')));
|
||||||
|
|||||||
@ -47,6 +47,7 @@ $show_files = GETPOST('show_files', 'int');
|
|||||||
$confirm = GETPOST('confirm', 'alpha');
|
$confirm = GETPOST('confirm', 'alpha');
|
||||||
$toselect = GETPOST('toselect', 'array');
|
$toselect = GETPOST('toselect', 'array');
|
||||||
$contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'memberslist'; // To manage different context of search
|
$contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'memberslist'; // To manage different context of search
|
||||||
|
$mode = GETPOST('mode', 'alpha');
|
||||||
|
|
||||||
|
|
||||||
// Search fields
|
// Search fields
|
||||||
@ -126,7 +127,6 @@ $fieldstosearchall = array(
|
|||||||
'd.login'=>'Login',
|
'd.login'=>'Login',
|
||||||
'd.lastname'=>'Lastname',
|
'd.lastname'=>'Lastname',
|
||||||
'd.firstname'=>'Firstname',
|
'd.firstname'=>'Firstname',
|
||||||
'd.login'=>'Login',
|
|
||||||
'd.societe'=>"Company",
|
'd.societe'=>"Company",
|
||||||
'd.email'=>'EMail',
|
'd.email'=>'EMail',
|
||||||
'd.address'=>'Address',
|
'd.address'=>'Address',
|
||||||
@ -535,6 +535,9 @@ if ($search_type > 0) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$param = '';
|
$param = '';
|
||||||
|
if (!empty($mode)) {
|
||||||
|
$param .= '&mode='.urlencode($mode);
|
||||||
|
}
|
||||||
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
|
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
|
||||||
$param .= '&contextpage='.urlencode($contextpage);
|
$param .= '&contextpage='.urlencode($contextpage);
|
||||||
}
|
}
|
||||||
@ -636,6 +639,8 @@ if (GETPOST('nomassaction', 'int') || in_array($massaction, array('presend', 'pr
|
|||||||
$massactionbutton = $form->selectMassAction('', $arrayofmassactions);
|
$massactionbutton = $form->selectMassAction('', $arrayofmassactions);
|
||||||
|
|
||||||
$newcardbutton = '';
|
$newcardbutton = '';
|
||||||
|
$newcardbutton .= dolGetButtonTitle($langs->trans('ViewList'), '', 'fa fa-bars imgforviewmode', $_SERVER["PHP_SELF"].'?mode=common'.preg_replace('/(&|\?)*mode=[^&]+/', '', $param), '', ((empty($mode) || $mode == 'common') ? 2 : 1), array('morecss'=>'reposition'));
|
||||||
|
$newcardbutton .= dolGetButtonTitle($langs->trans('ViewKanban'), '', 'fa fa-th-list imgforviewmode', $_SERVER["PHP_SELF"].'?mode=kanban'.preg_replace('/(&|\?)*mode=[^&]+/', '', $param), '', ($mode == 'kanban' ? 2 : 1), array('morecss'=>'reposition'));
|
||||||
if ($user->hasRight('adherent', 'creer')) {
|
if ($user->hasRight('adherent', 'creer')) {
|
||||||
$newcardbutton .= dolGetButtonTitle($langs->trans('NewMember'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/adherents/card.php?action=create');
|
$newcardbutton .= dolGetButtonTitle($langs->trans('NewMember'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/adherents/card.php?action=create');
|
||||||
}
|
}
|
||||||
@ -650,6 +655,8 @@ print '<input type="hidden" name="action" value="list">';
|
|||||||
print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
|
print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
|
||||||
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
||||||
print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
|
print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
|
||||||
|
print '<input type="hidden" name="mode" value="'.$mode.'">';
|
||||||
|
|
||||||
|
|
||||||
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, $object->picto, 0, $newcardbutton, '', $limit, 0, 0, 1);
|
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, $object->picto, 0, $newcardbutton, '', $limit, 0, 0, 1);
|
||||||
|
|
||||||
@ -836,14 +843,14 @@ if (!empty($arrayfields['d.tms']['checked'])) {
|
|||||||
}
|
}
|
||||||
// Status
|
// Status
|
||||||
if (!empty($arrayfields['d.statut']['checked'])) {
|
if (!empty($arrayfields['d.statut']['checked'])) {
|
||||||
print '<td class="liste_titre right maxwidthonsmartphone">';
|
print '<td class="liste_titre right parentonrightofpage">';
|
||||||
$liststatus = array(
|
$liststatus = array(
|
||||||
Adherent::STATUS_DRAFT => $langs->trans("Draft"),
|
Adherent::STATUS_DRAFT => $langs->trans("Draft"),
|
||||||
Adherent::STATUS_VALIDATED => $langs->trans("Validated"),
|
Adherent::STATUS_VALIDATED => $langs->trans("Validated"),
|
||||||
Adherent::STATUS_RESILIATED => $langs->trans("MemberStatusResiliatedShort"),
|
Adherent::STATUS_RESILIATED => $langs->trans("MemberStatusResiliatedShort"),
|
||||||
Adherent::STATUS_EXCLUDED =>$langs->trans("MemberStatusExcludedShort")
|
Adherent::STATUS_EXCLUDED =>$langs->trans("MemberStatusExcludedShort")
|
||||||
);
|
);
|
||||||
print $form->selectarray('search_status', $liststatus, $search_status, -3, 0, 0, '', 0, 0, 0, '', 'onrightofpage');
|
print $form->selectarray('search_status', $liststatus, $search_status, -3, 0, 0, '', 0, 0, 0, '', 'search_status width100 onrightofpage');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
if (!empty($arrayfields['d.import_key']['checked'])) {
|
if (!empty($arrayfields['d.import_key']['checked'])) {
|
||||||
@ -988,276 +995,293 @@ while ($i < min($num, $limit)) {
|
|||||||
}
|
}
|
||||||
$memberstatic->company = $companyname;
|
$memberstatic->company = $companyname;
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
if ($mode == 'kanban') {
|
||||||
|
if ($i == 0) {
|
||||||
// Action column
|
print '<tr><td colspan="12">';
|
||||||
if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) {
|
print '<div class="box-flex-container">';
|
||||||
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->rowid, $arrayofselected)) {
|
|
||||||
$selected = 1;
|
|
||||||
}
|
|
||||||
print '<input id="cb'.$obj->rowid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.'"'.($selected ? ' checked="checked"' : '').'>';
|
|
||||||
}
|
}
|
||||||
print '</td>';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($conf->global->MAIN_SHOW_TECHNICAL_ID)) {
|
|
||||||
print '<td class="center" data-key="id">'.$obj->rowid.'</td>';
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ref
|
|
||||||
if (!empty($arrayfields['d.ref']['checked'])) {
|
|
||||||
print "<td>";
|
|
||||||
print $memberstatic->getNomUrl(-1, 0, 'card', 'ref', '', -1, 0, 1);
|
|
||||||
print "</td>\n";
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Civility
|
|
||||||
if (!empty($arrayfields['d.civility']['checked'])) {
|
|
||||||
print "<td>";
|
|
||||||
print $obj->civility;
|
|
||||||
print "</td>\n";
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Firstname
|
|
||||||
if (!empty($arrayfields['d.firstname']['checked'])) {
|
|
||||||
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->firstname).'">';
|
|
||||||
print $memberstatic->getNomUrl(0, 0, 'card', 'firstname');
|
|
||||||
//print $obj->firstname;
|
|
||||||
print "</td>\n";
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Lastname
|
|
||||||
if (!empty($arrayfields['d.lastname']['checked'])) {
|
|
||||||
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->lastname).'">';
|
|
||||||
print $memberstatic->getNomUrl(0, 0, 'card', 'lastname');
|
|
||||||
//print $obj->lastname;
|
|
||||||
print "</td>\n";
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Gender
|
|
||||||
if (!empty($arrayfields['d.gender']['checked'])) {
|
|
||||||
print '<td>';
|
|
||||||
if ($obj->gender) {
|
|
||||||
print $langs->trans("Gender".$obj->gender);
|
|
||||||
}
|
|
||||||
print '</td>';
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Company
|
|
||||||
if (!empty($arrayfields['d.company']['checked'])) {
|
|
||||||
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($companyname).'">';
|
|
||||||
print $companynametoshow;
|
|
||||||
print "</td>\n";
|
|
||||||
}
|
|
||||||
// Login
|
|
||||||
if (!empty($arrayfields['d.login']['checked'])) {
|
|
||||||
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->login).'">'.$obj->login."</td>\n";
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Nature (Moral/Physical)
|
|
||||||
if (!empty($arrayfields['d.morphy']['checked'])) {
|
|
||||||
print '<td class="center">';
|
|
||||||
print $memberstatic->getmorphylib('', 2);
|
|
||||||
print "</td>\n";
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Type label
|
|
||||||
if (!empty($arrayfields['t.libelle']['checked'])) {
|
|
||||||
$membertypestatic->id = $obj->type_id;
|
$membertypestatic->id = $obj->type_id;
|
||||||
$membertypestatic->label = $obj->type;
|
$membertypestatic->label = $obj->type;
|
||||||
print '<td class="nowraponall">';
|
$memberstatic->type = $membertypestatic->label;
|
||||||
print $membertypestatic->getNomUrl(1, 32);
|
$memberstatic->photo = $obj->photo;
|
||||||
print '</td>';
|
// Output Kanban
|
||||||
if (!$i) {
|
print $memberstatic->getKanbanView('');
|
||||||
$totalarray['nbfield']++;
|
if ($i == (min($num, $limit) - 1)) {
|
||||||
|
print '</div>';
|
||||||
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
// Address
|
print '<tr class="oddeven">';
|
||||||
if (!empty($arrayfields['d.address']['checked'])) {
|
|
||||||
print '<td class="nocellnopadd tdoverflowmax200" title="'.dol_escape_htmltag($obj->address).'">';
|
// Action column
|
||||||
print $obj->address;
|
if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) {
|
||||||
print '</td>';
|
print '<td class="center">';
|
||||||
if (!$i) {
|
if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
|
||||||
$totalarray['nbfield']++;
|
$selected = 0;
|
||||||
}
|
if (in_array($obj->rowid, $arrayofselected)) {
|
||||||
}
|
$selected = 1;
|
||||||
// Zip
|
}
|
||||||
if (!empty($arrayfields['d.zip']['checked'])) {
|
print '<input id="cb'.$obj->rowid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
print '<td class="nocellnopadd">';
|
|
||||||
print $obj->zip;
|
|
||||||
print '</td>';
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Town
|
|
||||||
if (!empty($arrayfields['d.town']['checked'])) {
|
|
||||||
print '<td class="nocellnopadd">';
|
|
||||||
print $obj->town;
|
|
||||||
print '</td>';
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// State
|
|
||||||
if (!empty($arrayfields['state.nom']['checked'])) {
|
|
||||||
print "<td>".$obj->state_name."</td>\n";
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Country
|
|
||||||
if (!empty($arrayfields['country.code_iso']['checked'])) {
|
|
||||||
$tmparray = getCountry($obj->country, 'all');
|
|
||||||
print '<td class="center tdoverflowmax100" title="'.dol_escape_htmltag($tmparray['label']).'">';
|
|
||||||
print dol_escape_htmltag($tmparray['label']);
|
|
||||||
print '</td>';
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Phone pro
|
|
||||||
if (!empty($arrayfields['d.phone']['checked'])) {
|
|
||||||
print '<td class="nocellnopadd">';
|
|
||||||
print $obj->phone;
|
|
||||||
print '</td>';
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Phone perso
|
|
||||||
if (!empty($arrayfields['d.phone_perso']['checked'])) {
|
|
||||||
print '<td class="nocellnopadd">';
|
|
||||||
print $obj->phone_perso;
|
|
||||||
print '</td>';
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Phone mobile
|
|
||||||
if (!empty($arrayfields['d.phone_mobile']['checked'])) {
|
|
||||||
print '<td class="nocellnopadd">';
|
|
||||||
print $obj->phone_mobile;
|
|
||||||
print '</td>';
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// EMail
|
|
||||||
if (!empty($arrayfields['d.email']['checked'])) {
|
|
||||||
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->email).'">';
|
|
||||||
print dol_print_email($obj->email, 0, 0, 1, 64, 1, 1);
|
|
||||||
print "</td>\n";
|
|
||||||
}
|
|
||||||
// End of subscription date
|
|
||||||
$datefin = $db->jdate($obj->datefin);
|
|
||||||
if (!empty($arrayfields['d.datefin']['checked'])) {
|
|
||||||
print '<td class="nowrap center">';
|
|
||||||
if ($datefin) {
|
|
||||||
print dol_print_date($datefin, 'day');
|
|
||||||
if ($memberstatic->hasDelay()) {
|
|
||||||
$textlate = ' ('.$langs->trans("DateReference").' > '.$langs->trans("DateToday").' '.(ceil($conf->adherent->subscription->warning_delay / 60 / 60 / 24) >= 0 ? '+' : '').ceil($conf->adherent->subscription->warning_delay / 60 / 60 / 24).' '.$langs->trans("days").')';
|
|
||||||
print " ".img_warning($langs->trans("SubscriptionLate").$textlate);
|
|
||||||
}
|
}
|
||||||
} else {
|
print '</td>';
|
||||||
if (!empty($obj->subscription)) {
|
}
|
||||||
print '<span class="opacitymedium">'.$langs->trans("SubscriptionNotReceived").'</span>';
|
|
||||||
if ($obj->statut > 0) {
|
if (!empty($conf->global->MAIN_SHOW_TECHNICAL_ID)) {
|
||||||
print " ".img_warning();
|
print '<td class="center" data-key="id">'.$obj->rowid.'</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ref
|
||||||
|
if (!empty($arrayfields['d.ref']['checked'])) {
|
||||||
|
print "<td>";
|
||||||
|
print $memberstatic->getNomUrl(-1, 0, 'card', 'ref', '', -1, 0, 1);
|
||||||
|
print "</td>\n";
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Civility
|
||||||
|
if (!empty($arrayfields['d.civility']['checked'])) {
|
||||||
|
print "<td>";
|
||||||
|
print $obj->civility;
|
||||||
|
print "</td>\n";
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Firstname
|
||||||
|
if (!empty($arrayfields['d.firstname']['checked'])) {
|
||||||
|
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->firstname).'">';
|
||||||
|
print $memberstatic->getNomUrl(0, 0, 'card', 'firstname');
|
||||||
|
//print $obj->firstname;
|
||||||
|
print "</td>\n";
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Lastname
|
||||||
|
if (!empty($arrayfields['d.lastname']['checked'])) {
|
||||||
|
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->lastname).'">';
|
||||||
|
print $memberstatic->getNomUrl(0, 0, 'card', 'lastname');
|
||||||
|
//print $obj->lastname;
|
||||||
|
print "</td>\n";
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Gender
|
||||||
|
if (!empty($arrayfields['d.gender']['checked'])) {
|
||||||
|
print '<td>';
|
||||||
|
if ($obj->gender) {
|
||||||
|
print $langs->trans("Gender".$obj->gender);
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Company
|
||||||
|
if (!empty($arrayfields['d.company']['checked'])) {
|
||||||
|
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($companyname).'">';
|
||||||
|
print $companynametoshow;
|
||||||
|
print "</td>\n";
|
||||||
|
}
|
||||||
|
// Login
|
||||||
|
if (!empty($arrayfields['d.login']['checked'])) {
|
||||||
|
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->login).'">'.$obj->login."</td>\n";
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Nature (Moral/Physical)
|
||||||
|
if (!empty($arrayfields['d.morphy']['checked'])) {
|
||||||
|
print '<td class="center">';
|
||||||
|
print $memberstatic->getmorphylib('', 2);
|
||||||
|
print "</td>\n";
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Type label
|
||||||
|
if (!empty($arrayfields['t.libelle']['checked'])) {
|
||||||
|
$membertypestatic->id = $obj->type_id;
|
||||||
|
$membertypestatic->label = $obj->type;
|
||||||
|
print '<td class="nowraponall">';
|
||||||
|
print $membertypestatic->getNomUrl(1, 32);
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Address
|
||||||
|
if (!empty($arrayfields['d.address']['checked'])) {
|
||||||
|
print '<td class="nocellnopadd tdoverflowmax200" title="'.dol_escape_htmltag($obj->address).'">';
|
||||||
|
print $obj->address;
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Zip
|
||||||
|
if (!empty($arrayfields['d.zip']['checked'])) {
|
||||||
|
print '<td class="nocellnopadd">';
|
||||||
|
print $obj->zip;
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Town
|
||||||
|
if (!empty($arrayfields['d.town']['checked'])) {
|
||||||
|
print '<td class="nocellnopadd">';
|
||||||
|
print $obj->town;
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// State
|
||||||
|
if (!empty($arrayfields['state.nom']['checked'])) {
|
||||||
|
print "<td>".$obj->state_name."</td>\n";
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Country
|
||||||
|
if (!empty($arrayfields['country.code_iso']['checked'])) {
|
||||||
|
$tmparray = getCountry($obj->country, 'all');
|
||||||
|
print '<td class="center tdoverflowmax100" title="'.dol_escape_htmltag($tmparray['label']).'">';
|
||||||
|
print dol_escape_htmltag($tmparray['label']);
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Phone pro
|
||||||
|
if (!empty($arrayfields['d.phone']['checked'])) {
|
||||||
|
print '<td class="nocellnopadd">';
|
||||||
|
print $obj->phone;
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Phone perso
|
||||||
|
if (!empty($arrayfields['d.phone_perso']['checked'])) {
|
||||||
|
print '<td class="nocellnopadd">';
|
||||||
|
print $obj->phone_perso;
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Phone mobile
|
||||||
|
if (!empty($arrayfields['d.phone_mobile']['checked'])) {
|
||||||
|
print '<td class="nocellnopadd">';
|
||||||
|
print $obj->phone_mobile;
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// EMail
|
||||||
|
if (!empty($arrayfields['d.email']['checked'])) {
|
||||||
|
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->email).'">';
|
||||||
|
print dol_print_email($obj->email, 0, 0, 1, 64, 1, 1);
|
||||||
|
print "</td>\n";
|
||||||
|
}
|
||||||
|
// End of subscription date
|
||||||
|
$datefin = $db->jdate($obj->datefin);
|
||||||
|
if (!empty($arrayfields['d.datefin']['checked'])) {
|
||||||
|
print '<td class="nowrap center">';
|
||||||
|
if ($datefin) {
|
||||||
|
print dol_print_date($datefin, 'day');
|
||||||
|
if ($memberstatic->hasDelay()) {
|
||||||
|
$textlate = ' ('.$langs->trans("DateReference").' > '.$langs->trans("DateToday").' '.(ceil($conf->adherent->subscription->warning_delay / 60 / 60 / 24) >= 0 ? '+' : '').ceil($conf->adherent->subscription->warning_delay / 60 / 60 / 24).' '.$langs->trans("days").')';
|
||||||
|
print " ".img_warning($langs->trans("SubscriptionLate").$textlate);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print ' ';
|
if (!empty($obj->subscription)) {
|
||||||
|
print '<span class="opacitymedium">'.$langs->trans("SubscriptionNotReceived").'</span>';
|
||||||
|
if ($obj->statut > 0) {
|
||||||
|
print " ".img_warning();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print ' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
// Extra fields
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
|
||||||
|
// Fields from hook
|
||||||
|
$parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray);
|
||||||
|
$reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook
|
||||||
|
print $hookmanager->resPrint;
|
||||||
|
// Date creation
|
||||||
|
if (!empty($arrayfields['d.datec']['checked'])) {
|
||||||
|
print '<td class="nowrap center">';
|
||||||
|
print dol_print_date($db->jdate($obj->date_creation), 'dayhour', 'tzuser');
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print '</td>';
|
// Birth
|
||||||
}
|
if (!empty($arrayfields['d.birth']['checked'])) {
|
||||||
// Extra fields
|
print '<td class="nowrap center">';
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
|
print dol_print_date($db->jdate($obj->birth), 'day', 'tzuser');
|
||||||
// Fields from hook
|
print '</td>';
|
||||||
$parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray);
|
if (!$i) {
|
||||||
$reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook
|
$totalarray['nbfield']++;
|
||||||
print $hookmanager->resPrint;
|
|
||||||
// Date creation
|
|
||||||
if (!empty($arrayfields['d.datec']['checked'])) {
|
|
||||||
print '<td class="nowrap center">';
|
|
||||||
print dol_print_date($db->jdate($obj->date_creation), 'dayhour', 'tzuser');
|
|
||||||
print '</td>';
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Birth
|
|
||||||
if (!empty($arrayfields['d.birth']['checked'])) {
|
|
||||||
print '<td class="nowrap center">';
|
|
||||||
print dol_print_date($db->jdate($obj->birth), 'day', 'tzuser');
|
|
||||||
print '</td>';
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Date modification
|
|
||||||
if (!empty($arrayfields['d.tms']['checked'])) {
|
|
||||||
print '<td class="nowrap center">';
|
|
||||||
print dol_print_date($db->jdate($obj->date_update), 'dayhour', 'tzuser');
|
|
||||||
print '</td>';
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Status
|
|
||||||
if (!empty($arrayfields['d.statut']['checked'])) {
|
|
||||||
print '<td class="nowrap right">';
|
|
||||||
print $memberstatic->LibStatut($obj->statut, $obj->subscription, $datefin, 5);
|
|
||||||
print '</td>';
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!empty($arrayfields['d.import_key']['checked'])) {
|
|
||||||
print '<td class="tdoverflowmax100 center" title="'.dol_escape_htmltag($obj->import_key).'">';
|
|
||||||
print dol_escape_htmltag($obj->import_key);
|
|
||||||
print "</td>\n";
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Action column
|
|
||||||
if (empty($conf->global->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->rowid, $arrayofselected)) {
|
|
||||||
$selected = 1;
|
|
||||||
}
|
}
|
||||||
print '<input id="cb'.$obj->rowid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.'"'.($selected ? ' checked="checked"' : '').'>';
|
|
||||||
}
|
}
|
||||||
print '</td>';
|
// Date modification
|
||||||
}
|
if (!empty($arrayfields['d.tms']['checked'])) {
|
||||||
if (!$i) {
|
print '<td class="nowrap center">';
|
||||||
$totalarray['nbfield']++;
|
print dol_print_date($db->jdate($obj->date_update), 'dayhour', 'tzuser');
|
||||||
}
|
print '</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Status
|
||||||
|
if (!empty($arrayfields['d.statut']['checked'])) {
|
||||||
|
print '<td class="nowrap right">';
|
||||||
|
print $memberstatic->LibStatut($obj->statut, $obj->subscription, $datefin, 5);
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['d.import_key']['checked'])) {
|
||||||
|
print '<td class="tdoverflowmax100 center" title="'.dol_escape_htmltag($obj->import_key).'">';
|
||||||
|
print dol_escape_htmltag($obj->import_key);
|
||||||
|
print "</td>\n";
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Action column
|
||||||
|
if (empty($conf->global->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->rowid, $arrayofselected)) {
|
||||||
|
$selected = 1;
|
||||||
|
}
|
||||||
|
print '<input id="cb'.$obj->rowid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
|
||||||
print '</tr>'."\n";
|
print '</tr>'."\n";
|
||||||
|
}
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -37,6 +37,8 @@ $massaction = GETPOST('massaction', 'alpha');
|
|||||||
$confirm = GETPOST('confirm', 'alpha');
|
$confirm = GETPOST('confirm', 'alpha');
|
||||||
$toselect = GETPOST('toselect', 'array');
|
$toselect = GETPOST('toselect', 'array');
|
||||||
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'subscriptionlist'; // To manage different context of search
|
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'subscriptionlist'; // To manage different context of search
|
||||||
|
$mode = GETPOST('mode', 'alpha');
|
||||||
|
|
||||||
|
|
||||||
$statut = (GETPOSTISSET("statut") ?GETPOST("statut", "alpha") : 1);
|
$statut = (GETPOSTISSET("statut") ?GETPOST("statut", "alpha") : 1);
|
||||||
$search_ref = GETPOST('search_ref', 'alpha');
|
$search_ref = GETPOST('search_ref', 'alpha');
|
||||||
@ -253,6 +255,9 @@ llxHeader('', $title, $help_url);
|
|||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
$param = '';
|
$param = '';
|
||||||
|
if (!empty($mode)) {
|
||||||
|
$param .='&mode='.urlencode($mode);
|
||||||
|
}
|
||||||
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
|
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
|
||||||
$param .= '&contextpage='.urlencode($contextpage);
|
$param .= '&contextpage='.urlencode($contextpage);
|
||||||
}
|
}
|
||||||
@ -298,6 +303,9 @@ if (in_array($massaction, array('presend', 'predelete'))) {
|
|||||||
$massactionbutton = $form->selectMassAction('', $arrayofmassactions);
|
$massactionbutton = $form->selectMassAction('', $arrayofmassactions);
|
||||||
|
|
||||||
$newcardbutton = '';
|
$newcardbutton = '';
|
||||||
|
$newcardbutton .= dolGetButtonTitle($langs->trans('ViewList'), '', 'fa fa-bars imgforviewmode', $_SERVER["PHP_SELF"].'?mode=common'.preg_replace('/(&|\?)*mode=[^&]+/', '', $param), '', ((empty($mode) || $mode == 'common') ? 2 : 1), array('morecss'=>'reposition'));
|
||||||
|
$newcardbutton .= dolGetButtonTitle($langs->trans('ViewKanban'), '', 'fa fa-th-list imgforviewmode', $_SERVER["PHP_SELF"].'?mode=kanban'.preg_replace('/(&|\?)*mode=[^&]+/', '', $param), '', ($mode == 'kanban' ? 2 : 1), array('morecss'=>'reposition'));
|
||||||
|
|
||||||
if ($user->hasRight('adherent', 'cotisation', 'creer')) {
|
if ($user->hasRight('adherent', 'cotisation', 'creer')) {
|
||||||
$newcardbutton .= dolGetButtonTitle($langs->trans('NewSubscription'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/adherents/list.php?status=-1,1');
|
$newcardbutton .= dolGetButtonTitle($langs->trans('NewSubscription'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/adherents/list.php?status=-1,1');
|
||||||
}
|
}
|
||||||
@ -313,6 +321,8 @@ print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
|
|||||||
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
||||||
print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
|
print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
|
||||||
print '<input type="hidden" name="date_select" value="'.$date_select.'">';
|
print '<input type="hidden" name="date_select" value="'.$date_select.'">';
|
||||||
|
print '<input type="hidden" name="mode" value="'.$mode.'">';
|
||||||
|
|
||||||
|
|
||||||
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, $subscription->picto, 0, $newcardbutton, '', $limit, 0, 0, 1);
|
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, $subscription->picto, 0, $newcardbutton, '', $limit, 0, 0, 1);
|
||||||
|
|
||||||
@ -507,143 +517,166 @@ while ($i < min($num, $limit)) {
|
|||||||
|
|
||||||
$adherent->need_subscription = $adht->subscription;
|
$adherent->need_subscription = $adht->subscription;
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
if ($mode == 'kanban') {
|
||||||
|
if ($i == 0) {
|
||||||
|
print '<tr><td colspan="12">';
|
||||||
|
print '<div class="box-flex-container">';
|
||||||
|
}
|
||||||
|
|
||||||
// Ref
|
//fetch informations needs on this mode
|
||||||
if (!empty($arrayfields['d.ref']['checked'])) {
|
$subscription->fk_adherent = $adherent->getNomUrl(1);
|
||||||
print '<td>'.$subscription->getNomUrl(1).'</td>';
|
$subscription->fk_type = $adht->getNomUrl(1);
|
||||||
if (!$i) {
|
$subscription->amount = $obj->subscription;
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Type
|
|
||||||
if (!empty($arrayfields['d.fk_type']['checked'])) {
|
|
||||||
print '<td class="nowraponall">';
|
|
||||||
if ($typeid > 0) {
|
|
||||||
print $adht->getNomUrl(1);
|
|
||||||
}
|
|
||||||
print '</td>';
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Lastname
|
|
||||||
if (!empty($arrayfields['d.lastname']['checked'])) {
|
|
||||||
print '<td class="tdoverflowmax150">'.$adherent->getNomUrl(-1, 0, 'card', 'lastname').'</td>';
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Firstname
|
|
||||||
if (!empty($arrayfields['d.firstname']['checked'])) {
|
|
||||||
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($adherent->firstname).'">'.$adherent->firstname.'</td>';
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Login
|
|
||||||
if (!empty($arrayfields['d.login']['checked'])) {
|
|
||||||
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($adherent->login).'">'.$adherent->login.'</td>';
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Label
|
|
||||||
if (!empty($arrayfields['t.libelle']['checked'])) {
|
|
||||||
print '<td class="tdoverflowmax400" title="'.dol_escape_htmltag($obj->note).'">';
|
|
||||||
print $obj->note;
|
|
||||||
print '</td>';
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Banque
|
|
||||||
if (!empty($arrayfields['d.bank']['checked'])) {
|
|
||||||
print '<td class="tdmaxoverflow150">';
|
|
||||||
if ($obj->fk_account > 0) {
|
if ($obj->fk_account > 0) {
|
||||||
$accountstatic->id = $obj->fk_account;
|
$accountstatic->id = $obj->fk_account;
|
||||||
$accountstatic->fetch($obj->fk_account);
|
$accountstatic->fetch($obj->fk_account);
|
||||||
//$accountstatic->label=$obj->label;
|
$subscription->fk_bank = $accountstatic->getNomUrl(1);
|
||||||
print $accountstatic->getNomUrl(1);
|
|
||||||
}
|
}
|
||||||
print "</td>\n";
|
// Output Kanban
|
||||||
if (!$i) {
|
print $subscription->getKanbanView('');
|
||||||
$totalarray['nbfield']++;
|
if ($i == (min($num, $limit) - 1)) {
|
||||||
|
print '</div>';
|
||||||
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
|
print '<tr class="oddeven">';
|
||||||
|
|
||||||
// Date start
|
// Ref
|
||||||
if (!empty($arrayfields['c.dateadh']['checked'])) {
|
if (!empty($arrayfields['d.ref']['checked'])) {
|
||||||
print '<td class="center">'.dol_print_date($db->jdate($obj->dateadh), 'day')."</td>\n";
|
print '<td>'.$subscription->getNomUrl(1).'</td>';
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
// Type
|
||||||
// Date end
|
if (!empty($arrayfields['d.fk_type']['checked'])) {
|
||||||
if (!empty($arrayfields['c.datef']['checked'])) {
|
print '<td class="nowraponall">';
|
||||||
print '<td class="center">'.dol_print_date($db->jdate($obj->datef), 'day')."</td>\n";
|
if ($typeid > 0) {
|
||||||
if (!$i) {
|
print $adht->getNomUrl(1);
|
||||||
$totalarray['nbfield']++;
|
}
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
// Price
|
// Lastname
|
||||||
if (!empty($arrayfields['d.amount']['checked'])) {
|
if (!empty($arrayfields['d.lastname']['checked'])) {
|
||||||
print '<td class="right amount">'.price($obj->subscription).'</td>';
|
print '<td class="tdoverflowmax150">'.$adherent->getNomUrl(-1, 0, 'card', 'lastname').'</td>';
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!$i) {
|
// Firstname
|
||||||
$totalarray['pos'][$totalarray['nbfield']] = 'd.amount';
|
if (!empty($arrayfields['d.firstname']['checked'])) {
|
||||||
|
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($adherent->firstname).'">'.$adherent->firstname.'</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (empty($totalarray['val']['d.amount'])) {
|
|
||||||
$totalarray['val']['d.amount'] = $obj->subscription;
|
// Login
|
||||||
} else {
|
if (!empty($arrayfields['d.login']['checked'])) {
|
||||||
$totalarray['val']['d.amount'] += $obj->subscription;
|
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($adherent->login).'">'.$adherent->login.'</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Label
|
||||||
|
if (!empty($arrayfields['t.libelle']['checked'])) {
|
||||||
|
print '<td class="tdoverflowmax400" title="'.dol_escape_htmltag($obj->note).'">';
|
||||||
|
print $obj->note;
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Banque
|
||||||
|
if (!empty($arrayfields['d.bank']['checked'])) {
|
||||||
|
print '<td class="tdmaxoverflow150">';
|
||||||
|
if ($obj->fk_account > 0) {
|
||||||
|
$accountstatic->id = $obj->fk_account;
|
||||||
|
$accountstatic->fetch($obj->fk_account);
|
||||||
|
//$accountstatic->label=$obj->label;
|
||||||
|
print $accountstatic->getNomUrl(1);
|
||||||
|
}
|
||||||
|
print "</td>\n";
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Date start
|
||||||
|
if (!empty($arrayfields['c.dateadh']['checked'])) {
|
||||||
|
print '<td class="center">'.dol_print_date($db->jdate($obj->dateadh), 'day')."</td>\n";
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Date end
|
||||||
|
if (!empty($arrayfields['c.datef']['checked'])) {
|
||||||
|
print '<td class="center">'.dol_print_date($db->jdate($obj->datef), 'day')."</td>\n";
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Price
|
||||||
|
if (!empty($arrayfields['d.amount']['checked'])) {
|
||||||
|
print '<td class="right amount">'.price($obj->subscription).'</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['pos'][$totalarray['nbfield']] = 'd.amount';
|
||||||
|
}
|
||||||
|
if (empty($totalarray['val']['d.amount'])) {
|
||||||
|
$totalarray['val']['d.amount'] = $obj->subscription;
|
||||||
|
} else {
|
||||||
|
$totalarray['val']['d.amount'] += $obj->subscription;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Extra fields
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
|
||||||
|
// Fields from hook
|
||||||
|
$parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray);
|
||||||
|
$reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook
|
||||||
|
print $hookmanager->resPrint;
|
||||||
|
// Date creation
|
||||||
|
if (!empty($arrayfields['c.datec']['checked'])) {
|
||||||
|
print '<td class="nowrap center">';
|
||||||
|
print dol_print_date($db->jdate($obj->date_creation), 'dayhour', 'tzuser');
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Date modification
|
||||||
|
if (!empty($arrayfields['c.tms']['checked'])) {
|
||||||
|
print '<td class="nowrap center">';
|
||||||
|
print dol_print_date($db->jdate($obj->date_update), 'dayhour', 'tzuser');
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Action 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"' : '').'>';
|
||||||
}
|
}
|
||||||
}
|
|
||||||
// Extra fields
|
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
|
|
||||||
// Fields from hook
|
|
||||||
$parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray);
|
|
||||||
$reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook
|
|
||||||
print $hookmanager->resPrint;
|
|
||||||
// Date creation
|
|
||||||
if (!empty($arrayfields['c.datec']['checked'])) {
|
|
||||||
print '<td class="nowrap center">';
|
|
||||||
print dol_print_date($db->jdate($obj->date_creation), 'dayhour', 'tzuser');
|
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
// Date modification
|
|
||||||
if (!empty($arrayfields['c.tms']['checked'])) {
|
|
||||||
print '<td class="nowrap center">';
|
|
||||||
print dol_print_date($db->jdate($obj->date_update), 'dayhour', 'tzuser');
|
|
||||||
print '</td>';
|
|
||||||
if (!$i) {
|
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Action 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']++;
|
|
||||||
}
|
|
||||||
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
}
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -44,6 +44,7 @@ $action = GETPOST('action', 'aZ09');
|
|||||||
$cancel = GETPOST('cancel', 'alpha');
|
$cancel = GETPOST('cancel', 'alpha');
|
||||||
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search
|
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search
|
||||||
$backtopage = GETPOST('backtopage', 'alpha');
|
$backtopage = GETPOST('backtopage', 'alpha');
|
||||||
|
$mode = GETPOST('mode', 'alopha');
|
||||||
|
|
||||||
$sall = GETPOST("sall", "alpha");
|
$sall = GETPOST("sall", "alpha");
|
||||||
$filter = GETPOST("filter", 'alpha');
|
$filter = GETPOST("filter", 'alpha');
|
||||||
@ -249,6 +250,9 @@ if (!$rowid && $action != 'create' && $action != 'edit') {
|
|||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
$param = '';
|
$param = '';
|
||||||
|
if (!empty($mode)) {
|
||||||
|
$param .= '&mode'.urlencode($mode);
|
||||||
|
}
|
||||||
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
|
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
|
||||||
$param .= '&contextpage='.$contextpage;
|
$param .= '&contextpage='.$contextpage;
|
||||||
}
|
}
|
||||||
@ -257,6 +261,10 @@ if (!$rowid && $action != 'create' && $action != 'edit') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$newcardbutton = '';
|
$newcardbutton = '';
|
||||||
|
|
||||||
|
$newcardbutton .= dolGetButtonTitle($langs->trans('ViewList'), '', 'fa fa-bars imgforviewmode', $_SERVER["PHP_SELF"].'?mode=common'.preg_replace('/(&|\?)*mode=[^&]+/', '', $param), '', ((empty($mode) || $mode == 'common') ? 2 : 1), array('morecss'=>'reposition'));
|
||||||
|
$newcardbutton .= dolGetButtonTitle($langs->trans('ViewKanban'), '', 'fa fa-th-list imgforviewmode', $_SERVER["PHP_SELF"].'?mode=kanban'.preg_replace('/(&|\?)*mode=[^&]+/', '', $param), '', ($mode == 'kanban' ? 2 : 1), array('morecss'=>'reposition'));
|
||||||
|
|
||||||
if ($user->hasRight('adherent', 'configurer')) {
|
if ($user->hasRight('adherent', 'configurer')) {
|
||||||
$newcardbutton .= dolGetButtonTitle($langs->trans('NewMemberType'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/adherents/type.php?action=create');
|
$newcardbutton .= dolGetButtonTitle($langs->trans('NewMemberType'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/adherents/type.php?action=create');
|
||||||
}
|
}
|
||||||
@ -270,6 +278,8 @@ if (!$rowid && $action != 'create' && $action != 'edit') {
|
|||||||
print '<input type="hidden" name="action" value="list">';
|
print '<input type="hidden" name="action" value="list">';
|
||||||
print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
|
print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
|
||||||
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
||||||
|
print '<input type="hidden" name="mode" value="'.$mode.'">';
|
||||||
|
|
||||||
|
|
||||||
print_barre_liste($langs->trans("MembersTypes"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'members', 0, $newcardbutton, '', $limit, 0, 0, 1);
|
print_barre_liste($langs->trans("MembersTypes"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'members', 0, $newcardbutton, '', $limit, 0, 0, 1);
|
||||||
|
|
||||||
@ -292,7 +302,13 @@ if (!$rowid && $action != 'create' && $action != 'edit') {
|
|||||||
|
|
||||||
$membertype = new AdherentType($db);
|
$membertype = new AdherentType($db);
|
||||||
|
|
||||||
while ($i < $num) {
|
$i = 0;
|
||||||
|
/*$savnbfield = $totalarray['nbfield'];
|
||||||
|
$totalarray = array();
|
||||||
|
$totalarray['nbfield'] = 0;*/
|
||||||
|
|
||||||
|
$imaxinloop = ($limit ? min($num, $limit) : $num);
|
||||||
|
while ($i < $imaxinloop) {
|
||||||
$objp = $db->fetch_object($result);
|
$objp = $db->fetch_object($result);
|
||||||
|
|
||||||
$membertype->id = $objp->rowid;
|
$membertype->id = $objp->rowid;
|
||||||
@ -303,32 +319,46 @@ if (!$rowid && $action != 'create' && $action != 'edit') {
|
|||||||
$membertype->amount = $objp->amount;
|
$membertype->amount = $objp->amount;
|
||||||
$membertype->caneditamount = $objp->caneditamount;
|
$membertype->caneditamount = $objp->caneditamount;
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
if ($mode == 'kanban') {
|
||||||
print '<td class="nowraponall">';
|
if ($i == 0) {
|
||||||
print $membertype->getNomUrl(1);
|
print '<tr><td colspan="12">';
|
||||||
//<a href="'.$_SERVER["PHP_SELF"].'?rowid='.$objp->rowid.'">'.img_object($langs->trans("ShowType"),'group').' '.$objp->rowid.'</a>
|
print '<div class="box-flex-container">';
|
||||||
print '</td>';
|
}
|
||||||
print '<td>'.dol_escape_htmltag($objp->label).'</td>';
|
//output kanban
|
||||||
print '<td class="center">';
|
$membertype->label = $objp->label;
|
||||||
if ($objp->morphy == 'phy') {
|
print $membertype->getKanbanView('');
|
||||||
print $langs->trans("Physical");
|
if ($i == ($imaxinloop - 1)) {
|
||||||
} elseif ($objp->morphy == 'mor') {
|
print '</div>';
|
||||||
print $langs->trans("Moral");
|
print '</td></tr>';
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
print $langs->trans("MorAndPhy");
|
print '<tr class="oddeven">';
|
||||||
|
print '<td class="nowraponall">';
|
||||||
|
print $membertype->getNomUrl(1);
|
||||||
|
//<a href="'.$_SERVER["PHP_SELF"].'?rowid='.$objp->rowid.'">'.img_object($langs->trans("ShowType"),'group').' '.$objp->rowid.'</a>
|
||||||
|
print '</td>';
|
||||||
|
print '<td>'.dol_escape_htmltag($objp->label).'</td>';
|
||||||
|
print '<td class="center">';
|
||||||
|
if ($objp->morphy == 'phy') {
|
||||||
|
print $langs->trans("Physical");
|
||||||
|
} elseif ($objp->morphy == 'mor') {
|
||||||
|
print $langs->trans("Moral");
|
||||||
|
} else {
|
||||||
|
print $langs->trans("MorAndPhy");
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
print '<td class="center">'.yn($objp->subscription).'</td>';
|
||||||
|
print '<td class="center"><span class="amount">'.(is_null($objp->amount) || $objp->amount === '' ? '' : price($objp->amount)).'</span></td>';
|
||||||
|
print '<td class="center">'.yn($objp->caneditamount).'</td>';
|
||||||
|
print '<td class="center">'.yn($objp->vote).'</td>';
|
||||||
|
print '<td class="center">'.$membertype->getLibStatut(5).'</td>';
|
||||||
|
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 "</tr>";
|
||||||
}
|
}
|
||||||
print '</td>';
|
|
||||||
print '<td class="center">'.yn($objp->subscription).'</td>';
|
|
||||||
print '<td class="center"><span class="amount">'.(is_null($objp->amount) || $objp->amount === '' ? '' : price($objp->amount)).'</span></td>';
|
|
||||||
print '<td class="center">'.yn($objp->caneditamount).'</td>';
|
|
||||||
print '<td class="center">'.yn($objp->vote).'</td>';
|
|
||||||
print '<td class="center">'.$membertype->getLibStatut(5).'</td>';
|
|
||||||
if ($user->hasRight('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 "</tr>";
|
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -51,10 +51,10 @@ $type = 'bom';
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconstbom = GETPOST('maskconstBom', 'alpha');
|
$maskconstbom = GETPOST('maskconstBom', 'aZ09');
|
||||||
$maskbom = GETPOST('maskBom', 'alpha');
|
$maskbom = GETPOST('maskBom', 'alpha');
|
||||||
|
|
||||||
if ($maskconstbom) {
|
if ($maskconstbom && preg_match('/_MASK$/', $maskconstbom)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstbom, $maskbom, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstbom, $maskbom, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -54,9 +54,9 @@ if (empty($conf->global->CHEQUERECEIPTS_ADDON)) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconstchequereceipts = GETPOST('maskconstchequereceipts', 'alpha');
|
$maskconstchequereceipts = GETPOST('maskconstchequereceipts', 'aZ09');
|
||||||
$maskchequereceipts = GETPOST('maskchequereceipts', 'alpha');
|
$maskchequereceipts = GETPOST('maskchequereceipts', 'alpha');
|
||||||
if ($maskconstchequereceipts) {
|
if ($maskconstchequereceipts && preg_match('/_MASK$/', $maskconstchequereceipts)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstchequereceipts, $maskchequereceipts, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstchequereceipts, $maskchequereceipts, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -211,7 +211,7 @@ foreach ($dirmodels as $reldir) {
|
|||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
print $form->textwithpicto('', $htmltooltip, 1, 0);
|
print $form->textwithpicto('', $htmltooltip, 1, 0);
|
||||||
|
|
||||||
if ($conf->global->CHEQUERECEIPTS_ADDON.'.php' == $file) { // If module is the one used, we show existing errors
|
if (getDolGlobalString('CHEQUERECEIPTS_ADDON').'.php' == $file) { // If module is the one used, we show existing errors
|
||||||
if (!empty($module->error)) {
|
if (!empty($module->error)) {
|
||||||
dol_htmloutput_mesg($module->error, '', 'error', 1);
|
dol_htmloutput_mesg($module->error, '', 'error', 1);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -61,10 +61,10 @@ $type = 'order';
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconstorder = GETPOST('maskconstorder', 'alpha');
|
$maskconstorder = GETPOST('maskconstorder', 'aZ09');
|
||||||
$maskorder = GETPOST('maskorder', 'alpha');
|
$maskorder = GETPOST('maskorder', 'alpha');
|
||||||
|
|
||||||
if ($maskconstorder) {
|
if ($maskconstorder && preg_match('/_MASK$/', $maskconstorder)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstorder, $maskorder, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstorder, $maskorder, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -58,9 +58,9 @@ include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
|||||||
$error=0;
|
$error=0;
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconst = GETPOST('maskconstcontract', 'alpha');
|
$maskconst = GETPOST('maskconstcontract', 'aZ09');
|
||||||
$maskvalue = GETPOST('maskcontract', 'alpha');
|
$maskvalue = GETPOST('maskcontract', 'alpha');
|
||||||
if ($maskconst) {
|
if ($maskconst && preg_match('/_MASK$/', $maskconst)) {
|
||||||
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -325,7 +325,7 @@ if (empty($conf->global->MAIN_DISABLE_METEO) || $conf->global->MAIN_DISABLE_METE
|
|||||||
if (!empty($conf->global->MAIN_METEO_LEVEL0)) {
|
if (!empty($conf->global->MAIN_METEO_LEVEL0)) {
|
||||||
$level0 = $conf->global->MAIN_METEO_LEVEL0;
|
$level0 = $conf->global->MAIN_METEO_LEVEL0;
|
||||||
}
|
}
|
||||||
$level1 = $offset + 1 * $cursor;
|
$level1 = $offset + $cursor;
|
||||||
if (!empty($conf->global->MAIN_METEO_LEVEL1)) {
|
if (!empty($conf->global->MAIN_METEO_LEVEL1)) {
|
||||||
$level1 = $conf->global->MAIN_METEO_LEVEL1;
|
$level1 = $conf->global->MAIN_METEO_LEVEL1;
|
||||||
}
|
}
|
||||||
@ -459,7 +459,7 @@ if ($action == 'edit') {
|
|||||||
print '</form>';
|
print '</form>';
|
||||||
} else {
|
} else {
|
||||||
print '<br><br><div class="tabsAction">';
|
print '<br><br><div class="tabsAction">';
|
||||||
print '<a class="butAction" href="delais.php?action=edit&token='.newToken().'">'.$langs->trans("Modify").'</a>';
|
print '<a class="butAction reposition" href="delais.php?action=edit&token='.newToken().'">'.$langs->trans("Modify").'</a>';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -90,9 +90,9 @@ if ($action == 'activate_delivery') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconstdelivery = GETPOST('maskconstdelivery', 'alpha');
|
$maskconstdelivery = GETPOST('maskconstdelivery', 'aZ09');
|
||||||
$maskdelivery = GETPOST('maskdelivery', 'alpha');
|
$maskdelivery = GETPOST('maskdelivery', 'alpha');
|
||||||
if ($maskconstdelivery) {
|
if ($maskconstdelivery && preg_match('/_MASK$/', $maskconstdelivery)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstdelivery, $maskdelivery, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstdelivery, $maskdelivery, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1944,7 +1944,7 @@ if ($id > 0) {
|
|||||||
//var_dump($fieldlist);
|
//var_dump($fieldlist);
|
||||||
$class = '';
|
$class = '';
|
||||||
$showfield = 1;
|
$showfield = 1;
|
||||||
$valuetoshow = empty($obj->{$value}) ? '' : $obj->{$value};
|
$valuetoshow = empty($obj->$value) ? '' : $obj->$value;
|
||||||
$titletoshow = '';
|
$titletoshow = '';
|
||||||
|
|
||||||
if ($value == 'entity') {
|
if ($value == 'entity') {
|
||||||
@ -1985,76 +1985,76 @@ if ($id > 0) {
|
|||||||
} elseif ($value == 'libelle_facture') {
|
} elseif ($value == 'libelle_facture') {
|
||||||
$langs->load("bills");
|
$langs->load("bills");
|
||||||
$key = $langs->trans("PaymentCondition".strtoupper($obj->code));
|
$key = $langs->trans("PaymentCondition".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "PaymentCondition".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "PaymentCondition".strtoupper($obj->code) ? $key : $obj->$value);
|
||||||
$valuetoshow = nl2br($valuetoshow);
|
$valuetoshow = nl2br($valuetoshow);
|
||||||
} elseif ($value == 'label' && $tabname[$id] == 'c_country') {
|
} elseif ($value == 'label' && $tabname[$id] == 'c_country') {
|
||||||
$key = $langs->trans("Country".strtoupper($obj->code));
|
$key = $langs->trans("Country".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "Country".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "Country".strtoupper($obj->code) ? $key : $obj->$value);
|
||||||
} elseif ($value == 'label' && $tabname[$id] == 'c_availability') {
|
} elseif ($value == 'label' && $tabname[$id] == 'c_availability') {
|
||||||
$langs->load("propal");
|
$langs->load("propal");
|
||||||
$key = $langs->trans("AvailabilityType".strtoupper($obj->code));
|
$key = $langs->trans("AvailabilityType".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "AvailabilityType".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "AvailabilityType".strtoupper($obj->code) ? $key : $obj->$value);
|
||||||
} elseif ($value == 'libelle' && $tabname[$id] == 'c_actioncomm') {
|
} elseif ($value == 'libelle' && $tabname[$id] == 'c_actioncomm') {
|
||||||
$key = $langs->trans("Action".strtoupper($obj->code));
|
$key = $langs->trans("Action".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "Action".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "Action".strtoupper($obj->code) ? $key : $obj->$value);
|
||||||
} elseif (!empty($obj->code_iso) && $value == 'label' && $tabname[$id] == 'c_currencies') {
|
} elseif (!empty($obj->code_iso) && $value == 'label' && $tabname[$id] == 'c_currencies') {
|
||||||
$key = $langs->trans("Currency".strtoupper($obj->code_iso));
|
$key = $langs->trans("Currency".strtoupper($obj->code_iso));
|
||||||
$valuetoshow = ($obj->code_iso && $key != "Currency".strtoupper($obj->code_iso) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code_iso && $key != "Currency".strtoupper($obj->code_iso) ? $key : $obj->$value);
|
||||||
} elseif ($value == 'libelle' && $tabname[$id] == 'c_typent') {
|
} elseif ($value == 'libelle' && $tabname[$id] == 'c_typent') {
|
||||||
$key = $langs->trans(strtoupper($obj->code));
|
$key = $langs->trans(strtoupper($obj->code));
|
||||||
$valuetoshow = ($key != strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($key != strtoupper($obj->code) ? $key : $obj->$value);
|
||||||
} elseif ($value == 'libelle' && $tabname[$id] == 'c_prospectlevel') {
|
} elseif ($value == 'libelle' && $tabname[$id] == 'c_prospectlevel') {
|
||||||
$key = $langs->trans(strtoupper($obj->code));
|
$key = $langs->trans(strtoupper($obj->code));
|
||||||
$valuetoshow = ($key != strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($key != strtoupper($obj->code) ? $key : $obj->$value);
|
||||||
} elseif ($value == 'label' && $tabname[$id] == 'c_civility') {
|
} elseif ($value == 'label' && $tabname[$id] == 'c_civility') {
|
||||||
$key = $langs->trans("Civility".strtoupper($obj->code));
|
$key = $langs->trans("Civility".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "Civility".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "Civility".strtoupper($obj->code) ? $key : $obj->$value);
|
||||||
} elseif ($value == 'libelle' && $tabname[$id] == 'c_type_contact') {
|
} elseif ($value == 'libelle' && $tabname[$id] == 'c_type_contact') {
|
||||||
$langs->load('agenda');
|
$langs->load('agenda');
|
||||||
$key = $langs->trans("TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code));
|
$key = $langs->trans("TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code) ? $key : $obj->$value);
|
||||||
} elseif ($value == 'libelle' && $tabname[$id] == 'c_payment_term') {
|
} elseif ($value == 'libelle' && $tabname[$id] == 'c_payment_term') {
|
||||||
$langs->load("bills");
|
$langs->load("bills");
|
||||||
$key = $langs->trans("PaymentConditionShort".strtoupper($obj->code));
|
$key = $langs->trans("PaymentConditionShort".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "PaymentConditionShort".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "PaymentConditionShort".strtoupper($obj->code) ? $key : $obj->$value);
|
||||||
} elseif ($value == 'libelle' && $tabname[$id] == 'c_paiement') {
|
} elseif ($value == 'libelle' && $tabname[$id] == 'c_paiement') {
|
||||||
$langs->load("bills");
|
$langs->load("bills");
|
||||||
$key = $langs->trans("PaymentType".strtoupper($obj->code));
|
$key = $langs->trans("PaymentType".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "PaymentType".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "PaymentType".strtoupper($obj->code) ? $key : $obj->$value);
|
||||||
} elseif ($value == 'type' && $tabname[$id] == 'c_paiement') {
|
} elseif ($value == 'type' && $tabname[$id] == 'c_paiement') {
|
||||||
$payment_type_list = array(0=>$langs->trans('PaymentTypeCustomer'), 1=>$langs->trans('PaymentTypeSupplier'), 2=>$langs->trans('PaymentTypeBoth'));
|
$payment_type_list = array(0=>$langs->trans('PaymentTypeCustomer'), 1=>$langs->trans('PaymentTypeSupplier'), 2=>$langs->trans('PaymentTypeBoth'));
|
||||||
$valuetoshow = $payment_type_list[$valuetoshow];
|
$valuetoshow = $payment_type_list[$valuetoshow];
|
||||||
} elseif ($value == 'label' && $tabname[$id] == 'c_input_reason') {
|
} elseif ($value == 'label' && $tabname[$id] == 'c_input_reason') {
|
||||||
$key = $langs->trans("DemandReasonType".strtoupper($obj->code));
|
$key = $langs->trans("DemandReasonType".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "DemandReasonType".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "DemandReasonType".strtoupper($obj->code) ? $key : $obj->$value);
|
||||||
} elseif ($value == 'libelle' && $tabname[$id] == 'c_input_method') {
|
} elseif ($value == 'libelle' && $tabname[$id] == 'c_input_method') {
|
||||||
$langs->load("orders");
|
$langs->load("orders");
|
||||||
$key = $langs->trans($obj->code);
|
$key = $langs->trans($obj->code);
|
||||||
$valuetoshow = ($obj->code && $key != $obj->code) ? $key : $obj->{$value};
|
$valuetoshow = ($obj->code && $key != $obj->code) ? $key : $obj->$value;
|
||||||
} elseif ($value == 'libelle' && $tabname[$id] == 'c_shipment_mode') {
|
} elseif ($value == 'libelle' && $tabname[$id] == 'c_shipment_mode') {
|
||||||
$langs->load("sendings");
|
$langs->load("sendings");
|
||||||
$key = $langs->trans("SendingMethod".strtoupper($obj->code));
|
$key = $langs->trans("SendingMethod".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "SendingMethod".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "SendingMethod".strtoupper($obj->code) ? $key : $obj->$value);
|
||||||
} elseif ($value == 'libelle' && $tabname[$id] == 'c_paper_format') {
|
} elseif ($value == 'libelle' && $tabname[$id] == 'c_paper_format') {
|
||||||
$key = $langs->trans('PaperFormat'.strtoupper($obj->code));
|
$key = $langs->trans('PaperFormat'.strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != 'PaperFormat'.strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != 'PaperFormat'.strtoupper($obj->code) ? $key : $obj->$value);
|
||||||
} elseif ($value == 'label' && $tabname[$id] == 'c_type_fees') {
|
} elseif ($value == 'label' && $tabname[$id] == 'c_type_fees') {
|
||||||
$langs->load('trips');
|
$langs->load('trips');
|
||||||
$key = $langs->trans(strtoupper($obj->code));
|
$key = $langs->trans(strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != strtoupper($obj->code) ? $key : $obj->$value);
|
||||||
} elseif ($value == 'region_id' || $value == 'country_id') {
|
} elseif ($value == 'region_id' || $value == 'country_id') {
|
||||||
$showfield = 0;
|
$showfield = 0;
|
||||||
} elseif ($value == 'unicode') {
|
} elseif ($value == 'unicode') {
|
||||||
$valuetoshow = $langs->getCurrencySymbol($obj->code, 1);
|
$valuetoshow = $langs->getCurrencySymbol($obj->code, 1);
|
||||||
} elseif ($value == 'label' && $tabname[GETPOST("id", 'int')] == 'c_units') {
|
} elseif ($value == 'label' && $tabname[GETPOST("id", 'int')] == 'c_units') {
|
||||||
$langs->load("products");
|
$langs->load("products");
|
||||||
$valuetoshow = $langs->trans($obj->{$value});
|
$valuetoshow = $langs->trans($obj->$value);
|
||||||
} elseif ($value == 'short_label' && $tabname[GETPOST("id", 'int')] == 'c_units') {
|
} elseif ($value == 'short_label' && $tabname[GETPOST("id", 'int')] == 'c_units') {
|
||||||
$langs->load("products");
|
$langs->load("products");
|
||||||
$valuetoshow = $langs->trans($obj->{$value});
|
$valuetoshow = $langs->trans($obj->$value);
|
||||||
} elseif (($value == 'unit') && ($tabname[$id] == 'c_paper_format')) {
|
} elseif (($value == 'unit') && ($tabname[$id] == 'c_paper_format')) {
|
||||||
$key = $langs->trans('SizeUnit'.strtolower($obj->unit));
|
$key = $langs->trans('SizeUnit'.strtolower($obj->unit));
|
||||||
$valuetoshow = ($obj->code && $key != 'SizeUnit'.strtolower($obj->unit) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != 'SizeUnit'.strtolower($obj->unit) ? $key : $obj->$value);
|
||||||
} elseif ($value == 'localtax1' || $value == 'localtax2') {
|
} elseif ($value == 'localtax1' || $value == 'localtax2') {
|
||||||
$class = "center";
|
$class = "center";
|
||||||
} elseif ($value == 'localtax1_type') {
|
} elseif ($value == 'localtax1_type') {
|
||||||
@ -2357,7 +2357,7 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '')
|
|||||||
|
|
||||||
foreach ($fieldlist as $field => $value) {
|
foreach ($fieldlist as $field => $value) {
|
||||||
if ($value == 'entity') {
|
if ($value == 'entity') {
|
||||||
$withentity = $obj->{$value};
|
$withentity = $obj->$value;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -31,6 +31,8 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
|||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->load("admin");
|
$langs->load("admin");
|
||||||
|
|
||||||
|
$action = GETPOST('action', 'aZ09');
|
||||||
|
|
||||||
if (!$user->admin) {
|
if (!$user->admin) {
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
}
|
}
|
||||||
@ -41,6 +43,7 @@ if (!$user->admin) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// set
|
// set
|
||||||
|
$reg = array();
|
||||||
if (preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) {
|
if (preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) {
|
||||||
$code = $reg[1];
|
$code = $reg[1];
|
||||||
if (dolibarr_set_const($db, $code, 1, 'chaine', 0, '', $conf->entity) > 0) {
|
if (dolibarr_set_const($db, $code, 1, 'chaine', 0, '', $conf->entity) > 0) {
|
||||||
@ -67,6 +70,8 @@ if (preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) {
|
|||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
$form = new Form($db);
|
||||||
|
|
||||||
$help_url = '';
|
$help_url = '';
|
||||||
llxHeader('', $langs->trans("ECMSetup"), $help_url);
|
llxHeader('', $langs->trans("ECMSetup"), $help_url);
|
||||||
|
|
||||||
@ -81,26 +86,21 @@ print dol_get_fiche_head($head, 'ecm', '', -1, '');
|
|||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td>'.$langs->trans("Description").'</td>';
|
print '<td>'.$langs->trans("Description").'</td>';
|
||||||
print '<td class="center" width="20"> </td>';
|
print '<td class="center" width="100px">'.$langs->trans("Value").'</td>'."\n";
|
||||||
print '<td class="center" width="100">'.$langs->trans("Value").'</td>'."\n";
|
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
$form = new Form($db);
|
|
||||||
|
|
||||||
// Mail required for members
|
// Mail required for members
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>'.$langs->trans("ECMAutoTree").'</td>';
|
print '<td>'.$langs->trans("ECMAutoTree").'</td>';
|
||||||
print '<td class="center" width="20"> </td>';
|
print '<td class="center">';
|
||||||
|
|
||||||
print '<td class="center" width="100">';
|
|
||||||
if ($conf->use_javascript_ajax) {
|
if ($conf->use_javascript_ajax) {
|
||||||
print ajax_constantonoff('ECM_AUTO_TREE_ENABLED');
|
print ajax_constantonoff('ECM_AUTO_TREE_HIDEN', null, null, 1);
|
||||||
} else {
|
} else {
|
||||||
if (empty($conf->global->ECM_AUTO_TREE_ENABLED)) {
|
if (empty($conf->global->ECM_AUTO_TREE_HIDEN)) {
|
||||||
print '<a href="'.$_SERVER['PHP_SELF'].'?action=set_ECM_AUTO_TREE_ENABLED&token='.newToken().'">'.img_picto($langs->trans("Disabled"), 'off').'</a>';
|
print '<a href="'.$_SERVER['PHP_SELF'].'?action=set_ECM_AUTO_TREE_HIDEN&token='.newToken().'">'.img_picto($langs->trans("Enabled"), 'on').'</a>';
|
||||||
} elseif (!empty($conf->global->USER_MAIL_REQUIRED)) {
|
} else {
|
||||||
print '<a href="'.$_SERVER['PHP_SELF'].'?action=del_ECM_AUTO_TREE_ENABLED&token='.newToken().'">'.img_picto($langs->trans("Enabled"), 'on').'</a>';
|
print '<a href="'.$_SERVER['PHP_SELF'].'?action=del_ECM_AUTO_TREE_HIDEN&token='.newToken().'">'.img_picto($langs->trans("Disabled"), 'off').'</a>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|||||||
@ -86,10 +86,10 @@ if ($cancel) {
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconstorder = GETPOST('maskconstorder', 'alpha');
|
$maskconstorder = GETPOST('maskconstorder', 'aZ09');
|
||||||
$maskorder = GETPOST('maskorder', 'alpha');
|
$maskorder = GETPOST('maskorder', 'alpha');
|
||||||
|
|
||||||
if ($maskconstorder) {
|
if ($maskconstorder && preg_match('/_MASK$/', $maskconstorder)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstorder, $maskorder, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstorder, $maskorder, 'chaine', 0, '', $conf->entity);
|
||||||
if (!($res > 0)) {
|
if (!($res > 0)) {
|
||||||
$error++;
|
$error++;
|
||||||
|
|||||||
@ -62,9 +62,9 @@ if (empty($conf->global->EXPEDITION_ADDON_NUMBER)) {
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconst = GETPOST('maskconstexpedition', 'alpha');
|
$maskconst = GETPOST('maskconstexpedition', 'aZ09');
|
||||||
$maskvalue = GETPOST('maskexpedition', 'alpha');
|
$maskvalue = GETPOST('maskexpedition', 'alpha');
|
||||||
if (!empty($maskconst)) {
|
if (!empty($maskconst) && preg_match('/_MASK$/', $maskconst)) {
|
||||||
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -58,9 +58,9 @@ $type = 'expensereport';
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconst = GETPOST('maskconst', 'alpha');
|
$maskconst = GETPOST('maskconst', 'aZ09');
|
||||||
$maskvalue = GETPOST('maskvalue', 'alpha');
|
$maskvalue = GETPOST('maskvalue', 'alpha');
|
||||||
if ($maskconst) {
|
if ($maskconst && preg_match('/_MASK$/', $maskconst)) {
|
||||||
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -58,24 +58,24 @@ $type = 'invoice';
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconstinvoice = GETPOST('maskconstinvoice', 'alpha');
|
$maskconstinvoice = GETPOST('maskconstinvoice', 'aZ09');
|
||||||
$maskconstreplacement = GETPOST('maskconstreplacement', 'alpha');
|
$maskconstreplacement = GETPOST('maskconstreplacement', 'aZ09');
|
||||||
$maskconstcredit = GETPOST('maskconstcredit', 'alpha');
|
$maskconstcredit = GETPOST('maskconstcredit', 'aZ09');
|
||||||
$maskconstdeposit = GETPOST('maskconstdeposit', 'alpha');
|
$maskconstdeposit = GETPOST('maskconstdeposit', 'aZ09');
|
||||||
$maskinvoice = GETPOST('maskinvoice', 'alpha');
|
$maskinvoice = GETPOST('maskinvoice', 'alpha');
|
||||||
$maskreplacement = GETPOST('maskreplacement', 'alpha');
|
$maskreplacement = GETPOST('maskreplacement', 'alpha');
|
||||||
$maskcredit = GETPOST('maskcredit', 'alpha');
|
$maskcredit = GETPOST('maskcredit', 'alpha');
|
||||||
$maskdeposit = GETPOST('maskdeposit', 'alpha');
|
$maskdeposit = GETPOST('maskdeposit', 'alpha');
|
||||||
if ($maskconstinvoice) {
|
if ($maskconstinvoice && preg_match('/_MASK_/', $maskconstinvoice)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstinvoice, $maskinvoice, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstinvoice, $maskinvoice, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
if ($maskconstreplacement) {
|
if ($maskconstreplacement && preg_match('/_MASK_/', $maskconstreplacement)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstreplacement, $maskreplacement, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstreplacement, $maskreplacement, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
if ($maskconstcredit) {
|
if ($maskconstcredit && preg_match('/_MASK_/', $maskconstcredit)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstcredit, $maskcredit, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstcredit, $maskcredit, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
if ($maskconstdeposit) {
|
if ($maskconstdeposit && preg_match('/_MASK_/', $maskconstdeposit)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstdeposit, $maskdeposit, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstdeposit, $maskdeposit, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -58,9 +58,9 @@ $type = 'ficheinter';
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconst = GETPOST('maskconst', 'alpha');
|
$maskconst = GETPOST('maskconst', 'aZ09');
|
||||||
$maskvalue = GETPOST('maskvalue', 'alpha');
|
$maskvalue = GETPOST('maskvalue', 'alpha');
|
||||||
if ($maskconst) {
|
if ($maskconst && preg_match('/_MASK$/', $maskconst)) {
|
||||||
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -58,9 +58,9 @@ if (empty($conf->global->HOLIDAY_ADDON)) {
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconst = GETPOST('maskconstholiday', 'alpha');
|
$maskconst = GETPOST('maskconstholiday', 'aZ09');
|
||||||
$maskvalue = GETPOST('maskholiday', 'alpha');
|
$maskvalue = GETPOST('maskholiday', 'alpha');
|
||||||
if ($maskconst) {
|
if ($maskconst && preg_match('/_MASK$/', $maskconst)) {
|
||||||
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -53,7 +53,7 @@ $label = GETPOST('label', 'alpha');
|
|||||||
$modulepart = GETPOST('modulepart', 'aZ09'); // Used by actions_setmoduleoptions.inc.php
|
$modulepart = GETPOST('modulepart', 'aZ09'); // Used by actions_setmoduleoptions.inc.php
|
||||||
|
|
||||||
$scandir = GETPOST('scan_dir', 'alpha');
|
$scandir = GETPOST('scan_dir', 'alpha');
|
||||||
$type = 'myobject';
|
$type = 'evaluation';
|
||||||
|
|
||||||
$arrayofparameters = array(
|
$arrayofparameters = array(
|
||||||
'HRM_MAXRANK'=>array('type'=>'integer','enabled'=>1),
|
'HRM_MAXRANK'=>array('type'=>'integer','enabled'=>1),
|
||||||
@ -89,11 +89,11 @@ if ($action == 'update') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ($action == 'updateMask') {
|
} elseif ($action == 'updateMask') {
|
||||||
$maskconstorder = GETPOST('maskconstorder', 'alpha');
|
$maskconst = GETPOST('maskconstEvaluation', 'aZ09');
|
||||||
$maskorder = GETPOST('maskorder', 'alpha');
|
$maskvalue = GETPOST('maskEvaluation', 'alpha');
|
||||||
|
|
||||||
if ($maskconstorder) {
|
if ($maskconst && preg_match('/_MASK$/', $maskconst)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstorder, $maskorder, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
|
||||||
if (!($res > 0)) {
|
if (!($res > 0)) {
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
@ -208,10 +208,10 @@ print dol_get_fiche_head($head, 'settings', $langs->trans($page_name), -1, "hrm"
|
|||||||
|
|
||||||
$moduledir = 'hrm';
|
$moduledir = 'hrm';
|
||||||
$myTmpObjects = array();
|
$myTmpObjects = array();
|
||||||
$myTmpObjects['evaluation'] = array('includerefgeneration'=>1, 'includedocgeneration'=>0);
|
$myTmpObjects['evaluation'] = array('label'=>'Evaluation', 'includerefgeneration'=>1, 'includedocgeneration'=>0);
|
||||||
|
|
||||||
foreach ($myTmpObjects as $myTmpObjectKey => $myTmpObjectArray) {
|
foreach ($myTmpObjects as $myTmpObjectKey => $myTmpObjectArray) {
|
||||||
if ($myTmpObjectKey == 'MyObject') {
|
if ($myTmpObjectKey != $type) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ($myTmpObjectArray['includerefgeneration']) {
|
if ($myTmpObjectArray['includerefgeneration']) {
|
||||||
@ -220,7 +220,7 @@ foreach ($myTmpObjects as $myTmpObjectKey => $myTmpObjectArray) {
|
|||||||
*/
|
*/
|
||||||
$setupnotempty++;
|
$setupnotempty++;
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("NumberingModules", $myTmpObjectKey), '', '');
|
print load_fiche_titre($langs->trans("NumberingModules").' ('.$myTmpObjectArray['label'].')', '', '');
|
||||||
|
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
@ -491,16 +491,16 @@ if ($action == 'edit') {
|
|||||||
|
|
||||||
if ($val['type'] == 'textarea') {
|
if ($val['type'] == 'textarea') {
|
||||||
print '<textarea class="flat" name="' . $constname . '" id="' . $constname . '" cols="50" rows="5" wrap="soft">' . "\n";
|
print '<textarea class="flat" name="' . $constname . '" id="' . $constname . '" cols="50" rows="5" wrap="soft">' . "\n";
|
||||||
print $conf->global->{$constname};
|
print getDolGlobalString($constname);
|
||||||
print "</textarea>\n";
|
print "</textarea>\n";
|
||||||
} elseif ($val['type'] == 'integer') {
|
} elseif ($val['type'] == 'integer') {
|
||||||
print '<input class="flat" name="' . $constname . '" id="' . $constname . '" value="' . $conf->global->$constname . '" type="number" step="1" min="0" max="50" >' . "\n";
|
print '<input class="flat" name="' . $constname . '" id="' . $constname . '" value="' . getDolGlobalString($constname) . '" type="number" step="1" min="0" max="50" >' . "\n";
|
||||||
} elseif ($val['type'] == 'html') {
|
} elseif ($val['type'] == 'html') {
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
|
||||||
$doleditor = new DolEditor($constname, $conf->global->{$constname}, '', 160, 'dolibarr_notes', '', false, false, isModEnabled('fckeditor'), ROWS_5, '90%');
|
$doleditor = new DolEditor($constname, getDolGlobalString($constname), '', 160, 'dolibarr_notes', '', false, false, isModEnabled('fckeditor'), ROWS_5, '90%');
|
||||||
$doleditor->Create();
|
$doleditor->Create();
|
||||||
} elseif ($val['type'] == 'yesno') {
|
} elseif ($val['type'] == 'yesno') {
|
||||||
print $form->selectyesno($constname, $conf->global->{$constname}, 1);
|
print $form->selectyesno($constname, getDolGlobalString($constname), 1);
|
||||||
} elseif (preg_match('/emailtemplate:/', $val['type'])) {
|
} elseif (preg_match('/emailtemplate:/', $val['type'])) {
|
||||||
include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
|
include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
|
||||||
$formmail = new FormMail($db);
|
$formmail = new FormMail($db);
|
||||||
@ -575,9 +575,9 @@ if ($action == 'edit') {
|
|||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
|
|
||||||
if ($val['type'] == 'textarea') {
|
if ($val['type'] == 'textarea') {
|
||||||
print dol_nl2br($conf->global->{$constname});
|
print dol_nl2br(getDolGlobalString($constname));
|
||||||
} elseif ($val['type']== 'html') {
|
} elseif ($val['type']== 'html') {
|
||||||
print $conf->global->{$constname};
|
print getDolGlobalString($constname);
|
||||||
} elseif ($val['type'] == 'yesno') {
|
} elseif ($val['type'] == 'yesno') {
|
||||||
print ajax_constantonoff($constname);
|
print ajax_constantonoff($constname);
|
||||||
} elseif (preg_match('/emailtemplate:/', $val['type'])) {
|
} elseif (preg_match('/emailtemplate:/', $val['type'])) {
|
||||||
@ -586,14 +586,14 @@ if ($action == 'edit') {
|
|||||||
|
|
||||||
$tmp = explode(':', $val['type']);
|
$tmp = explode(':', $val['type']);
|
||||||
|
|
||||||
$template = $formmail->getEMailTemplate($db, $tmp[1], $user, $langs, $conf->global->{$constname});
|
$template = $formmail->getEMailTemplate($db, $tmp[1], $user, $langs, getDolGlobalString($constname));
|
||||||
if ($template<0) {
|
if ($template<0) {
|
||||||
setEventMessages(null, $formmail->errors, 'errors');
|
setEventMessages(null, $formmail->errors, 'errors');
|
||||||
}
|
}
|
||||||
print $langs->trans($template->label);
|
print $langs->trans($template->label);
|
||||||
} elseif (preg_match('/category:/', $val['type'])) {
|
} elseif (preg_match('/category:/', $val['type'])) {
|
||||||
$c = new Categorie($db);
|
$c = new Categorie($db);
|
||||||
$result = $c->fetch($conf->global->{$constname});
|
$result = $c->fetch(getDolGlobalString($constname));
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessages(null, $c->errors, 'errors');
|
setEventMessages(null, $c->errors, 'errors');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -69,11 +69,11 @@ if (!$user->admin) {
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconstorder = GETPOST('maskconstorder', 'alpha');
|
$maskconst = GETPOST('maskconst', 'aZ09');
|
||||||
$maskorder = GETPOST('maskorder', 'alpha');
|
$maskorder = GETPOST('maskorder', 'alpha');
|
||||||
|
|
||||||
if ($maskconstorder) {
|
if ($maskconst && preg_match('/_MASK$/', $maskconst)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstorder, $maskorder, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconst, $maskorder, 'chaine', 0, '', $conf->entity);
|
||||||
if (!($res > 0)) {
|
if (!($res > 0)) {
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
@ -209,14 +209,14 @@ if ($action == 'edit') {
|
|||||||
|
|
||||||
if ($val['type'] == 'textarea') {
|
if ($val['type'] == 'textarea') {
|
||||||
print '<textarea class="flat" name="' . $constname . '" id="' . $constname . '" cols="50" rows="5" wrap="soft">' . "\n";
|
print '<textarea class="flat" name="' . $constname . '" id="' . $constname . '" cols="50" rows="5" wrap="soft">' . "\n";
|
||||||
print $conf->global->{$constname};
|
print getDolGlobalString($constname);
|
||||||
print "</textarea>\n";
|
print "</textarea>\n";
|
||||||
} elseif ($val['type'] == 'html') {
|
} elseif ($val['type'] == 'html') {
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
|
||||||
$doleditor = new DolEditor($constname, $conf->global->{$constname}, '', 160, 'dolibarr_notes', '', false, false, isModEnabled('fckeditor'), ROWS_5, '90%');
|
$doleditor = new DolEditor($constname, getDolGlobalString($constname), '', 160, 'dolibarr_notes', '', false, false, isModEnabled('fckeditor'), ROWS_5, '90%');
|
||||||
$doleditor->Create();
|
$doleditor->Create();
|
||||||
} elseif ($val['type'] == 'yesno') {
|
} elseif ($val['type'] == 'yesno') {
|
||||||
print $form->selectyesno($constname, $conf->global->{$constname}, 1);
|
print $form->selectyesno($constname, getDolGlobalString($constname), 1);
|
||||||
} elseif (preg_match('/emailtemplate:/', $val['type'])) {
|
} elseif (preg_match('/emailtemplate:/', $val['type'])) {
|
||||||
include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
|
include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
|
||||||
$formmail = new FormMail($db);
|
$formmail = new FormMail($db);
|
||||||
@ -275,9 +275,9 @@ if ($action == 'edit') {
|
|||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
|
|
||||||
if ($val['type'] == 'textarea') {
|
if ($val['type'] == 'textarea') {
|
||||||
print dol_nl2br($conf->global->{$constname});
|
print dol_nl2br(getDolGlobalString($constname));
|
||||||
} elseif ($val['type']== 'html') {
|
} elseif ($val['type']== 'html') {
|
||||||
print $conf->global->{$constname};
|
print getDolGlobalString($constname);
|
||||||
} elseif ($val['type'] == 'yesno') {
|
} elseif ($val['type'] == 'yesno') {
|
||||||
print ajax_constantonoff($constname);
|
print ajax_constantonoff($constname);
|
||||||
} elseif (preg_match('/emailtemplate:/', $val['type'])) {
|
} elseif (preg_match('/emailtemplate:/', $val['type'])) {
|
||||||
@ -286,7 +286,7 @@ if ($action == 'edit') {
|
|||||||
|
|
||||||
$tmp = explode(':', $val['type']);
|
$tmp = explode(':', $val['type']);
|
||||||
|
|
||||||
$template = $formmail->getEMailTemplate($db, $tmp[1], $user, $langs, $conf->global->{$constname});
|
$template = $formmail->getEMailTemplate($db, $tmp[1], $user, $langs, getDolGlobalString($constname));
|
||||||
if ($template<0) {
|
if ($template<0) {
|
||||||
setEventMessages(null, $formmail->errors, 'errors');
|
setEventMessages(null, $formmail->errors, 'errors');
|
||||||
}
|
}
|
||||||
@ -304,17 +304,17 @@ if ($action == 'edit') {
|
|||||||
}
|
}
|
||||||
print '<div class="select2-container-multi-dolibarr" style="width: 90%;"><ul class="select2-choices-dolibarr">' . implode(' ', $toprint) . '</ul></div>';
|
print '<div class="select2-container-multi-dolibarr" style="width: 90%;"><ul class="select2-choices-dolibarr">' . implode(' ', $toprint) . '</ul></div>';
|
||||||
} elseif (preg_match('/thirdparty_type/', $val['type'])) {
|
} elseif (preg_match('/thirdparty_type/', $val['type'])) {
|
||||||
if ($conf->global->{$constname}==2) {
|
if (getDolGlobalString($constname)==2) {
|
||||||
print $langs->trans("Prospect");
|
print $langs->trans("Prospect");
|
||||||
} elseif ($conf->global->{$constname}==3) {
|
} elseif (getDolGlobalString($constname)==3) {
|
||||||
print $langs->trans("ProspectCustomer");
|
print $langs->trans("ProspectCustomer");
|
||||||
} elseif ($conf->global->{$constname}==1) {
|
} elseif (getDolGlobalInt($constname)==1) {
|
||||||
print $langs->trans("Customer");
|
print $langs->trans("Customer");
|
||||||
} elseif ($conf->global->{$constname}==0) {
|
} elseif (getDolGlobalInt($constname)==0) {
|
||||||
print $langs->trans("NorProspectNorCustomer");
|
print $langs->trans("NorProspectNorCustomer");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print $conf->global->{$constname};
|
print getDolGlobalString($constname);
|
||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -69,6 +69,7 @@ $search_type_template = GETPOST('search_type_template', 'alpha');
|
|||||||
$search_lang = GETPOST('search_lang', 'alpha');
|
$search_lang = GETPOST('search_lang', 'alpha');
|
||||||
$search_fk_user = GETPOST('search_fk_user', 'intcomma');
|
$search_fk_user = GETPOST('search_fk_user', 'intcomma');
|
||||||
$search_topic = GETPOST('search_topic', 'alpha');
|
$search_topic = GETPOST('search_topic', 'alpha');
|
||||||
|
$search_module = GETPOST('search_module', 'alpha');
|
||||||
|
|
||||||
$acts = array();
|
$acts = array();
|
||||||
$actl = array();
|
$actl = array();
|
||||||
@ -108,7 +109,7 @@ $tabname[25] = MAIN_DB_PREFIX."c_email_templates";
|
|||||||
|
|
||||||
// Nom des champs en resultat de select pour affichage du dictionnaire
|
// Nom des champs en resultat de select pour affichage du dictionnaire
|
||||||
$tabfield = array();
|
$tabfield = array();
|
||||||
$tabfield[25] = "label,lang,type_template,fk_user,private,position,topic,joinfiles,content";
|
$tabfield[25] = "label,lang,type_template,fk_user,private,position,module,topic,joinfiles,content";
|
||||||
if (!empty($conf->global->MAIN_EMAIL_TEMPLATES_FOR_OBJECT_LINES)) {
|
if (!empty($conf->global->MAIN_EMAIL_TEMPLATES_FOR_OBJECT_LINES)) {
|
||||||
$tabfield[25] .= ',content_lines';
|
$tabfield[25] .= ',content_lines';
|
||||||
}
|
}
|
||||||
@ -290,6 +291,7 @@ if (empty($reshook)) {
|
|||||||
$search_lang = '';
|
$search_lang = '';
|
||||||
$search_fk_user = '';
|
$search_fk_user = '';
|
||||||
$search_topic = '';
|
$search_topic = '';
|
||||||
|
$search_module = '';
|
||||||
$toselect = array();
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
@ -598,6 +600,9 @@ if ($search_lang) {
|
|||||||
if ($search_fk_user != '' && $search_fk_user != '-1') {
|
if ($search_fk_user != '' && $search_fk_user != '-1') {
|
||||||
$sql .= natural_search('fk_user', $search_fk_user, 2);
|
$sql .= natural_search('fk_user', $search_fk_user, 2);
|
||||||
}
|
}
|
||||||
|
if ($search_module) {
|
||||||
|
$sql .= natural_search('module', $search_module);
|
||||||
|
}
|
||||||
if ($search_topic) {
|
if ($search_topic) {
|
||||||
$sql .= natural_search('topic', $search_topic);
|
$sql .= natural_search('topic', $search_topic);
|
||||||
}
|
}
|
||||||
@ -703,6 +708,9 @@ if ($action == 'create') {
|
|||||||
$valuetoshow = ucfirst($fieldlist[$field]); // Par defaut
|
$valuetoshow = ucfirst($fieldlist[$field]); // Par defaut
|
||||||
$valuetoshow = $langs->trans($valuetoshow); // try to translate
|
$valuetoshow = $langs->trans($valuetoshow); // try to translate
|
||||||
$align = "left";
|
$align = "left";
|
||||||
|
if ($fieldlist[$field] == 'module') {
|
||||||
|
$valuetoshow = '';
|
||||||
|
}
|
||||||
if ($fieldlist[$field] == 'fk_user') {
|
if ($fieldlist[$field] == 'fk_user') {
|
||||||
$valuetoshow = $langs->trans("Owner");
|
$valuetoshow = $langs->trans("Owner");
|
||||||
}
|
}
|
||||||
@ -802,9 +810,9 @@ if ($action == 'create') {
|
|||||||
$fieldsforcontent = array('topic', 'joinfiles', 'content', 'content_lines');
|
$fieldsforcontent = array('topic', 'joinfiles', 'content', 'content_lines');
|
||||||
}
|
}
|
||||||
foreach ($fieldsforcontent as $tmpfieldlist) {
|
foreach ($fieldsforcontent as $tmpfieldlist) {
|
||||||
print '<tr class="impair nodrag nodrop nohover"><td colspan="7" class="nobottom">';
|
print '<tr class="impair nodrag nodrop nohover"><td colspan="8" class="nobottom">';
|
||||||
|
|
||||||
// Label
|
// Topic of email
|
||||||
if ($tmpfieldlist == 'topic') {
|
if ($tmpfieldlist == 'topic') {
|
||||||
print '<strong>'.$form->textwithpicto($langs->trans("Topic"), $tabhelp[$id][$tmpfieldlist], 1, 'help', '', 0, 2, $tmpfieldlist).'</strong> ';
|
print '<strong>'.$form->textwithpicto($langs->trans("Topic"), $tabhelp[$id][$tmpfieldlist], 1, 'help', '', 0, 2, $tmpfieldlist).'</strong> ';
|
||||||
}
|
}
|
||||||
@ -882,6 +890,9 @@ if ($search_type_template != '-1') {
|
|||||||
if ($search_fk_user > 0) {
|
if ($search_fk_user > 0) {
|
||||||
$param .= '&search_fk_user='.urlencode($search_fk_user);
|
$param .= '&search_fk_user='.urlencode($search_fk_user);
|
||||||
}
|
}
|
||||||
|
if ($search_module) {
|
||||||
|
$param .= '&search_module='.urlencode($search_module);
|
||||||
|
}
|
||||||
if ($search_topic) {
|
if ($search_topic) {
|
||||||
$param .= '&search_topic='.urlencode($search_topic);
|
$param .= '&search_topic='.urlencode($search_topic);
|
||||||
}
|
}
|
||||||
@ -909,7 +920,9 @@ if ($num > $listlimit) {
|
|||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
|
|
||||||
foreach ($fieldlist as $field => $value) {
|
foreach ($fieldlist as $field => $value) {
|
||||||
if ($value == 'label') {
|
if ($value == 'module') {
|
||||||
|
print '<td class="liste_titre"><input type="text" name="search_module" class="maxwidth75" value="'.dol_escape_htmltag($search_module).'"></td>';
|
||||||
|
} elseif ($value == 'label') {
|
||||||
print '<td class="liste_titre"><input type="text" name="search_label" class="maxwidth200" value="'.dol_escape_htmltag($search_label).'"></td>';
|
print '<td class="liste_titre"><input type="text" name="search_label" class="maxwidth200" value="'.dol_escape_htmltag($search_label).'"></td>';
|
||||||
} elseif ($value == 'lang') {
|
} elseif ($value == 'lang') {
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
@ -917,7 +930,7 @@ foreach ($fieldlist as $field => $value) {
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
} elseif ($value == 'fk_user') {
|
} elseif ($value == 'fk_user') {
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
print $form->select_dolusers($search_fk_user, 'search_fk_user', 1, null, 0, ($user->admin ? '' : 'hierarchyme'), null, 0, 0, 0, '', 0, '', 'maxwidth125', 1);
|
print $form->select_dolusers($search_fk_user, 'search_fk_user', 1, null, 0, ($user->admin ? '' : 'hierarchyme'), null, 0, 0, 0, '', 0, '', 'maxwidth100', 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
} elseif ($value == 'topic') {
|
} elseif ($value == 'topic') {
|
||||||
print '<td class="liste_titre"><input type="text" name="search_topic" value="'.dol_escape_htmltag($search_topic).'"></td>';
|
print '<td class="liste_titre"><input type="text" name="search_topic" value="'.dol_escape_htmltag($search_topic).'"></td>';
|
||||||
@ -958,6 +971,9 @@ foreach ($fieldlist as $field => $value) {
|
|||||||
*/
|
*/
|
||||||
$valuetoshow = ucfirst($fieldlist[$field]); // By defaut
|
$valuetoshow = ucfirst($fieldlist[$field]); // By defaut
|
||||||
$valuetoshow = $langs->trans($valuetoshow); // try to translate
|
$valuetoshow = $langs->trans($valuetoshow); // try to translate
|
||||||
|
if ($fieldlist[$field] == 'module') {
|
||||||
|
$align = 'tdoverflowmax100';
|
||||||
|
}
|
||||||
if ($fieldlist[$field] == 'fk_user') {
|
if ($fieldlist[$field] == 'fk_user') {
|
||||||
$valuetoshow = $langs->trans("Owner");
|
$valuetoshow = $langs->trans("Owner");
|
||||||
}
|
}
|
||||||
@ -1056,7 +1072,7 @@ if ($num) {
|
|||||||
if ($showfield) {
|
if ($showfield) {
|
||||||
// Show line for topic, joinfiles and content
|
// Show line for topic, joinfiles and content
|
||||||
print '</tr><tr class="oddeven" nohover tr-'.$tmpfieldlist.'-'.$rowid.' ">';
|
print '</tr><tr class="oddeven" nohover tr-'.$tmpfieldlist.'-'.$rowid.' ">';
|
||||||
print '<td colspan="8">';
|
print '<td colspan="9">';
|
||||||
if ($tmpfieldlist == 'topic') {
|
if ($tmpfieldlist == 'topic') {
|
||||||
print '<strong>'.$form->textwithpicto($langs->trans("Topic"), $tabhelp[$id][$tmpfieldlist], 1, 'help', '', 0, 2, $tmpfieldlist).'</strong> ';
|
print '<strong>'.$form->textwithpicto($langs->trans("Topic"), $tabhelp[$id][$tmpfieldlist], 1, 'help', '', 0, 2, $tmpfieldlist).'</strong> ';
|
||||||
print '<input type="text" class="flat minwidth500" name="'.$tmpfieldlist.'-'.$rowid.'" value="'.(!empty($obj->{$tmpfieldlist}) ? $obj->{$tmpfieldlist} : '').'">';
|
print '<input type="text" class="flat minwidth500" name="'.$tmpfieldlist.'-'.$rowid.'" value="'.(!empty($obj->{$tmpfieldlist}) ? $obj->{$tmpfieldlist} : '').'">';
|
||||||
@ -1072,7 +1088,6 @@ if ($num) {
|
|||||||
if (empty($conf->global->FCKEDITOR_ENABLE_MAIL)) {
|
if (empty($conf->global->FCKEDITOR_ENABLE_MAIL)) {
|
||||||
$okforextended = false;
|
$okforextended = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$doleditor = new DolEditor($tmpfieldlist.'-'.$rowid, (!empty($obj->{$tmpfieldlist}) ? $obj->{$tmpfieldlist} : ''), '', 500, 'dolibarr_mailings', 'In', 0, $acceptlocallinktomedia, $okforextended, ROWS_6, '90%');
|
$doleditor = new DolEditor($tmpfieldlist.'-'.$rowid, (!empty($obj->{$tmpfieldlist}) ? $obj->{$tmpfieldlist} : ''), '', 500, 'dolibarr_mailings', 'In', 0, $acceptlocallinktomedia, $okforextended, ROWS_6, '90%');
|
||||||
print $doleditor->Create(1);
|
print $doleditor->Create(1);
|
||||||
}
|
}
|
||||||
@ -1134,7 +1149,8 @@ if ($num) {
|
|||||||
$align = "";
|
$align = "";
|
||||||
$class = "tddict";
|
$class = "tddict";
|
||||||
$title = '';
|
$title = '';
|
||||||
$valuetoshow = $obj->{$fieldlist[$field]};
|
$tmpvar = $fieldlist[$field];
|
||||||
|
$valuetoshow = $obj->$tmpvar;
|
||||||
if ($value == 'label' || $value == 'topic') {
|
if ($value == 'label' || $value == 'topic') {
|
||||||
if ($langs->trans($valuetoshow) != $valuetoshow) {
|
if ($langs->trans($valuetoshow) != $valuetoshow) {
|
||||||
$valuetoshow = $langs->trans($valuetoshow);
|
$valuetoshow = $langs->trans($valuetoshow);
|
||||||
@ -1272,29 +1288,31 @@ $db->close();
|
|||||||
*/
|
*/
|
||||||
function fieldList($fieldlist, $obj = '', $tabname = '', $context = '')
|
function fieldList($fieldlist, $obj = '', $tabname = '', $context = '')
|
||||||
{
|
{
|
||||||
global $conf, $langs, $user, $db;
|
global $langs, $user, $db;
|
||||||
global $form;
|
global $form;
|
||||||
global $elementList;
|
global $elementList;
|
||||||
|
|
||||||
$formadmin = new FormAdmin($db);
|
$formadmin = new FormAdmin($db);
|
||||||
|
|
||||||
foreach ($fieldlist as $field => $value) {
|
foreach ($fieldlist as $field => $value) {
|
||||||
if ($value == 'fk_user') {
|
if ($value == 'module') {
|
||||||
|
print '<td></td>';
|
||||||
|
} elseif ($value == 'fk_user') {
|
||||||
print '<td>';
|
print '<td>';
|
||||||
if ($user->admin) {
|
if ($user->admin) {
|
||||||
print $form->select_dolusers(empty($obj->{$value}) ? '' : $obj->{$value}, 'fk_user', 1, null, 0, ($user->admin ? '' : 'hierarchyme'), null, 0, 0, 0, '', 0, '', 'minwidth150 maxwidth200');
|
print $form->select_dolusers(empty($obj->$value) ? '' : $obj->$value, 'fk_user', 1, null, 0, ($user->admin ? '' : 'hierarchyme'), null, 0, 0, 0, '', 0, '', 'minwidth75 maxwidth100');
|
||||||
} else {
|
} else {
|
||||||
if ($context == 'add') { // I am not admin and we show the add form
|
if ($context == 'add') { // I am not admin and we show the add form
|
||||||
print $user->getNomUrl(1); // Me
|
print $user->getNomUrl(1); // Me
|
||||||
$forcedvalue = $user->id;
|
$forcedvalue = $user->id;
|
||||||
} else {
|
} else {
|
||||||
if ($obj && !empty($obj->{$value}) && $obj->{$value} > 0) {
|
if ($obj && !empty($obj->$value) && $obj->$value > 0) {
|
||||||
$fuser = new User($db);
|
$fuser = new User($db);
|
||||||
$fuser->fetch($obj->{$value});
|
$fuser->fetch($obj->$value);
|
||||||
print $fuser->getNomUrl(1);
|
print $fuser->getNomUrl(1);
|
||||||
$forcedvalue = $fuser->id;
|
$forcedvalue = $fuser->id;
|
||||||
} else {
|
} else {
|
||||||
$forcedvalue = $obj->{$value};
|
$forcedvalue = $obj->$value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$keyname = $value;
|
$keyname = $value;
|
||||||
@ -1308,7 +1326,7 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '')
|
|||||||
if ($context == 'edit') {
|
if ($context == 'edit') {
|
||||||
$selectedlang = $obj->lang;
|
$selectedlang = $obj->lang;
|
||||||
}
|
}
|
||||||
print $formadmin->select_language($selectedlang, 'langcode', 0, null, 1, 0, 0, 'maxwidth150');
|
print $formadmin->select_language($selectedlang, 'langcode', 0, null, 1, 0, 0, 'maxwidth100');
|
||||||
} else {
|
} else {
|
||||||
if (!empty($obj->lang)) {
|
if (!empty($obj->lang)) {
|
||||||
print $obj->lang.' - '.$langs->trans('Language_'.$obj->lang);
|
print $obj->lang.' - '.$langs->trans('Language_'.$obj->lang);
|
||||||
@ -1328,7 +1346,7 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '')
|
|||||||
print '<input type="hidden" name="type_template" value="'.$obj->type_template.'">';
|
print '<input type="hidden" name="type_template" value="'.$obj->type_template.'">';
|
||||||
print $obj->type_template;
|
print $obj->type_template;
|
||||||
} else {
|
} else {
|
||||||
print $form->selectarray('type_template', $elementList, (!empty($obj->type_template) ? $obj->type_template:''), 1, 0, 0, '', 0, 0, 0, '', 'minwidth150', 1, '', 0, 1);
|
print $form->selectarray('type_template', $elementList, (!empty($obj->type_template) ? $obj->type_template:''), 1, 0, 0, '', 0, 0, 0, '', 'minwidth75 maxwidth125', 1, '', 0, 1);
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
} elseif ($context == 'add' && in_array($value, array('topic', 'joinfiles', 'content', 'content_lines'))) {
|
} elseif ($context == 'add' && in_array($value, array('topic', 'joinfiles', 'content', 'content_lines'))) {
|
||||||
|
|||||||
@ -372,13 +372,13 @@ if ($mode == 'feature') {
|
|||||||
if (count($objMod->depends)) {
|
if (count($objMod->depends)) {
|
||||||
$text .= join(',', $objMod->depends);
|
$text .= join(',', $objMod->depends);
|
||||||
} else {
|
} else {
|
||||||
$text .= $langs->trans("None");
|
$text .= '<span class="opacitymedium">'.$langs->trans("None").'</span>';
|
||||||
}
|
}
|
||||||
$text .= '<br><strong>'.$langs->trans("RequiredBy").':</strong> ';
|
$text .= '<br><strong>'.$langs->trans("RequiredBy").':</strong> ';
|
||||||
if (count($objMod->requiredby)) {
|
if (count($objMod->requiredby)) {
|
||||||
$text .= join(',', $objMod->requiredby);
|
$text .= join(',', $objMod->requiredby);
|
||||||
} else {
|
} else {
|
||||||
$text .= $langs->trans("None");
|
$text .= '<span class="opacitymedium">'.$langs->trans("None").'</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$text .= '<br><br>';
|
$text .= '<br><br>';
|
||||||
@ -395,7 +395,7 @@ if ($mode == 'feature') {
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$text .= $langs->trans("No");
|
$text .= '<span class="opacitymedium">'.$langs->trans("No").'</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$text .= '<br>';
|
$text .= '<br>';
|
||||||
@ -408,7 +408,7 @@ if ($mode == 'feature') {
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$text .= $langs->trans("No");
|
$text .= '<span class="opacitymedium">'.$langs->trans("No").'</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$text .= '<br>';
|
$text .= '<br>';
|
||||||
@ -418,7 +418,7 @@ if ($mode == 'feature') {
|
|||||||
if (dol_is_file($filedata)) {
|
if (dol_is_file($filedata)) {
|
||||||
$text .= $langs->trans("Yes").' <span class="opacitymedium">('.$moduledir.'/sql/data.sql)</span>';
|
$text .= $langs->trans("Yes").' <span class="opacitymedium">('.$moduledir.'/sql/data.sql)</span>';
|
||||||
} else {
|
} else {
|
||||||
$text .= $langs->trans("No");
|
$text .= '<span class="opacitymedium">'.$langs->trans("No").'</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$text .= '<br>';
|
$text .= '<br>';
|
||||||
@ -437,7 +437,7 @@ if ($mode == 'feature') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$text .= $langs->trans("No");
|
$text .= '<span class="opacitymedium">'.$langs->trans("No").'</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$text .= '<br>';
|
$text .= '<br>';
|
||||||
@ -446,7 +446,7 @@ if ($mode == 'feature') {
|
|||||||
if (isset($objMod->module_parts) && isset($objMod->module_parts['models']) && $objMod->module_parts['models']) {
|
if (isset($objMod->module_parts) && isset($objMod->module_parts['models']) && $objMod->module_parts['models']) {
|
||||||
$text .= $langs->trans("Yes");
|
$text .= $langs->trans("Yes");
|
||||||
} else {
|
} else {
|
||||||
$text .= $langs->trans("No");
|
$text .= '<span class="opacitymedium">'.$langs->trans("No").'</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$text .= '<br>';
|
$text .= '<br>';
|
||||||
@ -455,7 +455,7 @@ if ($mode == 'feature') {
|
|||||||
if (isset($objMod->module_parts) && isset($objMod->module_parts['substitutions']) && $objMod->module_parts['substitutions']) {
|
if (isset($objMod->module_parts) && isset($objMod->module_parts['substitutions']) && $objMod->module_parts['substitutions']) {
|
||||||
$text .= $langs->trans("Yes");
|
$text .= $langs->trans("Yes");
|
||||||
} else {
|
} else {
|
||||||
$text .= $langs->trans("No");
|
$text .= '<span class="opacitymedium">'.$langs->trans("No").'</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$text .= '<br>';
|
$text .= '<br>';
|
||||||
@ -468,7 +468,7 @@ if ($mode == 'feature') {
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$text .= $langs->trans("No");
|
$text .= '<span class="opacitymedium">'.$langs->trans("No").'</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$text .= '<br>';
|
$text .= '<br>';
|
||||||
@ -502,7 +502,7 @@ if ($mode == 'feature') {
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$text .= $langs->trans("No");
|
$text .= '<span class="opacitymedium">'.$langs->trans("No").'</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$text .= '<br>';
|
$text .= '<br>';
|
||||||
@ -531,7 +531,7 @@ if ($mode == 'feature') {
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$text .= $langs->trans("No");
|
$text .= '<span class="opacitymedium">'.$langs->trans("No").'</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$text .= '<br>';
|
$text .= '<br>';
|
||||||
@ -544,7 +544,7 @@ if ($mode == 'feature') {
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$text .= $langs->trans("No");
|
$text .= '<span class="opacitymedium">'.$langs->trans("No").'</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$text .= '<br>';
|
$text .= '<br>';
|
||||||
@ -553,7 +553,7 @@ if ($mode == 'feature') {
|
|||||||
if (isset($objMod->menu) && !empty($objMod->menu)) { // objMod can be an array or just an int 1
|
if (isset($objMod->menu) && !empty($objMod->menu)) { // objMod can be an array or just an int 1
|
||||||
$text .= $langs->trans("Yes");
|
$text .= $langs->trans("Yes");
|
||||||
} else {
|
} else {
|
||||||
$text .= $langs->trans("No");
|
$text .= '<span class="opacitymedium">'.$langs->trans("No").'</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$text .= '<br>';
|
$text .= '<br>';
|
||||||
@ -566,7 +566,7 @@ if ($mode == 'feature') {
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$text .= $langs->trans("No");
|
$text .= '<span class="opacitymedium">'.$langs->trans("No").'</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$text .= '<br>';
|
$text .= '<br>';
|
||||||
@ -579,13 +579,13 @@ if ($mode == 'feature') {
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$text .= $langs->trans("No");
|
$text .= '<span class="opacitymedium">'.$langs->trans("No").'</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$text .= '<br>';
|
$text .= '<br>';
|
||||||
|
|
||||||
$text .= '<br><strong>'.$langs->trans("AddOtherPagesOrServices").':</strong> ';
|
$text .= '<br><strong>'.$langs->trans("AddOtherPagesOrServices").':</strong> ';
|
||||||
$text .= $langs->trans("DetectionNotPossible");
|
$text .= '<span class="opacitymedium">'.$langs->trans("DetectionNotPossible").'</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -594,7 +594,7 @@ if ($mode == 'changelog') {
|
|||||||
if ($changelog) {
|
if ($changelog) {
|
||||||
$text .= '<div class="moduledesclong">'.$changelog.'<div>';
|
$text .= '<div class="moduledesclong">'.$changelog.'<div>';
|
||||||
} else {
|
} else {
|
||||||
$text .= '<div class="moduledesclong">'.$langs->trans("NotAvailable").'</div>';
|
$text .= '<div class="moduledesclong"><span class="opacitymedium">'.$langs->trans("NotAvailable").'</span></div>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -844,10 +844,10 @@ if ($mode == 'common' || $mode == 'commonkanban') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif (preg_match('/^([^@]+)@([^@]+)$/i', $objMod->config_page_url, $regs)) {
|
} elseif (preg_match('/^([^@]+)@([^@]+)$/i', (string) $objMod->config_page_url, $regs)) {
|
||||||
$codetoconfig .= '<a class="valignmiddle" href="'.dol_buildpath('/'.$regs[2].'/admin/'.$regs[1], 1).'?save_lastsearch_values=1&backtopage='.urlencode($backtourl).'" title="'.$langs->trans("Setup").'">'.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"', false, 0, 0, '', 'fa-15').'</a>';
|
$codetoconfig .= '<a class="valignmiddle" href="'.dol_buildpath('/'.$regs[2].'/admin/'.$regs[1], 1).'?save_lastsearch_values=1&backtopage='.urlencode($backtourl).'" title="'.$langs->trans("Setup").'">'.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"', false, 0, 0, '', 'fa-15').'</a>';
|
||||||
} else {
|
} else {
|
||||||
$codetoconfig .= '<a class="valignmiddle" href="'.$objMod->config_page_url.'?save_lastsearch_values=1&backtopage='.urlencode($backtourl).'" title="'.$langs->trans("Setup").'">'.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"', false, 0, 0, '', 'fa-15').'</a>';
|
$codetoconfig .= '<a class="valignmiddle" href="'.((string) $objMod->config_page_url).'?save_lastsearch_values=1&backtopage='.urlencode($backtourl).'" title="'.$langs->trans("Setup").'">'.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"', false, 0, 0, '', 'fa-15').'</a>';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$codetoconfig .= img_picto($langs->trans("NothingToSetup"), "setup", 'class="opacitytransp" style="padding-right: 6px"', false, 0, 0, '', 'fa-15');
|
$codetoconfig .= img_picto($langs->trans("NothingToSetup"), "setup", 'class="opacitytransp" style="padding-right: 6px"', false, 0, 0, '', 'fa-15');
|
||||||
@ -1075,7 +1075,7 @@ if ($mode == 'marketplace') {
|
|||||||
<div id="listing-content">
|
<div id="listing-content">
|
||||||
<table summary="list_of_modules" id="list_of_modules" class="productlist centpercent">
|
<table summary="list_of_modules" id="list_of_modules" class="productlist centpercent">
|
||||||
<tbody id="listOfModules">
|
<tbody id="listOfModules">
|
||||||
<?php echo $dolistore->get_products(!empty($categorie) ? $categorie: ''); ?>
|
<?php echo $dolistore->get_products(); ?>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
@ -1216,10 +1216,10 @@ if ($mode == 'deploy') {
|
|||||||
print '<script type="text/javascript">
|
print '<script type="text/javascript">
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
jQuery("#fileinstall").on("change", function() {
|
jQuery("#fileinstall").on("change", function() {
|
||||||
if(this.files[0].size > '.($maxmin * 1024).'){
|
if(this.files[0].size > '.($maxmin * 1024).') {
|
||||||
alert("'.dol_escape_js($langs->trans("ErrorFileSizeTooLarge")).'");
|
alert("'.dol_escape_js($langs->trans("ErrorFileSizeTooLarge")).'");
|
||||||
this.value = "";
|
this.value = "";
|
||||||
};
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>'."\n";
|
</script>'."\n";
|
||||||
|
|||||||
@ -52,10 +52,10 @@ $type = 'mrp';
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconstmrp = GETPOST('maskconstMo', 'alpha');
|
$maskconstmrp = GETPOST('maskconstMo', 'aZ09');
|
||||||
$maskmrp = GETPOST('maskMo', 'alpha');
|
$maskmrp = GETPOST('maskMo', 'alpha');
|
||||||
|
|
||||||
if ($maskconstmrp) {
|
if ($maskconstmrp && preg_match('/_MASK$/', $maskconstmrp)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstmrp, $maskmrp, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstmrp, $maskmrp, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -134,7 +134,8 @@ if ($action == 'add_currency') {
|
|||||||
dolibarr_set_const($db, 'MULTICURRENCY_APP_SOURCE', GETPOST('MULTICURRENCY_APP_SOURCE', 'alpha'));
|
dolibarr_set_const($db, 'MULTICURRENCY_APP_SOURCE', GETPOST('MULTICURRENCY_APP_SOURCE', 'alpha'));
|
||||||
//dolibarr_set_const($db, 'MULTICURRENCY_ALTERNATE_SOURCE', GETPOST('MULTICURRENCY_ALTERNATE_SOURCE', 'alpha'));
|
//dolibarr_set_const($db, 'MULTICURRENCY_ALTERNATE_SOURCE', GETPOST('MULTICURRENCY_ALTERNATE_SOURCE', 'alpha'));
|
||||||
} else {
|
} else {
|
||||||
$result = MultiCurrency::syncRates($conf->global->MULTICURRENCY_APP_ID);
|
$multiurrency = new MultiCurrency($db);
|
||||||
|
$result = $multiurrency->syncRates(getDolGlobalString('MULTICURRENCY_APP_ID'));
|
||||||
if ($result > 0) {
|
if ($result > 0) {
|
||||||
setEventMessages($langs->trans("CurrencyRateSyncSucceed"), null, "mesgs");
|
setEventMessages($langs->trans("CurrencyRateSyncSucceed"), null, "mesgs");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -285,7 +285,7 @@ if (count($listinsetup) > 0) {
|
|||||||
// Delete
|
// Delete
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$label = preg_replace('/_NAME$/', '', $keyforsupportedoauth2array);
|
$label = preg_replace('/_NAME$/', '', $keyforsupportedoauth2array);
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=delete&token='.newToken().'&provider='.$keyforprovider.'&label='.$label.'">';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=delete&token='.newToken().'&provider='.urlencode($keyforprovider).'&label='.urlencode($label).'">';
|
||||||
print img_picto('', 'delete');
|
print img_picto('', 'delete');
|
||||||
print '</a>';
|
print '</a>';
|
||||||
|
|
||||||
@ -298,7 +298,8 @@ if (count($listinsetup) > 0) {
|
|||||||
$redirect_uri = $urlwithroot.'/core/modules/oauth/'.$supportedoauth2array[$keyforsupportedoauth2array]['callbackfile'].'_oauthcallback.php';
|
$redirect_uri = $urlwithroot.'/core/modules/oauth/'.$supportedoauth2array[$keyforsupportedoauth2array]['callbackfile'].'_oauthcallback.php';
|
||||||
print '<tr class="oddeven value">';
|
print '<tr class="oddeven value">';
|
||||||
print '<td>'.$langs->trans("UseTheFollowingUrlAsRedirectURI").'</td>';
|
print '<td>'.$langs->trans("UseTheFollowingUrlAsRedirectURI").'</td>';
|
||||||
print '<td><input style="width: 80%" type"text" name="uri'.$keyforsupportedoauth2array.'" value="'.$redirect_uri.'" disabled>';
|
print '<td><input style="width: 80%" type="text" name="uri'.$keyforsupportedoauth2array.'" id="uri'.$keyforsupportedoauth2array.$keyforprovider.'" value="'.$redirect_uri.'" disabled>';
|
||||||
|
print ajax_autoselect('uri'.$keyforsupportedoauth2array.$keyforprovider);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td></td>';
|
print '<td></td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
@ -306,7 +307,7 @@ if (count($listinsetup) > 0) {
|
|||||||
if ($keyforsupportedoauth2array == 'OAUTH_OTHER_NAME') {
|
if ($keyforsupportedoauth2array == 'OAUTH_OTHER_NAME') {
|
||||||
print '<tr class="oddeven value">';
|
print '<tr class="oddeven value">';
|
||||||
print '<td>'.$langs->trans("URLOfServiceForAuthorization").'</td>';
|
print '<td>'.$langs->trans("URLOfServiceForAuthorization").'</td>';
|
||||||
print '<td><input style="width: 80%" type"text" name="'.$key[3].'" value="'.getDolGlobalString($key[3]).'" >';
|
print '<td><input style="width: 80%" type="text" name="'.$key[3].'" value="'.getDolGlobalString($key[3]).'" >';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td></td>';
|
print '<td></td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|||||||
@ -213,7 +213,13 @@ if ($mode == 'setup' && $user->admin) {
|
|||||||
$urltocheckperms = '';
|
$urltocheckperms = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
$urltorenew .= '&keyforprovider='.urlencode($keyforprovider);
|
if ($urltorenew) {
|
||||||
|
$urltorenew .= '&keyforprovider='.urlencode($keyforprovider);
|
||||||
|
}
|
||||||
|
if ($urltodelete) {
|
||||||
|
$urltodelete .= '&keyforprovider='.urlencode($keyforprovider);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Show value of token
|
// Show value of token
|
||||||
$tokenobj = null;
|
$tokenobj = null;
|
||||||
|
|||||||
@ -51,9 +51,9 @@ if (empty($conf->global->PAYMENT_ADDON)) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconstpayment = GETPOST('maskconstpayment', 'alpha');
|
$maskconstpayment = GETPOST('maskconstpayment', 'aZ09');
|
||||||
$maskpayment = GETPOST('maskpayment', 'alpha');
|
$maskpayment = GETPOST('maskpayment', 'alpha');
|
||||||
if ($maskconstpayment) {
|
if ($maskconstpayment && preg_match('/_MASK$/', $maskconstpayment)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstpayment, $maskpayment, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstpayment, $maskpayment, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -58,9 +58,9 @@ include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
|||||||
|
|
||||||
$error = 0;
|
$error = 0;
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconstpropal = GETPOST('maskconstpropal', 'alpha');
|
$maskconstpropal = GETPOST('maskconstpropal', 'aZ09');
|
||||||
$maskpropal = GETPOST('maskpropal', 'alpha');
|
$maskpropal = GETPOST('maskpropal', 'alpha');
|
||||||
if ($maskconstpropal) {
|
if ($maskconstpropal && preg_match('/_MASK$/', $maskconstpropal)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstpropal, $maskpropal, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstpropal, $maskpropal, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -65,9 +65,9 @@ if (empty($conf->global->RECEPTION_ADDON_NUMBER)) {
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconst = GETPOST('maskconstreception', 'alpha');
|
$maskconst = GETPOST('maskconstreception', 'aZ09');
|
||||||
$maskvalue = GETPOST('maskreception', 'alpha');
|
$maskvalue = GETPOST('maskreception', 'alpha');
|
||||||
if (!empty($maskconst)) {
|
if (!empty($maskconst) && preg_match('/_MASK$/', $maskconst)) {
|
||||||
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -64,10 +64,10 @@ include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
|||||||
|
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconststocktransfer = GETPOST('maskconststocktransfer', 'alpha');
|
$maskconststocktransfer = GETPOST('maskconststocktransfer', 'aZ09');
|
||||||
$maskstocktransfer = GETPOST('maskStockTransfer', 'alpha');
|
$maskstocktransfer = GETPOST('maskStockTransfer', 'alpha');
|
||||||
|
|
||||||
if ($maskconststocktransfer) {
|
if ($maskconststocktransfer && preg_match('/_MASK$/', $maskconststocktransfer)) {
|
||||||
$res = dolibarr_set_const($db, $maskconststocktransfer, $maskstocktransfer, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconststocktransfer, $maskstocktransfer, 'chaine', 0, '', $conf->entity);
|
||||||
if ($res <= 0) $error++;
|
if ($res <= 0) $error++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -38,10 +38,6 @@ require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
|
|||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("admin", "other", "orders"));
|
$langs->loadLangs(array("admin", "other", "orders"));
|
||||||
|
|
||||||
if (!$user->admin) {
|
|
||||||
accessforbidden();
|
|
||||||
}
|
|
||||||
|
|
||||||
$type = GETPOST('type', 'alpha');
|
$type = GETPOST('type', 'alpha');
|
||||||
$value = GETPOST('value', 'alpha');
|
$value = GETPOST('value', 'alpha');
|
||||||
$action = GETPOST('action', 'aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
@ -52,6 +48,12 @@ $scandir = GETPOST('scan_dir', 'alpha');
|
|||||||
$specimenthirdparty = new Societe($db);
|
$specimenthirdparty = new Societe($db);
|
||||||
$specimenthirdparty->initAsSpecimen();
|
$specimenthirdparty->initAsSpecimen();
|
||||||
|
|
||||||
|
$error = 0;
|
||||||
|
|
||||||
|
if (!$user->admin) {
|
||||||
|
accessforbidden();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
@ -60,20 +62,20 @@ $specimenthirdparty->initAsSpecimen();
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconstinvoice = GETPOST('maskconstinvoice', 'alpha');
|
$maskconstinvoice = GETPOST('maskconstinvoice', 'aZ09');
|
||||||
$maskconstcredit = GETPOST('maskconstcredit', 'alpha');
|
$maskconstcredit = GETPOST('maskconstcredit', 'aZ09');
|
||||||
$maskconstdeposit = GETPOST('maskconstdeposit', 'alpha');
|
$maskconstdeposit = GETPOST('maskconstdeposit', 'aZ09');
|
||||||
$maskinvoice = GETPOST('maskinvoice', 'alpha');
|
$maskinvoice = GETPOST('maskinvoice', 'alpha');
|
||||||
$maskcredit = GETPOST('maskcredit', 'alpha');
|
$maskcredit = GETPOST('maskcredit', 'alpha');
|
||||||
$maskdeposit = GETPOST('maskdeposit', 'alpha');
|
$maskdeposit = GETPOST('maskdeposit', 'alpha');
|
||||||
|
|
||||||
if ($maskconstinvoice) {
|
if ($maskconstinvoice && preg_match('/_MASK$/', $maskconstinvoice)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstinvoice, $maskinvoice, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstinvoice, $maskinvoice, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
if ($maskconstcredit) {
|
if ($maskconstcredit && preg_match('/_MASK$/', $maskconstcredit)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstcredit, $maskcredit, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstcredit, $maskcredit, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
if ($maskconstdeposit) {
|
if ($maskconstdeposit && preg_match('/_MASK$/', $maskconstdeposit)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstdeposit, $maskdeposit, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstdeposit, $maskdeposit, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -61,10 +61,10 @@ $specimenthirdparty->initAsSpecimen();
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconstorder = GETPOST('maskconstorder', 'alpha');
|
$maskconstorder = GETPOST('maskconstorder', 'aZ09');
|
||||||
$maskvalue = GETPOST('maskorder', 'alpha');
|
$maskvalue = GETPOST('maskorder', 'alpha');
|
||||||
|
|
||||||
if ($maskconstorder) {
|
if ($maskconstorder && preg_match('/_MASK$/', $maskconstorder)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstorder, $maskvalue, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstorder, $maskvalue, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -52,9 +52,9 @@ $type = 'supplier_payment';
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconstsupplierpayment = GETPOST('maskconstsupplierpayment', 'alpha');
|
$maskconstsupplierpayment = GETPOST('maskconstsupplierpayment', 'aZ09');
|
||||||
$masksupplierpayment = GETPOST('masksupplierpayment', 'alpha');
|
$masksupplierpayment = GETPOST('masksupplierpayment', 'alpha');
|
||||||
if ($maskconstsupplierpayment) {
|
if ($maskconstsupplierpayment && preg_match('/_MASK$/', $maskconstsupplierpayment)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstsupplierpayment, $masksupplierpayment, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstsupplierpayment, $masksupplierpayment, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -55,9 +55,9 @@ $error = 0;
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconstsupplier_proposal = GETPOST('maskconstsupplier_proposal', 'alpha');
|
$maskconstsupplier_proposal = GETPOST('maskconstsupplier_proposal', 'aZ09');
|
||||||
$masksupplier_proposal = GETPOST('masksupplier_proposal', 'alpha');
|
$masksupplier_proposal = GETPOST('masksupplier_proposal', 'alpha');
|
||||||
if ($maskconstsupplier_proposal) {
|
if ($maskconstsupplier_proposal && preg_match('/_MASK$/', $maskconstsupplier_proposal)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstsupplier_proposal, $masksupplier_proposal, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstsupplier_proposal, $masksupplier_proposal, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -115,9 +115,6 @@ if ($action == 'set') {
|
|||||||
|
|
||||||
// Check configuration
|
// Check configuration
|
||||||
foreach ($activeModules as $modulename) {
|
foreach ($activeModules as $modulename) {
|
||||||
/**
|
|
||||||
* @var LogHandler
|
|
||||||
*/
|
|
||||||
$module = new $modulename;
|
$module = new $modulename;
|
||||||
$error = $module->checkConfiguration();
|
$error = $module->checkConfiguration();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -113,7 +113,8 @@ if (!count($listofvars) && !count($listofstatus)) {
|
|||||||
if ($key != $param) {
|
if ($key != $param) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$val2 = ${$val['var']};
|
$tmpvar = $val['var'];
|
||||||
|
$val2 = ${$tmpvar};
|
||||||
$text = 'Should be in line with value of param <b>'.$val['var'].'</b> thas is <b>'.($val2 ? $val2 : "'' (=".$val['valifempty'].")").'</b>';
|
$text = 'Should be in line with value of param <b>'.$val['var'].'</b> thas is <b>'.($val2 ? $val2 : "'' (=".$val['valifempty'].")").'</b>';
|
||||||
$show = 1;
|
$show = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -264,7 +264,7 @@ $daylight = round($c - $b);
|
|||||||
$val = ($a >= 0 ? '+' : '').$a;
|
$val = ($a >= 0 ? '+' : '').$a;
|
||||||
$val .= ' ('.($a == 'unknown' ? 'unknown' : ($a >= 0 ? '+' : '').($a * 3600)).')';
|
$val .= ' ('.($a == 'unknown' ? 'unknown' : ($a >= 0 ? '+' : '').($a * 3600)).')';
|
||||||
$val .= ' '.getServerTimeZoneString();
|
$val .= ' '.getServerTimeZoneString();
|
||||||
$val .= ' '.$langs->trans("DaylingSavingTime").': '.($daylight === 'unknown' ? 'unknown' : ($a == $c ?yn($daylight) : yn(0).($daylight ? ' ('.$langs->trans('YesInSummer').')' : '')));
|
$val .= ' '.$langs->trans("DaylingSavingTime").': '.(is_null($daylight) ? 'unknown' : ($a == $c ?yn($daylight) : yn(0).($daylight ? ' ('.$langs->trans('YesInSummer').')' : '')));
|
||||||
print $form->textwithtooltip($val, $txt, 2, 1, img_info(''));
|
print $form->textwithtooltip($val, $txt, 2, 1, img_info(''));
|
||||||
print '</td></tr>'."\n"; // value defined in http://fr3.php.net/manual/en/timezones.europe.php
|
print '</td></tr>'."\n"; // value defined in http://fr3.php.net/manual/en/timezones.europe.php
|
||||||
print '<tr class="oddeven"><td> => '.$langs->trans("CurrentHour").'</td><td>'.dol_print_date(dol_now('gmt'), 'dayhour', 'tzserver').'</td></tr>'."\n";
|
print '<tr class="oddeven"><td> => '.$langs->trans("CurrentHour").'</td><td>'.dol_print_date(dol_now('gmt'), 'dayhour', 'tzserver').'</td></tr>'."\n";
|
||||||
|
|||||||
@ -47,7 +47,7 @@ $scandir = GETPOST('scandir', 'alpha');
|
|||||||
$type = 'ticket';
|
$type = 'ticket';
|
||||||
|
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
$reg = array();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
@ -56,10 +56,10 @@ $error = 0;
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconstticket = GETPOST('maskconstticket', 'alpha');
|
$maskconstticket = GETPOST('maskconstticket', 'aZ09');
|
||||||
$maskticket = GETPOST('maskticket', 'alpha');
|
$maskticket = GETPOST('maskticket', 'alpha');
|
||||||
|
|
||||||
if ($maskconstticket) {
|
if ($maskconstticket && preg_match('/_MASK$/', $maskconstticket)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstticket, $maskticket, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconstticket, $maskticket, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -484,7 +484,7 @@ foreach ($dirmodels as $reldir) {
|
|||||||
// Preview
|
// Preview
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
if ($module->type == 'pdf') {
|
if ($module->type == 'pdf') {
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=specimen&module='.$name.'">'.img_object($langs->trans("Preview"), 'pdf').'</a>';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=specimen&module='.urlencode($name).'">'.img_object($langs->trans("Preview"), 'pdf').'</a>';
|
||||||
} else {
|
} else {
|
||||||
print img_object($langs->trans("PreviewNotAvailable"), 'generic');
|
print img_object($langs->trans("PreviewNotAvailable"), 'generic');
|
||||||
}
|
}
|
||||||
@ -526,7 +526,7 @@ if ($conf->use_javascript_ajax) {
|
|||||||
print ajax_constantonoff('TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND');
|
print ajax_constantonoff('TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND');
|
||||||
} else {
|
} else {
|
||||||
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
|
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
|
||||||
print $formcategory->selectarray("TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND", $arrval, $conf->global->TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND);
|
print $formcategory->selectarray("TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND", $arrval, getDolGlobalString('TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND'));
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
@ -542,7 +542,7 @@ if ($conf->use_javascript_ajax) {
|
|||||||
print ajax_constantonoff('TICKET_AUTO_ASSIGN_USER_CREATE');
|
print ajax_constantonoff('TICKET_AUTO_ASSIGN_USER_CREATE');
|
||||||
} else {
|
} else {
|
||||||
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
|
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
|
||||||
print $formcategory->selectarray("TICKET_AUTO_ASSIGN_USER_CREATE", $arrval, $conf->global->TICKET_AUTO_ASSIGN_USER_CREATE);
|
print $formcategory->selectarray("TICKET_AUTO_ASSIGN_USER_CREATE", $arrval, getDolGlobalString('TICKET_AUTO_ASSIGN_USER_CREATE'));
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
@ -557,7 +557,7 @@ if ($conf->use_javascript_ajax) {
|
|||||||
print ajax_constantonoff('TICKET_NOTIFY_AT_CLOSING');
|
print ajax_constantonoff('TICKET_NOTIFY_AT_CLOSING');
|
||||||
} else {
|
} else {
|
||||||
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
|
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
|
||||||
print $formcategory->selectarray("TICKET_NOTIFY_AT_CLOSING", $arrval, $conf->global->TICKET_NOTIFY_AT_CLOSING);
|
print $formcategory->selectarray("TICKET_NOTIFY_AT_CLOSING", $arrval, getDolGlobalString('TICKET_NOTIFY_AT_CLOSING'));
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
@ -569,7 +569,7 @@ if (isModEnabled('product')) {
|
|||||||
$htmlname = "product_category_id";
|
$htmlname = "product_category_id";
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("TicketChooseProductCategory").'</td>';
|
print '<tr class="oddeven"><td>'.$langs->trans("TicketChooseProductCategory").'</td>';
|
||||||
print '<td class="left">';
|
print '<td class="left">';
|
||||||
$formcategory->selectProductCategory($conf->global->TICKET_PRODUCT_CATEGORY, $htmlname);
|
$formcategory->selectProductCategory(getDolGlobalString('TICKET_PRODUCT_CATEGORY'), $htmlname);
|
||||||
if ($conf->use_javascript_ajax) {
|
if ($conf->use_javascript_ajax) {
|
||||||
print ajax_combobox('select_'.$htmlname);
|
print ajax_combobox('select_'.$htmlname);
|
||||||
}
|
}
|
||||||
@ -583,7 +583,7 @@ if (isModEnabled('product')) {
|
|||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>'.$langs->trans("TicketsDelayBeforeFirstAnswer")."</td>";
|
print '<td>'.$langs->trans("TicketsDelayBeforeFirstAnswer")."</td>";
|
||||||
print '<td class="left">
|
print '<td class="left">
|
||||||
<input type="number" value="'.$conf->global->TICKET_DELAY_BEFORE_FIRST_RESPONSE.'" name="delay_first_response" class="width50">
|
<input type="number" value="'.getDolGlobalString('TICKET_DELAY_BEFORE_FIRST_RESPONSE').'" name="delay_first_response" class="width50">
|
||||||
</td>';
|
</td>';
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
print $formcategory->textwithpicto('', $langs->trans("TicketsDelayBeforeFirstAnswerHelp"), 1, 'help');
|
print $formcategory->textwithpicto('', $langs->trans("TicketsDelayBeforeFirstAnswerHelp"), 1, 'help');
|
||||||
@ -593,7 +593,7 @@ print '</tr>';
|
|||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>'.$langs->trans("TicketsDelayBetweenAnswers")."</td>";
|
print '<td>'.$langs->trans("TicketsDelayBetweenAnswers")."</td>";
|
||||||
print '<td class="left">
|
print '<td class="left">
|
||||||
<input type="number" value="'.$conf->global->TICKET_DELAY_SINCE_LAST_RESPONSE.'" name="delay_between_responses" class="width50">
|
<input type="number" value="'.getDolGlobalString('TICKET_DELAY_SINCE_LAST_RESPONSE').'" name="delay_between_responses" class="width50">
|
||||||
</td>';
|
</td>';
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
print $formcategory->textwithpicto('', $langs->trans("TicketsDelayBetweenAnswersHelp"), 1, 'help');
|
print $formcategory->textwithpicto('', $langs->trans("TicketsDelayBetweenAnswersHelp"), 1, 'help');
|
||||||
|
|||||||
@ -427,7 +427,7 @@ if ($mode == 'overwrite') {
|
|||||||
print ' ';
|
print ' ';
|
||||||
print '<input type="submit" class="button buttongen button-cancel" name="cancel" value="'.dol_escape_htmltag($langs->trans("Cancel")).'">';
|
print '<input type="submit" class="button buttongen button-cancel" name="cancel" value="'.dol_escape_htmltag($langs->trans("Cancel")).'">';
|
||||||
} else {
|
} else {
|
||||||
print '<a class="reposition editfielda paddingrightonly" href="'.$_SERVER['PHP_SELF'].'?rowid='.$obj->rowid.'&entity='.$obj->entity.'&mode='.urlencode($mode).'&action=edit&token='.newToken().''.((empty($user->entity) && $debug) ? '&debug=1' : '').'">'.img_edit().'</a>';
|
print '<a class="reposition editfielda paddingrightonly" href="'.$_SERVER['PHP_SELF'].'?rowid='.$obj->rowid.'&entity='.$obj->entity.'&mode='.urlencode($mode).'&action=edit&token='.newToken().((empty($user->entity) && $debug) ? '&debug=1' : '').'">'.img_edit().'</a>';
|
||||||
print ' ';
|
print ' ';
|
||||||
print '<a class="reposition" href="'.$_SERVER['PHP_SELF'].'?rowid='.$obj->rowid.'&entity='.$obj->entity.'&mode='.urlencode($mode).'&action=delete&token='.newToken().((empty($user->entity) && $debug) ? '&debug=1' : '').'">'.img_delete().'</a>';
|
print '<a class="reposition" href="'.$_SERVER['PHP_SELF'].'?rowid='.$obj->rowid.'&entity='.$obj->entity.'&mode='.urlencode($mode).'&action=delete&token='.newToken().((empty($user->entity) && $debug) ? '&debug=1' : '').'">'.img_delete().'</a>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -150,10 +150,10 @@ $dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconst = GETPOST('maskconst', 'alpha');
|
$maskconst = GETPOST('maskconst', 'aZ09');
|
||||||
$maskvalue = GETPOST('maskvalue', 'alpha');
|
$maskvalue = GETPOST('maskvalue', 'alpha');
|
||||||
|
|
||||||
if ($maskconst) {
|
if ($maskconst && preg_match('/_MASK$/', $maskconst)) {
|
||||||
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
|
||||||
if (!($res > 0)) {
|
if (!($res > 0)) {
|
||||||
$error++;
|
$error++;
|
||||||
@ -293,14 +293,14 @@ if ($action == 'edit') {
|
|||||||
|
|
||||||
if ($val['type'] == 'textarea') {
|
if ($val['type'] == 'textarea') {
|
||||||
print '<textarea class="flat" name="'.$constname.'" id="'.$constname.'" cols="50" rows="5" wrap="soft">' . "\n";
|
print '<textarea class="flat" name="'.$constname.'" id="'.$constname.'" cols="50" rows="5" wrap="soft">' . "\n";
|
||||||
print $conf->global->{$constname};
|
print getDolGlobalString($constname);
|
||||||
print "</textarea>\n";
|
print "</textarea>\n";
|
||||||
} elseif ($val['type']== 'html') {
|
} elseif ($val['type']== 'html') {
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
|
||||||
$doleditor = new DolEditor($constname, $conf->global->{$constname}, '', 160, 'dolibarr_notes', '', false, false, $conf->fckeditor->enabled, ROWS_5, '90%');
|
$doleditor = new DolEditor($constname, getDolGlobalString($constname), '', 160, 'dolibarr_notes', '', false, false, $conf->fckeditor->enabled, ROWS_5, '90%');
|
||||||
$doleditor->Create();
|
$doleditor->Create();
|
||||||
} elseif ($val['type'] == 'yesno') {
|
} elseif ($val['type'] == 'yesno') {
|
||||||
print $form->selectyesno($constname, $conf->global->{$constname}, 1);
|
print $form->selectyesno($constname, getDolGlobalString($constname), 1);
|
||||||
} elseif (preg_match('/emailtemplate:/', $val['type'])) {
|
} elseif (preg_match('/emailtemplate:/', $val['type'])) {
|
||||||
include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
|
include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
|
||||||
$formmail = new FormMail($db);
|
$formmail = new FormMail($db);
|
||||||
@ -382,9 +382,9 @@ if ($action == 'edit') {
|
|||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
|
|
||||||
if ($val['type'] == 'textarea') {
|
if ($val['type'] == 'textarea') {
|
||||||
print dol_nl2br($conf->global->{$constname});
|
print dol_nl2br(getDolGlobalString($constname));
|
||||||
} elseif ($val['type']== 'html') {
|
} elseif ($val['type']== 'html') {
|
||||||
print $conf->global->{$constname};
|
print getDolGlobalString($constname);
|
||||||
} elseif ($val['type'] == 'yesno') {
|
} elseif ($val['type'] == 'yesno') {
|
||||||
print ajax_constantonoff($constname);
|
print ajax_constantonoff($constname);
|
||||||
} elseif (preg_match('/emailtemplate:/', $val['type'])) {
|
} elseif (preg_match('/emailtemplate:/', $val['type'])) {
|
||||||
@ -393,14 +393,14 @@ if ($action == 'edit') {
|
|||||||
|
|
||||||
$tmp = explode(':', $val['type']);
|
$tmp = explode(':', $val['type']);
|
||||||
|
|
||||||
$template = $formmail->getEMailTemplate($db, $tmp[1], $user, $langs, $conf->global->{$constname});
|
$template = $formmail->getEMailTemplate($db, $tmp[1], $user, $langs, getDolGlobalString($constname));
|
||||||
if ($template<0) {
|
if ($template<0) {
|
||||||
setEventMessages(null, $formmail->errors, 'errors');
|
setEventMessages(null, $formmail->errors, 'errors');
|
||||||
}
|
}
|
||||||
print $langs->trans($template->label);
|
print $langs->trans($template->label);
|
||||||
} elseif (preg_match('/category:/', $val['type'])) {
|
} elseif (preg_match('/category:/', $val['type'])) {
|
||||||
$c = new Categorie($db);
|
$c = new Categorie($db);
|
||||||
$result = $c->fetch($conf->global->{$constname});
|
$result = $c->fetch(getDolGlobalString($constname));
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessages(null, $c->errors, 'errors');
|
setEventMessages(null, $c->errors, 'errors');
|
||||||
} elseif ($result > 0 ) {
|
} elseif ($result > 0 ) {
|
||||||
@ -412,25 +412,25 @@ if ($action == 'edit') {
|
|||||||
print '<div class="select2-container-multi-dolibarr" style="width: 90%;"><ul class="select2-choices-dolibarr">' . implode(' ', $toprint) . '</ul></div>';
|
print '<div class="select2-container-multi-dolibarr" style="width: 90%;"><ul class="select2-choices-dolibarr">' . implode(' ', $toprint) . '</ul></div>';
|
||||||
}
|
}
|
||||||
} elseif (preg_match('/thirdparty_type/', $val['type'])) {
|
} elseif (preg_match('/thirdparty_type/', $val['type'])) {
|
||||||
if ($conf->global->{$constname}==2) {
|
if (getDolGlobalInt($constname)==2) {
|
||||||
print $langs->trans("Prospect");
|
print $langs->trans("Prospect");
|
||||||
} elseif ($conf->global->{$constname}==3) {
|
} elseif (getDolGlobalInt($constname)==3) {
|
||||||
print $langs->trans("ProspectCustomer");
|
print $langs->trans("ProspectCustomer");
|
||||||
} elseif ($conf->global->{$constname}==1) {
|
} elseif (getDolGlobalInt($constname)==1) {
|
||||||
print $langs->trans("Customer");
|
print $langs->trans("Customer");
|
||||||
} elseif ($conf->global->{$constname}==0) {
|
} elseif (getDolGlobalInt($constname)==0) {
|
||||||
print $langs->trans("NorProspectNorCustomer");
|
print $langs->trans("NorProspectNorCustomer");
|
||||||
}
|
}
|
||||||
} elseif ($val['type'] == 'product') {
|
} elseif ($val['type'] == 'product') {
|
||||||
$product = new Product($db);
|
$product = new Product($db);
|
||||||
$resprod = $product->fetch($conf->global->{$constname});
|
$resprod = $product->fetch(getDolGlobalInt($constname));
|
||||||
if ($resprod > 0) {
|
if ($resprod > 0) {
|
||||||
print $product->ref;
|
print $product->ref;
|
||||||
} elseif ($resprod < 0) {
|
} elseif ($resprod < 0) {
|
||||||
setEventMessages(null, $object->errors, "errors");
|
setEventMessages(null, $object->errors, "errors");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print $conf->global->{$constname};
|
print getDolGlobalString($constname);
|
||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -63,11 +63,11 @@ if (!$user->admin) {
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconstorder = GETPOST('maskconstWorkstation', 'alpha');
|
$maskconst = GETPOST('maskconstWorkstation', 'aZ09');
|
||||||
$maskorder = GETPOST('maskWorkstation', 'alpha');
|
$maskorder = GETPOST('maskWorkstation', 'alpha');
|
||||||
|
|
||||||
if ($maskconstorder) {
|
if ($maskconst && preg_match('/_MASK$/', $maskconst)) {
|
||||||
$res = dolibarr_set_const($db, $maskconstorder, $maskorder, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconst, $maskorder, 'chaine', 0, '', $conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!($res > 0)) {
|
if (!($res > 0)) {
|
||||||
|
|||||||
@ -319,8 +319,8 @@ class Setup extends DolibarrApi
|
|||||||
/**
|
/**
|
||||||
* Get state by ID.
|
* Get state by ID.
|
||||||
*
|
*
|
||||||
* @param int $id ID of state
|
* @param int $id ID of state
|
||||||
* @return array Array of cleaned object properties
|
* @return Object Object with cleaned properties
|
||||||
*
|
*
|
||||||
* @url GET dictionary/states/{id}
|
* @url GET dictionary/states/{id}
|
||||||
*
|
*
|
||||||
@ -334,8 +334,8 @@ class Setup extends DolibarrApi
|
|||||||
/**
|
/**
|
||||||
* Get state by Code.
|
* Get state by Code.
|
||||||
*
|
*
|
||||||
* @param string $code Code of state
|
* @param string $code Code of state
|
||||||
* @return array Array of cleaned object properties
|
* @return Object Object with cleaned properties
|
||||||
*
|
*
|
||||||
* @url GET dictionary/states/byCode/{code}
|
* @url GET dictionary/states/byCode/{code}
|
||||||
*
|
*
|
||||||
@ -424,10 +424,9 @@ class Setup extends DolibarrApi
|
|||||||
/**
|
/**
|
||||||
* Get country by ID.
|
* Get country by ID.
|
||||||
*
|
*
|
||||||
* @param int $id ID of country
|
* @param int $id ID of country
|
||||||
* @param string $lang Code of the language the name of the
|
* @param string $lang Code of the language the name of the country must be translated to
|
||||||
* country must be translated to
|
* @return Object Object with cleaned properties
|
||||||
* @return array Array of cleaned object properties
|
|
||||||
*
|
*
|
||||||
* @url GET dictionary/countries/{id}
|
* @url GET dictionary/countries/{id}
|
||||||
*
|
*
|
||||||
@ -441,10 +440,9 @@ class Setup extends DolibarrApi
|
|||||||
/**
|
/**
|
||||||
* Get country by Code.
|
* Get country by Code.
|
||||||
*
|
*
|
||||||
* @param string $code Code of country (2 characters)
|
* @param string $code Code of country (2 characters)
|
||||||
* @param string $lang Code of the language the name of the
|
* @param string $lang Code of the language the name of the country must be translated to
|
||||||
* country must be translated to
|
* @return Object Object with cleaned properties
|
||||||
* @return array Array of cleaned object properties
|
|
||||||
*
|
*
|
||||||
* @url GET dictionary/countries/byCode/{code}
|
* @url GET dictionary/countries/byCode/{code}
|
||||||
*
|
*
|
||||||
@ -458,10 +456,9 @@ class Setup extends DolibarrApi
|
|||||||
/**
|
/**
|
||||||
* Get country by Iso.
|
* Get country by Iso.
|
||||||
*
|
*
|
||||||
* @param string $iso ISO of country (3 characters)
|
* @param string $iso ISO of country (3 characters)
|
||||||
* @param string $lang Code of the language the name of the
|
* @param string $lang Code of the language the name of the country must be translated to
|
||||||
* country must be translated to
|
* @return Object Object with cleaned properties
|
||||||
* @return array Array of cleaned object properties
|
|
||||||
*
|
*
|
||||||
* @url GET dictionary/countries/byISO/{iso}
|
* @url GET dictionary/countries/byISO/{iso}
|
||||||
*
|
*
|
||||||
@ -475,9 +472,9 @@ class Setup extends DolibarrApi
|
|||||||
/**
|
/**
|
||||||
* Get state.
|
* Get state.
|
||||||
*
|
*
|
||||||
* @param int $id ID of state
|
* @param int $id ID of state
|
||||||
* @param string $code Code of state
|
* @param string $code Code of state
|
||||||
* @return array Array of cleaned object properties
|
* @return Object Object with cleaned properties
|
||||||
*
|
*
|
||||||
* @throws RestException
|
* @throws RestException
|
||||||
*/
|
*/
|
||||||
@ -498,12 +495,11 @@ class Setup extends DolibarrApi
|
|||||||
/**
|
/**
|
||||||
* Get country.
|
* Get country.
|
||||||
*
|
*
|
||||||
* @param int $id ID of country
|
* @param int $id ID of country
|
||||||
* @param string $code Code of country (2 characters)
|
* @param string $code Code of country (2 characters)
|
||||||
* @param string $iso ISO of country (3 characters)
|
* @param string $iso ISO of country (3 characters)
|
||||||
* @param string $lang Code of the language the name of the
|
* @param string $lang Code of the language the name of the country must be translated to
|
||||||
* country must be translated to
|
* @return Object Object with cleaned properties
|
||||||
* @return array Array of cleaned object properties
|
|
||||||
*
|
*
|
||||||
* @throws RestException
|
* @throws RestException
|
||||||
*/
|
*/
|
||||||
@ -527,12 +523,12 @@ class Setup extends DolibarrApi
|
|||||||
/**
|
/**
|
||||||
* Get the list of delivery times.
|
* Get the list of delivery times.
|
||||||
*
|
*
|
||||||
* @param string $sortfield Sort field
|
* @param string $sortfield Sort field
|
||||||
* @param string $sortorder Sort order
|
* @param string $sortorder Sort order
|
||||||
* @param int $limit Number of items per page
|
* @param int $limit Number of items per page
|
||||||
* @param int $page Page number {@min 0}
|
* @param int $page Page number {@min 0}
|
||||||
* @param int $active Delivery times is active or not {@min 0} {@max 1}
|
* @param int $active Delivery times is active or not {@min 0} {@max 1}
|
||||||
* @param string $sqlfilters SQL criteria to filter with.
|
* @param string $sqlfilters SQL criteria to filter with.
|
||||||
*
|
*
|
||||||
* @url GET dictionary/availability
|
* @url GET dictionary/availability
|
||||||
*
|
*
|
||||||
@ -592,8 +588,8 @@ class Setup extends DolibarrApi
|
|||||||
/**
|
/**
|
||||||
* Clean sensible object datas
|
* Clean sensible object datas
|
||||||
*
|
*
|
||||||
* @param Object $object Object to clean
|
* @param Object $object Object to clean
|
||||||
* @return Object Object with cleaned properties
|
* @return Object Object with cleaned properties
|
||||||
*/
|
*/
|
||||||
protected function _cleanObjectDatas($object)
|
protected function _cleanObjectDatas($object)
|
||||||
{
|
{
|
||||||
@ -1786,8 +1782,8 @@ class Setup extends DolibarrApi
|
|||||||
/**
|
/**
|
||||||
* Get establishment by ID.
|
* Get establishment by ID.
|
||||||
*
|
*
|
||||||
* @param int $id ID of establishment
|
* @param int $id ID of establishment
|
||||||
* @return array Array of cleaned object properties
|
* @return Object Object with cleaned properties
|
||||||
*
|
*
|
||||||
* @url GET establishments/{id}
|
* @url GET establishments/{id}
|
||||||
*
|
*
|
||||||
@ -1813,7 +1809,7 @@ class Setup extends DolibarrApi
|
|||||||
* Note that conf variables that stores security key or password hashes can't be loaded with API.
|
* Note that conf variables that stores security key or password hashes can't be loaded with API.
|
||||||
*
|
*
|
||||||
* @param string $constantname Name of conf variable to get
|
* @param string $constantname Name of conf variable to get
|
||||||
* @return array|mixed Data without useless information
|
* @return string Data without useless information
|
||||||
*
|
*
|
||||||
* @url GET conf/{constantname}
|
* @url GET conf/{constantname}
|
||||||
*
|
*
|
||||||
@ -1825,7 +1821,7 @@ class Setup extends DolibarrApi
|
|||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
if (!DolibarrApiAccess::$user->admin
|
if (!DolibarrApiAccess::$user->admin
|
||||||
&& (empty($conf->global->API_LOGINS_ALLOWED_FOR_CONST_READ) || DolibarrApiAccess::$user->login != $conf->global->API_LOGINS_ALLOWED_FOR_CONST_READ)) {
|
&& (!getDolGlobalString('API_LOGINS_ALLOWED_FOR_CONST_READ') || DolibarrApiAccess::$user->login != getDolGlobalString('API_LOGINS_ALLOWED_FOR_CONST_READ'))) {
|
||||||
throw new RestException(403, 'Error API open to admin users only or to the users with logins defined into constant API_LOGINS_ALLOWED_FOR_CONST_READ');
|
throw new RestException(403, 'Error API open to admin users only or to the users with logins defined into constant API_LOGINS_ALLOWED_FOR_CONST_READ');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1836,7 +1832,7 @@ class Setup extends DolibarrApi
|
|||||||
throw new RestException(403, 'Forbidden. This parameter cant be read with APIs');
|
throw new RestException(403, 'Forbidden. This parameter cant be read with APIs');
|
||||||
}
|
}
|
||||||
|
|
||||||
return $conf->global->$constantname;
|
return getDolGlobalString($constantname);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -389,13 +389,13 @@ if (!empty($reg[1]) && ($reg[1] != 'explorer' || ($reg[2] != '/swagger.json' &&
|
|||||||
$usecompression = (empty($conf->global->API_DISABLE_COMPRESSION) && !empty($_SERVER['HTTP_ACCEPT_ENCODING']));
|
$usecompression = (empty($conf->global->API_DISABLE_COMPRESSION) && !empty($_SERVER['HTTP_ACCEPT_ENCODING']));
|
||||||
$foundonealgorithm = 0;
|
$foundonealgorithm = 0;
|
||||||
if ($usecompression) {
|
if ($usecompression) {
|
||||||
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'br') !== false && is_callable('brotli_compress')) {
|
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'br') !== false && function_exists('brotli_compress')) {
|
||||||
$foundonealgorithm++;
|
$foundonealgorithm++;
|
||||||
}
|
}
|
||||||
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'bz') !== false && is_callable('bzcompress')) {
|
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'bz') !== false && function_exists('bzcompress')) {
|
||||||
$foundonealgorithm++;
|
$foundonealgorithm++;
|
||||||
}
|
}
|
||||||
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false && is_callable('gzencode')) {
|
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false && function_exists('gzencode')) {
|
||||||
$foundonealgorithm++;
|
$foundonealgorithm++;
|
||||||
}
|
}
|
||||||
if (!$foundonealgorithm) {
|
if (!$foundonealgorithm) {
|
||||||
@ -413,13 +413,13 @@ $result = $api->r->handle();
|
|||||||
|
|
||||||
if (Luracast\Restler\Defaults::$returnResponse) {
|
if (Luracast\Restler\Defaults::$returnResponse) {
|
||||||
// We try to compress the data received data
|
// We try to compress the data received data
|
||||||
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'br') !== false && is_callable('brotli_compress')) {
|
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'br') !== false && function_exists('brotli_compress') && defined('BROTLI_TEXT')) {
|
||||||
header('Content-Encoding: br');
|
header('Content-Encoding: br');
|
||||||
$result = brotli_compress($result, 11, BROTLI_TEXT);
|
$result = brotli_compress($result, 11, constant('BROTLI_TEXT'));
|
||||||
} elseif (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'bz') !== false && is_callable('bzcompress')) {
|
} elseif (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'bz') !== false && function_exists('bzcompress')) {
|
||||||
header('Content-Encoding: bz');
|
header('Content-Encoding: bz');
|
||||||
$result = bzcompress($result, 9);
|
$result = bzcompress($result, 9);
|
||||||
} elseif (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false && is_callable('gzencode')) {
|
} elseif (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false && function_exists('gzencode')) {
|
||||||
header('Content-Encoding: gzip');
|
header('Content-Encoding: gzip');
|
||||||
$result = gzencode($result, 9);
|
$result = gzencode($result, 9);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -74,7 +74,7 @@ if ($action == 'updateMask') {
|
|||||||
$maskconst = GETPOST('maskconst', 'alpha');
|
$maskconst = GETPOST('maskconst', 'alpha');
|
||||||
$mask = GETPOST('mask', 'alpha');
|
$mask = GETPOST('mask', 'alpha');
|
||||||
|
|
||||||
if ($maskconst) {
|
if ($maskconst && preg_match('/_MASK$/', $maskconst)) {
|
||||||
$res = dolibarr_set_const($db, $maskconst, $mask, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconst, $mask, 'chaine', 0, '', $conf->entity);
|
||||||
if (!($res > 0)) {
|
if (!($res > 0)) {
|
||||||
$error++;
|
$error++;
|
||||||
@ -473,14 +473,14 @@ if ($action == 'edit') {
|
|||||||
|
|
||||||
if ($val['type'] == 'textarea') {
|
if ($val['type'] == 'textarea') {
|
||||||
print '<textarea class="flat" name="'.$constname.'" id="'.$constname.'" cols="50" rows="5" wrap="soft">' . "\n";
|
print '<textarea class="flat" name="'.$constname.'" id="'.$constname.'" cols="50" rows="5" wrap="soft">' . "\n";
|
||||||
print $conf->global->{$constname};
|
print getDolGlobalString($constname);
|
||||||
print "</textarea>\n";
|
print "</textarea>\n";
|
||||||
} elseif ($val['type']== 'html') {
|
} elseif ($val['type']== 'html') {
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
|
||||||
$doleditor = new DolEditor($constname, $conf->global->{$constname}, '', 160, 'dolibarr_notes', '', false, false, $conf->fckeditor->enabled, ROWS_5, '90%');
|
$doleditor = new DolEditor($constname, getDolGlobalString($constname), '', 160, 'dolibarr_notes', '', false, false, $conf->fckeditor->enabled, ROWS_5, '90%');
|
||||||
$doleditor->Create();
|
$doleditor->Create();
|
||||||
} elseif ($val['type'] == 'yesno') {
|
} elseif ($val['type'] == 'yesno') {
|
||||||
print $form->selectyesno($constname, $conf->global->{$constname}, 1);
|
print $form->selectyesno($constname, getDolGlobalString($constname), 1);
|
||||||
} elseif (preg_match('/emailtemplate:/', $val['type'])) {
|
} elseif (preg_match('/emailtemplate:/', $val['type'])) {
|
||||||
include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
|
include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
|
||||||
$formmail = new FormMail($db);
|
$formmail = new FormMail($db);
|
||||||
@ -500,7 +500,7 @@ if ($action == 'edit') {
|
|||||||
$arrayofmessagename[$modelmail->id] = $langs->trans(preg_replace('/\(|\)/', '', $modelmail->label)) . $moreonlabel;
|
$arrayofmessagename[$modelmail->id] = $langs->trans(preg_replace('/\(|\)/', '', $modelmail->label)) . $moreonlabel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print $form->selectarray($constname, $arrayofmessagename, $conf->global->{$constname}, 'None', 0, 0, '', 0, 0, 0, '', '', 1);
|
print $form->selectarray($constname, $arrayofmessagename, getDolGlobalString($constname), 'None', 0, 0, '', 0, 0, 0, '', '', 1);
|
||||||
} elseif (preg_match('/category:/', $val['type'])) {
|
} elseif (preg_match('/category:/', $val['type'])) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
||||||
@ -508,11 +508,11 @@ if ($action == 'edit') {
|
|||||||
|
|
||||||
$tmp = explode(':', $val['type']);
|
$tmp = explode(':', $val['type']);
|
||||||
print img_picto('', 'category', 'class="pictofixedwidth"');
|
print img_picto('', 'category', 'class="pictofixedwidth"');
|
||||||
print $formother->select_categories($tmp[1], $conf->global->{$constname}, $constname, 0, $langs->trans('CustomersProspectsCategoriesShort'));
|
print $formother->select_categories($tmp[1], getDolGlobalString($constname), $constname, 0, $langs->trans('CustomersProspectsCategoriesShort'));
|
||||||
} elseif (preg_match('/thirdparty_type/', $val['type'])) {
|
} elseif (preg_match('/thirdparty_type/', $val['type'])) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
|
||||||
$formcompany = new FormCompany($db);
|
$formcompany = new FormCompany($db);
|
||||||
print $formcompany->selectProspectCustomerType($conf->global->{$constname}, $constname);
|
print $formcompany->selectProspectCustomerType(getDolGlobalString($constname), $constname);
|
||||||
} elseif ($val['type'] == 'securekey') {
|
} elseif ($val['type'] == 'securekey') {
|
||||||
print '<input required="required" type="text" class="flat" id="'.$constname.'" name="'.$constname.'" value="'.(GETPOST($constname, 'alpha') ?GETPOST($constname, 'alpha') : $conf->global->{$constname}).'" size="40">';
|
print '<input required="required" type="text" class="flat" id="'.$constname.'" name="'.$constname.'" value="'.(GETPOST($constname, 'alpha') ?GETPOST($constname, 'alpha') : $conf->global->{$constname}).'" size="40">';
|
||||||
if (!empty($conf->use_javascript_ajax)) {
|
if (!empty($conf->use_javascript_ajax)) {
|
||||||
@ -524,11 +524,11 @@ if ($action == 'edit') {
|
|||||||
print dolJSToSetRandomPassword($constname, 'generate_token'.$constname);
|
print dolJSToSetRandomPassword($constname, 'generate_token'.$constname);
|
||||||
} elseif ($val['type'] == 'product') {
|
} elseif ($val['type'] == 'product') {
|
||||||
if (isModEnabled("product") || isModEnabled("service")) {
|
if (isModEnabled("product") || isModEnabled("service")) {
|
||||||
$selected = (empty($conf->global->$constname) ? '' : $conf->global->$constname);
|
$selected = getDolGlobalString($constname);
|
||||||
$form->select_produits($selected, $constname, '', 0);
|
$form->select_produits($selected, $constname, '', 0);
|
||||||
}
|
}
|
||||||
} elseif ($val['type'] == 'accountancy_code') {
|
} elseif ($val['type'] == 'accountancy_code') {
|
||||||
$selected = (empty($conf->global->$constname) ? '' : $conf->global->$constname);
|
$selected = getDolGlobalString($constname);
|
||||||
if (isModEnabled('accounting')) {
|
if (isModEnabled('accounting')) {
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formaccounting.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formaccounting.class.php';
|
||||||
$formaccounting = new FormAccounting($db);
|
$formaccounting = new FormAccounting($db);
|
||||||
@ -537,7 +537,7 @@ if ($action == 'edit') {
|
|||||||
print '<input name="' . $constname . '" class="maxwidth200" value="' . dol_escape_htmltag($selected) . '">';
|
print '<input name="' . $constname . '" class="maxwidth200" value="' . dol_escape_htmltag($selected) . '">';
|
||||||
}
|
}
|
||||||
} elseif ($val['type'] == 'accountancy_category') {
|
} elseif ($val['type'] == 'accountancy_category') {
|
||||||
$selected = (empty($conf->global->$constname) ? '' : $conf->global->$constname);
|
$selected = getDolGlobalString($constname);
|
||||||
if (isModEnabled('accounting')) {
|
if (isModEnabled('accounting')) {
|
||||||
print '<input type="text" name="' . $constname . '" list="pcg_type_datalist" value="' . $selected . '">';
|
print '<input type="text" name="' . $constname . '" list="pcg_type_datalist" value="' . $selected . '">';
|
||||||
// autosuggest from existing account types if found
|
// autosuggest from existing account types if found
|
||||||
@ -587,9 +587,9 @@ if ($action == 'edit') {
|
|||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
|
|
||||||
if ($val['type'] == 'textarea') {
|
if ($val['type'] == 'textarea') {
|
||||||
print dol_nl2br($conf->global->{$constname});
|
print dol_nl2br(getDolGlobalString($constname));
|
||||||
} elseif ($val['type']== 'html') {
|
} elseif ($val['type']== 'html') {
|
||||||
print $conf->global->{$constname};
|
print getDolGlobalString($constname);
|
||||||
} elseif ($val['type'] == 'yesno') {
|
} elseif ($val['type'] == 'yesno') {
|
||||||
print ajax_constantonoff($constname);
|
print ajax_constantonoff($constname);
|
||||||
} elseif (preg_match('/emailtemplate:/', $val['type'])) {
|
} elseif (preg_match('/emailtemplate:/', $val['type'])) {
|
||||||
@ -598,14 +598,14 @@ if ($action == 'edit') {
|
|||||||
|
|
||||||
$tmp = explode(':', $val['type']);
|
$tmp = explode(':', $val['type']);
|
||||||
|
|
||||||
$template = $formmail->getEMailTemplate($db, $tmp[1], $user, $langs, $conf->global->{$constname});
|
$template = $formmail->getEMailTemplate($db, $tmp[1], $user, $langs, getDolGlobalString($constname));
|
||||||
if ($template<0) {
|
if ($template<0) {
|
||||||
setEventMessages(null, $formmail->errors, 'errors');
|
setEventMessages(null, $formmail->errors, 'errors');
|
||||||
}
|
}
|
||||||
print $langs->trans($template->label);
|
print $langs->trans($template->label);
|
||||||
} elseif (preg_match('/category:/', $val['type'])) {
|
} elseif (preg_match('/category:/', $val['type'])) {
|
||||||
$c = new Categorie($db);
|
$c = new Categorie($db);
|
||||||
$result = $c->fetch($conf->global->{$constname});
|
$result = $c->fetch(getDolGlobalInt($constname));
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessages(null, $c->errors, 'errors');
|
setEventMessages(null, $c->errors, 'errors');
|
||||||
} elseif ($result > 0 ) {
|
} elseif ($result > 0 ) {
|
||||||
@ -617,18 +617,18 @@ if ($action == 'edit') {
|
|||||||
print '<div class="select2-container-multi-dolibarr" style="width: 90%;"><ul class="select2-choices-dolibarr">' . implode(' ', $toprint) . '</ul></div>';
|
print '<div class="select2-container-multi-dolibarr" style="width: 90%;"><ul class="select2-choices-dolibarr">' . implode(' ', $toprint) . '</ul></div>';
|
||||||
}
|
}
|
||||||
} elseif (preg_match('/thirdparty_type/', $val['type'])) {
|
} elseif (preg_match('/thirdparty_type/', $val['type'])) {
|
||||||
if ($conf->global->{$constname}==2) {
|
if (getDolGlobalInt($constname)==2) {
|
||||||
print $langs->trans("Prospect");
|
print $langs->trans("Prospect");
|
||||||
} elseif ($conf->global->{$constname}==3) {
|
} elseif (getDolGlobalInt($constname)==3) {
|
||||||
print $langs->trans("ProspectCustomer");
|
print $langs->trans("ProspectCustomer");
|
||||||
} elseif ($conf->global->{$constname}==1) {
|
} elseif (getDolGlobalInt($constname)==1) {
|
||||||
print $langs->trans("Customer");
|
print $langs->trans("Customer");
|
||||||
} elseif ($conf->global->{$constname}==0) {
|
} elseif (getDolGlobalInt($constname)==0) {
|
||||||
print $langs->trans("NorProspectNorCustomer");
|
print $langs->trans("NorProspectNorCustomer");
|
||||||
}
|
}
|
||||||
} elseif ($val['type'] == 'product') {
|
} elseif ($val['type'] == 'product') {
|
||||||
$product = new Product($db);
|
$product = new Product($db);
|
||||||
$resprod = $product->fetch($conf->global->{$constname});
|
$resprod = $product->fetch(getDolGlobalInt($constname));
|
||||||
if ($resprod > 0) {
|
if ($resprod > 0) {
|
||||||
print $product->ref;
|
print $product->ref;
|
||||||
} elseif ($resprod < 0) {
|
} elseif ($resprod < 0) {
|
||||||
@ -638,11 +638,11 @@ if ($action == 'edit') {
|
|||||||
if (isModEnabled('accounting')) {
|
if (isModEnabled('accounting')) {
|
||||||
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountingaccount.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountingaccount.class.php';
|
||||||
$accountingaccount = new AccountingAccount($db);
|
$accountingaccount = new AccountingAccount($db);
|
||||||
$accountingaccount->fetch('', $conf->global->{$constname}, 1);
|
$accountingaccount->fetch('', getDolGlobalString($constname), 1);
|
||||||
|
|
||||||
print $accountingaccount->getNomUrl(0, 1, 1, '', 1);
|
print $accountingaccount->getNomUrl(0, 1, 1, '', 1);
|
||||||
} else {
|
} else {
|
||||||
print $conf->global->{$constname};
|
print getDolGlobalString($constname);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print $conf->global->{$constname};
|
print $conf->global->{$constname};
|
||||||
|
|||||||
@ -46,12 +46,12 @@ foreach ($linkedObjectBlock as $key => $objectlink) {
|
|||||||
$trclass .= ' liste_sub_total';
|
$trclass .= ' liste_sub_total';
|
||||||
}
|
}
|
||||||
echo '<tr class="'.$trclass.'" >';
|
echo '<tr class="'.$trclass.'" >';
|
||||||
echo '<td class="linkedcol-element" >'.$langs->trans("Asset");
|
echo '<td class="linkedcol-element tdoverflowmax100">'.$langs->trans("Asset");
|
||||||
if (!empty($showImportButton) && !empty($conf->global->MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES)) {
|
if (!empty($showImportButton) && !empty($conf->global->MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES)) {
|
||||||
print '<a class="objectlinked_importbtn" href="'.$objectlink->getNomUrl(0, '', 0, 1).'&action=selectlines" data-element="'.$objectlink->element.'" data-id="'.$objectlink->id.'" > <i class="fa fa-indent"></i> </a';
|
print '<a class="objectlinked_importbtn" href="'.$objectlink->getNomUrl(0, '', 0, 1).'&action=selectlines" data-element="'.$objectlink->element.'" data-id="'.$objectlink->id.'" > <i class="fa fa-indent"></i> </a';
|
||||||
}
|
}
|
||||||
echo '</td>';
|
echo '</td>';
|
||||||
echo '<td class="linkedcol-name nowraponall" >'.$objectlink->getNomUrl(1).'</td>';
|
echo '<td class="linkedcol-name tdoverflowmax150" >'.$objectlink->getNomUrl(1).'</td>';
|
||||||
echo '<td class="linkedcol-ref" align="center">'.$objectlink->label.'</td>';
|
echo '<td class="linkedcol-ref" align="center">'.$objectlink->label.'</td>';
|
||||||
echo '<td class="linkedcol-date" align="center">'.dol_print_date($objectlink->date_start, 'day').'</td>';
|
echo '<td class="linkedcol-date" align="center">'.dol_print_date($objectlink->date_start, 'day').'</td>';
|
||||||
echo '<td class="linkedcol-amount right">';
|
echo '<td class="linkedcol-amount right">';
|
||||||
|
|||||||
@ -304,8 +304,8 @@ class BlockedLogAuthority
|
|||||||
$url = $conf->global->BLOCKEDLOG_AUTHORITY_URL.'/blockedlog/ajax/authority.php?s='.$signature.'&b='.$block->signature;
|
$url = $conf->global->BLOCKEDLOG_AUTHORITY_URL.'/blockedlog/ajax/authority.php?s='.$signature.'&b='.$block->signature;
|
||||||
|
|
||||||
$res = getURLContent($url);
|
$res = getURLContent($url);
|
||||||
echo $block->signature.' '.$url.' '.$res.'<br>';
|
echo $block->signature.' '.$url.' '.$res['content'].'<br>';
|
||||||
if ($res === 'blockalreadyadded' || $res === 'blockadded') {
|
if ($res['content'] === 'blockalreadyadded' || $res['content'] === 'blockadded') {
|
||||||
$block->setCertified();
|
$block->setCertified();
|
||||||
} else {
|
} else {
|
||||||
$this->error = $langs->trans('ImpossibleToContactAuthority ', $url);
|
$this->error = $langs->trans('ImpossibleToContactAuthority ', $url);
|
||||||
|
|||||||
@ -490,10 +490,10 @@ print '<input type="hidden" name="page" value="'.$page.'">';
|
|||||||
print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
|
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('ViewList'), '', 'fa fa-bars imgforviewmode', $_SERVER["PHP_SELF"].'?mode=common'.preg_replace('/(&|\?)*mode=[^&]+/', '', $param), '', ((empty($mode) || $mode == 'common') ? 2 : 1), array('morecss'=>'reposition'));
|
$newcardbutton .= dolGetButtonTitle($langs->trans('ViewList'), '', 'fa fa-bars imgforviewmode', $_SERVER["PHP_SELF"].'?mode=common'.preg_replace('/(&|\?)*mode=[^&]+/', '', $param), '', ((empty($mode) || $mode == 'common') ? 2 : 1), array('morecss'=>'reposition'));
|
||||||
$newcardbutton = dolGetButtonTitle($langs->trans('ViewKanban'), '', 'fa fa-th-list imgforviewmode', $_SERVER["PHP_SELF"].'?mode=kanban'.preg_replace('/(&|\?)*mode=[^&]+/', '', $param), '', ($mode == 'kanban' ? 2 : 1), array('morecss'=>'reposition'));
|
$newcardbutton .= dolGetButtonTitle($langs->trans('ViewKanban'), '', 'fa fa-th-list imgforviewmode', $_SERVER["PHP_SELF"].'?mode=kanban'.preg_replace('/(&|\?)*mode=[^&]+/', '', $param), '', ($mode == 'kanban' ? 2 : 1), array('morecss'=>'reposition'));
|
||||||
$newcardbutton = dolGetButtonTitle($langs->trans('New'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/bom/bom_card.php?action=create&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $user->rights->bom->write);
|
$newcardbutton .= dolGetButtonTitle($langs->trans('New'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/bom/bom_card.php?action=create&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $user->rights->bom->write);
|
||||||
|
|
||||||
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'object_'.$object->picto, 0, $newcardbutton, '', $limit, 0, 0, 1);
|
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'object_'.$object->picto, 0, $newcardbutton, '', $limit, 0, 0, 1);
|
||||||
|
|
||||||
@ -562,7 +562,7 @@ foreach ($object->fields as $key => $val) {
|
|||||||
$cssforfield .= ($cssforfield ? ' ' : '').'right';
|
$cssforfield .= ($cssforfield ? ' ' : '').'right';
|
||||||
}
|
}
|
||||||
if (!empty($arrayfields['t.'.$key]['checked'])) {
|
if (!empty($arrayfields['t.'.$key]['checked'])) {
|
||||||
print '<td class="liste_titre'.($cssforfield ? ' '.$cssforfield : '').'">';
|
print '<td class="liste_titre'.($cssforfield ? ' '.$cssforfield : '').($key == 'status' ? ' parentonrightofpage' : '').'">';
|
||||||
if (!empty($val['arrayofkeyval']) && is_array($val['arrayofkeyval'])) {
|
if (!empty($val['arrayofkeyval']) && is_array($val['arrayofkeyval'])) {
|
||||||
print $form->selectarray('search_'.$key, $val['arrayofkeyval'], (isset($search[$key]) ? $search[$key] : ''), $val['notnull'], 0, 0, '', 1, 0, 0, '', 'maxwidth100'.($key == 'status' ? ' search_status onrightofpage' : ''), 1);
|
print $form->selectarray('search_'.$key, $val['arrayofkeyval'], (isset($search[$key]) ? $search[$key] : ''), $val['notnull'], 0, 0, '', 1, 0, 0, '', 'maxwidth100'.($key == 'status' ? ' search_status onrightofpage' : ''), 1);
|
||||||
} elseif ((strpos($val['type'], 'integer:') === 0) || (strpos($val['type'], 'sellist:') === 0)) {
|
} elseif ((strpos($val['type'], 'integer:') === 0) || (strpos($val['type'], 'sellist:') === 0)) {
|
||||||
|
|||||||
@ -205,6 +205,9 @@ class Boms extends DolibarrApi
|
|||||||
foreach ($request_data as $field => $value) {
|
foreach ($request_data as $field => $value) {
|
||||||
$this->bom->$field = $value;
|
$this->bom->$field = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->checkRefNumbering();
|
||||||
|
|
||||||
if (!$this->bom->create(DolibarrApiAccess::$user)) {
|
if (!$this->bom->create(DolibarrApiAccess::$user)) {
|
||||||
throw new RestException(500, "Error creating BOM", array_merge(array($this->bom->error), $this->bom->errors));
|
throw new RestException(500, "Error creating BOM", array_merge(array($this->bom->error), $this->bom->errors));
|
||||||
}
|
}
|
||||||
@ -241,6 +244,8 @@ class Boms extends DolibarrApi
|
|||||||
$this->bom->$field = $value;
|
$this->bom->$field = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->checkRefNumbering();
|
||||||
|
|
||||||
if ($this->bom->update(DolibarrApiAccess::$user) > 0) {
|
if ($this->bom->update(DolibarrApiAccess::$user) > 0) {
|
||||||
return $this->get($id);
|
return $this->get($id);
|
||||||
} else {
|
} else {
|
||||||
@ -536,4 +541,27 @@ class Boms extends DolibarrApi
|
|||||||
}
|
}
|
||||||
return $myobject;
|
return $myobject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate the ref field and get the next Number if it's necessary.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
private function checkRefNumbering(): void
|
||||||
|
{
|
||||||
|
$ref = substr($this->bom->ref, 1, 4);
|
||||||
|
if ($this->bom->status > 0 && $ref == 'PROV') {
|
||||||
|
throw new RestException(400, "Wrong naming scheme '(PROV%)' is only allowed on 'DRAFT' status. For automatic increment use 'auto' on the 'ref' field.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strtolower($this->bom->ref) == 'auto') {
|
||||||
|
if (empty($this->bom->id) && $this->bom->status == 0) {
|
||||||
|
$this->bom->ref = ''; // 'ref' will auto incremented with '(PROV' + newID + ')'
|
||||||
|
} else {
|
||||||
|
$this->bom->fetch_product();
|
||||||
|
$numref = $this->bom->getNextNumRef($this->bom->product);
|
||||||
|
$this->bom->ref = $numref;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1329,7 +1329,7 @@ class BOM extends CommonObject
|
|||||||
* BOM costs calculation based on cost_price or pmp of each BOM line.
|
* BOM costs calculation based on cost_price or pmp of each BOM line.
|
||||||
* Set the property ->total_cost and ->unit_cost of BOM.
|
* Set the property ->total_cost and ->unit_cost of BOM.
|
||||||
*
|
*
|
||||||
* @return void
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
public function calculateCosts()
|
public function calculateCosts()
|
||||||
{
|
{
|
||||||
@ -1414,6 +1414,8 @@ class BOM extends CommonObject
|
|||||||
$this->unit_cost = price2num($this->total_cost * $this->qty, 'MU');
|
$this->unit_cost = price2num($this->total_cost * $this->qty, 'MU');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -47,12 +47,12 @@ foreach ($linkedObjectBlock as $key => $objectlink) {
|
|||||||
$trclass .= ' liste_sub_total';
|
$trclass .= ' liste_sub_total';
|
||||||
}
|
}
|
||||||
echo '<tr class="'.$trclass.'" >';
|
echo '<tr class="'.$trclass.'" >';
|
||||||
echo '<td class="linkedcol-element" >'.$langs->trans("Bom");
|
echo '<td class="linkedcol-element tdoverflowmax100">'.$langs->trans("Bom");
|
||||||
if (!empty($showImportButton) && $conf->global->MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES) {
|
if (!empty($showImportButton) && $conf->global->MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES) {
|
||||||
print '<a class="objectlinked_importbtn" href="'.$objectlink->getNomUrl(0, '', 0, 1).'&action=selectlines" data-element="'.$objectlink->element.'" data-id="'.$objectlink->id.'" > <i class="fa fa-indent"></i> </a';
|
print '<a class="objectlinked_importbtn" href="'.$objectlink->getNomUrl(0, '', 0, 1).'&action=selectlines" data-element="'.$objectlink->element.'" data-id="'.$objectlink->id.'" > <i class="fa fa-indent"></i> </a';
|
||||||
}
|
}
|
||||||
echo '</td>';
|
echo '</td>';
|
||||||
echo '<td class="linkedcol-name nowraponall" >'.$objectlink->getNomUrl(1).'</td>';
|
echo '<td class="linkedcol-name tdoverflowmax150" >'.$objectlink->getNomUrl(1).'</td>';
|
||||||
|
|
||||||
echo '<td class="linkedcol-ref">';
|
echo '<td class="linkedcol-ref">';
|
||||||
$result = $product_static->fetch($objectlink->fk_product);
|
$result = $product_static->fetch($objectlink->fk_product);
|
||||||
|
|||||||
@ -73,7 +73,7 @@ if ($nolinesbefore) {
|
|||||||
print '<td class="linecolqty right">'.$langs->trans('Qty').'</td>';
|
print '<td class="linecolqty right">'.$langs->trans('Qty').'</td>';
|
||||||
|
|
||||||
if ($filtertype != 1) {
|
if ($filtertype != 1) {
|
||||||
if (!empty($conf->global->PRODUCT_USE_UNITS)) {
|
if (getDolGlobalInt('PRODUCT_USE_UNITS')) {
|
||||||
print '<td class="linecoluseunit left">';
|
print '<td class="linecoluseunit left">';
|
||||||
print '<span id="title_units">';
|
print '<span id="title_units">';
|
||||||
print $langs->trans('Unit');
|
print $langs->trans('Unit');
|
||||||
@ -145,7 +145,7 @@ print '<td class="bordertop nobottom linecolqty right"><input type="text" size="
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
if ($filtertype != 1) {
|
if ($filtertype != 1) {
|
||||||
if (!empty($conf->global->PRODUCT_USE_UNITS)) {
|
if (getDolGlobalInt('PRODUCT_USE_UNITS')) {
|
||||||
$coldisplay++;
|
$coldisplay++;
|
||||||
print '<td class="nobottom linecoluseunit left">';
|
print '<td class="nobottom linecoluseunit left">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|||||||
@ -126,7 +126,7 @@ if (($line->info_bits & 2) != 2) {
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
if ($filtertype != 1) {
|
if ($filtertype != 1) {
|
||||||
if (!empty($conf->global->PRODUCT_USE_UNITS)) {
|
if (getDolGlobalInt('PRODUCT_USE_UNITS')) {
|
||||||
$coldisplay++;
|
$coldisplay++;
|
||||||
print '<td class="nobottom linecoluseunit left">';
|
print '<td class="nobottom linecoluseunit left">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|||||||
@ -67,7 +67,7 @@ print '</td>';
|
|||||||
print '<td class="linecolqty right">'.$form->textwithpicto($langs->trans('Qty'), ($filtertype != 1) ? $langs->trans("QtyRequiredIfNoLoss") : '').'</td>';
|
print '<td class="linecolqty right">'.$form->textwithpicto($langs->trans('Qty'), ($filtertype != 1) ? $langs->trans("QtyRequiredIfNoLoss") : '').'</td>';
|
||||||
|
|
||||||
if ($filtertype != 1) {
|
if ($filtertype != 1) {
|
||||||
if (!empty($conf->global->PRODUCT_USE_UNITS)) {
|
if (getDolGlobalInt('PRODUCT_USE_UNITS')) {
|
||||||
print '<td class="linecoluseunit left">' . $langs->trans('Unit') . '</td>';
|
print '<td class="linecoluseunit left">' . $langs->trans('Unit') . '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -119,7 +119,7 @@ echo price($line->qty, 0, '', 0, 0); // Yes, it is a quantity, not a price, but
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
if ($filtertype != 1) {
|
if ($filtertype != 1) {
|
||||||
if (!empty($conf->global->PRODUCT_USE_UNITS)) {
|
if (getDolGlobalInt('PRODUCT_USE_UNITS')) {
|
||||||
print '<td class="linecoluseunit nowrap left">';
|
print '<td class="linecoluseunit nowrap left">';
|
||||||
$label = $tmpproduct->getLabelOfUnit('long');
|
$label = $tmpproduct->getLabelOfUnit('long');
|
||||||
if ($label !== '') {
|
if ($label !== '') {
|
||||||
|
|||||||
@ -153,10 +153,10 @@ if ( versioncompare(explode('.', DOL_VERSION), array(15)) < 0 && $action == 'upd
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
if ($action == 'updateMask') {
|
if ($action == 'updateMask') {
|
||||||
$maskconst = GETPOST('maskconst', 'alpha');
|
$maskconst = GETPOST('maskconst', 'aZ09');
|
||||||
$maskvalue = GETPOST('maskvalue', 'alpha');
|
$maskvalue = GETPOST('maskvalue', 'alpha');
|
||||||
|
|
||||||
if ($maskconst) {
|
if ($maskconst && preg_match('/_MASK$/', $maskconst)) {
|
||||||
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
|
||||||
if (!($res > 0)) {
|
if (!($res > 0)) {
|
||||||
$error++;
|
$error++;
|
||||||
|
|||||||
@ -104,7 +104,7 @@ class Booking extends CommonObject
|
|||||||
public $fields=array(
|
public $fields=array(
|
||||||
'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"),
|
'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"),
|
||||||
'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>'1', 'position'=>1.2, 'notnull'=>1, 'visible'=>1, 'index'=>1, 'searchall'=>1, 'validate'=>'1', 'comment'=>"Reference of object"),
|
'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>'1', 'position'=>1.2, 'notnull'=>1, 'visible'=>1, 'index'=>1, 'searchall'=>1, 'validate'=>'1', 'comment'=>"Reference of object"),
|
||||||
'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'picto'=>'company', 'enabled'=>'$conf->societe->enabled', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'css'=>'maxwidth500 widthcentpercentminusxx', 'help'=>"LinkToThirparty", 'validate'=>'1',),
|
'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'picto'=>'company', 'enabled'=>'isModEnabled("societe")', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'css'=>'maxwidth500 widthcentpercentminusxx', 'help'=>"LinkToThirparty", 'validate'=>'1',),
|
||||||
'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1', 'label'=>'Project', 'picto'=>'project', 'enabled'=>'$conf->project->enabled', 'position'=>52, 'notnull'=>-1, 'visible'=>-1, 'index'=>1, 'css'=>'maxwidth500 widthcentpercentminusxx', 'validate'=>'1',),
|
'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1', 'label'=>'Project', 'picto'=>'project', 'enabled'=>'$conf->project->enabled', 'position'=>52, 'notnull'=>-1, 'visible'=>-1, 'index'=>1, 'css'=>'maxwidth500 widthcentpercentminusxx', 'validate'=>'1',),
|
||||||
'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>'1', 'position'=>60, 'notnull'=>0, 'visible'=>3, 'validate'=>'1',),
|
'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>'1', 'position'=>60, 'notnull'=>0, 'visible'=>3, 'validate'=>'1',),
|
||||||
'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>'1', 'position'=>61, 'notnull'=>0, 'visible'=>0, 'cssview'=>'wordbreak', 'validate'=>'1',),
|
'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>'1', 'position'=>61, 'notnull'=>0, 'visible'=>0, 'cssview'=>'wordbreak', 'validate'=>'1',),
|
||||||
|
|||||||
@ -1189,8 +1189,6 @@ class Categorie extends CommonObject
|
|||||||
dol_syslog(get_class($this)."::get_full_arbo dol_sort_array", LOG_DEBUG);
|
dol_syslog(get_class($this)."::get_full_arbo dol_sort_array", LOG_DEBUG);
|
||||||
$this->cats = dol_sort_array($this->cats, 'fulllabel', 'asc', true, false);
|
$this->cats = dol_sort_array($this->cats, 'fulllabel', 'asc', true, false);
|
||||||
|
|
||||||
//$this->debug_cats();
|
|
||||||
|
|
||||||
return $this->cats;
|
return $this->cats;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1201,7 +1199,7 @@ class Categorie extends CommonObject
|
|||||||
*
|
*
|
||||||
* @param int $id_categ id_categ entry to update
|
* @param int $id_categ id_categ entry to update
|
||||||
* @param int $protection Deep counter to avoid infinite loop
|
* @param int $protection Deep counter to avoid infinite loop
|
||||||
* @return void
|
* @return int <0 if KO, >0 if OK
|
||||||
* @see get_full_arbo()
|
* @see get_full_arbo()
|
||||||
*/
|
*/
|
||||||
private function buildPathFromId($id_categ, $protection = 1000)
|
private function buildPathFromId($id_categ, $protection = 1000)
|
||||||
@ -1211,7 +1209,7 @@ class Categorie extends CommonObject
|
|||||||
if (!empty($this->cats[$id_categ]['fullpath'])) {
|
if (!empty($this->cats[$id_categ]['fullpath'])) {
|
||||||
// Already defined
|
// Already defined
|
||||||
dol_syslog(get_class($this)."::buildPathFromId fullpath and fulllabel already defined", LOG_WARNING);
|
dol_syslog(get_class($this)."::buildPathFromId fullpath and fulllabel already defined", LOG_WARNING);
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// First build full array $motherof
|
// First build full array $motherof
|
||||||
@ -1238,28 +1236,7 @@ class Categorie extends CommonObject
|
|||||||
$nbunderscore = substr_count($this->cats[$id_categ]['fullpath'], '_');
|
$nbunderscore = substr_count($this->cats[$id_categ]['fullpath'], '_');
|
||||||
$this->cats[$id_categ]['level'] = ($nbunderscore ? $nbunderscore : null);
|
$this->cats[$id_categ]['level'] = ($nbunderscore ? $nbunderscore : null);
|
||||||
|
|
||||||
return;
|
return 1;
|
||||||
}
|
|
||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
|
||||||
/**
|
|
||||||
* Display content of $this->cats
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function debug_cats()
|
|
||||||
{
|
|
||||||
// phpcs:enable
|
|
||||||
// Display $this->cats
|
|
||||||
foreach ($this->cats as $key => $val) {
|
|
||||||
print 'id: '.$this->cats[$key]['id'];
|
|
||||||
print ' label: '.$this->cats[$key]['label'];
|
|
||||||
print ' mother: '.$this->cats[$key]['fk_parent'];
|
|
||||||
//print ' children: '.(is_array($this->cats[$key]['id_children'])?join(',',$this->cats[$key]['id_children']):'');
|
|
||||||
print ' fullpath: '.$this->cats[$key]['fullpath'];
|
|
||||||
print ' fulllabel: '.$this->cats[$key]['fulllabel'];
|
|
||||||
print "<br>\n";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1353,7 +1353,7 @@ if ($action == 'create') {
|
|||||||
if (empty($donotclearsession)) {
|
if (empty($donotclearsession)) {
|
||||||
$assignedtouser = GETPOST("assignedtouser") ?GETPOST("assignedtouser") : (!empty($object->userownerid) && $object->userownerid > 0 ? $object->userownerid : $user->id);
|
$assignedtouser = GETPOST("assignedtouser") ?GETPOST("assignedtouser") : (!empty($object->userownerid) && $object->userownerid > 0 ? $object->userownerid : $user->id);
|
||||||
if ($assignedtouser) {
|
if ($assignedtouser) {
|
||||||
$listofuserid[$assignedtouser] = array('id'=>$assignedtouser, 'mandatory'=>0, 'transparency'=>$object->transparency); // Owner first
|
$listofuserid[$assignedtouser] = array('id'=>$assignedtouser, 'mandatory'=>0); // Owner first
|
||||||
}
|
}
|
||||||
//$listofuserid[$user->id] = array('id'=>$user->id, 'mandatory'=>0, 'transparency'=>(GETPOSTISSET('transparency') ? GETPOST('transparency', 'alpha') : 1)); // 1 by default at first init
|
//$listofuserid[$user->id] = array('id'=>$user->id, 'mandatory'=>0, 'transparency'=>(GETPOSTISSET('transparency') ? GETPOST('transparency', 'alpha') : 1)); // 1 by default at first init
|
||||||
$listofuserid[$assignedtouser]['transparency'] = (GETPOSTISSET('transparency') ? GETPOST('transparency', 'alpha') : 1); // 1 by default at first init
|
$listofuserid[$assignedtouser]['transparency'] = (GETPOSTISSET('transparency') ? GETPOST('transparency', 'alpha') : 1); // 1 by default at first init
|
||||||
@ -1602,7 +1602,7 @@ if ($action == 'create') {
|
|||||||
$("#select_actioncommsendmodel_mail").closest("tr").show();
|
$("#select_actioncommsendmodel_mail").closest("tr").show();
|
||||||
} else {
|
} else {
|
||||||
$("#select_actioncommsendmodel_mail").closest("tr").hide();
|
$("#select_actioncommsendmodel_mail").closest("tr").hide();
|
||||||
};
|
}
|
||||||
});
|
});
|
||||||
})';
|
})';
|
||||||
print '</script>'."\n";
|
print '</script>'."\n";
|
||||||
@ -2104,7 +2104,7 @@ if ($id > 0) {
|
|||||||
$("#select_actioncommsendmodel_mail").closest("tr").show();
|
$("#select_actioncommsendmodel_mail").closest("tr").show();
|
||||||
} else {
|
} else {
|
||||||
$("#select_actioncommsendmodel_mail").closest("tr").hide();
|
$("#select_actioncommsendmodel_mail").closest("tr").hide();
|
||||||
};
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
})';
|
})';
|
||||||
|
|||||||
@ -225,22 +225,22 @@ class ActionComm extends CommonObject
|
|||||||
public $transparency;
|
public $transparency;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int (0 By default)
|
* @var int (0 By default)
|
||||||
*/
|
*/
|
||||||
public $priority;
|
public $priority;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int[] Array of user ids
|
* @var int[] Array of user ids
|
||||||
*/
|
*/
|
||||||
public $userassigned = array();
|
public $userassigned = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int Id of user owner = fk_user_action into table
|
* @var int Id of user owner = fk_user_action into table
|
||||||
*/
|
*/
|
||||||
public $userownerid;
|
public $userownerid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int Id of user that has done the event. Used only if AGENDA_ENABLE_DONEBY is set.
|
* @var int Id of user that has done the event. Used only if AGENDA_ENABLE_DONEBY is set.
|
||||||
*/
|
*/
|
||||||
public $userdoneid;
|
public $userdoneid;
|
||||||
|
|
||||||
@ -429,7 +429,7 @@ class ActionComm extends CommonObject
|
|||||||
$now = dol_now();
|
$now = dol_now();
|
||||||
|
|
||||||
// Check parameters
|
// Check parameters
|
||||||
if (!isset($this->userownerid) || $this->userownerid === '') { // $this->userownerid may be 0 (anonymous event) of > 0
|
if (!isset($this->userownerid) || (string) $this->userownerid === '') { // $this->userownerid may be 0 (anonymous event) or > 0
|
||||||
dol_syslog("You tried to create an event but mandatory property ownerid was not defined", LOG_WARNING);
|
dol_syslog("You tried to create an event but mandatory property ownerid was not defined", LOG_WARNING);
|
||||||
$this->errors[] = 'ErrorActionCommPropertyUserowneridNotDefined';
|
$this->errors[] = 'ErrorActionCommPropertyUserowneridNotDefined';
|
||||||
return -1;
|
return -1;
|
||||||
@ -477,8 +477,8 @@ class ActionComm extends CommonObject
|
|||||||
$this->elementtype = 'contract';
|
$this->elementtype = 'contract';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_array($this->userassigned) && !empty($this->userassigned)) { // For backward compatibility when userassigned was an int instead fo array
|
if (!is_array($this->userassigned) && !empty($this->userassigned)) { // For backward compatibility when userassigned was an int instead of an array
|
||||||
$tmpid = $this->userassigned;
|
$tmpid = (int) $this->userassigned;
|
||||||
$this->userassigned = array();
|
$this->userassigned = array();
|
||||||
$this->userassigned[$tmpid] = array('id'=>$tmpid, 'transparency'=>$this->transparency);
|
$this->userassigned[$tmpid] = array('id'=>$tmpid, 'transparency'=>$this->transparency);
|
||||||
}
|
}
|
||||||
@ -1800,8 +1800,8 @@ class ActionComm extends CommonObject
|
|||||||
* Adds it to non existing supplied categories.
|
* Adds it to non existing supplied categories.
|
||||||
* Existing categories are left untouch.
|
* Existing categories are left untouch.
|
||||||
*
|
*
|
||||||
* @param int[]|int $categories Category or categories IDs
|
* @param int[]|int $categories Category or categories IDs
|
||||||
* @return void
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
public function setCategories($categories)
|
public function setCategories($categories)
|
||||||
{
|
{
|
||||||
@ -1835,7 +1835,7 @@ class ActionComm extends CommonObject
|
|||||||
$c->add_type($this, Categorie::TYPE_ACTIONCOMM);
|
$c->add_type($this, Categorie::TYPE_ACTIONCOMM);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
|
|||||||
@ -402,7 +402,7 @@ class ICal
|
|||||||
public function get_event_list()
|
public function get_event_list()
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
return (empty($this->cal['VEVENT']) ? '' : $this->cal['VEVENT']);
|
return (empty($this->cal['VEVENT']) ? array() : $this->cal['VEVENT']);
|
||||||
}
|
}
|
||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
@ -414,7 +414,7 @@ class ICal
|
|||||||
public function get_freebusy_list()
|
public function get_freebusy_list()
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
return (empty($this->cal['VFREEBUSY']) ? '' : $this->cal['VFREEBUSY']);
|
return (empty($this->cal['VFREEBUSY']) ? array() : $this->cal['VFREEBUSY']);
|
||||||
}
|
}
|
||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
|
|||||||
@ -33,6 +33,7 @@ $sortfield = GETPOST('sortfield', 'aZ09comma');
|
|||||||
$sortorder = GETPOST('sortorder', 'aZ09comma');
|
$sortorder = GETPOST('sortorder', 'aZ09comma');
|
||||||
$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit;
|
$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit;
|
||||||
$optioncss = GETPOST('optioncss', 'alpha');
|
$optioncss = GETPOST('optioncss', 'alpha');
|
||||||
|
$massaction = GETPOST('massaction', 'alpha');
|
||||||
$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
|
$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
|
||||||
if (empty($page) || $page == -1 || GETPOST('button_search', 'alpha') || GETPOST('button_removefilter', 'alpha') || (empty($toselect) && $massaction === '0')) {
|
if (empty($page) || $page == -1 || GETPOST('button_search', 'alpha') || GETPOST('button_removefilter', 'alpha') || (empty($toselect) && $massaction === '0')) {
|
||||||
$page = 0;
|
$page = 0;
|
||||||
|
|||||||
@ -938,12 +938,12 @@ if (empty($reshook)) {
|
|||||||
$prod_entry_mode = GETPOST('prod_entry_mode', 'aZ09');
|
$prod_entry_mode = GETPOST('prod_entry_mode', 'aZ09');
|
||||||
if ($prod_entry_mode == 'free') {
|
if ($prod_entry_mode == 'free') {
|
||||||
$idprod = 0;
|
$idprod = 0;
|
||||||
$tva_tx = (GETPOST('tva_tx', 'alpha') ? price2num(preg_replace('/\s*\(.*\)/', '', GETPOST('tva_tx', 'alpha'))) : 0);
|
|
||||||
} else {
|
} else {
|
||||||
$idprod = GETPOST('idprod', 'int');
|
$idprod = GETPOST('idprod', 'int');
|
||||||
$tva_tx = '';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$tva_tx = GETPOST('tva_tx', 'alpha');
|
||||||
|
|
||||||
$qty = price2num(GETPOST('qty'.$predef, 'alpha'), 'MS', 2);
|
$qty = price2num(GETPOST('qty'.$predef, 'alpha'), 'MS', 2);
|
||||||
$remise_percent = (GETPOSTISSET('remise_percent'.$predef) ? price2num(GETPOST('remise_percent'.$predef, 'alpha'), '', 2) : 0);
|
$remise_percent = (GETPOSTISSET('remise_percent'.$predef) ? price2num(GETPOST('remise_percent'.$predef, 'alpha'), '', 2) : 0);
|
||||||
if (empty($remise_percent)) {
|
if (empty($remise_percent)) {
|
||||||
@ -992,6 +992,8 @@ if (empty($reshook)) {
|
|||||||
if (!$error && ($qty >= 0) && (!empty($product_desc) || (!empty($idprod) && $idprod > 0))) {
|
if (!$error && ($qty >= 0) && (!empty($product_desc) || (!empty($idprod) && $idprod > 0))) {
|
||||||
$pu_ht = 0;
|
$pu_ht = 0;
|
||||||
$pu_ttc = 0;
|
$pu_ttc = 0;
|
||||||
|
$pu_ht_devise = 0;
|
||||||
|
$pu_ttc_devise = 0;
|
||||||
$price_min = 0;
|
$price_min = 0;
|
||||||
$price_min_ttc = 0;
|
$price_min_ttc = 0;
|
||||||
$price_base_type = (GETPOST('price_base_type', 'alpha') ? GETPOST('price_base_type', 'alpha') : 'HT');
|
$price_base_type = (GETPOST('price_base_type', 'alpha') ? GETPOST('price_base_type', 'alpha') : 'HT');
|
||||||
@ -1002,7 +1004,6 @@ if (empty($reshook)) {
|
|||||||
|
|
||||||
// Ecrase $pu par celui du produit
|
// Ecrase $pu par celui du produit
|
||||||
// Ecrase $desc par celui du produit
|
// Ecrase $desc par celui du produit
|
||||||
// Ecrase $tva_tx par celui du produit
|
|
||||||
// Replaces $fk_unit with the product unit
|
// Replaces $fk_unit with the product unit
|
||||||
if (!empty($idprod) && $idprod > 0) {
|
if (!empty($idprod) && $idprod > 0) {
|
||||||
$prod = new Product($db);
|
$prod = new Product($db);
|
||||||
@ -1011,11 +1012,11 @@ if (empty($reshook)) {
|
|||||||
$label = ((GETPOST('product_label') && GETPOST('product_label') != $prod->label) ? GETPOST('product_label') : '');
|
$label = ((GETPOST('product_label') && GETPOST('product_label') != $prod->label) ? GETPOST('product_label') : '');
|
||||||
|
|
||||||
// Update if prices fields are defined
|
// Update if prices fields are defined
|
||||||
$tva_tx = get_default_tva($mysoc, $object->thirdparty, $prod->id);
|
/*$tva_tx = get_default_tva($mysoc, $object->thirdparty, $prod->id);
|
||||||
$tva_npr = get_default_npr($mysoc, $object->thirdparty, $prod->id);
|
$tva_npr = get_default_npr($mysoc, $object->thirdparty, $prod->id);
|
||||||
if (empty($tva_tx)) {
|
if (empty($tva_tx)) {
|
||||||
$tva_npr = 0;
|
$tva_npr = 0;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
// Price unique per product
|
// Price unique per product
|
||||||
$pu_ht = $prod->price;
|
$pu_ht = $prod->price;
|
||||||
@ -1056,14 +1057,14 @@ if (empty($reshook)) {
|
|||||||
$price_min = price($prodcustprice->lines[0]->price_min);
|
$price_min = price($prodcustprice->lines[0]->price_min);
|
||||||
$price_min_ttc = price($prodcustprice->lines[0]->price_min_ttc);
|
$price_min_ttc = price($prodcustprice->lines[0]->price_min_ttc);
|
||||||
$price_base_type = $prodcustprice->lines[0]->price_base_type;
|
$price_base_type = $prodcustprice->lines[0]->price_base_type;
|
||||||
$tva_tx = ($prodcustprice->lines[0]->default_vat_code ? $prodcustprice->lines[0]->tva_tx.' ('.$prodcustprice->lines[0]->default_vat_code.' )' : $prodcustprice->lines[0]->tva_tx);
|
/*$tva_tx = ($prodcustprice->lines[0]->default_vat_code ? $prodcustprice->lines[0]->tva_tx.' ('.$prodcustprice->lines[0]->default_vat_code.' )' : $prodcustprice->lines[0]->tva_tx);
|
||||||
if ($prodcustprice->lines[0]->default_vat_code && !preg_match('/\(.*\)/', $tva_tx)) {
|
if ($prodcustprice->lines[0]->default_vat_code && !preg_match('/\(.*\)/', $tva_tx)) {
|
||||||
$tva_tx .= ' ('.$prodcustprice->lines[0]->default_vat_code.')';
|
$tva_tx .= ' ('.$prodcustprice->lines[0]->default_vat_code.')';
|
||||||
}
|
}
|
||||||
$tva_npr = $prodcustprice->lines[0]->recuperableonly;
|
$tva_npr = $prodcustprice->lines[0]->recuperableonly;
|
||||||
if (empty($tva_tx)) {
|
if (empty($tva_tx)) {
|
||||||
$tva_npr = 0;
|
$tva_npr = 0;
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif (!empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY)) {
|
} elseif (!empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY)) {
|
||||||
@ -1114,12 +1115,12 @@ if (empty($reshook)) {
|
|||||||
$tmpprodvat = price2num(preg_replace('/\s*\(.*\)/', '', $prod->tva_tx));
|
$tmpprodvat = price2num(preg_replace('/\s*\(.*\)/', '', $prod->tva_tx));
|
||||||
|
|
||||||
// Set unit price to use
|
// Set unit price to use
|
||||||
if (!empty($price_ht) || $price_ht === '0') {
|
if (!empty($price_ht) || (string) $price_ht === '0') {
|
||||||
$pu_ht = price2num($price_ht, 'MU');
|
$pu_ht = price2num($price_ht, 'MU');
|
||||||
$pu_ttc = price2num($pu_ht * (1 + ($tmpvat / 100)), 'MU');
|
$pu_ttc = price2num($pu_ht * (1 + ((float) $tmpvat / 100)), 'MU');
|
||||||
} elseif (!empty($price_ttc) || $price_ttc === '0') {
|
} elseif (!empty($price_ttc) || (string) $price_ttc === '0') {
|
||||||
$pu_ttc = price2num($price_ttc, 'MU');
|
$pu_ttc = price2num($price_ttc, 'MU');
|
||||||
$pu_ht = price2num($pu_ttc / (1 + ($tmpvat / 100)), 'MU');
|
$pu_ht = price2num($pu_ttc / (1 + ((float) $tmpvat / 100)), 'MU');
|
||||||
} elseif ($tmpvat != $tmpprodvat) {
|
} elseif ($tmpvat != $tmpprodvat) {
|
||||||
// Is this still used ?
|
// Is this still used ?
|
||||||
if ($price_base_type != 'HT') {
|
if ($price_base_type != 'HT') {
|
||||||
@ -1233,6 +1234,20 @@ if (empty($reshook)) {
|
|||||||
$date_start = dol_mktime(GETPOST('date_start'.$predef.'hour'), GETPOST('date_start'.$predef.'min'), GETPOST('date_start'.$predef.'sec'), GETPOST('date_start'.$predef.'month'), GETPOST('date_start'.$predef.'day'), GETPOST('date_start'.$predef.'year'));
|
$date_start = dol_mktime(GETPOST('date_start'.$predef.'hour'), GETPOST('date_start'.$predef.'min'), GETPOST('date_start'.$predef.'sec'), GETPOST('date_start'.$predef.'month'), GETPOST('date_start'.$predef.'day'), GETPOST('date_start'.$predef.'year'));
|
||||||
$date_end = dol_mktime(GETPOST('date_end'.$predef.'hour'), GETPOST('date_end'.$predef.'min'), GETPOST('date_end'.$predef.'sec'), GETPOST('date_end'.$predef.'month'), GETPOST('date_end'.$predef.'day'), GETPOST('date_end'.$predef.'year'));
|
$date_end = dol_mktime(GETPOST('date_end'.$predef.'hour'), GETPOST('date_end'.$predef.'min'), GETPOST('date_end'.$predef.'sec'), GETPOST('date_end'.$predef.'month'), GETPOST('date_end'.$predef.'day'), GETPOST('date_end'.$predef.'year'));
|
||||||
|
|
||||||
|
// Prepare a price equivalent for minimum price check
|
||||||
|
$pu_equivalent = $pu_ht;
|
||||||
|
$pu_equivalent_ttc = $pu_ttc;
|
||||||
|
$currency_tx = $object->multicurrency_tx;
|
||||||
|
|
||||||
|
// Check if we have a foreing currency
|
||||||
|
// If so, we update the pu_equiv as the equivalent price in base currency
|
||||||
|
if ($pu_ht == '' && $pu_ht_devise != '' && $currency_tx != '') {
|
||||||
|
$pu_equivalent = $pu_ht_devise * $currency_tx;
|
||||||
|
}
|
||||||
|
if ($pu_ttc == '' && $pu_ttc_devise != '' && $currency_tx != '') {
|
||||||
|
$pu_equivalent_ttc = $pu_ttc_devise * $currency_tx;
|
||||||
|
}
|
||||||
|
|
||||||
// Local Taxes
|
// Local Taxes
|
||||||
$localtax1_tx = get_localtax($tva_tx, 1, $object->thirdparty, $tva_npr);
|
$localtax1_tx = get_localtax($tva_tx, 1, $object->thirdparty, $tva_npr);
|
||||||
$localtax2_tx = get_localtax($tva_tx, 2, $object->thirdparty, $tva_npr);
|
$localtax2_tx = get_localtax($tva_tx, 2, $object->thirdparty, $tva_npr);
|
||||||
@ -1246,11 +1261,11 @@ if (empty($reshook)) {
|
|||||||
//var_dump(price2num($price_min_ttc)); var_dump(price2num($pu_ttc)); var_dump($remise_percent);exit;
|
//var_dump(price2num($price_min_ttc)); var_dump(price2num($pu_ttc)); var_dump($remise_percent);exit;
|
||||||
|
|
||||||
if ($usermustrespectpricemin) {
|
if ($usermustrespectpricemin) {
|
||||||
if ($pu_ht && $price_min && ((price2num($pu_ht) * (1 - $remise_percent / 100)) < price2num($price_min))) {
|
if ($pu_equivalent && $price_min && ((price2num($pu_equivalent) * (1 - $remise_percent / 100)) < price2num($price_min))) {
|
||||||
$mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, -1, $conf->currency));
|
$mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, -1, $conf->currency));
|
||||||
setEventMessages($mesg, null, 'errors');
|
setEventMessages($mesg, null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
} elseif ($pu_ttc && $price_min_ttc && ((price2num($pu_ttc) * (1 - $remise_percent / 100)) < price2num($price_min_ttc))) {
|
} elseif ($pu_equivalent_ttc && $price_min_ttc && ((price2num($pu_equivalent_ttc) * (1 - $remise_percent / 100)) < price2num($price_min_ttc))) {
|
||||||
$mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min_ttc, 'MU'), 0, $langs, 0, 0, -1, $conf->currency));
|
$mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min_ttc, 'MU'), 0, $langs, 0, 0, -1, $conf->currency));
|
||||||
setEventMessages($mesg, null, 'errors');
|
setEventMessages($mesg, null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
@ -1349,6 +1364,20 @@ if (empty($reshook)) {
|
|||||||
|
|
||||||
$remise_percent = price2num(GETPOST('remise_percent'), '', 2);
|
$remise_percent = price2num(GETPOST('remise_percent'), '', 2);
|
||||||
|
|
||||||
|
// Prepare a price equivalent for minimum price check
|
||||||
|
$pu_equivalent = $pu_ht;
|
||||||
|
$pu_equivalent_ttc = $pu_ttc;
|
||||||
|
$currency_tx = $object->multicurrency_tx;
|
||||||
|
|
||||||
|
// Check if we have a foreing currency
|
||||||
|
// If so, we update the pu_equiv as the equivalent price in base currency
|
||||||
|
if ($pu_ht == '' && $pu_ht_devise != '' && $currency_tx != '') {
|
||||||
|
$pu_equivalent = $pu_ht_devise * $currency_tx;
|
||||||
|
}
|
||||||
|
if ($pu_ttc == '' && $pu_ttc_devise != '' && $currency_tx != '') {
|
||||||
|
$pu_equivalent_ttc = $pu_ttc_devise * $currency_tx;
|
||||||
|
}
|
||||||
|
|
||||||
// Extrafields
|
// Extrafields
|
||||||
$extralabelsline = $extrafields->fetch_name_optionals_label($object->table_element_line);
|
$extralabelsline = $extrafields->fetch_name_optionals_label($object->table_element_line);
|
||||||
$array_options = $extrafields->getOptionalsFromPost($object->table_element_line);
|
$array_options = $extrafields->getOptionalsFromPost($object->table_element_line);
|
||||||
@ -1388,12 +1417,12 @@ if (empty($reshook)) {
|
|||||||
//var_dump(price2num($price_min_ttc)); var_dump(price2num($pu_ttc)); var_dump($remise_percent);exit;
|
//var_dump(price2num($price_min_ttc)); var_dump(price2num($pu_ttc)); var_dump($remise_percent);exit;
|
||||||
|
|
||||||
if ($usermustrespectpricemin) {
|
if ($usermustrespectpricemin) {
|
||||||
if ($pu_ht && $price_min && ((price2num($pu_ht) * (1 - $remise_percent / 100)) < price2num($price_min))) {
|
if ($pu_equivalent && $price_min && ((price2num($pu_equivalent) * (1 - (float) $remise_percent / 100)) < price2num($price_min))) {
|
||||||
$mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, -1, $conf->currency));
|
$mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, -1, $conf->currency));
|
||||||
setEventMessages($mesg, null, 'errors');
|
setEventMessages($mesg, null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
$action = 'editline';
|
$action = 'editline';
|
||||||
} elseif ($pu_ttc && $price_min_ttc && ((price2num($pu_ttc) * (1 - $remise_percent / 100)) < price2num($price_min_ttc))) {
|
} elseif ($pu_equivalent_ttc && $price_min_ttc && ((price2num($pu_equivalent_ttc) * (1 - (float) $remise_percent / 100)) < price2num($price_min_ttc))) {
|
||||||
$mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min_ttc, 'MU'), 0, $langs, 0, 0, -1, $conf->currency));
|
$mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min_ttc, 'MU'), 0, $langs, 0, 0, -1, $conf->currency));
|
||||||
setEventMessages($mesg, null, 'errors');
|
setEventMessages($mesg, null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
@ -1830,7 +1859,7 @@ if ($action == 'create') {
|
|||||||
}
|
}
|
||||||
print '<tr class="field_shipping_method_id"><td class="titlefieldcreate">'.$langs->trans('SendingMethod').'</td><td class="valuefieldcreate">';
|
print '<tr class="field_shipping_method_id"><td class="titlefieldcreate">'.$langs->trans('SendingMethod').'</td><td class="valuefieldcreate">';
|
||||||
print img_picto('', 'object_dollyrevert', 'class="pictofixedwidth"');
|
print img_picto('', 'object_dollyrevert', 'class="pictofixedwidth"');
|
||||||
print $form->selectShippingMethod($shipping_method_id, 'shipping_method_id', '', 1, '', 0, 'maxwidth200 widthcentpercentminusx');
|
$form->selectShippingMethod($shipping_method_id, 'shipping_method_id', '', 1, '', 0, 'maxwidth200 widthcentpercentminusx');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2776,7 +2805,7 @@ if ($action == 'create') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($object->lines)) {
|
if (!empty($object->lines)) {
|
||||||
$ret = $object->printObjectLines($action, $mysoc, $object->thirdparty, $lineid, 1);
|
$object->printObjectLines($action, $mysoc, $object->thirdparty, $lineid, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Form to add new line
|
// Form to add new line
|
||||||
|
|||||||
@ -49,7 +49,7 @@ class Proposals extends DolibarrApi
|
|||||||
*/
|
*/
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
global $db, $conf;
|
global $db;
|
||||||
$this->db = $db;
|
$this->db = $db;
|
||||||
$this->propal = new Propal($this->db);
|
$this->propal = new Propal($this->db);
|
||||||
}
|
}
|
||||||
@ -59,9 +59,9 @@ class Proposals extends DolibarrApi
|
|||||||
*
|
*
|
||||||
* Return an array with commercial proposal informations
|
* Return an array with commercial proposal informations
|
||||||
*
|
*
|
||||||
* @param int $id ID of commercial proposal
|
* @param int $id ID of commercial proposal
|
||||||
* @param int $contact_list 0: Returned array of contacts/addresses contains all properties, 1: Return array contains just id
|
* @param int $contact_list 0: Returned array of contacts/addresses contains all properties, 1: Return array contains just id
|
||||||
* @return array|mixed data without useless information
|
* @return Object Object with cleaned properties
|
||||||
*
|
*
|
||||||
* @throws RestException
|
* @throws RestException
|
||||||
*/
|
*/
|
||||||
@ -76,8 +76,8 @@ class Proposals extends DolibarrApi
|
|||||||
* Return an array with proposal informations
|
* Return an array with proposal informations
|
||||||
*
|
*
|
||||||
* @param string $ref Ref of object
|
* @param string $ref Ref of object
|
||||||
* @param int $contact_list 0: Returned array of contacts/addresses contains all properties, 1: Return array contains just id
|
* @param int $contact_list 0: Returned array of contacts/addresses contains all properties, 1: Return array contains just id
|
||||||
* @return array|mixed data without useless information
|
* @return Object Object with cleaned properties
|
||||||
*
|
*
|
||||||
* @url GET ref/{ref}
|
* @url GET ref/{ref}
|
||||||
*
|
*
|
||||||
@ -93,9 +93,9 @@ class Proposals extends DolibarrApi
|
|||||||
*
|
*
|
||||||
* Return an array with proposal informations
|
* Return an array with proposal informations
|
||||||
*
|
*
|
||||||
* @param string $ref_ext External reference of object
|
* @param string $ref_ext External reference of object
|
||||||
* @param int $contact_list 0: Returned array of contacts/addresses contains all properties, 1: Return array contains just id
|
* @param int $contact_list 0: Returned array of contacts/addresses contains all properties, 1: Return array contains just id
|
||||||
* @return array|mixed data without useless information
|
* @return Object Object with cleaned properties
|
||||||
*
|
*
|
||||||
* @url GET ref_ext/{ref_ext}
|
* @url GET ref_ext/{ref_ext}
|
||||||
*
|
*
|
||||||
@ -111,11 +111,11 @@ class Proposals extends DolibarrApi
|
|||||||
*
|
*
|
||||||
* Return an array with proposal informations
|
* Return an array with proposal informations
|
||||||
*
|
*
|
||||||
* @param int $id ID of order
|
* @param int $id ID of order
|
||||||
* @param string $ref Ref of object
|
* @param string $ref Ref of object
|
||||||
* @param string $ref_ext External reference of object
|
* @param string $ref_ext External reference of object
|
||||||
* @param int $contact_list 0: Returned array of contacts/addresses contains all properties, 1: Return array contains just id
|
* @param int $contact_list 0: Returned array of contacts/addresses contains all properties, 1: Return array contains just id
|
||||||
* @return array|mixed data without useless information
|
* @return Object Object with cleaned properties
|
||||||
*
|
*
|
||||||
* @throws RestException
|
* @throws RestException
|
||||||
*/
|
*/
|
||||||
@ -289,7 +289,7 @@ class Proposals extends DolibarrApi
|
|||||||
*
|
*
|
||||||
* @url GET {id}/lines
|
* @url GET {id}/lines
|
||||||
*
|
*
|
||||||
* @return int
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function getLines($id, $sqlfilters = '')
|
public function getLines($id, $sqlfilters = '')
|
||||||
{
|
{
|
||||||
@ -461,7 +461,7 @@ class Proposals extends DolibarrApi
|
|||||||
}
|
}
|
||||||
if (empty($errors)) {
|
if (empty($errors)) {
|
||||||
$this->db->commit();
|
$this->db->commit();
|
||||||
return count($request_data);
|
return $updateRes;
|
||||||
} else {
|
} else {
|
||||||
$this->db->rollback();
|
$this->db->rollback();
|
||||||
throw new RestException(400, implode(", ", $errors));
|
throw new RestException(400, implode(", ", $errors));
|
||||||
@ -471,13 +471,12 @@ class Proposals extends DolibarrApi
|
|||||||
/**
|
/**
|
||||||
* Update a line of given commercial proposal
|
* Update a line of given commercial proposal
|
||||||
*
|
*
|
||||||
* @param int $id Id of commercial proposal to update
|
* @param int $id Id of commercial proposal to update
|
||||||
* @param int $lineid Id of line to update
|
* @param int $lineid Id of line to update
|
||||||
* @param array $request_data Commercial proposal line data
|
* @param array $request_data Commercial proposal line data
|
||||||
|
* @return Object|false Object with cleaned properties
|
||||||
*
|
*
|
||||||
* @url PUT {id}/lines/{lineid}
|
* @url PUT {id}/lines/{lineid}
|
||||||
*
|
|
||||||
* @return object
|
|
||||||
*/
|
*/
|
||||||
public function putLine($id, $lineid, $request_data = null)
|
public function putLine($id, $lineid, $request_data = null)
|
||||||
{
|
{
|
||||||
@ -548,13 +547,12 @@ class Proposals extends DolibarrApi
|
|||||||
* Delete a line of given commercial proposal
|
* Delete a line of given commercial proposal
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @param int $id Id of commercial proposal to update
|
* @param int $id Id of commercial proposal to update
|
||||||
* @param int $lineid Id of line to delete
|
* @param int $lineid Id of line to delete
|
||||||
|
* @return Object|false Object with cleaned properties
|
||||||
*
|
*
|
||||||
* @url DELETE {id}/lines/{lineid}
|
* @url DELETE {id}/lines/{lineid}
|
||||||
*
|
*
|
||||||
* @return int
|
|
||||||
*
|
|
||||||
* @throws RestException 401
|
* @throws RestException 401
|
||||||
* @throws RestException 404
|
* @throws RestException 404
|
||||||
*/
|
*/
|
||||||
@ -573,9 +571,7 @@ class Proposals extends DolibarrApi
|
|||||||
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
|
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO Check the lineid $lineid is a line of ojbect
|
$updateRes = $this->propal->deleteline($lineid, $id);
|
||||||
|
|
||||||
$updateRes = $this->propal->deleteline($lineid);
|
|
||||||
if ($updateRes > 0) {
|
if ($updateRes > 0) {
|
||||||
return $this->get($id);
|
return $this->get($id);
|
||||||
} else {
|
} else {
|
||||||
@ -589,11 +585,10 @@ class Proposals extends DolibarrApi
|
|||||||
* @param int $id Id of commercial proposal to update
|
* @param int $id Id of commercial proposal to update
|
||||||
* @param int $contactid Id of contact to add
|
* @param int $contactid Id of contact to add
|
||||||
* @param string $type Type of the contact (BILLING, SHIPPING, CUSTOMER)
|
* @param string $type Type of the contact (BILLING, SHIPPING, CUSTOMER)
|
||||||
|
* @return array
|
||||||
*
|
*
|
||||||
* @url POST {id}/contact/{contactid}/{type}
|
* @url POST {id}/contact/{contactid}/{type}
|
||||||
*
|
*
|
||||||
* @return int
|
|
||||||
*
|
|
||||||
* @throws RestException 401
|
* @throws RestException 401
|
||||||
* @throws RestException 404
|
* @throws RestException 404
|
||||||
*/
|
*/
|
||||||
@ -623,20 +618,24 @@ class Proposals extends DolibarrApi
|
|||||||
throw new RestException(500, 'Error when added the contact');
|
throw new RestException(500, 'Error when added the contact');
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->propal;
|
return array(
|
||||||
|
'success' => array(
|
||||||
|
'code' => 200,
|
||||||
|
'message' => 'Contact linked to the proposal'
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete a contact type of given commercial proposal
|
* Delete a contact type of given commercial proposal
|
||||||
*
|
*
|
||||||
* @param int $id Id of commercial proposal to update
|
* @param int $id Id of commercial proposal to update
|
||||||
* @param int $contactid Row key of the contact in the array contact_ids.
|
* @param int $contactid Row key of the contact in the array contact_ids.
|
||||||
* @param string $type Type of the contact (BILLING, SHIPPING, CUSTOMER).
|
* @param string $type Type of the contact (BILLING, SHIPPING, CUSTOMER).
|
||||||
|
* @return Object Object with cleaned properties
|
||||||
*
|
*
|
||||||
* @url DELETE {id}/contact/{contactid}/{type}
|
* @url DELETE {id}/contact/{contactid}/{type}
|
||||||
*
|
*
|
||||||
* @return int
|
|
||||||
*
|
|
||||||
* @throws RestException 401
|
* @throws RestException 401
|
||||||
* @throws RestException 404
|
* @throws RestException 404
|
||||||
* @throws RestException 500 System error
|
* @throws RestException 500 System error
|
||||||
@ -675,10 +674,9 @@ class Proposals extends DolibarrApi
|
|||||||
/**
|
/**
|
||||||
* Update commercial proposal general fields (won't touch lines of commercial proposal)
|
* Update commercial proposal general fields (won't touch lines of commercial proposal)
|
||||||
*
|
*
|
||||||
* @param int $id Id of commercial proposal to update
|
* @param int $id Id of commercial proposal to update
|
||||||
* @param array $request_data Datas
|
* @param array $request_data Datas
|
||||||
*
|
* @return Object Object with cleaned properties
|
||||||
* @return int
|
|
||||||
*/
|
*/
|
||||||
public function put($id, $request_data = null)
|
public function put($id, $request_data = null)
|
||||||
{
|
{
|
||||||
@ -722,7 +720,6 @@ class Proposals extends DolibarrApi
|
|||||||
* Delete commercial proposal
|
* Delete commercial proposal
|
||||||
*
|
*
|
||||||
* @param int $id Commercial proposal ID
|
* @param int $id Commercial proposal ID
|
||||||
*
|
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function delete($id)
|
public function delete($id)
|
||||||
@ -755,10 +752,9 @@ class Proposals extends DolibarrApi
|
|||||||
* Set a proposal to draft
|
* Set a proposal to draft
|
||||||
*
|
*
|
||||||
* @param int $id Order ID
|
* @param int $id Order ID
|
||||||
|
* @return Object Object with cleaned properties
|
||||||
*
|
*
|
||||||
* @url POST {id}/settodraft
|
* @url POST {id}/settodraft
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function settodraft($id)
|
public function settodraft($id)
|
||||||
{
|
{
|
||||||
@ -807,6 +803,7 @@ class Proposals extends DolibarrApi
|
|||||||
*
|
*
|
||||||
* @param int $id Commercial proposal ID
|
* @param int $id Commercial proposal ID
|
||||||
* @param int $notrigger 1=Does not execute triggers, 0= execute triggers
|
* @param int $notrigger 1=Does not execute triggers, 0= execute triggers
|
||||||
|
* @return Object Object with cleaned properties
|
||||||
*
|
*
|
||||||
* @url POST {id}/validate
|
* @url POST {id}/validate
|
||||||
*
|
*
|
||||||
@ -814,8 +811,6 @@ class Proposals extends DolibarrApi
|
|||||||
* @throws RestException 401
|
* @throws RestException 401
|
||||||
* @throws RestException 404
|
* @throws RestException 404
|
||||||
* @throws RestException 500 System error
|
* @throws RestException 500 System error
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function validate($id, $notrigger = 0)
|
public function validate($id, $notrigger = 0)
|
||||||
{
|
{
|
||||||
@ -860,10 +855,9 @@ class Proposals extends DolibarrApi
|
|||||||
* @param int $status Must be 2 (accepted) or 3 (refused) {@min 2}{@max 3}
|
* @param int $status Must be 2 (accepted) or 3 (refused) {@min 2}{@max 3}
|
||||||
* @param string $note_private Add this mention at end of private note
|
* @param string $note_private Add this mention at end of private note
|
||||||
* @param int $notrigger Disabled triggers
|
* @param int $notrigger Disabled triggers
|
||||||
|
* @return Object Object with cleaned properties
|
||||||
*
|
*
|
||||||
* @url POST {id}/close
|
* @url POST {id}/close
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function close($id, $status, $note_private = '', $notrigger = 0)
|
public function close($id, $status, $note_private = '', $notrigger = 0)
|
||||||
{
|
{
|
||||||
@ -905,10 +899,9 @@ class Proposals extends DolibarrApi
|
|||||||
* Set a commercial proposal billed. Could be also called setbilled
|
* Set a commercial proposal billed. Could be also called setbilled
|
||||||
*
|
*
|
||||||
* @param int $id Commercial proposal ID
|
* @param int $id Commercial proposal ID
|
||||||
|
* @return Object Object with cleaned properties
|
||||||
*
|
*
|
||||||
* @url POST {id}/setinvoiced
|
* @url POST {id}/setinvoiced
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function setinvoiced($id)
|
public function setinvoiced($id)
|
||||||
{
|
{
|
||||||
@ -949,6 +942,7 @@ class Proposals extends DolibarrApi
|
|||||||
*
|
*
|
||||||
* @param array $data Array with data to verify
|
* @param array $data Array with data to verify
|
||||||
* @return array
|
* @return array
|
||||||
|
*
|
||||||
* @throws RestException
|
* @throws RestException
|
||||||
*/
|
*/
|
||||||
private function _validate($data)
|
private function _validate($data)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user