Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into new_event_with_multi_contact
This commit is contained in:
commit
15a8f2037b
21
.travis.yml
21
.travis.yml
@ -37,6 +37,7 @@ php:
|
|||||||
- '5.6'
|
- '5.6'
|
||||||
- '7.0'
|
- '7.0'
|
||||||
- '7.1'
|
- '7.1'
|
||||||
|
- '7.2'
|
||||||
#- hhvm only with dist: trusty
|
#- hhvm only with dist: trusty
|
||||||
- nightly
|
- nightly
|
||||||
|
|
||||||
@ -71,6 +72,8 @@ matrix:
|
|||||||
env: DB=postgresql
|
env: DB=postgresql
|
||||||
- php: '7.0'
|
- php: '7.0'
|
||||||
env: DB=postgresql
|
env: DB=postgresql
|
||||||
|
- php: '7.1'
|
||||||
|
env: DB=postgresql
|
||||||
- php: hhvm
|
- php: hhvm
|
||||||
env: DB=postgresql
|
env: DB=postgresql
|
||||||
- php: nightly
|
- php: nightly
|
||||||
@ -79,7 +82,7 @@ matrix:
|
|||||||
notifications:
|
notifications:
|
||||||
email:
|
email:
|
||||||
on_success: never # [always|never|change] default: change
|
on_success: never # [always|never|change] default: change
|
||||||
on_failure: change # [always|never|change] default: always
|
on_failure: never # [always|never|change] default: always
|
||||||
irc:
|
irc:
|
||||||
channels:
|
channels:
|
||||||
- "chat.freenode.net#dolibarr"
|
- "chat.freenode.net#dolibarr"
|
||||||
@ -123,7 +126,10 @@ install:
|
|||||||
if [ "$TRAVIS_PHP_VERSION" = '5.3' ] || [ "$TRAVIS_PHP_VERSION" = '5.4' ] || [ "$TRAVIS_PHP_VERSION" = '5.5' ]; then
|
if [ "$TRAVIS_PHP_VERSION" = '5.3' ] || [ "$TRAVIS_PHP_VERSION" = '5.4' ] || [ "$TRAVIS_PHP_VERSION" = '5.5' ]; then
|
||||||
composer -n require phpunit/phpunit ^4
|
composer -n require phpunit/phpunit ^4
|
||||||
fi
|
fi
|
||||||
if [ "$TRAVIS_PHP_VERSION" = '5.6' ] || [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = '7.1' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then
|
if [ "$TRAVIS_PHP_VERSION" = '5.6' ] || [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = '7.1' ]; then
|
||||||
|
composer -n require phpunit/phpunit ^5
|
||||||
|
fi
|
||||||
|
if [ "$TRAVIS_PHP_VERSION" = '7.2' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then
|
||||||
composer -n require phpunit/phpunit ^5
|
composer -n require phpunit/phpunit ^5
|
||||||
fi
|
fi
|
||||||
echo
|
echo
|
||||||
@ -163,7 +169,7 @@ before_script:
|
|||||||
#echo 'extension = apc.so' >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini
|
#echo 'extension = apc.so' >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini
|
||||||
echo
|
echo
|
||||||
echo "Enabling Memcached for PHP <= 5.4"
|
echo "Enabling Memcached for PHP <= 5.4"
|
||||||
# Documentation says it should be available for all PHP versions but it's not for 5.5 and 5.6, 7.0, 7.1 and nightly!
|
# Documentation says it should be available for all PHP versions but it's not for 5.5 and 5.6, 7.0, 7.1, 7.2 and nightly!
|
||||||
echo 'extension = memcached.so' >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini
|
echo 'extension = memcached.so' >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini
|
||||||
fi
|
fi
|
||||||
phpenv rehash
|
phpenv rehash
|
||||||
@ -237,7 +243,7 @@ before_script:
|
|||||||
echo "Setting up Apache + FPM"
|
echo "Setting up Apache + FPM"
|
||||||
# enable php-fpm
|
# enable php-fpm
|
||||||
cp ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.conf.default ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.conf
|
cp ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.conf.default ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.conf
|
||||||
if [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = '7.1' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then
|
if [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = '7.1' ] || [ "$TRAVIS_PHP_VERSION" = '7.2' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then
|
||||||
# Copy the included pool
|
# Copy the included pool
|
||||||
cp ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.d/www.conf.default ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.d/www.conf
|
cp ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.d/www.conf.default ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.d/www.conf
|
||||||
fi
|
fi
|
||||||
@ -313,13 +319,13 @@ script:
|
|||||||
php upgrade2.php 3.9.0 4.0.0 MAIN_MODULE_API,MAIN_MODULE_SUPPLIERPROPOSAL > $TRAVIS_BUILD_DIR/upgrade390400-2.log
|
php upgrade2.php 3.9.0 4.0.0 MAIN_MODULE_API,MAIN_MODULE_SUPPLIERPROPOSAL > $TRAVIS_BUILD_DIR/upgrade390400-2.log
|
||||||
php step5.php 3.9.0 4.0.0 > $TRAVIS_BUILD_DIR/upgrade390400-3.log
|
php step5.php 3.9.0 4.0.0 > $TRAVIS_BUILD_DIR/upgrade390400-3.log
|
||||||
php upgrade.php 4.0.0 5.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade400500.log
|
php upgrade.php 4.0.0 5.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade400500.log
|
||||||
php upgrade2.php 4.0.0 5.0.0 MAIN_MODULE_API,MAIN_MODULE_SUPPLIERPROPOSAL > $TRAVIS_BUILD_DIR/upgrade400500-2.log
|
php upgrade2.php 4.0.0 5.0.0 > $TRAVIS_BUILD_DIR/upgrade400500-2.log
|
||||||
php step5.php 4.0.0 5.0.0 > $TRAVIS_BUILD_DIR/upgrade400500-3.log
|
php step5.php 4.0.0 5.0.0 > $TRAVIS_BUILD_DIR/upgrade400500-3.log
|
||||||
php upgrade.php 5.0.0 6.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade500600.log
|
php upgrade.php 5.0.0 6.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade500600.log
|
||||||
php upgrade2.php 5.0.0 6.0.0 MAIN_MODULE_API,MAIN_MODULE_SUPPLIERPROPOSAL > $TRAVIS_BUILD_DIR/upgrade500600-2.log
|
php upgrade2.php 5.0.0 6.0.0 > $TRAVIS_BUILD_DIR/upgrade500600-2.log
|
||||||
php step5.php 5.0.0 6.0.0 > $TRAVIS_BUILD_DIR/upgrade500600-3.log
|
php step5.php 5.0.0 6.0.0 > $TRAVIS_BUILD_DIR/upgrade500600-3.log
|
||||||
php upgrade.php 6.0.0 7.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade600700.log
|
php upgrade.php 6.0.0 7.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade600700.log
|
||||||
php upgrade2.php 6.0.0 7.0.0 MAIN_MODULE_API,MAIN_MODULE_SUPPLIERPROPOSAL > $TRAVIS_BUILD_DIR/upgrade600700-2.log
|
php upgrade2.php 6.0.0 7.0.0 MAIN_MODULE_WEBSITE,MAIN_MODULE_SUPPLIERPROPOSAL > $TRAVIS_BUILD_DIR/upgrade600700-2.log
|
||||||
php step5.php 6.0.0 7.0.0 > $TRAVIS_BUILD_DIR/upgrade600700-3.log
|
php step5.php 6.0.0 7.0.0 > $TRAVIS_BUILD_DIR/upgrade600700-3.log
|
||||||
cd -
|
cd -
|
||||||
set +e
|
set +e
|
||||||
@ -332,6 +338,7 @@ script:
|
|||||||
|
|
||||||
- |
|
- |
|
||||||
echo "Unit testing"
|
echo "Unit testing"
|
||||||
|
phpunit --version
|
||||||
# Ensure we catch errors. Set this to +e if you want to go to the end to see dolibarr.log file.
|
# Ensure we catch errors. Set this to +e if you want to go to the end to see dolibarr.log file.
|
||||||
set -e
|
set -e
|
||||||
phpunit -d memory_limit=-1 -c test/phpunit/phpunittest.xml test/phpunit/AllTests.php
|
phpunit -d memory_limit=-1 -c test/phpunit/phpunittest.xml test/phpunit/AllTests.php
|
||||||
|
|||||||
10
COPYRIGHT
10
COPYRIGHT
@ -34,12 +34,11 @@ Swift Mailer 5.4.2-DEV MIT license Yes
|
|||||||
Stripe 4.7.0 MIT licence Yes Library for Stripe module
|
Stripe 4.7.0 MIT licence Yes Library for Stripe module
|
||||||
|
|
||||||
JS libraries:
|
JS libraries:
|
||||||
jQuery 1.11.3 MIT License Yes JS library
|
jQuery 3.1.1 MIT License Yes JS library
|
||||||
jQuery UI 1.11.4 GPL and MIT License Yes JS library plugin UI
|
jQuery UI 1.12.1 GPL and MIT License Yes JS library plugin UI
|
||||||
jQuery select2 3.5.2 GPL and Apache License Yes JS library plugin for sexier multiselect
|
jQuery select2 4.0.5 GPL and Apache License Yes JS library plugin for sexier multiselect
|
||||||
jQuery blockUI 2.70.0 GPL and MIT License Yes JS library plugin blockUI (to use ajax popups)
|
jQuery blockUI 2.70.0 GPL and MIT License Yes JS library plugin blockUI (to use ajax popups)
|
||||||
jQuery Colorpicker 1.1 MIT License Yes JS library for color picker for a defined list of colors
|
jQuery Colorpicker 1.1 MIT License Yes JS library for color picker for a defined list of colors
|
||||||
jQuery FileUpload 5.0.3 GPL and MIT License Yes JS library to upload files
|
|
||||||
jQuery Flot 0.8.3 MIT License Yes JS library to build graph
|
jQuery Flot 0.8.3 MIT License Yes JS library to build graph
|
||||||
jQuery JCrop 0.9.8 GPL and MIT License Yes JS library plugin Crop (to crop images)
|
jQuery JCrop 0.9.8 GPL and MIT License Yes JS library plugin Crop (to crop images)
|
||||||
jQuery Jeditable 1.7.1 GPL and MIT License Yes JS library plugin jeditable (to edit in place)
|
jQuery Jeditable 1.7.1 GPL and MIT License Yes JS library plugin jeditable (to edit in place)
|
||||||
@ -49,8 +48,7 @@ jQuery jqueryFileTree 1.0.1 GPL and MIT License Yes
|
|||||||
jQuery jquerytreeview 1.4.1 MIT License Yes JS library for filetree
|
jQuery jquerytreeview 1.4.1 MIT License Yes JS library for filetree
|
||||||
jQuery TableDnD 0.6 GPL and MIT License Yes JS library plugin TableDnD (to reorder table rows)
|
jQuery TableDnD 0.6 GPL and MIT License Yes JS library plugin TableDnD (to reorder table rows)
|
||||||
jQuery Timepicker 1.1.0 GPL and MIT License Yes JS library Timepicker addon for Datepicker
|
jQuery Timepicker 1.1.0 GPL and MIT License Yes JS library Timepicker addon for Datepicker
|
||||||
jQuery Tiptip 1.3 GPL and MIT License Yes JS library for tooltips
|
jsGanttImproved 1.7.5.4 BSD License Yes JS library (to build Gantt reports)
|
||||||
jsGanttImproved 1.7.5.2 BSD License Yes JS library (to build Gantt reports)
|
|
||||||
JsTimezoneDetect 1.0.6 MIT License Yes JS library to detect user timezone
|
JsTimezoneDetect 1.0.6 MIT License Yes JS library to detect user timezone
|
||||||
SwaggerUI 2.0.24 GPL-2+ Yes JS library to offer the REST API explorer
|
SwaggerUI 2.0.24 GPL-2+ Yes JS library to offer the REST API explorer
|
||||||
Ace 1.2.8 BSD Yes JS library to get code syntaxique coloration in a textarea.
|
Ace 1.2.8 BSD Yes JS library to get code syntaxique coloration in a textarea.
|
||||||
|
|||||||
68
ChangeLog
68
ChangeLog
@ -5,6 +5,7 @@ English Dolibarr ChangeLog
|
|||||||
|
|
||||||
|
|
||||||
***** ChangeLog for 7.0.0 compared to 6.0.* *****
|
***** ChangeLog for 7.0.0 compared to 6.0.* *****
|
||||||
|
For users:
|
||||||
|
|
||||||
For developers:
|
For developers:
|
||||||
NEW: Add hook addAdminLdapOptions and doAction in ldap admin page
|
NEW: Add hook addAdminLdapOptions and doAction in ldap admin page
|
||||||
@ -13,16 +14,52 @@ NEW: complete_head_from_modules() in ldap_prepare_head()
|
|||||||
WARNING:
|
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 methode "cloture" on contact were renamed into "closeAll".
|
* The methode "cloture" on contract were renamed into "closeAll".
|
||||||
* The substitution key for reference of object is now __REF__ whatever is the object (it replaces __ORDERREF__,
|
* The substitution key for reference of objects is now __REF__ whatever is the object (it replaces __ORDERREF__,
|
||||||
__PROPALREF__, ...)
|
__PROPALREF__, ...)
|
||||||
* Some REST API to access the dictionary (country, town, ...) were moved into a common API.
|
* The substition key __SIGNATURE__ was renamed into __USER_SIGNATURE__ to follow naming conventions.
|
||||||
* Page bank/index.php and bank/bankentries.php were renamed into bank/list.php and bank/bankentries_list.php to
|
* Substitution keys with syntax %XXX% were renamed into __XXX__ to match others.
|
||||||
follow page naming conventions (so default filter/sort order features can also work).
|
* Removed old deprecated REST API (APIs found into '/root' section of the REST API explorer in Dolibarr v6).
|
||||||
* The trigger ORDER_SUPPLIER_STATUS_ONPROCESS was renamed ORDER_SUPPLIER_STATUS_ORDERED
|
* Some REST API to access setup features, like dictionaries (country, town, extrafields, ...) were moved into a
|
||||||
* The trigger ORDER_SUPPLIER_STATUS_RECEIVED_ALL was renamed ORDER_SUPPLIER_STATUS_RECEIVED_COMPLETELY
|
common API "/setup".
|
||||||
|
* The REST API /documents were renamed into /documents/download and /documents/upload.
|
||||||
|
* Page bank/index.php, bank/bankentries.php and comm/actions/listactions.php were renamed into
|
||||||
|
bank/list.php, bank/bankentries_list.php and comm/actions/list.php to follow page naming
|
||||||
|
conventions (so default filter/sort order features can also work for this pages).
|
||||||
|
* The trigger ORDER_SUPPLIER_STATUS_ONPROCESS was renamed into ORDER_SUPPLIER_STATUS_ORDERED.
|
||||||
|
* The trigger ORDER_SUPPLIER_STATUS_RECEIVED_ALL was renamed into ORDER_SUPPLIER_STATUS_RECEIVED_COMPLETELY.
|
||||||
|
* The parameter note into method cloture() is added at end of private note (previously in v6, it replaced).
|
||||||
|
* The parameter $user is now mandatory for method createFromOrder and createFromPropal.
|
||||||
|
* Removed js library 'fileupload' that was not used by core code.
|
||||||
|
* IE8 and earlier and Firefox 12 and earlier (< 2012) are no more supported.
|
||||||
|
|
||||||
|
|
||||||
|
***** ChangeLog for 6.0.3 compared to 6.0.2 *****
|
||||||
|
FIX: #7211 Update qty dispatched on qty change
|
||||||
|
FIX: #7458
|
||||||
|
FIX: #7593
|
||||||
|
FIX: #7616
|
||||||
|
FIX: #7619
|
||||||
|
FIX: #7626
|
||||||
|
FIX: #7648
|
||||||
|
FIX: #7675
|
||||||
|
FIX: Agenda events are not exported in the ICAL, VCAL if begin exactly with the same $datestart
|
||||||
|
FIX: API to get object does not return data of linked objects
|
||||||
|
FIX: Bad localtax apply
|
||||||
|
FIX: Bad ressource list in popup in gantt view
|
||||||
|
FIX: bankentries search conciliated if val 0
|
||||||
|
FIX: hook formObjectOptions() must use $expe and not $object
|
||||||
|
FIX: make of link to other object during creation
|
||||||
|
FIX: Missing function getLinesArray
|
||||||
|
FIX: old batch not shown in multi shipping
|
||||||
|
FIX: paid supplier invoices are shown as abandoned
|
||||||
|
FIX: selection of thirdparty was lost on stats page of invoices
|
||||||
|
FIX: sql syntax error because of old field accountancy_journal
|
||||||
|
FIX: Stats on invoices show nothing
|
||||||
|
FIX: substitution in ODT of thirdparties documents
|
||||||
|
FIX: wrong key in selectarray
|
||||||
|
FIX: wrong personnal project time spent
|
||||||
|
|
||||||
***** ChangeLog for 6.0.2 compared to 6.0.1 *****
|
***** ChangeLog for 6.0.2 compared to 6.0.1 *****
|
||||||
FIX: #7148
|
FIX: #7148
|
||||||
FIX: #7288
|
FIX: #7288
|
||||||
@ -246,6 +283,23 @@ Following changes may create regression for some external modules, but were nece
|
|||||||
content by doing a print into function, sometimes by returning content into "resprint". This has been fixed to follow
|
content by doing a print into function, sometimes by returning content into "resprint". This has been fixed to follow
|
||||||
hook specifications so you must return output into "resprint".
|
hook specifications so you must return output into "resprint".
|
||||||
|
|
||||||
|
|
||||||
|
***** ChangeLog for 5.0.7 compared to 5.0.6 *****
|
||||||
|
FIX: #7000 Dashboard link for late pending payment supplier invoices do not work
|
||||||
|
FIX: #7148
|
||||||
|
FIX: #7325 Default VAT rate when editing template invoices is 0%
|
||||||
|
FIX: #7366 renaming table with pgsql
|
||||||
|
FIX: #7391
|
||||||
|
FIX: #7510 Bug: extrafield content disappear when generate pdf within intervention
|
||||||
|
FIX: Agenda events are not exported in the ICAL, VCAL if begin exactly with the same $datestart
|
||||||
|
FIX: Bad link to unpayed suppliers invoices
|
||||||
|
FIX: bankentries search conciliated if val 0
|
||||||
|
FIX: multicompany better accuracy in rounding and with revenue stamp.
|
||||||
|
FIX: PDF output was sharing 2 different currencies in same total
|
||||||
|
FIX: Upgrade missing on field
|
||||||
|
FIX: wrong key in selectarray
|
||||||
|
FIX: wrong personnal project time spent
|
||||||
|
|
||||||
***** ChangeLog for 5.0.6 compared to 5.0.5 *****
|
***** ChangeLog for 5.0.6 compared to 5.0.5 *****
|
||||||
FIX: Removed a bad symbolic link into custom directory.
|
FIX: Removed a bad symbolic link into custom directory.
|
||||||
FIX: Renaming a resource ref rename also the directory of attached files.
|
FIX: Renaming a resource ref rename also the directory of attached files.
|
||||||
|
|||||||
@ -43,3 +43,5 @@ DoliWampWillStartApacheMysql=DoliWamp installer will now start or restart Apache
|
|||||||
OldVersionFoundAndMoveInNew=An old database version has been found and moved to be used by new Dolibarr version
|
OldVersionFoundAndMoveInNew=An old database version has been found and moved to be used by new Dolibarr version
|
||||||
OldVersionFoundButFailedToMoveInNew=An old database version has been found but could not be moved to be used with new Dolibarr version
|
OldVersionFoundButFailedToMoveInNew=An old database version has been found but could not be moved to be used with new Dolibarr version
|
||||||
|
|
||||||
|
DLLMissing=The "Visual C++ Redistributable for Visual Studio 2012" component is missing. Please install the 32-bit version (vcredit_x86.exe) first from https://www.microsoft.com/en-us/download/details.aspx?id=30679 and restart DoliWamp installation/upgrade.
|
||||||
|
ContinueAnyway=Continue anyway (install process may fails without this prerequisite)
|
||||||
|
|||||||
@ -32,7 +32,7 @@ AppPublisherURL=http://www.nltechno.com
|
|||||||
AppSupportURL=http://www.dolibarr.org
|
AppSupportURL=http://www.dolibarr.org
|
||||||
AppUpdatesURL=http://www.dolibarr.org
|
AppUpdatesURL=http://www.dolibarr.org
|
||||||
AppComments=DoliWamp includes Dolibarr, Apache, PHP and Mysql softwares.
|
AppComments=DoliWamp includes Dolibarr, Apache, PHP and Mysql softwares.
|
||||||
AppCopyright=Copyright (C) 2008-2016 Laurent Destailleur, NLTechno
|
AppCopyright=Copyright (C) 2008-2017 Laurent Destailleur (NLTechno), Fabian Rodriguez (Le Goût du Libre)
|
||||||
DefaultDirName=c:\dolibarr
|
DefaultDirName=c:\dolibarr
|
||||||
DefaultGroupName=Dolibarr
|
DefaultGroupName=Dolibarr
|
||||||
;LicenseFile=COPYING
|
;LicenseFile=COPYING
|
||||||
@ -202,10 +202,30 @@ var value: String;
|
|||||||
function InitializeSetup(): Boolean;
|
function InitializeSetup(): Boolean;
|
||||||
begin
|
begin
|
||||||
Result := MsgBox(CustomMessage('YouWillInstallDoliWamp')+#13#13+CustomMessage('ThisAssistantInstallOrUpgrade')+#13#13+CustomMessage('IfYouHaveTechnicalKnowledge')+#13#13+CustomMessage('ButIfYouLook')+#13#13+CustomMessage('DoYouWantToStart'), mbConfirmation, MB_YESNO) = IDYES;
|
Result := MsgBox(CustomMessage('YouWillInstallDoliWamp')+#13#13+CustomMessage('ThisAssistantInstallOrUpgrade')+#13#13+CustomMessage('IfYouHaveTechnicalKnowledge')+#13#13+CustomMessage('ButIfYouLook')+#13#13+CustomMessage('DoYouWantToStart'), mbConfirmation, MB_YESNO) = IDYES;
|
||||||
|
|
||||||
|
if Result then
|
||||||
|
begin
|
||||||
|
|
||||||
|
//----------------------------------------------
|
||||||
|
// Test if msvcr110 DLL has been installed
|
||||||
|
//----------------------------------------------
|
||||||
|
|
||||||
|
if not FileExists ('c:/windows/system32/msvcr110.dll') and not FileExists ('c:/windows/sysWOW64/msvcr110.dll') and not FileExists ('c:/winnt/system32/msvcr110.dll') and not FileExists ('c:/winnt/sysWOW64/msvcr110.dll') then
|
||||||
|
begin
|
||||||
|
// TODO - offer to install the component by opening the URL in the default browser, abort installation if user doesn't accept
|
||||||
|
Result := MsgBox(CustomMessage('DLLMissing')+#13#13+CustomMessage('ContinueAnyway'), mbConfirmation, MB_YESNO) = IDYES;
|
||||||
|
|
||||||
|
end;
|
||||||
|
// Pb seems similar with msvcp110.dll
|
||||||
|
//vcredist_x64.exe
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure InitializeWizard();
|
procedure InitializeWizard();
|
||||||
begin
|
begin
|
||||||
|
|
||||||
//version des applis, a modifier pour chaque version de WampServer 2
|
//version des applis, a modifier pour chaque version de WampServer 2
|
||||||
apacheVersion := '2.4.9';
|
apacheVersion := '2.4.9';
|
||||||
phpVersion := '5.5.12' ;
|
phpVersion := '5.5.12' ;
|
||||||
@ -217,6 +237,7 @@ begin
|
|||||||
mysqlPort := '3306';
|
mysqlPort := '3306';
|
||||||
newPassword := 'changeme';
|
newPassword := 'changeme';
|
||||||
|
|
||||||
|
|
||||||
firstinstall := true;
|
firstinstall := true;
|
||||||
|
|
||||||
|
|
||||||
@ -344,19 +365,6 @@ begin
|
|||||||
exedirold := pathWithSlashes+'/bin/mysql/mysql5.0.45';
|
exedirold := pathWithSlashes+'/bin/mysql/mysql5.0.45';
|
||||||
exedirnew := pathWithSlashes+'/bin/mysql/mysql5.0.45';
|
exedirnew := pathWithSlashes+'/bin/mysql/mysql5.0.45';
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------
|
|
||||||
// Test if msvcr110 DLL has been installed
|
|
||||||
//----------------------------------------------
|
|
||||||
|
|
||||||
if not FileExists ('c:/windows/system32/msvcr110.dll') and not FileExists ('c:/windows/sysWOW64/msvcr110.dll') and not FileExists ('c:/winnt/system32/msvcr110.dll') and not FileExists ('c:/winnt/sysWOW64/msvcr110.dll') then
|
|
||||||
begin
|
|
||||||
// TODO Copy file or ask to install package ?
|
|
||||||
//CustomMessage('YouWillInstallDoliWamp')+#13#13
|
|
||||||
MsgBox('The package vcredist_x86.exe must have been installed first. It seems it is not. Please install it first from <a href="http://www.microsoft.com/en-us/download/details.aspx?id=30679">http://www.microsoft.com/en-us/download/details.aspx?id=30679</a> then restart DoliWamp installation/upgrade.',mbInformation,MB_OK);
|
|
||||||
end;
|
|
||||||
// Pb seems similar with msvcp110.dll
|
|
||||||
//vcredist_x64.exe
|
|
||||||
|
|
||||||
|
|
||||||
// If we have a new database version, we should only copy old my.ini file into new directory
|
// If we have a new database version, we should only copy old my.ini file into new directory
|
||||||
|
|||||||
@ -535,7 +535,7 @@ a:hover {
|
|||||||
<li><a href="?lang={$langues[$langue]['autreLangueLien1']}">{$langues[$langue]['autreLangue1']}</a>
|
<li><a href="?lang={$langues[$langue]['autreLangueLien1']}">{$langues[$langue]['autreLangue1']}</a>
|
||||||
- <a href="?lang={$langues[$langue]['autreLangueLien2']}">{$langues[$langue]['autreLangue2']}</a></li>
|
- <a href="?lang={$langues[$langue]['autreLangueLien2']}">{$langues[$langue]['autreLangue2']}</a></li>
|
||||||
<br><br>
|
<br><br>
|
||||||
<li>Provided by <a href="http://www.nltechno.com" targer="_blank">NLTechno</a></li>
|
<li>Provided by <a href="https://www.nltechno.com" targer="_blank">NLTechno</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</td></tr></table>
|
</td></tr></table>
|
||||||
<hr>
|
<hr>
|
||||||
@ -580,7 +580,7 @@ a:hover {
|
|||||||
|
|
||||||
|
|
||||||
<ul id="foot">
|
<ul id="foot">
|
||||||
<li><a href="http://www.nltechno.com/pages/dolibarrwinbin.php">DoliWamp project</a> was built from modified sources of <a href="http://www.wampserver.com">WampServer project</a> from Anaska</li>
|
<li><a href="https://www.nltechno.com/pages/dolibarrwinbin.php">DoliWamp project</a> was built from modified sources of <a href="http://www.wampserver.com">WampServer project</a> from Anaska</li>
|
||||||
</ul>
|
</ul>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@ -571,6 +571,7 @@ if ($nboftargetok) {
|
|||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/mobiledetect/mobiledetectlib/.gitmodules`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/mobiledetect/mobiledetectlib/.gitmodules`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nusoap/lib/Mail`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nusoap/lib/Mail`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nusoap/samples`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nusoap/samples`;
|
||||||
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/parsedown/LICENSE.txt`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/php-iban/docs`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/php-iban/docs`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/.gitattributes`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/.gitattributes`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/Classes/license.md`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/Classes/license.md`;
|
||||||
@ -579,6 +580,7 @@ if ($nboftargetok) {
|
|||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/Examples`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/Examples`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/unitTests`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/unitTests`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/license.md`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/license.md`;
|
||||||
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/stripe/LICENSE`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/dejavu-fonts-ttf-*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/dejavu-fonts-ttf-*`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/freefont-*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/freefont-*`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/ae_fonts_*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/ae_fonts_*`;
|
||||||
@ -590,6 +592,8 @@ if ($nboftargetok) {
|
|||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/utils`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/utils`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/tools`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/tools`;
|
||||||
$ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/LICENSE.TXT`;
|
$ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/LICENSE.TXT`;
|
||||||
|
$ret=`rm -f $BUILDROOT/$PROJECT/htdocs/theme/common/octicons/LICENSE`;
|
||||||
|
|
||||||
|
|
||||||
print "Remove subdir of custom dir\n";
|
print "Remove subdir of custom dir\n";
|
||||||
print "find $BUILDROOT/$PROJECT/htdocs/custom/* -type d -exec rm -fr {} \\;\n";
|
print "find $BUILDROOT/$PROJECT/htdocs/custom/* -type d -exec rm -fr {} \\;\n";
|
||||||
|
|||||||
@ -82,8 +82,14 @@ with
|
|||||||
// LDR To open in same window
|
// LDR To open in same window
|
||||||
//var OpenWindow=window.open(pRef, "newwin", "height="+vHeight+",width="+vWidth);
|
//var OpenWindow=window.open(pRef, "newwin", "height="+vHeight+",width="+vWidth);
|
||||||
window.location.href=pRef
|
window.location.href=pRef
|
||||||
* Replace hard coded string with i18n["String"];
|
|
||||||
|
|
||||||
|
* Replace
|
||||||
|
vTmpDiv=this.newNode(vTmpCell, 'div', null, null, vTaskList[i].getResource());
|
||||||
|
with
|
||||||
|
var vTmpNode=this.newNode(vTmpCell, 'div', null, '');
|
||||||
|
vTmpNode=this.newNode(vTmpNode, 'a', null, '', vLangs[vLang]['moreinfo']);
|
||||||
|
vTmpNode.setAttribute('href',vTaskList[i].getLink());
|
||||||
|
|
||||||
|
|
||||||
JCROP:
|
JCROP:
|
||||||
------
|
------
|
||||||
@ -99,7 +105,7 @@ JQUERYFILETREE:
|
|||||||
RESTLER:
|
RESTLER:
|
||||||
--------
|
--------
|
||||||
|
|
||||||
* Add 2 lines into function
|
* Add 2 lines into file AutoLoader.php to complete function
|
||||||
private function alias($className, $currentClass)
|
private function alias($className, $currentClass)
|
||||||
{
|
{
|
||||||
...
|
...
|
||||||
@ -110,4 +116,15 @@ to get
|
|||||||
if ($className == 'Luracast\Restler\string') return;
|
if ($className == 'Luracast\Restler\string') return;
|
||||||
if ($className == 'Luracast\Restler\mixed') return;
|
if ($className == 'Luracast\Restler\mixed') return;
|
||||||
...
|
...
|
||||||
|
|
||||||
|
Change also file Luracast/Restler/explorer/index.html
|
||||||
|
|
||||||
|
+With swagger 2:
|
||||||
|
|
||||||
|
* Add line into Util.php to complete function
|
||||||
|
|
||||||
|
public static function getShortName($className)
|
||||||
|
{
|
||||||
|
// @CHANGE LDR
|
||||||
|
if (! is_string($className)) return;
|
||||||
|
//var_dump($className);
|
||||||
|
|||||||
@ -7,3 +7,7 @@
|
|||||||
# ldapsearch -h hostname -x -b "ou=people,dc=teclib,dc=infra"
|
# ldapsearch -h hostname -x -b "ou=people,dc=teclib,dc=infra"
|
||||||
# ldapsearch -h hostname -x -z 0 -b "o=somecompany.com" -D "cn=manager,o=somecompany.com" -w password "(objectclass=*)"
|
# ldapsearch -h hostname -x -z 0 -b "o=somecompany.com" -D "cn=manager,o=somecompany.com" -w password "(objectclass=*)"
|
||||||
# ldapsearch -h hostname -x -b "o=somecompany.com" -D "cn=manager,o=somecompany.com" -w password "(objectclass=*)"
|
# ldapsearch -h hostname -x -b "o=somecompany.com" -D "cn=manager,o=somecompany.com" -w password "(objectclass=*)"
|
||||||
|
#
|
||||||
|
# Example to test a ldap search:
|
||||||
|
# ldapsearch -h hostname -x -z 5 -b 'OU=Collaborateurs,OU=Utilisateurs,OU=MyCompany,DC=bocal,DC=lan' -D 'CN=UserAdmin,OU=Informatique,OU=Utilisateurs,OU=MyCompany,DC=bocal,DC=lan' -w password
|
||||||
|
|
||||||
|
|||||||
@ -78,15 +78,17 @@ $sqls=array(
|
|||||||
'DELETE FROM '.MAIN_DB_PREFIX.'propaldet',
|
'DELETE FROM '.MAIN_DB_PREFIX.'propaldet',
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'propal',
|
'DELETE FROM '.MAIN_DB_PREFIX.'propal',
|
||||||
),
|
),
|
||||||
'supplier_order'=>array(
|
'supplier_proposal'=>array(
|
||||||
|
'DELETE FROM '.MAIN_DB_PREFIX.'supplier_proposaldet',
|
||||||
|
'DELETE FROM '.MAIN_DB_PREFIX.'supplier_proposal',
|
||||||
|
),
|
||||||
|
'supplier_order'=>array(
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'commande_fournisseurdet',
|
'DELETE FROM '.MAIN_DB_PREFIX.'commande_fournisseurdet',
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'commande_fournisseur',
|
'DELETE FROM '.MAIN_DB_PREFIX.'commande_fournisseur',
|
||||||
),
|
),
|
||||||
'supplier_invoice'=>array(
|
'supplier_invoice'=>array(
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn_det',
|
'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn_det',
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn',
|
'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn',
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'supplier_proposaldet',
|
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'supplier_proposal',
|
|
||||||
),
|
),
|
||||||
'delivery'=>array(
|
'delivery'=>array(
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'livraisondet',
|
'DELETE FROM '.MAIN_DB_PREFIX.'livraisondet',
|
||||||
@ -114,8 +116,10 @@ $sqls=array(
|
|||||||
'DELETE FROM '.MAIN_DB_PREFIX.'product_lang',
|
'DELETE FROM '.MAIN_DB_PREFIX.'product_lang',
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'product_price',
|
'DELETE FROM '.MAIN_DB_PREFIX.'product_price',
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'product_fournisseur_price',
|
'DELETE FROM '.MAIN_DB_PREFIX.'product_fournisseur_price',
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'product_stock',
|
'DELETE FROM '.MAIN_DB_PREFIX.'product_batch',
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'product',
|
'DELETE FROM '.MAIN_DB_PREFIX.'product_stock',
|
||||||
|
'DELETE FROM '.MAIN_DB_PREFIX.'product_lot',
|
||||||
|
'DELETE FROM '.MAIN_DB_PREFIX.'product',
|
||||||
),
|
),
|
||||||
'project'=>array(
|
'project'=>array(
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'projet_task_time',
|
'DELETE FROM '.MAIN_DB_PREFIX.'projet_task_time',
|
||||||
@ -128,12 +132,13 @@ $sqls=array(
|
|||||||
),
|
),
|
||||||
'thirdparty'=>array(
|
'thirdparty'=>array(
|
||||||
'@contact',
|
'@contact',
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'cabinetmed_cons',
|
'DELETE FROM '.MAIN_DB_PREFIX.'cabinetmed_cons',
|
||||||
'UPDATE '.MAIN_DB_PREFIX.'adherent SET fk_soc = NULL',
|
'UPDATE '.MAIN_DB_PREFIX.'adherent SET fk_soc = NULL',
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'categorie_fournisseur',
|
'DELETE FROM '.MAIN_DB_PREFIX.'categorie_fournisseur',
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'categorie_societe',
|
'DELETE FROM '.MAIN_DB_PREFIX.'categorie_societe',
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'societe_remise_except',
|
'DELETE FROM '.MAIN_DB_PREFIX.'societe_remise_except',
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'societe',
|
'DELETE FROM '.MAIN_DB_PREFIX.'societe_rib',
|
||||||
|
'DELETE FROM '.MAIN_DB_PREFIX.'societe',
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -152,27 +157,37 @@ $mode = $argv[1];
|
|||||||
$option = $argv[2];
|
$option = $argv[2];
|
||||||
|
|
||||||
if (empty($mode) || ! in_array($mode,array('test','confirm'))) {
|
if (empty($mode) || ! in_array($mode,array('test','confirm'))) {
|
||||||
print "Usage: $script_file (test|confirm) (all|option)\n";
|
print "Usage: $script_file (test|confirm) (all|option) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
|
||||||
print "\n";
|
print "\n";
|
||||||
print "option can be ".implode(',',array_keys($sqls))."\n";
|
print "option can be ".implode(',',array_keys($sqls))."\n";
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($option) || ! in_array($option, array_merge(array('all'),array_keys($sqls))) ) {
|
if (empty($option) || ! in_array($option, array_merge(array('all'),array_keys($sqls))) ) {
|
||||||
print "Usage: $script_file (test|confirm) (all|option)\n";
|
print "Usage: $script_file (test|confirm) (all|option) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
|
||||||
print "\n";
|
print "\n";
|
||||||
print "option can be ".implode(',',array_keys($sqls))."\n";
|
print "option can be ".implode(',',array_keys($sqls))."\n";
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Replace database handler
|
||||||
|
if (! empty($argv[3]))
|
||||||
|
{
|
||||||
|
$db->close();
|
||||||
|
unset($db);
|
||||||
|
$db=getDoliDBInstance($argv[3], $argv[4], $argv[5], $argv[6], $argv[7], $argv[8]);
|
||||||
|
$user=new User($db);
|
||||||
|
}
|
||||||
|
|
||||||
|
//var_dump($user->db->database_name);
|
||||||
$ret=$user->fetch('','admin');
|
$ret=$user->fetch('','admin');
|
||||||
if (! $ret > 0)
|
if (! $ret > 0)
|
||||||
{
|
{
|
||||||
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
print 'An admin user with login "admin" must exists to use this script.'."\n";
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
$user->getrights();
|
//$user->getrights();
|
||||||
|
|
||||||
|
|
||||||
print "Purge all data for this database:\n";
|
print "Purge all data for this database:\n";
|
||||||
print "Server = ".$db->database_host."\n";
|
print "Server = ".$db->database_host."\n";
|
||||||
@ -190,14 +205,14 @@ if (! $confirmed)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Process sql requests of a family
|
* Process sql requests of a family
|
||||||
*
|
*
|
||||||
* @param string $family Name of family key of array $sqls
|
* @param string $family Name of family key of array $sqls
|
||||||
* @return int -1 if KO, 1 if OK
|
* @return int -1 if KO, 1 if OK
|
||||||
*/
|
*/
|
||||||
function processfamily($family)
|
function processfamily($family)
|
||||||
{
|
{
|
||||||
global $db, $sqls;
|
global $db, $sqls;
|
||||||
|
|
||||||
$error=0;
|
$error=0;
|
||||||
foreach($sqls[$family] as $sql)
|
foreach($sqls[$family] as $sql)
|
||||||
{
|
{
|
||||||
@ -207,7 +222,7 @@ function processfamily($family)
|
|||||||
processfamily($newfamily);
|
processfamily($newfamily);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
print "Run sql: ".$sql."\n";
|
print "Run sql: ".$sql."\n";
|
||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
if (! $resql)
|
if (! $resql)
|
||||||
@ -217,7 +232,7 @@ function processfamily($family)
|
|||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($error)
|
if ($error)
|
||||||
{
|
{
|
||||||
print $db->lasterror();
|
print $db->lasterror();
|
||||||
@ -225,7 +240,7 @@ function processfamily($family)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($error) return -1;
|
if ($error) return -1;
|
||||||
else return 1;
|
else return 1;
|
||||||
}
|
}
|
||||||
@ -242,7 +257,7 @@ foreach($sqls as $family => $familysql)
|
|||||||
$oldfamily = $family;
|
$oldfamily = $family;
|
||||||
|
|
||||||
$result=processfamily($family);
|
$result=processfamily($family);
|
||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -187,6 +187,7 @@ export list="
|
|||||||
--ignore-table=$base.llx_bt_webseedfiles
|
--ignore-table=$base.llx_bt_webseedfiles
|
||||||
--ignore-table=$base.llx_c_civilite
|
--ignore-table=$base.llx_c_civilite
|
||||||
--ignore-table=$base.llx_c_dolicloud_plans
|
--ignore-table=$base.llx_c_dolicloud_plans
|
||||||
|
--ignore-table=$base.llx_c_pays
|
||||||
--ignore-table=$base.llx_c_source
|
--ignore-table=$base.llx_c_source
|
||||||
--ignore-table=$base.llx_cabinetmed_c_banques
|
--ignore-table=$base.llx_cabinetmed_c_banques
|
||||||
--ignore-table=$base.llx_cabinetmed_c_ccam
|
--ignore-table=$base.llx_cabinetmed_c_ccam
|
||||||
|
|||||||
921
dev/resources/sepa/pain.001.001.03.xsd
Normal file
921
dev/resources/sepa/pain.001.001.03.xsd
Normal file
@ -0,0 +1,921 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--Generated by SWIFTStandards Workstation (build:R6.1.0.2) on 2009 Jan 08 17:30:53-->
|
||||||
|
<xs:schema xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
|
||||||
|
<xs:element name="Document" type="Document"/>
|
||||||
|
<xs:complexType name="AccountIdentification4Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="IBAN" type="IBAN2007Identifier"/>
|
||||||
|
<xs:element name="Othr" type="GenericAccountIdentification1"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="AccountSchemeName1Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ExternalAccountIdentification1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="ActiveOrHistoricCurrencyAndAmount_SimpleType">
|
||||||
|
<xs:restriction base="xs:decimal">
|
||||||
|
<xs:minInclusive value="0"/>
|
||||||
|
<xs:fractionDigits value="5"/>
|
||||||
|
<xs:totalDigits value="18"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="ActiveOrHistoricCurrencyAndAmount">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="ActiveOrHistoricCurrencyAndAmount_SimpleType">
|
||||||
|
<xs:attribute name="Ccy" type="ActiveOrHistoricCurrencyCode" use="required"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="ActiveOrHistoricCurrencyCode">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:pattern value="[A-Z]{3,3}"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="AddressType2Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="ADDR"/>
|
||||||
|
<xs:enumeration value="PBOX"/>
|
||||||
|
<xs:enumeration value="HOME"/>
|
||||||
|
<xs:enumeration value="BIZZ"/>
|
||||||
|
<xs:enumeration value="MLTO"/>
|
||||||
|
<xs:enumeration value="DLVY"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="AmountType3Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="InstdAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element name="EqvtAmt" type="EquivalentAmount2"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="AnyBICIdentifier">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="Authorisation1Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="Authorisation1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max128Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="Authorisation1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="AUTH"/>
|
||||||
|
<xs:enumeration value="FDET"/>
|
||||||
|
<xs:enumeration value="FSUM"/>
|
||||||
|
<xs:enumeration value="ILEV"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="BICIdentifier">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="BaseOneRate">
|
||||||
|
<xs:restriction base="xs:decimal">
|
||||||
|
<xs:fractionDigits value="10"/>
|
||||||
|
<xs:totalDigits value="11"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="BatchBookingIndicator">
|
||||||
|
<xs:restriction base="xs:boolean"/>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="BranchAndFinancialInstitutionIdentification4">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="FinInstnId" type="FinancialInstitutionIdentification7"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="BrnchId" type="BranchData2"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="BranchData2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Id" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="CashAccount16">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Id" type="AccountIdentification4Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="CashAccountType2"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Ccy" type="ActiveOrHistoricCurrencyCode"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max70Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="CashAccountType2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="CashAccountType4Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="CashAccountType4Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="CASH"/>
|
||||||
|
<xs:enumeration value="CHAR"/>
|
||||||
|
<xs:enumeration value="COMM"/>
|
||||||
|
<xs:enumeration value="TAXE"/>
|
||||||
|
<xs:enumeration value="CISH"/>
|
||||||
|
<xs:enumeration value="TRAS"/>
|
||||||
|
<xs:enumeration value="SACC"/>
|
||||||
|
<xs:enumeration value="CACC"/>
|
||||||
|
<xs:enumeration value="SVGS"/>
|
||||||
|
<xs:enumeration value="ONDP"/>
|
||||||
|
<xs:enumeration value="MGLD"/>
|
||||||
|
<xs:enumeration value="NREX"/>
|
||||||
|
<xs:enumeration value="MOMA"/>
|
||||||
|
<xs:enumeration value="LOAN"/>
|
||||||
|
<xs:enumeration value="SLRY"/>
|
||||||
|
<xs:enumeration value="ODFT"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="CategoryPurpose1Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ExternalCategoryPurpose1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="ChargeBearerType1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="DEBT"/>
|
||||||
|
<xs:enumeration value="CRED"/>
|
||||||
|
<xs:enumeration value="SHAR"/>
|
||||||
|
<xs:enumeration value="SLEV"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="Cheque6">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="ChqTp" type="ChequeType2Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="ChqNb" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="ChqFr" type="NameAndAddress10"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="DlvryMtd" type="ChequeDeliveryMethod1Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="DlvrTo" type="NameAndAddress10"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="InstrPrty" type="Priority2Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="ChqMtrtyDt" type="ISODate"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="FrmsCd" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="2" minOccurs="0" name="MemoFld" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RgnlClrZone" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PrtLctn" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="ChequeDelivery1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="MLDB"/>
|
||||||
|
<xs:enumeration value="MLCD"/>
|
||||||
|
<xs:enumeration value="MLFA"/>
|
||||||
|
<xs:enumeration value="CRDB"/>
|
||||||
|
<xs:enumeration value="CRCD"/>
|
||||||
|
<xs:enumeration value="CRFA"/>
|
||||||
|
<xs:enumeration value="PUDB"/>
|
||||||
|
<xs:enumeration value="PUCD"/>
|
||||||
|
<xs:enumeration value="PUFA"/>
|
||||||
|
<xs:enumeration value="RGDB"/>
|
||||||
|
<xs:enumeration value="RGCD"/>
|
||||||
|
<xs:enumeration value="RGFA"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="ChequeDeliveryMethod1Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ChequeDelivery1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="ChequeType2Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="CCHQ"/>
|
||||||
|
<xs:enumeration value="CCCH"/>
|
||||||
|
<xs:enumeration value="BCHQ"/>
|
||||||
|
<xs:enumeration value="DRFT"/>
|
||||||
|
<xs:enumeration value="ELDR"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="ClearingSystemIdentification2Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="ClearingSystemMemberIdentification2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="ClrSysId" type="ClearingSystemIdentification2Choice"/>
|
||||||
|
<xs:element name="MmbId" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="ContactDetails2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="NmPrfx" type="NamePrefix1Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PhneNb" type="PhoneNumber"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="MobNb" type="PhoneNumber"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="FaxNb" type="PhoneNumber"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="EmailAdr" type="Max2048Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Othr" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="CountryCode">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:pattern value="[A-Z]{2,2}"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="CreditDebitCode">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="CRDT"/>
|
||||||
|
<xs:enumeration value="DBIT"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="CreditTransferTransactionInformation10">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="PmtId" type="PaymentIdentification1"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PmtTpInf" type="PaymentTypeInformation19"/>
|
||||||
|
<xs:element name="Amt" type="AmountType3Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="XchgRateInf" type="ExchangeRateInformation1"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="ChrgBr" type="ChargeBearerType1Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="ChqInstr" type="Cheque6"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="UltmtDbtr" type="PartyIdentification32"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt1" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt1Acct" type="CashAccount16"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt2" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt2Acct" type="CashAccount16"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt3" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt3Acct" type="CashAccount16"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CdtrAgtAcct" type="CashAccount16"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Cdtr" type="PartyIdentification32"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CdtrAcct" type="CashAccount16"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="UltmtCdtr" type="PartyIdentification32"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="InstrForCdtrAgt" type="InstructionForCreditorAgent1"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="InstrForDbtrAgt" type="Max140Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Purp" type="Purpose2Choice"/>
|
||||||
|
<xs:element maxOccurs="10" minOccurs="0" name="RgltryRptg" type="RegulatoryReporting3"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Tax" type="TaxInformation3"/>
|
||||||
|
<xs:element maxOccurs="10" minOccurs="0" name="RltdRmtInf" type="RemittanceLocation2"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RmtInf" type="RemittanceInformation5"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="CreditorReferenceInformation2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="CreditorReferenceType2"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Ref" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="CreditorReferenceType1Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="DocumentType3Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="CreditorReferenceType2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="CdOrPrtry" type="CreditorReferenceType1Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="CustomerCreditTransferInitiationV03">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="GrpHdr" type="GroupHeader32"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="1" name="PmtInf" type="PaymentInstructionInformation3"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="DateAndPlaceOfBirth">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="BirthDt" type="ISODate"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PrvcOfBirth" type="Max35Text"/>
|
||||||
|
<xs:element name="CityOfBirth" type="Max35Text"/>
|
||||||
|
<xs:element name="CtryOfBirth" type="CountryCode"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="DatePeriodDetails">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="FrDt" type="ISODate"/>
|
||||||
|
<xs:element name="ToDt" type="ISODate"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="DecimalNumber">
|
||||||
|
<xs:restriction base="xs:decimal">
|
||||||
|
<xs:fractionDigits value="17"/>
|
||||||
|
<xs:totalDigits value="18"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="Document">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="CstmrCdtTrfInitn" type="CustomerCreditTransferInitiationV03"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="DocumentAdjustment1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CdtDbtInd" type="CreditDebitCode"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Rsn" type="Max4Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="AddtlInf" type="Max140Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="DocumentType3Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="RADM"/>
|
||||||
|
<xs:enumeration value="RPIN"/>
|
||||||
|
<xs:enumeration value="FXDR"/>
|
||||||
|
<xs:enumeration value="DISP"/>
|
||||||
|
<xs:enumeration value="PUOR"/>
|
||||||
|
<xs:enumeration value="SCOR"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="DocumentType5Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="MSIN"/>
|
||||||
|
<xs:enumeration value="CNFA"/>
|
||||||
|
<xs:enumeration value="DNFA"/>
|
||||||
|
<xs:enumeration value="CINV"/>
|
||||||
|
<xs:enumeration value="CREN"/>
|
||||||
|
<xs:enumeration value="DEBN"/>
|
||||||
|
<xs:enumeration value="HIRI"/>
|
||||||
|
<xs:enumeration value="SBIN"/>
|
||||||
|
<xs:enumeration value="CMCN"/>
|
||||||
|
<xs:enumeration value="SOAC"/>
|
||||||
|
<xs:enumeration value="DISP"/>
|
||||||
|
<xs:enumeration value="BOLD"/>
|
||||||
|
<xs:enumeration value="VCHR"/>
|
||||||
|
<xs:enumeration value="AROI"/>
|
||||||
|
<xs:enumeration value="TSUT"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="EquivalentAmount2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element name="CcyOfTrf" type="ActiveOrHistoricCurrencyCode"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="ExchangeRateInformation1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="XchgRate" type="BaseOneRate"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RateTp" type="ExchangeRateType1Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CtrctId" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="ExchangeRateType1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="SPOT"/>
|
||||||
|
<xs:enumeration value="SALE"/>
|
||||||
|
<xs:enumeration value="AGRD"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ExternalAccountIdentification1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="4"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ExternalCategoryPurpose1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="4"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ExternalClearingSystemIdentification1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="5"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ExternalFinancialInstitutionIdentification1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="4"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ExternalLocalInstrument1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="35"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ExternalOrganisationIdentification1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="4"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ExternalPersonIdentification1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="4"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ExternalPurpose1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="4"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ExternalServiceLevel1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="4"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="FinancialIdentificationSchemeName1Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ExternalFinancialInstitutionIdentification1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="FinancialInstitutionIdentification7">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="BIC" type="BICIdentifier"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="ClrSysMmbId" type="ClearingSystemMemberIdentification2"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Othr" type="GenericFinancialIdentification1"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="GenericAccountIdentification1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Id" type="Max34Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="AccountSchemeName1Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="GenericFinancialIdentification1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Id" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="FinancialIdentificationSchemeName1Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="GenericOrganisationIdentification1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Id" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="OrganisationIdentificationSchemeName1Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="GenericPersonIdentification1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Id" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="PersonIdentificationSchemeName1Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="GroupHeader32">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="MsgId" type="Max35Text"/>
|
||||||
|
<xs:element name="CreDtTm" type="ISODateTime"/>
|
||||||
|
<xs:element maxOccurs="2" minOccurs="0" name="Authstn" type="Authorisation1Choice"/>
|
||||||
|
<xs:element name="NbOfTxs" type="Max15NumericText"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CtrlSum" type="DecimalNumber"/>
|
||||||
|
<xs:element name="InitgPty" type="PartyIdentification32"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="FwdgAgt" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="IBAN2007Identifier">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:pattern value="[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ISODate">
|
||||||
|
<xs:restriction base="xs:date"/>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ISODateTime">
|
||||||
|
<xs:restriction base="xs:dateTime"/>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Instruction3Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="CHQB"/>
|
||||||
|
<xs:enumeration value="HOLD"/>
|
||||||
|
<xs:enumeration value="PHOB"/>
|
||||||
|
<xs:enumeration value="TELB"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="InstructionForCreditorAgent1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Cd" type="Instruction3Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="InstrInf" type="Max140Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="LocalInstrument2Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ExternalLocalInstrument1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="Max10Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="10"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max128Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="128"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max140Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="140"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max15NumericText">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:pattern value="[0-9]{1,15}"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max16Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="16"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max2048Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="2048"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max34Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="34"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max35Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="35"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max4Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="4"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max70Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="70"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="NameAndAddress10">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Nm" type="Max140Text"/>
|
||||||
|
<xs:element name="Adr" type="PostalAddress6"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="NamePrefix1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="DOCT"/>
|
||||||
|
<xs:enumeration value="MIST"/>
|
||||||
|
<xs:enumeration value="MISS"/>
|
||||||
|
<xs:enumeration value="MADM"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Number">
|
||||||
|
<xs:restriction base="xs:decimal">
|
||||||
|
<xs:fractionDigits value="0"/>
|
||||||
|
<xs:totalDigits value="18"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="OrganisationIdentification4">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="BICOrBEI" type="AnyBICIdentifier"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="GenericOrganisationIdentification1"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="OrganisationIdentificationSchemeName1Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="Party6Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="OrgId" type="OrganisationIdentification4"/>
|
||||||
|
<xs:element name="PrvtId" type="PersonIdentification5"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="PartyIdentification32">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Id" type="Party6Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CtryOfRes" type="CountryCode"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CtctDtls" type="ContactDetails2"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="PaymentIdentification1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="InstrId" type="Max35Text"/>
|
||||||
|
<xs:element name="EndToEndId" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="PaymentInstructionInformation3">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="PmtInfId" type="Max35Text"/>
|
||||||
|
<xs:element name="PmtMtd" type="PaymentMethod3Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="BtchBookg" type="BatchBookingIndicator"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="NbOfTxs" type="Max15NumericText"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CtrlSum" type="DecimalNumber"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PmtTpInf" type="PaymentTypeInformation19"/>
|
||||||
|
<xs:element name="ReqdExctnDt" type="ISODate"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PoolgAdjstmntDt" type="ISODate"/>
|
||||||
|
<xs:element name="Dbtr" type="PartyIdentification32"/>
|
||||||
|
<xs:element name="DbtrAcct" type="CashAccount16"/>
|
||||||
|
<xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="DbtrAgtAcct" type="CashAccount16"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="UltmtDbtr" type="PartyIdentification32"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="ChrgBr" type="ChargeBearerType1Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="ChrgsAcct" type="CashAccount16"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="ChrgsAcctAgt" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="1" name="CdtTrfTxInf" type="CreditTransferTransactionInformation10"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="PaymentMethod3Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="CHK"/>
|
||||||
|
<xs:enumeration value="TRF"/>
|
||||||
|
<xs:enumeration value="TRA"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="PaymentTypeInformation19">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="InstrPrty" type="Priority2Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="SvcLvl" type="ServiceLevel8Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="LclInstrm" type="LocalInstrument2Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CtgyPurp" type="CategoryPurpose1Choice"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="PercentageRate">
|
||||||
|
<xs:restriction base="xs:decimal">
|
||||||
|
<xs:fractionDigits value="10"/>
|
||||||
|
<xs:totalDigits value="11"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="PersonIdentification5">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="GenericPersonIdentification1"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="PersonIdentificationSchemeName1Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ExternalPersonIdentification1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="PhoneNumber">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:pattern value="\+[0-9]{1,3}-[0-9()+\-]{1,30}"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="PostalAddress6">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="AdrTp" type="AddressType2Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Dept" type="Max70Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="SubDept" type="Max70Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="StrtNm" type="Max70Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="BldgNb" type="Max16Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PstCd" type="Max16Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TwnNm" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CtrySubDvsn" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/>
|
||||||
|
<xs:element maxOccurs="7" minOccurs="0" name="AdrLine" type="Max70Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="Priority2Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="HIGH"/>
|
||||||
|
<xs:enumeration value="NORM"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="Purpose2Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ExternalPurpose1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="ReferredDocumentInformation3">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="ReferredDocumentType2"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Nb" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RltdDt" type="ISODate"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="ReferredDocumentType1Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="DocumentType5Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="ReferredDocumentType2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="CdOrPrtry" type="ReferredDocumentType1Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="RegulatoryAuthority2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="RegulatoryReporting3">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="DbtCdtRptgInd" type="RegulatoryReportingType1Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Authrty" type="RegulatoryAuthority2"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="Dtls" type="StructuredRegulatoryReporting3"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="RegulatoryReportingType1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="CRED"/>
|
||||||
|
<xs:enumeration value="DEBT"/>
|
||||||
|
<xs:enumeration value="BOTH"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="RemittanceAmount1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="DuePyblAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="DscntApldAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CdtNoteAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TaxAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="AdjstmntAmtAndRsn" type="DocumentAdjustment1"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="RemittanceInformation5">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="Ustrd" type="Max140Text"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="Strd" type="StructuredRemittanceInformation7"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="RemittanceLocation2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RmtId" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RmtLctnMtd" type="RemittanceLocationMethod2Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RmtLctnElctrncAdr" type="Max2048Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RmtLctnPstlAdr" type="NameAndAddress10"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="RemittanceLocationMethod2Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="FAXI"/>
|
||||||
|
<xs:enumeration value="EDIC"/>
|
||||||
|
<xs:enumeration value="URID"/>
|
||||||
|
<xs:enumeration value="EMAL"/>
|
||||||
|
<xs:enumeration value="POST"/>
|
||||||
|
<xs:enumeration value="SMSM"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="ServiceLevel8Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ExternalServiceLevel1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="StructuredRegulatoryReporting3">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Dt" type="ISODate"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Cd" type="Max10Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="Inf" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="StructuredRemittanceInformation7">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="RfrdDocInf" type="ReferredDocumentInformation3"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RfrdDocAmt" type="RemittanceAmount1"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CdtrRefInf" type="CreditorReferenceInformation2"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Invcr" type="PartyIdentification32"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Invcee" type="PartyIdentification32"/>
|
||||||
|
<xs:element maxOccurs="3" minOccurs="0" name="AddtlRmtInf" type="Max140Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="TaxAmount1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Rate" type="PercentageRate"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TtlAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="Dtls" type="TaxRecordDetails1"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="TaxAuthorisation1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Titl" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="TaxInformation3">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Cdtr" type="TaxParty1"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Dbtr" type="TaxParty2"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="AdmstnZn" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RefNb" type="Max140Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Mtd" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TtlTaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TtlTaxAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Dt" type="ISODate"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="SeqNb" type="Number"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="Rcrd" type="TaxRecord1"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="TaxParty1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TaxId" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RegnId" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TaxTp" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="TaxParty2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TaxId" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RegnId" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TaxTp" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Authstn" type="TaxAuthorisation1"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="TaxPeriod1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Yr" type="ISODate"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="TaxRecordPeriod1Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="FrToDt" type="DatePeriodDetails"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="TaxRecord1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Ctgy" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CtgyDtls" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="DbtrSts" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CertId" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="FrmsCd" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Prd" type="TaxPeriod1"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TaxAmt" type="TaxAmount1"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="AddtlInf" type="Max140Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="TaxRecordDetails1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Prd" type="TaxPeriod1"/>
|
||||||
|
<xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="TaxRecordPeriod1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="MM01"/>
|
||||||
|
<xs:enumeration value="MM02"/>
|
||||||
|
<xs:enumeration value="MM03"/>
|
||||||
|
<xs:enumeration value="MM04"/>
|
||||||
|
<xs:enumeration value="MM05"/>
|
||||||
|
<xs:enumeration value="MM06"/>
|
||||||
|
<xs:enumeration value="MM07"/>
|
||||||
|
<xs:enumeration value="MM08"/>
|
||||||
|
<xs:enumeration value="MM09"/>
|
||||||
|
<xs:enumeration value="MM10"/>
|
||||||
|
<xs:enumeration value="MM11"/>
|
||||||
|
<xs:enumeration value="MM12"/>
|
||||||
|
<xs:enumeration value="QTR1"/>
|
||||||
|
<xs:enumeration value="QTR2"/>
|
||||||
|
<xs:enumeration value="QTR3"/>
|
||||||
|
<xs:enumeration value="QTR4"/>
|
||||||
|
<xs:enumeration value="HLF1"/>
|
||||||
|
<xs:enumeration value="HLF2"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
</xs:schema>
|
||||||
879
dev/resources/sepa/pain.008.001.02.xsd
Normal file
879
dev/resources/sepa/pain.008.001.02.xsd
Normal file
@ -0,0 +1,879 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--Generated by SWIFTStandards Workstation (build:R6.1.0.2) on 2009 Jan 08 17:30:53-->
|
||||||
|
<xs:schema xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02">
|
||||||
|
<xs:element name="Document" type="Document"/>
|
||||||
|
<xs:complexType name="AccountIdentification4Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="IBAN" type="IBAN2007Identifier"/>
|
||||||
|
<xs:element name="Othr" type="GenericAccountIdentification1"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="AccountSchemeName1Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ExternalAccountIdentification1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="ActiveOrHistoricCurrencyAndAmount_SimpleType">
|
||||||
|
<xs:restriction base="xs:decimal">
|
||||||
|
<xs:minInclusive value="0"/>
|
||||||
|
<xs:fractionDigits value="5"/>
|
||||||
|
<xs:totalDigits value="18"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="ActiveOrHistoricCurrencyAndAmount">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="ActiveOrHistoricCurrencyAndAmount_SimpleType">
|
||||||
|
<xs:attribute name="Ccy" type="ActiveOrHistoricCurrencyCode" use="required"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="ActiveOrHistoricCurrencyCode">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:pattern value="[A-Z]{3,3}"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="AddressType2Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="ADDR"/>
|
||||||
|
<xs:enumeration value="PBOX"/>
|
||||||
|
<xs:enumeration value="HOME"/>
|
||||||
|
<xs:enumeration value="BIZZ"/>
|
||||||
|
<xs:enumeration value="MLTO"/>
|
||||||
|
<xs:enumeration value="DLVY"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="AmendmentInformationDetails6">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlMndtId" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlCdtrSchmeId" type="PartyIdentification32"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlCdtrAgt" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlCdtrAgtAcct" type="CashAccount16"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtr" type="PartyIdentification32"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtrAcct" type="CashAccount16"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtrAgt" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtrAgtAcct" type="CashAccount16"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlFnlColltnDt" type="ISODate"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlFrqcy" type="Frequency1Code"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="AnyBICIdentifier">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="Authorisation1Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="Authorisation1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max128Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="Authorisation1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="AUTH"/>
|
||||||
|
<xs:enumeration value="FDET"/>
|
||||||
|
<xs:enumeration value="FSUM"/>
|
||||||
|
<xs:enumeration value="ILEV"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="BICIdentifier">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="BatchBookingIndicator">
|
||||||
|
<xs:restriction base="xs:boolean"/>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="BranchAndFinancialInstitutionIdentification4">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="FinInstnId" type="FinancialInstitutionIdentification7"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="BrnchId" type="BranchData2"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="BranchData2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Id" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="CashAccount16">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Id" type="AccountIdentification4Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="CashAccountType2"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Ccy" type="ActiveOrHistoricCurrencyCode"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max70Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="CashAccountType2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="CashAccountType4Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="CashAccountType4Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="CASH"/>
|
||||||
|
<xs:enumeration value="CHAR"/>
|
||||||
|
<xs:enumeration value="COMM"/>
|
||||||
|
<xs:enumeration value="TAXE"/>
|
||||||
|
<xs:enumeration value="CISH"/>
|
||||||
|
<xs:enumeration value="TRAS"/>
|
||||||
|
<xs:enumeration value="SACC"/>
|
||||||
|
<xs:enumeration value="CACC"/>
|
||||||
|
<xs:enumeration value="SVGS"/>
|
||||||
|
<xs:enumeration value="ONDP"/>
|
||||||
|
<xs:enumeration value="MGLD"/>
|
||||||
|
<xs:enumeration value="NREX"/>
|
||||||
|
<xs:enumeration value="MOMA"/>
|
||||||
|
<xs:enumeration value="LOAN"/>
|
||||||
|
<xs:enumeration value="SLRY"/>
|
||||||
|
<xs:enumeration value="ODFT"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="CategoryPurpose1Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ExternalCategoryPurpose1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="ChargeBearerType1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="DEBT"/>
|
||||||
|
<xs:enumeration value="CRED"/>
|
||||||
|
<xs:enumeration value="SHAR"/>
|
||||||
|
<xs:enumeration value="SLEV"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="ClearingSystemIdentification2Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="ClearingSystemMemberIdentification2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="ClrSysId" type="ClearingSystemIdentification2Choice"/>
|
||||||
|
<xs:element name="MmbId" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="ContactDetails2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="NmPrfx" type="NamePrefix1Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PhneNb" type="PhoneNumber"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="MobNb" type="PhoneNumber"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="FaxNb" type="PhoneNumber"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="EmailAdr" type="Max2048Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Othr" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="CountryCode">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:pattern value="[A-Z]{2,2}"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="CreditDebitCode">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="CRDT"/>
|
||||||
|
<xs:enumeration value="DBIT"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="CreditorReferenceInformation2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="CreditorReferenceType2"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Ref" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="CreditorReferenceType1Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="DocumentType3Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="CreditorReferenceType2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="CdOrPrtry" type="CreditorReferenceType1Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="CustomerDirectDebitInitiationV02">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="GrpHdr" type="GroupHeader39"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="1" name="PmtInf" type="PaymentInstructionInformation4"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="DateAndPlaceOfBirth">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="BirthDt" type="ISODate"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PrvcOfBirth" type="Max35Text"/>
|
||||||
|
<xs:element name="CityOfBirth" type="Max35Text"/>
|
||||||
|
<xs:element name="CtryOfBirth" type="CountryCode"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="DatePeriodDetails">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="FrDt" type="ISODate"/>
|
||||||
|
<xs:element name="ToDt" type="ISODate"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="DecimalNumber">
|
||||||
|
<xs:restriction base="xs:decimal">
|
||||||
|
<xs:fractionDigits value="17"/>
|
||||||
|
<xs:totalDigits value="18"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="DirectDebitTransaction6">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="MndtRltdInf" type="MandateRelatedInformation6"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CdtrSchmeId" type="PartyIdentification32"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PreNtfctnId" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PreNtfctnDt" type="ISODate"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="DirectDebitTransactionInformation9">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="PmtId" type="PaymentIdentification1"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PmtTpInf" type="PaymentTypeInformation20"/>
|
||||||
|
<xs:element name="InstdAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="ChrgBr" type="ChargeBearerType1Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="DrctDbtTx" type="DirectDebitTransaction6"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="UltmtCdtr" type="PartyIdentification32"/>
|
||||||
|
<xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="DbtrAgtAcct" type="CashAccount16"/>
|
||||||
|
<xs:element name="Dbtr" type="PartyIdentification32"/>
|
||||||
|
<xs:element name="DbtrAcct" type="CashAccount16"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="UltmtDbtr" type="PartyIdentification32"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="InstrForCdtrAgt" type="Max140Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Purp" type="Purpose2Choice"/>
|
||||||
|
<xs:element maxOccurs="10" minOccurs="0" name="RgltryRptg" type="RegulatoryReporting3"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Tax" type="TaxInformation3"/>
|
||||||
|
<xs:element maxOccurs="10" minOccurs="0" name="RltdRmtInf" type="RemittanceLocation2"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RmtInf" type="RemittanceInformation5"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="Document">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="CstmrDrctDbtInitn" type="CustomerDirectDebitInitiationV02"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="DocumentAdjustment1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CdtDbtInd" type="CreditDebitCode"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Rsn" type="Max4Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="AddtlInf" type="Max140Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="DocumentType3Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="RADM"/>
|
||||||
|
<xs:enumeration value="RPIN"/>
|
||||||
|
<xs:enumeration value="FXDR"/>
|
||||||
|
<xs:enumeration value="DISP"/>
|
||||||
|
<xs:enumeration value="PUOR"/>
|
||||||
|
<xs:enumeration value="SCOR"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="DocumentType5Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="MSIN"/>
|
||||||
|
<xs:enumeration value="CNFA"/>
|
||||||
|
<xs:enumeration value="DNFA"/>
|
||||||
|
<xs:enumeration value="CINV"/>
|
||||||
|
<xs:enumeration value="CREN"/>
|
||||||
|
<xs:enumeration value="DEBN"/>
|
||||||
|
<xs:enumeration value="HIRI"/>
|
||||||
|
<xs:enumeration value="SBIN"/>
|
||||||
|
<xs:enumeration value="CMCN"/>
|
||||||
|
<xs:enumeration value="SOAC"/>
|
||||||
|
<xs:enumeration value="DISP"/>
|
||||||
|
<xs:enumeration value="BOLD"/>
|
||||||
|
<xs:enumeration value="VCHR"/>
|
||||||
|
<xs:enumeration value="AROI"/>
|
||||||
|
<xs:enumeration value="TSUT"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ExternalAccountIdentification1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="4"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ExternalCategoryPurpose1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="4"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ExternalClearingSystemIdentification1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="5"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ExternalFinancialInstitutionIdentification1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="4"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ExternalLocalInstrument1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="35"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ExternalOrganisationIdentification1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="4"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ExternalPersonIdentification1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="4"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ExternalPurpose1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="4"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ExternalServiceLevel1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="4"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="FinancialIdentificationSchemeName1Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ExternalFinancialInstitutionIdentification1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="FinancialInstitutionIdentification7">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="BIC" type="BICIdentifier"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="ClrSysMmbId" type="ClearingSystemMemberIdentification2"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Othr" type="GenericFinancialIdentification1"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="Frequency1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="YEAR"/>
|
||||||
|
<xs:enumeration value="MNTH"/>
|
||||||
|
<xs:enumeration value="QURT"/>
|
||||||
|
<xs:enumeration value="MIAN"/>
|
||||||
|
<xs:enumeration value="WEEK"/>
|
||||||
|
<xs:enumeration value="DAIL"/>
|
||||||
|
<xs:enumeration value="ADHO"/>
|
||||||
|
<xs:enumeration value="INDA"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="GenericAccountIdentification1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Id" type="Max34Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="AccountSchemeName1Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="GenericFinancialIdentification1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Id" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="FinancialIdentificationSchemeName1Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="GenericOrganisationIdentification1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Id" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="OrganisationIdentificationSchemeName1Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="GenericPersonIdentification1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Id" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="PersonIdentificationSchemeName1Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="GroupHeader39">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="MsgId" type="Max35Text"/>
|
||||||
|
<xs:element name="CreDtTm" type="ISODateTime"/>
|
||||||
|
<xs:element maxOccurs="2" minOccurs="0" name="Authstn" type="Authorisation1Choice"/>
|
||||||
|
<xs:element name="NbOfTxs" type="Max15NumericText"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CtrlSum" type="DecimalNumber"/>
|
||||||
|
<xs:element name="InitgPty" type="PartyIdentification32"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="FwdgAgt" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="IBAN2007Identifier">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:pattern value="[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ISODate">
|
||||||
|
<xs:restriction base="xs:date"/>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="ISODateTime">
|
||||||
|
<xs:restriction base="xs:dateTime"/>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="LocalInstrument2Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ExternalLocalInstrument1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="MandateRelatedInformation6">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="MndtId" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="DtOfSgntr" type="ISODate"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="AmdmntInd" type="TrueFalseIndicator"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="AmdmntInfDtls" type="AmendmentInformationDetails6"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="ElctrncSgntr" type="Max1025Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="FrstColltnDt" type="ISODate"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="FnlColltnDt" type="ISODate"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Frqcy" type="Frequency1Code"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="Max1025Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="1025"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max10Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="10"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max128Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="128"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max140Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="140"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max15NumericText">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:pattern value="[0-9]{1,15}"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max16Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="16"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max2048Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="2048"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max34Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="34"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max35Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="35"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max4Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="4"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Max70Text">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
<xs:maxLength value="70"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="NameAndAddress10">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Nm" type="Max140Text"/>
|
||||||
|
<xs:element name="Adr" type="PostalAddress6"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="NamePrefix1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="DOCT"/>
|
||||||
|
<xs:enumeration value="MIST"/>
|
||||||
|
<xs:enumeration value="MISS"/>
|
||||||
|
<xs:enumeration value="MADM"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="Number">
|
||||||
|
<xs:restriction base="xs:decimal">
|
||||||
|
<xs:fractionDigits value="0"/>
|
||||||
|
<xs:totalDigits value="18"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="OrganisationIdentification4">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="BICOrBEI" type="AnyBICIdentifier"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="GenericOrganisationIdentification1"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="OrganisationIdentificationSchemeName1Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="Party6Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="OrgId" type="OrganisationIdentification4"/>
|
||||||
|
<xs:element name="PrvtId" type="PersonIdentification5"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="PartyIdentification32">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Id" type="Party6Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CtryOfRes" type="CountryCode"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CtctDtls" type="ContactDetails2"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="PaymentIdentification1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="InstrId" type="Max35Text"/>
|
||||||
|
<xs:element name="EndToEndId" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="PaymentInstructionInformation4">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="PmtInfId" type="Max35Text"/>
|
||||||
|
<xs:element name="PmtMtd" type="PaymentMethod2Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="BtchBookg" type="BatchBookingIndicator"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="NbOfTxs" type="Max15NumericText"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CtrlSum" type="DecimalNumber"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PmtTpInf" type="PaymentTypeInformation20"/>
|
||||||
|
<xs:element name="ReqdColltnDt" type="ISODate"/>
|
||||||
|
<xs:element name="Cdtr" type="PartyIdentification32"/>
|
||||||
|
<xs:element name="CdtrAcct" type="CashAccount16"/>
|
||||||
|
<xs:element name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CdtrAgtAcct" type="CashAccount16"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="UltmtCdtr" type="PartyIdentification32"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="ChrgBr" type="ChargeBearerType1Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="ChrgsAcct" type="CashAccount16"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="ChrgsAcctAgt" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CdtrSchmeId" type="PartyIdentification32"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="1" name="DrctDbtTxInf" type="DirectDebitTransactionInformation9"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="PaymentMethod2Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="DD"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="PaymentTypeInformation20">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="InstrPrty" type="Priority2Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="SvcLvl" type="ServiceLevel8Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="LclInstrm" type="LocalInstrument2Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="SeqTp" type="SequenceType1Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CtgyPurp" type="CategoryPurpose1Choice"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="PercentageRate">
|
||||||
|
<xs:restriction base="xs:decimal">
|
||||||
|
<xs:fractionDigits value="10"/>
|
||||||
|
<xs:totalDigits value="11"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="PersonIdentification5">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="GenericPersonIdentification1"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="PersonIdentificationSchemeName1Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ExternalPersonIdentification1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="PhoneNumber">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:pattern value="\+[0-9]{1,3}-[0-9()+\-]{1,30}"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="PostalAddress6">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="AdrTp" type="AddressType2Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Dept" type="Max70Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="SubDept" type="Max70Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="StrtNm" type="Max70Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="BldgNb" type="Max16Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="PstCd" type="Max16Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TwnNm" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CtrySubDvsn" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/>
|
||||||
|
<xs:element maxOccurs="7" minOccurs="0" name="AdrLine" type="Max70Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="Priority2Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="HIGH"/>
|
||||||
|
<xs:enumeration value="NORM"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="Purpose2Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ExternalPurpose1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="ReferredDocumentInformation3">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="ReferredDocumentType2"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Nb" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RltdDt" type="ISODate"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="ReferredDocumentType1Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="DocumentType5Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="ReferredDocumentType2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="CdOrPrtry" type="ReferredDocumentType1Choice"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="RegulatoryAuthority2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="RegulatoryReporting3">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="DbtCdtRptgInd" type="RegulatoryReportingType1Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Authrty" type="RegulatoryAuthority2"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="Dtls" type="StructuredRegulatoryReporting3"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="RegulatoryReportingType1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="CRED"/>
|
||||||
|
<xs:enumeration value="DEBT"/>
|
||||||
|
<xs:enumeration value="BOTH"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="RemittanceAmount1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="DuePyblAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="DscntApldAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CdtNoteAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TaxAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="AdjstmntAmtAndRsn" type="DocumentAdjustment1"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="RemittanceInformation5">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="Ustrd" type="Max140Text"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="Strd" type="StructuredRemittanceInformation7"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="RemittanceLocation2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RmtId" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RmtLctnMtd" type="RemittanceLocationMethod2Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RmtLctnElctrncAdr" type="Max2048Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RmtLctnPstlAdr" type="NameAndAddress10"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="RemittanceLocationMethod2Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="FAXI"/>
|
||||||
|
<xs:enumeration value="EDIC"/>
|
||||||
|
<xs:enumeration value="URID"/>
|
||||||
|
<xs:enumeration value="EMAL"/>
|
||||||
|
<xs:enumeration value="POST"/>
|
||||||
|
<xs:enumeration value="SMSM"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="SequenceType1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="FRST"/>
|
||||||
|
<xs:enumeration value="RCUR"/>
|
||||||
|
<xs:enumeration value="FNAL"/>
|
||||||
|
<xs:enumeration value="OOFF"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:complexType name="ServiceLevel8Choice">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:choice>
|
||||||
|
<xs:element name="Cd" type="ExternalServiceLevel1Code"/>
|
||||||
|
<xs:element name="Prtry" type="Max35Text"/>
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="StructuredRegulatoryReporting3">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Dt" type="ISODate"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Cd" type="Max10Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="Inf" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="StructuredRemittanceInformation7">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="RfrdDocInf" type="ReferredDocumentInformation3"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RfrdDocAmt" type="RemittanceAmount1"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CdtrRefInf" type="CreditorReferenceInformation2"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Invcr" type="PartyIdentification32"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Invcee" type="PartyIdentification32"/>
|
||||||
|
<xs:element maxOccurs="3" minOccurs="0" name="AddtlRmtInf" type="Max140Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="TaxAmount1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Rate" type="PercentageRate"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TtlAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="Dtls" type="TaxRecordDetails1"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="TaxAuthorisation1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Titl" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="TaxInformation3">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Cdtr" type="TaxParty1"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Dbtr" type="TaxParty2"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="AdmstnZn" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RefNb" type="Max140Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Mtd" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TtlTaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TtlTaxAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Dt" type="ISODate"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="SeqNb" type="Number"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="Rcrd" type="TaxRecord1"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="TaxParty1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TaxId" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RegnId" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TaxTp" type="Max35Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="TaxParty2">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TaxId" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="RegnId" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TaxTp" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Authstn" type="TaxAuthorisation1"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="TaxPeriod1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Yr" type="ISODate"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="TaxRecordPeriod1Code"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="FrToDt" type="DatePeriodDetails"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="TaxRecord1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Ctgy" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CtgyDtls" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="DbtrSts" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="CertId" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="FrmsCd" type="Max35Text"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Prd" type="TaxPeriod1"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="TaxAmt" type="TaxAmount1"/>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="AddtlInf" type="Max140Text"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="TaxRecordDetails1">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="1" minOccurs="0" name="Prd" type="TaxPeriod1"/>
|
||||||
|
<xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="TaxRecordPeriod1Code">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="MM01"/>
|
||||||
|
<xs:enumeration value="MM02"/>
|
||||||
|
<xs:enumeration value="MM03"/>
|
||||||
|
<xs:enumeration value="MM04"/>
|
||||||
|
<xs:enumeration value="MM05"/>
|
||||||
|
<xs:enumeration value="MM06"/>
|
||||||
|
<xs:enumeration value="MM07"/>
|
||||||
|
<xs:enumeration value="MM08"/>
|
||||||
|
<xs:enumeration value="MM09"/>
|
||||||
|
<xs:enumeration value="MM10"/>
|
||||||
|
<xs:enumeration value="MM11"/>
|
||||||
|
<xs:enumeration value="MM12"/>
|
||||||
|
<xs:enumeration value="QTR1"/>
|
||||||
|
<xs:enumeration value="QTR2"/>
|
||||||
|
<xs:enumeration value="QTR3"/>
|
||||||
|
<xs:enumeration value="QTR4"/>
|
||||||
|
<xs:enumeration value="HLF1"/>
|
||||||
|
<xs:enumeration value="HLF2"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="TrueFalseIndicator">
|
||||||
|
<xs:restriction base="xs:boolean"/>
|
||||||
|
</xs:simpleType>
|
||||||
|
</xs:schema>
|
||||||
133
dev/resources/sepa/test.xml
Normal file
133
dev/resources/sepa/test.xml
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<CstmrDrctDbtInitn>
|
||||||
|
<GrpHdr>
|
||||||
|
<MsgId>PREL20171012/REF10</MsgId>
|
||||||
|
<CreDtTm>2017-10-12T00:08:30</CreDtTm>
|
||||||
|
<NbOfTxs>2</NbOfTxs>
|
||||||
|
<CtrlSum>734.4</CtrlSum>
|
||||||
|
<InitgPty>
|
||||||
|
<Nm>MyBigCompany</Nm>
|
||||||
|
<Id>
|
||||||
|
<PrvtId>
|
||||||
|
<Othr>
|
||||||
|
<Id>FR76AAAAA</Id>
|
||||||
|
</Othr>
|
||||||
|
</PrvtId>
|
||||||
|
</Id>
|
||||||
|
</InitgPty>
|
||||||
|
</GrpHdr>
|
||||||
|
<PmtInf>
|
||||||
|
<PmtInfId>PREL20171012/ID00010-T171001</PmtInfId>
|
||||||
|
<PmtMtd>DD</PmtMtd>
|
||||||
|
<NbOfTxs>2</NbOfTxs>
|
||||||
|
<CtrlSum>734.4</CtrlSum>
|
||||||
|
<PmtTpInf>
|
||||||
|
<SvcLvl>
|
||||||
|
<Cd>SEPA</Cd>
|
||||||
|
</SvcLvl>
|
||||||
|
<LclInstrm>
|
||||||
|
<Cd>CORE</Cd>
|
||||||
|
</LclInstrm>
|
||||||
|
<SeqTp>RCUR</SeqTp>
|
||||||
|
</PmtTpInf>
|
||||||
|
<ReqdColltnDt>2017-10-12</ReqdColltnDt>
|
||||||
|
<Cdtr>
|
||||||
|
<Nm>MyBigCompany</Nm>
|
||||||
|
<PstlAdr>
|
||||||
|
<Ctry>FR</Ctry>
|
||||||
|
<AdrLine>Address1</AdrLine>
|
||||||
|
<AdrLine>Address2</AdrLine>
|
||||||
|
</PstlAdr>
|
||||||
|
</Cdtr>
|
||||||
|
<CdtrAcct>
|
||||||
|
<Id>
|
||||||
|
<IBAN>FR76123456</IBAN>
|
||||||
|
</Id>
|
||||||
|
</CdtrAcct>
|
||||||
|
<CdtrAgt>
|
||||||
|
<FinInstnId>
|
||||||
|
<BIC>BICABCDEF</BIC>
|
||||||
|
</FinInstnId>
|
||||||
|
</CdtrAgt>
|
||||||
|
<ChrgBr>SLEV</ChrgBr>
|
||||||
|
<CdtrSchmeId>
|
||||||
|
<Id>
|
||||||
|
<PrvtId>
|
||||||
|
<Othr>
|
||||||
|
<Id>FR76AAAAA</Id>
|
||||||
|
<SchmeNm>
|
||||||
|
<Prtry>SEPA</Prtry>
|
||||||
|
</SchmeNm>
|
||||||
|
</Othr>
|
||||||
|
</PrvtId>
|
||||||
|
</Id>
|
||||||
|
</CdtrSchmeId>
|
||||||
|
<DrctDbtTxInf>
|
||||||
|
<PmtId>
|
||||||
|
<EndToEndId>AS-FA1710-0416-000679</EndToEndId>
|
||||||
|
</PmtId>
|
||||||
|
<InstdAmt Ccy="EUR">540</InstdAmt>
|
||||||
|
<DrctDbtTx>
|
||||||
|
<MndtRltdInf>
|
||||||
|
<MndtId>RUM-CU1610-0001-3-1476058417</MndtId>
|
||||||
|
<DtOfSgntr>2016-10-10</DtOfSgntr>
|
||||||
|
<AmdmntInd>false</AmdmntInd>
|
||||||
|
</MndtRltdInf>
|
||||||
|
</DrctDbtTx>
|
||||||
|
<DbtrAgt>
|
||||||
|
<FinInstnId>
|
||||||
|
<BIC>BICXYZ</BIC>
|
||||||
|
</FinInstnId>
|
||||||
|
</DbtrAgt>
|
||||||
|
<Dbtr>
|
||||||
|
<Nm>CUSTOMER A</Nm>
|
||||||
|
<PstlAdr>
|
||||||
|
<Ctry>FR</Ctry>
|
||||||
|
<AdrLine>Mr abc</AdrLine>
|
||||||
|
</PstlAdr>
|
||||||
|
</Dbtr>
|
||||||
|
<DbtrAcct>
|
||||||
|
<Id>
|
||||||
|
<IBAN>FR123456</IBAN>
|
||||||
|
</Id>
|
||||||
|
</DbtrAcct>
|
||||||
|
<RmtInf>
|
||||||
|
<Ustrd>FA1710-0416</Ustrd>
|
||||||
|
</RmtInf>
|
||||||
|
</DrctDbtTxInf>
|
||||||
|
<DrctDbtTxInf>
|
||||||
|
<PmtId>
|
||||||
|
<EndToEndId>AS-FA1710-0415-000683</EndToEndId>
|
||||||
|
</PmtId>
|
||||||
|
<InstdAmt Ccy="EUR">194.4</InstdAmt>
|
||||||
|
<DrctDbtTx>
|
||||||
|
<MndtRltdInf>
|
||||||
|
<MndtId>RUM-CU1709-0011-4-1506525346</MndtId>
|
||||||
|
<DtOfSgntr>2017-09-27</DtOfSgntr>
|
||||||
|
<AmdmntInd>false</AmdmntInd>
|
||||||
|
</MndtRltdInf>
|
||||||
|
</DrctDbtTx>
|
||||||
|
<DbtrAgt>
|
||||||
|
<FinInstnId>
|
||||||
|
<BIC>BICJKL</BIC>
|
||||||
|
</FinInstnId>
|
||||||
|
</DbtrAgt>
|
||||||
|
<Dbtr>
|
||||||
|
<Nm>CUSTOMER2</Nm>
|
||||||
|
<PstlAdr>
|
||||||
|
<Ctry>FR</Ctry>
|
||||||
|
</PstlAdr>
|
||||||
|
</Dbtr>
|
||||||
|
<DbtrAcct>
|
||||||
|
<Id>
|
||||||
|
<IBAN>FR76123456</IBAN>
|
||||||
|
</Id>
|
||||||
|
</DbtrAcct>
|
||||||
|
<RmtInf>
|
||||||
|
<Ustrd>FA1710-0415</Ustrd>
|
||||||
|
</RmtInf>
|
||||||
|
</DrctDbtTxInf>
|
||||||
|
</PmtInf>
|
||||||
|
</CstmrDrctDbtInitn>
|
||||||
|
</Document>
|
||||||
2
dev/resources/sepa/text.txt
Normal file
2
dev/resources/sepa/text.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
To test a SEPA file:
|
||||||
|
http://www.mesfluxdepaiement.fr/testez-vos-fichiers-sepa
|
||||||
62
dev/setup/apache/virtualhost
Normal file
62
dev/setup/apache/virtualhost
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
<VirtualHost *:80>
|
||||||
|
#php_admin_value sendmail_path "/usr/sbin/sendmail -t -i"
|
||||||
|
#php_admin_value mail.force_extra_parameters "-f postmaster@mydomain.com"
|
||||||
|
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f postmaster@mydomain.com"
|
||||||
|
php_admin_value open_basedir /tmp/:/home/../htdocs
|
||||||
|
|
||||||
|
ServerName myvirtualalias
|
||||||
|
ServerAlias myvirtualalias
|
||||||
|
|
||||||
|
UseCanonicalName On
|
||||||
|
|
||||||
|
AddDefaultCharset UTF-8
|
||||||
|
|
||||||
|
DocumentRoot "/home/.../htdocs"
|
||||||
|
|
||||||
|
<Directory /home/.../htdocs/>
|
||||||
|
AllowOverride None
|
||||||
|
Options -Indexes -MultiViews +FollowSymLinks -ExecCGI
|
||||||
|
Require all granted
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
<Directory "/home/../htdocs/cache">
|
||||||
|
Deny from all
|
||||||
|
RemoveHandler .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml
|
||||||
|
AddType application/x-httpd-php-source .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
|
||||||
|
ErrorLog /var/log/apache2/myvirtualalias_error_log
|
||||||
|
TransferLog /var/log/apache2/myvirtualalias_access_log
|
||||||
|
|
||||||
|
# Compress returned resources of type php pages, text file export, css and javascript
|
||||||
|
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript
|
||||||
|
|
||||||
|
AddType text/javascript .jgz
|
||||||
|
AddEncoding gzip .jgz
|
||||||
|
ExpiresActive On
|
||||||
|
ExpiresByType image/x-icon A2592000
|
||||||
|
ExpiresByType image/gif A2592000
|
||||||
|
ExpiresByType image/png A2592000
|
||||||
|
ExpiresByType image/jpeg A2592000
|
||||||
|
ExpiresByType text/css A2592000
|
||||||
|
ExpiresByType text/javascript A2592000
|
||||||
|
ExpiresByType application/x-javascript A2592000
|
||||||
|
ExpiresByType application/javascript A2592000
|
||||||
|
|
||||||
|
SSLEngine On
|
||||||
|
|
||||||
|
# A self-signed (snakeoil) certificate can be created by installing
|
||||||
|
# the ssl-cert package. See
|
||||||
|
# /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
|
||||||
|
# If both key and certificate are stored in the same file, only the
|
||||||
|
# SSLCertificateFile directive is needed.
|
||||||
|
SSLCertificateFile /etc/letsencrypt/live/www.mydomain.com/cert.pem
|
||||||
|
SSLCertificateKeyFile /etc/letsencrypt/live/www.mydomain.com/privkey.pem
|
||||||
|
SSLCertificateChainFile /etc/letsencrypt/live/www.mydomain.com/chain.pem
|
||||||
|
|
||||||
|
#RewriteEngine on
|
||||||
|
#RewriteCond %{SERVER_PORT} ^80$
|
||||||
|
#RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
|
||||||
|
|
||||||
|
</VirtualHost>
|
||||||
BIN
doc/images/dolibarr_screenshot1_1680x1050.png
Normal file
BIN
doc/images/dolibarr_screenshot1_1680x1050.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 255 KiB |
BIN
doc/images/dolibarr_screenshot4_1680x1050.png
Normal file
BIN
doc/images/dolibarr_screenshot4_1680x1050.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 171 KiB |
BIN
doc/images/dolibarr_screenshot9_1680x1050.png
Normal file
BIN
doc/images/dolibarr_screenshot9_1680x1050.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 200 KiB |
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2017 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2013-2017 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
* Copyright (C) 2016 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2016-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
*
|
*
|
||||||
* 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
|
||||||
@ -67,8 +67,8 @@ $arrayfields=array(
|
|||||||
'aa.account_number'=>array('label'=>$langs->trans("AccountNumber"), 'checked'=>1),
|
'aa.account_number'=>array('label'=>$langs->trans("AccountNumber"), 'checked'=>1),
|
||||||
'aa.label'=>array('label'=>$langs->trans("Label"), 'checked'=>1),
|
'aa.label'=>array('label'=>$langs->trans("Label"), 'checked'=>1),
|
||||||
'aa.account_parent'=>array('label'=>$langs->trans("Accountparent"), 'checked'=>0),
|
'aa.account_parent'=>array('label'=>$langs->trans("Accountparent"), 'checked'=>0),
|
||||||
'aa.pcg_type'=>array('label'=>$langs->trans("Pcgtype"), 'checked'=>0, 'help'=>'PcgtypeDesc'),
|
'aa.pcg_type'=>array('label'=>$langs->trans("Pcgtype"), 'checked'=>1, 'help'=>'PcgtypeDesc'),
|
||||||
'aa.pcg_subtype'=>array('label'=>$langs->trans("Pcgsubtype"), 'checked'=>0, 'help'=>'PcgtypeDesc'),
|
'aa.pcg_subtype'=>array('label'=>$langs->trans("Pcgsubtype"), 'checked'=>1, 'help'=>'PcgtypeDesc'),
|
||||||
'aa.active'=>array('label'=>$langs->trans("Activated"), 'checked'=>1)
|
'aa.active'=>array('label'=>$langs->trans("Activated"), 'checked'=>1)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -105,14 +105,32 @@ if (empty($reshook))
|
|||||||
$search_array_options=array();
|
$search_array_options=array();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GETPOST('change_chart'))
|
if (GETPOST('change_chart','alpha'))
|
||||||
{
|
{
|
||||||
$chartofaccounts = GETPOST('chartofaccounts', 'int');
|
$chartofaccounts = GETPOST('chartofaccounts', 'int');
|
||||||
|
|
||||||
if (! empty($chartofaccounts)) {
|
if ($chartofaccounts > 0)
|
||||||
|
{
|
||||||
|
// Get language code for this $chartofaccounts
|
||||||
|
$sql ='SELECT code FROM '.MAIN_DB_PREFIX.'c_country as c, '.MAIN_DB_PREFIX.'accounting_system as a';
|
||||||
|
$sql.=' WHERE c.rowid = a.fk_country AND a.rowid = '.(int) $chartofaccounts;
|
||||||
|
$resql = $db->query($sql);
|
||||||
|
if ($resql)
|
||||||
|
{
|
||||||
|
$obj = $db->fetch_object($resql);
|
||||||
|
$country_code = $obj->code;
|
||||||
|
}
|
||||||
|
else dol_print_error($db);
|
||||||
|
|
||||||
|
// Try to load sql file
|
||||||
|
if ($country_code)
|
||||||
|
{
|
||||||
|
$sqlfile = DOL_DOCUMENT_ROOT.'/install/mysql/data/llx_accounting_account_'.strtolower($country_code).'.sql';
|
||||||
|
$result = run_sql($sqlfile, 1, 0, 1);
|
||||||
|
}
|
||||||
|
|
||||||
if (! dolibarr_set_const($db, 'CHARTOFACCOUNTS', $chartofaccounts, 'chaine', 0, '', $conf->entity)) {
|
if (! dolibarr_set_const($db, 'CHARTOFACCOUNTS', $chartofaccounts, 'chaine', 0, '', $conf->entity)) {
|
||||||
$error ++;
|
$error++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$error ++;
|
$error ++;
|
||||||
@ -216,25 +234,29 @@ if ($resql)
|
|||||||
// Box to select active chart of account
|
// Box to select active chart of account
|
||||||
print $langs->trans("Selectchartofaccounts") . " : ";
|
print $langs->trans("Selectchartofaccounts") . " : ";
|
||||||
print '<select class="flat" name="chartofaccounts" id="chartofaccounts">';
|
print '<select class="flat" name="chartofaccounts" id="chartofaccounts">';
|
||||||
$sql = "SELECT rowid, pcg_version, label, active";
|
$sql = "SELECT a.rowid, a.pcg_version, a.label, a.active, c.code as country_code";
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_system";
|
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_system as a";
|
||||||
$sql .= " WHERE active = 1";
|
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "c_country as c ON a.fk_country = c.rowid";
|
||||||
dol_syslog('accountancy/admin/account.php:: $sql=' . $sql);
|
$sql .= " WHERE a.active = 1";
|
||||||
|
dol_syslog('accountancy/admin/account.php $sql='.$sql);
|
||||||
|
print $sql;
|
||||||
$resqlchart = $db->query($sql);
|
$resqlchart = $db->query($sql);
|
||||||
if ($resqlchart) {
|
if ($resqlchart) {
|
||||||
$numbis = $db->num_rows($resqlchart);
|
$numbis = $db->num_rows($resqlchart);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while ( $i < $numbis ) {
|
while ($i < $numbis) {
|
||||||
$row = $db->fetch_row($resqlchart);
|
$obj = $db->fetch_object($resqlchart);
|
||||||
|
|
||||||
print '<option value="' . $row[0] . '"';
|
print '<option value="' . $obj->rowid . '"';
|
||||||
print $pcgver == $row[0] ? ' selected' : '';
|
print ($pcgver == $obj->rowid) ? ' selected' : '';
|
||||||
print '>' . $row[1] . ' - ' . $row[2] . '</option>';
|
print '>' . $obj->pcg_version . ' - ' . $obj->label . ' - (' . $obj->country_code . ')</option>';
|
||||||
|
|
||||||
$i ++;
|
$i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else dol_print_error($db);
|
||||||
print "</select>";
|
print "</select>";
|
||||||
|
print ajax_combobox("chartofaccounts");
|
||||||
print '<input type="submit" class="button" name="change_chart" value="'.dol_escape_htmltag($langs->trans("ChangeAndLoad")).'">';
|
print '<input type="submit" class="button" name="change_chart" value="'.dol_escape_htmltag($langs->trans("ChangeAndLoad")).'">';
|
||||||
print '<br>';
|
print '<br>';
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|||||||
@ -41,14 +41,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
|
||||||
if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT . '/core/class/html.formaccounting.class.php';
|
if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT . '/core/class/html.formaccounting.class.php';
|
||||||
|
|
||||||
$langs->load("errors");
|
$langs->loadLangs(array("errors","admin","companies","resource","holiday","compta","accountancy","hrm"));
|
||||||
$langs->load("admin");
|
|
||||||
$langs->load("main");
|
|
||||||
$langs->load("companies");
|
|
||||||
$langs->load("resource");
|
|
||||||
$langs->load("holiday");
|
|
||||||
$langs->load("accountancy");
|
|
||||||
$langs->load("hrm");
|
|
||||||
|
|
||||||
$action=GETPOST('action','alpha')?GETPOST('action','alpha'):'view';
|
$action=GETPOST('action','alpha')?GETPOST('action','alpha'):'view';
|
||||||
$confirm=GETPOST('confirm','alpha');
|
$confirm=GETPOST('confirm','alpha');
|
||||||
@ -68,7 +61,7 @@ $active = 1;
|
|||||||
$sortfield = GETPOST("sortfield",'alpha');
|
$sortfield = GETPOST("sortfield",'alpha');
|
||||||
$sortorder = GETPOST("sortorder",'alpha');
|
$sortorder = GETPOST("sortorder",'alpha');
|
||||||
$page = GETPOST("page",'int');
|
$page = GETPOST("page",'int');
|
||||||
if ($page == -1 || $page == null) { $page = 0 ; }
|
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
||||||
$offset = $listlimit * $page ;
|
$offset = $listlimit * $page ;
|
||||||
$pageprev = $page - 1;
|
$pageprev = $page - 1;
|
||||||
$pagenext = $page + 1;
|
$pagenext = $page + 1;
|
||||||
@ -100,7 +93,7 @@ $tablib[32]= "DictionaryAccountancyCategory";
|
|||||||
|
|
||||||
// Requests to extract data
|
// Requests to extract data
|
||||||
$tabsql=array();
|
$tabsql=array();
|
||||||
$tabsql[31]= "SELECT s.rowid as rowid, pcg_version, s.label, s.active FROM ".MAIN_DB_PREFIX."accounting_system as s";
|
$tabsql[31]= "SELECT s.rowid as rowid, pcg_version, s.label, s.fk_country as country_id, c.code as country_code, c.label as country, s.active FROM ".MAIN_DB_PREFIX."accounting_system as s, ".MAIN_DB_PREFIX."c_country as c WHERE s.fk_country=c.rowid and c.active=1";
|
||||||
$tabsql[32]= "SELECT a.rowid as rowid, a.code as code, a.label, a.range_account, a.sens, a.category_type, a.formula, a.position as position, a.fk_country as country_id, c.code as country_code, c.label as country, a.active FROM ".MAIN_DB_PREFIX."c_accounting_category as a, ".MAIN_DB_PREFIX."c_country as c WHERE a.fk_country=c.rowid and c.active=1";
|
$tabsql[32]= "SELECT a.rowid as rowid, a.code as code, a.label, a.range_account, a.sens, a.category_type, a.formula, a.position as position, a.fk_country as country_id, c.code as country_code, c.label as country, a.active FROM ".MAIN_DB_PREFIX."c_accounting_category as a, ".MAIN_DB_PREFIX."c_country as c WHERE a.fk_country=c.rowid and c.active=1";
|
||||||
|
|
||||||
// Criteria to sort dictionaries
|
// Criteria to sort dictionaries
|
||||||
@ -110,17 +103,17 @@ $tabsqlsort[32]="position ASC";
|
|||||||
|
|
||||||
// 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[31]= "pcg_version,label";
|
$tabfield[31]= "pcg_version,label,country_id,country";
|
||||||
$tabfield[32]= "code,label,range_account,sens,category_type,formula,position,country_id,country";
|
$tabfield[32]= "code,label,range_account,sens,category_type,formula,position,country_id,country";
|
||||||
|
|
||||||
// Nom des champs d'edition pour modification d'un enregistrement
|
// Nom des champs d'edition pour modification d'un enregistrement
|
||||||
$tabfieldvalue=array();
|
$tabfieldvalue=array();
|
||||||
$tabfieldvalue[31]= "pcg_version,label";
|
$tabfieldvalue[31]= "pcg_version,label,country";
|
||||||
$tabfieldvalue[32]= "code,label,range_account,sens,category_type,formula,position,country";
|
$tabfieldvalue[32]= "code,label,range_account,sens,category_type,formula,position,country";
|
||||||
|
|
||||||
// Nom des champs dans la table pour insertion d'un enregistrement
|
// Nom des champs dans la table pour insertion d'un enregistrement
|
||||||
$tabfieldinsert=array();
|
$tabfieldinsert=array();
|
||||||
$tabfieldinsert[31]= "pcg_version,label";
|
$tabfieldinsert[31]= "pcg_version,label,fk_country";
|
||||||
$tabfieldinsert[32]= "code,label,range_account,sens,category_type,formula,position,fk_country";
|
$tabfieldinsert[32]= "code,label,range_account,sens,category_type,formula,position,fk_country";
|
||||||
|
|
||||||
// Nom du rowid si le champ n'est pas de type autoincrement
|
// Nom du rowid si le champ n'est pas de type autoincrement
|
||||||
@ -173,7 +166,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify'))
|
|||||||
$ok=1;
|
$ok=1;
|
||||||
foreach ($listfield as $f => $value)
|
foreach ($listfield as $f => $value)
|
||||||
{
|
{
|
||||||
if ($value == 'country_id' && in_array($tablib[$id],array('DictionaryVAT','DictionaryRegion','DictionaryCompanyType','DictionaryHolidayTypes','DictionaryRevenueStamp','DictionaryAccountancysystem','DictionaryAccountancyCategory'))) continue; // For some pages, country is not mandatory
|
if ($value == 'country_id' && in_array($tablib[$id],array('DictionaryVAT','DictionaryRegion','DictionaryCompanyType','DictionaryHolidayTypes','DictionaryRevenueStamp','DictionaryAccountancyCategory','Pcg_version'))) continue; // For some pages, country is not mandatory
|
||||||
if ($value == 'country' && in_array($tablib[$id],array('DictionaryCanton','DictionaryCompanyType','DictionaryRevenueStamp'))) continue; // For some pages, country is not mandatory
|
if ($value == 'country' && in_array($tablib[$id],array('DictionaryCanton','DictionaryCompanyType','DictionaryRevenueStamp'))) continue; // For some pages, country is not mandatory
|
||||||
if ($value == 'localtax1' && empty($_POST['localtax1_type'])) continue;
|
if ($value == 'localtax1' && empty($_POST['localtax1_type'])) continue;
|
||||||
if ($value == 'localtax2' && empty($_POST['localtax2_type'])) continue;
|
if ($value == 'localtax2' && empty($_POST['localtax2_type'])) continue;
|
||||||
@ -188,6 +181,8 @@ if (GETPOST('actionadd') || GETPOST('actionmodify'))
|
|||||||
$ok=0;
|
$ok=0;
|
||||||
$fieldnamekey=$listfield[$f];
|
$fieldnamekey=$listfield[$f];
|
||||||
// We take translate key of field
|
// We take translate key of field
|
||||||
|
|
||||||
|
if ($fieldnamekey == 'pcg_version') $fieldnamekey='Pcg_version';
|
||||||
if ($fieldnamekey == 'libelle' || ($fieldnamekey == 'label')) $fieldnamekey='Label';
|
if ($fieldnamekey == 'libelle' || ($fieldnamekey == 'label')) $fieldnamekey='Label';
|
||||||
if ($fieldnamekey == 'libelle_facture') $fieldnamekey = 'LabelOnDocuments';
|
if ($fieldnamekey == 'libelle_facture') $fieldnamekey = 'LabelOnDocuments';
|
||||||
if ($fieldnamekey == 'nbjour') $fieldnamekey='NbOfDays';
|
if ($fieldnamekey == 'nbjour') $fieldnamekey='NbOfDays';
|
||||||
|
|||||||
@ -64,7 +64,7 @@ $active = 1;
|
|||||||
$sortfield = GETPOST("sortfield",'alpha');
|
$sortfield = GETPOST("sortfield",'alpha');
|
||||||
$sortorder = GETPOST("sortorder",'alpha');
|
$sortorder = GETPOST("sortorder",'alpha');
|
||||||
$page = GETPOST("page",'int');
|
$page = GETPOST("page",'int');
|
||||||
if ($page == -1 || $page == null) { $page = 0 ; }
|
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
||||||
$offset = $listlimit * $page ;
|
$offset = $listlimit * $page ;
|
||||||
$pageprev = $page - 1;
|
$pageprev = $page - 1;
|
||||||
$pagenext = $page + 1;
|
$pagenext = $page + 1;
|
||||||
@ -569,6 +569,7 @@ if ($id)
|
|||||||
print "</tr>";
|
print "</tr>";
|
||||||
|
|
||||||
$colspan=count($fieldlist)+3;
|
$colspan=count($fieldlist)+3;
|
||||||
|
if ($id == 32) $colspan++;
|
||||||
|
|
||||||
print '<tr><td colspan="'.$colspan.'"> </td></tr>'; // Keep to have a line with enough height
|
print '<tr><td colspan="'.$colspan.'"> </td></tr>'; // Keep to have a line with enough height
|
||||||
}
|
}
|
||||||
|
|||||||
@ -77,7 +77,7 @@ $list_account = array (
|
|||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$accounting_mode = defined('ACCOUNTING_MODE') ? ACCOUNTING_MODE : 'RECETTES-DEPENSES';
|
$accounting_mode = empty($conf->global->ACCOUNTING_MODE) ? 'RECETTES-DEPENSES' : $conf->global->ACCOUNTING_MODE;
|
||||||
|
|
||||||
|
|
||||||
if (GETPOST('change_chart'))
|
if (GETPOST('change_chart'))
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
|
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
|
||||||
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||||
|
* Copyright (C) 2017 Frédéric France <frederic.france@netlogic.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -47,12 +48,35 @@ $action = GETPOST('action', 'alpha');
|
|||||||
|
|
||||||
// Parameters ACCOUNTING_EXPORT_*
|
// Parameters ACCOUNTING_EXPORT_*
|
||||||
$main_option = array (
|
$main_option = array (
|
||||||
'ACCOUNTING_EXPORT_PREFIX_SPEC'
|
'ACCOUNTING_EXPORT_PREFIX_SPEC',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$configuration = AccountancyExport::getTypeConfig();
|
||||||
|
|
||||||
|
$listparam = $configuration[param];
|
||||||
|
|
||||||
|
$listformat = $configuration[format];
|
||||||
|
|
||||||
|
$listcr = $configuration[cr];
|
||||||
|
|
||||||
|
|
||||||
$model_option = array (
|
$model_option = array (
|
||||||
'ACCOUNTING_EXPORT_SEPARATORCSV',
|
'1' => array(
|
||||||
'ACCOUNTING_EXPORT_DATE'
|
'label' => 'ACCOUNTING_EXPORT_FORMAT',
|
||||||
|
'param' => $listformat,
|
||||||
|
),
|
||||||
|
'2' => array(
|
||||||
|
'label' => 'ACCOUNTING_EXPORT_SEPARATORCSV',
|
||||||
|
'param' => '',
|
||||||
|
),
|
||||||
|
'3' => array(
|
||||||
|
'label' => 'ACCOUNTING_EXPORT_ENDLINE',
|
||||||
|
'param' => $listcr,
|
||||||
|
),
|
||||||
|
'4' => array(
|
||||||
|
'label' => 'ACCOUNTING_EXPORT_DATE',
|
||||||
|
'param' => '',
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -61,24 +85,15 @@ $model_option = array (
|
|||||||
if ($action == 'update') {
|
if ($action == 'update') {
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
$format = GETPOST('format', 'alpha');
|
$modelcsv = GETPOST('ACCOUNTING_EXPORT_MODELCSV', 'int');
|
||||||
$modelcsv = GETPOST('modelcsv', 'int');
|
|
||||||
|
|
||||||
if (! empty($format)) {
|
|
||||||
if (! dolibarr_set_const($db, 'ACCOUNTING_EXPORT_FORMAT', $format, 'chaine', 0, '', $conf->entity)) {
|
|
||||||
$error ++;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$error ++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! empty($modelcsv)) {
|
if (! empty($modelcsv)) {
|
||||||
if (! dolibarr_set_const($db, 'ACCOUNTING_EXPORT_MODELCSV', $modelcsv, 'chaine', 0, '', $conf->entity)) {
|
if (! dolibarr_set_const($db, 'ACCOUNTING_EXPORT_MODELCSV', $modelcsv, 'chaine', 0, '', $conf->entity)) {
|
||||||
$error ++;
|
$error ++;
|
||||||
}
|
}
|
||||||
if ($modelcsv==AccountancyExport::$EXPORT_TYPE_QUADRATUS || $modelcsv==AccountancyExport::$EXPORT_TYPE_CIEL) {
|
//if ($modelcsv==AccountancyExport::$EXPORT_TYPE_QUADRATUS || $modelcsv==AccountancyExport::$EXPORT_TYPE_CIEL) {
|
||||||
dolibarr_set_const($db, 'ACCOUNTING_EXPORT_FORMAT', 'txt', 'chaine', 0, '', $conf->entity);
|
// dolibarr_set_const($db, 'ACCOUNTING_EXPORT_FORMAT', 'txt', 'chaine', 0, '', $conf->entity);
|
||||||
}
|
//}
|
||||||
} else {
|
} else {
|
||||||
$error ++;
|
$error ++;
|
||||||
}
|
}
|
||||||
@ -91,16 +106,22 @@ if ($action == 'update') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ( $model_option as $constname ) {
|
foreach ($listparam[$modelcsv] as $key => $value ) {
|
||||||
$constvalue = GETPOST($constname, 'alpha');
|
$constante = $key;
|
||||||
|
|
||||||
if (! dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
if (strpos($constante, 'ACCOUNTING')!==false) {
|
||||||
$error ++;
|
$constvalue = GETPOST($key, 'alpha');
|
||||||
}
|
if (! dolibarr_set_const($db, $constante, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
||||||
|
$error ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! $error) {
|
if (! $error) {
|
||||||
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
|
// reload
|
||||||
|
$configuration = AccountancyExport::getTypeConfig();
|
||||||
|
$listparam = $configuration[param];
|
||||||
|
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
|
||||||
} else {
|
} else {
|
||||||
setEventMessages($langs->trans("Error"), null, 'errors');
|
setEventMessages($langs->trans("Error"), null, 'errors');
|
||||||
}
|
}
|
||||||
@ -117,11 +138,55 @@ $form = new Form($db);
|
|||||||
// $linkback = '<a href="' . DOL_URL_ROOT . '/admin/modules.php">' . $langs->trans("BackToModuleList") . '</a>';
|
// $linkback = '<a href="' . DOL_URL_ROOT . '/admin/modules.php">' . $langs->trans("BackToModuleList") . '</a>';
|
||||||
print load_fiche_titre($langs->trans('ConfigAccountingExpert'), $linkback, 'title_setup');
|
print load_fiche_titre($langs->trans('ConfigAccountingExpert'), $linkback, 'title_setup');
|
||||||
|
|
||||||
|
|
||||||
|
print "\n".'<script type="text/javascript" language="javascript">'."\n";
|
||||||
|
print 'jQuery(document).ready(function () {'."\n";
|
||||||
|
print ' function initfields()'."\n";
|
||||||
|
print ' {'."\n";
|
||||||
|
foreach ($listparam as $key => $param) {
|
||||||
|
print ' if (jQuery("#ACCOUNTING_EXPORT_MODELCSV").val()=="'.$key.'")'."\n";
|
||||||
|
print ' {'."\n";
|
||||||
|
print ' //console.log("'.$param[label].'");'."\n";
|
||||||
|
if (empty($param[ACCOUNTING_EXPORT_FORMAT])) {
|
||||||
|
print ' jQuery("#ACCOUNTING_EXPORT_FORMAT").val("'.$conf->global->ACCOUNTING_EXPORT_FORMAT.'");'."\n";
|
||||||
|
print ' jQuery("#ACCOUNTING_EXPORT_FORMAT").prop("disabled", true);'."\n";
|
||||||
|
} else {
|
||||||
|
print ' jQuery("#ACCOUNTING_EXPORT_FORMAT").val("'.$param[ACCOUNTING_EXPORT_FORMAT].'");'."\n";
|
||||||
|
print ' jQuery("#ACCOUNTING_EXPORT_FORMAT").removeAttr("disabled");'."\n";
|
||||||
|
}
|
||||||
|
if (empty($param[ACCOUNTING_EXPORT_SEPARATORCSV])) {
|
||||||
|
print ' jQuery("#ACCOUNTING_EXPORT_SEPARATORCSV").val("");'."\n";
|
||||||
|
print ' jQuery("#ACCOUNTING_EXPORT_SEPARATORCSV").prop("disabled", true);'."\n";
|
||||||
|
} else {
|
||||||
|
print ' jQuery("#ACCOUNTING_EXPORT_SEPARATORCSV").val("'.$conf->global->ACCOUNTING_EXPORT_SEPARATORCSV.'");'."\n";
|
||||||
|
print ' jQuery("#ACCOUNTING_EXPORT_SEPARATORCSV").removeAttr("disabled");'."\n";
|
||||||
|
}
|
||||||
|
if (empty($param[ACCOUNTING_EXPORT_ENDLINE])) {
|
||||||
|
print ' jQuery("#ACCOUNTING_EXPORT_ENDLINE").prop("disabled", true);'."\n";
|
||||||
|
} else {
|
||||||
|
print ' jQuery("#ACCOUNTING_EXPORT_ENDLINE").removeAttr("disabled");'."\n";
|
||||||
|
}
|
||||||
|
if (empty($param[ACCOUNTING_EXPORT_DATE])) {
|
||||||
|
print ' jQuery("#ACCOUNTING_EXPORT_DATE").val("");'."\n";
|
||||||
|
print ' jQuery("#ACCOUNTING_EXPORT_DATE").prop("disabled", true);'."\n";
|
||||||
|
} else {
|
||||||
|
print ' jQuery("#ACCOUNTING_EXPORT_DATE").val("'.$conf->global->ACCOUNTING_EXPORT_DATE.'");'."\n";
|
||||||
|
print ' jQuery("#ACCOUNTING_EXPORT_DATE").removeAttr("disabled");'."\n";
|
||||||
|
}
|
||||||
|
print ' }'."\n";
|
||||||
|
}
|
||||||
|
print ' }'."\n";
|
||||||
|
print ' initfields();'."\n";
|
||||||
|
print ' jQuery("#ACCOUNTING_EXPORT_MODELCSV").change(function() {'."\n";
|
||||||
|
print ' initfields();'."\n";
|
||||||
|
print ' });'."\n";
|
||||||
|
print '})'."\n";
|
||||||
|
print '</script>'."\n";
|
||||||
|
|
||||||
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="post">';
|
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="post">';
|
||||||
print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
|
print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
|
||||||
print '<input type="hidden" name="action" value="update">';
|
print '<input type="hidden" name="action" value="update">';
|
||||||
|
|
||||||
$var = true;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Main Options
|
* Main Options
|
||||||
@ -132,7 +197,6 @@ print '<tr class="liste_titre">';
|
|||||||
print '<td colspan="3">' . $langs->trans('Options') . '</td>';
|
print '<td colspan="3">' . $langs->trans('Options') . '</td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
$var = ! $var;
|
|
||||||
|
|
||||||
$num = count($main_option);
|
$num = count($main_option);
|
||||||
if ($num) {
|
if ($num) {
|
||||||
@ -146,7 +210,7 @@ if ($num) {
|
|||||||
|
|
||||||
// Value
|
// Value
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="text" size="20" name="' . $key . '" value="' . $conf->global->$key . '">';
|
print '<input type="text" size="20" id="'.$key.'" name="' . $key . '" value="' . $conf->global->$key . '">';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -164,7 +228,6 @@ print '<tr class="liste_titre">';
|
|||||||
print '<td colspan="2">' . $langs->trans("Modelcsv") . '</td>';
|
print '<td colspan="2">' . $langs->trans("Modelcsv") . '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
$var = ! $var;
|
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td width="50%">' . $langs->trans("Selectmodelcsv") . '</td>';
|
print '<td width="50%">' . $langs->trans("Selectmodelcsv") . '</td>';
|
||||||
@ -175,7 +238,7 @@ if (! $conf->use_javascript_ajax) {
|
|||||||
} else {
|
} else {
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$listmodelcsv = AccountancyExport::getType();
|
$listmodelcsv = AccountancyExport::getType();
|
||||||
print $form->selectarray("modelcsv", $listmodelcsv, $conf->global->ACCOUNTING_EXPORT_MODELCSV, 0);
|
print $form->selectarray("ACCOUNTING_EXPORT_MODELCSV", $listmodelcsv, $conf->global->ACCOUNTING_EXPORT_MODELCSV, 0);
|
||||||
|
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
@ -195,39 +258,21 @@ if ($num2) {
|
|||||||
print '<td colspan="3">' . $langs->trans('OtherOptions') . '</td>';
|
print '<td colspan="3">' . $langs->trans('OtherOptions') . '</td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
if ($conf->global->ACCOUNTING_EXPORT_MODELCSV > AccountancyExport::$EXPORT_TYPE_NORMAL)
|
foreach ( $model_option as $key) {
|
||||||
{
|
|
||||||
print '<tr><td colspan="2" bgcolor="red"><b>' . $langs->trans('OptionsDeactivatedForThisExportModel') . '</b></td></tr>';
|
|
||||||
}
|
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
|
||||||
print '<td width="50%">' . $langs->trans("Selectformat") . '</td>';
|
|
||||||
if (! $conf->use_javascript_ajax) {
|
|
||||||
print '<td class="nowrap">';
|
|
||||||
print $langs->trans("NotAvailableWhenAjaxDisabled");
|
|
||||||
print "</td>";
|
|
||||||
} else {
|
|
||||||
print '<td>';
|
|
||||||
$listformat = array (
|
|
||||||
'csv' => $langs->trans("csv"),
|
|
||||||
'txt' => $langs->trans("txt")
|
|
||||||
);
|
|
||||||
print $form->selectarray("format", $listformat, $conf->global->ACCOUNTING_EXPORT_FORMAT, 0);
|
|
||||||
|
|
||||||
print '</td>';
|
|
||||||
}
|
|
||||||
print "</td></tr>";
|
|
||||||
|
|
||||||
foreach ( $model_option as $key ) {
|
|
||||||
print '<tr class="oddeven value">';
|
print '<tr class="oddeven value">';
|
||||||
|
|
||||||
// Param
|
// Param
|
||||||
$label = $langs->trans($key);
|
$label = $key[label];
|
||||||
print '<td width="50%">' . $label . '</td>';
|
print '<td width="50%">' . $langs->trans($label) . '</td>';
|
||||||
|
|
||||||
// Value
|
// Value
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="text" size="20" name="' . $key . '" value="' . $conf->global->$key . '">';
|
if (is_array($key[param])) {
|
||||||
|
print $form->selectarray($label, $key[param], $conf->global->$label, 0);
|
||||||
|
} else {
|
||||||
|
print '<input type="text" size="20" id="'. $label .'" name="' . $key[label] . '" value="' . $conf->global->$label . '">';
|
||||||
|
}
|
||||||
|
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -60,7 +60,7 @@ $list = array (
|
|||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$accounting_mode = defined('ACCOUNTING_MODE') ? ACCOUNTING_MODE : 'RECETTES-DEPENSES';
|
$accounting_mode = empty($conf->global->ACCOUNTING_MODE) ? 'RECETTES-DEPENSES' : $conf->global->ACCOUNTING_MODE;
|
||||||
|
|
||||||
if ($action == 'update') {
|
if ($action == 'update') {
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|||||||
@ -58,7 +58,7 @@ $active = 1;
|
|||||||
$sortfield = GETPOST("sortfield",'alpha');
|
$sortfield = GETPOST("sortfield",'alpha');
|
||||||
$sortorder = GETPOST("sortorder",'alpha');
|
$sortorder = GETPOST("sortorder",'alpha');
|
||||||
$page = GETPOST("page",'int');
|
$page = GETPOST("page",'int');
|
||||||
if ($page == -1 || $page == null) { $page = 0 ; }
|
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
||||||
$offset = $listlimit * $page ;
|
$offset = $listlimit * $page ;
|
||||||
$pageprev = $page - 1;
|
$pageprev = $page - 1;
|
||||||
$pagenext = $page + 1;
|
$pagenext = $page + 1;
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2016 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2016 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2016 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2016 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2016 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2016-2017 Alexandre Spangaro <aspangaro@zendsi.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
|
||||||
@ -125,9 +125,8 @@ if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x',
|
|||||||
if ($action == 'export_csv') {
|
if ($action == 'export_csv') {
|
||||||
|
|
||||||
$sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV;
|
$sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV;
|
||||||
if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == AccountancyExport::$EXPORT_TYPE_CEGID) $sep = ";"; // For CEGID, we force separator.
|
|
||||||
|
|
||||||
$journal = 'bookkepping';
|
$journal = 'balance';
|
||||||
|
|
||||||
include DOL_DOCUMENT_ROOT . '/accountancy/tpl/export_journal.tpl.php';
|
include DOL_DOCUMENT_ROOT . '/accountancy/tpl/export_journal.tpl.php';
|
||||||
|
|
||||||
@ -138,10 +137,11 @@ if ($action == 'export_csv') {
|
|||||||
|
|
||||||
foreach ($object->lines as $line) {
|
foreach ($object->lines as $line) {
|
||||||
print length_accountg($line->numero_compte) . $sep;
|
print length_accountg($line->numero_compte) . $sep;
|
||||||
print $line->debit . $sep;
|
print $object->get_compte_desc($line->numero_compte) . $sep;
|
||||||
print $line->credit . $sep;
|
print price($line->debit) . $sep;
|
||||||
print $line->debit . $sep;
|
print price($line->credit) . $sep;
|
||||||
print $line->credit - $line->debit . $sep;
|
print price($line->debit) . $sep;
|
||||||
|
print price($line->credit - $line->debit) . $sep;
|
||||||
print "\n";
|
print "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2017 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2017 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2017 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2017 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2013-2017 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2013-2017 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
*
|
*
|
||||||
* 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,6 +33,8 @@ require_once DOL_DOCUMENT_ROOT . '/fourn/class/fournisseur.facture.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountingjournal.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountingjournal.class.php';
|
||||||
|
|
||||||
$langs->load("accountancy");
|
$langs->load("accountancy");
|
||||||
|
$langs->load("bills");
|
||||||
|
$langs->load("compta");
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
$id = GETPOST('id', 'int');
|
$id = GETPOST('id', 'int');
|
||||||
@ -40,7 +42,7 @@ if ($user->societe_id > 0) {
|
|||||||
accessforbidden();
|
accessforbidden();
|
||||||
}
|
}
|
||||||
$action = GETPOST('action','aZ09');
|
$action = GETPOST('action','aZ09');
|
||||||
$mode = GETPOST('mode','aZ09'); // '' or 'tmp'
|
$mode = GETPOST('mode','aZ09'); // '' or 'tmp'
|
||||||
$piece_num = GETPOST("piece_num");
|
$piece_num = GETPOST("piece_num");
|
||||||
|
|
||||||
$mesg = '';
|
$mesg = '';
|
||||||
@ -72,16 +74,16 @@ if ($action == "confirm_update") {
|
|||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
if ((floatval($debit) != 0.0) && (floatval($credit) != 0.0)) {
|
if ((floatval($debit) != 0.0) && (floatval($credit) != 0.0)) {
|
||||||
$error++;
|
$error++;
|
||||||
setEventMessages($langs->trans('ErrorDebitCredit'), null, 'errors');
|
setEventMessages($langs->trans('ErrorDebitCredit'), null, 'errors');
|
||||||
$action='update';
|
$action='update';
|
||||||
|
}
|
||||||
|
if (empty($account_number) || $account_number == '-1')
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("AccountAccountingShort")), null, 'errors');
|
||||||
|
$action='update';
|
||||||
}
|
}
|
||||||
if (empty($account_number) || $account_number == '-1')
|
|
||||||
{
|
|
||||||
$error++;
|
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("AccountAccountingShort")), null, 'errors');
|
|
||||||
$action='update';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
@ -89,7 +91,7 @@ if ($action == "confirm_update") {
|
|||||||
|
|
||||||
$result = $book->fetch($id, null, $mode);
|
$result = $book->fetch($id, null, $mode);
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
$error++;
|
$error++;
|
||||||
setEventMessages($book->error, $book->errors, 'errors');
|
setEventMessages($book->error, $book->errors, 'errors');
|
||||||
} else {
|
} else {
|
||||||
$book->numero_compte = $account_number;
|
$book->numero_compte = $account_number;
|
||||||
@ -112,13 +114,13 @@ if ($action == "confirm_update") {
|
|||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessages($book->error, $book->errors, 'errors');
|
setEventMessages($book->error, $book->errors, 'errors');
|
||||||
} else {
|
} else {
|
||||||
if ($mode != '_tmp')
|
if ($mode != '_tmp')
|
||||||
{
|
{
|
||||||
setEventMessages($langs->trans('Saved'), null, 'mesgs');
|
setEventMessages($langs->trans('Saved'), null, 'mesgs');
|
||||||
}
|
}
|
||||||
|
|
||||||
$debit = 0;
|
$debit = 0;
|
||||||
$credit = 0;
|
$credit = 0;
|
||||||
|
|
||||||
$action = '';
|
$action = '';
|
||||||
}
|
}
|
||||||
@ -132,14 +134,14 @@ else if ($action == "add") {
|
|||||||
if ((floatval($debit) != 0.0) && (floatval($credit) != 0.0))
|
if ((floatval($debit) != 0.0) && (floatval($credit) != 0.0))
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
setEventMessages($langs->trans('ErrorDebitCredit'), null, 'errors');
|
setEventMessages($langs->trans('ErrorDebitCredit'), null, 'errors');
|
||||||
$action='';
|
$action='';
|
||||||
}
|
}
|
||||||
if (empty($account_number) || $account_number == '-1')
|
if (empty($account_number) || $account_number == '-1')
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("AccountAccountingShort")), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("AccountAccountingShort")), null, 'errors');
|
||||||
$action='';
|
$action='';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! $error) {
|
if (! $error) {
|
||||||
@ -175,7 +177,7 @@ else if ($action == "add") {
|
|||||||
} else {
|
} else {
|
||||||
if ($mode != '_tmp')
|
if ($mode != '_tmp')
|
||||||
{
|
{
|
||||||
setEventMessages($langs->trans('Saved'), null, 'mesgs');
|
setEventMessages($langs->trans('Saved'), null, 'mesgs');
|
||||||
}
|
}
|
||||||
|
|
||||||
$debit = 0;
|
$debit = 0;
|
||||||
@ -209,9 +211,9 @@ else if ($action == "confirm_create") {
|
|||||||
$book = new BookKeeping($db);
|
$book = new BookKeeping($db);
|
||||||
|
|
||||||
if (! GETPOST('code_journal') || GETPOST('code_journal') == '-1') {
|
if (! GETPOST('code_journal') || GETPOST('code_journal') == '-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('next_num_mvt'))
|
if (! GETPOST('next_num_mvt'))
|
||||||
{
|
{
|
||||||
@ -237,10 +239,10 @@ else if ($action == "confirm_create") {
|
|||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessages($book->error, $book->errors, 'errors');
|
setEventMessages($book->error, $book->errors, 'errors');
|
||||||
} else {
|
} else {
|
||||||
if ($mode != '_tmp')
|
if ($mode != '_tmp')
|
||||||
{
|
{
|
||||||
setEventMessages($langs->trans('Saved'), null, 'mesgs');
|
setEventMessages($langs->trans('Saved'), null, 'mesgs');
|
||||||
}
|
}
|
||||||
$action = 'update';
|
$action = 'update';
|
||||||
$id=$book->id;
|
$id=$book->id;
|
||||||
$piece_num = $book->piece_num;
|
$piece_num = $book->piece_num;
|
||||||
@ -254,10 +256,10 @@ if ($action == 'setdate') {
|
|||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
} else {
|
} else {
|
||||||
if ($mode != '_tmp')
|
if ($mode != '_tmp')
|
||||||
{
|
{
|
||||||
setEventMessages($langs->trans('Saved'), null, 'mesgs');
|
setEventMessages($langs->trans('Saved'), null, 'mesgs');
|
||||||
}
|
}
|
||||||
$action = '';
|
$action = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -270,7 +272,7 @@ if ($action == 'setjournal') {
|
|||||||
} else {
|
} else {
|
||||||
if ($mode != '_tmp')
|
if ($mode != '_tmp')
|
||||||
{
|
{
|
||||||
setEventMessages($langs->trans('Saved'), null, 'mesgs');
|
setEventMessages($langs->trans('Saved'), null, 'mesgs');
|
||||||
}
|
}
|
||||||
$action = '';
|
$action = '';
|
||||||
}
|
}
|
||||||
@ -284,7 +286,7 @@ if ($action == 'setdocref') {
|
|||||||
} else {
|
} else {
|
||||||
if ($mode != '_tmp')
|
if ($mode != '_tmp')
|
||||||
{
|
{
|
||||||
setEventMessages($langs->trans('Saved'), null, 'mesgs');
|
setEventMessages($langs->trans('Saved'), null, 'mesgs');
|
||||||
}
|
}
|
||||||
$action = '';
|
$action = '';
|
||||||
}
|
}
|
||||||
@ -318,7 +320,8 @@ if ($action == 'delete') {
|
|||||||
print $formconfirm;
|
print $formconfirm;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'create') {
|
if ($action == 'create')
|
||||||
|
{
|
||||||
print load_fiche_titre($langs->trans("CreateMvts"));
|
print load_fiche_titre($langs->trans("CreateMvts"));
|
||||||
|
|
||||||
$book = new BookKeeping($db);
|
$book = new BookKeeping($db);
|
||||||
@ -359,17 +362,21 @@ if ($action == 'create') {
|
|||||||
print '<td><input type="text" class="minwidth200" name="doc_ref" value=""/></td>';
|
print '<td><input type="text" class="minwidth200" name="doc_ref" value=""/></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>';
|
||||||
|
|
||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
|
|
||||||
print '<div align="center"><input type="submit" class="button" value="' . $langs->trans("Create") . '">';
|
print '<div class="center">';
|
||||||
print ' <input type="button" value="' . $langs->trans("Cancel") . '" class="button" onclick="history.go(-1)" />';
|
print '<input type="submit" class="button" value="' . $langs->trans("Create") . '">';
|
||||||
|
print ' ';
|
||||||
|
print '<input type="button" value="' . $langs->trans("Cancel") . '" class="button" onclick="history.go(-1)" />';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
@ -380,9 +387,9 @@ if ($action == 'create') {
|
|||||||
setEventMessages($book->error, $book->errors, 'errors');
|
setEventMessages($book->error, $book->errors, 'errors');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! empty($book->piece_num)) {
|
if (! empty($book->piece_num))
|
||||||
|
{
|
||||||
$backlink = '<a href="list.php">' . $langs->trans('BackToList') . '</a>';
|
$backlink = '<a href="'.DOL_URL_ROOT.'/accountancy/bookkeeping/list.php">' . $langs->trans('BackToList') . '</a>';
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("UpdateMvts"), $backlink);
|
print load_fiche_titre($langs->trans("UpdateMvts"), $backlink);
|
||||||
|
|
||||||
@ -395,23 +402,21 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
dol_fiche_head($head, 'transaction', '', -1);
|
dol_fiche_head($head, 'transaction', '', -1);
|
||||||
|
|
||||||
|
|
||||||
//dol_banner_tab($book, '', $backlink);
|
//dol_banner_tab($book, '', $backlink);
|
||||||
|
|
||||||
|
|
||||||
print '<div class="fichecenter">';
|
print '<div class="fichecenter">';
|
||||||
print '<div class="fichehalfleft">';
|
print '<div class="fichehalfleft">';
|
||||||
|
|
||||||
print '<div class="underbanner clearboth"></div>';
|
print '<div class="underbanner clearboth"></div>';
|
||||||
print '<table class="border tableforfield" width="100%">';
|
print '<table class="border tableforfield" width="100%">';
|
||||||
|
|
||||||
// account movement
|
// Account movement
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td class="titlefield">' . $langs->trans("NumMvts") . '</td>';
|
print '<td class="titlefield">' . $langs->trans("NumMvts") . '</td>';
|
||||||
print '<td>' . $book->piece_num . '</td>';
|
print '<td>' . $book->piece_num . '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
// date
|
// Date
|
||||||
print '<tr><td>';
|
print '<tr><td>';
|
||||||
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
||||||
print $langs->trans('Docdate');
|
print $langs->trans('Docdate');
|
||||||
@ -429,11 +434,12 @@ if ($action == 'create') {
|
|||||||
print '<input type="submit" class="button" value="' . $langs->trans('Modify') . '">';
|
print '<input type="submit" class="button" value="' . $langs->trans('Modify') . '">';
|
||||||
print '</form>';
|
print '</form>';
|
||||||
} else {
|
} else {
|
||||||
print $book->doc_date ? dol_print_date($book->doc_date, 'daytext') : ' ';
|
print $book->doc_date ? dol_print_date($book->doc_date, 'daytext') : ' ';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
//journal
|
|
||||||
|
// Journal
|
||||||
print '<tr><td>';
|
print '<tr><td>';
|
||||||
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
||||||
print $langs->trans('Codejournal');
|
print $langs->trans('Codejournal');
|
||||||
@ -455,7 +461,8 @@ if ($action == 'create') {
|
|||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
//docref
|
|
||||||
|
// Ref document
|
||||||
print '<tr><td>';
|
print '<tr><td>';
|
||||||
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
||||||
print $langs->trans('Docref');
|
print $langs->trans('Docref');
|
||||||
@ -488,9 +495,20 @@ if ($action == 'create') {
|
|||||||
print '<table class="border tableforfield" width="100%">';
|
print '<table class="border tableforfield" width="100%">';
|
||||||
|
|
||||||
// Doc type
|
// Doc type
|
||||||
|
if(! empty($book->doc_type))
|
||||||
|
{
|
||||||
|
print '<tr>';
|
||||||
|
print '<td class="titlefield">' . $langs->trans("Doctype") . '</td>';
|
||||||
|
print '<td>' . $book->doc_type . '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Date document creation
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>' . $langs->trans("Doctype") . '</td>';
|
print '<td class="titlefield">' . $langs->trans("DateCreation") . '</td>';
|
||||||
print '<td>' . $book->doc_type . '</td>';
|
print '<td>';
|
||||||
|
print $book->date_creation ? dol_print_date($book->date_creation, 'daytext') : ' ';
|
||||||
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
// Validate
|
// Validate
|
||||||
@ -542,7 +560,6 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
|
|
||||||
$result = $book->fetchAllPerMvt($piece_num, $mode);
|
$result = $book->fetchAllPerMvt($piece_num, $mode);
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessages($book->error, $book->errors, 'errors');
|
setEventMessages($book->error, $book->errors, 'errors');
|
||||||
@ -570,7 +587,7 @@ if ($action == 'create') {
|
|||||||
print_liste_field_titre("AccountAccountingShort");
|
print_liste_field_titre("AccountAccountingShort");
|
||||||
print_liste_field_titre("SubledgerAccount");
|
print_liste_field_titre("SubledgerAccount");
|
||||||
print_liste_field_titre("LabelAccount");
|
print_liste_field_titre("LabelAccount");
|
||||||
print_liste_field_titre("Label");
|
print_liste_field_titre("LabelOperation");
|
||||||
print_liste_field_titre("Debit", "", "", "", "", 'align="right"');
|
print_liste_field_titre("Debit", "", "", "", "", 'align="right"');
|
||||||
print_liste_field_titre("Credit", "", "", "", "", 'align="right"');
|
print_liste_field_titre("Credit", "", "", "", "", 'align="right"');
|
||||||
print_liste_field_titre("Action", "", "", "", "", 'width="60" align="center"');
|
print_liste_field_titre("Action", "", "", "", "", 'width="60" align="center"');
|
||||||
@ -587,16 +604,16 @@ if ($action == 'create') {
|
|||||||
print $formaccounting->select_account($line->numero_compte, 'account_number', 1, array (), 1, 1, '');
|
print $formaccounting->select_account($line->numero_compte, 'account_number', 1, array (), 1, 1, '');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
// TODO For the moment we keep a fre input text instead of a combo. The select_auxaccount has problem because it does not
|
// TODO For the moment we keep a free input text instead of a combo. The select_auxaccount has problem because it does not
|
||||||
// use setup of keypress to select thirdparty and this hang browser on large database.
|
// use setup of keypress to select thirdparty and this hang browser on large database.
|
||||||
if (! empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX))
|
if (! empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX))
|
||||||
{
|
{
|
||||||
print $formaccounting->select_auxaccount($line->subledger_account, 'subledger_account', 1);
|
print $formaccounting->select_auxaccount($line->subledger_account, 'subledger_account', 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print '<input type="text" name="subledger_account" value="'.$line->subledger_account.'">';
|
print '<input type="text" name="subledger_account" value="'.$line->subledger_account.'">';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td><input type="text" size="15" name="label_compte" value="' . $line->label_compte . '"/></td>';
|
print '<td><input type="text" size="15" name="label_compte" value="' . $line->label_compte . '"/></td>';
|
||||||
print '<td><input type="text" size="15" name="label_operation" value="' . $line->label_operation. '"/></td>';
|
print '<td><input type="text" size="15" name="label_operation" value="' . $line->label_operation. '"/></td>';
|
||||||
@ -631,7 +648,7 @@ if ($action == 'create') {
|
|||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($total_debit != $total_credit)
|
if (price2num($total_debit) != price2num($total_credit))
|
||||||
{
|
{
|
||||||
setEventMessages(null, array($langs->trans('MvtNotCorrectlyBalanced', $total_credit, $total_debit)), 'warnings');
|
setEventMessages(null, array($langs->trans('MvtNotCorrectlyBalanced', $total_credit, $total_debit)), 'warnings');
|
||||||
}
|
}
|
||||||
@ -644,14 +661,14 @@ if ($action == 'create') {
|
|||||||
print '<td>';
|
print '<td>';
|
||||||
// TODO For the moment we keep a fre input text instead of a combo. The select_auxaccount has problem because it does not
|
// TODO For the moment we keep a fre input text instead of a combo. The select_auxaccount has problem because it does not
|
||||||
// use setup of keypress to select thirdparty and this hang browser on large database.
|
// use setup of keypress to select thirdparty and this hang browser on large database.
|
||||||
if (! empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX))
|
if (! empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX))
|
||||||
{
|
{
|
||||||
print $formaccounting->select_auxaccount($subledger_account, 'subledger_account', 1);
|
print $formaccounting->select_auxaccount($subledger_account, 'subledger_account', 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print '<input type="text" name="subledger_account" value="">';
|
print '<input type="text" name="subledger_account" value="">';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td><input type="text" size="15" name="label_compte" value="' . $line->label_compte . '"/></td>';
|
print '<td><input type="text" size="15" name="label_compte" value="' . $line->label_compte . '"/></td>';
|
||||||
print '<td><input type="text" size="15" name="label_operation" value="' . $line->label_operation. '"/></td>';
|
print '<td><input type="text" size="15" name="label_operation" value="' . $line->label_operation. '"/></td>';
|
||||||
@ -665,15 +682,15 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
if ($mode=='_tmp' && $action=='')
|
if ($mode=='_tmp' && $action=='')
|
||||||
{
|
{
|
||||||
print '<br>';
|
print '<br>';
|
||||||
print '<div class="center">';
|
print '<div class="center">';
|
||||||
if ($total_debit == $total_credit)
|
if ($total_debit == $total_credit)
|
||||||
{
|
{
|
||||||
print '<a class="button" href="' . $_SERVER["PHP_SELF"] . '?piece_num=' . $book->piece_num . '&action=valid">'.$langs->trans("ValidTransaction").'</a>';
|
print '<a class="button" href="' . $_SERVER["PHP_SELF"] . '?piece_num=' . $book->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", $credit, $debit)).'" value="'.dol_escape_htmltag($langs->trans("ValidTransaction")).'">';
|
print '<input type="submit" class="button" disabled="disabled" href="#" title="'.dol_escape_htmltag($langs->trans("MvtNotCorrectlyBalanced", $credit, $debit)).'" value="'.dol_escape_htmltag($langs->trans("ValidTransaction")).'">';
|
||||||
}
|
}
|
||||||
|
|
||||||
print ' ';
|
print ' ';
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/* 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-2017 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2013-2017 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
* Copyright (C) 2016-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2016-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -44,6 +44,10 @@ $search_doc_ref = GETPOST("search_doc_ref");
|
|||||||
$search_date_start = dol_mktime(0, 0, 0, GETPOST('date_startmonth', 'int'), GETPOST('date_startday', 'int'), GETPOST('date_startyear', 'int'));
|
$search_date_start = dol_mktime(0, 0, 0, GETPOST('date_startmonth', 'int'), GETPOST('date_startday', 'int'), GETPOST('date_startyear', 'int'));
|
||||||
$search_date_end = dol_mktime(0, 0, 0, GETPOST('date_endmonth', 'int'), GETPOST('date_endday', 'int'), GETPOST('date_endyear', 'int'));
|
$search_date_end = dol_mktime(0, 0, 0, GETPOST('date_endmonth', 'int'), GETPOST('date_endday', 'int'), GETPOST('date_endyear', 'int'));
|
||||||
$search_doc_date = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int'));
|
$search_doc_date = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int'));
|
||||||
|
$search_date_creation_start = dol_mktime(0, 0, 0, GETPOST('date_creation_startmonth', 'int'), GETPOST('date_creation_startday', 'int'), GETPOST('date_creation_startyear', 'int'));
|
||||||
|
$search_date_creation_end = dol_mktime(0, 0, 0, GETPOST('date_creation_endmonth', 'int'), GETPOST('date_creation_endday', 'int'), GETPOST('date_creation_endyear', 'int'));
|
||||||
|
$search_date_modification_start = dol_mktime(0, 0, 0, GETPOST('date_modification_startmonth', 'int'), GETPOST('date_modification_startday', 'int'), GETPOST('date_modification_startyear', 'int'));
|
||||||
|
$search_date_modification_end = dol_mktime(0, 0, 0, GETPOST('date_modification_endmonth', 'int'), GETPOST('date_modification_endday', 'int'), GETPOST('date_modification_endyear', 'int'));
|
||||||
|
|
||||||
if (GETPOST("button_delmvt_x") || GETPOST("button_delmvt.x") || GETPOST("button_delmvt")) {
|
if (GETPOST("button_delmvt_x") || GETPOST("button_delmvt.x") || GETPOST("button_delmvt")) {
|
||||||
$action = 'delbookkeepingyear';
|
$action = 'delbookkeepingyear';
|
||||||
@ -53,7 +57,6 @@ if (GETPOST("button_export_file_x") || GETPOST("button_export_file.x") || GETPOS
|
|||||||
}
|
}
|
||||||
|
|
||||||
$search_accountancy_code = GETPOST("search_accountancy_code");
|
$search_accountancy_code = GETPOST("search_accountancy_code");
|
||||||
|
|
||||||
$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 = '';
|
||||||
@ -64,7 +67,6 @@ if ($search_accountancy_code_end == - 1) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$search_accountancy_aux_code = GETPOST("search_accountancy_aux_code");
|
$search_accountancy_aux_code = GETPOST("search_accountancy_aux_code");
|
||||||
|
|
||||||
$search_accountancy_aux_code_start = GETPOST('search_accountancy_aux_code_start', 'alpha');
|
$search_accountancy_aux_code_start = GETPOST('search_accountancy_aux_code_start', 'alpha');
|
||||||
if ($search_accountancy_aux_code_start == - 1) {
|
if ($search_accountancy_aux_code_start == - 1) {
|
||||||
$search_accountancy_aux_code_start = '';
|
$search_accountancy_aux_code_start = '';
|
||||||
@ -102,15 +104,30 @@ if ($action != 'export_file' && ! isset($_POST['begin']) && ! isset($_GET['begin
|
|||||||
$search_date_end = dol_mktime(0, 0, 0, 12, 31, dol_print_date(dol_now(), '%Y'));
|
$search_date_end = dol_mktime(0, 0, 0, 12, 31, dol_print_date(dol_now(), '%Y'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$arrayfields=array(
|
||||||
|
't.piece_num'=>array('label'=>$langs->trans("TransactionNumShort"), 'checked'=>1),
|
||||||
|
't.doc_date'=>array('label'=>$langs->trans("Docdate"), 'checked'=>1),
|
||||||
|
't.doc_ref'=>array('label'=>$langs->trans("Docref"), 'checked'=>1),
|
||||||
|
't.numero_compte'=>array('label'=>$langs->trans("AccountAccountingShort"), 'checked'=>1),
|
||||||
|
't.subledger_account'=>array('label'=>$langs->trans("SubledgerAccount"), 'checked'=>1),
|
||||||
|
't.label_operation'=>array('label'=>$langs->trans("Label"), 'checked'=>1),
|
||||||
|
't.debit'=>array('label'=>$langs->trans("Debit"), 'checked'=>1),
|
||||||
|
't.credit'=>array('label'=>$langs->trans("Credit"), 'checked'=>1),
|
||||||
|
't.code_journal'=>array('label'=>$langs->trans("Codejournal"), 'checked'=>1),
|
||||||
|
't.date_creation'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0),
|
||||||
|
't.tms'=>array('label'=>$langs->trans("DateModification"), 'checked'=>0),
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Action
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (GETPOST('cancel','alpha')) { $action='list'; $massaction=''; }
|
if (GETPOST('cancel','alpha')) { $action='list'; $massaction=''; }
|
||||||
if (! GETPOST('confirmmassaction','alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction=''; }
|
if (! GETPOST('confirmmassaction','alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction=''; }
|
||||||
|
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
|
||||||
|
|
||||||
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_mvt_num = '';
|
$search_mvt_num = '';
|
||||||
@ -128,6 +145,10 @@ if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x',
|
|||||||
$search_ledger_code = '';
|
$search_ledger_code = '';
|
||||||
$search_date_start = '';
|
$search_date_start = '';
|
||||||
$search_date_end = '';
|
$search_date_end = '';
|
||||||
|
$search_date_creation_start = '';
|
||||||
|
$search_date_creation_end = '';
|
||||||
|
$search_date_modification_start = '';
|
||||||
|
$search_date_modification_end = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Must be after the remove filter action, before the export.
|
// Must be after the remove filter action, before the export.
|
||||||
@ -196,6 +217,26 @@ if (! empty($search_mvt_num)) {
|
|||||||
$filter['t.piece_num'] = $search_mvt_num;
|
$filter['t.piece_num'] = $search_mvt_num;
|
||||||
$param .= '&search_mvt_num=' . $search_mvt_num;
|
$param .= '&search_mvt_num=' . $search_mvt_num;
|
||||||
}
|
}
|
||||||
|
if (! empty($search_date_creation_start)) {
|
||||||
|
$filter['t.date_creation>='] = $search_date_creation_start;
|
||||||
|
$tmp=dol_getdate($search_date_creation_start);
|
||||||
|
$param .= '&date_creation_startmonth=' . $tmp['mon'] . '&date_creation_startday=' . $tmp['mday'] . '&date_creation_startyear=' . $tmp['year'];
|
||||||
|
}
|
||||||
|
if (! empty($search_date_creation_end)) {
|
||||||
|
$filter['t.date_creation<='] = $search_date_creation_end;
|
||||||
|
$tmp=dol_getdate($search_date_creation_end);
|
||||||
|
$param .= '&date_creation_endmonth=' . $tmp['mon'] . '&date_creation_endday=' . $tmp['mday'] . '&date_creation_endyear=' . $tmp['year'];
|
||||||
|
}
|
||||||
|
if (! empty($search_date_modification_start)) {
|
||||||
|
$filter['t.tms>='] = $search_date_modification_start;
|
||||||
|
$tmp=dol_getdate($search_date_modification_start);
|
||||||
|
$param .= '&date_modification_startmonth=' . $tmp['mon'] . '&date_modification_startday=' . $tmp['mday'] . '&date_modification_startyear=' . $tmp['year'];
|
||||||
|
}
|
||||||
|
if (! empty($search_date_modification_end)) {
|
||||||
|
$filter['t.tms<='] = $search_date_modification_end;
|
||||||
|
$tmp=dol_getdate($search_date_modification_end);
|
||||||
|
$param .= '&date_modification_endmonth=' . $tmp['mon'] . '&date_modification_endday=' . $tmp['mday'] . '&date_modification_endyear=' . $tmp['year'];
|
||||||
|
}
|
||||||
|
|
||||||
if ($action == 'delbookkeeping') {
|
if ($action == 'delbookkeeping') {
|
||||||
|
|
||||||
@ -370,137 +411,288 @@ print '<div class="inline-block divButAction"><a class="butActionDelete" name="b
|
|||||||
|
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
print '<div class="div-table-responsive">';
|
$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
|
||||||
print '<table class="noborder" width="100%">';
|
$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields
|
||||||
|
if ($massactionbutton) $selectedfields.=$form->showCheckAddButtons('checkforselect', 1);
|
||||||
|
|
||||||
|
print '<div class="div-table-responsive">';
|
||||||
|
print '<table class="tagtable liste" width="100%">';
|
||||||
|
|
||||||
|
// Filters lines
|
||||||
print '<tr class="liste_titre_filter">';
|
print '<tr class="liste_titre_filter">';
|
||||||
print '<td class="liste_titre"><input type="text" name="search_mvt_num" size="6" value="' . dol_escape_htmltag($search_mvt_num) . '"></td>';
|
// Movement number
|
||||||
print '<td class="liste_titre center">';
|
if (! empty($arrayfields['t.piece_num']['checked']))
|
||||||
print '<div class="nowrap">';
|
|
||||||
print $langs->trans('From') . ' ';
|
|
||||||
print $form->select_date($search_date_start, 'date_start', 0, 0, 1);
|
|
||||||
print '</div>';
|
|
||||||
print '<div class="nowrap">';
|
|
||||||
print $langs->trans('to') . ' ';
|
|
||||||
print $form->select_date($search_date_end, 'date_end', 0, 0, 1);
|
|
||||||
print '</div>';
|
|
||||||
print '</td>';
|
|
||||||
print '<td class="liste_titre"><input type="text" name="search_doc_ref" size="8" value="' . dol_escape_htmltag($search_doc_ref) . '"></td>';
|
|
||||||
print '<td class="liste_titre">';
|
|
||||||
print '<div class="nowrap">';
|
|
||||||
print $langs->trans('From').' ';
|
|
||||||
print $formaccounting->select_account($search_accountancy_code_start, 'search_accountancy_code_start', 1, array (), 1, 1, 'maxwidth200');
|
|
||||||
print '</div>';
|
|
||||||
print '<div class="nowrap">';
|
|
||||||
print $langs->trans('to').' ';
|
|
||||||
print $formaccounting->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array (), 1, 1, 'maxwidth200');
|
|
||||||
print '</div>';
|
|
||||||
print '</td>';
|
|
||||||
print '<td class="liste_titre">';
|
|
||||||
print '<div class="nowrap">';
|
|
||||||
print $langs->trans('From').' ';
|
|
||||||
// TODO For the moment we keep a free input text instead of a combo. The select_auxaccount has problem because it does not
|
|
||||||
// use setup of keypress to select thirdparty and this hang browser on large database.
|
|
||||||
if (! empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX))
|
|
||||||
{
|
{
|
||||||
print $formaccounting->select_auxaccount($search_accountancy_aux_code_start, 'search_accountancy_aux_code_start', 1);
|
print '<td class="liste_titre"><input type="text" name="search_mvt_num" size="6" value="' . dol_escape_htmltag($search_mvt_num) . '"></td>';
|
||||||
}
|
}
|
||||||
else
|
// Date document
|
||||||
|
if (! empty($arrayfields['t.doc_date']['checked']))
|
||||||
{
|
{
|
||||||
print '<input type="text" name="search_accountancy_aux_code_start" value="'.$search_accountancy_aux_code_start.'">';
|
print '<td class="liste_titre center">';
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $langs->trans('From') . ' ';
|
||||||
|
print $form->select_date($search_date_start, 'date_start', 0, 0, 1);
|
||||||
|
print '</div>';
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $langs->trans('to') . ' ';
|
||||||
|
print $form->select_date($search_date_end, 'date_end', 0, 0, 1);
|
||||||
|
print '</div>';
|
||||||
|
print '</td>';
|
||||||
}
|
}
|
||||||
print '</div>';
|
// Ref document
|
||||||
print '<div class="nowrap">';
|
if (! empty($arrayfields['t.doc_ref']['checked']))
|
||||||
print $langs->trans('to').' ';
|
|
||||||
// TODO For the moment we keep a free input text instead of a combo. The select_auxaccount has problem because it does not
|
|
||||||
// use setup of keypress to select thirdparty and this hang browser on large database.
|
|
||||||
if (! empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX))
|
|
||||||
{
|
{
|
||||||
print $formaccounting->select_auxaccount($search_accountancy_aux_code_end, 'search_accountancy_aux_code_end', 1);
|
print '<td class="liste_titre"><input type="text" name="search_doc_ref" size="8" value="' . dol_escape_htmltag($search_doc_ref) . '"></td>';
|
||||||
}
|
}
|
||||||
else
|
// Accountancy account
|
||||||
|
if (! empty($arrayfields['t.numero_compte']['checked']))
|
||||||
{
|
{
|
||||||
print '<input type="text" name="search_accountancy_aux_code_end" value="'.$search_accountancy_aux_code_end.'">';
|
print '<td class="liste_titre">';
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $langs->trans('From').' ';
|
||||||
|
print $formaccounting->select_account($search_accountancy_code_start, 'search_accountancy_code_start', 1, array (), 1, 1, 'maxwidth200');
|
||||||
|
print '</div>';
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $langs->trans('to').' ';
|
||||||
|
print $formaccounting->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array (), 1, 1, 'maxwidth200');
|
||||||
|
print '</div>';
|
||||||
|
print '</td>';
|
||||||
}
|
}
|
||||||
print '</div>';
|
// Subledger account
|
||||||
print '</td>';
|
if (! empty($arrayfields['t.subledger_account']['checked']))
|
||||||
print '<td class="liste_titre">';
|
{
|
||||||
print '<input type="text" size="7" class="flat" name="search_mvt_label" value="' . $search_mvt_label . '"/>';
|
print '<td class="liste_titre">';
|
||||||
print '</td>';
|
print '<div class="nowrap">';
|
||||||
print '<td class="liste_titre center"> </td>';
|
print $langs->trans('From').' ';
|
||||||
print '<td class="liste_titre center"> </td>';
|
// TODO For the moment we keep a free input text instead of a combo. The select_auxaccount has problem because it does not
|
||||||
print '<td class="liste_titre center"><input type="text" name="search_ledger_code" size="3" value="' . $search_ledger_code . '"></td>';
|
// use setup of keypress to select thirdparty and this hang browser on large database.
|
||||||
|
if (! empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX))
|
||||||
|
{
|
||||||
|
print $formaccounting->select_auxaccount($search_accountancy_aux_code_start, 'search_accountancy_aux_code_start', 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print '<input type="text" name="search_accountancy_aux_code_start" value="'.$search_accountancy_aux_code_start.'">';
|
||||||
|
}
|
||||||
|
print '</div>';
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $langs->trans('to').' ';
|
||||||
|
// TODO For the moment we keep a free input text instead of a combo. The select_auxaccount has problem because it does not
|
||||||
|
// use setup of keypress to select thirdparty and this hang browser on large database.
|
||||||
|
if (! empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX))
|
||||||
|
{
|
||||||
|
print $formaccounting->select_auxaccount($search_accountancy_aux_code_end, 'search_accountancy_aux_code_end', 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print '<input type="text" name="search_accountancy_aux_code_end" value="'.$search_accountancy_aux_code_end.'">';
|
||||||
|
}
|
||||||
|
print '</div>';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
// Label operation
|
||||||
|
if (! empty($arrayfields['t.label_operation']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="liste_titre">';
|
||||||
|
print '<input type="text" size="7" class="flat" name="search_mvt_label" value="' . $search_mvt_label . '"/>';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
// Debit
|
||||||
|
if (! empty($arrayfields['t.debit']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="liste_titre center"> </td>';
|
||||||
|
}
|
||||||
|
// Credit
|
||||||
|
if (! empty($arrayfields['t.credit']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="liste_titre center"> </td>';
|
||||||
|
}
|
||||||
|
// Code journal
|
||||||
|
if (! empty($arrayfields['t.code_journal']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="liste_titre center"><input type="text" name="search_ledger_code" size="3" value="' . $search_ledger_code . '"></td>';
|
||||||
|
}
|
||||||
|
// Date creation
|
||||||
|
if (! empty($arrayfields['t.date_creation']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="liste_titre center">';
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $langs->trans('From') . ' ';
|
||||||
|
print $form->select_date($search_date_creation_start, 'date_creation_start', 0, 0, 1);
|
||||||
|
print '</div>';
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $langs->trans('to') . ' ';
|
||||||
|
print $form->select_date($search_date_creation_end, 'date_creation_end', 0, 0, 1);
|
||||||
|
print '</div>';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
// Date modification
|
||||||
|
if (! empty($arrayfields['t.tms']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="liste_titre center">';
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $langs->trans('From') . ' ';
|
||||||
|
print $form->select_date($search_date_modification_start, 'date_modification_start', 0, 0, 1);
|
||||||
|
print '</div>';
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $langs->trans('to') . ' ';
|
||||||
|
print $form->select_date($search_date_modification_end, 'date_modification_end', 0, 0, 1);
|
||||||
|
print '</div>';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
// Action column
|
||||||
print '<td class="liste_titre center">';
|
print '<td class="liste_titre center">';
|
||||||
$searchpicto=$form->showFilterButtons();
|
$searchpicto=$form->showFilterButtons();
|
||||||
print $searchpicto;
|
print $searchpicto;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print "</tr>\n";
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print_liste_field_titre("TransactionNumShort", $_SERVER['PHP_SELF'], "t.piece_num", "", $param, "", $sortfield, $sortorder);
|
if (! empty($arrayfields['t.piece_num']['checked'])) print_liste_field_titre("TransactionNumShort", $_SERVER['PHP_SELF'], "t.piece_num", "", $param, "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Docdate", $_SERVER['PHP_SELF'], "t.doc_date", "", $param, 'align="center"', $sortfield, $sortorder);
|
if (! empty($arrayfields['t.doc_date']['checked'])) print_liste_field_titre("Docdate", $_SERVER['PHP_SELF'], "t.doc_date", "", $param, 'align="center"', $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Docref", $_SERVER['PHP_SELF'], "t.doc_ref", "", $param, "", $sortfield, $sortorder);
|
if (! empty($arrayfields['t.doc_ref']['checked'])) print_liste_field_titre("Docref", $_SERVER['PHP_SELF'], "t.doc_ref", "", $param, "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("AccountAccountingShort", $_SERVER['PHP_SELF'], "t.numero_compte", "", $param, "", $sortfield, $sortorder);
|
if (! empty($arrayfields['t.numero_compte']['checked'])) print_liste_field_titre("AccountAccountingShort", $_SERVER['PHP_SELF'], "t.numero_compte", "", $param, "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("SubledgerAccount", $_SERVER['PHP_SELF'], "t.subledger_account", "", $param, "", $sortfield, $sortorder);
|
if (! empty($arrayfields['t.subledger_account']['checked'])) print_liste_field_titre("SubledgerAccount", $_SERVER['PHP_SELF'], "t.subledger_account", "", $param, "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Label", $_SERVER['PHP_SELF'], "t.label_operation", "", $param, "", $sortfield, $sortorder);
|
if (! empty($arrayfields['t.label_operation']['checked'])) print_liste_field_titre("Label", $_SERVER['PHP_SELF'], "t.label_operation", "", $param, "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Debit", $_SERVER['PHP_SELF'], "t.debit", "", $param, 'align="right"', $sortfield, $sortorder);
|
if (! empty($arrayfields['t.debit']['checked'])) print_liste_field_titre("Debit", $_SERVER['PHP_SELF'], "t.debit", "", $param, 'align="right"', $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Credit", $_SERVER['PHP_SELF'], "t.credit", "", $param, 'align="right"', $sortfield, $sortorder);
|
if (! empty($arrayfields['t.credit']['checked'])) print_liste_field_titre("Credit", $_SERVER['PHP_SELF'], "t.credit", "", $param, 'align="right"', $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Codejournal", $_SERVER['PHP_SELF'], "t.code_journal", "", $param, 'align="center"', $sortfield, $sortorder);
|
if (! empty($arrayfields['t.code_journal']['checked'])) print_liste_field_titre("Codejournal", $_SERVER['PHP_SELF'], "t.code_journal", "", $param, 'align="center"', $sortfield, $sortorder);
|
||||||
$checkpicto='';
|
if (! empty($arrayfields['t.date_creation']['checked'])) print_liste_field_titre("DateCreation", $_SERVER['PHP_SELF'], "t.date_creation", "", $param, 'align="center"', $sortfield, $sortorder);
|
||||||
if ($massactionbutton) $checkpicto=$form->showCheckAddButtons('checkforselect', 1);
|
if (! empty($arrayfields['t.tms']['checked'])) print_liste_field_titre("DateModification", $_SERVER['PHP_SELF'], "t.tms", "", $param, 'align="center"', $sortfield, $sortorder);
|
||||||
print_liste_field_titre($checkpicto, $_SERVER["PHP_SELF"], "", $param, "", 'width="60" align="center"', $sortfield, $sortorder);
|
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="center"',$sortfield,$sortorder,'maxwidthsearch ');
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
|
|
||||||
$total_debit = 0;
|
if ($num > 0)
|
||||||
$total_credit = 0;
|
|
||||||
|
|
||||||
$i=0;
|
|
||||||
while ($i < min($num, $limit))
|
|
||||||
{
|
{
|
||||||
$line = $object->lines[$i];
|
$i=0;
|
||||||
|
$totalarray=array();
|
||||||
|
while ($i < min($num, $limit))
|
||||||
|
{
|
||||||
|
$line = $object->lines[$i];
|
||||||
|
|
||||||
$total_debit += $line->debit;
|
$total_debit += $line->debit;
|
||||||
$total_credit += $line->credit;
|
$total_credit += $line->credit;
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
|
|
||||||
print '<td><a href="./card.php?piece_num=' . $line->piece_num . '">' . $line->piece_num . '</a></td>';
|
// Piece number
|
||||||
print '<td align="center">' . dol_print_date($line->doc_date, 'day') . '</td>';
|
if (! empty($arrayfields['t.piece_num']['checked']))
|
||||||
print '<td class="nowrap">' . $line->doc_ref . '</td>';
|
{
|
||||||
print '<td>' . length_accountg($line->numero_compte) . '</td>';
|
print '<td><a href="./card.php?piece_num=' . $line->piece_num . '">' . $line->piece_num . '</a></td>';
|
||||||
print '<td>' . length_accounta($line->subledger_account) . '</td>';
|
if (! $i) $totalarray['nbfield']++;
|
||||||
print '<td>' . $line->label_operation . '</td>';
|
}
|
||||||
print '<td align="right">' . ($line->debit ? price($line->debit) : ''). '</td>';
|
|
||||||
print '<td align="right">' . ($line->credit ? price($line->credit) : '') . '</td>';
|
|
||||||
|
|
||||||
$accountingjournal = new AccountingJournal($db);
|
// Document date
|
||||||
$result = $accountingjournal->fetch('',$line->code_journal);
|
if (! empty($arrayfields['t.doc_date']['checked']))
|
||||||
$journaltoshow = (($result > 0)?$accountingjournal->getNomUrl(0,0,0,'',0) : $line->code_journal);
|
{
|
||||||
print '<td align="center">' . $journaltoshow . '</td>';
|
print '<td align="center">' . dol_print_date($line->doc_date, 'day') . '</td>';
|
||||||
|
if (! $i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
|
||||||
print '<td align="center">';
|
// Document ref
|
||||||
print '<a href="./card.php?piece_num=' . $line->piece_num . '">' . img_edit() . '</a> ';
|
if (! empty($arrayfields['t.doc_ref']['checked']))
|
||||||
print '<a href="' . $_SERVER['PHP_SELF'] . '?action=delmouv&mvt_num=' . $line->piece_num . $param . '&page=' . $page . '">' . img_delete() . '</a>';
|
{
|
||||||
print '</td>';
|
print '<td class="nowrap">' . $line->doc_ref . '</td>';
|
||||||
print "</tr>\n";
|
if (! $i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
|
||||||
$i++;
|
// Account number
|
||||||
|
if (! empty($arrayfields['t.numero_compte']['checked']))
|
||||||
|
{
|
||||||
|
print '<td>' . length_accountg($line->numero_compte) . '</td>';
|
||||||
|
if (! $i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Subledger account
|
||||||
|
if (! empty($arrayfields['t.subledger_account']['checked']))
|
||||||
|
{
|
||||||
|
print '<td>' . length_accounta($line->subledger_account) . '</td>';
|
||||||
|
if (! $i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Label operation
|
||||||
|
if (! empty($arrayfields['t.label_operation']['checked']))
|
||||||
|
{
|
||||||
|
print '<td>' . $line->label_operation . '</td>';
|
||||||
|
if (! $i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Amount debit
|
||||||
|
if (! empty($arrayfields['t.debit']['checked']))
|
||||||
|
{
|
||||||
|
print '<td align="right">' . ($line->debit ? price($line->debit) : ''). '</td>';
|
||||||
|
if (! $i) $totalarray['nbfield']++;
|
||||||
|
if (! $i) $totalarray['totaldebitfield']=$totalarray['nbfield'];
|
||||||
|
$totalarray['totaldebit'] += $line->debit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Amount credit
|
||||||
|
if (! empty($arrayfields['t.credit']['checked']))
|
||||||
|
{
|
||||||
|
print '<td align="right">' . ($line->credit ? price($line->credit) : '') . '</td>';
|
||||||
|
if (! $i) $totalarray['nbfield']++;
|
||||||
|
if (! $i) $totalarray['totalcreditfield']=$totalarray['nbfield'];
|
||||||
|
$totalarray['totalcredit'] += $line->credit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Journal code
|
||||||
|
if (! empty($arrayfields['t.code_journal']['checked']))
|
||||||
|
{
|
||||||
|
$accountingjournal = new AccountingJournal($db);
|
||||||
|
$result = $accountingjournal->fetch('',$line->code_journal);
|
||||||
|
$journaltoshow = (($result > 0)?$accountingjournal->getNomUrl(0,0,0,'',0) : $line->code_journal);
|
||||||
|
print '<td align="center">' . $journaltoshow . '</td>';
|
||||||
|
if (! $i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Creation operation date
|
||||||
|
if (! empty($arrayfields['t.date_creation']['checked']))
|
||||||
|
{
|
||||||
|
print '<td align="center">' . dol_print_date($line->date_creation, 'day') . '</td>';
|
||||||
|
if (! $i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modification operation date
|
||||||
|
if (! empty($arrayfields['t.tms']['checked']))
|
||||||
|
{
|
||||||
|
print '<td align="center">' . dol_print_date($line->date_modification, 'day') . '</td>';
|
||||||
|
if (! $i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Action column
|
||||||
|
print '<td align="center">';
|
||||||
|
print '<a href="./card.php?piece_num=' . $line->piece_num . '">' . img_edit() . '</a> ';
|
||||||
|
print '<a href="' . $_SERVER['PHP_SELF'] . '?action=delmouv&mvt_num=' . $line->piece_num . $param . '&page=' . $page . '">' . img_delete() . '</a>';
|
||||||
|
print '</td>';
|
||||||
|
if (! $i) $totalarray['nbfield']++;
|
||||||
|
|
||||||
|
print "</tr>\n";
|
||||||
|
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show total line
|
||||||
|
if (isset($totalarray['totaldebitfield']) || isset($totalarray['totalcreditfield']))
|
||||||
|
{
|
||||||
|
$i=0;
|
||||||
|
while ($i < $totalarray['nbfield'])
|
||||||
|
{
|
||||||
|
$i++;
|
||||||
|
if ($i == 1)
|
||||||
|
{
|
||||||
|
if ($num < $limit && empty($offset)) print '<td align="left">'.$langs->trans("Total").'</td>';
|
||||||
|
else print '<td align="left">'.$langs->trans("Totalforthispage").'</td>';
|
||||||
|
}
|
||||||
|
elseif ($totalarray['totaldebitfield'] == $i) print '<td align="right">'.price($totalarray['totaldebit']).'</td>';
|
||||||
|
elseif ($totalarray['totalcreditfield'] == $i) print '<td align="right">'.price($totalarray['totalcredit']).'</td>';
|
||||||
|
else print '<td></td>';
|
||||||
|
}
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<tr class="liste_total">';
|
|
||||||
if ($num < $limit) print '<td align="left" colspan="7">'.$langs->trans("Total").'</td>';
|
|
||||||
else print '<td align="left" colspan="7">'.$langs->trans("Totalforthispage").'</td>';
|
|
||||||
print '</td>';
|
|
||||||
print '<td align="right">';
|
|
||||||
print price($total_debit);
|
|
||||||
print '</td>';
|
|
||||||
print '<td align="right">';
|
|
||||||
print price($total_credit);
|
|
||||||
print '</td>';
|
|
||||||
print '<td colspan="2"></td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
print "</table>";
|
print "</table>";
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
|
|||||||
@ -21,11 +21,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file accounting/bookkeeping/thirdparty_lettrage.php
|
* \file accounting/bookkeeping/thirdparty_lettrage.php
|
||||||
* \ingroup Advanced accountancy
|
* \ingroup Advanced accountancy
|
||||||
* \brief Onglet de gestion de parametrages des ventilations
|
* \brief Onglet de gestion de parametrages des ventilations
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require '../../main.inc.php';
|
require '../../main.inc.php';
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formaccounting.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formaccounting.class.php';
|
||||||
@ -34,296 +33,286 @@ require_once DOL_DOCUMENT_ROOT . '/accountancy/class/lettering.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/lib/company.lib.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/company.lib.php';
|
||||||
|
|
||||||
$action=GETPOST('action','aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
$massaction=GETPOST('massaction','alpha');
|
$massaction = GETPOST('massaction', 'alpha');
|
||||||
$show_files=GETPOST('show_files','int');
|
$show_files = GETPOST('show_files', 'int');
|
||||||
$confirm=GETPOST('confirm','alpha');
|
$confirm = GETPOST('confirm', '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;
|
||||||
$sortfield = GETPOST("sortfield",'alpha');
|
$sortfield = GETPOST("sortfield", 'alpha');
|
||||||
$sortorder = GETPOST("sortorder",'alpha');
|
$sortorder = GETPOST("sortorder", 'alpha');
|
||||||
$page = GETPOST("page",'int');
|
$page = GETPOST("page", 'int');
|
||||||
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
if (empty($page) || $page == - 1) {
|
||||||
|
$page = 0;
|
||||||
|
} // If $page is not defined, or '' or -1
|
||||||
$offset = $limit * $page;
|
$offset = $limit * $page;
|
||||||
$pageprev = $page - 1;
|
$pageprev = $page - 1;
|
||||||
$pagenext = $page + 1;
|
$pagenext = $page + 1;
|
||||||
if ($sortorder == "") $sortorder = "ASC";
|
if ($sortorder == "")
|
||||||
if ($sortfield == "") $sortfield = "bk.rowid";
|
$sortorder = "DESC";
|
||||||
|
if ($sortfield == "")
|
||||||
|
$sortfield = "bk.doc_date";
|
||||||
|
|
||||||
$search_year = GETPOST ( "search_year" );
|
$search_year = GETPOST("search_year", 'int');
|
||||||
|
$search_doc_type = GETPOST("search_doc_type", 'alpha');
|
||||||
|
$search_doc_ref = GETPOST("search_doc_ref", 'alpha');
|
||||||
|
|
||||||
|
$lettering = GETPOST('lettering');
|
||||||
|
if (! empty($lettering)) {
|
||||||
|
$action = $lettering;
|
||||||
|
}
|
||||||
|
$toselect = GETPOST('toselect', 'array');
|
||||||
|
|
||||||
|
// Did we click on purge search criteria ?
|
||||||
|
// 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')) {
|
||||||
|
$search_year = '';
|
||||||
|
$search_doc_type = '';
|
||||||
|
$search_doc_ref = '';
|
||||||
|
}
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
$socid = GETPOST("socid",'int');
|
$socid = GETPOST("socid", 'int');
|
||||||
// if ($user->societe_id) $socid=$user->societe_id;
|
// if ($user->societe_id) $socid=$user->societe_id;
|
||||||
|
|
||||||
$object = new Societe($db);
|
$object = new Societe($db);
|
||||||
$object->id = $socid;
|
$object->id = $socid;
|
||||||
$object->fetch($socid);
|
$result = $object->fetch($socid);
|
||||||
|
if ($result < 0) {
|
||||||
|
setEventMessage($object->error, 'errors');
|
||||||
|
}
|
||||||
|
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
$BookKeeping = new lettering($db);
|
$BookKeeping = new lettering($db);
|
||||||
$formaccounting = new FormAccounting($db);
|
$formaccounting = new FormAccounting($db);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Action
|
* Action
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ($action == 'lettering') {
|
if ($action == 'lettering') {
|
||||||
|
|
||||||
$result = $BookKeeping->updatelettrage($_POST['ids']);
|
$result = $BookKeeping->updateLettrage($toselect);
|
||||||
|
|
||||||
// var_dump($result);
|
|
||||||
if( $result < 0 ){
|
|
||||||
setEventMessages('', $BookKeeping->errors, 'errors' );
|
|
||||||
$error++;
|
|
||||||
|
|
||||||
|
if ($result < 0) {
|
||||||
|
setEventMessages('', $BookKeeping->errors, 'errors');
|
||||||
|
$error ++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'autolettrage') {
|
if ($action == 'autolettrage') {
|
||||||
|
|
||||||
$result = $BookKeeping->LettrageTiers($socid);
|
$result = $BookKeeping->lettrageTiers($socid);
|
||||||
|
|
||||||
if( $result < 0 ){
|
|
||||||
setEventMessages('', $BookKeeping->errors, 'errors' );
|
|
||||||
$error++;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if ($result < 0) {
|
||||||
|
setEventMessages('', $BookKeeping->errors, 'errors');
|
||||||
|
$error ++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
llxHeader('', 'Compta - Grand Livre');
|
||||||
|
|
||||||
llxHeader ( '', 'Compta - Grand Livre' );
|
/*
|
||||||
|
* Affichage onglets
|
||||||
|
*/
|
||||||
|
$head = societe_prepare_head($object);
|
||||||
|
|
||||||
|
dol_htmloutput_mesg(is_numeric($error) ? '' : $error, $errors, 'error');
|
||||||
|
|
||||||
/*
|
dol_fiche_head($head, 'accounting', $langs->trans("ThirdParty"), 0, 'company');
|
||||||
* Affichage onglets
|
|
||||||
*/
|
|
||||||
$head = societe_prepare_head($object);
|
|
||||||
|
|
||||||
dol_htmloutput_mesg(is_numeric($error)?'':$error, $errors, 'error');
|
print '<table width="100%" class="border">';
|
||||||
|
print '<tr><td width="30%">' . $langs->trans("ThirdPartyName") . '</td><td width="70%" colspan="3">';
|
||||||
|
$object->next_prev_filter = "te.fournisseur = 1";
|
||||||
|
print $form->showrefnav($object, 'socid', '', ($user->societe_id ? 0 : 1), 'rowid', 'nom', '', '');
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
dol_fiche_head($head, 'TabAccounting', $langs->trans("ThirdParty"),0,'company');
|
if (! empty($conf->global->SOCIETE_USEPREFIX)) // Old not used prefix field
|
||||||
|
{
|
||||||
|
print '<tr><td>' . $langs->trans('Prefix') . '</td><td colspan="3">' . $object->prefix_comm . '</td></tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
print '<tr>';
|
||||||
|
print '<td class="nowrap">' . $langs->trans("CustomerCode") . '</td><td colspan="3">';
|
||||||
|
print $object->code_client;
|
||||||
|
if ($object->check_codeclient() != 0)
|
||||||
|
print ' <font class="error">(' . $langs->trans("WrongCustomerCode") . ')</font>';
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
$langs->load('compta');
|
||||||
|
print '<tr>';
|
||||||
|
print '<td>';
|
||||||
|
print $form->editfieldkey("CustomerAccountancyCode", 'customeraccountancycode', $object->code_compta, $object, $user->rights->societe->creer);
|
||||||
|
print '</td><td colspan="3">';
|
||||||
|
print $form->editfieldval("CustomerAccountancyCode", 'customeraccountancycode', $object->code_compta, $object, $user->rights->societe->creer);
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
// Address
|
||||||
|
print '<tr><td valign="top">' . $langs->trans("Address") . '</td><td colspan="3">';
|
||||||
|
dol_print_address($object->address, 'gmap', 'thirdparty', $object->id);
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
print '<table width="100%" class="border">';
|
// Zip / Town
|
||||||
print '<tr><td width="30%">'.$langs->trans("ThirdPartyName").'</td><td width="70%" colspan="3">';
|
print '<tr><td class="nowrap">' . $langs->trans("Zip") . ' / ' . $langs->trans("Town") . '</td><td colspan="3">' . $object->zip . (($object->zip && $object->town) ? ' / ' : '') . $object->town . '</td>';
|
||||||
$object->next_prev_filter="te.fournisseur = 1";
|
print '</tr>';
|
||||||
print $form->showrefnav($object,'socid','',($user->societe_id?0:1),'rowid','nom','','');
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
if (! empty($conf->global->SOCIETE_USEPREFIX)) // Old not used prefix field
|
// Country
|
||||||
{
|
print '<tr><td>' . $langs->trans("Country") . '</td><td colspan="3">';
|
||||||
print '<tr><td>'.$langs->trans('Prefix').'</td><td colspan="3">'.$object->prefix_comm.'</td></tr>';
|
// $img=picto_from_langcode($object->country_code);
|
||||||
}
|
$img = '';
|
||||||
|
if ($object->isInEEC())
|
||||||
|
print $form->textwithpicto(($img ? $img . ' ' : '') . $object->country, $langs->trans("CountryIsInEEC"), 1, 0);
|
||||||
|
else
|
||||||
|
print ($img ? $img . ' ' : '') . $object->country;
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '</table>';
|
||||||
|
|
||||||
print '<tr>';
|
$sql = "SELECT bk.rowid, bk.doc_date, bk.doc_type, bk.doc_ref, ";
|
||||||
print '<td class="nowrap">'.$langs->trans("CustomerCode"). '</td><td colspan="3">';
|
$sql .= " bk.thirdparty_code, bk.numero_compte , bk.label_compte, bk.debit, ";
|
||||||
print $object->code_client;
|
$sql .= " bk.credit, bk.montant , bk.sens , bk.code_journal , bk.piece_num, bk.lettering_code ";
|
||||||
if ($object->check_codeclient() <> 0) print ' <font class="error">('.$langs->trans("WrongCustomerCode").')</font>';
|
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping as bk";
|
||||||
print '</td>';
|
$sql .= " WHERE (bk.thirdparty_code = '" . $object->code_compta . "' AND bk.numero_compte = '" . $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER . "' )";
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
$langs->load('compta');
|
if (dol_strlen($search_year)) {
|
||||||
print '<tr>';
|
$date_start = dol_mktime(0, 0, 0, 1, 1, $search_year);
|
||||||
print '<td>';
|
$date_end = dol_mktime(23, 59, 59, 12, 31, $search_year);
|
||||||
print $form->editfieldkey("CustomerAccountancyCode",'customeraccountancycode',$object->code_compta,$object,$user->rights->societe->creer);
|
$sql .= " AND ( bk.doc_date BETWEEN '" . $db->idate($date_start) . "' AND '" . $db->idate($date_end) . "' )";
|
||||||
print '</td><td colspan="3">';
|
}
|
||||||
print $form->editfieldval("CustomerAccountancyCode",'customeraccountancycode',$object->code_compta,$object,$user->rights->societe->creer);
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
|
$sql .= $db->order($sortfield, $sortorder);
|
||||||
|
|
||||||
// Address
|
$debit = 0;
|
||||||
print '<tr><td valign="top">'.$langs->trans("Address").'</td><td colspan="3">';
|
$credit = 0;
|
||||||
dol_print_address($object->address,'gmap','thirdparty',$object->id);
|
$solde = 0;
|
||||||
print '</td></tr>';
|
// Count total nb of records and calc total sum
|
||||||
|
$nbtotalofrecords = '';
|
||||||
|
$resql = $db->query($sql);
|
||||||
|
if (! $resql) {
|
||||||
|
dol_print_error($db);
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
$nbtotalofrecords = $db->num_rows($resql);
|
||||||
|
|
||||||
// Zip / Town
|
while ( $obj = $db->fetch_object($resql) ) {
|
||||||
print '<tr><td class="nowrap">'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td colspan="3">'.$object->zip.(($object->zip && $object->town)?' / ':'').$object->town.'</td>';
|
$debit += $obj->debit;
|
||||||
|
$credit += $obj->credit;
|
||||||
|
|
||||||
|
$solde += ($obj->credit - $obj->debit);
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql .= $db->plimit($limit + 1, $offset);
|
||||||
|
|
||||||
|
dol_syslog("/accountancy/bookkeeping/thirdparty_lettrage.php", LOG_DEBUG);
|
||||||
|
$resql = $db->query($sql);
|
||||||
|
if (! $resql) {
|
||||||
|
dol_print_error($db);
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$num = $db->num_rows($resql);
|
||||||
|
|
||||||
|
dol_syslog("/accountancy/bookkeeping/thirdparty_lettrage.php", LOG_DEBUG);
|
||||||
|
if ($resql) {
|
||||||
|
$i = 0;
|
||||||
|
|
||||||
|
print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '?socid=' . $object->id . '" method="POST">';
|
||||||
|
print '<input type="hidden" name="socid" value="' . $object->id . '">';
|
||||||
|
|
||||||
|
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_companies', 0, '', '', $limit);
|
||||||
|
|
||||||
|
print "<table class=\"noborder\" width=\"100%\">";
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print_liste_field_titre("Doctype", $_SERVER["PHP_SELF"], "bk.doc_type", "", $param, "", $sortfield, $sortorder);
|
||||||
|
print_liste_field_titre("Docdate", $_SERVER["PHP_SELF"], "bk.doc_date", "", $param, "", $sortfield, $sortorder);
|
||||||
|
print_liste_field_titre("Docref", $_SERVER["PHP_SELF"], "bk.doc_ref", "", $param, "", $sortfield, $sortorder);
|
||||||
|
print_liste_field_titre("Labelcompte", $_SERVER["PHP_SELF"], "bk.label_compte", "", $param, "", $sortfield, $sortorder);
|
||||||
|
print_liste_field_titre("Debit", $_SERVER["PHP_SELF"], "bk.debit", "", $param, "", $sortfield, $sortorder);
|
||||||
|
print_liste_field_titre("Credit", $_SERVER["PHP_SELF"], "bk.credit", "", $param, "", $sortfield, $sortorder);
|
||||||
|
print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "bk.montant", "", $param, "", $sortfield, $sortorder);
|
||||||
|
print_liste_field_titre("Sens", $_SERVER["PHP_SELF"], "bk.sens", "", $param, "", $sortfield, $sortorder);
|
||||||
|
print_liste_field_titre("Codejournal", $_SERVER["PHP_SELF"], "bk.code_journal", "", $param, "", $sortfield, $sortorder);
|
||||||
|
print_liste_field_titre("Solde", $_SERVER["PHP_SELF"], "", "", $param, "", $sortfield, $sortorder);
|
||||||
|
print '<td></td>';
|
||||||
|
print "</tr>\n";
|
||||||
|
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print '<td><input type="text" name="search_doc_type" value="' . $search_doc_type . '"></td>';
|
||||||
|
print '<td><input type="text" name="search_year" value="' . $search_year . '"></td>';
|
||||||
|
print '<td><input type="text" name="search_doc_refe" value="' . $search_doc_ref . '"></td>';
|
||||||
|
print '<td colspan="7"> </td>';
|
||||||
|
print '<td align="right">';
|
||||||
|
$searchpicto = $form->showFilterButtons();
|
||||||
|
print $searchpicto;
|
||||||
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
// Country
|
$var = false;
|
||||||
print '<tr><td>'.$langs->trans("Country").'</td><td colspan="3">';
|
$solde = 0;
|
||||||
//$img=picto_from_langcode($object->country_code);
|
$tmp = '';
|
||||||
$img='';
|
while ( $obj = $db->fetch_object($resql) ) {
|
||||||
if ($object->isInEEC()) print $form->textwithpicto(($img?$img.' ':'').$object->country,$langs->trans("CountryIsInEEC"),1,0);
|
|
||||||
else print ($img?$img.' ':'').$object->country;
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
print '</table>';
|
if ($tmp != $obj->lettering_code || empty($tmp))
|
||||||
|
$tmp = $obj->lettering_code;
|
||||||
|
|
||||||
|
if ($tmp != $obj->lettering_code || empty($obj->lettering_code))
|
||||||
|
$var = ! $var;
|
||||||
|
|
||||||
|
$solde += ($obj->credit - $obj->debit);
|
||||||
|
|
||||||
|
print "<tr $bc[$var]>";
|
||||||
|
|
||||||
|
if (empty($obj->lettering_code)) {
|
||||||
|
print '<td><a href="' . dol_buildpath('/accountancy/bookkeeping/card.php', 1) . '?piece_num=' . $obj->piece_num . '">';
|
||||||
|
print img_edit();
|
||||||
|
print '</a> ' . $obj->doc_type . '</td>' . "\n";
|
||||||
|
} else
|
||||||
|
print '<td>' . $obj->doc_type . '</td>' . "\n";
|
||||||
|
|
||||||
$sql = "SELECT bk.rowid, bk.doc_date, bk.doc_type, bk.doc_ref, bk.code_tiers, bk.numero_compte , bk.label_compte, bk.debit , bk.credit, bk.montant , bk.sens , bk.code_journal , bk.piece_num, bk.lettering_code ";
|
print '<td>' . dol_print_date($db->jdate($obj->doc_date), 'day') . '</td>';
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping as bk";
|
print '<td>' . $obj->doc_ref . '</td>';
|
||||||
$sql .= " WHERE (bk.code_tiers = '" . $object->code_compta . "' AND bk.numero_compte = '" .$conf->global->ACCOUNTING_ACCOUNT_CUSTOMER. "' )" ;
|
print '<td>' . $obj->label_compte . '</td>';
|
||||||
|
print '<td>' . price($obj->debit) . '</td>';
|
||||||
|
print '<td>' . price($obj->credit) . '</td>';
|
||||||
|
print '<td>' . price($obj->montant) . '</td>';
|
||||||
|
print '<td>' . $obj->sens . '</td>';
|
||||||
|
print '<td>' . $obj->code_journal . '</td>';
|
||||||
|
print '<td>' . round($solde, 2) . '</td>';
|
||||||
|
|
||||||
|
if (empty($obj->lettering_code)) {
|
||||||
|
print '<td class="nowrap" align="center"><input type="checkbox" class="flat checkforselect" name="toselect[]" id="toselect[]" value="' . $obj->rowid . '" /></td>';
|
||||||
|
} else
|
||||||
|
print '<td>' . $obj->lettering_code . '</td>';
|
||||||
|
|
||||||
|
|
||||||
if (dol_strlen ( $search_year )) {
|
|
||||||
$sql .= " AND ( bk.doc_date BETWEEN '" . $search_year . "-0-0' AND '" . ($search_year+1). "-0-0' )";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$sql .= " ORDER BY bk.lettering_code ASC, bk.doc_date ASC" ;//. $db->plimit ( $conf->liste_limit + 1, $offset );
|
|
||||||
|
|
||||||
// echo $sql;
|
|
||||||
// dol_syslog ( "bookkeping:liste:create sql=" . $sql, LOG_DEBUG );
|
|
||||||
$resql = $db->query ( $sql );
|
|
||||||
if ($resql) {
|
|
||||||
$num = $db->num_rows ( $resql );
|
|
||||||
$i = 0;
|
|
||||||
|
|
||||||
|
|
||||||
print '<form name="add" action="?socid='.$object->id.'" method="POST">';
|
|
||||||
print '<input type="hidden" name="action" value="lettering">';
|
|
||||||
print '<input type="hidden" name="socid" value="'.$object->id.'">';
|
|
||||||
|
|
||||||
print "<table class=\"noborder\" width=\"100%\">";
|
|
||||||
print '<tr class="liste_titre">';
|
|
||||||
print '<td></td>';
|
|
||||||
print_liste_field_titre("Doctype", "liste.php", "bk.doc_type" );
|
|
||||||
print_liste_field_titre("Docdate", "liste.php", "bk.doc_date" );
|
|
||||||
print_liste_field_titre("Docref", "liste.php", "bk.doc_ref" );
|
|
||||||
// print_liste_field_titre("Numerocompte", "liste.php", "bk.numero_compte" );
|
|
||||||
// print_liste_field_titre("Code_tiers", "liste.php", "bk.code_tiers" );
|
|
||||||
print_liste_field_titre("LabelAccount", "liste.php", "bk_label_compte" );
|
|
||||||
print_liste_field_titre("Debit", "liste.php", "bk.debit" );
|
|
||||||
print_liste_field_titre("Credit", "liste.php", "bk.credit" );
|
|
||||||
// print_liste_field_titre("Amount", "liste.php", "bk.montant" );
|
|
||||||
// print_liste_field_titre("Sens", "liste.php", "bk.sens" );
|
|
||||||
print_liste_field_titre("Codejournal", "liste.php", "bk.code_journal" );
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
|
||||||
print '<form action="" method="GET">';
|
|
||||||
print '<input type="hidden" name="socid" value="' . $_GET ["socid"] . '">';
|
|
||||||
print '<td><input type="text" name="search_doc_type" value="' . $_GET ["search_doc_type"] . '"></td>';
|
|
||||||
print '<td><input type="text" name="search_year" value="' . $_GET ["search_year"] . '"></td>';
|
|
||||||
print '<td><input type="text" name="search_doc_refe" value="' . $_GET ["search_doc_ref"] . '"></td>';
|
|
||||||
// print '<td><input type="text" name="search_compte" value="' . $_GET ["search_compte"] . '"></td>';
|
|
||||||
// print '<td><input type="text" name="search_tiers" value="' . $_GET ["search_tiers"] . '"></td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
// print '<td> </td>';
|
|
||||||
// print '<td> </td>';
|
|
||||||
print '<td align="right">';
|
|
||||||
print '<input type="image" class="liste_titre" name="button_search" src="' . DOL_URL_ROOT . '/theme/' . $conf->theme . '/img/search.png" value="' . dol_escape_htmltag ( $langs->trans ( "Search" ) ) . '" title="' . dol_escape_htmltag ( $langs->trans ( "Search" ) ) . '">';
|
|
||||||
print '</td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print '</form>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
$var = false;
|
|
||||||
|
|
||||||
$debit = 0;
|
|
||||||
$credit = 0;
|
|
||||||
$solde = 0;
|
|
||||||
$tmp = '';
|
|
||||||
while ( $i < $num ) {
|
|
||||||
$obj = $db->fetch_object ( $resql );
|
|
||||||
|
|
||||||
if($tmp !=$obj->lettering_code || empty($tmp) )
|
|
||||||
$tmp =$obj->lettering_code;
|
|
||||||
|
|
||||||
if($tmp !=$obj->lettering_code || empty($obj->lettering_code))
|
|
||||||
$var = ! $var;
|
|
||||||
|
|
||||||
|
|
||||||
$debit+= $obj->debit;
|
|
||||||
$credit+= $obj->credit;
|
|
||||||
|
|
||||||
$solde+=($obj->credit-$obj->debit);
|
|
||||||
print "<tr $bc[$var]>";
|
|
||||||
|
|
||||||
print '<td>' . $obj->rowid . '</td>';
|
|
||||||
if(empty($obj->lettering_code)){
|
|
||||||
print '<td><a href="'.dol_buildpath('/accountancy/bookkeeping/card.php', 1).'?piece_num=' . $obj->piece_num . '">';
|
|
||||||
print img_edit ();
|
|
||||||
print '</a> ' . $obj->doc_type . '</td>' . "\n";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
print '<td>'.$obj->doc_type . '</td>' . "\n";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
print '<td>' . dol_print_date ( $db->jdate ( $obj->doc_date ), 'day' ) . '</td>';
|
|
||||||
print '<td>' . $obj->doc_ref . '</td>';
|
|
||||||
// print '<td>' . $obj->numero_compte . '</td>';
|
|
||||||
// print '<td>' . $obj->code_tiers . '</td>';
|
|
||||||
print '<td>' . $obj->label_compte . '</td>';
|
|
||||||
print '<td>' . $obj->debit . '</td>';
|
|
||||||
print '<td>' . $obj->credit . '</td>';
|
|
||||||
// print '<td>' . $obj->montant . '</td>';
|
|
||||||
// print '<td>' . $obj->sens . '</td>';
|
|
||||||
print '<td>' . $obj->code_journal . '</td>';
|
|
||||||
print '<td>' . round($solde, 2) . '</td>';
|
|
||||||
|
|
||||||
if(empty($obj->lettering_code)){
|
|
||||||
print '<td><input type="checkbox" name="ids[]" value="' . $obj->rowid . '" /></td>';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
print '<td>' . $obj->lettering_code . '</td>';
|
|
||||||
|
|
||||||
print "</tr>\n";
|
|
||||||
|
|
||||||
$i ++;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
|
||||||
|
|
||||||
print '<td colspan="4">Mouvement totaux</td>' . "\n";
|
|
||||||
print '<td></td>';
|
|
||||||
// print '<td></td>';
|
|
||||||
// print '<td></td>';
|
|
||||||
print '<td><strong>' . $debit . '</strong></td>';
|
|
||||||
print '<td><strong>' . $credit . '</strong></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print "</tr>\n";
|
|
||||||
|
|
||||||
print "<tr $bc[$var]>";
|
|
||||||
print '<td colspan="5">Solde Comptable</td>' . "\n";
|
|
||||||
// print '<td></td>';
|
|
||||||
// print '<td></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td><strong>' . ($credit-$debit) . '</strong></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print "</tr>\n";
|
|
||||||
|
|
||||||
print "</table>";
|
|
||||||
|
|
||||||
print '<input class="butAction" type="submit" value="lettering">';
|
|
||||||
print '<a class="butAction" href="?socid='.$object->id.'&action=autolettrage">auto lettering</a>';
|
|
||||||
print "</form>";
|
|
||||||
$db->free($resql);
|
|
||||||
} else {
|
|
||||||
dol_print_error($db);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print '<tr class="oddeven">';
|
||||||
|
|
||||||
|
print '<td colspan="4">Mouvement totaux</td>' . "\n";
|
||||||
|
print '<td><strong>' . price($debit) . '</strong></td>';
|
||||||
|
print '<td><strong>' . price($credit) . '</strong></td>';
|
||||||
|
print '<td colspan="5"></td>';
|
||||||
|
print "</tr>\n";
|
||||||
|
|
||||||
|
print "<tr $bc[$var]>";
|
||||||
|
print '<td colspan="9">Solde Comptable</td>' . "\n";
|
||||||
|
print '<td><strong>' . price($credit - $debit) . '</strong></td>';
|
||||||
|
print '<td colspan="5"></td>';
|
||||||
|
print "</tr>\n";
|
||||||
|
|
||||||
|
print "</table>";
|
||||||
|
|
||||||
|
print '<input class="butAction" type="submit" value="lettering" name="lettering" id="lettering">';
|
||||||
|
print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?socid=' . $object->id . '&action=autolettrage">' . $langs->trans('AccountancyAutoLettering') . '</a>';
|
||||||
|
print "</form>";
|
||||||
|
$db->free($resql);
|
||||||
|
} else {
|
||||||
|
dol_print_error($db);
|
||||||
|
}
|
||||||
|
|
||||||
// End of page
|
// End of page
|
||||||
llxFooter();
|
llxFooter();
|
||||||
|
|||||||
@ -21,9 +21,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file accounting/bookkeeping/thirdparty_lettrage.php
|
* \file accounting/bookkeeping/thirdparty_lettrage.php
|
||||||
* \ingroup Advanced accountancy
|
* \ingroup Advanced accountancy
|
||||||
* \brief Tab to setup lettering
|
* \brief Tab to setup lettering
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Dolibarr environment
|
// Dolibarr environment
|
||||||
@ -35,300 +35,304 @@ require_once DOL_DOCUMENT_ROOT . '/accountancy/class/lettering.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/lib/company.lib.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/company.lib.php';
|
||||||
|
|
||||||
|
$action = GETPOST('action', 'aZ09');
|
||||||
$action=GETPOST('action','aZ09');
|
$massaction = GETPOST('massaction', 'alpha');
|
||||||
$massaction=GETPOST('massaction','alpha');
|
$show_files = GETPOST('show_files', 'int');
|
||||||
$show_files=GETPOST('show_files','int');
|
$confirm = GETPOST('confirm', 'alpha');
|
||||||
$confirm=GETPOST('confirm','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;
|
||||||
$sortfield = GETPOST("sortfield",'alpha');
|
$sortfield = GETPOST("sortfield", 'alpha');
|
||||||
$sortorder = GETPOST("sortorder",'alpha');
|
$sortorder = GETPOST("sortorder", 'alpha');
|
||||||
$page = GETPOST("page",'int');
|
$page = GETPOST("page", 'int');
|
||||||
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
if (empty($page) || $page == - 1) {
|
||||||
|
$page = 0;
|
||||||
|
} // If $page is not defined, or '' or -1
|
||||||
$offset = $limit * $page;
|
$offset = $limit * $page;
|
||||||
$pageprev = $page - 1;
|
$pageprev = $page - 1;
|
||||||
$pagenext = $page + 1;
|
$pagenext = $page + 1;
|
||||||
if ($sortorder == "") $sortorder = "ASC";
|
if ($sortorder == "")
|
||||||
if ($sortfield == "") $sortfield = "bk.rowid";
|
$sortorder = "DESC";
|
||||||
|
if ($sortfield == "")
|
||||||
|
$sortfield = "bk.doc_date";
|
||||||
|
|
||||||
$search_year = GETPOST ( "search_year" );
|
$search_year = GETPOST("search_year",'int');
|
||||||
|
$search_doc_type = GETPOST("search_doc_type",'alpha');
|
||||||
|
$search_doc_ref = GETPOST("search_doc_ref",'alpha');
|
||||||
|
|
||||||
|
$lettering = GETPOST('lettering');
|
||||||
|
if (!empty($lettering)) {
|
||||||
|
$action=$lettering;
|
||||||
|
}
|
||||||
|
$toselect = GETPOST('toselect','array');
|
||||||
|
|
||||||
|
// Did we click on purge search criteria ?
|
||||||
|
// 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'))
|
||||||
|
{
|
||||||
|
$search_year='';
|
||||||
|
$search_doc_type='';
|
||||||
|
$search_doc_ref='';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
$socid = GETPOST("socid",'int');
|
$socid = GETPOST("socid", 'int');
|
||||||
// if ($user->societe_id) $socid=$user->societe_id;
|
// if ($user->societe_id) $socid=$user->societe_id;
|
||||||
|
|
||||||
$object = new Societe($db);
|
$object = new Societe($db);
|
||||||
$object->id = $socid;
|
$object->id = $socid;
|
||||||
$object->fetch($socid);
|
$result = $object->fetch($socid);
|
||||||
|
if ($result<0) {
|
||||||
|
setEventMessage($object->error,'errors');
|
||||||
|
}
|
||||||
|
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
$BookKeeping = new lettering($db);
|
$BookKeeping = new lettering($db);
|
||||||
$formaccounting = new FormAccounting($db);
|
$formaccounting = new FormAccounting($db);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Action
|
* Action
|
||||||
*/
|
*/
|
||||||
if ($action == 'lettering') {
|
if ($action == 'lettering') {
|
||||||
|
|
||||||
$result = $BookKeeping->updatelettrage($_POST['ids']);
|
$result = $BookKeeping->updateLettrage($toselect);
|
||||||
|
|
||||||
// var_dump($result);
|
|
||||||
if( $result < 0 ){
|
|
||||||
setEventMessages('', $BookKeeping->errors, 'errors' );
|
|
||||||
$error++;
|
|
||||||
|
|
||||||
|
// var_dump($result);
|
||||||
|
if ($result < 0) {
|
||||||
|
setEventMessages('', $BookKeeping->errors, 'errors');
|
||||||
|
$error ++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'autolettrage') {
|
if ($action == 'autolettrage') {
|
||||||
|
|
||||||
$result = $BookKeeping->LettrageTiers($socid);
|
$result = $BookKeeping->lettrageTiers($socid);
|
||||||
|
|
||||||
if( $result < 0 ){
|
|
||||||
setEventMessages('', $BookKeeping->errors, 'errors' );
|
|
||||||
$error++;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if ($result < 0) {
|
||||||
|
setEventMessages('', $BookKeeping->errors, 'errors');
|
||||||
|
$error ++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$title = 'AccountancyLettrage';
|
||||||
|
|
||||||
llxHeader ( '', 'Compta - Grand Livre' );
|
llxHeader('', $title);
|
||||||
|
|
||||||
|
|
||||||
/*
|
$param='';
|
||||||
* Affichage onglets
|
if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage;
|
||||||
*/
|
if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit;
|
||||||
$head = societe_prepare_head($object);
|
if (!empty($search_year)) $param.='&search_year='.$search_year;
|
||||||
|
if (!empty($socid)) $param.='&socid='.$socid;
|
||||||
|
if (!empty($search_doc_type)) $param.='&search_doc_type='.$search_doc_type;
|
||||||
|
if (!empty($search_doc_ref)) $param.='&search_doc_ref='.$search_doc_ref;
|
||||||
|
|
||||||
dol_htmloutput_mesg(is_numeric($error)?'':$error, $errors, 'error');
|
|
||||||
|
|
||||||
dol_fiche_head($head, 'TabAccounting', $langs->trans("ThirdParty"),0,'company');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
print '<table width="100%" class="border">';
|
|
||||||
print '<tr><td width="30%">'.$langs->trans("ThirdPartyName").'</td><td width="70%" colspan="3">';
|
|
||||||
$object->next_prev_filter="te.fournisseur = 1";
|
|
||||||
print $form->showrefnav($object,'socid','',($user->societe_id?0:1),'rowid','nom','','');
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
if (! empty($conf->global->SOCIETE_USEPREFIX)) // Old not used prefix field
|
|
||||||
{
|
|
||||||
print '<tr><td>'.$langs->trans('Prefix').'</td><td colspan="3">'.$object->prefix_comm.'</td></tr>';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
print '<tr>';
|
|
||||||
print '<td class="nowrap">'.$langs->trans("SupplierCode"). '</td><td colspan="3">';
|
|
||||||
print $object->code_fournisseur;
|
|
||||||
if ($object->check_codefournisseur() <> 0) print ' <font class="error">('.$langs->trans("WrongSupplierCode").')</font>';
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
$langs->load('compta');
|
|
||||||
print '<tr>';
|
|
||||||
print '<td>';
|
|
||||||
print $form->editfieldkey("SupplierAccountancyCode",'supplieraccountancycode',$object->code_compta_fournisseur,$object,$user->rights->societe->creer);
|
|
||||||
print '</td><td colspan="3">';
|
|
||||||
print $form->editfieldval("SupplierAccountancyCode",'supplieraccountancycode',$object->code_compta_fournisseur,$object,$user->rights->societe->creer);
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
|
|
||||||
// Address
|
|
||||||
print '<tr><td valign="top">'.$langs->trans("Address").'</td><td colspan="3">';
|
|
||||||
dol_print_address($object->address,'gmap','thirdparty',$object->id);
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
// Zip / Town
|
|
||||||
print '<tr><td class="nowrap">'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td colspan="3">'.$object->zip.(($object->zip && $object->town)?' / ':'').$object->town.'</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
// Country
|
|
||||||
print '<tr><td>'.$langs->trans("Country").'</td><td colspan="3">';
|
|
||||||
//$img=picto_from_langcode($object->country_code);
|
|
||||||
$img='';
|
|
||||||
if ($object->isInEEC()) print $form->textwithpicto(($img?$img.' ':'').$object->country,$langs->trans("CountryIsInEEC"),1,0);
|
|
||||||
else print ($img?$img.' ':'').$object->country;
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
print '</table>';
|
|
||||||
|
|
||||||
// print_r($soc);
|
|
||||||
// exit;
|
|
||||||
// [code_compta] => 411DOUA
|
|
||||||
// [code_compta_fournisseur] => 401SUPPCODE
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mode Liste
|
* Affichage onglets
|
||||||
*
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
$head = societe_prepare_head($object);
|
||||||
|
|
||||||
$sql = "SELECT bk.rowid, bk.doc_date, bk.doc_type, bk.doc_ref, bk.code_tiers, bk.numero_compte , bk.label_compte, bk.debit , bk.credit, bk.montant , bk.sens , bk.code_journal , bk.piece_num, bk.lettering ";
|
dol_htmloutput_mesg(is_numeric($error) ? '' : $error, $errors, 'error');
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping as bk";
|
|
||||||
$sql .= " WHERE (bk.code_tiers = '" . $object->code_compta_fournisseur . "' AND bk.numero_compte = '" .$conf->global->ACCOUNTING_ACCOUNT_SUPPLIER. "' )" ;
|
|
||||||
|
|
||||||
|
dol_fiche_head($head, 'accounting_supplier', $langs->trans("ThirdParty"), 0, 'company');
|
||||||
|
|
||||||
|
print '<table width="100%" class="border">';
|
||||||
|
print '<tr><td width="30%">' . $langs->trans("ThirdPartyName") . '</td><td width="70%" colspan="3">';
|
||||||
|
$object->next_prev_filter = "te.fournisseur = 1";
|
||||||
|
print $form->showrefnav($object, 'socid', '', ($user->societe_id ? 0 : 1), 'rowid', 'nom', '', '');
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
if (dol_strlen ( $search_year )) {
|
if (! empty($conf->global->SOCIETE_USEPREFIX)) // Old not used prefix field
|
||||||
$sql .= " AND ( bk.doc_date BETWEEN '" . $search_year . "-0-0' AND '" . ($search_year+1). "-0-0' )";
|
{
|
||||||
}
|
print '<tr><td>' . $langs->trans('Prefix') . '</td><td colspan="3">' . $object->prefix_comm . '</td></tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
print '<tr>';
|
||||||
|
print '<td class="nowrap">' . $langs->trans("SupplierCode") . '</td><td colspan="3">';
|
||||||
|
print $object->code_fournisseur;
|
||||||
|
if ($object->check_codefournisseur() != 0)
|
||||||
|
print ' <font class="error">(' . $langs->trans("WrongSupplierCode") . ')</font>';
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
$sql .= " ORDER BY bk.lettering ASC, bk.doc_date ASC" ;//. $db->plimit ( $conf->liste_limit + 1, $offset );
|
$langs->load('compta');
|
||||||
|
print '<tr>';
|
||||||
|
print '<td>';
|
||||||
|
print $form->editfieldkey("SupplierAccountancyCode", 'supplieraccountancycode', $object->code_compta_fournisseur, $object, $user->rights->societe->creer);
|
||||||
|
print '</td><td colspan="3">';
|
||||||
|
print $form->editfieldval("SupplierAccountancyCode", 'supplieraccountancycode', $object->code_compta_fournisseur, $object, $user->rights->societe->creer);
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
// echo $sql;
|
// Address
|
||||||
// dol_syslog ( "bookkeping:liste:create sql=" . $sql, LOG_DEBUG );
|
print '<tr><td valign="top">' . $langs->trans("Address") . '</td><td colspan="3">';
|
||||||
$resql = $db->query ( $sql );
|
dol_print_address($object->address, 'gmap', 'thirdparty', $object->id);
|
||||||
if ($resql) {
|
print '</td></tr>';
|
||||||
$num = $db->num_rows ( $resql );
|
|
||||||
$i = 0;
|
|
||||||
|
|
||||||
|
// Zip / Town
|
||||||
|
print '<tr><td class="nowrap">' . $langs->trans("Zip") . ' / ' . $langs->trans("Town") . '</td><td colspan="3">' . $object->zip . (($object->zip && $object->town) ? ' / ' : '') . $object->town . '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
print '<form name="add" action="?socid='.$object->id.'" method="POST">';
|
// Country
|
||||||
print '<input type="hidden" name="action" value="lettering">';
|
print '<tr><td>' . $langs->trans("Country") . '</td><td colspan="3">';
|
||||||
print '<input type="hidden" name="socid" value="'.$object->id.'">';
|
// $img=picto_from_langcode($object->country_code);
|
||||||
|
$img = '';
|
||||||
|
if ($object->isInEEC())
|
||||||
|
print $form->textwithpicto(($img ? $img . ' ' : '') . $object->country, $langs->trans("CountryIsInEEC"), 1, 0);
|
||||||
|
else
|
||||||
|
print ($img ? $img . ' ' : '') . $object->country;
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '</table>';
|
||||||
|
|
||||||
|
$sql = "SELECT bk.rowid, bk.doc_date, bk.doc_type, bk.doc_ref, ";
|
||||||
|
$sql .= " bk.thirdparty_code, bk.numero_compte , bk.label_compte, bk.debit, ";
|
||||||
|
$sql .= " bk.credit, bk.montant , bk.sens , bk.code_journal , bk.piece_num, bk.lettering_code ";
|
||||||
|
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping as bk";
|
||||||
|
$sql .= " WHERE (bk.thirdparty_code = '" . $object->code_compta_fournisseur . "' AND bk.numero_compte = '" . $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER . "' )";
|
||||||
|
|
||||||
|
if (dol_strlen($search_year)) {
|
||||||
|
$date_start = dol_mktime(0, 0, 0, 1, 1, $search_year);
|
||||||
|
$date_end = dol_mktime(23, 59, 59, 12, 31, $search_year);
|
||||||
|
$sql .= " AND ( bk.doc_date BETWEEN '".$db->idate($date_start)."' AND '".$db->idate($date_end)."' )";
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql.= $db->order($sortfield,$sortorder);
|
||||||
|
|
||||||
|
$debit = 0;
|
||||||
|
$credit = 0;
|
||||||
|
$solde = 0;
|
||||||
|
// Count total nb of records and calc total sum
|
||||||
|
$nbtotalofrecords = '';
|
||||||
|
$resql = $db->query($sql);
|
||||||
|
if (! $resql)
|
||||||
|
{
|
||||||
|
dol_print_error($db);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
$nbtotalofrecords = $db->num_rows($resql);
|
||||||
|
|
||||||
|
while ($obj = $db->fetch_object($resql)) {
|
||||||
|
$debit += $obj->debit;
|
||||||
|
$credit += $obj->credit;
|
||||||
|
|
||||||
|
$solde += ($obj->credit - $obj->debit);
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql.= $db->plimit($limit+1, $offset);
|
||||||
|
|
||||||
|
dol_syslog ( "/accountancy/bookkeeping/thirdparty_lettrage_supplier.php", LOG_DEBUG );
|
||||||
|
$resql = $db->query($sql);
|
||||||
|
if (! $resql)
|
||||||
|
{
|
||||||
|
dol_print_error($db);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$num = $db->num_rows($resql);
|
||||||
|
|
||||||
|
dol_syslog ( "/accountancy/bookkeeping/thirdparty_lettrage_supplier.php", LOG_DEBUG );
|
||||||
|
$resql = $db->query($sql);
|
||||||
|
if ($resql) {
|
||||||
|
$num = $db->num_rows($resql);
|
||||||
|
$i = 0;
|
||||||
|
|
||||||
|
print '<form name="add" action="'.$_SERVER["PHP_SELF"].'?socid=' . $object->id . '" method="POST">';
|
||||||
|
print '<input type="hidden" name="socid" value="' . $object->id . '">';
|
||||||
|
|
||||||
|
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_companies', 0, '', '', $limit);
|
||||||
|
|
||||||
|
print "<table class=\"noborder\" width=\"100%\">";
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print_liste_field_titre("Doctype", $_SERVER["PHP_SELF"], "bk.doc_type","",$param,"",$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre("Docdate", $_SERVER["PHP_SELF"], "bk.doc_date","",$param,"",$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre("Docref", $_SERVER["PHP_SELF"], "bk.doc_ref","",$param,"",$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre("Labelcompte", $_SERVER["PHP_SELF"], "bk.label_compte","",$param,"",$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre("Debit", $_SERVER["PHP_SELF"], "bk.debit","",$param,"",$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre("Credit", $_SERVER["PHP_SELF"], "bk.credit","",$param,"",$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "bk.montant","",$param,"",$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre("Sens", $_SERVER["PHP_SELF"], "bk.sens","",$param,"",$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre("Codejournal", $_SERVER["PHP_SELF"], "bk.code_journal","",$param,"",$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre("Solde", $_SERVER["PHP_SELF"], "","",$param,"",$sortfield,$sortorder);
|
||||||
|
print '<td></td>';
|
||||||
|
print "</tr>\n";
|
||||||
|
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print '<td><input type="text" name="search_doc_type" value="' . $search_doc_type . '"></td>';
|
||||||
|
print '<td><input type="text" name="search_year" value="' . $search_year . '"></td>';
|
||||||
|
print '<td><input type="text" name="search_doc_refe" value="' . $search_doc_ref . '"></td>';
|
||||||
|
print '<td colspan="7"> </td>';
|
||||||
|
print '<td align="right">';
|
||||||
|
$searchpicto=$form->showFilterButtons();
|
||||||
|
print $searchpicto;
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
$var = false;
|
||||||
|
$solde = 0;
|
||||||
|
$tmp = '';
|
||||||
|
while ($obj = $db->fetch_object($resql)) {
|
||||||
|
|
||||||
|
if ($tmp != $obj->lettering_code || empty($tmp))
|
||||||
|
$tmp = $obj->lettering_code;
|
||||||
|
|
||||||
|
if ($tmp != $obj->lettering_code || empty($obj->lettering_code))
|
||||||
|
$var = ! $var;
|
||||||
|
|
||||||
|
$solde += ($obj->credit - $obj->debit);
|
||||||
|
|
||||||
|
print "<tr $bc[$var]>";
|
||||||
|
|
||||||
|
if (empty($obj->lettering_code)) {
|
||||||
|
print '<td><a href="' . dol_buildpath('/accountancy/bookkeeping/card.php', 1) . '?piece_num=' . $obj->piece_num . '">';
|
||||||
|
print img_edit();
|
||||||
|
print '</a> ' . $obj->doc_type . '</td>' . "\n";
|
||||||
|
} else
|
||||||
|
print '<td>' . $obj->doc_type . '</td>' . "\n";
|
||||||
|
|
||||||
|
print '<td>' . dol_print_date($db->jdate($obj->doc_date), 'day') . '</td>';
|
||||||
|
print '<td>' . $obj->doc_ref . '</td>';
|
||||||
|
print '<td>' . $obj->label_compte . '</td>';
|
||||||
|
print '<td>' . price($obj->debit) . '</td>';
|
||||||
|
print '<td>' . price($obj->credit) . '</td>';
|
||||||
|
print '<td>' . price($obj->montant) . '</td>';
|
||||||
|
print '<td>' . $obj->sens . '</td>';
|
||||||
|
print '<td>' . $obj->code_journal . '</td>';
|
||||||
|
print '<td>' . round($solde, 2) . '</td>';
|
||||||
|
|
||||||
|
if (empty($obj->lettering_code)) {
|
||||||
|
print '<td class="nowrap" align="center"><input type="checkbox" class="flat checkforselect" name="toselect[]" id="toselect[]" value="' . $obj->rowid . '" /></td>';
|
||||||
|
} else
|
||||||
|
print '<td>' . $obj->lettering_code . '</td>';
|
||||||
|
|
||||||
print "<table class=\"noborder\" width=\"100%\">";
|
|
||||||
print '<tr class="liste_titre">';
|
|
||||||
print '<td></td>';
|
|
||||||
print_liste_field_titre("Doctype", "liste.php", "bk.doc_type" );
|
|
||||||
print_liste_field_titre("Docdate", "liste.php", "bk.doc_date" );
|
|
||||||
print_liste_field_titre("Docref", "liste.php", "bk.doc_ref" );
|
|
||||||
// print_liste_field_titre("Numerocompte", "liste.php", "bk.numero_compte" );
|
|
||||||
// print_liste_field_titre("Code_tiers", "liste.php", "bk.code_tiers" );
|
|
||||||
print_liste_field_titre("LabelAccount", "liste.php", "bk_label_compte" );
|
|
||||||
print_liste_field_titre("Debit", "liste.php", "bk.debit" );
|
|
||||||
print_liste_field_titre("Credit", "liste.php", "bk.credit" );
|
|
||||||
print_liste_field_titre("Amount", "liste.php", "bk.montant" );
|
|
||||||
print_liste_field_titre("Sens", "liste.php", "bk.sens" );
|
|
||||||
print_liste_field_titre("Codejournal", "liste.php", "bk.code_journal" );
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
|
||||||
print '<form action="" method="GET">';
|
|
||||||
print '<input type="hidden" name="socid" value="' . $_GET ["socid"] . '">';
|
|
||||||
print '<td><input type="text" name="search_doc_type" value="' . $_GET ["search_doc_type"] . '"></td>';
|
|
||||||
print '<td><input type="text" name="search_year" value="' . $_GET ["search_year"] . '"></td>';
|
|
||||||
print '<td><input type="text" name="search_doc_refe" value="' . $_GET ["search_doc_ref"] . '"></td>';
|
|
||||||
// print '<td><input type="text" name="search_compte" value="' . $_GET ["search_compte"] . '"></td>';
|
|
||||||
// print '<td><input type="text" name="search_tiers" value="' . $_GET ["search_tiers"] . '"></td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print '<td align="right">';
|
|
||||||
print '<input type="image" class="liste_titre" name="button_search" src="' . DOL_URL_ROOT . '/theme/' . $conf->theme . '/img/search.png" value="' . dol_escape_htmltag ( $langs->trans ( "Search" ) ) . '" title="' . dol_escape_htmltag ( $langs->trans ( "Search" ) ) . '">';
|
|
||||||
print '</td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print '</form>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
$var = false;
|
|
||||||
|
|
||||||
$debit = 0;
|
|
||||||
$credit = 0;
|
|
||||||
$solde = 0;
|
|
||||||
$tmp = '';
|
|
||||||
while ( $i < $num ) {
|
|
||||||
$obj = $db->fetch_object ( $resql );
|
|
||||||
|
|
||||||
if($tmp !=$obj->lettering || empty($tmp) )
|
|
||||||
$tmp =$obj->lettering;
|
|
||||||
|
|
||||||
if($tmp !=$obj->lettering || empty($obj->lettering))
|
|
||||||
$var = ! $var;
|
|
||||||
|
|
||||||
|
|
||||||
$debit+= $obj->debit;
|
|
||||||
$credit+= $obj->credit;
|
|
||||||
|
|
||||||
$solde+=($obj->credit-$obj->debit);
|
|
||||||
print "<tr $bc[$var]>";
|
|
||||||
|
|
||||||
print '<td>' . $obj->rowid . '</td>';
|
|
||||||
if(empty($obj->lettering)){
|
|
||||||
print '<td><a href="'.dol_buildpath('/accountancy/bookkeeping/card.php', 1).'?piece_num=' . $obj->piece_num . '">';
|
|
||||||
print img_edit ();
|
|
||||||
print '</a> ' . $obj->doc_type . '</td>' . "\n";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
print '<td>'.$obj->doc_type . '</td>' . "\n";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
print '<td>' . dol_print_date ( $db->jdate ( $obj->doc_date ), 'day' ) . '</td>';
|
|
||||||
print '<td>' . $obj->doc_ref . '</td>';
|
|
||||||
// print '<td>' . $obj->numero_compte . '</td>';
|
|
||||||
// print '<td>' . $obj->code_tiers . '</td>';
|
|
||||||
print '<td>' . $obj->label_compte . '</td>';
|
|
||||||
print '<td>' . $obj->debit . '</td>';
|
|
||||||
print '<td>' . $obj->credit . '</td>';
|
|
||||||
print '<td>' . $obj->montant . '</td>';
|
|
||||||
print '<td>' . $obj->sens . '</td>';
|
|
||||||
print '<td>' . $obj->code_journal . '</td>';
|
|
||||||
print '<td>' . round($solde, 2) . '</td>';
|
|
||||||
|
|
||||||
if(empty($obj->lettering)){
|
|
||||||
print '<td><input type="checkbox" name="ids[]" value="' . $obj->rowid . '" /></td>';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
print '<td>' . $obj->lettering . '</td>';
|
|
||||||
|
|
||||||
print "</tr>\n";
|
|
||||||
|
|
||||||
$i ++;
|
|
||||||
}
|
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
|
||||||
|
|
||||||
print '<td colspan="4">Mouvement totaux</td>' . "\n";
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td><strong>' . $debit . '</strong></td>';
|
|
||||||
print '<td><strong>' . $credit . '</strong></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print "</tr>\n";
|
|
||||||
|
|
||||||
print "<tr $bc[$var]>";
|
|
||||||
print '<td colspan="5">Solde Comptable</td>' . "\n";
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td><strong>' . ($credit-$debit) . '</strong></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print "</tr>\n";
|
|
||||||
|
|
||||||
print "</table>";
|
|
||||||
|
|
||||||
print '<input class="butAction" type="submit" value="lettering">';
|
|
||||||
print '<a class="butAction" href="?socid='.$object->id.'&action=autolettrage">auto lettering</a>';
|
|
||||||
print "</form>";
|
|
||||||
$db->free ( $resql );
|
|
||||||
} else {
|
|
||||||
dol_print_error ( $db );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print '<tr class="oddeven">';
|
||||||
|
|
||||||
|
print '<td colspan="4">Mouvement totaux</td>' . "\n";
|
||||||
|
print '<td><strong>' . price($debit) . '</strong></td>';
|
||||||
|
print '<td><strong>' . price($credit) . '</strong></td>';
|
||||||
|
print '<td colspan="5"></td>';
|
||||||
|
print "</tr>\n";
|
||||||
|
|
||||||
|
print "<tr $bc[$var]>";
|
||||||
|
print '<td colspan="9">Solde Comptable</td>' . "\n";
|
||||||
|
print '<td><strong>' . price($credit - $debit) . '</strong></td>';
|
||||||
|
print '<td colspan="5"></td>';
|
||||||
|
print "</tr>\n";
|
||||||
|
|
||||||
|
print "</table>";
|
||||||
|
|
||||||
|
print '<input class="butAction" type="submit" value="lettering" name="lettering" id="lettering">';
|
||||||
|
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?socid=' . $object->id . '&action=autolettrage">'.$langs->trans('AccountancyAutoLettering').'</a>';
|
||||||
|
print "</form>";
|
||||||
|
$db->free($resql);
|
||||||
|
} else {
|
||||||
|
dol_print_error($db);
|
||||||
|
}
|
||||||
|
|
||||||
// End of page
|
// End of page
|
||||||
llxFooter();
|
llxFooter();
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
* 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-2017 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2016-2017 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
|
* Copyright (C) 2017 Frédéric France <frederic.france@netlogic.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -49,7 +50,8 @@ class AccountancyExport
|
|||||||
public static $EXPORT_TYPE_EBP = 7;
|
public static $EXPORT_TYPE_EBP = 7;
|
||||||
public static $EXPORT_TYPE_COGILOG = 8;
|
public static $EXPORT_TYPE_COGILOG = 8;
|
||||||
public static $EXPORT_TYPE_AGIRIS = 9;
|
public static $EXPORT_TYPE_AGIRIS = 9;
|
||||||
|
public static $EXPORT_TYPE_CONFIGURABLE = 10;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @var string[] Error codes (or messages)
|
* @var string[] Error codes (or messages)
|
||||||
@ -78,11 +80,11 @@ class AccountancyExport
|
|||||||
|
|
||||||
$this->db = &$db;
|
$this->db = &$db;
|
||||||
$this->separator = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV;
|
$this->separator = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV;
|
||||||
$this->end_line = "\n";
|
$this->end_line = empty($conf->global->ACCOUNTING_EXPORT_ENDLINE)?"\n":($conf->global->ACCOUNTING_EXPORT_ENDLINE==1?"\n":"\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Array wit all export type available (key + label)
|
* Array with all export type available (key + label)
|
||||||
*
|
*
|
||||||
* @return array of type
|
* @return array of type
|
||||||
*/
|
*/
|
||||||
@ -98,10 +100,73 @@ class AccountancyExport
|
|||||||
self::$EXPORT_TYPE_QUADRATUS => $langs->trans('Modelcsv_quadratus'),
|
self::$EXPORT_TYPE_QUADRATUS => $langs->trans('Modelcsv_quadratus'),
|
||||||
self::$EXPORT_TYPE_EBP => $langs->trans('Modelcsv_ebp'),
|
self::$EXPORT_TYPE_EBP => $langs->trans('Modelcsv_ebp'),
|
||||||
self::$EXPORT_TYPE_COGILOG => $langs->trans('Modelcsv_cogilog'),
|
self::$EXPORT_TYPE_COGILOG => $langs->trans('Modelcsv_cogilog'),
|
||||||
self::$EXPORT_TYPE_AGIRIS => $langs->trans('Modelcsv_agiris')
|
self::$EXPORT_TYPE_AGIRIS => $langs->trans('Modelcsv_agiris'),
|
||||||
);
|
self::$EXPORT_TYPE_CONFIGURABLE => $langs->trans('Modelcsv_configurable'),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Array with all export type available (key + label) and parameters for config
|
||||||
|
*
|
||||||
|
* @return array of type
|
||||||
|
*/
|
||||||
|
public static function getTypeConfig() {
|
||||||
|
global $conf, $langs;
|
||||||
|
|
||||||
|
return array (
|
||||||
|
'param' => array(
|
||||||
|
self::$EXPORT_TYPE_NORMAL => array(
|
||||||
|
'label' => $langs->trans('Modelcsv_normal'),
|
||||||
|
'ACCOUNTING_EXPORT_FORMAT' => empty($conf->global->ACCOUNTING_EXPORT_FORMAT)?'txt':$conf->global->ACCOUNTING_EXPORT_FORMAT,
|
||||||
|
'ACCOUNTING_EXPORT_SEPARATORCSV' => empty($conf->global->ACCOUNTING_EXPORT_SEPARATORCSV)?',':$conf->global->ACCOUNTING_EXPORT_SEPARATORCSV,
|
||||||
|
'ACCOUNTING_EXPORT_ENDLINE' => empty($conf->global->ACCOUNTING_EXPORT_ENDLINE)?1:$conf->global->ACCOUNTING_EXPORT_ENDLINE,
|
||||||
|
'ACCOUNTING_EXPORT_DATE' => empty($conf->global->ACCOUNTING_EXPORT_DATE)?'%d%m%Y':$conf->global->ACCOUNTING_EXPORT_DATE,
|
||||||
|
),
|
||||||
|
self::$EXPORT_TYPE_CEGID => array(
|
||||||
|
'label' => $langs->trans('Modelcsv_CEGID'),
|
||||||
|
),
|
||||||
|
self::$EXPORT_TYPE_COALA => array(
|
||||||
|
'label' => $langs->trans('Modelcsv_COALA'),
|
||||||
|
),
|
||||||
|
self::$EXPORT_TYPE_BOB50 => array(
|
||||||
|
'label' => $langs->trans('Modelcsv_bob50'),
|
||||||
|
),
|
||||||
|
self::$EXPORT_TYPE_CIEL => array(
|
||||||
|
'label' => $langs->trans('Modelcsv_ciel'),
|
||||||
|
'ACCOUNTING_EXPORT_FORMAT' => 'txt',
|
||||||
|
),
|
||||||
|
self::$EXPORT_TYPE_QUADRATUS => array(
|
||||||
|
'label' => $langs->trans('Modelcsv_quadratus'),
|
||||||
|
'ACCOUNTING_EXPORT_FORMAT' => 'txt',
|
||||||
|
),
|
||||||
|
self::$EXPORT_TYPE_EBP => array(
|
||||||
|
'label' => $langs->trans('Modelcsv_ebp'),
|
||||||
|
),
|
||||||
|
self::$EXPORT_TYPE_COGILOG => array(
|
||||||
|
'label' => $langs->trans('Modelcsv_cogilog'),
|
||||||
|
),
|
||||||
|
self::$EXPORT_TYPE_AGIRIS => array(
|
||||||
|
'label' => $langs->trans('Modelcsv_agiris'),
|
||||||
|
),
|
||||||
|
self::$EXPORT_TYPE_CONFIGURABLE => array(
|
||||||
|
'label' => $langs->trans('Modelcsv_configurable'),
|
||||||
|
'ACCOUNTING_EXPORT_FORMAT' => empty($conf->global->ACCOUNTING_EXPORT_FORMAT)?'txt':$conf->global->ACCOUNTING_EXPORT_FORMAT,
|
||||||
|
'ACCOUNTING_EXPORT_SEPARATORCSV' => empty($conf->global->ACCOUNTING_EXPORT_SEPARATORCSV)?',':$conf->global->ACCOUNTING_EXPORT_SEPARATORCSV,
|
||||||
|
'ACCOUNTING_EXPORT_ENDLINE' => empty($conf->global->ACCOUNTING_EXPORT_ENDLINE)?1:$conf->global->ACCOUNTING_EXPORT_ENDLINE,
|
||||||
|
'ACCOUNTING_EXPORT_DATE' => empty($conf->global->ACCOUNTING_EXPORT_DATE)?'%d%m%Y':$conf->global->ACCOUNTING_EXPORT_DATE,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'cr'=> array (
|
||||||
|
'1' => $langs->trans("Unix"),
|
||||||
|
'2' => $langs->trans("Windows")
|
||||||
|
),
|
||||||
|
'format' => array (
|
||||||
|
'csv' => $langs->trans("csv"),
|
||||||
|
'txt' => $langs->trans("txt")
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Download the export
|
* Download the export
|
||||||
*
|
*
|
||||||
@ -151,6 +216,9 @@ class AccountancyExport
|
|||||||
case self::$EXPORT_TYPE_AGIRIS :
|
case self::$EXPORT_TYPE_AGIRIS :
|
||||||
$this->exportAgiris($TData);
|
$this->exportAgiris($TData);
|
||||||
break;
|
break;
|
||||||
|
case self::$EXPORT_TYPE_CONFIGURABLE :
|
||||||
|
$this->exportConfigurable($TData);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
$this->errors[] = $langs->trans('accountancy_error_modelnotfound');
|
$this->errors[] = $langs->trans('accountancy_error_modelnotfound');
|
||||||
break;
|
break;
|
||||||
@ -191,7 +259,8 @@ class AccountancyExport
|
|||||||
public function exportCegid($objectLines) {
|
public function exportCegid($objectLines) {
|
||||||
foreach ( $objectLines as $line ) {
|
foreach ( $objectLines as $line ) {
|
||||||
$date = dol_print_date($line->doc_date, '%d%m%Y');
|
$date = dol_print_date($line->doc_date, '%d%m%Y');
|
||||||
$separator = ";";
|
$separator = ";";
|
||||||
|
$end_line = "\n";
|
||||||
|
|
||||||
print $date . $separator;
|
print $date . $separator;
|
||||||
print $line->code_journal . $separator;
|
print $line->code_journal . $separator;
|
||||||
@ -201,7 +270,7 @@ class AccountancyExport
|
|||||||
print price($line->montant) . $separator;
|
print price($line->montant) . $separator;
|
||||||
print $line->label_operation . $separator;
|
print $line->label_operation . $separator;
|
||||||
print $line->doc_ref;
|
print $line->doc_ref;
|
||||||
print $this->end_line;
|
print $end_line;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -215,24 +284,26 @@ class AccountancyExport
|
|||||||
public function exportCogilog($objectLines) {
|
public function exportCogilog($objectLines) {
|
||||||
foreach ( $objectLines as $line ) {
|
foreach ( $objectLines as $line ) {
|
||||||
$date = dol_print_date($line->doc_date, '%d%m%Y');
|
$date = dol_print_date($line->doc_date, '%d%m%Y');
|
||||||
|
$separator = ";";
|
||||||
|
$end_line = "\n";
|
||||||
|
|
||||||
print $line->code_journal . $this->separator;
|
print $line->code_journal . $separator;
|
||||||
print $date . $this->separator;
|
print $date . $separator;
|
||||||
print $line->piece_num . $this->separator;
|
print $line->piece_num . $separator;
|
||||||
print length_accountg($line->numero_compte) . $this->separator;
|
print length_accountg($line->numero_compte) . $separator;
|
||||||
print '' . $this->separator;
|
print '' . $separator;
|
||||||
print $line->label_operation . $this->separator;
|
print $line->label_operation . $separator;
|
||||||
print $date . $this->separator;
|
print $date . $separator;
|
||||||
if ($line->sens=='D') {
|
if ($line->sens=='D') {
|
||||||
print price($line->montant) . $this->separator;
|
print price($line->montant) . $separator;
|
||||||
print '' . $this->separator;
|
print '' . $separator;
|
||||||
}elseif ($line->sens=='C') {
|
}elseif ($line->sens=='C') {
|
||||||
print '' . $this->separator;
|
print '' . $separator;
|
||||||
print price($line->montant) . $this->separator;
|
print price($line->montant) . $separator;
|
||||||
}
|
}
|
||||||
print $line->doc_ref . $this->separator;
|
print $line->doc_ref . $separator;
|
||||||
print $line->label_operation . $this->separator;
|
print $line->label_operation . $separator;
|
||||||
print $this->end_line;
|
print $end_line;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -245,18 +316,21 @@ class AccountancyExport
|
|||||||
*/
|
*/
|
||||||
public function exportCoala($objectLines) {
|
public function exportCoala($objectLines) {
|
||||||
// Coala export
|
// Coala export
|
||||||
|
$separator = ";";
|
||||||
|
$end_line = "\n";
|
||||||
|
|
||||||
foreach ( $objectLines as $line ) {
|
foreach ( $objectLines as $line ) {
|
||||||
$date = dol_print_date($line->doc_date, '%d/%m/%Y');
|
$date = dol_print_date($line->doc_date, '%d/%m/%Y');
|
||||||
print $date . $this->separator;
|
print $date . $separator;
|
||||||
print $line->code_journal . $this->separator;
|
print $line->code_journal . $separator;
|
||||||
print length_accountg($line->numero_compte) . $this->separator;
|
print length_accountg($line->numero_compte) . $separator;
|
||||||
print $line->piece_num . $this->separator;
|
print $line->piece_num . $separator;
|
||||||
print $line->doc_ref . $this->separator;
|
print $line->doc_ref . $separator;
|
||||||
print price($line->debit) . $this->separator;
|
print price($line->debit) . $separator;
|
||||||
print price($line->credit) . $this->separator;
|
print price($line->credit) . $separator;
|
||||||
print 'E' . $this->separator;
|
print 'E' . $separator;
|
||||||
print length_accountg($line->subledger_account) . $this->separator;
|
print length_accountg($line->subledger_account) . $separator;
|
||||||
print $this->end_line;
|
print $end_line;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -270,28 +344,31 @@ class AccountancyExport
|
|||||||
public function exportBob50($objectLines) {
|
public function exportBob50($objectLines) {
|
||||||
|
|
||||||
// Bob50
|
// Bob50
|
||||||
|
$separator = ";";
|
||||||
|
$end_line = "\n";
|
||||||
|
|
||||||
foreach ( $objectLines as $line ) {
|
foreach ( $objectLines as $line ) {
|
||||||
print $line->piece_num . $this->separator;
|
print $line->piece_num . $separator;
|
||||||
$date = dol_print_date($line->doc_date, '%d/%m/%Y');
|
$date = dol_print_date($line->doc_date, '%d/%m/%Y');
|
||||||
print $date . $this->separator;
|
print $date . $separator;
|
||||||
|
|
||||||
if (empty($line->subledger_account)) {
|
if (empty($line->subledger_account)) {
|
||||||
print 'G' . $this->separator;
|
print 'G' . $separator;
|
||||||
print length_accounta($line->numero_compte) . $this->separator;
|
print length_accounta($line->numero_compte) . $separator;
|
||||||
} else {
|
} else {
|
||||||
if (substr($line->numero_compte, 0, 3) == '411') {
|
if (substr($line->numero_compte, 0, 3) == '411') {
|
||||||
print 'C' . $this->separator;
|
print 'C' . $separator;
|
||||||
}
|
}
|
||||||
if (substr($line->numero_compte, 0, 3) == '401') {
|
if (substr($line->numero_compte, 0, 3) == '401') {
|
||||||
print 'F' . $this->separator;
|
print 'F' . $separator;
|
||||||
}
|
}
|
||||||
print length_accountg($line->subledger_account) . $this->separator;
|
print length_accountg($line->subledger_account) . $separator;
|
||||||
}
|
}
|
||||||
|
|
||||||
print price($line->debit) . $this->separator;
|
print price($line->debit) . $separator;
|
||||||
print price($line->credit) . $this->separator;
|
print price($line->credit) . $separator;
|
||||||
print dol_trunc($line->label_operation, 32) . $this->separator;
|
print dol_trunc($line->label_operation, 32) . $separator;
|
||||||
print $this->end_line;
|
print $end_line;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -305,7 +382,7 @@ class AccountancyExport
|
|||||||
public function exportCiel(&$TData) {
|
public function exportCiel(&$TData) {
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
$this->end_line ="\r\n";
|
$end_line ="\r\n";
|
||||||
|
|
||||||
$i = 1;
|
$i = 1;
|
||||||
$date_ecriture = dol_print_date(dol_now(), $conf->global->ACCOUNTING_EXPORT_DATE); // format must be yyyymmdd
|
$date_ecriture = dol_print_date(dol_now(), $conf->global->ACCOUNTING_EXPORT_DATE); // format must be yyyymmdd
|
||||||
@ -328,7 +405,7 @@ class AccountancyExport
|
|||||||
$Tab['intitule_compte'] = str_pad(self::trunc($data->label_operation, 34), 34);
|
$Tab['intitule_compte'] = str_pad(self::trunc($data->label_operation, 34), 34);
|
||||||
$Tab['end'] = 'O2003';
|
$Tab['end'] = 'O2003';
|
||||||
|
|
||||||
$Tab['end_line'] = $this->end_line;
|
$Tab['end_line'] = $end_line;
|
||||||
|
|
||||||
print implode($Tab);
|
print implode($Tab);
|
||||||
$i ++;
|
$i ++;
|
||||||
@ -345,7 +422,7 @@ class AccountancyExport
|
|||||||
public function exportQuadratus(&$TData) {
|
public function exportQuadratus(&$TData) {
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
$this->end_line ="\r\n";
|
$end_line ="\r\n";
|
||||||
|
|
||||||
$date_ecriture = dol_print_date(time(), $conf->global->ACCOUNTING_EXPORT_DATE); // format must be ddmmyy
|
$date_ecriture = dol_print_date(time(), $conf->global->ACCOUNTING_EXPORT_DATE); // format must be ddmmyy
|
||||||
foreach ( $TData as $data ) {
|
foreach ( $TData as $data ) {
|
||||||
@ -380,7 +457,7 @@ class AccountancyExport
|
|||||||
$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['filler4'] = str_repeat(' ', 73);
|
$Tab['filler4'] = str_repeat(' ', 73);
|
||||||
|
|
||||||
$Tab['end_line'] = $this->end_line;
|
$Tab['end_line'] = $end_line;
|
||||||
|
|
||||||
print implode($Tab);
|
print implode($Tab);
|
||||||
}
|
}
|
||||||
@ -396,24 +473,25 @@ class AccountancyExport
|
|||||||
*/
|
*/
|
||||||
public function exportEbp($objectLines) {
|
public function exportEbp($objectLines) {
|
||||||
|
|
||||||
$this->separator = ',';
|
$separator = ',';
|
||||||
|
$end_line = "\n";
|
||||||
|
|
||||||
foreach ( $objectLines as $line ) {
|
foreach ( $objectLines as $line ) {
|
||||||
|
|
||||||
$date = dol_print_date($line->doc_date, '%d%m%Y');
|
$date = dol_print_date($line->doc_date, '%d%m%Y');
|
||||||
|
|
||||||
print $line->id . $this->separator;
|
print $line->id . $separator;
|
||||||
print $date . $this->separator;
|
print $date . $separator;
|
||||||
print $line->code_journal . $this->separator;
|
print $line->code_journal . $separator;
|
||||||
print length_accountg($line->numero_compte) . $this->separator;
|
print length_accountg($line->numero_compte) . $separator;
|
||||||
print substr(length_accountg($line->numero_compte),0,2) . $this->separator;
|
print substr(length_accountg($line->numero_compte),0,2) . $separator;
|
||||||
print '"'.dol_trunc($line->label_operation,40,'right','UTF-8',1).'"' . $this->separator;
|
print '"'.dol_trunc($line->label_operation,40,'right','UTF-8',1).'"' . $separator;
|
||||||
print '"'.dol_trunc($line->piece_num,15,'right','UTF-8',1).'"'.$this->separator;
|
print '"'.dol_trunc($line->piece_num,15,'right','UTF-8',1).'"'.$separator;
|
||||||
print price2num($line->montant).$this->separator;
|
print price2num($line->montant).$separator;
|
||||||
print $line->sens.$this->separator;
|
print $line->sens.$separator;
|
||||||
print $date . $this->separator;
|
print $date . $separator;
|
||||||
print 'EUR';
|
print 'EUR';
|
||||||
print $this->end_line;
|
print $end_line;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,33 +505,64 @@ class AccountancyExport
|
|||||||
*/
|
*/
|
||||||
public function exportAgiris($objectLines) {
|
public function exportAgiris($objectLines) {
|
||||||
|
|
||||||
$this->separator = ';';
|
$separator = ';';
|
||||||
|
$end_line = "\n";
|
||||||
|
|
||||||
foreach ( $objectLines as $line ) {
|
foreach ( $objectLines as $line ) {
|
||||||
|
|
||||||
$date = dol_print_date($line->doc_date, '%d%m%Y');
|
$date = dol_print_date($line->doc_date, '%d%m%Y');
|
||||||
|
|
||||||
print $line->piece_num . $this->separator;
|
print $line->piece_num . $separator;
|
||||||
print $line->label_operation . $this->separator;
|
print $line->label_operation . $separator;
|
||||||
print $date . $this->separator;
|
print $date . $separator;
|
||||||
print $line->label_operation . $this->separator;
|
print $line->label_operation . $separator;
|
||||||
|
|
||||||
if (empty($line->subledger_account)) {
|
if (empty($line->subledger_account)) {
|
||||||
print length_accountg($line->numero_compte) . $this->separator;
|
print length_accountg($line->numero_compte) . $separator;
|
||||||
} else {
|
} else {
|
||||||
print length_accounta($line->subledger_account) . $this->separator;
|
print length_accounta($line->subledger_account) . $separator;
|
||||||
}
|
}
|
||||||
|
|
||||||
print $line->doc_ref . $this->separator;
|
print $line->doc_ref . $separator;
|
||||||
print price($line->debit) . $this->separator;
|
print price($line->debit) . $separator;
|
||||||
print price($line->credit) . $this->separator;
|
print price($line->credit) . $separator;
|
||||||
print price($line->montant).$this->separator;
|
print price($line->montant) . $separator;
|
||||||
print $line->sens.$this->separator;
|
print $line->sens . $separator;
|
||||||
print $line->code_journal;
|
print $line->code_journal;
|
||||||
print $this->end_line;
|
print $end_line;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Export format : Configurable
|
||||||
|
*
|
||||||
|
* @param array $objectLines data
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function exportConfigurable($objectLines) {
|
||||||
|
global $conf;
|
||||||
|
|
||||||
|
foreach ($objectLines as $line) {
|
||||||
|
$tab = array();
|
||||||
|
// export configurable
|
||||||
|
$date = dol_print_date($line->doc_date, $conf->global->ACCOUNTING_EXPORT_DATE);
|
||||||
|
$tab[] = $line->piece_num;
|
||||||
|
$tab[] = $date;
|
||||||
|
$tab[] = $line->doc_ref;
|
||||||
|
$tab[] = $line->label_operation;
|
||||||
|
$tab[] = length_accountg($line->numero_compte);
|
||||||
|
$tab[] = length_accounta($line->subledger_account);
|
||||||
|
$tab[] = price($line->debit);
|
||||||
|
$tab[] = price($line->credit);
|
||||||
|
$tab[] = price($line->montant);
|
||||||
|
$tab[] = $line->code_journal;
|
||||||
|
|
||||||
|
$separator = $this->separator;
|
||||||
|
print implode($separator, $tab) . $this->end_line;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|||||||
@ -29,7 +29,8 @@ class AccountingJournal extends CommonObject
|
|||||||
public $element='accounting_journal';
|
public $element='accounting_journal';
|
||||||
public $table_element='accounting_journal';
|
public $table_element='accounting_journal';
|
||||||
public $fk_element = '';
|
public $fk_element = '';
|
||||||
protected $ismultientitymanaged = 0; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe
|
public $ismultientitymanaged = 0; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe
|
||||||
|
public $picto = 'generic';
|
||||||
|
|
||||||
var $rowid;
|
var $rowid;
|
||||||
|
|
||||||
@ -187,9 +188,6 @@ class AccountingJournal extends CommonObject
|
|||||||
|
|
||||||
$url = DOL_URL_ROOT . '/accountancy/admin/journals_list.php?id=35';
|
$url = DOL_URL_ROOT . '/accountancy/admin/journals_list.php?id=35';
|
||||||
|
|
||||||
$picto = 'billr';
|
|
||||||
$label='';
|
|
||||||
|
|
||||||
$label = '<u>' . $langs->trans("ShowAccountingJournal") . '</u>';
|
$label = '<u>' . $langs->trans("ShowAccountingJournal") . '</u>';
|
||||||
if (! empty($this->code))
|
if (! empty($this->code))
|
||||||
$label .= '<br><b>'.$langs->trans('Code') . ':</b> ' . $this->code;
|
$label .= '<br><b>'.$langs->trans('Code') . ':</b> ' . $this->code;
|
||||||
@ -223,9 +221,11 @@ class AccountingJournal extends CommonObject
|
|||||||
$label_link = $this->code;
|
$label_link = $this->code;
|
||||||
if ($withlabel) $label_link .= ' - ' . $this->label;
|
if ($withlabel) $label_link .= ' - ' . $this->label;
|
||||||
|
|
||||||
if ($withpicto) $result.=($linkstart.img_object(($notooltip?'':$label), $picto, ($notooltip?'':'class="classfortooltip"'), 0, 0, $notooltip?0:1).$linkend);
|
$result .= $linkstart;
|
||||||
if ($withpicto && $withpicto != 2) $result .= ' ';
|
if ($withpicto) $result.=img_object(($notooltip?'':$label), ($this->picto?$this->picto:'generic'), ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1);
|
||||||
if ($withpicto != 2) $result.=$linkstart . $label_link . $linkend;
|
if ($withpicto != 2) $result.= $label_link;
|
||||||
|
$result .= $linkend;
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -279,7 +279,7 @@ class BookKeeping extends CommonObject
|
|||||||
$sql .= ', entity';
|
$sql .= ', entity';
|
||||||
$sql .= ") VALUES (";
|
$sql .= ") VALUES (";
|
||||||
$sql .= "'" . $this->db->idate($this->doc_date) . "'";
|
$sql .= "'" . $this->db->idate($this->doc_date) . "'";
|
||||||
$sql .= ",'" . $this->db->idate($this->date_lim_reglement) . "'";
|
$sql .= ", ".(! isset($this->date_lim_reglement) || dol_strlen($this->date_lim_reglement) == 0 ? 'NULL' : "'" . $this->db->idate($this->date_lim_reglement) . "'");
|
||||||
$sql .= ",'" . $this->db->escape($this->doc_type) . "'";
|
$sql .= ",'" . $this->db->escape($this->doc_type) . "'";
|
||||||
$sql .= ",'" . $this->db->escape($this->doc_ref) . "'";
|
$sql .= ",'" . $this->db->escape($this->doc_ref) . "'";
|
||||||
$sql .= "," . $this->fk_doc;
|
$sql .= "," . $this->fk_doc;
|
||||||
@ -564,7 +564,8 @@ class BookKeeping extends CommonObject
|
|||||||
$sql .= " t.import_key,";
|
$sql .= " t.import_key,";
|
||||||
$sql .= " t.code_journal,";
|
$sql .= " t.code_journal,";
|
||||||
$sql .= " t.journal_label,";
|
$sql .= " t.journal_label,";
|
||||||
$sql .= " t.piece_num";
|
$sql .= " t.piece_num,";
|
||||||
|
$sql .= " t.date_creation";
|
||||||
$sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element.$mode. ' as t';
|
$sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element.$mode. ' as t';
|
||||||
$sql .= ' WHERE 1 = 1';
|
$sql .= ' WHERE 1 = 1';
|
||||||
$sql .= " AND entity IN (" . getEntity('accountancy') . ")";
|
$sql .= " AND entity IN (" . getEntity('accountancy') . ")";
|
||||||
@ -603,6 +604,7 @@ class BookKeeping extends CommonObject
|
|||||||
$this->code_journal = $obj->code_journal;
|
$this->code_journal = $obj->code_journal;
|
||||||
$this->journal_label = $obj->journal_label;
|
$this->journal_label = $obj->journal_label;
|
||||||
$this->piece_num = $obj->piece_num;
|
$this->piece_num = $obj->piece_num;
|
||||||
|
$this->date_creation = $this->db->jdate($obj->date_creation);
|
||||||
}
|
}
|
||||||
$this->db->free($resql);
|
$this->db->free($resql);
|
||||||
|
|
||||||
@ -658,7 +660,8 @@ class BookKeeping extends CommonObject
|
|||||||
$sql .= " t.import_key,";
|
$sql .= " t.import_key,";
|
||||||
$sql .= " t.code_journal,";
|
$sql .= " t.code_journal,";
|
||||||
$sql .= " t.journal_label,";
|
$sql .= " t.journal_label,";
|
||||||
$sql .= " t.piece_num";
|
$sql .= " t.piece_num,";
|
||||||
|
$sql .= " t.date_creation";
|
||||||
// Manage filter
|
// Manage filter
|
||||||
$sqlwhere = array ();
|
$sqlwhere = array ();
|
||||||
if (count($filter) > 0) {
|
if (count($filter) > 0) {
|
||||||
@ -675,6 +678,8 @@ class BookKeeping extends CommonObject
|
|||||||
$sqlwhere[] = $key . ' LIKE \'' . $this->db->escape($value) . '%\'';
|
$sqlwhere[] = $key . ' LIKE \'' . $this->db->escape($value) . '%\'';
|
||||||
} elseif ($key == 't.label_operation') {
|
} elseif ($key == 't.label_operation') {
|
||||||
$sqlwhere[] = $key . ' LIKE \'' . $this->db->escape($value) . '%\'';
|
$sqlwhere[] = $key . ' LIKE \'' . $this->db->escape($value) . '%\'';
|
||||||
|
} elseif ($key == 't.date_creation>=' || $key == 't.date_creation<=') {
|
||||||
|
$sqlwhere[] = $key . '\'' . $this->db->idate($value) . '\'';
|
||||||
} else {
|
} else {
|
||||||
$sqlwhere[] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\'';
|
$sqlwhere[] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\'';
|
||||||
}
|
}
|
||||||
@ -725,6 +730,7 @@ class BookKeeping extends CommonObject
|
|||||||
$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 = $obj->date_creation;
|
||||||
|
|
||||||
$this->lines[] = $line;
|
$this->lines[] = $line;
|
||||||
}
|
}
|
||||||
@ -777,7 +783,8 @@ class BookKeeping extends CommonObject
|
|||||||
$sql .= " t.import_key,";
|
$sql .= " t.import_key,";
|
||||||
$sql .= " t.code_journal,";
|
$sql .= " t.code_journal,";
|
||||||
$sql .= " t.journal_label,";
|
$sql .= " t.journal_label,";
|
||||||
$sql .= " t.piece_num";
|
$sql .= " t.piece_num,";
|
||||||
|
$sql .= " t.date_creation";
|
||||||
$sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element . ' as t';
|
$sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element . ' as t';
|
||||||
// Manage filter
|
// Manage filter
|
||||||
$sqlwhere = array ();
|
$sqlwhere = array ();
|
||||||
@ -793,6 +800,10 @@ class BookKeeping extends CommonObject
|
|||||||
$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->escape($value) . '%\'';
|
||||||
|
} elseif ($key == 't.date_creation>=' || $key == 't.date_creation<=') {
|
||||||
|
$sqlwhere[] = $key . '\'' . $this->db->idate($value) . '\'';
|
||||||
|
} elseif ($key == 't.tms>=' || $key == 't.tms<=') {
|
||||||
|
$sqlwhere[] = $key . '\'' . $this->db->idate($value) . '\'';
|
||||||
} else {
|
} else {
|
||||||
$sqlwhere[] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\'';
|
$sqlwhere[] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\'';
|
||||||
}
|
}
|
||||||
@ -841,6 +852,7 @@ class BookKeeping extends CommonObject
|
|||||||
$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 = $obj->date_creation;
|
||||||
|
|
||||||
$this->lines[] = $line;
|
$this->lines[] = $line;
|
||||||
}
|
}
|
||||||
@ -1079,22 +1091,26 @@ class BookKeeping extends CommonObject
|
|||||||
* @param string $mode Mode
|
* @param string $mode Mode
|
||||||
* @return number <0 if KO, >0 if OK
|
* @return number <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
public function updateByMvt($piece_num='', $field='', $value='', $mode='') {
|
public function updateByMvt($piece_num='', $field='', $value='', $mode='')
|
||||||
|
{
|
||||||
|
$error=0;
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
$sql = "UPDATE " . MAIN_DB_PREFIX . $this->table_element . $mode . " as ab";
|
$sql = "UPDATE " . MAIN_DB_PREFIX . $this->table_element . $mode . " as ab";
|
||||||
$sql .= ' SET ab.' . $field . '=' . (is_numeric($value)?$value:"'".$value."'");
|
$sql .= ' SET ab.' . $field . '=' . (is_numeric($value)?$value:"'".$value."'");
|
||||||
$sql .= ' WHERE ab.piece_num=' . $piece_num ;
|
$sql .= ' WHERE ab.piece_num=' . $piece_num ;
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
|
|
||||||
if (! $resql) {
|
if (! $resql) {
|
||||||
$error ++;
|
$error++;
|
||||||
$this->errors[] = 'Error ' . $this->db->lasterror();
|
$this->errors[] = 'Error ' . $this->db->lasterror();
|
||||||
dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR);
|
dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR);
|
||||||
}
|
}
|
||||||
if ($error) {
|
if ($error) {
|
||||||
$this->db->rollback();
|
$this->db->rollback();
|
||||||
|
|
||||||
return - 1 * $error;
|
return -1 * $error;
|
||||||
} else {
|
} else {
|
||||||
$this->db->commit();
|
$this->db->commit();
|
||||||
|
|
||||||
@ -1332,6 +1348,7 @@ class BookKeeping extends CommonObject
|
|||||||
$this->code_journal = 'VT';
|
$this->code_journal = 'VT';
|
||||||
$this->journal_label = 'Journal de vente';
|
$this->journal_label = 'Journal de vente';
|
||||||
$this->piece_num = '';
|
$this->piece_num = '';
|
||||||
|
$this->date_creation = $now;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1344,7 +1361,7 @@ class BookKeeping extends CommonObject
|
|||||||
public function fetchPerMvt($piecenum, $mode='') {
|
public function fetchPerMvt($piecenum, $mode='') {
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
$sql = "SELECT piece_num,doc_date,code_journal,journal_label,doc_ref,doc_type";
|
$sql = "SELECT piece_num,doc_date,code_journal,journal_label,doc_ref,doc_type,date_creation";
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . $this->table_element.$mode;
|
$sql .= " FROM " . MAIN_DB_PREFIX . $this->table_element.$mode;
|
||||||
$sql .= " WHERE piece_num = " . $piecenum;
|
$sql .= " WHERE piece_num = " . $piecenum;
|
||||||
$sql .= " AND entity IN (" . getEntity('accountancy') . ")";
|
$sql .= " AND entity IN (" . getEntity('accountancy') . ")";
|
||||||
@ -1360,6 +1377,7 @@ class BookKeeping extends CommonObject
|
|||||||
$this->doc_date = $this->db->jdate($obj->doc_date);
|
$this->doc_date = $this->db->jdate($obj->doc_date);
|
||||||
$this->doc_ref = $obj->doc_ref;
|
$this->doc_ref = $obj->doc_ref;
|
||||||
$this->doc_type = $obj->doc_type;
|
$this->doc_type = $obj->doc_type;
|
||||||
|
$this->date_creation = $obj->date_creation;
|
||||||
} else {
|
} else {
|
||||||
$this->error = "Error " . $this->db->lasterror();
|
$this->error = "Error " . $this->db->lasterror();
|
||||||
dol_syslog(get_class($this) . "::" . __METHOD__ . $this->error, LOG_ERR);
|
dol_syslog(get_class($this) . "::" . __METHOD__ . $this->error, LOG_ERR);
|
||||||
@ -1410,7 +1428,7 @@ class BookKeeping extends CommonObject
|
|||||||
$sql = "SELECT rowid, doc_date, doc_type,";
|
$sql = "SELECT rowid, doc_date, doc_type,";
|
||||||
$sql .= " doc_ref, fk_doc, fk_docdet, thirdparty_code, subledger_account, subledger_label,";
|
$sql .= " doc_ref, fk_doc, fk_docdet, thirdparty_code, subledger_account, subledger_label,";
|
||||||
$sql .= " numero_compte, label_compte, label_operation, debit, credit,";
|
$sql .= " numero_compte, label_compte, label_operation, debit, credit,";
|
||||||
$sql .= " montant, sens, fk_user_author, import_key, code_journal, journal_label, piece_num";
|
$sql .= " montant, sens, fk_user_author, import_key, code_journal, journal_label, piece_num, date_creation";
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . $this->table_element.$mode;
|
$sql .= " FROM " . MAIN_DB_PREFIX . $this->table_element.$mode;
|
||||||
$sql .= " WHERE piece_num = " . $piecenum;
|
$sql .= " WHERE piece_num = " . $piecenum;
|
||||||
$sql .= " AND entity IN (" . getEntity('accountancy') . ")";
|
$sql .= " AND entity IN (" . getEntity('accountancy') . ")";
|
||||||
@ -1443,6 +1461,7 @@ class BookKeeping extends CommonObject
|
|||||||
$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 = $obj->date_creation;
|
||||||
|
|
||||||
$this->linesmvt[] = $line;
|
$this->linesmvt[] = $line;
|
||||||
}
|
}
|
||||||
@ -1521,11 +1540,16 @@ class BookKeeping extends CommonObject
|
|||||||
* @param string $piece_num Piece num
|
* @param string $piece_num Piece num
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function transformTransaction($direction=0,$piece_num='') {
|
public function transformTransaction($direction=0,$piece_num='')
|
||||||
|
{
|
||||||
|
$error = 0;
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
if ($direction==0) {
|
|
||||||
|
if ($direction==0)
|
||||||
|
{
|
||||||
$next_piecenum=$this->getNextNumMvt();
|
$next_piecenum=$this->getNextNumMvt();
|
||||||
if ($result < 0) {
|
if ($next_piecenum < 0) {
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
$sql = 'INSERT INTO ' . MAIN_DB_PREFIX . $this->table_element.'(doc_date, doc_type,';
|
$sql = 'INSERT INTO ' . MAIN_DB_PREFIX . $this->table_element.'(doc_date, doc_type,';
|
||||||
@ -1776,4 +1800,5 @@ class BookKeepingLine
|
|||||||
public $code_journal;
|
public $code_journal;
|
||||||
public $journal_label;
|
public $journal_label;
|
||||||
public $piece_num;
|
public $piece_num;
|
||||||
|
public $date_creation;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,313 +18,287 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file accountancy/class/bookkeeping.class.php
|
* \file accountancy/class/bookkeeping.class.php
|
||||||
* \ingroup Advanced accountancy
|
* \ingroup Advanced accountancy
|
||||||
* \brief File of class for lettering
|
* \brief File of class for lettering
|
||||||
*/
|
*/
|
||||||
|
include_once DOL_DOCUMENT_ROOT . "/accountancy/class/bookkeeping.class.php";
|
||||||
include_once DOL_DOCUMENT_ROOT."/accountancy/class/bookkeeping.class.php";
|
include_once DOL_DOCUMENT_ROOT . "/societe/class/societe.class.php";
|
||||||
include_once DOL_DOCUMENT_ROOT."/societe/class/societe.class.php";
|
include_once DOL_DOCUMENT_ROOT . "/core/lib/date.lib.php";
|
||||||
include_once DOL_DOCUMENT_ROOT."/core/lib/date.lib.php";
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class lettering
|
* Class lettering
|
||||||
*/
|
*/
|
||||||
class lettering extends BookKeeping
|
class lettering extends BookKeeping
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* lettrageTiers
|
* lettrageTiers
|
||||||
*
|
*
|
||||||
* @param int $socid Thirdparty id
|
* @param int $socid Thirdparty id
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function lettrageTiers($socid) {
|
public function lettrageTiers($socid) {
|
||||||
|
|
||||||
$db = $this->db;
|
$db = $this->db;
|
||||||
|
|
||||||
$object = new Societe($this->db);
|
$object = new Societe($this->db);
|
||||||
$object->id = $socid;
|
$object->id = $socid;
|
||||||
$object->fetch($socid);
|
$object->fetch($socid);
|
||||||
|
|
||||||
|
if ($object->code_compta == '411CUSTCODE') {
|
||||||
if( $object->code_compta == '411CUSTCODE')
|
|
||||||
$object->code_compta = '';
|
$object->code_compta = '';
|
||||||
|
|
||||||
if( $object->code_compta_fournisseur == '401SUPPCODE')
|
|
||||||
$object->code_compta_fournisseur = '';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$sql = "SELECT bk.rowid, bk.doc_date, bk.doc_type, bk.lettering_code, bk.code_tiers, bk.numero_compte , bk.label_compte, bk.debit , bk.credit, bk.montant , bk.sens , bk.code_journal , bk.piece_num, bk.date_lettering ";
|
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping as bk";
|
|
||||||
$sql .= " WHERE code_journal = 'BQ' AND ( ";
|
|
||||||
if(!empty($object->code_compta) )
|
|
||||||
$sql .= " bk.code_tiers = '" . $object->code_compta . "' ";
|
|
||||||
if(!empty($object->code_compta) && !empty($object->code_compta_fournisseur) )
|
|
||||||
$sql .= " OR ";
|
|
||||||
if(!empty($object->code_compta_fournisseur) )
|
|
||||||
$sql .= " bk.code_tiers = '" . $object->code_compta_fournisseur . "' ";
|
|
||||||
|
|
||||||
$sql .= " ) AND ( bk.date_lettering ='' OR bk.date_lettering IS NULL ) AND bk.lettering_code !='' ";
|
|
||||||
|
|
||||||
$sql .= " GROUP BY bk.lettering_code ";
|
|
||||||
|
|
||||||
|
|
||||||
$resql = $db->query ( $sql );
|
|
||||||
if ($resql) {
|
|
||||||
$num = $db->num_rows ( $resql );
|
|
||||||
$i = 0;
|
|
||||||
|
|
||||||
while ( $i < $num ) {
|
|
||||||
$obj = $db->fetch_object ( $resql );
|
|
||||||
$i++;
|
|
||||||
|
|
||||||
$sql = "SELECT bk.rowid ";
|
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping as bk";
|
|
||||||
$sql .= " WHERE bk.lettering_code = '".$obj->lettering_code."' ";
|
|
||||||
$sql .= " AND ( ";
|
|
||||||
if(!empty($object->code_compta) )
|
|
||||||
$sql .= " bk.code_tiers = '" . $object->code_compta . "' ";
|
|
||||||
if(!empty($object->code_compta) && !empty($object->code_compta_fournisseur) )
|
|
||||||
$sql .= " OR ";
|
|
||||||
if(!empty($object->code_compta_fournisseur) )
|
|
||||||
$sql .= " bk.code_tiers = '" . $object->code_compta_fournisseur . "' ";
|
|
||||||
$sql .= " ) ";
|
|
||||||
// echo $sql;
|
|
||||||
$resql2 = $db->query ( $sql );
|
|
||||||
if ($resql2) {
|
|
||||||
$num2 = $db->num_rows ( $resql2 );
|
|
||||||
$i2 = 0;
|
|
||||||
$ids = array();
|
|
||||||
while ( $i2 < $num2 ) {
|
|
||||||
$obj2 = $db->fetch_object ( $resql2 );
|
|
||||||
$i2++;
|
|
||||||
$ids[] = $obj2->rowid;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if(count($ids) > 1 ){
|
|
||||||
$result = $this->updatelettrage($ids);
|
|
||||||
|
|
||||||
// var_dump($result);
|
|
||||||
// if( $result < 0 ){
|
|
||||||
// setEventMessages('', $BookKeeping->errors, 'errors' );
|
|
||||||
// $error++;
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($object->code_compta_fournisseur == '401SUPPCODE') {
|
||||||
|
$object->code_compta_fournisseur = '';
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Prise en charge des lettering complexe avec prelevment , virement
|
* Prise en charge des lettering complexe avec prelevment , virement
|
||||||
*/
|
*/
|
||||||
$sql = "SELECT bk.rowid, bk.doc_date, bk.doc_type, bk.doc_ref, bk.code_tiers, bk.numero_compte , bk.label_compte, bk.debit , bk.credit, bk.montant , bk.sens , bk.code_journal , bk.piece_num, bk.date_lettering, bu.url_id , bu.type ";
|
$sql = "SELECT DISTINCT bk.rowid, bk.doc_date, bk.doc_type, bk.doc_ref, bk.thirdparty_code, ";
|
||||||
|
$sql .= " bk.numero_compte , bk.label_compte, bk.debit , bk.credit, bk.montant ";
|
||||||
|
$sql .= " , bk.sens , bk.code_journal , bk.piece_num, bk.date_lettering, bu.url_id , bu.type ";
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping as bk";
|
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping as bk";
|
||||||
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "bank_url as bu ON(bk.fk_doc = bu.fk_bank AND bu.type IN ('payment', 'payment_supplier') ) ";
|
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "bank_url as bu ON(bk.fk_doc = bu.fk_bank AND bu.type IN ('payment', 'payment_supplier') ) ";
|
||||||
$sql .= " WHERE code_journal = 'BQ' AND ( ";
|
$sql .= " WHERE ( ";
|
||||||
if(!empty($object->code_compta) )
|
if (! empty($object->code_compta))
|
||||||
$sql .= " bk.code_tiers = '" . $object->code_compta . "' ";
|
$sql .= " bk.thirdparty_code = '" . $object->code_compta . "' ";
|
||||||
if(!empty($object->code_compta) && !empty($object->code_compta_fournisseur) )
|
if (! empty($object->code_compta) && ! empty($object->code_compta_fournisseur))
|
||||||
$sql .= " OR ";
|
$sql .= " OR ";
|
||||||
if(!empty($object->code_compta_fournisseur) )
|
if (! empty($object->code_compta_fournisseur))
|
||||||
$sql .= " bk.code_tiers = '" . $object->code_compta_fournisseur . "' ";
|
$sql .= " bk.thirdparty_code = '" . $object->code_compta_fournisseur . "' ";
|
||||||
|
|
||||||
$sql .= " ) AND date_lettering ='' ";
|
$sql .= " ) AND (bk.date_lettering ='' OR bk.date_lettering IS NULL) ";
|
||||||
$sql .= " GROUP BY bk.lettering_code ";
|
$sql .= " AND (bk.lettering_code != '' OR bk.lettering_code IS NULL) ";
|
||||||
|
$sql .= $db->order('bk.doc_date', 'DESC');
|
||||||
|
|
||||||
// echo $sql;
|
// echo $sql;
|
||||||
//
|
//
|
||||||
$resql = $db->query ( $sql );
|
$resql = $db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
$num = $db->num_rows ( $resql );
|
$num = $db->num_rows($resql);
|
||||||
$i = 0;
|
|
||||||
|
|
||||||
while ( $i < $num ) {
|
while ( $obj = $db->fetch_object($resql) ) {
|
||||||
$obj = $db->fetch_object ( $resql );
|
|
||||||
$ids = array();
|
$ids = array();
|
||||||
$i++;
|
$ids_fact = array();
|
||||||
|
|
||||||
// print_r($obj);
|
if ($obj->type == 'payment_supplier') {
|
||||||
|
|
||||||
|
$sql = 'SELECT DISTINCT bk.rowid, facf.ref, facf.ref_supplier, payf.fk_bank, facf.rowid as fact_id';
|
||||||
|
$sql .= " FROM " . MAIN_DB_PREFIX . "facture_fourn facf ";
|
||||||
if($obj->type =='payment_supplier' ) {
|
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn_facturefourn as payfacf ON payfacf.fk_facturefourn=facf.rowid";
|
||||||
$ids[] = $obj->rowid;
|
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn as payf ON payfacf.fk_paiementfourn=payf.rowid";
|
||||||
|
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "accounting_bookkeeping as bk ON (bk.fk_doc = payf.fk_bank AND bk.code_journal='" . $obj->code_journal . "')";
|
||||||
$sql= 'SELECT bk.rowid, facf.ref, facf.ref_supplier, payf.fk_bank ';
|
$sql .= " WHERE payfacf.fk_paiementfourn = '" . $obj->url_id . "' ";
|
||||||
$sql.= " FROM " . MAIN_DB_PREFIX . "facture_fourn facf ";
|
$sql .= " AND code_journal IN (SELECT code FROM " . MAIN_DB_PREFIX . "accounting_journal WHERE nature=4) ";
|
||||||
$sql.= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn_facturefourn as payfacf ON payfacf.fk_facturefourn=facf.rowid";
|
$sql .= " AND ( ";
|
||||||
$sql.= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn as payf ON payfacf.fk_paiementfourn=payf.rowid";
|
if (! empty($object->code_compta)) {
|
||||||
$sql.= " INNER JOIN " .MAIN_DB_PREFIX . "accounting_bookkeeping as bk ON( bk.fk_doc = facf.ref) ";
|
$sql .= " bk.thirdparty_code = '" . $object->code_compta . "' ";
|
||||||
// $sqlmid.= " LEFT JOIN " . MAIN_DB_PREFIX . "societe as soc ON soc.rowid=facf.fk_soc";
|
|
||||||
// $sqlmid.= " INNER JOIN " . MAIN_DB_PREFIX . "c_paiement as payc ON payc.id=payf.fk_paiement";
|
|
||||||
$sql .= " WHERE 1 ";
|
|
||||||
$sql .= " AND fk_paiementfourn = '".$obj->url_id."' ";
|
|
||||||
// $sql .= " AND (bk.numero_compte = '" . $object->code_compta . "' OR bk.numero_compte = '" . $object->code_compta_fournisseur . "') ";
|
|
||||||
$sql .= " AND ( ";
|
|
||||||
if(!empty($object->code_compta) )
|
|
||||||
$sql .= " bk.code_tiers = '" . $object->code_compta . "' ";
|
|
||||||
if(!empty($object->code_compta) && !empty($object->code_compta_fournisseur) )
|
|
||||||
$sql .= " OR ";
|
|
||||||
if(!empty($object->code_compta_fournisseur) )
|
|
||||||
$sql .= " bk.code_tiers = '" . $object->code_compta_fournisseur . "' ";
|
|
||||||
$sql .= " ) ";
|
|
||||||
// echo $sql;
|
|
||||||
// exit;
|
|
||||||
}
|
}
|
||||||
elseif($obj->type =='payment' ){
|
if (! empty($object->code_compta) && ! empty($object->code_compta_fournisseur)) {
|
||||||
$ids[] = $obj->rowid;
|
$sql .= " OR ";
|
||||||
|
|
||||||
$sql= 'SELECT bk.rowid,fac.facnumber , pay.fk_bank ';
|
|
||||||
$sql.= " FROM " . MAIN_DB_PREFIX . "facture fac ";
|
|
||||||
$sql.= " INNER JOIN " . MAIN_DB_PREFIX . "paiement_facture as payfac ON payfac.fk_facture=fac.rowid";
|
|
||||||
$sql.= " INNER JOIN " . MAIN_DB_PREFIX . "paiement as pay ON payfac.fk_paiement=pay.rowid";
|
|
||||||
$sql.= " INNER JOIN " .MAIN_DB_PREFIX . "accounting_bookkeeping as bk ON( bk.fk_doc = fac.rowid) ";
|
|
||||||
$sql .= " WHERE 1 ";
|
|
||||||
$sql .= " AND payfac.fk_paiement = '".$obj->url_id."' ";
|
|
||||||
$sql .= " AND ( ";
|
|
||||||
if(!empty($object->code_compta) )
|
|
||||||
$sql .= " bk.code_tiers = '" . $object->code_compta . "' ";
|
|
||||||
if(!empty($object->code_compta) && !empty($object->code_compta_fournisseur) )
|
|
||||||
$sql .= " OR ";
|
|
||||||
if(!empty($object->code_compta_fournisseur) )
|
|
||||||
$sql .= " bk.code_tiers = '" . $object->code_compta_fournisseur . "' ";
|
|
||||||
$sql .= " ) ";
|
|
||||||
|
|
||||||
// echo $sql;
|
|
||||||
}
|
}
|
||||||
|
if (! empty($object->code_compta_fournisseur)) {
|
||||||
|
$sql .= " bk.thirdparty_code = '" . $object->code_compta_fournisseur . "' ";
|
||||||
|
}
|
||||||
|
$sql .= " ) ";
|
||||||
|
|
||||||
|
$resql2 = $db->query($sql);
|
||||||
|
|
||||||
$resql2 = $db->query ( $sql );
|
|
||||||
if ($resql2) {
|
if ($resql2) {
|
||||||
$num2 = $db->num_rows ( $resql2 );
|
while ( $obj2 = $db->fetch_object($resql2) ) {
|
||||||
$i2 = 0;
|
$ids[$obj2->rowid] = $obj2->rowid;
|
||||||
|
$ids_fact[] = $obj2->fact_id;
|
||||||
while ( $i2 < $num2 ) {
|
|
||||||
$obj2 = $db->fetch_object ( $resql2 );
|
|
||||||
$i2++;
|
|
||||||
$ids[] = $obj2->rowid;
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
// print_r($ids);
|
$this->errors[] = $this->db->lasterror;
|
||||||
// exit;
|
return - 1;
|
||||||
if(count($ids) > 1 ){
|
|
||||||
$result = $this->updatelettrage($ids);
|
|
||||||
|
|
||||||
// var_dump($result);
|
|
||||||
// if( $result < 0 ){
|
|
||||||
// setEventMessages('', $BookKeeping->errors, 'errors' );
|
|
||||||
// $error++;
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
// exit;
|
|
||||||
}
|
}
|
||||||
|
if (count($ids_fact)) {
|
||||||
|
$sql = 'SELECT bk.rowid, facf.ref, facf.ref_supplier ';
|
||||||
|
$sql .= " FROM " . MAIN_DB_PREFIX . "facture_fourn facf ";
|
||||||
|
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "accounting_bookkeeping as bk ON( bk.fk_doc = facf.rowid AND facf.rowid IN (" . implode(',', $ids_fact) . "))";
|
||||||
|
$sql .= " WHERE bk.code_journal IN (SELECT code FROM " . MAIN_DB_PREFIX . "accounting_journal WHERE nature=3) ";
|
||||||
|
$sql .= " AND ( ";
|
||||||
|
if (! empty($object->code_compta)) {
|
||||||
|
$sql .= " bk.thirdparty_code = '" . $object->code_compta . "' ";
|
||||||
|
}
|
||||||
|
if (! empty($object->code_compta) && ! empty($object->code_compta_fournisseur)) {
|
||||||
|
$sql .= " OR ";
|
||||||
|
}
|
||||||
|
if (! empty($object->code_compta_fournisseur)) {
|
||||||
|
$sql .= " bk.thirdparty_code = '" . $object->code_compta_fournisseur . "' ";
|
||||||
|
}
|
||||||
|
$sql .= " ) ";
|
||||||
|
|
||||||
|
$resql2 = $db->query($sql);
|
||||||
|
if ($resql2) {
|
||||||
|
while ( $obj2 = $db->fetch_object($resql2) ) {
|
||||||
|
$ids[$obj2->rowid] = $obj2->rowid;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$this->errors[] = $this->db->lasterror;
|
||||||
|
return - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} elseif ($obj->type == 'payment') {
|
||||||
|
|
||||||
|
$sql = 'SELECT DISTINCT bk.rowid, fac.ref, fac.ref, pay.fk_bank, fac.rowid as fact_id';
|
||||||
|
$sql .= " FROM " . MAIN_DB_PREFIX . "facture fac ";
|
||||||
|
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "paiement_facture as payfac ON payfac.fk_facture=fac.rowid";
|
||||||
|
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "paiement as pay ON payfac.fk_paiement=pay.rowid";
|
||||||
|
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "accounting_bookkeeping as bk ON (bk.fk_doc = pay.fk_bank AND bk.code_journal='" . $obj->code_journal . "')";
|
||||||
|
$sql .= " WHERE payfac.fk_paiement = '" . $obj->url_id . "' ";
|
||||||
|
$sql .= " AND bk.code_journal IN (SELECT code FROM " . MAIN_DB_PREFIX . "accounting_journal WHERE nature=4) ";
|
||||||
|
$sql .= " AND ( ";
|
||||||
|
if (! empty($object->code_compta)) {
|
||||||
|
$sql .= " bk.thirdparty_code = '" . $object->code_compta . "' ";
|
||||||
|
}
|
||||||
|
if (! empty($object->code_compta) && ! empty($object->code_compta_fournisseur)) {
|
||||||
|
$sql .= " OR ";
|
||||||
|
}
|
||||||
|
if (! empty($object->code_compta_fournisseur)) {
|
||||||
|
$sql .= " bk.thirdparty_code = '" . $object->code_compta_fournisseur . "' ";
|
||||||
|
}
|
||||||
|
$sql .= " ) ";
|
||||||
|
|
||||||
|
$resql2 = $db->query($sql);
|
||||||
|
if ($resql2) {
|
||||||
|
while ( $obj2 = $db->fetch_object($resql2) ) {
|
||||||
|
$ids[$obj2->rowid] = $obj2->rowid;
|
||||||
|
$ids_fact[] = $obj2->fact_id;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$this->errors[] = $this->db->lasterror;
|
||||||
|
return - 1;
|
||||||
|
}
|
||||||
|
if (count($ids_fact)) {
|
||||||
|
$sql = 'SELECT bk.rowid, fac.ref, fac.ref_supplier ';
|
||||||
|
$sql .= " FROM " . MAIN_DB_PREFIX . "facture fac ";
|
||||||
|
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "accounting_bookkeeping as bk ON( bk.fk_doc = fac.rowid AND fac.rowid IN (" . implode(',', $ids_fact) . "))";
|
||||||
|
$sql .= " WHERE code_journal IN (SELECT code FROM " . MAIN_DB_PREFIX . "accounting_journal WHERE nature=2) ";
|
||||||
|
$sql .= " AND ( ";
|
||||||
|
if (! empty($object->code_compta)) {
|
||||||
|
$sql .= " bk.thirdparty_code = '" . $object->code_compta . "' ";
|
||||||
|
}
|
||||||
|
if (! empty($object->code_compta) && ! empty($object->code_compta_fournisseur)) {
|
||||||
|
$sql .= " OR ";
|
||||||
|
}
|
||||||
|
if (! empty($object->code_compta_fournisseur)) {
|
||||||
|
$sql .= " bk.thirdparty_code = '" . $object->code_compta_fournisseur . "' ";
|
||||||
|
}
|
||||||
|
$sql .= " ) ";
|
||||||
|
|
||||||
|
$resql2 = $db->query($sql);
|
||||||
|
if ($resql2) {
|
||||||
|
while ( $obj2 = $db->fetch_object($resql2) ) {
|
||||||
|
$ids[$obj2->rowid] = $obj2->rowid;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$this->errors[] = $this->db->lasterror;
|
||||||
|
return - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($ids) > 1) {
|
||||||
|
$result = $this->updatelettrage($ids);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($error) {
|
||||||
|
foreach ( $this->errors as $errmsg ) {
|
||||||
|
dol_syslog(get_class($this) . "::" . __METHOD__ . $errmsg, LOG_ERR);
|
||||||
|
$this->error .= ($this->error ? ', ' . $errmsg : $errmsg);
|
||||||
|
}
|
||||||
|
return - 1 * $error;
|
||||||
|
} else {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
public function updatelettrage($ids, $notrigger=false){
|
*
|
||||||
|
* @param array $ids ids array
|
||||||
|
* @param boolean $notrigger no trigger
|
||||||
|
* @return number
|
||||||
|
*/
|
||||||
|
public function updateLettrage($ids = array(), $notrigger = false) {
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
$sql = "SELECT lettering_code FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping WHERE ";
|
dol_syslog(get_class($this) . "::" . __METHOD__, LOG_DEBUG);
|
||||||
$sql .= " lettering_code != '' GROUP BY lettering_code ORDER BY lettering_code DESC limit 1; ";
|
|
||||||
// echo $sql;
|
$sql = "SELECT DISTINCT lettering_code FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping WHERE ";
|
||||||
$result = $this->db->query ( $sql );
|
$sql .= " lettering_code != '' ORDER BY lettering_code DESC limit 1; ";
|
||||||
|
|
||||||
|
$result = $this->db->query($sql);
|
||||||
if ($result) {
|
if ($result) {
|
||||||
$obj = $this->db->fetch_object ( $result );
|
$obj = $this->db->fetch_object($result);
|
||||||
$lettre = (empty($obj->lettering_code)? 'AAA' : $obj->lettering_code );
|
$lettre = (empty($obj->lettering_code) ? 'AAA' : $obj->lettering_code);
|
||||||
if(!empty($obj->lettering_code))
|
if (! empty($obj->lettering_code))
|
||||||
$lettre++;
|
$lettre ++;
|
||||||
|
} else {
|
||||||
|
$this->errors[] = 'Error' . $this->db->lasterror();
|
||||||
|
;
|
||||||
|
$error ++;
|
||||||
}
|
}
|
||||||
else{
|
|
||||||
$this->errors[] = 'Error'.$this->db->lasterror();;
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
// var_dump(__line__, $error);
|
|
||||||
|
|
||||||
$sql = "SELECT SUM(ABS(debit)) as deb, SUM(ABS(credit)) as cred FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping WHERE ";
|
$sql = "SELECT SUM(ABS(debit)) as deb, SUM(ABS(credit)) as cred FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping WHERE ";
|
||||||
$sql .= " rowid IN (".implode(',', $ids).") ";
|
$sql .= " rowid IN (" . implode(',', $ids) . ") ";
|
||||||
$result = $this->db->query ( $sql );
|
$result = $this->db->query($sql);
|
||||||
if ($result) {
|
if ($result) {
|
||||||
$obj = $this->db->fetch_object ( $result );
|
$obj = $this->db->fetch_object($result);
|
||||||
// print_r($obj);
|
if (! (round(abs($obj->deb), 2) === round(abs($obj->cred), 2))) {
|
||||||
if( !(round(abs($obj->deb),2) === round(abs($obj->cred),2)) ){
|
$this->errors[] = 'Total not exacts ' . round(abs($obj->deb), 2) . ' vs ' . round(abs($obj->cred), 2);
|
||||||
// echo $sql;
|
$error ++;
|
||||||
// print_r($obj);
|
|
||||||
$this->errors[] = 'Total not exacts '.round(abs($obj->deb),2).' vs '. round(abs($obj->cred),2);
|
|
||||||
$error++;
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
$this->errors[] = 'Erreur sql' . $this->db->lasterror();
|
||||||
|
;
|
||||||
|
$error ++;
|
||||||
}
|
}
|
||||||
else{
|
|
||||||
$this->errors[] = 'Erreur sql'.$this->db->lasterror();;
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Update request
|
// Update request
|
||||||
|
|
||||||
$now = dol_now();
|
$now = dol_now();
|
||||||
|
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."accounting_bookkeeping SET";
|
$sql = "UPDATE " . MAIN_DB_PREFIX . "accounting_bookkeeping SET";
|
||||||
$sql.= " lettering_code='".$lettre."'";
|
$sql .= " lettering_code='" . $lettre . "'";
|
||||||
$sql.= " , date_lettering = " .$now ; // todo correct date it's false
|
$sql .= " , date_lettering = '" . $this->db->idate($now) . "'"; // todo correct date it's false
|
||||||
$sql.= " WHERE rowid IN (".implode(',', $ids).") ";
|
$sql .= " WHERE rowid IN (" . implode(',', $ids) . ") ";
|
||||||
// echo $sql ;
|
|
||||||
//
|
|
||||||
// var_dump(__line__, $error);
|
|
||||||
// print_r($this->errors);
|
|
||||||
// exit;
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::update sql=".$sql, LOG_DEBUG);
|
dol_syslog(get_class($this) . "::update sql=" . $sql, LOG_DEBUG);
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
if (! $resql) {
|
||||||
|
$error ++;
|
||||||
|
$this->errors[] = "Error " . $this->db->lasterror();
|
||||||
|
}
|
||||||
|
|
||||||
if (! $error)
|
if (! $error) {
|
||||||
{
|
if (! $notrigger) {
|
||||||
if (! $notrigger)
|
// Uncomment this and change MYOBJECT to your own tag if you
|
||||||
{
|
// want this action calls a trigger.
|
||||||
// Uncomment this and change MYOBJECT to your own tag if you
|
|
||||||
// want this action calls a trigger.
|
|
||||||
|
|
||||||
//// Call triggers
|
// // Call triggers
|
||||||
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
// include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||||
//$interface=new Interfaces($this->db);
|
// $interface=new Interfaces($this->db);
|
||||||
//$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf);
|
// $result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf);
|
||||||
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
// if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||||
//// End call triggers
|
// // End call triggers
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// var_dump(__line__, $error);
|
}
|
||||||
// Commit or rollback
|
// Commit or rollback
|
||||||
if ($error)
|
if ($error) {
|
||||||
{
|
foreach ( $this->errors as $errmsg ) {
|
||||||
// foreach($this->errors as $errmsg)
|
dol_syslog(get_class($this) . "::update " . $errmsg, LOG_ERR);
|
||||||
// {
|
$this->error .= ($this->error ? ', ' . $errmsg : $errmsg);
|
||||||
// dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR);
|
|
||||||
// $this->error.=($this->error?', '.$errmsg:$errmsg);
|
|
||||||
// }
|
|
||||||
$this->db->rollback();
|
|
||||||
// echo $this->error;
|
|
||||||
// var_dump(__line__, $error);
|
|
||||||
return -1*$error;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$this->db->commit();
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
$this->db->rollback();
|
||||||
|
return - 1 * $error;
|
||||||
|
} else {
|
||||||
|
$this->db->commit();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -32,6 +32,8 @@ require_once DOL_DOCUMENT_ROOT . '/core/class/html.formaccounting.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/product/class/product.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/product/class/product.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php';
|
||||||
|
|
||||||
// Langs
|
// Langs
|
||||||
$langs->load("bills");
|
$langs->load("bills");
|
||||||
@ -51,6 +53,9 @@ $search_desc = GETPOST('search_desc', 'alpha');
|
|||||||
$search_amount = GETPOST('search_amount', 'alpha');
|
$search_amount = GETPOST('search_amount', 'alpha');
|
||||||
$search_account = GETPOST('search_account', 'alpha');
|
$search_account = GETPOST('search_account', 'alpha');
|
||||||
$search_vat = GETPOST('search_vat', 'alpha');
|
$search_vat = GETPOST('search_vat', 'alpha');
|
||||||
|
$search_day=GETPOST("search_day","int");
|
||||||
|
$search_month=GETPOST("search_month","int");
|
||||||
|
$search_year=GETPOST("search_year","int");
|
||||||
$search_country = GETPOST('search_country', 'alpha');
|
$search_country = GETPOST('search_country', 'alpha');
|
||||||
$search_tvaintra = GETPOST('search_tvaintra', 'alpha');
|
$search_tvaintra = GETPOST('search_tvaintra', 'alpha');
|
||||||
|
|
||||||
@ -95,6 +100,9 @@ if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x',
|
|||||||
$search_amount = '';
|
$search_amount = '';
|
||||||
$search_account = '';
|
$search_account = '';
|
||||||
$search_vat = '';
|
$search_vat = '';
|
||||||
|
$search_day = '';
|
||||||
|
$search_month = '';
|
||||||
|
$search_year = '';
|
||||||
$search_country = '';
|
$search_country = '';
|
||||||
$search_tvaintra = '';
|
$search_tvaintra = '';
|
||||||
}
|
}
|
||||||
@ -131,6 +139,7 @@ if (is_array($changeaccount) && count($changeaccount) > 0) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
|
$formother = new FormOther($db);
|
||||||
|
|
||||||
llxHeader('', $langs->trans("CustomersVentilation") . ' - ' . $langs->trans("Dispatched"));
|
llxHeader('', $langs->trans("CustomersVentilation") . ' - ' . $langs->trans("Dispatched"));
|
||||||
|
|
||||||
@ -197,6 +206,19 @@ if (strlen(trim($search_account))) {
|
|||||||
if (strlen(trim($search_vat))) {
|
if (strlen(trim($search_vat))) {
|
||||||
$sql .= natural_search("fd.tva_tx", $search_vat);
|
$sql .= natural_search("fd.tva_tx", $search_vat);
|
||||||
}
|
}
|
||||||
|
if ($search_month > 0)
|
||||||
|
{
|
||||||
|
if ($search_year > 0 && empty($search_day))
|
||||||
|
$sql.= " AND f.datef BETWEEN '".$db->idate(dol_get_first_day($search_year,$search_month,false))."' AND '".$db->idate(dol_get_last_day($search_year,$search_month,false))."'";
|
||||||
|
else if ($search_year > 0 && ! empty($search_day))
|
||||||
|
$sql.= " AND f.datef BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $search_month, $search_day, $search_year))."' AND '".$db->idate(dol_mktime(23, 59, 59, $search_month, $search_day, $search_year))."'";
|
||||||
|
else
|
||||||
|
$sql.= " AND date_format(f.datef, '%m') = '".$db->escape($search_month)."'";
|
||||||
|
}
|
||||||
|
else if ($search_year > 0)
|
||||||
|
{
|
||||||
|
$sql.= " AND f.datef BETWEEN '".$db->idate(dol_get_first_day($search_year,1,false))."' AND '".$db->idate(dol_get_last_day($search_year,12,false))."'";
|
||||||
|
}
|
||||||
if (strlen(trim($search_country))) {
|
if (strlen(trim($search_country))) {
|
||||||
$sql .= natural_search("co.label", $search_country);
|
$sql .= natural_search("co.label", $search_country);
|
||||||
}
|
}
|
||||||
@ -237,6 +259,9 @@ if ($result) {
|
|||||||
$param .= "&search_account=" . $search_account;
|
$param .= "&search_account=" . $search_account;
|
||||||
if ($search_vat)
|
if ($search_vat)
|
||||||
$param .= "&search_vat=" . $search_vat;
|
$param .= "&search_vat=" . $search_vat;
|
||||||
|
if ($search_day) $param.='&search_day='.urlencode($search_day);
|
||||||
|
if ($search_month) $param.='&search_month='.urlencode($search_month);
|
||||||
|
if ($search_year) $param.='&search_year='.urlencode($search_year);
|
||||||
if ($search_country)
|
if ($search_country)
|
||||||
$param .= "&search_country=" . $search_country;
|
$param .= "&search_country=" . $search_country;
|
||||||
if ($search_tvaintra)
|
if ($search_tvaintra)
|
||||||
@ -267,7 +292,11 @@ if ($result) {
|
|||||||
print '<tr class="liste_titre_filter">';
|
print '<tr class="liste_titre_filter">';
|
||||||
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_lineid" value="' . dol_escape_htmltag($search_lineid) . '""></td>';
|
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_lineid" value="' . dol_escape_htmltag($search_lineid) . '""></td>';
|
||||||
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_invoice" value="' . dol_escape_htmltag($search_invoice) . '"></td>';
|
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_invoice" value="' . dol_escape_htmltag($search_invoice) . '"></td>';
|
||||||
print '<td class="liste_titre"></td>';
|
print '<td class="liste_titre center">';
|
||||||
|
if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="search_day" value="'.$search_day.'">';
|
||||||
|
print '<input class="flat" type="text" size="1" maxlength="2" name="search_month" value="'.$search_month.'">';
|
||||||
|
$formother->select_year($search_year,'search_year',1, 20, 5);
|
||||||
|
print '</td>';
|
||||||
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_ref" value="' . dol_escape_htmltag($search_ref) . '"></td>';
|
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_ref" value="' . dol_escape_htmltag($search_ref) . '"></td>';
|
||||||
//print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="' . dol_escape_htmltag($search_label) . '"></td>';
|
//print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="' . dol_escape_htmltag($search_label) . '"></td>';
|
||||||
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_desc" value="' . dol_escape_htmltag($search_desc) . '"></td>';
|
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_desc" value="' . dol_escape_htmltag($search_desc) . '"></td>';
|
||||||
|
|||||||
@ -91,6 +91,9 @@ if ($user->societe_id > 0)
|
|||||||
if (! $user->rights->accounting->bind->write)
|
if (! $user->rights->accounting->bind->write)
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
|
|
||||||
|
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
||||||
|
$hookmanager->initHooks(array('accountancycustomerlist'));
|
||||||
|
|
||||||
$formaccounting = new FormAccounting($db);
|
$formaccounting = new FormAccounting($db);
|
||||||
$accounting = new AccountingAccount($db);
|
$accounting = new AccountingAccount($db);
|
||||||
$aarowid_s = $accounting->fetch('', $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT, 1);
|
$aarowid_s = $accounting->fetch('', $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT, 1);
|
||||||
@ -104,28 +107,36 @@ $aarowid_p = $accounting->fetch('', $conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOU
|
|||||||
if (GETPOST('cancel','alpha')) { $action='list'; $massaction=''; }
|
if (GETPOST('cancel','alpha')) { $action='list'; $massaction=''; }
|
||||||
if (! GETPOST('confirmmassaction','alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction=''; }
|
if (! GETPOST('confirmmassaction','alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction=''; }
|
||||||
|
|
||||||
// Purge search criteria
|
$parameters=array();
|
||||||
if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') || GETPOST('button_removefilter','alpha')) // All test are required to be compatible with all browsers
|
$reshook=$hookmanager->executeHooks('doActions',$parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
|
||||||
|
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||||
|
|
||||||
|
if (empty($reshook))
|
||||||
{
|
{
|
||||||
$search_lineid = '';
|
// Purge search criteria
|
||||||
$search_ref = '';
|
if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') || GETPOST('button_removefilter','alpha')) // All test are required to be compatible with all browsers
|
||||||
$search_invoice = '';
|
{
|
||||||
$search_label = '';
|
$search_lineid = '';
|
||||||
$search_desc = '';
|
$search_ref = '';
|
||||||
$search_amount = '';
|
$search_invoice = '';
|
||||||
$search_account = '';
|
$search_label = '';
|
||||||
$search_vat = '';
|
$search_desc = '';
|
||||||
$search_month = '';
|
$search_amount = '';
|
||||||
$search_year = '';
|
$search_account = '';
|
||||||
|
$search_vat = '';
|
||||||
|
$search_day = '';
|
||||||
|
$search_month = '';
|
||||||
|
$search_year = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mass actions
|
||||||
|
$objectclass='AccountingAccount';
|
||||||
|
$permtoread = $user->rights->accounting->read;
|
||||||
|
$permtodelete = $user->rights->accounting->delete;
|
||||||
|
$uploaddir = $conf->accounting->dir_output;
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mass actions
|
|
||||||
$objectclass='Skeleton';
|
|
||||||
$objectlabel='Skeleton';
|
|
||||||
$permtoread = $user->rights->accounting->read;
|
|
||||||
$permtodelete = $user->rights->accounting->delete;
|
|
||||||
$uploaddir = $conf->accounting->dir_output;
|
|
||||||
include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
|
|
||||||
|
|
||||||
if ($massaction == 'ventil') {
|
if ($massaction == 'ventil') {
|
||||||
$msg='';
|
$msg='';
|
||||||
@ -191,6 +202,9 @@ $sql = "SELECT f.facnumber, f.rowid as facid, f.datef, f.type as ftype,";
|
|||||||
$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,";
|
||||||
$sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_sell as code_sell, p.tva_tx as tva_tx_prod,";
|
$sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_sell as code_sell, p.tva_tx as tva_tx_prod,";
|
||||||
$sql .= " aa.rowid as aarowid";
|
$sql .= " aa.rowid as aarowid";
|
||||||
|
$parameters=array();
|
||||||
|
$reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook
|
||||||
|
$sql.=$hookmanager->resPrint;
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "facture as f";
|
$sql .= " FROM " . MAIN_DB_PREFIX . "facture as f";
|
||||||
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "facturedet as l ON f.rowid = l.fk_facture";
|
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "facturedet as l ON f.rowid = l.fk_facture";
|
||||||
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product as p ON p.rowid = l.fk_product";
|
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product as p ON p.rowid = l.fk_product";
|
||||||
@ -245,6 +259,11 @@ if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
|
|||||||
}
|
}
|
||||||
$sql .= " AND f.entity IN (" . getEntity('facture', 0) . ")"; // We don't share object for accountancy
|
$sql .= " AND f.entity IN (" . getEntity('facture', 0) . ")"; // We don't share object for accountancy
|
||||||
|
|
||||||
|
// Add where from hooks
|
||||||
|
$parameters=array();
|
||||||
|
$reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook
|
||||||
|
$sql.=$hookmanager->resPrint;
|
||||||
|
|
||||||
$sql .= $db->order($sortfield, $sortorder);
|
$sql .= $db->order($sortfield, $sortorder);
|
||||||
|
|
||||||
// Count total nb of records
|
// Count total nb of records
|
||||||
@ -283,8 +302,8 @@ if ($result) {
|
|||||||
//'presend'=>$langs->trans("SendByMail"),
|
//'presend'=>$langs->trans("SendByMail"),
|
||||||
//'builddoc'=>$langs->trans("PDFMerge"),
|
//'builddoc'=>$langs->trans("PDFMerge"),
|
||||||
);
|
);
|
||||||
//if ($user->rights->mymodule->supprimer) $arrayofmassactions['delete']=$langs->trans("Delete");
|
//if ($user->rights->mymodule->supprimer) $arrayofmassactions['predelete']=$langs->trans("Delete");
|
||||||
//if ($massaction == 'presend') $arrayofmassactions=array();
|
//if (in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array();
|
||||||
$massactionbutton=$form->selectMassAction('ventil', $arrayofmassactions, 1);
|
$massactionbutton=$form->selectMassAction('ventil', $arrayofmassactions, 1);
|
||||||
|
|
||||||
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="post">' . "\n";
|
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="post">' . "\n";
|
||||||
@ -300,6 +319,12 @@ if ($result) {
|
|||||||
|
|
||||||
print $langs->trans("DescVentilTodoCustomer") . '</br><br>';
|
print $langs->trans("DescVentilTodoCustomer") . '</br><br>';
|
||||||
|
|
||||||
|
/*$topicmail="Information";
|
||||||
|
$modelmail="project";
|
||||||
|
$objecttmp=new Project($db);
|
||||||
|
$trackid='prj'.$object->id;
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php';*/
|
||||||
|
|
||||||
if ($msg) print $msg.'<br>';
|
if ($msg) print $msg.'<br>';
|
||||||
|
|
||||||
$moreforfilter = '';
|
$moreforfilter = '';
|
||||||
|
|||||||
@ -31,6 +31,8 @@ require_once DOL_DOCUMENT_ROOT . '/core/class/html.formaccounting.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT . '/expensereport/class/expensereport.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/expensereport/class/expensereport.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php';
|
||||||
|
|
||||||
// Langs
|
// Langs
|
||||||
$langs->load("compta");
|
$langs->load("compta");
|
||||||
@ -50,6 +52,9 @@ $search_desc = GETPOST('search_desc', 'alpha');
|
|||||||
$search_amount = GETPOST('search_amount', 'alpha');
|
$search_amount = GETPOST('search_amount', 'alpha');
|
||||||
$search_account = GETPOST('search_account', 'alpha');
|
$search_account = GETPOST('search_account', 'alpha');
|
||||||
$search_vat = GETPOST('search_vat', 'alpha');
|
$search_vat = GETPOST('search_vat', 'alpha');
|
||||||
|
$search_day=GETPOST("search_day","int");
|
||||||
|
$search_month=GETPOST("search_month","int");
|
||||||
|
$search_year=GETPOST("search_year","int");
|
||||||
|
|
||||||
// Load variable for pagination
|
// Load variable for pagination
|
||||||
$limit = GETPOST('limit','int')?GETPOST('limit', 'int'):(empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION)?$conf->liste_limit:$conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION);
|
$limit = GETPOST('limit','int')?GETPOST('limit', 'int'):(empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION)?$conf->liste_limit:$conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION);
|
||||||
@ -90,6 +95,9 @@ if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x',
|
|||||||
$search_amount = '';
|
$search_amount = '';
|
||||||
$search_account = '';
|
$search_account = '';
|
||||||
$search_vat = '';
|
$search_vat = '';
|
||||||
|
$search_day = '';
|
||||||
|
$search_month = '';
|
||||||
|
$search_year = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_array($changeaccount) && count($changeaccount) > 0) {
|
if (is_array($changeaccount) && count($changeaccount) > 0) {
|
||||||
@ -123,6 +131,9 @@ if (is_array($changeaccount) && count($changeaccount) > 0) {
|
|||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
$form = new Form($db);
|
||||||
|
$formother = new FormOther($db);
|
||||||
|
|
||||||
llxHeader('', $langs->trans("ExpenseReportsVentilation") . ' - ' . $langs->trans("Dispatched"));
|
llxHeader('', $langs->trans("ExpenseReportsVentilation") . ' - ' . $langs->trans("Dispatched"));
|
||||||
|
|
||||||
print '<script type="text/javascript">
|
print '<script type="text/javascript">
|
||||||
@ -173,6 +184,19 @@ if (strlen(trim($search_account))) {
|
|||||||
if (strlen(trim($search_vat))) {
|
if (strlen(trim($search_vat))) {
|
||||||
$sql .= " AND (erd.tva_tx like '" . $search_vat . "%')";
|
$sql .= " AND (erd.tva_tx like '" . $search_vat . "%')";
|
||||||
}
|
}
|
||||||
|
if ($search_month > 0)
|
||||||
|
{
|
||||||
|
if ($search_year > 0 && empty($search_day))
|
||||||
|
$sql.= " AND erd.date BETWEEN '".$db->idate(dol_get_first_day($search_year,$search_month,false))."' AND '".$db->idate(dol_get_last_day($search_year,$search_month,false))."'";
|
||||||
|
else if ($search_year > 0 && ! empty($search_day))
|
||||||
|
$sql.= " AND erd.date BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $search_month, $search_day, $search_year))."' AND '".$db->idate(dol_mktime(23, 59, 59, $search_month, $search_day, $search_year))."'";
|
||||||
|
else
|
||||||
|
$sql.= " AND date_format(erd.date, '%m') = '".$db->escape($search_month)."'";
|
||||||
|
}
|
||||||
|
else if ($search_year > 0)
|
||||||
|
{
|
||||||
|
$sql.= " AND erd.date BETWEEN '".$db->idate(dol_get_first_day($search_year,1,false))."' AND '".$db->idate(dol_get_last_day($search_year,12,false))."'";
|
||||||
|
}
|
||||||
$sql .= " AND er.entity IN (" . getEntity('expensereport', 0) . ")"; // We don't share object for accountancy
|
$sql .= " AND er.entity IN (" . getEntity('expensereport', 0) . ")"; // We don't share object for accountancy
|
||||||
|
|
||||||
$sql .= $db->order($sortfield, $sortorder);
|
$sql .= $db->order($sortfield, $sortorder);
|
||||||
@ -207,6 +231,9 @@ if ($result) {
|
|||||||
$param .= "&search_account=" . $search_account;
|
$param .= "&search_account=" . $search_account;
|
||||||
if ($search_vat)
|
if ($search_vat)
|
||||||
$param .= "&search_vat=" . $search_vat;
|
$param .= "&search_vat=" . $search_vat;
|
||||||
|
if ($search_day) $param.='&search_day='.urlencode($search_day);
|
||||||
|
if ($search_month) $param.='&search_month='.urlencode($search_month);
|
||||||
|
if ($search_year) $param.='&search_year='.urlencode($search_year);
|
||||||
if ($search_country)
|
if ($search_country)
|
||||||
$param .= "&search_country=" . $search_country;
|
$param .= "&search_country=" . $search_country;
|
||||||
if ($search_tvaintra)
|
if ($search_tvaintra)
|
||||||
@ -237,7 +264,11 @@ if ($result) {
|
|||||||
print '<tr class="liste_titre_filter">';
|
print '<tr class="liste_titre_filter">';
|
||||||
print '<td class="liste_titre"></td>';
|
print '<td class="liste_titre"></td>';
|
||||||
print '<td><input type="text" class="flat maxwidth50" name="search_expensereport" value="' . dol_escape_htmltag($search_expensereport) . '"></td>';
|
print '<td><input type="text" class="flat maxwidth50" name="search_expensereport" value="' . dol_escape_htmltag($search_expensereport) . '"></td>';
|
||||||
print '<td class="liste_titre" align="right"></td>';
|
print '<td class="liste_titre center">';
|
||||||
|
if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="search_day" value="'.$search_day.'">';
|
||||||
|
print '<input class="flat" type="text" size="1" maxlength="2" name="search_month" value="'.$search_month.'">';
|
||||||
|
$formother->select_year($search_year,'search_year',1, 20, 5);
|
||||||
|
print '</td>';
|
||||||
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="' . dol_escape_htmltag($search_label) . '"></td>';
|
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="' . dol_escape_htmltag($search_label) . '"></td>';
|
||||||
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_desc" value="' . dol_escape_htmltag($search_desc) . '"></td>';
|
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_desc" value="' . dol_escape_htmltag($search_desc) . '"></td>';
|
||||||
print '<td class="liste_titre" align="right"><input type="text" class="flat maxwidth50" name="search_amount" value="' . dol_escape_htmltag($search_amount) . '"></td>';
|
print '<td class="liste_titre" align="right"><input type="text" class="flat maxwidth50" name="search_amount" value="' . dol_escape_htmltag($search_amount) . '"></td>';
|
||||||
|
|||||||
@ -109,6 +109,7 @@ if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x',
|
|||||||
$search_amount = '';
|
$search_amount = '';
|
||||||
$search_account = '';
|
$search_account = '';
|
||||||
$search_vat = '';
|
$search_vat = '';
|
||||||
|
$search_day = '';
|
||||||
$search_month = '';
|
$search_month = '';
|
||||||
$search_year = '';
|
$search_year = '';
|
||||||
}
|
}
|
||||||
@ -265,8 +266,8 @@ if ($result) {
|
|||||||
//'presend'=>$langs->trans("SendByMail"),
|
//'presend'=>$langs->trans("SendByMail"),
|
||||||
//'builddoc'=>$langs->trans("PDFMerge"),
|
//'builddoc'=>$langs->trans("PDFMerge"),
|
||||||
);
|
);
|
||||||
//if ($user->rights->mymodule->supprimer) $arrayofmassactions['delete']=$langs->trans("Delete");
|
//if ($user->rights->mymodule->supprimer) $arrayofmassactions['predelete']=$langs->trans("Delete");
|
||||||
//if ($massaction == 'presend') $arrayofmassactions=array();
|
//if (in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array();
|
||||||
$massactionbutton=$form->selectMassAction('ventil', $arrayofmassactions, 1);
|
$massactionbutton=$form->selectMassAction('ventil', $arrayofmassactions, 1);
|
||||||
|
|
||||||
|
|
||||||
@ -283,6 +284,12 @@ if ($result) {
|
|||||||
|
|
||||||
print $langs->trans("DescVentilTodoExpenseReport") . '</br><br>';
|
print $langs->trans("DescVentilTodoExpenseReport") . '</br><br>';
|
||||||
|
|
||||||
|
/*$topicmail="Information";
|
||||||
|
$modelmail="project";
|
||||||
|
$objecttmp=new Project($db);
|
||||||
|
$trackid='prj'.$object->id;
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php';*/
|
||||||
|
|
||||||
if ($msg) print $msg.'<br>';
|
if ($msg) print $msg.'<br>';
|
||||||
|
|
||||||
$moreforfilter = '';
|
$moreforfilter = '';
|
||||||
|
|||||||
@ -66,7 +66,7 @@ $step = 0;
|
|||||||
print $langs->trans("AccountancyAreaDescIntro")."<br>\n";
|
print $langs->trans("AccountancyAreaDescIntro")."<br>\n";
|
||||||
print "<br>\n";print "<br>\n";
|
print "<br>\n";print "<br>\n";
|
||||||
|
|
||||||
print_fiche_titre($langs->trans("AccountancyAreaDescActionOnce"), '', 'object_calendar')."<br>\n";
|
print_fiche_titre('<span class="fa fa-calendar-check-o"></span> '.$langs->trans("AccountancyAreaDescActionOnce"), '', '')."<br>\n";
|
||||||
print '<hr>';
|
print '<hr>';
|
||||||
print "<br>\n";
|
print "<br>\n";
|
||||||
|
|
||||||
@ -142,7 +142,7 @@ print '<br>';
|
|||||||
|
|
||||||
|
|
||||||
print "<br>\n";
|
print "<br>\n";
|
||||||
print_fiche_titre($langs->trans("AccountancyAreaDescActionFreq"), '', 'object_calendarweek');
|
print_fiche_titre('<span class="fa fa-calendar"></span> '.$langs->trans("AccountancyAreaDescActionFreq"), '', '');
|
||||||
print '<hr>';
|
print '<hr>';
|
||||||
print "<br>\n";
|
print "<br>\n";
|
||||||
$step = 0;
|
$step = 0;
|
||||||
|
|||||||
@ -32,6 +32,8 @@ require_once DOL_DOCUMENT_ROOT . '/fourn/class/fournisseur.facture.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT . '/product/class/product.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/product/class/product.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php';
|
||||||
|
|
||||||
// Langs
|
// Langs
|
||||||
$langs->load("compta");
|
$langs->load("compta");
|
||||||
@ -52,6 +54,9 @@ $search_desc = GETPOST('search_desc', 'alpha');
|
|||||||
$search_amount = GETPOST('search_amount', 'alpha');
|
$search_amount = GETPOST('search_amount', 'alpha');
|
||||||
$search_account = GETPOST('search_account', 'alpha');
|
$search_account = GETPOST('search_account', 'alpha');
|
||||||
$search_vat = GETPOST('search_vat', 'alpha');
|
$search_vat = GETPOST('search_vat', 'alpha');
|
||||||
|
$search_day=GETPOST("search_day","int");
|
||||||
|
$search_month=GETPOST("search_month","int");
|
||||||
|
$search_year=GETPOST("search_year","int");
|
||||||
$search_country = GETPOST('search_country', 'alpha');
|
$search_country = GETPOST('search_country', 'alpha');
|
||||||
$search_tvaintra = GETPOST('search_tvaintra', 'alpha');
|
$search_tvaintra = GETPOST('search_tvaintra', 'alpha');
|
||||||
|
|
||||||
@ -96,6 +101,9 @@ if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x',
|
|||||||
$search_amount = '';
|
$search_amount = '';
|
||||||
$search_account = '';
|
$search_account = '';
|
||||||
$search_vat = '';
|
$search_vat = '';
|
||||||
|
$search_day = '';
|
||||||
|
$search_month = '';
|
||||||
|
$search_year = '';
|
||||||
$search_country = '';
|
$search_country = '';
|
||||||
$search_tvaintra = '';
|
$search_tvaintra = '';
|
||||||
}
|
}
|
||||||
@ -131,6 +139,9 @@ if (is_array($changeaccount) && count($changeaccount) > 0) {
|
|||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
$form = new Form($db);
|
||||||
|
$formother = new FormOther($db);
|
||||||
|
|
||||||
llxHeader('', $langs->trans("SuppliersVentilation") . ' - ' . $langs->trans("Dispatched"));
|
llxHeader('', $langs->trans("SuppliersVentilation") . ' - ' . $langs->trans("Dispatched"));
|
||||||
|
|
||||||
print '<script type="text/javascript">
|
print '<script type="text/javascript">
|
||||||
@ -189,6 +200,19 @@ if (strlen(trim($search_account))) {
|
|||||||
if (strlen(trim($search_vat))) {
|
if (strlen(trim($search_vat))) {
|
||||||
$sql .= natural_search("l.tva_tx", $search_vat, 1);
|
$sql .= natural_search("l.tva_tx", $search_vat, 1);
|
||||||
}
|
}
|
||||||
|
if ($search_month > 0)
|
||||||
|
{
|
||||||
|
if ($search_year > 0 && empty($search_day))
|
||||||
|
$sql.= " AND f.datef BETWEEN '".$db->idate(dol_get_first_day($search_year,$search_month,false))."' AND '".$db->idate(dol_get_last_day($search_year,$search_month,false))."'";
|
||||||
|
else if ($search_year > 0 && ! empty($search_day))
|
||||||
|
$sql.= " AND f.datef BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $search_month, $search_day, $search_year))."' AND '".$db->idate(dol_mktime(23, 59, 59, $search_month, $search_day, $search_year))."'";
|
||||||
|
else
|
||||||
|
$sql.= " AND date_format(f.datef, '%m') = '".$db->escape($search_month)."'";
|
||||||
|
}
|
||||||
|
else if ($search_year > 0)
|
||||||
|
{
|
||||||
|
$sql.= " AND f.datef BETWEEN '".$db->idate(dol_get_first_day($search_year,1,false))."' AND '".$db->idate(dol_get_last_day($search_year,12,false))."'";
|
||||||
|
}
|
||||||
if (strlen(trim($search_country))) {
|
if (strlen(trim($search_country))) {
|
||||||
$sql .= " AND (co.label like'" . $search_country . "%')";
|
$sql .= " AND (co.label like'" . $search_country . "%')";
|
||||||
}
|
}
|
||||||
@ -231,6 +255,9 @@ if ($result) {
|
|||||||
$param .= "&search_account=" . $search_account;
|
$param .= "&search_account=" . $search_account;
|
||||||
if ($search_vat)
|
if ($search_vat)
|
||||||
$param .= "&search_vat=" . $search_vat;
|
$param .= "&search_vat=" . $search_vat;
|
||||||
|
if ($search_day) $param.='&search_day='.urlencode($search_day);
|
||||||
|
if ($search_month) $param.='&search_month='.urlencode($search_month);
|
||||||
|
if ($search_year) $param.='&search_year='.urlencode($search_year);
|
||||||
if ($search_country)
|
if ($search_country)
|
||||||
$param .= "&search_country=" . $search_country;
|
$param .= "&search_country=" . $search_country;
|
||||||
if ($search_tvaintra)
|
if ($search_tvaintra)
|
||||||
@ -262,7 +289,11 @@ if ($result) {
|
|||||||
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_lineid" value="' . dol_escape_htmltag($search_lineid) . '""></td>';
|
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_lineid" value="' . dol_escape_htmltag($search_lineid) . '""></td>';
|
||||||
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_invoice" value="' . dol_escape_htmltag($search_invoice) . '"></td>';
|
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_invoice" value="' . dol_escape_htmltag($search_invoice) . '"></td>';
|
||||||
print '<td class="liste_titre"></td>';
|
print '<td class="liste_titre"></td>';
|
||||||
print '<td class="liste_titre"></td>';
|
print '<td class="liste_titre center">';
|
||||||
|
if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="search_day" value="'.$search_day.'">';
|
||||||
|
print '<input class="flat" type="text" size="1" maxlength="2" name="search_month" value="'.$search_month.'">';
|
||||||
|
$formother->select_year($search_year,'search_year',1, 20, 5);
|
||||||
|
print '</td>';
|
||||||
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_ref" value="' . dol_escape_htmltag($search_ref) . '"></td>';
|
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_ref" value="' . dol_escape_htmltag($search_ref) . '"></td>';
|
||||||
//print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="' . dol_escape_htmltag($search_label) . '"></td>';
|
//print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="' . dol_escape_htmltag($search_label) . '"></td>';
|
||||||
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_desc" value="' . dol_escape_htmltag($search_desc) . '"></td>';
|
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_desc" value="' . dol_escape_htmltag($search_desc) . '"></td>';
|
||||||
|
|||||||
@ -91,6 +91,9 @@ if ($user->societe_id > 0)
|
|||||||
if (! $user->rights->accounting->bind->write)
|
if (! $user->rights->accounting->bind->write)
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
|
|
||||||
|
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
||||||
|
$hookmanager->initHooks(array('accountancysupplierlist'));
|
||||||
|
|
||||||
$formaccounting = new FormAccounting($db);
|
$formaccounting = new FormAccounting($db);
|
||||||
$accounting = new AccountingAccount($db);
|
$accounting = new AccountingAccount($db);
|
||||||
// TODO: we should need to check if result is a really exist accountaccount rowid.....
|
// TODO: we should need to check if result is a really exist accountaccount rowid.....
|
||||||
@ -105,28 +108,35 @@ $aarowid_p = $accounting->fetch('', $conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUN
|
|||||||
if (GETPOST('cancel','alpha')) { $action='list'; $massaction=''; }
|
if (GETPOST('cancel','alpha')) { $action='list'; $massaction=''; }
|
||||||
if (! GETPOST('confirmmassaction','alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction=''; }
|
if (! GETPOST('confirmmassaction','alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction=''; }
|
||||||
|
|
||||||
// Purge search criteria
|
$parameters=array();
|
||||||
if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') || GETPOST('button_removefilter','alpha')) // All test are required to be compatible with all browsers
|
$reshook=$hookmanager->executeHooks('doActions',$parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
|
||||||
{
|
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||||
$search_lineid = '';
|
|
||||||
$search_ref = '';
|
|
||||||
$search_invoice = '';
|
|
||||||
$search_label = '';
|
|
||||||
$search_desc = '';
|
|
||||||
$search_amount = '';
|
|
||||||
$search_account = '';
|
|
||||||
$search_vat = '';
|
|
||||||
$search_month = '';
|
|
||||||
$search_year = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mass actions
|
if (empty($reshook))
|
||||||
$objectclass='Skeleton';
|
{
|
||||||
$objectlabel='Skeleton';
|
// Purge search criteria
|
||||||
$permtoread = $user->rights->accounting->read;
|
if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') || GETPOST('button_removefilter','alpha')) // All test are required to be compatible with all browsers
|
||||||
$permtodelete = $user->rights->accounting->delete;
|
{
|
||||||
$uploaddir = $conf->accounting->dir_output;
|
$search_lineid = '';
|
||||||
include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
|
$search_ref = '';
|
||||||
|
$search_invoice = '';
|
||||||
|
$search_label = '';
|
||||||
|
$search_desc = '';
|
||||||
|
$search_amount = '';
|
||||||
|
$search_account = '';
|
||||||
|
$search_vat = '';
|
||||||
|
$search_day = '';
|
||||||
|
$search_month = '';
|
||||||
|
$search_year = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mass actions
|
||||||
|
$objectclass='AccountingAccount';
|
||||||
|
$permtoread = $user->rights->accounting->read;
|
||||||
|
$permtodelete = $user->rights->accounting->delete;
|
||||||
|
$uploaddir = $conf->accounting->dir_output;
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
|
||||||
|
}
|
||||||
|
|
||||||
if ($massaction == 'ventil') {
|
if ($massaction == 'ventil') {
|
||||||
$msg='';
|
$msg='';
|
||||||
@ -193,6 +203,9 @@ $sql = "SELECT f.rowid as facid, f.ref, f.ref_supplier, f.libelle as invoice_lab
|
|||||||
$sql.= " l.rowid, l.fk_product, l.description, l.total_ht as price, 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 as price, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line, l.vat_src_code,";
|
||||||
$sql.= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_buy as code_buy, p.tva_tx as tva_tx_prod,";
|
$sql.= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_buy as code_buy, p.tva_tx as tva_tx_prod,";
|
||||||
$sql.= " aa.rowid as aarowid";
|
$sql.= " aa.rowid as aarowid";
|
||||||
|
$parameters=array();
|
||||||
|
$reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook
|
||||||
|
$sql.=$hookmanager->resPrint;
|
||||||
$sql.= " FROM " . MAIN_DB_PREFIX . "facture_fourn as f";
|
$sql.= " FROM " . MAIN_DB_PREFIX . "facture_fourn as f";
|
||||||
$sql.= " INNER JOIN " . MAIN_DB_PREFIX . "facture_fourn_det as l ON f.rowid = l.fk_facture_fourn";
|
$sql.= " INNER JOIN " . MAIN_DB_PREFIX . "facture_fourn_det as l ON f.rowid = l.fk_facture_fourn";
|
||||||
$sql.= " LEFT JOIN " . MAIN_DB_PREFIX . "product as p ON p.rowid = l.fk_product";
|
$sql.= " LEFT JOIN " . MAIN_DB_PREFIX . "product as p ON p.rowid = l.fk_product";
|
||||||
@ -242,6 +255,11 @@ else if ($search_year > 0)
|
|||||||
}
|
}
|
||||||
$sql .= " AND f.entity IN (" . getEntity('facture_fourn', 0) . ")"; // We don't share object for accountancy
|
$sql .= " AND f.entity IN (" . getEntity('facture_fourn', 0) . ")"; // We don't share object for accountancy
|
||||||
|
|
||||||
|
// Add where from hooks
|
||||||
|
$parameters=array();
|
||||||
|
$reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook
|
||||||
|
$sql.=$hookmanager->resPrint;
|
||||||
|
|
||||||
$sql .= $db->order($sortfield, $sortorder);
|
$sql .= $db->order($sortfield, $sortorder);
|
||||||
|
|
||||||
// Count total nb of records
|
// Count total nb of records
|
||||||
@ -280,8 +298,8 @@ if ($result) {
|
|||||||
//'presend'=>$langs->trans("SendByMail"),
|
//'presend'=>$langs->trans("SendByMail"),
|
||||||
//'builddoc'=>$langs->trans("PDFMerge"),
|
//'builddoc'=>$langs->trans("PDFMerge"),
|
||||||
);
|
);
|
||||||
//if ($user->rights->mymodule->supprimer) $arrayofmassactions['delete']=$langs->trans("Delete");
|
//if ($user->rights->mymodule->supprimer) $arrayofmassactions['predelete']=$langs->trans("Delete");
|
||||||
//if ($massaction == 'presend') $arrayofmassactions=array();
|
//if (in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array();
|
||||||
$massactionbutton=$form->selectMassAction('ventil', $arrayofmassactions, 1);
|
$massactionbutton=$form->selectMassAction('ventil', $arrayofmassactions, 1);
|
||||||
|
|
||||||
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="post">' . "\n";
|
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="post">' . "\n";
|
||||||
@ -297,6 +315,12 @@ if ($result) {
|
|||||||
|
|
||||||
print $langs->trans("DescVentilTodoCustomer") . '</br><br>';
|
print $langs->trans("DescVentilTodoCustomer") . '</br><br>';
|
||||||
|
|
||||||
|
/*$topicmail="Information";
|
||||||
|
$modelmail="project";
|
||||||
|
$objecttmp=new Project($db);
|
||||||
|
$trackid='prj'.$object->id;
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php';*/
|
||||||
|
|
||||||
if ($msg) print $msg.'<br>';
|
if ($msg) print $msg.'<br>';
|
||||||
|
|
||||||
$moreforfilter = '';
|
$moreforfilter = '';
|
||||||
|
|||||||
@ -37,7 +37,7 @@ $form = new Form($db);
|
|||||||
// List of supported format
|
// List of supported format
|
||||||
$tmptype2label=ExtraFields::$type2label;
|
$tmptype2label=ExtraFields::$type2label;
|
||||||
$type2label=array('');
|
$type2label=array('');
|
||||||
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val);
|
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->transnoentitiesnoconv($val);
|
||||||
|
|
||||||
$action=GETPOST('action', 'alpha');
|
$action=GETPOST('action', 'alpha');
|
||||||
$attrname=GETPOST('attrname', 'alpha');
|
$attrname=GETPOST('attrname', 'alpha');
|
||||||
|
|||||||
@ -40,7 +40,7 @@ $form = new Form($db);
|
|||||||
// List of supported format
|
// List of supported format
|
||||||
$tmptype2label=ExtraFields::$type2label;
|
$tmptype2label=ExtraFields::$type2label;
|
||||||
$type2label=array('');
|
$type2label=array('');
|
||||||
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val);
|
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->transnoentitiesnoconv($val);
|
||||||
|
|
||||||
$action=GETPOST('action', 'alpha');
|
$action=GETPOST('action', 'alpha');
|
||||||
$attrname=GETPOST('attrname', 'alpha');
|
$attrname=GETPOST('attrname', 'alpha');
|
||||||
|
|||||||
@ -168,7 +168,7 @@ if ($object->id > 0)
|
|||||||
$filters=array();
|
$filters=array();
|
||||||
$filters['search_agenda_label']=$search_agenda_label;
|
$filters['search_agenda_label']=$search_agenda_label;
|
||||||
|
|
||||||
// TODO Replace this with same code than into listactions.php
|
// TODO Replace this with same code than into list.php
|
||||||
show_actions_done($conf,$langs,$db,$object,null,0,$actioncode, '', $filters, $sortfield, $sortorder);
|
show_actions_done($conf,$langs,$db,$object,null,0,$actioncode, '', $filters, $sortfield, $sortorder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1778,8 +1778,8 @@ else
|
|||||||
//$filedir = $conf->adherent->dir_output . '/' . get_exdir($object->id, 2, 0, 0, $object, 'member') . dol_sanitizeFileName($object->ref);
|
//$filedir = $conf->adherent->dir_output . '/' . get_exdir($object->id, 2, 0, 0, $object, 'member') . dol_sanitizeFileName($object->ref);
|
||||||
$filedir = $conf->adherent->dir_output . '/' . get_exdir(0, 0, 0, 0, $object, 'member');
|
$filedir = $conf->adherent->dir_output . '/' . get_exdir(0, 0, 0, 0, $object, 'member');
|
||||||
$urlsource = $_SERVER['PHP_SELF'] . '?id=' . $object->id;
|
$urlsource = $_SERVER['PHP_SELF'] . '?id=' . $object->id;
|
||||||
$genallowed = $user->rights->adherent->creer;
|
$genallowed = $user->rights->adherent->lire;
|
||||||
$delallowed = $user->rights->adherent->supprimer;
|
$delallowed = $user->rights->adherent->creer;
|
||||||
|
|
||||||
print $formfile->showdocuments('member', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', '', '', $object->default_lang, '', $object);
|
print $formfile->showdocuments('member', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', '', '', $object->default_lang, '', $object);
|
||||||
$somethingshown = $formfile->numoffiles;
|
$somethingshown = $formfile->numoffiles;
|
||||||
|
|||||||
@ -43,7 +43,7 @@ class Adherent extends CommonObject
|
|||||||
{
|
{
|
||||||
public $element='member';
|
public $element='member';
|
||||||
public $table_element='adherent';
|
public $table_element='adherent';
|
||||||
protected $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe
|
public $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe
|
||||||
|
|
||||||
var $mesgs;
|
var $mesgs;
|
||||||
|
|
||||||
@ -1563,7 +1563,7 @@ class Adherent extends CommonObject
|
|||||||
* @param int $withpictoimg 0=No picto, 1=Include picto into link, 2=Only picto, -1=Include photo into link, -2=Only picto photo, -3=Only photo very small)
|
* @param int $withpictoimg 0=No picto, 1=Include picto into link, 2=Only picto, -1=Include photo into link, -2=Only picto photo, -3=Only photo very small)
|
||||||
* @param int $maxlen length max label
|
* @param int $maxlen length max label
|
||||||
* @param string $option Page for link ('card', 'category', 'subscription', ...)
|
* @param string $option Page for link ('card', 'category', 'subscription', ...)
|
||||||
* @param string $mode ''=Show firstname and lastname, 'firstname'=Show only firstname, 'login'=Show login, 'ref'=Show ref
|
* @param string $mode ''=Show firstname+lastname as label (using default order), 'firstname'=Show only firstname, 'login'=Show login, 'ref'=Show ref
|
||||||
* @param string $morecss Add more css on link
|
* @param string $morecss Add more css on link
|
||||||
* @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking
|
* @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking
|
||||||
* @return string Chaine avec URL
|
* @return string Chaine avec URL
|
||||||
@ -1574,6 +1574,8 @@ class Adherent extends CommonObject
|
|||||||
|
|
||||||
if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) && $withpictoimg) $withpictoimg=0;
|
if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) && $withpictoimg) $withpictoimg=0;
|
||||||
|
|
||||||
|
$notooltip=0;
|
||||||
|
|
||||||
$result=''; $label='';
|
$result=''; $label='';
|
||||||
$link=''; $linkstart=''; $linkend='';
|
$link=''; $linkstart=''; $linkend='';
|
||||||
|
|
||||||
@ -1967,7 +1969,7 @@ class Adherent extends CommonObject
|
|||||||
$this->fullname=$this->getFullName($langs);
|
$this->fullname=$this->getFullName($langs);
|
||||||
|
|
||||||
// For avoid ldap error when firstname and lastname are empty
|
// For avoid ldap error when firstname and lastname are empty
|
||||||
if ($this->morphy == 'mor' && empty($this->fullname)) {
|
if ($this->morphy == 'mor' && (empty($this->fullname) || $this->fullname == $this->societe)) {
|
||||||
$this->fullname = $this->societe;
|
$this->fullname = $this->societe;
|
||||||
$this->lastname = $this->societe;
|
$this->lastname = $this->societe;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -167,7 +167,7 @@ class AdherentType extends CommonObject
|
|||||||
$sql.= "libelle = '".$this->db->escape($this->label) ."',";
|
$sql.= "libelle = '".$this->db->escape($this->label) ."',";
|
||||||
$sql.= "subscription = '".$this->db->escape($this->subscription)."',";
|
$sql.= "subscription = '".$this->db->escape($this->subscription)."',";
|
||||||
$sql.= "note = '".$this->db->escape($this->note)."',";
|
$sql.= "note = '".$this->db->escape($this->note)."',";
|
||||||
$sql.= "vote = '".$this->db->escape($this->vote)."',";
|
$sql.= "vote = ".(integer) $this->db->escape($this->vote).",";
|
||||||
$sql.= "mail_valid = '".$this->db->escape($this->mail_valid)."'";
|
$sql.= "mail_valid = '".$this->db->escape($this->mail_valid)."'";
|
||||||
$sql.= " WHERE rowid =".$this->id;
|
$sql.= " WHERE rowid =".$this->id;
|
||||||
|
|
||||||
@ -230,6 +230,8 @@ class AdherentType extends CommonObject
|
|||||||
{
|
{
|
||||||
global $user;
|
global $user;
|
||||||
|
|
||||||
|
$error = 0;
|
||||||
|
|
||||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."adherent_type";
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX."adherent_type";
|
||||||
$sql.= " WHERE rowid = ".$this->id;
|
$sql.= " WHERE rowid = ".$this->id;
|
||||||
|
|
||||||
@ -386,23 +388,24 @@ class AdherentType extends CommonObject
|
|||||||
*
|
*
|
||||||
* @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto
|
* @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto
|
||||||
* @param int $maxlen length max label
|
* @param int $maxlen length max label
|
||||||
|
* @param int $notooltip 1=Disable tooltip
|
||||||
* @return string String with URL
|
* @return string String with URL
|
||||||
*/
|
*/
|
||||||
function getNomUrl($withpicto=0,$maxlen=0)
|
function getNomUrl($withpicto=0, $maxlen=0, $notooltip=0)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
$result='';
|
$result='';
|
||||||
$label=$langs->trans("ShowTypeCard",$this->label);
|
$label=$langs->trans("ShowTypeCard",$this->label);
|
||||||
|
|
||||||
$link = '<a href="'.DOL_URL_ROOT.'/adherents/type.php?rowid='.$this->id.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
|
$linkstart = '<a href="'.DOL_URL_ROOT.'/adherents/type.php?rowid='.$this->id.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
|
||||||
$linkend='</a>';
|
$linkend='</a>';
|
||||||
|
|
||||||
$picto='group';
|
$result .= $linkstart;
|
||||||
|
if ($withpicto) $result.=img_object(($notooltip?'':$label), ($this->picto?$this->picto:'generic'), ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1);
|
||||||
|
if ($withpicto != 2) $result.= ($maxlen?dol_trunc($this->label,$maxlen):$this->label);
|
||||||
|
$result .= $linkend;
|
||||||
|
|
||||||
if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend);
|
|
||||||
if ($withpicto && $withpicto != 2) $result.=' ';
|
|
||||||
$result.=$link.($maxlen?dol_trunc($this->label,$maxlen):$this->label).$linkend;
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -91,7 +91,7 @@ class Members extends DolibarrApi
|
|||||||
*
|
*
|
||||||
* @throws RestException
|
* @throws RestException
|
||||||
*/
|
*/
|
||||||
function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 0, $page = 0, $typeid = '', $sqlfilters = '') {
|
function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $typeid = '', $sqlfilters = '') {
|
||||||
global $db, $conf;
|
global $db, $conf;
|
||||||
|
|
||||||
$obj_ret = array();
|
$obj_ret = array();
|
||||||
|
|||||||
@ -86,7 +86,7 @@ class MembersTypes extends DolibarrApi
|
|||||||
*
|
*
|
||||||
* @throws RestException
|
* @throws RestException
|
||||||
*/
|
*/
|
||||||
function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 0, $page = 0, $sqlfilters = '') {
|
function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $sqlfilters = '') {
|
||||||
global $db, $conf;
|
global $db, $conf;
|
||||||
|
|
||||||
$obj_ret = array();
|
$obj_ret = array();
|
||||||
|
|||||||
@ -85,7 +85,7 @@ class Subscriptions extends DolibarrApi
|
|||||||
*
|
*
|
||||||
* @throws RestException
|
* @throws RestException
|
||||||
*/
|
*/
|
||||||
function index($sortfield = "dateadh", $sortorder = 'ASC', $limit = 0, $page = 0, $sqlfilters = '') {
|
function index($sortfield = "dateadh", $sortorder = 'ASC', $limit = 100, $page = 0, $sqlfilters = '') {
|
||||||
global $db, $conf;
|
global $db, $conf;
|
||||||
|
|
||||||
$obj_ret = array();
|
$obj_ret = array();
|
||||||
@ -98,7 +98,7 @@ class Subscriptions extends DolibarrApi
|
|||||||
$sql.= " FROM ".MAIN_DB_PREFIX."subscription as t";
|
$sql.= " FROM ".MAIN_DB_PREFIX."subscription as t";
|
||||||
$sql.= ' WHERE 1 = 1';
|
$sql.= ' WHERE 1 = 1';
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters)
|
if ($sqlfilters)
|
||||||
{
|
{
|
||||||
if (! DolibarrApi::_checkFilters($sqlfilters))
|
if (! DolibarrApi::_checkFilters($sqlfilters))
|
||||||
{
|
{
|
||||||
@ -107,7 +107,7 @@ class Subscriptions extends DolibarrApi
|
|||||||
$regexstring='\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)';
|
$regexstring='\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)';
|
||||||
$sql.=" AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql.=" AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql.= $db->order($sortfield, $sortorder);
|
$sql.= $db->order($sortfield, $sortorder);
|
||||||
if ($limit) {
|
if ($limit) {
|
||||||
if ($page < 0)
|
if ($page < 0)
|
||||||
|
|||||||
@ -22,6 +22,8 @@
|
|||||||
* \brief File of class to manage subscriptions of foundation members
|
* \brief File of class to manage subscriptions of foundation members
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//namespace DolibarrMember;
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
|
||||||
|
|
||||||
|
|
||||||
@ -33,7 +35,7 @@ class Subscription extends CommonObject
|
|||||||
public $element='subscription';
|
public $element='subscription';
|
||||||
public $table_element='subscription';
|
public $table_element='subscription';
|
||||||
public $picto='payment';
|
public $picto='payment';
|
||||||
|
|
||||||
var $datec; // Date creation
|
var $datec; // Date creation
|
||||||
var $datem; // Date modification
|
var $datem; // Date modification
|
||||||
var $dateh; // Subscription start date (date subscription)
|
var $dateh; // Subscription start date (date subscription)
|
||||||
@ -193,12 +195,11 @@ class Subscription extends CommonObject
|
|||||||
*/
|
*/
|
||||||
function delete($user)
|
function delete($user)
|
||||||
{
|
{
|
||||||
$accountline=new AccountLine($this->db);
|
|
||||||
|
|
||||||
// It subscription is linked to a bank transaction, we get it
|
// It subscription is linked to a bank transaction, we get it
|
||||||
if ($this->fk_bank > 0)
|
if ($this->fk_bank > 0)
|
||||||
{
|
{
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
||||||
|
$accountline=new AccountLine($this->db);
|
||||||
$result=$accountline->fetch($this->fk_bank);
|
$result=$accountline->fetch($this->fk_bank);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -217,7 +218,7 @@ class Subscription extends CommonObject
|
|||||||
$result=$member->fetch($this->fk_adherent);
|
$result=$member->fetch($this->fk_adherent);
|
||||||
$result=$member->update_end_date($user);
|
$result=$member->update_end_date($user);
|
||||||
|
|
||||||
if (is_object($accountline) && $accountline->id > 0) // If we found bank account line (this means this->fk_bank defined)
|
if ($this->fk_bank > 0 && is_object($accountline) && $accountline->id > 0) // If we found bank account line (this means this->fk_bank defined)
|
||||||
{
|
{
|
||||||
$result=$accountline->delete($user); // Return false if refused because line is conciliated
|
$result=$accountline->delete($user); // Return false if refused because line is conciliated
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
@ -266,14 +267,16 @@ class Subscription extends CommonObject
|
|||||||
$result='';
|
$result='';
|
||||||
$label=$langs->trans("ShowSubscription").': '.$this->ref;
|
$label=$langs->trans("ShowSubscription").': '.$this->ref;
|
||||||
|
|
||||||
$link = '<a href="'.DOL_URL_ROOT.'/adherents/subscription/card.php?rowid='.$this->id.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
|
$linkstart = '<a href="'.DOL_URL_ROOT.'/adherents/subscription/card.php?rowid='.$this->id.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
|
||||||
$linkend='</a>';
|
$linkend='</a>';
|
||||||
|
|
||||||
$picto='payment';
|
$picto='payment';
|
||||||
|
|
||||||
if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend);
|
$result .= $linkstart;
|
||||||
if ($withpicto && $withpicto != 2) $result.=' ';
|
if ($withpicto) $result.=img_object(($notooltip?'':$label), ($this->picto?$this->picto:'generic'), ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1);
|
||||||
$result.=$link.$this->ref.$linkend;
|
if ($withpicto != 2) $result.= $this->ref;
|
||||||
|
$result .= $linkend;
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -288,7 +291,7 @@ class Subscription extends CommonObject
|
|||||||
{
|
{
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renvoi le libelle d'un statut donne
|
* Renvoi le libelle d'un statut donne
|
||||||
*
|
*
|
||||||
@ -301,7 +304,7 @@ class Subscription extends CommonObject
|
|||||||
$langs->load("members");
|
$langs->load("members");
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load information of the subscription object
|
* Load information of the subscription object
|
||||||
*
|
*
|
||||||
|
|||||||
@ -52,7 +52,7 @@ $result=restrictedArea($user,'adherent',$id);
|
|||||||
$sortfield = GETPOST("sortfield",'alpha');
|
$sortfield = GETPOST("sortfield",'alpha');
|
||||||
$sortorder = GETPOST("sortorder",'alpha');
|
$sortorder = GETPOST("sortorder",'alpha');
|
||||||
$page = GETPOST("page",'int');
|
$page = GETPOST("page",'int');
|
||||||
if ($page == -1 || $page == null) { $page = 0 ; }
|
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
||||||
$offset = $conf->liste_limit * $page ;
|
$offset = $conf->liste_limit * $page ;
|
||||||
$pageprev = $page - 1;
|
$pageprev = $page - 1;
|
||||||
$pagenext = $page + 1;
|
$pagenext = $page + 1;
|
||||||
|
|||||||
@ -162,7 +162,8 @@ if (! empty($conf->global->MAIN_SEARCH_FORM_ON_HOME_AREAS)) // This is usele
|
|||||||
|
|
||||||
if ($conf->use_javascript_ajax)
|
if ($conf->use_javascript_ajax)
|
||||||
{
|
{
|
||||||
print '<table class="noborder nohover" width="100%">';
|
print '<div class="div-table-responsive-no-min">';
|
||||||
|
print '<table class="noborder nohover" width="100%">';
|
||||||
print '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Statistics").'</th></tr>';
|
print '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Statistics").'</th></tr>';
|
||||||
print '<tr '.$bc[0].'><td align="center" colspan="2">';
|
print '<tr '.$bc[0].'><td align="center" colspan="2">';
|
||||||
|
|
||||||
@ -199,6 +200,7 @@ if ($conf->use_javascript_ajax)
|
|||||||
print $SommeA+$SommeB+$SommeC+$SommeD;
|
print $SommeA+$SommeB+$SommeC+$SommeD;
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
print '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<br>';
|
print '<br>';
|
||||||
@ -234,6 +236,7 @@ if ($result)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<th>'.$langs->trans("Subscriptions").'</th>';
|
print '<th>'.$langs->trans("Subscriptions").'</th>';
|
||||||
@ -261,7 +264,8 @@ print "<td align=\"right\">".$numb."</td>";
|
|||||||
print '<td align="right">'.price($tot)."</td>";
|
print '<td align="right">'.price($tot)."</td>";
|
||||||
print "<td align=\"right\">".price(price2num($numb>0?($tot/$numb):0,'MT'))."</td>";
|
print "<td align=\"right\">".price(price2num($numb>0?($tot/$numb):0,'MT'))."</td>";
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
print "</table><br>\n";
|
print "</table></div>";
|
||||||
|
print "<br>\n";
|
||||||
|
|
||||||
|
|
||||||
print '</div><div class="fichetwothirdright"><div class="ficheaddleft">';
|
print '</div><div class="fichetwothirdright"><div class="ficheaddleft">';
|
||||||
@ -283,6 +287,7 @@ $sql.= $db->plimit($max, 0);
|
|||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<th colspan="4">'.$langs->trans("LastMembersModified",$max).'</th></tr>';
|
print '<th colspan="4">'.$langs->trans("LastMembersModified",$max).'</th></tr>';
|
||||||
@ -319,7 +324,8 @@ if ($resql)
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print "</table><br>";
|
print "</table></div>";
|
||||||
|
print "<br>";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -344,6 +350,7 @@ $sql.= $db->plimit($max, 0);
|
|||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<th colspan="5">'.$langs->trans("LastSubscriptionsModified",$max).'</th></tr>';
|
print '<th colspan="5">'.$langs->trans("LastSubscriptionsModified",$max).'</th></tr>';
|
||||||
@ -379,7 +386,8 @@ if ($resql)
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print "</table><br>";
|
print "</table></div>";
|
||||||
|
print "<br>";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -388,6 +396,7 @@ else
|
|||||||
|
|
||||||
|
|
||||||
// Summary of members by type
|
// Summary of members by type
|
||||||
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<th>'.$langs->trans("MembersTypes").'</th>';
|
print '<th>'.$langs->trans("MembersTypes").'</th>';
|
||||||
@ -416,7 +425,7 @@ print '<td class="liste_total" align="right">'.$SommeD.' '.$staticmember->LibSta
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print "</table>\n";
|
print "</table>\n";
|
||||||
|
print "</div>";
|
||||||
|
|
||||||
print '</div></div></div>';
|
print '</div></div></div>';
|
||||||
|
|
||||||
|
|||||||
@ -87,50 +87,51 @@ $search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search
|
|||||||
|
|
||||||
// List of fields to search into when doing a "search in all"
|
// List of fields to search into when doing a "search in all"
|
||||||
$fieldstosearchall = array(
|
$fieldstosearchall = array(
|
||||||
'd.rowid'=>'Ref',
|
'd.rowid'=>'Ref',
|
||||||
'd.login'=>'Login',
|
'd.login'=>'Login',
|
||||||
'd.lastname'=>'Lastname',
|
'd.lastname'=>'Lastname',
|
||||||
'd.firstname'=>'Firstname',
|
'd.firstname'=>'Firstname',
|
||||||
'd.login'=>'Login',
|
'd.login'=>'Login',
|
||||||
'd.societe'=>"Company",
|
'd.societe'=>"Company",
|
||||||
'd.email'=>'EMail',
|
'd.email'=>'EMail',
|
||||||
'd.address'=>'Address',
|
'd.address'=>'Address',
|
||||||
'd.zip'=>'Zip',
|
'd.zip'=>'Zip',
|
||||||
'd.town'=>'Town',
|
'd.town'=>'Town',
|
||||||
'd.note_public'=>'NotePublic',
|
'd.note_public'=>'NotePublic',
|
||||||
'd.note_private'=>'NotePrivate',
|
'd.note_private'=>'NotePrivate',
|
||||||
);
|
);
|
||||||
|
if($db->type == 'pgsql') unset($fieldstosearchall['d.rowid']);
|
||||||
$arrayfields=array(
|
$arrayfields=array(
|
||||||
'd.ref'=>array('label'=>$langs->trans("Ref"), 'checked'=>1),
|
'd.ref'=>array('label'=>$langs->trans("Ref"), 'checked'=>1),
|
||||||
'd.lastname'=>array('label'=>$langs->trans("Lastname"), 'checked'=>1),
|
'd.lastname'=>array('label'=>$langs->trans("Lastname"), 'checked'=>1),
|
||||||
'd.firstname'=>array('label'=>$langs->trans("Firstname"), 'checked'=>1),
|
'd.firstname'=>array('label'=>$langs->trans("Firstname"), 'checked'=>1),
|
||||||
'd.company'=>array('label'=>$langs->trans("Company"), 'checked'=>1),
|
'd.company'=>array('label'=>$langs->trans("Company"), 'checked'=>1),
|
||||||
'd.login'=>array('label'=>$langs->trans("Login"), 'checked'=>1),
|
'd.login'=>array('label'=>$langs->trans("Login"), 'checked'=>1),
|
||||||
'd.morphy'=>array('label'=>$langs->trans("MorPhy"), 'checked'=>1),
|
'd.morphy'=>array('label'=>$langs->trans("MorPhy"), 'checked'=>1),
|
||||||
't.libelle'=>array('label'=>$langs->trans("Type"), 'checked'=>1),
|
't.libelle'=>array('label'=>$langs->trans("Type"), 'checked'=>1),
|
||||||
'd.email'=>array('label'=>$langs->trans("Email"), 'checked'=>1),
|
'd.email'=>array('label'=>$langs->trans("Email"), 'checked'=>1),
|
||||||
'd.address'=>array('label'=>$langs->trans("Address"), 'checked'=>0),
|
'd.address'=>array('label'=>$langs->trans("Address"), 'checked'=>0),
|
||||||
'd.zip'=>array('label'=>$langs->trans("Zip"), 'checked'=>0),
|
'd.zip'=>array('label'=>$langs->trans("Zip"), 'checked'=>0),
|
||||||
'd.town'=>array('label'=>$langs->trans("Town"), 'checked'=>0),
|
'd.town'=>array('label'=>$langs->trans("Town"), 'checked'=>0),
|
||||||
'd.phone'=>array('label'=>$langs->trans("Phone"), 'checked'=>0),
|
'd.phone'=>array('label'=>$langs->trans("Phone"), 'checked'=>0),
|
||||||
'd.phone_perso'=>array('label'=>$langs->trans("PhonePerso"), 'checked'=>0),
|
'd.phone_perso'=>array('label'=>$langs->trans("PhonePerso"), 'checked'=>0),
|
||||||
'd.phone_mobile'=>array('label'=>$langs->trans("PhoneMobile"), 'checked'=>0),
|
'd.phone_mobile'=>array('label'=>$langs->trans("PhoneMobile"), 'checked'=>0),
|
||||||
'state.nom'=>array('label'=>$langs->trans("State"), 'checked'=>0),
|
'state.nom'=>array('label'=>$langs->trans("State"), 'checked'=>0),
|
||||||
'country.code_iso'=>array('label'=>$langs->trans("Country"), 'checked'=>0),
|
'country.code_iso'=>array('label'=>$langs->trans("Country"), 'checked'=>0),
|
||||||
/*'d.note_public'=>array('label'=>$langs->trans("NotePublic"), 'checked'=>0),
|
/*'d.note_public'=>array('label'=>$langs->trans("NotePublic"), 'checked'=>0),
|
||||||
'd.note_private'=>array('label'=>$langs->trans("NotePrivate"), 'checked'=>0),*/
|
'd.note_private'=>array('label'=>$langs->trans("NotePrivate"), 'checked'=>0),*/
|
||||||
'd.datefin'=>array('label'=>$langs->trans("EndSubscription"), 'checked'=>1, 'position'=>500),
|
'd.datefin'=>array('label'=>$langs->trans("EndSubscription"), 'checked'=>1, 'position'=>500),
|
||||||
'd.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500),
|
'd.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500),
|
||||||
'd.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500),
|
'd.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500),
|
||||||
'd.statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000)
|
'd.statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000)
|
||||||
);
|
);
|
||||||
// Extra fields
|
// Extra fields
|
||||||
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
|
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
|
||||||
{
|
{
|
||||||
foreach($extrafields->attribute_label as $key => $val)
|
foreach($extrafields->attribute_label as $key => $val)
|
||||||
{
|
{
|
||||||
if (! empty($extrafields->attribute_list[$key])) $arrayfields["ef.".$key]=array('label'=>$extrafields->attribute_label[$key], 'checked'=>(($extrafields->attribute_list[$key]<0)?0:1), 'position'=>$extrafields->attribute_pos[$key], 'enabled'=>$extrafields->attribute_perms[$key]);
|
if (! empty($extrafields->attribute_list[$key])) $arrayfields["ef.".$key]=array('label'=>$extrafields->attribute_label[$key], 'checked'=>(($extrafields->attribute_list[$key]<0)?0:1), 'position'=>$extrafields->attribute_pos[$key], 'enabled'=>(abs($extrafields->attribute_list[$key])!=3 && $extrafields->attribute_perms[$key]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -147,44 +148,44 @@ if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'e
|
|||||||
|
|
||||||
if (empty($reshook))
|
if (empty($reshook))
|
||||||
{
|
{
|
||||||
// Selection of new fields
|
// Selection of new fields
|
||||||
include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
|
||||||
|
|
||||||
// Purge search criteria
|
// Purge search criteria
|
||||||
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="";
|
$search="";
|
||||||
$search_ref="";
|
$search_ref="";
|
||||||
$search_lastname="";
|
$search_lastname="";
|
||||||
$search_firstname="";
|
$search_firstname="";
|
||||||
$search_login="";
|
$search_login="";
|
||||||
$search_company="";
|
$search_company="";
|
||||||
$search_type="";
|
$search_type="";
|
||||||
$search_email="";
|
$search_email="";
|
||||||
$search_address="";
|
$search_address="";
|
||||||
$search_zip="";
|
$search_zip="";
|
||||||
$search_town="";
|
$search_town="";
|
||||||
$search_state="";
|
$search_state="";
|
||||||
$search_country='';
|
$search_country='';
|
||||||
$search_phone='';
|
$search_phone='';
|
||||||
$search_phone_perso='';
|
$search_phone_perso='';
|
||||||
$search_phone_mobile='';
|
$search_phone_mobile='';
|
||||||
$search_morphy="";
|
$search_morphy="";
|
||||||
$search_categ="";
|
$search_categ="";
|
||||||
$catid="";
|
$catid="";
|
||||||
$sall="";
|
$sall="";
|
||||||
$statut='';
|
$statut='';
|
||||||
$toselect='';
|
$toselect='';
|
||||||
$search_array_options=array();
|
$search_array_options=array();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mass actions
|
// Mass actions
|
||||||
$objectclass='Adherent';
|
$objectclass='Adherent';
|
||||||
$objectlabel='Members';
|
$objectlabel='Members';
|
||||||
$permtoread = $user->rights->adherent->lire;
|
$permtoread = $user->rights->adherent->lire;
|
||||||
$permtodelete = $user->rights->adherent->supprimer;
|
$permtodelete = $user->rights->adherent->supprimer;
|
||||||
$uploaddir = $conf->adherent->dir_output;
|
$uploaddir = $conf->adherent->dir_output;
|
||||||
include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -245,16 +246,16 @@ if ($filter == 'outofdate') $sql.=" AND (datefin IS NULL OR datefin < '".$db->id
|
|||||||
// Add where from extra fields
|
// Add where from extra fields
|
||||||
foreach ($search_array_options as $key => $val)
|
foreach ($search_array_options as $key => $val)
|
||||||
{
|
{
|
||||||
$crit=$val;
|
$crit=$val;
|
||||||
$tmpkey=preg_replace('/search_options_/','',$key);
|
$tmpkey=preg_replace('/search_options_/','',$key);
|
||||||
$typ=$extrafields->attribute_type[$tmpkey];
|
$typ=$extrafields->attribute_type[$tmpkey];
|
||||||
$mode=0;
|
$mode_search=0;
|
||||||
if (in_array($typ, array('int','double','real'))) $mode=1; // Search on a numeric
|
if (in_array($typ, array('int','double','real'))) $mode_search=1; // Search on a numeric
|
||||||
if (in_array($typ, array('sellist')) && $crit != '0' && $crit != '-1') $mode=2; // Search on a foreign key int
|
if (in_array($typ, array('sellist','link')) && $crit != '0' && $crit != '-1') $mode_search=2; // Search on a foreign key int
|
||||||
if ($crit != '' && (! in_array($typ, array('select','sellist')) || $crit != '0'))
|
if ($crit != '' && (! in_array($typ, array('select','sellist')) || $crit != '0') && (! in_array($typ, array('link')) || $crit != '-1'))
|
||||||
{
|
{
|
||||||
$sql .= natural_search('ef.'.$tmpkey, $crit, $mode);
|
$sql .= natural_search('ef.'.$tmpkey, $crit, $mode_search);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Add where from hooks
|
// Add where from hooks
|
||||||
$parameters=array();
|
$parameters=array();
|
||||||
@ -278,8 +279,8 @@ dol_syslog("get list", LOG_DEBUG);
|
|||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if (! $resql)
|
if (! $resql)
|
||||||
{
|
{
|
||||||
dol_print_error($db);
|
dol_print_error($db);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
$num = $db->num_rows($resql);
|
$num = $db->num_rows($resql);
|
||||||
@ -288,10 +289,10 @@ $arrayofselected=is_array($toselect)?$toselect:array();
|
|||||||
|
|
||||||
if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $sall)
|
if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $sall)
|
||||||
{
|
{
|
||||||
$obj = $db->fetch_object($resql);
|
$obj = $db->fetch_object($resql);
|
||||||
$id = $obj->rowid;
|
$id = $obj->rowid;
|
||||||
header("Location: ".DOL_URL_ROOT.'/adherents/card.php?id='.$id);
|
header("Location: ".DOL_URL_ROOT.'/adherents/card.php?id='.$id);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
llxHeader('',$langs->trans("Member"),'EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_Miembros');
|
llxHeader('',$langs->trans("Member"),'EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_Miembros');
|
||||||
@ -344,9 +345,9 @@ if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss);
|
|||||||
// Add $param from extra fields
|
// Add $param from extra fields
|
||||||
foreach ($search_array_options as $key => $val)
|
foreach ($search_array_options as $key => $val)
|
||||||
{
|
{
|
||||||
$crit=$val;
|
$crit=$val;
|
||||||
$tmpkey=preg_replace('/search_options_/','',$key);
|
$tmpkey=preg_replace('/search_options_/','',$key);
|
||||||
if ($val != '') $param.='&search_options_'.$tmpkey.'='.urlencode($val);
|
if ($val != '') $param.='&search_options_'.$tmpkey.'='.urlencode($val);
|
||||||
}
|
}
|
||||||
|
|
||||||
// List of mass actions available
|
// List of mass actions available
|
||||||
@ -354,9 +355,8 @@ $arrayofmassactions = array(
|
|||||||
// 'presend'=>$langs->trans("SendByMail"),
|
// 'presend'=>$langs->trans("SendByMail"),
|
||||||
// 'builddoc'=>$langs->trans("PDFMerge"),
|
// 'builddoc'=>$langs->trans("PDFMerge"),
|
||||||
);
|
);
|
||||||
//if($user->rights->facture->creer) $arrayofmassactions['createbills']=$langs->trans("CreateInvoiceForThisCustomer");
|
if ($user->rights->adherent->supprimer) $arrayofmassactions['predelete']=$langs->trans("Delete");
|
||||||
if ($user->rights->adherent->supprimer) $arrayofmassactions['delete']=$langs->trans("Delete");
|
if (in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array();
|
||||||
//if ($massaction == 'presend' || $massaction == 'createbills') $arrayofmassactions=array();
|
|
||||||
$massactionbutton=$form->selectMassAction('', $arrayofmassactions);
|
$massactionbutton=$form->selectMassAction('', $arrayofmassactions);
|
||||||
|
|
||||||
print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">';
|
print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">';
|
||||||
@ -371,10 +371,16 @@ print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
|
|||||||
|
|
||||||
print_barre_liste($titre, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_generic.png', 0, '', '', $limit);
|
print_barre_liste($titre, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_generic.png', 0, '', '', $limit);
|
||||||
|
|
||||||
|
$topicmail="Information";
|
||||||
|
$modelmail="member";
|
||||||
|
$objecttmp=new Adherent($db);
|
||||||
|
$trackid='mem'.$object->id;
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php';
|
||||||
|
|
||||||
if ($sall)
|
if ($sall)
|
||||||
{
|
{
|
||||||
foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val);
|
foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val);
|
||||||
print $langs->trans("FilterOnInto", $sall) . implode(', ',$fieldstosearchall);
|
print $langs->trans("FilterOnInto", $sall) . implode(', ',$fieldstosearchall);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Filter on categories
|
// Filter on categories
|
||||||
@ -382,7 +388,7 @@ $moreforfilter='';
|
|||||||
if (! empty($conf->categorie->enabled))
|
if (! empty($conf->categorie->enabled))
|
||||||
{
|
{
|
||||||
require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php';
|
||||||
$moreforfilter.='<div class="divsearchfield">';
|
$moreforfilter.='<div class="divsearchfield">';
|
||||||
$moreforfilter.=$langs->trans('Categories'). ': ';
|
$moreforfilter.=$langs->trans('Categories'). ': ';
|
||||||
$moreforfilter.=$formother->select_categories(Categorie::TYPE_MEMBER,$search_categ,'search_categ',1);
|
$moreforfilter.=$formother->select_categories(Categorie::TYPE_MEMBER,$search_categ,'search_categ',1);
|
||||||
$moreforfilter.='</div>';
|
$moreforfilter.='</div>';
|
||||||
@ -418,9 +424,9 @@ if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER))
|
|||||||
// Ref
|
// Ref
|
||||||
if (! empty($arrayfields['d.ref']['checked']))
|
if (! empty($arrayfields['d.ref']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
print '<input class="flat maxwidth50" type="text" name="search_ref" value="'.dol_escape_htmltag($search_ref).'">';
|
print '<input class="flat maxwidth50" type="text" name="search_ref" value="'.dol_escape_htmltag($search_ref).'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! empty($arrayfields['d.firstname']['checked']))
|
if (! empty($arrayfields['d.firstname']['checked']))
|
||||||
@ -449,8 +455,8 @@ if (! empty($arrayfields['d.login']['checked']))
|
|||||||
|
|
||||||
if (! empty($arrayfields['d.morphy']['checked']))
|
if (! empty($arrayfields['d.morphy']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="liste_titre" align="left">';
|
print '<td class="liste_titre" align="left">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! empty($arrayfields['t.libelle']['checked']))
|
if (! empty($arrayfields['t.libelle']['checked']))
|
||||||
@ -480,16 +486,16 @@ if (! empty($arrayfields['d.town']['checked']))
|
|||||||
// State
|
// State
|
||||||
if (! empty($arrayfields['state.nom']['checked']))
|
if (! empty($arrayfields['state.nom']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
print '<input class="flat searchstring maxwidth50" type="text" name="search_state" value="'.dol_escape_htmltag($search_state).'">';
|
print '<input class="flat searchstring maxwidth50" type="text" name="search_state" value="'.dol_escape_htmltag($search_state).'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
// Country
|
// Country
|
||||||
if (! empty($arrayfields['country.code_iso']['checked']))
|
if (! empty($arrayfields['country.code_iso']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="liste_titre" align="center">';
|
print '<td class="liste_titre" align="center">';
|
||||||
print $form->select_country($search_country,'search_country','',0,'maxwidth100');
|
print $form->select_country($search_country,'search_country','',0,'maxwidth100');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
// Phone pro
|
// Phone pro
|
||||||
if (! empty($arrayfields['d.phone']['checked']))
|
if (! empty($arrayfields['d.phone']['checked']))
|
||||||
@ -524,25 +530,25 @@ if (! empty($arrayfields['d.datefin']['checked']))
|
|||||||
// Extra fields
|
// Extra fields
|
||||||
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
|
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
|
||||||
{
|
{
|
||||||
foreach($extrafields->attribute_label as $key => $val)
|
foreach($extrafields->attribute_label as $key => $val)
|
||||||
{
|
{
|
||||||
if (! empty($arrayfields["ef.".$key]['checked']))
|
if (! empty($arrayfields["ef.".$key]['checked']))
|
||||||
{
|
{
|
||||||
$align=$extrafields->getAlignFlag($key);
|
$align=$extrafields->getAlignFlag($key);
|
||||||
$typeofextrafield=$extrafields->attribute_type[$key];
|
$typeofextrafield=$extrafields->attribute_type[$key];
|
||||||
print '<td class="liste_titre'.($align?' '.$align:'').'">';
|
print '<td class="liste_titre'.($align?' '.$align:'').'">';
|
||||||
if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select')))
|
if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select')))
|
||||||
{
|
{
|
||||||
$crit=$val;
|
$crit=$val;
|
||||||
$tmpkey=preg_replace('/search_options_/','',$key);
|
$tmpkey=preg_replace('/search_options_/','',$key);
|
||||||
$searchclass='';
|
$searchclass='';
|
||||||
if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring';
|
if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring';
|
||||||
if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum';
|
if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum';
|
||||||
print '<input class="flat'.($searchclass?' '.$searchclass:'').'" size="4" type="text" name="search_options_'.$tmpkey.'" value="'.dol_escape_htmltag($search_array_options['search_options_'.$tmpkey]).'">';
|
print '<input class="flat'.($searchclass?' '.$searchclass:'').'" size="4" type="text" name="search_options_'.$tmpkey.'" value="'.dol_escape_htmltag($search_array_options['search_options_'.$tmpkey]).'">';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Fields from hook
|
// Fields from hook
|
||||||
$parameters=array('arrayfields'=>$arrayfields);
|
$parameters=array('arrayfields'=>$arrayfields);
|
||||||
@ -551,26 +557,26 @@ print $hookmanager->resPrint;
|
|||||||
// Date creation
|
// Date creation
|
||||||
if (! empty($arrayfields['d.datec']['checked']))
|
if (! empty($arrayfields['d.datec']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
// Date modification
|
// Date modification
|
||||||
if (! empty($arrayfields['d.tms']['checked']))
|
if (! empty($arrayfields['d.tms']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
// Status
|
// Status
|
||||||
if (! empty($arrayfields['d.statut']['checked']))
|
if (! empty($arrayfields['d.statut']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="liste_titre maxwidthonsmartphone" align="right">';
|
print '<td class="liste_titre maxwidthonsmartphone" align="right">';
|
||||||
$liststatus=array(
|
$liststatus=array(
|
||||||
'-1'=>$langs->trans("Draft"),
|
'-1'=>$langs->trans("Draft"),
|
||||||
'1'=>$langs->trans("Validated"),
|
'1'=>$langs->trans("Validated"),
|
||||||
'0'=>$langs->trans("Resiliated")
|
'0'=>$langs->trans("Resiliated")
|
||||||
);
|
);
|
||||||
print $form->selectarray('statut', $liststatus, $statut, -2);
|
print $form->selectarray('statut', $liststatus, $statut, -2);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
// Action column
|
// Action column
|
||||||
print '<td class="liste_titre" align="middle">';
|
print '<td class="liste_titre" align="middle">';
|
||||||
@ -583,7 +589,7 @@ print "</tr>\n";
|
|||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER))
|
if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER))
|
||||||
{
|
{
|
||||||
print '<td colspan="1" align="center">'.$langs->trans("NumberingShort").'</td>';
|
print '<td colspan="1" align="center">'.$langs->trans("NumberingShort").'</td>';
|
||||||
}
|
}
|
||||||
if (! empty($arrayfields['d.ref']['checked'])) print_liste_field_titre($arrayfields['d.ref']['label'],$_SERVER["PHP_SELF"],'d.rowid','',$param,'',$sortfield,$sortorder);
|
if (! empty($arrayfields['d.ref']['checked'])) print_liste_field_titre($arrayfields['d.ref']['label'],$_SERVER["PHP_SELF"],'d.rowid','',$param,'',$sortfield,$sortorder);
|
||||||
if (! empty($arrayfields['d.firstname']['checked'])) print_liste_field_titre($arrayfields['d.firstname']['label'],$_SERVER["PHP_SELF"],'d.firstname','',$param,'',$sortfield,$sortorder);
|
if (! empty($arrayfields['d.firstname']['checked'])) print_liste_field_titre($arrayfields['d.firstname']['label'],$_SERVER["PHP_SELF"],'d.firstname','',$param,'',$sortfield,$sortorder);
|
||||||
@ -605,16 +611,16 @@ if (! empty($arrayfields['d.datefin']['checked'])) print_liste_field_titr
|
|||||||
// Extra fields
|
// Extra fields
|
||||||
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
|
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
|
||||||
{
|
{
|
||||||
foreach($extrafields->attribute_label as $key => $val)
|
foreach($extrafields->attribute_label as $key => $val)
|
||||||
{
|
{
|
||||||
if (! empty($arrayfields["ef.".$key]['checked']))
|
if (! empty($arrayfields["ef.".$key]['checked']))
|
||||||
{
|
{
|
||||||
$align=$extrafields->getAlignFlag($key);
|
$align=$extrafields->getAlignFlag($key);
|
||||||
$sortonfield = "ef.".$key;
|
$sortonfield = "ef.".$key;
|
||||||
if (! empty($extrafields->attribute_computed[$key])) $sortonfield='';
|
if (! empty($extrafields->attribute_computed[$key])) $sortonfield='';
|
||||||
print_liste_field_titre($extralabels[$key],$_SERVER["PHP_SELF"],$sortonfield,"",$param,($align?'align="'.$align.'"':''),$sortfield,$sortorder);
|
print_liste_field_titre($extralabels[$key],$_SERVER["PHP_SELF"],$sortonfield,"",$param,($align?'align="'.$align.'"':''),$sortfield,$sortorder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Hook fields
|
// Hook fields
|
||||||
$parameters=array('arrayfields'=>$arrayfields);
|
$parameters=array('arrayfields'=>$arrayfields);
|
||||||
@ -643,7 +649,7 @@ while ($i < min($num, $limit))
|
|||||||
$memberstatic->photo = $obj->photo;
|
$memberstatic->photo = $obj->photo;
|
||||||
|
|
||||||
if (! empty($obj->fk_soc)) {
|
if (! empty($obj->fk_soc)) {
|
||||||
$memberstatic->fetch_thirdparty();
|
$memberstatic->fetch_thirdparty();
|
||||||
$companyname=$memberstatic->thirdparty->name;
|
$companyname=$memberstatic->thirdparty->name;
|
||||||
} else {
|
} else {
|
||||||
$companyname=$obj->company;
|
$companyname=$obj->company;
|
||||||
@ -666,22 +672,22 @@ while ($i < min($num, $limit))
|
|||||||
// Firstname
|
// Firstname
|
||||||
if (! empty($arrayfields['d.firstname']['checked']))
|
if (! empty($arrayfields['d.firstname']['checked']))
|
||||||
{
|
{
|
||||||
print "<td>";
|
print "<td>";
|
||||||
print $obj->firstname;
|
print $obj->firstname;
|
||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
}
|
}
|
||||||
// Lastname
|
// Lastname
|
||||||
if (! empty($arrayfields['d.lastname']['checked']))
|
if (! empty($arrayfields['d.lastname']['checked']))
|
||||||
{
|
{
|
||||||
print "<td>";
|
print "<td>";
|
||||||
print $obj->lastname;
|
print $obj->lastname;
|
||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
}
|
}
|
||||||
// Company
|
// Company
|
||||||
if (! empty($arrayfields['d.company']['checked']))
|
if (! empty($arrayfields['d.company']['checked']))
|
||||||
{
|
{
|
||||||
print "<td>";
|
print "<td>";
|
||||||
print $companyname;
|
print $companyname;
|
||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
}
|
}
|
||||||
// Login
|
// Login
|
||||||
@ -697,7 +703,7 @@ while ($i < min($num, $limit))
|
|||||||
// Type label
|
// Type label
|
||||||
if (! empty($arrayfields['t.libelle']['checked']))
|
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="nowrap">';
|
print '<td class="nowrap">';
|
||||||
print $membertypestatic->getNomUrl(1,32);
|
print $membertypestatic->getNomUrl(1,32);
|
||||||
@ -706,69 +712,69 @@ while ($i < min($num, $limit))
|
|||||||
// Address
|
// Address
|
||||||
if (! empty($arrayfields['d.address']['checked']))
|
if (! empty($arrayfields['d.address']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="nocellnopadd">';
|
print '<td class="nocellnopadd">';
|
||||||
print $obj->address;
|
print $obj->address;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
// Zip
|
// Zip
|
||||||
if (! empty($arrayfields['d.zip']['checked']))
|
if (! empty($arrayfields['d.zip']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="nocellnopadd">';
|
print '<td class="nocellnopadd">';
|
||||||
print $obj->zip;
|
print $obj->zip;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
// Town
|
// Town
|
||||||
if (! empty($arrayfields['d.town']['checked']))
|
if (! empty($arrayfields['d.town']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="nocellnopadd">';
|
print '<td class="nocellnopadd">';
|
||||||
print $obj->town;
|
print $obj->town;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
// State
|
// State
|
||||||
if (! empty($arrayfields['state.nom']['checked']))
|
if (! empty($arrayfields['state.nom']['checked']))
|
||||||
{
|
{
|
||||||
print "<td>".$obj->state_name."</td>\n";
|
print "<td>".$obj->state_name."</td>\n";
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
// Country
|
// Country
|
||||||
if (! empty($arrayfields['country.code_iso']['checked']))
|
if (! empty($arrayfields['country.code_iso']['checked']))
|
||||||
{
|
{
|
||||||
print '<td align="center">';
|
print '<td align="center">';
|
||||||
$tmparray=getCountry($obj->country,'all');
|
$tmparray=getCountry($obj->country,'all');
|
||||||
print $tmparray['label'];
|
print $tmparray['label'];
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
// Phone pro
|
// Phone pro
|
||||||
if (! empty($arrayfields['d.phone']['checked']))
|
if (! empty($arrayfields['d.phone']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="nocellnopadd">';
|
print '<td class="nocellnopadd">';
|
||||||
print $obj->phone;
|
print $obj->phone;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
// Phone perso
|
// Phone perso
|
||||||
if (! empty($arrayfields['d.phone_perso']['checked']))
|
if (! empty($arrayfields['d.phone_perso']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="nocellnopadd">';
|
print '<td class="nocellnopadd">';
|
||||||
print $obj->phone_perso;
|
print $obj->phone_perso;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
// Phone mobile
|
// Phone mobile
|
||||||
if (! empty($arrayfields['d.phone_mobile']['checked']))
|
if (! empty($arrayfields['d.phone_mobile']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="nocellnopadd">';
|
print '<td class="nocellnopadd">';
|
||||||
print $obj->phone_mobile;
|
print $obj->phone_mobile;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
// EMail
|
// EMail
|
||||||
if (! empty($arrayfields['d.email']['checked']))
|
if (! empty($arrayfields['d.email']['checked']))
|
||||||
{
|
{
|
||||||
print "<td>".dol_print_email($obj->email,0,0,1)."</td>\n";
|
print "<td>".dol_print_email($obj->email,0,0,1)."</td>\n";
|
||||||
}
|
}
|
||||||
// End of subscription date
|
// End of subscription date
|
||||||
$datefin=$db->jdate($obj->datefin);
|
$datefin=$db->jdate($obj->datefin);
|
||||||
@ -779,7 +785,7 @@ while ($i < min($num, $limit))
|
|||||||
print '<td align="center" class="nowrap">';
|
print '<td align="center" class="nowrap">';
|
||||||
print dol_print_date($datefin,'day');
|
print dol_print_date($datefin,'day');
|
||||||
if ($memberstatic->hasDelay()) {
|
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").')';
|
$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);
|
print " ".img_warning($langs->trans("SubscriptionLate").$textlate);
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
@ -802,20 +808,20 @@ while ($i < min($num, $limit))
|
|||||||
// Extra fields
|
// Extra fields
|
||||||
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
|
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
|
||||||
{
|
{
|
||||||
foreach($extrafields->attribute_label as $key => $val)
|
foreach($extrafields->attribute_label as $key => $val)
|
||||||
{
|
{
|
||||||
if (! empty($arrayfields["ef.".$key]['checked']))
|
if (! empty($arrayfields["ef.".$key]['checked']))
|
||||||
{
|
{
|
||||||
print '<td';
|
print '<td';
|
||||||
$align=$extrafields->getAlignFlag($key);
|
$align=$extrafields->getAlignFlag($key);
|
||||||
if ($align) print ' align="'.$align.'"';
|
if ($align) print ' align="'.$align.'"';
|
||||||
print '>';
|
print '>';
|
||||||
$tmpkey='options_'.$key;
|
$tmpkey='options_'.$key;
|
||||||
print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1);
|
print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Fields from hook
|
// Fields from hook
|
||||||
$parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj);
|
$parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj);
|
||||||
@ -824,37 +830,37 @@ while ($i < min($num, $limit))
|
|||||||
// Date creation
|
// Date creation
|
||||||
if (! empty($arrayfields['d.datec']['checked']))
|
if (! empty($arrayfields['d.datec']['checked']))
|
||||||
{
|
{
|
||||||
print '<td align="center" class="nowrap">';
|
print '<td align="center" class="nowrap">';
|
||||||
print dol_print_date($db->jdate($obj->date_creation), 'dayhour', 'tzuser');
|
print dol_print_date($db->jdate($obj->date_creation), 'dayhour', 'tzuser');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
// Date modification
|
// Date modification
|
||||||
if (! empty($arrayfields['d.tms']['checked']))
|
if (! empty($arrayfields['d.tms']['checked']))
|
||||||
{
|
{
|
||||||
print '<td align="center" class="nowrap">';
|
print '<td align="center" class="nowrap">';
|
||||||
print dol_print_date($db->jdate($obj->date_update), 'dayhour', 'tzuser');
|
print dol_print_date($db->jdate($obj->date_update), 'dayhour', 'tzuser');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
// Status
|
// Status
|
||||||
if (! empty($arrayfields['d.statut']['checked']))
|
if (! empty($arrayfields['d.statut']['checked']))
|
||||||
{
|
{
|
||||||
print '<td align="right" class="nowrap">';
|
print '<td align="right" class="nowrap">';
|
||||||
print $memberstatic->LibStatut($obj->statut,$obj->subscription,$datefin,5);
|
print $memberstatic->LibStatut($obj->statut,$obj->subscription,$datefin,5);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
// Action column
|
// Action column
|
||||||
print '<td align="center">';
|
print '<td align="center">';
|
||||||
if ($massactionbutton || $massaction) // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
|
if ($massactionbutton || $massaction) // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
|
||||||
{
|
{
|
||||||
$selected=0;
|
$selected=0;
|
||||||
if (in_array($obj->rowid, $arrayofselected)) $selected=1;
|
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 '<input id="cb'.$obj->rowid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.'"'.($selected?' checked="checked"':'').'>';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
$i++;
|
$i++;
|
||||||
|
|||||||
@ -31,10 +31,10 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent_type.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent_type.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/adherents/class/subscription.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/adherents/class/subscription.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
||||||
if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountingjournal.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingjournal.class.php';
|
||||||
|
|
||||||
$langs->load("companies");
|
$langs->load("companies");
|
||||||
$langs->load("bills");
|
$langs->load("bills");
|
||||||
@ -815,7 +815,6 @@ if ($rowid > 0)
|
|||||||
if ($result)
|
if ($result)
|
||||||
{
|
{
|
||||||
$subscriptionstatic=new Subscription($db);
|
$subscriptionstatic=new Subscription($db);
|
||||||
$accountstatic=new Account($db);
|
|
||||||
|
|
||||||
$num = $db->num_rows($result);
|
$num = $db->num_rows($result);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
@ -834,31 +833,38 @@ if ($rowid > 0)
|
|||||||
}
|
}
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
|
$accountstatic=new Account($db);
|
||||||
|
|
||||||
while ($i < $num)
|
while ($i < $num)
|
||||||
{
|
{
|
||||||
$objp = $db->fetch_object($result);
|
$objp = $db->fetch_object($result);
|
||||||
print '<tr class="oddeven">';
|
|
||||||
$subscriptionstatic->ref=$objp->crowid;
|
$subscriptionstatic->ref=$objp->crowid;
|
||||||
$subscriptionstatic->id=$objp->crowid;
|
$subscriptionstatic->id=$objp->crowid;
|
||||||
|
|
||||||
|
print '<tr class="oddeven">';
|
||||||
print '<td>'.$subscriptionstatic->getNomUrl(1).'</td>';
|
print '<td>'.$subscriptionstatic->getNomUrl(1).'</td>';
|
||||||
print '<td align="center">'.dol_print_date($db->jdate($objp->datec),'dayhour')."</td>\n";
|
print '<td align="center">'.dol_print_date($db->jdate($objp->datec),'dayhour')."</td>\n";
|
||||||
print '<td align="center">'.dol_print_date($db->jdate($objp->dateh),'day')."</td>\n";
|
print '<td align="center">'.dol_print_date($db->jdate($objp->dateh),'day')."</td>\n";
|
||||||
print '<td align="center">'.dol_print_date($db->jdate($objp->datef),'day')."</td>\n";
|
print '<td align="center">'.dol_print_date($db->jdate($objp->datef),'day')."</td>\n";
|
||||||
print '<td align="right">'.price($objp->subscription).'</td>';
|
print '<td align="right">'.price($objp->subscription).'</td>';
|
||||||
if (! empty($conf->banque->enabled))
|
if (! empty($conf->banque->enabled))
|
||||||
{
|
{
|
||||||
print '<td align="right">';
|
print '<td align="right">';
|
||||||
if ($objp->bid)
|
if ($objp->bid)
|
||||||
{
|
{
|
||||||
$accountstatic->label=$objp->label;
|
$accountstatic->label=$objp->label;
|
||||||
$accountstatic->id=$objp->baid;
|
$accountstatic->id=$objp->baid;
|
||||||
$accountstatic->number=$objp->number;
|
$accountstatic->number=$objp->number;
|
||||||
$accountstatic->account_number=$objp->account_number;
|
$accountstatic->account_number=$objp->account_number;
|
||||||
|
|
||||||
$accountingjournal = new AccountingJournal($db);
|
if (! empty($conf->accounting->enabled))
|
||||||
$accountingjournal->fetch($objp->fk_accountancy_journal);
|
{
|
||||||
|
$accountingjournal = new AccountingJournal($db);
|
||||||
|
$accountingjournal->fetch($objp->fk_accountancy_journal);
|
||||||
|
|
||||||
$accountstatic->accountancy_journal = $accountingjournal->getNomUrl(0,1,1,'',1);
|
$accountstatic->accountancy_journal = $accountingjournal->getNomUrl(0,1,1,'',1);
|
||||||
|
}
|
||||||
|
|
||||||
$accountstatic->ref=$objp->ref;
|
$accountstatic->ref=$objp->ref;
|
||||||
print $accountstatic->getNomUrl(1);
|
print $accountstatic->getNomUrl(1);
|
||||||
@ -881,18 +887,21 @@ if ($rowid > 0)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Shon online payment link
|
if (($action != 'addsubscription' && $action != 'create_thirdparty'))
|
||||||
$useonlinepayment = (! empty($conf->paypal->enabled) || ! empty($conf->stripe->enabled) || ! empty($conf->paybox->enabled));
|
|
||||||
|
|
||||||
if ($useonlinepayment)
|
|
||||||
{
|
{
|
||||||
print '<br>';
|
// Shon online payment link
|
||||||
|
$useonlinepayment = (! empty($conf->paypal->enabled) || ! empty($conf->stripe->enabled) || ! empty($conf->paybox->enabled));
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
|
if ($useonlinepayment)
|
||||||
print showOnlinePaymentUrl('membersubscription', $object->ref);
|
{
|
||||||
|
print '<br>';
|
||||||
|
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
|
||||||
|
print showOnlinePaymentUrl('membersubscription', $object->ref);
|
||||||
|
print '<br>';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Add new subscription form
|
* Add new subscription form
|
||||||
*/
|
*/
|
||||||
@ -1092,12 +1101,12 @@ if ($rowid > 0)
|
|||||||
print '</a>)';
|
print '</a>)';
|
||||||
}
|
}
|
||||||
if (empty($conf->global->ADHERENT_VAT_FOR_SUBSCRIPTIONS) || $conf->global->ADHERENT_VAT_FOR_SUBSCRIPTIONS != 'defaultforfoundationcountry') print '. '.$langs->trans("NoVatOnSubscription",0);
|
if (empty($conf->global->ADHERENT_VAT_FOR_SUBSCRIPTIONS) || $conf->global->ADHERENT_VAT_FOR_SUBSCRIPTIONS != 'defaultforfoundationcountry') print '. '.$langs->trans("NoVatOnSubscription",0);
|
||||||
if (! empty($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS) && (! empty($conf->product->enabled) || ! empty($conf->service->enabled)))
|
if (! empty($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS) && (! empty($conf->product->enabled) || ! empty($conf->service->enabled)))
|
||||||
{
|
{
|
||||||
$prodtmp=new Product($db);
|
$prodtmp=new Product($db);
|
||||||
$prodtmp->fetch($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS);
|
$prodtmp->fetch($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS);
|
||||||
print '. '.$langs->transnoentitiesnoconv("ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS", $prodtmp->getNomUrl(1)); // must use noentitiesnoconv to avoid to encode html into getNomUrl of product
|
print '. '.$langs->transnoentitiesnoconv("ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS", $prodtmp->getNomUrl(1)); // must use noentitiesnoconv to avoid to encode html into getNomUrl of product
|
||||||
}
|
}
|
||||||
print '<br>';
|
print '<br>';
|
||||||
}
|
}
|
||||||
// Add invoice with payments
|
// Add invoice with payments
|
||||||
@ -1117,12 +1126,12 @@ if ($rowid > 0)
|
|||||||
print '</a>)';
|
print '</a>)';
|
||||||
}
|
}
|
||||||
if (empty($conf->global->ADHERENT_VAT_FOR_SUBSCRIPTIONS) || $conf->global->ADHERENT_VAT_FOR_SUBSCRIPTIONS != 'defaultforfoundationcountry') print '. '.$langs->trans("NoVatOnSubscription",0);
|
if (empty($conf->global->ADHERENT_VAT_FOR_SUBSCRIPTIONS) || $conf->global->ADHERENT_VAT_FOR_SUBSCRIPTIONS != 'defaultforfoundationcountry') print '. '.$langs->trans("NoVatOnSubscription",0);
|
||||||
if (! empty($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS) && (! empty($conf->product->enabled) || ! empty($conf->service->enabled)))
|
if (! empty($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS) && (! empty($conf->product->enabled) || ! empty($conf->service->enabled)))
|
||||||
{
|
{
|
||||||
$prodtmp=new Product($db);
|
$prodtmp=new Product($db);
|
||||||
$prodtmp->fetch($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS);
|
$prodtmp->fetch($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS);
|
||||||
print '. '.$langs->transnoentitiesnoconv("ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS", $prodtmp->getNomUrl(1)); // must use noentitiesnoconv to avoid to encode html into getNomUrl of product
|
print '. '.$langs->transnoentitiesnoconv("ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS", $prodtmp->getNomUrl(1)); // must use noentitiesnoconv to avoid to encode html into getNomUrl of product
|
||||||
}
|
}
|
||||||
print '<br>';
|
print '<br>';
|
||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|||||||
@ -25,7 +25,9 @@ require '../../main.inc.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/member.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/member.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/adherents/class/subscription.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/adherents/class/subscription.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
if (! empty($conf->banque->enabled)) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
||||||
|
}
|
||||||
|
|
||||||
$langs->load("companies");
|
$langs->load("companies");
|
||||||
$langs->load("bills");
|
$langs->load("bills");
|
||||||
@ -231,20 +233,20 @@ if ($user->rights->adherent->cotisation->creer && $action == 'edit')
|
|||||||
if (! empty($conf->banque->enabled))
|
if (! empty($conf->banque->enabled))
|
||||||
{
|
{
|
||||||
if ($conf->global->ADHERENT_BANK_USE || $object->fk_bank)
|
if ($conf->global->ADHERENT_BANK_USE || $object->fk_bank)
|
||||||
{
|
{
|
||||||
print '<tr><td>'.$langs->trans("BankTransactionLine").'</td><td class="valeur" colspan="2">';
|
print '<tr><td>'.$langs->trans("BankTransactionLine").'</td><td class="valeur" colspan="2">';
|
||||||
if ($object->fk_bank)
|
if ($object->fk_bank)
|
||||||
{
|
{
|
||||||
$bankline=new AccountLine($db);
|
$bankline=new AccountLine($db);
|
||||||
$result=$bankline->fetch($object->fk_bank);
|
$result=$bankline->fetch($object->fk_bank);
|
||||||
print $bankline->getNomUrl(1,0,'showall');
|
print $bankline->getNomUrl(1,0,'showall');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print $langs->trans("NoneF");
|
print $langs->trans("NoneF");
|
||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
@ -326,27 +328,26 @@ if ($rowid && $action != 'edit')
|
|||||||
// Amount
|
// Amount
|
||||||
print '<tr><td>'.$langs->trans("Label").'</td><td class="valeur">'.$object->note.'</td></tr>';
|
print '<tr><td>'.$langs->trans("Label").'</td><td class="valeur">'.$object->note.'</td></tr>';
|
||||||
|
|
||||||
// Bank line
|
// Bank line
|
||||||
if (! empty($conf->banque->enabled))
|
if (! empty($conf->banque->enabled))
|
||||||
{
|
{
|
||||||
if ($conf->global->ADHERENT_BANK_USE || $object->fk_bank)
|
if ($conf->global->ADHERENT_BANK_USE || $object->fk_bank)
|
||||||
{
|
{
|
||||||
print '<tr><td>'.$langs->trans("BankTransactionLine").'</td><td class="valeur">';
|
print '<tr><td>'.$langs->trans("BankTransactionLine").'</td><td class="valeur">';
|
||||||
if ($object->fk_bank)
|
if ($object->fk_bank)
|
||||||
{
|
{
|
||||||
$bankline=new AccountLine($db);
|
$bankline=new AccountLine($db);
|
||||||
$result=$bankline->fetch($object->fk_bank);
|
$result=$bankline->fetch($object->fk_bank);
|
||||||
print $bankline->getNomUrl(1,0,'showall');
|
print $bankline->getNomUrl(1,0,'showall');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print $langs->trans("NoneF");
|
print $langs->trans("NoneF");
|
||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
print "</table>\n";
|
print "</table>\n";
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
@ -389,8 +390,8 @@ if ($rowid && $action != 'edit')
|
|||||||
$filename = dol_sanitizeFileName($object->ref);
|
$filename = dol_sanitizeFileName($object->ref);
|
||||||
$filedir = $conf->facture->dir_output . '/' . dol_sanitizeFileName($object->ref);
|
$filedir = $conf->facture->dir_output . '/' . dol_sanitizeFileName($object->ref);
|
||||||
$urlsource = $_SERVER['PHP_SELF'] . '?facid=' . $object->id;
|
$urlsource = $_SERVER['PHP_SELF'] . '?facid=' . $object->id;
|
||||||
$genallowed = $user->rights->facture->creer;
|
$genallowed = $user->rights->facture->lire;
|
||||||
$delallowed = $user->rights->facture->supprimer;
|
$delallowed = $user->rights->facture->creer;
|
||||||
|
|
||||||
print $formfile->showdocuments('facture', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', '', '', $soc->default_lang);
|
print $formfile->showdocuments('facture', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', '', '', $soc->default_lang);
|
||||||
$somethingshown = $formfile->numoffiles;
|
$somethingshown = $formfile->numoffiles;
|
||||||
|
|||||||
@ -46,7 +46,7 @@ $limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit;
|
|||||||
$sortfield = GETPOST("sortfield",'alpha');
|
$sortfield = GETPOST("sortfield",'alpha');
|
||||||
$sortorder = GETPOST("sortorder",'alpha');
|
$sortorder = GETPOST("sortorder",'alpha');
|
||||||
$page = GETPOST("page",'int');
|
$page = GETPOST("page",'int');
|
||||||
if ($page == -1 || $page == null) { $page = 0 ; }
|
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
||||||
$offset = $limit * $page ;
|
$offset = $limit * $page ;
|
||||||
$pageprev = $page - 1;
|
$pageprev = $page - 1;
|
||||||
$pagenext = $page + 1;
|
$pagenext = $page + 1;
|
||||||
@ -177,9 +177,8 @@ if ($result)
|
|||||||
//'presend'=>$langs->trans("SendByMail"),
|
//'presend'=>$langs->trans("SendByMail"),
|
||||||
//'builddoc'=>$langs->trans("PDFMerge"),
|
//'builddoc'=>$langs->trans("PDFMerge"),
|
||||||
);
|
);
|
||||||
//if($user->rights->facture->creer) $arrayofmassactions['createbills']=$langs->trans("CreateInvoiceForThisCustomer");
|
if ($user->rights->adherent->supprimer) $arrayofmassactions['predelete']=$langs->trans("Delete");
|
||||||
if ($user->rights->adherent->supprimer) $arrayofmassactions['delete']=$langs->trans("Delete");
|
if (in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array();
|
||||||
//if ($massaction == 'presend' || $massaction == 'createbills') $arrayofmassactions=array();
|
|
||||||
$massactionbutton=$form->selectMassAction('', $arrayofmassactions);
|
$massactionbutton=$form->selectMassAction('', $arrayofmassactions);
|
||||||
|
|
||||||
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
||||||
@ -194,6 +193,12 @@ if ($result)
|
|||||||
|
|
||||||
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_generic.png', 0, '', '', $limit);
|
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_generic.png', 0, '', '', $limit);
|
||||||
|
|
||||||
|
$topicmail="Information";
|
||||||
|
$modelmail="subscription";
|
||||||
|
$objecttmp=new Subscription($db);
|
||||||
|
$trackid='sub'.$object->id;
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php';
|
||||||
|
|
||||||
if ($sall)
|
if ($sall)
|
||||||
{
|
{
|
||||||
print $langs->trans("Filter")." (".$langs->trans("Ref").", ".$langs->trans("Lastname").", ".$langs->trans("Firstname").", ".$langs->trans("EMail").", ".$langs->trans("Address")." ".$langs->trans("or")." ".$langs->trans("Town")."): ".$sall;
|
print $langs->trans("Filter")." (".$langs->trans("Ref").", ".$langs->trans("Lastname").", ".$langs->trans("Firstname").", ".$langs->trans("EMail").", ".$langs->trans("Address")." ".$langs->trans("or")." ".$langs->trans("Town")."): ".$sall;
|
||||||
@ -304,22 +309,22 @@ if ($result)
|
|||||||
print dol_trunc($obj->note,32);
|
print dol_trunc($obj->note,32);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
// Banque
|
// Banque
|
||||||
if (! empty($conf->banque->enabled))
|
if (! empty($conf->banque->enabled))
|
||||||
{
|
{
|
||||||
if ($obj->fk_account)
|
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;
|
//$accountstatic->label=$obj->label;
|
||||||
print '<td>'.$accountstatic->getNomUrl(1).'</td>';
|
print '<td>'.$accountstatic->getNomUrl(1).'</td>';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print "<td>";
|
print "<td>";
|
||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Date start
|
// Date start
|
||||||
print '<td align="center">'.dol_print_date($db->jdate($obj->dateadh),'day')."</td>\n";
|
print '<td align="center">'.dol_print_date($db->jdate($obj->dateadh),'day')."</td>\n";
|
||||||
|
|||||||
@ -107,7 +107,7 @@ if ($action == 'add' && $user->rights->adherent->configurer)
|
|||||||
$object->subscription = (int) trim($subscription);
|
$object->subscription = (int) trim($subscription);
|
||||||
$object->note = trim($comment);
|
$object->note = trim($comment);
|
||||||
$object->mail_valid = trim($mail_valid);
|
$object->mail_valid = trim($mail_valid);
|
||||||
$object->vote = (boolean) trim($vote);
|
$object->vote = trim($vote);
|
||||||
|
|
||||||
// Fill array 'array_options' with data from add form
|
// Fill array 'array_options' with data from add form
|
||||||
$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
|
$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
|
||||||
@ -160,7 +160,7 @@ if ($action == 'update' && $user->rights->adherent->configurer)
|
|||||||
$object->subscription = (int) trim($subscription);
|
$object->subscription = (int) trim($subscription);
|
||||||
$object->note = trim($comment);
|
$object->note = trim($comment);
|
||||||
$object->mail_valid = trim($mail_valid);
|
$object->mail_valid = trim($mail_valid);
|
||||||
$object->vote = (boolean) trim($vote);
|
$object->vote = trim($vote);
|
||||||
|
|
||||||
// Fill array 'array_options' with data from add form
|
// Fill array 'array_options' with data from add form
|
||||||
$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
|
$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
|
||||||
@ -204,10 +204,10 @@ if ($action == 'confirm_delete' && $user->rights->adherent->configurer)
|
|||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
|
|
||||||
llxHeader('',$langs->trans("MembersTypeSetup"),'EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_Miembros');
|
|
||||||
|
|
||||||
$form=new Form($db);
|
$form=new Form($db);
|
||||||
|
|
||||||
|
llxHeader('',$langs->trans("MembersTypeSetup"),'EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_Miembros');
|
||||||
|
|
||||||
|
|
||||||
// List of members type
|
// List of members type
|
||||||
if (! $rowid && $action != 'create' && $action != 'edit')
|
if (! $rowid && $action != 'create' && $action != 'edit')
|
||||||
@ -252,11 +252,21 @@ if (! $rowid && $action != 'create' && $action != 'edit')
|
|||||||
print '<th> </th>';
|
print '<th> </th>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
|
$membertype = new AdherentType($db);
|
||||||
|
|
||||||
while ($i < $num)
|
while ($i < $num)
|
||||||
{
|
{
|
||||||
$objp = $db->fetch_object($result);
|
$objp = $db->fetch_object($result);
|
||||||
|
|
||||||
|
$membertype->id = $objp->rowid;
|
||||||
|
$membertype->ref = $objp->rowid;
|
||||||
|
$membertype->label = $objp->rowid;
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td><a href="'.$_SERVER["PHP_SELF"].'?rowid='.$objp->rowid.'">'.img_object($langs->trans("ShowType"),'group').' '.$objp->rowid.'</a></td>';
|
print '<td>';
|
||||||
|
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>'.dol_escape_htmltag($objp->label).'</td>';
|
||||||
print '<td align="center">'.yn($objp->subscription).'</td>';
|
print '<td align="center">'.yn($objp->subscription).'</td>';
|
||||||
print '<td align="center">'.yn($objp->vote).'</td>';
|
print '<td align="center">'.yn($objp->vote).'</td>';
|
||||||
@ -440,11 +450,11 @@ if ($rowid > 0)
|
|||||||
}
|
}
|
||||||
if ($status != '')
|
if ($status != '')
|
||||||
{
|
{
|
||||||
$sql.= " AND d.statut IN (".$db->escape($status).")"; // Peut valoir un nombre ou liste de nombre separes par virgules
|
$sql.= natural_search('d.statut', $status, 2);
|
||||||
}
|
}
|
||||||
if ($action == 'search')
|
if ($action == 'search')
|
||||||
{
|
{
|
||||||
if (GETPOST('search'))
|
if (GETPOST('search','alpha'))
|
||||||
{
|
{
|
||||||
$sql.= natural_search(array("d.firstname","d.lastname"), GETPOST('search','alpha'));
|
$sql.= natural_search(array("d.firstname","d.lastname"), GETPOST('search','alpha'));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -38,6 +38,7 @@ $langs->load("agenda");
|
|||||||
$action = GETPOST('action','alpha');
|
$action = GETPOST('action','alpha');
|
||||||
$cancel = GETPOST('cancel','alpha');
|
$cancel = GETPOST('cancel','alpha');
|
||||||
|
|
||||||
|
$search_event = GETPOST('search_event', 'alpha');
|
||||||
|
|
||||||
// Get list of triggers available
|
// Get list of triggers available
|
||||||
$sql = "SELECT a.rowid, a.code, a.label, a.elementtype";
|
$sql = "SELECT a.rowid, a.code, a.label, a.elementtype";
|
||||||
@ -70,6 +71,12 @@ else
|
|||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Purge search criteria
|
||||||
|
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_event = '';
|
||||||
|
}
|
||||||
|
|
||||||
if ($action == "save" && empty($cancel))
|
if ($action == "save" && empty($cancel))
|
||||||
{
|
{
|
||||||
$i=0;
|
$i=0;
|
||||||
@ -78,10 +85,13 @@ if ($action == "save" && empty($cancel))
|
|||||||
|
|
||||||
foreach ($triggers as $trigger)
|
foreach ($triggers as $trigger)
|
||||||
{
|
{
|
||||||
$param='MAIN_AGENDA_ACTIONAUTO_'.$trigger['code'];
|
$keyparam='MAIN_AGENDA_ACTIONAUTO_'.$trigger['code'];
|
||||||
//print "param=".$param." - ".$_POST[$param];
|
//print "param=".$param." - ".$_POST[$param];
|
||||||
$res = dolibarr_set_const($db,$param,(GETPOST($param,'alpha')?GETPOST($param,'alpha'):''),'chaine',0,'',$conf->entity);
|
if ($search_event === '' || preg_match('/'.preg_quote($search_event,'/').'/i', $keyparam))
|
||||||
if (! $res > 0) $error++;
|
{
|
||||||
|
$res = dolibarr_set_const($db,$keyparam,(GETPOST($keyparam,'alpha')?GETPOST($keyparam,'alpha'):''),'chaine',0,'',$conf->entity);
|
||||||
|
if (! $res > 0) $error++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! $error)
|
if (! $error)
|
||||||
@ -140,19 +150,33 @@ print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
|
|||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
print '<input type="hidden" name="action" value="save">';
|
print '<input type="hidden" name="action" value="save">';
|
||||||
|
|
||||||
|
$param = '';
|
||||||
|
$param.= '&search_event='.urlencode($search_event);
|
||||||
|
|
||||||
$head=agenda_prepare_head();
|
$head=agenda_prepare_head();
|
||||||
|
|
||||||
dol_fiche_head($head, 'autoactions', $langs->trans("Agenda"), -1, 'action');
|
dol_fiche_head($head, 'autoactions', $langs->trans("Agenda"), -1, 'action');
|
||||||
|
|
||||||
print $langs->trans("AgendaAutoActionDesc")."<br>\n";
|
print $langs->trans("AgendaAutoActionDesc")."<br>\n";
|
||||||
print $langs->trans("OnlyActiveElementsAreShown").'<br>';
|
print $langs->trans("OnlyActiveElementsAreShown", 'modules.php').'<br>';
|
||||||
print "<br>\n";
|
print "<br>\n";
|
||||||
|
|
||||||
|
print '<div class="div-table-responsive">'; // You can use div-table-responsive-no-min if you dont need reserved height for your table
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td colspan="2">'.$langs->trans("ActionsEvents").'</td>';
|
print '<td class="liste_titre"><input type="text" name="search_event" value="'.dol_escape_htmltag($search_event).'"></td>';
|
||||||
print '<td><a href="'.$_SERVER["PHP_SELF"].'?action=selectall">'.$langs->trans("All").'</a>/<a href="'.$_SERVER["PHP_SELF"].'?action=selectnone">'.$langs->trans("None").'</a>';
|
print '<td class="liste_titre"></td>';
|
||||||
|
// Action column
|
||||||
|
print '<td class="liste_titre" align="right">';
|
||||||
|
$searchpicto=$form->showFilterButtons();
|
||||||
|
print $searchpicto;
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
print '</tr>'."\n";
|
||||||
|
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print '<th class="liste_titre" colspan="2">'.$langs->trans("ActionsEvents").'</th>';
|
||||||
|
print '<th class="liste_titre"><a href="'.$_SERVER["PHP_SELF"].'?action=selectall'.($param?$param:'').'">'.$langs->trans("All").'</a>/<a href="'.$_SERVER["PHP_SELF"].'?action=selectnone'.($param?$param:'').'">'.$langs->trans("None").'</a></th>';
|
||||||
print '</tr>'."\n";
|
print '</tr>'."\n";
|
||||||
// Show each trigger (list is in c_action_trigger)
|
// Show each trigger (list is in c_action_trigger)
|
||||||
if (! empty($triggers))
|
if (! empty($triggers))
|
||||||
@ -173,19 +197,22 @@ if (! empty($triggers))
|
|||||||
if ($trigger['code'] == 'FICHINTER_CLASSIFY_BILLED' && empty($conf->global->FICHINTER_CLASSIFY_BILLED)) continue;
|
if ($trigger['code'] == 'FICHINTER_CLASSIFY_BILLED' && empty($conf->global->FICHINTER_CLASSIFY_BILLED)) continue;
|
||||||
if ($trigger['code'] == 'FICHINTER_CLASSIFY_UNBILLED' && empty($conf->global->FICHINTER_CLASSIFY_BILLED)) continue;
|
if ($trigger['code'] == 'FICHINTER_CLASSIFY_UNBILLED' && empty($conf->global->FICHINTER_CLASSIFY_BILLED)) continue;
|
||||||
|
|
||||||
|
if ($search_event === '' || preg_match('/'.preg_quote($search_event,'/').'/i', $trigger['code']))
|
||||||
print '<tr class="oddeven">';
|
{
|
||||||
print '<td>'.$trigger['code'].'</td>';
|
print '<tr class="oddeven">';
|
||||||
print '<td>'.$trigger['label'].'</td>';
|
print '<td>'.$trigger['code'].'</td>';
|
||||||
print '<td align="right" width="40">';
|
print '<td>'.$trigger['label'].'</td>';
|
||||||
$key='MAIN_AGENDA_ACTIONAUTO_'.$trigger['code'];
|
print '<td align="right" width="40">';
|
||||||
$value=$conf->global->$key;
|
$key='MAIN_AGENDA_ACTIONAUTO_'.$trigger['code'];
|
||||||
print '<input class="oddeven" type="checkbox" name="'.$key.'" value="1"'.((($action=='selectall'||$value) && $action!="selectnone")?' checked':'').'>';
|
$value=$conf->global->$key;
|
||||||
print '</td></tr>'."\n";
|
print '<input class="oddeven" type="checkbox" name="'.$key.'" value="1"'.((($action=='selectall'||$value) && $action!="selectnone")?' checked':'').'>';
|
||||||
|
print '</td></tr>'."\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
print '</div>';
|
||||||
|
|
||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
|
|
||||||
|
|||||||
@ -44,7 +44,7 @@ $form = new Form($db);
|
|||||||
// List of supported format
|
// List of supported format
|
||||||
$tmptype2label=ExtraFields::$type2label;
|
$tmptype2label=ExtraFields::$type2label;
|
||||||
$type2label=array('');
|
$type2label=array('');
|
||||||
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val);
|
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->transnoentitiesnoconv($val);
|
||||||
|
|
||||||
$action=GETPOST('action', 'alpha');
|
$action=GETPOST('action', 'alpha');
|
||||||
$attrname=GETPOST('attrname', 'alpha');
|
$attrname=GETPOST('attrname', 'alpha');
|
||||||
|
|||||||
@ -352,6 +352,15 @@ else
|
|||||||
}
|
}
|
||||||
print '</td></tr>'."\n";
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
|
// AGENDA_DEFAULT_VIEW
|
||||||
|
print '<tr class="oddeven">'."\n";
|
||||||
|
print '<td>'.$langs->trans("AGENDA_DEFAULT_VIEW").'</td>'."\n";
|
||||||
|
print '<td align="center"> </td>'."\n";
|
||||||
|
print '<td align="right">'."\n";
|
||||||
|
$tmplist=array('show_list'=>$langs->trans("ViewList"), 'show_month'=>$langs->trans("ViewCal"), 'show_week'=>$langs->trans("ViewWeek"), 'show_day'=>$langs->trans("ViewDay"), 'show_peruser'=>$langs->trans("ViewPerUser"));
|
||||||
|
print $form->selectarray('AGENDA_DEFAULT_VIEW', $tmplist, $conf->global->AGENDA_DEFAULT_VIEW);
|
||||||
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
if (! empty($conf->global->AGENDA_USE_EVENT_TYPE))
|
if (! empty($conf->global->AGENDA_USE_EVENT_TYPE))
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -381,15 +390,6 @@ print '<td align="right">'."\n";
|
|||||||
$formactions->form_select_status_action('agenda', $conf->global->AGENDA_DEFAULT_FILTER_STATUS, 1, 'AGENDA_DEFAULT_FILTER_STATUS', 1, 2, 'minwidth100');
|
$formactions->form_select_status_action('agenda', $conf->global->AGENDA_DEFAULT_FILTER_STATUS, 1, 'AGENDA_DEFAULT_FILTER_STATUS', 1, 2, 'minwidth100');
|
||||||
print '</td></tr>'."\n";
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
// AGENDA_DEFAULT_VIEW
|
|
||||||
print '<tr class="oddeven">'."\n";
|
|
||||||
print '<td>'.$langs->trans("AGENDA_DEFAULT_VIEW").'</td>'."\n";
|
|
||||||
print '<td align="center"> </td>'."\n";
|
|
||||||
print '<td align="right">'."\n";
|
|
||||||
$tmplist=array('show_list'=>$langs->trans("ViewList"), 'show_month'=>$langs->trans("ViewCal"), 'show_week'=>$langs->trans("ViewWeek"), 'show_day'=>$langs->trans("ViewDay"), 'show_peruser'=>$langs->trans("ViewPerUser"));
|
|
||||||
print $form->selectarray('AGENDA_DEFAULT_VIEW', $tmplist, $conf->global->AGENDA_DEFAULT_VIEW);
|
|
||||||
print '</td></tr>'."\n";
|
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
|
|||||||
@ -39,7 +39,7 @@ $form = new Form($db);
|
|||||||
// List of supported format
|
// List of supported format
|
||||||
$tmptype2label=ExtraFields::$type2label;
|
$tmptype2label=ExtraFields::$type2label;
|
||||||
$type2label=array('');
|
$type2label=array('');
|
||||||
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val);
|
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->transnoentitiesnoconv($val);
|
||||||
|
|
||||||
$action=GETPOST('action', 'alpha');
|
$action=GETPOST('action', 'alpha');
|
||||||
$attrname=GETPOST('attrname', 'alpha');
|
$attrname=GETPOST('attrname', 'alpha');
|
||||||
|
|||||||
@ -258,14 +258,14 @@ $var=true;
|
|||||||
|
|
||||||
$var=! $var;
|
$var=! $var;
|
||||||
|
|
||||||
$substitutionarray=pdf_getSubstitutionArray($langs);
|
$substitutionarray=pdf_getSubstitutionArray($langs, null, null, 2);
|
||||||
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
||||||
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
||||||
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
||||||
$htmltext.='</i>';
|
$htmltext.='</i>';
|
||||||
|
|
||||||
print '<tr class="oddeven"><td colspan="2">';
|
print '<tr class="oddeven"><td colspan="2">';
|
||||||
print $form->textwithpicto($langs->trans("FreeLegalTextOnChequeReceipts"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext).'<br>';
|
print $form->textwithpicto($langs->trans("FreeLegalTextOnChequeReceipts"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext, 1, 'help', '', 0, 2, 'freetexttooltip').'<br>';
|
||||||
$variablename='BANK_CHEQUERECEIPT_FREE_TEXT';
|
$variablename='BANK_CHEQUERECEIPT_FREE_TEXT';
|
||||||
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -539,7 +539,7 @@ print "<td> </td>\n";
|
|||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
$var=true;
|
$var=true;
|
||||||
|
|
||||||
$substitutionarray=pdf_getSubstitutionArray($langs);
|
$substitutionarray=pdf_getSubstitutionArray($langs, null, null, 2);
|
||||||
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
||||||
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
||||||
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
||||||
@ -550,7 +550,7 @@ print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
|
|||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
print '<input type="hidden" name="action" value="set_ORDER_FREE_TEXT">';
|
print '<input type="hidden" name="action" value="set_ORDER_FREE_TEXT">';
|
||||||
print '<tr class="oddeven"><td colspan="2">';
|
print '<tr class="oddeven"><td colspan="2">';
|
||||||
print $form->textwithpicto($langs->trans("FreeLegalTextOnOrders"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext).'<br>';
|
print $form->textwithpicto($langs->trans("FreeLegalTextOnOrders"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext, 1, 'help', '', 0, 2, 'freetexttooltip').'<br>';
|
||||||
$variablename='ORDER_FREE_TEXT';
|
$variablename='ORDER_FREE_TEXT';
|
||||||
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
||||||
{
|
{
|
||||||
@ -573,7 +573,7 @@ print "<form method=\"post\" action=\"".$_SERVER["PHP_SELF"]."\">";
|
|||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
print "<input type=\"hidden\" name=\"action\" value=\"set_COMMANDE_DRAFT_WATERMARK\">";
|
print "<input type=\"hidden\" name=\"action\" value=\"set_COMMANDE_DRAFT_WATERMARK\">";
|
||||||
print '<tr class="oddeven"><td>';
|
print '<tr class="oddeven"><td>';
|
||||||
print $form->textwithpicto($langs->trans("WatermarkOnDraftOrders"), $htmltext);
|
print $form->textwithpicto($langs->trans("WatermarkOnDraftOrders"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'<br>';
|
||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
print '<input class="flat minwidth200" type="text" name="COMMANDE_DRAFT_WATERMARK" value="'.$conf->global->COMMANDE_DRAFT_WATERMARK.'">';
|
print '<input class="flat minwidth200" type="text" name="COMMANDE_DRAFT_WATERMARK" value="'.$conf->global->COMMANDE_DRAFT_WATERMARK.'">';
|
||||||
print '</td><td align="right">';
|
print '</td><td align="right">';
|
||||||
|
|||||||
@ -54,7 +54,7 @@ $list = array(
|
|||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$accounting_mode = defined('ACCOUNTING_MODE')?ACCOUNTING_MODE:'RECETTES-DEPENSES';
|
$accounting_mode = empty($conf->global->ACCOUNTING_MODE) ? 'RECETTES-DEPENSES' : $conf->global->ACCOUNTING_MODE;
|
||||||
|
|
||||||
if ($action == 'update')
|
if ($action == 'update')
|
||||||
{
|
{
|
||||||
|
|||||||
@ -474,7 +474,7 @@ print '<td align="center" width="60">'.$langs->trans("Value").'</td>';
|
|||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
$var=true;
|
$var=true;
|
||||||
|
|
||||||
$substitutionarray=pdf_getSubstitutionArray($langs, array('objectamount'));
|
$substitutionarray=pdf_getSubstitutionArray($langs, array('objectamount'), null, 2);
|
||||||
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
||||||
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
||||||
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
||||||
@ -482,8 +482,7 @@ $htmltext.='</i>';
|
|||||||
|
|
||||||
$var=! $var;
|
$var=! $var;
|
||||||
print '<tr class="oddeven"><td colspan="2">';
|
print '<tr class="oddeven"><td colspan="2">';
|
||||||
//print $form->textwithpicto($langs->trans("FreeLegalTextOnContracts"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext, 1, 'help', '', 0, 2, 'tooltiphelp');
|
print $form->textwithpicto($langs->trans("FreeLegalTextOnContracts"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext, 1, 'help', '', 0, 2, 'tooltiphelp');
|
||||||
print $form->textwithpicto($langs->trans("FreeLegalTextOnContracts"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext, 1, 'help', '', 0, 2);
|
|
||||||
print '<br>';
|
print '<br>';
|
||||||
$variablename='CONTRACT_FREE_TEXT';
|
$variablename='CONTRACT_FREE_TEXT';
|
||||||
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
||||||
@ -501,8 +500,7 @@ print '</td></tr>'."\n";
|
|||||||
//Use draft Watermark
|
//Use draft Watermark
|
||||||
|
|
||||||
print '<tr class="oddeven"><td>';
|
print '<tr class="oddeven"><td>';
|
||||||
//print $form->textwithpicto($langs->trans("WatermarkOnDraftContractCards"), $htmltext, 1, 'help', '', 0, 2, 'tooltiphelp');
|
print $form->textwithpicto($langs->trans("WatermarkOnDraftContractCards"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'<br>';
|
||||||
print $form->textwithpicto($langs->trans("WatermarkOnDraftContractCards"), $htmltext, 1, 'help', '', 0, 2);
|
|
||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
print '<input size="50" class="flat" type="text" name="CONTRACT_DRAFT_WATERMARK" value="'.$conf->global->CONTRACT_DRAFT_WATERMARK.'">';
|
print '<input size="50" class="flat" type="text" name="CONTRACT_DRAFT_WATERMARK" value="'.$conf->global->CONTRACT_DRAFT_WATERMARK.'">';
|
||||||
print '</td></tr>'."\n";
|
print '</td></tr>'."\n";
|
||||||
|
|||||||
@ -276,7 +276,7 @@ if ($mode != 'focus')
|
|||||||
{
|
{
|
||||||
$texthelp.=$key.' -> '.$val.'<br>';
|
$texthelp.=$key.' -> '.$val.'<br>';
|
||||||
}
|
}
|
||||||
$textvalue=$form->textwithpicto($langs->trans("Value"), $texthelp, 1, 'help', '', 0, 2, ''); // No tooltip on click, this also triggers the sort click
|
$textvalue=$form->textwithpicto($langs->trans("Value"), $texthelp, 1, 'help', '', 0, 2, 'subsitutiontooltip');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -74,12 +74,16 @@ $active = 1;
|
|||||||
$sortfield = GETPOST("sortfield",'alpha');
|
$sortfield = GETPOST("sortfield",'alpha');
|
||||||
$sortorder = GETPOST("sortorder",'alpha');
|
$sortorder = GETPOST("sortorder",'alpha');
|
||||||
$page = GETPOST("page",'int');
|
$page = GETPOST("page",'int');
|
||||||
if ($page == -1 || $page == null) { $page = 0 ; }
|
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
||||||
$offset = $listlimit * $page ;
|
$offset = $listlimit * $page ;
|
||||||
$pageprev = $page - 1;
|
$pageprev = $page - 1;
|
||||||
$pagenext = $page + 1;
|
$pagenext = $page + 1;
|
||||||
|
|
||||||
$search_country_id = GETPOST('search_country_id','int');
|
$search_country_id = GETPOST('search_country_id','int');
|
||||||
|
if ($search_country_id == '' && ($id == 2 || $id == 3 || $id == 10)) // Not a so good idea to force on current country for all dictionaries. Some tables have entries that are for all countries, we must be able to see them, so this is done for dedicated dictionaries only.
|
||||||
|
{
|
||||||
|
$search_country_id = $mysoc->country_id;
|
||||||
|
}
|
||||||
$search_code = GETPOST('search_code','alpha');
|
$search_code = GETPOST('search_code','alpha');
|
||||||
|
|
||||||
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
||||||
@ -89,7 +93,7 @@ $hookmanager->initHooks(array('admin'));
|
|||||||
// Put here declaration of dictionaries properties
|
// Put here declaration of dictionaries properties
|
||||||
|
|
||||||
// Sort order to show dictionary (0 is space). All other dictionaries (added by modules) will be at end of this.
|
// Sort order to show dictionary (0 is space). All other dictionaries (added by modules) will be at end of this.
|
||||||
$taborder=array(9,0,4,3,2,0,1,8,19,16,27,0,5,11,0,33,34,0,6,0,29,0,7,17,35,36,24,28,0,10,23,12,13,0,14,0,22,20,18,21,0,15,30,0,26,0,);
|
$taborder=array(9,0,4,3,2,0,1,8,19,16,27,0,5,11,0,33,34,0,6,0,29,0,7,24,28,17,35,36,0,10,23,12,13,0,14,0,22,20,18,21,0,15,30,0,26,0,);
|
||||||
|
|
||||||
// Name of SQL tables of dictionaries
|
// Name of SQL tables of dictionaries
|
||||||
$tabname=array();
|
$tabname=array();
|
||||||
@ -281,6 +285,8 @@ $tabfield[29]= "code,label,percent,position";
|
|||||||
$tabfield[30]= "code,name,paper_size,orientation,metric,leftmargin,topmargin,nx,ny,spacex,spacey,width,height,font_size,custom_x,custom_y";
|
$tabfield[30]= "code,name,paper_size,orientation,metric,leftmargin,topmargin,nx,ny,spacex,spacey,width,height,font_size,custom_x,custom_y";
|
||||||
//$tabfield[31]= "pcg_version,label";
|
//$tabfield[31]= "pcg_version,label";
|
||||||
//$tabfield[32]= "code,label,range_account,sens,category_type,formula,position,country_id,country";
|
//$tabfield[32]= "code,label,range_account,sens,category_type,formula,position,country_id,country";
|
||||||
|
$tabfield[33]= "code,label";
|
||||||
|
$tabfield[34]= "code,label";
|
||||||
$tabfield[35]= "label";
|
$tabfield[35]= "label";
|
||||||
$tabfield[36]= "range_ik,fk_c_exp_tax_cat";
|
$tabfield[36]= "range_ik,fk_c_exp_tax_cat";
|
||||||
|
|
||||||
@ -1009,6 +1015,11 @@ if ($id)
|
|||||||
$sql.=$db->plimit($listlimit+1,$offset);
|
$sql.=$db->plimit($listlimit+1,$offset);
|
||||||
//print $sql;
|
//print $sql;
|
||||||
|
|
||||||
|
if (empty($tabfield[$id]))
|
||||||
|
{
|
||||||
|
dol_print_error($db, 'The table with id '.$id.' has no array tabfield defined');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
$fieldlist=explode(',',$tabfield[$id]);
|
$fieldlist=explode(',',$tabfield[$id]);
|
||||||
|
|
||||||
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$id.'" method="POST">';
|
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$id.'" method="POST">';
|
||||||
@ -1392,6 +1403,7 @@ if ($id)
|
|||||||
|
|
||||||
foreach ($fieldlist as $field => $value)
|
foreach ($fieldlist as $field => $value)
|
||||||
{
|
{
|
||||||
|
//var_dump($fieldlist);
|
||||||
$showfield=1;
|
$showfield=1;
|
||||||
$align="left";
|
$align="left";
|
||||||
$valuetoshow=$obj->{$fieldlist[$field]};
|
$valuetoshow=$obj->{$fieldlist[$field]};
|
||||||
@ -1749,7 +1761,7 @@ $db->close();
|
|||||||
* @param Object $obj If we show a particular record, obj is filled with record fields
|
* @param Object $obj If we show a particular record, obj is filled with record fields
|
||||||
* @param string $tabname Name of SQL table
|
* @param string $tabname Name of SQL table
|
||||||
* @param string $context 'add'=Output field for the "add form", 'edit'=Output field for the "edit form", 'hide'=Output field for the "add form" but we dont want it to be rendered
|
* @param string $context 'add'=Output field for the "add form", 'edit'=Output field for the "edit form", 'hide'=Output field for the "add form" but we dont want it to be rendered
|
||||||
* @return string '' or value of entity into table
|
* @return string '' or value of entity into table
|
||||||
*/
|
*/
|
||||||
function fieldList($fieldlist, $obj='', $tabname='', $context='')
|
function fieldList($fieldlist, $obj='', $tabname='', $context='')
|
||||||
{
|
{
|
||||||
|
|||||||
@ -25,117 +25,119 @@ include_once DOL_DOCUMENT_ROOT.'/admin/dolistore/class/PSWebServiceLibrary.class
|
|||||||
*/
|
*/
|
||||||
class Dolistore
|
class Dolistore
|
||||||
{
|
{
|
||||||
// params
|
// params
|
||||||
public $start // beginning of pagination
|
public $start; // beginning of pagination
|
||||||
, $end // end of pagination
|
public $end; // end of pagination
|
||||||
, $per_page // pagination: display per page
|
public $per_page; // pagination: display per page
|
||||||
, $categorie // the current categorie
|
public $categorie; // the current categorie
|
||||||
, $search // the search keywords
|
public $search; // the search keywords
|
||||||
// setups
|
|
||||||
, $url // the url of this page
|
|
||||||
, $shop_url // the url of the shop
|
|
||||||
, $vat_rate // the vat rate used in the shop (prices are provided without vat)
|
|
||||||
, $lang // the integer representing the lang in the store
|
|
||||||
, $debug_api; // usefull if no dialog
|
|
||||||
|
|
||||||
/**
|
// setups
|
||||||
* Constructor
|
public $url; // the url of this page
|
||||||
*/
|
public $shop_url; // the url of the shop
|
||||||
function __construct()
|
public $vat_rate; // the vat rate used in the shop (prices are provided without vat)
|
||||||
{
|
public $lang; // the integer representing the lang in the store
|
||||||
global $conf, $langs;
|
public $debug_api; // usefull if no dialog
|
||||||
|
|
||||||
$this->url = DOL_URL_ROOT.'/admin/modules.php?mode=marketplace';
|
|
||||||
$this->shop_url = 'https://www.dolistore.com/index.php?controller=product&id_product=';
|
|
||||||
$this->vat_rate = 1.2; // 20% de TVA
|
|
||||||
$this->debug_api = false;
|
|
||||||
|
|
||||||
$langtmp = explode('_', $langs->defaultlang);
|
/**
|
||||||
$lang = $langtmp[0];
|
* Constructor
|
||||||
$lang_array = array('en'=>0, 'fr'=>1, 'es'=>2, 'it'=>3, 'de'=>4); // Into table ps_lang of Prestashop - 1
|
*/
|
||||||
if (! in_array($lang, array_keys($lang_array))) $lang = 'en';
|
function __construct()
|
||||||
$this->lang = $lang_array[$lang];
|
{
|
||||||
}
|
global $conf, $langs;
|
||||||
|
|
||||||
/**
|
$this->url = DOL_URL_ROOT.'/admin/modules.php?mode=marketplace';
|
||||||
* Load data from remote Dolistore market place.
|
$this->shop_url = 'https://www.dolistore.com/index.php?controller=product&id_product=';
|
||||||
* This fills ->categories
|
$this->vat_rate = 1.2; // 20% de TVA
|
||||||
*
|
$this->debug_api = false;
|
||||||
* @param array $options Options
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function getRemoteData($options = array('start' => 0, 'end' => 10, 'per_page' => 50, 'categorie' => 0))
|
|
||||||
{
|
|
||||||
global $conf, $langs;
|
|
||||||
|
|
||||||
$this->start = $options['start'];
|
$langtmp = explode('_', $langs->defaultlang);
|
||||||
$this->end = $options['end'];
|
$lang = $langtmp[0];
|
||||||
$this->per_page = $options['per_page'];
|
$lang_array = array('en'=>0, 'fr'=>1, 'es'=>2, 'it'=>3, 'de'=>4); // Into table ps_lang of Prestashop - 1
|
||||||
$this->categorie = $options['categorie'];
|
if (! in_array($lang, array_keys($lang_array))) $lang = 'en';
|
||||||
$this->search = $options['search'];
|
$this->lang = $lang_array[$lang];
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->end == 0) {
|
/**
|
||||||
$this->end = $this->per_page;
|
* Load data from remote Dolistore market place.
|
||||||
}
|
* This fills ->categories
|
||||||
|
*
|
||||||
|
* @param array $options Options
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function getRemoteData($options = array('start' => 0, 'end' => 10, 'per_page' => 50, 'categorie' => 0))
|
||||||
|
{
|
||||||
|
global $conf, $langs;
|
||||||
|
|
||||||
try {
|
$this->start = $options['start'];
|
||||||
$this->api = new PrestaShopWebservice($conf->global->MAIN_MODULE_DOLISTORE_API_SRV,
|
$this->end = $options['end'];
|
||||||
$conf->global->MAIN_MODULE_DOLISTORE_API_KEY, $this->debug_api);
|
$this->per_page = $options['per_page'];
|
||||||
|
$this->categorie = $options['categorie'];
|
||||||
|
$this->search = $options['search'];
|
||||||
|
|
||||||
// Here we set the option array for the Webservice : we want products resources
|
if ($this->end == 0) {
|
||||||
$opt = array();
|
$this->end = $this->per_page;
|
||||||
$opt['resource'] = 'products';
|
}
|
||||||
|
|
||||||
// make a search to limit the id returned.
|
try {
|
||||||
if ($this->search != '') {
|
$this->api = new PrestaShopWebservice($conf->global->MAIN_MODULE_DOLISTORE_API_SRV,
|
||||||
$opt2 = array();
|
$conf->global->MAIN_MODULE_DOLISTORE_API_KEY, $this->debug_api);
|
||||||
$opt2['url'] = $conf->global->MAIN_MODULE_DOLISTORE_API_SRV.'/api/search?query='.$this->search.'&language='.$this->lang;
|
|
||||||
// Call
|
// Here we set the option array for the Webservice : we want products resources
|
||||||
$xml = $this->api->get($opt2);
|
$opt = array();
|
||||||
$products = array();
|
$opt['resource'] = 'products';
|
||||||
foreach ($xml->products->children() as $product) {
|
|
||||||
$products[] = (int) $product['id'];
|
// make a search to limit the id returned.
|
||||||
}
|
if ($this->search != '') {
|
||||||
$opt['filter[id]'] = '['.implode('|', $products).']';
|
$opt2 = array();
|
||||||
} elseif ($this->categorie != 0) {
|
$opt2['url'] = $conf->global->MAIN_MODULE_DOLISTORE_API_SRV.'/api/search?query='.$this->search.'&language='.$this->lang;
|
||||||
$opt2 = array();
|
// Call
|
||||||
$opt2['resource'] = 'categories';
|
$xml = $this->api->get($opt2);
|
||||||
$opt2['id'] = $this->categorie;
|
$products = array();
|
||||||
// Call
|
foreach ($xml->products->children() as $product) {
|
||||||
$xml = $this->api->get($opt2);
|
$products[] = (int) $product['id'];
|
||||||
$products = array();
|
}
|
||||||
foreach ($xml->category->associations->products->children() as $product) {
|
$opt['filter[id]'] = '['.implode('|', $products).']';
|
||||||
$products[] = (int) $product->id;
|
} elseif ($this->categorie != 0) {
|
||||||
}
|
$opt2 = array();
|
||||||
$opt['filter[id]'] = '['.implode('|', $products).']';
|
$opt2['resource'] = 'categories';
|
||||||
}
|
$opt2['id'] = $this->categorie;
|
||||||
$opt['display'] = '[id,name,id_default_image,id_category_default,reference,price,condition,show_price,date_add,date_upd,description_short,description,module_version,dolibarr_min,dolibarr_max]';
|
// Call
|
||||||
$opt['sort'] = 'id_desc';
|
$xml = $this->api->get($opt2);
|
||||||
$opt['filter[active]'] = '[1]';
|
$products = array();
|
||||||
$opt['limit'] = "$this->start,$this->end";
|
foreach ($xml->category->associations->products->children() as $product) {
|
||||||
|
$products[] = (int) $product->id;
|
||||||
|
}
|
||||||
|
$opt['filter[id]'] = '['.implode('|', $products).']';
|
||||||
|
}
|
||||||
|
$opt['display'] = '[id,name,id_default_image,id_category_default,reference,price,condition,show_price,date_add,date_upd,description_short,description,module_version,dolibarr_min,dolibarr_max]';
|
||||||
|
$opt['sort'] = 'id_desc';
|
||||||
|
$opt['filter[active]'] = '[1]';
|
||||||
|
$opt['limit'] = "$this->start,$this->end";
|
||||||
// $opt['filter[id]'] contais list of product id that are result of search
|
// $opt['filter[id]'] contais list of product id that are result of search
|
||||||
|
|
||||||
// Call API to get the detail
|
// Call API to get the detail
|
||||||
$xml = $this->api->get($opt);
|
$xml = $this->api->get($opt);
|
||||||
$this->products = $xml->products->children();
|
$this->products = $xml->products->children();
|
||||||
|
|
||||||
|
|
||||||
// Here we set the option array for the Webservice : we want categories resources
|
// Here we set the option array for the Webservice : we want categories resources
|
||||||
$opt = array();
|
$opt = array();
|
||||||
$opt['resource'] = 'categories';
|
$opt['resource'] = 'categories';
|
||||||
$opt['display'] = '[id,id_parent,nb_products_recursive,active,is_root_category,name,description]';
|
$opt['display'] = '[id,id_parent,nb_products_recursive,active,is_root_category,name,description]';
|
||||||
$opt['sort'] = 'id_asc';
|
$opt['sort'] = 'id_asc';
|
||||||
// Call
|
// Call
|
||||||
$xml = $this->api->get($opt);
|
$xml = $this->api->get($opt);
|
||||||
$this->categories = $xml->categories->children();
|
$this->categories = $xml->categories->children();
|
||||||
} catch (PrestaShopWebserviceException $e) {
|
} catch (PrestaShopWebserviceException $e) {
|
||||||
// Here we are dealing with errors
|
// Here we are dealing with errors
|
||||||
$trace = $e->getTrace();
|
$trace = $e->getTrace();
|
||||||
if ($trace[0]['args'][0] == 404) die('Bad ID');
|
if ($trace[0]['args'][0] == 404) die('Bad ID');
|
||||||
else if ($trace[0]['args'][0] == 401) die('Bad auth key');
|
else if ($trace[0]['args'][0] == 401) die('Bad auth key');
|
||||||
else die('Can not access to '.$conf->global->MAIN_MODULE_DOLISTORE_API_SRV);
|
else die('Can not access to '.$conf->global->MAIN_MODULE_DOLISTORE_API_SRV);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return tree of Dolistore categories. $this->categories must have been loaded before.
|
* Return tree of Dolistore categories. $this->categories must have been loaded before.
|
||||||
@ -143,199 +145,199 @@ class Dolistore
|
|||||||
* @param int $parent Id of parent category
|
* @param int $parent Id of parent category
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function get_categories($parent = 0)
|
function get_categories($parent = 0)
|
||||||
{
|
{
|
||||||
if (!isset($this->categories)) die('not possible');
|
if (!isset($this->categories)) die('not possible');
|
||||||
if ($parent != 0) {
|
if ($parent != 0) {
|
||||||
$html = '<ul>';
|
$html = '<ul>';
|
||||||
} else {
|
} else {
|
||||||
$html = '';
|
$html = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
$nbofcateg = count($this->categories);
|
$nbofcateg = count($this->categories);
|
||||||
for ($i = 0; $i < $nbofcateg; $i++)
|
for ($i = 0; $i < $nbofcateg; $i++)
|
||||||
{
|
{
|
||||||
$cat = $this->categories[$i];
|
$cat = $this->categories[$i];
|
||||||
if ($cat->is_root_category == 1 && $parent == 0) {
|
if ($cat->is_root_category == 1 && $parent == 0) {
|
||||||
$html .= '<li class="root"><h3 class="nomargesupinf"><a class="nomargesupinf link2cat" href="?mode=marketplace&categorie='.$cat->id.'" '
|
$html .= '<li class="root"><h3 class="nomargesupinf"><a class="nomargesupinf link2cat" href="?mode=marketplace&categorie='.$cat->id.'" '
|
||||||
.'title="'.dol_escape_htmltag(strip_tags($cat->description->language[$this->lang])).'"'
|
.'title="'.dol_escape_htmltag(strip_tags($cat->description->language[$this->lang])).'"'
|
||||||
.'>'.$cat->name->language[$this->lang].' <sup>'.$cat->nb_products_recursive.'</sup></a></h3>';
|
.'>'.$cat->name->language[$this->lang].' <sup>'.$cat->nb_products_recursive.'</sup></a></h3>';
|
||||||
$html .= self::get_categories($cat->id);
|
$html .= self::get_categories($cat->id);
|
||||||
$html .= "</li>\n";
|
$html .= "</li>\n";
|
||||||
} elseif (trim($cat->id_parent) == $parent && $cat->active == 1 && trim($cat->id_parent) != 0) { // si cat est de ce niveau
|
} elseif (trim($cat->id_parent) == $parent && $cat->active == 1 && trim($cat->id_parent) != 0) { // si cat est de ce niveau
|
||||||
$select = ($cat->id == $this->categorie) ? ' selected' : '';
|
$select = ($cat->id == $this->categorie) ? ' selected' : '';
|
||||||
$html .= '<li><a class="link2cat'.$select.'" href="?mode=marketplace&categorie='.$cat->id.'"'
|
$html .= '<li><a class="link2cat'.$select.'" href="?mode=marketplace&categorie='.$cat->id.'"'
|
||||||
.' title="'.dol_escape_htmltag(strip_tags($cat->description->language[$this->lang])).'" '
|
.' title="'.dol_escape_htmltag(strip_tags($cat->description->language[$this->lang])).'" '
|
||||||
.'>'.$cat->name->language[$this->lang].' <sup>'.$cat->nb_products_recursive.'</sup></a>';
|
.'>'.$cat->name->language[$this->lang].' <sup>'.$cat->nb_products_recursive.'</sup></a>';
|
||||||
$html .= self::get_categories($cat->id);
|
$html .= self::get_categories($cat->id);
|
||||||
$html .= "</li>\n";
|
$html .= "</li>\n";
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($html == '<ul>') {
|
if ($html == '<ul>') {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
if ($parent != 0) {
|
if ($parent != 0) {
|
||||||
return $html.'</ul>';
|
return $html.'</ul>';
|
||||||
} else {
|
} else {
|
||||||
return $html;
|
return $html;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return list of product formated for output
|
* Return list of product formated for output
|
||||||
*
|
*
|
||||||
* @return string HTML output
|
* @return string HTML output
|
||||||
*/
|
*/
|
||||||
function get_products()
|
function get_products()
|
||||||
{
|
{
|
||||||
global $langs, $conf;
|
global $langs, $conf;
|
||||||
$html = "";
|
$html = "";
|
||||||
$parity = "pair";
|
$parity = "pair";
|
||||||
$last_month = time() - (30 * 24 * 60 * 60);
|
$last_month = time() - (30 * 24 * 60 * 60);
|
||||||
foreach ($this->products as $product) {
|
foreach ($this->products as $product) {
|
||||||
$parity = ($parity == "impair") ? 'pair' : 'impair';
|
$parity = ($parity == "impair") ? 'pair' : 'impair';
|
||||||
|
|
||||||
// check new product ?
|
// check new product ?
|
||||||
$newapp = '';
|
$newapp = '';
|
||||||
if ($last_month < strtotime($product->date_add)) {
|
if ($last_month < strtotime($product->date_add)) {
|
||||||
$newapp .= '<span class="newApp">'.$langs->trans('New').'</span> ';
|
$newapp .= '<span class="newApp">'.$langs->trans('New').'</span> ';
|
||||||
}
|
}
|
||||||
|
|
||||||
// check updated ?
|
// check updated ?
|
||||||
if ($last_month < strtotime($product->date_upd) && $newapp == '') {
|
if ($last_month < strtotime($product->date_upd) && $newapp == '') {
|
||||||
$newapp .= '<span class="updatedApp">'.$langs->trans('Updated').'</span> ';
|
$newapp .= '<span class="updatedApp">'.$langs->trans('Updated').'</span> ';
|
||||||
}
|
}
|
||||||
|
|
||||||
// add image or default ?
|
// add image or default ?
|
||||||
if ($product->id_default_image != '') {
|
if ($product->id_default_image != '') {
|
||||||
$image_url = DOL_URL_ROOT.'/admin/dolistore/ajax/image.php?id_product='.$product->id.'&id_image='.$product->id_default_image;
|
$image_url = DOL_URL_ROOT.'/admin/dolistore/ajax/image.php?id_product='.$product->id.'&id_image='.$product->id_default_image;
|
||||||
$images = '<a href="'.$image_url.'" class="fancybox" rel="gallery'.$product->id.'" title="'.$product->name->language[$this->lang].', '.$langs->trans('Version').' '.$product->module_version.'">'.
|
$images = '<a href="'.$image_url.'" class="fancybox" rel="gallery'.$product->id.'" title="'.$product->name->language[$this->lang].', '.$langs->trans('Version').' '.$product->module_version.'">'.
|
||||||
'<img src="'.$image_url.'&quality=home_default" style="max-height:250px;max-width: 210px;" alt="" /></a>';
|
'<img src="'.$image_url.'&quality=home_default" style="max-height:250px;max-width: 210px;" alt="" /></a>';
|
||||||
} else {
|
} else {
|
||||||
$images = '<img src="'.DOL_URL_ROOT.'/admin/dolistore/img/NoImageAvailable.png" />';
|
$images = '<img src="'.DOL_URL_ROOT.'/admin/dolistore/img/NoImageAvailable.png" />';
|
||||||
}
|
}
|
||||||
|
|
||||||
// free or pay ?
|
// free or pay ?
|
||||||
if ($product->price > 0) {
|
if ($product->price > 0) {
|
||||||
$price = '<h3>'.price(round((float) $product->price * $this->vat_rate, 2)).' €</h3>';
|
$price = '<h3>'.price(round((float) $product->price * $this->vat_rate, 2)).' €</h3>';
|
||||||
$download_link = '<a target="_blank" href="'.$this->shop_url.$product->id.'"><img width="32" src="'.DOL_URL_ROOT.'/admin/dolistore/img/follow.png" /></a>';
|
$download_link = '<a target="_blank" href="'.$this->shop_url.$product->id.'"><img width="32" src="'.DOL_URL_ROOT.'/admin/dolistore/img/follow.png" /></a>';
|
||||||
} else {
|
} else {
|
||||||
$price = '<h3>'.$langs->trans('Free').'</h3>';
|
$price = '<h3>'.$langs->trans('Free').'</h3>';
|
||||||
$download_link = '<a target="_blank" href="'.$this->shop_url.$product->id.'"><img width="32" src="'.DOL_URL_ROOT.'/admin/dolistore/img/Download-128.png" /></a>';
|
$download_link = '<a target="_blank" href="'.$this->shop_url.$product->id.'"><img width="32" src="'.DOL_URL_ROOT.'/admin/dolistore/img/Download-128.png" /></a>';
|
||||||
$download_link.= '<br><br><a target="_blank" href="'.$this->shop_url.$product->id.'"><img width="32" src="'.DOL_URL_ROOT.'/admin/dolistore/img/follow.png" /></a>';
|
$download_link.= '<br><br><a target="_blank" href="'.$this->shop_url.$product->id.'"><img width="32" src="'.DOL_URL_ROOT.'/admin/dolistore/img/follow.png" /></a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
//checking versions
|
//checking versions
|
||||||
if ($this->version_compare($product->dolibarr_min, DOL_VERSION) <= 0) {
|
if ($this->version_compare($product->dolibarr_min, DOL_VERSION) <= 0) {
|
||||||
if ($this->version_compare($product->dolibarr_max, DOL_VERSION) >= 0) {
|
if ($this->version_compare($product->dolibarr_max, DOL_VERSION) >= 0) {
|
||||||
//compatible
|
//compatible
|
||||||
$version = '<span class="compatible">'.$langs->trans('CompatibleUpTo', $product->dolibarr_max,
|
$version = '<span class="compatible">'.$langs->trans('CompatibleUpTo', $product->dolibarr_max,
|
||||||
$product->dolibarr_min, $product->dolibarr_max).'</span>';
|
$product->dolibarr_min, $product->dolibarr_max).'</span>';
|
||||||
$compatible = '';
|
$compatible = '';
|
||||||
} else {
|
} else {
|
||||||
//never compatible, module expired
|
//never compatible, module expired
|
||||||
$version = '<span class="notcompatible">'.$langs->trans('NotCompatible', DOL_VERSION,
|
$version = '<span class="notcompatible">'.$langs->trans('NotCompatible', DOL_VERSION,
|
||||||
$product->dolibarr_min, $product->dolibarr_max).'</span>';
|
$product->dolibarr_min, $product->dolibarr_max).'</span>';
|
||||||
$compatible = 'NotCompatible';
|
$compatible = 'NotCompatible';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//need update
|
//need update
|
||||||
$version = '<span class="compatibleafterupdate">'.$langs->trans('CompatibleAfterUpdate', DOL_VERSION,
|
$version = '<span class="compatibleafterupdate">'.$langs->trans('CompatibleAfterUpdate', DOL_VERSION,
|
||||||
$product->dolibarr_min, $product->dolibarr_max).'</span>';
|
$product->dolibarr_min, $product->dolibarr_max).'</span>';
|
||||||
$compatible = 'NotCompatible';
|
$compatible = 'NotCompatible';
|
||||||
}
|
}
|
||||||
|
|
||||||
//.'<br><a class="inline-block valignmiddle" target="_blank" href="'.$this->shop_url.$product->id.'"><span class="details button">'.$langs->trans("SeeInMarkerPlace").'</span></a>
|
//.'<br><a class="inline-block valignmiddle" target="_blank" href="'.$this->shop_url.$product->id.'"><span class="details button">'.$langs->trans("SeeInMarkerPlace").'</span></a>
|
||||||
|
|
||||||
//output template
|
//output template
|
||||||
$html .= '<tr class="app '.$parity.' '.$compatible.'">
|
$html .= '<tr class="app '.$parity.' '.$compatible.'">
|
||||||
<td align="center" width="210"><div class="newAppParent">'.$newapp.$images.'</div></td>
|
<td align="center" width="210"><div class="newAppParent">'.$newapp.$images.'</div></td>
|
||||||
<td class="margeCote"><h2 class="appTitle">'.$product->name->language[$this->lang]
|
<td class="margeCote"><h2 class="appTitle">'.$product->name->language[$this->lang]
|
||||||
.'<br/><small>'.$version.'</small></h2>
|
.'<br/><small>'.$version.'</small></h2>
|
||||||
<small> '.dol_print_date(dol_stringtotime($product->date_upd), 'dayhour').' - '.$langs->trans('Ref').': '.$product->reference.' - '.$langs->trans('Id').': '.$product->id.'</small><br><br>'.$product->description_short->language[$this->lang].'</td>
|
<small> '.dol_print_date(dol_stringtotime($product->date_upd), 'dayhour').' - '.$langs->trans('Ref').': '.$product->reference.' - '.$langs->trans('Id').': '.$product->id.'</small><br><br>'.$product->description_short->language[$this->lang].'</td>
|
||||||
<td style="display:none;" class="long_description">'.$product->description->language[$this->lang].'</td>
|
<td style="display:none;" class="long_description">'.$product->description->language[$this->lang].'</td>
|
||||||
<td class="margeCote" align="center">'.$price.'
|
<td class="margeCote" align="center">'.$price.'
|
||||||
</td>
|
</td>
|
||||||
<td class="margeCote">'.$download_link.'</td>
|
<td class="margeCote">'.$download_link.'</td>
|
||||||
</tr>';
|
</tr>';
|
||||||
}
|
}
|
||||||
return $html;
|
return $html;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_previous_link($text = '<<')
|
function get_previous_link($text = '<<')
|
||||||
{
|
{
|
||||||
return '<a href="'.$this->get_previous_url().'" class="button">'.$text.'</a>';
|
return '<a href="'.$this->get_previous_url().'" class="button">'.$text.'</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_next_link($text = '>>')
|
function get_next_link($text = '>>')
|
||||||
{
|
{
|
||||||
return '<a href="'.$this->get_next_url().'" class="button">'.$text.'</a>';
|
return '<a href="'.$this->get_next_url().'" class="button">'.$text.'</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_previous_url()
|
function get_previous_url()
|
||||||
{
|
{
|
||||||
$param_array = array();
|
$param_array = array();
|
||||||
if ($this->start < $this->per_page) {
|
if ($this->start < $this->per_page) {
|
||||||
$sub = 0;
|
$sub = 0;
|
||||||
} else {
|
} else {
|
||||||
$sub = $this->per_page;
|
$sub = $this->per_page;
|
||||||
}
|
}
|
||||||
$param_array['start'] = $this->start - $sub;
|
$param_array['start'] = $this->start - $sub;
|
||||||
$param_array['end'] = $this->end - $sub;
|
$param_array['end'] = $this->end - $sub;
|
||||||
if ($this->categorie != 0) {
|
if ($this->categorie != 0) {
|
||||||
$param_array['categorie'] = $this->categorie;
|
$param_array['categorie'] = $this->categorie;
|
||||||
}
|
}
|
||||||
$param = http_build_query($param_array);
|
$param = http_build_query($param_array);
|
||||||
return $this->url."&".$param;
|
return $this->url."&".$param;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_next_url()
|
function get_next_url()
|
||||||
{
|
{
|
||||||
$param_array = array();
|
$param_array = array();
|
||||||
if (count($this->products) < $this->per_page) {
|
if (count($this->products) < $this->per_page) {
|
||||||
$add = 0;
|
$add = 0;
|
||||||
} else {
|
} else {
|
||||||
$add = $this->per_page;
|
$add = $this->per_page;
|
||||||
}
|
}
|
||||||
$param_array['start'] = $this->start + $add;
|
$param_array['start'] = $this->start + $add;
|
||||||
$param_array['end'] = $this->end + $add;
|
$param_array['end'] = $this->end + $add;
|
||||||
if ($this->categorie != 0) {
|
if ($this->categorie != 0) {
|
||||||
$param_array['categorie'] = $this->categorie;
|
$param_array['categorie'] = $this->categorie;
|
||||||
}
|
}
|
||||||
$param = http_build_query($param_array);
|
$param = http_build_query($param_array);
|
||||||
return $this->url."&".$param;
|
return $this->url."&".$param;
|
||||||
}
|
}
|
||||||
|
|
||||||
function version_compare($v1, $v2)
|
function version_compare($v1, $v2)
|
||||||
{
|
{
|
||||||
$v1 = explode('.', $v1);
|
$v1 = explode('.', $v1);
|
||||||
$v2 = explode('.', $v2);
|
$v2 = explode('.', $v2);
|
||||||
$ret = 0;
|
$ret = 0;
|
||||||
$level = 0;
|
$level = 0;
|
||||||
$count1 = count($v1);
|
$count1 = count($v1);
|
||||||
$count2 = count($v2);
|
$count2 = count($v2);
|
||||||
$maxcount = max($count1, $count2);
|
$maxcount = max($count1, $count2);
|
||||||
while ($level < $maxcount) {
|
while ($level < $maxcount) {
|
||||||
$operande1 = isset($v1[$level]) ? $v1[$level] : 'x';
|
$operande1 = isset($v1[$level]) ? $v1[$level] : 'x';
|
||||||
$operande2 = isset($v2[$level]) ? $v2[$level] : 'x';
|
$operande2 = isset($v2[$level]) ? $v2[$level] : 'x';
|
||||||
$level++;
|
$level++;
|
||||||
if (strtoupper($operande1) == 'X' || strtoupper($operande2) == 'X' || $operande1 == '*' || $operande2 == '*') {
|
if (strtoupper($operande1) == 'X' || strtoupper($operande2) == 'X' || $operande1 == '*' || $operande2 == '*') {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ($operande1 < $operande2) {
|
if ($operande1 < $operande2) {
|
||||||
$ret = -$level;
|
$ret = -$level;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ($operande1 > $operande2) {
|
if ($operande1 > $operande2) {
|
||||||
$ret = $level;
|
$ret = $level;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//print join('.',$versionarray1).'('.count($versionarray1).') / '.join('.',$versionarray2).'('.count($versionarray2).') => '.$ret.'<br>'."\n";
|
//print join('.',$versionarray1).'('.count($versionarray1).') / '.join('.',$versionarray2).'('.count($versionarray2).') => '.$ret.'<br>'."\n";
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -477,14 +477,14 @@ print "<tr class=\"liste_titre\">";
|
|||||||
print "<td>".$langs->trans("Parameter")."</td>\n";
|
print "<td>".$langs->trans("Parameter")."</td>\n";
|
||||||
print "</tr>";
|
print "</tr>";
|
||||||
|
|
||||||
$substitutionarray=pdf_getSubstitutionArray($langs);
|
$substitutionarray=pdf_getSubstitutionArray($langs, null, null, 2);
|
||||||
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
||||||
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
||||||
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
||||||
$htmltext.='</i>';
|
$htmltext.='</i>';
|
||||||
|
|
||||||
print '<tr><td>';
|
print '<tr><td>';
|
||||||
print $form->textwithpicto($langs->trans("FreeLegalTextOnShippings"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext).'<br>';
|
print $form->textwithpicto($langs->trans("FreeLegalTextOnShippings"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext, 1, 'help', '', 0, 2, 'freetexttooltip').'<br>';
|
||||||
$variablename='SHIPPING_FREE_TEXT';
|
$variablename='SHIPPING_FREE_TEXT';
|
||||||
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
||||||
{
|
{
|
||||||
@ -499,7 +499,7 @@ else
|
|||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|
||||||
print '<tr><td>';
|
print '<tr><td>';
|
||||||
print $form->textwithpicto($langs->trans("WatermarkOnDraftContractCards"), $htmltext).'<br>';
|
print $form->textwithpicto($langs->trans("WatermarkOnDraftContractCards"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'<br>';
|
||||||
print '<input size="50" class="flat" type="text" name="SHIPPING_DRAFT_WATERMARK" value="'.$conf->global->SHIPPING_DRAFT_WATERMARK.'">';
|
print '<input size="50" class="flat" type="text" name="SHIPPING_DRAFT_WATERMARK" value="'.$conf->global->SHIPPING_DRAFT_WATERMARK.'">';
|
||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|
||||||
|
|||||||
@ -47,7 +47,7 @@ $form = new Form($db);
|
|||||||
// List of supported format
|
// List of supported format
|
||||||
$tmptype2label=ExtraFields::$type2label;
|
$tmptype2label=ExtraFields::$type2label;
|
||||||
$type2label=array('');
|
$type2label=array('');
|
||||||
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val);
|
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->transnoentitiesnoconv($val);
|
||||||
|
|
||||||
$action=GETPOST('action', 'alpha');
|
$action=GETPOST('action', 'alpha');
|
||||||
$attrname=GETPOST('attrname', 'alpha');
|
$attrname=GETPOST('attrname', 'alpha');
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
* Copyright (C) 2013 Philippe Grand <philippe.grand@atoo-net.com>
|
* Copyright (C) 2013 Philippe Grand <philippe.grand@atoo-net.com>
|
||||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
|
* Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* 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
|
||||||
@ -47,7 +47,7 @@ $form = new Form($db);
|
|||||||
// List of supported format
|
// List of supported format
|
||||||
$tmptype2label=ExtraFields::$type2label;
|
$tmptype2label=ExtraFields::$type2label;
|
||||||
$type2label=array('');
|
$type2label=array('');
|
||||||
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val);
|
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->transnoentitiesnoconv($val);
|
||||||
|
|
||||||
$action=GETPOST('action', 'alpha');
|
$action=GETPOST('action', 'alpha');
|
||||||
$attrname=GETPOST('attrname', 'alpha');
|
$attrname=GETPOST('attrname', 'alpha');
|
||||||
|
|||||||
@ -482,7 +482,7 @@ print '<td align="center" width="60"></td>';
|
|||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
$var=true;
|
$var=true;
|
||||||
|
|
||||||
$substitutionarray=pdf_getSubstitutionArray($langs);
|
$substitutionarray=pdf_getSubstitutionArray($langs, null, null, 2);
|
||||||
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
||||||
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
||||||
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
||||||
@ -490,7 +490,7 @@ $htmltext.='</i>';
|
|||||||
|
|
||||||
$var=! $var;
|
$var=! $var;
|
||||||
print '<tr class="oddeven"><td colspan="2">';
|
print '<tr class="oddeven"><td colspan="2">';
|
||||||
print $form->textwithpicto($langs->trans("FreeLegalTextOnExpenseReports"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext).'<br>';
|
print $form->textwithpicto($langs->trans("FreeLegalTextOnExpenseReports"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext, 1, 'help', '', 0, 2, 'freetexttooltip').'<br>';
|
||||||
$variablename='EXPENSEREPORT_FREE_TEXT';
|
$variablename='EXPENSEREPORT_FREE_TEXT';
|
||||||
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
||||||
{
|
{
|
||||||
@ -507,7 +507,7 @@ print '</td></tr>'."\n";
|
|||||||
//Use draft Watermark
|
//Use draft Watermark
|
||||||
|
|
||||||
print '<tr class="oddeven"><td colspan="2">';
|
print '<tr class="oddeven"><td colspan="2">';
|
||||||
print $form->textwithpicto($langs->trans("WatermarkOnDraftExpenseReports"), $htmltext).'<br>';
|
print $form->textwithpicto($langs->trans("WatermarkOnDraftExpenseReports"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'<br>';
|
||||||
print '<input size="50" class="flat" type="text" name="EXPENSEREPORT_DRAFT_WATERMARK" value="'.$conf->global->EXPENSEREPORT_DRAFT_WATERMARK.'">';
|
print '<input size="50" class="flat" type="text" name="EXPENSEREPORT_DRAFT_WATERMARK" value="'.$conf->global->EXPENSEREPORT_DRAFT_WATERMARK.'">';
|
||||||
print '</td></tr>'."\n";
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
|
|||||||
@ -44,7 +44,7 @@ $form = new Form($db);
|
|||||||
// List of supported format
|
// List of supported format
|
||||||
$tmptype2label=ExtraFields::$type2label;
|
$tmptype2label=ExtraFields::$type2label;
|
||||||
$type2label=array('');
|
$type2label=array('');
|
||||||
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val);
|
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->transnoentitiesnoconv($val);
|
||||||
|
|
||||||
$action=GETPOST('action', 'alpha');
|
$action=GETPOST('action', 'alpha');
|
||||||
$attrname=GETPOST('attrname', 'alpha');
|
$attrname=GETPOST('attrname', 'alpha');
|
||||||
|
|||||||
@ -711,7 +711,7 @@ print '<input type="submit" class="button" value="'.$langs->trans("Modify").'" /
|
|||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
print '</form>';
|
print '</form>';
|
||||||
|
|
||||||
$substitutionarray=pdf_getSubstitutionArray($langs);
|
$substitutionarray=pdf_getSubstitutionArray($langs, null, null, 2);
|
||||||
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
||||||
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
||||||
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
||||||
@ -722,7 +722,7 @@ print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
|
|||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'" />';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'" />';
|
||||||
print '<input type="hidden" name="action" value="set_INVOICE_FREE_TEXT" />';
|
print '<input type="hidden" name="action" value="set_INVOICE_FREE_TEXT" />';
|
||||||
print '<tr class="oddeven"><td colspan="2">';
|
print '<tr class="oddeven"><td colspan="2">';
|
||||||
print $form->textwithpicto($langs->trans("FreeLegalTextOnInvoices"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext).'<br>';
|
print $form->textwithpicto($langs->trans("FreeLegalTextOnInvoices"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext, 1, 'help', '', 0, 2, 'freetexttooltip').'<br>';
|
||||||
$variablename='INVOICE_FREE_TEXT';
|
$variablename='INVOICE_FREE_TEXT';
|
||||||
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
||||||
{
|
{
|
||||||
@ -744,7 +744,7 @@ print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
|
|||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'" />';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'" />';
|
||||||
print '<input type="hidden" name="action" value="set_FACTURE_DRAFT_WATERMARK" />';
|
print '<input type="hidden" name="action" value="set_FACTURE_DRAFT_WATERMARK" />';
|
||||||
print '<tr class="oddeven"><td>';
|
print '<tr class="oddeven"><td>';
|
||||||
print $form->textwithpicto($langs->trans("WatermarkOnDraftBill"), $htmltext);
|
print $form->textwithpicto($langs->trans("WatermarkOnDraftBill"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'<br>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td><input size="50" class="flat" type="text" name="FACTURE_DRAFT_WATERMARK" value="'.$conf->global->FACTURE_DRAFT_WATERMARK.'" />';
|
print '<td><input size="50" class="flat" type="text" name="FACTURE_DRAFT_WATERMARK" value="'.$conf->global->FACTURE_DRAFT_WATERMARK.'" />';
|
||||||
print '</td><td align="right">';
|
print '</td><td align="right">';
|
||||||
|
|||||||
@ -534,7 +534,7 @@ print '<td align="center" width="60">'.$langs->trans("Value").'</td>';
|
|||||||
print "<td> </td>\n";
|
print "<td> </td>\n";
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
$substitutionarray=pdf_getSubstitutionArray($langs);
|
$substitutionarray=pdf_getSubstitutionArray($langs, null, null, 2);
|
||||||
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
||||||
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
||||||
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
||||||
@ -544,7 +544,7 @@ print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
|
|||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
print '<input type="hidden" name="action" value="set_FICHINTER_FREE_TEXT">';
|
print '<input type="hidden" name="action" value="set_FICHINTER_FREE_TEXT">';
|
||||||
print '<tr class="oddeven"><td colspan="2">';
|
print '<tr class="oddeven"><td colspan="2">';
|
||||||
print $form->textwithpicto($langs->trans("FreeLegalTextOnInterventions"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext).'<br>';
|
print $form->textwithpicto($langs->trans("FreeLegalTextOnInterventions"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext, 1, 'help', '', 0, 2, 'freetexttooltip').'<br>';
|
||||||
$variablename='FICHINTER_FREE_TEXT';
|
$variablename='FICHINTER_FREE_TEXT';
|
||||||
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
||||||
{
|
{
|
||||||
@ -567,7 +567,7 @@ print "<form method=\"post\" action=\"".$_SERVER["PHP_SELF"]."\">";
|
|||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
print "<input type=\"hidden\" name=\"action\" value=\"set_FICHINTER_DRAFT_WATERMARK\">";
|
print "<input type=\"hidden\" name=\"action\" value=\"set_FICHINTER_DRAFT_WATERMARK\">";
|
||||||
print '<tr class="oddeven"><td>';
|
print '<tr class="oddeven"><td>';
|
||||||
print $form->textwithpicto($langs->trans("WatermarkOnDraftInterventionCards"), $htmltext).'<br>';
|
print $form->textwithpicto($langs->trans("WatermarkOnDraftInterventionCards"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'<br>';
|
||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
print '<input size="50" class="flat" type="text" name="FICHINTER_DRAFT_WATERMARK" value="'.$conf->global->FICHINTER_DRAFT_WATERMARK.'">';
|
print '<input size="50" class="flat" type="text" name="FICHINTER_DRAFT_WATERMARK" value="'.$conf->global->FICHINTER_DRAFT_WATERMARK.'">';
|
||||||
print '</td><td align="right">';
|
print '</td><td align="right">';
|
||||||
|
|||||||
@ -454,7 +454,7 @@ print '<td width="80"> </td>';
|
|||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
$var=true;
|
$var=true;
|
||||||
|
|
||||||
$substitutionarray=pdf_getSubstitutionArray($langs);
|
$substitutionarray=pdf_getSubstitutionArray($langs, null, null, 2);
|
||||||
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
||||||
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
||||||
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
||||||
@ -465,7 +465,7 @@ print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
|
|||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
print '<input type="hidden" name="action" value="set_DELIVERY_FREE_TEXT">';
|
print '<input type="hidden" name="action" value="set_DELIVERY_FREE_TEXT">';
|
||||||
print '<tr class="oddeven"><td colspan="2">';
|
print '<tr class="oddeven"><td colspan="2">';
|
||||||
print $form->textwithpicto($langs->trans("FreeLegalTextOnDeliveryReceipts"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext).'<br>';
|
print $form->textwithpicto($langs->trans("FreeLegalTextOnDeliveryReceipts"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext, 1, 'help', '', 0, 2, 'freetexttooltip').'<br>';
|
||||||
$variablename='DELIVERY_FREE_TEXT';
|
$variablename='DELIVERY_FREE_TEXT';
|
||||||
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -47,7 +47,7 @@ $form = new Form($db);
|
|||||||
// List of supported format
|
// List of supported format
|
||||||
$tmptype2label=ExtraFields::$type2label;
|
$tmptype2label=ExtraFields::$type2label;
|
||||||
$type2label=array('');
|
$type2label=array('');
|
||||||
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val);
|
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->transnoentitiesnoconv($val);
|
||||||
|
|
||||||
$action=GETPOST('action', 'alpha');
|
$action=GETPOST('action', 'alpha');
|
||||||
$attrname=GETPOST('attrname', 'alpha');
|
$attrname=GETPOST('attrname', 'alpha');
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
* Copyright (C) 2013 Philippe Grand <philippe.grand@atoo-net.com>
|
* Copyright (C) 2013 Philippe Grand <philippe.grand@atoo-net.com>
|
||||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
|
* Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* 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
|
||||||
@ -47,7 +47,7 @@ $form = new Form($db);
|
|||||||
// List of supported format
|
// List of supported format
|
||||||
$tmptype2label=ExtraFields::$type2label;
|
$tmptype2label=ExtraFields::$type2label;
|
||||||
$type2label=array('');
|
$type2label=array('');
|
||||||
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val);
|
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->transnoentitiesnoconv($val);
|
||||||
|
|
||||||
$action=GETPOST('action', 'alpha');
|
$action=GETPOST('action', 'alpha');
|
||||||
$attrname=GETPOST('attrname', 'alpha');
|
$attrname=GETPOST('attrname', 'alpha');
|
||||||
|
|||||||
@ -50,7 +50,7 @@ $substitutionarrayfortest=array(
|
|||||||
'__ID__' => 'RecipientIdRecord',
|
'__ID__' => 'RecipientIdRecord',
|
||||||
//'__EMAIL__' => 'RecipientEMail', // Done into actions_sendmails
|
//'__EMAIL__' => 'RecipientEMail', // Done into actions_sendmails
|
||||||
'__CHECK_READ__' => (is_object($object) && is_object($object->thirdparty))?'<img src="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-read.php?tag='.$object->thirdparty->tag.'&securitykey='.urlencode($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY).'" width="1" height="1" style="width:1px;height:1px" border="0"/>':'',
|
'__CHECK_READ__' => (is_object($object) && is_object($object->thirdparty))?'<img src="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-read.php?tag='.$object->thirdparty->tag.'&securitykey='.urlencode($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY).'" width="1" height="1" style="width:1px;height:1px" border="0"/>':'',
|
||||||
'__SIGNATURE__' => (($user->signature && empty($conf->global->MAIN_MAIL_DO_NOT_USE_SIGN))?$usersignature:''), // Done into actions_sendmails
|
'__USER_SIGNATURE__' => (($user->signature && empty($conf->global->MAIN_MAIL_DO_NOT_USE_SIGN))?$usersignature:''), // Done into actions_sendmails
|
||||||
'__LOGIN__' => 'RecipientLogin',
|
'__LOGIN__' => 'RecipientLogin',
|
||||||
'__LASTNAME__' => 'RecipientLastname',
|
'__LASTNAME__' => 'RecipientLastname',
|
||||||
'__FIRSTNAME__' => 'RecipientFirstname',
|
'__FIRSTNAME__' => 'RecipientFirstname',
|
||||||
@ -70,7 +70,7 @@ complete_substitutions_array($substitutionarrayfortest, $langs);
|
|||||||
if ($action == 'update' && empty($_POST["cancel"]))
|
if ($action == 'update' && empty($_POST["cancel"]))
|
||||||
{
|
{
|
||||||
dolibarr_set_const($db, "MAIN_DISABLE_ALL_MAILS", GETPOST("MAIN_DISABLE_ALL_MAILS"),'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_DISABLE_ALL_MAILS", GETPOST("MAIN_DISABLE_ALL_MAILS"),'chaine',0,'',$conf->entity);
|
||||||
// Send mode parameters
|
// Send mode parameters
|
||||||
dolibarr_set_const($db, "MAIN_MAIL_SENDMODE", GETPOST("MAIN_MAIL_SENDMODE"),'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_MAIL_SENDMODE", GETPOST("MAIN_MAIL_SENDMODE"),'chaine',0,'',$conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_MAIL_SMTP_PORT", GETPOST("MAIN_MAIL_SMTP_PORT"),'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_MAIL_SMTP_PORT", GETPOST("MAIN_MAIL_SMTP_PORT"),'chaine',0,'',$conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_MAIL_SMTP_SERVER", GETPOST("MAIN_MAIL_SMTP_SERVER"),'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_MAIL_SMTP_SERVER", GETPOST("MAIN_MAIL_SMTP_SERVER"),'chaine',0,'',$conf->entity);
|
||||||
@ -78,11 +78,11 @@ if ($action == 'update' && empty($_POST["cancel"]))
|
|||||||
dolibarr_set_const($db, "MAIN_MAIL_SMTPS_PW", GETPOST("MAIN_MAIL_SMTPS_PW"), 'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_MAIL_SMTPS_PW", GETPOST("MAIN_MAIL_SMTPS_PW"), 'chaine',0,'',$conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_MAIL_EMAIL_TLS", GETPOST("MAIN_MAIL_EMAIL_TLS"),'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_MAIL_EMAIL_TLS", GETPOST("MAIN_MAIL_EMAIL_TLS"),'chaine',0,'',$conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_MAIL_EMAIL_STARTTLS", GETPOST("MAIN_MAIL_EMAIL_STARTTLS"),'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_MAIL_EMAIL_STARTTLS", GETPOST("MAIN_MAIL_EMAIL_STARTTLS"),'chaine',0,'',$conf->entity);
|
||||||
// Content parameters
|
// Content parameters
|
||||||
dolibarr_set_const($db, "MAIN_MAIL_EMAIL_FROM", GETPOST("MAIN_MAIL_EMAIL_FROM"), 'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_MAIL_EMAIL_FROM", GETPOST("MAIN_MAIL_EMAIL_FROM"), 'chaine',0,'',$conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_MAIL_ERRORS_TO", GETPOST("MAIN_MAIL_ERRORS_TO"), 'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_MAIL_ERRORS_TO", GETPOST("MAIN_MAIL_ERRORS_TO"), 'chaine',0,'',$conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_MAIL_AUTOCOPY_TO", GETPOST("MAIN_MAIL_AUTOCOPY_TO"),'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_MAIL_AUTOCOPY_TO", GETPOST("MAIN_MAIL_AUTOCOPY_TO"),'chaine',0,'',$conf->entity);
|
||||||
dolibarr_set_const($db, 'MAIN_MAIL_DEFAULT_FROMTYPE', GETPOST('MAIN_MAIL_DEFAULT_FROMTYPE'),'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, 'MAIN_MAIL_DEFAULT_FROMTYPE', GETPOST('MAIN_MAIL_DEFAULT_FROMTYPE'),'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
header("Location: ".$_SERVER["PHP_SELF"]."?mainmenu=home&leftmenu=setup");
|
header("Location: ".$_SERVER["PHP_SELF"]."?mainmenu=home&leftmenu=setup");
|
||||||
exit;
|
exit;
|
||||||
@ -124,27 +124,7 @@ llxHeader('',$langs->trans("Setup"),$wikihelp);
|
|||||||
|
|
||||||
print load_fiche_titre($langs->trans("EMailsSetup"),'','title_setup');
|
print load_fiche_titre($langs->trans("EMailsSetup"),'','title_setup');
|
||||||
|
|
||||||
|
$head = email_admin_prepare_head();
|
||||||
$h = 0;
|
|
||||||
|
|
||||||
$head[$h][0] = DOL_URL_ROOT."/admin/mails.php";
|
|
||||||
$head[$h][1] = $langs->trans("OutGoingEmailSetup");
|
|
||||||
$head[$h][2] = 'common';
|
|
||||||
$h++;
|
|
||||||
|
|
||||||
if ($conf->mailing->enabled)
|
|
||||||
{
|
|
||||||
$head[$h][0] = DOL_URL_ROOT."/admin/mails_emailing.php";
|
|
||||||
$head[$h][1] = $langs->trans("OutGoingEmailSetupForEmailing");
|
|
||||||
$head[$h][2] = 'common_emailing';
|
|
||||||
$h++;
|
|
||||||
}
|
|
||||||
|
|
||||||
$head[$h][0] = DOL_URL_ROOT."/admin/mails_templates.php";
|
|
||||||
$head[$h][1] = $langs->trans("DictionaryEMailTemplates");
|
|
||||||
$head[$h][2] = 'templates';
|
|
||||||
$h++;
|
|
||||||
|
|
||||||
|
|
||||||
// List of sending methods
|
// List of sending methods
|
||||||
$listofmethods=array();
|
$listofmethods=array();
|
||||||
@ -426,7 +406,7 @@ if ($action == 'edit')
|
|||||||
print '<td><input class="flat" name="MAIN_MAIL_EMAIL_FROM" size="32" value="' . (! empty($conf->global->MAIN_MAIL_EMAIL_FROM)?$conf->global->MAIN_MAIL_EMAIL_FROM:'');
|
print '<td><input class="flat" name="MAIN_MAIL_EMAIL_FROM" size="32" value="' . (! empty($conf->global->MAIN_MAIL_EMAIL_FROM)?$conf->global->MAIN_MAIL_EMAIL_FROM:'');
|
||||||
print '"></td></tr>';
|
print '"></td></tr>';
|
||||||
|
|
||||||
// Default from type
|
// Default from type
|
||||||
$liste = array();
|
$liste = array();
|
||||||
$liste['user'] = $langs->trans('UserEmail');
|
$liste['user'] = $langs->trans('UserEmail');
|
||||||
$liste['company'] = $langs->trans('CompanyEmail').' ('.(empty($conf->global->MAIN_INFO_SOCIETE_MAIL)?$langs->trans("NotDefined"):$conf->global->MAIN_INFO_SOCIETE_MAIL).')';
|
$liste['company'] = $langs->trans('CompanyEmail').' ('.(empty($conf->global->MAIN_INFO_SOCIETE_MAIL)?$langs->trans("NotDefined"):$conf->global->MAIN_INFO_SOCIETE_MAIL).')';
|
||||||
@ -449,13 +429,13 @@ if ($action == 'edit')
|
|||||||
}
|
}
|
||||||
else dol_print_error($db);*/
|
else dol_print_error($db);*/
|
||||||
|
|
||||||
print '<tr '.$bc[$var?1:0].'><td>'.$langs->trans('MAIN_MAIL_DEFAULT_FROMTYPE').'</td><td>';
|
print '<tr '.$bc[$var?1:0].'><td>'.$langs->trans('MAIN_MAIL_DEFAULT_FROMTYPE').'</td><td>';
|
||||||
print $form->selectarray('MAIN_MAIL_DEFAULT_FROMTYPE', $liste, $conf->global->MAIN_MAIL_DEFAULT_FROMTYPE, 0);
|
print $form->selectarray('MAIN_MAIL_DEFAULT_FROMTYPE', $liste, $conf->global->MAIN_MAIL_DEFAULT_FROMTYPE, 0);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Separator
|
// Separator
|
||||||
|
|
||||||
print '<tr class="oddeven"><td colspan="2"> </td></tr>';
|
print '<tr class="oddeven"><td colspan="2"> </td></tr>';
|
||||||
|
|
||||||
// From
|
// From
|
||||||
|
|
||||||
@ -469,24 +449,24 @@ if ($action == 'edit')
|
|||||||
print '<td><input class="flat" name="MAIN_MAIL_AUTOCOPY_TO" size="32" value="' . (! empty($conf->global->MAIN_MAIL_AUTOCOPY_TO)?$conf->global->MAIN_MAIL_AUTOCOPY_TO:'');
|
print '<td><input class="flat" name="MAIN_MAIL_AUTOCOPY_TO" size="32" value="' . (! empty($conf->global->MAIN_MAIL_AUTOCOPY_TO)?$conf->global->MAIN_MAIL_AUTOCOPY_TO:'');
|
||||||
print '"></td></tr>';
|
print '"></td></tr>';
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
|
|
||||||
print '<br><div class="center">';
|
print '<br><div class="center">';
|
||||||
print '<input class="button" type="submit" name="save" value="'.$langs->trans("Save").'">';
|
print '<input class="button" type="submit" name="save" value="'.$langs->trans("Save").'">';
|
||||||
print ' ';
|
print ' ';
|
||||||
print '<input class="button" type="submit" name="cancel" value="'.$langs->trans("Cancel").'">';
|
print '<input class="button" type="submit" name="cancel" value="'.$langs->trans("Cancel").'">';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dol_fiche_head($head, 'common', '', -1);
|
dol_fiche_head($head, 'common', '', -1);
|
||||||
|
|
||||||
print $langs->trans("EMailsDesc")."<br>\n";
|
print $langs->trans("EMailsDesc")."<br>\n";
|
||||||
print "<br>\n";
|
print "<br>\n";
|
||||||
|
|
||||||
|
|
||||||
$var=true;
|
$var=true;
|
||||||
@ -607,33 +587,33 @@ else
|
|||||||
}
|
}
|
||||||
else dol_print_error($db);
|
else dol_print_error($db);
|
||||||
|
|
||||||
print '<tr '.$bc[$var?1:0].'><td>'.$langs->trans('MAIN_MAIL_DEFAULT_FROMTYPE').'</td>';
|
print '<tr '.$bc[$var?1:0].'><td>'.$langs->trans('MAIN_MAIL_DEFAULT_FROMTYPE').'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
if ($conf->global->MAIN_MAIL_DEFAULT_FROMTYPE === 'user')
|
if ($conf->global->MAIN_MAIL_DEFAULT_FROMTYPE === 'user')
|
||||||
{
|
{
|
||||||
print $langs->trans('UserEmail');
|
print $langs->trans('UserEmail');
|
||||||
}
|
}
|
||||||
else if ($conf->global->MAIN_MAIL_DEFAULT_FROMTYPE === 'company')
|
else if ($conf->global->MAIN_MAIL_DEFAULT_FROMTYPE === 'company')
|
||||||
{
|
{
|
||||||
print $langs->trans('CompanyEmail').' '.dol_escape_htmltag('<'.$mysoc->email.'>');
|
print $langs->trans('CompanyEmail').' '.dol_escape_htmltag('<'.$mysoc->email.'>');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$id = preg_replace('/senderprofile_/', '', $conf->global->MAIN_MAIL_DEFAULT_FROMTYPE);
|
$id = preg_replace('/senderprofile_/', '', $conf->global->MAIN_MAIL_DEFAULT_FROMTYPE);
|
||||||
if ($id > 0)
|
if ($id > 0)
|
||||||
{
|
{
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/class/emailsenderprofile.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/core/class/emailsenderprofile.class.php';
|
||||||
$emailsenderprofile = new EmailSenderProfile($db);
|
$emailsenderprofile = new EmailSenderProfile($db);
|
||||||
$emailsenderprofile->fetch($id);
|
$emailsenderprofile->fetch($id);
|
||||||
print $emailsenderprofile->label.' '.dol_escape_htmltag('<'.$emailsenderprofile->email.'>');
|
print $emailsenderprofile->label.' '.dol_escape_htmltag('<'.$emailsenderprofile->email.'>');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Separator
|
// Separator
|
||||||
|
|
||||||
print '<tr class="oddeven"><td colspan="2"> </td></tr>';
|
print '<tr class="oddeven"><td colspan="2"> </td></tr>';
|
||||||
|
|
||||||
// Errors To
|
// Errors To
|
||||||
|
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_ERRORS_TO").'</td>';
|
print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_ERRORS_TO").'</td>';
|
||||||
print '<td>'.$conf->global->MAIN_MAIL_ERRORS_TO;
|
print '<td>'.$conf->global->MAIN_MAIL_ERRORS_TO;
|
||||||
@ -660,10 +640,10 @@ else
|
|||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
|
|
||||||
|
|
||||||
if ($conf->global->MAIN_MAIL_SENDMODE == 'mail' && empty($conf->global->MAIN_FIX_FOR_BUGGED_MTA))
|
if ($conf->global->MAIN_MAIL_SENDMODE == 'mail' && empty($conf->global->MAIN_FIX_FOR_BUGGED_MTA))
|
||||||
{
|
{
|
||||||
print '<br>';
|
print '<br>';
|
||||||
/*
|
/*
|
||||||
// Warning 1
|
// Warning 1
|
||||||
if ($linuxlike)
|
if ($linuxlike)
|
||||||
{
|
{
|
||||||
@ -673,9 +653,9 @@ else
|
|||||||
print info_admin($langs->trans("SendmailOptionNotComplete"));
|
print info_admin($langs->trans("SendmailOptionNotComplete"));
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
// Warning 2
|
// Warning 2
|
||||||
print info_admin($langs->trans("SendmailOptionMayHurtBuggedMTA"));
|
print info_admin($langs->trans("SendmailOptionMayHurtBuggedMTA"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Boutons actions
|
// Boutons actions
|
||||||
@ -707,8 +687,8 @@ else
|
|||||||
|
|
||||||
if ($conf->global->MAIN_MAIL_SENDMODE == 'mail' && ! in_array($action, array('testconnect', 'test', 'testhtml')))
|
if ($conf->global->MAIN_MAIL_SENDMODE == 'mail' && ! in_array($action, array('testconnect', 'test', 'testhtml')))
|
||||||
{
|
{
|
||||||
$text = $langs->trans("WarningPHPMail");
|
$text = $langs->trans("WarningPHPMail");
|
||||||
print info_admin($text);
|
print info_admin($text);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run the test to connect
|
// Run the test to connect
|
||||||
@ -736,7 +716,7 @@ else
|
|||||||
// Show email send test form
|
// Show email send test form
|
||||||
if ($action == 'test' || $action == 'testhtml')
|
if ($action == 'test' || $action == 'testhtml')
|
||||||
{
|
{
|
||||||
print '<div id="formmailbeforetitle" name="formmailbeforetitle"></div>';
|
print '<div id="formmailbeforetitle" name="formmailbeforetitle"></div>';
|
||||||
print load_fiche_titre($action == 'testhtml'?$langs->trans("DoTestSendHTML"):$langs->trans("DoTestSend"));
|
print load_fiche_titre($action == 'testhtml'?$langs->trans("DoTestSendHTML"):$langs->trans("DoTestSend"));
|
||||||
|
|
||||||
dol_fiche_head('');
|
dol_fiche_head('');
|
||||||
@ -772,7 +752,7 @@ else
|
|||||||
$formmail->param["returnurl"]=$_SERVER["PHP_SELF"];
|
$formmail->param["returnurl"]=$_SERVER["PHP_SELF"];
|
||||||
|
|
||||||
// Init list of files
|
// Init list of files
|
||||||
if (GETPOST("mode")=='init')
|
if (GETPOST("mode")=='init')
|
||||||
{
|
{
|
||||||
$formmail->clear_attached_files();
|
$formmail->clear_attached_files();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,7 +51,7 @@ $substitutionarrayfortest=array(
|
|||||||
'__EMAIL__' => 'TESTEMail',
|
'__EMAIL__' => 'TESTEMail',
|
||||||
'__LASTNAME__' => 'TESTLastname',
|
'__LASTNAME__' => 'TESTLastname',
|
||||||
'__FIRSTNAME__' => 'TESTFirstname',
|
'__FIRSTNAME__' => 'TESTFirstname',
|
||||||
'__SIGNATURE__' => (($user->signature && empty($conf->global->MAIN_MAIL_DO_NOT_USE_SIGN))?$usersignature:''),
|
'__USER_SIGNATURE__' => (($user->signature && empty($conf->global->MAIN_MAIL_DO_NOT_USE_SIGN))?$usersignature:''),
|
||||||
//'__PERSONALIZED__' => 'TESTPersonalized' // Hiden because not used yet
|
//'__PERSONALIZED__' => 'TESTPersonalized' // Hiden because not used yet
|
||||||
);
|
);
|
||||||
complete_substitutions_array($substitutionarrayfortest, $langs);
|
complete_substitutions_array($substitutionarrayfortest, $langs);
|
||||||
@ -114,27 +114,7 @@ llxHeader('',$langs->trans("Setup"),$wikihelp);
|
|||||||
|
|
||||||
print load_fiche_titre($langs->trans("EMailsSetup"),'','title_setup');
|
print load_fiche_titre($langs->trans("EMailsSetup"),'','title_setup');
|
||||||
|
|
||||||
|
$head = email_admin_prepare_head();
|
||||||
$h = 0;
|
|
||||||
|
|
||||||
$head[$h][0] = DOL_URL_ROOT."/admin/mails.php";
|
|
||||||
$head[$h][1] = $langs->trans("OutGoingEmailSetup");
|
|
||||||
$head[$h][2] = 'common';
|
|
||||||
$h++;
|
|
||||||
|
|
||||||
if ($conf->mailing->enabled)
|
|
||||||
{
|
|
||||||
$head[$h][0] = DOL_URL_ROOT."/admin/mails_emailing.php";
|
|
||||||
$head[$h][1] = $langs->trans("OutGoingEmailSetupForEmailing");
|
|
||||||
$head[$h][2] = 'common_emailing';
|
|
||||||
$h++;
|
|
||||||
}
|
|
||||||
|
|
||||||
$head[$h][0] = DOL_URL_ROOT."/admin/mails_templates.php";
|
|
||||||
$head[$h][1] = $langs->trans("DictionaryEMailTemplates");
|
|
||||||
$head[$h][2] = 'templates';
|
|
||||||
$h++;
|
|
||||||
|
|
||||||
|
|
||||||
// List of sending methods
|
// List of sending methods
|
||||||
$listofmethods=array();
|
$listofmethods=array();
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2007-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
/* Copyright (C) 2007-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) ---Put here your own copyright and developer email---
|
|
||||||
*
|
*
|
||||||
* 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
|
||||||
@ -17,9 +16,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file emailsenderprofile_list.php
|
* \file htdocs/admin/mails_senderprofile_list.php
|
||||||
* \ingroup monmodule
|
* \ingroup core
|
||||||
* \brief List page for emailsenderprofile
|
* \brief Page to adminsiter email sender profiles
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1');
|
//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1');
|
||||||
@ -37,30 +36,17 @@
|
|||||||
//if (! defined("NOLOGIN")) define("NOLOGIN",'1'); // If this page is public (can be called outside logged session)
|
//if (! defined("NOLOGIN")) define("NOLOGIN",'1'); // If this page is public (can be called outside logged session)
|
||||||
|
|
||||||
|
|
||||||
// Load Dolibarr environment
|
require '../main.inc.php';
|
||||||
$res=0;
|
|
||||||
// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined)
|
|
||||||
if (! $res && ! empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) $res=@include($_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php");
|
|
||||||
// Try main.inc.php into web root detected using web root caluclated from SCRIPT_FILENAME
|
|
||||||
$tmp=empty($_SERVER['SCRIPT_FILENAME'])?'':$_SERVER['SCRIPT_FILENAME'];$tmp2=realpath(__FILE__); $i=strlen($tmp)-1; $j=strlen($tmp2)-1;
|
|
||||||
while($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i]==$tmp2[$j]) { $i--; $j--; }
|
|
||||||
if (! $res && $i > 0 && file_exists(substr($tmp, 0, ($i+1))."/main.inc.php")) $res=@include(substr($tmp, 0, ($i+1))."/main.inc.php");
|
|
||||||
if (! $res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i+1)))."/main.inc.php")) $res=@include(dirname(substr($tmp, 0, ($i+1)))."/main.inc.php");
|
|
||||||
// Try main.inc.php using relative path
|
|
||||||
if (! $res && file_exists("../main.inc.php")) $res=@include("../main.inc.php");
|
|
||||||
if (! $res && file_exists("../../main.inc.php")) $res=@include("../../main.inc.php");
|
|
||||||
if (! $res && file_exists("../../../main.inc.php")) $res=@include("../../../main.inc.php");
|
|
||||||
if (! $res) die("Include of main fails");
|
|
||||||
|
|
||||||
require_once(DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php');
|
require_once(DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php');
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
|
||||||
dol_include_once('/monmodule/class/emailsenderprofile.class.php');
|
require_once DOL_DOCUMENT_ROOT.'/core/class/emailsenderprofile.class.php';
|
||||||
|
|
||||||
// Load traductions files requiredby by page
|
// Load traductions files requiredby by page
|
||||||
$langs->loadLangs(array("monmodule@monmodule","other"));
|
$langs->loadLangs(array("errors","admin","mails","languages"));
|
||||||
|
|
||||||
$action = GETPOST('action','alpha'); // The action 'add', 'create', 'edit', 'update', 'view', ...
|
$action = GETPOST('action','alpha')?GETPOST('action','alpha'):'view';
|
||||||
$massaction = GETPOST('massaction','alpha'); // The bulk action (combo box choice into lists)
|
$massaction = GETPOST('massaction','alpha'); // The bulk action (combo box choice into lists)
|
||||||
$show_files = GETPOST('show_files','int'); // Show files area generated by bulk actions ?
|
$show_files = GETPOST('show_files','int'); // Show files area generated by bulk actions ?
|
||||||
$confirm = GETPOST('confirm','alpha'); // Result of a confirmation
|
$confirm = GETPOST('confirm','alpha'); // Result of a confirmation
|
||||||
@ -99,7 +85,7 @@ if (! $sortorder) $sortorder="ASC";
|
|||||||
$socid=0;
|
$socid=0;
|
||||||
if ($user->societe_id > 0)
|
if ($user->societe_id > 0)
|
||||||
{
|
{
|
||||||
//$socid = $user->societe_id;
|
//$socid = $user->societe_id;
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,14 +94,14 @@ $search_all=trim(GETPOST("search_all",'alpha'));
|
|||||||
$search=array();
|
$search=array();
|
||||||
foreach($object->fields as $key => $val)
|
foreach($object->fields as $key => $val)
|
||||||
{
|
{
|
||||||
if (GETPOST('search_'.$key,'alpha')) $search[$key]=GETPOST('search_'.$key,'alpha');
|
if (GETPOST('search_'.$key,'alpha')) $search[$key]=GETPOST('search_'.$key,'alpha');
|
||||||
}
|
}
|
||||||
|
|
||||||
// List of fields to search into when doing a "search in all"
|
// List of fields to search into when doing a "search in all"
|
||||||
$fieldstosearchall = array();
|
$fieldstosearchall = array();
|
||||||
foreach($object->fields as $key => $val)
|
foreach($object->fields as $key => $val)
|
||||||
{
|
{
|
||||||
if ($val['searchall']) $fieldstosearchall['t.'.$key]=$val['label'];
|
if ($val['searchall']) $fieldstosearchall['t.'.$key]=$val['label'];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Definition of fields for list
|
// Definition of fields for list
|
||||||
@ -123,24 +109,22 @@ $arrayfields=array();
|
|||||||
foreach($object->fields as $key => $val)
|
foreach($object->fields as $key => $val)
|
||||||
{
|
{
|
||||||
// If $val['visible']==0, then we never show the field
|
// If $val['visible']==0, then we never show the field
|
||||||
if (! empty($val['visible'])) $arrayfields['t.'.$key]=array('label'=>$val['label'], 'checked'=>(($val['visible']<0)?0:1), 'enabled'=>$val['enabled']);
|
if (! empty($val['visible'])) $arrayfields['t.'.$key]=array('label'=>$val['label'], 'checked'=>(($val['visible']<0)?0:1), 'enabled'=>$val['enabled']);
|
||||||
}
|
}
|
||||||
// Extra fields
|
// Extra fields
|
||||||
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
|
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
|
||||||
{
|
{
|
||||||
foreach($extrafields->attribute_label as $key => $val)
|
foreach($extrafields->attribute_label as $key => $val)
|
||||||
{
|
{
|
||||||
if (! empty($extrafields->attribute_list[$key])) $arrayfields["ef.".$key]=array('label'=>$extrafields->attribute_label[$key], 'checked'=>(($extrafields->attribute_list[$key]<0)?0:1), 'position'=>$extrafields->attribute_pos[$key], 'enabled'=>$extrafields->attribute_perms[$key]);
|
if (! empty($extrafields->attribute_list[$key])) $arrayfields["ef.".$key]=array('label'=>$extrafields->attribute_label[$key], 'checked'=>(($extrafields->attribute_list[$key]<0)?0:1), 'position'=>$extrafields->attribute_pos[$key], 'enabled'=>(abs($extrafields->attribute_list[$key])!=3 && $extrafields->attribute_perms[$key]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ACTIONS
|
* Actions
|
||||||
*
|
|
||||||
* Put here all code to do according to value of "$action" parameter
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (GETPOST('cancel','alpha')) { $action='list'; $massaction=''; }
|
if (GETPOST('cancel','alpha')) { $action='list'; $massaction=''; }
|
||||||
@ -152,40 +136,38 @@ if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'e
|
|||||||
|
|
||||||
if (empty($reshook))
|
if (empty($reshook))
|
||||||
{
|
{
|
||||||
// Selection of new fields
|
// Selection of new fields
|
||||||
include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
|
||||||
|
|
||||||
// Purge search criteria
|
// Purge search criteria
|
||||||
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
|
||||||
{
|
{
|
||||||
foreach($object->fields as $key => $val)
|
foreach($object->fields as $key => $val)
|
||||||
{
|
{
|
||||||
$search[$key]='';
|
$search[$key]='';
|
||||||
}
|
}
|
||||||
$toselect='';
|
$toselect='';
|
||||||
$search_array_options=array();
|
$search_array_options=array();
|
||||||
}
|
}
|
||||||
if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') || GETPOST('button_removefilter','alpha')
|
if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') || GETPOST('button_removefilter','alpha')
|
||||||
|| GETPOST('button_search_x','alpha') || GETPOST('button_search.x','alpha') || GETPOST('button_search','alpha'))
|
|| GETPOST('button_search_x','alpha') || GETPOST('button_search.x','alpha') || GETPOST('button_search','alpha'))
|
||||||
{
|
{
|
||||||
$massaction=''; // Protection to avoid mass action if we force a new search during a mass action confirmation
|
$massaction=''; // Protection to avoid mass action if we force a new search during a mass action confirmation
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mass actions
|
// Mass actions
|
||||||
$objectclass='EmailSenderProfile';
|
$objectclass='EmailSenderProfile';
|
||||||
$objectlabel='EmailSenderProfile';
|
$objectlabel='EmailSenderProfile';
|
||||||
$permtoread = $user->rights->monmodule->read;
|
$permtoread = $user->admin;
|
||||||
$permtodelete = $user->rights->monmodule->delete;
|
$permtodelete = $user->admin;
|
||||||
$uploaddir = $conf->monmodule->dir_output;
|
$uploaddir = $conf->admin->dir_output.'/senderprofiles';
|
||||||
include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* VIEW
|
* View
|
||||||
*
|
|
||||||
* Put here all code to build page
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$form=new Form($db);
|
$form=new Form($db);
|
||||||
@ -197,12 +179,24 @@ $help_url='';
|
|||||||
$title = $langs->trans('ListOf', $langs->transnoentitiesnoconv("EmailSenderProfiles"));
|
$title = $langs->trans('ListOf', $langs->transnoentitiesnoconv("EmailSenderProfiles"));
|
||||||
|
|
||||||
|
|
||||||
|
llxHeader();
|
||||||
|
|
||||||
|
$titre=$langs->trans("EMailsSetup");
|
||||||
|
$linkback='';
|
||||||
|
$titlepicto='title_setup';
|
||||||
|
|
||||||
|
print load_fiche_titre($titre,$linkback,$titlepicto);
|
||||||
|
|
||||||
|
$head = email_admin_prepare_head();
|
||||||
|
|
||||||
|
dol_fiche_head($head, 'senderprofiles', '', -1);
|
||||||
|
|
||||||
// Build and execute select
|
// Build and execute select
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
$sql = 'SELECT ';
|
$sql = 'SELECT ';
|
||||||
foreach($object->fields as $key => $val)
|
foreach($object->fields as $key => $val)
|
||||||
{
|
{
|
||||||
$sql.='t.'.$key.', ';
|
$sql.='t.'.$key.', ';
|
||||||
}
|
}
|
||||||
// Add fields from extrafields
|
// Add fields from extrafields
|
||||||
foreach ($extrafields->attribute_label as $key => $val) $sql.=($extrafields->attribute_type[$key] != 'separate' ? ", ef.".$key.' as options_'.$key : '');
|
foreach ($extrafields->attribute_label as $key => $val) $sql.=($extrafields->attribute_type[$key] != 'separate' ? ", ef.".$key.' as options_'.$key : '');
|
||||||
@ -211,7 +205,7 @@ $parameters=array();
|
|||||||
$reshook=$hookmanager->executeHooks('printFieldListSelect', $parameters, $object); // Note that $action and $object may have been modified by hook
|
$reshook=$hookmanager->executeHooks('printFieldListSelect', $parameters, $object); // Note that $action and $object may have been modified by hook
|
||||||
$sql.=$hookmanager->resPrint;
|
$sql.=$hookmanager->resPrint;
|
||||||
$sql=preg_replace('/, $/','', $sql);
|
$sql=preg_replace('/, $/','', $sql);
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."emailsenderprofile as t";
|
$sql.= " FROM ".MAIN_DB_PREFIX."c_email_senderprofile as t";
|
||||||
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."emailsenderprofile_extrafields as ef on (t.rowid = ef.fk_object)";
|
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."emailsenderprofile_extrafields as ef on (t.rowid = ef.fk_object)";
|
||||||
$sql.= " WHERE t.entity IN (".getEntity('emailsenderprofile').")";
|
$sql.= " WHERE t.entity IN (".getEntity('emailsenderprofile').")";
|
||||||
foreach($search as $key => $val)
|
foreach($search as $key => $val)
|
||||||
@ -223,16 +217,16 @@ if ($search_all) $sql.= natural_search(array_keys($fieldstosearchall), $search_a
|
|||||||
// Add where from extra fields
|
// Add where from extra fields
|
||||||
foreach ($search_array_options as $key => $val)
|
foreach ($search_array_options as $key => $val)
|
||||||
{
|
{
|
||||||
$crit=$val;
|
$crit=$val;
|
||||||
$tmpkey=preg_replace('/search_options_/','',$key);
|
$tmpkey=preg_replace('/search_options_/','',$key);
|
||||||
$typ=$extrafields->attribute_type[$tmpkey];
|
$typ=$extrafields->attribute_type[$tmpkey];
|
||||||
$mode_search=0;
|
$mode_search=0;
|
||||||
if (in_array($typ, array('int','double','real'))) $mode_search=1; // Search on a numeric
|
if (in_array($typ, array('int','double','real'))) $mode_search=1; // Search on a numeric
|
||||||
if (in_array($typ, array('sellist')) && $crit != '0' && $crit != '-1') $mode_search=2; // Search on a foreign key int
|
if (in_array($typ, array('sellist','link')) && $crit != '0' && $crit != '-1') $mode_search=2; // Search on a foreign key int
|
||||||
if ($crit != '' && (! in_array($typ, array('select','sellist')) || $crit != '0'))
|
if ($crit != '' && (! in_array($typ, array('select','sellist')) || $crit != '0'))
|
||||||
{
|
{
|
||||||
$sql .= natural_search('ef.'.$tmpkey, $crit, $mode_search);
|
$sql .= natural_search('ef.'.$tmpkey, $crit, $mode_search);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Add where from hooks
|
// Add where from hooks
|
||||||
$parameters=array();
|
$parameters=array();
|
||||||
@ -269,8 +263,8 @@ dol_syslog($script_file, LOG_DEBUG);
|
|||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
if (! $resql)
|
if (! $resql)
|
||||||
{
|
{
|
||||||
dol_print_error($db);
|
dol_print_error($db);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
$num = $db->num_rows($resql);
|
$num = $db->num_rows($resql);
|
||||||
@ -278,18 +272,13 @@ $num = $db->num_rows($resql);
|
|||||||
// Direct jump if only one record found
|
// Direct jump if only one record found
|
||||||
if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $search_all)
|
if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $search_all)
|
||||||
{
|
{
|
||||||
$obj = $db->fetch_object($resql);
|
$obj = $db->fetch_object($resql);
|
||||||
$id = $obj->rowid;
|
$id = $obj->rowid;
|
||||||
header("Location: ".DOL_URL_ROOT.'/monmodule/emailsenderprofile_card.php?id='.$id);
|
header("Location: ".DOL_URL_ROOT.'/monmodule/emailsenderprofile_card.php?id='.$id);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Output page
|
|
||||||
// --------------------------------------------------------------------
|
|
||||||
|
|
||||||
llxHeader('', $title, $help_url);
|
|
||||||
|
|
||||||
// Example : Adding jquery code
|
// Example : Adding jquery code
|
||||||
print '<script type="text/javascript" language="javascript">
|
print '<script type="text/javascript" language="javascript">
|
||||||
jQuery(document).ready(function() {
|
jQuery(document).ready(function() {
|
||||||
@ -312,24 +301,24 @@ if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&con
|
|||||||
if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit);
|
if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit);
|
||||||
foreach($search as $key => $val)
|
foreach($search as $key => $val)
|
||||||
{
|
{
|
||||||
$param.= '&search_'.$key.'='.urlencode($search[$key]);
|
$param.= '&search_'.$key.'='.urlencode($search[$key]);
|
||||||
}
|
}
|
||||||
if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss);
|
if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss);
|
||||||
// Add $param from extra fields
|
// Add $param from extra fields
|
||||||
foreach ($search_array_options as $key => $val)
|
foreach ($search_array_options as $key => $val)
|
||||||
{
|
{
|
||||||
$crit=$val;
|
$crit=$val;
|
||||||
$tmpkey=preg_replace('/search_options_/','',$key);
|
$tmpkey=preg_replace('/search_options_/','',$key);
|
||||||
if ($val != '') $param.='&search_options_'.$tmpkey.'='.urlencode($val);
|
if ($val != '') $param.='&search_options_'.$tmpkey.'='.urlencode($val);
|
||||||
}
|
}
|
||||||
|
|
||||||
// List of mass actions available
|
// List of mass actions available
|
||||||
$arrayofmassactions = array(
|
$arrayofmassactions = array(
|
||||||
//'presend'=>$langs->trans("SendByMail"),
|
//'presend'=>$langs->trans("SendByMail"),
|
||||||
//'builddoc'=>$langs->trans("PDFMerge"),
|
//'builddoc'=>$langs->trans("PDFMerge"),
|
||||||
);
|
);
|
||||||
if ($user->rights->monmodule->delete) $arrayofmassactions['delete']=$langs->trans("Delete");
|
if ($user->rights->monmodule->delete) $arrayofmassactions['predelete']=$langs->trans("Delete");
|
||||||
if ($massaction == 'presend') $arrayofmassactions=array();
|
if (in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array();
|
||||||
$massactionbutton=$form->selectMassAction('', $arrayofmassactions);
|
$massactionbutton=$form->selectMassAction('', $arrayofmassactions);
|
||||||
|
|
||||||
print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">';
|
print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">';
|
||||||
@ -342,18 +331,18 @@ print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
|||||||
print '<input type="hidden" name="page" value="'.$page.'">';
|
print '<input type="hidden" name="page" value="'.$page.'">';
|
||||||
print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
|
print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
|
||||||
|
|
||||||
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_companies', 0, '', '', $limit);
|
//print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_companies', 0, '', '', $limit);
|
||||||
|
|
||||||
if ($sall)
|
$topicmail="Information";
|
||||||
{
|
//$modelmail="subscription";
|
||||||
foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val);
|
$objecttmp=new EmailSenderProfile($db);
|
||||||
print $langs->trans("FilterOnInto", $sall) . join(', ',$fieldstosearchall);
|
//$trackid='sub'.$object->id;
|
||||||
}
|
include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php';
|
||||||
|
|
||||||
$moreforfilter = '';
|
$moreforfilter = '';
|
||||||
$moreforfilter.='<div class="divsearchfield">';
|
/*$moreforfilter.='<div class="divsearchfield">';
|
||||||
$moreforfilter.= $langs->trans('MyFilter') . ': <input type="text" name="search_myfield" value="'.dol_escape_htmltag($search_myfield).'">';
|
$moreforfilter.= $langs->trans('MyFilter') . ': <input type="text" name="search_myfield" value="'.dol_escape_htmltag($search_myfield).'">';
|
||||||
$moreforfilter.= '</div>';
|
$moreforfilter.= '</div>';*/
|
||||||
|
|
||||||
$parameters=array();
|
$parameters=array();
|
||||||
$reshook=$hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook
|
$reshook=$hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook
|
||||||
@ -364,7 +353,7 @@ if (! empty($moreforfilter))
|
|||||||
{
|
{
|
||||||
print '<div class="liste_titre liste_titre_bydiv centpercent">';
|
print '<div class="liste_titre liste_titre_bydiv centpercent">';
|
||||||
print $moreforfilter;
|
print $moreforfilter;
|
||||||
print '</div>';
|
print '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
|
$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
|
||||||
@ -380,35 +369,35 @@ print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"")
|
|||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
foreach($object->fields as $key => $val)
|
foreach($object->fields as $key => $val)
|
||||||
{
|
{
|
||||||
if (in_array($key, array('date_creation', 'tms', 'import_key', 'status'))) continue;
|
if (in_array($key, array('date_creation', 'tms', 'import_key', 'status'))) continue;
|
||||||
$align='';
|
$align='';
|
||||||
if (in_array($val['type'], array('date','datetime','timestamp'))) $align='center';
|
if (in_array($val['type'], array('date','datetime','timestamp'))) $align='center';
|
||||||
if (in_array($val['type'], array('timestamp'))) $align.=' nowrap';
|
if (in_array($val['type'], array('timestamp'))) $align.=' nowrap';
|
||||||
if ($key == 'status') $align.=($align?' ':'').'center';
|
if ($key == 'status') $align.=($align?' ':'').'center';
|
||||||
if (! empty($arrayfields['t.'.$key]['checked'])) print '<td class="liste_titre'.($align?' '.$align:'').'"><input type="text" class="flat maxwidth75" name="search_'.$key.'" value="'.dol_escape_htmltag($search[$key]).'"></td>';
|
if (! empty($arrayfields['t.'.$key]['checked'])) print '<td class="liste_titre'.($align?' '.$align:'').'"><input type="text" class="flat maxwidth75" name="search_'.$key.'" value="'.dol_escape_htmltag($search[$key]).'"></td>';
|
||||||
}
|
}
|
||||||
// Extra fields
|
// Extra fields
|
||||||
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
|
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
|
||||||
{
|
{
|
||||||
foreach($extrafields->attribute_label as $key => $val)
|
foreach($extrafields->attribute_label as $key => $val)
|
||||||
{
|
{
|
||||||
if (! empty($arrayfields["ef.".$key]['checked']))
|
if (! empty($arrayfields["ef.".$key]['checked']))
|
||||||
{
|
{
|
||||||
$align=$extrafields->getAlignFlag($key);
|
$align=$extrafields->getAlignFlag($key);
|
||||||
$typeofextrafield=$extrafields->attribute_type[$key];
|
$typeofextrafield=$extrafields->attribute_type[$key];
|
||||||
print '<td class="liste_titre'.($align?' '.$align:'').'">';
|
print '<td class="liste_titre'.($align?' '.$align:'').'">';
|
||||||
if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select')) && empty($extrafields->attribute_computed[$key]))
|
if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select')) && empty($extrafields->attribute_computed[$key]))
|
||||||
{
|
{
|
||||||
$crit=$val;
|
$crit=$val;
|
||||||
$tmpkey=preg_replace('/search_options_/','',$key);
|
$tmpkey=preg_replace('/search_options_/','',$key);
|
||||||
$searchclass='';
|
$searchclass='';
|
||||||
if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring';
|
if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring';
|
||||||
if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum';
|
if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum';
|
||||||
print '<input class="flat'.($searchclass?' '.$searchclass:'').'" size="4" type="text" name="search_options_'.$tmpkey.'" value="'.dol_escape_htmltag($search_array_options['search_options_'.$tmpkey]).'">';
|
print '<input class="flat'.($searchclass?' '.$searchclass:'').'" size="4" type="text" name="search_options_'.$tmpkey.'" value="'.dol_escape_htmltag($search_array_options['search_options_'.$tmpkey]).'">';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Fields from hook
|
// Fields from hook
|
||||||
$parameters=array('arrayfields'=>$arrayfields);
|
$parameters=array('arrayfields'=>$arrayfields);
|
||||||
@ -417,12 +406,12 @@ print $hookmanager->resPrint;
|
|||||||
// Rest of fields search
|
// Rest of fields search
|
||||||
foreach($object->fields as $key => $val)
|
foreach($object->fields as $key => $val)
|
||||||
{
|
{
|
||||||
if (! in_array($key, array('date_creation', 'tms', 'import_key', 'status'))) continue;
|
if (! in_array($key, array('date_creation', 'tms', 'import_key', 'status'))) continue;
|
||||||
$align='';
|
$align='';
|
||||||
if (in_array($val['type'], array('date','datetime','timestamp'))) $align='center';
|
if (in_array($val['type'], array('date','datetime','timestamp'))) $align='center';
|
||||||
if (in_array($val['type'], array('timestamp'))) $align.=' nowrap';
|
if (in_array($val['type'], array('timestamp'))) $align.=' nowrap';
|
||||||
if ($key == 'status') $align.=($align?' ':'').'center';
|
if ($key == 'status') $align.=($align?' ':'').'center';
|
||||||
if (! empty($arrayfields['t.'.$key]['checked'])) print '<td class="liste_titre'.($align?' '.$align:'').'"><input type="text" class="flat maxwidth75" name="search_'.$key.'" value="'.dol_escape_htmltag($search[$key]).'"></td>';
|
if (! empty($arrayfields['t.'.$key]['checked'])) print '<td class="liste_titre'.($align?' '.$align:'').'"><input type="text" class="flat maxwidth75" name="search_'.$key.'" value="'.dol_escape_htmltag($search[$key]).'"></td>';
|
||||||
}
|
}
|
||||||
// Action column
|
// Action column
|
||||||
print '<td class="liste_titre" align="right">';
|
print '<td class="liste_titre" align="right">';
|
||||||
@ -437,25 +426,25 @@ print '</tr>'."\n";
|
|||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
foreach($object->fields as $key => $val)
|
foreach($object->fields as $key => $val)
|
||||||
{
|
{
|
||||||
if (in_array($key, array('date_creation', 'tms', 'import_key', 'status'))) continue;
|
if (in_array($key, array('date_creation', 'tms', 'import_key', 'status'))) continue;
|
||||||
$align='';
|
$align='';
|
||||||
if (in_array($val['type'], array('date','datetime','timestamp'))) $align='center';
|
if (in_array($val['type'], array('date','datetime','timestamp'))) $align='center';
|
||||||
if (in_array($val['type'], array('timestamp'))) $align.='nowrap';
|
if (in_array($val['type'], array('timestamp'))) $align.='nowrap';
|
||||||
if ($key == 'status') $align.=($align?' ':'').'center';
|
if ($key == 'status') $align.=($align?' ':'').'center';
|
||||||
if (! empty($arrayfields['t.'.$key]['checked'])) print getTitleFieldOfList($arrayfields['t.'.$key]['label'], 0, $_SERVER['PHP_SELF'], 't.'.$key, '', $param, ($align?'class="'.$align.'"':''), $sortfield, $sortorder, $align.' ')."\n";
|
if (! empty($arrayfields['t.'.$key]['checked'])) print getTitleFieldOfList($arrayfields['t.'.$key]['label'], 0, $_SERVER['PHP_SELF'], 't.'.$key, '', $param, ($align?'class="'.$align.'"':''), $sortfield, $sortorder, $align.' ')."\n";
|
||||||
}
|
}
|
||||||
// Extra fields
|
// Extra fields
|
||||||
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
|
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
|
||||||
{
|
{
|
||||||
foreach($extrafields->attribute_label as $key => $val)
|
foreach($extrafields->attribute_label as $key => $val)
|
||||||
{
|
{
|
||||||
if (! empty($arrayfields["ef.".$key]['checked']))
|
if (! empty($arrayfields["ef.".$key]['checked']))
|
||||||
{
|
{
|
||||||
$align=$extrafields->getAlignFlag($key);
|
$align=$extrafields->getAlignFlag($key);
|
||||||
$sortonfield = "ef.".$key;
|
$sortonfield = "ef.".$key;
|
||||||
if (! empty($extrafields->attribute_computed[$key])) $sortonfield='';
|
if (! empty($extrafields->attribute_computed[$key])) $sortonfield='';
|
||||||
print getTitleFieldOfList($langs->trans($extralabels[$key]), 0, $_SERVER["PHP_SELF"], $sortonfield, "", $param, ($align?'align="'.$align.'"':''), $sortfield, $sortorder)."\n";
|
print getTitleFieldOfList($langs->trans($extralabels[$key]), 0, $_SERVER["PHP_SELF"], $sortonfield, "", $param, ($align?'align="'.$align.'"':''), $sortfield, $sortorder)."\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Hook fields
|
// Hook fields
|
||||||
@ -465,12 +454,12 @@ print $hookmanager->resPrint;
|
|||||||
// Rest of fields title
|
// Rest of fields title
|
||||||
foreach($object->fields as $key => $val)
|
foreach($object->fields as $key => $val)
|
||||||
{
|
{
|
||||||
if (! in_array($key, array('date_creation', 'tms', 'import_key', 'status'))) continue;
|
if (! in_array($key, array('date_creation', 'tms', 'import_key', 'status'))) continue;
|
||||||
$align='';
|
$align='';
|
||||||
if (in_array($val['type'], array('date','datetime','timestamp'))) $align='center';
|
if (in_array($val['type'], array('date','datetime','timestamp'))) $align='center';
|
||||||
if (in_array($val['type'], array('timestamp'))) $align.=' nowrap';
|
if (in_array($val['type'], array('timestamp'))) $align.=' nowrap';
|
||||||
if ($key == 'status') $align.=($align?' ':'').'center';
|
if ($key == 'status') $align.=($align?' ':'').'center';
|
||||||
if (! empty($arrayfields['t.'.$key]['checked'])) print getTitleFieldOfList($arrayfields['t.'.$key]['label'], 0, $_SERVER['PHP_SELF'], 't.'.$key, '', $param, ($align?'class="'.$align.'"':''), $sortfield, $sortorder, $align.' ')."\n";
|
if (! empty($arrayfields['t.'.$key]['checked'])) print getTitleFieldOfList($arrayfields['t.'.$key]['label'], 0, $_SERVER['PHP_SELF'], 't.'.$key, '', $param, ($align?'class="'.$align.'"':''), $sortfield, $sortorder, $align.' ')."\n";
|
||||||
}
|
}
|
||||||
print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"],"",'','','align="center"',$sortfield,$sortorder,'maxwidthsearch ')."\n";
|
print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"],"",'','','align="center"',$sortfield,$sortorder,'maxwidthsearch ')."\n";
|
||||||
print '</tr>'."\n";
|
print '</tr>'."\n";
|
||||||
@ -480,7 +469,7 @@ print '</tr>'."\n";
|
|||||||
$needToFetchEachLine=0;
|
$needToFetchEachLine=0;
|
||||||
foreach ($extrafields->attribute_computed as $key => $val)
|
foreach ($extrafields->attribute_computed as $key => $val)
|
||||||
{
|
{
|
||||||
if (preg_match('/\$object/',$val)) $needToFetchEachLine++; // There is at least one compute field that use $object
|
if (preg_match('/\$object/',$val)) $needToFetchEachLine++; // There is at least one compute field that use $object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -490,42 +479,42 @@ $i=0;
|
|||||||
$totalarray=array();
|
$totalarray=array();
|
||||||
while ($i < min($num, $limit))
|
while ($i < min($num, $limit))
|
||||||
{
|
{
|
||||||
$obj = $db->fetch_object($resql);
|
$obj = $db->fetch_object($resql);
|
||||||
if (empty($obj)) break; // Should not happen
|
if (empty($obj)) break; // Should not happen
|
||||||
|
|
||||||
// Store properties in $object
|
// Store properties in $object
|
||||||
$object->id = $obj->rowid;
|
$object->id = $obj->rowid;
|
||||||
foreach($object->fields as $key => $val)
|
foreach($object->fields as $key => $val)
|
||||||
{
|
{
|
||||||
if (isset($obj->$key)) $object->$key = $obj->$key;
|
if (isset($obj->$key)) $object->$key = $obj->$key;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show here line of result
|
// Show here line of result
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
foreach($object->fields as $key => $val)
|
foreach($object->fields as $key => $val)
|
||||||
{
|
{
|
||||||
if (in_array($key, array('date_creation', 'tms', 'import_key', 'status'))) continue;
|
if (in_array($key, array('date_creation', 'tms', 'import_key', 'status'))) continue;
|
||||||
$align='';
|
$align='';
|
||||||
if (in_array($val['type'], array('date','datetime','timestamp'))) $align='center';
|
if (in_array($val['type'], array('date','datetime','timestamp'))) $align='center';
|
||||||
if (in_array($val['type'], array('timestamp'))) $align.='nowrap';
|
if (in_array($val['type'], array('timestamp'))) $align.='nowrap';
|
||||||
if ($key == 'status') $align.=($align?' ':'').'center';
|
if ($key == 'status') $align.=($align?' ':'').'center';
|
||||||
if (! empty($arrayfields['t.'.$key]['checked']))
|
if (! empty($arrayfields['t.'.$key]['checked']))
|
||||||
{
|
{
|
||||||
print '<td'.($align?' class="'.$align.'"':'').'>';
|
print '<td'.($align?' class="'.$align.'"':'').'>';
|
||||||
if (in_array($val['type'], array('date','datetime','timestamp'))) print dol_print_date($db->jdate($obj->$key), 'dayhour');
|
if (in_array($val['type'], array('date','datetime','timestamp'))) print dol_print_date($db->jdate($obj->$key), 'dayhour');
|
||||||
elseif ($key == 'ref') print $object->getNomUrl(1, '', 0, '', 1);
|
elseif ($key == 'ref') print $object->getNomUrl(1, '', 0, '', 1);
|
||||||
elseif ($key == 'status') print $object->getLibStatut(3);
|
elseif ($key == 'status') print $object->getLibStatut(3);
|
||||||
else print $obj->$key;
|
else print $obj->$key;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
if (! empty($val['isameasure']))
|
if (! empty($val['isameasure']))
|
||||||
{
|
{
|
||||||
if (! $i) $totalarray['pos'][$totalarray['nbfield']]='t.'.$key;
|
if (! $i) $totalarray['pos'][$totalarray['nbfield']]='t.'.$key;
|
||||||
$totalarray['val']['t.'.$key] += $obj->$key;
|
$totalarray['val']['t.'.$key] += $obj->$key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Extra fields
|
// Extra fields
|
||||||
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
|
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
|
||||||
{
|
{
|
||||||
foreach($extrafields->attribute_label as $key => $val)
|
foreach($extrafields->attribute_label as $key => $val)
|
||||||
@ -539,86 +528,86 @@ while ($i < min($num, $limit))
|
|||||||
$tmpkey='options_'.$key;
|
$tmpkey='options_'.$key;
|
||||||
print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1);
|
print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
if (! empty($val['isameasure']))
|
if (! empty($val['isameasure']))
|
||||||
{
|
{
|
||||||
if (! $i) $totalarray['pos'][$totalarray['nbfield']]='ef.'.$tmpkey;
|
if (! $i) $totalarray['pos'][$totalarray['nbfield']]='ef.'.$tmpkey;
|
||||||
$totalarray['val']['ef.'.$tmpkey] += $obj->$tmpkey;
|
$totalarray['val']['ef.'.$tmpkey] += $obj->$tmpkey;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Fields from hook
|
// Fields from hook
|
||||||
$parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj);
|
$parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj);
|
||||||
$reshook=$hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook
|
$reshook=$hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook
|
||||||
print $hookmanager->resPrint;
|
print $hookmanager->resPrint;
|
||||||
// Rest of fields
|
// Rest of fields
|
||||||
foreach($object->fields as $key => $val)
|
foreach($object->fields as $key => $val)
|
||||||
{
|
{
|
||||||
if (! in_array($key, array('date_creation', 'tms', 'import_key', 'status'))) continue;
|
if (! in_array($key, array('date_creation', 'tms', 'import_key', 'status'))) continue;
|
||||||
$align='';
|
$align='';
|
||||||
if (in_array($val['type'], array('date','datetime','timestamp'))) $align.=($align?' ':'').'center';
|
if (in_array($val['type'], array('date','datetime','timestamp'))) $align.=($align?' ':'').'center';
|
||||||
if (in_array($val['type'], array('timestamp'))) $align.=($align?' ':'').'nowrap';
|
if (in_array($val['type'], array('timestamp'))) $align.=($align?' ':'').'nowrap';
|
||||||
if ($key == 'status') $align.=($align?' ':'').'center';
|
if ($key == 'status') $align.=($align?' ':'').'center';
|
||||||
if (! empty($arrayfields['t.'.$key]['checked']))
|
if (! empty($arrayfields['t.'.$key]['checked']))
|
||||||
{
|
{
|
||||||
print '<td'.($align?' class="'.$align.'"':'').'>';
|
print '<td'.($align?' class="'.$align.'"':'').'>';
|
||||||
if (in_array($val['type'], array('date','datetime','timestamp'))) print dol_print_date($db->jdate($obj->$key), 'dayhour');
|
if (in_array($val['type'], array('date','datetime','timestamp'))) print dol_print_date($db->jdate($obj->$key), 'dayhour');
|
||||||
elseif ($key == 'status') print $object->getLibStatut(3);
|
elseif ($key == 'status') print $object->getLibStatut(3);
|
||||||
else print $obj->$key;
|
else print $obj->$key;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
if (! empty($val['isameasure']))
|
if (! empty($val['isameasure']))
|
||||||
{
|
{
|
||||||
if (! $i) $totalarray['pos'][$totalarray['nbfield']]='t.'.$key;
|
if (! $i) $totalarray['pos'][$totalarray['nbfield']]='t.'.$key;
|
||||||
$totalarray['val']['t.'.$key] += $obj->$key;
|
$totalarray['val']['t.'.$key] += $obj->$key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Action column
|
// Action column
|
||||||
print '<td class="nowrap" align="center">';
|
print '<td class="nowrap" align="center">';
|
||||||
if ($massactionbutton || $massaction) // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
|
if ($massactionbutton || $massaction) // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
|
||||||
{
|
{
|
||||||
$selected=0;
|
$selected=0;
|
||||||
if (in_array($obj->rowid, $arrayofselected)) $selected=1;
|
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 '<input id="cb'.$obj->rowid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.'"'.($selected?' checked="checked"':'').'>';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
|
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show total line
|
// Show total line
|
||||||
if (isset($totalarray['pos']))
|
if (isset($totalarray['pos']))
|
||||||
{
|
{
|
||||||
print '<tr class="liste_total">';
|
print '<tr class="liste_total">';
|
||||||
$i=0;
|
$i=0;
|
||||||
while ($i < $totalarray['nbfield'])
|
while ($i < $totalarray['nbfield'])
|
||||||
{
|
{
|
||||||
$i++;
|
$i++;
|
||||||
if (! empty($totalarray['pos'][$i])) print '<td align="right">'.price($totalarray['val'][$totalarray['pos'][$i]]).'</td>';
|
if (! empty($totalarray['pos'][$i])) print '<td align="right">'.price($totalarray['val'][$totalarray['pos'][$i]]).'</td>';
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ($i == 1)
|
if ($i == 1)
|
||||||
{
|
{
|
||||||
if ($num < $limit) print '<td align="left">'.$langs->trans("Total").'</td>';
|
if ($num < $limit) print '<td align="left">'.$langs->trans("Total").'</td>';
|
||||||
else print '<td align="left">'.$langs->trans("Totalforthispage").'</td>';
|
else print '<td align="left">'.$langs->trans("Totalforthispage").'</td>';
|
||||||
}
|
}
|
||||||
else print '<td></td>';
|
else print '<td></td>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// If no record found
|
// If no record found
|
||||||
if ($num == 0)
|
if ($num == 0)
|
||||||
{
|
{
|
||||||
$colspan=1;
|
$colspan=1;
|
||||||
foreach($arrayfields as $key => $val) { if (! empty($val['checked'])) $colspan++; }
|
foreach($arrayfields as $key => $val) { if (! empty($val['checked'])) $colspan++; }
|
||||||
print '<tr><td colspan="'.$colspan.'" class="opacitymedium">'.$langs->trans("NoRecordFound").'</td></tr>';
|
print '<tr><td colspan="'.$colspan.'" class="opacitymedium">'.$langs->trans("NoRecordFound").'</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -635,27 +624,29 @@ print '</form>'."\n";
|
|||||||
|
|
||||||
if (in_array('builddoc',$arrayofmassactions) && ($nbtotalofrecords === '' || $nbtotalofrecords))
|
if (in_array('builddoc',$arrayofmassactions) && ($nbtotalofrecords === '' || $nbtotalofrecords))
|
||||||
{
|
{
|
||||||
if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files)
|
if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files)
|
||||||
{
|
{
|
||||||
require_once(DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php');
|
require_once(DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php');
|
||||||
$formfile = new FormFile($db);
|
$formfile = new FormFile($db);
|
||||||
|
|
||||||
// Show list of available documents
|
// Show list of available documents
|
||||||
$urlsource=$_SERVER['PHP_SELF'].'?sortfield='.$sortfield.'&sortorder='.$sortorder;
|
$urlsource=$_SERVER['PHP_SELF'].'?sortfield='.$sortfield.'&sortorder='.$sortorder;
|
||||||
$urlsource.=str_replace('&','&',$param);
|
$urlsource.=str_replace('&','&',$param);
|
||||||
|
|
||||||
$filedir=$diroutputmassaction;
|
$filedir=$diroutputmassaction;
|
||||||
$genallowed=$user->rights->monmodule->read;
|
$genallowed=$user->rights->monmodule->read;
|
||||||
$delallowed=$user->rights->monmodule->read;
|
$delallowed=$user->rights->monmodule->read;
|
||||||
|
|
||||||
print $formfile->showdocuments('massfilesarea_monmodule','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,$title,'');
|
print $formfile->showdocuments('massfilesarea_monmodule','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,$title,'');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print '<br><a name="show_files"></a><a href="'.$_SERVER["PHP_SELF"].'?show_files=1'.$param.'#show_files">'.$langs->trans("ShowTempMassFilesArea").'</a>';
|
print '<br><a name="show_files"></a><a href="'.$_SERVER["PHP_SELF"].'?show_files=1'.$param.'#show_files">'.$langs->trans("ShowTempMassFilesArea").'</a>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dol_fiche_end();
|
||||||
|
|
||||||
// End of page
|
// End of page
|
||||||
llxFooter();
|
llxFooter();
|
||||||
$db->close();
|
$db->close();
|
||||||
@ -39,18 +39,16 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.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/doleditor.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
|
||||||
if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT . '/core/class/html.formaccounting.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
|
||||||
|
|
||||||
$langs->load("errors");
|
// Load traductions files requiredby by page
|
||||||
$langs->load("admin");
|
$langs->loadLangs(array("errors","admin","mails","languages"));
|
||||||
$langs->load("main");
|
|
||||||
$langs->load("mails");
|
|
||||||
$langs->load("languages");
|
|
||||||
|
|
||||||
$action=GETPOST('action','alpha')?GETPOST('action','alpha'):'view';
|
$action = GETPOST('action','alpha')?GETPOST('action','alpha'):'view';
|
||||||
$confirm=GETPOST('confirm','alpha');
|
$confirm = GETPOST('confirm','alpha'); // Result of a confirmation
|
||||||
$id=GETPOST('id','int');
|
|
||||||
$rowid=GETPOST('rowid','alpha');
|
$id = GETPOST('id','int');
|
||||||
|
$rowid = GETPOST('rowid','alpha');
|
||||||
$search_label=GETPOST('search_label','alpha');
|
$search_label=GETPOST('search_label','alpha');
|
||||||
$search_type_template=GETPOST('search_type_template','alpha');
|
$search_type_template=GETPOST('search_type_template','alpha');
|
||||||
$search_lang=GETPOST('search_lang','alpha');
|
$search_lang=GETPOST('search_lang','alpha');
|
||||||
@ -66,13 +64,13 @@ $actl[0] = img_picto($langs->trans("Disabled"),'switch_off');
|
|||||||
$actl[1] = img_picto($langs->trans("Activated"),'switch_on');
|
$actl[1] = img_picto($langs->trans("Activated"),'switch_on');
|
||||||
|
|
||||||
$listoffset=GETPOST('listoffset','alpha');
|
$listoffset=GETPOST('listoffset','alpha');
|
||||||
$listlimit=GETPOST('listlimit','alpha')>0?GETPOST('listlimit','alpha'):1000;
|
$listlimit =GETPOST('listlimit','alpha')>0?GETPOST('listlimit','alpha'):1000;
|
||||||
$active = 1;
|
$active = 1;
|
||||||
|
|
||||||
$sortfield = GETPOST("sortfield",'alpha');
|
$sortfield = GETPOST("sortfield",'alpha');
|
||||||
$sortorder = GETPOST("sortorder",'alpha');
|
$sortorder = GETPOST("sortorder",'alpha');
|
||||||
$page = GETPOST("page",'int');
|
$page = GETPOST("page",'int');
|
||||||
if ($page == -1 || $page == null) { $page = 0 ; }
|
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
||||||
$offset = $listlimit * $page ;
|
$offset = $listlimit * $page ;
|
||||||
$pageprev = $page - 1;
|
$pageprev = $page - 1;
|
||||||
$pagenext = $page + 1;
|
$pagenext = $page + 1;
|
||||||
@ -403,30 +401,7 @@ $titlepicto='title_setup';
|
|||||||
|
|
||||||
print load_fiche_titre($titre,$linkback,$titlepicto);
|
print load_fiche_titre($titre,$linkback,$titlepicto);
|
||||||
|
|
||||||
$h = 0;
|
$head = email_admin_prepare_head();
|
||||||
|
|
||||||
|
|
||||||
if ($user->admin && (empty($_SESSION['leftmenu']) || $_SESSION['leftmenu'] != 'email_templates'))
|
|
||||||
{
|
|
||||||
$head[$h][0] = DOL_URL_ROOT."/admin/mails.php";
|
|
||||||
$head[$h][1] = $langs->trans("OutGoingEmailSetup");
|
|
||||||
$head[$h][2] = 'common';
|
|
||||||
$h++;
|
|
||||||
|
|
||||||
if (! empty($conf->mailing->enabled))
|
|
||||||
{
|
|
||||||
$head[$h][0] = DOL_URL_ROOT."/admin/mails_emailing.php";
|
|
||||||
$head[$h][1] = $langs->trans("OutGoingEmailSetupForEmailing");
|
|
||||||
$head[$h][2] = 'common_emailing';
|
|
||||||
$h++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$head[$h][0] = DOL_URL_ROOT."/admin/mails_templates.php";
|
|
||||||
$head[$h][1] = $langs->trans("DictionaryEMailTemplates");
|
|
||||||
$head[$h][2] = 'templates';
|
|
||||||
$h++;
|
|
||||||
|
|
||||||
|
|
||||||
dol_fiche_head($head, 'templates', '', -1);
|
dol_fiche_head($head, 'templates', '', -1);
|
||||||
|
|
||||||
@ -582,9 +557,9 @@ foreach ($fieldsforcontent as $tmpfieldlist)
|
|||||||
print '<strong>' . $form->textwithpicto($langs->trans("FilesAttachedToEmail"), $tabhelp[$id][$tmpfieldlist], 1, 'help', '', 0, 2, $tmpfieldlist) . '</strong> ';
|
print '<strong>' . $form->textwithpicto($langs->trans("FilesAttachedToEmail"), $tabhelp[$id][$tmpfieldlist], 1, 'help', '', 0, 2, $tmpfieldlist) . '</strong> ';
|
||||||
}
|
}
|
||||||
if ($tmpfieldlist == 'content')
|
if ($tmpfieldlist == 'content')
|
||||||
print '<strong>' . $form->textwithpicto($langs->trans("Content"), $tabhelp[$id][$tmpfieldlist], 1, 'help', '', 0, 2, $tmpfieldlist) . '</strong> ';
|
print $form->textwithpicto($langs->trans("Content"), $tabhelp[$id][$tmpfieldlist], 1, 'help', '', 0, 2, $tmpfieldlist);
|
||||||
if ($tmpfieldlist == 'content_lines')
|
if ($tmpfieldlist == 'content_lines')
|
||||||
print '<strong>' . $form->textwithpicto($langs->trans("ContentForLines"), $tabhelp[$id][$tmpfieldlist], 1, 'help', '', 0, 2, $tmpfieldlist) . '</strong><br>';
|
print $form->textwithpicto($langs->trans("ContentForLines"), $tabhelp[$id][$tmpfieldlist], 1, 'help', '', 0, 2, $tmpfieldlist) . '<br>';
|
||||||
// Input field
|
// Input field
|
||||||
if ($tmpfieldlist == 'topic') {
|
if ($tmpfieldlist == 'topic') {
|
||||||
print '<input type="text" class="flat minwidth500" name="'.$tmpfieldlist.'" value="' . (! empty($obj->{$tmpfieldlist}) ? $obj->{$tmpfieldlist} : '') . '">';
|
print '<input type="text" class="flat minwidth500" name="'.$tmpfieldlist.'" value="' . (! empty($obj->{$tmpfieldlist}) ? $obj->{$tmpfieldlist} : '') . '">';
|
||||||
@ -733,7 +708,7 @@ if ($resql)
|
|||||||
{
|
{
|
||||||
if (! empty($tabhelp[$id][$value]))
|
if (! empty($tabhelp[$id][$value]))
|
||||||
{
|
{
|
||||||
if (in_array($value, array('topic'))) $valuetoshow = $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2); // Tooltip on hover
|
if (in_array($value, array('topic'))) $valuetoshow = $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2, 'tooltip'.$value); // Tooltip on hover
|
||||||
else $valuetoshow = $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2); // Tooltip on hover
|
else $valuetoshow = $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2); // Tooltip on hover
|
||||||
}
|
}
|
||||||
print getTitleFieldOfList($valuetoshow, 0, $_SERVER["PHP_SELF"], ($sortable?$fieldlist[$field]:''), ($page?'page='.$page.'&':''), $param, "align=".$align, $sortfield, $sortorder);
|
print getTitleFieldOfList($valuetoshow, 0, $_SERVER["PHP_SELF"], ($sortable?$fieldlist[$field]:''), ($page?'page='.$page.'&':''), $param, "align=".$align, $sortfield, $sortorder);
|
||||||
@ -1044,9 +1019,9 @@ function fieldList($fieldlist, $obj='', $tabname='', $context='')
|
|||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
elseif ($context == 'add' & in_array($fieldlist[$field], array('topic', 'joinfiles', 'content', 'content_lines'))) continue;
|
elseif ($context == 'add' && in_array($fieldlist[$field], array('topic', 'joinfiles', 'content', 'content_lines'))) continue;
|
||||||
elseif ($context == 'edit' & in_array($fieldlist[$field], array('topic', 'joinfiles', 'content', 'content_lines'))) continue;
|
elseif ($context == 'edit' && in_array($fieldlist[$field], array('topic', 'joinfiles', 'content', 'content_lines'))) continue;
|
||||||
elseif ($context == 'hide' & in_array($fieldlist[$field], array('topic', 'joinfiles', 'content', 'content_lines'))) continue;
|
elseif ($context == 'hide' && in_array($fieldlist[$field], array('topic', 'joinfiles', 'content', 'content_lines'))) continue;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$size=''; $class=''; $classtd='';
|
$size=''; $class=''; $classtd='';
|
||||||
|
|||||||
@ -28,6 +28,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php';
|
||||||
|
|
||||||
$action=GETPOST('action','aZ09');
|
$action=GETPOST('action','aZ09');
|
||||||
|
$cancel=GETPOST('cancel','alpha');
|
||||||
|
|
||||||
$langs->load("companies");
|
$langs->load("companies");
|
||||||
$langs->load("products");
|
$langs->load("products");
|
||||||
@ -62,22 +63,22 @@ error_reporting($err);
|
|||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ($action == 'update' && empty($_POST["cancel"]))
|
if ($action == 'update' && ! $cancel)
|
||||||
{
|
{
|
||||||
$_SESSION["mainmenu"]="home"; // Le gestionnaire de menu a pu changer
|
$_SESSION["mainmenu"]="home"; // Le gestionnaire de menu a pu changer
|
||||||
|
|
||||||
dolibarr_set_const($db, "MAIN_MENU_STANDARD", $_POST["MAIN_MENU_STANDARD"],'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_MENU_STANDARD", GETPOST('MAIN_MENU_STANDARD','alpha'),'chaine',0,'',$conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_MENU_SMARTPHONE", $_POST["MAIN_MENU_SMARTPHONE"],'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_MENU_SMARTPHONE", GETPOST('MAIN_MENU_SMARTPHONE','alpha'),'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
dolibarr_set_const($db, "MAIN_MENUFRONT_STANDARD", $_POST["MAIN_MENUFRONT_STANDARD"],'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_MENUFRONT_STANDARD", GETPOST('MAIN_MENUFRONT_STANDARD','alpha'),'chaine',0,'',$conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_MENUFRONT_SMARTPHONE",$_POST["MAIN_MENUFRONT_SMARTPHONE"],'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_MENUFRONT_SMARTPHONE", GETPOST('MAIN_MENUFRONT_SMARTPHONE','alpha'),'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
// Define list of menu handlers to initialize
|
// Define list of menu handlers to initialize
|
||||||
$listofmenuhandler=array();
|
$listofmenuhandler=array();
|
||||||
$listofmenuhandler[preg_replace('/(_backoffice|_frontoffice|_menu)?\.php/i','',$_POST["MAIN_MENU_STANDARD"])]=1;
|
$listofmenuhandler[preg_replace('/(_backoffice|_frontoffice|_menu)?\.php/i','',GETPOST('MAIN_MENU_STANDARD','alpha'))]=1;
|
||||||
$listofmenuhandler[preg_replace('/(_backoffice|_frontoffice|_menu)?\.php/i','',$_POST["MAIN_MENUFRONT_STANDARD"])]=1;
|
$listofmenuhandler[preg_replace('/(_backoffice|_frontoffice|_menu)?\.php/i','',GETPOST('MAIN_MENUFRONT_STANDARD','alpha'))]=1;
|
||||||
if (isset($_POST["MAIN_MENU_SMARTPHONE"])) $listofmenuhandler[preg_replace('/(_backoffice|_frontoffice|_menu)?\.php/i','',$_POST["MAIN_MENU_SMARTPHONE"])]=1;
|
if (GETPOST('MAIN_MENU_SMARTPHONE','alpha')) $listofmenuhandler[preg_replace('/(_backoffice|_frontoffice|_menu)?\.php/i','',GETPOST('MAIN_MENU_SMARTPHONE','alpha'))]=1;
|
||||||
if (isset($_POST["MAIN_MENUFRONT_SMARTPHONE"])) $listofmenuhandler[preg_replace('/(_backoffice|_frontoffice|_menu)?\.php/i','',$_POST["MAIN_MENUFRONT_SMARTPHONE"])]=1;
|
if (GETPOST('MAIN_MENUFRONT_SMARTPHONE','alpha')) $listofmenuhandler[preg_replace('/(_backoffice|_frontoffice|_menu)?\.php/i','',GETPOST('MAIN_MENUFRONT_SMARTPHONE','alpha'))]=1;
|
||||||
|
|
||||||
// Initialize menu handlers
|
// Initialize menu handlers
|
||||||
foreach ($listofmenuhandler as $key => $val)
|
foreach ($listofmenuhandler as $key => $val)
|
||||||
@ -179,7 +180,7 @@ if ($action == 'edit')
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
// Menu top
|
// Menu top
|
||||||
|
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("DefaultMenuManager").'</td>';
|
print '<tr class="oddeven"><td>'.$langs->trans("DefaultMenuManager").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$formadmin->select_menu(empty($conf->global->MAIN_MENU_STANDARD_FORCED)?$conf->global->MAIN_MENU_STANDARD:$conf->global->MAIN_MENU_STANDARD_FORCED, 'MAIN_MENU_STANDARD', $dirstandard, empty($conf->global->MAIN_MENU_STANDARD_FORCED)?'':' disabled');
|
$formadmin->select_menu(empty($conf->global->MAIN_MENU_STANDARD_FORCED)?$conf->global->MAIN_MENU_STANDARD:$conf->global->MAIN_MENU_STANDARD_FORCED, 'MAIN_MENU_STANDARD', $dirstandard, empty($conf->global->MAIN_MENU_STANDARD_FORCED)?'':' disabled');
|
||||||
@ -190,7 +191,7 @@ if ($action == 'edit')
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
// Menu smartphone
|
// Menu smartphone
|
||||||
|
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("DefaultMenuSmartphoneManager").'</td>';
|
print '<tr class="oddeven"><td>'.$langs->trans("DefaultMenuSmartphoneManager").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$formadmin->select_menu(empty($conf->global->MAIN_MENU_SMARTPHONE_FORCED)?$conf->global->MAIN_MENU_SMARTPHONE:$conf->global->MAIN_MENU_SMARTPHONE_FORCED, 'MAIN_MENU_SMARTPHONE', array_merge($dirstandard,$dirsmartphone), empty($conf->global->MAIN_MENU_SMARTPHONE_FORCED)?'':' disabled');
|
$formadmin->select_menu(empty($conf->global->MAIN_MENU_SMARTPHONE_FORCED)?$conf->global->MAIN_MENU_SMARTPHONE:$conf->global->MAIN_MENU_SMARTPHONE_FORCED, 'MAIN_MENU_SMARTPHONE', array_merge($dirstandard,$dirsmartphone), empty($conf->global->MAIN_MENU_SMARTPHONE_FORCED)?'':' disabled');
|
||||||
@ -217,7 +218,7 @@ else
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
|
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("DefaultMenuManager").'</td>';
|
print '<tr class="oddeven"><td>'.$langs->trans("DefaultMenuManager").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$filelib=preg_replace('/.php$/i','',(empty($conf->global->MAIN_MENU_STANDARD_FORCED)?$conf->global->MAIN_MENU_STANDARD:$conf->global->MAIN_MENU_STANDARD_FORCED));
|
$filelib=preg_replace('/.php$/i','',(empty($conf->global->MAIN_MENU_STANDARD_FORCED)?$conf->global->MAIN_MENU_STANDARD:$conf->global->MAIN_MENU_STANDARD_FORCED));
|
||||||
@ -229,7 +230,7 @@ else
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>'.$langs->trans("DefaultMenuSmartphoneManager").'</td>';
|
print '<td>'.$langs->trans("DefaultMenuSmartphoneManager").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
|
|||||||
@ -421,9 +421,13 @@ if ($mode == 'feature')
|
|||||||
$i=0;
|
$i=0;
|
||||||
foreach($objMod->tabs as $val)
|
foreach($objMod->tabs as $val)
|
||||||
{
|
{
|
||||||
$tmp=explode(':',$val,3);
|
if (is_array($val)) $val=$val['data'];
|
||||||
$text.=($i?', ':'').$tmp[0].':'.$tmp[1];
|
if (is_string($val))
|
||||||
$i++;
|
{
|
||||||
|
$tmp=explode(':',$val,3);
|
||||||
|
$text.=($i?', ':'').$tmp[0].':'.$tmp[1];
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else $text.=$langs->trans("No");
|
else $text.=$langs->trans("No");
|
||||||
@ -508,10 +512,10 @@ if ($mode == 'feature')
|
|||||||
$i=0;
|
$i=0;
|
||||||
foreach($objMod->module_parts['hooks'] as $key => $val)
|
foreach($objMod->module_parts['hooks'] as $key => $val)
|
||||||
{
|
{
|
||||||
if ($key == 'entity') continue;
|
if ($key === 'entity') continue;
|
||||||
|
|
||||||
// For special values
|
// For special values
|
||||||
if ($key == 'data')
|
if ($key === 'data')
|
||||||
{
|
{
|
||||||
if (is_array($val))
|
if (is_array($val))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -44,7 +44,7 @@ $form = new Form($db);
|
|||||||
// List of supported format
|
// List of supported format
|
||||||
$tmptype2label=ExtraFields::$type2label;
|
$tmptype2label=ExtraFields::$type2label;
|
||||||
$type2label=array('');
|
$type2label=array('');
|
||||||
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val);
|
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->transnoentitiesnoconv($val);
|
||||||
|
|
||||||
$action=GETPOST('action', 'alpha');
|
$action=GETPOST('action', 'alpha');
|
||||||
$attrname=GETPOST('attrname', 'alpha');
|
$attrname=GETPOST('attrname', 'alpha');
|
||||||
|
|||||||
@ -45,7 +45,7 @@ $form = new Form($db);
|
|||||||
// List of supported format
|
// List of supported format
|
||||||
$tmptype2label=ExtraFields::$type2label;
|
$tmptype2label=ExtraFields::$type2label;
|
||||||
$type2label=array('');
|
$type2label=array('');
|
||||||
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val);
|
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->transnoentitiesnoconv($val);
|
||||||
|
|
||||||
$action=GETPOST('action', 'alpha');
|
$action=GETPOST('action', 'alpha');
|
||||||
$attrname=GETPOST('attrname', 'alpha');
|
$attrname=GETPOST('attrname', 'alpha');
|
||||||
|
|||||||
@ -110,10 +110,10 @@ $formother=new FormOther($db);
|
|||||||
$formadmin=new FormAdmin($db);
|
$formadmin=new FormAdmin($db);
|
||||||
|
|
||||||
$arraydetailsforpdffoot = array(
|
$arraydetailsforpdffoot = array(
|
||||||
0 => $langs->trans('NoDetails'),
|
0 => $langs->transnoentitiesnoconv('NoDetails'),
|
||||||
1 => $langs->trans('DisplayCompanyInfo'),
|
1 => $langs->transnoentitiesnoconv('DisplayCompanyInfo'),
|
||||||
2 => $langs->trans('DisplayCompanyManagers'),
|
2 => $langs->transnoentitiesnoconv('DisplayCompanyManagers'),
|
||||||
3 => $langs->trans('DisplayCompanyInfoAndManagers')
|
3 => $langs->transnoentitiesnoconv('DisplayCompanyInfoAndManagers')
|
||||||
);
|
);
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("PDF"),'','title_setup');
|
print load_fiche_titre($langs->trans("PDF"),'','title_setup');
|
||||||
@ -589,7 +589,7 @@ else // Show
|
|||||||
|
|
||||||
|
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("ShowDetailsInPDFPageFoot").'</td><td colspan="2">';
|
print '<tr class="oddeven"><td>'.$langs->trans("ShowDetailsInPDFPageFoot").'</td><td colspan="2">';
|
||||||
print $arraydetailsforpdffoot[$conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS];
|
print $arraydetailsforpdffoot[($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS ? $conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS : 0)];
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|||||||
@ -545,7 +545,7 @@ print "</td></tr>\n";
|
|||||||
print '</form>';
|
print '</form>';
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$substitutionarray=pdf_getSubstitutionArray($langs);
|
$substitutionarray=pdf_getSubstitutionArray($langs, null, null, 2);
|
||||||
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
||||||
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
||||||
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
||||||
@ -555,7 +555,7 @@ print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
|
|||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
print '<input type="hidden" name="action" value="set_PROPOSAL_FREE_TEXT">';
|
print '<input type="hidden" name="action" value="set_PROPOSAL_FREE_TEXT">';
|
||||||
print '<tr class="oddeven"><td colspan="2">';
|
print '<tr class="oddeven"><td colspan="2">';
|
||||||
print $form->textwithpicto($langs->trans("FreeLegalTextOnProposal"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext).'<br>';
|
print $form->textwithpicto($langs->trans("FreeLegalTextOnProposal"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext, 1, 'help', '', 0, 2, 'freetexttooltip').'<br>';
|
||||||
$variablename='PROPOSAL_FREE_TEXT';
|
$variablename='PROPOSAL_FREE_TEXT';
|
||||||
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
||||||
{
|
{
|
||||||
@ -577,7 +577,7 @@ print "<form method=\"post\" action=\"".$_SERVER["PHP_SELF"]."\">";
|
|||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
print "<input type=\"hidden\" name=\"action\" value=\"set_PROPALE_DRAFT_WATERMARK\">";
|
print "<input type=\"hidden\" name=\"action\" value=\"set_PROPALE_DRAFT_WATERMARK\">";
|
||||||
print '<tr class="oddeven"><td>';
|
print '<tr class="oddeven"><td>';
|
||||||
print $form->textwithpicto($langs->trans("WatermarkOnDraftProposal"), $htmltext).'<br>';
|
print $form->textwithpicto($langs->trans("WatermarkOnDraftProposal"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'<br>';
|
||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
print '<input class="flat minwidth200" type="text" name="PROPALE_DRAFT_WATERMARK" value="'.$conf->global->PROPALE_DRAFT_WATERMARK.'">';
|
print '<input class="flat minwidth200" type="text" name="PROPALE_DRAFT_WATERMARK" value="'.$conf->global->PROPALE_DRAFT_WATERMARK.'">';
|
||||||
print '</td><td align="right">';
|
print '</td><td align="right">';
|
||||||
|
|||||||
@ -43,7 +43,7 @@ $form = new Form($db);
|
|||||||
// List of supported format
|
// List of supported format
|
||||||
$tmptype2label=ExtraFields::$type2label;
|
$tmptype2label=ExtraFields::$type2label;
|
||||||
$type2label=array('');
|
$type2label=array('');
|
||||||
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val);
|
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->transnoentitiesnoconv($val);
|
||||||
|
|
||||||
$action=GETPOST('action', 'alpha');
|
$action=GETPOST('action', 'alpha');
|
||||||
$attrname=GETPOST('attrname', 'alpha');
|
$attrname=GETPOST('attrname', 'alpha');
|
||||||
|
|||||||
@ -471,14 +471,14 @@ print '<td align="center" width="60">'.$langs->trans("Value").'</td>';
|
|||||||
print '<td width="80"> </td>';
|
print '<td width="80"> </td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
$substitutionarray=pdf_getSubstitutionArray($langs);
|
$substitutionarray=pdf_getSubstitutionArray($langs, null, null, 2);
|
||||||
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
||||||
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
||||||
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
||||||
$htmltext.='</i>';
|
$htmltext.='</i>';
|
||||||
|
|
||||||
print '<tr class="oddeven"><td colspan="2">';
|
print '<tr class="oddeven"><td colspan="2">';
|
||||||
print $form->textwithpicto($langs->trans("FreeLegalTextOnInvoices"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext).'<br>';
|
print $form->textwithpicto($langs->trans("FreeLegalTextOnInvoices"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext, 1, 'help', '', 0, 2, 'freetexttooltip').'<br>';
|
||||||
$variablename='SUPPLIER_INVOICE_FREE_TEXT';
|
$variablename='SUPPLIER_INVOICE_FREE_TEXT';
|
||||||
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -537,14 +537,14 @@ else
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$substitutionarray=pdf_getSubstitutionArray($langs);
|
$substitutionarray=pdf_getSubstitutionArray($langs, null, null, 2);
|
||||||
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
||||||
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
||||||
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
||||||
$htmltext.='</i>';
|
$htmltext.='</i>';
|
||||||
|
|
||||||
print '<tr class="oddeven"><td colspan="2">';
|
print '<tr class="oddeven"><td colspan="2">';
|
||||||
print $form->textwithpicto($langs->trans("FreeLegalTextOnOrders"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext).'<br>';
|
print $form->textwithpicto($langs->trans("FreeLegalTextOnOrders"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext, 1, 'help', '', 0, 2, 'freetexttooltip').'<br>';
|
||||||
$variablename='SUPPLIER_ORDER_FREE_TEXT';
|
$variablename='SUPPLIER_ORDER_FREE_TEXT';
|
||||||
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -500,7 +500,7 @@ print '<td width="60" align="center">'.$langs->trans("Value")."</td>\n";
|
|||||||
print "<td> </td>\n";
|
print "<td> </td>\n";
|
||||||
print "</tr>";
|
print "</tr>";
|
||||||
|
|
||||||
$substitutionarray=pdf_getSubstitutionArray($langs);
|
$substitutionarray=pdf_getSubstitutionArray($langs, null, null, 2);
|
||||||
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
$substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation");
|
||||||
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
|
||||||
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
foreach($substitutionarray as $key => $val) $htmltext.=$key.'<br>';
|
||||||
@ -511,7 +511,7 @@ print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
|
|||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
print '<input type="hidden" name="action" value="set_SUPPLIER_PROPOSAL_FREE_TEXT">';
|
print '<input type="hidden" name="action" value="set_SUPPLIER_PROPOSAL_FREE_TEXT">';
|
||||||
print '<tr class="oddeven"><td colspan="2">';
|
print '<tr class="oddeven"><td colspan="2">';
|
||||||
print $form->textwithpicto($langs->trans("FreeLegalTextOnSupplierProposal"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext).'<br>';
|
print $form->textwithpicto($langs->trans("FreeLegalTextOnSupplierProposal"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext, 1, 'help', '', 0, 2, 'freetexttooltip').'<br>';
|
||||||
$variablename='SUPPLIER_PROPOSAL_FREE_TEXT';
|
$variablename='SUPPLIER_PROPOSAL_FREE_TEXT';
|
||||||
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
||||||
{
|
{
|
||||||
@ -533,7 +533,7 @@ print "<form method=\"post\" action=\"".$_SERVER["PHP_SELF"]."\">";
|
|||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
print "<input type=\"hidden\" name=\"action\" value=\"set_SUPPLIER_PROPOSAL_DRAFT_WATERMARK\">";
|
print "<input type=\"hidden\" name=\"action\" value=\"set_SUPPLIER_PROPOSAL_DRAFT_WATERMARK\">";
|
||||||
print '<tr class="oddeven"><td>';
|
print '<tr class="oddeven"><td>';
|
||||||
print $form->textwithpicto($langs->trans("WatermarkOnDraftProposal"), $htmltext).'<br>';
|
print $form->textwithpicto($langs->trans("WatermarkOnDraftProposal"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'<br>';
|
||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
print '<input size="50" class="flat" type="text" name="SUPPLIER_PROPOSAL_DRAFT_WATERMARK" value="'.$conf->global->SUPPLIER_PROPOSAL_DRAFT_WATERMARK.'">';
|
print '<input size="50" class="flat" type="text" name="SUPPLIER_PROPOSAL_DRAFT_WATERMARK" value="'.$conf->global->SUPPLIER_PROPOSAL_DRAFT_WATERMARK.'">';
|
||||||
print '</td><td align="right">';
|
print '</td><td align="right">';
|
||||||
|
|||||||
@ -48,7 +48,7 @@ $form = new Form($db);
|
|||||||
// List of supported format
|
// List of supported format
|
||||||
$tmptype2label=ExtraFields::$type2label;
|
$tmptype2label=ExtraFields::$type2label;
|
||||||
$type2label=array('');
|
$type2label=array('');
|
||||||
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val);
|
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->transnoentitiesnoconv($val);
|
||||||
|
|
||||||
$action=GETPOST('action', 'alpha');
|
$action=GETPOST('action', 'alpha');
|
||||||
$attrname=GETPOST('attrname', 'alpha');
|
$attrname=GETPOST('attrname', 'alpha');
|
||||||
|
|||||||
@ -48,7 +48,7 @@ $form = new Form($db);
|
|||||||
// List of supported format
|
// List of supported format
|
||||||
$tmptype2label=ExtraFields::$type2label;
|
$tmptype2label=ExtraFields::$type2label;
|
||||||
$type2label=array('');
|
$type2label=array('');
|
||||||
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val);
|
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->transnoentitiesnoconv($val);
|
||||||
|
|
||||||
$action=GETPOST('action', 'alpha');
|
$action=GETPOST('action', 'alpha');
|
||||||
$attrname=GETPOST('attrname', 'alpha');
|
$attrname=GETPOST('attrname', 'alpha');
|
||||||
|
|||||||
@ -44,7 +44,7 @@ $form = new Form($db);
|
|||||||
// List of supported format
|
// List of supported format
|
||||||
$tmptype2label=ExtraFields::$type2label;
|
$tmptype2label=ExtraFields::$type2label;
|
||||||
$type2label=array('');
|
$type2label=array('');
|
||||||
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val);
|
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->transnoentitiesnoconv($val);
|
||||||
|
|
||||||
$action=GETPOST('action', 'alpha');
|
$action=GETPOST('action', 'alpha');
|
||||||
$attrname=GETPOST('attrname', 'alpha');
|
$attrname=GETPOST('attrname', 'alpha');
|
||||||
|
|||||||
@ -45,7 +45,7 @@ $form = new Form($db);
|
|||||||
// List of supported format
|
// List of supported format
|
||||||
$tmptype2label=ExtraFields::$type2label;
|
$tmptype2label=ExtraFields::$type2label;
|
||||||
$type2label=array('');
|
$type2label=array('');
|
||||||
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val);
|
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->transnoentitiesnoconv($val);
|
||||||
|
|
||||||
$action=GETPOST('action', 'alpha');
|
$action=GETPOST('action', 'alpha');
|
||||||
$attrname=GETPOST('attrname', 'alpha');
|
$attrname=GETPOST('attrname', 'alpha');
|
||||||
|
|||||||
@ -258,7 +258,7 @@ print '</td></tr>'."\n";
|
|||||||
print '<tr class="oddeven"><td> => '.$langs->trans("ClientHour").'</td><td>'.dol_print_date(dol_now(),'dayhour','tzuser').'</td></tr>'."\n";
|
print '<tr class="oddeven"><td> => '.$langs->trans("ClientHour").'</td><td>'.dol_print_date(dol_now(),'dayhour','tzuser').'</td></tr>'."\n";
|
||||||
|
|
||||||
$filesystemencoding=ini_get("unicode.filesystem_encoding"); // Disponible avec PHP 6.0
|
$filesystemencoding=ini_get("unicode.filesystem_encoding"); // Disponible avec PHP 6.0
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("File encoding").' (php.ini unicode.filesystem_encoding)</td><td>'.$filesystemencoding.'</td></tr>'."\n"; // date.timezone must be in valued defined in http://fr3.php.net/manual/en/timezones.europe.php
|
print '<tr class="oddeven"><td>'.$langs->trans("File encoding").' (php.ini unicode.filesystem_encoding)</td><td>'.$filesystemencoding.'</td></tr>'."\n";
|
||||||
|
|
||||||
$tmp=ini_get("unicode.filesystem_encoding"); // Disponible avec PHP 6.0
|
$tmp=ini_get("unicode.filesystem_encoding"); // Disponible avec PHP 6.0
|
||||||
if (empty($tmp) && ! empty($_SERVER["WINDIR"])) $tmp='iso-8859-1'; // By default for windows
|
if (empty($tmp) && ! empty($_SERVER["WINDIR"])) $tmp='iso-8859-1'; // By default for windows
|
||||||
|
|||||||
@ -53,11 +53,19 @@ print '<tr class="oddeven"><td>'.$langs->trans("IP")."</td><td>".$_SERVER["SERVE
|
|||||||
print '<tr><td>'.$langs->trans("Port")."</td><td>" . $_SERVER["SERVER_PORT"] . "</td></tr>\n";
|
print '<tr><td>'.$langs->trans("Port")."</td><td>" . $_SERVER["SERVER_PORT"] . "</td></tr>\n";
|
||||||
print '<tr><td>'.$langs->trans("DocumentRootServer")."</td><td>".$_SERVER["DOCUMENT_ROOT"]."</td></tr>\n";
|
print '<tr><td>'.$langs->trans("DocumentRootServer")."</td><td>".$_SERVER["DOCUMENT_ROOT"]."</td></tr>\n";
|
||||||
print '<tr><td>'.$langs->trans("DataRootServer")."</td><td>" . DOL_DATA_ROOT . "</td></tr>\n";
|
print '<tr><td>'.$langs->trans("DataRootServer")."</td><td>" . DOL_DATA_ROOT . "</td></tr>\n";
|
||||||
|
// Web user group by default
|
||||||
$labeluser=dol_getwebuser('user');
|
$labeluser=dol_getwebuser('user');
|
||||||
$labelgroup=dol_getwebuser('group');
|
$labelgroup=dol_getwebuser('group');
|
||||||
if ($labeluser && $labelgroup)
|
if ($labeluser && $labelgroup)
|
||||||
{
|
{
|
||||||
print '<tr><td>'.$langs->trans("WebUserGroup")."</td><td>".$labeluser.'/'.$labelgroup."</td></tr>\n";
|
print '<tr><td>'.$langs->trans("WebUserGroup")." (env vars)</td><td>".$labeluser.'/'.$labelgroup."</td></tr>\n";
|
||||||
|
}
|
||||||
|
// Web user group real (detected by 'id' external command)
|
||||||
|
$arrayout=array(); $varout=0;
|
||||||
|
exec('id', $arrayout, $varout);
|
||||||
|
if (empty($varout)) // Test command is ok. Work only on Linux OS.
|
||||||
|
{
|
||||||
|
print '<tr><td>'.$langs->trans("WebUserGroup")." (real, 'id' command)</td><td>".join(',', $arrayout)."</td></tr>\n";
|
||||||
}
|
}
|
||||||
print '</table>';
|
print '</table>';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user