commit
1b1904f43e
@ -1,14 +1,21 @@
|
|||||||
# EditorConfig is awesome: http://EditorConfig.org
|
# EditorConfig is awesome: https://editorconfig.org
|
||||||
|
|
||||||
# top-most EditorConfig file
|
# top-most EditorConfig file
|
||||||
root = true
|
root = true
|
||||||
|
|
||||||
# Unix-style newlines with a newline ending every file
|
# Unix-style newlines with a newline ending every file
|
||||||
[*]
|
[*]
|
||||||
charset = utf-8
|
charset = utf-8
|
||||||
end_of_line = lf
|
end_of_line = lf
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
|
|
||||||
|
# PHP PSR-2 Coding Standards
|
||||||
|
# http://www.php-fig.org/psr/psr-2/
|
||||||
[*.php]
|
[*.php]
|
||||||
indent_style = tab
|
indent_style = tab
|
||||||
|
indent_size = 4
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
insert_final_newline = true
|
||||||
[*.js]
|
[*.js]
|
||||||
indent_style = tab
|
indent_style = tab
|
||||||
[*.css]
|
[*.css]
|
||||||
|
|||||||
1
.github/CODEOWNERS
vendored
Normal file
1
.github/CODEOWNERS
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
htdocs/takepos @andreubisquerra
|
||||||
36
.github/CONTRIBUTING.md
vendored
36
.github/CONTRIBUTING.md
vendored
@ -38,7 +38,7 @@ We officially support versions N, N − 1 and N − 2 for N the latest version a
|
|||||||
Choose your base branch accordingly.
|
Choose your base branch accordingly.
|
||||||
|
|
||||||
### General rules
|
### General rules
|
||||||
Please don't edit the ChangeLog file. File will be generated from your commit messages during release process by the project manager.
|
Please don't edit the ChangeLog file. File will be generated from all commit messages during release process by the project manager.
|
||||||
|
|
||||||
### <a name="commits"></a>Commits
|
### <a name="commits"></a>Commits
|
||||||
Use clear commit messages with the following structure:
|
Use clear commit messages with the following structure:
|
||||||
@ -56,13 +56,15 @@ You can add it to your git configuration using:
|
|||||||
git config --local commit.template .gitmessage
|
git config --local commit.template .gitmessage
|
||||||
```
|
```
|
||||||
|
|
||||||
|
where
|
||||||
|
|
||||||
#### Keyword
|
#### Keyword
|
||||||
In uppercase if you want to have the log comment appears into the generated ChangeLog file.
|
In uppercase if you want to have the log comment appears into the generated ChangeLog file.
|
||||||
|
|
||||||
The keyword can be ommitted if your commit does not fit in any of the following categories:
|
The keyword can be ommitted if your commit does not fit in any of the following categories:
|
||||||
- Fix: for a bug fix
|
- Fix/FIX: for a bug fix
|
||||||
- Close: for closing a referenced feature request
|
- New/NEW: for an unreferenced new feature (Opening a feature request and using close is prefered)
|
||||||
- New: for an unreferenced new feature (Opening a feature request and using close is prefered)
|
- Close/CLOSE: for closing a referenced feature request
|
||||||
|
|
||||||
#### Issuenum
|
#### Issuenum
|
||||||
If your commit fixes a referenced bug or feature request.
|
If your commit fixes a referenced bug or feature request.
|
||||||
@ -85,14 +87,14 @@ This section can span multiple lines.
|
|||||||
|
|
||||||
Try to keep lines under 120 characters.
|
Try to keep lines under 120 characters.
|
||||||
|
|
||||||
#### Samples
|
#### Examples
|
||||||
<pre>
|
<pre>
|
||||||
FIX|Fix #456 Short description (where #456 is number of bug fix, if it exists. In upper case to appear into ChangeLog)
|
FIX|Fix #456 Short description (where #456 is number of bug fix, if it exists. In upper case to appear into ChangeLog)
|
||||||
or
|
or
|
||||||
CLOSE|Close #456 Short description (where #456 is number of feature request, if it exists. In upper case to appear into ChangeLog)
|
|
||||||
or
|
|
||||||
NEW|New Short description (In upper case to appear into ChangeLog, use this if you add a feature not tracked, otherwise use CLOSE #456)
|
NEW|New Short description (In upper case to appear into ChangeLog, use this if you add a feature not tracked, otherwise use CLOSE #456)
|
||||||
or
|
or
|
||||||
|
CLOSE|Close #456 Short description (where #456 is number of feature request, if it exists. In upper case to appear into ChangeLog)
|
||||||
|
or
|
||||||
Short description (when the commit is not introducing feature nor closing a bug)
|
Short description (when the commit is not introducing feature nor closing a bug)
|
||||||
|
|
||||||
Long description (Can span accross multiple lines).
|
Long description (Can span accross multiple lines).
|
||||||
@ -104,13 +106,22 @@ When submitting a pull request, use same rule as [Commits](#commits) for the mes
|
|||||||
If your pull request only contains one commit, GitHub will be smart enough to fill it for you.
|
If your pull request only contains one commit, GitHub will be smart enough to fill it for you.
|
||||||
Otherwise, please be a bit verbose about what you're providing.
|
Otherwise, please be a bit verbose about what you're providing.
|
||||||
|
|
||||||
Your Pull Request must pass the Continuous Integration checks.
|
Your Pull Request (PR) must pass the Continuous Integration checks.
|
||||||
Also, some code changes need a prior approbation:
|
Also, some code changes need a prior approbation:
|
||||||
|
|
||||||
* if you want to include a new external library (into htdocs/includes directory), please ask before to the project manager (@eldy) to see if such a library can be accepted.
|
* if you want to include a new external library (into htdocs/includes directory), please ask before to the project manager (@eldy) to see if such a library can be accepted.
|
||||||
|
|
||||||
* if you add a new table, you must first create a page on http://wiki.dolibarr.org/index.php/Category:Table_SQL (copy an existing page changing its name to see it into this index page). Than ask the project manager (@eldy) if the new data model you plan to add can be accepted as you suggest.
|
* if you add a new table, you must first create a page on http://wiki.dolibarr.org/index.php/Category:Table_SQL (copy an existing page changing its name to see it into this index page). Than ask the project manager (@eldy) if the new data model you plan to add can be accepted as you suggest.
|
||||||
|
|
||||||
|
Once a PR has been submitted, you may need to wait for its integration. It is common that the project leader let the PR open for a long delay to allow
|
||||||
|
every developer discuss about the PR.
|
||||||
|
If your PR has errors reported by the Continuous Integration Platform, it means your PR is not valid and nothing will be done with it. It will be kept open to allow developers to fix this, or it may be closed several month later.
|
||||||
|
If the PR is valid, and is kept open for a long time, a tag will also be added on the PR to describe the status of your PR.
|
||||||
|
By putting your mouse on the tag, you will get a full explanation of the tag/status that explain why your PR has not been integrated yet.
|
||||||
|
Around 95% of submitted PR are reviewed and tagged. Even if this is one of the most important ratio in Open Source world, don't expect the core team
|
||||||
|
to reach the 100%. With the increasing popularity of Dolibarr, this ratio will probably decrease in future.
|
||||||
|
|
||||||
|
|
||||||
### Resources
|
### Resources
|
||||||
[Developer documentation](http://wiki.dolibarr.org/index.php/Developer_documentation)
|
[Developer documentation](http://wiki.dolibarr.org/index.php/Developer_documentation)
|
||||||
|
|
||||||
@ -120,9 +131,12 @@ The source language (en_US) is maintained in the repository. See the [Code](#cod
|
|||||||
|
|
||||||
All other translations are managed online at [Transifex](https://www.transifex.com/dolibarr-association/dolibarr/).
|
All other translations are managed online at [Transifex](https://www.transifex.com/dolibarr-association/dolibarr/).
|
||||||
|
|
||||||
Join an existing translation team or create your own and translate into the interface.
|
Translations done on transifex are available in the next major release.
|
||||||
|
|
||||||
|
Note: Sometimes, the source text (english) is modified. In such a case, the translation is reset. Transifex assume that if the original source
|
||||||
|
has changed, the translation is surely no more correct so must be done again. But old translation is not lost and you can use the tab "History"
|
||||||
|
to retreive all old translation of a source text, and restore the translation in one click with no need to retranslate it if there is no need to.
|
||||||
|
|
||||||
Your translations will be available in the next major release.
|
|
||||||
|
|
||||||
### Resources
|
### Resources
|
||||||
[Translator documentation](http://wiki.dolibarr.org/index.php/Translator_documentation)
|
[Translator documentation](http://wiki.dolibarr.org/index.php/Translator_documentation)
|
||||||
@ -131,5 +145,5 @@ Documentation
|
|||||||
-------------
|
-------------
|
||||||
The project's documentation is maintained on the [Wiki](http://wiki.dolibarr.org/index.php).
|
The project's documentation is maintained on the [Wiki](http://wiki.dolibarr.org/index.php).
|
||||||
|
|
||||||
*Note*: to help prevent spam, you need to create an account before being able to edit.
|
*Note*: to help prevent spam, you need to create an account before being able to edit. Everybody is welcome to contribute to its content.
|
||||||
|
|
||||||
|
|||||||
6
.mailmap
6
.mailmap
@ -21,9 +21,9 @@ Florian Henry <florian.henry@open-concept.pro> FHenry <florian.henry.mail@gmail.
|
|||||||
Florian Henry <florian.henry@open-concept.pro> Florian HENRY <florian.henry@open-conept.pro>
|
Florian Henry <florian.henry@open-concept.pro> Florian HENRY <florian.henry@open-conept.pro>
|
||||||
Florian Henry <florian.henry@open-concept.pro> FHenry <florian.henry@open-concept.pro>
|
Florian Henry <florian.henry@open-concept.pro> FHenry <florian.henry@open-concept.pro>
|
||||||
Florian Henry <florian.henry@open-concept.pro> HENRY Florian <florian.henry@open-concept.pro>
|
Florian Henry <florian.henry@open-concept.pro> HENRY Florian <florian.henry@open-concept.pro>
|
||||||
Alexandre Spangaro <aspangaro.dolibarr@gmail.com> aspangaro <aspangaro.dolibarr@gmail.com>
|
Alexandre Spangaro <aspangaro@open-dsi.fr> aspangaro <aspangaro@open-dsi.fr>
|
||||||
Alexandre Spangaro <aspangaro.dolibarr@gmail.com> Spangaro Alexandre <aspangaro.dolibarr@gmail.com>
|
Alexandre Spangaro <aspangaro@open-dsi.fr> Spangaro Alexandre <aspangaro@open-dsi.fr>
|
||||||
Alexandre Spangaro <aspangaro.dolibarr@gmail.com> Alexandre SPANGARO <aspangaro.dolibarr@gmail.com>
|
Alexandre Spangaro <aspangaro@open-dsi.fr> Alexandre SPANGARO <aspangaro@open-dsi.fr>
|
||||||
Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> Raphaël Doursenaud <rdoursenaud@free.fr>
|
Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> Raphaël Doursenaud <rdoursenaud@free.fr>
|
||||||
Philippe Grand <philippe.grand@atoo-net.com> Grand Philippe <contact@atoo-net.com>
|
Philippe Grand <philippe.grand@atoo-net.com> Grand Philippe <contact@atoo-net.com>
|
||||||
Philippe Grand <philippe.grand@atoo-net.com> Philippe GRAND <philippe.grand@atoo-net.com>
|
Philippe Grand <philippe.grand@atoo-net.com> Philippe GRAND <philippe.grand@atoo-net.com>
|
||||||
|
|||||||
60
.travis.yml
60
.travis.yml
@ -31,12 +31,12 @@ addons:
|
|||||||
- pgloader
|
- pgloader
|
||||||
|
|
||||||
php:
|
php:
|
||||||
- '5.4'
|
|
||||||
- '5.5'
|
- '5.5'
|
||||||
- '5.6'
|
- '5.6'
|
||||||
- '7.0'
|
- '7.0'
|
||||||
- '7.1'
|
- '7.1'
|
||||||
- '7.2'
|
- '7.2'
|
||||||
|
- '7.3'
|
||||||
- nightly
|
- nightly
|
||||||
|
|
||||||
env:
|
env:
|
||||||
@ -61,22 +61,22 @@ matrix:
|
|||||||
- php: nightly
|
- php: nightly
|
||||||
# We exclude some combinations not usefull to save Travis CPU
|
# We exclude some combinations not usefull to save Travis CPU
|
||||||
exclude:
|
exclude:
|
||||||
- php: '5.5'
|
|
||||||
env: DB=mariadb
|
|
||||||
- php: '5.6'
|
- php: '5.6'
|
||||||
env: DB=mariadb
|
env: DB=mariadb
|
||||||
- php: '7.0'
|
- php: '7.0'
|
||||||
env: DB=mariadb
|
env: DB=mariadb
|
||||||
- php: '7.1'
|
- php: '7.1'
|
||||||
env: DB=mariadb
|
env: DB=mariadb
|
||||||
- php: '5.5'
|
- php: '7.2'
|
||||||
env: DB=postgresql
|
env: DB=mariadb
|
||||||
- php: '5.6'
|
- php: '5.6'
|
||||||
env: DB=postgresql
|
env: DB=postgresql
|
||||||
- php: '7.0'
|
- php: '7.0'
|
||||||
env: DB=postgresql
|
env: DB=postgresql
|
||||||
- php: '7.1'
|
- php: '7.1'
|
||||||
env: DB=postgresql
|
env: DB=postgresql
|
||||||
|
- php: '7.2'
|
||||||
|
env: DB=postgresql
|
||||||
- php: nightly
|
- php: nightly
|
||||||
env: DB=postgresql
|
env: DB=postgresql
|
||||||
|
|
||||||
@ -130,7 +130,7 @@ install:
|
|||||||
if [ "$TRAVIS_PHP_VERSION" = '5.6' ] || [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = '7.1' ]; then
|
if [ "$TRAVIS_PHP_VERSION" = '5.6' ] || [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = '7.1' ]; then
|
||||||
composer -n require phpunit/phpunit ^5
|
composer -n require phpunit/phpunit ^5
|
||||||
fi
|
fi
|
||||||
if [ "$TRAVIS_PHP_VERSION" = '7.2' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then
|
if [ "$TRAVIS_PHP_VERSION" = '7.2' ] || [ "$TRAVIS_PHP_VERSION" = '7.3' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then
|
||||||
composer -n require phpunit/phpunit ^5
|
composer -n require phpunit/phpunit ^5
|
||||||
fi
|
fi
|
||||||
echo
|
echo
|
||||||
@ -165,13 +165,9 @@ before_script:
|
|||||||
echo "Set timezone"
|
echo "Set timezone"
|
||||||
echo 'date.timezone = "Europe/Paris"' >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini
|
echo 'date.timezone = "Europe/Paris"' >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini
|
||||||
if [ "$TRAVIS_PHP_VERSION" = '5.4' ]; then
|
if [ "$TRAVIS_PHP_VERSION" = '5.4' ]; then
|
||||||
#echo
|
# 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 "Enabling APC for PHP <= 5.4"
|
|
||||||
# Documentation says it should be available for PHP <= 5.6 but it's not for 5.5 and 5.6!
|
|
||||||
#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, 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
|
||||||
@ -211,8 +207,14 @@ before_script:
|
|||||||
mysql -D travis < dev/initdemo/mysqldump_dolibarr_3.5.0.sql
|
mysql -D travis < dev/initdemo/mysqldump_dolibarr_3.5.0.sql
|
||||||
fi
|
fi
|
||||||
if [ "$DB" = 'postgresql' ]; then
|
if [ "$DB" = 'postgresql' ]; then
|
||||||
#pgloader mysql://root:pass@127.0.0.1/dolibarr_35 postgresql://dolibarrowner:dolibarrownerpass@127.0.0.1/dolibarr_dev
|
#pgloader mysql://root:pass@127.0.0.1/dolibarr_9 postgresql://dolibarrowner:dolibarrownerpass@127.0.0.1/dolibarr_dev
|
||||||
|
echo pgloader mysql://root@127.0.0.1/travis postgresql:///travis
|
||||||
pgloader mysql://root@127.0.0.1/travis postgresql:///travis
|
pgloader mysql://root@127.0.0.1/travis postgresql:///travis
|
||||||
|
echo 'ALTER SEQUENCE llx_accountingaccount_rowid_seq RENAME TO llx_accounting_account_rowid_seq' | psql travis
|
||||||
|
echo 'ALTER SEQUENCE llx_accounting_account_rowid_seq RESTART WITH 1000001;' | psql travis
|
||||||
|
#echo 'select * from INFORMATION_SCHEMA.COLUMNS where table_name = 'llx_accountingaccount' | psql travis
|
||||||
|
#echo 'select * from information_schema.table_constraints;' | psql travis
|
||||||
|
#echo 'ALTER TABLE "llx_accounting_account" DROP CONSTRAINT "idx_16390_primary"' | psql travis
|
||||||
fi
|
fi
|
||||||
# TODO: SQLite
|
# TODO: SQLite
|
||||||
echo
|
echo
|
||||||
@ -229,9 +231,11 @@ before_script:
|
|||||||
echo '$'dolibarr_main_db_user=\'travis\'';' >> $CONF_FILE
|
echo '$'dolibarr_main_db_user=\'travis\'';' >> $CONF_FILE
|
||||||
if [ "$DB" = 'mysql' ] || [ "$DB" = 'mariadb' ]; then
|
if [ "$DB" = 'mysql' ] || [ "$DB" = 'mariadb' ]; then
|
||||||
echo '$'dolibarr_main_db_type=\'mysqli\'';' >> $CONF_FILE
|
echo '$'dolibarr_main_db_type=\'mysqli\'';' >> $CONF_FILE
|
||||||
|
echo '$'dolibarr_main_db_port=\'3306\'';' >> $CONF_FILE
|
||||||
fi
|
fi
|
||||||
if [ "$DB" = 'postgresql' ]; then
|
if [ "$DB" = 'postgresql' ]; then
|
||||||
echo '$'dolibarr_main_db_type=\'pgsql\'';' >> $CONF_FILE
|
echo '$'dolibarr_main_db_type=\'pgsql\'';' >> $CONF_FILE
|
||||||
|
echo '$'dolibarr_main_db_port=\'5432\'';' >> $CONF_FILE
|
||||||
fi
|
fi
|
||||||
# TODO: SQLite
|
# TODO: SQLite
|
||||||
echo '$'dolibarr_main_authentication=\'dolibarr\'';' >> $CONF_FILE
|
echo '$'dolibarr_main_authentication=\'dolibarr\'';' >> $CONF_FILE
|
||||||
@ -253,7 +257,7 @@ before_script:
|
|||||||
# enable php-fpm
|
# enable php-fpm
|
||||||
- sudo cp ~/.phpenv/versions/$(phpenv version-name)/etc/php-fpm.conf.default ~/.phpenv/versions/$(phpenv version-name)/etc/php-fpm.conf
|
- sudo cp ~/.phpenv/versions/$(phpenv version-name)/etc/php-fpm.conf.default ~/.phpenv/versions/$(phpenv version-name)/etc/php-fpm.conf
|
||||||
- |
|
- |
|
||||||
if [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = '7.1' ] || [ "$TRAVIS_PHP_VERSION" = '7.2' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then
|
if [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = '7.1' ] || [ "$TRAVIS_PHP_VERSION" = '7.2' ] || [ "$TRAVIS_PHP_VERSION" = '7.3' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then
|
||||||
# Copy the included pool
|
# Copy the included pool
|
||||||
sudo cp ~/.phpenv/versions/$(phpenv version-name)/etc/php-fpm.d/www.conf.default ~/.phpenv/versions/$(phpenv version-name)/etc/php-fpm.d/www.conf
|
sudo cp ~/.phpenv/versions/$(phpenv version-name)/etc/php-fpm.d/www.conf.default ~/.phpenv/versions/$(phpenv version-name)/etc/php-fpm.d/www.conf
|
||||||
fi
|
fi
|
||||||
@ -276,11 +280,12 @@ before_script:
|
|||||||
script:
|
script:
|
||||||
- |
|
- |
|
||||||
echo "Checking webserver availability by a wget -O - http://127.0.0.1"
|
echo "Checking webserver availability by a wget -O - http://127.0.0.1"
|
||||||
# Ensure we catch errors
|
# Ensure we stop on error with set -e
|
||||||
set -e
|
set +e
|
||||||
# The wget should return a page with line '<meta name="generator" content="Dolibarr installer">
|
# The wget should return a page with line '<meta name="generator" content="Dolibarr installer">
|
||||||
wget -O - http://127.0.0.1 > test.html
|
wget -O - http://127.0.0.1 > test.html
|
||||||
head test.html
|
head test.html
|
||||||
|
sudo cat /var/log/apache2/travis_error_log
|
||||||
set +e
|
set +e
|
||||||
echo
|
echo
|
||||||
|
|
||||||
@ -289,7 +294,7 @@ script:
|
|||||||
# Ensure we catch errors
|
# Ensure we catch errors
|
||||||
set -e
|
set -e
|
||||||
#parallel-lint --exclude htdocs/includes --blame .
|
#parallel-lint --exclude htdocs/includes --blame .
|
||||||
parallel-lint --exclude htdocs/includes/sabre --exclude htdocs/includes/sebastian --exclude htdocs/includes/squizlabs/php_codesniffer/tests --exclude htdocs/includes/jakub-onderka/php-parallel-lint/tests --exclude htdocs/includes/mike42/escpos-php/example --exclude htdocs/includes/phpunit/php-token-stream/tests --exclude htdocs/includes/composer/autoload_static.php --blame .
|
parallel-lint --exclude htdocs/includes/sabre --exclude htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/Shared --exclude htdocs/includes/phpoffice/PhpSpreadsheet --exclude htdocs/includes/sebastian --exclude htdocs/includes/squizlabs/php_codesniffer/tests --exclude htdocs/includes/jakub-onderka/php-parallel-lint/tests --exclude htdocs/includes/mike42/escpos-php/example --exclude htdocs/includes/phpunit/php-token-stream/tests --exclude htdocs/includes/composer/autoload_static.php --blame .
|
||||||
set +e
|
set +e
|
||||||
echo
|
echo
|
||||||
|
|
||||||
@ -299,7 +304,7 @@ script:
|
|||||||
set -e
|
set -e
|
||||||
# Exclusions are defined in the ruleset.xml file
|
# Exclusions are defined in the ruleset.xml file
|
||||||
#phpcs -s -n -p -d memory_limit=-1 --colors --tab-width=4 --standard=dev/setup/codesniffer/ruleset.xml --encoding=utf-8 .
|
#phpcs -s -n -p -d memory_limit=-1 --colors --tab-width=4 --standard=dev/setup/codesniffer/ruleset.xml --encoding=utf-8 .
|
||||||
phpcs -s -p -d memory_limit=-1 --colors --tab-width=4 --standard=dev/setup/codesniffer/ruleset.xml --encoding=utf-8 --runtime-set ignore_warnings_on_exit true .
|
phpcs -s -p -d memory_limit=-1 --extensions=php --colors --tab-width=4 --standard=dev/setup/codesniffer/ruleset.xml --encoding=utf-8 --runtime-set ignore_warnings_on_exit true .
|
||||||
set +e
|
set +e
|
||||||
echo
|
echo
|
||||||
|
|
||||||
@ -309,7 +314,7 @@ script:
|
|||||||
|
|
||||||
- |
|
- |
|
||||||
echo "Upgrading Dolibarr"
|
echo "Upgrading Dolibarr"
|
||||||
# Ensure we catch errors
|
# Ensure we catch errors. Set this to +e if you want to go to the end to see log files.
|
||||||
set +e
|
set +e
|
||||||
cd htdocs/install
|
cd htdocs/install
|
||||||
php upgrade.php 3.5.0 3.6.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade350360.log
|
php upgrade.php 3.5.0 3.6.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade350360.log
|
||||||
@ -325,7 +330,7 @@ script:
|
|||||||
php upgrade2.php 3.8.0 3.9.0 > $TRAVIS_BUILD_DIR/upgrade380390-2.log
|
php upgrade2.php 3.8.0 3.9.0 > $TRAVIS_BUILD_DIR/upgrade380390-2.log
|
||||||
php step5.php 3.8.0 3.9.0 > $TRAVIS_BUILD_DIR/upgrade380390-3.log
|
php step5.php 3.8.0 3.9.0 > $TRAVIS_BUILD_DIR/upgrade380390-3.log
|
||||||
php upgrade.php 3.9.0 4.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade390400.log
|
php upgrade.php 3.9.0 4.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade390400.log
|
||||||
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 > $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 > $TRAVIS_BUILD_DIR/upgrade400500-2.log
|
php upgrade2.php 4.0.0 5.0.0 > $TRAVIS_BUILD_DIR/upgrade400500-2.log
|
||||||
@ -334,10 +339,10 @@ script:
|
|||||||
php upgrade2.php 5.0.0 6.0.0 > $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_WEBSITE,MAIN_MODULE_SUPPLIERPROPOSAL > $TRAVIS_BUILD_DIR/upgrade600700-2.log
|
php upgrade2.php 6.0.0 7.0.0 > $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
|
||||||
php upgrade.php 7.0.0 8.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade700800.log
|
php upgrade.php 7.0.0 8.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade700800.log
|
||||||
php upgrade2.php 7.0.0 8.0.0 MAIN_MODULE_TICKETSUP > $TRAVIS_BUILD_DIR/upgrade700800-2.log
|
php upgrade2.php 7.0.0 8.0.0 > $TRAVIS_BUILD_DIR/upgrade700800-2.log
|
||||||
php step5.php 7.0.0 8.0.0 > $TRAVIS_BUILD_DIR/upgrade700800-3.log
|
php step5.php 7.0.0 8.0.0 > $TRAVIS_BUILD_DIR/upgrade700800-3.log
|
||||||
php upgrade.php 8.0.0 9.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade800900.log
|
php upgrade.php 8.0.0 9.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade800900.log
|
||||||
php upgrade2.php 8.0.0 9.0.0 > $TRAVIS_BUILD_DIR/upgrade800900-2.log
|
php upgrade2.php 8.0.0 9.0.0 > $TRAVIS_BUILD_DIR/upgrade800900-2.log
|
||||||
@ -345,10 +350,14 @@ script:
|
|||||||
php upgrade.php 9.0.0 10.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade9001000.log
|
php upgrade.php 9.0.0 10.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade9001000.log
|
||||||
php upgrade2.php 9.0.0 10.0.0 > $TRAVIS_BUILD_DIR/upgrade9001000-2.log
|
php upgrade2.php 9.0.0 10.0.0 > $TRAVIS_BUILD_DIR/upgrade9001000-2.log
|
||||||
php step5.php 9.0.0 10.0.0 > $TRAVIS_BUILD_DIR/upgrade9001000-3.log
|
php step5.php 9.0.0 10.0.0 > $TRAVIS_BUILD_DIR/upgrade9001000-3.log
|
||||||
|
# Enable modules not enabled into original dump
|
||||||
|
php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_API,MAIN_MODULE_SUPPLIERPROPOSAL,MAIN_MODULE_WEBSITE,MAIN_MODULE_TICKETSUP,MAIN_MODULE_ACCOUNTING > $TRAVIS_BUILD_DIR/enablemodule.log
|
||||||
|
echo $?
|
||||||
cd -
|
cd -
|
||||||
set +e
|
set +e
|
||||||
echo
|
echo
|
||||||
#cat /tmp/dolibarr_install.log
|
#cat /tmp/dolibarr_install.log
|
||||||
|
cat $TRAVIS_BUILD_DIR/enablemodule.log
|
||||||
|
|
||||||
- |
|
- |
|
||||||
echo "Unit testing"
|
echo "Unit testing"
|
||||||
@ -361,9 +370,10 @@ script:
|
|||||||
|
|
||||||
after_script:
|
after_script:
|
||||||
- |
|
- |
|
||||||
echo "After script - Output 50 latest lines of dolibarr.log"
|
echo "After script - Output lines of dolibarr.log"
|
||||||
ls $TRAVIS_BUILD_DIR/documents
|
ls $TRAVIS_BUILD_DIR/documents
|
||||||
tail -n 50 $TRAVIS_BUILD_DIR/documents/dolibarr.log
|
#cat $TRAVIS_BUILD_DIR/documents/dolibarr.log
|
||||||
|
sudo tail -n 50 $TRAVIS_BUILD_DIR/documents/dolibarr.log
|
||||||
|
|
||||||
after_success:
|
after_success:
|
||||||
- |
|
- |
|
||||||
@ -372,7 +382,7 @@ after_success:
|
|||||||
after_failure:
|
after_failure:
|
||||||
- |
|
- |
|
||||||
echo Failure detected, so we show samples of log to help diagnose
|
echo Failure detected, so we show samples of log to help diagnose
|
||||||
# This part of code is executed only if previous commande that fails are enclosed with set +e
|
# This part of code is executed only if previous command that fails are enclosed with set +e
|
||||||
# Upgrade log files
|
# Upgrade log files
|
||||||
for ficlog in `ls $TRAVIS_BUILD_DIR/*.log`
|
for ficlog in `ls $TRAVIS_BUILD_DIR/*.log`
|
||||||
do
|
do
|
||||||
@ -381,7 +391,7 @@ after_failure:
|
|||||||
done
|
done
|
||||||
# Apache log file
|
# Apache log file
|
||||||
echo "Debugging informations for file apache error.log"
|
echo "Debugging informations for file apache error.log"
|
||||||
sudo cat /var/log/apache2/error.log
|
sudo cat /var/log/apache2/travis_error_log
|
||||||
if [ "$DEBUG" = true ]; then
|
if [ "$DEBUG" = true ]; then
|
||||||
# Dolibarr log file
|
# Dolibarr log file
|
||||||
echo "Debugging informations for file dolibarr.log (latest 50 lines)"
|
echo "Debugging informations for file dolibarr.log (latest 50 lines)"
|
||||||
|
|||||||
@ -236,6 +236,12 @@ source_file = htdocs/langs/en_US/modulebuilder.lang
|
|||||||
source_lang = en_US
|
source_lang = en_US
|
||||||
type = MOZILLAPROPERTIES
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
|
[dolibarr.mrp]
|
||||||
|
file_filter = htdocs/langs/<lang>/mrp.lang
|
||||||
|
source_file = htdocs/langs/en_US/mrp.lang
|
||||||
|
source_lang = en_US
|
||||||
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
[dolibarr.multicurrency]
|
[dolibarr.multicurrency]
|
||||||
file_filter = htdocs/langs/<lang>/multicurrency.lang
|
file_filter = htdocs/langs/<lang>/multicurrency.lang
|
||||||
source_file = htdocs/langs/en_US/multicurrency.lang
|
source_file = htdocs/langs/en_US/multicurrency.lang
|
||||||
|
|||||||
25
COPYRIGHT
25
COPYRIGHT
@ -13,28 +13,32 @@ Component Version License GPL Compatible
|
|||||||
-------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------
|
||||||
PHP libraries:
|
PHP libraries:
|
||||||
AdoDb-Date 0.36 Modified BSD License Yes Date convertion (not into rpm package)
|
AdoDb-Date 0.36 Modified BSD License Yes Date convertion (not into rpm package)
|
||||||
ChromePHP 4.1.0 Apache Software License 2.0 Yes Return server log to chrome browser console
|
CKEditor 4.11.4 LGPL-2.1+ Yes Editor WYSIWYG
|
||||||
CKEditor 4.6.2 LGPL-2.1+ Yes Editor WYSIWYG
|
PHPDebugBar 1.15.0 MIT License Yes Used only by the module "debugbar" for developers
|
||||||
EvalMath 1.0 BSD Yes Safe math expressions evaluation
|
EvalMath 1.0 BSD Yes Safe math expressions evaluation
|
||||||
Escpos-php MIT License Yes Thermal receipt printer library, for use with ESC/POS compatible printers
|
Escpos-php ? MIT License Yes Thermal receipt printer library, for use with ESC/POS compatible printers
|
||||||
GeoIP 1.4 LGPL-2.1+ Yes Sample code to make geoip convert (not into deb package)
|
GeoIP 1.4 LGPL-2.1+ Yes Sample code to make geoip convert (not into deb package)
|
||||||
Mobiledetect 2.8.17 MIT License Yes Detect mobile devices browsers
|
Mobiledetect 2.8.83 MIT License Yes Detect mobile devices browsers
|
||||||
NuSoap 0.9.5 LGPL 2.1+ Yes Library to develop SOAP Web services (not into rpm and deb package)
|
NuSoap 0.9.5 LGPL 2.1+ Yes Library to develop SOAP Web services (not into rpm and deb package)
|
||||||
PEAR Mail_MIME 1.8.9 BSD Yes NuSoap dependency
|
PEAR Mail_MIME 1.8.9 BSD Yes NuSoap dependency
|
||||||
odtPHP 1.0.1 GPL-2+ Yes Library to build/edit ODT files
|
odtPHP 1.0.1 GPL-2+ Yes Library to build/edit ODT files
|
||||||
ParseDown 1.6 MIT License Yes Markdown parser
|
ParseDown 1.6 MIT License Yes Markdown parser
|
||||||
PHPExcel 1.8.1 LGPL-2.1+ Yes Read/Write XLS files, read ODS files
|
PHPExcel 1.8.1 LGPL-2.1+ Yes Read/Write XLS files, read ODS files
|
||||||
|
PHPSpreadSheet ? LGPL-2.1+ Yes Read/Write XLS files, read ODS files
|
||||||
php-iban 1.4.7 LGPL-3+ Yes Parse and validate IBAN (and IIBAN) bank account information in PHP
|
php-iban 1.4.7 LGPL-3+ Yes Parse and validate IBAN (and IIBAN) bank account information in PHP
|
||||||
PHPoAuthLib 0.8.2 MIT License Yes Library to provide oauth1 and oauth2 to different service
|
PHPoAuthLib 0.8.2 MIT License Yes Library to provide oauth1 and oauth2 to different service
|
||||||
PHPPrintIPP 1.3 GPL-2+ Yes Library to send print IPP requests
|
PHPPrintIPP 1.3 GPL-2+ Yes Library to send print IPP requests
|
||||||
|
PSR/Logs 1.0 Library for logs (used by DebugBar)
|
||||||
|
PSR/simple-cache ? Library for cache (used by PHPSpreadSheet)
|
||||||
Restler 3.0.0RC6 LGPL-3+ Yes Library to develop REST Web services (+ swagger-ui js lib into dir explorer)
|
Restler 3.0.0RC6 LGPL-3+ Yes Library to develop REST Web services (+ swagger-ui js lib into dir explorer)
|
||||||
TCPDF 6.2.12 LGPL-3+ Yes PDF generation
|
Sabre 3.2.2 BSD Yes DAV support
|
||||||
TCPDI 1.0.0 LGPL-3+ / Apache 2.0 Yes FPDI replacement
|
|
||||||
Swift Mailer 5.4.2-DEV MIT license Yes Comprehensive mailing tools for PHP
|
Swift Mailer 5.4.2-DEV MIT license Yes Comprehensive mailing tools for PHP
|
||||||
Stripe 4.7.0 MIT licence Yes Library for Stripe module
|
Stripe 6.35 MIT licence Yes Library for Stripe module
|
||||||
|
TCPDF 6.2.25 LGPL-3+ Yes PDF generation
|
||||||
|
TCPDI 1.0.0 LGPL-3+ / Apache 2.0 Yes FPDI replacement
|
||||||
|
|
||||||
JS libraries:
|
JS libraries:
|
||||||
jQuery 3.1.1 MIT License Yes JS library
|
jQuery 3.3.1 MIT License Yes JS library
|
||||||
jQuery UI 1.12.1 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 4.0.5 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)
|
||||||
@ -53,9 +57,12 @@ JsTimezoneDetect 1.0.6 MIT License Yes
|
|||||||
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.
|
||||||
|
|
||||||
Image libraries
|
Image libraries:
|
||||||
Octicons 8.1 MIT Yes
|
Octicons 8.1 MIT Yes
|
||||||
|
|
||||||
|
Font libraries:
|
||||||
|
Fontawesome 5.7.2 Font Awesome Free licence Yes
|
||||||
|
|
||||||
|
|
||||||
For licenses compatibility informations:
|
For licenses compatibility informations:
|
||||||
http://www.gnu.org/licenses/licenses.en.html
|
http://www.gnu.org/licenses/licenses.en.html
|
||||||
|
|||||||
391
ChangeLog
391
ChangeLog
@ -2,19 +2,320 @@
|
|||||||
English Dolibarr ChangeLog
|
English Dolibarr ChangeLog
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
***** ChangeLog for 10.0.0 compared to 9.0.0 *****
|
***** ChangeLog for 10.0.0 compared to 9.0.0 *****
|
||||||
For Users:
|
For Users:
|
||||||
NEW: Experimental module "Vendor receptions"
|
NEW: Module "Ticket" is available as a stable module.
|
||||||
|
NEW: Module "Email Collector" is available as a stable module.
|
||||||
|
NEW: Module "TakePOS" is available as a stable module.
|
||||||
|
NEW: Experimental module "Vendor receptions".
|
||||||
|
NEW: Experimental module "BOM".
|
||||||
|
NEW: Accounting - Add default accounting account for member subcriptions.
|
||||||
|
NEW: Accounting - More comprehensive menu.
|
||||||
|
NEW: Agenda/event - add description column available in list (hidden by default).
|
||||||
|
NEW: Add accounting account for result.
|
||||||
|
NEW: Add accounting code for EEC sales and export sales on products.
|
||||||
|
NEW: Add a security permission to edit php dynamic content on the WebSite module.
|
||||||
|
NEW: Attached document on bank account are now visible in automatic ECM.
|
||||||
|
NEW: Add Autofill Remainder Amount picto on the Expense Report Payment Page.
|
||||||
|
NEW: Add contact status in category export
|
||||||
|
NEW: Add Default Warehouse to user record (if module stock is on)
|
||||||
|
NEW: Add employee/user to subledger account list
|
||||||
|
NEW: Add gender in member card
|
||||||
|
NEW: Add getFormatedCustomerRef and getFormatedSupplierRef methods
|
||||||
|
NEW: Add history to view and print previous sales on TakePos.
|
||||||
|
NEW: Add import of accounting account for intra/export selling on product card
|
||||||
|
NEW: Adding code to show update date of supplier price shown
|
||||||
|
NEW: Add line total on list of payments
|
||||||
|
NEW: Add LinkedIn field in social network module
|
||||||
|
NEW: Add more complete error messages in log on stripe payments
|
||||||
|
NEW: Add no_email field in contact list
|
||||||
|
NEW: Add notes are show in tooltips
|
||||||
|
NEW: Add option DONATION_USE_THIRDPARTIES in admin of membership module
|
||||||
|
NEW: Add option STOCK_SHOW_VIRTUAL_STOCK_IN_PRODUCTS_COMBO
|
||||||
|
NEW: add page to setup opening hours of the company
|
||||||
|
NEW: add payments table to pdf of expense report
|
||||||
|
NEW: add payment terms to invoices list
|
||||||
|
NEW: Add picto of deletion on mass action combo lists
|
||||||
|
NEW: add product extrafields available into shipping export
|
||||||
|
NEW: add ref supplier on supplier invoice
|
||||||
|
NEW: Add stats on entries & movements by fiscal year
|
||||||
|
NEW: Add subledger in various payment module
|
||||||
|
NEW: Add tag for ODT generation for localtax rates
|
||||||
|
NEW: Add the now link when creating expense report
|
||||||
|
NEW: Ask date of invoice when using the Clone feature.
|
||||||
|
NEW: auto event msg
|
||||||
|
NEW: Automatically binding for intra/export accountancy code in customer list
|
||||||
|
NEW: automatic / manual selector form
|
||||||
|
NEW: Better explanation for setup of WebDav module
|
||||||
|
NEW: Can add more lines on situation invoices at end of project when there is extra to add.
|
||||||
|
NEW: Can change the customer account of an instance
|
||||||
|
NEW: Can choose the root category to show products for TakePOS module
|
||||||
|
NEW: Can edit supplier on draft order supplier
|
||||||
|
NEW: Can enter price with or without tax when entering expense repor line
|
||||||
|
NEW: Can filter on the date of period for social contributions
|
||||||
|
NEW: Can generate invoices from the timespent entered on a project
|
||||||
|
NEW: Can update product supplier price ref
|
||||||
|
NEW: Can upload files from the edit page of expense report
|
||||||
|
NEW: Color for hover and for checked line is on by default
|
||||||
|
NEW: Column of parent company is available in list of third parties
|
||||||
|
NEW: conditionnal add member button by statut
|
||||||
|
NEW: constant KEEP_DISCOUNT_LINES_FROM_ORIGIN
|
||||||
|
NEW: Contact related items tab
|
||||||
|
NEW: Can create of supplier invoice from a reception
|
||||||
|
NEW: Ensure External RSS Links Open in New Window
|
||||||
|
NEW: Export available for reception module
|
||||||
|
NEW: Extend import option to Order's card and Propal's card
|
||||||
|
NEW: filter by thirdparty on report CA by prod/serv
|
||||||
|
NEW: Save space by moving the meteo on the title line
|
||||||
|
NEW: Get the list of groups of a user with the REST API.
|
||||||
|
NEW: Hidden option MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER to edit supplier on draft supplier order
|
||||||
|
NEW: Improve Displaying Shortcut Access Keys in Navigation.
|
||||||
|
NEW: Improve Expensereport, Inverse Receiver.
|
||||||
|
NEW: Improve pdf description item visibitity.
|
||||||
|
NEW: Introduce a config parameter $dolibarr_main_instance_unique_id
|
||||||
|
NEW: Introduce css "nobottomiftotal"
|
||||||
|
NEW: Introduce PhpSpreadsheet for export (need php5.6+)
|
||||||
|
NEW: Invoice creation from the timesheet
|
||||||
|
NEW: Can list remote stripe's payout in a dedicated page.
|
||||||
|
NEW: Manage account sell_intra & sell_export in page accoutancy admin default product
|
||||||
|
NEW: Manage loan schedule.
|
||||||
|
NEW: Manage status of member types.
|
||||||
|
NEW: Mass action "create bills" for validated reception
|
||||||
|
NEW: Measuring unit are now defined into an editable dictionary. Add product size/unit into product import.
|
||||||
|
NEW: Template pdf 'canelle_reception' displays linked reception lines.
|
||||||
|
NEW: Moral/physic status can be defined at member type level
|
||||||
|
NEW: Pagination into list of time spent.
|
||||||
|
NEW: Performance enhancement (Replace dirname(__FILE__) with __DIR__)
|
||||||
|
NEW: POS support in order (ex: online cart).
|
||||||
|
NEW: Preview of images into the filemanager component.
|
||||||
|
NEW: Resource module can be used in products/services (in a dedicated tab)
|
||||||
|
NEW: Retrieve invoice infos from order when billing shipment
|
||||||
|
NEW: Save and display type of membership in subscription table for more explicit historic
|
||||||
|
NEW: Setup default thirdparty type (customer or prospect/customer)
|
||||||
|
NEW: Add shipping "set draft" button and can update lines.
|
||||||
|
NEW: show in blod, the invoice amount where we came from, when making payment
|
||||||
|
NEW: Show product dimensions in product tooltips.
|
||||||
|
NEW: Show the latest date of subscription in member statistics reports.
|
||||||
|
NEW: Sort list of templates alphabetically
|
||||||
|
NEW: Stripe Payment Intent (need option to use this new Stripe api method)
|
||||||
|
NEW: Can support barcode on supplier price references.
|
||||||
|
NEW: Support tag {ccc} on payment ref
|
||||||
|
NEW: The preview of PDF files generates only 1 png file, even if several pages.
|
||||||
|
NEW: Can select a Thirdparty object in donation module if option ON.
|
||||||
|
NEW: Tooltip with VAT amount and price incl tax on lines of objects.
|
||||||
|
NEW: Unsubscribed emails are now stored in a dedicated table.
|
||||||
|
NEW: Update working chkbxlst filter for lists.
|
||||||
|
NEW: Use ajax switch into setup of donation.php and multi-currency module.
|
||||||
|
NEW: use recipient language when generating the fullname for emails.
|
||||||
|
NEW: When you create product or service, sell accountancy account by default is suggested.
|
||||||
|
NEW: Widget birthdays of the month.
|
||||||
|
NEW: Option in workflow module to set a reception billed on validate supplier bill.
|
||||||
|
NEW: Autocompletion on lists should be available on mobile applications.
|
||||||
|
NEW: Add mass action to close several members.
|
||||||
|
NEW: Add hidden option ADD_UNSPLASH_LOGIN_BACKGROUND for random background
|
||||||
|
|
||||||
For Developers:
|
For Developers:
|
||||||
|
NEW: Module "DebugBar" is available as a stable module.
|
||||||
|
NEW: Add API REST for donations
|
||||||
|
NEW: Add a script 'purge-data.php' to purge data older than a defined creation date
|
||||||
|
NEW: Add constant XFRAMEOPTIONS_ALLOWALL
|
||||||
|
NEW: Add function isValidVATID() to heck syntax of a VAT ID/number.
|
||||||
|
NEW: Add document's product support in APIs
|
||||||
|
NEW: Add REST API: get the list of objects in a category.
|
||||||
|
NEW: Update Stripe library to 6.35
|
||||||
|
NEW: Upgrade jquery lib to 3.3.1
|
||||||
|
NEW: Add hook 'addHtmlHeader()'
|
||||||
|
NEW: Add hook 'createRecurringInvoices()'
|
||||||
|
NEW: Add hook 'afterSelectContactOptions'
|
||||||
|
NEW: Add hook 'getAccessForbiddenMessage'
|
||||||
|
NEW: Add hook support in accountancy index
|
||||||
|
NEW: Add hook support in list of template invoices
|
||||||
|
NEW: Add parameter 'replaceambiguouschars' on getRandomPassword function
|
||||||
|
NEW: Add property 'noteditable' in modulebuilder
|
||||||
|
NEW: Add the current modulepart into the Conf class object
|
||||||
|
NEW: Add trigger FICHINTER_UNVALIDATE
|
||||||
|
NEW: Add visibility with value 4 in framework to define fields to show
|
||||||
|
NEW: More option to tune initialization of a new module with modulebuilder.
|
||||||
|
NEW: Add REST API to list currencies
|
||||||
|
NEW: REST API Proposal, Orders, Invoices: Add contact details
|
||||||
|
NEW: hidden option to change concat order of description/product label.
|
||||||
|
NEW: Enhance management of webhooks
|
||||||
|
NEW: Generation of doc by modulebuilder can include README and CHANGELOG
|
||||||
|
NEW: massfilesarea feature is possible for external modules
|
||||||
|
NEW: Show list of enabled modules in dol_print_error().
|
||||||
|
NEW: Simplification of CSS styles of default themes.
|
||||||
|
NEW: Clean code of a lot of deprecated code.
|
||||||
|
NEW: Add hidden option to set a search entry to the top
|
||||||
|
NEW: add hidden option DISPLAY_DISCOUNTED_SUPPLIER_PRICE
|
||||||
|
NEW: add hidden option MAIN_DEFAULT_LANGUAGE_FILTER
|
||||||
|
NEW: add hidden option NO_CONCAT_DESCRIPTION
|
||||||
|
NEW: Add hidden option ACCOUNTANCY_COMBO_FOR_AUX
|
||||||
|
NEW: Add Hidden option OVERRIDE_VAT_FOR_EXPENSE_REPORT
|
||||||
|
NEW: add hidden option MAIN_DOC_UPLOAD_NOT_RENAME_BY_DEFAULT
|
||||||
|
NEW: Hidden conf to improve pdf desc item visibitity
|
||||||
|
NEW: Look and feel v10 - Add CSS 'tabBarNoTop'
|
||||||
|
|
||||||
|
|
||||||
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:
|
||||||
* GetUrlTrackingStatus were renamed into getUrlTrackingStatus
|
* PHP 5.4 is no more supported. Minimum PHP is now 5.5+.
|
||||||
|
* The PHP extension php-intl is not mandatory and must be installed to have new features working correctly.
|
||||||
|
* Method GetUrlTrackingStatus were renamed into getUrlTrackingStatus for consistency with naming rules.
|
||||||
|
* API getListOfCivility has been renamed into getListOfCivilities for consistency with naming rules.
|
||||||
|
* Deprecated function img_phone as been removed. You can use img_picto(..., 'call|call_out') instead.;
|
||||||
|
* Files for variables of themes were renamed from graph-color.php into theme_vars.inc.php to match naming
|
||||||
|
convention of extension .inc.php for files to be included.
|
||||||
|
* All methods set_draft() were renamed into setDraft().
|
||||||
|
* Signatures of methods createFromClone() has been standardized. All methods requires the object User as first parameter.
|
||||||
|
* Removed deprecated function function test_sql_and_script_inject that was replaced with testSqlAndScriptInject.
|
||||||
|
* Method load_measuring_units were renamed into selectMeasuringUnits and select_measuring_units was deprecated.
|
||||||
|
* Hidden option CHANGE_ORDER_CONCAT_DESCRIPTION were renamed into MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION.
|
||||||
|
* Method dolEscapeXML was moved from functions.lib.php into function2.lib.php (not used enough to be loaded by default).
|
||||||
|
* Removed deprecated use of string in dol_print_date(). Only date allowed.
|
||||||
|
* Deprecated property ->fk_departement is now ->state_id everywhere.
|
||||||
|
* Removed the method 4 of GETPOST (to get $_COOKIE). It was not used and not recommanded to use in Dolibarr.
|
||||||
|
* Column llx_facture.facnumber change to llx_facture.ref
|
||||||
|
* Variable $dolibarr_main_cookie_cryptkey is no more created at install (it was not used by Dolibarr). A new variable
|
||||||
|
called $dolibarr_main_instance_unique_id is now generated at each installation. It will be used by some future features.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
***** ChangeLog for 9.0.3 compared to 9.0.2 *****
|
||||||
|
FIX: #11013
|
||||||
|
FIX: #11041
|
||||||
|
FIX: actioncomm: sort events by date after external calendars and hook (into 7.0)
|
||||||
|
FIX: better test
|
||||||
|
FIX: Combo list was limited to 20 in stock correction
|
||||||
|
FIX: Confusion between expired and late
|
||||||
|
FIX: Cursor pointer in payment screen for autofill
|
||||||
|
FIX: CVE-2019-11199
|
||||||
|
FIX: CVE-2019-11200
|
||||||
|
FIX: CVE-2019-11201
|
||||||
|
FIX: Default value on form to send email
|
||||||
|
FIX: error messages not displayed
|
||||||
|
FIX: Massive debug in lettering function
|
||||||
|
FIX: missing compatibility with multicompany
|
||||||
|
FIX: missing global $user
|
||||||
|
FIX: missing situation invoice in list
|
||||||
|
FIX: MultiEntity in lettering functionality
|
||||||
|
FIX: Product accountancey sell intra code must be visible if main feature level 1
|
||||||
|
FIX: ref for table without ref manager are set to NULL.
|
||||||
|
FIX: Sending email to mass actions send same email on same customer
|
||||||
|
FIX: Several fixes on import of services/products
|
||||||
|
FIX: shipping default warehouse if only one warehouse
|
||||||
|
FIX: sortfield on lettering function
|
||||||
|
FIX: Status of opportunity should never be -1
|
||||||
|
FIX: test to display create invoice button on supplier_order card
|
||||||
|
FIX: The autocopy feature was ko for suppliers
|
||||||
|
FIX: Total per day in timespent per week
|
||||||
|
FIX: Total per day shows 00:00 if the total time spent is equal to 12:00
|
||||||
|
FIX: Update/delete currency on same languages
|
||||||
|
FIX: Wrong variable name make contact of supplier order not used on PDF.
|
||||||
|
FIX: Add hidden option MAIN_PDF_HIDE_SITUATION to hide situation (quick hack to fix output pb).
|
||||||
|
FIX: attached files list with link file was broked
|
||||||
|
|
||||||
|
***** ChangeLog for 9.0.2 compared to 9.0.1 *****
|
||||||
|
FIX: #10822
|
||||||
|
FIX: Accountancy - Format EBP import
|
||||||
|
FIX: A page of a site replaced with another when switching in edit mode
|
||||||
|
FIX: Autodetect buy price for invoices autogenerated with templates.
|
||||||
|
FIX: Avoid error 500 when extension php-intl not loaded
|
||||||
|
FIX: bad check on type of expense report (mandatory status not working)
|
||||||
|
FIX: Bad label of status for members (must be short version in list)
|
||||||
|
FIX: Can not create contract with numbering module without autogen rule
|
||||||
|
FIX: Can't set default value of extrafield of type varchar
|
||||||
|
FIX: check only if invoice module is enabled (bank is check after)
|
||||||
|
FIX: counter of permissions in badge was wrong
|
||||||
|
FIX: default value of language of thirdparty
|
||||||
|
FIX: Don't show accountingjournal:getNomUrl without data
|
||||||
|
FIX: Duplicate executeHook function
|
||||||
|
FIX: Edit of personalized groups
|
||||||
|
FIX: Error with various & salary payment on project
|
||||||
|
FIX: extrafields always visible on view mode
|
||||||
|
FIX: function not found
|
||||||
|
FIX: If we build one invoice for several orders, we must put the ref of
|
||||||
|
orders on lines.
|
||||||
|
FIX: expensereport must be in $check array
|
||||||
|
FIX: missing entity filter and wrong var name
|
||||||
|
FIX: Missing field "In sale" in list
|
||||||
|
FIX: missing hook completeTabsHead in margins module
|
||||||
|
FIX: missing hook in agenda export
|
||||||
|
FIX: missing vat_src_code when inserting an expense report line
|
||||||
|
FIX: More complete auto setup of barcode module
|
||||||
|
FIX: need to round with 2 decimals to avoid movements not correctly balanced
|
||||||
|
FIX: no need to test anything to display documents tabs on expense report
|
||||||
|
FIX: old export models was not visible
|
||||||
|
FIX: Param keepn must be 1 when dol_escape_htmltag used for textarea
|
||||||
|
FIX: possibility to set up payment mode when invoice module is disabled
|
||||||
|
FIX: problem with sign of various payment in project preview
|
||||||
|
FIX: Remane of project
|
||||||
|
FIX: setup of module export
|
||||||
|
FIX: several hooks in shipping/delivery cards
|
||||||
|
FIX: supplier discount was not retrieved when choosing a product
|
||||||
|
FIX: The minimum amount filter does not work in the VAT report per customer
|
||||||
|
FIX: Tooltip on click was ko on smartphone
|
||||||
|
FIX: translation
|
||||||
|
FIX: useless join
|
||||||
|
FIX: Vat src code lost after editing expense report line
|
||||||
|
FIX: we need to keep originline special_code
|
||||||
|
FIX: Can't insert if there is extrafields mandatory on another entity.
|
||||||
|
FIX: error in create object when 2 extra fields are mandatory in 2 different entities
|
||||||
|
FIX: when we create deposit with multi tva, we mustn't add line if amount = 0 (example when we have a 100% reduc on one of origin invoice line)
|
||||||
|
FIX: wrong redirect link on holiday refuse
|
||||||
|
NEW: Add more complete error messages in log on stripe payments
|
||||||
|
|
||||||
|
***** ChangeLog for 9.0.1 compared to 9.0.0 *****
|
||||||
|
FIX: #10381
|
||||||
|
FIX: #10460 compatibility with MariaDB 10.4
|
||||||
|
FIX: #10485
|
||||||
|
FIX: #10638
|
||||||
|
FIX: Accountancy - Adding transaction with multicompany uses all the time 1st entity
|
||||||
|
FIX: actioncomm export: ORDER BY clause is in wrong export property + event type filter does not work
|
||||||
|
FIX: add fk_unit on addline action
|
||||||
|
FIX: adding css by page if url is externam
|
||||||
|
FIX: Bad link in menu manager
|
||||||
|
FIX: better test on fetch
|
||||||
|
FIX: can't add lines on invoices
|
||||||
|
FIX: Check for old picture name if the new one was not found
|
||||||
|
FIX: could not create several superadmin in transversal mode
|
||||||
|
FIX: creation of menu entry with parent id not int
|
||||||
|
FIX: creation of new left menu entry
|
||||||
|
FIX: Default language of company is not set
|
||||||
|
FIX: error on setup of password if pass generators have a .old file.
|
||||||
|
FIX: error report not returned
|
||||||
|
FIX: expedition: reset status on rollback + replace hardcoded status with const
|
||||||
|
FIX: fetch module / pos source
|
||||||
|
FIX: fk_default_warehouse missing in group by
|
||||||
|
FIX: function sendEmailsReminder isn't completely developed, then MAIN_FEATURES_LEVEL must be 2 to "use" it
|
||||||
|
FIX: if empty error message, we just see "error" displayed
|
||||||
|
FIX: label of bank account
|
||||||
|
FIX: line edit template: keep fk_parent_line
|
||||||
|
FIX: Mark credit note as available for credit note in other currency
|
||||||
|
FIX: missing access security checking with multicompany
|
||||||
|
FIX: missing entity filter in function "build_filterField()" (export module)
|
||||||
|
FIX: missing $ismultientitymanaged for previous/next ref
|
||||||
|
FIX: Missing province in export of invoice
|
||||||
|
FIX: must fetch member in current entity
|
||||||
|
FIX: positive values creating diff on addline rounding
|
||||||
|
FIX: positive values IN supplier credit notes creating diff on addline rounding
|
||||||
|
FIX: Price in combo list of service does not use the correct price level
|
||||||
|
FIX: project_title for display of getNomUrl()
|
||||||
|
FIX: same thing here
|
||||||
|
FIX: Show button POS Ticket only if invoice was generated by POS
|
||||||
|
FIX: supplier invoice payment total doesn't care about deposit or credit
|
||||||
|
FIX: supplier invoice product stats total ht is line total not invoice total
|
||||||
|
FIX: The notes was also copied on invoice
|
||||||
|
FIX: Transaction on leave approval and decrease ko if setup not complete
|
||||||
|
FIX: Translation not loaded by scheduled jobs
|
||||||
|
FIX: [URGENT] broken feature, "$usercancreate" is for Dolibarr 9
|
||||||
|
FIX: we want to be able to reopen fourn credit note
|
||||||
|
FIX: wrong feature2 when user rights "group_advance" is used
|
||||||
|
FIX: wrong merged conflict
|
||||||
|
FIX: wrong tests on fetch
|
||||||
|
NEW: Add protection to avoid packaging if files non indexed exists
|
||||||
|
|
||||||
***** ChangeLog for 9.0.0 compared to 8.0.0 *****
|
***** ChangeLog for 9.0.0 compared to 8.0.0 *****
|
||||||
For Users:
|
For Users:
|
||||||
NEW: Stable module: DAV (WebDAV only for the moment)
|
NEW: Stable module: DAV (WebDAV only for the moment)
|
||||||
@ -134,6 +435,90 @@ Following changes may create regressions for some external modules, but were nec
|
|||||||
* Remove the no more used and deprecated dol_print_graph function
|
* Remove the no more used and deprecated dol_print_graph function
|
||||||
|
|
||||||
|
|
||||||
|
***** ChangeLog for 8.0.5 compared to 8.0.4 *****
|
||||||
|
FIX: #10381
|
||||||
|
FIX: #10460 compatibility with MariaDB 10.4
|
||||||
|
FIX: #11025
|
||||||
|
FIX: Accountancy - Add transaction with multicompany use all the time 1st entity
|
||||||
|
FIX: Accountancy - Format EBP import
|
||||||
|
FIX: actioncomm export: ORDER BY clause is in wrong export property + event type filter does not work
|
||||||
|
FIX: actioncomm: sort events by date after external calendars and hook
|
||||||
|
FIX: action list: add printFieldListSelect and printFieldListWhere hooks
|
||||||
|
FIX: add fk_unit on addline action
|
||||||
|
FIX: avoid php warning
|
||||||
|
FIX: bad sql request
|
||||||
|
FIX: better method
|
||||||
|
FIX: better test
|
||||||
|
FIX: better test on fetch
|
||||||
|
FIX: broken external authentication module feature and avoid warning
|
||||||
|
FIX: Can not create contract with numbering module without autogen rule
|
||||||
|
FIX: can't add lines on invoices
|
||||||
|
FIX: Can't generate invoice pdf
|
||||||
|
FIX: Can't insert if there is extrafields mandatory on another entity.
|
||||||
|
FIX: Can't insert if there is extrafields mandatory on another entity. FIX: Can't set default value of extrafield of type varchar
|
||||||
|
FIX: Check for old picture name if the new one was not found
|
||||||
|
FIX: Civility not saved when creating a member.
|
||||||
|
FIX: $conf->fournisseur->commande->enabled doesn't exist, we must use $conf->fournisseur->enabled
|
||||||
|
FIX: could not create several superadmin in transversal mode
|
||||||
|
FIX: credit note can have negative value
|
||||||
|
FIX: Default value on sales representative on third party creation
|
||||||
|
FIX: Don't show journal:getNomUrl without data
|
||||||
|
FIX: Erreur dans le Total
|
||||||
|
FIX: error messages not displayed
|
||||||
|
FIX: expedition: reset status on rollback + replace hardcoded status with const
|
||||||
|
FIX: Fix PHP warning "count(): Parameter must be an array..."
|
||||||
|
FIX: fk_default_warehouse missing in group by
|
||||||
|
FIX: function sendEmailsReminder isn't completely developed, then MAIN_FEATURES_LEVEL must be 2 to "use" it
|
||||||
|
FIX: holidays get natural_search if search params are set only
|
||||||
|
FIX: if empty error message, we just see "error" displayed
|
||||||
|
FIX: if(!method_exists(dol_loginfunction))
|
||||||
|
FIX: If we build one invoice for several orders, we must put the ref of order on the line to not lose information.
|
||||||
|
FIX: in fact expensereport must be in $check array
|
||||||
|
FIX: Interface regression for bind people. Fix option MAIN_OPTIMIZEFORTEXTBROWSER
|
||||||
|
FIX: line edit template: keep fk_parent_line
|
||||||
|
FIX: Loan impossible to account
|
||||||
|
FIX: Mark credit note as available for credit note in other currency
|
||||||
|
FIX: missing access security checking with multicompany
|
||||||
|
FIX: missing entity filter and wrong var name
|
||||||
|
FIX: missing entity filter in function "build_filterField()" (export)
|
||||||
|
FIX: Missing field in import/export of users
|
||||||
|
FIX: missing hook completeTabsHead in margins module
|
||||||
|
FIX: missing $ismultientitymanaged for previous/next ref
|
||||||
|
FIX: Missing province in export of invoice
|
||||||
|
FIX: multicompany compatibility
|
||||||
|
FIX: must fetch member in current entity
|
||||||
|
FIX: need an order by in case we found other invoice with same number but not same date
|
||||||
|
FIX: need to round with 2 decimals to avoid movements not correctly balanced
|
||||||
|
FIX: no need to test anything to display documents tabs on expense report
|
||||||
|
FIX: positive values creating diff on addline rounding
|
||||||
|
FIX: problem with multicompany transverse mode
|
||||||
|
FIX: Product accountancey sell intra code must be visible if main feature level 1
|
||||||
|
FIX: project_title for display of getNomUrl()
|
||||||
|
FIX: quick search for supplier orders
|
||||||
|
FIX: Remane of project
|
||||||
|
FIX: same thing here
|
||||||
|
FIX: Selection of email recipient with option MAIN_OPTIMIZEFORTEXTBROWSER
|
||||||
|
FIX: several hooks in shipping/delivery cards
|
||||||
|
FIX: shipping default warehouse if only one warehouse
|
||||||
|
FIX: SQL injection on rowid of dict.php
|
||||||
|
FIX: 'statut' is ignored when updating a user with the REST API.
|
||||||
|
FIX: supplier invoice payment total dont care about deposit or credit
|
||||||
|
FIX: supplier invoice product stats total ht is line total not invoice total
|
||||||
|
FIX: The minimum amount filter does not work in the VAT report per customer
|
||||||
|
FIX: Total per day shows 00:00 if the total time spent is equal to 12:00
|
||||||
|
FIX: Update/delete currency on same languages
|
||||||
|
FIX: [URGENT] broken feature, "$usercancreate" is for Dolibarr 9
|
||||||
|
FIX: useless join
|
||||||
|
FIX: we need to keep originline special_code
|
||||||
|
FIX: we want to be able to reopen fourn credit note
|
||||||
|
FIX: when 2 extra fields are mandatory in 2 different entities
|
||||||
|
FIX: when we add a payment on an invoice which already has payments with credit note or deposit amount, and then we get an excess received, discount amount must be $total_paiements + $total_creditnote_and_deposit - $object->total_ttc;
|
||||||
|
FIX: when we create deposit with multi tva, we mustn't add line if amount = 0 (example when we have a 100% reduc on one of origin invoice line)
|
||||||
|
FIX: wrong redirect link on holiday refuse
|
||||||
|
FIX: wrong test enabled
|
||||||
|
FIX: Wrong variable name
|
||||||
|
FIX: XSS
|
||||||
|
|
||||||
***** ChangeLog for 8.0.4 compared to 8.0.3 *****
|
***** ChangeLog for 8.0.4 compared to 8.0.3 *****
|
||||||
FIX: #10030 better german chart
|
FIX: #10030 better german chart
|
||||||
FIX: #10036
|
FIX: #10036
|
||||||
@ -445,7 +830,7 @@ NEW: Filter export model is now by user
|
|||||||
NEW: Finish implementation of option PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES
|
NEW: Finish implementation of option PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES
|
||||||
NEW: generalize use of button to create new element from list
|
NEW: generalize use of button to create new element from list
|
||||||
NEW: hidden conf AGENDA_NB_WEEKS_IN_VIEW_PER_USER to set nb weeks to show into per user view
|
NEW: hidden conf AGENDA_NB_WEEKS_IN_VIEW_PER_USER to set nb weeks to show into per user view
|
||||||
NEW: hidden conf to assign category to thirparty that are neither customer nor prospect or supplier
|
NEW: hidden conf to assign category to thirdparty that are neither customer nor prospect or supplier
|
||||||
NEW: hidden conf to set nb weeks to show into user view
|
NEW: hidden conf to set nb weeks to show into user view
|
||||||
NEW: hidden option MAIN_DISABLE_FREE_LINES
|
NEW: hidden option MAIN_DISABLE_FREE_LINES
|
||||||
NEW: improve way of adding users/sales representative to thirdparty
|
NEW: improve way of adding users/sales representative to thirdparty
|
||||||
|
|||||||
54
README-FR.md
54
README-FR.md
@ -15,37 +15,43 @@ Dolibarr est distribué sous les termes de la licence GNU General Public License
|
|||||||
|
|
||||||
## INSTALLER DOLIBARR
|
## INSTALLER DOLIBARR
|
||||||
|
|
||||||
Si vous n'avez pas de connaissances techniques, et que vous recherchez
|
### Configuration simple
|
||||||
un programme d'installation qui installe Dolibarr ERP/CRM en quelques clics,
|
|
||||||
vous devez vous ré-orienter vers DoliWamp (la version tout-en-un
|
|
||||||
de Dolibarr pour Windows), DoliDeb (la version tout-en-un pour Debian ou
|
|
||||||
Ubuntu) ou DoliRpm (la version tout-en-un de Dolibarr pour Fedora, Redhat,
|
|
||||||
OpenSuse, Mandriva ou Mageia).
|
|
||||||
|
|
||||||
Vous pouvez les télécharger depuis la rubrique *download* du portail officiel:
|
Si vous avez peu de compétences techniques et que vous souhaitez installer Dolibarr ERP/CRM en quelques clics, vous pouvez utiliser l'une des versions pré-packagées avec les prérequis:
|
||||||
https://www.dolibarr.org/
|
|
||||||
|
|
||||||
Si vous avez déjà installé un serveur Web avec PHP et une base de données (MariaDb/MySql/PostgreSql),
|
- DoliWamp pour Windows
|
||||||
vous pouvez installer Dolibarr avec cette version de la manière suivante:
|
- DoliDeb pour Debian ou Ubuntu
|
||||||
|
- DoliRpm pour Redhat, Fedora, OpenSuse, Mandriva ou Mageia
|
||||||
|
|
||||||
- Copiez le répertoire "dolibarr" et son contenu dans la racine de votre serveur
|
Les packages peuvent être téléchargés à partir de [site web officiel] (https://www.dolibarr.org/).
|
||||||
web, ou bien copiez le répertoire sur le serveur et configurez ce serveur pour
|
|
||||||
utiliser "dolibarr/htdocs" comme racine d'un nouveau virtual host (ce second
|
|
||||||
choix requiert des compétences et habilitations en administration du serveur
|
|
||||||
web).
|
|
||||||
|
|
||||||
- Créez un fichier vide "htdocs/conf/conf.php" et attribuez les permissions
|
### Configuration avancée
|
||||||
en lecture et écriture pour le user du serveur web (les permissions en
|
|
||||||
écriture seront supprimées une fois l'installation terminée).
|
|
||||||
|
|
||||||
- Depuis votre navigateur, appelez la page "install/" de dolibarr. L'url dépend
|
Vous pouvez aussi utiliser un serveur Web et une base de données prise en charge (MariaDB, MySQL ou PostgreSQL) pour installer la version standard.
|
||||||
du choix fait à la première étape:
|
|
||||||
http://localhost/dolibarr/htdocs/install/
|
|
||||||
ou
|
|
||||||
http://yourdolibarrvirtualhost/install/
|
|
||||||
|
|
||||||
- Suivez les instructions fournies par l'installateur...
|
- Décompressez l'archive .zip téléchargée pour copier le répertoire "dolibarr/htdocs" et tous ses fichiers à la racine du serveur Web ou récupérez-les directement à partir de GitHub (recommandé si vous connaissez git):
|
||||||
|
|
||||||
|
git clone https://github.com/dolibarr/dolibarr -b x.y (où x.y est la version principale comme 3.6, 9.0, ...)
|
||||||
|
|
||||||
|
- Configurez votre serveur Web pour qu'il utilise "*dolibarr/htdocs*" en tant que racine si votre serveur Web ne possède pas déjà de répertoire défini vers lequel pointer.
|
||||||
|
|
||||||
|
- Créez un fichier `htdocs/conf/conf.php` vide et définissez les autorisations d'*écrire* pour l'utilisateur de votre serveur Web (l'autorisation *écrire* sera supprimée une fois l'installation terminée)
|
||||||
|
|
||||||
|
- Depuis votre navigateur, allez à la page "install/" de dolibarr
|
||||||
|
|
||||||
|
L’URL dépendra de la façon dont votre configuration Web a été configurée pour pointer vers votre installation de dolibarr. Cela peut ressembler à:
|
||||||
|
|
||||||
|
http://localhost/dolibarr/htdocs/install/
|
||||||
|
|
||||||
|
ou
|
||||||
|
|
||||||
|
http://localhost/dolibarr/install/
|
||||||
|
|
||||||
|
ou
|
||||||
|
|
||||||
|
http://yourdolibarrvirtualhost/install/
|
||||||
|
|
||||||
|
- Suivez les instructions de l'installateur
|
||||||
|
|
||||||
|
|
||||||
## METTRE A JOUR DOLIBARR
|
## METTRE A JOUR DOLIBARR
|
||||||
|
|||||||
43
README.md
43
README.md
@ -1,6 +1,6 @@
|
|||||||
# DOLIBARR ERP & CRM
|
# DOLIBARR ERP & CRM
|
||||||
|
|
||||||

|

|
||||||
[](https://houndci.com)
|
[](https://houndci.com)
|
||||||
|
|
||||||
|6|7|8|9|develop|
|
|6|7|8|9|develop|
|
||||||
@ -29,27 +29,6 @@ Other licenses apply for some included dependencies. See [COPYRIGHT](https://git
|
|||||||
|
|
||||||
## INSTALLING
|
## INSTALLING
|
||||||
|
|
||||||
### Download
|
|
||||||
|
|
||||||
Releases can be downloaded from [official website](https://www.dolibarr.org/).
|
|
||||||
|
|
||||||
### Install from composer
|
|
||||||
|
|
||||||
If you do not already have Composer installed, you may do so by following the instructions at [getcomposer.org](https://getcomposer.org/). On Linux and macOS, you may run the following commands:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
curl -sS https://getcomposer.org/installer | php
|
|
||||||
mv composer.phar /usr/local/bin/composer
|
|
||||||
```
|
|
||||||
|
|
||||||
On Windows, you can download and run https://getcomposer.org/Composer-Setup.exe
|
|
||||||
|
|
||||||
You can then create a new project
|
|
||||||
|
|
||||||
```bash
|
|
||||||
composer create-project dolibarr/dolibarr erp
|
|
||||||
```
|
|
||||||
|
|
||||||
### Simple setup
|
### Simple setup
|
||||||
|
|
||||||
If you have low technical skills and you're looking to install Dolibarr ERP/CRM in just a few clicks, you can use one of the packaged versions:
|
If you have low technical skills and you're looking to install Dolibarr ERP/CRM in just a few clicks, you can use one of the packaged versions:
|
||||||
@ -58,16 +37,23 @@ If you have low technical skills and you're looking to install Dolibarr ERP/CRM
|
|||||||
- DoliDeb for Debian or Ubuntu
|
- DoliDeb for Debian or Ubuntu
|
||||||
- DoliRpm for Redhat, Fedora, OpenSuse, Mandriva or Mageia
|
- DoliRpm for Redhat, Fedora, OpenSuse, Mandriva or Mageia
|
||||||
|
|
||||||
|
Releases can be downloaded from [official website](https://www.dolibarr.org/).
|
||||||
|
|
||||||
### Advanced setup
|
### Advanced setup
|
||||||
|
|
||||||
You can use a Web server and a supported database (MariaDB, MySQL or PostgreSQL) to install the standard version.
|
You can use a Web server and a supported database (MariaDB, MySQL or PostgreSQL) to install the standard version.
|
||||||
|
|
||||||
- Uncompress the downloaded archive
|
- Uncompress the downloaded .zip archive to copy the "dolibarr/htdocs" directory and all its files inside your web server root or get the files directly from GitHub (recommanded if you known git):
|
||||||
- Copy the "dolibarr" directory and all its files inside your web server root or anywhere you'd like and set up your web server to use "*dolibarr/htdocs*" as root for a new web server virtual host (second choice need to be server administrator)
|
|
||||||
- Create an empty `htdocs/conf/conf.php` file and set permissions for your web server user (*write* permissions will be removed once install is finished)
|
git clone https://github.com/dolibarr/dolibarr -b x.y (where x.y is main version like 3.6, 9.0, ...)
|
||||||
|
|
||||||
|
- Set up your web server to use "*dolibarr/htdocs*" as root if your web server does not have an already defined directory to point to.
|
||||||
|
|
||||||
|
- Create an empty `htdocs/conf/conf.php` file and set *write* permissions for your web server user (*write* permission will be removed once install is finished)
|
||||||
|
|
||||||
- From your browser, go to the dolibarr "install/" page
|
- From your browser, go to the dolibarr "install/" page
|
||||||
|
|
||||||
The URL will depends on choices made in the first step:
|
The URL will depends on how you web setup was setup to point to your dolibarr installation. It may looks like:
|
||||||
|
|
||||||
http://localhost/dolibarr/htdocs/install/
|
http://localhost/dolibarr/htdocs/install/
|
||||||
|
|
||||||
@ -81,6 +67,11 @@ You can use a Web server and a supported database (MariaDB, MySQL or PostgreSQL)
|
|||||||
|
|
||||||
- Follow the installer instructions
|
- Follow the installer instructions
|
||||||
|
|
||||||
|
### Saas/Cloud setup
|
||||||
|
|
||||||
|
If you don't have time to install it yourself, you can try some commercial 'ready to use' Cloud offers (See https://saas.dolibarr.org). However, this third solution is not free.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## UPGRADING
|
## UPGRADING
|
||||||
|
|
||||||
|
|||||||
13
build/README
13
build/README
@ -16,17 +16,19 @@ Note: Prerequisites to build tgz, debian, rpm package
|
|||||||
> apt-get install tar dpkg dpatch p7zip-full rpm zip
|
> apt-get install tar dpkg dpatch p7zip-full rpm zip
|
||||||
|
|
||||||
Note: Prerequisites to build autoexe DoliWamp package:
|
Note: Prerequisites to build autoexe DoliWamp package:
|
||||||
|
> apt-get install wine q4wine
|
||||||
|
> Launch "wine cmd" to check a drive Z: pointing to / exists.
|
||||||
> Install InnoSetup
|
> Install InnoSetup
|
||||||
For example by running isetup-5.3.9.exe (http://www.jrsoftware.org)
|
For example by running isetup-5.3.9.exe (http://www.jrsoftware.org)
|
||||||
> Install WampServer into "C:\Program Files\Wamp"
|
> Install WampServer into "C:\Program Files\Wamp"
|
||||||
For example by running wampserver2.2e-php5.4.3-httpd-2.4.2-mysql5.5.24-x64.exe (http://www.wampserver.com)
|
For example by running wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-32b.exe (http://www.wampserver.com)
|
||||||
> Install WampServer addon to have versions: Apache2.2.11, Mysql5.0.45, Php5.3.0
|
> Install WampServer addon to have versions: Mysql5.0.45
|
||||||
For example by running WampServer2-APACHE2211.exe (http://www.wampserver.com)
|
|
||||||
For example by running WampServer2-MYSQL5045.exe (http://www.wampserver.com)
|
For example by running WampServer2-MYSQL5045.exe (http://www.wampserver.com)
|
||||||
For example by running WampServer2-PHP530.exe (http://www.wampserver.com)
|
|
||||||
> To build from Windows (running from makepack-dolibarr.pl script is however
|
> To build from Windows (running from makepack-dolibarr.pl script is however
|
||||||
recommanded), open file build/exe/doliwamp.iss and click on button "Compile".
|
recommanded), open file build/exe/doliwamp.iss and click on button "Compile".
|
||||||
The .exe file will be build into directory build.
|
The .exe file will be build into directory build.
|
||||||
|
> Add path to ISCC into PATH windows var:
|
||||||
|
Launch wine cmd, then regedit and add entry int HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment\PATH
|
||||||
|
|
||||||
- To build a theme package, launch the script
|
- To build a theme package, launch the script
|
||||||
> perl makepack-dolibarrtheme.pl
|
> perl makepack-dolibarrtheme.pl
|
||||||
@ -46,9 +48,6 @@ generated packages will not contains this "build" directory.
|
|||||||
|
|
||||||
We can find in "build", following sub-directories:
|
We can find in "build", following sub-directories:
|
||||||
|
|
||||||
* aps:
|
|
||||||
To build APS package.
|
|
||||||
|
|
||||||
* debian:
|
* debian:
|
||||||
To build Debian package.
|
To build Debian package.
|
||||||
|
|
||||||
|
|||||||
@ -42,7 +42,7 @@ src="https://www.facebook.com/tr?id=1998533953704960&ev=PageView&noscript=1"
|
|||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td><div id="projectname">$projectname</div> - <span id="projectnumber">$projectnumber</span></td>
|
<td><div id="projectname">$projectname</div> - <span id="projectnumber">$projectnumber</span></td>
|
||||||
<td align="right"><!-- banner start -->
|
<td class="right"><!-- banner start -->
|
||||||
<table cellpadding="0" cellspacing="0" class="moduletablemybanner">
|
<table cellpadding="0" cellspacing="0" class="moduletablemybanner">
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
|
|||||||
@ -11,9 +11,9 @@ LaunchProgram=Launch %1
|
|||||||
AssocFileExtension=&Associate %1 with the %2 file extension
|
AssocFileExtension=&Associate %1 with the %2 file extension
|
||||||
AssocingFileExtension=Associating %1 with the %2 file extension...
|
AssocingFileExtension=Associating %1 with the %2 file extension...
|
||||||
|
|
||||||
YouWillInstallDoliWamp=You will install or upgrade DoliWamp (Apache+Mysql+PHP+Dolibarr) on your computer.
|
YouWillInstallDoliWamp=You will install or upgrade DoliWamp (so Dolibarr + all required third party softwares like Apache, Mysql and PHP) on your computer.
|
||||||
ThisAssistantInstallOrUpgrade=This assistant installs or upgrades Dolibarr ERP-CRM and all required third party softwares (Apache, Mysql and PHP) optimized for a Dolibarr usage.
|
ThisAssistantInstallOrUpgrade=WARNING: Using an ERP CRM installed on a local computer can be dangerous: if your computer break down, you can lose all your data. Do this if you are ready to manage backup yourself seriously. If not, use an installation in Saas instead (see https://saas.dolibarr.org).
|
||||||
IfYouHaveTechnicalKnowledge=If you are looking for a hosted version in the Cloud, you should look at https://saas.dolibarr.org. If you have technical knowledge and want to manage your Apache, Mysql and PHP yourself, you should not use this assistant and make a manual installation of Dolibarr on your existing Apache, Mysql and PHP installation.
|
IfYouHaveTechnicalKnowledge=Moreover, if you have technical knowledges and want to manage your Apache, Mysql and PHP yourself, you should not use this assistant and make a manual installation of Dolibarr on your existing server with Apache, Mysql and PHP.
|
||||||
ButIfYouLook=But if you look for an automatic setup on your local computer, you''re on the good way...
|
ButIfYouLook=But if you look for an automatic setup on your local computer, you''re on the good way...
|
||||||
DoYouWantToStart=Do you want to start installation/upgrade process ?
|
DoYouWantToStart=Do you want to start installation/upgrade process ?
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ PortAlreadyInUse=Port %1 seems to be already in use. You should cancel to go bac
|
|||||||
|
|
||||||
FirefoxDetected=Firefox has been detected on your computer. Would you like to use it as the default browser for Dolibarr ?
|
FirefoxDetected=Firefox has been detected on your computer. Would you like to use it as the default browser for Dolibarr ?
|
||||||
ChromeDetected=Chrome has been detected on your computer. Would you like to use it as the default browser for Dolibarr ?
|
ChromeDetected=Chrome has been detected on your computer. Would you like to use it as the default browser for Dolibarr ?
|
||||||
ChooseDefaultBrowser=Please choose your default browser. If you are not sure, just click Open :
|
ChooseDefaultBrowser=Please choose your default browser (iexplore.exe, firefox.exe, chrome.exe, MicrosoftEdge.exe...). If you are not sure, just click Open :
|
||||||
|
|
||||||
LaunchNow=Launch Dolibarr now
|
LaunchNow=Launch Dolibarr now
|
||||||
|
|
||||||
@ -43,5 +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.
|
DLLMissing=Your Windows installation is missing The "Micrsoft Visual C++ Redistributable for Visual Studio 2012" component. Please install the 32-bit version (vcredist_x86.exe) first (you can find it at https://www.microsoft.com/en-us/download/) and restart DoliWamp installation/upgrade after.
|
||||||
ContinueAnyway=Continue anyway (install process may fails without this prerequisite)
|
ContinueAnyway=Continue anyway (install process may fails without this prerequisite)
|
||||||
|
|||||||
@ -11,10 +11,10 @@ LaunchProgram=Ex
|
|||||||
AssocFileExtension=&Associer %1 avec l'extension de fichier %2
|
AssocFileExtension=&Associer %1 avec l'extension de fichier %2
|
||||||
AssocingFileExtension=Associe %1 avec l'extension de fichier %2...
|
AssocingFileExtension=Associe %1 avec l'extension de fichier %2...
|
||||||
|
|
||||||
YouWillInstallDoliWamp=Vous allez installer ou mettre à jour DoliWamp (Apache+Mysql+PHP+Dolibarr) sur votre ordinateur.
|
YouWillInstallDoliWamp=Vous allez installer ou mettre à jour DoliWamp sur votre ordinateur (donc Dolibarr + tous ses composants prérequis comme Apache, Mysql et PHP).
|
||||||
ThisAssistantInstallOrUpgrade=Cet assistant installe ou met à jour Dolibarr ERP-CRM et tous ses composants prérequis (Apache, Mysql et PHP) optimisés pour une utilisation de Dolibarr.
|
ThisAssistantInstallOrUpgrade=AVERTISSEMENT: L'utilisation d'un ERP CRM installé sur un ordinateur local peut être dangereuse: si votre ordinateur tombe en panne, vous pouvez perdre toutes vos données. Faites-le si vous êtes prêt à gérer les sauvegardes vous-même sérieusement. Sinon, utilisez plutôt une installation en Saas (voir https://saas.dolibarr.org).
|
||||||
IfYouHaveTechnicalKnowledge=Si vous cherchez un hébergement dans le Cloud, aller voir sur https://saas.dolibarr.org. Si vous avez des compétences techniques et voulez gérer vous même Apache, Mysql et PHP, vous ne devriez pas utiliser cet assistant mais faire plutôt une installation manuelle de Dolibarr sur votre socle Apache, Mysql et PHP existant.
|
IfYouHaveTechnicalKnowledge=De plus, si vous avez des compétences techniques et envisagez de partager votre Apache, Mysql et PHP avec d''autres applications que Dolibarr, vous ne devriez pas utiliser cet assistant mais faire plutôt une installation manuelle de Dolibarr sur un serveur existant équipé de Apache, Mysql et PHP.
|
||||||
ButIfYouLook=Mais si vous recherchez une installation automatisée locale sur votre ordinateur, clé en main, vous êtes sur la bonne voie...
|
ButIfYouLook=Mais si vous recherchez une installation clé en main automatisée sur une poste local, vous êtes sur la bonne voie...
|
||||||
DoYouWantToStart=Voulez-vous démarrer le processus d'installation/mise à jour ?
|
DoYouWantToStart=Voulez-vous démarrer le processus d'installation/mise à jour ?
|
||||||
|
|
||||||
TechnicalParameters=Paramètres techniques
|
TechnicalParameters=Paramètres techniques
|
||||||
@ -33,7 +33,7 @@ PortAlreadyInUse=Le port %1 semble d
|
|||||||
|
|
||||||
FirefoxDetected=Firefox a été détecté sur votre ordinateur. Voulez-vous en faire votre navigateur par défaut pour Dolibarr ?
|
FirefoxDetected=Firefox a été détecté sur votre ordinateur. Voulez-vous en faire votre navigateur par défaut pour Dolibarr ?
|
||||||
ChromeDetected=Chrome a été détecté sur votre ordinateur. Voulez-vous en faire votre navigateur par défaut pour Dolibarr ?
|
ChromeDetected=Chrome a été détecté sur votre ordinateur. Voulez-vous en faire votre navigateur par défaut pour Dolibarr ?
|
||||||
ChooseDefaultBrowser=Merci de choisir votre navigateur par défaut. Si vous n'êtes pas sûr, cliquez simplement sur Ouvrir :
|
ChooseDefaultBrowser=Merci de choisir votre navigateur par défaut (iexplore.exe, firefox.exe, chrome.exe, MicrosoftEdge.exe...). Si vous n'êtes pas sûr, cliquez simplement sur Ouvrir :
|
||||||
|
|
||||||
LaunchNow=Lancer Dolibarr maintenant
|
LaunchNow=Lancer Dolibarr maintenant
|
||||||
|
|
||||||
@ -44,3 +44,5 @@ DoliWampWillStartApacheMysql=L'installeur DoliWamp va maintenant d
|
|||||||
OldVersionFoundAndMoveInNew=Une ancienne version de base a été trouvée et déplacée pour fonctionner avec la nouvelle version de Dolibarr.
|
OldVersionFoundAndMoveInNew=Une ancienne version de base a été trouvée et déplacée pour fonctionner avec la nouvelle version de Dolibarr.
|
||||||
OldVersionFoundButFailedToMoveInNew=Une ancienne version de base a été trouvée mais ne peut être déplacée pour être utilisée avec la nouvelle version de Dolibarr.
|
OldVersionFoundButFailedToMoveInNew=Une ancienne version de base a été trouvée mais ne peut être déplacée pour être utilisée avec la nouvelle version de Dolibarr.
|
||||||
|
|
||||||
|
DLLMissing=L'installation de votre Windows est incomplète. Il manque le composant "Micrsoft Visual C++ Redistributable for Visual Studio 2012". Installer la version 32-bit (vcredist_x86.exe) d'abord (vous pourrez le trouver à https://www.microsoft.com/fr-fr/download/) puis relancer l'installation de DoliWamp après.
|
||||||
|
ContinueAnyway=Continuer malgré tout (le process d'installaton échouera)
|
||||||
|
|||||||
@ -5,4 +5,4 @@ DOLIWAMP Package tools
|
|||||||
|
|
||||||
This directory contains files used by makepack-dolibarr.pl
|
This directory contains files used by makepack-dolibarr.pl
|
||||||
script to build the all-in-on .EXE package DoliWamp, ready
|
script to build the all-in-on .EXE package DoliWamp, ready
|
||||||
to be distributedt (for Windows).
|
to be distributed (for Windows).
|
||||||
@ -32,7 +32,7 @@ AppPublisherURL=https://www.nltechno.com
|
|||||||
AppSupportURL=https://www.dolibarr.org
|
AppSupportURL=https://www.dolibarr.org
|
||||||
AppUpdatesURL=https://www.dolibarr.org
|
AppUpdatesURL=https://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-2018 Laurent Destailleur (NLTechno), Fabian Rodriguez (Le Goût du Libre)
|
AppCopyright=Copyright (C) 2008-2019 Laurent Destailleur (NLTechno), Fabian Rodriguez (Le Goût du Libre)
|
||||||
DefaultDirName=c:\dolibarr
|
DefaultDirName=c:\dolibarr
|
||||||
DefaultGroupName=Dolibarr
|
DefaultGroupName=Dolibarr
|
||||||
;LicenseFile=COPYING
|
;LicenseFile=COPYING
|
||||||
|
|||||||
@ -527,10 +527,10 @@ a:hover {
|
|||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table width="100%"><tr><td align="left">
|
<table width="100%"><tr><td class="left">
|
||||||
<img src="index.php?img=pngLogo">
|
<img src="index.php?img=pngLogo">
|
||||||
</td>
|
</td>
|
||||||
<td align="right">
|
<td class="right">
|
||||||
<ul class="utility">
|
<ul class="utility">
|
||||||
<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>
|
||||||
|
|||||||
@ -3,4 +3,4 @@ REM Launch Dolibarr Admin center
|
|||||||
REM ----------------------------
|
REM ----------------------------
|
||||||
|
|
||||||
REM Go to admin center page
|
REM Go to admin center page
|
||||||
start "DoliWamp admin" "WAMPBROWSER" http://localhost:WAMPAPACHEPORT/
|
start "WAMPBROWSER" http://localhost:WAMPAPACHEPORT/
|
||||||
|
|||||||
@ -4,4 +4,4 @@ REM ---------------------------
|
|||||||
|
|
||||||
REM Go to help center page
|
REM Go to help center page
|
||||||
echo Please wait...
|
echo Please wait...
|
||||||
start "Dolibarr Help center" "WAMPBROWSER" http://localhost:WAMPAPACHEPORT/dolibarr/support/
|
start "WAMPBROWSER" http://localhost:WAMPAPACHEPORT/dolibarr/support/
|
||||||
|
|||||||
@ -3,7 +3,7 @@ REM Launch Dolibarr
|
|||||||
REM ---------------
|
REM ---------------
|
||||||
|
|
||||||
REM If no lock file, we call install process
|
REM If no lock file, we call install process
|
||||||
IF NOT EXIST dolibarr_documents\install.lock start "Dolibarr" "WAMPBROWSER" http://localhost:WAMPAPACHEPORT/dolibarr/install/
|
IF NOT EXIST dolibarr_documents\install.lock start "WAMPBROWSER" http://localhost:WAMPAPACHEPORT/dolibarr/install/
|
||||||
|
|
||||||
REM If lock file exists, we call home page
|
REM If lock file exists, we call home page
|
||||||
IF EXIST dolibarr_documents\install.lock start "Dolibarr" "WAMPBROWSER" http://localhost:WAMPAPACHEPORT/dolibarr/
|
IF EXIST dolibarr_documents\install.lock start "WAMPBROWSER" http://localhost:WAMPAPACHEPORT/dolibarr/
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
* \brief This script create a xml checksum file
|
* \brief This script create a xml checksum file
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Do not create database handler $db
|
if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1'); // Do not create database handler $db
|
||||||
|
|
||||||
$sapi_type = php_sapi_name();
|
$sapi_type = php_sapi_name();
|
||||||
$script_file = basename(__FILE__);
|
$script_file = basename(__FILE__);
|
||||||
@ -45,8 +45,7 @@ require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php";
|
|||||||
$includecustom=0;
|
$includecustom=0;
|
||||||
$includeconstants=array();
|
$includeconstants=array();
|
||||||
|
|
||||||
if (empty($argv[1]))
|
if (empty($argv[1])) {
|
||||||
{
|
|
||||||
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
||||||
print "Example: ".$script_file." release=6.0.0 includecustom=1 includeconstant=FR:INVOICE_CAN_ALWAYS_BE_REMOVED:0 includeconstant=all:MAILING_NO_USING_PHPMAIL:1\n";
|
print "Example: ".$script_file." release=6.0.0 includecustom=1 includeconstant=FR:INVOICE_CAN_ALWAYS_BE_REMOVED:0 includeconstant=all:MAILING_NO_USING_PHPMAIL:1\n";
|
||||||
exit -1;
|
exit -1;
|
||||||
@ -54,14 +53,11 @@ if (empty($argv[1]))
|
|||||||
parse_str($argv[1]);
|
parse_str($argv[1]);
|
||||||
|
|
||||||
$i=0;
|
$i=0;
|
||||||
while ($i < $argc)
|
while ($i < $argc) {
|
||||||
{
|
|
||||||
if (! empty($argv[$i])) parse_str($argv[$i]);
|
if (! empty($argv[$i])) parse_str($argv[$i]);
|
||||||
if (preg_match('/includeconstant=/',$argv[$i]))
|
if (preg_match('/includeconstant=/', $argv[$i])) {
|
||||||
{
|
|
||||||
$tmp=explode(':', $includeconstant, 3);
|
$tmp=explode(':', $includeconstant, 3);
|
||||||
if (count($tmp) != 3)
|
if (count($tmp) != 3) {
|
||||||
{
|
|
||||||
print "Error: Bad parameter includeconstant ".$includeconstant."\n";
|
print "Error: Bad parameter includeconstant ".$includeconstant."\n";
|
||||||
exit -1;
|
exit -1;
|
||||||
}
|
}
|
||||||
@ -70,50 +66,39 @@ while ($i < $argc)
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($release))
|
if (empty($release)) {
|
||||||
{
|
print "Error: Missing release paramater\n";
|
||||||
print "Error: Missing release paramater\n";
|
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
||||||
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
exit -1;
|
||||||
exit -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$savrelease = $release;
|
$savrelease = $release;
|
||||||
|
|
||||||
// If release is auto, we take current version
|
// If release is auto, we take current version
|
||||||
$tmpver=explode('-', $release, 2);
|
$tmpver=explode('-', $release, 2);
|
||||||
if ($tmpver[0] == 'auto' || $tmpver[0] == 'autostable')
|
if ($tmpver[0] == 'auto' || $tmpver[0] == 'autostable') {
|
||||||
{
|
$release=DOL_VERSION;
|
||||||
$release=DOL_VERSION;
|
if ($tmpver[1] && $tmpver[0] == 'auto') $release.='-'.$tmpver[1];
|
||||||
if ($tmpver[1] && $tmpver[0] == 'auto') $release.='-'.$tmpver[1];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($includecustom))
|
if (empty($includecustom)) {
|
||||||
{
|
$tmpverbis=explode('-', $release, 2);
|
||||||
$tmpverbis=explode('-', $release, 2);
|
if (empty($tmpverbis[1]) || $tmpver[0] == 'autostable') {
|
||||||
if (empty($tmpverbis[1]) || $tmpver[0] == 'autostable')
|
if (DOL_VERSION != $tmpverbis[0] && $savrelease != 'auto') {
|
||||||
{
|
print 'Error: When parameter "includecustom" is not set and there is no suffix in release parameter, version declared into filefunc.in.php ('.DOL_VERSION.') must be exact same value than "release" parameter ('.$tmpverbis[0].')'."\n";
|
||||||
if (DOL_VERSION != $tmpverbis[0] && $savrelease != 'auto')
|
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
||||||
{
|
exit -1;
|
||||||
print 'Error: When parameter "includecustom" is not set and there is no suffix in release parameter, version declared into filefunc.in.php ('.DOL_VERSION.') must be exact same value than "release" parameter ('.$tmpverbis[0].')'."\n";
|
}
|
||||||
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
} else {
|
||||||
exit -1;
|
$tmpverter=explode('-', DOL_VERSION, 2);
|
||||||
}
|
if ($tmpverter[0] != $tmpverbis[0]) {
|
||||||
}
|
print 'Error: When parameter "includecustom" is not set, version declared into filefunc.in.php ('.DOL_VERSION.') must have value without prefix ('.$tmpverter[0].') that is exact same value than "release" parameter ('.$tmpverbis[0].')'."\n";
|
||||||
else
|
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
||||||
{
|
exit -1;
|
||||||
$tmpverter=explode('-', DOL_VERSION, 2);
|
}
|
||||||
if ($tmpverter[0] != $tmpverbis[0])
|
}
|
||||||
{
|
} else {
|
||||||
print 'Error: When parameter "includecustom" is not set, version declared into filefunc.in.php ('.DOL_VERSION.') must have value without prefix ('.$tmpverter[0].') that is exact same value than "release" parameter ('.$tmpverbis[0].')'."\n";
|
if (! preg_match('/'.preg_quote(DOL_VERSION, '/').'-/', $release)) {
|
||||||
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
|
||||||
exit -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (! preg_match('/'.preg_quote(DOL_VERSION,'/').'-/',$release))
|
|
||||||
{
|
|
||||||
print 'Error: When parameter "includecustom" is set, version declared into filefunc.inc.php ('.DOL_VERSION.') must be used with a suffix into "release" parameter (ex: '.DOL_VERSION.'-mydistrib).'."\n";
|
print 'Error: When parameter "includecustom" is set, version declared into filefunc.inc.php ('.DOL_VERSION.') must be used with a suffix into "release" parameter (ex: '.DOL_VERSION.'-mydistrib).'."\n";
|
||||||
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
||||||
exit -1;
|
exit -1;
|
||||||
@ -123,10 +108,8 @@ else
|
|||||||
print "Release : ".$release."\n";
|
print "Release : ".$release."\n";
|
||||||
print "Include custom in signature : ".$includecustom."\n";
|
print "Include custom in signature : ".$includecustom."\n";
|
||||||
print "Include constants in signature : ";
|
print "Include constants in signature : ";
|
||||||
foreach ($includeconstants as $countrycode => $tmp)
|
foreach ($includeconstants as $countrycode => $tmp) {
|
||||||
{
|
foreach($tmp as $constname => $constvalue) {
|
||||||
foreach($tmp as $constname => $constvalue)
|
|
||||||
{
|
|
||||||
print $constname.'='.$constvalue." ";
|
print $constname.'='.$constvalue." ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -135,20 +118,18 @@ print "\n";
|
|||||||
//$outputfile=dirname(__FILE__).'/../htdocs/install/filelist-'.$release.'.xml';
|
//$outputfile=dirname(__FILE__).'/../htdocs/install/filelist-'.$release.'.xml';
|
||||||
$outputdir=dirname(dirname(__FILE__)).'/htdocs/install';
|
$outputdir=dirname(dirname(__FILE__)).'/htdocs/install';
|
||||||
print 'Delete current files '.$outputdir.'/filelist*.xml'."\n";
|
print 'Delete current files '.$outputdir.'/filelist*.xml'."\n";
|
||||||
dol_delete_file($outputdir.'/filelist*.xml',0,1,1);
|
dol_delete_file($outputdir.'/filelist*.xml', 0, 1, 1);
|
||||||
|
|
||||||
$checksumconcat=array();
|
$checksumconcat=array();
|
||||||
|
|
||||||
$outputfile=$outputdir.'/filelist-'.$release.'.xml';
|
$outputfile=$outputdir.'/filelist-'.$release.'.xml';
|
||||||
$fp = fopen($outputfile,'w');
|
$fp = fopen($outputfile, 'w');
|
||||||
fputs($fp, '<?xml version="1.0" encoding="UTF-8" ?>'."\n");
|
fputs($fp, '<?xml version="1.0" encoding="UTF-8" ?>'."\n");
|
||||||
fputs($fp, '<checksum_list version="'.$release.'" date="'.dol_print_date(dol_now(), 'dayhourrfc').'" generator="'.$script_file.'">'."\n");
|
fputs($fp, '<checksum_list version="'.$release.'" date="'.dol_print_date(dol_now(), 'dayhourrfc').'" generator="'.$script_file.'">'."\n");
|
||||||
|
|
||||||
foreach ($includeconstants as $countrycode => $tmp)
|
foreach ($includeconstants as $countrycode => $tmp) {
|
||||||
{
|
|
||||||
fputs($fp, '<dolibarr_constants country="'.$countrycode.'">'."\n");
|
fputs($fp, '<dolibarr_constants country="'.$countrycode.'">'."\n");
|
||||||
foreach($tmp as $constname => $constvalue)
|
foreach($tmp as $constname => $constvalue) {
|
||||||
{
|
|
||||||
$valueforchecksum=(empty($constvalue)?'0':$constvalue);
|
$valueforchecksum=(empty($constvalue)?'0':$constvalue);
|
||||||
$checksumconcat[]=$valueforchecksum;
|
$checksumconcat[]=$valueforchecksum;
|
||||||
fputs($fp, ' <constant name="'.$constname.'">'.$valueforchecksum.'</constant>'."\n");
|
fputs($fp, ' <constant name="'.$constname.'">'.$valueforchecksum.'</constant>'."\n");
|
||||||
@ -169,10 +150,10 @@ $files = dol_dir_list(DOL_DOCUMENT_ROOT, 'files', 1, $regextoinclude, $regextoex
|
|||||||
$dir='';
|
$dir='';
|
||||||
$needtoclose=0;
|
$needtoclose=0;
|
||||||
foreach ($files as $filetmp) {
|
foreach ($files as $filetmp) {
|
||||||
$file = $filetmp['fullname'];
|
$file = $filetmp['fullname'];
|
||||||
//$newdir = str_replace(dirname(__FILE__).'/../htdocs', '', dirname($file));
|
//$newdir = str_replace(dirname(__FILE__).'/../htdocs', '', dirname($file));
|
||||||
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
|
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
|
||||||
if ($newdir!=$dir) {
|
if ($newdir!=$dir) {
|
||||||
if ($needtoclose)
|
if ($needtoclose)
|
||||||
fputs($fp, ' </dir>'."\n");
|
fputs($fp, ' </dir>'."\n");
|
||||||
fputs($fp, ' <dir name="'.$newdir.'" >'."\n");
|
fputs($fp, ' <dir name="'.$newdir.'" >'."\n");
|
||||||
@ -191,7 +172,7 @@ fputs($fp, '</dolibarr_htdocs_dir>'."\n");
|
|||||||
asort($checksumconcat); // Sort list of checksum
|
asort($checksumconcat); // Sort list of checksum
|
||||||
//var_dump($checksumconcat);
|
//var_dump($checksumconcat);
|
||||||
fputs($fp, '<dolibarr_htdocs_dir_checksum>'."\n");
|
fputs($fp, '<dolibarr_htdocs_dir_checksum>'."\n");
|
||||||
fputs($fp, md5(join(',',$checksumconcat))."\n");
|
fputs($fp, md5(join(',', $checksumconcat))."\n");
|
||||||
fputs($fp, '</dolibarr_htdocs_dir_checksum>'."\n");
|
fputs($fp, '</dolibarr_htdocs_dir_checksum>'."\n");
|
||||||
|
|
||||||
|
|
||||||
@ -211,10 +192,10 @@ $files = dol_dir_list(dirname(__FILE__).'/../scripts/', 'files', 1, $regextoincl
|
|||||||
$dir='';
|
$dir='';
|
||||||
$needtoclose=0;
|
$needtoclose=0;
|
||||||
foreach ($files as $filetmp) {
|
foreach ($files as $filetmp) {
|
||||||
$file = $filetmp['fullname'];
|
$file = $filetmp['fullname'];
|
||||||
//$newdir = str_replace(dirname(__FILE__).'/../scripts', '', dirname($file));
|
//$newdir = str_replace(dirname(__FILE__).'/../scripts', '', dirname($file));
|
||||||
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
|
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
|
||||||
$newdir = str_replace(dirname(__FILE__).'/../scripts', '', dirname($file));
|
$newdir = str_replace(dirname(__FILE__).'/../scripts', '', dirname($file));
|
||||||
if ($newdir!=$dir) {
|
if ($newdir!=$dir) {
|
||||||
if ($needtoclose)
|
if ($needtoclose)
|
||||||
fputs($fp, ' </dir>'."\n");
|
fputs($fp, ' </dir>'."\n");
|
||||||
@ -233,7 +214,7 @@ fputs($fp, '</dolibarr_script_dir>'."\n");
|
|||||||
|
|
||||||
asort($checksumconcat); // Sort list of checksum
|
asort($checksumconcat); // Sort list of checksum
|
||||||
fputs($fp, '<dolibarr_script_dir_checksum>'."\n");
|
fputs($fp, '<dolibarr_script_dir_checksum>'."\n");
|
||||||
fputs($fp, md5(join(',',$checksumconcat))."\n");
|
fputs($fp, md5(join(',', $checksumconcat))."\n");
|
||||||
fputs($fp, '</dolibarr_script_dir_checksum>'."\n");
|
fputs($fp, '</dolibarr_script_dir_checksum>'."\n");
|
||||||
|
|
||||||
fputs($fp, '</checksum_list>'."\n");
|
fputs($fp, '</checksum_list>'."\n");
|
||||||
|
|||||||
@ -36,7 +36,7 @@ $PUBLISHBETARC="dolibarr\@vmprod1.dolibarr.org:/home/dolibarr/dolibarr.org/httpd
|
|||||||
"RPM_FEDORA"=>"rpmbuild",
|
"RPM_FEDORA"=>"rpmbuild",
|
||||||
"RPM_MANDRIVA"=>"rpmbuild",
|
"RPM_MANDRIVA"=>"rpmbuild",
|
||||||
"RPM_OPENSUSE"=>"rpmbuild",
|
"RPM_OPENSUSE"=>"rpmbuild",
|
||||||
"DEB"=>"dpkg",
|
"DEB"=>"dpkg dpatch",
|
||||||
"FLATPACK"=>"flatpack",
|
"FLATPACK"=>"flatpack",
|
||||||
"EXEDOLIWAMP"=>"ISCC.exe",
|
"EXEDOLIWAMP"=>"ISCC.exe",
|
||||||
"SNAPSHOT"=>"tar"
|
"SNAPSHOT"=>"tar"
|
||||||
@ -129,7 +129,7 @@ $BUILDROOT="$TEMP/buildroot";
|
|||||||
$result = open( IN, "<" . $SOURCE . "/htdocs/filefunc.inc.php" );
|
$result = open( IN, "<" . $SOURCE . "/htdocs/filefunc.inc.php" );
|
||||||
if ( !$result ) { die "Error: Can't open descriptor file " . $SOURCE . "/htdocs/filefunc.inc.php\n"; }
|
if ( !$result ) { die "Error: Can't open descriptor file " . $SOURCE . "/htdocs/filefunc.inc.php\n"; }
|
||||||
while (<IN>) {
|
while (<IN>) {
|
||||||
if ( $_ =~ /define\('DOL_VERSION','([\d\.a-z\-]+)'\)/ ) { $PROJVERSION = $1; break; }
|
if ( $_ =~ /define\('DOL_VERSION',\s*'([\d\.a-z\-]+)'\)/ ) { $PROJVERSION = $1; break; }
|
||||||
}
|
}
|
||||||
close IN;
|
close IN;
|
||||||
($MAJOR,$MINOR,$BUILD)=split(/\./,$PROJVERSION,3);
|
($MAJOR,$MINOR,$BUILD)=split(/\./,$PROJVERSION,3);
|
||||||
@ -357,16 +357,16 @@ if ($nboftargetok) {
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print "ChangeLog for $MAJOR.$MINOR\.$BUILD was found into '$SOURCE/ChangeLog. But you can regenerate it with command:'\n";
|
print "ChangeLog for $MAJOR.$MINOR\.$BUILD was found into '$SOURCE/ChangeLog'. But you can regenerate it with command:\n";
|
||||||
}
|
}
|
||||||
if (! $BUILD || $BUILD eq '0-rc') # For a major version
|
if (! $BUILD || $BUILD eq '0-rc') # For a major version
|
||||||
{
|
{
|
||||||
print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log `git rev-list --boundary '.$MAJOR.'.'.$MINOR.'..origin/develop | grep ^- | cut -c2- | head -n 1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e \'^FIX\|NEW\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa';
|
print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log `git rev-list --boundary '.$MAJOR.'.'.$MINOR.'..origin/develop | grep ^- | cut -c2- | head -n 1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e \'^FIX\|NEW\|CLOSE\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\' | sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa';
|
||||||
}
|
}
|
||||||
else # For a maintenance release
|
else # For a maintenance release
|
||||||
{
|
{
|
||||||
#print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log '.$MAJOR.'.'.$MINOR.'.'.($BUILD-1).'.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e \'^FIX\|NEW\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa';
|
#print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log '.$MAJOR.'.'.$MINOR.'.'.($BUILD-1).'.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e \'^FIX\|NEW\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\'| sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa';
|
||||||
print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log '.$MAJOR.'.'.$MINOR.'.'.($BUILD-1).'.. | grep -v "Merge branch" | grep -v "Merge pull" | grep "^ " | sed -e "s/^[0-9a-z]* *//" | grep -e \'^FIX\|NEW\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa';
|
print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log '.$MAJOR.'.'.$MINOR.'.'.($BUILD-1).'.. | grep -v "Merge branch" | grep -v "Merge pull" | grep "^ " | sed -e "s/^[0-9a-z]* *//" | grep -e \'^FIX\|NEW\|CLOSE\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\' | sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa';
|
||||||
|
|
||||||
}
|
}
|
||||||
print "\n";
|
print "\n";
|
||||||
@ -387,6 +387,15 @@ if ($nboftargetok) {
|
|||||||
#-----------------------
|
#-----------------------
|
||||||
if ($CHOOSEDTARGET{'-CHKSUM'})
|
if ($CHOOSEDTARGET{'-CHKSUM'})
|
||||||
{
|
{
|
||||||
|
$ret=`git ls-files . --exclude-standard --others`;
|
||||||
|
if ($ret)
|
||||||
|
{
|
||||||
|
print "Some files exists in source directory and are not indexed neither excluded in .gitignore.\n";
|
||||||
|
print $ret;
|
||||||
|
print "Canceled.\n";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
print 'Create xml check file with md5 checksum with command php '.$SOURCE.'/build/generate_filelist_xml.php release='.$MAJOR.'.'.$MINOR.'.'.$BUILD."\n";
|
print 'Create xml check file with md5 checksum with command php '.$SOURCE.'/build/generate_filelist_xml.php release='.$MAJOR.'.'.$MINOR.'.'.$BUILD."\n";
|
||||||
$ret=`php $SOURCE/build/generate_filelist_xml.php release=$MAJOR.$MINOR.$BUILD`;
|
$ret=`php $SOURCE/build/generate_filelist_xml.php release=$MAJOR.$MINOR.$BUILD`;
|
||||||
print $ret."\n";
|
print $ret."\n";
|
||||||
@ -589,6 +598,8 @@ 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/sabre/sabre/*/tests`;
|
||||||
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/stripe/tests`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/stripe/LICENSE`;
|
$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-*`;
|
||||||
@ -991,7 +1002,7 @@ if ($nboftargetok) {
|
|||||||
$ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/mymoduleindex.php`;
|
$ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/mymoduleindex.php`;
|
||||||
$ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/myobject_card.php`;
|
$ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/myobject_card.php`;
|
||||||
$ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/myobject_list.php`;
|
$ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/myobject_list.php`;
|
||||||
$ret=`chmod -R 755 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/scripts/myobject.php`;
|
$ret=`chmod -R 755 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/scripts/mymodule.php`;
|
||||||
$cmd="find $BUILDROOT/$PROJECT.tmp/scripts -name '*.php' -type f -exec chmod 755 {} \\; ";
|
$cmd="find $BUILDROOT/$PROJECT.tmp/scripts -name '*.php' -type f -exec chmod 755 {} \\; ";
|
||||||
$ret=`$cmd`;
|
$ret=`$cmd`;
|
||||||
$cmd="find $BUILDROOT/$PROJECT.tmp/scripts -name '*.sh' -type f -exec chmod 755 {} \\; ";
|
$cmd="find $BUILDROOT/$PROJECT.tmp/scripts -name '*.sh' -type f -exec chmod 755 {} \\; ";
|
||||||
@ -1057,7 +1068,7 @@ if ($nboftargetok) {
|
|||||||
$ret=`cat "$SOURCE/build/exe/doliwamp/doliwamp.iss" | sed -e 's/__FILENAMEEXEDOLIWAMP__/$FILENAMEEXEDOLIWAMP/g' > "$SOURCE/build/exe/doliwamp/doliwamp.tmp.iss"`;
|
$ret=`cat "$SOURCE/build/exe/doliwamp/doliwamp.iss" | sed -e 's/__FILENAMEEXEDOLIWAMP__/$FILENAMEEXEDOLIWAMP/g' > "$SOURCE/build/exe/doliwamp/doliwamp.tmp.iss"`;
|
||||||
|
|
||||||
print "Compil exe $FILENAMEEXEDOLIWAMP.exe file from iss file \"$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.tmp.iss\"\n";
|
print "Compil exe $FILENAMEEXEDOLIWAMP.exe file from iss file \"$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.tmp.iss\"\n";
|
||||||
$cmd= "ISCC.exe \"Z:$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.tmp.iss\"";
|
$cmd= "wine ISCC.exe \"Z:$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.tmp.iss\"";
|
||||||
print "$cmd\n";
|
print "$cmd\n";
|
||||||
$ret= `$cmd`;
|
$ret= `$cmd`;
|
||||||
#print "$ret\n";
|
#print "$ret\n";
|
||||||
|
|||||||
@ -43,9 +43,9 @@ To generate a changelog of a maintenance version x.y.z, you can do "cd ~/git/dol
|
|||||||
- Run makepack-dolibarr.pl to generate all packages.
|
- Run makepack-dolibarr.pl to generate all packages.
|
||||||
|
|
||||||
- Check content of built packages.
|
- Check content of built packages.
|
||||||
- Move build files into www.dolibarr.org web site
|
|
||||||
(/home/dolibarr/wwwroot/files/stable).
|
|
||||||
|
|
||||||
|
- Run makepack-dolibarr.pl again with option to publish files on
|
||||||
|
dolibarr foundation server (Dir /home/dolibarr/wwwroot/files/stable on www.dolibarr.org).
|
||||||
- Run makepack-dolibarr.pl again with option to publish files on
|
- Run makepack-dolibarr.pl again with option to publish files on
|
||||||
sourceforge. This will also add official tag.
|
sourceforge. This will also add official tag.
|
||||||
- Edit symbolic links in directory "/home/dolibarr/wwwroot/files/stable/xxx"
|
- Edit symbolic links in directory "/home/dolibarr/wwwroot/files/stable/xxx"
|
||||||
|
|||||||
14
build/phpstan/bootstrap.php
Normal file
14
build/phpstan/bootstrap.php
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
// Example to use PHPStan
|
||||||
|
// cd git/dolibarr
|
||||||
|
// /usr/bin/php7.2 ../phpstan.phar -l1 analyze htdocs/societe/website.php --memory-limit 2G
|
||||||
|
|
||||||
|
// Defined some constants and load Dolibarr env to reduce PHPStan bootstrap that fails to load a lot of things.
|
||||||
|
define('DOL_DOCUMENT_ROOT', __DIR__ . '/../../htdocs');
|
||||||
|
define('DOL_DATA_ROOT', __DIR__ . '/../../documents');
|
||||||
|
define('DOL_URL_ROOT', '/');
|
||||||
|
|
||||||
|
// Load the main.inc.php file to have finctions llx_Header and llx_Footer defined
|
||||||
|
if (! defined("NOLOGIN")) define("NOLOGIN", '1');
|
||||||
|
global $conf, $langs, $user, $db;
|
||||||
|
include_once __DIR__ . '/../../htdocs/main.inc.php';
|
||||||
@ -165,6 +165,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/barcode
|
%_datadir/dolibarr/htdocs/barcode
|
||||||
%_datadir/dolibarr/htdocs/blockedlog
|
%_datadir/dolibarr/htdocs/blockedlog
|
||||||
%_datadir/dolibarr/htdocs/bookmarks
|
%_datadir/dolibarr/htdocs/bookmarks
|
||||||
|
%_datadir/dolibarr/htdocs/bom
|
||||||
%_datadir/dolibarr/htdocs/cashdesk
|
%_datadir/dolibarr/htdocs/cashdesk
|
||||||
%_datadir/dolibarr/htdocs/categories
|
%_datadir/dolibarr/htdocs/categories
|
||||||
%_datadir/dolibarr/htdocs/collab
|
%_datadir/dolibarr/htdocs/collab
|
||||||
@ -179,6 +180,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/custom
|
%_datadir/dolibarr/htdocs/custom
|
||||||
%_datadir/dolibarr/htdocs/datapolicy
|
%_datadir/dolibarr/htdocs/datapolicy
|
||||||
%_datadir/dolibarr/htdocs/dav
|
%_datadir/dolibarr/htdocs/dav
|
||||||
|
%_datadir/dolibarr/htdocs/debugbar
|
||||||
%_datadir/dolibarr/htdocs/don
|
%_datadir/dolibarr/htdocs/don
|
||||||
%_datadir/dolibarr/htdocs/ecm
|
%_datadir/dolibarr/htdocs/ecm
|
||||||
%_datadir/dolibarr/htdocs/emailcollector
|
%_datadir/dolibarr/htdocs/emailcollector
|
||||||
@ -200,6 +202,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/mailmanspip
|
%_datadir/dolibarr/htdocs/mailmanspip
|
||||||
%_datadir/dolibarr/htdocs/margin
|
%_datadir/dolibarr/htdocs/margin
|
||||||
%_datadir/dolibarr/htdocs/modulebuilder
|
%_datadir/dolibarr/htdocs/modulebuilder
|
||||||
|
%_datadir/dolibarr/htdocs/mrp
|
||||||
%_datadir/dolibarr/htdocs/multicurrency
|
%_datadir/dolibarr/htdocs/multicurrency
|
||||||
%_datadir/dolibarr/htdocs/opensurvey
|
%_datadir/dolibarr/htdocs/opensurvey
|
||||||
%_datadir/dolibarr/htdocs/paybox
|
%_datadir/dolibarr/htdocs/paybox
|
||||||
@ -208,6 +211,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/product
|
%_datadir/dolibarr/htdocs/product
|
||||||
%_datadir/dolibarr/htdocs/projet
|
%_datadir/dolibarr/htdocs/projet
|
||||||
%_datadir/dolibarr/htdocs/public
|
%_datadir/dolibarr/htdocs/public
|
||||||
|
%_datadir/dolibarr/htdocs/reception
|
||||||
%_datadir/dolibarr/htdocs/resource
|
%_datadir/dolibarr/htdocs/resource
|
||||||
%_datadir/dolibarr/htdocs/societe
|
%_datadir/dolibarr/htdocs/societe
|
||||||
%_datadir/dolibarr/htdocs/stripe
|
%_datadir/dolibarr/htdocs/stripe
|
||||||
|
|||||||
@ -245,6 +245,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/barcode
|
%_datadir/dolibarr/htdocs/barcode
|
||||||
%_datadir/dolibarr/htdocs/blockedlog
|
%_datadir/dolibarr/htdocs/blockedlog
|
||||||
%_datadir/dolibarr/htdocs/bookmarks
|
%_datadir/dolibarr/htdocs/bookmarks
|
||||||
|
%_datadir/dolibarr/htdocs/bom
|
||||||
%_datadir/dolibarr/htdocs/cashdesk
|
%_datadir/dolibarr/htdocs/cashdesk
|
||||||
%_datadir/dolibarr/htdocs/categories
|
%_datadir/dolibarr/htdocs/categories
|
||||||
%_datadir/dolibarr/htdocs/collab
|
%_datadir/dolibarr/htdocs/collab
|
||||||
@ -259,6 +260,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/custom
|
%_datadir/dolibarr/htdocs/custom
|
||||||
%_datadir/dolibarr/htdocs/datapolicy
|
%_datadir/dolibarr/htdocs/datapolicy
|
||||||
%_datadir/dolibarr/htdocs/dav
|
%_datadir/dolibarr/htdocs/dav
|
||||||
|
%_datadir/dolibarr/htdocs/debugbar
|
||||||
%_datadir/dolibarr/htdocs/don
|
%_datadir/dolibarr/htdocs/don
|
||||||
%_datadir/dolibarr/htdocs/ecm
|
%_datadir/dolibarr/htdocs/ecm
|
||||||
%_datadir/dolibarr/htdocs/emailcollector
|
%_datadir/dolibarr/htdocs/emailcollector
|
||||||
@ -280,6 +282,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/mailmanspip
|
%_datadir/dolibarr/htdocs/mailmanspip
|
||||||
%_datadir/dolibarr/htdocs/margin
|
%_datadir/dolibarr/htdocs/margin
|
||||||
%_datadir/dolibarr/htdocs/modulebuilder
|
%_datadir/dolibarr/htdocs/modulebuilder
|
||||||
|
%_datadir/dolibarr/htdocs/mrp
|
||||||
%_datadir/dolibarr/htdocs/multicurrency
|
%_datadir/dolibarr/htdocs/multicurrency
|
||||||
%_datadir/dolibarr/htdocs/opensurvey
|
%_datadir/dolibarr/htdocs/opensurvey
|
||||||
%_datadir/dolibarr/htdocs/paybox
|
%_datadir/dolibarr/htdocs/paybox
|
||||||
@ -288,6 +291,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/product
|
%_datadir/dolibarr/htdocs/product
|
||||||
%_datadir/dolibarr/htdocs/projet
|
%_datadir/dolibarr/htdocs/projet
|
||||||
%_datadir/dolibarr/htdocs/public
|
%_datadir/dolibarr/htdocs/public
|
||||||
|
%_datadir/dolibarr/htdocs/reception
|
||||||
%_datadir/dolibarr/htdocs/resource
|
%_datadir/dolibarr/htdocs/resource
|
||||||
%_datadir/dolibarr/htdocs/societe
|
%_datadir/dolibarr/htdocs/societe
|
||||||
%_datadir/dolibarr/htdocs/stripe
|
%_datadir/dolibarr/htdocs/stripe
|
||||||
|
|||||||
@ -162,6 +162,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/barcode
|
%_datadir/dolibarr/htdocs/barcode
|
||||||
%_datadir/dolibarr/htdocs/blockedlog
|
%_datadir/dolibarr/htdocs/blockedlog
|
||||||
%_datadir/dolibarr/htdocs/bookmarks
|
%_datadir/dolibarr/htdocs/bookmarks
|
||||||
|
%_datadir/dolibarr/htdocs/bom
|
||||||
%_datadir/dolibarr/htdocs/cashdesk
|
%_datadir/dolibarr/htdocs/cashdesk
|
||||||
%_datadir/dolibarr/htdocs/categories
|
%_datadir/dolibarr/htdocs/categories
|
||||||
%_datadir/dolibarr/htdocs/collab
|
%_datadir/dolibarr/htdocs/collab
|
||||||
@ -176,6 +177,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/custom
|
%_datadir/dolibarr/htdocs/custom
|
||||||
%_datadir/dolibarr/htdocs/datapolicy
|
%_datadir/dolibarr/htdocs/datapolicy
|
||||||
%_datadir/dolibarr/htdocs/dav
|
%_datadir/dolibarr/htdocs/dav
|
||||||
|
%_datadir/dolibarr/htdocs/debugbar
|
||||||
%_datadir/dolibarr/htdocs/don
|
%_datadir/dolibarr/htdocs/don
|
||||||
%_datadir/dolibarr/htdocs/ecm
|
%_datadir/dolibarr/htdocs/ecm
|
||||||
%_datadir/dolibarr/htdocs/emailcollector
|
%_datadir/dolibarr/htdocs/emailcollector
|
||||||
@ -197,6 +199,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/mailmanspip
|
%_datadir/dolibarr/htdocs/mailmanspip
|
||||||
%_datadir/dolibarr/htdocs/margin
|
%_datadir/dolibarr/htdocs/margin
|
||||||
%_datadir/dolibarr/htdocs/modulebuilder
|
%_datadir/dolibarr/htdocs/modulebuilder
|
||||||
|
%_datadir/dolibarr/htdocs/mrp
|
||||||
%_datadir/dolibarr/htdocs/multicurrency
|
%_datadir/dolibarr/htdocs/multicurrency
|
||||||
%_datadir/dolibarr/htdocs/opensurvey
|
%_datadir/dolibarr/htdocs/opensurvey
|
||||||
%_datadir/dolibarr/htdocs/paybox
|
%_datadir/dolibarr/htdocs/paybox
|
||||||
@ -205,6 +208,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/product
|
%_datadir/dolibarr/htdocs/product
|
||||||
%_datadir/dolibarr/htdocs/projet
|
%_datadir/dolibarr/htdocs/projet
|
||||||
%_datadir/dolibarr/htdocs/public
|
%_datadir/dolibarr/htdocs/public
|
||||||
|
%_datadir/dolibarr/htdocs/reception
|
||||||
%_datadir/dolibarr/htdocs/resource
|
%_datadir/dolibarr/htdocs/resource
|
||||||
%_datadir/dolibarr/htdocs/societe
|
%_datadir/dolibarr/htdocs/societe
|
||||||
%_datadir/dolibarr/htdocs/stripe
|
%_datadir/dolibarr/htdocs/stripe
|
||||||
|
|||||||
@ -173,6 +173,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/barcode
|
%_datadir/dolibarr/htdocs/barcode
|
||||||
%_datadir/dolibarr/htdocs/blockedlog
|
%_datadir/dolibarr/htdocs/blockedlog
|
||||||
%_datadir/dolibarr/htdocs/bookmarks
|
%_datadir/dolibarr/htdocs/bookmarks
|
||||||
|
%_datadir/dolibarr/htdocs/bom
|
||||||
%_datadir/dolibarr/htdocs/cashdesk
|
%_datadir/dolibarr/htdocs/cashdesk
|
||||||
%_datadir/dolibarr/htdocs/categories
|
%_datadir/dolibarr/htdocs/categories
|
||||||
%_datadir/dolibarr/htdocs/collab
|
%_datadir/dolibarr/htdocs/collab
|
||||||
@ -187,6 +188,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/custom
|
%_datadir/dolibarr/htdocs/custom
|
||||||
%_datadir/dolibarr/htdocs/datapolicy
|
%_datadir/dolibarr/htdocs/datapolicy
|
||||||
%_datadir/dolibarr/htdocs/dav
|
%_datadir/dolibarr/htdocs/dav
|
||||||
|
%_datadir/dolibarr/htdocs/debugbar
|
||||||
%_datadir/dolibarr/htdocs/don
|
%_datadir/dolibarr/htdocs/don
|
||||||
%_datadir/dolibarr/htdocs/ecm
|
%_datadir/dolibarr/htdocs/ecm
|
||||||
%_datadir/dolibarr/htdocs/emailcollector
|
%_datadir/dolibarr/htdocs/emailcollector
|
||||||
@ -208,6 +210,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/mailmanspip
|
%_datadir/dolibarr/htdocs/mailmanspip
|
||||||
%_datadir/dolibarr/htdocs/margin
|
%_datadir/dolibarr/htdocs/margin
|
||||||
%_datadir/dolibarr/htdocs/modulebuilder
|
%_datadir/dolibarr/htdocs/modulebuilder
|
||||||
|
%_datadir/dolibarr/htdocs/mrp
|
||||||
%_datadir/dolibarr/htdocs/multicurrency
|
%_datadir/dolibarr/htdocs/multicurrency
|
||||||
%_datadir/dolibarr/htdocs/opensurvey
|
%_datadir/dolibarr/htdocs/opensurvey
|
||||||
%_datadir/dolibarr/htdocs/paybox
|
%_datadir/dolibarr/htdocs/paybox
|
||||||
@ -216,6 +219,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/product
|
%_datadir/dolibarr/htdocs/product
|
||||||
%_datadir/dolibarr/htdocs/projet
|
%_datadir/dolibarr/htdocs/projet
|
||||||
%_datadir/dolibarr/htdocs/public
|
%_datadir/dolibarr/htdocs/public
|
||||||
|
%_datadir/dolibarr/htdocs/reception
|
||||||
%_datadir/dolibarr/htdocs/resource
|
%_datadir/dolibarr/htdocs/resource
|
||||||
%_datadir/dolibarr/htdocs/societe
|
%_datadir/dolibarr/htdocs/societe
|
||||||
%_datadir/dolibarr/htdocs/stripe
|
%_datadir/dolibarr/htdocs/stripe
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<VirtualHost *:80>
|
<VirtualHost *:80>
|
||||||
DocumentRoot %TRAVIS_BUILD_DIR%/htdocs
|
DocumentRoot %TRAVIS_BUILD_DIR%/htdocs
|
||||||
|
ErrorLog /var/log/apache2/travis_error_log
|
||||||
|
|
||||||
<Directory "%TRAVIS_BUILD_DIR%/htdocs/">
|
<Directory "%TRAVIS_BUILD_DIR%/htdocs/">
|
||||||
Options FollowSymLinks MultiViews ExecCGI
|
Options FollowSymLinks MultiViews ExecCGI
|
||||||
|
|||||||
118
composer.json
118
composer.json
@ -1,60 +1,62 @@
|
|||||||
{
|
{
|
||||||
"name": "dolibarr/dolibarr",
|
"name" : "dolibarr/dolibarr",
|
||||||
"type": "project",
|
"type" : "project",
|
||||||
"description": "Dolibarr ERP & CRM is a modern and easy to use web software to manage your business",
|
"description" : "Dolibarr ERP & CRM is a modern and easy to use web software to manage your business",
|
||||||
"keywords": [
|
"keywords" : [
|
||||||
"erp",
|
"erp",
|
||||||
"crm",
|
"crm",
|
||||||
"invoice",
|
"invoice",
|
||||||
"sme",
|
"sme",
|
||||||
"proposal",
|
"proposal",
|
||||||
"order",
|
"order",
|
||||||
"stock",
|
"stock",
|
||||||
"agenda"
|
"agenda"
|
||||||
],
|
],
|
||||||
"homepage": "https://www.dolibarr.org",
|
"homepage" : "https://www.dolibarr.org",
|
||||||
"license": "GPL-3.0-or-later",
|
"license" : "GPL-3.0-or-later",
|
||||||
"support": {
|
"support" : {
|
||||||
"issues": "https://github.com/Dolibarr/dolibarr/issues",
|
"issues" : "https://github.com/Dolibarr/dolibarr/issues",
|
||||||
"forum": "https://www.dolibarr.org/forum",
|
"forum" : "https://www.dolibarr.org/forum",
|
||||||
"wiki": "https://wiki.dolibarr.org",
|
"wiki" : "https://wiki.dolibarr.org",
|
||||||
"source": "https://github.com/Dolibarr/dolibarr"
|
"source" : "https://github.com/Dolibarr/dolibarr"
|
||||||
},
|
},
|
||||||
"config": {
|
"config" : {
|
||||||
"vendor-dir": "htdocs/includes"
|
"vendor-dir" : "htdocs/includes"
|
||||||
},
|
},
|
||||||
"require": {
|
"require" : {
|
||||||
"php": ">=5.3.0",
|
"php" : ">=5.3.0",
|
||||||
"ext-curl": "*",
|
"ext-curl" : "*",
|
||||||
"ccampbell/chromephp": "4.1.0",
|
"ccampbell/chromephp" : "4.1.0",
|
||||||
"ckeditor/ckeditor": "4.5.9",
|
"ckeditor/ckeditor" : "4.6.2",
|
||||||
"mike42/escpos-php": "1.2.1",
|
"mike42/escpos-php" : "1.2.1",
|
||||||
"mobiledetect/mobiledetectlib": "2.8.17",
|
"mobiledetect/mobiledetectlib" : "2.8.17",
|
||||||
"phpoffice/phpexcel": "1.8.1",
|
"phpoffice/phpexcel" : "1.8.1",
|
||||||
"restler/framework": "3.0.0-RC6",
|
"restler/framework" : "3.0.0-RC6",
|
||||||
"tecnickcom/tcpdf": "6.2.12"
|
"tecnickcom/tcpdf" : "^6.2",
|
||||||
},
|
"atgp/factur-x" : "^1.0",
|
||||||
"require-dev": {
|
"luracast/restler": "^3.0"
|
||||||
"jakub-onderka/php-parallel-lint": "^0",
|
},
|
||||||
"jakub-onderka/php-console-highlighter": "^0",
|
"require-dev" : {
|
||||||
"phpunit/phpunit": "^4",
|
"jakub-onderka/php-parallel-lint" : "^0",
|
||||||
"squizlabs/php_codesniffer": "^2",
|
"jakub-onderka/php-console-highlighter" : "^0",
|
||||||
"phpunit/phpunit-selenium": "^2"
|
"phpunit/phpunit" : "^4",
|
||||||
},
|
"squizlabs/php_codesniffer" : "^2",
|
||||||
"suggest": {
|
"phpunit/phpunit-selenium" : "^2"
|
||||||
"ext-mysqlnd": "To use with MySQL or MariaDB",
|
},
|
||||||
"ext-mysqli": "To use with MySQL or MariaDB",
|
"suggest" : {
|
||||||
"ext-pgsql": "To use with PostgreSQL",
|
"ext-mysqlnd" : "To use with MySQL or MariaDB",
|
||||||
"ext-mssql": "To use with MSSQL (experimental)",
|
"ext-mysqli" : "To use with MySQL or MariaDB",
|
||||||
"ext-pdo_sqlite": "To use with SQLite (experimental)",
|
"ext-pgsql" : "To use with PostgreSQL",
|
||||||
"ext-gd": "Image manipulation (Required but maybe built-in PHP)",
|
"ext-mssql" : "To use with MSSQL (experimental)",
|
||||||
"ext-imagick": "Image manipulation (TCPDF)",
|
"ext-pdo_sqlite" : "To use with SQLite (experimental)",
|
||||||
"ext-mcrypt": "(Required but maybe built-in PHP)",
|
"ext-gd" : "Image manipulation (Required but maybe built-in PHP)",
|
||||||
"ext-openssl": "Secure connections (Emails, SOAP…)",
|
"ext-imagick" : "Image manipulation (TCPDF)",
|
||||||
"ext-mbstring": "Handle non UTF-8 databases",
|
"ext-mcrypt" : "(Required but maybe built-in PHP)",
|
||||||
"ext-soap": "Native SOAP",
|
"ext-openssl" : "Secure connections (Emails, SOAP\u2026)",
|
||||||
"ext-zip": "ODT and Excel support",
|
"ext-mbstring" : "Handle non UTF-8 databases",
|
||||||
"ext-xml": "Excel support",
|
"ext-soap" : "Native SOAP",
|
||||||
"firephp/firephp-core": "Logging to Firebug console support"
|
"ext-zip" : "ODT and Excel support",
|
||||||
}
|
"ext-xml" : "Excel support",
|
||||||
|
"firephp/firephp-core" : "Logging to Firebug console support"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
341
composer.lock
generated
341
composer.lock
generated
@ -4,9 +4,59 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"hash": "c586663818e933f26657871d86d01dc6",
|
"content-hash": "949d55d933c4e0725a2086a189595483",
|
||||||
"content-hash": "09e891bb978d35a48902a5f57760aee9",
|
|
||||||
"packages": [
|
"packages": [
|
||||||
|
{
|
||||||
|
"name": "atgp/factur-x",
|
||||||
|
"version": "v1.0.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/atgp/factur-x.git",
|
||||||
|
"reference": "22e22c3b5dfbb0f25afbd7c3fe69a0305199414c"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/atgp/factur-x/zipball/22e22c3b5dfbb0f25afbd7c3fe69a0305199414c",
|
||||||
|
"reference": "22e22c3b5dfbb0f25afbd7c3fe69a0305199414c",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-dom": "*",
|
||||||
|
"ext-fileinfo": "*",
|
||||||
|
"ext-libxml": "*",
|
||||||
|
"ext-simplexml": "*",
|
||||||
|
"ext-zlib": "*",
|
||||||
|
"php": ">=5.6",
|
||||||
|
"setasign/fpdi-fpdf": "^2.0",
|
||||||
|
"smalot/pdfparser": "^0.13.2"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Atgp\\FacturX\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Lucas Gouy-Pailler",
|
||||||
|
"email": "lucas.gouypailler@atgp.net"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PHP library to manage your Factur-X / ZUGFeRD 2.0 PDF invoices files",
|
||||||
|
"keywords": [
|
||||||
|
"ZUGFeRD",
|
||||||
|
"factur-x",
|
||||||
|
"invoice",
|
||||||
|
"pdf",
|
||||||
|
"php",
|
||||||
|
"xml"
|
||||||
|
],
|
||||||
|
"time": "2019-01-16T10:09:35+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "ccampbell/chromephp",
|
"name": "ccampbell/chromephp",
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
@ -48,20 +98,20 @@
|
|||||||
"log",
|
"log",
|
||||||
"logging"
|
"logging"
|
||||||
],
|
],
|
||||||
"time": "2013-06-26 03:44:33"
|
"time": "2013-06-26T03:44:33+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ckeditor/ckeditor",
|
"name": "ckeditor/ckeditor",
|
||||||
"version": "4.5.11",
|
"version": "4.6.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/ckeditor/ckeditor-releases.git",
|
"url": "https://github.com/ckeditor/ckeditor-releases.git",
|
||||||
"reference": "48155a1e1c7e84736b5a166ad3f33acea2a51255"
|
"reference": "268078ab43195b6004d64bc8764c41f2f829640e"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/ckeditor/ckeditor-releases/zipball/48155a1e1c7e84736b5a166ad3f33acea2a51255",
|
"url": "https://api.github.com/repos/ckeditor/ckeditor-releases/zipball/268078ab43195b6004d64bc8764c41f2f829640e",
|
||||||
"reference": "48155a1e1c7e84736b5a166ad3f33acea2a51255",
|
"reference": "268078ab43195b6004d64bc8764c41f2f829640e",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
@ -89,7 +139,7 @@
|
|||||||
"text",
|
"text",
|
||||||
"wysiwyg"
|
"wysiwyg"
|
||||||
],
|
],
|
||||||
"time": "2016-09-07 13:32:39"
|
"time": "2017-01-12T17:36:48+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "mike42/escpos-php",
|
"name": "mike42/escpos-php",
|
||||||
@ -153,7 +203,7 @@
|
|||||||
"print",
|
"print",
|
||||||
"receipt"
|
"receipt"
|
||||||
],
|
],
|
||||||
"time": "2016-04-25 01:14:07"
|
"time": "2016-04-25T01:14:07+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "mobiledetect/mobiledetectlib",
|
"name": "mobiledetect/mobiledetectlib",
|
||||||
@ -207,7 +257,7 @@
|
|||||||
"mobile detector",
|
"mobile detector",
|
||||||
"php mobile detect"
|
"php mobile detect"
|
||||||
],
|
],
|
||||||
"time": "2015-09-17 14:45:21"
|
"time": "2015-09-17T14:45:21+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpoffice/phpexcel",
|
"name": "phpoffice/phpexcel",
|
||||||
@ -264,7 +314,8 @@
|
|||||||
"xls",
|
"xls",
|
||||||
"xlsx"
|
"xlsx"
|
||||||
],
|
],
|
||||||
"time": "2015-05-01 07:00:55"
|
"abandoned": "phpoffice/phpspreadsheet",
|
||||||
|
"time": "2015-05-01T07:00:55+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "restler/framework",
|
"name": "restler/framework",
|
||||||
@ -273,12 +324,12 @@
|
|||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/Luracast/Restler-Framework.git",
|
"url": "https://github.com/Luracast/Restler-Framework.git",
|
||||||
"reference": "3388d76e73a81f871ce5baa906271071b12cd17f"
|
"reference": "6bc0968f8c8aa47c9a62d548b9d7e34f1ed4fc09"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/Luracast/Restler-Framework/zipball/3388d76e73a81f871ce5baa906271071b12cd17f",
|
"url": "https://api.github.com/repos/Luracast/Restler-Framework/zipball/6bc0968f8c8aa47c9a62d548b9d7e34f1ed4fc09",
|
||||||
"reference": "3388d76e73a81f871ce5baa906271071b12cd17f",
|
"reference": "6bc0968f8c8aa47c9a62d548b9d7e34f1ed4fc09",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -325,20 +376,209 @@
|
|||||||
"rest",
|
"rest",
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"time": "2016-06-21 12:42:18"
|
"time": "2018-01-06T01:39:27+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "tecnickcom/tcpdf",
|
"name": "setasign/fpdf",
|
||||||
"version": "6.2.12",
|
"version": "1.8.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/tecnickcom/TCPDF.git",
|
"url": "https://github.com/Setasign/FPDF.git",
|
||||||
"reference": "2f732eaa91b5665274689b1d40b285a7bacdc37f"
|
"reference": "2c68c9e6c034ac3187d25968790139a73184cdb1"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/2f732eaa91b5665274689b1d40b285a7bacdc37f",
|
"url": "https://api.github.com/repos/Setasign/FPDF/zipball/2c68c9e6c034ac3187d25968790139a73184cdb1",
|
||||||
"reference": "2f732eaa91b5665274689b1d40b285a7bacdc37f",
|
"reference": "2c68c9e6c034ac3187d25968790139a73184cdb1",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"fpdf.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"no usage restriction"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Olivier Plathey",
|
||||||
|
"email": "oliver@fpdf.org",
|
||||||
|
"homepage": "http://fpdf.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "FPDF is a PHP class which allows to generate PDF files with pure PHP. F from FPDF stands for Free: you may use it for any kind of usage and modify it to suit your needs.",
|
||||||
|
"homepage": "http://www.fpdf.org",
|
||||||
|
"keywords": [
|
||||||
|
"fpdf",
|
||||||
|
"pdf"
|
||||||
|
],
|
||||||
|
"time": "2016-01-01T17:47:15+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "setasign/fpdi",
|
||||||
|
"version": "v2.2.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/Setasign/FPDI.git",
|
||||||
|
"reference": "3c266002f8044f61b17329f7cd702d44d73f0f7f"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/Setasign/FPDI/zipball/3c266002f8044f61b17329f7cd702d44d73f0f7f",
|
||||||
|
"reference": "3c266002f8044f61b17329f7cd702d44d73f0f7f",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-zlib": "*",
|
||||||
|
"php": "^5.6 || ^7.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "~5.7",
|
||||||
|
"setasign/fpdf": "~1.8",
|
||||||
|
"setasign/tfpdf": "1.25",
|
||||||
|
"tecnickcom/tcpdf": "~6.2"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"setasign/fpdf": "FPDI will extend this class but as it is also possible to use TCPDF or tFPDF as an alternative. There's no fixed dependency configured.",
|
||||||
|
"setasign/fpdi-fpdf": "Use this package to automatically evaluate dependencies to FPDF.",
|
||||||
|
"setasign/fpdi-tcpdf": "Use this package to automatically evaluate dependencies to TCPDF.",
|
||||||
|
"setasign/fpdi-tfpdf": "Use this package to automatically evaluate dependencies to tFPDF."
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"setasign\\Fpdi\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Jan Slabon",
|
||||||
|
"email": "jan.slabon@setasign.com",
|
||||||
|
"homepage": "https://www.setasign.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Maximilian Kresse",
|
||||||
|
"email": "maximilian.kresse@setasign.com",
|
||||||
|
"homepage": "https://www.setasign.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "FPDI is a collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF. Because it is also possible to use FPDI with TCPDF, there are no fixed dependencies defined. Please see suggestions for packages which evaluates the dependencies automatically.",
|
||||||
|
"homepage": "https://www.setasign.com/fpdi",
|
||||||
|
"keywords": [
|
||||||
|
"fpdf",
|
||||||
|
"fpdi",
|
||||||
|
"pdf"
|
||||||
|
],
|
||||||
|
"time": "2019-01-30T14:11:19+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "setasign/fpdi-fpdf",
|
||||||
|
"version": "v2.2.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/Setasign/FPDI-FPDF.git",
|
||||||
|
"reference": "e4363ac09e1b766b38ebea1c3cbe82b3480a11e9"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/Setasign/FPDI-FPDF/zipball/e4363ac09e1b766b38ebea1c3cbe82b3480a11e9",
|
||||||
|
"reference": "e4363ac09e1b766b38ebea1c3cbe82b3480a11e9",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"setasign/fpdf": "^1.8",
|
||||||
|
"setasign/fpdi": "^2.2"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Jan Slabon",
|
||||||
|
"email": "jan.slabon@setasign.com",
|
||||||
|
"homepage": "https://www.setasign.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Kind of metadata package for dependencies of the latest versions of FPDI and FPDF.",
|
||||||
|
"homepage": "https://www.setasign.com/fpdi",
|
||||||
|
"keywords": [
|
||||||
|
"fpdf",
|
||||||
|
"fpdi",
|
||||||
|
"pdf"
|
||||||
|
],
|
||||||
|
"time": "2019-01-30T14:38:19+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "smalot/pdfparser",
|
||||||
|
"version": "v0.13.3",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/smalot/pdfparser.git",
|
||||||
|
"reference": "c3a050fb9b47ec3a0ce1b6f1b6f48ec822ba04d6"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/smalot/pdfparser/zipball/c3a050fb9b47ec3a0ce1b6f1b6f48ec822ba04d6",
|
||||||
|
"reference": "c3a050fb9b47ec3a0ce1b6f1b6f48ec822ba04d6",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-mbstring": "*",
|
||||||
|
"ext-zlib": "*",
|
||||||
|
"php": ">=5.3.0",
|
||||||
|
"tecnickcom/tcpdf": "~6.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"atoum/atoum": "^2.8 | ^3.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-0": {
|
||||||
|
"Smalot\\PdfParser\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"LGPL-3.0"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastien MALOT",
|
||||||
|
"email": "sebastien@malot.fr"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Pdf parser library. Can read and extract information from pdf file.",
|
||||||
|
"homepage": "http://www.pdfparser.org",
|
||||||
|
"keywords": [
|
||||||
|
"extract",
|
||||||
|
"parse",
|
||||||
|
"parser",
|
||||||
|
"pdf",
|
||||||
|
"text"
|
||||||
|
],
|
||||||
|
"time": "2019-01-11T08:49:57+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tecnickcom/tcpdf",
|
||||||
|
"version": "6.2.26",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/tecnickcom/TCPDF.git",
|
||||||
|
"reference": "367241059ca166e3a76490f4448c284e0a161f15"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/367241059ca166e3a76490f4448c284e0a161f15",
|
||||||
|
"reference": "367241059ca166e3a76490f4448c284e0a161f15",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -347,7 +587,6 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"classmap": [
|
"classmap": [
|
||||||
"fonts",
|
|
||||||
"config",
|
"config",
|
||||||
"include",
|
"include",
|
||||||
"tcpdf.php",
|
"tcpdf.php",
|
||||||
@ -368,13 +607,13 @@
|
|||||||
},
|
},
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
"license": [
|
"license": [
|
||||||
"LGPLv3"
|
"LGPL-3.0"
|
||||||
],
|
],
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "Nicola Asuni",
|
"name": "Nicola Asuni",
|
||||||
"email": "info@tecnick.com",
|
"email": "info@tecnick.com",
|
||||||
"homepage": "http://nicolaasuni.tecnick.com"
|
"role": "lead"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "TCPDF is a PHP class for generating PDF documents and barcodes.",
|
"description": "TCPDF is a PHP class for generating PDF documents and barcodes.",
|
||||||
@ -388,7 +627,7 @@
|
|||||||
"pdf417",
|
"pdf417",
|
||||||
"qrcode"
|
"qrcode"
|
||||||
],
|
],
|
||||||
"time": "2015-09-12 10:08:34"
|
"time": "2018-10-16T17:24:05+00:00"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"packages-dev": [
|
"packages-dev": [
|
||||||
@ -444,7 +683,7 @@
|
|||||||
"constructor",
|
"constructor",
|
||||||
"instantiate"
|
"instantiate"
|
||||||
],
|
],
|
||||||
"time": "2015-06-14 21:17:01"
|
"time": "2015-06-14T21:17:01+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "jakub-onderka/php-console-color",
|
"name": "jakub-onderka/php-console-color",
|
||||||
@ -487,7 +726,7 @@
|
|||||||
"homepage": "http://www.acci.cz"
|
"homepage": "http://www.acci.cz"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2014-04-08 15:00:19"
|
"time": "2014-04-08T15:00:19+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "jakub-onderka/php-console-highlighter",
|
"name": "jakub-onderka/php-console-highlighter",
|
||||||
@ -531,7 +770,7 @@
|
|||||||
"homepage": "http://www.acci.cz/"
|
"homepage": "http://www.acci.cz/"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2015-04-20 18:58:01"
|
"time": "2015-04-20T18:58:01+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "jakub-onderka/php-parallel-lint",
|
"name": "jakub-onderka/php-parallel-lint",
|
||||||
@ -578,7 +817,7 @@
|
|||||||
],
|
],
|
||||||
"description": "This tool check syntax of PHP files about 20x faster than serial check.",
|
"description": "This tool check syntax of PHP files about 20x faster than serial check.",
|
||||||
"homepage": "https://github.com/JakubOnderka/PHP-Parallel-Lint",
|
"homepage": "https://github.com/JakubOnderka/PHP-Parallel-Lint",
|
||||||
"time": "2015-12-15 10:42:16"
|
"time": "2015-12-15T10:42:16+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpdocumentor/reflection-common",
|
"name": "phpdocumentor/reflection-common",
|
||||||
@ -632,7 +871,7 @@
|
|||||||
"reflection",
|
"reflection",
|
||||||
"static analysis"
|
"static analysis"
|
||||||
],
|
],
|
||||||
"time": "2015-12-27 11:43:31"
|
"time": "2015-12-27T11:43:31+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpdocumentor/reflection-docblock",
|
"name": "phpdocumentor/reflection-docblock",
|
||||||
@ -677,7 +916,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
||||||
"time": "2016-09-30 07:12:33"
|
"time": "2016-09-30T07:12:33+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpdocumentor/type-resolver",
|
"name": "phpdocumentor/type-resolver",
|
||||||
@ -724,7 +963,7 @@
|
|||||||
"email": "me@mikevanriel.com"
|
"email": "me@mikevanriel.com"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2016-06-10 07:14:17"
|
"time": "2016-06-10T07:14:17+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpspec/prophecy",
|
"name": "phpspec/prophecy",
|
||||||
@ -786,7 +1025,7 @@
|
|||||||
"spy",
|
"spy",
|
||||||
"stub"
|
"stub"
|
||||||
],
|
],
|
||||||
"time": "2016-06-07 08:13:47"
|
"time": "2016-06-07T08:13:47+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-code-coverage",
|
"name": "phpunit/php-code-coverage",
|
||||||
@ -848,7 +1087,7 @@
|
|||||||
"testing",
|
"testing",
|
||||||
"xunit"
|
"xunit"
|
||||||
],
|
],
|
||||||
"time": "2015-10-06 15:47:00"
|
"time": "2015-10-06T15:47:00+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-file-iterator",
|
"name": "phpunit/php-file-iterator",
|
||||||
@ -895,7 +1134,7 @@
|
|||||||
"filesystem",
|
"filesystem",
|
||||||
"iterator"
|
"iterator"
|
||||||
],
|
],
|
||||||
"time": "2015-06-21 13:08:43"
|
"time": "2015-06-21T13:08:43+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-text-template",
|
"name": "phpunit/php-text-template",
|
||||||
@ -936,7 +1175,7 @@
|
|||||||
"keywords": [
|
"keywords": [
|
||||||
"template"
|
"template"
|
||||||
],
|
],
|
||||||
"time": "2015-06-21 13:50:34"
|
"time": "2015-06-21T13:50:34+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-timer",
|
"name": "phpunit/php-timer",
|
||||||
@ -980,7 +1219,7 @@
|
|||||||
"keywords": [
|
"keywords": [
|
||||||
"timer"
|
"timer"
|
||||||
],
|
],
|
||||||
"time": "2016-05-12 18:03:57"
|
"time": "2016-05-12T18:03:57+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-token-stream",
|
"name": "phpunit/php-token-stream",
|
||||||
@ -1029,7 +1268,7 @@
|
|||||||
"keywords": [
|
"keywords": [
|
||||||
"tokenizer"
|
"tokenizer"
|
||||||
],
|
],
|
||||||
"time": "2015-09-15 10:49:45"
|
"time": "2015-09-15T10:49:45+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/phpunit",
|
"name": "phpunit/phpunit",
|
||||||
@ -1101,7 +1340,7 @@
|
|||||||
"testing",
|
"testing",
|
||||||
"xunit"
|
"xunit"
|
||||||
],
|
],
|
||||||
"time": "2016-07-21 06:48:14"
|
"time": "2016-07-21T06:48:14+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/phpunit-mock-objects",
|
"name": "phpunit/phpunit-mock-objects",
|
||||||
@ -1157,7 +1396,7 @@
|
|||||||
"mock",
|
"mock",
|
||||||
"xunit"
|
"xunit"
|
||||||
],
|
],
|
||||||
"time": "2015-10-02 06:51:40"
|
"time": "2015-10-02T06:51:40+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/phpunit-selenium",
|
"name": "phpunit/phpunit-selenium",
|
||||||
@ -1221,7 +1460,7 @@
|
|||||||
"testing",
|
"testing",
|
||||||
"xunit"
|
"xunit"
|
||||||
],
|
],
|
||||||
"time": "2016-03-01 10:33:56"
|
"time": "2016-03-01T10:33:56+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/comparator",
|
"name": "sebastian/comparator",
|
||||||
@ -1285,7 +1524,7 @@
|
|||||||
"compare",
|
"compare",
|
||||||
"equality"
|
"equality"
|
||||||
],
|
],
|
||||||
"time": "2015-07-26 15:48:44"
|
"time": "2015-07-26T15:48:44+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/diff",
|
"name": "sebastian/diff",
|
||||||
@ -1337,7 +1576,7 @@
|
|||||||
"keywords": [
|
"keywords": [
|
||||||
"diff"
|
"diff"
|
||||||
],
|
],
|
||||||
"time": "2015-12-08 07:14:41"
|
"time": "2015-12-08T07:14:41+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/environment",
|
"name": "sebastian/environment",
|
||||||
@ -1387,7 +1626,7 @@
|
|||||||
"environment",
|
"environment",
|
||||||
"hhvm"
|
"hhvm"
|
||||||
],
|
],
|
||||||
"time": "2016-08-18 05:49:44"
|
"time": "2016-08-18T05:49:44+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/exporter",
|
"name": "sebastian/exporter",
|
||||||
@ -1454,7 +1693,7 @@
|
|||||||
"export",
|
"export",
|
||||||
"exporter"
|
"exporter"
|
||||||
],
|
],
|
||||||
"time": "2016-06-17 09:04:28"
|
"time": "2016-06-17T09:04:28+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/global-state",
|
"name": "sebastian/global-state",
|
||||||
@ -1505,7 +1744,7 @@
|
|||||||
"keywords": [
|
"keywords": [
|
||||||
"global state"
|
"global state"
|
||||||
],
|
],
|
||||||
"time": "2015-10-12 03:26:01"
|
"time": "2015-10-12T03:26:01+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/recursion-context",
|
"name": "sebastian/recursion-context",
|
||||||
@ -1558,7 +1797,7 @@
|
|||||||
],
|
],
|
||||||
"description": "Provides functionality to recursively process PHP variables",
|
"description": "Provides functionality to recursively process PHP variables",
|
||||||
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
|
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
|
||||||
"time": "2015-11-11 19:50:13"
|
"time": "2015-11-11T19:50:13+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/version",
|
"name": "sebastian/version",
|
||||||
@ -1593,7 +1832,7 @@
|
|||||||
],
|
],
|
||||||
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
|
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
|
||||||
"homepage": "https://github.com/sebastianbergmann/version",
|
"homepage": "https://github.com/sebastianbergmann/version",
|
||||||
"time": "2015-06-21 13:59:46"
|
"time": "2015-06-21T13:59:46+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "squizlabs/php_codesniffer",
|
"name": "squizlabs/php_codesniffer",
|
||||||
@ -1671,7 +1910,7 @@
|
|||||||
"phpcs",
|
"phpcs",
|
||||||
"standards"
|
"standards"
|
||||||
],
|
],
|
||||||
"time": "2016-09-01 23:53:02"
|
"time": "2016-09-01T23:53:02+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/yaml",
|
"name": "symfony/yaml",
|
||||||
@ -1720,7 +1959,7 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony Yaml Component",
|
"description": "Symfony Yaml Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2016-10-24 18:41:13"
|
"time": "2016-10-24T18:41:13+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "webmozart/assert",
|
"name": "webmozart/assert",
|
||||||
@ -1770,7 +2009,7 @@
|
|||||||
"check",
|
"check",
|
||||||
"validate"
|
"validate"
|
||||||
],
|
],
|
||||||
"time": "2016-08-09 15:02:57"
|
"time": "2016-08-09T15:02:57+00:00"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
|||||||
@ -8,6 +8,15 @@ ALL:
|
|||||||
Check "@CHANGE"
|
Check "@CHANGE"
|
||||||
|
|
||||||
|
|
||||||
|
PrestaShopWebservice:
|
||||||
|
---------------------
|
||||||
|
Replace
|
||||||
|
$params = array('filter', 'display', 'sort', 'limit', 'id_shop', 'id_group_shop');
|
||||||
|
With
|
||||||
|
$params = array('filter', 'display', 'sort', 'limit', 'id_shop', 'id_group_shop', 'date');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CKEDITOR (4.6.2):
|
CKEDITOR (4.6.2):
|
||||||
-----------------
|
-----------------
|
||||||
* In ckeditor/ckeditor/contents.css
|
* In ckeditor/ckeditor/contents.css
|
||||||
@ -41,30 +50,6 @@ define('QR_FIND_FROM_RANDOM', false);
|
|||||||
|
|
||||||
* Removed useless directories ("examples", "tools")
|
* Removed useless directories ("examples", "tools")
|
||||||
|
|
||||||
* Fix
|
|
||||||
// initialize subsetchars
|
|
||||||
$subsetchars = array();
|
|
||||||
into
|
|
||||||
// initialize subsetchars
|
|
||||||
$subsetchars = array_fill(0, 256, true);
|
|
||||||
|
|
||||||
* Replace the continue into switch with a break:
|
|
||||||
|
|
||||||
case 're': {
|
|
||||||
// justify block
|
|
||||||
if (!TCPDF_STATIC::empty_string($this->lispacer)) {
|
|
||||||
$this->lispacer = '';
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
into
|
|
||||||
case 're': {
|
|
||||||
// justify block
|
|
||||||
if (!TCPDF_STATIC::empty_string($this->lispacer)) {
|
|
||||||
$this->lispacer = '';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
* Optionnaly, removed all fonts except
|
* Optionnaly, removed all fonts except
|
||||||
dejavusans* (used by greek, arab, persan, romanian, turkish),
|
dejavusans* (used by greek, arab, persan, romanian, turkish),
|
||||||
freemono* (russian),
|
freemono* (russian),
|
||||||
@ -72,7 +57,7 @@ case 're': {
|
|||||||
helvetica* (all other languages),
|
helvetica* (all other languages),
|
||||||
zapfdingbats.php (for special chars like form checkboxes)
|
zapfdingbats.php (for special chars like form checkboxes)
|
||||||
|
|
||||||
* Optionnaly, made freemono the default monotype font because we removed courier
|
* Optionnaly, made freemono the default monotype font if we removed courier
|
||||||
In htdocs/includes/tcpdf/tcpdf.php
|
In htdocs/includes/tcpdf/tcpdf.php
|
||||||
- protected $default_monospaced_font = 'courier';
|
- protected $default_monospaced_font = 'courier';
|
||||||
+ protected $default_monospaced_font = 'freemono';
|
+ protected $default_monospaced_font = 'freemono';
|
||||||
@ -133,6 +118,13 @@ JQUERYFILETREE:
|
|||||||
* Remove directory htdocs/includes/jquery/plugins/jqueryFileTree/connectors
|
* Remove directory htdocs/includes/jquery/plugins/jqueryFileTree/connectors
|
||||||
|
|
||||||
|
|
||||||
|
PHPEXCEL:
|
||||||
|
---------
|
||||||
|
* Replace in htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/Shared/OLE.php
|
||||||
|
continue;
|
||||||
|
with:
|
||||||
|
continue 2;
|
||||||
|
|
||||||
|
|
||||||
RESTLER:
|
RESTLER:
|
||||||
--------
|
--------
|
||||||
@ -149,7 +141,7 @@ to get
|
|||||||
if ($className == 'Luracast\Restler\mixed') return;
|
if ($className == 'Luracast\Restler\mixed') return;
|
||||||
...
|
...
|
||||||
|
|
||||||
Change also file Luracast/Restler/explorer/index.html
|
Change also content of file htdocs/includes/restler/framework/Luracast/Restler/explorer/index.html
|
||||||
|
|
||||||
+With swagger 2:
|
+With swagger 2:
|
||||||
|
|
||||||
|
|||||||
@ -48,8 +48,8 @@ $langs->load("main"); // To load language file for default language
|
|||||||
@set_time_limit(0);
|
@set_time_limit(0);
|
||||||
|
|
||||||
// Load user and its permissions
|
// Load user and its permissions
|
||||||
$result=$user->fetch('','admin'); // Load user for login 'admin'. Comment line to run as anonymous user.
|
$result=$user->fetch('', 'admin'); // Load user for login 'admin'. Comment line to run as anonymous user.
|
||||||
if (! $result > 0) { dol_print_error('',$user->error); exit; }
|
if (! $result > 0) { dol_print_error('', $user->error); exit; }
|
||||||
$user->getrights();
|
$user->getrights();
|
||||||
|
|
||||||
|
|
||||||
@ -89,13 +89,13 @@ if ($idobject > 0)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
dol_print_error($db,$obj->error);
|
dol_print_error($db, $obj->error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
dol_print_error($db,$obj->error);
|
dol_print_error($db, $obj->error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -48,8 +48,8 @@ $langs->load("main"); // To load language file for default language
|
|||||||
@set_time_limit(0);
|
@set_time_limit(0);
|
||||||
|
|
||||||
// Load user and its permissions
|
// Load user and its permissions
|
||||||
$result=$user->fetch('','admin'); // Load user for login 'admin'. Comment line to run as anonymous user.
|
$result=$user->fetch('', 'admin'); // Load user for login 'admin'. Comment line to run as anonymous user.
|
||||||
if (! $result > 0) { dol_print_error('',$user->error); exit; }
|
if (! $result > 0) { dol_print_error('', $user->error); exit; }
|
||||||
$user->getrights();
|
$user->getrights();
|
||||||
|
|
||||||
|
|
||||||
@ -87,13 +87,13 @@ if ($idobject > 0)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
dol_print_error($db,$com->error);
|
dol_print_error($db, $com->error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
dol_print_error($db,$com->error);
|
dol_print_error($db, $com->error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -48,8 +48,8 @@ $langs->load("main"); // To load language file for default language
|
|||||||
@set_time_limit(0);
|
@set_time_limit(0);
|
||||||
|
|
||||||
// Load user and its permissions
|
// Load user and its permissions
|
||||||
$result=$user->fetch('','admin'); // Load user for login 'admin'. Comment line to run as anonymous user.
|
$result=$user->fetch('', 'admin'); // Load user for login 'admin'. Comment line to run as anonymous user.
|
||||||
if (! $result > 0) { dol_print_error('',$user->error); exit; }
|
if (! $result > 0) { dol_print_error('', $user->error); exit; }
|
||||||
$user->getrights();
|
$user->getrights();
|
||||||
|
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ if ($idobject > 0)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
dol_print_error($db,$myproduct->error);
|
dol_print_error($db, $myproduct->error);
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------- END OF YOUR CODE --------------------
|
// -------------------- END OF YOUR CODE --------------------
|
||||||
|
|||||||
@ -48,8 +48,8 @@ $langs->load("main"); // To load language file for default language
|
|||||||
@set_time_limit(0);
|
@set_time_limit(0);
|
||||||
|
|
||||||
// Load user and its permissions
|
// Load user and its permissions
|
||||||
$result=$user->fetch('','admin'); // Load user for login 'admin'. Comment line to run as anonymous user.
|
$result=$user->fetch('', 'admin'); // Load user for login 'admin'. Comment line to run as anonymous user.
|
||||||
if (! $result > 0) { dol_print_error('',$user->error); exit; }
|
if (! $result > 0) { dol_print_error('', $user->error); exit; }
|
||||||
$user->getrights();
|
$user->getrights();
|
||||||
|
|
||||||
|
|
||||||
@ -77,17 +77,17 @@ if ($idobject > 0)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
dol_print_error($db,$obj->error);
|
dol_print_error($db, $obj->error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ($obj->error == 'ErrorLoginAlreadyExists')
|
elseif ($obj->error == 'ErrorLoginAlreadyExists')
|
||||||
{
|
{
|
||||||
print "User with login ".$obj->login." already exists\n";
|
print "User with login ".$obj->login." already exists\n";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
dol_print_error($db,$obj->error);
|
dol_print_error($db, $obj->error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -48,8 +48,8 @@ $langs->load("main"); // To load language file for default language
|
|||||||
@set_time_limit(0);
|
@set_time_limit(0);
|
||||||
|
|
||||||
// Load user and its permissions
|
// Load user and its permissions
|
||||||
$result=$user->fetch('','admin'); // Load user for login 'admin'. Comment line to run as anonymous user.
|
$result=$user->fetch('', 'admin'); // Load user for login 'admin'. Comment line to run as anonymous user.
|
||||||
if (! $result > 0) { dol_print_error('',$user->error); exit; }
|
if (! $result > 0) { dol_print_error('', $user->error); exit; }
|
||||||
$user->getrights();
|
$user->getrights();
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
Example fo recurring event, 1 week, no end, exported by Google
|
Example fo recurring event, 1 week, no end, exported by Google
|
||||||
|
|
||||||
# The recurring event were recorded every monday the 20150518. This is the Recurrence-id, but then
|
# The recurring event were recorded every monday the 20150518. This is the Recurrence-id, but then
|
||||||
# first occurence was moved on tuesday. So this record were added.
|
# first occurrence was moved on tuesday. So this record were added.
|
||||||
BEGIN:VEVENT
|
BEGIN:VEVENT
|
||||||
DTSTART;TZID=Europe/Paris:20150519T100000
|
DTSTART;TZID=Europe/Paris:20150519T100000
|
||||||
DTEND;TZID=Europe/Paris:20150519T110000
|
DTEND;TZID=Europe/Paris:20150519T110000
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
README (English)
|
README (English)
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
||||||
This directory contains example of well formated mail messages.
|
This directory contains example of well formatted mail messages.
|
||||||
This is to help to build the CMailFile.class.php code.
|
This is to help to build the CMailFile.class.php code.
|
||||||
|
|||||||
@ -43,59 +43,59 @@ require_once DOL_DOCUMENT_ROOT."/societe/class/societe.class.php";
|
|||||||
|
|
||||||
define(GEN_NUMBER_FACTURE, 1);
|
define(GEN_NUMBER_FACTURE, 1);
|
||||||
$year = 2016;
|
$year = 2016;
|
||||||
$dates = array (mktime(12,0,0,1,3,$year),
|
$dates = array (mktime(12, 0, 0, 1, 3, $year),
|
||||||
mktime(12,0,0,1,9,$year),
|
mktime(12, 0, 0, 1, 9, $year),
|
||||||
mktime(12,0,0,2,13,$year),
|
mktime(12, 0, 0, 2, 13, $year),
|
||||||
mktime(12,0,0,2,23,$year),
|
mktime(12, 0, 0, 2, 23, $year),
|
||||||
mktime(12,0,0,3,30,$year),
|
mktime(12, 0, 0, 3, 30, $year),
|
||||||
mktime(12,0,0,4,3,$year),
|
mktime(12, 0, 0, 4, 3, $year),
|
||||||
mktime(12,0,0,4,3,$year),
|
mktime(12, 0, 0, 4, 3, $year),
|
||||||
mktime(12,0,0,5,9,$year),
|
mktime(12, 0, 0, 5, 9, $year),
|
||||||
mktime(12,0,0,5,1,$year),
|
mktime(12, 0, 0, 5, 1, $year),
|
||||||
mktime(12,0,0,5,13,$year),
|
mktime(12, 0, 0, 5, 13, $year),
|
||||||
mktime(12,0,0,5,19,$year),
|
mktime(12, 0, 0, 5, 19, $year),
|
||||||
mktime(12,0,0,5,23,$year),
|
mktime(12, 0, 0, 5, 23, $year),
|
||||||
mktime(12,0,0,6,3,$year),
|
mktime(12, 0, 0, 6, 3, $year),
|
||||||
mktime(12,0,0,6,19,$year),
|
mktime(12, 0, 0, 6, 19, $year),
|
||||||
mktime(12,0,0,6,24,$year),
|
mktime(12, 0, 0, 6, 24, $year),
|
||||||
mktime(12,0,0,7,3,$year),
|
mktime(12, 0, 0, 7, 3, $year),
|
||||||
mktime(12,0,0,7,9,$year),
|
mktime(12, 0, 0, 7, 9, $year),
|
||||||
mktime(12,0,0,7,23,$year),
|
mktime(12, 0, 0, 7, 23, $year),
|
||||||
mktime(12,0,0,7,30,$year),
|
mktime(12, 0, 0, 7, 30, $year),
|
||||||
mktime(12,0,0,8,9,$year),
|
mktime(12, 0, 0, 8, 9, $year),
|
||||||
mktime(12,0,0,9,23,$year),
|
mktime(12, 0, 0, 9, 23, $year),
|
||||||
mktime(12,0,0,10,3,$year),
|
mktime(12, 0, 0, 10, 3, $year),
|
||||||
mktime(12,0,0,11,12,$year),
|
mktime(12, 0, 0, 11, 12, $year),
|
||||||
mktime(12,0,0,11,13,$year),
|
mktime(12, 0, 0, 11, 13, $year),
|
||||||
mktime(12,0,0,1,3,($year - 1)),
|
mktime(12, 0, 0, 1, 3, ($year - 1)),
|
||||||
mktime(12,0,0,1,9,($year - 1)),
|
mktime(12, 0, 0, 1, 9, ($year - 1)),
|
||||||
mktime(12,0,0,2,13,($year - 1)),
|
mktime(12, 0, 0, 2, 13, ($year - 1)),
|
||||||
mktime(12,0,0,2,23,($year - 1)),
|
mktime(12, 0, 0, 2, 23, ($year - 1)),
|
||||||
mktime(12,0,0,3,30,($year - 1)),
|
mktime(12, 0, 0, 3, 30, ($year - 1)),
|
||||||
mktime(12,0,0,4,3,($year - 1)),
|
mktime(12, 0, 0, 4, 3, ($year - 1)),
|
||||||
mktime(12,0,0,4,3,($year - 1)),
|
mktime(12, 0, 0, 4, 3, ($year - 1)),
|
||||||
mktime(12,0,0,5,9,($year - 1)),
|
mktime(12, 0, 0, 5, 9, ($year - 1)),
|
||||||
mktime(12,0,0,5,1,($year - 1)),
|
mktime(12, 0, 0, 5, 1, ($year - 1)),
|
||||||
mktime(12,0,0,5,13,($year - 1)),
|
mktime(12, 0, 0, 5, 13, ($year - 1)),
|
||||||
mktime(12,0,0,5,19,($year - 1)),
|
mktime(12, 0, 0, 5, 19, ($year - 1)),
|
||||||
mktime(12,0,0,5,23,($year - 1)),
|
mktime(12, 0, 0, 5, 23, ($year - 1)),
|
||||||
mktime(12,0,0,6,3,($year - 1)),
|
mktime(12, 0, 0, 6, 3, ($year - 1)),
|
||||||
mktime(12,0,0,6,19,($year - 1)),
|
mktime(12, 0, 0, 6, 19, ($year - 1)),
|
||||||
mktime(12,0,0,6,24,($year - 1)),
|
mktime(12, 0, 0, 6, 24, ($year - 1)),
|
||||||
mktime(12,0,0,7,3,($year - 1)),
|
mktime(12, 0, 0, 7, 3, ($year - 1)),
|
||||||
mktime(12,0,0,7,9,($year - 1)),
|
mktime(12, 0, 0, 7, 9, ($year - 1)),
|
||||||
mktime(12,0,0,7,23,($year - 1)),
|
mktime(12, 0, 0, 7, 23, ($year - 1)),
|
||||||
mktime(12,0,0,7,30,($year - 1)),
|
mktime(12, 0, 0, 7, 30, ($year - 1)),
|
||||||
mktime(12,0,0,8,9,($year - 1)),
|
mktime(12, 0, 0, 8, 9, ($year - 1)),
|
||||||
mktime(12,0,0,9,23,($year - 1)),
|
mktime(12, 0, 0, 9, 23, ($year - 1)),
|
||||||
mktime(12,0,0,10,3,($year - 1)),
|
mktime(12, 0, 0, 10, 3, ($year - 1)),
|
||||||
mktime(12,0,0,11,12,$year),
|
mktime(12, 0, 0, 11, 12, $year),
|
||||||
mktime(12,0,0,11,13,$year),
|
mktime(12, 0, 0, 11, 13, $year),
|
||||||
mktime(12,0,0,12,12,$year),
|
mktime(12, 0, 0, 12, 12, $year),
|
||||||
mktime(12,0,0,12,13,$year),
|
mktime(12, 0, 0, 12, 13, $year),
|
||||||
);
|
);
|
||||||
|
|
||||||
$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 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
||||||
@ -150,7 +150,7 @@ while ($i < GEN_NUMBER_FACTURE && $result >= 0)
|
|||||||
$object->mode_reglement_id = 3;
|
$object->mode_reglement_id = 3;
|
||||||
|
|
||||||
$fuser = new User($db);
|
$fuser = new User($db);
|
||||||
$fuser->fetch(mt_rand(1,2));
|
$fuser->fetch(mt_rand(1, 2));
|
||||||
$fuser->getRights();
|
$fuser->getRights();
|
||||||
|
|
||||||
$result=$object->create($fuser);
|
$result=$object->create($fuser);
|
||||||
@ -163,10 +163,10 @@ while ($i < GEN_NUMBER_FACTURE && $result >= 0)
|
|||||||
$prodid = mt_rand(1, $num_prods);
|
$prodid = mt_rand(1, $num_prods);
|
||||||
$product=new Product($db);
|
$product=new Product($db);
|
||||||
$result=$product->fetch($prodids[$prodid]);
|
$result=$product->fetch($prodids[$prodid]);
|
||||||
$result=$object->addline($product->description, $product->price, mt_rand(1,5), 0, 0, 0, $prodids[$prodid], 0, '', '', 0, 0, '', $product->price_base_type, $product->price_ttc, $product->type);
|
$result=$object->addline($product->description, $product->price, mt_rand(1, 5), 0, 0, 0, $prodids[$prodid], 0, '', '', 0, 0, '', $product->price_base_type, $product->price_ttc, $product->type);
|
||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
{
|
{
|
||||||
dol_print_error($db,$propal->error);
|
dol_print_error($db, $propal->error);
|
||||||
}
|
}
|
||||||
$xnbp++;
|
$xnbp++;
|
||||||
}
|
}
|
||||||
@ -178,11 +178,11 @@ while ($i < GEN_NUMBER_FACTURE && $result >= 0)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dol_print_error($db,$object->error);
|
dol_print_error($db, $object->error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dol_print_error($db,$object->error);
|
dol_print_error($db, $object->error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,8 +20,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file dev/initdata/generate-order.php
|
* \file dev/initdata/generate-order.php
|
||||||
* \brief Script example to inject random orders (for load tests)
|
* \brief Script example to inject random orders (for load tests)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Test si mode batch
|
// Test si mode batch
|
||||||
@ -49,59 +49,59 @@ require_once DOL_DOCUMENT_ROOT."/commande/class/commande.class.php";
|
|||||||
|
|
||||||
define(GEN_NUMBER_COMMANDE, 10);
|
define(GEN_NUMBER_COMMANDE, 10);
|
||||||
$year = 2016;
|
$year = 2016;
|
||||||
$dates = array (mktime(12,0,0,1,3,$year),
|
$dates = array (mktime(12, 0, 0, 1, 3, $year),
|
||||||
mktime(12,0,0,1,9,$year),
|
mktime(12, 0, 0, 1, 9, $year),
|
||||||
mktime(12,0,0,2,13,$year),
|
mktime(12, 0, 0, 2, 13, $year),
|
||||||
mktime(12,0,0,2,23,$year),
|
mktime(12, 0, 0, 2, 23, $year),
|
||||||
mktime(12,0,0,3,30,$year),
|
mktime(12, 0, 0, 3, 30, $year),
|
||||||
mktime(12,0,0,4,3,$year),
|
mktime(12, 0, 0, 4, 3, $year),
|
||||||
mktime(12,0,0,4,3,$year),
|
mktime(12, 0, 0, 4, 3, $year),
|
||||||
mktime(12,0,0,5,9,$year),
|
mktime(12, 0, 0, 5, 9, $year),
|
||||||
mktime(12,0,0,5,1,$year),
|
mktime(12, 0, 0, 5, 1, $year),
|
||||||
mktime(12,0,0,5,13,$year),
|
mktime(12, 0, 0, 5, 13, $year),
|
||||||
mktime(12,0,0,5,19,$year),
|
mktime(12, 0, 0, 5, 19, $year),
|
||||||
mktime(12,0,0,5,23,$year),
|
mktime(12, 0, 0, 5, 23, $year),
|
||||||
mktime(12,0,0,6,3,$year),
|
mktime(12, 0, 0, 6, 3, $year),
|
||||||
mktime(12,0,0,6,19,$year),
|
mktime(12, 0, 0, 6, 19, $year),
|
||||||
mktime(12,0,0,6,24,$year),
|
mktime(12, 0, 0, 6, 24, $year),
|
||||||
mktime(12,0,0,7,3,$year),
|
mktime(12, 0, 0, 7, 3, $year),
|
||||||
mktime(12,0,0,7,9,$year),
|
mktime(12, 0, 0, 7, 9, $year),
|
||||||
mktime(12,0,0,7,23,$year),
|
mktime(12, 0, 0, 7, 23, $year),
|
||||||
mktime(12,0,0,7,30,$year),
|
mktime(12, 0, 0, 7, 30, $year),
|
||||||
mktime(12,0,0,8,9,$year),
|
mktime(12, 0, 0, 8, 9, $year),
|
||||||
mktime(12,0,0,9,23,$year),
|
mktime(12, 0, 0, 9, 23, $year),
|
||||||
mktime(12,0,0,10,3,$year),
|
mktime(12, 0, 0, 10, 3, $year),
|
||||||
mktime(12,0,0,11,12,$year),
|
mktime(12, 0, 0, 11, 12, $year),
|
||||||
mktime(12,0,0,11,13,$year),
|
mktime(12, 0, 0, 11, 13, $year),
|
||||||
mktime(12,0,0,1,3,($year - 1)),
|
mktime(12, 0, 0, 1, 3, ($year - 1)),
|
||||||
mktime(12,0,0,1,9,($year - 1)),
|
mktime(12, 0, 0, 1, 9, ($year - 1)),
|
||||||
mktime(12,0,0,2,13,($year - 1)),
|
mktime(12, 0, 0, 2, 13, ($year - 1)),
|
||||||
mktime(12,0,0,2,23,($year - 1)),
|
mktime(12, 0, 0, 2, 23, ($year - 1)),
|
||||||
mktime(12,0,0,3,30,($year - 1)),
|
mktime(12, 0, 0, 3, 30, ($year - 1)),
|
||||||
mktime(12,0,0,4,3,($year - 1)),
|
mktime(12, 0, 0, 4, 3, ($year - 1)),
|
||||||
mktime(12,0,0,4,3,($year - 1)),
|
mktime(12, 0, 0, 4, 3, ($year - 1)),
|
||||||
mktime(12,0,0,5,9,($year - 1)),
|
mktime(12, 0, 0, 5, 9, ($year - 1)),
|
||||||
mktime(12,0,0,5,1,($year - 1)),
|
mktime(12, 0, 0, 5, 1, ($year - 1)),
|
||||||
mktime(12,0,0,5,13,($year - 1)),
|
mktime(12, 0, 0, 5, 13, ($year - 1)),
|
||||||
mktime(12,0,0,5,19,($year - 1)),
|
mktime(12, 0, 0, 5, 19, ($year - 1)),
|
||||||
mktime(12,0,0,5,23,($year - 1)),
|
mktime(12, 0, 0, 5, 23, ($year - 1)),
|
||||||
mktime(12,0,0,6,3,($year - 1)),
|
mktime(12, 0, 0, 6, 3, ($year - 1)),
|
||||||
mktime(12,0,0,6,19,($year - 1)),
|
mktime(12, 0, 0, 6, 19, ($year - 1)),
|
||||||
mktime(12,0,0,6,24,($year - 1)),
|
mktime(12, 0, 0, 6, 24, ($year - 1)),
|
||||||
mktime(12,0,0,7,3,($year - 1)),
|
mktime(12, 0, 0, 7, 3, ($year - 1)),
|
||||||
mktime(12,0,0,7,9,($year - 1)),
|
mktime(12, 0, 0, 7, 9, ($year - 1)),
|
||||||
mktime(12,0,0,7,23,($year - 1)),
|
mktime(12, 0, 0, 7, 23, ($year - 1)),
|
||||||
mktime(12,0,0,7,30,($year - 1)),
|
mktime(12, 0, 0, 7, 30, ($year - 1)),
|
||||||
mktime(12,0,0,8,9,($year - 1)),
|
mktime(12, 0, 0, 8, 9, ($year - 1)),
|
||||||
mktime(12,0,0,9,23,($year - 1)),
|
mktime(12, 0, 0, 9, 23, ($year - 1)),
|
||||||
mktime(12,0,0,10,3,($year - 1)),
|
mktime(12, 0, 0, 10, 3, ($year - 1)),
|
||||||
mktime(12,0,0,11,12,$year),
|
mktime(12, 0, 0, 11, 12, $year),
|
||||||
mktime(12,0,0,11,13,$year),
|
mktime(12, 0, 0, 11, 13, $year),
|
||||||
mktime(12,0,0,12,12,$year),
|
mktime(12, 0, 0, 12, 12, $year),
|
||||||
mktime(12,0,0,12,13,$year),
|
mktime(12, 0, 0, 12, 13, $year),
|
||||||
);
|
);
|
||||||
|
|
||||||
$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 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
||||||
@ -113,13 +113,13 @@ $societesid = array();
|
|||||||
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."societe where client in (1, 3)";
|
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."societe where client in (1, 3)";
|
||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
$num_thirdparties = $db->num_rows($resql);
|
$num_thirdparties = $db->num_rows($resql);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while ($i < $num_thirdparties) {
|
while ($i < $num_thirdparties) {
|
||||||
$i++;
|
$i++;
|
||||||
$row = $db->fetch_row($resql);
|
$row = $db->fetch_row($resql);
|
||||||
$societesid[$i] = $row[0];
|
$societesid[$i] = $row[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { print "err"; }
|
else { print "err"; }
|
||||||
|
|
||||||
@ -127,35 +127,32 @@ $commandesid = array();
|
|||||||
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."commande";
|
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."commande";
|
||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
$num = $db->num_rows($resql);
|
$num = $db->num_rows($resql);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while ($i < $num) {
|
while ($i < $num) {
|
||||||
$i++;
|
$i++;
|
||||||
$row = $db->fetch_row($resql);
|
$row = $db->fetch_row($resql);
|
||||||
$commandesid[$i] = $row[0];
|
$commandesid[$i] = $row[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { print "err"; }
|
else { print "err"; }
|
||||||
|
|
||||||
$prodids = array();
|
$prodids = array();
|
||||||
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."product WHERE tosell=1";
|
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."product WHERE tosell=1";
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if ($resql)
|
if ($resql) {
|
||||||
{
|
$num_prods = $db->num_rows($resql);
|
||||||
$num_prods = $db->num_rows($resql);
|
$i = 0;
|
||||||
$i = 0;
|
while ($i < $num_prods) {
|
||||||
while ($i < $num_prods)
|
$i++;
|
||||||
{
|
|
||||||
$i++;
|
|
||||||
|
|
||||||
$row = $db->fetch_row($resql);
|
$row = $db->fetch_row($resql);
|
||||||
$prodids[$i] = $row[0];
|
$prodids[$i] = $row[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
print "Build ".GEN_NUMBER_COMMANDE." orders\n";
|
print "Build ".GEN_NUMBER_COMMANDE." orders\n";
|
||||||
for ($s = 0 ; $s < GEN_NUMBER_COMMANDE ; $s++)
|
for ($s = 0 ; $s < GEN_NUMBER_COMMANDE ; $s++)
|
||||||
{
|
{
|
||||||
@ -177,14 +174,14 @@ for ($s = 0 ; $s < GEN_NUMBER_COMMANDE ; $s++)
|
|||||||
$listofuserid=array(12,13,16);
|
$listofuserid=array(12,13,16);
|
||||||
|
|
||||||
$fuser = new User($db);
|
$fuser = new User($db);
|
||||||
$fuser->fetch($listofuserid[mt_rand(0,2)]);
|
$fuser->fetch($listofuserid[mt_rand(0, 2)]);
|
||||||
$fuser->getRights();
|
$fuser->getRights();
|
||||||
|
|
||||||
$db->begin();
|
$db->begin();
|
||||||
|
|
||||||
$result=$object->create($fuser);
|
$result=$object->create($fuser);
|
||||||
if ($result >= 0)
|
if ($result >= 0)
|
||||||
{
|
{
|
||||||
$nbp = mt_rand(2, 5);
|
$nbp = mt_rand(2, 5);
|
||||||
$xnbp = 0;
|
$xnbp = 0;
|
||||||
while ($xnbp < $nbp)
|
while ($xnbp < $nbp)
|
||||||
@ -192,32 +189,31 @@ for ($s = 0 ; $s < GEN_NUMBER_COMMANDE ; $s++)
|
|||||||
$prodid = mt_rand(1, $num_prods);
|
$prodid = mt_rand(1, $num_prods);
|
||||||
$product=new Product($db);
|
$product=new Product($db);
|
||||||
$result=$product->fetch($prodids[$prodid]);
|
$result=$product->fetch($prodids[$prodid]);
|
||||||
$result=$object->addline($product->description, $product->price, mt_rand(1,5), 0, 0, 0, $prodids[$prodid], 0, 0, 0, $product->price_base_type, $product->price_ttc, '', '', $product->type);
|
$result=$object->addline($product->description, $product->price, mt_rand(1, 5), 0, 0, 0, $prodids[$prodid], 0, 0, 0, $product->price_base_type, $product->price_ttc, '', '', $product->type);
|
||||||
if ($result <= 0)
|
if ($result <= 0)
|
||||||
{
|
{
|
||||||
dol_print_error($db,$object->error);
|
dol_print_error($db, $object->error);
|
||||||
}
|
}
|
||||||
$xnbp++;
|
$xnbp++;
|
||||||
}
|
}
|
||||||
|
|
||||||
$result=$object->valid($fuser);
|
$result=$object->valid($fuser);
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
$db->commit();
|
$db->commit();
|
||||||
print " OK with ref ".$object->ref."\n";
|
print " OK with ref ".$object->ref."\n";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print " KO\n";
|
print " KO\n";
|
||||||
$db->rollback();
|
$db->rollback();
|
||||||
dol_print_error($db,$object->error);
|
dol_print_error($db, $object->error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print " KO\n";
|
print " KO\n";
|
||||||
$db->rollback();
|
$db->rollback();
|
||||||
dol_print_error($db,$object->error);
|
dol_print_error($db, $object->error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -49,7 +49,7 @@ include_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
|
|||||||
define(GEN_NUMBER_PRODUIT, 100000);
|
define(GEN_NUMBER_PRODUIT, 100000);
|
||||||
|
|
||||||
|
|
||||||
$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 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
||||||
@ -85,16 +85,14 @@ for ($s = 0 ; $s < GEN_NUMBER_PRODUIT ; $s++)
|
|||||||
{
|
{
|
||||||
print "Product ".$s;
|
print "Product ".$s;
|
||||||
$produit = new Product($db);
|
$produit = new Product($db);
|
||||||
$produit->type = mt_rand(0,1);
|
$produit->type = mt_rand(0, 1);
|
||||||
$produit->status = 1;
|
$produit->status = 1;
|
||||||
$produit->ref = ($produit->type?'S':'P').time().$s;
|
$produit->ref = ($produit->type?'S':'P').time().$s;
|
||||||
$produit->label = 'Label '.time().$s;
|
$produit->label = 'Label '.time().$s;
|
||||||
$produit->description = 'Description '.time().$s;
|
$produit->description = 'Description '.time().$s;
|
||||||
$produit->price = mt_rand(1,1000);
|
$produit->price = mt_rand(1, 1000);
|
||||||
$produit->tva_tx = "19.6";
|
$produit->tva_tx = "19.6";
|
||||||
$ret=$produit->create($user);
|
$ret=$produit->create($user);
|
||||||
if ($ret < 0) print "Error $ret - ".$produit->error."\n";
|
if ($ret < 0) print "Error $ret - ".$produit->error."\n";
|
||||||
else print " OK with ref ".$produit->ref."\n";
|
else print " OK with ref ".$produit->ref."\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -45,59 +45,59 @@ require_once DOL_DOCUMENT_ROOT."/societe/class/societe.class.php";
|
|||||||
|
|
||||||
define(GEN_NUMBER_PROPAL, 10);
|
define(GEN_NUMBER_PROPAL, 10);
|
||||||
$year = 2016;
|
$year = 2016;
|
||||||
$dates = array (mktime(12,0,0,1,3,$year),
|
$dates = array (mktime(12, 0, 0, 1, 3, $year),
|
||||||
mktime(12,0,0,1,9,$year),
|
mktime(12, 0, 0, 1, 9, $year),
|
||||||
mktime(12,0,0,2,13,$year),
|
mktime(12, 0, 0, 2, 13, $year),
|
||||||
mktime(12,0,0,2,23,$year),
|
mktime(12, 0, 0, 2, 23, $year),
|
||||||
mktime(12,0,0,3,30,$year),
|
mktime(12, 0, 0, 3, 30, $year),
|
||||||
mktime(12,0,0,4,3,$year),
|
mktime(12, 0, 0, 4, 3, $year),
|
||||||
mktime(12,0,0,4,3,$year),
|
mktime(12, 0, 0, 4, 3, $year),
|
||||||
mktime(12,0,0,5,9,$year),
|
mktime(12, 0, 0, 5, 9, $year),
|
||||||
mktime(12,0,0,5,1,$year),
|
mktime(12, 0, 0, 5, 1, $year),
|
||||||
mktime(12,0,0,5,13,$year),
|
mktime(12, 0, 0, 5, 13, $year),
|
||||||
mktime(12,0,0,5,19,$year),
|
mktime(12, 0, 0, 5, 19, $year),
|
||||||
mktime(12,0,0,5,23,$year),
|
mktime(12, 0, 0, 5, 23, $year),
|
||||||
mktime(12,0,0,6,3,$year),
|
mktime(12, 0, 0, 6, 3, $year),
|
||||||
mktime(12,0,0,6,19,$year),
|
mktime(12, 0, 0, 6, 19, $year),
|
||||||
mktime(12,0,0,6,24,$year),
|
mktime(12, 0, 0, 6, 24, $year),
|
||||||
mktime(12,0,0,7,3,$year),
|
mktime(12, 0, 0, 7, 3, $year),
|
||||||
mktime(12,0,0,7,9,$year),
|
mktime(12, 0, 0, 7, 9, $year),
|
||||||
mktime(12,0,0,7,23,$year),
|
mktime(12, 0, 0, 7, 23, $year),
|
||||||
mktime(12,0,0,7,30,$year),
|
mktime(12, 0, 0, 7, 30, $year),
|
||||||
mktime(12,0,0,8,9,$year),
|
mktime(12, 0, 0, 8, 9, $year),
|
||||||
mktime(12,0,0,9,23,$year),
|
mktime(12, 0, 0, 9, 23, $year),
|
||||||
mktime(12,0,0,10,3,$year),
|
mktime(12, 0, 0, 10, 3, $year),
|
||||||
mktime(12,0,0,11,12,$year),
|
mktime(12, 0, 0, 11, 12, $year),
|
||||||
mktime(12,0,0,11,13,$year),
|
mktime(12, 0, 0, 11, 13, $year),
|
||||||
mktime(12,0,0,1,3,($year - 1)),
|
mktime(12, 0, 0, 1, 3, ($year - 1)),
|
||||||
mktime(12,0,0,1,9,($year - 1)),
|
mktime(12, 0, 0, 1, 9, ($year - 1)),
|
||||||
mktime(12,0,0,2,13,($year - 1)),
|
mktime(12, 0, 0, 2, 13, ($year - 1)),
|
||||||
mktime(12,0,0,2,23,($year - 1)),
|
mktime(12, 0, 0, 2, 23, ($year - 1)),
|
||||||
mktime(12,0,0,3,30,($year - 1)),
|
mktime(12, 0, 0, 3, 30, ($year - 1)),
|
||||||
mktime(12,0,0,4,3,($year - 1)),
|
mktime(12, 0, 0, 4, 3, ($year - 1)),
|
||||||
mktime(12,0,0,4,3,($year - 1)),
|
mktime(12, 0, 0, 4, 3, ($year - 1)),
|
||||||
mktime(12,0,0,5,9,($year - 1)),
|
mktime(12, 0, 0, 5, 9, ($year - 1)),
|
||||||
mktime(12,0,0,5,1,($year - 1)),
|
mktime(12, 0, 0, 5, 1, ($year - 1)),
|
||||||
mktime(12,0,0,5,13,($year - 1)),
|
mktime(12, 0, 0, 5, 13, ($year - 1)),
|
||||||
mktime(12,0,0,5,19,($year - 1)),
|
mktime(12, 0, 0, 5, 19, ($year - 1)),
|
||||||
mktime(12,0,0,5,23,($year - 1)),
|
mktime(12, 0, 0, 5, 23, ($year - 1)),
|
||||||
mktime(12,0,0,6,3,($year - 1)),
|
mktime(12, 0, 0, 6, 3, ($year - 1)),
|
||||||
mktime(12,0,0,6,19,($year - 1)),
|
mktime(12, 0, 0, 6, 19, ($year - 1)),
|
||||||
mktime(12,0,0,6,24,($year - 1)),
|
mktime(12, 0, 0, 6, 24, ($year - 1)),
|
||||||
mktime(12,0,0,7,3,($year - 1)),
|
mktime(12, 0, 0, 7, 3, ($year - 1)),
|
||||||
mktime(12,0,0,7,9,($year - 1)),
|
mktime(12, 0, 0, 7, 9, ($year - 1)),
|
||||||
mktime(12,0,0,7,23,($year - 1)),
|
mktime(12, 0, 0, 7, 23, ($year - 1)),
|
||||||
mktime(12,0,0,7,30,($year - 1)),
|
mktime(12, 0, 0, 7, 30, ($year - 1)),
|
||||||
mktime(12,0,0,8,9,($year - 1)),
|
mktime(12, 0, 0, 8, 9, ($year - 1)),
|
||||||
mktime(12,0,0,9,23,($year - 1)),
|
mktime(12, 0, 0, 9, 23, ($year - 1)),
|
||||||
mktime(12,0,0,10,3,($year - 1)),
|
mktime(12, 0, 0, 10, 3, ($year - 1)),
|
||||||
mktime(12,0,0,11,12,$year),
|
mktime(12, 0, 0, 11, 12, $year),
|
||||||
mktime(12,0,0,11,13,$year),
|
mktime(12, 0, 0, 11, 13, $year),
|
||||||
mktime(12,0,0,12,12,$year),
|
mktime(12, 0, 0, 12, 12, $year),
|
||||||
mktime(12,0,0,12,13,$year),
|
mktime(12, 0, 0, 12, 13, $year),
|
||||||
);
|
);
|
||||||
|
|
||||||
$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 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
||||||
@ -174,7 +174,7 @@ while ($i < GEN_NUMBER_PROPAL && $result >= 0)
|
|||||||
$object = new Propal($db);
|
$object = new Propal($db);
|
||||||
|
|
||||||
$fuser = new User($db);
|
$fuser = new User($db);
|
||||||
$fuser->fetch(mt_rand(1,2));
|
$fuser->fetch(mt_rand(1, 2));
|
||||||
$fuser->getRights();
|
$fuser->getRights();
|
||||||
|
|
||||||
$object->contactid = $contids[$socids[$socid]][0];
|
$object->contactid = $contids[$socids[$socid]][0];
|
||||||
@ -193,10 +193,10 @@ while ($i < GEN_NUMBER_PROPAL && $result >= 0)
|
|||||||
$prodid = mt_rand(1, $num_prods);
|
$prodid = mt_rand(1, $num_prods);
|
||||||
$product=new Product($db);
|
$product=new Product($db);
|
||||||
$result=$product->fetch($prodids[$prodid]);
|
$result=$product->fetch($prodids[$prodid]);
|
||||||
$result=$object->addline($product->description, $product->price, mt_rand(1,5), 0, 0, 0, $prodids[$prodid], 0);
|
$result=$object->addline($product->description, $product->price, mt_rand(1, 5), 0, 0, 0, $prodids[$prodid], 0);
|
||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
{
|
{
|
||||||
dol_print_error($db,$object->error);
|
dol_print_error($db, $object->error);
|
||||||
}
|
}
|
||||||
$xnbp++;
|
$xnbp++;
|
||||||
}
|
}
|
||||||
@ -211,11 +211,11 @@ while ($i < GEN_NUMBER_PROPAL && $result >= 0)
|
|||||||
{
|
{
|
||||||
print " KO\n";
|
print " KO\n";
|
||||||
$db->rollback();
|
$db->rollback();
|
||||||
dol_print_error($db,$object->error);
|
dol_print_error($db, $object->error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dol_print_error($db,$object->error);
|
dol_print_error($db, $object->error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,7 +52,7 @@ $listoflastname = array("Joe","Marc","Steve","Laurent","Nico","Isabelle","Doroth
|
|||||||
define(GEN_NUMBER_SOCIETE, 10);
|
define(GEN_NUMBER_SOCIETE, 10);
|
||||||
|
|
||||||
|
|
||||||
$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 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
||||||
@ -91,22 +91,22 @@ for ($s = 0 ; $s < GEN_NUMBER_SOCIETE ; $s++)
|
|||||||
$soc = new Societe($db);
|
$soc = new Societe($db);
|
||||||
$soc->name = "Company num ".time()."$s";
|
$soc->name = "Company num ".time()."$s";
|
||||||
$soc->town = $listoftown[mt_rand(0, count($listoftown)-1)];
|
$soc->town = $listoftown[mt_rand(0, count($listoftown)-1)];
|
||||||
$soc->client = mt_rand(1,2); // Une societe sur 2 est prospect, l'autre client
|
$soc->client = mt_rand(1, 2); // Une societe sur 2 est prospect, l'autre client
|
||||||
$soc->fournisseur = mt_rand(0,1); // Une societe sur 2 est fournisseur
|
$soc->fournisseur = mt_rand(0, 1); // Une societe sur 2 est fournisseur
|
||||||
$soc->code_client='CU'.time()."$s";
|
$soc->code_client='CU'.time()."$s";
|
||||||
$soc->code_fournisseur='SU'.time()."$s";
|
$soc->code_fournisseur='SU'.time()."$s";
|
||||||
$soc->tva_assuj=1;
|
$soc->tva_assuj=1;
|
||||||
$soc->country_id=1;
|
$soc->country_id=1;
|
||||||
$soc->country_code='FR';
|
$soc->country_code='FR';
|
||||||
// Un client sur 3 a une remise de 5%
|
// Un client sur 3 a une remise de 5%
|
||||||
$user_remise=mt_rand(1,3); if ($user_remise==3) $soc->remise_percent=5;
|
$user_remise=mt_rand(1, 3); if ($user_remise==3) $soc->remise_percent=5;
|
||||||
print "> client=".$soc->client.", fournisseur=".$soc->fournisseur.", remise=".$soc->remise_percent."\n";
|
print "> client=".$soc->client.", fournisseur=".$soc->fournisseur.", remise=".$soc->remise_percent."\n";
|
||||||
$soc->note_private = 'Company created by the script generate-societe.php';
|
$soc->note_private = 'Company created by the script generate-societe.php';
|
||||||
$socid = $soc->create();
|
$socid = $soc->create();
|
||||||
|
|
||||||
if ($socid >= 0)
|
if ($socid >= 0)
|
||||||
{
|
{
|
||||||
$rand = mt_rand(1,4);
|
$rand = mt_rand(1, 4);
|
||||||
print "> Generates $rand contact(s)\n";
|
print "> Generates $rand contact(s)\n";
|
||||||
for ($c = 0 ; $c < $rand ; $c++)
|
for ($c = 0 ; $c < $rand ; $c++)
|
||||||
{
|
{
|
||||||
@ -127,5 +127,3 @@ for ($s = 0 ; $s < GEN_NUMBER_SOCIETE ; $s++)
|
|||||||
print "Error: ".$soc->error."\n";
|
print "Error: ".$soc->error."\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -35,7 +35,7 @@ if (substr($sapi_type, 0, 3) == 'cgi') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Recupere root dolibarr
|
// Recupere root dolibarr
|
||||||
$path=preg_replace('/import-products.php/i','',$_SERVER["PHP_SELF"]);
|
$path=preg_replace('/import-products.php/i', '', $_SERVER["PHP_SELF"]);
|
||||||
require $path."../../htdocs/master.inc.php";
|
require $path."../../htdocs/master.inc.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.'/product/class/product.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
||||||
@ -57,7 +57,7 @@ $error=0;
|
|||||||
|
|
||||||
@set_time_limit(0);
|
@set_time_limit(0);
|
||||||
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
|
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
|
||||||
dol_syslog($script_file." launched with arg ".implode(',',$argv));
|
dol_syslog($script_file." launched with arg ".implode(',', $argv));
|
||||||
|
|
||||||
$mode = $argv[1];
|
$mode = $argv[1];
|
||||||
$filepath = $argv[2];
|
$filepath = $argv[2];
|
||||||
@ -66,7 +66,7 @@ $defaultlang = empty($argv[3])?'en_US':$argv[3];
|
|||||||
$startlinenb = empty($argv[4])?1:$argv[4];
|
$startlinenb = empty($argv[4])?1:$argv[4];
|
||||||
$endlinenb = empty($argv[5])?0:$argv[5];
|
$endlinenb = empty($argv[5])?0:$argv[5];
|
||||||
|
|
||||||
if (empty($mode) || ! in_array($mode,array('test','confirm','confirmforced')) || empty($filepath)) {
|
if (empty($mode) || ! in_array($mode, array('test','confirm','confirmforced')) || empty($filepath)) {
|
||||||
print "Usage: $script_file (test|confirm|confirmforced) filepath.csv [defaultlang] [startlinenb] [endlinenb]\n";
|
print "Usage: $script_file (test|confirm|confirmforced) filepath.csv [defaultlang] [startlinenb] [endlinenb]\n";
|
||||||
print "Usage: $script_file test myfilepath.csv fr_FR 2 1002\n";
|
print "Usage: $script_file test myfilepath.csv fr_FR 2 1002\n";
|
||||||
print "\n";
|
print "\n";
|
||||||
@ -78,7 +78,7 @@ if (! file_exists($filepath)) {
|
|||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
$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 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
||||||
@ -93,7 +93,7 @@ if (! $confirmed)
|
|||||||
$input = trim(fgets(STDIN));
|
$input = trim(fgets(STDIN));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open input and ouput files
|
// Open input and output files
|
||||||
$fhandle = fopen($filepath, 'r');
|
$fhandle = fopen($filepath, 'r');
|
||||||
if (! $fhandle)
|
if (! $fhandle)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -35,7 +35,7 @@ if (substr($sapi_type, 0, 3) == 'cgi') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Recupere root dolibarr
|
// Recupere root dolibarr
|
||||||
$path=preg_replace('/import-thirdparties.php/i','',$_SERVER["PHP_SELF"]);
|
$path=preg_replace('/import-thirdparties.php/i', '', $_SERVER["PHP_SELF"]);
|
||||||
require $path."../../htdocs/master.inc.php";
|
require $path."../../htdocs/master.inc.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.'/product/class/product.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
||||||
@ -57,7 +57,7 @@ $error=0;
|
|||||||
|
|
||||||
@set_time_limit(0);
|
@set_time_limit(0);
|
||||||
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
|
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
|
||||||
dol_syslog($script_file." launched with arg ".implode(',',$argv));
|
dol_syslog($script_file." launched with arg ".implode(',', $argv));
|
||||||
|
|
||||||
$mode = $argv[1];
|
$mode = $argv[1];
|
||||||
$filepath = $argv[2];
|
$filepath = $argv[2];
|
||||||
@ -66,7 +66,7 @@ $filepatherr = $filepath.'.err';
|
|||||||
$startlinenb = empty($argv[3])?1:$argv[3];
|
$startlinenb = empty($argv[3])?1:$argv[3];
|
||||||
$endlinenb = empty($argv[4])?0:$argv[4];
|
$endlinenb = empty($argv[4])?0:$argv[4];
|
||||||
|
|
||||||
if (empty($mode) || ! in_array($mode,array('test','confirm','confirmforced')) || empty($filepath)) {
|
if (empty($mode) || ! in_array($mode, array('test','confirm','confirmforced')) || empty($filepath)) {
|
||||||
print "Usage: $script_file (test|confirm|confirmforced) filepath.csv [startlinenb] [endlinenb]\n";
|
print "Usage: $script_file (test|confirm|confirmforced) filepath.csv [startlinenb] [endlinenb]\n";
|
||||||
print "Usage: $script_file test myfilepath.csv 2 1002\n";
|
print "Usage: $script_file test myfilepath.csv 2 1002\n";
|
||||||
print "\n";
|
print "\n";
|
||||||
@ -78,7 +78,7 @@ if (! file_exists($filepath)) {
|
|||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
$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 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
||||||
@ -93,7 +93,7 @@ if (! $confirmed)
|
|||||||
$input = trim(fgets(STDIN));
|
$input = trim(fgets(STDIN));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open input and ouput files
|
// Open input and output files
|
||||||
$fhandle = fopen($filepath, 'r');
|
$fhandle = fopen($filepath, 'r');
|
||||||
if (! $fhandle)
|
if (! $fhandle)
|
||||||
{
|
{
|
||||||
@ -199,13 +199,13 @@ while ($fields=fgetcsv($fhandle, $linelength, $delimiter, $enclosure, $escape))
|
|||||||
{
|
{
|
||||||
$salesrep=new User($db);
|
$salesrep=new User($db);
|
||||||
|
|
||||||
$tmp=explode(' ',$fields[3],2);
|
$tmp=explode(' ', $fields[3], 2);
|
||||||
$salesrep->firstname = trim($tmp[0]);
|
$salesrep->firstname = trim($tmp[0]);
|
||||||
$salesrep->lastname = trim($tmp[1]);
|
$salesrep->lastname = trim($tmp[1]);
|
||||||
if ($salesrep->lastname) $salesrep->login = strtolower(substr($salesrep->firstname, 0, 1)) . strtolower(substr($salesrep->lastname, 0));
|
if ($salesrep->lastname) $salesrep->login = strtolower(substr($salesrep->firstname, 0, 1)) . strtolower(substr($salesrep->lastname, 0));
|
||||||
else $salesrep->login=strtolower($salesrep->firstname);
|
else $salesrep->login=strtolower($salesrep->firstname);
|
||||||
$salesrep->login=preg_replace('/ /','',$salesrep->login);
|
$salesrep->login=preg_replace('/ /', '', $salesrep->login);
|
||||||
$salesrep->fetch(0,$salesrep->login);
|
$salesrep->fetch(0, $salesrep->login);
|
||||||
|
|
||||||
$result = $object->add_commercial($user, $salesrep->id);
|
$result = $object->add_commercial($user, $salesrep->id);
|
||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
|
|||||||
@ -35,7 +35,7 @@ if (substr($sapi_type, 0, 3) == 'cgi') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Recupere root dolibarr
|
// Recupere root dolibarr
|
||||||
$path=preg_replace('/import-users.php/i','',$_SERVER["PHP_SELF"]);
|
$path=preg_replace('/import-users.php/i', '', $_SERVER["PHP_SELF"]);
|
||||||
require $path."../../htdocs/master.inc.php";
|
require $path."../../htdocs/master.inc.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.'/product/class/product.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
||||||
@ -57,7 +57,7 @@ $error=0;
|
|||||||
|
|
||||||
@set_time_limit(0);
|
@set_time_limit(0);
|
||||||
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
|
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
|
||||||
dol_syslog($script_file." launched with arg ".implode(',',$argv));
|
dol_syslog($script_file." launched with arg ".implode(',', $argv));
|
||||||
|
|
||||||
$mode = $argv[1];
|
$mode = $argv[1];
|
||||||
$filepath = $argv[2];
|
$filepath = $argv[2];
|
||||||
@ -66,7 +66,7 @@ $filepatherr = $filepath.'.err';
|
|||||||
$startlinenb = empty($argv[3])?1:$argv[3];
|
$startlinenb = empty($argv[3])?1:$argv[3];
|
||||||
$endlinenb = empty($argv[4])?0:$argv[4];
|
$endlinenb = empty($argv[4])?0:$argv[4];
|
||||||
|
|
||||||
if (empty($mode) || ! in_array($mode,array('test','confirm','confirmforced')) || empty($filepath)) {
|
if (empty($mode) || ! in_array($mode, array('test','confirm','confirmforced')) || empty($filepath)) {
|
||||||
print "Usage: $script_file (test|confirm|confirmforced) filepath.csv [startlinenb] [endlinenb]\n";
|
print "Usage: $script_file (test|confirm|confirmforced) filepath.csv [startlinenb] [endlinenb]\n";
|
||||||
print "Usage: $script_file test myfilepath.csv 2 1002\n";
|
print "Usage: $script_file test myfilepath.csv 2 1002\n";
|
||||||
print "\n";
|
print "\n";
|
||||||
@ -78,7 +78,7 @@ if (! file_exists($filepath)) {
|
|||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
$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 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
||||||
@ -93,7 +93,7 @@ if (! $confirmed)
|
|||||||
$input = trim(fgets(STDIN));
|
$input = trim(fgets(STDIN));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open input and ouput files
|
// Open input and output files
|
||||||
$fhandle = fopen($filepath, 'r');
|
$fhandle = fopen($filepath, 'r');
|
||||||
if (! $fhandle)
|
if (! $fhandle)
|
||||||
{
|
{
|
||||||
@ -127,12 +127,12 @@ while ($fields=fgetcsv($fhandle, $linelength, $delimiter, $enclosure, $escape))
|
|||||||
$object = new User($db);
|
$object = new User($db);
|
||||||
$object->statut = 1;
|
$object->statut = 1;
|
||||||
|
|
||||||
$tmp=explode(' ',$fields[3],2);
|
$tmp=explode(' ', $fields[3], 2);
|
||||||
$object->firstname = trim($tmp[0]);
|
$object->firstname = trim($tmp[0]);
|
||||||
$object->lastname = trim($tmp[1]);
|
$object->lastname = trim($tmp[1]);
|
||||||
if ($object->lastname) $object->login = strtolower(substr($object->firstname, 0, 1)) . strtolower(substr($object->lastname, 0));
|
if ($object->lastname) $object->login = strtolower(substr($object->firstname, 0, 1)) . strtolower(substr($object->lastname, 0));
|
||||||
else $object->login=strtolower($object->firstname);
|
else $object->login=strtolower($object->firstname);
|
||||||
$object->login=preg_replace('/ /','',$object->login);
|
$object->login=preg_replace('/ /', '', $object->login);
|
||||||
$object->password = 'init';
|
$object->password = 'init';
|
||||||
|
|
||||||
print "Process line nb ".$i.", login ".$object->login;
|
print "Process line nb ".$i.", login ".$object->login;
|
||||||
|
|||||||
@ -35,7 +35,7 @@ if (substr($sapi_type, 0, 3) == 'cgi') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Recupere root dolibarr
|
// Recupere root dolibarr
|
||||||
$path=preg_replace('/purge-data.php/i','',$_SERVER["PHP_SELF"]);
|
$path=preg_replace('/purge-data.php/i', '', $_SERVER["PHP_SELF"]);
|
||||||
require $path."../../htdocs/master.inc.php";
|
require $path."../../htdocs/master.inc.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.'/contact/class/contact.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
|
||||||
@ -53,133 +53,177 @@ $error=0;
|
|||||||
// List of sql to execute
|
// List of sql to execute
|
||||||
$sqls=array(
|
$sqls=array(
|
||||||
'user'=>array(
|
'user'=>array(
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX."user_rights WHERE fk_user IN (SELECT rowid FROM ".MAIN_DB_PREFIX."user WHERE admin = 0 and login != 'admin')",
|
"DELETE FROM ".MAIN_DB_PREFIX."user_rights WHERE fk_user IN (SELECT rowid FROM ".MAIN_DB_PREFIX."user WHERE admin = 0 and login != 'admin') AND fk_user IN (select rowid FROM ".MAIN_DB_PREFIX."user where datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX."user WHERE admin = 0 and login != 'admin'",
|
"DELETE FROM ".MAIN_DB_PREFIX."user WHERE admin = 0 and login != 'admin' AND datec < '__DATE__'",
|
||||||
|
),
|
||||||
|
'event'=>array(
|
||||||
|
//"DELETE FROM ".MAIN_DB_PREFIX."actioncomm WHERE lineid IN (SELECT rowid FROM ".MAIN_DB_PREFIX."bank WHERE datec < '__DATE__')",
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."actioncomm WHERE datec < '__DATE__'",
|
||||||
|
),
|
||||||
|
'payment'=>array(
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."paiement_facture where fk_facture IN (select rowid FROM ".MAIN_DB_PREFIX."facture where datec < '__DATE__')",
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."paiement where rowid NOT IN (SELECT fk_paiement FROM ".MAIN_DB_PREFIX."paiement_facture)",
|
||||||
),
|
),
|
||||||
'bank'=>array(
|
'bank'=>array(
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'bank_account',
|
"DELETE FROM ".MAIN_DB_PREFIX."bank_class WHERE lineid IN (SELECT rowid FROM ".MAIN_DB_PREFIX."bank WHERE datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'bank_class',
|
"DELETE FROM ".MAIN_DB_PREFIX."bank_url WHERE fk_bank IN (SELECT rowid FROM ".MAIN_DB_PREFIX."bank WHERE datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'bank_url',
|
"DELETE FROM ".MAIN_DB_PREFIX."bank WHERE datec < '__DATE__'",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'bank',
|
|
||||||
),
|
),
|
||||||
'contract'=>array(
|
'bankaccount'=>array(
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'contratdet',
|
"DELETE FROM ".MAIN_DB_PREFIX."bank_account WHERE datec < '__DATE__'",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'contrat',
|
|
||||||
),
|
),
|
||||||
'invoice'=>array(
|
'invoice'=>array(
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'paiement_facture',
|
'@payment',
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'facture_rec',
|
"DELETE FROM ".MAIN_DB_PREFIX."societe_remise_except where fk_facture_source IN (select rowid FROM ".MAIN_DB_PREFIX."facture where datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'facturedet',
|
"DELETE FROM ".MAIN_DB_PREFIX."societe_remise_except where fk_facture IN (select rowid FROM ".MAIN_DB_PREFIX."facture where datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'facture WHERE fk_facture_source IS NOT NULL',
|
"DELETE FROM ".MAIN_DB_PREFIX."societe_remise_except where fk_facture_line IN (select rowid FROM ".MAIN_DB_PREFIX."facturedet as fd WHERE fd.fk_facture IN (select rowid from ".MAIN_DB_PREFIX."facture where datec < '__DATE__'))",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'facture',
|
"DELETE FROM ".MAIN_DB_PREFIX."facture_rec where datec < '__DATE__'",
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."facturedet WHERE fk_facture IN (select rowid FROM ".MAIN_DB_PREFIX."facture where datec < '__DATE__')",
|
||||||
|
"UPDATE ".MAIN_DB_PREFIX."facture SET fk_facture_source = NULL WHERE fk_facture_source IN (select f2.rowid FROM (select * from ".MAIN_DB_PREFIX."facture) as f2 where f2.datec < '__DATE__')",
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."facture where datec < '__DATE__'",
|
||||||
|
),
|
||||||
|
'accounting'=>array(
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."accounting_bookkeeping where doc_date < '__DATE__'",
|
||||||
),
|
),
|
||||||
'proposal'=>array(
|
'proposal'=>array(
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'propaldet',
|
"DELETE FROM ".MAIN_DB_PREFIX."propaldet WHERE fk_propal IN (select rowid FROM ".MAIN_DB_PREFIX."propal where datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'propal',
|
"DELETE FROM ".MAIN_DB_PREFIX."propal WHERE datec < '__DATE__'",
|
||||||
),
|
),
|
||||||
'supplier_proposal'=>array(
|
"supplier_proposal"=>array(
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'supplier_proposaldet',
|
"DELETE FROM ".MAIN_DB_PREFIX."supplier_proposaldet WHERE fk_supplier_proposal IN (select rowid FROM ".MAIN_DB_PREFIX."propal where datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'supplier_proposal',
|
"DELETE FROM ".MAIN_DB_PREFIX."supplier_proposal where datec < '__DATE__'",
|
||||||
),
|
|
||||||
'supplier_order'=>array(
|
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'commande_fournisseurdet',
|
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'commande_fournisseur',
|
|
||||||
),
|
|
||||||
'supplier_invoice'=>array(
|
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn_det',
|
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn',
|
|
||||||
),
|
|
||||||
'delivery'=>array(
|
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'livraisondet',
|
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'livraison',
|
|
||||||
),
|
|
||||||
'shipment'=>array(
|
|
||||||
'@delivery',
|
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'expeditiondet_batch',
|
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'expeditiondet_extrafields',
|
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'expeditiondet',
|
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'expedition_extrafields',
|
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'expedition',
|
|
||||||
),
|
),
|
||||||
'order'=>array(
|
'order'=>array(
|
||||||
'@shipment',
|
'@shipment',
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'commandedet',
|
"DELETE FROM ".MAIN_DB_PREFIX."commandedet WHERE fk_commande IN (select rowid FROM ".MAIN_DB_PREFIX."commande where date_creation < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'commande',
|
"DELETE FROM ".MAIN_DB_PREFIX."commande where date_creation < '__DATE__'",
|
||||||
|
),
|
||||||
|
'supplier_order'=>array(
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."commande_fournisseurdet WHERE fk_commande IN (select rowid FROM ".MAIN_DB_PREFIX."commande_fournisseur where date_creation < '__DATE__')",
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."commande_fournisseur where date_creation < '__DATE__'",
|
||||||
|
),
|
||||||
|
'supplier_invoice'=>array(
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."facture_fourn_det WHERE fk_facture_fourn IN (select rowid FROM ".MAIN_DB_PREFIX."facture_fourn where datec < '__DATE__')",
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."facture_fourn where datec < '__DATE__'",
|
||||||
|
),
|
||||||
|
'shipment'=>array(
|
||||||
|
'@delivery',
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."expeditiondet_batch WHERE fk_expeditiondet IN (select rowid FROM ".MAIN_DB_PREFIX."expeditiondet WHERE fk_expedition IN (select rowid FROM ".MAIN_DB_PREFIX."expedition where date_creation < '__DATE__'))",
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."expeditiondet_extrafields WHERE fk_object IN (select rowid FROM ".MAIN_DB_PREFIX."expeditiondet WHERE fk_expedition IN (select rowid FROM ".MAIN_DB_PREFIX."expedition where date_creation < '__DATE__'))",
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."expeditiondet WHERE fk_expedition IN (select rowid FROM ".MAIN_DB_PREFIX."expedition where date_creation < '__DATE__')",
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."expedition_extrafields WHERE fk_object IN (select rowid FROM ".MAIN_DB_PREFIX."expedition where date_creation < '__DATE__')",
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."expedition where date_creation < '__DATE__'",
|
||||||
|
),
|
||||||
|
'delivery'=>array(
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."livraisondet WHERE fk_livraison IN (select rowid FROM ".MAIN_DB_PREFIX."livraison where date_creation < '__DATE__')",
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."livraison where date_creation < '__DATE__'",
|
||||||
|
),
|
||||||
|
'contract'=>array(
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."contratdet_extrafields WHERE fk_object IN (select rowid FROM ".MAIN_DB_PREFIX."contratdet WHERE fk_contrat IN (select rowid FROM ".MAIN_DB_PREFIX."contrat where datec < '__DATE__'))",
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."contratdet WHERE fk_contrat IN (select rowid FROM ".MAIN_DB_PREFIX."contrat where datec < '__DATE__')",
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."contrat_extrafields WHERE fk_object IN (select rowid FROM ".MAIN_DB_PREFIX."contrat where datec < '__DATE__')",
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."contrat WHERE datec < '__DATE__'",
|
||||||
),
|
),
|
||||||
'intervention'=>array(
|
'intervention'=>array(
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'fichinterdet',
|
"DELETE FROM ".MAIN_DB_PREFIX."fichinterdet WHERE fk_fichinter IN (select rowid FROM ".MAIN_DB_PREFIX."fichinter where datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'fichinter',
|
"DELETE FROM ".MAIN_DB_PREFIX."fichinter where datec < '__DATE__'",
|
||||||
|
),
|
||||||
|
'stock'=>array(
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."stock_mouvement WHERE datem < '__DATE__'",
|
||||||
),
|
),
|
||||||
'product'=>array(
|
'product'=>array(
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'categorie_product',
|
"DELETE FROM ".MAIN_DB_PREFIX."categorie_product WHERE fk_product IN (select rowid FROM ".MAIN_DB_PREFIX."product where datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'product_lang',
|
"DELETE FROM ".MAIN_DB_PREFIX."product_lang WHERE fk_product IN (select rowid FROM ".MAIN_DB_PREFIX."product where datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'product_price',
|
"DELETE FROM ".MAIN_DB_PREFIX."product_price_by_qty WHERE fk_product_price IN (select rowid FROM ".MAIN_DB_PREFIX."product_price where fk_product IN (select rowid FROM ".MAIN_DB_PREFIX."product where datec < '__DATE__'))",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'product_fournisseur_price',
|
"DELETE FROM ".MAIN_DB_PREFIX."product_price WHERE fk_product IN (select rowid FROM ".MAIN_DB_PREFIX."product where datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'product_batch',
|
"DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur_price WHERE fk_product IN (select rowid FROM ".MAIN_DB_PREFIX."product where datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'product_stock',
|
"DELETE FROM ".MAIN_DB_PREFIX."product_batch WHERE fk_product_stock IN (select rowid FROM ".MAIN_DB_PREFIX."product_stock where fk_product IN (select rowid FROM ".MAIN_DB_PREFIX."product where datec < '__DATE__'))",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'product_lot',
|
"DELETE FROM ".MAIN_DB_PREFIX."product_stock WHERE fk_product IN (select rowid FROM ".MAIN_DB_PREFIX."product where datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'product',
|
"DELETE FROM ".MAIN_DB_PREFIX."product_lot WHERE fk_product IN (select rowid FROM ".MAIN_DB_PREFIX."product where datec < '__DATE__')",
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."product where datec < '__DATE__'",
|
||||||
),
|
),
|
||||||
'project'=>array(
|
'project'=>array(
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'projet_task_time',
|
// TODO set fk_project to null on object that refer to project
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'projet_task',
|
"DELETE FROM ".MAIN_DB_PREFIX."projet_task_time WHERE fk_task IN (select rowid FROM ".MAIN_DB_PREFIX."projet_task WHERE fk_projet IN (select rowid FROM ".MAIN_DB_PREFIX."projet where datec < '__DATE__'))",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'projet',
|
"DELETE FROM ".MAIN_DB_PREFIX."projet_task WHERE fk_projet IN (select rowid FROM ".MAIN_DB_PREFIX."projet where datec < '__DATE__')",
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."projet where datec < '__DATE__'",
|
||||||
),
|
),
|
||||||
'contact'=>array(
|
'contact'=>array(
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'categorie_contact',
|
"DELETE FROM ".MAIN_DB_PREFIX."categorie_contact WHERE fk_socpeople IN (select rowid FROM ".MAIN_DB_PREFIX."socpeople where datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'socpeople',
|
"DELETE FROM ".MAIN_DB_PREFIX."socpeople where datec < '__DATE__'",
|
||||||
),
|
),
|
||||||
'thirdparty'=>array(
|
'thirdparty'=>array(
|
||||||
'@contact',
|
'@contact',
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'cabinetmed_cons',
|
"DELETE FROM ".MAIN_DB_PREFIX."cabinetmed_cons WHERE fk_soc IN (select rowid FROM ".MAIN_DB_PREFIX."societe where datec < '__DATE__')",
|
||||||
'UPDATE '.MAIN_DB_PREFIX.'adherent SET fk_soc = NULL',
|
"UPDATE ".MAIN_DB_PREFIX."adherent SET fk_soc = NULL WHERE fk_soc IN (select rowid FROM ".MAIN_DB_PREFIX."societe where datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'categorie_fournisseur',
|
"DELETE FROM ".MAIN_DB_PREFIX."categorie_fournisseur WHERE fk_soc IN (select rowid FROM ".MAIN_DB_PREFIX."societe where datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'categorie_societe',
|
"DELETE FROM ".MAIN_DB_PREFIX."categorie_societe WHERE fk_soc IN (select rowid FROM ".MAIN_DB_PREFIX."societe where datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'societe_remise_except',
|
"DELETE FROM ".MAIN_DB_PREFIX."societe_remise_except WHERE fk_soc IN (select rowid FROM ".MAIN_DB_PREFIX."societe where datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'societe_rib',
|
"DELETE FROM ".MAIN_DB_PREFIX."societe_rib WHERE fk_soc IN (select rowid FROM ".MAIN_DB_PREFIX."societe where datec < '__DATE__')",
|
||||||
'DELETE FROM '.MAIN_DB_PREFIX.'societe',
|
"DELETE FROM ".MAIN_DB_PREFIX."societe where datec < '__DATE__'",
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Main
|
* Main
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@set_time_limit(0);
|
@set_time_limit(0);
|
||||||
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
|
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
|
||||||
dol_syslog($script_file." launched with arg ".implode(',',$argv));
|
dol_syslog($script_file." launched with arg ".implode(',', $argv));
|
||||||
|
|
||||||
$mode = $argv[1];
|
$mode = $argv[1];
|
||||||
$option = $argv[2];
|
$option = $argv[2];
|
||||||
|
$date = $argv[3];
|
||||||
|
|
||||||
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) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
|
print "Usage: $script_file (test|confirm) (all|option) (all|YYYY-MM-DD) [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);
|
||||||
|
}
|
||||||
|
if (empty($option))
|
||||||
|
{
|
||||||
|
print "Usage: $script_file (test|confirm) (all|option) (all|YYYY-MM-DD) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
|
||||||
|
print "\n";
|
||||||
|
print "option must be defined with a value in list ".implode(',', array_keys($sqls))."\n";
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
if ($option != 'all')
|
||||||
|
{
|
||||||
|
$listofoptions=explode(',', $option);
|
||||||
|
foreach($listofoptions as $cursoroption)
|
||||||
|
{
|
||||||
|
if (! in_array($cursoroption, array_keys($sqls))) {
|
||||||
|
print "Usage: $script_file (test|confirm) (all|option) (all|YYYY-MM-DD) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
|
||||||
|
print "\n";
|
||||||
|
print "option '".$cursoroption."' must be in list ".implode(',', array_keys($sqls))."\n";
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($date) || (! preg_match('/\d\d\d\d\-\d\d\-\d\d$/', $date) && $date != 'all')) {
|
||||||
|
print "Usage: $script_file (test|confirm) (all|option) (all|YYYY-MM-DD) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
|
||||||
|
print "\n";
|
||||||
|
print "date can be 'all' or 'YYYY-MM-DD' to delete record before YYYY-MM-DD\n";
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($option) || ! in_array($option, array_merge(array('all'),array_keys($sqls))) ) {
|
if ($date == 'all') $date = '2199-01-01';
|
||||||
print "Usage: $script_file (test|confirm) (all|option) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
|
|
||||||
print "\n";
|
|
||||||
print "option can be ".implode(',',array_keys($sqls))."\n";
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Replace database handler
|
// Replace database handler
|
||||||
if (! empty($argv[3]))
|
if (! empty($argv[4]))
|
||||||
{
|
{
|
||||||
$db->close();
|
$db->close();
|
||||||
unset($db);
|
unset($db);
|
||||||
$db=getDoliDBInstance($argv[3], $argv[4], $argv[5], $argv[6], $argv[7], $argv[8]);
|
$db=getDoliDBInstance($argv[4], $argv[5], $argv[6], $argv[7], $argv[8], $argv[9]);
|
||||||
$user=new User($db);
|
$user=new User($db);
|
||||||
}
|
}
|
||||||
|
|
||||||
//var_dump($user->db->database_name);
|
//var_dump($user->db->database_name);
|
||||||
$ret=$user->fetch('','admin');
|
$ret=$user->fetch('', 'admin');
|
||||||
if (! $ret > 0)
|
if (! $ret > 0)
|
||||||
{
|
{
|
||||||
print 'An admin user with login "admin" must exists to use this script.'."\n";
|
print 'An admin user with login "admin" must exists to use this script.'."\n";
|
||||||
@ -189,6 +233,7 @@ if (! $ret > 0)
|
|||||||
|
|
||||||
|
|
||||||
print "Purge all data for this database:\n";
|
print "Purge all data for this database:\n";
|
||||||
|
print "Before = ".$date."\n";
|
||||||
print "Server = ".$db->database_host."\n";
|
print "Server = ".$db->database_host."\n";
|
||||||
print "Database name = ".$db->database_name."\n";
|
print "Database name = ".$db->database_name."\n";
|
||||||
print "Database port = ".$db->database_port."\n";
|
print "Database port = ".$db->database_port."\n";
|
||||||
@ -206,23 +251,27 @@ 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
|
||||||
|
* @param string $date Date value
|
||||||
* @return int -1 if KO, 1 if OK
|
* @return int -1 if KO, 1 if OK
|
||||||
*/
|
*/
|
||||||
function processfamily($family)
|
function processfamily($family, $date)
|
||||||
{
|
{
|
||||||
global $db, $sqls;
|
global $db, $sqls;
|
||||||
|
|
||||||
$error=0;
|
$error=0;
|
||||||
foreach($sqls[$family] as $sql)
|
foreach($sqls[$family] as $sql)
|
||||||
{
|
{
|
||||||
if (preg_match('/^@/',$sql))
|
if (preg_match('/^@/', $sql))
|
||||||
{
|
{
|
||||||
$newfamily=preg_replace('/@/','',$sql);
|
$newfamily=preg_replace('/@/', '', $sql);
|
||||||
processfamily($newfamily);
|
processfamily($newfamily, $date);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$sql = preg_replace('/__DATE__/', $date, $sql);
|
||||||
|
|
||||||
print "Run sql: ".$sql."\n";
|
print "Run sql: ".$sql."\n";
|
||||||
|
|
||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
if (! $resql)
|
if (! $resql)
|
||||||
{
|
{
|
||||||
@ -247,25 +296,29 @@ function processfamily($family)
|
|||||||
|
|
||||||
$db->begin();
|
$db->begin();
|
||||||
|
|
||||||
$oldfamily='';
|
$listofoptions=explode(',', $option);
|
||||||
foreach($sqls as $family => $familysql)
|
foreach($listofoptions as $cursoroption)
|
||||||
{
|
{
|
||||||
if ($option && $option != 'all' && $option != $family) continue;
|
$oldfamily='';
|
||||||
|
foreach($sqls as $family => $familysql)
|
||||||
if ($family != $oldfamily) print "Process action for family ".$family."\n";
|
|
||||||
$oldfamily = $family;
|
|
||||||
|
|
||||||
$result=processfamily($family);
|
|
||||||
if ($result < 0)
|
|
||||||
{
|
{
|
||||||
$error++;
|
if ($cursoroption && $cursoroption != 'all' && $cursoroption != $family) continue;
|
||||||
break;
|
|
||||||
|
if ($family != $oldfamily) print "Process action for family ".$family."\n";
|
||||||
|
$oldfamily = $family;
|
||||||
|
|
||||||
|
$result=processfamily($family, $date);
|
||||||
|
if ($result < 0)
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($error || $mode != 'confirm')
|
if ($error || $mode != 'confirm')
|
||||||
{
|
{
|
||||||
print "Rollback any changes.\n";
|
print "\nRollback any changes.\n";
|
||||||
$db->rollback();
|
$db->rollback();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -275,4 +328,3 @@ else
|
|||||||
}
|
}
|
||||||
|
|
||||||
$db->close();
|
$db->close();
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +0,0 @@
|
|||||||
<?php
|
|
||||||
// Wrapper to include main into htdocs
|
|
||||||
include_once '/home/ldestailleur/git/dolibarr_3.8/htdocs/main.inc.php';
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
<?php
|
|
||||||
// Wrapper to include master into htdocs
|
|
||||||
include_once '/home/ldestailleur/git/dolibarr_3.8/htdocs/master.inc.php';
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 360 KiB |
@ -9,8 +9,8 @@
|
|||||||
# Regis Houssin - regis.houssin@inodbox.com
|
# Regis Houssin - regis.houssin@inodbox.com
|
||||||
# Laurent Destailleur - eldy@users.sourceforge.net
|
# Laurent Destailleur - eldy@users.sourceforge.net
|
||||||
#------------------------------------------------------
|
#------------------------------------------------------
|
||||||
# Usage: initdemo.sh
|
# Usage: initdemo.sh confirm
|
||||||
# usage: initdemo.sh mysqldump_dolibarr_x.x.x.sql database port login pass
|
# usage: initdemo.sh confirm mysqldump_dolibarr_x.x.x.sql database port login pass
|
||||||
#------------------------------------------------------
|
#------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
@ -31,11 +31,20 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
# ----------------------------- command line params
|
# ----------------------------- command line params
|
||||||
dumpfile=$1;
|
confirm=$1;
|
||||||
base=$2;
|
dumpfile=$2;
|
||||||
port=$3;
|
base=$3;
|
||||||
admin=$4;
|
port=$4;
|
||||||
passwd=$5;
|
admin=$5;
|
||||||
|
passwd=$6;
|
||||||
|
|
||||||
|
# ----------------------------- check params
|
||||||
|
if [ "x$confirm" != "xconfirm" ]
|
||||||
|
then
|
||||||
|
echo "----- $0 -----"
|
||||||
|
echo "Usage: initdemo.sh confirm [mysqldump_dolibarr_x.x.x.sql database port login pass]"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------- if no params on command line
|
# ----------------------------- if no params on command line
|
||||||
@ -133,10 +142,13 @@ then
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
export documentdir=`cat $mydir/../../htdocs/conf/conf.php | grep '^\$dolibarr_main_data_root' | sed -e 's/$dolibarr_main_data_root=//' | sed -e 's/;//' | sed -e "s/'//g" | sed -e 's/"//g' `
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------- confirmation
|
# ---------------------------- confirmation
|
||||||
DIALOG=${DIALOG=dialog}
|
DIALOG=${DIALOG=dialog}
|
||||||
$DIALOG --title "Init Dolibarr with demo values" --clear \
|
$DIALOG --title "Init Dolibarr with demo values" --clear \
|
||||||
--yesno "Do you confirm ? \n Dump file : '$dumpfile' \n Dump dir : '$mydir' \n Mysql database : '$base' \n Mysql port : '$port' \n Mysql login: '$admin' \n Mysql password : '$passwd'" 15 55
|
--yesno "Do you confirm ? \n Dump file : '$dumpfile' \n Dump dir : '$mydir' \n Document dir : '$documentdir' \n Mysql database : '$base' \n Mysql port : '$port' \n Mysql login: '$admin' \n Mysql password : '$passwd'" 15 55
|
||||||
|
|
||||||
case $? in
|
case $? in
|
||||||
0) echo "Ok, start process...";;
|
0) echo "Ok, start process...";;
|
||||||
@ -165,15 +177,44 @@ export res=$?
|
|||||||
export documentdir=`cat $mydir/../../htdocs/conf/conf.php | grep '^\$dolibarr_main_data_root' | sed -e 's/$dolibarr_main_data_root=//' | sed -e 's/;//' | sed -e "s/'//g" | sed -e 's/"//g' `
|
export documentdir=`cat $mydir/../../htdocs/conf/conf.php | grep '^\$dolibarr_main_data_root' | sed -e 's/$dolibarr_main_data_root=//' | sed -e 's/;//' | sed -e "s/'//g" | sed -e 's/"//g' `
|
||||||
if [ "x$documentdir" != "x" ]
|
if [ "x$documentdir" != "x" ]
|
||||||
then
|
then
|
||||||
|
$DIALOG --title "Reset document directory tpp" --clear \
|
||||||
|
--inputbox "Delete and recreate document directory $documentdir/:" 16 55 n 2> $fichtemp
|
||||||
|
|
||||||
|
valret=$?
|
||||||
|
|
||||||
|
case $valret in
|
||||||
|
0)
|
||||||
|
rep=`cat $fichtemp`;;
|
||||||
|
1)
|
||||||
|
exit;;
|
||||||
|
255)
|
||||||
|
exit;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "rep=$rep"
|
||||||
|
if [ "x$rep" = "xy" ]; then
|
||||||
|
echo rm -fr "$documentdir/*"
|
||||||
|
rm -fr $documentdir/*
|
||||||
|
fi
|
||||||
|
|
||||||
echo cp -pr $mydir/documents_demo/* "$documentdir/"
|
echo cp -pr $mydir/documents_demo/* "$documentdir/"
|
||||||
cp -pr $mydir/documents_demo/* "$documentdir/"
|
cp -pr $mydir/documents_demo/* "$documentdir/"
|
||||||
|
|
||||||
|
mkdir "$documentdir/doctemplates/" 2>/dev/null
|
||||||
echo cp -pr $mydir/../../htdocs/install/doctemplates/* "$documentdir/doctemplates/"
|
echo cp -pr $mydir/../../htdocs/install/doctemplates/* "$documentdir/doctemplates/"
|
||||||
cp -pr $mydir/../../htdocs/install/doctemplates/* "$documentdir/doctemplates/"
|
cp -pr $mydir/../../htdocs/install/doctemplates/* "$documentdir/doctemplates/"
|
||||||
mkdir -p "$documentdir/ecm/Administrative documents"
|
|
||||||
mkdir -p "$documentdir/ecm/Images"
|
echo cp -pr $mydir/../../htdocs/install/medias/* "$documentdir/medias/image/"
|
||||||
|
cp -pr $mydir/../../htdocs/install/medias/* "$documentdir/medias/image/"
|
||||||
|
|
||||||
|
mkdir -p "$documentdir/ecm/Administrative documents" 2>/dev/null
|
||||||
|
mkdir -p "$documentdir/ecm/Images" 2>/dev/null
|
||||||
rm -f "$documentdir/doctemplates/"*/index.html
|
rm -f "$documentdir/doctemplates/"*/index.html
|
||||||
echo cp -pr $mydir/../../doc/images/* "$documentdir/ecm/Images"
|
echo cp -pr $mydir/../../doc/images/* "$documentdir/ecm/Images"
|
||||||
cp -pr $mydir/../../doc/images/* "$documentdir/ecm/Images"
|
cp -pr $mydir/../../doc/images/* "$documentdir/ecm/Images"
|
||||||
|
|
||||||
|
chmod -R u+w "$documentdir/"
|
||||||
|
chown -R www-data "$documentdir/"
|
||||||
else
|
else
|
||||||
echo Detection of documents directory from $mydir failed so demo files were not copied.
|
echo Detection of documents directory from $mydir failed so demo files were not copied.
|
||||||
fi
|
fi
|
||||||
|
|||||||
11250
dev/initdemo/mysqldump_dolibarr_10.0.0.sql
Normal file
11250
dev/initdemo/mysqldump_dolibarr_10.0.0.sql
Normal file
File diff suppressed because one or more lines are too long
@ -7853,7 +7853,7 @@ CREATE TABLE `llx_socpeople` (
|
|||||||
|
|
||||||
LOCK TABLES `llx_socpeople` WRITE;
|
LOCK TABLES `llx_socpeople` WRITE;
|
||||||
/*!40000 ALTER TABLE `llx_socpeople` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `llx_socpeople` DISABLE KEYS */;
|
||||||
INSERT INTO `llx_socpeople` VALUES (1,'2010-07-08 14:26:14','2016-01-16 15:07:51',1,1,NULL,'MR','Indra','Mahala','','','',297,117,'2010-07-08','Project leader','','','','','','','',NULL,0,0,1,12,'Met during a congress at Dubai','',NULL,NULL,NULL,1),(2,'2010-07-08 22:44:50','2010-07-08 20:59:57',NULL,1,NULL,'MR','Freeman','Public','','','',200,11,NULL,'','','','','','','',NULL,NULL,0,0,1,1,'A friend that is a free contact not linked to any company',NULL,NULL,NULL,NULL,1),(3,'2010-07-08 22:59:02','2016-01-22 17:30:07',NULL,1,NULL,'MR','Mywife','Nicy','','','',NULL,11,'1980-10-03','','','','','','','','',NULL,1,0,1,12,'This is a private contact','',NULL,NULL,NULL,1),(4,'2010-07-09 00:16:58','2010-07-08 22:16:58',6,1,NULL,'MR','Rotchield','Evan','','','',NULL,6,NULL,'Bank director','','','','','','',NULL,NULL,0,0,1,1,'The bank director',NULL,NULL,NULL,NULL,1),(6,'2011-08-01 02:41:26','2016-01-22 17:29:53',17,1,NULL,'','Bookkeeper','Bob','99 account street','123456','BigTown',NULL,4,NULL,'book keeper','','','','','','','',NULL,0,0,1,12,'','',NULL,NULL,NULL,1),(7,'2016-07-30 16:11:06','2016-07-30 12:16:07',NULL,1,'','MR','Dad','','','','',NULL,14,'1967-09-04','','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(8,'2016-07-30 16:13:03','2016-07-30 12:15:58',NULL,1,'','MLE','Mom','','','','',NULL,14,NULL,'','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(9,'2016-07-30 16:14:41','2016-07-30 12:15:51',NULL,1,'','MR','Francky','','','89455','Virigia',NULL,205,'1980-07-09','Baker','555-98989898','','','','francky@example.com','','','',0,0,12,12,'','',NULL,NULL,NULL,1),(10,'2016-07-30 16:26:22','2016-07-30 12:52:38',10,1,'','MR','Eldy','','','33600','Pessac',NULL,1,'1972-10-10','Dolibarr project leader','','','','','eldy@example.com','','','ldestailleur_200x200.jpg',0,0,NULL,12,'','',NULL,NULL,NULL,1);
|
INSERT INTO `llx_socpeople` VALUES (1,'2010-07-08 14:26:14','2016-01-16 15:07:51',1,1,NULL,'MR','Indra','Mahala','','','',297,117,'2010-07-08','Project leader','','','','','','','',NULL,0,0,1,12,'Met during a congress at Dubai','',NULL,NULL,NULL,1),(2,'2010-07-08 22:44:50','2010-07-08 20:59:57',NULL,1,NULL,'MR','Freeman','Public','','','',200,11,NULL,'','','','','','','',NULL,NULL,0,0,1,1,'A friend that is a free contact not linked to any company',NULL,NULL,NULL,NULL,1),(3,'2010-07-08 22:59:02','2016-01-22 17:30:07',NULL,1,NULL,'MR','Mywife','Nicy','','','',NULL,11,'1980-10-03','','','','','','','','',NULL,1,0,1,12,'This is a private contact','',NULL,NULL,NULL,1),(4,'2010-07-09 00:16:58','2010-07-08 22:16:58',6,1,NULL,'MR','Rotchield','Evan','','','',NULL,6,NULL,'Bank director','','','','','','',NULL,NULL,0,0,1,1,'The bank director',NULL,NULL,NULL,NULL,1),(6,'2011-08-01 02:41:26','2016-01-22 17:29:53',17,1,NULL,'','Bookkeeper','Bob','99 account street','123456','BigTown',NULL,4,NULL,'book keeper','','','','','','','',NULL,0,0,1,12,'','',NULL,NULL,NULL,1),(7,'2016-07-30 16:11:06','2016-07-30 12:16:07',NULL,1,'','MR','Dad','','','','',NULL,14,'1967-09-04','','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(8,'2016-07-30 16:13:03','2016-07-30 12:15:58',NULL,1,'','MLE','Mom','','','','',NULL,14,NULL,'','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(9,'2016-07-30 16:14:41','2016-07-30 12:15:51',NULL,1,'','MR','Francky','','','89455','Virigia',NULL,205,'1980-07-09','Baker','555-98989898','','','','francky@example.com','','','',0,0,12,12,'','',NULL,NULL,NULL,1),(10,'2016-07-30 16:26:22','2016-07-30 12:52:38',10,1,'','MR','Eldy','','','33600','Pessac',NULL,1,'1972-10-10','Dolibarr project leader','','','','','demo@example.com','','','ldestailleur_200x200.jpg',0,0,NULL,12,'','',NULL,NULL,NULL,1);
|
||||||
/*!40000 ALTER TABLE `llx_socpeople` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `llx_socpeople` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
|||||||
@ -8260,7 +8260,7 @@ CREATE TABLE `llx_socpeople` (
|
|||||||
|
|
||||||
LOCK TABLES `llx_socpeople` WRITE;
|
LOCK TABLES `llx_socpeople` WRITE;
|
||||||
/*!40000 ALTER TABLE `llx_socpeople` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `llx_socpeople` DISABLE KEYS */;
|
||||||
INSERT INTO `llx_socpeople` VALUES (1,'2010-07-08 14:26:14','2016-01-16 15:07:51',1,1,NULL,'MR','Indra','Mahala','','','',297,117,'2010-07-08','Project leader','','','','','','','',NULL,0,0,1,12,'Met during a congress at Dubai','',NULL,NULL,NULL,1),(2,'2010-07-08 22:44:50','2010-07-08 20:59:57',NULL,1,NULL,'MR','Freeman','Public','','','',200,11,NULL,'','','','','','','',NULL,NULL,0,0,1,1,'A friend that is a free contact not linked to any company',NULL,NULL,NULL,NULL,1),(3,'2010-07-08 22:59:02','2016-01-22 17:30:07',NULL,1,NULL,'MR','Mywife','Nicy','','','',NULL,11,'1980-10-03','','','','','','','','',NULL,1,0,1,12,'This is a private contact','',NULL,NULL,NULL,1),(4,'2010-07-09 00:16:58','2010-07-08 22:16:58',6,1,NULL,'MR','Rotchield','Evan','','','',NULL,6,NULL,'Bank director','','','','','','',NULL,NULL,0,0,1,1,'The bank director',NULL,NULL,NULL,NULL,1),(6,'2011-08-01 02:41:26','2016-01-22 17:29:53',17,1,NULL,'','Bookkeeper','Bob','99 account street','123456','BigTown',NULL,4,NULL,'book keeper','','','','','','','',NULL,0,0,1,12,'','',NULL,NULL,NULL,1),(7,'2016-07-30 16:11:06','2016-07-30 12:16:07',NULL,1,'','MR','Dad','','','','',NULL,14,'1967-09-04','','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(8,'2016-07-30 16:13:03','2016-07-30 12:15:58',NULL,1,'','MLE','Mom','','','','',NULL,14,NULL,'','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(9,'2016-07-30 16:14:41','2016-07-30 12:15:51',NULL,1,'','MR','Francky','','','89455','Virigia',NULL,205,'1980-07-09','Baker','555-98989898','','','','francky@example.com','','','',0,0,12,12,'','',NULL,NULL,NULL,1),(10,'2016-07-30 16:26:22','2016-07-30 12:52:38',10,1,'','MR','Eldy','','','33600','Pessac',NULL,1,'1972-10-10','Dolibarr project leader','','','','','eldy@example.com','','','ldestailleur_200x200.jpg',0,0,NULL,12,'','',NULL,NULL,NULL,1),(11,'2017-05-12 13:16:36','2017-05-12 09:18:20',11,1,'','MR','Smith','Laurent','45 Big road','897','Seattle',NULL,11,NULL,'Director','','','','','','','','ldestailleur_200x200.png',0,0,12,12,'','',NULL,NULL,NULL,1),(12,'2017-05-12 13:19:31','2017-05-12 09:19:42',11,1,'','MR','Einstein','','','','',NULL,11,NULL,'Genius','333444555','','','','genius@example.com','','','Einstein.jpg',0,0,12,12,'','',NULL,NULL,NULL,1);
|
INSERT INTO `llx_socpeople` VALUES (1,'2010-07-08 14:26:14','2016-01-16 15:07:51',1,1,NULL,'MR','Indra','Mahala','','','',297,117,'2010-07-08','Project leader','','','','','','','',NULL,0,0,1,12,'Met during a congress at Dubai','',NULL,NULL,NULL,1),(2,'2010-07-08 22:44:50','2010-07-08 20:59:57',NULL,1,NULL,'MR','Freeman','Public','','','',200,11,NULL,'','','','','','','',NULL,NULL,0,0,1,1,'A friend that is a free contact not linked to any company',NULL,NULL,NULL,NULL,1),(3,'2010-07-08 22:59:02','2016-01-22 17:30:07',NULL,1,NULL,'MR','Mywife','Nicy','','','',NULL,11,'1980-10-03','','','','','','','','',NULL,1,0,1,12,'This is a private contact','',NULL,NULL,NULL,1),(4,'2010-07-09 00:16:58','2010-07-08 22:16:58',6,1,NULL,'MR','Rotchield','Evan','','','',NULL,6,NULL,'Bank director','','','','','','',NULL,NULL,0,0,1,1,'The bank director',NULL,NULL,NULL,NULL,1),(6,'2011-08-01 02:41:26','2016-01-22 17:29:53',17,1,NULL,'','Bookkeeper','Bob','99 account street','123456','BigTown',NULL,4,NULL,'book keeper','','','','','','','',NULL,0,0,1,12,'','',NULL,NULL,NULL,1),(7,'2016-07-30 16:11:06','2016-07-30 12:16:07',NULL,1,'','MR','Dad','','','','',NULL,14,'1967-09-04','','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(8,'2016-07-30 16:13:03','2016-07-30 12:15:58',NULL,1,'','MLE','Mom','','','','',NULL,14,NULL,'','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(9,'2016-07-30 16:14:41','2016-07-30 12:15:51',NULL,1,'','MR','Francky','','','89455','Virigia',NULL,205,'1980-07-09','Baker','555-98989898','','','','francky@example.com','','','',0,0,12,12,'','',NULL,NULL,NULL,1),(10,'2016-07-30 16:26:22','2016-07-30 12:52:38',10,1,'','MR','Eldy','','','33600','Pessac',NULL,1,'1972-10-10','Dolibarr project leader','','','','','demo@example.com','','','ldestailleur_200x200.jpg',0,0,NULL,12,'','',NULL,NULL,NULL,1),(11,'2017-05-12 13:16:36','2017-05-12 09:18:20',11,1,'','MR','Smith','Laurent','45 Big road','897','Seattle',NULL,11,NULL,'Director','','','','','','','','ldestailleur_200x200.png',0,0,12,12,'','',NULL,NULL,NULL,1),(12,'2017-05-12 13:19:31','2017-05-12 09:19:42',11,1,'','MR','Einstein','','','','',NULL,11,NULL,'Genius','333444555','','','','genius@example.com','','','Einstein.jpg',0,0,12,12,'','',NULL,NULL,NULL,1);
|
||||||
/*!40000 ALTER TABLE `llx_socpeople` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `llx_socpeople` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
|||||||
@ -8612,7 +8612,7 @@ CREATE TABLE `llx_socpeople` (
|
|||||||
|
|
||||||
LOCK TABLES `llx_socpeople` WRITE;
|
LOCK TABLES `llx_socpeople` WRITE;
|
||||||
/*!40000 ALTER TABLE `llx_socpeople` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `llx_socpeople` DISABLE KEYS */;
|
||||||
INSERT INTO `llx_socpeople` VALUES (1,'2010-07-08 14:26:14','2016-01-16 15:07:51',1,1,NULL,'MR','Indra','Mahala','','','',297,117,'2010-07-08','Project leader','','','','','','','',NULL,0,0,1,12,'Met during a congress at Dubai','',NULL,NULL,NULL,1),(2,'2010-07-08 22:44:50','2010-07-08 20:59:57',NULL,1,NULL,'MR','Freeman','Public','','','',200,11,NULL,'','','','','','','',NULL,NULL,0,0,1,1,'A friend that is a free contact not linked to any company',NULL,NULL,NULL,NULL,1),(3,'2010-07-08 22:59:02','2016-01-22 17:30:07',NULL,1,NULL,'MR','Mywife','Nicy','','','',NULL,11,'1980-10-03','','','','','','','','',NULL,1,0,1,12,'This is a private contact','',NULL,NULL,NULL,1),(4,'2010-07-09 00:16:58','2010-07-08 22:16:58',6,1,NULL,'MR','Rotchield','Evan','','','',NULL,6,NULL,'Bank director','','','','','','',NULL,NULL,0,0,1,1,'The bank director',NULL,NULL,NULL,NULL,1),(6,'2011-08-01 02:41:26','2016-01-22 17:29:53',17,1,NULL,'','Bookkeeper','Bob','99 account street','123456','BigTown',NULL,4,NULL,'book keeper','','','','','','','',NULL,0,0,1,12,'','',NULL,NULL,NULL,1),(7,'2016-07-30 16:11:06','2016-07-30 12:16:07',NULL,1,'','MR','Dad','','','','',NULL,14,'1967-09-04','','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(8,'2016-07-30 16:13:03','2016-07-30 12:15:58',NULL,1,'','MLE','Mom','','','','',NULL,14,NULL,'','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(9,'2016-07-30 16:14:41','2016-07-30 12:15:51',NULL,1,'','MR','Francky','','','89455','Virigia',NULL,205,'1980-07-09','Baker','555-98989898','','','','francky@example.com','','','',0,0,12,12,'','',NULL,NULL,NULL,1),(10,'2016-07-30 16:26:22','2016-07-30 12:52:38',10,1,'','MR','Eldy','','','33600','Pessac',NULL,1,'1972-10-10','Dolibarr project leader','','','','','eldy@example.com','','','ldestailleur_200x200.jpg',0,0,NULL,12,'','',NULL,NULL,NULL,1),(11,'2017-05-12 13:16:36','2017-05-12 09:18:20',11,1,'','MR','Smith','Laurent','45 Big road','897','Seattle',NULL,11,NULL,'Director','','','','','','','','ldestailleur_200x200.png',0,0,12,12,'','',NULL,NULL,NULL,1),(12,'2017-05-12 13:19:31','2017-05-12 09:19:42',11,1,'','MR','Einstein','','','','',NULL,11,NULL,'Genius','333444555','','','','genius@example.com','','','Einstein.jpg',0,0,12,12,'','',NULL,NULL,NULL,1);
|
INSERT INTO `llx_socpeople` VALUES (1,'2010-07-08 14:26:14','2016-01-16 15:07:51',1,1,NULL,'MR','Indra','Mahala','','','',297,117,'2010-07-08','Project leader','','','','','','','',NULL,0,0,1,12,'Met during a congress at Dubai','',NULL,NULL,NULL,1),(2,'2010-07-08 22:44:50','2010-07-08 20:59:57',NULL,1,NULL,'MR','Freeman','Public','','','',200,11,NULL,'','','','','','','',NULL,NULL,0,0,1,1,'A friend that is a free contact not linked to any company',NULL,NULL,NULL,NULL,1),(3,'2010-07-08 22:59:02','2016-01-22 17:30:07',NULL,1,NULL,'MR','Mywife','Nicy','','','',NULL,11,'1980-10-03','','','','','','','','',NULL,1,0,1,12,'This is a private contact','',NULL,NULL,NULL,1),(4,'2010-07-09 00:16:58','2010-07-08 22:16:58',6,1,NULL,'MR','Rotchield','Evan','','','',NULL,6,NULL,'Bank director','','','','','','',NULL,NULL,0,0,1,1,'The bank director',NULL,NULL,NULL,NULL,1),(6,'2011-08-01 02:41:26','2016-01-22 17:29:53',17,1,NULL,'','Bookkeeper','Bob','99 account street','123456','BigTown',NULL,4,NULL,'book keeper','','','','','','','',NULL,0,0,1,12,'','',NULL,NULL,NULL,1),(7,'2016-07-30 16:11:06','2016-07-30 12:16:07',NULL,1,'','MR','Dad','','','','',NULL,14,'1967-09-04','','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(8,'2016-07-30 16:13:03','2016-07-30 12:15:58',NULL,1,'','MLE','Mom','','','','',NULL,14,NULL,'','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(9,'2016-07-30 16:14:41','2016-07-30 12:15:51',NULL,1,'','MR','Francky','','','89455','Virigia',NULL,205,'1980-07-09','Baker','555-98989898','','','','francky@example.com','','','',0,0,12,12,'','',NULL,NULL,NULL,1),(10,'2016-07-30 16:26:22','2016-07-30 12:52:38',10,1,'','MR','Eldy','','','33600','Pessac',NULL,1,'1972-10-10','Dolibarr project leader','','','','','demo@example.com','','','ldestailleur_200x200.jpg',0,0,NULL,12,'','',NULL,NULL,NULL,1),(11,'2017-05-12 13:16:36','2017-05-12 09:18:20',11,1,'','MR','Smith','Laurent','45 Big road','897','Seattle',NULL,11,NULL,'Director','','','','','','','','ldestailleur_200x200.png',0,0,12,12,'','',NULL,NULL,NULL,1),(12,'2017-05-12 13:19:31','2017-05-12 09:19:42',11,1,'','MR','Einstein','','','','',NULL,11,NULL,'Genius','333444555','','','','genius@example.com','','','Einstein.jpg',0,0,12,12,'','',NULL,NULL,NULL,1);
|
||||||
/*!40000 ALTER TABLE `llx_socpeople` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `llx_socpeople` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
|||||||
@ -9181,7 +9181,7 @@ CREATE TABLE `llx_socpeople` (
|
|||||||
|
|
||||||
LOCK TABLES `llx_socpeople` WRITE;
|
LOCK TABLES `llx_socpeople` WRITE;
|
||||||
/*!40000 ALTER TABLE `llx_socpeople` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `llx_socpeople` DISABLE KEYS */;
|
||||||
INSERT INTO `llx_socpeople` VALUES (1,'2010-07-08 14:26:14','2016-01-16 15:07:51',1,1,NULL,'MR','Indra','Mahala','','','',297,117,'2010-07-08','Project leader','','','','','','','',NULL,0,0,1,12,'Met during a congress at Dubai','',NULL,NULL,NULL,1),(2,'2010-07-08 22:44:50','2010-07-08 20:59:57',NULL,1,NULL,'MR','Freeman','Public','','','',200,11,NULL,'','','','','','','',NULL,NULL,0,0,1,1,'A friend that is a free contact not linked to any company',NULL,NULL,NULL,NULL,1),(3,'2010-07-08 22:59:02','2016-01-22 17:30:07',NULL,1,NULL,'MR','Mywife','Nicy','','','',NULL,11,'1980-10-03','','','','','','','','',NULL,1,0,1,12,'This is a private contact','',NULL,NULL,NULL,1),(4,'2010-07-09 00:16:58','2010-07-08 22:16:58',6,1,NULL,'MR','Rotchield','Evan','','','',NULL,6,NULL,'Bank director','','','','','','',NULL,NULL,0,0,1,1,'The bank director',NULL,NULL,NULL,NULL,1),(6,'2011-08-01 02:41:26','2016-01-22 17:29:53',17,1,NULL,'','Bookkeeper','Bob','99 account street','123456','BigTown',NULL,4,NULL,'book keeper','','','','','','','',NULL,0,0,1,12,'','',NULL,NULL,NULL,1),(7,'2016-07-30 16:11:06','2016-07-30 12:16:07',NULL,1,'','MR','Dad','','','','',NULL,14,'1967-09-04','','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(8,'2016-07-30 16:13:03','2016-07-30 12:15:58',NULL,1,'','MLE','Mom','','','','',NULL,14,NULL,'','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(9,'2016-07-30 16:14:41','2016-07-30 12:15:51',NULL,1,'','MR','Francky','','','89455','Virigia',NULL,205,'1980-07-09','Baker','555-98989898','','','','francky@example.com','','','',0,0,12,12,'','',NULL,NULL,NULL,1),(10,'2016-07-30 16:26:22','2016-07-30 12:52:38',10,1,'','MR','Eldy','','','33600','Pessac',NULL,1,'1972-10-10','Dolibarr project leader','','','','','eldy@example.com','','','ldestailleur_200x200.jpg',0,0,NULL,12,'','',NULL,NULL,NULL,1),(11,'2017-05-12 13:16:36','2017-05-12 09:18:20',11,1,'','MR','Smith','Laurent','45 Big road','897','Seattle',NULL,11,NULL,'Director','','','','','','','','ldestailleur_200x200.png',0,0,12,12,'','',NULL,NULL,NULL,1),(12,'2017-05-12 13:19:31','2017-05-12 09:19:42',11,1,'','MR','Einstein','','','','',NULL,11,NULL,'Genius','333444555','','','','genius@example.com','','','Einstein.jpg',0,0,12,12,'','',NULL,NULL,NULL,1);
|
INSERT INTO `llx_socpeople` VALUES (1,'2010-07-08 14:26:14','2016-01-16 15:07:51',1,1,NULL,'MR','Indra','Mahala','','','',297,117,'2010-07-08','Project leader','','','','','','','',NULL,0,0,1,12,'Met during a congress at Dubai','',NULL,NULL,NULL,1),(2,'2010-07-08 22:44:50','2010-07-08 20:59:57',NULL,1,NULL,'MR','Freeman','Public','','','',200,11,NULL,'','','','','','','',NULL,NULL,0,0,1,1,'A friend that is a free contact not linked to any company',NULL,NULL,NULL,NULL,1),(3,'2010-07-08 22:59:02','2016-01-22 17:30:07',NULL,1,NULL,'MR','Mywife','Nicy','','','',NULL,11,'1980-10-03','','','','','','','','',NULL,1,0,1,12,'This is a private contact','',NULL,NULL,NULL,1),(4,'2010-07-09 00:16:58','2010-07-08 22:16:58',6,1,NULL,'MR','Rotchield','Evan','','','',NULL,6,NULL,'Bank director','','','','','','',NULL,NULL,0,0,1,1,'The bank director',NULL,NULL,NULL,NULL,1),(6,'2011-08-01 02:41:26','2016-01-22 17:29:53',17,1,NULL,'','Bookkeeper','Bob','99 account street','123456','BigTown',NULL,4,NULL,'book keeper','','','','','','','',NULL,0,0,1,12,'','',NULL,NULL,NULL,1),(7,'2016-07-30 16:11:06','2016-07-30 12:16:07',NULL,1,'','MR','Dad','','','','',NULL,14,'1967-09-04','','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(8,'2016-07-30 16:13:03','2016-07-30 12:15:58',NULL,1,'','MLE','Mom','','','','',NULL,14,NULL,'','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(9,'2016-07-30 16:14:41','2016-07-30 12:15:51',NULL,1,'','MR','Francky','','','89455','Virigia',NULL,205,'1980-07-09','Baker','555-98989898','','','','francky@example.com','','','',0,0,12,12,'','',NULL,NULL,NULL,1),(10,'2016-07-30 16:26:22','2016-07-30 12:52:38',10,1,'','MR','Eldy','','','33600','Pessac',NULL,1,'1972-10-10','Dolibarr project leader','','','','','demo@example.com','','','ldestailleur_200x200.jpg',0,0,NULL,12,'','',NULL,NULL,NULL,1),(11,'2017-05-12 13:16:36','2017-05-12 09:18:20',11,1,'','MR','Smith','Laurent','45 Big road','897','Seattle',NULL,11,NULL,'Director','','','','','','','','ldestailleur_200x200.png',0,0,12,12,'','',NULL,NULL,NULL,1),(12,'2017-05-12 13:19:31','2017-05-12 09:19:42',11,1,'','MR','Einstein','','','','',NULL,11,NULL,'Genius','333444555','','','','genius@example.com','','','Einstein.jpg',0,0,12,12,'','',NULL,NULL,NULL,1);
|
||||||
/*!40000 ALTER TABLE `llx_socpeople` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `llx_socpeople` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
|||||||
@ -6360,7 +6360,7 @@ CREATE TABLE `llx_emailcollector_emailcollector` (
|
|||||||
|
|
||||||
LOCK TABLES `llx_emailcollector_emailcollector` WRITE;
|
LOCK TABLES `llx_emailcollector_emailcollector` WRITE;
|
||||||
/*!40000 ALTER TABLE `llx_emailcollector_emailcollector` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `llx_emailcollector_emailcollector` DISABLE KEYS */;
|
||||||
INSERT INTO `llx_emailcollector_emailcollector` VALUES (1,1,'MyEmailCollector1','My email collector 1','aaa','imap.gmail.com','testldr10@gmail.com','testldr10-10','INBOX','','','aftercollect','2018-11-19 15:21:07','1 emails analyzed, 1 emails successfuly processed (for 3 record/actions done) by collector',NULL,NULL,'2018-10-31 18:08:05','2018-10-31 17:08:05',12,12,NULL,1,'OK',0);
|
INSERT INTO `llx_emailcollector_emailcollector` VALUES (1,1,'MyEmailCollector1','My email collector 1','aaa','imap.gmail.com','testldr10@example.com','testldr10-10','INBOX','','','aftercollect','2018-11-19 15:21:07','1 emails analyzed, 1 emails successfuly processed (for 3 record/actions done) by collector',NULL,NULL,'2018-10-31 18:08:05','2018-10-31 17:08:05',12,12,NULL,1,'OK',0);
|
||||||
/*!40000 ALTER TABLE `llx_emailcollector_emailcollector` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `llx_emailcollector_emailcollector` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
@ -12450,7 +12450,7 @@ CREATE TABLE `llx_socpeople` (
|
|||||||
|
|
||||||
LOCK TABLES `llx_socpeople` WRITE;
|
LOCK TABLES `llx_socpeople` WRITE;
|
||||||
/*!40000 ALTER TABLE `llx_socpeople` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `llx_socpeople` DISABLE KEYS */;
|
||||||
INSERT INTO `llx_socpeople` VALUES (1,'2010-07-08 14:26:14','2016-01-16 15:07:51',1,1,NULL,'MR','Indra','Mahala','','','',297,117,'2010-07-08','Project leader','','','','','','','',NULL,0,0,1,12,'Met during a congress at Dubai','',NULL,NULL,NULL,1),(2,'2010-07-08 22:44:50','2010-07-08 20:59:57',NULL,1,NULL,'MR','Freeman','Public','','','',200,11,NULL,'','','','','','','',NULL,NULL,0,0,1,1,'A friend that is a free contact not linked to any company',NULL,NULL,NULL,NULL,1),(3,'2010-07-08 22:59:02','2016-01-22 17:30:07',NULL,1,NULL,'MR','Mywife','Nicy','','','',NULL,11,'1980-10-03','','','','','','','','',NULL,1,0,1,12,'This is a private contact','',NULL,NULL,NULL,1),(4,'2010-07-09 00:16:58','2010-07-08 22:16:58',6,1,NULL,'MR','Rotchield','Evan','','','',NULL,6,NULL,'Bank director','','','','','','',NULL,NULL,0,0,1,1,'The bank director',NULL,NULL,NULL,NULL,1),(6,'2011-08-01 02:41:26','2016-01-22 17:29:53',17,1,NULL,'','Bookkeeper','Bob','99 account street','123456','BigTown',NULL,4,NULL,'book keeper','','','','','','','',NULL,0,0,1,12,'','',NULL,NULL,NULL,1),(7,'2016-07-30 16:11:06','2016-07-30 12:16:07',NULL,1,'','MR','Dad','','','','',NULL,14,'1967-09-04','','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(8,'2016-07-30 16:13:03','2016-07-30 12:15:58',NULL,1,'','MLE','Mom','','','','',NULL,14,NULL,'','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(9,'2016-07-30 16:14:41','2016-07-30 12:15:51',NULL,1,'','MR','Francky','','','89455','Virigia',NULL,205,'1980-07-09','Baker','555-98989898','','','','francky@example.com','','','',0,0,12,12,'','',NULL,NULL,NULL,1),(10,'2016-07-30 16:26:22','2016-07-30 12:52:38',10,1,'','MR','Eldy','','','33600','Pessac',NULL,1,'1972-10-10','Dolibarr project leader','','','','','eldy@example.com','','','ldestailleur_200x200.jpg',0,0,NULL,12,'','',NULL,NULL,NULL,1),(11,'2017-05-12 13:16:36','2017-05-12 09:18:20',11,1,'','MR','Smith','Laurent','45 Big road','897','Seattle',NULL,11,NULL,'Director','','','','','','','','ldestailleur_200x200.png',0,0,12,12,'','',NULL,NULL,NULL,1),(12,'2017-05-12 13:19:31','2017-05-12 09:19:42',11,1,'','MR','Einstein','','','','',NULL,11,NULL,'Genius','333444555','','','','genius@example.com','','','Einstein.jpg',0,0,12,12,'','',NULL,NULL,NULL,1);
|
INSERT INTO `llx_socpeople` VALUES (1,'2010-07-08 14:26:14','2016-01-16 15:07:51',1,1,NULL,'MR','Indra','Mahala','','','',297,117,'2010-07-08','Project leader','','','','','','','',NULL,0,0,1,12,'Met during a congress at Dubai','',NULL,NULL,NULL,1),(2,'2010-07-08 22:44:50','2010-07-08 20:59:57',NULL,1,NULL,'MR','Freeman','Public','','','',200,11,NULL,'','','','','','','',NULL,NULL,0,0,1,1,'A friend that is a free contact not linked to any company',NULL,NULL,NULL,NULL,1),(3,'2010-07-08 22:59:02','2016-01-22 17:30:07',NULL,1,NULL,'MR','Mywife','Nicy','','','',NULL,11,'1980-10-03','','','','','','','','',NULL,1,0,1,12,'This is a private contact','',NULL,NULL,NULL,1),(4,'2010-07-09 00:16:58','2010-07-08 22:16:58',6,1,NULL,'MR','Rotchield','Evan','','','',NULL,6,NULL,'Bank director','','','','','','',NULL,NULL,0,0,1,1,'The bank director',NULL,NULL,NULL,NULL,1),(6,'2011-08-01 02:41:26','2016-01-22 17:29:53',17,1,NULL,'','Bookkeeper','Bob','99 account street','123456','BigTown',NULL,4,NULL,'book keeper','','','','','','','',NULL,0,0,1,12,'','',NULL,NULL,NULL,1),(7,'2016-07-30 16:11:06','2016-07-30 12:16:07',NULL,1,'','MR','Dad','','','','',NULL,14,'1967-09-04','','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(8,'2016-07-30 16:13:03','2016-07-30 12:15:58',NULL,1,'','MLE','Mom','','','','',NULL,14,NULL,'','','','','','','','','',1,0,12,12,'','',NULL,NULL,NULL,1),(9,'2016-07-30 16:14:41','2016-07-30 12:15:51',NULL,1,'','MR','Francky','','','89455','Virigia',NULL,205,'1980-07-09','Baker','555-98989898','','','','francky@example.com','','','',0,0,12,12,'','',NULL,NULL,NULL,1),(10,'2016-07-30 16:26:22','2016-07-30 12:52:38',10,1,'','MR','Eldy','','','33600','Pessac',NULL,1,'1972-10-10','Dolibarr project leader','','','','','demo@example.com','','','ldestailleur_200x200.jpg',0,0,NULL,12,'','',NULL,NULL,NULL,1),(11,'2017-05-12 13:16:36','2017-05-12 09:18:20',11,1,'','MR','Smith','Laurent','45 Big road','897','Seattle',NULL,11,NULL,'Director','','','','','','','','ldestailleur_200x200.png',0,0,12,12,'','',NULL,NULL,NULL,1),(12,'2017-05-12 13:19:31','2017-05-12 09:19:42',11,1,'','MR','Einstein','','','','',NULL,11,NULL,'Genius','333444555','','','','genius@example.com','','','Einstein.jpg',0,0,12,12,'','',NULL,NULL,NULL,1);
|
||||||
/*!40000 ALTER TABLE `llx_socpeople` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `llx_socpeople` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -176,10 +176,61 @@ export list="
|
|||||||
--ignore-table=$base.llx_advanced_extrafields
|
--ignore-table=$base.llx_advanced_extrafields
|
||||||
--ignore-table=$base.llx_advanced_extrafields_options
|
--ignore-table=$base.llx_advanced_extrafields_options
|
||||||
--ignore-table=$base.llx_advanced_extrafields_values
|
--ignore-table=$base.llx_advanced_extrafields_values
|
||||||
|
--ignore-table=$base.llx_agefodd_calendrier
|
||||||
|
--ignore-table=$base.llx_agefodd_certif_state
|
||||||
|
--ignore-table=$base.llx_agefodd_certificate_type
|
||||||
|
--ignore-table=$base.llx_agefodd_contact
|
||||||
|
--ignore-table=$base.llx_agefodd_convention
|
||||||
|
--ignore-table=$base.llx_agefodd_convention_stagiaire
|
||||||
|
--ignore-table=$base.llx_agefodd_cursus
|
||||||
|
--ignore-table=$base.llx_agefodd_cursus_extrafields
|
||||||
|
--ignore-table=$base.llx_agefodd_formateur
|
||||||
|
--ignore-table=$base.llx_agefodd_formateur_category
|
||||||
|
--ignore-table=$base.llx_agefodd_formateur_category_dict
|
||||||
|
--ignore-table=$base.llx_agefodd_formateur_training
|
||||||
|
--ignore-table=$base.llx_agefodd_formateur_type
|
||||||
|
--ignore-table=$base.llx_agefodd_formation_catalogue
|
||||||
|
--ignore-table=$base.llx_agefodd_formation_catalogue_extrafields
|
||||||
|
--ignore-table=$base.llx_agefodd_formation_catalogue_modules
|
||||||
|
--ignore-table=$base.llx_agefodd_formation_catalogue_type
|
||||||
|
--ignore-table=$base.llx_agefodd_formation_catalogue_type_bpf
|
||||||
|
--ignore-table=$base.llx_agefodd_formation_cursus
|
||||||
|
--ignore-table=$base.llx_agefodd_formation_objectifs_peda
|
||||||
|
--ignore-table=$base.llx_agefodd_opca
|
||||||
|
--ignore-table=$base.llx_agefodd_place
|
||||||
|
--ignore-table=$base.llx_agefodd_reg_interieur
|
||||||
|
--ignore-table=$base.llx_agefodd_session
|
||||||
|
--ignore-table=$base.llx_agefodd_session_adminsitu
|
||||||
|
--ignore-table=$base.llx_agefodd_session_admlevel
|
||||||
|
--ignore-table=$base.llx_agefodd_session_calendrier
|
||||||
|
--ignore-table=$base.llx_agefodd_session_commercial
|
||||||
|
--ignore-table=$base.llx_agefodd_session_contact
|
||||||
|
--ignore-table=$base.llx_agefodd_session_element
|
||||||
|
--ignore-table=$base.llx_agefodd_session_extrafields
|
||||||
|
--ignore-table=$base.llx_agefodd_session_formateur
|
||||||
|
--ignore-table=$base.llx_agefodd_session_formateur_calendrier
|
||||||
|
--ignore-table=$base.llx_agefodd_session_stagiaire
|
||||||
|
--ignore-table=$base.llx_agefodd_session_stagiaire_heures
|
||||||
|
--ignore-table=$base.llx_agefodd_session_status_type
|
||||||
|
--ignore-table=$base.llx_agefodd_stagiaire
|
||||||
|
--ignore-table=$base.llx_agefodd_stagiaire_certif
|
||||||
|
--ignore-table=$base.llx_agefodd_stagiaire_cursus
|
||||||
|
--ignore-table=$base.llx_agefodd_stagiaire_extrafields
|
||||||
|
--ignore-table=$base.llx_agefodd_stagiaire_type
|
||||||
|
--ignore-table=$base.llx_agefodd_training_admlevel
|
||||||
--ignore-table=$base.llx_askpricesupplier
|
--ignore-table=$base.llx_askpricesupplier
|
||||||
--ignore-table=$base.llx_askpricesupplier_extrafields
|
--ignore-table=$base.llx_askpricesupplier_extrafields
|
||||||
--ignore-table=$base.llx_askpricesupplierdet
|
--ignore-table=$base.llx_askpricesupplierdet
|
||||||
--ignore-table=$base.llx_askpricesupplierdet_extrafields
|
--ignore-table=$base.llx_askpricesupplierdet_extrafields
|
||||||
|
--ignore-table=$base.llx_assetOf
|
||||||
|
--ignore-table=$base.llx_assetOf_line
|
||||||
|
--ignore-table=$base.llx_asset_workstation_of
|
||||||
|
--ignore-table=$base.llx_asset_workstation_product
|
||||||
|
--ignore-table=$base.llx_asset_workstation_task
|
||||||
|
--ignore-table=$base.llx_assetof_amounts
|
||||||
|
--ignore-table=$base.llx_asset_workstation_of
|
||||||
|
--ignore-table=$base.llx_asset_workstation_of
|
||||||
|
--ignore-table=$base.llx_asset_workstation_of
|
||||||
--ignore-table=$base.llx_bookkeeping
|
--ignore-table=$base.llx_bookkeeping
|
||||||
--ignore-table=$base.llx_bootstrap
|
--ignore-table=$base.llx_bootstrap
|
||||||
--ignore-table=$base.llx_bt_namemap
|
--ignore-table=$base.llx_bt_namemap
|
||||||
@ -226,15 +277,28 @@ export list="
|
|||||||
--ignore-table=$base.llx_ecommerce_site
|
--ignore-table=$base.llx_ecommerce_site
|
||||||
--ignore-table=$base.llx_ecommerce_societe
|
--ignore-table=$base.llx_ecommerce_societe
|
||||||
--ignore-table=$base.llx_ecommerce_socpeople
|
--ignore-table=$base.llx_ecommerce_socpeople
|
||||||
--ignore-table=$base.llx_element_rang
|
--ignore-table=$base.llx_element_rang
|
||||||
|
--ignore-table=$base.llx_element_tag
|
||||||
|
--ignore-table=$base.llx_eleves
|
||||||
|
--ignore-table=$base.llx_eleves_extrafields
|
||||||
--ignore-table=$base.llx_entity
|
--ignore-table=$base.llx_entity
|
||||||
|
--ignore-table=$base.llx_entity_extrafields
|
||||||
|
--ignore-table=$base.llx_entity_thirdparty
|
||||||
|
--ignore-table=$base.llx_equipement_factory
|
||||||
|
--ignore-table=$base.llx_factory
|
||||||
|
--ignore-table=$base.llx_factory_extrafields
|
||||||
|
--ignore-table=$base.llx_factorydet
|
||||||
--ignore-table=$base.llx_filemanager_roots
|
--ignore-table=$base.llx_filemanager_roots
|
||||||
--ignore-table=$base.llx_fournisseur_ca
|
--ignore-table=$base.llx_fournisseur_ca
|
||||||
--ignore-table=$base.llx_google_maps
|
--ignore-table=$base.llx_google_maps
|
||||||
|
--ignore-table=$base.llx_lead
|
||||||
|
--ignore-table=$base.llx_lead_extrafields
|
||||||
|
--ignore-table=$base.llx_milestone
|
||||||
--ignore-table=$base.llx_milestone
|
--ignore-table=$base.llx_milestone
|
||||||
--ignore-table=$base.llx_monitoring_probes
|
--ignore-table=$base.llx_monitoring_probes
|
||||||
--ignore-table=$base.llx_m
|
--ignore-table=$base.llx_m
|
||||||
--ignore-table=$base.llx_m_extrafields
|
--ignore-table=$base.llx_m_extrafields
|
||||||
|
--ignore-table=$base.llx_monmodule_abcdef
|
||||||
--ignore-table=$base.llx_notes
|
--ignore-table=$base.llx_notes
|
||||||
--ignore-table=$base.llx_pos_cash
|
--ignore-table=$base.llx_pos_cash
|
||||||
--ignore-table=$base.llx_pos_control_cash
|
--ignore-table=$base.llx_pos_control_cash
|
||||||
@ -256,6 +320,9 @@ export list="
|
|||||||
--ignore-table=$base.llx_ultimatepdf
|
--ignore-table=$base.llx_ultimatepdf
|
||||||
--ignore-table=$base.llx_update_modules
|
--ignore-table=$base.llx_update_modules
|
||||||
--ignore-table=$base.llx_ventilation_achat
|
--ignore-table=$base.llx_ventilation_achat
|
||||||
|
--ignore-table=$base.tmp_llx_accouting_account
|
||||||
|
--ignore-table=$base.tmp_llx_product_batch
|
||||||
|
--ignore-table=$base.tmp_llx_product_batch2
|
||||||
"
|
"
|
||||||
echo "mysqldump -P$port -u$admin -p***** $list $base > $mydir/$dumpfile"
|
echo "mysqldump -P$port -u$admin -p***** $list $base > $mydir/$dumpfile"
|
||||||
mysqldump -P$port -u$admin $passwd $list $base > $mydir/$dumpfile
|
mysqldump -P$port -u$admin $passwd $list $base > $mydir/$dumpfile
|
||||||
|
|||||||
@ -46,9 +46,9 @@ if (! $res && file_exists($path."../../htdocs/master.inc.php")) $res=@include $p
|
|||||||
if (! $res && file_exists("../master.inc.php")) $res=@include "../master.inc.php";
|
if (! $res && file_exists("../master.inc.php")) $res=@include "../master.inc.php";
|
||||||
if (! $res && file_exists("../../master.inc.php")) $res=@include "../../master.inc.php";
|
if (! $res && file_exists("../../master.inc.php")) $res=@include "../../master.inc.php";
|
||||||
if (! $res && file_exists("../../../master.inc.php")) $res=@include "../../../master.inc.php";
|
if (! $res && file_exists("../../../master.inc.php")) $res=@include "../../../master.inc.php";
|
||||||
if (! $res && preg_match('/\/nltechno([^\/]*)\//',$_SERVER["PHP_SELF"],$reg)) $res=@include $path."../../../dolibarr".$reg[1]."/htdocs/master.inc.php"; // Used on dev env only
|
if (! $res && preg_match('/\/nltechno([^\/]*)\//', $_SERVER["PHP_SELF"], $reg)) $res=@include $path."../../../dolibarr".$reg[1]."/htdocs/master.inc.php"; // Used on dev env only
|
||||||
if (! $res && preg_match('/\/nltechno([^\/]*)\//',$_SERVER["PHP_SELF"],$reg)) $res=@include "../../../dolibarr".$reg[1]."/htdocs/master.inc.php"; // Used on dev env only
|
if (! $res && preg_match('/\/nltechno([^\/]*)\//', $_SERVER["PHP_SELF"], $reg)) $res=@include "../../../dolibarr".$reg[1]."/htdocs/master.inc.php"; // Used on dev env only
|
||||||
if (! $res) die ("Failed to include master.inc.php file\n");
|
if (! $res) die("Failed to include master.inc.php file\n");
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||||
|
|
||||||
|
|
||||||
@ -58,7 +58,7 @@ include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
|||||||
|
|
||||||
$login='';
|
$login='';
|
||||||
$server='';
|
$server='';
|
||||||
if (preg_match('/^(.*)@(.*):(.*)$/',$sourceserver,$reg))
|
if (preg_match('/^(.*)@(.*):(.*)$/', $sourceserver, $reg))
|
||||||
{
|
{
|
||||||
$login=$reg[1];
|
$login=$reg[1];
|
||||||
$server=$reg[2];
|
$server=$reg[2];
|
||||||
@ -84,7 +84,7 @@ print 'SFTP connect string : '.$sftpconnectstring."\n";
|
|||||||
|
|
||||||
// SFTP connect
|
// SFTP connect
|
||||||
if (! function_exists("ssh2_connect")) {
|
if (! function_exists("ssh2_connect")) {
|
||||||
dol_print_error('','ssh2_connect function does not exists'); exit(1);
|
dol_print_error('', 'ssh2_connect function does not exists'); exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
$connection = ssh2_connect($server, 22);
|
$connection = ssh2_connect($server, 22);
|
||||||
@ -92,7 +92,7 @@ if ($connection)
|
|||||||
{
|
{
|
||||||
if (! @ssh2_auth_password($connection, $login, $password))
|
if (! @ssh2_auth_password($connection, $login, $password))
|
||||||
{
|
{
|
||||||
dol_syslog("Could not authenticate with username ".$login." . and password ".preg_replace('/./', '*', $password),LOG_ERR);
|
dol_syslog("Could not authenticate with username ".$login." . and password ".preg_replace('/./', '*', $password), LOG_ERR);
|
||||||
exit(-5);
|
exit(-5);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -112,11 +112,11 @@ if ($connection)
|
|||||||
ssh2_scp_recv($connection, $sourcefile, $targetdir.$targetfile);
|
ssh2_scp_recv($connection, $sourcefile, $targetdir.$targetfile);
|
||||||
|
|
||||||
$fullcommand="cat ".$targetdir.$targetfile." | mysql -h".$databaseserver." -u".$loginbase." -p".$passwordbase." -D ".$database;
|
$fullcommand="cat ".$targetdir.$targetfile." | mysql -h".$databaseserver." -u".$loginbase." -p".$passwordbase." -D ".$database;
|
||||||
if (preg_match('/\.bz2$/',$targetfile))
|
if (preg_match('/\.bz2$/', $targetfile))
|
||||||
{
|
{
|
||||||
$fullcommand="bzip2 -c -d ".$targetdir.$targetfile." | mysql -h".$databaseserver." -u".$loginbase." -p".$passwordbase." -D ".$database;
|
$fullcommand="bzip2 -c -d ".$targetdir.$targetfile." | mysql -h".$databaseserver." -u".$loginbase." -p".$passwordbase." -D ".$database;
|
||||||
}
|
}
|
||||||
if (preg_match('/\.gz$/',$targetfile))
|
if (preg_match('/\.gz$/', $targetfile))
|
||||||
{
|
{
|
||||||
$fullcommand="gzip -d ".$targetdir.$targetfile." | mysql -h".$databaseserver." -u".$loginbase." -p".$passwordbase." -D ".$database;
|
$fullcommand="gzip -d ".$targetdir.$targetfile." | mysql -h".$databaseserver." -u".$loginbase." -p".$passwordbase." -D ".$database;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,9 +41,9 @@ if (! $res && file_exists($path."../../htdocs/master.inc.php")) $res=@include $p
|
|||||||
if (! $res && file_exists("../master.inc.php")) $res=@include "../master.inc.php";
|
if (! $res && file_exists("../master.inc.php")) $res=@include "../master.inc.php";
|
||||||
if (! $res && file_exists("../../master.inc.php")) $res=@include "../../master.inc.php";
|
if (! $res && file_exists("../../master.inc.php")) $res=@include "../../master.inc.php";
|
||||||
if (! $res && file_exists("../../../master.inc.php")) $res=@include "../../../master.inc.php";
|
if (! $res && file_exists("../../../master.inc.php")) $res=@include "../../../master.inc.php";
|
||||||
if (! $res && preg_match('/\/nltechno([^\/]*)\//',$_SERVER["PHP_SELF"],$reg)) $res=@include $path."../../../dolibarr".$reg[1]."/htdocs/master.inc.php"; // Used on dev env only
|
if (! $res && preg_match('/\/nltechno([^\/]*)\//', $_SERVER["PHP_SELF"], $reg)) $res=@include $path."../../../dolibarr".$reg[1]."/htdocs/master.inc.php"; // Used on dev env only
|
||||||
if (! $res && preg_match('/\/nltechno([^\/]*)\//',$_SERVER["PHP_SELF"],$reg)) $res=@include "../../../dolibarr".$reg[1]."/htdocs/master.inc.php"; // Used on dev env only
|
if (! $res && preg_match('/\/nltechno([^\/]*)\//', $_SERVER["PHP_SELF"], $reg)) $res=@include "../../../dolibarr".$reg[1]."/htdocs/master.inc.php"; // Used on dev env only
|
||||||
if (! $res) die ("Failed to include master.inc.php file\n");
|
if (! $res) die("Failed to include master.inc.php file\n");
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
2
dev/resources/dbmodel/README
Normal file
2
dev/resources/dbmodel/README
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
This directory contains the file with the graphical database structure.
|
||||||
|
It can be read with MySQL Workbench software.
|
||||||
1
dev/resources/facturx-zugferd/README.txt
Normal file
1
dev/resources/facturx-zugferd/README.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
See https://github.com/atgp/factur-x
|
||||||
BIN
dev/resources/iso-normes/Accountancy-format_Ebp_txt.pdf
Normal file
BIN
dev/resources/iso-normes/Accountancy-format_Ebp_txt.pdf
Normal file
Binary file not shown.
@ -8,13 +8,13 @@
|
|||||||
<exclude-pattern type="relative">documents</exclude-pattern>
|
<exclude-pattern type="relative">documents</exclude-pattern>
|
||||||
<exclude-pattern type="relative">htdocs/custom</exclude-pattern>
|
<exclude-pattern type="relative">htdocs/custom</exclude-pattern>
|
||||||
<exclude-pattern type="relative">htdocs/includes</exclude-pattern>
|
<exclude-pattern type="relative">htdocs/includes</exclude-pattern>
|
||||||
|
<exclude-pattern type="relative">htdocs/install/doctemplates/websites</exclude-pattern>
|
||||||
<exclude-pattern type="relative">htdocs/conf.php</exclude-pattern>
|
<exclude-pattern type="relative">htdocs/conf.php</exclude-pattern>
|
||||||
<exclude-pattern type="relative">*/nltechno*</exclude-pattern>
|
<exclude-pattern type="relative">*/nltechno*</exclude-pattern>
|
||||||
<exclude-pattern type="relative">*/htdocs/includes</exclude-pattern>
|
<exclude-pattern type="relative">*/htdocs/includes</exclude-pattern>
|
||||||
<exclude-pattern type="relative">*.min.css</exclude-pattern>
|
<exclude-pattern type="relative">*/htdocs/includes</exclude-pattern>
|
||||||
<exclude-pattern type="relative">*.js</exclude-pattern>
|
|
||||||
|
|
||||||
<!-- List of all tests -->
|
<!-- List of all tests -->
|
||||||
|
|
||||||
|
|
||||||
<!-- Rules from Internal Standard -->
|
<!-- Rules from Internal Standard -->
|
||||||
@ -53,12 +53,18 @@
|
|||||||
<rule ref="Generic.CodeAnalysis.UnusedFunctionParameter.FoundBeforeLastUsed">
|
<rule ref="Generic.CodeAnalysis.UnusedFunctionParameter.FoundBeforeLastUsed">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
|
<rule ref="Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed">
|
||||||
|
<severity>0</severity>
|
||||||
|
</rule>
|
||||||
<rule ref="Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass">
|
<rule ref="Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
<rule ref="Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassAfterLastUsed">
|
<rule ref="Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassAfterLastUsed">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
|
<rule ref="Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassBeforeLastUsed">
|
||||||
|
<severity>0</severity>
|
||||||
|
</rule>
|
||||||
|
|
||||||
<rule ref="Generic.CodeAnalysis.UselessOverridingMethod" />
|
<rule ref="Generic.CodeAnalysis.UselessOverridingMethod" />
|
||||||
|
|
||||||
@ -69,10 +75,13 @@
|
|||||||
<!-- Warning if action on same line than if -->
|
<!-- Warning if action on same line than if -->
|
||||||
<!--
|
<!--
|
||||||
<rule ref="Generic.ControlStructures.InlineControlStructure">
|
<rule ref="Generic.ControlStructures.InlineControlStructure">
|
||||||
<properties> <property name="error" value="false"/> </properties>
|
<properties>
|
||||||
|
<property name="error" value="false"/>
|
||||||
|
</properties>
|
||||||
</rule>
|
</rule>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
||||||
<!-- PHP code MUST use only UTF-8 without BOM. -->
|
<!-- PHP code MUST use only UTF-8 without BOM. -->
|
||||||
<rule ref="Generic.Files.ByteOrderMark"/>
|
<rule ref="Generic.Files.ByteOrderMark"/>
|
||||||
|
|
||||||
@ -91,8 +100,11 @@
|
|||||||
</properties>
|
</properties>
|
||||||
</rule>
|
</rule>
|
||||||
|
|
||||||
<!-- To disallow several statements on same line -->
|
<!-- Disallow several statements on same line -->
|
||||||
<!-- <rule ref="Generic.Formatting.DisallowMultipleStatements" /> -->
|
<!-- We want to allow 'if () { ...small code... }' on same line for better code compacity and readability -->
|
||||||
|
<rule ref="Generic.Formatting.DisallowMultipleStatements">
|
||||||
|
<severity>0</severity>
|
||||||
|
</rule>
|
||||||
|
|
||||||
<!-- Have 2 chars padding maximum and always show as errors -->
|
<!-- Have 2 chars padding maximum and always show as errors -->
|
||||||
<!--
|
<!--
|
||||||
@ -106,15 +118,16 @@
|
|||||||
<rule ref="Generic.Functions.CallTimePassByReference" />
|
<rule ref="Generic.Functions.CallTimePassByReference" />
|
||||||
|
|
||||||
<rule ref="Generic.Functions.FunctionCallArgumentSpacing" />
|
<rule ref="Generic.Functions.FunctionCallArgumentSpacing" />
|
||||||
<rule ref="Generic.Functions.FunctionCallArgumentSpacing.NoSpaceAfterComma">
|
|
||||||
|
<rule ref="Generic.Functions.FunctionCallArgumentSpacing.NoSpaceBeforeEquals">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
<rule ref="Generic.Functions.FunctionCallArgumentSpacing.NoSpaceBeforeEquals">
|
<rule ref="Generic.Functions.FunctionCallArgumentSpacing.NoSpaceBeforeEquals">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
<rule ref="Generic.Functions.FunctionCallArgumentSpacing.NoSpaceAfterEquals">
|
|
||||||
<severity>0</severity>
|
<!-- Disallow several spaces after comma -->
|
||||||
</rule>
|
<!-- We want to allow this because we want to be able to align params on several similare functions on different lines -->
|
||||||
<rule ref="Generic.Functions.FunctionCallArgumentSpacing.TooMuchSpaceAfterComma">
|
<rule ref="Generic.Functions.FunctionCallArgumentSpacing.TooMuchSpaceAfterComma">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
@ -149,7 +162,10 @@
|
|||||||
<rule ref="Generic.PHP.ForbiddenFunctions" />
|
<rule ref="Generic.PHP.ForbiddenFunctions" />
|
||||||
|
|
||||||
<!-- Warning when using @ before functions -->
|
<!-- Warning when using @ before functions -->
|
||||||
<!-- <rule ref="Generic.PHP.NoSilencedErrors" /> -->
|
<!-- We want this. Some features need this -->
|
||||||
|
<rule ref="Generic.PHP.NoSilencedErrors">
|
||||||
|
<severity>0</severity>
|
||||||
|
</rule>
|
||||||
|
|
||||||
<!-- Say if null, true, false must be uppercase (Rule 2.5 of PSR2 https://www.php-fig.org/psr/psr-2/) -->
|
<!-- Say if null, true, false must be uppercase (Rule 2.5 of PSR2 https://www.php-fig.org/psr/psr-2/) -->
|
||||||
<rule ref="Generic.PHP.LowerCaseConstant" />
|
<rule ref="Generic.PHP.LowerCaseConstant" />
|
||||||
@ -163,9 +179,20 @@
|
|||||||
<!-- Disallow usage of tab -->
|
<!-- Disallow usage of tab -->
|
||||||
<!-- <rule ref="Generic.WhiteSpace.DisallowTabIndent" /> -->
|
<!-- <rule ref="Generic.WhiteSpace.DisallowTabIndent" /> -->
|
||||||
|
|
||||||
<!-- Check indent are done with spaces and wiht correct number -->
|
<!-- Check indent are done with spaces and with correct number -->
|
||||||
<!-- Disabled as this does not support tab -->
|
<!-- Disabled as this does not support tab -->
|
||||||
<!-- <rule ref="Generic.WhiteSpace.ScopeIndent" /> -->
|
<!-- <rule ref="Generic.WhiteSpace.ScopeIndent" /> -->
|
||||||
|
<!-- TODO Enable this
|
||||||
|
<arg name="tab-width" value="4"/>
|
||||||
|
<rule ref="Generic.WhiteSpace.ScopeIndent">
|
||||||
|
<properties>
|
||||||
|
<property name="indent" value="4"/>
|
||||||
|
<property name="tabIndent" value="true"/>
|
||||||
|
</properties>
|
||||||
|
</rule>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<rule ref="Squiz.WhiteSpace.ScopeClosingBrace.Indent" />
|
||||||
|
|
||||||
<!-- There MUST NOT be trailing whitespace at the end of non-blank lines. -->
|
<!-- There MUST NOT be trailing whitespace at the end of non-blank lines. -->
|
||||||
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace">
|
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace">
|
||||||
@ -184,7 +211,19 @@
|
|||||||
</rule>
|
</rule>
|
||||||
<rule ref="Squiz.WhiteSpace.ControlStructureSpacing.SpacingBeforeClose" />
|
<rule ref="Squiz.WhiteSpace.ControlStructureSpacing.SpacingBeforeClose" />
|
||||||
|
|
||||||
|
<rule ref="Squiz.ControlStructures.ForEachLoopDeclaration.SpaceAfterOpen" />
|
||||||
|
<rule ref="Squiz.ControlStructures.ForEachLoopDeclaration.SpaceBeforeClose" />
|
||||||
|
|
||||||
<rule ref="Squiz.Functions.MultiLineFunctionDeclaration" />
|
<rule ref="Squiz.Functions.MultiLineFunctionDeclaration" />
|
||||||
|
<rule ref="Squiz.Functions.FunctionDeclarationArgumentSpacing">
|
||||||
|
<properties>
|
||||||
|
<property name="equalsSpacing" value="1"/>
|
||||||
|
</properties>
|
||||||
|
</rule>
|
||||||
|
<rule ref="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingAfterHint">
|
||||||
|
<severity>0</severity>
|
||||||
|
</rule>
|
||||||
|
<rule ref="Squiz.Scope.MethodScope.Missing" />
|
||||||
|
|
||||||
<!-- Rules from PEAR Standard -->
|
<!-- Rules from PEAR Standard -->
|
||||||
|
|
||||||
@ -293,22 +332,29 @@
|
|||||||
|
|
||||||
<rule ref="PEAR.Commenting.InlineComment" />
|
<rule ref="PEAR.Commenting.InlineComment" />
|
||||||
|
|
||||||
<!-- <rule ref="PEAR.ControlStructures.ControlSignature" /> -->
|
<!-- Check position of { after a control structure like if (), while (), etc... -->
|
||||||
|
<!--
|
||||||
|
<rule ref="PEAR.ControlStructures.ControlSignature" />
|
||||||
|
-->
|
||||||
|
|
||||||
<!-- <rule ref="PEAR.ControlStructures.MultiLineCondition" /> -->
|
<!-- <rule ref="PEAR.ControlStructures.MultiLineCondition" /> -->
|
||||||
|
|
||||||
<!-- Test if () are removed for includes -->
|
<!-- Test if () are removed for includes -->
|
||||||
<rule ref="PEAR.Files.IncludingFile" />
|
<rule ref="PEAR.Files.IncludingFile" />
|
||||||
|
|
||||||
<!-- Disable some error messages that we do not want. -->
|
<!-- Disable some error messages that we do not want. -->
|
||||||
|
|
||||||
<rule ref="PEAR.Files.IncludingFile.UseInclude">
|
<rule ref="PEAR.Files.IncludingFile.UseInclude">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
|
<!-- TODO Enable this test. We should use require for include in prior of include when out of if -->
|
||||||
<rule ref="PEAR.Files.IncludingFile.UseIncludeOnce">
|
<rule ref="PEAR.Files.IncludingFile.UseIncludeOnce">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
<rule ref="PEAR.Files.IncludingFile.UseRequire">
|
<rule ref="PEAR.Files.IncludingFile.UseRequire">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
|
<!-- TODO Enable this test. We should use require for include in prior of include when out of if -->
|
||||||
<rule ref="PEAR.Files.IncludingFile.UseRequireOnce">
|
<rule ref="PEAR.Files.IncludingFile.UseRequireOnce">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
@ -317,12 +363,15 @@
|
|||||||
|
|
||||||
<rule ref="PEAR.Functions.FunctionCallSignature" />
|
<rule ref="PEAR.Functions.FunctionCallSignature" />
|
||||||
|
|
||||||
|
<!-- TODO Enable this test. -->
|
||||||
<rule ref="PEAR.Functions.FunctionCallSignature.CloseBracketLine">
|
<rule ref="PEAR.Functions.FunctionCallSignature.CloseBracketLine">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
|
<!-- TODO Enable this test. -->
|
||||||
<rule ref="PEAR.Functions.FunctionCallSignature.ContentAfterOpenBracket">
|
<rule ref="PEAR.Functions.FunctionCallSignature.ContentAfterOpenBracket">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
|
|
||||||
<rule ref="PEAR.Functions.FunctionCallSignature.EmptyLine">
|
<rule ref="PEAR.Functions.FunctionCallSignature.EmptyLine">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
@ -331,12 +380,6 @@
|
|||||||
</rule>
|
</rule>
|
||||||
<rule ref="PEAR.Functions.FunctionCallSignature.SpaceBeforeOpenBracket">
|
<rule ref="PEAR.Functions.FunctionCallSignature.SpaceBeforeOpenBracket">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
|
||||||
<rule ref="PEAR.Functions.FunctionCallSignature.SpaceAfterOpenBracket">
|
|
||||||
<severity>0</severity>
|
|
||||||
</rule>
|
|
||||||
<rule ref="PEAR.Functions.FunctionCallSignature.SpaceBeforeCloseBracket">
|
|
||||||
<severity>0</severity>
|
|
||||||
</rule>
|
</rule>
|
||||||
<rule ref="PEAR.Functions.FunctionCallSignature.SpaceAfterCloseBracket">
|
<rule ref="PEAR.Functions.FunctionCallSignature.SpaceAfterCloseBracket">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
@ -386,6 +429,7 @@
|
|||||||
|
|
||||||
<rule ref="PSR2.Classes.ClassDeclaration" />
|
<rule ref="PSR2.Classes.ClassDeclaration" />
|
||||||
<rule ref="PSR2.Methods.FunctionClosingBrace" />
|
<rule ref="PSR2.Methods.FunctionClosingBrace" />
|
||||||
|
<rule ref="PSR2.ControlStructures.ElseIfDeclaration.NotAllowed" />
|
||||||
|
|
||||||
<!-- This is not in PSR2 -->
|
<!-- This is not in PSR2 -->
|
||||||
<rule ref="PEAR.NamingConventions.ValidVariableName.PrivateNoUnderscore">
|
<rule ref="PEAR.NamingConventions.ValidVariableName.PrivateNoUnderscore">
|
||||||
@ -413,4 +457,10 @@
|
|||||||
<!-- The closing ?> tag MUST be omitted from files containing only PHP. -->
|
<!-- The closing ?> tag MUST be omitted from files containing only PHP. -->
|
||||||
<rule ref="Zend.Files.ClosingTag"/>
|
<rule ref="Zend.Files.ClosingTag"/>
|
||||||
|
|
||||||
|
<rule ref="PSR2.Classes.ClassDeclaration" />
|
||||||
|
<rule ref="PSR2.Methods.FunctionClosingBrace" />
|
||||||
|
<rule ref="PSR2.Files.EndFileNewline.TooMany" />
|
||||||
|
<rule ref="PSR2.Files.EndFileNewline.NoneFound" />
|
||||||
|
<rule ref="PSR2.Methods.FunctionCallSignature.SpaceBeforeOpenBracket" />
|
||||||
|
<rule ref="PSR2.Classes.PropertyDeclaration.VarUsed" />
|
||||||
</ruleset>
|
</ruleset>
|
||||||
|
|||||||
@ -9,6 +9,10 @@ fi
|
|||||||
FROM=$1-01-01
|
FROM=$1-01-01
|
||||||
TO=$1-12-31
|
TO=$1-12-31
|
||||||
|
|
||||||
|
echo "Number of contributors for the year"
|
||||||
echo "git log --since $FROM --before $TO | grep ^Author | sort -u -f -i -b | wc -l"
|
echo "git log --since $FROM --before $TO | grep ^Author | sort -u -f -i -b | wc -l"
|
||||||
git log --since $FROM --before $TO | grep ^Author | sort -u -f -i -b | wc -l
|
git log --since $FROM --before $TO | grep ^Author | sort -u -f -i -b | wc -l
|
||||||
|
|
||||||
|
|
||||||
|
echo "Number of commit for the year"
|
||||||
|
git log --pretty='format:%cd' --date=format:'%Y' | uniq -c | awk '{print "Year: "$2", commits: "$1}' | grep "Year: $1"
|
||||||
|
|||||||
@ -21,14 +21,14 @@
|
|||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|
||||||
<div class="login_table" align="center">
|
<div class="login_table center">
|
||||||
|
|
||||||
<!-- <tr><td colspan="2" valign="middle"> -->
|
<!-- <tr><td colspan="2" valign="middle"> -->
|
||||||
<div id="login_line1" align="center">
|
<div id="login_line1" class="center">
|
||||||
|
|
||||||
<div id="login_left" style="display: inline-block; min-width: 250px; margin: 0 auto;"><div class="center">
|
<div id="login_left" style="display: inline-block; min-width: 250px; margin: 0 auto;"><div class="center">
|
||||||
|
|
||||||
<table class="none" summary="Login pass" cellpadding="2" align="center">
|
<table class="none center" summary="Login pass" cellpadding="2">
|
||||||
|
|
||||||
<!-- Login -->
|
<!-- Login -->
|
||||||
<tr>
|
<tr>
|
||||||
@ -50,7 +50,7 @@
|
|||||||
</div> <!-- end div left -->
|
</div> <!-- end div left -->
|
||||||
|
|
||||||
<!-- </td>
|
<!-- </td>
|
||||||
<td align="center" valign="middle">-->
|
<td class="center" valign="middle">-->
|
||||||
<div id="login_right" style="display: inline-block; min-width: 250px; margin: 0 auto;">
|
<div id="login_right" style="display: inline-block; min-width: 250px; margin: 0 auto;">
|
||||||
|
|
||||||
<img alt="Logo" title="" src="/dolibarrnew/theme/dolibarr_logo.png" id="img_logo" />
|
<img alt="Logo" title="" src="/dolibarrnew/theme/dolibarr_logo.png" id="img_logo" />
|
||||||
|
|||||||
@ -4,7 +4,7 @@ This directory contains tools to generate translation files for a new
|
|||||||
languages or to update translation files for existing languages.
|
languages or to update translation files for existing languages.
|
||||||
See Dolibarr Wiki page:
|
See Dolibarr Wiki page:
|
||||||
http://wiki.dolibarr.org/index.php/Translator_documentation
|
http://wiki.dolibarr.org/index.php/Translator_documentation
|
||||||
For more informations on how to use them.
|
For more information on how to use them.
|
||||||
|
|
||||||
To install transifex client:
|
To install transifex client:
|
||||||
sudo pip install --upgrade transifex-client
|
sudo pip install --upgrade transifex-client
|
||||||
|
|||||||
@ -50,7 +50,7 @@ class autoTranslator
|
|||||||
* @param string $_apikey Api key
|
* @param string $_apikey Api key
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function __construct($_destlang,$_refLang,$_langDir,$_limittofile,$_apikey)
|
public function __construct($_destlang, $_refLang, $_langDir, $_limittofile, $_apikey)
|
||||||
{
|
{
|
||||||
|
|
||||||
// Set enviorment variables
|
// Set enviorment variables
|
||||||
@ -63,7 +63,7 @@ class autoTranslator
|
|||||||
|
|
||||||
// Translate
|
// Translate
|
||||||
//ini_set('default_charset','UTF-8');
|
//ini_set('default_charset','UTF-8');
|
||||||
ini_set('default_charset',$this->_outputpagecode);
|
ini_set('default_charset', $this->_outputpagecode);
|
||||||
$this->parseRefLangTranslationFiles();
|
$this->parseRefLangTranslationFiles();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,7 +83,7 @@ class autoTranslator
|
|||||||
$counter++;
|
$counter++;
|
||||||
$fileContent = null;
|
$fileContent = null;
|
||||||
$refPath = $this->_langDir.$this->_refLang.self::DIR_SEPARATOR.$file;
|
$refPath = $this->_langDir.$this->_refLang.self::DIR_SEPARATOR.$file;
|
||||||
$fileContent = file($refPath,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
|
$fileContent = file($refPath, FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
|
||||||
print "Processing file " . $file . ", with ".count($fileContent)." lines<br>\n";
|
print "Processing file " . $file . ", with ".count($fileContent)." lines<br>\n";
|
||||||
|
|
||||||
// Define target dirs
|
// Define target dirs
|
||||||
@ -93,19 +93,19 @@ class autoTranslator
|
|||||||
$targetlangs=array();
|
$targetlangs=array();
|
||||||
|
|
||||||
// If we must process all languages
|
// If we must process all languages
|
||||||
$arraytmp=dol_dir_list($this->_langDir,'directories',0);
|
$arraytmp=dol_dir_list($this->_langDir, 'directories', 0);
|
||||||
foreach($arraytmp as $dirtmp)
|
foreach($arraytmp as $dirtmp)
|
||||||
{
|
{
|
||||||
if ($dirtmp['name'] === $this->_refLang) continue; // We discard source language
|
if ($dirtmp['name'] === $this->_refLang) continue; // We discard source language
|
||||||
$tmppart=explode('_',$dirtmp['name']);
|
$tmppart=explode('_', $dirtmp['name']);
|
||||||
if (preg_match('/^en/i',$dirtmp['name'])) continue; // We discard en_* languages
|
if (preg_match('/^en/i', $dirtmp['name'])) continue; // We discard en_* languages
|
||||||
if (preg_match('/^fr/i',$dirtmp['name'])) continue; // We discard fr_* languages
|
if (preg_match('/^fr/i', $dirtmp['name'])) continue; // We discard fr_* languages
|
||||||
if (preg_match('/^es/i',$dirtmp['name'])) continue; // We discard es_* languages
|
if (preg_match('/^es/i', $dirtmp['name'])) continue; // We discard es_* languages
|
||||||
if (preg_match('/ca_ES/i',$dirtmp['name'])) continue; // We discard es_CA language
|
if (preg_match('/ca_ES/i', $dirtmp['name'])) continue; // We discard es_CA language
|
||||||
if (preg_match('/pt_BR/i',$dirtmp['name'])) continue; // We discard pt_BR language
|
if (preg_match('/pt_BR/i', $dirtmp['name'])) continue; // We discard pt_BR language
|
||||||
if (preg_match('/nl_BE/i',$dirtmp['name'])) continue; // We discard nl_BE language
|
if (preg_match('/nl_BE/i', $dirtmp['name'])) continue; // We discard nl_BE language
|
||||||
if (preg_match('/^\./i',$dirtmp['name'])) continue; // We discard files .*
|
if (preg_match('/^\./i', $dirtmp['name'])) continue; // We discard files .*
|
||||||
if (preg_match('/^CVS/i',$dirtmp['name'])) continue; // We discard CVS
|
if (preg_match('/^CVS/i', $dirtmp['name'])) continue; // We discard CVS
|
||||||
$targetlangs[]=$dirtmp['name'];
|
$targetlangs[]=$dirtmp['name'];
|
||||||
}
|
}
|
||||||
//var_dump($targetlangs);
|
//var_dump($targetlangs);
|
||||||
@ -122,7 +122,7 @@ class autoTranslator
|
|||||||
{
|
{
|
||||||
// No file present, we generate file
|
// No file present, we generate file
|
||||||
echo "File not found: " . $destPath . ". We generate it.<br>\n";
|
echo "File not found: " . $destPath . ". We generate it.<br>\n";
|
||||||
$this->createTranslationFile($destPath,$my_destlang);
|
$this->createTranslationFile($destPath, $my_destlang);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -130,18 +130,18 @@ class autoTranslator
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Translate lines
|
// Translate lines
|
||||||
$fileContentDest = file($destPath,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
|
$fileContentDest = file($destPath, FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
|
||||||
$newlines=0;
|
$newlines=0;
|
||||||
foreach($fileContent as $line){
|
foreach($fileContent as $line){
|
||||||
$key = $this->getLineKey($line);
|
$key = $this->getLineKey($line);
|
||||||
$value = $this->getLineValue($line);
|
$value = $this->getLineValue($line);
|
||||||
if ($key && $value)
|
if ($key && $value)
|
||||||
{
|
{
|
||||||
$newlines+=$this->translateFileLine($fileContentDest,$file,$key,$value,$my_destlang);
|
$newlines+=$this->translateFileLine($fileContentDest, $file, $key, $value, $my_destlang);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->updateTranslationFile($destPath,$file,$my_destlang);
|
$this->updateTranslationFile($destPath, $file, $my_destlang);
|
||||||
echo "New translated lines: " . $newlines . "<br>\n";
|
echo "New translated lines: " . $newlines . "<br>\n";
|
||||||
//if ($counter ==3) die('fim');
|
//if ($counter ==3) die('fim');
|
||||||
}
|
}
|
||||||
@ -156,7 +156,7 @@ class autoTranslator
|
|||||||
* @param string $my_destlang Target language code
|
* @param string $my_destlang Target language code
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private function updateTranslationFile($destPath,$file,$my_destlang)
|
private function updateTranslationFile($destPath, $file, $my_destlang)
|
||||||
{
|
{
|
||||||
$this->_time_end = date('Y-m-d H:i:s');
|
$this->_time_end = date('Y-m-d H:i:s');
|
||||||
|
|
||||||
@ -167,7 +167,7 @@ class autoTranslator
|
|||||||
fwrite($fp, "\n");
|
fwrite($fp, "\n");
|
||||||
fwrite($fp, "// START - Lines generated via autotranslator.php tool (".$this->_time.").\n");
|
fwrite($fp, "// START - Lines generated via autotranslator.php tool (".$this->_time.").\n");
|
||||||
fwrite($fp, "// Reference language: ".$this->_refLang." -> ".$my_destlang."\n");
|
fwrite($fp, "// Reference language: ".$this->_refLang." -> ".$my_destlang."\n");
|
||||||
foreach( $this->_translatedFiles[$file] as $line) {
|
foreach($this->_translatedFiles[$file] as $line) {
|
||||||
fwrite($fp, $line . "\n");
|
fwrite($fp, $line . "\n");
|
||||||
}
|
}
|
||||||
fwrite($fp, "// STOP - Lines generated via autotranslator.php tool (".$this->_time_end.").\n");
|
fwrite($fp, "// STOP - Lines generated via autotranslator.php tool (".$this->_time_end.").\n");
|
||||||
@ -183,7 +183,7 @@ class autoTranslator
|
|||||||
* @param string $my_destlang Target language code
|
* @param string $my_destlang Target language code
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private function createTranslationFile($path,$my_destlang)
|
private function createTranslationFile($path, $my_destlang)
|
||||||
{
|
{
|
||||||
$fp = fopen($path, 'w+');
|
$fp = fopen($path, 'w+');
|
||||||
fwrite($fp, "/*\n");
|
fwrite($fp, "/*\n");
|
||||||
@ -205,11 +205,11 @@ class autoTranslator
|
|||||||
* @param string $my_destlang Language code (ie: fr_FR)
|
* @param string $my_destlang Language code (ie: fr_FR)
|
||||||
* @return int 0=Nothing translated, 1=Record translated
|
* @return int 0=Nothing translated, 1=Record translated
|
||||||
*/
|
*/
|
||||||
private function translateFileLine($content,$file,$key,$value,$my_destlang)
|
private function translateFileLine($content, $file, $key, $value, $my_destlang)
|
||||||
{
|
{
|
||||||
|
|
||||||
//print "key =".$key."\n";
|
//print "key =".$key."\n";
|
||||||
foreach( $content as $line ) {
|
foreach($content as $line) {
|
||||||
$destKey = $this->getLineKey($line);
|
$destKey = $this->getLineKey($line);
|
||||||
$destValue = $this->getLineValue($line);
|
$destValue = $this->getLineValue($line);
|
||||||
// If translated return
|
// If translated return
|
||||||
@ -220,14 +220,16 @@ class autoTranslator
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($key == 'CHARSET') $val=$this->_outputpagecode;
|
if ($key == 'CHARSET') {
|
||||||
else if (preg_match('/^Format/',$key)) $val=$value;
|
$val=$this->_outputpagecode;
|
||||||
else if ($value=='-') $val=$value;
|
} elseif (preg_match('/^Format/', $key)) {
|
||||||
else
|
$val=$value;
|
||||||
{
|
} elseif ($value=='-') {
|
||||||
|
$val=$value;
|
||||||
|
} else {
|
||||||
// If not translated then translate
|
// If not translated then translate
|
||||||
if ($this->_outputpagecode == 'UTF-8') $val=$this->translateTexts(array($value),substr($this->_refLang,0,2),substr($my_destlang,0,2));
|
if ($this->_outputpagecode == 'UTF-8') $val=$this->translateTexts(array($value), substr($this->_refLang, 0, 2), substr($my_destlang, 0, 2));
|
||||||
else $val=utf8_decode($this->translateTexts(array($value),substr($this->_refLang,0,2),substr($my_destlang,0,2)));
|
else $val=utf8_decode($this->translateTexts(array($value), substr($this->_refLang, 0, 2), substr($my_destlang, 0, 2)));
|
||||||
}
|
}
|
||||||
|
|
||||||
$val=trim($val);
|
$val=trim($val);
|
||||||
@ -246,7 +248,7 @@ class autoTranslator
|
|||||||
*/
|
*/
|
||||||
private function getLineKey($line)
|
private function getLineKey($line)
|
||||||
{
|
{
|
||||||
$arraykey = explode('=',$line,2);
|
$arraykey = explode('=', $line, 2);
|
||||||
return trim($arraykey[0]);
|
return trim($arraykey[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -258,7 +260,7 @@ class autoTranslator
|
|||||||
*/
|
*/
|
||||||
private function getLineValue($line)
|
private function getLineValue($line)
|
||||||
{
|
{
|
||||||
$arraykey = explode('=',$line,2);
|
$arraykey = explode('=', $line, 2);
|
||||||
return trim(isset($arraykey[1])?$arraykey[1]:'');
|
return trim(isset($arraykey[1])?$arraykey[1]:'');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -272,7 +274,7 @@ class autoTranslator
|
|||||||
{
|
{
|
||||||
$dir = new DirectoryIterator($this->_langDir.$lang);
|
$dir = new DirectoryIterator($this->_langDir.$lang);
|
||||||
while($dir->valid()) {
|
while($dir->valid()) {
|
||||||
if(!$dir->isDot() && $dir->isFile() && ! preg_match('/^\./',$dir->getFilename())) {
|
if(!$dir->isDot() && $dir->isFile() && ! preg_match('/^\./', $dir->getFilename())) {
|
||||||
$files[] = $dir->getFilename();
|
$files[] = $dir->getFilename();
|
||||||
}
|
}
|
||||||
$dir->next();
|
$dir->next();
|
||||||
@ -291,16 +293,16 @@ class autoTranslator
|
|||||||
private function translateTexts($src_texts, $src_lang, $dest_lang)
|
private function translateTexts($src_texts, $src_lang, $dest_lang)
|
||||||
{
|
{
|
||||||
// We want to be sure that src_lang and dest_lang are using 2 chars only
|
// We want to be sure that src_lang and dest_lang are using 2 chars only
|
||||||
$tmp=explode('_',$src_lang);
|
$tmp=explode('_', $src_lang);
|
||||||
if (! empty($tmp[1]) && $tmp[0] == $tmp[1]) $src_lang=$tmp[0];
|
if (! empty($tmp[1]) && $tmp[0] == $tmp[1]) $src_lang=$tmp[0];
|
||||||
$tmp=explode('_',$dest_lang);
|
$tmp=explode('_', $dest_lang);
|
||||||
if (! empty($tmp[1]) && $tmp[0] == $tmp[1]) $dest_lang=$tmp[0];
|
if (! empty($tmp[1]) && $tmp[0] == $tmp[1]) $dest_lang=$tmp[0];
|
||||||
|
|
||||||
//setting language pair
|
//setting language pair
|
||||||
$lang_pair = $src_lang.'|'.$dest_lang;
|
$lang_pair = $src_lang.'|'.$dest_lang;
|
||||||
|
|
||||||
$src_text_to_translate=preg_replace('/%s/','SSSSS',implode('',$src_texts));
|
$src_text_to_translate=preg_replace('/%s/', 'SSSSS', implode('', $src_texts));
|
||||||
$src_text_to_translate=preg_replace('/'.preg_quote('\n\n').'/',' NNNNN ',$src_text_to_translate);
|
$src_text_to_translate=preg_replace('/'.preg_quote('\n\n').'/', ' NNNNN ', $src_text_to_translate);
|
||||||
|
|
||||||
// Define GET URL v1
|
// Define GET URL v1
|
||||||
//$url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=".urlencode($src_text_to_translate)."&langpair=".urlencode($lang_pair);
|
//$url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=".urlencode($src_text_to_translate)."&langpair=".urlencode($lang_pair);
|
||||||
@ -337,12 +339,12 @@ class autoTranslator
|
|||||||
}
|
}
|
||||||
|
|
||||||
$rep=$json['data']['translations'][0]['translatedText'];
|
$rep=$json['data']['translations'][0]['translatedText'];
|
||||||
$rep=preg_replace('/SSSSS/i','%s',$rep);
|
$rep=preg_replace('/SSSSS/i', '%s', $rep);
|
||||||
$rep=preg_replace('/NNNNN/i','\n\n',$rep);
|
$rep=preg_replace('/NNNNN/i', '\n\n', $rep);
|
||||||
$rep=preg_replace('/'/i','\'',$rep);
|
$rep=preg_replace('/'/i', '\'', $rep);
|
||||||
|
|
||||||
//print "OK ".join('',$src_texts).' => '.$rep."\n";
|
//print "OK ".join('',$src_texts).' => '.$rep."\n";
|
||||||
|
|
||||||
return $rep;
|
return $rep;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -90,7 +90,7 @@ if ($argv[2] != 'all')
|
|||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT."/../dev/translation/autotranslator.class.php";
|
require_once DOL_DOCUMENT_ROOT."/../dev/translation/autotranslator.class.php";
|
||||||
|
|
||||||
$langParser = new autoTranslator($argv[2],$argv[1],$dir,$file,$argv[3]);
|
$langParser = new autoTranslator($argv[2], $argv[1], $dir, $file, $argv[3]);
|
||||||
|
|
||||||
print "***** Finished *****\n";
|
print "***** Finished *****\n";
|
||||||
|
|
||||||
|
|||||||
@ -113,7 +113,7 @@ if (empty($files))
|
|||||||
|
|
||||||
$dups=array();
|
$dups=array();
|
||||||
$exludefiles = array('.','..','README');
|
$exludefiles = array('.','..','README');
|
||||||
$files = array_diff($files,$exludefiles);
|
$files = array_diff($files, $exludefiles);
|
||||||
// To force a file: $files=array('myfile.lang');
|
// To force a file: $files=array('myfile.lang');
|
||||||
if (isset($argv[2]))
|
if (isset($argv[2]))
|
||||||
{
|
{
|
||||||
@ -128,10 +128,10 @@ foreach ($files AS $file) {
|
|||||||
$content = file($workdir.$file);
|
$content = file($workdir.$file);
|
||||||
foreach ($content AS $line => $row) {
|
foreach ($content AS $line => $row) {
|
||||||
// don't want comment lines
|
// don't want comment lines
|
||||||
if (substr($row,0,1) !== '#') {
|
if (substr($row, 0, 1) !== '#') {
|
||||||
// don't want lines without the separator (why should those even be here, anyway...)
|
// don't want lines without the separator (why should those even be here, anyway...)
|
||||||
if (strpos($row,'=')!==false) {
|
if (strpos($row, '=')!==false) {
|
||||||
$row_array = explode('=',$row); // $row_array[0] = key
|
$row_array = explode('=', $row); // $row_array[0] = key
|
||||||
$langstrings_3d[$path_file['basename']][$line+1]=$row_array[0];
|
$langstrings_3d[$path_file['basename']][$line+1]=$row_array[0];
|
||||||
$langstrings_3dtrans[$path_file['basename']][$line+1]=$row_array[1];
|
$langstrings_3dtrans[$path_file['basename']][$line+1]=$row_array[1];
|
||||||
$langstrings_full[]=$row_array[0];
|
$langstrings_full[]=$row_array[0];
|
||||||
@ -215,8 +215,8 @@ foreach ($dups as $string => $pages)
|
|||||||
$s.="\n";
|
$s.="\n";
|
||||||
|
|
||||||
if ($duplicateinsamefile) $sduplicateinsamefile .= $s;
|
if ($duplicateinsamefile) $sduplicateinsamefile .= $s;
|
||||||
else if ($inmain) $sinmainandother .= $s;
|
elseif ($inmain) $sinmainandother .= $s;
|
||||||
else if ($inadmin) $sininstallandadmin .= $s;
|
elseif ($inadmin) $sininstallandadmin .= $s;
|
||||||
else $sother .= $s;
|
else $sother .= $s;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -355,7 +355,7 @@ if ((! empty($_REQUEST['unused']) && $_REQUEST['unused'] == 'true') || (isset($a
|
|||||||
$search = '-e "\''.$value.'\'" -e \'"'.$value.'"\' -e "('.$value.')" -e "('.$value.',"';
|
$search = '-e "\''.$value.'\'" -e \'"'.$value.'"\' -e "('.$value.')" -e "('.$value.',"';
|
||||||
$string = 'grep -R -m 1 -F --exclude=includes/* --include=*.php '.$search.' '.$htdocs.'* '.$scripts.'*';
|
$string = 'grep -R -m 1 -F --exclude=includes/* --include=*.php '.$search.' '.$htdocs.'* '.$scripts.'*';
|
||||||
//print $string."<br>\n";
|
//print $string."<br>\n";
|
||||||
exec($string,$output);
|
exec($string, $output);
|
||||||
if (empty($output)) {
|
if (empty($output)) {
|
||||||
$unused[$value] = $line;
|
$unused[$value] = $line;
|
||||||
echo $line; // $trad contains the \n
|
echo $line; // $trad contains the \n
|
||||||
@ -372,7 +372,7 @@ if ((! empty($_REQUEST['unused']) && $_REQUEST['unused'] == 'true') || (isset($a
|
|||||||
{
|
{
|
||||||
$filetosave='/tmp/'.($argv[2]?$argv[2]:"").'notused.lang';
|
$filetosave='/tmp/'.($argv[2]?$argv[2]:"").'notused.lang';
|
||||||
print "Strings in en_US that are never used are saved into file ".$filetosave.":\n";
|
print "Strings in en_US that are never used are saved into file ".$filetosave.":\n";
|
||||||
file_put_contents($filetosave, implode("",$unused));
|
file_put_contents($filetosave, implode("", $unused));
|
||||||
print "To remove from original file, run command :\n";
|
print "To remove from original file, run command :\n";
|
||||||
if (($argv[2]?$argv[2]:"")) print 'cd htdocs/langs/en_US; mv '.($argv[2]?$argv[2]:"")." ".($argv[2]?$argv[2]:"").".tmp; ";
|
if (($argv[2]?$argv[2]:"")) print 'cd htdocs/langs/en_US; mv '.($argv[2]?$argv[2]:"")." ".($argv[2]?$argv[2]:"").".tmp; ";
|
||||||
print "diff ".($argv[2]?$argv[2]:"").".tmp ".$filetosave." | grep \< | cut -b 3- > ".($argv[2]?$argv[2]:"");
|
print "diff ".($argv[2]?$argv[2]:"").".tmp ".$filetosave." | grep \< | cut -b 3- > ".($argv[2]?$argv[2]:"");
|
||||||
@ -388,4 +388,3 @@ if ($web)
|
|||||||
}
|
}
|
||||||
|
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
|
|||||||
@ -81,14 +81,14 @@ if ($filesToProcess == 'all')
|
|||||||
{
|
{
|
||||||
$dir = new DirectoryIterator('htdocs/langs/'.$lPrimary);
|
$dir = new DirectoryIterator('htdocs/langs/'.$lPrimary);
|
||||||
while($dir->valid()) {
|
while($dir->valid()) {
|
||||||
if(!$dir->isDot() && $dir->isFile() && ! preg_match('/^\./',$dir->getFilename())) {
|
if(!$dir->isDot() && $dir->isFile() && ! preg_match('/^\./', $dir->getFilename())) {
|
||||||
$files[] = $dir->getFilename();
|
$files[] = $dir->getFilename();
|
||||||
}
|
}
|
||||||
$dir->next();
|
$dir->next();
|
||||||
}
|
}
|
||||||
$filesToProcess=$files;
|
$filesToProcess=$files;
|
||||||
}
|
}
|
||||||
else $filesToProcess=explode(',',$filesToProcess);
|
else $filesToProcess=explode(',', $filesToProcess);
|
||||||
|
|
||||||
// Arguments should be OK here.
|
// Arguments should be OK here.
|
||||||
|
|
||||||
@ -256,7 +256,7 @@ foreach($filesToProcess as $fileToProcess)
|
|||||||
|
|
||||||
print "Read Primary File $lPrimaryFile and write ".$output.":\n";
|
print "Read Primary File $lPrimaryFile and write ".$output.":\n";
|
||||||
|
|
||||||
fwrite($oh, "# Dolibarr language file - Source file is en_US - ".(preg_replace('/\.lang$/','',$fileToProcess))."\n");
|
fwrite($oh, "# Dolibarr language file - Source file is en_US - ".(preg_replace('/\.lang$/', '', $fileToProcess))."\n");
|
||||||
|
|
||||||
$cnt = 0;
|
$cnt = 0;
|
||||||
while (($line = fgets($handle)) !== false)
|
while (($line = fgets($handle)) !== false)
|
||||||
@ -306,11 +306,11 @@ foreach($filesToProcess as $fileToProcess)
|
|||||||
//print "Found primary key = ".$key."\n";
|
//print "Found primary key = ".$key."\n";
|
||||||
|
|
||||||
// Key not in other file
|
// Key not in other file
|
||||||
if (in_array($key, $arrayofkeytoalwayskeep) || preg_match('/^FormatDate/',$key) || preg_match('/^FormatHour/',$key))
|
if (in_array($key, $arrayofkeytoalwayskeep) || preg_match('/^FormatDate/', $key) || preg_match('/^FormatHour/', $key))
|
||||||
{
|
{
|
||||||
//print "Key $key is a key we always want to see into secondary file (line: $cnt).\n";
|
//print "Key $key is a key we always want to see into secondary file (line: $cnt).\n";
|
||||||
}
|
}
|
||||||
else if ( ! array_key_exists($key, $aSecondary))
|
elseif ( ! array_key_exists($key, $aSecondary))
|
||||||
{
|
{
|
||||||
//print "Key $key does NOT exist in secondary language (line: $cnt).\n";
|
//print "Key $key does NOT exist in secondary language (line: $cnt).\n";
|
||||||
continue;
|
continue;
|
||||||
@ -320,7 +320,7 @@ foreach($filesToProcess as $fileToProcess)
|
|||||||
if (
|
if (
|
||||||
(! empty($aSecondary[$key]) && $aSecondary[$key] != $aPrimary[$key]
|
(! empty($aSecondary[$key]) && $aSecondary[$key] != $aPrimary[$key]
|
||||||
&& ! empty($aEnglish[$key]) && $aSecondary[$key] != $aEnglish[$key])
|
&& ! empty($aEnglish[$key]) && $aSecondary[$key] != $aEnglish[$key])
|
||||||
|| in_array($key, $arrayofkeytoalwayskeep) || preg_match('/^FormatDate/',$key) || preg_match('/^FormatHour/',$key)
|
|| in_array($key, $arrayofkeytoalwayskeep) || preg_match('/^FormatDate/', $key) || preg_match('/^FormatHour/', $key)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
//print "Key $key differs (aSecondary=".$aSecondary[$key].", aPrimary=".$aPrimary[$key].", aEnglish=".$aEnglish[$key].") so we add it into new secondary language (line: $cnt).\n";
|
//print "Key $key differs (aSecondary=".$aSecondary[$key].", aPrimary=".$aPrimary[$key].", aEnglish=".$aEnglish[$key].") so we add it into new secondary language (line: $cnt).\n";
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?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@open-dsi.fr>
|
||||||
* Copyright (C) 2016-2018 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2016-2018 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
|
||||||
@ -32,27 +32,27 @@ require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountingaccount.class.php
|
|||||||
$langs->loadLangs(array("compta","bills","admin","accountancy","salaries"));
|
$langs->loadLangs(array("compta","bills","admin","accountancy","salaries"));
|
||||||
|
|
||||||
$mesg = '';
|
$mesg = '';
|
||||||
$action = GETPOST('action','aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
$cancel = GETPOST('cancel','alpha');
|
$cancel = GETPOST('cancel', 'alpha');
|
||||||
$id = GETPOST('id', 'int');
|
$id = GETPOST('id', 'int');
|
||||||
$rowid = GETPOST('rowid', 'int');
|
$rowid = GETPOST('rowid', 'int');
|
||||||
$contextpage=GETPOST('contextpage','aZ')?GETPOST('contextpage','aZ'):'accountingaccountlist'; // To manage different context of search
|
$contextpage=GETPOST('contextpage', 'aZ')?GETPOST('contextpage', 'aZ'):'accountingaccountlist'; // To manage different context of search
|
||||||
|
|
||||||
$search_account = GETPOST('search_account','alpha');
|
$search_account = GETPOST('search_account', 'alpha');
|
||||||
$search_label = GETPOST('search_label','alpha');
|
$search_label = GETPOST('search_label', 'alpha');
|
||||||
$search_accountparent = GETPOST('search_accountparent','alpha');
|
$search_accountparent = GETPOST('search_accountparent', 'alpha');
|
||||||
$search_pcgtype = GETPOST('search_pcgtype','alpha');
|
$search_pcgtype = GETPOST('search_pcgtype', 'alpha');
|
||||||
$search_pcgsubtype = GETPOST('search_pcgsubtype','alpha');
|
$search_pcgsubtype = GETPOST('search_pcgsubtype', 'alpha');
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
if ($user->societe_id > 0) accessforbidden();
|
if ($user->societe_id > 0) accessforbidden();
|
||||||
if (! $user->rights->accounting->chartofaccount) accessforbidden();
|
if (! $user->rights->accounting->chartofaccount) accessforbidden();
|
||||||
|
|
||||||
// Load variable for pagination
|
// Load variable for pagination
|
||||||
$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;
|
||||||
@ -77,11 +77,11 @@ $accounting = new AccountingAccount($db);
|
|||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (GETPOST('cancel','alpha')) { $action='list'; $massaction=''; }
|
if (GETPOST('cancel', 'alpha')) { $action='list'; $massaction=''; }
|
||||||
if (! GETPOST('confirmmassaction','alpha')) { $massaction=''; }
|
if (! GETPOST('confirmmassaction', 'alpha')) { $massaction=''; }
|
||||||
|
|
||||||
$parameters=array();
|
$parameters=array();
|
||||||
$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
|
$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 ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||||
|
|
||||||
if (empty($reshook))
|
if (empty($reshook))
|
||||||
@ -90,7 +90,7 @@ if (empty($reshook))
|
|||||||
|
|
||||||
include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
|
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 test are required to be compatible with all browsers
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') ||GETPOST('button_removefilter', 'alpha')) // All test are required to be compatible with all browsers
|
||||||
{
|
{
|
||||||
$search_account = "";
|
$search_account = "";
|
||||||
$search_label = "";
|
$search_label = "";
|
||||||
@ -100,7 +100,7 @@ if (empty($reshook))
|
|||||||
$search_array_options=array();
|
$search_array_options=array();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GETPOST('change_chart','alpha'))
|
if (GETPOST('change_chart', 'alpha'))
|
||||||
{
|
{
|
||||||
$chartofaccounts = GETPOST('chartofaccounts', 'int');
|
$chartofaccounts = GETPOST('chartofaccounts', 'int');
|
||||||
|
|
||||||
@ -162,7 +162,7 @@ if (empty($reshook))
|
|||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessages($accounting->error, $accounting->errors, 'errors');
|
setEventMessages($accounting->error, $accounting->errors, 'errors');
|
||||||
}
|
}
|
||||||
} else if ($action == 'enable') {
|
} elseif ($action == 'enable') {
|
||||||
if ($accounting->fetch($id)) {
|
if ($accounting->fetch($id)) {
|
||||||
$result = $accounting->account_activate($id);
|
$result = $accounting->account_activate($id);
|
||||||
}
|
}
|
||||||
@ -247,18 +247,17 @@ if ($resql)
|
|||||||
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.'">';
|
||||||
|
|
||||||
$newcardbutton = '<a class="butActionNew" href="./card.php?action=create"><span class="valignmiddle">' . $langs->trans("Addanaccount").'</span>';
|
$newcardbutton.= dolGetButtonTitle($langs->trans("New"), $langs->trans("Addanaccount"), 'fa fa-plus-circle', './card.php?action=create');
|
||||||
$newcardbutton.= '<span class="fa fa-plus-circle valignmiddle"></span>';
|
|
||||||
$newcardbutton.= '</a>';
|
|
||||||
|
|
||||||
print_barre_liste($langs->trans('ListAccounts'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_accountancy', 0, $newcardbutton, '', $limit);
|
|
||||||
|
print_barre_liste($langs->trans('ListAccounts'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_accountancy', 0, $newcardbutton, '', $limit);
|
||||||
|
|
||||||
// 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 a.rowid, a.pcg_version, a.label, a.active, c.code as country_code";
|
$sql = "SELECT a.rowid, a.pcg_version, a.label, a.active, c.code as country_code";
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_system as a";
|
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_system as a";
|
||||||
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "c_country as c ON a.fk_country = c.rowid";
|
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "c_country as c ON a.fk_country = c.rowid AND c.active = 1";
|
||||||
$sql .= " WHERE a.active = 1";
|
$sql .= " WHERE a.active = 1";
|
||||||
dol_syslog('accountancy/admin/account.php $sql='.$sql);
|
dol_syslog('accountancy/admin/account.php $sql='.$sql);
|
||||||
print $sql;
|
print $sql;
|
||||||
@ -298,20 +297,20 @@ if ($resql)
|
|||||||
if (! empty($arrayfields['aa.pcg_type']['checked'])) print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_pcgtype" value="' . $search_pcgtype . '"></td>';
|
if (! empty($arrayfields['aa.pcg_type']['checked'])) print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_pcgtype" value="' . $search_pcgtype . '"></td>';
|
||||||
if (! empty($arrayfields['aa.pcg_subtype']['checked'])) print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_pcgsubtype" value="' . $search_pcgsubtype . '"></td>';
|
if (! empty($arrayfields['aa.pcg_subtype']['checked'])) print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_pcgsubtype" value="' . $search_pcgsubtype . '"></td>';
|
||||||
if (! empty($arrayfields['aa.active']['checked'])) print '<td class="liste_titre"> </td>';
|
if (! empty($arrayfields['aa.active']['checked'])) print '<td class="liste_titre"> </td>';
|
||||||
print '<td align="right" class="liste_titre">';
|
print '<td class="liste_titre maxwidthsearch">';
|
||||||
$searchpicto=$form->showFilterAndCheckAddButtons($massactionbutton?1:0, 'checkforselect', 1);
|
$searchpicto=$form->showFilterAndCheckAddButtons($massactionbutton?1:0, 'checkforselect', 1);
|
||||||
print $searchpicto;
|
print $searchpicto;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
if (! empty($arrayfields['aa.account_number']['checked'])) print_liste_field_titre($arrayfields['aa.account_number']['label'], $_SERVER["PHP_SELF"],"aa.account_number","",$param,'',$sortfield,$sortorder);
|
if (! empty($arrayfields['aa.account_number']['checked'])) print_liste_field_titre($arrayfields['aa.account_number']['label'], $_SERVER["PHP_SELF"], "aa.account_number", "", $param, '', $sortfield, $sortorder);
|
||||||
if (! empty($arrayfields['aa.label']['checked'])) print_liste_field_titre($arrayfields['aa.label']['label'], $_SERVER["PHP_SELF"],"aa.label","",$param,'',$sortfield,$sortorder);
|
if (! empty($arrayfields['aa.label']['checked'])) print_liste_field_titre($arrayfields['aa.label']['label'], $_SERVER["PHP_SELF"], "aa.label", "", $param, '', $sortfield, $sortorder);
|
||||||
if (! empty($arrayfields['aa.account_parent']['checked'])) print_liste_field_titre($arrayfields['aa.account_parent']['label'], $_SERVER["PHP_SELF"],"aa.account_parent", "", $param,'align="left"',$sortfield,$sortorder);
|
if (! empty($arrayfields['aa.account_parent']['checked'])) print_liste_field_titre($arrayfields['aa.account_parent']['label'], $_SERVER["PHP_SELF"], "aa.account_parent", "", $param, '', $sortfield, $sortorder, 'left ');
|
||||||
if (! empty($arrayfields['aa.pcg_type']['checked'])) print_liste_field_titre($arrayfields['aa.pcg_type']['label'],$_SERVER["PHP_SELF"],'aa.pcg_type','',$param,'',$sortfield,$sortorder,'',$arrayfields['aa.pcg_type']['help']);
|
if (! empty($arrayfields['aa.pcg_type']['checked'])) print_liste_field_titre($arrayfields['aa.pcg_type']['label'], $_SERVER["PHP_SELF"], 'aa.pcg_type', '', $param, '', $sortfield, $sortorder, '', $arrayfields['aa.pcg_type']['help']);
|
||||||
if (! empty($arrayfields['aa.pcg_subtype']['checked'])) print_liste_field_titre($arrayfields['aa.pcg_subtype']['label'],$_SERVER["PHP_SELF"],'aa.pcg_subtype','',$param,'',$sortfield,$sortorder,'',$arrayfields['aa.pcg_subtype']['help']);
|
if (! empty($arrayfields['aa.pcg_subtype']['checked'])) print_liste_field_titre($arrayfields['aa.pcg_subtype']['label'], $_SERVER["PHP_SELF"], 'aa.pcg_subtype', '', $param, '', $sortfield, $sortorder, '', $arrayfields['aa.pcg_subtype']['help']);
|
||||||
if (! empty($arrayfields['aa.active']['checked'])) print_liste_field_titre($arrayfields['aa.active']['label'],$_SERVER["PHP_SELF"],'aa.active','',$param,'',$sortfield,$sortorder);
|
if (! empty($arrayfields['aa.active']['checked'])) print_liste_field_titre($arrayfields['aa.active']['label'], $_SERVER["PHP_SELF"], 'aa.active', '', $param, '', $sortfield, $sortorder);
|
||||||
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="center"',$sortfield,$sortorder,'maxwidthsearch ');
|
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ');
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
$accountstatic = new AccountingAccount($db);
|
$accountstatic = new AccountingAccount($db);
|
||||||
@ -390,11 +389,11 @@ if ($resql)
|
|||||||
{
|
{
|
||||||
print '<td>';
|
print '<td>';
|
||||||
if (empty($obj->active)) {
|
if (empty($obj->active)) {
|
||||||
print '<a href="' . $_SERVER["PHP_SELF"] . '?id=' . $obj->rowid . '&action=enable">';
|
print '<a class="reposition" href="' . $_SERVER["PHP_SELF"] . '?id=' . $obj->rowid . '&action=enable">';
|
||||||
print img_picto($langs->trans("Disabled"), 'switch_off');
|
print img_picto($langs->trans("Disabled"), 'switch_off');
|
||||||
print '</a>';
|
print '</a>';
|
||||||
} else {
|
} else {
|
||||||
print '<a href="' . $_SERVER["PHP_SELF"] . '?id=' . $obj->rowid . '&action=disable">';
|
print '<a class="reposition" href="' . $_SERVER["PHP_SELF"] . '?id=' . $obj->rowid . '&action=disable">';
|
||||||
print img_picto($langs->trans("Activated"), 'switch_on');
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
print '</a>';
|
print '</a>';
|
||||||
}
|
}
|
||||||
@ -403,7 +402,7 @@ if ($resql)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Action
|
// Action
|
||||||
print '<td align="center">';
|
print '<td class="center">';
|
||||||
if ($user->rights->accounting->chartofaccount) {
|
if ($user->rights->accounting->chartofaccount) {
|
||||||
print '<a href="./card.php?action=update&id=' . $obj->rowid . '&backtopage='.urlencode($_SERVER["PHP_SELF"].'?chartofaccounts='.$object->id).'">';
|
print '<a href="./card.php?action=update&id=' . $obj->rowid . '&backtopage='.urlencode($_SERVER["PHP_SELF"].'?chartofaccounts='.$object->id).'">';
|
||||||
print img_edit();
|
print img_edit();
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
* Copyright (C) 2011 Remy Younes <ryounes@gmail.com>
|
* Copyright (C) 2011 Remy Younes <ryounes@gmail.com>
|
||||||
* Copyright (C) 2012-2015 Marcos García <marcosgdf@gmail.com>
|
* Copyright (C) 2012-2015 Marcos García <marcosgdf@gmail.com>
|
||||||
* Copyright (C) 2012 Christophe Battarel <christophe.battarel@ltairis.fr>
|
* Copyright (C) 2012 Christophe Battarel <christophe.battarel@ltairis.fr>
|
||||||
* Copyright (C) 2011-2016 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2011-2016 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2015 Ferran Marcet <fmarcet@2byte.es>
|
* Copyright (C) 2015 Ferran Marcet <fmarcet@2byte.es>
|
||||||
* Copyright (C) 2016 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
* Copyright (C) 2016 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
||||||
*
|
*
|
||||||
@ -44,30 +44,30 @@ if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT . '/core
|
|||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("errors","admin","companies","resource","holiday","compta","accountancy","hrm"));
|
$langs->loadLangs(array("errors","admin","companies","resource","holiday","compta","accountancy","hrm"));
|
||||||
|
|
||||||
$action=GETPOST('action','aZ09')?GETPOST('action','aZ09'):'view';
|
$action=GETPOST('action', 'aZ09')?GETPOST('action', 'aZ09'):'view';
|
||||||
$confirm=GETPOST('confirm','alpha');
|
$confirm=GETPOST('confirm', 'alpha');
|
||||||
$id=31;
|
$id=31;
|
||||||
$rowid=GETPOST('rowid','alpha');
|
$rowid=GETPOST('rowid', 'alpha');
|
||||||
$code=GETPOST('code','alpha');
|
$code=GETPOST('code', 'alpha');
|
||||||
|
|
||||||
$acts[0] = "activate";
|
$acts[0] = "activate";
|
||||||
$acts[1] = "disable";
|
$acts[1] = "disable";
|
||||||
$actl[0] = img_picto($langs->trans("Disabled"),'switch_off');
|
$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','int')>0?GETPOST('listlimit','int'):1000;
|
$listlimit=GETPOST('listlimit', 'int')>0?GETPOST('listlimit', 'int'):1000;
|
||||||
$active = 1;
|
$active = 1;
|
||||||
|
|
||||||
$sortfield = GETPOST("sortfield",'aZ09comma');
|
$sortfield = GETPOST("sortfield", 'aZ09comma');
|
||||||
$sortorder = GETPOST("sortorder",'aZ09comma');
|
$sortorder = GETPOST("sortorder", 'aZ09comma');
|
||||||
$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 = $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');
|
||||||
|
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
@ -139,25 +139,25 @@ $sourceList=array();
|
|||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (GETPOST('button_removefilter','alpha') || GETPOST('button_removefilter.x','alpha') || GETPOST('button_removefilter_x','alpha'))
|
if (GETPOST('button_removefilter', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter_x', 'alpha'))
|
||||||
{
|
{
|
||||||
$search_country_id = '';
|
$search_country_id = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actions add or modify an entry into a dictionary
|
// Actions add or modify an entry into a dictionary
|
||||||
if (GETPOST('actionadd','alpha') || GETPOST('actionmodify','alpha'))
|
if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha'))
|
||||||
{
|
{
|
||||||
$listfield=explode(',', str_replace(' ', '',$tabfield[$id]));
|
$listfield=explode(',', str_replace(' ', '', $tabfield[$id]));
|
||||||
$listfieldinsert=explode(',',$tabfieldinsert[$id]);
|
$listfieldinsert=explode(',', $tabfieldinsert[$id]);
|
||||||
$listfieldmodify=explode(',',$tabfieldinsert[$id]);
|
$listfieldmodify=explode(',', $tabfieldinsert[$id]);
|
||||||
$listfieldvalue=explode(',',$tabfieldvalue[$id]);
|
$listfieldvalue=explode(',', $tabfieldvalue[$id]);
|
||||||
|
|
||||||
// Check that all fields are filled
|
// Check that all fields are filled
|
||||||
$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','DictionaryAccountancyCategory','Pcg_version'))) 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;
|
||||||
if ($value == 'color' && empty($_POST['color'])) continue;
|
if ($value == 'color' && empty($_POST['color'])) continue;
|
||||||
@ -192,7 +192,7 @@ if (GETPOST('actionadd','alpha') || GETPOST('actionmodify','alpha'))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Other checks
|
// Other checks
|
||||||
if ($tabname[$id] == MAIN_DB_PREFIX."c_actioncomm" && isset($_POST["type"]) && in_array($_POST["type"],array('system','systemauto'))) {
|
if ($tabname[$id] == MAIN_DB_PREFIX."c_actioncomm" && isset($_POST["type"]) && in_array($_POST["type"], array('system','systemauto'))) {
|
||||||
$ok=0;
|
$ok=0;
|
||||||
setEventMessages($langs->transnoentities('ErrorReservedTypeSystemSystemAuto'), null, 'errors');
|
setEventMessages($langs->transnoentities('ErrorReservedTypeSystemSystemAuto'), null, 'errors');
|
||||||
}
|
}
|
||||||
@ -211,20 +211,20 @@ if (GETPOST('actionadd','alpha') || GETPOST('actionmodify','alpha'))
|
|||||||
}
|
}
|
||||||
if (isset($_POST["country"]) && ($_POST["country"]=='0') && ($id != 2))
|
if (isset($_POST["country"]) && ($_POST["country"]=='0') && ($id != 2))
|
||||||
{
|
{
|
||||||
if (in_array($tablib[$id],array('DictionaryCompanyType','DictionaryHolidayTypes'))) // Field country is no mandatory for such dictionaries
|
if (in_array($tablib[$id], array('DictionaryCompanyType','DictionaryHolidayTypes'))) // Field country is no mandatory for such dictionaries
|
||||||
{
|
{
|
||||||
$_POST["country"]='';
|
$_POST["country"]='';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$ok=0;
|
$ok=0;
|
||||||
setEventMessages($langs->transnoentities("ErrorFieldRequired",$langs->transnoentities("Country")), null, 'errors');
|
setEventMessages($langs->transnoentities("ErrorFieldRequired", $langs->transnoentities("Country")), null, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($id == 3 && ! is_numeric($_POST["code"]))
|
if (! is_numeric($_POST["code"]))
|
||||||
{
|
{
|
||||||
$ok=0;
|
$ok=0;
|
||||||
setEventMessages($langs->transnoentities("ErrorFieldMustBeANumeric",$langs->transnoentities("Code")), null, 'errors');
|
setEventMessages($langs->transnoentities("ErrorFieldMustBeANumeric", $langs->transnoentities("Code")), null, 'errors');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clean some parameters
|
// Clean some parameters
|
||||||
@ -235,7 +235,7 @@ if (GETPOST('actionadd','alpha') || GETPOST('actionmodify','alpha'))
|
|||||||
if ($_POST["accountancy_code_buy"] <= 0) $_POST["accountancy_code_buy"]=''; // If empty, we force to null
|
if ($_POST["accountancy_code_buy"] <= 0) $_POST["accountancy_code_buy"]=''; // If empty, we force to null
|
||||||
|
|
||||||
// Si verif ok et action add, on ajoute la ligne
|
// Si verif ok et action add, on ajoute la ligne
|
||||||
if ($ok && GETPOST('actionadd','alpha'))
|
if ($ok && GETPOST('actionadd', 'alpha'))
|
||||||
{
|
{
|
||||||
if ($tabrowid[$id])
|
if ($tabrowid[$id])
|
||||||
{
|
{
|
||||||
@ -255,22 +255,22 @@ if (GETPOST('actionadd','alpha') || GETPOST('actionmodify','alpha'))
|
|||||||
// Add new entry
|
// Add new entry
|
||||||
$sql = "INSERT INTO ".$tabname[$id]." (";
|
$sql = "INSERT INTO ".$tabname[$id]." (";
|
||||||
// List of fields
|
// List of fields
|
||||||
if ($tabrowid[$id] && ! in_array($tabrowid[$id],$listfieldinsert))
|
if ($tabrowid[$id] && ! in_array($tabrowid[$id], $listfieldinsert))
|
||||||
$sql.= $tabrowid[$id].",";
|
$sql.= $tabrowid[$id].",";
|
||||||
$sql.= $tabfieldinsert[$id];
|
$sql.= $tabfieldinsert[$id];
|
||||||
$sql.=",active)";
|
$sql.=",active)";
|
||||||
$sql.= " VALUES(";
|
$sql.= " VALUES(";
|
||||||
|
|
||||||
// List of values
|
// List of values
|
||||||
if ($tabrowid[$id] && ! in_array($tabrowid[$id],$listfieldinsert))
|
if ($tabrowid[$id] && ! in_array($tabrowid[$id], $listfieldinsert))
|
||||||
$sql.= $newid.",";
|
$sql.= $newid.",";
|
||||||
$i=0;
|
$i=0;
|
||||||
foreach ($listfieldinsert as $f => $value)
|
foreach ($listfieldinsert as $f => $value)
|
||||||
{
|
{
|
||||||
if ($value == 'price' || preg_match('/^amount/i',$value) || $value == 'taux') {
|
if ($value == 'price' || preg_match('/^amount/i', $value) || $value == 'taux') {
|
||||||
$_POST[$listfieldvalue[$i]] = price2num($_POST[$listfieldvalue[$i]],'MU');
|
$_POST[$listfieldvalue[$i]] = price2num($_POST[$listfieldvalue[$i]], 'MU');
|
||||||
}
|
}
|
||||||
else if ($value == 'entity') {
|
elseif ($value == 'entity') {
|
||||||
$_POST[$listfieldvalue[$i]] = $conf->entity;
|
$_POST[$listfieldvalue[$i]] = $conf->entity;
|
||||||
}
|
}
|
||||||
if ($i) $sql.=",";
|
if ($i) $sql.=",";
|
||||||
@ -299,7 +299,7 @@ if (GETPOST('actionadd','alpha') || GETPOST('actionmodify','alpha'))
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Si verif ok et action modify, on modifie la ligne
|
// Si verif ok et action modify, on modifie la ligne
|
||||||
if ($ok && GETPOST('actionmodify','alpha'))
|
if ($ok && GETPOST('actionmodify', 'alpha'))
|
||||||
{
|
{
|
||||||
if ($tabrowid[$id]) { $rowidcol=$tabrowid[$id]; }
|
if ($tabrowid[$id]) { $rowidcol=$tabrowid[$id]; }
|
||||||
else { $rowidcol="rowid"; }
|
else { $rowidcol="rowid"; }
|
||||||
@ -307,7 +307,7 @@ if (GETPOST('actionadd','alpha') || GETPOST('actionmodify','alpha'))
|
|||||||
// Modify entry
|
// Modify entry
|
||||||
$sql = "UPDATE ".$tabname[$id]." SET ";
|
$sql = "UPDATE ".$tabname[$id]." SET ";
|
||||||
// Modifie valeur des champs
|
// Modifie valeur des champs
|
||||||
if ($tabrowid[$id] && ! in_array($tabrowid[$id],$listfieldmodify))
|
if ($tabrowid[$id] && ! in_array($tabrowid[$id], $listfieldmodify))
|
||||||
{
|
{
|
||||||
$sql.= $tabrowid[$id]."=";
|
$sql.= $tabrowid[$id]."=";
|
||||||
$sql.= "'".$db->escape($rowid)."', ";
|
$sql.= "'".$db->escape($rowid)."', ";
|
||||||
@ -315,10 +315,10 @@ if (GETPOST('actionadd','alpha') || GETPOST('actionmodify','alpha'))
|
|||||||
$i = 0;
|
$i = 0;
|
||||||
foreach ($listfieldmodify as $field)
|
foreach ($listfieldmodify as $field)
|
||||||
{
|
{
|
||||||
if ($field == 'price' || preg_match('/^amount/i',$field) || $field == 'taux') {
|
if ($field == 'price' || preg_match('/^amount/i', $field) || $field == 'taux') {
|
||||||
$_POST[$listfieldvalue[$i]] = price2num($_POST[$listfieldvalue[$i]],'MU');
|
$_POST[$listfieldvalue[$i]] = price2num($_POST[$listfieldvalue[$i]], 'MU');
|
||||||
}
|
}
|
||||||
else if ($field == 'entity') {
|
elseif ($field == 'entity') {
|
||||||
$_POST[$listfieldvalue[$i]] = $conf->entity;
|
$_POST[$listfieldvalue[$i]] = $conf->entity;
|
||||||
}
|
}
|
||||||
if ($i) $sql.=",";
|
if ($i) $sql.=",";
|
||||||
@ -340,7 +340,7 @@ if (GETPOST('actionadd','alpha') || GETPOST('actionmodify','alpha'))
|
|||||||
//$_GET["id"]=GETPOST('id', 'int'); // Force affichage dictionnaire en cours d'edition
|
//$_GET["id"]=GETPOST('id', 'int'); // Force affichage dictionnaire en cours d'edition
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GETPOST('actioncancel','alpha'))
|
if (GETPOST('actioncancel', 'alpha'))
|
||||||
{
|
{
|
||||||
//$_GET["id"]=GETPOST('id', 'int'); // Force affichage dictionnaire en cours d'edition
|
//$_GET["id"]=GETPOST('id', 'int'); // Force affichage dictionnaire en cours d'edition
|
||||||
}
|
}
|
||||||
@ -460,20 +460,15 @@ llxHeader();
|
|||||||
$titre=$langs->trans($tablib[$id]);
|
$titre=$langs->trans($tablib[$id]);
|
||||||
$linkback='';
|
$linkback='';
|
||||||
|
|
||||||
print load_fiche_titre($titre,$linkback,'title_accountancy');
|
print load_fiche_titre($titre, $linkback, 'title_accountancy');
|
||||||
|
|
||||||
if (empty($id))
|
|
||||||
{
|
|
||||||
print $langs->trans("DictionaryDesc");
|
|
||||||
print " ".$langs->trans("OnlyActiveElementsAreShown")."<br>\n";
|
|
||||||
}
|
|
||||||
print "<br>\n";
|
print "<br>\n";
|
||||||
|
|
||||||
|
|
||||||
// Confirmation de la suppression de la ligne
|
// Confirmation de la suppression de la ligne
|
||||||
if ($action == 'delete')
|
if ($action == 'delete')
|
||||||
{
|
{
|
||||||
print $form->formconfirm($_SERVER["PHP_SELF"].'?'.($page?'page='.urlencode($page).'&':'').'sortfield='.urlencode($sortfield).'&sortorder='.urlencode($sortorder).'&rowid='.urlencode($rowid).'&code='.urlencode($code).'&id='.urlencode($id), $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_delete','',0,1);
|
print $form->formconfirm($_SERVER["PHP_SELF"].'?'.($page?'page='.urlencode($page).'&':'').'sortfield='.urlencode($sortfield).'&sortorder='.urlencode($sortorder).'&rowid='.urlencode($rowid).'&code='.urlencode($code).'&id='.urlencode($id), $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_delete', '', 0, 1);
|
||||||
}
|
}
|
||||||
//var_dump($elementList);
|
//var_dump($elementList);
|
||||||
|
|
||||||
@ -487,18 +482,18 @@ if ($id)
|
|||||||
|
|
||||||
if ($search_country_id > 0)
|
if ($search_country_id > 0)
|
||||||
{
|
{
|
||||||
if (preg_match('/ WHERE /',$sql)) $sql.= " AND ";
|
if (preg_match('/ WHERE /', $sql)) $sql.= " AND ";
|
||||||
else $sql.=" WHERE ";
|
else $sql.=" WHERE ";
|
||||||
$sql.= " c.rowid = ".$search_country_id;
|
$sql.= " c.rowid = ".$search_country_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If sort order is "country", we use country_code instead
|
// If sort order is "country", we use country_code instead
|
||||||
if ($sortfield == 'country') $sortfield='country_code';
|
if ($sortfield == 'country') $sortfield='country_code';
|
||||||
$sql.=$db->order($sortfield,$sortorder);
|
$sql.=$db->order($sortfield, $sortorder);
|
||||||
$sql.=$db->plimit($listlimit+1,$offset);
|
$sql.=$db->plimit($listlimit+1, $offset);
|
||||||
//print $sql;
|
//print $sql;
|
||||||
|
|
||||||
$fieldlist=explode(',',$tabfield[$id]);
|
$fieldlist=explode(',', $tabfield[$id]);
|
||||||
|
|
||||||
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$id.'" method="POST">';
|
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$id.'" method="POST">';
|
||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
@ -512,7 +507,7 @@ if ($id)
|
|||||||
$alabelisused=0;
|
$alabelisused=0;
|
||||||
$var=false;
|
$var=false;
|
||||||
|
|
||||||
$fieldlist=explode(',',$tabfield[$id]);
|
$fieldlist=explode(',', $tabfield[$id]);
|
||||||
|
|
||||||
// Line for title
|
// Line for title
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
@ -522,29 +517,31 @@ if ($id)
|
|||||||
// dans les dictionnaires de donnees
|
// dans les dictionnaires de donnees
|
||||||
$valuetoshow=ucfirst($fieldlist[$field]); // Par defaut
|
$valuetoshow=ucfirst($fieldlist[$field]); // Par defaut
|
||||||
$valuetoshow=$langs->trans($valuetoshow); // try to translate
|
$valuetoshow=$langs->trans($valuetoshow); // try to translate
|
||||||
$align="left";
|
$class="left";
|
||||||
if ($fieldlist[$field]=='code') { $valuetoshow=$langs->trans("Code"); }
|
if ($fieldlist[$field]=='code') { $valuetoshow=$langs->trans("Code"); }
|
||||||
if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label')
|
if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label')
|
||||||
{
|
{
|
||||||
$valuetoshow=$langs->trans("Label");
|
$valuetoshow=$langs->trans("Label");
|
||||||
if ($id != 25) $valuetoshow.="*";
|
|
||||||
}
|
}
|
||||||
if ($fieldlist[$field]=='country') {
|
if ($fieldlist[$field]=='country') {
|
||||||
if (in_array('region_id',$fieldlist)) { print '<td> </td>'; continue; } // For region page, we do not show the country input
|
if (in_array('region_id', $fieldlist)) { print '<td> </td>'; continue; } // For region page, we do not show the country input
|
||||||
$valuetoshow=$langs->trans("Country");
|
$valuetoshow=$langs->trans("Country");
|
||||||
}
|
}
|
||||||
if ($fieldlist[$field]=='country_id') { $valuetoshow=''; }
|
if ($fieldlist[$field]=='country_id') { $valuetoshow=''; }
|
||||||
if ($fieldlist[$field]=='pcg_version' || $fieldlist[$field]=='fk_pcg_version') { $valuetoshow=$langs->trans("Pcg_version"); }
|
if ($fieldlist[$field]=='pcg_version' || $fieldlist[$field]=='fk_pcg_version') { $valuetoshow=$langs->trans("Pcg_version"); }
|
||||||
|
|
||||||
if ($valuetoshow != '')
|
if ($valuetoshow != '') {
|
||||||
{
|
print '<td class="'.$class.'">';
|
||||||
print '<td align="'.$align.'">';
|
if (! empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i', $tabhelp[$id][$value])) {
|
||||||
if (! empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i',$tabhelp[$id][$value])) print '<a href="'.$tabhelp[$id][$value].'" target="_blank">'.$valuetoshow.' '.img_help(1,$valuetoshow).'</a>';
|
print '<a href="'.$tabhelp[$id][$value].'" target="_blank">'.$valuetoshow.' '.img_help(1, $valuetoshow).'</a>';
|
||||||
else if (! empty($tabhelp[$id][$value])) print $form->textwithpicto($valuetoshow,$tabhelp[$id][$value]);
|
} elseif (! empty($tabhelp[$id][$value])) {
|
||||||
else print $valuetoshow;
|
print $form->textwithpicto($valuetoshow, $tabhelp[$id][$value]);
|
||||||
|
} else {
|
||||||
|
print $valuetoshow;
|
||||||
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') $alabelisused=1;
|
if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') $alabelisused=1;
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<td>';
|
print '<td>';
|
||||||
@ -559,7 +556,7 @@ if ($id)
|
|||||||
|
|
||||||
$obj = new stdClass();
|
$obj = new stdClass();
|
||||||
// If data was already input, we define them in obj to populate input fields.
|
// If data was already input, we define them in obj to populate input fields.
|
||||||
if (GETPOST('actionadd','alpha'))
|
if (GETPOST('actionadd', 'alpha'))
|
||||||
{
|
{
|
||||||
foreach ($fieldlist as $key=>$val)
|
foreach ($fieldlist as $key=>$val)
|
||||||
{
|
{
|
||||||
@ -570,25 +567,21 @@ if ($id)
|
|||||||
|
|
||||||
$tmpaction = 'create';
|
$tmpaction = 'create';
|
||||||
$parameters=array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
$parameters=array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
||||||
$reshook=$hookmanager->executeHooks('createDictionaryFieldlist',$parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
$reshook=$hookmanager->executeHooks('createDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
||||||
$error=$hookmanager->error; $errors=$hookmanager->errors;
|
$error=$hookmanager->error; $errors=$hookmanager->errors;
|
||||||
|
|
||||||
if (empty($reshook))
|
if (empty($reshook))
|
||||||
{
|
{
|
||||||
fieldListAccountModel($fieldlist,$obj,$tabname[$id],'add');
|
fieldListAccountModel($fieldlist, $obj, $tabname[$id], 'add');
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<td colspan="3" align="right">';
|
print '<td colspan="3" class="right">';
|
||||||
print '<input type="submit" class="button" name="actionadd" value="'.$langs->trans("Add").'">';
|
print '<input type="submit" class="button" name="actionadd" value="'.$langs->trans("Add").'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print "</tr>";
|
print "</tr>";
|
||||||
|
|
||||||
$colspan=count($fieldlist)+3;
|
$colspan=count($fieldlist)+3;
|
||||||
|
|
||||||
if (! empty($alabelisused)) // If there is one label among fields, we show legend of *
|
|
||||||
{
|
|
||||||
print '<tr><td colspan="'.$colspan.'">* '.$langs->trans("LabelUsedByDefault").'.</td></tr>';
|
|
||||||
}
|
|
||||||
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
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -611,7 +604,7 @@ if ($id)
|
|||||||
// There is several pages
|
// There is several pages
|
||||||
if ($num > $listlimit)
|
if ($num > $listlimit)
|
||||||
{
|
{
|
||||||
print '<tr class="none"><td align="right" colspan="'.(3+count($fieldlist)).'">';
|
print '<tr class="none"><td class="right" colspan="'.(3+count($fieldlist)).'">';
|
||||||
print_fleche_navigation($page, $_SERVER["PHP_SELF"], $paramwithsearch, ($num > $listlimit), '<li class="pagination"><span>'.$langs->trans("Page").' '.($page+1).'</span></li>');
|
print_fleche_navigation($page, $_SERVER["PHP_SELF"], $paramwithsearch, ($num > $listlimit), '<li class="pagination"><span>'.$langs->trans("Page").' '.($page+1).'</span></li>');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
@ -639,7 +632,7 @@ if ($id)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
print '<td class="liste_titre"></td>';
|
print '<td class="liste_titre"></td>';
|
||||||
print '<td class="liste_titre" colspan="2" align="right">';
|
print '<td class="liste_titre right" colspan="2">';
|
||||||
$searchpicto=$form->showFilterAndCheckAddButtons(0);
|
$searchpicto=$form->showFilterAndCheckAddButtons(0);
|
||||||
print $searchpicto;
|
print $searchpicto;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
@ -652,7 +645,7 @@ if ($id)
|
|||||||
// Determine le nom du champ par rapport aux noms possibles
|
// Determine le nom du champ par rapport aux noms possibles
|
||||||
// dans les dictionnaires de donnees
|
// dans les dictionnaires de donnees
|
||||||
$showfield=1; // By defaut
|
$showfield=1; // By defaut
|
||||||
$align="left";
|
$class="left";
|
||||||
$sortable=1;
|
$sortable=1;
|
||||||
$valuetoshow='';
|
$valuetoshow='';
|
||||||
/*
|
/*
|
||||||
@ -664,23 +657,28 @@ if ($id)
|
|||||||
*/
|
*/
|
||||||
$valuetoshow=ucfirst($fieldlist[$field]); // By defaut
|
$valuetoshow=ucfirst($fieldlist[$field]); // By defaut
|
||||||
$valuetoshow=$langs->trans($valuetoshow); // try to translate
|
$valuetoshow=$langs->trans($valuetoshow); // try to translate
|
||||||
if ($fieldlist[$field]=='code') { $valuetoshow=$langs->trans("Code"); }
|
if ($fieldlist[$field]=='code') {
|
||||||
if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label')
|
$valuetoshow=$langs->trans("Code");
|
||||||
{
|
}
|
||||||
$valuetoshow=$langs->trans("Label");
|
if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') {
|
||||||
if ($id != 25) $valuetoshow.="*";
|
$valuetoshow=$langs->trans("Label");
|
||||||
}
|
}
|
||||||
if ($fieldlist[$field]=='country') { $valuetoshow=$langs->trans("Country"); }
|
if ($fieldlist[$field]=='country') {
|
||||||
if ($fieldlist[$field]=='country_id') { $showfield=0; }
|
$valuetoshow=$langs->trans("Country");
|
||||||
if ($fieldlist[$field]=='fk_pcg_version') { $valuetoshow=$langs->trans("Pcg_version"); }
|
}
|
||||||
|
if ($fieldlist[$field]=='country_id') {
|
||||||
|
$showfield=0;
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field]=='fk_pcg_version') {
|
||||||
|
$valuetoshow=$langs->trans("Pcg_version");
|
||||||
|
}
|
||||||
|
|
||||||
// Affiche nom du champ
|
// Affiche nom du champ
|
||||||
if ($showfield)
|
if ($showfield) {
|
||||||
{
|
print getTitleFieldOfList($valuetoshow, 0, $_SERVER["PHP_SELF"], ($sortable?$fieldlist[$field]:''), ($page?'page='.$page.'&':''), $param, "", $sortfield, $sortorder, $class.' ');
|
||||||
print getTitleFieldOfList($valuetoshow, 0, $_SERVER["PHP_SELF"], ($sortable?$fieldlist[$field]:''), ($page?'page='.$page.'&':''), $param, "align=".$align, $sortfield, $sortorder);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print getTitleFieldOfList($langs->trans("Status"), 0, $_SERVER["PHP_SELF"], "active", ($page?'page='.$page.'&':''), $param, 'align="center"', $sortfield, $sortorder);
|
print getTitleFieldOfList($langs->trans("Status"), 0, $_SERVER["PHP_SELF"], "active", ($page?'page='.$page.'&':''), $param, '', $sortfield, $sortorder, 'center ');
|
||||||
print getTitleFieldOfList('');
|
print getTitleFieldOfList('');
|
||||||
print getTitleFieldOfList('');
|
print getTitleFieldOfList('');
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
@ -702,19 +700,19 @@ if ($id)
|
|||||||
|
|
||||||
$tmpaction='edit';
|
$tmpaction='edit';
|
||||||
$parameters=array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
$parameters=array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
||||||
$reshook=$hookmanager->executeHooks('editDictionaryFieldlist',$parameters,$obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
$reshook=$hookmanager->executeHooks('editDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
||||||
$error=$hookmanager->error; $errors=$hookmanager->errors;
|
$error=$hookmanager->error; $errors=$hookmanager->errors;
|
||||||
|
|
||||||
if (empty($reshook)) fieldListAccountModel($fieldlist,$obj,$tabname[$id],'edit');
|
if (empty($reshook)) fieldListAccountModel($fieldlist, $obj, $tabname[$id], 'edit');
|
||||||
|
|
||||||
print '<td colspan="3" align="right"><a name="'.(! empty($obj->rowid)?$obj->rowid:$obj->code).'"> </a><input type="submit" class="button" name="actionmodify" value="'.$langs->trans("Modify").'">';
|
print '<td colspan="3" class="right"><a name="'.(! empty($obj->rowid)?$obj->rowid:$obj->code).'"> </a><input type="submit" class="button" name="actionmodify" value="'.$langs->trans("Modify").'">';
|
||||||
print ' <input type="submit" class="button" name="actioncancel" value="'.$langs->trans("Cancel").'"></td>';
|
print ' <input type="submit" class="button" name="actioncancel" value="'.$langs->trans("Cancel").'"></td>';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$tmpaction = 'view';
|
$tmpaction = 'view';
|
||||||
$parameters=array('var'=>$var, 'fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
$parameters=array('var'=>$var, 'fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
||||||
$reshook=$hookmanager->executeHooks('viewDictionaryFieldlist',$parameters,$obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
$reshook=$hookmanager->executeHooks('viewDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
||||||
|
|
||||||
$error=$hookmanager->error; $errors=$hookmanager->errors;
|
$error=$hookmanager->error; $errors=$hookmanager->errors;
|
||||||
|
|
||||||
@ -724,7 +722,7 @@ if ($id)
|
|||||||
{
|
{
|
||||||
|
|
||||||
$showfield=1;
|
$showfield=1;
|
||||||
$align="left";
|
$class="left";
|
||||||
$valuetoshow=$obj->{$fieldlist[$field]};
|
$valuetoshow=$obj->{$fieldlist[$field]};
|
||||||
if ($value == 'type_template')
|
if ($value == 'type_template')
|
||||||
{
|
{
|
||||||
@ -734,14 +732,14 @@ if ($id)
|
|||||||
{
|
{
|
||||||
$valuetoshow = isset($elementList[$valuetoshow])?$elementList[$valuetoshow]:$valuetoshow;
|
$valuetoshow = isset($elementList[$valuetoshow])?$elementList[$valuetoshow]:$valuetoshow;
|
||||||
}
|
}
|
||||||
else if ($value == 'source')
|
elseif ($value == 'source')
|
||||||
{
|
{
|
||||||
$valuetoshow = isset($sourceList[$valuetoshow])?$sourceList[$valuetoshow]:$valuetoshow;
|
$valuetoshow = isset($sourceList[$valuetoshow])?$sourceList[$valuetoshow]:$valuetoshow;
|
||||||
}
|
}
|
||||||
else if ($valuetoshow=='all') {
|
elseif ($valuetoshow=='all') {
|
||||||
$valuetoshow=$langs->trans('All');
|
$valuetoshow=$langs->trans('All');
|
||||||
}
|
}
|
||||||
else if ($fieldlist[$field]=='country') {
|
elseif ($fieldlist[$field]=='country') {
|
||||||
if (empty($obj->country_code))
|
if (empty($obj->country_code))
|
||||||
{
|
{
|
||||||
$valuetoshow='-';
|
$valuetoshow='-';
|
||||||
@ -752,14 +750,14 @@ if ($id)
|
|||||||
$valuetoshow=($key != "Country".strtoupper($obj->country_code)?$obj->country_code." - ".$key:$obj->country);
|
$valuetoshow=($key != "Country".strtoupper($obj->country_code)?$obj->country_code." - ".$key:$obj->country);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ($fieldlist[$field]=='country_id') {
|
elseif ($fieldlist[$field]=='country_id') {
|
||||||
$showfield=0;
|
$showfield=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$class='tddict';
|
$class='tddict';
|
||||||
if ($fieldlist[$field] == 'tracking') $class.=' tdoverflowauto';
|
if ($fieldlist[$field] == 'tracking') $class.=' tdoverflowauto';
|
||||||
// Show value for field
|
// Show value for field
|
||||||
if ($showfield) print '<!-- '.$fieldlist[$field].' --><td align="'.$align.'" class="'.$class.'">'.$valuetoshow.'</td>';
|
if ($showfield) print '<!-- '.$fieldlist[$field].' --><td class="'.$class.'">'.$valuetoshow.'</td>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -771,17 +769,17 @@ if ($id)
|
|||||||
$url.='&';
|
$url.='&';
|
||||||
|
|
||||||
// Active
|
// Active
|
||||||
print '<td align="center" class="nowrap">';
|
print '<td class="center nowrap">';
|
||||||
if ($canbedisabled) print '<a href="'.$url.'action='.$acts[$obj->active].'">'.$actl[$obj->active].'</a>';
|
if ($canbedisabled) print '<a href="'.$url.'action='.$acts[$obj->active].'">'.$actl[$obj->active].'</a>';
|
||||||
else print $langs->trans("AlwaysActive");
|
else print $langs->trans("AlwaysActive");
|
||||||
print "</td>";
|
print "</td>";
|
||||||
|
|
||||||
// Modify link
|
// Modify link
|
||||||
if ($canbemodified) print '<td align="center"><a class="reposition" href="'.$url.'action=edit">'.img_edit().'</a></td>';
|
if ($canbemodified) print '<td class="center"><a class="reposition" href="'.$url.'action=edit">'.img_edit().'</a></td>';
|
||||||
else print '<td> </td>';
|
else print '<td> </td>';
|
||||||
|
|
||||||
// Delete link
|
// Delete link
|
||||||
if ($iserasable) print '<td align="center"><a href="'.$url.'action=delete">'.img_delete().'</a></td>';
|
if ($iserasable) print '<td class="center"><a href="'.$url.'action=delete">'.img_delete().'</a></td>';
|
||||||
else print '<td> </td>';
|
else print '<td> </td>';
|
||||||
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
@ -816,7 +814,7 @@ $db->close();
|
|||||||
* @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 void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function fieldListAccountModel($fieldlist, $obj='', $tabname='', $context='')
|
function fieldListAccountModel($fieldlist, $obj = '', $tabname = '', $context = '')
|
||||||
{
|
{
|
||||||
global $conf,$langs,$db;
|
global $conf,$langs,$db;
|
||||||
global $form;
|
global $form;
|
||||||
@ -831,7 +829,7 @@ function fieldListAccountModel($fieldlist, $obj='', $tabname='', $context='')
|
|||||||
{
|
{
|
||||||
if ($fieldlist[$field] == 'country')
|
if ($fieldlist[$field] == 'country')
|
||||||
{
|
{
|
||||||
if (in_array('region_id',$fieldlist))
|
if (in_array('region_id', $fieldlist))
|
||||||
{
|
{
|
||||||
print '<td>';
|
print '<td>';
|
||||||
//print join(',',$fieldlist);
|
//print join(',',$fieldlist);
|
||||||
@ -845,7 +843,7 @@ function fieldListAccountModel($fieldlist, $obj='', $tabname='', $context='')
|
|||||||
}
|
}
|
||||||
elseif ($fieldlist[$field] == 'country_id')
|
elseif ($fieldlist[$field] == 'country_id')
|
||||||
{
|
{
|
||||||
if (! in_array('country',$fieldlist)) // If there is already a field country, we don't show country_id (avoid duplicate)
|
if (! in_array('country', $fieldlist)) // If there is already a field country, we don't show country_id (avoid duplicate)
|
||||||
{
|
{
|
||||||
$country_id = (! empty($obj->{$fieldlist[$field]}) ? $obj->{$fieldlist[$field]} : 0);
|
$country_id = (! empty($obj->{$fieldlist[$field]}) ? $obj->{$fieldlist[$field]} : 0);
|
||||||
print '<td>';
|
print '<td>';
|
||||||
@ -854,12 +852,12 @@ function fieldListAccountModel($fieldlist, $obj='', $tabname='', $context='')
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
elseif ($fieldlist[$field] == 'type_cdr') {
|
elseif ($fieldlist[$field] == 'type_cdr') {
|
||||||
if ($fieldlist[$field] == 'type_cdr') print '<td align="center">';
|
if ($fieldlist[$field] == 'type_cdr') print '<td class="center">';
|
||||||
else print '<td>';
|
else print '<td>';
|
||||||
if ($fieldlist[$field] == 'type_cdr') {
|
if ($fieldlist[$field] == 'type_cdr') {
|
||||||
print $form->selectarray($fieldlist[$field], array(0=>$langs->trans('None'), 1=>$langs->trans('AtEndOfMonth'), 2=>$langs->trans('CurrentNext')), (! empty($obj->{$fieldlist[$field]})?$obj->{$fieldlist[$field]}:''));
|
print $form->selectarray($fieldlist[$field], array(0=>$langs->trans('None'), 1=>$langs->trans('AtEndOfMonth'), 2=>$langs->trans('CurrentNext')), (! empty($obj->{$fieldlist[$field]})?$obj->{$fieldlist[$field]}:''));
|
||||||
} else {
|
} else {
|
||||||
print $form->selectyesno($fieldlist[$field],(! empty($obj->{$fieldlist[$field]})?$obj->{$fieldlist[$field]}:''),1);
|
print $form->selectyesno($fieldlist[$field], (! empty($obj->{$fieldlist[$field]})?$obj->{$fieldlist[$field]}:''), 1);
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
@ -879,4 +877,3 @@ function fieldListAccountModel($fieldlist, $obj='', $tabname='', $context='')
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2013-2018 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -35,13 +35,13 @@ $error = 0;
|
|||||||
$langs->loadLangs(array("bills","accountancy"));
|
$langs->loadLangs(array("bills","accountancy"));
|
||||||
|
|
||||||
$mesg = '';
|
$mesg = '';
|
||||||
$action = GETPOST('action','aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
$backtopage = GETPOST('backtopage','alpha');
|
$backtopage = GETPOST('backtopage', 'alpha');
|
||||||
$id = GETPOST('id', 'int');
|
$id = GETPOST('id', 'int');
|
||||||
$ref = GETPOST('ref', 'alpha');
|
$ref = GETPOST('ref', 'alpha');
|
||||||
$rowid = GETPOST('rowid', 'int');
|
$rowid = GETPOST('rowid', 'int');
|
||||||
$cancel = GETPOST('cancel','alpha');
|
$cancel = GETPOST('cancel', 'alpha');
|
||||||
$accountingaccount = GETPOST('accountingaccount','alpha');
|
$accountingaccount = GETPOST('accountingaccount', 'alpha');
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
|
|
||||||
@ -53,9 +53,9 @@ $object = new AccountingAccount($db);
|
|||||||
* Action
|
* Action
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (GETPOST('cancel','alpha'))
|
if (GETPOST('cancel', 'alpha'))
|
||||||
{
|
{
|
||||||
$urltogo=$backtopage?$backtopage:dol_buildpath('/accountancy/admin/account.php',1);
|
$urltogo=$backtopage?$backtopage:dol_buildpath('/accountancy/admin/account.php', 1);
|
||||||
header("Location: ".$urltogo);
|
header("Location: ".$urltogo);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
@ -74,28 +74,28 @@ if ($action == 'add' && $user->rights->accounting->chartofaccount)
|
|||||||
// To manage zero or not at the end of the accounting account
|
// To manage zero or not at the end of the accounting account
|
||||||
if($conf->global->ACCOUNTING_MANAGE_ZERO == 1)
|
if($conf->global->ACCOUNTING_MANAGE_ZERO == 1)
|
||||||
{
|
{
|
||||||
$account_number = GETPOST('account_number','string');
|
$account_number = GETPOST('account_number', 'string');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$account_number = clean_account(GETPOST('account_number','string'));
|
$account_number = clean_account(GETPOST('account_number', 'string'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GETPOST('account_parent','int') <= 0)
|
if (GETPOST('account_parent', 'int') <= 0)
|
||||||
{
|
{
|
||||||
$account_parent = 0;
|
$account_parent = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$account_parent = GETPOST('account_parent','int');
|
$account_parent = GETPOST('account_parent', 'int');
|
||||||
}
|
}
|
||||||
|
|
||||||
$object->fk_pcg_version = $obj->pcg_version;
|
$object->fk_pcg_version = $obj->pcg_version;
|
||||||
$object->pcg_type = GETPOST('pcg_type','alpha');
|
$object->pcg_type = GETPOST('pcg_type', 'alpha');
|
||||||
$object->pcg_subtype = GETPOST('pcg_subtype','alpha');
|
$object->pcg_subtype = GETPOST('pcg_subtype', 'alpha');
|
||||||
$object->account_number = $account_number;
|
$object->account_number = $account_number;
|
||||||
$object->account_parent = $account_parent;
|
$object->account_parent = $account_parent;
|
||||||
$object->account_category = GETPOST('account_category','alpha');
|
$object->account_category = GETPOST('account_category', 'alpha');
|
||||||
$object->label = GETPOST('label', 'alpha');
|
$object->label = GETPOST('label', 'alpha');
|
||||||
$object->active = 1;
|
$object->active = 1;
|
||||||
|
|
||||||
@ -118,13 +118,13 @@ if ($action == 'add' && $user->rights->accounting->chartofaccount)
|
|||||||
}
|
}
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
setEventMessages("RecordCreatedSuccessfully",null,'mesgs');
|
setEventMessages("RecordCreatedSuccessfully", null, 'mesgs');
|
||||||
$urltogo=$backtopage?$backtopage:dol_buildpath('/accountancy/admin/account.php',1);
|
$urltogo=$backtopage?$backtopage:dol_buildpath('/accountancy/admin/account.php', 1);
|
||||||
header("Location: ".$urltogo);
|
header("Location: ".$urltogo);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if ($action == 'edit' && $user->rights->accounting->chartofaccount) {
|
} elseif ($action == 'edit' && $user->rights->accounting->chartofaccount) {
|
||||||
if (! $cancel) {
|
if (! $cancel) {
|
||||||
$result = $object->fetch($id);
|
$result = $object->fetch($id);
|
||||||
|
|
||||||
@ -139,28 +139,28 @@ if ($action == 'add' && $user->rights->accounting->chartofaccount)
|
|||||||
// To manage zero or not at the end of the accounting account
|
// To manage zero or not at the end of the accounting account
|
||||||
if($conf->global->ACCOUNTING_MANAGE_ZERO == 1)
|
if($conf->global->ACCOUNTING_MANAGE_ZERO == 1)
|
||||||
{
|
{
|
||||||
$account_number = GETPOST('account_number','string');
|
$account_number = GETPOST('account_number', 'string');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$account_number = clean_account(GETPOST('account_number','string'));
|
$account_number = clean_account(GETPOST('account_number', 'string'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GETPOST('account_parent','int') <= 0)
|
if (GETPOST('account_parent', 'int') <= 0)
|
||||||
{
|
{
|
||||||
$account_parent = 0;
|
$account_parent = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$account_parent = GETPOST('account_parent','int');
|
$account_parent = GETPOST('account_parent', 'int');
|
||||||
}
|
}
|
||||||
|
|
||||||
$object->fk_pcg_version = $obj->pcg_version;
|
$object->fk_pcg_version = $obj->pcg_version;
|
||||||
$object->pcg_type = GETPOST('pcg_type','alpha');
|
$object->pcg_type = GETPOST('pcg_type', 'alpha');
|
||||||
$object->pcg_subtype = GETPOST('pcg_subtype','alpha');
|
$object->pcg_subtype = GETPOST('pcg_subtype', 'alpha');
|
||||||
$object->account_number = $account_number;
|
$object->account_number = $account_number;
|
||||||
$object->account_parent = $account_parent;
|
$object->account_parent = $account_parent;
|
||||||
$object->account_category = GETPOST('account_category','alpha');
|
$object->account_category = GETPOST('account_category', 'alpha');
|
||||||
$object->label = GETPOST('label', 'alpha');
|
$object->label = GETPOST('label', 'alpha');
|
||||||
|
|
||||||
$result = $object->update($user);
|
$result = $object->update($user);
|
||||||
@ -177,7 +177,7 @@ if ($action == 'add' && $user->rights->accounting->chartofaccount)
|
|||||||
header("Location: " . $urltogo);
|
header("Location: " . $urltogo);
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
} else if ($action == 'delete' && $user->rights->accounting->chartofaccount) {
|
} elseif ($action == 'delete' && $user->rights->accounting->chartofaccount) {
|
||||||
$result = $object->fetch($id);
|
$result = $object->fetch($id);
|
||||||
|
|
||||||
if (! empty($object->id)) {
|
if (! empty($object->id)) {
|
||||||
@ -251,13 +251,13 @@ if ($action == 'create') {
|
|||||||
// Chart of accounts type
|
// Chart of accounts type
|
||||||
print '<tr><td>' . $langs->trans("Pcgtype") . '</td>';
|
print '<tr><td>' . $langs->trans("Pcgtype") . '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="text" name="pcg_type" value="'.dol_escape_htmltag(isset($_POST['pcg_type'])?GETPOST('pcg_type','alpha'):$object->pcg_type).'">';
|
print '<input type="text" name="pcg_type" value="'.dol_escape_htmltag(isset($_POST['pcg_type'])?GETPOST('pcg_type', 'alpha'):$object->pcg_type).'">';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Chart of acounts subtype
|
// Chart of acounts subtype
|
||||||
print '<tr><td>' . $langs->trans("Pcgsubtype") . '</td>';
|
print '<tr><td>' . $langs->trans("Pcgsubtype") . '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="text" name="pcg_subtype" value="'.dol_escape_htmltag(isset($_POST['pcg_subtype'])?GETPOST('pcg_subtype','alpha'):$object->pcg_subtype).'">';
|
print '<input type="text" name="pcg_subtype" value="'.dol_escape_htmltag(isset($_POST['pcg_subtype'])?GETPOST('pcg_subtype', 'alpha'):$object->pcg_subtype).'">';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
@ -272,7 +272,7 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
}
|
}
|
||||||
else if ($id > 0 || $ref) {
|
elseif ($id > 0 || $ref) {
|
||||||
|
|
||||||
$result = $object->fetch($id, $ref, 1);
|
$result = $object->fetch($id, $ref, 1);
|
||||||
|
|
||||||
@ -317,13 +317,13 @@ else if ($id > 0 || $ref) {
|
|||||||
// Chart of accounts type
|
// Chart of accounts type
|
||||||
print '<tr><td>' . $langs->trans("Pcgtype") . '</td>';
|
print '<tr><td>' . $langs->trans("Pcgtype") . '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="text" name="pcg_type" value="'.dol_escape_htmltag(isset($_POST['pcg_type'])?GETPOST('pcg_type','alpha'):$object->pcg_type).'">';
|
print '<input type="text" name="pcg_type" value="'.dol_escape_htmltag(isset($_POST['pcg_type'])?GETPOST('pcg_type', 'alpha'):$object->pcg_type).'">';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Chart of accounts subtype
|
// Chart of accounts subtype
|
||||||
print '<tr><td>' . $langs->trans("Pcgsubtype") . '</td>';
|
print '<tr><td>' . $langs->trans("Pcgsubtype") . '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="text" name="pcg_subtype" value="'.dol_escape_htmltag(isset($_POST['pcg_subtype'])?GETPOST('pcg_subtype','alpha'):$object->pcg_subtype).'">';
|
print '<input type="text" name="pcg_subtype" value="'.dol_escape_htmltag(isset($_POST['pcg_subtype'])?GETPOST('pcg_subtype', 'alpha'):$object->pcg_subtype).'">';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2016 Jamal Elbaz <jamelbaz@gmail.pro>
|
/* Copyright (C) 2016 Jamal Elbaz <jamelbaz@gmail.pro>
|
||||||
* Copyright (C) 2017 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2017 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -35,11 +35,11 @@ $langs->loadLangs(array("bills","accountancy"));
|
|||||||
$mesg = '';
|
$mesg = '';
|
||||||
$id = GETPOST('id', 'int');
|
$id = GETPOST('id', 'int');
|
||||||
$rowid = GETPOST('rowid', 'int');
|
$rowid = GETPOST('rowid', 'int');
|
||||||
$cancel = GETPOST('cancel','alpha');
|
$cancel = GETPOST('cancel', 'alpha');
|
||||||
$action = GETPOST('action','aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
$cat_id = GETPOST('account_category','int');
|
$cat_id = GETPOST('account_category', 'int');
|
||||||
$selectcpt = GETPOST('cpt_bk', 'array');
|
$selectcpt = GETPOST('cpt_bk', 'array');
|
||||||
$cpt_id = GETPOST('cptid','int');
|
$cpt_id = GETPOST('cptid', 'int');
|
||||||
|
|
||||||
if ($cat_id == 0) {
|
if ($cat_id == 0) {
|
||||||
$cat_id = null;
|
$cat_id = null;
|
||||||
@ -60,8 +60,8 @@ $accountingcategory = new AccountancyCategory($db);
|
|||||||
|
|
||||||
// si ajout de comptes
|
// si ajout de comptes
|
||||||
if (! empty($selectcpt)) {
|
if (! empty($selectcpt)) {
|
||||||
$cpts = array ();
|
$cpts = array();
|
||||||
foreach ( $selectcpt as $selectedoption ) {
|
foreach ($selectcpt as $selectedoption) {
|
||||||
if (! array_key_exists($selectedoption, $cpts))
|
if (! array_key_exists($selectedoption, $cpts))
|
||||||
$cpts[$selectedoption] = "'" . $selectedoption . "'";
|
$cpts[$selectedoption] = "'" . $selectedoption . "'";
|
||||||
}
|
}
|
||||||
@ -71,13 +71,13 @@ if (! empty($selectcpt)) {
|
|||||||
if ($return<0) {
|
if ($return<0) {
|
||||||
setEventMessages($langs->trans('errors'), $accountingcategory->errors, 'errors');
|
setEventMessages($langs->trans('errors'), $accountingcategory->errors, 'errors');
|
||||||
} else {
|
} else {
|
||||||
setEventMessages($langs->trans('SetupSaved'), null, 'mesgs');
|
setEventMessages($langs->trans('RecordModifiedSuccessfully'), null, 'mesgs');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($action == 'delete') {
|
if ($action == 'delete') {
|
||||||
if ($cpt_id) {
|
if ($cpt_id) {
|
||||||
if ($accountingcategory->deleteCptCat($cpt_id)) {
|
if ($accountingcategory->deleteCptCat($cpt_id)) {
|
||||||
setEventMessages($langs->trans('CategoryDeleted'), null, 'mesgs');
|
setEventMessages($langs->trans('AccountRemovedFromGroup'), null, 'mesgs');
|
||||||
} else {
|
} else {
|
||||||
setEventMessages($langs->trans('errors'), null, 'errors');
|
setEventMessages($langs->trans('errors'), null, 'errors');
|
||||||
}
|
}
|
||||||
@ -167,14 +167,15 @@ if ($action == 'display' || $action == 'delete') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (is_array($accountingcategory->lines_display) && count($accountingcategory->lines_display) > 0) {
|
if (is_array($accountingcategory->lines_display) && count($accountingcategory->lines_display) > 0) {
|
||||||
foreach ( $accountingcategory->lines_display as $cpt ) {
|
foreach ($accountingcategory->lines_display as $cpt) {
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>' . length_accountg($cpt->account_number) . '</td>';
|
print '<td>' . length_accountg($cpt->account_number) . '</td>';
|
||||||
print '<td>' . $cpt->label . '</td>';
|
print '<td>' . $cpt->label . '</td>';
|
||||||
print '<td align="right">';
|
print '<td class="right">';
|
||||||
print "<a href= '".$_SERVER['PHP_SELF']."?action=delete&account_category=" . $cat_id . "&cptid=" . $cpt->rowid."'>";
|
print "<a href= '".$_SERVER['PHP_SELF']."?action=delete&account_category=" . $cat_id . "&cptid=" . $cpt->rowid."'>";
|
||||||
print img_delete($langs->trans("DeleteFromCat")).' ';
|
print $langs->trans("DeleteFromCat");
|
||||||
print $langs->trans("DeleteFromCat")."</a>";
|
print img_picto($langs->trans("DeleteFromCat"), 'unlink');
|
||||||
|
print "</a>";
|
||||||
print "</td>";
|
print "</td>";
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2004-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
/* Copyright (C) 2004-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2011-2017 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2011-2017 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -34,36 +34,35 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
|
|||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("errors","admin","companies","resource","holiday","accountancy","hrm"));
|
$langs->loadLangs(array("errors","admin","companies","resource","holiday","accountancy","hrm"));
|
||||||
|
|
||||||
$action=GETPOST('action','aZ09')?GETPOST('action','aZ09'):'view';
|
$action=GETPOST('action', 'aZ09')?GETPOST('action', 'aZ09'):'view';
|
||||||
$confirm=GETPOST('confirm','alpha');
|
$confirm=GETPOST('confirm', 'alpha');
|
||||||
$id=32;
|
$id=32;
|
||||||
$rowid=GETPOST('rowid','alpha');
|
$rowid=GETPOST('rowid', 'alpha');
|
||||||
$code=GETPOST('code','alpha');
|
$code=GETPOST('code', 'alpha');
|
||||||
|
|
||||||
// Security access
|
// Security access
|
||||||
if (empty($user->rights->accounting->chartofaccount))
|
if (empty($user->rights->accounting->chartofaccount)) {
|
||||||
{
|
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
}
|
}
|
||||||
|
|
||||||
$acts[0] = "activate";
|
$acts[0] = "activate";
|
||||||
$acts[1] = "disable";
|
$acts[1] = "disable";
|
||||||
$actl[0] = img_picto($langs->trans("Disabled"),'switch_off');
|
$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','int')>0?GETPOST('listlimit','int'):1000;
|
$listlimit=GETPOST('listlimit', 'int')>0?GETPOST('listlimit', 'int'):1000;
|
||||||
$active = 1;
|
$active = 1;
|
||||||
|
|
||||||
$sortfield = GETPOST("sortfield",'aZ09comma');
|
$sortfield = GETPOST("sortfield", 'aZ09comma');
|
||||||
$sortorder = GETPOST("sortorder",'aZ09comma');
|
$sortorder = GETPOST("sortorder", 'aZ09comma');
|
||||||
$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 = $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');
|
||||||
|
|
||||||
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
||||||
$hookmanager->initHooks(array('admin'));
|
$hookmanager->initHooks(array('admin'));
|
||||||
@ -121,7 +120,7 @@ $tabfieldcheck=array();
|
|||||||
$tabfieldcheck[32] = array();
|
$tabfieldcheck[32] = array();
|
||||||
|
|
||||||
// Complete all arrays with entries found into modules
|
// Complete all arrays with entries found into modules
|
||||||
complete_dictionary_with_modules($taborder,$tabname,$tablib,$tabsql,$tabsqlsort,$tabfield,$tabfieldvalue,$tabfieldinsert,$tabrowid,$tabcond,$tabhelp,$tabfieldcheck);
|
complete_dictionary_with_modules($taborder, $tabname, $tablib, $tabsql, $tabsqlsort, $tabfield, $tabfieldvalue, $tabfieldinsert, $tabrowid, $tabcond, $tabhelp, $tabfieldcheck);
|
||||||
|
|
||||||
|
|
||||||
// Define elementList and sourceList (used for dictionary type of contacts "llx_c_type_contact")
|
// Define elementList and sourceList (used for dictionary type of contacts "llx_c_type_contact")
|
||||||
@ -134,18 +133,18 @@ $sourceList=array();
|
|||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (GETPOST('button_removefilter','alpha') || GETPOST('button_removefilter.x','alpha') || GETPOST('button_removefilter_x','alpha'))
|
if (GETPOST('button_removefilter', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter_x', 'alpha'))
|
||||||
{
|
{
|
||||||
$search_country_id = '';
|
$search_country_id = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actions add or modify an entry into a dictionary
|
// Actions add or modify an entry into a dictionary
|
||||||
if (GETPOST('actionadd','alpha') || GETPOST('actionmodify','alpha'))
|
if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha'))
|
||||||
{
|
{
|
||||||
$listfield=explode(',', str_replace(' ', '',$tabfield[$id]));
|
$listfield=explode(',', str_replace(' ', '', $tabfield[$id]));
|
||||||
$listfieldinsert=explode(',',$tabfieldinsert[$id]);
|
$listfieldinsert=explode(',', $tabfieldinsert[$id]);
|
||||||
$listfieldmodify=explode(',',$tabfieldinsert[$id]);
|
$listfieldmodify=explode(',', $tabfieldinsert[$id]);
|
||||||
$listfieldvalue=explode(',',$tabfieldvalue[$id]);
|
$listfieldvalue=explode(',', $tabfieldvalue[$id]);
|
||||||
|
|
||||||
// Check that all fields are filled
|
// Check that all fields are filled
|
||||||
$ok=1;
|
$ok=1;
|
||||||
@ -177,7 +176,7 @@ if (GETPOST('actionadd','alpha') || GETPOST('actionmodify','alpha'))
|
|||||||
setEventMessages($langs->transnoentities('ErrorCodeCantContainZero'), null, 'errors');
|
setEventMessages($langs->transnoentities('ErrorCodeCantContainZero'), null, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (! is_numeric(GETPOST('position','alpha')))
|
if (! is_numeric(GETPOST('position', 'alpha')))
|
||||||
{
|
{
|
||||||
$langs->loadLangs(array("errors"));
|
$langs->loadLangs(array("errors"));
|
||||||
$ok=0;
|
$ok=0;
|
||||||
@ -190,7 +189,7 @@ if (GETPOST('actionadd','alpha') || GETPOST('actionmodify','alpha'))
|
|||||||
if ($_POST["accountancy_code_buy"] <= 0) $_POST["accountancy_code_buy"]=''; // If empty, we force to null
|
if ($_POST["accountancy_code_buy"] <= 0) $_POST["accountancy_code_buy"]=''; // If empty, we force to null
|
||||||
|
|
||||||
// Si verif ok et action add, on ajoute la ligne
|
// Si verif ok et action add, on ajoute la ligne
|
||||||
if ($ok && GETPOST('actionadd','alpha'))
|
if ($ok && GETPOST('actionadd', 'alpha'))
|
||||||
{
|
{
|
||||||
if ($tabrowid[$id])
|
if ($tabrowid[$id])
|
||||||
{
|
{
|
||||||
@ -210,13 +209,13 @@ if (GETPOST('actionadd','alpha') || GETPOST('actionmodify','alpha'))
|
|||||||
// Add new entry
|
// Add new entry
|
||||||
$sql = "INSERT INTO ".$tabname[$id]." (";
|
$sql = "INSERT INTO ".$tabname[$id]." (";
|
||||||
// List of fields
|
// List of fields
|
||||||
if ($tabrowid[$id] && ! in_array($tabrowid[$id],$listfieldinsert)) $sql.= $tabrowid[$id].",";
|
if ($tabrowid[$id] && ! in_array($tabrowid[$id], $listfieldinsert)) $sql.= $tabrowid[$id].",";
|
||||||
$sql.= $tabfieldinsert[$id];
|
$sql.= $tabfieldinsert[$id];
|
||||||
$sql.=",active)";
|
$sql.=",active)";
|
||||||
$sql.= " VALUES(";
|
$sql.= " VALUES(";
|
||||||
|
|
||||||
// List of values
|
// List of values
|
||||||
if ($tabrowid[$id] && ! in_array($tabrowid[$id],$listfieldinsert)) $sql.= $newid.",";
|
if ($tabrowid[$id] && ! in_array($tabrowid[$id], $listfieldinsert)) $sql.= $newid.",";
|
||||||
$i=0;
|
$i=0;
|
||||||
foreach ($listfieldinsert as $f => $value)
|
foreach ($listfieldinsert as $f => $value)
|
||||||
{
|
{
|
||||||
@ -249,7 +248,7 @@ if (GETPOST('actionadd','alpha') || GETPOST('actionmodify','alpha'))
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Si verif ok et action modify, on modifie la ligne
|
// Si verif ok et action modify, on modifie la ligne
|
||||||
if ($ok && GETPOST('actionmodify','alpha'))
|
if ($ok && GETPOST('actionmodify', 'alpha'))
|
||||||
{
|
{
|
||||||
if ($tabrowid[$id]) { $rowidcol=$tabrowid[$id]; }
|
if ($tabrowid[$id]) { $rowidcol=$tabrowid[$id]; }
|
||||||
else { $rowidcol="rowid"; }
|
else { $rowidcol="rowid"; }
|
||||||
@ -257,7 +256,7 @@ if (GETPOST('actionadd','alpha') || GETPOST('actionmodify','alpha'))
|
|||||||
// Modify entry
|
// Modify entry
|
||||||
$sql = "UPDATE ".$tabname[$id]." SET ";
|
$sql = "UPDATE ".$tabname[$id]." SET ";
|
||||||
// Modifie valeur des champs
|
// Modifie valeur des champs
|
||||||
if ($tabrowid[$id] && ! in_array($tabrowid[$id],$listfieldmodify))
|
if ($tabrowid[$id] && ! in_array($tabrowid[$id], $listfieldmodify))
|
||||||
{
|
{
|
||||||
$sql.= $tabrowid[$id]."=";
|
$sql.= $tabrowid[$id]."=";
|
||||||
$sql.= "'".$db->escape($rowid)."', ";
|
$sql.= "'".$db->escape($rowid)."', ";
|
||||||
@ -268,7 +267,7 @@ if (GETPOST('actionadd','alpha') || GETPOST('actionmodify','alpha'))
|
|||||||
if ($field == 'fk_country' && $_POST['country'] > 0) {
|
if ($field == 'fk_country' && $_POST['country'] > 0) {
|
||||||
$_POST[$listfieldvalue[$i]] = $_POST['country'];
|
$_POST[$listfieldvalue[$i]] = $_POST['country'];
|
||||||
}
|
}
|
||||||
else if ($field == 'entity') {
|
elseif ($field == 'entity') {
|
||||||
$_POST[$listfieldvalue[$i]] = $conf->entity;
|
$_POST[$listfieldvalue[$i]] = $conf->entity;
|
||||||
}
|
}
|
||||||
if ($i) $sql.=",";
|
if ($i) $sql.=",";
|
||||||
@ -290,7 +289,7 @@ if (GETPOST('actionadd','alpha') || GETPOST('actionmodify','alpha'))
|
|||||||
//$_GET["id"]=GETPOST('id', 'int'); // Force affichage dictionnaire en cours d'edition
|
//$_GET["id"]=GETPOST('id', 'int'); // Force affichage dictionnaire en cours d'edition
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GETPOST('actioncancel','alpha'))
|
if (GETPOST('actioncancel', 'alpha'))
|
||||||
{
|
{
|
||||||
//$_GET["id"]=GETPOST('id', 'int'); // Force affichage dictionnaire en cours d'edition
|
//$_GET["id"]=GETPOST('id', 'int'); // Force affichage dictionnaire en cours d'edition
|
||||||
}
|
}
|
||||||
@ -418,7 +417,7 @@ print $langs->trans("AccountingAccountGroupsDesc", $langs->transnoentitiesnoconv
|
|||||||
// Confirmation de la suppression de la ligne
|
// Confirmation de la suppression de la ligne
|
||||||
if ($action == 'delete')
|
if ($action == 'delete')
|
||||||
{
|
{
|
||||||
print $form->formconfirm($_SERVER["PHP_SELF"].'?'.($page?'page='.$page.'&':'').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.$rowid.'&code='.$code.'&id='.$id.($search_country_id>0?'&search_country_id='.$search_country_id:''), $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_delete','',0,1);
|
print $form->formconfirm($_SERVER["PHP_SELF"].'?'.($page?'page='.$page.'&':'').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.$rowid.'&code='.$code.'&id='.$id.($search_country_id>0?'&search_country_id='.$search_country_id:''), $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_delete', '', 0, 1);
|
||||||
}
|
}
|
||||||
//var_dump($elementList);
|
//var_dump($elementList);
|
||||||
|
|
||||||
@ -432,22 +431,22 @@ if ($id)
|
|||||||
|
|
||||||
if ($search_country_id > 0)
|
if ($search_country_id > 0)
|
||||||
{
|
{
|
||||||
if (preg_match('/ WHERE /',$sql)) $sql.= " AND ";
|
if (preg_match('/ WHERE /', $sql)) $sql.= " AND ";
|
||||||
else $sql.=" WHERE ";
|
else $sql.=" WHERE ";
|
||||||
$sql.= " (a.fk_country = ".$search_country_id." OR a.fk_country = 0)";
|
$sql.= " (a.fk_country = ".$search_country_id." OR a.fk_country = 0)";
|
||||||
}
|
}
|
||||||
|
|
||||||
// If sort order is "country", we use country_code instead
|
// If sort order is "country", we use country_code instead
|
||||||
if ($sortfield == 'country') $sortfield='country_code';
|
if ($sortfield == 'country') $sortfield='country_code';
|
||||||
$sql.=$db->order($sortfield,$sortorder);
|
$sql.=$db->order($sortfield, $sortorder);
|
||||||
$sql.=$db->plimit($listlimit+1,$offset);
|
$sql.=$db->plimit($listlimit+1, $offset);
|
||||||
//print $sql;
|
//print $sql;
|
||||||
|
|
||||||
$fieldlist=explode(',',$tabfield[$id]);
|
$fieldlist=explode(',', $tabfield[$id]);
|
||||||
|
|
||||||
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$id.'" method="POST">';
|
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$id.'" method="POST">';
|
||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
print '<input type="hidden" name="from" value="'.dol_escape_htmltag(GETPOST('from','alpha')).'">';
|
print '<input type="hidden" name="from" value="'.dol_escape_htmltag(GETPOST('from', 'alpha')).'">';
|
||||||
|
|
||||||
print '<div class="div-table-responsive">';
|
print '<div class="div-table-responsive">';
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
@ -457,7 +456,7 @@ if ($id)
|
|||||||
{
|
{
|
||||||
$alabelisused=0;
|
$alabelisused=0;
|
||||||
|
|
||||||
$fieldlist=explode(',',$tabfield[$id]);
|
$fieldlist=explode(',', $tabfield[$id]);
|
||||||
|
|
||||||
// Line for title
|
// Line for title
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
@ -467,36 +466,53 @@ if ($id)
|
|||||||
// dans les dictionnaires de donnees
|
// dans les dictionnaires de donnees
|
||||||
$valuetoshow=ucfirst($fieldlist[$field]); // Par defaut
|
$valuetoshow=ucfirst($fieldlist[$field]); // Par defaut
|
||||||
$valuetoshow=$langs->trans($valuetoshow); // try to translate
|
$valuetoshow=$langs->trans($valuetoshow); // try to translate
|
||||||
$align="left";
|
$class="left";
|
||||||
if ($fieldlist[$field]=='type') {
|
if ($fieldlist[$field]=='type') {
|
||||||
if ($tabname[$id] == MAIN_DB_PREFIX."c_paiement") $valuetoshow=$form->textwithtooltip($langs->trans("Type"),$langs->trans("TypePaymentDesc"),2,1,img_help(1,''));
|
if ($tabname[$id] == MAIN_DB_PREFIX."c_paiement") {
|
||||||
else $valuetoshow=$langs->trans("Type");
|
$valuetoshow=$form->textwithtooltip($langs->trans("Type"), $langs->trans("TypePaymentDesc"), 2, 1, img_help(1, ''));
|
||||||
|
} else {
|
||||||
|
$valuetoshow=$langs->trans("Type");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ($fieldlist[$field]=='code') { $valuetoshow=$langs->trans("Code"); }
|
if ($fieldlist[$field]=='code') {
|
||||||
if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label')
|
$valuetoshow=$langs->trans("Code");
|
||||||
{
|
}
|
||||||
|
if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') {
|
||||||
$valuetoshow=$langs->trans("Label");
|
$valuetoshow=$langs->trans("Label");
|
||||||
}
|
}
|
||||||
if ($fieldlist[$field]=='libelle_facture') { $valuetoshow=$langs->trans("LabelOnDocuments"); }
|
if ($fieldlist[$field]=='libelle_facture') {
|
||||||
if ($fieldlist[$field]=='country') {
|
$valuetoshow=$langs->trans("LabelOnDocuments");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field]=='country') {
|
||||||
$valuetoshow=$langs->trans("Country");
|
$valuetoshow=$langs->trans("Country");
|
||||||
}
|
}
|
||||||
if ($fieldlist[$field]=='accountancy_code'){ $valuetoshow=$langs->trans("AccountancyCode"); }
|
if ($fieldlist[$field]=='accountancy_code') {
|
||||||
if ($fieldlist[$field]=='accountancy_code_sell'){ $valuetoshow=$langs->trans("AccountancyCodeSell"); }
|
$valuetoshow=$langs->trans("AccountancyCode");
|
||||||
if ($fieldlist[$field]=='accountancy_code_buy'){ $valuetoshow=$langs->trans("AccountancyCodeBuy"); }
|
}
|
||||||
if ($fieldlist[$field]=='pcg_version' || $fieldlist[$field]=='fk_pcg_version') { $valuetoshow=$langs->trans("Pcg_version"); }
|
if ($fieldlist[$field]=='accountancy_code_sell') {
|
||||||
if ($fieldlist[$field]=='range_account') { $valuetoshow=$langs->trans("Comment"); }
|
$valuetoshow=$langs->trans("AccountancyCodeSell");
|
||||||
if ($fieldlist[$field]=='category_type') { $valuetoshow=$langs->trans("Calculated"); }
|
}
|
||||||
|
if ($fieldlist[$field]=='accountancy_code_buy') {
|
||||||
|
$valuetoshow=$langs->trans("AccountancyCodeBuy");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field]=='pcg_version' || $fieldlist[$field]=='fk_pcg_version') {
|
||||||
|
$valuetoshow=$langs->trans("Pcg_version");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field]=='range_account') {
|
||||||
|
$valuetoshow=$langs->trans("Comment");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field]=='category_type') {
|
||||||
|
$valuetoshow=$langs->trans("Calculated");
|
||||||
|
}
|
||||||
|
|
||||||
if ($valuetoshow != '')
|
if ($valuetoshow != '') {
|
||||||
{
|
print '<td class="'.$class.'">';
|
||||||
print '<td align="'.$align.'">';
|
if (! empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i', $tabhelp[$id][$value])) print '<a href="'.$tabhelp[$id][$value].'" target="_blank">'.$valuetoshow.' '.img_help(1, $valuetoshow).'</a>';
|
||||||
if (! empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i',$tabhelp[$id][$value])) print '<a href="'.$tabhelp[$id][$value].'" target="_blank">'.$valuetoshow.' '.img_help(1,$valuetoshow).'</a>';
|
elseif (! empty($tabhelp[$id][$value])) print $form->textwithpicto($valuetoshow, $tabhelp[$id][$value]);
|
||||||
else if (! empty($tabhelp[$id][$value])) print $form->textwithpicto($valuetoshow,$tabhelp[$id][$value]);
|
|
||||||
else print $valuetoshow;
|
else print $valuetoshow;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') $alabelisused=1;
|
if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') $alabelisused=1;
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<td>';
|
print '<td>';
|
||||||
@ -512,7 +528,7 @@ if ($id)
|
|||||||
|
|
||||||
$obj = new stdClass();
|
$obj = new stdClass();
|
||||||
// If data was already input, we define them in obj to populate input fields.
|
// If data was already input, we define them in obj to populate input fields.
|
||||||
if (GETPOST('actionadd','alpha'))
|
if (GETPOST('actionadd', 'alpha'))
|
||||||
{
|
{
|
||||||
foreach ($fieldlist as $key=>$val)
|
foreach ($fieldlist as $key=>$val)
|
||||||
{
|
{
|
||||||
@ -523,15 +539,15 @@ if ($id)
|
|||||||
|
|
||||||
$tmpaction = 'create';
|
$tmpaction = 'create';
|
||||||
$parameters=array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
$parameters=array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
||||||
$reshook=$hookmanager->executeHooks('createDictionaryFieldlist',$parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
$reshook=$hookmanager->executeHooks('createDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
||||||
$error=$hookmanager->error; $errors=$hookmanager->errors;
|
$error=$hookmanager->error; $errors=$hookmanager->errors;
|
||||||
|
|
||||||
if (empty($reshook))
|
if (empty($reshook))
|
||||||
{
|
{
|
||||||
fieldListAccountingCategories($fieldlist,$obj,$tabname[$id],'add');
|
fieldListAccountingCategories($fieldlist, $obj, $tabname[$id], 'add');
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<td colspan="4" align="right">';
|
print '<td colspan="4" class="right">';
|
||||||
print '<input type="submit" class="button" name="actionadd" value="'.$langs->trans("Add").'">';
|
print '<input type="submit" class="button" name="actionadd" value="'.$langs->trans("Add").'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print "</tr>";
|
print "</tr>";
|
||||||
@ -555,11 +571,11 @@ if ($id)
|
|||||||
$paramwithsearch = $param;
|
$paramwithsearch = $param;
|
||||||
if ($sortorder) $paramwithsearch.= '&sortorder='.$sortorder;
|
if ($sortorder) $paramwithsearch.= '&sortorder='.$sortorder;
|
||||||
if ($sortfield) $paramwithsearch.= '&sortfield='.$sortfield;
|
if ($sortfield) $paramwithsearch.= '&sortfield='.$sortfield;
|
||||||
if (GETPOST('from','alpha')) $paramwithsearch.= '&from='.GETPOST('from','alpha');
|
if (GETPOST('from', 'alpha')) $paramwithsearch.= '&from='.GETPOST('from', 'alpha');
|
||||||
// There is several pages
|
// There is several pages
|
||||||
if ($num > $listlimit)
|
if ($num > $listlimit)
|
||||||
{
|
{
|
||||||
print '<tr class="none"><td align="right" colspan="'.(3+count($fieldlist)).'">';
|
print '<tr class="none"><td class="right" colspan="'.(3+count($fieldlist)).'">';
|
||||||
print_fleche_navigation($page, $_SERVER["PHP_SELF"], $paramwithsearch, ($num > $listlimit), '<li class="pagination"><span>'.$langs->trans("Page").' '.($page+1).'</span></li>');
|
print_fleche_navigation($page, $_SERVER["PHP_SELF"], $paramwithsearch, ($num > $listlimit), '<li class="pagination"><span>'.$langs->trans("Page").' '.($page+1).'</span></li>');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
@ -591,7 +607,7 @@ if ($id)
|
|||||||
print '<td class="liste_titre"></td>';
|
print '<td class="liste_titre"></td>';
|
||||||
print '<td class="liste_titre"></td>';
|
print '<td class="liste_titre"></td>';
|
||||||
print '<td class="liste_titre"></td>';
|
print '<td class="liste_titre"></td>';
|
||||||
print '<td class="liste_titre" align="center">';
|
print '<td class="liste_titre center">';
|
||||||
if ($filterfound)
|
if ($filterfound)
|
||||||
{
|
{
|
||||||
$searchpicto=$form->showFilterAndCheckAddButtons(0);
|
$searchpicto=$form->showFilterAndCheckAddButtons(0);
|
||||||
@ -607,44 +623,79 @@ if ($id)
|
|||||||
// Determine le nom du champ par rapport aux noms possibles
|
// Determine le nom du champ par rapport aux noms possibles
|
||||||
// dans les dictionnaires de donnees
|
// dans les dictionnaires de donnees
|
||||||
$showfield=1; // By defaut
|
$showfield=1; // By defaut
|
||||||
$align="left";
|
$class="left";
|
||||||
$sortable=1;
|
$sortable=1;
|
||||||
$valuetoshow='';
|
$valuetoshow='';
|
||||||
|
|
||||||
$valuetoshow=ucfirst($fieldlist[$field]); // By defaut
|
$valuetoshow=ucfirst($fieldlist[$field]); // By defaut
|
||||||
$valuetoshow=$langs->trans($valuetoshow); // try to translate
|
$valuetoshow=$langs->trans($valuetoshow); // try to translate
|
||||||
if ($fieldlist[$field]=='source') { $valuetoshow=$langs->trans("Contact"); }
|
if ($fieldlist[$field]=='source') {
|
||||||
if ($fieldlist[$field]=='price') { $valuetoshow=$langs->trans("PriceUHT"); }
|
$valuetoshow=$langs->trans("Contact");
|
||||||
if ($fieldlist[$field]=='taux') {
|
|
||||||
if ($tabname[$id] != MAIN_DB_PREFIX."c_revenuestamp") $valuetoshow=$langs->trans("Rate");
|
|
||||||
else $valuetoshow=$langs->trans("Amount");
|
|
||||||
$align='center';
|
|
||||||
}
|
}
|
||||||
if ($fieldlist[$field]=='type') { $valuetoshow=$langs->trans("Type"); }
|
if ($fieldlist[$field]=='price') {
|
||||||
if ($fieldlist[$field]=='code') { $valuetoshow=$langs->trans("Code"); }
|
$valuetoshow=$langs->trans("PriceUHT");
|
||||||
if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label')
|
}
|
||||||
{
|
if ($fieldlist[$field]=='taux') {
|
||||||
|
if ($tabname[$id] != MAIN_DB_PREFIX."c_revenuestamp") {
|
||||||
|
$valuetoshow=$langs->trans("Rate");
|
||||||
|
} else {
|
||||||
|
$valuetoshow=$langs->trans("Amount");
|
||||||
|
}
|
||||||
|
$class='center';
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field]=='type') {
|
||||||
|
$valuetoshow=$langs->trans("Type");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field]=='code') {
|
||||||
|
$valuetoshow=$langs->trans("Code");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') {
|
||||||
$valuetoshow=$langs->trans("Label");
|
$valuetoshow=$langs->trans("Label");
|
||||||
}
|
}
|
||||||
if ($fieldlist[$field]=='country') { $valuetoshow=$langs->trans("Country"); }
|
if ($fieldlist[$field]=='country') {
|
||||||
if ($fieldlist[$field]=='region_id' || $fieldlist[$field]=='country_id') { $showfield=0; }
|
$valuetoshow=$langs->trans("Country");
|
||||||
if ($fieldlist[$field]=='accountancy_code'){ $valuetoshow=$langs->trans("AccountancyCode"); }
|
}
|
||||||
if ($fieldlist[$field]=='accountancy_code_sell'){ $valuetoshow=$langs->trans("AccountancyCodeSell"); $sortable=0; }
|
if ($fieldlist[$field]=='region_id' || $fieldlist[$field]=='country_id') {
|
||||||
if ($fieldlist[$field]=='accountancy_code_buy'){ $valuetoshow=$langs->trans("AccountancyCodeBuy"); $sortable=0; }
|
$showfield=0;
|
||||||
if ($fieldlist[$field]=='fk_pcg_version') { $valuetoshow=$langs->trans("Pcg_version"); }
|
}
|
||||||
if ($fieldlist[$field]=='account_parent') { $valuetoshow=$langs->trans("Accountsparent"); }
|
if ($fieldlist[$field]=='accountancy_code') {
|
||||||
if ($fieldlist[$field]=='pcg_type') { $valuetoshow=$langs->trans("Pcg_type"); }
|
$valuetoshow=$langs->trans("AccountancyCode");
|
||||||
if ($fieldlist[$field]=='pcg_subtype') { $valuetoshow=$langs->trans("Pcg_subtype"); }
|
}
|
||||||
if ($fieldlist[$field]=='type_template') { $valuetoshow=$langs->trans("TypeOfTemplate"); }
|
if ($fieldlist[$field]=='accountancy_code_sell') {
|
||||||
if ($fieldlist[$field]=='range_account') { $valuetoshow=$langs->trans("Comment"); }
|
$valuetoshow=$langs->trans("AccountancyCodeSell");
|
||||||
if ($fieldlist[$field]=='category_type') { $valuetoshow=$langs->trans("Calculated"); }
|
$sortable=0;
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field]=='accountancy_code_buy') {
|
||||||
|
$valuetoshow=$langs->trans("AccountancyCodeBuy");
|
||||||
|
$sortable=0;
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field]=='fk_pcg_version') {
|
||||||
|
$valuetoshow=$langs->trans("Pcg_version");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field]=='account_parent') {
|
||||||
|
$valuetoshow=$langs->trans("Accountsparent");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field]=='pcg_type') {
|
||||||
|
$valuetoshow=$langs->trans("Pcg_type");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field]=='pcg_subtype') {
|
||||||
|
$valuetoshow=$langs->trans("Pcg_subtype");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field]=='type_template') {
|
||||||
|
$valuetoshow=$langs->trans("TypeOfTemplate");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field]=='range_account') {
|
||||||
|
$valuetoshow=$langs->trans("Comment");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field]=='category_type') {
|
||||||
|
$valuetoshow=$langs->trans("Calculated");
|
||||||
|
}
|
||||||
// Affiche nom du champ
|
// Affiche nom du champ
|
||||||
if ($showfield)
|
if ($showfield) {
|
||||||
{
|
print getTitleFieldOfList($valuetoshow, 0, $_SERVER["PHP_SELF"], ($sortable?$fieldlist[$field]:''), ($page?'page='.$page.'&':''), $param, "", $sortfield, $sortorder, $class.' ');
|
||||||
print getTitleFieldOfList($valuetoshow, 0, $_SERVER["PHP_SELF"], ($sortable?$fieldlist[$field]:''), ($page?'page='.$page.'&':''), $param, "align=".$align, $sortfield, $sortorder);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print getTitleFieldOfList($langs->trans("Status"), 0, $_SERVER["PHP_SELF"], "active", ($page?'page='.$page.'&':''), $param, 'align="center"', $sortfield, $sortorder);
|
print getTitleFieldOfList($langs->trans("Status"), 0, $_SERVER["PHP_SELF"], "active", ($page?'page='.$page.'&':''), $param, '', $sortfield, $sortorder, 'center ');
|
||||||
print getTitleFieldOfList('');
|
print getTitleFieldOfList('');
|
||||||
print getTitleFieldOfList('');
|
print getTitleFieldOfList('');
|
||||||
print getTitleFieldOfList('');
|
print getTitleFieldOfList('');
|
||||||
@ -662,15 +713,15 @@ if ($id)
|
|||||||
{
|
{
|
||||||
$tmpaction='edit';
|
$tmpaction='edit';
|
||||||
$parameters=array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
$parameters=array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
||||||
$reshook=$hookmanager->executeHooks('editDictionaryFieldlist',$parameters,$obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
$reshook=$hookmanager->executeHooks('editDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
||||||
$error=$hookmanager->error; $errors=$hookmanager->errors;
|
$error=$hookmanager->error; $errors=$hookmanager->errors;
|
||||||
|
|
||||||
// Show fields
|
// Show fields
|
||||||
if (empty($reshook)) fieldListAccountingCategories($fieldlist,$obj,$tabname[$id],'edit');
|
if (empty($reshook)) fieldListAccountingCategories($fieldlist, $obj, $tabname[$id], 'edit');
|
||||||
|
|
||||||
print '<td></td>';
|
print '<td></td>';
|
||||||
print '<td></td>';
|
print '<td></td>';
|
||||||
print '<td align="center">';
|
print '<td class="center">';
|
||||||
print '<input type="hidden" name="page" value="'.$page.'">';
|
print '<input type="hidden" name="page" value="'.$page.'">';
|
||||||
print '<input type="hidden" name="rowid" value="'.$rowid.'">';
|
print '<input type="hidden" name="rowid" value="'.$rowid.'">';
|
||||||
print '<input type="submit" class="button" name="actionmodify" value="'.$langs->trans("Modify").'">';
|
print '<input type="submit" class="button" name="actionmodify" value="'.$langs->trans("Modify").'">';
|
||||||
@ -683,7 +734,7 @@ if ($id)
|
|||||||
{
|
{
|
||||||
$tmpaction = 'view';
|
$tmpaction = 'view';
|
||||||
$parameters=array('var'=>$var, 'fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
$parameters=array('var'=>$var, 'fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
||||||
$reshook=$hookmanager->executeHooks('viewDictionaryFieldlist',$parameters,$obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
$reshook=$hookmanager->executeHooks('viewDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
||||||
|
|
||||||
$error=$hookmanager->error; $errors=$hookmanager->errors;
|
$error=$hookmanager->error; $errors=$hookmanager->errors;
|
||||||
|
|
||||||
@ -693,16 +744,16 @@ if ($id)
|
|||||||
{
|
{
|
||||||
|
|
||||||
$showfield=1;
|
$showfield=1;
|
||||||
$align="left";
|
$class="left";
|
||||||
$valuetoshow=$obj->{$fieldlist[$field]};
|
$valuetoshow=$obj->{$fieldlist[$field]};
|
||||||
if ($value == 'category_type')
|
if ($value == 'category_type')
|
||||||
{
|
{
|
||||||
$valuetoshow = yn($valuetoshow);
|
$valuetoshow = yn($valuetoshow);
|
||||||
}
|
}
|
||||||
else if ($valuetoshow=='all') {
|
elseif ($valuetoshow=='all') {
|
||||||
$valuetoshow=$langs->trans('All');
|
$valuetoshow=$langs->trans('All');
|
||||||
}
|
}
|
||||||
else if ($fieldlist[$field]=='country') {
|
elseif ($fieldlist[$field]=='country') {
|
||||||
if (empty($obj->country_code))
|
if (empty($obj->country_code))
|
||||||
{
|
{
|
||||||
$valuetoshow='-';
|
$valuetoshow='-';
|
||||||
@ -713,26 +764,26 @@ if ($id)
|
|||||||
$valuetoshow=($key != "Country".strtoupper($obj->country_code)?$obj->country_code." - ".$key:$obj->country);
|
$valuetoshow=($key != "Country".strtoupper($obj->country_code)?$obj->country_code." - ".$key:$obj->country);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ($fieldlist[$field]=='label' && $tabname[$id]==MAIN_DB_PREFIX.'c_country') {
|
elseif ($fieldlist[$field]=='label' && $tabname[$id]==MAIN_DB_PREFIX.'c_country') {
|
||||||
$key=$langs->trans("Country".strtoupper($obj->code));
|
$key=$langs->trans("Country".strtoupper($obj->code));
|
||||||
$valuetoshow=($obj->code && $key != "Country".strtoupper($obj->code)?$key:$obj->{$fieldlist[$field]});
|
$valuetoshow=($obj->code && $key != "Country".strtoupper($obj->code)?$key:$obj->{$fieldlist[$field]});
|
||||||
}
|
}
|
||||||
else if ($fieldlist[$field]=='label' && $tabname[$id]==MAIN_DB_PREFIX.'c_availability') {
|
elseif ($fieldlist[$field]=='label' && $tabname[$id]==MAIN_DB_PREFIX.'c_availability') {
|
||||||
$langs->loadLangs(array("propal"));
|
$langs->loadLangs(array("propal"));
|
||||||
$key=$langs->trans("AvailabilityType".strtoupper($obj->code));
|
$key=$langs->trans("AvailabilityType".strtoupper($obj->code));
|
||||||
$valuetoshow=($obj->code && $key != "AvailabilityType".strtoupper($obj->code)?$key:$obj->{$fieldlist[$field]});
|
$valuetoshow=($obj->code && $key != "AvailabilityType".strtoupper($obj->code)?$key:$obj->{$fieldlist[$field]});
|
||||||
}
|
}
|
||||||
else if ($fieldlist[$field]=='libelle' && $tabname[$id]==MAIN_DB_PREFIX.'c_actioncomm') {
|
elseif ($fieldlist[$field]=='libelle' && $tabname[$id]==MAIN_DB_PREFIX.'c_actioncomm') {
|
||||||
$key=$langs->trans("Action".strtoupper($obj->code));
|
$key=$langs->trans("Action".strtoupper($obj->code));
|
||||||
$valuetoshow=($obj->code && $key != "Action".strtoupper($obj->code)?$key:$obj->{$fieldlist[$field]});
|
$valuetoshow=($obj->code && $key != "Action".strtoupper($obj->code)?$key:$obj->{$fieldlist[$field]});
|
||||||
}
|
}
|
||||||
else if ($fieldlist[$field]=='region_id' || $fieldlist[$field]=='country_id') {
|
elseif ($fieldlist[$field]=='region_id' || $fieldlist[$field]=='country_id') {
|
||||||
$showfield=0;
|
$showfield=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$class='tddict';
|
$class='tddict';
|
||||||
// Show value for field
|
// Show value for field
|
||||||
if ($showfield) print '<!-- '.$fieldlist[$field].' --><td align="'.$align.'" class="'.$class.'">'.$valuetoshow.'</td>';
|
if ($showfield) print '<!-- '.$fieldlist[$field].' --><td class="'.$class.'">'.$valuetoshow.'</td>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -740,7 +791,7 @@ if ($id)
|
|||||||
$iserasable=1;$canbedisabled=1;$canbemodified=1; // true by default
|
$iserasable=1;$canbedisabled=1;$canbemodified=1; // true by default
|
||||||
if (isset($obj->code))
|
if (isset($obj->code))
|
||||||
{
|
{
|
||||||
if (($obj->code == '0' || $obj->code == '' || preg_match('/unknown/i',$obj->code))) { $iserasable = 0; $canbedisabled = 0; }
|
if (($obj->code == '0' || $obj->code == '' || preg_match('/unknown/i', $obj->code))) { $iserasable = 0; $canbedisabled = 0; }
|
||||||
}
|
}
|
||||||
|
|
||||||
$canbemodified=$iserasable;
|
$canbemodified=$iserasable;
|
||||||
@ -750,7 +801,7 @@ if ($id)
|
|||||||
$url.='&';
|
$url.='&';
|
||||||
|
|
||||||
// Active
|
// Active
|
||||||
print '<td align="center" class="nowrap">';
|
print '<td class="center" class="nowrap">';
|
||||||
if ($canbedisabled) print '<a href="'.$url.'action='.$acts[$obj->active].'">'.$actl[$obj->active].'</a>';
|
if ($canbedisabled) print '<a href="'.$url.'action='.$acts[$obj->active].'">'.$actl[$obj->active].'</a>';
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -759,13 +810,13 @@ if ($id)
|
|||||||
print "</td>";
|
print "</td>";
|
||||||
|
|
||||||
// Modify link
|
// Modify link
|
||||||
if ($canbemodified) print '<td align="center"><a class="reposition" href="'.$url.'action=edit">'.img_edit().'</a></td>';
|
if ($canbemodified) print '<td class="center"><a class="reposition" href="'.$url.'action=edit">'.img_edit().'</a></td>';
|
||||||
else print '<td> </td>';
|
else print '<td> </td>';
|
||||||
|
|
||||||
// Delete link
|
// Delete link
|
||||||
if ($iserasable)
|
if ($iserasable)
|
||||||
{
|
{
|
||||||
print '<td align="center">';
|
print '<td class="center">';
|
||||||
if ($user->admin) print '<a href="'.$url.'action=delete">'.img_delete().'</a>';
|
if ($user->admin) print '<a href="'.$url.'action=delete">'.img_delete().'</a>';
|
||||||
//else print '<a href="#">'.img_delete().'</a>'; // Some dictionary can be edited by other profile than admin
|
//else print '<a href="#">'.img_delete().'</a>'; // Some dictionary can be edited by other profile than admin
|
||||||
print '</td>';
|
print '</td>';
|
||||||
@ -813,7 +864,7 @@ $db->close();
|
|||||||
* @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 void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function fieldListAccountingCategories($fieldlist, $obj='', $tabname='', $context='')
|
function fieldListAccountingCategories($fieldlist, $obj = '', $tabname = '', $context = '')
|
||||||
{
|
{
|
||||||
global $conf,$langs,$db;
|
global $conf,$langs,$db;
|
||||||
global $form, $mysoc;
|
global $form, $mysoc;
|
||||||
@ -834,7 +885,7 @@ function fieldListAccountingCategories($fieldlist, $obj='', $tabname='', $contex
|
|||||||
if ($context == 'add')
|
if ($context == 'add')
|
||||||
{
|
{
|
||||||
$fieldname='country_id';
|
$fieldname='country_id';
|
||||||
print $form->select_country(GETPOST('country_id','int'), $fieldname, '', 28, 'maxwidth200 maxwidthonsmartphone');
|
print $form->select_country(GETPOST('country_id', 'int'), $fieldname, '', 28, 'maxwidth200 maxwidthonsmartphone');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -844,7 +895,7 @@ function fieldListAccountingCategories($fieldlist, $obj='', $tabname='', $contex
|
|||||||
}
|
}
|
||||||
elseif ($fieldlist[$field] == 'country_id')
|
elseif ($fieldlist[$field] == 'country_id')
|
||||||
{
|
{
|
||||||
if (! in_array('country',$fieldlist)) // If there is already a field country, we don't show country_id (avoid duplicate)
|
if (! in_array('country', $fieldlist)) // If there is already a field country, we don't show country_id (avoid duplicate)
|
||||||
{
|
{
|
||||||
$country_id = (! empty($obj->{$fieldlist[$field]}) ? $obj->{$fieldlist[$field]} : 0);
|
$country_id = (! empty($obj->{$fieldlist[$field]}) ? $obj->{$fieldlist[$field]} : 0);
|
||||||
print '<td>';
|
print '<td>';
|
||||||
@ -854,7 +905,7 @@ function fieldListAccountingCategories($fieldlist, $obj='', $tabname='', $contex
|
|||||||
}
|
}
|
||||||
elseif ($fieldlist[$field] == 'category_type') {
|
elseif ($fieldlist[$field] == 'category_type') {
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print $form->selectyesno($fieldlist[$field],(! empty($obj->{$fieldlist[$field]})?$obj->{$fieldlist[$field]}:''),1);
|
print $form->selectyesno($fieldlist[$field], (! empty($obj->{$fieldlist[$field]})?$obj->{$fieldlist[$field]}:''), 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
elseif ($fieldlist[$field] == 'code' && isset($obj->{$fieldlist[$field]})) {
|
elseif ($fieldlist[$field] == 'code' && isset($obj->{$fieldlist[$field]})) {
|
||||||
@ -873,4 +924,3 @@ function fieldListAccountingCategories($fieldlist, $obj='', $tabname='', $contex
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
136
htdocs/accountancy/admin/closure.php
Normal file
136
htdocs/accountancy/admin/closure.php
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2019 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file htdocs/accountancy/admin/closure.php
|
||||||
|
* \ingroup Advanced accountancy
|
||||||
|
* \brief Setup page to configure accounting expert module
|
||||||
|
*/
|
||||||
|
require '../../main.inc.php';
|
||||||
|
|
||||||
|
// Class
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/admin.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formaccounting.class.php';
|
||||||
|
|
||||||
|
// Load translation files required by the page
|
||||||
|
$langs->loadLangs(array("compta","admin","accountancy"));
|
||||||
|
|
||||||
|
// Security check
|
||||||
|
if (empty($user->rights->accounting->chartofaccount)) {
|
||||||
|
accessforbidden();
|
||||||
|
}
|
||||||
|
|
||||||
|
$action = GETPOST('action', 'aZ09');
|
||||||
|
|
||||||
|
|
||||||
|
$list_account_main = array (
|
||||||
|
'ACCOUNTING_RESULT_PROFIT',
|
||||||
|
'ACCOUNTING_RESULT_LOSS'
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Actions
|
||||||
|
*/
|
||||||
|
|
||||||
|
if ($action == 'update') {
|
||||||
|
$error = 0;
|
||||||
|
|
||||||
|
$defaultjournal = GETPOST('ACCOUNTING_CLOSURE_DEFAULT_JOURNAL', 'alpha');
|
||||||
|
|
||||||
|
if (! empty($defaultjournal)) {
|
||||||
|
if (! dolibarr_set_const($db, 'ACCOUNTING_CLOSURE_DEFAULT_JOURNAL', $defaultjournal, 'chaine', 0, '', $conf->entity)) {
|
||||||
|
$error ++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$error ++;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($list_account_main as $constname) {
|
||||||
|
$constvalue = GETPOST($constname, 'alpha');
|
||||||
|
|
||||||
|
if (! dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
||||||
|
$error ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error) {
|
||||||
|
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
|
||||||
|
} else {
|
||||||
|
setEventMessages($langs->trans("Error"), null, 'errors');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* View
|
||||||
|
*/
|
||||||
|
|
||||||
|
$form = new Form($db);
|
||||||
|
$formaccounting = new FormAccounting($db);
|
||||||
|
|
||||||
|
llxHeader();
|
||||||
|
|
||||||
|
$linkback = '';
|
||||||
|
print load_fiche_titre($langs->trans('MenuClosureAccounts'), $linkback, 'title_accountancy');
|
||||||
|
|
||||||
|
print $langs->trans("DefaultClosureDesc").'<br>';
|
||||||
|
print '<br>';
|
||||||
|
|
||||||
|
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="post">';
|
||||||
|
print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
|
||||||
|
print '<input type="hidden" name="action" value="update">';
|
||||||
|
|
||||||
|
// Define main accounts for closure
|
||||||
|
print '<table class="noborder" width="100%">';
|
||||||
|
|
||||||
|
foreach ($list_account_main as $key) {
|
||||||
|
|
||||||
|
print '<tr class="oddeven value">';
|
||||||
|
// Param
|
||||||
|
$label = $langs->trans($key);
|
||||||
|
$keydesc=$key.'_Desc';
|
||||||
|
|
||||||
|
$htmltext = $langs->trans($keydesc);
|
||||||
|
print '<td class="fieldrequired" width="50%">';
|
||||||
|
print $form->textwithpicto($label, $htmltext);
|
||||||
|
print '</td>';
|
||||||
|
// Value
|
||||||
|
print '<td>'; // Do not force class=right, or it align also the content of the select box
|
||||||
|
print $formaccounting->select_account($conf->global->$key, $key, 1, '', 1, 1);
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Journal
|
||||||
|
print '<tr class="oddeven">';
|
||||||
|
print '<td width="50%">' . $langs->trans("ACCOUNTING_CLOSURE_DEFAULT_JOURNAL") . '</td>';
|
||||||
|
print '<td>';
|
||||||
|
$defaultjournal=$conf->global->ACCOUNTING_CLOSURE_DEFAULT_JOURNAL;
|
||||||
|
print $formaccounting->select_journal($defaultjournal, "ACCOUNTING_CLOSURE_DEFAULT_JOURNAL", 9, 1, 0, 0);
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print "</table>\n";
|
||||||
|
|
||||||
|
print '<div class="center"><input type="submit" class="button" value="' . $langs->trans('Modify') . '" name="button"></div>';
|
||||||
|
|
||||||
|
print '</form>';
|
||||||
|
|
||||||
|
// End of page
|
||||||
|
llxFooter();
|
||||||
|
$db->close();
|
||||||
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2013-2018 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
* Copyright (C) 2013-2019 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2014-2015 Ari Elbaz (elarifr) <github@accedinfo.com>
|
* Copyright (C) 2014-2015 Ari Elbaz (elarifr) <github@accedinfo.com>
|
||||||
* 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>
|
||||||
@ -55,6 +55,8 @@ $list_account_main = array (
|
|||||||
$list_account = array (
|
$list_account = array (
|
||||||
'ACCOUNTING_PRODUCT_BUY_ACCOUNT',
|
'ACCOUNTING_PRODUCT_BUY_ACCOUNT',
|
||||||
'ACCOUNTING_PRODUCT_SOLD_ACCOUNT',
|
'ACCOUNTING_PRODUCT_SOLD_ACCOUNT',
|
||||||
|
'ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT',
|
||||||
|
'ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT',
|
||||||
'ACCOUNTING_SERVICE_BUY_ACCOUNT',
|
'ACCOUNTING_SERVICE_BUY_ACCOUNT',
|
||||||
'ACCOUNTING_SERVICE_SOLD_ACCOUNT',
|
'ACCOUNTING_SERVICE_SOLD_ACCOUNT',
|
||||||
'ACCOUNTING_VAT_BUY_ACCOUNT',
|
'ACCOUNTING_VAT_BUY_ACCOUNT',
|
||||||
@ -94,7 +96,7 @@ if (GETPOST('change_chart', 'alpha'))
|
|||||||
if ($action == 'update') {
|
if ($action == 'update') {
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
foreach ( $list_account_main as $constname ) {
|
foreach ($list_account_main as $constname) {
|
||||||
$constvalue = GETPOST($constname, 'alpha');
|
$constvalue = GETPOST($constname, 'alpha');
|
||||||
|
|
||||||
if (! dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
if (! dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
||||||
@ -102,7 +104,7 @@ if ($action == 'update') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ( $list_account as $constname ) {
|
foreach ($list_account as $constname) {
|
||||||
$constvalue = GETPOST($constname, 'alpha');
|
$constvalue = GETPOST($constname, 'alpha');
|
||||||
|
|
||||||
if (! dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
if (! dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
||||||
@ -154,7 +156,7 @@ foreach ($list_account_main as $key) {
|
|||||||
print $form->textwithpicto($label, $htmltext);
|
print $form->textwithpicto($label, $htmltext);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
// Value
|
// Value
|
||||||
print '<td>'; // Do not force align=right, or it align also the content of the select box
|
print '<td>'; // Do not force class=right, or it align also the content of the select box
|
||||||
print $formaccounting->select_account($conf->global->$key, $key, 1, '', 1, 1);
|
print $formaccounting->select_account($conf->global->$key, $key, 1, '', 1, 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
@ -177,7 +179,7 @@ foreach ($list_account as $key) {
|
|||||||
$label = $langs->trans($key);
|
$label = $langs->trans($key);
|
||||||
print '<td width="50%">' . $label . '</td>';
|
print '<td width="50%">' . $label . '</td>';
|
||||||
// Value
|
// Value
|
||||||
print '<td>'; // Do not force align=right, or it align also the content of the select box
|
print '<td>'; // Do not force class=right, or it align also the content of the select box
|
||||||
print $formaccounting->select_account($conf->global->$key, $key, 1, '', 1, 1);
|
print $formaccounting->select_account($conf->global->$key, $key, 1, '', 1, 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2017 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2013-2017 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
|
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
|
||||||
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
||||||
@ -96,7 +96,7 @@ if ($action == 'update') {
|
|||||||
$error ++;
|
$error ++;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ( $main_option as $constname ) {
|
foreach ($main_option as $constname) {
|
||||||
$constvalue = GETPOST($constname, 'alpha');
|
$constvalue = GETPOST($constname, 'alpha');
|
||||||
|
|
||||||
if (! dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
if (! dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
||||||
@ -104,7 +104,7 @@ if ($action == 'update') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($listparam[$modelcsv] as $key => $value ) {
|
foreach ($listparam[$modelcsv] as $key => $value) {
|
||||||
$constante = $key;
|
$constante = $key;
|
||||||
|
|
||||||
if (strpos($constante, 'ACCOUNTING')!==false) {
|
if (strpos($constante, 'ACCOUNTING')!==false) {
|
||||||
@ -198,7 +198,7 @@ print "</tr>\n";
|
|||||||
|
|
||||||
$num = count($main_option);
|
$num = count($main_option);
|
||||||
if ($num) {
|
if ($num) {
|
||||||
foreach ( $main_option as $key ) {
|
foreach ($main_option as $key) {
|
||||||
|
|
||||||
print '<tr class="oddeven value">';
|
print '<tr class="oddeven value">';
|
||||||
|
|
||||||
@ -256,7 +256,7 @@ if ($num2) {
|
|||||||
print '<td colspan="3">' . $langs->trans('OtherOptions') . '</td>';
|
print '<td colspan="3">' . $langs->trans('OtherOptions') . '</td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
foreach ( $model_option as $key) {
|
foreach ($model_option as $key) {
|
||||||
print '<tr class="oddeven value">';
|
print '<tr class="oddeven value">';
|
||||||
|
|
||||||
// Param
|
// Param
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
/* Copyright (C) 2013-2018 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -25,13 +25,13 @@ require '../../main.inc.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/class/fiscalyear.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/class/fiscalyear.class.php';
|
||||||
|
|
||||||
$action = GETPOST('action','aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
|
|
||||||
// Load variable for pagination
|
// Load variable for pagination
|
||||||
$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;
|
||||||
@ -58,7 +58,7 @@ static $tmpstatut2label = array (
|
|||||||
$statut2label = array (
|
$statut2label = array (
|
||||||
''
|
''
|
||||||
);
|
);
|
||||||
foreach ( $tmpstatut2label as $key => $val )
|
foreach ($tmpstatut2label as $key => $val)
|
||||||
$statut2label[$key] = $langs->trans($val);
|
$statut2label[$key] = $langs->trans($val);
|
||||||
|
|
||||||
$errors = array ();
|
$errors = array ();
|
||||||
@ -87,7 +87,7 @@ llxHeader('', $title, $helpurl);
|
|||||||
$sql = "SELECT f.rowid, f.label, f.date_start, f.date_end, f.statut, f.entity";
|
$sql = "SELECT f.rowid, f.label, f.date_start, f.date_end, f.statut, f.entity";
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_fiscalyear as f";
|
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_fiscalyear as f";
|
||||||
$sql .= " WHERE f.entity = " . $conf->entity;
|
$sql .= " WHERE f.entity = " . $conf->entity;
|
||||||
$sql.=$db->order($sortfield,$sortorder);
|
$sql.=$db->order($sortfield, $sortorder);
|
||||||
|
|
||||||
// Count total nb of records
|
// Count total nb of records
|
||||||
$nbtotalofrecords = '';
|
$nbtotalofrecords = '';
|
||||||
@ -111,14 +111,9 @@ if ($result)
|
|||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
if (! empty($user->rights->accounting->fiscalyear))
|
|
||||||
{
|
$addbutton.= dolGetButtonTitle($langs->trans('NewFiscalYear'), '', 'fa fa-plus-circle', 'fiscalyear_card.php?action=create', '', $user->rights->accounting->fiscalyear);
|
||||||
$addbutton = '<a class="butActionNew" href="fiscalyear_card.php?action=create"><span class="valignmiddle">' . $langs->trans("NewFiscalYear") .'</span><span class="fa fa-plus-circle valignmiddle"></span></a>';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$addbutton = '<a class="butActionRefused classfortooltip" href="#"><span class="valignmiddle" title="'.dol_escape_htmltag($langs->trans("NotAllowed")).'">' . $langs->trans("NewFiscalYear") .'</span><span class="fa fa-plus-circle valignmiddle"></span></a>';
|
|
||||||
}
|
|
||||||
|
|
||||||
$title = $langs->trans('AccountingPeriods');
|
$title = $langs->trans('AccountingPeriods');
|
||||||
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $params, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_accountancy', 0, $addbutton, '', $limit, 1);
|
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $params, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_accountancy', 0, $addbutton, '', $limit, 1);
|
||||||
@ -131,9 +126,9 @@ if ($result)
|
|||||||
print '<td>' . $langs->trans("Label") . '</td>';
|
print '<td>' . $langs->trans("Label") . '</td>';
|
||||||
print '<td>' . $langs->trans("DateStart") . '</td>';
|
print '<td>' . $langs->trans("DateStart") . '</td>';
|
||||||
print '<td>' . $langs->trans("DateEnd") . '</td>';
|
print '<td>' . $langs->trans("DateEnd") . '</td>';
|
||||||
print '<td align="center">' . $langs->trans("NumberOfAccountancyEntries") . '</td>';
|
print '<td class="center">' . $langs->trans("NumberOfAccountancyEntries") . '</td>';
|
||||||
print '<td align="center">' . $langs->trans("NumberOfAccountancyMovements") . '</td>';
|
print '<td class="center">' . $langs->trans("NumberOfAccountancyMovements") . '</td>';
|
||||||
print '<td align="right">' . $langs->trans("Statut") . '</td>';
|
print '<td class="right">' . $langs->trans("Statut") . '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
if ($num) {
|
if ($num) {
|
||||||
@ -144,17 +139,17 @@ if ($result)
|
|||||||
$fiscalyearstatic->id = $obj->rowid;
|
$fiscalyearstatic->id = $obj->rowid;
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td><a href="fiscalyear_card.php?id=' . $obj->rowid . '">' . img_object($langs->trans("ShowFiscalYear"), "technic") . ' ' . $obj->rowid . '</a></td>';
|
print '<td><a href="fiscalyear_card.php?id=' . $obj->rowid . '">' . img_object($langs->trans("ShowFiscalYear"), "technic") . ' ' . $obj->rowid . '</a></td>';
|
||||||
print '<td align="left">' . $obj->label . '</td>';
|
print '<td class="left">' . $obj->label . '</td>';
|
||||||
print '<td align="left">' . dol_print_date($db->jdate($obj->date_start), 'day') . '</td>';
|
print '<td class="left">' . dol_print_date($db->jdate($obj->date_start), 'day') . '</td>';
|
||||||
print '<td align="left">' . dol_print_date($db->jdate($obj->date_end), 'day') . '</td>';
|
print '<td class="left">' . dol_print_date($db->jdate($obj->date_end), 'day') . '</td>';
|
||||||
print '<td align="center">' . $object->getAccountancyEntriesByFiscalYear($obj->date_start, $obj->date_end) . '</td>';
|
print '<td class="center">' . $object->getAccountancyEntriesByFiscalYear($obj->date_start, $obj->date_end) . '</td>';
|
||||||
print '<td align="center">' . $object->getAccountancyMovementsByFiscalYear($obj->date_start, $obj->date_end) . '</td>';
|
print '<td class="center">' . $object->getAccountancyMovementsByFiscalYear($obj->date_start, $obj->date_end) . '</td>';
|
||||||
print '<td align="right">' . $fiscalyearstatic->LibStatut($obj->statut, 5) . '</td>';
|
print '<td class="right">' . $fiscalyearstatic->LibStatut($obj->statut, 5) . '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print '<tr class="oddeven"><td colspan="5" class="opacitymedium">' . $langs->trans("None") . '</td></tr>';
|
print '<tr class="oddeven"><td colspan="7" class="opacitymedium">' . $langs->trans("None") . '</td></tr>';
|
||||||
}
|
}
|
||||||
print '</table>';
|
print '</table>';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2014-2016 Alexandre Spangaro <aspangaro@zendsi.com>
|
/* Copyright (C) 2014-2016 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -50,7 +50,7 @@ static $tmpstatut2label = array (
|
|||||||
$statut2label = array (
|
$statut2label = array (
|
||||||
''
|
''
|
||||||
);
|
);
|
||||||
foreach ( $tmpstatut2label as $key => $val )
|
foreach ($tmpstatut2label as $key => $val)
|
||||||
$statut2label[$key] = $langs->trans($val);
|
$statut2label[$key] = $langs->trans($val);
|
||||||
|
|
||||||
$object = new Fiscalyear($db);
|
$object = new Fiscalyear($db);
|
||||||
@ -73,7 +73,7 @@ if ($action == 'confirm_delete' && $confirm == "yes") {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if ($action == 'add') {
|
elseif ($action == 'add') {
|
||||||
if (! GETPOST('cancel', 'alpha')) {
|
if (! GETPOST('cancel', 'alpha')) {
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
@ -118,7 +118,7 @@ else if ($action == 'add') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update record
|
// Update record
|
||||||
else if ($action == 'update') {
|
elseif ($action == 'update') {
|
||||||
if (! GETPOST('cancel', 'alpha')) {
|
if (! GETPOST('cancel', 'alpha')) {
|
||||||
$result = $object->fetch($id);
|
$result = $object->fetch($id);
|
||||||
|
|
||||||
@ -151,7 +151,7 @@ $form = new Form($db);
|
|||||||
|
|
||||||
$title = $langs->trans("Fiscalyear") . " - " . $langs->trans("Card");
|
$title = $langs->trans("Fiscalyear") . " - " . $langs->trans("Card");
|
||||||
$helpurl = "";
|
$helpurl = "";
|
||||||
llxHeader("",$title,$helpurl);
|
llxHeader("", $title, $helpurl);
|
||||||
|
|
||||||
if ($action == 'create')
|
if ($action == 'create')
|
||||||
{
|
{
|
||||||
@ -198,7 +198,7 @@ if ($action == 'create')
|
|||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
} else if ($id) {
|
} elseif ($id) {
|
||||||
$result = $object->fetch($id);
|
$result = $object->fetch($id);
|
||||||
if ($result > 0) {
|
if ($result > 0) {
|
||||||
$head = fiscalyear_prepare_head($object);
|
$head = fiscalyear_prepare_head($object);
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2014-2016 Alexandre Spangaro <aspangaro@zendsi.com>
|
/* Copyright (C) 2014-2016 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -40,7 +40,7 @@ $id = GETPOST('id', 'int');
|
|||||||
// View
|
// View
|
||||||
$title = $langs->trans("Fiscalyear") . " - " . $langs->trans("Info");
|
$title = $langs->trans("Fiscalyear") . " - " . $langs->trans("Info");
|
||||||
$helpurl = "";
|
$helpurl = "";
|
||||||
llxHeader("",$title,$helpurl);
|
llxHeader("", $title, $helpurl);
|
||||||
|
|
||||||
if ($id) {
|
if ($id) {
|
||||||
$object = new Fiscalyear($db);
|
$object = new Fiscalyear($db);
|
||||||
|
|||||||
@ -1,187 +0,0 @@
|
|||||||
<?php
|
|
||||||
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
|
||||||
* Copyright (C) 2013-2017 Alexandre Spangaro <aspangaro@zendsi.com>
|
|
||||||
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
|
|
||||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \file htdocs/accountancy/admin/importaccounts.php
|
|
||||||
* \ingroup Advanced accountancy
|
|
||||||
* \brief Page import accounting account
|
|
||||||
*/
|
|
||||||
require '../../main.inc.php';
|
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountingaccount.class.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formaccounting.class.php';
|
|
||||||
|
|
||||||
// Load translation files required by the page
|
|
||||||
$langs->loadLangs(array("compta","bills","accountancy"));
|
|
||||||
|
|
||||||
// Security check
|
|
||||||
if (! $user->admin)
|
|
||||||
accessforbidden();
|
|
||||||
|
|
||||||
$limit = GETPOST('limit','int')?GETPOST('limit','int'):(empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION)?$conf->liste_limit:$conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION);
|
|
||||||
$sortfield = GETPOST("sortfield",'alpha');
|
|
||||||
$sortorder = GETPOST("sortorder",'alpha');
|
|
||||||
$page = GETPOST("page",'int');
|
|
||||||
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
|
||||||
$offset = $limit * $page;
|
|
||||||
$pageprev = $page - 1;
|
|
||||||
$pagenext = $page + 1;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* View
|
|
||||||
*/
|
|
||||||
|
|
||||||
llxHeader('', $langs->trans("ImportAccount"));
|
|
||||||
|
|
||||||
$to_import = GETPOST("mesCasesCochees");
|
|
||||||
|
|
||||||
if ($_POST["action"] == 'import') {
|
|
||||||
print '<div><font color="red">' . $langs->trans("Processing") . '...</font></div>';
|
|
||||||
if (is_array($to_import) && count($to_import) > 0) {
|
|
||||||
print '<div><font color="red">' . count($to_import) . ' ' . $langs->trans("SelectedLines") . '</font></div>';
|
|
||||||
$sql = 'SELECT pcg_version FROM ' . MAIN_DB_PREFIX . 'accounting_system WHERE rowid=' . $conf->global->CHARTOFACCOUNTS;
|
|
||||||
|
|
||||||
$result = $db->query($sql);
|
|
||||||
if ($result && ($db->num_rows($result) > 0)) {
|
|
||||||
|
|
||||||
$obj = $db->fetch_object($result);
|
|
||||||
|
|
||||||
$cpt = 0;
|
|
||||||
foreach ( $to_import as $maLigneCochee ) {
|
|
||||||
|
|
||||||
$accounting = new AccountingAccount($db);
|
|
||||||
|
|
||||||
$monLabel = (string) GETPOST('label' . $maLigneCochee);
|
|
||||||
$monParentAccount = (string) GETPOST('AccountParent' . $maLigneCochee);
|
|
||||||
$monType = (string) GETPOST('pcgType' . $maLigneCochee);
|
|
||||||
$monSubType = (string) GETPOST('pcgSubType' . $maLigneCochee);
|
|
||||||
|
|
||||||
$accounting->fk_pcg_version = $obj->pcg_version;
|
|
||||||
$accounting->account_number = $maLigneCochee;
|
|
||||||
$accounting->label = $monLabel;
|
|
||||||
$accounting->account_parent = $monParentAccount;
|
|
||||||
$accounting->pcg_type = $monType;
|
|
||||||
$accounting->pcg_subtype = $monSubType;
|
|
||||||
$accounting->active = 1;
|
|
||||||
|
|
||||||
$result = $accounting->create($user);
|
|
||||||
if ($result > 0) {
|
|
||||||
setEventMessages($langs->trans("AccountingAccountAdd"), null, 'mesgs');
|
|
||||||
} else {
|
|
||||||
setEventMessages($accounting->error, $accounting->errors, 'errors');
|
|
||||||
}
|
|
||||||
$cpt ++;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
setEventMessages($langs->trans('AccountPlanNotFoundCheckSetting'), null, 'errors');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print '<div><font color="red">' . $langs->trans("AnyLineImport") . '</font></div>';
|
|
||||||
}
|
|
||||||
print '<div><font color="red">' . $langs->trans("EndProcessing") . '</font></div>';
|
|
||||||
}
|
|
||||||
|
|
||||||
// list accounting account from product
|
|
||||||
|
|
||||||
$sql = "(SELECT p.rowid as product_id, p.accountancy_code_sell as accounting ";
|
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "product as p ";
|
|
||||||
$sql .= " WHERE p.accountancy_code_sell >=0";
|
|
||||||
$sql .= " GROUP BY accounting ";
|
|
||||||
$sql .= ")";
|
|
||||||
$sql .= "UNION ALL(SELECT p.rowid as product_id, p.accountancy_code_buy as accounting ";
|
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "product as p ";
|
|
||||||
$sql .= " WHERE p.accountancy_code_buy >=0";
|
|
||||||
$sql .= " GROUP BY accounting ";
|
|
||||||
$sql .= ") ";
|
|
||||||
$sql .= " ORDER BY accounting DESC " . $db->plimit($limit + 1, $offset);
|
|
||||||
|
|
||||||
dol_syslog('accountancy/admin/importaccounts.php:: $sql=' . $sql);
|
|
||||||
$result = $db->query($sql);
|
|
||||||
if ($result) {
|
|
||||||
$num_lines = $db->num_rows($result);
|
|
||||||
$i = 0;
|
|
||||||
print_barre_liste($langs->trans("ImportAccount"), $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder, '', $num_lines);
|
|
||||||
|
|
||||||
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="POST">' . "\n";
|
|
||||||
print '<input type="hidden" name="action" value="import">';
|
|
||||||
|
|
||||||
print '<table class="noborder" width="100%">';
|
|
||||||
print '<tr class="liste_titre"><td>' . $langs->trans("AccountAccouting") . '</td>';
|
|
||||||
print '<td>' . $langs->trans("label") . '</td>';
|
|
||||||
print '<td>' . $langs->trans("Accountparent") . '</td>';
|
|
||||||
print '<td>' . $langs->trans("Pcgtype") . '</td>';
|
|
||||||
print '<td>' . $langs->trans("Pcgsubtype") . '</td>';
|
|
||||||
print '<td align="center">' . $langs->trans("Import") . '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
$form = new Form($db);
|
|
||||||
$formaccounting = new FormAccounting($db);
|
|
||||||
|
|
||||||
while ( $i < min($num_lines, $limit) ) {
|
|
||||||
$objp = $db->fetch_object($result);
|
|
||||||
print '<tr class="oddeven">';
|
|
||||||
|
|
||||||
print '<td align="left">';
|
|
||||||
print $objp->accounting;
|
|
||||||
print '</td>';
|
|
||||||
|
|
||||||
print '<td align="left">';
|
|
||||||
print '<input name="label" size="30" value="">';
|
|
||||||
print '</td>';
|
|
||||||
|
|
||||||
// Colonne choix du compte
|
|
||||||
print '<td>';
|
|
||||||
print $formaccounting->select_account($accounting->account_parent, 'AccountParent');
|
|
||||||
print '</td>';
|
|
||||||
|
|
||||||
print '<td>';
|
|
||||||
print '<input type="text" name="pcgType" value="'.dol_escape_htmltag(isset($_POST['pcg_subtype'])?GETPOST('pcg_subtype','alpha'):$accounting->pcg_type).'">';
|
|
||||||
print '</td>';
|
|
||||||
|
|
||||||
print '<td>';
|
|
||||||
print '<input type="text" name="pcgSubType" value="'.dol_escape_htmltag(isset($_POST['pcg_subtype'])?GETPOST('pcg_subtype','alpha'):$accounting->pcg_subtype).'">';
|
|
||||||
print '</td>';
|
|
||||||
|
|
||||||
// Colonne choix ligne a ventiler
|
|
||||||
$checked = ('label' == 'O') ? ' checked' : '';
|
|
||||||
|
|
||||||
print '<td align="center">';
|
|
||||||
print '<input type="checkbox" name="mesCasesCochees[]" ' . $checked . ' value="' . $objp->accounting . '"/>';
|
|
||||||
print '</td>';
|
|
||||||
|
|
||||||
print '</tr>';
|
|
||||||
$i ++;
|
|
||||||
}
|
|
||||||
|
|
||||||
print '<tr><td colspan="8"> </td></tr><tr><td colspan="8" align="center"><input type="submit" class="butAction" value="' . $langs->trans("Import") . '"></td></tr>';
|
|
||||||
|
|
||||||
print '</table>';
|
|
||||||
print '</form>';
|
|
||||||
} else {
|
|
||||||
print $db->error();
|
|
||||||
}
|
|
||||||
|
|
||||||
// End of page
|
|
||||||
llxFooter();
|
|
||||||
$db->close();
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2013-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2013-2019 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2014-2015 Ari Elbaz (elarifr) <github@accedinfo.com>
|
* Copyright (C) 2014-2015 Ari Elbaz (elarifr) <github@accedinfo.com>
|
||||||
* 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>
|
||||||
@ -144,6 +144,18 @@ if ($action == 'setenabledraftexport') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($action == 'setenablesubsidiarylist') {
|
||||||
|
$setenablesubsidiarylist = GETPOST('value', 'int');
|
||||||
|
$res = dolibarr_set_const($db, "ACCOUNTANCY_COMBO_FOR_AUX", $setenablesubsidiarylist, 'yesno', 0, '', $conf->entity);
|
||||||
|
if (! $res > 0)
|
||||||
|
$error ++;
|
||||||
|
if (! $error) {
|
||||||
|
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
|
||||||
|
} else {
|
||||||
|
setEventMessages($langs->trans("Error"), null, 'mesgs');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
@ -202,11 +214,11 @@ if (! empty($user->admin))
|
|||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>' . $langs->trans("ACCOUNTING_LIST_SORT_VENTILATION_TODO") . '</td>';
|
print '<td>' . $langs->trans("ACCOUNTING_LIST_SORT_VENTILATION_TODO") . '</td>';
|
||||||
if (! empty($conf->global->ACCOUNTING_LIST_SORT_VENTILATION_TODO)) {
|
if (! empty($conf->global->ACCOUNTING_LIST_SORT_VENTILATION_TODO)) {
|
||||||
print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=setlistsorttodo&value=0">';
|
print '<td class="right"><a class="reposition" href="' . $_SERVER['PHP_SELF'] . '?action=setlistsorttodo&value=0">';
|
||||||
print img_picto($langs->trans("Activated"), 'switch_on');
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
print '</a></td>';
|
print '</a></td>';
|
||||||
} else {
|
} else {
|
||||||
print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=setlistsorttodo&value=1">';
|
print '<td class="right"><a class="reposition" href="' . $_SERVER['PHP_SELF'] . '?action=setlistsorttodo&value=1">';
|
||||||
print img_picto($langs->trans("Disabled"), 'switch_off');
|
print img_picto($langs->trans("Disabled"), 'switch_off');
|
||||||
print '</a></td>';
|
print '</a></td>';
|
||||||
}
|
}
|
||||||
@ -215,11 +227,11 @@ if (! empty($user->admin))
|
|||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>' . $langs->trans("ACCOUNTING_LIST_SORT_VENTILATION_DONE") . '</td>';
|
print '<td>' . $langs->trans("ACCOUNTING_LIST_SORT_VENTILATION_DONE") . '</td>';
|
||||||
if (! empty($conf->global->ACCOUNTING_LIST_SORT_VENTILATION_DONE)) {
|
if (! empty($conf->global->ACCOUNTING_LIST_SORT_VENTILATION_DONE)) {
|
||||||
print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=setlistsortdone&value=0">';
|
print '<td class="right"><a class="reposition" href="' . $_SERVER['PHP_SELF'] . '?action=setlistsortdone&value=0">';
|
||||||
print img_picto($langs->trans("Activated"), 'switch_on');
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
print '</a></td>';
|
print '</a></td>';
|
||||||
} else {
|
} else {
|
||||||
print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=setlistsortdone&value=1">';
|
print '<td class="right"><a class="reposition" href="' . $_SERVER['PHP_SELF'] . '?action=setlistsortdone&value=1">';
|
||||||
print img_picto($langs->trans("Disabled"), 'switch_off');
|
print img_picto($langs->trans("Disabled"), 'switch_off');
|
||||||
print '</a></td>';
|
print '</a></td>';
|
||||||
}
|
}
|
||||||
@ -228,11 +240,11 @@ if (! empty($user->admin))
|
|||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>' . $langs->trans("ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL") . '</td>';
|
print '<td>' . $langs->trans("ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL") . '</td>';
|
||||||
if (! empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL)) {
|
if (! empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL)) {
|
||||||
print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=setenabledraftexport&value=0">';
|
print '<td class="right"><a class="reposition" href="' . $_SERVER['PHP_SELF'] . '?action=setenabledraftexport&value=0">';
|
||||||
print img_picto($langs->trans("Activated"), 'switch_on');
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
print '</a></td>';
|
print '</a></td>';
|
||||||
} else {
|
} else {
|
||||||
print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=setenabledraftexport&value=1">';
|
print '<td class="right"><a class="reposition" href="' . $_SERVER['PHP_SELF'] . '?action=setenabledraftexport&value=1">';
|
||||||
print img_picto($langs->trans("Disabled"), 'switch_off');
|
print img_picto($langs->trans("Disabled"), 'switch_off');
|
||||||
print '</a></td>';
|
print '</a></td>';
|
||||||
}
|
}
|
||||||
@ -241,24 +253,37 @@ if (! empty($user->admin))
|
|||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>' . $langs->trans("BANK_DISABLE_DIRECT_INPUT") . '</td>';
|
print '<td>' . $langs->trans("BANK_DISABLE_DIRECT_INPUT") . '</td>';
|
||||||
if (! empty($conf->global->BANK_DISABLE_DIRECT_INPUT)) {
|
if (! empty($conf->global->BANK_DISABLE_DIRECT_INPUT)) {
|
||||||
print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=setdisabledirectinput&value=0">';
|
print '<td class="right"><a class="reposition" href="' . $_SERVER['PHP_SELF'] . '?action=setdisabledirectinput&value=0">';
|
||||||
print img_picto($langs->trans("Activated"), 'switch_on');
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
print '</a></td>';
|
print '</a></td>';
|
||||||
} else {
|
} else {
|
||||||
print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=setdisabledirectinput&value=1">';
|
print '<td class="right"><a class="reposition" href="' . $_SERVER['PHP_SELF'] . '?action=setdisabledirectinput&value=1">';
|
||||||
print img_picto($langs->trans("Disabled"), 'switch_off');
|
print img_picto($langs->trans("Disabled"), 'switch_off');
|
||||||
print '</a></td>';
|
print '</a></td>';
|
||||||
}
|
}
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>' . $langs->trans("ACCOUNTING_MANAGE_ZERO") . '</td>';
|
print '<td>' . $langs->trans("ACCOUNTANCY_COMBO_FOR_AUX") . '</td>';
|
||||||
if (! empty($conf->global->ACCOUNTING_MANAGE_ZERO)) {
|
if (! empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX)) {
|
||||||
print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=setmanagezero&value=0">';
|
print '<td class="right"><a class="reposition" href="' . $_SERVER['PHP_SELF'] . '?action=setenablesubsidiarylist&value=0">';
|
||||||
print img_picto($langs->trans("Activated"), 'switch_on');
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
print '</a></td>';
|
print '</a></td>';
|
||||||
} else {
|
} else {
|
||||||
print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=setmanagezero&value=1">';
|
print '<td class="right"><a class="reposition" href="' . $_SERVER['PHP_SELF'] . '?action=setenablesubsidiarylist&value=1">';
|
||||||
|
print img_picto($langs->trans("Disabled"), 'switch_off');
|
||||||
|
print '</a></td>';
|
||||||
|
}
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
print '<tr class="oddeven">';
|
||||||
|
print '<td>' . $langs->trans("ACCOUNTING_MANAGE_ZERO") . '</td>';
|
||||||
|
if (! empty($conf->global->ACCOUNTING_MANAGE_ZERO)) {
|
||||||
|
print '<td class="right"><a class="reposition" href="' . $_SERVER['PHP_SELF'] . '?action=setmanagezero&value=0">';
|
||||||
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
|
print '</a></td>';
|
||||||
|
} else {
|
||||||
|
print '<td class="right"><a class="reposition" href="' . $_SERVER['PHP_SELF'] . '?action=setmanagezero&value=1">';
|
||||||
print img_picto($langs->trans("Disabled"), 'switch_off');
|
print img_picto($langs->trans("Disabled"), 'switch_off');
|
||||||
print '</a></td>';
|
print '</a></td>';
|
||||||
}
|
}
|
||||||
@ -277,7 +302,7 @@ foreach ($list as $key)
|
|||||||
$label = $langs->trans($key);
|
$label = $langs->trans($key);
|
||||||
print '<td>'.$label.'</td>';
|
print '<td>'.$label.'</td>';
|
||||||
// Value
|
// Value
|
||||||
print '<td align="right">';
|
print '<td class="right">';
|
||||||
print '<input type="text" class="maxwidth100" id="' . $key . '" name="' . $key . '" value="' . $conf->global->$key . '">';
|
print '<input type="text" class="maxwidth100" id="' . $key . '" name="' . $key . '" value="' . $conf->global->$key . '">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2017 Alexandre Spangaro <aspangaro@zendsi.com>
|
/* Copyright (C) 2017 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -34,11 +34,11 @@ require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingjournal.class.php';
|
|||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("admin","compta","accountancy"));
|
$langs->loadLangs(array("admin","compta","accountancy"));
|
||||||
|
|
||||||
$action=GETPOST('action','aZ09')?GETPOST('action','aZ09'):'view';
|
$action=GETPOST('action', 'aZ09')?GETPOST('action', 'aZ09'):'view';
|
||||||
$confirm=GETPOST('confirm','alpha');
|
$confirm=GETPOST('confirm', 'alpha');
|
||||||
$id=35;
|
$id=35;
|
||||||
$rowid=GETPOST('rowid','alpha');
|
$rowid=GETPOST('rowid', 'alpha');
|
||||||
$code=GETPOST('code','alpha');
|
$code=GETPOST('code', 'alpha');
|
||||||
|
|
||||||
// Security access
|
// Security access
|
||||||
if (empty($user->rights->accounting->chartofaccount))
|
if (empty($user->rights->accounting->chartofaccount))
|
||||||
@ -48,16 +48,16 @@ if (empty($user->rights->accounting->chartofaccount))
|
|||||||
|
|
||||||
$acts[0] = "activate";
|
$acts[0] = "activate";
|
||||||
$acts[1] = "disable";
|
$acts[1] = "disable";
|
||||||
$actl[0] = img_picto($langs->trans("Disabled"),'switch_off');
|
$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', 'int')>0?GETPOST('listlimit', 'int'):1000;
|
$listlimit=GETPOST('listlimit', 'int')>0?GETPOST('listlimit', 'int'):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 (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 = $listlimit * $page ;
|
$offset = $listlimit * $page ;
|
||||||
$pageprev = $page - 1;
|
$pageprev = $page - 1;
|
||||||
@ -123,7 +123,7 @@ $tabfieldcheck=array();
|
|||||||
$tabfieldcheck[35] = array();
|
$tabfieldcheck[35] = array();
|
||||||
|
|
||||||
// Complete all arrays with entries found into modules
|
// Complete all arrays with entries found into modules
|
||||||
complete_dictionary_with_modules($taborder,$tabname,$tablib,$tabsql,$tabsqlsort,$tabfield,$tabfieldvalue,$tabfieldinsert,$tabrowid,$tabcond,$tabhelp,$tabfieldcheck);
|
complete_dictionary_with_modules($taborder, $tabname, $tablib, $tabsql, $tabsqlsort, $tabfield, $tabfieldvalue, $tabfieldinsert, $tabrowid, $tabcond, $tabhelp, $tabfieldcheck);
|
||||||
|
|
||||||
|
|
||||||
// Define elementList and sourceList (used for dictionary type of contacts "llx_c_type_contact")
|
// Define elementList and sourceList (used for dictionary type of contacts "llx_c_type_contact")
|
||||||
@ -151,10 +151,10 @@ if (GETPOST('button_removefilter', 'alpha') || GETPOST('button_removefilter.x',
|
|||||||
// Actions add or modify an entry into a dictionary
|
// Actions add or modify an entry into a dictionary
|
||||||
if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha'))
|
if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha'))
|
||||||
{
|
{
|
||||||
$listfield=explode(',', str_replace(' ', '',$tabfield[$id]));
|
$listfield=explode(',', str_replace(' ', '', $tabfield[$id]));
|
||||||
$listfieldinsert=explode(',',$tabfieldinsert[$id]);
|
$listfieldinsert=explode(',', $tabfieldinsert[$id]);
|
||||||
$listfieldmodify=explode(',',$tabfieldinsert[$id]);
|
$listfieldmodify=explode(',', $tabfieldinsert[$id]);
|
||||||
$listfieldvalue=explode(',',$tabfieldvalue[$id]);
|
$listfieldvalue=explode(',', $tabfieldvalue[$id]);
|
||||||
|
|
||||||
// Check that all fields are filled
|
// Check that all fields are filled
|
||||||
$ok=1;
|
$ok=1;
|
||||||
@ -178,7 +178,7 @@ if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha'))
|
|||||||
$msg .= $langs->transnoentities('ErrorFieldFormat', $langs->transnoentities('Code')).'<br>';
|
$msg .= $langs->transnoentities('ErrorFieldFormat', $langs->transnoentities('Code')).'<br>';
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
if (! GETPOST('label','alpha'))
|
if (! GETPOST('label', 'alpha'))
|
||||||
{
|
{
|
||||||
setEventMessages($langs->transnoentities("ErrorFieldRequired", $langs->transnoentitiesnoconv("Label")), null, 'errors');
|
setEventMessages($langs->transnoentities("ErrorFieldRequired", $langs->transnoentitiesnoconv("Label")), null, 'errors');
|
||||||
$ok=0;
|
$ok=0;
|
||||||
@ -210,14 +210,14 @@ if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha'))
|
|||||||
// Add new entry
|
// Add new entry
|
||||||
$sql = "INSERT INTO ".$tabname[$id]." (";
|
$sql = "INSERT INTO ".$tabname[$id]." (";
|
||||||
// List of fields
|
// List of fields
|
||||||
if ($tabrowid[$id] && ! in_array($tabrowid[$id],$listfieldinsert))
|
if ($tabrowid[$id] && ! in_array($tabrowid[$id], $listfieldinsert))
|
||||||
$sql.= $tabrowid[$id].",";
|
$sql.= $tabrowid[$id].",";
|
||||||
$sql.= $tabfieldinsert[$id];
|
$sql.= $tabfieldinsert[$id];
|
||||||
$sql.=",active,entity)";
|
$sql.=",active,entity)";
|
||||||
$sql.= " VALUES(";
|
$sql.= " VALUES(";
|
||||||
|
|
||||||
// List of values
|
// List of values
|
||||||
if ($tabrowid[$id] && ! in_array($tabrowid[$id],$listfieldinsert))
|
if ($tabrowid[$id] && ! in_array($tabrowid[$id], $listfieldinsert))
|
||||||
$sql.= $newid.",";
|
$sql.= $newid.",";
|
||||||
$i=0;
|
$i=0;
|
||||||
foreach ($listfieldinsert as $f => $value)
|
foreach ($listfieldinsert as $f => $value)
|
||||||
@ -259,7 +259,7 @@ if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha'))
|
|||||||
// Modify entry
|
// Modify entry
|
||||||
$sql = "UPDATE ".$tabname[$id]." SET ";
|
$sql = "UPDATE ".$tabname[$id]." SET ";
|
||||||
// Modifie valeur des champs
|
// Modifie valeur des champs
|
||||||
if ($tabrowid[$id] && ! in_array($tabrowid[$id],$listfieldmodify))
|
if ($tabrowid[$id] && ! in_array($tabrowid[$id], $listfieldmodify))
|
||||||
{
|
{
|
||||||
$sql.= $tabrowid[$id]."=";
|
$sql.= $tabrowid[$id]."=";
|
||||||
$sql.= "'".$db->escape($rowid)."', ";
|
$sql.= "'".$db->escape($rowid)."', ";
|
||||||
@ -267,10 +267,10 @@ if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha'))
|
|||||||
$i = 0;
|
$i = 0;
|
||||||
foreach ($listfieldmodify as $field)
|
foreach ($listfieldmodify as $field)
|
||||||
{
|
{
|
||||||
if ($field == 'price' || preg_match('/^amount/i',$field) || $field == 'taux') {
|
if ($field == 'price' || preg_match('/^amount/i', $field) || $field == 'taux') {
|
||||||
$_POST[$listfieldvalue[$i]] = price2num($_POST[$listfieldvalue[$i]],'MU');
|
$_POST[$listfieldvalue[$i]] = price2num($_POST[$listfieldvalue[$i]], 'MU');
|
||||||
}
|
}
|
||||||
else if ($field == 'entity') {
|
elseif ($field == 'entity') {
|
||||||
$_POST[$listfieldvalue[$i]] = $conf->entity;
|
$_POST[$listfieldvalue[$i]] = $conf->entity;
|
||||||
}
|
}
|
||||||
if ($i) $sql.=",";
|
if ($i) $sql.=",";
|
||||||
@ -381,13 +381,13 @@ if ($id)
|
|||||||
$titlepicto='title_accountancy';
|
$titlepicto='title_accountancy';
|
||||||
}
|
}
|
||||||
|
|
||||||
print load_fiche_titre($titre,$linkback,$titlepicto);
|
print load_fiche_titre($titre, $linkback, $titlepicto);
|
||||||
|
|
||||||
|
|
||||||
// Confirmation de la suppression de la ligne
|
// Confirmation de la suppression de la ligne
|
||||||
if ($action == 'delete')
|
if ($action == 'delete')
|
||||||
{
|
{
|
||||||
print $form->formconfirm($_SERVER["PHP_SELF"].'?'.($page?'page='.$page.'&':'').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.$rowid.'&code='.$code.'&id='.$id, $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_delete','',0,1);
|
print $form->formconfirm($_SERVER["PHP_SELF"].'?'.($page?'page='.$page.'&':'').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.$rowid.'&code='.$code.'&id='.$id, $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_delete', '', 0, 1);
|
||||||
}
|
}
|
||||||
//var_dump($elementList);
|
//var_dump($elementList);
|
||||||
|
|
||||||
@ -402,14 +402,14 @@ if ($id)
|
|||||||
|
|
||||||
// If sort order is "country", we use country_code instead
|
// If sort order is "country", we use country_code instead
|
||||||
if ($sortfield == 'country') $sortfield='country_code';
|
if ($sortfield == 'country') $sortfield='country_code';
|
||||||
$sql.=$db->order($sortfield,$sortorder);
|
$sql.=$db->order($sortfield, $sortorder);
|
||||||
$sql.=$db->plimit($listlimit+1,$offset);
|
$sql.=$db->plimit($listlimit+1, $offset);
|
||||||
|
|
||||||
$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">';
|
||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
print '<input type="hidden" name="from" value="'.dol_escape_htmltag(GETPOST('from','alpha')).'">';
|
print '<input type="hidden" name="from" value="'.dol_escape_htmltag(GETPOST('from', 'alpha')).'">';
|
||||||
|
|
||||||
print '<div class="div-table-responsive">';
|
print '<div class="div-table-responsive">';
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
@ -419,7 +419,7 @@ if ($id)
|
|||||||
{
|
{
|
||||||
$alabelisused=0;
|
$alabelisused=0;
|
||||||
|
|
||||||
$fieldlist=explode(',',$tabfield[$id]);
|
$fieldlist=explode(',', $tabfield[$id]);
|
||||||
|
|
||||||
// Line for title
|
// Line for title
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
@ -429,23 +429,25 @@ if ($id)
|
|||||||
// dans les dictionnaires de donnees
|
// dans les dictionnaires de donnees
|
||||||
$valuetoshow=ucfirst($fieldlist[$field]); // Par defaut
|
$valuetoshow=ucfirst($fieldlist[$field]); // Par defaut
|
||||||
$valuetoshow=$langs->trans($valuetoshow); // try to translate
|
$valuetoshow=$langs->trans($valuetoshow); // try to translate
|
||||||
$align="left";
|
$class="left";
|
||||||
if ($fieldlist[$field]=='code') { $valuetoshow=$langs->trans("Code"); }
|
if ($fieldlist[$field]=='code') {
|
||||||
if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label')
|
$valuetoshow=$langs->trans("Code");
|
||||||
{
|
}
|
||||||
|
if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') {
|
||||||
$valuetoshow=$langs->trans("Label");
|
$valuetoshow=$langs->trans("Label");
|
||||||
}
|
}
|
||||||
if ($fieldlist[$field]=='nature') { $valuetoshow=$langs->trans("Nature"); }
|
if ($fieldlist[$field]=='nature') {
|
||||||
|
$valuetoshow=$langs->trans("Nature");
|
||||||
|
}
|
||||||
|
|
||||||
if ($valuetoshow != '')
|
if ($valuetoshow != '') {
|
||||||
{
|
print '<td class="'.$class.'">';
|
||||||
print '<td align="'.$align.'">';
|
if (! empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i', $tabhelp[$id][$value])) print '<a href="'.$tabhelp[$id][$value].'" target="_blank">'.$valuetoshow.' '.img_help(1, $valuetoshow).'</a>';
|
||||||
if (! empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i',$tabhelp[$id][$value])) print '<a href="'.$tabhelp[$id][$value].'" target="_blank">'.$valuetoshow.' '.img_help(1,$valuetoshow).'</a>';
|
elseif (! empty($tabhelp[$id][$value])) print $form->textwithpicto($valuetoshow, $tabhelp[$id][$value]);
|
||||||
else if (! empty($tabhelp[$id][$value])) print $form->textwithpicto($valuetoshow,$tabhelp[$id][$value]);
|
|
||||||
else print $valuetoshow;
|
else print $valuetoshow;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') $alabelisused=1;
|
if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') $alabelisused=1;
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<td>';
|
print '<td>';
|
||||||
@ -472,15 +474,15 @@ if ($id)
|
|||||||
|
|
||||||
$tmpaction = 'create';
|
$tmpaction = 'create';
|
||||||
$parameters=array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
$parameters=array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
||||||
$reshook=$hookmanager->executeHooks('createDictionaryFieldlist',$parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
$reshook=$hookmanager->executeHooks('createDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
||||||
$error=$hookmanager->error; $errors=$hookmanager->errors;
|
$error=$hookmanager->error; $errors=$hookmanager->errors;
|
||||||
|
|
||||||
if (empty($reshook))
|
if (empty($reshook))
|
||||||
{
|
{
|
||||||
fieldListJournal($fieldlist,$obj,$tabname[$id],'add');
|
fieldListJournal($fieldlist, $obj, $tabname[$id], 'add');
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<td colspan="4" align="right">';
|
print '<td colspan="4" class="right">';
|
||||||
print '<input type="submit" class="button" name="actionadd" value="'.$langs->trans("Add").'">';
|
print '<input type="submit" class="button" name="actionadd" value="'.$langs->trans("Add").'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print "</tr>";
|
print "</tr>";
|
||||||
@ -503,12 +505,12 @@ if ($id)
|
|||||||
$paramwithsearch = $param;
|
$paramwithsearch = $param;
|
||||||
if ($sortorder) $paramwithsearch.= '&sortorder='.$sortorder;
|
if ($sortorder) $paramwithsearch.= '&sortorder='.$sortorder;
|
||||||
if ($sortfield) $paramwithsearch.= '&sortfield='.$sortfield;
|
if ($sortfield) $paramwithsearch.= '&sortfield='.$sortfield;
|
||||||
if (GETPOST('from', 'alpha')) $paramwithsearch.= '&from='.GETPOST('from','alpha');
|
if (GETPOST('from', 'alpha')) $paramwithsearch.= '&from='.GETPOST('from', 'alpha');
|
||||||
|
|
||||||
// There is several pages
|
// There is several pages
|
||||||
if ($num > $listlimit)
|
if ($num > $listlimit)
|
||||||
{
|
{
|
||||||
print '<tr class="none"><td align="right" colspan="'.(3+count($fieldlist)).'">';
|
print '<tr class="none"><td class="right" colspan="'.(3+count($fieldlist)).'">';
|
||||||
print_fleche_navigation($page, $_SERVER["PHP_SELF"], $paramwithsearch, ($num > $listlimit), '<li class="pagination"><span>'.$langs->trans("Page").' '.($page+1).'</span></li>');
|
print_fleche_navigation($page, $_SERVER["PHP_SELF"], $paramwithsearch, ($num > $listlimit), '<li class="pagination"><span>'.$langs->trans("Page").' '.($page+1).'</span></li>');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
@ -521,7 +523,7 @@ if ($id)
|
|||||||
print '<td class="liste_titre"></td>';
|
print '<td class="liste_titre"></td>';
|
||||||
print '<td class="liste_titre"></td>';
|
print '<td class="liste_titre"></td>';
|
||||||
print '<td class="liste_titre"></td>';
|
print '<td class="liste_titre"></td>';
|
||||||
print '<td class="liste_titre" align="center">';
|
print '<td class="liste_titre center">';
|
||||||
if ($filterfound)
|
if ($filterfound)
|
||||||
{
|
{
|
||||||
$searchpicto=$form->showFilterAndCheckAddButtons(0);
|
$searchpicto=$form->showFilterAndCheckAddButtons(0);
|
||||||
@ -537,7 +539,7 @@ if ($id)
|
|||||||
// Determine le nom du champ par rapport aux noms possibles
|
// Determine le nom du champ par rapport aux noms possibles
|
||||||
// dans les dictionnaires de donnees
|
// dans les dictionnaires de donnees
|
||||||
$showfield=1; // By defaut
|
$showfield=1; // By defaut
|
||||||
$align="left";
|
$class="left";
|
||||||
$sortable=1;
|
$sortable=1;
|
||||||
$valuetoshow='';
|
$valuetoshow='';
|
||||||
/*
|
/*
|
||||||
@ -549,17 +551,22 @@ if ($id)
|
|||||||
*/
|
*/
|
||||||
$valuetoshow=ucfirst($fieldlist[$field]); // By defaut
|
$valuetoshow=ucfirst($fieldlist[$field]); // By defaut
|
||||||
$valuetoshow=$langs->trans($valuetoshow); // try to translate
|
$valuetoshow=$langs->trans($valuetoshow); // try to translate
|
||||||
if ($fieldlist[$field]=='code') { $valuetoshow=$langs->trans("Code"); }
|
if ($fieldlist[$field]=='code') {
|
||||||
if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') { $valuetoshow=$langs->trans("Label"); }
|
$valuetoshow=$langs->trans("Code");
|
||||||
if ($fieldlist[$field]=='nature') { $valuetoshow=$langs->trans("Nature"); }
|
}
|
||||||
|
if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') {
|
||||||
|
$valuetoshow=$langs->trans("Label");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field]=='nature') {
|
||||||
|
$valuetoshow=$langs->trans("Nature");
|
||||||
|
}
|
||||||
|
|
||||||
// Affiche nom du champ
|
// Affiche nom du champ
|
||||||
if ($showfield)
|
if ($showfield) {
|
||||||
{
|
print getTitleFieldOfList($valuetoshow, 0, $_SERVER["PHP_SELF"], ($sortable?$fieldlist[$field]:''), ($page?'page='.$page.'&':''), $param, "", $sortfield, $sortorder, $class.' ');
|
||||||
print getTitleFieldOfList($valuetoshow, 0, $_SERVER["PHP_SELF"], ($sortable?$fieldlist[$field]:''), ($page?'page='.$page.'&':''), $param, "align=".$align, $sortfield, $sortorder);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print getTitleFieldOfList($langs->trans("Status"), 0, $_SERVER["PHP_SELF"], "active", ($page?'page='.$page.'&':''), $param, 'align="center"', $sortfield, $sortorder);
|
print getTitleFieldOfList($langs->trans("Status"), 0, $_SERVER["PHP_SELF"], "active", ($page?'page='.$page.'&':''), $param, '', $sortfield, $sortorder, 'center ');
|
||||||
print getTitleFieldOfList('');
|
print getTitleFieldOfList('');
|
||||||
print getTitleFieldOfList('');
|
print getTitleFieldOfList('');
|
||||||
print getTitleFieldOfList('');
|
print getTitleFieldOfList('');
|
||||||
@ -577,13 +584,13 @@ if ($id)
|
|||||||
{
|
{
|
||||||
$tmpaction='edit';
|
$tmpaction='edit';
|
||||||
$parameters=array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
$parameters=array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
||||||
$reshook=$hookmanager->executeHooks('editDictionaryFieldlist',$parameters,$obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
$reshook=$hookmanager->executeHooks('editDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
||||||
$error=$hookmanager->error; $errors=$hookmanager->errors;
|
$error=$hookmanager->error; $errors=$hookmanager->errors;
|
||||||
|
|
||||||
// Show fields
|
// Show fields
|
||||||
if (empty($reshook)) fieldListJournal($fieldlist,$obj,$tabname[$id],'edit');
|
if (empty($reshook)) fieldListJournal($fieldlist, $obj, $tabname[$id], 'edit');
|
||||||
|
|
||||||
print '<td align="center" colspan="4">';
|
print '<td class="center" colspan="4">';
|
||||||
print '<input type="hidden" name="page" value="'.$page.'">';
|
print '<input type="hidden" name="page" value="'.$page.'">';
|
||||||
print '<input type="hidden" name="rowid" value="'.$rowid.'">';
|
print '<input type="hidden" name="rowid" value="'.$rowid.'">';
|
||||||
print '<input type="submit" class="button" name="actionmodify" value="'.$langs->trans("Modify").'">';
|
print '<input type="submit" class="button" name="actionmodify" value="'.$langs->trans("Modify").'">';
|
||||||
@ -595,7 +602,7 @@ if ($id)
|
|||||||
{
|
{
|
||||||
$tmpaction = 'view';
|
$tmpaction = 'view';
|
||||||
$parameters=array('var'=>$var, 'fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
$parameters=array('var'=>$var, 'fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]);
|
||||||
$reshook=$hookmanager->executeHooks('viewDictionaryFieldlist',$parameters,$obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
$reshook=$hookmanager->executeHooks('viewDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
||||||
|
|
||||||
$error=$hookmanager->error; $errors=$hookmanager->errors;
|
$error=$hookmanager->error; $errors=$hookmanager->errors;
|
||||||
|
|
||||||
@ -606,32 +613,38 @@ if ($id)
|
|||||||
{
|
{
|
||||||
|
|
||||||
$showfield=1;
|
$showfield=1;
|
||||||
$align="left";
|
$class="left";
|
||||||
$valuetoshow=$obj->{$fieldlist[$field]};
|
$valuetoshow=$obj->{$fieldlist[$field]};
|
||||||
if ($valuetoshow=='all') {
|
if ($valuetoshow=='all') {
|
||||||
$valuetoshow=$langs->trans('All');
|
$valuetoshow=$langs->trans('All');
|
||||||
}
|
}
|
||||||
else if ($fieldlist[$field]=='nature' && $tabname[$id]==MAIN_DB_PREFIX.'accounting_journal') {
|
elseif ($fieldlist[$field]=='nature' && $tabname[$id]==MAIN_DB_PREFIX.'accounting_journal') {
|
||||||
$key=$langs->trans("AccountingJournalType".strtoupper($obj->nature));
|
$key=$langs->trans("AccountingJournalType".strtoupper($obj->nature));
|
||||||
$valuetoshow=($obj->nature && $key != "AccountingJournalType".strtoupper($langs->trans($obj->nature))?$key:$obj->{$fieldlist[$field]});
|
$valuetoshow=($obj->nature && $key != "AccountingJournalType".strtoupper($langs->trans($obj->nature))?$key:$obj->{$fieldlist[$field]});
|
||||||
}
|
}
|
||||||
else if ($fieldlist[$field]=='label' && $tabname[$id]==MAIN_DB_PREFIX.'accounting_journal') {
|
elseif ($fieldlist[$field]=='label' && $tabname[$id]==MAIN_DB_PREFIX.'accounting_journal') {
|
||||||
$valuetoshow=$langs->trans($obj->label);
|
$valuetoshow=$langs->trans($obj->label);
|
||||||
}
|
}
|
||||||
|
|
||||||
$class='tddict';
|
$class='tddict';
|
||||||
// Show value for field
|
// Show value for field
|
||||||
if ($showfield) print '<!-- '.$fieldlist[$field].' --><td align="'.$align.'" class="'.$class.'">'.$valuetoshow.'</td>';
|
if ($showfield) print '<!-- '.$fieldlist[$field].' --><td class="'.$class.'">'.$valuetoshow.'</td>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Can an entry be erased or disabled ?
|
// Can an entry be erased or disabled ?
|
||||||
$iserasable=1;$canbedisabled=1;$canbemodified=1; // true by default
|
$iserasable=1;$canbedisabled=1;$canbemodified=1; // true by default
|
||||||
if (isset($obj->code) && $id != 10)
|
if (isset($obj->code) && $id != 10) {
|
||||||
{
|
if (($obj->code == '0' || $obj->code == '' || preg_match('/unknown/i', $obj->code))) {
|
||||||
if (($obj->code == '0' || $obj->code == '' || preg_match('/unknown/i',$obj->code))) { $iserasable = 0; $canbedisabled = 0; }
|
$iserasable = 0;
|
||||||
else if ($obj->code == 'RECEP') { $iserasable = 0; $canbedisabled = 0; }
|
$canbedisabled = 0;
|
||||||
else if ($obj->code == 'EF0') { $iserasable = 0; $canbedisabled = 0; }
|
} elseif ($obj->code == 'RECEP') {
|
||||||
|
$iserasable = 0;
|
||||||
|
$canbedisabled = 0;
|
||||||
|
} elseif ($obj->code == 'EF0') {
|
||||||
|
$iserasable = 0;
|
||||||
|
$canbedisabled = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$canbemodified=$iserasable;
|
$canbemodified=$iserasable;
|
||||||
@ -641,19 +654,19 @@ if ($id)
|
|||||||
$url.='&';
|
$url.='&';
|
||||||
|
|
||||||
// Active
|
// Active
|
||||||
print '<td align="center" class="nowrap">';
|
print '<td class="nowrap center">';
|
||||||
if ($canbedisabled) print '<a href="'.$url.'action='.$acts[$obj->active].'">'.$actl[$obj->active].'</a>';
|
if ($canbedisabled) print '<a href="'.$url.'action='.$acts[$obj->active].'">'.$actl[$obj->active].'</a>';
|
||||||
else print $langs->trans("AlwaysActive");
|
else print $langs->trans("AlwaysActive");
|
||||||
print "</td>";
|
print "</td>";
|
||||||
|
|
||||||
// Modify link
|
// Modify link
|
||||||
if ($canbemodified) print '<td align="center"><a class="reposition" href="'.$url.'action=edit">'.img_edit().'</a></td>';
|
if ($canbemodified) print '<td class="center"><a class="reposition" href="'.$url.'action=edit">'.img_edit().'</a></td>';
|
||||||
else print '<td> </td>';
|
else print '<td> </td>';
|
||||||
|
|
||||||
// Delete link
|
// Delete link
|
||||||
if ($iserasable)
|
if ($iserasable)
|
||||||
{
|
{
|
||||||
print '<td align="center">';
|
print '<td class="center">';
|
||||||
if ($user->admin) print '<a href="'.$url.'action=delete">'.img_delete().'</a>';
|
if ($user->admin) print '<a href="'.$url.'action=delete">'.img_delete().'</a>';
|
||||||
//else print '<a href="#">'.img_delete().'</a>'; // Some dictionary can be edited by other profile than admin
|
//else print '<a href="#">'.img_delete().'</a>'; // Some dictionary can be edited by other profile than admin
|
||||||
print '</td>';
|
print '</td>';
|
||||||
@ -690,13 +703,13 @@ $db->close();
|
|||||||
/**
|
/**
|
||||||
* Show fields in insert/edit mode
|
* Show fields in insert/edit mode
|
||||||
*
|
*
|
||||||
* @param array $fieldlist Array of fields
|
* @param array $fieldlist Array of fields
|
||||||
* @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 void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function fieldListJournal($fieldlist, $obj='', $tabname='', $context='')
|
function fieldListJournal($fieldlist, $obj = '', $tabname = '', $context = '')
|
||||||
{
|
{
|
||||||
global $conf,$langs,$db;
|
global $conf,$langs,$db;
|
||||||
global $form, $mysoc;
|
global $form, $mysoc;
|
||||||
@ -712,7 +725,7 @@ function fieldListJournal($fieldlist, $obj='', $tabname='', $context='')
|
|||||||
if ($fieldlist[$field] == 'nature')
|
if ($fieldlist[$field] == 'nature')
|
||||||
{
|
{
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print $form->selectarray('nature', $sourceList,(! empty($obj->{$fieldlist[$field]})?$obj->{$fieldlist[$field]}:''));
|
print $form->selectarray('nature', $sourceList, (! empty($obj->{$fieldlist[$field]})?$obj->{$fieldlist[$field]}:''));
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
elseif ($fieldlist[$field] == 'code' && isset($obj->{$fieldlist[$field]})) {
|
elseif ($fieldlist[$field] == 'code' && isset($obj->{$fieldlist[$field]})) {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2016 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2013-2019 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2015 Ari Elbaz (elarifr) <github@accedinfo.com>
|
* Copyright (C) 2015 Ari Elbaz (elarifr) <github@accedinfo.com>
|
||||||
@ -65,10 +65,12 @@ $accounting_product_mode = GETPOST('accounting_product_mode', 'alpha');
|
|||||||
$btn_changeaccount = GETPOST('changeaccount', 'alpha');
|
$btn_changeaccount = GETPOST('changeaccount', 'alpha');
|
||||||
$btn_changetype = GETPOST('changetype', 'alpha');
|
$btn_changetype = GETPOST('changetype', 'alpha');
|
||||||
|
|
||||||
$limit = GETPOST('limit','int')?GETPOST('limit','int'):(empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION)?$conf->liste_limit:$conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION);
|
if (empty($accounting_product_mode)) $accounting_product_mode='ACCOUNTANCY_SELL';
|
||||||
$sortfield = GETPOST("sortfield",'alpha');
|
|
||||||
$sortorder = GETPOST("sortorder",'alpha');
|
$limit = GETPOST('limit', 'int')?GETPOST('limit', 'int'):(empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION)?$conf->liste_limit:$conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION);
|
||||||
$page = GETPOST("page",'int');
|
$sortfield = GETPOST("sortfield", 'alpha');
|
||||||
|
$sortorder = GETPOST("sortorder", 'alpha');
|
||||||
|
$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;
|
||||||
@ -85,15 +87,15 @@ $arrayfields=array();
|
|||||||
* Actions
|
* 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=''; }
|
||||||
|
|
||||||
$parameters=array();
|
$parameters=array();
|
||||||
$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
|
$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 ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||||
|
|
||||||
// Purge search criteria
|
// Purge search criteria
|
||||||
if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') || GETPOST('button_removefilter','alpha')) // All test are required to be compatible with all browsers
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) // All test are required to be compatible with all browsers
|
||||||
{
|
{
|
||||||
$search_ref = '';
|
$search_ref = '';
|
||||||
$search_label = '';
|
$search_label = '';
|
||||||
@ -109,11 +111,11 @@ if ($action == 'update') {
|
|||||||
|
|
||||||
$accounting_product_modes = array (
|
$accounting_product_modes = array (
|
||||||
'ACCOUNTANCY_SELL',
|
'ACCOUNTANCY_SELL',
|
||||||
|
'ACCOUNTANCY_SELL_INTRA',
|
||||||
|
'ACCOUNTANCY_SELL_EXPORT',
|
||||||
'ACCOUNTANCY_BUY'
|
'ACCOUNTANCY_BUY'
|
||||||
);
|
);
|
||||||
|
|
||||||
$accounting_product_mode = GETPOST('accounting_product_mode', 'alpha');
|
|
||||||
|
|
||||||
if (in_array($accounting_product_mode, $accounting_product_modes)) {
|
if (in_array($accounting_product_mode, $accounting_product_modes)) {
|
||||||
|
|
||||||
if (! dolibarr_set_const($db, 'ACCOUNTING_PRODUCT_MODE', $accounting_product_mode, 'chaine', 0, '', $conf->entity)) {
|
if (! dolibarr_set_const($db, 'ACCOUNTING_PRODUCT_MODE', $accounting_product_mode, 'chaine', 0, '', $conf->entity)) {
|
||||||
@ -134,7 +136,7 @@ if ($action == 'update') {
|
|||||||
$arrayofdifferentselectedvalues = array();
|
$arrayofdifferentselectedvalues = array();
|
||||||
|
|
||||||
$cpt = 0; $ok = 0; $ko = 0;
|
$cpt = 0; $ok = 0; $ko = 0;
|
||||||
foreach ( $chk_prod as $productid )
|
foreach ($chk_prod as $productid)
|
||||||
{
|
{
|
||||||
$accounting_account_id = GETPOST('codeventil_' . $productid);
|
$accounting_account_id = GETPOST('codeventil_' . $productid);
|
||||||
|
|
||||||
@ -158,6 +160,12 @@ if ($action == 'update') {
|
|||||||
if ($accounting_product_mode == 'ACCOUNTANCY_SELL') {
|
if ($accounting_product_mode == 'ACCOUNTANCY_SELL') {
|
||||||
$sql .= " SET accountancy_code_sell = " . $accounting->account_number;
|
$sql .= " SET accountancy_code_sell = " . $accounting->account_number;
|
||||||
}
|
}
|
||||||
|
if ($accounting_product_mode == 'ACCOUNTANCY_SELL_INTRA') {
|
||||||
|
$sql .= " SET accountancy_code_sell_intra = " . $accounting->account_number;
|
||||||
|
}
|
||||||
|
if ($accounting_product_mode == 'ACCOUNTANCY_SELL_EXPORT') {
|
||||||
|
$sql .= " SET accountancy_code_sell_export = " . $accounting->account_number;
|
||||||
|
}
|
||||||
$sql .= " WHERE rowid = " . $productid;
|
$sql .= " WHERE rowid = " . $productid;
|
||||||
|
|
||||||
dol_syslog("/accountancy/admin/productaccount.php sql=" . $sql, LOG_DEBUG);
|
dol_syslog("/accountancy/admin/productaccount.php sql=" . $sql, LOG_DEBUG);
|
||||||
@ -188,20 +196,24 @@ if ($action == 'update') {
|
|||||||
|
|
||||||
$form = new FormAccounting($db);
|
$form = new FormAccounting($db);
|
||||||
|
|
||||||
// Defaut AccountingAccount RowId Product / Service
|
// Default AccountingAccount RowId Product / Service
|
||||||
// at this time ACCOUNTING_SERVICE_SOLD_ACCOUNT & ACCOUNTING_PRODUCT_SOLD_ACCOUNT are account number not accountingacount rowid
|
// at this time ACCOUNTING_SERVICE_SOLD_ACCOUNT & ACCOUNTING_PRODUCT_SOLD_ACCOUNT are account number not accountingacount rowid
|
||||||
// so we need to get those default value rowid first
|
// so we need to get those default value rowid first
|
||||||
$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 already exists accountaccount rowid.....
|
||||||
$aarowid_servbuy = $accounting->fetch('', $conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT, 1);
|
$aarowid_servbuy = $accounting->fetch('', $conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT, 1);
|
||||||
$aarowid_prodbuy = $accounting->fetch('', $conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT, 1);
|
$aarowid_prodbuy = $accounting->fetch('', $conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT, 1);
|
||||||
$aarowid_servsell = $accounting->fetch('', $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT, 1);
|
$aarowid_servsell = $accounting->fetch('', $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT, 1);
|
||||||
$aarowid_prodsell = $accounting->fetch('', $conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT, 1);
|
$aarowid_prodsell = $accounting->fetch('', $conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT, 1);
|
||||||
|
$aarowid_prodsell_intra = $accounting->fetch('', $conf->global->ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT, 1);
|
||||||
|
$aarowid_prodsell_export = $accounting->fetch('', $conf->global->ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT, 1);
|
||||||
|
|
||||||
$aacompta_servbuy = (! empty($conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT : $langs->trans("CodeNotDef"));
|
$aacompta_servbuy = (! empty($conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT : $langs->trans("CodeNotDef"));
|
||||||
$aacompta_prodbuy = (! empty($conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT : $langs->trans("CodeNotDef"));
|
$aacompta_prodbuy = (! empty($conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT : $langs->trans("CodeNotDef"));
|
||||||
$aacompta_servsell = (! empty($conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT : $langs->trans("CodeNotDef"));
|
$aacompta_servsell = (! empty($conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT : $langs->trans("CodeNotDef"));
|
||||||
$aacompta_prodsell = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT : $langs->trans("CodeNotDef"));
|
$aacompta_prodsell = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT : $langs->trans("CodeNotDef"));
|
||||||
|
$aacompta_prodsell_intra = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT : $langs->trans("CodeNotDef"));
|
||||||
|
$aacompta_prodsell_export = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT : $langs->trans("CodeNotDef"));
|
||||||
|
|
||||||
llxHeader('', $langs->trans("ProductsBinding"));
|
llxHeader('', $langs->trans("ProductsBinding"));
|
||||||
|
|
||||||
@ -209,25 +221,43 @@ $pcgverid = $conf->global->CHARTOFACCOUNTS;
|
|||||||
$pcgvercode = dol_getIdFromCode($db, $pcgverid, 'accounting_system', 'rowid', 'pcg_version');
|
$pcgvercode = dol_getIdFromCode($db, $pcgverid, 'accounting_system', 'rowid', 'pcg_version');
|
||||||
if (empty($pcgvercode)) $pcgvercode=$pcgverid;
|
if (empty($pcgvercode)) $pcgvercode=$pcgverid;
|
||||||
|
|
||||||
$sql = "SELECT p.rowid, p.ref, p.label, p.description, p.tosell, p.tobuy, p.accountancy_code_sell, p.accountancy_code_buy, p.tms, p.fk_product_type as product_type,";
|
$sql = "SELECT p.rowid, p.ref, p.label, p.description, p.tosell, p.tobuy, p.accountancy_code_sell, p.accountancy_code_sell_intra, p.accountancy_code_sell_export, p.accountancy_code_buy, p.tms, p.fk_product_type as product_type,";
|
||||||
$sql.= " aa.rowid as aaid";
|
$sql.= " aa.rowid as aaid";
|
||||||
$sql.= " FROM " . MAIN_DB_PREFIX . "product as p";
|
$sql.= " FROM " . MAIN_DB_PREFIX . "product as p";
|
||||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON";
|
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON";
|
||||||
if ($accounting_product_mode == 'ACCOUNTANCY_BUY') {
|
if ($accounting_product_mode == 'ACCOUNTANCY_BUY') {
|
||||||
$sql.=" p.accountancy_code_buy = aa.account_number AND aa.fk_pcg_version = '" . $pcgvercode . "'";
|
$sql.=" p.accountancy_code_buy = aa.account_number AND aa.fk_pcg_version = '" . $pcgvercode . "'";
|
||||||
}
|
}
|
||||||
else
|
elseif ($accounting_product_mode == 'ACCOUNTANCY_SELL')
|
||||||
{
|
{
|
||||||
$sql.=" p.accountancy_code_sell = aa.account_number AND aa.fk_pcg_version = '" . $pcgvercode . "'";
|
$sql.=" p.accountancy_code_sell = aa.account_number AND aa.fk_pcg_version = '" . $pcgvercode . "'";
|
||||||
}
|
}
|
||||||
|
elseif ($accounting_product_mode == 'ACCOUNTANCY_SELL_INTRA')
|
||||||
|
{
|
||||||
|
$sql.=" p.accountancy_code_sell_intra = aa.account_number AND aa.fk_pcg_version = '" . $pcgvercode . "'";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$sql.=" p.accountancy_code_sell_intra = aa.account_number AND aa.fk_pcg_version = '" . $pcgvercode . "'";
|
||||||
|
}
|
||||||
$sql.= ' WHERE p.entity IN ('.getEntity('product').')';
|
$sql.= ' WHERE p.entity IN ('.getEntity('product').')';
|
||||||
if ($accounting_product_mode == 'ACCOUNTANCY_BUY') {
|
if ($accounting_product_mode == 'ACCOUNTANCY_BUY') {
|
||||||
if (strlen(trim($search_current_account))) {
|
if (strlen(trim($search_current_account))) {
|
||||||
$sql .= natural_search("p.accountancy_code_buy",$search_current_account);
|
$sql .= natural_search("p.accountancy_code_buy", $search_current_account);
|
||||||
}
|
}
|
||||||
} else {
|
} elseif ($accounting_product_mode == 'ACCOUNTANCY_SELL') {
|
||||||
if (strlen(trim($search_current_account))) {
|
if (strlen(trim($search_current_account))) {
|
||||||
$sql .= natural_search("p.accountancy_code_sell",$search_current_account);
|
$sql .= natural_search("p.accountancy_code_sell", $search_current_account);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif ($accounting_product_mode == 'ACCOUNTANCY_SELL_INTRA') {
|
||||||
|
if (strlen(trim($search_current_account))) {
|
||||||
|
$sql .= natural_search("p.accountancy_code_sell_intra", $search_current_account);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (strlen(trim($search_current_account))) {
|
||||||
|
$sql .= natural_search("p.accountancy_code_sell_export", $search_current_account);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($search_current_account_valid == 'withoutvalidaccount')
|
if ($search_current_account_valid == 'withoutvalidaccount')
|
||||||
@ -240,13 +270,13 @@ if ($search_current_account_valid == 'withvalidaccount')
|
|||||||
}
|
}
|
||||||
// Add search filter like
|
// Add search filter like
|
||||||
if (strlen(trim($search_ref))) {
|
if (strlen(trim($search_ref))) {
|
||||||
$sql .= natural_search("p.ref",$search_ref);
|
$sql .= natural_search("p.ref", $search_ref);
|
||||||
}
|
}
|
||||||
if (strlen(trim($search_label))) {
|
if (strlen(trim($search_label))) {
|
||||||
$sql .= natural_search("p.label",$search_label);
|
$sql .= natural_search("p.label", $search_label);
|
||||||
}
|
}
|
||||||
if (strlen(trim($search_desc))) {
|
if (strlen(trim($search_desc))) {
|
||||||
$sql .= natural_search("p.description",$search_desc);
|
$sql .= natural_search("p.description", $search_desc);
|
||||||
}
|
}
|
||||||
$sql .= $db->order($sortfield, $sortorder);
|
$sql .= $db->order($sortfield, $sortorder);
|
||||||
|
|
||||||
@ -279,6 +309,7 @@ if ($result)
|
|||||||
if ($search_desc > 0) $param.="&search_desc=".urlencode($search_desc);
|
if ($search_desc > 0) $param.="&search_desc=".urlencode($search_desc);
|
||||||
if ($search_current_account > 0) $param.="&search_current_account=".urlencode($search_current_account);
|
if ($search_current_account > 0) $param.="&search_current_account=".urlencode($search_current_account);
|
||||||
if ($search_current_account_valid && $search_current_account_valid != '-1') $param.="&search_current_account_valid=".urlencode($search_current_account_valid);
|
if ($search_current_account_valid && $search_current_account_valid != '-1') $param.="&search_current_account_valid=".urlencode($search_current_account_valid);
|
||||||
|
if ($accounting_product_mode) $param.='&accounting_product_mode='.urlencode($accounting_product_mode);
|
||||||
|
|
||||||
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="post">';
|
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="post">';
|
||||||
if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
|
if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
|
||||||
@ -300,14 +331,23 @@ if ($result)
|
|||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td>' . $langs->trans('Options') . '</td><td>' . $langs->trans('Description') . '</td>';
|
print '<td>' . $langs->trans('Options') . '</td><td>' . $langs->trans('Description') . '</td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
print '<tr class="oddeven"><td class="titlefield"><input type="radio" name="accounting_product_mode" value="ACCOUNTANCY_SELL"' . ($accounting_product_mode != 'ACCOUNTANCY_BUY' ? ' checked' : '') . '> ' . $langs->trans('OptionModeProductSell') . '</td>';
|
print '<tr class="oddeven"><td class="titlefield"><input type="radio" name="accounting_product_mode" value="ACCOUNTANCY_SELL"' . ($accounting_product_mode == 'ACCOUNTANCY_SELL' ? ' checked' : '') . '> ' . $langs->trans('OptionModeProductSell') . '</td>';
|
||||||
print '<td>'.$langs->trans('OptionModeProductSellDesc');
|
print '<td>'.$langs->trans('OptionModeProductSellDesc');
|
||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
if ($mysoc->isInEEC())
|
||||||
|
{
|
||||||
|
print '<tr class="oddeven"><td class="titlefield"><input type="radio" name="accounting_product_mode" value="ACCOUNTANCY_SELL_INTRA"' . ($accounting_product_mode == 'ACCOUNTANCY_SELL_INTRA' ? ' checked' : '') . '> ' . $langs->trans('OptionModeProductSellIntra') . '</td>';
|
||||||
|
print '<td>'.$langs->trans('OptionModeProductSellIntraDesc');
|
||||||
|
print "</td></tr>\n";
|
||||||
|
}
|
||||||
|
print '<tr class="oddeven"><td class="titlefield"><input type="radio" name="accounting_product_mode" value="ACCOUNTANCY_SELL_EXPORT"' . ($accounting_product_mode == 'ACCOUNTANCY_SELL_EXPORT' ? ' checked' : '') . '> ' . $langs->trans('OptionModeProductSellExport') . '</td>';
|
||||||
|
print '<td>'.$langs->trans('OptionModeProductSellExportDesc');
|
||||||
|
print "</td></tr>\n";
|
||||||
print '<tr class="oddeven"><td class="titlefield"><input type="radio" name="accounting_product_mode" value="ACCOUNTANCY_BUY"' . ($accounting_product_mode == 'ACCOUNTANCY_BUY' ? ' checked' : '') . '> ' . $langs->trans('OptionModeProductBuy') . '</td>';
|
print '<tr class="oddeven"><td class="titlefield"><input type="radio" name="accounting_product_mode" value="ACCOUNTANCY_BUY"' . ($accounting_product_mode == 'ACCOUNTANCY_BUY' ? ' checked' : '') . '> ' . $langs->trans('OptionModeProductBuy') . '</td>';
|
||||||
print '<td>'.$langs->trans('OptionModeProductBuyDesc')."</td></tr>\n";
|
print '<td>'.$langs->trans('OptionModeProductBuyDesc')."</td></tr>\n";
|
||||||
print "</table>\n";
|
print "</table>\n";
|
||||||
|
|
||||||
print '<div align="center"><input type="submit" class="button" value="' . $langs->trans('Refresh') . '" name="changetype"></div>';
|
print '<div class="center"><input type="submit" class="button" value="' . $langs->trans('Refresh') . '" name="changetype"></div>';
|
||||||
|
|
||||||
print "<br>\n";
|
print "<br>\n";
|
||||||
|
|
||||||
@ -317,8 +357,11 @@ if ($result)
|
|||||||
$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
|
$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
|
||||||
$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields
|
$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields
|
||||||
|
|
||||||
|
$buttonsave = '<input type="submit" class="button" id="changeaccount" name="changeaccount" value="' . $langs->trans("Save") . '">';
|
||||||
|
//print '<br><div class="center">'.$buttonsave.'</div>';
|
||||||
|
|
||||||
$texte=$langs->trans("ListOfProductsServices");
|
$texte=$langs->trans("ListOfProductsServices");
|
||||||
print_barre_liste($texte, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, '', 0, '', '', $limit);
|
print_barre_liste($texte, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $buttonsave, $num, $nbtotalofrecords, '', 0, '', '', $limit);
|
||||||
|
|
||||||
print '<div class="div-table-responsive">';
|
print '<div class="div-table-responsive">';
|
||||||
print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">';
|
print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">';
|
||||||
@ -328,17 +371,17 @@ if ($result)
|
|||||||
print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_label" value="' . dol_escape_htmltag($search_label) . '"></td>';
|
print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_label" value="' . dol_escape_htmltag($search_label) . '"></td>';
|
||||||
if (! empty($conf->global->ACCOUNTANCY_SHOW_PROD_DESC)) print '<td class="liste_titre"><input type="text" class="flat" size="20" name="search_desc" value="' . dol_escape_htmltag($search_desc) . '"></td>';
|
if (! empty($conf->global->ACCOUNTANCY_SHOW_PROD_DESC)) print '<td class="liste_titre"><input type="text" class="flat" size="20" name="search_desc" value="' . dol_escape_htmltag($search_desc) . '"></td>';
|
||||||
// On sell
|
// On sell
|
||||||
if ($accounting_product_mode == 'ACCOUNTANCY_SELL') print '<td class="liste_titre"></td>';
|
if ($accounting_product_mode == 'ACCOUNTANCY_SELL' || $accounting_product_mode == 'ACCOUNTANCY_SELL_INTRA' || $accounting_product_mode == 'ACCOUNTANCY_SELL_EXPORT') print '<td class="liste_titre"></td>';
|
||||||
// On buy
|
// On buy
|
||||||
if ($accounting_product_mode == 'ACCOUNTANCY_BUY') print '<td class="liste_titre"></td>';
|
if ($accounting_product_mode == 'ACCOUNTANCY_BUY') print '<td class="liste_titre"></td>';
|
||||||
// Current account
|
// Current account
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
print '<input type="text" class="flat" size="6" name="search_current_account" value="' . dol_escape_htmltag($search_current_account) . '">';
|
print '<input type="text" class="flat" size="6" name="search_current_account" id="search_current_account" value="' . dol_escape_htmltag($search_current_account) . '">';
|
||||||
$listofvals=array('withoutvalidaccount'=>$langs->trans("WithoutValidAccount"), 'withvalidaccount'=>$langs->trans("WithValidAccount"));
|
$listofvals=array('withoutvalidaccount'=>$langs->trans("WithoutValidAccount"), 'withvalidaccount'=>$langs->trans("WithValidAccount"));
|
||||||
print ' '.$langs->trans("or").' '.$form->selectarray('search_current_account_valid', $listofvals, $search_current_account_valid, 1);
|
print ' '.$langs->trans("or").' '.$form->selectarray('search_current_account_valid', $listofvals, $search_current_account_valid, 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="liste_titre"> </td>';
|
print '<td class="liste_titre"> </td>';
|
||||||
print '<td align="center" class="liste_titre">';
|
print '<td class="center liste_titre">';
|
||||||
$searchpicto=$form->showFilterButtons();
|
$searchpicto=$form->showFilterButtons();
|
||||||
print $searchpicto;
|
print $searchpicto;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
@ -348,20 +391,29 @@ if ($result)
|
|||||||
print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder);
|
print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Label", $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder);
|
print_liste_field_titre("Label", $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder);
|
||||||
if (! empty($conf->global->ACCOUNTANCY_SHOW_PROD_DESC)) print_liste_field_titre("Description", $_SERVER["PHP_SELF"], "p.description", "", $param, '', $sortfield, $sortorder);
|
if (! empty($conf->global->ACCOUNTANCY_SHOW_PROD_DESC)) print_liste_field_titre("Description", $_SERVER["PHP_SELF"], "p.description", "", $param, '', $sortfield, $sortorder);
|
||||||
if ($accounting_product_mode == 'ACCOUNTANCY_SELL') print_liste_field_titre("OnSell", $_SERVER["PHP_SELF"], "p.tosell", "", $param, 'align="center"', $sortfield, $sortorder);
|
if ($accounting_product_mode == 'ACCOUNTANCY_SELL') {
|
||||||
if ($accounting_product_mode == 'ACCOUNTANCY_BUY') print_liste_field_titre("OnBuy", $_SERVER["PHP_SELF"], "p.tobuy", "", $param, 'align="center"', $sortfield, $sortorder);
|
print_liste_field_titre("OnSell", $_SERVER["PHP_SELF"], "p.tosell", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
if ($accounting_product_mode == 'ACCOUNTANCY_BUY') $fieldtosortaccount="p.accountancy_code_buy";
|
$fieldtosortaccount="p.accountancy_code_sell";
|
||||||
else $fieldtosortaccount="p.accountancy_code_sell";
|
} elseif ($accounting_product_mode == 'ACCOUNTANCY_SELL_INTRA') {
|
||||||
|
print_liste_field_titre("OnSell", $_SERVER["PHP_SELF"], "p.tosell", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
|
$fieldtosortaccount="p.accountancy_code_sell_intra";
|
||||||
|
} elseif ($accounting_product_mode == 'ACCOUNTANCY_SELL_EXPORT') {
|
||||||
|
print_liste_field_titre("OnSell", $_SERVER["PHP_SELF"], "p.tosell", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
|
$fieldtosortaccount="p.accountancy_code_sell_export";
|
||||||
|
} else {
|
||||||
|
if ($accounting_product_mode == 'ACCOUNTANCY_BUY') print_liste_field_titre("OnBuy", $_SERVER["PHP_SELF"], "p.tobuy", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
|
$fieldtosortaccount="p.accountancy_code_buy";
|
||||||
|
}
|
||||||
print_liste_field_titre("CurrentDedicatedAccountingAccount", $_SERVER["PHP_SELF"], $fieldtosortaccount, "", $param, '', $sortfield, $sortorder);
|
print_liste_field_titre("CurrentDedicatedAccountingAccount", $_SERVER["PHP_SELF"], $fieldtosortaccount, "", $param, '', $sortfield, $sortorder);
|
||||||
print_liste_field_titre("AssignDedicatedAccountingAccount");
|
print_liste_field_titre("AssignDedicatedAccountingAccount");
|
||||||
$clickpitco=$form->showCheckAddButtons('checkforselect', 1);
|
$clickpitco=$form->showCheckAddButtons('checkforselect', 1);
|
||||||
print_liste_field_titre($clickpitco, '', '', '', '', 'align="center"');
|
print_liste_field_titre($clickpitco, '', '', '', '', '', '', '', 'center ');
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
$product_static = new Product($db);
|
$product_static = new Product($db);
|
||||||
|
|
||||||
$i=0;
|
$i=0;
|
||||||
while ($i < min($num,$limit))
|
while ($i < min($num, $limit))
|
||||||
{
|
{
|
||||||
$obj = $db->fetch_object($result);
|
$obj = $db->fetch_object($result);
|
||||||
|
|
||||||
@ -374,10 +426,16 @@ if ($result)
|
|||||||
$product_static->status = $obj->tosell;
|
$product_static->status = $obj->tosell;
|
||||||
$product_static->status_buy = $obj->tobuy;
|
$product_static->status_buy = $obj->tobuy;
|
||||||
|
|
||||||
if ($obj->product_type == 0) {
|
if ($obj->product_type == 0 && $accounting_product_mode == 'ACCOUNTANCY_SELL') {
|
||||||
$compta_prodsell = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT : $langs->trans("CodeNotDef"));
|
$compta_prodsell = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT : $langs->trans("CodeNotDef"));
|
||||||
$compta_prodsell_id = $aarowid_prodsell;
|
$compta_prodsell_id = $aarowid_prodsell;
|
||||||
} else {
|
} elseif ($obj->product_type == 0 && $accounting_product_mode == 'ACCOUNTANCY_SELL_INTRA') {
|
||||||
|
$compta_prodsell = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT : $langs->trans("CodeNotDef"));
|
||||||
|
$compta_prodsell_id = $aarowid_prodsell_intra;
|
||||||
|
} elseif ($obj->product_type == 0 && $accounting_product_mode == 'ACCOUNTANCY_SELL_EXPORT') {
|
||||||
|
$compta_prodsell = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT : $langs->trans("CodeNotDef"));
|
||||||
|
$compta_prodsell_id = $aarowid_prodsell_export;
|
||||||
|
} else {
|
||||||
$compta_prodsell = (! empty($conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT : $langs->trans("CodeNotDef"));
|
$compta_prodsell = (! empty($conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT : $langs->trans("CodeNotDef"));
|
||||||
$compta_prodsell_id = $aarowid_servsell;
|
$compta_prodsell_id = $aarowid_servsell;
|
||||||
}
|
}
|
||||||
@ -396,50 +454,54 @@ if ($result)
|
|||||||
print $product_static->getNomUrl(1);
|
print $product_static->getNomUrl(1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
print '<td align="left">'.$obj->label.'</td>';
|
print '<td class="left">'.$obj->label.'</td>';
|
||||||
|
|
||||||
if (! empty($conf->global->ACCOUNTANCY_SHOW_PROD_DESC))
|
if (! empty($conf->global->ACCOUNTANCY_SHOW_PROD_DESC))
|
||||||
{
|
{
|
||||||
// TODO ADJUST DESCRIPTION SIZE
|
// TODO ADJUST DESCRIPTION SIZE
|
||||||
// print '<td align="left">' . $obj->description . '</td>';
|
// print '<td class="left">' . $obj->description . '</td>';
|
||||||
// TODO: we shoul set a user defined value to adjust user square / wide screen size
|
// TODO: we shoul set a user defined value to adjust user square / wide screen size
|
||||||
$trunclengh = empty($conf->global->ACCOUNTING_LENGTH_DESCRIPTION) ? 32 : $conf->global->ACCOUNTING_LENGTH_DESCRIPTION;
|
$trunclengh = empty($conf->global->ACCOUNTING_LENGTH_DESCRIPTION) ? 32 : $conf->global->ACCOUNTING_LENGTH_DESCRIPTION;
|
||||||
print '<td style="' . $code_sell_p_l_differ . '">' . nl2br(dol_trunc($obj->description, $trunclengh)) . '</td>';
|
print '<td style="' . $code_sell_p_l_differ . '">' . nl2br(dol_trunc($obj->description, $trunclengh)) . '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($accounting_product_mode == 'ACCOUNTANCY_SELL')
|
if ($accounting_product_mode == 'ACCOUNTANCY_SELL' || $accounting_product_mode == 'ACCOUNTANCY_SELL_INTRA' || $accounting_product_mode == 'ACCOUNTANCY_SELL_EXPORT')
|
||||||
print '<td align="center">'.$product_static->getLibStatut(3, 0).'</td>';
|
print '<td class="center">'.$product_static->getLibStatut(3, 0).'</td>';
|
||||||
|
|
||||||
if ($accounting_product_mode == 'ACCOUNTANCY_BUY')
|
if ($accounting_product_mode == 'ACCOUNTANCY_BUY')
|
||||||
print '<td align="center">'.$product_static->getLibStatut(3, 1).'</td>';
|
print '<td class="center">'.$product_static->getLibStatut(3, 1).'</td>';
|
||||||
|
|
||||||
// Current accounting account
|
// Current accounting account
|
||||||
print '<td align="left">';
|
print '<td class="left">';
|
||||||
if ($accounting_product_mode == 'ACCOUNTANCY_BUY') {
|
if ($accounting_product_mode == 'ACCOUNTANCY_BUY') {
|
||||||
print length_accountg($obj->accountancy_code_buy);
|
print length_accountg($obj->accountancy_code_buy);
|
||||||
if ($obj->accountancy_code_buy && empty($obj->aaid)) print ' '.img_warning($langs->trans("ValueNotIntoChartOfAccount"));
|
if ($obj->accountancy_code_buy && empty($obj->aaid)) print ' '.img_warning($langs->trans("ValueNotIntoChartOfAccount"));
|
||||||
}
|
} elseif ($accounting_product_mode == 'ACCOUNTANCY_SELL') {
|
||||||
else
|
print length_accountg($obj->accountancy_code_sell);
|
||||||
{
|
if ($obj->accountancy_code_sell && empty($obj->aaid)) print ' '.img_warning($langs->trans("ValueNotIntoChartOfAccount"));
|
||||||
print length_accountg($obj->accountancy_code_sell);
|
} elseif ($accounting_product_mode == 'ACCOUNTANCY_SELL_INTRA') {
|
||||||
if ($obj->accountancy_code_sell && empty($obj->aaid)) print ' '.img_warning($langs->trans("ValueNotIntoChartOfAccount"));
|
print length_accountg($obj->accountancy_code_sell_intra);
|
||||||
}
|
if ($obj->accountancy_code_sell_intra && empty($obj->aaid)) print ' '.img_warning($langs->trans("ValueNotIntoChartOfAccount"));
|
||||||
|
} else {
|
||||||
|
print length_accountg($obj->accountancy_code_sell_export);
|
||||||
|
if ($obj->accountancy_code_sell_export && empty($obj->aaid)) print ' '.img_warning($langs->trans("ValueNotIntoChartOfAccount"));
|
||||||
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
// Dedicated account
|
// Dedicated account
|
||||||
$defaultvalue='';
|
$defaultvalue='';
|
||||||
if ($accounting_product_mode == 'ACCOUNTANCY_BUY') {
|
if ($accounting_product_mode == 'ACCOUNTANCY_BUY') {
|
||||||
// Accounting account buy
|
// Accounting account buy
|
||||||
print '<td align="left">';
|
print '<td class="left">';
|
||||||
//$defaultvalue=GETPOST('codeventil_' . $product_static->id,'alpha'); This is id and we need a code
|
//$defaultvalue=GETPOST('codeventil_' . $product_static->id,'alpha'); This is id and we need a code
|
||||||
if (empty($defaultvalue)) $defaultvalue=$compta_prodbuy;
|
if (empty($defaultvalue)) $defaultvalue=$compta_prodbuy;
|
||||||
$codesell=length_accountg($obj->accountancy_code_buy);
|
$codesell=length_accountg($obj->accountancy_code_buy);
|
||||||
if (! empty($obj->aaid)) $defaultvalue = ''; // Do not suggest default new value is code is already valid
|
if (! empty($obj->aaid)) $defaultvalue = ''; // Do not suggest default new value is code is already valid
|
||||||
print $form->select_account($defaultvalue, 'codeventil_' . $product_static->id, 1, array(), 1);
|
print $form->select_account($defaultvalue, 'codeventil_' . $product_static->id, 1, array(), 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
} else {
|
} elseif ($accounting_product_mode == 'ACCOUNTANCY_SELL') {
|
||||||
// Accounting account sell
|
// Accounting account sell
|
||||||
print '<td align="left">';
|
print '<td class="left">';
|
||||||
//$defaultvalue=GETPOST('codeventil_' . $product_static->id,'alpha'); This is id and we need a code
|
//$defaultvalue=GETPOST('codeventil_' . $product_static->id,'alpha'); This is id and we need a code
|
||||||
if (empty($defaultvalue)) $defaultvalue=$compta_prodsell;
|
if (empty($defaultvalue)) $defaultvalue=$compta_prodsell;
|
||||||
$codesell=length_accountg($obj->accountancy_code_sell);
|
$codesell=length_accountg($obj->accountancy_code_sell);
|
||||||
@ -447,10 +509,29 @@ if ($result)
|
|||||||
if (! empty($obj->aaid)) $defaultvalue = ''; // Do not suggest default new value is code is already valid
|
if (! empty($obj->aaid)) $defaultvalue = ''; // Do not suggest default new value is code is already valid
|
||||||
print $form->select_account($defaultvalue, 'codeventil_' . $product_static->id, 1, array(), 1);
|
print $form->select_account($defaultvalue, 'codeventil_' . $product_static->id, 1, array(), 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
} elseif ($accounting_product_mode == 'ACCOUNTANCY_SELL_INTRA') {
|
||||||
|
// Accounting account sell intra (In EEC)
|
||||||
|
print '<td class="left">';
|
||||||
|
//$defaultvalue=GETPOST('codeventil_' . $product_static->id,'alpha'); This is id and we need a code
|
||||||
|
if (empty($defaultvalue)) $defaultvalue=$compta_prodsell;
|
||||||
|
$codesell=length_accountg($obj->accountancy_code_sell_intra);
|
||||||
|
//var_dump($defaultvalue.' - '.$codesell.' - '.$compta_prodsell);
|
||||||
|
if (! empty($obj->aaid)) $defaultvalue = ''; // Do not suggest default new value is code is already valid
|
||||||
|
print $form->select_account($defaultvalue, 'codeventil_' . $product_static->id, 1, array(), 1);
|
||||||
|
print '</td>';
|
||||||
|
} else {
|
||||||
|
// Accounting account sell export (Out of EEC)
|
||||||
|
print '<td class="left">';
|
||||||
|
//$defaultvalue=GETPOST('codeventil_' . $product_static->id,'alpha'); This is id and we need a code
|
||||||
|
if (empty($defaultvalue)) $defaultvalue=$compta_prodsell;
|
||||||
|
$codesell=length_accountg($obj->accountancy_code_sell_export);
|
||||||
|
if (! empty($obj->aaid)) $defaultvalue = ''; // Do not suggest default new value is code is already valid
|
||||||
|
print $form->select_account($defaultvalue, 'codeventil_' . $product_static->id, 1, array(), 1);
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
|
||||||
// Checkbox select
|
// Checkbox select
|
||||||
print '<td align="center">';
|
print '<td class="center">';
|
||||||
print '<input type="checkbox" class="checkforselect" name="chk_prod[]" value="' . $obj->rowid . '"/></td>';
|
print '<input type="checkbox" class="checkforselect" name="chk_prod[]" value="' . $obj->rowid . '"/></td>';
|
||||||
print "</tr>";
|
print "</tr>";
|
||||||
$i ++;
|
$i ++;
|
||||||
@ -458,7 +539,6 @@ if ($result)
|
|||||||
print '</table>';
|
print '</table>';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
// 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() {
|
||||||
function init_savebutton()
|
function init_savebutton()
|
||||||
@ -473,20 +553,25 @@ if ($result)
|
|||||||
|
|
||||||
if (atleastoneselected) jQuery("#changeaccount").removeAttr(\'disabled\');
|
if (atleastoneselected) jQuery("#changeaccount").removeAttr(\'disabled\');
|
||||||
else jQuery("#changeaccount").attr(\'disabled\',\'disabled\');
|
else jQuery("#changeaccount").attr(\'disabled\',\'disabled\');
|
||||||
if (atleastoneselected) jQuery("#changeaccount").attr(\'class\',\'butAction\');
|
if (atleastoneselected) jQuery("#changeaccount").attr(\'class\',\'button\');
|
||||||
else jQuery("#changeaccount").attr(\'class\',\'butActionRefused\');
|
else jQuery("#changeaccount").attr(\'class\',\'button\');
|
||||||
}
|
}
|
||||||
jQuery(".checkforselect, #checkallactions").click(function() {
|
jQuery(".checkforselect, #checkallactions").click(function() {
|
||||||
init_savebutton();
|
init_savebutton();
|
||||||
});
|
});
|
||||||
|
|
||||||
init_savebutton();
|
init_savebutton();
|
||||||
|
|
||||||
|
jQuery("#search_current_account").keyup(function() {
|
||||||
|
if (jQuery("#search_current_account").val() != \'\')
|
||||||
|
{
|
||||||
|
console.log("We set a value of account to search "+jQuery("#search_current_account").val()+", so we disable the other search criteria on account");
|
||||||
|
jQuery("#search_current_account_valid").val(-1);
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
</script>';
|
</script>';
|
||||||
|
|
||||||
|
|
||||||
print '<br><div align="center"><input type="submit" class="butAction" id="changeaccount" name="changeaccount" value="' . $langs->trans("Save") . '"></div>';
|
|
||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
|
|
||||||
$db->free($result);
|
$db->free($result);
|
||||||
|
|||||||
@ -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-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2016-2018 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -42,14 +42,14 @@ $page = GETPOST("page");
|
|||||||
$sortorder = GETPOST("sortorder", 'alpha');
|
$sortorder = GETPOST("sortorder", 'alpha');
|
||||||
$sortfield = GETPOST("sortfield", 'alpha');
|
$sortfield = GETPOST("sortfield", 'alpha');
|
||||||
$action = GETPOST('action', 'aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
if (GETPOST("exportcsv",'alpha')) $action = 'export_csv';
|
if (GETPOST("exportcsv", 'alpha')) $action = 'export_csv';
|
||||||
|
|
||||||
// Load variable for pagination
|
// Load variable for pagination
|
||||||
$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 || GETPOST('button_search','alpha') || GETPOST('button_removefilter','alpha') || (empty($toselect) && $massaction === '0')) { $page = 0; } // If $page is not defined, or '' or -1 or if we click on clear filters or if we select empty mass action
|
if (empty($page) || $page == -1 || GETPOST('button_search', 'alpha') || GETPOST('button_removefilter', 'alpha') || (empty($toselect) && $massaction === '0')) { $page = 0; } // If $page is not defined, or '' or -1 or if we click on clear filters or if we select empty mass action
|
||||||
$offset = $limit * $page;
|
$offset = $limit * $page;
|
||||||
$pageprev = $page - 1;
|
$pageprev = $page - 1;
|
||||||
$pagenext = $page + 1;
|
$pagenext = $page + 1;
|
||||||
@ -131,7 +131,7 @@ if (! empty($search_accountancy_code_end)) {
|
|||||||
* Action
|
* Action
|
||||||
*/
|
*/
|
||||||
|
|
||||||
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_accountancy_code_start = '';
|
$search_accountancy_code_start = '';
|
||||||
$search_accountancy_code_end = '';
|
$search_accountancy_code_end = '';
|
||||||
@ -235,7 +235,7 @@ if ($action != 'export_csv')
|
|||||||
print $langs->trans('to');
|
print $langs->trans('to');
|
||||||
print $formaccounting->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array(), 1, 1, '');
|
print $formaccounting->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array(), 1, 1, '');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td align="right" class="liste_titre">';
|
print '<td class="liste_titre right">';
|
||||||
$searchpicto=$form->showFilterAndCheckAddButtons(0);
|
$searchpicto=$form->showFilterAndCheckAddButtons(0);
|
||||||
print $searchpicto;
|
print $searchpicto;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
@ -245,10 +245,10 @@ if ($action != 'export_csv')
|
|||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print_liste_field_titre("AccountAccounting", $_SERVER['PHP_SELF'], "t.numero_compte", "", $param, "", $sortfield, $sortorder);
|
print_liste_field_titre("AccountAccounting", $_SERVER['PHP_SELF'], "t.numero_compte", "", $param, "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Label", $_SERVER['PHP_SELF'], "t.label_operation", "", $param, "", $sortfield, $sortorder);
|
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);
|
print_liste_field_titre("Debit", $_SERVER['PHP_SELF'], "t.debit", "", $param, 'class="right"', $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Credit", $_SERVER['PHP_SELF'], "t.credit", "", $param, 'align="right"', $sortfield, $sortorder);
|
print_liste_field_titre("Credit", $_SERVER['PHP_SELF'], "t.credit", "", $param, 'class="right"', $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Balance", $_SERVER["PHP_SELF"], "", $param, "", 'align="right"', $sortfield, $sortorder);
|
print_liste_field_titre("Balance", $_SERVER["PHP_SELF"], "", $param, "", 'class="right"', $sortfield, $sortorder);
|
||||||
print_liste_field_titre('', $_SERVER["PHP_SELF"], "", $param, "", 'width="60" align="center"', $sortfield, $sortorder);
|
print_liste_field_titre('', $_SERVER["PHP_SELF"], "", $param, "", 'width="60" class="center"', $sortfield, $sortorder);
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
$total_debit = 0;
|
$total_debit = 0;
|
||||||
@ -274,7 +274,7 @@ if ($action != 'export_csv')
|
|||||||
{
|
{
|
||||||
// Affiche un Sous-Total par compte comptable
|
// Affiche un Sous-Total par compte comptable
|
||||||
if ($displayed_account != "") {
|
if ($displayed_account != "") {
|
||||||
print '<tr class="liste_total"><td align="right" colspan="2">' . $langs->trans("SubTotal") . ':</td><td class="nowrap" align="right">' . price($sous_total_debit) . '</td><td class="nowrap" align="right">' . price($sous_total_credit) . '</td><td class="nowrap" align="right">' . price(price2num($sous_total_credit - $sous_total_debit)) . '</td>';
|
print '<tr class="liste_total"><td class="right" colspan="2">' . $langs->trans("SubTotal") . ':</td><td class="nowrap right">' . price($sous_total_debit) . '</td><td class="nowrap right">' . price($sous_total_credit) . '</td><td class="nowrap right">' . price(price2num($sous_total_credit - $sous_total_debit)) . '</td>';
|
||||||
print "<td> </td>\n";
|
print "<td> </td>\n";
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
@ -293,10 +293,10 @@ if ($action != 'export_csv')
|
|||||||
|
|
||||||
print '<td>' . length_accountg($line->numero_compte) . '</td>';
|
print '<td>' . length_accountg($line->numero_compte) . '</td>';
|
||||||
print '<td>' . $description . '</td>';
|
print '<td>' . $description . '</td>';
|
||||||
print '<td align="right">' . price($line->debit) . '</td>';
|
print '<td class="right">' . price($line->debit) . '</td>';
|
||||||
print '<td align="right">' . price($line->credit) . '</td>';
|
print '<td class="right">' . price($line->credit) . '</td>';
|
||||||
print '<td align="right">' . price($line->credit - $line->debit) . '</td>';
|
print '<td class="right">' . price($line->credit - $line->debit) . '</td>';
|
||||||
print '<td align="center">' . $link;
|
print '<td class="center">' . $link;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
@ -305,11 +305,11 @@ if ($action != 'export_csv')
|
|||||||
$sous_total_credit += $line->credit;
|
$sous_total_credit += $line->credit;
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<tr class="liste_total"><td align="right" colspan="2">' . $langs->trans("SubTotal") . ':</td><td class="nowrap" align="right">' . price($sous_total_debit) . '</td><td class="nowrap" align="right">' . price($sous_total_credit) . '</td><td class="nowrap" align="right">' . price(price2num($sous_total_credit - $sous_total_debit)) . '</td>';
|
print '<tr class="liste_total"><td class="right" colspan="2">' . $langs->trans("SubTotal") . ':</td><td class="nowrap right">' . price($sous_total_debit) . '</td><td class="nowrap right">' . price($sous_total_credit) . '</td><td class="nowrap right">' . price(price2num($sous_total_credit - $sous_total_debit)) . '</td>';
|
||||||
print "<td> </td>\n";
|
print "<td> </td>\n";
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr class="liste_total"><td align="right" colspan="2">' . $langs->trans("AccountBalance") . ':</td><td class="nowrap" align="right">' . price($total_debit) . '</td><td class="nowrap" align="right">' . price($total_credit) . '</td><td class="nowrap" align="right">' . price(price2num($total_credit - $total_debit)) . '</td>';
|
print '<tr class="liste_total"><td class="right" colspan="2">' . $langs->trans("AccountBalance") . ':</td><td class="nowrap right">' . price($total_debit) . '</td><td class="nowrap right">' . price($total_credit) . '</td><td class="nowrap right">' . price(price2num($total_credit - $total_debit)) . '</td>';
|
||||||
print "<td> </td>\n";
|
print "<td> </td>\n";
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2014 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2013-2014 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||||
*
|
*
|
||||||
@ -33,7 +33,7 @@ require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php';
|
|||||||
$langs->loadLangs(array("bills","compta","accountancy","other"));
|
$langs->loadLangs(array("bills","compta","accountancy","other"));
|
||||||
|
|
||||||
// Filter
|
// Filter
|
||||||
$year = GETPOST("year",'int');
|
$year = GETPOST("year", 'int');
|
||||||
if ($year == 0) {
|
if ($year == 0) {
|
||||||
$year_current = strftime("%Y", time());
|
$year_current = strftime("%Y", time());
|
||||||
$year_start = $year_current;
|
$year_start = $year_current;
|
||||||
@ -73,19 +73,19 @@ $y = $year_current;
|
|||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td width=150>' . $langs->trans("Label") . '</td>';
|
print '<td width=150>' . $langs->trans("Label") . '</td>';
|
||||||
print '<td align="center">' . $langs->trans("JanuaryMin") . '</td>';
|
print '<td class="center">' . $langs->trans("JanuaryMin") . '</td>';
|
||||||
print '<td align="center">' . $langs->trans("FebruaryMin") . '</td>';
|
print '<td class="center">' . $langs->trans("FebruaryMin") . '</td>';
|
||||||
print '<td align="center">' . $langs->trans("MarchMin") . '</td>';
|
print '<td class="center">' . $langs->trans("MarchMin") . '</td>';
|
||||||
print '<td align="center">' . $langs->trans("AprilMin") . '</td>';
|
print '<td class="center">' . $langs->trans("AprilMin") . '</td>';
|
||||||
print '<td align="center">' . $langs->trans("MayMin") . '</td>';
|
print '<td class="center">' . $langs->trans("MayMin") . '</td>';
|
||||||
print '<td align="center">' . $langs->trans("JuneMin") . '</td>';
|
print '<td class="center">' . $langs->trans("JuneMin") . '</td>';
|
||||||
print '<td align="center">' . $langs->trans("JulyMin") . '</td>';
|
print '<td class="center">' . $langs->trans("JulyMin") . '</td>';
|
||||||
print '<td align="center">' . $langs->trans("AugustMin") . '</td>';
|
print '<td class="center">' . $langs->trans("AugustMin") . '</td>';
|
||||||
print '<td align="center">' . $langs->trans("SeptemberMin") . '</td>';
|
print '<td class="center">' . $langs->trans("SeptemberMin") . '</td>';
|
||||||
print '<td align="center">' . $langs->trans("OctoberMin") . '</td>';
|
print '<td class="center">' . $langs->trans("OctoberMin") . '</td>';
|
||||||
print '<td align="center">' . $langs->trans("NovemberMin") . '</td>';
|
print '<td class="center">' . $langs->trans("NovemberMin") . '</td>';
|
||||||
print '<td align="center">' . $langs->trans("DecemberMin") . '</td>';
|
print '<td class="center">' . $langs->trans("DecemberMin") . '</td>';
|
||||||
print '<td align="center"><strong>Total</strong></td>';
|
print '<td class="center"><strong>Total</strong></td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
$sql = "SELECT bk.numero_compte AS 'compte',";
|
$sql = "SELECT bk.numero_compte AS 'compte',";
|
||||||
@ -117,19 +117,19 @@ if ($resql) {
|
|||||||
$row = $db->fetch_row($resql);
|
$row = $db->fetch_row($resql);
|
||||||
|
|
||||||
print '<tr class="oddeven"><td width="14%">' . length_accountg($row[0]) . '</td>';
|
print '<tr class="oddeven"><td width="14%">' . length_accountg($row[0]) . '</td>';
|
||||||
print '<td align="right" width="6.5%">' . price($row[1]) . '</td>';
|
print '<td class="right" width="6.5%">' . price($row[1]) . '</td>';
|
||||||
print '<td align="right" width="6.5%">' . price($row[2]) . '</td>';
|
print '<td class="right" width="6.5%">' . price($row[2]) . '</td>';
|
||||||
print '<td align="right" width="6.5%">' . price($row[3]) . '</td>';
|
print '<td class="right" width="6.5%">' . price($row[3]) . '</td>';
|
||||||
print '<td align="right" width="6.5%">' . price($row[4]) . '</td>';
|
print '<td class="right" width="6.5%">' . price($row[4]) . '</td>';
|
||||||
print '<td align="right" width="6.5%">' . price($row[5]) . '</td>';
|
print '<td class="right" width="6.5%">' . price($row[5]) . '</td>';
|
||||||
print '<td align="right" width="6.5%">' . price($row[6]) . '</td>';
|
print '<td class="right" width="6.5%">' . price($row[6]) . '</td>';
|
||||||
print '<td align="right" width="6.5%">' . price($row[7]) . '</td>';
|
print '<td class="right" width="6.5%">' . price($row[7]) . '</td>';
|
||||||
print '<td align="right" width="6.5%">' . price($row[8]) . '</td>';
|
print '<td class="right" width="6.5%">' . price($row[8]) . '</td>';
|
||||||
print '<td align="right" width="6.5%">' . price($row[9]) . '</td>';
|
print '<td class="right" width="6.5%">' . price($row[9]) . '</td>';
|
||||||
print '<td align="right" width="6.5%">' . price($row[10]) . '</td>';
|
print '<td class="right" width="6.5%">' . price($row[10]) . '</td>';
|
||||||
print '<td align="right" width="6.5%">' . price($row[11]) . '</td>';
|
print '<td class="right" width="6.5%">' . price($row[11]) . '</td>';
|
||||||
print '<td align="right" width="6.5%">' . price($row[12]) . '</td>';
|
print '<td class="right" width="6.5%">' . price($row[12]) . '</td>';
|
||||||
print '<td align="right" width="8%"><strong>' . price($row[13]) . '</strong></td>';
|
print '<td class="right" width="8%"><strong>' . price($row[13]) . '</strong></td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
$i ++;
|
$i ++;
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<?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-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2013-2018 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||||
*
|
*
|
||||||
@ -37,11 +37,11 @@ require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountingaccount.class.php
|
|||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("accountancy", "bills", "compta"));
|
$langs->loadLangs(array("accountancy", "bills", "compta"));
|
||||||
|
|
||||||
$action = GETPOST('action','aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
|
|
||||||
$id = GETPOST('id', 'int'); // id of record
|
$id = GETPOST('id', 'int'); // id of record
|
||||||
$mode = GETPOST('mode','aZ09'); // '' or 'tmp'
|
$mode = GETPOST('mode', 'aZ09'); // '' or 'tmp'
|
||||||
$piece_num = GETPOST("piece_num",'int'); // id of transaction (several lines share the same transaction id)
|
$piece_num = GETPOST("piece_num", 'int'); // id of transaction (several lines share the same transaction id)
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
if ($user->societe_id > 0) {
|
if ($user->societe_id > 0) {
|
||||||
@ -53,25 +53,25 @@ $mesg = '';
|
|||||||
$accountingaccount = new AccountingAccount($db);
|
$accountingaccount = new AccountingAccount($db);
|
||||||
$accountingjournal = new AccountingJournal($db);
|
$accountingjournal = new AccountingJournal($db);
|
||||||
|
|
||||||
$accountingaccount_number = GETPOST('accountingaccount_number','alphanohtml');
|
$accountingaccount_number = GETPOST('accountingaccount_number', 'alphanohtml');
|
||||||
$accountingaccount->fetch(null, $accountingaccount_number, true);
|
$accountingaccount->fetch(null, $accountingaccount_number, true);
|
||||||
$accountingaccount_label = $accountingaccount->label;
|
$accountingaccount_label = $accountingaccount->label;
|
||||||
|
|
||||||
$journal_code = GETPOST('code_journal','alpha');
|
$journal_code = GETPOST('code_journal', 'alpha');
|
||||||
$accountingjournal->fetch(null, $journal_code);
|
$accountingjournal->fetch(null, $journal_code);
|
||||||
$journal_label = $accountingjournal->label;
|
$journal_label = $accountingjournal->label;
|
||||||
|
|
||||||
$subledger_account = GETPOST('subledger_account','alphanohtml');
|
$subledger_account = GETPOST('subledger_account', 'alphanohtml');
|
||||||
if ($subledger_account == - 1) {
|
if ($subledger_account == - 1) {
|
||||||
$subledger_account = null;
|
$subledger_account = null;
|
||||||
}
|
}
|
||||||
$label_operation= GETPOST('label_operation','alphanohtml');
|
$label_operation= GETPOST('label_operation', 'alphanohtml');
|
||||||
$debit = price2num(GETPOST('debit','alpha'));
|
$debit = price2num(GETPOST('debit', 'alpha'));
|
||||||
$credit = price2num(GETPOST('credit','alpha'));
|
$credit = price2num(GETPOST('credit', 'alpha'));
|
||||||
|
|
||||||
$save = GETPOST('save','alpha');
|
$save = GETPOST('save', 'alpha');
|
||||||
if (! empty($save)) $action = 'add';
|
if (! empty($save)) $action = 'add';
|
||||||
$update = GETPOST('update','alpha');
|
$update = GETPOST('update', 'alpha');
|
||||||
if (! empty($update)) $action = 'confirm_update';
|
if (! empty($update)) $action = 'confirm_update';
|
||||||
|
|
||||||
$object = new BookKeeping($db);
|
$object = new BookKeeping($db);
|
||||||
@ -140,7 +140,7 @@ if ($action == "confirm_update") {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if ($action == "add") {
|
elseif ($action == "add") {
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
if ((floatval($debit) != 0.0) && (floatval($credit) != 0.0))
|
if ((floatval($debit) != 0.0) && (floatval($credit) != 0.0))
|
||||||
@ -165,14 +165,14 @@ else if ($action == "add") {
|
|||||||
$object->label_operation= $label_operation;
|
$object->label_operation= $label_operation;
|
||||||
$object->debit = $debit;
|
$object->debit = $debit;
|
||||||
$object->credit = $credit;
|
$object->credit = $credit;
|
||||||
$object->doc_date = GETPOST('doc_date','alpha');
|
$object->doc_date = GETPOST('doc_date', 'alpha');
|
||||||
$object->doc_type = GETPOST('doc_type','alpha');
|
$object->doc_type = GETPOST('doc_type', 'alpha');
|
||||||
$object->piece_num = $piece_num;
|
$object->piece_num = $piece_num;
|
||||||
$object->doc_ref = GETPOST('doc_ref','alpha');
|
$object->doc_ref = GETPOST('doc_ref', 'alpha');
|
||||||
$object->code_journal = $journal_code;
|
$object->code_journal = $journal_code;
|
||||||
$object->journal_label = $journal_label;
|
$object->journal_label = $journal_label;
|
||||||
$object->fk_doc = GETPOST('fk_doc','alpha');
|
$object->fk_doc = (int) GETPOST('fk_doc', 'int');
|
||||||
$object->fk_docdet = GETPOST('fk_docdet','alpha');
|
$object->fk_docdet = (int) GETPOST('fk_docdet', 'int');
|
||||||
|
|
||||||
if (floatval($debit) != 0.0) {
|
if (floatval($debit) != 0.0) {
|
||||||
$object->montant = $debit;
|
$object->montant = $debit;
|
||||||
@ -201,7 +201,7 @@ else if ($action == "add") {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if ($action == "confirm_delete") {
|
elseif ($action == "confirm_delete") {
|
||||||
$object = new BookKeeping($db);
|
$object = new BookKeeping($db);
|
||||||
|
|
||||||
$result = $object->fetch($id, null, $mode);
|
$result = $object->fetch($id, null, $mode);
|
||||||
@ -218,7 +218,7 @@ else if ($action == "confirm_delete") {
|
|||||||
$action = '';
|
$action = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
else if ($action == "confirm_create") {
|
elseif ($action == "confirm_create") {
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
$object = new BookKeeping($db);
|
$object = new BookKeeping($db);
|
||||||
@ -239,17 +239,17 @@ else if ($action == "confirm_create") {
|
|||||||
$object->label_compte = '';
|
$object->label_compte = '';
|
||||||
$object->debit = 0;
|
$object->debit = 0;
|
||||||
$object->credit = 0;
|
$object->credit = 0;
|
||||||
$object->doc_date = $date_start = dol_mktime(0, 0, 0, GETPOST('doc_datemonth','int'), GETPOST('doc_dateday','int'), GETPOST('doc_dateyear','int'));
|
$object->doc_date = $date_start = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int'));
|
||||||
$object->doc_type = GETPOST('doc_type','alpha');
|
$object->doc_type = GETPOST('doc_type', 'alpha');
|
||||||
$object->piece_num = GETPOST('next_num_mvt','alpha');
|
$object->piece_num = GETPOST('next_num_mvt', 'alpha');
|
||||||
$object->doc_ref = GETPOST('doc_ref','alpha');
|
$object->doc_ref = GETPOST('doc_ref', 'alpha');
|
||||||
$object->code_journal = $journal_code;
|
$object->code_journal = $journal_code;
|
||||||
$object->journal_label = $journal_label;
|
$object->journal_label = $journal_label;
|
||||||
$object->fk_doc = 0;
|
$object->fk_doc = 0;
|
||||||
$object->fk_docdet = 0;
|
$object->fk_docdet = 0;
|
||||||
$object->montant = 0;
|
$object->montant = 0;
|
||||||
|
|
||||||
$result = $object->createStd($user,0, $mode);
|
$result = $object->createStd($user, 0, $mode);
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
} else {
|
} else {
|
||||||
@ -266,7 +266,7 @@ else if ($action == "confirm_create") {
|
|||||||
|
|
||||||
if ($action == 'setdate') {
|
if ($action == 'setdate') {
|
||||||
$datedoc = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int'));
|
$datedoc = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int'));
|
||||||
$result = $object->updateByMvt($piece_num,'doc_date',$db->idate($datedoc),$mode);
|
$result = $object->updateByMvt($piece_num, 'doc_date', $db->idate($datedoc), $mode);
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
} else {
|
} else {
|
||||||
@ -293,8 +293,8 @@ if ($action == 'setjournal') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'setdocref') {
|
if ($action == 'setdocref') {
|
||||||
$refdoc = trim(GETPOST('doc_ref','alpha'));
|
$refdoc = trim(GETPOST('doc_ref', 'alpha'));
|
||||||
$result = $object->updateByMvt($piece_num,'doc_ref',$refdoc,$mode);
|
$result = $object->updateByMvt($piece_num, 'doc_ref', $refdoc, $mode);
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
} else {
|
} else {
|
||||||
@ -308,7 +308,7 @@ if ($action == 'setdocref') {
|
|||||||
|
|
||||||
// Validate transaction
|
// Validate transaction
|
||||||
if ($action == 'valid') {
|
if ($action == 'valid') {
|
||||||
$result = $object->transformTransaction(0,$piece_num);
|
$result = $object->transformTransaction(0, $piece_num);
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
} else {
|
} else {
|
||||||
@ -368,7 +368,7 @@ if ($action == 'create')
|
|||||||
|
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td class="fieldrequired">' . $langs->trans("Codejournal") . '</td>';
|
print '<td class="fieldrequired">' . $langs->trans("Codejournal") . '</td>';
|
||||||
print '<td>' . $formaccounting->select_journal($journal_code,'code_journal',0,0,1,1) . '</td>';
|
print '<td>' . $formaccounting->select_journal($journal_code, 'code_journal', 0, 0, 1, 1) . '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
@ -436,7 +436,7 @@ if ($action == 'create')
|
|||||||
print $langs->trans('Docdate');
|
print $langs->trans('Docdate');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if ($action != 'editdate')
|
if ($action != 'editdate')
|
||||||
print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editdate&piece_num='. $object->piece_num .'&mode='. $mode .'">'.img_edit($langs->transnoentitiesnoconv('SetDate'),1).'</a></td>';
|
print '<td class="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editdate&piece_num='. $object->piece_num .'&mode='. $mode .'">'.img_edit($langs->transnoentitiesnoconv('SetDate'), 1).'</a></td>';
|
||||||
print '</tr></table>';
|
print '</tr></table>';
|
||||||
print '</td><td colspan="3">';
|
print '</td><td colspan="3">';
|
||||||
if ($action == 'editdate') {
|
if ($action == 'editdate') {
|
||||||
@ -459,7 +459,7 @@ if ($action == 'create')
|
|||||||
print $langs->trans('Codejournal');
|
print $langs->trans('Codejournal');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if ($action != 'editjournal')
|
if ($action != 'editjournal')
|
||||||
print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editjournal&piece_num='.$object->piece_num.'&mode='. $mode .'">'.img_edit($langs->transnoentitiesnoconv('Edit'),1).'</a></td>';
|
print '<td class="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editjournal&piece_num='.$object->piece_num.'&mode='. $mode .'">'.img_edit($langs->transnoentitiesnoconv('Edit'), 1).'</a></td>';
|
||||||
print '</tr></table>';
|
print '</tr></table>';
|
||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
if ($action == 'editjournal') {
|
if ($action == 'editjournal') {
|
||||||
@ -467,7 +467,7 @@ if ($action == 'create')
|
|||||||
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="setjournal">';
|
print '<input type="hidden" name="action" value="setjournal">';
|
||||||
print '<input type="hidden" name="mode" value="'.$mode.'">';
|
print '<input type="hidden" name="mode" value="'.$mode.'">';
|
||||||
print $formaccounting->select_journal($object->code_journal,'code_journal',0,0,array(),1,1);
|
print $formaccounting->select_journal($object->code_journal, 'code_journal', 0, 0, array(), 1, 1);
|
||||||
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 {
|
||||||
@ -482,7 +482,7 @@ if ($action == 'create')
|
|||||||
print $langs->trans('Piece');
|
print $langs->trans('Piece');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if ($action != 'editdocref')
|
if ($action != 'editdocref')
|
||||||
print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editdocref&piece_num='.$object->piece_num.'&mode='. $mode .'">'.img_edit($langs->transnoentitiesnoconv('Edit'),1).'</a></td>';
|
print '<td class="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editdocref&piece_num='.$object->piece_num.'&mode='. $mode .'">'.img_edit($langs->transnoentitiesnoconv('Edit'), 1).'</a></td>';
|
||||||
print '</tr></table>';
|
print '</tr></table>';
|
||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
if ($action == 'editdocref') {
|
if ($action == 'editdocref') {
|
||||||
@ -531,11 +531,11 @@ if ($action == 'create')
|
|||||||
print '<td class="titlefield">' . $langs->trans("Status") . '</td>';
|
print '<td class="titlefield">' . $langs->trans("Status") . '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
if (empty($object->validated)) {
|
if (empty($object->validated)) {
|
||||||
print '<a href="' . $_SERVER["PHP_SELF"] . '?piece_num=' . $line->rowid . '&action=enable">';
|
print '<a class="reposition" href="' . $_SERVER["PHP_SELF"] . '?piece_num=' . $line->rowid . '&action=enable">';
|
||||||
print img_picto($langs->trans("Disabled"), 'switch_off');
|
print img_picto($langs->trans("Disabled"), 'switch_off');
|
||||||
print '</a>';
|
print '</a>';
|
||||||
} else {
|
} else {
|
||||||
print '<a href="' . $_SERVER["PHP_SELF"] . '?piece_num=' . $line->rowid . '&action=disable">';
|
print '<a class="reposition" href="' . $_SERVER["PHP_SELF"] . '?piece_num=' . $line->rowid . '&action=disable">';
|
||||||
print img_picto($langs->trans("Activated"), 'switch_on');
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
print '</a>';
|
print '</a>';
|
||||||
}
|
}
|
||||||
@ -602,9 +602,9 @@ 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("LabelOperation");
|
print_liste_field_titre("LabelOperation");
|
||||||
print_liste_field_titre("Debit", "", "", "", "", 'align="right"');
|
print_liste_field_titre("Debit", "", "", "", "", 'class="right"');
|
||||||
print_liste_field_titre("Credit", "", "", "", "", 'align="right"');
|
print_liste_field_titre("Credit", "", "", "", "", 'class="right"');
|
||||||
print_liste_field_titre("Action", "", "", "", "", 'width="60" align="center"');
|
print_liste_field_titre("Action", "", "", "", "", 'width="60" class="center"');
|
||||||
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
@ -630,21 +630,21 @@ if ($action == 'create')
|
|||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td><input type="text" class="minwidth200" name="label_operation" value="' . $line->label_operation. '"/></td>';
|
print '<td><input type="text" class="minwidth200" name="label_operation" value="' . $line->label_operation. '"/></td>';
|
||||||
print '<td align="right"><input type="text" size="6" class="right" name="debit" value="' . price($line->debit) . '"/></td>';
|
print '<td class="right"><input type="text" size="6" class="right" name="debit" value="' . price($line->debit) . '"/></td>';
|
||||||
print '<td align="right"><input type="text" size="6" class="right" name="credit" value="' . price($line->credit) . '"/></td>';
|
print '<td class="right"><input type="text" size="6" class="right" name="credit" value="' . price($line->credit) . '"/></td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="hidden" name="id" value="' . $line->id . '">' . "\n";
|
print '<input type="hidden" name="id" value="' . $line->id . '">' . "\n";
|
||||||
print '<input type="submit" class="button" name="update" value="' . $langs->trans("Update") . '">';
|
print '<input type="submit" class="button" name="update" value="' . $langs->trans("Update") . '">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
} else {
|
} else {
|
||||||
$accountingaccount->fetch(null, $line->numero_compte, true);
|
$accountingaccount->fetch(null, $line->numero_compte, true);
|
||||||
print '<td>' . $accountingaccount->getNomUrl(0,1,1,'',0) . '</td>';
|
print '<td>' . $accountingaccount->getNomUrl(0, 1, 1, '', 0) . '</td>';
|
||||||
print '<td>' . length_accounta($line->subledger_account) . '</td>';
|
print '<td>' . length_accounta($line->subledger_account) . '</td>';
|
||||||
print '<td>' . $line->label_operation. '</td>';
|
print '<td>' . $line->label_operation. '</td>';
|
||||||
print '<td align="right">' . price($line->debit) . '</td>';
|
print '<td class="right">' . price($line->debit) . '</td>';
|
||||||
print '<td align="right">' . price($line->credit) . '</td>';
|
print '<td class="right">' . price($line->credit) . '</td>';
|
||||||
|
|
||||||
print '<td align="center">';
|
print '<td class="center">';
|
||||||
print '<a href="' . $_SERVER["PHP_SELF"] . '?action=update&id=' . $line->id . '&piece_num=' . $line->piece_num . '&mode='.$mode.'">';
|
print '<a href="' . $_SERVER["PHP_SELF"] . '?action=update&id=' . $line->id . '&piece_num=' . $line->piece_num . '&mode='.$mode.'">';
|
||||||
print img_edit();
|
print img_edit();
|
||||||
print '</a> ';
|
print '</a> ';
|
||||||
@ -661,8 +661,8 @@ if ($action == 'create')
|
|||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
$total_debit = price2num($total_debit);
|
$total_debit = price2num($total_debit, 'MT');
|
||||||
$total_credit = price2num($total_credit);
|
$total_credit = price2num($total_credit, 'MT');
|
||||||
|
|
||||||
if ($total_debit != $total_credit)
|
if ($total_debit != $total_credit)
|
||||||
{
|
{
|
||||||
@ -687,8 +687,8 @@ if ($action == 'create')
|
|||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td><input type="text" class="minwidth200" name="label_operation" value=""/></td>';
|
print '<td><input type="text" class="minwidth200" name="label_operation" value=""/></td>';
|
||||||
print '<td align="right"><input type="text" size="6" class="right" name="debit" value=""/></td>';
|
print '<td class="right"><input type="text" size="6" class="right" name="debit" value=""/></td>';
|
||||||
print '<td align="right"><input type="text" size="6" class="right" name="credit" value=""/></td>';
|
print '<td class="right"><input type="text" size="6" class="right" name="credit" value=""/></td>';
|
||||||
print '<td><input type="submit" class="button" name="save" value="' . $langs->trans("Add") . '"></td>';
|
print '<td><input type="submit" class="button" name="save" value="' . $langs->trans("Add") . '"></td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2013-2018 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2016-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2016-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||||
*
|
*
|
||||||
@ -82,10 +82,10 @@ $search_ledger_code = GETPOST('search_ledger_code', 'alpha');
|
|||||||
$search_lettering_code = GETPOST('search_lettering_code', 'alpha');
|
$search_lettering_code = GETPOST('search_lettering_code', 'alpha');
|
||||||
|
|
||||||
// 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);
|
||||||
$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 < 0) { $page = 0; }
|
if (empty($page) || $page < 0) { $page = 0; }
|
||||||
$offset = $limit * $page;
|
$offset = $limit * $page;
|
||||||
$pageprev = $page - 1;
|
$pageprev = $page - 1;
|
||||||
@ -100,7 +100,7 @@ $formaccounting = new FormAccounting($db);
|
|||||||
$formother = new FormOther($db);
|
$formother = new FormOther($db);
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
|
|
||||||
if (! in_array($action, array('export_file', 'delmouv', 'delmouvconfirm')) && ! isset($_POST['begin']) && ! isset($_GET['begin']) && ! isset($_POST['formfilteraction']) && GETPOST('page','int') == '' && ! GETPOST('noreset','int'))
|
if (! in_array($action, array('export_file', 'delmouv', 'delmouvconfirm')) && ! isset($_POST['begin']) && ! isset($_GET['begin']) && ! isset($_POST['formfilteraction']) && GETPOST('page', 'int') == '' && ! GETPOST('noreset', 'int'))
|
||||||
{
|
{
|
||||||
if (empty($search_date_start) && empty($search_date_end) && ! GETPOSTISSET('restore_lastsearch_values'))
|
if (empty($search_date_start) && empty($search_date_end) && ! GETPOSTISSET('restore_lastsearch_values'))
|
||||||
{
|
{
|
||||||
@ -152,12 +152,12 @@ if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING)) unset($arrayfields['t.let
|
|||||||
* Actions
|
* 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';
|
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 = '';
|
||||||
$search_doc_type = '';
|
$search_doc_type = '';
|
||||||
@ -280,7 +280,7 @@ if (! empty($search_credit)) {
|
|||||||
if (! empty($search_lettering_code)) {
|
if (! empty($search_lettering_code)) {
|
||||||
$filter['t.lettering_code'] = $search_lettering_code;
|
$filter['t.lettering_code'] = $search_lettering_code;
|
||||||
$param .= '&search_lettering_code=' . urlencode($search_lettering_code);
|
$param .= '&search_lettering_code=' . urlencode($search_lettering_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($action == 'delbookkeeping') {
|
if ($action == 'delbookkeeping') {
|
||||||
@ -302,14 +302,14 @@ if ($action == 'delbookkeepingyearconfirm') {
|
|||||||
if ($delyear==-1) {
|
if ($delyear==-1) {
|
||||||
$delyear=0;
|
$delyear=0;
|
||||||
}
|
}
|
||||||
$deljournal = GETPOST('deljournal','alpha');
|
$deljournal = GETPOST('deljournal', 'alpha');
|
||||||
if ($deljournal==-1) {
|
if ($deljournal==-1) {
|
||||||
$deljournal=0;
|
$deljournal=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! empty($delyear) || ! empty($deljournal))
|
if (! empty($delyear) || ! empty($deljournal))
|
||||||
{
|
{
|
||||||
$result = $object->deleteByYearAndJournal($delyear,$deljournal);
|
$result = $object->deleteByYearAndJournal($delyear, $deljournal);
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
@ -443,19 +443,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.'">';
|
||||||
|
|
||||||
$listofformat=AccountancyExport::getType();
|
$listofformat=AccountancyExport::getType();
|
||||||
$button = '<a class="butAction" name="button_export_file" href="'.$_SERVER["PHP_SELF"].'?action=export_file'.($param?'&'.$param:'').'">';
|
|
||||||
if (count($filter)) $button.= $langs->trans("ExportFilteredList");
|
if (count($filter)) $buttonLabel = $langs->trans("ExportFilteredList");
|
||||||
else $button.= $langs->trans("ExportList");
|
else $buttonLabel = $langs->trans("ExportList");
|
||||||
//$button.=' ('.$listofformat[$conf->global->ACCOUNTING_EXPORT_MODELCSV].')';
|
|
||||||
$button.= '</a>';
|
$newcardbutton = dolGetButtonTitle($buttonLabel, '', 'fa fa-file-export paddingleft', $_SERVER["PHP_SELF"].'?action=export_file'.($param?'&'.$param:''));
|
||||||
|
|
||||||
|
$newcardbutton.= dolGetButtonTitle($langs->trans('GroupByAccountAccounting'), '', 'fa fa-stream paddingleft', DOL_URL_ROOT.'/accountancy/bookkeeping/listbyaccount.php?'.$param);
|
||||||
|
|
||||||
|
$newcardbutton.= dolGetButtonTitle($langs->trans('NewAccountingMvt'), '', 'fa fa-plus-circle paddingleft', './card.php?action=create');
|
||||||
|
|
||||||
|
|
||||||
$groupby = ' <a class="nohover marginrightonly" href="'.DOL_URL_ROOT.'/accountancy/bookkeeping/listbyaccount.php?'.$param.'">' . $langs->trans("GroupByAccountAccounting") . '</a>';
|
print_barre_liste($title_page, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $result, $nbtotalofrecords, 'title_accountancy', 0, $newcardbutton, '', $limit);
|
||||||
$newcardbutton = '<a class="butActionNew" href="./card.php?action=create"><span class="valignmiddle">' . $langs->trans("NewAccountingMvt").'</span>';
|
|
||||||
$newcardbutton.= '<span class="fa fa-plus-circle valignmiddle"></span>';
|
|
||||||
$newcardbutton.= '</a>';
|
|
||||||
|
|
||||||
print_barre_liste($title_page, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $button, $result, $nbtotalofrecords, 'title_accountancy', 0, $groupby.$newcardbutton, '', $limit);
|
|
||||||
|
|
||||||
$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
|
$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
|
||||||
$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields
|
$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields
|
||||||
@ -546,14 +545,14 @@ if (! empty($arrayfields['t.label_operation']['checked']))
|
|||||||
// Debit
|
// Debit
|
||||||
if (! empty($arrayfields['t.debit']['checked']))
|
if (! empty($arrayfields['t.debit']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="liste_titre" align="right">';
|
print '<td class="liste_titre right">';
|
||||||
print '<input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).'">';
|
print '<input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
// Credit
|
// Credit
|
||||||
if (! empty($arrayfields['t.credit']['checked']))
|
if (! empty($arrayfields['t.credit']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="liste_titre" align="right">';
|
print '<td class="liste_titre right">';
|
||||||
print '<input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).'">';
|
print '<input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
@ -606,18 +605,18 @@ print "</tr>\n";
|
|||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
if (! empty($arrayfields['t.piece_num']['checked'])) print_liste_field_titre($arrayfields['t.piece_num']['label'], $_SERVER['PHP_SELF'], "t.piece_num", "", $param, "", $sortfield, $sortorder);
|
if (! empty($arrayfields['t.piece_num']['checked'])) print_liste_field_titre($arrayfields['t.piece_num']['label'], $_SERVER['PHP_SELF'], "t.piece_num", "", $param, "", $sortfield, $sortorder);
|
||||||
if (! empty($arrayfields['t.doc_date']['checked'])) print_liste_field_titre($arrayfields['t.doc_date']['label'], $_SERVER['PHP_SELF'], "t.doc_date", "", $param, 'align="center"', $sortfield, $sortorder);
|
if (! empty($arrayfields['t.doc_date']['checked'])) print_liste_field_titre($arrayfields['t.doc_date']['label'], $_SERVER['PHP_SELF'], "t.doc_date", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
if (! empty($arrayfields['t.doc_ref']['checked'])) print_liste_field_titre($arrayfields['t.doc_ref']['label'], $_SERVER['PHP_SELF'], "t.doc_ref", "", $param, "", $sortfield, $sortorder);
|
if (! empty($arrayfields['t.doc_ref']['checked'])) print_liste_field_titre($arrayfields['t.doc_ref']['label'], $_SERVER['PHP_SELF'], "t.doc_ref", "", $param, "", $sortfield, $sortorder);
|
||||||
if (! empty($arrayfields['t.numero_compte']['checked'])) print_liste_field_titre($arrayfields['t.numero_compte']['label'], $_SERVER['PHP_SELF'], "t.numero_compte", "", $param, "", $sortfield, $sortorder);
|
if (! empty($arrayfields['t.numero_compte']['checked'])) print_liste_field_titre($arrayfields['t.numero_compte']['label'], $_SERVER['PHP_SELF'], "t.numero_compte", "", $param, "", $sortfield, $sortorder);
|
||||||
if (! empty($arrayfields['t.subledger_account']['checked'])) print_liste_field_titre($arrayfields['t.subledger_account']['label'], $_SERVER['PHP_SELF'], "t.subledger_account", "", $param, "", $sortfield, $sortorder);
|
if (! empty($arrayfields['t.subledger_account']['checked'])) print_liste_field_titre($arrayfields['t.subledger_account']['label'], $_SERVER['PHP_SELF'], "t.subledger_account", "", $param, "", $sortfield, $sortorder);
|
||||||
if (! empty($arrayfields['t.label_operation']['checked'])) print_liste_field_titre($arrayfields['t.label_operation']['label'], $_SERVER['PHP_SELF'], "t.label_operation", "", $param, "", $sortfield, $sortorder);
|
if (! empty($arrayfields['t.label_operation']['checked'])) print_liste_field_titre($arrayfields['t.label_operation']['label'], $_SERVER['PHP_SELF'], "t.label_operation", "", $param, "", $sortfield, $sortorder);
|
||||||
if (! empty($arrayfields['t.debit']['checked'])) print_liste_field_titre($arrayfields['t.debit']['label'], $_SERVER['PHP_SELF'], "t.debit", "", $param, 'align="right"', $sortfield, $sortorder);
|
if (! empty($arrayfields['t.debit']['checked'])) print_liste_field_titre($arrayfields['t.debit']['label'], $_SERVER['PHP_SELF'], "t.debit", "", $param, '', $sortfield, $sortorder, 'right ');
|
||||||
if (! empty($arrayfields['t.credit']['checked'])) print_liste_field_titre($arrayfields['t.credit']['label'], $_SERVER['PHP_SELF'], "t.credit", "", $param, 'align="right"', $sortfield, $sortorder);
|
if (! empty($arrayfields['t.credit']['checked'])) print_liste_field_titre($arrayfields['t.credit']['label'], $_SERVER['PHP_SELF'], "t.credit", "", $param, '', $sortfield, $sortorder, 'right ');
|
||||||
if (! empty($arrayfields['t.lettering_code']['checked'])) print_liste_field_titre($arrayfields['t.lettering_code']['label'], $_SERVER['PHP_SELF'], "t.lettering_code", "", $param, 'align="center"', $sortfield, $sortorder);
|
if (! empty($arrayfields['t.lettering_code']['checked'])) print_liste_field_titre($arrayfields['t.lettering_code']['label'], $_SERVER['PHP_SELF'], "t.lettering_code", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
if (! empty($arrayfields['t.code_journal']['checked'])) print_liste_field_titre($arrayfields['t.code_journal']['label'], $_SERVER['PHP_SELF'], "t.code_journal", "", $param, 'align="center"', $sortfield, $sortorder);
|
if (! empty($arrayfields['t.code_journal']['checked'])) print_liste_field_titre($arrayfields['t.code_journal']['label'], $_SERVER['PHP_SELF'], "t.code_journal", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
if (! empty($arrayfields['t.date_creation']['checked'])) print_liste_field_titre($arrayfields['t.date_creation']['label'], $_SERVER['PHP_SELF'], "t.date_creation", "", $param, 'align="center"', $sortfield, $sortorder);
|
if (! empty($arrayfields['t.date_creation']['checked'])) print_liste_field_titre($arrayfields['t.date_creation']['label'], $_SERVER['PHP_SELF'], "t.date_creation", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
if (! empty($arrayfields['t.tms']['checked'])) print_liste_field_titre($arrayfields['t.tms']['label'], $_SERVER['PHP_SELF'], "t.tms", "", $param, 'align="center"', $sortfield, $sortorder);
|
if (! empty($arrayfields['t.tms']['checked'])) print_liste_field_titre($arrayfields['t.tms']['label'], $_SERVER['PHP_SELF'], "t.tms", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="center"',$sortfield,$sortorder,'maxwidthsearch ');
|
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ');
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
|
|
||||||
@ -640,7 +639,7 @@ if ($num > 0)
|
|||||||
print '<td>';
|
print '<td>';
|
||||||
$object->id = $line->id;
|
$object->id = $line->id;
|
||||||
$object->piece_num = $line->piece_num;
|
$object->piece_num = $line->piece_num;
|
||||||
print $object->getNomUrl(1,'',0,'',1);
|
print $object->getNomUrl(1, '', 0, '', 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
@ -648,7 +647,7 @@ if ($num > 0)
|
|||||||
// Document date
|
// Document date
|
||||||
if (! empty($arrayfields['t.doc_date']['checked']))
|
if (! empty($arrayfields['t.doc_date']['checked']))
|
||||||
{
|
{
|
||||||
print '<td align="center">' . dol_print_date($line->doc_date, 'day') . '</td>';
|
print '<td class="center">' . dol_print_date($line->doc_date, 'day') . '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -683,7 +682,7 @@ if ($num > 0)
|
|||||||
// Amount debit
|
// Amount debit
|
||||||
if (! empty($arrayfields['t.debit']['checked']))
|
if (! empty($arrayfields['t.debit']['checked']))
|
||||||
{
|
{
|
||||||
print '<td align="right">' . ($line->debit ? price($line->debit) : ''). '</td>';
|
print '<td class="right">' . ($line->debit ? price($line->debit) : ''). '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
if (! $i) $totalarray['totaldebitfield']=$totalarray['nbfield'];
|
if (! $i) $totalarray['totaldebitfield']=$totalarray['nbfield'];
|
||||||
$totalarray['totaldebit'] += $line->debit;
|
$totalarray['totaldebit'] += $line->debit;
|
||||||
@ -692,7 +691,7 @@ if ($num > 0)
|
|||||||
// Amount credit
|
// Amount credit
|
||||||
if (! empty($arrayfields['t.credit']['checked']))
|
if (! empty($arrayfields['t.credit']['checked']))
|
||||||
{
|
{
|
||||||
print '<td align="right">' . ($line->credit ? price($line->credit) : '') . '</td>';
|
print '<td class="right">' . ($line->credit ? price($line->credit) : '') . '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
if (! $i) $totalarray['totalcreditfield']=$totalarray['nbfield'];
|
if (! $i) $totalarray['totalcreditfield']=$totalarray['nbfield'];
|
||||||
$totalarray['totalcredit'] += $line->credit;
|
$totalarray['totalcredit'] += $line->credit;
|
||||||
@ -701,7 +700,7 @@ if ($num > 0)
|
|||||||
// Lettering code
|
// Lettering code
|
||||||
if (! empty($arrayfields['t.lettering_code']['checked']))
|
if (! empty($arrayfields['t.lettering_code']['checked']))
|
||||||
{
|
{
|
||||||
print '<td align="center">' . $line->lettering_code . '</td>';
|
print '<td class="center">' . $line->lettering_code . '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -709,28 +708,28 @@ if ($num > 0)
|
|||||||
if (! empty($arrayfields['t.code_journal']['checked']))
|
if (! empty($arrayfields['t.code_journal']['checked']))
|
||||||
{
|
{
|
||||||
$accountingjournal = new AccountingJournal($db);
|
$accountingjournal = new AccountingJournal($db);
|
||||||
$result = $accountingjournal->fetch('',$line->code_journal);
|
$result = $accountingjournal->fetch('', $line->code_journal);
|
||||||
$journaltoshow = (($result > 0)?$accountingjournal->getNomUrl(0,0,0,'',0) : $line->code_journal);
|
$journaltoshow = (($result > 0)?$accountingjournal->getNomUrl(0, 0, 0, '', 0) : $line->code_journal);
|
||||||
print '<td align="center">' . $journaltoshow . '</td>';
|
print '<td class="center">' . $journaltoshow . '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Creation operation date
|
// Creation operation date
|
||||||
if (! empty($arrayfields['t.date_creation']['checked']))
|
if (! empty($arrayfields['t.date_creation']['checked']))
|
||||||
{
|
{
|
||||||
print '<td align="center">' . dol_print_date($line->date_creation, 'dayhour') . '</td>';
|
print '<td class="center">' . dol_print_date($line->date_creation, 'dayhour') . '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Modification operation date
|
// Modification operation date
|
||||||
if (! empty($arrayfields['t.tms']['checked']))
|
if (! empty($arrayfields['t.tms']['checked']))
|
||||||
{
|
{
|
||||||
print '<td align="center">' . dol_print_date($line->date_modification, 'dayhour') . '</td>';
|
print '<td class="center">' . dol_print_date($line->date_modification, 'dayhour') . '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Action column
|
// Action column
|
||||||
print '<td align="center" class="nowraponall">';
|
print '<td class="nowraponall center">';
|
||||||
print '<a href="'.DOL_URL_ROOT.'/accountancy/bookkeeping/card.php?piece_num=' . $line->piece_num . $param . '&page=' . $page . ($sortfield ? '&sortfield='.$sortfield : '') . ($sortorder ? '&sortorder='.$sortorder : '') . '">' . img_edit() . '</a> ';
|
print '<a href="'.DOL_URL_ROOT.'/accountancy/bookkeeping/card.php?piece_num=' . $line->piece_num . $param . '&page=' . $page . ($sortfield ? '&sortfield='.$sortfield : '') . ($sortorder ? '&sortorder='.$sortorder : '') . '">' . img_edit() . '</a> ';
|
||||||
print '<a href="' . $_SERVER['PHP_SELF'] . '?action=delmouv&mvt_num=' . $line->piece_num . $param . '&page=' . $page . ($sortfield ? '&sortfield='.$sortfield : '') . ($sortorder ? '&sortorder='.$sortorder : '') . '">' . img_delete() . '</a>';
|
print '<a href="' . $_SERVER['PHP_SELF'] . '?action=delmouv&mvt_num=' . $line->piece_num . $param . '&page=' . $page . ($sortfield ? '&sortfield='.$sortfield : '') . ($sortorder ? '&sortorder='.$sortorder : '') . '">' . img_delete() . '</a>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
@ -751,11 +750,11 @@ if ($num > 0)
|
|||||||
$i++;
|
$i++;
|
||||||
if ($i == 1)
|
if ($i == 1)
|
||||||
{
|
{
|
||||||
if ($num < $limit && empty($offset)) print '<td align="left">'.$langs->trans("Total").'</td>';
|
if ($num < $limit && empty($offset)) print '<td class="left">'.$langs->trans("Total").'</td>';
|
||||||
else print '<td align="left">'.$langs->trans("Totalforthispage").'</td>';
|
else print '<td class="left">'.$langs->trans("Totalforthispage").'</td>';
|
||||||
}
|
}
|
||||||
elseif ($totalarray['totaldebitfield'] == $i) print '<td align="right">'.price($totalarray['totaldebit']).'</td>';
|
elseif ($totalarray['totaldebitfield'] == $i) print '<td class="right">'.price($totalarray['totaldebit']).'</td>';
|
||||||
elseif ($totalarray['totalcreditfield'] == $i) print '<td align="right">'.price($totalarray['totalcredit']).'</td>';
|
elseif ($totalarray['totalcreditfield'] == $i) print '<td class="right">'.price($totalarray['totalcredit']).'</td>';
|
||||||
else print '<td></td>';
|
else print '<td></td>';
|
||||||
}
|
}
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
/* Copyright (C) 2016 Neil Orley <neil.orley@oeris.fr>
|
/* Copyright (C) 2016 Neil Orley <neil.orley@oeris.fr>
|
||||||
* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
|
* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2013-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2013-2018 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -62,10 +62,10 @@ $search_debit = GETPOST('search_debit', 'alpha');
|
|||||||
$search_credit = GETPOST('search_credit', 'alpha');
|
$search_credit = GETPOST('search_credit', 'alpha');
|
||||||
|
|
||||||
// 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);
|
||||||
$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 < 0) { $page = 0; }
|
if (empty($page) || $page < 0) { $page = 0; }
|
||||||
$offset = $limit * $page;
|
$offset = $limit * $page;
|
||||||
$pageprev = $page - 1;
|
$pageprev = $page - 1;
|
||||||
@ -104,7 +104,7 @@ $object = new BookKeeping($db);
|
|||||||
/*
|
/*
|
||||||
* Action
|
* Action
|
||||||
*/
|
*/
|
||||||
if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') || GETPOST('button_removefilter','alpha')) // All tests are required to be compatible with all browsers
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) // All tests are required to be compatible with all browsers
|
||||||
{
|
{
|
||||||
$search_doc_date = '';
|
$search_doc_date = '';
|
||||||
$search_accountancy_code = '';
|
$search_accountancy_code = '';
|
||||||
@ -256,10 +256,8 @@ if ($action == 'delbookkeepingyear') {
|
|||||||
|
|
||||||
print '<form method="POST" id="searchFormList" action="' . $_SERVER["PHP_SELF"] . '">';
|
print '<form method="POST" id="searchFormList" action="' . $_SERVER["PHP_SELF"] . '">';
|
||||||
|
|
||||||
$viewflat = ' <a class="nohover marginrightonly" href="'.DOL_URL_ROOT.'/accountancy/bookkeeping/list.php?'.$param.'">' . $langs->trans("ViewFlatList") . '</a>';
|
$newcardbutton.= dolGetButtonTitle($langs->trans('ViewFlatList'), '', 'fa fa-list paddingleft', DOL_URL_ROOT.'/accountancy/bookkeeping/list.php?'.$param);
|
||||||
$newcardbutton = '<a class="butActionNew" href="./card.php?action=create"><span class="valignmiddle">' . $langs->trans("NewAccountingMvt").'</span>';
|
$newcardbutton.= dolGetButtonTitle($langs->trans('NewAccountingMvt'), '', 'fa fa-plus-circle paddingleft', './card.php?action=create');
|
||||||
$newcardbutton.= '<span class="fa fa-plus-circle valignmiddle"></span>';
|
|
||||||
$newcardbutton.= '</a>';
|
|
||||||
|
|
||||||
if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage);
|
if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage);
|
||||||
if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit);
|
if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit);
|
||||||
@ -286,7 +284,7 @@ print $formaccounting->select_account($search_accountancy_code_end, 'search_acco
|
|||||||
print '</div>';
|
print '</div>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="liste_titre"></td>';
|
print '<td class="liste_titre"></td>';
|
||||||
print '<td class="liste_titre" align="center">';
|
print '<td class="liste_titre center">';
|
||||||
print $langs->trans('From') . ': ';
|
print $langs->trans('From') . ': ';
|
||||||
print $form->selectDate($search_date_start, 'search_date_start', 0, 0, 1);
|
print $form->selectDate($search_date_start, 'search_date_start', 0, 0, 1);
|
||||||
print '<br>';
|
print '<br>';
|
||||||
@ -295,24 +293,24 @@ print $form->selectDate($search_date_end, 'search_date_end', 0, 0, 1);
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="liste_titre"><input type="text" size="7" class="flat" name="search_doc_ref" value="' . dol_escape_htmltag($search_doc_ref) . '"/></td>';
|
print '<td class="liste_titre"><input type="text" size="7" class="flat" name="search_doc_ref" value="' . dol_escape_htmltag($search_doc_ref) . '"/></td>';
|
||||||
print '<td class="liste_titre"><input type="text" size="7" class="flat" name="search_label_operation" value="' . dol_escape_htmltag($search_label_operation) . '"/></td>';
|
print '<td class="liste_titre"><input type="text" size="7" class="flat" name="search_label_operation" value="' . dol_escape_htmltag($search_label_operation) . '"/></td>';
|
||||||
print '<td class="liste_titre" align="right"><input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).'"></td>';
|
print '<td class="liste_titre right"><input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).'"></td>';
|
||||||
print '<td class="liste_titre" align="right"><input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).'"></td>';
|
print '<td class="liste_titre right"><input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).'"></td>';
|
||||||
print '<td class="liste_titre" align="center"><input type="text" name="search_ledger_code" size="3" value="' . dol_escape_htmltag($search_ledger_code) . '"></td>';
|
print '<td class="liste_titre center"><input type="text" name="search_ledger_code" size="3" value="' . dol_escape_htmltag($search_ledger_code) . '"></td>';
|
||||||
print '<td class="liste_titre" align="right" colspan="2">';
|
print '<td class="liste_titre right" colspan="2">';
|
||||||
$searchpicto=$form->showFilterAndCheckAddButtons(0);
|
$searchpicto=$form->showFilterAndCheckAddButtons(0);
|
||||||
print $searchpicto;
|
print $searchpicto;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print_liste_field_titre("AccountAccountingShort", $_SERVER['PHP_SELF']);
|
print_liste_field_titre("AccountAccountingShort", $_SERVER['PHP_SELF']);
|
||||||
print_liste_field_titre("TransactionNumShort", $_SERVER['PHP_SELF'], "t.piece_num", "", $param, 'align="right"', $sortfield, $sortorder);
|
print_liste_field_titre("TransactionNumShort", $_SERVER['PHP_SELF'], "t.piece_num", "", $param, '', $sortfield, $sortorder, 'right ');
|
||||||
print_liste_field_titre("Docdate", $_SERVER['PHP_SELF'], "t.doc_date", "", $param, 'align="center"', $sortfield, $sortorder);
|
print_liste_field_titre("Docdate", $_SERVER['PHP_SELF'], "t.doc_date", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
print_liste_field_titre("Piece", $_SERVER['PHP_SELF'], "t.doc_ref", "", $param, "", $sortfield, $sortorder);
|
print_liste_field_titre("Piece", $_SERVER['PHP_SELF'], "t.doc_ref", "", $param, "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Label");
|
print_liste_field_titre("Label");
|
||||||
print_liste_field_titre("Debit", $_SERVER['PHP_SELF'], "t.debit", "", $param, 'align="right"', $sortfield, $sortorder);
|
print_liste_field_titre("Debit", $_SERVER['PHP_SELF'], "t.debit", "", $param, '', $sortfield, $sortorder, 'right ');
|
||||||
print_liste_field_titre("Credit", $_SERVER['PHP_SELF'], "t.credit", "", $param, 'align="right"', $sortfield, $sortorder);
|
print_liste_field_titre("Credit", $_SERVER['PHP_SELF'], "t.credit", "", $param, '', $sortfield, $sortorder, 'right ');
|
||||||
print_liste_field_titre("Codejournal", $_SERVER['PHP_SELF'], "t.code_journal", "", $param, 'align="center"', $sortfield, $sortorder);
|
print_liste_field_titre("Codejournal", $_SERVER['PHP_SELF'], "t.code_journal", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
print_liste_field_titre('', $_SERVER["PHP_SELF"], "", $param, "", 'width="60" align="center"', $sortfield, $sortorder);
|
print_liste_field_titre('', $_SERVER["PHP_SELF"], "", $param, "", 'width="60"', $sortfield, $sortorder, 'center ');
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
@ -340,7 +338,7 @@ while ($i < min($num, $limit))
|
|||||||
|
|
||||||
// Affiche un Sous-Total par compte comptable
|
// Affiche un Sous-Total par compte comptable
|
||||||
if (isset($displayed_account_number)) {
|
if (isset($displayed_account_number)) {
|
||||||
print '<tr class="liste_total"><td align="right" colspan="5">'.$langs->trans("SubTotal").':</td><td class="nowrap" align="right">'.price($sous_total_debit).'</td><td class="nowrap" align="right">'.price($sous_total_credit).'</td>';
|
print '<tr class="liste_total"><td class="right" colspan="5">'.$langs->trans("SubTotal").':</td><td class="nowrap right">'.price($sous_total_debit).'</td><td class="nowrap right">'.price($sous_total_credit).'</td>';
|
||||||
print "<td> </td>\n";
|
print "<td> </td>\n";
|
||||||
print "<td> </td>\n";
|
print "<td> </td>\n";
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
@ -363,8 +361,8 @@ while ($i < min($num, $limit))
|
|||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td> </td>';
|
print '<td> </td>';
|
||||||
print '<td align="right"><a href="./card.php?piece_num=' . $line->piece_num . '">'.$line->piece_num.'</a></td>';
|
print '<td class="right"><a href="./card.php?piece_num=' . $line->piece_num . '">'.$line->piece_num.'</a></td>';
|
||||||
print '<td align="center">' . dol_print_date($line->doc_date, 'day') . '</td>';
|
print '<td class="center">' . dol_print_date($line->doc_date, 'day') . '</td>';
|
||||||
|
|
||||||
// TODO Add a link according to doc_type and fk_doc
|
// TODO Add a link according to doc_type and fk_doc
|
||||||
print '<td class="nowrap">';
|
print '<td class="nowrap">';
|
||||||
@ -378,15 +376,15 @@ while ($i < min($num, $limit))
|
|||||||
print strlen(length_accounta($line->subledger_account)) == 0 ? '<td>' . $line->label_operation . '</td>' : '<td>' . $line->label_operation . '<br><span style="font-size:0.8em">(' . length_accounta($line->subledger_account) . ')</span></td>';
|
print strlen(length_accounta($line->subledger_account)) == 0 ? '<td>' . $line->label_operation . '</td>' : '<td>' . $line->label_operation . '<br><span style="font-size:0.8em">(' . length_accounta($line->subledger_account) . ')</span></td>';
|
||||||
|
|
||||||
|
|
||||||
print '<td align="right">' . ($line->debit ? price($line->debit) :''). '</td>';
|
print '<td class="right">' . ($line->debit ? price($line->debit) :''). '</td>';
|
||||||
print '<td align="right">' . ($line->credit ? price($line->credit) : '') . '</td>';
|
print '<td class="right">' . ($line->credit ? price($line->credit) : '') . '</td>';
|
||||||
|
|
||||||
$accountingjournal = new AccountingJournal($db);
|
$accountingjournal = new AccountingJournal($db);
|
||||||
$result = $accountingjournal->fetch('',$line->code_journal);
|
$result = $accountingjournal->fetch('', $line->code_journal);
|
||||||
$journaltoshow = (($result > 0)?$accountingjournal->getNomUrl(0,0,0,'',0) : $line->code_journal);
|
$journaltoshow = (($result > 0)?$accountingjournal->getNomUrl(0, 0, 0, '', 0) : $line->code_journal);
|
||||||
print '<td align="center">' . $journaltoshow . '</td>';
|
print '<td class="center">' . $journaltoshow . '</td>';
|
||||||
|
|
||||||
print '<td align="center">';
|
print '<td class="center">';
|
||||||
print '<a href="'.DOL_URL_ROOT.'/accountancy/bookkeeping/card.php?piece_num=' . $line->piece_num . '">' . img_edit() . '</a> ';
|
print '<a href="'.DOL_URL_ROOT.'/accountancy/bookkeeping/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 '<a href="' . $_SERVER['PHP_SELF'] . '?action=delmouv&mvt_num=' . $line->piece_num . $param . '&page=' . $page . '">' . img_delete() . '</a>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
@ -401,7 +399,7 @@ while ($i < min($num, $limit))
|
|||||||
|
|
||||||
// Affiche un Sous-Total du dernier compte comptable affiché
|
// Affiche un Sous-Total du dernier compte comptable affiché
|
||||||
print '<tr class="liste_total">';
|
print '<tr class="liste_total">';
|
||||||
print '<td align="right" colspan="5">'.$langs->trans("SubTotal").':</td><td class="nowrap" align="right">'.price($sous_total_debit).'</td><td class="nowrap" align="right">'.price($sous_total_credit).'</td>';
|
print '<td class="right" colspan="5">'.$langs->trans("SubTotal").':</td><td class="nowrap right">'.price($sous_total_debit).'</td><td class="nowrap right">'.price($sous_total_credit).'</td>';
|
||||||
print "<td> </td>\n";
|
print "<td> </td>\n";
|
||||||
print "<td> </td>\n";
|
print "<td> </td>\n";
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
@ -409,11 +407,11 @@ print '</tr>';
|
|||||||
|
|
||||||
// Affiche le Total
|
// Affiche le Total
|
||||||
print '<tr class="liste_total">';
|
print '<tr class="liste_total">';
|
||||||
print '<td align="right" colspan="5">'.$langs->trans("Total").':</td>';
|
print '<td class="right" colspan="5">'.$langs->trans("Total").':</td>';
|
||||||
print '<td align="right">';
|
print '<td class="right">';
|
||||||
print price($total_debit);
|
print price($total_debit);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td align="right">';
|
print '<td class="right">';
|
||||||
print price($total_credit);
|
print price($total_credit);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td colspan="2"></td>';
|
print '<td colspan="2"></td>';
|
||||||
|
|||||||
@ -3,8 +3,8 @@
|
|||||||
* Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2013 Olivier Geffroy <jeff@jeffinfo.com>
|
* Copyright (C) 2013 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2013-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2013-2019 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2018-2019 Frédéric France <frederic.france@netlogic.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* 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
|
||||||
@ -30,17 +30,19 @@ 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';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/bookkeeping.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/bookkeeping.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/lettering.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/lettering.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountingjournal.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';
|
||||||
|
|
||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("compta","accountancy"));
|
$langs->loadLangs(array("compta","accountancy"));
|
||||||
|
|
||||||
$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');
|
||||||
|
$socid = GETPOST('socid', 'int')?GETPOST('socid', 'int'):GETPOST('id', 'int');
|
||||||
|
|
||||||
$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');
|
||||||
@ -53,26 +55,31 @@ $offset = $limit * $page;
|
|||||||
$pageprev = $page - 1;
|
$pageprev = $page - 1;
|
||||||
$pagenext = $page + 1;
|
$pagenext = $page + 1;
|
||||||
if ($sortorder == "")
|
if ($sortorder == "")
|
||||||
$sortorder = "DESC";
|
$sortorder = "ASC";
|
||||||
if ($sortfield == "")
|
if ($sortfield == "")
|
||||||
$sortfield = "bk.doc_date";
|
$sortfield = "bk.doc_date";
|
||||||
|
|
||||||
$search_year = GETPOST("search_year", 'int');
|
/*
|
||||||
$search_doc_type = GETPOST("search_doc_type", 'alpha');
|
$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_doc_type = GETPOST("search_doc_type", 'alpha');
|
||||||
$search_doc_ref = GETPOST("search_doc_ref", 'alpha');
|
$search_doc_ref = GETPOST("search_doc_ref", 'alpha');
|
||||||
|
*/
|
||||||
|
|
||||||
$lettering = GETPOST('lettering', 'alpha');
|
$lettering = GETPOST('lettering', 'alpha');
|
||||||
if (! empty($lettering)) {
|
if (! empty($lettering)) {
|
||||||
$action = $lettering;
|
$action = $lettering;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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')) // 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_date_start = '';
|
||||||
$search_doc_type = '';
|
$search_date_end = '';
|
||||||
|
//$search_doc_type = '';
|
||||||
$search_doc_ref = '';
|
$search_doc_ref = '';
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
$socid = GETPOST("socid", 'int');
|
$socid = GETPOST("socid", 'int');
|
||||||
@ -102,6 +109,7 @@ if ($action == 'lettering') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
if ($action == 'autolettrage') {
|
if ($action == 'autolettrage') {
|
||||||
|
|
||||||
$result = $lettering->letteringThirdparty($socid);
|
$result = $lettering->letteringThirdparty($socid);
|
||||||
@ -111,9 +119,9 @@ if ($action == 'autolettrage') {
|
|||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
/*
|
|
||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -122,7 +130,7 @@ $formaccounting = new FormAccounting($db);
|
|||||||
|
|
||||||
$title=$object->name." - ".$langs->trans('TabLetteringCustomer');
|
$title=$object->name." - ".$langs->trans('TabLetteringCustomer');
|
||||||
$help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas';
|
$help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas';
|
||||||
llxHeader('',$title,$help_url);
|
llxHeader('', $title, $help_url);
|
||||||
|
|
||||||
$head = societe_prepare_head($object);
|
$head = societe_prepare_head($object);
|
||||||
|
|
||||||
@ -136,20 +144,19 @@ dol_banner_tab($object, 'socid', $linkback, ($user->societe_id?0:1), 'rowid', 'n
|
|||||||
|
|
||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
|
|
||||||
print '<br>';
|
|
||||||
|
|
||||||
$sql = "SELECT bk.rowid, bk.doc_date, bk.doc_type, bk.doc_ref, ";
|
$sql = "SELECT bk.rowid, bk.doc_date, bk.doc_type, bk.doc_ref, ";
|
||||||
$sql .= " bk.subledger_account, bk.numero_compte , bk.label_compte, bk.debit, ";
|
$sql .= " bk.subledger_account, 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 .= " 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 .= " FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping as bk";
|
||||||
$sql .= " WHERE (bk.subledger_account = '" . $object->code_compta . "' AND bk.numero_compte = '" . $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER . "' )";
|
$sql .= " WHERE (bk.subledger_account = '" . $object->code_compta . "' AND bk.numero_compte = '" . $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER . "' )";
|
||||||
|
|
||||||
if (dol_strlen($search_year)) {
|
/*
|
||||||
$date_start = dol_mktime(0, 0, 0, 1, 1, $search_year);
|
if (dol_strlen($search_date_start) || dol_strlen($search_date_end)) {
|
||||||
$date_end = dol_mktime(23, 59, 59, 12, 31, $search_year);
|
$sql .= " AND ( bk.doc_date BETWEEN '" . $db->idate($search_date_start) . "' AND '" . $db->idate($search_date_end) . "' )";
|
||||||
$sql .= " AND ( bk.doc_date BETWEEN '" . $db->idate($date_start) . "' AND '" . $db->idate($date_end) . "' )";
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
$sql.= ' AND bk.entity IN ('.getEntity('accountingbookkeeping').')';
|
||||||
$sql .= $db->order($sortfield, $sortorder);
|
$sql .= $db->order($sortfield, $sortorder);
|
||||||
|
|
||||||
$debit = 0;
|
$debit = 0;
|
||||||
@ -180,92 +187,123 @@ if (! $resql) {
|
|||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$param='';
|
||||||
|
$param.="&socid=".urlencode($socid);
|
||||||
|
|
||||||
$num = $db->num_rows($resql);
|
$num = $db->num_rows($resql);
|
||||||
|
|
||||||
dol_syslog("/accountancy/bookkeeping/thirdparty_lettering_customer.php", LOG_DEBUG);
|
dol_syslog("/accountancy/bookkeeping/thirdparty_lettering_customer.php", LOG_DEBUG);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
|
$param="&socid=".$socid;
|
||||||
print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '?socid=' . $object->id . '" method="POST">';
|
print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '?socid=' . $object->id . '" method="POST">';
|
||||||
print '<input type="hidden" name="socid" value="' . $object->id . '">';
|
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);
|
$letteringbutton = '<a class="divButAction"><span class="valignmiddle"><input class="butAction" type="submit" value="lettering" name="lettering" id="lettering"></span></a>';
|
||||||
|
|
||||||
|
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_companies', 0, $letteringbutton, '', $limit);
|
||||||
|
|
||||||
|
print '<div class="div-table-responsive-no-min">';
|
||||||
|
print '<table class="liste" width="100%">'."\n";
|
||||||
|
|
||||||
|
/*
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
//print '<td><input type="text" name="search_doc_type" value="' . $search_doc_type . '"></td>';
|
||||||
|
|
||||||
|
// Date
|
||||||
|
print '<td class="liste_titre center">';
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $langs->trans('From') . ' ';
|
||||||
|
print $form->selectDate($search_date_start, 'date_creation_start', 0, 0, 1);
|
||||||
|
print '</div>';
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $langs->trans('to') . ' ';
|
||||||
|
print $form->selectDate($search_date_end, 'date_creation_end', 0, 0, 1);
|
||||||
|
print '</div>';
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
// Piece
|
||||||
|
print '<td><input type="text" name="search_doc_ref" value="' . $search_doc_ref . '"></td>';
|
||||||
|
|
||||||
|
print '<td colspan="6"> </td>';
|
||||||
|
print '<td class="right">';
|
||||||
|
$searchpicto = $form->showFilterButtons();
|
||||||
|
print $searchpicto;
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
*/
|
||||||
|
|
||||||
print "<table class=\"noborder\" width=\"100%\">";
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print_liste_field_titre("Doctype", $_SERVER["PHP_SELF"], "bk.doc_type", "", $param, "", $sortfield, $sortorder);
|
//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("Docdate", $_SERVER["PHP_SELF"], "bk.doc_date", "", $param, "", $sortfield, $sortorder, 'center ');
|
||||||
print_liste_field_titre("Docref", $_SERVER["PHP_SELF"], "bk.doc_ref", "", $param, "", $sortfield, $sortorder);
|
print_liste_field_titre("Piece", $_SERVER["PHP_SELF"], "bk.doc_ref", "", $param, "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("LabelAccount", $_SERVER["PHP_SELF"], "bk.label_compte", "", $param, "", $sortfield, $sortorder);
|
print_liste_field_titre("LabelAccount", $_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("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("Credit", $_SERVER["PHP_SELF"], "bk.credit", "", $param, "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Balancing", $_SERVER["PHP_SELF"], "", "", $param, "", $sortfield, $sortorder);
|
print_liste_field_titre("Balancing", $_SERVER["PHP_SELF"], "", "", $param, "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Codejournal", $_SERVER["PHP_SELF"], "bk.code_journal", "", $param, "", $sortfield, $sortorder);
|
print_liste_field_titre("Codejournal", $_SERVER["PHP_SELF"], "bk.code_journal", "", $param, "", $sortfield, $sortorder, 'center ');
|
||||||
print_liste_field_titre("LetteringCode", $_SERVER["PHP_SELF"], "bk.lettering_code", "", $param, "", $sortfield, $sortorder);
|
print_liste_field_titre("LetteringCode", $_SERVER["PHP_SELF"], "bk.lettering_code", "", $param, "", $sortfield, $sortorder, 'center ');
|
||||||
|
print_liste_field_titre("", "", "", '', '', "", $sortfield, $sortorder, 'maxwidthsearch center ');
|
||||||
print "</tr>\n";
|
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="5"> </td>';
|
|
||||||
print '<td align="right">';
|
|
||||||
$searchpicto = $form->showFilterButtons();
|
|
||||||
print $searchpicto;
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
$solde = 0;
|
$solde = 0;
|
||||||
$tmp = '';
|
$tmp = '';
|
||||||
while ( $obj = $db->fetch_object($resql) ) {
|
|
||||||
|
while ( $obj = $db->fetch_object($resql) ) {
|
||||||
|
|
||||||
if ($tmp != $obj->lettering_code || empty($tmp)) $tmp = $obj->lettering_code;
|
if ($tmp != $obj->lettering_code || empty($tmp)) $tmp = $obj->lettering_code;
|
||||||
/*if ($tmp != $obj->lettering_code || empty($obj->lettering_code))*/ $solde += ($obj->credit - $obj->debit);
|
/*if ($tmp != $obj->lettering_code || empty($obj->lettering_code))*/ $solde += ($obj->credit - $obj->debit);
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
|
|
||||||
if (empty($obj->lettering_code)) {
|
//print '<td>' . $obj->doc_type . '</td>' . "\n";
|
||||||
print '<td><a href="' . dol_buildpath('/accountancy/bookkeeping/card.php', 1) . '?piece_num=' . $obj->piece_num . '">';
|
print '<td class="center">' . dol_print_date($db->jdate($obj->doc_date), 'day') . '</td>';
|
||||||
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->doc_ref . '</td>';
|
||||||
print '<td>' . $obj->label_compte . '</td>';
|
print '<td>' . $obj->label_compte . '</td>';
|
||||||
print '<td align="right">' . price($obj->debit) . '</td>';
|
print '<td class="right">' . price($obj->debit) . '</td>';
|
||||||
print '<td align="right">' . price($obj->credit) . '</td>';
|
print '<td class="right">' . price($obj->credit) . '</td>';
|
||||||
print '<td align="right">' . price(round($solde, 2)) . '</td>';
|
print '<td class="right">' . price(round($solde, 2)) . '</td>';
|
||||||
print '<td align="center">' . $obj->code_journal . '</td>';
|
|
||||||
|
|
||||||
if (empty($obj->lettering_code)) {
|
// Journal
|
||||||
print '<td class="nowrap" align="center"><input type="checkbox" class="flat checkforselect" name="toselect[]" id="toselect[]" value="' . $obj->rowid . '" /></td>';
|
$accountingjournal = new AccountingJournal($db);
|
||||||
} else
|
$result = $accountingjournal->fetch('', $obj->code_journal);
|
||||||
print '<td align="center">' . $obj->lettering_code . '</td>';
|
$journaltoshow = (($result > 0)?$accountingjournal->getNomUrl(0, 0, 0, '', 0) : $obj->code_journal);
|
||||||
|
print '<td class="center">' . $journaltoshow . '</td>';
|
||||||
|
|
||||||
|
if (empty($obj->lettering_code)) {
|
||||||
|
print '<td class="nowrap center"><input type="checkbox" class="flat checkforselect" name="toselect[]" id="toselect[]" value="' . $obj->rowid . '" /></td>';
|
||||||
|
print '<td><a href="'.DOL_URL_ROOT.'/accountancy/bookkeeping/card.php?piece_num=' . $obj->piece_num . '">';
|
||||||
|
print img_edit();
|
||||||
|
print '</a></td>' . "\n";
|
||||||
|
} else {
|
||||||
|
print '<td class="center">' . $obj->lettering_code . '</td>';
|
||||||
|
print '<td></td>';
|
||||||
|
}
|
||||||
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td align="right" colspan="4">'.$langs->trans("Total").':</td>' . "\n";
|
print '<td class="right" colspan="3">'.$langs->trans("Total").':</td>' . "\n";
|
||||||
print '<td align="right"><strong>' . price($debit) . '</strong></td>';
|
print '<td class="right"><strong>' . price($debit) . '</strong></td>';
|
||||||
print '<td align="right"><strong>' . price($credit) . '</strong></td>';
|
print '<td class="right"><strong>' . price($credit) . '</strong></td>';
|
||||||
print '<td colspan="5"></td>';
|
print '<td colspan="4"></td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td align="right" colspan="4">'.$langs->trans("Balancing").':</td>' . "\n";
|
print '<td class="right" colspan="3">'.$langs->trans("Balancing").':</td>' . "\n";
|
||||||
print '<td colspan="2"> </td>';
|
print '<td colspan="2"> </td>';
|
||||||
print '<td align="right"><strong>' . price($credit - $debit) . '</strong></td>';
|
print '<td class="right"><strong>' . price($credit - $debit) . '</strong></td>';
|
||||||
print '<td colspan="3"></td>';
|
print '<td colspan="6"></td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
print "</table>";
|
print "</table>";
|
||||||
|
|
||||||
print '<input class="butAction" type="submit" value="lettering" name="lettering" id="lettering">';
|
print '<div class="tabsAction tabsActionNoBottom">'."\n";
|
||||||
//print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?socid=' . $object->id . '&action=autolettering">' . $langs->trans('AccountancyAutoLettering') . '</a>';
|
print $letteringbutton;
|
||||||
|
print '</div>';
|
||||||
|
|
||||||
print "</form>";
|
print "</form>";
|
||||||
$db->free($resql);
|
$db->free($resql);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -3,8 +3,8 @@
|
|||||||
* Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2013 Olivier Geffroy <jeff@jeffinfo.com>
|
* Copyright (C) 2013 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2013-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2013-2019 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2018-2019 Frédéric France <frederic.france@netlogic.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* 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
|
||||||
@ -18,7 +18,6 @@
|
|||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -30,17 +29,19 @@ 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';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/bookkeeping.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/bookkeeping.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/lettering.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/lettering.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountingjournal.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';
|
||||||
|
|
||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("compta","accountancy"));
|
$langs->loadLangs(array("compta","accountancy"));
|
||||||
|
|
||||||
$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');
|
||||||
|
$socid = GETPOST('socid', 'int')?GETPOST('socid', 'int'):GETPOST('id', 'int');
|
||||||
|
|
||||||
$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');
|
||||||
@ -53,27 +54,31 @@ $offset = $limit * $page;
|
|||||||
$pageprev = $page - 1;
|
$pageprev = $page - 1;
|
||||||
$pagenext = $page + 1;
|
$pagenext = $page + 1;
|
||||||
if ($sortorder == "")
|
if ($sortorder == "")
|
||||||
$sortorder = "DESC";
|
$sortorder = "ASC";
|
||||||
if ($sortfield == "")
|
if ($sortfield == "")
|
||||||
$sortfield = "bk.doc_date";
|
$sortfield = "bk.doc_date";
|
||||||
|
|
||||||
$search_year = GETPOST("search_year",'int');
|
/*
|
||||||
$search_doc_type = GETPOST("search_doc_type",'alpha');
|
$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_doc_type = GETPOST("search_doc_type",'alpha');
|
||||||
$search_doc_ref = GETPOST("search_doc_ref",'alpha');
|
$search_doc_ref = GETPOST("search_doc_ref",'alpha');
|
||||||
|
*/
|
||||||
|
|
||||||
$lettering = GETPOST('lettering', 'alpha');
|
$lettering = GETPOST('lettering', 'alpha');
|
||||||
if (!empty($lettering)) {
|
if (!empty($lettering)) {
|
||||||
$action=$lettering;
|
$action=$lettering;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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')) // 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_date_start = '';
|
||||||
$search_doc_type='';
|
$search_date_end = '';
|
||||||
|
//$search_doc_type='';
|
||||||
$search_doc_ref='';
|
$search_doc_ref='';
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
@ -103,6 +108,7 @@ if ($action == 'lettering') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
if ($action == 'autolettrage') {
|
if ($action == 'autolettrage') {
|
||||||
|
|
||||||
$result = $lettering->letteringThirdparty($socid);
|
$result = $lettering->letteringThirdparty($socid);
|
||||||
@ -112,7 +118,7 @@ if ($action == 'autolettrage') {
|
|||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* View
|
* View
|
||||||
@ -123,7 +129,7 @@ $formaccounting = new FormAccounting($db);
|
|||||||
|
|
||||||
$title=$object->name." - ".$langs->trans('TabLetteringSupplier');
|
$title=$object->name." - ".$langs->trans('TabLetteringSupplier');
|
||||||
$help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas';
|
$help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas';
|
||||||
llxHeader('',$title,$help_url);
|
llxHeader('', $title, $help_url);
|
||||||
|
|
||||||
$head = societe_prepare_head($object);
|
$head = societe_prepare_head($object);
|
||||||
|
|
||||||
@ -142,14 +148,11 @@ $sql .= " bk.subledger_account, 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 .= " 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 .= " FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping as bk";
|
||||||
$sql .= " WHERE (bk.subledger_account = '" . $object->code_compta_fournisseur . "' AND bk.numero_compte = '" . $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER . "' )";
|
$sql .= " WHERE (bk.subledger_account = '" . $object->code_compta_fournisseur . "' AND bk.numero_compte = '" . $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER . "' )";
|
||||||
|
if (dol_strlen($search_date_start) || dol_strlen($search_date_end)) {
|
||||||
if (dol_strlen($search_year)) {
|
$sql .= " AND (bk.doc_date BETWEEN '".$db->idate($search_date_start)."' AND '".$db->idate($search_date_end)."' )";
|
||||||
$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.= ' AND bk.entity IN ('.getEntity('accountingbookkeeping').')';
|
||||||
$sql.= $db->order($sortfield,$sortorder);
|
$sql.= $db->order($sortfield, $sortorder);
|
||||||
|
|
||||||
$debit = 0;
|
$debit = 0;
|
||||||
$credit = 0;
|
$credit = 0;
|
||||||
@ -173,51 +176,75 @@ while ($obj = $db->fetch_object($resql)) {
|
|||||||
|
|
||||||
$sql.= $db->plimit($limit+1, $offset);
|
$sql.= $db->plimit($limit+1, $offset);
|
||||||
|
|
||||||
dol_syslog ( "/accountancy/bookkeeping/thirdparty_lettrage_supplier.php", LOG_DEBUG );
|
dol_syslog("/accountancy/bookkeeping/thirdparty_lettering_supplier.php", LOG_DEBUG);
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if (! $resql)
|
if (! $resql) {
|
||||||
{
|
|
||||||
dol_print_error($db);
|
dol_print_error($db);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$param='';
|
||||||
|
$param.="&socid=".urlencode($socid);
|
||||||
|
|
||||||
$num = $db->num_rows($resql);
|
$num = $db->num_rows($resql);
|
||||||
|
|
||||||
dol_syslog ( "/accountancy/bookkeeping/thirdparty_lettrage_supplier.php", LOG_DEBUG );
|
dol_syslog("/accountancy/bookkeeping/thirdparty_lettering_supplier.php", LOG_DEBUG);
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
$num = $db->num_rows($resql);
|
$num = $db->num_rows($resql);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
|
$param="&socid=".$socid;
|
||||||
print '<form name="add" action="'.$_SERVER["PHP_SELF"].'?socid=' . $object->id . '" method="POST">';
|
print '<form name="add" action="'.$_SERVER["PHP_SELF"].'?socid=' . $object->id . '" method="POST">';
|
||||||
print '<input type="hidden" name="socid" value="' . $object->id . '">';
|
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);
|
$letteringbutton = '<a class="divButAction"><span class="valignmiddle"><input class="butAction" type="submit" value="lettering" name="lettering" id="lettering"></span></a>';
|
||||||
|
|
||||||
|
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_companies', 0, $letteringbutton, '', $limit);
|
||||||
|
|
||||||
|
print '<div class="div-table-responsive-no-min">';
|
||||||
|
print '<table class="liste" width="100%">'."\n";
|
||||||
|
|
||||||
|
/*
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
//print '<td><input type="text" name="search_doc_type" value="' . $search_doc_type . '"></td>';
|
||||||
|
|
||||||
|
// Date
|
||||||
|
print '<td class="liste_titre center">';
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $langs->trans('From') . ' ';
|
||||||
|
print $form->selectDate($search_date_start, 'date_creation_start', 0, 0, 1);
|
||||||
|
print '</div>';
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $langs->trans('to') . ' ';
|
||||||
|
print $form->selectDate($search_date_end, 'date_creation_end', 0, 0, 1);
|
||||||
|
print '</div>';
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
// Piece
|
||||||
|
print '<td><input type="text" name="search_doc_ref" value="' . $search_doc_ref . '"></td>';
|
||||||
|
|
||||||
|
print '<td colspan="6"> </td>';
|
||||||
|
print '<td class="right">';
|
||||||
|
$searchpicto = $form->showFilterButtons();
|
||||||
|
print $searchpicto;
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
*/
|
||||||
|
|
||||||
print "<table class=\"noborder\" width=\"100%\">";
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print_liste_field_titre("Doctype", $_SERVER["PHP_SELF"], "bk.doc_type","",$param,"",$sortfield,$sortorder);
|
//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("Docdate", $_SERVER["PHP_SELF"], "bk.doc_date", "", $param, "", $sortfield, $sortorder, 'center ');
|
||||||
print_liste_field_titre("Docref", $_SERVER["PHP_SELF"], "bk.doc_ref","",$param,"",$sortfield,$sortorder);
|
print_liste_field_titre("Piece", $_SERVER["PHP_SELF"], "bk.doc_ref", "", $param, "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("LabelAccount", $_SERVER["PHP_SELF"], "bk.label_compte","",$param,"",$sortfield,$sortorder);
|
print_liste_field_titre("LabelAccount", $_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("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("Credit", $_SERVER["PHP_SELF"], "bk.credit", "", $param, "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Balancing", $_SERVER["PHP_SELF"], "","",$param,"",$sortfield,$sortorder);
|
print_liste_field_titre("Balancing", $_SERVER["PHP_SELF"], "", "", $param, "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Codejournal", $_SERVER["PHP_SELF"], "bk.code_journal","",$param,"",$sortfield,$sortorder);
|
print_liste_field_titre("Codejournal", $_SERVER["PHP_SELF"], "bk.code_journal", "", $param, "", $sortfield, $sortorder, 'center ');
|
||||||
print_liste_field_titre("LetteringCode", $_SERVER["PHP_SELF"], "bk.lettering_code", "", $param, "", $sortfield, $sortorder);
|
print_liste_field_titre("LetteringCode", $_SERVER["PHP_SELF"], "bk.lettering_code", "", $param, "", $sortfield, $sortorder, 'center ');
|
||||||
|
print_liste_field_titre("", "", "", '', '', "", $sortfield, $sortorder, 'maxwidthsearch center ');
|
||||||
print "</tr>\n";
|
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="6"> </td>';
|
|
||||||
print '<td align="right">';
|
|
||||||
$searchpicto=$form->showFilterButtons();
|
|
||||||
print $searchpicto;
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
$solde = 0;
|
$solde = 0;
|
||||||
$tmp = '';
|
$tmp = '';
|
||||||
while ($obj = $db->fetch_object($resql)) {
|
while ($obj = $db->fetch_object($resql)) {
|
||||||
@ -227,48 +254,53 @@ if ($resql) {
|
|||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
|
|
||||||
if (empty($obj->lettering_code)) {
|
//print '<td>' . $obj->doc_type . '</td>' . "\n";
|
||||||
print '<td><a href="' . dol_buildpath('/accountancy/bookkeeping/card.php', 1) . '?piece_num=' . $obj->piece_num . '">';
|
print '<td class="center">' . dol_print_date($db->jdate($obj->doc_date), 'day') . '</td>';
|
||||||
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->doc_ref . '</td>';
|
||||||
print '<td>' . $obj->label_compte . '</td>';
|
print '<td>' . $obj->label_compte . '</td>';
|
||||||
print '<td align="right">' . price($obj->debit) . '</td>';
|
print '<td class="right">' . price($obj->debit) . '</td>';
|
||||||
print '<td align="right">' . price($obj->credit) . '</td>';
|
print '<td class="right">' . price($obj->credit) . '</td>';
|
||||||
print '<td align="right">' . price(round($solde, 2)) . '</td>';
|
print '<td class="right">' . price(round($solde, 2)) . '</td>';
|
||||||
print '<td align="center">' . $obj->code_journal . '</td>';
|
|
||||||
|
// Journal
|
||||||
|
$accountingjournal = new AccountingJournal($db);
|
||||||
|
$result = $accountingjournal->fetch('', $obj->code_journal);
|
||||||
|
$journaltoshow = (($result > 0)?$accountingjournal->getNomUrl(0, 0, 0, '', 0) : $obj->code_journal);
|
||||||
|
print '<td class="center">' . $journaltoshow . '</td>';
|
||||||
|
|
||||||
if (empty($obj->lettering_code)) {
|
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>';
|
print '<td class="nowrap center"><input type="checkbox" class="flat checkforselect" name="toselect[]" id="toselect[]" value="' . $obj->rowid . '" /></td>';
|
||||||
} else
|
print '<td><a href="'.DOL_URL_ROOT.'/accountancy/bookkeeping/card.php?piece_num=' . $obj->piece_num . '">';
|
||||||
print '<td align="center">' . $obj->lettering_code . '</td>';
|
print img_edit();
|
||||||
|
print '</a></td>' . "\n";
|
||||||
|
} else {
|
||||||
|
print '<td class="center">' . $obj->lettering_code . '</td>';
|
||||||
|
print '<td></td>';
|
||||||
|
}
|
||||||
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td align="right" colspan="4">'.$langs->trans("Total").':</td>' . "\n";
|
print '<td class="right" colspan="3">'.$langs->trans("Total").':</td>' . "\n";
|
||||||
print '<td align="right"><strong>' . price($debit) . '</strong></td>';
|
print '<td class="right"><strong>' . price($debit) . '</strong></td>';
|
||||||
print '<td align="right"><strong>' . price($credit) . '</strong></td>';
|
print '<td class="right"><strong>' . price($credit) . '</strong></td>';
|
||||||
print '<td colspan="5"></td>';
|
print '<td colspan="6"></td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td align="right" colspan="4">'.$langs->trans("Balancing").':</td>' . "\n";
|
print '<td class="right" colspan="3">'.$langs->trans("Balancing").':</td>' . "\n";
|
||||||
print '<td colspan="2"> </td>';
|
print '<td colspan="2"> </td>';
|
||||||
print '<td align="right"><strong>' . price($credit - $debit) . '</strong></td>';
|
print '<td class="right"><strong>' . price($credit - $debit) . '</strong></td>';
|
||||||
print '<td colspan="3"></td>';
|
print '<td colspan="4"></td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
print "</table>";
|
print "</table>";
|
||||||
|
|
||||||
print '<input class="butAction" type="submit" value="' . $langs->trans('AccountancyLettering') . '" name="lettering" id="lettering">';
|
print '<div class="tabsAction tabsActionNoBottom">'."\n";
|
||||||
//print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?socid=' . $object->id . '&action=autolettrage">'.$langs->trans('AccountancyAutoLettering').'</a>';
|
print $letteringbutton;
|
||||||
|
print '</div>';
|
||||||
|
|
||||||
print "</form>";
|
print "</form>";
|
||||||
$db->free($resql);
|
$db->free($resql);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2016 Jamal Elbaz <jamelbaz@gmail.pro>
|
/* Copyright (C) 2016 Jamal Elbaz <jamelbaz@gmail.pro>
|
||||||
* Copyright (C) 2016-2017 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2016-2017 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2018-2019 Frédéric France <frederic.france@netlogic.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* 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
|
||||||
@ -38,7 +38,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Error string
|
* @var string Error string
|
||||||
* @see errors
|
* @see $errors
|
||||||
*/
|
*/
|
||||||
public $error;
|
public $error;
|
||||||
|
|
||||||
@ -63,7 +63,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
public $id;
|
public $id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var mixed Sample property 1
|
* @var string Accountancy code
|
||||||
*/
|
*/
|
||||||
public $code;
|
public $code;
|
||||||
|
|
||||||
@ -73,7 +73,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
public $label;
|
public $label;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var mixed Sample property 1
|
* @var string Accountancy range account
|
||||||
*/
|
*/
|
||||||
public $range_account;
|
public $range_account;
|
||||||
|
|
||||||
@ -83,37 +83,37 @@ class AccountancyCategory // extends CommonObject
|
|||||||
public $sens;
|
public $sens;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var mixed Sample property 1
|
* @var int Category type of accountancy
|
||||||
*/
|
*/
|
||||||
public $category_type;
|
public $category_type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var mixed Sample property 1
|
* @var string Formula
|
||||||
*/
|
*/
|
||||||
public $formula;
|
public $formula;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var mixed Sample property 1
|
* @var int Position
|
||||||
*/
|
*/
|
||||||
public $position;
|
public $position;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var mixed Sample property 1
|
* @var int country id
|
||||||
*/
|
*/
|
||||||
public $fk_country;
|
public $fk_country;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var mixed Sample property 1
|
* @var int Is active
|
||||||
*/
|
*/
|
||||||
public $active;
|
public $active;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var mixed Sample property 1
|
* @var array Lines cptbk
|
||||||
*/
|
*/
|
||||||
public $lines_cptbk;
|
public $lines_cptbk;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var mixed Sample property 1
|
* @var array Lines display
|
||||||
*/
|
*/
|
||||||
public $lines_display;
|
public $lines_display;
|
||||||
|
|
||||||
@ -129,7 +129,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
*
|
*
|
||||||
* @param DoliDb $db Database handler
|
* @param DoliDb $db Database handler
|
||||||
*/
|
*/
|
||||||
function __construct($db)
|
public function __construct($db)
|
||||||
{
|
{
|
||||||
$this->db = $db;
|
$this->db = $db;
|
||||||
}
|
}
|
||||||
@ -142,7 +142,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
||||||
* @return int <0 if KO, Id of created object if OK
|
* @return int <0 if KO, Id of created object if OK
|
||||||
*/
|
*/
|
||||||
function create($user, $notrigger=0)
|
public function create($user, $notrigger = 0)
|
||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
$error=0;
|
$error=0;
|
||||||
@ -151,12 +151,12 @@ class AccountancyCategory // extends CommonObject
|
|||||||
if (isset($this->code)) $this->code=trim($this->code);
|
if (isset($this->code)) $this->code=trim($this->code);
|
||||||
if (isset($this->label)) $this->label=trim($this->label);
|
if (isset($this->label)) $this->label=trim($this->label);
|
||||||
if (isset($this->range_account)) $this->range_account=trim($this->range_account);
|
if (isset($this->range_account)) $this->range_account=trim($this->range_account);
|
||||||
if (isset($this->sens)) $this->sens=trim($this->sens);
|
if (isset($this->sens)) $this->sens = (int) $this->sens;
|
||||||
if (isset($this->category_type)) $this->category_type=trim($this->category_type);
|
if (isset($this->category_type)) $this->category_type = (int) $this->category_type;
|
||||||
if (isset($this->formula)) $this->formula=trim($this->formula);
|
if (isset($this->formula)) $this->formula=trim($this->formula);
|
||||||
if (isset($this->position)) $this->position=trim($this->position);
|
if (isset($this->position)) $this->position = (int) $this->position;
|
||||||
if (isset($this->fk_country)) $this->fk_country=trim($this->fk_country);
|
if (isset($this->fk_country)) $this->fk_country = (int) $this->fk_country;
|
||||||
if (isset($this->active)) $this->active=trim($this->active);
|
if (isset($this->active)) $this->active = (int) $this->active;
|
||||||
|
|
||||||
// Check parameters
|
// Check parameters
|
||||||
// Put here code to add control on parameters values
|
// Put here code to add control on parameters values
|
||||||
@ -239,7 +239,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
* @param string $label Label
|
* @param string $label Label
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function fetch($id, $code='', $label='')
|
public function fetch($id, $code = '', $label = '')
|
||||||
{
|
{
|
||||||
$sql = "SELECT";
|
$sql = "SELECT";
|
||||||
$sql.= " t.rowid,";
|
$sql.= " t.rowid,";
|
||||||
@ -299,7 +299,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function update($user=null, $notrigger=0)
|
public function update($user = null, $notrigger = 0)
|
||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
$error=0;
|
$error=0;
|
||||||
@ -308,12 +308,12 @@ class AccountancyCategory // extends CommonObject
|
|||||||
if (isset($this->code)) $this->code=trim($this->code);
|
if (isset($this->code)) $this->code=trim($this->code);
|
||||||
if (isset($this->label)) $this->label=trim($this->label);
|
if (isset($this->label)) $this->label=trim($this->label);
|
||||||
if (isset($this->range_account)) $this->range_account=trim($this->range_account);
|
if (isset($this->range_account)) $this->range_account=trim($this->range_account);
|
||||||
if (isset($this->sens)) $this->sens=trim($this->sens);
|
if (isset($this->sens)) $this->sens = (int) $this->sens;
|
||||||
if (isset($this->category_type)) $this->category_type=trim($this->category_type);
|
if (isset($this->category_type)) $this->category_type = (int) $this->category_type;
|
||||||
if (isset($this->formula)) $this->formula=trim($this->formula);
|
if (isset($this->formula)) $this->formula=trim($this->formula);
|
||||||
if (isset($this->position)) $this->position=trim($this->position);
|
if (isset($this->position)) $this->position = (int) $this->position;
|
||||||
if (isset($this->fk_country)) $this->fk_country=trim($this->fk_country);
|
if (isset($this->fk_country)) $this->fk_country = (int) $this->fk_country;
|
||||||
if (isset($this->active)) $this->active=trim($this->active);
|
if (isset($this->active)) $this->active = (int) $this->active;
|
||||||
|
|
||||||
|
|
||||||
// Check parameters
|
// Check parameters
|
||||||
@ -338,8 +338,8 @@ class AccountancyCategory // extends CommonObject
|
|||||||
$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)
|
||||||
{
|
//{
|
||||||
// Uncomment this and change MYOBJECT to your own tag if you
|
// Uncomment this and change MYOBJECT to your own tag if you
|
||||||
// want this action call a trigger.
|
// want this action call a trigger.
|
||||||
//if (! $notrigger)
|
//if (! $notrigger)
|
||||||
@ -351,7 +351,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
// if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
// if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||||
// // End call triggers
|
// // End call triggers
|
||||||
//}
|
//}
|
||||||
}
|
//}
|
||||||
|
|
||||||
// Commit or rollback
|
// Commit or rollback
|
||||||
if ($error)
|
if ($error)
|
||||||
@ -379,7 +379,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function delete($user, $notrigger=0)
|
public function delete($user, $notrigger = 0)
|
||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
$error=0;
|
$error=0;
|
||||||
@ -393,8 +393,8 @@ class AccountancyCategory // extends CommonObject
|
|||||||
$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)
|
||||||
{
|
//{
|
||||||
// Uncomment this and change MYOBJECT to your own tag if you
|
// Uncomment this and change MYOBJECT to your own tag if you
|
||||||
// want this action call a trigger.
|
// want this action call a trigger.
|
||||||
//if (! $notrigger)
|
//if (! $notrigger)
|
||||||
@ -406,7 +406,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
// if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
// if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||||
// // End call triggers
|
// // End call triggers
|
||||||
//}
|
//}
|
||||||
}
|
//}
|
||||||
|
|
||||||
// Commit or rollback
|
// Commit or rollback
|
||||||
if ($error)
|
if ($error)
|
||||||
@ -460,7 +460,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
|
|
||||||
return - 1;
|
return - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to select accounting category of an accounting account present in chart of accounts
|
* Function to select accounting category of an accounting account present in chart of accounts
|
||||||
@ -509,12 +509,12 @@ class AccountancyCategory // extends CommonObject
|
|||||||
|
|
||||||
return - 1;
|
return - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to select accounting category of an accounting account present in chart of accounts
|
* Function to select accounting category of an accounting account present in chart of accounts
|
||||||
*
|
*
|
||||||
* @param int $id Id category
|
* @param int $id Id of category to know which account to exclude
|
||||||
*
|
*
|
||||||
* @return int <0 if KO, 0 if not found, >0 if OK
|
* @return int <0 if KO, 0 if not found, >0 if OK
|
||||||
*/
|
*/
|
||||||
@ -552,7 +552,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
|
|
||||||
return - 1;
|
return - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to add an accounting account in an accounting category
|
* Function to add an accounting account in an accounting category
|
||||||
@ -569,12 +569,13 @@ class AccountancyCategory // extends CommonObject
|
|||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
|
||||||
|
|
||||||
$sql = "SELECT aa.rowid,aa.account_number ";
|
$sql = "SELECT aa.rowid, aa.account_number";
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_account as aa";
|
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_account as aa";
|
||||||
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "accounting_system as asy ON aa.fk_pcg_version = asy.pcg_version";
|
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "accounting_system as asy ON aa.fk_pcg_version = asy.pcg_version";
|
||||||
$sql .= " AND asy.rowid = " . $conf->global->CHARTOFACCOUNTS;
|
$sql .= " AND asy.rowid = " . $conf->global->CHARTOFACCOUNTS;
|
||||||
$sql .= " AND aa.active = 1";
|
$sql .= " AND aa.active = 1";
|
||||||
$sql .= " AND aa.entity = " . $conf->entity;
|
$sql .= " AND aa.entity = " . $conf->entity;
|
||||||
|
$sql .= " ORDER BY LENGTH(aa.account_number) DESC;"; // LENGTH is ok with mysql and postgresql
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
@ -587,10 +588,16 @@ class AccountancyCategory // extends CommonObject
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( $obj = $this->db->fetch_object($resql))
|
$accountincptsadded=array();
|
||||||
|
while ($obj = $this->db->fetch_object($resql))
|
||||||
{
|
{
|
||||||
if (array_key_exists(length_accountg($obj->account_number), $cpts))
|
$account_number_formated=length_accountg($obj->account_number);
|
||||||
|
if (! empty($accountincptsadded[$account_number_formated])) continue;
|
||||||
|
|
||||||
|
if (array_key_exists($account_number_formated, $cpts))
|
||||||
{
|
{
|
||||||
|
$accountincptsadded[$account_number_formated]=1;
|
||||||
|
// We found an account number that is in list $cpts of account to add
|
||||||
$sql = "UPDATE " . MAIN_DB_PREFIX . "accounting_account";
|
$sql = "UPDATE " . MAIN_DB_PREFIX . "accounting_account";
|
||||||
$sql .= " SET fk_accounting_category=" . $id_cat;
|
$sql .= " SET fk_accounting_category=" . $id_cat;
|
||||||
$sql .= " WHERE rowid=".$obj->rowid;
|
$sql .= " WHERE rowid=".$obj->rowid;
|
||||||
@ -605,7 +612,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
|
|
||||||
// Commit or rollback
|
// Commit or rollback
|
||||||
if ($error) {
|
if ($error) {
|
||||||
foreach ( $this->errors as $errmsg ) {
|
foreach ($this->errors as $errmsg) {
|
||||||
dol_syslog(__METHOD__ . " " . $errmsg, LOG_ERR);
|
dol_syslog(__METHOD__ . " " . $errmsg, LOG_ERR);
|
||||||
$this->error .= ($this->error ? ', ' . $errmsg : $errmsg);
|
$this->error .= ($this->error ? ', ' . $errmsg : $errmsg);
|
||||||
}
|
}
|
||||||
@ -617,7 +624,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to delete an accounting account from an accounting category
|
* Function to delete an accounting account from an accounting category
|
||||||
@ -643,31 +650,29 @@ class AccountancyCategory // extends CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Commit or rollback
|
// Commit or rollback
|
||||||
if ($error) {
|
if ($error) {
|
||||||
foreach ( $this->errors as $errmsg ) {
|
foreach ($this->errors as $errmsg) {
|
||||||
dol_syslog(__METHOD__ . " " . $errmsg, LOG_ERR);
|
dol_syslog(__METHOD__ . " " . $errmsg, LOG_ERR);
|
||||||
$this->error .= ($this->error ? ', ' . $errmsg : $errmsg);
|
$this->error .= ($this->error ? ', ' . $errmsg : $errmsg);
|
||||||
}
|
}
|
||||||
$this->db->rollback();
|
$this->db->rollback();
|
||||||
|
|
||||||
return - 1 * $error;
|
return - 1 * $error;
|
||||||
} else {
|
} else {
|
||||||
$this->db->commit();
|
$this->db->commit();
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to know all category from accounting account
|
* Function to know all category from accounting account
|
||||||
*
|
*
|
||||||
* @return array Result in table
|
* @return array|integer Result in table (array), -1 if KO
|
||||||
*/
|
*/
|
||||||
public function getCatsCpts()
|
public function getCatsCpts()
|
||||||
{
|
{
|
||||||
global $mysoc,$conf;
|
global $mysoc, $conf;
|
||||||
|
|
||||||
$sql = "";
|
|
||||||
|
|
||||||
if (empty($mysoc->country_id)) {
|
if (empty($mysoc->country_id)) {
|
||||||
dol_print_error('', 'Call to select_accounting_account with mysoc country not yet defined');
|
dol_print_error('', 'Call to select_accounting_account with mysoc country not yet defined');
|
||||||
@ -720,13 +725,13 @@ class AccountancyCategory // extends CommonObject
|
|||||||
* @param int|array $cpt Accounting account or array of accounting account
|
* @param int|array $cpt Accounting account or array of accounting account
|
||||||
* @param string $date_start Date start
|
* @param string $date_start Date start
|
||||||
* @param string $date_end Date end
|
* @param string $date_end Date end
|
||||||
* @param int $sens Sens of the account: 0: credit - debit, 1: debit - credit
|
* @param int $sens Sens of the account: 0: credit - debit (use this by default), 1: debit - credit
|
||||||
* @param string $thirdparty_code Thirdparty code
|
* @param string $thirdparty_code Thirdparty code
|
||||||
* @param int $month Specifig month - Can be empty
|
* @param int $month Specifig month - Can be empty
|
||||||
* @param int $year Specifig year - Can be empty
|
* @param int $year Specifig year - Can be empty
|
||||||
* @return integer <0 if KO, >= 0 if OK
|
* @return integer <0 if KO, >= 0 if OK
|
||||||
*/
|
*/
|
||||||
public function getSumDebitCredit($cpt, $date_start, $date_end, $sens, $thirdparty_code='nofilter', $month=0, $year=0)
|
public function getSumDebitCredit($cpt, $date_start, $date_end, $sens, $thirdparty_code = 'nofilter', $month = 0, $year = 0)
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
@ -796,7 +801,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
* @param int $categorytype -1=All, 0=Only non computed groups, 1=Only computed groups
|
* @param int $categorytype -1=All, 0=Only non computed groups, 1=Only computed groups
|
||||||
* @return array|int Array of groups or -1 if error
|
* @return array|int Array of groups or -1 if error
|
||||||
*/
|
*/
|
||||||
public function getCats($categorytype=-1)
|
public function getCats($categorytype = -1)
|
||||||
{
|
{
|
||||||
global $conf, $mysoc;
|
global $conf, $mysoc;
|
||||||
|
|
||||||
@ -805,7 +810,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "SELECT c.rowid, c.code, c.label, c.formula, c.position, c.category_type";
|
$sql = "SELECT c.rowid, c.code, c.label, c.formula, c.position, c.category_type, c.sens";
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "c_accounting_category as c";
|
$sql .= " FROM " . MAIN_DB_PREFIX . "c_accounting_category as c";
|
||||||
$sql .= " WHERE c.active = 1";
|
$sql .= " WHERE c.active = 1";
|
||||||
$sql .= " AND c.entity = " . $conf->entity;
|
$sql .= " AND c.entity = " . $conf->entity;
|
||||||
@ -829,7 +834,8 @@ class AccountancyCategory // extends CommonObject
|
|||||||
'label' => $obj->label,
|
'label' => $obj->label,
|
||||||
'formula' => $obj->formula,
|
'formula' => $obj->formula,
|
||||||
'position' => $obj->position,
|
'position' => $obj->position,
|
||||||
'category_type' => $obj->category_type
|
'category_type' => $obj->category_type,
|
||||||
|
'bc' => $obj->sens
|
||||||
);
|
);
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
@ -853,7 +859,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
* @param string $predefinedgroupwhere Sql criteria filter to select accounting accounts
|
* @param string $predefinedgroupwhere Sql criteria filter to select accounting accounts
|
||||||
* @return array|int Array of accounting accounts or -1 if error
|
* @return array|int Array of accounting accounts or -1 if error
|
||||||
*/
|
*/
|
||||||
public function getCptsCat($cat_id, $predefinedgroupwhere='')
|
public function getCptsCat($cat_id, $predefinedgroupwhere = '')
|
||||||
{
|
{
|
||||||
global $conf, $mysoc;
|
global $conf, $mysoc;
|
||||||
$sql = '';
|
$sql = '';
|
||||||
|
|||||||
@ -5,11 +5,11 @@
|
|||||||
* Copyright (C) 2015 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2015 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
* Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
||||||
* Copyright (C) 2016 Pierre-Henry Favre <phf@atm-consulting.fr>
|
* Copyright (C) 2016 Pierre-Henry Favre <phf@atm-consulting.fr>
|
||||||
* Copyright (C) 2016-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2016-2018 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2013-2017 Olivier Geffroy <jeff@jeffinfo.com>
|
* Copyright (C) 2013-2017 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2017 Elarifr. Ari Elbaz <github@accedinfo.com>
|
* Copyright (C) 2017 Elarifr. Ari Elbaz <github@accedinfo.com>
|
||||||
* Copyright (C) 2017 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2017-2019 Frédéric France <frederic.france@netlogic.fr>
|
||||||
|
* Copyright (C) 2017 André Schild <a.schild@aarboard.ch>
|
||||||
*
|
*
|
||||||
* 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
|
||||||
@ -31,20 +31,15 @@
|
|||||||
* \brief Class accountancy export
|
* \brief Class accountancy export
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* Class AccountancyExport
|
|
||||||
*
|
|
||||||
* Manage the different format accountancy export
|
|
||||||
*/
|
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/lib/functions.lib.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/functions.lib.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Manage the different format accountancy export
|
||||||
|
*/
|
||||||
class AccountancyExport
|
class AccountancyExport
|
||||||
{
|
{
|
||||||
/**
|
// Type of export. Used into $conf->global->ACCOUNTING_EXPORT_MODELCSV
|
||||||
* @var Type of export. Defined by $conf->global->ACCOUNTING_EXPORT_MODELCSV
|
public static $EXPORT_TYPE_NORMAL = 1; // CSV
|
||||||
*/
|
|
||||||
public static $EXPORT_TYPE_NORMAL = 1; // CSV
|
|
||||||
public static $EXPORT_TYPE_CONFIGURABLE = 10; // CSV
|
public static $EXPORT_TYPE_CONFIGURABLE = 10; // CSV
|
||||||
public static $EXPORT_TYPE_CEGID = 2;
|
public static $EXPORT_TYPE_CEGID = 2;
|
||||||
public static $EXPORT_TYPE_COALA = 3;
|
public static $EXPORT_TYPE_COALA = 3;
|
||||||
@ -55,6 +50,8 @@ class AccountancyExport
|
|||||||
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_FEC = 11;
|
public static $EXPORT_TYPE_FEC = 11;
|
||||||
|
public static $EXPORT_TYPE_OPENCONCERTO = 12;
|
||||||
|
public static $EXPORT_TYPE_SAGE50_SWISS = 13;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -98,18 +95,20 @@ class AccountancyExport
|
|||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
return array (
|
return array (
|
||||||
//self::$EXPORT_TYPE_NORMAL => $langs->trans('Modelcsv_normal'),
|
//self::$EXPORT_TYPE_NORMAL => $langs->trans('Modelcsv_normal'),
|
||||||
self::$EXPORT_TYPE_CONFIGURABLE => $langs->trans('Modelcsv_configurable'),
|
self::$EXPORT_TYPE_CONFIGURABLE => $langs->trans('Modelcsv_configurable'),
|
||||||
self::$EXPORT_TYPE_CEGID => $langs->trans('Modelcsv_CEGID'),
|
self::$EXPORT_TYPE_CEGID => $langs->trans('Modelcsv_CEGID'),
|
||||||
self::$EXPORT_TYPE_COALA => $langs->trans('Modelcsv_COALA'),
|
self::$EXPORT_TYPE_COALA => $langs->trans('Modelcsv_COALA'),
|
||||||
self::$EXPORT_TYPE_BOB50 => $langs->trans('Modelcsv_bob50'),
|
self::$EXPORT_TYPE_BOB50 => $langs->trans('Modelcsv_bob50'),
|
||||||
self::$EXPORT_TYPE_CIEL => $langs->trans('Modelcsv_ciel'),
|
self::$EXPORT_TYPE_CIEL => $langs->trans('Modelcsv_ciel'),
|
||||||
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_FEC => $langs->trans('Modelcsv_FEC'),
|
self::$EXPORT_TYPE_OPENCONCERTO => $langs->trans('Modelcsv_openconcerto'),
|
||||||
);
|
self::$EXPORT_TYPE_FEC => $langs->trans('Modelcsv_FEC'),
|
||||||
|
self::$EXPORT_TYPE_SAGE50_SWISS => $langs->trans('Modelcsv_Sage50_Swiss'),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -131,7 +130,9 @@ class AccountancyExport
|
|||||||
self::$EXPORT_TYPE_EBP => 'ebp',
|
self::$EXPORT_TYPE_EBP => 'ebp',
|
||||||
self::$EXPORT_TYPE_COGILOG => 'cogilog',
|
self::$EXPORT_TYPE_COGILOG => 'cogilog',
|
||||||
self::$EXPORT_TYPE_AGIRIS => 'agiris',
|
self::$EXPORT_TYPE_AGIRIS => 'agiris',
|
||||||
|
self::$EXPORT_TYPE_OPENCONCERTO => 'openconcerto',
|
||||||
self::$EXPORT_TYPE_FEC => 'fec',
|
self::$EXPORT_TYPE_FEC => 'fec',
|
||||||
|
self::$EXPORT_TYPE_SAGE50_SWISS => 'sage50ch',
|
||||||
);
|
);
|
||||||
|
|
||||||
return $formatcode[$type];
|
return $formatcode[$type];
|
||||||
@ -192,6 +193,14 @@ class AccountancyExport
|
|||||||
'label' => $langs->trans('Modelcsv_FEC'),
|
'label' => $langs->trans('Modelcsv_FEC'),
|
||||||
'ACCOUNTING_EXPORT_FORMAT' => 'txt',
|
'ACCOUNTING_EXPORT_FORMAT' => 'txt',
|
||||||
),
|
),
|
||||||
|
self::$EXPORT_TYPE_OPENCONCERTO => array(
|
||||||
|
'label' => $langs->trans('Modelcsv_openconcerto'),
|
||||||
|
'ACCOUNTING_EXPORT_FORMAT' => 'csv',
|
||||||
|
),
|
||||||
|
self::$EXPORT_TYPE_SAGE50_SWISS => array(
|
||||||
|
'label' => $langs->trans('Modelcsv_Sage50_Swiss'),
|
||||||
|
'ACCOUNTING_EXPORT_FORMAT' => 'csv',
|
||||||
|
),
|
||||||
),
|
),
|
||||||
'cr'=> array (
|
'cr'=> array (
|
||||||
'1' => $langs->trans("Unix"),
|
'1' => $langs->trans("Unix"),
|
||||||
@ -253,9 +262,15 @@ class AccountancyExport
|
|||||||
case self::$EXPORT_TYPE_AGIRIS :
|
case self::$EXPORT_TYPE_AGIRIS :
|
||||||
$this->exportAgiris($TData);
|
$this->exportAgiris($TData);
|
||||||
break;
|
break;
|
||||||
|
case self::$EXPORT_TYPE_OPENCONCERTO :
|
||||||
|
$this->exportOpenConcerto($TData);
|
||||||
|
break;
|
||||||
case self::$EXPORT_TYPE_FEC :
|
case self::$EXPORT_TYPE_FEC :
|
||||||
$this->exportFEC($TData);
|
$this->exportFEC($TData);
|
||||||
break;
|
break;
|
||||||
|
case self::$EXPORT_TYPE_SAGE50_SWISS :
|
||||||
|
$this->exportSAGE50SWISS($TData);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
$this->errors[] = $langs->trans('accountancy_error_modelnotfound');
|
$this->errors[] = $langs->trans('accountancy_error_modelnotfound');
|
||||||
break;
|
break;
|
||||||
@ -272,7 +287,7 @@ 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";
|
$end_line = "\n";
|
||||||
@ -298,7 +313,7 @@ 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 = ";";
|
$separator = ";";
|
||||||
$end_line = "\n";
|
$end_line = "\n";
|
||||||
@ -336,7 +351,7 @@ class AccountancyExport
|
|||||||
$separator = ";";
|
$separator = ";";
|
||||||
$end_line = "\n";
|
$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 . $separator;
|
print $date . $separator;
|
||||||
print $line->code_journal . $separator;
|
print $line->code_journal . $separator;
|
||||||
@ -365,7 +380,7 @@ class AccountancyExport
|
|||||||
$separator = ";";
|
$separator = ";";
|
||||||
$end_line = "\n";
|
$end_line = "\n";
|
||||||
|
|
||||||
foreach ( $objectLines as $line ) {
|
foreach ($objectLines as $line) {
|
||||||
print $line->piece_num . $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 . $separator;
|
print $date . $separator;
|
||||||
@ -405,7 +420,7 @@ class AccountancyExport
|
|||||||
|
|
||||||
$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
|
||||||
foreach ( $TData as $data ) {
|
foreach ($TData as $data) {
|
||||||
$code_compta = $data->numero_compte;
|
$code_compta = $data->numero_compte;
|
||||||
if (! empty($data->subledger_account))
|
if (! empty($data->subledger_account))
|
||||||
$code_compta = $data->subledger_account;
|
$code_compta = $data->subledger_account;
|
||||||
@ -447,7 +462,7 @@ class AccountancyExport
|
|||||||
//We should use dol_now function not time however this is wrong date to transfert in accounting
|
//We should use dol_now function not time however this is wrong date to transfert in accounting
|
||||||
//$date_ecriture = dol_print_date(dol_now(), $conf->global->ACCOUNTING_EXPORT_DATE); // format must be ddmmyy
|
//$date_ecriture = dol_print_date(dol_now(), $conf->global->ACCOUNTING_EXPORT_DATE); // format must be ddmmyy
|
||||||
//$date_ecriture = dol_print_date(time(), $conf->global->ACCOUNTING_EXPORT_DATE); // format must be ddmmyy
|
//$date_ecriture = dol_print_date(time(), $conf->global->ACCOUNTING_EXPORT_DATE); // format must be ddmmyy
|
||||||
foreach ( $TData as $data ) {
|
foreach ($TData as $data) {
|
||||||
$code_compta = $data->numero_compte;
|
$code_compta = $data->numero_compte;
|
||||||
if (! empty($data->subledger_account))
|
if (! empty($data->subledger_account))
|
||||||
$code_compta = $data->subledger_account;
|
$code_compta = $data->subledger_account;
|
||||||
@ -475,7 +490,7 @@ class AccountancyExport
|
|||||||
// elarifr: date format must be fixed format : 6 char ddmmyy = %d%m%yand not defined by user / dolibarr setting
|
// elarifr: date format must be fixed format : 6 char ddmmyy = %d%m%yand not defined by user / dolibarr setting
|
||||||
if (! empty($data->date_echeance))
|
if (! empty($data->date_echeance))
|
||||||
//$Tab['date_echeance'] = dol_print_date($data->date_echeance, $conf->global->ACCOUNTING_EXPORT_DATE);
|
//$Tab['date_echeance'] = dol_print_date($data->date_echeance, $conf->global->ACCOUNTING_EXPORT_DATE);
|
||||||
$Tab['date_echeance'] = dol_print_date($data->date_echeance, '%d%m%y' ); // elarifr: format must be ddmmyy
|
$Tab['date_echeance'] = dol_print_date($data->date_echeance, '%d%m%y'); // elarifr: format must be ddmmyy
|
||||||
else
|
else
|
||||||
$Tab['date_echeance'] = '000000';
|
$Tab['date_echeance'] = '000000';
|
||||||
|
|
||||||
@ -528,21 +543,25 @@ class AccountancyExport
|
|||||||
$separator = ',';
|
$separator = ',';
|
||||||
$end_line = "\n";
|
$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 . $separator;
|
print $line->id . $separator;
|
||||||
print $date . $separator;
|
print $date . $separator;
|
||||||
print $line->code_journal . $separator;
|
print $line->code_journal . $separator;
|
||||||
print length_accountg($line->numero_compte) . $separator;
|
if (empty($line->subledger_account)) {
|
||||||
print substr(length_accountg($line->numero_compte),0,2) . $separator;
|
print $line->numero_compte . $separator;
|
||||||
print '"'.dol_trunc($line->label_operation,40,'right','UTF-8',1).'"' . $separator;
|
} else {
|
||||||
print '"'.dol_trunc($line->piece_num,15,'right','UTF-8',1).'"'.$separator;
|
print $line->subledger_account . $separator;
|
||||||
print price2num($line->montant).$separator;
|
}
|
||||||
|
//print substr(length_accountg($line->numero_compte), 0, 2) . $separator;
|
||||||
|
print '"'.dol_trunc($line->label_operation, 40, 'right', 'UTF-8', 1).'"' . $separator;
|
||||||
|
print '"'.dol_trunc($line->piece_num, 15, 'right', 'UTF-8', 1).'"'.$separator;
|
||||||
|
print price2num(abs($line->montant)).$separator;
|
||||||
print $line->sens.$separator;
|
print $line->sens.$separator;
|
||||||
print $date . $separator;
|
print $date . $separator;
|
||||||
print 'EUR';
|
//print 'EUR';
|
||||||
print $end_line;
|
print $end_line;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -561,24 +580,24 @@ class AccountancyExport
|
|||||||
$separator = ';';
|
$separator = ';';
|
||||||
$end_line = "\n";
|
$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 . $separator;
|
print $line->piece_num . $separator;
|
||||||
print $line->label_operation . $separator;
|
print self::toAnsi($line->label_operation) . $separator;
|
||||||
print $date . $separator;
|
print $date . $separator;
|
||||||
print $line->label_operation . $separator;
|
print self::toAnsi($line->label_operation) . $separator;
|
||||||
|
|
||||||
if (empty($line->subledger_account)) {
|
if (empty($line->subledger_account)) {
|
||||||
print length_accountg($line->numero_compte) . $separator;
|
print length_accountg($line->numero_compte) . $separator;
|
||||||
print $line->label_compte . $separator;
|
print self::toAnsi($line->label_compte) . $separator;
|
||||||
} else {
|
} else {
|
||||||
print length_accounta($line->subledger_account) . $separator;
|
print length_accounta($line->subledger_account) . $separator;
|
||||||
print $line->subledger_label . $separator;
|
print self::toAnsi($line->subledger_label) . $separator;
|
||||||
}
|
}
|
||||||
|
|
||||||
print $line->doc_ref . $separator;
|
print self::toAnsi($line->doc_ref) . $separator;
|
||||||
print price($line->debit) . $separator;
|
print price($line->debit) . $separator;
|
||||||
print price($line->credit) . $separator;
|
print price($line->credit) . $separator;
|
||||||
print price($line->montant) . $separator;
|
print price($line->montant) . $separator;
|
||||||
@ -589,6 +608,39 @@ class AccountancyExport
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Export format : OpenConcerto
|
||||||
|
*
|
||||||
|
* @param array $objectLines data
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function exportOpenConcerto($objectLines)
|
||||||
|
{
|
||||||
|
|
||||||
|
$separator = ';';
|
||||||
|
$end_line = "\n";
|
||||||
|
|
||||||
|
foreach ($objectLines as $line) {
|
||||||
|
|
||||||
|
$date = dol_print_date($line->doc_date, '%d/%m/%Y');
|
||||||
|
|
||||||
|
print $date . $separator;
|
||||||
|
print $line->code_journal . $separator;
|
||||||
|
if (empty($line->subledger_account)) {
|
||||||
|
print length_accountg($line->numero_compte) . $separator;
|
||||||
|
} else {
|
||||||
|
print length_accounta($line->subledger_account) . $separator;
|
||||||
|
}
|
||||||
|
print $line->doc_ref . $separator;
|
||||||
|
print $line->label_operation . $separator;
|
||||||
|
print price($line->debit) . $separator;
|
||||||
|
print price($line->credit) . $separator;
|
||||||
|
|
||||||
|
print $end_line;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Export format : Configurable
|
* Export format : Configurable
|
||||||
*
|
*
|
||||||
@ -652,7 +704,7 @@ class AccountancyExport
|
|||||||
print "Idevise";
|
print "Idevise";
|
||||||
print $end_line;
|
print $end_line;
|
||||||
|
|
||||||
foreach ( $objectLines as $line ) {
|
foreach ($objectLines as $line) {
|
||||||
$date_creation = dol_print_date($line->date_creation, '%d%m%Y');
|
$date_creation = dol_print_date($line->date_creation, '%d%m%Y');
|
||||||
$date_doc = dol_print_date($line->doc_date, '%d%m%Y');
|
$date_doc = dol_print_date($line->doc_date, '%d%m%Y');
|
||||||
$date_valid = dol_print_date($line->date_validated, '%d%m%Y');
|
$date_valid = dol_print_date($line->date_validated, '%d%m%Y');
|
||||||
@ -715,6 +767,156 @@ class AccountancyExport
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Export format : SAGE50SWISS
|
||||||
|
*
|
||||||
|
* https://onlinehelp.sageschweiz.ch/default.aspx?tabid=19984
|
||||||
|
* http://media.topal.ch/Public/Schnittstellen/TAF/Specification/Sage50-TAF-format.pdf
|
||||||
|
*
|
||||||
|
* @param array $objectLines data
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function exportSAGE50SWISS($objectLines)
|
||||||
|
{
|
||||||
|
// SAGE50SWISS
|
||||||
|
$this->separator = ',';
|
||||||
|
$this->end_line = "\r\n";
|
||||||
|
|
||||||
|
// Print header line
|
||||||
|
print "Blg,Datum,Kto,S/H,Grp,GKto,SId,SIdx,KIdx,BTyp,MTyp,Code,Netto,Steuer,FW-Betrag,Tx1,Tx2,PkKey,OpId,Flag";
|
||||||
|
print $this->end_line;
|
||||||
|
$thisPieceNum= "";
|
||||||
|
$thisPieceAccountNr= "";
|
||||||
|
$aSize= count($objectLines);
|
||||||
|
foreach ($objectLines as $aIndex=>$line)
|
||||||
|
{
|
||||||
|
$sammelBuchung= false;
|
||||||
|
if ($aIndex-2 >= 0 && $objectLines[$aIndex-2]->piece_num == $line->piece_num)
|
||||||
|
{
|
||||||
|
$sammelBuchung= true;
|
||||||
|
}
|
||||||
|
elseif ($aIndex+2 < $aSize && $objectLines[$aIndex+2]->piece_num == $line->piece_num)
|
||||||
|
{
|
||||||
|
$sammelBuchung= true;
|
||||||
|
}
|
||||||
|
elseif ($aIndex+1 < $aSize
|
||||||
|
&& $objectLines[$aIndex+1]->piece_num == $line->piece_num
|
||||||
|
&& $aIndex-1 < $aSize
|
||||||
|
&& $objectLines[$aIndex-1]->piece_num == $line->piece_num
|
||||||
|
)
|
||||||
|
{
|
||||||
|
$sammelBuchung= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Blg
|
||||||
|
print $line->piece_num . $this->separator;
|
||||||
|
|
||||||
|
// Datum
|
||||||
|
$date = dol_print_date($line->doc_date, '%d.%m.%Y');
|
||||||
|
print $date . $this->separator;
|
||||||
|
|
||||||
|
// Kto
|
||||||
|
print length_accountg($line->numero_compte) . $this->separator;
|
||||||
|
// S/H
|
||||||
|
if ($line->sens == 'D')
|
||||||
|
{
|
||||||
|
print 'S' . $this->separator;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print 'H' . $this->separator;
|
||||||
|
}
|
||||||
|
//Grp
|
||||||
|
print self::trunc($line->code_journal, 1) . $this->separator;
|
||||||
|
// GKto
|
||||||
|
if (empty($line->code_tiers))
|
||||||
|
{
|
||||||
|
if ($line->piece_num == $thisPieceNum)
|
||||||
|
{
|
||||||
|
print length_accounta($thisPieceAccountNr) . $this->separator;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print "div" . $this->separator;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print length_accounta($line->code_tiers) . $this->separator;
|
||||||
|
}
|
||||||
|
//SId
|
||||||
|
print $this->separator;
|
||||||
|
//SIdx
|
||||||
|
print "0" . $this->separator;
|
||||||
|
//KIdx
|
||||||
|
print "0" . $this->separator;
|
||||||
|
//BTyp
|
||||||
|
print "0" . $this->separator;
|
||||||
|
|
||||||
|
//MTyp 1=Fibu Einzelbuchung 2=Sammebuchung
|
||||||
|
if ($sammelBuchung)
|
||||||
|
{
|
||||||
|
print "2" . $this->separator;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print "1" . $this->separator;
|
||||||
|
}
|
||||||
|
// Code
|
||||||
|
print '""' . $this->separator;
|
||||||
|
// Netto
|
||||||
|
if ($line->montant >= 0)
|
||||||
|
{
|
||||||
|
print $line->montant . $this->separator;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print $line->montant*-1 . $this->separator;
|
||||||
|
}
|
||||||
|
// Steuer
|
||||||
|
print "0.00" . $this->separator;
|
||||||
|
// FW-Betrag
|
||||||
|
print "0.00" . $this->separator;
|
||||||
|
// Tx1
|
||||||
|
$line1= self::toAnsi($line->label_compte, 29);
|
||||||
|
if ($line1 == "LIQ" || $line1 == "LIQ Beleg ok" || strlen($line1) <= 3)
|
||||||
|
{
|
||||||
|
$line1= "";
|
||||||
|
}
|
||||||
|
$line2= self::toAnsi($line->doc_ref, 29);
|
||||||
|
if (strlen($line1) == 0)
|
||||||
|
{
|
||||||
|
$line1= $line2;
|
||||||
|
$line2= "";
|
||||||
|
}
|
||||||
|
if (strlen($line1) > 0 && strlen($line2) > 0 && (strlen($line1) + strlen($line2)) < 27)
|
||||||
|
{
|
||||||
|
$line1= $line1 . ' / ' . $line2;
|
||||||
|
$line2= "";
|
||||||
|
}
|
||||||
|
|
||||||
|
print '"' . self::toAnsi($line1). '"' . $this->separator;
|
||||||
|
// Tx2
|
||||||
|
print '"' . self::toAnsi($line2). '"' . $this->separator;
|
||||||
|
//PkKey
|
||||||
|
print "0" . $this->separator;
|
||||||
|
//OpId
|
||||||
|
print $this->separator;
|
||||||
|
|
||||||
|
// Flag
|
||||||
|
print "0";
|
||||||
|
|
||||||
|
print $this->end_line;
|
||||||
|
|
||||||
|
if ($line->piece_num !== $thisPieceNum)
|
||||||
|
{
|
||||||
|
$thisPieceNum= $line->piece_num;
|
||||||
|
$thisPieceAccountNr= $line->numero_compte;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param string $str data
|
* @param string $str data
|
||||||
@ -725,4 +927,20 @@ class AccountancyExport
|
|||||||
{
|
{
|
||||||
return dol_trunc($str, $size, 'right', 'UTF-8', 1);
|
return dol_trunc($str, $size, 'right', 'UTF-8', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param unknown $str Original string to encode and optionaly truncate
|
||||||
|
* @param integer $size truncate string after $size characters
|
||||||
|
* @return string String encoded in Windows-1251 charset
|
||||||
|
*/
|
||||||
|
public static function toAnsi($str, $size = -1)
|
||||||
|
{
|
||||||
|
$retVal= dol_string_nohtmltag($str, 1, 'Windows-1251');
|
||||||
|
if ($retVal >= 0 && $size >= 0)
|
||||||
|
{
|
||||||
|
$retVal= mb_substr($retVal, 0, $size, 'Windows-1251');
|
||||||
|
}
|
||||||
|
return $retVal;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2014 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2013-2014 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -64,10 +64,10 @@ class AccountancySystem
|
|||||||
*
|
*
|
||||||
* @param DoliDB $db handler
|
* @param DoliDB $db handler
|
||||||
*/
|
*/
|
||||||
function __construct($db)
|
public function __construct($db)
|
||||||
{
|
{
|
||||||
$this->db = $db;
|
$this->db = $db;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -77,19 +77,19 @@ class AccountancySystem
|
|||||||
* @param string $ref ref
|
* @param string $ref ref
|
||||||
* @return int <0 if KO, Id of record if OK and found
|
* @return int <0 if KO, Id of record if OK and found
|
||||||
*/
|
*/
|
||||||
function fetch($rowid = 0, $ref = '')
|
public function fetch($rowid = 0, $ref = '')
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
if ($rowid > 0 || $ref)
|
if ($rowid > 0 || $ref)
|
||||||
{
|
{
|
||||||
$sql = "SELECT a.pcg_version, a.label, a.active";
|
$sql = "SELECT a.rowid, a.pcg_version, a.label, a.active";
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_system as a";
|
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_system as a";
|
||||||
$sql .= " WHERE";
|
$sql .= " WHERE";
|
||||||
if ($rowid) {
|
if ($rowid) {
|
||||||
$sql .= " a.rowid = '" . $rowid . "'";
|
$sql .= " a.rowid = '" . $rowid . "'";
|
||||||
} elseif ($ref) {
|
} elseif ($ref) {
|
||||||
$sql .= " a.pcg_version = '" . $ref . "'";
|
$sql .= " a.pcg_version = '" . $this->db->escape($ref) . "'";
|
||||||
}
|
}
|
||||||
|
|
||||||
dol_syslog(get_class($this) . "::fetch sql=" . $sql, LOG_DEBUG);
|
dol_syslog(get_class($this) . "::fetch sql=" . $sql, LOG_DEBUG);
|
||||||
@ -124,7 +124,7 @@ class AccountancySystem
|
|||||||
* @param User $user making insert
|
* @param User $user making insert
|
||||||
* @return int if KO, Id of line if OK
|
* @return int if KO, Id of line if OK
|
||||||
*/
|
*/
|
||||||
function create($user)
|
public function create($user)
|
||||||
{
|
{
|
||||||
$now = dol_now();
|
$now = dol_now();
|
||||||
|
|
||||||
@ -142,15 +142,15 @@ class AccountancySystem
|
|||||||
$result = $this->rowid;
|
$result = $this->rowid;
|
||||||
} else {
|
} else {
|
||||||
$result = - 2;
|
$result = - 2;
|
||||||
$this->error = "AccountancySystem::Create Erreur $result";
|
$this->error = "AccountancySystem::Create Error $result";
|
||||||
dol_syslog($this->error, LOG_ERR);
|
dol_syslog($this->error, LOG_ERR);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$result = - 1;
|
$result = - 1;
|
||||||
$this->error = "AccountancySystem::Create Erreur $result";
|
$this->error = "AccountancySystem::Create Error $result";
|
||||||
dol_syslog($this->error, LOG_ERR);
|
dol_syslog($this->error, LOG_ERR);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2016 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2013-2016 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2015 Ari Elbaz (elarifr) <github@accedinfo.com>
|
* Copyright (C) 2015 Ari Elbaz (elarifr) <github@accedinfo.com>
|
||||||
@ -74,9 +74,11 @@ class AccountingAccount extends CommonObject
|
|||||||
public $rowid;
|
public $rowid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Creation date
|
* Date creation record (datec)
|
||||||
|
*
|
||||||
|
* @var integer
|
||||||
*/
|
*/
|
||||||
public $datec;
|
public $datec;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string pcg version
|
* @var string pcg version
|
||||||
@ -138,23 +140,24 @@ class AccountingAccount extends CommonObject
|
|||||||
*
|
*
|
||||||
* @param DoliDB $db Database handle
|
* @param DoliDB $db Database handle
|
||||||
*/
|
*/
|
||||||
function __construct($db)
|
public function __construct($db)
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
$this->db = $db;
|
$this->db = $db;
|
||||||
$this->next_prev_filter='fk_pcg_version IN (SELECT pcg_version FROM ' . MAIN_DB_PREFIX . 'accounting_system WHERE rowid=' . $conf->global->CHARTOFACCOUNTS . ')'; // Used to add a filter in Form::showrefnav method
|
$this->next_prev_filter='fk_pcg_version IN (SELECT pcg_version FROM ' . MAIN_DB_PREFIX . 'accounting_system WHERE rowid=' . $conf->global->CHARTOFACCOUNTS . ')'; // Used to add a filter in Form::showrefnav method
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load record in memory
|
* Load record in memory
|
||||||
*
|
*
|
||||||
* @param int $rowid Id
|
* @param int $rowid Id
|
||||||
* @param string $account_number Account number
|
* @param string $account_number Account number
|
||||||
* @param int $limittocurrentchart 1=Do not load record if it is into another accounting system
|
* @param int|boolean $limittocurrentchart 1 or true=Load record only if it is into current active char of account
|
||||||
* @return int <0 if KO, 0 if not found, Id of record if OK and found
|
* @param string $limittoachartaccount 'ABC'=Load record only if it is into chart account with code 'ABC'.
|
||||||
|
* @return int <0 if KO, 0 if not found, Id of record if OK and found
|
||||||
*/
|
*/
|
||||||
function fetch($rowid = null, $account_number = null, $limittocurrentchart = 0)
|
public function fetch($rowid = null, $account_number = null, $limittocurrentchart = 0, $limittoachartaccount = '')
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
@ -165,13 +168,16 @@ class AccountingAccount extends CommonObject
|
|||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_accounting_category as ca ON a.fk_accounting_category = ca.rowid";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_accounting_category as ca ON a.fk_accounting_category = ca.rowid";
|
||||||
$sql .= " WHERE";
|
$sql .= " WHERE";
|
||||||
if ($rowid) {
|
if ($rowid) {
|
||||||
$sql .= " a.rowid = '" . $rowid . "'";
|
$sql .= " a.rowid = " . (int) $rowid;
|
||||||
} elseif ($account_number) {
|
} elseif ($account_number) {
|
||||||
$sql .= " a.account_number = '" . $this->db->escape($account_number) . "'";
|
$sql .= " a.account_number = '" . $this->db->escape($account_number) . "'";
|
||||||
}
|
}
|
||||||
if (! empty($limittocurrentchart)) {
|
if (! empty($limittocurrentchart)) {
|
||||||
$sql .= ' AND a.fk_pcg_version IN (SELECT pcg_version FROM ' . MAIN_DB_PREFIX . 'accounting_system WHERE rowid=' . $this->db->escape($conf->global->CHARTOFACCOUNTS) . ')';
|
$sql .= ' AND a.fk_pcg_version IN (SELECT pcg_version FROM ' . MAIN_DB_PREFIX . 'accounting_system WHERE rowid=' . $this->db->escape($conf->global->CHARTOFACCOUNTS) . ')';
|
||||||
}
|
}
|
||||||
|
if (! empty($limittoachartaccount)) {
|
||||||
|
$sql .= " AND a.fk_pcg_version = '".$this->db->escape($limittoachartaccount)."'";
|
||||||
|
}
|
||||||
|
|
||||||
dol_syslog(get_class($this) . "::fetch sql=" . $sql, LOG_DEBUG);
|
dol_syslog(get_class($this) . "::fetch sql=" . $sql, LOG_DEBUG);
|
||||||
$result = $this->db->query($sql);
|
$result = $this->db->query($sql);
|
||||||
@ -212,11 +218,11 @@ class AccountingAccount extends CommonObject
|
|||||||
/**
|
/**
|
||||||
* Insert new accounting account in chart of accounts
|
* Insert new accounting account in chart of accounts
|
||||||
*
|
*
|
||||||
* @param User $user Use making action
|
* @param User $user User making action
|
||||||
* @param int $notrigger Disable triggers
|
* @param int $notrigger Disable triggers
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function create($user, $notrigger = 0)
|
public function create($user, $notrigger = 0)
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
$error = 0;
|
$error = 0;
|
||||||
@ -231,16 +237,8 @@ class AccountingAccount extends CommonObject
|
|||||||
$this->pcg_subtype = trim($this->pcg_subtype);
|
$this->pcg_subtype = trim($this->pcg_subtype);
|
||||||
if (isset($this->account_number))
|
if (isset($this->account_number))
|
||||||
$this->account_number = trim($this->account_number);
|
$this->account_number = trim($this->account_number);
|
||||||
if (isset($this->account_parent))
|
|
||||||
$this->account_parent = trim($this->account_parent);
|
|
||||||
if (isset($this->label))
|
if (isset($this->label))
|
||||||
$this->label = trim($this->label);
|
$this->label = trim($this->label);
|
||||||
if (isset($this->account_category))
|
|
||||||
$this->account_category = trim($this->account_category);
|
|
||||||
if (isset($this->fk_user_author))
|
|
||||||
$this->fk_user_author = trim($this->fk_user_author);
|
|
||||||
if (isset($this->active))
|
|
||||||
$this->active = trim($this->active);
|
|
||||||
|
|
||||||
if (empty($this->pcg_type) || $this->pcg_type == '-1')
|
if (empty($this->pcg_type) || $this->pcg_type == '-1')
|
||||||
{
|
{
|
||||||
@ -273,11 +271,11 @@ class AccountingAccount extends CommonObject
|
|||||||
$sql .= ", " . (empty($this->pcg_type) ? 'NULL' : "'" . $this->db->escape($this->pcg_type) . "'");
|
$sql .= ", " . (empty($this->pcg_type) ? 'NULL' : "'" . $this->db->escape($this->pcg_type) . "'");
|
||||||
$sql .= ", " . (empty($this->pcg_subtype) ? 'NULL' : "'" . $this->db->escape($this->pcg_subtype) . "'");
|
$sql .= ", " . (empty($this->pcg_subtype) ? 'NULL' : "'" . $this->db->escape($this->pcg_subtype) . "'");
|
||||||
$sql .= ", " . (empty($this->account_number) ? 'NULL' : "'" . $this->db->escape($this->account_number) . "'");
|
$sql .= ", " . (empty($this->account_number) ? 'NULL' : "'" . $this->db->escape($this->account_number) . "'");
|
||||||
$sql .= ", " . (empty($this->account_parent) ? '0' : "'" . $this->db->escape($this->account_parent) . "'");
|
$sql .= ", " . (empty($this->account_parent) ? 0 : (int) $this->account_parent);
|
||||||
$sql .= ", " . (empty($this->label) ? 'NULL' : "'" . $this->db->escape($this->label) . "'");
|
$sql .= ", " . (empty($this->label) ? "''" : "'" . $this->db->escape($this->label) . "'");
|
||||||
$sql .= ", " . (empty($this->account_category) ? 0 : $this->db->escape($this->account_category));
|
$sql .= ", " . (empty($this->account_category) ? 0 : (int) $this->account_category);
|
||||||
$sql .= ", " . $user->id;
|
$sql .= ", " . $user->id;
|
||||||
$sql .= ", " . (! isset($this->active) ? 'NULL' : $this->db->escape($this->active));
|
$sql .= ", " . (int) $this->active;
|
||||||
$sql .= ")";
|
$sql .= ")";
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
@ -285,7 +283,7 @@ class AccountingAccount extends CommonObject
|
|||||||
dol_syslog(get_class($this) . "::create sql=" . $sql, LOG_DEBUG);
|
dol_syslog(get_class($this) . "::create sql=" . $sql, LOG_DEBUG);
|
||||||
$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();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -307,17 +305,17 @@ class AccountingAccount extends CommonObject
|
|||||||
|
|
||||||
// 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) . "::create " . $errmsg, LOG_ERR);
|
dol_syslog(get_class($this) . "::create " . $errmsg, LOG_ERR);
|
||||||
$this->error .= ($this->error ? ', ' . $errmsg : $errmsg);
|
$this->error .= ($this->error ? ', ' . $errmsg : $errmsg);
|
||||||
}
|
}
|
||||||
$this->db->rollback();
|
$this->db->rollback();
|
||||||
return - 1 * $error;
|
return -1 * $error;
|
||||||
} else {
|
} else {
|
||||||
$this->db->commit();
|
$this->db->commit();
|
||||||
return $this->id;
|
return $this->id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update record
|
* Update record
|
||||||
@ -325,7 +323,7 @@ class AccountingAccount extends CommonObject
|
|||||||
* @param User $user Use making update
|
* @param User $user Use making update
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function update($user)
|
public function update($user)
|
||||||
{
|
{
|
||||||
// Check parameters
|
// Check parameters
|
||||||
if (empty($this->pcg_type) || $this->pcg_type == '-1')
|
if (empty($this->pcg_type) || $this->pcg_type == '-1')
|
||||||
@ -344,11 +342,11 @@ class AccountingAccount extends CommonObject
|
|||||||
$sql .= " , pcg_type = " . ($this->pcg_type ? "'" . $this->db->escape($this->pcg_type) . "'" : "null");
|
$sql .= " , pcg_type = " . ($this->pcg_type ? "'" . $this->db->escape($this->pcg_type) . "'" : "null");
|
||||||
$sql .= " , pcg_subtype = " . ($this->pcg_subtype ? "'" . $this->db->escape($this->pcg_subtype) . "'" : "null");
|
$sql .= " , pcg_subtype = " . ($this->pcg_subtype ? "'" . $this->db->escape($this->pcg_subtype) . "'" : "null");
|
||||||
$sql .= " , account_number = '" . $this->db->escape($this->account_number) . "'";
|
$sql .= " , account_number = '" . $this->db->escape($this->account_number) . "'";
|
||||||
$sql .= " , account_parent = '" . $this->db->escape($this->account_parent) . "'";
|
$sql .= " , account_parent = " . (int) $this->account_parent;
|
||||||
$sql .= " , label = " . ($this->label ? "'" . $this->db->escape($this->label) . "'" : "null");
|
$sql .= " , label = " . ($this->label ? "'" . $this->db->escape($this->label) . "'" : "''");
|
||||||
$sql .= " , fk_accounting_category = " . (empty($this->account_category) ? 0 : $this->db->escape($this->account_category));
|
$sql .= " , fk_accounting_category = " . (empty($this->account_category) ? 0 : (int) $this->account_category);
|
||||||
$sql .= " , fk_user_modif = " . $user->id;
|
$sql .= " , fk_user_modif = " . $user->id;
|
||||||
$sql .= " , active = " . $this->active;
|
$sql .= " , active = " . (int) $this->active;
|
||||||
$sql .= " WHERE rowid = " . $this->id;
|
$sql .= " WHERE rowid = " . $this->id;
|
||||||
|
|
||||||
dol_syslog(get_class($this) . "::update sql=" . $sql, LOG_DEBUG);
|
dol_syslog(get_class($this) . "::update sql=" . $sql, LOG_DEBUG);
|
||||||
@ -368,15 +366,15 @@ class AccountingAccount extends CommonObject
|
|||||||
*
|
*
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function checkUsage()
|
public function checkUsage()
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
$sql = "(SELECT fk_code_ventilation FROM " . MAIN_DB_PREFIX . "facturedet";
|
$sql = "(SELECT fk_code_ventilation FROM " . MAIN_DB_PREFIX . "facturedet";
|
||||||
$sql .= " WHERE fk_code_ventilation=" . $this->id . ")";
|
$sql.= " WHERE fk_code_ventilation=" . $this->id . ")";
|
||||||
$sql .= "UNION";
|
$sql.= "UNION";
|
||||||
$sql .= "(SELECT fk_code_ventilation FROM " . MAIN_DB_PREFIX . "facture_fourn_det";
|
$sql.= " (SELECT fk_code_ventilation FROM " . MAIN_DB_PREFIX . "facture_fourn_det";
|
||||||
$sql .= " WHERE fk_code_ventilation=" . $this->id . ")";
|
$sql.= " WHERE fk_code_ventilation=" . $this->id . ")";
|
||||||
|
|
||||||
dol_syslog(get_class($this) . "::checkUsage sql=" . $sql, LOG_DEBUG);
|
dol_syslog(get_class($this) . "::checkUsage sql=" . $sql, LOG_DEBUG);
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
@ -402,7 +400,7 @@ class AccountingAccount extends CommonObject
|
|||||||
* @param int $notrigger 0=triggers after, 1=disable triggers
|
* @param int $notrigger 0=triggers after, 1=disable triggers
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function delete($user, $notrigger = 0)
|
public function delete($user, $notrigger = 0)
|
||||||
{
|
{
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
@ -440,7 +438,7 @@ class AccountingAccount extends CommonObject
|
|||||||
|
|
||||||
// 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) . "::delete " . $errmsg, LOG_ERR);
|
dol_syslog(get_class($this) . "::delete " . $errmsg, LOG_ERR);
|
||||||
$this->error .= ($this->error ? ', ' . $errmsg : $errmsg);
|
$this->error .= ($this->error ? ', ' . $errmsg : $errmsg);
|
||||||
}
|
}
|
||||||
@ -453,9 +451,9 @@ class AccountingAccount extends CommonObject
|
|||||||
} else {
|
} else {
|
||||||
return - 1;
|
return - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return clicable name (with picto eventually)
|
* Return clicable name (with picto eventually)
|
||||||
*
|
*
|
||||||
* @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
|
||||||
@ -466,8 +464,8 @@ class AccountingAccount extends CommonObject
|
|||||||
* @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 String with URL
|
* @return string String with URL
|
||||||
*/
|
*/
|
||||||
function getNomUrl($withpicto = 0, $withlabel = 0, $nourl = 0, $moretitle='',$notooltip=0, $save_lastsearch_value=-1)
|
public function getNomUrl($withpicto = 0, $withlabel = 0, $nourl = 0, $moretitle = '', $notooltip = 0, $save_lastsearch_value = -1)
|
||||||
{
|
{
|
||||||
global $langs, $conf, $user;
|
global $langs, $conf, $user;
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
|
||||||
|
|
||||||
@ -479,7 +477,7 @@ class AccountingAccount extends CommonObject
|
|||||||
|
|
||||||
// Add param to save lastsearch_values or not
|
// Add param to save lastsearch_values or not
|
||||||
$add_save_lastsearch_values=($save_lastsearch_value == 1 ? 1 : 0);
|
$add_save_lastsearch_values=($save_lastsearch_value == 1 ? 1 : 0);
|
||||||
if ($save_lastsearch_value == -1 && preg_match('/list\.php/',$_SERVER["PHP_SELF"])) $add_save_lastsearch_values=1;
|
if ($save_lastsearch_value == -1 && preg_match('/list\.php/', $_SERVER["PHP_SELF"])) $add_save_lastsearch_values=1;
|
||||||
if ($add_save_lastsearch_values) $url.='&save_lastsearch_values=1';
|
if ($add_save_lastsearch_values) $url.='&save_lastsearch_values=1';
|
||||||
|
|
||||||
$picto = 'billr';
|
$picto = 'billr';
|
||||||
@ -522,7 +520,7 @@ class AccountingAccount extends CommonObject
|
|||||||
if ($withpicto && $withpicto != 2) $result .= ' ';
|
if ($withpicto && $withpicto != 2) $result .= ' ';
|
||||||
if ($withpicto != 2) $result.=$linkstart . $label_link . $linkend;
|
if ($withpicto != 2) $result.=$linkstart . $label_link . $linkend;
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Information on record
|
* Information on record
|
||||||
@ -530,7 +528,7 @@ class AccountingAccount extends CommonObject
|
|||||||
* @param int $id of record
|
* @param int $id of record
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function info($id)
|
public function info($id)
|
||||||
{
|
{
|
||||||
$sql = 'SELECT a.rowid, a.datec, a.fk_user_author, a.fk_user_modif, a.tms';
|
$sql = 'SELECT a.rowid, a.datec, a.fk_user_author, a.fk_user_modif, a.tms';
|
||||||
$sql .= ' FROM ' . MAIN_DB_PREFIX . 'accounting_account as a';
|
$sql .= ' FROM ' . MAIN_DB_PREFIX . 'accounting_account as a';
|
||||||
@ -562,14 +560,14 @@ class AccountingAccount extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.NotCamelCaps
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
/**
|
/**
|
||||||
* Account deactivated
|
* Account deactivated
|
||||||
*
|
*
|
||||||
* @param int $id Id
|
* @param int $id Id
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function account_desactivate($id)
|
public function account_desactivate($id)
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
$result = $this->checkUsage();
|
$result = $this->checkUsage();
|
||||||
@ -597,14 +595,14 @@ class AccountingAccount extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.NotCamelCaps
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
/**
|
/**
|
||||||
* Account activated
|
* Account activated
|
||||||
*
|
*
|
||||||
* @param int $id Id
|
* @param int $id Id
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function account_activate($id)
|
public function account_activate($id)
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
@ -615,15 +613,15 @@ class AccountingAccount extends CommonObject
|
|||||||
|
|
||||||
dol_syslog(get_class($this) . "::activate sql=" . $sql, LOG_DEBUG);
|
dol_syslog(get_class($this) . "::activate sql=" . $sql, LOG_DEBUG);
|
||||||
$result = $this->db->query($sql);
|
$result = $this->db->query($sql);
|
||||||
if ($result) {
|
if ($result) {
|
||||||
$this->db->commit();
|
$this->db->commit();
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
$this->error = $this->db->lasterror();
|
$this->error = $this->db->lasterror();
|
||||||
$this->db->rollback();
|
$this->db->rollback();
|
||||||
return - 1;
|
return - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -632,12 +630,12 @@ class AccountingAccount extends CommonObject
|
|||||||
* @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto
|
* @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto
|
||||||
* @return string Label of status
|
* @return string Label of status
|
||||||
*/
|
*/
|
||||||
function getLibStatut($mode=0)
|
public function getLibStatut($mode = 0)
|
||||||
{
|
{
|
||||||
return $this->LibStatut($this->status,$mode);
|
return $this->LibStatut($this->status, $mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.NotCamelCaps
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
/**
|
/**
|
||||||
* Renvoi le libelle d'un statut donne
|
* Renvoi le libelle d'un statut donne
|
||||||
*
|
*
|
||||||
@ -645,7 +643,7 @@ class AccountingAccount extends CommonObject
|
|||||||
* @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto
|
* @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto
|
||||||
* @return string Label of status
|
* @return string Label of status
|
||||||
*/
|
*/
|
||||||
function LibStatut($statut,$mode=0)
|
public function LibStatut($statut, $mode = 0)
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
global $langs;
|
global $langs;
|
||||||
@ -655,32 +653,32 @@ class AccountingAccount extends CommonObject
|
|||||||
{
|
{
|
||||||
$prefix='';
|
$prefix='';
|
||||||
if ($statut == 1) return $langs->trans('Enabled');
|
if ($statut == 1) return $langs->trans('Enabled');
|
||||||
if ($statut == 0) return $langs->trans('Disabled');
|
elseif ($statut == 0) return $langs->trans('Disabled');
|
||||||
}
|
}
|
||||||
elseif ($mode == 1)
|
elseif ($mode == 1)
|
||||||
{
|
{
|
||||||
if ($statut == 1) return $langs->trans('Enabled');
|
if ($statut == 1) return $langs->trans('Enabled');
|
||||||
if ($statut == 0) return $langs->trans('Disabled');
|
elseif ($statut == 0) return $langs->trans('Disabled');
|
||||||
}
|
}
|
||||||
elseif ($mode == 2)
|
elseif ($mode == 2)
|
||||||
{
|
{
|
||||||
if ($statut == 1) return img_picto($langs->trans('Enabled'),'statut4').' '.$langs->trans('Enabled');
|
if ($statut == 1) return img_picto($langs->trans('Enabled'), 'statut4').' '.$langs->trans('Enabled');
|
||||||
if ($statut == 0) return img_picto($langs->trans('Disabled'),'statut5').' '.$langs->trans('Disabled');
|
elseif ($statut == 0) return img_picto($langs->trans('Disabled'), 'statut5').' '.$langs->trans('Disabled');
|
||||||
}
|
}
|
||||||
elseif ($mode == 3)
|
elseif ($mode == 3)
|
||||||
{
|
{
|
||||||
if ($statut == 1) return img_picto($langs->trans('Enabled'),'statut4');
|
if ($statut == 1) return img_picto($langs->trans('Enabled'), 'statut4');
|
||||||
if ($statut == 0) return img_picto($langs->trans('Disabled'),'statut5');
|
elseif ($statut == 0) return img_picto($langs->trans('Disabled'), 'statut5');
|
||||||
}
|
}
|
||||||
elseif ($mode == 4)
|
elseif ($mode == 4)
|
||||||
{
|
{
|
||||||
if ($statut == 1) return img_picto($langs->trans('Enabled'),'statut4').' '.$langs->trans('Enabled');
|
if ($statut == 1) return img_picto($langs->trans('Enabled'), 'statut4').' '.$langs->trans('Enabled');
|
||||||
if ($statut == 0) return img_picto($langs->trans('Disabled'),'statut5').' '.$langs->trans('Disabled');
|
elseif ($statut == 0) return img_picto($langs->trans('Disabled'), 'statut5').' '.$langs->trans('Disabled');
|
||||||
}
|
}
|
||||||
elseif ($mode == 5)
|
elseif ($mode == 5)
|
||||||
{
|
{
|
||||||
if ($statut == 1) return $langs->trans('Enabled').' '.img_picto($langs->trans('Enabled'),'statut4');
|
if ($statut == 1) return $langs->trans('Enabled').' '.img_picto($langs->trans('Enabled'), 'statut4');
|
||||||
if ($statut == 0) return $langs->trans('Disabled').' '.img_picto($langs->trans('Disabled'),'statut5');
|
elseif ($statut == 0) return $langs->trans('Disabled').' '.img_picto($langs->trans('Disabled'), 'statut5');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user