Merge remote-tracking branch 'Upstream/develop' into develop-hrm3
This commit is contained in:
commit
a5ca6cb732
@ -332,6 +332,12 @@ source_file = htdocs/langs/en_US/suppliers.lang
|
|||||||
source_lang = en_US
|
source_lang = en_US
|
||||||
type = MOZILLAPROPERTIES
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
|
[dolibarr.supplier_proposal]
|
||||||
|
file_filter = htdocs/langs/<lang>/supplier_proposal.lang
|
||||||
|
source_file = htdocs/langs/en_US/supplier_proposal.lang
|
||||||
|
source_lang = en_US
|
||||||
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
[dolibarr.trips]
|
[dolibarr.trips]
|
||||||
file_filter = htdocs/langs/<lang>/trips.lang
|
file_filter = htdocs/langs/<lang>/trips.lang
|
||||||
source_file = htdocs/langs/en_US/trips.lang
|
source_file = htdocs/langs/en_US/trips.lang
|
||||||
|
|||||||
@ -4,7 +4,7 @@ How to contribute to Dolibarr
|
|||||||
Bug reports and feature requests
|
Bug reports and feature requests
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
||||||
<a name=not-a-support-forum></a>*Note*: Issues are not a support forum. If you need help using the software, please use [the forums](http://www.dolibarr.org/forum).
|
<a name="not-a-support-forum"></a>*Note*: Issues are not a support forum. If you need help using the software, please use [the forums](http://www.dolibarr.org/forum).
|
||||||
|
|
||||||
Issues are managed on [GitHub](https://github.com/Dolibarr/dolibarr/Issues).
|
Issues are managed on [GitHub](https://github.com/Dolibarr/dolibarr/Issues).
|
||||||
|
|
||||||
@ -13,9 +13,9 @@ Issues are managed on [GitHub](https://github.com/Dolibarr/dolibarr/Issues).
|
|||||||
4. Tell us the version you are using!
|
4. Tell us the version you are using!
|
||||||
3. Write a report with as much detail as possible (Use [screenshots](https://help.github.com/articles/issue-attachments) or even screencasts and provide logging and debugging informations whenever possible).
|
3. Write a report with as much detail as possible (Use [screenshots](https://help.github.com/articles/issue-attachments) or even screencasts and provide logging and debugging informations whenever possible).
|
||||||
|
|
||||||
We're still figuring out how to migrate old issues to GitHub. In the meantime, they are still available at [Doliforge](https://doliforge.org/projects/dolibarr).
|
|
||||||
|
|
||||||
<a name=code></a>Code
|
|
||||||
|
<a name="code"></a>Code
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
### Basic workflow
|
### Basic workflow
|
||||||
@ -26,7 +26,7 @@ We're still figuring out how to migrate old issues to GitHub. In the meantime, t
|
|||||||
4. Commit and push your changes.
|
4. Commit and push your changes.
|
||||||
5. [Make a pull request](https://help.github.com/articles/creating-a-pull-request).
|
5. [Make a pull request](https://help.github.com/articles/creating-a-pull-request).
|
||||||
|
|
||||||
### <a name=branches></a>Branches
|
### <a name="branches"></a>Branches
|
||||||
|
|
||||||
Unless you're fixing a bug, all pull requests should be made against the *develop* branch.
|
Unless you're fixing a bug, all pull requests should be made against the *develop* branch.
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ Choose your base branch accordingly.
|
|||||||
### General rules
|
### General rules
|
||||||
Please don't edit the ChangeLog file. File will be generated from your commit messages during release process by the project manager.
|
Please don't edit the ChangeLog file. File will be generated from your commit messages during release process by the project manager.
|
||||||
|
|
||||||
### <a name=commits></a>Commits
|
### <a name="commits"></a>Commits
|
||||||
Use clear commit messages with the following structure:
|
Use clear commit messages with the following structure:
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -98,8 +98,11 @@ If your pull request only contains one commit, GitHub will be smart enough to fi
|
|||||||
Otherwise, please be a bit verbose about what you're providing.
|
Otherwise, please be a bit verbose about what you're providing.
|
||||||
|
|
||||||
Your Pull Request must pass the Continuous Integration checks.
|
Your Pull Request must pass the Continuous Integration checks.
|
||||||
Also, if you want to include a new external library (into htdocs/includes directory), please ask before to the project
|
Also, some code changes need a prior approbation:
|
||||||
leader to see if such a library can be accepted.
|
|
||||||
|
* if you want to include a new external library (into htdocs/includes directory), please ask before to the project leader to see if such a library can be accepted.
|
||||||
|
|
||||||
|
* if you add a new table, you must first create a page on http://wiki.dolibarr.org/index.php/Category:Table_SQL (copy an existing page changing its name to see it into this index page). Than ask the project leader if the new data model you plan to add can be accepted as you suggest.
|
||||||
|
|
||||||
### Resources
|
### Resources
|
||||||
[Developer documentation](http://wiki.dolibarr.org/index.php/Developer_documentation)
|
[Developer documentation](http://wiki.dolibarr.org/index.php/Developer_documentation)
|
||||||
|
|||||||
198
ChangeLog
198
ChangeLog
@ -29,6 +29,63 @@ This is list of hooks modified:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
***** ChangeLog for 3.8.2 compared to 3.8.1 *****
|
||||||
|
FIX: Add a protection to not make release if ChangeLog was not generated.
|
||||||
|
FIX: 1/ update_extra() function must not be in "if(!empty(MAIN_DISABLE_CONTACTS_TAB)" test. 2/ Reindented code
|
||||||
|
FIX: #3240
|
||||||
|
FIX: #3541 Bypass authentication when user was created using LDAP
|
||||||
|
FIX: #3605 deleting a shipping
|
||||||
|
FIX: #3661 Margin is not selected correctly when adding a product
|
||||||
|
FIX: #3689 Bug on workflow module
|
||||||
|
FIX: #3724 Bug: Blank page after cloning proposal if we changed client
|
||||||
|
FIX: #3726 Better support for PRODUCT_USE_OLD_PATH_FOR_PHOTO
|
||||||
|
FIX: #3726 Not showing images on product card
|
||||||
|
FIX: #3757 Can't set amount in a social contribution with some languages
|
||||||
|
FIX: #3786 Translation of select box.
|
||||||
|
FIX: #3841 creation of a task completed has not status set to finished by default
|
||||||
|
FIX: #3878 Storing and deleting files on emailing was done at wrong place
|
||||||
|
FIX: #3880
|
||||||
|
FIX: #3882
|
||||||
|
FIX: action not appear before an update because of a lack of line in action ressource
|
||||||
|
FIX: add tag myuser_job into ODT replacement
|
||||||
|
FIX: Avoid changing the state to a thirdparty who shouldn't be contacted anymore
|
||||||
|
FIX: bad calculation for stock value
|
||||||
|
FIX: Bad parameters
|
||||||
|
FIX: Bad picto for expense report
|
||||||
|
FIX: bad property so after creating an event from calendar, filter were lost.
|
||||||
|
FIX: bad stock valorisation
|
||||||
|
FIX: better fix to generate a PROV ref after clone
|
||||||
|
FIX: bug invoice classified in propale next update commonobject class in 3.8
|
||||||
|
FIX: Can export a field into task time table with export project profile
|
||||||
|
FIX: change order date on clone (as everywhere else)
|
||||||
|
FIX: clone customer order create new order with validate ref and not with PROV
|
||||||
|
FIX: Contacts are not added to the list with the status "no contact"
|
||||||
|
FIX: Default thirdparty when cloning invoice was not set.
|
||||||
|
FIX: double db escape add too quote
|
||||||
|
FIX: event's data lost on user assign update
|
||||||
|
FIX: Filter in customer price per product of a thirdparty returned error
|
||||||
|
FIX: filters on supplier invoices list are not used, search_status instead
|
||||||
|
FIX: fix HTML into formconfirm box
|
||||||
|
FIX: IF autocomplete was set on thirdparty list, it was not possible to open list of extrafields.
|
||||||
|
FIX: If no end date is set on survey, we should be able to vote.
|
||||||
|
FIX: loss data also if update was cancel by error of ended state with no end date, try a generic patch
|
||||||
|
FIX: no need to remove file into mail form, the temp dir will be deleted after any sending
|
||||||
|
FIX: pmp calculation
|
||||||
|
FIX: Preview pages was not using correct style for ref
|
||||||
|
FIX: project was not retrieved on invoice creation form
|
||||||
|
FIX: Revert option WORKFLOW_PROPAL_CAN_CLASSIFIED_BILLED_WITHOUT_INVOICES into option WORKFLOW_PROPAL_NEED_INVOICE_TO_BE_CLASSIFIED_BILLED for better compatibility with old versions
|
||||||
|
FIX: Search status not saved into list
|
||||||
|
FIX: search_status not used in mergefusiontool
|
||||||
|
FIX: Show category selector if we have permission to view products or services
|
||||||
|
FIX: Show product image on getNomUrl()
|
||||||
|
FIX: skeleton class must use db->order rather than ORDER BY into fetchAll
|
||||||
|
FIX: Societe::set_parent() function needs societe object to be fetched to update parent
|
||||||
|
FIX: supplier rights for orderToInvoice
|
||||||
|
FIX: tag object_total_vat_x need x to be a string with unknown decimal lenght. Now use for x the real vat real with no more decimal (x = 20 or x = 8.5 or x = 5.99, ...)
|
||||||
|
FIX: The preview of PDF was never refreshed if PDF document was changed
|
||||||
|
FIX: The thumb of user into top menu was using the image in full size. This make a large download at each page call. We must use the mini thumbs.
|
||||||
|
FIX: Total in summary was not same than into detail on the referrer page.
|
||||||
|
|
||||||
***** ChangeLog for 3.8.1 compared to 3.8.0 *****
|
***** ChangeLog for 3.8.1 compared to 3.8.0 *****
|
||||||
FIX: #3521 postgresql migration error
|
FIX: #3521 postgresql migration error
|
||||||
FIX: #3524
|
FIX: #3524
|
||||||
@ -315,25 +372,94 @@ Dolibarr better:
|
|||||||
to make difference between creation from contact or not.
|
to make difference between creation from contact or not.
|
||||||
- Function get_exdir require now 6 parameters. This is to prepare a future feature.
|
- Function get_exdir require now 6 parameters. This is to prepare a future feature.
|
||||||
|
|
||||||
|
|
||||||
***** ChangeLog for 3.7.2 compared to 3.7.1 *****
|
***** ChangeLog for 3.7.2 compared to 3.7.1 *****
|
||||||
FIX [ bug #2855 ] Wrong translation key in localtax report page
|
FIX: #2957 : missing $langs object for trigger
|
||||||
FIX [ bug #1852 ] JS error when editing a customer order line
|
FIX: #2983 Load gravatar avatar images securely over HTTPS
|
||||||
FIX [ bug #2900 ] Courtesy title is not stored in create thirdparty form
|
FIX: #3009: Better filtering to prevent SQL injection
|
||||||
FIX [ bug #3055 ] Product image thumbnails were not deleted after deleting the image
|
FIX: #3091 TotalHT amount in supplier order is bold unlike the rest of Dolibarr
|
||||||
FIX [ bug 1634 ] Error deleting a project when it had many linked objects
|
FIX: #3262 Webservice getProductsForCategory()
|
||||||
FIX [ bug 1925 ] "Link to order" option in supplier invoices is not working properly
|
FIX: #3318
|
||||||
FIX [ bug #3198 ] Trigger LINECONTRACT_INSERT passes Contrat as $object instead of ContratLigne
|
FIX: [ #3460 ] Selected bank account was not saved when an error happened when trying to create a customer invoice
|
||||||
FIX: Not showing delivery date on rouget pdf
|
FIX: #3530
|
||||||
|
FIX: #3630 - Wrong balance report when module salaries and donation disabled
|
||||||
|
FIX: #3679 Error when deleting a Localtax2 special payment
|
||||||
|
FIX: #3707 Thirdparty bank account page table has a glitch
|
||||||
|
FIX: #3724 Bug: Blank page after cloning proposal with changed client
|
||||||
|
FIX: #3836 Unable to upload a document to an invoice under some circunstances
|
||||||
|
FIX: #3841 creation of a task completed has not status set to finished by default
|
||||||
|
FIX: Add a protection to not make release if ChangeLog was not generated.
|
||||||
|
FIX: adjusted test for affecting supplier reference
|
||||||
|
FIX: Admin fiche inter page do not take good action
|
||||||
|
FIX: Avoid warning strict mode when hosting server do not have php5_curl installed
|
||||||
|
FIX: bad calculation for stock value
|
||||||
|
FIX: Bad condition into invoice export request making reporting too many rows.
|
||||||
|
FIX: bad stock valorisation
|
||||||
|
FIX: Bad visualization of suppliers name on Incomes-Expenses mode
|
||||||
|
FIX: Better management error into the color conversion functions
|
||||||
|
FIX: [ bug 1634 ] Error deleting a project when it had many linked objects
|
||||||
|
FIX: [ bug 1925 ] "Link to order" option in supplier invoices is not working properly
|
||||||
|
FIX: [ bug #2893 ] Dolibarr error when viewing an invoice after changing invoice mask
|
||||||
|
FIX: [ bug #3211 ] Error about sold to pay (Montant encours)
|
||||||
|
FIX: [ bug #3321 ] Users with certain permissions were shown a "forbidden access" page even if they had the rights
|
||||||
|
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 #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: Can create Proposal on close thridparty #3526
|
||||||
|
FIX: change order date on clone (as everywhere else)
|
||||||
|
FIX: Close #2835 Customer prices of a product shows incorrect history order
|
||||||
|
FIX: Close #2837 Product list table column header does not match column body
|
||||||
|
FIX: Close bug #2855 Wrong translation key in localtax report page
|
||||||
|
FIX: Close bug #2861 Undefined variable $res when migrating from 3.6.2 to 3.7.0
|
||||||
|
FIX: Close bug #2891 Category hooks do not work
|
||||||
|
FIX: Close bug #2900 Courtesy title is not stored in create thirdparty form
|
||||||
|
FIX: Close bug #2976: "Report" tab is the current tab but it is not marked as selected by the UI
|
||||||
|
FIX: contact country had wrong display if the country dont have translate
|
||||||
|
FIX: Display country name instead of country id (display country id makes no sense on vcard files)
|
||||||
|
FIX: display error on extrafields on ficheinter
|
||||||
|
FIX: double db escape add too quote
|
||||||
|
FIX: Email selector contact must not include inactive contact
|
||||||
|
FIX: End log must use same level then start log.
|
||||||
|
FIX: error in SQL due to a previous fix
|
||||||
|
FIX: event's data lost on user assign update
|
||||||
|
FIX: Export of tags for contact and member
|
||||||
|
FIX: facturestat bad sql when customer view is limited
|
||||||
|
FIX: if multicompany enabled, call to undifend method _setCookie instead of setCookie
|
||||||
|
FIX: If supplier invoice block linked element is display after other block total HT amount is not reset to 0 and sum other block (like customer orders values)
|
||||||
|
FIX: keep filter by category or by not enough stock if we switch page
|
||||||
|
FIX: Line break display as a block
|
||||||
|
FIX: load propal langs for availability traduction
|
||||||
|
FIX: loss data also if update was cancel by error of ended state with no end date, try a generic patch
|
||||||
|
FIX: Mass Mailing activity don't display all status
|
||||||
|
FIX: Missing to set context into workflow actions, so triggers can't know we are creating an invoice from order or an order from a proposal.
|
||||||
|
FIX: multientity warehouse management
|
||||||
|
FIX: New adherent from, always redirect on entity
|
||||||
|
FIX: No check warehouse is provided if module stock is not enabled.
|
||||||
|
FIX: no need to remove file into mail form, the temp dir will be deleted after any sending
|
||||||
|
FIX: no projet_task_time id from trigger TASK_TIMESPENT_CREATE
|
||||||
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: only active customer should be return into new invoice creation select list
|
||||||
FIX [ bug #3211 ] Outstading bill amount of a client showed wrong amounts
|
FIX: Payed invoices are showed as canceled FIX: Bad date filter on customer order
|
||||||
FIX [ bug #3321 ] Users with certain permissions were shown a "forbidden access" page even if they had the rights
|
FIX: WAP calculation
|
||||||
FIX [ bug #3426 ] Unable to create an invoice from a contract with extrafields
|
FIX: Save of filters into export profiles failed.
|
||||||
FIX [ bug #3431 ] Invoice bank account is not respected
|
FIX: supplier rights for orderToInvoice
|
||||||
FIX [ bug #3432 ] Spaces should be removed from IBAN when formatting it
|
FIX: Syntax error in Debian Apache configuration
|
||||||
FIX [ bug #3358 ] Tasks box does not work with PostgreSQL
|
FIX: The hours of date filter aren't correct
|
||||||
FIX [ bug #3383 ] Company name is overlapped with company direction in PDF models
|
FIX: tool export handle the type "select" extrafields and return the value instead of id
|
||||||
FIX [ bug #3460 ] Bank account is not saved when creating a customer invoice and facing an error message
|
FIX: total amount in tpl linked object are not reset
|
||||||
|
FIX: translate Jabberid on contact page with edit view
|
||||||
|
FIX: translation for 1 word do not work if product/service module are disabled because the translation search in products.lang
|
||||||
|
FIX: update2.php test res befre assign it
|
||||||
|
FIX: When delete actioncomm also delete actioncomm_resources
|
||||||
|
FIX: when fetch_optionnal_by_label in Extrafields with $this->db cannot work because this->db is never instanciated
|
||||||
|
FIX: when mailing is deleted, the targets list was kept in database
|
||||||
|
FIX: when multicompany was enabled, this function didn't check just on the good entity (problem when both company use same mask)
|
||||||
|
FIX: When we add an user on event in create mode, we lose linked object
|
||||||
|
FIX: When we automatically creta an order from a proposal with workflow module, if some extrafields of propal don't exist in order object, insertExtraFields() function tries to insert extrafields in unexistant column of commande_extrafields table.
|
||||||
|
FIX: When we clone a propal, if it has a project which is not assigned to a third, it was not on new propal because fk_project was always set to empty string if new propal is for another third.
|
||||||
|
FIX: XSS security using the onerror and missing escapement on type of member page.
|
||||||
|
|
||||||
NEW: Created new ContratLigne::insert function
|
NEW: Created new ContratLigne::insert function
|
||||||
|
|
||||||
@ -559,9 +685,43 @@ Dolibarr better:
|
|||||||
warehouse module and your Point Of Sale module setup if you use one.
|
warehouse module and your Point Of Sale module setup if you use one.
|
||||||
- Replaced USER_UPDATE_SESSION trigger with an updateSession hook may break modules using it.
|
- Replaced USER_UPDATE_SESSION trigger with an updateSession hook may break modules using it.
|
||||||
|
|
||||||
|
|
||||||
***** ChangeLog for 3.6.5 compared to 3.6.4 *****
|
***** ChangeLog for 3.6.5 compared to 3.6.4 *****
|
||||||
- Fix: [ bug #1776 ] Undefined $deliverycompany variable in pdf_build_address
|
FIX: #2957 : missing $langs object for trigger
|
||||||
- Fix: [ bug #1794 ] Error when cloning Proposal gives error in a malformed page
|
FIX: #2983 Load gravatar avatar images securely over HTTPS
|
||||||
|
FIX: #3009: Better filtering to prevent SQL injection
|
||||||
|
FIX: #3841 creation of a task completed has not status set to finished by default
|
||||||
|
FIX: #3890 Expected transactions bank account page, shows negative numbers
|
||||||
|
FIX: #3928 Creating a Customer order and a Customer invoice from a project, does not inherit payment conditions and method of payment of customer card
|
||||||
|
FIX: bad calculation for stock value
|
||||||
|
FIX: bad stock valo
|
||||||
|
FIX: bad stock valorisation
|
||||||
|
FIX: [ bug #2893 ] Dolibarr error when viewing an invoice after changing invoice mask
|
||||||
|
FIX: button create payment hide if tax amount is less than 1
|
||||||
|
FIX: change object statut on close shipping and remove erratic db commit
|
||||||
|
FIX: change order date on clone (as everywhere else)
|
||||||
|
FIX: Close #2835 Customer prices of a product shows incorrect history order
|
||||||
|
FIX: Close #2837 Product list table column header does not match column body
|
||||||
|
FIX: Close bug #2861 Undefined variable $res when migrating from 3.6.2 to 3.7.0
|
||||||
|
FIX: Close bug #2891 Category hooks do not work
|
||||||
|
FIX: Close bug #2976: "Report" tab is the current tab but it is not marked as selected by the UI
|
||||||
|
FIX: contact country had wrong display if the country dont have translate
|
||||||
|
FIX: double db escape add too quote
|
||||||
|
FIX: End log must use same level then start log.
|
||||||
|
FIX: error in SQL due to a previous fix
|
||||||
|
FIX: event for restricted user was restricted if company null
|
||||||
|
FIX: facturestat bad sql when customer view is limited
|
||||||
|
FIX: If supplier invoice block linked element is display after other block total HT amount is not reset to 0 and sum other block (like customer orders values)
|
||||||
|
FIX: keep filter by category or by not enough stock if we switch page
|
||||||
|
FIX: no need to remove file into mail form, the temp dir will be deleted after any sending
|
||||||
|
FIX: no projet_task_time id from trigger TASK_TIMESPENT_CREATE
|
||||||
|
FIX: pmp
|
||||||
|
FIX: send mail, copy sendto don't read the list of contact
|
||||||
|
FIX: The hours of date filter aren't correct
|
||||||
|
FIX: tool export handle the type "select" extrafields and return the value instead of id
|
||||||
|
FIX: top links menu have target attribute with wrong value
|
||||||
|
FIX: total amount in tpl linked object are not reset
|
||||||
|
FIX: when multicompany was enabled, this function didn't check just on the good entity (problem when both company use same mask)
|
||||||
|
|
||||||
***** ChangeLog for 3.6.4 compared to 3.6.3 *****
|
***** ChangeLog for 3.6.4 compared to 3.6.3 *****
|
||||||
- Fix: [ bug #2893 ] Dolibarr error when viewing an invoice after changing invoice mask
|
- Fix: [ bug #2893 ] Dolibarr error when viewing an invoice after changing invoice mask
|
||||||
|
|||||||
@ -149,6 +149,10 @@ These are features that Dolibarr does **not** yet fully support:
|
|||||||
|
|
||||||
Administrator, user, developer and translator's documentations are available along with other community resources on the [Wiki](http://wiki.dolibarr.org).
|
Administrator, user, developer and translator's documentations are available along with other community resources on the [Wiki](http://wiki.dolibarr.org).
|
||||||
|
|
||||||
|
## CONTRIBUTING
|
||||||
|
|
||||||
|
See file [CONTRIBUTING](https://github.com/Dolibarr/dolibarr/blob/develop/CONTRIBUTING.md)
|
||||||
|
|
||||||
## CREDITS
|
## CREDITS
|
||||||
|
|
||||||
Dolibarr is the work of many contributors over the years and uses some fine libraries.
|
Dolibarr is the work of many contributors over the years and uses some fine libraries.
|
||||||
|
|||||||
@ -22,7 +22,8 @@ $PUBLISHSTABLE="eldy,dolibarr\@frs.sourceforge.net:/home/frs/project/dolibarr";
|
|||||||
$PUBLISHBETARC="ldestailleur\@asso.dolibarr.org:/home/dolibarr/dolibarr.org/httpdocs/files";
|
$PUBLISHBETARC="ldestailleur\@asso.dolibarr.org:/home/dolibarr/dolibarr.org/httpdocs/files";
|
||||||
|
|
||||||
|
|
||||||
@LISTETARGET=("TGZ","ZIP","RPM_GENERIC","RPM_FEDORA","RPM_MANDRIVA","RPM_OPENSUSE","DEB","APS","EXEDOLIWAMP","SNAPSHOT"); # Possible packages
|
#@LISTETARGET=("TGZ","ZIP","RPM_GENERIC","RPM_FEDORA","RPM_MANDRIVA","RPM_OPENSUSE","DEB","APS","EXEDOLIWAMP","SNAPSHOT"); # Possible packages
|
||||||
|
@LISTETARGET=("TGZ","ZIP","RPM_GENERIC","RPM_FEDORA","RPM_MANDRIVA","RPM_OPENSUSE","DEB","EXEDOLIWAMP","SNAPSHOT"); # Possible packages
|
||||||
%REQUIREMENTPUBLISH=(
|
%REQUIREMENTPUBLISH=(
|
||||||
"SF"=>"git ssh rsync",
|
"SF"=>"git ssh rsync",
|
||||||
"ASSO"=>"git ssh rsync"
|
"ASSO"=>"git ssh rsync"
|
||||||
@ -351,6 +352,28 @@ if ($nboftargetok) {
|
|||||||
print "Go to directory $SOURCE\n";
|
print "Go to directory $SOURCE\n";
|
||||||
$olddir=getcwd();
|
$olddir=getcwd();
|
||||||
chdir("$SOURCE");
|
chdir("$SOURCE");
|
||||||
|
|
||||||
|
# Test that the ChangeLog is ok
|
||||||
|
$ret=`grep "ChangeLog for $MAJOR.$MINOR\.$BUILD" "$SOURCE/ChangeLog" 2>&1`;
|
||||||
|
if (! $ret)
|
||||||
|
{
|
||||||
|
print "Error: The ChangeLogFile was not updated. Run the following command first:\n";
|
||||||
|
if (! $BUILD)
|
||||||
|
{
|
||||||
|
print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log `git rev-list --boundary '.$MAJOR.'.'.$MINOR.'..origin/develop | grep ^- | cut -c2- | head -n`.. --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';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log '.$MAJOR.'.'.$MINOR.'.'.($BUILD-1).'.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e \'^FIX\|NEW\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa';
|
||||||
|
}
|
||||||
|
print "\n";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print "ChangeLog for $MAJOR.$MINOR\.$BUILD was found into '$SOURCE/ChangeLog'\n";
|
||||||
|
}
|
||||||
|
|
||||||
print 'Run git tag -a -m "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'" "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'"'."\n";
|
print 'Run git tag -a -m "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'" "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'"'."\n";
|
||||||
$ret=`git tag -a -m "$MAJOR.$MINOR.$BUILD" "$MAJOR.$MINOR.$BUILD" 2>&1`;
|
$ret=`git tag -a -m "$MAJOR.$MINOR.$BUILD" "$MAJOR.$MINOR.$BUILD" 2>&1`;
|
||||||
if ($ret =~ /already exists/)
|
if ($ret =~ /already exists/)
|
||||||
|
|||||||
@ -9,8 +9,8 @@ beta version of Dolibarr, step by step.
|
|||||||
|
|
||||||
- Check all files are commited.
|
- Check all files are commited.
|
||||||
- Update version/info in ChangeLog.
|
- 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 major new version x.y.0, you can do "cd ~/git/dolibarr_x.y; git log `git rev-list --boundary x.y..origin/develop | grep ^- | cut -c2- | head -n`.. --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"
|
To generate a changelog of a maintenance version x.y.z, you can do "cd ~/git/dolibarr_x.y; git log x.y.z-1.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa"
|
||||||
- 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
|
||||||
- Commit all changes.
|
- Commit all changes.
|
||||||
|
|
||||||
@ -31,8 +31,8 @@ complete release of Dolibarr, step by step.
|
|||||||
|
|
||||||
- Check all files are commited.
|
- Check all files are commited.
|
||||||
- Update version/info in ChangeLog.
|
- 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 major new version x.y.0, you can do "cd ~/git/dolibarr_x.y; git log `git rev-list --boundary x.y..origin/develop | grep ^- | cut -c2- | head -n`.. --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"
|
To generate a changelog of a maintenance version x.y.z, you can do "cd ~/git/dolibarr_x.y; git log x.y.z-1.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa"
|
||||||
- Update version number with x.y.z in htdocs/filefunc.inc.php
|
- Update version number with x.y.z in htdocs/filefunc.inc.php
|
||||||
- Commit all changes.
|
- Commit all changes.
|
||||||
|
|
||||||
|
|||||||
@ -53,6 +53,7 @@ class modMyModule extends DolibarrModules
|
|||||||
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
||||||
// It is used to group modules in module setup page
|
// It is used to group modules in module setup page
|
||||||
$this->family = "other";
|
$this->family = "other";
|
||||||
|
$this->module_position = 500;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
|
|||||||
5
htdocs/.gitignore
vendored
5
htdocs/.gitignore
vendored
@ -15,3 +15,8 @@
|
|||||||
/teclib*
|
/teclib*
|
||||||
/test.php
|
/test.php
|
||||||
/ultimatepdf*
|
/ultimatepdf*
|
||||||
|
/lead
|
||||||
|
/dolimed*
|
||||||
|
/allscreens*
|
||||||
|
/ecommerce/
|
||||||
|
/cabinetmed*
|
||||||
@ -1,4 +1,4 @@
|
|||||||
<?PHP
|
<?php
|
||||||
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2013-2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
|
* Copyright (C) 2013-2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
|
||||||
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/accountancy/customer/card.php
|
* \file htdocs/accountancy/customer/card.php
|
||||||
* \ingroup Accounting Expert
|
* \ingroup Accountancy
|
||||||
* \brief Card customer ventilation
|
* \brief Card customer ventilation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -88,7 +88,6 @@ if (! empty($id)) {
|
|||||||
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "accounting_account as aa ON l.fk_code_ventilation = aa.rowid";
|
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "accounting_account as aa ON l.fk_code_ventilation = aa.rowid";
|
||||||
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "facture as f ON f.rowid = l.fk_facture";
|
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "facture as f ON f.rowid = l.fk_facture";
|
||||||
$sql .= " WHERE f.fk_statut > 0 AND l.rowid = " . $id;
|
$sql .= " WHERE f.fk_statut > 0 AND l.rowid = " . $id;
|
||||||
|
|
||||||
if (! empty($conf->multicompany->enabled)) {
|
if (! empty($conf->multicompany->enabled)) {
|
||||||
$sql .= " AND f.entity IN (" . getEntity("facture", 1) . ")";
|
$sql .= " AND f.entity IN (" . getEntity("facture", 1) . ")";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/accountancy/customer/list.php
|
* \file htdocs/accountancy/customer/list.php
|
||||||
* \ingroup Accounting Expert
|
* \ingroup Accountancy
|
||||||
* \brief Ventilation page from customers invoices
|
* \brief Ventilation page from customers invoices
|
||||||
*/
|
*/
|
||||||
require '../../main.inc.php';
|
require '../../main.inc.php';
|
||||||
@ -166,16 +166,27 @@ if ($action == 'ventil' && !empty($btn_ventil)) {
|
|||||||
* Customer Invoice lines
|
* Customer Invoice lines
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$sql = "SELECT f.facnumber, f.rowid as facid, f.datef, f.type as ftype, l.fk_product, l.description, l.total_ht, l.rowid, l.fk_code_ventilation,";
|
if (! empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION)) {
|
||||||
$sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_sell as code_sell, p.tva_tx as tva_tx_prod";
|
$limit = $conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION;
|
||||||
$sql .= " , aa.rowid as aarowid";
|
} else if ($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION <= 0) {
|
||||||
$sql .= " , l.product_type as type_l, l.tva_tx as tva_tx_line";
|
$limit = $conf->liste_limit;
|
||||||
|
} else {
|
||||||
|
$limit = $conf->liste_limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$offset = $limit * $page;
|
||||||
|
|
||||||
|
$sql = "SELECT f.facnumber, f.rowid as facid, f.datef, f.type as ftype, l.fk_product, l.description, l.total_ht, l.rowid, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line,";
|
||||||
|
$sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_sell as code_sell, p.tva_tx as tva_tx_prod,";
|
||||||
|
$sql .= " aa.rowid as aarowid";
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "facture as f";
|
$sql .= " FROM " . MAIN_DB_PREFIX . "facture as f";
|
||||||
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "facturedet as l ON f.rowid = l.fk_facture";
|
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "facturedet as l ON f.rowid = l.fk_facture";
|
||||||
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product as p ON p.rowid = l.fk_product";
|
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product as p ON p.rowid = l.fk_product";
|
||||||
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "accounting_account as aa ON p.accountancy_code_sell = aa.account_number";
|
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "accounting_account as aa ON p.accountancy_code_sell = aa.account_number";
|
||||||
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "accounting_system as accsys ON accsys.pcg_version = aa.fk_pcg_version";
|
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "accounting_system as accsys ON accsys.pcg_version = aa.fk_pcg_version";
|
||||||
$sql .= " WHERE f.fk_statut > 0 AND fk_code_ventilation <= 0";
|
$sql .= " WHERE f.fk_statut > 0";
|
||||||
|
$sql .= " AND fk_code_ventilation <= 0";
|
||||||
|
$sql .= " AND product_type <= 2";
|
||||||
$sql .= " AND (accsys.rowid='" . $conf->global->CHARTOFACCOUNTS . "' OR p.accountancy_code_sell IS NULL OR p.accountancy_code_sell ='')";
|
$sql .= " AND (accsys.rowid='" . $conf->global->CHARTOFACCOUNTS . "' OR p.accountancy_code_sell IS NULL OR p.accountancy_code_sell ='')";
|
||||||
|
|
||||||
// Add search filter like
|
// Add search filter like
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
*/
|
*/
|
||||||
/**
|
/**
|
||||||
* \file htdocs/accountancy/supplier/card.php
|
* \file htdocs/accountancy/supplier/card.php
|
||||||
* \ingroup Accounting Expert
|
* \ingroup Accountancy
|
||||||
* \brief Card supplier ventilation
|
* \brief Card supplier ventilation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -88,7 +88,6 @@ if (! empty($id)) {
|
|||||||
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "accounting_account as aa ON l.fk_code_ventilation = aa.rowid";
|
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "accounting_account as aa ON l.fk_code_ventilation = aa.rowid";
|
||||||
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "facture_fourn as f ON f.rowid = l.fk_facture_fourn ";
|
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "facture_fourn as f ON f.rowid = l.fk_facture_fourn ";
|
||||||
$sql .= " WHERE f.fk_statut > 0 AND l.rowid = " . $id;
|
$sql .= " WHERE f.fk_statut > 0 AND l.rowid = " . $id;
|
||||||
|
|
||||||
if (! empty($conf->multicompany->enabled)) {
|
if (! empty($conf->multicompany->enabled)) {
|
||||||
$sql .= " AND f.entity IN (" . getEntity("facture_fourn", 1) . ")";
|
$sql .= " AND f.entity IN (" . getEntity("facture_fourn", 1) . ")";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/accountancy/supplier/list.php
|
* \file htdocs/accountancy/supplier/list.php
|
||||||
* \ingroup Accounting Expert
|
* \ingroup Accountancy
|
||||||
* \brief Ventilation page from suppliers invoices
|
* \brief Ventilation page from suppliers invoices
|
||||||
*/
|
*/
|
||||||
require '../../main.inc.php';
|
require '../../main.inc.php';
|
||||||
@ -171,19 +171,27 @@ if ($action == 'ventil' && !empty($btn_ventil)) {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$sql = "SELECT f.ref, f.rowid as facid, f.ref_supplier, l.fk_product, l.description, l.total_ht as price, l.rowid, l.fk_code_ventilation, l.tva_tx as tva_tx_line, ";
|
if (! empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION)) {
|
||||||
|
$limit = $conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION;
|
||||||
|
} else if ($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION <= 0) {
|
||||||
|
$limit = $conf->liste_limit;
|
||||||
|
} else {
|
||||||
|
$limit = $conf->liste_limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$offset = $limit * $page;
|
||||||
|
|
||||||
|
$sql = "SELECT f.ref, f.rowid as facid, f.ref_supplier, f.datef, l.fk_product, l.description, l.total_ht as price, l.rowid, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line, ";
|
||||||
$sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_buy as code_buy, p.tva_tx as tva_tx_prod";
|
$sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_buy as code_buy, p.tva_tx as tva_tx_prod";
|
||||||
$sql .= " , aa.rowid as aarowid";
|
$sql .= " , aa.rowid as aarowid";
|
||||||
$sql .= " , f.datef";
|
|
||||||
$sql .= " , l.product_type as type_l";
|
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "facture_fourn as f";
|
$sql .= " FROM " . MAIN_DB_PREFIX . "facture_fourn as f";
|
||||||
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "facture_fourn_det as l ON f.rowid = l.fk_facture_fourn";
|
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "facture_fourn_det as l ON f.rowid = l.fk_facture_fourn";
|
||||||
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product as p ON p.rowid = l.fk_product";
|
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product as p ON p.rowid = l.fk_product";
|
||||||
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "accounting_account as aa ON p.accountancy_code_buy = aa.account_number";
|
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "accounting_account as aa ON p.accountancy_code_buy = aa.account_number";
|
||||||
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "accounting_system as accsys ON accsys.pcg_version = aa.fk_pcg_version";
|
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "accounting_system as accsys ON accsys.pcg_version = aa.fk_pcg_version";
|
||||||
$sql .= " WHERE f.fk_statut > 0 AND fk_code_ventilation <= 0";
|
$sql .= " WHERE f.fk_statut > 0 AND fk_code_ventilation <= 0";
|
||||||
|
$sql .= " AND product_type <= 2";
|
||||||
$sql .= " AND (accsys.rowid='" . $conf->global->CHARTOFACCOUNTS . "' OR p.accountancy_code_sell IS NULL OR p.accountancy_code_buy ='')";
|
$sql .= " AND (accsys.rowid='" . $conf->global->CHARTOFACCOUNTS . "' OR p.accountancy_code_sell IS NULL OR p.accountancy_code_buy ='')";
|
||||||
|
|
||||||
// Add search filter like
|
// Add search filter like
|
||||||
if (strlen(trim($search_invoice))) {
|
if (strlen(trim($search_invoice))) {
|
||||||
$sql .= " AND (f.ref like '%" . $search_invoice . "%')";
|
$sql .= " AND (f.ref like '%" . $search_invoice . "%')";
|
||||||
|
|||||||
@ -48,7 +48,8 @@ $boxes = array();
|
|||||||
|
|
||||||
if ($action == 'addconst')
|
if ($action == 'addconst')
|
||||||
{
|
{
|
||||||
dolibarr_set_const($db, "MAIN_BOXES_MAXLINES",$_POST["MAIN_BOXES_MAXLINES"],'',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_BOXES_MAXLINES", $_POST["MAIN_BOXES_MAXLINES"],'',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_ACTIVATE_FILECACHE", $_POST["MAIN_ACTIVATE_FILECACHE"],'chaine',0,'',$conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'add') {
|
if ($action == 'add') {
|
||||||
@ -456,8 +457,8 @@ $var=false;
|
|||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td class="liste_titre">'.$langs->trans("Parameter").'</td>';
|
print '<td class="liste_titre">'.$langs->trans("Parameter").'</td>';
|
||||||
print '<td class="liste_titre">'.$langs->trans("Value").'</td>';
|
print '<td class="liste_titre">'.$langs->trans("Value").'</td>';
|
||||||
print '<td class="liste_titre"></td>';
|
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr '.$bc[$var].'>';
|
print '<tr '.$bc[$var].'>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print $langs->trans("MaxNbOfLinesForBoxes");
|
print $langs->trans("MaxNbOfLinesForBoxes");
|
||||||
@ -465,12 +466,21 @@ print '</td>'."\n";
|
|||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="text" class="flat" size="6" name="MAIN_BOXES_MAXLINES" value="'.$conf->global->MAIN_BOXES_MAXLINES.'">';
|
print '<input type="text" class="flat" size="6" name="MAIN_BOXES_MAXLINES" value="'.$conf->global->MAIN_BOXES_MAXLINES.'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td align="right">';
|
|
||||||
print '<input type="submit" class="button" value="'.$langs->trans("Save").'" name="Button">';
|
|
||||||
print '</td>'."\n";
|
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
|
// Activate FileCache - Developement
|
||||||
|
if ($conf->global->MAIN_FEATURES_LEVEL == 2 || ! empty($conf->global->MAIN_ACTIVATE_FILECACHE)) {
|
||||||
|
$var=!$var;
|
||||||
|
print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("EnableFileCache").'</td><td>';
|
||||||
|
print $form->selectyesno('MAIN_ACTIVATE_FILECACHE',$conf->global->MAIN_ACTIVATE_FILECACHE,1);
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
|
print '<div class="center"><input type="submit" class="button" value="'.$langs->trans("Save").'" name="Button"></div>';
|
||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
print "\n".'<!-- End Other Const -->'."\n";
|
print "\n".'<!-- End Other Const -->'."\n";
|
||||||
|
|
||||||
|
|||||||
@ -594,7 +594,7 @@ if ($action == 'edit' || $action == 'updateedit')
|
|||||||
// Note: When option is not set, it must not appears as set on on, because there is no default value for this option
|
// Note: When option is not set, it must not appears as set on on, because there is no default value for this option
|
||||||
print "<tr ".$bc[$var]."><td width=\"140\"><input type=\"radio\" name=\"optionlocaltax1\" id=\"lt1\" value=\"localtax1on\"".(($conf->global->FACTURE_LOCAL_TAX1_OPTION == '1' || $conf->global->FACTURE_LOCAL_TAX1_OPTION == "localtax1on")?" checked":"")."> ".$langs->transcountry("LocalTax1IsUsed",$mysoc->country_code)."</td>";
|
print "<tr ".$bc[$var]."><td width=\"140\"><input type=\"radio\" name=\"optionlocaltax1\" id=\"lt1\" value=\"localtax1on\"".(($conf->global->FACTURE_LOCAL_TAX1_OPTION == '1' || $conf->global->FACTURE_LOCAL_TAX1_OPTION == "localtax1on")?" checked":"")."> ".$langs->transcountry("LocalTax1IsUsed",$mysoc->country_code)."</td>";
|
||||||
print '<td colspan="2">';
|
print '<td colspan="2">';
|
||||||
print "<table>";
|
print '<table class="nobordernopadding">';
|
||||||
print "<tr><td><label for=\"lt1\">".$langs->transcountry("LocalTax1IsUsedDesc",$mysoc->country_code)."</label></td></tr>";
|
print "<tr><td><label for=\"lt1\">".$langs->transcountry("LocalTax1IsUsedDesc",$mysoc->country_code)."</label></td></tr>";
|
||||||
$example=$langs->transcountry("LocalTax1IsUsedExample",$mysoc->country_code);
|
$example=$langs->transcountry("LocalTax1IsUsedExample",$mysoc->country_code);
|
||||||
print ($example!="LocalTax1IsUsedExample"?"<tr><td><i>".$langs->trans("Example").': '.$langs->transcountry("LocalTax1IsUsedExample",$mysoc->country_code)."</i></td></tr>\n":"");
|
print ($example!="LocalTax1IsUsedExample"?"<tr><td><i>".$langs->trans("Example").': '.$langs->transcountry("LocalTax1IsUsedExample",$mysoc->country_code)."</i></td></tr>\n":"");
|
||||||
@ -602,8 +602,8 @@ if ($action == 'edit' || $action == 'updateedit')
|
|||||||
{
|
{
|
||||||
print '<tr><td align="left"><label for="lt1">'.$langs->trans("LTRate").'</label>: ';
|
print '<tr><td align="left"><label for="lt1">'.$langs->trans("LTRate").'</label>: ';
|
||||||
$formcompany->select_localtax(1,$conf->global->MAIN_INFO_VALUE_LOCALTAX1, "lt1");
|
$formcompany->select_localtax(1,$conf->global->MAIN_INFO_VALUE_LOCALTAX1, "lt1");
|
||||||
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
$opcions=array($langs->trans("CalcLocaltax1").' '.$langs->trans("CalcLocaltax1Desc"),$langs->trans("CalcLocaltax2").' - '.$langs->trans("CalcLocaltax2Desc"),$langs->trans("CalcLocaltax3").' - '.$langs->trans("CalcLocaltax3Desc"));
|
$opcions=array($langs->trans("CalcLocaltax1").' '.$langs->trans("CalcLocaltax1Desc"),$langs->trans("CalcLocaltax2").' - '.$langs->trans("CalcLocaltax2Desc"),$langs->trans("CalcLocaltax3").' - '.$langs->trans("CalcLocaltax3Desc"));
|
||||||
|
|
||||||
@ -614,7 +614,7 @@ if ($action == 'edit' || $action == 'updateedit')
|
|||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
print "<tr ".$bc[$var]."><td width=\"140\"><input type=\"radio\" name=\"optionlocaltax1\" id=\"nolt1\" value=\"localtax1off\"".($conf->global->FACTURE_LOCAL_TAX1_OPTION == "localtax1off"?" checked":"")."> ".$langs->transcountry("LocalTax1IsNotUsed",$mysoc->country_code)."</td>";
|
print "<tr ".$bc[$var]."><td width=\"140\"><input type=\"radio\" name=\"optionlocaltax1\" id=\"nolt1\" value=\"localtax1off\"".((empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) || $conf->global->FACTURE_LOCAL_TAX1_OPTION == "localtax1off")?" checked":"")."> ".$langs->transcountry("LocalTax1IsNotUsed",$mysoc->country_code)."</td>";
|
||||||
print '<td colspan="2">';
|
print '<td colspan="2">';
|
||||||
print "<table>";
|
print "<table>";
|
||||||
print "<tr><td><label for=\"nolt1\">".$langs->transcountry("LocalTax1IsNotUsedDesc",$mysoc->country_code)."</label></td></tr>";
|
print "<tr><td><label for=\"nolt1\">".$langs->transcountry("LocalTax1IsNotUsedDesc",$mysoc->country_code)."</label></td></tr>";
|
||||||
@ -639,14 +639,14 @@ if ($action == 'edit' || $action == 'updateedit')
|
|||||||
// Note: When option is not set, it must not appears as set on on, because there is no default value for this option
|
// Note: When option is not set, it must not appears as set on on, because there is no default value for this option
|
||||||
print "<tr ".$bc[$var]."><td width=\"140\"><input type=\"radio\" name=\"optionlocaltax2\" id=\"lt2\" value=\"localtax2on\"".(($conf->global->FACTURE_LOCAL_TAX2_OPTION == '1' || $conf->global->FACTURE_LOCAL_TAX2_OPTION == "localtax2on")?" checked":"")."> ".$langs->transcountry("LocalTax2IsUsed",$mysoc->country_code)."</td>";
|
print "<tr ".$bc[$var]."><td width=\"140\"><input type=\"radio\" name=\"optionlocaltax2\" id=\"lt2\" value=\"localtax2on\"".(($conf->global->FACTURE_LOCAL_TAX2_OPTION == '1' || $conf->global->FACTURE_LOCAL_TAX2_OPTION == "localtax2on")?" checked":"")."> ".$langs->transcountry("LocalTax2IsUsed",$mysoc->country_code)."</td>";
|
||||||
print '<td colspan="2">';
|
print '<td colspan="2">';
|
||||||
print "<table>";
|
print '<table class="nobordernopadding">';
|
||||||
print "<tr><td><label for=\"lt2\">".$langs->transcountry("LocalTax2IsUsedDesc",$mysoc->country_code)."</label></td></tr>";
|
print "<tr><td><label for=\"lt2\">".$langs->transcountry("LocalTax2IsUsedDesc",$mysoc->country_code)."</label></td></tr>";
|
||||||
$example=$langs->transcountry("LocalTax2IsUsedExample",$mysoc->country_code);
|
$example=$langs->transcountry("LocalTax2IsUsedExample",$mysoc->country_code);
|
||||||
print ($example!="LocalTax2IsUsedExample"?"<tr><td><i>".$langs->trans("Example").': '.$langs->transcountry("LocalTax2IsUsedExample",$mysoc->country_code)."</i></td></tr>\n":"");
|
print ($example!="LocalTax2IsUsedExample"?"<tr><td><i>".$langs->trans("Example").': '.$langs->transcountry("LocalTax2IsUsedExample",$mysoc->country_code)."</i></td></tr>\n":"");
|
||||||
print '<tr><td align="left"><label for="lt2">'.$langs->trans("LTRate").'</label>: ';
|
|
||||||
if(! isOnlyOneLocalTax(2))
|
if(! isOnlyOneLocalTax(2))
|
||||||
{
|
{
|
||||||
$formcompany->select_localtax(2,$conf->global->MAIN_INFO_VALUE_LOCALTAX2, "lt2");
|
print '<tr><td align="left"><label for="lt2">'.$langs->trans("LTRate").'</label>: ';
|
||||||
|
$formcompany->select_localtax(2,$conf->global->MAIN_INFO_VALUE_LOCALTAX2, "lt2");
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
print '<tr><td align="left"><label for="clt2">'.$langs->trans("CalcLocaltax").'</label>: ';
|
print '<tr><td align="left"><label for="clt2">'.$langs->trans("CalcLocaltax").'</label>: ';
|
||||||
@ -656,7 +656,7 @@ if ($action == 'edit' || $action == 'updateedit')
|
|||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
print "<tr ".$bc[$var]."><td width=\"140\"><input type=\"radio\" name=\"optionlocaltax2\" id=\"nolt2\" value=\"localtax2off\"".($conf->global->FACTURE_LOCAL_TAX2_OPTION == "localtax2off"?" checked":"")."> ".$langs->transcountry("LocalTax2IsNotUsed",$mysoc->country_code)."</td>";
|
print "<tr ".$bc[$var]."><td width=\"140\"><input type=\"radio\" name=\"optionlocaltax2\" id=\"nolt2\" value=\"localtax2off\"".((empty($conf->global->FACTURE_LOCAL_TAX2_OPTION) || $conf->global->FACTURE_LOCAL_TAX2_OPTION == "localtax2off")?" checked":"")."> ".$langs->transcountry("LocalTax2IsNotUsed",$mysoc->country_code)."</td>";
|
||||||
print '<td colspan="2">';
|
print '<td colspan="2">';
|
||||||
print "<table>";
|
print "<table>";
|
||||||
print "<tr><td><label for=\"nolt2\">".$langs->transcountry("LocalTax2IsNotUsedDesc",$mysoc->country_code)."</label></td></tr>";
|
print "<tr><td><label for=\"nolt2\">".$langs->transcountry("LocalTax2IsNotUsedDesc",$mysoc->country_code)."</label></td></tr>";
|
||||||
@ -965,7 +965,7 @@ else
|
|||||||
$var=true;
|
$var=true;
|
||||||
|
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
print "<tr ".$bc[$var]."><td width=\"140\"><input ".$bc[$var]." type=\"radio\" name=\"optiontva\" id=\"use_vat\" disabled value=\"1\"".(empty($conf->global->FACTURE_TVAOPTION)?"":" checked")."> ".$langs->trans("VATIsUsed")."</td>";
|
print "<tr ".$bc[$var]."><td width=\"160\"><input ".$bc[$var]." type=\"radio\" name=\"optiontva\" id=\"use_vat\" disabled value=\"1\"".(empty($conf->global->FACTURE_TVAOPTION)?"":" checked")."> ".$langs->trans("VATIsUsed")."</td>";
|
||||||
print '<td colspan="2">';
|
print '<td colspan="2">';
|
||||||
print "<table>";
|
print "<table>";
|
||||||
print "<tr><td><label for=\"use_vat\">".$langs->trans("VATIsUsedDesc")."</label></td></tr>";
|
print "<tr><td><label for=\"use_vat\">".$langs->trans("VATIsUsedDesc")."</label></td></tr>";
|
||||||
@ -974,7 +974,7 @@ else
|
|||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
print "<tr ".$bc[$var]."><td width=\"140\"><input ".$bc[$var]." type=\"radio\" name=\"optiontva\" id=\"no_vat\" disabled value=\"0\"".(empty($conf->global->FACTURE_TVAOPTION)?" checked":"")."> ".$langs->trans("VATIsNotUsed")."</td>";
|
print "<tr ".$bc[$var]."><td width=\"160\"><input ".$bc[$var]." type=\"radio\" name=\"optiontva\" id=\"no_vat\" disabled value=\"0\"".(empty($conf->global->FACTURE_TVAOPTION)?" checked":"")."> ".$langs->trans("VATIsNotUsed")."</td>";
|
||||||
print '<td colspan="2">';
|
print '<td colspan="2">';
|
||||||
print "<table>";
|
print "<table>";
|
||||||
print "<tr><td><label=\"no_vat\">".$langs->trans("VATIsNotUsedDesc")."</label></td></tr>";
|
print "<tr><td><label=\"no_vat\">".$langs->trans("VATIsNotUsedDesc")."</label></td></tr>";
|
||||||
@ -988,7 +988,7 @@ else
|
|||||||
/*
|
/*
|
||||||
* Local Taxes
|
* Local Taxes
|
||||||
*/
|
*/
|
||||||
if ($mysoc->useLocalTax(1))
|
if ($mysoc->useLocalTax(1)) // True if we found at least on vat with a setup adding a localtax 1
|
||||||
{
|
{
|
||||||
// Local Tax 1
|
// Local Tax 1
|
||||||
print '<br>';
|
print '<br>';
|
||||||
@ -1000,7 +1000,7 @@ else
|
|||||||
$var=true;
|
$var=true;
|
||||||
|
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
print "<tr ".$bc[$var]."><td width=\"140\"><input ".$bc[$var]." type=\"radio\" name=\"optionlocaltax1\" id=\"lt1\" disabled value=\"localtax1on\"".(($conf->global->FACTURE_LOCAL_TAX1_OPTION == '1' || $conf->global->FACTURE_LOCAL_TAX1_OPTION == "localtax1on")?" checked":"")."> ".$langs->transcountry("LocalTax1IsUsed",$mysoc->country_code)."</td>";
|
print "<tr ".$bc[$var]."><td width=\"160\"><input ".$bc[$var]." type=\"radio\" name=\"optionlocaltax1\" id=\"lt1\" disabled value=\"localtax1on\"".(($conf->global->FACTURE_LOCAL_TAX1_OPTION == '1' || $conf->global->FACTURE_LOCAL_TAX1_OPTION == "localtax1on")?" checked":"")."> ".$langs->transcountry("LocalTax1IsUsed",$mysoc->country_code)."</td>";
|
||||||
print '<td colspan="2">';
|
print '<td colspan="2">';
|
||||||
print "<table>";
|
print "<table>";
|
||||||
print "<tr><td></label for=\"lt1\">".$langs->transcountry("LocalTax1IsUsedDesc",$mysoc->country_code)."</label></td></tr>";
|
print "<tr><td></label for=\"lt1\">".$langs->transcountry("LocalTax1IsUsedDesc",$mysoc->country_code)."</label></td></tr>";
|
||||||
@ -1028,7 +1028,7 @@ else
|
|||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
print "<tr ".$bc[$var]."><td width=\"140\"><input ".$bc[$var]." type=\"radio\" name=\"optionlocaltax1\" id=\"nolt1\" disabled value=\"localtax1off\"".($conf->global->FACTURE_LOCAL_TAX1_OPTION == "localtax1off"?" checked":"")."> ".$langs->transcountry("LocalTax1IsNotUsed",$mysoc->country_code)."</td>";
|
print "<tr ".$bc[$var]."><td width=\"160\"><input ".$bc[$var]." type=\"radio\" name=\"optionlocaltax1\" id=\"nolt1\" disabled value=\"localtax1off\"".((empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) || $conf->global->FACTURE_LOCAL_TAX1_OPTION == "localtax1off")?" checked":"")."> ".$langs->transcountry("LocalTax1IsNotUsed",$mysoc->country_code)."</td>";
|
||||||
print '<td colspan="2">';
|
print '<td colspan="2">';
|
||||||
print "<table>";
|
print "<table>";
|
||||||
print "<tr><td><label for=\"no_lt1\">".$langs->transcountry("LocalTax1IsNotUsedDesc",$mysoc->country_code)."</label></td></tr>";
|
print "<tr><td><label for=\"no_lt1\">".$langs->transcountry("LocalTax1IsNotUsedDesc",$mysoc->country_code)."</label></td></tr>";
|
||||||
@ -1039,7 +1039,7 @@ else
|
|||||||
|
|
||||||
print "</table>";
|
print "</table>";
|
||||||
}
|
}
|
||||||
if ($mysoc->useLocalTax(2))
|
if ($mysoc->useLocalTax(2)) // True if we found at least on vat with a setup adding a localtax 1
|
||||||
{
|
{
|
||||||
// Local Tax 2
|
// Local Tax 2
|
||||||
print '<br>';
|
print '<br>';
|
||||||
@ -1051,7 +1051,7 @@ else
|
|||||||
$var=true;
|
$var=true;
|
||||||
|
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
print "<tr ".$bc[$var]."><td width=\"140\"><input ".$bc[$var]." type=\"radio\" name=\"optionlocaltax2\" id=\"lt2\" disabled value=\"localtax2on\"".(($conf->global->FACTURE_LOCAL_TAX2_OPTION == '1' || $conf->global->FACTURE_LOCAL_TAX2_OPTION == "localtax2on")?" checked":"")."> ".$langs->transcountry("LocalTax2IsUsed",$mysoc->country_code)."</td>";
|
print "<tr ".$bc[$var]."><td width=\"160\"><input ".$bc[$var]." type=\"radio\" name=\"optionlocaltax2\" id=\"lt2\" disabled value=\"localtax2on\"".(($conf->global->FACTURE_LOCAL_TAX2_OPTION == '1' || $conf->global->FACTURE_LOCAL_TAX2_OPTION == "localtax2on")?" checked":"")."> ".$langs->transcountry("LocalTax2IsUsed",$mysoc->country_code)."</td>";
|
||||||
print '<td colspan="2">';
|
print '<td colspan="2">';
|
||||||
print "<table>";
|
print "<table>";
|
||||||
print "<tr><td><label for=\"lt2\">".$langs->transcountry("LocalTax2IsUsedDesc",$mysoc->country_code)."</label></td></tr>";
|
print "<tr><td><label for=\"lt2\">".$langs->transcountry("LocalTax2IsUsedDesc",$mysoc->country_code)."</label></td></tr>";
|
||||||
@ -1080,7 +1080,7 @@ else
|
|||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
print "<tr ".$bc[$var]."><td width=\"140\"><input ".$bc[$var]." type=\"radio\" name=\"optionlocaltax2\" id=\"nolt2\" disabled value=\"localtax2off\"".($conf->global->FACTURE_LOCAL_TAX2_OPTION == "localtax2off"?" checked":"")."> ".$langs->transcountry("LocalTax2IsNotUsed",$mysoc->country_code)."</td>";
|
print "<tr ".$bc[$var]."><td width=\"160\"><input ".$bc[$var]." type=\"radio\" name=\"optionlocaltax2\" id=\"nolt2\" disabled value=\"localtax2off\"".((empty($conf->global->FACTURE_LOCAL_TAX2_OPTION) || $conf->global->FACTURE_LOCAL_TAX2_OPTION == "localtax2off")?" checked":"")."> ".$langs->transcountry("LocalTax2IsNotUsed",$mysoc->country_code)."</td>";
|
||||||
print '<td colspan="2">';
|
print '<td colspan="2">';
|
||||||
print "<table>";
|
print "<table>";
|
||||||
print "<tr><td><label for=\"nolt2\">".$langs->transcountry("LocalTax2IsNotUsedDesc",$mysoc->country_code)."</label></td></tr>";
|
print "<tr><td><label for=\"nolt2\">".$langs->transcountry("LocalTax2IsNotUsedDesc",$mysoc->country_code)."</label></td></tr>";
|
||||||
|
|||||||
@ -150,7 +150,7 @@ $tabsql[6] = "SELECT a.id as rowid, a.code as code, a.libelle AS libelle, a.t
|
|||||||
$tabsql[7] = "SELECT a.id as rowid, a.code as code, a.libelle AS libelle, a.accountancy_code as accountancy_code, a.deductible, c.code as country_code, c.label as country, a.fk_pays as country_id, a.active FROM ".MAIN_DB_PREFIX."c_chargesociales AS a, ".MAIN_DB_PREFIX."c_country as c WHERE a.fk_pays=c.rowid and c.active=1";
|
$tabsql[7] = "SELECT a.id as rowid, a.code as code, a.libelle AS libelle, a.accountancy_code as accountancy_code, a.deductible, c.code as country_code, c.label as country, a.fk_pays as country_id, a.active FROM ".MAIN_DB_PREFIX."c_chargesociales AS a, ".MAIN_DB_PREFIX."c_country as c WHERE a.fk_pays=c.rowid and c.active=1";
|
||||||
$tabsql[8] = "SELECT t.id as rowid, t.code as code, t.libelle, t.fk_country as country_id, c.code as country_code, c.label as country, t.active FROM ".MAIN_DB_PREFIX."c_typent as t LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON t.fk_country=c.rowid";
|
$tabsql[8] = "SELECT t.id as rowid, t.code as code, t.libelle, t.fk_country as country_id, c.code as country_code, c.label as country, t.active FROM ".MAIN_DB_PREFIX."c_typent as t LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON t.fk_country=c.rowid";
|
||||||
$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.code, 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.libelle, c.libelle_facture, c.nbjour, c.fdm, c.decalage, c.active, c.sortorder 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";
|
||||||
@ -182,7 +182,7 @@ $tabsqlsort[6] ="a.type ASC, a.module ASC, a.position ASC, a.code ASC";
|
|||||||
$tabsqlsort[7] ="country ASC, code ASC, a.libelle ASC";
|
$tabsqlsort[7] ="country ASC, code ASC, a.libelle ASC";
|
||||||
$tabsqlsort[8] ="country DESC, libelle ASC";
|
$tabsqlsort[8] ="country DESC, libelle ASC";
|
||||||
$tabsqlsort[9] ="label ASC";
|
$tabsqlsort[9] ="label ASC";
|
||||||
$tabsqlsort[10]="country ASC, taux ASC, recuperableonly ASC, localtax1 ASC, localtax2 ASC";
|
$tabsqlsort[10]="country ASC, code ASC, taux ASC, recuperableonly ASC, localtax1 ASC, localtax2 ASC";
|
||||||
$tabsqlsort[11]="element ASC, source ASC, code ASC";
|
$tabsqlsort[11]="element ASC, source ASC, code ASC";
|
||||||
$tabsqlsort[12]="sortorder ASC, code ASC";
|
$tabsqlsort[12]="sortorder ASC, code ASC";
|
||||||
$tabsqlsort[13]="code ASC";
|
$tabsqlsort[13]="code ASC";
|
||||||
@ -214,7 +214,7 @@ $tabfield[6] = "code,libelle,type,color,position";
|
|||||||
$tabfield[7] = "code,libelle,country,accountancy_code,deductible";
|
$tabfield[7] = "code,libelle,country,accountancy_code,deductible";
|
||||||
$tabfield[8] = "code,libelle,country_id,country";
|
$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,code,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,sortorder";
|
$tabfield[12]= "code,libelle,libelle_facture,nbjour,fdm,decalage,sortorder";
|
||||||
$tabfield[13]= "code,libelle,type,accountancy_code";
|
$tabfield[13]= "code,libelle,type,accountancy_code";
|
||||||
@ -246,7 +246,7 @@ $tabfieldvalue[6] = "code,libelle,type,color,position";
|
|||||||
$tabfieldvalue[7] = "code,libelle,country,accountancy_code,deductible";
|
$tabfieldvalue[7] = "code,libelle,country,accountancy_code,deductible";
|
||||||
$tabfieldvalue[8] = "code,libelle,country";
|
$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,code,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,sortorder";
|
$tabfieldvalue[12]= "code,libelle,libelle_facture,nbjour,fdm,decalage,sortorder";
|
||||||
$tabfieldvalue[13]= "code,libelle,type,accountancy_code";
|
$tabfieldvalue[13]= "code,libelle,type,accountancy_code";
|
||||||
@ -278,7 +278,7 @@ $tabfieldinsert[6] = "code,libelle,type,color,position";
|
|||||||
$tabfieldinsert[7] = "code,libelle,fk_pays,accountancy_code,deductible";
|
$tabfieldinsert[7] = "code,libelle,fk_pays,accountancy_code,deductible";
|
||||||
$tabfieldinsert[8] = "code,libelle,fk_country";
|
$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,code,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,sortorder";
|
$tabfieldinsert[12]= "code,libelle,libelle_facture,nbjour,fdm,decalage,sortorder";
|
||||||
$tabfieldinsert[13]= "code,libelle,type,accountancy_code";
|
$tabfieldinsert[13]= "code,libelle,type,accountancy_code";
|
||||||
@ -376,7 +376,7 @@ $tabhelp[6] = array('code'=>$langs->trans("EnterAnyCode"), 'position'=>$langs->
|
|||||||
$tabhelp[7] = array('code'=>$langs->trans("EnterAnyCode"));
|
$tabhelp[7] = array('code'=>$langs->trans("EnterAnyCode"));
|
||||||
$tabhelp[8] = array('code'=>$langs->trans("EnterAnyCode"));
|
$tabhelp[8] = array('code'=>$langs->trans("EnterAnyCode"));
|
||||||
$tabhelp[9] = array('code'=>$langs->trans("EnterAnyCode"), 'unicode'=>$langs->trans("UnicodeCurrency"));
|
$tabhelp[9] = array('code'=>$langs->trans("EnterAnyCode"), 'unicode'=>$langs->trans("UnicodeCurrency"));
|
||||||
$tabhelp[10] = array('taux'=>$langs->trans("SellTaxRate"), 'recuperableonly'=>$langs->trans("RecuperableOnly"), 'localtax1_type'=>$langs->trans("LocalTaxDesc"), 'localtax2_type'=>$langs->trans("LocalTaxDesc"));
|
$tabhelp[10] = array('code'=>$langs->trans("EnterAnyCode"), 'taux'=>$langs->trans("SellTaxRate"), 'recuperableonly'=>$langs->trans("RecuperableOnly"), 'localtax1_type'=>$langs->trans("LocalTaxDesc"), 'localtax2_type'=>$langs->trans("LocalTaxDesc"));
|
||||||
$tabhelp[11] = array();
|
$tabhelp[11] = array();
|
||||||
$tabhelp[12] = array('code'=>$langs->trans("EnterAnyCode"));
|
$tabhelp[12] = array('code'=>$langs->trans("EnterAnyCode"));
|
||||||
$tabhelp[13] = array('code'=>$langs->trans("EnterAnyCode"));
|
$tabhelp[13] = array('code'=>$langs->trans("EnterAnyCode"));
|
||||||
@ -486,7 +486,7 @@ if ($id == 25)
|
|||||||
'shipping_send' => $langs->trans('MailToSendShipment'),
|
'shipping_send' => $langs->trans('MailToSendShipment'),
|
||||||
'fichinter_send' => $langs->trans('MailToSendIntervention'),
|
'fichinter_send' => $langs->trans('MailToSendIntervention'),
|
||||||
|
|
||||||
'askpricesupplier_send' => $langs->trans('MailToSendSupplierRequestForQuotation'),
|
'supplier_proposal_send' => $langs->trans('MailToSendSupplierRequestForQuotation'),
|
||||||
'order_supplier_send' => $langs->trans('MailToSendSupplierOrder'),
|
'order_supplier_send' => $langs->trans('MailToSendSupplierOrder'),
|
||||||
'invoice_supplier_send' => $langs->trans('MailToSendSupplierInvoice'),
|
'invoice_supplier_send' => $langs->trans('MailToSendSupplierInvoice'),
|
||||||
|
|
||||||
@ -522,8 +522,8 @@ if (GETPOST('actionadd') || GETPOST('actionmodify'))
|
|||||||
$ok=1;
|
$ok=1;
|
||||||
foreach ($listfield as $f => $value)
|
foreach ($listfield as $f => $value)
|
||||||
{
|
{
|
||||||
if ($value == 'country_id' && in_array($tablib[$id],array('DictionaryVAT','DictionaryRegion','DictionaryCompanyType','DictionaryHolidayTypes', 'DictionaryRevenueStamp'))) continue; // For some pages, country is not mandatory
|
if ($value == 'country_id' && in_array($tablib[$id],array('DictionaryVAT','DictionaryRegion','DictionaryCompanyType','DictionaryHolidayTypes','DictionaryRevenueStamp'))) continue; // For some pages, country is not mandatory
|
||||||
if ($value == 'country' && in_array($tablib[$id],array('DictionaryCanton','DictionaryCompanyType', 'DictionaryRevenueStamp'))) continue; // For some pages, country is not mandatory
|
if ($value == 'country' && in_array($tablib[$id],array('DictionaryCanton','DictionaryCompanyType','DictionaryRevenueStamp'))) continue; // For some pages, country is not mandatory
|
||||||
if ($value == 'localtax1' && empty($_POST['localtax1_type'])) continue;
|
if ($value == 'localtax1' && empty($_POST['localtax1_type'])) continue;
|
||||||
if ($value == 'localtax2' && empty($_POST['localtax2_type'])) continue;
|
if ($value == 'localtax2' && empty($_POST['localtax2_type'])) continue;
|
||||||
if ($value == 'color' && empty($_POST['color'])) continue;
|
if ($value == 'color' && empty($_POST['color'])) continue;
|
||||||
@ -1321,7 +1321,7 @@ if ($id)
|
|||||||
// Can an entry be erased or disabled ?
|
// Can an entry be erased or disabled ?
|
||||||
$iserasable=1;$isdisable=1; // true by default
|
$iserasable=1;$isdisable=1; // true by default
|
||||||
|
|
||||||
if (isset($obj->code))
|
if (isset($obj->code) && $id != 10)
|
||||||
{
|
{
|
||||||
if (($obj->code == '0' || $obj->code == '' || preg_match('/unknown/i',$obj->code))) { $iserasable = 0; $isdisable = 0; }
|
if (($obj->code == '0' || $obj->code == '' || preg_match('/unknown/i',$obj->code))) { $iserasable = 0; $isdisable = 0; }
|
||||||
else if ($obj->code == 'RECEP') { $iserasable = 0; $isdisable = 0; }
|
else if ($obj->code == 'RECEP') { $iserasable = 0; $isdisable = 0; }
|
||||||
@ -1356,7 +1356,7 @@ if ($id)
|
|||||||
print "</td>";
|
print "</td>";
|
||||||
|
|
||||||
// Modify link
|
// Modify link
|
||||||
if ($iserasable) print '<td align="center"><a href="'.$url.'action=edit#'.(! empty($obj->rowid)?$obj->rowid:(! empty($obj->code)?$obj->code:'')).'">'.img_edit().'</a></td>';
|
if ($iserasable) print '<td align="center"><a class="reposition" href="'.$url.'action=edit">'.img_edit().'</a></td>';
|
||||||
else print '<td> </td>';
|
else print '<td> </td>';
|
||||||
|
|
||||||
// Delete link
|
// Delete link
|
||||||
@ -1479,7 +1479,7 @@ function fieldList($fieldlist, $obj='', $tabname='', $context='')
|
|||||||
} // For state page, we do not show the country input (we link to region, not country)
|
} // For state page, we do not show the country input (we link to region, not country)
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$fieldname='country';
|
$fieldname='country';
|
||||||
print $form->select_country((! empty($obj->country_code)?$obj->country_code:(! empty($obj->country)?$obj->country:'')), $fieldname, '', 28);
|
print $form->select_country((! empty($obj->country_code)?$obj->country_code:(! empty($obj->country)?$obj->country:'')), $fieldname, '', 28, 'maxwidth300');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
elseif ($fieldlist[$field] == 'country_id')
|
elseif ($fieldlist[$field] == 'country_id')
|
||||||
|
|||||||
@ -70,7 +70,8 @@ if ($action == "save")
|
|||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
|
|
||||||
llxHeader('',$langs->trans("Audit"));
|
$wikihelp='EN:Setup_Security|FR:Paramétrage_Sécurité|ES:Configuración_Seguridad';
|
||||||
|
llxHeader('',$langs->trans("Audit"),$wikihelp);
|
||||||
|
|
||||||
//$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
|
//$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
|
||||||
print load_fiche_titre($langs->trans("SecuritySetup"),'','title_setup');
|
print load_fiche_titre($langs->trans("SecuritySetup"),'','title_setup');
|
||||||
|
|||||||
@ -56,24 +56,28 @@ if (empty($conf->use_javascript_ajax))
|
|||||||
$searchformmodule=array('Module1Name','Module1Name','Module50Name','Module50Name','Module310Name','Module400Name');
|
$searchformmodule=array('Module1Name','Module1Name','Module50Name','Module50Name','Module310Name','Module400Name');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Action
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (GETPOST('cancel'))
|
||||||
|
{
|
||||||
|
$action='';
|
||||||
|
}
|
||||||
|
|
||||||
if ($action == 'update')
|
if ($action == 'update')
|
||||||
{
|
{
|
||||||
dolibarr_set_const($db, "MAIN_LANG_DEFAULT", $_POST["main_lang_default"],'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_LANG_DEFAULT", $_POST["main_lang_default"],'chaine',0,'',$conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_MULTILANGS", $_POST["main_multilangs"],'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_MULTILANGS", $_POST["main_multilangs"],'chaine',0,'',$conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_SIZE_LISTE_LIMIT", $_POST["main_size_liste_limit"],'chaine',0,'',$conf->entity);
|
|
||||||
dolibarr_set_const($db, "MAIN_SIZE_SHORTLISTE_LIMIT", $_POST["main_size_shortliste_limit"],'chaine',0,'',$conf->entity);
|
|
||||||
dolibarr_set_const($db, "MAIN_DISABLE_JAVASCRIPT", $_POST["main_disable_javascript"],'chaine',0,'',$conf->entity);
|
|
||||||
dolibarr_set_const($db, "MAIN_BUTTON_HIDE_UNAUTHORIZED", $_POST["MAIN_BUTTON_HIDE_UNAUTHORIZED"],'chaine',0,'',$conf->entity);
|
|
||||||
dolibarr_set_const($db, "MAIN_START_WEEK", $_POST["MAIN_START_WEEK"],'chaine',0,'',$conf->entity);
|
|
||||||
dolibarr_set_const($db, "MAIN_DEFAULT_WORKING_DAYS", $_POST["MAIN_DEFAULT_WORKING_DAYS"],'chaine',0,'',$conf->entity);
|
|
||||||
dolibarr_set_const($db, "MAIN_DEFAULT_WORKING_HOURS", $_POST["MAIN_DEFAULT_WORKING_HOURS"],'chaine',0,'',$conf->entity);
|
|
||||||
dolibarr_set_const($db, "MAIN_SHOW_LOGO", $_POST["MAIN_SHOW_LOGO"],'chaine',0,'',$conf->entity);
|
|
||||||
dolibarr_set_const($db, "MAIN_ACTIVATE_FILECACHE", $_POST["MAIN_ACTIVATE_FILECACHE"],'chaine',0,'',$conf->entity);
|
|
||||||
dolibarr_set_const($db, "MAIN_FIRSTNAME_NAME_POSITION", $_POST["MAIN_FIRSTNAME_NAME_POSITION"],'chaine',0,'',$conf->entity);
|
|
||||||
|
|
||||||
dolibarr_set_const($db, "MAIN_THEME", $_POST["main_theme"],'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_THEME", $_POST["main_theme"],'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
$val=(join(',',(colorStringToArray(GETPOST('THEME_ELDY_TOPMENU_BACK1'),array()))));
|
$val=(join(',',(colorStringToArray(GETPOST('THEME_ELDY_BACKBODY'),array()))));
|
||||||
|
if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_BACKBODY', $conf->entity);
|
||||||
|
else dolibarr_set_const($db, 'THEME_ELDY_BACKBODY', join(',',colorStringToArray(GETPOST('THEME_ELDY_BACKBODY'),array())),'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
|
$val=(join(',',(colorStringToArray(GETPOST('THEME_ELDY_TOPMENU_BACK1'),array()))));
|
||||||
if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_TOPMENU_BACK1', $conf->entity);
|
if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_TOPMENU_BACK1', $conf->entity);
|
||||||
else dolibarr_set_const($db, 'THEME_ELDY_TOPMENU_BACK1', join(',',colorStringToArray(GETPOST('THEME_ELDY_TOPMENU_BACK1'),array())),'chaine',0,'',$conf->entity);
|
else dolibarr_set_const($db, 'THEME_ELDY_TOPMENU_BACK1', join(',',colorStringToArray(GETPOST('THEME_ELDY_TOPMENU_BACK1'),array())),'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
@ -81,7 +85,14 @@ if ($action == 'update')
|
|||||||
if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_BACKTITLE1', $conf->entity);
|
if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_BACKTITLE1', $conf->entity);
|
||||||
else dolibarr_set_const($db, 'THEME_ELDY_BACKTITLE1', join(',',colorStringToArray(GETPOST('THEME_ELDY_BACKTITLE1'),array())),'chaine',0,'',$conf->entity);
|
else dolibarr_set_const($db, 'THEME_ELDY_BACKTITLE1', join(',',colorStringToArray(GETPOST('THEME_ELDY_BACKTITLE1'),array())),'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
/*
|
if (GETPOST('THEME_ELDY_USE_HOVER') == '') dolibarr_del_const($db, "THEME_ELDY_USE_HOVER", $conf->entity);
|
||||||
|
else dolibarr_set_const($db, "THEME_ELDY_USE_HOVER", $_POST["THEME_ELDY_USE_HOVER"], 'chaine', 0, '', $conf->entity);
|
||||||
|
|
||||||
|
$val=(join(',',(colorStringToArray(GETPOST('THEME_ELDY_TEXTLINK'),array()))));
|
||||||
|
if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_TEXTLINK', $conf->entity);
|
||||||
|
else dolibarr_set_const($db, 'THEME_ELDY_TEXTLINK', join(',',colorStringToArray(GETPOST('THEME_ELDY_TEXTLINK'),array())),'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
|
/*
|
||||||
dolibarr_set_const($db, "MAIN_SEARCHFORM_CONTACT", $_POST["MAIN_SEARCHFORM_CONTACT"],'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_SEARCHFORM_CONTACT", $_POST["MAIN_SEARCHFORM_CONTACT"],'chaine',0,'',$conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_SEARCHFORM_SOCIETE", $_POST["MAIN_SEARCHFORM_SOCIETE"],'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_SEARCHFORM_SOCIETE", $_POST["MAIN_SEARCHFORM_SOCIETE"],'chaine',0,'',$conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_SEARCHFORM_PRODUITSERVICE", $_POST["MAIN_SEARCHFORM_PRODUITSERVICE"],'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_SEARCHFORM_PRODUITSERVICE", $_POST["MAIN_SEARCHFORM_PRODUITSERVICE"],'chaine',0,'',$conf->entity);
|
||||||
@ -91,15 +102,22 @@ if ($action == 'update')
|
|||||||
dolibarr_set_const($db, "MAIN_SEARCHFORM_EMPLOYEE", $_POST["MAIN_SEARCHFORM_EMPLOYEE"],'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_SEARCHFORM_EMPLOYEE", $_POST["MAIN_SEARCHFORM_EMPLOYEE"],'chaine',0,'',$conf->entity);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
dolibarr_set_const($db, "MAIN_SIZE_LISTE_LIMIT", $_POST["main_size_liste_limit"],'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_SIZE_SHORTLISTE_LIMIT", $_POST["main_size_shortliste_limit"],'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_DISABLE_JAVASCRIPT", $_POST["main_disable_javascript"],'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_BUTTON_HIDE_UNAUTHORIZED", $_POST["MAIN_BUTTON_HIDE_UNAUTHORIZED"],'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_START_WEEK", $_POST["MAIN_START_WEEK"],'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_DEFAULT_WORKING_DAYS", $_POST["MAIN_DEFAULT_WORKING_DAYS"],'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_DEFAULT_WORKING_HOURS", $_POST["MAIN_DEFAULT_WORKING_HOURS"],'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_SHOW_LOGO", $_POST["MAIN_SHOW_LOGO"],'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_FIRSTNAME_NAME_POSITION", $_POST["MAIN_FIRSTNAME_NAME_POSITION"],'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
dolibarr_set_const($db, "MAIN_HELPCENTER_DISABLELINK", $_POST["MAIN_HELPCENTER_DISABLELINK"],'chaine',0,'',0); // Param for all entities
|
dolibarr_set_const($db, "MAIN_HELPCENTER_DISABLELINK", $_POST["MAIN_HELPCENTER_DISABLELINK"],'chaine',0,'',0); // Param for all entities
|
||||||
dolibarr_set_const($db, "MAIN_MOTD", dol_htmlcleanlastbr($_POST["main_motd"]),'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_MOTD", dol_htmlcleanlastbr($_POST["main_motd"]),'chaine',0,'',$conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_HOME", dol_htmlcleanlastbr($_POST["main_home"]),'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_HOME", dol_htmlcleanlastbr($_POST["main_home"]),'chaine',0,'',$conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_HELP_DISABLELINK", $_POST["MAIN_HELP_DISABLELINK"],'chaine',0,'',0); // Param for all entities
|
dolibarr_set_const($db, "MAIN_HELP_DISABLELINK", $_POST["MAIN_HELP_DISABLELINK"],'chaine',0,'',0); // Param for all entities
|
||||||
dolibarr_set_const($db, "MAIN_BUGTRACK_ENABLELINK", $_POST["MAIN_BUGTRACK_ENABLELINK"],'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_BUGTRACK_ENABLELINK", $_POST["MAIN_BUGTRACK_ENABLELINK"],'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
if (GETPOST('THEME_ELDY_USE_HOVER') == '') dolibarr_del_const($db, "THEME_ELDY_USE_HOVER", $conf->entity);
|
|
||||||
else dolibarr_set_const($db, "THEME_ELDY_USE_HOVER", $_POST["THEME_ELDY_USE_HOVER"], 'chaine', 0, '', $conf->entity);
|
|
||||||
|
|
||||||
// This one is not always defined
|
// This one is not always defined
|
||||||
if (isset($_POST["MAIN_USE_PREVIEW_TABS"])) dolibarr_set_const($db, "MAIN_USE_PREVIEW_TABS", $_POST["MAIN_USE_PREVIEW_TABS"],'chaine',0,'',$conf->entity);
|
if (isset($_POST["MAIN_USE_PREVIEW_TABS"])) dolibarr_set_const($db, "MAIN_USE_PREVIEW_TABS", $_POST["MAIN_USE_PREVIEW_TABS"],'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
@ -199,16 +217,6 @@ if ($action == 'edit') // Edit
|
|||||||
print '<td width="20"> </td>';
|
print '<td width="20"> </td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
// Activate FileCache - Developement
|
|
||||||
if ($conf->global->MAIN_FEATURES_LEVEL == 2 || ! empty($conf->global->MAIN_ACTIVATE_FILECACHE)) {
|
|
||||||
$var=!$var;
|
|
||||||
print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("EnableFileCache").'</td><td>';
|
|
||||||
print $form->selectyesno('MAIN_ACTIVATE_FILECACHE',$conf->global->MAIN_ACTIVATE_FILECACHE,1);
|
|
||||||
print '</td>';
|
|
||||||
print '<td width="20"> </td>';
|
|
||||||
print '</tr>';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Max size of lists
|
// Max size of lists
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
print '<tr '.$bc[$var].'><td>'.$langs->trans("DefaultMaxSizeList").'</td><td><input class="flat" name="main_size_liste_limit" size="4" value="' . $conf->global->MAIN_SIZE_LISTE_LIMIT . '"></td>';
|
print '<tr '.$bc[$var].'><td>'.$langs->trans("DefaultMaxSizeList").'</td><td><input class="flat" name="main_size_liste_limit" size="4" value="' . $conf->global->MAIN_SIZE_LISTE_LIMIT . '"></td>';
|
||||||
@ -327,11 +335,12 @@ if ($action == 'edit') // Edit
|
|||||||
|
|
||||||
|
|
||||||
print '<br><div class="center">';
|
print '<br><div class="center">';
|
||||||
print '<input class="button" type="submit" value="'.$langs->trans("Save").'">';
|
print '<input class="button" type="submit" name="submit" value="'.$langs->trans("Save").'">';
|
||||||
|
print ' ';
|
||||||
|
print '<input class="button" type="submit" name="cancel" value="'.$langs->trans("Cancel").'">';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
print '<br>';
|
|
||||||
}
|
}
|
||||||
else // Show
|
else // Show
|
||||||
{
|
{
|
||||||
@ -393,14 +402,6 @@ else // Show
|
|||||||
print '<td width="20"> </td>';
|
print '<td width="20"> </td>';
|
||||||
print "</tr>";
|
print "</tr>";
|
||||||
|
|
||||||
// Activate FileCache - Developement
|
|
||||||
if ($conf->global->MAIN_FEATURES_LEVEL == 2 || ! empty($conf->global->MAIN_ACTIVATE_FILECACHE)) {
|
|
||||||
$var=!$var;
|
|
||||||
print '<tr '.$bc[$var].'><td>'.$langs->trans("EnableFileCache").'</td><td>' . yn($conf->global->MAIN_ACTIVATE_FILECACHE) . '</td>';
|
|
||||||
print '<td width="20"> </td>';
|
|
||||||
print "</tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
print '<tr '.$bc[$var].'><td>'.$langs->trans("DefaultMaxSizeList").'</td><td>' . $conf->global->MAIN_SIZE_LISTE_LIMIT . '</td>';
|
print '<tr '.$bc[$var].'><td>'.$langs->trans("DefaultMaxSizeList").'</td><td>' . $conf->global->MAIN_SIZE_LISTE_LIMIT . '</td>';
|
||||||
print '<td width="20"> </td>';
|
print '<td width="20"> </td>';
|
||||||
@ -505,7 +506,6 @@ else // Show
|
|||||||
print '<div class="tabsAction">';
|
print '<div class="tabsAction">';
|
||||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit">'.$langs->trans("Modify").'</a>';
|
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit">'.$langs->trans("Modify").'</a>';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
print '<br>';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -164,10 +164,15 @@ foreach ($modulesdir as $dir)
|
|||||||
|
|
||||||
$special = $objMod->special;
|
$special = $objMod->special;
|
||||||
$familykey = $objMod->family;
|
$familykey = $objMod->family;
|
||||||
|
$moduleposition = ($objMod->module_position?$objMod->module_position:'500');
|
||||||
|
if ($moduleposition == 500 && ($objMod->isCoreOrExternalModule() == 'external'))
|
||||||
|
{
|
||||||
|
$moduleposition = 800;
|
||||||
|
}
|
||||||
|
|
||||||
if ($special == 1) $familykey='interface';
|
if ($special == 1) $familykey='interface';
|
||||||
|
|
||||||
$orders[$i] = $familyinfo[$familykey]['position']."_".$familykey."_".$j; // Sort by family, then by module number
|
$orders[$i] = $familyinfo[$familykey]['position']."_".$familykey."_".$moduleposition."_".$j; // Sort by family, then by module position then number
|
||||||
$dirmod[$i] = $dir;
|
$dirmod[$i] = $dir;
|
||||||
// Set categ[$i]
|
// Set categ[$i]
|
||||||
$specialstring = isset($specialtostring[$special])?$specialtostring[$special]:'unknown';
|
$specialstring = isset($specialtostring[$special])?$specialtostring[$special]:'unknown';
|
||||||
@ -312,7 +317,7 @@ if ($mode != 'marketplace')
|
|||||||
foreach ($orders as $key => $value)
|
foreach ($orders as $key => $value)
|
||||||
{
|
{
|
||||||
$tab=explode('_',$value);
|
$tab=explode('_',$value);
|
||||||
$familypos=$tab[0]; $familykey=$tab[1]; $numero=$tab[2];
|
$familyposition=$tab[0]; $familykey=$tab[1]; $module_position=$tab[2]; $numero=$tab[3];
|
||||||
|
|
||||||
$modName = $filename[$key];
|
$modName = $filename[$key];
|
||||||
$objMod = $modules[$key];
|
$objMod = $modules[$key];
|
||||||
@ -426,12 +431,13 @@ if ($mode != 'marketplace')
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print '<a class="reposition" href="modules.php?id='.$objMod->numero.'&action=reset&value=' . $modName . '&mode=' . $mode . '">';
|
print '<a class="reposition" href="modules.php?id='.$objMod->numero.'&module_position='.$module_position.'&action=reset&value=' . $modName . '&mode=' . $mode . '">';
|
||||||
print img_picto($langs->trans("Activated"),'switch_on');
|
print img_picto($langs->trans("Activated"),'switch_on');
|
||||||
print '</a>';
|
print '</a>';
|
||||||
}
|
}
|
||||||
print '</td>'."\n";
|
print '</td>'."\n";
|
||||||
|
|
||||||
|
// Config link
|
||||||
if (! empty($objMod->config_page_url) && !$disableSetup)
|
if (! empty($objMod->config_page_url) && !$disableSetup)
|
||||||
{
|
{
|
||||||
if (is_array($objMod->config_page_url))
|
if (is_array($objMod->config_page_url))
|
||||||
@ -489,7 +495,7 @@ if ($mode != 'marketplace')
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Module non actif
|
// Module non actif
|
||||||
print '<a class="reposition" href="modules.php?id='.$objMod->numero.'&action=set&value=' . $modName . '&mode=' . $mode . '">';
|
print '<a class="reposition" href="modules.php?id='.$objMod->numero.'&module_position='.$module_position.'&action=set&value=' . $modName . '&mode=' . $mode . '">';
|
||||||
print img_picto($langs->trans("Disabled"),'switch_off');
|
print img_picto($langs->trans("Disabled"),'switch_off');
|
||||||
print "</a>\n";
|
print "</a>\n";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -62,7 +62,8 @@ if ($action == 'remove')
|
|||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
|
|
||||||
llxHeader('',$langs->trans("DefaultRights"));
|
$wikihelp='EN:Setup_Security|FR:Paramétrage_Sécurité|ES:Configuración_Seguridad';
|
||||||
|
llxHeader('',$langs->trans("DefaultRights"), $wikihelp);
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("SecuritySetup"),'','title_setup');
|
print load_fiche_titre($langs->trans("SecuritySetup"),'','title_setup');
|
||||||
|
|
||||||
|
|||||||
@ -79,7 +79,8 @@ if (GETPOST("action") == 'set_proxy')
|
|||||||
|
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
|
|
||||||
llxHeader('',$langs->trans("Proxy"));
|
$wikihelp='EN:Setup_Security|FR:Paramétrage_Sécurité|ES:Configuración_Seguridad';
|
||||||
|
llxHeader('',$langs->trans("Proxy"), $wikihelp);
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("SecuritySetup"),'','title_setup');
|
print load_fiche_titre($langs->trans("SecuritySetup"),'','title_setup');
|
||||||
|
|
||||||
|
|||||||
@ -187,7 +187,8 @@ if ($action == 'maj_pattern')
|
|||||||
*/
|
*/
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
|
|
||||||
llxHeader('',$langs->trans("Passwords"));
|
$wikihelp='EN:Setup_Security|FR:Paramétrage_Sécurité|ES:Configuración_Seguridad';
|
||||||
|
llxHeader('',$langs->trans("Passwords"),$wikihelp);
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("SecuritySetup"),'','title_setup');
|
print load_fiche_titre($langs->trans("SecuritySetup"),'','title_setup');
|
||||||
|
|
||||||
|
|||||||
@ -109,7 +109,8 @@ else if ($action == 'delete')
|
|||||||
|
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
|
|
||||||
llxHeader('',$langs->trans("Files"));
|
$wikihelp='EN:Setup_Security|FR:Paramétrage_Sécurité|ES:Configuración_Seguridad';
|
||||||
|
llxHeader('',$langs->trans("Files"),$wikihelp);
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("SecuritySetup"),'','title_setup');
|
print load_fiche_titre($langs->trans("SecuritySetup"),'','title_setup');
|
||||||
|
|
||||||
|
|||||||
@ -87,7 +87,8 @@ else if ($action == 'updateform')
|
|||||||
|
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
|
|
||||||
llxHeader('',$langs->trans("Miscellaneous"));
|
$wikihelp='EN:Setup_Security|FR:Paramétrage_Sécurité|ES:Configuración_Seguridad';
|
||||||
|
llxHeader('',$langs->trans("Miscellaneous"),$wikihelp);
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("SecuritySetup"),'','title_setup');
|
print load_fiche_titre($langs->trans("SecuritySetup"),'','title_setup');
|
||||||
|
|
||||||
|
|||||||
@ -25,12 +25,12 @@
|
|||||||
|
|
||||||
require '../main.inc.php';
|
require '../main.inc.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/comm/askpricesupplier/class/askpricesupplier.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/supplier_proposal/class/supplier_proposal.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/askpricesupplier.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/supplier_proposal.lib.php';
|
||||||
$langs->load("admin");
|
$langs->load("admin");
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
$langs->load('other');
|
$langs->load('other');
|
||||||
$langs->load('askpricesupplier');
|
$langs->load('supplier_proposal');
|
||||||
|
|
||||||
if (! $user->admin) accessforbidden();
|
if (! $user->admin) accessforbidden();
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ $action = GETPOST('action','alpha');
|
|||||||
$value = GETPOST('value','alpha');
|
$value = GETPOST('value','alpha');
|
||||||
$label = GETPOST('label','alpha');
|
$label = GETPOST('label','alpha');
|
||||||
$scandir = GETPOST('scandir','alpha');
|
$scandir = GETPOST('scandir','alpha');
|
||||||
$type='askpricesupplier';
|
$type='supplier_proposal';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
@ -46,9 +46,9 @@ $type='askpricesupplier';
|
|||||||
$error=0;
|
$error=0;
|
||||||
if ($action == 'updateMask')
|
if ($action == 'updateMask')
|
||||||
{
|
{
|
||||||
$maskconstaskpricesupplier=GETPOST('maskconstaskpricesupplier','alpha');
|
$maskconstsupplier_proposal=GETPOST('maskconstsupplier_proposal','alpha');
|
||||||
$maskaskpricesupplier=GETPOST('maskaskpricesupplier','alpha');
|
$masksupplier_proposal=GETPOST('masksupplier_proposal','alpha');
|
||||||
if ($maskconstaskpricesupplier) $res = dolibarr_set_const($db,$maskconstaskpricesupplier,$maskaskpricesupplier,'chaine',0,'',$conf->entity);
|
if ($maskconstsupplier_proposal) $res = dolibarr_set_const($db,$maskconstsupplier_proposal,$masksupplier_proposal,'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
if (! $res > 0) $error++;
|
if (! $res > 0) $error++;
|
||||||
|
|
||||||
@ -66,15 +66,15 @@ if ($action == 'specimen')
|
|||||||
{
|
{
|
||||||
$modele=GETPOST('module','alpha');
|
$modele=GETPOST('module','alpha');
|
||||||
|
|
||||||
$askpricesupplier = new AskPriceSupplier($db);
|
$supplier_proposal = new SupplierProposal($db);
|
||||||
$askpricesupplier->initAsSpecimen();
|
$supplier_proposal->initAsSpecimen();
|
||||||
|
|
||||||
// Search template files
|
// Search template files
|
||||||
$file=''; $classname=''; $filefound=0;
|
$file=''; $classname=''; $filefound=0;
|
||||||
$dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']);
|
$dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']);
|
||||||
foreach($dirmodels as $reldir)
|
foreach($dirmodels as $reldir)
|
||||||
{
|
{
|
||||||
$file=dol_buildpath($reldir."core/modules/askpricesupplier/doc/pdf_".$modele.".modules.php");
|
$file=dol_buildpath($reldir."core/modules/supplier_proposal/doc/pdf_".$modele.".modules.php");
|
||||||
if (file_exists($file))
|
if (file_exists($file))
|
||||||
{
|
{
|
||||||
$filefound=1;
|
$filefound=1;
|
||||||
@ -89,9 +89,9 @@ if ($action == 'specimen')
|
|||||||
|
|
||||||
$module = new $classname($db);
|
$module = new $classname($db);
|
||||||
|
|
||||||
if ($module->write_file($askpricesupplier,$langs) > 0)
|
if ($module->write_file($supplier_proposal,$langs) > 0)
|
||||||
{
|
{
|
||||||
header("Location: ".DOL_URL_ROOT."/document.php?modulepart=askpricesupplier&file=SPECIMEN.pdf");
|
header("Location: ".DOL_URL_ROOT."/document.php?modulepart=supplier_proposal&file=SPECIMEN.pdf");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -107,11 +107,11 @@ if ($action == 'specimen')
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'set_ASKPRICESUPPLIER_DRAFT_WATERMARK')
|
if ($action == 'set_SUPPLIER_PROPOSAL_DRAFT_WATERMARK')
|
||||||
{
|
{
|
||||||
$draft = GETPOST('ASKPRICESUPPLIER_DRAFT_WATERMARK','alpha');
|
$draft = GETPOST('SUPPLIER_PROPOSAL_DRAFT_WATERMARK','alpha');
|
||||||
|
|
||||||
$res = dolibarr_set_const($db, "ASKPRICESUPPLIER_DRAFT_WATERMARK",trim($draft),'chaine',0,'',$conf->entity);
|
$res = dolibarr_set_const($db, "SUPPLIER_PROPOSAL_DRAFT_WATERMARK",trim($draft),'chaine',0,'',$conf->entity);
|
||||||
if (! $res > 0) $error++;
|
if (! $res > 0) $error++;
|
||||||
|
|
||||||
if (! $error)
|
if (! $error)
|
||||||
@ -124,11 +124,11 @@ if ($action == 'set_ASKPRICESUPPLIER_DRAFT_WATERMARK')
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'set_ASKPRICESUPPLIER_FREE_TEXT')
|
if ($action == 'set_SUPPLIER_PROPOSAL_FREE_TEXT')
|
||||||
{
|
{
|
||||||
$freetext = GETPOST('ASKPRICESUPPLIER_FREE_TEXT'); // No alpha here, we want exact string
|
$freetext = GETPOST('SUPPLIER_PROPOSAL_FREE_TEXT'); // No alpha here, we want exact string
|
||||||
|
|
||||||
$res = dolibarr_set_const($db, "ASKPRICESUPPLIER_FREE_TEXT",$freetext,'chaine',0,'',$conf->entity);
|
$res = dolibarr_set_const($db, "SUPPLIER_PROPOSAL_FREE_TEXT",$freetext,'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
if (! $res > 0) $error++;
|
if (! $res > 0) $error++;
|
||||||
|
|
||||||
@ -142,9 +142,9 @@ if ($action == 'set_ASKPRICESUPPLIER_FREE_TEXT')
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'set_BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER')
|
if ($action == 'set_BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL')
|
||||||
{
|
{
|
||||||
$res = dolibarr_set_const($db, "BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER",$value,'chaine',0,'',$conf->entity);
|
$res = dolibarr_set_const($db, "BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL",$value,'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
if (! $res > 0) $error++;
|
if (! $res > 0) $error++;
|
||||||
|
|
||||||
@ -198,15 +198,15 @@ else if ($action == 'del')
|
|||||||
$ret = delDocumentModel($value, $type);
|
$ret = delDocumentModel($value, $type);
|
||||||
if ($ret > 0)
|
if ($ret > 0)
|
||||||
{
|
{
|
||||||
if ($conf->global->ASKPRICESUPPLIER_ADDON_PDF == "$value") dolibarr_del_const($db, 'ASKPRICESUPPLIER_ADDON_PDF',$conf->entity);
|
if ($conf->global->SUPPLIER_PROPOSAL_ADDON_PDF == "$value") dolibarr_del_const($db, 'SUPPLIER_PROPOSAL_ADDON_PDF',$conf->entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if ($action == 'setdoc')
|
else if ($action == 'setdoc')
|
||||||
{
|
{
|
||||||
if (dolibarr_set_const($db, "ASKPRICESUPPLIER_ADDON_PDF",$value,'chaine',0,'',$conf->entity))
|
if (dolibarr_set_const($db, "SUPPLIER_PROPOSAL_ADDON_PDF",$value,'chaine',0,'',$conf->entity))
|
||||||
{
|
{
|
||||||
$conf->global->ASKPRICESUPPLIER_ADDON_PDF = $value;
|
$conf->global->SUPPLIER_PROPOSAL_ADDON_PDF = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
// On active le modele
|
// On active le modele
|
||||||
@ -222,7 +222,7 @@ else if ($action == 'setmod')
|
|||||||
// TODO Verifier si module numerotation choisi peut etre active
|
// TODO Verifier si module numerotation choisi peut etre active
|
||||||
// par appel methode canBeActivated
|
// par appel methode canBeActivated
|
||||||
|
|
||||||
dolibarr_set_const($db, "ASKPRICESUPPLIER_ADDON",$value,'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "SUPPLIER_PROPOSAL_ADDON",$value,'chaine',0,'',$conf->entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -233,23 +233,23 @@ else if ($action == 'setmod')
|
|||||||
$dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']);
|
$dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']);
|
||||||
|
|
||||||
|
|
||||||
llxHeader('',$langs->trans("AskPriceSupplierSetup"));
|
llxHeader('',$langs->trans("SupplierProposalSetup"));
|
||||||
|
|
||||||
$form=new Form($db);
|
$form=new Form($db);
|
||||||
|
|
||||||
//if ($mesg) print $mesg;
|
//if ($mesg) print $mesg;
|
||||||
|
|
||||||
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
|
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
|
||||||
print load_fiche_titre($langs->trans("AskPriceSupplierSetup"),$linkback,'title_setup');
|
print load_fiche_titre($langs->trans("SupplierProposalSetup"),$linkback,'title_setup');
|
||||||
|
|
||||||
$head = askpricesupplier_admin_prepare_head();
|
$head = supplier_proposal_admin_prepare_head();
|
||||||
|
|
||||||
dol_fiche_head($head, 'general', $langs->trans("CommRequests"), 0, 'askpricesupplier');
|
dol_fiche_head($head, 'general', $langs->trans("CommRequests"), 0, 'supplier_proposal');
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Module numerotation
|
* Module numerotation
|
||||||
*/
|
*/
|
||||||
print load_fiche_titre($langs->trans("AskPriceSupplierNumberingModules"),'','');
|
print load_fiche_titre($langs->trans("SupplierProposalNumberingModules"),'','');
|
||||||
|
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
@ -263,7 +263,7 @@ print '</tr>'."\n";
|
|||||||
clearstatcache();
|
clearstatcache();
|
||||||
foreach ($dirmodels as $reldir)
|
foreach ($dirmodels as $reldir)
|
||||||
{
|
{
|
||||||
$dir = dol_buildpath($reldir."core/modules/askpricesupplier/");
|
$dir = dol_buildpath($reldir."core/modules/supplier_proposal/");
|
||||||
|
|
||||||
if (is_dir($dir))
|
if (is_dir($dir))
|
||||||
{
|
{
|
||||||
@ -274,7 +274,7 @@ foreach ($dirmodels as $reldir)
|
|||||||
|
|
||||||
while (($file = readdir($handle))!==false)
|
while (($file = readdir($handle))!==false)
|
||||||
{
|
{
|
||||||
if (substr($file, 0, 21) == 'mod_askpricesupplier_' && substr($file, dol_strlen($file)-3, 3) == 'php')
|
if (substr($file, 0, 21) == 'mod_supplier_proposal_' && substr($file, dol_strlen($file)-3, 3) == 'php')
|
||||||
{
|
{
|
||||||
$file = substr($file, 0, dol_strlen($file)-4);
|
$file = substr($file, 0, dol_strlen($file)-4);
|
||||||
|
|
||||||
@ -302,7 +302,7 @@ foreach ($dirmodels as $reldir)
|
|||||||
print '</td>'."\n";
|
print '</td>'."\n";
|
||||||
|
|
||||||
print '<td align="center">';
|
print '<td align="center">';
|
||||||
if ($conf->global->ASKPRICESUPPLIER_ADDON == "$file")
|
if ($conf->global->SUPPLIER_PROPOSAL_ADDON == "$file")
|
||||||
{
|
{
|
||||||
print img_picto($langs->trans("Activated"),'switch_on');
|
print img_picto($langs->trans("Activated"),'switch_on');
|
||||||
}
|
}
|
||||||
@ -314,13 +314,13 @@ foreach ($dirmodels as $reldir)
|
|||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
$askpricesupplier=new AskPriceSupplier($db);
|
$supplier_proposal=new SupplierProposal($db);
|
||||||
$askpricesupplier->initAsSpecimen();
|
$supplier_proposal->initAsSpecimen();
|
||||||
|
|
||||||
// Info
|
// Info
|
||||||
$htmltooltip='';
|
$htmltooltip='';
|
||||||
$htmltooltip.=''.$langs->trans("Version").': <b>'.$module->getVersion().'</b><br>';
|
$htmltooltip.=''.$langs->trans("Version").': <b>'.$module->getVersion().'</b><br>';
|
||||||
$nextval=$module->getNextValue($mysoc,$askpricesupplier);
|
$nextval=$module->getNextValue($mysoc,$supplier_proposal);
|
||||||
if ("$nextval" != $langs->trans("NotAvailable")) { // Keep " on nextval
|
if ("$nextval" != $langs->trans("NotAvailable")) { // Keep " on nextval
|
||||||
$htmltooltip.=''.$langs->trans("NextValue").': ';
|
$htmltooltip.=''.$langs->trans("NextValue").': ';
|
||||||
if ($nextval) {
|
if ($nextval) {
|
||||||
@ -351,7 +351,7 @@ print "</table><br>\n";
|
|||||||
* Document templates generators
|
* Document templates generators
|
||||||
*/
|
*/
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("AskPriceSupplierPDFModules"),'','');
|
print load_fiche_titre($langs->trans("SupplierProposalPDFModules"),'','');
|
||||||
|
|
||||||
// Load array def with activated templates
|
// Load array def with activated templates
|
||||||
$def = array();
|
$def = array();
|
||||||
@ -394,7 +394,7 @@ foreach ($dirmodels as $reldir)
|
|||||||
{
|
{
|
||||||
foreach (array('','/doc') as $valdir)
|
foreach (array('','/doc') as $valdir)
|
||||||
{
|
{
|
||||||
$dir = dol_buildpath($reldir."core/modules/askpricesupplier".$valdir);
|
$dir = dol_buildpath($reldir."core/modules/supplier_proposal".$valdir);
|
||||||
|
|
||||||
if (is_dir($dir))
|
if (is_dir($dir))
|
||||||
{
|
{
|
||||||
@ -452,7 +452,7 @@ foreach ($dirmodels as $reldir)
|
|||||||
|
|
||||||
// Defaut
|
// Defaut
|
||||||
print "<td align=\"center\">";
|
print "<td align=\"center\">";
|
||||||
if ($conf->global->ASKPRICESUPPLIER_ADDON_PDF == "$name")
|
if ($conf->global->SUPPLIER_PROPOSAL_ADDON_PDF == "$name")
|
||||||
{
|
{
|
||||||
print img_picto($langs->trans("Default"),'on');
|
print img_picto($langs->trans("Default"),'on');
|
||||||
}
|
}
|
||||||
@ -526,10 +526,10 @@ print "</tr>";
|
|||||||
$var=! $var;
|
$var=! $var;
|
||||||
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="set_ASKPRICESUPPLIER_FREE_TEXT">';
|
print '<input type="hidden" name="action" value="set_SUPPLIER_PROPOSAL_FREE_TEXT">';
|
||||||
print '<tr '.$bc[$var].'><td colspan="2">';
|
print '<tr '.$bc[$var].'><td colspan="2">';
|
||||||
print $langs->trans("FreeLegalTextOnAskPriceSupplier").' ('.$langs->trans("AddCRIfTooLong").')<br>';
|
print $langs->trans("FreeLegalTextOnSupplierProposal").' ('.$langs->trans("AddCRIfTooLong").')<br>';
|
||||||
$variablename='ASKPRICESUPPLIER_FREE_TEXT';
|
$variablename='SUPPLIER_PROPOSAL_FREE_TEXT';
|
||||||
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT))
|
||||||
{
|
{
|
||||||
print '<textarea name="'.$variablename.'" class="flat" cols="120">'.$conf->global->$variablename.'</textarea>';
|
print '<textarea name="'.$variablename.'" class="flat" cols="120">'.$conf->global->$variablename.'</textarea>';
|
||||||
@ -548,10 +548,10 @@ print '</form>';
|
|||||||
$var=!$var;
|
$var=!$var;
|
||||||
print "<form method=\"post\" action=\"".$_SERVER["PHP_SELF"]."\">";
|
print "<form method=\"post\" action=\"".$_SERVER["PHP_SELF"]."\">";
|
||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
print "<input type=\"hidden\" name=\"action\" value=\"set_ASKPRICESUPPLIER_DRAFT_WATERMARK\">";
|
print "<input type=\"hidden\" name=\"action\" value=\"set_SUPPLIER_PROPOSAL_DRAFT_WATERMARK\">";
|
||||||
print '<tr '.$bc[$var].'><td colspan="2">';
|
print '<tr '.$bc[$var].'><td colspan="2">';
|
||||||
print $langs->trans("WatermarkOnDraftAskPriceSupplier").'<br>';
|
print $langs->trans("WatermarkOnDraftSupplierProposal").'<br>';
|
||||||
print '<input size="50" class="flat" type="text" name="ASKPRICESUPPLIER_DRAFT_WATERMARK" value="'.$conf->global->ASKPRICESUPPLIER_DRAFT_WATERMARK.'">';
|
print '<input size="50" class="flat" type="text" name="SUPPLIER_PROPOSAL_DRAFT_WATERMARK" value="'.$conf->global->SUPPLIER_PROPOSAL_DRAFT_WATERMARK.'">';
|
||||||
print '</td><td align="right">';
|
print '</td><td align="right">';
|
||||||
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";
|
||||||
@ -561,20 +561,20 @@ if ($conf->banque->enabled)
|
|||||||
{
|
{
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
print '<tr '.$bc[$var].'><td>';
|
print '<tr '.$bc[$var].'><td>';
|
||||||
print $langs->trans("BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER").'</td><td> </td><td align="right">';
|
print $langs->trans("BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL").'</td><td> </td><td align="right">';
|
||||||
if (! empty($conf->use_javascript_ajax))
|
if (! empty($conf->use_javascript_ajax))
|
||||||
{
|
{
|
||||||
print ajax_constantonoff('BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER');
|
print ajax_constantonoff('BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER))
|
if (empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL))
|
||||||
{
|
{
|
||||||
print '<a href="'.$_SERVER['PHP_SELF'].'?action=set_BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER&value=1">'.img_picto($langs->trans("Disabled"),'switch_off').'</a>';
|
print '<a href="'.$_SERVER['PHP_SELF'].'?action=set_BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL&value=1">'.img_picto($langs->trans("Disabled"),'switch_off').'</a>';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print '<a href="'.$_SERVER['PHP_SELF'].'?action=set_BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER&value=0">'.img_picto($langs->trans("Enabled"),'switch_on').'</a>';
|
print '<a href="'.$_SERVER['PHP_SELF'].'?action=set_BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL&value=0">'.img_picto($langs->trans("Enabled"),'switch_on').'</a>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
@ -583,7 +583,7 @@ else
|
|||||||
{
|
{
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
print '<tr '.$bc[$var].'><td>';
|
print '<tr '.$bc[$var].'><td>';
|
||||||
print $langs->trans("BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER").'</td><td> </td><td align="center">'.$langs->trans('NotAvailable').'</td></tr>';
|
print $langs->trans("BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL").'</td><td> </td><td align="center">'.$langs->trans('NotAvailable').'</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
@ -601,7 +601,7 @@ print "<tr class=\"liste_titre\">\n";
|
|||||||
print " <td>".$langs->trans("Name")."</td>\n";
|
print " <td>".$langs->trans("Name")."</td>\n";
|
||||||
print " <td>".$langs->trans("Value")."</td>\n";
|
print " <td>".$langs->trans("Value")."</td>\n";
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
print "<tr ".$bc[false].">\n <td width=\"140\">".$langs->trans("PathDirectory")."</td>\n <td>".$conf->askpricesupplier->dir_output."</td>\n</tr>\n";
|
print "<tr ".$bc[false].">\n <td width=\"140\">".$langs->trans("PathDirectory")."</td>\n <td>".$conf->supplier_proposal->dir_output."</td>\n</tr>\n";
|
||||||
print "</table>\n<br>";
|
print "</table>\n<br>";
|
||||||
|
|
||||||
$db->close();
|
$db->close();
|
||||||
@ -100,7 +100,7 @@ print load_fiche_titre($langs->trans("UsersSetup"),$linkback,'title_setup');
|
|||||||
|
|
||||||
$head=user_admin_prepare_head();
|
$head=user_admin_prepare_head();
|
||||||
|
|
||||||
dol_fiche_head($head,'card', $langs->trans("User"), 0, 'user');
|
dol_fiche_head($head,'card', $langs->trans("MenuUsersAndGroups"), 0, 'user');
|
||||||
|
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
|
|||||||
@ -1508,9 +1508,11 @@ class Categorie extends CommonObject
|
|||||||
/**
|
/**
|
||||||
* Update ou cree les traductions des infos produits
|
* Update ou cree les traductions des infos produits
|
||||||
*
|
*
|
||||||
|
* @param User $user Object user
|
||||||
|
*
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function setMultiLangs()
|
function setMultiLangs($user)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
@ -1574,6 +1576,15 @@ class Categorie extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Call trigger
|
||||||
|
$result = $this->call_trigger('CATEGORY_SET_MULTILANGS',$user);
|
||||||
|
if ($result < 0) {
|
||||||
|
$this->error = $this->db->lasterror();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
// End call triggers
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -88,7 +88,7 @@ $cancel != $langs->trans("Cancel") &&
|
|||||||
}
|
}
|
||||||
|
|
||||||
// sauvegarde en base
|
// sauvegarde en base
|
||||||
if ( $object->setMultiLangs() > 0 )
|
if ( $object->setMultiLangs($user) > 0 )
|
||||||
{
|
{
|
||||||
$action = '';
|
$action = '';
|
||||||
}
|
}
|
||||||
@ -121,7 +121,7 @@ $cancel != $langs->trans("Cancel") &&
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $object->setMultiLangs() > 0 )
|
if ( $object->setMultiLangs($user) > 0 )
|
||||||
{
|
{
|
||||||
$action = '';
|
$action = '';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1173,7 +1173,7 @@ if ($id > 0)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Title
|
// Title
|
||||||
print '<tr><td>'.$langs->trans("Title").'</td><td colspan="3">'.$object->label.'</td></tr>';
|
print '<tr><td>'.$langs->trans("Title").'</td><td colspan="3">'.dol_htmlentities($object->label).'</td></tr>';
|
||||||
|
|
||||||
// Full day event
|
// Full day event
|
||||||
print '<tr><td>'.$langs->trans("EventOnFullDay").'</td><td colspan="3">'.yn($object->fulldayevent, 3).'</td></tr>';
|
print '<tr><td>'.$langs->trans("EventOnFullDay").'</td><td colspan="3">'.yn($object->fulldayevent, 3).'</td></tr>';
|
||||||
|
|||||||
@ -189,6 +189,7 @@ class ActionComm extends CommonObject
|
|||||||
// Check parameters
|
// Check parameters
|
||||||
if (empty($this->userownerid))
|
if (empty($this->userownerid))
|
||||||
{
|
{
|
||||||
|
dol_syslog("You tried to create an event but mandatory property ownerid was not defined", LOG_WARNING);
|
||||||
$this->errors[]='ErrorPropertyUserowneridNotDefined';
|
$this->errors[]='ErrorPropertyUserowneridNotDefined';
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -439,7 +439,8 @@ class Propal extends CommonObject
|
|||||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||||
|
|
||||||
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc);
|
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc);
|
||||||
|
$txtva = preg_replace('/\s*\(.*\)/','',$txtva); // Remove code into vatrate.
|
||||||
|
|
||||||
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $product_type, $mysoc, $localtaxes_type);
|
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $product_type, $mysoc, $localtaxes_type);
|
||||||
|
|
||||||
$total_ht = $tabprice[0];
|
$total_ht = $tabprice[0];
|
||||||
@ -600,7 +601,8 @@ class Propal extends CommonObject
|
|||||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||||
|
|
||||||
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc);
|
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc);
|
||||||
|
$txtva = preg_replace('/\s*\(.*\)/','',$txtva); // Remove code into vatrate.
|
||||||
|
|
||||||
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, $mysoc, $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];
|
||||||
@ -2739,7 +2741,7 @@ class Propal extends CommonObject
|
|||||||
if (! empty($this->total_ht))
|
if (! empty($this->total_ht))
|
||||||
$label.= '<br><b>' . $langs->trans('AmountHT') . ':</b> ' . price($this->total_ht, 0, $langs, 0, -1, -1, $conf->currency);
|
$label.= '<br><b>' . $langs->trans('AmountHT') . ':</b> ' . price($this->total_ht, 0, $langs, 0, -1, -1, $conf->currency);
|
||||||
if (! empty($this->total_tva))
|
if (! empty($this->total_tva))
|
||||||
$label.= '<br><b>' . $langs->trans('TVA') . ':</b> ' . price($this->total_tva, 0, $langs, 0, -1, -1, $conf->currency);
|
$label.= '<br><b>' . $langs->trans('VAT') . ':</b> ' . price($this->total_tva, 0, $langs, 0, -1, -1, $conf->currency);
|
||||||
if (! empty($this->total_ttc))
|
if (! empty($this->total_ttc))
|
||||||
$label.= '<br><b>' . $langs->trans('AmountTTC') . ':</b> ' . price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency);
|
$label.= '<br><b>' . $langs->trans('AmountTTC') . ':</b> ' . price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency);
|
||||||
$linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
|
$linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
|
||||||
|
|||||||
@ -306,7 +306,7 @@ if ($result)
|
|||||||
$moreforfilter.='</div>';
|
$moreforfilter.='</div>';
|
||||||
}
|
}
|
||||||
// If the user can view prospects other than his'
|
// If the user can view prospects other than his'
|
||||||
if ($conf->categorie->enabled && $user->rights->produit->lire)
|
if ($conf->categorie->enabled && ($user->rights->produit->lire || $user->rights->service->lire))
|
||||||
{
|
{
|
||||||
include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
|
||||||
$moreforfilter.='<div class="divsearchfield">';
|
$moreforfilter.='<div class="divsearchfield">';
|
||||||
@ -322,7 +322,7 @@ if ($result)
|
|||||||
print '</div>';
|
print '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">';
|
print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n";
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print_liste_field_titre($langs->trans('Ref'),$_SERVER["PHP_SELF"],'p.ref','',$param,'',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans('Ref'),$_SERVER["PHP_SELF"],'p.ref','',$param,'',$sortfield,$sortorder);
|
||||||
|
|||||||
@ -255,6 +255,7 @@ if (empty($reshook))
|
|||||||
$object->demand_reason_id = GETPOST('demand_reason_id');
|
$object->demand_reason_id = GETPOST('demand_reason_id');
|
||||||
$object->date_livraison = $datelivraison;
|
$object->date_livraison = $datelivraison;
|
||||||
$object->shipping_method_id = GETPOST('shipping_method_id', 'int');
|
$object->shipping_method_id = GETPOST('shipping_method_id', 'int');
|
||||||
|
$object->warehouse_id = GETPOST('warehouse_id', 'int');
|
||||||
$object->fk_delivery_address = GETPOST('fk_address');
|
$object->fk_delivery_address = GETPOST('fk_address');
|
||||||
$object->contactid = GETPOST('contactid');
|
$object->contactid = GETPOST('contactid');
|
||||||
$object->fk_incoterms = GETPOST('incoterm_id', 'int');
|
$object->fk_incoterms = GETPOST('incoterm_id', 'int');
|
||||||
@ -549,6 +550,14 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// warehouse
|
||||||
|
else if ($action == 'setwarehouse' && $user->rights->commande->creer) {
|
||||||
|
$result = $object->setWarehouse(GETPOST('warehouse_id', 'int'));
|
||||||
|
if ($result < 0) {
|
||||||
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
else if ($action == 'setremisepercent' && $user->rights->commande->creer) {
|
else if ($action == 'setremisepercent' && $user->rights->commande->creer) {
|
||||||
$result = $object->set_remise($user, GETPOST('remise_percent'));
|
$result = $object->set_remise($user, GETPOST('remise_percent'));
|
||||||
}
|
}
|
||||||
@ -1249,8 +1258,10 @@ if ($action == 'create' && $user->rights->commande->creer)
|
|||||||
if ($socid > 0)
|
if ($socid > 0)
|
||||||
$res = $soc->fetch($socid);
|
$res = $soc->fetch($socid);
|
||||||
|
|
||||||
if (! empty($origin) && ! empty($originid))
|
$projectid = 0;
|
||||||
{
|
$remise_absolue = 0;
|
||||||
|
|
||||||
|
if (! empty($origin) && ! empty($originid)) {
|
||||||
// Parse element/subelement (ex: project_task)
|
// Parse element/subelement (ex: project_task)
|
||||||
$element = $subelement = $origin;
|
$element = $subelement = $origin;
|
||||||
if (preg_match('/^([^_]+)_([^_]+)/i', $origin, $regs)) {
|
if (preg_match('/^([^_]+)_([^_]+)/i', $origin, $regs)) {
|
||||||
@ -1260,6 +1271,20 @@ if ($action == 'create' && $user->rights->commande->creer)
|
|||||||
|
|
||||||
if ($element == 'project') {
|
if ($element == 'project') {
|
||||||
$projectid = $originid;
|
$projectid = $originid;
|
||||||
|
|
||||||
|
if (!$cond_reglement_id) {
|
||||||
|
$cond_reglement_id = $soc->cond_reglement_id;
|
||||||
|
}
|
||||||
|
if (!$mode_reglement_id) {
|
||||||
|
$mode_reglement_id = $soc->mode_reglement_id;
|
||||||
|
}
|
||||||
|
if (!$remise_percent) {
|
||||||
|
$remise_percent = $soc->remise_percent;
|
||||||
|
}
|
||||||
|
if (!$dateorder) {
|
||||||
|
// Do not set 0 here (0 for a date is 1970)
|
||||||
|
$dateorder = (empty($dateinvoice)?(empty($conf->global->MAIN_AUTOFILL_DATE_ODER)?-1:''):$dateorder);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// For compatibility
|
// For compatibility
|
||||||
if ($element == 'order' || $element == 'commande') {
|
if ($element == 'order' || $element == 'commande') {
|
||||||
@ -1295,6 +1320,7 @@ if ($action == 'create' && $user->rights->commande->creer)
|
|||||||
$fk_account = (! empty($objectsrc->fk_account)?$objectsrc->fk_account:(! empty($soc->fk_account)?$soc->fk_account:0));
|
$fk_account = (! empty($objectsrc->fk_account)?$objectsrc->fk_account:(! empty($soc->fk_account)?$soc->fk_account:0));
|
||||||
$availability_id = (!empty($objectsrc->availability_id)?$objectsrc->availability_id:(!empty($soc->availability_id)?$soc->availability_id:0));
|
$availability_id = (!empty($objectsrc->availability_id)?$objectsrc->availability_id:(!empty($soc->availability_id)?$soc->availability_id:0));
|
||||||
$shipping_method_id = (! empty($objectsrc->shipping_method_id)?$objectsrc->shipping_method_id:(! empty($soc->shipping_method_id)?$soc->shipping_method_id:0));
|
$shipping_method_id = (! empty($objectsrc->shipping_method_id)?$objectsrc->shipping_method_id:(! empty($soc->shipping_method_id)?$soc->shipping_method_id:0));
|
||||||
|
$warehouse_id = (! empty($objectsrc->warehouse_id)?$objectsrc->warehouse_id:(! empty($soc->warehouse_id)?$soc->warehouse_id:0));
|
||||||
$demand_reason_id = (!empty($objectsrc->demand_reason_id)?$objectsrc->demand_reason_id:(!empty($soc->demand_reason_id)?$soc->demand_reason_id:0));
|
$demand_reason_id = (!empty($objectsrc->demand_reason_id)?$objectsrc->demand_reason_id:(!empty($soc->demand_reason_id)?$soc->demand_reason_id:0));
|
||||||
$remise_percent = (!empty($objectsrc->remise_percent)?$objectsrc->remise_percent:(!empty($soc->remise_percent)?$soc->remise_percent:0));
|
$remise_percent = (!empty($objectsrc->remise_percent)?$objectsrc->remise_percent:(!empty($soc->remise_percent)?$soc->remise_percent:0));
|
||||||
$remise_absolue = (!empty($objectsrc->remise_absolue)?$objectsrc->remise_absolue:(!empty($soc->remise_absolue)?$soc->remise_absolue:0));
|
$remise_absolue = (!empty($objectsrc->remise_absolue)?$objectsrc->remise_absolue:(!empty($soc->remise_absolue)?$soc->remise_absolue:0));
|
||||||
@ -1316,6 +1342,7 @@ if ($action == 'create' && $user->rights->commande->creer)
|
|||||||
$fk_account = $soc->fk_account;
|
$fk_account = $soc->fk_account;
|
||||||
$availability_id = $soc->availability_id;
|
$availability_id = $soc->availability_id;
|
||||||
$shipping_method_id = $soc->shipping_method_id;
|
$shipping_method_id = $soc->shipping_method_id;
|
||||||
|
$warehouse_id = $soc->warehouse_id;
|
||||||
$demand_reason_id = $soc->demand_reason_id;
|
$demand_reason_id = $soc->demand_reason_id;
|
||||||
$remise_percent = $soc->remise_percent;
|
$remise_percent = $soc->remise_percent;
|
||||||
$remise_absolue = 0;
|
$remise_absolue = 0;
|
||||||
@ -1448,6 +1475,15 @@ if ($action == 'create' && $user->rights->commande->creer)
|
|||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Warehouse
|
||||||
|
if (! empty($conf->expedition->enabled) && ! empty($conf->global->WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER)) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
|
||||||
|
$formproduct=new FormProduct($db);
|
||||||
|
print '<tr><td>' . $langs->trans('Warehouse') . '</td><td colspan="2">';
|
||||||
|
print $formproduct->selectWarehouses($warehouse_id, 'warehouse_id', '', 1);
|
||||||
|
print '</td></tr>';
|
||||||
|
}
|
||||||
|
|
||||||
// What trigger creation
|
// What trigger creation
|
||||||
print '<tr><td>' . $langs->trans('Source') . '</td><td colspan="2">';
|
print '<tr><td>' . $langs->trans('Source') . '</td><td colspan="2">';
|
||||||
$form->selectInputReason($demand_reason_id, 'demand_reason_id', '', 1);
|
$form->selectInputReason($demand_reason_id, 'demand_reason_id', '', 1);
|
||||||
@ -1536,9 +1572,23 @@ if ($action == 'create' && $user->rights->commande->creer)
|
|||||||
print '<input type="hidden" name="origin" value="' . $objectsrc->element . '">';
|
print '<input type="hidden" name="origin" value="' . $objectsrc->element . '">';
|
||||||
print '<input type="hidden" name="originid" value="' . $objectsrc->id . '">';
|
print '<input type="hidden" name="originid" value="' . $objectsrc->id . '">';
|
||||||
|
|
||||||
$newclassname = $classname;
|
switch ($classname) {
|
||||||
if ($newclassname == 'Propal')
|
case 'Propal':
|
||||||
$newclassname = 'CommercialProposal';
|
$newclassname = 'CommercialProposal';
|
||||||
|
break;
|
||||||
|
case 'Commande':
|
||||||
|
$newclassname = 'Order';
|
||||||
|
break;
|
||||||
|
case 'Expedition':
|
||||||
|
$newclassname = 'Sending';
|
||||||
|
break;
|
||||||
|
case 'Contrat':
|
||||||
|
$newclassname = 'Contract';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$newclassname = $classname;
|
||||||
|
}
|
||||||
|
|
||||||
print '<tr><td>' . $langs->trans($newclassname) . '</td><td colspan="2">' . $objectsrc->getNomUrl(1) . '</td></tr>';
|
print '<tr><td>' . $langs->trans($newclassname) . '</td><td colspan="2">' . $objectsrc->getNomUrl(1) . '</td></tr>';
|
||||||
print '<tr><td>' . $langs->trans('TotalHT') . '</td><td colspan="2">' . price($objectsrc->total_ht) . '</td></tr>';
|
print '<tr><td>' . $langs->trans('TotalHT') . '</td><td colspan="2">' . price($objectsrc->total_ht) . '</td></tr>';
|
||||||
print '<tr><td>' . $langs->trans('TotalVAT') . '</td><td colspan="2">' . price($objectsrc->total_tva) . "</td></tr>";
|
print '<tr><td>' . $langs->trans('TotalVAT') . '</td><td colspan="2">' . price($objectsrc->total_tva) . "</td></tr>";
|
||||||
@ -1946,6 +1996,27 @@ if ($action == 'create' && $user->rights->commande->creer)
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Warehouse
|
||||||
|
if (! empty($conf->expedition->enabled) && ! empty($conf->global->WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER)) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
|
||||||
|
$formproduct=new FormProduct($db);
|
||||||
|
print '<tr><td>';
|
||||||
|
print '<table width="100%" class="nobordernopadding"><tr><td>';
|
||||||
|
print $langs->trans('Warehouse');
|
||||||
|
print '</td>';
|
||||||
|
if ($action != 'editwarehouse' && $user->rights->commande->creer)
|
||||||
|
print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editwarehouse&id='.$object->id.'">'.img_edit($langs->trans('SetWarehouse'),1).'</a></td>';
|
||||||
|
print '</tr></table>';
|
||||||
|
print '</td><td colspan="3">';
|
||||||
|
if ($action == 'editwarehouse') {
|
||||||
|
$formproduct->formSelectWarehouses($_SERVER['PHP_SELF'].'?id='.$object->id, $object->warehouse_id, 'warehouse_id', 1);
|
||||||
|
} else {
|
||||||
|
$formproduct->formSelectWarehouses($_SERVER['PHP_SELF'].'?id='.$object->id, $object->warehouse_id, 'none');
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
// Terms of payment
|
// Terms of payment
|
||||||
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>';
|
||||||
|
|||||||
@ -1159,7 +1159,7 @@ class Commande extends CommonOrder
|
|||||||
{
|
{
|
||||||
global $mysoc, $conf, $langs;
|
global $mysoc, $conf, $langs;
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::addline commandeid=$this->id, desc=$desc, pu_ht=$pu_ht, qty=$qty, txtva=$txtva, fk_product=$fk_product, remise_percent=$remise_percent, info_bits=$info_bits, fk_remise_except=$fk_remise_except, price_base_type=$price_base_type, pu_ttc=$pu_ttc, date_start=$date_start, date_end=$date_end, type=$type, fk_unit=$fk_unit", LOG_DEBUG);
|
dol_syslog(get_class($this)."::addline commandeid=$this->id, desc=$desc, pu_ht=$pu_ht, qty=$qty, txtva=$txtva, fk_product=$fk_product, remise_percent=$remise_percent, info_bits=$info_bits, fk_remise_except=$fk_remise_except, price_base_type=$price_base_type, pu_ttc=$pu_ttc, date_start=$date_start, date_end=$date_end, type=$type special_code=$special_code, fk_unit=$fk_unit", LOG_DEBUG);
|
||||||
|
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/lib/price.lib.php';
|
include_once DOL_DOCUMENT_ROOT.'/core/lib/price.lib.php';
|
||||||
|
|
||||||
@ -1220,7 +1220,8 @@ class Commande extends CommonOrder
|
|||||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||||
|
|
||||||
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc);
|
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc);
|
||||||
|
$txtva = preg_replace('/\s*\(.*\)/','',$txtva); // Remove code into vatrate.
|
||||||
|
|
||||||
$tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $product_type,'', $localtaxes_type);
|
$tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $product_type,'', $localtaxes_type);
|
||||||
$total_ht = $tabprice[0];
|
$total_ht = $tabprice[0];
|
||||||
$total_tva = $tabprice[1];
|
$total_tva = $tabprice[1];
|
||||||
@ -2442,7 +2443,8 @@ class Commande extends CommonOrder
|
|||||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||||
|
|
||||||
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty, $mysoc);
|
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty, $mysoc);
|
||||||
|
$txtva = preg_replace('/\s*\(.*\)/','',$txtva); // Remove code into vatrate.
|
||||||
|
|
||||||
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, $mysoc, $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];
|
||||||
@ -2964,7 +2966,7 @@ class Commande extends CommonOrder
|
|||||||
if (! empty($this->total_ht))
|
if (! empty($this->total_ht))
|
||||||
$label.= '<br><b>' . $langs->trans('AmountHT') . ':</b> ' . price($this->total_ht, 0, $langs, 0, -1, -1, $conf->currency);
|
$label.= '<br><b>' . $langs->trans('AmountHT') . ':</b> ' . price($this->total_ht, 0, $langs, 0, -1, -1, $conf->currency);
|
||||||
if (! empty($this->total_tva))
|
if (! empty($this->total_tva))
|
||||||
$label.= '<br><b>' . $langs->trans('TVA') . ':</b> ' . price($this->total_tva, 0, $langs, 0, -1, -1, $conf->currency);
|
$label.= '<br><b>' . $langs->trans('VAT') . ':</b> ' . price($this->total_tva, 0, $langs, 0, -1, -1, $conf->currency);
|
||||||
if (! empty($this->total_ttc))
|
if (! empty($this->total_ttc))
|
||||||
$label.= '<br><b>' . $langs->trans('AmountTTC') . ':</b> ' . price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency);
|
$label.= '<br><b>' . $langs->trans('AmountTTC') . ':</b> ' . price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency);
|
||||||
|
|
||||||
|
|||||||
@ -302,8 +302,8 @@ if ($resql)
|
|||||||
$moreforfilter.=$form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300');
|
$moreforfilter.=$form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300');
|
||||||
$moreforfilter.='</div>';
|
$moreforfilter.='</div>';
|
||||||
}
|
}
|
||||||
// If the user can view categories or products
|
// If the user can view prospects other than his'
|
||||||
if ($conf->categorie->enabled && $user->rights->produit->lire)
|
if ($conf->categorie->enabled && ($user->rights->produit->lire || $user->rights->service->lire))
|
||||||
{
|
{
|
||||||
include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
|
||||||
$moreforfilter.='<div class="divsearchfield">';
|
$moreforfilter.='<div class="divsearchfield">';
|
||||||
|
|||||||
@ -179,19 +179,23 @@ if ($resql)
|
|||||||
print '<form method="post" action="search.php" name="search_form">'."\n";
|
print '<form method="post" action="search.php" name="search_form">'."\n";
|
||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'."\n";
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'."\n";
|
||||||
|
|
||||||
|
$moreforfilter = '';
|
||||||
|
|
||||||
|
$moreforfilter.='<div class="divsearchfield">';
|
||||||
$moreforfilter .= $langs->trans('Period') . ' ('.$langs->trans('DateOperationShort').') : ' . $langs->trans('StartDate') . ' ';
|
$moreforfilter .= $langs->trans('Period') . ' ('.$langs->trans('DateOperationShort').') : ' . $langs->trans('StartDate') . ' ';
|
||||||
$moreforfilter .= $form->select_date($search_dt_start, 'search_start_dt', 0, 0, 1, "search_form", 1, 0, 1);
|
$moreforfilter .= $form->select_date($search_dt_start, 'search_start_dt', 0, 0, 1, "search_form", 1, 0, 1);
|
||||||
$moreforfilter .= ' - ';
|
$moreforfilter .= ' - ';
|
||||||
$moreforfilter .= $langs->trans('EndDate') . ' ' . $form->select_date($search_dt_end, 'search_end_dt', 0, 0, 1, "search_form", 1, 0, 1);
|
$moreforfilter .= $langs->trans('EndDate') . ' ' . $form->select_date($search_dt_end, 'search_end_dt', 0, 0, 1, "search_form", 1, 0, 1);
|
||||||
|
$moreforfilter .= '</div>';
|
||||||
|
|
||||||
|
if ($moreforfilter)
|
||||||
if ($moreforfilter) {
|
{
|
||||||
print '<div class="liste_titre liste_titre_bydiv centpercent">';
|
print '<div class="liste_titre liste_titre_bydiv centpercent">';
|
||||||
print $moreforfilter;
|
print $moreforfilter;
|
||||||
print '</div>'."\n";
|
print '</div>'."\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<table class="liste">'."\n";
|
print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n";
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print_liste_field_titre($langs->trans('Ref'),$_SERVER['PHP_SELF'],'b.rowid','',$param,'',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans('Ref'),$_SERVER['PHP_SELF'],'b.rowid','',$param,'',$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans('DateOperationShort'),$_SERVER['PHP_SELF'],'b.dateo','',$param,'align="center"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans('DateOperationShort'),$_SERVER['PHP_SELF'],'b.dateo','',$param,'align="center"',$sortfield,$sortorder);
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
/* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
|
/* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copyright (C) 2008-2009 Laurent Destailleur (Eldy) <eldy@users.sourceforge.net>
|
* Copyright (C) 2008-2009 Laurent Destailleur (Eldy) <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2008 Raphael Bertrand (Resultic) <raphael.bertrand@resultic.fr>
|
* Copyright (C) 2008 Raphael Bertrand (Resultic) <raphael.bertrand@resultic.fr>
|
||||||
|
* 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
|
||||||
* 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
|
||||||
@ -309,7 +310,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
|
|||||||
print "</td>";
|
print "</td>";
|
||||||
print "<td>".$ref."</td>";
|
print "<td>".$ref."</td>";
|
||||||
print "<td>".$refcomp."</td>";
|
print "<td>".$refcomp."</td>";
|
||||||
if ($obj->total_ttc < 0) { print "<td align=\"right\">".price($total_ttc)."</td><td> </td>"; };
|
if ($obj->total_ttc < 0) { print "<td align=\"right\">".price(abs($total_ttc))."</td><td> </td>"; };
|
||||||
if ($obj->total_ttc >= 0) { print "<td> </td><td align=\"right\">".price($total_ttc)."</td>"; };
|
if ($obj->total_ttc >= 0) { print "<td> </td><td align=\"right\">".price($total_ttc)."</td>"; };
|
||||||
print '<td align="right">'.price($solde).'</td>';
|
print '<td align="right">'.price($solde).'</td>';
|
||||||
print "</tr>";
|
print "</tr>";
|
||||||
|
|||||||
@ -85,87 +85,6 @@ if (GETPOST("mode") != 'sconly')
|
|||||||
print "<br>";
|
print "<br>";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Payment Salary
|
|
||||||
if ($conf->salaries->enabled)
|
|
||||||
{
|
|
||||||
if (empty($_GET["mode"]) || $_GET["mode"] != 'sconly')
|
|
||||||
{
|
|
||||||
$sal = new PaymentSalary($db);
|
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("SalariesPayments").($year?' ('.$langs->trans("Year").' '.$year.')':''), '', '');
|
|
||||||
|
|
||||||
$sql = "SELECT s.rowid, s.amount, s.label, s.datep as datep, s.datev as datev, s.datesp, s.dateep, s.salary, u.salary as current_salary";
|
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."payment_salary as s, ".MAIN_DB_PREFIX."user as u";
|
|
||||||
$sql.= " WHERE s.entity IN (".getEntity('user',1).")";
|
|
||||||
$sql.= " AND u.rowid = s.fk_user";
|
|
||||||
if ($year > 0)
|
|
||||||
{
|
|
||||||
$sql.= " AND (s.datesp between '".$db->idate(dol_get_first_day($year,1,false))."' AND '".$db->idate(dol_get_last_day($year,12,false))."'";
|
|
||||||
$sql.= " OR s.dateep between '".$db->idate(dol_get_first_day($year,1,false))."' AND '".$db->idate(dol_get_last_day($year,12,false))."')";
|
|
||||||
}
|
|
||||||
if (preg_match('/^s\./',$sortfield)) $sql.= $db->order($sortfield,$sortorder);
|
|
||||||
|
|
||||||
$result = $db->query($sql);
|
|
||||||
if ($result)
|
|
||||||
{
|
|
||||||
$num = $db->num_rows($result);
|
|
||||||
$i = 0;
|
|
||||||
$total = 0 ;
|
|
||||||
print '<table class="noborder" width="100%">';
|
|
||||||
print '<tr class="liste_titre">';
|
|
||||||
print_liste_field_titre($langs->trans("PeriodEndDate"),$_SERVER["PHP_SELF"],"s.dateep","",$param,'width="140px"',$sortfield,$sortorder);
|
|
||||||
print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"s.label","",$param,'',$sortfield,$sortorder);
|
|
||||||
print_liste_field_titre($langs->trans("ExpectedToPay"),$_SERVER["PHP_SELF"],"s.amount","",$param,'align="right"',$sortfield,$sortorder);
|
|
||||||
print_liste_field_titre($langs->trans("RefPayment"),$_SERVER["PHP_SELF"],"s.rowid","",$param,'',$sortfield,$sortorder);
|
|
||||||
print_liste_field_titre($langs->trans("DatePayment"),$_SERVER["PHP_SELF"],"s.datep","",$param,'align="center"',$sortfield,$sortorder);
|
|
||||||
print_liste_field_titre($langs->trans("PayedByThisPayment"),$_SERVER["PHP_SELF"],"s.amount","",$param,'align="right"',$sortfield,$sortorder);
|
|
||||||
print "</tr>\n";
|
|
||||||
$var=1;
|
|
||||||
while ($i < $num)
|
|
||||||
{
|
|
||||||
$obj = $db->fetch_object($result);
|
|
||||||
|
|
||||||
$total = $total + $obj->amount;
|
|
||||||
|
|
||||||
$var=!$var;
|
|
||||||
print "<tr ".$bc[$var].">";
|
|
||||||
|
|
||||||
print '<td align="left">'.dol_print_date($db->jdate($obj->dateep),'day').'</td>'."\n";
|
|
||||||
|
|
||||||
print "<td>".$obj->label."</td>\n";
|
|
||||||
|
|
||||||
print '<td align="right">'.($obj->salary?price($obj->salary):'')."</td>";
|
|
||||||
|
|
||||||
// Ref payment
|
|
||||||
$sal_static->id=$obj->rowid;
|
|
||||||
$sal_static->ref=$obj->rowid;
|
|
||||||
print '<td align="left">'.$sal_static->getNomUrl(1)."</td>\n";
|
|
||||||
|
|
||||||
print '<td align="center">'.dol_print_date($db->jdate($obj->datep),'day')."</td>\n";
|
|
||||||
print '<td align="right">'.price($obj->amount)."</td>";
|
|
||||||
print "</tr>\n";
|
|
||||||
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
print '<tr class="liste_total"><td colspan="2">'.$langs->trans("Total").'</td>';
|
|
||||||
print '<td align="right">'."</td>";
|
|
||||||
print '<td align="center"> </td>';
|
|
||||||
print '<td align="center"> </td>';
|
|
||||||
print '<td align="right">'.price($total)."</td>";
|
|
||||||
print "</tr>";
|
|
||||||
|
|
||||||
print "</table>";
|
|
||||||
$db->free($result);
|
|
||||||
|
|
||||||
print "<br>";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dol_print_error($db);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if ($conf->tax->enabled)
|
if ($conf->tax->enabled)
|
||||||
{
|
{
|
||||||
@ -356,7 +275,8 @@ if ($conf->tax->enabled)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//localtax
|
|
||||||
|
// Localtax
|
||||||
if($mysoc->localtax1_assuj=="1" && $mysoc->localtax2_assuj=="1")
|
if($mysoc->localtax1_assuj=="1" && $mysoc->localtax2_assuj=="1")
|
||||||
{
|
{
|
||||||
$j=1;
|
$j=1;
|
||||||
@ -460,6 +380,91 @@ while($j<$numlt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Payment Salary
|
||||||
|
if ($conf->salaries->enabled)
|
||||||
|
{
|
||||||
|
if (empty($_GET["mode"]) || $_GET["mode"] != 'sconly')
|
||||||
|
{
|
||||||
|
$sal = new PaymentSalary($db);
|
||||||
|
|
||||||
|
print '<br>';
|
||||||
|
print load_fiche_titre($langs->trans("SalariesPayments").($year?' ('.$langs->trans("Year").' '.$year.')':''), '', '');
|
||||||
|
|
||||||
|
$sql = "SELECT s.rowid, s.amount, s.label, s.datep as datep, s.datev as datev, s.datesp, s.dateep, s.salary, u.salary as current_salary";
|
||||||
|
$sql.= " FROM ".MAIN_DB_PREFIX."payment_salary as s, ".MAIN_DB_PREFIX."user as u";
|
||||||
|
$sql.= " WHERE s.entity IN (".getEntity('user',1).")";
|
||||||
|
$sql.= " AND u.rowid = s.fk_user";
|
||||||
|
if ($year > 0)
|
||||||
|
{
|
||||||
|
$sql.= " AND (s.datesp between '".$db->idate(dol_get_first_day($year,1,false))."' AND '".$db->idate(dol_get_last_day($year,12,false))."'";
|
||||||
|
$sql.= " OR s.dateep between '".$db->idate(dol_get_first_day($year,1,false))."' AND '".$db->idate(dol_get_last_day($year,12,false))."')";
|
||||||
|
}
|
||||||
|
if (preg_match('/^s\./',$sortfield)) $sql.= $db->order($sortfield,$sortorder);
|
||||||
|
|
||||||
|
$result = $db->query($sql);
|
||||||
|
if ($result)
|
||||||
|
{
|
||||||
|
$num = $db->num_rows($result);
|
||||||
|
$i = 0;
|
||||||
|
$total = 0 ;
|
||||||
|
print '<table class="noborder" width="100%">';
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print_liste_field_titre($langs->trans("PeriodEndDate"),$_SERVER["PHP_SELF"],"s.dateep","",$param,'width="140px"',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"s.label","",$param,'',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre($langs->trans("ExpectedToPay"),$_SERVER["PHP_SELF"],"s.amount","",$param,'align="right"',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre($langs->trans("RefPayment"),$_SERVER["PHP_SELF"],"s.rowid","",$param,'',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre($langs->trans("DatePayment"),$_SERVER["PHP_SELF"],"s.datep","",$param,'align="center"',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre($langs->trans("PayedByThisPayment"),$_SERVER["PHP_SELF"],"s.amount","",$param,'align="right"',$sortfield,$sortorder);
|
||||||
|
print "</tr>\n";
|
||||||
|
$var=1;
|
||||||
|
while ($i < $num)
|
||||||
|
{
|
||||||
|
$obj = $db->fetch_object($result);
|
||||||
|
|
||||||
|
$total = $total + $obj->amount;
|
||||||
|
|
||||||
|
$var=!$var;
|
||||||
|
print "<tr ".$bc[$var].">";
|
||||||
|
|
||||||
|
print '<td align="left">'.dol_print_date($db->jdate($obj->dateep),'day').'</td>'."\n";
|
||||||
|
|
||||||
|
print "<td>".$obj->label."</td>\n";
|
||||||
|
|
||||||
|
print '<td align="right">'.($obj->salary?price($obj->salary):'')."</td>";
|
||||||
|
|
||||||
|
// Ref payment
|
||||||
|
$sal_static->id=$obj->rowid;
|
||||||
|
$sal_static->ref=$obj->rowid;
|
||||||
|
print '<td align="left">'.$sal_static->getNomUrl(1)."</td>\n";
|
||||||
|
|
||||||
|
print '<td align="center">'.dol_print_date($db->jdate($obj->datep),'day')."</td>\n";
|
||||||
|
print '<td align="right">'.price($obj->amount)."</td>";
|
||||||
|
print "</tr>\n";
|
||||||
|
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
print '<tr class="liste_total"><td colspan="2">'.$langs->trans("Total").'</td>';
|
||||||
|
print '<td align="right">'."</td>";
|
||||||
|
print '<td align="center"> </td>';
|
||||||
|
print '<td align="center"> </td>';
|
||||||
|
print '<td align="right">'.price($total)."</td>";
|
||||||
|
print "</tr>";
|
||||||
|
|
||||||
|
print "</table>";
|
||||||
|
$db->free($result);
|
||||||
|
|
||||||
|
print "<br>";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dol_print_error($db);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
llxFooter();
|
llxFooter();
|
||||||
|
|
||||||
$db->close();
|
$db->close();
|
||||||
|
|||||||
@ -140,7 +140,7 @@ if (empty($reshook))
|
|||||||
header("Location: " . $_SERVER['PHP_SELF'] . '?facid=' . $result);
|
header("Location: " . $_SERVER['PHP_SELF'] . '?facid=' . $result);
|
||||||
exit();
|
exit();
|
||||||
} else {
|
} else {
|
||||||
setEventMessage($object->error, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
$action = '';
|
$action = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -156,7 +156,7 @@ if (empty($reshook))
|
|||||||
header('Location: ' . $_SERVER["PHP_SELF"] . '?facid=' . $id);
|
header('Location: ' . $_SERVER["PHP_SELF"] . '?facid=' . $id);
|
||||||
exit();
|
exit();
|
||||||
} else {
|
} else {
|
||||||
setEventMessage($object->error, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -180,7 +180,7 @@ if (empty($reshook))
|
|||||||
header('Location: ' . DOL_URL_ROOT . '/compta/facture/list.php');
|
header('Location: ' . DOL_URL_ROOT . '/compta/facture/list.php');
|
||||||
exit();
|
exit();
|
||||||
} else {
|
} else {
|
||||||
setEventMessage($object->error, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
$action='';
|
$action='';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -213,7 +213,7 @@ if (empty($reshook))
|
|||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
setEventMessage($object->error, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
$action = '';
|
$action = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -235,13 +235,13 @@ if (empty($reshook))
|
|||||||
if ($object->type == Facture::TYPE_CREDIT_NOTE) {
|
if ($object->type == Facture::TYPE_CREDIT_NOTE) {
|
||||||
// Si avoir, le signe doit etre negatif
|
// Si avoir, le signe doit etre negatif
|
||||||
if ($object->total_ht >= 0) {
|
if ($object->total_ht >= 0) {
|
||||||
setEventMessage($langs->trans("ErrorInvoiceAvoirMustBeNegative"), 'errors');
|
setEventMessages($langs->trans("ErrorInvoiceAvoirMustBeNegative"), null, 'errors');
|
||||||
$action = '';
|
$action = '';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Si non avoir, le signe doit etre positif
|
// Si non avoir, le signe doit etre positif
|
||||||
if (empty($conf->global->FACTURE_ENABLE_NEGATIVE) && $object->total_ht < 0) {
|
if (empty($conf->global->FACTURE_ENABLE_NEGATIVE) && $object->total_ht < 0) {
|
||||||
setEventMessage($langs->trans("ErrorInvoiceOfThisTypeMustBePositive"), 'errors');
|
setEventMessages($langs->trans("ErrorInvoiceOfThisTypeMustBePositive"), null, 'errors');
|
||||||
$action = '';
|
$action = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -311,7 +311,7 @@ if (empty($reshook))
|
|||||||
$object->date_lim_reglement = dol_mktime(12, 0, 0, $_POST['paymenttermmonth'], $_POST['paymenttermday'], $_POST['paymenttermyear']);
|
$object->date_lim_reglement = dol_mktime(12, 0, 0, $_POST['paymenttermmonth'], $_POST['paymenttermday'], $_POST['paymenttermyear']);
|
||||||
if ($object->date_lim_reglement < $object->date) {
|
if ($object->date_lim_reglement < $object->date) {
|
||||||
$object->date_lim_reglement = $object->calculate_date_lim_reglement();
|
$object->date_lim_reglement = $object->calculate_date_lim_reglement();
|
||||||
setEventMessage($langs->trans("DatePaymentTermCantBeLowerThanObjectDate"), 'warnings');
|
setEventMessages($langs->trans("DatePaymentTermCantBeLowerThanObjectDate"), null, 'warnings');
|
||||||
}
|
}
|
||||||
$result = $object->update($user);
|
$result = $object->update($user);
|
||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
@ -354,7 +354,7 @@ if (empty($reshook))
|
|||||||
if ($ret > 0) {
|
if ($ret > 0) {
|
||||||
$result = $object->insert_discount($_POST["remise_id"]);
|
$result = $object->insert_discount($_POST["remise_id"]);
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessage($object->error, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
dol_print_error($db, $object->error);
|
dol_print_error($db, $object->error);
|
||||||
@ -367,7 +367,7 @@ if (empty($reshook))
|
|||||||
|
|
||||||
$result = $discount->link_to_invoice(0, $id);
|
$result = $discount->link_to_invoice(0, $id);
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessage($discount->error, 'errors');
|
setEventMessages($discount->error, $discount->errors, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -449,7 +449,7 @@ if (empty($reshook))
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (count($object->errors)) setEventMessage($object->errors, 'errors');
|
if (count($object->errors)) setEventMessage($object->errors, 'errors');
|
||||||
else setEventMessage($object->error, 'errors');
|
else setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -477,7 +477,7 @@ if (empty($reshook))
|
|||||||
{
|
{
|
||||||
if (! $idwarehouse || $idwarehouse == - 1) {
|
if (! $idwarehouse || $idwarehouse == - 1) {
|
||||||
$error ++;
|
$error ++;
|
||||||
setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Warehouse")), 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Warehouse")), null, 'errors');
|
||||||
$action = '';
|
$action = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -511,7 +511,7 @@ if (empty($reshook))
|
|||||||
if ($resteapayer == $object->total_ttc && $object->paye == 0 && $ventilExportCompta == 0)
|
if ($resteapayer == $object->total_ttc && $object->paye == 0 && $ventilExportCompta == 0)
|
||||||
{
|
{
|
||||||
$result=$object->set_draft($user, $idwarehouse);
|
$result=$object->set_draft($user, $idwarehouse);
|
||||||
if ($result<0) setEventMessage($object->error,'errors');
|
if ($result<0) setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
|
||||||
|
|
||||||
// Define output language
|
// Define output language
|
||||||
@ -539,7 +539,7 @@ if (empty($reshook))
|
|||||||
{
|
{
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
$result = $object->set_paid($user);
|
$result = $object->set_paid($user);
|
||||||
if ($result<0) setEventMessage($object->error,'errors');
|
if ($result<0) setEventMessages($object->error, $object->errors, 'errors');
|
||||||
} // Classif "paid partialy"
|
} // Classif "paid partialy"
|
||||||
else if ($action == 'confirm_paid_partially' && $confirm == 'yes' && $user->rights->facture->paiement)
|
else if ($action == 'confirm_paid_partially' && $confirm == 'yes' && $user->rights->facture->paiement)
|
||||||
{
|
{
|
||||||
@ -548,7 +548,7 @@ if (empty($reshook))
|
|||||||
$close_note = $_POST["close_note"];
|
$close_note = $_POST["close_note"];
|
||||||
if ($close_code) {
|
if ($close_code) {
|
||||||
$result = $object->set_paid($user, $close_code, $close_note);
|
$result = $object->set_paid($user, $close_code, $close_note);
|
||||||
if ($result<0) setEventMessage($object->error,'errors');
|
if ($result<0) setEventMessages($object->error, $object->errors, 'errors');
|
||||||
} else {
|
} else {
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Reason")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Reason")), null, 'errors');
|
||||||
}
|
}
|
||||||
@ -559,7 +559,7 @@ if (empty($reshook))
|
|||||||
$close_note = $_POST["close_note"];
|
$close_note = $_POST["close_note"];
|
||||||
if ($close_code) {
|
if ($close_code) {
|
||||||
$result = $object->set_canceled($user, $close_code, $close_note);
|
$result = $object->set_canceled($user, $close_code, $close_note);
|
||||||
if ($result<0) setEventMessage($object->error,'errors');
|
if ($result<0) setEventMessages($object->error, $object->errors, 'errors');
|
||||||
} else {
|
} else {
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Reason")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Reason")), null, 'errors');
|
||||||
}
|
}
|
||||||
@ -603,7 +603,7 @@ if (empty($reshook))
|
|||||||
elseif ($object->type == Facture::TYPE_DEPOSIT)
|
elseif ($object->type == Facture::TYPE_DEPOSIT)
|
||||||
$discount->description = '(DEPOSIT)';
|
$discount->description = '(DEPOSIT)';
|
||||||
else {
|
else {
|
||||||
setEventMessage($langs->trans('CantConvertToReducAnInvoiceOfThisType'),'errors');
|
setEventMessages($langs->trans('CantConvertToReducAnInvoiceOfThisType'), null, 'errors');
|
||||||
}
|
}
|
||||||
$discount->tva_tx = abs($object->total_ttc);
|
$discount->tva_tx = abs($object->total_ttc);
|
||||||
$discount->fk_soc = $object->socid;
|
$discount->fk_soc = $object->socid;
|
||||||
@ -636,13 +636,13 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setEventMessage($object->error,'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
$db->rollback();
|
$db->rollback();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setEventMessage($discount->error,'errors');
|
setEventMessages($discount->error, $discount->errors, 'errors');
|
||||||
$db->rollback();
|
$db->rollback();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -705,7 +705,7 @@ if (empty($reshook))
|
|||||||
|
|
||||||
$id = $object->createFromCurrent($user);
|
$id = $object->createFromCurrent($user);
|
||||||
if ($id <= 0) {
|
if ($id <= 0) {
|
||||||
setEventMessage($object->error, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -979,7 +979,7 @@ if (empty($reshook))
|
|||||||
$amountdeposit = ($totalamount * $valuedeposit) / 100;
|
$amountdeposit = ($totalamount * $valuedeposit) / 100;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
setEventMessage($srcobject->error, 'errors');
|
setEventMessages($srcobject->error, $srcobject->errors, 'errors');
|
||||||
$error ++;
|
$error ++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1119,12 +1119,12 @@ if (empty($reshook))
|
|||||||
if ($reshook < 0)
|
if ($reshook < 0)
|
||||||
$error ++;
|
$error ++;
|
||||||
} else {
|
} else {
|
||||||
setEventMessage($srcobject->error, 'errors');
|
setEventMessages($srcobject->error, $srcobject->errors, 'errors');
|
||||||
$error ++;
|
$error ++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
setEventMessage($object->error, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
$error ++;
|
$error ++;
|
||||||
}
|
}
|
||||||
} // If some invoice's lines already known
|
} // If some invoice's lines already known
|
||||||
@ -1237,11 +1237,11 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (empty($idprod) && ($price_ht < 0) && ($qty < 0)) {
|
if (empty($idprod) && ($price_ht < 0) && ($qty < 0)) {
|
||||||
setEventMessage($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPriceHT'), $langs->transnoentitiesnoconv('Qty')), 'errors');
|
setEventMessages($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPriceHT'), $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
||||||
$error ++;
|
$error ++;
|
||||||
}
|
}
|
||||||
if (GETPOST('prod_entry_mode') == 'free' && empty($idprod) && GETPOST('type') < 0) {
|
if (GETPOST('prod_entry_mode') == 'free' && empty($idprod) && GETPOST('type') < 0) {
|
||||||
setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), null, 'errors');
|
||||||
$error ++;
|
$error ++;
|
||||||
}
|
}
|
||||||
if (GETPOST('prod_entry_mode') == 'free' && empty($idprod) && (! ($price_ht >= 0) || $price_ht == '')) // Unit price can be 0 but not ''
|
if (GETPOST('prod_entry_mode') == 'free' && empty($idprod) && (! ($price_ht >= 0) || $price_ht == '')) // Unit price can be 0 but not ''
|
||||||
@ -1250,16 +1250,16 @@ if (empty($reshook))
|
|||||||
$error ++;
|
$error ++;
|
||||||
}
|
}
|
||||||
if ($qty == '') {
|
if ($qty == '') {
|
||||||
setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
||||||
$error ++;
|
$error ++;
|
||||||
}
|
}
|
||||||
if (GETPOST('prod_entry_mode') == 'free' && empty($idprod) && empty($product_desc)) {
|
if (GETPOST('prod_entry_mode') == 'free' && empty($idprod) && empty($product_desc)) {
|
||||||
setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), null, 'errors');
|
||||||
$error ++;
|
$error ++;
|
||||||
}
|
}
|
||||||
if ($qty < 0) {
|
if ($qty < 0) {
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
setEventMessage($langs->trans('ErrorQtyForCustomerInvoiceCantBeNegative'), 'errors');
|
setEventMessages($langs->trans('ErrorQtyForCustomerInvoiceCantBeNegative'), null, 'errors');
|
||||||
$error ++;
|
$error ++;
|
||||||
}
|
}
|
||||||
if (! $error && ($qty >= 0) && (! empty($product_desc) || ! empty($idprod))) {
|
if (! $error && ($qty >= 0) && (! empty($product_desc) || ! empty($idprod))) {
|
||||||
@ -1401,19 +1401,19 @@ if (empty($reshook))
|
|||||||
|
|
||||||
// Margin
|
// Margin
|
||||||
$fournprice = price2num(GETPOST('fournprice' . $predef) ? GETPOST('fournprice' . $predef) : '');
|
$fournprice = price2num(GETPOST('fournprice' . $predef) ? GETPOST('fournprice' . $predef) : '');
|
||||||
$buyingprice = price2num(GETPOST('buying_price' . $predef) != '' ? GETPOST('buying_price' . $predef) : ''); // If buying_price is '0', we muste keep this value
|
$buyingprice = price2num(GETPOST('buying_price' . $predef) != '' ? GETPOST('buying_price' . $predef) : ''); // If buying_price is '0', we must keep this value
|
||||||
|
|
||||||
// Local Taxes
|
// Local Taxes
|
||||||
$localtax1_tx = get_localtax($tva_tx, 1, $object->thirdparty);
|
$localtax1_tx = get_localtax($tva_tx, 1, $object->thirdparty, $mysoc);
|
||||||
$localtax2_tx = get_localtax($tva_tx, 2, $object->thirdparty);
|
$localtax2_tx = get_localtax($tva_tx, 2, $object->thirdparty, $mysoc);
|
||||||
|
|
||||||
$info_bits = 0;
|
$info_bits = 0;
|
||||||
if ($tva_npr)
|
if ($tva_npr)
|
||||||
$info_bits |= 0x01;
|
$info_bits |= 0x01;
|
||||||
|
|
||||||
if (! empty($price_min) && (price2num($pu_ht) * (1 - price2num($remise_percent) / 100) < price2num($price_min))) {
|
if (! empty($price_min) && (price2num($pu_ht) * (1 - price2num($remise_percent) / 100) < price2num($price_min))) {
|
||||||
$mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, - 1, $conf->currency));
|
$mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, - 1, $conf->currency));
|
||||||
setEventMessage($mesg, 'errors');
|
setEventMessages($mesg, null, 'errors');
|
||||||
} else {
|
} else {
|
||||||
// Insert line
|
// Insert line
|
||||||
$result = $object->addline($desc, $pu_ht, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, $idprod, $remise_percent, $date_start, $date_end, 0, $info_bits, '', $price_base_type, $pu_ttc, $type, - 1, $special_code, '', 0, GETPOST('fk_parent_line'), $fournprice, $buyingprice, $label, $array_options, $_POST['progress'], '', $fk_unit);
|
$result = $object->addline($desc, $pu_ht, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, $idprod, $remise_percent, $date_start, $date_end, 0, $info_bits, '', $price_base_type, $pu_ttc, $type, - 1, $special_code, '', 0, GETPOST('fk_parent_line'), $fournprice, $buyingprice, $label, $array_options, $_POST['progress'], '', $fk_unit);
|
||||||
@ -1473,7 +1473,7 @@ if (empty($reshook))
|
|||||||
unset($_POST['situations']);
|
unset($_POST['situations']);
|
||||||
unset($_POST['progress']);
|
unset($_POST['progress']);
|
||||||
} else {
|
} else {
|
||||||
setEventMessage($object->error, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
|
|
||||||
$action = '';
|
$action = '';
|
||||||
@ -1555,7 +1555,7 @@ if (empty($reshook))
|
|||||||
|
|
||||||
// Check price is not lower than minimum (check is done only for standard or replacement invoices)
|
// Check price is not lower than minimum (check is done only for standard or replacement invoices)
|
||||||
if (($object->type == Facture::TYPE_STANDARD || $object->type == Facture::TYPE_REPLACEMENT) && $price_min && (price2num($pu_ht) * (1 - price2num(GETPOST('remise_percent')) / 100) < price2num($price_min))) {
|
if (($object->type == Facture::TYPE_STANDARD || $object->type == Facture::TYPE_REPLACEMENT) && $price_min && (price2num($pu_ht) * (1 - price2num(GETPOST('remise_percent')) / 100) < price2num($price_min))) {
|
||||||
setEventMessage($langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, - 1, $conf->currency)), 'errors');
|
setEventMessages($langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, - 1, $conf->currency)), null, 'errors');
|
||||||
$error ++;
|
$error ++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -1570,7 +1570,7 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
if ($qty < 0) {
|
if ($qty < 0) {
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
setEventMessage($langs->trans('ErrorQtyForCustomerInvoiceCantBeNegative'), 'errors');
|
setEventMessages($langs->trans('ErrorQtyForCustomerInvoiceCantBeNegative'), null, 'errors');
|
||||||
$error ++;
|
$error ++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1634,7 +1634,7 @@ if (empty($reshook))
|
|||||||
unset($_POST['situations']);
|
unset($_POST['situations']);
|
||||||
unset($_POST['progress']);
|
unset($_POST['progress']);
|
||||||
} else {
|
} else {
|
||||||
setEventMessage($object->error, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1728,8 +1728,8 @@ if (empty($reshook))
|
|||||||
$upload_dir = $conf->facture->dir_output;
|
$upload_dir = $conf->facture->dir_output;
|
||||||
$file = $upload_dir . '/' . GETPOST('file');
|
$file = $upload_dir . '/' . 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('urlfile')));
|
if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs');
|
||||||
else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors');
|
else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors');
|
||||||
$action = '';
|
$action = '';
|
||||||
}
|
}
|
||||||
} elseif ($action == 'update_extras') {
|
} elseif ($action == 'update_extras') {
|
||||||
@ -1775,9 +1775,9 @@ if (empty($reshook))
|
|||||||
} else {
|
} else {
|
||||||
if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') {
|
if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') {
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
setEventMessage($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), 'errors');
|
setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors');
|
||||||
} else {
|
} else {
|
||||||
setEventMessage($object->error, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // bascule du statut d'un contact
|
} // bascule du statut d'un contact
|
||||||
@ -1843,6 +1843,8 @@ if ($action == 'create')
|
|||||||
$res = $soc->fetch($socid);
|
$res = $soc->fetch($socid);
|
||||||
|
|
||||||
// Load objectsrc
|
// Load objectsrc
|
||||||
|
$remise_absolue = 0;
|
||||||
|
|
||||||
if (! empty($origin) && ! empty($originid))
|
if (! empty($origin) && ! empty($originid))
|
||||||
{
|
{
|
||||||
// Parse element/subelement (ex: project_task)
|
// Parse element/subelement (ex: project_task)
|
||||||
@ -1854,6 +1856,20 @@ if ($action == 'create')
|
|||||||
|
|
||||||
if ($element == 'project') {
|
if ($element == 'project') {
|
||||||
$projectid = $originid;
|
$projectid = $originid;
|
||||||
|
|
||||||
|
if (!$cond_reglement_id) {
|
||||||
|
$cond_reglement_id = $soc->cond_reglement_id;
|
||||||
|
}
|
||||||
|
if (!$mode_reglement_id) {
|
||||||
|
$mode_reglement_id = $soc->mode_reglement_id;
|
||||||
|
}
|
||||||
|
if (!$remise_percent) {
|
||||||
|
$remise_percent = $soc->remise_percent;
|
||||||
|
}
|
||||||
|
if (!$dateinvoice) {
|
||||||
|
// Do not set 0 here (0 for a date is 1970)
|
||||||
|
$dateinvoice = (empty($dateinvoice)?(empty($conf->global->MAIN_AUTOFILL_DATE)?-1:''):$dateinvoice);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// For compatibility
|
// For compatibility
|
||||||
if ($element == 'order' || $element == 'commande') {
|
if ($element == 'order' || $element == 'commande') {
|
||||||
@ -1898,7 +1914,6 @@ if ($action == 'create')
|
|||||||
$objectsrc->fetch_optionals($originid);
|
$objectsrc->fetch_optionals($originid);
|
||||||
$object->array_options = $objectsrc->array_options;
|
$object->array_options = $objectsrc->array_options;
|
||||||
}
|
}
|
||||||
$dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE) ? -1 : ''; // Dot not set 0 here (0 for a date is 1970)
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1909,6 +1924,7 @@ if ($action == 'create')
|
|||||||
$remise_absolue = 0;
|
$remise_absolue = 0;
|
||||||
$dateinvoice = (empty($dateinvoice)?(empty($conf->global->MAIN_AUTOFILL_DATE)?-1:''):$dateinvoice); // Do not set 0 here (0 for a date is 1970)
|
$dateinvoice = (empty($dateinvoice)?(empty($conf->global->MAIN_AUTOFILL_DATE)?-1:''):$dateinvoice); // Do not set 0 here (0 for a date is 1970)
|
||||||
}
|
}
|
||||||
|
|
||||||
$absolute_discount = $soc->getAvailableDiscounts();
|
$absolute_discount = $soc->getAvailableDiscounts();
|
||||||
|
|
||||||
if (! empty($conf->use_javascript_ajax))
|
if (! empty($conf->use_javascript_ajax))
|
||||||
@ -1959,8 +1975,8 @@ if ($action == 'create')
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
print '<td colspan="2">';
|
print '<td colspan="2">';
|
||||||
print $form->select_company('', 'socid', 's.client = 1 OR s.client = 3', 1);
|
print $form->select_company('', 'socid', '(s.client = 1 OR s.client = 3) AND status=1', 1);
|
||||||
// reload page to retrieve customer informations
|
// Option to reload page to retrieve customer informations. Note, this clear other input
|
||||||
if (!empty($conf->global->RELOAD_PAGE_ON_CUSTOMER_CHANGE))
|
if (!empty($conf->global->RELOAD_PAGE_ON_CUSTOMER_CHANGE))
|
||||||
{
|
{
|
||||||
print '<script type="text/javascript">
|
print '<script type="text/javascript">
|
||||||
@ -2371,7 +2387,7 @@ if ($action == 'create')
|
|||||||
$cntinvoice=count($objectsrc->linkedObjects['facture']);
|
$cntinvoice=count($objectsrc->linkedObjects['facture']);
|
||||||
if ($cntinvoice>=1)
|
if ($cntinvoice>=1)
|
||||||
{
|
{
|
||||||
setEventMessage('WarningBillExist','warnings');
|
setEventMessages('WarningBillExist', null, 'warnings');
|
||||||
echo ' ('.$langs->trans('LatestRelatedBill').end($objectsrc->linkedObjects['facture'])->getNomUrl(1).')';
|
echo ' ('.$langs->trans('LatestRelatedBill').end($objectsrc->linkedObjects['facture'])->getNomUrl(1).')';
|
||||||
}
|
}
|
||||||
echo '</td></tr>';
|
echo '</td></tr>';
|
||||||
|
|||||||
@ -898,7 +898,7 @@ class Facture extends CommonInvoice
|
|||||||
if (! empty($this->total_ht))
|
if (! empty($this->total_ht))
|
||||||
$label.= '<br><b>' . $langs->trans('AmountHT') . ':</b> ' . price($this->total_ht, 0, $langs, 0, -1, -1, $conf->currency);
|
$label.= '<br><b>' . $langs->trans('AmountHT') . ':</b> ' . price($this->total_ht, 0, $langs, 0, -1, -1, $conf->currency);
|
||||||
if (! empty($this->total_tva))
|
if (! empty($this->total_tva))
|
||||||
$label.= '<br><b>' . $langs->trans('TVA') . ':</b> ' . price($this->total_tva, 0, $langs, 0, -1, -1, $conf->currency);
|
$label.= '<br><b>' . $langs->trans('VAT') . ':</b> ' . price($this->total_tva, 0, $langs, 0, -1, -1, $conf->currency);
|
||||||
if (! empty($this->total_ttc))
|
if (! empty($this->total_ttc))
|
||||||
$label.= '<br><b>' . $langs->trans('AmountTTC') . ':</b> ' . price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency);
|
$label.= '<br><b>' . $langs->trans('AmountTTC') . ':</b> ' . price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency);
|
||||||
if ($this->type == self::TYPE_REPLACEMENT) $label=$langs->transnoentitiesnoconv("ShowInvoiceReplace").': '.$this->ref;
|
if ($this->type == self::TYPE_REPLACEMENT) $label=$langs->transnoentitiesnoconv("ShowInvoiceReplace").': '.$this->ref;
|
||||||
@ -2045,8 +2045,8 @@ class Facture extends CommonInvoice
|
|||||||
* @param double $pu_ht Unit price without tax (> 0 even for credit note)
|
* @param double $pu_ht Unit price without tax (> 0 even for credit note)
|
||||||
* @param double $qty Quantity
|
* @param double $qty Quantity
|
||||||
* @param double $txtva Force vat rate, -1 for auto
|
* @param double $txtva Force vat rate, -1 for auto
|
||||||
* @param double $txlocaltax1 Local tax 1 rate
|
* @param double $txlocaltax1 Local tax 1 rate (deprecated)
|
||||||
* @param double $txlocaltax2 Local tax 2 rate
|
* @param double $txlocaltax2 Local tax 2 rate (deprecated)
|
||||||
* @param int $fk_product Id of predefined product/service
|
* @param int $fk_product Id of predefined product/service
|
||||||
* @param double $remise_percent Percent of discount on line
|
* @param double $remise_percent Percent of discount on line
|
||||||
* @param int $date_start Date start of service
|
* @param int $date_start Date start of service
|
||||||
@ -2141,6 +2141,7 @@ class Facture extends CommonInvoice
|
|||||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||||
|
|
||||||
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty, $mysoc);
|
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty, $mysoc);
|
||||||
|
$txtva = preg_replace('/\s*\(.*\)/','',$txtva); // Remove code into vatrate.
|
||||||
|
|
||||||
$tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $product_type, $mysoc, $localtaxes_type, $situation_percent);
|
$tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $product_type, $mysoc, $localtaxes_type, $situation_percent);
|
||||||
|
|
||||||
@ -2299,7 +2300,8 @@ class Facture extends CommonInvoice
|
|||||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||||
|
|
||||||
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty, $mysoc);
|
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty, $mysoc);
|
||||||
|
$txtva = preg_replace('/\s*\(.*\)/','',$txtva); // Remove code into vatrate.
|
||||||
|
|
||||||
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, $mysoc, $localtaxes_type, $situation_percent);
|
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, $mysoc, $localtaxes_type, $situation_percent);
|
||||||
|
|
||||||
$total_ht = $tabprice[0];
|
$total_ht = $tabprice[0];
|
||||||
@ -3633,23 +3635,27 @@ class Facture extends CommonInvoice
|
|||||||
/**
|
/**
|
||||||
* Checks if the invoice is the last in its cycle
|
* Checks if the invoice is the last in its cycle
|
||||||
*
|
*
|
||||||
* @return int 0 or 1 if OK, -1 if error
|
* @return bool Last of the cycle status
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function is_last_in_cycle()
|
function is_last_in_cycle()
|
||||||
{
|
{
|
||||||
$sql = 'SELECT max(situation_counter) FROM ' . MAIN_DB_PREFIX . 'facture WHERE situation_cycle_ref = ' . $this->situation_cycle_ref;
|
if (!empty($this->situation_cycle_ref)) {
|
||||||
$resql = $this->db->query($sql);
|
// No point in testing anything if we're not inside a cycle
|
||||||
|
$sql = 'SELECT max(situation_counter) FROM ' . MAIN_DB_PREFIX . 'facture WHERE situation_cycle_ref = ' . $this->situation_cycle_ref;
|
||||||
if ($resql && $resql->num_rows > 0) {
|
$resql = $this->db->query($sql);
|
||||||
$res = $this->db->fetch_array($resql);
|
|
||||||
$last = $res['max(situation_counter)'];
|
if ($resql && $resql->num_rows > 0) {
|
||||||
return ($last == $this->situation_counter);
|
$res = $this->db->fetch_array($resql);
|
||||||
|
$last = $res['max(situation_counter)'];
|
||||||
|
return ($last == $this->situation_counter);
|
||||||
|
} else {
|
||||||
|
$this->error = $this->db->lasterror();
|
||||||
|
dol_syslog(get_class($this) . "::select Error " . $this->error, LOG_ERR);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$this->error = $this->db->lasterror();
|
return true;
|
||||||
dol_syslog(get_class($this) . "::select Error " . $this->error, LOG_ERR);
|
|
||||||
$this->db->rollback();
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -318,7 +318,7 @@ if ($resql)
|
|||||||
$moreforfilter.='</div>';
|
$moreforfilter.='</div>';
|
||||||
}
|
}
|
||||||
// If the user can view prospects other than his'
|
// If the user can view prospects other than his'
|
||||||
if ($conf->categorie->enabled && $user->rights->produit->lire)
|
if ($conf->categorie->enabled && ($user->rights->produit->lire || $user->rights->service->lire))
|
||||||
{
|
{
|
||||||
include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
|
||||||
$moreforfilter.='<div class="divsearchfield">';
|
$moreforfilter.='<div class="divsearchfield">';
|
||||||
|
|||||||
@ -580,7 +580,7 @@ if (! empty($conf->tax->enabled) && $user->rights->tax->charges->lire)
|
|||||||
print '<td align="center">'.$langs->trans("DateDue").'</td>';
|
print '<td align="center">'.$langs->trans("DateDue").'</td>';
|
||||||
print '<td align="right">'.$langs->trans("AmountTTC").'</td>';
|
print '<td align="right">'.$langs->trans("AmountTTC").'</td>';
|
||||||
print '<td align="right">'.$langs->trans("Paid").'</td>';
|
print '<td align="right">'.$langs->trans("Paid").'</td>';
|
||||||
print '<td> </td>';
|
print '<td align="center" width="16"> </td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
if ($num)
|
if ($num)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2011-2014 Juanjo Menent <jmenent@2byte.es>
|
/* Copyright (C) 2011-2014 Juanjo Menent <jmenent@2byte.es>
|
||||||
|
* 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
|
||||||
* 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
|
||||||
@ -104,7 +105,7 @@ if ($_GET["action"] == 'delete')
|
|||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
$db->commit();
|
$db->commit();
|
||||||
header("Location: ".DOL_URL_ROOT.'/compta/localtax/reglement.php');
|
header("Location: ".DOL_URL_ROOT.'/compta/localtax/reglement.php?localTaxType='.$localtax->ltt);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@ -118,7 +118,7 @@ if (empty($reshook))
|
|||||||
{
|
{
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
//$error++;
|
//$error++;
|
||||||
setEventMessage($langs->transnoentities("WarningPaymentDateLowerThanInvoiceDate", dol_print_date($datepaye,'day'), dol_print_date($tmpinvoice->date, 'day'), $tmpinvoice->ref), 'warnings');
|
setEventMessages($langs->transnoentities("WarningPaymentDateLowerThanInvoiceDate", dol_print_date($datepaye,'day'), dol_print_date($tmpinvoice->date, 'day'), $tmpinvoice->ref), null, 'warnings');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,7 +129,7 @@ if (empty($reshook))
|
|||||||
// Check parameters
|
// Check parameters
|
||||||
if (! GETPOST('paiementcode'))
|
if (! GETPOST('paiementcode'))
|
||||||
{
|
{
|
||||||
setEventMessage($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('PaymentMode')), 'errors');
|
setEventMessages($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('PaymentMode')), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,20 +138,20 @@ if (empty($reshook))
|
|||||||
// If bank module is on, account is required to enter a payment
|
// If bank module is on, account is required to enter a payment
|
||||||
if (GETPOST('accountid') <= 0)
|
if (GETPOST('accountid') <= 0)
|
||||||
{
|
{
|
||||||
setEventMessage($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('AccountToCredit')), 'errors');
|
setEventMessages($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('AccountToCredit')), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($totalpayment) && empty($atleastonepaymentnotnull))
|
if (empty($totalpayment) && empty($atleastonepaymentnotnull))
|
||||||
{
|
{
|
||||||
setEventMessage($langs->transnoentities('ErrorFieldRequired',$langs->trans('PaymentAmount')), 'errors');
|
setEventMessages($langs->transnoentities('ErrorFieldRequired',$langs->trans('PaymentAmount')), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($datepaye))
|
if (empty($datepaye))
|
||||||
{
|
{
|
||||||
setEventMessage($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('Date')), 'errors');
|
setEventMessages($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('Date')), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -194,7 +194,7 @@ if (empty($reshook))
|
|||||||
// Si module bank actif, un compte est obligatoire lors de la saisie d'un paiement
|
// Si module bank actif, un compte est obligatoire lors de la saisie d'un paiement
|
||||||
if (GETPOST('accountid') <= 0)
|
if (GETPOST('accountid') <= 0)
|
||||||
{
|
{
|
||||||
setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentities('AccountToCredit')), 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentities('AccountToCredit')), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -212,7 +212,7 @@ if (empty($reshook))
|
|||||||
$paiement_id = $paiement->create($user, (GETPOST('closepaidinvoices')=='on'?1:0));
|
$paiement_id = $paiement->create($user, (GETPOST('closepaidinvoices')=='on'?1:0));
|
||||||
if ($paiement_id < 0)
|
if ($paiement_id < 0)
|
||||||
{
|
{
|
||||||
setEventMessage($paiement->error, 'errors');
|
setEventMessages($paiement->error, $paiement->errors, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -224,7 +224,7 @@ if (empty($reshook))
|
|||||||
$result=$paiement->addPaymentToBank($user,'payment',$label,GETPOST('accountid'),GETPOST('chqemetteur'),GETPOST('chqbank'));
|
$result=$paiement->addPaymentToBank($user,'payment',$label,GETPOST('accountid'),GETPOST('chqemetteur'),GETPOST('chqbank'));
|
||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
{
|
{
|
||||||
setEventMessage($paiement->error, 'errors');
|
setEventMessages($paiement->error, $paiement->errors, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -70,7 +70,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->tax->char
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setEventMessage($paiement->error, 'errors');
|
setEventMessages($paiement->error, $paiement->errors, 'errors');
|
||||||
$db->rollback();
|
$db->rollback();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -108,7 +108,7 @@ if ($action == 'confirm_valide' && $confirm == 'yes' && $user->rights->tax->char
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setEventMessage($paiement->error);
|
setEventMessages($paiement->error, $paiement->errors, 'errors');
|
||||||
$db->rollback();
|
$db->rollback();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -140,7 +140,7 @@ $h++;
|
|||||||
dol_fiche_head($head, $hselected, $langs->trans("PaymentSocialContribution"), 0, 'payment');
|
dol_fiche_head($head, $hselected, $langs->trans("PaymentSocialContribution"), 0, 'payment');
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Confirmation de la suppression du paiement
|
* Deletion confirmation of payment
|
||||||
*/
|
*/
|
||||||
if ($action == 'delete')
|
if ($action == 'delete')
|
||||||
{
|
{
|
||||||
@ -149,7 +149,7 @@ if ($action == 'delete')
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Confirmation de la validation du paiement
|
* Validation confirmation of payment
|
||||||
*/
|
*/
|
||||||
if ($action == 'valide')
|
if ($action == 'valide')
|
||||||
{
|
{
|
||||||
|
|||||||
@ -68,7 +68,7 @@ if ($action == 'confirm_rejet')
|
|||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
$langs->load("error");
|
$langs->load("error");
|
||||||
setEventMessage($langs->transnoentities("ErrorDateMustBeBeforeToday"),'errors');
|
setEventMessages($langs->transnoentities("ErrorDateMustBeBeforeToday"), null, 'errors');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GETPOST('motif','alpha') == 0)
|
if (GETPOST('motif','alpha') == 0)
|
||||||
@ -261,7 +261,7 @@ if ($id)
|
|||||||
if ($sortfield == "") $sortfield="pl.fk_soc";
|
if ($sortfield == "") $sortfield="pl.fk_soc";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Liste des factures
|
* List of invoices
|
||||||
*/
|
*/
|
||||||
$sql = "SELECT pf.rowid";
|
$sql = "SELECT pf.rowid";
|
||||||
$sql.= " ,f.rowid as facid, f.facnumber as ref, f.total_ttc, f.paye, f.fk_statut";
|
$sql.= " ,f.rowid as facid, f.facnumber as ref, f.total_ttc, f.paye, f.fk_statut";
|
||||||
|
|||||||
@ -166,18 +166,18 @@ if ($action == 'delete')
|
|||||||
{
|
{
|
||||||
$object->error=$accountline->error;
|
$object->error=$accountline->error;
|
||||||
$db->rollback();
|
$db->rollback();
|
||||||
setEventMessage($object->error,'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$db->rollback();
|
$db->rollback();
|
||||||
setEventMessage($object->error,'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setEventMessage('Error try do delete a line linked to a conciliated bank transaction','errors');
|
setEventMessages('Error try do delete a line linked to a conciliated bank transaction', null, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -103,7 +103,7 @@ if ($action == 'add' && $user->rights->tax->charges->creer)
|
|||||||
}
|
}
|
||||||
elseif (! is_numeric($amount))
|
elseif (! is_numeric($amount))
|
||||||
{
|
{
|
||||||
setEventMessage($langs->trans("ErrorFieldMustBeANumeric",$langs->transnoentities("Amount")), 'errors');
|
setEventMessages($langs->trans("ErrorFieldMustBeANumeric",$langs->transnoentities("Amount")), null, 'errors');
|
||||||
$action = 'create';
|
$action = 'create';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -148,7 +148,7 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->tax->charges->cr
|
|||||||
}
|
}
|
||||||
elseif (! is_numeric($amount))
|
elseif (! is_numeric($amount))
|
||||||
{
|
{
|
||||||
setEventMessage($langs->trans("ErrorFieldMustBeANumeric",$langs->transnoentities("Amount")), 'errors');
|
setEventMessages($langs->trans("ErrorFieldMustBeANumeric",$langs->transnoentities("Amount")), null, 'errors');
|
||||||
$action = 'create';
|
$action = 'create';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -164,7 +164,7 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->tax->charges->cr
|
|||||||
$result=$chargesociales->update($user);
|
$result=$chargesociales->update($user);
|
||||||
if ($result <= 0)
|
if ($result <= 0)
|
||||||
{
|
{
|
||||||
setEventMessage($chargesociales->error, 'errors');
|
setEventMessages($chargesociales->error, $chargesociales->errors, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -114,7 +114,7 @@ if ($action == 'add' && $_POST["cancel"] <> $langs->trans("Cancel"))
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
$db->rollback();
|
$db->rollback();
|
||||||
setEventMessage($tva->error, 'errors');
|
setEventMessages($tva->error, $tva->errors, 'errors');
|
||||||
$action="create";
|
$action="create";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -150,18 +150,18 @@ if ($action == 'delete')
|
|||||||
{
|
{
|
||||||
$tva->error=$accountline->error;
|
$tva->error=$accountline->error;
|
||||||
$db->rollback();
|
$db->rollback();
|
||||||
setEventMessage($tva->error,'errors');
|
setEventMessages($tva->error, $tva->errors, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$db->rollback();
|
$db->rollback();
|
||||||
setEventMessage($tva->error,'errors');
|
setEventMessages($tva->error, $tva->errors, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setEventMessage('Error try do delete a line linked to a conciliated bank transaction','errors');
|
setEventMessages('Error try do delete a line linked to a conciliated bank transaction', null, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -549,7 +549,7 @@ class Tva extends CommonObject
|
|||||||
$result = $this->db->query($sql);
|
$result = $this->db->query($sql);
|
||||||
if ($result)
|
if ($result)
|
||||||
{
|
{
|
||||||
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."tva"); // TODO should be called paiementtva
|
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."tva"); // TODO should be called 'payment_vat'
|
||||||
|
|
||||||
// Call trigger
|
// Call trigger
|
||||||
//XXX: Should be done just befor commit no ?
|
//XXX: Should be done just befor commit no ?
|
||||||
|
|||||||
@ -1260,7 +1260,8 @@ class Contrat extends CommonObject
|
|||||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||||
|
|
||||||
$localtaxes_type=getLocalTaxesFromRate($txtva, 0, $this->societe, $mysoc);
|
$localtaxes_type=getLocalTaxesFromRate($txtva, 0, $this->societe, $mysoc);
|
||||||
|
$txtva = preg_replace('/\s*\(.*\)/','',$txtva); // Remove code into vatrate.
|
||||||
|
|
||||||
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, 1,$mysoc, $localtaxes_type);
|
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, 1,$mysoc, $localtaxes_type);
|
||||||
$total_ht = $tabprice[0];
|
$total_ht = $tabprice[0];
|
||||||
$total_tva = $tabprice[1];
|
$total_tva = $tabprice[1];
|
||||||
@ -1441,7 +1442,8 @@ class Contrat extends CommonObject
|
|||||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||||
|
|
||||||
$localtaxes_type=getLocalTaxesFromRate($tvatx, 0, $this->societe, $mysoc);
|
$localtaxes_type=getLocalTaxesFromRate($tvatx, 0, $this->societe, $mysoc);
|
||||||
|
$txtva = preg_replace('/\s*\(.*\)/','',$txtva); // Remove code into vatrate.
|
||||||
|
|
||||||
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $tvatx, $localtax1tx, $localtax2tx, 0, $price_base_type, $info_bits, 1, $mysoc, $localtaxes_type);
|
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $tvatx, $localtax1tx, $localtax2tx, 0, $price_base_type, $info_bits, 1, $mysoc, $localtaxes_type);
|
||||||
$total_ht = $tabprice[0];
|
$total_ht = $tabprice[0];
|
||||||
$total_tva = $tabprice[1];
|
$total_tva = $tabprice[1];
|
||||||
|
|||||||
@ -50,7 +50,7 @@ if (! empty($id) && ! empty($action) && ! empty($htmlname))
|
|||||||
$return=array();
|
$return=array();
|
||||||
if (empty($showempty)) $showempty=0;
|
if (empty($showempty)) $showempty=0;
|
||||||
|
|
||||||
$return['value'] = $form->selectcontacts($id,'','contactid',$showempty,'','',0,'',true);
|
$return['value'] = $form->selectcontacts($id,'',$htmlname,$showempty,'','',0,'',true);
|
||||||
$return['num'] = $form->num;
|
$return['num'] = $form->num;
|
||||||
$return['error'] = $form->error;
|
$return['error'] = $form->error;
|
||||||
|
|
||||||
|
|||||||
@ -94,9 +94,9 @@ if (! empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_SEARCHFORM
|
|||||||
{
|
{
|
||||||
$arrayresult['searchintosupplierorder']=array('text'=>img_picto('','object_order').' '.$langs->trans("SearchIntoSupplierOrders", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fourn/commande/list.php?search_all='.urlencode($search_boxvalue));
|
$arrayresult['searchintosupplierorder']=array('text'=>img_picto('','object_order').' '.$langs->trans("SearchIntoSupplierOrders", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fourn/commande/list.php?search_all='.urlencode($search_boxvalue));
|
||||||
}
|
}
|
||||||
if (! empty($conf->askpricesupplier->enabled) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_PROPAL_DISABLED) && $user->rights->askpricesupplier->lire)
|
if (! empty($conf->supplier_proposal->enabled) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_PROPAL_DISABLED) && $user->rights->supplier_proposal->lire)
|
||||||
{
|
{
|
||||||
$arrayresult['searchintosupplierpropal']=array('text'=>img_picto('','object_propal').' '.$langs->trans("SearchIntoSupplierProposals", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/askpricesupplier/list.php?sall='.urlencode($search_boxvalue));
|
$arrayresult['searchintosupplierpropal']=array('text'=>img_picto('','object_propal').' '.$langs->trans("SearchIntoSupplierProposals", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/supplier_proposal/list.php?sall='.urlencode($search_boxvalue));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! empty($conf->contrat->enabled) && empty($conf->global->MAIN_SEARCHFORM_CONTRACT_DISABLED) && $user->rights->contrat->lire)
|
if (! empty($conf->contrat->enabled) && empty($conf->global->MAIN_SEARCHFORM_CONTRACT_DISABLED) && $user->rights->contrat->lire)
|
||||||
|
|||||||
@ -96,12 +96,20 @@ class box_factures_fourn_imp extends ModeleBoxes
|
|||||||
{
|
{
|
||||||
$objp = $db->fetch_object($result);
|
$objp = $db->fetch_object($result);
|
||||||
$datelimite=$db->jdate($objp->datelimite);
|
$datelimite=$db->jdate($objp->datelimite);
|
||||||
|
$date=$db->jdate($objp->df);
|
||||||
|
$datem=$db->jdate($objp->tms);
|
||||||
|
$facturestatic->id = $objp->facid;
|
||||||
|
$facturestatic->ref = $objp->ref;
|
||||||
|
$facturestatic->total_ht = $objp->total_ht;
|
||||||
|
$facturestatic->total_tva = $objp->total_tva;
|
||||||
|
$facturestatic->total_ttc = $objp->total_ttc;
|
||||||
|
$facturestatic->date_echeance = $datelimite;
|
||||||
|
$facturestatic->statut = $objp->fk_statut;
|
||||||
$thirdpartytmp->id = $objp->socid;
|
$thirdpartytmp->id = $objp->socid;
|
||||||
$thirdpartytmp->name = $objp->name;
|
$thirdpartytmp->name = $objp->name;
|
||||||
$thirdpartytmp->code_client = $objp->code_client;
|
$thirdpartytmp->fournisseur = 1;
|
||||||
|
$thirdpartytmp->code_fournisseur = $objp->code_fournisseur;
|
||||||
$thirdpartytmp->logo = $objp->logo;
|
$thirdpartytmp->logo = $objp->logo;
|
||||||
$facturestatic->date_echeance = $datelimite;
|
|
||||||
$facturestatic->statut = $objp->fk_statut;
|
|
||||||
|
|
||||||
$late='';
|
$late='';
|
||||||
if ($facturestatic->hasDelay()) {
|
if ($facturestatic->hasDelay()) {
|
||||||
@ -118,10 +126,9 @@ class box_factures_fourn_imp extends ModeleBoxes
|
|||||||
|
|
||||||
$this->info_box_contents[$line][] = array(
|
$this->info_box_contents[$line][] = array(
|
||||||
'td' => 'align="left"',
|
'td' => 'align="left"',
|
||||||
'text' => ($objp->ref?$objp->ref:$objp->facid),
|
'text' => $facturestatic->getNomUrl(1),
|
||||||
'text2'=> $late,
|
'text2'=> $late,
|
||||||
'tooltip' => $tooltip,
|
'asisi' => 1
|
||||||
'url' => DOL_URL_ROOT."/fourn/facture/card.php?facid=".$objp->facid,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->info_box_contents[$line][] = array(
|
$this->info_box_contents[$line][] = array(
|
||||||
|
|||||||
@ -2183,7 +2183,7 @@ abstract class CommonObject
|
|||||||
if ($this->element == 'facture_fourn' || $this->element == 'invoice_supplier') $fieldtva='total_tva';
|
if ($this->element == 'facture_fourn' || $this->element == 'invoice_supplier') $fieldtva='total_tva';
|
||||||
if ($this->element == 'propal') $fieldttc='total';
|
if ($this->element == 'propal') $fieldttc='total';
|
||||||
if ($this->element == 'expensereport') $fieldtva='total_tva';
|
if ($this->element == 'expensereport') $fieldtva='total_tva';
|
||||||
if ($this->element == 'askpricesupplier') $fieldttc='total';
|
if ($this->element == 'supplier_proposal') $fieldttc='total';
|
||||||
|
|
||||||
if (empty($nodatabaseupdate))
|
if (empty($nodatabaseupdate))
|
||||||
{
|
{
|
||||||
@ -2394,8 +2394,8 @@ abstract class CommonObject
|
|||||||
else if ($objecttype == 'propal') {
|
else if ($objecttype == 'propal') {
|
||||||
$classpath = 'comm/propal/class';
|
$classpath = 'comm/propal/class';
|
||||||
}
|
}
|
||||||
else if ($objecttype == 'askpricesupplier') {
|
else if ($objecttype == 'supplier_proposal') {
|
||||||
$classpath = 'comm/askpricesupplier/class';
|
$classpath = 'supplier_proposal/class';
|
||||||
}
|
}
|
||||||
else if ($objecttype == 'shipping') {
|
else if ($objecttype == 'shipping') {
|
||||||
$classpath = 'expedition/class'; $subelement = 'expedition'; $module = 'expedition_bon';
|
$classpath = 'expedition/class'; $subelement = 'expedition'; $module = 'expedition_bon';
|
||||||
@ -3046,9 +3046,9 @@ abstract class CommonObject
|
|||||||
// Description
|
// Description
|
||||||
print '<td class="linecoldescription">'.$langs->trans('Description').'</td>';
|
print '<td class="linecoldescription">'.$langs->trans('Description').'</td>';
|
||||||
|
|
||||||
if ($this->element == 'askpricesupplier')
|
if ($this->element == 'supplier_proposal')
|
||||||
{
|
{
|
||||||
print '<td class="linerefsupplier" align="right"><span id="title_fourn_ref">'.$langs->trans("AskPriceSupplierRefFourn").'</span></td>';
|
print '<td class="linerefsupplier" align="right"><span id="title_fourn_ref">'.$langs->trans("SupplierProposalRefFourn").'</span></td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// VAT
|
// VAT
|
||||||
|
|||||||
@ -193,6 +193,7 @@ class Conf
|
|||||||
{
|
{
|
||||||
$modulename=strtolower($reg[1]);
|
$modulename=strtolower($reg[1]);
|
||||||
if ($modulename == 'propale') $modulename='propal';
|
if ($modulename == 'propale') $modulename='propal';
|
||||||
|
if ($modulename == 'supplierproposal') $modulename='supplier_proposal';
|
||||||
if (! isset($this->$modulename) || ! is_object($this->$modulename)) $this->$modulename=new stdClass();
|
if (! isset($this->$modulename) || ! is_object($this->$modulename)) $this->$modulename=new stdClass();
|
||||||
$this->$modulename->enabled=true;
|
$this->$modulename->enabled=true;
|
||||||
$this->modules[]=$modulename; // Add this module in list of enabled modules
|
$this->modules[]=$modulename; // Add this module in list of enabled modules
|
||||||
@ -451,10 +452,10 @@ class Conf
|
|||||||
$this->maxfilesize = (empty($this->global->MAIN_UPLOAD_DOC) ? 0 : $this->global->MAIN_UPLOAD_DOC * 1024);
|
$this->maxfilesize = (empty($this->global->MAIN_UPLOAD_DOC) ? 0 : $this->global->MAIN_UPLOAD_DOC * 1024);
|
||||||
|
|
||||||
// Define list of limited modules
|
// Define list of limited modules
|
||||||
if (! isset($this->global->MAIN_MODULES_FOR_EXTERNAL)) $this->global->MAIN_MODULES_FOR_EXTERNAL='user,askpricesupplier,facture,categorie,commande,fournisseur,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda,adherent'; // '' means 'all'. Note that contact is added here as it should be a module later.
|
if (! isset($this->global->MAIN_MODULES_FOR_EXTERNAL)) $this->global->MAIN_MODULES_FOR_EXTERNAL='user,supplier_proposal,facture,categorie,commande,fournisseur,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda,adherent'; // '' means 'all'. Note that contact is added here as it should be a module later.
|
||||||
|
|
||||||
// Enable select2
|
// Enable select2
|
||||||
if (empty($this->global->MAIN_USE_JQUERY_MULTISELECT)) $this->global->MAIN_USE_JQUERY_MULTISELECT='select2';
|
if (empty($this->global->MAIN_USE_JQUERY_MULTISELECT) || $this->global->MAIN_USE_JQUERY_MULTISELECT == '1') $this->global->MAIN_USE_JQUERY_MULTISELECT='select2';
|
||||||
|
|
||||||
// Timeouts
|
// Timeouts
|
||||||
if (empty($this->global->MAIN_USE_CONNECT_TIMEOUT)) $this->global->MAIN_USE_CONNECT_TIMEOUT=10;
|
if (empty($this->global->MAIN_USE_CONNECT_TIMEOUT)) $this->global->MAIN_USE_CONNECT_TIMEOUT=10;
|
||||||
|
|||||||
@ -3857,12 +3857,12 @@ class Form
|
|||||||
|
|
||||||
dol_syslog(__METHOD__, LOG_DEBUG);
|
dol_syslog(__METHOD__, LOG_DEBUG);
|
||||||
|
|
||||||
$sql = "SELECT DISTINCT t.taux, t.recuperableonly";
|
$sql = "SELECT DISTINCT t.code, t.taux, t.recuperableonly";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c";
|
$sql.= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c";
|
||||||
$sql.= " WHERE t.fk_pays = c.rowid";
|
$sql.= " WHERE t.fk_pays = c.rowid";
|
||||||
$sql.= " AND t.active > 0";
|
$sql.= " AND t.active > 0";
|
||||||
$sql.= " AND c.code IN (".$country_code.")";
|
$sql.= " AND c.code IN (".$country_code.")";
|
||||||
$sql.= " ORDER BY t.taux ASC, t.recuperableonly ASC";
|
$sql.= " ORDER BY t.code ASC, t.taux ASC, t.recuperableonly ASC";
|
||||||
|
|
||||||
$resql=$this->db->query($sql);
|
$resql=$this->db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
@ -3873,8 +3873,9 @@ class Form
|
|||||||
for ($i = 0; $i < $num; $i++)
|
for ($i = 0; $i < $num; $i++)
|
||||||
{
|
{
|
||||||
$obj = $this->db->fetch_object($resql);
|
$obj = $this->db->fetch_object($resql);
|
||||||
|
$this->cache_vatrates[$i]['code'] = $obj->code;
|
||||||
$this->cache_vatrates[$i]['txtva'] = $obj->taux;
|
$this->cache_vatrates[$i]['txtva'] = $obj->taux;
|
||||||
$this->cache_vatrates[$i]['libtva'] = $obj->taux.'%';
|
$this->cache_vatrates[$i]['libtva'] = $obj->taux.'%'.($obj->code?' ('.$obj->code.')':''); // Label must contains only 0-9 , . % or *
|
||||||
$this->cache_vatrates[$i]['nprtva'] = $obj->recuperableonly;
|
$this->cache_vatrates[$i]['nprtva'] = $obj->recuperableonly;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3897,7 +3898,7 @@ class Form
|
|||||||
* Output an HTML select vat rate.
|
* Output an HTML select vat rate.
|
||||||
* The name of this function should be selectVat. We keep bad name for compatibility purpose.
|
* The name of this function should be selectVat. We keep bad name for compatibility purpose.
|
||||||
*
|
*
|
||||||
* @param string $htmlname Name of html select field
|
* @param string $htmlname Name of HTML select field
|
||||||
* @param float $selectedrate Force preselected vat rate. Use '' for no forcing.
|
* @param float $selectedrate Force preselected vat rate. Use '' for no forcing.
|
||||||
* @param Societe $societe_vendeuse Thirdparty seller
|
* @param Societe $societe_vendeuse Thirdparty seller
|
||||||
* @param Societe $societe_acheteuse Thirdparty buyer
|
* @param Societe $societe_acheteuse Thirdparty buyer
|
||||||
@ -3910,10 +3911,11 @@ class Form
|
|||||||
* Si vendeur et acheteur dans Communauté européenne et acheteur= particulier alors TVA par défaut=TVA du produit vendu. Fin de règle.
|
* Si vendeur et acheteur dans Communauté européenne et acheteur= particulier alors TVA par défaut=TVA du produit vendu. Fin de règle.
|
||||||
* Si vendeur et acheteur dans Communauté européenne et acheteur= entreprise alors TVA par défaut=0. Fin de règle.
|
* Si vendeur et acheteur dans Communauté européenne et acheteur= entreprise alors TVA par défaut=0. Fin de règle.
|
||||||
* Sinon la TVA proposee par defaut=0. Fin de regle.
|
* Sinon la TVA proposee par defaut=0. Fin de regle.
|
||||||
* @param bool $options_only Return options only (for ajax treatment)
|
* @param bool $options_only Return HTML options lines only (for ajax treatment)
|
||||||
|
* @param int $addcode Add code into key in select list
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function load_tva($htmlname='tauxtva', $selectedrate='', $societe_vendeuse='', $societe_acheteuse='', $idprod=0, $info_bits=0, $type='', $options_only=false)
|
function load_tva($htmlname='tauxtva', $selectedrate='', $societe_vendeuse='', $societe_acheteuse='', $idprod=0, $info_bits=0, $type='', $options_only=false, $addcode=0)
|
||||||
{
|
{
|
||||||
global $langs,$conf,$mysoc;
|
global $langs,$conf,$mysoc;
|
||||||
|
|
||||||
@ -4016,13 +4018,16 @@ class Form
|
|||||||
|
|
||||||
$return.= '<option value="'.$rate['txtva'];
|
$return.= '<option value="'.$rate['txtva'];
|
||||||
$return.= $rate['nprtva'] ? '*': '';
|
$return.= $rate['nprtva'] ? '*': '';
|
||||||
|
if ($addcode && $rate['code']) $return.=' ('.$rate['code'].')';
|
||||||
$return.= '"';
|
$return.= '"';
|
||||||
if ($rate['txtva'] == $defaulttx && $rate['nprtva'] == $defaultnpr)
|
if ($rate['txtva'] == $defaulttx && $rate['nprtva'] == $defaultnpr)
|
||||||
{
|
{
|
||||||
$return.= ' selected';
|
$return.= ' selected';
|
||||||
}
|
}
|
||||||
$return.= '>'.vatrate($rate['libtva']);
|
$return.= '>'.vatrate($rate['libtva']);
|
||||||
|
//$return.=($rate['code']?' '.$rate['code']:'');
|
||||||
$return.= $rate['nprtva'] ? ' *': '';
|
$return.= $rate['nprtva'] ? ' *': '';
|
||||||
|
|
||||||
$return.= '</option>';
|
$return.= '</option>';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4890,9 +4895,9 @@ class Form
|
|||||||
$tplpath = 'comm/'.$element;
|
$tplpath = 'comm/'.$element;
|
||||||
if (empty($conf->propal->enabled)) continue; // Do not show if module disabled
|
if (empty($conf->propal->enabled)) continue; // Do not show if module disabled
|
||||||
}
|
}
|
||||||
else if ($objecttype == 'askpricesupplier') {
|
else if ($objecttype == 'supplier_proposal') {
|
||||||
$tplpath = 'comm/'.$element;
|
$tplpath = 'comm/'.$element;
|
||||||
if (empty($conf->askpricesupplier->enabled)) continue; // Do not show if module disabled
|
if (empty($conf->supplier_proposal->enabled)) continue; // Do not show if module disabled
|
||||||
}
|
}
|
||||||
else if ($objecttype == 'shipping' || $objecttype == 'shipment') {
|
else if ($objecttype == 'shipping' || $objecttype == 'shipment') {
|
||||||
$tplpath = 'expedition';
|
$tplpath = 'expedition';
|
||||||
@ -5299,7 +5304,7 @@ class Form
|
|||||||
$entity = (! empty($object->entity) ? $object->entity : $conf->entity);
|
$entity = (! empty($object->entity) ? $object->entity : $conf->entity);
|
||||||
$id = (! empty($object->id) ? $object->id : $object->rowid);
|
$id = (! empty($object->id) ? $object->id : $object->rowid);
|
||||||
|
|
||||||
$ret='';$dir='';$file='';$altfile='';$email='';
|
$ret='';$dir='';$file='';$originalfile='';$altfile='';$email='';
|
||||||
|
|
||||||
if ($modulepart=='societe')
|
if ($modulepart=='societe')
|
||||||
{
|
{
|
||||||
@ -5308,9 +5313,11 @@ class Form
|
|||||||
$smallfile=preg_replace('/(\.png|\.gif|\.jpg|\.jpeg|\.bmp)/i','_small\\1',$smallfile);
|
$smallfile=preg_replace('/(\.png|\.gif|\.jpg|\.jpeg|\.bmp)/i','_small\\1',$smallfile);
|
||||||
if (! empty($object->logo))
|
if (! empty($object->logo))
|
||||||
{
|
{
|
||||||
|
// TODO Introduce get_exdir
|
||||||
if ((string) $imagesize == 'mini') $file=$id.'/logos/thumbs/'.getImageFileNameForSize($object->logo, '_mini');
|
if ((string) $imagesize == 'mini') $file=$id.'/logos/thumbs/'.getImageFileNameForSize($object->logo, '_mini');
|
||||||
else if ((string) $imagesize == 'small') $file=$id.'/logos/thumbs/'.getImageFileNameForSize($object->logo, '_small');
|
else if ((string) $imagesize == 'small') $file=$id.'/logos/thumbs/'.getImageFileNameForSize($object->logo, '_small');
|
||||||
else $file=$id.'/logos/thumbs/'.$smallfile;
|
else $file=$id.'/logos/thumbs/'.$smallfile;
|
||||||
|
$originalfile=$id.'/logos/thumbs/'.$smallfile;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ($modulepart=='contact')
|
else if ($modulepart=='contact')
|
||||||
@ -5318,9 +5325,11 @@ class Form
|
|||||||
$dir=$conf->societe->multidir_output[$entity].'/contact';
|
$dir=$conf->societe->multidir_output[$entity].'/contact';
|
||||||
if (! empty($object->photo))
|
if (! empty($object->photo))
|
||||||
{
|
{
|
||||||
|
// TODO Introduce get_exdir
|
||||||
if ((string) $imagesize == 'mini') $file=$id.'/photos/thumbs/'.getImageFileNameForSize($object->photo, '_mini');
|
if ((string) $imagesize == 'mini') $file=$id.'/photos/thumbs/'.getImageFileNameForSize($object->photo, '_mini');
|
||||||
else if ((string) $imagesize == 'small') $file=$id.'/photos/thumbs/'.getImageFileNameForSize($object->photo, '_small');
|
else if ((string) $imagesize == 'small') $file=$id.'/photos/thumbs/'.getImageFileNameForSize($object->photo, '_small');
|
||||||
else $file=$id.'/photos/'.$object->photo;
|
else $file=$id.'/photos/'.$object->photo;
|
||||||
|
$originalfile=$id.'/photos/'.$object->photo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ($modulepart=='userphoto')
|
else if ($modulepart=='userphoto')
|
||||||
@ -5331,6 +5340,7 @@ class Form
|
|||||||
if ((string) $imagesize == 'mini') $file=get_exdir($id, 2, 0, 0, $object, 'user').getImageFileNameForSize($object->photo, '_mini');
|
if ((string) $imagesize == 'mini') $file=get_exdir($id, 2, 0, 0, $object, 'user').getImageFileNameForSize($object->photo, '_mini');
|
||||||
else if ((string) $imagesize == 'small') $file=get_exdir($id, 2, 0, 0, $object, 'user').getImageFileNameForSize($object->photo, '_small');
|
else if ((string) $imagesize == 'small') $file=get_exdir($id, 2, 0, 0, $object, 'user').getImageFileNameForSize($object->photo, '_small');
|
||||||
else $file=get_exdir($id, 2, 0, 0, $object, 'user').$object->photo;
|
else $file=get_exdir($id, 2, 0, 0, $object, 'user').$object->photo;
|
||||||
|
$originalfile=get_exdir($id, 2, 0, 0, $object, 'user').$object->photo;
|
||||||
}
|
}
|
||||||
if (! empty($conf->global->MAIN_OLD_IMAGE_LINKS)) $altfile=$object->id.".jpg"; // For backward compatibility
|
if (! empty($conf->global->MAIN_OLD_IMAGE_LINKS)) $altfile=$object->id.".jpg"; // For backward compatibility
|
||||||
$email=$object->email;
|
$email=$object->email;
|
||||||
@ -5343,6 +5353,7 @@ class Form
|
|||||||
if ((string) $imagesize == 'mini') $file=get_exdir($id, 2, 0, 0, $object, 'member').'photos/'.getImageFileNameForSize($object->photo, '_mini');
|
if ((string) $imagesize == 'mini') $file=get_exdir($id, 2, 0, 0, $object, 'member').'photos/'.getImageFileNameForSize($object->photo, '_mini');
|
||||||
else if ((string) $imagesize == 'small') $file=get_exdir($id, 2, 0, 0, $object, 'member').'photos/'.getImageFileNameForSize($object->photo, '_small');
|
else if ((string) $imagesize == 'small') $file=get_exdir($id, 2, 0, 0, $object, 'member').'photos/'.getImageFileNameForSize($object->photo, '_small');
|
||||||
else $file=get_exdir($id, 2, 0, 0, $object, 'member').'photos/'.$object->photo;
|
else $file=get_exdir($id, 2, 0, 0, $object, 'member').'photos/'.$object->photo;
|
||||||
|
$originalfile=get_exdir($id, 2, 0, 0, $object, 'member').'photos/'.$object->photo;
|
||||||
}
|
}
|
||||||
if (! empty($conf->global->MAIN_OLD_IMAGE_LINKS)) $altfile=$object->id.".jpg"; // For backward compatibility
|
if (! empty($conf->global->MAIN_OLD_IMAGE_LINKS)) $altfile=$object->id.".jpg"; // For backward compatibility
|
||||||
$email=$object->email;
|
$email=$object->email;
|
||||||
@ -5355,6 +5366,7 @@ class Form
|
|||||||
if ((string) $imagesize == 'mini') $file=get_exdir($id, 2, 0, 0, $object, $modulepart).'photos/'.getImageFileNameForSize($object->photo, '_mini');
|
if ((string) $imagesize == 'mini') $file=get_exdir($id, 2, 0, 0, $object, $modulepart).'photos/'.getImageFileNameForSize($object->photo, '_mini');
|
||||||
else if ((string) $imagesize == 'small') $file=get_exdir($id, 2, 0, 0, $object, $modulepart).'photos/'.getImageFileNameForSize($object->photo, '_small');
|
else if ((string) $imagesize == 'small') $file=get_exdir($id, 2, 0, 0, $object, $modulepart).'photos/'.getImageFileNameForSize($object->photo, '_small');
|
||||||
else $file=get_exdir($id, 2, 0, 0, $object, $modulepart).'photos/'.$object->photo;
|
else $file=get_exdir($id, 2, 0, 0, $object, $modulepart).'photos/'.$object->photo;
|
||||||
|
$originalfile=get_exdir($id, 2, 0, 0, $object, $modulepart).'photos/'.$object->photo;
|
||||||
}
|
}
|
||||||
if (! empty($conf->global->MAIN_OLD_IMAGE_LINKS)) $altfile=$object->id.".jpg"; // For backward compatibility
|
if (! empty($conf->global->MAIN_OLD_IMAGE_LINKS)) $altfile=$object->id.".jpg"; // For backward compatibility
|
||||||
$email=$object->email;
|
$email=$object->email;
|
||||||
@ -5364,13 +5376,13 @@ class Form
|
|||||||
{
|
{
|
||||||
if ($file && file_exists($dir."/".$file))
|
if ($file && file_exists($dir."/".$file))
|
||||||
{
|
{
|
||||||
if ($addlinktofullsize) $ret.='<a href="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($file).'&cache='.$cache.'">';
|
if ($addlinktofullsize) $ret.='<a href="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($originalfile).'&cache='.$cache.'">';
|
||||||
$ret.='<img alt="Photo" id="photologo'.(preg_replace('/[^a-z]/i','_',$file)).'" class="'.$cssclass.'" '.($width?' width="'.$width.'"':'').($height?' height="'.$height.'"':'').' src="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($file).'&cache='.$cache.'">';
|
$ret.='<img alt="Photo" id="photologo'.(preg_replace('/[^a-z]/i','_',$file)).'" class="'.$cssclass.'" '.($width?' width="'.$width.'"':'').($height?' height="'.$height.'"':'').' src="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($file).'&cache='.$cache.'">';
|
||||||
if ($addlinktofullsize) $ret.='</a>';
|
if ($addlinktofullsize) $ret.='</a>';
|
||||||
}
|
}
|
||||||
else if ($altfile && file_exists($dir."/".$altfile))
|
else if ($altfile && file_exists($dir."/".$altfile))
|
||||||
{
|
{
|
||||||
if ($addlinktofullsize) $ret.='<a href="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($file).'&cache='.$cache.'">';
|
if ($addlinktofullsize) $ret.='<a href="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($originalfile).'&cache='.$cache.'">';
|
||||||
$ret.='<img alt="Photo alt" id="photologo'.(preg_replace('/[^a-z]/i','_',$file)).'" class="'.$cssclass.'" '.($width?' width="'.$width.'"':'').($height?' height="'.$height.'"':'').' src="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($altfile).'&cache='.$cache.'">';
|
$ret.='<img alt="Photo alt" id="photologo'.(preg_replace('/[^a-z]/i','_',$file)).'" class="'.$cssclass.'" '.($width?' width="'.$width.'"':'').($height?' height="'.$height.'"':'').' src="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($altfile).'&cache='.$cache.'">';
|
||||||
if ($addlinktofullsize) $ret.='</a>';
|
if ($addlinktofullsize) $ret.='</a>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -171,7 +171,7 @@ class FormActions
|
|||||||
if ($typeelement == 'invoice') $title=$langs->trans('ActionsOnBill');
|
if ($typeelement == 'invoice') $title=$langs->trans('ActionsOnBill');
|
||||||
elseif ($typeelement == 'invoice_supplier' || $typeelement == 'supplier_invoice') $title=$langs->trans('ActionsOnBill');
|
elseif ($typeelement == 'invoice_supplier' || $typeelement == 'supplier_invoice') $title=$langs->trans('ActionsOnBill');
|
||||||
elseif ($typeelement == 'propal') $title=$langs->trans('ActionsOnPropal');
|
elseif ($typeelement == 'propal') $title=$langs->trans('ActionsOnPropal');
|
||||||
elseif ($typeelement == 'askpricesupplier') $title=$langs->trans('ActionsOnAskPriceSupplier');
|
elseif ($typeelement == 'supplier_proposal') $title=$langs->trans('ActionsOnSupplierProposal');
|
||||||
elseif ($typeelement == 'order') $title=$langs->trans('ActionsOnOrder');
|
elseif ($typeelement == 'order') $title=$langs->trans('ActionsOnOrder');
|
||||||
elseif ($typeelement == 'order_supplier' || $typeelement == 'supplier_order') $title=$langs->trans('ActionsOnOrder');
|
elseif ($typeelement == 'order_supplier' || $typeelement == 'supplier_order') $title=$langs->trans('ActionsOnOrder');
|
||||||
elseif ($typeelement == 'project') $title=$langs->trans('ActionsOnProject');
|
elseif ($typeelement == 'project') $title=$langs->trans('ActionsOnProject');
|
||||||
|
|||||||
@ -285,7 +285,7 @@ class FormFile
|
|||||||
}
|
}
|
||||||
|
|
||||||
$printer=0;
|
$printer=0;
|
||||||
if (in_array($modulepart,array('facture','askpricesupplier','propal','proposal','order','commande','expedition', 'commande_fournisseur'))) // The direct print feature is implemented only for such elements
|
if (in_array($modulepart,array('facture','supplier_proposal','propal','proposal','order','commande','expedition', 'commande_fournisseur'))) // The direct print feature is implemented only for such elements
|
||||||
{
|
{
|
||||||
$printer = (!empty($user->rights->printing->read) && !empty($conf->printing->enabled))?true:false;
|
$printer = (!empty($user->rights->printing->read) && !empty($conf->printing->enabled))?true:false;
|
||||||
}
|
}
|
||||||
@ -329,13 +329,13 @@ class FormFile
|
|||||||
$modellist=ModelePDFPropales::liste_modeles($this->db);
|
$modellist=ModelePDFPropales::liste_modeles($this->db);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ($modulepart == 'askpricesupplier')
|
else if ($modulepart == 'supplier_proposal')
|
||||||
{
|
{
|
||||||
if (is_array($genallowed)) $modellist=$genallowed;
|
if (is_array($genallowed)) $modellist=$genallowed;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/modules/askpricesupplier/modules_askpricesupplier.php';
|
include_once DOL_DOCUMENT_ROOT.'/core/modules/supplier_proposal/modules_supplier_proposal.php';
|
||||||
$modellist=ModelePDFAskPriceSupplier::liste_modeles($this->db);
|
$modellist=ModelePDFSupplierProposal::liste_modeles($this->db);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ($modulepart == 'commande')
|
else if ($modulepart == 'commande')
|
||||||
@ -992,10 +992,10 @@ class FormFile
|
|||||||
include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
|
||||||
$object_instance=new Propal($this->db);
|
$object_instance=new Propal($this->db);
|
||||||
}
|
}
|
||||||
else if ($modulepart == 'askpricesupplier')
|
else if ($modulepart == 'supplier_proposal')
|
||||||
{
|
{
|
||||||
include_once DOL_DOCUMENT_ROOT.'/comm/askpricesupplier/class/askpricesupplier.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/supplier_proposal/class/supplier_proposal.class.php';
|
||||||
$object_instance=new AskPriceSupplier($this->db);
|
$object_instance=new SupplierProposal($this->db);
|
||||||
}
|
}
|
||||||
else if ($modulepart == 'order')
|
else if ($modulepart == 'order')
|
||||||
{
|
{
|
||||||
@ -1058,7 +1058,7 @@ class FormFile
|
|||||||
if ($modulepart == 'invoice') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); }
|
if ($modulepart == 'invoice') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); }
|
||||||
if ($modulepart == 'invoice_supplier') { preg_match('/([^\/]+)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); if (is_numeric($ref)) { $id=$ref; $ref=''; } } // $ref may be also id with old supplier invoices
|
if ($modulepart == 'invoice_supplier') { preg_match('/([^\/]+)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); if (is_numeric($ref)) { $id=$ref; $ref=''; } } // $ref may be also id with old supplier invoices
|
||||||
if ($modulepart == 'propal') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); }
|
if ($modulepart == 'propal') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); }
|
||||||
if ($modulepart == 'askpricesupplier') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); }
|
if ($modulepart == 'supplier_proposal') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); }
|
||||||
if ($modulepart == 'order') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); }
|
if ($modulepart == 'order') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); }
|
||||||
if ($modulepart == 'order_supplier') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); }
|
if ($modulepart == 'order_supplier') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); }
|
||||||
if ($modulepart == 'contract') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); }
|
if ($modulepart == 'contract') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); }
|
||||||
|
|||||||
@ -524,7 +524,7 @@ class FormMail extends Form
|
|||||||
|
|
||||||
$showinfobcc='';
|
$showinfobcc='';
|
||||||
if (! empty($conf->global->MAIN_MAIL_AUTOCOPY_PROPOSAL_TO) && ! empty($this->param['models']) && $this->param['models'] == 'propal_send') $showinfobcc=$conf->global->MAIN_MAIL_AUTOCOPY_PROPOSAL_TO;
|
if (! empty($conf->global->MAIN_MAIL_AUTOCOPY_PROPOSAL_TO) && ! empty($this->param['models']) && $this->param['models'] == 'propal_send') $showinfobcc=$conf->global->MAIN_MAIL_AUTOCOPY_PROPOSAL_TO;
|
||||||
if (! empty($conf->global->MAIN_MAIL_AUTOCOPY_ASKPRICESUPPLIER_TO) && ! empty($this->param['models']) && $this->param['models'] == 'askpricesupplier_send') $showinfobcc=$conf->global->MAIN_MAIL_AUTOCOPY_ASKPRICESUPPLIER_TO;
|
if (! empty($conf->global->MAIN_MAIL_AUTOCOPY_SUPPLIER_PROPOSAL_TO) && ! empty($this->param['models']) && $this->param['models'] == 'supplier_proposal_send') $showinfobcc=$conf->global->MAIN_MAIL_AUTOCOPY_SUPPLIER_PROPOSAL_TO;
|
||||||
if (! empty($conf->global->MAIN_MAIL_AUTOCOPY_ORDER_TO) && ! empty($this->param['models']) && $this->param['models'] == 'order_send') $showinfobcc=$conf->global->MAIN_MAIL_AUTOCOPY_ORDER_TO;
|
if (! empty($conf->global->MAIN_MAIL_AUTOCOPY_ORDER_TO) && ! empty($this->param['models']) && $this->param['models'] == 'order_send') $showinfobcc=$conf->global->MAIN_MAIL_AUTOCOPY_ORDER_TO;
|
||||||
if (! empty($conf->global->MAIN_MAIL_AUTOCOPY_INVOICE_TO) && ! empty($this->param['models']) && $this->param['models'] == 'facture_send') $showinfobcc=$conf->global->MAIN_MAIL_AUTOCOPY_INVOICE_TO;
|
if (! empty($conf->global->MAIN_MAIL_AUTOCOPY_INVOICE_TO) && ! empty($this->param['models']) && $this->param['models'] == 'facture_send') $showinfobcc=$conf->global->MAIN_MAIL_AUTOCOPY_INVOICE_TO;
|
||||||
if ($showinfobcc) $out.=' + '.$showinfobcc;
|
if ($showinfobcc) $out.=' + '.$showinfobcc;
|
||||||
@ -544,7 +544,7 @@ class FormMail extends Form
|
|||||||
{
|
{
|
||||||
$defaultvaluefordeliveryreceipt=0;
|
$defaultvaluefordeliveryreceipt=0;
|
||||||
if (! empty($conf->global->MAIL_FORCE_DELIVERY_RECEIPT_PROPAL) && ! empty($this->param['models']) && $this->param['models'] == 'propal_send') $defaultvaluefordeliveryreceipt=1;
|
if (! empty($conf->global->MAIL_FORCE_DELIVERY_RECEIPT_PROPAL) && ! empty($this->param['models']) && $this->param['models'] == 'propal_send') $defaultvaluefordeliveryreceipt=1;
|
||||||
if (! empty($conf->global->MAIL_FORCE_DELIVERY_RECEIPT_ASKPRICESUPPLIER) && ! empty($this->param['models']) && $this->param['models'] == 'askpricesupplier_send') $defaultvaluefordeliveryreceipt=1;
|
if (! empty($conf->global->MAIL_FORCE_DELIVERY_RECEIPT_SUPPLIER_PROPOSAL) && ! empty($this->param['models']) && $this->param['models'] == 'supplier_proposal_send') $defaultvaluefordeliveryreceipt=1;
|
||||||
if (! empty($conf->global->MAIL_FORCE_DELIVERY_RECEIPT_ORDER) && ! empty($this->param['models']) && $this->param['models'] == 'order_send') $defaultvaluefordeliveryreceipt=1;
|
if (! empty($conf->global->MAIL_FORCE_DELIVERY_RECEIPT_ORDER) && ! empty($this->param['models']) && $this->param['models'] == 'order_send') $defaultvaluefordeliveryreceipt=1;
|
||||||
if (! empty($conf->global->MAIL_FORCE_DELIVERY_RECEIPT_INVOICE) && ! empty($this->param['models']) && $this->param['models'] == 'facture_send') $defaultvaluefordeliveryreceipt=1;
|
if (! empty($conf->global->MAIL_FORCE_DELIVERY_RECEIPT_INVOICE) && ! empty($this->param['models']) && $this->param['models'] == 'facture_send') $defaultvaluefordeliveryreceipt=1;
|
||||||
$out.= $form->selectyesno('deliveryreceipt', (isset($_POST["deliveryreceipt"])?$_POST["deliveryreceipt"]:$defaultvaluefordeliveryreceipt), 1);
|
$out.= $form->selectyesno('deliveryreceipt', (isset($_POST["deliveryreceipt"])?$_POST["deliveryreceipt"]:$defaultvaluefordeliveryreceipt), 1);
|
||||||
@ -786,7 +786,7 @@ class FormMail extends Form
|
|||||||
if ($type_template=='facture_send') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendInvoice"); }
|
if ($type_template=='facture_send') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendInvoice"); }
|
||||||
elseif ($type_template=='facture_relance') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendInvoiceReminder"); }
|
elseif ($type_template=='facture_relance') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendInvoiceReminder"); }
|
||||||
elseif ($type_template=='propal_send') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendProposal"); }
|
elseif ($type_template=='propal_send') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendProposal"); }
|
||||||
elseif ($type_template=='askpricesupplier_send') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendAskPriceSupplier"); }
|
elseif ($type_template=='supplier_proposal_send') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendSupplierProposal"); }
|
||||||
elseif ($type_template=='order_send') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendOrder"); }
|
elseif ($type_template=='order_send') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendOrder"); }
|
||||||
elseif ($type_template=='order_supplier_send') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendSupplierOrder"); }
|
elseif ($type_template=='order_supplier_send') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendSupplierOrder"); }
|
||||||
elseif ($type_template=='invoice_supplier_send') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendSupplierInvoice"); }
|
elseif ($type_template=='invoice_supplier_send') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendSupplierInvoice"); }
|
||||||
|
|||||||
@ -25,7 +25,7 @@
|
|||||||
/**
|
/**
|
||||||
* Class to manage generation of HTML components for proposal management
|
* Class to manage generation of HTML components for proposal management
|
||||||
*/
|
*/
|
||||||
class FormAskPriceSupplier
|
class FormSupplierProposal
|
||||||
{
|
{
|
||||||
var $db;
|
var $db;
|
||||||
var $error;
|
var $error;
|
||||||
@ -49,18 +49,18 @@ class FormAskPriceSupplier
|
|||||||
* @param int $short Use short labels
|
* @param int $short Use short labels
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function selectAskPriceSupplierStatus($selected='',$short=0)
|
function selectSupplierProposalStatus($selected='',$short=0)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
$sql = "SELECT id, code, label, active FROM ".MAIN_DB_PREFIX."c_propalst";
|
$sql = "SELECT id, code, label, active FROM ".MAIN_DB_PREFIX."c_propalst";
|
||||||
$sql .= " WHERE active = 1";
|
$sql .= " WHERE active = 1";
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::selectAskPriceSupplierStatus", LOG_DEBUG);
|
dol_syslog(get_class($this)."::selectSupplierProposalStatus", LOG_DEBUG);
|
||||||
$resql=$this->db->query($sql);
|
$resql=$this->db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
print '<select class="flat" name="askpricesupplier_statut">';
|
print '<select class="flat" name="supplier_proposal_statut">';
|
||||||
print '<option value=""> </option>';
|
print '<option value=""> </option>';
|
||||||
$num = $this->db->num_rows($resql);
|
$num = $this->db->num_rows($resql);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
@ -2,6 +2,7 @@
|
|||||||
/* Copyright (C) 2008-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
/* Copyright (C) 2008-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2012-2015 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copyright (C) 2012-2015 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copyright (C) 2012 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2012 Juanjo Menent <jmenent@2byte.es>
|
||||||
|
* 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
|
||||||
* 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
|
||||||
@ -1440,6 +1441,9 @@ function dol_add_file_process($upload_dir, $allowoverwrite=0, $donotupdatesessio
|
|||||||
// Define $destpath (path to file including filename) and $destfile (only filename)
|
// Define $destpath (path to file including filename) and $destfile (only filename)
|
||||||
$destpath=$upload_dir . "/" . $_FILES[$varfiles]['name'];
|
$destpath=$upload_dir . "/" . $_FILES[$varfiles]['name'];
|
||||||
$destfile=$_FILES[$varfiles]['name'];
|
$destfile=$_FILES[$varfiles]['name'];
|
||||||
|
|
||||||
|
$savingdocmask = dol_sanitizeFileName($savingdocmask);
|
||||||
|
|
||||||
if ($savingdocmask)
|
if ($savingdocmask)
|
||||||
{
|
{
|
||||||
$destpath=$upload_dir . "/" . preg_replace('/__file__/',$_FILES[$varfiles]['name'],$savingdocmask);
|
$destpath=$upload_dir . "/" . preg_replace('/__file__/',$_FILES[$varfiles]['name'],$savingdocmask);
|
||||||
|
|||||||
@ -892,7 +892,7 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r
|
|||||||
$showimage=$object->is_photo_available($conf->product->multidir_output[$object->entity]);
|
$showimage=$object->is_photo_available($conf->product->multidir_output[$object->entity]);
|
||||||
$maxvisiblephotos=(isset($conf->global->PRODUCT_MAX_VISIBLE_PHOTO)?$conf->global->PRODUCT_MAX_VISIBLE_PHOTO:5);
|
$maxvisiblephotos=(isset($conf->global->PRODUCT_MAX_VISIBLE_PHOTO)?$conf->global->PRODUCT_MAX_VISIBLE_PHOTO:5);
|
||||||
if ($conf->browser->phone) $maxvisiblephotos=1;
|
if ($conf->browser->phone) $maxvisiblephotos=1;
|
||||||
if ($showimage) $morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref">'.$object->show_photos($conf->product->multidir_output[$object->entity],1,-$maxvisiblephotos,0,0,0,$width,0).'</div>';
|
if ($showimage) $morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref">'.$object->show_photos($conf->product->multidir_output[$object->entity],'small',-$maxvisiblephotos,0,0,0,$width,0).'</div>';
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$nophoto='/public/theme/common/nophoto.png';
|
$nophoto='/public/theme/common/nophoto.png';
|
||||||
@ -901,7 +901,7 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ($showimage) $morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref">'.$form->showphoto($modulepart,$object,0,0,0,'photoref','',1,0,$maxvisiblephotos).'</div>';
|
if ($showimage) $morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref">'.$form->showphoto($modulepart,$object,0,0,0,'photoref','small',1,0,$maxvisiblephotos).'</div>';
|
||||||
}
|
}
|
||||||
if ($showbarcode) $morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref">'.$form->showbarcode($object).'</div>';
|
if ($showbarcode) $morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref">'.$form->showbarcode($object).'</div>';
|
||||||
if ($object->element == 'societe' && ! empty($conf->use_javascript_ajax) && $user->rights->societe->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) {
|
if ($object->element == 'societe' && ! empty($conf->use_javascript_ajax) && $user->rights->societe->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) {
|
||||||
@ -3088,12 +3088,18 @@ function print_fleche_navigation($page, $file, $options='', $nextpage=0, $betwee
|
|||||||
*/
|
*/
|
||||||
function vatrate($rate,$addpercent=false,$info_bits=0,$usestarfornpr=0)
|
function vatrate($rate,$addpercent=false,$info_bits=0,$usestarfornpr=0)
|
||||||
{
|
{
|
||||||
// Test for compatibility
|
$morelabel='';
|
||||||
if (preg_match('/%/',$rate))
|
|
||||||
|
if (preg_match('/%/',$rate))
|
||||||
{
|
{
|
||||||
$rate=str_replace('%','',$rate);
|
$rate=str_replace('%','',$rate);
|
||||||
$addpercent=true;
|
$addpercent=true;
|
||||||
}
|
}
|
||||||
|
if (preg_match('/\((.*)\)/',$rate,$reg))
|
||||||
|
{
|
||||||
|
$morelabel=' ('.$reg[1].')';
|
||||||
|
$rate=preg_replace('/'.preg_quote($morelabel,'/').'/','',$rate);
|
||||||
|
}
|
||||||
if (preg_match('/\*/',$rate) || preg_match('/'.constant('MAIN_LABEL_MENTION_NPR').'/i',$rate))
|
if (preg_match('/\*/',$rate) || preg_match('/'.constant('MAIN_LABEL_MENTION_NPR').'/i',$rate))
|
||||||
{
|
{
|
||||||
$rate=str_replace('*','',$rate);
|
$rate=str_replace('*','',$rate);
|
||||||
@ -3102,6 +3108,7 @@ function vatrate($rate,$addpercent=false,$info_bits=0,$usestarfornpr=0)
|
|||||||
|
|
||||||
$ret=price($rate,0,'',0,0).($addpercent?'%':'');
|
$ret=price($rate,0,'',0,0).($addpercent?'%':'');
|
||||||
if ($info_bits & 1) $ret.=' '.($usestarfornpr?'*':constant('MAIN_LABEL_MENTION_NPR'));
|
if ($info_bits & 1) $ret.=' '.($usestarfornpr?'*':constant('MAIN_LABEL_MENTION_NPR'));
|
||||||
|
$ret.=$morelabel;
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3283,35 +3290,43 @@ function price2num($amount,$rounding='',$alreadysqlnb=0)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return localtax rate for a particular vat, when selling a product with vat $tva, from a $thirdparty_buyer to a $thirdparty_seller
|
* Return localtax rate for a particular vat, when selling a product with vat $vatrate, from a $thirdparty_buyer to a $thirdparty_seller
|
||||||
* Note: This function applies same rules than get_default_tva
|
* Note: This function applies same rules than get_default_tva
|
||||||
*
|
*
|
||||||
* @param float $tva Vat taxe
|
* @param float $vatrate Vat rate
|
||||||
* @param int $local Local tax to search and return (1 or 2 return only tax rate 1 or tax rate 2)
|
* @param int $local Local tax to search and return (1 or 2 return only tax rate 1 or tax rate 2)
|
||||||
* @param Societe $thirdparty_buyer Object of buying third party
|
* @param Societe $thirdparty_buyer Object of buying third party
|
||||||
* @param Societe $thirdparty_seller Object of selling third party
|
* @param Societe $thirdparty_seller Object of selling third party
|
||||||
* @return mixed 0 if not found, localtax if found
|
* @return mixed 0 if not found, localtax rate if found
|
||||||
* @see get_default_tva
|
* @see get_default_tva
|
||||||
*/
|
*/
|
||||||
function get_localtax($tva, $local, $thirdparty_buyer="", $thirdparty_seller="")
|
function get_localtax($vatrate, $local, $thirdparty_buyer="", $thirdparty_seller="")
|
||||||
{
|
{
|
||||||
global $db, $conf, $mysoc;
|
global $db, $conf, $mysoc;
|
||||||
|
|
||||||
if (empty($thirdparty_seller) || ! is_object($thirdparty_seller)) $thirdparty_seller=$mysoc;
|
if (empty($thirdparty_seller) || ! is_object($thirdparty_seller)) $thirdparty_seller=$mysoc;
|
||||||
|
|
||||||
dol_syslog("get_localtax tva=".$tva." local=".$local." thirdparty_buyer id=".(is_object($thirdparty_buyer)?$thirdparty_buyer->id:'')."/country_code=".(is_object($thirdparty_buyer)?$thirdparty_buyer->country_code:'')." thirdparty_seller id=".$thirdparty_seller->id."/country_code=".$thirdparty_seller->country_code." thirdparty_seller localtax1_assuj=".$thirdparty_seller->localtax1_assuj." thirdparty_seller localtax2_assuj=".$thirdparty_seller->localtax2_assuj);
|
dol_syslog("get_localtax tva=".$vatrate." local=".$local." thirdparty_buyer id=".(is_object($thirdparty_buyer)?$thirdparty_buyer->id:'')."/country_code=".(is_object($thirdparty_buyer)?$thirdparty_buyer->country_code:'')." thirdparty_seller id=".$thirdparty_seller->id."/country_code=".$thirdparty_seller->country_code." thirdparty_seller localtax1_assuj=".$thirdparty_seller->localtax1_assuj." thirdparty_seller localtax2_assuj=".$thirdparty_seller->localtax2_assuj);
|
||||||
|
|
||||||
if($thirdparty_buyer->country_code!=$thirdparty_seller->country_code)
|
$vatratecleaned = $vatrate;
|
||||||
|
if (preg_match('/^(.*)\s*\((.*)\)$/', $vatrate, $reg)) // If vat is "xx (yy)"
|
||||||
|
{
|
||||||
|
$vatratecleaned = $reg[1];
|
||||||
|
$vatratecode = $reg[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
/*if ($thirdparty_buyer->country_code != $thirdparty_seller->country_code)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
// Some test to guess with no need to make database access
|
// Some test to guess with no need to make database access
|
||||||
if ($mysoc->country_code == 'ES') // For spain localtaxes 1 and 2, tax is qualified if buyer use local taxe
|
if ($mysoc->country_code == 'ES') // For spain localtaxes 1 and 2, tax is qualified if buyer use local taxe
|
||||||
{
|
{
|
||||||
if ($local == 1)
|
if ($local == 1)
|
||||||
{
|
{
|
||||||
if(! $mysoc->localtax1_assuj) return 0;
|
if (! $mysoc->localtax1_assuj) return 0;
|
||||||
if ($thirdparty_seller->id==$mysoc->id)
|
if ($thirdparty_seller->id == $mysoc->id)
|
||||||
{
|
{
|
||||||
if (! $thirdparty_buyer->localtax1_assuj) return 0;
|
if (! $thirdparty_buyer->localtax1_assuj) return 0;
|
||||||
}
|
}
|
||||||
@ -3323,8 +3338,8 @@ function get_localtax($tva, $local, $thirdparty_buyer="", $thirdparty_seller="")
|
|||||||
|
|
||||||
if ($local == 2)
|
if ($local == 2)
|
||||||
{
|
{
|
||||||
if(! $mysoc->localtax2_assuj) return 0;
|
if (! $mysoc->localtax2_assuj) return 0;
|
||||||
if ($thirdparty_seller->id==$mysoc->id )
|
if ($thirdparty_seller->id == $mysoc->id)
|
||||||
{
|
{
|
||||||
if (! $thirdparty_buyer->localtax2_assuj) return 0;
|
if (! $thirdparty_buyer->localtax2_assuj) return 0;
|
||||||
}
|
}
|
||||||
@ -3350,63 +3365,72 @@ function get_localtax($tva, $local, $thirdparty_buyer="", $thirdparty_seller="")
|
|||||||
}*/
|
}*/
|
||||||
|
|
||||||
// Search local taxes
|
// Search local taxes
|
||||||
if ($local==1)
|
if ($mysoc->country_code == 'ES' || ! empty($conf->global->MAIN_GET_LOCALTAXES_VALUES_FROM_THIRDPARTY))
|
||||||
{
|
{
|
||||||
if($thirdparty_seller!=$mysoc )
|
if ($local==1)
|
||||||
{
|
{
|
||||||
if(!isOnlyOneLocalTax($local))
|
if ($thirdparty_seller != $mysoc)
|
||||||
{
|
{
|
||||||
return $thirdparty_seller->localtax1_value;
|
if (!isOnlyOneLocalTax($local)) // TODO We should provide $vatrate to search on correct line and not always on line with highest vat rate
|
||||||
}
|
{
|
||||||
}
|
return $thirdparty_seller->localtax1_value;
|
||||||
else
|
}
|
||||||
{
|
}
|
||||||
if(!isOnlyOneLocalTax($local))
|
else // i am the seller
|
||||||
{
|
{
|
||||||
return $conf->global->MAIN_INFO_VALUE_LOCALTAX1;
|
if (!isOnlyOneLocalTax($local)) // TODO If seller is me, why not always returning this, even if there is only one locatax vat.
|
||||||
}
|
{
|
||||||
}
|
return $conf->global->MAIN_INFO_VALUE_LOCALTAX1;
|
||||||
}
|
}
|
||||||
if ($local==2)
|
}
|
||||||
{
|
}
|
||||||
if($thirdparty_seller!=$mysoc)
|
if ($local==2)
|
||||||
{
|
{
|
||||||
if(!isOnlyOneLocalTax($local))
|
if ($thirdparty_seller != $mysoc)
|
||||||
{
|
{
|
||||||
return $thirdparty_seller->localtax2_value;
|
if (!isOnlyOneLocalTax($local)) // TODO We should provide $vatrate to search on correct line and not always on line with highest vat rate
|
||||||
}
|
// TODO We should also return value defined on thirdparty only if defined
|
||||||
}
|
{
|
||||||
else
|
return $thirdparty_seller->localtax2_value;
|
||||||
{
|
}
|
||||||
if(!isOnlyOneLocalTax($local))
|
}
|
||||||
{
|
else // i am the seller
|
||||||
return $conf->global->MAIN_INFO_VALUE_LOCALTAX2;
|
{
|
||||||
}
|
if (!isOnlyOneLocalTax($local)) // This is for spain only, we don't return value found into datbase even if there is only one locatax vat.
|
||||||
}
|
{
|
||||||
|
return $conf->global->MAIN_INFO_VALUE_LOCALTAX2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// By default, search value of local tax on line of common tax
|
||||||
$sql = "SELECT t.localtax1, t.localtax2, t.localtax1_type, t.localtax2_type";
|
$sql = "SELECT t.localtax1, t.localtax2, t.localtax1_type, t.localtax2_type";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c";
|
$sql .= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c";
|
||||||
$sql .= " WHERE t.fk_pays = c.rowid AND c.code = '".$thirdparty_seller->country_code."'";
|
$sql .= " WHERE t.fk_pays = c.rowid AND c.code = '".$thirdparty_seller->country_code."'";
|
||||||
$sql .= " AND t.taux = ".((float) $tva)." AND t.active = 1";
|
$sql .= " AND t.taux = ".((float) $vatratecleaned)." AND t.active = 1";
|
||||||
dol_syslog("get_localtax", LOG_DEBUG);
|
if ($vatratecode) $sql.= " AND t.code ='".$vatratecode."'";
|
||||||
$resql=$db->query($sql);
|
dol_syslog("get_localtax", LOG_DEBUG);
|
||||||
if ($resql)
|
$resql=$db->query($sql);
|
||||||
{
|
|
||||||
$obj = $db->fetch_object($resql);
|
|
||||||
if ($local==1) return $obj->localtax1;
|
|
||||||
elseif ($local==2) return $obj->localtax2;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if ($resql)
|
||||||
|
{
|
||||||
|
$obj = $db->fetch_object($resql);
|
||||||
|
if ($local==1) return $obj->localtax1;
|
||||||
|
elseif ($local==2) return $obj->localtax2;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return true if LocalTax is unique
|
* Return true if LocalTax (1 or 2) is unique.
|
||||||
|
* Example: If localtax1 is 5 on line with highest common vat rate, return true
|
||||||
|
* Example: If localtax1 is 5:8:15 on line with highest common vat rate, return false
|
||||||
*
|
*
|
||||||
* @param int $local Local taxt to test
|
* @param int $local Local tax to test (1 or 2)
|
||||||
* @return boolean True if LocalTax have multiple values, False if not
|
* @return boolean True if LocalTax have multiple values, False if not
|
||||||
*/
|
*/
|
||||||
function isOnlyOneLocalTax($local)
|
function isOnlyOneLocalTax($local)
|
||||||
{
|
{
|
||||||
@ -3414,7 +3438,7 @@ function isOnlyOneLocalTax($local)
|
|||||||
|
|
||||||
$valors=explode(":", $tax);
|
$valors=explode(":", $tax);
|
||||||
|
|
||||||
if(count($valors)>1)
|
if (count($valors)>1)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -3425,7 +3449,7 @@ function isOnlyOneLocalTax($local)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get values of localtaxes
|
* Get values of localtaxes (1 or 2) for company country for the common vat with the highest value
|
||||||
*
|
*
|
||||||
* @param int $local LocalTax to get
|
* @param int $local LocalTax to get
|
||||||
* @return number Values of localtax
|
* @return number Values of localtax
|
||||||
@ -3435,9 +3459,10 @@ function get_localtax_by_third($local)
|
|||||||
global $db, $mysoc;
|
global $db, $mysoc;
|
||||||
$sql ="SELECT t.localtax1, t.localtax2 ";
|
$sql ="SELECT t.localtax1, t.localtax2 ";
|
||||||
$sql.=" FROM ".MAIN_DB_PREFIX."c_tva as t inner join ".MAIN_DB_PREFIX."c_country as c ON c.rowid=t.fk_pays";
|
$sql.=" FROM ".MAIN_DB_PREFIX."c_tva as t inner join ".MAIN_DB_PREFIX."c_country as c ON c.rowid=t.fk_pays";
|
||||||
$sql.=" WHERE c.code = '".$mysoc->country_code."' AND t.taux=(SELECT max(tt.taux)";
|
$sql.=" WHERE c.code = '".$mysoc->country_code."' AND t.active = 1 AND t.taux=(";
|
||||||
$sql.=" FROM ".MAIN_DB_PREFIX."c_tva as tt inner join ".MAIN_DB_PREFIX."c_country as c ON c.rowid=tt.fk_pays";
|
$sql.=" SELECT max(tt.taux) FROM ".MAIN_DB_PREFIX."c_tva as tt inner join ".MAIN_DB_PREFIX."c_country as c ON c.rowid=tt.fk_pays";
|
||||||
$sql.=" WHERE c.code = '".$mysoc->country_code."')";
|
$sql.=" WHERE c.code = '".$mysoc->country_code."' AND tt.active = 1";
|
||||||
|
$sql.=" )";
|
||||||
|
|
||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
@ -3456,7 +3481,7 @@ function get_localtax_by_third($local)
|
|||||||
* Get type and rate of localtaxes for a particular vat rate/country fo thirdparty
|
* Get type and rate of localtaxes for a particular vat rate/country fo thirdparty
|
||||||
* TODO
|
* TODO
|
||||||
* This function is also called to retrieve type for building PDF. Such call of function must be removed.
|
* This function is also called to retrieve type for building PDF. Such call of function must be removed.
|
||||||
* Instead this function must be called when adding a line to get (array of localtax and type) and
|
* Instead this function must be called when adding a line to get the array of localtax and type, and then
|
||||||
* provide it to the function calcul_price_total.
|
* provide it to the function calcul_price_total.
|
||||||
*
|
*
|
||||||
* @param float $vatrate VAT Rate
|
* @param float $vatrate VAT Rate
|
||||||
@ -3467,15 +3492,24 @@ function get_localtax_by_third($local)
|
|||||||
*/
|
*/
|
||||||
function getLocalTaxesFromRate($vatrate, $local, $buyer, $seller)
|
function getLocalTaxesFromRate($vatrate, $local, $buyer, $seller)
|
||||||
{
|
{
|
||||||
global $db;
|
global $db, $mysoc;
|
||||||
|
|
||||||
dol_syslog("getLocalTaxesFromRate vatrate=".$vatrate." local=".$local);
|
dol_syslog("getLocalTaxesFromRate vatrate=".$vatrate." local=".$local);
|
||||||
|
|
||||||
|
$vatratecleaned = $vatrate;
|
||||||
|
if (preg_match('/^(.*)\s*\((.*)\)$/', $vatrate, $reg)) // If vat is "xx (yy)"
|
||||||
|
{
|
||||||
|
$vatratecleaned = $reg[1];
|
||||||
|
$vatratecode = $reg[2];
|
||||||
|
}
|
||||||
|
|
||||||
// Search local taxes
|
// Search local taxes
|
||||||
$sql = "SELECT t.localtax1, t.localtax1_type, t.localtax2, t.localtax2_type, t.accountancy_code_sell, t.accountancy_code_buy";
|
$sql = "SELECT t.localtax1, t.localtax1_type, t.localtax2, t.localtax2_type, t.accountancy_code_sell, t.accountancy_code_buy";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c";
|
$sql .= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c";
|
||||||
$sql .= " WHERE t.fk_pays = c.rowid AND c.code = '".$buyer->country_code."'";
|
if ($mysoc->country_code == 'ES') $sql .= " WHERE t.fk_pays = c.rowid AND c.code = '".$buyer->country_code."'";
|
||||||
$sql .= " AND t.taux = ".((float) $vatrate)." AND t.active = 1";
|
else $sql .= " WHERE t.fk_pays = c.rowid AND c.code = '".$seller->country_code."'";
|
||||||
|
$sql .= " AND t.taux = ".((float) $vatratecleaned)." AND t.active = 1";
|
||||||
|
if ($vatratecode) $sql.= " AND t.code ='".$vatratecode."'";
|
||||||
|
|
||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
@ -5057,8 +5091,9 @@ function printCommonFooter($zone='private')
|
|||||||
print '<!-- Set handler to add page_y param on some a href links -->'."\n";
|
print '<!-- Set handler to add page_y param on some a href links -->'."\n";
|
||||||
print 'jQuery(".reposition").click(function() {
|
print 'jQuery(".reposition").click(function() {
|
||||||
var page_y = $(document).scrollTop();
|
var page_y = $(document).scrollTop();
|
||||||
|
/* alert(page_y); */
|
||||||
this.href=this.href+\'&page_y=\'+page_y;
|
this.href=this.href+\'&page_y=\'+page_y;
|
||||||
});';
|
});'."\n";
|
||||||
print '});'."\n";
|
print '});'."\n";
|
||||||
|
|
||||||
print '</script>'."\n";
|
print '</script>'."\n";
|
||||||
@ -5290,7 +5325,7 @@ function natural_search($fields, $value, $mode=0, $nofirstand=0)
|
|||||||
*
|
*
|
||||||
* @param string $file Original filename (full or relative path)
|
* @param string $file Original filename (full or relative path)
|
||||||
* @param string $extName Extension to differenciate thumb file name ('', '_small', '_mini')
|
* @param string $extName Extension to differenciate thumb file name ('', '_small', '_mini')
|
||||||
* @param string $extImgTarget Force image extension for thumbs. Use '' to keep same extension than original image.
|
* @param string $extImgTarget Force image extension for thumbs. Use '' to keep same extension than original image. Use '.png' for generated thumb files.
|
||||||
* @return string New file name (full or relative path, including the thumbs/)
|
* @return string New file name (full or relative path, including the thumbs/)
|
||||||
*/
|
*/
|
||||||
function getImageFileNameForSize($file, $extName, $extImgTarget='')
|
function getImageFileNameForSize($file, $extName, $extImgTarget='')
|
||||||
|
|||||||
@ -1608,8 +1608,8 @@ function dolGetElementUrl($objectid,$objecttype,$withpicto=0,$option='')
|
|||||||
if ($objecttype == 'propal') {
|
if ($objecttype == 'propal') {
|
||||||
$classpath = 'comm/propal/class';
|
$classpath = 'comm/propal/class';
|
||||||
}
|
}
|
||||||
if ($objecttype == 'askpricesupplier') {
|
if ($objecttype == 'supplier_proposal') {
|
||||||
$classpath = 'comm/askpricesupplier/class';
|
$classpath = 'supplier_proposal/class';
|
||||||
}
|
}
|
||||||
if ($objecttype == 'shipping') {
|
if ($objecttype == 'shipping') {
|
||||||
$classpath = 'expedition/class';
|
$classpath = 'expedition/class';
|
||||||
@ -1842,8 +1842,8 @@ function getElementProperties($element_type)
|
|||||||
if ($element_type == 'propal') {
|
if ($element_type == 'propal') {
|
||||||
$classpath = 'comm/propal/class';
|
$classpath = 'comm/propal/class';
|
||||||
}
|
}
|
||||||
if ($element_type == 'askpricesupplier') {
|
if ($element_type == 'supplier_proposal') {
|
||||||
$classpath = 'comm/askpricesupplier/class';
|
$classpath = 'supplier_proposal/class';
|
||||||
}
|
}
|
||||||
if ($element_type == 'shipping') {
|
if ($element_type == 'shipping') {
|
||||||
$classpath = 'expedition/class';
|
$classpath = 'expedition/class';
|
||||||
|
|||||||
@ -173,7 +173,7 @@ function pdf_getInstance($format='',$metric='mm',$pagetype='P')
|
|||||||
* This class is an enhanced FPDI class that support method writeHTMLCell
|
* This class is an enhanced FPDI class that support method writeHTMLCell
|
||||||
*/
|
*/
|
||||||
class FPDI_DolExtended extends FPDI
|
class FPDI_DolExtended extends FPDI
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* __call
|
* __call
|
||||||
*
|
*
|
||||||
@ -726,7 +726,8 @@ function pdf_bank(&$pdf,$outputlangs,$curx,$cury,$account,$onlynumber=0,$default
|
|||||||
$ibanDisplay_temp = str_replace(' ', '', $outputlangs->convToOutputCharset($account->iban));
|
$ibanDisplay_temp = str_replace(' ', '', $outputlangs->convToOutputCharset($account->iban));
|
||||||
$ibanDisplay = "";
|
$ibanDisplay = "";
|
||||||
|
|
||||||
for($i = 0; $i < dol_strlen($ibanDisplay_temp); $i++)
|
$nbIbanDisplay_temp = dol_strlen($ibanDisplay_temp);
|
||||||
|
for ($i = 0; $i < $nbIbanDisplay_temp; $i++)
|
||||||
{
|
{
|
||||||
$ibanDisplay .= $ibanDisplay_temp[$i];
|
$ibanDisplay .= $ibanDisplay_temp[$i];
|
||||||
if($i%4 == 3 && $i > 0) $ibanDisplay .= " ";
|
if($i%4 == 3 && $i > 0) $ibanDisplay .= " ";
|
||||||
|
|||||||
@ -148,8 +148,10 @@ function dol_loginfunction($langs,$conf,$mysoc)
|
|||||||
if (! preg_match('/mainmenu=/',$php_self)) $php_self.=(preg_match('/\?/',$php_self)?'&':'?').'mainmenu=home';
|
if (! preg_match('/mainmenu=/',$php_self)) $php_self.=(preg_match('/\?/',$php_self)?'&':'?').'mainmenu=home';
|
||||||
|
|
||||||
// Title
|
// Title
|
||||||
$title='Dolibarr '.DOL_VERSION;
|
$appli=constant('DOL_APPLICATION_TITLE');
|
||||||
|
$title=$appli.' '.DOL_VERSION;
|
||||||
if (! empty($conf->global->MAIN_APPLICATION_TITLE)) $title=$conf->global->MAIN_APPLICATION_TITLE;
|
if (! empty($conf->global->MAIN_APPLICATION_TITLE)) $title=$conf->global->MAIN_APPLICATION_TITLE;
|
||||||
|
$titletruedolibarrversion=DOL_VERSION; // $title used by login template after the @ to inform of true Dolibarr version
|
||||||
|
|
||||||
// Note: $conf->css looks like '/theme/eldy/style.css.php'
|
// Note: $conf->css looks like '/theme/eldy/style.css.php'
|
||||||
$conf->css = "/theme/".(GETPOST('theme')?GETPOST('theme','alpha'):$conf->theme)."/style.css.php";
|
$conf->css = "/theme/".(GETPOST('theme')?GETPOST('theme','alpha'):$conf->theme)."/style.css.php";
|
||||||
|
|||||||
@ -29,17 +29,17 @@
|
|||||||
* @param object $object Object related to tabs
|
* @param object $object Object related to tabs
|
||||||
* @return array Array of tabs to show
|
* @return array Array of tabs to show
|
||||||
*/
|
*/
|
||||||
function askpricesupplier_prepare_head($object)
|
function supplier_proposal_prepare_head($object)
|
||||||
{
|
{
|
||||||
global $langs, $conf, $user;
|
global $langs, $conf, $user;
|
||||||
$langs->load("askpricesupplier");
|
$langs->load("supplier_proposal");
|
||||||
$langs->load("compta");
|
$langs->load("compta");
|
||||||
|
|
||||||
$h = 0;
|
$h = 0;
|
||||||
$head = array();
|
$head = array();
|
||||||
|
|
||||||
$head[$h][0] = DOL_URL_ROOT.'/comm/askpricesupplier/card.php?id='.$object->id;
|
$head[$h][0] = DOL_URL_ROOT.'/supplier_proposal/card.php?id='.$object->id;
|
||||||
$head[$h][1] = $langs->trans('AskPriceSupplierCard');
|
$head[$h][1] = $langs->trans('SupplierProposalCard');
|
||||||
$head[$h][2] = 'comm';
|
$head[$h][2] = 'comm';
|
||||||
$h++;
|
$h++;
|
||||||
|
|
||||||
@ -48,14 +48,14 @@ function askpricesupplier_prepare_head($object)
|
|||||||
// Entries must be declared in modules descriptor with line
|
// Entries must be declared in modules descriptor with line
|
||||||
// $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
|
// $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
|
||||||
// $this->tabs = array('entity:-tabname); to remove a tab
|
// $this->tabs = array('entity:-tabname); to remove a tab
|
||||||
complete_head_from_modules($conf,$langs,$object,$head,$h,'askpricesupplier');
|
complete_head_from_modules($conf,$langs,$object,$head,$h,'supplier_proposal');
|
||||||
|
|
||||||
if (empty($conf->global->MAIN_DISABLE_NOTES_TAB))
|
if (empty($conf->global->MAIN_DISABLE_NOTES_TAB))
|
||||||
{
|
{
|
||||||
$nbNote = 0;
|
$nbNote = 0;
|
||||||
if(!empty($object->note_private)) $nbNote++;
|
if(!empty($object->note_private)) $nbNote++;
|
||||||
if(!empty($object->note_public)) $nbNote++;
|
if(!empty($object->note_public)) $nbNote++;
|
||||||
$head[$h][0] = DOL_URL_ROOT.'/comm/askpricesupplier/note.php?id='.$object->id;
|
$head[$h][0] = DOL_URL_ROOT.'/supplier_proposal/note.php?id='.$object->id;
|
||||||
$head[$h][1] = $langs->trans('Notes');
|
$head[$h][1] = $langs->trans('Notes');
|
||||||
if ($nbNote > 0) $head[$h][1].= ' <span class="badge">'.$nbNote.'</span>';
|
if ($nbNote > 0) $head[$h][1].= ' <span class="badge">'.$nbNote.'</span>';
|
||||||
$head[$h][2] = 'note';
|
$head[$h][2] = 'note';
|
||||||
@ -63,20 +63,20 @@ function askpricesupplier_prepare_head($object)
|
|||||||
}
|
}
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||||
$upload_dir = $conf->askpricesupplier->dir_output . "/" . dol_sanitizeFileName($object->ref);
|
$upload_dir = $conf->supplier_proposal->dir_output . "/" . dol_sanitizeFileName($object->ref);
|
||||||
$nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$'));
|
$nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$'));
|
||||||
$head[$h][0] = DOL_URL_ROOT.'/comm/askpricesupplier/document.php?id='.$object->id;
|
$head[$h][0] = DOL_URL_ROOT.'/supplier_proposal/document.php?id='.$object->id;
|
||||||
$head[$h][1] = $langs->trans('Documents');
|
$head[$h][1] = $langs->trans('Documents');
|
||||||
if($nbFiles > 0) $head[$h][1].= ' <span class="badge">'.$nbFiles.'</span>';
|
if($nbFiles > 0) $head[$h][1].= ' <span class="badge">'.$nbFiles.'</span>';
|
||||||
$head[$h][2] = 'document';
|
$head[$h][2] = 'document';
|
||||||
$h++;
|
$h++;
|
||||||
|
|
||||||
$head[$h][0] = DOL_URL_ROOT.'/comm/askpricesupplier/info.php?id='.$object->id;
|
$head[$h][0] = DOL_URL_ROOT.'/supplier_proposal/info.php?id='.$object->id;
|
||||||
$head[$h][1] = $langs->trans('Info');
|
$head[$h][1] = $langs->trans('Info');
|
||||||
$head[$h][2] = 'info';
|
$head[$h][2] = 'info';
|
||||||
$h++;
|
$h++;
|
||||||
|
|
||||||
complete_head_from_modules($conf,$langs,$object,$head,$h,'askpricesupplier','remove');
|
complete_head_from_modules($conf,$langs,$object,$head,$h,'supplier_proposal','remove');
|
||||||
|
|
||||||
return $head;
|
return $head;
|
||||||
}
|
}
|
||||||
@ -86,14 +86,14 @@ function askpricesupplier_prepare_head($object)
|
|||||||
*
|
*
|
||||||
* @return array head array with tabs
|
* @return array head array with tabs
|
||||||
*/
|
*/
|
||||||
function askpricesupplier_admin_prepare_head()
|
function supplier_proposal_admin_prepare_head()
|
||||||
{
|
{
|
||||||
global $langs, $conf, $user;
|
global $langs, $conf, $user;
|
||||||
|
|
||||||
$h = 0;
|
$h = 0;
|
||||||
$head = array();
|
$head = array();
|
||||||
|
|
||||||
$head[$h][0] = DOL_URL_ROOT.'/admin/askpricesupplier.php';
|
$head[$h][0] = DOL_URL_ROOT.'/admin/supplier_proposal.php';
|
||||||
$head[$h][1] = $langs->trans("Miscellaneous");
|
$head[$h][1] = $langs->trans("Miscellaneous");
|
||||||
$head[$h][2] = 'general';
|
$head[$h][2] = 'general';
|
||||||
$h++;
|
$h++;
|
||||||
@ -102,19 +102,19 @@ function askpricesupplier_admin_prepare_head()
|
|||||||
// Entries must be declared in modules descriptor with line
|
// Entries must be declared in modules descriptor with line
|
||||||
// $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
|
// $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
|
||||||
// $this->tabs = array('entity:-tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to remove a tab
|
// $this->tabs = array('entity:-tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to remove a tab
|
||||||
complete_head_from_modules($conf,$langs,null,$head,$h,'askpricesupplier_admin');
|
complete_head_from_modules($conf,$langs,null,$head,$h,'supplier_proposal_admin');
|
||||||
|
|
||||||
$head[$h][0] = DOL_URL_ROOT.'/comm/admin/askpricesupplier_extrafields.php';
|
$head[$h][0] = DOL_URL_ROOT.'/supplier_proposal/admin/supplier_proposal_extrafields.php';
|
||||||
$head[$h][1] = $langs->trans("ExtraFields");
|
$head[$h][1] = $langs->trans("ExtraFields");
|
||||||
$head[$h][2] = 'attributes';
|
$head[$h][2] = 'attributes';
|
||||||
$h++;
|
$h++;
|
||||||
|
|
||||||
$head[$h][0] = DOL_URL_ROOT.'/comm/admin/askpricesupplierdet_extrafields.php';
|
$head[$h][0] = DOL_URL_ROOT.'/supplier_proposal/admin/supplier_proposaldet_extrafields.php';
|
||||||
$head[$h][1] = $langs->trans("ExtraFieldsLines");
|
$head[$h][1] = $langs->trans("ExtraFieldsLines");
|
||||||
$head[$h][2] = 'attributeslines';
|
$head[$h][2] = 'attributeslines';
|
||||||
$h++;
|
$h++;
|
||||||
|
|
||||||
complete_head_from_modules($conf,$langs,null,$head,$h,'askpricesupplier_admin','remove');
|
complete_head_from_modules($conf,$langs,null,$head,$h,'supplier_proposal_admin','remove');
|
||||||
|
|
||||||
return $head;
|
return $head;
|
||||||
}
|
}
|
||||||
@ -382,46 +382,51 @@ function show_theme($fuser,$edit=0,$foruserprofile=false)
|
|||||||
|
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Use Hover
|
// BackgroundColor
|
||||||
$var=!$var;
|
|
||||||
if ($foruserprofile)
|
if ($foruserprofile)
|
||||||
{
|
{
|
||||||
/* Must first change option to choose color of highlight insteado of yes or no.
|
/*$var=!$var;
|
||||||
print '<tr '.$bc[$var].'>';
|
print '<tr '.$bc[$var].'>';
|
||||||
print '<td>'.$langs->trans("HighlightLinesOnMouseHover").'</td>';
|
print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>';
|
||||||
print '<td><input '.$bc[$var].' name="check_THEME_ELDY_USE_HOVER" disabled="disabled" type="checkbox" '.($conf->global->THEME_ELDY_USE_HOVER?" checked":"").'></td>';
|
print '<td>'.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_TOPMENU_BACK1:$langs->trans("Default")).'</td>';
|
||||||
print '<td align="left" class="nowrap" width="20%"><input '.$bc[$var].' name="check_MAIN_THEME"'.($edit?'':' disabled').' type="checkbox" '.($selected_theme?" checked":"").'> '.$langs->trans("UsePersonalValue").'</td>';
|
print '<td align="left" class="nowrap" width="20%"><input '.$bc[$var].' name="check_THEME_ELDY_TOPMENU_BACK1" id="check_THEME_ELDY_TOPMENU_BACK1" type="checkbox" '.(! empty($object->conf->THEME_ELDY_TOPMENU_BACK1)?" checked":"");
|
||||||
print '<td><input '.$bc[$var].' name="check_THEME_ELDY_USE_HOVER"'.($edit?'':' disabled="disabled"').' type="checkbox" '.($hoverdisabled?"":" checked").'>';
|
print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo
|
||||||
print ' ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
|
print '> '.$langs->trans("UsePersonalValue").'</td>';
|
||||||
print '</td>';
|
print '<td>';
|
||||||
print '</tr>';
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
print '<tr '.$bc[$var].'>';
|
|
||||||
print '<td>'.$langs->trans("HighlightLinesColor").'</td>';
|
|
||||||
print '<td colspan="'.($colspan-1).'">';
|
|
||||||
//print '<input '.$bc[$var].' name="check_THEME_ELDY_USE_HOVER"'.($edit?'':' disabled').' type="checkbox" '.($hoverdisabled?"":" checked").'>';
|
|
||||||
//print ' ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
|
|
||||||
if ($edit)
|
if ($edit)
|
||||||
{
|
{
|
||||||
if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color='edf4fb';
|
print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),''),'THEME_ELDY_TOPMENU_BACK1','formcolor',1).' ';
|
||||||
else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER,array()),'');
|
|
||||||
print $formother->selectColor($color,'THEME_ELDY_USE_HOVER','formcolor',1).' ';
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color='edf4fb';
|
$color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),'');
|
||||||
else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER,array()),'');
|
if ($color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; width: 40px; background-color: #'.$color.'" value="'.$color.'">';
|
||||||
if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; width: 40px; background-color: #'.$color.'" value="'.$color.'">';
|
else print '';
|
||||||
else print $langs->trans("None");
|
|
||||||
}
|
}
|
||||||
print ' ('.$langs->trans("Default").': <strong>edf4fb</strong>, '.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
|
if ($edit) print '<br>('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
|
||||||
print '</td>';
|
print '</td>';*/
|
||||||
print '</tr>';
|
}
|
||||||
}
|
else
|
||||||
|
{
|
||||||
|
$var=!$var;
|
||||||
|
print '<tr '.$bc[$var].'>';
|
||||||
|
print '<td>'.$langs->trans("BackgroundColor").'</td>';
|
||||||
|
print '<td colspan="'.($colspan-1).'">';
|
||||||
|
//var_dump($conf->global->THEME_ELDY_BACKBODY);
|
||||||
|
if ($edit)
|
||||||
|
{
|
||||||
|
print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_BACKBODY,array()),''),'THEME_ELDY_BACKBODY','formcolor',1).' ';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_BACKBODY,array()),'');
|
||||||
|
if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; width: 40px; background-color: #'.$color.'" value="'.$color.'">';
|
||||||
|
else print $langs->trans("Default");
|
||||||
|
}
|
||||||
|
print ' ('.$langs->trans("Default").': <strong>ffffff</strong>, '.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
|
||||||
// TopMenuBackgroundColor
|
// TopMenuBackgroundColor
|
||||||
if ($foruserprofile)
|
if ($foruserprofile)
|
||||||
{
|
{
|
||||||
@ -492,6 +497,90 @@ function show_theme($fuser,$edit=0,$foruserprofile=false)
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Use Hover
|
||||||
|
$var=!$var;
|
||||||
|
if ($foruserprofile)
|
||||||
|
{
|
||||||
|
/* Must first change option to choose color of highlight instead of yes or no.
|
||||||
|
print '<tr '.$bc[$var].'>';
|
||||||
|
print '<td>'.$langs->trans("HighlightLinesOnMouseHover").'</td>';
|
||||||
|
print '<td><input '.$bc[$var].' name="check_THEME_ELDY_USE_HOVER" disabled="disabled" type="checkbox" '.($conf->global->THEME_ELDY_USE_HOVER?" checked":"").'></td>';
|
||||||
|
print '<td align="left" class="nowrap" width="20%"><input '.$bc[$var].' name="check_MAIN_THEME"'.($edit?'':' disabled').' type="checkbox" '.($selected_theme?" checked":"").'> '.$langs->trans("UsePersonalValue").'</td>';
|
||||||
|
print '<td><input '.$bc[$var].' name="check_THEME_ELDY_USE_HOVER"'.($edit?'':' disabled="disabled"').' type="checkbox" '.($hoverdisabled?"":" checked").'>';
|
||||||
|
print ' ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print '<tr '.$bc[$var].'>';
|
||||||
|
print '<td>'.$langs->trans("HighlightLinesColor").'</td>';
|
||||||
|
print '<td colspan="'.($colspan-1).'">';
|
||||||
|
//print '<input '.$bc[$var].' name="check_THEME_ELDY_USE_HOVER"'.($edit?'':' disabled').' type="checkbox" '.($hoverdisabled?"":" checked").'>';
|
||||||
|
//print ' ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
|
||||||
|
if ($edit)
|
||||||
|
{
|
||||||
|
if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color='edf4fb';
|
||||||
|
else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER,array()),'');
|
||||||
|
print $formother->selectColor($color,'THEME_ELDY_USE_HOVER','formcolor',1).' ';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color='edf4fb';
|
||||||
|
else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER,array()),'');
|
||||||
|
if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; width: 40px; background-color: #'.$color.'" value="'.$color.'">';
|
||||||
|
else print $langs->trans("None");
|
||||||
|
}
|
||||||
|
print ' ('.$langs->trans("Default").': <strong>edf4fb</strong>, '.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// TopMenuBackgroundColor
|
||||||
|
if ($foruserprofile)
|
||||||
|
{
|
||||||
|
/*$var=!$var;
|
||||||
|
print '<tr '.$bc[$var].'>';
|
||||||
|
print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>';
|
||||||
|
print '<td>'.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_TOPMENU_BACK1:$langs->trans("Default")).'</td>';
|
||||||
|
print '<td align="left" class="nowrap" width="20%"><input '.$bc[$var].' name="check_THEME_ELDY_TOPMENU_BACK1" id="check_THEME_ELDY_TOPMENU_BACK1" type="checkbox" '.(! empty($object->conf->THEME_ELDY_TOPMENU_BACK1)?" checked":"");
|
||||||
|
print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo
|
||||||
|
print '> '.$langs->trans("UsePersonalValue").'</td>';
|
||||||
|
print '<td>';
|
||||||
|
if ($edit)
|
||||||
|
{
|
||||||
|
print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),''),'THEME_ELDY_TOPMENU_BACK1','formcolor',1).' ';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),'');
|
||||||
|
if ($color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; width: 40px; background-color: #'.$color.'" value="'.$color.'">';
|
||||||
|
else print '';
|
||||||
|
}
|
||||||
|
if ($edit) print '<br>('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
|
||||||
|
print '</td>';*/
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$var=!$var;
|
||||||
|
print '<tr '.$bc[$var].'>';
|
||||||
|
print '<td>'.$langs->trans("LinkColor").'</td>';
|
||||||
|
print '<td colspan="'.($colspan-1).'">';
|
||||||
|
if ($edit)
|
||||||
|
{
|
||||||
|
print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTLINK,array()),''),'THEME_ELDY_TEXTLINK','formcolor',1).' ';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTLINK,array()),'');
|
||||||
|
if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; width: 40px; background-color: #'.$color.'" value="'.$color.'">';
|
||||||
|
else print $langs->trans("Default");
|
||||||
|
}
|
||||||
|
print ' ('.$langs->trans("Default").': <strong>000078</strong>, '.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -138,7 +138,7 @@ function check_user_password_ldap($usertotest,$passwordtotest,$entitytotest)
|
|||||||
$ldap->searchUser=$ldapuserattr."=".$usertotest.",".$ldapdn; // Default dn (will work if LDAP accept a dn with login value inside)
|
$ldap->searchUser=$ldapuserattr."=".$usertotest.",".$ldapdn; // Default dn (will work if LDAP accept a dn with login value inside)
|
||||||
// But if LDAP need a dn with name like "cn=Jhon Bloggs,ou=People,dc=foo,dc=com", previous part must have been executed to have
|
// But if LDAP need a dn with name like "cn=Jhon Bloggs,ou=People,dc=foo,dc=com", previous part must have been executed to have
|
||||||
// dn detected into ldapUserDN.
|
// dn detected into ldapUserDN.
|
||||||
if ($resultFetchLdapUser) $ldap->searchUser = $ldap->ldapUserDN;
|
if ($resultFetchLdapUser AND !empty($ldap->ldapUserDN)) $ldap->searchUser = $ldap->ldapUserDN;
|
||||||
$ldap->searchPassword=$passwordtotest;
|
$ldap->searchPassword=$passwordtotest;
|
||||||
|
|
||||||
// Test with this->seachUser and this->searchPassword
|
// Test with this->seachUser and this->searchPassword
|
||||||
|
|||||||
@ -444,7 +444,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
|
|||||||
print '<div class="menu_titre" id="menu_titre_logo"></div>';
|
print '<div class="menu_titre" id="menu_titre_logo"></div>';
|
||||||
print '<div class="menu_top" id="menu_top_logo"></div>';
|
print '<div class="menu_top" id="menu_top_logo"></div>';
|
||||||
print '<div class="menu_contenu" id="menu_contenu_logo">';
|
print '<div class="menu_contenu" id="menu_contenu_logo">';
|
||||||
print '<div class="center"><img title="'.dol_escape_htmltag($title).'" alt="" src="'.$urllogo.'" style="max-width: 80%"></div>'."\n";
|
print '<div class="center"><img class="companylogo" title="'.dol_escape_htmltag($title).'" alt="" src="'.$urllogo.'" style="max-width: 80%"></div>'."\n";
|
||||||
print '</div>';
|
print '</div>';
|
||||||
print '<div class="menu_end" id="menu_end_logo"></div>';
|
print '<div class="menu_end" id="menu_end_logo"></div>';
|
||||||
print '</div>'."\n";
|
print '</div>'."\n";
|
||||||
@ -672,11 +672,11 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
|
|||||||
{
|
{
|
||||||
$langs->load("companies");
|
$langs->load("companies");
|
||||||
|
|
||||||
// Propal
|
// Customer proposal
|
||||||
if (! empty($conf->propal->enabled))
|
if (! empty($conf->propal->enabled))
|
||||||
{
|
{
|
||||||
$langs->load("propal");
|
$langs->load("propal");
|
||||||
$newmenu->add("/comm/propal/index.php?leftmenu=propals", $langs->trans("Prop"), 0, $user->rights->propale->lire, '', $mainmenu, 'propals');
|
$newmenu->add("/comm/propal/index.php?leftmenu=propals", $langs->trans("Prop"), 0, $user->rights->propale->lire, '', $mainmenu, 'propals', 100);
|
||||||
$newmenu->add("/comm/propal.php?action=create&leftmenu=propals", $langs->trans("NewPropal"), 1, $user->rights->propale->creer);
|
$newmenu->add("/comm/propal.php?action=create&leftmenu=propals", $langs->trans("NewPropal"), 1, $user->rights->propale->creer);
|
||||||
$newmenu->add("/comm/propal/list.php?leftmenu=propals", $langs->trans("List"), 1, $user->rights->propale->lire);
|
$newmenu->add("/comm/propal/list.php?leftmenu=propals", $langs->trans("List"), 1, $user->rights->propale->lire);
|
||||||
if (empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=0", $langs->trans("PropalsDraft"), 2, $user->rights->propale->lire);
|
if (empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=0", $langs->trans("PropalsDraft"), 2, $user->rights->propale->lire);
|
||||||
@ -692,7 +692,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
|
|||||||
if (! empty($conf->commande->enabled))
|
if (! empty($conf->commande->enabled))
|
||||||
{
|
{
|
||||||
$langs->load("orders");
|
$langs->load("orders");
|
||||||
$newmenu->add("/commande/index.php?leftmenu=orders", $langs->trans("CustomersOrders"), 0, $user->rights->commande->lire, '', $mainmenu, 'orders');
|
$newmenu->add("/commande/index.php?leftmenu=orders", $langs->trans("CustomersOrders"), 0, $user->rights->commande->lire, '', $mainmenu, 'orders', 200);
|
||||||
$newmenu->add("/commande/card.php?action=create&leftmenu=orders", $langs->trans("NewOrder"), 1, $user->rights->commande->creer);
|
$newmenu->add("/commande/card.php?action=create&leftmenu=orders", $langs->trans("NewOrder"), 1, $user->rights->commande->creer);
|
||||||
$newmenu->add("/commande/list.php?leftmenu=orders", $langs->trans("List"), 1, $user->rights->commande->lire);
|
$newmenu->add("/commande/list.php?leftmenu=orders", $langs->trans("List"), 1, $user->rights->commande->lire);
|
||||||
if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=0", $langs->trans("StatusOrderDraftShort"), 2, $user->rights->commande->lire);
|
if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=0", $langs->trans("StatusOrderDraftShort"), 2, $user->rights->commande->lire);
|
||||||
@ -708,7 +708,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
|
|||||||
if (! empty($conf->fournisseur->enabled))
|
if (! empty($conf->fournisseur->enabled))
|
||||||
{
|
{
|
||||||
$langs->load("orders");
|
$langs->load("orders");
|
||||||
$newmenu->add("/fourn/commande/index.php?leftmenu=orders_suppliers",$langs->trans("SuppliersOrders"), 0, $user->rights->fournisseur->commande->lire, '', $mainmenu, 'orders_suppliers');
|
$newmenu->add("/fourn/commande/index.php?leftmenu=orders_suppliers",$langs->trans("SuppliersOrders"), 0, $user->rights->fournisseur->commande->lire, '', $mainmenu, 'orders_suppliers', 400);
|
||||||
$newmenu->add("/fourn/commande/card.php?action=create&leftmenu=orders_suppliers", $langs->trans("NewOrder"), 1, $user->rights->fournisseur->commande->creer);
|
$newmenu->add("/fourn/commande/card.php?action=create&leftmenu=orders_suppliers", $langs->trans("NewOrder"), 1, $user->rights->fournisseur->commande->creer);
|
||||||
$newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers", $langs->trans("List"), 1, $user->rights->fournisseur->commande->lire);
|
$newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers", $langs->trans("List"), 1, $user->rights->fournisseur->commande->lire);
|
||||||
|
|
||||||
@ -729,7 +729,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
|
|||||||
if (! empty($conf->contrat->enabled))
|
if (! empty($conf->contrat->enabled))
|
||||||
{
|
{
|
||||||
$langs->load("contracts");
|
$langs->load("contracts");
|
||||||
$newmenu->add("/contrat/index.php?leftmenu=contracts", $langs->trans("Contracts"), 0, $user->rights->contrat->lire, '', $mainmenu, 'contracts');
|
$newmenu->add("/contrat/index.php?leftmenu=contracts", $langs->trans("Contracts"), 0, $user->rights->contrat->lire, '', $mainmenu, 'contracts', 2000);
|
||||||
$newmenu->add("/contrat/card.php?action=create&leftmenu=contracts", $langs->trans("NewContract"), 1, $user->rights->contrat->creer);
|
$newmenu->add("/contrat/card.php?action=create&leftmenu=contracts", $langs->trans("NewContract"), 1, $user->rights->contrat->creer);
|
||||||
$newmenu->add("/contrat/list.php?leftmenu=contracts", $langs->trans("List"), 1, $user->rights->contrat->lire);
|
$newmenu->add("/contrat/list.php?leftmenu=contracts", $langs->trans("List"), 1, $user->rights->contrat->lire);
|
||||||
$newmenu->add("/contrat/services.php?leftmenu=contracts", $langs->trans("MenuServices"), 1, $user->rights->contrat->lire);
|
$newmenu->add("/contrat/services.php?leftmenu=contracts", $langs->trans("MenuServices"), 1, $user->rights->contrat->lire);
|
||||||
@ -743,7 +743,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
|
|||||||
if (! empty($conf->ficheinter->enabled))
|
if (! empty($conf->ficheinter->enabled))
|
||||||
{
|
{
|
||||||
$langs->load("interventions");
|
$langs->load("interventions");
|
||||||
$newmenu->add("/fichinter/index.php?leftmenu=ficheinter", $langs->trans("Interventions"), 0, $user->rights->ficheinter->lire, '', $mainmenu, 'ficheinter', 200);
|
$newmenu->add("/fichinter/index.php?leftmenu=ficheinter", $langs->trans("Interventions"), 0, $user->rights->ficheinter->lire, '', $mainmenu, 'ficheinter', 2200);
|
||||||
$newmenu->add("/fichinter/card.php?action=create&leftmenu=ficheinter", $langs->trans("NewIntervention"), 1, $user->rights->ficheinter->creer, '', '', '', 201);
|
$newmenu->add("/fichinter/card.php?action=create&leftmenu=ficheinter", $langs->trans("NewIntervention"), 1, $user->rights->ficheinter->creer, '', '', '', 201);
|
||||||
$newmenu->add("/fichinter/list.php?leftmenu=ficheinter", $langs->trans("List"), 1, $user->rights->ficheinter->lire, '', '', '', 202);
|
$newmenu->add("/fichinter/list.php?leftmenu=ficheinter", $langs->trans("List"), 1, $user->rights->ficheinter->lire, '', '', '', 202);
|
||||||
}
|
}
|
||||||
@ -1400,6 +1400,17 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
|
|||||||
//var_dump($menu_array);exit;
|
//var_dump($menu_array);exit;
|
||||||
if (! is_array($menu_array)) return 0;
|
if (! is_array($menu_array)) return 0;
|
||||||
|
|
||||||
|
// TODO Use the position property in menu_array to reorder the $menu_array
|
||||||
|
//var_dump($menu_array);
|
||||||
|
/*$new_menu_array = array();
|
||||||
|
$level=0; $cusor=0; $position=0;
|
||||||
|
$nbentry = count($menu_array);
|
||||||
|
while (findNextEntryForLevel($menu_array, $cursor, $position, $level))
|
||||||
|
{
|
||||||
|
|
||||||
|
$cursor++;
|
||||||
|
}*/
|
||||||
|
|
||||||
// Show menu
|
// Show menu
|
||||||
$invert=empty($conf->global->MAIN_MENU_INVERT)?"":"invert";
|
$invert=empty($conf->global->MAIN_MENU_INVERT)?"":"invert";
|
||||||
if (empty($noout))
|
if (empty($noout))
|
||||||
|
|||||||
@ -34,21 +34,31 @@
|
|||||||
*/
|
*/
|
||||||
class DolibarrModules // Can not be abstract, because we need to instantiant it into unActivateModule to be able to disable a module whose files were removed.
|
class DolibarrModules // Can not be abstract, because we need to instantiant it into unActivateModule to be able to disable a module whose files were removed.
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @var DoliDb Database handler
|
||||||
|
*/
|
||||||
|
public $db;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int Module unique ID
|
* @var int Module unique ID
|
||||||
*/
|
*/
|
||||||
public $numero;
|
public $numero;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Family
|
||||||
|
*/
|
||||||
|
public $family;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var int module_position
|
||||||
|
*/
|
||||||
|
public $module_position=500;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Module name
|
* @var string Module name
|
||||||
*/
|
*/
|
||||||
public $name;
|
public $name;
|
||||||
|
|
||||||
/**
|
|
||||||
* @var DoliDb Database handler
|
|
||||||
*/
|
|
||||||
public $db;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var array Paths to create when module is activated
|
* @var array Paths to create when module is activated
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -44,6 +44,7 @@ class modAccounting extends DolibarrModules
|
|||||||
$this->numero = 50400;
|
$this->numero = 50400;
|
||||||
|
|
||||||
$this->family = "financial";
|
$this->family = "financial";
|
||||||
|
$this->module_position = 610;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i', '', get_class($this));
|
$this->name = preg_replace('/^mod/i', '', get_class($this));
|
||||||
$this->description = "Advanced accounting management";
|
$this->description = "Advanced accounting management";
|
||||||
|
|||||||
@ -49,6 +49,7 @@ class modAdherent extends DolibarrModules
|
|||||||
$this->numero = 310;
|
$this->numero = 310;
|
||||||
|
|
||||||
$this->family = "hr";
|
$this->family = "hr";
|
||||||
|
$this->module_position = 20;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "Management of members of a foundation or association";
|
$this->description = "Management of members of a foundation or association";
|
||||||
|
|||||||
@ -50,6 +50,7 @@ class modAgenda extends DolibarrModules
|
|||||||
$this->numero = 2400;
|
$this->numero = 2400;
|
||||||
|
|
||||||
$this->family = "projects";
|
$this->family = "projects";
|
||||||
|
$this->module_position = 15;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "Gestion de l'agenda et des actions";
|
$this->description = "Gestion de l'agenda et des actions";
|
||||||
|
|||||||
@ -49,6 +49,7 @@ class modBanque extends DolibarrModules
|
|||||||
$this->numero = 85;
|
$this->numero = 85;
|
||||||
|
|
||||||
$this->family = "financial";
|
$this->family = "financial";
|
||||||
|
$this->module_position = 510;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "Gestion des comptes financiers de type Comptes bancaires ou postaux";
|
$this->description = "Gestion des comptes financiers de type Comptes bancaires ou postaux";
|
||||||
|
|||||||
@ -46,6 +46,7 @@ class modCashDesk extends DolibarrModules
|
|||||||
$this->rights_class = 'cashdesk';
|
$this->rights_class = 'cashdesk';
|
||||||
|
|
||||||
$this->family = "portal";
|
$this->family = "portal";
|
||||||
|
$this->module_position = 10;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "CashDesk module";
|
$this->description = "CashDesk module";
|
||||||
|
|||||||
@ -51,6 +51,7 @@ class modCommande extends DolibarrModules
|
|||||||
$this->numero = 25;
|
$this->numero = 25;
|
||||||
|
|
||||||
$this->family = "crm";
|
$this->family = "crm";
|
||||||
|
$this->module_position = 30;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "Gestion des commandes clients";
|
$this->description = "Gestion des commandes clients";
|
||||||
@ -182,7 +183,43 @@ class modCommande extends DolibarrModules
|
|||||||
$this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.date_creation'=>"Date",'c.date_commande'=>"Date",'c.amount_ht'=>"Numeric",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total_ttc'=>"Numeric",'c.facture'=>"Boolean",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric",'cd.total_tva'=>"Numeric",'cd.total_ttc'=>"Numeric",'p.rowid'=>'List:product:ref','p.ref'=>'Text','p.label'=>'Text');
|
$this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.date_creation'=>"Date",'c.date_commande'=>"Date",'c.amount_ht'=>"Numeric",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total_ttc'=>"Numeric",'c.facture'=>"Boolean",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric",'cd.total_tva'=>"Numeric",'cd.total_ttc'=>"Numeric",'p.rowid'=>'List:product:ref','p.ref'=>'Text','p.label'=>'Text');
|
||||||
$this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','co.label'=>'company','co.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.siret'=>'company','c.rowid'=>"order",'c.ref'=>"order",'c.ref_client'=>"order",'c.fk_soc'=>"order",'c.date_creation'=>"order",'c.date_commande'=>"order",'c.amount_ht'=>"order",'c.remise_percent'=>"order",'c.total_ht'=>"order",'c.total_ttc'=>"order",'c.facture'=>"order",'c.fk_statut'=>"order",'c.note'=>"order",'c.date_livraison'=>"order",'cd.rowid'=>'order_line','cd.label'=>"order_line",'cd.description'=>"order_line",'cd.product_type'=>'order_line','cd.tva_tx'=>"order_line",'cd.qty'=>"order_line",'cd.total_ht'=>"order_line",'cd.total_tva'=>"order_line",'cd.total_ttc'=>"order_line",'p.rowid'=>'product','p.ref'=>'product','p.label'=>'product');
|
$this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','co.label'=>'company','co.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.siret'=>'company','c.rowid'=>"order",'c.ref'=>"order",'c.ref_client'=>"order",'c.fk_soc'=>"order",'c.date_creation'=>"order",'c.date_commande'=>"order",'c.amount_ht'=>"order",'c.remise_percent'=>"order",'c.total_ht'=>"order",'c.total_ttc'=>"order",'c.facture'=>"order",'c.fk_statut'=>"order",'c.note'=>"order",'c.date_livraison'=>"order",'cd.rowid'=>'order_line','cd.label'=>"order_line",'cd.description'=>"order_line",'cd.product_type'=>'order_line','cd.tva_tx'=>"order_line",'cd.qty'=>"order_line",'cd.total_ht'=>"order_line",'cd.total_tva'=>"order_line",'cd.total_ttc'=>"order_line",'p.rowid'=>'product','p.ref'=>'product','p.label'=>'product');
|
||||||
$this->export_dependencies_array[$r]=array('order_line'=>'cd.rowid','product'=>'cd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them
|
$this->export_dependencies_array[$r]=array('order_line'=>'cd.rowid','product'=>'cd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them
|
||||||
|
// Add extra fields
|
||||||
|
$sql="SELECT name, label, type FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'commande' AND entity IN (0, ".$conf->entity.')';
|
||||||
|
$resql=$this->db->query($sql);
|
||||||
|
if ($resql) // This can fail when class is used on old database (during migration for example)
|
||||||
|
{
|
||||||
|
while ($obj=$this->db->fetch_object($resql))
|
||||||
|
{
|
||||||
|
$fieldname='extra.'.$obj->name;
|
||||||
|
$fieldlabel=ucfirst($obj->label);
|
||||||
|
$typeFilter="Text";
|
||||||
|
switch($obj->type)
|
||||||
|
{
|
||||||
|
case 'int':
|
||||||
|
case 'double':
|
||||||
|
case 'price':
|
||||||
|
$typeFilter="Numeric";
|
||||||
|
break;
|
||||||
|
case 'date':
|
||||||
|
case 'datetime':
|
||||||
|
$typeFilter="Date";
|
||||||
|
break;
|
||||||
|
case 'boolean':
|
||||||
|
$typeFilter="Boolean";
|
||||||
|
break;
|
||||||
|
case 'sellist':
|
||||||
|
$tmp='';
|
||||||
|
$tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null
|
||||||
|
if ($tmpparam['options'] && is_array($tmpparam['options'])) $tmp=array_shift(array_keys($tmpparam['options']));
|
||||||
|
if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$this->export_fields_array[$r][$fieldname]=$fieldlabel;
|
||||||
|
$this->export_TypeFields_array[$r][$fieldname]=$typeFilter;
|
||||||
|
$this->export_entities_array[$r][$fieldname]='order';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// End add extra fields
|
||||||
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||||
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s';
|
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s';
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co ON s.fk_pays = co.rowid,';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co ON s.fk_pays = co.rowid,';
|
||||||
|
|||||||
@ -48,6 +48,7 @@ class modComptabilite extends DolibarrModules
|
|||||||
$this->numero = 10;
|
$this->numero = 10;
|
||||||
|
|
||||||
$this->family = "financial";
|
$this->family = "financial";
|
||||||
|
$this->module_position = 600;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "Gestion sommaire de comptabilite";
|
$this->description = "Gestion sommaire de comptabilite";
|
||||||
|
|||||||
@ -45,6 +45,7 @@ class modDocumentGeneration extends DolibarrModules
|
|||||||
$this->numero = 1520;
|
$this->numero = 1520;
|
||||||
|
|
||||||
$this->family = "technic";
|
$this->family = "technic";
|
||||||
|
$this->module_position = 10000;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "Direct mail document generation";
|
$this->description = "Direct mail document generation";
|
||||||
|
|||||||
@ -48,6 +48,7 @@ class modECM extends DolibarrModules
|
|||||||
// Family can be 'crm','financial','hr','projects','product','ecm','technic','other'
|
// Family can be 'crm','financial','hr','projects','product','ecm','technic','other'
|
||||||
// It is used to sort modules in module setup page
|
// It is used to sort modules in module setup page
|
||||||
$this->family = "ecm";
|
$this->family = "ecm";
|
||||||
|
$this->module_position = 10;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
// Module description used if translation string 'ModuleXXXDesc' not found (XXX is id value)
|
// Module description used if translation string 'ModuleXXXDesc' not found (XXX is id value)
|
||||||
|
|||||||
@ -49,6 +49,7 @@ class modExpedition extends DolibarrModules
|
|||||||
$this->numero = 80;
|
$this->numero = 80;
|
||||||
|
|
||||||
$this->family = "crm";
|
$this->family = "crm";
|
||||||
|
$this->module_position = 40;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "Gestion des expeditions";
|
$this->description = "Gestion des expeditions";
|
||||||
|
|||||||
@ -52,6 +52,7 @@ class modExpenseReport extends DolibarrModules
|
|||||||
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
||||||
// It is used to group modules in module setup page
|
// It is used to group modules in module setup page
|
||||||
$this->family = "hr";
|
$this->family = "hr";
|
||||||
|
$this->module_position = 40;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
|
|||||||
@ -48,6 +48,7 @@ class modFacture extends DolibarrModules
|
|||||||
$this->numero = 30;
|
$this->numero = 30;
|
||||||
|
|
||||||
$this->family = "financial";
|
$this->family = "financial";
|
||||||
|
$this->module_position = 10;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "Gestion des factures";
|
$this->description = "Gestion des factures";
|
||||||
|
|||||||
@ -48,6 +48,7 @@ class modFournisseur extends DolibarrModules
|
|||||||
$this->numero = 40;
|
$this->numero = 40;
|
||||||
|
|
||||||
$this->family = "products";
|
$this->family = "products";
|
||||||
|
$this->module_position = 10;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "Gestion des fournisseurs";
|
$this->description = "Gestion des fournisseurs";
|
||||||
|
|||||||
@ -53,6 +53,7 @@ class modHoliday extends DolibarrModules
|
|||||||
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
||||||
// It is used to group modules in module setup page
|
// It is used to group modules in module setup page
|
||||||
$this->family = "hr";
|
$this->family = "hr";
|
||||||
|
$this->module_position = 30;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
|
|||||||
@ -48,6 +48,7 @@ class modMargin extends DolibarrModules
|
|||||||
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
||||||
// It is used to group modules in module setup page
|
// It is used to group modules in module setup page
|
||||||
$this->family = "financial";
|
$this->family = "financial";
|
||||||
|
$this->module_position = 550;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
|
|||||||
@ -47,6 +47,7 @@ class modOauth extends DolibarrModules
|
|||||||
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
||||||
// It is used to group modules in module setup page
|
// It is used to group modules in module setup page
|
||||||
$this->family = "technic";
|
$this->family = "technic";
|
||||||
|
$this->module_position = 510;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
|
|||||||
@ -52,6 +52,7 @@ class modOpenSurvey extends DolibarrModules
|
|||||||
// Family can be 'crm','financial','hr','projects','product','technic','other'
|
// Family can be 'crm','financial','hr','projects','product','technic','other'
|
||||||
// It is used to group modules in module setup page
|
// It is used to group modules in module setup page
|
||||||
$this->family = "projects";
|
$this->family = "projects";
|
||||||
|
$this->module_position = 40;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
// Module description used if translation string 'ModuleXXXDesc' not found (XXX is value MyModule)
|
// Module description used if translation string 'ModuleXXXDesc' not found (XXX is value MyModule)
|
||||||
|
|||||||
@ -48,6 +48,7 @@ class modPrelevement extends DolibarrModules
|
|||||||
$this->numero = 57;
|
$this->numero = 57;
|
||||||
|
|
||||||
$this->family = "financial";
|
$this->family = "financial";
|
||||||
|
$this->module_position = 520;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "Gestion des Prelevements";
|
$this->description = "Gestion des Prelevements";
|
||||||
|
|||||||
@ -47,6 +47,7 @@ class modPrinting extends DolibarrModules
|
|||||||
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
||||||
// It is used to group modules in module setup page
|
// It is used to group modules in module setup page
|
||||||
$this->family = "technic";
|
$this->family = "technic";
|
||||||
|
$this->module_position = 520;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
|
|||||||
@ -50,6 +50,7 @@ class modProduct extends DolibarrModules
|
|||||||
$this->numero = 50;
|
$this->numero = 50;
|
||||||
|
|
||||||
$this->family = "products";
|
$this->family = "products";
|
||||||
|
$this->module_position = 20;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "Gestion des produits";
|
$this->description = "Gestion des produits";
|
||||||
|
|||||||
@ -46,6 +46,8 @@ class modProductBatch extends DolibarrModules
|
|||||||
$this->numero = 39000;
|
$this->numero = 39000;
|
||||||
|
|
||||||
$this->family = "products";
|
$this->family = "products";
|
||||||
|
$this->module_position = 45;
|
||||||
|
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "Batch number, eat-by and sell-by date management module";
|
$this->description = "Batch number, eat-by and sell-by date management module";
|
||||||
|
|
||||||
|
|||||||
@ -50,6 +50,7 @@ class modProjet extends DolibarrModules
|
|||||||
$this->numero = 400;
|
$this->numero = 400;
|
||||||
|
|
||||||
$this->family = "projects";
|
$this->family = "projects";
|
||||||
|
$this->module_position = 10;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "Gestion des projets";
|
$this->description = "Gestion des projets";
|
||||||
|
|||||||
@ -49,6 +49,7 @@ class modPropale extends DolibarrModules
|
|||||||
$this->numero = 20;
|
$this->numero = 20;
|
||||||
|
|
||||||
$this->family = "crm";
|
$this->family = "crm";
|
||||||
|
$this->module_position = 20;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "Gestion des propositions commerciales";
|
$this->description = "Gestion des propositions commerciales";
|
||||||
@ -175,7 +176,43 @@ class modPropale extends DolibarrModules
|
|||||||
$this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.datec'=>"Date",'c.datep'=>"Date",'c.fin_validite'=>"Date",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total'=>"Numeric",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric",'cd.total_tva'=>"Numeric",'cd.total_ttc'=>"Numeric",'p.ref'=>'Text','p.label'=>'Text');
|
$this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.datec'=>"Date",'c.datep'=>"Date",'c.fin_validite'=>"Date",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total'=>"Numeric",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric",'cd.total_tva'=>"Numeric",'cd.total_ttc'=>"Numeric",'p.ref'=>'Text','p.label'=>'Text');
|
||||||
$this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','co.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.siret'=>'company','c.rowid'=>"propal",'c.ref'=>"propal",'c.ref_client'=>"propal",'c.fk_soc'=>"propal",'c.datec'=>"propal",'c.datep'=>"propal",'c.fin_validite'=>"propal",'c.remise_percent'=>"propal",'c.total_ht'=>"propal",'c.total'=>"propal",'c.fk_statut'=>"propal",'c.note_public'=>"propal",'c.date_livraison'=>"propal",'cd.rowid'=>'propal_line','cd.label'=>"propal_line",'cd.description'=>"propal_line",'cd.product_type'=>'propal_line','cd.tva_tx'=>"propal_line",'cd.qty'=>"propal_line",'cd.total_ht'=>"propal_line",'cd.total_tva'=>"propal_line",'cd.total_ttc'=>"propal_line",'p.rowid'=>'product','p.ref'=>'product','p.label'=>'product');
|
$this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','co.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.siret'=>'company','c.rowid'=>"propal",'c.ref'=>"propal",'c.ref_client'=>"propal",'c.fk_soc'=>"propal",'c.datec'=>"propal",'c.datep'=>"propal",'c.fin_validite'=>"propal",'c.remise_percent'=>"propal",'c.total_ht'=>"propal",'c.total'=>"propal",'c.fk_statut'=>"propal",'c.note_public'=>"propal",'c.date_livraison'=>"propal",'cd.rowid'=>'propal_line','cd.label'=>"propal_line",'cd.description'=>"propal_line",'cd.product_type'=>'propal_line','cd.tva_tx'=>"propal_line",'cd.qty'=>"propal_line",'cd.total_ht'=>"propal_line",'cd.total_tva'=>"propal_line",'cd.total_ttc'=>"propal_line",'p.rowid'=>'product','p.ref'=>'product','p.label'=>'product');
|
||||||
$this->export_dependencies_array[$r]=array('propal_line'=>'cd.rowid','product'=>'cd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them
|
$this->export_dependencies_array[$r]=array('propal_line'=>'cd.rowid','product'=>'cd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them
|
||||||
|
// Add extra fields
|
||||||
|
$sql="SELECT name, label, type FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'propal' AND entity IN (0, ".$conf->entity.')';
|
||||||
|
$resql=$this->db->query($sql);
|
||||||
|
if ($resql) // This can fail when class is used on old database (during migration for example)
|
||||||
|
{
|
||||||
|
while ($obj=$this->db->fetch_object($resql))
|
||||||
|
{
|
||||||
|
$fieldname='extra.'.$obj->name;
|
||||||
|
$fieldlabel=ucfirst($obj->label);
|
||||||
|
$typeFilter="Text";
|
||||||
|
switch($obj->type)
|
||||||
|
{
|
||||||
|
case 'int':
|
||||||
|
case 'double':
|
||||||
|
case 'price':
|
||||||
|
$typeFilter="Numeric";
|
||||||
|
break;
|
||||||
|
case 'date':
|
||||||
|
case 'datetime':
|
||||||
|
$typeFilter="Date";
|
||||||
|
break;
|
||||||
|
case 'boolean':
|
||||||
|
$typeFilter="Boolean";
|
||||||
|
break;
|
||||||
|
case 'sellist':
|
||||||
|
$tmp='';
|
||||||
|
$tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null
|
||||||
|
if ($tmpparam['options'] && is_array($tmpparam['options'])) $tmp=array_shift(array_keys($tmpparam['options']));
|
||||||
|
if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$this->export_fields_array[$r][$fieldname]=$fieldlabel;
|
||||||
|
$this->export_TypeFields_array[$r][$fieldname]=$typeFilter;
|
||||||
|
$this->export_entities_array[$r][$fieldname]='propal';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// End add extra fields
|
||||||
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||||
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s ';
|
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s ';
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co ON s.fk_pays = co.rowid,';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co ON s.fk_pays = co.rowid,';
|
||||||
|
|||||||
@ -47,6 +47,7 @@ class modReceiptPrinter extends DolibarrModules
|
|||||||
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
||||||
// It is used to group modules in module setup page
|
// It is used to group modules in module setup page
|
||||||
$this->family = "technic";
|
$this->family = "technic";
|
||||||
|
$this->module_position = 530;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
|
|||||||
@ -47,12 +47,14 @@ class modResource extends DolibarrModules
|
|||||||
// Use a free id here
|
// Use a free id here
|
||||||
// (See in Home -> System information -> Dolibarr for list of used modules id).
|
// (See in Home -> System information -> Dolibarr for list of used modules id).
|
||||||
$this->numero = 63000;
|
$this->numero = 63000;
|
||||||
|
|
||||||
// Key text used to identify module (for permissions, menus, etc...)
|
// Key text used to identify module (for permissions, menus, etc...)
|
||||||
$this->rights_class = 'resource';
|
$this->rights_class = 'resource';
|
||||||
|
|
||||||
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
||||||
// It is used to group modules in module setup page
|
// It is used to group modules in module setup page
|
||||||
$this->family = "projects";
|
$this->family = "projects";
|
||||||
|
$this->module_position = 20;
|
||||||
// Module label (no space allowed)
|
// Module label (no space allowed)
|
||||||
// used if translation string 'ModuleXXXName' not found
|
// used if translation string 'ModuleXXXName' not found
|
||||||
// (where XXX is value of numeric property 'numero' of module)
|
// (where XXX is value of numeric property 'numero' of module)
|
||||||
|
|||||||
@ -48,6 +48,7 @@ class modService extends DolibarrModules
|
|||||||
$this->numero = 53;
|
$this->numero = 53;
|
||||||
|
|
||||||
$this->family = "products";
|
$this->family = "products";
|
||||||
|
$this->module_position = 30;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "Gestion des services";
|
$this->description = "Gestion des services";
|
||||||
|
|||||||
@ -49,6 +49,7 @@ class modSociete extends DolibarrModules
|
|||||||
$this->numero = 1;
|
$this->numero = 1;
|
||||||
|
|
||||||
$this->family = "crm";
|
$this->family = "crm";
|
||||||
|
$this->module_position = 10;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "Gestion des societes et contacts";
|
$this->description = "Gestion des societes et contacts";
|
||||||
|
|||||||
@ -48,6 +48,7 @@ class modStock extends DolibarrModules
|
|||||||
$this->numero = 52;
|
$this->numero = 52;
|
||||||
|
|
||||||
$this->family = "products";
|
$this->family = "products";
|
||||||
|
$this->module_position = 40;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "Gestion des stocks";
|
$this->description = "Gestion des stocks";
|
||||||
|
|||||||
@ -21,11 +21,11 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \defgroup askpricesupplier Module askpricesupplier
|
* \defgroup supplier_proposal Module supplier_proposal
|
||||||
* \brief Module to request supplier price proposals
|
* \brief Module to request supplier price proposals
|
||||||
* \file htdocs/core/modules/modAskPriceSupplier.class.php
|
* \file htdocs/core/modules/modSupplierProposal.class.php
|
||||||
* \ingroup askpricesupplier
|
* \ingroup supplier_proposal
|
||||||
* \brief File to describe and activate module AskPriceSupplier
|
* \brief File to describe and activate module SupplierProposal
|
||||||
*/
|
*/
|
||||||
include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php';
|
include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php';
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php';
|
|||||||
/**
|
/**
|
||||||
* Class to describe and enable module AskPriceSupllier
|
* Class to describe and enable module AskPriceSupllier
|
||||||
*/
|
*/
|
||||||
class modAskPriceSupplier extends DolibarrModules
|
class modSupplierProposal extends DolibarrModules
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -50,43 +50,43 @@ class modAskPriceSupplier extends DolibarrModules
|
|||||||
|
|
||||||
$this->family = "products";
|
$this->family = "products";
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "askpricesupplierDESC";
|
$this->description = "supplier_proposalDESC";
|
||||||
|
|
||||||
$this->version = 'experimental';
|
$this->version = 'experimental';
|
||||||
|
|
||||||
$this->const_name = 'MAIN_MODULE_'.strtoupper($this->name);
|
$this->const_name = 'MAIN_MODULE_'.strtoupper($this->name);
|
||||||
$this->special = 0;
|
$this->special = 0;
|
||||||
$this->picto='askpricesupplier';
|
$this->picto='supplier_proposal';
|
||||||
|
|
||||||
$this->dirs = array();
|
$this->dirs = array();
|
||||||
|
|
||||||
// Dependancies
|
// Dependancies
|
||||||
$this->depends = array('modFournisseur');
|
$this->depends = array('modFournisseur');
|
||||||
$this->requiredby = array();
|
$this->requiredby = array();
|
||||||
$this->config_page_url = array("askpricesupplier.php");
|
$this->config_page_url = array("supplier_proposal.php");
|
||||||
$this->langfiles = array("askpricesupplier");
|
$this->langfiles = array("supplier_proposal");
|
||||||
|
|
||||||
// Constants
|
// Constants
|
||||||
$this->const = array();
|
$this->const = array();
|
||||||
$r=0;
|
$r=0;
|
||||||
|
|
||||||
$this->const[$r][0] = "ASKPRICESUPPLIER_ADDON_PDF";
|
$this->const[$r][0] = "SUPPLIER_PROPOSAL_ADDON_PDF";
|
||||||
$this->const[$r][1] = "chaine";
|
$this->const[$r][1] = "chaine";
|
||||||
$this->const[$r][2] = "aurore";
|
$this->const[$r][2] = "aurore";
|
||||||
$this->const[$r][3] = 'Name of submodule to generate PDF for supplier quotation request';
|
$this->const[$r][3] = 'Name of submodule to generate PDF for supplier quotation request';
|
||||||
$this->const[$r][4] = 0;
|
$this->const[$r][4] = 0;
|
||||||
$r++;
|
$r++;
|
||||||
|
|
||||||
$this->const[$r][0] = "ASKPRICESUPPLIER_ADDON";
|
$this->const[$r][0] = "SUPPLIER_PROPOSAL_ADDON";
|
||||||
$this->const[$r][1] = "chaine";
|
$this->const[$r][1] = "chaine";
|
||||||
$this->const[$r][2] = "mod_askpricesupplier_marbre";
|
$this->const[$r][2] = "mod_supplier_proposal_marbre";
|
||||||
$this->const[$r][3] = 'Name of submodule to number supplier quotation request';
|
$this->const[$r][3] = 'Name of submodule to number supplier quotation request';
|
||||||
$this->const[$r][4] = 0;
|
$this->const[$r][4] = 0;
|
||||||
$r++;
|
$r++;
|
||||||
|
|
||||||
$this->const[$r][0] = "ASKPRICESUPPLIER_ADDON_PDF_ODT_PATH";
|
$this->const[$r][0] = "SUPPLIER_PROPOSAL_ADDON_PDF_ODT_PATH";
|
||||||
$this->const[$r][1] = "chaine";
|
$this->const[$r][1] = "chaine";
|
||||||
$this->const[$r][2] = "DOL_DATA_ROOT/doctemplates/askpricesupplier";
|
$this->const[$r][2] = "DOL_DATA_ROOT/doctemplates/supplier_proposal";
|
||||||
$this->const[$r][3] = "";
|
$this->const[$r][3] = "";
|
||||||
$this->const[$r][4] = 0;
|
$this->const[$r][4] = 0;
|
||||||
|
|
||||||
@ -95,7 +95,7 @@ class modAskPriceSupplier extends DolibarrModules
|
|||||||
|
|
||||||
// Permissions
|
// Permissions
|
||||||
$this->rights = array();
|
$this->rights = array();
|
||||||
$this->rights_class = 'askpricesupplier';
|
$this->rights_class = 'supplier_proposal';
|
||||||
$r=0;
|
$r=0;
|
||||||
|
|
||||||
$r++;
|
$r++;
|
||||||
@ -142,40 +142,40 @@ class modAskPriceSupplier extends DolibarrModules
|
|||||||
$this->menu[$r]=array(
|
$this->menu[$r]=array(
|
||||||
'fk_menu'=>'fk_mainmenu=commercial', // Use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
|
'fk_menu'=>'fk_mainmenu=commercial', // 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'=>'askpricesupplierMENU_LEFT_TITLE',
|
'titre'=>'supplier_proposalMENU_LEFT_TITLE',
|
||||||
'leftmenu'=>'askpricesuppliersubmenu',
|
'leftmenu'=>'supplier_proposalsubmenu',
|
||||||
'url'=>'/comm/askpricesupplier/index.php',
|
'url'=>'/supplier_proposal/index.php',
|
||||||
'langs'=>'askpricesupplier', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
'langs'=>'supplier_proposal', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||||
'enabled'=>'$conf->askpricesupplier->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected.
|
'enabled'=>'$conf->supplier_proposal->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected.
|
||||||
'perms'=>'$user->rights->askpricesupplier->lire', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
'perms'=>'$user->rights->supplier_proposal->lire', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
||||||
'user'=>2, // 0=Menu for internal users, 1=external users, 2=both
|
'user'=>2, // 0=Menu for internal users, 1=external users, 2=both
|
||||||
'position'=>30
|
'position'=>300
|
||||||
);
|
);
|
||||||
$r++;
|
$r++;
|
||||||
|
|
||||||
$this->menu[$r]=array(
|
$this->menu[$r]=array(
|
||||||
'fk_menu'=>'fk_mainmenu=commercial,fk_leftmenu=askpricesuppliersubmenu',
|
'fk_menu'=>'fk_mainmenu=commercial,fk_leftmenu=supplier_proposalsubmenu',
|
||||||
'type'=>'left',
|
'type'=>'left',
|
||||||
'titre'=>'askpricesupplierMENU_LEFT_TITLE_NEW',
|
'titre'=>'supplier_proposalMENU_LEFT_TITLE_NEW',
|
||||||
'url'=>'/comm/askpricesupplier/card.php?action=create',
|
'url'=>'/supplier_proposal/card.php?action=create',
|
||||||
'langs'=>'askpricesupplier',
|
'langs'=>'supplier_proposal',
|
||||||
'enabled'=>'$conf->askpricesupplier->enabled',
|
'enabled'=>'$conf->supplier_proposal->enabled',
|
||||||
'perms'=>'$user->rights->askpricesupplier->creer',
|
'perms'=>'$user->rights->supplier_proposal->creer',
|
||||||
'user'=>2,
|
'user'=>2,
|
||||||
'position'=>31
|
'position'=>301
|
||||||
);
|
);
|
||||||
$r++;
|
$r++;
|
||||||
|
|
||||||
$this->menu[$r]=array(
|
$this->menu[$r]=array(
|
||||||
'fk_menu'=>'fk_mainmenu=commercial,fk_leftmenu=askpricesuppliersubmenu',
|
'fk_menu'=>'fk_mainmenu=commercial,fk_leftmenu=supplier_proposalsubmenu',
|
||||||
'type'=>'left',
|
'type'=>'left',
|
||||||
'titre'=>'askpricesupplierMENU_LEFT_TITLE_LIST',
|
'titre'=>'supplier_proposalMENU_LEFT_TITLE_LIST',
|
||||||
'url'=>'/comm/askpricesupplier/list.php',
|
'url'=>'/supplier_proposal/list.php',
|
||||||
'langs'=>'askpricesupplier',
|
'langs'=>'supplier_proposal',
|
||||||
'enabled'=>'$conf->askpricesupplier->enabled',
|
'enabled'=>'$conf->supplier_proposal->enabled',
|
||||||
'perms'=>'$user->rights->askpricesupplier->lire',
|
'perms'=>'$user->rights->supplier_proposal->lire',
|
||||||
'user'=>2,
|
'user'=>2,
|
||||||
'position'=>32
|
'position'=>302
|
||||||
);
|
);
|
||||||
$r++;
|
$r++;
|
||||||
}
|
}
|
||||||
@ -197,9 +197,9 @@ class modAskPriceSupplier extends DolibarrModules
|
|||||||
$this->remove($options);
|
$this->remove($options);
|
||||||
|
|
||||||
//ODT template
|
//ODT template
|
||||||
$src=DOL_DOCUMENT_ROOT.'/install/doctemplates/askpricesupplier/template_askpricesupplier.odt';
|
$src=DOL_DOCUMENT_ROOT.'/install/doctemplates/supplier_proposal/template_supplier_proposal.odt';
|
||||||
$dirodt=DOL_DATA_ROOT.'/doctemplates/askpricesupplier';
|
$dirodt=DOL_DATA_ROOT.'/doctemplates/supplier_proposal';
|
||||||
$dest=$dirodt.'/template_askpricesupplier.odt';
|
$dest=$dirodt.'/template_supplier_proposal.odt';
|
||||||
|
|
||||||
if (file_exists($src) && ! file_exists($dest))
|
if (file_exists($src) && ! file_exists($dest))
|
||||||
{
|
{
|
||||||
@ -216,9 +216,29 @@ class modAskPriceSupplier extends DolibarrModules
|
|||||||
|
|
||||||
$sql = array(
|
$sql = array(
|
||||||
"DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = '".$this->const[0][2]."' AND entity = ".$conf->entity,
|
"DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = '".$this->const[0][2]."' AND entity = ".$conf->entity,
|
||||||
"INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('".$this->const[0][2]."','askpricesupplier',".$conf->entity.")",
|
"INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('".$this->const[0][2]."','supplier_proposal',".$conf->entity.")",
|
||||||
);
|
);
|
||||||
|
|
||||||
return $this->_init($sql, $options);
|
return $this->_init($sql, $options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called when module is disabled.
|
||||||
|
* Remove from database constants, boxes and permissions from Dolibarr database.
|
||||||
|
* Data directories are not deleted
|
||||||
|
*
|
||||||
|
* @param string $options Options when enabling module ('', 'noboxes')
|
||||||
|
* @return int 1 if OK, 0 if KO
|
||||||
|
*/
|
||||||
|
public function remove($options = '')
|
||||||
|
{
|
||||||
|
$sql = array(
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."rights_def WHERE module = 'askpricesupplier'"
|
||||||
|
);
|
||||||
|
|
||||||
|
return $this->_remove($sql, $options);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -46,6 +46,7 @@ class modUser extends DolibarrModules
|
|||||||
$this->numero = 0;
|
$this->numero = 0;
|
||||||
|
|
||||||
$this->family = "hr"; // Family for module (or "base" if core module)
|
$this->family = "hr"; // Family for module (or "base" if core module)
|
||||||
|
$this->module_position = 10;
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
$this->description = "Gestion des utilisateurs (requis)";
|
$this->description = "Gestion des utilisateurs (requis)";
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user