Merge branch 'develop' into develop

This commit is contained in:
Laurent Destailleur 2020-11-18 18:16:29 +01:00 committed by GitHub
commit 1708874306
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
917 changed files with 19348 additions and 12999 deletions

View File

@ -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
View File

@ -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

View File

@ -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/

View File

@ -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&amp;token='.newToken().'&amp;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&amp;token='.newToken().'&amp;value='.$name.'&amp;scandir='.$module->scandir.'&amp;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&amp;token='.newToken().'&amp;value='.$name.'&amp;scandir='.$module->scandir.'&amp;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();

View File

@ -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");
}

View File

@ -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;

View File

@ -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
*/

View File

@ -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);
/*

View File

@ -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">&nbsp;</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">&nbsp;</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>';

View File

@ -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)
{

View File

@ -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;

View File

@ -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>';

View File

@ -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;

View File

@ -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') : '&nbsp;';
if ($object->hasDelay() && !empty($object->date_livraison)) {
print $object->delivery_date ? dol_print_date($object->delivery_date, 'dayhour') : '&nbsp;';
if ($object->hasDelay() && !empty($object->delivery_date)) {
print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning");
}
}

View File

@ -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 = '';

View File

@ -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;

View File

@ -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"));

View File

@ -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>';

View File

@ -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;

View File

@ -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);

View File

@ -65,6 +65,11 @@ class Tva extends CommonObject
*/
public $fk_bank;
/**
* @var int accountid
*/
public $accountid;
/**
* @var int ID
*/

View File

@ -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,

View File

@ -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++;
}
}

View File

@ -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;

View File

@ -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;

View File

@ -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 ?

View File

@ -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, '', '&nbsp;', 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)

View File

@ -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 {

View File

@ -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";
}

View File

@ -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)

View File

@ -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'; ?>',

View File

@ -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));
}
}
/**

View File

@ -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

View File

@ -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>';
}

View File

@ -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

View File

@ -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)
{

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)
{

View File

@ -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

View File

@ -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

View File

@ -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

View 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;
}
}

View 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;
}
}

View File

@ -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
//-------

View File

@ -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;

View 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

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -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)
*/

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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>';

View File

View 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>

View File

@ -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.'">';

View File

@ -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";

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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 )
{

View File

@ -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");
}
}

View File

@ -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;

View File

@ -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)) {

View File

@ -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) : '&nbsp;';
if ($object->hasDelay() && !empty($object->date_livraison)) {
print $object->delivery_date ? dol_print_date($object->delivery_date, $usehourmin) : '&nbsp;';
if ($object->hasDelay() && !empty($object->delivery_date)) {
print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning");
}
}

View File

@ -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']++;
}

View File

@ -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';

View File

@ -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');

View File

@ -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,

View File

@ -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;

View File

@ -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);

View File

@ -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.

View File

@ -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

View File

@ -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.

View 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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -42,5 +42,4 @@ NotTheGoodQualitySupplier=جودة منخفضة
ReputationForThisProduct=سمعة
BuyerName=اسم المشتري
AllProductServicePrices=أسعار جميع المنتجات / الخدمات
AllProductReferencesOfSupplier=جميع مراجع المنتج / الخدمة للمورد
BuyingPriceNumShort=أسعار المورد

View File

@ -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.

View File

@ -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

View File

@ -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.

View 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