Merge remote-tracking branch 'refs/remotes/Dolibarr/3.8' into 3.8
@ -22,7 +22,7 @@ NuSoap 0.9.5 LGPL 2.1+ Yes
|
|||||||
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+ b Yes Library to build/edit ODT files
|
odtPHP 1.0.1 GPL-2+ b Yes Library to build/edit ODT files
|
||||||
PHPExcel 1.8.0 LGPL-2.1+ Yes Read/Write XLS files, read ODS files
|
PHPExcel 1.8.0 LGPL-2.1+ Yes Read/Write XLS files, read ODS files
|
||||||
php-iban 1.4.6 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
|
||||||
PHPPrintIPP 1.3 GPL-2+ Yes Library to send print IPP requests
|
PHPPrintIPP 1.3 GPL-2+ Yes Library to send print IPP requests
|
||||||
Restler 3.0 LGPL-3+ Yes Library to develop REST Web services
|
Restler 3.0 LGPL-3+ Yes Library to develop REST Web services
|
||||||
TCPDF 6.2.6 LGPL-3+ Yes PDF generation
|
TCPDF 6.2.6 LGPL-3+ Yes PDF generation
|
||||||
|
|||||||
103
ChangeLog
@ -9,6 +9,74 @@ Upgrading to any other version or any other database system is abolutely require
|
|||||||
make a Dolibarr upgrade.
|
make a Dolibarr upgrade.
|
||||||
|
|
||||||
|
|
||||||
|
***** ChangeLog for 3.8.1 compared to 3.8.0 *****
|
||||||
|
FIX: #3521 postgresql migration error
|
||||||
|
FIX: #3524
|
||||||
|
FIX: #3529
|
||||||
|
FIX: #3530
|
||||||
|
FIX: #3533
|
||||||
|
FIX: #3533 Load categories language
|
||||||
|
FIX: #3534
|
||||||
|
FIX: #3572 Impossible to attach project in order
|
||||||
|
FIX: #3599 Not saving legal form
|
||||||
|
FIX: #3606
|
||||||
|
FIX: #3607 Better categories setting and unsetting
|
||||||
|
FIX: #3628
|
||||||
|
FIX: #3630 - Wrong balance report when module salaries and donation disabled
|
||||||
|
FIX: Add a test to save life when ref of object (invoice ref, order ref, ...) was empty. The was no way to go back to a clean situation, even after vaidating again the object.
|
||||||
|
FIX: Admin fiche inter page do not take good action
|
||||||
|
FIX: Always use type send in parameters in showCategories method
|
||||||
|
FIX: avoid SQL error in getValueFrom common object when all params are not send
|
||||||
|
FIX: avoid SQL error when no sortfield send to method
|
||||||
|
FIX: bad link into project box
|
||||||
|
FIX: Bad title line in project view when using jmobile
|
||||||
|
FIX: Bad translation key for project "Overview"
|
||||||
|
FIX: Can create Proposal on close thridparty #3526
|
||||||
|
FIX: Can't change state on a contact
|
||||||
|
FIX: Can't change the admin with default setup
|
||||||
|
FIX: Can't delete thirdparty if there is some discounts
|
||||||
|
FIX: Can't reopen a canceled invoice.
|
||||||
|
FIX: Creation of tables or keys must not be done with a random order.
|
||||||
|
FIX: debian install when module mysqli is not installed.
|
||||||
|
FIX: Description of tags was mandatory in edit mode but not in create mode. Should not be mandatory.
|
||||||
|
FIX: display error on extrafields on ficheinter
|
||||||
|
FIX: Email selector contact must not include inactive contact
|
||||||
|
FIX: error in SQL due to a previous fix
|
||||||
|
FIX: Error retrieving customer prices
|
||||||
|
FIX: Event from ical stream should not be movable into calendar view
|
||||||
|
FIX: facturestat bad sql when customer view is limited
|
||||||
|
FIX: Filter on status of thirdparty list and bad encoding of url
|
||||||
|
FIX: icon into export profile may be not correctly output
|
||||||
|
FIX: Init into bad var
|
||||||
|
FIX: Link of project must be cickable if user has permission to read all projects FIX: Missing information into the alt of project picto
|
||||||
|
FIX: List of project for user that are restrited as sale repreentative to some thirdparties.
|
||||||
|
FIX: Mass Mailing activity don't display all status
|
||||||
|
FIX: Missing contracts into list in page of Refering objects of a thirdparty.
|
||||||
|
FIX: Missing menu entry for list of thirdparties when using auguria menu manager
|
||||||
|
FIX: Missing validate button if permission are not valid.
|
||||||
|
FIX: New adherent from, always redirect on entity
|
||||||
|
FIX: not closing CSS.
|
||||||
|
FIX: not responsive part for project page
|
||||||
|
FIX: Only are showing one object linked
|
||||||
|
FIX: order ref must not be translated
|
||||||
|
FIX: Payment form for paypal and paybox was not centered.
|
||||||
|
FIX: Pb into pagination scroll widget FIX: Style of previous-next card when using dolidroid
|
||||||
|
FIX: Regression on bad use of fk_account showing the bad bank account on PDF.
|
||||||
|
FIX: Removed warnings
|
||||||
|
FIX: remove twice same test
|
||||||
|
FIX: select of project using ajax autocomplete option
|
||||||
|
FIX: sortder field was missing so manually added values were moved to begin.
|
||||||
|
FIX: Syntax error in Debian Apache configuration
|
||||||
|
FIX: The admin flag is mising.
|
||||||
|
FIX: The filter on thirdparty prices should be visible if there is at least one thirdparty price.
|
||||||
|
FIX: Thirdparty is missing on card
|
||||||
|
FIX: update2.php test res befre assign it
|
||||||
|
FIX: When delete actioncomm also delete actioncomm_resources
|
||||||
|
FIX: when editing time spent, date of line suggested was a rubbish value
|
||||||
|
FIX: When filter with empty status, by default get canceled status (-1)
|
||||||
|
FIX: When update a member login for a member linked to a user, the login of user was not sync (not updated).
|
||||||
|
FIX: Wizard for restore does not show import command
|
||||||
|
|
||||||
***** ChangeLog for 3.8 compared to 3.7.* *****
|
***** ChangeLog for 3.8 compared to 3.7.* *****
|
||||||
For users:
|
For users:
|
||||||
FIX: #2519
|
FIX: #2519
|
||||||
@ -238,6 +306,13 @@ FIX: Not showing delivery date on rouget pdf
|
|||||||
FIX: Not showing task extrafields when creating from left menu
|
FIX: Not showing task extrafields when creating from left menu
|
||||||
FIX [ bug #3288 ] Tasks box is not properly drawn
|
FIX [ bug #3288 ] Tasks box is not properly drawn
|
||||||
FIX [ bug #3211 ] Outstading bill amount of a client showed wrong amounts
|
FIX [ bug #3211 ] Outstading bill amount of a client showed wrong amounts
|
||||||
|
FIX [ bug #3321 ] Users with certain permissions were shown a "forbidden access" page even if they had the rights
|
||||||
|
FIX [ bug #3426 ] Unable to create an invoice from a contract with extrafields
|
||||||
|
FIX [ bug #3431 ] Invoice bank account is not respected
|
||||||
|
FIX [ bug #3432 ] Spaces should be removed from IBAN when formatting it
|
||||||
|
FIX [ bug #3358 ] Tasks box does not work with PostgreSQL
|
||||||
|
FIX [ bug #3383 ] Company name is overlapped with company direction in PDF models
|
||||||
|
FIX [ bug #3460 ] Bank account is not saved when creating a customer invoice and facing an error message
|
||||||
|
|
||||||
NEW: Created new ContratLigne::insert function
|
NEW: Created new ContratLigne::insert function
|
||||||
|
|
||||||
@ -264,11 +339,11 @@ FIX send mail, copy sendto don't read the list of contact
|
|||||||
FIX Properly escape untrusted data to prevent HTML injection.
|
FIX Properly escape untrusted data to prevent HTML injection.
|
||||||
FIX send mail, copy sendto don't read the list of contact
|
FIX send mail, copy sendto don't read the list of contact
|
||||||
|
|
||||||
Path to save photos of products was moved in 3.7.0 to match path of other attached files. If you had loose
|
Path to save photos of products was moved in 3.7.0 to match path of other attached files. If you had loose
|
||||||
your photo on the photo tab of products, you can set the constant "PRODUCT_USE_OLD_PATH_FOR_PHOTO" to
|
your photo on the photo tab of products, you can set the constant "PRODUCT_USE_OLD_PATH_FOR_PHOTO" to
|
||||||
restore old path.
|
restore old path.
|
||||||
|
|
||||||
WARNING:
|
WARNING:
|
||||||
|
|
||||||
Do not try to make any Dolibarr upgrade if you are running Mysql version 5.5.40.
|
Do not try to make any Dolibarr upgrade if you are running Mysql version 5.5.40.
|
||||||
Mysql version 5.5.40 has a very critical bug making your data beeing definitely lost.
|
Mysql version 5.5.40 has a very critical bug making your data beeing definitely lost.
|
||||||
@ -278,7 +353,7 @@ make a Dolibarr upgrade.
|
|||||||
|
|
||||||
***** ChangeLog for 3.7 compared to 3.6.* *****
|
***** ChangeLog for 3.7 compared to 3.6.* *****
|
||||||
For users:
|
For users:
|
||||||
- New: Match other auth system: Login can be done entering login or user
|
- New: Match other auth system: Login can be done entering login or user
|
||||||
email (this open the road for SSO).
|
email (this open the road for SSO).
|
||||||
- New: Agenda export by project #1967.
|
- New: Agenda export by project #1967.
|
||||||
- New: Increase length of thirdparty to 128 chars.
|
- New: Increase length of thirdparty to 128 chars.
|
||||||
@ -299,14 +374,14 @@ For users:
|
|||||||
- New: Can filter on status on interventions.
|
- New: Can filter on status on interventions.
|
||||||
- New: Add help info of field type into dictionary of payment types.
|
- New: Add help info of field type into dictionary of payment types.
|
||||||
- New: Add proposals into referer page of thirdparty.
|
- New: Add proposals into referer page of thirdparty.
|
||||||
- New: On contact list can set filter on both active and not active (no more exclusive select).
|
- New: On contact list can set filter on both active and not active (no more exclusive select).
|
||||||
- New: Intervention documents are now available in ECM module.
|
- New: Intervention documents are now available in ECM module.
|
||||||
- New: Can attach supplier order to a customer order.
|
- New: Can attach supplier order to a customer order.
|
||||||
- New: Supervisor is now visible into user list.
|
- New: Supervisor is now visible into user list.
|
||||||
- New: Add user of creation and validation on invoice export.
|
- New: Add user of creation and validation on invoice export.
|
||||||
- New: Add info page about browser.
|
- New: Add info page about browser.
|
||||||
- New: Enable feature developed for 3.6 we forgot to enabled: Adding prefix
|
- New: Enable feature developed for 3.6 we forgot to enabled: Adding prefix
|
||||||
on uploaded file names.
|
on uploaded file names.
|
||||||
- New: No more dependency between contract and service module.
|
- New: No more dependency between contract and service module.
|
||||||
- New: [ task #867 ] Remove ESAEB external module code from core.
|
- New: [ task #867 ] Remove ESAEB external module code from core.
|
||||||
- New: Can create proposal from an intervention.
|
- New: Can create proposal from an intervention.
|
||||||
@ -337,7 +412,7 @@ For users:
|
|||||||
Use accesskey on form search.
|
Use accesskey on form search.
|
||||||
- New: Intervention documents are now available in ECM module.
|
- New: Intervention documents are now available in ECM module.
|
||||||
- New: Add attachments on user card + in ECM module.
|
- New: Add attachments on user card + in ECM module.
|
||||||
- New: Can add __PROJECT_REF__ and __TIHRPARTY_NAME__ into email topic or content template.
|
- New: Can add __PROJECT_REF__ and __THIRDPARTY_NAME__ into email topic or content template.
|
||||||
- New: [ task #1204 ] add Numering contrat module free (like leopard in product module).
|
- New: [ task #1204 ] add Numering contrat module free (like leopard in product module).
|
||||||
- New: [ task #712 ] Add warning when creating invoice from proposal or order, when there is already one invoice.
|
- New: [ task #712 ] Add warning when creating invoice from proposal or order, when there is already one invoice.
|
||||||
- New: Enable supplier price log table.
|
- New: Enable supplier price log table.
|
||||||
@ -345,8 +420,8 @@ For users:
|
|||||||
- New: [ task #1218 ] Can drag and drop an event from calendar to change its day.
|
- New: [ task #1218 ] Can drag and drop an event from calendar to change its day.
|
||||||
- New: Optimize size of image static resources.
|
- New: Optimize size of image static resources.
|
||||||
- New: Add hourly and daily amount on user card. Add weekly working hours and salary on user card.
|
- New: Add hourly and daily amount on user card. Add weekly working hours and salary on user card.
|
||||||
- New: Content of predefined email come firstly from table llx_c_email_template, then translation key.
|
- New: Content of predefined email come firstly from table llx_c_email_template, then translation key.
|
||||||
- New: Add option MAIN_GENERATE_INVOICES_WITH_PICTURE to show picture
|
- New: Add option MAIN_GENERATE_INVOICES_WITH_PICTURE to show picture
|
||||||
onto PDF like MAIN_GENERATE_PROPOSALS_WITH_PICTURE dir for proposals.
|
onto PDF like MAIN_GENERATE_PROPOSALS_WITH_PICTURE dir for proposals.
|
||||||
- New: Add more search field in list of cheque deposits.
|
- New: Add more search field in list of cheque deposits.
|
||||||
- New: Add feature to order to invoice on supplier part.
|
- New: Add feature to order to invoice on supplier part.
|
||||||
@ -449,8 +524,8 @@ Dolibarr better:
|
|||||||
- Deprecated module "oscommerce" were removed.
|
- Deprecated module "oscommerce" were removed.
|
||||||
- Changed the way parameters are provided to scripts sync_xxx_ldap2dolibarr.php
|
- Changed the way parameters are provided to scripts sync_xxx_ldap2dolibarr.php
|
||||||
- Some field into database were renamed from "libelle" to "label".
|
- Some field into database were renamed from "libelle" to "label".
|
||||||
- Table llx_c_pays were renamed into llx_c_country.
|
- Table llx_c_pays were renamed into llx_c_country.
|
||||||
- Triggers *_BUILDDOC are removed. Building a doc is not a business event. For action after
|
- Triggers *_BUILDDOC are removed. Building a doc is not a business event. For action after
|
||||||
creation of a pdf or odt, hook "afterPDFCreation" or "afterODTCreation" must be used instead.
|
creation of a pdf or odt, hook "afterPDFCreation" or "afterODTCreation" must be used instead.
|
||||||
- A lot of pages named fiche.php were renamed into card.php
|
- A lot of pages named fiche.php were renamed into card.php
|
||||||
- A lot of pages named liste.php were renamed into list.php
|
- A lot of pages named liste.php were renamed into list.php
|
||||||
@ -611,7 +686,7 @@ For users:
|
|||||||
- Fix: Add actions events not implemented.
|
- Fix: Add actions events not implemented.
|
||||||
- Fix: Price min of composition is not supplier price min by quantity.
|
- Fix: Price min of composition is not supplier price min by quantity.
|
||||||
- Fix: [ bug #1356 ] Bank accountancy number is limited to 8 numbers.
|
- Fix: [ bug #1356 ] Bank accountancy number is limited to 8 numbers.
|
||||||
- Fix: [ bug #1439 ] impossible to remove a a translation (multilanguage-feature)
|
- Fix: [ bug #1439 ] impossible to remove a a translation (multilanguage-feature)
|
||||||
- New: If multilangue is enabled, mail (from propal, invoice, etc...) message is pre-defaulted in Customer language
|
- New: If multilangue is enabled, mail (from propal, invoice, etc...) message is pre-defaulted in Customer language
|
||||||
- Fix: [ bug #1459 ] _ADD_CONTACT and _DEL_CONTACT triggers do not intercept insertion when reported an error
|
- Fix: [ bug #1459 ] _ADD_CONTACT and _DEL_CONTACT triggers do not intercept insertion when reported an error
|
||||||
- Fix: [ bug #1478 ] BILL_PAYED trigger action does not intercept failure under some circumstances
|
- Fix: [ bug #1478 ] BILL_PAYED trigger action does not intercept failure under some circumstances
|
||||||
@ -641,8 +716,8 @@ For developers:
|
|||||||
- New: A module can disable a standard ECM view.
|
- New: A module can disable a standard ECM view.
|
||||||
- New: Add multilang support into product webservice.
|
- New: Add multilang support into product webservice.
|
||||||
- New: Add hooks on project card page.
|
- New: Add hooks on project card page.
|
||||||
- New: Add call_trigger method on CommonObject class. So new trigger call within object is just :
|
- New: Add call_trigger method on CommonObject class. So new trigger call within object is just :
|
||||||
$result = $this->call_trigger($trigger_name, $user)
|
$result = $this->call_trigger($trigger_name, $user)
|
||||||
|
|
||||||
WARNING: Following change may create regression for some external modules, but was necessary to make
|
WARNING: Following change may create regression for some external modules, but was necessary to make
|
||||||
Dolibarr better:
|
Dolibarr better:
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Script build for hudson CI -->
|
||||||
<project name="dolibarr" default="hudson" basedir=".">
|
<project name="dolibarr" default="hudson" basedir=".">
|
||||||
fdfds
|
|
||||||
<!-- Exclude/ignore paths -->
|
<!-- Exclude/ignore paths -->
|
||||||
<property name="ignorepaths" value="${basedir}/htdocs/conf,${basedir}/htdocs/core/filemanagerdol,${basedir}/htdocs/includes" />
|
<property name="ignorepaths" value="${basedir}/htdocs/conf,${basedir}/htdocs/core/filemanagerdol,${basedir}/htdocs/includes" />
|
||||||
<property name="ignoreregexp" value="**/PEAR/*,**/NET/*,**/HTTP/*,**/zendgdata/*,**/reportico/*" />
|
<property name="ignoreregexp" value="**/PEAR/*,**/NET/*,**/HTTP/*,**/zendgdata/*,**/reportico/*" />
|
||||||
|
|||||||
@ -195,7 +195,7 @@ If script fails with error Bad certificate, you can set "export PERL_LWP_SSL_VER
|
|||||||
* Some files are removed from archive by the get-orig-source.sh
|
* Some files are removed from archive by the get-orig-source.sh
|
||||||
|
|
||||||
* Staying into git root directory, run
|
* Staying into git root directory, run
|
||||||
> git-import-orig -vv ../tcpdf_x.y.z+dfsg.orig.tar.xz
|
> git-import-orig -vv ../tcpdf_x.y.z+dfsg.orig.tar.xz --debian-branch=[master|jessie] --upstream-branch=[upstream|upstream-3.5.x]
|
||||||
|
|
||||||
Note: If there was errors solved manually, you may need to make a git commit
|
Note: If there was errors solved manually, you may need to make a git commit
|
||||||
|
|
||||||
@ -208,11 +208,15 @@ Warning: Date must have format reported by "date -R"
|
|||||||
Warning: Name and email must match value into debian/control file (Entry added here is used by next step).
|
Warning: Name and email must match value into debian/control file (Entry added here is used by next step).
|
||||||
|
|
||||||
* We try to build package
|
* We try to build package
|
||||||
> rm -fr ../build-area; git-buildpackage -us -uc
|
> rm -fr ../build-area;
|
||||||
|
> git-buildpackage -us -uc --git-debian-branch=[master|jessie] --git-upstream-branch=[upstream|upstream-3.5.x]
|
||||||
|
|
||||||
|
Note: To build an old version, do: git checkout oldtagname -b newbranchname; git-buildpackage -us -uc --git-debian-branch=newbranchname --git-upstream-branch=[upstream|upstream-3.5.x]
|
||||||
Note: You can use git-buildpackage -us -uc --git-ignore-new if you want to test build with uncommited file
|
Note: You can use git-buildpackage -us -uc --git-ignore-new if you want to test build with uncommited file
|
||||||
Note: You can use git-buildpackage -us -uc -d if you want to test build when dependencies does not match
|
Note: You can use git-buildpackage -us -uc -d if you want to test build when dependencies does not match
|
||||||
Note: Package is built into directory ../build-area
|
Note: Package is built into directory ../build-area
|
||||||
|
Note: To compare 2 packages: debdiff package1.dsc package2.dsc
|
||||||
|
|
||||||
|
|
||||||
* If package .deb is ok:
|
* If package .deb is ok:
|
||||||
Note: If there was errors managed manually, you may need to make a git commit but do not use option "amend" previous commit
|
Note: If there was errors managed manually, you may need to make a git commit but do not use option "amend" previous commit
|
||||||
@ -220,7 +224,7 @@ Note: If there was errors managed manually, you may need to make a git commit bu
|
|||||||
|
|
||||||
* If ok, you can tag.
|
* If ok, you can tag.
|
||||||
> Edit debian/changelog to replace "UNRELEASED" into "unstable", then push
|
> Edit debian/changelog to replace "UNRELEASED" into "unstable", then push
|
||||||
> git-buildpackage --git-tag-only --git-retag
|
> git-buildpackage --git-tag-only --git-retag --git-debian-branch=[master|jessie] --git-upstream-branch=[upstream|upstream-3.5.x]
|
||||||
> git push --tags
|
> git push --tags
|
||||||
|
|
||||||
* Compilation is then done by a debian developer and sent
|
* Compilation is then done by a debian developer and sent
|
||||||
@ -263,7 +267,7 @@ dolibarr-x.y.z+dfsgw.tgz
|
|||||||
(x.y.z = version, w start from 1 and is increased for each new git-import-orig already done)
|
(x.y.z = version, w start from 1 and is increased for each new git-import-orig already done)
|
||||||
|
|
||||||
* Staying into git root directory, run
|
* Staying into git root directory, run
|
||||||
> git-import-orig -vv ../dolibarr-x.y.z+dfsgw.tgz
|
> git-import-orig -vv ../dolibarr-x.y.z+dfsgw.tgz --debian-branch=[master|jessie] --upstream-branch=[upstream|upstream-3.5.x]
|
||||||
and enter version when requested with format
|
and enter version when requested with format
|
||||||
x.y.z+dfsgw
|
x.y.z+dfsgw
|
||||||
(x.y.z = version, w start from 1 and is increased for each new import)
|
(x.y.z = version, w start from 1 and is increased for each new import)
|
||||||
@ -289,11 +293,14 @@ To update dolibarr debian package when only files into debian has changed
|
|||||||
Once files has been prepared, it's time to test:
|
Once files has been prepared, it's time to test:
|
||||||
|
|
||||||
* Try to build package
|
* Try to build package
|
||||||
> rm -fr ../build-area; git-buildpackage -us -uc
|
> rm -fr ../build-area;
|
||||||
|
> git-buildpackage -us -uc --git-debian-branch=[master|jessie] --git-upstream-branch=[upstream|upstream-3.5.x]
|
||||||
|
|
||||||
|
Note: To build an old version, do: git checkout oldtagname -b newbranchname; git-buildpackage -us -uc --git-debian-branch=newbranchname --git-upstream-branch=[upstream|upstream-3.5.x]
|
||||||
Note: You can use git-buildpackage -us -uc --git-ignore-new if you want to test build with uncommited file
|
Note: You can use git-buildpackage -us -uc --git-ignore-new if you want to test build with uncommited file
|
||||||
Note: You can use git-buildpackage -us -uc -d if you want to test build when dependencies does not match
|
Note: You can use git-buildpackage -us -uc -d if you want to test build when dependencies does not match
|
||||||
Note: Package is built into directory ../build-area
|
Note: Package is built into directory ../build-area
|
||||||
|
Note: To compare 2 packages: debdiff package1.dsc package2.dsc
|
||||||
|
|
||||||
* Test package (see dedicated chapter to test it with debian unstable env)
|
* Test package (see dedicated chapter to test it with debian unstable env)
|
||||||
|
|
||||||
@ -303,7 +310,7 @@ Note: If there was errors managed manually, you may need to make a git commit bu
|
|||||||
|
|
||||||
* If ok, you can tag.
|
* If ok, you can tag.
|
||||||
> Edit debian/changelog to replace "UNRELEASED" into "unstable", then push
|
> Edit debian/changelog to replace "UNRELEASED" into "unstable", then push
|
||||||
> git-buildpackage --git-tag-only --git-retag
|
> git-buildpackage --git-tag-only --git-retag --git-debian-branch=[master|jessie] --git-upstream-branch=[upstream|upstream-3.5.x]
|
||||||
> git push --tags
|
> git push --tags
|
||||||
|
|
||||||
|
|
||||||
@ -321,15 +328,32 @@ http://packages.qa.debian.org
|
|||||||
|
|
||||||
|
|
||||||
##### Send an unblock request
|
##### Send an unblock request
|
||||||
|
|
||||||
Use this to move from unstable to testing.
|
Use this to move from unstable to testing.
|
||||||
|
|
||||||
reportbug -B debian
|
reportbug -B debian
|
||||||
Choose package "release.debian.org"
|
Choose package "release.debian.org"
|
||||||
Then "unblock"
|
Then "unblock"
|
||||||
Then name of package "dolibarr"
|
Then name of package "dolibarr"
|
||||||
Fill message, for example:
|
Fill message, for example:
|
||||||
"Please unblock package dolibarr
|
"Please unblock package dolibarr
|
||||||
A security error CVE-2014-7137 was reported and is fixed into package 3.5.5.
|
A security error CVE-2015-3935 was reported and is fixed into package 3.5.7.
|
||||||
Note that package 3.5.5 was prepared before the CVE was reported and include other fixes, but they are all related to stability or security (other se$
|
Note that package 3.5.7 contains not only fixed for bugs reported to debian. It includes other fixes, but they are all related to stability or security,
|
||||||
|
so it is a better solution to validate this maintenance release than applying a patch of the only CVE-2015-3935.
|
||||||
|
After discussion with ..., it appears that security holes are enough to request this unblock request."
|
||||||
|
|
||||||
|
|
||||||
|
Use this to request an update of a stable package
|
||||||
|
|
||||||
|
reportbug -B debian
|
||||||
|
Choose package "release.debian.org"
|
||||||
|
Then "unblock"
|
||||||
|
Then name of package "dolibarr"
|
||||||
|
Fill message, for example:
|
||||||
|
"Please unblock package dolibarr
|
||||||
|
A security error CVE-2015-3935 was reported and is fixed into package 3.5.7.
|
||||||
|
Note that package 3.5.7 contains not only fixed for bugs reported to debian. It includes other fixes, but they are all related to stability or security,
|
||||||
|
so it is a better solution to validate this maintenance release than applying a patch of the only CVE-2015-3935.
|
||||||
After discussion with ..., it appears that security holes are enough to request this unblock request."
|
After discussion with ..., it appears that security holes are enough to request this unblock request."
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,7 +15,7 @@ Alias /dolibarr /usr/share/dolibarr/htdocs
|
|||||||
# Require all granted
|
# Require all granted
|
||||||
# </IfVersion>
|
# </IfVersion>
|
||||||
# <IfVersion < 2.3>
|
# <IfVersion < 2.3>
|
||||||
# Order allow, deny
|
# Order allow,deny
|
||||||
# Allow from all
|
# Allow from all
|
||||||
# </IfVersion>
|
# </IfVersion>
|
||||||
#
|
#
|
||||||
@ -27,7 +27,7 @@ Alias /dolibarr /usr/share/dolibarr/htdocs
|
|||||||
Require all granted
|
Require all granted
|
||||||
</IfVersion>
|
</IfVersion>
|
||||||
<IfVersion < 2.3>
|
<IfVersion < 2.3>
|
||||||
Order allow, deny
|
Order allow,deny
|
||||||
Allow from all
|
Allow from all
|
||||||
</IfVersion>
|
</IfVersion>
|
||||||
|
|
||||||
|
|||||||
@ -40,10 +40,28 @@ enable_install_upgrade_wizard() {
|
|||||||
rm -f /var/lib/dolibarr/documents/install.lock
|
rm -f /var/lib/dolibarr/documents/install.lock
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
php_install() {
|
||||||
|
if which php5enmod >/dev/null 2>&1 ;then
|
||||||
|
# php5endmod exists for ubuntu only
|
||||||
|
echo "Enable php module mysqli with php5enmod"
|
||||||
|
php5enmod mysqli
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
apache_install() {
|
apache_install() {
|
||||||
webserver=$1
|
webserver=$1
|
||||||
|
|
||||||
|
# Enable Apache 2 alias module
|
||||||
|
if which a2enmod >/dev/null 2>&1 ;then
|
||||||
|
echo "Enable apache module alias with a2enmod"
|
||||||
|
a2enmod alias
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Enable dolibarr conf
|
||||||
if which a2enconf >/dev/null 2>&1 ;then
|
if which a2enconf >/dev/null 2>&1 ;then
|
||||||
# a2enconf exists for ubuntu only
|
# a2enconf exists for ubuntu only
|
||||||
|
echo "Enable link for Apache config file with a3enconf"
|
||||||
a2enconf dolibarr
|
a2enconf dolibarr
|
||||||
else
|
else
|
||||||
if [ -d /etc/$webserver/conf.d ] && [ ! -e /etc/$webserver/conf.d/dolibarr.conf ]; then
|
if [ -d /etc/$webserver/conf.d ] && [ ! -e /etc/$webserver/conf.d/dolibarr.conf ]; then
|
||||||
@ -88,11 +106,7 @@ case "$1" in
|
|||||||
echo This is not a first install
|
echo This is not a first install
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Apache 2 setup
|
php_install
|
||||||
if which a2enmod >/dev/null 2>&1 ;then
|
|
||||||
a2enmod alias
|
|
||||||
fi
|
|
||||||
|
|
||||||
apache_install
|
apache_install
|
||||||
lighttpd_install
|
lighttpd_install
|
||||||
|
|
||||||
|
|||||||
@ -277,7 +277,7 @@ help=!(Port > 0);
|
|||||||
Usage:
|
Usage:
|
||||||
if (help) {
|
if (help) {
|
||||||
printf("----- %s V%s (c)Laurent Destailleur -----\n",PROG,VERSION);
|
printf("----- %s V%s (c)Laurent Destailleur -----\n",PROG,VERSION);
|
||||||
printf("%s is a software that allows you to know if a TCP/IP port is used\n",PROG);
|
printf("%s is software that allows you to know if a TCP/IP port is used\n",PROG);
|
||||||
printf("%s sources can be compiled for WIN32 (VC++, GCC CYGWIN, MINGW) or for\n");
|
printf("%s sources can be compiled for WIN32 (VC++, GCC CYGWIN, MINGW) or for\n");
|
||||||
printf("Unix/Linux (GCC)\n",PROG);
|
printf("Unix/Linux (GCC)\n",PROG);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|||||||
@ -39,12 +39,14 @@ parse_str($argv[1]);
|
|||||||
$outputfile=dirname(__FILE__).'/../htdocs/install/filelist.xml';
|
$outputfile=dirname(__FILE__).'/../htdocs/install/filelist.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>'."\n");
|
fputs($fp, '<checksum_list version="'.$release.'">'."\n");
|
||||||
fputs($fp, '<dolibarr_root_dir version="'.$release.'">'."\n");
|
|
||||||
$dir_iterator = new RecursiveDirectoryIterator(dirname(__FILE__).'/../htdocs/');
|
fputs($fp, '<dolibarr_htdocs_dir>'."\n");
|
||||||
$iterator = new RecursiveIteratorIterator($dir_iterator);
|
|
||||||
|
$dir_iterator1 = new RecursiveDirectoryIterator(dirname(__FILE__).'/../htdocs/');
|
||||||
|
$iterator1 = new RecursiveIteratorIterator($dir_iterator1);
|
||||||
// need to ignore document custom etc
|
// need to ignore document custom etc
|
||||||
$files = new RegexIterator($iterator, '#^(?:[A-Z]:)?(?:/(?!(?:custom|documents|conf|install|nltechno))[^/]+)+/[^/]+\.(?:php|css|html|js|json|tpl|jpg|png|gif|sql|lang)$#i');
|
$files = new RegexIterator($iterator1, '#^(?:[A-Z]:)?(?:/(?!(?:custom|documents|conf|install|nltechno))[^/]+)+/[^/]+\.(?:php|css|html|js|json|tpl|jpg|png|gif|sql|lang)$#i');
|
||||||
$dir='';
|
$dir='';
|
||||||
$needtoclose=0;
|
$needtoclose=0;
|
||||||
foreach ($files as $file) {
|
foreach ($files as $file) {
|
||||||
@ -61,7 +63,34 @@ foreach ($files as $file) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
fputs($fp, '</dir>'."\n");
|
fputs($fp, '</dir>'."\n");
|
||||||
fputs($fp, '</dolibarr_root_dir>'."\n");
|
fputs($fp, '</dolibarr_htdocs_dir>'."\n");
|
||||||
|
|
||||||
|
|
||||||
|
fputs($fp, '<dolibarr_script_dir version="'.$release.'">'."\n");
|
||||||
|
|
||||||
|
$dir_iterator2 = new RecursiveDirectoryIterator(dirname(__FILE__).'/../scripts/');
|
||||||
|
$iterator2 = new RecursiveIteratorIterator($dir_iterator2);
|
||||||
|
// need to ignore document custom etc
|
||||||
|
$files = new RegexIterator($iterator2, '#^(?:[A-Z]:)?(?:/(?!(?:custom|documents|conf|install|nltechno))[^/]+)+/[^/]+\.(?:php|css|html|js|json|tpl|jpg|png|gif|sql|lang)$#i');
|
||||||
|
$dir='';
|
||||||
|
$needtoclose=0;
|
||||||
|
foreach ($files as $file) {
|
||||||
|
$newdir = str_replace(dirname(__FILE__).'/../scripts', '', dirname($file));
|
||||||
|
if ($newdir!=$dir) {
|
||||||
|
if ($needtoclose)
|
||||||
|
fputs($fp, '</dir>'."\n");
|
||||||
|
fputs($fp, '<dir name="'.$newdir.'" >'."\n");
|
||||||
|
$dir = $newdir;
|
||||||
|
$needtoclose=1;
|
||||||
|
}
|
||||||
|
if (filetype($file)=="file") {
|
||||||
|
fputs($fp, '<md5file name="'.basename($file).'">'.md5_file($file).'</md5file>'."\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fputs($fp, '</dir>'."\n");
|
||||||
|
fputs($fp, '</dolibarr_script_dir>'."\n");
|
||||||
|
|
||||||
|
|
||||||
fputs($fp, '</checksum_list>'."\n");
|
fputs($fp, '</checksum_list>'."\n");
|
||||||
fclose($fp);
|
fclose($fp);
|
||||||
|
|
||||||
|
|||||||
@ -41,23 +41,21 @@ If you want to build/test package locally:
|
|||||||
# Push/declare Dolibarr sources to Launchpad
|
# Push/declare Dolibarr sources to Launchpad
|
||||||
#----------------------------------
|
#----------------------------------
|
||||||
- From Launchpad project (https://launchpad.net/dolibarr), register a series:
|
- From Launchpad project (https://launchpad.net/dolibarr), register a series:
|
||||||
Call it 'trunk' or 'beta' or 'stable'
|
Call it 'trunk' or 'stable'
|
||||||
Use branch (dev):
|
Use branch (dev):
|
||||||
~eldy/dolibarr/develop
|
https://launchpad.net/~eldy/dolibarr/develop
|
||||||
~eldy/dolibarr/beta
|
https://launchpad.net/~eldy/dolibarr/stable
|
||||||
~eldy/dolibarr/stable
|
|
||||||
or
|
or
|
||||||
Use URL pattern (beta or stable):
|
Use URL pattern (stable):
|
||||||
For stable: http://www.dolibarr.org/files/lastbuild/package_debian-ubuntu/dolibarr_x.z.*.tar.gz
|
For stable: http://www.dolibarr.org/files/lastbuild/package_debian-ubuntu/dolibarr_x.z.*.tar.gz
|
||||||
For beta: http://www.dolibarr.org/files/stable/package_debian-ubuntu/dolibarr_x.y.*.tar.gz
|
|
||||||
|
|
||||||
- For Dev, you can also add link serie to GIT HEAD.
|
- For Dev, you can also add link serie to GIT HEAD.
|
||||||
- For beta and stable, you can init from command line
|
- For stable, you can init from command line
|
||||||
cd bzr/dolibarr-[beta|stable]
|
cd bzr/dolibarr-stable
|
||||||
bzr init
|
bzr init
|
||||||
bzr add
|
bzr add
|
||||||
bzr commit -m "Init"
|
bzr commit -m "Init"
|
||||||
bzr push lp:~yourlogin/dolibarr/[beta|stable]
|
bzr push lp:~yourlogin/dolibarr/stable
|
||||||
|
|
||||||
- List of series are visible here: https://launchpad.net/dolibarr/+series
|
- List of series are visible here: https://launchpad.net/dolibarr/+series
|
||||||
|
|
||||||
@ -65,19 +63,19 @@ If you want to build/test package locally:
|
|||||||
#----------------------------------
|
#----------------------------------
|
||||||
# create local repository
|
# create local repository
|
||||||
cd bzr
|
cd bzr
|
||||||
bzr branch lp:~yourlogin/dolibarr/[develop|beta|stable] dolibarr-[dev|beta|stable]
|
bzr branch lp:~yourlogin/dolibarr/[develop|stable] dolibarr-[dev|stable]
|
||||||
cd dolibarr-[dev|beta|stable]
|
cd dolibarr-[dev|stable]
|
||||||
# Update
|
# Update
|
||||||
bzr update
|
bzr update
|
||||||
-- Update files here. Remove all and overwrite --
|
-- Update files here: Remove all (except .bzr dir) and overwrite --
|
||||||
bzr status
|
bzr status
|
||||||
bzr add *
|
bzr add *
|
||||||
bzr commit -m "Description of change"
|
bzr commit -m "Upstream version x.y"
|
||||||
bzr push
|
bzr push
|
||||||
|
|
||||||
# Init debian dir repository into launchpad (when repository for sources does not exist)
|
# Init debian dir repository into launchpad (when repository for sources does not exist)
|
||||||
#----------------------------------
|
#----------------------------------
|
||||||
- Create debian directory and upload it onto bzr branch lp:~yourlogin/+junk/debian-[dev|beta|stable]
|
- Create debian directory and upload it onto bzr branch lp:~yourlogin/+junk/debian-[dev|stable]
|
||||||
cd bzr
|
cd bzr
|
||||||
mkdir debian
|
mkdir debian
|
||||||
cd debian
|
cd debian
|
||||||
@ -85,25 +83,25 @@ If you want to build/test package locally:
|
|||||||
bzr init
|
bzr init
|
||||||
bzr add
|
bzr add
|
||||||
bzr commit -m "Init control files"
|
bzr commit -m "Init control files"
|
||||||
bzr push lp:~yourlogin/+junk/debian-[dev|beta|stable] (put here any branch name or just bzr push if into a known branch)
|
bzr push lp:~yourlogin/+junk/debian-[dev|stable] (put here any branch name or just bzr push if into a known branch)
|
||||||
- or download it from launchpad bazaar:
|
- or download it from launchpad bazaar:
|
||||||
cd bzr
|
cd bzr
|
||||||
bzr branch lp:~yourlogin/+junk/debian-[dev|beta|stable]
|
bzr branch lp:~yourlogin/+junk/debian-[dev|stable]
|
||||||
|
|
||||||
# Get debian dir repository from launchpad (when repository for sources already exists)
|
# Get debian dir repository from launchpad (when repository for sources already exists)
|
||||||
#----------------------------------
|
#----------------------------------
|
||||||
cd bzr
|
cd bzr
|
||||||
bzr branch lp:~yourlogin/+junk/debian-[dev|beta|stable]
|
bzr branch lp:~yourlogin/+junk/debian-[dev|stable]
|
||||||
|
|
||||||
# To update debian dir into launchpad (when repository for sources already exists)
|
# To update debian dir into launchpad (when repository for sources already exists)
|
||||||
#----------------------------------
|
#----------------------------------
|
||||||
cd bzr
|
cd bzr
|
||||||
bzr branch lp:~yourlogin/+junk/debian-[dev|beta|stable]
|
bzr branch lp:~yourlogin/+junk/debian-[dev|stable]
|
||||||
cd debian-[dev|beta|stable]
|
cd debian-[dev|stable]
|
||||||
bzr status
|
bzr status
|
||||||
-- Update files here --
|
-- Update files here: Remove all (except .bzr dir) and overwrite. Restore version into the file changelog --
|
||||||
bzr commit -m "Description of change"
|
bzr commit -m "Description of change"
|
||||||
bzr push lp:~yourlogin/+junk/debian-[dev|beta|stable]
|
bzr push lp:~yourlogin/+junk/debian-[dev|stable]
|
||||||
|
|
||||||
|
|
||||||
# Define a recipe into launchpad (a rule to build packages into a PPA)
|
# Define a recipe into launchpad (a rule to build packages into a PPA)
|
||||||
@ -115,10 +113,6 @@ If you want to build/test package locally:
|
|||||||
# bzr-builder format 0.3 deb-version {debupstream}-0~{revno}
|
# bzr-builder format 0.3 deb-version {debupstream}-0~{revno}
|
||||||
lp:dolibarr
|
lp:dolibarr
|
||||||
merge packaging lp:~yourlogin/+junk/debian-dev
|
merge packaging lp:~yourlogin/+junk/debian-dev
|
||||||
For beta:
|
|
||||||
# bzr-builder format 0.3 deb-version {debupstream}-1~{revno}
|
|
||||||
lp:dolibarr/beta
|
|
||||||
merge packaging lp:~yourlogin/+junk/debian-beta
|
|
||||||
For stable:
|
For stable:
|
||||||
# bzr-builder format 0.3 deb-version {debupstream}-2~{revno}
|
# bzr-builder format 0.3 deb-version {debupstream}-2~{revno}
|
||||||
lp:dolibarr/stable
|
lp:dolibarr/stable
|
||||||
@ -126,13 +120,12 @@ If you want to build/test package locally:
|
|||||||
- Run command
|
- Run command
|
||||||
cd bzr
|
cd bzr
|
||||||
bzr dailydeb dolibarr.recipe working-dir
|
bzr dailydeb dolibarr.recipe working-dir
|
||||||
This will create a directory "working-dir" with dolibarr sources and will add sources from ~yourlogin/+junk/debian-[dev|beta|stable]
|
This will create a directory "working-dir" with dolibarr sources and will add sources from ~yourlogin/+junk/debian-[dev|stable]
|
||||||
- Test package sources
|
- Test package sources
|
||||||
sudo pbuilder build <working-dir>/<project>_<version>.dsc
|
sudo pbuilder build <working-dir>/<project>_<version>.dsc
|
||||||
|
|
||||||
List of recipes created
|
List of recipes created
|
||||||
https://code.launchpad.net/~eldy/+recipe/dolibarr-dev
|
https://code.launchpad.net/~eldy/+recipe/dolibarr-dev
|
||||||
https://code.launchpad.net/~eldy/+recipe/dolibarr-beta
|
|
||||||
https://code.launchpad.net/~eldy/+recipe/dolibarr-stable
|
https://code.launchpad.net/~eldy/+recipe/dolibarr-stable
|
||||||
|
|
||||||
|
|
||||||
@ -147,9 +140,6 @@ https://code.launchpad.net/~eldy/+recipe/dolibarr-stable
|
|||||||
For the development snapshot version:
|
For the development snapshot version:
|
||||||
deb http://ppa.launchpad.net/yourlogin/dolibarr-dev/ubuntu precise main
|
deb http://ppa.launchpad.net/yourlogin/dolibarr-dev/ubuntu precise main
|
||||||
deb-src http://ppa.launchpad.net/yourlogin/dolibarr-dev/ubuntu precise main
|
deb-src http://ppa.launchpad.net/yourlogin/dolibarr-dev/ubuntu precise main
|
||||||
For the beta version:
|
|
||||||
deb http://ppa.launchpad.net/yourlogin/dolibarr-beta/ubuntu precise main
|
|
||||||
deb-src http://ppa.launchpad.net/yourlogin/dolibarr-beta/ubuntu precise main
|
|
||||||
For the stable version:
|
For the stable version:
|
||||||
deb http://ppa.launchpad.net/yourlogin/dolibarr-stable/ubuntu precise main
|
deb http://ppa.launchpad.net/yourlogin/dolibarr-stable/ubuntu precise main
|
||||||
deb-src http://ppa.launchpad.net/yourlogin/dolibarr-stable/ubuntu precise main
|
deb-src http://ppa.launchpad.net/yourlogin/dolibarr-stable/ubuntu precise main
|
||||||
|
|||||||
@ -467,6 +467,7 @@ if ($nboftargetok) {
|
|||||||
|
|
||||||
# Removed known external modules to avoid any error when packaging from env where external modules are tested
|
# Removed known external modules to avoid any error when packaging from env where external modules are tested
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/custom/*`; # For custom we want to keep dir
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/custom/*`; # For custom we want to keep dir
|
||||||
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/allscreens*`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/ancotec*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/ancotec*`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/cabinetmed*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/cabinetmed*`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/calling*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/calling*`;
|
||||||
@ -481,8 +482,8 @@ if ($nboftargetok) {
|
|||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/pos*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/pos*`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/teclib*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/teclib*`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/timesheet*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/timesheet*`;
|
||||||
# Removed other test files
|
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/themes/oblyon*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/themes/oblyon*`;
|
||||||
|
# Removed other test files
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/themes/eldy/*.new`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/themes/eldy/*.new`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/public/api/explorer`; # This is a dev tool
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/public/api/explorer`; # This is a dev tool
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/public/test`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/public/test`;
|
||||||
|
|||||||
@ -8,15 +8,16 @@ This files describe steps made by Dolibarr packaging team to make a
|
|||||||
beta version of Dolibarr, step by step.
|
beta version of Dolibarr, step by step.
|
||||||
|
|
||||||
- Check all files are commited.
|
- Check all files are commited.
|
||||||
- Update version/info in ChangeLog. To generate a changelog, you can do "git log `git merge-base 3.7.0 origin/develop`.. --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"
|
- Update version/info in ChangeLog.
|
||||||
|
To generate a changelog of a major new version x.y.0, you can do "cd ~/git/dolibarr_x.y; git log `git merge-base x-1.y-1.0 origin/develop`.. --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"
|
||||||
|
To generate a changelog of a maintenance version x.y.z, you can do "cd ~/git/dolibarr_x.y; git log `git merge-base x.y.z-1 origin/develop`.. --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"
|
||||||
- Update version number with x.y.z-w in htdocs/filefunc.inc.php
|
- Update version number with x.y.z-w in htdocs/filefunc.inc.php
|
||||||
- Update version number with x.y.z-w in build/debian/changelog
|
|
||||||
- Commit all changes.
|
- Commit all changes.
|
||||||
- Add a Tag (x.y.z-beta) and push it: git push --tags
|
|
||||||
- Create a branch (x.y).
|
|
||||||
|
|
||||||
- Run makepack-dolibarr.pl to generate all packages.
|
- Run makepack-dolibarr.pl to generate all packages.
|
||||||
|
|
||||||
|
- Create a branch (x.y), if version seems stable enough.
|
||||||
|
|
||||||
- Move build files into www.dolibarr.org web site
|
- Move build files into www.dolibarr.org web site
|
||||||
(/home/dolibarr/wwwroot/files/lastbuild).
|
(/home/dolibarr/wwwroot/files/lastbuild).
|
||||||
|
|
||||||
@ -29,9 +30,10 @@ This files describe steps made by Dolibarr packaging team to make a
|
|||||||
complete release of Dolibarr, step by step.
|
complete release of Dolibarr, step by step.
|
||||||
|
|
||||||
- Check all files are commited.
|
- Check all files are commited.
|
||||||
- Update version/info in ChangeLog. To generate a changelog, you can do "git log `git merge-base 3.7.0 origin/develop`.. --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"
|
- Update version/info in ChangeLog.
|
||||||
|
To generate a changelog of a major new version x.y.0, you can do "cd ~/git/dolibarr_x.y; git log `git merge-base x-1.y-1.0 origin/develop`.. --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"
|
||||||
|
To generate a changelog of a maintenance version x.y.z, you can do "cd ~/git/dolibarr_x.y; git log `git merge-base x.y.z-1 origin/develop`.. --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"
|
||||||
- Update version number with x.y.z in htdocs/filefunc.inc.php
|
- Update version number with x.y.z in htdocs/filefunc.inc.php
|
||||||
- Update version number with x.y.z in build/debian/changelog
|
|
||||||
- Commit all changes.
|
- Commit all changes.
|
||||||
|
|
||||||
- Run makepack-dolibarr.pl to generate all packages.
|
- Run makepack-dolibarr.pl to generate all packages.
|
||||||
|
|||||||
@ -41,7 +41,7 @@
|
|||||||
<Char_Desc_45>DoliWamp, Dolibarr ERP/CRM for Windows</Char_Desc_45>
|
<Char_Desc_45>DoliWamp, Dolibarr ERP/CRM for Windows</Char_Desc_45>
|
||||||
<Char_Desc_80>DoliWamp, the easy to use Dolibarr for Windows to manage your company,foundation</Char_Desc_80>
|
<Char_Desc_80>DoliWamp, the easy to use Dolibarr for Windows to manage your company,foundation</Char_Desc_80>
|
||||||
<Char_Desc_250>DoliWamp is the Dolibarr ERP/CRM for Windows, the easy to use open source software to manage your activity (invoices, customers, suppliers, contracts, agenda, emailings...) and any other things a small or mid-sized business or a foundation needs.</Char_Desc_250>
|
<Char_Desc_250>DoliWamp is the Dolibarr ERP/CRM for Windows, the easy to use open source software to manage your activity (invoices, customers, suppliers, contracts, agenda, emailings...) and any other things a small or mid-sized business or a foundation needs.</Char_Desc_250>
|
||||||
<Char_Desc_450>DoliWamp is the Dolibarr ERP/CRM autoinstaller for Windows users with no technical knowledge to install Dolibarr and all its prerequisites (Apache, Mysql, PHP) with just one auto-exe file. Dolibarr ERP/CRM is a software built by modules addition (you enable only features you need), to manage small or mid-sized businesses, freelancers or foundations.</Char_Desc_450>
|
<Char_Desc_450>DoliWamp is the Dolibarr ERP/CRM autoinstaller for Windows users with no technical knowledge to install Dolibarr and all its prerequisites (Apache, Mysql, PHP) with just one auto-exe file. Dolibarr ERP/CRM is a software package built by modules addition (you enable only features you need), to manage small or mid-sized businesses, freelancers or foundations.</Char_Desc_450>
|
||||||
<Char_Desc_2000>DoliWamp is the Dolibarr ERP/CRM for Windows. Dolibarr ERP & CRM is a software built by modules addition (you enable only features you need), to manage small or mid-sized businesses, freelancers or foundations (You can manage or follow contacts, invoices, orders, commercial proposals, products, stock management, agenda, mass emailings, members of a foundation, bank accounts...). Based on a WAMP, MAMP or LAMP server (Apache, Mysql, PHP for all Operating Systems), you can install it as a standalone program or use it from anywhere with any web browser. Dolibarr is an OpenSource project. It differs from other ERP or CRM softwares (like OpenAguila, OpenBravo, OpenERP, Neogia, Compiere, etc) because everything was made to be more simple: Simple to install, Simple to use, Simple to develop.
|
<Char_Desc_2000>DoliWamp is the Dolibarr ERP/CRM for Windows. Dolibarr ERP & CRM is a software built by modules addition (you enable only features you need), to manage small or mid-sized businesses, freelancers or foundations (You can manage or follow contacts, invoices, orders, commercial proposals, products, stock management, agenda, mass emailings, members of a foundation, bank accounts...). Based on a WAMP, MAMP or LAMP server (Apache, Mysql, PHP for all Operating Systems), you can install it as a standalone program or use it from anywhere with any web browser. Dolibarr is an OpenSource project. It differs from other ERP or CRM softwares (like OpenAguila, OpenBravo, OpenERP, Neogia, Compiere, etc) because everything was made to be more simple: Simple to install, Simple to use, Simple to develop.
|
||||||
DoliWamp is the auto-installer for Windows users with no technical knowledge to install Dolibarr ERP/CRM and all its prerequisites (Apache, Mysql, PHP) with just one auto-exe file.</Char_Desc_2000>
|
DoliWamp is the auto-installer for Windows users with no technical knowledge to install Dolibarr ERP/CRM and all its prerequisites (Apache, Mysql, PHP) with just one auto-exe file.</Char_Desc_2000>
|
||||||
</English>
|
</English>
|
||||||
|
|||||||
@ -71,7 +71,7 @@
|
|||||||
<Char_Desc_45>DoliWamp, Dolibarr ERP/CRM for Windows</Char_Desc_45>
|
<Char_Desc_45>DoliWamp, Dolibarr ERP/CRM for Windows</Char_Desc_45>
|
||||||
<Char_Desc_80>DoliWamp, the easy to use Dolibarr for Windows to manage your company,foundation</Char_Desc_80>
|
<Char_Desc_80>DoliWamp, the easy to use Dolibarr for Windows to manage your company,foundation</Char_Desc_80>
|
||||||
<Char_Desc_250>DoliWamp is the Dolibarr ERP/CRM for Windows, the easy to use open source software to manage your activity (invoices, customers, suppliers, contracts, agenda, emailings...) and any other things a small or mid-sized business or a foundation needs.</Char_Desc_250>
|
<Char_Desc_250>DoliWamp is the Dolibarr ERP/CRM for Windows, the easy to use open source software to manage your activity (invoices, customers, suppliers, contracts, agenda, emailings...) and any other things a small or mid-sized business or a foundation needs.</Char_Desc_250>
|
||||||
<Char_Desc_450>DoliWamp is the Dolibarr ERP/CRM autoinstaller for Windows users with no technical knowledge to install Dolibarr and all its prerequisites (Apache, Mysql, PHP) with just one auto-exe file. Dolibarr ERP/CRM is a software built by modules addition (you enable only features you need), to manage small or mid-sized businesses, freelancers or foundations.</Char_Desc_450>
|
<Char_Desc_450>DoliWamp is the Dolibarr ERP/CRM autoinstaller for Windows users with no technical knowledge to install Dolibarr and all its prerequisites (Apache, Mysql, PHP) with just one auto-exe file. Dolibarr ERP/CRM is a software package built by modules addition (you enable only features you need), to manage small or mid-sized businesses, freelancers or foundations.</Char_Desc_450>
|
||||||
<Char_Desc_2000>DoliWamp is the Dolibarr ERP/CRM for Windows. Dolibarr ERP & CRM is a software built by modules addition (you enable only features you need), to manage small or mid-sized businesses, freelancers or foundations (You can manage or follow contacts, invoices, orders, commercial proposals, products, stock management, agenda, mass emailings, members of a foundation, bank accounts...). Based on a WAMP, MAMP or LAMP server (Apache, Mysql, PHP for all Operating Systems), you can install it as a standalone program or use it from anywhere with any web browser. Dolibarr is an OpenSource project. It differs from other ERP or CRM softwares (like OpenAguila, OpenBravo, OpenERP, Neogia, Compiere, etc) because everything was made to be more simple: Simple to install, Simple to use, Simple to develop.
|
<Char_Desc_2000>DoliWamp is the Dolibarr ERP/CRM for Windows. Dolibarr ERP & CRM is a software built by modules addition (you enable only features you need), to manage small or mid-sized businesses, freelancers or foundations (You can manage or follow contacts, invoices, orders, commercial proposals, products, stock management, agenda, mass emailings, members of a foundation, bank accounts...). Based on a WAMP, MAMP or LAMP server (Apache, Mysql, PHP for all Operating Systems), you can install it as a standalone program or use it from anywhere with any web browser. Dolibarr is an OpenSource project. It differs from other ERP or CRM softwares (like OpenAguila, OpenBravo, OpenERP, Neogia, Compiere, etc) because everything was made to be more simple: Simple to install, Simple to use, Simple to develop.
|
||||||
DoliWamp is the auto-installer for Windows users with no technical knowledge to install Dolibarr ERP/CRM and all its prerequisites (Apache, Mysql, PHP) with just one auto-exe file.</Char_Desc_2000>
|
DoliWamp is the auto-installer for Windows users with no technical knowledge to install Dolibarr ERP/CRM and all its prerequisites (Apache, Mysql, PHP) with just one auto-exe file.</Char_Desc_2000>
|
||||||
</English>
|
</English>
|
||||||
|
|||||||
@ -24,7 +24,7 @@ fi
|
|||||||
# To convert
|
# To convert
|
||||||
if [ "x$1" = "xfix" ]
|
if [ "x$1" = "xfix" ]
|
||||||
then
|
then
|
||||||
for fic in `find . \( -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.txt" -o -iname "*.xml"\) -exec file "{}" + | grep CRLF | awk -F':' '{ print $1 }' `
|
for fic in `find . \( -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.txt" -o -iname "*.xml" \) -exec file "{}" + | grep CRLF | awk -F':' '{ print $1 }' `
|
||||||
do
|
do
|
||||||
echo "Fix file $fic"
|
echo "Fix file $fic"
|
||||||
dos2unix $fic
|
dos2unix $fic
|
||||||
|
|||||||
BIN
dev/initdata/img/alberteinstein.jpg
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
dev/initdata/img/bookkeepercompany.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
dev/initdata/img/johndoe.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
dev/initdata/img/mariecurie.jpg
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
BIN
dev/initdata/img/mybigcompany.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
dev/initdata/img/pierrecurie.jpg
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
dev/initdata/img/printcompany.png
Normal file
|
After Width: | Height: | Size: 102 KiB |
@ -50,16 +50,16 @@ print "***** $script_file ($version) *****\n";
|
|||||||
// -------------------- START OF BUILD_CLASS_FROM_TABLE SCRIPT --------------------
|
// -------------------- START OF BUILD_CLASS_FROM_TABLE SCRIPT --------------------
|
||||||
|
|
||||||
// Check parameters
|
// Check parameters
|
||||||
if (! isset($argv[1]) || (isset($argv[2]) && ! isset($argv[6])))
|
if (! isset($argv[1]) || ! isset($argv[2]) || (isset($argv[3]) && ! isset($argv[7])))
|
||||||
{
|
{
|
||||||
print "Usage: $script_file tablename [server port databasename user pass]\n";
|
print "Usage: $script_file tablename modulename [server port databasename user pass]\n";
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($argv[2]) && isset($argv[3]) && isset($argv[4]) && isset($argv[5]) && isset($argv[6]))
|
if (isset($argv[3]) && isset($argv[4]) && isset($argv[5]) && isset($argv[6]) && isset($argv[7]))
|
||||||
{
|
{
|
||||||
print 'Use specific database ids'."\n";
|
print 'Use specific database ids'."\n";
|
||||||
$db=getDoliDBInstance('mysqli',$argv[2],$argv[5],$argv[6],$argv[4],$argv[3]);
|
$db=getDoliDBInstance('mysqli',$argv[3],$argv[6],$argv[7],$argv[5],$argv[4]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($db->type != 'mysql' && $db->type != 'mysqli')
|
if ($db->type != 'mysql' && $db->type != 'mysqli')
|
||||||
@ -68,14 +68,18 @@ if ($db->type != 'mysql' && $db->type != 'mysqli')
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$table=$argv[1];
|
||||||
|
$module=$argv[2];
|
||||||
|
|
||||||
// Show parameters
|
// Show parameters
|
||||||
print 'Tablename='.$argv[1]."\n";
|
print 'Tablename: '.$table."\n";
|
||||||
print "Current dir is ".getcwd()."\n";
|
print 'Modulename: '.$module."\n";
|
||||||
|
print "Current dir: ".getcwd()."\n";
|
||||||
|
print "Database name: ".$db->database_name."\n";
|
||||||
|
|
||||||
|
|
||||||
// Define array with list of properties
|
// Define array with list of properties
|
||||||
$property=array();
|
$property=array();
|
||||||
$table=$argv[1];
|
|
||||||
$foundprimary=0;
|
$foundprimary=0;
|
||||||
$resql=$db->DDLDescTable($table);
|
$resql=$db->DDLDescTable($table);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
@ -159,7 +163,7 @@ foreach($property as $key => $prop)
|
|||||||
|
|
||||||
// Define working variables
|
// Define working variables
|
||||||
$table=strtolower($table);
|
$table=strtolower($table);
|
||||||
$tablenoprefix=preg_replace('/'.preg_quote(MAIN_DB_PREFIX).'/i','',$table);
|
$tablenoprefix=preg_replace('/'.preg_quote(MAIN_DB_PREFIX,'/').'/i','',$table);
|
||||||
$classname=preg_replace('/_/','',ucfirst($tablenoprefix));
|
$classname=preg_replace('/_/','',ucfirst($tablenoprefix));
|
||||||
$classmin=preg_replace('/_/','',strtolower($classname));
|
$classmin=preg_replace('/_/','',strtolower($classname));
|
||||||
|
|
||||||
@ -179,11 +183,18 @@ if (! $sourcecontent)
|
|||||||
$outfile='out.'.$classmin.'.class.php';
|
$outfile='out.'.$classmin.'.class.php';
|
||||||
$targetcontent=$sourcecontent;
|
$targetcontent=$sourcecontent;
|
||||||
|
|
||||||
|
// Substitute module name
|
||||||
|
$targetcontent=preg_replace('/dev\/skeletons/', $module, $targetcontent);
|
||||||
|
$targetcontent=preg_replace('/mymodule othermodule1 othermodule2/', $module, $targetcontent);
|
||||||
|
$targetcontent=preg_replace('/mymodule/', $module, $targetcontent);
|
||||||
|
|
||||||
// Substitute class name
|
// Substitute class name
|
||||||
$targetcontent=preg_replace('/skeleton_class\.class\.php/', $classmin.'.class.php', $targetcontent);
|
$targetcontent=preg_replace('/skeleton_class\.class\.php/', $classmin.'.class.php', $targetcontent);
|
||||||
$targetcontent=preg_replace('/\$element = \'skeleton\'/', '\$element = \''.$classmin.'\'', $targetcontent);
|
$targetcontent=preg_replace('/\$element = \'skeleton\'/', '\$element = \''.$classmin.'\'', $targetcontent);
|
||||||
$targetcontent=preg_replace('/\$table_element = \'skeleton\'/', '\$table_element = \''.$tablenoprefix.'\'', $targetcontent);
|
$targetcontent=preg_replace('/\$table_element = \'skeleton\'/', '\$table_element = \''.$tablenoprefix.'\'', $targetcontent);
|
||||||
$targetcontent=preg_replace('/Skeleton_Class/', $classname, $targetcontent);
|
$targetcontent=preg_replace('/Skeleton_Class/', $classname, $targetcontent);
|
||||||
|
$targetcontent=preg_replace('/skeletons/', $classmin, $targetcontent);
|
||||||
|
$targetcontent=preg_replace('/skeleton/', $classmin, $targetcontent);
|
||||||
|
|
||||||
// Substitute comments
|
// Substitute comments
|
||||||
$targetcontent=preg_replace('/This file is an example to create a new class file/', 'Put here description of this class', $targetcontent);
|
$targetcontent=preg_replace('/This file is an example to create a new class file/', 'Put here description of this class', $targetcontent);
|
||||||
@ -207,8 +218,8 @@ foreach($property as $key => $prop)
|
|||||||
$varprop.="\n";
|
$varprop.="\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$targetcontent=preg_replace('/public \$prop1;/', $varprop, $targetcontent);
|
$targetcontent=preg_replace('/'.preg_quote('public $prop1;','/').'/', $varprop, $targetcontent);
|
||||||
$targetcontent=preg_replace('/public \$prop2;/', '', $targetcontent);
|
$targetcontent=preg_replace('/'.preg_quote('public $prop2;','/').'/', '', $targetcontent);
|
||||||
|
|
||||||
$targetcontent=preg_replace('/\*((\s|\n|\r|\t)*)\@var mixed Sample property 1((\s|\n|\r|\t)*)/', '', $targetcontent);
|
$targetcontent=preg_replace('/\*((\s|\n|\r|\t)*)\@var mixed Sample property 1((\s|\n|\r|\t)*)/', '', $targetcontent);
|
||||||
$targetcontent=preg_replace('/\*((\s|\n|\r|\t)*)\@var mixed Sample property 2((\s|\n|\r|\t)*)/', '', $targetcontent);
|
$targetcontent=preg_replace('/\*((\s|\n|\r|\t)*)\@var mixed Sample property 2((\s|\n|\r|\t)*)/', '', $targetcontent);
|
||||||
@ -283,7 +294,7 @@ foreach($property as $key => $prop)
|
|||||||
elseif ($prop['istime'])
|
elseif ($prop['istime'])
|
||||||
{
|
{
|
||||||
$varprop.='\'.(! isset($this->'.$prop['field'].') || dol_strlen($this->'.$prop['field'].')==0?\'NULL\':"\'".$this->db->idate(';
|
$varprop.='\'.(! isset($this->'.$prop['field'].') || dol_strlen($this->'.$prop['field'].')==0?\'NULL\':"\'".$this->db->idate(';
|
||||||
$varprop.="\$this->".$prop['field']."";
|
$varprop.="\$this->".$prop['field'];
|
||||||
$varprop.=").\"'\")";
|
$varprop.=").\"'\")";
|
||||||
}
|
}
|
||||||
elseif ($prop['ischar'])
|
elseif ($prop['ischar'])
|
||||||
@ -299,15 +310,14 @@ foreach($property as $key => $prop)
|
|||||||
elseif ($prop['isint'])
|
elseif ($prop['isint'])
|
||||||
{
|
{
|
||||||
$varprop.='\'.(! isset($this->'.$prop['field'].')?\'NULL\':';
|
$varprop.='\'.(! isset($this->'.$prop['field'].')?\'NULL\':';
|
||||||
$varprop.="\$this->".$prop['field']."";
|
$varprop.="\$this->".$prop['field'];
|
||||||
$varprop.=')';
|
$varprop.=')';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$varprop.=' \'.(! isset($this->'.$prop['field'].')?\'NULL\':"\'".';
|
$varprop.='\'.(! isset($this->'.$prop['field'].')?\'NULL\':"\'".';
|
||||||
$varprop.="\$this->".$prop['field']."";
|
$varprop.="\$this->".$prop['field'];
|
||||||
$varprop.='.\').';
|
$varprop.='."\'")';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($i < (count($property)-$no_output_field)) $varprop.=".','";
|
if ($i < (count($property)-$no_output_field)) $varprop.=".','";
|
||||||
@ -439,6 +449,7 @@ if ($fp)
|
|||||||
else $error++;
|
else $error++;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------
|
//--------------------------------
|
||||||
// Build skeleton_script.php
|
// Build skeleton_script.php
|
||||||
//--------------------------------
|
//--------------------------------
|
||||||
@ -458,12 +469,19 @@ if (! $sourcecontent)
|
|||||||
$outfile='out.'.$classmin.'_script.php';
|
$outfile='out.'.$classmin.'_script.php';
|
||||||
$targetcontent=$sourcecontent;
|
$targetcontent=$sourcecontent;
|
||||||
|
|
||||||
|
// Substitute module name
|
||||||
|
$targetcontent=preg_replace('/dev\/skeletons/', $module, $targetcontent);
|
||||||
|
$targetcontent=preg_replace('/mymodule othermodule1 othermodule2/', $module, $targetcontent);
|
||||||
|
$targetcontent=preg_replace('/mymodule/', $module, $targetcontent);
|
||||||
|
|
||||||
// Substitute class name
|
// Substitute class name
|
||||||
$targetcontent=preg_replace('/skeleton_class\.class\.php/', $classmin.'.class.php', $targetcontent);
|
$targetcontent=preg_replace('/skeleton_class\.class\.php/', $classmin.'.class.php', $targetcontent);
|
||||||
$targetcontent=preg_replace('/skeleton_script\.php/', $classmin.'_script.php', $targetcontent);
|
$targetcontent=preg_replace('/skeleton_script\.php/', $classmin.'_script.php', $targetcontent);
|
||||||
$targetcontent=preg_replace('/\$element = \'skeleton\'/', '\$element=\''.$classmin.'\'', $targetcontent);
|
$targetcontent=preg_replace('/\$element = \'skeleton\'/', '\$element=\''.$classmin.'\'', $targetcontent);
|
||||||
$targetcontent=preg_replace('/\$table_element = \'skeleton\'/', '\$table_element=\''.$classmin.'\'', $targetcontent);
|
$targetcontent=preg_replace('/\$table_element = \'skeleton\'/', '\$table_element=\''.$classmin.'\'', $targetcontent);
|
||||||
$targetcontent=preg_replace('/Skeleton_Class/', $classname, $targetcontent);
|
$targetcontent=preg_replace('/Skeleton_Class/', $classname, $targetcontent);
|
||||||
|
$targetcontent=preg_replace('/skeletons/', $classmin, $targetcontent);
|
||||||
|
$targetcontent=preg_replace('/skeleton/', $classmin, $targetcontent);
|
||||||
|
|
||||||
// Substitute comments
|
// Substitute comments
|
||||||
$targetcontent=preg_replace('/This file is an example to create a new class file/', 'Put here description of this class', $targetcontent);
|
$targetcontent=preg_replace('/This file is an example to create a new class file/', 'Put here description of this class', $targetcontent);
|
||||||
@ -504,13 +522,19 @@ if (! $sourcecontent)
|
|||||||
$outfile='out.'.$classmin.'_page.php';
|
$outfile='out.'.$classmin.'_page.php';
|
||||||
$targetcontent=$sourcecontent;
|
$targetcontent=$sourcecontent;
|
||||||
|
|
||||||
|
// Substitute module name
|
||||||
|
$targetcontent=preg_replace('/dev\/skeletons/', $module, $targetcontent);
|
||||||
|
$targetcontent=preg_replace('/mymodule othermodule1 othermodule2/', $module, $targetcontent);
|
||||||
|
$targetcontent=preg_replace('/mymodule/', $module, $targetcontent);
|
||||||
|
|
||||||
// Substitute class name
|
// Substitute class name
|
||||||
$targetcontent=preg_replace('/skeleton_class\.class\.php/', $classmin.'.class.php', $targetcontent);
|
$targetcontent=preg_replace('/skeleton_class\.class\.php/', $classmin.'.class.php', $targetcontent);
|
||||||
$targetcontent=preg_replace('/skeleton_script\.php/', $classmin.'_script.php', $targetcontent);
|
$targetcontent=preg_replace('/skeleton_script\.php/', $classmin.'_script.php', $targetcontent);
|
||||||
$targetcontent=preg_replace('/\$element = \'skeleton\'/', '\$element=\''.$classmin.'\'', $targetcontent);
|
$targetcontent=preg_replace('/\$element = \'skeleton\'/', '\$element=\''.$classmin.'\'', $targetcontent);
|
||||||
$targetcontent=preg_replace('/\$table_element = \'skeleton\'/', '\$table_element=\''.$classmin.'\'', $targetcontent);
|
$targetcontent=preg_replace('/\$table_element = \'skeleton\'/', '\$table_element=\''.$classmin.'\'', $targetcontent);
|
||||||
$targetcontent=preg_replace('/Skeleton_Class/', $classname, $targetcontent);
|
$targetcontent=preg_replace('/Skeleton_Class/', $classname, $targetcontent);
|
||||||
$targetcontent=preg_replace('/skeleton/', $classname, $targetcontent);
|
$targetcontent=preg_replace('/skeletons/', $classmin, $targetcontent);
|
||||||
|
$targetcontent=preg_replace('/skeleton/', $classmin, $targetcontent);
|
||||||
|
|
||||||
// Substitute comments
|
// Substitute comments
|
||||||
$targetcontent=preg_replace('/This file is an example to create a new class file/', 'Put here description of this class', $targetcontent);
|
$targetcontent=preg_replace('/This file is an example to create a new class file/', 'Put here description of this class', $targetcontent);
|
||||||
@ -520,9 +544,79 @@ $targetcontent=preg_replace('/Put here some comments/','Initialy built by build_
|
|||||||
// Substitute table name
|
// Substitute table name
|
||||||
$targetcontent=preg_replace('/MAIN_DB_PREFIX."mytable/', 'MAIN_DB_PREFIX."'.$tablenoprefix, $targetcontent);
|
$targetcontent=preg_replace('/MAIN_DB_PREFIX."mytable/', 'MAIN_DB_PREFIX."'.$tablenoprefix, $targetcontent);
|
||||||
|
|
||||||
|
// Substitute GETPOST search_fieldx
|
||||||
|
$varprop="\n";
|
||||||
|
$cleanparam='';
|
||||||
|
foreach($property as $key => $prop)
|
||||||
|
{
|
||||||
|
if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime'])
|
||||||
|
{
|
||||||
|
if ($prop['isint']) $varprop.='$search_'.$prop['field']."=GETPOST('search_".$prop['field']."','int');\n";
|
||||||
|
else $varprop.='$search_'.$prop['field']."=GETPOST('search_".$prop['field']."','alpha');\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$targetcontent=preg_replace('/'.preg_quote('$search_field1=GETPOST("search_field1");','/').'/', $varprop, $targetcontent);
|
||||||
|
$targetcontent=preg_replace('/'.preg_quote('$search_field2=GETPOST("search_field2");','/').'/', '', $targetcontent);
|
||||||
|
|
||||||
|
// Substitute GETPOST fieldx
|
||||||
|
$varprop="\n";
|
||||||
|
$cleanparam='';
|
||||||
|
foreach($property as $key => $prop)
|
||||||
|
{
|
||||||
|
if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime'])
|
||||||
|
{
|
||||||
|
if ($prop['isint']) $varprop.="\t\$object->".$prop['field']."=GETPOST('".$prop['field']."','int');\n";
|
||||||
|
else $varprop.="\t\$object->".$prop['field']."=GETPOST('".$prop['field']."','alpha');\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$targetcontent=preg_replace('/'.preg_quote('$object->prop1=GETPOST("field1");','/').'/', $varprop, $targetcontent);
|
||||||
|
$targetcontent=preg_replace('/'.preg_quote('$object->prop2=GETPOST("field2");','/').'/', '', $targetcontent);
|
||||||
|
|
||||||
// Substitute fetch/select parameters
|
// Substitute fetch/select parameters
|
||||||
$targetcontent=preg_replace('/\$sql \.= " t\.field1,";/', $varpropselect, $targetcontent);
|
$targetcontent=preg_replace('/\$sql\s*\.= " t\.field1,";/', $varpropselect, $targetcontent);
|
||||||
$targetcontent=preg_replace('/\$sql \.= " t\.field2";/', '', $targetcontent);
|
$targetcontent=preg_replace('/\$sql\s*\.= " t\.field2";/', '', $targetcontent);
|
||||||
|
|
||||||
|
// Substitute where for search
|
||||||
|
$varprop="\n";
|
||||||
|
$cleanparam='';
|
||||||
|
foreach($property as $key => $prop)
|
||||||
|
{
|
||||||
|
if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime'])
|
||||||
|
{
|
||||||
|
$varprop.='if ($search_'.$prop['field'].') $sql.= natural_search("'.$prop['field'].'",$search_'.$prop['field'].');'."\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$targetcontent=preg_replace('/'.preg_quote('if ($search_field1) $sql.= natural_search("field1",$search_field1);','/').'/', $varprop, $targetcontent);
|
||||||
|
$targetcontent=preg_replace('/'.preg_quote('if ($search_field2) $sql.= natural_search("field2",$search_field2);','/').'/', '', $targetcontent);
|
||||||
|
|
||||||
|
// Substitute print_liste_field_titre
|
||||||
|
$varprop="\n";
|
||||||
|
$cleanparam='';
|
||||||
|
foreach($property as $key => $prop)
|
||||||
|
{
|
||||||
|
if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime'])
|
||||||
|
{
|
||||||
|
$varprop.="print_liste_field_titre(\$langs->trans('".$prop['field']."'),\$_SERVER['PHP_SELF'],'t.".$prop['field']."','',\$param,'',\$sortfield,\$sortorder);\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$targetcontent=preg_replace('/'.preg_quote("print_liste_field_titre(\$langs->trans('field1'),\$_SERVER['PHP_SELF'],'t.field1','',\$param,'',\$sortfield,\$sortorder);",'/').'/', $varprop, $targetcontent);
|
||||||
|
$targetcontent=preg_replace('/'.preg_quote("print_liste_field_titre(\$langs->trans('field2'),\$_SERVER['PHP_SELF'],'t.field1','',\$param,'',\$sortfield,\$sortorder);",'/').'/', '', $targetcontent);
|
||||||
|
|
||||||
|
// Substitute where for <td>.fieldx.</td>
|
||||||
|
$varprop="\n";
|
||||||
|
$cleanparam='';
|
||||||
|
foreach($property as $key => $prop)
|
||||||
|
{
|
||||||
|
if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime'])
|
||||||
|
{
|
||||||
|
$varprop.="print '<td>'.\$obj->".$prop['field'].".'</td>';\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$targetcontent=preg_replace('/'.preg_quote("print '<td>'.\$obj->field1.'</td>';",'/').'/', $varprop, $targetcontent);
|
||||||
|
$targetcontent=preg_replace('/'.preg_quote("print '<td>'.\$obj->field2.'</td>';",'/').'/', '', $targetcontent);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Build file
|
// Build file
|
||||||
$fp=fopen($outfile,"w");
|
$fp=fopen($outfile,"w");
|
||||||
|
|||||||
@ -193,7 +193,7 @@ class modMyModule extends DolibarrModules
|
|||||||
// Add here entries to declare new menus
|
// Add here entries to declare new menus
|
||||||
//
|
//
|
||||||
// Example to declare a new Top Menu entry and its Left menu entry:
|
// Example to declare a new Top Menu entry and its Left menu entry:
|
||||||
// $this->menu[$r]=array( 'fk_menu'=>0, // Put 0 if this is a top menu
|
// $this->menu[$r]=array( 'fk_menu'=>'', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
|
||||||
// 'type'=>'top', // This is a Top menu entry
|
// 'type'=>'top', // This is a Top menu entry
|
||||||
// 'titre'=>'MyModule top menu',
|
// 'titre'=>'MyModule top menu',
|
||||||
// 'mainmenu'=>'mymodule',
|
// 'mainmenu'=>'mymodule',
|
||||||
@ -208,7 +208,7 @@ class modMyModule extends DolibarrModules
|
|||||||
// $r++;
|
// $r++;
|
||||||
//
|
//
|
||||||
// Example to declare a Left Menu entry into an existing Top menu entry:
|
// Example to declare a Left Menu entry into an existing Top menu entry:
|
||||||
// $this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=xxx', // Use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
|
// $this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=xxx', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
|
||||||
// 'type'=>'left', // This is a Left menu entry
|
// 'type'=>'left', // This is a Left menu entry
|
||||||
// 'titre'=>'MyModule left menu',
|
// 'titre'=>'MyModule left menu',
|
||||||
// 'mainmenu'=>'xxx',
|
// 'mainmenu'=>'xxx',
|
||||||
@ -228,11 +228,14 @@ class modMyModule extends DolibarrModules
|
|||||||
|
|
||||||
// Example:
|
// Example:
|
||||||
// $this->export_code[$r]=$this->rights_class.'_'.$r;
|
// $this->export_code[$r]=$this->rights_class.'_'.$r;
|
||||||
// $this->export_label[$r]='CustomersInvoicesAndInvoiceLines'; // Translation key (used only if key ExportDataset_xxx_z not found)
|
// $this->export_label[$r]='MyModule'; // Translation key (used only if key ExportDataset_xxx_z not found)
|
||||||
// $this->export_enabled[$r]='1'; // Condition to show export in list (ie: '$user->id==3'). Set to 1 to always show when module is enabled.
|
// $this->export_enabled[$r]='1'; // Condition to show export in list (ie: '$user->id==3'). Set to 1 to always show when module is enabled.
|
||||||
// $this->export_permission[$r]=array(array("facture","facture","export"));
|
// $this->export_icon[$r]='generic:MyModule';
|
||||||
|
// $this->export_permission[$r]=array(array("mymodule","level1","level2"));
|
||||||
// $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','s.fk_pays'=>'Country','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode','f.rowid'=>"InvoiceId",'f.facnumber'=>"InvoiceRef",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.total'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note'=>"InvoiceNote",'fd.rowid'=>'LineId','fd.description'=>"LineDescription",'fd.price'=>"LineUnitPrice",'fd.tva_tx'=>"LineVATRate",'fd.qty'=>"LineQty",'fd.total_ht'=>"LineTotalHT",'fd.total_tva'=>"LineTotalTVA",'fd.total_ttc'=>"LineTotalTTC",'fd.date_start'=>"DateStart",'fd.date_end'=>"DateEnd",'fd.fk_product'=>'ProductId','p.ref'=>'ProductRef');
|
// $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','s.fk_pays'=>'Country','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode','f.rowid'=>"InvoiceId",'f.facnumber'=>"InvoiceRef",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.total'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note'=>"InvoiceNote",'fd.rowid'=>'LineId','fd.description'=>"LineDescription",'fd.price'=>"LineUnitPrice",'fd.tva_tx'=>"LineVATRate",'fd.qty'=>"LineQty",'fd.total_ht'=>"LineTotalHT",'fd.total_tva'=>"LineTotalTVA",'fd.total_ttc'=>"LineTotalTTC",'fd.date_start'=>"DateStart",'fd.date_end'=>"DateEnd",'fd.fk_product'=>'ProductId','p.ref'=>'ProductRef');
|
||||||
|
// $this->export_TypeFields_array[$r]=array('t.date'=>'Date', 't.qte'=>'Numeric', 't.poids'=>'Numeric', 't.fad'=>'Numeric', 't.paq'=>'Numeric', 't.stockage'=>'Numeric', 't.fadparliv'=>'Numeric', 't.livau100'=>'Numeric', 't.forfait'=>'Numeric', 's.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Numeric",'f.total_ttc'=>"Numeric",'f.tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'fd.description'=>"Text",'fd.subprice'=>"Numeric",'fd.tva_tx'=>"Numeric",'fd.qty'=>"Numeric",'fd.total_ht'=>"Numeric",'fd.total_tva'=>"Numeric",'fd.total_ttc'=>"Numeric",'fd.date_start'=>"Date",'fd.date_end'=>"Date",'fd.special_code'=>'Numeric','fd.product_type'=>"Numeric",'fd.fk_product'=>'List:product:label','p.ref'=>'Text','p.label'=>'Text','p.accountancy_code_sell'=>'Text');
|
||||||
// $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','s.fk_pays'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note'=>"invoice",'fd.rowid'=>'invoice_line','fd.description'=>"invoice_line",'fd.price'=>"invoice_line",'fd.total_ht'=>"invoice_line",'fd.total_tva'=>"invoice_line",'fd.total_ttc'=>"invoice_line",'fd.tva_tx'=>"invoice_line",'fd.qty'=>"invoice_line",'fd.date_start'=>"invoice_line",'fd.date_end'=>"invoice_line",'fd.fk_product'=>'product','p.ref'=>'product');
|
// $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','s.fk_pays'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note'=>"invoice",'fd.rowid'=>'invoice_line','fd.description'=>"invoice_line",'fd.price'=>"invoice_line",'fd.total_ht'=>"invoice_line",'fd.total_tva'=>"invoice_line",'fd.total_ttc'=>"invoice_line",'fd.tva_tx'=>"invoice_line",'fd.qty'=>"invoice_line",'fd.date_start'=>"invoice_line",'fd.date_end'=>"invoice_line",'fd.fk_product'=>'product','p.ref'=>'product');
|
||||||
|
// $this->export_dependencies_array[$r]=array('invoice_line'=>'fd.rowid','product'=>'fd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them
|
||||||
// $this->export_sql_start[$r]='SELECT DISTINCT ';
|
// $this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||||
// $this->export_sql_end[$r] =' FROM ('.MAIN_DB_PREFIX.'facture as f, '.MAIN_DB_PREFIX.'facturedet as fd, '.MAIN_DB_PREFIX.'societe as s)';
|
// $this->export_sql_end[$r] =' FROM ('.MAIN_DB_PREFIX.'facture as f, '.MAIN_DB_PREFIX.'facturedet as fd, '.MAIN_DB_PREFIX.'societe as s)';
|
||||||
// $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (fd.fk_product = p.rowid)';
|
// $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (fd.fk_product = p.rowid)';
|
||||||
|
|||||||
@ -38,11 +38,6 @@ require_once DOL_DOCUMENT_ROOT . '/core/class/commonobject.class.php';
|
|||||||
*/
|
*/
|
||||||
class Skeleton_Class extends CommonObject
|
class Skeleton_Class extends CommonObject
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var DoliDb Database handler
|
|
||||||
*/
|
|
||||||
protected $db;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Error code (or message)
|
* @var string Error code (or message)
|
||||||
* @deprecated
|
* @deprecated
|
||||||
|
|||||||
@ -43,8 +43,8 @@ if (! $res && file_exists("../../../dolibarr/htdocs/main.inc.php")) $res=@includ
|
|||||||
if (! $res && file_exists("../../../../dolibarr/htdocs/main.inc.php")) $res=@include '../../../../dolibarr/htdocs/main.inc.php'; // Used on dev env only
|
if (! $res && file_exists("../../../../dolibarr/htdocs/main.inc.php")) $res=@include '../../../../dolibarr/htdocs/main.inc.php'; // Used on dev env only
|
||||||
if (! $res) die("Include of main fails");
|
if (! $res) die("Include of main fails");
|
||||||
// Change this following line to use the correct relative path from htdocs
|
// Change this following line to use the correct relative path from htdocs
|
||||||
include_once(DOL_DOCUMENT_ROOT.'/core/class/formcompany.class.php');
|
include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php');
|
||||||
dol_include_once('/module/class/skeleton_class.class.php');
|
dol_include_once('/mymodule/class/skeleton_class.class.php');
|
||||||
|
|
||||||
// Load traductions files requiredby by page
|
// Load traductions files requiredby by page
|
||||||
$langs->load("companies");
|
$langs->load("companies");
|
||||||
@ -56,13 +56,16 @@ $action = GETPOST('action','alpha');
|
|||||||
$backtopage = GETPOST('backtopage');
|
$backtopage = GETPOST('backtopage');
|
||||||
$myparam = GETPOST('myparam','alpha');
|
$myparam = GETPOST('myparam','alpha');
|
||||||
|
|
||||||
|
$search_field1=GETPOST("search_field1");
|
||||||
|
$search_field2=GETPOST("search_field2");
|
||||||
|
|
||||||
// Protection if external user
|
// Protection if external user
|
||||||
if ($user->societe_id > 0)
|
if ($user->societe_id > 0)
|
||||||
{
|
{
|
||||||
//accessforbidden();
|
//accessforbidden();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($action) && empty($id) && empty($ref)) $action='create';
|
if (empty($action) && empty($id) && empty($ref)) $action='list';
|
||||||
|
|
||||||
// Load object if id or ref is provided as parameter
|
// Load object if id or ref is provided as parameter
|
||||||
$object=new Skeleton_Class($db);
|
$object=new Skeleton_Class($db);
|
||||||
@ -95,7 +98,7 @@ if (empty($reshook))
|
|||||||
{
|
{
|
||||||
if (GETPOST('cancel'))
|
if (GETPOST('cancel'))
|
||||||
{
|
{
|
||||||
$urltogo=$backtopage?$backtopage:dol_buildpath('/buildingmanagement/list.php',1);
|
$urltogo=$backtopage?$backtopage:dol_buildpath('/mymodule/list.php',1);
|
||||||
header("Location: ".$urltogo);
|
header("Location: ".$urltogo);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
@ -149,7 +152,7 @@ if (empty($reshook))
|
|||||||
if (empty($object->ref))
|
if (empty($object->ref))
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Ref")),null,'errors');
|
setEventMessages($langs->transnoentitiesnoconv("ErrorFieldRequired",$langs->transnoentitiesnoconv("Ref")),null,'errors');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! $error)
|
if (! $error)
|
||||||
@ -180,7 +183,7 @@ if (empty($reshook))
|
|||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
// Delete OK
|
// Delete OK
|
||||||
setEventMessages($langs->trans("RecordDeleted"), null, 'mesgs');
|
setEventMessages("RecordDeleted", null, 'mesgs');
|
||||||
header("Location: ".dol_buildpath('/buildingmanagement/list.php',1));
|
header("Location: ".dol_buildpath('/buildingmanagement/list.php',1));
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
@ -225,9 +228,12 @@ jQuery(document).ready(function() {
|
|||||||
|
|
||||||
|
|
||||||
// Part to show a list
|
// Part to show a list
|
||||||
if ($action == 'list' || empty($id))
|
if ($action == 'list' || (empty($id) && $action != 'create'))
|
||||||
{
|
{
|
||||||
$sql = "SELECT";
|
// Put here content of your page
|
||||||
|
print load_fiche_titre('PageTitle');
|
||||||
|
|
||||||
|
$sql = "SELECT";
|
||||||
$sql.= " t.rowid,";
|
$sql.= " t.rowid,";
|
||||||
$sql.= " t.field1,";
|
$sql.= " t.field1,";
|
||||||
$sql.= " t.field2";
|
$sql.= " t.field2";
|
||||||
@ -238,55 +244,73 @@ if ($action == 'list' || empty($id))
|
|||||||
$reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook
|
$reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook
|
||||||
$sql.=$hookmanager->resPrint;
|
$sql.=$hookmanager->resPrint;
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."mytable as t";
|
$sql.= " FROM ".MAIN_DB_PREFIX."mytable as t";
|
||||||
$sql.= " WHERE field3 = 'xxx'";
|
$sql.= " WHERE 1 = 1";
|
||||||
|
if ($search_field1) $sql.= natural_search("field1",$search_field1);
|
||||||
|
if ($search_field2) $sql.= natural_search("field2",$search_field2);
|
||||||
|
|
||||||
// Add where from hooks
|
// Add where from hooks
|
||||||
$parameters=array();
|
$parameters=array();
|
||||||
$reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook
|
$reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook
|
||||||
$sql.=$hookmanager->resPrint;
|
$sql.=$hookmanager->resPrint;
|
||||||
$sql.= " ORDER BY field1 ASC";
|
|
||||||
|
|
||||||
print '<form method="GET" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">';
|
|
||||||
|
|
||||||
if (! empty($moreforfilter))
|
|
||||||
{
|
|
||||||
print '<div class="liste_titre">';
|
|
||||||
print $moreforfilter;
|
|
||||||
$parameters=array();
|
|
||||||
$reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook
|
|
||||||
print $hookmanager->resPrint;
|
|
||||||
print '</div>';
|
|
||||||
}
|
|
||||||
|
|
||||||
print '<table class="noborder">'."\n";
|
|
||||||
|
|
||||||
// Fields title
|
|
||||||
print '<tr class="liste_titre">';
|
|
||||||
print_liste_field_titre($langs->trans('field1'),$_SERVER['PHP_SELF'],'t.field1','',$param,'',$sortfield,$sortorder);
|
|
||||||
print_liste_field_titre($langs->trans('field2'),$_SERVER['PHP_SELF'],'t.field2','',$param,'',$sortfield,$sortorder);
|
|
||||||
$parameters=array();
|
|
||||||
$reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook
|
|
||||||
print $hookmanager->resPrint;
|
|
||||||
print '</tr>'."\n";
|
|
||||||
|
|
||||||
// Fields title search
|
|
||||||
print '<tr class="liste_titre">';
|
|
||||||
print '<td class="liste_titre">';
|
|
||||||
print '<input type="text" class="flat" name="search_field1" value="'.$search_field1.'" size="10">';
|
|
||||||
print '</td>';
|
|
||||||
print '<td class="liste_titre">';
|
|
||||||
print '<input type="text" class="flat" name="search_field2" value="'.$search_field2.'" size="10">';
|
|
||||||
print '</td>';
|
|
||||||
$parameters=array();
|
|
||||||
$reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook
|
|
||||||
print $hookmanager->resPrint;
|
|
||||||
print '</tr>'."\n";
|
|
||||||
|
|
||||||
|
// Count total nb of records
|
||||||
|
$nbtotalofrecords = 0;
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
|
||||||
|
{
|
||||||
|
$result = $db->query($sql);
|
||||||
|
$nbtotalofrecords = $db->num_rows($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql.= $db->order($sortfield, $sortorder);
|
||||||
|
$sql.= $db->plimit($conf->liste_limit+1, $offset);
|
||||||
|
|
||||||
|
|
||||||
dol_syslog($script_file, LOG_DEBUG);
|
dol_syslog($script_file, LOG_DEBUG);
|
||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
$num = $db->num_rows($resql);
|
$num = $db->num_rows($resql);
|
||||||
|
|
||||||
|
$params='';
|
||||||
|
$params.= '&search_field1='.urlencode($search_field1);
|
||||||
|
$params.= '&search_field2='.urlencode($search_field2);
|
||||||
|
|
||||||
|
print_barre_liste($title, $page, $_SERVER["PHP_SELF"],$params,$sortfield,$sortorder,'',$num,$nbtotalofrecords,'title_companies');
|
||||||
|
|
||||||
|
|
||||||
|
print '<form method="GET" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">';
|
||||||
|
|
||||||
|
if (! empty($moreforfilter))
|
||||||
|
{
|
||||||
|
print '<div class="liste_titre">';
|
||||||
|
print $moreforfilter;
|
||||||
|
$parameters=array();
|
||||||
|
$reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook
|
||||||
|
print $hookmanager->resPrint;
|
||||||
|
print '</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
print '<table class="noborder">'."\n";
|
||||||
|
|
||||||
|
// Fields title
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print_liste_field_titre($langs->trans('field1'),$_SERVER['PHP_SELF'],'t.field1','',$param,'',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre($langs->trans('field2'),$_SERVER['PHP_SELF'],'t.field2','',$param,'',$sortfield,$sortorder);
|
||||||
|
$parameters=array();
|
||||||
|
$reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook
|
||||||
|
print $hookmanager->resPrint;
|
||||||
|
print '</tr>'."\n";
|
||||||
|
|
||||||
|
// Fields title search
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print '<td class="liste_titre"><input type="text" class="flat" name="search_field1" value="'.$search_field1.'" size="10"></td>';
|
||||||
|
print '<td class="liste_titre"><input type="text" class="flat" name="search_field2" value="'.$search_field2.'" size="10"></td>';
|
||||||
|
$parameters=array();
|
||||||
|
$reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook
|
||||||
|
print $hookmanager->resPrint;
|
||||||
|
print '</tr>'."\n";
|
||||||
|
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while ($i < $num)
|
while ($i < $num)
|
||||||
{
|
{
|
||||||
@ -295,11 +319,8 @@ if ($action == 'list' || empty($id))
|
|||||||
{
|
{
|
||||||
// You can use here results
|
// You can use here results
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>';
|
print '<td>'.$obj->field1.'</td>';
|
||||||
print $obj->field1;
|
print '<td>'.$obj->field2.'</td>';
|
||||||
print '</td><td>';
|
|
||||||
print $obj->field2;
|
|
||||||
print '</td>';
|
|
||||||
$parameters=array('obj' => $obj);
|
$parameters=array('obj' => $obj);
|
||||||
$reshook=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook
|
$reshook=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook
|
||||||
print $hookmanager->resPrint;
|
print $hookmanager->resPrint;
|
||||||
@ -307,21 +328,22 @@ if ($action == 'list' || empty($id))
|
|||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$db->free($resql);
|
||||||
|
|
||||||
|
$parameters=array('sql' => $sql);
|
||||||
|
$reshook=$hookmanager->executeHooks('printFieldListFooter',$parameters); // Note that $action and $object may have been modified by hook
|
||||||
|
print $hookmanager->resPrint;
|
||||||
|
|
||||||
|
print "</table>\n";
|
||||||
|
print "</form>\n";
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
dol_print_error($db);
|
dol_print_error($db);
|
||||||
}
|
}
|
||||||
|
|
||||||
$db->free($resql);
|
|
||||||
|
|
||||||
$parameters=array('sql' => $sql);
|
|
||||||
$reshook=$hookmanager->executeHooks('printFieldListFooter',$parameters); // Note that $action and $object may have been modified by hook
|
|
||||||
print $hookmanager->resPrint;
|
|
||||||
|
|
||||||
print "</table>\n";
|
|
||||||
print "</form>\n";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -329,7 +351,7 @@ if ($action == 'list' || empty($id))
|
|||||||
// Part to create
|
// Part to create
|
||||||
if ($action == 'create')
|
if ($action == 'create')
|
||||||
{
|
{
|
||||||
print_fiche_titre($langs->trans("NewResidence"));
|
print_fiche_titre($langs->trans("NewSkeleton"));
|
||||||
|
|
||||||
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
||||||
print '<input type="hidden" name="action" value="add">';
|
print '<input type="hidden" name="action" value="add">';
|
||||||
|
|||||||
@ -30,8 +30,9 @@ then
|
|||||||
else
|
else
|
||||||
for file in `find htdocs/langs/$1/*.lang -type f`
|
for file in `find htdocs/langs/$1/*.lang -type f`
|
||||||
do
|
do
|
||||||
|
echo $file
|
||||||
export basefile=`basename $file | sed -s s/\.lang//g`
|
export basefile=`basename $file | sed -s s/\.lang//g`
|
||||||
echo "tx push --skip -r dolibarr.$basfile -t -l $1 $2 $3 $4"
|
echo "tx push --skip -r dolibarr.$basefile -t -l $1 $2 $3 $4"
|
||||||
tx push --skip -r dolibarr.$basefile -t -l $1 $2 $3 $4
|
tx push --skip -r dolibarr.$basefile -t -l $1 $2 $3 $4
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|||||||
BIN
doc/images/dolibarr_192x192.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
3
htdocs/.gitignore
vendored
@ -12,3 +12,6 @@
|
|||||||
/test.php
|
/test.php
|
||||||
/ultimatepdf*
|
/ultimatepdf*
|
||||||
/lead
|
/lead
|
||||||
|
/dolimed*
|
||||||
|
/allscreens*
|
||||||
|
/ecommerce/
|
||||||
|
|||||||
@ -173,11 +173,12 @@ if ($result) {
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
$var = true;
|
$var = false;
|
||||||
|
|
||||||
$accountstatic=new AccountingAccount($db);
|
$accountstatic=new AccountingAccount($db);
|
||||||
|
|
||||||
while ( $i < min($num, $limit) ) {
|
while ( $i < min($num, $limit) )
|
||||||
|
{
|
||||||
$obj = $db->fetch_object($resql);
|
$obj = $db->fetch_object($resql);
|
||||||
|
|
||||||
$accountstatic->id=$obj->rowid;
|
$accountstatic->id=$obj->rowid;
|
||||||
|
|||||||
@ -99,12 +99,13 @@ print_fiche_titre($langs->trans('ConfigAccountingExpert'),$linkback,'title_setup
|
|||||||
|
|
||||||
$head = admin_accounting_prepare_head();
|
$head = admin_accounting_prepare_head();
|
||||||
|
|
||||||
dol_fiche_head($head, 'export', $langs->trans("Configuration"), 0, 'cron');
|
|
||||||
|
|
||||||
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="post">';
|
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="post">';
|
||||||
print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
|
print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
|
||||||
print '<input type="hidden" name="action" value="update">';
|
print '<input type="hidden" name="action" value="update">';
|
||||||
|
|
||||||
|
dol_fiche_head($head, 'export', $langs->trans("Configuration"), 0, 'cron');
|
||||||
|
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
$var = true;
|
$var = true;
|
||||||
|
|
||||||
@ -169,7 +170,9 @@ if ($num)
|
|||||||
print "</table>\n";
|
print "</table>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<br><div style="text-align:center"><input type="submit" class="button" value="' . dol_escape_htmltag($langs->trans('Modify')) . '" name="button"></div>';
|
dol_fiche_end();
|
||||||
|
|
||||||
|
print '<div class="center"><input type="submit" class="button" value="' . dol_escape_htmltag($langs->trans('Modify')) . '" name="button"></div>';
|
||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
|
|
||||||
|
|||||||
@ -157,12 +157,13 @@ print_fiche_titre($langs->trans('ConfigAccountingExpert'),$linkback,'title_setup
|
|||||||
|
|
||||||
$head = admin_accounting_prepare_head($accounting);
|
$head = admin_accounting_prepare_head($accounting);
|
||||||
|
|
||||||
dol_fiche_head($head, 'general', $langs->trans("Configuration"), 0, 'cron');
|
|
||||||
|
|
||||||
print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
|
print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
|
||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
print '<input type="hidden" name="action" value="update">';
|
print '<input type="hidden" name="action" value="update">';
|
||||||
|
|
||||||
|
dol_fiche_head($head, 'general', $langs->trans("Configuration"), 0, 'cron');
|
||||||
|
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
|
|
||||||
// Cas du parametre ACCOUNTING_MODE
|
// Cas du parametre ACCOUNTING_MODE
|
||||||
@ -291,7 +292,11 @@ print '</tr>';
|
|||||||
|
|
||||||
print "</table>\n";
|
print "</table>\n";
|
||||||
|
|
||||||
print '<br /><br /><div style="text-align:center"><input type="submit" class="button" value="'.$langs->trans('Modify').'" name="button"></div>';
|
dol_fiche_end();
|
||||||
|
|
||||||
|
print '<div class="center"><input type="submit" class="button" value="'.$langs->trans('Modify').'" name="button"></div>';
|
||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
|
|
||||||
llxFooter();
|
llxFooter();
|
||||||
$db->close();
|
$db->close();
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/accountancy/admin/journaux.php
|
* \file htdocs/accountancy/admin/journal.php
|
||||||
* \ingroup Accounting Expert
|
* \ingroup Accounting Expert
|
||||||
* \brief Setup page to configure accounting expert module
|
* \brief Setup page to configure accounting expert module
|
||||||
*/
|
*/
|
||||||
@ -87,12 +87,12 @@ print_fiche_titre($langs->trans('ConfigAccountingExpert'),$linkback,'title_setup
|
|||||||
|
|
||||||
$head = admin_accounting_prepare_head(null);
|
$head = admin_accounting_prepare_head(null);
|
||||||
|
|
||||||
dol_fiche_head($head, 'journal', $langs->trans("Configuration"), 0, 'cron');
|
|
||||||
|
|
||||||
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="post">';
|
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="post">';
|
||||||
print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
|
print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
|
||||||
print '<input type="hidden" name="action" value="update">';
|
print '<input type="hidden" name="action" value="update">';
|
||||||
|
|
||||||
|
dol_fiche_head($head, 'journal', $langs->trans("Configuration"), 0, 'cron');
|
||||||
|
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td colspan="3">' . $langs->trans('Journaux') . '</td>';
|
print '<td colspan="3">' . $langs->trans('Journaux') . '</td>';
|
||||||
@ -115,10 +115,9 @@ foreach ( $list as $key ) {
|
|||||||
|
|
||||||
print "</table>\n";
|
print "</table>\n";
|
||||||
|
|
||||||
print '<br /><div style="text-align:center"><input type="submit" class="button" value="' . $langs->trans('Modify') . '" name="button"></div>';
|
|
||||||
print '</form>';
|
|
||||||
|
|
||||||
print '<br />';
|
print '<br>';
|
||||||
|
|
||||||
|
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
@ -164,9 +163,12 @@ $db->free($resql);
|
|||||||
|
|
||||||
print "</table>\n";
|
print "</table>\n";
|
||||||
|
|
||||||
print '</div>';
|
dol_fiche_end();
|
||||||
|
|
||||||
|
print '<div class="center"><input type="submit" class="button" value="' . $langs->trans('Modify') . '" name="button"></div>';
|
||||||
|
|
||||||
|
print '</form>';
|
||||||
|
|
||||||
print '<br>';
|
|
||||||
|
|
||||||
llxFooter();
|
llxFooter();
|
||||||
$db->close();
|
$db->close();
|
||||||
@ -287,8 +287,9 @@ if ($result) {
|
|||||||
print '<th align="left">' . $langs->trans("Accountancy_code_sell_suggest") . '</td>';
|
print '<th align="left">' . $langs->trans("Accountancy_code_sell_suggest") . '</td>';
|
||||||
}
|
}
|
||||||
// print_liste_field_titre('');
|
// print_liste_field_titre('');
|
||||||
print '<td align="center">' . $langs->trans("Ventilate") . '<br><label id="select-all">' . $langs->trans('All') . '</label>/<label id="unselect-all">' . $langs->trans('None') . '</label>' . '</td>';
|
print_liste_field_titre($langs->trans("Ventilate") . '<br><label id="select-all">' . $langs->trans('All') . '</label> / <label id="unselect-all">' . $langs->trans('None') . '</label>');
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td class="liste_titre"><input type="text" class="flat" size="20" name="search_ref" value="' . $search_ref . '"></td>';
|
print '<td class="liste_titre"><input type="text" class="flat" size="20" name="search_ref" value="' . $search_ref . '"></td>';
|
||||||
print '<td class="liste_titre"><input type="text" class="flat" size="20" name="search_label" value="' . $search_label . '"></td>';
|
print '<td class="liste_titre"><input type="text" class="flat" size="20" name="search_label" value="' . $search_label . '"></td>';
|
||||||
@ -359,7 +360,7 @@ if ($result) {
|
|||||||
// print '<td align="left">' . $compta_prodbuy . '</td>';
|
// print '<td align="left">' . $compta_prodbuy . '</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
|
||||||
// $trunclenghform = defined('ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT') ? ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT : 50;
|
// $trunclenghform = defined('ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT') ? ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT : 50;
|
||||||
print '<td align="center">';
|
print '<td align="left">';
|
||||||
print $form->select_account($compta_prodbuy_id, 'codeventil_'.$product_static->id, 1);
|
print $form->select_account($compta_prodbuy_id, 'codeventil_'.$product_static->id, 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
} else {
|
} else {
|
||||||
@ -369,7 +370,7 @@ if ($result) {
|
|||||||
// TODO: replace by select
|
// TODO: replace by select
|
||||||
// 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
|
||||||
// $trunclenghform = defined('ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT') ? ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT : 50;
|
// $trunclenghform = defined('ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT') ? ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT : 50;
|
||||||
print '<td align="center">';
|
print '<td align="left">';
|
||||||
print $form->select_account($compta_prodsell_id, 'codeventil_'.$product_static->id, 1);
|
print $form->select_account($compta_prodsell_id, 'codeventil_'.$product_static->id, 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2004-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2004-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
* 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.dolibarr@gmail.com>
|
* Copyright (C) 2013-2015 Alexandre Spangaro <alexandre.spangaro@gmail.com>
|
||||||
* 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
|
||||||
@ -225,6 +225,8 @@ class BookKeeping extends CommonObject
|
|||||||
*/
|
*/
|
||||||
function create($user='')
|
function create($user='')
|
||||||
{
|
{
|
||||||
|
global $conf;
|
||||||
|
|
||||||
$this->piece_num = 0;
|
$this->piece_num = 0;
|
||||||
|
|
||||||
// first check if line not yet in bookkeeping
|
// first check if line not yet in bookkeeping
|
||||||
@ -278,13 +280,45 @@ class BookKeeping extends CommonObject
|
|||||||
$this->date_create = $now;
|
$this->date_create = $now;
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "INSERT INTO " . MAIN_DB_PREFIX . "accounting_bookkeeping (doc_date, ";
|
$sql = "INSERT INTO " . MAIN_DB_PREFIX . "accounting_bookkeeping (";
|
||||||
$sql .= "doc_type, doc_ref,fk_doc,fk_docdet,code_tiers,numero_compte,label_compte,";
|
|
||||||
$sql .= "debit,credit,montant,sens,fk_user_author,import_key,code_journal,piece_num)";
|
$sql .= "doc_date";
|
||||||
$sql .= " VALUES ('" . $this->doc_date . "','" . $this->doc_type . "','" . $this->doc_ref . "'," . $this->fk_doc . ",";
|
$sql .= ", doc_type";
|
||||||
$sql .= $this->fk_docdet . ",'" . $this->code_tiers . "','" . $this->numero_compte . "','" . $this->db->escape($this->label_compte) . "',";
|
$sql .= ", doc_ref";
|
||||||
$sql .= $this->debit . "," . $this->credit . "," . $this->montant . ",'" . $this->sens . "'," . $user->id . ", '";
|
$sql .= ", fk_doc";
|
||||||
$sql .= $this->date_create . "','" . $this->code_journal . "'," . $this->piece_num . ")";
|
$sql .= ", fk_docdet";
|
||||||
|
$sql .= ", code_tiers";
|
||||||
|
$sql .= ", numero_compte";
|
||||||
|
$sql .= ", label_compte";
|
||||||
|
$sql .= ", debit";
|
||||||
|
$sql .= ", credit";
|
||||||
|
$sql .= ", montant";
|
||||||
|
$sql .= ", sens";
|
||||||
|
$sql .= ", fk_user_author";
|
||||||
|
$sql .= ", import_key";
|
||||||
|
$sql .= ", code_journal";
|
||||||
|
$sql .= ", piece_num";
|
||||||
|
|
||||||
|
$sql .= ") VALUES (";
|
||||||
|
|
||||||
|
$sql .= "'" . $this->doc_date . "'";
|
||||||
|
$sql .= ",'" . $this->doc_type . "'";
|
||||||
|
$sql .= ",'" . $this->doc_ref . "'";
|
||||||
|
$sql .= "," . $this->fk_doc;
|
||||||
|
$sql .= "," . $this->fk_docdet;
|
||||||
|
$sql .= ",'" . $this->code_tiers . "'";
|
||||||
|
$sql .= ",'" . $this->numero_compte . "'";
|
||||||
|
$sql .= ",'" . $this->db->escape($this->label_compte) . "'";
|
||||||
|
$sql .= "," . $this->debit;
|
||||||
|
$sql .= "," . $this->credit;
|
||||||
|
$sql .= "," . $this->montant;
|
||||||
|
$sql .= ",'" . $this->sens . "'";
|
||||||
|
$sql .= ",'" . $this->fk_user_author."'";
|
||||||
|
$sql .= ",'" . $this->date_create . "'";
|
||||||
|
$sql .= ",'" . $this->code_journal . "'";
|
||||||
|
$sql .= "," . $this->piece_num;
|
||||||
|
|
||||||
|
$sql .= ")";
|
||||||
|
|
||||||
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);
|
||||||
@ -296,19 +330,19 @@ class BookKeeping extends CommonObject
|
|||||||
$result = 0;
|
$result = 0;
|
||||||
} else {
|
} else {
|
||||||
$result = - 2;
|
$result = - 2;
|
||||||
dol_syslog("BookKeeping::Create Erreur $result lecture ID");
|
dol_syslog("BookKeeping::Create Error $result lecture ID");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$result = - 1;
|
$result = - 1;
|
||||||
dol_syslog("BookKeeping::Create Erreur $result INSERT Mysql");
|
dol_syslog("BookKeeping::Create Error $result INSERT Mysql");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$result = - 3;
|
$result = - 3;
|
||||||
dol_syslog("BookKeeping::Create Erreur $result SELECT Mysql");
|
dol_syslog("BookKeeping::Create Error $result SELECT Mysql");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$result = - 5;
|
$result = - 5;
|
||||||
dol_syslog("BookKeeping::Create Erreur $result SELECT Mysql");
|
dol_syslog("BookKeeping::Create Error $result SELECT Mysql");
|
||||||
}
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
|
|||||||
@ -300,6 +300,7 @@ if ($action == 'writeBookKeeping')
|
|||||||
$bookkeeping->debit = ($mt >= 0 ? $mt : 0);
|
$bookkeeping->debit = ($mt >= 0 ? $mt : 0);
|
||||||
$bookkeeping->credit = ($mt < 0 ? - $mt : 0);
|
$bookkeeping->credit = ($mt < 0 ? - $mt : 0);
|
||||||
$bookkeeping->code_journal = $conf->global->ACCOUNTING_BANK_JOURNAL;
|
$bookkeeping->code_journal = $conf->global->ACCOUNTING_BANK_JOURNAL;
|
||||||
|
$bookkeeping->fk_user_author = $user->id;
|
||||||
|
|
||||||
if ($tabtype[$key] == 'payment') {
|
if ($tabtype[$key] == 'payment') {
|
||||||
|
|
||||||
@ -350,6 +351,7 @@ if ($action == 'writeBookKeeping')
|
|||||||
$bookkeeping->debit = ($mt < 0 ? - $mt : 0);
|
$bookkeeping->debit = ($mt < 0 ? - $mt : 0);
|
||||||
$bookkeeping->credit = ($mt >= 0) ? $mt : 0;
|
$bookkeeping->credit = ($mt >= 0) ? $mt : 0;
|
||||||
$bookkeeping->code_journal = $conf->global->ACCOUNTING_BANK_JOURNAL;
|
$bookkeeping->code_journal = $conf->global->ACCOUNTING_BANK_JOURNAL;
|
||||||
|
$bookkeeping->fk_user_author = $user->id;
|
||||||
|
|
||||||
if ($tabtype[$key] == 'sc') {
|
if ($tabtype[$key] == 'sc') {
|
||||||
$bookkeeping->code_tiers = '';
|
$bookkeeping->code_tiers = '';
|
||||||
@ -414,7 +416,7 @@ if ($action == 'writeBookKeeping')
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (empty($error)) {
|
if (empty($error)) {
|
||||||
setEventMessage($langs->trans('Success'), 'mesgs');
|
setEventMessage($langs->trans("GeneralLedgerIsWritten"),'mesgs');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Export
|
// Export
|
||||||
@ -571,7 +573,7 @@ else
|
|||||||
|
|
||||||
// Title
|
// Title
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td valign="top" width="110">'.$langs->trans("ReportName").'</td>';
|
print '<td width="110">'.$langs->trans("ReportName").'</td>';
|
||||||
print '<td colspan="3">'.$namereport.'</td>';
|
print '<td colspan="3">'.$namereport.'</td>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
@ -588,7 +590,7 @@ else
|
|||||||
|
|
||||||
// Description
|
// Description
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td valign="top">'.$langs->trans("ReportDescription").'</td>';
|
print '<td>'.$langs->trans("ReportDescription").'</td>';
|
||||||
print '<td colspan="3">'.$description.'</td>';
|
print '<td colspan="3">'.$description.'</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
|
|||||||
@ -157,6 +157,7 @@ if ($result) {
|
|||||||
// Bookkeeping Write
|
// Bookkeeping Write
|
||||||
if ($action == 'writebookkeeping') {
|
if ($action == 'writebookkeeping') {
|
||||||
$now = dol_now();
|
$now = dol_now();
|
||||||
|
$error = 0;
|
||||||
|
|
||||||
foreach ( $tabfac as $key => $val ) {
|
foreach ( $tabfac as $key => $val ) {
|
||||||
foreach ( $tabttc[$key] as $k => $mt ) {
|
foreach ( $tabttc[$key] as $k => $mt ) {
|
||||||
@ -177,8 +178,13 @@ if ($action == 'writebookkeeping') {
|
|||||||
$bookkeeping->debit = ($mt <= 0) ? $mt : 0;
|
$bookkeeping->debit = ($mt <= 0) ? $mt : 0;
|
||||||
$bookkeeping->credit = ($mt > 0) ? $mt : 0;
|
$bookkeeping->credit = ($mt > 0) ? $mt : 0;
|
||||||
$bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
|
$bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
|
||||||
|
$bookkeeping->fk_user_author = $user->id;
|
||||||
|
|
||||||
$bookkeeping->create();
|
$result = $bookkeeping->create();
|
||||||
|
if ($result < 0) {
|
||||||
|
$error ++;
|
||||||
|
setEventMessage($object->errors, 'errors');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Product / Service
|
// Product / Service
|
||||||
@ -202,8 +208,13 @@ if ($action == 'writebookkeeping') {
|
|||||||
$bookkeeping->debit = ($mt > 0) ? $mt : 0;
|
$bookkeeping->debit = ($mt > 0) ? $mt : 0;
|
||||||
$bookkeeping->credit = ($mt <= 0) ? $mt : 0;
|
$bookkeeping->credit = ($mt <= 0) ? $mt : 0;
|
||||||
$bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
|
$bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
|
||||||
|
$bookkeeping->fk_user_author = $user->id;
|
||||||
|
|
||||||
$bookkeeping->create();
|
$result = $bookkeeping->create();
|
||||||
|
if ($result < 0) {
|
||||||
|
$error ++;
|
||||||
|
setEventMessage($object->errors, 'errors');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -228,11 +239,20 @@ if ($action == 'writebookkeeping') {
|
|||||||
$bookkeeping->debit = ($mt > 0) ? $mt : 0;
|
$bookkeeping->debit = ($mt > 0) ? $mt : 0;
|
||||||
$bookkeeping->credit = ($mt <= 0) ? $mt : 0;
|
$bookkeeping->credit = ($mt <= 0) ? $mt : 0;
|
||||||
$bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
|
$bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
|
||||||
|
$bookkeeping->fk_user_author = $user->id;
|
||||||
|
|
||||||
$bookkeeping->create();
|
$result = $bookkeeping->create();
|
||||||
|
if ($result < 0) {
|
||||||
|
$error ++;
|
||||||
|
setEventMessage($object->errors, 'errors');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (empty($error)) {
|
||||||
|
setEventMessage($langs->trans("GeneralLedgerIsWritten"),'mesgs');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -192,6 +192,7 @@ if ($result) {
|
|||||||
if ($action == 'writebookkeeping')
|
if ($action == 'writebookkeeping')
|
||||||
{
|
{
|
||||||
$now = dol_now();
|
$now = dol_now();
|
||||||
|
$error = 0;
|
||||||
|
|
||||||
foreach ($tabfac as $key => $val)
|
foreach ($tabfac as $key => $val)
|
||||||
{
|
{
|
||||||
@ -212,8 +213,13 @@ if ($action == 'writebookkeeping')
|
|||||||
$bookkeeping->debit = ($mt >= 0) ? $mt : 0;
|
$bookkeeping->debit = ($mt >= 0) ? $mt : 0;
|
||||||
$bookkeeping->credit = ($mt < 0) ? $mt : 0;
|
$bookkeeping->credit = ($mt < 0) ? $mt : 0;
|
||||||
$bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
|
$bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
|
||||||
|
$bookkeeping->fk_user_author = $user->id;
|
||||||
|
|
||||||
$bookkeeping->create();
|
$result = $bookkeeping->create();
|
||||||
|
if ($result < 0) {
|
||||||
|
$error ++;
|
||||||
|
setEventMessage($object->errors, 'errors');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Product / Service
|
// Product / Service
|
||||||
@ -237,8 +243,13 @@ if ($action == 'writebookkeeping')
|
|||||||
$bookkeeping->debit = ($mt < 0) ? $mt : 0;
|
$bookkeeping->debit = ($mt < 0) ? $mt : 0;
|
||||||
$bookkeeping->credit = ($mt >= 0) ? $mt : 0;
|
$bookkeeping->credit = ($mt >= 0) ? $mt : 0;
|
||||||
$bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
|
$bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
|
||||||
|
$bookkeeping->fk_user_author = $user->id;
|
||||||
|
|
||||||
$bookkeeping->create();
|
$result = $bookkeeping->create();
|
||||||
|
if ($result < 0) {
|
||||||
|
$error ++;
|
||||||
|
setEventMessage($object->errors, 'errors');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -264,11 +275,20 @@ if ($action == 'writebookkeeping')
|
|||||||
$bookkeeping->debit = ($mt < 0) ? $mt : 0;
|
$bookkeeping->debit = ($mt < 0) ? $mt : 0;
|
||||||
$bookkeeping->credit = ($mt >= 0) ? $mt : 0;
|
$bookkeeping->credit = ($mt >= 0) ? $mt : 0;
|
||||||
$bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
|
$bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
|
||||||
|
$bookkeeping->fk_user_author = $user->id;
|
||||||
|
|
||||||
$bookkeeping->create();
|
$result = $bookkeeping->create();
|
||||||
|
if ($result < 0) {
|
||||||
|
$error ++;
|
||||||
|
setEventMessage($object->errors, 'errors');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (empty($error)) {
|
||||||
|
setEventMessage($langs->trans("GeneralLedgerIsWritten"),'mesgs');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Export
|
// Export
|
||||||
|
|||||||
@ -200,7 +200,7 @@ if (! empty($conf->paybox->enabled) || ! empty($conf->paypal->enabled))
|
|||||||
print '<tr '.$bc[$var].' id="tremail"><td>';
|
print '<tr '.$bc[$var].' id="tremail"><td>';
|
||||||
print $langs->trans("MEMBER_PAYONLINE_SENDEMAIL");
|
print $langs->trans("MEMBER_PAYONLINE_SENDEMAIL");
|
||||||
print '</td><td align="right">';
|
print '</td><td align="right">';
|
||||||
print '<input type="text" id="MEMBER_PAYONLINE_SENDEMAIL" name="MEMBER_PAYONLINE_SENDEMAIL" size="24" value="'.(! empty($conf->global->MEMBER_PAYONLINE_SENDEMAIL)?$conf->global->MEMBER_PAYONLINE_SENDEMAIL:'').'">';;
|
print '<input type="text" id="MEMBER_PAYONLINE_SENDEMAIL" name="MEMBER_PAYONLINE_SENDEMAIL" size="24" value="'.(! empty($conf->global->MEMBER_PAYONLINE_SENDEMAIL)?$conf->global->MEMBER_PAYONLINE_SENDEMAIL:'').'">';
|
||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -326,25 +326,8 @@ if (empty($reshook))
|
|||||||
|
|
||||||
if ($result >= 0 && ! count($object->errors))
|
if ($result >= 0 && ! count($object->errors))
|
||||||
{
|
{
|
||||||
// Categories association
|
|
||||||
// First we delete all categories association
|
|
||||||
$sql = 'DELETE FROM ' . MAIN_DB_PREFIX . 'categorie_member';
|
|
||||||
$sql .= ' WHERE fk_member = ' . $object->id;
|
|
||||||
$resql = $db->query($sql);
|
|
||||||
if (! $resql) dol_print_error($db);
|
|
||||||
|
|
||||||
// Then we add the associated categories
|
|
||||||
$categories = GETPOST('memcats', 'array');
|
$categories = GETPOST('memcats', 'array');
|
||||||
|
$object->setCategories($categories);
|
||||||
if (! empty($categories))
|
|
||||||
{
|
|
||||||
$cat = new Categorie($db);
|
|
||||||
foreach ($categories as $id_category)
|
|
||||||
{
|
|
||||||
$cat->fetch($id_category);
|
|
||||||
$cat->add_type($object, 'member');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Logo/Photo save
|
// Logo/Photo save
|
||||||
$dir= $conf->adherent->dir_output . '/' . get_exdir($object->id,2,0,1,$object,'member').'/photos';
|
$dir= $conf->adherent->dir_output . '/' . get_exdir($object->id,2,0,1,$object,'member').'/photos';
|
||||||
@ -560,15 +543,7 @@ if (empty($reshook))
|
|||||||
{
|
{
|
||||||
// Categories association
|
// Categories association
|
||||||
$memcats = GETPOST('memcats', 'array');
|
$memcats = GETPOST('memcats', 'array');
|
||||||
if (! empty($memcats))
|
$object->setCategories($memcats);
|
||||||
{
|
|
||||||
$cat = new Categorie($db);
|
|
||||||
foreach ($memcats as $id_category)
|
|
||||||
{
|
|
||||||
$cat->fetch($id_category);
|
|
||||||
$cat->add_type($object, 'member');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$db->commit();
|
$db->commit();
|
||||||
$rowid=$object->id;
|
$rowid=$object->id;
|
||||||
@ -1478,7 +1453,14 @@ else
|
|||||||
// Password
|
// Password
|
||||||
if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
|
if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
|
||||||
{
|
{
|
||||||
print '<tr><td>'.$langs->trans("Password").'</td><td>'.preg_replace('/./i','*',$object->pass).'</td></tr>';
|
print '<tr><td>'.$langs->trans("Password").'</td><td>'.preg_replace('/./i','*',$object->pass);
|
||||||
|
if ((! empty($object->pass) || ! empty($object->pass_crypted)) && empty($object->user_id))
|
||||||
|
{
|
||||||
|
$langs->load("errors");
|
||||||
|
$htmltext=$langs->trans("WarningPasswordSetWithNoAccount");
|
||||||
|
print ' '.$form->textwithpicto('', $htmltext,1,'warning');
|
||||||
|
}
|
||||||
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Address
|
// Address
|
||||||
|
|||||||
@ -540,10 +540,12 @@ class Adherent extends CommonObject
|
|||||||
|
|
||||||
if ($result >= 0)
|
if ($result >= 0)
|
||||||
{
|
{
|
||||||
|
//var_dump($this->user_login);exit;
|
||||||
|
//var_dump($this->login);exit;
|
||||||
|
$luser->login=$this->login;
|
||||||
$luser->civility_id=$this->civility_id;
|
$luser->civility_id=$this->civility_id;
|
||||||
$luser->firstname=$this->firstname;
|
$luser->firstname=$this->firstname;
|
||||||
$luser->lastname=$this->lastname;
|
$luser->lastname=$this->lastname;
|
||||||
$luser->login=$this->user_login;
|
|
||||||
$luser->pass=$this->pass;
|
$luser->pass=$this->pass;
|
||||||
$luser->societe_id=$this->societe;
|
$luser->societe_id=$this->societe;
|
||||||
|
|
||||||
@ -1957,6 +1959,49 @@ class Adherent extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets object to supplied categories.
|
||||||
|
*
|
||||||
|
* Deletes object from existing categories not supplied.
|
||||||
|
* Adds it to non existing supplied categories.
|
||||||
|
* Existing categories are left untouch.
|
||||||
|
*
|
||||||
|
* @param int[]|int $categories Category or categories IDs
|
||||||
|
*/
|
||||||
|
public function setCategories($categories)
|
||||||
|
{
|
||||||
|
// Handle single category
|
||||||
|
if (!is_array($categories)) {
|
||||||
|
$categories = array($categories);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get current categories
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php';
|
||||||
|
$c = new Categorie($this->db);
|
||||||
|
$existing = $c->containing($this->id, Categorie::TYPE_MEMBER, 'id');
|
||||||
|
|
||||||
|
// Diff
|
||||||
|
if (is_array($existing)) {
|
||||||
|
$to_del = array_diff($existing, $categories);
|
||||||
|
$to_add = array_diff($categories, $existing);
|
||||||
|
} else {
|
||||||
|
$to_del = array(); // Nothing to delete
|
||||||
|
$to_add = $categories;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Process
|
||||||
|
foreach ($to_del as $del) {
|
||||||
|
$c->fetch($del);
|
||||||
|
$c->del_type($this, 'member');
|
||||||
|
}
|
||||||
|
foreach ($to_add as $add) {
|
||||||
|
$c->fetch($add);
|
||||||
|
$c->add_type($this, 'member');
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function used to replace a thirdparty id with another one.
|
* Function used to replace a thirdparty id with another one.
|
||||||
*
|
*
|
||||||
|
|||||||
@ -679,7 +679,16 @@ if ($rowid > 0)
|
|||||||
print '<br><br><table class="border" width="100%">';
|
print '<br><br><table class="border" width="100%">';
|
||||||
foreach($extrafields->attribute_label as $key=>$label)
|
foreach($extrafields->attribute_label as $key=>$label)
|
||||||
{
|
{
|
||||||
$value=(isset($_POST["options_".$key])?$_POST["options_".$key]:(isset($object->array_options['options_'.$key])?$object->array_options['options_'.$key]:''));
|
if (isset($_POST["options_" . $key])) {
|
||||||
|
if (is_array($_POST["options_" . $key])) {
|
||||||
|
// $_POST["options"] is an array but following code expects a comma separated string
|
||||||
|
$value = implode(",", $_POST["options_" . $key]);
|
||||||
|
} else {
|
||||||
|
$value = $_POST["options_" . $key];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$value = $adht->array_options["options_" . $key];
|
||||||
|
}
|
||||||
print '<tr><td width="30%">'.$label.'</td><td>';
|
print '<tr><td width="30%">'.$label.'</td><td>';
|
||||||
print $extrafields->showInputField($key,$value);
|
print $extrafields->showInputField($key,$value);
|
||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|||||||
@ -414,9 +414,9 @@ if ($action == 'edit' || $action == 'updateedit')
|
|||||||
|
|
||||||
// Forme juridique
|
// Forme juridique
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
print '<tr '.$bc[$var].'><td><label for="legal_form">'.$langs->trans("JuridicalStatus").'</label></td><td>';
|
print '<tr '.$bc[$var].'><td><label for="forme_juridique_code">'.$langs->trans("JuridicalStatus").'</label></td><td>';
|
||||||
if ($mysoc->country_code) {
|
if ($mysoc->country_code) {
|
||||||
print $formcompany->select_juridicalstatus($conf->global->MAIN_INFO_SOCIETE_FORME_JURIDIQUE, $mysoc->country_code, '', 'legal_form');
|
print $formcompany->select_juridicalstatus($conf->global->MAIN_INFO_SOCIETE_FORME_JURIDIQUE, $mysoc->country_code, '', 'forme_juridique_code');
|
||||||
} else {
|
} else {
|
||||||
print $countrynotdefined;
|
print $countrynotdefined;
|
||||||
}
|
}
|
||||||
@ -761,7 +761,7 @@ else
|
|||||||
// On propose la generation de la vignette si elle n'existe pas
|
// On propose la generation de la vignette si elle n'existe pas
|
||||||
if (!is_file($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_mini) && preg_match('/(\.jpg|\.jpeg|\.png)$/i',$mysoc->logo))
|
if (!is_file($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_mini) && preg_match('/(\.jpg|\.jpeg|\.png)$/i',$mysoc->logo))
|
||||||
{
|
{
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=addthumb&file='.urlencode($mysoc->logo).'">'.img_picto($langs->trans('GenerateThumb'),'refresh').' </a>';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=addthumb&file='.urlencode($mysoc->logo).'">'.img_picto($langs->trans('GenerateThumb'),'refresh').'</a> ';
|
||||||
}
|
}
|
||||||
else if ($mysoc->logo_mini && is_file($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_mini))
|
else if ($mysoc->logo_mini && is_file($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_mini))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -97,6 +97,12 @@ $modules=array(
|
|||||||
'img' => 'user'
|
'img' => 'user'
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
'expensereport' => array(
|
||||||
|
array(
|
||||||
|
'code' => 'MAIN_DELAY_EXPENSEREPORTS',
|
||||||
|
'img' => 'trip'
|
||||||
|
)
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($action == 'update')
|
if ($action == 'update')
|
||||||
|
|||||||
@ -151,7 +151,7 @@ $tabsql[8] = "SELECT t.id as rowid, t.code as code, t.libelle, t.fk_country a
|
|||||||
$tabsql[9] = "SELECT c.code_iso as code, c.label, c.unicode, c.active FROM ".MAIN_DB_PREFIX."c_currencies AS c";
|
$tabsql[9] = "SELECT c.code_iso as code, c.label, c.unicode, c.active FROM ".MAIN_DB_PREFIX."c_currencies AS c";
|
||||||
$tabsql[10]= "SELECT t.rowid, t.taux, t.localtax1_type, t.localtax1, t.localtax2_type, t.localtax2, c.label as country, c.code as country_code, t.fk_pays as country_id, t.recuperableonly, t.note, t.active, t.accountancy_code_sell, t.accountancy_code_buy FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c WHERE t.fk_pays=c.rowid";
|
$tabsql[10]= "SELECT t.rowid, t.taux, t.localtax1_type, t.localtax1, t.localtax2_type, t.localtax2, c.label as country, c.code as country_code, t.fk_pays as country_id, t.recuperableonly, t.note, t.active, t.accountancy_code_sell, t.accountancy_code_buy FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c WHERE t.fk_pays=c.rowid";
|
||||||
$tabsql[11]= "SELECT t.rowid as rowid, element, source, code, libelle, active FROM ".MAIN_DB_PREFIX."c_type_contact AS t";
|
$tabsql[11]= "SELECT t.rowid as rowid, element, source, code, libelle, active FROM ".MAIN_DB_PREFIX."c_type_contact AS t";
|
||||||
$tabsql[12]= "SELECT c.rowid as rowid, c.code, c.sortorder, c.libelle, c.libelle_facture, nbjour, fdm, decalage, active FROM ".MAIN_DB_PREFIX.'c_payment_term AS c';
|
$tabsql[12]= "SELECT c.rowid as rowid, c.code, c.libelle, c.libelle_facture, c.nbjour, c.fdm, c.decalage, c.active, c.sortorder FROM ".MAIN_DB_PREFIX.'c_payment_term AS c';
|
||||||
$tabsql[13]= "SELECT c.id as rowid, c.code, c.libelle, c.type, c.active, c.accountancy_code FROM ".MAIN_DB_PREFIX."c_paiement AS c";
|
$tabsql[13]= "SELECT c.id as rowid, c.code, c.libelle, c.type, c.active, c.accountancy_code FROM ".MAIN_DB_PREFIX."c_paiement AS c";
|
||||||
$tabsql[14]= "SELECT e.rowid as rowid, e.code as code, e.libelle, e.price, e.organization, e.fk_pays as country_id, c.code as country_code, c.label as country, e.active FROM ".MAIN_DB_PREFIX."c_ecotaxe AS e, ".MAIN_DB_PREFIX."c_country as c WHERE e.fk_pays=c.rowid and c.active=1";
|
$tabsql[14]= "SELECT e.rowid as rowid, e.code as code, e.libelle, e.price, e.organization, e.fk_pays as country_id, c.code as country_code, c.label as country, e.active FROM ".MAIN_DB_PREFIX."c_ecotaxe AS e, ".MAIN_DB_PREFIX."c_country as c WHERE e.fk_pays=c.rowid and c.active=1";
|
||||||
$tabsql[15]= "SELECT rowid as rowid, code, label as libelle, width, height, unit, active FROM ".MAIN_DB_PREFIX."c_paper_format";
|
$tabsql[15]= "SELECT rowid as rowid, code, label as libelle, width, height, unit, active FROM ".MAIN_DB_PREFIX."c_paper_format";
|
||||||
@ -215,7 +215,7 @@ $tabfield[8] = "code,libelle,country_id,country";
|
|||||||
$tabfield[9] = "code,label,unicode";
|
$tabfield[9] = "code,label,unicode";
|
||||||
$tabfield[10]= "country_id,country,taux,recuperableonly,localtax1_type,localtax1,localtax2_type,localtax2,accountancy_code_sell,accountancy_code_buy,note";
|
$tabfield[10]= "country_id,country,taux,recuperableonly,localtax1_type,localtax1,localtax2_type,localtax2,accountancy_code_sell,accountancy_code_buy,note";
|
||||||
$tabfield[11]= "element,source,code,libelle";
|
$tabfield[11]= "element,source,code,libelle";
|
||||||
$tabfield[12]= "code,libelle,libelle_facture,nbjour,fdm,decalage";
|
$tabfield[12]= "code,libelle,libelle_facture,nbjour,fdm,decalage,sortorder";
|
||||||
$tabfield[13]= "code,libelle,type,accountancy_code";
|
$tabfield[13]= "code,libelle,type,accountancy_code";
|
||||||
$tabfield[14]= "code,libelle,price,organization,country_id,country";
|
$tabfield[14]= "code,libelle,price,organization,country_id,country";
|
||||||
$tabfield[15]= "code,libelle,width,height,unit";
|
$tabfield[15]= "code,libelle,width,height,unit";
|
||||||
@ -247,7 +247,7 @@ $tabfieldvalue[8] = "code,libelle,country";
|
|||||||
$tabfieldvalue[9] = "code,label,unicode";
|
$tabfieldvalue[9] = "code,label,unicode";
|
||||||
$tabfieldvalue[10]= "country,taux,recuperableonly,localtax1_type,localtax1,localtax2_type,localtax2,accountancy_code_sell,accountancy_code_buy,note";
|
$tabfieldvalue[10]= "country,taux,recuperableonly,localtax1_type,localtax1,localtax2_type,localtax2,accountancy_code_sell,accountancy_code_buy,note";
|
||||||
$tabfieldvalue[11]= "element,source,code,libelle";
|
$tabfieldvalue[11]= "element,source,code,libelle";
|
||||||
$tabfieldvalue[12]= "code,libelle,libelle_facture,nbjour,fdm,decalage";
|
$tabfieldvalue[12]= "code,libelle,libelle_facture,nbjour,fdm,decalage,sortorder";
|
||||||
$tabfieldvalue[13]= "code,libelle,type,accountancy_code";
|
$tabfieldvalue[13]= "code,libelle,type,accountancy_code";
|
||||||
$tabfieldvalue[14]= "code,libelle,price,organization,country";
|
$tabfieldvalue[14]= "code,libelle,price,organization,country";
|
||||||
$tabfieldvalue[15]= "code,libelle,width,height,unit";
|
$tabfieldvalue[15]= "code,libelle,width,height,unit";
|
||||||
@ -279,7 +279,7 @@ $tabfieldinsert[8] = "code,libelle,fk_country";
|
|||||||
$tabfieldinsert[9] = "code_iso,label,unicode";
|
$tabfieldinsert[9] = "code_iso,label,unicode";
|
||||||
$tabfieldinsert[10]= "fk_pays,taux,recuperableonly,localtax1_type,localtax1,localtax2_type,localtax2,accountancy_code_sell,accountancy_code_buy,note";
|
$tabfieldinsert[10]= "fk_pays,taux,recuperableonly,localtax1_type,localtax1,localtax2_type,localtax2,accountancy_code_sell,accountancy_code_buy,note";
|
||||||
$tabfieldinsert[11]= "element,source,code,libelle";
|
$tabfieldinsert[11]= "element,source,code,libelle";
|
||||||
$tabfieldinsert[12]= "code,libelle,libelle_facture,nbjour,fdm,decalage";
|
$tabfieldinsert[12]= "code,libelle,libelle_facture,nbjour,fdm,decalage,sortorder";
|
||||||
$tabfieldinsert[13]= "code,libelle,type,accountancy_code";
|
$tabfieldinsert[13]= "code,libelle,type,accountancy_code";
|
||||||
$tabfieldinsert[14]= "code,libelle,price,organization,fk_pays";
|
$tabfieldinsert[14]= "code,libelle,price,organization,fk_pays";
|
||||||
$tabfieldinsert[15]= "code,label,width,height,unit";
|
$tabfieldinsert[15]= "code,label,width,height,unit";
|
||||||
@ -445,6 +445,7 @@ if ($id == 11)
|
|||||||
$langs->load("interventions");
|
$langs->load("interventions");
|
||||||
$elementList = array(
|
$elementList = array(
|
||||||
'' => '',
|
'' => '',
|
||||||
|
'societe' => $langs->trans('ThirdParty'),
|
||||||
// 'proposal' => $langs->trans('Proposal'),
|
// 'proposal' => $langs->trans('Proposal'),
|
||||||
// 'order' => $langs->trans('Order'),
|
// 'order' => $langs->trans('Order'),
|
||||||
// 'invoice' => $langs->trans('Bill'),
|
// 'invoice' => $langs->trans('Bill'),
|
||||||
@ -1594,6 +1595,7 @@ function fieldList($fieldlist, $obj='', $tabname='', $context='')
|
|||||||
if ($fieldlist[$field]=='accountancy_code') $size='size="10" ';
|
if ($fieldlist[$field]=='accountancy_code') $size='size="10" ';
|
||||||
if ($fieldlist[$field]=='accountancy_code_sell') $size='size="10" ';
|
if ($fieldlist[$field]=='accountancy_code_sell') $size='size="10" ';
|
||||||
if ($fieldlist[$field]=='accountancy_code_buy') $size='size="10" ';
|
if ($fieldlist[$field]=='accountancy_code_buy') $size='size="10" ';
|
||||||
|
if ($fieldlist[$field]=='sortorder') $size='size="2" ';
|
||||||
print '<input type="text" '.$size.' class="flat" value="'.(isset($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'" name="'.$fieldlist[$field].'">';
|
print '<input type="text" '.$size.' class="flat" value="'.(isset($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'" name="'.$fieldlist[$field].'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -203,7 +203,6 @@ else if ($action == 'set_FICHINTER_FREE_TEXT')
|
|||||||
else if ($action == 'set_FICHINTER_DRAFT_WATERMARK')
|
else if ($action == 'set_FICHINTER_DRAFT_WATERMARK')
|
||||||
{
|
{
|
||||||
$draft= GETPOST('FICHINTER_DRAFT_WATERMARK','alpha');
|
$draft= GETPOST('FICHINTER_DRAFT_WATERMARK','alpha');
|
||||||
|
|
||||||
$res = dolibarr_set_const($db, "FICHINTER_DRAFT_WATERMARK",trim($draft),'chaine',0,'',$conf->entity);
|
$res = dolibarr_set_const($db, "FICHINTER_DRAFT_WATERMARK",trim($draft),'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
if (! $res > 0) $error++;
|
if (! $res > 0) $error++;
|
||||||
@ -544,7 +543,7 @@ print '<input size="50" class="flat" type="text" name="FICHINTER_DRAFT_WATERMARK
|
|||||||
print '</td><td align="right">';
|
print '</td><td align="right">';
|
||||||
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
|
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
|
||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
print '</form>';
|
||||||
// print products on fichinter
|
// print products on fichinter
|
||||||
$var=! $var;
|
$var=! $var;
|
||||||
print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
|
print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
|
||||||
|
|||||||
@ -263,7 +263,7 @@ if (function_exists("ldap_connect"))
|
|||||||
$ldap = new Ldap(); // Les parametres sont passes et recuperes via $conf
|
$ldap = new Ldap(); // Les parametres sont passes et recuperes via $conf
|
||||||
|
|
||||||
$result = $ldap->connect_bind();
|
$result = $ldap->connect_bind();
|
||||||
if ($result)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
// Test ldap connect and bind
|
// Test ldap connect and bind
|
||||||
print img_picto('','info').' ';
|
print img_picto('','info').' ';
|
||||||
|
|||||||
@ -469,11 +469,11 @@ if ($mode != 'marketplace')
|
|||||||
}
|
}
|
||||||
else if (preg_match('/^([^@]+)@([^@]+)$/i',$objMod->config_page_url,$regs))
|
else if (preg_match('/^([^@]+)@([^@]+)$/i',$objMod->config_page_url,$regs))
|
||||||
{
|
{
|
||||||
print '<td align="right" valign="top"><a href="'.dol_buildpath('/'.$regs[2].'/admin/'.$regs[1],1).'" title="'.$langs->trans("Setup").'">'.img_picto($langs->trans("Setup"),"setup").'</a></td>';
|
print '<td align="right" valign="middle"><a href="'.dol_buildpath('/'.$regs[2].'/admin/'.$regs[1],1).'" title="'.$langs->trans("Setup").'">'.img_picto($langs->trans("Setup"),"setup").'</a></td>';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print '<td align="right" valign="top"><a href="'.$objMod->config_page_url.'" title="'.$langs->trans("Setup").'">'.img_picto($langs->trans("Setup"),"setup").'</a></td>';
|
print '<td align="right" valign="middle"><a href="'.$objMod->config_page_url.'" title="'.$langs->trans("Setup").'">'.img_picto($langs->trans("Setup"),"setup").'</a></td>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -500,7 +500,8 @@ if ($mode != 'marketplace')
|
|||||||
print img_picto($langs->trans("Disabled"),'switch_off');
|
print img_picto($langs->trans("Disabled"),'switch_off');
|
||||||
print "</a>\n";
|
print "</a>\n";
|
||||||
}
|
}
|
||||||
print "</td>\n <td> </td>";
|
print "</td>\n";
|
||||||
|
print "<td> </td>";
|
||||||
}
|
}
|
||||||
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|||||||
@ -126,7 +126,9 @@ if ($action == 'activate_encryptdbpassconf')
|
|||||||
$result = encodedecode_dbpassconf(1);
|
$result = encodedecode_dbpassconf(1);
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
// database value not required
|
sleep(3); // Don't know why but we need to wait file is completely saved before making the reload. Even with flush and clearstatcache, we need to wait.
|
||||||
|
|
||||||
|
// database value not required
|
||||||
//dolibarr_set_const($db, "MAIN_DATABASE_PWD_CONFIG_ENCRYPTED", "1");
|
//dolibarr_set_const($db, "MAIN_DATABASE_PWD_CONFIG_ENCRYPTED", "1");
|
||||||
header("Location: security.php");
|
header("Location: security.php");
|
||||||
exit;
|
exit;
|
||||||
@ -141,6 +143,8 @@ else if ($action == 'disable_encryptdbpassconf')
|
|||||||
$result = encodedecode_dbpassconf(0);
|
$result = encodedecode_dbpassconf(0);
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
|
sleep(3); // Don't know why but we need to wait file is completely saved before making the reload. Even with flush and clearstatcache, we need to wait.
|
||||||
|
|
||||||
// database value not required
|
// database value not required
|
||||||
//dolibarr_del_const($db, "MAIN_DATABASE_PWD_CONFIG_ENCRYPTED",$conf->entity);
|
//dolibarr_del_const($db, "MAIN_DATABASE_PWD_CONFIG_ENCRYPTED",$conf->entity);
|
||||||
header("Location: security.php");
|
header("Location: security.php");
|
||||||
|
|||||||
@ -63,11 +63,35 @@ print '<ul>';
|
|||||||
print '<li>';
|
print '<li>';
|
||||||
print '<a target="_blank" href="http://www.dolibarr.org/" rel="external">'.$langs->trans("OfficialWebSite").'</a>';
|
print '<a target="_blank" href="http://www.dolibarr.org/" rel="external">'.$langs->trans("OfficialWebSite").'</a>';
|
||||||
print '</li>';
|
print '</li>';
|
||||||
// If the French language, it displays French website
|
// Show local site
|
||||||
if (preg_match('/^fr_/i',$langs->getDefaultLang()))
|
if (preg_match('/^fr_/i',$langs->getDefaultLang()))
|
||||||
{
|
{
|
||||||
print '<li>';
|
print '<li>';
|
||||||
print '<a target="_blank" href="http://www.dolibarr.fr/" rel="external">'.$langs->trans("OfficialWebSiteFr").'</a>';
|
print '<a target="_blank" href="http://www.dolibarr.fr/" rel="external">'.$langs->trans("OfficialWebSiteLocal", $langs->transnoentitiesnoconv("France")).'</a>';
|
||||||
|
print '</li>';
|
||||||
|
}
|
||||||
|
if (preg_match('/^el_/i',$langs->getDefaultLang()))
|
||||||
|
{
|
||||||
|
print '<li>';
|
||||||
|
print '<a target="_blank" href="http://www.dolibarr.gr/" rel="external">'.$langs->trans("OfficialWebSiteLocal", $langs->transnoentitiesnoconv("Greece")).'</a>';
|
||||||
|
print '</li>';
|
||||||
|
}
|
||||||
|
if (preg_match('/^es_/i',$langs->getDefaultLang()))
|
||||||
|
{
|
||||||
|
print '<li>';
|
||||||
|
print '<a target="_blank" href="http://www.dolibarr.es/" rel="external">'.$langs->trans("OfficialWebSiteLocal", $langs->transnoentitiesnoconv("Spain")).'</a>';
|
||||||
|
print '</li>';
|
||||||
|
}
|
||||||
|
if (preg_match('/^it_/i',$langs->getDefaultLang()))
|
||||||
|
{
|
||||||
|
print '<li>';
|
||||||
|
print '<a target="_blank" href="http://www.dolibarr.it/" rel="external">'.$langs->trans("OfficialWebSiteLocal", $langs->transnoentitiesnoconv("Italy")).'</a>';
|
||||||
|
print '</li>';
|
||||||
|
}
|
||||||
|
if (preg_match('/^de_/i',$langs->getDefaultLang()))
|
||||||
|
{
|
||||||
|
print '<li>';
|
||||||
|
print '<a target="_blank" href="http://www.dolibarr.de/" rel="external">'.$langs->trans("OfficialWebSiteLocal", $langs->transnoentitiesnoconv("Germany")).'</a>';
|
||||||
print '</li>';
|
print '</li>';
|
||||||
}
|
}
|
||||||
print '<li>';
|
print '<li>';
|
||||||
|
|||||||
@ -31,6 +31,8 @@ $langs->load("admin");
|
|||||||
if (!$user->admin)
|
if (!$user->admin)
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
|
|
||||||
|
$error=0;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* View
|
* View
|
||||||
@ -77,67 +79,91 @@ if (file_exists($xmlfile))
|
|||||||
$xml = simplexml_load_file($xmlfile);
|
$xml = simplexml_load_file($xmlfile);
|
||||||
if ($xml)
|
if ($xml)
|
||||||
{
|
{
|
||||||
$file_list = array();
|
if (is_object($xml->dolibarr_htdocs_dir[0]))
|
||||||
$ret = getFilesUpdated($file_list, $xml->dolibarr_root_dir[0]); // Fill array $file_list
|
|
||||||
|
|
||||||
print '<table class="noborder">';
|
|
||||||
print '<tr class="liste_titre">';
|
|
||||||
print '<td>' . $langs->trans("FilesMissing") . '</td>';
|
|
||||||
print '<td align="center">' . $langs->trans("ExpectedChecksum") . '</td>';
|
|
||||||
print '</tr>'."\n";
|
|
||||||
$var = true;
|
|
||||||
$tmpfilelist = dol_sort_array($file_list['missing'], 'filename');
|
|
||||||
if (is_array($tmpfilelist))
|
|
||||||
{
|
{
|
||||||
foreach ($tmpfilelist as $file)
|
$file_list = array();
|
||||||
{
|
$ret = getFilesUpdated($file_list, $xml->dolibarr_htdocs_dir[0]); // Fill array $file_list
|
||||||
$var = !$var;
|
|
||||||
print '<tr ' . $bc[$var] . '>';
|
print '<table class="noborder">';
|
||||||
print '<td>'.$file['filename'].'</td>' . "\n";
|
print '<tr class="liste_titre">';
|
||||||
print '<td align="center">'.$file['expectedmd5'].'</td>' . "\n";
|
print '<td>' . $langs->trans("FilesMissing") . '</td>';
|
||||||
print "</tr>\n";
|
print '<td align="center">' . $langs->trans("ExpectedChecksum") . '</td>';
|
||||||
}
|
print '</tr>'."\n";
|
||||||
|
$var = true;
|
||||||
|
$tmpfilelist = dol_sort_array($file_list['missing'], 'filename');
|
||||||
|
if (is_array($tmpfilelist) && count($tmpfilelist))
|
||||||
|
{
|
||||||
|
foreach ($tmpfilelist as $file)
|
||||||
|
{
|
||||||
|
$var = !$var;
|
||||||
|
print '<tr ' . $bc[$var] . '>';
|
||||||
|
print '<td>'.$file['filename'].'</td>' . "\n";
|
||||||
|
print '<td align="center">'.$file['expectedmd5'].'</td>' . "\n";
|
||||||
|
print "</tr>\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print '<tr ' . $bc[false] . '><td colspan="2">'.$langs->trans("None").'</td></tr>';
|
||||||
|
}
|
||||||
|
print '</table>';
|
||||||
|
|
||||||
|
print '<br>';
|
||||||
|
|
||||||
|
print '<table class="noborder">';
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print '<td>' . $langs->trans("FilesUpdated") . '</td>';
|
||||||
|
print '<td align="center">' . $langs->trans("ExpectedChecksum") . '</td>';
|
||||||
|
print '<td align="center">' . $langs->trans("CurrentChecksum") . '</td>';
|
||||||
|
print '<td align="right">' . $langs->trans("Size") . '</td>';
|
||||||
|
print '<td align="right">' . $langs->trans("DateModification") . '</td>';
|
||||||
|
print '</tr>'."\n";
|
||||||
|
$var = true;
|
||||||
|
$tmpfilelist = dol_sort_array($file_list['updated'], 'filename');
|
||||||
|
if (is_array($tmpfilelist) && count($tmpfilelist))
|
||||||
|
{
|
||||||
|
foreach ($tmpfilelist as $file)
|
||||||
|
{
|
||||||
|
$var = !$var;
|
||||||
|
print '<tr ' . $bc[$var] . '>';
|
||||||
|
print '<td>'.$file['filename'].'</td>' . "\n";
|
||||||
|
print '<td align="center">'.$file['expectedmd5'].'</td>' . "\n";
|
||||||
|
print '<td align="center">'.$file['md5'].'</td>' . "\n";
|
||||||
|
print '<td align="right">'.dol_print_size(dol_filesize(DOL_DOCUMENT_ROOT.'/'.$file['filename'])).'</td>' . "\n";
|
||||||
|
print '<td align="right">'.dol_print_date(dol_filemtime(DOL_DOCUMENT_ROOT.'/'.$file['filename']),'dayhour').'</td>' . "\n";
|
||||||
|
print "</tr>\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print '<tr ' . $bc[false] . '><td colspan="5">'.$langs->trans("None").'</td></tr>';
|
||||||
|
}
|
||||||
|
print '</table>';
|
||||||
}
|
}
|
||||||
print '</table>';
|
else
|
||||||
|
|
||||||
print '<br>';
|
|
||||||
|
|
||||||
print '<table class="noborder">';
|
|
||||||
print '<tr class="liste_titre">';
|
|
||||||
print '<td>' . $langs->trans("FilesUpdated") . '</td>';
|
|
||||||
print '<td align="center">' . $langs->trans("ExpectedChecksum") . '</td>';
|
|
||||||
print '<td align="center">' . $langs->trans("CurrentChecksum") . '</td>';
|
|
||||||
print '<td align="right">' . $langs->trans("Size") . '</td>';
|
|
||||||
print '<td align="right">' . $langs->trans("DateModification") . '</td>';
|
|
||||||
print '</tr>'."\n";
|
|
||||||
$var = true;
|
|
||||||
$tmpfilelist = dol_sort_array($file_list['updated'], 'filename');
|
|
||||||
if (is_array($tmpfilelist))
|
|
||||||
{
|
{
|
||||||
foreach ($tmpfilelist as $file)
|
print 'Error: Failed to found dolibarr_htdocs_dir into XML file '.$xmlfile;
|
||||||
{
|
$error++;
|
||||||
$var = !$var;
|
|
||||||
print '<tr ' . $bc[$var] . '>';
|
|
||||||
print '<td>'.$file['filename'].'</td>' . "\n";
|
|
||||||
print '<td align="center">'.$file['expectedmd5'].'</td>' . "\n";
|
|
||||||
print '<td align="center">'.$file['md5'].'</td>' . "\n";
|
|
||||||
print '<td align="right">'.dol_print_size(dol_filesize(DOL_DOCUMENT_ROOT.'/'.$file['filename'])).'</td>' . "\n";
|
|
||||||
print '<td align="right">'.dol_print_date(dol_filemtime(DOL_DOCUMENT_ROOT.'/'.$file['filename']),'dayhour').'</td>' . "\n";
|
|
||||||
print "</tr>\n";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
print '</table>';
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print 'Error: Failed to parse XML for input file '.$xmlfile;
|
||||||
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print $langs->trans('XmlNotFound') . ': ' . $xmlfile;
|
print $langs->trans('XmlNotFound') . ': ' . $xmlfile;
|
||||||
|
$error++;
|
||||||
}
|
}
|
||||||
|
|
||||||
llxFooter();
|
llxFooter();
|
||||||
|
|
||||||
$db->close();
|
$db->close();
|
||||||
|
|
||||||
|
exit($error);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to get list of updated or modified files.
|
* Function to get list of updated or modified files.
|
||||||
|
|||||||
@ -39,6 +39,8 @@ $showpass=GETPOST('showpass');
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
$label=$db::LABEL;
|
$label=$db::LABEL;
|
||||||
|
$type=$db->type;
|
||||||
|
|
||||||
|
|
||||||
$help_url='EN:Restores|FR:Restaurations|ES:Restauraciones';
|
$help_url='EN:Restores|FR:Restaurations|ES:Restauraciones';
|
||||||
llxHeader('','',$help_url);
|
llxHeader('','',$help_url);
|
||||||
@ -91,7 +93,7 @@ print $langs->trans("RestoreDesc3",$dolibarr_main_db_name).'<br><br>';
|
|||||||
<fieldset id="exportoptions">
|
<fieldset id="exportoptions">
|
||||||
<legend><?php echo $langs->trans("ImportMethod"); ?></legend>
|
<legend><?php echo $langs->trans("ImportMethod"); ?></legend>
|
||||||
<?php
|
<?php
|
||||||
if ($label == 'MySQL')
|
if (in_array($type, array('mysql', 'mysqli')))
|
||||||
{
|
{
|
||||||
?>
|
?>
|
||||||
<div class="formelementrow">
|
<div class="formelementrow">
|
||||||
@ -100,7 +102,7 @@ print $langs->trans("RestoreDesc3",$dolibarr_main_db_name).'<br><br>';
|
|||||||
</div>
|
</div>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
else if ($label == 'PostgreSQL')
|
else if (in_array($type, array('pgsql')))
|
||||||
{
|
{
|
||||||
?>
|
?>
|
||||||
<div class="formelementrow">
|
<div class="formelementrow">
|
||||||
@ -123,7 +125,7 @@ print $langs->trans("RestoreDesc3",$dolibarr_main_db_name).'<br><br>';
|
|||||||
|
|
||||||
<div id="div_container_sub_exportoptions">
|
<div id="div_container_sub_exportoptions">
|
||||||
<?php
|
<?php
|
||||||
if ($label == 'MySQL')
|
if (in_array($type, array('mysql', 'mysqli')))
|
||||||
{
|
{
|
||||||
?>
|
?>
|
||||||
<fieldset id="mysql_options">
|
<fieldset id="mysql_options">
|
||||||
@ -157,7 +159,7 @@ if ($label == 'MySQL')
|
|||||||
</fieldset>
|
</fieldset>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
else if ($label == 'PostgreSQL')
|
else if (in_array($type, array('pgsql')))
|
||||||
{
|
{
|
||||||
?>
|
?>
|
||||||
<fieldset id="postgresql_options">
|
<fieldset id="postgresql_options">
|
||||||
|
|||||||
@ -60,10 +60,10 @@ function afficheDonnees(aId, aTexte) {
|
|||||||
|
|
||||||
|
|
||||||
// aCible : id du bloc de destination; aCode : argument a passer a la page php chargee du traitement et de l'affichage
|
// aCible : id du bloc de destination; aCode : argument a passer a la page php chargee du traitement et de l'affichage
|
||||||
function verifResultat(aCible, aCode, iLimit = 1) {
|
function verifResultat(aCible, aCode, iLimit) {
|
||||||
if (aCode != '' && aCode.length >= iLimit) {
|
if (aCode != '' && aCode.length >= iLimit) {
|
||||||
|
|
||||||
if (texte = file ('facturation_dhtml.php?code='+escape(aCode))) {
|
if (texte = file('facturation_dhtml.php?code='+escape(aCode))) {
|
||||||
|
|
||||||
afficheDonnees (aCible, texte);
|
afficheDonnees (aCible, texte);
|
||||||
|
|
||||||
|
|||||||
@ -419,7 +419,7 @@ else if ($id || $ref)
|
|||||||
// Ref
|
// Ref
|
||||||
print '<tr><td width="20%">'.$langs->trans("Ref").'</td>';
|
print '<tr><td width="20%">'.$langs->trans("Ref").'</td>';
|
||||||
print '<td class="valeur">';
|
print '<td class="valeur">';
|
||||||
print $form->showrefnav($member,'id');
|
print $form->showrefnav($member,'id','','1','rowid','ref','','&type='.$type);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Login
|
// Login
|
||||||
|
|||||||
@ -222,6 +222,8 @@ class Categorie extends CommonObject
|
|||||||
|
|
||||||
$error=0;
|
$error=0;
|
||||||
|
|
||||||
|
dol_syslog(get_class($this).'::create', LOG_DEBUG);
|
||||||
|
|
||||||
// Clean parameters
|
// Clean parameters
|
||||||
$this->label = trim($this->label);
|
$this->label = trim($this->label);
|
||||||
$this->description = trim($this->description);
|
$this->description = trim($this->description);
|
||||||
@ -239,7 +241,6 @@ class Categorie extends CommonObject
|
|||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
dol_syslog(get_class($this).'::create', LOG_DEBUG);
|
|
||||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."categorie (";
|
$sql = "INSERT INTO ".MAIN_DB_PREFIX."categorie (";
|
||||||
$sql.= "fk_parent,";
|
$sql.= "fk_parent,";
|
||||||
$sql.= " label,";
|
$sql.= " label,";
|
||||||
@ -266,7 +267,6 @@ class Categorie extends CommonObject
|
|||||||
$sql.= $conf->entity;
|
$sql.= $conf->entity;
|
||||||
$sql.= ")";
|
$sql.= ")";
|
||||||
|
|
||||||
dol_syslog(get_class($this).'::create', LOG_DEBUG);
|
|
||||||
$res = $this->db->query($sql);
|
$res = $this->db->query($sql);
|
||||||
if ($res)
|
if ($res)
|
||||||
{
|
{
|
||||||
@ -1222,7 +1222,7 @@ class Categorie extends CommonObject
|
|||||||
* @param string $type Type of category ('customer', 'supplier', 'contact', 'product', 'member'). Old mode
|
* @param string $type Type of category ('customer', 'supplier', 'contact', 'product', 'member'). Old mode
|
||||||
* (0, 1, 2, ...) is deprecated.
|
* (0, 1, 2, ...) is deprecated.
|
||||||
* @param string $mode 'object'=Get array of fetched category instances, 'label'=Get array of category
|
* @param string $mode 'object'=Get array of fetched category instances, 'label'=Get array of category
|
||||||
* labels
|
* labels, 'id'= Get array of category IDs
|
||||||
*
|
*
|
||||||
* @return mixed Array of category objects or < 0 if KO
|
* @return mixed Array of category objects or < 0 if KO
|
||||||
*/
|
*/
|
||||||
@ -1239,7 +1239,7 @@ class Categorie extends CommonObject
|
|||||||
$type = $map_type[$type];
|
$type = $map_type[$type];
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "SELECT ct.fk_categorie, c.label";
|
$sql = "SELECT ct.fk_categorie, c.label, c.rowid";
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "categorie_" . $this->MAP_CAT_TABLE[$type] . " as ct, " . MAIN_DB_PREFIX . "categorie as c";
|
$sql .= " FROM " . MAIN_DB_PREFIX . "categorie_" . $this->MAP_CAT_TABLE[$type] . " as ct, " . MAIN_DB_PREFIX . "categorie as c";
|
||||||
$sql .= " WHERE ct.fk_categorie = c.rowid AND ct.fk_" . $this->MAP_CAT_FK[$type] . " = " . $id . " AND c.type = " . $this->MAP_ID[$type];
|
$sql .= " WHERE ct.fk_categorie = c.rowid AND ct.fk_" . $this->MAP_CAT_FK[$type] . " = " . $id . " AND c.type = " . $this->MAP_ID[$type];
|
||||||
$sql .= " AND c.entity IN (" . getEntity( 'category', 1 ) . ")";
|
$sql .= " AND c.entity IN (" . getEntity( 'category', 1 ) . ")";
|
||||||
@ -1249,11 +1249,11 @@ class Categorie extends CommonObject
|
|||||||
{
|
{
|
||||||
while ($obj = $this->db->fetch_object($res))
|
while ($obj = $this->db->fetch_object($res))
|
||||||
{
|
{
|
||||||
if ($mode == 'label')
|
if ($mode == 'id') {
|
||||||
{
|
$cats[] = $obj->rowid;
|
||||||
|
} else if ($mode == 'label') {
|
||||||
$cats[] = $obj->label;
|
$cats[] = $obj->label;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$cat = new Categorie($this->db);
|
$cat = new Categorie($this->db);
|
||||||
$cat->fetch($obj->fk_categorie);
|
$cat->fetch($obj->fk_categorie);
|
||||||
$cats[] = $cat;
|
$cats[] = $cat;
|
||||||
|
|||||||
@ -82,20 +82,16 @@ if ($action == 'update' && $user->rights->categorie->creer)
|
|||||||
|
|
||||||
if (empty($categorie->label))
|
if (empty($categorie->label))
|
||||||
{
|
{
|
||||||
$action = 'create';
|
$error++;
|
||||||
|
$action = 'edit';
|
||||||
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Label")), 'errors');
|
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Label")), 'errors');
|
||||||
}
|
}
|
||||||
if (empty($categorie->description))
|
|
||||||
{
|
|
||||||
$action = 'create';
|
|
||||||
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Description")), 'errors');
|
|
||||||
}
|
|
||||||
if (empty($categorie->error))
|
if (empty($categorie->error))
|
||||||
{
|
{
|
||||||
$ret = $extrafields->setOptionalsFromPost($extralabels,$categorie);
|
$ret = $extrafields->setOptionalsFromPost($extralabels,$categorie);
|
||||||
if ($ret < 0) $error++;
|
if ($ret < 0) $error++;
|
||||||
|
|
||||||
if ($categorie->update($user) > 0)
|
if (! $error && $categorie->update($user) > 0)
|
||||||
{
|
{
|
||||||
header('Location: '.DOL_URL_ROOT.'/categories/viewcat.php?id='.$categorie->id.'&type='.$type);
|
header('Location: '.DOL_URL_ROOT.'/categories/viewcat.php?id='.$categorie->id.'&type='.$type);
|
||||||
exit;
|
exit;
|
||||||
@ -138,14 +134,14 @@ dol_fiche_head('');
|
|||||||
print '<table class="border" width="100%">';
|
print '<table class="border" width="100%">';
|
||||||
|
|
||||||
// Ref
|
// Ref
|
||||||
print '<tr><td class="fieldrequired">';
|
print '<tr><td class="fieldrequired" width="25%">';
|
||||||
print $langs->trans("Ref").'</td>';
|
print $langs->trans("Ref").'</td>';
|
||||||
print '<td><input type="text" size="25" id="label" name ="label" value="'.$object->label.'" />';
|
print '<td><input type="text" size="25" id="label" name ="label" value="'.$object->label.'" />';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
// Description
|
// Description
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td class="fieldrequired" width="25%">'.$langs->trans("Description").'</td>';
|
print '<td>'.$langs->trans("Description").'</td>';
|
||||||
print '<td >';
|
print '<td >';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
|
||||||
$doleditor=new DolEditor('description',$object->description,'',200,'dolibarr_notes','',false,true,$conf->fckeditor->enabled,ROWS_6,50);
|
$doleditor=new DolEditor('description',$object->description,'',200,'dolibarr_notes','',false,true,$conf->fckeditor->enabled,ROWS_6,50);
|
||||||
|
|||||||
@ -179,7 +179,7 @@ if ($nbofentries > 0)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print '<tr>';
|
print '<tr '.$bc[0].'>';
|
||||||
print '<td colspan="3"><table class="nobordernopadding"><tr class="nobordernopadding"><td>'.img_picto_common('','treemenu/branchbottom.gif').'</td>';
|
print '<td colspan="3"><table class="nobordernopadding"><tr class="nobordernopadding"><td>'.img_picto_common('','treemenu/branchbottom.gif').'</td>';
|
||||||
print '<td valign="middle">';
|
print '<td valign="middle">';
|
||||||
print $langs->trans("NoCategoryYet");
|
print $langs->trans("NoCategoryYet");
|
||||||
|
|||||||
@ -407,7 +407,7 @@ if ($action == 'update')
|
|||||||
if (! $datef && $percentage == 100)
|
if (! $datef && $percentage == 100)
|
||||||
{
|
{
|
||||||
$error++; $donotclearsession=1;
|
$error++; $donotclearsession=1;
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("DateEnd")),$object->errors,'errors');
|
setEventMessages($langs->transnoentitiesnoconv("ErrorFieldRequired",$langs->transnoentitiesnoconv("DateEnd")),$object->errors,'errors');
|
||||||
$action = 'edit';
|
$action = 'edit';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1303,7 +1303,16 @@ if ($id > 0)
|
|||||||
print '<br><br><table class="border" width="100%">';
|
print '<br><br><table class="border" width="100%">';
|
||||||
foreach($extrafields->attribute_label as $key=>$label)
|
foreach($extrafields->attribute_label as $key=>$label)
|
||||||
{
|
{
|
||||||
$value=(isset($_POST["options_".$key])?$_POST["options_".$key]:(isset($object->array_options['options_'.$key])?$object->array_options['options_'.$key]:''));
|
if (isset($_POST["options_" . $key])) {
|
||||||
|
if (is_array($_POST["options_" . $key])) {
|
||||||
|
// $_POST["options"] is an array but following code expects a comma separated string
|
||||||
|
$value = implode(",", $_POST["options_" . $key]);
|
||||||
|
} else {
|
||||||
|
$value = $_POST["options_" . $key];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$value = $object->array_options["options_" . $key];
|
||||||
|
}
|
||||||
print '<tr><td width="30%">'.$label.'</td><td>';
|
print '<tr><td width="30%">'.$label.'</td><td>';
|
||||||
print $extrafields->showOutputField($key,$value);
|
print $extrafields->showOutputField($key,$value);
|
||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|||||||
@ -622,7 +622,19 @@ class ActionComm extends CommonObject
|
|||||||
$this->error=$this->db->lasterror();
|
$this->error=$this->db->lasterror();
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (! $error) {
|
||||||
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX."actioncomm_resources";
|
||||||
|
$sql.= " WHERE fk_actioncomm=".$this->id;
|
||||||
|
|
||||||
|
dol_syslog(get_class($this)."::delete", LOG_DEBUG);
|
||||||
|
$res=$this->db->query($sql);
|
||||||
|
if ($res < 0) {
|
||||||
|
$this->error=$this->db->lasterror();
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Removed extrafields
|
// Removed extrafields
|
||||||
if (! $error) {
|
if (! $error) {
|
||||||
$result=$this->deleteExtraFields();
|
$result=$this->deleteExtraFields();
|
||||||
|
|||||||
@ -1210,7 +1210,7 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa
|
|||||||
// We decide to choose color of owner of event (event->userownerid is user id of owner, event->userassigned contains all users assigned to event)
|
// We decide to choose color of owner of event (event->userownerid is user id of owner, event->userassigned contains all users assigned to event)
|
||||||
if (! empty($cacheusers[$event->userownerid]->color)) $color=$cacheusers[$event->userownerid]->color;
|
if (! empty($cacheusers[$event->userownerid]->color)) $color=$cacheusers[$event->userownerid]->color;
|
||||||
}
|
}
|
||||||
else if ($event->type_code == 'ICALEVENT')
|
else if ($event->type_code == 'ICALEVENT') // Event come from external ical file
|
||||||
{
|
{
|
||||||
$numical++;
|
$numical++;
|
||||||
if (! empty($event->icalname)) {
|
if (! empty($event->icalname)) {
|
||||||
@ -1220,7 +1220,7 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa
|
|||||||
$numicals[dol_string_nospecial($event->icalname)]++;
|
$numicals[dol_string_nospecial($event->icalname)]++;
|
||||||
}
|
}
|
||||||
$color=$event->icalcolor;
|
$color=$event->icalcolor;
|
||||||
$cssclass=(! empty($event->icalname)?'family_ext'.md5($event->icalname):'family_other unmovable');
|
$cssclass=(! empty($event->icalname)?'family_ext'.md5($event->icalname):'family_other');
|
||||||
}
|
}
|
||||||
else if ($event->type_code == 'BIRTHDAY')
|
else if ($event->type_code == 'BIRTHDAY')
|
||||||
{
|
{
|
||||||
@ -1266,6 +1266,10 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa
|
|||||||
{
|
{
|
||||||
$cssclass.= " unmovable";
|
$cssclass.= " unmovable";
|
||||||
}
|
}
|
||||||
|
else if ($event->type_code == 'ICALEVENT')
|
||||||
|
{
|
||||||
|
$cssclass.= " unmovable";
|
||||||
|
}
|
||||||
else if ($event->date_end_in_calendar && date('Ymd',$event->date_start_in_calendar) != date('Ymd',$event->date_end_in_calendar))
|
else if ($event->date_end_in_calendar && date('Ymd',$event->date_start_in_calendar) != date('Ymd',$event->date_end_in_calendar))
|
||||||
{
|
{
|
||||||
$tmpyearend = date('Y',$event->date_end_in_calendar);
|
$tmpyearend = date('Y',$event->date_end_in_calendar);
|
||||||
|
|||||||
@ -1664,7 +1664,7 @@ if ($action == 'create')
|
|||||||
|
|
||||||
// Create an order
|
// Create an order
|
||||||
if (! empty($conf->commande->enabled) && $object->statut == 2) {
|
if (! empty($conf->commande->enabled) && $object->statut == 2) {
|
||||||
if ($user->rights->commande->creer) {
|
if ($user->rights->fournisseur->commande->creer) {
|
||||||
print '<div class="inline-block divButAction"><a class="butAction" href="' . DOL_URL_ROOT . '/fourn/commande/card.php?action=create&origin=' . $object->element . '&originid=' . $object->id . '&socid=' . $object->socid . '">' . $langs->trans("AddOrder") . '</a></div>';
|
print '<div class="inline-block divButAction"><a class="butAction" href="' . DOL_URL_ROOT . '/fourn/commande/card.php?action=create&origin=' . $object->element . '&originid=' . $object->id . '&socid=' . $object->socid . '">' . $langs->trans("AddOrder") . '</a></div>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1761,7 +1761,7 @@ if ($action == 'create')
|
|||||||
$result = $object->generateDocument(GETPOST('model') ? GETPOST('model') : $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
$result = $object->generateDocument(GETPOST('model') ? GETPOST('model') : $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
if ($result <= 0)
|
if ($result <= 0)
|
||||||
{
|
{
|
||||||
dol_print_error($db, $result);
|
dol_print_error($db, $object->error, $object->errors);
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
$fileparams = dol_most_recent_file($conf->askpricesupplier->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
|
$fileparams = dol_most_recent_file($conf->askpricesupplier->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
|
||||||
@ -1800,7 +1800,7 @@ if ($action == 'create')
|
|||||||
// Tableau des substitutions
|
// Tableau des substitutions
|
||||||
$formmail->substit['__ASKREF__'] = $object->ref;
|
$formmail->substit['__ASKREF__'] = $object->ref;
|
||||||
$formmail->substit['__SIGNATURE__'] = $user->signature;
|
$formmail->substit['__SIGNATURE__'] = $user->signature;
|
||||||
$formmail->substit['__THIRPARTY_NAME__'] = $object->thirdparty->name;
|
$formmail->substit['__THIRDPARTY_NAME__'] = $object->thirdparty->name;
|
||||||
$formmail->substit['__PROJECT_REF__'] = (is_object($object->projet)?$object->projet->ref:'');
|
$formmail->substit['__PROJECT_REF__'] = (is_object($object->projet)?$object->projet->ref:'');
|
||||||
$formmail->substit['__CONTACTCIVNAME__'] = '';
|
$formmail->substit['__CONTACTCIVNAME__'] = '';
|
||||||
$formmail->substit['__PERSONALIZED__'] = '';
|
$formmail->substit['__PERSONALIZED__'] = '';
|
||||||
|
|||||||
@ -757,8 +757,8 @@ class AskPriceSupplier extends CommonObject
|
|||||||
$sql.= $this->socid;
|
$sql.= $this->socid;
|
||||||
$sql.= ", 0";
|
$sql.= ", 0";
|
||||||
$sql.= ", ".$this->remise;
|
$sql.= ", ".$this->remise;
|
||||||
$sql.= ", ".($this->remise_percent?$this->remise_percent:'null');
|
$sql.= ", ".($this->remise_percent?$this->db->escape($this->remise_percent):'null');
|
||||||
$sql.= ", ".($this->remise_absolue?$this->remise_absolue:'null');
|
$sql.= ", ".($this->remise_absolue?$this->db->escape($this->remise_absolue):'null');
|
||||||
$sql.= ", 0";
|
$sql.= ", 0";
|
||||||
$sql.= ", 0";
|
$sql.= ", 0";
|
||||||
$sql.= ", '".$this->db->idate($now)."'";
|
$sql.= ", '".$this->db->idate($now)."'";
|
||||||
@ -766,7 +766,7 @@ class AskPriceSupplier extends CommonObject
|
|||||||
$sql.= ", ".($user->id > 0 ? "'".$user->id."'":"null");
|
$sql.= ", ".($user->id > 0 ? "'".$user->id."'":"null");
|
||||||
$sql.= ", '".$this->db->escape($this->note_private)."'";
|
$sql.= ", '".$this->db->escape($this->note_private)."'";
|
||||||
$sql.= ", '".$this->db->escape($this->note_public)."'";
|
$sql.= ", '".$this->db->escape($this->note_public)."'";
|
||||||
$sql.= ", '".$this->modelpdf."'";
|
$sql.= ", '".$this->db->escape($this->modelpdf)."'";
|
||||||
$sql.= ", ".$this->cond_reglement_id;
|
$sql.= ", ".$this->cond_reglement_id;
|
||||||
$sql.= ", ".$this->mode_reglement_id;
|
$sql.= ", ".$this->mode_reglement_id;
|
||||||
$sql.= ", ".($this->fk_account>0?$this->fk_account:'NULL');
|
$sql.= ", ".($this->fk_account>0?$this->fk_account:'NULL');
|
||||||
@ -1289,12 +1289,12 @@ class AskPriceSupplier extends CommonObject
|
|||||||
$soc->fetch($this->socid);
|
$soc->fetch($this->socid);
|
||||||
|
|
||||||
// Define new ref
|
// Define new ref
|
||||||
if (! $error && (preg_match('/^[\(]?PROV/i', $this->ref)))
|
if (! $error && (preg_match('/^[\(]?PROV/i', $this->ref) || empty($this->ref))) // empty should not happened, but when it occurs, the test save life
|
||||||
{
|
{
|
||||||
$num = $this->getNextNumRef($soc);
|
$num = $this->getNextNumRef($soc);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$num = $this->ref;
|
$num = $this->ref;
|
||||||
}
|
}
|
||||||
$this->newref = $num;
|
$this->newref = $num;
|
||||||
|
|||||||
@ -965,25 +965,25 @@ if ($id > 0)
|
|||||||
|
|
||||||
print '<div class="tabsAction">';
|
print '<div class="tabsAction">';
|
||||||
|
|
||||||
if (! empty($conf->propal->enabled) && $user->rights->propal->creer)
|
if (! empty($conf->propal->enabled) && $user->rights->propal->creer && $object->status==1)
|
||||||
{
|
{
|
||||||
$langs->load("propal");
|
$langs->load("propal");
|
||||||
print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/comm/propal.php?socid='.$object->id.'&action=create">'.$langs->trans("AddProp").'</a></div>';
|
print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/comm/propal.php?socid='.$object->id.'&action=create">'.$langs->trans("AddProp").'</a></div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! empty($conf->commande->enabled) && $user->rights->commande->creer)
|
if (! empty($conf->commande->enabled) && $user->rights->commande->creer && $object->status==1)
|
||||||
{
|
{
|
||||||
$langs->load("orders");
|
$langs->load("orders");
|
||||||
print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/commande/card.php?socid='.$object->id.'&action=create">'.$langs->trans("AddOrder").'</a></div>';
|
print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/commande/card.php?socid='.$object->id.'&action=create">'.$langs->trans("AddOrder").'</a></div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($user->rights->contrat->creer)
|
if ($user->rights->contrat->creer && $object->status==1)
|
||||||
{
|
{
|
||||||
$langs->load("contracts");
|
$langs->load("contracts");
|
||||||
print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/contrat/card.php?socid='.$object->id.'&action=create">'.$langs->trans("AddContract").'</a></div>';
|
print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/contrat/card.php?socid='.$object->id.'&action=create">'.$langs->trans("AddContract").'</a></div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! empty($conf->ficheinter->enabled) && $user->rights->ficheinter->creer)
|
if (! empty($conf->ficheinter->enabled) && $user->rights->ficheinter->creer && $object->status==1)
|
||||||
{
|
{
|
||||||
$langs->load("fichinter");
|
$langs->load("fichinter");
|
||||||
print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/fichinter/card.php?socid='.$object->id.'&action=create">'.$langs->trans("AddIntervention").'</a></div>';
|
print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/fichinter/card.php?socid='.$object->id.'&action=create">'.$langs->trans("AddIntervention").'</a></div>';
|
||||||
@ -992,7 +992,7 @@ if ($id > 0)
|
|||||||
// Add invoice
|
// Add invoice
|
||||||
if ($user->societe_id == 0)
|
if ($user->societe_id == 0)
|
||||||
{
|
{
|
||||||
if (! empty($conf->deplacement->enabled))
|
if (! empty($conf->deplacement->enabled) && $object->status==1)
|
||||||
{
|
{
|
||||||
$langs->load("trips");
|
$langs->load("trips");
|
||||||
print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/compta/deplacement/card.php?socid='.$object->id.'&action=create">'.$langs->trans("AddTrip").'</a></div>';
|
print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/compta/deplacement/card.php?socid='.$object->id.'&action=create">'.$langs->trans("AddTrip").'</a></div>';
|
||||||
@ -1000,7 +1000,7 @@ if ($id > 0)
|
|||||||
|
|
||||||
if (! empty($conf->facture->enabled))
|
if (! empty($conf->facture->enabled))
|
||||||
{
|
{
|
||||||
if ($user->rights->facture->creer)
|
if ($user->rights->facture->creer && $object->status==1)
|
||||||
{
|
{
|
||||||
$langs->load("bills");
|
$langs->load("bills");
|
||||||
$langs->load("orders");
|
$langs->load("orders");
|
||||||
|
|||||||
@ -40,10 +40,9 @@ $pagenext = $page + 1;
|
|||||||
if (! $sortorder) $sortorder="DESC";
|
if (! $sortorder) $sortorder="DESC";
|
||||||
if (! $sortfield) $sortfield="m.date_creat";
|
if (! $sortfield) $sortfield="m.date_creat";
|
||||||
|
|
||||||
$sall=isset($_GET["sall"])?$_GET["sall"]:$_POST["sall"];
|
$sall=GETPOST("sall","alpha");
|
||||||
$sref=isset($_GET["sref"])?$_GET["sref"]:$_POST["sref"];
|
$sref=GETPOST("sref","alpha");
|
||||||
|
$filteremail=GETPOST('filteremail','alpha');
|
||||||
$filteremail=$_REQUEST["filteremail"]?$_REQUEST["filteremail"]:'';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -62,8 +61,8 @@ if ($filteremail)
|
|||||||
$sql.= " FROM ".MAIN_DB_PREFIX."mailing as m, ".MAIN_DB_PREFIX."mailing_cibles as mc";
|
$sql.= " FROM ".MAIN_DB_PREFIX."mailing as m, ".MAIN_DB_PREFIX."mailing_cibles as mc";
|
||||||
$sql.= " WHERE m.rowid = mc.fk_mailing AND m.entity = ".$conf->entity;
|
$sql.= " WHERE m.rowid = mc.fk_mailing AND m.entity = ".$conf->entity;
|
||||||
$sql.= " AND mc.email = '".$db->escape($filteremail)."'";
|
$sql.= " AND mc.email = '".$db->escape($filteremail)."'";
|
||||||
if ($sref) $sql.= " AND m.rowid = '".$sref."'";
|
if ($sref) $sql.= " AND m.rowid = '".$db->escape($sref)."'";
|
||||||
if ($sall) $sql.= " AND (m.titre like '%".$sall."%' OR m.sujet like '%".$sall."%' OR m.body like '%".$sall."%')";
|
if ($sall) $sql.= " AND (m.titre like '%".$db->escape($sall)."%' OR m.sujet like '%".$db->escape($sall)."%' OR m.body like '%".$db->escape($sall)."%')";
|
||||||
if (! $sortorder) $sortorder="ASC";
|
if (! $sortorder) $sortorder="ASC";
|
||||||
if (! $sortfield) $sortfield="m.rowid";
|
if (! $sortfield) $sortfield="m.rowid";
|
||||||
$sql.= $db->order($sortfield,$sortorder);
|
$sql.= $db->order($sortfield,$sortorder);
|
||||||
@ -74,8 +73,8 @@ else
|
|||||||
$sql = "SELECT m.rowid, m.titre, m.nbemail, m.statut, m.date_creat as datec, m.date_envoi as date_envoi";
|
$sql = "SELECT m.rowid, m.titre, m.nbemail, m.statut, m.date_creat as datec, m.date_envoi as date_envoi";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."mailing as m";
|
$sql.= " FROM ".MAIN_DB_PREFIX."mailing as m";
|
||||||
$sql.= " WHERE m.entity = ".$conf->entity;
|
$sql.= " WHERE m.entity = ".$conf->entity;
|
||||||
if ($sref) $sql.= " AND m.rowid = '".$sref."'";
|
if ($sref) $sql.= " AND m.rowid = '".$db->escape($sref)."'";
|
||||||
if ($sall) $sql.= " AND (m.titre like '%".$sall."%' OR m.sujet like '%".$sall."%' OR m.body like '%".$sall."%')";
|
if ($sall) $sql.= " AND (m.titre like '%".$db->escape($sall)."%' OR m.sujet like '%".$db->escape($sall)."%' OR m.body like '%".$db->escape($sall)."%')";
|
||||||
if (! $sortorder) $sortorder="ASC";
|
if (! $sortorder) $sortorder="ASC";
|
||||||
if (! $sortfield) $sortfield="m.rowid";
|
if (! $sortfield) $sortfield="m.rowid";
|
||||||
$sql.= $db->order($sortfield,$sortorder);
|
$sql.= $db->order($sortfield,$sortorder);
|
||||||
@ -94,7 +93,7 @@ if ($result)
|
|||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
$param = "&sall=".$sall;
|
$param = "&sall=".urlencode($sall);
|
||||||
if ($filteremail) $param.='&filteremail='.urlencode($filteremail);
|
if ($filteremail) $param.='&filteremail='.urlencode($filteremail);
|
||||||
|
|
||||||
print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">';
|
print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">';
|
||||||
@ -111,11 +110,11 @@ if ($result)
|
|||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
print '<input type="text" class="flat" name="sref" value="'.$sref.'" size="6">';
|
print '<input type="text" class="flat" name="sref" value="'.dol_escape_htmltag($sref).'" size="6">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
// Title
|
// Title
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
print '<input type="text" class="flat" name="sall" value="'.$sall.'" size="40">';
|
print '<input type="text" class="flat" name="sall" value="'.dol_escape_htmltag($sall).'" size="40">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="liste_titre"> </td>';
|
print '<td class="liste_titre"> </td>';
|
||||||
if (! $filteremail) print '<td class="liste_titre"> </td>';
|
if (! $filteremail) print '<td class="liste_titre"> </td>';
|
||||||
@ -165,8 +164,7 @@ if ($result)
|
|||||||
print '<td align="right" class="nowrap">';
|
print '<td align="right" class="nowrap">';
|
||||||
if ($filteremail)
|
if ($filteremail)
|
||||||
{
|
{
|
||||||
if ($obj->sendstatut==-1) print $langs->trans("MailingStatusError").' '.img_error();
|
print $email::libStatutDest($obj->sendstatut,2);
|
||||||
if ($obj->sendstatut==1) print $langs->trans("MailingStatusSent").' '.img_picto($langs->trans("MailingStatusSent"),'statut6');
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -195,22 +195,18 @@ if (empty($reshook))
|
|||||||
{
|
{
|
||||||
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
||||||
{
|
{
|
||||||
// Define output language
|
$outputlangs = $langs;
|
||||||
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
$newlang = '';
|
||||||
{
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha');
|
||||||
$outputlangs = $langs;
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
|
||||||
$newlang = '';
|
if (! empty($newlang)) {
|
||||||
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha');
|
$outputlangs = new Translate("", $conf);
|
||||||
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
|
$outputlangs->setDefaultLang($newlang);
|
||||||
if (! empty($newlang)) {
|
|
||||||
$outputlangs = new Translate("", $conf);
|
|
||||||
$outputlangs->setDefaultLang($newlang);
|
|
||||||
}
|
|
||||||
$model=$object->modelpdf;
|
|
||||||
$ret = $object->fetch($id); // Reload to get new records
|
|
||||||
|
|
||||||
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
|
||||||
}
|
}
|
||||||
|
$model=$object->modelpdf;
|
||||||
|
$ret = $object->fetch($id); // Reload to get new records
|
||||||
|
|
||||||
|
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
@ -1327,7 +1323,7 @@ if ($action == 'create')
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
} else {
|
} else {
|
||||||
print '<td colspan="2">';
|
print '<td colspan="2">';
|
||||||
print $form->select_company('', 'socid', 's.client = 1 OR s.client = 2 OR s.client = 3', 1);
|
print $form->select_company('', 'socid', '(s.client = 1 OR s.client = 2 OR s.client = 3) AND status=1', 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
print '</tr>' . "\n";
|
print '</tr>' . "\n";
|
||||||
@ -2168,18 +2164,20 @@ if ($action == 'create')
|
|||||||
if ($action != 'statut' && $action != 'editline')
|
if ($action != 'statut' && $action != 'editline')
|
||||||
{
|
{
|
||||||
// Validate
|
// Validate
|
||||||
if ($object->statut == Propal::STATUS_DRAFT && $object->total_ttc >= 0 && count($object->lines) > 0 &&
|
if ($object->statut == Propal::STATUS_DRAFT && $object->total_ttc >= 0 && count($object->lines) > 0)
|
||||||
((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->propal->creer))
|
{
|
||||||
|
if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->propal->creer))
|
||||||
|| (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->propal->propal_advance->validate)))
|
|| (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->propal->propal_advance->validate)))
|
||||||
) {
|
{
|
||||||
if (count($object->lines) > 0)
|
|
||||||
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=validate">' . $langs->trans('Validate') . '</a></div>';
|
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=validate">' . $langs->trans('Validate') . '</a></div>';
|
||||||
// else print '<a class="butActionRefused" href="#">'.$langs->trans('Validate').'</a>';
|
}
|
||||||
|
else
|
||||||
|
print '<div class="inline-block divButAction"><a class="butActionRefused" href="#">' . $langs->trans('Validate') . '</a></div>';
|
||||||
}
|
}
|
||||||
// Create event
|
// Create event
|
||||||
if ($conf->agenda->enabled && ! empty($conf->global->MAIN_ADD_EVENT_ON_ELEMENT_CARD)) // Add hidden condition because this is not a "workflow" action so should appears somewhere else on page.
|
if ($conf->agenda->enabled && ! empty($conf->global->MAIN_ADD_EVENT_ON_ELEMENT_CARD)) // Add hidden condition because this is not a "workflow" action so should appears somewhere else on page.
|
||||||
{
|
{
|
||||||
print '<a class="butAction" href="' . DOL_URL_ROOT . '/comm/action/card.php?action=create&origin=' . $object->element . '&originid=' . $object->id . '&socid=' . $object->socid . '">' . $langs->trans("AddAction") . '</a>';
|
print '<div class="inline-block divButAction"><a class="butAction" href="' . DOL_URL_ROOT . '/comm/action/card.php?action=create&origin=' . $object->element . '&originid=' . $object->id . '&socid=' . $object->socid . '">' . $langs->trans("AddAction") . '</a></div>';
|
||||||
}
|
}
|
||||||
// Edit
|
// Edit
|
||||||
if ($object->statut == Propal::STATUS_VALIDATED && $user->rights->propal->creer) {
|
if ($object->statut == Propal::STATUS_VALIDATED && $user->rights->propal->creer) {
|
||||||
@ -2327,7 +2325,7 @@ if ($action == 'create')
|
|||||||
if (! $file || ! is_readable($file)) {
|
if (! $file || ! is_readable($file)) {
|
||||||
$result = $object->generateDocument(GETPOST('model') ? GETPOST('model') : $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
$result = $object->generateDocument(GETPOST('model') ? GETPOST('model') : $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
if ($result <= 0) {
|
if ($result <= 0) {
|
||||||
dol_print_error($db, $result);
|
dol_print_error($db, $object->error, $object->errors);
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
$fileparams = dol_most_recent_file($conf->propal->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
|
$fileparams = dol_most_recent_file($conf->propal->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
|
||||||
@ -2369,7 +2367,7 @@ if ($action == 'create')
|
|||||||
$formmail->substit['__PROPREF__'] = $object->ref;
|
$formmail->substit['__PROPREF__'] = $object->ref;
|
||||||
$formmail->substit['__SIGNATURE__'] = $user->signature;
|
$formmail->substit['__SIGNATURE__'] = $user->signature;
|
||||||
$formmail->substit['__REFCLIENT__'] = $object->ref_client;
|
$formmail->substit['__REFCLIENT__'] = $object->ref_client;
|
||||||
$formmail->substit['__THIRPARTY_NAME__'] = $object->thirdparty->name;
|
$formmail->substit['__THIRDPARTY_NAME__'] = $object->thirdparty->name;
|
||||||
$formmail->substit['__PROJECT_REF__'] = (is_object($object->projet)?$object->projet->ref:'');
|
$formmail->substit['__PROJECT_REF__'] = (is_object($object->projet)?$object->projet->ref:'');
|
||||||
$formmail->substit['__PERSONALIZED__'] = '';
|
$formmail->substit['__PERSONALIZED__'] = '';
|
||||||
$formmail->substit['__CONTACTCIVNAME__'] = '';
|
$formmail->substit['__CONTACTCIVNAME__'] = '';
|
||||||
|
|||||||
@ -462,7 +462,7 @@ class Propal extends CommonObject
|
|||||||
|
|
||||||
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc);
|
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc);
|
||||||
|
|
||||||
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, '', $localtaxes_type);
|
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, $mysoc, $localtaxes_type);
|
||||||
$total_ht = $tabprice[0];
|
$total_ht = $tabprice[0];
|
||||||
$total_tva = $tabprice[1];
|
$total_tva = $tabprice[1];
|
||||||
$total_ttc = $tabprice[2];
|
$total_ttc = $tabprice[2];
|
||||||
@ -858,8 +858,8 @@ class Propal extends CommonObject
|
|||||||
$sql.= $this->socid;
|
$sql.= $this->socid;
|
||||||
$sql.= ", 0";
|
$sql.= ", 0";
|
||||||
$sql.= ", ".$this->remise;
|
$sql.= ", ".$this->remise;
|
||||||
$sql.= ", ".($this->remise_percent?$this->remise_percent:'null');
|
$sql.= ", ".($this->remise_percent?$this->db->escape($this->remise_percent):'null');
|
||||||
$sql.= ", ".($this->remise_absolue?$this->remise_absolue:'null');
|
$sql.= ", ".($this->remise_absolue?$this->db->escape($this->remise_absolue):'null');
|
||||||
$sql.= ", 0";
|
$sql.= ", 0";
|
||||||
$sql.= ", 0";
|
$sql.= ", 0";
|
||||||
$sql.= ", '".$this->db->idate($this->date)."'";
|
$sql.= ", '".$this->db->idate($this->date)."'";
|
||||||
@ -868,7 +868,7 @@ class Propal extends CommonObject
|
|||||||
$sql.= ", ".($user->id > 0 ? "'".$user->id."'":"null");
|
$sql.= ", ".($user->id > 0 ? "'".$user->id."'":"null");
|
||||||
$sql.= ", '".$this->db->escape($this->note_private)."'";
|
$sql.= ", '".$this->db->escape($this->note_private)."'";
|
||||||
$sql.= ", '".$this->db->escape($this->note_public)."'";
|
$sql.= ", '".$this->db->escape($this->note_public)."'";
|
||||||
$sql.= ", '".$this->modelpdf."'";
|
$sql.= ", '".$this->db->escape($this->modelpdf)."'";
|
||||||
$sql.= ", ".($this->fin_validite!=''?"'".$this->db->idate($this->fin_validite)."'":"null");
|
$sql.= ", ".($this->fin_validite!=''?"'".$this->db->idate($this->fin_validite)."'":"null");
|
||||||
$sql.= ", ".$this->cond_reglement_id;
|
$sql.= ", ".$this->cond_reglement_id;
|
||||||
$sql.= ", ".$this->mode_reglement_id;
|
$sql.= ", ".$this->mode_reglement_id;
|
||||||
@ -1481,12 +1481,12 @@ class Propal extends CommonObject
|
|||||||
$soc->fetch($this->socid);
|
$soc->fetch($this->socid);
|
||||||
|
|
||||||
// Define new ref
|
// Define new ref
|
||||||
if (! $error && (preg_match('/^[\(]?PROV/i', $this->ref)))
|
if (! $error && (preg_match('/^[\(]?PROV/i', $this->ref) || empty($this->ref))) // empty should not happened, but when it occurs, the test save life
|
||||||
{
|
{
|
||||||
$num = $this->getNextNumRef($soc);
|
$num = $this->getNextNumRef($soc);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$num = $this->ref;
|
$num = $this->ref;
|
||||||
}
|
}
|
||||||
$this->newref = $num;
|
$this->newref = $num;
|
||||||
|
|||||||
@ -48,7 +48,7 @@ class PropaleStats extends Stats
|
|||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
* @param DoliDB $db Database handler
|
* @param DoliDB $db Database handler
|
||||||
* @param int $socid Id third party for filter
|
* @param int $socid Id third party for filter. This value must be forced during the new to external user company if user is an external user.
|
||||||
* @param int $userid Id user for filter (creation user)
|
* @param int $userid Id user for filter (creation user)
|
||||||
*/
|
*/
|
||||||
function __construct($db, $socid=0, $userid=0)
|
function __construct($db, $socid=0, $userid=0)
|
||||||
|
|||||||
@ -150,7 +150,7 @@ $search_categ = GETPOST('search_categ','int');
|
|||||||
// If the internal user must only see his prospect, force searching by him
|
// If the internal user must only see his prospect, force searching by him
|
||||||
if (!$user->rights->societe->client->voir && !$socid) $search_sale = $user->id;
|
if (!$user->rights->societe->client->voir && !$socid) $search_sale = $user->id;
|
||||||
|
|
||||||
// List of avaible states; we'll need that for each lines (quick changing prospect states) and for search bar (filter by prospect state)
|
// List of available states; we'll need that for each lines (quick changing prospect states) and for search bar (filter by prospect state)
|
||||||
$sts = array(-1,0,1,2,3);
|
$sts = array(-1,0,1,2,3);
|
||||||
|
|
||||||
|
|
||||||
@ -158,6 +158,10 @@ $sts = array(-1,0,1,2,3);
|
|||||||
$hookmanager->initHooks(array('prospectlist'));
|
$hookmanager->initHooks(array('prospectlist'));
|
||||||
$extrafields = new ExtraFields($db);
|
$extrafields = new ExtraFields($db);
|
||||||
|
|
||||||
|
// fetch optionals attributes and labels
|
||||||
|
$extralabels = $extrafields->fetch_name_optionals_label('thirdparty');
|
||||||
|
$search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_');
|
||||||
|
|
||||||
// Do we click on purge search criteria ?
|
// Do we click on purge search criteria ?
|
||||||
if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers
|
if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers
|
||||||
{
|
{
|
||||||
@ -171,6 +175,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both
|
|||||||
$search_datec="";
|
$search_datec="";
|
||||||
$search_categ="";
|
$search_categ="";
|
||||||
$search_status="";
|
$search_status="";
|
||||||
|
$search_array_options=array();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($search_status=='') $search_status=1; // always display active customer first
|
if ($search_status=='') $search_status=1; // always display active customer first
|
||||||
@ -216,13 +221,14 @@ $sql.= " st.libelle as stcomm_label,";
|
|||||||
$sql.= " d.nom as departement";
|
$sql.= " d.nom as departement";
|
||||||
if ((!$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects)
|
if ((!$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects)
|
||||||
// Add fields for extrafields
|
// Add fields for extrafields
|
||||||
foreach ($extrafields->attribute_list as $key => $val) $sql.=",ef.".$key.' as options_'.$key;
|
if (is_array($extrafields->attribute_list) && count($extrafields->attribute_list)) foreach ($extrafields->attribute_list as $key => $val) $sql.=",ef.".$key.' as options_'.$key;
|
||||||
// Add fields from hooks
|
// Add fields from hooks
|
||||||
$parameters=array();
|
$parameters=array();
|
||||||
$reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook
|
$reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook
|
||||||
$sql.=$hookmanager->resPrint;
|
$sql.=$hookmanager->resPrint;
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."c_stcomm as st";
|
$sql .= " FROM ".MAIN_DB_PREFIX."c_stcomm as st";
|
||||||
$sql.= ", ".MAIN_DB_PREFIX."societe as s";
|
$sql.= ", ".MAIN_DB_PREFIX."societe as s";
|
||||||
|
if (is_array($extrafields->attribute_list) && count($extrafields->attribute_list)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_extrafields as ef on (s.rowid = ef.fk_object)";
|
||||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_departements as d on (d.rowid = s.fk_departement)";
|
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_departements as d on (d.rowid = s.fk_departement)";
|
||||||
if (! empty($search_categ) || ! empty($catid)) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX."categorie_societe as cs ON s.rowid = cs.fk_soc"; // We need this table joined to the select in order to filter by categ
|
if (! empty($search_categ) || ! empty($catid)) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX."categorie_societe as cs ON s.rowid = cs.fk_soc"; // We need this table joined to the select in order to filter by categ
|
||||||
if ((!$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale
|
if ((!$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale
|
||||||
@ -231,7 +237,7 @@ $sql.= " AND s.client IN (2, 3)";
|
|||||||
$sql.= ' AND s.entity IN ('.getEntity('societe', 1).')';
|
$sql.= ' AND s.entity IN ('.getEntity('societe', 1).')';
|
||||||
if ((!$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql.= " AND s.rowid = sc.fk_soc";
|
if ((!$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql.= " AND s.rowid = sc.fk_soc";
|
||||||
if ($socid) $sql.= " AND s.rowid = " .$socid;
|
if ($socid) $sql.= " AND s.rowid = " .$socid;
|
||||||
if ($search_stcomm != '') $sql.= natural_search("s.fk_stcomm",$search_stcomm,2);
|
if ($search_stcomm != '' && $search_stcomm != -2) $sql.= natural_search("s.fk_stcomm",$search_stcomm,2);
|
||||||
if ($catid > 0) $sql.= " AND cs.fk_categorie = ".$catid;
|
if ($catid > 0) $sql.= " AND cs.fk_categorie = ".$catid;
|
||||||
if ($catid == -2) $sql.= " AND cs.fk_categorie IS NULL";
|
if ($catid == -2) $sql.= " AND cs.fk_categorie IS NULL";
|
||||||
if ($search_categ > 0) $sql.= " AND cs.fk_categorie = ".$search_categ;
|
if ($search_categ > 0) $sql.= " AND cs.fk_categorie = ".$search_categ;
|
||||||
@ -252,6 +258,19 @@ if ($socname)
|
|||||||
$sortfield = "s.nom";
|
$sortfield = "s.nom";
|
||||||
$sortorder = "ASC";
|
$sortorder = "ASC";
|
||||||
}
|
}
|
||||||
|
// Extra fields
|
||||||
|
foreach ($search_array_options as $key => $val)
|
||||||
|
{
|
||||||
|
$crit=$val;
|
||||||
|
$tmpkey=preg_replace('/search_options_/','',$key);
|
||||||
|
$typ=$extrafields->attribute_type[$tmpkey];
|
||||||
|
$mode=0;
|
||||||
|
if (in_array($typ, array('int'))) $mode=1; // Search on a numeric
|
||||||
|
if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit)))
|
||||||
|
{
|
||||||
|
$sql .= natural_search('ef.'.$tmpkey, $crit, $mode);
|
||||||
|
}
|
||||||
|
}
|
||||||
// Add where from hooks
|
// Add where from hooks
|
||||||
$parameters=array();
|
$parameters=array();
|
||||||
$reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook
|
$reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook
|
||||||
@ -265,6 +284,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
|
|||||||
}
|
}
|
||||||
$sql.= " ORDER BY $sortfield $sortorder, s.nom ASC";
|
$sql.= " ORDER BY $sortfield $sortorder, s.nom ASC";
|
||||||
$sql.= $db->plimit($conf->liste_limit+1, $offset);
|
$sql.= $db->plimit($conf->liste_limit+1, $offset);
|
||||||
|
//print $sql;
|
||||||
|
|
||||||
dol_syslog('comm/prospect/list.php', LOG_DEBUG);
|
dol_syslog('comm/prospect/list.php', LOG_DEBUG);
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
@ -298,9 +318,15 @@ if ($resql)
|
|||||||
}
|
}
|
||||||
if ($search_level_from != '') $param.='&search_level_from='.$search_level_from;
|
if ($search_level_from != '') $param.='&search_level_from='.$search_level_from;
|
||||||
if ($search_level_to != '') $param.='&search_level_to='.$search_level_to;
|
if ($search_level_to != '') $param.='&search_level_to='.$search_level_to;
|
||||||
if ($search_categ != '') $param.='&search_categ='.$search_categ;
|
if ($search_categ != '') $param.='&search_categ='.urlencode($search_categ);
|
||||||
if ($search_sale > 0) $param.='&search_sale='.$search_sale;
|
if ($search_sale > 0) $param.='&search_sale='.$search_sale;
|
||||||
if ($search_status != '') $param.='&search_status='.$search_status;
|
if ($search_status != '') $param.='&search_status='.$search_status;
|
||||||
|
foreach ($search_array_options as $key => $val)
|
||||||
|
{
|
||||||
|
$crit=$val;
|
||||||
|
$tmpkey=preg_replace('/search_options_/','',$key);
|
||||||
|
$param.='&search_options_'.$tmpkey.'='.urlencode($val);
|
||||||
|
}
|
||||||
// $param and $urladd should have the same value
|
// $param and $urladd should have the same value
|
||||||
$urladd = $param;
|
$urladd = $param;
|
||||||
|
|
||||||
@ -346,7 +372,19 @@ if ($resql)
|
|||||||
print_liste_field_titre($langs->trans("ProspectLevelShort"),$_SERVER["PHP_SELF"],"s.fk_prospectlevel","",$param,'align="center"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("ProspectLevelShort"),$_SERVER["PHP_SELF"],"s.fk_prospectlevel","",$param,'align="center"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans("StatusProsp"),$_SERVER["PHP_SELF"],"s.fk_stcomm","",$param,'align="center"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("StatusProsp"),$_SERVER["PHP_SELF"],"s.fk_stcomm","",$param,'align="center"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre('');
|
print_liste_field_titre('');
|
||||||
|
|
||||||
|
// Extrafields
|
||||||
|
if (is_array($extrafields->attribute_list) && count($extrafields->attribute_list))
|
||||||
|
{
|
||||||
|
foreach($extrafields->attribute_list as $key => $val)
|
||||||
|
{
|
||||||
|
if ($val)
|
||||||
|
{
|
||||||
|
print_liste_field_titre($extralabels[$key],$_SERVER["PHP_SELF"],"ef.".$key,"",$param,"",$sortfield,$sortorder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Hook fields
|
||||||
$parameters=array();
|
$parameters=array();
|
||||||
$reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook
|
$reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook
|
||||||
print $hookmanager->resPrint;
|
print $hookmanager->resPrint;
|
||||||
@ -360,13 +398,13 @@ if ($resql)
|
|||||||
print '<input type="text" class="flat" name="search_nom" size="10" value="'.$search_nom.'">';
|
print '<input type="text" class="flat" name="search_nom" size="10" value="'.$search_nom.'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
print '<input type="text" class="flat" name="search_zipcode" size="10" value="'.$search_zipcode.'">';
|
print '<input type="text" class="flat" name="search_zipcode" size="6" value="'.$search_zipcode.'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
print '<input type="text" class="flat" name="search_town" size="10" value="'.$search_town.'">';
|
print '<input type="text" class="flat" name="search_town" size="8" value="'.$search_town.'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="liste_titre" align="center">';
|
print '<td class="liste_titre" align="center">';
|
||||||
print '<input type="text" class="flat" name="search_state" size="10" value="'.$search_state.'">';
|
print '<input type="text" class="flat" name="search_state" size="8" value="'.$search_state.'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td align="center" class="liste_titre">';
|
print '<td align="center" class="liste_titre">';
|
||||||
print '<input class="flat" type="text" size="10" name="search_datec" value="'.$search_datec.'">';
|
print '<input class="flat" type="text" size="10" name="search_datec" value="'.$search_datec.'">';
|
||||||
@ -404,17 +442,33 @@ if ($resql)
|
|||||||
{
|
{
|
||||||
$arraystcomm[$val['id']]=$val['label'];
|
$arraystcomm[$val['id']]=$val['label'];
|
||||||
}
|
}
|
||||||
print $form->selectarray('search_stcomm', $arraystcomm, $search_stcomm, 1);
|
print $form->selectarray('search_stcomm', $arraystcomm, $search_stcomm, -2);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
print '<td class="liste_titre" align="center">';
|
print '<td class="liste_titre" align="center">';
|
||||||
print ' ';
|
print ' ';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
$parameters=array();
|
// Extrafields
|
||||||
|
if (is_array($extrafields->attribute_list) && count($extrafields->attribute_list))
|
||||||
|
{
|
||||||
|
foreach($extrafields->attribute_list as $key => $val)
|
||||||
|
{
|
||||||
|
if ($val)
|
||||||
|
{
|
||||||
|
$crit=$search_array_options['search_options_'.$key];
|
||||||
|
print '<td class="liste_titre">';
|
||||||
|
print $extrafields->showInputField($key, $crit, '', '', 'search_', 4);
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Hook fields
|
||||||
|
$parameters=array();
|
||||||
$reshook=$hookmanager->executeHooks('printFieldListSearch',$parameters); // Note that $action and $object may have been modified by hook
|
$reshook=$hookmanager->executeHooks('printFieldListSearch',$parameters); // Note that $action and $object may have been modified by hook
|
||||||
print $hookmanager->resPrint;
|
print $hookmanager->resPrint;
|
||||||
|
|
||||||
|
// Status
|
||||||
print '<td class="liste_titre" align="right">';
|
print '<td class="liste_titre" align="right">';
|
||||||
print $form->selectarray('search_status', array('0'=>$langs->trans('ActivityCeased'),'1'=>$langs->trans('InActivity')),$search_status);
|
print $form->selectarray('search_status', array('0'=>$langs->trans('ActivityCeased'),'1'=>$langs->trans('InActivity')),$search_status);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
@ -460,7 +514,7 @@ if ($resql)
|
|||||||
print $prospectstatic->LibProspCommStatut($obj->stcomm_id,2,$prospectstatic->cacheprospectstatus[$obj->stcomm_id]['label']);
|
print $prospectstatic->LibProspCommStatut($obj->stcomm_id,2,$prospectstatic->cacheprospectstatus[$obj->stcomm_id]['label']);
|
||||||
print "</td>";
|
print "</td>";
|
||||||
|
|
||||||
print '<td align="right" class="nowrap">';
|
print '<td align="center" class="nowrap">';
|
||||||
foreach($prospectstatic->cacheprospectstatus as $key => $val)
|
foreach($prospectstatic->cacheprospectstatus as $key => $val)
|
||||||
{
|
{
|
||||||
$titlealt='default';
|
$titlealt='default';
|
||||||
@ -469,6 +523,21 @@ if ($resql)
|
|||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
|
// Extrafields
|
||||||
|
if (is_array($extrafields->attribute_list) && count($extrafields->attribute_list))
|
||||||
|
{
|
||||||
|
foreach($extrafields->attribute_list as $key => $val)
|
||||||
|
{
|
||||||
|
if ($val)
|
||||||
|
{
|
||||||
|
print '<td>';
|
||||||
|
$paramkey='options_'.$key;
|
||||||
|
print $extrafields->showOutputField($key, $obj->$paramkey);
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Hook fields
|
||||||
$parameters=array('obj' => $obj);
|
$parameters=array('obj' => $obj);
|
||||||
$reshook=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook
|
$reshook=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook
|
||||||
print $hookmanager->resPrint;
|
print $hookmanager->resPrint;
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2001-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2001-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
* Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -99,6 +99,13 @@ if ($socid > 0)
|
|||||||
|
|
||||||
$head = societe_prepare_head($objsoc);
|
$head = societe_prepare_head($objsoc);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
print '<form method="POST" action="remise.php?id='.$objsoc->id.'">';
|
||||||
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
|
print '<input type="hidden" name="action" value="setremise">';
|
||||||
|
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
|
||||||
|
|
||||||
dol_fiche_head($head, 'relativediscount', $langs->trans("ThirdParty"),0,'company');
|
dol_fiche_head($head, 'relativediscount', $langs->trans("ThirdParty"),0,'company');
|
||||||
|
|
||||||
|
|
||||||
@ -119,11 +126,6 @@ if ($socid > 0)
|
|||||||
|
|
||||||
print_fiche_titre($langs->trans("NewRelativeDiscount"),'','');
|
print_fiche_titre($langs->trans("NewRelativeDiscount"),'','');
|
||||||
|
|
||||||
print '<form method="POST" action="remise.php?id='.$objsoc->id.'">';
|
|
||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
|
||||||
print '<input type="hidden" name="action" value="setremise">';
|
|
||||||
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
|
|
||||||
|
|
||||||
print '<table class="border" width="100%">';
|
print '<table class="border" width="100%">';
|
||||||
|
|
||||||
// Nouvelle valeur
|
// Nouvelle valeur
|
||||||
@ -136,6 +138,8 @@ if ($socid > 0)
|
|||||||
|
|
||||||
print "</table>";
|
print "</table>";
|
||||||
|
|
||||||
|
dol_fiche_end();
|
||||||
|
|
||||||
print '<div class="center">';
|
print '<div class="center">';
|
||||||
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
|
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
|
||||||
if (! empty($backtopage))
|
if (! empty($backtopage))
|
||||||
@ -147,8 +151,6 @@ if ($socid > 0)
|
|||||||
|
|
||||||
print "</form>";
|
print "</form>";
|
||||||
|
|
||||||
dol_fiche_end();
|
|
||||||
|
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -221,14 +221,14 @@ if ($socid > 0)
|
|||||||
*/
|
*/
|
||||||
$head = societe_prepare_head($objsoc);
|
$head = societe_prepare_head($objsoc);
|
||||||
|
|
||||||
dol_fiche_head($head, 'absolutediscount', $langs->trans("ThirdParty"),0,'company');
|
|
||||||
|
|
||||||
|
|
||||||
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'?id='.$objsoc->id.'">';
|
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'?id='.$objsoc->id.'">';
|
||||||
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="setremise">';
|
print '<input type="hidden" name="action" value="setremise">';
|
||||||
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
|
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
|
||||||
|
|
||||||
|
dol_fiche_head($head, 'absolutediscount', $langs->trans("ThirdParty"),0,'company');
|
||||||
|
|
||||||
print '<table class="border" width="100%">';
|
print '<table class="border" width="100%">';
|
||||||
|
|
||||||
// Name
|
// Name
|
||||||
@ -278,6 +278,8 @@ if ($socid > 0)
|
|||||||
|
|
||||||
print "</table>";
|
print "</table>";
|
||||||
|
|
||||||
|
dol_fiche_end();
|
||||||
|
|
||||||
print '<div class="center">';
|
print '<div class="center">';
|
||||||
print '<input type="submit" class="button" name="submit" value="'.$langs->trans("AddGlobalDiscount").'">';
|
print '<input type="submit" class="button" name="submit" value="'.$langs->trans("AddGlobalDiscount").'">';
|
||||||
if (! empty($backtopage))
|
if (! empty($backtopage))
|
||||||
@ -289,7 +291,6 @@ if ($socid > 0)
|
|||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
|
|
||||||
dol_fiche_end();
|
|
||||||
|
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
@ -329,8 +330,10 @@ if ($socid > 0)
|
|||||||
print '<td width="50"> </td>';
|
print '<td width="50"> </td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
|
$showconfirminfo=array();
|
||||||
|
|
||||||
$var = true;
|
$var = true;
|
||||||
$i = 0 ;
|
$i = 0;
|
||||||
$num = $db->num_rows($resql);
|
$num = $db->num_rows($resql);
|
||||||
while ($i < $num)
|
while ($i < $num)
|
||||||
{
|
{
|
||||||
@ -382,24 +385,26 @@ if ($socid > 0)
|
|||||||
|
|
||||||
if ($_GET["action"]=='split' && $_GET['remid'] == $obj->rowid)
|
if ($_GET["action"]=='split' && $_GET['remid'] == $obj->rowid)
|
||||||
{
|
{
|
||||||
print "<tr ".$bc[$var].">";
|
$showconfirminfo['rowid']=$obj->rowid;
|
||||||
print '<td colspan="8">';
|
$showconfirminfo['amount_ttc']=$obj->amount_ttc;
|
||||||
$amount1=price2num($obj->amount_ttc/2,'MT');
|
|
||||||
$amount2=($obj->amount_ttc-$amount1);
|
|
||||||
$formquestion=array(
|
|
||||||
'text' => $langs->trans('TypeAmountOfEachNewDiscount'),
|
|
||||||
array('type' => 'text', 'name' => 'amount_ttc_1', 'label' => $langs->trans("AmountTTC").' 1', 'value' => $amount1, 'size' => '5'),
|
|
||||||
array('type' => 'text', 'name' => 'amount_ttc_2', 'label' => $langs->trans("AmountTTC").' 2', 'value' => $amount2, 'size' => '5')
|
|
||||||
);
|
|
||||||
$langs->load("dict");
|
|
||||||
print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$objsoc->id.'&remid='.$obj->rowid, $langs->trans('SplitDiscount'), $langs->trans('ConfirmSplitDiscount',price($obj->amount_ttc),$langs->transnoentities("Currency".$conf->currency)), 'confirm_split', $formquestion, 0, 0);
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
$db->free($resql);
|
$db->free($resql);
|
||||||
print "</table>";
|
print "</table>";
|
||||||
|
|
||||||
|
if (count($showconfirminfo))
|
||||||
|
{
|
||||||
|
$amount1=price2num($showconfirminfo['amount_ttc']/2,'MT');
|
||||||
|
$amount2=($showconfirminfo['amount_ttc']-$amount1);
|
||||||
|
$formquestion=array(
|
||||||
|
'text' => $langs->trans('TypeAmountOfEachNewDiscount'),
|
||||||
|
array('type' => 'text', 'name' => 'amount_ttc_1', 'label' => $langs->trans("AmountTTC").' 1', 'value' => $amount1, 'size' => '5'),
|
||||||
|
array('type' => 'text', 'name' => 'amount_ttc_2', 'label' => $langs->trans("AmountTTC").' 2', 'value' => $amount2, 'size' => '5')
|
||||||
|
);
|
||||||
|
$langs->load("dict");
|
||||||
|
print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$objsoc->id.'&remid='.$showconfirminfo['rowid'], $langs->trans('SplitDiscount'), $langs->trans('ConfirmSplitDiscount',price($showconfirminfo['amount_ttc']),$langs->transnoentities("Currency".$conf->currency)), 'confirm_split', $formquestion, 0, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2003-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2003-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
* Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
|
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
|
||||||
* Copyright (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copyright (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
|
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
|
||||||
@ -88,7 +88,7 @@ $extrafields = new ExtraFields($db);
|
|||||||
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
|
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
|
||||||
|
|
||||||
// Load object
|
// Load object
|
||||||
include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not includ_once
|
include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once
|
||||||
|
|
||||||
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
|
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
|
||||||
$hookmanager->initHooks(array('ordercard','globalcard'));
|
$hookmanager->initHooks(array('ordercard','globalcard'));
|
||||||
@ -150,7 +150,7 @@ if (empty($reshook))
|
|||||||
// Reopen a closed order
|
// Reopen a closed order
|
||||||
else if ($action == 'reopen' && $user->rights->commande->creer)
|
else if ($action == 'reopen' && $user->rights->commande->creer)
|
||||||
{
|
{
|
||||||
if ($object->statut == STATUS_CANCELED || $object->statut == Commande::STATUS_CLOSED)
|
if ($object->statut == Commande::STATUS_CANCELED || $object->statut == Commande::STATUS_CLOSED)
|
||||||
{
|
{
|
||||||
$result = $object->set_reopen($user);
|
$result = $object->set_reopen($user);
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
@ -165,7 +165,7 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Suppression de la commande
|
// Remove order
|
||||||
else if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->commande->supprimer)
|
else if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->commande->supprimer)
|
||||||
{
|
{
|
||||||
$result = $object->delete($user);
|
$result = $object->delete($user);
|
||||||
@ -1165,8 +1165,10 @@ if (empty($reshook))
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (! $error && ! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->commande->creer) {
|
if (! $error && ! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->commande->creer)
|
||||||
if ($action == 'addcontact') {
|
{
|
||||||
|
if ($action == 'addcontact')
|
||||||
|
{
|
||||||
if ($object->id > 0) {
|
if ($object->id > 0) {
|
||||||
$contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid'));
|
$contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid'));
|
||||||
$result = $object->add_contact($contactid, GETPOST('type'), GETPOST('source'));
|
$result = $object->add_contact($contactid, GETPOST('type'), GETPOST('source'));
|
||||||
@ -1186,7 +1188,8 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
|
|
||||||
// bascule du statut d'un contact
|
// bascule du statut d'un contact
|
||||||
else if ($action == 'swapstatut') {
|
else if ($action == 'swapstatut')
|
||||||
|
{
|
||||||
if ($object->id > 0) {
|
if ($object->id > 0) {
|
||||||
$result = $object->swapContactStatus(GETPOST('ligne'));
|
$result = $object->swapContactStatus(GETPOST('ligne'));
|
||||||
} else {
|
} else {
|
||||||
@ -1195,7 +1198,8 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Efface un contact
|
// Efface un contact
|
||||||
else if ($action == 'deletecontact') {
|
else if ($action == 'deletecontact')
|
||||||
|
{
|
||||||
$result = $object->delete_contact($lineid);
|
$result = $object->delete_contact($lineid);
|
||||||
|
|
||||||
if ($result >= 0) {
|
if ($result >= 0) {
|
||||||
@ -1423,6 +1427,8 @@ if ($action == 'create' && $user->rights->commande->creer)
|
|||||||
$form->selectInputReason($demand_reason_id, 'demand_reason_id', '', 1);
|
$form->selectInputReason($demand_reason_id, 'demand_reason_id', '', 1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
|
// TODO How record was recorded OrderMode (llx_c_input_method)
|
||||||
|
|
||||||
// Project
|
// Project
|
||||||
if (! empty($conf->projet->enabled) && $socid > 0)
|
if (! empty($conf->projet->enabled) && $socid > 0)
|
||||||
{
|
{
|
||||||
@ -1964,7 +1970,7 @@ if ($action == 'create' && $user->rights->commande->creer)
|
|||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Source
|
// Origin
|
||||||
print '<tr><td height="10">';
|
print '<tr><td height="10">';
|
||||||
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
||||||
print $langs->trans('Source');
|
print $langs->trans('Source');
|
||||||
@ -1984,6 +1990,8 @@ if ($action == 'create' && $user->rights->commande->creer)
|
|||||||
// print '<a href="'.DOL_URL_ROOT.'/admin/dict.php?id=22&origin=order&originid='.$object->id.'">'.$langs->trans("DictionarySource").'</a>';
|
// print '<a href="'.DOL_URL_ROOT.'/admin/dict.php?id=22&origin=order&originid='.$object->id.'">'.$langs->trans("DictionarySource").'</a>';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
|
// TODO How record was recorded OrderMode (llx_c_input_method)
|
||||||
|
|
||||||
// Project
|
// Project
|
||||||
if (! empty($conf->projet->enabled))
|
if (! empty($conf->projet->enabled))
|
||||||
{
|
{
|
||||||
@ -2360,7 +2368,7 @@ if ($action == 'create' && $user->rights->commande->creer)
|
|||||||
if (! $file || ! is_readable($file)) {
|
if (! $file || ! is_readable($file)) {
|
||||||
$result = $object->generateDocument(GETPOST('model') ? GETPOST('model') : $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
$result = $object->generateDocument(GETPOST('model') ? GETPOST('model') : $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
if ($result <= 0) {
|
if ($result <= 0) {
|
||||||
dol_print_error($db, $result);
|
dol_print_error($db, $object->error, $object->errors);
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
$fileparams = dol_most_recent_file($conf->commande->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
|
$fileparams = dol_most_recent_file($conf->commande->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
|
||||||
@ -2401,7 +2409,7 @@ if ($action == 'create' && $user->rights->commande->creer)
|
|||||||
$formmail->substit ['__ORDERREF__'] = $object->ref;
|
$formmail->substit ['__ORDERREF__'] = $object->ref;
|
||||||
$formmail->substit ['__SIGNATURE__'] = $user->signature;
|
$formmail->substit ['__SIGNATURE__'] = $user->signature;
|
||||||
$formmail->substit ['__REFCLIENT__'] = $object->ref_client;
|
$formmail->substit ['__REFCLIENT__'] = $object->ref_client;
|
||||||
$formmail->substit ['__THIRPARTY_NAME__'] = $object->thirdparty->name;
|
$formmail->substit ['__THIRDPARTY_NAME__'] = $object->thirdparty->name;
|
||||||
$formmail->substit ['__PROJECT_REF__'] = (is_object($object->projet)?$object->projet->ref:'');
|
$formmail->substit ['__PROJECT_REF__'] = (is_object($object->projet)?$object->projet->ref:'');
|
||||||
$formmail->substit ['__PERSONALIZED__'] = '';
|
$formmail->substit ['__PERSONALIZED__'] = '';
|
||||||
$formmail->substit ['__CONTACTCIVNAME__'] = '';
|
$formmail->substit ['__CONTACTCIVNAME__'] = '';
|
||||||
|
|||||||
@ -263,14 +263,14 @@ class Commande extends CommonOrder
|
|||||||
// Protection
|
// Protection
|
||||||
if ($this->statut == self::STATUS_VALIDATED)
|
if ($this->statut == self::STATUS_VALIDATED)
|
||||||
{
|
{
|
||||||
dol_syslog(get_class($this)."::valid no draft status", LOG_WARNING);
|
dol_syslog(get_class($this)."::valid action abandonned: no draft status", LOG_WARNING);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->creer))
|
if (! ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->creer))
|
||||||
|| (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->order_advance->validate))))
|
|| (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->order_advance->validate))))
|
||||||
{
|
{
|
||||||
$this->error='Permission denied';
|
$this->error='ErrorPermissionDenied';
|
||||||
dol_syslog(get_class($this)."::valid ".$this->error, LOG_ERR);
|
dol_syslog(get_class($this)."::valid ".$this->error, LOG_ERR);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -287,7 +287,7 @@ class Commande extends CommonOrder
|
|||||||
$result=$soc->set_as_client();
|
$result=$soc->set_as_client();
|
||||||
|
|
||||||
// Define new ref
|
// Define new ref
|
||||||
if (! $error && (preg_match('/^[\(]?PROV/i', $this->ref)))
|
if (! $error && (preg_match('/^[\(]?PROV/i', $this->ref) || empty($this->ref))) // empty should not happened, but when it occurs, the test save life
|
||||||
{
|
{
|
||||||
$num = $this->getNextNumRef($soc);
|
$num = $this->getNextNumRef($soc);
|
||||||
}
|
}
|
||||||
@ -745,13 +745,13 @@ class Commande extends CommonOrder
|
|||||||
$sql.= " VALUES ('(PROV)',".$this->socid.", '".$this->db->idate($now)."', ".$user->id;
|
$sql.= " VALUES ('(PROV)',".$this->socid.", '".$this->db->idate($now)."', ".$user->id;
|
||||||
$sql.= ", ".($this->fk_project>0?$this->fk_project:"null");
|
$sql.= ", ".($this->fk_project>0?$this->fk_project:"null");
|
||||||
$sql.= ", '".$this->db->idate($date)."'";
|
$sql.= ", '".$this->db->idate($date)."'";
|
||||||
$sql.= ", ".($this->source>=0 && $this->source != '' ?$this->source:'null');
|
$sql.= ", ".($this->source>=0 && $this->source != '' ?$this->db->escape($this->source):'null');
|
||||||
$sql.= ", '".$this->db->escape($this->note_private)."'";
|
$sql.= ", '".$this->db->escape($this->note_private)."'";
|
||||||
$sql.= ", '".$this->db->escape($this->note_public)."'";
|
$sql.= ", '".$this->db->escape($this->note_public)."'";
|
||||||
$sql.= ", ".($this->ref_ext?"'".$this->db->escape($this->ref_ext)."'":"null");
|
$sql.= ", ".($this->ref_ext?"'".$this->db->escape($this->ref_ext)."'":"null");
|
||||||
$sql.= ", ".($this->ref_client?"'".$this->db->escape($this->ref_client)."'":"null");
|
$sql.= ", ".($this->ref_client?"'".$this->db->escape($this->ref_client)."'":"null");
|
||||||
$sql.= ", ".($this->ref_int?"'".$this->db->escape($this->ref_int)."'":"null");
|
$sql.= ", ".($this->ref_int?"'".$this->db->escape($this->ref_int)."'":"null");
|
||||||
$sql.= ", '".$this->modelpdf."'";
|
$sql.= ", '".$this->db->escape($this->modelpdf)."'";
|
||||||
$sql.= ", ".($this->cond_reglement_id>0?"'".$this->cond_reglement_id."'":"null");
|
$sql.= ", ".($this->cond_reglement_id>0?"'".$this->cond_reglement_id."'":"null");
|
||||||
$sql.= ", ".($this->mode_reglement_id>0?"'".$this->mode_reglement_id."'":"null");
|
$sql.= ", ".($this->mode_reglement_id>0?"'".$this->mode_reglement_id."'":"null");
|
||||||
$sql.= ", ".($this->fk_account>0?$this->fk_account:'NULL');
|
$sql.= ", ".($this->fk_account>0?$this->fk_account:'NULL');
|
||||||
@ -760,8 +760,8 @@ class Commande extends CommonOrder
|
|||||||
$sql.= ", ".($this->date_livraison?"'".$this->db->idate($this->date_livraison)."'":"null");
|
$sql.= ", ".($this->date_livraison?"'".$this->db->idate($this->date_livraison)."'":"null");
|
||||||
$sql.= ", ".($this->fk_delivery_address>0?$this->fk_delivery_address:'NULL');
|
$sql.= ", ".($this->fk_delivery_address>0?$this->fk_delivery_address:'NULL');
|
||||||
$sql.= ", ".($this->shipping_method_id>0?$this->shipping_method_id:'NULL');
|
$sql.= ", ".($this->shipping_method_id>0?$this->shipping_method_id:'NULL');
|
||||||
$sql.= ", ".($this->remise_absolue>0?$this->remise_absolue:'NULL');
|
$sql.= ", ".($this->remise_absolue>0?$this->db->escape($this->remise_absolue):'NULL');
|
||||||
$sql.= ", ".($this->remise_percent>0?$this->remise_percent:0);
|
$sql.= ", ".($this->remise_percent>0?$this->db->escape($this->remise_percent):0);
|
||||||
$sql.= ", ".(int) $this->fk_incoterms;
|
$sql.= ", ".(int) $this->fk_incoterms;
|
||||||
$sql.= ", '".$this->db->escape($this->location_incoterms)."'";
|
$sql.= ", '".$this->db->escape($this->location_incoterms)."'";
|
||||||
$sql.= ", ".$conf->entity;
|
$sql.= ", ".$conf->entity;
|
||||||
|
|||||||
@ -48,7 +48,7 @@ class CommandeStats extends Stats
|
|||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
* @param DoliDB $db Database handler
|
* @param DoliDB $db Database handler
|
||||||
* @param int $socid Id third party for filter
|
* @param int $socid Id third party for filter. This value must be forced during the new to external user company if user is an external user.
|
||||||
* @param string $mode Option ('customer', 'supplier')
|
* @param string $mode Option ('customer', 'supplier')
|
||||||
* @param int $userid Id user for filter (creation user)
|
* @param int $userid Id user for filter (creation user)
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -338,7 +338,7 @@ if ($resql)
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td align="right">';
|
print '<td align="right">';
|
||||||
$liststatus=array('0'=>$langs->trans("StatusOrderDraftShort"), '1'=>$langs->trans("StatusOrderValidated"), '2'=>$langs->trans("StatusOrderSentShort"), '3'=>$langs->trans("StatusOrderToBill"), '4'=>$langs->trans("StatusOrderProcessed"), '-1'=>$langs->trans("StatusOrderCanceledShort"));
|
$liststatus=array('0'=>$langs->trans("StatusOrderDraftShort"), '1'=>$langs->trans("StatusOrderValidated"), '2'=>$langs->trans("StatusOrderSentShort"), '3'=>$langs->trans("StatusOrderToBill"), '4'=>$langs->trans("StatusOrderProcessed"), '-1'=>$langs->trans("StatusOrderCanceledShort"));
|
||||||
print $form->selectarray('viewstatut', $liststatus, $viewstatut, 1);
|
print $form->selectarray('viewstatut', $liststatus, $viewstatut, -4);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="liste_titre" align="right"><input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
|
print '<td class="liste_titre" align="right"><input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
|
||||||
print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">';
|
print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">';
|
||||||
|
|||||||
@ -394,6 +394,9 @@ if ($action == 'create' && !$error)
|
|||||||
print '<input type="hidden" name="origin" value="'.GETPOST('origin').'">';
|
print '<input type="hidden" name="origin" value="'.GETPOST('origin').'">';
|
||||||
print '<input type="hidden" name="originid" value="'.GETPOST('originid').'">';
|
print '<input type="hidden" name="originid" value="'.GETPOST('originid').'">';
|
||||||
print '<input type="hidden" name="autocloseorders" value="'.GETPOST('autocloseorders').'">';
|
print '<input type="hidden" name="autocloseorders" value="'.GETPOST('autocloseorders').'">';
|
||||||
|
|
||||||
|
dol_fiche_head();
|
||||||
|
|
||||||
print '<table class="border" width="100%">';
|
print '<table class="border" width="100%">';
|
||||||
|
|
||||||
// Ref
|
// Ref
|
||||||
@ -495,16 +498,20 @@ if ($action == 'create' && !$error)
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dol_fiche_end();
|
||||||
|
|
||||||
// Button "Create Draft"
|
// Button "Create Draft"
|
||||||
print '<br><div class="center"><input type="submit" class="button" name="bouton" value="'.$langs->trans('CreateDraft').'" /></div>';
|
print '<div class="center"><input type="submit" class="button" name="bouton" value="'.$langs->trans('CreateDraft').'" /></div>';
|
||||||
print "</form>\n";
|
print "</form>\n";
|
||||||
|
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
print "</table>\n";
|
print "</table>\n";
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Mode liste
|
// Mode liste
|
||||||
if (($action != 'create' && $action != 'add') && !$error)
|
if (($action != 'create' && $action != 'add') || ($action == 'create' && $error))
|
||||||
{
|
{
|
||||||
llxHeader();
|
llxHeader();
|
||||||
?>
|
?>
|
||||||
|
|||||||
@ -371,23 +371,32 @@ if ($id > 0 || ! empty($ref))
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Boutons actions
|
* Buttons actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ($action != 'delete') {
|
if ($action != 'delete')
|
||||||
|
{
|
||||||
print '<div class="tabsAction">';
|
print '<div class="tabsAction">';
|
||||||
|
|
||||||
if ($object->type != 2 && $object->rappro) { // If not cash account and can be reconciliate
|
if ($object->type != 2 && $object->rappro)
|
||||||
if ($user->rights->banque->consolidate) {
|
{
|
||||||
|
// If not cash account and can be reconciliate
|
||||||
|
if ($user->rights->banque->consolidate)
|
||||||
|
{
|
||||||
print '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/bank/rappro.php?account='.$object->id.($vline?'&vline='.$vline:'').'">'.$langs->trans("Conciliate").'</a>';
|
print '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/bank/rappro.php?account='.$object->id.($vline?'&vline='.$vline:'').'">'.$langs->trans("Conciliate").'</a>';
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
print '<a class="butActionRefused" title="'.$langs->trans("NotEnoughPermissions").'" href="#">'.$langs->trans("Conciliate").'</a>';
|
print '<a class="butActionRefused" title="'.$langs->trans("NotEnoughPermissions").'" href="#">'.$langs->trans("Conciliate").'</a>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action != 'addline') {
|
if ($action != 'addline')
|
||||||
if (empty($conf->global->BANK_DISABLE_DIRECT_INPUT)) {
|
{
|
||||||
if (empty($conf->accounting->enabled)) {
|
if (empty($conf->global->BANK_DISABLE_DIRECT_INPUT))
|
||||||
|
{
|
||||||
|
if (empty($conf->accounting->enabled))
|
||||||
|
{
|
||||||
if ($user->rights->banque->modifier) {
|
if ($user->rights->banque->modifier) {
|
||||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=addline&id='.$object->id.'&page='.$page.($vline?'&vline='.$vline:'').'">'.$langs->trans("AddBankRecord").'</a>';
|
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=addline&id='.$object->id.'&page='.$page.($vline?'&vline='.$vline:'').'">'.$langs->trans("AddBankRecord").'</a>';
|
||||||
} else {
|
} else {
|
||||||
@ -500,12 +509,13 @@ if ($id > 0 || ! empty($ref))
|
|||||||
print '<br>';
|
print '<br>';
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<table class="noborder" width="100%">';
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Affiche tableau des transactions bancaires
|
* Show list of bank transactions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
print '<table class="noborder" width="100%">';
|
||||||
|
|
||||||
// Ligne de titre tableau des ecritures
|
// Ligne de titre tableau des ecritures
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td>'.$langs->trans("Date").'</td>';
|
print '<td>'.$langs->trans("Date").'</td>';
|
||||||
@ -528,11 +538,11 @@ if ($id > 0 || ! empty($ref))
|
|||||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||||
|
|
||||||
$period_filter .= $langs->trans('From').' '.$form->select_date($req_stdt,'req_stdt',0,0,1,null,1,1,1);
|
$period_filter .= $langs->trans('From').' '.$form->select_date($req_stdt,'req_stdt',0,0,1,null,1,1,1);
|
||||||
$period_filter .= '<BR>'. $langs->trans('to').' '.$form->select_date($req_enddt,'req_enddt',0,0,1,null,1,1,1);
|
$period_filter .= ' ';
|
||||||
|
$period_filter .= $langs->trans('to').' '.$form->select_date($req_enddt,'req_enddt',0,0,1,null,1,1,1);
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td> </td>';
|
print '<td colspan="2">'.$period_filter.'</td>';
|
||||||
print '<td>'.$period_filter.'</td>';
|
|
||||||
print '<td>';
|
print '<td>';
|
||||||
//$filtertype=array('TIP'=>'TIP','PRE'=>'PRE',...)
|
//$filtertype=array('TIP'=>'TIP','PRE'=>'PRE',...)
|
||||||
$filtertype='';
|
$filtertype='';
|
||||||
@ -654,7 +664,8 @@ if ($id > 0 || ! empty($ref))
|
|||||||
$label=($langs->trans("PaymentTypeShort".$objp->fk_type)!="PaymentTypeShort".$objp->fk_type)?$langs->trans("PaymentTypeShort".$objp->fk_type):$objp->fk_type;
|
$label=($langs->trans("PaymentTypeShort".$objp->fk_type)!="PaymentTypeShort".$objp->fk_type)?$langs->trans("PaymentTypeShort".$objp->fk_type):$objp->fk_type;
|
||||||
|
|
||||||
if ($objp->fk_type == 'SOLD') $label=' ';
|
if ($objp->fk_type == 'SOLD') $label=' ';
|
||||||
if ($objp->fk_type == 'CHQ' && $objp->fk_bordereau > 0) {
|
if ($objp->fk_type == 'CHQ' && $objp->fk_bordereau > 0)
|
||||||
|
{
|
||||||
dol_include_once('/compta/paiement/cheque/class/remisecheque.class.php');
|
dol_include_once('/compta/paiement/cheque/class/remisecheque.class.php');
|
||||||
$bordereaustatic = new RemiseCheque($db);
|
$bordereaustatic = new RemiseCheque($db);
|
||||||
$bordereaustatic->id = $objp->fk_bordereau;
|
$bordereaustatic->id = $objp->fk_bordereau;
|
||||||
@ -678,6 +689,7 @@ if ($id > 0 || ! empty($ref))
|
|||||||
{
|
{
|
||||||
print dol_trunc($objp->label,60);
|
print dol_trunc($objp->label,60);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add links after description
|
// Add links after description
|
||||||
$links = $object->get_url($objp->rowid);
|
$links = $object->get_url($objp->rowid);
|
||||||
foreach($links as $key=>$val)
|
foreach($links as $key=>$val)
|
||||||
|
|||||||
@ -122,8 +122,10 @@ class Account extends CommonObject
|
|||||||
*/
|
*/
|
||||||
function canBeConciliated()
|
function canBeConciliated()
|
||||||
{
|
{
|
||||||
|
global $conf;
|
||||||
|
|
||||||
if (empty($this->rappro)) return -1;
|
if (empty($this->rappro)) return -1;
|
||||||
if ($this->courant == 2) return -2;
|
if ($this->courant == 2 && empty($conf->global->BANK_CAN_RECONCILIATE_CASHACCOUNT)) return -2;
|
||||||
if ($this->clos) return -3;
|
if ($this->clos) return -3;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||||
*
|
*
|
||||||
@ -43,6 +43,7 @@ if (! $user->rights->banque->consolidate) accessforbidden();
|
|||||||
$action=GETPOST('action', 'alpha');
|
$action=GETPOST('action', 'alpha');
|
||||||
$id=GETPOST('account', 'int');
|
$id=GETPOST('account', 'int');
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
@ -220,7 +221,7 @@ if ($resql)
|
|||||||
print "<input type=\"hidden\" name=\"action\" value=\"rappro\">";
|
print "<input type=\"hidden\" name=\"action\" value=\"rappro\">";
|
||||||
print "<input type=\"hidden\" name=\"account\" value=\"".$acct->id."\">";
|
print "<input type=\"hidden\" name=\"account\" value=\"".$acct->id."\">";
|
||||||
|
|
||||||
print $langs->trans("InputReceiptNumber").': ';
|
print '<strong>'.$langs->trans("InputReceiptNumber").'</strong>: ';
|
||||||
print '<input class="flat" name="num_releve" type="text" value="'.(GETPOST('num_releve')?GETPOST('num_releve'):$objp->num_releve).'" size="10">';
|
print '<input class="flat" name="num_releve" type="text" value="'.(GETPOST('num_releve')?GETPOST('num_releve'):$objp->num_releve).'" size="10">';
|
||||||
print '<br>';
|
print '<br>';
|
||||||
if ($options)
|
if ($options)
|
||||||
|
|||||||
@ -94,10 +94,10 @@ $banklinestatic=new AccountLine($db);
|
|||||||
|
|
||||||
|
|
||||||
// Load account
|
// Load account
|
||||||
$acct = new Account($db);
|
$object = new Account($db);
|
||||||
if ($id > 0 || ! empty($ref))
|
if ($id > 0 || ! empty($ref))
|
||||||
{
|
{
|
||||||
$acct->fetch($id, $ref);
|
$object->fetch($id, $ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($num))
|
if (empty($num))
|
||||||
@ -107,7 +107,7 @@ if (empty($num))
|
|||||||
*/
|
*/
|
||||||
$sql = "SELECT DISTINCT(b.num_releve) as numr";
|
$sql = "SELECT DISTINCT(b.num_releve) as numr";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
|
$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
|
||||||
$sql.= " WHERE b.fk_account = ".$acct->id;
|
$sql.= " WHERE b.fk_account = ".$object->id;
|
||||||
$sql.= " ORDER BY numr DESC";
|
$sql.= " ORDER BY numr DESC";
|
||||||
|
|
||||||
$sql.= $db->plimit($conf->liste_limit+1,$offset);
|
$sql.= $db->plimit($conf->liste_limit+1,$offset);
|
||||||
@ -120,7 +120,7 @@ if (empty($num))
|
|||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
// Onglets
|
// Onglets
|
||||||
$head=bank_prepare_head($acct);
|
$head=bank_prepare_head($object);
|
||||||
dol_fiche_head($head,'statement',$langs->trans("FinancialAccount"),0,'account');
|
dol_fiche_head($head,'statement',$langs->trans("FinancialAccount"),0,'account');
|
||||||
|
|
||||||
print '<table class="border" width="100%">';
|
print '<table class="border" width="100%">';
|
||||||
@ -130,19 +130,36 @@ if (empty($num))
|
|||||||
// Ref
|
// Ref
|
||||||
print '<tr><td width="25%">'.$langs->trans("Ref").'</td>';
|
print '<tr><td width="25%">'.$langs->trans("Ref").'</td>';
|
||||||
print '<td colspan="3">';
|
print '<td colspan="3">';
|
||||||
print $form->showrefnav($acct, 'ref', $linkback, 1, 'ref');
|
print $form->showrefnav($object, 'ref', $linkback, 1, 'ref');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Label
|
// Label
|
||||||
print '<tr><td>'.$langs->trans("Label").'</td>';
|
print '<tr><td>'.$langs->trans("Label").'</td>';
|
||||||
print '<td colspan="3">'.$acct->label.'</td></tr>';
|
print '<td colspan="3">'.$object->label.'</td></tr>';
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
|
|
||||||
|
print '<div class="tabsAction">';
|
||||||
|
|
||||||
|
if ($object->type != 2 && $object->rappro)
|
||||||
|
{
|
||||||
|
// If not cash account and can be reconciliate
|
||||||
|
if ($user->rights->banque->consolidate)
|
||||||
|
{
|
||||||
|
print '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/bank/rappro.php?account='.$object->id.($vline?'&vline='.$vline:'').'">'.$langs->trans("Conciliate").'</a>';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print '<a class="butActionRefused" title="'.$langs->trans("NotEnoughPermissions").'" href="#">'.$langs->trans("Conciliate").'</a>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
print_barre_liste('', $page, $_SERVER["PHP_SELF"], "&account=".$acct->id, $sortfield, $sortorder,'',$numrows);
|
print '</div>';
|
||||||
|
|
||||||
|
|
||||||
|
print_barre_liste('', $page, $_SERVER["PHP_SELF"], "&account=".$object->id, $sortfield, $sortorder,'',$numrows);
|
||||||
|
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
@ -164,13 +181,13 @@ if (empty($num))
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print '<tr '.$bc[$var].'><td><a href="releve.php?num='.$objp->numr.'&account='.$acct->id.'">'.$objp->numr.'</a></td>';
|
print '<tr '.$bc[$var].'><td><a href="releve.php?num='.$objp->numr.'&account='.$object->id.'">'.$objp->numr.'</a></td>';
|
||||||
|
|
||||||
// Calculate start amount
|
// Calculate start amount
|
||||||
$sql = "SELECT sum(b.amount) as amount";
|
$sql = "SELECT sum(b.amount) as amount";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
|
$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
|
||||||
$sql.= " WHERE b.num_releve < '".$db->escape($objp->numr)."'";
|
$sql.= " WHERE b.num_releve < '".$db->escape($objp->numr)."'";
|
||||||
$sql.= " AND b.fk_account = ".$acct->id;
|
$sql.= " AND b.fk_account = ".$object->id;
|
||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
@ -184,7 +201,7 @@ if (empty($num))
|
|||||||
$sql = "SELECT sum(b.amount) as amount";
|
$sql = "SELECT sum(b.amount) as amount";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
|
$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
|
||||||
$sql.= " WHERE b.num_releve = '".$db->escape($objp->numr)."'";
|
$sql.= " WHERE b.num_releve = '".$db->escape($objp->numr)."'";
|
||||||
$sql.= " AND b.fk_account = ".$acct->id;
|
$sql.= " AND b.fk_account = ".$object->id;
|
||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
@ -222,7 +239,7 @@ else
|
|||||||
$sql = "SELECT DISTINCT(b.num_releve) as num";
|
$sql = "SELECT DISTINCT(b.num_releve) as num";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
|
$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
|
||||||
$sql.= " WHERE b.num_releve < '".$db->escape($num)."'";
|
$sql.= " WHERE b.num_releve < '".$db->escape($num)."'";
|
||||||
$sql.= " AND b.fk_account = ".$acct->id;
|
$sql.= " AND b.fk_account = ".$object->id;
|
||||||
$sql.= " ORDER BY b.num_releve DESC";
|
$sql.= " ORDER BY b.num_releve DESC";
|
||||||
|
|
||||||
dol_syslog("htdocs/compta/bank/releve.php", LOG_DEBUG);
|
dol_syslog("htdocs/compta/bank/releve.php", LOG_DEBUG);
|
||||||
@ -244,7 +261,7 @@ else
|
|||||||
$sql = "SELECT DISTINCT(b.num_releve) as num";
|
$sql = "SELECT DISTINCT(b.num_releve) as num";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
|
$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
|
||||||
$sql.= " WHERE b.num_releve > '".$db->escape($num)."'";
|
$sql.= " WHERE b.num_releve > '".$db->escape($num)."'";
|
||||||
$sql.= " AND b.fk_account = ".$acct->id;
|
$sql.= " AND b.fk_account = ".$object->id;
|
||||||
$sql.= " ORDER BY b.num_releve ASC";
|
$sql.= " ORDER BY b.num_releve ASC";
|
||||||
|
|
||||||
dol_syslog("htdocs/compta/bank/releve.php", LOG_DEBUG);
|
dol_syslog("htdocs/compta/bank/releve.php", LOG_DEBUG);
|
||||||
@ -265,10 +282,10 @@ else
|
|||||||
$found=true;
|
$found=true;
|
||||||
}
|
}
|
||||||
|
|
||||||
$mesprevnext ="<a href=\"releve.php?rel=prev&num=$num&ve=$ve&account=$acct->id\">".img_previous()."</a> ";
|
$mesprevnext ="<a href=\"releve.php?rel=prev&num=$num&ve=$ve&account=$object->id\">".img_previous()."</a> ";
|
||||||
$mesprevnext.= $langs->trans("AccountStatement")." $num";
|
$mesprevnext.= $langs->trans("AccountStatement")." $num";
|
||||||
$mesprevnext.=" <a href=\"releve.php?rel=next&num=$num&ve=$ve&account=$acct->id\">".img_next()."</a>";
|
$mesprevnext.=" <a href=\"releve.php?rel=next&num=$num&ve=$ve&account=$object->id\">".img_next()."</a>";
|
||||||
print_fiche_titre($langs->trans("AccountStatement").' '.$num.', '.$langs->trans("BankAccount").' : '.$acct->getNomUrl(0),$mesprevnext, 'title_bank.png');
|
print_fiche_titre($langs->trans("AccountStatement").' '.$num.', '.$langs->trans("BankAccount").' : '.$object->getNomUrl(0),$mesprevnext, 'title_bank.png');
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
print "<form method=\"post\" action=\"releve.php\">";
|
print "<form method=\"post\" action=\"releve.php\">";
|
||||||
@ -291,7 +308,7 @@ else
|
|||||||
$sql = "SELECT sum(b.amount) as amount";
|
$sql = "SELECT sum(b.amount) as amount";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
|
$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
|
||||||
$sql.= " WHERE b.num_releve < '".$db->escape($num)."'";
|
$sql.= " WHERE b.num_releve < '".$db->escape($num)."'";
|
||||||
$sql.= " AND b.fk_account = ".$acct->id;
|
$sql.= " AND b.fk_account = ".$object->id;
|
||||||
|
|
||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
@ -309,7 +326,7 @@ else
|
|||||||
$sql.= ", ".MAIN_DB_PREFIX."bank as b";
|
$sql.= ", ".MAIN_DB_PREFIX."bank as b";
|
||||||
$sql.= " WHERE b.num_releve='".$db->escape($num)."'";
|
$sql.= " WHERE b.num_releve='".$db->escape($num)."'";
|
||||||
if (!isset($num)) $sql.= " OR b.num_releve is null";
|
if (!isset($num)) $sql.= " OR b.num_releve is null";
|
||||||
$sql.= " AND b.fk_account = ".$acct->id;
|
$sql.= " AND b.fk_account = ".$object->id;
|
||||||
$sql.= " AND b.fk_account = ba.rowid";
|
$sql.= " AND b.fk_account = ba.rowid";
|
||||||
$sql.= $db->order("b.datev, b.datec", "ASC"); // We add date of creation to have correct order when everything is done the same day
|
$sql.= $db->order("b.datev, b.datec", "ASC"); // We add date of creation to have correct order when everything is done the same day
|
||||||
|
|
||||||
@ -321,7 +338,7 @@ else
|
|||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
// Ligne Solde debut releve
|
// Ligne Solde debut releve
|
||||||
print "<tr><td colspan=\"4\"><a href=\"releve.php?num=$num&ve=1&rel=$rel&account=".$acct->id."\"> </a></td>";
|
print "<tr><td colspan=\"4\"><a href=\"releve.php?num=$num&ve=1&rel=$rel&account=".$object->id."\"> </a></td>";
|
||||||
print "<td align=\"right\" colspan=\"2\"><b>".$langs->trans("InitialBankBalance")." :</b></td><td align=\"right\"><b>".price($total)."</b></td><td> </td></tr>\n";
|
print "<td align=\"right\" colspan=\"2\"><b>".$langs->trans("InitialBankBalance")." :</b></td><td align=\"right\"><b>".price($total)."</b></td><td> </td></tr>\n";
|
||||||
|
|
||||||
while ($i < $numrows)
|
while ($i < $numrows)
|
||||||
@ -337,10 +354,10 @@ else
|
|||||||
|
|
||||||
// Date de valeur
|
// Date de valeur
|
||||||
print '<td align="center" valign="center" class="nowrap">';
|
print '<td align="center" valign="center" class="nowrap">';
|
||||||
print '<a href="releve.php?action=dvprev&num='.$num.'&account='.$acct->id.'&dvid='.$objp->rowid.'">';
|
print '<a href="releve.php?action=dvprev&num='.$num.'&account='.$object->id.'&dvid='.$objp->rowid.'">';
|
||||||
print img_previous().'</a> ';
|
print img_previous().'</a> ';
|
||||||
print dol_print_date($db->jdate($objp->dv),"day") .' ';
|
print dol_print_date($db->jdate($objp->dv),"day") .' ';
|
||||||
print '<a href="releve.php?action=dvnext&num='.$num.'&account='.$acct->id.'&dvid='.$objp->rowid.'">';
|
print '<a href="releve.php?action=dvnext&num='.$num.'&account='.$object->id.'&dvid='.$objp->rowid.'">';
|
||||||
print img_next().'</a>';
|
print img_next().'</a>';
|
||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
|
|
||||||
@ -353,7 +370,7 @@ else
|
|||||||
print '<td class="nowrap">'.$type_label.' '.($objp->num_chq?$objp->num_chq:'').'</td>';
|
print '<td class="nowrap">'.$type_label.' '.($objp->num_chq?$objp->num_chq:'').'</td>';
|
||||||
|
|
||||||
// Description
|
// Description
|
||||||
print '<td valign="center"><a href="'.DOL_URL_ROOT.'/compta/bank/ligne.php?rowid='.$objp->rowid.'&account='.$acct->id.'">';
|
print '<td valign="center"><a href="'.DOL_URL_ROOT.'/compta/bank/ligne.php?rowid='.$objp->rowid.'&account='.$object->id.'">';
|
||||||
$reg=array();
|
$reg=array();
|
||||||
preg_match('/\((.+)\)/i',$objp->label,$reg); // Si texte entoure de parenthese on tente recherche de traduction
|
preg_match('/\((.+)\)/i',$objp->label,$reg); // Si texte entoure de parenthese on tente recherche de traduction
|
||||||
if ($reg[1] && $langs->trans($reg[1])!=$reg[1]) print $langs->trans($reg[1]);
|
if ($reg[1] && $langs->trans($reg[1])!=$reg[1]) print $langs->trans($reg[1]);
|
||||||
@ -364,7 +381,7 @@ else
|
|||||||
* Ajout les liens (societe, company...)
|
* Ajout les liens (societe, company...)
|
||||||
*/
|
*/
|
||||||
$newline=1;
|
$newline=1;
|
||||||
$links = $acct->get_url($objp->rowid);
|
$links = $object->get_url($objp->rowid);
|
||||||
foreach($links as $key=>$val)
|
foreach($links as $key=>$val)
|
||||||
{
|
{
|
||||||
if (! $newline) print ' - ';
|
if (! $newline) print ' - ';
|
||||||
@ -500,7 +517,7 @@ else
|
|||||||
|
|
||||||
if ($user->rights->banque->modifier || $user->rights->banque->consolidate)
|
if ($user->rights->banque->modifier || $user->rights->banque->consolidate)
|
||||||
{
|
{
|
||||||
print "<td align=\"center\"><a href=\"ligne.php?rowid=$objp->rowid&account=".$acct->id."\">";
|
print "<td align=\"center\"><a href=\"ligne.php?rowid=$objp->rowid&account=".$object->id."\">";
|
||||||
print img_edit();
|
print img_edit();
|
||||||
print "</a></td>";
|
print "</a></td>";
|
||||||
}
|
}
|
||||||
@ -522,6 +539,7 @@ else
|
|||||||
print "</table></form>\n";
|
print "</table></form>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
$db->close();
|
|
||||||
|
|
||||||
llxFooter();
|
llxFooter();
|
||||||
|
|
||||||
|
$db->close();
|
||||||
|
|||||||
@ -442,7 +442,7 @@ if (empty($reshook))
|
|||||||
$ret = $object->fetch($id); // Reload to get new records
|
$ret = $object->fetch($id); // Reload to get new records
|
||||||
|
|
||||||
$result = $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
$result = $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
if ($result < 0) dol_print_error($db,$result);
|
if ($result < 0) setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -923,7 +923,11 @@ if (empty($reshook))
|
|||||||
$exp = new Expedition($db);
|
$exp = new Expedition($db);
|
||||||
$exp->fetch($object->origin_id);
|
$exp->fetch($object->origin_id);
|
||||||
$exp->fetchObjectLinked();
|
$exp->fetchObjectLinked();
|
||||||
if (count($exp->linkedObjectsIds['commande']) > 0) $object->linked_objects['commande'] = $exp->linkedObjectsIds['commande'][0];
|
if (count($exp->linkedObjectsIds['commande']) > 0) {
|
||||||
|
foreach ($exp->linkedObjectsIds['commande'] as $key => $value){
|
||||||
|
$object->linked_objects['commande'] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_array($_POST['other_linked_objects']) && ! empty($_POST['other_linked_objects']))
|
if (is_array($_POST['other_linked_objects']) && ! empty($_POST['other_linked_objects']))
|
||||||
@ -1421,10 +1425,7 @@ if (empty($reshook))
|
|||||||
$ret = $object->fetch($id); // Reload to get new records
|
$ret = $object->fetch($id); // Reload to get new records
|
||||||
|
|
||||||
$result = $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
$result = $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
if ($result < 0)
|
if ($result < 0) setEventMessages($object->error, $object->errors, 'errors');
|
||||||
{
|
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
unset($_POST['prod_entry_mode']);
|
unset($_POST['prod_entry_mode']);
|
||||||
@ -2185,9 +2186,9 @@ if ($action == 'create')
|
|||||||
$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceAvoirDesc"), 1, 'help', '', 0, 3);
|
$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceAvoirDesc"), 1, 'help', '', 0, 3);
|
||||||
print $desc;
|
print $desc;
|
||||||
|
|
||||||
print '<div id="credit_note_options">';
|
print '<div id="credit_note_options" class="clearboth">';
|
||||||
print ' <input type="checkbox" name="invoiceAvoirWithLines" id="invoiceAvoirWithLines" value="1" onclick="if($(this).is(\':checked\') ) { $(\'#radio_creditnote\').prop("checked", true); $(\'#invoiceAvoirWithPaymentRestAmount\').removeAttr(\'checked\'); }" '.(GETPOST('invoiceAvoirWithLines','int')>0 ? 'checked':'').' /> <label for="invoiceAvoirWithLines">'.$langs->trans('invoiceAvoirWithLines')."</label>";
|
print ' <input data-role="none" type="checkbox" name="invoiceAvoirWithLines" id="invoiceAvoirWithLines" value="1" onclick="if($(this).is(\':checked\') ) { $(\'#radio_creditnote\').prop(\'checked\', true); $(\'#invoiceAvoirWithPaymentRestAmount\').removeAttr(\'checked\'); }" '.(GETPOST('invoiceAvoirWithLines','int')>0 ? 'checked':'').' /> <label for="invoiceAvoirWithLines">'.$langs->trans('invoiceAvoirWithLines')."</label>";
|
||||||
print '<br> <input type="checkbox" name="invoiceAvoirWithPaymentRestAmount" id="invoiceAvoirWithPaymentRestAmount" value="1" onclick="if($(this).is(\':checked\') ) { $(\'#radio_creditnote\').prop("checked", true); $(\'#invoiceAvoirWithLines\').removeAttr(\'checked\'); }" '.(GETPOST('invoiceAvoirWithPaymentRestAmount','int')>0 ? 'checked':'').' /> <label for="invoiceAvoirWithPaymentRestAmount">'.$langs->trans('invoiceAvoirWithPaymentRestAmount')."</label>";
|
print '<br> <input data-role="none" type="checkbox" name="invoiceAvoirWithPaymentRestAmount" id="invoiceAvoirWithPaymentRestAmount" value="1" onclick="if($(this).is(\':checked\') ) { $(\'#radio_creditnote\').prop(\'checked\', true); $(\'#invoiceAvoirWithLines\').removeAttr(\'checked\'); }" '.(GETPOST('invoiceAvoirWithPaymentRestAmount','int')>0 ? 'checked':'').' /> <label for="invoiceAvoirWithPaymentRestAmount">'.$langs->trans('invoiceAvoirWithPaymentRestAmount')."</label>";
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
print '</div></div>';
|
print '</div></div>';
|
||||||
@ -2245,6 +2246,10 @@ if ($action == 'create')
|
|||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Bank Account
|
// Bank Account
|
||||||
|
if (isset($_POST['fk_account'])) {
|
||||||
|
$fk_account = $_POST['fk_account'];
|
||||||
|
}
|
||||||
|
|
||||||
print '<tr><td>' . $langs->trans('BankAccount') . '</td><td colspan="2">';
|
print '<tr><td>' . $langs->trans('BankAccount') . '</td><td colspan="2">';
|
||||||
$form->select_comptes($fk_account, 'fk_account', 0, '', 1);
|
$form->select_comptes($fk_account, 'fk_account', 0, '', 1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
@ -3536,14 +3541,17 @@ else if ($id > 0 || ! empty($ref))
|
|||||||
// modified by hook
|
// modified by hook
|
||||||
if (empty($reshook)) {
|
if (empty($reshook)) {
|
||||||
// Editer une facture deja validee, sans paiement effectue et pas exporte en compta
|
// Editer une facture deja validee, sans paiement effectue et pas exporte en compta
|
||||||
if ($object->statut == 1) {
|
if ($object->statut == 1)
|
||||||
|
{
|
||||||
// On verifie si les lignes de factures ont ete exportees en compta et/ou ventilees
|
// On verifie si les lignes de factures ont ete exportees en compta et/ou ventilees
|
||||||
$ventilExportCompta = $object->getVentilExportCompta();
|
$ventilExportCompta = $object->getVentilExportCompta();
|
||||||
|
|
||||||
if ($resteapayer == $object->total_ttc && $object->paye == 0 && $ventilExportCompta == 0) {
|
if ($resteapayer == $object->total_ttc && empty($object->paye) && $ventilExportCompta == 0)
|
||||||
if (! $objectidnext && $object->is_last_in_cycle()) {
|
{
|
||||||
|
if (! $objectidnext && $object->is_last_in_cycle())
|
||||||
|
{
|
||||||
if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->facture->creer))
|
if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->facture->creer))
|
||||||
|| (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->invoice_advance->unvalidate)))
|
|| (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->facture->invoice_advance->unvalidate)))
|
||||||
{
|
{
|
||||||
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?facid=' . $object->id . '&action=modif">' . $langs->trans('Modify') . '</a></div>';
|
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?facid=' . $object->id . '&action=modif">' . $langs->trans('Modify') . '</a></div>';
|
||||||
} else {
|
} else {
|
||||||
@ -3806,7 +3814,7 @@ else if ($id > 0 || ! empty($ref))
|
|||||||
if (! $file || ! is_readable($file)) {
|
if (! $file || ! is_readable($file)) {
|
||||||
$result = $object->generateDocument(GETPOST('model') ? GETPOST('model') : $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
$result = $object->generateDocument(GETPOST('model') ? GETPOST('model') : $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
if ($result <= 0) {
|
if ($result <= 0) {
|
||||||
dol_print_error($db, $result);
|
dol_print_error($db, $object->error, $object->errors);
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
$fileparams = dol_most_recent_file($conf->facture->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
|
$fileparams = dol_most_recent_file($conf->facture->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
|
||||||
@ -3849,8 +3857,9 @@ else if ($id > 0 || ! empty($ref))
|
|||||||
$formmail->substit['__FACREF__'] = $object->ref;
|
$formmail->substit['__FACREF__'] = $object->ref;
|
||||||
$formmail->substit['__SIGNATURE__'] = $user->signature;
|
$formmail->substit['__SIGNATURE__'] = $user->signature;
|
||||||
$formmail->substit['__REFCLIENT__'] = $object->ref_client;
|
$formmail->substit['__REFCLIENT__'] = $object->ref_client;
|
||||||
$formmail->substit['__THIRPARTY_NAME__'] = $object->thirdparty->name;
|
$formmail->substit['__THIRDPARTY_NAME__'] = $object->thirdparty->name;
|
||||||
$formmail->substit['__PROJECT_REF__'] = (is_object($object->projet)?$object->projet->ref:'');
|
$formmail->substit['__PROJECT_REF__'] = (is_object($object->projet)?$object->projet->ref:'');
|
||||||
|
$formmail->substit['__PROJECT_NAME__'] = (is_object($object->projet)?$object->projet->title:'');
|
||||||
$formmail->substit['__PERSONALIZED__'] = '';
|
$formmail->substit['__PERSONALIZED__'] = '';
|
||||||
$formmail->substit['__CONTACTCIVNAME__'] = '';
|
$formmail->substit['__CONTACTCIVNAME__'] = '';
|
||||||
|
|
||||||
|
|||||||
@ -66,7 +66,6 @@ llxHeader('',$langs->trans("BillsSetup"));
|
|||||||
|
|
||||||
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
|
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
|
||||||
print_fiche_titre($langs->trans("BillsSetup"),$linkback,'title_setup');
|
print_fiche_titre($langs->trans("BillsSetup"),$linkback,'title_setup');
|
||||||
print '<br>';
|
|
||||||
|
|
||||||
$head = invoice_admin_prepare_head();
|
$head = invoice_admin_prepare_head();
|
||||||
|
|
||||||
|
|||||||
@ -67,7 +67,6 @@ llxHeader('',$langs->trans("BillsSetup"));
|
|||||||
|
|
||||||
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
|
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
|
||||||
print_fiche_titre($langs->trans("BillsSetup"),$linkback,'title_setup');
|
print_fiche_titre($langs->trans("BillsSetup"),$linkback,'title_setup');
|
||||||
print '<br>';
|
|
||||||
|
|
||||||
$head = invoice_admin_prepare_head();
|
$head = invoice_admin_prepare_head();
|
||||||
|
|
||||||
|
|||||||
@ -180,7 +180,7 @@ class Facture extends CommonInvoice
|
|||||||
const TYPE_DEPOSIT = 3;
|
const TYPE_DEPOSIT = 3;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Proforma invoice
|
* Proforma invoice (should not be used. a proforma is an order)
|
||||||
*/
|
*/
|
||||||
const TYPE_PROFORMA = 4;
|
const TYPE_PROFORMA = 4;
|
||||||
|
|
||||||
@ -332,7 +332,7 @@ class Facture extends CommonInvoice
|
|||||||
$sql.= "'(PROV)'";
|
$sql.= "'(PROV)'";
|
||||||
$sql.= ", ".$conf->entity;
|
$sql.= ", ".$conf->entity;
|
||||||
$sql.= ", ".($this->ref_ext?"'".$this->db->escape($this->ref_ext)."'":"null");
|
$sql.= ", ".($this->ref_ext?"'".$this->db->escape($this->ref_ext)."'":"null");
|
||||||
$sql.= ", '".$this->type."'";
|
$sql.= ", '".$this->db->escape($this->type)."'";
|
||||||
$sql.= ", '".$socid."'";
|
$sql.= ", '".$socid."'";
|
||||||
$sql.= ", '".$this->db->idate($now)."'";
|
$sql.= ", '".$this->db->idate($now)."'";
|
||||||
$sql.= ", ".($this->remise_absolue>0?$this->remise_absolue:'NULL');
|
$sql.= ", ".($this->remise_absolue>0?$this->remise_absolue:'NULL');
|
||||||
@ -348,7 +348,7 @@ class Facture extends CommonInvoice
|
|||||||
$sql.= ", ".($this->fk_project?$this->fk_project:"null");
|
$sql.= ", ".($this->fk_project?$this->fk_project:"null");
|
||||||
$sql.= ", ".$this->cond_reglement_id;
|
$sql.= ", ".$this->cond_reglement_id;
|
||||||
$sql.= ", ".$this->mode_reglement_id;
|
$sql.= ", ".$this->mode_reglement_id;
|
||||||
$sql.= ", '".$this->db->idate($datelim)."', '".$this->modelpdf."'";
|
$sql.= ", '".$this->db->idate($datelim)."', '".$this->db->escape($this->modelpdf)."'";
|
||||||
$sql.= ", ".($this->situation_cycle_ref?"'".$this->db->escape($this->situation_cycle_ref)."'":"null");
|
$sql.= ", ".($this->situation_cycle_ref?"'".$this->db->escape($this->situation_cycle_ref)."'":"null");
|
||||||
$sql.= ", ".($this->situation_counter?"'".$this->db->escape($this->situation_counter)."'":"null");
|
$sql.= ", ".($this->situation_counter?"'".$this->db->escape($this->situation_counter)."'":"null");
|
||||||
$sql.= ", ".($this->situation_final?$this->situation_final:0);
|
$sql.= ", ".($this->situation_final?$this->situation_final:0);
|
||||||
@ -1827,7 +1827,7 @@ class Facture extends CommonInvoice
|
|||||||
{
|
{
|
||||||
$num = $force_number;
|
$num = $force_number;
|
||||||
}
|
}
|
||||||
else if (preg_match('/^[\(]?PROV/i', $this->ref))
|
else if (preg_match('/^[\(]?PROV/i', $this->ref) || empty($this->ref)) // empty should not happened, but when it occurs, the test save life
|
||||||
{
|
{
|
||||||
if (! empty($conf->global->FAC_FORCE_DATE_VALIDATION)) // If option enabled, we force invoice date
|
if (! empty($conf->global->FAC_FORCE_DATE_VALIDATION)) // If option enabled, we force invoice date
|
||||||
{
|
{
|
||||||
@ -2765,15 +2765,16 @@ class Facture extends CommonInvoice
|
|||||||
$numref = "";
|
$numref = "";
|
||||||
$numref = $obj->getNextValue($soc,$this,$mode);
|
$numref = $obj->getNextValue($soc,$this,$mode);
|
||||||
|
|
||||||
if ($numref != "")
|
/**
|
||||||
{
|
* $numref can be empty in case we ask for the last value because if there is no invoice created with the
|
||||||
return $numref;
|
* set up mask.
|
||||||
}
|
*/
|
||||||
else
|
if ($mode != 'last' && !$numref) {
|
||||||
{
|
|
||||||
dol_print_error($db,"Facture::getNextNumRef ".$obj->error);
|
dol_print_error($db,"Facture::getNextNumRef ".$obj->error);
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return $numref;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -45,7 +45,7 @@ class FactureStats extends Stats
|
|||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
* @param DoliDB $db Database handler
|
* @param DoliDB $db Database handler
|
||||||
* @param int $socid Id third party for filter
|
* @param int $socid Id third party for filter. This value must be forced during the new to external user company if user is an external user.
|
||||||
* @param string $mode Option ('customer', 'supplier')
|
* @param string $mode Option ('customer', 'supplier')
|
||||||
* @param int $userid Id user for filter (creation user)
|
* @param int $userid Id user for filter (creation user)
|
||||||
*/
|
*/
|
||||||
@ -168,7 +168,7 @@ class FactureStats extends Stats
|
|||||||
|
|
||||||
$sql = "SELECT date_format(datef,'%m') as dm, AVG(f.".$this->field.")";
|
$sql = "SELECT date_format(datef,'%m') as dm, AVG(f.".$this->field.")";
|
||||||
$sql.= " FROM ".$this->from;
|
$sql.= " FROM ".$this->from;
|
||||||
if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
if (!$user->rights->societe->client->voir && !$this->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
||||||
$sql.= " WHERE f.datef BETWEEN '".$this->db->idate(dol_get_first_day($year))."' AND '".$this->db->idate(dol_get_last_day($year))."'";
|
$sql.= " WHERE f.datef BETWEEN '".$this->db->idate(dol_get_first_day($year))."' AND '".$this->db->idate(dol_get_last_day($year))."'";
|
||||||
$sql.= " AND ".$this->where;
|
$sql.= " AND ".$this->where;
|
||||||
$sql.= " GROUP BY dm";
|
$sql.= " GROUP BY dm";
|
||||||
@ -188,7 +188,7 @@ class FactureStats extends Stats
|
|||||||
|
|
||||||
$sql = "SELECT date_format(datef,'%Y') as year, COUNT(*) as nb, SUM(f.".$this->field.") as total, AVG(f.".$this->field.") as avg";
|
$sql = "SELECT date_format(datef,'%Y') as year, COUNT(*) as nb, SUM(f.".$this->field.") as total, AVG(f.".$this->field.") as avg";
|
||||||
$sql.= " FROM ".$this->from;
|
$sql.= " FROM ".$this->from;
|
||||||
if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
if (!$user->rights->societe->client->voir && !$this->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
||||||
$sql.= " WHERE ".$this->where;
|
$sql.= " WHERE ".$this->where;
|
||||||
$sql.= " GROUP BY year";
|
$sql.= " GROUP BY year";
|
||||||
$sql.= $this->db->order('year','DESC');
|
$sql.= $this->db->order('year','DESC');
|
||||||
|
|||||||
@ -636,7 +636,7 @@ else
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else print '<tr><td>'.$langs->trans("NoneF").'</td></tr>';
|
else print '<tr '.$bc[false].'><td colspan="6">'.$langs->trans("NoneF").'</td></tr>';
|
||||||
|
|
||||||
print "</table>";
|
print "</table>";
|
||||||
$db->free($resql);
|
$db->free($resql);
|
||||||
|
|||||||
@ -129,6 +129,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both
|
|||||||
$search_montant_ht='';
|
$search_montant_ht='';
|
||||||
$search_montant_ttc='';
|
$search_montant_ttc='';
|
||||||
$search_status='';
|
$search_status='';
|
||||||
|
$day='';
|
||||||
$year='';
|
$year='';
|
||||||
$month='';
|
$month='';
|
||||||
}
|
}
|
||||||
@ -190,7 +191,7 @@ if ($search_refcustomer) $sql .= natural_search('f.ref_client', $search_refcusto
|
|||||||
if ($search_societe) $sql .= natural_search('s.nom', $search_societe);
|
if ($search_societe) $sql .= natural_search('s.nom', $search_societe);
|
||||||
if ($search_montant_ht != '') $sql.= natural_search('f.total', $search_montant_ht, 1);
|
if ($search_montant_ht != '') $sql.= natural_search('f.total', $search_montant_ht, 1);
|
||||||
if ($search_montant_ttc != '') $sql.= natural_search('f.total_ttc', $search_montant_ttc, 1);
|
if ($search_montant_ttc != '') $sql.= natural_search('f.total_ttc', $search_montant_ttc, 1);
|
||||||
if ($search_status != '') $sql.= " AND f.fk_statut = '".$db->escape($search_status)."'";
|
if ($search_status != '' && $search_status >= 0) $sql.= " AND f.fk_statut = ".$db->escape($search_status);
|
||||||
if ($month > 0)
|
if ($month > 0)
|
||||||
{
|
{
|
||||||
if ($year > 0 && empty($day))
|
if ($year > 0 && empty($day))
|
||||||
@ -350,7 +351,7 @@ if ($resql)
|
|||||||
print '<td class="liste_titre" align="right"><input class="flat" type="text" size="6" name="search_montant_ttc" value="'.$search_montant_ttc.'"></td>';
|
print '<td class="liste_titre" align="right"><input class="flat" type="text" size="6" name="search_montant_ttc" value="'.$search_montant_ttc.'"></td>';
|
||||||
print '<td class="liste_titre"></td>';
|
print '<td class="liste_titre"></td>';
|
||||||
print '<td class="liste_titre" align="right">';
|
print '<td class="liste_titre" align="right">';
|
||||||
$liststatus=array('0'=>$langs->trans("Draft"), '1'=>$langs->trans("Unpaid"), '2'=>$langs->trans("Paid"), '3'=>$langs->trans("Cancel"));
|
$liststatus=array('0'=>$langs->trans("BillShortStatusDraft"), '1'=>$langs->trans("BillShortStatusNotPaid"), '2'=>$langs->trans("BillShortStatusPaid"), '3'=>$langs->trans("BillShortStatusCanceled"));
|
||||||
print $form->selectarray('search_status', $liststatus, $search_status, 1);
|
print $form->selectarray('search_status', $liststatus, $search_status, 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="liste_titre" align="right"><input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
|
print '<td class="liste_titre" align="right"><input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
|
||||||
|
|||||||
@ -165,10 +165,12 @@ if ($action == 'presend' && GETPOST('sendmail'))
|
|||||||
'__CHECK_READ__' => '<img src="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-read.php?tag='.$obj2->tag.'&securitykey='.urlencode($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY).'" width="1" height="1" style="width:1px;height:1px" border="0"/>',
|
'__CHECK_READ__' => '<img src="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-read.php?tag='.$obj2->tag.'&securitykey='.urlencode($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY).'" width="1" height="1" style="width:1px;height:1px" border="0"/>',
|
||||||
//'__LASTNAME__' => $obj2->lastname,
|
//'__LASTNAME__' => $obj2->lastname,
|
||||||
//'__FIRSTNAME__' => $obj2->firstname,
|
//'__FIRSTNAME__' => $obj2->firstname,
|
||||||
'__REF__' => $object->ref,
|
'__FACREF__' => $object->ref, // For backward compatibility
|
||||||
|
'__REF__' => $object->ref,
|
||||||
'__REFCLIENT__' => $object->thirdparty->name
|
'__REFCLIENT__' => $object->thirdparty->name
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$subject=make_substitutions($subject, $substitutionarray);
|
||||||
$message=make_substitutions($message, $substitutionarray);
|
$message=make_substitutions($message, $substitutionarray);
|
||||||
|
|
||||||
$actiontypecode='AC_FAC';
|
$actiontypecode='AC_FAC';
|
||||||
@ -196,7 +198,7 @@ if ($action == 'presend' && GETPOST('sendmail'))
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//$result=$mailfile->sendfile();
|
$result=$mailfile->sendfile();
|
||||||
if ($result)
|
if ($result)
|
||||||
{
|
{
|
||||||
$resultmasssend.=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($from,2),$mailfile->getValidAddress($sendto,2)); // Must not contain "
|
$resultmasssend.=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($from,2),$mailfile->getValidAddress($sendto,2)); // Must not contain "
|
||||||
@ -246,12 +248,11 @@ if ($action == 'presend' && GETPOST('sendmail'))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$nbignored++;
|
$nbignored++;
|
||||||
$langs->load("other");
|
$langs->load("other");
|
||||||
$resultmasssend.='<div class="error">'.$langs->trans('ErrorCantReadFile',$file).'</div>';
|
$resultmasssend.='<div class="error">'.$langs->trans('ErrorCantReadFile',$file).'</div>';
|
||||||
dol_syslog('Failed to read file: '.$file);
|
dol_syslog('Failed to read file: '.$file, LOG_WARNING);
|
||||||
break ;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -263,7 +264,7 @@ if ($action == 'presend' && GETPOST('sendmail'))
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setEventMessage($langs->trans("NoRemindSent"), 'warnings');
|
setEventMessage($langs->trans("NoRemindSent"), 'warnings'); // May be object has no generated PDF file
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -556,9 +557,7 @@ if ($resql)
|
|||||||
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
|
||||||
$formmail = new FormMail($db);
|
$formmail = new FormMail($db);
|
||||||
|
|
||||||
print '<br>';
|
dol_fiche_head(null, '', $langs->trans("SendRemind"));
|
||||||
print_fiche_titre($langs->trans("SendRemind"),'','');
|
|
||||||
print '<br>';
|
|
||||||
|
|
||||||
$topicmail="MailTopicSendRemindUnpaidInvoices";
|
$topicmail="MailTopicSendRemindUnpaidInvoices";
|
||||||
$modelmail="facture_relance";
|
$modelmail="facture_relance";
|
||||||
@ -598,7 +597,8 @@ if ($resql)
|
|||||||
$formmail->param['returnurl']=$_SERVER["PHP_SELF"].'?id='.$object->id;
|
$formmail->param['returnurl']=$_SERVER["PHP_SELF"].'?id='.$object->id;
|
||||||
|
|
||||||
print $formmail->get_form();
|
print $formmail->get_form();
|
||||||
print '<br>'."\n";
|
|
||||||
|
dol_fiche_end();
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copyright (C) 2015 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2015 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||||
|
* Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.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
|
||||||
@ -606,7 +607,7 @@ if (! empty($conf->tax->enabled) && $user->rights->tax->charges->lire)
|
|||||||
$chargestatic->lib=$obj->libelle;
|
$chargestatic->lib=$obj->libelle;
|
||||||
$chargestatic->paye=$obj->paye;
|
$chargestatic->paye=$obj->paye;
|
||||||
print '<td>'.$chargestatic->getNomUrl(1).'</td>';
|
print '<td>'.$chargestatic->getNomUrl(1).'</td>';
|
||||||
print '<td align="center">'.dol_print_date($obj->date_ech,'day').'</td>';
|
print '<td align="center">'.dol_print_date($db->jdate($obj->date_ech),'day').'</td>';
|
||||||
print '<td align="right">'.price($obj->amount).'</td>';
|
print '<td align="right">'.price($obj->amount).'</td>';
|
||||||
print '<td align="right">'.price($obj->sumpaid).'</td>';
|
print '<td align="right">'.price($obj->sumpaid).'</td>';
|
||||||
print '<td align="center">'.$chargestatic->getLibStatut(3).'</td>';
|
print '<td align="center">'.$chargestatic->getLibStatut(3).'</td>';
|
||||||
@ -966,7 +967,7 @@ if ($resql)
|
|||||||
$obj = $db->fetch_object($resql);
|
$obj = $db->fetch_object($resql);
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
|
|
||||||
print "<tr ".$bc[$var]."><td>".dol_print_date($obj->da,"day")."</td>";
|
print "<tr ".$bc[$var]."><td>".dol_print_date($db->jdate($obj->da),"day")."</td>";
|
||||||
print '<td><a href="action/card.php">'.$obj->libelle.' '.$obj->label.'</a></td></tr>';
|
print '<td><a href="action/card.php">'.$obj->libelle.' '.$obj->label.'</a></td></tr>';
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -184,7 +184,7 @@ print "<td>".$langs->trans("Account")."</td>";
|
|||||||
print "<td>".$langs->trans("Type")."</td><td align='right'>".$langs->trans("Debit")."</td><td align='right'>".$langs->trans("Credit")."</td>";
|
print "<td>".$langs->trans("Type")."</td><td align='right'>".$langs->trans("Debit")."</td><td align='right'>".$langs->trans("Credit")."</td>";
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
$var=true;
|
$var=false;
|
||||||
|
|
||||||
$invoicestatic=new FactureFournisseur($db);
|
$invoicestatic=new FactureFournisseur($db);
|
||||||
$companystatic=new Fournisseur($db);
|
$companystatic=new Fournisseur($db);
|
||||||
|
|||||||
@ -215,7 +215,7 @@ print '<td>'.$langs->trans('Account').'</td>';
|
|||||||
print '<td>'.$langs->trans('Type').'</td><td align="right">'.$langs->trans('Debit').'</td><td align="right">'.$langs->trans('Credit').'</td>';
|
print '<td>'.$langs->trans('Type').'</td><td align="right">'.$langs->trans('Debit').'</td><td align="right">'.$langs->trans('Credit').'</td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
$var=true;
|
$var=false;
|
||||||
|
|
||||||
$invoicestatic=new Facture($db);
|
$invoicestatic=new Facture($db);
|
||||||
$companystatic=new Client($db);
|
$companystatic=new Client($db);
|
||||||
|
|||||||
@ -201,27 +201,27 @@ if ($action == 'valide')
|
|||||||
print '<table class="border" width="100%">';
|
print '<table class="border" width="100%">';
|
||||||
|
|
||||||
// Ref
|
// Ref
|
||||||
print '<tr><td valign="top" width="20%">'.$langs->trans('Ref').'</td><td colspan="3">'.$object->id.'</td></tr>';
|
print '<tr><td width="20%">'.$langs->trans('Ref').'</td><td colspan="3">'.$object->id.'</td></tr>';
|
||||||
|
|
||||||
// Date payment
|
// Date payment
|
||||||
print '<tr><td valign="top">'.$form->editfieldkey("Date",'datep',$object->date,$object,$user->rights->facture->paiement).'</td><td colspan="3">';
|
print '<tr><td>'.$form->editfieldkey("Date",'datep',$object->date,$object,$user->rights->facture->paiement).'</td><td colspan="3">';
|
||||||
print $form->editfieldval("Date",'datep',$object->date,$object,$user->rights->facture->paiement,'datepicker','',null,$langs->trans('PaymentDateUpdateSucceeded'));
|
print $form->editfieldval("Date",'datep',$object->date,$object,$user->rights->facture->paiement,'datepicker','',null,$langs->trans('PaymentDateUpdateSucceeded'));
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Payment type (VIR, LIQ, ...)
|
// Payment type (VIR, LIQ, ...)
|
||||||
$labeltype=$langs->trans("PaymentType".$object->type_code)!=("PaymentType".$object->type_code)?$langs->trans("PaymentType".$object->type_code):$object->type_libelle;
|
$labeltype=$langs->trans("PaymentType".$object->type_code)!=("PaymentType".$object->type_code)?$langs->trans("PaymentType".$object->type_code):$object->type_libelle;
|
||||||
print '<tr><td valign="top">'.$langs->trans('PaymentMode').'</td><td colspan="3">'.$labeltype.'</td></tr>';
|
print '<tr><td>'.$langs->trans('PaymentMode').'</td><td colspan="3">'.$labeltype.'</td></tr>';
|
||||||
|
|
||||||
// Payment numero
|
// Payment numero
|
||||||
print '<tr><td valign="top">'.$form->editfieldkey("Numero",'num_paiement',$object->numero,$object,$object->statut == 0 && $user->rights->fournisseur->facture->creer).'</td><td colspan="3">';
|
print '<tr><td>'.$form->editfieldkey("Numero",'num_paiement',$object->numero,$object,$object->statut == 0 && $user->rights->fournisseur->facture->creer).'</td><td colspan="3">';
|
||||||
print $form->editfieldval("Numero",'num_paiement',$object->numero,$object,$object->statut == 0 && $user->rights->fournisseur->facture->creer,'string','',null,$langs->trans('PaymentNumberUpdateSucceeded'));
|
print $form->editfieldval("Numero",'num_paiement',$object->numero,$object,$object->statut == 0 && $user->rights->fournisseur->facture->creer,'string','',null,$langs->trans('PaymentNumberUpdateSucceeded'));
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Amount
|
// Amount
|
||||||
print '<tr><td valign="top">'.$langs->trans('Amount').'</td><td colspan="3">'.price($object->montant,'',$langs,0,0,-1,$conf->currency).'</td></tr>';
|
print '<tr><td>'.$langs->trans('Amount').'</td><td colspan="3">'.price($object->montant,'',$langs,0,0,-1,$conf->currency).'</td></tr>';
|
||||||
|
|
||||||
// Note
|
// Note
|
||||||
print '<tr><td valign="top">'.$form->editfieldkey("Note",'note',$object->note,$object,$user->rights->facture->paiement).'</td><td colspan="3">';
|
print '<tr><td class="tdtop">'.$form->editfieldkey("Note",'note',$object->note,$object,$user->rights->facture->paiement).'</td><td colspan="3">';
|
||||||
print $form->editfieldval("Note",'note',$object->note,$object,$user->rights->facture->paiement,'textarea');
|
print $form->editfieldval("Note",'note',$object->note,$object,$user->rights->facture->paiement,'textarea');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
@ -250,7 +250,8 @@ if (! empty($conf->banque->enabled))
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
if($object->type_code == 'CHQ' && $bankline->fk_bordereau > 0) {
|
if ($object->type_code == 'CHQ' && $bankline->fk_bordereau > 0)
|
||||||
|
{
|
||||||
dol_include_once('/compta/paiement/cheque/class/remisecheque.class.php');
|
dol_include_once('/compta/paiement/cheque/class/remisecheque.class.php');
|
||||||
$bordereau = new RemiseCheque($db);
|
$bordereau = new RemiseCheque($db);
|
||||||
$bordereau->fetch($bankline->fk_bordereau);
|
$bordereau->fetch($bankline->fk_bordereau);
|
||||||
|
|||||||
@ -88,10 +88,6 @@ if ($action == 'setdate' && $user->rights->banque->cheque)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Actions
|
|
||||||
*/
|
|
||||||
|
|
||||||
if ($action == 'setrefext' && $user->rights->banque->cheque)
|
if ($action == 'setrefext' && $user->rights->banque->cheque)
|
||||||
{
|
{
|
||||||
$result = $object->fetch(GETPOST('id','int'));
|
$result = $object->fetch(GETPOST('id','int'));
|
||||||
@ -231,16 +227,18 @@ if ($action == 'confirm_reject_check' && $confirm == 'yes' && $user->rights->ban
|
|||||||
$rejected_check = GETPOST('bankid');
|
$rejected_check = GETPOST('bankid');
|
||||||
|
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
$paiement_id = $object->reject_check($rejected_check, $reject_date);
|
$paiement_id = $object->rejectCheck($rejected_check, $reject_date);
|
||||||
if ($paiement_id > 0)
|
if ($paiement_id > 0)
|
||||||
{
|
{
|
||||||
setEventMessage($langs->trans("CheckRejectedAndInvoicesReopened"));
|
setEventMessage($langs->trans("CheckRejectedAndInvoicesReopened"));
|
||||||
header("Location: ".DOL_URL_ROOT.'/compta/paiement/card.php?id='.$paiement_id);
|
//header("Location: ".DOL_URL_ROOT.'/compta/paiement/card.php?id='.$paiement_id);
|
||||||
exit;
|
//exit;
|
||||||
|
$action='';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setEventMessage($object->error, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
$action='';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -282,7 +280,7 @@ else if ($action == 'remove_file' && $user->rights->banque->cheque)
|
|||||||
|
|
||||||
$langs->load("other");
|
$langs->load("other");
|
||||||
|
|
||||||
$file=$dir.get_exdir($object->number,2,1,0,$object,'cheque') . GETPOST('file');
|
$file=$dir.get_exdir($object->number,0,1,0,$object,'cheque') . GETPOST('file');
|
||||||
$ret=dol_delete_file($file,0,0,0,$object);
|
$ret=dol_delete_file($file,0,0,0,$object);
|
||||||
if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('file')));
|
if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('file')));
|
||||||
else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('file')), 'errors');
|
else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('file')), 'errors');
|
||||||
@ -371,6 +369,9 @@ $accounts = array();
|
|||||||
|
|
||||||
if ($action == 'new')
|
if ($action == 'new')
|
||||||
{
|
{
|
||||||
|
$paymentstatic=new Paiement($db);
|
||||||
|
$accountlinestatic=new AccountLine($db);
|
||||||
|
|
||||||
$lines = array();
|
$lines = array();
|
||||||
|
|
||||||
$now=dol_now();
|
$now=dol_now();
|
||||||
@ -406,9 +407,11 @@ if ($action == 'new')
|
|||||||
print '</form>';
|
print '</form>';
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
$sql = "SELECT ba.rowid as bid, b.datec as datec, b.dateo as date, b.rowid as chqid, ";
|
$sql = "SELECT ba.rowid as bid, b.datec as datec, b.dateo as date, b.rowid as transactionid, ";
|
||||||
$sql.= " b.amount, ba.label, b.emetteur, b.num_chq, b.banque";
|
$sql.= " b.amount, ba.label, b.emetteur, b.num_chq, b.banque,";
|
||||||
|
$sql.= " p.rowid as paymentid";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
|
$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
|
||||||
|
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement as p ON p.fk_bank = b.rowid";
|
||||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bank_account as ba ON (b.fk_account = ba.rowid)";
|
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bank_account as ba ON (b.fk_account = ba.rowid)";
|
||||||
$sql.= " WHERE b.fk_type = 'CHQ'";
|
$sql.= " WHERE b.fk_type = 'CHQ'";
|
||||||
$sql.= " AND ba.entity IN (".getEntity('bank_account', 1).")";
|
$sql.= " AND ba.entity IN (".getEntity('bank_account', 1).")";
|
||||||
@ -430,7 +433,8 @@ if ($action == 'new')
|
|||||||
$lines[$obj->bid][$i]["emetteur"] = $obj->emetteur;
|
$lines[$obj->bid][$i]["emetteur"] = $obj->emetteur;
|
||||||
$lines[$obj->bid][$i]["numero"] = $obj->num_chq;
|
$lines[$obj->bid][$i]["numero"] = $obj->num_chq;
|
||||||
$lines[$obj->bid][$i]["banque"] = $obj->banque;
|
$lines[$obj->bid][$i]["banque"] = $obj->banque;
|
||||||
$lines[$obj->bid][$i]["id"] = $obj->chqid;
|
$lines[$obj->bid][$i]["id"] = $obj->transactionid;
|
||||||
|
$lines[$obj->bid][$i]["paymentid"] = $obj->paymentid;
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -473,6 +477,8 @@ if ($action == 'new')
|
|||||||
print '<td style="min-width: 200px">'.$langs->trans("CheckTransmitter")."</td>\n";
|
print '<td style="min-width: 200px">'.$langs->trans("CheckTransmitter")."</td>\n";
|
||||||
print '<td style="min-width: 200px">'.$langs->trans("Bank")."</td>\n";
|
print '<td style="min-width: 200px">'.$langs->trans("Bank")."</td>\n";
|
||||||
print '<td align="right" width="100px">'.$langs->trans("Amount")."</td>\n";
|
print '<td align="right" width="100px">'.$langs->trans("Amount")."</td>\n";
|
||||||
|
print '<td align="center" width="100px">'.$langs->trans("Payment")."</td>\n";
|
||||||
|
print '<td align="center" width="100px">'.$langs->trans("LineRecord")."</td>\n";
|
||||||
print '<td align="center" width="100px">'.$langs->trans("Select")."<br>";
|
print '<td align="center" width="100px">'.$langs->trans("Select")."<br>";
|
||||||
if ($conf->use_javascript_ajax) print '<a href="#" id="checkall_'.$bid.'">'.$langs->trans("All").'</a> / <a href="#" id="checknone_'.$bid.'">'.$langs->trans("None").'</a>';
|
if ($conf->use_javascript_ajax) print '<a href="#" id="checkall_'.$bid.'">'.$langs->trans("All").'</a> / <a href="#" id="checknone_'.$bid.'">'.$langs->trans("None").'</a>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
@ -495,7 +501,34 @@ if ($action == 'new')
|
|||||||
print '<td>'.$value["numero"]."</td>\n";
|
print '<td>'.$value["numero"]."</td>\n";
|
||||||
print '<td>'.$value["emetteur"]."</td>\n";
|
print '<td>'.$value["emetteur"]."</td>\n";
|
||||||
print '<td>'.$value["banque"]."</td>\n";
|
print '<td>'.$value["banque"]."</td>\n";
|
||||||
print '<td align="right">'.price($value["amount"]).'</td>';
|
print '<td align="right">'.price($value["amount"], 0, $langs, 1, -1, -1, $conf->currency).'</td>';
|
||||||
|
|
||||||
|
// Link to payment
|
||||||
|
print '<td align="center">';
|
||||||
|
$paymentstatic->id=$value["paymentid"];
|
||||||
|
$paymentstatic->ref=$value["paymentid"];
|
||||||
|
if ($paymentstatic->id)
|
||||||
|
{
|
||||||
|
print $paymentstatic->getNomUrl(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print ' ';
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
// Link to bank transaction
|
||||||
|
print '<td align="center">';
|
||||||
|
$accountlinestatic->rowid=$value["id"];
|
||||||
|
if ($accountlinestatic->rowid)
|
||||||
|
{
|
||||||
|
print $accountlinestatic->getNomUrl(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print ' ';
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
print '<td align="center">';
|
print '<td align="center">';
|
||||||
print '<input id="'.$value["id"].'" class="flat checkforremise_'.$bid.'" checked type="checkbox" name="toRemise[]" value="'.$value["id"].'">';
|
print '<input id="'.$value["id"].'" class="flat checkforremise_'.$bid.'" checked type="checkbox" name="toRemise[]" value="'.$value["id"].'">';
|
||||||
print '</td>' ;
|
print '</td>' ;
|
||||||
@ -581,6 +614,7 @@ else
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
// External ref
|
// External ref
|
||||||
|
/* Ext ref are not visible field on standard usage
|
||||||
print '<tr><td>';
|
print '<tr><td>';
|
||||||
|
|
||||||
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
||||||
@ -605,7 +639,8 @@ else
|
|||||||
|
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
*/
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans('Account').'</td><td colspan="2">';
|
print '<tr><td>'.$langs->trans('Account').'</td><td colspan="2">';
|
||||||
print $accountstatic->getNomUrl(1);
|
print $accountstatic->getNomUrl(1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
@ -626,7 +661,7 @@ else
|
|||||||
print '</table><br>';
|
print '</table><br>';
|
||||||
|
|
||||||
|
|
||||||
// Liste des cheques
|
// List of cheques
|
||||||
$sql = "SELECT b.rowid, b.amount, b.num_chq, b.emetteur,";
|
$sql = "SELECT b.rowid, b.amount, b.num_chq, b.emetteur,";
|
||||||
$sql.= " b.dateo as date, b.datec as datec, b.banque,";
|
$sql.= " b.dateo as date, b.datec as datec, b.banque,";
|
||||||
$sql.= " p.rowid as pid, ba.rowid as bid, p.statut";
|
$sql.= " p.rowid as pid, ba.rowid as bid, p.statut";
|
||||||
@ -636,7 +671,7 @@ else
|
|||||||
$sql.= " WHERE ba.entity IN (".getEntity('bank_account', 1).")";
|
$sql.= " WHERE ba.entity IN (".getEntity('bank_account', 1).")";
|
||||||
$sql.= " AND b.fk_type= 'CHQ'";
|
$sql.= " AND b.fk_type= 'CHQ'";
|
||||||
$sql.= " AND b.fk_bordereau = ".$object->id;
|
$sql.= " AND b.fk_bordereau = ".$object->id;
|
||||||
$sql.= " ORDER BY $sortfield $sortorder";
|
$sql.= $db->order($sortfield, $sortorder);
|
||||||
|
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
@ -646,6 +681,7 @@ else
|
|||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
|
|
||||||
$param="&id=".$object->id;
|
$param="&id=".$object->id;
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print_liste_field_titre($langs->trans("Cheques"),'','','','','width="30"');
|
print_liste_field_titre($langs->trans("Cheques"),'','','','','width="30"');
|
||||||
print_liste_field_titre($langs->trans("DateChequeReceived"),$_SERVER["PHP_SELF"],"b.dateo,b.rowid", "",$param,'align="center"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("DateChequeReceived"),$_SERVER["PHP_SELF"],"b.dateo,b.rowid", "",$param,'align="center"',$sortfield,$sortorder);
|
||||||
@ -653,9 +689,9 @@ else
|
|||||||
print_liste_field_titre($langs->trans("CheckTransmitter"),$_SERVER["PHP_SELF"],"b.emetteur", "",$param,"",$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("CheckTransmitter"),$_SERVER["PHP_SELF"],"b.emetteur", "",$param,"",$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans("Bank"),$_SERVER["PHP_SELF"],"b.banque", "",$param,"",$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("Bank"),$_SERVER["PHP_SELF"],"b.banque", "",$param,"",$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans("Amount"),$_SERVER["PHP_SELF"],"b.amount", "",$param,'align="right"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("Amount"),$_SERVER["PHP_SELF"],"b.amount", "",$param,'align="right"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans("LineRecord"),$_SERVER["PHP_SELF"],"b.rowid", "",$param,'align="center"',$sortfield,$sortorder);
|
|
||||||
print_liste_field_titre($langs->trans("Payment"),$_SERVER["PHP_SELF"],"p.rowid", "",$param,'align="center"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("Payment"),$_SERVER["PHP_SELF"],"p.rowid", "",$param,'align="center"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch ');
|
print_liste_field_titre($langs->trans("LineRecord"),$_SERVER["PHP_SELF"],"b.rowid", "",$param,'align="center"',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre('');
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
$i=1;
|
$i=1;
|
||||||
$var=false;
|
$var=false;
|
||||||
@ -673,17 +709,7 @@ else
|
|||||||
print '<td>'.dol_trunc($objp->emetteur,24).'</td>';
|
print '<td>'.dol_trunc($objp->emetteur,24).'</td>';
|
||||||
print '<td>'.dol_trunc($objp->banque,24).'</td>';
|
print '<td>'.dol_trunc($objp->banque,24).'</td>';
|
||||||
print '<td align="right">'.price($objp->amount).'</td>';
|
print '<td align="right">'.price($objp->amount).'</td>';
|
||||||
print '<td align="center">';
|
// Link to payment
|
||||||
$accountlinestatic->rowid=$objp->rowid;
|
|
||||||
if ($accountlinestatic->rowid)
|
|
||||||
{
|
|
||||||
print $accountlinestatic->getNomUrl(1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
print ' ';
|
|
||||||
}
|
|
||||||
print '</td>';
|
|
||||||
print '<td align="center">';
|
print '<td align="center">';
|
||||||
$paymentstatic->id=$objp->pid;
|
$paymentstatic->id=$objp->pid;
|
||||||
$paymentstatic->ref=$objp->pid;
|
$paymentstatic->ref=$objp->pid;
|
||||||
@ -696,14 +722,33 @@ else
|
|||||||
print ' ';
|
print ' ';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
// Link to bank transaction
|
||||||
|
print '<td align="center">';
|
||||||
|
$accountlinestatic->rowid=$objp->rowid;
|
||||||
|
if ($accountlinestatic->rowid)
|
||||||
|
{
|
||||||
|
print $accountlinestatic->getNomUrl(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print ' ';
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
// Action button
|
||||||
|
print '<td align="right">';
|
||||||
if ($object->statut == 0)
|
if ($object->statut == 0)
|
||||||
{
|
{
|
||||||
print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=remove&lineid='.$objp->rowid.'">'.img_delete().'</a>';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=remove&lineid='.$objp->rowid.'">'.img_delete().'</a>';
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=reject_check&lineid='.$objp->rowid.'">'.img_picto($langs->trans("RejectCheck"),'disable').'</a></td>';
|
|
||||||
}
|
}
|
||||||
else if($objp->statut == 2) {
|
if ($object->statut == 1 && $objp->statut != 2)
|
||||||
print '<td align="right">'.img_picto($langs->trans('CheckRejected'),'statut8').'</a></td>';
|
{
|
||||||
|
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=reject_check&lineid='.$objp->rowid.'">'.img_picto($langs->trans("RejectCheck"),'disable').'</a>';
|
||||||
|
}
|
||||||
|
if ($objp->statut == 2)
|
||||||
|
{
|
||||||
|
print ' '.img_picto($langs->trans('CheckRejected'),'statut8').'</a>';
|
||||||
}
|
}
|
||||||
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
$i++;
|
$i++;
|
||||||
@ -751,7 +796,7 @@ if ($action != 'new')
|
|||||||
if ($object->statut == 1)
|
if ($object->statut == 1)
|
||||||
{
|
{
|
||||||
$filename=dol_sanitizeFileName($object->ref);
|
$filename=dol_sanitizeFileName($object->ref);
|
||||||
$filedir=$dir.get_exdir($object->number,2,1,0,$object,'cheque') . dol_sanitizeFileName($object->ref);
|
$filedir=$dir.get_exdir($object->number,0,1,0,$object,'cheque') . dol_sanitizeFileName($object->ref);
|
||||||
$urlsource=$_SERVER["PHP_SELF"]."?id=".$object->id;
|
$urlsource=$_SERVER["PHP_SELF"]."?id=".$object->id;
|
||||||
|
|
||||||
$formfile->show_documents('remisecheque', $filename, $filedir, $urlsource, 1, 1);
|
$formfile->show_documents('remisecheque', $filename, $filedir, $urlsource, 1, 1);
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
/* Copyright (C) 2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
* Copyright (C) 2007-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2007-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2011-2015 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
|
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -548,7 +548,7 @@ class RemiseCheque extends CommonObject
|
|||||||
// We save charset_output to restore it because write_file can change it if needed for
|
// We save charset_output to restore it because write_file can change it if needed for
|
||||||
// output format that does not support UTF8.
|
// output format that does not support UTF8.
|
||||||
$sav_charseSupprimert_output=$outputlangs->charset_output;
|
$sav_charseSupprimert_output=$outputlangs->charset_output;
|
||||||
$result=$docmodel->write_file($conf->banque->dir_output.'/bordereau', $this->number, $outputlangs);
|
$result=$docmodel->write_file($this, $conf->banque->dir_output.'/bordereau', $this->number, $outputlangs);
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
//$outputlangs->charset_output=$sav_charset_output;
|
//$outputlangs->charset_output=$sav_charset_output;
|
||||||
@ -661,23 +661,38 @@ class RemiseCheque extends CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check rejection management
|
* Check return management
|
||||||
* Reopen linked invoices and saves a new negative payment
|
* Reopen linked invoices and create a new negative payment.
|
||||||
*
|
*
|
||||||
* @param int $bank_id Id of bank line concerned
|
* @param int $bank_id Id of bank transaction line concerned
|
||||||
* @param date $rejection_date Date to use on the negative payment
|
* @param date $rejection_date Date to use on the negative payment
|
||||||
* @return int
|
* @return int Id of negative payment line created
|
||||||
*/
|
*/
|
||||||
function reject_check($bank_id, $rejection_date)
|
function rejectCheck($bank_id, $rejection_date)
|
||||||
{
|
{
|
||||||
global $db, $user;
|
global $db, $user;
|
||||||
|
|
||||||
$payment = new Paiement($db);
|
$payment = new Paiement($db);
|
||||||
$payment->fetch(0,0,$bank_id);
|
$payment->fetch(0,0,$bank_id);
|
||||||
|
|
||||||
|
$bankline = new AccountLine($db);
|
||||||
|
$bankline->fetch($bank_id);
|
||||||
|
|
||||||
|
/* Conciliation is allowed because when check is returned, a new line is created onto bank transaction log.
|
||||||
|
if ($bankline->rappro)
|
||||||
|
{
|
||||||
|
$this->error='ActionRefusedLineAlreadyConciliated';
|
||||||
|
return -1;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
$this->db->begin();
|
||||||
|
|
||||||
|
// Not conciliated, we can delete it
|
||||||
|
//$bankline->delete($user); // We delete
|
||||||
|
|
||||||
$bankaccount = $payment->fk_account;
|
$bankaccount = $payment->fk_account;
|
||||||
|
|
||||||
// Get invoice list to reopen them
|
// Get invoices list to reopen them
|
||||||
$sql = 'SELECT pf.fk_facture, pf.amount';
|
$sql = 'SELECT pf.fk_facture, pf.amount';
|
||||||
$sql.= ' FROM '.MAIN_DB_PREFIX.'paiement_facture as pf';
|
$sql.= ' FROM '.MAIN_DB_PREFIX.'paiement_facture as pf';
|
||||||
$sql.= ' WHERE pf.fk_paiement = '.$payment->id;
|
$sql.= ' WHERE pf.fk_paiement = '.$payment->id;
|
||||||
@ -700,27 +715,45 @@ class RemiseCheque extends CommonObject
|
|||||||
$rejectedPayment->amounts[$obj->fk_facture] = price2num($obj->amount) * -1;
|
$rejectedPayment->amounts[$obj->fk_facture] = price2num($obj->amount) * -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($rejectedPayment->create($user) > 0)
|
$result = $rejectedPayment->create($user);
|
||||||
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
$result=$rejectedPayment->addPaymentToBank($user,'payment','(CheckRejected)',$bankaccount,'','');
|
// We created a negative payment, we also add the line as bank transaction
|
||||||
|
$result=$rejectedPayment->addPaymentToBank($user,'payment','(CheckRejected)',$bankaccount,'','');
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
$payment->reject();
|
$result = $payment->reject();
|
||||||
return $rejectedPayment->id;
|
if ($result > 0)
|
||||||
|
{
|
||||||
|
$this->db->commit();
|
||||||
|
return $rejectedPayment->id;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->db->rollback();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
$this->error = $rejectedPayment->error;
|
||||||
|
$this->errors = $rejectedPayment->errors;
|
||||||
|
$this->db->rollback();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
$this->error = $rejectedPayment->error;
|
||||||
|
$this->errors = $rejectedPayment->errors;
|
||||||
|
$this->db->rollback();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$this->error=$this->db->error();
|
$this->error=$this->db->lasterror();
|
||||||
|
$this->db->rollback();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -819,7 +852,6 @@ class RemiseCheque extends CommonObject
|
|||||||
$resql=$this->db->query($sql);
|
$resql=$this->db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
$this->date_bordereau = $date;
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@ -120,7 +120,7 @@ if ($resql)
|
|||||||
print '<table class="liste" width="100%">';
|
print '<table class="liste" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"bc.number","",$params,"",$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"bc.number","",$params,"",$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"],"dp","",$params,'align="center"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("DateCreation"),$_SERVER["PHP_SELF"],"dp","",$params,'align="center"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans("Account"),$_SERVER["PHP_SELF"],"ba.label","",$params,"",$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("Account"),$_SERVER["PHP_SELF"],"ba.label","",$params,"",$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans("NbOfCheques"),$_SERVER["PHP_SELF"],"bc.nbcheque","",$params,'align="right"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("NbOfCheques"),$_SERVER["PHP_SELF"],"bc.nbcheque","",$params,'align="right"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans("Amount"),$_SERVER["PHP_SELF"],"bc.amount","",$params,'align="right"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("Amount"),$_SERVER["PHP_SELF"],"bc.amount","",$params,'align="right"',$sortfield,$sortorder);
|
||||||
@ -164,7 +164,7 @@ if ($resql)
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
// Date
|
// Date
|
||||||
print '<td align="center">'.dol_print_date($db->jdate($objp->dp),'day').'</td>';
|
print '<td align="center">'.dol_print_date($db->jdate($objp->dp),'day').'</td>'; // TODO Use date hour
|
||||||
|
|
||||||
// Bank
|
// Bank
|
||||||
print '<td>';
|
print '<td>';
|
||||||
|
|||||||
@ -697,9 +697,11 @@ class Paiement extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* \brief Information sur l'objet
|
* Information sur l'objet
|
||||||
* \param id id du paiement dont il faut afficher les infos
|
*
|
||||||
|
* @param int $id id du paiement dont il faut afficher les infos
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
function info($id)
|
function info($id)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -28,6 +28,8 @@
|
|||||||
require '../../main.inc.php';
|
require '../../main.inc.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
||||||
|
|
||||||
$langs->load("bills");
|
$langs->load("bills");
|
||||||
$langs->load("compta");
|
$langs->load("compta");
|
||||||
@ -36,6 +38,10 @@ $langs->load("compta");
|
|||||||
$facid =GETPOST('facid','int');
|
$facid =GETPOST('facid','int');
|
||||||
$socid =GETPOST('socid','int');
|
$socid =GETPOST('socid','int');
|
||||||
$userid=GETPOST('userid','int');
|
$userid=GETPOST('userid','int');
|
||||||
|
$day = GETPOST('day','int');
|
||||||
|
$month = GETPOST('month','int');
|
||||||
|
$year = GETPOST('year','int');
|
||||||
|
|
||||||
if ($user->societe_id) $socid=$user->societe_id;
|
if ($user->societe_id) $socid=$user->societe_id;
|
||||||
$result = restrictedArea($user, 'facture',$facid,'');
|
$result = restrictedArea($user, 'facture',$facid,'');
|
||||||
|
|
||||||
@ -66,6 +72,9 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both
|
|||||||
$search_amount="";
|
$search_amount="";
|
||||||
$search_paymenttype="";
|
$search_paymenttype="";
|
||||||
$search_company="";
|
$search_company="";
|
||||||
|
$day='';
|
||||||
|
$year='';
|
||||||
|
$month='';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
|
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
|
||||||
@ -81,6 +90,7 @@ $extrafields = new ExtraFields($db);
|
|||||||
llxHeader('', $langs->trans('ListPayment'));
|
llxHeader('', $langs->trans('ListPayment'));
|
||||||
|
|
||||||
$form=new Form($db);
|
$form=new Form($db);
|
||||||
|
$formother=new FormOther($db);
|
||||||
|
|
||||||
if (GETPOST("orphelins"))
|
if (GETPOST("orphelins"))
|
||||||
{
|
{
|
||||||
@ -141,6 +151,19 @@ else
|
|||||||
else $sql.= " AND f.fk_user_author = ".$userid;
|
else $sql.= " AND f.fk_user_author = ".$userid;
|
||||||
}
|
}
|
||||||
// Search criteria
|
// Search criteria
|
||||||
|
if ($month > 0)
|
||||||
|
{
|
||||||
|
if ($year > 0 && empty($day))
|
||||||
|
$sql.= " AND p.datep BETWEEN '".$db->idate(dol_get_first_day($year,$month,false))."' AND '".$db->idate(dol_get_last_day($year,$month,false))."'";
|
||||||
|
else if ($year > 0 && ! empty($day))
|
||||||
|
$sql.= " AND p.datep BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $month, $day, $year))."' AND '".$db->idate(dol_mktime(23, 59, 59, $month, $day, $year))."'";
|
||||||
|
else
|
||||||
|
$sql.= " AND date_format(p.datep, '%m') = '".$month."'";
|
||||||
|
}
|
||||||
|
else if ($year > 0)
|
||||||
|
{
|
||||||
|
$sql.= " AND p.datep BETWEEN '".$db->idate(dol_get_first_day($year,1,false))."' AND '".$db->idate(dol_get_last_day($year,12,false))."'";
|
||||||
|
}
|
||||||
if ($search_ref > 0) $sql .=" AND p.rowid=".$search_ref;
|
if ($search_ref > 0) $sql .=" AND p.rowid=".$search_ref;
|
||||||
if ($search_account > 0) $sql .=" AND b.fk_account=".$search_account;
|
if ($search_account > 0) $sql .=" AND b.fk_account=".$search_account;
|
||||||
if ($search_paymenttype != "") $sql .=" AND c.code='".$db->escape($search_paymenttype)."'";
|
if ($search_paymenttype != "") $sql .=" AND c.code='".$db->escape($search_paymenttype)."'";
|
||||||
@ -194,7 +217,11 @@ if ($resql)
|
|||||||
print '<td align="left">';
|
print '<td align="left">';
|
||||||
print '<input class="flat" type="text" size="4" name="search_ref" value="'.$search_ref.'">';
|
print '<input class="flat" type="text" size="4" name="search_ref" value="'.$search_ref.'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td> </td>';
|
print '<td align="center">';
|
||||||
|
if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="day" value="'.$day.'">';
|
||||||
|
print '<input class="flat" type="text" size="1" maxlength="2" name="month" value="'.$month.'">';
|
||||||
|
$formother->select_year($year?$year:-1,'year',1, 20, 5);
|
||||||
|
print '</td>';
|
||||||
print '<td align="left">';
|
print '<td align="left">';
|
||||||
print '<input class="flat" type="text" size="6" name="search_company" value="'.$search_company.'">';
|
print '<input class="flat" type="text" size="6" name="search_company" value="'.$search_company.'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|||||||
@ -309,7 +309,7 @@ if ($modecompta == 'CREANCES-DETTES')
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$sql = "SELECT s.nom, s.rowid as socid, sum(pf.amount) as amount_ttc";
|
$sql = "SELECT s.nom as name, s.rowid as socid, sum(pf.amount) as amount_ttc";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."paiementfourn as p";
|
$sql.= " FROM ".MAIN_DB_PREFIX."paiementfourn as p";
|
||||||
$sql.= ", ".MAIN_DB_PREFIX."paiementfourn_facturefourn as pf";
|
$sql.= ", ".MAIN_DB_PREFIX."paiementfourn_facturefourn as pf";
|
||||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."facture_fourn as f";
|
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."facture_fourn as f";
|
||||||
@ -552,7 +552,7 @@ if ($mysoc->tva_assuj == 'franchise') // Non assujeti
|
|||||||
* Salaries
|
* Salaries
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ($conf->salaries->enabled)
|
if (! empty($conf->salaries->enabled))
|
||||||
{
|
{
|
||||||
if ($modecompta == 'CREANCES-DETTES') {
|
if ($modecompta == 'CREANCES-DETTES') {
|
||||||
$column = 'p.datev';
|
$column = 'p.datev';
|
||||||
@ -626,13 +626,16 @@ if ($conf->salaries->enabled)
|
|||||||
* Donation
|
* Donation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ($conf->donation->enabled)
|
if (! empty($conf->don->enabled))
|
||||||
{
|
{
|
||||||
print '<tr><td colspan="4">'.$langs->trans("Donation").'</td></tr>';
|
print '<tr><td colspan="4">'.$langs->trans("Donation").'</td></tr>';
|
||||||
$sql = "SELECT p.societe as name, p.firstname, p.lastname, date_format(p.datedon,'%Y-%m') as dm, sum(p.amount) as amount";
|
$sql = "SELECT p.societe as name, p.firstname, p.lastname, date_format(p.datedon,'%Y-%m') as dm, sum(p.amount) as amount";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."don as p";
|
$sql.= " FROM ".MAIN_DB_PREFIX."don as p";
|
||||||
$sql.= " WHERE p.entity = ".$conf->entity;
|
$sql.= " WHERE p.entity = ".$conf->entity;
|
||||||
$sql.= " AND fk_statut=2";
|
if ($modecompta == 'CREANCES-DETTES')
|
||||||
|
$sql.= " AND fk_statut in (1,2)";
|
||||||
|
else
|
||||||
|
$sql.= " AND fk_statut=2";
|
||||||
if (! empty($date_start) && ! empty($date_end))
|
if (! empty($date_start) && ! empty($date_end))
|
||||||
$sql.= " AND p.datedon >= '".$db->idate($date_start)."' AND p.datedon <= '".$db->idate($date_end)."'";
|
$sql.= " AND p.datedon >= '".$db->idate($date_start)."' AND p.datedon <= '".$db->idate($date_end)."'";
|
||||||
$sql.= " GROUP BY p.societe, p.firstname, p.lastname, dm";
|
$sql.= " GROUP BY p.societe, p.firstname, p.lastname, dm";
|
||||||
|
|||||||
@ -477,85 +477,93 @@ $reshook=$hookmanager->executeHooks('addStatisticLine',$parameters,$object,$acti
|
|||||||
/*
|
/*
|
||||||
* Salaries
|
* Salaries
|
||||||
*/
|
*/
|
||||||
|
if (! empty($conf->salaries->enabled))
|
||||||
if ($modecompta == 'CREANCES-DETTES') {
|
|
||||||
$column = 'p.datev';
|
|
||||||
} else {
|
|
||||||
$column = 'p.datep';
|
|
||||||
}
|
|
||||||
|
|
||||||
$subtotal_ht = 0;
|
|
||||||
$subtotal_ttc = 0;
|
|
||||||
$sql = "SELECT p.label as nom, date_format($column,'%Y-%m') as dm, sum(p.amount) as amount";
|
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."payment_salary as p";
|
|
||||||
$sql.= " WHERE p.entity = ".$conf->entity;
|
|
||||||
$sql.= " GROUP BY p.label, dm";
|
|
||||||
|
|
||||||
dol_syslog("get social salaries payments");
|
|
||||||
$result=$db->query($sql);
|
|
||||||
if ($result)
|
|
||||||
{
|
{
|
||||||
$num = $db->num_rows($result);
|
if ($modecompta == 'CREANCES-DETTES') {
|
||||||
$var=false;
|
$column = 'p.datev';
|
||||||
$i = 0;
|
} else {
|
||||||
if ($num)
|
$column = 'p.datep';
|
||||||
{
|
}
|
||||||
while ($i < $num)
|
|
||||||
{
|
$subtotal_ht = 0;
|
||||||
$obj = $db->fetch_object($result);
|
$subtotal_ttc = 0;
|
||||||
|
$sql = "SELECT p.label as nom, date_format($column,'%Y-%m') as dm, sum(p.amount) as amount";
|
||||||
if (! isset($decaiss[$obj->dm])) $decaiss[$obj->dm]=0;
|
$sql.= " FROM ".MAIN_DB_PREFIX."payment_salary as p";
|
||||||
$decaiss[$obj->dm] += $obj->amount;
|
$sql.= " WHERE p.entity = ".$conf->entity;
|
||||||
|
$sql.= " GROUP BY p.label, dm";
|
||||||
if (! isset($decaiss_ttc[$obj->dm])) $decaiss_ttc[$obj->dm]=0;
|
|
||||||
$decaiss_ttc[$obj->dm] += $obj->amount;
|
dol_syslog("get social salaries payments");
|
||||||
|
$result=$db->query($sql);
|
||||||
$i++;
|
if ($result)
|
||||||
}
|
{
|
||||||
}
|
$num = $db->num_rows($result);
|
||||||
}
|
$var=false;
|
||||||
else
|
$i = 0;
|
||||||
{
|
if ($num)
|
||||||
dol_print_error($db);
|
{
|
||||||
|
while ($i < $num)
|
||||||
|
{
|
||||||
|
$obj = $db->fetch_object($result);
|
||||||
|
|
||||||
|
if (! isset($decaiss[$obj->dm])) $decaiss[$obj->dm]=0;
|
||||||
|
$decaiss[$obj->dm] += $obj->amount;
|
||||||
|
|
||||||
|
if (! isset($decaiss_ttc[$obj->dm])) $decaiss_ttc[$obj->dm]=0;
|
||||||
|
$decaiss_ttc[$obj->dm] += $obj->amount;
|
||||||
|
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dol_print_error($db);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* get dunning paiement
|
* Donation get dunning paiement
|
||||||
*/
|
*/
|
||||||
$subtotal_ht = 0;
|
if (! empty($conf->don->enabled))
|
||||||
$subtotal_ttc = 0;
|
|
||||||
$sql = "SELECT p.societe as nom, p.firstname, p.lastname, date_format(p.datedon,'%Y-%m') as dm, sum(p.amount) as amount";
|
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."don as p";
|
|
||||||
$sql.= " WHERE p.entity = ".$conf->entity;
|
|
||||||
$sql.= " AND fk_statut=2";
|
|
||||||
$sql.= " GROUP BY p.societe, p.firstname, p.lastname, dm";
|
|
||||||
|
|
||||||
dol_syslog("get social salaries payments");
|
|
||||||
$result=$db->query($sql);
|
|
||||||
if ($result)
|
|
||||||
{
|
{
|
||||||
$num = $db->num_rows($result);
|
$subtotal_ht = 0;
|
||||||
$var=false;
|
$subtotal_ttc = 0;
|
||||||
$i = 0;
|
$sql = "SELECT p.societe as nom, p.firstname, p.lastname, date_format(p.datedon,'%Y-%m') as dm, sum(p.amount) as amount";
|
||||||
if ($num)
|
$sql.= " FROM ".MAIN_DB_PREFIX."don as p";
|
||||||
{
|
$sql.= " WHERE p.entity = ".$conf->entity;
|
||||||
while ($i < $num)
|
if ($modecompta == 'CREANCES-DETTES')
|
||||||
{
|
$sql.= " AND fk_statut in (1,2)";
|
||||||
$obj = $db->fetch_object($result);
|
else
|
||||||
|
$sql.= " AND fk_statut=2";
|
||||||
if (! isset($encaiss[$obj->dm])) $encaiss[$obj->dm]=0;
|
$sql.= " GROUP BY p.societe, p.firstname, p.lastname, dm";
|
||||||
$encaiss[$obj->dm] += $obj->amount;
|
|
||||||
|
dol_syslog("get donation payments");
|
||||||
if (! isset($encaiss_ttc[$obj->dm])) $encaiss_ttc[$obj->dm]=0;
|
$result=$db->query($sql);
|
||||||
$encaiss_ttc[$obj->dm] += $obj->amount;
|
if ($result)
|
||||||
|
{
|
||||||
$i++;
|
$num = $db->num_rows($result);
|
||||||
}
|
$var=false;
|
||||||
}
|
$i = 0;
|
||||||
}
|
if ($num)
|
||||||
else
|
{
|
||||||
{
|
while ($i < $num)
|
||||||
dol_print_error($db);
|
{
|
||||||
|
$obj = $db->fetch_object($result);
|
||||||
|
|
||||||
|
if (! isset($encaiss[$obj->dm])) $encaiss[$obj->dm]=0;
|
||||||
|
$encaiss[$obj->dm] += $obj->amount;
|
||||||
|
|
||||||
|
if (! isset($encaiss_ttc[$obj->dm])) $encaiss_ttc[$obj->dm]=0;
|
||||||
|
$encaiss_ttc[$obj->dm] += $obj->amount;
|
||||||
|
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dol_print_error($db);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@ -191,17 +191,18 @@ if ($result)
|
|||||||
// Type
|
// Type
|
||||||
print '<td>'.$langs->trans("PaymentTypeShort".$obj->payment_code).' '.$obj->num_payment.'</td>';
|
print '<td>'.$langs->trans("PaymentTypeShort".$obj->payment_code).' '.$obj->num_payment.'</td>';
|
||||||
// Amount
|
// Amount
|
||||||
print "<td align=\"right\">".price($obj->amount,0,$outputlangs,1,-1,-1,$conf->currency)."</td>";
|
print "<td align=\"right\">".price($obj->amount)."</td>";
|
||||||
print "<td> </td>";
|
print "<td></td>";
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
$total = $total + $obj->amount;
|
$total = $total + $obj->amount;
|
||||||
|
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<tr class="liste_total"><td colspan="6" class="liste_total">'.$langs->trans("Total").'</td>';
|
print '<tr class="liste_total"><td colspan="6" class="liste_total">'.$langs->trans("Total").'</td>';
|
||||||
print '<td class="liste_total" align="right">'.price($total,0,$outputlangs,1,-1,-1,$conf->currency)."</td>";
|
print '<td class="liste_total" align="right">'.price($total,0,$outputlangs,1,-1,-1,$conf->currency)."</td>";
|
||||||
print "<td> </td></tr>";
|
print "<td></td></tr>";
|
||||||
|
|
||||||
print "</table>";
|
print "</table>";
|
||||||
|
|
||||||
|
|||||||
@ -100,6 +100,10 @@ if ($user->societe_id) {
|
|||||||
}
|
}
|
||||||
$result = restrictedArea($user, 'tax', '', '', 'charges');
|
$result = restrictedArea($user, 'tax', '', '', 'charges');
|
||||||
|
|
||||||
|
// Define modecompta ('CREANCES-DETTES' or 'RECETTES-DEPENSES')
|
||||||
|
$modecompta = $conf->global->ACCOUNTING_MODE;
|
||||||
|
if (GETPOST("modecompta")) $modecompta=GETPOST("modecompta");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -292,7 +296,14 @@ if (is_array($coll_list)) {
|
|||||||
} else {
|
} else {
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
if ($coll_list == -1) {
|
if ($coll_list == -1) {
|
||||||
print '<tr><td colspan="5">' . $langs->trans("ErrorNoAccountancyModuleLoaded") . '</td></tr>';
|
if ($modecompta == 'CREANCES-DETTES')
|
||||||
|
{
|
||||||
|
print '<tr><td colspan="5">' . $langs->trans("ErrorNoAccountancyModuleLoaded") . '</td></tr>';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print '<tr><td colspan="5">' . $langs->trans("FeatureNotYetAvailable") . '</td></tr>';
|
||||||
|
}
|
||||||
} else if ($coll_list == -2) {
|
} else if ($coll_list == -2) {
|
||||||
print '<tr><td colspan="5">' . $langs->trans("FeatureNotYetAvailable") . '</td></tr>';
|
print '<tr><td colspan="5">' . $langs->trans("FeatureNotYetAvailable") . '</td></tr>';
|
||||||
} else {
|
} else {
|
||||||
@ -377,7 +388,14 @@ if (is_array($coll_list)) {
|
|||||||
} else {
|
} else {
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
if ($coll_list == -1) {
|
if ($coll_list == -1) {
|
||||||
print '<tr><td colspan="5">' . $langs->trans("ErrorNoAccountancyModuleLoaded") . '</td></tr>';
|
if ($modecompta == 'CREANCES-DETTES')
|
||||||
|
{
|
||||||
|
print '<tr><td colspan="5">' . $langs->trans("ErrorNoAccountancyModuleLoaded") . '</td></tr>';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print '<tr><td colspan="5">' . $langs->trans("FeatureNotYetAvailable") . '</td></tr>';
|
||||||
|
}
|
||||||
} else if ($coll_list == -2) {
|
} else if ($coll_list == -2) {
|
||||||
print '<tr><td colspan="5">' . $langs->trans("FeatureNotYetAvailable") . '</td></tr>';
|
print '<tr><td colspan="5">' . $langs->trans("FeatureNotYetAvailable") . '</td></tr>';
|
||||||
} else {
|
} else {
|
||||||
@ -457,7 +475,14 @@ if ($special_report) {
|
|||||||
} else {
|
} else {
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
if ($coll_list == -1) {
|
if ($coll_list == -1) {
|
||||||
print '<tr><td colspan="5">' . $langs->trans("ErrorNoAccountancyModuleLoaded") . '</td></tr>';
|
if ($modecompta == 'CREANCES-DETTES')
|
||||||
|
{
|
||||||
|
print '<tr><td colspan="5">' . $langs->trans("ErrorNoAccountancyModuleLoaded") . '</td></tr>';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print '<tr><td colspan="5">' . $langs->trans("FeatureNotYetAvailable") . '</td></tr>';
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if ($coll_list == -2) {
|
if ($coll_list == -2) {
|
||||||
print '<tr><td colspan="5">' . $langs->trans("FeatureNotYetAvailable") . '</td></tr>';
|
print '<tr><td colspan="5">' . $langs->trans("FeatureNotYetAvailable") . '</td></tr>';
|
||||||
@ -530,7 +555,14 @@ if ($special_report) {
|
|||||||
} else {
|
} else {
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
if ($coll_list == -1) {
|
if ($coll_list == -1) {
|
||||||
print '<tr><td colspan="5">' . $langs->trans("ErrorNoAccountancyModuleLoaded") . '</td></tr>';
|
if ($modecompta == 'CREANCES-DETTES')
|
||||||
|
{
|
||||||
|
print '<tr><td colspan="5">' . $langs->trans("ErrorNoAccountancyModuleLoaded") . '</td></tr>';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print '<tr><td colspan="5">' . $langs->trans("FeatureNotYetAvailable") . '</td></tr>';
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if ($coll_list == -2) {
|
if ($coll_list == -2) {
|
||||||
print '<tr><td colspan="5">' . $langs->trans("FeatureNotYetAvailable") . '</td></tr>';
|
print '<tr><td colspan="5">' . $langs->trans("FeatureNotYetAvailable") . '</td></tr>';
|
||||||
|
|||||||