Merge branch 'develop' into develop
This commit is contained in:
commit
1708874306
13
.travis.yml
13
.travis.yml
@ -108,11 +108,11 @@ install:
|
||||
echo "Updating Composer"
|
||||
rm $TRAVIS_BUILD_DIR/composer.json
|
||||
rm $TRAVIS_BUILD_DIR/composer.lock
|
||||
composer -V
|
||||
composer self-update
|
||||
# To have composer making parallel downloads
|
||||
composer global require hirak/prestissimo
|
||||
composer -n init
|
||||
composer -n config vendor-dir htdocs/includes
|
||||
composer -n config -g vendor-dir htdocs/includes
|
||||
echo
|
||||
|
||||
- |
|
||||
@ -146,7 +146,10 @@ install:
|
||||
|
||||
- |
|
||||
echo "Adding path of binaries tools installed by composer to the PATH"
|
||||
export PATH="$TRAVIS_BUILD_DIR/htdocs/includes/bin:$PATH"
|
||||
export PATH="$TRAVIS_BUILD_DIR/htdocs/includes/bin:$TRAVIS_BUILD_DIR/vendor/bin:$TRAVIS_BUILD_DIR/htdocs/includes:$PATH"
|
||||
echo $PATH
|
||||
ls $TRAVIS_BUILD_DIR/vendor
|
||||
ls $TRAVIS_BUILD_DIR/htdocs/includes/bin
|
||||
echo
|
||||
|
||||
|
||||
@ -177,7 +180,7 @@ before_script:
|
||||
# Check PHP
|
||||
echo "PHP version"
|
||||
php -i | head -
|
||||
# Check Parallel-lin version
|
||||
# Check Parallel-lint version
|
||||
echo "Parallel-lint version"
|
||||
which parallel-lint
|
||||
parallel-lint -V
|
||||
@ -300,7 +303,7 @@ script:
|
||||
echo
|
||||
|
||||
- |
|
||||
echo "Checking coding style (excluding Pull Requests builds to not overload travis, excluding also for some jobs to avoid duplicate tests)"
|
||||
echo "Checking coding style (excluding Pull Requests builds to not overload travis, excluding also some jobs to avoid duplicate tests)"
|
||||
# Ensure we catch errors
|
||||
set -e
|
||||
# Exclusions are defined in the ruleset.xml file
|
||||
|
||||
266
ChangeLog
266
ChangeLog
@ -4,153 +4,155 @@ English Dolibarr ChangeLog
|
||||
|
||||
|
||||
***** ChangeLog for 13.0.0 compared to 12.0.0 *****
|
||||
|
||||
For users:
|
||||
----------
|
||||
NEW: Add module "Credit transfer SEPA" to manage payment of vendors using bank credit transfer SEPA files.
|
||||
NEW: Module Reception (for a more accurate management of your receptions) moved from experimental to stable.
|
||||
NEW: Several security issues after a private bug bounty campaign.
|
||||
NEW: #15065 Put the product label in bold in the PDF templates if configured
|
||||
NEW: Accountancy - Add chart of sub accounts
|
||||
NEW: Accountancy - Add options to disable binding on sales, purchases & expense reports independently of the modules
|
||||
NEW: Accountancy balance - Add a menu entry to show subtotal by group
|
||||
NEW: Accountancy - Move to real ledger, real journals, menu disposition
|
||||
NEW: Accountancy - On transfers, select the periodicity by default
|
||||
NEW: New currency rate editor.
|
||||
NEW: Add 2 rules for emailcollector: Message send/not sent from Dolibarr
|
||||
NEW: Add a counter of number of words for pages in website module
|
||||
NEW: add alert before changing thirdparty in takepos
|
||||
NEW: Add a page to list Stock at a given date in the past.
|
||||
NEW: Add a start date to begin binding in accountancy
|
||||
NEW: Add a statistics page to list popularity of products on invoices
|
||||
NEW: Add calendar selection for agenda view
|
||||
NEW: Support documents generation for ticket edition (pdf or odt)
|
||||
NEW: Add column payment term into list of supplier invoices.
|
||||
NEW: Add column quantity in product margin page
|
||||
NEW: Add column vat rate in page to define accounting account on product/service
|
||||
NEW: Add common list function for available app/module page
|
||||
NEW: Accountancy - add chart of sub accounts
|
||||
NEW: Accountancy - add options to disable binding on sales, purchases & expense reports independently of the modules
|
||||
NEW: Accountancy balance - add a menu entry to show subtotal by group
|
||||
NEW: Accountancy - move to real ledger, real journals, menu disposition
|
||||
NEW: Accountancy - on transfers, select the periodicity by default
|
||||
NEW: new currency rate editor
|
||||
NEW: add 2 rules for emailcollector: Message send/not sent from Dolibarr
|
||||
NEW: add a counter of number of words for pages in website module
|
||||
NEW: add alert before changing thirdparty in TakePOS
|
||||
NEW: add a page to list Stock at a given date in the past
|
||||
NEW: add a start date to begin binding in accountancy
|
||||
NEW: add a statistics page to list popularity of products on invoices
|
||||
NEW: add calendar selection for agenda view
|
||||
NEW: Support documents generation for ticket edition (PDF or ODT)
|
||||
NEW: add column payment term into list of supplier invoices
|
||||
NEW: add column quantity in product margin page
|
||||
NEW: add column vat rate in page to define accounting account on product/service
|
||||
NEW: add common list function for available app/module page
|
||||
NEW: add costprice in fields of products list
|
||||
NEW: Added an import profile for CUSTOMER ORDER, PO, PROPOSAL MODULE, SUPPLIER INVOICE
|
||||
NEW: Added incoterms dara into the substitution array
|
||||
NEW: Add employee link in expense report binding page
|
||||
NEW: Add export for various payment
|
||||
NEW: add extra fields labels and values in mail on create ticket
|
||||
NEW: Add extrafields support on ECM module
|
||||
NEW: Add filter rules "is answer" and "is not answer" in email collector
|
||||
NEW: Add focus when editing on product/stock/product.php Close #14548
|
||||
NEW: added an import profile for CUSTOMER ORDER, PO, PROPOSAL MODULE, SUPPLIER INVOICE
|
||||
NEW: added incoterms data into the substitution array
|
||||
NEW: add employee link in expense report binding page
|
||||
NEW: add export for various payment
|
||||
NEW: add Extrafields labels and values in mail on create ticket
|
||||
NEW: add Extrafields support on ECM module
|
||||
NEW: add filter rules "is answer" and "is not answer" in email collector
|
||||
NEW: add focus when editing on product/stock/product.php Close #14548
|
||||
NEW: add formConfirm hook on product page
|
||||
NEW: add free text on each terminal of cash desk
|
||||
NEW: Add function dolButtonToOpenUrlInDialogPopup() to be able to open
|
||||
NEW: Add global search for customer payments and vendor payments
|
||||
NEW: Add global search for miscellaneous payments
|
||||
NEW: Add helper function for table headers with numbers
|
||||
NEW: add function dolButtonToOpenUrlInDialogPopup() to be able to open
|
||||
NEW: add global search for customer payments and vendor payments
|
||||
NEW: add global search for miscellaneous payments
|
||||
NEW: add helper function for table headers with numbers
|
||||
NEW: add hooks on stats pages
|
||||
NEW: Add link to edit property from search result of website pages
|
||||
NEW: Add link to reset qty on supplier dispatch page
|
||||
NEW: add link to edit property from search result of website pages
|
||||
NEW: add link to reset qty on supplier dispatch page
|
||||
NEW: add MAIN_EMAILCOLLECTOR_MAIL_WITHOUT_HEADER const to remove header stored by email collector
|
||||
NEW: Add Manufacturing Orders attached files into the automatic ECM view
|
||||
NEW: add Manufacturing Orders attached files into the automatic ECM view
|
||||
NEW: add margin info in invoice list
|
||||
NEW: Add mass action to set category on a list of website pages.
|
||||
NEW: Add mass deletion for events
|
||||
NEW: Add mass deletion for draft invoices
|
||||
NEW: Add __MEMBER_TYPE__ substitution key
|
||||
NEW: Add a message in error_log after detection of SQL or script injection
|
||||
NEW: Add module Credit transfer SEPA to manage payment of supplier using
|
||||
NEW: Add more filters on monthly statement list
|
||||
NEW: Add option TAKEPOS_CAN_FORCE_BANK_ACCOUNT_DURING_PAYMENT
|
||||
NEW: Add option to define a default warehouse at user level
|
||||
NEW: Add option to include products without alert in replenish
|
||||
NEW: add mass action to set category on a list of website pages
|
||||
NEW: add mass deletion for events
|
||||
NEW: add mass deletion for draft invoices
|
||||
NEW: add __MEMBER_TYPE__ substitution key
|
||||
NEW: add a message in error_log after detection of SQL or script injection
|
||||
NEW: add module Credit transfer SEPA to manage payment of supplier using
|
||||
NEW: add more filters on monthly statement list
|
||||
NEW: add option TAKEPOS_CAN_FORCE_BANK_ACCOUNT_DURING_PAYMENT
|
||||
NEW: add option to define a default warehouse at user level
|
||||
NEW: add option to include products without alert in replenish
|
||||
NEW: add order by lastname and firstname by default in get sales representatives
|
||||
NEW: Add param to not show links when output tags
|
||||
NEW: Add PDF document templates for warehouses (list of stock)
|
||||
NEW: Add property cssview when declaring fields of an object
|
||||
NEW: Add prospect status managment for the contact with managment of custom icon
|
||||
NEW: Add public note on products. This also partially fix the #14342
|
||||
NEW: Add quick dropdown menu in top right menu (MAIN_USE_TOP_MENU_QUICKADD_DROPDOWN)
|
||||
NEW: add param to not show links when output tags
|
||||
NEW: add PDF document templates for warehouses (list of stock)
|
||||
NEW: add property cssview when declaring fields of an object
|
||||
NEW: add prospect status managment for the contact with managment of custom icon
|
||||
NEW: add public note on products ; this also partially fix the #14342
|
||||
NEW: add quick dropdown menu in top right menu (MAIN_USE_TOP_MENU_QUICKADD_DROPDOWN)
|
||||
NEW: add region in export companies and contacts
|
||||
NEW: add rights on margin info on invoice list
|
||||
NEW: Add search param for close date on order list
|
||||
NEW: add search param for close date on order list
|
||||
NEW: add send context for ticket
|
||||
NEW: Add show preview for mail attachement on form mail
|
||||
NEW: add show preview for mail attachement on form mail
|
||||
NEW: add state origin for product
|
||||
NEW: add State/Province origin for products
|
||||
NEW: Add the workflow interaction close intervention on closing ticket
|
||||
NEW: Add third order printer to TakePOS
|
||||
NEW: add the workflow interaction close intervention on closing ticket
|
||||
NEW: add third order printer to TakePOS
|
||||
NEW: add tracking number in list and search_all items
|
||||
NEW: add two hooks printFieldListFrom and printFieldSearchParam
|
||||
NEW: Add __TYPE__ substitution key
|
||||
NEW: Add validation of MX domain for emails
|
||||
NEW: add __TYPE__ substitution key
|
||||
NEW: add validation of MX domain for emails
|
||||
NEW: add vcard for aderent and user
|
||||
NEW: add week number for month view in agenda
|
||||
NEW: Algeria data (tva and forme_juridique)
|
||||
NEW: Allow click on all header numbers on commerce area
|
||||
NEW: Allow to reopen interventions (green button)
|
||||
NEW: Allow zero quality on supplier/vendor order line
|
||||
NEW: Appearance tab in TakePOS with more visual parameters
|
||||
NEW: Better currency rate editor
|
||||
NEW: Calculate the virtual stock in transverse mode ( not on getEntity('commande'), ... but on getEntity('stock') )
|
||||
NEW: Can add event to log into blockedlog module with a constant.
|
||||
NEW: Can build vendor invoice from vendor orders
|
||||
NEW: Can change a product in line of recurring invoice or contract
|
||||
NEW: Can change size of logo on PDF documents
|
||||
NEW: Can change VAT rate of all lines of a draft object in one step.
|
||||
NEW: Can define date range of validity of a login during creation
|
||||
NEW: Can disable, from edit page, the whole web site
|
||||
NEW: allow click on all header numbers on commerce area
|
||||
NEW: allow to reopen interventions (green button)
|
||||
NEW: allow zero quality on supplier/vendor order line
|
||||
NEW: appearance tab in TakePOS with more visual parameters
|
||||
NEW: better currency rate editor
|
||||
NEW: calculate the virtual stock in transverse mode ( not on getEntity('commande'), ... but on getEntity('stock') )
|
||||
NEW: can add event to log into blockedlog module with a constant
|
||||
NEW: can build vendor invoice from vendor orders
|
||||
NEW: can change a product in line of recurring invoice or contract
|
||||
NEW: can change size of logo on PDF documents
|
||||
NEW: can change VAT rate of all lines of a draft object in one step
|
||||
NEW: can define date range of validity of a login during creation
|
||||
NEW: can disable, from edit page, the whole web site
|
||||
NEW: can edit and set sales representatives directly on thirdparty card
|
||||
NEW: Can edit the list of sending email profiles.
|
||||
NEW: Can enable/disable users in bulk actions
|
||||
NEW: Can filter on accounting system ref in export of chart of account
|
||||
NEW: Can filter on container type, language and tags in the list of pages
|
||||
NEW: Can force the antivirus from conf file or autoprepend ini setup.
|
||||
NEW: Can hide eatby, sellby dates with option PRODUCT_DISABLE_SELLBY and PRODUCT_DISABLE_EATBY
|
||||
NEW: Can import proposals, sales orders, supplier invoices
|
||||
NEW: can enable/disable users in bulk actions
|
||||
NEW: can filter on accounting system ref in export of chart of account
|
||||
NEW: can filter on container type, language and tags in the list of pages
|
||||
NEW: can force the antivirus from conf file or autoprepend ini setup
|
||||
NEW: can hide eatby, sellby dates with option PRODUCT_DISABLE_SELLBY and PRODUCT_DISABLE_EATBY
|
||||
NEW: can import proposals, sales orders, supplier invoices
|
||||
NEW: can set a dedicated SMTP config for sending email from public ticket interface
|
||||
NEW: Can set tags/categories to website pages.
|
||||
NEW: Can set type of price without tax per default for new sale price creation
|
||||
NEW: Can use desired stock of a given warehouse for replenishment
|
||||
NEW: Can use THEME_DARKMODEENABLED=2 for a preview of theme in dark mode
|
||||
NEW: change thirdparty with barcode scan in takepos
|
||||
NEW: Common behavior for monthly leave list view
|
||||
NEW: can set tags/categories to website pages
|
||||
NEW: can set type of price without tax per default for new sale price creation
|
||||
NEW: can use desired stock of a given warehouse for replenishment
|
||||
NEW: can use THEME_DARKMODEENABLED=2 for a preview of theme in dark mode
|
||||
NEW: change thirdparty with barcode scan in TakePOS
|
||||
NEW: common behavior for monthly leave list view
|
||||
NEW: conf to allow show full arbo in warehouse getnomurl
|
||||
NEW: convert all subscription in datetime
|
||||
NEW: create thirdparty customer from TAKEPOS
|
||||
NEW: Date shipment from order accepts hours
|
||||
NEW: Declinaison price level compatibility
|
||||
NEW: Delayed payment in TakePOS
|
||||
NEW: Development of module Recruitment
|
||||
NEW: display date range if exist in takepos
|
||||
NEW: display resiliate status in takepos for member
|
||||
NEW: create thirdparty customer from TakePOS
|
||||
NEW: date shipment from order accepts hours
|
||||
NEW: declinaison price level compatibility
|
||||
NEW: delayed payment in TakePOS
|
||||
NEW: development of module Recruitment
|
||||
NEW: display date range if exist in TakePOS
|
||||
NEW: display resiliate status in TakePOS for member
|
||||
NEW: display stat for BOM on "object referent"/linked Object product tab
|
||||
NEW: edit and update a ticket
|
||||
NEW: edit or delete dispatched lines
|
||||
NEW: Email configuration - Allow auto signed certificat when smtp ssl activated
|
||||
NEW: Email configuration - allow auto signed certificat when smtp ssl activated
|
||||
NEW: enable free emails input with select2
|
||||
NEW: endpoint getContacts and Clean results
|
||||
NEW: Events in agenda for contact
|
||||
NEW: Field to link website page to an other object
|
||||
NEW: Fill ECM src object fields in dol_add_file_process
|
||||
NEW: fill ECM src object fields in dol_add_file_process
|
||||
NEW: filter on progress column in task list
|
||||
NEW: filter product list by country and/or state/province
|
||||
NEW: format tickets sent by mail in public interface
|
||||
NEW: add juridical status for Algeria
|
||||
NEW: form to add customer/supplier into categories
|
||||
NEW: Framework is ready for CSRF token protection on explicit GET URLs.
|
||||
NEW: Framework is ready for CSRF token protection on explicit GET URLs
|
||||
NEW: get all child recursively
|
||||
NEW: Get contacts list of a given order
|
||||
NEW: get contacts list of a given order
|
||||
NEW: helper functions for export with phpspreadsheet
|
||||
NEW: hide closed contract lines
|
||||
NEW: hide label in pdf for variants
|
||||
NEW: hide label in PDF for variants
|
||||
NEW: Hook on propal card
|
||||
NEW: If specific help page is available, we change color of icon
|
||||
NEW: Include the tag editor of page as a popup into website editor
|
||||
NEW: Introduce constant FACTUREFOURN_REUSE_NOTES_ON_CREATE_FROM
|
||||
NEW: Introducing new modal boxes in TakePOS
|
||||
NEW: Keep takepos terminal when login/logout
|
||||
NEW: Link on balance to the ledger
|
||||
NEW: if specific help page is available, we change color of icon
|
||||
NEW: include the tag editor of page as a popup into website editor
|
||||
NEW: introduce constant FACTUREFOURN_REUSE_NOTES_ON_CREATE_FROM
|
||||
NEW: introducing new modal boxes in TakePOS
|
||||
NEW: keep TakePOS terminal when login/logout
|
||||
NEW: link on balance to the ledger
|
||||
NEW: MAIN_EMAILCOLLECTOR_MAIL_WITHOUT_HEADER const in email collector
|
||||
NEW: manage errors on update extra fields in ticket card
|
||||
NEW: mass-actions for the event list view
|
||||
NEW: Module Intracomm report
|
||||
NEW: More filter for "View change logs"
|
||||
NEW: multicurrency total in takepos
|
||||
NEW: more filter for "View change logs"
|
||||
NEW: multicurrency total in TakePOS
|
||||
NEW: multiselect type and date to date filter
|
||||
NEW: Nature of product is now a dictionay
|
||||
NEW: new line template: hidden conf to fill service dates from the last service line
|
||||
@ -159,38 +161,38 @@ NEW: possibilty to group payments by mode and show their subtotal
|
||||
NEW: Print payment method and change in TakePOS
|
||||
NEW: Priority and transparency from external calendar events
|
||||
NEW: Products Import/Export 'default warehouse' and 'use batch number' fields
|
||||
NEW: Purchase price table: Added filterable table columns
|
||||
NEW: Purchase price table: added filterable table columns
|
||||
NEW: rate editor for multicurrency
|
||||
NEW: ref_ext field for Commande lines, order lines, Attributes and Combinations, Invoice lines, payments, order lines
|
||||
NEW: remove new lines in mail on add ticket message
|
||||
NEW: restrict thirdparty to customer in takepos
|
||||
NEW: Allow to edit "demand reason" field though API
|
||||
NEW: restrict thirdparty to customer in TakePOS
|
||||
NEW: allow to edit "demand reason" field though API
|
||||
NEW: Rule "email to" accept wildcard *
|
||||
NEW: Save filter of the project homepage
|
||||
NEW: Select-able columns on customer invoice paymnet list
|
||||
NEW: Select-able columns on miscellaneous payments + more data columns
|
||||
NEW: Select-able columns on social taxes list
|
||||
NEW: Select-able columns on supplier invoice payment list
|
||||
NEW: select-able columns on customer invoice paymnet list
|
||||
NEW: select-able columns on miscellaneous payments + more data columns
|
||||
NEW: select-able columns on social taxes list
|
||||
NEW: select-able columns on supplier invoice payment list
|
||||
NEW: send context and remove new lines on create ticket
|
||||
NEW: set entity when creating invoice on takepos
|
||||
NEW: Show available stock in TakePOS
|
||||
NEW: Show category filter on lists only when user have rights to read categories
|
||||
NEW: Show header number and make it clickable in warehouse arean, payment area, shipment area
|
||||
NEW: Show image of user in the combo select of users
|
||||
NEW: Show label on batch card
|
||||
NEW: Show line number on intervention card (via MAIN_VIEW_LINE_NUMBER)
|
||||
NEW: show available stock in TakePOS
|
||||
NEW: show category filter on lists only when user have rights to read categories
|
||||
NEW: show header number and make it clickable in warehouse arean, payment area, shipment area
|
||||
NEW: show image of user in the combo select of users
|
||||
NEW: show label on batch card
|
||||
NEW: show line number on intervention card (via MAIN_VIEW_LINE_NUMBER)
|
||||
NEW: show links for select and multi-select in category extra field
|
||||
NEW: Show module and permission ids on user/group rights (only admin)
|
||||
NEW: Show place from events on import calender
|
||||
NEW: Show references in contract form on interventions
|
||||
NEW: Show tags and status in search list of website pages
|
||||
NEW: Show user on external calender events (when found)
|
||||
NEW: show module and permission ids on user/group rights (only admin)
|
||||
NEW: show place from events on import calender
|
||||
NEW: show references in contract form on interventions
|
||||
NEW: show tags and status in search list of website pages
|
||||
NEW: show user on external calender events (when found)
|
||||
NEW: subject title with company name instead of application title in ticket message
|
||||
NEW: Support for Samba4 AD
|
||||
NEW: TakePOS connector compatibility with RECEIPT PRINTERS module
|
||||
NEW: TakePOS Gift Receipt
|
||||
NEW: TakePOS Multicurrency compatibility
|
||||
NEW: The global header of a website can also have dynamic content
|
||||
NEW: the global header of a website can also have dynamic content
|
||||
NEW: Third-Party Import new fields: mother company,outstanding debt limit,bank account,incoterms
|
||||
NEW: Thirdparty module : box on customer/supplier tab for invoice outsantding amount late
|
||||
NEW: ticket classification on create from email collector
|
||||
@ -199,16 +201,18 @@ NEW: translate classification labels in ticket
|
||||
NEW: triggers create, modify, delete
|
||||
NEW: VAT for Algeria
|
||||
NEW: Use preselect third-party from list on new card
|
||||
NEW: Vat report - Invert constant to show by default zero vat in reports
|
||||
NEW: VAT report - Invert constant to show by default zero vat in reports
|
||||
NEW: website page fields selection
|
||||
NEW: Weighing Scale compatibility with TakePOS connector
|
||||
NEW: When creating a user from a member linked to a thirdparty, you can choose to create if as external or internal user
|
||||
NEW: Add clone functionality on miscellaneous payment
|
||||
NEW: when creating a user from a member linked to a thirdparty, you can choose to create if as external or internal user
|
||||
NEW: add clone functionality on miscellaneous payment
|
||||
|
||||
|
||||
For developers:
|
||||
---------------
|
||||
NEW: Can use dynamic code into the 'enabled' property of DAO fields
|
||||
NEW: API Can update a payment
|
||||
NEW: api get member by thirdparty
|
||||
NEW: API can update a payment
|
||||
NEW: API get member by thirdparty
|
||||
NEW: API get thirdparty by barcode
|
||||
NEW: API get users by email / login
|
||||
NEW: fetch contact by email with REST API
|
||||
@ -216,14 +220,15 @@ NEW: field ref_ext in llx_commandedet
|
||||
NEW: fields ref_ext for Attributes and Combinations
|
||||
NEW: get state by REST API
|
||||
NEW: get state dictionnary by REST API
|
||||
NEW: Improve Product API for variant products
|
||||
NEW: Oauth SCOPE for Admin SDK
|
||||
NEW: Retrieve discount from invoice from API
|
||||
NEW: improve Product API for variant products
|
||||
NEW: OAuth SCOPE for Admin SDK
|
||||
NEW: retrieve discount from invoice from API
|
||||
NEW: standardizes API thirdparties by email like other object
|
||||
NEW: thirdparty REST API: endpoint to set price level
|
||||
NEW: Use new category API for project list view
|
||||
NEW: Thirdparty REST API: endpoint to set price level
|
||||
NEW: use new category API for project list view
|
||||
NEW: Triggers Attributes and Attributes values
|
||||
NEW: Add hooks on newpayment page to allow external payment modules
|
||||
NEW: add hooks on newpayment page to allow external payment modules
|
||||
|
||||
|
||||
WARNING:
|
||||
|
||||
@ -289,6 +294,7 @@ FIX: Visualization rights correction on last modified contacts box
|
||||
FIX: Wrong redirection
|
||||
FIX: Yogosha report 4425 (backport)
|
||||
|
||||
|
||||
***** ChangeLog for 12.0.2 compared to 12.0.1 *****
|
||||
FIX: computation of the bottom margin of <body> returns NaN because body is not loaded yet
|
||||
FIX: DebugBar hides content at page bottom
|
||||
|
||||
@ -1,33 +1,45 @@
|
||||
README (deutsch / german / allemand)
|
||||
--------------------------------
|
||||
------------------------------------
|
||||
|
||||
|
||||
--------------------------------
|
||||
------------------------------------
|
||||
Download / Herunterladen
|
||||
--------------------------------
|
||||
------------------------------------
|
||||
|
||||
* Dolibarr ERP/CRM kann man über die offizielle Dolibarr Website
|
||||
|
||||
https://www.dolibarr.org/downloads
|
||||
oder direkt von Sourceforge
|
||||
|
||||
oder direkt bei Sourceforge
|
||||
|
||||
https://sourceforge.net/projects/dolibarr/files/
|
||||
|
||||
herunterladen.
|
||||
|
||||
|
||||
|
||||
* Die meisten externen Module/Themens sind über den DoliStore verfügbar:
|
||||
https://www.dolistore.com/de/
|
||||
|
||||
|
||||
--------------------------------
|
||||
Installation
|
||||
--------------------------------
|
||||
|
||||
* Für eine kurze Einleitung, schau auf die README Datei im Hauptverzeichnis.
|
||||
------------------------------------
|
||||
Installation / Hilfe
|
||||
------------------------------------
|
||||
|
||||
* Für eine kurze Einleitung schau in die README Datei im Hauptverzeichnis.
|
||||
|
||||
* Umfangreiche Dokumentationen sind im Dolibarr Wiki zu finden:
|
||||
https://wiki.dolibarr.org/index.php/Hauptseite
|
||||
|
||||
* eine Deutsche Community bietet der Dolibarr e.V. unter
|
||||
https://www.dolibarr.de/
|
||||
|
||||
|
||||
|
||||
|
||||
------------------------------------
|
||||
Zusatzmodule
|
||||
------------------------------------
|
||||
|
||||
* Die meisten externen Module/Themen sind über den offiziellen DoliStore verfügbar:
|
||||
|
||||
https://www.dolistore.com/de/
|
||||
|
||||
|
||||
|
||||
|
||||
@ -7,7 +7,8 @@
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2011-2012 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2012 J. Fernando Lagrange <fernando@demo-tic.org>
|
||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||
* Copyright (C) 2020 Frédéric France <frederic.france@netlogic.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -39,7 +40,12 @@ $langs->loadLangs(array("admin", "members"));
|
||||
if (!$user->admin) accessforbidden();
|
||||
|
||||
|
||||
$type = array('yesno', 'texte', 'chaine');
|
||||
$choices = array('yesno', 'texte', 'chaine');
|
||||
|
||||
$value = GETPOST('value', 'alpha');
|
||||
$label = GETPOST('label', 'alpha');
|
||||
$scandir = GETPOST('scandir', 'alpha');
|
||||
$type = 'member';
|
||||
|
||||
$action = GETPOST('action', 'aZ09');
|
||||
|
||||
@ -48,8 +54,50 @@ $action = GETPOST('action', 'aZ09');
|
||||
* Actions
|
||||
*/
|
||||
|
||||
//
|
||||
if ($action == 'updateall') {
|
||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||
|
||||
if ($action == 'set_default') {
|
||||
$ret = addDocumentModel($value, $type, $label, $scandir);
|
||||
$res = true;
|
||||
} elseif ($action == 'del_default') {
|
||||
$ret = delDocumentModel($value, $type);
|
||||
if ($ret > 0) {
|
||||
if ($conf->global->MEMBER_ADDON_PDF_ODT == "$value") {
|
||||
dolibarr_del_const($db, 'MEMBER_ADDON_PDF_ODT', $conf->entity);
|
||||
}
|
||||
}
|
||||
$res = true;
|
||||
} elseif ($action == 'setdoc') {
|
||||
// Set default model
|
||||
if (dolibarr_set_const($db, "MEMBER_ADDON_PDF_ODT", $value, 'chaine', 0, '', $conf->entity)) {
|
||||
// La constante qui a ete lue en avant du nouveau set
|
||||
// on passe donc par une variable pour avoir un affichage coherent
|
||||
$conf->global->MEMBER_ADDON_PDF_ODT = $value;
|
||||
}
|
||||
|
||||
// On active le modele
|
||||
$ret = delDocumentModel($value, $type);
|
||||
if ($ret > 0) {
|
||||
$ret = addDocumentModel($value, $type, $label, $scandir);
|
||||
}
|
||||
$res = true;
|
||||
} elseif (preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) {
|
||||
$code = $reg[1];
|
||||
if (dolibarr_set_const($db, $code, 1, 'chaine', 0, '', $conf->entity) > 0) {
|
||||
header("Location: ".$_SERVER["PHP_SELF"]);
|
||||
exit;
|
||||
} else {
|
||||
dol_print_error($db);
|
||||
}
|
||||
} elseif (preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) {
|
||||
$code = $reg[1];
|
||||
if (dolibarr_del_const($db, $code, $conf->entity) > 0) {
|
||||
header("Location: ".$_SERVER["PHP_SELF"]);
|
||||
exit;
|
||||
} else {
|
||||
dol_print_error($db);
|
||||
}
|
||||
} elseif ($action == 'updateall') {
|
||||
$db->begin();
|
||||
$res1 = $res2 = $res3 = $res4 = $res5 = $res6 = 0;
|
||||
$res1 = dolibarr_set_const($db, 'ADHERENT_LOGIN_NOT_REQUIRED', GETPOST('ADHERENT_LOGIN_NOT_REQUIRED', 'alpha') ? 0 : 1, 'chaine', 0, '', $conf->entity);
|
||||
@ -86,7 +134,7 @@ if ($action == 'update' || $action == 'add') {
|
||||
|
||||
$consttype = GETPOST('consttype', 'alpha');
|
||||
$constnote = GETPOST('constnote');
|
||||
$res = dolibarr_set_const($db, $constname, $constvalue, $type[$consttype], 0, $constnote, $conf->entity);
|
||||
$res = dolibarr_set_const($db, $constname, $constvalue, $choices[$consttype], 0, $constnote, $conf->entity);
|
||||
|
||||
if (!$res > 0) $error++;
|
||||
|
||||
@ -245,6 +293,137 @@ $helptext .= '__COMPANY__, __ADDRESS__, __ZIP__, __TOWN__, __COUNTRY__, __EMAIL_
|
||||
$helptext .= '__YEAR__, __MONTH__, __DAY__';
|
||||
|
||||
form_constantes($constantes, 0, $helptext);
|
||||
$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
|
||||
|
||||
// Defini tableau def des modeles
|
||||
$def = array();
|
||||
$sql = "SELECT nom";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."document_model";
|
||||
$sql .= " WHERE type = '".$db->escape($type)."'";
|
||||
$sql .= " AND entity = ".$conf->entity;
|
||||
$resql = $db->query($sql);
|
||||
if ($resql) {
|
||||
$i = 0;
|
||||
$num_rows = $db->num_rows($resql);
|
||||
while ($i < $num_rows) {
|
||||
$array = $db->fetch_array($resql);
|
||||
array_push($def, $array[0]);
|
||||
$i++;
|
||||
}
|
||||
} else {
|
||||
dol_print_error($db);
|
||||
}
|
||||
|
||||
print load_fiche_titre($langs->trans("MembersDocModules"), '', '');
|
||||
|
||||
print '<table class="noborder centpercent">';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td>'.$langs->trans("Name").'</td>';
|
||||
print '<td>'.$langs->trans("Description").'</td>';
|
||||
print '<td align="center" width="60">'.$langs->trans("Status")."</td>\n";
|
||||
print '<td align="center" width="60">'.$langs->trans("Default")."</td>\n";
|
||||
print '<td align="center" width="80">'.$langs->trans("ShortInfo").'</td>';
|
||||
print '<td align="center" width="80">'.$langs->trans("Preview").'</td>';
|
||||
print "</tr>\n";
|
||||
|
||||
clearstatcache();
|
||||
|
||||
foreach ($dirmodels as $reldir) {
|
||||
foreach (array('', '/doc') as $valdir) {
|
||||
$dir = dol_buildpath($reldir."core/modules/member".$valdir);
|
||||
if (is_dir($dir)) {
|
||||
$handle = opendir($dir);
|
||||
if (is_resource($handle)) {
|
||||
while (($file = readdir($handle)) !== false) {
|
||||
$filelist[] = $file;
|
||||
}
|
||||
closedir($handle);
|
||||
arsort($filelist);
|
||||
foreach ($filelist as $file) {
|
||||
if (preg_match('/\.class\.php$/i', $file) && preg_match('/^(pdf_|doc_)/', $file)) {
|
||||
if (file_exists($dir.'/'.$file)) {
|
||||
$name = substr($file, 4, dol_strlen($file) - 14);
|
||||
$classname = substr($file, 0, dol_strlen($file) - 10);
|
||||
|
||||
require_once $dir.'/'.$file;
|
||||
$module = new $classname($db);
|
||||
|
||||
$modulequalified = 1;
|
||||
if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) $modulequalified = 0;
|
||||
if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) {
|
||||
$modulequalified = 0;
|
||||
}
|
||||
|
||||
if ($modulequalified) {
|
||||
print '<tr class="oddeven"><td width="100">';
|
||||
print (empty($module->name) ? $name : $module->name);
|
||||
print "</td><td>\n";
|
||||
if (method_exists($module, 'info')) {
|
||||
print $module->info($langs);
|
||||
} else {
|
||||
print $module->description;
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
// Active
|
||||
if (in_array($name, $def)) {
|
||||
print '<td class="center">'."\n";
|
||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=del_default&token='.newToken().'&value='.$name.'">';
|
||||
print img_picto($langs->trans("Enabled"), 'switch_on');
|
||||
print '</a>';
|
||||
print '</td>';
|
||||
} else {
|
||||
print '<td class="center">'."\n";
|
||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=set_default&token='.newToken().'&value='.$name.'&scandir='.$module->scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').'</a>';
|
||||
print "</td>";
|
||||
}
|
||||
|
||||
// Defaut
|
||||
print '<td class="center">';
|
||||
if ($conf->global->MEMBER_ADDON_PDF == $name) {
|
||||
print img_picto($langs->trans("Default"), 'on');
|
||||
} else {
|
||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setdoc&token='.newToken().'&value='.$name.'&scandir='.$module->scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').'</a>';
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
// Info
|
||||
$htmltooltip = ''.$langs->trans("Name").': '.$module->name;
|
||||
$htmltooltip .= '<br>'.$langs->trans("Type").': '.($module->type ? $module->type : $langs->trans("Unknown"));
|
||||
if ($module->type == 'pdf') {
|
||||
$htmltooltip .= '<br>'.$langs->trans("Width").'/'.$langs->trans("Height").': '.$module->page_largeur.'/'.$module->page_hauteur;
|
||||
}
|
||||
$htmltooltip .= '<br><br><u>'.$langs->trans("FeaturesSupported").':</u>';
|
||||
$htmltooltip .= '<br>'.$langs->trans("Logo").': '.yn($module->option_logo, 1, 1);
|
||||
$htmltooltip .= '<br>'.$langs->trans("MultiLanguage").': '.yn($module->option_multilang, 1, 1);
|
||||
|
||||
|
||||
print '<td class="center">';
|
||||
print $form->textwithpicto('', $htmltooltip, 1, 0);
|
||||
print '</td>';
|
||||
|
||||
// Preview
|
||||
print '<td class="center">';
|
||||
if ($module->type == 'pdf')
|
||||
{
|
||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=specimen&module='.$name.'">'.img_object($langs->trans("Preview"), 'contract').'</a>';
|
||||
} else {
|
||||
print img_object($langs->trans("PreviewNotAvailable"), 'generic');
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
print "</tr>\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print '</table>';
|
||||
print "<br>";
|
||||
|
||||
print dol_get_fiche_end();
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
* Copyright (C) 2012 Marcos García <marcosgdf@gmail.com>
|
||||
* Copyright (C) 2012-2020 Philippe Grand <philippe.grand@atoo-net.com>
|
||||
* Copyright (C) 2015-2018 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -1564,7 +1564,9 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
||||
$form->form_users($_SERVER['PHP_SELF'].'?rowid='.$object->id, $object->user_id, 'userid', '');
|
||||
} else {
|
||||
if ($object->user_id) {
|
||||
$form->form_users($_SERVER['PHP_SELF'].'?rowid='.$object->id, $object->user_id, 'none');
|
||||
$linkeduser = new User($db);
|
||||
$linkeduser->fetch($object->user_id);
|
||||
print $linkeduser->getNomUrl(-1);
|
||||
} else {
|
||||
print $langs->trans("NoDolibarrAccess");
|
||||
}
|
||||
|
||||
@ -37,7 +37,8 @@ require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent_type.class.php';
|
||||
$langs->loadLangs(array("companies", "members", "other"));
|
||||
|
||||
|
||||
$id = GETPOST('id', 'int');
|
||||
$id = GETPOSTISSET('id') ? GETPOST('id', 'int') : GETPOST('rowid', 'int');
|
||||
$ref = GETPOST('ref', 'alphanohtml');
|
||||
$action = GETPOST('action', 'aZ09');
|
||||
$confirm = GETPOST('confirm', 'alpha');
|
||||
|
||||
@ -60,7 +61,7 @@ if (!$sortfield) $sortfield = "name";
|
||||
$form = new Form($db);
|
||||
$object = new Adherent($db);
|
||||
$membert = new AdherentType($db);
|
||||
$result = $object->fetch($id);
|
||||
$result = $object->fetch($id, $ref);
|
||||
if ($result < 0) {
|
||||
dol_print_error($db);
|
||||
exit;
|
||||
|
||||
@ -252,7 +252,7 @@ class PrestaShopWebservice
|
||||
* Examples are given in the tutorial</p>
|
||||
*
|
||||
* @param array $options Options
|
||||
* @return SimpleXMLElement status_code, response
|
||||
* @return SimpleXMLElement|boolean status_code, response
|
||||
*
|
||||
* @throw PrestaShopWebserviceException
|
||||
*/
|
||||
@ -379,7 +379,7 @@ class PrestaShopWebservice
|
||||
* Examples are given in the tutorial</p>
|
||||
*
|
||||
* @param array $options Array representing resource to edit.
|
||||
* @return SimpleXMLElement status_code, response
|
||||
* @return SimpleXMLElement|boolean status_code, response
|
||||
*
|
||||
* @throw PrestaShopWebserviceException
|
||||
*/
|
||||
|
||||
@ -69,8 +69,7 @@ $extrafields->fetch_name_optionals_label($object->table_element);
|
||||
// Load object
|
||||
include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals
|
||||
|
||||
//if ($id > 0 || ! empty($ref)) $upload_dir = $conf->bom->multidir_output[$object->entity?$object->entity:1] . "/bom/" . dol_sanitizeFileName($object->id);
|
||||
if ($id > 0 || !empty($ref)) $upload_dir = $conf->bom->multidir_output[$object->entity ? $object->entity : 1]."/bom/".dol_sanitizeFileName($object->ref);
|
||||
if ($id > 0 || !empty($ref)) $upload_dir = $conf->bom->multidir_output[$object->entity ? $object->entity : 1]."/bom/".get_exdir(0, 0, 0, 1, $object);
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@ -153,7 +153,7 @@ if ($action == 'create')
|
||||
|
||||
print '<table class="border centpercent tableforfieldcreate">';
|
||||
|
||||
print '<tr><td class="titlefieldcreate fieldrequired">'.$langs->trans("BookmarkTitle").'</td><td><input id="titlebookmark" class="flat minwidth100" name="title" value="'.$title.'"></td><td class="hideonsmartphone">'.$langs->trans("SetHereATitleForLink").'</td></tr>';
|
||||
print '<tr><td class="titlefieldcreate fieldrequired">'.$langs->trans("BookmarkTitle").'</td><td><input id="titlebookmark" class="flat minwidth300" name="title" value="'.dol_escape_htmltag($title).'"></td><td class="hideonsmartphone">'.$langs->trans("SetHereATitleForLink").'</td></tr>';
|
||||
dol_set_focus('#titlebookmark');
|
||||
|
||||
// Url
|
||||
@ -167,12 +167,12 @@ if ($action == 'create')
|
||||
|
||||
// Owner
|
||||
print '<tr><td>'.$langs->trans("Owner").'</td><td>';
|
||||
print img_picto('', 'user').' '.$form->select_dolusers(isset($_POST['userid']) ? $_POST['userid'] : $user->id, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300');
|
||||
print img_picto('', 'user').' '.$form->select_dolusers(GETPOSTISSET('userid') ? GETPOST('userid', 'int') : $user->id, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300');
|
||||
print '</td><td class="hideonsmartphone"> </td></tr>';
|
||||
|
||||
// Position
|
||||
print '<tr><td>'.$langs->trans("Position").'</td><td>';
|
||||
print '<input class="flat" name="position" size="5" value="'.(isset($_POST["position"]) ? $_POST["position"] : $object->position).'">';
|
||||
print '<input class="flat" name="position" size="5" value="'.(GETPOSTISSET("position") ? GETPOST("position", 'int') : $object->position).'">';
|
||||
print '</td><td class="hideonsmartphone"> </td></tr>';
|
||||
|
||||
print '</table>';
|
||||
@ -238,7 +238,7 @@ if ($id > 0 && !preg_match('/^add/i', $action))
|
||||
}
|
||||
|
||||
print '</td><td>';
|
||||
if ($action == 'edit') print '<input class="flat minwidth200" name="title" value="'.(isset($_POST["title"]) ?GETPOST("title", '', 2) : $object->title).'">';
|
||||
if ($action == 'edit') print '<input class="flat minwidth300" name="title" value="'.(GETPOSTISSET("title") ? GETPOST("title", '', 2) : $object->title).'">';
|
||||
else print $object->title;
|
||||
print '</td></tr>';
|
||||
|
||||
@ -251,7 +251,7 @@ if ($id > 0 && !preg_match('/^add/i', $action))
|
||||
print '</span>';
|
||||
}
|
||||
print '</td><td>';
|
||||
if ($action == 'edit') print '<input class="flat minwidth500" name="url" value="'.(isset($_POST["url"]) ? $_POST["url"] : $object->url).'">';
|
||||
if ($action == 'edit') print '<input class="flat minwidth500 quatrevingtpercent" name="url" value="'.(GETPOSTISSET("url") ? GETPOST("url") : $object->url).'">';
|
||||
else print '<a href="'.(preg_match('/^http/i', $object->url) ? $object->url : DOL_URL_ROOT.$object->url).'"'.($object->target ? ' target="_blank"' : '').'>'.$object->url.'</a>';
|
||||
print '</td></tr>';
|
||||
|
||||
@ -259,7 +259,7 @@ if ($id > 0 && !preg_match('/^add/i', $action))
|
||||
if ($action == 'edit')
|
||||
{
|
||||
$liste = array(1=>$langs->trans("OpenANewWindow"), 0=>$langs->trans("ReplaceWindow"));
|
||||
print $form->selectarray('target', $liste, isset($_POST["target"]) ? $_POST["target"] : $object->target);
|
||||
print $form->selectarray('target', $liste, GETPOSTISSET("target") ? GETPOST("target") : $object->target);
|
||||
} else {
|
||||
if ($object->target == 0) print $langs->trans("ReplaceWindow");
|
||||
if ($object->target == 1) print $langs->trans("OpenANewWindow");
|
||||
@ -269,7 +269,7 @@ if ($id > 0 && !preg_match('/^add/i', $action))
|
||||
print '<tr><td>'.$langs->trans("Owner").'</td><td>';
|
||||
if ($action == 'edit' && $user->admin)
|
||||
{
|
||||
print img_picto('', 'user').' '.$form->select_dolusers(isset($_POST['userid']) ? $_POST['userid'] : ($object->fk_user ? $object->fk_user : ''), 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300');
|
||||
print img_picto('', 'user').' '.$form->select_dolusers(GETPOSTISSET('userid') ? GETPOST('userid', 'int') : ($object->fk_user ? $object->fk_user : ''), 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300');
|
||||
} else {
|
||||
if ($object->fk_user > 0)
|
||||
{
|
||||
@ -284,7 +284,7 @@ if ($id > 0 && !preg_match('/^add/i', $action))
|
||||
|
||||
// Position
|
||||
print '<tr><td>'.$langs->trans("Position").'</td><td>';
|
||||
if ($action == 'edit') print '<input class="flat" name="position" size="5" value="'.(isset($_POST["position"]) ? $_POST["position"] : $object->position).'">';
|
||||
if ($action == 'edit') print '<input class="flat" name="position" size="5" value="'.(GETPOSTISSET("position") ? GETPOST("position", 'int') : $object->position).'">';
|
||||
else print $object->position;
|
||||
print '</td></tr>';
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
/* Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
/* Copyright (C) 2005-2020 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
*
|
||||
* 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
|
||||
@ -197,14 +197,14 @@ while ($i < min($num, $limit))
|
||||
// Title
|
||||
print "<td>";
|
||||
$linkintern = 1;
|
||||
if ($linkintern) print "<a href=\"".$obj->url."\">";
|
||||
if ($linkintern) print '<a href="'.$obj->url.'">';
|
||||
print $title;
|
||||
if ($linkintern) print "</a>";
|
||||
print "</td>\n";
|
||||
|
||||
// Url
|
||||
print '<td class="tdoverflowmax200">';
|
||||
if (!$linkintern) print '<a href="'.$obj->url.'"'.($obj->target ? ' target="newlink"' : '').'>';
|
||||
if (!$linkintern) print '<a href="'.$obj->url.'"'.($obj->target ? ' target="newlink" rel="noopener"' : '').'>';
|
||||
print $link;
|
||||
if (!$linkintern) print '</a>';
|
||||
print "</td>\n";
|
||||
@ -241,7 +241,7 @@ while ($i < min($num, $limit))
|
||||
print '<td class="nowrap right">';
|
||||
if ($user->rights->bookmark->creer)
|
||||
{
|
||||
print '<a class="editfielda" href="'.DOL_URL_ROOT."/bookmarks/card.php?action=edit&token='.newToken().'&id=".$obj->rowid."&backtopage=".urlencode($_SERVER["PHP_SELF"]).'">'.img_edit()."</a>";
|
||||
print '<a class="editfielda" href="'.DOL_URL_ROOT.'/bookmarks/card.php?action=edit&token='.newToken().'&id='.$obj->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"]).'">'.img_edit()."</a>";
|
||||
}
|
||||
if ($user->rights->bookmark->supprimer)
|
||||
{
|
||||
|
||||
@ -32,7 +32,7 @@ $conf_db_base = $dolibarr_main_db_name;
|
||||
$conf_fksoc = (!empty($_SESSION["CASHDESK_ID_THIRDPARTY"])) ? $_SESSION["CASHDESK_ID_THIRDPARTY"] : ($conf->global->CASHDESK_ID_THIRDPARTY > 0 ? $conf->global->CASHDESK_ID_THIRDPARTY : 0);
|
||||
// Identifiant unique correspondant a l'entrepot a utiliser
|
||||
$conf_fkentrepot = (!empty($_SESSION["CASHDESK_ID_WAREHOUSE"])) ? $_SESSION["CASHDESK_ID_WAREHOUSE"] : ($conf->global->CASHDESK_ID_WAREHOUSE > 0 ? $conf->global->CASHDESK_ID_WAREHOUSE : 0);
|
||||
if (!empty($conf->global->CASHDESK_NO_DECREASE_STOCK)) $conf_fkentrepot = 0; // If option to disable stock decrease is on, we set warehouse id to 0.
|
||||
if (!empty($conf->global->CASHDESK_NO_DECREASE_STOCK)) $conf_fkentrepot = 0; // If option to disable the stock decrease is on, we set warehouse id to 0.
|
||||
|
||||
// Identifiant unique correspondant au compte caisse / liquide
|
||||
$conf_fkaccount_cash = (!empty($_SESSION["CASHDESK_ID_BANKACCOUNT_CASH"])) ? $_SESSION["CASHDESK_ID_BANKACCOUNT_CASH"] : ($conf->global->CASHDESK_ID_BANKACCOUNT_CASH > 0 ? $conf->global->CASHDESK_ID_BANKACCOUNT_CASH : 0);
|
||||
@ -46,6 +46,3 @@ $conf_fkaccount_cb = (!empty($_SESSION["CASHDESK_ID_BANKACCOUNT_CB"])) ? $_SESSI
|
||||
// View parameters
|
||||
$conf_taille_listes = (empty($conf->global->PRODUIT_LIMIT_SIZE) ? 1000 : $conf->global->PRODUIT_LIMIT_SIZE); // Number max of lines to show in lists
|
||||
$conf_nbr_car_listes = 60; // Nombre max de caracteres par ligne dans les listes
|
||||
|
||||
// Add hidden option to force decrease of stock whatever is user setup
|
||||
if (!empty($conf->global->CASHDESK_FORCE_STOCK_ON_BILL)) $conf->global->STOCK_CALCULATE_ON_BILL = 1;
|
||||
|
||||
@ -171,13 +171,14 @@ if (empty($reshook))
|
||||
GETPOST('date_deliveryday', 'int'),
|
||||
GETPOST('date_deliveryyear', 'int')
|
||||
);
|
||||
if (!empty($object->date_livraison) && !empty($date_delivery))
|
||||
$date_delivery_old = (empty($object->delivery_date) ? $object->date_livraison : $object->delivery_date);
|
||||
if (!empty($date_delivery_old) && !empty($date_delivery))
|
||||
{
|
||||
//Attempt to get the date without possible hour rounding errors
|
||||
$old_date_delivery = dol_mktime(12, 0, 0,
|
||||
dol_print_date($object->date_livraison, '%m'),
|
||||
dol_print_date($object->date_livraison, '%d'),
|
||||
dol_print_date($object->date_livraison, '%Y')
|
||||
dol_print_date($date_delivery_old, '%m'),
|
||||
dol_print_date($date_delivery_old, '%d'),
|
||||
dol_print_date($date_delivery_old, '%Y')
|
||||
);
|
||||
//Calculate the difference and apply if necessary
|
||||
$difference = $date_delivery - $old_date_delivery;
|
||||
@ -341,7 +342,9 @@ if (empty($reshook))
|
||||
if ($object->fetch(GETPOST('copie_propal', 'int')) > 0) {
|
||||
$object->ref = GETPOST('ref');
|
||||
$object->datep = $datep;
|
||||
$object->date_livraison = $date_delivery;
|
||||
$object->date = $datep;
|
||||
$object->date_livraison = $date_delivery; // deprecated
|
||||
$object->delivery_date = $date_delivery;
|
||||
$object->availability_id = GETPOST('availability_id');
|
||||
$object->demand_reason_id = GETPOST('demand_reason_id');
|
||||
$object->fk_delivery_address = GETPOST('fk_address', 'int');
|
||||
@ -355,8 +358,9 @@ if (empty($reshook))
|
||||
$object->socid = GETPOST('socid', 'int');
|
||||
$object->contact_id = GETPOST('contactid', 'int');
|
||||
$object->fk_project = GETPOST('projectid', 'int');
|
||||
$object->model_pdf = GETPOST('model');
|
||||
$object->model_pdf = GETPOST('model', 'alphanohtml');
|
||||
$object->author = $user->id; // deprecated
|
||||
$object->user_author_id = $user->id;
|
||||
$object->note_private = GETPOST('note_private', 'restricthtml');
|
||||
$object->note_public = GETPOST('note_public', 'restricthtml');
|
||||
$object->statut = Propal::STATUS_DRAFT;
|
||||
@ -372,7 +376,9 @@ if (empty($reshook))
|
||||
$object->ref = GETPOST('ref');
|
||||
$object->ref_client = GETPOST('ref_client');
|
||||
$object->datep = $datep;
|
||||
$object->date = $datep;
|
||||
$object->date_livraison = $date_delivery;
|
||||
$object->delivery_date = $date_delivery;
|
||||
$object->availability_id = GETPOST('availability_id', 'int');
|
||||
$object->demand_reason_id = GETPOST('demand_reason_id', 'int');
|
||||
$object->fk_delivery_address = GETPOST('fk_address', 'int');
|
||||
@ -1823,8 +1829,8 @@ if ($action == 'create')
|
||||
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1),
|
||||
array('type' => 'other', 'name' => 'socid', 'label' => $langs->trans("SelectThirdParty"), 'value' => $form->select_company(GETPOST('socid', 'int'), 'socid', '(s.client=1 OR s.client=2 OR s.client=3)'))
|
||||
);
|
||||
if (!empty($conf->global->PROPAL_CLONE_DATE_DELIVERY) && !empty($object->date_livraison)) {
|
||||
$formquestion[] = array('type' => 'date', 'name' => 'date_delivery', 'label' => $langs->trans("DeliveryDate"), 'value' => $object->date_livraison);
|
||||
if (!empty($conf->global->PROPAL_CLONE_DATE_DELIVERY) && !empty($object->delivery_date)) {
|
||||
$formquestion[] = array('type' => 'date', 'name' => 'date_delivery', 'label' => $langs->trans("DeliveryDate"), 'value' => $object->delivery_date);
|
||||
}
|
||||
// Incomplete payment. We ask if reason = discount or other
|
||||
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmClonePropal', $object->ref), 'confirm_clone', $formquestion, 'yes', 1);
|
||||
@ -2048,9 +2054,9 @@ if ($action == 'create')
|
||||
// Delivery date
|
||||
$langs->load('deliveries');
|
||||
print '<tr><td>';
|
||||
print $form->editfieldkey($langs->trans('DeliveryDate'), 'date_livraison', $object->date_livraison, $object, $usercancreate, 'datepicker');
|
||||
print $form->editfieldkey($langs->trans('DeliveryDate'), 'date_livraison', $object->delivery_date, $object, $usercancreate, 'datepicker');
|
||||
print '</td><td>';
|
||||
print $form->editfieldval($langs->trans('DeliveryDate'), 'date_livraison', $object->date_livraison, $object, $usercancreate, 'datepicker');
|
||||
print $form->editfieldval($langs->trans('DeliveryDate'), 'date_livraison', $object->delivery_date, $object, $usercancreate, 'datepicker');
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
|
||||
|
||||
@ -991,6 +991,9 @@ class Propal extends CommonObject
|
||||
$this->multicurrency_tx = 1;
|
||||
}
|
||||
|
||||
// Set tmp vars
|
||||
$delivery_date = empty($this->delivery_date) ? $this->date_livraison : $this->delivery_date;
|
||||
|
||||
dol_syslog(get_class($this)."::create");
|
||||
|
||||
// Check parameters
|
||||
@ -1078,7 +1081,7 @@ class Propal extends CommonObject
|
||||
$sql .= ", ".($this->mode_reglement_id > 0 ? $this->mode_reglement_id : 'NULL');
|
||||
$sql .= ", ".($this->fk_account > 0 ? $this->fk_account : 'NULL');
|
||||
$sql .= ", '".$this->db->escape($this->ref_client)."'";
|
||||
$sql .= ", ".($this->date_livraison != '' ? "'".$this->db->idate($this->date_livraison)."'" : "NULL");
|
||||
$sql .= ", ".(empty($delivery_date) ? "NULL" : "'".$this->db->idate($delivery_date)."'");
|
||||
$sql .= ", ".($this->shipping_method_id > 0 ? $this->shipping_method_id : 'NULL');
|
||||
$sql .= ", ".$this->availability_id;
|
||||
$sql .= ", ".$this->demand_reason_id;
|
||||
@ -1441,7 +1444,7 @@ class Propal extends CommonObject
|
||||
$sql .= ", p.date_valid as datev";
|
||||
$sql .= ", p.datep as dp";
|
||||
$sql .= ", p.fin_validite as dfv";
|
||||
$sql .= ", p.date_livraison as date_livraison";
|
||||
$sql .= ", p.date_livraison as delivery_date";
|
||||
$sql .= ", p.model_pdf, p.last_main_doc, p.ref_client, p.extraparams";
|
||||
$sql .= ", p.note_private, p.note_public";
|
||||
$sql .= ", p.fk_projet as fk_project, p.fk_statut";
|
||||
@ -1523,8 +1526,8 @@ class Propal extends CommonObject
|
||||
$this->date = $this->db->jdate($obj->dp); // Proposal date
|
||||
$this->datep = $this->db->jdate($obj->dp); // deprecated
|
||||
$this->fin_validite = $this->db->jdate($obj->dfv);
|
||||
$this->date_livraison = $this->db->jdate($obj->date_livraison);
|
||||
$this->delivery_date = $this->db->jdate($obj->date_livraison);
|
||||
$this->date_livraison = $this->db->jdate($obj->delivery_date); // deprecated
|
||||
$this->delivery_date = $this->db->jdate($obj->delivery_date);
|
||||
$this->shipping_method_id = ($obj->fk_shipping_method > 0) ? $obj->fk_shipping_method : null;
|
||||
$this->availability_id = $obj->fk_availability;
|
||||
$this->availability_code = $obj->availability_code;
|
||||
@ -2111,7 +2114,7 @@ class Propal extends CommonObject
|
||||
{
|
||||
$this->oldcopy = clone $this;
|
||||
$this->date_livraison = $delivery_date;
|
||||
$this->date_delivery = $delivery_date;
|
||||
$this->delivery_date = $delivery_date;
|
||||
}
|
||||
|
||||
if (!$notrigger && empty($error))
|
||||
@ -3574,16 +3577,24 @@ class Propal extends CommonObject
|
||||
if (isset($this->statut)) {
|
||||
$label .= ' '.$this->getLibStatut(5);
|
||||
}
|
||||
if (!empty($this->ref))
|
||||
if (!empty($this->ref)) {
|
||||
$label .= '<br><b>'.$langs->trans('Ref').':</b> '.$this->ref;
|
||||
if (!empty($this->ref_client))
|
||||
}
|
||||
if (!empty($this->ref_client)) {
|
||||
$label .= '<br><b>'.$langs->trans('RefCustomer').':</b> '.$this->ref_client;
|
||||
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);
|
||||
if (!empty($this->total_tva))
|
||||
}
|
||||
if (!empty($this->total_tva)) {
|
||||
$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);
|
||||
}
|
||||
if (!empty($this->delivery_date)) {
|
||||
$label .= '<br><b>'.$langs->trans('DeliveryDate').':</b> '.dol_print_date($this->delivery_date, 'dayhour');
|
||||
}
|
||||
|
||||
if ($option == '') {
|
||||
$url = DOL_URL_ROOT.'/comm/propal/card.php?id='.$this->id.$get_params;
|
||||
|
||||
@ -120,6 +120,8 @@ if (!empty($conf->expedition->enabled) && !empty($conf->global->WAREHOUSE_ASK_WA
|
||||
|
||||
$error = 0;
|
||||
|
||||
$date_delivery = dol_mktime(GETPOST('liv_hour', 'int'), GETPOST('liv_min', 'int'), 0, GETPOST('liv_month', 'int'), GETPOST('liv_day', 'int'), GETPOST('liv_year', 'int'));
|
||||
|
||||
|
||||
/*
|
||||
* Actions
|
||||
@ -274,7 +276,7 @@ if (empty($reshook))
|
||||
$object->fk_account = GETPOST('fk_account', 'int');
|
||||
$object->availability_id = GETPOST('availability_id');
|
||||
$object->demand_reason_id = GETPOST('demand_reason_id');
|
||||
$object->date_livraison = $datelivraison;
|
||||
$object->date_livraison = $datelivraison; // deprecated
|
||||
$object->delivery_date = $datelivraison;
|
||||
$object->shipping_method_id = GETPOST('shipping_method_id', 'int');
|
||||
$object->warehouse_id = GETPOST('warehouse_id', 'int');
|
||||
@ -539,10 +541,10 @@ if (empty($reshook))
|
||||
}
|
||||
} elseif ($action == 'setdate_livraison' && $usercancreate) {
|
||||
// print "x ".$_POST['liv_month'].", ".$_POST['liv_day'].", ".$_POST['liv_year'];
|
||||
$datedelivery = dol_mktime(GETPOST('liv_hour', 'int'), GETPOST('liv_min', 'int'), 0, GETPOST('liv_month', 'int'), GETPOST('liv_day', 'int'), GETPOST('liv_year', 'int'));
|
||||
$date_delivery = dol_mktime(GETPOST('liv_hour', 'int'), GETPOST('liv_min', 'int'), 0, GETPOST('liv_month', 'int'), GETPOST('liv_day', 'int'), GETPOST('liv_year', 'int'));
|
||||
|
||||
$object->fetch($id);
|
||||
$result = $object->setDeliveryDate($user, $datedelivery);
|
||||
$result = $object->setDeliveryDate($user, $date_delivery);
|
||||
if ($result < 0) {
|
||||
setEventMessages($object->error, $object->errors, 'errors');
|
||||
}
|
||||
@ -1507,7 +1509,8 @@ if ($action == 'create' && $usercancreate)
|
||||
$remise_absolue = (!empty($objectsrc->remise_absolue) ? $objectsrc->remise_absolue : (!empty($soc->remise_absolue) ? $soc->remise_absolue : 0));
|
||||
$dateorder = empty($conf->global->MAIN_AUTOFILL_DATE_ORDER) ?-1 : '';
|
||||
|
||||
$datedelivery = (!empty($objectsrc->date_livraison) ? $objectsrc->date_livraison : '');
|
||||
$date_delivery = (!empty($objectsrc->delivery_date) ? $objectsrc->delivery_date : '');
|
||||
if (empty($date_delivery)) $date_delivery = (!empty($objectsrc->date_livraison) ? $objectsrc->date_livraison : '');
|
||||
|
||||
if (!empty($conf->multicurrency->enabled))
|
||||
{
|
||||
@ -1620,8 +1623,7 @@ if ($action == 'create' && $usercancreate)
|
||||
// Date delivery planned
|
||||
print '<tr><td>'.$langs->trans("DateDeliveryPlanned").'</td>';
|
||||
print '<td colspan="3">';
|
||||
//print dol_print_date($object->date_livraison, "day"); // date_livraison come from order and will be stored into date_delivery planed.
|
||||
$date_delivery = ($date_delivery ? $date_delivery : $object->date_livraison); // $date_delivery comes from GETPOST
|
||||
$date_delivery = ($date_delivery ? $date_delivery : $object->date_delivery);
|
||||
print $form->selectDate($date_delivery ? $date_delivery : -1, 'date_delivery', 1, 1, 1);
|
||||
print "</td>\n";
|
||||
print '</tr>';
|
||||
@ -2138,12 +2140,12 @@ if ($action == 'create' && $usercancreate)
|
||||
print '<form name="setdate_livraison" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'" method="post">';
|
||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||
print '<input type="hidden" name="action" value="setdate_livraison">';
|
||||
print $form->selectDate($object->date_livraison ? $object->date_livraison : -1, 'liv_', 1, 1, '', "setdate_livraison", 1, 0);
|
||||
print $form->selectDate($object->delivery_date ? $object->delivery_date : -1, 'liv_', 1, 1, '', "setdate_livraison", 1, 0);
|
||||
print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">';
|
||||
print '</form>';
|
||||
} else {
|
||||
print $object->date_livraison ? dol_print_date($object->date_livraison, 'dayhour') : ' ';
|
||||
if ($object->hasDelay() && !empty($object->date_livraison)) {
|
||||
print $object->delivery_date ? dol_print_date($object->delivery_date, 'dayhour') : ' ';
|
||||
if ($object->hasDelay() && !empty($object->delivery_date)) {
|
||||
print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning");
|
||||
}
|
||||
}
|
||||
|
||||
@ -886,8 +886,9 @@ class Commande extends CommonOrder
|
||||
// Clean parameters
|
||||
$this->brouillon = 1; // set command as draft
|
||||
|
||||
// $date_commande is deprecated
|
||||
// Set tmp vars
|
||||
$date = ($this->date_commande ? $this->date_commande : $this->date);
|
||||
$delivery_date = empty($this->delivery_date) ? $this->date_livraison : $this->delivery_date;
|
||||
|
||||
// Multicurrency (test on $this->multicurrency_tx because we should take the default rate only if not using origin rate)
|
||||
if (!empty($this->multicurrency_code) && empty($this->multicurrency_tx)) list($this->fk_multicurrency, $this->multicurrency_tx) = MultiCurrency::getIdAndTxFromCode($this->db, $this->multicurrency_code, $date);
|
||||
@ -960,7 +961,7 @@ class Commande extends CommonOrder
|
||||
$sql .= ", ".($this->fk_account > 0 ? $this->fk_account : 'NULL');
|
||||
$sql .= ", ".($this->availability_id > 0 ? $this->availability_id : "null");
|
||||
$sql .= ", ".($this->demand_reason_id > 0 ? $this->demand_reason_id : "null");
|
||||
$sql .= ", ".($this->date_livraison ? "'".$this->db->idate($this->date_livraison)."'" : "null");
|
||||
$sql .= ", ".($delivery_date ? "'".$this->db->idate($delivery_date)."'" : "null");
|
||||
$sql .= ", ".($this->fk_delivery_address > 0 ? $this->fk_delivery_address : 'NULL');
|
||||
$sql .= ", ".($this->shipping_method_id > 0 ? $this->shipping_method_id : 'NULL');
|
||||
$sql .= ", ".($this->warehouse_id > 0 ? $this->warehouse_id : 'NULL');
|
||||
@ -1359,7 +1360,7 @@ class Commande extends CommonOrder
|
||||
$this->fk_account = $object->fk_account;
|
||||
$this->availability_id = $object->availability_id;
|
||||
$this->demand_reason_id = $object->demand_reason_id;
|
||||
$this->date_livraison = $object->date_livraison;
|
||||
$this->date_livraison = $object->date_livraison; // deprecated
|
||||
$this->delivery_date = $object->date_livraison;
|
||||
$this->shipping_method_id = $object->shipping_method_id;
|
||||
$this->warehouse_id = $object->warehouse_id;
|
||||
@ -1784,7 +1785,7 @@ class Commande extends CommonOrder
|
||||
$sql .= ', c.amount_ht, c.total_ht, c.total_ttc, c.tva as total_tva, c.localtax1 as total_localtax1, c.localtax2 as total_localtax2, c.fk_cond_reglement, c.fk_mode_reglement, c.fk_availability, c.fk_input_reason';
|
||||
$sql .= ', c.fk_account';
|
||||
$sql .= ', c.date_commande, c.date_valid, c.tms';
|
||||
$sql .= ', c.date_livraison';
|
||||
$sql .= ', c.date_livraison as delivery_date';
|
||||
$sql .= ', c.fk_shipping_method';
|
||||
$sql .= ', c.fk_warehouse';
|
||||
$sql .= ', c.fk_projet as fk_project, c.remise_percent, c.remise, c.remise_absolue, c.source, c.facture as billed';
|
||||
@ -1870,8 +1871,8 @@ class Commande extends CommonOrder
|
||||
$this->availability = $obj->availability_label;
|
||||
$this->demand_reason_id = $obj->fk_input_reason;
|
||||
$this->demand_reason_code = $obj->demand_reason_code;
|
||||
$this->date_livraison = $this->db->jdate($obj->date_livraison);
|
||||
$this->delivery_date = $this->db->jdate($obj->date_livraison);
|
||||
$this->date_livraison = $this->db->jdate($obj->delivery_date); // deprecated
|
||||
$this->delivery_date = $this->db->jdate($obj->delivery_date);
|
||||
$this->shipping_method_id = ($obj->fk_shipping_method > 0) ? $obj->fk_shipping_method : null;
|
||||
$this->warehouse_id = ($obj->fk_warehouse > 0) ? $obj->fk_warehouse : null;
|
||||
$this->fk_delivery_address = $obj->fk_delivery_address;
|
||||
@ -2013,7 +2014,7 @@ class Commande extends CommonOrder
|
||||
$sql .= ' l.total_ht, l.total_ttc, l.total_tva, l.total_localtax1, l.total_localtax2, l.date_start, l.date_end,';
|
||||
$sql .= ' l.fk_unit,';
|
||||
$sql .= ' l.fk_multicurrency, l.multicurrency_code, l.multicurrency_subprice, l.multicurrency_total_ht, l.multicurrency_total_tva, l.multicurrency_total_ttc,';
|
||||
$sql .= ' p.ref as product_ref, p.description as product_desc, p.fk_product_type, p.label as product_label, p.tobatch as product_tobatch,';
|
||||
$sql .= ' p.ref as product_ref, p.description as product_desc, p.fk_product_type, p.label as product_label, p.tosell as product_tosell, p.tobuy as product_tobuy, p.tobatch as product_tobatch,';
|
||||
$sql .= ' p.weight, p.weight_units, p.volume, p.volume_units';
|
||||
$sql .= ' FROM '.MAIN_DB_PREFIX.'commandedet as l';
|
||||
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON (p.rowid = l.fk_product)';
|
||||
@ -2076,6 +2077,8 @@ class Commande extends CommonOrder
|
||||
$line->libelle = $objp->product_label;
|
||||
$line->product_label = $objp->product_label;
|
||||
$line->product_desc = $objp->product_desc;
|
||||
$line->product_tosell = $objp->product_tosell;
|
||||
$line->product_tobuy = $objp->product_tobuy;
|
||||
$line->product_tobatch = $objp->product_tobatch;
|
||||
$line->fk_product_type = $objp->fk_product_type; // Produit ou service
|
||||
$line->fk_unit = $objp->fk_unit;
|
||||
@ -3660,6 +3663,9 @@ class Commande extends CommonOrder
|
||||
if (!empty($this->total_ttc)) {
|
||||
$label .= '<br><b>'.$langs->trans('AmountTTC').':</b> '.price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency);
|
||||
}
|
||||
if (!empty($this->delivery_date)) {
|
||||
$label .= '<br><b>'.$langs->trans('DeliveryDate').':</b> '.dol_print_date($this->delivery_date, 'dayhour');
|
||||
}
|
||||
}
|
||||
|
||||
$linkclose = '';
|
||||
|
||||
@ -931,7 +931,7 @@ if ($resql)
|
||||
$generic_commande->statut = $obj->fk_statut;
|
||||
$generic_commande->billed = $obj->billed;
|
||||
$generic_commande->date = $db->jdate($obj->date_commande);
|
||||
$generic_commande->date_livraison = $db->jdate($obj->date_delivery);
|
||||
$generic_commande->date_livraison = $db->jdate($obj->date_delivery); // deprecated
|
||||
$generic_commande->delivery_date = $db->jdate($obj->date_delivery);
|
||||
$generic_commande->ref_client = $obj->ref_client;
|
||||
$generic_commande->total_ht = $obj->total_ht;
|
||||
|
||||
@ -1093,7 +1093,7 @@ if ($resql)
|
||||
}
|
||||
|
||||
print '<td class="center">';
|
||||
print '<input type="checkbox" id="selectAll" />';
|
||||
print '<input type="checkbox" id="selectAll" title="'.dol_escape_htmltag($langs->trans("SelectAll")).'" />';
|
||||
print ' <script type="text/javascript">
|
||||
$("input#selectAll").change(function() {
|
||||
$("input[type=checkbox][name^=rowid]").prop("checked", $(this).is(":checked"));
|
||||
|
||||
@ -92,14 +92,14 @@ $fieldstosearchall = array(
|
||||
|
||||
$checkedtypetiers = 0;
|
||||
$arrayfields = array(
|
||||
'b.ref'=>array('label'=>$langs->trans("BankAccounts"), 'checked'=>1),
|
||||
'accountype'=>array('label'=>$langs->trans("Type"), 'checked'=>1),
|
||||
'b.label'=>array('label'=>$langs->trans("Label"), 'checked'=>1),
|
||||
'b.number'=>array('label'=>$langs->trans("AccountIdShort"), 'checked'=>1),
|
||||
'b.account_number'=>array('label'=>$langs->trans("AccountAccounting"), 'checked'=>(!empty($conf->accounting->enabled) || !empty($conf->accounting->enabled))),
|
||||
'b.fk_accountancy_journal'=>array('label'=>$langs->trans("AccountancyJournal"), 'checked'=>(!empty($conf->accounting->enabled) || !empty($conf->accounting->enabled))),
|
||||
'toreconcile'=>array('label'=>$langs->trans("TransactionsToConciliate"), 'checked'=>1),
|
||||
'b.currency_code'=>array('label'=>$langs->trans("Currency"), 'checked'=>0),
|
||||
'b.ref'=>array('label'=>$langs->trans("BankAccounts"), 'checked'=>1, 'position'=>10),
|
||||
'b.label'=>array('label'=>$langs->trans("Label"), 'checked'=>1, 'position'=>12),
|
||||
'accountype'=>array('label'=>$langs->trans("Type"), 'checked'=>1, 'position'=>14),
|
||||
'b.number'=>array('label'=>$langs->trans("AccountIdShort"), 'checked'=>1, 'position'=>16),
|
||||
'b.account_number'=>array('label'=>$langs->trans("AccountAccounting"), 'checked'=>(!empty($conf->accounting->enabled) || !empty($conf->accounting->enabled)), 'position'=>18),
|
||||
'b.fk_accountancy_journal'=>array('label'=>$langs->trans("AccountancyJournal"), 'checked'=>(!empty($conf->accounting->enabled) || !empty($conf->accounting->enabled)), 'position'=>20),
|
||||
'toreconcile'=>array('label'=>$langs->trans("TransactionsToConciliate"), 'checked'=>1, 'position'=>50),
|
||||
'b.currency_code'=>array('label'=>$langs->trans("Currency"), 'checked'=>0, 'position'=>22),
|
||||
'b.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500),
|
||||
'b.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500),
|
||||
'b.clos'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000),
|
||||
@ -525,7 +525,7 @@ foreach ($accounts as $key=>$type)
|
||||
if ($result < 0) {
|
||||
setEventMessages($objecttmp->error, $objecttmp->errors, 'errors');
|
||||
} else {
|
||||
print '<a href="'.DOL_URL_ROOT.'/compta/bank/bankentries_list.php?id='.$objecttmp->id.'&search_conciliated=0">';
|
||||
print '<a href="'.DOL_URL_ROOT.'/compta/bank/bankentries_list.php?action=reconcile&sortfield=b.datev,b.dateo,b.rowid&sortorder=asc,asc,asc&id='.$objecttmp->id.'&search_account='.$objecttmp->id.'&search_conciliated=0&contextpage=banktransactionlist">';
|
||||
print '<span class="badge badge-info classfortooltip" title="'.dol_htmlentities($langs->trans("TransactionsToConciliate")).'">';
|
||||
print $result->nbtodo;
|
||||
print '</span>';
|
||||
|
||||
@ -1338,8 +1338,8 @@ class Facture extends CommonInvoice
|
||||
$this->mode_reglement_id = $object->mode_reglement_id;
|
||||
$this->availability_id = $object->availability_id;
|
||||
$this->demand_reason_id = $object->demand_reason_id;
|
||||
$this->date_livraison = $object->date_livraison;
|
||||
$this->delivery_date = $object->date_livraison;
|
||||
$this->delivery_date = (empty($object->delivery_date) ? $object->date_livraison : $object->delivery_date);
|
||||
$this->date_livraison = $object->delivery_date; // deprecated
|
||||
$this->fk_delivery_address = $object->fk_delivery_address; // deprecated
|
||||
$this->contact_id = $object->contact_id;
|
||||
$this->ref_client = $object->ref_client;
|
||||
|
||||
@ -44,7 +44,11 @@ class Cchargesociales
|
||||
*/
|
||||
public $table_element = 'c_chargesociales';
|
||||
|
||||
/**
|
||||
* @var string Label
|
||||
*/
|
||||
public $libelle;
|
||||
|
||||
public $deductible;
|
||||
public $active;
|
||||
public $code;
|
||||
@ -54,6 +58,9 @@ class Cchargesociales
|
||||
*/
|
||||
public $fk_pays;
|
||||
|
||||
/**
|
||||
* @var string module
|
||||
*/
|
||||
public $module;
|
||||
public $accountancy_code;
|
||||
|
||||
@ -504,13 +511,12 @@ class Cchargesociales
|
||||
|
||||
/**
|
||||
* Trim object parameters
|
||||
* @param string[] $parameters array of parameters to trim
|
||||
*
|
||||
* @param string[] $parameters array of parameters to trim
|
||||
* @return void
|
||||
*/
|
||||
private function trimParameters($parameters)
|
||||
{
|
||||
if (!is_array($parameters)) return;
|
||||
foreach ($parameters as $parameter) {
|
||||
if (isset($this->$parameter)) {
|
||||
$this->$parameter = trim($this->$parameter);
|
||||
|
||||
@ -65,6 +65,11 @@ class Tva extends CommonObject
|
||||
*/
|
||||
public $fk_bank;
|
||||
|
||||
/**
|
||||
* @var int accountid
|
||||
*/
|
||||
public $accountid;
|
||||
|
||||
/**
|
||||
* @var int ID
|
||||
*/
|
||||
|
||||
@ -2183,7 +2183,7 @@ if (!empty($conf->margin->enabled) && $action == 'editline')
|
||||
$(document).ready(function() {
|
||||
var idprod = $("input[name='idprod']").val();
|
||||
var fournprice = $("input[name='fournprice']").val();
|
||||
var token = '<?php echo $_SESSION["token"]; ?>'; // For AJAX Call we use old 'token' and not 'newtoken'
|
||||
var token = '<?php echo currentToken(); ?>'; // For AJAX Call we use old 'token' and not 'newtoken'
|
||||
if (idprod > 0) {
|
||||
$.post('<?php echo DOL_URL_ROOT; ?>/fourn/ajax/getSupplierPrices.php', {
|
||||
'idprod': idprod,
|
||||
|
||||
@ -100,7 +100,7 @@ if ($action == 'setModuleOptions')
|
||||
}
|
||||
if ($upload_dir)
|
||||
{
|
||||
$result = dol_add_file_process($upload_dir, 0, 1, 'uploadfile', '');
|
||||
$result = dol_add_file_process($upload_dir, 1, 1, 'uploadfile', '');
|
||||
if ($result <= 0) $error++;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2015 Frederic France <frederic.france@free.fr>
|
||||
* Copyright (C) 2015-2020 Frederic France <frederic.france@netlogic.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -116,6 +116,7 @@ class box_members extends ModeleBoxes
|
||||
$memberstatic->email = $objp->email;
|
||||
$memberstatic->morphy = $objp->morphy;
|
||||
$memberstatic->company = $objp->company;
|
||||
$memberstatic->statut = $objp->status;
|
||||
|
||||
if (!empty($objp->fk_soc)) {
|
||||
$memberstatic->socid = $objp->fk_soc;
|
||||
|
||||
@ -96,11 +96,11 @@ class box_supplier_orders_awaiting_reception extends ModeleBoxes
|
||||
if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
||||
$sql .= " WHERE c.fk_soc = s.rowid";
|
||||
$sql .= " AND c.entity IN (".getEntity('supplier_order').")";
|
||||
$sql .= " AND c.fk_statut = ".CommandeFournisseur::STATUS_ORDERSENT;
|
||||
$sql .= " AND c.fk_statut IN (".CommandeFournisseur::STATUS_ORDERSENT.", ".CommandeFournisseur::STATUS_RECEIVED_PARTIALLY.")";
|
||||
if (!$user->rights->societe->client->voir && !$user->socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id;
|
||||
if ($user->socid) $sql .= " AND s.rowid = ".$user->socid;
|
||||
if ($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE) $sql .= " ORDER BY c.date_commande DESC, c.ref DESC ";
|
||||
else $sql .= " ORDER BY c.date_livraison ASC, c.fk_statut ASC ";
|
||||
if ($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE) $sql .= " ORDER BY c.date_commande DESC, c.ref DESC";
|
||||
else $sql .= " ORDER BY c.date_livraison ASC, c.fk_statut ASC";
|
||||
$sql .= $this->db->plimit($max, 0);
|
||||
|
||||
$result = $this->db->query($sql);
|
||||
@ -115,7 +115,6 @@ class box_supplier_orders_awaiting_reception extends ModeleBoxes
|
||||
$delivery_date = $this->db->jdate($objp->delivery_date);
|
||||
$datem = $this->db->jdate($objp->tms);
|
||||
|
||||
$supplierorderstatic->date_livraison = $delivery_date;
|
||||
$supplierorderstatic->delivery_date = $delivery_date;
|
||||
$supplierorderstatic->statut = $objp->fk_statut;
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
|
||||
* Copyright (C) 2016 Charlie Benke <charlie@patas-monkey.com>
|
||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2020 Josep Lluís Amador <joseplluis@lliuretic.cat>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@ -77,11 +77,11 @@ abstract class CommonDocGenerator
|
||||
public function get_substitutionarray_user($user, $outputlangs)
|
||||
{
|
||||
// phpcs:enable
|
||||
global $conf;
|
||||
global $conf, $extrafields;
|
||||
|
||||
$logotouse = $conf->user->dir_output.'/'.get_exdir($user->id, 2, 0, 1, $user, 'user').'/'.$user->photo;
|
||||
|
||||
return array(
|
||||
$array_user = array(
|
||||
'myuser_lastname'=>$user->lastname,
|
||||
'myuser_firstname'=>$user->firstname,
|
||||
'myuser_fullname'=>$user->getFullName($outputlangs, 1),
|
||||
@ -101,6 +101,57 @@ abstract class CommonDocGenerator
|
||||
'myuser_job'=>$user->job,
|
||||
'myuser_web'=>'' // url not exist in $user object
|
||||
);
|
||||
// Retrieve extrafields
|
||||
if (is_array($user->array_options) && count($user->array_options)) {
|
||||
$array_user = $this->fill_substitutionarray_with_extrafields($user, $array_user, $extrafields, 'myuser', $outputlangs);
|
||||
}
|
||||
return $array_user;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Define array with couple substitution key => substitution value
|
||||
*
|
||||
* @param Adherent $member Member
|
||||
* @param Translate $outputlangs Language object for output
|
||||
* @return array Array of substitution key->code
|
||||
*/
|
||||
public function getSubstitutionarrayMember($member, $outputlangs)
|
||||
{
|
||||
global $conf, $extrafields;
|
||||
|
||||
if ($member->photo) {
|
||||
$logotouse = $conf->adherent->dir_output.'/'.get_exdir(0, 0, 0, 1, $member, 'user').'/photos/'.$member->photo;
|
||||
} else {
|
||||
$logotouse = DOL_DOCUMENT_ROOT . '/public/theme/common/nophoto.png';
|
||||
}
|
||||
|
||||
$array_member = array(
|
||||
'mymember_lastname' => $member->lastname,
|
||||
'mymember_firstname' => $member->firstname,
|
||||
'mymember_fullname' => $member->getFullName($outputlangs, 1),
|
||||
'mymember_login' => $member->login,
|
||||
'mymember_address' => $member->address,
|
||||
'mymember_zip' => $member->zip,
|
||||
'mymember_town' => $member->town,
|
||||
'mymember_country_code' => $member->country_code,
|
||||
'mymember_country' => $member->country,
|
||||
'mymember_state_code' => $member->state_code,
|
||||
'mymember_state' => $member->state,
|
||||
'mymember_phone_perso' => $member->phone_perso,
|
||||
'mymember_phone_pro' => $member->phone,
|
||||
'mymember_phone_mobile' => $member->phone_mobile,
|
||||
'mymember_email' => $member->email,
|
||||
'mymember_logo' => $logotouse,
|
||||
'mymember_gender' => $member->gender,
|
||||
'mymember_birth_locale' => dol_print_date($member->birth, 'day', 'tzuser', $outputlangs),
|
||||
'mymember_birth' => dol_print_date($member->birth, 'day', 'tzuser'),
|
||||
);
|
||||
// Retrieve extrafields
|
||||
if (is_array($member->array_options) && count($member->array_options)) {
|
||||
$array_member = $this->fill_substitutionarray_with_extrafields($member, $array_member, $extrafields, 'mymember', $outputlangs);
|
||||
}
|
||||
return $array_member;
|
||||
}
|
||||
|
||||
|
||||
@ -1249,7 +1300,7 @@ abstract class CommonDocGenerator
|
||||
$html = '';
|
||||
$fields = array();
|
||||
|
||||
if (is_array($extrafields->attributes[$object->table_element]['label'])) {
|
||||
if (!empty($extrafields->attributes[$object->table_element]['label']) && is_array($extrafields->attributes[$object->table_element]['label'])) {
|
||||
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $label)
|
||||
{
|
||||
// Enable extrafield ?
|
||||
|
||||
@ -51,12 +51,22 @@ abstract class CommonObject
|
||||
*/
|
||||
public $id;
|
||||
|
||||
/**
|
||||
* @var int The environment ID when using a multicompany module
|
||||
*/
|
||||
public $entity;
|
||||
|
||||
/**
|
||||
* @var string Error string
|
||||
* @see $errors
|
||||
*/
|
||||
public $error;
|
||||
|
||||
/**
|
||||
* @var string Error string that is hidden but can be used to store complementatry technical code.
|
||||
*/
|
||||
public $errorhidden;
|
||||
|
||||
/**
|
||||
* @var string[] Array of error strings
|
||||
*/
|
||||
@ -1243,9 +1253,7 @@ abstract class CommonObject
|
||||
{
|
||||
$sql = "SELECT ec.datecreate, ec.statut, ec.fk_socpeople, ec.fk_c_type_contact,";
|
||||
$sql .= " tc.code, tc.libelle";
|
||||
//$sql.= ", s.fk_soc";
|
||||
$sql .= " FROM (".MAIN_DB_PREFIX."element_contact as ec, ".MAIN_DB_PREFIX."c_type_contact as tc)";
|
||||
//$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople as s ON ec.fk_socpeople=s.rowid"; // Si contact de type external, alors il est lie a une societe
|
||||
$sql .= " WHERE ec.rowid =".$rowid;
|
||||
$sql .= " AND ec.fk_c_type_contact=tc.rowid";
|
||||
$sql .= " AND tc.element = '".$this->db->escape($this->element)."'";
|
||||
@ -2444,8 +2452,6 @@ abstract class CommonObject
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element;
|
||||
$sql .= " SET model_pdf = '".$this->db->escape($newmodelpdf)."'";
|
||||
$sql .= " WHERE rowid = ".$this->id;
|
||||
// if ($this->element == 'facture') $sql.= " AND fk_statut < 2";
|
||||
// if ($this->element == 'propal') $sql.= " AND fk_statut = 0";
|
||||
|
||||
dol_syslog(get_class($this)."::setDocModel", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
@ -2560,8 +2566,7 @@ abstract class CommonObject
|
||||
} else dol_print_error($this->db);
|
||||
if ($nl > 0)
|
||||
{
|
||||
// The goal of this part is to reorder all lines, with all children lines sharing the same
|
||||
// counter that parents.
|
||||
// The goal of this part is to reorder all lines, with all children lines sharing the same counter that parents.
|
||||
$rows = array();
|
||||
|
||||
// We first search all lines that are parent lines (for multilevel details lines)
|
||||
@ -4570,13 +4575,17 @@ abstract class CommonObject
|
||||
{
|
||||
foreach (array('doc', 'pdf') as $prefix)
|
||||
{
|
||||
if (in_array(get_class($this), array('Adherent'))) $file = $prefix."_".$modele.".class.php"; // Member module use prefix_module.class.php
|
||||
else $file = $prefix."_".$modele.".modules.php";
|
||||
if (in_array(get_class($this), array('Adherent'))) {
|
||||
// Member module use prefix_modele.class.php
|
||||
$file = $prefix."_".$modele.".class.php";
|
||||
} else {
|
||||
// Other module use prefix_modele.modules.php
|
||||
$file = $prefix."_".$modele.".modules.php";
|
||||
}
|
||||
|
||||
// On verifie l'emplacement du modele
|
||||
$file = dol_buildpath($reldir.$modelspath.$file, 0);
|
||||
if (file_exists($file))
|
||||
{
|
||||
if (file_exists($file)) {
|
||||
$filefound = $file;
|
||||
$classname = $prefix.'_'.$modele;
|
||||
break;
|
||||
@ -5450,7 +5459,6 @@ abstract class CommonObject
|
||||
$sql .= ")";
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
|
||||
if (!$resql)
|
||||
{
|
||||
$this->error = $this->db->lasterror();
|
||||
@ -5918,8 +5926,7 @@ abstract class CommonObject
|
||||
}
|
||||
}
|
||||
|
||||
if (in_array($type, array('date', 'datetime')))
|
||||
{
|
||||
if (in_array($type, array('date', 'datetime'))) {
|
||||
$tmp = explode(',', $size);
|
||||
$newsize = $tmp[0];
|
||||
|
||||
@ -5930,25 +5937,19 @@ abstract class CommonObject
|
||||
|
||||
// TODO Must also support $moreparam
|
||||
$out = $form->selectDate($value, $keyprefix.$key.$keysuffix, $showtime, $showtime, $required, '', 1, (($keyprefix != 'search_' && $keyprefix != 'search_options_') ? 1 : 0), 0, 1);
|
||||
} elseif (in_array($type, array('duration')))
|
||||
{
|
||||
} elseif (in_array($type, array('duration'))) {
|
||||
$out = $form->select_duration($keyprefix.$key.$keysuffix, $value, 0, 'text', 0, 1);
|
||||
} elseif (in_array($type, array('int', 'integer')))
|
||||
{
|
||||
} elseif (in_array($type, array('int', 'integer'))) {
|
||||
$tmp = explode(',', $size);
|
||||
$newsize = $tmp[0];
|
||||
$out = '<input type="text" class="flat '.$morecss.'" name="'.$keyprefix.$key.$keysuffix.'" id="'.$keyprefix.$key.$keysuffix.'" maxlength="'.$newsize.'" value="'.dol_escape_htmltag($value).'"'.($moreparam ? $moreparam : '').($autofocusoncreate ? ' autofocus' : '').'>';
|
||||
} elseif (in_array($type, array('real')))
|
||||
{
|
||||
} elseif (in_array($type, array('real'))) {
|
||||
$out = '<input type="text" class="flat '.$morecss.'" name="'.$keyprefix.$key.$keysuffix.'" id="'.$keyprefix.$key.$keysuffix.'" value="'.dol_escape_htmltag($value).'"'.($moreparam ? $moreparam : '').($autofocusoncreate ? ' autofocus' : '').'>';
|
||||
} elseif (preg_match('/varchar/', $type))
|
||||
{
|
||||
} elseif (preg_match('/varchar/', $type)) {
|
||||
$out = '<input type="text" class="flat '.$morecss.'" name="'.$keyprefix.$key.$keysuffix.'" id="'.$keyprefix.$key.$keysuffix.'" maxlength="'.$size.'" value="'.dol_escape_htmltag($value).'"'.($moreparam ? $moreparam : '').($autofocusoncreate ? ' autofocus' : '').'>';
|
||||
} elseif (in_array($type, array('mail', 'phone', 'url')))
|
||||
{
|
||||
} elseif (in_array($type, array('mail', 'phone', 'url'))) {
|
||||
$out = '<input type="text" class="flat '.$morecss.'" name="'.$keyprefix.$key.$keysuffix.'" id="'.$keyprefix.$key.$keysuffix.'" value="'.dol_escape_htmltag($value).'" '.($moreparam ? $moreparam : '').($autofocusoncreate ? ' autofocus' : '').'>';
|
||||
} elseif (preg_match('/^text/', $type))
|
||||
{
|
||||
} elseif (preg_match('/^text/', $type)) {
|
||||
if (!preg_match('/search_/', $keyprefix)) // If keyprefix is search_ or search_options_, we must just use a simple text field
|
||||
{
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
|
||||
@ -5957,18 +5958,15 @@ abstract class CommonObject
|
||||
} else {
|
||||
$out = '<input type="text" class="flat '.$morecss.' maxwidthonsmartphone" name="'.$keyprefix.$key.$keysuffix.'" id="'.$keyprefix.$key.$keysuffix.'" value="'.dol_escape_htmltag($value).'" '.($moreparam ? $moreparam : '').'>';
|
||||
}
|
||||
} elseif (preg_match('/^html/', $type))
|
||||
{
|
||||
if (!preg_match('/search_/', $keyprefix)) // If keyprefix is search_ or search_options_, we must just use a simple text field
|
||||
{
|
||||
} elseif (preg_match('/^html/', $type)) {
|
||||
if (!preg_match('/search_/', $keyprefix)) { // If keyprefix is search_ or search_options_, we must just use a simple text field
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
|
||||
$doleditor = new DolEditor($keyprefix.$key.$keysuffix, $value, '', 200, 'dolibarr_notes', 'In', false, false, !empty($conf->fckeditor->enabled) && $conf->global->FCKEDITOR_ENABLE_SOCIETE, ROWS_5, '90%');
|
||||
$out = $doleditor->Create(1);
|
||||
} else {
|
||||
$out = '<input type="text" class="flat '.$morecss.' maxwidthonsmartphone" name="'.$keyprefix.$key.$keysuffix.'" id="'.$keyprefix.$key.$keysuffix.'" value="'.dol_escape_htmltag($value).'" '.($moreparam ? $moreparam : '').'>';
|
||||
}
|
||||
} elseif ($type == 'boolean')
|
||||
{
|
||||
} elseif ($type == 'boolean') {
|
||||
$checked = '';
|
||||
if (!empty($value)) {
|
||||
$checked = ' checked value="1" ';
|
||||
@ -5976,20 +5974,17 @@ abstract class CommonObject
|
||||
$checked = ' value="1" ';
|
||||
}
|
||||
$out = '<input type="checkbox" class="flat '.$morecss.' maxwidthonsmartphone" name="'.$keyprefix.$key.$keysuffix.'" id="'.$keyprefix.$key.$keysuffix.'" '.$checked.' '.($moreparam ? $moreparam : '').'>';
|
||||
} elseif ($type == 'price')
|
||||
{
|
||||
} elseif ($type == 'price') {
|
||||
if (!empty($value)) { // $value in memory is a php numeric, we format it into user number format.
|
||||
$value = price($value);
|
||||
}
|
||||
$out = '<input type="text" class="flat '.$morecss.' maxwidthonsmartphone" name="'.$keyprefix.$key.$keysuffix.'" id="'.$keyprefix.$key.$keysuffix.'" value="'.$value.'" '.($moreparam ? $moreparam : '').'> '.$langs->getCurrencySymbol($conf->currency);
|
||||
} elseif (preg_match('/^double(\([0-9],[0-9]\)){0,1}/', $type))
|
||||
{
|
||||
} elseif (preg_match('/^double(\([0-9],[0-9]\)){0,1}/', $type)) {
|
||||
if (!empty($value)) { // $value in memory is a php numeric, we format it into user number format.
|
||||
$value = price($value);
|
||||
}
|
||||
$out = '<input type="text" class="flat '.$morecss.' maxwidthonsmartphone" name="'.$keyprefix.$key.$keysuffix.'" id="'.$keyprefix.$key.$keysuffix.'" value="'.$value.'" '.($moreparam ? $moreparam : '').'> ';
|
||||
} elseif ($type == 'select')
|
||||
{
|
||||
} elseif ($type == 'select') {
|
||||
$out = '';
|
||||
if (!empty($conf->use_javascript_ajax) && !empty($conf->global->MAIN_EXTRAFIELDS_USE_SELECT2))
|
||||
{
|
||||
@ -6009,18 +6004,15 @@ abstract class CommonObject
|
||||
$out .= '>'.$val.'</option>';
|
||||
}
|
||||
$out .= '</select>';
|
||||
} elseif ($type == 'sellist')
|
||||
{
|
||||
} elseif ($type == 'sellist') {
|
||||
$out = '';
|
||||
if (!empty($conf->use_javascript_ajax) && !empty($conf->global->MAIN_EXTRAFIELDS_USE_SELECT2))
|
||||
{
|
||||
if (!empty($conf->use_javascript_ajax) && !empty($conf->global->MAIN_EXTRAFIELDS_USE_SELECT2)) {
|
||||
include_once DOL_DOCUMENT_ROOT.'/core/lib/ajax.lib.php';
|
||||
$out .= ajax_combobox($keyprefix.$key.$keysuffix, array(), 0);
|
||||
}
|
||||
|
||||
$out .= '<select class="flat '.$morecss.' maxwidthonsmartphone" name="'.$keyprefix.$key.$keysuffix.'" id="'.$keyprefix.$key.$keysuffix.'" '.($moreparam ? $moreparam : '').'>';
|
||||
if (is_array($param['options']))
|
||||
{
|
||||
if (is_array($param['options'])) {
|
||||
$param_list = array_keys($param['options']);
|
||||
$InfoFieldList = explode(":", $param_list[0]);
|
||||
$parentName = '';
|
||||
@ -6166,12 +6158,10 @@ abstract class CommonObject
|
||||
}
|
||||
}
|
||||
$out .= '</select>';
|
||||
} elseif ($type == 'checkbox')
|
||||
{
|
||||
} elseif ($type == 'checkbox') {
|
||||
$value_arr = explode(',', $value);
|
||||
$out = $form->multiselectarray($keyprefix.$key.$keysuffix, (empty($param['options']) ?null:$param['options']), $value_arr, '', 0, '', 0, '100%');
|
||||
} elseif ($type == 'radio')
|
||||
{
|
||||
} elseif ($type == 'radio') {
|
||||
$out = '';
|
||||
foreach ($param['options'] as $keyopt => $val)
|
||||
{
|
||||
@ -6181,8 +6171,7 @@ abstract class CommonObject
|
||||
$out .= ($value == $keyopt ? 'checked' : '');
|
||||
$out .= '/><label for="'.$keyprefix.$key.$keysuffix.'_'.$keyopt.'">'.$val.'</label><br>';
|
||||
}
|
||||
} elseif ($type == 'chkbxlst')
|
||||
{
|
||||
} elseif ($type == 'chkbxlst') {
|
||||
if (is_array($value)) {
|
||||
$value_arr = $value;
|
||||
} else {
|
||||
@ -6323,8 +6312,7 @@ abstract class CommonObject
|
||||
print 'Error in request '.$sql.' '.$this->db->lasterror().'. Check setup of extra parameters.<br>';
|
||||
}
|
||||
}
|
||||
} elseif ($type == 'link')
|
||||
{
|
||||
} elseif ($type == 'link') {
|
||||
$param_list = array_keys($param['options']); // $param_list='ObjectName:classPath[:AddCreateButtonOrNot[:Filter]]'
|
||||
$param_list_array = explode(':', $param_list[0]);
|
||||
$showempty = (($required && $default != '') ? 0 : 1);
|
||||
@ -6349,25 +6337,20 @@ abstract class CommonObject
|
||||
$out .= '<a class="butActionNew" title="'.$langs->trans("New").'" href="'.$url_path.'?action=create&backtopage='.urlencode($_SERVER['PHP_SELF'].($paramforthenewlink ? '?'.$paramforthenewlink : '')).'"><span class="fa fa-plus-circle valignmiddle"></span></a>';
|
||||
}
|
||||
}
|
||||
} elseif ($type == 'password')
|
||||
{
|
||||
} elseif ($type == 'password') {
|
||||
// If prefix is 'search_', field is used as a filter, we use a common text field.
|
||||
$out = '<input type="'.($keyprefix == 'search_' ? 'text' : 'password').'" class="flat '.$morecss.'" name="'.$keyprefix.$key.$keysuffix.'" id="'.$keyprefix.$key.$keysuffix.'" value="'.$value.'" '.($moreparam ? $moreparam : '').'>';
|
||||
} elseif ($type == 'array')
|
||||
{
|
||||
} elseif ($type == 'array') {
|
||||
$newval = $val;
|
||||
$newval['type'] = 'varchar(256)';
|
||||
|
||||
$out = '';
|
||||
|
||||
$inputs = array();
|
||||
if (!empty($value)) {
|
||||
foreach ($value as $option) {
|
||||
$out .= '<span><a class="'.dol_escape_htmltag($keyprefix.$key.$keysuffix).'_del" href="javascript:;"><span class="fa fa-minus-circle valignmiddle"></span></a> ';
|
||||
$out .= $this->showInputField($newval, $keyprefix.$key.$keysuffix.'[]', $option, $moreparam, '', '', $morecss).'<br></span>';
|
||||
}
|
||||
}
|
||||
|
||||
$out .= '<a id="'.dol_escape_htmltag($keyprefix.$key.$keysuffix).'_add" href="javascript:;"><span class="fa fa-plus-circle valignmiddle"></span></a>';
|
||||
|
||||
$newInput = '<span><a class="'.dol_escape_htmltag($keyprefix.$key.$keysuffix).'_del" href="javascript:;"><span class="fa fa-minus-circle valignmiddle"></span></a> ';
|
||||
@ -6470,27 +6453,20 @@ abstract class CommonObject
|
||||
|
||||
if (empty($morecss))
|
||||
{
|
||||
if ($type == 'date')
|
||||
{
|
||||
if ($type == 'date') {
|
||||
$morecss = 'minwidth100imp';
|
||||
} elseif ($type == 'datetime' || $type == 'timestamp')
|
||||
{
|
||||
} elseif ($type == 'datetime' || $type == 'timestamp') {
|
||||
$morecss = 'minwidth200imp';
|
||||
} elseif (in_array($type, array('int', 'double', 'price')))
|
||||
{
|
||||
} elseif (in_array($type, array('int', 'double', 'price'))) {
|
||||
$morecss = 'maxwidth75';
|
||||
} elseif ($type == 'url')
|
||||
{
|
||||
} elseif ($type == 'url') {
|
||||
$morecss = 'minwidth400';
|
||||
} elseif ($type == 'boolean')
|
||||
{
|
||||
} elseif ($type == 'boolean') {
|
||||
$morecss = '';
|
||||
} else {
|
||||
if (round($size) < 12)
|
||||
{
|
||||
if (round($size) < 12) {
|
||||
$morecss = 'minwidth100';
|
||||
} elseif (round($size) <= 48)
|
||||
{
|
||||
} elseif (round($size) <= 48) {
|
||||
$morecss = 'minwidth200';
|
||||
} else {
|
||||
$morecss = 'minwidth400';
|
||||
@ -6501,57 +6477,47 @@ abstract class CommonObject
|
||||
// Format output value differently according to properties of field
|
||||
if ($key == 'ref' && method_exists($this, 'getNomUrl')) $value = $this->getNomUrl(1, '', 0, '', 1);
|
||||
elseif ($key == 'status' && method_exists($this, 'getLibStatut')) $value = $this->getLibStatut(3);
|
||||
elseif ($type == 'date')
|
||||
{
|
||||
elseif ($type == 'date') {
|
||||
if (!empty($value)) {
|
||||
$value = dol_print_date($value, 'day');
|
||||
} else {
|
||||
$value = '';
|
||||
}
|
||||
} elseif ($type == 'datetime' || $type == 'timestamp')
|
||||
{
|
||||
} elseif ($type == 'datetime' || $type == 'timestamp') {
|
||||
if (!empty($value)) {
|
||||
$value = dol_print_date($value, 'dayhour');
|
||||
} else {
|
||||
$value = '';
|
||||
}
|
||||
} elseif ($type == 'duration')
|
||||
{
|
||||
} elseif ($type == 'duration') {
|
||||
include_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
||||
if (!is_null($value) && $value !== '') {
|
||||
$value = convertSecondToTime($value, 'allhourmin');
|
||||
}
|
||||
} elseif ($type == 'double' || $type == 'real')
|
||||
{
|
||||
} elseif ($type == 'double' || $type == 'real') {
|
||||
if (!is_null($value) && $value !== '') {
|
||||
$value = price($value);
|
||||
}
|
||||
} elseif ($type == 'boolean')
|
||||
{
|
||||
} elseif ($type == 'boolean') {
|
||||
$checked = '';
|
||||
if (!empty($value)) {
|
||||
$checked = ' checked ';
|
||||
}
|
||||
$value = '<input type="checkbox" '.$checked.' '.($moreparam ? $moreparam : '').' readonly disabled>';
|
||||
} elseif ($type == 'mail')
|
||||
{
|
||||
} elseif ($type == 'mail') {
|
||||
$value = dol_print_email($value, 0, 0, 0, 64, 1, 1);
|
||||
} elseif ($type == 'url')
|
||||
{
|
||||
} elseif ($type == 'url') {
|
||||
$value = dol_print_url($value, '_blank', 32, 1);
|
||||
} elseif ($type == 'phone')
|
||||
{
|
||||
} elseif ($type == 'phone') {
|
||||
$value = dol_print_phone($value, '', 0, 0, '', ' ', 1);
|
||||
} elseif ($type == 'price')
|
||||
{
|
||||
if (!is_null($value) && $value !== '') {
|
||||
$value = price($value, 0, $langs, 0, 0, -1, $conf->currency);
|
||||
}
|
||||
} elseif ($type == 'select')
|
||||
{
|
||||
} elseif ($type == 'select') {
|
||||
$value = $param['options'][$value];
|
||||
} elseif ($type == 'sellist')
|
||||
{
|
||||
} elseif ($type == 'sellist') {
|
||||
$param_list = array_keys($param['options']);
|
||||
$InfoFieldList = explode(":", $param_list[0]);
|
||||
|
||||
@ -6623,11 +6589,9 @@ abstract class CommonObject
|
||||
}
|
||||
}
|
||||
} else dol_syslog(get_class($this).'::showOutputField error '.$this->db->lasterror(), LOG_WARNING);
|
||||
} elseif ($type == 'radio')
|
||||
{
|
||||
} elseif ($type == 'radio') {
|
||||
$value = $param['options'][$value];
|
||||
} elseif ($type == 'checkbox')
|
||||
{
|
||||
} elseif ($type == 'checkbox') {
|
||||
$value_arr = explode(',', $value);
|
||||
$value = '';
|
||||
if (is_array($value_arr) && count($value_arr) > 0)
|
||||
@ -6638,8 +6602,7 @@ abstract class CommonObject
|
||||
}
|
||||
$value = '<div class="select2-container-multi-dolibarr" style="width: 90%;"><ul class="select2-choices-dolibarr">'.implode(' ', $toprint).'</ul></div>';
|
||||
}
|
||||
} elseif ($type == 'chkbxlst')
|
||||
{
|
||||
} elseif ($type == 'chkbxlst') {
|
||||
$value_arr = explode(',', $value);
|
||||
|
||||
$param_list = array_keys($param['options']);
|
||||
@ -6705,8 +6668,7 @@ abstract class CommonObject
|
||||
} else {
|
||||
dol_syslog(get_class($this).'::showOutputField error '.$this->db->lasterror(), LOG_WARNING);
|
||||
}
|
||||
} elseif ($type == 'link')
|
||||
{
|
||||
} elseif ($type == 'link') {
|
||||
$out = '';
|
||||
|
||||
// only if something to display (perf)
|
||||
@ -6732,14 +6694,11 @@ abstract class CommonObject
|
||||
return 'Error bad setup of extrafield';
|
||||
}
|
||||
} else $value = '';
|
||||
} elseif (preg_match('/^(text|html)/', $type))
|
||||
{
|
||||
} elseif (preg_match('/^(text|html)/', $type)) {
|
||||
$value = dol_htmlentitiesbr($value);
|
||||
} elseif ($type == 'password')
|
||||
{
|
||||
} elseif ($type == 'password') {
|
||||
$value = preg_replace('/./i', '*', $value);
|
||||
} elseif ($type == 'array')
|
||||
{
|
||||
} elseif ($type == 'array') {
|
||||
$value = implode('<br>', $value);
|
||||
}
|
||||
|
||||
@ -7372,8 +7331,7 @@ abstract class CommonObject
|
||||
*/
|
||||
protected function isArray($info)
|
||||
{
|
||||
if (is_array($info))
|
||||
{
|
||||
if (is_array($info)) {
|
||||
if (isset($info['type']) && $info['type'] == 'array') return true;
|
||||
else return false;
|
||||
}
|
||||
@ -7400,8 +7358,7 @@ abstract class CommonObject
|
||||
*/
|
||||
public function isDuration($info)
|
||||
{
|
||||
if (is_array($info))
|
||||
{
|
||||
if (is_array($info)) {
|
||||
if (isset($info['type']) && ($info['type'] == 'duration')) return true;
|
||||
else return false;
|
||||
} else return false;
|
||||
@ -7415,8 +7372,7 @@ abstract class CommonObject
|
||||
*/
|
||||
public function isInt($info)
|
||||
{
|
||||
if (is_array($info))
|
||||
{
|
||||
if (is_array($info)) {
|
||||
if (isset($info['type']) && ($info['type'] == 'int' || preg_match('/^integer/i', $info['type']))) return true;
|
||||
else return false;
|
||||
} else return false;
|
||||
@ -7430,8 +7386,7 @@ abstract class CommonObject
|
||||
*/
|
||||
public function isFloat($info)
|
||||
{
|
||||
if (is_array($info))
|
||||
{
|
||||
if (is_array($info)) {
|
||||
if (isset($info['type']) && (preg_match('/^(double|real|price)/i', $info['type']))) return true;
|
||||
else return false;
|
||||
}
|
||||
@ -7446,8 +7401,7 @@ abstract class CommonObject
|
||||
*/
|
||||
public function isText($info)
|
||||
{
|
||||
if (is_array($info))
|
||||
{
|
||||
if (is_array($info)) {
|
||||
if (isset($info['type']) && $info['type'] == 'text') return true;
|
||||
else return false;
|
||||
}
|
||||
@ -7462,8 +7416,7 @@ abstract class CommonObject
|
||||
*/
|
||||
protected function canBeNull($info)
|
||||
{
|
||||
if (is_array($info))
|
||||
{
|
||||
if (is_array($info)) {
|
||||
if (isset($info['notnull']) && $info['notnull'] != '1') return true;
|
||||
else return false;
|
||||
}
|
||||
@ -7478,8 +7431,7 @@ abstract class CommonObject
|
||||
*/
|
||||
protected function isForcedToNullIfZero($info)
|
||||
{
|
||||
if (is_array($info))
|
||||
{
|
||||
if (is_array($info)) {
|
||||
if (isset($info['notnull']) && $info['notnull'] == '-1') return true;
|
||||
else return false;
|
||||
}
|
||||
@ -7494,8 +7446,7 @@ abstract class CommonObject
|
||||
*/
|
||||
protected function isIndex($info)
|
||||
{
|
||||
if (is_array($info))
|
||||
{
|
||||
if (is_array($info)) {
|
||||
if (isset($info['index']) && $info['index'] == true) return true;
|
||||
else return false;
|
||||
}
|
||||
@ -7582,8 +7533,7 @@ abstract class CommonObject
|
||||
{
|
||||
foreach ($this->fields as $field => $info)
|
||||
{
|
||||
if ($this->isDate($info))
|
||||
{
|
||||
if ($this->isDate($info)) {
|
||||
if (empty($obj->{$field}) || $obj->{$field} === '0000-00-00 00:00:00' || $obj->{$field} === '1000-01-01 00:00:00') $this->{$field} = 0;
|
||||
else $this->{$field} = strtotime($obj->{$field});
|
||||
} elseif ($this->isArray($info))
|
||||
@ -7595,12 +7545,10 @@ abstract class CommonObject
|
||||
} else {
|
||||
$this->{$field} = array();
|
||||
}
|
||||
} elseif ($this->isInt($info))
|
||||
{
|
||||
} elseif ($this->isInt($info)) {
|
||||
if ($field == 'rowid') $this->id = (int) $obj->{$field};
|
||||
else {
|
||||
if ($this->isForcedToNullIfZero($info))
|
||||
{
|
||||
if ($this->isForcedToNullIfZero($info)) {
|
||||
if (empty($obj->{$field})) $this->{$field} = null;
|
||||
else $this->{$field} = (double) $obj->{$field};
|
||||
} else {
|
||||
@ -7611,10 +7559,8 @@ abstract class CommonObject
|
||||
}
|
||||
}
|
||||
}
|
||||
} elseif ($this->isFloat($info))
|
||||
{
|
||||
if ($this->isForcedToNullIfZero($info))
|
||||
{
|
||||
} elseif ($this->isFloat($info)) {
|
||||
if ($this->isForcedToNullIfZero($info)) {
|
||||
if (empty($obj->{$field})) $this->{$field} = null;
|
||||
else $this->{$field} = (double) $obj->{$field};
|
||||
} else {
|
||||
@ -8373,8 +8319,8 @@ abstract class CommonObject
|
||||
|
||||
/**
|
||||
* Trim object parameters
|
||||
* @param string[] $parameters array of parameters to trim
|
||||
*
|
||||
* @param string[] $parameters array of parameters to trim
|
||||
* @return void
|
||||
*/
|
||||
public function trimParameters($parameters)
|
||||
|
||||
@ -2038,7 +2038,7 @@ class ExtraFields
|
||||
$value_arr = GETPOST("options_".$key, 'alpha');
|
||||
$value_key = price2num($value_arr);
|
||||
} elseif (in_array($key_type, array('html'))) {
|
||||
$value_key = GETPOST("options_".$key, 'alpha');
|
||||
$value_key = GETPOST("options_".$key, 'restricthtml');
|
||||
} elseif (in_array($key_type, array('text'))) {
|
||||
$value_key = GETPOST("options_".$key, 'alphanohtml');
|
||||
} else {
|
||||
|
||||
@ -188,7 +188,8 @@ class Form
|
||||
{
|
||||
$ret .= $this->editInPlace($object, $value, $htmlname, $perm, $typeofdata, $editvalue, $extObject, $custommsg);
|
||||
} else {
|
||||
if (GETPOST('action', 'aZ09') == 'edit'.$htmlname)
|
||||
$editmode = (GETPOST('action', 'aZ09') == 'edit'.$htmlname);
|
||||
if ($editmode)
|
||||
{
|
||||
$ret .= "\n";
|
||||
$ret .= '<form method="post" action="'.$_SERVER["PHP_SELF"].($moreparam ? '?'.$moreparam : '').'">';
|
||||
@ -1463,10 +1464,10 @@ class Form
|
||||
}
|
||||
|
||||
// We search third parties
|
||||
$sql = "SELECT sp.rowid, sp.lastname, sp.statut, sp.firstname, sp.poste";
|
||||
if ($showsoc > 0) $sql .= " , s.nom as company";
|
||||
$sql = "SELECT sp.rowid, sp.lastname, sp.statut, sp.firstname, sp.poste, sp.email, sp.phone, sp.phone_perso, sp.phone_mobile, sp.town AS contact_town";
|
||||
if ($showsoc > 0 || !empty($conf->global->CONTACT_SHOW_EMAIL_PHONE_TOWN_SELECTLIST)) $sql .= ", s.nom as company, s.town AS company_town";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."socpeople as sp";
|
||||
if ($showsoc > 0) $sql .= " LEFT OUTER JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid=sp.fk_soc";
|
||||
if ($showsoc > 0 || !empty($conf->global->CONTACT_SHOW_EMAIL_PHONE_TOWN_SELECTLIST)) $sql .= " LEFT OUTER JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid=sp.fk_soc";
|
||||
$sql .= " WHERE sp.entity IN (".getEntity('socpeople').")";
|
||||
if ($socid > 0 || $socid == -1) $sql .= " AND sp.fk_soc=".$socid;
|
||||
if (!empty($conf->global->CONTACT_HIDE_INACTIVE_IN_COMBOBOX)) $sql .= " AND sp.statut <> 0";
|
||||
@ -1499,6 +1500,28 @@ class Form
|
||||
{
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
|
||||
// Set email (or phones) and town extended infos
|
||||
$extendedInfos = '';
|
||||
if (!empty($conf->global->CONTACT_SHOW_EMAIL_PHONE_TOWN_SELECTLIST)) {
|
||||
$extendedInfos = array();
|
||||
$email = trim($obj->email);
|
||||
if (!empty($email)) $extendedInfos[] = $email;
|
||||
else {
|
||||
$phone = trim($obj->phone);
|
||||
$phone_perso = trim($obj->phone_perso);
|
||||
$phone_mobile = trim($obj->phone_mobile);
|
||||
if (!empty($phone)) $extendedInfos[] = $phone;
|
||||
if (!empty($phone_perso)) $extendedInfos[] = $phone_perso;
|
||||
if (!empty($phone_mobile)) $extendedInfos[] = $phone_mobile;
|
||||
}
|
||||
$contact_town = trim($obj->contact_town);
|
||||
$company_town = trim($obj->company_town);
|
||||
if (!empty($contact_town)) $extendedInfos[] = $contact_town;
|
||||
elseif (!empty($company_town)) $extendedInfos[] = $company_town;
|
||||
$extendedInfos = implode(' - ', $extendedInfos);
|
||||
if (!empty($extendedInfos)) $extendedInfos = ' - ' . $extendedInfos;
|
||||
}
|
||||
|
||||
$contactstatic->id = $obj->rowid;
|
||||
$contactstatic->lastname = $obj->lastname;
|
||||
$contactstatic->firstname = $obj->firstname;
|
||||
@ -1513,7 +1536,7 @@ class Form
|
||||
$out .= '<option value="'.$obj->rowid.'"';
|
||||
if ($disabled) $out .= ' disabled';
|
||||
$out .= ' selected>';
|
||||
$out .= $contactstatic->getFullName($langs);
|
||||
$out .= $contactstatic->getFullName($langs) . $extendedInfos;
|
||||
if ($showfunction && $obj->poste) $out .= ' ('.$obj->poste.')';
|
||||
if (($showsoc > 0) && $obj->company) $out .= ' - ('.$obj->company.')';
|
||||
$out .= '</option>';
|
||||
@ -1521,7 +1544,7 @@ class Form
|
||||
$out .= '<option value="'.$obj->rowid.'"';
|
||||
if ($disabled) $out .= ' disabled';
|
||||
$out .= '>';
|
||||
$out .= $contactstatic->getFullName($langs);
|
||||
$out .= $contactstatic->getFullName($langs) . $extendedInfos;
|
||||
if ($showfunction && $obj->poste) $out .= ' ('.$obj->poste.')';
|
||||
if (($showsoc > 0) && $obj->company) $out .= ' - ('.$obj->company.')';
|
||||
$out .= '</option>';
|
||||
@ -1529,7 +1552,7 @@ class Form
|
||||
} else {
|
||||
if (in_array($obj->rowid, $selected))
|
||||
{
|
||||
$out .= $contactstatic->getFullName($langs);
|
||||
$out .= $contactstatic->getFullName($langs) . $extendedInfos;
|
||||
if ($showfunction && $obj->poste) $out .= ' ('.$obj->poste.')';
|
||||
if (($showsoc > 0) && $obj->company) $out .= ' - ('.$obj->company.')';
|
||||
}
|
||||
@ -4384,7 +4407,7 @@ class Form
|
||||
</script>';
|
||||
$formconfirm .= "<!-- end ajax formconfirm -->\n";
|
||||
} else {
|
||||
$formconfirm .= "\n<!-- begin formconfirm page=".$page." -->\n";
|
||||
$formconfirm .= "\n<!-- begin formconfirm page=".dol_escape_htmltag($page)." -->\n";
|
||||
|
||||
if (empty($disableformtag)) $formconfirm .= '<form method="POST" action="'.$page.'" class="notoptoleftroright">'."\n";
|
||||
|
||||
@ -4415,7 +4438,7 @@ class Form
|
||||
$formconfirm .= '<td class="valid">';
|
||||
$formconfirm .= $this->selectyesno("confirm", $newselectedchoice);
|
||||
$formconfirm .= '</td>';
|
||||
$formconfirm .= '<td class="valid center"><input class="button valignmiddle" type="submit" value="'.$langs->trans("Validate").'"></td>';
|
||||
$formconfirm .= '<td class="valid center"><input class="button valignmiddle confirmvalidatebutton" type="submit" value="'.$langs->trans("Validate").'"></td>';
|
||||
$formconfirm .= '</tr>'."\n";
|
||||
|
||||
$formconfirm .= '</table>'."\n";
|
||||
@ -4423,6 +4446,23 @@ class Form
|
||||
if (empty($disableformtag)) $formconfirm .= "</form>\n";
|
||||
$formconfirm .= '<br>';
|
||||
|
||||
if (empty($conf->use_javascript_ajax)) {
|
||||
$formconfirm .= '<!-- code to disable button to avoid double clic -->';
|
||||
$formconfirm .= '<script type="text/javascript">'."\n";
|
||||
$formconfirm .= '
|
||||
$(document).ready(function () {
|
||||
$(".confirmvalidatebutton").on("click", function() {
|
||||
console.log("We click on button");
|
||||
$(this).attr("disabled", "disabled");
|
||||
setTimeout(\'$(".confirmvalidatebutton").removeAttr("disabled")\', 3000);
|
||||
//console.log($(this).closest("form"));
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
});
|
||||
';
|
||||
$formconfirm .= '</script>'."\n";
|
||||
}
|
||||
|
||||
$formconfirm .= "<!-- end formconfirm -->\n";
|
||||
}
|
||||
|
||||
|
||||
@ -101,7 +101,7 @@ class SimpleOpenID
|
||||
/**
|
||||
* SetRequiredFields
|
||||
*
|
||||
* @param string $a Server
|
||||
* @param string|array $a Server
|
||||
* @return void
|
||||
*/
|
||||
public function SetRequiredFields($a)
|
||||
@ -118,7 +118,7 @@ class SimpleOpenID
|
||||
/**
|
||||
* SetOptionalFields
|
||||
*
|
||||
* @param string $a Server
|
||||
* @param string|array $a Server
|
||||
* @return void
|
||||
*/
|
||||
public function SetOptionalFields($a)
|
||||
|
||||
@ -105,8 +105,8 @@ if (!($_SERVER['HTTP_REFERER'] === $dolibarr_main_url_root.'/' || $_SERVER['HTTP
|
||||
|
||||
if (value.type == 'agenda')
|
||||
{
|
||||
url = '<?php echo DOL_URL_ROOT.'/comm/action/card.php?id='; ?>' + value.id_agenda;
|
||||
title = '<?php print $langs->trans('EventReminder') ?>';
|
||||
url = '<?php print DOL_URL_ROOT.'/comm/action/card.php?id='; ?>' + value.id_agenda;
|
||||
title = '<?php print dol_escape_js($langs->trans('EventReminder')) ?>';
|
||||
}
|
||||
var extra = {
|
||||
icon: '<?php print DOL_URL_ROOT.'/theme/common/bell.png'; ?>',
|
||||
|
||||
@ -3190,7 +3190,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
||||
'1downarrow', '1uparrow', '1leftarrow', '1rightarrow', '1uparrow_selected', '1downarrow_selected', '1leftarrow_selected', '1rightarrow_selected',
|
||||
'accountancy', 'account', 'accountline', 'action', 'add', 'address', 'bank_account', 'barcode', 'bank', 'bill', 'bookmark', 'bom', 'building',
|
||||
'cash-register', 'category', 'check', 'clock', 'close_title', 'company', 'contact', 'contract', 'cubes',
|
||||
'delete', 'dolly', 'dollyrevert', 'donation', 'edit', 'ellipsis-h', 'email', 'external-link-alt', 'external-link-square-alt',
|
||||
'delete', 'dolly', 'dollyrevert', 'donation', 'edit', 'ellipsis-h', 'email', 'eraser', 'external-link-alt', 'external-link-square-alt',
|
||||
'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'folder', 'folder-open', 'globe', 'globe-americas', 'grip', 'grip_title', 'group',
|
||||
'help', 'holiday',
|
||||
'intervention', 'label', 'language', 'list', 'listlight', 'lot',
|
||||
@ -5525,23 +5525,25 @@ function yn($yesno, $case = 1, $color = 0)
|
||||
|
||||
/**
|
||||
* Return a path to have a the directory according to object where files are stored.
|
||||
* New usage: $conf->module->multidir_output[$object->entity].'/'.get_exdir(0, 0, 0, 1, $object, $modulepart)
|
||||
* or: $conf->module->dir_output.'/'.get_exdir(0, 0, 0, 1, $object, $modulepart) if multidir_output not defined.
|
||||
* New usage: $conf->module->multidir_output[$object->entity].'/'.get_exdir(0, 0, 0, 1, $object, '')
|
||||
* or: $conf->module->dir_output.'/'.get_exdir(0, 0, 0, 1, $object, '') if multidir_output not defined.
|
||||
* Example our with new usage: $object is invoice -> 'INYYMM-ABCD'
|
||||
* Example our with old usage: '015' with level 3->"0/1/5/", '015' with level 1->"5/", 'ABC-1' with level 3 ->"0/0/1/"
|
||||
*
|
||||
* @param string $num Id of object (deprecated, $object will be used in future)
|
||||
* @param int $level Level of subdirs to return (1, 2 or 3 levels). (deprecated, global option will be used in future)
|
||||
* @param int $alpha 0=Keep number only to forge path, 1=Use alpha part afer the - (By default, use 0). (deprecated, global option will be used in future)
|
||||
* @param int $withoutslash 0=With slash at end (except if '/', we return ''), 1=without slash at end
|
||||
* @param Object $object Object
|
||||
* @param string $modulepart Type of object ('invoice_supplier, 'donation', 'invoice', ...')
|
||||
* @return string Dir to use ending. Example '' or '1/' or '1/2/'
|
||||
* @param string|int $num Id of object (deprecated, $object will be used in future)
|
||||
* @param int $level Level of subdirs to return (1, 2 or 3 levels). (deprecated, global option will be used in future)
|
||||
* @param int $alpha 0=Keep number only to forge path, 1=Use alpha part afer the - (By default, use 0). (deprecated, global option will be used in future)
|
||||
* @param int $withoutslash 0=With slash at end (except if '/', we return ''), 1=without slash at end
|
||||
* @param Object $object Object to use to get ref to forge the path.
|
||||
* @param string $modulepart Type of object ('invoice_supplier, 'donation', 'invoice', ...'). Use '' for autodetect from $object.
|
||||
* @return string Dir to use ending. Example '' or '1/' or '1/2/'
|
||||
*/
|
||||
function get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart)
|
||||
function get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart = '')
|
||||
{
|
||||
global $conf;
|
||||
|
||||
if (empty($modulepart) && !empty($object->module)) $modulepart = $object->module;
|
||||
|
||||
$path = '';
|
||||
|
||||
$arrayforoldpath = array('cheque', 'user', 'category', 'holiday', 'supplier_invoice', 'invoice_supplier', 'mailing', 'supplier_payment');
|
||||
@ -5556,14 +5558,12 @@ function get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart)
|
||||
if ($level == 2) $path = substr($num, 1, 1).'/'.substr($num, 0, 1);
|
||||
if ($level == 3) $path = substr($num, 2, 1).'/'.substr($num, 1, 1).'/'.substr($num, 0, 1);
|
||||
} else {
|
||||
// TODO
|
||||
// We will enhance here a common way of forging path for document storage
|
||||
// Here, object->id, object->ref and modulepart are required.
|
||||
// We will enhance here a common way of forging path for document storage.
|
||||
// In a future, we may distribut directories on several levels depending on setup and object.
|
||||
// Here, $object->id, $object->ref and $modulepart are required.
|
||||
//var_dump($modulepart);
|
||||
if (in_array($modulepart, array('thirdparty', 'contact', 'member', 'propal', 'proposal', 'commande', 'order', 'facture', 'invoice',
|
||||
'supplier_order', 'supplier_proposal', 'shipment', 'contract', 'expensereport', 'ficheinter')))
|
||||
{
|
||||
$path = ($object->ref ? $object->ref : $object->id);
|
||||
if (! in_array($modulepart, array('product'))) { // Test to remove
|
||||
$path = dol_sanitizeFileName(empty($object->ref) ? $object->id : $object->ref);
|
||||
}
|
||||
}
|
||||
|
||||
@ -6260,12 +6260,12 @@ function getCommonSubstitutionArray($outputlangs, $onlykey = 0, $exclude = null,
|
||||
$substitutionarray['__REFCLIENT__'] = (isset($object->ref_client) ? $object->ref_client : (isset($object->ref_customer) ? $object->ref_customer : null));
|
||||
$substitutionarray['__REFSUPPLIER__'] = (isset($object->ref_supplier) ? $object->ref_supplier : null);
|
||||
$substitutionarray['__SUPPLIER_ORDER_DATE_DELIVERY__'] = (isset($object->date_livraison) ? dol_print_date($object->date_livraison, 'day', 0, $outputlangs) : '');
|
||||
$substitutionarray['__SUPPLIER_ORDER_DELAY_DELIVERY__'] = $outputlangs->transnoentities("AvailabilityType".$object->availability_code) != ('AvailabilityType'.$object->availability_code) ? $outputlangs->transnoentities("AvailabilityType".$object->availability_code) : $outputlangs->convToOutputCharset(isset($object->availability) ? $object->availability : '');
|
||||
|
||||
$birthday = dol_print_date($object->birth, 'day');
|
||||
$substitutionarray['__SUPPLIER_ORDER_DELAY_DELIVERY__'] = (isset($object->availability_code) ? ($outputlangs->transnoentities("AvailabilityType".$object->availability_code) != ('AvailabilityType'.$object->availability_code) ? $outputlangs->transnoentities("AvailabilityType".$object->availability_code) : $outputlangs->convToOutputCharset(isset($object->availability) ? $object->availability : '')) : '');
|
||||
|
||||
if (is_object($object) && ($object->element == 'adherent' || $object->element == 'member') && $object->id > 0)
|
||||
{
|
||||
$birthday = (empty($object->birth) ? '': dol_print_date($object->birth, 'day'));
|
||||
|
||||
$substitutionarray['__MEMBER_ID__'] = (isset($object->id) ? $object->id : '');
|
||||
if (method_exists($object, 'getCivilityLabel')) $substitutionarray['__MEMBER_CIVILITY__'] = $object->getCivilityLabel();
|
||||
$substitutionarray['__MEMBER_FIRSTNAME__'] = (isset($object->firstname) ? $object->firstname : '');
|
||||
@ -6660,6 +6660,14 @@ function complete_substitutions_array(&$substitutionarray, $outputlangs, $object
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!empty($conf->global->ODT_ENABLE_ALL_TAGS_IN_SUBSTITUTIONS)) {
|
||||
// to list all tags in odt template
|
||||
$tags = '';
|
||||
foreach ($substitutionarray as $key => $value) {
|
||||
$tags .= '{' . $key . '} => ' . $value ."\n";
|
||||
}
|
||||
$substitutionarray = array_merge($substitutionarray, array('__ALL_TAGS__' => $tags));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -90,16 +90,6 @@ function product_prepare_head($object)
|
||||
$h++;
|
||||
}
|
||||
|
||||
$head[$h][0] = DOL_URL_ROOT."/product/stats/card.php?id=".$object->id;
|
||||
$head[$h][1] = $langs->trans('Statistics');
|
||||
$head[$h][2] = 'stats';
|
||||
$h++;
|
||||
|
||||
$head[$h][0] = DOL_URL_ROOT."/product/stats/facture.php?showmessage=1&id=".$object->id;
|
||||
$head[$h][1] = $langs->trans('Referers');
|
||||
$head[$h][2] = 'referers';
|
||||
$h++;
|
||||
|
||||
if (!empty($conf->variants->enabled) && ($object->isProduct() || $object->isService())) {
|
||||
global $db;
|
||||
|
||||
@ -149,6 +139,16 @@ function product_prepare_head($object)
|
||||
}
|
||||
}
|
||||
|
||||
$head[$h][0] = DOL_URL_ROOT."/product/stats/facture.php?showmessage=1&id=".$object->id;
|
||||
$head[$h][1] = $langs->trans('Referers');
|
||||
$head[$h][2] = 'referers';
|
||||
$h++;
|
||||
|
||||
$head[$h][0] = DOL_URL_ROOT."/product/stats/card.php?id=".$object->id;
|
||||
$head[$h][1] = $langs->trans('Statistics');
|
||||
$head[$h][2] = 'stats';
|
||||
$h++;
|
||||
|
||||
// Show more tabs from modules
|
||||
// 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
|
||||
|
||||
@ -239,7 +239,7 @@ function llxHeaderTicket($title, $head = "", $disablejs = 0, $disablehead = 0, $
|
||||
}
|
||||
print '</div>';
|
||||
if (empty($conf->global->MAIN_HIDE_POWERED_BY)) {
|
||||
print '<div class="poweredbypublicpayment opacitymedium right"><a href="https://www.dolibarr.org" target="dolibarr" rel="noopener">'.$langs->trans("PoweredBy").'<br><img src="'.DOL_URL_ROOT.'/theme/dolibarr_logo.svg" width="80px"></a></div>';
|
||||
print '<div class="poweredbypublicpayment opacitymedium right"><a class="poweredbyhref?utm_medium=website&utm_source=poweredby" href="https://www.dolibarr.org" target="dolibarr" rel="noopener">'.$langs->trans("PoweredBy").'<br><img src="'.DOL_URL_ROOT.'/theme/dolibarr_logo.svg" width="80px"></a></div>';
|
||||
}
|
||||
print '</div>';
|
||||
}
|
||||
|
||||
@ -93,7 +93,7 @@ class pdf_ban extends ModeleBankAccountDoc
|
||||
/**
|
||||
* Fonction generant le projet sur le disque
|
||||
*
|
||||
* @param Project $object Object project a generer
|
||||
* @param Account $object Object Account to generate
|
||||
* @param Translate $outputlangs Lang output object
|
||||
* @return int 1 if OK, <=0 if KO
|
||||
*/
|
||||
@ -114,8 +114,7 @@ class pdf_ban extends ModeleBankAccountDoc
|
||||
//$nblines = count($object->lines); // This is set later with array of tasks
|
||||
|
||||
// Definition of $dir and $file
|
||||
if ($object->specimen)
|
||||
{
|
||||
if ($object->specimen) {
|
||||
$dir = $conf->bank->dir_output;
|
||||
$file = $dir."/SPECIMEN.pdf";
|
||||
} else {
|
||||
@ -293,7 +292,7 @@ class pdf_ban extends ModeleBankAccountDoc
|
||||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Project $object Object to show
|
||||
* @param Account $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @return void
|
||||
@ -378,7 +377,7 @@ class pdf_ban extends ModeleBankAccountDoc
|
||||
* Show footer of page. Need this->emetteur object
|
||||
*
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param Project $object Object to show
|
||||
* @param Account $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return integer
|
||||
|
||||
@ -90,16 +90,16 @@ class pdf_sepamandate extends ModeleBankAccountDoc
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||
/**
|
||||
* Fonction generant le projet sur le disque
|
||||
* Function to create pdf of company bank account sepa mandate
|
||||
*
|
||||
* @param Project $object Object project a generer
|
||||
* @param Translate $outputlangs Lang output object
|
||||
* @param string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details (not used for this template)
|
||||
* @param int $hidedesc Do not show desc (not used for this template)
|
||||
* @param int $hideref Do not show ref (not used for this template)
|
||||
* @param null|array $moreparams More parameters
|
||||
* @return int 1 if OK, <=0 if KO
|
||||
* @param CompanyBankAccount $object Object bank account to generate document for
|
||||
* @param Translate $outputlangs Lang output object
|
||||
* @param string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details (not used for this template)
|
||||
* @param int $hidedesc Do not show desc (not used for this template)
|
||||
* @param int $hideref Do not show ref (not used for this template)
|
||||
* @param null|array $moreparams More parameters
|
||||
* @return int 1 if OK, <=0 if KO
|
||||
*/
|
||||
public function write_file($object, $outputlangs, $srctemplatepath = '', $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams = null)
|
||||
{
|
||||
@ -447,10 +447,10 @@ class pdf_sepamandate extends ModeleBankAccountDoc
|
||||
/**
|
||||
* Show miscellaneous information (payment mode, payment term, ...)
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param int $posy Y
|
||||
* @param Translate $outputlangs Langs object
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param CompanyBankAccount $object Object to show
|
||||
* @param int $posy Y
|
||||
* @param Translate $outputlangs Langs object
|
||||
* @return void
|
||||
*/
|
||||
protected function _tableau_info(&$pdf, $object, $posy, $outputlangs)
|
||||
@ -485,11 +485,11 @@ class pdf_sepamandate extends ModeleBankAccountDoc
|
||||
/**
|
||||
* Show area for the customer to sign
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Facture $object Object invoice
|
||||
* @param int $posy Position depart
|
||||
* @param Translate $outputlangs Objet langs
|
||||
* @return int Position pour suite
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param CompanyBankAccount $object Object invoice
|
||||
* @param int $posy Position depart
|
||||
* @param Translate $outputlangs Objet langs
|
||||
* @return int Position pour suite
|
||||
*/
|
||||
protected function _signature_area(&$pdf, $object, $posy, $outputlangs)
|
||||
{
|
||||
@ -527,10 +527,10 @@ class pdf_sepamandate extends ModeleBankAccountDoc
|
||||
/**
|
||||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Project $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param CompanyBankAccount $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @return void
|
||||
*/
|
||||
protected function _pagehead(&$pdf, $object, $showaddress, $outputlangs)
|
||||
@ -615,13 +615,13 @@ class pdf_sepamandate extends ModeleBankAccountDoc
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
|
||||
/**
|
||||
* Show footer of page. Need this->emetteur object
|
||||
* Show footer of page. Need this->emetteur object
|
||||
*
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param Project $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return integer
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param CompanyBankAccount $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return integer
|
||||
*/
|
||||
protected function _pagefoot(&$pdf, $object, $outputlangs, $hidefreetext = 0)
|
||||
{
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
* Copyright (C) 2012 Cedric Salvador <csalvador@gpcsolutions.fr>
|
||||
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
|
||||
* Copyright (C) 2017-2018 Ferran Marcet <fmarcet@2byte.es>
|
||||
* Copyright (C) 2018-2019 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -204,7 +204,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
/**
|
||||
* Function to build pdf onto disk
|
||||
*
|
||||
* @param Object $object Object to generate
|
||||
* @param Commande $object Object to generate
|
||||
* @param Translate $outputlangs Lang output object
|
||||
* @param string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details
|
||||
@ -343,7 +343,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
|
||||
// Incoterm
|
||||
$height_incoterms = 0;
|
||||
if ($conf->incoterm->enabled)
|
||||
if (!empty($conf->incoterm->enabled))
|
||||
{
|
||||
$desc_incoterms = $object->getIncotermsForPDF();
|
||||
if ($desc_incoterms)
|
||||
@ -655,7 +655,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
* Show payments table
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object order
|
||||
* @param Commande $object Object order
|
||||
* @param int $posy Position y in PDF
|
||||
* @param Translate $outputlangs Object langs for output
|
||||
* @return int <0 if KO, >0 if OK
|
||||
@ -671,7 +671,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
* Show miscellaneous information (payment mode, payment term, ...)
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Commande $object Object to show
|
||||
* @param int $posy Y
|
||||
* @param Translate $outputlangs Langs object
|
||||
* @return int
|
||||
@ -741,7 +741,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
}*/
|
||||
|
||||
// Show planed date of delivery
|
||||
if (!empty($object->date_livraison))
|
||||
if (!empty($object->delivery_date))
|
||||
{
|
||||
$outputlangs->load("sendings");
|
||||
$pdf->SetFont('', 'B', $default_font_size - 2);
|
||||
@ -750,12 +750,12 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
$pdf->MultiCell(80, 4, $titre, 0, 'L');
|
||||
$pdf->SetFont('', '', $default_font_size - 2);
|
||||
$pdf->SetXY($posxval, $posy);
|
||||
$dlp = dol_print_date($object->date_livraison, "daytext", false, $outputlangs, true);
|
||||
$dlp = dol_print_date($object->delivery_date, "daytext", false, $outputlangs, true);
|
||||
$pdf->MultiCell(80, 4, $dlp, 0, 'L');
|
||||
|
||||
$posy = $pdf->GetY() + 1;
|
||||
} elseif ($object->availability_code || $object->availability) // Show availability conditions
|
||||
{
|
||||
} elseif ($object->availability_code || $object->availability) {
|
||||
// Show availability conditions
|
||||
$pdf->SetFont('', 'B', $default_font_size - 2);
|
||||
$pdf->SetXY($this->marge_gauche, $posy);
|
||||
$titre = $outputlangs->transnoentities("AvailabilityPeriod").':';
|
||||
@ -859,7 +859,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
* Show total to pay
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Facture $object Object invoice
|
||||
* @param Commande $object Object invoice
|
||||
* @param int $deja_regle Montant deja regle
|
||||
* @param int $posy Position depart
|
||||
* @param Translate $outputlangs Objet langs
|
||||
@ -1242,7 +1242,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Commande $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param Translate $outputlangsbis Object lang for output bis
|
||||
@ -1495,7 +1495,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
* Show footer of page. Need this->emetteur object
|
||||
*
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Commande $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return int Return height of bottom margin including footer text
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
* Copyright (C) 2012 Cedric Salvador <csalvador@gpcsolutions.fr>
|
||||
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
|
||||
* Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es>
|
||||
* Copyright (C) 2018-2019 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -188,7 +188,7 @@ class pdf_eratosthene extends ModelePDFCommandes
|
||||
/**
|
||||
* Function to build pdf onto disk
|
||||
*
|
||||
* @param Object $object Object to generate
|
||||
* @param Commande $object Object to generate
|
||||
* @param Translate $outputlangs Lang output object
|
||||
* @param string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details
|
||||
@ -381,7 +381,7 @@ class pdf_eratosthene extends ModelePDFCommandes
|
||||
|
||||
// Incoterm
|
||||
$height_incoterms = 0;
|
||||
if ($conf->incoterm->enabled)
|
||||
if (!empty($conf->incoterm->enabled))
|
||||
{
|
||||
$desc_incoterms = $object->getIncotermsForPDF();
|
||||
if ($desc_incoterms)
|
||||
@ -876,7 +876,7 @@ class pdf_eratosthene extends ModelePDFCommandes
|
||||
* Show payments table
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object order
|
||||
* @param Commande $object Object order
|
||||
* @param int $posy Position y in PDF
|
||||
* @param Translate $outputlangs Object langs for output
|
||||
* @return int <0 if KO, >0 if OK
|
||||
@ -889,7 +889,7 @@ class pdf_eratosthene extends ModelePDFCommandes
|
||||
* Show miscellaneous information (payment mode, payment term, ...)
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Commande $object Object to show
|
||||
* @param int $posy Y
|
||||
* @param Translate $outputlangs Langs object
|
||||
* @return int Pos y
|
||||
@ -958,7 +958,7 @@ class pdf_eratosthene extends ModelePDFCommandes
|
||||
}*/
|
||||
|
||||
// Show planed date of delivery
|
||||
if (!empty($object->date_livraison))
|
||||
if (!empty($object->delivery_date))
|
||||
{
|
||||
$outputlangs->load("sendings");
|
||||
$pdf->SetFont('', 'B', $default_font_size - 2);
|
||||
@ -967,7 +967,7 @@ class pdf_eratosthene extends ModelePDFCommandes
|
||||
$pdf->MultiCell(80, 4, $titre, 0, 'L');
|
||||
$pdf->SetFont('', '', $default_font_size - 2);
|
||||
$pdf->SetXY($posxval, $posy);
|
||||
$dlp = dol_print_date($object->date_livraison, "daytext", false, $outputlangs, true);
|
||||
$dlp = dol_print_date($object->delivery_date, "daytext", false, $outputlangs, true);
|
||||
$pdf->MultiCell(80, 4, $dlp, 0, 'L');
|
||||
|
||||
$posy = $pdf->GetY() + 1;
|
||||
@ -1074,8 +1074,8 @@ class pdf_eratosthene extends ModelePDFCommandes
|
||||
/**
|
||||
* Show total to pay
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Facture $object Object invoice
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Commande $object Object to show
|
||||
* @param int $deja_regle Montant deja regle
|
||||
* @param int $posy Position depart
|
||||
* @param Translate $outputlangs Objet langs
|
||||
@ -1404,7 +1404,7 @@ class pdf_eratosthene extends ModelePDFCommandes
|
||||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Commande $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param Translate $outputlangsbis Object lang for output bis
|
||||
@ -1658,7 +1658,7 @@ class pdf_eratosthene extends ModelePDFCommandes
|
||||
* Show footer of page. Need this->emetteur object
|
||||
*
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Commande $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return int Return height of bottom margin including footer text
|
||||
@ -1676,7 +1676,7 @@ class pdf_eratosthene extends ModelePDFCommandes
|
||||
/**
|
||||
* Define Array Column Field
|
||||
*
|
||||
* @param object $object common object
|
||||
* @param Commande $object common object
|
||||
* @param Translate $outputlangs langs
|
||||
* @param int $hidedetails Do not show line details
|
||||
* @param int $hidedesc Do not show desc
|
||||
|
||||
@ -63,7 +63,7 @@ class pdf_proforma extends pdf_eratosthene
|
||||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Commande $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param string $titlekey Translation key to show as title of document
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
* Copyright (C) 2011 Fabrice CHERRIER
|
||||
* Copyright (C) 2013-2020 Philippe Grand <philippe.grand@atoo-net.com>
|
||||
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
|
||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -164,8 +164,8 @@ class pdf_strato extends ModelePDFContract
|
||||
/**
|
||||
* Function to build pdf onto disk
|
||||
*
|
||||
* @param CommonObject $object Id of object to generate
|
||||
* @param object $outputlangs Lang output object
|
||||
* @param Contrat $object Object to generate
|
||||
* @param Translate $outputlangs Lang output object
|
||||
* @param string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details
|
||||
* @param int $hidedesc Do not show desc
|
||||
@ -580,7 +580,7 @@ class pdf_strato extends ModelePDFContract
|
||||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param CommonObject $object Object to show
|
||||
* @param Contrat $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @return void
|
||||
@ -756,7 +756,7 @@ class pdf_strato extends ModelePDFContract
|
||||
* Show footer of page. Need this->emetteur object
|
||||
*
|
||||
* @param PDF $pdf PDF
|
||||
* @param CommonObject $object Object to show
|
||||
* @param Contrat $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return integer
|
||||
|
||||
@ -346,7 +346,7 @@ class pdf_storm extends ModelePDFDeliveryOrder
|
||||
|
||||
// Incoterm
|
||||
$height_incoterms = 0;
|
||||
if ($conf->incoterm->enabled)
|
||||
if (!empty($conf->incoterm->enabled))
|
||||
{
|
||||
$desc_incoterms = $object->getIncotermsForPDF();
|
||||
if ($desc_incoterms)
|
||||
@ -652,7 +652,7 @@ class pdf_storm extends ModelePDFDeliveryOrder
|
||||
* Show miscellaneous information (payment mode, payment term, ...)
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Delivery $object Object to show
|
||||
* @param int $posy Y
|
||||
* @param Translate $outputlangs Langs object
|
||||
* @return void
|
||||
@ -730,7 +730,7 @@ class pdf_storm extends ModelePDFDeliveryOrder
|
||||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Delivery $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @return void
|
||||
@ -906,8 +906,8 @@ class pdf_storm extends ModelePDFDeliveryOrder
|
||||
/**
|
||||
* Show footer of page. Need this->emetteur object
|
||||
*
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param Object $object Object to show
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param Delivery $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return int Return height of bottom margin including footer text
|
||||
@ -924,7 +924,7 @@ class pdf_storm extends ModelePDFDeliveryOrder
|
||||
/**
|
||||
* Define Array Column Field
|
||||
*
|
||||
* @param object $object common object
|
||||
* @param Delivery $object common object
|
||||
* @param Translate $outputlangs langs
|
||||
* @param int $hidedetails Do not show line details
|
||||
* @param int $hidedesc Do not show desc
|
||||
|
||||
@ -175,7 +175,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder
|
||||
/**
|
||||
* Function to build pdf onto disk
|
||||
*
|
||||
* @param Object $object Object to generate
|
||||
* @param Delivery $object Object to generate
|
||||
* @param Translate $outputlangs Lang output object
|
||||
* @param string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details
|
||||
@ -318,7 +318,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder
|
||||
|
||||
// Incoterm
|
||||
$height_incoterms = 0;
|
||||
if ($conf->incoterm->enabled)
|
||||
if (!empty($conf->incoterm->enabled))
|
||||
{
|
||||
$desc_incoterms = $object->getIncotermsForPDF();
|
||||
if ($desc_incoterms)
|
||||
@ -628,7 +628,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder
|
||||
* Show miscellaneous information (payment mode, payment term, ...)
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Delivery $object Object to show
|
||||
* @param int $posy Y
|
||||
* @param Translate $outputlangs Langs object
|
||||
* @return void
|
||||
@ -723,7 +723,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder
|
||||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Delivery $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @return void
|
||||
@ -897,7 +897,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder
|
||||
* Show footer of page. Need this->emetteur object
|
||||
*
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Delivery $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return int Return height of bottom margin including footer text
|
||||
|
||||
@ -139,7 +139,7 @@ class mod_delivery_saphir extends ModeleNumRefDeliveryOrder
|
||||
return 0;
|
||||
}
|
||||
|
||||
$numFinal = get_next_value($db, $mask, 'delivery', 'ref', '', $objsoc, $object->date_livraison);
|
||||
$numFinal = get_next_value($db, $mask, 'delivery', 'ref', '', $objsoc, $object->delivery_date);
|
||||
|
||||
return $numFinal;
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
* Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2014-2015 Marcos García <marcosgdf@gmail.com>
|
||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -146,7 +146,7 @@ class pdf_espadon extends ModelePdfExpedition
|
||||
/**
|
||||
* Function to build pdf onto disk
|
||||
*
|
||||
* @param Object $object Object expedition to generate (or id if old method)
|
||||
* @param Expedition $object Object expedition to generate (or id if old method)
|
||||
* @param Translate $outputlangs Lang output object
|
||||
* @param string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details
|
||||
@ -319,7 +319,7 @@ class pdf_espadon extends ModelePdfExpedition
|
||||
|
||||
// Incoterm
|
||||
$height_incoterms = 0;
|
||||
if ($conf->incoterm->enabled)
|
||||
if (!empty($conf->incoterm->enabled))
|
||||
{
|
||||
$desc_incoterms = $object->getIncotermsForPDF();
|
||||
if ($desc_incoterms)
|
||||
@ -672,7 +672,7 @@ class pdf_espadon extends ModelePdfExpedition
|
||||
* Show total to pay
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Facture $object Object invoice
|
||||
* @param Expedition $object Object expedition
|
||||
* @param int $deja_regle Amount already paid
|
||||
* @param int $posy Start Position
|
||||
* @param Translate $outputlangs Objet langs
|
||||
@ -823,7 +823,7 @@ class pdf_espadon extends ModelePdfExpedition
|
||||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Expedition $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @return void
|
||||
@ -1066,7 +1066,7 @@ class pdf_espadon extends ModelePdfExpedition
|
||||
* Show footer of page. Need this->emetteur object
|
||||
*
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Expedition $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return int Return height of bottom margin including footer text
|
||||
@ -1081,7 +1081,7 @@ class pdf_espadon extends ModelePdfExpedition
|
||||
/**
|
||||
* Define Array Column Field
|
||||
*
|
||||
* @param object $object common object
|
||||
* @param Expedition $object common object
|
||||
* @param Translate $outputlangs langs
|
||||
* @param int $hidedetails Do not show line details
|
||||
* @param int $hidedesc Do not show desc
|
||||
|
||||
@ -146,7 +146,7 @@ class pdf_merou extends ModelePdfExpedition
|
||||
/**
|
||||
* Function to build pdf onto disk
|
||||
*
|
||||
* @param Object $object Object expedition to generate (or id if old method)
|
||||
* @param Expedition $object Object expedition to generate (or id if old method)
|
||||
* @param Translate $outputlangs Lang output object
|
||||
* @param string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details
|
||||
@ -481,7 +481,7 @@ class pdf_merou extends ModelePdfExpedition
|
||||
* Show footer of page. Need this->emetteur object
|
||||
*
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Expedition $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return void
|
||||
@ -510,7 +510,7 @@ class pdf_merou extends ModelePdfExpedition
|
||||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Expedition $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @return void
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
* Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2014-2015 Marcos García <marcosgdf@gmail.com>
|
||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -178,7 +178,7 @@ class pdf_rouget extends ModelePdfExpedition
|
||||
/**
|
||||
* Function to build pdf onto disk
|
||||
*
|
||||
* @param Object $object Object expedition to generate (or id if old method)
|
||||
* @param Expedition $object Object expedition to generate (or id if old method)
|
||||
* @param Translate $outputlangs Lang output object
|
||||
* @param string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details
|
||||
@ -338,7 +338,7 @@ class pdf_rouget extends ModelePdfExpedition
|
||||
|
||||
// Incoterm
|
||||
$height_incoterms = 0;
|
||||
if ($conf->incoterm->enabled)
|
||||
if (!empty($conf->incoterm->enabled))
|
||||
{
|
||||
$desc_incoterms = $object->getIncotermsForPDF();
|
||||
if ($desc_incoterms)
|
||||
@ -662,8 +662,8 @@ class pdf_rouget extends ModelePdfExpedition
|
||||
/**
|
||||
* Show total to pay
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Facture $object Object invoice
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Expedition $object Object invoice
|
||||
* @param int $deja_regle Montant deja regle
|
||||
* @param int $posy Position depart
|
||||
* @param Translate $outputlangs Objet langs
|
||||
@ -858,7 +858,7 @@ class pdf_rouget extends ModelePdfExpedition
|
||||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Expedition $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @return void
|
||||
@ -1101,7 +1101,7 @@ class pdf_rouget extends ModelePdfExpedition
|
||||
* Show footer of page. Need this->emetteur object
|
||||
*
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Expedition $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return int Return height of bottom margin including footer text
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
/* Copyright (C) 2015 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2015 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||
* Copyright (C) 2016-2019 Philippe Grand <philippe.grand@atoo-net.com>
|
||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2018 Francis Appels <francis.appels@z-application.com>
|
||||
* Copyright (C) 2019 Markus Welters <markus@welters.de>
|
||||
* Copyright (C) 2019 Rafael Ingenleuf <ingenleuf@welters.de>
|
||||
@ -199,13 +199,13 @@ class pdf_standard extends ModeleExpenseReport
|
||||
/**
|
||||
* Function to build pdf onto disk
|
||||
*
|
||||
* @param Object $object Object to generate
|
||||
* @param Translate $outputlangs Lang output object
|
||||
* @param string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details
|
||||
* @param int $hidedesc Do not show desc
|
||||
* @param int $hideref Do not show ref
|
||||
* @return int 1=OK, 0=KO
|
||||
* @param ExpenseReport $object Object to generate
|
||||
* @param Translate $outputlangs Lang output object
|
||||
* @param string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details
|
||||
* @param int $hidedesc Do not show desc
|
||||
* @param int $hideref Do not show ref
|
||||
* @return int 1=OK, 0=KO
|
||||
*/
|
||||
public function write_file($object, $outputlangs, $srctemplatepath = '', $hidedetails = 0, $hidedesc = 0, $hideref = 0)
|
||||
{
|
||||
@ -558,13 +558,13 @@ class pdf_standard extends ModeleExpenseReport
|
||||
}
|
||||
|
||||
/**
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param int $linenumber line number
|
||||
* @param int $curY current y position
|
||||
* @param int $default_font_size default siez of font
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidedetails Hide details (0=no, 1=yes, 2=just special lines)
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param ExpenseReport $object Object to show
|
||||
* @param int $linenumber line number
|
||||
* @param int $curY current y position
|
||||
* @param int $default_font_size default siez of font
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidedetails Hide details (0=no, 1=yes, 2=just special lines)
|
||||
* @return void
|
||||
*/
|
||||
protected function printLine(&$pdf, $object, $linenumber, $curY, $default_font_size, $outputlangs, $hidedetails = 0)
|
||||
@ -644,10 +644,10 @@ class pdf_standard extends ModeleExpenseReport
|
||||
/**
|
||||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param ExpenseReport $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @return void
|
||||
*/
|
||||
protected function _pagehead(&$pdf, $object, $showaddress, $outputlangs)
|
||||
@ -981,11 +981,11 @@ class pdf_standard extends ModeleExpenseReport
|
||||
/**
|
||||
* Show payments table
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object invoice
|
||||
* @param int $posy Position y in PDF
|
||||
* @param Translate $outputlangs Object langs for output
|
||||
* @return int <0 if KO, >0 if OK
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param ExpenseReport $object Object expensereport
|
||||
* @param int $posy Position y in PDF
|
||||
* @param Translate $outputlangs Object langs for output
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
protected function tablePayments(&$pdf, $object, $posy, $outputlangs)
|
||||
{
|
||||
@ -1093,11 +1093,11 @@ class pdf_standard extends ModeleExpenseReport
|
||||
/**
|
||||
* Show footer of page. Need this->emetteur object
|
||||
*
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return int Return height of bottom margin including footer text
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param ExpenseReport $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return int Return height of bottom margin including footer text
|
||||
*/
|
||||
protected function _pagefoot(&$pdf, $object, $outputlangs, $hidefreetext = 0)
|
||||
{
|
||||
|
||||
@ -220,7 +220,7 @@ class pdf_crabe extends ModelePDFFactures
|
||||
/**
|
||||
* Function to build pdf onto disk
|
||||
*
|
||||
* @param Object $object Object to generate
|
||||
* @param Facture $object Object to generate
|
||||
* @param Translate $outputlangs Lang output object
|
||||
* @param string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details
|
||||
@ -420,7 +420,7 @@ class pdf_crabe extends ModelePDFFactures
|
||||
$tab_top_newpage = (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD) ? 42 + $top_shift : 10);
|
||||
|
||||
// Incoterm
|
||||
if ($conf->incoterm->enabled)
|
||||
if (! empty($conf->incoterm->enabled))
|
||||
{
|
||||
$desc_incoterms = $object->getIncotermsForPDF();
|
||||
if ($desc_incoterms)
|
||||
@ -782,7 +782,7 @@ class pdf_crabe extends ModelePDFFactures
|
||||
* Show payments table
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object invoice
|
||||
* @param Facture $object Object invoice
|
||||
* @param int $posy Position y in PDF
|
||||
* @param Translate $outputlangs Object langs for output
|
||||
* @param int $heightforfooter height for footer
|
||||
@ -967,7 +967,7 @@ class pdf_crabe extends ModelePDFFactures
|
||||
* Show miscellaneous information (payment mode, payment term, ...)
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Facture $object Object to show
|
||||
* @param int $posy Y
|
||||
* @param Translate $outputlangs Langs object
|
||||
* @return void
|
||||
@ -1588,7 +1588,7 @@ class pdf_crabe extends ModelePDFFactures
|
||||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Facture $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @return void
|
||||
@ -1891,7 +1891,7 @@ class pdf_crabe extends ModelePDFFactures
|
||||
* Show footer of page. Need this->emetteur object
|
||||
*
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Facture $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return int Return height of bottom margin including footer text
|
||||
|
||||
@ -197,7 +197,7 @@ class pdf_sponge extends ModelePDFFactures
|
||||
/**
|
||||
* Function to build pdf onto disk
|
||||
*
|
||||
* @param Object $object Object to generate
|
||||
* @param Facture $object Object to generate
|
||||
* @param Translate $outputlangs Lang output object
|
||||
* @param string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details
|
||||
@ -422,7 +422,7 @@ class pdf_sponge extends ModelePDFFactures
|
||||
|
||||
// Incoterm
|
||||
$height_incoterms = 0;
|
||||
if ($conf->incoterm->enabled)
|
||||
if (!empty($conf->incoterm->enabled))
|
||||
{
|
||||
$desc_incoterms = $object->getIncotermsForPDF();
|
||||
if ($desc_incoterms)
|
||||
@ -926,7 +926,7 @@ class pdf_sponge extends ModelePDFFactures
|
||||
* Show payments table
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object invoice
|
||||
* @param Facture $object Object invoice
|
||||
* @param int $posy Position y in PDF
|
||||
* @param Translate $outputlangs Object langs for output
|
||||
* @return int <0 if KO, >0 if OK
|
||||
@ -1064,7 +1064,7 @@ class pdf_sponge extends ModelePDFFactures
|
||||
* Show miscellaneous information (payment mode, payment term, ...)
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Facture $object Object to show
|
||||
* @param int $posy Y
|
||||
* @param Translate $outputlangs Langs object
|
||||
* @return int Pos y
|
||||
@ -1829,7 +1829,7 @@ class pdf_sponge extends ModelePDFFactures
|
||||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Facture $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param Translate $outputlangsbis Object lang for output bis
|
||||
@ -2150,7 +2150,7 @@ class pdf_sponge extends ModelePDFFactures
|
||||
* Show footer of page. Need this->emetteur object
|
||||
*
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Facture $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return int Return height of bottom margin including footer text
|
||||
@ -2165,7 +2165,7 @@ class pdf_sponge extends ModelePDFFactures
|
||||
/**
|
||||
* Define Array Column Field
|
||||
*
|
||||
* @param object $object common object
|
||||
* @param Facture $object common object
|
||||
* @param Translate $outputlangs langs
|
||||
* @param int $hidedetails Do not show line details
|
||||
* @param int $hidedesc Do not show desc
|
||||
|
||||
@ -156,7 +156,7 @@ class pdf_soleil extends ModelePDFFicheinter
|
||||
/**
|
||||
* Function to build pdf onto disk
|
||||
*
|
||||
* @param Object $object Object to generate
|
||||
* @param Fichinter $object Object to generate
|
||||
* @param Translate $outputlangs Lang output object
|
||||
* @param string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details
|
||||
@ -537,7 +537,7 @@ class pdf_soleil extends ModelePDFFicheinter
|
||||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Fichinter $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @return void
|
||||
@ -710,7 +710,7 @@ class pdf_soleil extends ModelePDFFicheinter
|
||||
* Show footer of page. Need this->emetteur object
|
||||
*
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Fichinter $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return integer
|
||||
|
||||
420
htdocs/core/modules/member/doc/doc_generic_member_odt.class.php
Normal file
420
htdocs/core/modules/member/doc/doc_generic_member_odt.class.php
Normal file
@ -0,0 +1,420 @@
|
||||
<?php
|
||||
/* Copyright (C) 2010-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2012 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
* or see https://www.gnu.org/
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/core/modules/member/doc/doc_generic_member_odt.modules.php
|
||||
* \ingroup societe
|
||||
* \brief File of class to build ODT documents for members
|
||||
*/
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/modules/member/modules_member.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/doc.lib.php';
|
||||
|
||||
|
||||
/**
|
||||
* Class to build documents using ODF templates generator
|
||||
*/
|
||||
class doc_generic_member_odt extends ModelePDFMember
|
||||
{
|
||||
/**
|
||||
* @var Societe Issuer
|
||||
*/
|
||||
public $emetteur;
|
||||
|
||||
/**
|
||||
* @var array Minimum version of PHP required by module.
|
||||
* e.g.: PHP ≥ 5.6 = array(5, 6)
|
||||
*/
|
||||
public $phpmin = array(5, 6);
|
||||
|
||||
/**
|
||||
* Dolibarr version of the loaded document
|
||||
* @var string
|
||||
*/
|
||||
public $version = 'dolibarr';
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param DoliDB $db Database handler
|
||||
*/
|
||||
public function __construct($db)
|
||||
{
|
||||
global $conf, $langs, $mysoc;
|
||||
|
||||
// Load translation files required by the page
|
||||
$langs->loadLangs(array("main", "companies"));
|
||||
|
||||
$this->db = $db;
|
||||
$this->name = "ODT templates";
|
||||
$this->description = $langs->trans("DocumentModelOdt");
|
||||
$this->scandir = 'MEMBER_ADDON_PDF_ODT_PATH'; // Name of constant that is used to save list of directories to scan
|
||||
|
||||
// Page size for A4 format
|
||||
$this->type = 'odt';
|
||||
$this->page_largeur = 0;
|
||||
$this->page_hauteur = 0;
|
||||
$this->format = array($this->page_largeur, $this->page_hauteur);
|
||||
$this->marge_gauche = 0;
|
||||
$this->marge_droite = 0;
|
||||
$this->marge_haute = 0;
|
||||
$this->marge_basse = 0;
|
||||
|
||||
$this->option_logo = 1; // Affiche logo
|
||||
$this->option_tva = 0; // Gere option tva MEMBER_TVAOPTION
|
||||
$this->option_modereg = 0; // Affiche mode reglement
|
||||
$this->option_condreg = 0; // Affiche conditions reglement
|
||||
$this->option_codeproduitservice = 0; // Affiche code produit-service
|
||||
$this->option_multilang = 1; // Dispo en plusieurs langues
|
||||
$this->option_escompte = 0; // Affiche si il y a eu escompte
|
||||
$this->option_credit_note = 0; // Support credit notes
|
||||
$this->option_freetext = 1; // Support add of a personalised text
|
||||
$this->option_draft_watermark = 0; // Support add of a watermark on drafts
|
||||
|
||||
// Recupere emetteur
|
||||
$this->emetteur = $mysoc;
|
||||
if (!$this->emetteur->country_code) $this->emetteur->country_code = substr($langs->defaultlang, -2); // By default if not defined
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return description of a module
|
||||
*
|
||||
* @param Translate $langs Lang object to use for output
|
||||
* @return string Description
|
||||
*/
|
||||
public function info($langs)
|
||||
{
|
||||
global $conf, $langs;
|
||||
|
||||
// Load translation files required by the page
|
||||
$langs->loadLangs(array('companies', 'errors'));
|
||||
|
||||
$form = new Form($this->db);
|
||||
|
||||
$texte = $this->description.".<br>\n";
|
||||
$texte .= '<form action="'.$_SERVER["PHP_SELF"].'" method="POST" enctype="multipart/form-data">';
|
||||
$texte .= '<input type="hidden" name="token" value="'.newToken().'">';
|
||||
$texte .= '<input type="hidden" name="action" value="setModuleOptions">';
|
||||
$texte .= '<input type="hidden" name="param1" value="MEMBER_ADDON_PDF_ODT_PATH">';
|
||||
$texte .= '<table class="nobordernopadding" width="100%">';
|
||||
|
||||
// List of directories area
|
||||
$texte .= '<tr><td>';
|
||||
$texttitle = $langs->trans("ListOfDirectories");
|
||||
$listofdir = explode(',', preg_replace('/[\r\n]+/', ',', trim($conf->global->MEMBER_ADDON_PDF_ODT_PATH)));
|
||||
$listoffiles = array();
|
||||
foreach ($listofdir as $key=>$tmpdir)
|
||||
{
|
||||
$tmpdir = trim($tmpdir);
|
||||
$tmpdir = preg_replace('/DOL_DATA_ROOT/', DOL_DATA_ROOT, $tmpdir);
|
||||
if (!$tmpdir) {
|
||||
unset($listofdir[$key]); continue;
|
||||
}
|
||||
if (!is_dir($tmpdir)) $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0);
|
||||
else {
|
||||
$tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.(ods|odt)');
|
||||
if (count($tmpfiles)) $listoffiles = array_merge($listoffiles, $tmpfiles);
|
||||
}
|
||||
}
|
||||
$texthelp = $langs->trans("ListOfDirectoriesForModelGenODT");
|
||||
// Add list of substitution keys
|
||||
$texthelp .= '<br>'.$langs->trans("FollowingSubstitutionKeysCanBeUsed").'<br>';
|
||||
$texthelp .= $langs->transnoentitiesnoconv("FullListOnOnlineDocumentation"); // This contains an url, we don't modify it
|
||||
|
||||
$texte .= $form->textwithpicto($texttitle, $texthelp, 1, 'help', '', 1);
|
||||
$texte .= '<div><div style="display: inline-block; min-width: 100px; vertical-align: middle;">';
|
||||
$texte .= '<textarea class="flat" cols="60" name="value1">';
|
||||
$texte .= $conf->global->MEMBER_ADDON_PDF_ODT_PATH;
|
||||
$texte .= '</textarea>';
|
||||
$texte .= '</div><div style="display: inline-block; vertical-align: middle;">';
|
||||
$texte .= '<input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button">';
|
||||
$texte .= '<br></div></div>';
|
||||
|
||||
// Scan directories
|
||||
if (count($listofdir))
|
||||
{
|
||||
$texte .= $langs->trans("NumberOfModelFilesFound").': <b>'.count($listoffiles).'</b>';
|
||||
$texte .= '<div id="div_'.get_class($this).'" class="hidden">';
|
||||
foreach ($listoffiles as $file) {
|
||||
$texte .= $file['name'].'<br>';
|
||||
}
|
||||
$texte .= '</div>';
|
||||
}
|
||||
// Add input to upload a new template file.
|
||||
$texte .= '<div>'.$langs->trans("UploadNewTemplate").' <input type="file" name="uploadfile">';
|
||||
$texte .= '<input type="hidden" value="MEMBER_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
||||
$texte .= '<input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
||||
$texte .= '</div>';
|
||||
$texte .= '</td>';
|
||||
|
||||
$texte .= '<td rowspan="2" class="tdtop hideonsmartphone">';
|
||||
$texte .= $langs->trans("ExampleOfDirectoriesForModelGen");
|
||||
$texte .= '</td>';
|
||||
$texte .= '</tr>';
|
||||
|
||||
$texte .= '</table>';
|
||||
$texte .= '</form>';
|
||||
|
||||
return $texte;
|
||||
}
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||
/**
|
||||
* Function to build a document on disk using the generic odt module.
|
||||
*
|
||||
* @param Adherent $object Object source to build document
|
||||
* @param Translate $outputlangs Lang output object
|
||||
* @param string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param string $mode Tell if doc module is called for 'member', ...
|
||||
* @param int $nooutput 1=Generate only file on disk and do not return it on response
|
||||
* @return int 1 if OK, <=0 if KO
|
||||
*/
|
||||
public function write_file($object, $outputlangs, $srctemplatepath, $mode = 'member', $nooutput = 0)
|
||||
{
|
||||
// phpcs:enable
|
||||
global $user, $langs, $conf, $mysoc, $hookmanager;
|
||||
|
||||
if (empty($srctemplatepath)) {
|
||||
dol_syslog("doc_generic_odt::write_file parameter srctemplatepath empty", LOG_WARNING);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Add odtgeneration hook
|
||||
if (!is_object($hookmanager))
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php';
|
||||
$hookmanager = new HookManager($this->db);
|
||||
}
|
||||
$hookmanager->initHooks(array('odtgeneration'));
|
||||
global $action;
|
||||
|
||||
if (!is_object($outputlangs)) $outputlangs = $langs;
|
||||
$sav_charset_output = $outputlangs->charset_output;
|
||||
$outputlangs->charset_output = 'UTF-8';
|
||||
|
||||
// Load translation files required by the page
|
||||
$outputlangs->loadLangs(array("main", "companies", "bills", "dict"));
|
||||
|
||||
if ($conf->adherent->dir_output) {
|
||||
// If $object is id instead of object
|
||||
if (!is_object($object)) {
|
||||
$id = $object;
|
||||
$object = new User($this->db);
|
||||
$result = $object->fetch($id);
|
||||
if ($result < 0) {
|
||||
dol_print_error($this->db, $object->error);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
$object->fetch_thirdparty();
|
||||
|
||||
$dir = $conf->adherent->dir_output;
|
||||
$objectref = dol_sanitizeFileName($object->ref);
|
||||
if (!preg_match('/specimen/i', $objectref)) $dir .= "/".$objectref;
|
||||
$file = $dir."/".$objectref.".odt";
|
||||
|
||||
if (!file_exists($dir)) {
|
||||
if (dol_mkdir($dir) < 0) {
|
||||
$this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (file_exists($dir)) {
|
||||
//print "srctemplatepath=".$srctemplatepath; // Src filename
|
||||
$newfile = basename($srctemplatepath);
|
||||
$newfiletmp = preg_replace('/\.od(t|s)/i', '', $newfile);
|
||||
$newfiletmp = preg_replace('/template_/i', '', $newfiletmp);
|
||||
$newfiletmp = preg_replace('/modele_/i', '', $newfiletmp);
|
||||
|
||||
$newfiletmp = $objectref.'_'.$newfiletmp;
|
||||
|
||||
// Get extension (ods or odt)
|
||||
$newfileformat = substr($newfile, strrpos($newfile, '.') + 1);
|
||||
if (!empty($conf->global->MAIN_DOC_USE_TIMING)) {
|
||||
$format = $conf->global->MAIN_DOC_USE_TIMING;
|
||||
if ($format == '1') $format = '%Y%m%d%H%M%S';
|
||||
$filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat;
|
||||
} else {
|
||||
$filename = $newfiletmp.'.'.$newfileformat;
|
||||
}
|
||||
$file = $dir.'/'.$filename;
|
||||
//print "newdir=".$dir;
|
||||
//print "newfile=".$newfile;
|
||||
//print "file=".$file;
|
||||
//print "conf->adherent->dir_temp=".$conf->adherent->dir_temp;
|
||||
|
||||
dol_mkdir($conf->adherent->dir_temp);
|
||||
|
||||
|
||||
// If CUSTOMER contact defined on member, we use it
|
||||
$usecontact = false;
|
||||
$arrayidcontact = $object->getIdContact('external', 'CUSTOMER');
|
||||
if (count($arrayidcontact) > 0) {
|
||||
$usecontact = true;
|
||||
$result = $object->fetch_contact($arrayidcontact[0]);
|
||||
}
|
||||
|
||||
// Recipient name
|
||||
if (!empty($usecontact)) {
|
||||
// On peut utiliser le nom de la societe du contact
|
||||
if (!empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) {
|
||||
$socobject = $object->contact;
|
||||
} else {
|
||||
$socobject = $object->thirdparty;
|
||||
// if we have a CUSTOMER contact and we dont use it as recipient we store the contact object for later use
|
||||
$contactobject = $object->contact;
|
||||
}
|
||||
} else {
|
||||
$socobject = $object->thirdparty;
|
||||
}
|
||||
|
||||
// Open and load template
|
||||
require_once ODTPHP_PATH.'odf.php';
|
||||
try {
|
||||
$odfHandler = new odf(
|
||||
$srctemplatepath,
|
||||
array(
|
||||
'PATH_TO_TMP' => $conf->adherent->dir_temp,
|
||||
'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy.
|
||||
'DELIMITER_LEFT' => '{',
|
||||
'DELIMITER_RIGHT' => '}'
|
||||
)
|
||||
);
|
||||
} catch (Exception $e)
|
||||
{
|
||||
$this->error = $e->getMessage();
|
||||
dol_syslog($e->getMessage(), LOG_WARNING);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Make substitutions into odt
|
||||
$array_member = $this->getSubstitutionarrayMember($object, $outputlangs);
|
||||
$array_soc = $this->get_substitutionarray_mysoc($mysoc, $outputlangs);
|
||||
$array_thirdparty = $this->get_substitutionarray_thirdparty($socobject, $outputlangs);
|
||||
$array_other = $this->get_substitutionarray_other($outputlangs);
|
||||
// retrieve contact information for use in object as contact_xxx tags
|
||||
$array_thirdparty_contact = array();
|
||||
if ($usecontact && is_object($contactobject)) $array_thirdparty_contact = $this->get_substitutionarray_contact($contactobject, $outputlangs, 'contact');
|
||||
|
||||
$tmparray = array_merge($array_member, $array_soc, $array_thirdparty, $array_other, $array_thirdparty_contact);
|
||||
complete_substitutions_array($tmparray, $outputlangs, $object);
|
||||
// Call the ODTSubstitution hook
|
||||
$parameters = array(
|
||||
'file'=>$file,
|
||||
'object'=>$object,
|
||||
'outputlangs'=>$outputlangs,
|
||||
'substitutionarray'=>&$tmparray
|
||||
);
|
||||
$reshook = $hookmanager->executeHooks('ODTSubstitution', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
|
||||
foreach ($tmparray as $key=>$value) {
|
||||
try {
|
||||
if (preg_match('/logo$/', $key)) {
|
||||
// Image
|
||||
if (file_exists($value)) $odfHandler->setImage($key, $value);
|
||||
else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8');
|
||||
} else {
|
||||
// Text
|
||||
$odfHandler->setVars($key, $value, true, 'UTF-8');
|
||||
}
|
||||
} catch (OdfException $e) {
|
||||
dol_syslog($e->getMessage(), LOG_WARNING);
|
||||
}
|
||||
}
|
||||
|
||||
// Replace labels translated
|
||||
$tmparray = $outputlangs->get_translations_for_substitutions();
|
||||
foreach ($tmparray as $key=>$value) {
|
||||
try {
|
||||
$odfHandler->setVars($key, $value, true, 'UTF-8');
|
||||
} catch (OdfException $e) {
|
||||
dol_syslog($e->getMessage(), LOG_WARNING);
|
||||
}
|
||||
}
|
||||
|
||||
// Call the beforeODTSave hook
|
||||
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs);
|
||||
$reshook = $hookmanager->executeHooks('beforeODTSave', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
|
||||
|
||||
// Write new file
|
||||
if (!empty($conf->global->MAIN_ODT_AS_PDF)) {
|
||||
try {
|
||||
$odfHandler->exportAsAttachedPDF($file);
|
||||
} catch (Exception $e) {
|
||||
$this->error = $e->getMessage();
|
||||
dol_syslog($e->getMessage(), LOG_WARNING);
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
$odfHandler->saveToDisk($file);
|
||||
} catch (Exception $e) {
|
||||
$this->error = $e->getMessage();
|
||||
dol_syslog($e->getMessage(), LOG_WARNING);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
$reshook = $hookmanager->executeHooks('afterODTCreation', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
|
||||
|
||||
if (!empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
$odfHandler = null; // Destroy object
|
||||
|
||||
$this->result = array('fullpath'=>$file);
|
||||
|
||||
return 1; // Success
|
||||
} else {
|
||||
$this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||
/**
|
||||
* get substitution array for object
|
||||
*
|
||||
* @param Adherent $object member
|
||||
* @param Translate $outputlangs translation object
|
||||
* @param string $array_key key for array
|
||||
* @return array array of substitutions
|
||||
*/
|
||||
public function get_substitutionarray_object($object, $outputlangs, $array_key = 'object')
|
||||
{
|
||||
// phpcs:enable
|
||||
$array_other = array();
|
||||
foreach ($object as $key => $value) {
|
||||
if (!is_array($value) && !is_object($value)) {
|
||||
$array_other[$array_key.'_'.$key] = $value;
|
||||
}
|
||||
}
|
||||
return $array_other;
|
||||
}
|
||||
}
|
||||
66
htdocs/core/modules/member/modules_member.class.php
Normal file
66
htdocs/core/modules/member/modules_member.class.php
Normal file
@ -0,0 +1,66 @@
|
||||
<?php
|
||||
/* Copyright (C) 2003-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
* or see https://www.gnu.org/
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* \class ModeleProductCode
|
||||
* \brief Parent class for product code generators
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/core/modules/member/modules_member.php
|
||||
* \ingroup members
|
||||
* \brief File with parent class for generating members to PDF
|
||||
*/
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/commondocgenerator.class.php';
|
||||
|
||||
/**
|
||||
* Parent class to manage intervention document templates
|
||||
*/
|
||||
abstract class ModelePDFMember extends CommonDocGenerator
|
||||
{
|
||||
/**
|
||||
* @var string Error code (or message)
|
||||
*/
|
||||
public $error = '';
|
||||
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||
/**
|
||||
* Return list of active generation modules
|
||||
*
|
||||
* @param DoliDB $db Database handler
|
||||
* @param integer $maxfilenamelength Max length of value to show
|
||||
* @return array List of templates
|
||||
*/
|
||||
public static function liste_modeles($db, $maxfilenamelength = 0)
|
||||
{
|
||||
// phpcs:enable
|
||||
|
||||
$type = 'member';
|
||||
$list = array();
|
||||
|
||||
include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
||||
$list = getListOfModels($db, $type, $maxfilenamelength);
|
||||
return $list;
|
||||
}
|
||||
}
|
||||
@ -60,7 +60,10 @@ class modAdherent extends DolibarrModules
|
||||
$this->picto = 'member';
|
||||
|
||||
// Data directories to create when module is enabled
|
||||
$this->dirs = array("/adherent/temp");
|
||||
$this->dirs = array(
|
||||
"/adherent/temp",
|
||||
"/doctemplates/members",
|
||||
);
|
||||
|
||||
// Config pages
|
||||
$this->config_page_url = array("adherent.php@adherents");
|
||||
@ -178,6 +181,13 @@ class modAdherent extends DolibarrModules
|
||||
$this->const[$r][4] = 0;
|
||||
$r++;
|
||||
|
||||
$this->const[$r][0] = "MEMBER_ADDON_PDF_ODT_PATH";
|
||||
$this->const[$r][1] = "chaine";
|
||||
$this->const[$r][2] = "DOL_DATA_ROOT/doctemplates/members";
|
||||
$this->const[$r][3] = "";
|
||||
$this->const[$r][4] = 0;
|
||||
$r++;
|
||||
|
||||
|
||||
// Boxes
|
||||
//-------
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/*
|
||||
* Copyright (C) 2014-2018 Frederic France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2014-2020 Frederic France <frederic.france@netlogic.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -141,6 +141,8 @@ class printing_printipp extends PrintingDriver
|
||||
$ipp->setPort($this->port);
|
||||
$ipp->setJobName($file, true);
|
||||
$ipp->setUserName($this->userid);
|
||||
// Set default number of copy
|
||||
$ipp->setCopies(1);
|
||||
if (!empty($this->user)) $ipp->setAuthentication($this->user, $this->password);
|
||||
|
||||
// select printer uri for module order, propal,...
|
||||
@ -148,10 +150,11 @@ class printing_printipp extends PrintingDriver
|
||||
$result = $this->db->query($sql);
|
||||
if ($result) {
|
||||
$obj = $this->db->fetch_object($result);
|
||||
if ($obj)
|
||||
{
|
||||
if ($obj) {
|
||||
dol_syslog("Found a default printer for user ".$user->id." = ".$obj->printer_id);
|
||||
$ipp->setPrinterURI($obj->printer_id);
|
||||
// Set number of copy
|
||||
$ipp->setCopies($obj->copy);
|
||||
} else {
|
||||
if (!empty($conf->global->PRINTIPP_URI_DEFAULT))
|
||||
{
|
||||
@ -167,8 +170,6 @@ class printing_printipp extends PrintingDriver
|
||||
dol_print_error($this->db);
|
||||
}
|
||||
|
||||
// Set number of copy
|
||||
$ipp->setCopies($obj->copy);
|
||||
$fileprint = $conf->{$module}->dir_output;
|
||||
if ($subdir != '') $fileprint .= '/'.$subdir;
|
||||
$fileprint .= '/'.$file;
|
||||
|
||||
@ -690,7 +690,7 @@ class pdf_standard extends ModelePDFProduct
|
||||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Product $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param string $titlekey Translation key to show as title of document
|
||||
@ -837,7 +837,7 @@ class pdf_standard extends ModelePDFProduct
|
||||
* Show footer of page. Need this->emetteur object
|
||||
*
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Product $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return int Return height of bottom margin including footer text
|
||||
|
||||
@ -38,26 +38,6 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
||||
|
||||
class pdf_baleine extends ModelePDFProjects
|
||||
{
|
||||
/**
|
||||
* @var DoliDb Database handler
|
||||
*/
|
||||
public $db;
|
||||
|
||||
/**
|
||||
* @var string model name
|
||||
*/
|
||||
public $name;
|
||||
|
||||
/**
|
||||
* @var string model description (short text)
|
||||
*/
|
||||
public $description;
|
||||
|
||||
/**
|
||||
* @var string document type
|
||||
*/
|
||||
public $type;
|
||||
|
||||
/**
|
||||
* @var array Minimum version of PHP required by module.
|
||||
* e.g.: PHP ≥ 5.6 = array(5, 6)
|
||||
@ -70,44 +50,9 @@ class pdf_baleine extends ModelePDFProjects
|
||||
*/
|
||||
public $version = 'dolibarr';
|
||||
|
||||
/**
|
||||
* @var int page_largeur
|
||||
*/
|
||||
public $page_largeur;
|
||||
|
||||
/**
|
||||
* @var int page_hauteur
|
||||
*/
|
||||
public $page_hauteur;
|
||||
|
||||
/**
|
||||
* @var array format
|
||||
*/
|
||||
public $format;
|
||||
|
||||
/**
|
||||
* @var int marge_gauche
|
||||
*/
|
||||
public $marge_gauche;
|
||||
|
||||
/**
|
||||
* @var int marge_droite
|
||||
*/
|
||||
public $marge_droite;
|
||||
|
||||
/**
|
||||
* @var int marge_haute
|
||||
*/
|
||||
public $marge_haute;
|
||||
|
||||
/**
|
||||
* @var int marge_basse
|
||||
*/
|
||||
public $marge_basse;
|
||||
|
||||
/**
|
||||
* Issuer
|
||||
* @var Societe object that emits
|
||||
* @var Societe Object that emits
|
||||
*/
|
||||
public $emetteur;
|
||||
|
||||
@ -149,10 +94,10 @@ class pdf_baleine extends ModelePDFProjects
|
||||
// Define position of columns
|
||||
$this->posxref = $this->marge_gauche + 1;
|
||||
$this->posxlabel = $this->marge_gauche + 25;
|
||||
$this->posxworkload = $this->marge_gauche + 120;
|
||||
$this->posxprogress = $this->marge_gauche + 140;
|
||||
$this->posxdatestart = $this->marge_gauche + 152;
|
||||
$this->posxdateend = $this->marge_gauche + 170;
|
||||
$this->posxworkload = $this->marge_gauche + 117;
|
||||
$this->posxprogress = $this->marge_gauche + 137;
|
||||
$this->posxdatestart = $this->marge_gauche + 147;
|
||||
$this->posxdateend = $this->marge_gauche + 169;
|
||||
if ($this->page_largeur < 210) // To work with US executive format
|
||||
{
|
||||
$this->posxref -= 20;
|
||||
@ -420,7 +365,8 @@ class pdf_baleine extends ModelePDFProjects
|
||||
// Progress
|
||||
$pdf->SetXY($this->posxprogress, $curY);
|
||||
$pdf->MultiCell($this->posxdatestart - $this->posxprogress, 3, $progress, 0, 'R');
|
||||
// Date
|
||||
|
||||
// Date start and end
|
||||
$pdf->SetXY($this->posxdatestart, $curY);
|
||||
$pdf->MultiCell($this->posxdateend - $this->posxdatestart, 3, $datestart, 0, 'C');
|
||||
$pdf->SetXY($this->posxdateend, $curY);
|
||||
@ -538,7 +484,7 @@ class pdf_baleine extends ModelePDFProjects
|
||||
// Draw rect of all tab (title + lines). Rect takes a length in 3rd parameter
|
||||
$pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur - $this->marge_gauche - $this->marge_droite, $tab_height);
|
||||
|
||||
// line takes a position y in 3rd parameter
|
||||
// Line takes a position y in 3rd parameter
|
||||
$pdf->line($this->marge_gauche, $tab_top + $heightoftitleline, $this->page_largeur - $this->marge_droite, $tab_top + $heightoftitleline);
|
||||
|
||||
$pdf->SetTextColor(0, 0, 0);
|
||||
@ -556,11 +502,13 @@ class pdf_baleine extends ModelePDFProjects
|
||||
$pdf->SetXY($this->posxprogress, $tab_top + 1);
|
||||
$pdf->MultiCell($this->posxdatestart - $this->posxprogress, 3, '%', 0, 'R');
|
||||
|
||||
// Date start
|
||||
$pdf->SetXY($this->posxdatestart, $tab_top + 1);
|
||||
$pdf->MultiCell($this->posxdateend - $this->posxdatestart, 3, '', 0, 'C');
|
||||
$pdf->MultiCell($this->posxdateend - $this->posxdatestart, 3, $outputlangs->trans("Start"), 0, 'C');
|
||||
|
||||
// Date end
|
||||
$pdf->SetXY($this->posxdateend, $tab_top + 1);
|
||||
$pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxdatestart, 3, '', 0, 'C');
|
||||
$pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxdateend, 3, $outputlangs->trans("End"), 0, 'C');
|
||||
}
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
|
||||
|
||||
@ -111,14 +111,14 @@ class pdf_beluga extends ModelePDFProjects
|
||||
if ($this->orientation == 'L' || $this->orientation == 'Landscape') {
|
||||
$this->posxref = $this->marge_gauche + 1;
|
||||
$this->posxdate = $this->marge_gauche + 105;
|
||||
$this->posxsociety = $this->marge_gauche + 125;
|
||||
$this->posxsociety = $this->marge_gauche + 126;
|
||||
$this->posxamountht = $this->marge_gauche + 190;
|
||||
$this->posxamountttc = $this->marge_gauche + 215;
|
||||
$this->posxstatut = $this->marge_gauche + 245;
|
||||
} else {
|
||||
$this->posxref = $this->marge_gauche + 1;
|
||||
$this->posxdate = $this->marge_gauche + 25;
|
||||
$this->posxsociety = $this->marge_gauche + 45;
|
||||
$this->posxsociety = $this->marge_gauche + 46;
|
||||
$this->posxamountht = $this->marge_gauche + 110;
|
||||
$this->posxamountttc = $this->marge_gauche + 135;
|
||||
$this->posxstatut = $this->marge_gauche + 165;
|
||||
|
||||
@ -37,9 +37,21 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
||||
|
||||
class pdf_timespent extends ModelePDFProjects
|
||||
{
|
||||
/**
|
||||
* @var array Minimum version of PHP required by module.
|
||||
* e.g.: PHP ≥ 5.6 = array(5, 6)
|
||||
*/
|
||||
public $phpmin = array(5, 6);
|
||||
|
||||
/**
|
||||
* Dolibarr version of the loaded document
|
||||
* @var string
|
||||
*/
|
||||
public $version = 'dolibarr';
|
||||
|
||||
/**
|
||||
* Issuer
|
||||
* @var Societe
|
||||
* @var Societe Object that emits
|
||||
*/
|
||||
public $emetteur;
|
||||
|
||||
@ -81,25 +93,26 @@ class pdf_timespent extends ModelePDFProjects
|
||||
// Define position of columns
|
||||
$this->posxref = $this->marge_gauche + 1;
|
||||
$this->posxlabel = $this->marge_gauche + 25;
|
||||
$this->posxworkload = $this->marge_gauche + 100;
|
||||
$this->posxtimespent = $this->marge_gauche + 120;
|
||||
//$this->posxprogress=$this->marge_gauche+140;
|
||||
$this->posxdatestart = $this->marge_gauche + 152;
|
||||
$this->posxdateend = $this->marge_gauche + 170;
|
||||
$this->posxuser = $this->marge_gauche + 147;
|
||||
//$this->posxdateend = $this->marge_gauche + 169;
|
||||
if ($this->page_largeur < 210) // To work with US executive format
|
||||
{
|
||||
$this->posxref -= 20;
|
||||
$this->posxlabel -= 20;
|
||||
$this->posxtimespent -= 20;
|
||||
//$this->posxprogress-=20;
|
||||
$this->posxdatestart -= 20;
|
||||
$this->posxdateend -= 20;
|
||||
$this->posxuser -= 20;
|
||||
//$this->posxdateend -= 20;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||
/**
|
||||
* Fonction generant le projet sur le disque
|
||||
* Function to build pdf project onto disk
|
||||
*
|
||||
* @param Project $object Object project a generer
|
||||
* @param Translate $outputlangs Lang output object
|
||||
@ -156,6 +169,7 @@ class pdf_timespent extends ModelePDFProjects
|
||||
$heightforinfotot = 40; // Height reserved to output the info and total part
|
||||
$heightforfreetext = (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT) ? $conf->global->MAIN_PDF_FREETEXT_HEIGHT : 5); // Height reserved to output the free text on last page
|
||||
$heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin)
|
||||
if (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS)) $heightforfooter += 6;
|
||||
|
||||
if (class_exists('TCPDF'))
|
||||
{
|
||||
@ -227,7 +241,7 @@ class pdf_timespent extends ModelePDFProjects
|
||||
|
||||
// Rect takes a length in 3rd parameter
|
||||
$pdf->SetDrawColor(192, 192, 192);
|
||||
$pdf->Rect($this->marge_gauche, $tab_top - 1, $this->page_largeur - $this->marge_gauche - $this->marge_droite, $height_note + 1);
|
||||
$pdf->Rect($this->marge_gauche, $tab_top - 2, $this->page_largeur - $this->marge_gauche - $this->marge_droite, $height_note + 2);
|
||||
|
||||
$tab_height = $tab_height - $height_note;
|
||||
$tab_top = $nexY + 6;
|
||||
@ -240,6 +254,10 @@ class pdf_timespent extends ModelePDFProjects
|
||||
$curY = $tab_top + $heightoftitleline + 1;
|
||||
$nexY = $tab_top + $heightoftitleline + 1;
|
||||
|
||||
$tmpuser = new User($this->db);
|
||||
|
||||
// TODO We should loop on record of times spent grouped by user instead of lines of tasks
|
||||
|
||||
// Loop on each lines
|
||||
for ($i = 0; $i < $nblines; $i++)
|
||||
{
|
||||
@ -340,22 +358,24 @@ class pdf_timespent extends ModelePDFProjects
|
||||
$pdf->setPage($pageposafter); $curY = $tab_top_newpage + $heightoftitleline + 1;
|
||||
}
|
||||
|
||||
$pdf->SetFont('', '', $default_font_size - 1); // On repositionne la police par defaut
|
||||
$pdf->SetFont('', '', $default_font_size - 1); // We reposition the default font
|
||||
|
||||
// Ref of task
|
||||
$pdf->SetXY($this->posxref, $curY);
|
||||
$pdf->MultiCell($this->posxlabel - $this->posxref, 3, $outputlangs->convToOutputCharset($ref), 0, 'L');
|
||||
// timespent
|
||||
$pdf->SetXY($this->posxtimespent, $curY);
|
||||
$pdf->MultiCell($this->posxdatestart - $this->posxtimespent, 3, $duration ? $duration : '', 0, 'R');
|
||||
$pdf->MultiCell($this->posxuser - $this->posxtimespent, 3, $duration ? $duration : '', 0, 'R');
|
||||
// Progress
|
||||
//$pdf->SetXY($this->posxprogress, $curY);
|
||||
//$pdf->MultiCell($this->posxdatestart-$this->posxprogress, 3, $progress, 0, 'R');
|
||||
// Date
|
||||
$pdf->SetXY($this->posxdatestart, $curY);
|
||||
$pdf->MultiCell($this->posxdateend - $this->posxdatestart, 3, $datestart, 0, 'C');
|
||||
$pdf->SetXY($this->posxdateend, $curY);
|
||||
$pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxdateend, 3, $dateend, 0, 'C');
|
||||
//$pdf->MultiCell($this->posxuser-$this->posxprogress, 3, $progress, 0, 'R');
|
||||
|
||||
// User spending time
|
||||
/*var_dump($object->lines[$i]);exit;
|
||||
$tmpuser->fetch($object->lines[$i]->fk_user);
|
||||
$pdf->SetXY($this->posxuser, $curY);
|
||||
$pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxuser, 3, $tmpuser->getFullName($outputlangs, 0, -1, 20), 0, 'C');
|
||||
*/
|
||||
|
||||
// Add line
|
||||
if (!empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
|
||||
@ -408,7 +428,7 @@ class pdf_timespent extends ModelePDFProjects
|
||||
else $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0);
|
||||
$bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1;
|
||||
|
||||
// Pied de page
|
||||
// Footer of the page
|
||||
$this->_pagefoot($pdf, $object, $outputlangs);
|
||||
if (method_exists($pdf, 'AliasNbPages')) $pdf->AliasNbPages();
|
||||
|
||||
@ -469,7 +489,7 @@ class pdf_timespent extends ModelePDFProjects
|
||||
// Draw rect of all tab (title + lines). Rect takes a length in 3rd parameter
|
||||
$pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur - $this->marge_gauche - $this->marge_droite, $tab_height);
|
||||
|
||||
// line prend une position y en 3eme param
|
||||
// Line takes a position y in 3rd parameter
|
||||
$pdf->line($this->marge_gauche, $tab_top + $heightoftitleline, $this->page_largeur - $this->marge_droite, $tab_top + $heightoftitleline);
|
||||
|
||||
$pdf->SetTextColor(0, 0, 0);
|
||||
@ -482,16 +502,13 @@ class pdf_timespent extends ModelePDFProjects
|
||||
$pdf->MultiCell($this->posxtimespent - $this->posxlabel, 3, $outputlangs->transnoentities("Description"), 0, 'L');
|
||||
|
||||
$pdf->SetXY($this->posxtimespent, $tab_top + 1);
|
||||
$pdf->MultiCell($this->posxdatestart - $this->posxtimespent, 3, $outputlangs->transnoentities("TimeSpent"), 0, 'R');
|
||||
$pdf->MultiCell($this->posxuser - $this->posxtimespent, 3, $outputlangs->transnoentities("TimeSpent"), 0, 'R');
|
||||
|
||||
//$pdf->SetXY($this->posxprogress, $tab_top+1);
|
||||
//$pdf->MultiCell($this->posxdatestart-$this->posxprogress, 3, '%', 0, 'R');
|
||||
//$pdf->MultiCell($this->posxuser - $this->posxprogress, 3, '%', 0, 'R');
|
||||
|
||||
$pdf->SetXY($this->posxdatestart, $tab_top + 1);
|
||||
$pdf->MultiCell($this->posxdateend - $this->posxdatestart, 3, $outputlangs->transnoentities("Date"), 0, 'C');
|
||||
|
||||
$pdf->SetXY($this->posxdateend, $tab_top + 1);
|
||||
$pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxdatestart, 3, '', 0, 'C');
|
||||
$pdf->SetXY($this->posxuser, $tab_top + 1);
|
||||
$pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxuser, 3, '', 0, 'C');
|
||||
}
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
|
||||
|
||||
@ -31,6 +31,61 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/commondocgenerator.class.php';
|
||||
*/
|
||||
abstract class ModelePDFProjects extends CommonDocGenerator
|
||||
{
|
||||
/**
|
||||
* @var DoliDb Database handler
|
||||
*/
|
||||
public $db;
|
||||
|
||||
/**
|
||||
* @var string model name
|
||||
*/
|
||||
public $name;
|
||||
|
||||
/**
|
||||
* @var string model description (short text)
|
||||
*/
|
||||
public $description;
|
||||
|
||||
/**
|
||||
* @var string document type
|
||||
*/
|
||||
public $type;
|
||||
|
||||
/**
|
||||
* @var int page_largeur
|
||||
*/
|
||||
public $page_largeur;
|
||||
|
||||
/**
|
||||
* @var int page_hauteur
|
||||
*/
|
||||
public $page_hauteur;
|
||||
|
||||
/**
|
||||
* @var array format
|
||||
*/
|
||||
public $format;
|
||||
|
||||
/**
|
||||
* @var int marge_gauche
|
||||
*/
|
||||
public $marge_gauche;
|
||||
|
||||
/**
|
||||
* @var int marge_droite
|
||||
*/
|
||||
public $marge_droite;
|
||||
|
||||
/**
|
||||
* @var int marge_haute
|
||||
*/
|
||||
public $marge_haute;
|
||||
|
||||
/**
|
||||
* @var int marge_basse
|
||||
*/
|
||||
public $marge_basse;
|
||||
|
||||
/**
|
||||
* @var string Error code (or message)
|
||||
*/
|
||||
|
||||
@ -204,7 +204,7 @@ class pdf_azur extends ModelePDFPropales
|
||||
/**
|
||||
* Function to build pdf onto disk
|
||||
*
|
||||
* @param Object $object Object to generate
|
||||
* @param Propal $object Object to generate
|
||||
* @param Translate $outputlangs Lang output object
|
||||
* @param string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details
|
||||
@ -396,7 +396,7 @@ class pdf_azur extends ModelePDFPropales
|
||||
$tab_top_newpage = (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD) ? 42 + $top_shift : 10);
|
||||
|
||||
// Incoterm
|
||||
if ($conf->incoterm->enabled)
|
||||
if (!empty($conf->incoterm->enabled))
|
||||
{
|
||||
$desc_incoterms = $object->getIncotermsForPDF();
|
||||
if ($desc_incoterms)
|
||||
@ -827,8 +827,8 @@ class pdf_azur extends ModelePDFPropales
|
||||
/**
|
||||
* Show payments table
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object proposal
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Propal $object Object proposal
|
||||
* @param int $posy Position y in PDF
|
||||
* @param Translate $outputlangs Object langs for output
|
||||
* @return int <0 if KO, >0 if OK
|
||||
@ -844,7 +844,7 @@ class pdf_azur extends ModelePDFPropales
|
||||
* Show miscellaneous information (payment mode, payment term, ...)
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Propal $object Object to show
|
||||
* @param int $posy Y
|
||||
* @param Translate $outputlangs Langs object
|
||||
* @return void
|
||||
@ -870,7 +870,7 @@ class pdf_azur extends ModelePDFPropales
|
||||
$posxval = 52;
|
||||
|
||||
// Show shipping date
|
||||
if (!empty($object->date_livraison))
|
||||
if (!empty($object->delivery_date))
|
||||
{
|
||||
$outputlangs->load("sendings");
|
||||
$pdf->SetFont('', 'B', $default_font_size - 2);
|
||||
@ -879,7 +879,7 @@ class pdf_azur extends ModelePDFPropales
|
||||
$pdf->MultiCell(80, 4, $titre, 0, 'L');
|
||||
$pdf->SetFont('', '', $default_font_size - 2);
|
||||
$pdf->SetXY($posxval, $posy);
|
||||
$dlp = dol_print_date($object->date_livraison, "daytext", false, $outputlangs, true);
|
||||
$dlp = dol_print_date($object->delivery_date, "daytext", false, $outputlangs, true);
|
||||
$pdf->MultiCell(80, 4, $dlp, 0, 'L');
|
||||
|
||||
$posy = $pdf->GetY() + 1;
|
||||
@ -1415,7 +1415,7 @@ class pdf_azur extends ModelePDFPropales
|
||||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Propal $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @return void
|
||||
@ -1666,7 +1666,7 @@ class pdf_azur extends ModelePDFPropales
|
||||
* Show footer of page. Need this->emetteur object
|
||||
*
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Propal $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return int Return height of bottom margin including footer text
|
||||
@ -1684,7 +1684,7 @@ class pdf_azur extends ModelePDFPropales
|
||||
* Show area for the customer to sign
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Facture $object Object invoice
|
||||
* @param Propal $object Object invoice
|
||||
* @param int $posy Position depart
|
||||
* @param Translate $outputlangs Objet langs
|
||||
* @return int Position pour suite
|
||||
|
||||
@ -187,7 +187,7 @@ class pdf_cyan extends ModelePDFPropales
|
||||
/**
|
||||
* Function to build pdf onto disk
|
||||
*
|
||||
* @param Object $object Object to generate
|
||||
* @param Propal $object Object to generate
|
||||
* @param Translate $outputlangs Lang output object
|
||||
* @param string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details
|
||||
@ -384,7 +384,7 @@ class pdf_cyan extends ModelePDFPropales
|
||||
|
||||
// Incoterm
|
||||
$height_incoterms = 0;
|
||||
if ($conf->incoterm->enabled)
|
||||
if (!empty($conf->incoterm->enabled))
|
||||
{
|
||||
$desc_incoterms = $object->getIncotermsForPDF();
|
||||
if ($desc_incoterms)
|
||||
@ -967,8 +967,8 @@ class pdf_cyan extends ModelePDFPropales
|
||||
/**
|
||||
* Show payments table
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object proposal
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Propal $object Object proposal
|
||||
* @param int $posy Position y in PDF
|
||||
* @param Translate $outputlangs Object langs for output
|
||||
* @return int <0 if KO, >0 if OK
|
||||
@ -981,7 +981,7 @@ class pdf_cyan extends ModelePDFPropales
|
||||
* Show miscellaneous information (payment mode, payment term, ...)
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Propal $object Object to show
|
||||
* @param int $posy Y
|
||||
* @param Translate $outputlangs Langs object
|
||||
* @return int Pos y
|
||||
@ -1006,7 +1006,7 @@ class pdf_cyan extends ModelePDFPropales
|
||||
$posxval = 52;
|
||||
|
||||
// Show shipping date
|
||||
if (!empty($object->date_livraison))
|
||||
if (!empty($object->delivery_date))
|
||||
{
|
||||
$outputlangs->load("sendings");
|
||||
$pdf->SetFont('', 'B', $default_font_size - 2);
|
||||
@ -1015,7 +1015,7 @@ class pdf_cyan extends ModelePDFPropales
|
||||
$pdf->MultiCell(80, 4, $titre, 0, 'L');
|
||||
$pdf->SetFont('', '', $default_font_size - 2);
|
||||
$pdf->SetXY($posxval, $posy);
|
||||
$dlp = dol_print_date($object->date_livraison, "daytext", false, $outputlangs, true);
|
||||
$dlp = dol_print_date($object->delivery_date, "daytext", false, $outputlangs, true);
|
||||
$pdf->MultiCell(80, 4, $dlp, 0, 'L');
|
||||
|
||||
$posy = $pdf->GetY() + 1;
|
||||
@ -1158,8 +1158,8 @@ class pdf_cyan extends ModelePDFPropales
|
||||
/**
|
||||
* Show total to pay
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Facture $object Object invoice
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Propal $object Object proposal
|
||||
* @param int $deja_regle Montant deja regle
|
||||
* @param int $posy Position depart
|
||||
* @param Translate $outputlangs Objet langs
|
||||
@ -1507,7 +1507,7 @@ class pdf_cyan extends ModelePDFPropales
|
||||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Propal $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param Translate $outputlangsbis Object lang for output bis
|
||||
@ -1553,8 +1553,7 @@ class pdf_cyan extends ModelePDFPropales
|
||||
} else {
|
||||
$logo = $logodir.'/logos/'.$this->emetteur->logo;
|
||||
}
|
||||
if (is_readable($logo))
|
||||
{
|
||||
if (is_readable($logo)) {
|
||||
$height = pdf_getHeightForLogo($logo);
|
||||
$pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto)
|
||||
} else {
|
||||
@ -1762,7 +1761,7 @@ class pdf_cyan extends ModelePDFPropales
|
||||
* Show footer of page. Need this->emetteur object
|
||||
*
|
||||
* @param TCPDF $pdf PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Propal $object Object to show
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @param int $hidefreetext 1=Hide free text
|
||||
* @return int Return height of bottom margin including footer text
|
||||
@ -1777,8 +1776,8 @@ class pdf_cyan extends ModelePDFPropales
|
||||
/**
|
||||
* Show area for the customer to sign
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Facture $object Object invoice
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Propal $object Object proposal
|
||||
* @param int $posy Position depart
|
||||
* @param Translate $outputlangs Objet langs
|
||||
* @return int Position pour suite
|
||||
@ -1813,7 +1812,7 @@ class pdf_cyan extends ModelePDFPropales
|
||||
/**
|
||||
* Define Array Column Field
|
||||
*
|
||||
* @param object $object common object
|
||||
* @param Propal $object object proposal
|
||||
* @param Translate $outputlangs langs
|
||||
* @param int $hidedetails Do not show line details
|
||||
* @param int $hidedesc Do not show desc
|
||||
|
||||
@ -254,7 +254,7 @@ class pdf_squille extends ModelePdfReception
|
||||
|
||||
// Incoterm
|
||||
$height_incoterms = 0;
|
||||
if ($conf->incoterm->enabled)
|
||||
if (!empty($conf->incoterm->enabled))
|
||||
{
|
||||
$desc_incoterms = $object->getIncotermsForPDF();
|
||||
if ($desc_incoterms)
|
||||
|
||||
@ -336,7 +336,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices
|
||||
$tab_top_newpage = (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD) ? 42 + $top_shift : 10);
|
||||
|
||||
// Incoterm
|
||||
if ($conf->incoterm->enabled)
|
||||
if (!empty($conf->incoterm->enabled))
|
||||
{
|
||||
$desc_incoterms = $object->getIncotermsForPDF();
|
||||
if ($desc_incoterms)
|
||||
|
||||
@ -342,7 +342,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders
|
||||
$tab_top_newpage = (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD) ? 42 + $top_shift : 10);
|
||||
|
||||
// Incoterm
|
||||
if ($conf->incoterm->enabled)
|
||||
if (!empty($conf->incoterm->enabled))
|
||||
{
|
||||
$desc_incoterms = $object->getIncotermsForPDF();
|
||||
if ($desc_incoterms)
|
||||
@ -1276,11 +1276,11 @@ class pdf_cornas extends ModelePDFSuppliersOrders
|
||||
$pdf->SetTextColor(0, 0, 60);
|
||||
$usehourmin = 'day';
|
||||
if (!empty($conf->global->SUPPLIER_ORDER_USE_HOUR_FOR_DELIVERY_DATE)) $usehourmin = 'dayhour';
|
||||
if (!empty($object->date_livraison))
|
||||
if (!empty($object->delivery_date))
|
||||
{
|
||||
$posy += 4;
|
||||
$pdf->SetXY($posx - 90, $posy);
|
||||
$pdf->MultiCell(190, 3, $outputlangs->transnoentities("DateDeliveryPlanned")." : ".dol_print_date($object->date_livraison, $usehourmin, false, $outputlangs, true), '', 'R');
|
||||
$pdf->MultiCell(190, 3, $outputlangs->transnoentities("DateDeliveryPlanned")." : ".dol_print_date($object->delivery_date, $usehourmin, false, $outputlangs, true), '', 'R');
|
||||
}
|
||||
|
||||
if ($object->thirdparty->code_fournisseur)
|
||||
|
||||
@ -370,7 +370,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
$tab_top_newpage = (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD) ? 42 + $top_shift : 10);
|
||||
|
||||
// Incoterm
|
||||
if ($conf->incoterm->enabled)
|
||||
if (!empty($conf->incoterm->enabled))
|
||||
{
|
||||
$desc_incoterms = $object->getIncotermsForPDF();
|
||||
if ($desc_incoterms)
|
||||
@ -1190,11 +1190,11 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
$pdf->SetTextColor(0, 0, 60);
|
||||
$usehourmin = 'day';
|
||||
if (!empty($conf->global->SUPPLIER_ORDER_USE_HOUR_FOR_DELIVERY_DATE)) $usehourmin = 'dayhour';
|
||||
if (!empty($object->date_livraison))
|
||||
if (!empty($object->delivery_date))
|
||||
{
|
||||
$posy += 4;
|
||||
$pdf->SetXY($posx - 90, $posy);
|
||||
$pdf->MultiCell(190, 3, $outputlangs->transnoentities("DateDeliveryPlanned")." : ".dol_print_date($object->date_livraison, $usehourmin, false, $outputlangs, true), '', 'R');
|
||||
$pdf->MultiCell(190, 3, $outputlangs->transnoentities("DateDeliveryPlanned")." : ".dol_print_date($object->delivery_date, $usehourmin, false, $outputlangs, true), '', 'R');
|
||||
}
|
||||
|
||||
if ($object->thirdparty->code_fournisseur)
|
||||
|
||||
@ -724,7 +724,7 @@ class pdf_aurore extends ModelePDFSupplierProposal
|
||||
$posxval = 52;
|
||||
|
||||
// Show shipping date
|
||||
if (!empty($object->date_livraison))
|
||||
if (!empty($object->delivery_date))
|
||||
{
|
||||
$outputlangs->load("sendings");
|
||||
$pdf->SetFont('', 'B', $default_font_size - 2);
|
||||
@ -733,7 +733,7 @@ class pdf_aurore extends ModelePDFSupplierProposal
|
||||
$pdf->MultiCell(80, 4, $titre, 0, 'L');
|
||||
$pdf->SetFont('', '', $default_font_size - 2);
|
||||
$pdf->SetXY($posxval, $posy);
|
||||
$dlp = dol_print_date($object->date_livraison, "daytext", false, $outputlangs, true);
|
||||
$dlp = dol_print_date($object->delivery_date, "daytext", false, $outputlangs, true);
|
||||
$pdf->MultiCell(80, 4, $dlp, 0, 'L');
|
||||
|
||||
$posy = $pdf->GetY() + 1;
|
||||
@ -745,7 +745,7 @@ class pdf_aurore extends ModelePDFSupplierProposal
|
||||
$pdf->MultiCell(80, 4, $titre, 0, 'L');
|
||||
$pdf->SetFont('', '', $default_font_size - 2);
|
||||
$pdf->SetXY($posxval, $posy);
|
||||
//$dlp=dol_print_date($object->date_livraison,"daytext",false,$outputlangs,true);
|
||||
//$dlp=dol_print_date($object->delivery_date,"daytext",false,$outputlangs,true);
|
||||
$pdf->MultiCell(80, 4, '', 0, 'L');
|
||||
|
||||
$posy = $pdf->GetY() + 1;
|
||||
@ -1325,7 +1325,7 @@ class pdf_aurore extends ModelePDFSupplierProposal
|
||||
$posy+=4;
|
||||
$pdf->SetXY($posx,$posy);
|
||||
$pdf->SetTextColor(0,0,60);
|
||||
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("SupplierProposalDate")." : " . dol_print_date($object->date_livraison, "day", false, $outputlangs, true), '', 'R');
|
||||
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("SupplierProposalDate")." : " . dol_print_date($object->delivery_date, "day", false, $outputlangs, true), '', 'R');
|
||||
*/
|
||||
|
||||
if ($object->thirdparty->code_fournisseur)
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/* Copyright (C) 2010-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2012 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -114,7 +114,7 @@ class doc_generic_user_odt extends ModelePDFUser
|
||||
$form = new Form($this->db);
|
||||
|
||||
$texte = $this->description.".<br>\n";
|
||||
$texte .= '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
|
||||
$texte .= '<form action="'.$_SERVER["PHP_SELF"].'" method="POST" enctype="multipart/form-data">';
|
||||
$texte .= '<input type="hidden" name="token" value="'.newToken().'">';
|
||||
$texte .= '<input type="hidden" name="action" value="setModuleOptions">';
|
||||
$texte .= '<input type="hidden" name="param1" value="USER_ADDON_PDF_ODT_PATH">';
|
||||
@ -187,7 +187,17 @@ class doc_generic_user_odt extends ModelePDFUser
|
||||
$texte .= "</td></tr>";
|
||||
$texte .= '</table>';
|
||||
}
|
||||
$texte .= '<div id="div_'.get_class($this).'" class="hidden">';
|
||||
foreach ($listoffiles as $file) {
|
||||
$texte .= $file['name'].'<br>';
|
||||
}
|
||||
$texte .= '</div>';
|
||||
}
|
||||
// Add input to upload a new template file.
|
||||
$texte .= '<div>'.$langs->trans("UploadNewTemplate").' <input type="file" name="uploadfile">';
|
||||
$texte .= '<input type="hidden" value="USER_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
||||
$texte .= '<input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
||||
$texte .= '</div>';
|
||||
|
||||
$texte .= '</td>';
|
||||
|
||||
|
||||
0
htdocs/core/modules/user/doc/index.html
Normal file
0
htdocs/core/modules/user/doc/index.html
Normal file
@ -153,7 +153,7 @@ $listofexamplesforlink = 'Societe:societe/class/societe.class.php<br>Contact:con
|
||||
<tr><td class="fieldrequired"><?php echo $langs->trans("AttributeCode"); ?></td><td class="valeur"><input type="text" name="attrname" id="attrname" size="10" value="<?php echo GETPOST('attrname', 'alpha'); ?>"> <span class="opacitymedium">(<?php echo $langs->trans("AlphaNumOnlyLowerCharsAndNoSpace"); ?>)</span></td></tr>
|
||||
<!-- Type -->
|
||||
<tr><td class="fieldrequired"><?php echo $langs->trans("Type"); ?></td><td class="valeur">
|
||||
<?php print $form->selectarray('type', $type2label, GETPOST('type', 'alpha')); ?>
|
||||
<?php print $form->selectarray('type', $type2label, GETPOST('type', 'alpha'), 0, 0, 0, '', 0, 0, 0, '', '', 1); ?>
|
||||
</td></tr>
|
||||
<!-- Size -->
|
||||
<tr class="extra_size"><td class="fieldrequired"><?php echo $langs->trans("Size"); ?></td><td class="valeur"><input id="size" type="text" name="size" size="5" value="<?php echo (GETPOST('size', 'alpha') ?GETPOST('size', 'alpha') : ''); ?>"></td></tr>
|
||||
|
||||
@ -205,7 +205,8 @@ $typewecanchangeinto = array(
|
||||
'mail'=>array('varchar', 'phone', 'mail', 'url', 'select'),
|
||||
'url'=>array('varchar', 'phone', 'mail', 'url', 'select'),
|
||||
'phone'=>array('varchar', 'phone', 'mail', 'url', 'select'),
|
||||
'select'=>array('varchar', 'phone', 'mail', 'url', 'select')
|
||||
'select'=>array('varchar', 'phone', 'mail', 'url', 'select'),
|
||||
'date'=>array('date', 'datetime')
|
||||
);
|
||||
/* Disabled because text is text on several lines, when varchar is text on 1 line, we should not be able to convert
|
||||
if ($size <= 255 && in_array($type, array('text', 'html'))) {
|
||||
@ -224,6 +225,7 @@ if (in_array($type, array_keys($typewecanchangeinto)))
|
||||
else print '<option value="'.$key.'" disabled="disabled"'.$selected.'>'.$val.'</option>';
|
||||
}
|
||||
print '</select>';
|
||||
print ajax_combobox('type');
|
||||
} else {
|
||||
print $type2label[$type];
|
||||
print '<input type="hidden" name="type" id="type" value="'.$type.'">';
|
||||
|
||||
@ -88,20 +88,22 @@ else $typeofdata = 'textarea:12:95%';
|
||||
print '<!-- BEGIN PHP TEMPLATE NOTES -->'."\n";
|
||||
print '<div class="tagtable border table-border tableforfield centpercent">'."\n";
|
||||
print '<div class="tagtr table-border-row">'."\n";
|
||||
print '<div class="tagtd tagtdnote tdtop sensiblehtmlcontent table-key-border-col'.(empty($cssclass) ? '' : ' '.$cssclass).'"'.($colwidth ? ' style="width: '.$colwidth.'%"' : '').'>'."\n";
|
||||
$editmode = (GETPOST('action', 'aZ09') == 'edit'.$note_public);
|
||||
print '<div class="tagtd tagtdnote tdtop'.($editmode ? '' : ' sensiblehtmlcontent').' table-key-border-col'.(empty($cssclass) ? '' : ' '.$cssclass).'"'.($colwidth ? ' style="width: '.$colwidth.'%"' : '').'>'."\n";
|
||||
print $form->editfieldkey("NotePublic", $note_public, $value_public, $object, $permission, $typeofdata, $moreparam, '', 0);
|
||||
print '</div>'."\n";
|
||||
print '<div class="tagtd wordbreak table-val-border-col sensiblehtmlcontent">'."\n";
|
||||
print '<div class="tagtd wordbreak table-val-border-col'.($editmode ? '' : ' sensiblehtmlcontent').'">'."\n";
|
||||
print $form->editfieldval("NotePublic", $note_public, $value_public, $object, $permission, $typeofdata, '', null, null, $moreparam, 1)."\n";
|
||||
print '</div>'."\n";
|
||||
print '</div>'."\n";
|
||||
if (empty($user->socid)) {
|
||||
// Private notes (always hidden to external users)
|
||||
print '<div class="tagtr table-border-row">'."\n";
|
||||
print '<div class="tagtd tagtdnote tdtop sensiblehtmlcontent table-key-border-col'.(empty($cssclass) ? '' : ' '.$cssclass).'"'.($colwidth ? ' style="width: '.$colwidth.'%"' : '').'>'."\n";
|
||||
$editmode = (GETPOST('action', 'aZ09') == 'edit'.$note_private);
|
||||
print '<div class="tagtd tagtdnote tdtop'.($editmode ? '' : ' sensiblehtmlcontent').' table-key-border-col'.(empty($cssclass) ? '' : ' '.$cssclass).'"'.($colwidth ? ' style="width: '.$colwidth.'%"' : '').'>'."\n";
|
||||
print $form->editfieldkey("NotePrivate", $note_private, $value_private, $object, $permission, $typeofdata, $moreparam, '', 0);
|
||||
print '</div>'."\n";
|
||||
print '<div class="tagtd wordbreak table-val-border-col sensiblehtmlcontent">'."\n";
|
||||
print '<div class="tagtd wordbreak table-val-border-col'.($editmode ? '' : ' sensiblehtmlcontent').'">'."\n";
|
||||
print $form->editfieldval("NotePrivate", $note_private, $value_private, $object, $permission, $typeofdata, '', null, null, $moreparam, 1);
|
||||
print '</div>'."\n";
|
||||
print '</div>'."\n";
|
||||
|
||||
@ -693,7 +693,8 @@ if (!empty($usemargins) && $user->rights->margins->creer)
|
||||
$("#buying_price").val("").show();
|
||||
|
||||
/* Call post to load content of combo list fournprice_predef */
|
||||
$.post('<?php echo DOL_URL_ROOT; ?>/fourn/ajax/getSupplierPrices.php?bestpricefirst=1', { 'idprod': $(this).val(), 'token': '<?php echo newToken(); ?>' }, function(data) {
|
||||
var token = '<?php echo currentToken(); ?>'; // For AJAX Call we use old 'token' and not 'newtoken'
|
||||
$.post('<?php echo DOL_URL_ROOT; ?>/fourn/ajax/getSupplierPrices.php?bestpricefirst=1', { 'idprod': $(this).val(), 'token': token }, function(data) {
|
||||
if (data && data.length > 0)
|
||||
{
|
||||
var options = ''; var defaultkey = ''; var defaultprice = ''; var bestpricefound = 0;
|
||||
|
||||
@ -434,7 +434,8 @@ jQuery(document).ready(function()
|
||||
});
|
||||
|
||||
/* Init field buying_price and fournprice */
|
||||
$.post('<?php echo DOL_URL_ROOT; ?>/fourn/ajax/getSupplierPrices.php', {'idprod': <?php echo $line->fk_product ? $line->fk_product : 0; ?>, 'token': '<?php echo newToken(); ?>'}, function(data) {
|
||||
var token = '<?php echo currentToken(); ?>'; // For AJAX Call we use old 'token' and not 'newtoken'
|
||||
$.post('<?php echo DOL_URL_ROOT; ?>/fourn/ajax/getSupplierPrices.php', {'idprod': <?php echo $line->fk_product ? $line->fk_product : 0; ?>, 'token': token }, function(data) {
|
||||
if (data && data.length > 0) {
|
||||
var options = '';
|
||||
var trouve=false;
|
||||
|
||||
@ -105,6 +105,8 @@ $hookmanager->initHooks(array('expeditioncard', 'globalcard'));
|
||||
$permissiondellink = $user->rights->expedition->delivery->creer; // Used by the include of actions_dellink.inc.php
|
||||
//var_dump($object->lines[0]->detail_batch);
|
||||
|
||||
$date_delivery = dol_mktime(GETPOST('date_deliveryhour', 'int'), GETPOST('date_deliverymin', 'int'), 0, GETPOST('date_deliverymonth', 'int'), GETPOST('date_deliveryday', 'int'), GETPOST('date_deliveryyear', 'int'));
|
||||
|
||||
|
||||
/*
|
||||
* Actions
|
||||
@ -201,8 +203,6 @@ if (empty($reshook))
|
||||
$object->size_units = GETPOST('size_units', 'int');
|
||||
$object->weight_units = GETPOST('weight_units', 'int');
|
||||
|
||||
$date_delivery = dol_mktime(GETPOST('date_deliveryhour', 'int'), GETPOST('date_deliverymin', 'int'), 0, GETPOST('date_deliverymonth', 'int'), GETPOST('date_deliveryday', 'int'), GETPOST('date_deliveryyear', 'int'));
|
||||
|
||||
// We will loop on each line of the original document to complete the shipping object with various info and quantity to deliver
|
||||
$classname = ucfirst($object->origin);
|
||||
$objectsrc = new $classname($db);
|
||||
@ -936,8 +936,7 @@ if ($action == 'create')
|
||||
// Date delivery planned
|
||||
print '<tr><td>'.$langs->trans("DateDeliveryPlanned").'</td>';
|
||||
print '<td colspan="3">';
|
||||
//print dol_print_date($object->date_livraison, "day"); // date_livraison come from order and will be stored into date_delivery planed.
|
||||
$date_delivery = ($date_delivery ? $date_delivery : $object->date_livraison); // $date_delivery comes from GETPOST
|
||||
$date_delivery = ($date_delivery ? $date_delivery : $object->delivery_date); // $date_delivery comes from GETPOST
|
||||
print $form->selectDate($date_delivery ? $date_delivery : -1, 'date_delivery', 1, 1, 1);
|
||||
print "</td>\n";
|
||||
print '</tr>';
|
||||
@ -1048,7 +1047,7 @@ if ($action == 'create')
|
||||
$i++;
|
||||
}
|
||||
print '});
|
||||
jQuery("#autoreset").click(function() {';
|
||||
jQuery("#autoreset").click(function() { console.log("Reset values to 0"); ';
|
||||
$i = 0;
|
||||
while ($i < $numAsked)
|
||||
{
|
||||
@ -1076,12 +1075,12 @@ if ($action == 'create')
|
||||
print '<td class="center">'.$langs->trans("QtyToShip");
|
||||
if (empty($conf->productbatch->enabled))
|
||||
{
|
||||
print '<br><a href="#" id="autofill">'.$langs->trans("Fill").'</a>';
|
||||
print '<br><a href="#" id="autofill" class="opacitymedium link cursor cursorpointer">'.$langs->trans("Fill").'</a>';
|
||||
print ' / ';
|
||||
} else {
|
||||
print '<br>';
|
||||
}
|
||||
print '<a href="#" id="autoreset">'.$langs->trans("Reset").'</a>';
|
||||
print '<span id="autoreset" class="opacitymedium link cursor cursorpointer">'.img_picto($langs->trans("Reset"), 'eraser').'</span>';
|
||||
print '</td>';
|
||||
if (!empty($conf->stock->enabled))
|
||||
{
|
||||
@ -1115,7 +1114,7 @@ if ($action == 'create')
|
||||
if (!empty($line->date_start)) $type = 1;
|
||||
if (!empty($line->date_end)) $type = 1;
|
||||
|
||||
print '<!-- line '.$line->rowid.' for product -->'."\n";
|
||||
print '<!-- line '.$line->id.' for product -->'."\n";
|
||||
print '<tr class="oddeven">'."\n";
|
||||
|
||||
// Product label
|
||||
@ -1126,13 +1125,16 @@ if ($action == 'create')
|
||||
//var_dump($product->stock_warehouse[1]);
|
||||
|
||||
print '<td>';
|
||||
print '<a name="'.$line->rowid.'"></a>'; // ancre pour retourner sur la ligne
|
||||
print '<a name="'.$line->id.'"></a>'; // ancre pour retourner sur la ligne
|
||||
|
||||
// Show product and description
|
||||
$product_static->type = $line->fk_product_type;
|
||||
$product_static->id = $line->fk_product;
|
||||
$product_static->ref = $line->ref;
|
||||
$product_static->status = $line->product_tosell;
|
||||
$product_static->status_buy = $line->product_tobuy;
|
||||
$product_static->status_batch = $line->product_tobatch;
|
||||
|
||||
$text = $product_static->getNomUrl(1);
|
||||
$text .= ' - '.(!empty($line->label) ? $line->label : $line->product_label);
|
||||
$description = ($conf->global->PRODUIT_DESC_IN_FORM ? '' : dol_htmlentitiesbr($line->desc));
|
||||
@ -2049,7 +2051,7 @@ if ($action == 'create')
|
||||
$sql .= ", ed.rowid as shipmentline_id, ed.qty as qty_shipped, ed.fk_expedition as expedition_id, ed.fk_origin_line, ed.fk_entrepot";
|
||||
$sql .= ", e.rowid as shipment_id, e.ref as shipment_ref, e.date_creation, e.date_valid, e.date_delivery, e.date_expedition";
|
||||
//if ($conf->delivery_note->enabled) $sql .= ", l.rowid as livraison_id, l.ref as livraison_ref, l.date_delivery, ld.qty as qty_received";
|
||||
$sql .= ', p.label as product_label, p.ref, p.fk_product_type, p.rowid as prodid, p.tobatch as product_tobatch';
|
||||
$sql .= ', p.label as product_label, p.ref, p.fk_product_type, p.rowid as prodid, p.tosell as product_tosell, p.tobuy as product_tobuy, p.tobatch as product_tobatch';
|
||||
$sql .= ', p.description as product_desc';
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."expeditiondet as ed";
|
||||
$sql .= ", ".MAIN_DB_PREFIX."expedition as e";
|
||||
@ -2076,7 +2078,10 @@ if ($action == 'create')
|
||||
if ($obj)
|
||||
{
|
||||
// $obj->rowid is rowid in $origin."det" table
|
||||
$alreadysent[$obj->rowid][$obj->shipmentline_id] = array('shipment_ref'=>$obj->shipment_ref, 'shipment_id'=>$obj->shipment_id, 'warehouse'=>$obj->fk_entrepot, 'qty_shipped'=>$obj->qty_shipped, 'date_valid'=>$db->jdate($obj->date_valid), 'date_delivery'=>$db->jdate($obj->date_delivery));
|
||||
$alreadysent[$obj->rowid][$obj->shipmentline_id] = array(
|
||||
'shipment_ref'=>$obj->shipment_ref, 'shipment_id'=>$obj->shipment_id, 'warehouse'=>$obj->fk_entrepot, 'qty_shipped'=>$obj->qty_shipped,
|
||||
'product_tosell'=>$obj->product_tosell, 'product_tobuy'=>$obj->product_tobuy, 'product_tobatch'=>$obj->product_tobatch,
|
||||
'date_valid'=>$db->jdate($obj->date_valid), 'date_delivery'=>$db->jdate($obj->date_delivery));
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
@ -2085,6 +2090,7 @@ if ($action == 'create')
|
||||
}
|
||||
|
||||
print '<tbody>';
|
||||
|
||||
// Loop on each product to send/sent
|
||||
for ($i = 0; $i < $num_prod; $i++)
|
||||
{
|
||||
@ -2120,6 +2126,8 @@ if ($action == 'create')
|
||||
$product_static->type = $lines[$i]->fk_product_type;
|
||||
$product_static->id = $lines[$i]->fk_product;
|
||||
$product_static->ref = $lines[$i]->ref;
|
||||
$product_static->status = $lines[$i]->product_tosell;
|
||||
$product_static->status_buy = $lines[$i]->product_tobuy;
|
||||
$product_static->status_batch = $lines[$i]->product_tobatch;
|
||||
|
||||
$product_static->weight = $lines[$i]->weight;
|
||||
|
||||
@ -619,10 +619,8 @@ class Expedition extends CommonObject
|
||||
// Tracking url
|
||||
$this->getUrlTrackingStatus($obj->tracking_number);
|
||||
|
||||
/*
|
||||
* Thirdparty
|
||||
*/
|
||||
$result = $this->fetch_thirdparty();
|
||||
// Thirdparty
|
||||
$result = $this->fetch_thirdparty(); // TODO Remove this
|
||||
|
||||
// Retrieve extrafields
|
||||
$this->fetch_optionals();
|
||||
@ -919,6 +917,7 @@ class Expedition extends CommonObject
|
||||
|
||||
$line->entrepot_id = $entrepot_id;
|
||||
$line->origin_line_id = $id;
|
||||
$line->fk_origin_line = $id;
|
||||
$line->qty = $qty;
|
||||
|
||||
$orderline = new OrderLine($this->db);
|
||||
@ -931,31 +930,37 @@ class Expedition extends CommonObject
|
||||
{
|
||||
$fk_product = $orderline->fk_product;
|
||||
|
||||
if (!($entrepot_id > 0) && empty($conf->global->STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS))
|
||||
{
|
||||
if (!($entrepot_id > 0) && empty($conf->global->STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS)) {
|
||||
$langs->load("errors");
|
||||
$this->error = $langs->trans("ErrorWarehouseRequiredIntoShipmentLine");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ($conf->global->STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT)
|
||||
{
|
||||
// Check must be done for stock of product into warehouse if $entrepot_id defined
|
||||
if ($conf->global->STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT) {
|
||||
$product = new Product($this->db);
|
||||
$result = $product->fetch($fk_product);
|
||||
$product->fetch($fk_product);
|
||||
|
||||
// Check must be done for stock of product into warehouse if $entrepot_id defined
|
||||
if ($entrepot_id > 0) {
|
||||
$product->load_stock('warehouseopen');
|
||||
$product_stock = $product->stock_warehouse[$entrepot_id]->real;
|
||||
} else $product_stock = $product->stock_reel;
|
||||
} else {
|
||||
$product_stock = $product->stock_reel;
|
||||
}
|
||||
|
||||
$product_type = $product->type;
|
||||
if ($product_type == 0 && $product_stock < $qty)
|
||||
{
|
||||
$langs->load("errors");
|
||||
$this->error = $langs->trans('ErrorStockIsNotEnoughToAddProductOnShipment', $product->ref);
|
||||
$this->db->rollback();
|
||||
return -3;
|
||||
if ($product_type == 0 || !empty($conf->global->STOCK_SUPPORTS_SERVICES)) {
|
||||
$isavirtualproduct = ($product->hasFatherOrChild(1) > 0);
|
||||
// The product is qualified for a check of quantity (must be enough in stock to be added into shipment).
|
||||
if (!$isavirtualproduct || empty($conf->global->PRODUIT_SOUSPRODUITS) || ($isavirtualproduct && empty($conf->global->STOCK_EXCLUDE_VIRTUAL_PRODUCTS))) { // If STOCK_EXCLUDE_VIRTUAL_PRODUCTS is set, we do not manage stock for kits/virtual products.
|
||||
if ($product_stock < $qty) {
|
||||
$langs->load("errors");
|
||||
$this->error = $langs->trans('ErrorStockIsNotEnoughToAddProductOnShipment', $product->ref);
|
||||
$this->errorhidden = 'ErrorStockIsNotEnoughToAddProductOnShipment';
|
||||
$this->db->rollback();
|
||||
return -3;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1060,13 +1065,13 @@ class Expedition extends CommonObject
|
||||
// Clean parameters
|
||||
|
||||
if (isset($this->ref)) $this->ref = trim($this->ref);
|
||||
if (isset($this->entity)) $this->entity = trim($this->entity);
|
||||
if (isset($this->entity)) $this->entity = (int) $this->entity;
|
||||
if (isset($this->ref_customer)) $this->ref_customer = trim($this->ref_customer);
|
||||
if (isset($this->socid)) $this->socid = trim($this->socid);
|
||||
if (isset($this->fk_user_author)) $this->fk_user_author = trim($this->fk_user_author);
|
||||
if (isset($this->fk_user_valid)) $this->fk_user_valid = trim($this->fk_user_valid);
|
||||
if (isset($this->fk_delivery_address)) $this->fk_delivery_address = trim($this->fk_delivery_address);
|
||||
if (isset($this->shipping_method_id)) $this->shipping_method_id = trim($this->shipping_method_id);
|
||||
if (isset($this->socid)) $this->socid = (int) $this->socid;
|
||||
if (isset($this->fk_user_author)) $this->fk_user_author = (int) $this->fk_user_author;
|
||||
if (isset($this->fk_user_valid)) $this->fk_user_valid = (int) $this->fk_user_valid;
|
||||
if (isset($this->fk_delivery_address)) $this->fk_delivery_address = (int) $this->fk_delivery_address;
|
||||
if (isset($this->shipping_method_id)) $this->shipping_method_id = (int) $this->shipping_method_id;
|
||||
if (isset($this->tracking_number)) $this->tracking_number = trim($this->tracking_number);
|
||||
if (isset($this->statut)) $this->statut = (int) $this->statut;
|
||||
if (isset($this->trueDepth)) $this->trueDepth = trim($this->trueDepth);
|
||||
@ -1122,15 +1127,11 @@ class Expedition extends CommonObject
|
||||
$resql = $this->db->query($sql);
|
||||
if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); }
|
||||
|
||||
if (!$error)
|
||||
{
|
||||
if (!$notrigger)
|
||||
{
|
||||
// Call trigger
|
||||
$result = $this->call_trigger('SHIPPING_MODIFY', $user);
|
||||
if ($result < 0) { $error++; }
|
||||
// End call triggers
|
||||
}
|
||||
if (!$error && !$notrigger) {
|
||||
// Call trigger
|
||||
$result = $this->call_trigger('SHIPPING_MODIFY', $user);
|
||||
if ($result < 0) { $error++; }
|
||||
// End call triggers
|
||||
}
|
||||
|
||||
// Commit or rollback
|
||||
@ -1171,21 +1172,16 @@ class Expedition extends CommonObject
|
||||
|
||||
// Add a protection to refuse deleting if shipment has at least one delivery
|
||||
$this->fetchObjectLinked($this->id, 'shipping', 0, 'delivery'); // Get deliveries linked to this shipment
|
||||
if (count($this->linkedObjectsIds) > 0)
|
||||
{
|
||||
if (count($this->linkedObjectsIds) > 0) {
|
||||
$this->error = 'ErrorThereIsSomeDeliveries';
|
||||
$error++;
|
||||
}
|
||||
|
||||
if (!$error)
|
||||
{
|
||||
if (!$notrigger)
|
||||
{
|
||||
// Call trigger
|
||||
$result = $this->call_trigger('SHIPPING_CANCEL', $user);
|
||||
if ($result < 0) { $error++; }
|
||||
// End call triggers
|
||||
}
|
||||
if (!$error && !$notrigger) {
|
||||
// Call trigger
|
||||
$result = $this->call_trigger('SHIPPING_CANCEL', $user);
|
||||
if ($result < 0) { $error++; }
|
||||
// End call triggers
|
||||
}
|
||||
|
||||
// Stock control
|
||||
@ -1383,15 +1379,11 @@ class Expedition extends CommonObject
|
||||
$error++;
|
||||
}
|
||||
|
||||
if (!$error)
|
||||
{
|
||||
if (!$notrigger)
|
||||
{
|
||||
// Call trigger
|
||||
$result = $this->call_trigger('SHIPPING_DELETE', $user);
|
||||
if ($result < 0) { $error++; }
|
||||
// End call triggers
|
||||
}
|
||||
if (!$error && !$notrigger) {
|
||||
// Call trigger
|
||||
$result = $this->call_trigger('SHIPPING_DELETE', $user);
|
||||
if ($result < 0) { $error++; }
|
||||
// End call triggers
|
||||
}
|
||||
|
||||
// Stock control
|
||||
@ -1589,7 +1581,7 @@ class Expedition extends CommonObject
|
||||
$sql .= ", cd.fk_multicurrency, cd.multicurrency_code, cd.multicurrency_subprice, cd.multicurrency_total_ht, cd.multicurrency_total_tva, cd.multicurrency_total_ttc, cd.rang";
|
||||
$sql .= ", ed.rowid as line_id, ed.qty as qty_shipped, ed.fk_origin_line, ed.fk_entrepot";
|
||||
$sql .= ", p.ref as product_ref, p.label as product_label, p.fk_product_type";
|
||||
$sql .= ", p.weight, p.weight_units, p.length, p.length_units, p.surface, p.surface_units, p.volume, p.volume_units, p.tobatch as product_tobatch";
|
||||
$sql .= ", p.weight, p.weight_units, p.length, p.length_units, p.surface, p.surface_units, p.volume, p.volume_units, p.tosell as product_tosell, p.tobuy as product_tobuy, p.tobatch as product_tobatch";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."expeditiondet as ed, ".MAIN_DB_PREFIX."commandedet as cd";
|
||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON p.rowid = cd.fk_product";
|
||||
$sql .= " WHERE ed.fk_expedition = ".$this->id;
|
||||
@ -1651,6 +1643,8 @@ class Expedition extends CommonObject
|
||||
$line->product_ref = $obj->product_ref;
|
||||
$line->product_label = $obj->product_label;
|
||||
$line->libelle = $obj->product_label; // TODO deprecated
|
||||
$line->product_tosell = $obj->product_tosell;
|
||||
$line->product_tobuy = $obj->product_tobuy;
|
||||
$line->product_tobatch = $obj->product_tobatch;
|
||||
$line->label = $obj->custom_label;
|
||||
$line->description = $obj->description;
|
||||
|
||||
@ -212,7 +212,7 @@ llxHeader('', $langs->trans('ListOfSendings'), $helpurl);
|
||||
|
||||
$sql = 'SELECT';
|
||||
if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT';
|
||||
$sql .= " e.rowid, e.ref, e.ref_customer, e.date_expedition as date_expedition, e.weight, e.weight_units, e.date_delivery as date_livraison, l.date_delivery as date_reception, e.fk_statut, e.billed, e.tracking_number,";
|
||||
$sql .= " e.rowid, e.ref, e.ref_customer, e.date_expedition as date_expedition, e.weight, e.weight_units, e.date_delivery as delivery_date, l.date_delivery as date_reception, e.fk_statut, e.billed, e.tracking_number,";
|
||||
$sql .= " s.rowid as socid, s.nom as name, s.town, s.zip, s.fk_pays, s.client, s.code_client, ";
|
||||
$sql .= " typent.code as typent_code,";
|
||||
$sql .= " state.code_departement as state_code, state.nom as state_name,";
|
||||
@ -618,6 +618,7 @@ if ($resql)
|
||||
|
||||
$object = new Expedition($db);
|
||||
$object->fetch($obj->rowid);
|
||||
|
||||
print '<tr class="oddeven">';
|
||||
|
||||
// Ref
|
||||
@ -705,7 +706,7 @@ if ($resql)
|
||||
if (!empty($arrayfields['e.date_delivery']['checked']))
|
||||
{
|
||||
print '<td class="center">';
|
||||
print dol_print_date($db->jdate($obj->date_livraison), "dayhour");
|
||||
print dol_print_date($db->jdate($obj->delivery_date), "dayhour");
|
||||
/*$now = time();
|
||||
if ( ($now - $db->jdate($obj->date_expedition)) > $conf->warnings->lim && $obj->statutid == 1 )
|
||||
{
|
||||
|
||||
@ -354,7 +354,7 @@ if ($id > 0 || !empty($ref))
|
||||
print '<tr><td>'.$langs->trans('Date').'</td>';
|
||||
print '<td colspan="2">';
|
||||
print dol_print_date($object->date, 'day');
|
||||
if ($object->hasDelay() && empty($object->date_livraison)) {
|
||||
if ($object->hasDelay() && empty($object->delivery_date)) {
|
||||
print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning");
|
||||
}
|
||||
print '</td>';
|
||||
@ -374,12 +374,12 @@ if ($id > 0 || !empty($ref))
|
||||
print '<form name="setdate_livraison" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'" method="post">';
|
||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||
print '<input type="hidden" name="action" value="setdatedelivery">';
|
||||
print $form->selectDate($object->date_livraison ? $object->date_livraison : -1, 'liv_', 1, 1, '', "setdate_livraison", 1, 0);
|
||||
print $form->selectDate($object->delivery_date ? $object->delivery_date : -1, 'liv_', 1, 1, '', "setdate_livraison", 1, 0);
|
||||
print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">';
|
||||
print '</form>';
|
||||
} else {
|
||||
print dol_print_date($object->date_livraison, 'dayhour');
|
||||
if ($object->hasDelay() && !empty($object->date_livraison)) {
|
||||
print dol_print_date($object->delivery_date, 'dayhour');
|
||||
if ($object->hasDelay() && !empty($object->delivery_date)) {
|
||||
print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning");
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
* Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
|
||||
* Copyright (C) 2018 Nicolas ZABOURI <info@inovea-conseil.com>
|
||||
* Copyright (C) 2018-2019 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2018 Ferran Marcet <fmarcet@2byte.es>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@ -121,7 +121,7 @@ class CommandeFournisseur extends CommonOrder
|
||||
public $date_livraison;
|
||||
|
||||
/**
|
||||
* Delivery date
|
||||
* @var int Date expected for delivery
|
||||
*/
|
||||
public $delivery_date;
|
||||
|
||||
@ -132,16 +132,6 @@ class CommandeFournisseur extends CommonOrder
|
||||
public $total_ttc;
|
||||
public $source;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @see $note_private, $note_public
|
||||
*/
|
||||
public $note;
|
||||
|
||||
public $note_private;
|
||||
public $note_public;
|
||||
public $model_pdf;
|
||||
|
||||
/**
|
||||
* @var int ID
|
||||
*/
|
||||
@ -375,7 +365,7 @@ class CommandeFournisseur extends CommonOrder
|
||||
$this->date_approve = $this->db->jdate($obj->date_approve);
|
||||
$this->date_approve2 = $this->db->jdate($obj->date_approve2);
|
||||
$this->date_commande = $this->db->jdate($obj->date_commande); // date we make the order to supplier
|
||||
$this->date_livraison = $this->db->jdate($obj->delivery_date);
|
||||
$this->date_livraison = $this->db->jdate($obj->delivery_date); // deprecated
|
||||
$this->delivery_date = $this->db->jdate($obj->delivery_date);
|
||||
$this->remise_percent = $obj->remise_percent;
|
||||
$this->methode_commande_id = $obj->fk_input_method;
|
||||
@ -778,16 +768,24 @@ class CommandeFournisseur extends CommonOrder
|
||||
if (isset($this->statut)) {
|
||||
$label .= ' '.$this->getLibStatut(5);
|
||||
}
|
||||
if (!empty($this->ref))
|
||||
if (!empty($this->ref)) {
|
||||
$label .= '<br><b>'.$langs->trans('Ref').':</b> '.$this->ref;
|
||||
if (!empty($this->ref_supplier))
|
||||
}
|
||||
if (!empty($this->ref_supplier)) {
|
||||
$label .= '<br><b>'.$langs->trans('RefSupplier').':</b> '.$this->ref_supplier;
|
||||
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);
|
||||
if (!empty($this->total_tva))
|
||||
}
|
||||
if (!empty($this->total_tva)) {
|
||||
$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);
|
||||
}
|
||||
if (!empty($this->delivery_date)) {
|
||||
$label .= '<br><b>'.$langs->trans('DeliveryDate').':</b> '.dol_print_date($this->delivery_date, 'dayhour');
|
||||
}
|
||||
}
|
||||
|
||||
$picto = 'order';
|
||||
@ -1257,9 +1255,10 @@ class CommandeFournisseur extends CommonOrder
|
||||
$error = 0;
|
||||
$now = dol_now();
|
||||
|
||||
// $date_commande is deprecated
|
||||
// set tmp vars
|
||||
$date = ($this->date_commande ? $this->date_commande : $this->date); // in case of date is set
|
||||
if (empty($date)) $date = $now;
|
||||
$delivery_date = empty($this->delivery_date) ? $this->date_livraison : $this->delivery_date;
|
||||
|
||||
// Clean parameters
|
||||
if (empty($this->source)) $this->source = 0;
|
||||
@ -1308,7 +1307,7 @@ class CommandeFournisseur extends CommonOrder
|
||||
$sql .= ", ".$this->socid;
|
||||
$sql .= ", ".($this->fk_project > 0 ? $this->fk_project : "null");
|
||||
$sql .= ", '".$this->db->idate($date)."'";
|
||||
$sql .= ", ".($this->date_livraison ? "'".$this->db->idate($this->date_livraison)."'" : "null");
|
||||
$sql .= ", ".($delivery_date ? "'".$this->db->idate($delivery_date)."'" : "null");
|
||||
$sql .= ", ".$user->id;
|
||||
$sql .= ", ".self::STATUS_DRAFT;
|
||||
$sql .= ", ".$this->db->escape($this->source);
|
||||
@ -2897,7 +2896,7 @@ class CommandeFournisseur extends CommonOrder
|
||||
}
|
||||
$sql .= $clause." c.entity = ".$conf->entity;
|
||||
if ($mode === 'awaiting') {
|
||||
$sql .= " AND c.fk_statut = ".self::STATUS_ORDERSENT;
|
||||
$sql .= " AND c.fk_statut IN (".self::STATUS_ORDERSENT.", ".self::STATUS_RECEIVED_PARTIALLY.")";
|
||||
} else {
|
||||
$sql .= " AND c.fk_statut IN (".self::STATUS_VALIDATED.", ".self::STATUS_ACCEPTED.")";
|
||||
}
|
||||
@ -2918,14 +2917,14 @@ class CommandeFournisseur extends CommonOrder
|
||||
if ($mode === 'awaiting') {
|
||||
$response->label = $langs->trans("SuppliersOrdersAwaitingReception");
|
||||
$response->labelShort = $langs->trans("AwaitingReception");
|
||||
$response->url = DOL_URL_ROOT.'/fourn/commande/list.php?statut=3&mainmenu=commercial&leftmenu=orders_suppliers';
|
||||
$response->url = DOL_URL_ROOT.'/fourn/commande/list.php?statut=3,4&mainmenu=commercial&leftmenu=orders_suppliers';
|
||||
}
|
||||
|
||||
while ($obj = $this->db->fetch_object($resql))
|
||||
{
|
||||
$response->nbtodo++;
|
||||
|
||||
$commandestatic->date_livraison = $this->db->jdate($obj->delivery_date);
|
||||
$commandestatic->date_livraison = $this->db->jdate($obj->delivery_date); // deprecated
|
||||
$commandestatic->delivery_date = $this->db->jdate($obj->delivery_date);
|
||||
$commandestatic->date_commande = $this->db->jdate($obj->date_commande);
|
||||
$commandestatic->statut = $obj->fk_statut;
|
||||
@ -3079,12 +3078,12 @@ class CommandeFournisseur extends CommonOrder
|
||||
{
|
||||
global $conf;
|
||||
|
||||
if (empty($this->date_delivery) && !empty($this->date_livraison)) $this->date_delivery = $this->date_livraison; // For backward compatibility
|
||||
if (empty($this->delivery_date) && !empty($this->date_livraison)) $this->delivery_date = $this->date_livraison; // For backward compatibility
|
||||
|
||||
$now = dol_now();
|
||||
$date_to_test = empty($this->date_delivery) ? $this->date_commande : $this->date_delivery;
|
||||
$date_to_test = empty($this->delivery_date) ? $this->date_commande : $this->delivery_date;
|
||||
|
||||
return ($this->statut > 0 && $this->statut < 4) && $date_to_test && $date_to_test < ($now - $conf->commande->fournisseur->warning_delay);
|
||||
return ($this->statut > 0 && $this->statut < 5) && $date_to_test && $date_to_test < ($now - $conf->commande->fournisseur->warning_delay);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -3096,10 +3095,13 @@ class CommandeFournisseur extends CommonOrder
|
||||
{
|
||||
global $conf, $langs;
|
||||
|
||||
if (empty($this->date_delivery) && !empty($this->date_livraison)) $this->date_delivery = $this->date_livraison; // For backward compatibility
|
||||
if (empty($this->delivery_date) && !empty($this->date_livraison)) $this->delivery_date = $this->date_livraison; // For backward compatibility
|
||||
|
||||
if (empty($this->date_delivery)) $text = $langs->trans("OrderDate").' '.dol_print_date($this->date_commande, 'day');
|
||||
else $text = $text = $langs->trans("DeliveryDate").' '.dol_print_date($this->date_delivery, 'day');
|
||||
if (empty($this->delivery_date)) {
|
||||
$text = $langs->trans("OrderDate").' '.dol_print_date($this->date_commande, 'day');
|
||||
} else {
|
||||
$text = $langs->trans("DeliveryDate").' '.dol_print_date($this->delivery_date, 'day');
|
||||
}
|
||||
$text .= ' '.($conf->commande->fournisseur->warning_delay > 0 ? '+' : '-').' '.round(abs($conf->commande->fournisseur->warning_delay) / 3600 / 24, 1).' '.$langs->trans("days").' < '.$langs->trans("Today");
|
||||
|
||||
return $text;
|
||||
|
||||
@ -104,6 +104,29 @@ class ProductFournisseur extends Product
|
||||
public $fourn_multicurrency_price;
|
||||
public $fourn_multicurrency_unitprice;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @see $supplier_barcode
|
||||
*/
|
||||
public $fourn_barcode;
|
||||
|
||||
/**
|
||||
* @var string $supplier_barcode - Supplier barcode
|
||||
*/
|
||||
public $supplier_barcode;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @see $supplier_fk_barcode_type
|
||||
*/
|
||||
public $fourn_fk_barcode_type;
|
||||
|
||||
/**
|
||||
* @var string $supplier_fk_barcode_type - Supplier barcode type
|
||||
*/
|
||||
public $supplier_fk_barcode_type;
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
@ -118,8 +141,6 @@ class ProductFournisseur extends Product
|
||||
$this->reputations = array('-1'=>'', 'FAVORITE'=>$langs->trans('Favorite'), 'NOTTHGOOD'=>$langs->trans('NotTheGoodQualitySupplier'), 'DONOTORDER'=>$langs->trans('DoNotOrderThisProductToThisSupplier'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||
/**
|
||||
* Remove all prices for this couple supplier-product
|
||||
@ -537,8 +558,10 @@ class ProductFournisseur extends Product
|
||||
$this->fourn_multicurrency_id = $obj->fk_multicurrency;
|
||||
$this->fourn_multicurrency_code = $obj->multicurrency_code;
|
||||
if ($conf->barcode->enabled) {
|
||||
$this->fourn_barcode = $obj->barcode;
|
||||
$this->fourn_fk_barcode_type = $obj->fk_barcode_type;
|
||||
$this->fourn_barcode = $obj->barcode; // deprecated
|
||||
$this->fourn_fk_barcode_type = $obj->barcode; // deprecated
|
||||
$this->supplier_barcode = $obj->barcode;
|
||||
$this->supplier_fk_barcode_type = $obj->fk_barcode_type;
|
||||
}
|
||||
|
||||
if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) {
|
||||
|
||||
@ -1145,7 +1145,7 @@ if (empty($reshook))
|
||||
$object->fk_account = GETPOST('fk_account', 'int');
|
||||
$object->note_private = GETPOST('note_private', 'restricthtml');
|
||||
$object->note_public = GETPOST('note_public', 'restricthtml');
|
||||
$object->date_livraison = $datelivraison;
|
||||
$object->date_livraison = $datelivraison; // deprecated
|
||||
$object->delivery_date = $datelivraison;
|
||||
$object->fk_incoterms = GETPOST('incoterm_id', 'int');
|
||||
$object->location_incoterms = GETPOST('location_incoterms', 'alpha');
|
||||
@ -1200,7 +1200,8 @@ if (empty($reshook))
|
||||
$result = $srcobject->fetch($object->origin_id);
|
||||
if ($result > 0)
|
||||
{
|
||||
$object->setDeliveryDate($user, $srcobject->date_livraison);
|
||||
$tmpdate = ($srcobject->delivery_date ? $srcobject->delivery_date : $srcobject->date_livraison);
|
||||
$object->setDeliveryDate($user, $tmpdate);
|
||||
$object->set_id_projet($user, $srcobject->fk_project);
|
||||
|
||||
$lines = $srcobject->lines;
|
||||
@ -1552,7 +1553,7 @@ if ($action == 'create')
|
||||
$remise_absolue = (!empty($objectsrc->remise_absolue) ? $objectsrc->remise_absolue : (!empty($soc->remise_absolue) ? $soc->remise_absolue : 0));
|
||||
$dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE) ?-1 : '';
|
||||
|
||||
$datedelivery = (!empty($objectsrc->date_livraison) ? $objectsrc->date_livraison : '');
|
||||
$datedelivery = (!empty($objectsrc->date_livraison) ? $objectsrc->date_livraison : (!empty($objectsrc->delivery_date) ? $objectsrc->delivery_date : ''));
|
||||
|
||||
if (!empty($conf->multicurrency->enabled))
|
||||
{
|
||||
@ -2001,9 +2002,9 @@ if ($action == 'create')
|
||||
if ($object->methode_commande_id > 0)
|
||||
{
|
||||
print '<tr><td class="titlefield">'.$langs->trans("Date").'</td><td>';
|
||||
if ($object->date_commande)
|
||||
{
|
||||
print dol_print_date($object->date_commande, "dayhour")."\n";
|
||||
print $object->date_commande ? dol_print_date($object->date_commande, $usehourmin) : '';
|
||||
if ($object->hasDelay() && !empty($object->date_delivery) && !empty($object->date_commande)) {
|
||||
print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning");
|
||||
}
|
||||
print "</td></tr>";
|
||||
|
||||
@ -2161,14 +2162,14 @@ if ($action == 'create')
|
||||
print '<input type="hidden" name="action" value="setdate_livraison">';
|
||||
$usehourmin = 0;
|
||||
if (!empty($conf->global->SUPPLIER_ORDER_USE_HOUR_FOR_DELIVERY_DATE)) $usehourmin = 1;
|
||||
print $form->selectDate($object->date_livraison ? $object->date_livraison : -1, 'liv_', $usehourmin, $usehourmin, '', "setdate_livraison");
|
||||
print $form->selectDate($object->delivery_date ? $object->delivery_date : -1, 'liv_', $usehourmin, $usehourmin, '', "setdate_livraison");
|
||||
print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">';
|
||||
print '</form>';
|
||||
} else {
|
||||
$usehourmin = 'day';
|
||||
if (!empty($conf->global->SUPPLIER_ORDER_USE_HOUR_FOR_DELIVERY_DATE)) $usehourmin = 'dayhour';
|
||||
print $object->date_livraison ? dol_print_date($object->date_livraison, $usehourmin) : ' ';
|
||||
if ($object->hasDelay() && !empty($object->date_livraison)) {
|
||||
print $object->delivery_date ? dol_print_date($object->delivery_date, $usehourmin) : ' ';
|
||||
if ($object->hasDelay() && !empty($object->delivery_date)) {
|
||||
print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning");
|
||||
}
|
||||
}
|
||||
|
||||
@ -1050,6 +1050,7 @@ if ($resql)
|
||||
$objectstatic->total_ht = $obj->total_ht;
|
||||
$objectstatic->total_tva = $obj->total_tva;
|
||||
$objectstatic->total_ttc = $obj->total_ttc;
|
||||
$objectstatic->date_commande = $db->jdate($obj->date_commande);
|
||||
$objectstatic->date_delivery = $db->jdate($obj->date_delivery);
|
||||
$objectstatic->note_public = $obj->note_public;
|
||||
$objectstatic->note_private = $obj->note_private;
|
||||
@ -1159,8 +1160,10 @@ if ($resql)
|
||||
if (!empty($arrayfields['cf.date_commande']['checked']))
|
||||
{
|
||||
print '<td class="center">';
|
||||
if ($obj->date_commande) print dol_print_date($db->jdate($obj->date_commande), 'day');
|
||||
else print '';
|
||||
print dol_print_date($db->jdate($obj->date_commande), 'day');
|
||||
if ($objectstatic->hasDelay() && !empty($objectstatic->date_delivery)) {
|
||||
print ' '.img_picto($langs->trans("Late").' : '.$objectstatic->showDelay(), "warning");
|
||||
}
|
||||
print '</td>';
|
||||
if (!$i) $totalarray['nbfield']++;
|
||||
}
|
||||
|
||||
@ -64,7 +64,7 @@ if (!$sortfield) $sortfield = "position_name";
|
||||
$object = new Holiday($db);
|
||||
$object->fetch($id, $ref);
|
||||
|
||||
$upload_dir = $conf->holiday->dir_output.'/'.get_exdir($object->id, 0, 0, 0, $object, 'holiday').dol_sanitizeFileName($object->ref);
|
||||
$upload_dir = $conf->holiday->dir_output.'/'.get_exdir(0, 0, 0, 1, $object, '');
|
||||
$modulepart = 'holiday';
|
||||
|
||||
|
||||
|
||||
@ -1,11 +1,12 @@
|
||||
-- Copyright (C) 2001-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
-- Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
|
||||
-- Copyright (C) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
-- Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
|
||||
-- Copyright (C) 2004 Guillaume Delecourt <guillaume.delecourt@opensides.be>
|
||||
-- Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||
-- Copyright (C) 2007 Patrick Raguin <patrick.raguin@gmail.com>
|
||||
-- Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
|
||||
-- Copyright (C) 2001-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
-- Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
|
||||
-- Copyright (C) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
-- Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
|
||||
-- Copyright (C) 2004 Guillaume Delecourt <guillaume.delecourt@opensides.be>
|
||||
-- Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||
-- Copyright (C) 2007 Patrick Raguin <patrick.raguin@gmail.com>
|
||||
-- Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
|
||||
-- Copyright (C) 2020 Udo Tamm <dev@dolibit.de>
|
||||
--
|
||||
-- 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
|
||||
@ -20,8 +21,11 @@
|
||||
-- You should have received a copy of the GNU General Public License
|
||||
-- along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
--
|
||||
--
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Do not place a comment at the end of the line, this file is parsed when
|
||||
-- of the install and all the acronyms '--' are removed.
|
||||
--
|
||||
-- Ne pas placer de commentaire en fin de ligne, ce fichier est parsé lors
|
||||
-- de l'install et tous les sigles '--' sont supprimés.
|
||||
@ -31,149 +35,152 @@
|
||||
-- Currencies (primary code - code ISO4217 - libelle us)
|
||||
--
|
||||
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ALL', '[76,101,107]', 1, 'Albania Lek');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'DZD', NULL, 1, 'Algeria Dinar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'AFN', '[1547]', 1, 'Afghanistan Afghani');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ARS', '[36]', 1, 'Argentino Peso');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'AWG', '[402]', 1, 'Aruba Guilder');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'AUD', '[36]', 1, 'Australia Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'AZN', '[1084,1072,1085]', 1, 'Azerbaijan New Manat');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BHD', NULL, 1, 'Bahrain');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BSD', '[36]', 1, 'Bahamas Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BBD', '[36]', 1, 'Barbados Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ALL', '[76,101,107]', 1, 'Albania Lek');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'DZD', NULL, 1, 'Algeria Dinar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'AFN', '[1547]', 1, 'Afghanistan Afghani');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ARS', '[36]', 1, 'Argentino Peso');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'AWG', '[402]', 1, 'Aruba Guilder');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'AUD', '[36]', 1, 'Australia Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'AZN', '[1084,1072,1085]', 1, 'Azerbaijan New Manat');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BHD', NULL, 1, 'Bahrain');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BSD', '[36]', 1, 'Bahamas Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BBD', '[36]', 1, 'Barbados Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BDT', '[2547]', 1, 'Bangladeshi Taka');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BYR', '[112,46]', 1, 'Belarus Ruble');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BYR', '[112,46]', 1, 'Belarus Ruble');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BZD', '[66,90,36]', 1, 'Belize Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BMD', '[36]', 1, 'Bermuda Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BOB', '[36,98]', 1, 'Bolivia Boliviano');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BAM', '[75,77]', 1, 'Bosnia and Herzegovina Convertible Marka');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BWP', '[80]', 1, 'Botswana Pula');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BMD', '[36]', 1, 'Bermuda Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BOB', '[36,98]', 1, 'Bolivia Boliviano');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BAM', '[75,77]', 1, 'Bosnia and Herzegovina Convertible Marka');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BWP', '[80]', 1, 'Botswana Pula');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BGN', '[1083,1074]', 1, 'Bulgaria Lev');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BRL', '[82,36]', 1, 'Brazil Real');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BND', '[36]', 1, 'Brunei Darussalam Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'KHR', '[6107]', 1, 'Cambodia Riel');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'CAD', '[36]', 1, 'Canada Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'KYD', '[36]', 1, 'Cayman Islands Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'CLP', '[36]', 1, 'Chile Peso');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'CNY', '[165]', 1, 'China Yuan Renminbi');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'COP', '[36]', 1, 'Colombia Peso');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'CRC', '[8353]', 1, 'Costa Rica Colon');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'HRK', '[107,110]', 1, 'Croatia Kuna');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'CUP', '[8369]', 1, 'Cuba Peso');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'CZK', '[75,269]', 1, 'Czech Republic Koruna');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'DKK', '[107,114]', 1, 'Denmark Krone');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BRL', '[82,36]', 1, 'Brazil Real');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BND', '[36]', 1, 'Brunei Darussalam Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'KHR', '[6107]', 1, 'Cambodia Riel');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'CAD', '[36]', 1, 'Canada Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'CVE', '[4217]', 1, 'Cap Verde Escudo');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'KYD', '[36]', 1, 'Cayman Islands Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'CLP', '[36]', 1, 'Chile Peso');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'CNY', '[165]', 1, 'China Yuan Renminbi');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'COP', '[36]', 1, 'Colombia Peso');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'CRC', '[8353]', 1, 'Costa Rica Colon');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'HRK', '[107,110]', 1, 'Croatia Kuna');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'CUP', '[8369]', 1, 'Cuba Peso');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'CZK', '[75,269]', 1, 'Czech Republic Koruna');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'DKK', '[107,114]', 1, 'Denmark Krone');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'DOP', '[82,68,36]', 1, 'Dominican Republic Peso');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'XCD', '[36]', 1, 'East Caribbean Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'EGP', '[163]', 1, 'Egypt Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SVC', '[36]', 1, 'El Salvador Colon');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'EEK', '[107,114]', 1, 'Estonia Kroon');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'EUR', '[8364]', 1, 'Euro Member Countries');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'FKP', '[163]', 1, 'Falkland Islands (Malvinas) Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'FJD', '[36]', 1, 'Fiji Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'GHC', '[162]', 1, 'Ghana Cedis');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'GNF', '[70,71]', 1, 'Franc Guinéen');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'GIP', '[163]', 1, 'Gibraltar Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'GTQ', '[81]', 1, 'Guatemala Quetzal');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'GGP', '[163]', 1, 'Guernsey Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'GYD', '[36]', 1, 'Guyana Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'HNL', '[76]', 1, 'Honduras Lempira');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'HKD', '[36]', 1, 'Hong Kong Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'HUF', '[70,116]', 1, 'Hungary Forint');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ISK', '[107,114]', 1, 'Iceland Krona');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'INR', '[8377]', 1, 'India Rupee');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'IDR', '[82,112]', 1, 'Indonesia Rupiah');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'IRR', '[65020]', 1, 'Iran Rial');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'IMP', '[163]', 1, 'Isle of Man Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ILS', '[8362]', 1, 'Israel Shekel');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'JMD', '[74,36]', 1, 'Jamaica Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'JPY', '[165]', 1, 'Japan Yen');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'JEP', '[163]', 1, 'Jersey Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'KES', NULL, 1, 'Kenya Shilling');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'XCD', '[36]', 1, 'East Caribbean Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'EGP', '[163]', 1, 'Egypt Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SVC', '[36]', 1, 'El Salvador Colon');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'EEK', '[107,114]', 1, 'Estonia Kroon');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'EUR', '[8364]', 1, 'Euro Member Countries');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'FKP', '[163]', 1, 'Falkland Islands (Malvinas) Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'FJD', '[36]', 1, 'Fiji Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'GHC', '[162]', 1, 'Ghana Cedis');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'GNF', '[70,71]', 1, 'Guinea Franc');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'GIP', '[163]', 1, 'Gibraltar Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'GTQ', '[81]', 1, 'Guatemala Quetzal');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'GGP', '[163]', 1, 'Guernsey Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'GYD', '[36]', 1, 'Guyana Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'HNL', '[76]', 1, 'Honduras Lempira');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'HKD', '[36]', 1, 'Hong Kong Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'HUF', '[70,116]', 1, 'Hungary Forint');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ISK', '[107,114]', 1, 'Iceland Krona');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'INR', '[8377]', 1, 'India Rupee');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'IDR', '[82,112]', 1, 'Indonesia Rupiah');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'IRR', '[65020]', 1, 'Iran Rial');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'IMP', '[163]', 1, 'Isle of Man Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ILS', '[8362]', 1, 'Israel Shekel');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'JMD', '[74,36]', 1, 'Jamaica Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'JPY', '[165]', 1, 'Japan Yen');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'JEP', '[163]', 1, 'Jersey Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'KES', NULL, 1, 'Kenya Shilling');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'KZT', '[1083,1074]', 1, 'Kazakhstan Tenge');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'KPW', '[8361]', 1, 'Korea (North) Won');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'KRW', '[8361]', 1, 'Korea (South) Won');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'KPW', '[8361]', 1, 'Korea (North) Won');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'KRW', '[8361]', 1, 'Korea (South) Won');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'KGS', '[1083,1074]', 1, 'Kyrgyzstan Som');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'LAK', '[8365]', 1, 'Laos Kip');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'LVL', '[76,115]', 1, 'Latvia Lat');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'LBP', '[163]', 1, 'Lebanon Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'LRD', '[36]', 1, 'Liberia Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'LTL', '[76,116]', 1, 'Lithuania Litas');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MGA', NULL, 1, 'Ariary');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'LAK', '[8365]', 1, 'Laos Kip');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'LVL', '[76,115]', 1, 'Latvia Lat');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'LBP', '[163]', 1, 'Lebanon Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'LRD', '[36]', 1, 'Liberia Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'LTL', '[76,116]', 1, 'Lithuania Litas');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MGA', NULL, 1, 'Ariary');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MKD', '[1076,1077,1085]', 1, 'Macedonia Denar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MYR', '[82,77]', 1, 'Malaysia Ringgit');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MRO', NULL, 1, 'Mauritania Ouguiya');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MUR', '[8360]', 1, 'Mauritius Rupee');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MXN', '[36]', 1, 'Mexico Peso');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MNT', '[8366]', 1, 'Mongolia Tughrik');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MAD', NULL, 1, 'Morocco Dirham');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MZN', '[77,84]', 1, 'Mozambique Metical');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'NAD', '[36]', 1, 'Namibia Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'NPR', '[8360]', 1, 'Nepal Rupee');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ANG', '[402]', 1, 'Netherlands Antilles Guilder');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'NZD', '[36]', 1, 'New Zealand Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'NIO', '[67,36]', 1, 'Nicaragua Cordoba');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'NGN', '[8358]', 1, 'Nigeria Naira');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'NOK', '[107,114]', 1, 'Norway Krone');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'OMR', '[65020]', 1, 'Oman Rial');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'PKR', '[8360]', 1, 'Pakistan Rupee');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MYR', '[82,77]', 1, 'Malaysia Ringgit');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MRO', NULL, 1, 'Mauritania Ouguiya');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MUR', '[8360]', 1, 'Mauritius Rupee');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MXN', '[36]', 1, 'Mexico Peso');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MDL', NULL, 1, 'Moldova Leu');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MNT', '[8366]', 1, 'Mongolia Tughrik');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MAD', NULL, 1, 'Morocco Dirham');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MZN', '[77,84]', 1, 'Mozambique Metical');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'NAD', '[36]', 1, 'Namibia Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'NPR', '[8360]', 1, 'Nepal Rupee');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ANG', '[402]', 1, 'Netherlands Antilles Guilder');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'NZD', '[36]', 1, 'New Zealand Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'NIO', '[67,36]', 1, 'Nicaragua Cordoba');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'NGN', '[8358]', 1, 'Nigeria Naira');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'NOK', '[107,114]', 1, 'Norway Krone');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'OMR', '[65020]', 1, 'Oman Rial');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'PKR', '[8360]', 1, 'Pakistan Rupee');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'PAB', '[66,47,46]', 1, 'Panama Balboa');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'PYG', '[71,115]', 1, 'Paraguay Guarani');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'PYG', '[71,115]', 1, 'Paraguay Guarani');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'PEN', '[83,47,46]', 1, 'Peru Nuevo Sol');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'PHP', '[8369]', 1, 'Philippines Peso');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'PLN', '[122,322]', 1, 'Poland Zloty');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'QAR', '[65020]', 1, 'Qatar Riyal');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'PHP', '[8369]', 1, 'Philippines Peso');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'PLN', '[122,322]', 1, 'Poland Zloty');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'QAR', '[65020]', 1, 'Qatar Riyal');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'RON', '[108,101,105]', 1, 'Romania New Leu');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'RUB', '[1088,1091,1073]', 1, 'Russia Ruble');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SHP', '[163]', 1, 'Saint Helena Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SAR', '[65020]', 1, 'Saudi Arabia Riyal');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'RUB', '[1088,1091,1073]', 1, 'Russia Ruble');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SHP', '[163]', 1, 'Saint Helena Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SAR', '[65020]', 1, 'Saudi Arabia Riyal');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'RSD', '[1044,1080,1085,46]', 1, 'Serbia Dinar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SCR', '[8360]', 1, 'Seychelles Rupee');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SGD', '[36]', 1, 'Singapore Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SBD', '[36]', 1, 'Solomon Islands Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SOS', '[83]', 1, 'Somalia Shilling');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ZAR', '[82]', 1, 'South Africa Rand');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'LKR', '[8360]', 1, 'Sri Lanka Rupee');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SEK', '[107,114]', 1, 'Sweden Krona');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SCR', '[8360]', 1, 'Seychelles Rupee');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SGD', '[36]', 1, 'Singapore Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SBD', '[36]', 1, 'Solomon Islands Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SOS', '[83]', 1, 'Somalia Shilling');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ZAR', '[82]', 1, 'South Africa Rand');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'LKR', '[8360]', 1, 'Sri Lanka Rupee');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SEK', '[107,114]', 1, 'Sweden Krona');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'CHF', '[67,72,70]', 1, 'Switzerland Franc');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SRD', '[36]', 1, 'Suriname Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SYP', '[163]', 1, 'Syria Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SRD', '[36]', 1, 'Suriname Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SYP', '[163]', 1, 'Syria Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'TWD', '[78,84,36]', 1, 'Taiwan New Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'THB', '[3647]', 1, 'Thailand Baht');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'THB', '[3647]', 1, 'Thailand Baht');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'TTD', '[84,84,36]', 1, 'Trinidad and Tobago Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'TND', NULL, 1, 'Tunisia Dinar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'TRL', '[84,76]', 1, 'Turkey Lira');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'TRY', '[8356]', 1, 'Turkey Lira');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'TVD', '[36]', 1, 'Tuvalu Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'UAH', '[8372]', 1, 'Ukraine Hryvna');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'AED', NULL, 1, 'United Arab Emirates Dirham');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'GBP', '[163]', 1, 'United Kingdom Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'USD', '[36]', 1, 'United States Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'UYU', '[36,85]', 1, 'Uruguay Peso');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'TND', NULL, 1, 'Tunisia Dinar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'TRY', '[8356]', 1, 'Turkey Lira');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'TVD', '[36]', 1, 'Tuvalu Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'UAH', '[8372]', 1, 'Ukraine Hryvna');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'AED', NULL, 1, 'United Arab Emirates Dirham');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'GBP', '[163]', 1, 'United Kingdom Pound');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'USD', '[36]', 1, 'United States Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'UYU', '[36,85]', 1, 'Uruguay Peso');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'UZS', '[1083,1074]', 1, 'Uzbekistan Som');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'VEF', '[66,115]', 1, 'Venezuela Bolivar Fuerte');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'VND', '[8363]', 1, 'Viet Nam Dong');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'XAF', NULL, 1, 'Communaute Financiere Africaine (BEAC) CFA Franc');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'XOF', NULL, 1, 'Communaute Financiere Africaine (BCEAO) Franc');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'XPF', '[70]', 1, 'Franc CFP');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'YER', '[65020]', 1, 'Yemen Rial');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ZWD', '[90,36]', 1, 'Zimbabwe Dollar');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'VEF', '[66,115]', 1, 'Venezuela Bolivar Fuerte');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'VND', '[8363]', 1, 'Viet Nam Dong');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'XAF', NULL, 1, 'Communaute Financiere Africaine (BEAC) CFA Franc');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'XOF', NULL, 1, 'Communaute Financiere Africaine (BCEAO) Franc');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'XPF', '[70]', 1, 'Franc CFP');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'YER', '[65020]', 1, 'Yemen Rial');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ZWD', '[90,36]', 1, 'Zimbabwe Dollar');
|
||||
|
||||
-- obsolete
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ATS', NULL, 0, 'Shiliing autrichiens');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BEF', NULL, 0, 'Francs belges');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'DEM', NULL, 0, 'Deutsch mark');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ESP', NULL, 0, 'Pesete');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'FIM', NULL, 0, 'Mark finlandais');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'FRF', NULL, 0, 'Francs francais');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'GRD', NULL, 0, 'Drachme (grece)');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'IEP', NULL, 0, 'Livres irlandaises');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ITL', NULL, 0, 'Lires');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'LUF', NULL, 0, 'Francs luxembourgeois');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'NLG', NULL, 0, 'Florins');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'PTE', NULL, 0, 'Escudos');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SKK', NULL, 0, 'Couronnes slovaques');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SUR', NULL, 0, 'Rouble');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'XEU', NULL, 0, 'Ecus');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ATS', NULL, 0, 'Shiliing autrichiens');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'BEF', NULL, 0, 'Francs belges');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'DEM', NULL, 0, 'Deutsche Mark');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ESP', NULL, 0, 'Pesete');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'FIM', NULL, 0, 'Mark finlandais');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'FRF', NULL, 0, 'Francs francais');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'GRD', NULL, 0, 'Drachme (grece)');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'IEP', NULL, 0, 'Livres irlandaises');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ITL', NULL, 0, 'Lires');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'LUF', NULL, 0, 'Francs luxembourgeois');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'NLG', NULL, 0, 'Florins');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'PTE', NULL, 0, 'Escudos');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SKK', NULL, 0, 'Couronnes slovaques');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'SUR', NULL, 0, 'Rouble');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'XEU', NULL, 0, 'Ecus');
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'TRL', '[84,76]', 0, 'Turkey Lira');
|
||||
|
||||
|
||||
-- invalid (for compatibility)
|
||||
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ARP', NULL, 0, 'Pesos argentins');
|
||||
|
||||
@ -107,6 +107,11 @@ ALTER TABLE llx_user DROP COLUMN whatsapp;
|
||||
ALTER TABLE llx_user ADD COLUMN datestartvalidity datetime;
|
||||
ALTER TABLE llx_user ADD COLUMN dateendvalidity datetime;
|
||||
|
||||
ALTER TABLE llx_user ADD COLUMN idpers1 varchar(128);
|
||||
ALTER TABLE llx_user ADD COLUMN idpers2 varchar(128);
|
||||
ALTER TABLE llx_user ADD COLUMN idpers3 varchar(128);
|
||||
|
||||
|
||||
-- Intracomm Report
|
||||
CREATE TABLE llx_c_transport_mode (
|
||||
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||
|
||||
@ -25,6 +25,8 @@ create table llx_user
|
||||
ref_ext varchar(50), -- reference into an external system (not used by dolibarr)
|
||||
ref_int varchar(50), -- reference into an internal system (deprecated)
|
||||
|
||||
admin smallint DEFAULT 0, -- user has admin profile
|
||||
|
||||
employee tinyint DEFAULT 1, -- 1 if user is an employee
|
||||
fk_establishment integer DEFAULT 0,
|
||||
|
||||
@ -55,22 +57,24 @@ create table llx_user
|
||||
personal_mobile varchar(20),
|
||||
email varchar(255),
|
||||
personal_email varchar(255),
|
||||
signature text DEFAULT NULL,
|
||||
|
||||
socialnetworks text DEFAULT NULL, -- json with socialnetworks
|
||||
|
||||
signature text DEFAULT NULL,
|
||||
admin smallint DEFAULT 0,
|
||||
--module_comm smallint DEFAULT 1,
|
||||
--module_compta smallint DEFAULT 1,
|
||||
|
||||
module_comm smallint DEFAULT 1,
|
||||
module_compta smallint DEFAULT 1,
|
||||
|
||||
fk_soc integer,
|
||||
fk_socpeople integer,
|
||||
fk_member integer,
|
||||
fk_user integer, -- Hierarchic parent
|
||||
fk_soc integer, -- id thirdparty if user linked to a company (external user)
|
||||
fk_socpeople integer, -- id contact origin if user linked to a contact
|
||||
fk_member integer, -- if member if suer linked to a member
|
||||
fk_user integer, -- Supervisor, hierarchic parent
|
||||
fk_user_expense_validator integer,
|
||||
fk_user_holiday_validator integer,
|
||||
|
||||
idpers1 varchar(128),
|
||||
idpers2 varchar(128),
|
||||
idpers3 varchar(128),
|
||||
|
||||
note_public text,
|
||||
note text DEFAULT NULL,
|
||||
model_pdf varchar(255) DEFAULT NULL,
|
||||
@ -103,5 +107,5 @@ create table llx_user
|
||||
import_key varchar(14), -- import key
|
||||
default_range integer,
|
||||
default_c_exp_tax_cat integer,
|
||||
fk_warehouse integer
|
||||
fk_warehouse integer -- default warehouse os user
|
||||
)ENGINE=innodb;
|
||||
|
||||
@ -2068,8 +2068,8 @@ function migrate_commande_livraison($db, $langs, $conf)
|
||||
|
||||
$db->begin();
|
||||
|
||||
$sql = "SELECT l.rowid, l.fk_commande";
|
||||
$sql .= ", c.ref_client, c.date_livraison";
|
||||
$sql = "SELECT l.rowid, l.fk_commande,";
|
||||
$sql .= " c.ref_client, c.date_livraison as delivery_date";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."livraison as l, ".MAIN_DB_PREFIX."commande as c";
|
||||
$sql .= " WHERE c.rowid = l.fk_commande";
|
||||
$resql = $db->query($sql);
|
||||
@ -2090,7 +2090,7 @@ function migrate_commande_livraison($db, $langs, $conf)
|
||||
|
||||
if ($resql2)
|
||||
{
|
||||
$delivery_date = $db->jdate($obj->date_livraison);
|
||||
$delivery_date = $db->jdate($obj->delivery_date);
|
||||
|
||||
$sqlu = "UPDATE ".MAIN_DB_PREFIX."livraison SET";
|
||||
$sqlu .= " ref_client='".$db->escape($obj->ref_client)."'";
|
||||
@ -3007,7 +3007,7 @@ function migrate_customerorder_shipping($db, $langs, $conf)
|
||||
|
||||
if ($db->query($sqlAdd1) && $db->query($sqlAdd2))
|
||||
{
|
||||
$sqlSelect = "SELECT e.rowid as shipping_id, c.ref_client, c.date_livraison";
|
||||
$sqlSelect = "SELECT e.rowid as shipping_id, c.ref_client, c.date_livraison as delivery_date";
|
||||
$sqlSelect .= " FROM ".MAIN_DB_PREFIX."expedition as e";
|
||||
$sqlSelect .= ", ".MAIN_DB_PREFIX."element_element as el";
|
||||
$sqlSelect .= " LEFT JOIN ".MAIN_DB_PREFIX."commande as c ON c.rowid = el.fk_source AND el.sourcetype = 'commande'";
|
||||
@ -3028,7 +3028,7 @@ function migrate_customerorder_shipping($db, $langs, $conf)
|
||||
|
||||
$sqlUpdate = "UPDATE ".MAIN_DB_PREFIX."expedition SET";
|
||||
$sqlUpdate .= " ref_customer = '".$db->escape($obj->ref_client)."'";
|
||||
$sqlUpdate .= ", date_delivery = '".$db->escape($obj->date_livraison ? $obj->date_livraison : 'null')."'";
|
||||
$sqlUpdate .= ", date_delivery = '".$db->escape($obj->delivery_date ? $obj->delivery_date : 'null')."'";
|
||||
$sqlUpdate .= " WHERE rowid = ".$obj->shipping_id;
|
||||
|
||||
$result = $db->query($sqlUpdate);
|
||||
|
||||
@ -37,6 +37,8 @@ UnlockNewSessions=Remove connection lock
|
||||
YourSession=Your session
|
||||
Sessions=Users Sessions
|
||||
WebUserGroup=Web server user/group
|
||||
PermissionsOnFilesInWebRoot=Permissions on files in web root directory
|
||||
PermissionsOnFile=Permissions on file %s
|
||||
NoSessionFound=Your PHP configuration seems to not allow listing of active sessions. The directory used to save sessions (<b>%s</b>) may be protected (for example by OS permissions or by PHP directive open_basedir).
|
||||
DBStoringCharset=Database charset to store data
|
||||
DBSortingCharset=Database charset to sort data
|
||||
@ -71,7 +73,7 @@ DisableJavascriptNote=Note: For test or debug purpose. For optimization for blin
|
||||
UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
|
||||
UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
|
||||
DelaiedFullListToSelectCompany=Wait until a key is pressed before loading content of Third Parties combo list.<br>This may increase performance if you have a large number of third parties, but it is less convenient.
|
||||
DelaiedFullListToSelectContact=Wait until a key is pressed before loading content of Contact combo list.<br>This may increase performance if you have a large number of contacts, but it is less convenient)
|
||||
DelaiedFullListToSelectContact=Wait until a key is pressed before loading content of Contact combo list.<br>This may increase performance if you have a large number of contacts, but it is less convenient.
|
||||
NumberOfKeyToSearch=Number of characters to trigger search: %s
|
||||
NumberOfBytes=Number of Bytes
|
||||
SearchString=Search string
|
||||
@ -80,6 +82,7 @@ AllowToSelectProjectFromOtherCompany=On document of a third party, can choose a
|
||||
JavascriptDisabled=JavaScript disabled
|
||||
UsePreviewTabs=Use preview tabs
|
||||
ShowPreview=Show preview
|
||||
ShowHideDetails=Show-Hide details
|
||||
PreviewNotAvailable=Preview not available
|
||||
ThemeCurrentlyActive=Theme currently active
|
||||
CurrentTimeZone=TimeZone PHP (server)
|
||||
@ -271,7 +274,7 @@ NoticePeriod=Notice period
|
||||
NewByMonth=New by month
|
||||
Emails=Emails
|
||||
EMailsSetup=Emails setup
|
||||
EMailsDesc=This page allows you to override your default PHP parameters for email sending. In most cases on Unix/Linux OS, the PHP setup is correct and these parameters are unnecessary.
|
||||
EMailsDesc=This page allows you to set parameters or options for email sending.
|
||||
EmailSenderProfiles=Emails sender profiles
|
||||
EMailsSenderProfileDesc=You can keep this section empty. If you enter some emails here, they will be added to the list of possible senders into the combobox when your write a new email.
|
||||
MAIN_MAIL_SMTP_PORT=SMTP/SMTPS Port (default value in php.ini: <b>%s</b>)
|
||||
@ -289,6 +292,7 @@ MAIN_MAIL_SMTPS_ID=SMTP ID (if sending server requires authentication)
|
||||
MAIN_MAIL_SMTPS_PW=SMTP Password (if sending server requires authentication)
|
||||
MAIN_MAIL_EMAIL_TLS=Use TLS (SSL) encryption
|
||||
MAIN_MAIL_EMAIL_STARTTLS=Use TLS (STARTTLS) encryption
|
||||
MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED=Authorise les certificats auto-signés
|
||||
MAIN_MAIL_EMAIL_DKIM_ENABLED=Use DKIM to generate email signature
|
||||
MAIN_MAIL_EMAIL_DKIM_DOMAIN=Email Domain for use with dkim
|
||||
MAIN_MAIL_EMAIL_DKIM_SELECTOR=Name of dkim selector
|
||||
@ -438,9 +442,9 @@ ExtrafieldParamHelpPassword=Leaving this field blank means this value will be st
|
||||
ExtrafieldParamHelpselect=List of values must be lines with format key,value (where key can't be '0')<br><br> for example: <br>1,value1<br>2,value2<br>code3,value3<br>...<br><br>In order to have the list depending on another complementary attribute list:<br>1,value1|options_<i>parent_list_code</i>:parent_key<br>2,value2|options_<i>parent_list_code</i>:parent_key <br><br>In order to have the list depending on another list:<br>1,value1|<i>parent_list_code</i>:parent_key<br>2,value2|<i>parent_list_code</i>:parent_key
|
||||
ExtrafieldParamHelpcheckbox=List of values must be lines with format key,value (where key can't be '0')<br><br> for example: <br>1,value1<br>2,value2<br>3,value3<br>...
|
||||
ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')<br><br> for example: <br>1,value1<br>2,value2<br>3,value3<br>...
|
||||
ExtrafieldParamHelpsellist=List of values comes from a table<br>Syntax: table_name:label_field:id_field::filter<br>Example: c_typent:libelle:id::filter<br><br>- idfilter is necessarly a primary int key<br>- filter can be a simple test (eg active=1) to display only active value<br>You can also use $ID$ in filter witch is the current id of current object<br>To do a SELECT in filter use $SEL$<br>if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another complementary attribute list:<br>c_typent:libelle:id:options_<i>parent_list_code</i>|parent_column:filter <br><br>In order to have the list depending on another list:<br>c_typent:libelle:id:<i>parent_list_code</i>|parent_column:filter
|
||||
ExtrafieldParamHelpsellist=List of values comes from a table<br>Syntax: table_name:label_field:id_field::filter<br>Example: c_typent:libelle:id::filter<br><br>- id_field is necessarly a primary int key<br>- filter can be a simple test (eg active=1) to display only active value<br>You can also use $ID$ in filter which is the current id of current object<br>To use a SELECT into the filter use the keyword $SEL$ to bypass anti-injection protection.<br>if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another complementary attribute list:<br>c_typent:libelle:id:options_<i>parent_list_code</i>|parent_column:filter <br><br>In order to have the list depending on another list:<br>c_typent:libelle:id:<i>parent_list_code</i>|parent_column:filter
|
||||
ExtrafieldParamHelpchkbxlst=List of values comes from a table<br>Syntax: table_name:label_field:id_field::filter<br>Example: c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value<br>You can also use $ID$ in filter witch is the current id of current object<br>To do a SELECT in filter use $SEL$<br>if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another complementary attribute list:<br>c_typent:libelle:id:options_<i>parent_list_code</i>|parent_column:filter <br><br>In order to have the list depending on another list:<br>c_typent:libelle:id:<i>parent_list_code</i>|parent_column:filter
|
||||
ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath<br>Syntax: ObjectName:Classpath<br>Examples:<br>Societe:societe/class/societe.class.php<br>Contact:contact/class/contact.class.php
|
||||
ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath<br>Syntax: ObjectName:Classpath
|
||||
ExtrafieldParamHelpSeparator=Keep empty for a simple separator<br>Set this to 1 for a collapsing separator (open by default for new session, then status is kept for each user session)<br>Set this to 2 for a collapsing separator (collapsed by default for new session, then status is kept fore each user session)
|
||||
LibraryToBuildPDF=Library used for PDF generation
|
||||
LocalTaxDesc=Some countries may apply two or three taxes on each invoice line. If this is the case, choose the type for the second and third tax and its rate. Possible type are:<br>1: local tax apply on products and services without vat (localtax is calculated on amount without tax)<br>2: local tax apply on products and services including vat (localtax is calculated on amount + main tax)<br>3: local tax apply on products without vat (localtax is calculated on amount without tax)<br>4: local tax apply on products including vat (localtax is calculated on amount + main vat)<br>5: local tax apply on services without vat (localtax is calculated on amount without tax)<br>6: local tax apply on services including vat (localtax is calculated on amount + tax)
|
||||
@ -478,9 +482,13 @@ ModuleCompanyCodeCustomerDigitaria=%s followed by the truncated customer name by
|
||||
ModuleCompanyCodeSupplierDigitaria=%s followed by the truncated supplier name by the number of characters: %s for the supplier accounting code.
|
||||
Use3StepsApproval=By default, Purchase Orders need to be created and approved by 2 different users (one step/user to create and one step/user to approve. Note that if user has both permission to create and approve, one step/user will be enough). You can ask with this option to introduce a third step/user approval, if amount is higher than a dedicated value (so 3 steps will be necessary: 1=validation, 2=first approval and 3=second approval if amount is enough).<br>Set this to empty if one approval (2 steps) is enough, set it to a very low value (0.1) if a second approval (3 steps) is always required.
|
||||
UseDoubleApproval=Use a 3 steps approval when amount (without tax) is higher than...
|
||||
WarningPHPMail=WARNING: It is often better to setup outgoing emails to use the email server of your provider instead of the default setup. Some email providers (like Yahoo) do not allow you to send an email from another server than their own server. Your current setup uses the server of the application to send email and not the server of your email provider, so some recipients (the one compatible with the restrictive DMARC protocol), will ask your email provider if they can accept your email and some email providers (like Yahoo) may respond "no" because the server is not theirs, so few of your sent Emails may not be accepted (be careful also of your email provider's sending quota).<br>If your Email provider (like Yahoo) has this restriction, you must change Email setup to choose the other method "SMTP server" and enter the SMTP server and credentials provided by your Email provider.
|
||||
WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. It is often better to setup outgoing emails to use the email server of your Email Service Provider instead of the default setup for several reasons:
|
||||
WarningPHPMailA=- Using the server of the Email Service Provider increases the trustability of your email, so it increases the deliverablity without being flagged as SPAM
|
||||
WarningPHPMailB=- Some Email Service Providers (like Yahoo) do not allow you to send an email from another server than their own server. Your current setup uses the server of the application to send email and not the server of your email provider, so some recipients (the one compatible with the restrictive DMARC protocol), will ask your email provider if they can accept your email and some email providers (like Yahoo) may respond "no" because the server is not theirs, so few of your sent Emails may not be accepted for delivery (be careful also of your email provider's sending quota).
|
||||
WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to send emails is also interesting so all emails sent from application will also be saved into your "Sent" directory of your mailbox.
|
||||
WarningPHPMailD=If the method 'PHP Mail' is really the method you would like to use, you can remove this warning by adding the constant MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP to 1 in Home - Setup - Other.
|
||||
WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: <strong>%s</strong>.
|
||||
WarningPHPMailSPF=If the domain name in your sender email address is protected by SPF (ask you email provider), you must include the following IPs in the SPF record of the DNS of your domain: <strong>%s</strong>.
|
||||
WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask you domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: <strong>%s</strong>.
|
||||
ClickToShowDescription=Click to show description
|
||||
DependsOn=This module needs the module(s)
|
||||
RequiredBy=This module is required by module(s)
|
||||
@ -551,8 +559,6 @@ Module57Name=Payments by Direct Debit
|
||||
Module57Desc=Management of Direct Debit orders. It includes generation of SEPA file for European countries.
|
||||
Module58Name=ClickToDial
|
||||
Module58Desc=Integration of a ClickToDial system (Asterisk, ...)
|
||||
Module59Name=Bookmark4u
|
||||
Module59Desc=Add function to generate Bookmark4u account from a Dolibarr account
|
||||
Module60Name=Stickers
|
||||
Module60Desc=Management of stickers
|
||||
Module70Name=Interventions
|
||||
@ -656,7 +662,7 @@ Module50200Desc=Offer customers a PayPal online payment page (PayPal account or
|
||||
Module50300Name=Stripe
|
||||
Module50300Desc=Offer customers a Stripe online payment page (credit/debit cards). This can be used to allow your customers to make ad-hoc payments or payments related to a specific Dolibarr object (invoice, order etc...)
|
||||
Module50400Name=Accounting (double entry)
|
||||
Module50400Desc=Accounting management (double entries, support general and auxiliary ledgers). Export the ledger in several other accounting software formats.
|
||||
Module50400Desc=Accounting management (double entries, support General and Subsidiary Ledgers). Export the ledger in several other accounting software formats.
|
||||
Module54000Name=PrintIPP
|
||||
Module54000Desc=Direct print (without opening the documents) using Cups IPP interface (Printer must be visible from server, and CUPS must be installed on server).
|
||||
Module55000Name=Poll, Survey or Vote
|
||||
@ -671,7 +677,7 @@ Module63000Name=Resources
|
||||
Module63000Desc=Manage resources (printers, cars, rooms, ...) for allocating to events
|
||||
Permission11=Read customer invoices
|
||||
Permission12=Create/modify customer invoices
|
||||
Permission13=Unvalidate customer invoices
|
||||
Permission13=Invalidate customer invoices
|
||||
Permission14=Validate customer invoices
|
||||
Permission15=Send customer invoices by email
|
||||
Permission16=Create payments for customer invoices
|
||||
@ -688,6 +694,7 @@ Permission32=Create/modify products
|
||||
Permission34=Delete products
|
||||
Permission36=See/manage hidden products
|
||||
Permission38=Export products
|
||||
Permission39=Ignore minimum price
|
||||
Permission41=Read projects and tasks (shared project and projects I'm contact for). Can also enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet)
|
||||
Permission42=Create/modify projects (shared project and projects I'm contact for). Can also create tasks and assign users to project and tasks
|
||||
Permission44=Delete projects (shared project and projects I'm contact for)
|
||||
@ -696,6 +703,9 @@ Permission61=Read interventions
|
||||
Permission62=Create/modify interventions
|
||||
Permission64=Delete interventions
|
||||
Permission67=Export interventions
|
||||
Permission68=Send interventions by email
|
||||
Permission69=Validate interventions
|
||||
Permission70=Invalidate interventions
|
||||
Permission71=Read members
|
||||
Permission72=Create/modify members
|
||||
Permission74=Delete members
|
||||
@ -718,6 +728,7 @@ Permission95=Read reports
|
||||
Permission101=Read sendings
|
||||
Permission102=Create/modify sendings
|
||||
Permission104=Validate sendings
|
||||
Permission105=Send sendings by email
|
||||
Permission106=Export sendings
|
||||
Permission109=Delete sendings
|
||||
Permission111=Read financial accounts
|
||||
@ -825,10 +836,11 @@ Permission402=Create/modify discounts
|
||||
Permission403=Validate discounts
|
||||
Permission404=Delete discounts
|
||||
Permission430=Use Debug Bar
|
||||
Permission511=Read payments of salaries
|
||||
Permission511=Read payments of salaries (yours and subordinates)
|
||||
Permission512=Create/modify payments of salaries
|
||||
Permission514=Delete payments of salaries
|
||||
Permission517=Export salaries
|
||||
Permission517=Read payments of salaries of everybody
|
||||
Permission519=Export salaries
|
||||
Permission520=Read Loans
|
||||
Permission522=Create/modify loans
|
||||
Permission524=Delete loans
|
||||
@ -843,6 +855,9 @@ Permission561=Read payment orders by credit transfer
|
||||
Permission562=Create/modify payment order by credit transfer
|
||||
Permission563=Send/Transmit payment order by credit transfer
|
||||
Permission564=Record Debits/Rejections of credit transfer
|
||||
Permission601=Read stickers
|
||||
Permission602=Create/modify stickers
|
||||
Permission609=Delete stickers
|
||||
Permission650=Read Bills of Materials
|
||||
Permission651=Create/Update Bills of Materials
|
||||
Permission652=Delete Bills of Materials
|
||||
@ -884,7 +899,9 @@ Permission1185=Approve purchase orders
|
||||
Permission1186=Order purchase orders
|
||||
Permission1187=Acknowledge receipt of purchase orders
|
||||
Permission1188=Delete purchase orders
|
||||
Permission1189=Check/Uncheck a purchase order reception
|
||||
Permission1190=Approve (second approval) purchase orders
|
||||
Permission1191=Export supplier orders and their attributes
|
||||
Permission1201=Get result of an export
|
||||
Permission1202=Create/Modify an export
|
||||
Permission1231=Read vendor invoices
|
||||
@ -898,6 +915,8 @@ Permission1251=Run mass imports of external data into database (data load)
|
||||
Permission1321=Export customer invoices, attributes and payments
|
||||
Permission1322=Reopen a paid bill
|
||||
Permission1421=Export sales orders and attributes
|
||||
Permission1521=Read documents
|
||||
Permission1522=Delete documents
|
||||
Permission2401=Read actions (events or tasks) linked to his user account (if owner of event or just assigned to)
|
||||
Permission2402=Create/modify actions (events or tasks) linked to his user account (if owner of event)
|
||||
Permission2403=Delete actions (events or tasks) linked to his user account (if owner of event)
|
||||
@ -932,9 +951,13 @@ Permission23001=Read Scheduled job
|
||||
Permission23002=Create/update Scheduled job
|
||||
Permission23003=Delete Scheduled job
|
||||
Permission23004=Execute Scheduled job
|
||||
Permission50101=Use Point of Sale
|
||||
Permission50101=Use Point of Sale (SimplePOS)
|
||||
Permission50151=Use Point of Sale (TakePOS)
|
||||
Permission50201=Read transactions
|
||||
Permission50202=Import transactions
|
||||
Permission50330=Read objects of Zapier
|
||||
Permission50331=Create/Update objects of Zapier
|
||||
Permission50332=Delete objects of Zapier
|
||||
Permission50401=Bind products and invoices with accounting accounts
|
||||
Permission50411=Read operations in ledger
|
||||
Permission50412=Write/Edit operations in ledger
|
||||
@ -958,6 +981,17 @@ Permission63001=Read resources
|
||||
Permission63002=Create/modify resources
|
||||
Permission63003=Delete resources
|
||||
Permission63004=Link resources to agenda events
|
||||
Permission64001=Allow direct printing
|
||||
Permission67000=Allow printing of receipts
|
||||
Permission68001=Read intracomm report
|
||||
Permission68002=Create/modify intracomm report
|
||||
Permission68004=Delete intracomm report
|
||||
Permission941601=Read receipts
|
||||
Permission941602=Create and modify receipts
|
||||
Permission941603=Validate receipts
|
||||
Permission941604=Send receipts by email
|
||||
Permission941605=Export receipts
|
||||
Permission941606=Delete receipts
|
||||
DictionaryCompanyType=Third-party types
|
||||
DictionaryCompanyJuridicalType=Third-party legal entities
|
||||
DictionaryProspectLevel=Prospect potential level for companies
|
||||
@ -997,6 +1031,8 @@ DictionaryHolidayTypes=Types of leave
|
||||
DictionaryOpportunityStatus=Lead status for project/lead
|
||||
DictionaryExpenseTaxCat=Expense report - Transportation categories
|
||||
DictionaryExpenseTaxRange=Expense report - Range by transportation category
|
||||
DictionaryTransportMode=Intracomm report - Transport mode
|
||||
TypeOfUnit=Type of unit
|
||||
SetupSaved=Setup saved
|
||||
SetupNotSaved=Setup not saved
|
||||
BackToModuleList=Back to Module list
|
||||
@ -1047,6 +1083,7 @@ LabelUsedByDefault=Label used by default if no translation can be found for code
|
||||
LabelOnDocuments=Label on documents
|
||||
LabelOrTranslationKey=Label or translation key
|
||||
ValueOfConstantKey=Value of a configuration constant
|
||||
ConstantIsOn=Option %s is on
|
||||
NbOfDays=No. of days
|
||||
AtEndOfMonth=At end of month
|
||||
CurrentNext=Current/Next
|
||||
@ -1145,6 +1182,7 @@ InfoWebServer=About Web Server
|
||||
InfoDatabase=About Database
|
||||
InfoPHP=About PHP
|
||||
InfoPerf=About Performances
|
||||
InfoSecurity=About Security
|
||||
BrowserName=Browser name
|
||||
BrowserOS=Browser OS
|
||||
ListOfSecurityEvents=List of Dolibarr security events
|
||||
@ -1194,7 +1232,8 @@ RestoreDesc=To restore a Dolibarr backup, two steps are required.
|
||||
RestoreDesc2=Restore the backup file (zip file for example) of the "documents" directory to a new Dolibarr installation or into this current documents directory (<b>%s</b>).
|
||||
RestoreDesc3=Restore the database structure and data from a backup dump file into the database of the new Dolibarr installation or into the database of this current installation (<b>%s</b>). Warning, once the restore is complete, you must use a login/password, that existed from the backup time/installation to connect again.<br>To restore a backup database into this current installation, you can follow this assistant.
|
||||
RestoreMySQL=MySQL import
|
||||
ForcedToByAModule= This rule is forced to <b>%s</b> by an activated module
|
||||
ForcedToByAModule=This rule is forced to <b>%s</b> by an activated module
|
||||
ValueIsForcedBySystem=This value is forced by the system. You can't change it.
|
||||
PreviousDumpFiles=Existing backup files
|
||||
PreviousArchiveFiles=Existing archive files
|
||||
WeekStartOnDay=First day of the week
|
||||
@ -1282,7 +1321,7 @@ GetBarCode=Get barcode
|
||||
NumberingModules=Numbering models
|
||||
DocumentModules=Document models
|
||||
##### Module password generation
|
||||
PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: 8 characters containing shared numbers and characters in lowercase.
|
||||
PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters in lowercase.
|
||||
PasswordGenerationNone=Do not suggest a generated password. Password must be typed in manually.
|
||||
PasswordGenerationPerso=Return a password according to your personally defined configuration.
|
||||
SetupPerso=According to your configuration
|
||||
@ -1523,7 +1562,9 @@ LDAPDescValues=Example values are designed for <b>OpenLDAP</b> with following lo
|
||||
ForANonAnonymousAccess=For an authenticated access (for a write access for example)
|
||||
PerfDolibarr=Performance setup/optimizing report
|
||||
YouMayFindPerfAdviceHere=This page provides some checks or advice related to performance.
|
||||
NotInstalled=Not installed, so your server is not slowed down by this.
|
||||
NotInstalled=Not installed.
|
||||
NotSlowedDownByThis=Not slowed down by this.
|
||||
NotRiskOfLeakWithThis=Not risk of leak with this.
|
||||
ApplicativeCache=Applicative cache
|
||||
MemcachedNotAvailable=No applicative cache found. You can enhance performance by installing a cache server Memcached and a module able to use this cache server.<br>More information here <a href="http://wiki.dolibarr.org/index.php/Module_MemCached_EN">http://wiki.dolibarr.org/index.php/Module_MemCached_EN</a>.<br>Note that a lot of web hosting provider does not provide such cache server.
|
||||
MemcachedModuleAvailableButNotSetup=Module memcached for applicative cache found but setup of module is not complete.
|
||||
@ -1571,9 +1612,9 @@ SyslogLevel=Level
|
||||
SyslogFilename=File name and path
|
||||
YouCanUseDOL_DATA_ROOT=You can use DOL_DATA_ROOT/dolibarr.log for a log file in Dolibarr "documents" directory. You can set a different path to store this file.
|
||||
ErrorUnknownSyslogConstant=Constant %s is not a known Syslog constant
|
||||
OnlyWindowsLOG_USER=Windows only supports LOG_USER
|
||||
OnlyWindowsLOG_USER=On Windows, only the LOG_USER facility will be supported
|
||||
CompressSyslogs=Compression and backup of debug log files (generated by module Log for debug)
|
||||
SyslogFileNumberOfSaves=Log backups
|
||||
SyslogFileNumberOfSaves=Number of backup logs to keep
|
||||
ConfigureCleaningCronjobToSetFrequencyOfSaves=Configure cleaning scheduled job to set log backup frequency
|
||||
##### Donations #####
|
||||
DonationsSetup=Donation module setup
|
||||
@ -1639,11 +1680,11 @@ StockSetup=Stock module setup
|
||||
IfYouUsePointOfSaleCheckModule=If you use the Point of Sale module (POS) provided by default or an external module, this setup may be ignored by your POS module. Most POS modules are designed by default to create an invoice immediately and decrease stock irrespective of the options here. So if you need or not to have a stock decrease when registering a sale from your POS, check also your POS module setup.
|
||||
##### Menu #####
|
||||
MenuDeleted=Menu deleted
|
||||
Menu=Menu
|
||||
Menus=Menus
|
||||
TreeMenuPersonalized=Personalized menus
|
||||
NotTopTreeMenuPersonalized=Personalized menus not linked to a top menu entry
|
||||
NewMenu=New menu
|
||||
Menu=Selection of menu
|
||||
MenuHandler=Menu handler
|
||||
MenuModule=Source module
|
||||
HideUnauthorizedMenu= Hide unauthorized menus (gray)
|
||||
@ -1794,7 +1835,6 @@ TypePaymentDesc=0:Customer payment type, 1:Vendor payment type, 2:Both customers
|
||||
IncludePath=Include path (defined into variable %s)
|
||||
ExpenseReportsSetup=Setup of module Expense Reports
|
||||
TemplatePDFExpenseReports=Document templates to generate expense report document
|
||||
ExpenseReportsIkSetup=Setup of module Expense Reports - Milles index
|
||||
ExpenseReportsRulesSetup=Setup of module Expense Reports - Rules
|
||||
ExpenseReportNumberingModules=Expense reports numbering module
|
||||
NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only.
|
||||
@ -1864,7 +1904,7 @@ MailToSendReception=Receptions
|
||||
MailToThirdparty=Third parties
|
||||
MailToMember=Members
|
||||
MailToUser=Users
|
||||
MailToProject=Projects page
|
||||
MailToProject=Projects
|
||||
MailToTicket=Tickets
|
||||
ByDefaultInList=Show by default on list view
|
||||
YouUseLastStableVersion=You use the latest stable version
|
||||
@ -1960,6 +2000,8 @@ LoadThirdPartyFromName=Load third party searching on %s (load only)
|
||||
LoadThirdPartyFromNameOrCreate=Load third party searching on %s (create if not found)
|
||||
WithDolTrackingID=Message from a conversation initiated by a first email sent from Dolibarr
|
||||
WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr
|
||||
WithDolTrackingIDInMsgId=Message sent from Dolibarr
|
||||
WithoutDolTrackingIDInMsgId=Message NOT sent from Dolibarr
|
||||
CreateCandidature=Create candidature
|
||||
FormatZip=Zip
|
||||
MainMenuCode=Menu entry code (mainmenu)
|
||||
@ -1974,7 +2016,7 @@ DisabledResourceLinkContact=Disable feature to link a resource to contacts
|
||||
EnableResourceUsedInEventCheck=Enable feature to check if a resource is in use in an event
|
||||
ConfirmUnactivation=Confirm module reset
|
||||
OnMobileOnly=On small screen (smartphone) only
|
||||
DisableProspectCustomerType=Disable the "Prospect + Customer" third party type (so third party must be Prospect or Customer but can't be both)
|
||||
DisableProspectCustomerType=Disable the "Prospect + Customer" third party type (so third party must be "Prospect" or "Customer", but can't be both)
|
||||
MAIN_OPTIMIZEFORTEXTBROWSER=Simplify interface for blind person
|
||||
MAIN_OPTIMIZEFORTEXTBROWSERDesc=Enable this option if you are a blind person, or if you use the application from a text browser like Lynx or Links.
|
||||
MAIN_OPTIMIZEFORCOLORBLIND=Change interface's color for color blind person
|
||||
@ -1996,13 +2038,15 @@ UseDebugBar=Use the debug bar
|
||||
DEBUGBAR_LOGS_LINES_NUMBER=Number of last log lines to keep in console
|
||||
WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramaticaly output
|
||||
ModuleActivated=Module %s is activated and slows the interface
|
||||
IfYouAreOnAProductionSetThis=If you are on a production environment, you should set this property to %s.
|
||||
AntivirusEnabledOnUpload=Antivirus enabled on uploaded files
|
||||
EXPORTS_SHARE_MODELS=Export models are share with everybody
|
||||
ExportSetup=Setup of module Export
|
||||
ImportSetup=Setup of module Import
|
||||
InstanceUniqueID=Unique ID of the instance
|
||||
SmallerThan=Smaller than
|
||||
LargerThan=Larger than
|
||||
IfTrackingIDFoundEventWillBeLinked=Note that If a tracking ID of an object is found into incoming email, or if the email is an answer of an email aready collected and linked to an object, the event will be automatically linked to the known related object too.
|
||||
IfTrackingIDFoundEventWillBeLinked=Note that If a tracking ID of an object is found into email, or if the email is an answer of an email aready collected and linked to an object, the created event will be automatically linked to the known related object.
|
||||
WithGMailYouCanCreateADedicatedPassword=With a GMail account, if you enabled the 2 steps validation, it is recommanded to create a dedicated second password for the application instead of using your own account passsword from https://myaccount.google.com/.
|
||||
EmailCollectorTargetDir=It may be a desired behaviour to move the email into another tag/directory when it was processed successfully. Just set name of directory here to use this feature (Do NOT use special characters in name). Note that you must also use a read/write login account.
|
||||
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
||||
@ -2029,4 +2073,10 @@ MeasuringScaleDesc=The scale is the number of places you have to move the decima
|
||||
TemplateAdded=Template added
|
||||
TemplateUpdated=Template updated
|
||||
TemplateDeleted=Template deleted
|
||||
MailToSendEventPush=Template for event reminder emails
|
||||
MailToSendEventPush=Event reminder email
|
||||
SwitchThisForABetterSecurity=Switching this value to %s is recommended for more security
|
||||
DictionaryProductNature= Nature of product
|
||||
CountryIfSpecificToOneCountry=Country (if specific to a given country)
|
||||
YouMayFindSecurityAdviceHere=You may find security advisory here
|
||||
ModuleActivatedMayExposeInformation=This module may expose sensitive data. If you don't need it, disable it.
|
||||
ModuleActivatedDoNotUseInProduction=A module designed for the development has been enabled. Do not enable it on a production environment.
|
||||
|
||||
@ -23,19 +23,7 @@ ECMSearchByKeywords=Search by keywords
|
||||
ECMSearchByEntity=Search by object
|
||||
ECMSectionOfDocuments=Directories of documents
|
||||
ECMTypeAuto=Automatic
|
||||
ECMDocsBySocialContributions=Documents linked to social or fiscal taxes
|
||||
ECMDocsByThirdParties=Documents linked to third parties
|
||||
ECMDocsByProposals=Documents linked to proposals
|
||||
ECMDocsByOrders=Documents linked to customers orders
|
||||
ECMDocsByContracts=Documents linked to contracts
|
||||
ECMDocsByInvoices=Documents linked to customers invoices
|
||||
ECMDocsByProducts=Documents linked to products
|
||||
ECMDocsByProjects=Documents linked to projects
|
||||
ECMDocsByUsers=Documents linked to users
|
||||
ECMDocsByInterventions=Documents linked to interventions
|
||||
ECMDocsByExpenseReports=Documents linked to expense reports
|
||||
ECMDocsByHolidays=Documents linked to holidays
|
||||
ECMDocsBySupplierProposals=Documents linked to vendor proposals
|
||||
ECMDocsBy=Documents linked to %s
|
||||
ECMNoDirectoryYet=No directory created
|
||||
ShowECMSection=Show directory
|
||||
DeleteSection=Remove directory
|
||||
@ -50,3 +38,6 @@ ReSyncListOfDir=Resync list of directories
|
||||
HashOfFileContent=Hash of file content
|
||||
NoDirectoriesFound=No directories found
|
||||
FileNotYetIndexedInDatabase=File not yet indexed into database (try to re-upload it)
|
||||
ExtraFieldsEcmFiles=Extrafields Ecm Files
|
||||
ExtraFieldsEcmDirectories=Extrafields Ecm Directories
|
||||
ECMSetup=ECM Setup
|
||||
|
||||
@ -8,15 +8,9 @@ ConfFileIsNotWritable=Configuration file <b>%s</b> is not writable. Check permis
|
||||
ConfFileIsWritable=Configuration file <b>%s</b> is writable.
|
||||
ConfFileMustBeAFileNotADir=Configuration file <b>%s</b> must be a file, not a directory.
|
||||
ConfFileReload=Reloading parameters from configuration file.
|
||||
PHPSupportSessions=This PHP supports sessions.
|
||||
PHPSupportPOSTGETOk=This PHP supports variables POST and GET.
|
||||
PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check the parameter <b>variables_order</b> in php.ini.
|
||||
PHPSupportGD=This PHP supports GD graphical functions.
|
||||
PHPSupportCurl=This PHP supports Curl.
|
||||
PHPSupportCalendar=This PHP supports calendars extensions.
|
||||
PHPSupportUTF8=This PHP supports UTF8 functions.
|
||||
PHPSupportIntl=This PHP supports Intl functions.
|
||||
PHPSupportxDebug=This PHP supports extended debug functions.
|
||||
PHPSupportSessions=This PHP supports sessions.
|
||||
PHPSupport=This PHP supports %s functions.
|
||||
PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough.
|
||||
PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes.
|
||||
|
||||
40
htdocs/langs/am_ET/intracommreport.lang
Normal file
40
htdocs/langs/am_ET/intracommreport.lang
Normal file
@ -0,0 +1,40 @@
|
||||
Module68000Name = Intracomm report
|
||||
Module68000Desc = Intracomm report management (Support for French DEB/DES format)
|
||||
IntracommReportSetup = Intracommreport module setup
|
||||
IntracommReportAbout = About intracommreport
|
||||
|
||||
# Setup
|
||||
INTRACOMMREPORT_NUM_AGREMENT=Numéro d'agrément (délivré par le CISD de rattachement)
|
||||
INTRACOMMREPORT_TYPE_ACTEUR=Type d'acteur
|
||||
INTRACOMMREPORT_ROLE_ACTEUR=Rôle joué par l'acteur
|
||||
INTRACOMMREPORT_NIV_OBLIGATION_INTRODUCTION=Niveau d'obligation sur les introductions
|
||||
INTRACOMMREPORT_NIV_OBLIGATION_EXPEDITION=Niveau d'obligation sur les expéditions
|
||||
INTRACOMMREPORT_CATEG_FRAISDEPORT=Catégorie de services de type "Frais de port"
|
||||
|
||||
INTRACOMMREPORT_NUM_DECLARATION=Numéro de déclarant
|
||||
|
||||
# Menu
|
||||
MenuIntracommReport=Intracomm report
|
||||
MenuIntracommReportNew=New declaration
|
||||
MenuIntracommReportList=List
|
||||
|
||||
# View
|
||||
NewDeclaration=New declaration
|
||||
Declaration=Declaration
|
||||
AnalysisPeriod=Analysis period
|
||||
TypeOfDeclaration=Type of declaration
|
||||
DEB=Goods exchange declaration (DEB)
|
||||
DES=Services exchange declaration (DES)
|
||||
|
||||
# Export page
|
||||
IntracommReportTitle=Preparation of an XML file in ProDouane format
|
||||
|
||||
# List
|
||||
IntracommReportList=List of generated declarations
|
||||
IntracommReportNumber=Numero of declaration
|
||||
IntracommReportPeriod=Period of nalysis
|
||||
IntracommReportTypeDeclaration=Type of declaration
|
||||
IntracommReportDownload=download XML file
|
||||
|
||||
# Invoice
|
||||
IntracommReportTransportMode=Transport mode
|
||||
@ -19,14 +19,12 @@ MembersCards=Members business cards
|
||||
MembersList=List of members
|
||||
MembersListToValid=List of draft members (to be validated)
|
||||
MembersListValid=List of valid members
|
||||
MembersListUpToDate=List of valid members with up to date subscription
|
||||
MembersListNotUpToDate=List of valid members with subscription out of date
|
||||
MembersListUpToDate=List of valid members with up-to-date subscription
|
||||
MembersListNotUpToDate=List of valid members with out-of-date subscription
|
||||
MembersListResiliated=List of terminated members
|
||||
MembersListQualified=List of qualified members
|
||||
MenuMembersToValidate=Draft members
|
||||
MenuMembersValidated=Validated members
|
||||
MenuMembersUpToDate=Up to date members
|
||||
MenuMembersNotUpToDate=Out of date members
|
||||
MenuMembersResiliated=Terminated members
|
||||
MembersWithSubscriptionToReceive=Members with subscription to receive
|
||||
MembersWithSubscriptionToReceiveShort=Subscription to receive
|
||||
@ -34,6 +32,7 @@ DateSubscription=Subscription date
|
||||
DateEndSubscription=Subscription end date
|
||||
EndSubscription=End subscription
|
||||
SubscriptionId=Subscription id
|
||||
WithoutSubscription=Without subscription
|
||||
MemberId=Member id
|
||||
NewMember=New member
|
||||
MemberType=Member type
|
||||
@ -81,7 +80,7 @@ DeleteType=Delete
|
||||
VoteAllowed=Vote allowed
|
||||
Physical=Physical
|
||||
Moral=Moral
|
||||
MorPhy=Nature
|
||||
MorAndPhy=Moral and Physical
|
||||
Reenable=Reenable
|
||||
ResiliateMember=Terminate a member
|
||||
ConfirmResiliateMember=Are you sure you want to terminate this member?
|
||||
@ -117,6 +116,7 @@ SendingEmailOnMemberValidation=Sending email on new member validation
|
||||
SendingEmailOnNewSubscription=Sending email on new subscription
|
||||
SendingReminderForExpiredSubscription=Sending reminder for expired subscriptions
|
||||
SendingEmailOnCancelation=Sending email on cancelation
|
||||
SendingReminderActionComm=Sending reminder for agenda event
|
||||
# Topic of email templates
|
||||
YourMembershipRequestWasReceived=Your membership was received.
|
||||
YourMembershipWasValidated=Your membership was validated
|
||||
@ -167,6 +167,7 @@ MembersStatisticsByState=Members statistics by state/province
|
||||
MembersStatisticsByTown=Members statistics by town
|
||||
MembersStatisticsByRegion=Members statistics by region
|
||||
NbOfMembers=Number of members
|
||||
NbOfActiveMembers=Number of current active members
|
||||
NoValidatedMemberYet=No validated members found
|
||||
MembersByCountryDesc=This screen show you statistics on members by countries. Graphic depends however on Google online graph service and is available only if an internet connection is is working.
|
||||
MembersByStateDesc=This screen show you statistics on members by state/provinces/canton.
|
||||
@ -176,6 +177,7 @@ MenuMembersStats=Statistics
|
||||
LastMemberDate=Latest member date
|
||||
LatestSubscriptionDate=Latest subscription date
|
||||
MemberNature=Nature of member
|
||||
MembersNature=Nature of members
|
||||
Public=Information are public
|
||||
NewMemberbyWeb=New member added. Awaiting approval
|
||||
NewMemberForm=New member form
|
||||
|
||||
@ -108,20 +108,20 @@ FillWithLastServiceDates=Fill with last service line dates
|
||||
MultiPricesAbility=Multiple price segments per product/service (each customer is in one price segment)
|
||||
MultiPricesNumPrices=Number of prices
|
||||
DefaultPriceType=Base of prices per default (with versus without tax) when adding new sale prices
|
||||
AssociatedProductsAbility=Activate virtual products (kits)
|
||||
AssociatedProducts=Virtual products
|
||||
AssociatedProductsNumber=Number of products composing this virtual product
|
||||
AssociatedProductsAbility=Activate kits (virtual products)
|
||||
AssociatedProducts=Kits
|
||||
AssociatedProductsNumber=Number of products composing this kit
|
||||
ParentProductsNumber=Number of parent packaging product
|
||||
ParentProducts=Parent products
|
||||
IfZeroItIsNotAVirtualProduct=If 0, this product is not a virtual product
|
||||
IfZeroItIsNotUsedByVirtualProduct=If 0, this product is not used by any virtual product
|
||||
IfZeroItIsNotAVirtualProduct=If 0, this product is not a kit
|
||||
IfZeroItIsNotUsedByVirtualProduct=If 0, this product is not used by any kit
|
||||
KeywordFilter=Keyword filter
|
||||
CategoryFilter=Category filter
|
||||
ProductToAddSearch=Search product to add
|
||||
NoMatchFound=No match found
|
||||
ListOfProductsServices=List of products/services
|
||||
ProductAssociationList=List of products/services that are component(s) of this virtual product/kit
|
||||
ProductParentList=List of virtual products/services with this product as a component
|
||||
ProductAssociationList=List of products/services that are component(s) of this kit
|
||||
ProductParentList=List of kits with this product as a component
|
||||
ErrorAssociationIsFatherOfThis=One of selected product is parent with current product
|
||||
DeleteProduct=Delete a product/service
|
||||
ConfirmDeleteProduct=Are you sure you want to delete this product/service?
|
||||
@ -287,6 +287,7 @@ PriceExpressionEditorHelp5=Available global values:
|
||||
PriceMode=Price mode
|
||||
PriceNumeric=Number
|
||||
DefaultPrice=Default price
|
||||
DefaultPriceLog=Log of previous default prices
|
||||
ComposedProductIncDecStock=Increase/Decrease stock on parent change
|
||||
ComposedProduct=Child products
|
||||
MinSupplierPrice=Minimum buying price
|
||||
@ -339,6 +340,7 @@ UseProductFournDesc=Add a feature to define the descriptions of products defined
|
||||
ProductSupplierDescription=Vendor description for the product
|
||||
UseProductSupplierPackaging=Use packaging on supplier prices (recalculate quantities according to packaging set on supplier price when adding/updating line in supplier documents)
|
||||
PackagingForThisProduct=Packaging
|
||||
PackagingForThisProductDesc=On supplier order, you will automaticly order this quantity (or a multiple of this quantity). Cannot be less than minimum buying quantity
|
||||
QtyRecalculatedWithPackaging=The quantity of the line were recalculated according to supplier packaging
|
||||
|
||||
#Attributes
|
||||
|
||||
@ -45,26 +45,31 @@ DateExpected=Expected date
|
||||
FutureManager=Future manager
|
||||
ResponsibleOfRecruitement=Responsible of recruitment
|
||||
IfJobIsLocatedAtAPartner=If job is located at a partner place
|
||||
PositionToBeFilled=Job offer to be filled
|
||||
PositionsToBeFilled=Job offers to be filled
|
||||
ListOfPositionsToBeFilled=List of job offers to be filled
|
||||
NewPositionToBeFilled=New job offers to be filled
|
||||
PositionToBeFilled=Job position
|
||||
PositionsToBeFilled=Job positions
|
||||
ListOfPositionsToBeFilled=List of job positions
|
||||
NewPositionToBeFilled=New job positions
|
||||
|
||||
JobOfferToBeFilled=Job offer to be filled
|
||||
JobOfferToBeFilled=Job position to be filled
|
||||
ThisIsInformationOnJobPosition=Information of the job position to be filled
|
||||
ContactForRecruitment=Contact for recruitment
|
||||
EmailRecruiter=Email recruiter
|
||||
ToUseAGenericEmail=To use a generic email. If not defined, the email of the responsible of recruitment will be used
|
||||
NewCandidature=New candidature
|
||||
ListOfCandidatures=List of candidatures
|
||||
NewCandidature=New application
|
||||
ListOfCandidatures=List of applications
|
||||
RequestedRemuneration=Requested remuneration
|
||||
ProposedRemuneration=Proposed remuneration
|
||||
ContractProposed=Contract proposed
|
||||
ContractSigned=Contract signed
|
||||
RecruitmentCandidature=Candidature
|
||||
ContractRefused=Contract refused
|
||||
RecruitmentCandidature=Application
|
||||
JobPositions=Job positions
|
||||
RecruitmentCandidatures=Candidatures
|
||||
RecruitmentCandidatures=Applications
|
||||
InterviewToDo=Interview to do
|
||||
AnswerCandidature=Candidature answer
|
||||
YourCandidature=Your candidature
|
||||
YourCandidatureAnswerMessage=Thanks you for your candidature.<br>...
|
||||
AnswerCandidature=Application answer
|
||||
YourCandidature=Your application
|
||||
YourCandidatureAnswerMessage=Thanks you for your application.<br>...
|
||||
JobClosedTextCandidateFound=The job position is closed. The position has been filled.
|
||||
JobClosedTextCanceled=The job position is closed.
|
||||
ExtrafieldsJobPosition=Complementary attributes (job positions)
|
||||
ExtrafieldsCandidatures=Complementary attributes (job applications)
|
||||
|
||||
@ -34,7 +34,7 @@ StockMovementForId=Movement ID %d
|
||||
ListMouvementStockProject=List of stock movements associated to project
|
||||
StocksArea=Warehouses area
|
||||
AllWarehouses=All warehouses
|
||||
IncludeEmptyDesiredStock=Include also undefined desired stock
|
||||
IncludeEmptyDesiredStock=Include also negative stock with undefined desired stock
|
||||
IncludeAlsoDraftOrders=Include also draft orders
|
||||
Location=Location
|
||||
LocationSummary=Short name location
|
||||
@ -122,8 +122,9 @@ DesiredStockDesc=This stock amount will be the value used to fill the stock by r
|
||||
StockToBuy=To order
|
||||
Replenishment=Replenishment
|
||||
ReplenishmentOrders=Replenishment orders
|
||||
VirtualDiffersFromPhysical=According to increase/decrease stock options, physical stock and virtual stock (physical + current orders) may differ
|
||||
UseVirtualStockByDefault=Use virtual stock by default, instead of physical stock, for replenishment feature
|
||||
VirtualDiffersFromPhysical=According to increase/decrease stock options, physical stock and virtual stock (physical stock + open orders) may differ
|
||||
UseRealStockByDefault=Use real stock, instead of virtual stock, for replenishment feature
|
||||
ReplenishmentCalculation=Amount to order will be (desired quantity - real stock) instead of (desired quantity - virtual stock)
|
||||
UseVirtualStock=Use virtual stock
|
||||
UsePhysicalStock=Use physical stock
|
||||
CurentSelectionMode=Current selection mode
|
||||
@ -198,8 +199,6 @@ inventoryWarningProductAlreadyExists=This product is already into list
|
||||
SelectCategory=Category filter
|
||||
SelectFournisseur=Vendor filter
|
||||
inventoryOnDate=Inventory
|
||||
INVENTORY_DISABLE_VIRTUAL=Virtual product (kit): do not decrement stock of a child product
|
||||
INVENTORY_USE_MIN_PA_IF_NO_LAST_PA=Use the buy price if no last buy price can be found
|
||||
INVENTORY_USE_INVENTORY_DATE_FOR_DATE_OF_MVT=Stock movements will have the date of inventory (instead of the date of inventory validation)
|
||||
inventoryChangePMPPermission=Allow to change PMP value for a product
|
||||
ColumnNewPMP=New unit PMP
|
||||
@ -238,5 +237,6 @@ StockAtDatePastDesc=You can view here the stock (real stock) at a given date in
|
||||
StockAtDateFutureDesc=You can view here the stock (virtual stock) at a given date in future
|
||||
CurrentStock=Current stock
|
||||
InventoryRealQtyHelp=Set value to 0 to reset qty<br>Keep field empty, or remove line, to keep unchanged
|
||||
UpdateByScaning=Update by scaning
|
||||
UpdateByScaningProductBarcode=Update by scan (product barcode)
|
||||
UpdateByScaningLot=Update by scan (lot|Serial barcode)
|
||||
UpdateByScaningLot=Update by scan (lot|serial barcode)
|
||||
|
||||
@ -38,6 +38,7 @@ MenuOrdersSupplierToBill=Purchase orders to invoice
|
||||
NbDaysToDelivery=Delivery delay (days)
|
||||
DescNbDaysToDelivery=The longest delivery delay of the products from this order
|
||||
SupplierReputation=Vendor reputation
|
||||
ReferenceReputation=Reference reputation
|
||||
DoNotOrderThisProductToThisSupplier=Do not order
|
||||
NotTheGoodQualitySupplier=Low quality
|
||||
ReputationForThisProduct=Reputation
|
||||
|
||||
@ -42,5 +42,4 @@ NotTheGoodQualitySupplier=جودة منخفضة
|
||||
ReputationForThisProduct=سمعة
|
||||
BuyerName=اسم المشتري
|
||||
AllProductServicePrices=أسعار جميع المنتجات / الخدمات
|
||||
AllProductReferencesOfSupplier=جميع مراجع المنتج / الخدمة للمورد
|
||||
BuyingPriceNumShort=أسعار المورد
|
||||
|
||||
@ -37,6 +37,8 @@ UnlockNewSessions=إزالة قفل الإتصال
|
||||
YourSession=الجلسة الخاصة بك
|
||||
Sessions=Users Sessions
|
||||
WebUserGroup=خادم الويب المستخدم / المجموعة
|
||||
PermissionsOnFilesInWebRoot=Permissions on files in web root directory
|
||||
PermissionsOnFile=Permissions on file %s
|
||||
NoSessionFound=Your PHP configuration seems to not allow listing of active sessions. The directory used to save sessions (<b>%s</b>) may be protected (for example by OS permissions or by PHP directive open_basedir).
|
||||
DBStoringCharset=الترميز الخاص بقاعدة البيانات لتخزين المعلومات
|
||||
DBSortingCharset=الترميز الخاص بقاعدة البيانات لتخزين المعلومات
|
||||
@ -71,7 +73,7 @@ DisableJavascriptNote=Note: For test or debug purpose. For optimization for blin
|
||||
UseSearchToSelectCompanyTooltip=أيضا إذا كان لديك عدد كبير من الأحزاب الثالثة (> 100 000)، يمكنك زيادة السرعة عن طريق وضع COMPANY_DONOTSEARCH_ANYWHERE ثابت إلى 1 في الإعداد، <أخرى. وبعد ذلك البحث أن يقتصر على بداية السلسلة.
|
||||
UseSearchToSelectContactTooltip=أيضا إذا كان لديك عدد كبير من الأحزاب الثالثة (> 100 000)، يمكنك زيادة السرعة عن طريق وضع CONTACT_DONOTSEARCH_ANYWHERE ثابت إلى 1 في الإعداد، <أخرى. وبعد ذلك البحث أن يقتصر على بداية السلسلة.
|
||||
DelaiedFullListToSelectCompany=Wait until a key is pressed before loading content of Third Parties combo list.<br>This may increase performance if you have a large number of third parties, but it is less convenient.
|
||||
DelaiedFullListToSelectContact=Wait until a key is pressed before loading content of Contact combo list.<br>This may increase performance if you have a large number of contacts, but it is less convenient)
|
||||
DelaiedFullListToSelectContact=Wait until a key is pressed before loading content of Contact combo list.<br>This may increase performance if you have a large number of contacts, but it is less convenient.
|
||||
NumberOfKeyToSearch=Number of characters to trigger search: %s
|
||||
NumberOfBytes=Number of Bytes
|
||||
SearchString=Search string
|
||||
@ -80,6 +82,7 @@ AllowToSelectProjectFromOtherCompany=On document of a third party, can choose a
|
||||
JavascriptDisabled=الجافا سكربت معطل
|
||||
UsePreviewTabs=إستخدم زر المعاينة
|
||||
ShowPreview=آظهر المعاينة
|
||||
ShowHideDetails=Show-Hide details
|
||||
PreviewNotAvailable=المعاينة غير متاحة
|
||||
ThemeCurrentlyActive=الثيم النشط حالياً
|
||||
CurrentTimeZone=حسب توقيت خادم البي إتش بي
|
||||
@ -271,7 +274,7 @@ NoticePeriod=فترة إشعار
|
||||
NewByMonth=New by month
|
||||
Emails=Emails
|
||||
EMailsSetup=Emails setup
|
||||
EMailsDesc=This page allows you to override your default PHP parameters for email sending. In most cases on Unix/Linux OS, the PHP setup is correct and these parameters are unnecessary.
|
||||
EMailsDesc=This page allows you to set parameters or options for email sending.
|
||||
EmailSenderProfiles=Emails sender profiles
|
||||
EMailsSenderProfileDesc=You can keep this section empty. If you enter some emails here, they will be added to the list of possible senders into the combobox when your write a new email.
|
||||
MAIN_MAIL_SMTP_PORT=SMTP/SMTPS Port (default value in php.ini: <b>%s</b>)
|
||||
@ -289,6 +292,7 @@ MAIN_MAIL_SMTPS_ID=SMTP ID (if sending server requires authentication)
|
||||
MAIN_MAIL_SMTPS_PW=SMTP Password (if sending server requires authentication)
|
||||
MAIN_MAIL_EMAIL_TLS=Use TLS (SSL) encryption
|
||||
MAIN_MAIL_EMAIL_STARTTLS=Use TLS (STARTTLS) encryption
|
||||
MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED=Authorise les certificats auto-signés
|
||||
MAIN_MAIL_EMAIL_DKIM_ENABLED=Use DKIM to generate email signature
|
||||
MAIN_MAIL_EMAIL_DKIM_DOMAIN=Email Domain for use with dkim
|
||||
MAIN_MAIL_EMAIL_DKIM_SELECTOR=Name of dkim selector
|
||||
@ -438,9 +442,9 @@ ExtrafieldParamHelpPassword=Leaving this field blank means this value will be st
|
||||
ExtrafieldParamHelpselect=List of values must be lines with format key,value (where key can't be '0')<br><br> for example: <br>1,value1<br>2,value2<br>code3,value3<br>...<br><br>In order to have the list depending on another complementary attribute list:<br>1,value1|options_<i>parent_list_code</i>:parent_key<br>2,value2|options_<i>parent_list_code</i>:parent_key <br><br>In order to have the list depending on another list:<br>1,value1|<i>parent_list_code</i>:parent_key<br>2,value2|<i>parent_list_code</i>:parent_key
|
||||
ExtrafieldParamHelpcheckbox=List of values must be lines with format key,value (where key can't be '0')<br><br> for example: <br>1,value1<br>2,value2<br>3,value3<br>...
|
||||
ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')<br><br> for example: <br>1,value1<br>2,value2<br>3,value3<br>...
|
||||
ExtrafieldParamHelpsellist=List of values comes from a table<br>Syntax: table_name:label_field:id_field::filter<br>Example: c_typent:libelle:id::filter<br><br>- idfilter is necessarly a primary int key<br>- filter can be a simple test (eg active=1) to display only active value<br>You can also use $ID$ in filter witch is the current id of current object<br>To do a SELECT in filter use $SEL$<br>if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another complementary attribute list:<br>c_typent:libelle:id:options_<i>parent_list_code</i>|parent_column:filter <br><br>In order to have the list depending on another list:<br>c_typent:libelle:id:<i>parent_list_code</i>|parent_column:filter
|
||||
ExtrafieldParamHelpsellist=List of values comes from a table<br>Syntax: table_name:label_field:id_field::filter<br>Example: c_typent:libelle:id::filter<br><br>- id_field is necessarly a primary int key<br>- filter can be a simple test (eg active=1) to display only active value<br>You can also use $ID$ in filter which is the current id of current object<br>To use a SELECT into the filter use the keyword $SEL$ to bypass anti-injection protection.<br>if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another complementary attribute list:<br>c_typent:libelle:id:options_<i>parent_list_code</i>|parent_column:filter <br><br>In order to have the list depending on another list:<br>c_typent:libelle:id:<i>parent_list_code</i>|parent_column:filter
|
||||
ExtrafieldParamHelpchkbxlst=List of values comes from a table<br>Syntax: table_name:label_field:id_field::filter<br>Example: c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value<br>You can also use $ID$ in filter witch is the current id of current object<br>To do a SELECT in filter use $SEL$<br>if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another complementary attribute list:<br>c_typent:libelle:id:options_<i>parent_list_code</i>|parent_column:filter <br><br>In order to have the list depending on another list:<br>c_typent:libelle:id:<i>parent_list_code</i>|parent_column:filter
|
||||
ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath<br>Syntax: ObjectName:Classpath<br>Examples:<br>Societe:societe/class/societe.class.php<br>Contact:contact/class/contact.class.php
|
||||
ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath<br>Syntax: ObjectName:Classpath
|
||||
ExtrafieldParamHelpSeparator=Keep empty for a simple separator<br>Set this to 1 for a collapsing separator (open by default for new session, then status is kept for each user session)<br>Set this to 2 for a collapsing separator (collapsed by default for new session, then status is kept fore each user session)
|
||||
LibraryToBuildPDF=Library used for PDF generation
|
||||
LocalTaxDesc=Some countries may apply two or three taxes on each invoice line. If this is the case, choose the type for the second and third tax and its rate. Possible type are:<br>1: local tax apply on products and services without vat (localtax is calculated on amount without tax)<br>2: local tax apply on products and services including vat (localtax is calculated on amount + main tax)<br>3: local tax apply on products without vat (localtax is calculated on amount without tax)<br>4: local tax apply on products including vat (localtax is calculated on amount + main vat)<br>5: local tax apply on services without vat (localtax is calculated on amount without tax)<br>6: local tax apply on services including vat (localtax is calculated on amount + tax)
|
||||
@ -478,9 +482,13 @@ ModuleCompanyCodeCustomerDigitaria=%s followed by the truncated customer name by
|
||||
ModuleCompanyCodeSupplierDigitaria=%s followed by the truncated supplier name by the number of characters: %s for the supplier accounting code.
|
||||
Use3StepsApproval=By default, Purchase Orders need to be created and approved by 2 different users (one step/user to create and one step/user to approve. Note that if user has both permission to create and approve, one step/user will be enough). You can ask with this option to introduce a third step/user approval, if amount is higher than a dedicated value (so 3 steps will be necessary: 1=validation, 2=first approval and 3=second approval if amount is enough).<br>Set this to empty if one approval (2 steps) is enough, set it to a very low value (0.1) if a second approval (3 steps) is always required.
|
||||
UseDoubleApproval=Use a 3 steps approval when amount (without tax) is higher than...
|
||||
WarningPHPMail=WARNING: It is often better to setup outgoing emails to use the email server of your provider instead of the default setup. Some email providers (like Yahoo) do not allow you to send an email from another server than their own server. Your current setup uses the server of the application to send email and not the server of your email provider, so some recipients (the one compatible with the restrictive DMARC protocol), will ask your email provider if they can accept your email and some email providers (like Yahoo) may respond "no" because the server is not theirs, so few of your sent Emails may not be accepted (be careful also of your email provider's sending quota).<br>If your Email provider (like Yahoo) has this restriction, you must change Email setup to choose the other method "SMTP server" and enter the SMTP server and credentials provided by your Email provider.
|
||||
WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. It is often better to setup outgoing emails to use the email server of your Email Service Provider instead of the default setup for several reasons:
|
||||
WarningPHPMailA=- Using the server of the Email Service Provider increases the trustability of your email, so it increases the deliverablity without being flagged as SPAM
|
||||
WarningPHPMailB=- Some Email Service Providers (like Yahoo) do not allow you to send an email from another server than their own server. Your current setup uses the server of the application to send email and not the server of your email provider, so some recipients (the one compatible with the restrictive DMARC protocol), will ask your email provider if they can accept your email and some email providers (like Yahoo) may respond "no" because the server is not theirs, so few of your sent Emails may not be accepted for delivery (be careful also of your email provider's sending quota).
|
||||
WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to send emails is also interesting so all emails sent from application will also be saved into your "Sent" directory of your mailbox.
|
||||
WarningPHPMailD=If the method 'PHP Mail' is really the method you would like to use, you can remove this warning by adding the constant MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP to 1 in Home - Setup - Other.
|
||||
WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: <strong>%s</strong>.
|
||||
WarningPHPMailSPF=If the domain name in your sender email address is protected by SPF (ask you email provider), you must include the following IPs in the SPF record of the DNS of your domain: <strong>%s</strong>.
|
||||
WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask you domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: <strong>%s</strong>.
|
||||
ClickToShowDescription=Click to show description
|
||||
DependsOn=This module needs the module(s)
|
||||
RequiredBy=This module is required by module(s)
|
||||
@ -551,8 +559,6 @@ Module57Name=Payments by Direct Debit
|
||||
Module57Desc=Management of Direct Debit orders. It includes generation of SEPA file for European countries.
|
||||
Module58Name=انقر للاتصال
|
||||
Module58Desc=ClickToDial التكامل
|
||||
Module59Name=Bookmark4u
|
||||
Module59Desc=إضافة مهمة لتوليد Bookmark4u الحساب من حساب Dolibarr
|
||||
Module60Name=Stickers
|
||||
Module60Desc=Management of stickers
|
||||
Module70Name=المداخلات
|
||||
@ -656,7 +662,7 @@ Module50200Desc=Offer customers a PayPal online payment page (PayPal account or
|
||||
Module50300Name=Stripe
|
||||
Module50300Desc=Offer customers a Stripe online payment page (credit/debit cards). This can be used to allow your customers to make ad-hoc payments or payments related to a specific Dolibarr object (invoice, order etc...)
|
||||
Module50400Name=Accounting (double entry)
|
||||
Module50400Desc=Accounting management (double entries, support general and auxiliary ledgers). Export the ledger in several other accounting software formats.
|
||||
Module50400Desc=Accounting management (double entries, support General and Subsidiary Ledgers). Export the ledger in several other accounting software formats.
|
||||
Module54000Name=PrintIPP
|
||||
Module54000Desc=Direct print (without opening the documents) using Cups IPP interface (Printer must be visible from server, and CUPS must be installed on server).
|
||||
Module55000Name=استطلاع للرأي، أو مسح التصويت
|
||||
@ -671,7 +677,7 @@ Module63000Name=مصادر
|
||||
Module63000Desc=Manage resources (printers, cars, rooms, ...) for allocating to events
|
||||
Permission11=قراءة الفواتير
|
||||
Permission12=إنشاء / تعديل فواتير العملاء
|
||||
Permission13=تعديل الفواتير
|
||||
Permission13=Invalidate customer invoices
|
||||
Permission14=التحقق من صحة الفواتير
|
||||
Permission15=ارسال الفواتير عن طريق البريد الإلكتروني
|
||||
Permission16=إنشاء مدفوعات الفواتير العملاء
|
||||
@ -688,6 +694,7 @@ Permission32=إنشاء / تعديل المنتجات
|
||||
Permission34=حذف المنتجات
|
||||
Permission36=انظر / إدارة المنتجات المخفية
|
||||
Permission38=منتجات التصدير
|
||||
Permission39=Ignore minimum price
|
||||
Permission41=Read projects and tasks (shared project and projects I'm contact for). Can also enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet)
|
||||
Permission42=Create/modify projects (shared project and projects I'm contact for). Can also create tasks and assign users to project and tasks
|
||||
Permission44=Delete projects (shared project and projects I'm contact for)
|
||||
@ -696,6 +703,9 @@ Permission61=قراءة التدخلات
|
||||
Permission62=إنشاء / تعديل التدخلات
|
||||
Permission64=حذف التدخلات
|
||||
Permission67=تصدير التدخلات
|
||||
Permission68=Send interventions by email
|
||||
Permission69=Validate interventions
|
||||
Permission70=Invalidate interventions
|
||||
Permission71=قراءة الأعضاء
|
||||
Permission72=إنشاء / تعديل أعضاء
|
||||
Permission74=حذف أعضاء
|
||||
@ -718,6 +728,7 @@ Permission95=قراءة تقارير
|
||||
Permission101=قراءة الإرسال
|
||||
Permission102=إنشاء / تعديل الإرسال
|
||||
Permission104=صحة الإرسال
|
||||
Permission105=Send sendings by email
|
||||
Permission106=sendings التصدير
|
||||
Permission109=حذف الإرسال
|
||||
Permission111=قراءة الحسابات المالية
|
||||
@ -825,10 +836,11 @@ Permission402=إنشاء / تعديل الخصومات
|
||||
Permission403=تحقق من الخصومات
|
||||
Permission404=حذف خصومات
|
||||
Permission430=Use Debug Bar
|
||||
Permission511=Read payments of salaries
|
||||
Permission511=Read payments of salaries (yours and subordinates)
|
||||
Permission512=Create/modify payments of salaries
|
||||
Permission514=Delete payments of salaries
|
||||
Permission517=رواتب التصدير
|
||||
Permission517=Read payments of salaries of everybody
|
||||
Permission519=رواتب التصدير
|
||||
Permission520=قراءة القروض
|
||||
Permission522=إنشاء / تعديل القروض
|
||||
Permission524=حذف القروض
|
||||
@ -843,6 +855,9 @@ Permission561=Read payment orders by credit transfer
|
||||
Permission562=Create/modify payment order by credit transfer
|
||||
Permission563=Send/Transmit payment order by credit transfer
|
||||
Permission564=Record Debits/Rejections of credit transfer
|
||||
Permission601=Read stickers
|
||||
Permission602=Create/modify stickers
|
||||
Permission609=Delete stickers
|
||||
Permission650=Read Bills of Materials
|
||||
Permission651=Create/Update Bills of Materials
|
||||
Permission652=Delete Bills of Materials
|
||||
@ -884,7 +899,9 @@ Permission1185=Approve purchase orders
|
||||
Permission1186=Order purchase orders
|
||||
Permission1187=Acknowledge receipt of purchase orders
|
||||
Permission1188=Delete purchase orders
|
||||
Permission1189=Check/Uncheck a purchase order reception
|
||||
Permission1190=Approve (second approval) purchase orders
|
||||
Permission1191=Export supplier orders and their attributes
|
||||
Permission1201=ونتيجة للحصول على التصدير
|
||||
Permission1202=إنشاء / تعديل للتصدير
|
||||
Permission1231=Read vendor invoices
|
||||
@ -898,6 +915,8 @@ Permission1251=ادارة الدمار الواردات الخارجية الب
|
||||
Permission1321=تصدير العملاء والفواتير والمدفوعات والصفات
|
||||
Permission1322=Reopen a paid bill
|
||||
Permission1421=Export sales orders and attributes
|
||||
Permission1521=Read documents
|
||||
Permission1522=Delete documents
|
||||
Permission2401=Read actions (events or tasks) linked to his user account (if owner of event or just assigned to)
|
||||
Permission2402=Create/modify actions (events or tasks) linked to his user account (if owner of event)
|
||||
Permission2403=Delete actions (events or tasks) linked to his user account (if owner of event)
|
||||
@ -932,9 +951,13 @@ Permission23001=قراءة مهمة مجدولة
|
||||
Permission23002=إنشاء / تحديث المجدولة وظيفة
|
||||
Permission23003=حذف مهمة مجدولة
|
||||
Permission23004=تنفيذ مهمة مجدولة
|
||||
Permission50101=Use Point of Sale
|
||||
Permission50101=Use Point of Sale (SimplePOS)
|
||||
Permission50151=Use Point of Sale (TakePOS)
|
||||
Permission50201=قراءة المعاملات
|
||||
Permission50202=استيراد المعاملات
|
||||
Permission50330=Read objects of Zapier
|
||||
Permission50331=Create/Update objects of Zapier
|
||||
Permission50332=Delete objects of Zapier
|
||||
Permission50401=Bind products and invoices with accounting accounts
|
||||
Permission50411=Read operations in ledger
|
||||
Permission50412=Write/Edit operations in ledger
|
||||
@ -958,6 +981,17 @@ Permission63001=Read resources
|
||||
Permission63002=Create/modify resources
|
||||
Permission63003=Delete resources
|
||||
Permission63004=Link resources to agenda events
|
||||
Permission64001=Allow direct printing
|
||||
Permission67000=Allow printing of receipts
|
||||
Permission68001=Read intracomm report
|
||||
Permission68002=Create/modify intracomm report
|
||||
Permission68004=Delete intracomm report
|
||||
Permission941601=Read receipts
|
||||
Permission941602=Create and modify receipts
|
||||
Permission941603=Validate receipts
|
||||
Permission941604=Send receipts by email
|
||||
Permission941605=Export receipts
|
||||
Permission941606=Delete receipts
|
||||
DictionaryCompanyType=Third-party types
|
||||
DictionaryCompanyJuridicalType=Third-party legal entities
|
||||
DictionaryProspectLevel=Prospect potential level for companies
|
||||
@ -997,6 +1031,8 @@ DictionaryHolidayTypes=Types of leave
|
||||
DictionaryOpportunityStatus=Lead status for project/lead
|
||||
DictionaryExpenseTaxCat=Expense report - Transportation categories
|
||||
DictionaryExpenseTaxRange=Expense report - Range by transportation category
|
||||
DictionaryTransportMode=Intracomm report - Transport mode
|
||||
TypeOfUnit=Type of unit
|
||||
SetupSaved=الإعداد المحفوظة
|
||||
SetupNotSaved=Setup not saved
|
||||
BackToModuleList=Back to Module list
|
||||
@ -1047,6 +1083,7 @@ LabelUsedByDefault=العلامة التي يستخدمها التقصير إذ
|
||||
LabelOnDocuments=علامة على وثائق
|
||||
LabelOrTranslationKey=Label or translation key
|
||||
ValueOfConstantKey=Value of a configuration constant
|
||||
ConstantIsOn=Option %s is on
|
||||
NbOfDays=No. of days
|
||||
AtEndOfMonth=في نهاية الشهر
|
||||
CurrentNext=Current/Next
|
||||
@ -1145,6 +1182,7 @@ InfoWebServer=About Web Server
|
||||
InfoDatabase=About Database
|
||||
InfoPHP=About PHP
|
||||
InfoPerf=About Performances
|
||||
InfoSecurity=About Security
|
||||
BrowserName=اسم المتصفح
|
||||
BrowserOS=متصفح OS
|
||||
ListOfSecurityEvents=قائمة الأحداث الأمنية Dolibarr
|
||||
@ -1194,7 +1232,8 @@ RestoreDesc=To restore a Dolibarr backup, two steps are required.
|
||||
RestoreDesc2=Restore the backup file (zip file for example) of the "documents" directory to a new Dolibarr installation or into this current documents directory (<b>%s</b>).
|
||||
RestoreDesc3=Restore the database structure and data from a backup dump file into the database of the new Dolibarr installation or into the database of this current installation (<b>%s</b>). Warning, once the restore is complete, you must use a login/password, that existed from the backup time/installation to connect again.<br>To restore a backup database into this current installation, you can follow this assistant.
|
||||
RestoreMySQL=استيراد MySQL
|
||||
ForcedToByAModule= هذه القاعدة <b>%s</b> الى جانب تفعيل وحدة
|
||||
ForcedToByAModule=هذه القاعدة <b>%s</b> الى جانب تفعيل وحدة
|
||||
ValueIsForcedBySystem=This value is forced by the system. You can't change it.
|
||||
PreviousDumpFiles=Existing backup files
|
||||
PreviousArchiveFiles=Existing archive files
|
||||
WeekStartOnDay=First day of the week
|
||||
@ -1282,7 +1321,7 @@ GetBarCode=الحصول على الباركود
|
||||
NumberingModules=Numbering models
|
||||
DocumentModules=Document models
|
||||
##### Module password generation
|
||||
PasswordGenerationStandard=عودة كلمة سر ولدت الداخلية وفقا لخوارزمية Dolibarr : 8 أحرف مشتركة تتضمن الأرقام والحروف في حرف صغير.
|
||||
PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters in lowercase.
|
||||
PasswordGenerationNone=Do not suggest a generated password. Password must be typed in manually.
|
||||
PasswordGenerationPerso=ترجع كلمة المرور الخاصة بك وفقا لتكوين المعرفة شخصيا.
|
||||
SetupPerso=وفقا لتكوين الخاصة بك
|
||||
@ -1523,7 +1562,9 @@ LDAPDescValues=مثال قيم تهدف <b>لOpenLDAP</b> مع مخططات بع
|
||||
ForANonAnonymousAccess=لصحتها accès (لكتابة الحصول على سبيل المثال)
|
||||
PerfDolibarr=الإعداد أداء / تحسين تقرير
|
||||
YouMayFindPerfAdviceHere=This page provides some checks or advice related to performance.
|
||||
NotInstalled=Not installed, so your server is not slowed down by this.
|
||||
NotInstalled=Not installed.
|
||||
NotSlowedDownByThis=Not slowed down by this.
|
||||
NotRiskOfLeakWithThis=Not risk of leak with this.
|
||||
ApplicativeCache=مخبأ تطبيقي
|
||||
MemcachedNotAvailable=لم يتم العثور على مخبأ تطبيقي. يمكنك تحسين الأداء عن طريق تثبيت أعطها مخبأ خادم وحدة قادرة على استخدام هذا الخادم ذاكرة التخزين المؤقت. <br> مزيد من المعلومات هنا <a href="http://wiki.dolibarr.org/index.php/Module_MemCached_EN">http://wiki.dolibarr.org/index.php/Module_MemCached_EN.</a> <br> لاحظ أن الكثير من مزود استضافة المواقع لا توفر مثل هذا الخادم ذاكرة التخزين المؤقت.
|
||||
MemcachedModuleAvailableButNotSetup=وحدة أعطها لمخبأ تطبيقي وجدت ولكن الإعداد من وحدة ليست كاملة.
|
||||
@ -1571,9 +1612,9 @@ SyslogLevel=المستوى
|
||||
SyslogFilename=اسم الملف ومسار
|
||||
YouCanUseDOL_DATA_ROOT=يمكنك استخدام DOL_DATA_ROOT / dolibarr.log لملف الدخول في Dolibarr "وثائق" دليل. يمكنك أن تحدد مسارا مختلفا لتخزين هذا الملف.
|
||||
ErrorUnknownSyslogConstant=ثابت %s ليس ثابت سيسلوغ معروفة
|
||||
OnlyWindowsLOG_USER=نوافذ يعتمد فقط LOG_USER
|
||||
OnlyWindowsLOG_USER=On Windows, only the LOG_USER facility will be supported
|
||||
CompressSyslogs=Compression and backup of debug log files (generated by module Log for debug)
|
||||
SyslogFileNumberOfSaves=Log backups
|
||||
SyslogFileNumberOfSaves=Number of backup logs to keep
|
||||
ConfigureCleaningCronjobToSetFrequencyOfSaves=Configure cleaning scheduled job to set log backup frequency
|
||||
##### Donations #####
|
||||
DonationsSetup=وحدة الإعداد للتبرع
|
||||
@ -1639,11 +1680,11 @@ StockSetup=Stock module setup
|
||||
IfYouUsePointOfSaleCheckModule=If you use the Point of Sale module (POS) provided by default or an external module, this setup may be ignored by your POS module. Most POS modules are designed by default to create an invoice immediately and decrease stock irrespective of the options here. So if you need or not to have a stock decrease when registering a sale from your POS, check also your POS module setup.
|
||||
##### Menu #####
|
||||
MenuDeleted=حذف من القائمة
|
||||
Menu=Menu
|
||||
Menus=القوائم
|
||||
TreeMenuPersonalized=شخصي قوائم
|
||||
NotTopTreeMenuPersonalized=Personalized menus not linked to a top menu entry
|
||||
NewMenu=قائمة جديدة
|
||||
Menu=اختيار قائمة
|
||||
MenuHandler=قائمة مناول
|
||||
MenuModule=مصدر في وحدة
|
||||
HideUnauthorizedMenu= إخفاء القوائم غير المصرح به (الرمادي)
|
||||
@ -1794,7 +1835,6 @@ TypePaymentDesc=0:Customer payment type, 1:Vendor payment type, 2:Both customers
|
||||
IncludePath=يشمل المسار (المحدد في متغير%s)
|
||||
ExpenseReportsSetup=إعداد تقارير المصروفات وحدة
|
||||
TemplatePDFExpenseReports=قوالب المستند لتوليد حساب ثيقة تقرير
|
||||
ExpenseReportsIkSetup=Setup of module Expense Reports - Milles index
|
||||
ExpenseReportsRulesSetup=Setup of module Expense Reports - Rules
|
||||
ExpenseReportNumberingModules=Expense reports numbering module
|
||||
NoModueToManageStockIncrease=تم تفعيل أي وحدة قادرة على إدارة زيادة المخزون التلقائي. وسوف يتم زيادة الأسهم على الإدخال اليدوي فقط.
|
||||
@ -1864,7 +1904,7 @@ MailToSendReception=Receptions
|
||||
MailToThirdparty=أطراف ثالثة
|
||||
MailToMember=أعضاء
|
||||
MailToUser=المستخدمين
|
||||
MailToProject=Projects page
|
||||
MailToProject=مشاريع
|
||||
MailToTicket=Tickets
|
||||
ByDefaultInList=تظهر بشكل افتراضي على عرض القائمة
|
||||
YouUseLastStableVersion=You use the latest stable version
|
||||
@ -1960,6 +2000,8 @@ LoadThirdPartyFromName=Load third party searching on %s (load only)
|
||||
LoadThirdPartyFromNameOrCreate=Load third party searching on %s (create if not found)
|
||||
WithDolTrackingID=Message from a conversation initiated by a first email sent from Dolibarr
|
||||
WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr
|
||||
WithDolTrackingIDInMsgId=Message sent from Dolibarr
|
||||
WithoutDolTrackingIDInMsgId=Message NOT sent from Dolibarr
|
||||
CreateCandidature=Create candidature
|
||||
FormatZip=الرمز البريدي
|
||||
MainMenuCode=Menu entry code (mainmenu)
|
||||
@ -1974,7 +2016,7 @@ DisabledResourceLinkContact=Disable feature to link a resource to contacts
|
||||
EnableResourceUsedInEventCheck=Enable feature to check if a resource is in use in an event
|
||||
ConfirmUnactivation=Confirm module reset
|
||||
OnMobileOnly=On small screen (smartphone) only
|
||||
DisableProspectCustomerType=Disable the "Prospect + Customer" third party type (so third party must be Prospect or Customer but can't be both)
|
||||
DisableProspectCustomerType=Disable the "Prospect + Customer" third party type (so third party must be "Prospect" or "Customer", but can't be both)
|
||||
MAIN_OPTIMIZEFORTEXTBROWSER=Simplify interface for blind person
|
||||
MAIN_OPTIMIZEFORTEXTBROWSERDesc=Enable this option if you are a blind person, or if you use the application from a text browser like Lynx or Links.
|
||||
MAIN_OPTIMIZEFORCOLORBLIND=Change interface's color for color blind person
|
||||
@ -1996,13 +2038,15 @@ UseDebugBar=Use the debug bar
|
||||
DEBUGBAR_LOGS_LINES_NUMBER=Number of last log lines to keep in console
|
||||
WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramaticaly output
|
||||
ModuleActivated=Module %s is activated and slows the interface
|
||||
IfYouAreOnAProductionSetThis=If you are on a production environment, you should set this property to %s.
|
||||
AntivirusEnabledOnUpload=Antivirus enabled on uploaded files
|
||||
EXPORTS_SHARE_MODELS=Export models are share with everybody
|
||||
ExportSetup=Setup of module Export
|
||||
ImportSetup=Setup of module Import
|
||||
InstanceUniqueID=Unique ID of the instance
|
||||
SmallerThan=Smaller than
|
||||
LargerThan=Larger than
|
||||
IfTrackingIDFoundEventWillBeLinked=Note that If a tracking ID of an object is found into incoming email, or if the email is an answer of an email aready collected and linked to an object, the event will be automatically linked to the known related object too.
|
||||
IfTrackingIDFoundEventWillBeLinked=Note that If a tracking ID of an object is found into email, or if the email is an answer of an email aready collected and linked to an object, the created event will be automatically linked to the known related object.
|
||||
WithGMailYouCanCreateADedicatedPassword=With a GMail account, if you enabled the 2 steps validation, it is recommanded to create a dedicated second password for the application instead of using your own account passsword from https://myaccount.google.com/.
|
||||
EmailCollectorTargetDir=It may be a desired behaviour to move the email into another tag/directory when it was processed successfully. Just set name of directory here to use this feature (Do NOT use special characters in name). Note that you must also use a read/write login account.
|
||||
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
||||
@ -2029,4 +2073,10 @@ MeasuringScaleDesc=The scale is the number of places you have to move the decima
|
||||
TemplateAdded=Template added
|
||||
TemplateUpdated=Template updated
|
||||
TemplateDeleted=Template deleted
|
||||
MailToSendEventPush=Template for event reminder emails
|
||||
MailToSendEventPush=Event reminder email
|
||||
SwitchThisForABetterSecurity=Switching this value to %s is recommended for more security
|
||||
DictionaryProductNature= Nature of product
|
||||
CountryIfSpecificToOneCountry=Country (if specific to a given country)
|
||||
YouMayFindSecurityAdviceHere=You may find security advisory here
|
||||
ModuleActivatedMayExposeInformation=This module may expose sensitive data. If you don't need it, disable it.
|
||||
ModuleActivatedDoNotUseInProduction=A module designed for the development has been enabled. Do not enable it on a production environment.
|
||||
|
||||
@ -23,19 +23,7 @@ ECMSearchByKeywords=بحث الكلمات الرئيسية
|
||||
ECMSearchByEntity=بحث عن وجوه
|
||||
ECMSectionOfDocuments=أدلة وثائق
|
||||
ECMTypeAuto=التلقائي
|
||||
ECMDocsBySocialContributions=المستندات المرتبطة بالضرائب الاجتماعية أو المالية
|
||||
ECMDocsByThirdParties=وثائق مرتبطة أطراف ثالثة
|
||||
ECMDocsByProposals=وثائق مرتبطة مقترحات
|
||||
ECMDocsByOrders=وثائق مرتبطة أوامر العملاء
|
||||
ECMDocsByContracts=وثائق مرتبطة بعقود
|
||||
ECMDocsByInvoices=وثائق مرتبطة عملاء الفواتير
|
||||
ECMDocsByProducts=الوثائق المرتبطة بالمنتجات
|
||||
ECMDocsByProjects=المستندات المرتبطة بالمشاريع
|
||||
ECMDocsByUsers=وثائق مرتبطة المستخدمين
|
||||
ECMDocsByInterventions=وثائق مرتبطة بالتدخلات
|
||||
ECMDocsByExpenseReports=Documents linked to expense reports
|
||||
ECMDocsByHolidays=Documents linked to holidays
|
||||
ECMDocsBySupplierProposals=Documents linked to supplier proposals
|
||||
ECMDocsBy=Documents linked to %s
|
||||
ECMNoDirectoryYet=لا الدليل
|
||||
ShowECMSection=وتظهر الدليل
|
||||
DeleteSection=إزالة الدليل
|
||||
@ -50,3 +38,6 @@ ReSyncListOfDir=Resync list of directories
|
||||
HashOfFileContent=Hash of file content
|
||||
NoDirectoriesFound=No directories found
|
||||
FileNotYetIndexedInDatabase=File not yet indexed into database (try to re-upload it)
|
||||
ExtraFieldsEcmFiles=Extrafields Ecm Files
|
||||
ExtraFieldsEcmDirectories=Extrafields Ecm Directories
|
||||
ECMSetup=ECM Setup
|
||||
|
||||
@ -8,15 +8,9 @@ ConfFileIsNotWritable=Configuration file <b>%s</b> is not writable. Check permis
|
||||
ConfFileIsWritable=ملف الإعداد <b>%s</b> قابل للكتابة.
|
||||
ConfFileMustBeAFileNotADir=Configuration file <b>%s</b> must be a file, not a directory.
|
||||
ConfFileReload=Reloading parameters from configuration file.
|
||||
PHPSupportSessions=يدعم هذا الـ PHP ميزة الجلسات الزمنية.
|
||||
PHPSupportPOSTGETOk=يدعم هذا الـ PHP وظائف POST و GET.
|
||||
PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check the parameter <b>variables_order</b> in php.ini.
|
||||
PHPSupportGD=This PHP supports GD graphical functions.
|
||||
PHPSupportCurl=This PHP supports Curl.
|
||||
PHPSupportCalendar=This PHP supports calendars extensions.
|
||||
PHPSupportUTF8=This PHP supports UTF8 functions.
|
||||
PHPSupportIntl=This PHP supports Intl functions.
|
||||
PHPSupportxDebug=This PHP supports extended debug functions.
|
||||
PHPSupportSessions=يدعم هذا الـ PHP ميزة الجلسات الزمنية.
|
||||
PHPSupport=This PHP supports %s functions.
|
||||
PHPMemoryOK=تم إعداد الجلسة الزمنية للذاكرة في PHP الى <b>%s</b> . من المفترض ان تكون كافية.
|
||||
PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes.
|
||||
|
||||
40
htdocs/langs/ar_SA/intracommreport.lang
Normal file
40
htdocs/langs/ar_SA/intracommreport.lang
Normal file
@ -0,0 +1,40 @@
|
||||
Module68000Name = Intracomm report
|
||||
Module68000Desc = Intracomm report management (Support for French DEB/DES format)
|
||||
IntracommReportSetup = Intracommreport module setup
|
||||
IntracommReportAbout = About intracommreport
|
||||
|
||||
# Setup
|
||||
INTRACOMMREPORT_NUM_AGREMENT=Numéro d'agrément (délivré par le CISD de rattachement)
|
||||
INTRACOMMREPORT_TYPE_ACTEUR=Type d'acteur
|
||||
INTRACOMMREPORT_ROLE_ACTEUR=Rôle joué par l'acteur
|
||||
INTRACOMMREPORT_NIV_OBLIGATION_INTRODUCTION=Niveau d'obligation sur les introductions
|
||||
INTRACOMMREPORT_NIV_OBLIGATION_EXPEDITION=Niveau d'obligation sur les expéditions
|
||||
INTRACOMMREPORT_CATEG_FRAISDEPORT=Catégorie de services de type "Frais de port"
|
||||
|
||||
INTRACOMMREPORT_NUM_DECLARATION=Numéro de déclarant
|
||||
|
||||
# Menu
|
||||
MenuIntracommReport=Intracomm report
|
||||
MenuIntracommReportNew=New declaration
|
||||
MenuIntracommReportList=قائمة
|
||||
|
||||
# View
|
||||
NewDeclaration=New declaration
|
||||
Declaration=Declaration
|
||||
AnalysisPeriod=Analysis period
|
||||
TypeOfDeclaration=Type of declaration
|
||||
DEB=Goods exchange declaration (DEB)
|
||||
DES=Services exchange declaration (DES)
|
||||
|
||||
# Export page
|
||||
IntracommReportTitle=Preparation of an XML file in ProDouane format
|
||||
|
||||
# List
|
||||
IntracommReportList=List of generated declarations
|
||||
IntracommReportNumber=Numero of declaration
|
||||
IntracommReportPeriod=Period of nalysis
|
||||
IntracommReportTypeDeclaration=Type of declaration
|
||||
IntracommReportDownload=download XML file
|
||||
|
||||
# Invoice
|
||||
IntracommReportTransportMode=Transport mode
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user