diff --git a/ChangeLog b/ChangeLog
index 031e740e008..41f9d05f752 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -28,6 +28,84 @@ Following changes may create regressions for some external modules, but were nec
* All functions fetch_all() are deprecated for naming consitency, use fetchAll() instead
+***** ChangeLog for 16.0.1 compared to 16.0.0 *****
+
+FIX: #16476 on massaction the pdf generation is not using the t…
+FIX: #21416 Filter tag no-categorie in members
+FIX: #21543
+FIX: #21799 inactive companies shall not be selectable for new proposals, orders and invoices
+FIX: #21859 Don't show html balise on list for private/public note
+FIX: #22164
+FIX: #22241
+FIX: #22263 Accountancy - Account number expected in place of a rowid on parent account on export
+FIX: #22264 Accountancy - Translation on chart of accounts export
+FIX: #22265 Accountancy - Account number expected in place of a rowid on export
+FIX: #22334
+FIX: #22360
+FIX: #22379 creating events on supplier order
+FIX: #22382 Error on length of supplier reference
+FIX: #22386 IBAN not mandatory for International Export Countries
+FIX: #22440 Lang Key "UserAccountNotDefined" is missing
+FIX: #22482
+FIX: #22507
+FIX: Accountancy - Some manuals operations are displayed in subledger
+FIX: API reception return error 500
+FIX: avoid override initial message ($this instead $object)
+FIX: avoid some warnings (php8+)
+FIX: Bad backtopage and CSRF on link for ticket message
+FIX: bad closing select
+FIX: broken feature, wrong fk_parent_line after cloning object
+FIX: Column label
+FIX: compatibility if javascript not actived
+FIX: compatibility with Mysql <= 5.7
+FIX: contact deletion: execute trigger before really deleting
+FIX: CronJob sendBackup
+FIX: CSRF + lost value of constant after use save button
+FIX: CSS
+FIX: data integrity for llx_delivery table
+FIX: default value for partnership status
+FIX: deletion of the MO_CHILD link
+FIX: Dictionary - Display error on cache_vatrates
+FIX: Dolibarr#16476 version 2a
+FIX: Duplicate creation of invoice when closing shipment linked to order
+FIX: Duplicate in list when filtering on categories
+FIX: extrafields with value '0' was ''
+FIX: filters lost when sorting on productMargin and customerMargins
+FIX: fk_expedition in $line can be usefull for triggers
+FIX: Import in upgrade when using a socialnetwork field.
+FIX: input hidden with fk_product of line on mo production can be usefull
+FIX: inventory code must be different at each transation
+FIX: inventory total columns
+FIX: Issue #16476 on massaction the pdf generation is not using the thirdparty language settings
+FIX: Linked object agenda card
+FIX: missing check if category module is enabled
+FIX: missing check if incoice as a payment (wrong status)
+FIX: missing class "societe" when create another object with workflow
+FIX: missing error message if image size too large
+FIX: Missing reposition
+FIX: missing the management of a constant in the Ticket config
+FIX: Missing token in different URLs links
+FIX: @ must be allowed into dol_eval to allow rules including external module string 'abc@def'
+FIX: - php V8 get number doc saphir
+FIX: - php V8 propal index last draft
+FIX: Preview button position on documents list (case when the file is too long)
+FIX: Project - on global view, missing display of ref customer
+FIX: Protection against bad value into accurancy setup
+FIX: reading of trackid in emailcollector (when on recipient suffix)
+FIX: recruitment linked files
+FIX: Remove use of code we should not have
+FIX: Restore the option MAIN_OPTIMIZEFORTEXTBROWSER
+FIX: Rich text is not diplayed
+FIX: same thing in deleteline
+FIX: Supplier Reference is lost when page breaks
+FIX: support of array parameters in "add to bookmark" feature.
+FIX: Test that web dir is correct in install
+FIX: the shipment PDF was using the full size logo instead of small
+FIX: Token Error : delete stock transfer
+FIX: ToOfferALinkForOnlinePayment not translated
+FIX: tooltip of technical tables added of a module
+FIX: wrong result check when update expensereport line
+
***** ChangeLog for 16.0.0 compared to 15.0.0 *****
@@ -236,6 +314,7 @@ Following changes may create regressions for some external modules, but were nec
* Method fetch_all of DolResource has been renamed into fetchAll() to match naming conventions.
* The hook 'upgrade' and 'doUpgrade2" has been renamed 'doUpgradeBefore' and 'doUpgradeAfterDB'. A new trigger 'doUpgradeAfterFiles' has been introduced.
* The context hook 'suppliercard' when on the supplier tab of a thirdparty has been renamed into 'thirdpartysupplier'
+* Because the module Resources highly linked to the Agenda module, the menu for Resources module has been moved into top menu Agenda.
***** ChangeLog for 15.0.3 compared to 15.0.2 *****
diff --git a/dev/resources/iso-normes/accountancy/accountancy_rules.txt b/dev/resources/iso-normes/accountancy/accountancy_rules.txt
index a265bcf4f54..918d0f01d3c 100644
--- a/dev/resources/iso-normes/accountancy/accountancy_rules.txt
+++ b/dev/resources/iso-normes/accountancy/accountancy_rules.txt
@@ -12,3 +12,11 @@ Le client règle rapidement et on lui accorde un escompte de 3% (120 € * 3% =
411xxx 3,60 € TTC
Et ça marche à l’inverse avec un fournisseur sauf que l’on est en 775000 au lieu de 665000 pour escompte obtenus.
+
+
+
+
+Un compte comptable de Tiers vente = Acount Receivable
+Un compte comptable de Tiers achat = Acount Payable
+
+
\ No newline at end of file
diff --git a/htdocs/accountancy/admin/index.php b/htdocs/accountancy/admin/index.php
index 22d39dea7d0..8236b83eb3d 100644
--- a/htdocs/accountancy/admin/index.php
+++ b/htdocs/accountancy/admin/index.php
@@ -266,6 +266,9 @@ if (!$user->admin) {
if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
print '
';
+ print '';
- // TODO Move this into token generation
+ // TODO Move this into token generation ?
if ($supported) {
if ($keyforsupportedoauth2array == 'OAUTH_OTHER_NAME') {
print '
';
// Bank
diff --git a/htdocs/compta/facture/class/facturestats.class.php b/htdocs/compta/facture/class/facturestats.class.php
index 522fe9aa2e2..55ae05ff0a5 100644
--- a/htdocs/compta/facture/class/facturestats.class.php
+++ b/htdocs/compta/facture/class/facturestats.class.php
@@ -97,10 +97,19 @@ class FactureStats extends Stats
if ($this->userid > 0) {
$this->where .= ' AND f.fk_user_author = '.((int) $this->userid);
}
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
- $this->where .= " AND f.type IN (0,1,2,5)";
- } else {
- $this->where .= " AND f.type IN (0,1,2,3,5)";
+ if ($mode == 'customer') {
+ if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $this->where .= " AND f.type IN (0,1,2,5)";
+ } else {
+ $this->where .= " AND f.type IN (0,1,2,3,5)";
+ }
+ }
+ if ($mode == 'supplier') {
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $this->where .= " AND f.type IN (0,1,2,5)";
+ } else {
+ $this->where .= " AND f.type IN (0,1,2,3,5)";
+ }
}
if ($typentid) {
diff --git a/htdocs/compta/facture/prelevement.php b/htdocs/compta/facture/prelevement.php
index c36b205b8fb..531106be626 100644
--- a/htdocs/compta/facture/prelevement.php
+++ b/htdocs/compta/facture/prelevement.php
@@ -114,11 +114,7 @@ if (empty($reshook)) {
}
$paymentservice = GETPOST('paymentservice');
- if (preg_match('/stripesepa/', $paymentservice)) {
- $result = $object->demande_prelevement_stripe($user, price2num(GETPOST('withdraw_request_amount', 'alpha')), $newtype, $sourcetype);
- } else {
- $result = $object->demande_prelevement($user, price2num(GETPOST('withdraw_request_amount', 'alpha')), $newtype, $sourcetype);
- }
+ $result = $object->demande_prelevement($user, price2num(GETPOST('withdraw_request_amount', 'alpha')), $newtype, $sourcetype);
if ($result > 0) {
$db->commit();
@@ -142,6 +138,14 @@ if (empty($reshook)) {
}
}
+ // Payment with Direct Debit Stripe
+ if ($action == 'sepastripepayment' && $usercancreate) {
+ $result = $object->makeStripeSepaRequest($user, GETPOST('did', 'int'), 'direct-debit', 'facture');
+ if ($result < 0) {
+ setEventMessages($object->error, $object->errors, 'errors');
+ }
+ }
+
// payments conditions
if ($action == 'setconditions' && $usercancreate) {
$object->fetch($id);
@@ -260,7 +264,7 @@ if ($object->id > 0) {
$resteapayeraffiche = $resteapayer;
if ($type == 'bank-transfer') {
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) { // Never use this
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) { // Not recommended
$filterabsolutediscount = "fk_invoice_supplier_source IS NULL"; // If we want deposit to be substracted to payments only and not to total of final invoice
$filtercreditnote = "fk_invoice_supplier_source IS NOT NULL"; // If we want deposit to be substracted to payments only and not to total of final invoice
} else {
@@ -273,7 +277,7 @@ if ($object->id > 0) {
$absolute_discount = price2num($absolute_discount, 'MT');
$absolute_creditnote = price2num($absolute_creditnote, 'MT');
} else {
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) { // Not recommended
$filterabsolutediscount = "fk_facture_source IS NULL"; // If we want deposit to be substracted to payments only and not to total of final invoice
$filtercreditnote = "fk_facture_source IS NOT NULL"; // If we want deposit to be substracted to payments only and not to total of final invoice
} else {
@@ -871,7 +875,8 @@ if ($object->id > 0) {
print '
';
diff --git a/htdocs/compta/journal/purchasesjournal.php b/htdocs/compta/journal/purchasesjournal.php
index 2c7c5d42156..28eee624db2 100644
--- a/htdocs/compta/journal/purchasesjournal.php
+++ b/htdocs/compta/journal/purchasesjournal.php
@@ -95,7 +95,7 @@ $periodlink = '';
$exportlink = '';
$builddate = dol_now();
$description = $langs->trans("DescPurchasesJournal").' ';
-if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
$description .= $langs->trans("DepositsAreNotIncluded");
} else {
$description .= $langs->trans("DepositsAreIncluded");
@@ -119,7 +119,7 @@ $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON p.rowid = fd.fk_product";
$sql .= " JOIN ".MAIN_DB_PREFIX."facture_fourn as f ON f.rowid = fd.fk_facture_fourn";
$sql .= " JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = f.fk_soc";
$sql .= " WHERE f.fk_statut > 0 AND f.entity IN (".getEntity('invoice').")";
-if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
$sql .= " AND f.type IN (0,1,2)";
} else {
$sql .= " AND f.type IN (0,1,2,3)";
diff --git a/htdocs/compta/localtax/quadri_detail.php b/htdocs/compta/localtax/quadri_detail.php
index 0dfb0ab3c6d..9e03f156848 100644
--- a/htdocs/compta/localtax/quadri_detail.php
+++ b/htdocs/compta/localtax/quadri_detail.php
@@ -194,6 +194,9 @@ if ($conf->global->TAX_MODE_SELL_SERVICE == 'payment') $description.=' '.$lan
if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
$description.=' '.$langs->trans("DepositsAreNotIncluded");
}
+if (! empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $description.=' '.$langs->trans("SupplierDepositsAreNotIncluded");
+}
*/
if (!empty($conf->global->MAIN_MODULE_ACCOUNTING)) {
$description .= $langs->trans("ThisIsAnEstimatedValue");
diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php
index cd2106e50a4..908d0ae4ac2 100644
--- a/htdocs/compta/resultat/clientfourn.php
+++ b/htdocs/compta/resultat/clientfourn.php
@@ -189,6 +189,9 @@ if ($modecompta == "CREANCES-DETTES") {
} else {
$description .= $langs->trans("DepositsAreIncluded");
}
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $description .= $langs->trans("SupplierDepositsAreNotIncluded");
+ }
$builddate = dol_now();
//$exportlink=$langs->trans("NotYetAvailable");
} elseif ($modecompta == "RECETTES-DEPENSES") {
@@ -637,7 +640,7 @@ if ($modecompta == 'BOOKKEEPING') {
$sql .= ", ".MAIN_DB_PREFIX."facture_fourn as f";
$sql .= " WHERE f.fk_soc = s.rowid";
$sql .= " AND f.fk_statut IN (1,2)";
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
$sql .= " AND f.type IN (0,1,2)";
} else {
$sql .= " AND f.type IN (0,1,2,3)";
@@ -1341,7 +1344,7 @@ if ($modecompta == 'BOOKKEEPING') {
$sql = "SELECT date_format(f.datef,'%Y-%m') as dm, sum(f.total_tva) as amount";
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f";
$sql .= " WHERE f.fk_statut IN (1,2)";
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
$sql .= " AND f.type IN (0,1,2)";
} else {
$sql .= " AND f.type IN (0,1,2,3)";
diff --git a/htdocs/compta/resultat/index.php b/htdocs/compta/resultat/index.php
index 5b2ca11be54..4012994be58 100644
--- a/htdocs/compta/resultat/index.php
+++ b/htdocs/compta/resultat/index.php
@@ -165,6 +165,9 @@ if ($modecompta == 'CREANCES-DETTES') {
} else {
$description .= " ".$langs->trans("DepositsAreIncluded");
}
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $description .= $langs->trans("SupplierDepositsAreNotIncluded");
+ }
$builddate = dol_now();
//$exportlink=$langs->trans("NotYetAvailable");
} elseif ($modecompta == "RECETTES-DEPENSES") {
@@ -330,7 +333,7 @@ if (isModEnabled('facture') && ($modecompta == 'CREANCES-DETTES' || $modecompta
$sql = "SELECT sum(f.total_ht) as amount_ht, sum(f.total_ttc) as amount_ttc, date_format(f.datef,'%Y-%m') as dm";
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f";
$sql .= " WHERE f.fk_statut IN (1,2)";
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
$sql .= " AND f.type IN (0,1,2)";
} else {
$sql .= " AND f.type IN (0,1,2,3)";
@@ -438,7 +441,7 @@ if (isModEnabled('tax') && ($modecompta == 'CREANCES-DETTES' || $modecompta == "
$sql = "SELECT sum(f.total_tva) as amount, date_format(f.datef,'%Y-%m') as dm";
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f";
$sql .= " WHERE f.fk_statut IN (1,2)";
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
$sql .= " AND f.type IN (0,1,2)";
} else {
$sql .= " AND f.type IN (0,1,2,3)";
diff --git a/htdocs/compta/resultat/result.php b/htdocs/compta/resultat/result.php
index 9a5a8325448..15c369b7a52 100644
--- a/htdocs/compta/resultat/result.php
+++ b/htdocs/compta/resultat/result.php
@@ -205,6 +205,9 @@ if ($modecompta == "CREANCES-DETTES") {
} else {
$description .= $langs->trans("DepositsAreIncluded");
}
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $description .= $langs->trans("SupplierDepositsAreNotIncluded");
+ }
$builddate = dol_now();
//$exportlink=$langs->trans("NotYetAvailable");
} elseif ($modecompta == "RECETTES-DEPENSES") {
@@ -231,8 +234,6 @@ if ($modecompta == "CREANCES-DETTES") {
$exportlink = '';
$description = $langs->trans("RulesResultBookkeepingPersonalized");
$description .= ' ('.$langs->trans("SeePageForSetup", DOL_URL_ROOT.'/accountancy/admin/categories_list.php?search_country_id='.$mysoc->country_id.'&mainmenu=accountancy&leftmenu=accountancy_admin', $langs->transnoentitiesnoconv("Accountancy").' / '.$langs->transnoentitiesnoconv("Setup").' / '.$langs->transnoentitiesnoconv("AccountingCategory")).')';
- //if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $description.= $langs->trans("DepositsAreNotIncluded");
- //else $description.= $langs->trans("DepositsAreIncluded");
$builddate = dol_now();
}
diff --git a/htdocs/compta/stats/byratecountry.php b/htdocs/compta/stats/byratecountry.php
index f19c37fb84a..fb8ad4de1a5 100644
--- a/htdocs/compta/stats/byratecountry.php
+++ b/htdocs/compta/stats/byratecountry.php
@@ -225,7 +225,9 @@ if ($conf->global->TAX_MODE_SELL_SERVICE == 'payment') {
if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
$description .= ' '.$langs->trans("DepositsAreNotIncluded");
}
-
+if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $description .= $langs->trans("SupplierDepositsAreNotIncluded");
+}
// Customers invoices
$elementcust = $langs->trans("CustomersInvoices");
$productcust = $langs->trans("ProductOrService");
@@ -256,6 +258,9 @@ if ($modecompta == "CREANCES-DETTES") {
} else {
$description .= $langs->trans("DepositsAreIncluded");
}
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $description .= $langs->trans("SupplierDepositsAreNotIncluded");
+ }
$builddate = dol_now();
} elseif ($modecompta == "RECETTES-DEPENSES") {
@@ -406,7 +411,7 @@ if ($modecompta == 'CREANCES-DETTES') {
$sql2 .= " WHERE ff.datef >= '".$db->idate($date_start)."'";
$sql2 .= " AND ff.datef <= '".$db->idate($date_end)."'";
$sql .= " AND ff.fk_statut in (1,2)";
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
$sql .= " AND ff.type IN (0,1,2,5)";
} else {
$sql .= " AND ff.type IN (0,1,2,3,5)";
diff --git a/htdocs/compta/stats/cabyprodserv.php b/htdocs/compta/stats/cabyprodserv.php
index 80a0a47538d..dc0fa94030c 100644
--- a/htdocs/compta/stats/cabyprodserv.php
+++ b/htdocs/compta/stats/cabyprodserv.php
@@ -247,7 +247,6 @@ if ($modecompta == "CREANCES-DETTES") {
} else {
$description .= $langs->trans("DepositsAreIncluded");
}
-
$builddate = dol_now();
} elseif ($modecompta == "RECETTES-DEPENSES") {
$name = $langs->trans("TurnoverCollected").', '.$langs->trans("ByProductsAndServices");
diff --git a/htdocs/compta/tva/clients.php b/htdocs/compta/tva/clients.php
index aa639804ba0..d0ed3032684 100644
--- a/htdocs/compta/tva/clients.php
+++ b/htdocs/compta/tva/clients.php
@@ -154,6 +154,9 @@ if ($conf->global->TAX_MODE_SELL_SERVICE == 'payment') {
if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
$description .= ' '.$langs->trans("DepositsAreNotIncluded");
}
+if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $description .= $langs->trans("SupplierDepositsAreNotIncluded");
+}
if (!empty($conf->global->MAIN_MODULE_ACCOUNTING)) {
$description .= ' '.$langs->trans("ThisIsAnEstimatedValue");
}
diff --git a/htdocs/compta/tva/index.php b/htdocs/compta/tva/index.php
index 16b24361160..f0efe305d8c 100644
--- a/htdocs/compta/tva/index.php
+++ b/htdocs/compta/tva/index.php
@@ -211,6 +211,9 @@ if ($conf->global->TAX_MODE_SELL_SERVICE == 'payment') {
if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
$description .= ' '.$langs->trans("DepositsAreNotIncluded");
}
+if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $description .= $langs->trans("SupplierDepositsAreNotIncluded");
+}
if (!empty($conf->global->MAIN_MODULE_ACCOUNTING)) {
$description .= ' '.$langs->trans("ThisIsAnEstimatedValue");
}
diff --git a/htdocs/compta/tva/quadri_detail.php b/htdocs/compta/tva/quadri_detail.php
index 18b3c9c6b86..997c90e083c 100644
--- a/htdocs/compta/tva/quadri_detail.php
+++ b/htdocs/compta/tva/quadri_detail.php
@@ -164,6 +164,9 @@ if ($conf->global->TAX_MODE_SELL_SERVICE == 'payment') {
if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
$description .= ' '.$langs->trans("DepositsAreNotIncluded");
}
+if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $description .= $langs->trans("SupplierDepositsAreNotIncluded");
+}
if (!empty($conf->global->MAIN_MODULE_ACCOUNTING)) {
$description .= ' '.$langs->trans("ThisIsAnEstimatedValue");
}
diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php
index 2a8d1b815a7..8ebfc82676a 100644
--- a/htdocs/contrat/class/contrat.class.php
+++ b/htdocs/contrat/class/contrat.class.php
@@ -1707,8 +1707,8 @@ class Contrat extends CommonObject
$total_localtax1 = $tabprice[9];
$total_localtax2 = $tabprice[10];
- $localtax1_type = $localtaxes_type[0];
- $localtax2_type = $localtaxes_type[2];
+ $localtax1_type = (empty($localtaxes_type[0]) ? '' : $localtaxes_type[0]);
+ $localtax2_type = (empty($localtaxes_type[2]) ? '' : $localtaxes_type[2]);
// TODO A virer
// Anciens indicateurs: $price, $remise (a ne plus utiliser)
@@ -1741,8 +1741,8 @@ class Contrat extends CommonObject
$sql .= ",tva_tx = ".((float) price2num($tvatx));
$sql .= ",localtax1_tx = ".((float) price2num($localtax1tx));
$sql .= ",localtax2_tx = ".((float) price2num($localtax2tx));
- $sql .= ",localtax1_type='".$this->db->escape($localtax1_type);
- $sql .= ",localtax2_type='".$this->db->escape($localtax2_type);
+ $sql .= ",localtax1_type='".$this->db->escape($localtax1_type)."'";
+ $sql .= ",localtax2_type='".$this->db->escape($localtax2_type)."'";
$sql .= ", total_ht = ".((float) price2num($total_ht));
$sql .= ", total_tva = ".((float) price2num($total_tva));
$sql .= ", total_localtax1 = ".((float) price2num($total_localtax1));
diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php
index 9a2eda2df8e..49cc6fa873c 100644
--- a/htdocs/core/actions_massactions.inc.php
+++ b/htdocs/core/actions_massactions.inc.php
@@ -1240,6 +1240,45 @@ if (!$error && ($action == 'affecttag' && $confirm == 'yes') && $permissiontoadd
}
}
+if (!$error && ($action == 'setsupervisor' && $confirm == 'yes') && $permissiontoadd) {
+ $db->begin();
+ $supervisortoset=GETPOST('supervisortoset');
+ if (!empty($supervisortoset)) {
+ foreach ($toselect as $toselectid) {
+ $result = $object->fetch($toselectid);
+ //var_dump($contcats);exit;
+ if ($result > 0) {
+ $object->fk_user = $supervisortoset;
+ $res = $object->update($user);
+ if ($res > 0) {
+ $nbok++;
+ } else {
+ setEventMessages($object->error, $object->errors, 'errors');
+ }
+ } else {
+ setEventMessages($object->error, $object->errors, 'errors');
+ $error++;
+ break;
+ }
+ }
+ } else {
+ setEventMessage('UserNotFound', 'errors');
+ $error++;
+ }
+
+ if (!$error) {
+ if ($nbok > 1) {
+ setEventMessages($langs->trans("RecordsModified", $nbok), null);
+ } else {
+ setEventMessages($langs->trans("RecordsModified", $nbok), null);
+ }
+ $db->commit();
+ $toselect=array();
+ } else {
+ $db->rollback();
+ }
+}
+
if (!$error && ($massaction == 'enable' || ($action == 'enable' && $confirm == 'yes')) && $permissiontoadd) {
$db->begin();
diff --git a/htdocs/core/boxes/modules_boxes.php b/htdocs/core/boxes/modules_boxes.php
index 769f74da1a1..1a29c8e1389 100644
--- a/htdocs/core/boxes/modules_boxes.php
+++ b/htdocs/core/boxes/modules_boxes.php
@@ -495,7 +495,7 @@ class ModeleBoxes // Can't be abtract as it is instantiated to build "empty" box
}
// We set info of modules
- $widget[$j]['picto'] = $objMod->picto ? img_object('', $objMod->picto) : img_object('', 'generic');
+ $widget[$j]['picto'] = (empty($objMod->picto) ? (empty($objMod->boximg) ? img_object('', 'generic') : $objMod->boximg) : img_object('', $objMod->picto));
$widget[$j]['file'] = $files[$key];
$widget[$j]['fullpath'] = $fullpath[$key];
$widget[$j]['relpath'] = $relpath[$key];
diff --git a/htdocs/core/class/commoninvoice.class.php b/htdocs/core/class/commoninvoice.class.php
index 41dec1e8fb7..2d63347c029 100644
--- a/htdocs/core/class/commoninvoice.class.php
+++ b/htdocs/core/class/commoninvoice.class.php
@@ -175,7 +175,7 @@ abstract class CommonInvoice extends CommonObject
/**
* Return amount (with tax) of all deposits invoices used by invoice.
* Should always be empty, except if option FACTURE_DEPOSITS_ARE_JUST_PAYMENTS is on for sale invoices (not recommended),
- * of FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS is on for purchase invoices (not recommended).
+ * of FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS is on for purchase invoices (not recommended).
*
* @param int $multicurrency Return multicurrency_amount instead of amount
* @return float <0 and set ->error if KO, Sum of deposits amount otherwise
@@ -183,7 +183,7 @@ abstract class CommonInvoice extends CommonObject
public function getSumDepositsUsed($multicurrency = 0)
{
/*if ($this->element == 'facture_fourn' || $this->element == 'invoice_supplier') {
- // FACTURE_DEPOSITS_ARE_JUST_PAYMENTS was never supported for purchase invoice, so we can return 0 with no need of SQL for this case.
+ // FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS was never supported for purchase invoice, so we can return 0 with no need of SQL for this case.
return 0.0;
}*/
@@ -379,7 +379,7 @@ abstract class CommonInvoice extends CommonObject
$sql = "SELECT rc.amount_ttc as amount, rc.multicurrency_amount_ttc as multicurrency_amount, rc.datec as date, f.ref as ref, rc.description as type";
$sql .= ' FROM '.$this->db->prefix().'societe_remise_except as rc, '.$this->db->prefix().'facture_fourn as f';
$sql .= ' WHERE rc.fk_invoice_supplier_source=f.rowid AND rc.fk_invoice_supplier = '.((int) $this->id);
- $sql .= ' AND (f.type = 2 OR f.type = 0 OR f.type = 3)'; // Find discount coming from credit note or excess received or deposits (payments from deposits are always null except if FACTURE_DEPOSITS_ARE_JUST_PAYMENTS is set)
+ $sql .= ' AND (f.type = 2 OR f.type = 0 OR f.type = 3)'; // Find discount coming from credit note or excess received or deposits (payments from deposits are always null except if FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS is set)
}
if ($sql) {
@@ -848,20 +848,18 @@ abstract class CommonInvoice extends CommonObject
}
- // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
/**
* Create a withdrawal request for a direct debit order or a credit transfer order.
* Use the remain to pay excluding all existing open direct debit requests.
*
* @param User $fuser User asking the direct debit transfer
- * @param float $amount Amount we request direct debit for
+ * @param int $did ID of payment request
* @param string $type 'direct-debit' or 'bank-transfer'
* @param string $sourcetype Source ('facture' or 'supplier_invoice')
* @return int <0 if KO, >0 if OK
*/
- public function demande_prelevement_stripe($fuser, $amount = 0, $type = 'direct-debit', $sourcetype = 'facture')
+ public function makeStripeSepaRequest($fuser, $did = 0, $type = 'direct-debit', $sourcetype = 'facture')
{
- // phpcs:enable
global $conf, $mysoc, $user, $langs;
if (empty($conf->global->STRIPE_SEPA_DIRECT_DEBIT)) {
@@ -871,753 +869,755 @@ abstract class CommonInvoice extends CommonObject
$error = 0;
- dol_syslog(get_class($this)."::demande_prelevement_stripe 0", LOG_DEBUG);
+ dol_syslog(get_class($this)."::makeStripeSepaRequest 0", LOG_DEBUG);
if ($this->statut > self::STATUS_DRAFT && $this->paye == 0) {
require_once DOL_DOCUMENT_ROOT.'/societe/class/companybankaccount.class.php';
$bac = new CompanyBankAccount($this->db);
- $bac->fetch(0, $this->socid);
+ $result = $bac->fetch(0, $this->socid, 1, 'ban');
+ if ($result <= 0 || empty($bac->id)) {
+ $this->error = $langs->trans("ThirdpartyHasNoDefaultBanAccount");
+ $this->errors[] = $this->error;
+ dol_syslog(get_class($this)."::makeStripeSepaRequest ".$this->error);
+ return -1;
+ }
- $sql = "SELECT count(*)";
+ $sql = "SELECT rowid, date_demande, amount, fk_facture, fk_facture_fourn";
$sql .= " FROM ".$this->db->prefix()."prelevement_facture_demande";
- $sql .= " WHERE fk_facture = ".((int) $this->id);
- $sql .= " AND ext_payment_id IS NULL"; // To exclude record done for some online payments
- $sql .= " AND traite = 0";
+ $sql .= " WHERE rowid = ".((int) $did);
- dol_syslog(get_class($this)."::demande_prelevement_stripe 1", LOG_DEBUG);
+ dol_syslog(get_class($this)."::makeStripeSepaRequest 1", LOG_DEBUG);
$resql = $this->db->query($sql);
if ($resql) {
- $row = $this->db->fetch_row($resql);
+ $obj = $this->db->fetch_object($resql);
+ if (!$obj) {
+ dol_print_error($this->db, 'CantFindRequestWithId');
+ return -2;
+ }
- if ($row[0] == 0) {
- $now = dol_now();
+ //
+ $amount = $obj->amount;
- $totalpaye = $this->getSommePaiement();
- $totalcreditnotes = $this->getSumCreditNotesUsed();
- $totaldeposits = $this->getSumDepositsUsed();
- //print "totalpaye=".$totalpaye." totalcreditnotes=".$totalcreditnotes." totaldeposts=".$totaldeposits;
+ $now = dol_now();
- // We can also use bcadd to avoid pb with floating points
- // For example print 239.2 - 229.3 - 9.9; does not return 0.
- //$resteapayer=bcadd($this->total_ttc,$totalpaye,$conf->global->MAIN_MAX_DECIMALS_TOT);
- //$resteapayer=bcadd($resteapayer,$totalavoir,$conf->global->MAIN_MAX_DECIMALS_TOT);
- if (empty($amount)) {
- $amount = price2num($this->total_ttc - $totalpaye - $totalcreditnotes - $totaldeposits, 'MT');
+ $totalpaye = $this->getSommePaiement();
+ $totalcreditnotes = $this->getSumCreditNotesUsed();
+ $totaldeposits = $this->getSumDepositsUsed();
+ //print "totalpaye=".$totalpaye." totalcreditnotes=".$totalcreditnotes." totaldeposts=".$totaldeposits;
+
+ // We can also use bcadd to avoid pb with floating points
+ // For example print 239.2 - 229.3 - 9.9; does not return 0.
+ //$resteapayer=bcadd($this->total_ttc,$totalpaye,$conf->global->MAIN_MAX_DECIMALS_TOT);
+ //$resteapayer=bcadd($resteapayer,$totalavoir,$conf->global->MAIN_MAX_DECIMALS_TOT);
+ $amounttocheck = price2num($this->total_ttc - $totalpaye - $totalcreditnotes - $totaldeposits, 'MT');
+
+ // TODO We can compare $amount and $amounttocheck
+
+ if (is_numeric($amount) && $amount != 0) {
+ require_once DOL_DOCUMENT_ROOT.'/societe/class/companypaymentmode.class.php';
+ $companypaymentmode = new CompanyPaymentMode($this->db);
+ $companypaymentmode->fetch($bac->id);
+
+ // Start code for Stripe
+ $service = 'StripeTest';
+ $servicestatus = 0;
+ if (!empty($conf->global->STRIPE_LIVE) && !GETPOST('forcesandbox', 'alpha')) {
+ $service = 'StripeLive';
+ $servicestatus = 1;
}
- if (is_numeric($amount) && $amount != 0) {
- require_once DOL_DOCUMENT_ROOT.'/societe/class/companypaymentmode.class.php';
- $companypaymentmode = new CompanyPaymentMode($this->db);
- $companypaymentmode->fetch($bac->id);
+ dol_syslog("makeStripeSepaRequest amount = ".$amount." service=" . $service . " servicestatus=" . $servicestatus . " thirdparty_id=" . $this->socid . " companypaymentmode=" . $companypaymentmode->id);
- dol_syslog(get_class($this)."::demande_prelevement_stripe amount=$amount, companypaymentmode = " . $companypaymentmode->id, LOG_DEBUG);
+ $this->stripechargedone = 0;
+ $this->stripechargeerror = 0;
+ $now = dol_now();
- //Start code from sellyoursaas
- $service = 'StripeTest';
- $servicestatus = 0;
- if (!empty($conf->global->STRIPE_LIVE) && !GETPOST('forcesandbox', 'alpha')) {
- $service = 'StripeLive';
- $servicestatus = 1;
- }
+ $currency = $conf->currency;
- $langs->load("agenda");
- dol_syslog("doTakePaymentStripeForThirdparty service=" . $service . " servicestatus=" . $servicestatus . " thirdparty_id=" . $this->socid . " companypaymentmode=" . $companypaymentmode->id . " noemailtocustomeriferror=" . $noemailtocustomeriferror . " nocancelifpaymenterror=" . $nocancelifpaymenterror . " calledinmyaccountcontext=" . $calledinmyaccountcontext);
+ global $stripearrayofkeysbyenv;
+ global $savstripearrayofkeysbyenv;
- $this->stripechargedone = 0;
- $this->stripechargeerror = 0;
- $now = dol_now();
+ $errorforinvoice = 0; // We reset the $errorforinvoice at each invoice loop
- $currency = $conf->currency;
+ $this->fetch_thirdparty();
- global $stripearrayofkeysbyenv;
- global $savstripearrayofkeysbyenv;
+ dol_syslog("--- Process invoice thirdparty_id=" . $this->id . ", thirdparty_name=" . $this->thirdparty->name . " id=" . $this->id . ", ref=" . $this->ref . ", datef=" . dol_print_date($this->date, 'dayhourlog'), LOG_DEBUG);
- $errorforinvoice = 0; // We reset the $errorforinvoice at each invoice loop
+ $alreadypayed = $this->getSommePaiement();
+ $amount_credit_notes_included = $this->getSumCreditNotesUsed();
+ $amounttopay = $this->total_ttc - $alreadypayed - $amount_credit_notes_included;
- $this->fetch_thirdparty();
+ // Correct the amount according to unit of currency
+ // See https://support.stripe.com/questions/which-zero-decimal-currencies-does-stripe-support
+ $arrayzerounitcurrency = ['BIF', 'CLP', 'DJF', 'GNF', 'JPY', 'KMF', 'KRW', 'MGA', 'PYG', 'RWF', 'VND', 'VUV', 'XAF', 'XOF', 'XPF'];
+ $amountstripe = $amounttopay;
+ if (!in_array($currency, $arrayzerounitcurrency)) {
+ $amountstripe = $amountstripe * 100;
+ }
- dol_syslog("--- Process invoice thirdparty_id=" . $this->id . ", thirdparty_name=" . $this->thirdparty->name . " id=" . $this->id . ", ref=" . $this->ref . ", datef=" . dol_print_date($this->date, 'dayhourlog'), LOG_DEBUG);
+ if ($amountstripe > 0) {
+ try {
+ //var_dump($companypaymentmode);
+ dol_syslog("We will try to pay with companypaymentmodeid=" . $companypaymentmode->id . " stripe_card_ref=" . $companypaymentmode->stripe_card_ref . " mode=" . $companypaymentmode->status, LOG_DEBUG);
- $alreadypayed = $this->getSommePaiement();
- $amount_credit_notes_included = $this->getSumCreditNotesUsed();
- $amounttopay = $this->total_ttc - $alreadypayed - $amount_credit_notes_included;
+ $thirdparty = new Societe($this->db);
+ $resultthirdparty = $thirdparty->fetch($this->socid);
- // Correct the amount according to unit of currency
- // See https://support.stripe.com/questions/which-zero-decimal-currencies-does-stripe-support
- $arrayzerounitcurrency = ['BIF', 'CLP', 'DJF', 'GNF', 'JPY', 'KMF', 'KRW', 'MGA', 'PYG', 'RWF', 'VND', 'VUV', 'XAF', 'XOF', 'XPF'];
- $amountstripe = $amounttopay;
- if (!in_array($currency, $arrayzerounitcurrency)) {
- $amountstripe = $amountstripe * 100;
- }
+ include_once DOL_DOCUMENT_ROOT . '/stripe/class/stripe.class.php'; // This include the include of htdocs/stripe/config.php
+ // So it inits or erases the $stripearrayofkeysbyenv
+ $stripe = new Stripe($this->db);
- if ($amountstripe > 0) {
- try {
- //var_dump($companypaymentmode);
- dol_syslog("We will try to pay with companypaymentmodeid=" . $companypaymentmode->id . " stripe_card_ref=" . $companypaymentmode->stripe_card_ref . " mode=" . $companypaymentmode->status, LOG_DEBUG);
+ if (empty($savstripearrayofkeysbyenv)) {
+ $savstripearrayofkeysbyenv = $stripearrayofkeysbyenv;
+ }
+ dol_syslog("makeStripeSepaRequest Current Stripe environment is " . $stripearrayofkeysbyenv[$servicestatus]['publishable_key']);
+ dol_syslog("makeStripeSepaRequest Current Saved Stripe environment is " . $savstripearrayofkeysbyenv[$servicestatus]['publishable_key']);
- $thirdparty = new Societe($this->db);
- $resultthirdparty = $thirdparty->fetch($this->socid);
+ $foundalternativestripeaccount = '';
- include_once DOL_DOCUMENT_ROOT . '/stripe/class/stripe.class.php'; // This include the include of htdocs/stripe/config.php
- // So it inits or erases the $stripearrayofkeysbyenv
- $stripe = new Stripe($this->db);
+ // Force stripe to another value (by default this value is empty)
+ if (!empty($thirdparty->array_options['options_stripeaccount'])) {
+ dol_syslog("makeStripeSepaRequest The thirdparty id=" . $thirdparty->id . " has a dedicated Stripe Account, so we switch to it.");
- if (empty($savstripearrayofkeysbyenv)) {
- $savstripearrayofkeysbyenv = $stripearrayofkeysbyenv;
- }
- dol_syslog("Current Stripe environment is " . $stripearrayofkeysbyenv[$servicestatus]['publishable_key']);
- dol_syslog("Current Saved Stripe environment is " . $savstripearrayofkeysbyenv[$servicestatus]['publishable_key']);
+ $tmparray = explode('@', $thirdparty->array_options['options_stripeaccount']);
+ if (!empty($tmparray[1])) {
+ $tmparray2 = explode(':', $tmparray[1]);
+ if (!empty($tmparray2[3])) {
+ $stripearrayofkeysbyenv = [
+ 0 => [
+ "publishable_key" => $tmparray2[0],
+ "secret_key" => $tmparray2[1]
+ ],
+ 1 => [
+ "publishable_key" => $tmparray2[2],
+ "secret_key" => $tmparray2[3]
+ ]
+ ];
- $foundalternativestripeaccount = '';
-
- // Force stripe to another value (by default this value is empty)
- if (!empty($thirdparty->array_options['options_stripeaccount'])) {
- dol_syslog("The thirdparty id=" . $thirdparty->id . " has a dedicated Stripe Account, so we switch to it.");
-
- $tmparray = explode('@', $thirdparty->array_options['options_stripeaccount']);
- if (!empty($tmparray[1])) {
- $tmparray2 = explode(':', $tmparray[1]);
- if (!empty($tmparray2[3])) {
- $stripearrayofkeysbyenv = [
- 0 => [
- "publishable_key" => $tmparray2[0],
- "secret_key" => $tmparray2[1]
- ],
- 1 => [
- "publishable_key" => $tmparray2[2],
- "secret_key" => $tmparray2[3]
- ]
- ];
-
- $stripearrayofkeys = $stripearrayofkeysbyenv[$servicestatus];
- \Stripe\Stripe::setApiKey($stripearrayofkeys['secret_key']);
-
- $foundalternativestripeaccount = $tmparray[0]; // Store the customer id
-
- dol_syslog("We use now customer=" . $foundalternativestripeaccount . " publishable_key=" . $stripearrayofkeys['publishable_key'], LOG_DEBUG);
- }
- }
-
- if (!$foundalternativestripeaccount) {
- $stripearrayofkeysbyenv = $savstripearrayofkeysbyenv;
-
- $stripearrayofkeys = $savstripearrayofkeysbyenv[$servicestatus];
+ $stripearrayofkeys = $stripearrayofkeysbyenv[$servicestatus];
\Stripe\Stripe::setApiKey($stripearrayofkeys['secret_key']);
- dol_syslog("We found a bad value for Stripe Account for thirdparty id=" . $thirdparty->id . ", so we ignore it and keep using the global one, so " . $stripearrayofkeys['publishable_key'], LOG_WARNING);
+
+ $foundalternativestripeaccount = $tmparray[0]; // Store the customer id
+
+ dol_syslog("We use now customer=" . $foundalternativestripeaccount . " publishable_key=" . $stripearrayofkeys['publishable_key'], LOG_DEBUG);
}
- } else {
+ }
+
+ if (!$foundalternativestripeaccount) {
$stripearrayofkeysbyenv = $savstripearrayofkeysbyenv;
$stripearrayofkeys = $savstripearrayofkeysbyenv[$servicestatus];
\Stripe\Stripe::setApiKey($stripearrayofkeys['secret_key']);
- dol_syslog("The thirdparty id=" . $thirdparty->id . " has no dedicated Stripe Account, so we use global one, so " . json_encode($stripearrayofkeys), LOG_DEBUG);
+ dol_syslog("We found a bad value for Stripe Account for thirdparty id=" . $thirdparty->id . ", so we ignore it and keep using the global one, so " . $stripearrayofkeys['publishable_key'], LOG_WARNING);
}
+ } else {
+ $stripearrayofkeysbyenv = $savstripearrayofkeysbyenv;
+
+ $stripearrayofkeys = $savstripearrayofkeysbyenv[$servicestatus];
+ \Stripe\Stripe::setApiKey($stripearrayofkeys['secret_key']);
+ dol_syslog("The thirdparty id=" . $thirdparty->id . " has no dedicated Stripe Account, so we use global one, so " . json_encode($stripearrayofkeys), LOG_DEBUG);
+ }
- dol_syslog("get stripe account", LOG_DEBUG);
- $stripeacc = $stripe->getStripeAccount($service, $this->socid); // Get Stripe OAuth connect account if it exists (no network access here)
- dol_syslog("get stripe account return " . json_encode($stripeacc), LOG_DEBUG);
+ dol_syslog("makeStripeSepaRequest get stripe account", LOG_DEBUG);
+ $stripeacc = $stripe->getStripeAccount($service, $this->socid); // Get Stripe OAuth connect account if it exists (no network access here)
+ dol_syslog("makeStripeSepaRequest get stripe account return " . json_encode($stripeacc), LOG_DEBUG);
- if ($foundalternativestripeaccount) {
- if (empty($stripeacc)) { // If the Stripe connect account not set, we use common API usage
- $customer = \Stripe\Customer::retrieve(['id' => "$foundalternativestripeaccount", 'expand[]' => 'sources']);
- } else {
- $customer = \Stripe\Customer::retrieve(['id' => "$foundalternativestripeaccount", 'expand[]' => 'sources'], ["stripe_account" => $stripeacc]);
- }
+ if ($foundalternativestripeaccount) {
+ if (empty($stripeacc)) { // If the Stripe connect account not set, we use common API usage
+ $customer = \Stripe\Customer::retrieve(['id' => "$foundalternativestripeaccount", 'expand[]' => 'sources']);
} else {
- $customer = $stripe->customerStripe($thirdparty, $stripeacc, $servicestatus, 0);
- if (empty($customer) && !empty($stripe->error)) {
- $this->errors[] = $stripe->error;
- }
- /*if (!empty($customer) && empty($customer->sources)) {
- $customer = null;
- $this->errors[] = '\Stripe\Customer::retrieve did not returned the sources';
- }*/
+ $customer = \Stripe\Customer::retrieve(['id' => "$foundalternativestripeaccount", 'expand[]' => 'sources'], ["stripe_account" => $stripeacc]);
+ }
+ } else {
+ $customer = $stripe->customerStripe($thirdparty, $stripeacc, $servicestatus, 0);
+ if (empty($customer) && !empty($stripe->error)) {
+ $this->errors[] = $stripe->error;
+ }
+ /*if (!empty($customer) && empty($customer->sources)) {
+ $customer = null;
+ $this->errors[] = '\Stripe\Customer::retrieve did not returned the sources';
+ }*/
+ }
+
+ // $nbhoursbetweentries = (empty($conf->global->SELLYOURSAAS_NBHOURSBETWEENTRIES) ? 49 : $conf->global->SELLYOURSAAS_NBHOURSBETWEENTRIES); // Must have more that 48 hours + 1 between each try (so 1 try every 3 daily batch)
+ // $nbdaysbeforeendoftries = (empty($conf->global->SELLYOURSAAS_NBDAYSBEFOREENDOFTRIES) ? 35 : $conf->global->SELLYOURSAAS_NBDAYSBEFOREENDOFTRIES);
+ $labeltouse = '';
+ $postactionmessages = [];
+
+ if ($resultthirdparty > 0 && !empty($customer)) {
+ if (!$error && !empty($this->array_options['options_delayautopayment']) && $this->array_options['options_delayautopayment'] > $now && empty($calledinmyaccountcontext)) {
+ $errmsg = 'Payment try was canceled (invoice qualified by the automatic payment was delayed after the ' . dol_print_date($this->array_options['options_delayautopayment'], 'day') . ')';
+ dol_syslog($errmsg, LOG_DEBUG);
+
+ $error++;
+ $errorforinvoice++;
+ $this->errors[] = $errmsg;
}
- // $nbhoursbetweentries = (empty($conf->global->SELLYOURSAAS_NBHOURSBETWEENTRIES) ? 49 : $conf->global->SELLYOURSAAS_NBHOURSBETWEENTRIES); // Must have more that 48 hours + 1 between each try (so 1 try every 3 daily batch)
- // $nbdaysbeforeendoftries = (empty($conf->global->SELLYOURSAAS_NBDAYSBEFOREENDOFTRIES) ? 35 : $conf->global->SELLYOURSAAS_NBDAYSBEFOREENDOFTRIES);
- $labeltouse = '';
- $postactionmessages = [];
-
- if ($resultthirdparty > 0 && !empty($customer)) {
- if (!$error && !empty($this->array_options['options_delayautopayment']) && $this->array_options['options_delayautopayment'] > $now && empty($calledinmyaccountcontext)) {
- $errmsg = 'Payment try was canceled (invoice qualified by the automatic payment was delayed after the ' . dol_print_date($this->array_options['options_delayautopayment'], 'day') . ')';
- dol_syslog($errmsg, LOG_DEBUG);
-
- $error++;
- $errorforinvoice++;
- $this->errors[] = $errmsg;
+ if (!$error) { // Payment was not canceled
+ //erics card or sepa ?
+ $sepaMode = false;
+ if ($companypaymentmode->type == 'ban') {
+ $sepaMode = true;
+ $stripecard = $stripe->sepaStripe($customer, $companypaymentmode, $stripeacc, $servicestatus, 0);
+ } else {
+ $stripecard = $stripe->cardStripe($customer, $companypaymentmode, $stripeacc, $servicestatus, 0);
}
- if (!$error) { // Payment was not canceled
- //erics card or sepa ?
- $sepaMode = false;
- if ($companypaymentmode->type == 'ban') {
- $sepaMode = true;
- $stripecard = $stripe->sepaStripe($customer, $companypaymentmode, $stripeacc, $servicestatus, 0);
- } else {
- $stripecard = $stripe->cardStripe($customer, $companypaymentmode, $stripeacc, $servicestatus, 0);
- }
+ if ($stripecard) { // Can be card_... (old mode) or pm_... (new mode)
+ $FULLTAG = 'INV=' . $this->id . '-CUS=' . $thirdparty->id;
+ $description = 'Stripe payment from doTakePaymentStripeForThirdparty: ' . $FULLTAG . ' ref=' . $this->ref;
- if ($stripecard) { // Can be card_... (old mode) or pm_... (new mode)
- $FULLTAG = 'INV=' . $this->id . '-CUS=' . $thirdparty->id;
- $description = 'Stripe payment from doTakePaymentStripeForThirdparty: ' . $FULLTAG . ' ref=' . $this->ref;
+ $stripefailurecode = '';
+ $stripefailuremessage = '';
+ $stripefailuredeclinecode = '';
- $stripefailurecode = '';
- $stripefailuremessage = '';
- $stripefailuredeclinecode = '';
+ if (preg_match('/^card_/', $stripecard->id)) { // Using old method
+ dol_syslog("* Create charge on card " . $stripecard->id . ", amountstripe=" . $amountstripe . ", FULLTAG=" . $FULLTAG, LOG_DEBUG);
- if (preg_match('/^card_/', $stripecard->id)) { // Using old method
- dol_syslog("* Create charge on card " . $stripecard->id . ", amountstripe=" . $amountstripe . ", FULLTAG=" . $FULLTAG, LOG_DEBUG);
+ $ipaddress = getUserRemoteIP();
- $ipaddress = getUserRemoteIP();
+ $charge = null; // Force reset of $charge, so, if already set from a previous fetch, it will be empty even if there is an exception at next step
+ try {
+ $charge = \Stripe\Charge::create([
+ 'amount' => price2num($amountstripe, 'MU'),
+ 'currency' => $currency,
+ 'capture' => true, // Charge immediatly
+ 'description' => $description,
+ 'metadata' => ["FULLTAG" => $FULLTAG, 'Recipient' => $mysoc->name, 'dol_version' => DOL_VERSION, 'dol_entity' => $conf->entity, 'ipaddress' => $ipaddress],
+ 'customer' => $customer->id,
+ //'customer' => 'bidon_to_force_error', // To use to force a stripe error
+ 'source' => $stripecard,
+ 'statement_descriptor' => dol_trunc('INV=' . $this->id, 10, 'right', 'UTF-8', 1), // 22 chars that appears on bank receipt (company + description)
+ ]);
+ } catch (\Stripe\Error\Card $e) {
+ // Since it's a decline, Stripe_CardError will be caught
+ $body = $e->getJsonBody();
+ $err = $body['error'];
- $charge = null; // Force reset of $charge, so, if already set from a previous fetch, it will be empty even if there is an exception at next step
- try {
- $charge = \Stripe\Charge::create([
- 'amount' => price2num($amountstripe, 'MU'),
- 'currency' => $currency,
- 'capture' => true, // Charge immediatly
- 'description' => $description,
- 'metadata' => ["FULLTAG" => $FULLTAG, 'Recipient' => $mysoc->name, 'dol_version' => DOL_VERSION, 'dol_entity' => $conf->entity, 'ipaddress' => $ipaddress],
- 'customer' => $customer->id,
- //'customer' => 'bidon_to_force_error', // To use to force a stripe error
- 'source' => $stripecard,
- 'statement_descriptor' => dol_trunc('INV=' . $this->id, 10, 'right', 'UTF-8', 1), // 22 chars that appears on bank receipt (company + description)
- ]);
- } catch (\Stripe\Error\Card $e) {
- // Since it's a decline, Stripe_CardError will be caught
- $body = $e->getJsonBody();
- $err = $body['error'];
-
- $stripefailurecode = $err['code'];
- $stripefailuremessage = $err['message'];
- $stripefailuredeclinecode = $err['decline_code'];
- } catch (Exception $e) {
- $stripefailurecode = 'UnknownChargeError';
- $stripefailuremessage = $e->getMessage();
- }
- } else { // Using new SCA method
- if ($sepaMode) {
- dol_syslog("* Create payment on SEPA " . $stripecard->id . ", amounttopay=" . $amounttopay . ", amountstripe=" . $amountstripe . ", FULLTAG=" . $FULLTAG, LOG_DEBUG);
- } else {
- dol_syslog("* Create payment on card " . $stripecard->id . ", amounttopay=" . $amounttopay . ", amountstripe=" . $amountstripe . ", FULLTAG=" . $FULLTAG, LOG_DEBUG);
- }
-
- // Create payment intent and charge payment (confirmnow = true)
- $paymentintent = $stripe->getPaymentIntent($amounttopay, $currency, $FULLTAG, $description, $invoice, $customer->id, $stripeacc, $servicestatus, 0, 'automatic', true, $stripecard->id, 1);
-
- $charge = new stdClass();
- //erics add processing sepa is like success ?
- if ($paymentintent->status === 'succeeded' || $paymentintent->status === 'processing') {
- $charge->status = 'ok';
- $charge->id = $paymentintent->id;
- $charge->customer = $customer->id;
- } elseif ($paymentintent->status === 'requires_action') {
- //paymentintent->status may be => 'requires_action' (no error in such a case)
- dol_syslog(var_export($paymentintent, true), LOG_DEBUG);
-
- $charge->status = 'failed';
- $charge->customer = $customer->id;
- $charge->failure_code = $stripe->code;
- $charge->failure_message = $stripe->error;
- $charge->failure_declinecode = $stripe->declinecode;
- $stripefailurecode = $stripe->code;
- $stripefailuremessage = 'Action required. Contact the support at ';// . $conf->global->SELLYOURSAAS_MAIN_EMAIL;
- $stripefailuredeclinecode = $stripe->declinecode;
- } else {
- dol_syslog(var_export($paymentintent, true), LOG_DEBUG);
-
- $charge->status = 'failed';
- $charge->customer = $customer->id;
- $charge->failure_code = $stripe->code;
- $charge->failure_message = $stripe->error;
- $charge->failure_declinecode = $stripe->declinecode;
- $stripefailurecode = $stripe->code;
- $stripefailuremessage = $stripe->error;
- $stripefailuredeclinecode = $stripe->declinecode;
- }
-
- //var_dump("stripefailurecode=".$stripefailurecode." stripefailuremessage=".$stripefailuremessage." stripefailuredeclinecode=".$stripefailuredeclinecode);
- //exit;
+ $stripefailurecode = $err['code'];
+ $stripefailuremessage = $err['message'];
+ $stripefailuredeclinecode = $err['decline_code'];
+ } catch (Exception $e) {
+ $stripefailurecode = 'UnknownChargeError';
+ $stripefailuremessage = $e->getMessage();
+ }
+ } else { // Using new SCA method
+ if ($sepaMode) {
+ dol_syslog("* Create payment on SEPA " . $stripecard->id . ", amounttopay=" . $amounttopay . ", amountstripe=" . $amountstripe . ", FULLTAG=" . $FULLTAG, LOG_DEBUG);
+ } else {
+ dol_syslog("* Create payment on card " . $stripecard->id . ", amounttopay=" . $amounttopay . ", amountstripe=" . $amountstripe . ", FULLTAG=" . $FULLTAG, LOG_DEBUG);
}
- // Return $charge = array('id'=>'ch_XXXX', 'status'=>'succeeded|pending|failed', 'failure_code'=>, 'failure_message'=>...)
- if (empty($charge) || $charge->status == 'failed') {
- dol_syslog('Failed to charge card or payment mode ' . $stripecard->id . ' stripefailurecode=' . $stripefailurecode . ' stripefailuremessage=' . $stripefailuremessage . ' stripefailuredeclinecode=' . $stripefailuredeclinecode, LOG_WARNING);
+ // Create payment intent and charge payment (confirmnow = true)
+ $paymentintent = $stripe->getPaymentIntent($amounttopay, $currency, $FULLTAG, $description, $invoice, $customer->id, $stripeacc, $servicestatus, 0, 'automatic', true, $stripecard->id, 1);
- // Save a stripe payment was in error
- $this->stripechargeerror++;
+ $charge = new stdClass();
+ //erics add processing sepa is like success ?
+ if ($paymentintent->status === 'succeeded' || $paymentintent->status === 'processing') {
+ $charge->status = 'ok';
+ $charge->id = $paymentintent->id;
+ $charge->customer = $customer->id;
+ } elseif ($paymentintent->status === 'requires_action') {
+ //paymentintent->status may be => 'requires_action' (no error in such a case)
+ dol_syslog(var_export($paymentintent, true), LOG_DEBUG);
+ $charge->status = 'failed';
+ $charge->customer = $customer->id;
+ $charge->failure_code = $stripe->code;
+ $charge->failure_message = $stripe->error;
+ $charge->failure_declinecode = $stripe->declinecode;
+ $stripefailurecode = $stripe->code;
+ $stripefailuremessage = 'Action required. Contact the support at ';// . $conf->global->SELLYOURSAAS_MAIN_EMAIL;
+ $stripefailuredeclinecode = $stripe->declinecode;
+ } else {
+ dol_syslog(var_export($paymentintent, true), LOG_DEBUG);
+
+ $charge->status = 'failed';
+ $charge->customer = $customer->id;
+ $charge->failure_code = $stripe->code;
+ $charge->failure_message = $stripe->error;
+ $charge->failure_declinecode = $stripe->declinecode;
+ $stripefailurecode = $stripe->code;
+ $stripefailuremessage = $stripe->error;
+ $stripefailuredeclinecode = $stripe->declinecode;
+ }
+
+ //var_dump("stripefailurecode=".$stripefailurecode." stripefailuremessage=".$stripefailuremessage." stripefailuredeclinecode=".$stripefailuredeclinecode);
+ //exit;
+ }
+
+ // Return $charge = array('id'=>'ch_XXXX', 'status'=>'succeeded|pending|failed', 'failure_code'=>, 'failure_message'=>...)
+ if (empty($charge) || $charge->status == 'failed') {
+ dol_syslog('Failed to charge card or payment mode ' . $stripecard->id . ' stripefailurecode=' . $stripefailurecode . ' stripefailuremessage=' . $stripefailuremessage . ' stripefailuredeclinecode=' . $stripefailuredeclinecode, LOG_WARNING);
+
+ // Save a stripe payment was in error
+ $this->stripechargeerror++;
+
+ $error++;
+ $errorforinvoice++;
+ $errmsg = $langs->trans("FailedToChargeCard");
+ if (!empty($charge)) {
+ if ($stripefailuredeclinecode == 'authentication_required') {
+ $errauthenticationmessage = $langs->trans("ErrSCAAuthentication");
+ $errmsg = $errauthenticationmessage;
+ } elseif (in_array($stripefailuredeclinecode, ['insufficient_funds', 'generic_decline'])) {
+ $errmsg .= ': ' . $charge->failure_code;
+ $errmsg .= ($charge->failure_message ? ' - ' : '') . ' ' . $charge->failure_message;
+ if (empty($stripefailurecode)) {
+ $stripefailurecode = $charge->failure_code;
+ }
+ if (empty($stripefailuremessage)) {
+ $stripefailuremessage = $charge->failure_message;
+ }
+ } else {
+ $errmsg .= ': failure_code=' . $charge->failure_code;
+ $errmsg .= ($charge->failure_message ? ' - ' : '') . ' failure_message=' . $charge->failure_message;
+ if (empty($stripefailurecode)) {
+ $stripefailurecode = $charge->failure_code;
+ }
+ if (empty($stripefailuremessage)) {
+ $stripefailuremessage = $charge->failure_message;
+ }
+ }
+ } else {
+ $errmsg .= ': ' . $stripefailurecode . ' - ' . $stripefailuremessage;
+ $errmsg .= ($stripefailuredeclinecode ? ' - ' . $stripefailuredeclinecode : '');
+ }
+
+ $description = 'Stripe payment ERROR from doTakePaymentStripeForThirdparty: ' . $FULLTAG;
+ $postactionmessages[] = $errmsg . ' (' . $stripearrayofkeys['publishable_key'] . ')';
+ $this->errors[] = $errmsg;
+ } else {
+ dol_syslog('Successfuly charge card ' . $stripecard->id);
+
+ $postactionmessages[] = 'Success to charge card (' . $charge->id . ' with ' . $stripearrayofkeys['publishable_key'] . ')';
+
+ // Save a stripe payment was done in realy life so later we will be able to force a commit on recorded payments
+ // even if in batch mode (method doTakePaymentStripe), we will always make all action in one transaction with a forced commit.
+ $this->stripechargedone++;
+
+ // Default description used for label of event. Will be overwrite by another value later.
+ $description = 'Stripe payment OK (' . $charge->id . ') from doTakePaymentStripeForThirdparty: ' . $FULLTAG;
+
+ $db = $this->db;
+
+ $ipaddress = getUserRemoteIP();
+
+ $TRANSACTIONID = $charge->id;
+ $currency = $conf->currency;
+ $paymentmethod = 'stripe';
+ $emetteur_name = $charge->customer;
+
+ // Same code than into paymentok.php...
+
+ $paymentTypeId = 0;
+ if ($paymentmethod == 'paybox') {
+ $paymentTypeId = $conf->global->PAYBOX_PAYMENT_MODE_FOR_PAYMENTS;
+ }
+ if ($paymentmethod == 'paypal') {
+ $paymentTypeId = $conf->global->PAYPAL_PAYMENT_MODE_FOR_PAYMENTS;
+ }
+ if ($paymentmethod == 'stripe') {
+ $paymentTypeId = $conf->global->STRIPE_PAYMENT_MODE_FOR_PAYMENTS;
+ }
+ if (empty($paymentTypeId)) {
+ //erics
+ if ($sepaMode) {
+ $paymentType = 'PRE';
+ } else {
+ $paymentType = $_SESSION["paymentType"];
+ if (empty($paymentType)) {
+ $paymentType = 'CB';
+ }
+ }
+ $paymentTypeId = dol_getIdFromCode($this->db, $paymentType, 'c_paiement', 'code', 'id', 1);
+ }
+
+ $currencyCodeType = $currency;
+
+ $ispostactionok = 1;
+
+ // Creation of payment line
+ include_once DOL_DOCUMENT_ROOT . '/compta/paiement/class/paiement.class.php';
+ $paiement = new Paiement($this->db);
+ $paiement->datepaye = $now;
+ $paiement->date = $now;
+ if ($currencyCodeType == $conf->currency) {
+ $paiement->amounts = [$this->id => $amounttopay]; // Array with all payments dispatching with invoice id
+ } else {
+ $paiement->multicurrency_amounts = [$this->id => $amounttopay]; // Array with all payments dispatching
+
+ $postactionmessages[] = 'Payment was done in a different currency than currency expected of company';
+ $ispostactionok = -1;
+ // Not yet supported, so error
$error++;
$errorforinvoice++;
- $errmsg = $langs->trans("FailedToChargeCard");
- if (!empty($charge)) {
- if ($stripefailuredeclinecode == 'authentication_required') {
- $errauthenticationmessage = $langs->trans("ErrSCAAuthentication");
- $errmsg = $errauthenticationmessage;
- } elseif (in_array($stripefailuredeclinecode, ['insufficient_funds', 'generic_decline'])) {
- $errmsg .= ': ' . $charge->failure_code;
- $errmsg .= ($charge->failure_message ? ' - ' : '') . ' ' . $charge->failure_message;
- if (empty($stripefailurecode)) {
- $stripefailurecode = $charge->failure_code;
- }
- if (empty($stripefailuremessage)) {
- $stripefailuremessage = $charge->failure_message;
- }
- } else {
- $errmsg .= ': failure_code=' . $charge->failure_code;
- $errmsg .= ($charge->failure_message ? ' - ' : '') . ' failure_message=' . $charge->failure_message;
- if (empty($stripefailurecode)) {
- $stripefailurecode = $charge->failure_code;
- }
- if (empty($stripefailuremessage)) {
- $stripefailuremessage = $charge->failure_message;
- }
- }
- } else {
- $errmsg .= ': ' . $stripefailurecode . ' - ' . $stripefailuremessage;
- $errmsg .= ($stripefailuredeclinecode ? ' - ' . $stripefailuredeclinecode : '');
- }
+ }
+ $paiement->paiementid = $paymentTypeId;
+ $paiement->num_paiement = '';
+ $paiement->num_payment = '';
+ // Add a comment with keyword 'SellYourSaas' in text. Used by trigger.
+ $paiement->note_public = 'StripeSepa payment ' . dol_print_date($now, 'standard') . ' using ' . $paymentmethod . ($ipaddress ? ' from ip ' . $ipaddress : '') . ' - Transaction ID = ' . $TRANSACTIONID;
+ $paiement->note_private = 'StripeSepa payment ' . dol_print_date($now, 'standard') . ' using ' . $paymentmethod . ($ipaddress ? ' from ip ' . $ipaddress : '') . ' - Transaction ID = ' . $TRANSACTIONID;
+ $paiement->ext_payment_id = $charge->id . ':' . $customer->id . '@' . $stripearrayofkeys['publishable_key'];
+ $paiement->ext_payment_site = 'stripe';
- $description = 'Stripe payment ERROR from doTakePaymentStripeForThirdparty: ' . $FULLTAG;
- $postactionmessages[] = $errmsg . ' (' . $stripearrayofkeys['publishable_key'] . ')';
- $this->errors[] = $errmsg;
- } else {
- dol_syslog('Successfuly charge card ' . $stripecard->id);
+ if (!$errorforinvoice) {
+ dol_syslog('* Record payment for invoice id ' . $this->id . '. It includes closing of invoice and regenerating document');
- $postactionmessages[] = 'Success to charge card (' . $charge->id . ' with ' . $stripearrayofkeys['publishable_key'] . ')';
-
- // Save a stripe payment was done in realy life so later we will be able to force a commit on recorded payments
- // even if in batch mode (method doTakePaymentStripe), we will always make all action in one transaction with a forced commit.
- $this->stripechargedone++;
-
- // Default description used for label of event. Will be overwrite by another value later.
- $description = 'Stripe payment OK (' . $charge->id . ') from doTakePaymentStripeForThirdparty: ' . $FULLTAG;
-
- $db = $this->db;
-
- $ipaddress = getUserRemoteIP();
-
- $TRANSACTIONID = $charge->id;
- $currency = $conf->currency;
- $paymentmethod = 'stripe';
- $emetteur_name = $charge->customer;
-
- // Same code than into paymentok.php...
-
- $paymentTypeId = 0;
- if ($paymentmethod == 'paybox') {
- $paymentTypeId = $conf->global->PAYBOX_PAYMENT_MODE_FOR_PAYMENTS;
- }
- if ($paymentmethod == 'paypal') {
- $paymentTypeId = $conf->global->PAYPAL_PAYMENT_MODE_FOR_PAYMENTS;
- }
- if ($paymentmethod == 'stripe') {
- $paymentTypeId = $conf->global->STRIPE_PAYMENT_MODE_FOR_PAYMENTS;
- }
- if (empty($paymentTypeId)) {
- //erics
- if ($sepaMode) {
- $paymentType = 'PRE';
- } else {
- $paymentType = $_SESSION["paymentType"];
- if (empty($paymentType)) {
- $paymentType = 'CB';
- }
- }
- $paymentTypeId = dol_getIdFromCode($this->db, $paymentType, 'c_paiement', 'code', 'id', 1);
- }
-
- $currencyCodeType = $currency;
-
- $ispostactionok = 1;
-
- // Creation of payment line
- include_once DOL_DOCUMENT_ROOT . '/compta/paiement/class/paiement.class.php';
- $paiement = new Paiement($this->db);
- $paiement->datepaye = $now;
- $paiement->date = $now;
- if ($currencyCodeType == $conf->currency) {
- $paiement->amounts = [$this->id => $amounttopay]; // Array with all payments dispatching with invoice id
- } else {
- $paiement->multicurrency_amounts = [$this->id => $amounttopay]; // Array with all payments dispatching
-
- $postactionmessages[] = 'Payment was done in a different currency than currency expected of company';
+ // This include closing invoices to 'paid' (and trigger including unsuspending) and regenerating document
+ $paiement_id = $paiement->create($user, 1);
+ if ($paiement_id < 0) {
+ $postactionmessages[] = $paiement->error . ($paiement->error ? ' ' : '') . join(" \n", $paiement->errors);
$ispostactionok = -1;
- // Not yet supported, so error
$error++;
$errorforinvoice++;
+ } else {
+ $postactionmessages[] = 'Payment created';
}
- $paiement->paiementid = $paymentTypeId;
- $paiement->num_paiement = '';
- $paiement->num_payment = '';
- // Add a comment with keyword 'SellYourSaas' in text. Used by trigger.
- $paiement->note_public = 'StripeSepa payment ' . dol_print_date($now, 'standard') . ' using ' . $paymentmethod . ($ipaddress ? ' from ip ' . $ipaddress : '') . ' - Transaction ID = ' . $TRANSACTIONID;
- $paiement->note_private = 'StripeSepa payment ' . dol_print_date($now, 'standard') . ' using ' . $paymentmethod . ($ipaddress ? ' from ip ' . $ipaddress : '') . ' - Transaction ID = ' . $TRANSACTIONID;
- $paiement->ext_payment_id = $charge->id . ':' . $customer->id . '@' . $stripearrayofkeys['publishable_key'];
- $paiement->ext_payment_site = 'stripe';
- if (!$errorforinvoice) {
- dol_syslog('* Record payment for invoice id ' . $this->id . '. It includes closing of invoice and regenerating document');
+ dol_syslog("The payment has been created for invoice id " . $this->id);
+ }
- // This include closing invoices to 'paid' (and trigger including unsuspending) and regenerating document
- $paiement_id = $paiement->create($user, 1);
- if ($paiement_id < 0) {
+ if (!$errorforinvoice && isModEnabled('banque')) {
+ dol_syslog('* Add payment to bank');
+
+ $bankaccountid = 0;
+ if ($paymentmethod == 'paybox') {
+ $bankaccountid = $conf->global->PAYBOX_BANK_ACCOUNT_FOR_PAYMENTS;
+ }
+ if ($paymentmethod == 'paypal') {
+ $bankaccountid = $conf->global->PAYPAL_BANK_ACCOUNT_FOR_PAYMENTS;
+ }
+ if ($paymentmethod == 'stripe') {
+ $bankaccountid = $conf->global->STRIPE_BANK_ACCOUNT_FOR_PAYMENTS;
+ }
+
+ if ($bankaccountid > 0) {
+ $label = '(CustomerInvoicePayment)';
+ if ($this->type == Facture::TYPE_CREDIT_NOTE) {
+ $label = '(CustomerInvoicePaymentBack)';
+ } // Refund of a credit note
+ $result = $paiement->addPaymentToBank($user, 'payment', $label, $bankaccountid, $emetteur_name, '');
+ if ($result < 0) {
$postactionmessages[] = $paiement->error . ($paiement->error ? ' ' : '') . join(" \n", $paiement->errors);
$ispostactionok = -1;
$error++;
$errorforinvoice++;
} else {
- $postactionmessages[] = 'Payment created';
+ $postactionmessages[] = 'Bank transaction of payment created (by doTakePaymentStripeForThirdparty)';
}
-
- dol_syslog("The payment has been created for invoice id " . $this->id);
- }
-
- if (!$errorforinvoice && isModEnabled('banque')) {
- dol_syslog('* Add payment to bank');
-
- $bankaccountid = 0;
- if ($paymentmethod == 'paybox') {
- $bankaccountid = $conf->global->PAYBOX_BANK_ACCOUNT_FOR_PAYMENTS;
- }
- if ($paymentmethod == 'paypal') {
- $bankaccountid = $conf->global->PAYPAL_BANK_ACCOUNT_FOR_PAYMENTS;
- }
- if ($paymentmethod == 'stripe') {
- $bankaccountid = $conf->global->STRIPE_BANK_ACCOUNT_FOR_PAYMENTS;
- }
-
- if ($bankaccountid > 0) {
- $label = '(CustomerInvoicePayment)';
- if ($this->type == Facture::TYPE_CREDIT_NOTE) {
- $label = '(CustomerInvoicePaymentBack)';
- } // Refund of a credit note
- $result = $paiement->addPaymentToBank($user, 'payment', $label, $bankaccountid, $emetteur_name, '');
- if ($result < 0) {
- $postactionmessages[] = $paiement->error . ($paiement->error ? ' ' : '') . join(" \n", $paiement->errors);
- $ispostactionok = -1;
- $error++;
- $errorforinvoice++;
- } else {
- $postactionmessages[] = 'Bank transaction of payment created (by doTakePaymentStripeForThirdparty)';
- }
- } else {
- $postactionmessages[] = 'Setup of bank account to use in module ' . $paymentmethod . ' was not set. No way to record the payment.';
- $ispostactionok = -1;
- $error++;
- $errorforinvoice++;
- }
- }
-
- if ($ispostactionok < 1) {
- $description = 'Stripe payment OK (' . $charge->id . ' - ' . $amounttopay . ' ' . $conf->currency . ') but post action KO from doTakePaymentStripeForThirdparty: ' . $FULLTAG;
} else {
- $description = 'Stripe payment+post action OK (' . $charge->id . ' - ' . $amounttopay . ' ' . $conf->currency . ') from doTakePaymentStripeForThirdparty: ' . $FULLTAG;
+ $postactionmessages[] = 'Setup of bank account to use in module ' . $paymentmethod . ' was not set. No way to record the payment.';
+ $ispostactionok = -1;
+ $error++;
+ $errorforinvoice++;
}
}
- $object = $invoice;
-
- // Send emails
- $labeltouse = 'InvoicePaymentSuccess';
- $sendemailtocustomer = 1;
-
- if (empty($charge) || $charge->status == 'failed') {
- $labeltouse = 'InvoicePaymentFailure';
- if ($noemailtocustomeriferror) {
- $sendemailtocustomer = 0;
- } // $noemailtocustomeriferror is set when error already reported on myaccount screen
- }
-
- // Track an event
- if (empty($charge) || $charge->status == 'failed') {
- $actioncode = 'PAYMENT_STRIPE_KO';
- $extraparams = $stripefailurecode;
- $extraparams .= (($extraparams && $stripefailuremessage) ? ' - ' : '') . $stripefailuremessage;
- $extraparams .= (($extraparams && $stripefailuredeclinecode) ? ' - ' : '') . $stripefailuredeclinecode;
+ if ($ispostactionok < 1) {
+ $description = 'Stripe payment OK (' . $charge->id . ' - ' . $amounttopay . ' ' . $conf->currency . ') but post action KO from doTakePaymentStripeForThirdparty: ' . $FULLTAG;
} else {
- $actioncode = 'PAYMENT_STRIPE_OK';
- $extraparams = '';
+ $description = 'Stripe payment+post action OK (' . $charge->id . ' - ' . $amounttopay . ' ' . $conf->currency . ') from doTakePaymentStripeForThirdparty: ' . $FULLTAG;
}
- } else {
- $error++;
- $errorforinvoice++;
- dol_syslog("No card or payment method found for this stripe customer " . $customer->id, LOG_WARNING);
- $this->errors[] = 'Failed to get card | payment method for stripe customer = ' . $customer->id;
-
- $labeltouse = 'InvoicePaymentFailure';
- $sendemailtocustomer = 1;
- if ($noemailtocustomeriferror) {
- $sendemailtocustomer = 0;
- } // $noemailtocustomeriferror is set when error already reported on myaccount screen
-
- $description = 'Failed to find or use the payment mode - no credit card defined for the customer account';
- $stripefailurecode = 'BADPAYMENTMODE';
- $stripefailuremessage = 'Failed to find or use the payment mode - no credit card defined for the customer account';
- $postactionmessages[] = $description . ' (' . $stripearrayofkeys['publishable_key'] . ')';
-
- $object = $invoice;
-
- $actioncode = 'PAYMENT_STRIPE_KO';
- $extraparams = '';
}
- } else {
- // If error because payment was canceled for a logical reason, we do nothing (no email and no event added)
- $labeltouse = '';
- $sendemailtocustomer = 0;
-
- $description = '';
- $stripefailurecode = '';
- $stripefailuremessage = '';
$object = $invoice;
- $actioncode = '';
+ // Send emails
+ $labeltouse = 'InvoicePaymentSuccess';
+ $sendemailtocustomer = 1;
+
+ if (empty($charge) || $charge->status == 'failed') {
+ $labeltouse = 'InvoicePaymentFailure';
+ if ($noemailtocustomeriferror) {
+ $sendemailtocustomer = 0;
+ } // $noemailtocustomeriferror is set when error already reported on myaccount screen
+ }
+
+ // Track an event
+ if (empty($charge) || $charge->status == 'failed') {
+ $actioncode = 'PAYMENT_STRIPE_KO';
+ $extraparams = $stripefailurecode;
+ $extraparams .= (($extraparams && $stripefailuremessage) ? ' - ' : '') . $stripefailuremessage;
+ $extraparams .= (($extraparams && $stripefailuredeclinecode) ? ' - ' : '') . $stripefailuredeclinecode;
+ } else {
+ $actioncode = 'PAYMENT_STRIPE_OK';
+ $extraparams = '';
+ }
+ } else {
+ $error++;
+ $errorforinvoice++;
+ dol_syslog("No card or payment method found for this stripe customer " . $customer->id, LOG_WARNING);
+ $this->errors[] = 'Failed to get card | payment method for stripe customer = ' . $customer->id;
+
+ $labeltouse = 'InvoicePaymentFailure';
+ $sendemailtocustomer = 1;
+ if ($noemailtocustomeriferror) {
+ $sendemailtocustomer = 0;
+ } // $noemailtocustomeriferror is set when error already reported on myaccount screen
+
+ $description = 'Failed to find or use the payment mode - no credit card defined for the customer account';
+ $stripefailurecode = 'BADPAYMENTMODE';
+ $stripefailuremessage = 'Failed to find or use the payment mode - no credit card defined for the customer account';
+ $postactionmessages[] = $description . ' (' . $stripearrayofkeys['publishable_key'] . ')';
+
+ $object = $invoice;
+
+ $actioncode = 'PAYMENT_STRIPE_KO';
$extraparams = '';
}
- } else { // Else of the if ($resultthirdparty > 0 && ! empty($customer)) {
- if ($resultthirdparty <= 0) {
- dol_syslog('SellYourSaasUtils Failed to load customer for thirdparty_id = ' . $thirdparty->id, LOG_WARNING);
- $this->errors[] = 'Failed to load customer for thirdparty_id = ' . $thirdparty->id;
- } else { // $customer stripe not found
- dol_syslog('SellYourSaasUtils Failed to get Stripe customer id for thirdparty_id = ' . $thirdparty->id . " in mode " . $servicestatus . " in Stripe env " . $stripearrayofkeysbyenv[$servicestatus]['publishable_key'], LOG_WARNING);
- $this->errors[] = 'Failed to get Stripe customer id for thirdparty_id = ' . $thirdparty->id . " in mode " . $servicestatus . " in Stripe env " . $stripearrayofkeysbyenv[$servicestatus]['publishable_key'];
- }
- $error++;
- $errorforinvoice++;
+ } else {
+ // If error because payment was canceled for a logical reason, we do nothing (no email and no event added)
+ $labeltouse = '';
+ $sendemailtocustomer = 0;
- $labeltouse = 'InvoicePaymentFailure';
- $sendemailtocustomer = 1;
- if ($noemailtocustomeriferror) {
- $sendemailtocustomer = 0;
- } // $noemailtocustomeriferror is set when error already reported on myaccount screen
-
- $description = 'Failed to find or use your payment mode (no payment mode for this customer id)';
- $stripefailurecode = 'BADPAYMENTMODE';
- $stripefailuremessage = 'Failed to find or use your payment mode (no payment mode for this customer id)';
- $postactionmessages = [];
+ $description = '';
+ $stripefailurecode = '';
+ $stripefailuremessage = '';
$object = $invoice;
- $actioncode = 'PAYMENT_STRIPE_KO';
+ $actioncode = '';
$extraparams = '';
}
-
- // Send email + create action after
- if ($sendemailtocustomer && $labeltouse) {
- dol_syslog("* Send email with result of payment - " . $labeltouse);
-
- // Set output language
- $outputlangs = new Translate('', $conf);
- $outputlangs->setDefaultLang(empty($object->thirdparty->default_lang) ? $mysoc->default_lang : $object->thirdparty->default_lang);
- $outputlangs->loadLangs(["main", "members", "bills"]);
-
- // Get email content from templae
- $arraydefaultmessage = null;
-
- include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
- $formmail = new FormMail($this->db);
-
- if (!empty($labeltouse)) {
- $arraydefaultmessage = $formmail->getEMailTemplate($this->db, 'facture_send', $user, $outputlangs, 0, 1, $labeltouse);
- }
-
- if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
- $subject = $arraydefaultmessage->topic;
- $msg = $arraydefaultmessage->content;
- }
-
- $substitutionarray = getCommonSubstitutionArray($outputlangs, 0, null, $object);
-
- //$substitutionarray['__SELLYOURSAAS_PAYMENT_ERROR_DESC__'] = $stripefailurecode . ' ' . $stripefailuremessage;
-
- complete_substitutions_array($substitutionarray, $outputlangs, $object);
-
- // Set the property ->ref_customer with ref_customer of contract so __REF_CLIENT__ will be replaced in email content
- // Search contract linked to invoice
- $foundcontract = null;
- $this->fetchObjectLinked();
- if (is_array($this->linkedObjects['contrat']) && count($this->linkedObjects['contrat']) > 0) {
- //dol_sort_array($object->linkedObjects['facture'], 'date');
- foreach ($this->linkedObjects['contrat'] as $idcontract => $contract) {
- $substitutionarray['__CONTRACT_REF__'] = $contract->ref_customer;
- $substitutionarray['__REFCLIENT__'] = $contract->ref_customer; // For backward compatibility
- $substitutionarray['__REF_CLIENT__'] = $contract->ref_customer;
- $foundcontract = $contract;
- break;
- }
- }
-
- dol_syslog('__DIRECTDOWNLOAD_URL_INVOICE__=' . $substitutionarray['__DIRECTDOWNLOAD_URL_INVOICE__']);
-
- //erics - erreur de réécriture de l'url de téléchargement direct de la facture ... le lien de base est le bon
- //on cherche donc d'ou vien le pb ...
- //$urlforsellyoursaasaccount = getRootUrlForAccount($foundcontract);
- // if ($urlforsellyoursaasaccount) {
- // $tmpforurl = preg_replace('/.*document.php/', '', $substitutionarray['__DIRECTDOWNLOAD_URL_INVOICE__']);
- // if ($tmpforurl) {
- // dol_syslog('__DIRECTDOWNLOAD_URL_INVOICE__ cas 1, urlforsellyoursaasaccount=' . $urlforsellyoursaasaccount);
- // // $substitutionarray['__DIRECTDOWNLOAD_URL_INVOICE__'] = $urlforsellyoursaasaccount . '/source/document.php' . $tmpforurl;
- // } else {
- // dol_syslog('__DIRECTDOWNLOAD_URL_INVOICE__ cas 2, urlforsellyoursaasaccount=' . $urlforsellyoursaasaccount);
- // // $substitutionarray['__DIRECTDOWNLOAD_URL_INVOICE__'] = $urlforsellyoursaasaccount;
- // }
- // }
-
- $subjecttosend = make_substitutions($subject, $substitutionarray, $outputlangs);
- $texttosend = make_substitutions($msg, $substitutionarray, $outputlangs);
-
- // Attach a file ?
- $file = '';
- $listofpaths = [];
- $listofnames = [];
- $listofmimes = [];
- if (is_object($invoice)) {
- $invoicediroutput = $conf->facture->dir_output;
- //erics - choix du PDF a joindre aux mails
- $fileparams = dol_most_recent_file($invoicediroutput . '/' . $this->ref, preg_quote($this->ref, '/') . '[^\-]+*.pdf');
- $file = $fileparams['fullname'];
- //$file = $invoicediroutput . '/' . $this->ref . '/' . $this->ref . '.pdf';
- // $file = ''; // Disable attachment of invoice in emails
-
- if ($file) {
- $listofpaths = [$file];
- $listofnames = [basename($file)];
- $listofmimes = [dol_mimetype($file)];
- }
- }
- $from = "";//$conf->global->SELLYOURSAAS_NOREPLY_EMAIL;
-
- $trackid = 'inv' . $this->id;
- $moreinheader = 'X-Dolibarr-Info: doTakeStripePaymentForThirdParty' . "\r\n";
-
- // Send email (substitutionarray must be done just before this)
- include_once DOL_DOCUMENT_ROOT . '/core/class/CMailFile.class.php';
- $mailfile = new CMailFile($subjecttosend, $this->thirdparty->email, $from, $texttosend, $listofpaths, $listofmimes, $listofnames, '', '', 0, -1, '', '', $trackid, $moreinheader);
- if ($mailfile->sendfile()) {
- $result = 1;
- } else {
- $this->error = $langs->trans("ErrorFailedToSendMail", $from, $this->thirdparty->email) . '. ' . $mailfile->error;
- $result = -1;
- }
-
- if ($result < 0) {
- $errmsg = $this->error;
- $postactionmessages[] = $errmsg;
- $ispostactionok = -1;
- } else {
- if ($file) {
- $postactionmessages[] = 'Email sent to thirdparty (to ' . $this->thirdparty->email . ' with invoice document attached: ' . $file . ', language = ' . $outputlangs->defaultlang . ')';
- } else {
- $postactionmessages[] = 'Email sent to thirdparty (to ' . $this->thirdparty->email . ' without any attached document, language = ' . $outputlangs->defaultlang . ')';
- }
- }
+ } else { // Else of the if ($resultthirdparty > 0 && ! empty($customer)) {
+ if ($resultthirdparty <= 0) {
+ dol_syslog('SellYourSaasUtils Failed to load customer for thirdparty_id = ' . $thirdparty->id, LOG_WARNING);
+ $this->errors[] = 'Failed to load customer for thirdparty_id = ' . $thirdparty->id;
+ } else { // $customer stripe not found
+ dol_syslog('SellYourSaasUtils Failed to get Stripe customer id for thirdparty_id = ' . $thirdparty->id . " in mode " . $servicestatus . " in Stripe env " . $stripearrayofkeysbyenv[$servicestatus]['publishable_key'], LOG_WARNING);
+ $this->errors[] = 'Failed to get Stripe customer id for thirdparty_id = ' . $thirdparty->id . " in mode " . $servicestatus . " in Stripe env " . $stripearrayofkeysbyenv[$servicestatus]['publishable_key'];
}
-
- if ($description) {
- dol_syslog("* Record event for payment result - " . $description);
- require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php';
-
- // Insert record of payment (success or error)
- $actioncomm = new ActionComm($this->db);
-
- $actioncomm->type_code = 'AC_OTH_AUTO'; // Type of event ('AC_OTH', 'AC_OTH_AUTO', 'AC_XXX'...)
- $actioncomm->code = 'AC_' . $actioncode;
- $actioncomm->label = $description;
- $actioncomm->note_private = join(",\n", $postactionmessages);
- $actioncomm->fk_project = $this->fk_project;
- $actioncomm->datep = $now;
- $actioncomm->datef = $now;
- $actioncomm->percentage = -1; // Not applicable
- $actioncomm->socid = $thirdparty->id;
- $actioncomm->contactid = 0;
- $actioncomm->authorid = $user->id; // User saving action
- $actioncomm->userownerid = $user->id; // Owner of action
- // Fields when action is a real email (content is already into note)
- /*$actioncomm->email_msgid = $object->email_msgid;
- $actioncomm->email_from = $object->email_from;
- $actioncomm->email_sender= $object->email_sender;
- $actioncomm->email_to = $object->email_to;
- $actioncomm->email_tocc = $object->email_tocc;
- $actioncomm->email_tobcc = $object->email_tobcc;
- $actioncomm->email_subject = $object->email_subject;
- $actioncomm->errors_to = $object->errors_to;*/
- $actioncomm->fk_element = $this->id;
- $actioncomm->elementtype = $this->element;
- $actioncomm->extraparams = dol_trunc($extraparams, 250);
-
- $actioncomm->create($user);
- }
-
- $this->description = $description;
- $this->postactionmessages = $postactionmessages;
- } catch (Exception $e) {
$error++;
$errorforinvoice++;
- dol_syslog('Error ' . $e->getMessage(), LOG_ERR);
- $this->errors[] = 'Error ' . $e->getMessage();
+
+ $labeltouse = 'InvoicePaymentFailure';
+ $sendemailtocustomer = 1;
+ if ($noemailtocustomeriferror) {
+ $sendemailtocustomer = 0;
+ } // $noemailtocustomeriferror is set when error already reported on myaccount screen
+
+ $description = 'Failed to find or use your payment mode (no payment mode for this customer id)';
+ $stripefailurecode = 'BADPAYMENTMODE';
+ $stripefailuremessage = 'Failed to find or use your payment mode (no payment mode for this customer id)';
+ $postactionmessages = [];
+
+ $object = $invoice;
+
+ $actioncode = 'PAYMENT_STRIPE_KO';
+ $extraparams = '';
}
- } else { // If remain to pay is null
+
+ // Send email + create action after
+ if ($sendemailtocustomer && $labeltouse) {
+ dol_syslog("* Send email with result of payment - " . $labeltouse);
+
+ // Set output language
+ $outputlangs = new Translate('', $conf);
+ $outputlangs->setDefaultLang(empty($object->thirdparty->default_lang) ? $mysoc->default_lang : $object->thirdparty->default_lang);
+ $outputlangs->loadLangs(["main", "members", "bills"]);
+
+ // Get email content from templae
+ $arraydefaultmessage = null;
+
+ include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
+ $formmail = new FormMail($this->db);
+
+ if (!empty($labeltouse)) {
+ $arraydefaultmessage = $formmail->getEMailTemplate($this->db, 'facture_send', $user, $outputlangs, 0, 1, $labeltouse);
+ }
+
+ if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
+ $subject = $arraydefaultmessage->topic;
+ $msg = $arraydefaultmessage->content;
+ }
+
+ $substitutionarray = getCommonSubstitutionArray($outputlangs, 0, null, $object);
+
+ //$substitutionarray['__SELLYOURSAAS_PAYMENT_ERROR_DESC__'] = $stripefailurecode . ' ' . $stripefailuremessage;
+
+ complete_substitutions_array($substitutionarray, $outputlangs, $object);
+
+ // Set the property ->ref_customer with ref_customer of contract so __REF_CLIENT__ will be replaced in email content
+ // Search contract linked to invoice
+ $foundcontract = null;
+ $this->fetchObjectLinked();
+ if (is_array($this->linkedObjects['contrat']) && count($this->linkedObjects['contrat']) > 0) {
+ //dol_sort_array($object->linkedObjects['facture'], 'date');
+ foreach ($this->linkedObjects['contrat'] as $idcontract => $contract) {
+ $substitutionarray['__CONTRACT_REF__'] = $contract->ref_customer;
+ $substitutionarray['__REFCLIENT__'] = $contract->ref_customer; // For backward compatibility
+ $substitutionarray['__REF_CLIENT__'] = $contract->ref_customer;
+ $foundcontract = $contract;
+ break;
+ }
+ }
+
+ dol_syslog('__DIRECTDOWNLOAD_URL_INVOICE__=' . $substitutionarray['__DIRECTDOWNLOAD_URL_INVOICE__']);
+
+ //erics - erreur de réécriture de l'url de téléchargement direct de la facture ... le lien de base est le bon
+ //on cherche donc d'ou vien le pb ...
+ //$urlforsellyoursaasaccount = getRootUrlForAccount($foundcontract);
+ // if ($urlforsellyoursaasaccount) {
+ // $tmpforurl = preg_replace('/.*document.php/', '', $substitutionarray['__DIRECTDOWNLOAD_URL_INVOICE__']);
+ // if ($tmpforurl) {
+ // dol_syslog('__DIRECTDOWNLOAD_URL_INVOICE__ cas 1, urlforsellyoursaasaccount=' . $urlforsellyoursaasaccount);
+ // // $substitutionarray['__DIRECTDOWNLOAD_URL_INVOICE__'] = $urlforsellyoursaasaccount . '/source/document.php' . $tmpforurl;
+ // } else {
+ // dol_syslog('__DIRECTDOWNLOAD_URL_INVOICE__ cas 2, urlforsellyoursaasaccount=' . $urlforsellyoursaasaccount);
+ // // $substitutionarray['__DIRECTDOWNLOAD_URL_INVOICE__'] = $urlforsellyoursaasaccount;
+ // }
+ // }
+
+ $subjecttosend = make_substitutions($subject, $substitutionarray, $outputlangs);
+ $texttosend = make_substitutions($msg, $substitutionarray, $outputlangs);
+
+ // Attach a file ?
+ $file = '';
+ $listofpaths = [];
+ $listofnames = [];
+ $listofmimes = [];
+ if (is_object($invoice)) {
+ $invoicediroutput = $conf->facture->dir_output;
+ //erics - choix du PDF a joindre aux mails
+ $fileparams = dol_most_recent_file($invoicediroutput . '/' . $this->ref, preg_quote($this->ref, '/') . '[^\-]+*.pdf');
+ $file = $fileparams['fullname'];
+ //$file = $invoicediroutput . '/' . $this->ref . '/' . $this->ref . '.pdf';
+ // $file = ''; // Disable attachment of invoice in emails
+
+ if ($file) {
+ $listofpaths = [$file];
+ $listofnames = [basename($file)];
+ $listofmimes = [dol_mimetype($file)];
+ }
+ }
+ $from = "";//$conf->global->SELLYOURSAAS_NOREPLY_EMAIL;
+
+ $trackid = 'inv' . $this->id;
+ $moreinheader = 'X-Dolibarr-Info: makeStripeSepaRequest' . "\r\n";
+
+ // Send email (substitutionarray must be done just before this)
+ include_once DOL_DOCUMENT_ROOT . '/core/class/CMailFile.class.php';
+ $mailfile = new CMailFile($subjecttosend, $this->thirdparty->email, $from, $texttosend, $listofpaths, $listofmimes, $listofnames, '', '', 0, -1, '', '', $trackid, $moreinheader);
+ if ($mailfile->sendfile()) {
+ $result = 1;
+ } else {
+ $this->error = $langs->trans("ErrorFailedToSendMail", $from, $this->thirdparty->email) . '. ' . $mailfile->error;
+ $result = -1;
+ }
+
+ if ($result < 0) {
+ $errmsg = $this->error;
+ $postactionmessages[] = $errmsg;
+ $ispostactionok = -1;
+ } else {
+ if ($file) {
+ $postactionmessages[] = 'Email sent to thirdparty (to ' . $this->thirdparty->email . ' with invoice document attached: ' . $file . ', language = ' . $outputlangs->defaultlang . ')';
+ } else {
+ $postactionmessages[] = 'Email sent to thirdparty (to ' . $this->thirdparty->email . ' without any attached document, language = ' . $outputlangs->defaultlang . ')';
+ }
+ }
+ }
+
+ if ($description) {
+ dol_syslog("* Record event for payment result - " . $description);
+ require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php';
+
+ // Insert record of payment (success or error)
+ $actioncomm = new ActionComm($this->db);
+
+ $actioncomm->type_code = 'AC_OTH_AUTO'; // Type of event ('AC_OTH', 'AC_OTH_AUTO', 'AC_XXX'...)
+ $actioncomm->code = 'AC_' . $actioncode;
+ $actioncomm->label = $description;
+ $actioncomm->note_private = join(",\n", $postactionmessages);
+ $actioncomm->fk_project = $this->fk_project;
+ $actioncomm->datep = $now;
+ $actioncomm->datef = $now;
+ $actioncomm->percentage = -1; // Not applicable
+ $actioncomm->socid = $thirdparty->id;
+ $actioncomm->contactid = 0;
+ $actioncomm->authorid = $user->id; // User saving action
+ $actioncomm->userownerid = $user->id; // Owner of action
+ // Fields when action is a real email (content is already into note)
+ /*$actioncomm->email_msgid = $object->email_msgid;
+ $actioncomm->email_from = $object->email_from;
+ $actioncomm->email_sender= $object->email_sender;
+ $actioncomm->email_to = $object->email_to;
+ $actioncomm->email_tocc = $object->email_tocc;
+ $actioncomm->email_tobcc = $object->email_tobcc;
+ $actioncomm->email_subject = $object->email_subject;
+ $actioncomm->errors_to = $object->errors_to;*/
+ $actioncomm->fk_element = $this->id;
+ $actioncomm->elementtype = $this->element;
+ $actioncomm->extraparams = dol_trunc($extraparams, 250);
+
+ $actioncomm->create($user);
+ }
+
+ $this->description = $description;
+ $this->postactionmessages = $postactionmessages;
+ } catch (Exception $e) {
$error++;
$errorforinvoice++;
- dol_syslog("Remain to pay is null for the invoice " . $this->id . " " . $this->ref . ". Why is the invoice not classified 'Paid' ?", LOG_WARNING);
- $this->errors[] = "Remain to pay is null for the invoice " . $this->id . " " . $this->ref . ". Why is the invoice not classified 'Paid' ?";
+ dol_syslog('Error ' . $e->getMessage(), LOG_ERR);
+ $this->errors[] = 'Error ' . $e->getMessage();
}
+ } else { // If remain to pay is null
+ $error++;
+ $errorforinvoice++;
+ dol_syslog("Remain to pay is null for the invoice " . $this->id . " " . $this->ref . ". Why is the invoice not classified 'Paid' ?", LOG_WARNING);
+ $this->errors[] = "Remain to pay is null for the invoice " . $this->id . " " . $this->ref . ". Why is the invoice not classified 'Paid' ?";
+ }
- $sql = "INSERT INTO '.MAIN_DB_PREFIX.'prelevement_facture_demande(";
- $sql .= "fk_facture, ";
- $sql .= " amount, date_demande, fk_user_demande, ext_payment_id, ext_payment_site, sourcetype, entity)";
- $sql .= " VALUES (".$this->id;
- $sql .= ",".((float) price2num($amount));
- $sql .= ",'".$this->db->idate($now)."'";
- $sql .= ",".((int) $fuser->id);
- $sql .= ",'".$this->db->escape($stripe_id)."'";
- $sql .= ",'".$this->db->escape($stripe_uri)."'";
- $sql .= ",'".$this->db->escape($sourcetype)."'";
- $sql .= ",".$conf->entity;
- $sql .= ")";
+ $sql = "INSERT INTO '.MAIN_DB_PREFIX.'prelevement_facture_demande(";
+ $sql .= "fk_facture, ";
+ $sql .= " amount, date_demande, fk_user_demande, ext_payment_id, ext_payment_site, sourcetype, entity)";
+ $sql .= " VALUES (".$this->id;
+ $sql .= ",".((float) price2num($amount));
+ $sql .= ",'".$this->db->idate($now)."'";
+ $sql .= ",".((int) $fuser->id);
+ $sql .= ",'".$this->db->escape($stripe_id)."'";
+ $sql .= ",'".$this->db->escape($stripe_uri)."'";
+ $sql .= ",'".$this->db->escape($sourcetype)."'";
+ $sql .= ",".$conf->entity;
+ $sql .= ")";
- dol_syslog(get_class($this)."::demande_prelevement_stripe", LOG_DEBUG);
- $resql = $this->db->query($sql);
- if (!$resql) {
- $this->error = $this->db->lasterror();
- dol_syslog(get_class($this).'::demande_prelevement_stripe Erreur');
- $error++;
- }
- } else {
- $this->error = 'WithdrawRequestErrorNilAmount';
- dol_syslog(get_class($this).'::demande_prelevement_stripe WithdrawRequestErrorNilAmount');
+ dol_syslog(get_class($this)."::makeStripeSepaRequest", LOG_DEBUG);
+ $resql = $this->db->query($sql);
+ if (!$resql) {
+ $this->error = $this->db->lasterror();
+ dol_syslog(get_class($this).'::makeStripeSepaRequest Erreur');
$error++;
}
-
- if (!$error) {
- // Force payment mode of invoice to withdraw
- $payment_mode_id = dol_getIdFromCode($this->db, ($type == 'bank-transfer' ? 'VIR' : 'PRE'), 'c_paiement', 'code', 'id', 1);
- if ($payment_mode_id > 0) {
- $result = $this->setPaymentMethods($payment_mode_id);
- }
- }
-
- if ($error) {
- return -1;
- }
- return 1;
} else {
- $this->error = "A request already exists";
- dol_syslog(get_class($this).'::demande_prelevement_stripe Impossible de creer une demande, demande deja en cours');
- return 0;
+ $this->error = 'WithdrawRequestErrorNilAmount';
+ dol_syslog(get_class($this).'::makeStripeSepaRequest WithdrawRequestErrorNilAmount');
+ $error++;
}
+
+ if (!$error) {
+ // Force payment mode of invoice to withdraw
+ $payment_mode_id = dol_getIdFromCode($this->db, ($type == 'bank-transfer' ? 'VIR' : 'PRE'), 'c_paiement', 'code', 'id', 1);
+ if ($payment_mode_id > 0) {
+ $result = $this->setPaymentMethods($payment_mode_id);
+ }
+ }
+
+ if ($error) {
+ return -1;
+ }
+ return 1;
} else {
$this->error = $this->db->error();
- dol_syslog(get_class($this).'::demande_prelevement_stripe Erreur -2');
+ dol_syslog(get_class($this).'::makeStripeSepaRequest Erreur -2');
return -2;
}
} else {
$this->error = "Status of invoice does not allow this";
- dol_syslog(get_class($this)."::demande_prelevement_stripe ".$this->error." $this->statut, $this->paye, $this->mode_reglement_id");
+ dol_syslog(get_class($this)."::makeStripeSepaRequest ".$this->error." $this->statut, $this->paye, $this->mode_reglement_id");
return -3;
}
}
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index 7224949a70b..508129ba141 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -4410,7 +4410,7 @@ abstract class CommonObject
$nb_rows_affected = $this->db->affected_rows($resql); // should be 1 or 0 if status was already correct
- if ($nb_rows_affected >= 0) {
+ if ($nb_rows_affected > 0) {
if (empty($trigkey)) {
// Try to guess trigkey (for backward compatibility, now we should have trigkey defined into the call of setStatus)
if ($this->element == 'supplier_proposal' && $status == 2) {
diff --git a/htdocs/core/class/discount.class.php b/htdocs/core/class/discount.class.php
index dff1383a629..052d5ae7e1c 100644
--- a/htdocs/core/class/discount.class.php
+++ b/htdocs/core/class/discount.class.php
@@ -559,7 +559,7 @@ class DiscountAbsolute
/**
* Return amount (with tax) of all deposits invoices used by invoice as a payment.
- * Should always be empty, except if option FACTURE_DEPOSITS_ARE_JUST_PAYMENTS is on (not recommended).
+ * Should always be empty, except if option FACTURE_DEPOSITS_ARE_JUST_PAYMENTS or FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS is on (not recommended).
*
* @param CommonInvoice $invoice Object invoice (customer of supplier)
* @param int $multicurrency 1=Return multicurrency_amount instead of amount. TODO Add a mode multicurrency = -1 to return array with amount + multicurrency amount
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index e1859d61653..1479717b411 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -673,7 +673,7 @@ class Form
if ($direction < 0) {
$s .= '<'.$tag.$paramfortooltipimg;
if ($tag == 'td') {
- $s .= ' class=valigntop" width="14"';
+ $s .= ' class="valigntop" width="14"';
}
$s .= '>'.$textfordialog.$img.''.$tag.'>';
}
@@ -5759,7 +5759,7 @@ class Form
print '';
print '
';
if (!empty($discount_type)) {
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
if (!$filter || $filter == "fk_invoice_supplier_source IS NULL") {
$translationKey = 'HasAbsoluteDiscountFromSupplier'; // If we want deposit to be substracted to payments only and not to total of final invoice
} else {
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index 334418833b4..d7eaa971a08 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -966,13 +966,15 @@ function sanitizeVal($out = '', $check = 'alphanohtml', $filter = null, $options
break;
case 'custom':
- if (empty($filter)) {
- return 'BadParameterForGETPOST - Param 3 of sanitizeVal()';
+ if (!empty($out)) {
+ if (empty($filter)) {
+ return 'BadParameterForGETPOST - Param 3 of sanitizeVal()';
+ }
+ /*if (empty($options)) {
+ return 'BadParameterForGETPOST - Param 4 of sanitizeVal()';
+ }*/
+ $out = filter_var($out, $filter, $options);
}
- if (empty($options)) {
- return 'BadParameterForGETPOST - Param 4 of sanitizeVal()';
- }
- $out = filter_var($out, $filter, $options);
break;
}
@@ -9133,10 +9135,10 @@ function getLanguageCodeFromCountryCode($countrycode)
* @param string $type Value for object where objectvalue can be
* 'thirdparty' to add a tab in third party view
* 'intervention' to add a tab in intervention view
- * 'supplier_order' to add a tab in supplier order view
- * 'supplier_invoice' to add a tab in supplier invoice view
- * 'invoice' to add a tab in customer invoice view
- * 'order' to add a tab in customer order view
+ * 'supplier_order' to add a tab in purchase order view
+ * 'supplier_invoice' to add a tab in purchase invoice view
+ * 'invoice' to add a tab in sales invoice view
+ * 'order' to add a tab in sales order view
* 'contract' to add a tabl in contract view
* 'product' to add a tab in product view
* 'propal' to add a tab in propal view
diff --git a/htdocs/core/lib/order.lib.php b/htdocs/core/lib/order.lib.php
index 5c77f8ab821..a106bf62369 100644
--- a/htdocs/core/lib/order.lib.php
+++ b/htdocs/core/lib/order.lib.php
@@ -189,7 +189,7 @@ function order_admin_prepare_head()
/**
- * Return a HTML table that contains a pie chart of customer orders
+ * Return a HTML table that contains a pie chart of sales orders
*
* @param int $socid (Optional) Show only results from the customer with this id
* @return string A HTML table that contains a pie chart of customer invoices
diff --git a/htdocs/core/lib/product.lib.php b/htdocs/core/lib/product.lib.php
index a9f82e3776d..a1bccc1dd28 100644
--- a/htdocs/core/lib/product.lib.php
+++ b/htdocs/core/lib/product.lib.php
@@ -448,7 +448,7 @@ function show_stats_for_company($product, $socid)
print '';
print '';
}
- // Customer orders
+ // Sales orders
if (isModEnabled('commande') && $user->rights->commande->lire) {
$nblines++;
$ret = $product->load_stats_commande($socid);
diff --git a/htdocs/core/lib/tax.lib.php b/htdocs/core/lib/tax.lib.php
index a0602dfd74e..29ced3591a1 100644
--- a/htdocs/core/lib/tax.lib.php
+++ b/htdocs/core/lib/tax.lib.php
@@ -174,10 +174,18 @@ function tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $di
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql .= " WHERE f.entity IN (".getEntity($invoicetable).")";
$sql .= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely)
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
- $sql .= " AND f.type IN (0,1,2,5)";
+ if ($direction == 'buy') {
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $sql .= " AND f.type IN (0,1,2,5)";
+ } else {
+ $sql .= " AND f.type IN (0,1,2,3,5)";
+ }
} else {
- $sql .= " AND f.type IN (0,1,2,3,5)";
+ if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $sql .= " AND f.type IN (0,1,2,5)";
+ } else {
+ $sql .= " AND f.type IN (0,1,2,3,5)";
+ }
}
$sql .= " AND f.rowid = d.".$fk_facture;
$sql .= " AND s.rowid = f.fk_soc";
@@ -222,10 +230,18 @@ function tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $di
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql .= " WHERE f.entity IN (".getEntity($invoicetable).")";
$sql .= " AND f.fk_statut in (1,2)"; // Paid (partially or completely)
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
- $sql .= " AND f.type IN (0,1,2,5)";
+ if ($direction == 'buy') {
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $sql .= " AND f.type IN (0,1,2,5)";
+ } else {
+ $sql .= " AND f.type IN (0,1,2,3,5)";
+ }
} else {
- $sql .= " AND f.type IN (0,1,2,3,5)";
+ if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $sql .= " AND f.type IN (0,1,2,5)";
+ } else {
+ $sql .= " AND f.type IN (0,1,2,3,5)";
+ }
}
$sql .= " AND f.rowid = d.".$fk_facture;
$sql .= " AND s.rowid = f.fk_soc";
@@ -359,10 +375,18 @@ function tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $di
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql .= " WHERE f.entity IN (".getEntity($invoicetable).")";
$sql .= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely)
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
- $sql .= " AND f.type IN (0,1,2,5)";
+ if ($direction == 'buy') {
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $sql .= " AND f.type IN (0,1,2,5)";
+ } else {
+ $sql .= " AND f.type IN (0,1,2,3,5)";
+ }
} else {
- $sql .= " AND f.type IN (0,1,2,3,5)";
+ if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $sql .= " AND f.type IN (0,1,2,5)";
+ } else {
+ $sql .= " AND f.type IN (0,1,2,3,5)";
+ }
}
$sql .= " AND f.rowid = d.".$fk_facture;
$sql .= " AND s.rowid = f.fk_soc";
@@ -407,10 +431,18 @@ function tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $di
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql .= " WHERE f.entity IN (".getEntity($invoicetable).")";
$sql .= " AND f.fk_statut in (1,2)"; // Paid (partially or completely)
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
- $sql .= " AND f.type IN (0,1,2,5)";
+ if ($direction == 'buy') {
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $sql .= " AND f.type IN (0,1,2,5)";
+ } else {
+ $sql .= " AND f.type IN (0,1,2,3,5)";
+ }
} else {
- $sql .= " AND f.type IN (0,1,2,3,5)";
+ if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $sql .= " AND f.type IN (0,1,2,5)";
+ } else {
+ $sql .= " AND f.type IN (0,1,2,3,5)";
+ }
}
$sql .= " AND f.rowid = d.".$fk_facture;
$sql .= " AND s.rowid = f.fk_soc";
@@ -730,10 +762,18 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql .= " WHERE f.entity IN (".getEntity($invoicetable).")";
$sql .= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely)
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
- $sql .= " AND f.type IN (0,1,2,5)";
+ if ($direction == 'buy') {
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $sql .= " AND f.type IN (0,1,2,5)";
+ } else {
+ $sql .= " AND f.type IN (0,1,2,3,5)";
+ }
} else {
- $sql .= " AND f.type IN (0,1,2,3,5)";
+ if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $sql .= " AND f.type IN (0,1,2,5)";
+ } else {
+ $sql .= " AND f.type IN (0,1,2,3,5)";
+ }
}
if ($y && $m) {
$sql .= " AND f.datef >= '".$db->idate(dol_get_first_day($y, $m, false))."'";
@@ -776,10 +816,18 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql .= " WHERE f.entity IN (".getEntity($invoicetable).")";
$sql .= " AND f.fk_statut in (1,2)"; // Paid (partially or completely)
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
- $sql .= " AND f.type IN (0,1,2,5)";
+ if ($direction == 'buy') {
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $sql .= " AND f.type IN (0,1,2,5)";
+ } else {
+ $sql .= " AND f.type IN (0,1,2,3,5)";
+ }
} else {
- $sql .= " AND f.type IN (0,1,2,3,5)";
+ if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $sql .= " AND f.type IN (0,1,2,5)";
+ } else {
+ $sql .= " AND f.type IN (0,1,2,3,5)";
+ }
}
if ($y && $m) {
$sql .= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, $m, false))."'";
@@ -915,10 +963,18 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql .= " WHERE f.entity IN (".getEntity($invoicetable).")";
$sql .= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely)
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
- $sql .= " AND f.type IN (0,1,2,5)";
+ if ($direction == 'buy') {
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $sql .= " AND f.type IN (0,1,2,5)";
+ } else {
+ $sql .= " AND f.type IN (0,1,2,3,5)";
+ }
} else {
- $sql .= " AND f.type IN (0,1,2,3,5)";
+ if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $sql .= " AND f.type IN (0,1,2,5)";
+ } else {
+ $sql .= " AND f.type IN (0,1,2,3,5)";
+ }
}
if ($y && $m) {
$sql .= " AND f.datef >= '".$db->idate(dol_get_first_day($y, $m, false))."'";
@@ -961,10 +1017,18 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql .= " WHERE f.entity IN (".getEntity($invoicetable).")";
$sql .= " AND f.fk_statut in (1,2)"; // Paid (partially or completely)
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
- $sql .= " AND f.type IN (0,1,2,5)";
+ if ($direction == 'buy') {
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $sql .= " AND f.type IN (0,1,2,5)";
+ } else {
+ $sql .= " AND f.type IN (0,1,2,3,5)";
+ }
} else {
- $sql .= " AND f.type IN (0,1,2,3,5)";
+ if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ $sql .= " AND f.type IN (0,1,2,5)";
+ } else {
+ $sql .= " AND f.type IN (0,1,2,3,5)";
+ }
}
if ($y && $m) {
$sql .= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, $m, false))."'";
diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql
index 8dc3f1b1374..046d1da2f0e 100644
--- a/htdocs/core/menus/init_menu_auguria.sql
+++ b/htdocs/core/menus/init_menu_auguria.sql
@@ -450,7 +450,7 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4202__+MAX_llx_menu__, 'members', '', 4200__+MAX_llx_menu__, '/adherents/list.php', 'List', 1, 'members', '$user->rights->adherent->lire', '', 2, 1, __ENTITY__);
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4203__+MAX_llx_menu__, 'members', '', 4202__+MAX_llx_menu__, '/adherents/list.php?mainmenu=members&leftmenu=members&statut=-1', 'MenuMembersToValidate', 2, 'members', '$user->rights->adherent->lire', '', 2, 2, __ENTITY__);
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4204__+MAX_llx_menu__, 'members', '', 4202__+MAX_llx_menu__, '/adherents/list.php?mainmenu=members&leftmenu=members&statut=1', 'MenuMembersValidated', 2, 'members', '$user->rights->adherent->lire', '', 2, 3, __ENTITY__);
-insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4205__+MAX_llx_menu__, 'members', '', 4204__+MAX_llx_menu__, '/adherents/list.php?mainmenu=members&leftmenu=members&statut=1&filter=withoutsubscription', 'WithoutSubscription', 2, 'members', '$user->rights->adherent->lire', '', 2, 4, __ENTITY__);
+insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4205__+MAX_llx_menu__, 'members', '', 4204__+MAX_llx_menu__, '/adherents/list.php?mainmenu=members&leftmenu=members&statut=1&filter=waitingsubscription', 'WaitingSubscription', 2, 'members', '$user->rights->adherent->lire', '', 2, 4, __ENTITY__);
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4206__+MAX_llx_menu__, 'members', '', 4204__+MAX_llx_menu__, '/adherents/list.php?mainmenu=members&leftmenu=members&statut=1&filter=outofdate', 'UpToDate', 2, 'members', '$user->rights->adherent->lire', '', 2, 4, __ENTITY__);
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4207__+MAX_llx_menu__, 'members', '', 4204__+MAX_llx_menu__, '/adherents/list.php?mainmenu=members&leftmenu=members&statut=1&filter=uptodate', 'OutOfDate', 2, 'members', '$user->rights->adherent->lire', '', 2, 5, __ENTITY__);
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4208__+MAX_llx_menu__, 'members', '', 4202__+MAX_llx_menu__, '/adherents/list.php?mainmenu=members&leftmenu=members&statut=0', 'MenuMembersResiliated', 2, 'members', '$user->rights->adherent->lire', '', 2, 6, __ENTITY__);
diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php
index 7fccf290d1a..91e99e7e8ba 100644
--- a/htdocs/core/menus/standard/eldy.lib.php
+++ b/htdocs/core/menus/standard/eldy.lib.php
@@ -2405,7 +2405,7 @@ function get_left_menu_members($mainmenu, &$newmenu, $usemenuhider = 1, $leftmen
$newmenu->add("/adherents/list.php?leftmenu=members", $langs->trans("List"), 1, $user->hasRight('adherent', 'read'));
$newmenu->add("/adherents/list.php?leftmenu=members&statut=-1", $langs->trans("MenuMembersToValidate"), 2, $user->hasRight('adherent', 'read'));
$newmenu->add("/adherents/list.php?leftmenu=members&statut=1", $langs->trans("MenuMembersValidated"), 2, $user->hasRight('adherent', 'read'));
- $newmenu->add("/adherents/list.php?leftmenu=members&statut=1&filter=withoutsubscription", $langs->trans("WithoutSubscription"), 3, $user->hasRight('adherent', 'read'));
+ $newmenu->add("/adherents/list.php?leftmenu=members&statut=1&filter=waitingsubscription", $langs->trans("WaitingSubscription"), 3, $user->hasRight('adherent', 'read'));
$newmenu->add("/adherents/list.php?leftmenu=members&statut=1&filter=uptodate", $langs->trans("UpToDate"), 3, $user->hasRight('adherent', 'read'));
$newmenu->add("/adherents/list.php?leftmenu=members&statut=1&filter=outofdate", $langs->trans("OutOfDate"), 3, $user->hasRight('adherent', 'read'));
$newmenu->add("/adherents/list.php?leftmenu=members&statut=0", $langs->trans("MenuMembersResiliated"), 2, $user->hasRight('adherent', 'read'));
diff --git a/htdocs/core/modules/asset/mod_asset_standard.php b/htdocs/core/modules/asset/mod_asset_standard.php
index af28c0f9c5b..2e3ee3938e1 100644
--- a/htdocs/core/modules/asset/mod_asset_standard.php
+++ b/htdocs/core/modules/asset/mod_asset_standard.php
@@ -26,7 +26,7 @@
require_once DOL_DOCUMENT_ROOT.'/core/modules/asset/modules_asset.php';
/**
- * Class to manage customer order numbering rules standard
+ * Class to manage the Standard numbering rule for Asset
*/
class mod_asset_standard extends ModeleNumRefAsset
{
diff --git a/htdocs/core/modules/bom/mod_bom_standard.php b/htdocs/core/modules/bom/mod_bom_standard.php
index f5a9fb75976..db2d0f2ed7f 100644
--- a/htdocs/core/modules/bom/mod_bom_standard.php
+++ b/htdocs/core/modules/bom/mod_bom_standard.php
@@ -25,7 +25,7 @@
require_once DOL_DOCUMENT_ROOT.'/core/modules/bom/modules_bom.php';
/**
- * Class to manage customer order numbering rules standard
+ * Class to manage the Standard numbering rule for BOM
*/
class mod_bom_standard extends ModeleNumRefboms
{
diff --git a/htdocs/core/modules/commande/mod_commande_marbre.php b/htdocs/core/modules/commande/mod_commande_marbre.php
index 8c9ef0385eb..71a41d0b3c4 100644
--- a/htdocs/core/modules/commande/mod_commande_marbre.php
+++ b/htdocs/core/modules/commande/mod_commande_marbre.php
@@ -20,12 +20,12 @@
/**
* \file htdocs/core/modules/commande/mod_commande_marbre.php
* \ingroup commande
- * \brief File of class to manage customer order numbering rules Marbre
+ * \brief File of class to manage Sales Order numbering rules Marbre
*/
require_once DOL_DOCUMENT_ROOT.'/core/modules/commande/modules_commande.php';
/**
- * Class to manage customer order numbering rules Marbre
+ * Class to manage Sales Order numbering rules Marbre
*/
class mod_commande_marbre extends ModeleNumRefCommandes
{
diff --git a/htdocs/core/modules/commande/mod_commande_saphir.php b/htdocs/core/modules/commande/mod_commande_saphir.php
index ad2b109f2d1..07dcfdced9e 100644
--- a/htdocs/core/modules/commande/mod_commande_saphir.php
+++ b/htdocs/core/modules/commande/mod_commande_saphir.php
@@ -23,14 +23,14 @@
/**
* \file htdocs/core/modules/commande/mod_commande_saphir.php
* \ingroup commande
- * \brief Fichier contenant la classe du modele de numerotation de reference de commande Saphir
+ * \brief File of class to manage Sales Order numbering rules Saphir
*/
require_once DOL_DOCUMENT_ROOT.'/core/modules/commande/modules_commande.php';
/**
- * Class to manage customer order numbering rules Saphir
+ * Class to manage Sales Order numbering rules Saphir
*/
class mod_commande_saphir extends ModeleNumRefCommandes
{
diff --git a/htdocs/core/modules/hrm/mod_evaluation_standard.php b/htdocs/core/modules/hrm/mod_evaluation_standard.php
index 4c5bb083870..b6b517b8fb9 100644
--- a/htdocs/core/modules/hrm/mod_evaluation_standard.php
+++ b/htdocs/core/modules/hrm/mod_evaluation_standard.php
@@ -26,7 +26,7 @@ dol_include_once('/core/modules/hrm/modules_evaluation.php');
/**
- * Class to manage customer order numbering rules standard
+ * Class to manage the Standard numbering rule for HR evaluation
*/
class mod_evaluation_standard extends ModeleNumRefEvaluation
{
diff --git a/htdocs/core/modules/modApi.class.php b/htdocs/core/modules/modApi.class.php
index 48420a264d3..5eaae25a67c 100644
--- a/htdocs/core/modules/modApi.class.php
+++ b/htdocs/core/modules/modApi.class.php
@@ -107,7 +107,7 @@ class modApi extends DolibarrModules
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/core/modules/modAsset.class.php b/htdocs/core/modules/modAsset.class.php
index fbe6134c797..a0fb405887e 100644
--- a/htdocs/core/modules/modAsset.class.php
+++ b/htdocs/core/modules/modAsset.class.php
@@ -137,7 +137,7 @@ class modAsset extends DolibarrModules
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/core/modules/modBom.class.php b/htdocs/core/modules/modBom.class.php
index d39affa4d78..6f2cc7ac4b2 100644
--- a/htdocs/core/modules/modBom.class.php
+++ b/htdocs/core/modules/modBom.class.php
@@ -156,7 +156,7 @@ class modBom extends DolibarrModules
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/core/modules/modCommande.class.php b/htdocs/core/modules/modCommande.class.php
index 6a88c14271b..f0486b5cb58 100644
--- a/htdocs/core/modules/modCommande.class.php
+++ b/htdocs/core/modules/modCommande.class.php
@@ -34,11 +34,10 @@ include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';
/**
- * Class to describe module customer orders
+ * Class to describe module Sales Orders
*/
class modCommande extends DolibarrModules
{
-
/**
* Constructor. Define names, constants, directories, boxes, permissions
*
diff --git a/htdocs/core/modules/modDataPolicy.class.php b/htdocs/core/modules/modDataPolicy.class.php
index 2768e7d1d7a..93f3e6f4024 100644
--- a/htdocs/core/modules/modDataPolicy.class.php
+++ b/htdocs/core/modules/modDataPolicy.class.php
@@ -162,7 +162,7 @@ class modDataPolicy extends DolibarrModules {
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/core/modules/modDav.class.php b/htdocs/core/modules/modDav.class.php
index aeea231fd1e..356f043cea0 100644
--- a/htdocs/core/modules/modDav.class.php
+++ b/htdocs/core/modules/modDav.class.php
@@ -131,7 +131,7 @@ class modDav extends DolibarrModules
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/core/modules/modEmailCollector.class.php b/htdocs/core/modules/modEmailCollector.class.php
index 03c668910ce..514fe1be667 100644
--- a/htdocs/core/modules/modEmailCollector.class.php
+++ b/htdocs/core/modules/modEmailCollector.class.php
@@ -131,7 +131,7 @@ class modEmailCollector extends DolibarrModules
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/core/modules/modEventOrganization.class.php b/htdocs/core/modules/modEventOrganization.class.php
index 6708eb4192a..f600ef633aa 100644
--- a/htdocs/core/modules/modEventOrganization.class.php
+++ b/htdocs/core/modules/modEventOrganization.class.php
@@ -169,7 +169,7 @@ class modEventOrganization extends DolibarrModules
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/core/modules/modFacture.class.php b/htdocs/core/modules/modFacture.class.php
index 339e02cf393..85072c90cee 100644
--- a/htdocs/core/modules/modFacture.class.php
+++ b/htdocs/core/modules/modFacture.class.php
@@ -5,6 +5,7 @@
* Copyright (C) 2004 Benoit Mortier
* Copyright (C) 2005-2012 Regis Houssin
* Copyright (C) 2021 Alexandre Spangaro
+ * Copyright (C) 2022 Frédéric France
*
* 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
@@ -238,7 +239,7 @@ class modFacture extends DolibarrModules
$this->import_fields_array[$r] = array(
'f.ref' => 'InvoiceRef*',
'f.ref_ext' => 'ExternalRef',
- 'f.ref_client' => 'CutomerRef',
+ 'f.ref_client' => 'CustomerRef',
'f.type' => 'Type*',
'f.fk_soc' => 'Customer*',
'f.datec' => 'InvoiceDateCreation',
@@ -350,7 +351,7 @@ class modFacture extends DolibarrModules
)
);
- //Import Supplier Invoice Lines
+ // Import Invoice Lines
$r++;
$this->import_code[$r] = $this->rights_class.'_'.$r;
$this->import_label[$r] = "InvoiceLine"; // Translation key
diff --git a/htdocs/core/modules/modHRM.class.php b/htdocs/core/modules/modHRM.class.php
index 0da5663d452..09ff03cae9b 100644
--- a/htdocs/core/modules/modHRM.class.php
+++ b/htdocs/core/modules/modHRM.class.php
@@ -141,7 +141,7 @@ class modHRM extends DolibarrModules
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/core/modules/modKnowledgeManagement.class.php b/htdocs/core/modules/modKnowledgeManagement.class.php
index 634f36406a2..b331c56a917 100644
--- a/htdocs/core/modules/modKnowledgeManagement.class.php
+++ b/htdocs/core/modules/modKnowledgeManagement.class.php
@@ -184,7 +184,7 @@ class modKnowledgeManagement extends DolibarrModules
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/core/modules/modMrp.class.php b/htdocs/core/modules/modMrp.class.php
index f93ce224662..fb836c8393b 100644
--- a/htdocs/core/modules/modMrp.class.php
+++ b/htdocs/core/modules/modMrp.class.php
@@ -168,7 +168,7 @@ class modMrp extends DolibarrModules
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/core/modules/modMultiCurrency.class.php b/htdocs/core/modules/modMultiCurrency.class.php
index 54297d5e77c..f08c9a4b021 100644
--- a/htdocs/core/modules/modMultiCurrency.class.php
+++ b/htdocs/core/modules/modMultiCurrency.class.php
@@ -113,7 +113,7 @@ class modMultiCurrency extends DolibarrModules
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/core/modules/modPartnership.class.php b/htdocs/core/modules/modPartnership.class.php
index ccd67542830..8e8421540c7 100644
--- a/htdocs/core/modules/modPartnership.class.php
+++ b/htdocs/core/modules/modPartnership.class.php
@@ -199,7 +199,7 @@ class modPartnership extends DolibarrModules
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/core/modules/modRecruitment.class.php b/htdocs/core/modules/modRecruitment.class.php
index f1fe6f2072c..8b2db1a115a 100644
--- a/htdocs/core/modules/modRecruitment.class.php
+++ b/htdocs/core/modules/modRecruitment.class.php
@@ -177,7 +177,7 @@ class modRecruitment extends DolibarrModules
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/core/modules/modResource.class.php b/htdocs/core/modules/modResource.class.php
index ab73c8828b4..59dc7878161 100644
--- a/htdocs/core/modules/modResource.class.php
+++ b/htdocs/core/modules/modResource.class.php
@@ -120,7 +120,7 @@ class modResource extends DolibarrModules
// 'order_supplier' to add a tab in supplier order view
// 'invoice_supplier' to add a tab in supplier invoice view
// 'invoice' to add a tab in customer invoice view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'product' to add a tab in product view
// 'stock' to add a tab in stock view
// 'propal' to add a tab in propal view
diff --git a/htdocs/core/modules/modStockTransfer.class.php b/htdocs/core/modules/modStockTransfer.class.php
index a90b28be5aa..c834900c2cf 100644
--- a/htdocs/core/modules/modStockTransfer.class.php
+++ b/htdocs/core/modules/modStockTransfer.class.php
@@ -166,7 +166,7 @@ class modStockTransfer extends DolibarrModules
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/core/modules/modTakePos.class.php b/htdocs/core/modules/modTakePos.class.php
index 8096629c9a4..b06bf0fe8b0 100644
--- a/htdocs/core/modules/modTakePos.class.php
+++ b/htdocs/core/modules/modTakePos.class.php
@@ -142,7 +142,7 @@ class modTakePos extends DolibarrModules
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/core/modules/modWebhook.class.php b/htdocs/core/modules/modWebhook.class.php
index b1aaea23929..225f09659c2 100644
--- a/htdocs/core/modules/modWebhook.class.php
+++ b/htdocs/core/modules/modWebhook.class.php
@@ -183,7 +183,7 @@ class modWebhook extends DolibarrModules
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/core/modules/modWorkstation.class.php b/htdocs/core/modules/modWorkstation.class.php
index 51094439df0..a8be0f23226 100644
--- a/htdocs/core/modules/modWorkstation.class.php
+++ b/htdocs/core/modules/modWorkstation.class.php
@@ -166,7 +166,7 @@ class modWorkstation extends DolibarrModules
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/core/modules/modZapier.class.php b/htdocs/core/modules/modZapier.class.php
index 6d05aa7b283..b14419e0982 100644
--- a/htdocs/core/modules/modZapier.class.php
+++ b/htdocs/core/modules/modZapier.class.php
@@ -172,7 +172,7 @@ class modZapier extends DolibarrModules
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sales order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/core/modules/propale/mod_propale_marbre.php b/htdocs/core/modules/propale/mod_propale_marbre.php
index 28d66dfc40a..54dd0096b2e 100644
--- a/htdocs/core/modules/propale/mod_propale_marbre.php
+++ b/htdocs/core/modules/propale/mod_propale_marbre.php
@@ -27,7 +27,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/modules/propale/modules_propale.php';
/**
- * Class to manage customer order numbering rules Marbre
+ * Class to manage business proposition rules Marbre
*/
class mod_propale_marbre extends ModeleNumRefPropales
{
diff --git a/htdocs/core/modules/stocktransfer/mod_stocktransfer_standard.php b/htdocs/core/modules/stocktransfer/mod_stocktransfer_standard.php
index 6a6c7c556e6..fc647d3135c 100644
--- a/htdocs/core/modules/stocktransfer/mod_stocktransfer_standard.php
+++ b/htdocs/core/modules/stocktransfer/mod_stocktransfer_standard.php
@@ -27,7 +27,7 @@ require_once DOL_DOCUMENT_ROOT . '/core/modules/stocktransfer/modules_stocktrans
/**
- * Class to manage customer order numbering rules standard
+ * Class to manage the Standard numbering rule for Stock
*/
class mod_stocktransfer_standard extends ModeleNumRefStockTransfer
{
diff --git a/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_marbre.php b/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_marbre.php
index 2e618b3ece3..cb4f76fa727 100644
--- a/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_marbre.php
+++ b/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_marbre.php
@@ -27,7 +27,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/modules/supplier_proposal/modules_supplier
/**
- * Class to manage customer order numbering rules Marbre
+ * Class to manage the Marbre numbering rule for Request for quotation
*/
class mod_supplier_proposal_marbre extends ModeleNumRefSupplierProposal
{
diff --git a/htdocs/core/modules/workstation/mod_workstation_standard.php b/htdocs/core/modules/workstation/mod_workstation_standard.php
index 7bef21a8599..758783316e4 100644
--- a/htdocs/core/modules/workstation/mod_workstation_standard.php
+++ b/htdocs/core/modules/workstation/mod_workstation_standard.php
@@ -26,7 +26,7 @@
require_once DOL_DOCUMENT_ROOT . '/core/modules/workstation/modules_workstation.php';
/**
- * Class to manage customer order numbering rules standard
+ * Class to manage the Standard numbering rule for Workstation
*/
class mod_workstation_standard extends ModeleNumRefWorkstation
{
diff --git a/htdocs/core/tpl/massactions_pre.tpl.php b/htdocs/core/tpl/massactions_pre.tpl.php
index 8a8222101ee..f09d7defeb1 100644
--- a/htdocs/core/tpl/massactions_pre.tpl.php
+++ b/htdocs/core/tpl/massactions_pre.tpl.php
@@ -78,6 +78,24 @@ if ($massaction == 'preaffecttag' && isModEnabled('category')) {
}
}
+if ($massaction == 'presetsupervisor') {
+ $formquestion = array();
+
+ $valuefield = '
';
+
+ $formquestion[] = array(
+ 'type' => 'other',
+ 'name' => 'supervisortoset',
+ 'label' => $langs->trans("Supervisor"),
+ 'value' => $valuefield
+ );
+
+ print $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans("ConfirmSetSupervisor"), $langs->trans("ConfirmSetSupervisorQuestion", count($toselect)), "setsupervisor", $formquestion, 1, 0, 200, 500, 1);
+}
+
if ($massaction == 'presend') {
$langs->load("mails");
diff --git a/htdocs/core/triggers/interface_95_modZapier_ZapierTriggers.class.php b/htdocs/core/triggers/interface_95_modZapier_ZapierTriggers.class.php
index ccd7a607d3a..7c16599f039 100644
--- a/htdocs/core/triggers/interface_95_modZapier_ZapierTriggers.class.php
+++ b/htdocs/core/triggers/interface_95_modZapier_ZapierTriggers.class.php
@@ -203,7 +203,7 @@ class InterfaceZapierTriggers extends DolibarrTriggers
// case 'MYECMDIR_CREATE':
// case 'MYECMDIR_MODIFY':
- // Customer orders
+ // Sales orders
case 'ORDER_CREATE':
$resql = $this->db->query($sql);
while ($resql && $obj = $this->db->fetch_array($resql)) {
diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php
index f5da262e0c1..8d72666ad53 100644
--- a/htdocs/emailcollector/class/emailcollector.class.php
+++ b/htdocs/emailcollector/class/emailcollector.class.php
@@ -28,12 +28,12 @@ require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php';
require_once DOL_DOCUMENT_ROOT .'/core/lib/files.lib.php';
require_once DOL_DOCUMENT_ROOT .'/comm/propal/class/propal.class.php'; // Customer Proposal
-require_once DOL_DOCUMENT_ROOT .'/commande/class/commande.class.php'; // Customer Order
+require_once DOL_DOCUMENT_ROOT .'/commande/class/commande.class.php'; // Sale Order
require_once DOL_DOCUMENT_ROOT .'/compta/facture/class/facture.class.php'; // Customer Invoice
require_once DOL_DOCUMENT_ROOT .'/contact/class/contact.class.php'; // Contact / Address
require_once DOL_DOCUMENT_ROOT .'/expedition/class/expedition.class.php'; // Shipping / Delivery
-require_once DOL_DOCUMENT_ROOT .'/fourn/class/fournisseur.commande.class.php'; // Supplier Order
-require_once DOL_DOCUMENT_ROOT .'/fourn/class/fournisseur.facture.class.php'; // Supplier Invoice
+require_once DOL_DOCUMENT_ROOT .'/fourn/class/fournisseur.commande.class.php'; // Purchase Order
+require_once DOL_DOCUMENT_ROOT .'/fourn/class/fournisseur.facture.class.php'; // Purchase Invoice
require_once DOL_DOCUMENT_ROOT .'/projet/class/project.class.php'; // Project
require_once DOL_DOCUMENT_ROOT .'/reception/class/reception.class.php'; // Reception
require_once DOL_DOCUMENT_ROOT .'/recruitment/class/recruitmentcandidature.class.php'; // Recruiting
@@ -1766,7 +1766,7 @@ class EmailCollector extends CommonObject
if ($reg[1] == 'pro') { // Customer Proposal
$objectemail = new Propal($this->db);
}
- if ($reg[1] == 'ord') { // Customer Order
+ if ($reg[1] == 'ord') { // Sale Order
$objectemail = new Commande($this->db);
}
if ($reg[1] == 'shi') { // Shipment
diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php
index 770276e96b8..9e59dbceda6 100644
--- a/htdocs/fourn/class/fournisseur.commande.class.php
+++ b/htdocs/fourn/class/fournisseur.commande.class.php
@@ -1832,7 +1832,7 @@ class CommandeFournisseur extends CommonOrder
// If we want a dedicated supplier price, we must provide $fk_prod_fourn_price.
$result = $prod->get_buyprice($fk_prod_fourn_price, $qty, $fk_product, 'none', (isset($this->fk_soc) ? $this->fk_soc : $this->socid)); // Search on couple $fk_prod_fourn_price/$qty first, then on triplet $qty/$fk_product/$ref_supplier/$this->fk_soc
- // If supplier order created from customer order, we take best supplier price
+ // If supplier order created from sales order, we take best supplier price
// If $pu (defined previously from pu_ht or pu_ttc) is not defined at all, we also take the best supplier price
if ($result > 0 && ($origin == 'commande' || $pu === '')) {
$pu = $prod->fourn_pu; // Unit price supplier price set by get_buyprice
@@ -2608,11 +2608,11 @@ class CommandeFournisseur extends CommonOrder
}
/**
- * Update a supplier order from a customer order
+ * Update a supplier order from a sales order
*
* @param User $user User that create
- * @param int $idc Id of supplier order to update
- * @param int $comclientid Id of customer order to use as template
+ * @param int $idc Id of purchase order to update
+ * @param int $comclientid Id of sale order to use as template
* @return int <0 if KO, >0 if OK
*/
public function updateFromCommandeClient($user, $idc, $comclientid)
diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php
index 16bc43474d8..ec923f91118 100644
--- a/htdocs/fourn/class/fournisseur.product.class.php
+++ b/htdocs/fourn/class/fournisseur.product.class.php
@@ -419,7 +419,11 @@ class ProductFournisseur extends Product
$productfournisseurprice->array_options[$key] = $value;
}
$res = $productfournisseurprice->update($user);
- if ($res < 0) $error++;
+ if ($res < 0) {
+ $this->error = $productfournisseurprice->error;
+ $this->errors = $productfournisseurprice->errors;
+ $error++;
+ }
}
}
}
@@ -506,6 +510,7 @@ class ProductFournisseur extends Product
if ($resql) {
$this->product_fourn_price_id = $this->db->last_insert_id(MAIN_DB_PREFIX."product_fournisseur_price");
} else {
+ $this->error = $this->db->lasterror();
$error++;
}
@@ -518,7 +523,11 @@ class ProductFournisseur extends Product
$productfournisseurprice->array_options[$key] = $value;
}
$res = $productfournisseurprice->update($user);
- if ($res < 0) $error++;
+ if ($res < 0) {
+ $this->error = $productfournisseurprice->error;
+ $this->errors = $productfournisseurprice->errors;
+ $error++;
+ }
}
}
}
diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php
index 834ef4031c0..67cfffdeb7c 100644
--- a/htdocs/fourn/commande/card.php
+++ b/htdocs/fourn/commande/card.php
@@ -2121,7 +2121,7 @@ if ($action == 'create') {
print '';
// Relative and absolute discounts
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
$filterabsolutediscount = "fk_invoice_supplier_source IS NULL"; // If we want deposit to be substracted to payments only and not to total of final invoice
$filtercreditnote = "fk_invoice_supplier_source IS NOT NULL"; // If we want deposit to be substracted to payments only and not to total of final invoice
} else {
diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php
index 82e36af6943..208a184bca2 100644
--- a/htdocs/fourn/commande/list.php
+++ b/htdocs/fourn/commande/list.php
@@ -527,7 +527,7 @@ if (empty($reshook)) {
}
}
- $cmd->classifyBilled($user); // TODO Move this in workflow like done for customer orders
+ $cmd->classifyBilled($user); // TODO Move this in workflow like done for sales orders
if (!empty($createbills_onebythird) && empty($TFactThird[$cmd->socid])) {
$TFactThird[$cmd->socid] = $objecttmp;
diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php
index 31cec906b0f..54ee8157e13 100644
--- a/htdocs/fourn/facture/card.php
+++ b/htdocs/fourn/facture/card.php
@@ -2641,7 +2641,7 @@ if ($action == 'create') {
}
$resteapayeraffiche = $resteapayer;
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) { // Never use this
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) { // Never use this
$filterabsolutediscount = "fk_invoice_supplier_source IS NULL"; // If we want deposit to be substracted to payments only and not to total of final invoice
$filtercreditnote = "fk_invoice_supplier_source IS NOT NULL"; // If we want deposit to be substracted to payments only and not to total of final invoice
} else {
diff --git a/htdocs/index.php b/htdocs/index.php
index f9ca18f530a..c8c1a234f02 100644
--- a/htdocs/index.php
+++ b/htdocs/index.php
@@ -194,7 +194,7 @@ if (empty($conf->global->MAIN_DISABLE_GLOBAL_WORKBOARD)) {
$dashboardlines[$board->element.'_signed'] = $board->load_board($user, "signed");
}
- // Number of customer orders a deal
+ // Number of sales orders a deal
if (isModEnabled('commande') && empty($conf->global->MAIN_DISABLE_BLOCK_CUSTOMER) && $user->hasRight('commande', 'lire')) {
include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
$board = new Commande($db);
diff --git a/htdocs/install/mysql/data/llx_accounting_abc.sql b/htdocs/install/mysql/data/llx_accounting_abc.sql
index 8874fad0784..661e786ca06 100644
--- a/htdocs/install/mysql/data/llx_accounting_abc.sql
+++ b/htdocs/install/mysql/data/llx_accounting_abc.sql
@@ -48,11 +48,11 @@
INSERT INTO llx_accounting_journal (code, label, nature, active, entity) VALUES ('VT', 'ACCOUNTING_SELL_JOURNAL', 2, 1, 1);
INSERT INTO llx_accounting_journal (code, label, nature, active, entity) VALUES ('AC', 'ACCOUNTING_PURCHASE_JOURNAL', 3, 1, 1);
-INSERT INTO llx_accounting_journal (code, label, nature, active, entity) VALUES ('BQ', 'FinanceJournal', 4, 1, 1);
+INSERT INTO llx_accounting_journal (code, label, nature, active, entity) VALUES ('BQ', 'ACCOUNTING_BANK_JOURNAL', 4, 1, 1);
+INSERT INTO llx_accounting_journal (code, label, nature, active, entity) VALUES ('ER', 'ACCOUNTING_EXPENSEREPORT_JOURNAL', 5, 1, 1);
INSERT INTO llx_accounting_journal (code, label, nature, active, entity) VALUES ('OD', 'ACCOUNTING_MISCELLANEOUS_JOURNAL', 1, 1, 1);
-INSERT INTO llx_accounting_journal (code, label, nature, active, entity) VALUES ('AN', 'ACCOUNTING_HAS_NEW_JOURNAL', 9, 1, 1);
-INSERT INTO llx_accounting_journal (code, label, nature, active, entity) VALUES ('ER', 'ExpenseReportsJournal', 5, 1, 1);
-INSERT INTO llx_accounting_journal (code, label, nature, active, entity) VALUES ('INV', 'InventoryJournal', 8, 1, 1);
+INSERT INTO llx_accounting_journal (code, label, nature, active, entity) VALUES ('AN', 'ACCOUNTING_HAS_NEW_JOURNAL', 9, 0, 1);
+INSERT INTO llx_accounting_journal (code, label, nature, active, entity) VALUES ('INV', 'ACCOUNTING_INVENTORY_JOURNAL', 8, 0, 1);
diff --git a/htdocs/install/mysql/data/llx_accounting_account_fr.sql b/htdocs/install/mysql/data/llx_accounting_account_fr.sql
index d49e509a5be..4520969f82b 100644
--- a/htdocs/install/mysql/data/llx_accounting_account_fr.sql
+++ b/htdocs/install/mysql/data/llx_accounting_account_fr.sql
@@ -136,7 +136,7 @@ INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, acc
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 93,'PCG99-ABREGE','INCOME', '75', '1407', 'Autres produits de gestion courante', 1);
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 94,'PCG99-ABREGE','INCOME', '753', '93', 'Jetons de présence et rémunérations d''administrateurs, gérants,...', 1);
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 95,'PCG99-ABREGE','INCOME', '754', '93', 'Ristournes perçues des coopératives', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 96,'PCG99-ABREGE','INCOME', '755', '93', 'Quotes-parts de résultat sur opérations faites en commun', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 96,'PCG99-ABREGE','INCOME', '755', '93', 'Quotes-parts de résultat sur opérations faites en commun', 1);
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 97,'PCG99-ABREGE','INCOME', '76', '1407', 'Produits financiers', 1);
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 98,'PCG99-ABREGE','INCOME', '77', '1407', 'Produits exceptionnels', 1);
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 99,'PCG99-ABREGE','INCOME', '781', '1407', 'Reprises sur amortissements et provisions', 1);
diff --git a/htdocs/install/mysql/data/llx_accounting_account_gb.sql b/htdocs/install/mysql/data/llx_accounting_account_gb.sql
index 35c245efa95..fc2acf12395 100644
--- a/htdocs/install/mysql/data/llx_accounting_account_gb.sql
+++ b/htdocs/install/mysql/data/llx_accounting_account_gb.sql
@@ -26,10 +26,10 @@
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 71501, 'ENG-BASE', 'CAPIT', '1', '0', 'Equity, provisions for liabilities and charges and liabilities at more than one year', 1);
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 71502, 'ENG-BASE', 'IMMO', '2', '0', 'Administration fees.Fixed assets and receivables over one year', 1);
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 71503, 'ENG-BASE', 'STOCK', '3', '0', 'Stock and orders running', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 71504, 'ENG-BASE', 'TIERS', '4', '0', 'Amounts receivable and payable within one year', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 71504, 'ENG-BASE', 'THIRDPARTY', '4', '0', 'Amounts receivable and payable within one year', 1);
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 71505, 'ENG-BASE', 'FINAN', '5', '0', 'Placing of cash and cash equivalents', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 71506, 'ENG-BASE', 'CHARGE','6', '0', 'Charges', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 71507, 'ENG-BASE', 'PROD', '7', '0', 'Products', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 71506, 'ENG-BASE', 'EXPENSE','6', '0', 'Charges', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 71507, 'ENG-BASE', 'INCOME', '7', '0', 'Products', 1);
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70103, 'ENG-BASE', 'CAPIT', '10', '71501', 'Capital and reserves', 1);
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70104, 'ENG-BASE', 'CAPIT', '101', '70103', 'Capital', 1);
@@ -158,70 +158,70 @@ INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, acc
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70227, 'ENG-BASE', 'STOCK', '394', '70223', 'Provisions for depreciation of work in process', 1);
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70228, 'ENG-BASE', 'STOCK', '395', '70223', 'Provisions for depreciation of inventories of products', 1);
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70229, 'ENG-BASE', 'STOCK', '397', '70223', 'Provisions for depreciation of inventories of goods', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70230, 'ENG-BASE', 'TIERS', '40', '71504', 'Accounts payable', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70231, 'ENG-BASE', 'TIERS', '400', '70230', 'Accounts payable', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70232, 'ENG-BASE', 'TIERS', '401', '70230', 'Suppliers', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70233, 'ENG-BASE', 'TIERS', '403', '70230', 'Suppliers - Payables', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70234, 'ENG-BASE', 'TIERS', '404', '70230', 'Suppliers of fixed assets', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70235, 'ENG-BASE', 'TIERS', '405', '70230', 'Capital Suppliers - Payables', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70236, 'ENG-BASE', 'TIERS', '408', '70230', 'Supplier invoices not yet received', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70237, 'ENG-BASE', 'TIERS', '409', '70230', 'Debtors suppliers', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70238, 'ENG-BASE', 'TIERS', '41', '71504', 'Accounts receivable', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70239, 'ENG-BASE', 'TIERS', '410', '70238', 'Customers and Related Accounts', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70240, 'ENG-BASE', 'TIERS', '411', '70238', 'Customers', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70241, 'ENG-BASE', 'TIERS', '413', '70238', 'Accounts Receivable', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70242, 'ENG-BASE', 'TIERS', '416', '70238', 'Doubtful or contentious customers', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70243, 'ENG-BASE', 'TIERS', '418', '70238', 'Customers - Products not yet billed', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70244, 'ENG-BASE', 'TIERS', '419', '70238', 'Accounts payable', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70245, 'ENG-BASE', 'TIERS', '42', '71504', 'Personnel and related accounts', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70246, 'ENG-BASE', 'TIERS', '421', '70245', 'Staff - Remuneration due', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70247, 'ENG-BASE', 'TIERS', '422', '70245', 'Works councils, establishment, ...', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70248, 'ENG-BASE', 'TIERS', '424', '70245', 'Employee participation in results', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70249, 'ENG-BASE', 'TIERS', '425', '70245', 'Staff - Advances and Advances', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70250, 'ENG-BASE', 'TIERS', '426', '70245', 'Staff - Deposits', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70251, 'ENG-BASE', 'TIERS', '427', '70245', 'Staff - Oppositions', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70252, 'ENG-BASE', 'TIERS', '428', '70245', 'Personnel - Accrued expenses and accrued income', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70253, 'ENG-BASE', 'TIERS', '43', '71504', 'Social security and other social organizations', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70254, 'ENG-BASE', 'TIERS', '431', '70253', 'Social Security', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70255, 'ENG-BASE', 'TIERS', '437', '70253', 'Other social organizations', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70256, 'ENG-BASE', 'TIERS', '438', '70253', 'Social organizations - Accrued expenses and accrued income', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70257, 'ENG-BASE', 'TIERS', '44', '71504', 'State and other public authorities', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70258, 'ENG-BASE', 'TIERS', '441', '70257', 'Status - Grants Receivable', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70259, 'ENG-BASE', 'TIERS', '442', '70257', 'Statement - Taxes and taxes recoverable on third parties', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70260, 'ENG-BASE', 'TIERS', '443', '70257', 'Special operations with the State, public authorities, international organizations', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70261, 'ENG-BASE', 'TIERS', '444', '70257', 'State - Income taxes', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70262, 'ENG-BASE', 'TIERS', '445', '70257', 'State - Taxes on turnover', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70263, 'ENG-BASE', 'TIERS', '446', '70257', 'Bonded Bonds', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70264, 'ENG-BASE', 'TIERS', '447', '70257', 'Other taxes, duties and similar payments', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70265, 'ENG-BASE', 'TIERS', '448', '70257', 'Statement of Accounts Payable and Accrued Income', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70266, 'ENG-BASE', 'TIERS', '449', '70257', 'Emission quotas to be returned to the State', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70267, 'ENG-BASE', 'TIERS', '45', '71504', 'Group and Associates', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70268, 'ENG-BASE', 'TIERS', '451', '70267', 'Group', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70269, 'ENG-BASE', 'TIERS', '455', '70267', 'Associates - Current Accounts', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70270, 'ENG-BASE', 'TIERS', '456', '70267', 'Associates - Capital transactions', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70271, 'ENG-BASE', 'TIERS', '457', '70267', 'Associates - Dividends payable', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70272, 'ENG-BASE', 'TIERS', '458', '70267', 'Associates- Joint and EIG Operations', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70273, 'ENG-BASE', 'TIERS', '46', '71504', 'Miscellaneous receivables and creditors', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70274, 'ENG-BASE', 'TIERS', '462', '70273', 'Receivables on disposals of fixed assets', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70275, 'ENG-BASE', 'TIERS', '464', '70273', 'Debts on acquisitions of marketable securities', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70276, 'ENG-BASE', 'TIERS', '465', '70273', 'Receivables on disposals of marketable securities', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70277, 'ENG-BASE', 'TIERS', '467', '70273', 'Other accounts receivable or payable', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70278, 'ENG-BASE', 'TIERS', '468', '70273', 'Miscellaneous - Accrued expenses and accrued income', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70279, 'ENG-BASE', 'TIERS', '47', '71504', 'Transition or suspense accounts', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70280, 'ENG-BASE', 'TIERS', '471', '70279', 'Waiting Accounts', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70281, 'ENG-BASE', 'TIERS', '476', '70279', 'Conversion Difference - Assets', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70282, 'ENG-BASE', 'TIERS', '477', '70279', 'Translation differences - Liabilities', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70283, 'ENG-BASE', 'TIERS', '478', '70279', 'Other transitional accounts', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70284, 'ENG-BASE', 'TIERS', '48', '71504', 'regularisation account', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70285, 'ENG-BASE', 'TIERS', '481', '70284', 'Expenses to be spread over several financial years', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70286, 'ENG-BASE', 'TIERS', '486', '70284', 'Prepaid expenses', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70287, 'ENG-BASE', 'TIERS', '487', '70284', 'Deferred income', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70288, 'ENG-BASE', 'TIERS', '488', '70284', 'Accounts for the periodic distribution of expenses and revenues', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70289, 'ENG-BASE', 'TIERS', '489', '70284', 'Emission allowances allocated by the State', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70290, 'ENG-BASE', 'TIERS', '49', '71504', 'Provisions for depreciation of third party accounts', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70291, 'ENG-BASE', 'TIERS', '491', '70290', 'Provisions for depreciation of customer accounts', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70292, 'ENG-BASE', 'TIERS', '495', '70290', 'Provisions for impairment of group and associate accounts', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70293, 'ENG-BASE', 'TIERS', '496', '70290', 'Provisions for depreciation of accounts receivable', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70230, 'ENG-BASE', 'THIRDPARTY', '40', '71504', 'Accounts payable', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70231, 'ENG-BASE', 'THIRDPARTY', '400', '70230', 'Accounts payable', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70232, 'ENG-BASE', 'THIRDPARTY', '401', '70230', 'Suppliers', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70233, 'ENG-BASE', 'THIRDPARTY', '403', '70230', 'Suppliers - Payables', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70234, 'ENG-BASE', 'THIRDPARTY', '404', '70230', 'Suppliers of fixed assets', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70235, 'ENG-BASE', 'THIRDPARTY', '405', '70230', 'Capital Suppliers - Payables', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70236, 'ENG-BASE', 'THIRDPARTY', '408', '70230', 'Supplier invoices not yet received', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70237, 'ENG-BASE', 'THIRDPARTY', '409', '70230', 'Debtors suppliers', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70238, 'ENG-BASE', 'THIRDPARTY', '41', '71504', 'Accounts receivable', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70239, 'ENG-BASE', 'THIRDPARTY', '410', '70238', 'Customers and Related Accounts', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70240, 'ENG-BASE', 'THIRDPARTY', '411', '70238', 'Customers', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70241, 'ENG-BASE', 'THIRDPARTY', '413', '70238', 'Accounts Receivable', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70242, 'ENG-BASE', 'THIRDPARTY', '416', '70238', 'Doubtful or contentious customers', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70243, 'ENG-BASE', 'THIRDPARTY', '418', '70238', 'Customers - Products not yet billed', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70244, 'ENG-BASE', 'THIRDPARTY', '419', '70238', 'Accounts payable', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70245, 'ENG-BASE', 'THIRDPARTY', '42', '71504', 'Personnel and related accounts', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70246, 'ENG-BASE', 'THIRDPARTY', '421', '70245', 'Staff - Remuneration due', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70247, 'ENG-BASE', 'THIRDPARTY', '422', '70245', 'Works councils, establishment, ...', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70248, 'ENG-BASE', 'THIRDPARTY', '424', '70245', 'Employee participation in results', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70249, 'ENG-BASE', 'THIRDPARTY', '425', '70245', 'Staff - Advances and Advances', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70250, 'ENG-BASE', 'THIRDPARTY', '426', '70245', 'Staff - Deposits', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70251, 'ENG-BASE', 'THIRDPARTY', '427', '70245', 'Staff - Oppositions', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70252, 'ENG-BASE', 'THIRDPARTY', '428', '70245', 'Personnel - Accrued expenses and accrued income', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70253, 'ENG-BASE', 'THIRDPARTY', '43', '71504', 'Social security and other social organizations', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70254, 'ENG-BASE', 'THIRDPARTY', '431', '70253', 'Social Security', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70255, 'ENG-BASE', 'THIRDPARTY', '437', '70253', 'Other social organizations', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70256, 'ENG-BASE', 'THIRDPARTY', '438', '70253', 'Social organizations - Accrued expenses and accrued income', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70257, 'ENG-BASE', 'THIRDPARTY', '44', '71504', 'State and other public authorities', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70258, 'ENG-BASE', 'THIRDPARTY', '441', '70257', 'Status - Grants Receivable', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70259, 'ENG-BASE', 'THIRDPARTY', '442', '70257', 'Statement - Taxes and taxes recoverable on third parties', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70260, 'ENG-BASE', 'THIRDPARTY', '443', '70257', 'Special operations with the State, public authorities, international organizations', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70261, 'ENG-BASE', 'THIRDPARTY', '444', '70257', 'State - Income taxes', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70262, 'ENG-BASE', 'THIRDPARTY', '445', '70257', 'State - Taxes on turnover', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70263, 'ENG-BASE', 'THIRDPARTY', '446', '70257', 'Bonded Bonds', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70264, 'ENG-BASE', 'THIRDPARTY', '447', '70257', 'Other taxes, duties and similar payments', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70265, 'ENG-BASE', 'THIRDPARTY', '448', '70257', 'Statement of Accounts Payable and Accrued Income', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70266, 'ENG-BASE', 'THIRDPARTY', '449', '70257', 'Emission quotas to be returned to the State', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70267, 'ENG-BASE', 'THIRDPARTY', '45', '71504', 'Group and Associates', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70268, 'ENG-BASE', 'THIRDPARTY', '451', '70267', 'Group', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70269, 'ENG-BASE', 'THIRDPARTY', '455', '70267', 'Associates - Current Accounts', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70270, 'ENG-BASE', 'THIRDPARTY', '456', '70267', 'Associates - Capital transactions', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70271, 'ENG-BASE', 'THIRDPARTY', '457', '70267', 'Associates - Dividends payable', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70272, 'ENG-BASE', 'THIRDPARTY', '458', '70267', 'Associates- Joint and EIG Operations', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70273, 'ENG-BASE', 'THIRDPARTY', '46', '71504', 'Miscellaneous receivables and creditors', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70274, 'ENG-BASE', 'THIRDPARTY', '462', '70273', 'Receivables on disposals of fixed assets', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70275, 'ENG-BASE', 'THIRDPARTY', '464', '70273', 'Debts on acquisitions of marketable securities', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70276, 'ENG-BASE', 'THIRDPARTY', '465', '70273', 'Receivables on disposals of marketable securities', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70277, 'ENG-BASE', 'THIRDPARTY', '467', '70273', 'Other accounts receivable or payable', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70278, 'ENG-BASE', 'THIRDPARTY', '468', '70273', 'Miscellaneous - Accrued expenses and accrued income', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70279, 'ENG-BASE', 'THIRDPARTY', '47', '71504', 'Transition or suspense accounts', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70280, 'ENG-BASE', 'THIRDPARTY', '471', '70279', 'Waiting Accounts', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70281, 'ENG-BASE', 'THIRDPARTY', '476', '70279', 'Conversion Difference - Assets', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70282, 'ENG-BASE', 'THIRDPARTY', '477', '70279', 'Translation differences - Liabilities', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70283, 'ENG-BASE', 'THIRDPARTY', '478', '70279', 'Other transitional accounts', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70284, 'ENG-BASE', 'THIRDPARTY', '48', '71504', 'regularisation account', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70285, 'ENG-BASE', 'THIRDPARTY', '481', '70284', 'Expenses to be spread over several financial years', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70286, 'ENG-BASE', 'THIRDPARTY', '486', '70284', 'Prepaid expenses', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70287, 'ENG-BASE', 'THIRDPARTY', '487', '70284', 'Deferred income', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70288, 'ENG-BASE', 'THIRDPARTY', '488', '70284', 'Accounts for the periodic distribution of expenses and revenues', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70289, 'ENG-BASE', 'THIRDPARTY', '489', '70284', 'Emission allowances allocated by the State', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70290, 'ENG-BASE', 'THIRDPARTY', '49', '71504', 'Provisions for depreciation of third party accounts', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70291, 'ENG-BASE', 'THIRDPARTY', '491', '70290', 'Provisions for depreciation of customer accounts', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70292, 'ENG-BASE', 'THIRDPARTY', '495', '70290', 'Provisions for impairment of group and associate accounts', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70293, 'ENG-BASE', 'THIRDPARTY', '496', '70290', 'Provisions for depreciation of accounts receivable', 1);
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70294, 'ENG-BASE', 'FINAN', '50', '71505', 'Marketable securities', 1);
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70295, 'ENG-BASE', 'FINAN', '501', '70294', 'Shares in related companies', 1);
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70296, 'ENG-BASE', 'FINAN', '502', '70294', 'Treasury shares', 1);
@@ -250,120 +250,120 @@ INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, acc
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70319, 'ENG-BASE', 'FINAN', '58', '71505', 'Internal transfers', 1);
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70320, 'ENG-BASE', 'FINAN', '59', '71505', 'Provisions for impairment of financial accounts', 1);
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70321, 'ENG-BASE', 'FINAN', '590', '70320', 'Provisions for depreciation of marketable securities', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70322, 'ENG-BASE', 'CHARGE', '60', '71506', 'Shopping', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70323, 'ENG-BASE', 'CHARGE', '601', '70322', 'Stored Procurement - Raw Materials (and Supplies)', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70324, 'ENG-BASE', 'CHARGE', '602', '70322', 'Stored Procurement - Other Supplies', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70325, 'ENG-BASE', 'CHARGE', '603', '70322', 'Inventory Changes (Supplies and Commodities)', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70326, 'ENG-BASE', 'CHARGE', '604', '70322', 'Stored Procurement - Raw Materials (and Supplies)', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70327, 'ENG-BASE', 'CHARGE', '605', '70322', 'Purchase of equipment, works and equipment', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70328, 'ENG-BASE', 'CHARGE', '606', '70322', 'Non-stock purchases of materials and supplies', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70329, 'ENG-BASE', 'CHARGE', '607', '70322', 'Purchases of goods', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70330, 'ENG-BASE', 'CHARGE', '608', '70322', 'Reserved account, where applicable, to the recapitulation of incidental expenses included in purchases', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70331, 'ENG-BASE', 'CHARGE', '609', '70322', 'Discounts, rebates and rebates obtained on purchases', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70332, 'ENG-BASE', 'CHARGE', '61', '71506', 'Outside services', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70333, 'ENG-BASE', 'CHARGE', '611', '70332', 'General subcontracting', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70334, 'ENG-BASE', 'CHARGE', '612', '70332', 'Lease payments', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70335, 'ENG-BASE', 'CHARGE', '613', '70332', 'Rentals', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70336, 'ENG-BASE', 'CHARGE', '614', '70332', 'Rental and condominium expenses', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70337, 'ENG-BASE', 'CHARGE', '615', '70332', 'Maintenance and repairs', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70338, 'ENG-BASE', 'CHARGE', '616', '70332', 'Insurance premiums', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70339, 'ENG-BASE', 'CHARGE', '617', '70332', 'Studies and research', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70340, 'ENG-BASE', 'CHARGE', '618', '70332', 'Various', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70341, 'ENG-BASE', 'CHARGE', '619', '70332', 'Discounts, rebates and rebates obtained on external services', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70342, 'ENG-BASE', 'CHARGE', '62', '71506', 'Other services', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70343, 'ENG-BASE', 'CHARGE', '621', '70342', 'Staff outside the company', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70344, 'ENG-BASE', 'CHARGE', '622', '70342', 'Remuneration of intermediaries and fees', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70345, 'ENG-BASE', 'CHARGE', '623', '70342', 'Advertising, publications, public relations', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70346, 'ENG-BASE', 'CHARGE', '624', '70342', 'Transport of goods and public transport of personnel', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70347, 'ENG-BASE', 'CHARGE', '625', '70342', 'Travel, missions and receptions', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70348, 'ENG-BASE', 'CHARGE', '626', '70342', 'Postal and telecommunications costs', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70349, 'ENG-BASE', 'CHARGE', '627', '70342', 'Banking and related services', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70350, 'ENG-BASE', 'CHARGE', '628', '70342', 'Various', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70351, 'ENG-BASE', 'CHARGE', '629', '70342', 'Discounts, rebates and rebates obtained on other external services', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70352, 'ENG-BASE', 'CHARGE', '63', '71506', 'Taxes other and payments', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70353, 'ENG-BASE', 'CHARGE', '631', '70352', 'Taxes and similar payments on remuneration (tax administrations)', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70354, 'ENG-BASE', 'CHARGE', '633', '70352', 'Taxes and similar payments on remuneration (other bodies)', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70355, 'ENG-BASE', 'CHARGE', '635', '70352', 'Other taxes, duties and similar payments (tax administrations)', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70356, 'ENG-BASE', 'CHARGE', '637', '70352', 'Other taxes, duties and similar payments (other bodies)', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70357, 'ENG-BASE', 'CHARGE', '64', '71506', 'Staff costs', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70358, 'ENG-BASE', 'CHARGE', '641', '70357', 'Remuneration of staff', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70359, 'ENG-BASE', 'CHARGE', '644', '70357', 'Remuneration of the operator''s work', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70360, 'ENG-BASE', 'CHARGE', '645', '70357', 'Social Security and Welfare Expenses', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70361, 'ENG-BASE', 'CHARGE', '646', '70357', 'Personal social contributions of the operator', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70362, 'ENG-BASE', 'CHARGE', '647', '70357', 'Other payroll taxes', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70363, 'ENG-BASE', 'CHARGE', '648', '70357', 'Other staff costs', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70364, 'ENG-BASE', 'CHARGE', '65', '71506', 'Other current operating expenses', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70365, 'ENG-BASE', 'CHARGE', '651', '70364', 'Royalties for concessions, patents, licenses, trademarks, processes, software, rights and similar values', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70366, 'ENG-BASE', 'CHARGE', '653', '70364', 'Attendance fees', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70367, 'ENG-BASE', 'CHARGE', '654', '70364', 'Loss on bad debts', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70368, 'ENG-BASE', 'CHARGE', '655', '70364', 'Share of profit or loss on transactions made jointly', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70369, 'ENG-BASE', 'CHARGE', '658', '70364', 'Miscellaneous operating expenses', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70370, 'ENG-BASE', 'CHARGE', '66', '71506', 'Financial expenses', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70371, 'ENG-BASE', 'CHARGE', '661', '70370', 'Interest charges', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70372, 'ENG-BASE', 'CHARGE', '664', '70370', 'Loss on receivables related to investments', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70373, 'ENG-BASE', 'CHARGE', '665', '70370', 'Discounts granted', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70374, 'ENG-BASE', 'CHARGE', '666', '70370', 'Exchange losses', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70375, 'ENG-BASE', 'CHARGE', '667', '70370', 'Net expense on disposals of marketable securities', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70376, 'ENG-BASE', 'CHARGE', '668', '70370', 'Other financial expenses', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70377, 'ENG-BASE', 'CHARGE', '67', '71506', 'Extraordinary charges', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70378, 'ENG-BASE', 'CHARGE', '671', '70377', 'Exceptional charges on management operations', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70379, 'ENG-BASE', 'CHARGE', '672', '70377', 'Account available to entities to record, in the course of the financial year, expenses over previous financial years', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70380, 'ENG-BASE', 'CHARGE', '675', '70377', 'Book value of assets sold', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70381, 'ENG-BASE', 'CHARGE', '678', '70377', 'Other extraordinary expenses', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70382, 'ENG-BASE', 'CHARGE', '68', '71506', 'Depreciation, amortization and provisions', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70383, 'ENG-BASE', 'CHARGE', '681', '70382', 'Depreciation, amortization and provisions - Operating expenses', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70384, 'ENG-BASE', 'CHARGE', '686', '70382', 'Depreciation, amortization and provisions - Financial expense', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70385, 'ENG-BASE', 'CHARGE', '687', '70382', 'Depreciation, amortization and provisions - Extraordinary expenses', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70386, 'ENG-BASE', 'CHARGE', '69', '71506', 'Employee participation - income tax and assimilated', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70387, 'ENG-BASE', 'CHARGE', '691', '70386', 'Employee participation in results', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70388, 'ENG-BASE', 'CHARGE', '695', '70386', 'Income taxes', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70389, 'ENG-BASE', 'CHARGE', '696', '70386', 'Corporate income tax related to distributions', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70390, 'ENG-BASE', 'CHARGE', '697', '70386', 'Annual corporation tax', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70391, 'ENG-BASE', 'CHARGE', '698', '70386', 'Tax integration', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70392, 'ENG-BASE', 'CHARGE', '699', '70386', 'Products - Reports back deficits', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70393, 'ENG-BASE', 'PROD', '70', '71507', 'Sales of manufactured goods, services, goods', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70394, 'ENG-BASE', 'PROD', '701', '70393', 'Sales of finished products', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70395, 'ENG-BASE', 'PROD', '702', '70393', 'Sales of intermediate products', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70396, 'ENG-BASE', 'PROD', '703', '70393', 'Sales of residual products', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70397, 'ENG-BASE', 'PROD', '704', '70393', 'Works', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70398, 'ENG-BASE', 'PROD', '705', '70393', 'Studies', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70399, 'ENG-BASE', 'PROD', '706', '70393', 'Services', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70400, 'ENG-BASE', 'PROD', '707', '70393', 'Sale of goods', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70401, 'ENG-BASE', 'PROD', '708', '70393', 'Income from ancillary activities', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70402, 'ENG-BASE', 'PROD', '709', '70393', 'Discounts, rebates and rebates granted by the company', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70403, 'ENG-BASE', 'PROD', '71', '71507', 'Stored production (or destocking)', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70404, 'ENG-BASE', 'PROD', '713', '70403', 'Change in stocks (in-process production, products)', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70405, 'ENG-BASE', 'PROD', '72', '71507', 'Immobilised production', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70406, 'ENG-BASE', 'PROD', '721', '70405', 'Intangible assets', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70407, 'ENG-BASE', 'PROD', '722', '70405', 'Property, plant and equipment', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70408, 'ENG-BASE', 'PROD', '74', '71507', 'Operating grants', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70409, 'ENG-BASE', 'PROD', '75', '71507', 'Other management products', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70410, 'ENG-BASE', 'PROD', '751', '70409', 'Royalties for concessions, patents, licenses, trademarks, processes, software, rights and similar values', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70411, 'ENG-BASE', 'PROD', '752', '70409', 'Income from buildings not used for professional purposes', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70412, 'ENG-BASE', 'PROD', '753', '70409', 'Directors'' fees and remuneration of directors, managers, ...', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70413, 'ENG-BASE', 'PROD', '754', '70409', 'Perceived refunds of cooperatives (from surplus)', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70414, 'ENG-BASE', 'PROD', '755', '70409', 'Share of profits on transactions made jointly', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70415, 'ENG-BASE', 'PROD', '758', '70409', 'Miscellaneous current management products', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70416, 'ENG-BASE', 'PROD', '76', '71507', 'Financial products', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70417, 'ENG-BASE', 'PROD', '761', '70416', 'Income from participations', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70418, 'ENG-BASE', 'PROD', '762', '70416', 'Income from other financial assets', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70419, 'ENG-BASE', 'PROD', '763', '70416', 'Revenue from other receivables', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70420, 'ENG-BASE', 'PROD', '764', '70416', 'Income from marketable securities', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70421, 'ENG-BASE', 'PROD', '765', '70416', 'Discounts obtained', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70422, 'ENG-BASE', 'PROD', '766', '70416', 'Exchange gains', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70423, 'ENG-BASE', 'PROD', '767', '70416', 'Net proceeds on disposals of marketable securities', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70424, 'ENG-BASE', 'PROD', '768', '70416', 'Other financial income', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70425, 'ENG-BASE', 'PROD', '77', '71507', 'Exceptional products', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70426, 'ENG-BASE', 'PROD', '771', '70425', 'Extraordinary income from management operations', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70427, 'ENG-BASE', 'PROD', '772', '70425', 'Account available to entities to record, during the financial year, the revenues over previous financial years', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70428, 'ENG-BASE', 'PROD', '775', '70425', 'Proceeds from disposals of assets', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70429, 'ENG-BASE', 'PROD', '777', '70425', 'Share of investment grants transferred to profit or loss for the year', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70430, 'ENG-BASE', 'PROD', '778', '70425', 'Other extraordinary income', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70431, 'ENG-BASE', 'PROD', '78', '71507', 'Reversals of depreciation and provisions', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70432, 'ENG-BASE', 'PROD', '781', '70431', 'Reversals of depreciation and provisions (to be included in revenue)', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70433, 'ENG-BASE', 'PROD', '786', '70431', 'Reversals of provisions for risks (to be recorded in financial income)', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70434, 'ENG-BASE', 'PROD', '787', '70431', 'Reversals of provisions (to be recorded in exceptional income)', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70435, 'ENG-BASE', 'PROD', '79', '71507', 'Transfers of charges', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70436, 'ENG-BASE', 'PROD', '791', '70435', 'Transfers of operating expenses', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70437, 'ENG-BASE', 'PROD', '796', '70435', 'Transfers of financial expenses', 1);
-INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70438, 'ENG-BASE', 'PROD', '797', '70435', 'Transfers of Exceptional Charges', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70322, 'ENG-BASE', 'EXPENSE', '60', '71506', 'Shopping', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70323, 'ENG-BASE', 'EXPENSE', '601', '70322', 'Stored Procurement - Raw Materials (and Supplies)', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70324, 'ENG-BASE', 'EXPENSE', '602', '70322', 'Stored Procurement - Other Supplies', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70325, 'ENG-BASE', 'EXPENSE', '603', '70322', 'Inventory Changes (Supplies and Commodities)', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70326, 'ENG-BASE', 'EXPENSE', '604', '70322', 'Stored Procurement - Raw Materials (and Supplies)', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70327, 'ENG-BASE', 'EXPENSE', '605', '70322', 'Purchase of equipment, works and equipment', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70328, 'ENG-BASE', 'EXPENSE', '606', '70322', 'Non-stock purchases of materials and supplies', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70329, 'ENG-BASE', 'EXPENSE', '607', '70322', 'Purchases of goods', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70330, 'ENG-BASE', 'EXPENSE', '608', '70322', 'Reserved account, where applicable, to the recapitulation of incidental expenses included in purchases', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70331, 'ENG-BASE', 'EXPENSE', '609', '70322', 'Discounts, rebates and rebates obtained on purchases', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70332, 'ENG-BASE', 'EXPENSE', '61', '71506', 'Outside services', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70333, 'ENG-BASE', 'EXPENSE', '611', '70332', 'General subcontracting', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70334, 'ENG-BASE', 'EXPENSE', '612', '70332', 'Lease payments', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70335, 'ENG-BASE', 'EXPENSE', '613', '70332', 'Rentals', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70336, 'ENG-BASE', 'EXPENSE', '614', '70332', 'Rental and condominium expenses', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70337, 'ENG-BASE', 'EXPENSE', '615', '70332', 'Maintenance and repairs', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70338, 'ENG-BASE', 'EXPENSE', '616', '70332', 'Insurance premiums', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70339, 'ENG-BASE', 'EXPENSE', '617', '70332', 'Studies and research', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70340, 'ENG-BASE', 'EXPENSE', '618', '70332', 'Various', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70341, 'ENG-BASE', 'EXPENSE', '619', '70332', 'Discounts, rebates and rebates obtained on external services', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70342, 'ENG-BASE', 'EXPENSE', '62', '71506', 'Other services', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70343, 'ENG-BASE', 'EXPENSE', '621', '70342', 'Staff outside the company', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70344, 'ENG-BASE', 'EXPENSE', '622', '70342', 'Remuneration of intermediaries and fees', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70345, 'ENG-BASE', 'EXPENSE', '623', '70342', 'Advertising, publications, public relations', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70346, 'ENG-BASE', 'EXPENSE', '624', '70342', 'Transport of goods and public transport of personnel', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70347, 'ENG-BASE', 'EXPENSE', '625', '70342', 'Travel, missions and receptions', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70348, 'ENG-BASE', 'EXPENSE', '626', '70342', 'Postal and telecommunications costs', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70349, 'ENG-BASE', 'EXPENSE', '627', '70342', 'Banking and related services', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70350, 'ENG-BASE', 'EXPENSE', '628', '70342', 'Various', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70351, 'ENG-BASE', 'EXPENSE', '629', '70342', 'Discounts, rebates and rebates obtained on other external services', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70352, 'ENG-BASE', 'EXPENSE', '63', '71506', 'Taxes other and payments', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70353, 'ENG-BASE', 'EXPENSE', '631', '70352', 'Taxes and similar payments on remuneration (tax administrations)', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70354, 'ENG-BASE', 'EXPENSE', '633', '70352', 'Taxes and similar payments on remuneration (other bodies)', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70355, 'ENG-BASE', 'EXPENSE', '635', '70352', 'Other taxes, duties and similar payments (tax administrations)', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70356, 'ENG-BASE', 'EXPENSE', '637', '70352', 'Other taxes, duties and similar payments (other bodies)', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70357, 'ENG-BASE', 'EXPENSE', '64', '71506', 'Staff costs', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70358, 'ENG-BASE', 'EXPENSE', '641', '70357', 'Remuneration of staff', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70359, 'ENG-BASE', 'EXPENSE', '644', '70357', 'Remuneration of the operator''s work', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70360, 'ENG-BASE', 'EXPENSE', '645', '70357', 'Social Security and Welfare Expenses', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70361, 'ENG-BASE', 'EXPENSE', '646', '70357', 'Personal social contributions of the operator', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70362, 'ENG-BASE', 'EXPENSE', '647', '70357', 'Other payroll taxes', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70363, 'ENG-BASE', 'EXPENSE', '648', '70357', 'Other staff costs', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70364, 'ENG-BASE', 'EXPENSE', '65', '71506', 'Other current operating expenses', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70365, 'ENG-BASE', 'EXPENSE', '651', '70364', 'Royalties for concessions, patents, licenses, trademarks, processes, software, rights and similar values', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70366, 'ENG-BASE', 'EXPENSE', '653', '70364', 'Attendance fees', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70367, 'ENG-BASE', 'EXPENSE', '654', '70364', 'Loss on bad debts', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70368, 'ENG-BASE', 'EXPENSE', '655', '70364', 'Share of profit or loss on transactions made jointly', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70369, 'ENG-BASE', 'EXPENSE', '658', '70364', 'Miscellaneous operating expenses', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70370, 'ENG-BASE', 'EXPENSE', '66', '71506', 'Financial expenses', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70371, 'ENG-BASE', 'EXPENSE', '661', '70370', 'Interest charges', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70372, 'ENG-BASE', 'EXPENSE', '664', '70370', 'Loss on receivables related to investments', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70373, 'ENG-BASE', 'EXPENSE', '665', '70370', 'Discounts granted', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70374, 'ENG-BASE', 'EXPENSE', '666', '70370', 'Exchange losses', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70375, 'ENG-BASE', 'EXPENSE', '667', '70370', 'Net expense on disposals of marketable securities', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70376, 'ENG-BASE', 'EXPENSE', '668', '70370', 'Other financial expenses', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70377, 'ENG-BASE', 'EXPENSE', '67', '71506', 'Extraordinary charges', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70378, 'ENG-BASE', 'EXPENSE', '671', '70377', 'Exceptional charges on management operations', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70379, 'ENG-BASE', 'EXPENSE', '672', '70377', 'Account available to entities to record, in the course of the financial year, expenses over previous financial years', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70380, 'ENG-BASE', 'EXPENSE', '675', '70377', 'Book value of assets sold', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70381, 'ENG-BASE', 'EXPENSE', '678', '70377', 'Other extraordinary expenses', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70382, 'ENG-BASE', 'EXPENSE', '68', '71506', 'Depreciation, amortization and provisions', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70383, 'ENG-BASE', 'EXPENSE', '681', '70382', 'Depreciation, amortization and provisions - Operating expenses', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70384, 'ENG-BASE', 'EXPENSE', '686', '70382', 'Depreciation, amortization and provisions - Financial expense', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70385, 'ENG-BASE', 'EXPENSE', '687', '70382', 'Depreciation, amortization and provisions - Extraordinary expenses', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70386, 'ENG-BASE', 'EXPENSE', '69', '71506', 'Employee participation - income tax and assimilated', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70387, 'ENG-BASE', 'EXPENSE', '691', '70386', 'Employee participation in results', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70388, 'ENG-BASE', 'EXPENSE', '695', '70386', 'Income taxes', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70389, 'ENG-BASE', 'EXPENSE', '696', '70386', 'Corporate income tax related to distributions', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70390, 'ENG-BASE', 'EXPENSE', '697', '70386', 'Annual corporation tax', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70391, 'ENG-BASE', 'EXPENSE', '698', '70386', 'Tax integration', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70392, 'ENG-BASE', 'EXPENSE', '699', '70386', 'Products - Reports back deficits', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70393, 'ENG-BASE', 'INCOME', '70', '71507', 'Sales of manufactured goods, services, goods', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70394, 'ENG-BASE', 'INCOME', '701', '70393', 'Sales of finished products', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70395, 'ENG-BASE', 'INCOME', '702', '70393', 'Sales of intermediate products', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70396, 'ENG-BASE', 'INCOME', '703', '70393', 'Sales of residual products', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70397, 'ENG-BASE', 'INCOME', '704', '70393', 'Works', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70398, 'ENG-BASE', 'INCOME', '705', '70393', 'Studies', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70399, 'ENG-BASE', 'INCOME', '706', '70393', 'Services', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70400, 'ENG-BASE', 'INCOME', '707', '70393', 'Sale of goods', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70401, 'ENG-BASE', 'INCOME', '708', '70393', 'Income from ancillary activities', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70402, 'ENG-BASE', 'INCOME', '709', '70393', 'Discounts, rebates and rebates granted by the company', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70403, 'ENG-BASE', 'INCOME', '71', '71507', 'Stored production (or destocking)', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70404, 'ENG-BASE', 'INCOME', '713', '70403', 'Change in stocks (in-process production, products)', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70405, 'ENG-BASE', 'INCOME', '72', '71507', 'Immobilised production', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70406, 'ENG-BASE', 'INCOME', '721', '70405', 'Intangible assets', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70407, 'ENG-BASE', 'INCOME', '722', '70405', 'Property, plant and equipment', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70408, 'ENG-BASE', 'INCOME', '74', '71507', 'Operating grants', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70409, 'ENG-BASE', 'INCOME', '75', '71507', 'Other management products', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70410, 'ENG-BASE', 'INCOME', '751', '70409', 'Royalties for concessions, patents, licenses, trademarks, processes, software, rights and similar values', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70411, 'ENG-BASE', 'INCOME', '752', '70409', 'Income from buildings not used for professional purposes', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70412, 'ENG-BASE', 'INCOME', '753', '70409', 'Directors'' fees and remuneration of directors, managers, ...', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70413, 'ENG-BASE', 'INCOME', '754', '70409', 'Perceived refunds of cooperatives (from surplus)', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70414, 'ENG-BASE', 'INCOME', '755', '70409', 'Share of profits on transactions made jointly', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70415, 'ENG-BASE', 'INCOME', '758', '70409', 'Miscellaneous current management products', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70416, 'ENG-BASE', 'INCOME', '76', '71507', 'Financial products', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70417, 'ENG-BASE', 'INCOME', '761', '70416', 'Income from participations', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70418, 'ENG-BASE', 'INCOME', '762', '70416', 'Income from other financial assets', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70419, 'ENG-BASE', 'INCOME', '763', '70416', 'Revenue from other receivables', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70420, 'ENG-BASE', 'INCOME', '764', '70416', 'Income from marketable securities', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70421, 'ENG-BASE', 'INCOME', '765', '70416', 'Discounts obtained', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70422, 'ENG-BASE', 'INCOME', '766', '70416', 'Exchange gains', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70423, 'ENG-BASE', 'INCOME', '767', '70416', 'Net proceeds on disposals of marketable securities', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70424, 'ENG-BASE', 'INCOME', '768', '70416', 'Other financial income', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70425, 'ENG-BASE', 'INCOME', '77', '71507', 'Exceptional products', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70426, 'ENG-BASE', 'INCOME', '771', '70425', 'Extraordinary income from management operations', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70427, 'ENG-BASE', 'INCOME', '772', '70425', 'Account available to entities to record, during the financial year, the revenues over previous financial years', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70428, 'ENG-BASE', 'INCOME', '775', '70425', 'Proceeds from disposals of assets', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70429, 'ENG-BASE', 'INCOME', '777', '70425', 'Share of investment grants transferred to profit or loss for the year', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70430, 'ENG-BASE', 'INCOME', '778', '70425', 'Other extraordinary income', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70431, 'ENG-BASE', 'INCOME', '78', '71507', 'Reversals of depreciation and provisions', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70432, 'ENG-BASE', 'INCOME', '781', '70431', 'Reversals of depreciation and provisions (to be included in revenue)', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70433, 'ENG-BASE', 'INCOME', '786', '70431', 'Reversals of provisions for risks (to be recorded in financial income)', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70434, 'ENG-BASE', 'INCOME', '787', '70431', 'Reversals of provisions (to be recorded in exceptional income)', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70435, 'ENG-BASE', 'INCOME', '79', '71507', 'Transfers of charges', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70436, 'ENG-BASE', 'INCOME', '791', '70435', 'Transfers of operating expenses', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70437, 'ENG-BASE', 'INCOME', '796', '70435', 'Transfers of financial expenses', 1);
+INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 70438, 'ENG-BASE', 'INCOME', '797', '70435', 'Transfers of Exceptional Charges', 1);
diff --git a/htdocs/install/mysql/migration/15.0.0-16.0.0.sql b/htdocs/install/mysql/migration/15.0.0-16.0.0.sql
index f7e7a7a1ba5..acbcbf7b0d3 100644
--- a/htdocs/install/mysql/migration/15.0.0-16.0.0.sql
+++ b/htdocs/install/mysql/migration/15.0.0-16.0.0.sql
@@ -365,7 +365,52 @@ ALTER TABLE llx_bank_account ADD COLUMN pti_in_ctti smallint DEFAULT 0 AFTER dom
-- Set default ticket type to OTHER if no default exists
UPDATE llx_c_ticket_type SET use_default=1 WHERE code='OTHER' AND NOT EXISTS(SELECT * FROM (SELECT * FROM llx_c_ticket_type) AS t WHERE use_default=1);
+
-- Assets - New module
+
+CREATE TABLE llx_asset(
+ rowid integer AUTO_INCREMENT PRIMARY KEY NOT NULL,
+ ref varchar(128) NOT NULL,
+ entity integer DEFAULT 1 NOT NULL,
+ label varchar(255),
+
+ fk_asset_model integer,
+
+ reversal_amount_ht double(24,8),
+ acquisition_value_ht double(24,8) DEFAULT NULL,
+ recovered_vat double(24,8),
+
+ reversal_date date,
+
+ date_acquisition date NOT NULL,
+ date_start date NOT NULL,
+
+ qty real DEFAULT 1 NOT NULL,
+
+ acquisition_type smallint DEFAULT 0 NOT NULL,
+ asset_type smallint DEFAULT 0 NOT NULL,
+
+ not_depreciated integer DEFAULT 0,
+
+ disposal_date date,
+ disposal_amount_ht double(24,8),
+ fk_disposal_type integer,
+ disposal_depreciated integer DEFAULT 0,
+ disposal_subject_to_vat integer DEFAULT 0,
+
+ note_public text,
+ note_private text,
+
+ date_creation datetime NOT NULL,
+ tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ fk_user_creat integer NOT NULL,
+ fk_user_modif integer,
+ last_main_doc varchar(255),
+ import_key varchar(14),
+ model_pdf varchar(255),
+ status integer NOT NULL
+) ENGINE=innodb;
+
ALTER TABLE llx_asset DROP FOREIGN KEY fk_asset_asset_type;
ALTER TABLE llx_asset DROP INDEX idx_asset_fk_asset_type;
diff --git a/htdocs/install/mysql/tables/llx_establishment.sql b/htdocs/install/mysql/tables/llx_establishment.sql
index 1b0d2668cb0..1b1f38074ad 100644
--- a/htdocs/install/mysql/tables/llx_establishment.sql
+++ b/htdocs/install/mysql/tables/llx_establishment.sql
@@ -22,8 +22,9 @@
CREATE TABLE llx_establishment (
rowid integer NOT NULL auto_increment PRIMARY KEY,
entity integer NOT NULL DEFAULT 1,
- label varchar(255) NOT NULL,
+ label varchar(255),
ref varchar(30),
+ label varchar(255) NOT NULL,
name varchar(128),
address varchar(255),
zip varchar(25),
diff --git a/htdocs/knowledgemanagement/core/modules/knowledgemanagement/mod_knowledgerecord_standard.php b/htdocs/knowledgemanagement/core/modules/knowledgemanagement/mod_knowledgerecord_standard.php
index ba5a3c3b391..1e5f69aaa93 100644
--- a/htdocs/knowledgemanagement/core/modules/knowledgemanagement/mod_knowledgerecord_standard.php
+++ b/htdocs/knowledgemanagement/core/modules/knowledgemanagement/mod_knowledgerecord_standard.php
@@ -26,7 +26,7 @@ dol_include_once('/knowledgemanagement/core/modules/knowledgemanagement/modules_
/**
- * Class to manage customer order numbering rules standard
+ * Class to manage the knowledgerecord numbering rules standard
*/
class mod_knowledgerecord_standard extends ModeleNumRefKnowledgeRecord
{
diff --git a/htdocs/knowledgemanagement/knowledgerecord_card.php b/htdocs/knowledgemanagement/knowledgerecord_card.php
index 18f36c192c2..ce3fceeff1c 100644
--- a/htdocs/knowledgemanagement/knowledgerecord_card.php
+++ b/htdocs/knowledgemanagement/knowledgerecord_card.php
@@ -118,7 +118,7 @@ if (empty($reshook)) {
$triggermodname = 'KNOWLEDGEMANAGEMENT_KNOWLEDGERECORD_MODIFY'; // Name of trigger action code to execute when we modify record
- // Upadate / add for lang
+ // Update / add for lang
if (($action == 'update' || $action == 'add') && !empty($permissiontoadd)) {
$object->lang = (GETPOSTISSET('langkm') ? GETPOST('langkm', 'aZ09') : $object->lang);
}
diff --git a/htdocs/langs/ar_IQ/projects.lang b/htdocs/langs/ar_IQ/projects.lang
deleted file mode 100644
index f5f817beac1..00000000000
--- a/htdocs/langs/ar_IQ/projects.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-# Dolibarr language file - Source file is en_US - projects
-ServiceToUseOnLines=Service to use on lines by default
diff --git a/htdocs/langs/de_AT/admin.lang b/htdocs/langs/de_AT/admin.lang
index 54771c2245a..eb37ef1ee98 100644
--- a/htdocs/langs/de_AT/admin.lang
+++ b/htdocs/langs/de_AT/admin.lang
@@ -21,8 +21,6 @@ SessionSaveHandler=Sessionmanager
YourSession=Ihre Anmeldung
Sessions=Benutzeranmeldungen
DolibarrSetup=Dolibarr installieren oder aktualisieren
-InternalUser=interner Nutzer
-ExternalUser=externer Nutzer
InternalUsers=interne Nutzer
ExternalUsers=externe Nutzer
UploadNewTemplate=Neue Vorlage(n) hochladen
diff --git a/htdocs/langs/de_CH/accountancy.lang b/htdocs/langs/de_CH/accountancy.lang
index 6a826327010..a65ad255398 100644
--- a/htdocs/langs/de_CH/accountancy.lang
+++ b/htdocs/langs/de_CH/accountancy.lang
@@ -39,7 +39,6 @@ CountriesNotInEEC=Nicht EWR - Staaten
CountriesInEECExceptMe=Länder im EWR ausser %s
CountriesExceptMe=Alle Staaten, ausser %s
AccountantFiles=Geschäftsvorgänge exportieren
-ExportAccountingSourceDocHelp=With this tool, you can search and export the source events that are used to generate your accountancy. The exported ZIP file will contain the lists of requested items in CSV, as well as their attached files in their original format (PDF, ODT, DOCX...).
ExportAccountingSourceDocHelp2=Die Journale exportierst du im Menu %s - %s.
VueByAccountAccounting=Anzeigen nach Buchhaltungskonto
VueBySubAccountAccounting=Anzeigen nach Nebenbuchkonto
@@ -232,7 +231,6 @@ AccountingAccountForSalesTaxAreDefinedInto=Obacht: Das Buchhaltungskonto für d
NumberOfAccountancyEntries=Anzahl Einträge
NumberOfAccountancyMovements=Anzahl Bewegungen
ACCOUNTING_DISABLE_BINDING_ON_SALES=Bindung & Übertragung in der Verkaufsbuchhaltung deaktivieren (Kundenrechnungen werden in der Buchhaltung nicht berücksichtigt)
-NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "%s" feature, modification and deletion of the lines will DEFINITELY not be possible)
ConfirmExportFile=Bestätigen der Generierung der Buchhaltungsexportdatei ?
ExportDraftJournal=Exportiere Entwurfsjournal
Modelcsv=Exportformat
diff --git a/htdocs/langs/de_CH/admin.lang b/htdocs/langs/de_CH/admin.lang
index 3529a5b6b40..b8e31734903 100644
--- a/htdocs/langs/de_CH/admin.lang
+++ b/htdocs/langs/de_CH/admin.lang
@@ -256,7 +256,6 @@ SetAsDefault=Als Standard definieren
InstalledInto=Installiert im Verzeichnis %s
BarcodeInitForThirdparties=Barcode Init. für alle Partner
BarcodeInitForProductsOrServices=Alle Strichcodes für Produkte oder Services initialisieren oder zurücksetzen
-InitEmptyBarCode=Init value for the %s empty barcodes
EraseAllCurrentBarCode=Alle aktuellen Barcode-Werte löschen
ConfirmEraseAllCurrentBarCode=Wirklich alle aktuellen Barcode-Werte löschen?
AllBarcodeReset=Alle Barcode-Werte wurden entfernt
@@ -396,7 +395,6 @@ Permission215=Lieferanten einrichten
Permission255=Andere Passwörter ändern
Permission272=Rechnungen anzeigen
Permission273=Ausgabe Rechnungen
-Permission300=Barcodes auslesen
Permission301=Barcodes erzeugen und ändern.
Permission331=Lesezeichen einsehen
Permission430=PHP Debug Bar verwenden
diff --git a/htdocs/langs/de_CH/commercial.lang b/htdocs/langs/de_CH/commercial.lang
index edf30db19b1..a3ab0012f82 100644
--- a/htdocs/langs/de_CH/commercial.lang
+++ b/htdocs/langs/de_CH/commercial.lang
@@ -35,8 +35,5 @@ Stats=Verkaufsstatistik
StatusProsp=Interessenten Status
NoLimit=Kein Limit
ToOfferALinkForOnlineSignature=Link zur Digitalen Unterschrift
-WelcomeOnOnlineSignaturePage=Willkommen auf der Seite zum Offerten von %s zu aktzeptieren.
-ThisScreenAllowsYouToSignDocFrom=Hier kannst du die Offerte akzeptieren, unterzeichen oder zurückweisen.
-ThisIsInformationOnDocumentToSign=Hier die Informationen zum Dokument, das zu akzeptieren oder zurückzuweisen ist.
SignatureProposalRef=Unterschrift zur Offerte %s
FeatureOnlineSignDisabled=Hoppla, online unterschreiben ist entweder deaktiviert - oder die Offerte wurde erstellt, bevor online unterschreiben aktiviert worden war.
diff --git a/htdocs/langs/el_CY/members.lang b/htdocs/langs/el_CY/members.lang
deleted file mode 100644
index 5f7a2ff4020..00000000000
--- a/htdocs/langs/el_CY/members.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-# Dolibarr language file - Source file is en_US - members
-ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.
-CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type
diff --git a/htdocs/langs/el_CY/projects.lang b/htdocs/langs/el_CY/projects.lang
deleted file mode 100644
index f5f817beac1..00000000000
--- a/htdocs/langs/el_CY/projects.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-# Dolibarr language file - Source file is en_US - projects
-ServiceToUseOnLines=Service to use on lines by default
diff --git a/htdocs/langs/en_AE/members.lang b/htdocs/langs/en_AE/members.lang
deleted file mode 100644
index 5f7a2ff4020..00000000000
--- a/htdocs/langs/en_AE/members.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-# Dolibarr language file - Source file is en_US - members
-ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.
-CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type
diff --git a/htdocs/langs/en_AE/projects.lang b/htdocs/langs/en_AE/projects.lang
deleted file mode 100644
index f5f817beac1..00000000000
--- a/htdocs/langs/en_AE/projects.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-# Dolibarr language file - Source file is en_US - projects
-ServiceToUseOnLines=Service to use on lines by default
diff --git a/htdocs/langs/en_AU/members.lang b/htdocs/langs/en_AU/members.lang
deleted file mode 100644
index 5f7a2ff4020..00000000000
--- a/htdocs/langs/en_AU/members.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-# Dolibarr language file - Source file is en_US - members
-ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.
-CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type
diff --git a/htdocs/langs/en_AU/projects.lang b/htdocs/langs/en_AU/projects.lang
deleted file mode 100644
index f5f817beac1..00000000000
--- a/htdocs/langs/en_AU/projects.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-# Dolibarr language file - Source file is en_US - projects
-ServiceToUseOnLines=Service to use on lines by default
diff --git a/htdocs/langs/en_CA/members.lang b/htdocs/langs/en_CA/members.lang
deleted file mode 100644
index 5f7a2ff4020..00000000000
--- a/htdocs/langs/en_CA/members.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-# Dolibarr language file - Source file is en_US - members
-ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.
-CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type
diff --git a/htdocs/langs/en_CA/projects.lang b/htdocs/langs/en_CA/projects.lang
deleted file mode 100644
index f5f817beac1..00000000000
--- a/htdocs/langs/en_CA/projects.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-# Dolibarr language file - Source file is en_US - projects
-ServiceToUseOnLines=Service to use on lines by default
diff --git a/htdocs/langs/en_GB/accountancy.lang b/htdocs/langs/en_GB/accountancy.lang
index 0afbc72c036..8ed034a497b 100644
--- a/htdocs/langs/en_GB/accountancy.lang
+++ b/htdocs/langs/en_GB/accountancy.lang
@@ -50,7 +50,6 @@ ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin sorting the page "Links to do" by th
ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin sorting the page "Links done" by the most recent elements
ACCOUNTING_LENGTH_GACCOUNT=Length of the General Ledger accounts (If you set value to 6 here, the account '706' will appear as '706000' on screen)
ACCOUNTING_SELL_JOURNAL=Sales journal
-ACCOUNTING_MISCELLANEOUS_JOURNAL=General journal
ACCOUNTING_ACCOUNT_SUSPENSE=Suspense account
DONATION_ACCOUNTINGACCOUNT=Finance account to register donations
ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Default sales account (used if not defined in the product sheet)
diff --git a/htdocs/langs/en_GB/admin.lang b/htdocs/langs/en_GB/admin.lang
index 40504938dbe..f61f52381f7 100644
--- a/htdocs/langs/en_GB/admin.lang
+++ b/htdocs/langs/en_GB/admin.lang
@@ -39,7 +39,6 @@ UMaskExplanation=This parameter allows you to define permissions set by default
ListOfDirectories=List of OpenDocument template directories
ListOfDirectoriesForModelGenODT=List of directories containing template files in OpenDocument format.
Put here full path of directories. Add a carriage return between each directory. To add a directory of the GED module, add here DOL_DATA_ROOT/ecm/yourdirectoryname.
Files in those directories must end with .odt or .ods.
FollowingSubstitutionKeysCanBeUsed= To learn how to create your .odt document templates, before storing them in those directories, read wiki documentation:
-InitEmptyBarCode=Init value for the %s empty barcodes
Module50200Name=PayPal
DictionaryAccountancyJournal=Finance journals
CompanyZip=Postcode
diff --git a/htdocs/langs/en_GB/members.lang b/htdocs/langs/en_GB/members.lang
deleted file mode 100644
index 5f7a2ff4020..00000000000
--- a/htdocs/langs/en_GB/members.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-# Dolibarr language file - Source file is en_US - members
-ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.
-CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type
diff --git a/htdocs/langs/en_GB/projects.lang b/htdocs/langs/en_GB/projects.lang
deleted file mode 100644
index f5f817beac1..00000000000
--- a/htdocs/langs/en_GB/projects.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-# Dolibarr language file - Source file is en_US - projects
-ServiceToUseOnLines=Service to use on lines by default
diff --git a/htdocs/langs/en_GB/trips.lang b/htdocs/langs/en_GB/trips.lang
index 31e58b7f935..b9af13b26fa 100644
--- a/htdocs/langs/en_GB/trips.lang
+++ b/htdocs/langs/en_GB/trips.lang
@@ -1,8 +1,8 @@
# Dolibarr language file - Source file is en_US - trips
-TripsAndExpensesStatistics=Expense report statistics
-FeesKilometersOrAmout=Amount or Miles
-TripNDF=Information expense report
-TF_METRO=Tube
-ErrorDoubleDeclaration=You have submitted another expense report in a similar date range.
BrouillonnerTrip=Move expense report status back to "Draft"
ConfirmBrouillonnerTrip=Are you sure you want to move this expense report status back to "Draft"?
+ErrorDoubleDeclaration=You have submitted another expense report in a similar date range.
+FeesKilometersOrAmout=Amount or Miles
+TripNDF=Information expense report
+TripsAndExpensesStatistics=Expense report statistics
+TF_METRO=Tube
diff --git a/htdocs/langs/en_IN/members.lang b/htdocs/langs/en_IN/members.lang
deleted file mode 100644
index 5f7a2ff4020..00000000000
--- a/htdocs/langs/en_IN/members.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-# Dolibarr language file - Source file is en_US - members
-ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.
-CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type
diff --git a/htdocs/langs/en_SG/members.lang b/htdocs/langs/en_SG/members.lang
deleted file mode 100644
index 5f7a2ff4020..00000000000
--- a/htdocs/langs/en_SG/members.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-# Dolibarr language file - Source file is en_US - members
-ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.
-CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type
diff --git a/htdocs/langs/en_SG/projects.lang b/htdocs/langs/en_SG/projects.lang
deleted file mode 100644
index f5f817beac1..00000000000
--- a/htdocs/langs/en_SG/projects.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-# Dolibarr language file - Source file is en_US - projects
-ServiceToUseOnLines=Service to use on lines by default
diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang
index bb4451de682..40482298e63 100644
--- a/htdocs/langs/en_US/accountancy.lang
+++ b/htdocs/langs/en_US/accountancy.lang
@@ -165,12 +165,14 @@ ACCOUNTANCY_COMBO_FOR_AUX=Enable combo list for subsidiary account (may be slow
ACCOUNTING_DATE_START_BINDING=Define a date to start binding & transfer in accountancy. Below this date, the transactions will not be transferred to accounting.
ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=On accountancy transfer, what is the period selected by default
-ACCOUNTING_SELL_JOURNAL=Sell journal
-ACCOUNTING_PURCHASE_JOURNAL=Purchase journal
-ACCOUNTING_MISCELLANEOUS_JOURNAL=Miscellaneous journal
+ACCOUNTING_SELL_JOURNAL=Sales journal (sales and returns)
+ACCOUNTING_PURCHASE_JOURNAL=Purchase journal (purchase and returns)
+ACCOUNTING_BANK_JOURNAL=Cash journal (receipts and disbursements)
ACCOUNTING_EXPENSEREPORT_JOURNAL=Expense report journal
-ACCOUNTING_SOCIAL_JOURNAL=Social journal
+ACCOUNTING_MISCELLANEOUS_JOURNAL=General journal
ACCOUNTING_HAS_NEW_JOURNAL=Has new Journal
+ACCOUNTING_INVENTORY_JOURNAL=Inventory journal
+ACCOUNTING_SOCIAL_JOURNAL=Social journal
ACCOUNTING_RESULT_PROFIT=Result accounting account (Profit)
ACCOUNTING_RESULT_LOSS=Result accounting account (Loss)
@@ -463,6 +465,5 @@ FECFormatMulticurrencyCode=Multicurrency code (Idevise)
DateExport=Date export
WarningReportNotReliable=Warning, this report is not based on the Ledger, so does not contains transaction modified manually in the Ledger. If your journalization is up to date, the bookkeeping view is more accurate.
ExpenseReportJournal=Expense Report Journal
-InventoryJournal=Inventory Journal
NAccounts=%s accounts
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index 502953f0140..3a1056e1be7 100644
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -2311,7 +2311,6 @@ MAIN_MAIL_SMTPS_AUTH_TYPE=Authentification method
UsePassword=Use a password
UseOauth=Use a OAUTH token
Images=Images
-Posts=Posts
MaxNumberOfImagesInGetPost=Max number of images allowed in a HTML field submitted in a form
MaxNumberOfPostOnPublicPagesByIP=Max number of posts on public pages with an IP Address
CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is:
diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang
index f732641fc79..6ff5a63196a 100644
--- a/htdocs/langs/en_US/errors.lang
+++ b/htdocs/langs/en_US/errors.lang
@@ -14,6 +14,7 @@ ErrorLoginAlreadyExists=Login %s already exists.
ErrorGroupAlreadyExists=Group %s already exists.
ErrorEmailAlreadyExists=Email %s already exists.
ErrorRecordNotFound=Record not found.
+ErrorRecordNotFoundShort=Not found
ErrorFailToCopyFile=Failed to copy file '%s' into '%s'.
ErrorFailToCopyDir=Failed to copy directory '%s' into '%s'.
ErrorFailToRenameFile=Failed to rename file '%s' into '%s'.
diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang
index 2b021f406f3..325e27b6606 100644
--- a/htdocs/langs/en_US/main.lang
+++ b/htdocs/langs/en_US/main.lang
@@ -1146,10 +1146,14 @@ UpdateForAllLines=Update for all lines
OnHold=On hold
Civility=Civility
AffectTag=Affect Tag
+SetSupervisor=Set Supervisor
CreateExternalUser=Create external user
ConfirmAffectTag=Bulk Tag Affect
+ConfirmSetSupervisor=Bulk Supervisor Set
ConfirmAffectTagQuestion=Are you sure you want to affect tags to the %s selected record(s)?
+ConfirmSetSupervisorQuestion=Are you sure you want to set supervisor to the %s selected record(s)?
CategTypeNotFound=No tag type found for type of records
+SupervisorNotFound=Supervisor not found
CopiedToClipboard=Copied to clipboard
InformationOnLinkToContract=This amount is only the total of all the lines of the contract. No notion of time is taken into consideration.
ConfirmCancel=Are you sure you want to cancel
diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang
index aebe3affdae..d774a8e7434 100644
--- a/htdocs/langs/en_US/members.lang
+++ b/htdocs/langs/en_US/members.lang
@@ -36,6 +36,7 @@ DateEndSubscription=End date of membership
EndSubscription=End of membership
SubscriptionId=Contribution ID
WithoutSubscription=Without contribution
+WaitingSubscription=Waiting contribution
MemberId=Member Id
MemberRef=Member Ref
NewMember=New member
diff --git a/htdocs/langs/en_US/modulebuilder.lang b/htdocs/langs/en_US/modulebuilder.lang
index 0e11bef2bf1..6de9ada7e4d 100644
--- a/htdocs/langs/en_US/modulebuilder.lang
+++ b/htdocs/langs/en_US/modulebuilder.lang
@@ -56,6 +56,8 @@ RegenerateMissingFiles=Generate missing files
SpecificationFile=File of documentation
LanguageFile=File for language
ObjectProperties=Object Properties
+Property=Propery
+PropertyDesc=A property is an attribute that characterizes an object. This attribute has a code, a label and a type with several options.
ConfirmDeleteProperty=Are you sure you want to delete the property %s? This will change code in PHP class but also remove column from table definition of object.
NotNull=Not NULL
NotNullDesc=1=Set database to NOT NULL, 0=Allow null values, -1=Allow null values by forcing value to NULL if empty ('' or 0)
@@ -90,7 +92,8 @@ ListOfDictionariesEntries=List of dictionaries entries
ListOfPermissionsDefined=List of defined permissions
SeeExamples=See examples here
EnabledDesc=Condition to have this field active.
Examples: 1 isModEnabled('MAIN_MODULE_MYMODULE') getDolGlobalString('MYMODULE_OPTION')==2
-VisibleDesc=Is the field visible ? (Examples: 0=Never visible, 1=Visible on list and create/update/view forms, 2=Visible on list only, 3=Visible on create/update/view form only (not list), 4=Visible on list and update/view form only (not create), 5=Visible on list end view form only (not create, not update).
Using a negative value means field is not shown by default on list but can be selected for viewing).
It can be an expression, for example: preg_match('/public/', $_SERVER['PHP_SELF'])?0:1 $user->hasRight('holiday', 'define_holiday')?1:5
+VisibleDesc=Is the field visible ? (Examples: 0=Never visible, 1=Visible on list and create/update/view forms, 2=Visible on list only, 3=Visible on create/update/view form only (not list), 4=Visible on list and update/view form only (not create), 5=Visible on list end view form only (not create, not update).
Using a negative value means field is not shown by default on list but can be selected for viewing).
+ItCanBeAnExpression=It can be an expression. Example: preg_match('/public/', $_SERVER['PHP_SELF'])?0:1 $user->hasRight('holiday', 'define_holiday')?1:5
DisplayOnPdfDesc=Display this field on compatible PDF documents, you can manage position with "Position" field. For document : 0 = not displayed 1 = display 2 = display only if not empty
For document lines : 0 = not displayed 1 = displayed in a column 3 = display in line description column after the description 4 = display in description column after the description only if not empty
DisplayOnPdf=On PDF
IsAMeasureDesc=Can the value of field be cumulated to get a total into list? (Examples: 1 or 0)
@@ -144,13 +147,15 @@ CSSViewClass=CSS for read form
CSSListClass=CSS for list
NotEditable=Not editable
ForeignKey=Foreign key
-TypeOfFieldsHelp=Type of fields: varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]] '1' means we add a + button after the combo to create the record 'filter' is a sql condition, example: 'status=1 AND fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)'
+ForeignKeyDesc=If the value of this field must be guaranted to exists into another table. Enter here a value matching syntax: tablename.parentfieldtocheck
+TypeOfFieldsHelp=Example: varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]] '1' means we add a + button after the combo to create the record 'filter' is a sql condition, example: 'status=1 AND fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)'
+TypeOfFieldsHelpIntro=This is the type of the field/attribute.
AsciiToHtmlConverter=Ascii to HTML converter
AsciiToPdfConverter=Ascii to PDF converter
TableNotEmptyDropCanceled=Table not empty. Drop has been canceled.
ModuleBuilderNotAllowed=The module builder is available but not allowed to your user.
ImportExportProfiles=Import and export profiles
-ValidateModBuilderDesc=Set this to 1 if you want to have the method $this->validateField() of object being called to validate the content of the field during insert or upadate. Set 0 if there is no validation required.
+ValidateModBuilderDesc=Set this to 1 if you want to have the method $this->validateField() of object being called to validate the content of the field during insert or update. Set 0 if there is no validation required.
WarningDatabaseIsNotUpdated=Warning: The database is not updated automatically, you must destroy tables and disable-enable the module to have tables recreated
LinkToParentMenu=Parent menu (fk_xxxxmenu)
ListOfTabsEntries=List of tab entries
diff --git a/htdocs/langs/en_US/mrp.lang b/htdocs/langs/en_US/mrp.lang
index 44fb4457999..82196b584bd 100644
--- a/htdocs/langs/en_US/mrp.lang
+++ b/htdocs/langs/en_US/mrp.lang
@@ -114,3 +114,4 @@ MoChildGenerate=Generate Child Mo
ParentMo=MO Parent
MOChild=MO Child
BomCantAddChildBom=The nomenclature %s is already present in the tree leading to the nomenclature %s
+BOMNetNeeds = BOM Net Needs
diff --git a/htdocs/langs/en_US/stripe.lang b/htdocs/langs/en_US/stripe.lang
index 3ea0cf2354b..2a3f988cebf 100644
--- a/htdocs/langs/en_US/stripe.lang
+++ b/htdocs/langs/en_US/stripe.lang
@@ -61,6 +61,7 @@ DeleteACard=Delete Card
ConfirmDeleteCard=Are you sure you want to delete this Credit or Debit card?
CreateCustomerOnStripe=Create customer on Stripe
CreateCardOnStripe=Create card on Stripe
+CreateBANOnStripe=Create bank on Stripe
ShowInStripe=Show in Stripe
StripeUserAccountForActions=User account to use for email notification of some Stripe events (Stripe payouts)
StripePayoutList=List of Stripe payouts
@@ -69,4 +70,5 @@ ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mo
PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period.
ClickHereToTryAgain=Click here to try again...
CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s
-TERMINAL_LOCATION=Location (address) for terminals
\ No newline at end of file
+TERMINAL_LOCATION=Location (address) for terminals
+RequestDirectDebitWithStripe=Request Direct Debit with Stripe
\ No newline at end of file
diff --git a/htdocs/langs/en_ZA/members.lang b/htdocs/langs/en_ZA/members.lang
deleted file mode 100644
index 5f7a2ff4020..00000000000
--- a/htdocs/langs/en_ZA/members.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-# Dolibarr language file - Source file is en_US - members
-ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.
-CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type
diff --git a/htdocs/langs/en_ZA/projects.lang b/htdocs/langs/en_ZA/projects.lang
deleted file mode 100644
index f5f817beac1..00000000000
--- a/htdocs/langs/en_ZA/projects.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-# Dolibarr language file - Source file is en_US - projects
-ServiceToUseOnLines=Service to use on lines by default
diff --git a/htdocs/langs/es_AR/admin.lang b/htdocs/langs/es_AR/admin.lang
index 76c93629d16..beedcee5010 100644
--- a/htdocs/langs/es_AR/admin.lang
+++ b/htdocs/langs/es_AR/admin.lang
@@ -252,7 +252,6 @@ UpdateServerOffline=Actualizar servidor fuera de línea
WithCounter=Administrar un contador
AddCRIfTooLong=No hay ajuste de texto automático. El texto que es demasiado largo no será mostrado en el documento. Por favor agregar saltos de línea en el área de texto si es necesario.
String=Cuerda
-InitEmptyBarCode=Init value for the %s empty barcodes
Module30Name=Facturas
Module40Desc=Gestión de proveedores y compras (órdenes de compra y facturas de proveedores)
Module52Name=Inventarios(Stocks)
diff --git a/htdocs/langs/es_AR/commercial.lang b/htdocs/langs/es_AR/commercial.lang
index d85913580a1..b8b70ff7a01 100644
--- a/htdocs/langs/es_AR/commercial.lang
+++ b/htdocs/langs/es_AR/commercial.lang
@@ -60,6 +60,5 @@ Stats=Estadísticas de ventas
StatusProsp=Estado del cliente potencial
DraftPropals=Presupuestos en borrador
ToOfferALinkForOnlineSignature=Vínculo para firma digital
-ThisScreenAllowsYouToSignDocFrom=Esta pantalla te permitirá aceptar, firmar o rechazar un presupuesto
SignatureProposalRef=Firma del presupuesto %s
FeatureOnlineSignDisabled=La funcionalidad para la firma digital está deshabilitada o el documento fue generado antes de habilitar la función
diff --git a/htdocs/langs/es_AR/mailmanspip.lang b/htdocs/langs/es_AR/mailmanspip.lang
index 700cfd3bb70..840c7e7dd58 100644
--- a/htdocs/langs/es_AR/mailmanspip.lang
+++ b/htdocs/langs/es_AR/mailmanspip.lang
@@ -7,7 +7,6 @@ MailmanCreationSuccess=La prueba de suscripción se ha ejecutado correctamente
MailmanDeletionSuccess=La prueba de desuscripción se ha ejecutado correctamente
SynchroMailManEnabled=Será realizada una actualización en la lista de envío de correos
SynchroSpipEnabled=Será realizada una actualización en el módulo SPIP
-DescADHERENT_MAILMAN_ADMINPW=Contraseña de administrador de Envío de Correos
DescADHERENT_MAILMAN_URL=URL para suscripciones a la lista de envío de correos
DescADHERENT_MAILMAN_UNSUB_URL=URL para desuscripciones a la lista de envío de correos
DescADHERENT_MAILMAN_LISTS=Lista(s) para inscripción automática de nuevos miembros (separados por una coma)
diff --git a/htdocs/langs/es_BO/members.lang b/htdocs/langs/es_BO/members.lang
deleted file mode 100644
index 5f7a2ff4020..00000000000
--- a/htdocs/langs/es_BO/members.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-# Dolibarr language file - Source file is en_US - members
-ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.
-CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type
diff --git a/htdocs/langs/es_BO/projects.lang b/htdocs/langs/es_BO/projects.lang
deleted file mode 100644
index f5f817beac1..00000000000
--- a/htdocs/langs/es_BO/projects.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-# Dolibarr language file - Source file is en_US - projects
-ServiceToUseOnLines=Service to use on lines by default
diff --git a/htdocs/langs/es_CL/accountancy.lang b/htdocs/langs/es_CL/accountancy.lang
index 2bff8d60933..9a12ca9824b 100644
--- a/htdocs/langs/es_CL/accountancy.lang
+++ b/htdocs/langs/es_CL/accountancy.lang
@@ -217,4 +217,3 @@ ToBind=Líneas para enlazar
UseMenuToSetBindindManualy=Líneas aún no enlazadas, use el menú %s para hacer el enlace manualmente
WarningReportNotReliable=Advertencia, este informe no se basa en el Libro mayor, por lo que no contiene la transacción modificada manualmente en el Libro mayor. Si su publicación está actualizada, la vista de contabilidad es más precisa.
ExpenseReportJournal=Diario del informe de gastos
-InventoryJournal=Revista de inventario
diff --git a/htdocs/langs/es_CL/admin.lang b/htdocs/langs/es_CL/admin.lang
index aa792dc23db..7e7c5a27736 100644
--- a/htdocs/langs/es_CL/admin.lang
+++ b/htdocs/langs/es_CL/admin.lang
@@ -340,7 +340,6 @@ DefaultLink=Enlace predeterminado
ValueOverwrittenByUserSetup=Advertencia, este valor puede ser sobrescrito por la configuración específica del usuario (cada usuario puede establecer su propia URL de clicktodial)
BarcodeInitForProductsOrServices=Inicialización o reinicio masivo del código de barras para productos o servicios
CurrentlyNWithoutBarCode=Actualmente, tiene %s registros en %s %s sin código de barras definido.
-InitEmptyBarCode=Init value for the %s empty barcodes
EraseAllCurrentBarCode=Borrar todos los valores actuales del código de barras
ConfirmEraseAllCurrentBarCode=¿Seguro que quieres borrar todos los valores actuales del código de barras?
AllBarcodeReset=Todos los valores del código de barras han sido eliminados
@@ -574,7 +573,6 @@ Permission281=Leer contactos
Permission291=Tarifas de lectura
Permission292=Establecer permisos sobre las tarifas
Permission293=Modificar las tarifas del cliente.
-Permission300=Leer codigos de barras
Permission301=Crear / modificar códigos de barras
Permission311=Leer Servicios
Permission312=Asignar servicio / suscripción al contrato
diff --git a/htdocs/langs/es_CL/commercial.lang b/htdocs/langs/es_CL/commercial.lang
index 33c14696715..2308c317fae 100644
--- a/htdocs/langs/es_CL/commercial.lang
+++ b/htdocs/langs/es_CL/commercial.lang
@@ -57,6 +57,4 @@ ActionAC_AUTO=Eventos insertados automáticamente
Stats=Estadísticas de ventas
StatusProsp=Estado de la perspectiva
DraftPropals=Cotizaciones borrador
-WelcomeOnOnlineSignaturePage=Bienvenido a la página para aceptar propuestas comerciales de %s
-ThisScreenAllowsYouToSignDocFrom=Esta pantalla le permite aceptar y firmar, o rechazar, un presupuesto/propuesta comercial
SignatureProposalRef=Firma de cotización / propuesta comercial %s
diff --git a/htdocs/langs/es_CL/errors.lang b/htdocs/langs/es_CL/errors.lang
index 8c45fd1469b..93bfc615ce6 100644
--- a/htdocs/langs/es_CL/errors.lang
+++ b/htdocs/langs/es_CL/errors.lang
@@ -69,7 +69,6 @@ ErrorFieldValueNotIn=El campo %s : ' %s ' no es un valor e
ErrorFieldRefNotIn=Campo %s : ' %s ' no es una referencia %s existente
ErrorsOnXLines=Se encontraron errores %s
ErrorFileIsInfectedWithAVirus=El programa antivirus no pudo validar el archivo (el archivo podría estar infectado por un virus)
-ErrorSpecialCharNotAllowedForField=Los caracteres especiales no están permitidos para el campo "%s"
ErrorNumRefModel=Existe una referencia en la base de datos (%s) y no es compatible con esta regla de numeración. Elimine la referencia de registro o renombrada para activar este módulo.
ErrorQtyTooLowForThisSupplier=Cantidad demasiado baja para este proveedor o ningún precio definido en este producto para este proveedor
ErrorOrdersNotCreatedQtyTooLow=Algunos pedidos no se han creado debido a cantidades demasiado bajas
diff --git a/htdocs/langs/es_CL/mailmanspip.lang b/htdocs/langs/es_CL/mailmanspip.lang
index 34a39aa742a..fdbf3c00d12 100644
--- a/htdocs/langs/es_CL/mailmanspip.lang
+++ b/htdocs/langs/es_CL/mailmanspip.lang
@@ -6,7 +6,6 @@ MailmanCreationSuccess=La prueba de suscripción se ejecutó con éxito
MailmanDeletionSuccess=La prueba de cancelación se ejecutó con éxito
SynchroMailManEnabled=Se realizará una actualización de Mailman
SynchroSpipEnabled=Se realizará una actualización de Spip
-DescADHERENT_MAILMAN_ADMINPW=Contraseña de administrador de Mailman
DescADHERENT_MAILMAN_URL=URL para las suscripciones de Mailman
DescADHERENT_MAILMAN_UNSUB_URL=URL para la cancelación de suscripciones de Mailman
DescADHERENT_MAILMAN_LISTS=Lista (s) para la inscripción automática de nuevos miembros (separados por una coma)
diff --git a/htdocs/langs/es_CL/members.lang b/htdocs/langs/es_CL/members.lang
index a226d236563..d8ea715ef45 100644
--- a/htdocs/langs/es_CL/members.lang
+++ b/htdocs/langs/es_CL/members.lang
@@ -53,7 +53,6 @@ YourMembershipWasValidated=Su membresía fue validada
YourMembershipWasCanceled=Su membresía fue cancelada
CardContent=Contenido de su tarjeta de miembro
ThisIsContentOfYourMembershipRequestWasReceived=Queremos informarle que se recibió su solicitud de membresía.
-ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.
ThisIsContentOfSubscriptionReminderEmail=Queremos informarle que su suscripción está a punto de caducar o ya ha caducado (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). Esperamos que lo renueven.
ThisIsContentOfYourCard=Este es un resumen de la información que tenemos sobre usted. Por favor, póngase en contacto con nosotros si algo es incorrecto.
DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Asunto de la notificación por correo electrónico recibida en caso de autoinscripción de un invitado
@@ -85,7 +84,6 @@ MenuMembersStats=Estadística
NewMemberbyWeb=Nuevo miembro agregado. Esperando aprobacion
NewMemberForm=Nueva forma de miembro
TurnoverOrBudget=Volumen de ventas (empresa) o Cotización (asociación o colectivo)
-CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type
MEMBER_NEWFORM_PAYONLINE=Salte en la página integrada de pago en línea
MembersStatisticsByProperties=Estadísticas de miembros por naturaleza
NoEmailSentToMember=No se envió ningún correo electrónico al miembro
diff --git a/htdocs/langs/es_CL/projects.lang b/htdocs/langs/es_CL/projects.lang
index aaae5a794c4..7afb36f5a70 100644
--- a/htdocs/langs/es_CL/projects.lang
+++ b/htdocs/langs/es_CL/projects.lang
@@ -156,6 +156,5 @@ ModuleSalaryToDefineHourlyRateMustBeEnabled=El módulo 'Salarios' debe e
NewTaskRefSuggested=Referencia de tarea ya utilizada, se requiere una nueva referencia de tarea
TimeSpentForIntervention=Tiempo dedicado
TimeSpentForInvoice=Tiempo dedicado
-ServiceToUseOnLines=Service to use on lines by default
InvoiceGeneratedFromTimeSpent=La factura %s se ha generado desde el tiempo invertido en el proyecto
UsageBillTimeShort=Uso: Bill time
diff --git a/htdocs/langs/es_CL/ticket.lang b/htdocs/langs/es_CL/ticket.lang
index c1f9984feda..5a4f2f39b72 100644
--- a/htdocs/langs/es_CL/ticket.lang
+++ b/htdocs/langs/es_CL/ticket.lang
@@ -73,8 +73,6 @@ TicketDurationAutoInfos=Duración calculada automáticamente a partir de interve
SendMessageByEmail=Enviar mensaje por correo electrónico
ErrorMailRecipientIsEmptyForSendTicketMessage=El destinatario está vacío. Sin enviar correo electrónico
TicketMessageMailIntroHelp=Este texto se agrega solo al comienzo del correo electrónico y no se guardará.
-TicketMessageMailSignatureHelp=Este texto se agrega solo al final del correo electrónico y no se guardará.
-TicketMessageMailSignatureLabelAdmin=Firma del correo electrónico de respuesta
TicketMessageHelp=Solo este texto se guardará en la lista de mensajes en la tarjeta de Tickets.
TicketTimeToRead=Tiempo transcurrido antes de leer
TicketContacts=Ticket de contactos
diff --git a/htdocs/langs/es_CO/accountancy.lang b/htdocs/langs/es_CO/accountancy.lang
index 8e9afa1c3f8..43dd8df9360 100644
--- a/htdocs/langs/es_CO/accountancy.lang
+++ b/htdocs/langs/es_CO/accountancy.lang
@@ -33,7 +33,6 @@ GroupIsEmptyCheckSetup=El grupo está vacío, verifique la configuración del gr
DetailByAccount=Mostrar detalle por cuenta
AccountWithNonZeroValues=Cuentas con valores distintos de cero.
CountriesInEECExceptMe=Países en EEC excepto %s
-ExportAccountingSourceDocHelp=With this tool, you can search and export the source events that are used to generate your accountancy. The exported ZIP file will contain the lists of requested items in CSV, as well as their attached files in their original format (PDF, ODT, DOCX...).
MainAccountForCustomersNotDefined=Cuenta contable principal para clientes no definidos en la configuración.
MainAccountForSuppliersNotDefined=Cuenta de contabilidad principal para proveedores no definidos en la configuración.
MainAccountForUsersNotDefined=Cuenta de contabilidad principal para usuarios no definidos en la configuración.
@@ -215,7 +214,6 @@ AccountingAccountForSalesTaxAreDefinedInto=Nota: la cuenta contable del impuesto
NumberOfAccountancyMovements=Numero de movimientos
ACCOUNTING_DISABLE_BINDING_ON_SALES=Deshabilitar la vinculación y la transferencia en la contabilidad de las ventas (las facturas de los clientes no se tendrán en cuenta en la contabilidad)
ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Deshabilite la vinculación y transferencia en contabilidad en compras (las facturas de proveedores no se tendrán en cuenta en la contabilidad)
-NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "%s" feature, modification and deletion of the lines will DEFINITELY not be possible)
ExportDraftJournal=Exportar borrador de revista
Selectmodelcsv=Selecciona un modelo de exportación.
Modelcsv_CEGID=Exportación para CEGID Expert Comptabilité
@@ -277,4 +275,3 @@ FECFormatCredit=Crédito (crédito)
DateExport=Exportación de fecha
WarningReportNotReliable=Advertencia, este informe no se basa en el Libro mayor, por lo que no contiene la transacción modificada manualmente en el Libro mayor. Si su publicación está actualizada, la vista de contabilidad es más precisa.
ExpenseReportJournal=Diario de informe de gastos
-InventoryJournal=Diario de inventario
diff --git a/htdocs/langs/es_CO/admin.lang b/htdocs/langs/es_CO/admin.lang
index d6fec62304b..af4d57d1984 100644
--- a/htdocs/langs/es_CO/admin.lang
+++ b/htdocs/langs/es_CO/admin.lang
@@ -362,7 +362,6 @@ ValueOverwrittenByUserSetup=Advertencia, este valor puede ser sobrescrito por la
BarcodeInitForThirdparties=init para código de barras masivo para terceros
BarcodeInitForProductsOrServices=Código de barras masivo de inicio o reinicio para productos o servicios.
CurrentlyNWithoutBarCode=Actualmente, tienes el registro %s en %s %s sin un código de barras definido.
-InitEmptyBarCode=Init value for the %s empty barcodes
EraseAllCurrentBarCode=Borrar todos los valores de código de barras actuales
ConfirmEraseAllCurrentBarCode=¿Está seguro de que desea borrar todos los valores de código de barras actuales?
AllBarcodeReset=Todos los valores de código de barras han sido eliminados
diff --git a/htdocs/langs/es_CO/commercial.lang b/htdocs/langs/es_CO/commercial.lang
index 4ecf1bf3338..a682aab5fd4 100644
--- a/htdocs/langs/es_CO/commercial.lang
+++ b/htdocs/langs/es_CO/commercial.lang
@@ -53,8 +53,5 @@ Stats=Estadísticas de ventas
StatusProsp=Estado cliente potencial
DraftPropals=Borrador de propuestas comerciales
ToOfferALinkForOnlineSignature=Enlace para firma en línea
-WelcomeOnOnlineSignaturePage=Bienvenido a la página para aceptar propuestas comerciales de %s
-ThisScreenAllowsYouToSignDocFrom=Esta pantalla le permite aceptar y firmar, o rechazar, una cotización / propuesta comercial
-ThisIsInformationOnDocumentToSign=Esta es información en el documento para aceptar o rechazar
SignatureProposalRef=Firma de cotización / propuesta comercial %s
FeatureOnlineSignDisabled=Característica para la firma en línea deshabilitada o documento generado antes de que se habilitara la característica
diff --git a/htdocs/langs/es_CO/errors.lang b/htdocs/langs/es_CO/errors.lang
index 2e958b678d9..23b931b6d88 100644
--- a/htdocs/langs/es_CO/errors.lang
+++ b/htdocs/langs/es_CO/errors.lang
@@ -73,7 +73,6 @@ ErrorWrongValueForField=El campo %s: '%s' no coincide con la regla
ErrorFieldValueNotIn=El campo %s : ' %s ' no es un valor que se encuentra en el campo %s de %s
ErrorFieldRefNotIn=El campo%s: '%s' no es una referia existente %s
ErrorFileIsInfectedWithAVirus=El programa antivirus no pudo validar el archivo (el archivo podría estar infectado por un virus)
-ErrorSpecialCharNotAllowedForField=No se permiten caracteres especiales para el campo "%s"
ErrorNumRefModel=Existe una referencia en la base de datos (%s) y no es compatible con esta regla de numeración. Elimine el registro o la referencia renombrada para activar este módulo.
ErrorQtyTooLowForThisSupplier=Cantidad demasiado baja para este proveedor o ningún precio definido en este producto para este proveedor
ErrorOrdersNotCreatedQtyTooLow=Algunos pedidos no se han creado debido a cantidades demasiado bajas.
diff --git a/htdocs/langs/es_CO/mailmanspip.lang b/htdocs/langs/es_CO/mailmanspip.lang
index 98090117641..eaf04c1a531 100644
--- a/htdocs/langs/es_CO/mailmanspip.lang
+++ b/htdocs/langs/es_CO/mailmanspip.lang
@@ -6,7 +6,6 @@ MailmanCreationSuccess=La prueba de suscripción se ejecutó con éxito
MailmanDeletionSuccess=La prueba de cancelación de suscripción se ejecutó con éxito
SynchroMailManEnabled=Se realizará una actualización de Mailman
SynchroSpipEnabled=Se realizará una actualización de Spip
-DescADHERENT_MAILMAN_ADMINPW=Contraseña de administrador de Mailman
DescADHERENT_MAILMAN_URL=URL de las suscripciones de Mailman
DescADHERENT_MAILMAN_UNSUB_URL=URL para darse de baja de Mailman
DescADHERENT_MAILMAN_LISTS=Lista(s) para la inscripción automática de nuevos miembros (separados por coma)
diff --git a/htdocs/langs/es_CO/projects.lang b/htdocs/langs/es_CO/projects.lang
index d7d0f29d616..2535094af83 100644
--- a/htdocs/langs/es_CO/projects.lang
+++ b/htdocs/langs/es_CO/projects.lang
@@ -186,7 +186,6 @@ NewTaskRefSuggested=La referencia de tarea ya se usó, se requiere una nueva ref
TimeSpentInvoiced=Tiempo invertido facturado
TimeSpentForIntervention=Tiempo usado
TimeSpentForInvoice=Tiempo usado
-ServiceToUseOnLines=Service to use on lines by default
InvoiceGeneratedFromTimeSpent=La factura %s se ha generado a partir del tiempo dedicado al proyecto
InterventionGeneratedFromTimeSpent=La intervención %s se ha generado a partir del tiempo dedicado al proyecto
ProjectBillTimeDescription=Verifique si ingresa la hoja de tiempo en las tareas del proyecto Y planea generar factura(s) a partir de la hoja de tiempo para facturar al cliente del proyecto (no verifique si planea crear una factura que no se base en las hojas de tiempo ingresadas). Nota: Para generar factura, vaya a la pestaña 'Tiempo invertido' del proyecto y seleccione las líneas para incluir.
diff --git a/htdocs/langs/es_CO/ticket.lang b/htdocs/langs/es_CO/ticket.lang
index 02301c15de2..3f6313f135e 100644
--- a/htdocs/langs/es_CO/ticket.lang
+++ b/htdocs/langs/es_CO/ticket.lang
@@ -93,8 +93,6 @@ SendMessageByEmail=Enviar mensaje por correo electrónico
ErrorMailRecipientIsEmptyForSendTicketMessage=El destinatario está vacío. No enviar correo electrónico
TicketGoIntoContactTab=Vaya a la pestaña "Contactos" para seleccionarlos.
TicketMessageMailIntroHelp=Este texto se agrega solo al comienzo del correo electrónico y no se guardará.
-TicketMessageMailSignatureHelp=Este texto se agrega solo al final del correo electrónico y no se guardará.
-TicketMessageMailSignatureLabelAdmin=Firma del correo electrónico de respuesta
TicketMessageHelp=Solo este texto se guardará en la lista de mensajes de la tarjeta del ticket.
TicketTimeToRead=Tiempo transcurrido antes de leer
TicketContacts=Ticket de contactos
diff --git a/htdocs/langs/es_DO/members.lang b/htdocs/langs/es_DO/members.lang
deleted file mode 100644
index 5f7a2ff4020..00000000000
--- a/htdocs/langs/es_DO/members.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-# Dolibarr language file - Source file is en_US - members
-ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.
-CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type
diff --git a/htdocs/langs/es_DO/projects.lang b/htdocs/langs/es_DO/projects.lang
deleted file mode 100644
index f5f817beac1..00000000000
--- a/htdocs/langs/es_DO/projects.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-# Dolibarr language file - Source file is en_US - projects
-ServiceToUseOnLines=Service to use on lines by default
diff --git a/htdocs/langs/es_EC/accountancy.lang b/htdocs/langs/es_EC/accountancy.lang
index 56a5c3e928d..b24e09e5bb2 100644
--- a/htdocs/langs/es_EC/accountancy.lang
+++ b/htdocs/langs/es_EC/accountancy.lang
@@ -229,4 +229,3 @@ ToBind=Líneas para atar
UseMenuToSetBindindManualy=Líneas aún no enlazadas, use el menú %s para hacer el enlace manualmente.
WarningReportNotReliable=Advertencia, este informe no se basa en el Libro mayor, por lo que no contiene la transacción modificada manualmente en el Libro mayor. Si su publicación está actualizada, la vista de contabilidad es más precisa.
ExpenseReportJournal=Diario del informe de gastos
-InventoryJournal=Diario de inventario
diff --git a/htdocs/langs/es_EC/admin.lang b/htdocs/langs/es_EC/admin.lang
index 96820c4587e..6286debaffd 100644
--- a/htdocs/langs/es_EC/admin.lang
+++ b/htdocs/langs/es_EC/admin.lang
@@ -335,7 +335,6 @@ ValueOverwrittenByUserSetup=Advertencia: este valor puede ser sobrescrito por la
BarcodeInitForThirdparties=Inicio masivo de código de barras para terceros.
BarcodeInitForProductsOrServices=Inicio de código de barras masivo o restablecimiento de productos o servicios
CurrentlyNWithoutBarCode=Actualmente, tiene %s registrado en %s %s sin código de barras definido.
-InitEmptyBarCode=Init value for the %s empty barcodes
EraseAllCurrentBarCode=Borrar todos los valores de códigos de barras actuales
ConfirmEraseAllCurrentBarCode=¿Está seguro de que desea borrar todos los valores de códigos de barras actuales?
AllBarcodeReset=Todos los valores de código de barras se han eliminado
@@ -586,7 +585,6 @@ Permission282=Crear / modificar contactos
Permission291=Leer tarifas
Permission292=Establecer permisos en las tarifas
Permission293=Modificar las tarifas del cliente.
-Permission300=Leer codigos de barras
Permission301=Crear / modificar códigos de barras
Permission311=Leer servicios
Permission312=Asignar servicio / suscripción al contrato.
diff --git a/htdocs/langs/es_EC/commercial.lang b/htdocs/langs/es_EC/commercial.lang
index 85789b47b39..ee890081cfd 100644
--- a/htdocs/langs/es_EC/commercial.lang
+++ b/htdocs/langs/es_EC/commercial.lang
@@ -60,6 +60,4 @@ ActionAC_OTH_AUTOShort=Automático
Stats=Estadísticas de ventas
StatusProsp=Estado del prospecto
DraftPropals=Proyecto de propuestas comerciales
-WelcomeOnOnlineSignaturePage=Bienvenido a la página para aceptar propuestas comerciales de %s
-ThisScreenAllowsYouToSignDocFrom=Esta pantalla le permite aceptar y firmar, o rechazar, una propuesta de cotización/comercial
SignatureProposalRef=Firma de cotización/propuesta comercial %s.
diff --git a/htdocs/langs/es_EC/errors.lang b/htdocs/langs/es_EC/errors.lang
index 87dd8507320..ae701afac8d 100644
--- a/htdocs/langs/es_EC/errors.lang
+++ b/htdocs/langs/es_EC/errors.lang
@@ -64,7 +64,6 @@ ErrorWrongValueForField=El campo %s: '%s' no coincide con la expre
ErrorFieldValueNotIn=El campo %s: '%s' no es un valor que se encuentra en el campo %s de %s
ErrorFieldRefNotIn=Campo %s: '%s' no es una %s referencia existente
ErrorFileIsInfectedWithAVirus=El programa antivirus no pudo validar el archivo (el archivo podría estar infectado por un virus)
-ErrorSpecialCharNotAllowedForField=No se permiten caracteres especiales para el campo "%s"
ErrorNumRefModel=Existe una referencia en la base de datos (%s) y no es compatible con esta regla de numeración. Elimine la referencia de registro o renombrado para activar este módulo.
ErrorQtyTooLowForThisSupplier=Cantidad demasiado baja para este proveedor o ningún precio definido en este producto para este proveedor
ErrorOrdersNotCreatedQtyTooLow=Algunos pedidos no se han creado debido a cantidades demasiado bajas
diff --git a/htdocs/langs/es_EC/mailmanspip.lang b/htdocs/langs/es_EC/mailmanspip.lang
index 6b8fb02ecff..dc6431a176e 100644
--- a/htdocs/langs/es_EC/mailmanspip.lang
+++ b/htdocs/langs/es_EC/mailmanspip.lang
@@ -6,7 +6,6 @@ MailmanCreationSuccess=La prueba de suscripción se ejecutó correctamente
MailmanDeletionSuccess=La prueba de cancelación de la suscripción se ejecutó correctamente
SynchroMailManEnabled=Se realizará una actualización Mailman
SynchroSpipEnabled=Se realizará una actualización de Spip
-DescADHERENT_MAILMAN_ADMINPW=Contraseña del administrador de Mailman
DescADHERENT_MAILMAN_URL=URL para las suscripciones de Mailman
DescADHERENT_MAILMAN_UNSUB_URL=URL para cancelación de suscripciones de Mailman
DescADHERENT_MAILMAN_LISTS=Lista(s) para la inscripción automática de nuevos miembros (separados por una coma)
diff --git a/htdocs/langs/es_EC/projects.lang b/htdocs/langs/es_EC/projects.lang
index 7ac28478c77..c87a5444272 100644
--- a/htdocs/langs/es_EC/projects.lang
+++ b/htdocs/langs/es_EC/projects.lang
@@ -165,7 +165,6 @@ NewTaskRefSuggested=Referencia de tarea ya utilizada, se requiere una nueva refe
TimeSpentInvoiced=Tiempo gastado facturado
TimeSpentForIntervention=Tiempo usado
TimeSpentForInvoice=Tiempo usado
-ServiceToUseOnLines=Service to use on lines by default
InvoiceGeneratedFromTimeSpent=La factura %s se ha generado a partir del tiempo dedicado al proyecto
ProjectBillTimeDescription=Verifique si ingresa la hoja de tiempo en las tareas del proyecto Y planea generar factura(s) de la hoja de tiempo para facturar al cliente del proyecto (no verifique si planea crear una factura que no se base en las hojas de tiempo ingresadas). Nota: Para generar la factura, vaya a la pestaña 'Tiempo empleado' del proyecto y seleccione las líneas para incluir.
UsageBillTimeShort=Uso: Tiempo a facturar
diff --git a/htdocs/langs/es_EC/ticket.lang b/htdocs/langs/es_EC/ticket.lang
index 657aba67728..29b388752e1 100644
--- a/htdocs/langs/es_EC/ticket.lang
+++ b/htdocs/langs/es_EC/ticket.lang
@@ -65,9 +65,6 @@ TicketDurationAutoInfos=Duración calculada automáticamente a partir de interve
SendMessageByEmail=Enviar mensaje por correo electrónico
ErrorMailRecipientIsEmptyForSendTicketMessage=El destinatario está vacío. No se envio el correo electrónico
TicketMessageMailIntroHelp=Este texto se agrega solo al comienzo del correo electrónico y no se guardará.
-TicketMessageMailSignatureHelp=Este texto se agrega solo al final del correo electrónico y no se guardará.
-TicketMessageMailSignatureLabelAdmin=Firma del correo electrónico de respuesta
-TicketMessageMailSignatureHelpAdmin=Este texto se inserta después del mensaje de respuesta.
TicketMessageHelp=Solo este texto se guardará en la lista de mensajes en la tarjeta de tickets.
TicketTimeToRead=Tiempo transcurrido antes de leer
TicketContacts=Boleto de contactos
diff --git a/htdocs/langs/es_GT/members.lang b/htdocs/langs/es_GT/members.lang
deleted file mode 100644
index 5f7a2ff4020..00000000000
--- a/htdocs/langs/es_GT/members.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-# Dolibarr language file - Source file is en_US - members
-ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.
-CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type
diff --git a/htdocs/langs/es_GT/projects.lang b/htdocs/langs/es_GT/projects.lang
deleted file mode 100644
index f5f817beac1..00000000000
--- a/htdocs/langs/es_GT/projects.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-# Dolibarr language file - Source file is en_US - projects
-ServiceToUseOnLines=Service to use on lines by default
diff --git a/htdocs/langs/es_HN/members.lang b/htdocs/langs/es_HN/members.lang
deleted file mode 100644
index 5f7a2ff4020..00000000000
--- a/htdocs/langs/es_HN/members.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-# Dolibarr language file - Source file is en_US - members
-ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.
-CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type
diff --git a/htdocs/langs/es_HN/projects.lang b/htdocs/langs/es_HN/projects.lang
deleted file mode 100644
index f5f817beac1..00000000000
--- a/htdocs/langs/es_HN/projects.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-# Dolibarr language file - Source file is en_US - projects
-ServiceToUseOnLines=Service to use on lines by default
diff --git a/htdocs/langs/es_MX/accountancy.lang b/htdocs/langs/es_MX/accountancy.lang
index 1ae2423f16f..ef79a5fabff 100644
--- a/htdocs/langs/es_MX/accountancy.lang
+++ b/htdocs/langs/es_MX/accountancy.lang
@@ -125,4 +125,3 @@ ExportDraftJournal=Exportar borrador de diario
SomeMandatoryStepsOfSetupWereNotDone=Algunos pasos obligatorios de la instalación no se realizaron, favor de completar
ExportNotSupported=El formato de exportación configurado no se admite en esta página
NoJournalDefined=Ningún diario definido
-InventoryJournal=Diario de inventario
diff --git a/htdocs/langs/es_MX/admin.lang b/htdocs/langs/es_MX/admin.lang
index 8c57272b7ea..4097de49b9f 100644
--- a/htdocs/langs/es_MX/admin.lang
+++ b/htdocs/langs/es_MX/admin.lang
@@ -238,7 +238,6 @@ ExtrafieldSelectList =Seleccionar de la tabla
ComputedFormula=Campo calculado
Computedpersistent=Almacenar campo calculado
SetAsDefault=Establecer como predeterminado
-InitEmptyBarCode=Init value for the %s empty barcodes
ClickToShowDescription=Haga clic para mostrar la descripción
DependsOn=Este módulo necesita los módulo(s)
WarningSettingSortOrder=Advertencia, establecer un orden predeterminado puede resultar en un error técnico al pasar a la página de lista si "campo" es un campo desconocido. Si experimenta un error de este tipo, vuelva a esta página para eliminar el orden predeterminado y restaurar el comportamiento predeterminado.
diff --git a/htdocs/langs/es_PA/members.lang b/htdocs/langs/es_PA/members.lang
deleted file mode 100644
index 5f7a2ff4020..00000000000
--- a/htdocs/langs/es_PA/members.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-# Dolibarr language file - Source file is en_US - members
-ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.
-CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type
diff --git a/htdocs/langs/es_PA/projects.lang b/htdocs/langs/es_PA/projects.lang
deleted file mode 100644
index f5f817beac1..00000000000
--- a/htdocs/langs/es_PA/projects.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-# Dolibarr language file - Source file is en_US - projects
-ServiceToUseOnLines=Service to use on lines by default
diff --git a/htdocs/langs/es_PE/members.lang b/htdocs/langs/es_PE/members.lang
deleted file mode 100644
index 5f7a2ff4020..00000000000
--- a/htdocs/langs/es_PE/members.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-# Dolibarr language file - Source file is en_US - members
-ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.
-CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type
diff --git a/htdocs/langs/es_PY/members.lang b/htdocs/langs/es_PY/members.lang
deleted file mode 100644
index 5f7a2ff4020..00000000000
--- a/htdocs/langs/es_PY/members.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-# Dolibarr language file - Source file is en_US - members
-ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.
-CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type
diff --git a/htdocs/langs/es_PY/projects.lang b/htdocs/langs/es_PY/projects.lang
deleted file mode 100644
index f5f817beac1..00000000000
--- a/htdocs/langs/es_PY/projects.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-# Dolibarr language file - Source file is en_US - projects
-ServiceToUseOnLines=Service to use on lines by default
diff --git a/htdocs/langs/es_US/members.lang b/htdocs/langs/es_US/members.lang
deleted file mode 100644
index 5f7a2ff4020..00000000000
--- a/htdocs/langs/es_US/members.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-# Dolibarr language file - Source file is en_US - members
-ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.
-CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type
diff --git a/htdocs/langs/es_US/projects.lang b/htdocs/langs/es_US/projects.lang
deleted file mode 100644
index f5f817beac1..00000000000
--- a/htdocs/langs/es_US/projects.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-# Dolibarr language file - Source file is en_US - projects
-ServiceToUseOnLines=Service to use on lines by default
diff --git a/htdocs/langs/es_UY/members.lang b/htdocs/langs/es_UY/members.lang
deleted file mode 100644
index 5f7a2ff4020..00000000000
--- a/htdocs/langs/es_UY/members.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-# Dolibarr language file - Source file is en_US - members
-ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.
-CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type
diff --git a/htdocs/langs/es_UY/projects.lang b/htdocs/langs/es_UY/projects.lang
deleted file mode 100644
index f5f817beac1..00000000000
--- a/htdocs/langs/es_UY/projects.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-# Dolibarr language file - Source file is en_US - projects
-ServiceToUseOnLines=Service to use on lines by default
diff --git a/htdocs/langs/es_VE/admin.lang b/htdocs/langs/es_VE/admin.lang
index 33ac1c8513d..5ac3d8e921b 100644
--- a/htdocs/langs/es_VE/admin.lang
+++ b/htdocs/langs/es_VE/admin.lang
@@ -5,7 +5,6 @@ ConfirmPurgeSessions=¿De verdad quieres purgar todas las sesiones? Esto descone
SetupArea=Parametrizaje
NotConfigured=Módulo / Aplicación no configurada
GenericMaskCodes3=Cualquier otro carácter en la máscara se quedará sin cambios. No se permiten espacios
-InitEmptyBarCode=Init value for the %s empty barcodes
Module1780Desc=Crear etiquetas/Categoría (Productos, clientes, proveedores, contactos y miembros)
Permission254=Modificar la contraseña de otros usuarios
Permission255=Eliminar o desactivar otros usuarios
diff --git a/htdocs/langs/es_VE/projects.lang b/htdocs/langs/es_VE/projects.lang
deleted file mode 100644
index f5f817beac1..00000000000
--- a/htdocs/langs/es_VE/projects.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-# Dolibarr language file - Source file is en_US - projects
-ServiceToUseOnLines=Service to use on lines by default
diff --git a/htdocs/langs/fr_CA/admin.lang b/htdocs/langs/fr_CA/admin.lang
index a04f84af674..d9c277fcdf6 100644
--- a/htdocs/langs/fr_CA/admin.lang
+++ b/htdocs/langs/fr_CA/admin.lang
@@ -72,7 +72,6 @@ ExtrafieldCheckBoxFromList=Les cases à cocher du tableau
ExtrafieldLink=Lier à un objet
LibraryToBuildPDF=Bibliothèque utilisée pour la génération de PDF
CurrentlyNWithoutBarCode=Actuellement, vous avez %s enregistrements sur %s %s sans code à barres défini.
-InitEmptyBarCode=Init value for the %s empty barcodes
ConfirmEraseAllCurrentBarCode=Êtes-vous sûr de vouloir effacer toutes les valeurs actuelles du code-barres?
EnableFileCache=Activer le cache de fichiers
DisplayCompanyManagers=Afficher les noms des gestionnaires
diff --git a/htdocs/langs/fr_CA/commercial.lang b/htdocs/langs/fr_CA/commercial.lang
index fe52f49e25d..0f68fbd09db 100644
--- a/htdocs/langs/fr_CA/commercial.lang
+++ b/htdocs/langs/fr_CA/commercial.lang
@@ -9,5 +9,3 @@ SaleRepresentativesOfThirdParty=Représentants commerciaux de tiers
LastDoneTasks=Dernières %s actions complétées
LastActionsToDo=Le plus ancien %s actions non complétées
ActionAC_OTH_AUTO=Événements insérés automatiquement
-ThisScreenAllowsYouToSignDocFrom=Cet écran vous permet d'accepter et signer ou de refuser le devis ou la proposition commerciale
-ThisIsInformationOnDocumentToSign=Ceci est une information sur le document à accepter ou à refuser
diff --git a/htdocs/langs/fr_CA/errors.lang b/htdocs/langs/fr_CA/errors.lang
index 86d639a66e5..2560a86fb1b 100644
--- a/htdocs/langs/fr_CA/errors.lang
+++ b/htdocs/langs/fr_CA/errors.lang
@@ -51,7 +51,6 @@ ErrorLDAPMakeManualTest=Un fichier .ldif a été généré dans le répertoire %
ErrorModuleRequireJavascript=Javascript ne doit pas être désactivé pour que cette fonction fonctionne. Pour activer / désactiver Javascript, accédez au menu Accueil-> Configuration-> Affichage.
ErrorPasswordsMustMatch=Les deux mots de passe dactylographiés doivent correspondre les uns aux autres
ErrorFileIsInfectedWithAVirus=Le programme antivirus n'a pas pu valider le fichier (le fichier peut être infecté par un virus)
-ErrorSpecialCharNotAllowedForField=Les caractères spéciaux ne sont pas autorisés pour le champ "%s"
ErrorNumRefModel=Une référence existe dans la base de données (%s) et n'est pas compatible avec cette règle de numérotation. Supprimez l'enregistrement ou la renommée référence pour activer ce module.
ErrorBadMaskBadRazMonth=Erreur, mauvaise valeur de réinitialisation
ErrorCounterMustHaveMoreThan3Digits=Le compteur doit avoir plus de 3 chiffres
diff --git a/htdocs/langs/fr_FR/accountancy.lang b/htdocs/langs/fr_FR/accountancy.lang
index 83d10982ca2..53edef4c0a1 100644
--- a/htdocs/langs/fr_FR/accountancy.lang
+++ b/htdocs/langs/fr_FR/accountancy.lang
@@ -59,6 +59,7 @@ MainAccountForSuppliersNotDefined=Compte comptable général pour les fournisseu
MainAccountForUsersNotDefined=Compte comptable général pour les utilisateurs non défini dans la configuration
MainAccountForVatPaymentNotDefined=Compte comptable général pour les paiements de TVA non défini dans la configuration
MainAccountForSubscriptionPaymentNotDefined=Le compte comptable général des paiements de cotisations n'est pas défini dans la configuration
+UserAccountNotDefined=Compte comptable pour l'utilisateur non défini dans la configuration
AccountancyArea=Espace comptabilité
AccountancyAreaDescIntro=L'utilisation du module de comptabilité se fait en plusieurs étapes:
@@ -185,7 +186,7 @@ ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Compte comptable pour enregistrer les ad
ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Compte comptable par défaut pour les acomptes clients
UseAuxiliaryAccountOnCustomerDeposit=Enregistrer le compte client comme compte individuel dans le grand livre auxiliaire pour les lignes d'acompte (si désactivé, le compte individuel pour les lignes d'acompte restera vide)
ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT=Compte comptable par défaut pour enregistrer l'acompte fournisseur
-UseAuxiliaryAccountOnSupplierDeposit=Store supplier account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty)
+UseAuxiliaryAccountOnSupplierDeposit=Stocker le compte fournisseur comme compte individuel dans le grand livre auxiliaire pour les lignes d'acomptes (si désactivé, le compte individuel pour les lignes d'acompte restera vide)
ACCOUNTING_PRODUCT_BUY_ACCOUNT=Compte comptable par défaut pour les produits achetés (utilisé si non défini dans la fiche produit)
ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Compte comptable par défaut pour les produits achetés dans la CEE (utilisé si non défini dans la fiche produit)
@@ -286,7 +287,7 @@ DescClosure=Consultez ici le nombre de mouvements par mois non encore validés &
OverviewOfMovementsNotValidated=Aperçu des mouvements non validés et verrouillés
AllMovementsWereRecordedAsValidated=Tous les mouvements ont été enregistrés comme validés et ont été verrouillés
NotAllMovementsCouldBeRecordedAsValidated=Certains mouvements n'ont pas pu être enregistrés comme validés et n'ont pas été verrouillés
-ValidateMovements=Valider et verrouiller l'enregistrement...
+ValidateMovements=Valider et verrouiller les mouvements...
DescValidateMovements=Toute modification ou suppression d'écriture, de lettrage et de suppression sera interdite. Toutes les entrées pour un exercice doivent être validées, sinon la fermeture ne sera pas possible
ValidateHistory=Lier automatiquement
@@ -401,7 +402,11 @@ Calculated=Calculé
Formula=Formule
## Reconcile
+LetteringAuto=Rapprocher automatiquement
+LetteringManual=Rapprocher manuel
Unlettering=Annuler le rapprochement
+UnletteringAuto=Annuler le rapprochement automatique
+UnletteringManual=Annuler rapprochement manuel
AccountancyNoLetteringModified=Pas de rapprochement modifié
AccountancyOneLetteringModifiedSuccessfully=Un rapprochement modifié avec succès
AccountancyLetteringModifiedSuccessfully=%s rapprochements modifiés avec succès
@@ -410,8 +415,9 @@ AccountancyOneUnletteringModifiedSuccessfully=Une annulation de rapprochement mo
AccountancyUnletteringModifiedSuccessfully=%s annulations de rapprochement modifiées avec succès
## Confirm box
-ConfirmMassUnlettering=Confirmation d'annulation de rapprochement en masse
-ConfirmMassUnletteringQuestion=Êtes-vous sûr de vouloir annuler le rapprochement de(s) %s enregistrement(s) sélectionné(s) ?
+ConfirmMassUnletteringAuto=Confirmation d'annulation de rapprochement automatique
+ConfirmMassUnletteringManual=Confirmation de dé-rapprochement manuel
+ConfirmMassUnletteringQuestion=Voulez-vous vraiment annuler le rapprochement des %s enregistrements sélectionnés ?
ConfirmMassDeleteBookkeepingWriting=Confirmation de suppression en masse
ConfirmMassDeleteBookkeepingWritingQuestion=Cela supprimera la transaction de la comptabilité (toutes les lignes liées à la même transaction seront supprimées). Êtes-vous sûr de vouloir supprimer le(s) %s enregistrement(s) sélectionné(s) ?
diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang
index 313e151a044..3f45fc1643d 100644
--- a/htdocs/langs/fr_FR/admin.lang
+++ b/htdocs/langs/fr_FR/admin.lang
@@ -51,8 +51,6 @@ ClientSortingCharset=Jeu de caractère de tri du client
WarningModuleNotActive=Le module %s doit être activé pour utiliser cette fonction.
WarningOnlyPermissionOfActivatedModules=Attention, seules les permissions en rapport avec les modules activés sont affichées ici. Vous pouvez activer d'autres modules sur la page Accueil->Configuration->Modules.
DolibarrSetup=Installation ou mise à jour de Dolibarr
-InternalUser=Utilisateur interne
-ExternalUser=Utilisateur externe
InternalUsers=Utilisateurs internes
ExternalUsers=Utilisateurs externes
UserInterface=Interface utilisateur
@@ -190,7 +188,7 @@ Compression=Compression
CommandsToDisableForeignKeysForImport=Commande pour désactiver les clés étrangères à l'importation
CommandsToDisableForeignKeysForImportWarning=Requis si vous voulez être en mesure de restaurer votre « dump » SQL plus tard
ExportCompatibility=Compatibilité du fichier d'exportation généré
-ExportUseMySQLQuickParameter=Utiliser le paramètre --quick
+ExportUseMySQLQuickParameter=Utiliser le paramètre --quick
ExportUseMySQLQuickParameterHelp=Le paramètre '--quick' aide à réduire la consommation de RAM pour les longues listes
MySqlExportParameters=Paramètres de l'exportation MySQL
PostgreSqlExportParameters= Paramètres de l'exportation PostgreSQL
@@ -285,7 +283,7 @@ ContentForLines=Contenu à afficher pour chaque produit ou service (à partir de
NoticePeriod=Délai de prévenance
NewByMonth=Mois suivant
Emails=Emails
-EMailsSetup=Configuration Emails
+EMailsSetup=Configuration des mails
EMailsDesc=Cette page permet de définir les paramètres et options d'envoi des e-mails.
EmailSenderProfiles=Expéditeur des e-mails
EMailsSenderProfileDesc=Vous pouvez garder cette section vide. Si vous entrez des emails ici, ils seront ajoutés à la liste des expéditeurs possibles dans la liste déroulante lorsque vous écrivez un nouvel email.
@@ -338,7 +336,7 @@ MenuHandlers=Gestionnaires de menu
MenuAdmin=Édition menu
DoNotUseInProduction=Ne pas utiliser en production
ThisIsProcessToFollow=Procédure de mise à jour:
-ThisIsAlternativeProcessToFollow=Voici une procédure de configuration alternative
+ThisIsAlternativeProcessToFollow=Voici une procédure de configuration alternative
StepNb=Étape %s
FindPackageFromWebSite=Rechercher le paquet qui répond à votre besoin (par exemple sur le site web %s).
DownloadPackageFromWebSite=Télécharger le package (par exemple depuis le site web officiel %s)
@@ -439,8 +437,10 @@ Unique=Unique
Boolean=Boolean (case à cocher unique)
ExtrafieldPhone = Téléphone
ExtrafieldPrice = Prix
+ExtrafieldPriceWithCurrency=Prix avec devise
ExtrafieldMail = Email
ExtrafieldUrl = Url
+ExtrafieldIP = IP
ExtrafieldSelect = Liste de sélection
ExtrafieldSelectList = Liste issue d'une table
ExtrafieldSeparator=Séparateur (il ne s'agit pas d'un champ de saisie)
@@ -501,7 +501,7 @@ WarningPHPMail=AVERTISSEMENT: la configuration pour envoyer des e-mails à parti
WarningPHPMailA= - L'utilisation des serveurs de prestataires de messagerie augmente le niveau confiance des e-mails, cela augmente donc les chances de délivrabilité en n'étant pas considéré comme spam.
WarningPHPMailB=- Certains fournisseurs de services de messagerie (comme Yahoo) ne vous permettent pas d'envoyer un e-mail à partir d'un autre serveur que leur propre serveur. Votre configuration actuelle utilise le serveur de l'application pour envoyer des e-mails et non le serveur de votre fournisseur de messagerie, donc certains destinataires (ceux compatibles avec le protocole DMARC restrictif), demanderont à votre fournisseur de messagerie si ils peuvent accepter votre message et ce fournisseur de messagerie (comme Yahoo) peut répondre «non» parce que le serveur d'envoi n'est pas le leur, aussi une partie de vos e-mails envoyés peuvent ne pas être acceptés pour la livraison (faites également attention au quota d'envoi de votre fournisseur de messagerie).
WarningPHPMailC=- Utiliser le serveur SMTP de votre propre fournisseur de services de messagerie pour envoyer des e-mails est également intéressant afin que tous les e-mails envoyés depuis l'application soient également enregistrés dans votre répertoire "Envoyés" de votre boîte aux lettres.
-WarningPHPMailD=Aussi, il est recommandé de changer le mode d'envoi des e-mails à la valeur "SMTP". Si vous souhaitez vraiment conserver la méthode "PHP" par défaut pour envoyer des e-mails, ignorez simplement cet avertissement ou supprimez-le en définissant la constante MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP sur 1 dans Accueil - Configuration - Autre.
+WarningPHPMailD=Aussi, il est recommandé de changer le mode d'envoi des e-mails à la valeur "SMTP". Si vous souhaitez vraiment conserver la méthode "PHP" par défaut pour envoyer des e-mails, ignorez simplement cet avertissement ou supprimez-le en définissant la constante MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP sur 1 dans Accueil - Configuration - Divers.
WarningPHPMail2=Si votre fournisseur de messagerie SMTP a besoin de restreindre le client de messagerie à certaines adresses IP (très rare), voici l'adresse IP du mail user agent (MUA) de votre application CRM ERP : %s .
WarningPHPMailSPF=Si le nom de domaine de votre adresse e-mail d'expéditeur est protégé par un enregistrement SPF (demandez à votre fournisseur de nom de domaine), vous devez inclure les adresses IP suivantes dans l'enregistrement SPF du DNS de votre domaine: %s.
ActualMailSPFRecordFound=Enregistrement SPF réel trouvé (pour l'e-mail %s) : %s
@@ -842,9 +842,9 @@ Permission286=Exporter les contacts
Permission291=Consulter les tarifs
Permission292=Définir les permissions sur les tarifs
Permission293=Modifier les tarifs clients
-Permission300=Consulter les codes-barres
-Permission301=Créer/modifier les codes-barres
-Permission302=Supprimer les codes-barres
+Permission301=Générer le PDF du code barre
+Permission304=Créer/modifier les codes-barres
+Permission305=Supprimer les codes-barres
Permission311=Consulter les services
Permission312=Affecter le service/abonnement au contrat
Permission331=Lire les marque-pages
@@ -1081,9 +1081,9 @@ DictionaryAssetDisposalType=Type de cession d'actifs
TypeOfUnit=Type d'unité
SetupSaved=Configuration sauvegardée
SetupNotSaved=Configuration non enregistrée
-OAuthServiceConfirmDeleteTitle=Suprresion d'entrée OAuth
-OAuthServiceConfirmDeleteMessage=Êtes vous sur de vouloir supprimer cette entrée OAuth? Tous les jetons existants associés seront supprimés.
-ErrorInEntryDeletion=Erreur dans la suppression
+OAuthServiceConfirmDeleteTitle=Supprimer l'entrée OAuth
+OAuthServiceConfirmDeleteMessage=Voulez-vous vraiment supprimer cette entrée OAuth ? Tous les jetons existants pour celui-ci seront également supprimés.
+ErrorInEntryDeletion=Erreur lors de la suppression de l'entrée
EntryDeleted=Entrée supprimée
BackToModuleList=Retour liste des modules
BackToDictionaryList=Retour liste des dictionnaires
@@ -1242,7 +1242,7 @@ BrowserName=Nom du navigateur
BrowserOS=OS du navigateur
ListOfSecurityEvents=Liste des événements de sécurité Dolibarr
SecurityEventsPurged=Evenement de sécurité purgés
-TrackableSecurityEvents=Trackable security events
+TrackableSecurityEvents=événement de sécurité traçable
LogEventDesc=Vous pouvez activer ici l'historique des événements d'audit de sécurité. Cet historique est consultable par les administrateurs dans le menu %s - %s. Attention, cette fonctionnalité peut générer un gros volume de données.
AreaForAdminOnly=Les paramètres d'installation ne peuvent être remplis que par les utilisateurs administrateurs uniquement.
SystemInfoDesc=Les informations systèmes sont des informations techniques diverses accessibles en lecture seule aux administrateurs uniquement.
@@ -1385,7 +1385,7 @@ NumberingModules=Modèles de numérotation
DocumentModules=Modèles de documents
##### Module password generation
PasswordGenerationStandard=Renvoie un mot de passe généré selon l'algorythme interne de Dolibarr :%s caractères contenant chiffres et minuscules
-PasswordGenerationNone=Ne pas suggérer un mot de passe généré. Le mot de passe doit être entré manuellement.
+PasswordGenerationNone=Ne pas suggérer un mot de passe généré. Le mot de passe doit être entré manuellement.
PasswordGenerationPerso=Renvoie un mot de passe en fonction d'une configuration personnalisée.
SetupPerso=Selon votre configuration
PasswordPatternDesc=Description du masque du mot de passe
@@ -1463,7 +1463,7 @@ OrdersNumberingModules=Modèles de numérotation des commandes
OrdersModelModule=Modèles de document des commandes
FreeLegalTextOnOrders=Mention complémentaire sur les commandes
WatermarkOnDraftOrders=Filigrane sur les brouillons de commandes (aucun si vide)
-ShippableOrderIconInList=Ajouter une icône dans la liste des commandes qui indique si la commande est expédiable.
+ShippableOrderIconInList=Ajouter une icône dans la liste des commandes qui indique si la commande est expédiable.
BANK_ASK_PAYMENT_BANK_DURING_ORDER=Demander le compte bancaire cible durant la commande
##### Interventions #####
InterventionsSetup=Configuration du module Interventions
@@ -1618,7 +1618,7 @@ LDAPFieldUserid=Id utilisateur
LDAPFieldUseridExample=Exemple: uidnumber
LDAPFieldHomedirectory=Répertoire racine
LDAPFieldHomedirectoryExample=Exemple: homedirectory
-LDAPFieldHomedirectoryprefix=Répertoire racine
+LDAPFieldHomedirectoryprefix=Préfixe du répertoire racine
LDAPSetupNotComplete=Configuration LDAP incomplète (à compléter sur les autres onglets)
LDAPNoUserOrPasswordProvidedAccessIsReadOnly=Administrateur ou mot de passe non renseigné. Les accès LDAP seront donc anonymes et en lecture seule.
LDAPDescContact=Cette page permet de définir le nom des attributs de l'arbre LDAP pour chaque information des contacts Dolibarr.
@@ -1653,7 +1653,7 @@ TestNotPossibleWithCurrentBrowsers=Une détection automatique n'est pas possible
DefaultValuesDesc=Vous pouvez définir/forcer ici la valeur par défaut que vous voulez obtenir lorsque vous créez un nouvel enregistrement, et/ou les filtres par défaut ou ordre de tri des listes.
DefaultCreateForm=Valeurs par défaut (sur les formulaires de création)
DefaultSearchFilters=Filtres de recherche par défaut
-DefaultSortOrder=Ordre de tri par défaut
+DefaultSortOrder=Ordre de tri par défaut
DefaultFocus=Champs par défaut ayant le focus
DefaultMandatory=Champs de formulaire obligatoires
##### Products #####
@@ -1770,7 +1770,7 @@ DetailMenuHandler=Nom du gestionnaire menu dans lequel faire apparaitre le nouve
DetailMenuModule=Nom du module si l'entrée menu est issue d'un module
DetailType=Type de menu (top ou left)
DetailTitre=Libellé du menu ou code libellé à traduire
-DetailUrl=URL vers laquelle le menu pointe (Lien URL absolu ou lien externe avec http://)
+DetailUrl=URL où le menu vous envoie (lien URL relatif ou lien externe avec https://)
DetailEnabled=Condition d'affichage ou non
DetailRight=Condition d'affichage plein ou grisé
DetailLangs=Fichier .lang pour la traduction du code libellé
@@ -1872,7 +1872,7 @@ ChequeReceiptsNumberingModule=Module de numérotation des bordereaux de remises
MultiCompanySetup=Configuration du module Multi-société
##### Suppliers #####
SuppliersSetup=Configuration du module Fournisseurs
-SuppliersCommandModel=Modèle de commande fournisseur complet
+SuppliersCommandModel=Modèle de commande fournisseur complet
SuppliersCommandModelMuscadet=Modèle de commande fournisseur complet (ancienne implémentation du modèle Cornas)
SuppliersInvoiceModel=Modèle de facture fournisseur complet
SuppliersInvoiceNumberingModel=Modèles de numérotation des factures fournisseur
@@ -1907,7 +1907,7 @@ NbMajMin=Nombre minimal de caractères majuscules
NbNumMin=Nombre minimal de caractères numériques
NbSpeMin=Nombre minimal de caractères spéciaux
NbIteConsecutive=Nombre maximal de répétition des mêmes caractères
-NoAmbiCaracAutoGeneration=Ne pas utiliser des caractères ambigus ("1","l","i","|","0","O") pour la génération automatique
+NoAmbiCaracAutoGeneration=Ne pas utiliser des caractères ambigus ("1","l","i","|","0","O") pour la génération automatique
SalariesSetup=Configuration du module salaires
SortOrder=Ordre de tri
Format=Format
@@ -1928,7 +1928,7 @@ GoOntoContactCardToAddMore=Rendez-vous sur l'onglet "Notifications" d'un tiers p
Threshold=Seuil
BackupDumpWizard=Assistant pour créer le fichier dump de la base de données
BackupZipWizard=Assistant pour générer l'archive du répertoire documents
-SomethingMakeInstallFromWebNotPossible=L'installation de module externe est impossible depuis l'interface web pour la raison suivante :
+SomethingMakeInstallFromWebNotPossible=L'installation de module externe est impossible depuis l'interface web pour la raison suivante :
SomethingMakeInstallFromWebNotPossible2=Pour cette raison, le processus de mise à jour décrit ici est une processus manuel que seul un utilisateur ayant des droits privilégiés peut réaliser.
InstallModuleFromWebHasBeenDisabledByFile=L'installation de module externe depuis l'application a été désactivé par l'administrator. Vous devez lui demander de supprimer le fichier %s pour permettre cette fonctionnalité.
ConfFileMustContainCustom=Installer ou créer un module externe à partir de l'application nécessite de sauvegarder les fichiers du module dans le répertoire %s. Pour que ce répertoire soit reconnu par Dolibarr, vous devez paramétrer le fichier de configuration conf/conf.php en ajoutant les 2 lignes suivantes : $dolibarr_main_url_root_alt='/custom' $dolibarr_main_document_root_alt='%s/custom';
@@ -2078,12 +2078,13 @@ loginPassword=Mot de passe
oauthToken=Jeton Oauth2
accessType=Type d'accès
oauthService=Service Oauth
-TokenMustHaveBeenCreated=Module OAuth2 must be enabled and an oauth2 token must have been created with the correct permissions (for example scope "gmail_full" with OAuth for Gmail).
+TokenMustHaveBeenCreated=Le module OAuth2 doit être activé et un token oauth2 doit avoir été créé avec les bonnes permissions (par exemple scope "gmail_full" avec OAuth pour Gmail).
MailboxSourceDirectory=Répertoire source de la boîte aux lettres
MailboxTargetDirectory=Répertoire cible de la boîte aux lettres
EmailcollectorOperations=Opérations à effectuer par le collecteur
EmailcollectorOperationsDesc=Les opérations sont exécutées de haut en bas
MaxEmailCollectPerCollect=Nombre maximum d'emails collectés par collecte
+TestCollectNow=Tester la collecte
CollectNow=Collecter maintenant
ConfirmCloneEmailCollector=Voulez-vous vraiment cloner le collecteur d'e-mails %s ?
DateLastCollectResult=Date de la dernière tentative de collecte
@@ -2107,7 +2108,7 @@ NoNewEmailToProcess=Aucun nouvel email (correspondants aux filtres) à traiter
NothingProcessed=Aucune action faite
XEmailsDoneYActionsDone=%s e-mails pré-qualifiés, %s e-mails traités avec succès (pour %s enregistrement/actions effectuées)
RecordEvent=Enregistrer un événement dans l'agenda (avec le type Email envoyé ou reçu)
-CreateLeadAndThirdParty=Créer un prospect (et un tiers si nécessaire)
+CreateLeadAndThirdParty=Créer une opportunité (et un tiers si nécessaire)
CreateTicketAndThirdParty=Créer un ticket (lié à un tiers si le tiers a été chargé par une opération précédente ou a été deviné à partir d'un tracker en en-tête d'email, sans tiers sinon)
CodeLastResult=Dernier code de retour
NbOfEmailsInInbox=Nombre de courriels dans le répertoire source
@@ -2228,7 +2229,7 @@ NoExternalModuleWithUpdate=Aucune mise à jour trouvée pour les modules externe
SwaggerDescriptionFile=Fichier de description de l’API Swagger (à utiliser avec redoc par exemple)
YouEnableDeprecatedWSAPIsUseRESTAPIsInstead=Vous avez activé l'API WS qui est dépréciée. Vous devriez utiliser l'API REST à la place.
RandomlySelectedIfSeveral=Sélectionnée au hasard si plusieurs images sont disponibles
-SalesRepresentativeInfo=For Proposals, Orders, Invoices.
+SalesRepresentativeInfo=Pour Propositions, Commandes, Factures
DatabasePasswordObfuscated=Le mot de passe de la base de données est masqué dans le fichier de configuration
DatabasePasswordNotObfuscated=Le mot de passe de la base de données n'est PAS masqué dans le fichier de configuration
APIsAreNotEnabled=Les modules API ne sont pas activés
@@ -2310,4 +2311,21 @@ MAIN_MAIL_SMTPS_AUTH_TYPE=Méthode d'authentification
UsePassword=Utiliser mot de passe
UseOauth=Utiliser un token OAUTH
Images=Images
+Posts=publications
MaxNumberOfImagesInGetPost=Nombre maximum d'images autorisées dans un champ HTML soumis dans un formulaire
+MaxNumberOfPostOnPublicPagesByIP=Nombre maximum de publications sur des pages publiques avec une adresse IP
+CIDLookupURL=Le module apporte une URL qui peut être utilisée par un outil externe pour obtenir le nom d'un tiers ou d'un contact à partir de son numéro de téléphone. L'URL à utiliser est :
+ScriptIsEmpty=Le script est manquant
+ShowHideTheNRequests=Afficher/Cacher les %s requête(s) SQL.
+DefinedAPathForAntivirusCommandIntoSetup=Définir un chemin pour un programme antivirus dans %s
+TriggerCodes=Événements déclenchables
+TriggerCodeInfo=Saisissez ici le(s) code(s) déclencheur(s) qui doivent générer la publication d'une requête web (seules les URL externes sont autorisées). Vous pouvez entrer plusieurs codes déclencheurs séparés par une virgule.
+EditableWhenDraftOnly=Si décochée, la valeur ne peut être modifiée que lorsque l'objet a un état de brouillon
+CssOnEdit=CSS sur les pages d'édition
+CssOnView=CSS sur les pages de visualisation
+CssOnList=CSS sur les pages de liste
+HelpCssOnEditDesc=Le CSS utilisé lors de la modification du champ. Exemple : "minwidth100 maxwidth500 widthcentpercentminusx"
+HelpCssOnViewDesc=Le CSS utilisé lors de l'affichage du champ.
+HelpCssOnListDesc=Le CSS utilisé lorsque le champ est à l'intérieur du tableau d'une liste. Exemple : "tdoverflowmax200"
+RECEPTION_PDF_HIDE_ORDERED=Masquer la quantité commandée sur les documents générés pour les réceptions
+MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Afficher le prix sur les documents générés pour les réceptions
diff --git a/htdocs/langs/fr_FR/agenda.lang b/htdocs/langs/fr_FR/agenda.lang
index 1ac6cb60597..62dbae7233e 100644
--- a/htdocs/langs/fr_FR/agenda.lang
+++ b/htdocs/langs/fr_FR/agenda.lang
@@ -87,6 +87,7 @@ SupplierInvoiceSentByEMail=Facture fournisseur %s envoyée par email
ShippingSentByEMail=Bon d'expédition %s envoyé par email
ShippingValidated= Expédition %s validée
InterventionSentByEMail=Intervention %s envoyé par email
+ProjectSentByEMail=Projet %s envoyé par email
ProposalDeleted=Proposition commerciale supprimée
OrderDeleted=Commande supprimée
InvoiceDeleted=Facture supprimée
@@ -99,7 +100,7 @@ PRODUCT_MODIFYInDolibarr=Produit %s modifié
PRODUCT_DELETEInDolibarr=Produit%ssupprimé
HOLIDAY_CREATEInDolibarr=Demande de congé %s créée
HOLIDAY_MODIFYInDolibarr=Demande de congé %s modifiée
-HOLIDAY_APPROVEInDolibarr=Demande de congé %s approuvée
+HOLIDAY_APPROVEInDolibarr=Demande de congé %s approuvée
HOLIDAY_VALIDATEInDolibarr=Demande de congé %s validée
HOLIDAY_DELETEInDolibarr=Demande de congé %s supprimée
EXPENSE_REPORT_CREATEInDolibarr=Note de frais %s créée
diff --git a/htdocs/langs/fr_FR/banks.lang b/htdocs/langs/fr_FR/banks.lang
index af88349f585..35de9806932 100644
--- a/htdocs/langs/fr_FR/banks.lang
+++ b/htdocs/langs/fr_FR/banks.lang
@@ -185,4 +185,4 @@ AlreadyOneBankAccount=un compte bancaire est déjà défini
SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation=Virement SEPA : 'Type de paiement' au niveau 'Virement'
SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp=A la génération d'un fichier SEPA XML pour les virements, la section "PaymentTypeInformation" peut maintenant être placée dans la section "CreditTransferTransactionInformation" (à la place de la section "Payment").\nNous recommandons fortement de ne pas cocher cette case pour conserver "PaymentTypeInformation" dans "Payment level" car toutes les banques ne l'accepterons pas obligatoirement au niveau de "CreditTransferTransactionInformation". Contactez votre banque avant de modifier ce paramètre.
ToCreateRelatedRecordIntoBank=Pour créer un enregistrement bancaire associé manquant
-BanklineExtraFields=Bank Line Extrafields
+BanklineExtraFields=Extrait de la ligne bancaire
diff --git a/htdocs/langs/fr_FR/bookmarks.lang b/htdocs/langs/fr_FR/bookmarks.lang
index b449ca7110a..355b1b351e4 100644
--- a/htdocs/langs/fr_FR/bookmarks.lang
+++ b/htdocs/langs/fr_FR/bookmarks.lang
@@ -20,3 +20,4 @@ ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Choisir si le raccourci doit ouv
BookmarksManagement=Gestion des marque-pages
BookmarksMenuShortCut=Ctrl + Maj + m
NoBookmarks=Aucun marque page enregistré
+NoBookmarkFound=Pas de marque-page trouvé.
diff --git a/htdocs/langs/fr_FR/boxes.lang b/htdocs/langs/fr_FR/boxes.lang
index 75c6ccb9ed9..4cb9011885d 100644
--- a/htdocs/langs/fr_FR/boxes.lang
+++ b/htdocs/langs/fr_FR/boxes.lang
@@ -46,6 +46,7 @@ BoxMyLastBookmarks=Mes %s derniers marque-pages
BoxOldestExpiredServices=Plus anciens services expirés
BoxLastExpiredServices=Les %s plus anciens contrats avec services actifs expirés
BoxTitleLastActionsToDo=Les %s derniers événements à réaliser
+BoxTitleOldestActionsToDo=Les %s plus anciens événement non terminés
BoxTitleLastContracts=Les %s derniers contrats modifiés
BoxTitleLastModifiedDonations=Les %s derniers dons modifiés
BoxTitleLastModifiedExpenses=Les %s dernières notes de frais modifiées
diff --git a/htdocs/langs/fr_FR/cashdesk.lang b/htdocs/langs/fr_FR/cashdesk.lang
index 244718df17d..049ee169cef 100644
--- a/htdocs/langs/fr_FR/cashdesk.lang
+++ b/htdocs/langs/fr_FR/cashdesk.lang
@@ -136,10 +136,12 @@ PrintWithoutDetails=Générer sans les détails
YearNotDefined=L'année n'est pas définie
TakeposBarcodeRuleToInsertProduct=Règle de lecture du code barre des produits
TakeposBarcodeRuleToInsertProductDesc=Règle pour extraire la référence produit + une quantité d'un code barre scanné. Si vide (valeur par défaut), l'application utilisera le code-barres complet scanné pour trouver le produit.
Si elle est définie, la syntaxe doit être: ref: NB + Qu: NB + QD: NB + autres: NB où NB est le nombre de caractères à utiliser pour extraire les données du code à barres scannés avec:
ref : référence produit
qu : quantité de jeu lors de l'insertion article (unités)
qd: quantité de jeu lors de l'insertion article (décimaux)
autre : autres caractères
-HideCategories=Masquer les catégories
-HideStockOnLine=Masquer le stock en ligne
-ShowOnlyProductInStock=Affficher les produits en stock
-ShowCategoryDescription=Afficher la description des catégories
-ShowProductReference=Afficher la référence des produits
-UsePriceHT= Utiliser le prix HT et non en TTC
AlreadyPrinted=Déjà imprimé
+HideCategories=Cacher catégories
+HideStockOnLine=Cacher les stocks sur les lignes
+ShowOnlyProductInStock=Afficher les produits en stock
+ShowCategoryDescription=Afficher la description de la catégorie
+ShowProductReference=Afficher la référence des produits
+UsePriceHT=Utiliser le prix HT et non le prix TTC
+TerminalName=Terminal %s
+TerminalNameDesc=Nom du terminal
diff --git a/htdocs/langs/fr_FR/categories.lang b/htdocs/langs/fr_FR/categories.lang
index 5f478aabc7f..641cf97bacf 100644
--- a/htdocs/langs/fr_FR/categories.lang
+++ b/htdocs/langs/fr_FR/categories.lang
@@ -42,6 +42,7 @@ MemberHasNoCategory=Ce membre n'appartient à aucun(e) tag/catégorie
ContactHasNoCategory=Ce contact n'appartient à aucun(e) tag/catégorie
ProjectHasNoCategory=Ce projet n'est classé dans aucune catégorie
ClassifyInCategory=Ajouter tag/catégorie
+RemoveCategory=Supprimer la catégorie
NotCategorized=Sans tag/catégorie
CategoryExistsAtSameLevel=Ce tag existe déjà avec cette référence
ContentsVisibleByAllShort=Contenu visible par tous
@@ -67,6 +68,7 @@ StockCategoriesShort=Tags/catégories d’entrepôt
ThisCategoryHasNoItems=Cette catégorie ne contient aucun élément.
CategId=ID du(de la) tag/catégorie
ParentCategory=Catégorie parente
+ParentCategoryID=ID de la balise/catégorie parent
ParentCategoryLabel=Libellé du tag/catégorie parent
CatSupList=Liste des tags/catégories des fournisseurs
CatCusList=Liste des tags/catégories des clients/prospects
diff --git a/htdocs/langs/fr_FR/commercial.lang b/htdocs/langs/fr_FR/commercial.lang
index 84bb1364386..924059a1262 100644
--- a/htdocs/langs/fr_FR/commercial.lang
+++ b/htdocs/langs/fr_FR/commercial.lang
@@ -75,11 +75,11 @@ DraftPropals=Propositions brouillons
NoLimit=Pas de limite
ToOfferALinkForOnlineSignature=Lien pour signature en ligne
WelcomeOnOnlineSignaturePageProposal=Bienvenue sur la page pour accepter les propositions commerciales de %s
-WelcomeOnOnlineSignaturePageContract=Bienvenue sur la page de signature en ligne de contrats au format PDF de %s
+WelcomeOnOnlineSignaturePageContract=Bienvenue sur la page de signature du contrat PDF %s
ThisScreenAllowsYouToSignDocFromProposal=Cet écran vous permet d'accepter et signer en ligne, ou de refuser, le devis ou la proposition commerciale
-ThisScreenAllowsYouToSignDocFromContract=Cet écran vous permet de signer en ligne des contrats au format PDF.
+ThisScreenAllowsYouToSignDocFromContract=Cet écran vous permet de signer en ligne un contrat au format PDF.
ThisIsInformationOnDocumentToSignProposal=Voici les informations sur le document à accepter ou refuser
-ThisIsInformationOnDocumentToSignContract=Voici les informations sur le contrat a signer
+ThisIsInformationOnDocumentToSignContract=Voici les informations sur le contrat à signer
SignatureProposalRef=Signature du devis ou proposition commerciale %s
SignatureContractRef=Signature du contrat %s
FeatureOnlineSignDisabled=Fonctionnalité pour la signature en ligne désactivée ou document généré avant l'activation de la fonctionnalité
diff --git a/htdocs/langs/fr_FR/companies.lang b/htdocs/langs/fr_FR/companies.lang
index e875ef168fd..f66d2005c73 100644
--- a/htdocs/langs/fr_FR/companies.lang
+++ b/htdocs/langs/fr_FR/companies.lang
@@ -313,11 +313,11 @@ CustomerAbsoluteDiscountShort=Remise fixe
CompanyHasRelativeDiscount=Ce client a une remise par défaut de %s%%
CompanyHasNoRelativeDiscount=Ce client n'a pas de remise relative par défaut
HasRelativeDiscountFromSupplier=Vous avez une réduction par défaut de %s%% chez ce fournisseur
-HasNoRelativeDiscountFromSupplier=Vous n'avez pas de remise relative par défaut chez ce fournisseur
+HasNoRelativeDiscountFromSupplier=Aucune remise relative par défaut de ce fournisseur
CompanyHasAbsoluteDiscount=Ce client dispose de crédits disponibles (avoirs ou acomptes) pour un montant de %s %s
CompanyHasDownPaymentOrCommercialDiscount=Ce client a une réduction disponible (commercial, acompte) pour %s%s
CompanyHasCreditNote=Ce client a %s %s d'avoirs disponibles
-HasNoAbsoluteDiscountFromSupplier=Vous n'avez aucun crédit de réduction disponible auprès de ce fournisseur
+HasNoAbsoluteDiscountFromSupplier=Aucun rabais/crédit disponible auprès de ce fournisseur
HasAbsoluteDiscountFromSupplier=Vous avez des crédits disponibles (avoirs ou acomptes) pour %s %s chez ce fournisseur
HasDownPaymentOrCommercialDiscountFromSupplier=Vous avez des crédits disponibles (bon de réductions, acomptes) pour %s %s chez ce fournisseur
HasCreditNoteFromSupplier=Vous avez des avoirs pour %s %s chez ce fournisseur
@@ -444,7 +444,7 @@ AddAddress=Créer adresse
SupplierCategory=Catégorie du fournisseur
JuridicalStatus200=Indépendant
DeleteFile=Suppression d'un fichier
-ConfirmDeleteFile=Êtes-vous sûr de vouloir supprimer ce fichier %s?
+ConfirmDeleteFile=Êtes-vous sûr de vouloir supprimer ce fichier %s ?
AllocateCommercial=Affecter un commercial
Organization=Organisme
FiscalYearInformation=Exercice fiscal
@@ -467,7 +467,7 @@ UniqueThirdParties=Nombre total des tiers
InActivity=Ouvert
ActivityCeased=Clos
ThirdPartyIsClosed=Le tiers est clôturé
-ProductsIntoElements=Liste des produits/services jusqu'à %s
+ProductsIntoElements=Liste des produits/services présents dans %s
CurrentOutstandingBill=Montant encours
OutstandingBill=Montant encours autorisé
OutstandingBillReached=Montant encours autorisé dépassé
@@ -498,3 +498,5 @@ RestOfEurope=Reste de l'Union Européenne (UE)
OutOfEurope=Hors Union Européenne (UE)
CurrentOutstandingBillLate=Montant impayé arrivé à échéance
BecarefullChangeThirdpartyBeforeAddProductToInvoice=Attention : selon votre configuration des prix des produits/services, vous devriez changer le tiers avant d'ajouter le produit
+EmailAlreadyExistsPleaseRewriteYourCompanyName=l'e-mail existe déjà, veuillez réécrire le nom de votre entreprise
+TwoRecordsOfCompanyName=plusieurs fiches existent pour cette entreprise merci de nous contacter pour compléter votre demande de partenariat"
diff --git a/htdocs/langs/fr_FR/contracts.lang b/htdocs/langs/fr_FR/contracts.lang
index bb7bf18da67..3c3d5620d1a 100644
--- a/htdocs/langs/fr_FR/contracts.lang
+++ b/htdocs/langs/fr_FR/contracts.lang
@@ -20,6 +20,7 @@ ContractsSubscriptions=Contrats/Abonnements
ContractsAndLine=Contrats et lignes de contrats
Contract=Contrat
ContractLine=Ligne de contrat
+ContractLines=Lignes du contrat
Closing=Fermé
NoContracts=Pas de contrats
MenuServices=Services
@@ -79,7 +80,7 @@ ConfirmDeleteContractLine=Êtes-vous sûr de vouloir supprimer cette ligne de co
MoveToAnotherContract=Déplacer le service vers un autre contrat de ce tiers.
ConfirmMoveToAnotherContract=J'ai choisi le contrat cible et confirme le déplacement du service dans ce contrat.
ConfirmMoveToAnotherContractQuestion=Choisissez vers quel autre contrat (du même tiers), vous voulez déplacer ce service ?
-PaymentRenewContractId=Renouvellement service (numéro %s)
+PaymentRenewContractId=Renouveler le contrat %s (service %s)
ExpiredSince=Expiré le
NoExpiredServices=Pas de services actifs expirés
ListOfServicesToExpireWithDuration=Liste des services actifs expirant dans %s jours
@@ -104,3 +105,5 @@ AllowOnlineSign=Autoriser la signature en ligne
AllowExternalDownload=Autoriser le téléchargement externe
ShowClosedServices=Afficher les services fermés
HideClosedServices=Masquer les services fermés
+UserStartingService=Utilisateur démarrant le service
+UserClosingService=Utilisateur stoppant le service
diff --git a/htdocs/langs/fr_FR/cron.lang b/htdocs/langs/fr_FR/cron.lang
index 64bf5493285..e851fd5a13a 100644
--- a/htdocs/langs/fr_FR/cron.lang
+++ b/htdocs/langs/fr_FR/cron.lang
@@ -82,10 +82,18 @@ UseMenuModuleToolsToAddCronJobs=Aller à la page "Accueil - Outils
JobDisabled=Travail désactivé
MakeLocalDatabaseDumpShort=Sauvegarde locale de base
MakeLocalDatabaseDump=Créez un fichier dump de base local. Les paramètres sont: compression ('gz' ou 'bz' ou 'none'), type de sauvegarde ('mysql', 'pgsql', 'auto'), 1, 'auto' ou nom du fichier à générer, nombre de fichiers de sauvegarde à garder
+MakeSendLocalDatabaseDumpShort=Envoyer la sauvegarde de la base de données locale
+MakeSendLocalDatabaseDump=Envoyez la sauvegarde de la base de données locale par e-mail. Les paramètres sont : to, from, subject, message, filename (nom du fichier envoyé), filter ('sql' pour la sauvegarde de la base de données uniquement)
+CleanUnfinishedCronjobShort=Nettoyer la tâche planifiée inachevée
+CleanUnfinishedCronjob=Nettoyer la tâche planifiée bloquée dans le traitement lorsque le processus n'est plus en cours d'exécution
WarningCronDelayed=Attention, à des fins de performance, quelle que soit la prochaine date d'exécution des travaux activés, vos travaux peuvent être retardés jusqu'à %s heures avant d'être exécutés.
DATAPOLICYJob=Nettoyeur de données et anonymiseur
JobXMustBeEnabled=La tâche planifiée %s doit être activée
+EmailIfError=E-mail d'avertissement en cas d'erreur
+ErrorInBatch=Erreur lors de l'exécution du travail %s
+
# Cron Boxes
LastExecutedScheduledJob=Dernier travail planifié exécuté
NextScheduledJobExecute=Prochaine travail planifié à exécuter
NumberScheduledJobError=Nombre de travaux planifiées en erreur
+NumberScheduledJobNeverFinished=Nombre de tâches planifiées jamais terminées
diff --git a/htdocs/langs/fr_FR/datapolicy.lang b/htdocs/langs/fr_FR/datapolicy.lang
new file mode 100644
index 00000000000..16ed7ca5933
--- /dev/null
+++ b/htdocs/langs/fr_FR/datapolicy.lang
@@ -0,0 +1,92 @@
+# Copyright (C) 2018 Nicolas ZABOURI
+#
+# 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 .
+
+# Module label 'ModuledatapolicyName'
+Module4100Name = Politique de confidentialité des données
+# Module description 'ModuledatapolicyDesc'
+Module4100Desc = Module de gestion de la confidentialité des données (conformité avec le RGPD)
+
+#
+# Administration page
+#
+datapolicySetup = Configuration de la politique de confidentialité des données du module
+Deletion = Suppression de données
+datapolicySetupPage = En fonction des législations de vos pays (Exemple Article 5 du RGPD), les données personnelles doivent être conservées pendant une durée n'excédant pas celle nécessaire aux finalités pour lesquelles elles ont été collectées, sauf à des fins d'archivage. La suppression se fera automatiquement après une certaine durée sans événement (la durée que vous aurez indiquée ci-dessous).
+NB_MONTHS = %s mois
+ONE_YEAR = 1 an
+NB_YEARS = %s ans
+DATAPOLICY_TIERS_CLIENT = Client
+DATAPOLICY_TIERS_PROSPECT = Prospect
+DATAPOLICY_TIERS_PROSPECT_CLIENT = Prospect/Client
+DATAPOLICY_TIERS_NIPROSPECT_NICLIENT = Ni prospect/Ni client
+DATAPOLICY_TIERS_FOURNISSEUR = Fournisseur
+DATAPOLICY_CONTACT_CLIENT = Client
+DATAPOLICY_CONTACT_PROSPECT = Prospect
+DATAPOLICY_CONTACT_PROSPECT_CLIENT = Prospect/Client
+DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Ni prospect/Ni client
+DATAPOLICY_CONTACT_FOURNISSEUR = Fournisseur
+DATAPOLICY_ADHERENT = Adhérent
+DATAPOLICY_Tooltip_SETUP = Type de contact - Indiquez vos choix pour chaque type.
+DATAPOLICYMail = Configuration des e-mails
+DATAPOLICYSUBJECTMAIL = Objet du courriel
+DATAPOLICYCONTENTMAIL = Contenu de l'e-mail
+DATAPOLICYSUBSITUTION = Vous pouvez utiliser les variables suivantes dans votre email (LINKACCEPT permet de créer un lien enregistrant l'accord de la personne, LINKREFUSED permet d'enregistrer le refus de la personne) :
+DATAPOLICYACCEPT = Message après accord
+DATAPOLICYREFUSE = Message après désaccord
+SendAgreementText = Vous pouvez envoyer un e-mail RGPD à tous vos contacts concernés (qui n'ont pas encore reçu d'e-mail et pour lesquels vous n'avez rien enregistré concernant leur accord RGPD). Pour ce faire, utilisez le bouton suivant.
+SendAgreement = Envoyer des emails
+AllAgreementSend = Tous les e-mails ont été envoyés
+TXTLINKDATAPOLICYACCEPT = Texte pour le lien "accord"
+TXTLINKDATAPOLICYREFUSE = Texte pour le lien "désaccord"
+
+
+#
+# Extrafields
+#
+DATAPOLICY_BLOCKCHECKBOX = RGPD : Traitement des données personnelles
+DATAPOLICY_consentement = Consentement obtenu pour le traitement des données personnelles
+DATAPOLICY_opposition_traitement = S'oppose au traitement de ses données personnelles
+DATAPOLICY_opposition_prospection = S'oppose au traitement de ses données personnelles à des fins de prospection
+
+#
+# Popup
+#
+DATAPOLICY_POPUP_ANONYME_TITLE = Anonymiser un tiers
+DATAPOLICY_POPUP_ANONYME_TEXTE = Vous ne pouvez pas supprimer ce contact de Dolibarr car il y a des éléments liés. Conformément au RGPD, vous rendrez toutes ces données anonymes pour respecter vos obligations. Voulez-vous continuer ?
+
+#
+# Button for portability
+#
+DATAPOLICY_PORTABILITE = Portabilité RGPD
+DATAPOLICY_PORTABILITE_TITLE = Exportation de données personnelles
+DATAPOLICY_PORTABILITE_CONFIRMATION = Vous souhaitez exporter les données personnelles de ce contact. Êtes-vous sûr ?
+
+#
+# Notes added during an anonymization
+#
+ANONYMISER_AT = Anonymisé le %s
+
+# V2
+DATAPOLICYReturn = Validation RGPD
+DATAPOLICY_date = Date d'accord/désaccord RGPD
+DATAPOLICY_send = Date d'envoi de l'e-mail d'accord
+DATAPOLICYReturn = Validation RGPD
+DATAPOLICY_SEND = Envoyer un e-mail RGPD
+MailSent = L'email a été envoyé
+
+# ERROR
+ErrorSubjectIsRequired = Erreur : L'objet de l'email est obligatoire. Indiquez-le dans la configuration du module
+=Suite à un problème technique, nous n'avons pas pu enregistrer votre choix. Nous nous en excusons. Contactez-nous pour nous faire part de votre choix.
+NUMBER_MONTH_BEFORE_DELETION = Nombre de mois avant la suppression
diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang
index f043c5b5afc..d407d7c91b8 100644
--- a/htdocs/langs/fr_FR/errors.lang
+++ b/htdocs/langs/fr_FR/errors.lang
@@ -48,6 +48,7 @@ ErrorBadImageFormat=Cet image est dans un format non pris en charge (Votre PHP n
ErrorBadDateFormat=La valeur '%s' a un format de date non reconnu
ErrorWrongDate=La date est incorrecte
ErrorFailedToWriteInDir=Impossible d'écrire dans le répertoire %s
+ErrorFailedToBuildArchive=Échec de la création du fichier d'archive %s
ErrorFoundBadEmailInFile=Syntaxe d'email incorrecte trouvée pour %s lignes dans le fichier (exemple ligne %s avec email=%s)
ErrorUserCannotBeDelete=L'utilisateur ne peut pas être supprimé. Peut-être est-il associé à des éléments de Dolibarr.
ErrorFieldsRequired=Des champs obligatoire n'ont pas été remplis.
@@ -76,7 +77,7 @@ ErrorNoValueForCheckBoxType=Les valeurs de la liste de case à cochées doivent
ErrorNoValueForRadioType=Les valeurs de la liste d'options doivent être renseignées
ErrorBadFormatValueList=Les valeurs de la liste ne peuvent pas avoir plus d'une virgule: %s mais il en faut au moins une: clé, valeur
ErrorFieldCanNotContainSpecialCharacters=Le champ %s ne peut contenir de caractères spéciaux.
-ErrorFieldCanNotContainSpecialNorUpperCharacters=Le champ %s ne doit contenir ni caractères spéciaux ni majuscules et ne peut contenir que des chiffres.
+ErrorFieldCanNotContainSpecialNorUpperCharacters=Le champ %s ne doit pas contenir de caractères spéciaux, ni de majuscules, et doit commencer par un caractère alphabétique (a-z)
ErrorFieldMustHaveXChar=Le champ %s doit comporter au moins %s caractères.
ErrorNoAccountancyModuleLoaded=Aucun module de comptabilité activé
ErrorExportDuplicateProfil=Ce nom de profil existe déjà pour ce lot d'export.
@@ -97,7 +98,6 @@ ErrorFieldValueNotIn=Champ %s: '%s' n'est pas une valeur disponibl
ErrorFieldRefNotIn=Champ %s: '%s' n'est pas une référence existante comme %s
ErrorsOnXLines=Erreurs sur %s enregistrement(s) source
ErrorFileIsInfectedWithAVirus=L'antivirus n'a pas pu valider ce fichier (il est probablement infecté par un virus) !
-ErrorSpecialCharNotAllowedForField=Les caractères spéciaux ne sont pas admis pour le champ "%s"
ErrorNumRefModel=Une référence existe en base (%s) et est incompatible avec cette numérotation. Supprimez la ligne ou renommez la référence pour activer ce module.
ErrorQtyTooLowForThisSupplier=Quantité insuffisante pour ce fournisseur ou aucun tarif défini sur ce produit pour ce fournisseur
ErrorOrdersNotCreatedQtyTooLow=Certaines commandes n'ont pas été créées en raison de quantités trop faibles
@@ -291,6 +291,13 @@ ErrorAjaxRequestFailed=Demande échouée
ErrorThirpdartyOrMemberidIsMandatory=Définir un tiers ou un adhérent dans le partenariat est obligatoire
ErrorFailedToWriteInTempDirectory=Impossible d'écrire dans le répertoire temporaire
ErrorQuantityIsLimitedTo=La quantité est limitée à %s
+ErrorFailedToLoadThirdParty=Impossible de trouver/charger un tiers à partir de id=%s, email=%s, name=%s
+ErrorThisPaymentModeIsNotSepa=Ce mode de paiement n'est pas un compte bancaire
+ErrorStripeCustomerNotFoundCreateFirst=Le client Stripe n'est pas défini pour ce tiers (ou défini sur une valeur supprimée du côté Stripe). Créez (ou rattachez) d'abord.
+ErrorCharPlusNotSupportedByImapForSearch=La recherche IMAP n'est pas en mesure de rechercher dans l'expéditeur ou le destinataire une chaîne contenant le caractère +
+ErrorTableNotFound=Table %s introuvable
+ErrorValueForTooLow=La valeur pour %s est trop faible
+ErrorValueCantBeNull=La valeur pour %s ne peut pas être nulle
# Warnings
WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Votre paramètre PHP upload_max_filesize (%s) est supérieur au paramètre PHP post_max_size (%s). Ceci n'est pas une configuration cohérente.
@@ -326,6 +333,8 @@ WarningAvailableOnlyForHTTPSServers=Disponible uniquement si une connexion sécu
WarningModuleXDisabledSoYouMayMissEventHere=Le module %s n’a pas été activé. Par conséquent, il se peut que vous manquiez beaucoup d’événements ici.
WarningPaypalPaymentNotCompatibleWithStrict=La valeur 'Strict' fait que les fonctionnalités de paiement en ligne ne fonctionnent pas correctement. Utilisez plutôt 'Lax'.
WarningThemeForcedTo=Attention, le choix du thème a été forcé à %s par la constante cachée MAIN_FORCETHEME
+WarningPagesWillBeDeleted=Attention, cela supprimera également toutes les pages/conteneurs existants du site. Vous devriez exporter votre site Web avant, afin d'avoir une sauvegarde pour le réimporter plus tard.
+WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal=La validation automatique est désactivée lorsque l'option de diminution du stock est définie sur "Validation de la facture".
# Validate
RequireValidValue = Valeur non valide
diff --git a/htdocs/langs/fr_FR/exports.lang b/htdocs/langs/fr_FR/exports.lang
index 665173fd58e..260bcebda1d 100644
--- a/htdocs/langs/fr_FR/exports.lang
+++ b/htdocs/langs/fr_FR/exports.lang
@@ -95,8 +95,8 @@ NbOfLinesOK=Nombre de lignes sans erreur ni avertissement : %s.
NbOfLinesImported=Nombre de lignes importées avec succès : %s.
DataComeFromNoWhere=La valeur à insérer n'est issue d'aucun champ du fichier source.
DataComeFromFileFieldNb=La valeur à insérer provient de la colonne %s dans le fichier source.
-DataComeFromIdFoundFromRef=La valeur provenant du fichier source sera utilisée pour trouver l'identifiant de l'objet parent à utiliser (donc l'objet %s qui a la référence du fichier source doit exister dans la base de données).
-DataComeFromIdFoundFromCodeId=Le valeur du code provenant du fichier source sera utilisé pour trouver l'id de l'objet parent à utiliser (donc le code du fichier source doit exister dans le dictionnaire %s ). Notez que si vous connaissez l'identifiant, vous pouvez également l'utiliser dans le fichier source à la place du code. L'importation devrait fonctionner dans les deux cas.
+DataComeFromIdFoundFromRef=La valeur qui vient du fichier source sera utilisée pour trouver l'id de l'objet parent à utiliser (donc l'objet %s qui a la réf. du fichier source doit exister dans la base de données).
+DataComeFromIdFoundFromCodeId=La valeur du code provenant du fichier source sera utilisée pour trouver l'identifiant de l'objet parent à utiliser (donc le code du fichier source doit exister dans le dictionnaire %s). Notez que si vous connaissez l'identifiant, vous pouvez également l'utiliser dans le fichier source à la place du code. L'importation devrait fonctionner dans les deux cas.
DataIsInsertedInto=La donnée issue du fichier source sera insérée dans le champ suivant:
DataIDSourceIsInsertedInto=L'identifiant de l'objet père, retrouvé à partir de la donnée dans le fichier source, sera inséré dans le champ suivant :
DataCodeIDSourceIsInsertedInto=L'identifiant de la ligne père, retrouvé à partir du code, sera inséré dans le champ suivant :
@@ -134,7 +134,9 @@ FormatControlRule=Règle de contrôle de format
## imports updates
KeysToUseForUpdates=Clé à utiliser pour mettre à jour les données
NbInsert=Nombre de lignes insérées: %s
+NbInsertSim=Nombre de lignes qui seront insérées : %s
NbUpdate=Nombre de lignes mises à jour: %s
+NbUpdateSim=Nombre de lignes qui seront mises à jour : %s
MultipleRecordFoundWithTheseFilters=Plusieurs enregistrements ont été trouvés avec ces filtres: %s
StocksWithBatch=Stocks et entrepôts des produits avec numéro de lot/série
WarningFirstImportedLine=La ou les premières lignes ne seront pas importées avec la sélection actuelle
diff --git a/htdocs/langs/fr_FR/holiday.lang b/htdocs/langs/fr_FR/holiday.lang
index 22720779eaf..27439f66c27 100644
--- a/htdocs/langs/fr_FR/holiday.lang
+++ b/htdocs/langs/fr_FR/holiday.lang
@@ -1,10 +1,11 @@
# Dolibarr language file - Source file is en_US - holiday
HRM=GRH
-Holidays=Congés
-Holiday=Congé
+Holidays=Feuilles
+Holiday=Demande de congés
CPTitreMenu=Demande de congés
MenuReportMonth=État mensuel
MenuAddCP=Créer demande de congés
+MenuCollectiveAddCP=Nouvelle demande de congé collectif
NotActiveModCP=Vous devez activer le module Congés pour afficher cette page.
AddCP=Créer une demande de congés
DateDebCP=Date Début
@@ -57,6 +58,7 @@ ConfirmDeleteCP=Confirmer la suppression de cette demande de congés ?
ErrorCantDeleteCP=Erreur, vous n'avez pas le droit de supprimer cette demande de congés.
CantCreateCP=Erreur, vous n'avez pas le droit de créer une demande de congés.
InvalidValidatorCP=Vous devez choisir un approbateur pour votre demande de congés.
+InvalidValidator=L'utilisateur choisi n'est pas un approbateur.
NoDateDebut=Vous devez choisir une date de début.
NoDateFin=Vous devez choisir une date de fin.
ErrorDureeCP=Votre demande de congés payés ne contient aucun jour ouvré.
@@ -80,6 +82,8 @@ MotifCP=Motif
UserCP=Utilisateur
ErrorAddEventToUserCP=Une erreur est survenue durant l'ajout du congé exceptionnel.
AddEventToUserOkCP=L'ajout du congé exceptionnel à bien été effectué.
+ErrorFieldRequiredUserOrGroup=Le champ "groupe" ou le champ "utilisateur" doivent être remplis
+fusionGroupsUsers=Le champ "groupes" et le champ "utilisateur" seront fusionnés
MenuLogCP=Voir historique modif.
LogCP=Historique des mises à jour de jours de congés disponibles
ActionByCP=Réalisée par
@@ -87,6 +91,13 @@ UserUpdateCP=Mis à jour pour
PrevSoldeCP=Précédent Solde
NewSoldeCP=Nouveau Solde
alreadyCPexist=Une demande de congés a déjà été faite sur cette période.
+UseralreadyCPexist=Une demande de congé a déjà été faite pour cette période pour %s.
+groups=Groupes
+users=Utilisateurs
+AutoSendMail=Envoi automatique d'email
+NewHolidayForGroup=Nouvelle demande de congé collectif
+SendRequestCollectiveCP=Envoyer la demande de congé collectif
+AutoValidationOnCreate=Validation automatique
FirstDayOfHoliday=Premier jour de congés
LastDayOfHoliday=Dernier jour de congés
BoxTitleLastLeaveRequests=Les %s dernières demandes de congés modifiées
@@ -138,3 +149,10 @@ XIsAUsualNonWorkingDay=%s est généralement un jour NON ouvrable
BlockHolidayIfNegative=Bloqué lorsque le solde est négatif
LeaveRequestCreationBlockedBecauseBalanceIsNegative=La création de cette demande de congé est bloquée car votre solde est négatif
ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=La demande de congé %s doit être brouillon, annulée ou refusée pour être supprimée
+IncreaseHolidays=Augmenter le nombre de jours de vacances
+HolidayRecordsIncreased= %s registres de vacances augmentés
+HolidayRecordIncreased=Registre de vacances augmenté
+ConfirmMassIncreaseHoliday=Augmentation en masse des vacances
+NumberDayAddMass=Nombre de jours à ajouter à la sélection
+ConfirmMassIncreaseHolidayQuestion=Êtes-vous sûr de vouloir augmenter les vacances du ou des enregistrement(s) sélectionnés %s ?
+HolidayQtyNotModified=Le solde des jours restants pour %s n'a pas été modifié
diff --git a/htdocs/langs/fr_FR/install.lang b/htdocs/langs/fr_FR/install.lang
index 5e520547352..0888db3aca6 100644
--- a/htdocs/langs/fr_FR/install.lang
+++ b/htdocs/langs/fr_FR/install.lang
@@ -28,6 +28,7 @@ ErrorPHPVersionTooLow=Version PHP trop ancienne. La version %s ou supérieure es
ErrorPHPVersionTooHigh=Version PHP trop élevée. La version %s ou inférieure est requise.
ErrorConnectedButDatabaseNotFound=Connexion au serveur réussie mais base '%s' introuvable.
ErrorDatabaseAlreadyExists=La base de données '%s' existe déjà.
+ErrorNoMigrationFilesFoundForParameters=Aucun fichier de migration trouvé pour les versions sélectionnées
IfDatabaseNotExistsGoBackAndUncheckCreate=Si la base n'existe pas, revenez en arrière et cochez l'option "Créer la base de données".
IfDatabaseExistsGoBackAndCheckCreate=Si la base existe déjà, revenez en arrière et désactiver l'option "Créer la base de données".
WarningBrowserTooOld=Version du navigateur trop ancienne. Nous vous recommandons de mettre à jour vers une version récente de Firefox, Chrome ou Opera.
@@ -50,7 +51,6 @@ DatabaseName=Nom de la base de données
DatabasePrefix=Préfixe des tables
DatabasePrefixDescription=Préfixe de table de base de données. Si vide, la valeur par défaut est llx_.
AdminLogin=Identifiant du propriétaire de la base de données Dolibarr.
-PasswordAgain=Vérification du mot de passe
AdminPassword=Mot de passe du propriétaire de la base de données Dolibarr.
CreateDatabase=Créer la base de données
CreateUser=Créer le propriétaire ou lui affecter les droits à la base
@@ -212,3 +212,5 @@ ClickHereToGoToApp=Cliquez ici pour aller sur votre application
ClickOnLinkOrRemoveManualy=Si une mise à niveau est en cours, veuillez patienter. Si non, cliquez sur le lien suivant. Si vous atteignez toujours cette page, vous devez supprimer manuellement le fichier install.lock dans le répertoire documents
Loaded=Chargé
FunctionTest=Fonction test
+NodoUpgradeAfterDB=Aucune action demandée par les modules externes après la mise à jour de la base de données
+NodoUpgradeAfterFiles=Aucune action demandée par les modules externes après la mise à jour des fichiers ou des répertoires
diff --git a/htdocs/langs/fr_FR/interventions.lang b/htdocs/langs/fr_FR/interventions.lang
index 50e6ff1d9d1..c09f8431498 100644
--- a/htdocs/langs/fr_FR/interventions.lang
+++ b/htdocs/langs/fr_FR/interventions.lang
@@ -68,3 +68,4 @@ ConfirmReopenIntervention=Êtes-vous sur de vouloir ré-ouvrir l'intervention %s, i
ErrorUserPermissionAllowsToLinksToItselfOnly=Pour des raisons de sécurité, il faut posséder les droits de modification de tous les utilisateurs pour pouvoir lier un adhérent à un utilisateur autre que vous même.
SetLinkToUser=Lier à un utilisateur Dolibarr
SetLinkToThirdParty=Lier à un tiers Dolibarr
+MemberCountersArePublic=Les compteurs de membres valides sont publics
MembersCards=Génération de cartes pour les membres
MembersList=Liste des adhérents
MembersListToValid=Liste des adhérents brouillons (à valider)
@@ -72,6 +73,12 @@ MemberTypeCanNotBeDeleted=Ce type d'adhérent ne peut pas être supprimé
NewSubscription=Nouvelle cotisation
NewSubscriptionDesc=Ce formulaire permet de vous inscrire comme nouvel adhérent de l'association. Pour un renouvellement (si vous êtes déjà adhérent), contactez plutôt l'association par email %s.
Subscription=Adhésion / cotisation
+AnyAmountWithAdvisedAmount=Tout montant avec une quantité recommandée de %s%s
+AnyAmountWithoutAdvisedAmount=Tout montant
+CanEditAmountShort=Tout montant
+CanEditAmountShortForValues=recommandé, tout montant
+MembershipDuration=Durée
+GetMembershipButtonLabel=Obtenir l'adhésion
Subscriptions=Adhésions / cotisations
SubscriptionLate=En retard
SubscriptionNotReceived=Cotisation non reçue
@@ -136,7 +143,7 @@ CardContent=Contenu de votre fiche adhérent
# Text of email templates
ThisIsContentOfYourMembershipRequestWasReceived=Nous vous informons que votre demande d'adhésion a bien été reçue.
ThisIsContentOfYourMembershipWasValidated=Nous vous informons que votre adhésion a été validé avec les informations suivantes:
-ThisIsContentOfYourSubscriptionWasRecorded=Nous vous informons que votre nouvelle cotisation a été enregistrée.
+ThisIsContentOfYourSubscriptionWasRecorded=Nous voulons vous informer que votre nouvelle cotisation a été enregistrée. Veuillez trouver votre facture ci-jointe.
ThisIsContentOfSubscriptionReminderEmail=Nous voulons vous informer que votre adhésion est sur le point d'expirer ou a déjà expiré (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). Nous espérons que vous pourrez la renouveler, votre soutien nous est précieux.
ThisIsContentOfYourCard=Ceci est un rappel des informations que nous avons vous concernant. N'hésitez pas à nous contacter en cas d'erreur.
DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Sujet de l'email reçu en cas d'auto-inscription d'un invité
@@ -199,14 +206,8 @@ NbOfSubscriptions=Nombre de cotisations
AmountOfSubscriptions=Montant des cotisations
TurnoverOrBudget=Chiffre affaire (pour société) ou Budget (asso ou collectivité)
DefaultAmount=Montant par défaut de la cotisation
-CanEditAmount=Le visiteur peut modifier / choisir le montant de sa cotisation quel que soit le type d'adhésion
-AmountIsLowerToMinimumNotice=sur un dû total de %s
-AnyAmountWithAdvisedAmount=Montant libre avec un montant recommandé de %s %s
-AnyAmountWithoutAdvisedAmount=Montant libre
-CanEditAmountShortForValues=conseillé, montant libre
-MembershipDuration=Durée
-GetMembershipButtonLabel=Adhérer
-CanEditAmountShort=Montant libre
+CanEditAmount=Le visiteur peut choisir/modifier le montant de sa contribution quel que soit le type d'adhérent
+AmountIsLowerToMinimumNotice=Le montant est inférieur au montant minimum de %s
MEMBER_NEWFORM_PAYONLINE=Rediriger sur la page intégrée de paiement en ligne
ByProperties=Par nature
MembersStatisticsByProperties=Statistiques des adhérents par nature
diff --git a/htdocs/langs/fr_FR/modulebuilder.lang b/htdocs/langs/fr_FR/modulebuilder.lang
index d29c9f2164b..2bd50f4225b 100644
--- a/htdocs/langs/fr_FR/modulebuilder.lang
+++ b/htdocs/langs/fr_FR/modulebuilder.lang
@@ -1,7 +1,8 @@
# Dolibarr language file - Source file is en_US - loan
+IdModule= ID module
ModuleBuilderDesc=Cet outil ne doit être utilisé que par des utilisateurs ou des développeurs expérimentés. Il fournit des utilitaires pour construire ou éditer votre propre module. La documentation pour le développement manuel alternatif est ici .
EnterNameOfModuleDesc=Entrez le nom du module/application à créer sans espaces. Utilisez des majuscules pour séparer les mots (Par exemple: MyModule, EcommerceForShop, SyncWithMySystem...)
-EnterNameOfObjectDesc=Entrez le nom de l'objet à créer sans espaces. Utilisez des majuscules pour séparer les mots (par exemple: MyObject, Student, Teacher...). Le fichier de classe CRUD, mais aussi le fichier d'API, les pages pour lister/ajouter/modifier/supprimer l'objet et les fichiers SQL seront générés.
+EnterNameOfObjectDesc=Renseignez le nom de l'objet à créer, sans utiliser d'espace. Utilisez des majuscules pour séparer les termes (par exemple : MyObject, Student, Teacher...). Le fichier de classe CRUD, les pages pour lister/ajouter/modifier/supprimer l'objet et les fichiers SQL seront générés.
EnterNameOfDictionaryDesc=Entrez le nom du dictionnaire à créer sans espaces. Utilisez des majuscules pour séparer les mots (Par exemple : MyDico...). Le fichier de classe, mais aussi le fichier SQL seront générés.
ModuleBuilderDesc2=Chemin ou les modules sont générés/modifiés (premier répertoire pour les modules externes défini dans %s):%s
ModuleBuilderDesc3=Modules générés/éditables trouvés : %s
@@ -9,6 +10,7 @@ ModuleBuilderDesc4=Un module est détecté comme 'modifiable' quand le fichier <
NewModule=Nouveau module
NewObjectInModulebuilder=Nouvel objet
NewDictionary=Nouveau dictionnaire
+ModuleName=Nom du module
ModuleKey=Clé du module
ObjectKey=Clé de l'objet
DicKey=Clé du dictionnaire
@@ -48,6 +50,7 @@ PathToModulePackage=Chemin du zip du package du module/application
PathToModuleDocumentation=Chemin d'accès au fichier de documentation du module (%s)
SpaceOrSpecialCharAreNotAllowed=Les espaces et les caractères spéciaux ne sont pas autorisés.
FileNotYetGenerated=Fichier non encore généré
+GenerateCode=Générer le code
RegenerateClassAndSql=Forcer la mise à jour des fichiers .class et .sql
RegenerateMissingFiles=Générer les fichiers manquant
SpecificationFile=Fichier de documentation
@@ -86,10 +89,10 @@ ListOfMenusEntries=Liste des entrées du menu
ListOfDictionariesEntries=Liste des entrées de dictionnaires
ListOfPermissionsDefined=Liste des permissions
SeeExamples=Voir des exemples ici
-EnabledDesc=Condition pour que ce champ soit actif (Exemples: 1 ou $conf->global->MYMODULE_MYOPTION)
-VisibleDesc=Le champ est-il visible ? (Exemples: 0 = Jamais visible, 1 = Visible sur les listes et formulaires de création/mise à jour/visualisation, 2 = Visible uniquement sur la liste, 3 = Visible uniquement sur le formulaire de création/mise à jour/affichage (pas les listes), 4=Visible sur les listes et formulaire de mise à jour et affichage uniquement (pas en création), 5=Visible sur les listes et formulaire en lecture (pas en création ni modification).
Utiliser une valeur négative signifie que le champ n'est pas affiché par défaut sur la liste mais peut être sélectionné pour l'affichage).
Il peut s'agir d'une expression, par exemple : preg_match('/public/', $_SERVER['PHP_SELF'])?0:1 ($user->rights->holiday->define_holiday ? 1 : 0)
-DisplayOnPdfDesc=Afficher ce champ sur les documents PDF compatibles, vous pouvez gérer la position avec le champ "Position. Actuellement, les modèles compatibles PDF connus sont : eratostene (commande), espadon (expédition), sponge (factures), cyan (devis/propositions commerciales), cornas (commande fournisseur)
Pour le document : 0 = non affiché 1 = affiché 2 = affiché uniquement si non vide
Pour les lignes de document : 0 = non affiché 1 = affiché dans une colonne 3 = affiché dans la colonne description après la description 4 = affiché dans la colonne description après la description uniquement si non vide
-DisplayOnPdf=Afficher sur PDF
+EnabledDesc=Condition pour que ce champs soit actif.
Exemples: 1 isModEnabled('MAIN_MODULE_MYMODULE') getDolGlobalString('MYMODULE_OPTION')==2
+VisibleDesc=Le champ est-il visible ? (Exemples: 0=Jamais visible, 1=Visible sur les listes et formulaires de création/mise à jour/visualisation, 2=Visible uniquement sur les listes, 3=Visible uniquement sur le formulaire de création/mise à jour/affichage (pas les listes), 4=Visible sur les listes et formulaire de mise à jour et affichage uniquement (pas en création), 5=Visible sur les listes et formulaire en lecture (pas en création ni modification).
Utiliser une valeur négative signifie que le champ n'est pas affiché par défaut sur la liste mais peut être sélectionné pour l'affichage).
Il peut s'agir d'une expression, par exemple : preg_match('/public/', $_SERVER['PHP_SELF'])?0:1 $user->hasRight('holiday', 'define_holiday')?1:5
+DisplayOnPdfDesc=Affichez ce champ sur les documents PDF compatibles, vous pouvez gérer la position avec le champ "Position". Pour le document : 0 = non affiché 1 = affiché 2 = affiché uniquement si non vide
Pour les lignes de document : 0 = non affiché 1 = affiché dans une colonne 3 = affiché dans la colonne description après la description 4 = affiché dans la colonne description après la description uniquement si non vide
+DisplayOnPdf=Sur les PDF
IsAMeasureDesc=Peut-on cumuler la valeur du champ pour obtenir un total dans les listes ? (Exemples: 1 ou 0)
SearchAllDesc=Le champ doit-il être utilisé pour effectuer une recherche à partir de l'outil de recherche rapide ? (Exemples: 1 ou 0)
SpecDefDesc=Entrez ici toute la documentation que vous souhaitez joindre au module et qui n'a pas encore été définis dans d'autres onglets. Vous pouvez utiliser .md ou, mieux, la syntaxe enrichie .asciidoc.
@@ -105,7 +108,7 @@ TriggerDefDesc=Définissez dans le fichier trigger le code que vous souhaitez ex
SeeIDsInUse=Voir les IDs utilisés dans votre installation
SeeReservedIDsRangeHere=Voir la plage des ID réservés
ToolkitForDevelopers=Boîte à outils pour développeurs Dolibarr
-TryToUseTheModuleBuilder=Si vous connaissez SQL et PHP, vous pouvez utiliser l'assistant de création de module natif. Activez le module %s et utilisez l'assistant en cliquant sur la . dans le menu en haut à droite. Avertissement: Il s'agit d'une fonctionnalité avancée pour les développeurs. Ne pas expérimenter sur votre site de production!
+TryToUseTheModuleBuilder=Si vous connaissez SQL et PHP, vous pouvez utiliser l'assistant de création de module natif. Activez le module %s et utilisez l'assistant en cliquant sur la dans le menu en haut à droite. Avertissement: Il s'agit d'une fonctionnalité avancée pour les développeurs. Ne pas expérimenter sur votre site de production!
SeeTopRightMenu=Voir à droite de votre barre de menu principal
AddLanguageFile=Ajouter le fichier de langue
YouCanUseTranslationKey=Vous pouvez utiliser ici une clé qui est la clé de traduction trouvée dans le fichier de langue (voir l'onglet "Langues")
@@ -132,9 +135,9 @@ UseSpecificAuthor = Utiliser un auteur spécifique
UseSpecificVersion = Utiliser une version initiale spécifique
IncludeRefGeneration=La référence de l'objet doit être générée automatiquement par des règles de numérotation personnalisées
IncludeRefGenerationHelp=Cochez cette case si vous souhaitez inclure du code pour gérer automatiquement la génération de la référence à l'aide de règles de numérotation personnalisées
-IncludeDocGeneration=Je souhaite générer des documents à partir de modèles pour l'objet
+IncludeDocGeneration=Je souhaite la fonctionnalité pour générer des documents (PDF, ODT) à partir de modèles pour cet objet
IncludeDocGenerationHelp=Si vous cochez cette case, du code sera généré pour ajouter une section "Générer un document" sur la fiche de l'objet.
-ShowOnCombobox=Afficher la valeur dans la liste déroulante
+ShowOnCombobox=Afficher la valeur dans les listes déroulantes
KeyForTooltip=Clé pour l'info-bulle
CSSClass=CSS pour le formulaire d'édition / création
CSSViewClass=CSS pour le formulaire de lecture
@@ -154,3 +157,6 @@ ListOfTabsEntries=Liste des entrées d'onglet
TabsDefDesc=Définissez ici les onglets proposés par votre module
TabsDefDescTooltip=Les onglets fournis par votre module/application sont définis dans le tableau $this->tabs dans le fichier descripteur de module. Vous pouvez modifier manuellement ce fichier ou utiliser l'éditeur intégré.
BadValueForType=Mauvaise valeur pour le type %s
+DefinePropertiesFromExistingTable=Définir des propriétés à partir d'une table existante
+DefinePropertiesFromExistingTableDesc=Si une table dans la base de données (pour l'objet à créer) existe déjà, vous pouvez l'utiliser pour définir les propriétés de l'objet.
+DefinePropertiesFromExistingTableDesc2=Laisser vide si la table n'existe pas encore. Le générateur de code utilisera différents types de champs pour créer un exemple de table que vous pourrez modifier ultérieurement.
diff --git a/htdocs/langs/fr_FR/mrp.lang b/htdocs/langs/fr_FR/mrp.lang
index b9730cdb7f8..3cab2476a09 100644
--- a/htdocs/langs/fr_FR/mrp.lang
+++ b/htdocs/langs/fr_FR/mrp.lang
@@ -82,9 +82,7 @@ ProductsToProduce=Produits à produire
UnitCost=Coût unitaire
TotalCost=Coût total
BOMTotalCost=Le coût de production de cette nomenclature basé sur chaque quantité et produit à consommer (utilise le prix de revient si défini, sinon le PMP si défini, sinon le meilleur prix d'achat)
-BOMTotalCostService=Si le module "Poste de travail" est activé et qu'un poste de travail est défini par défaut sur la ligne, alors le calcul est "quantité (convertie en heures) x thm du poste de travail", sinon "quantité (convertie en heures) x prix de revient du service"
-BOMProductsList=Liste des composants
-BOMServicesList=Liste des services
+BOMTotalCostService=Si le module "Poste de travail" est activé et qu'un poste de travail est défini par défaut sur la ligne, alors le calcul est "quantité (convertie en heures) x poste de travail ahr", sinon "quantité (convertie en heures) x prix de revient de la prestation"
GoOnTabProductionToProduceFirst=Vous devez avoir la production pour clôturer un Ordre de Fabrication (voir onglet '%s'). Mais vous pouvez l'annuler.
ErrorAVirtualProductCantBeUsedIntoABomOrMo=Un kit ne peut pas être utilisé dans une Nomenclature ou un Ordre de fabrication.
Workstation=Poste de travail
@@ -94,7 +92,6 @@ WorkstationSetup = Configuration du module Poste de travail
WorkstationSetupPage = Configuration du module Poste de travail
WorkstationList=Liste des postes de travail
WorkstationCreate=Ajouter un nouveau poste de travail
-DefaultWorkstation=Poste de travail par défaut
ConfirmEnableWorkstation=Voulez-vous vraiment activer le poste de travail %s?
EnableAWorkstation=Activer le module Poste de travail
ConfirmDisableWorkstation=Voulez-vous vraiment désactiver la station de travail %s?
@@ -113,7 +110,7 @@ THMEstimatedHelp=Ce taux permet de définir un coût prévisionnel de l'article
BOM=Nomenclature
CollapseBOMHelp=Vous pouvez définir l'affichage par défaut des détails de la nomenclature dans la configuration du module BOM
MOAndLines=Ordres de fabrication et lignes
-MoChildGenerate=Generate Child Mo
-ParentMo=MO Parent
-MOChild=MO Child
-BomCantAddChildBom=La nomenclature %s est déjà présente dans l'arborescence qui mène à la nomenclature %s
+MoChildGenerate=Générer OF enfant
+ParentMo=OF parent
+MOChild=OF Enfant
+BomCantAddChildBom=La nomenclature %s est déjà présente dans l'arbre menant à la nomenclature %s
diff --git a/htdocs/langs/fr_FR/oauth.lang b/htdocs/langs/fr_FR/oauth.lang
index 95cb2958bcb..e884f616f39 100644
--- a/htdocs/langs/fr_FR/oauth.lang
+++ b/htdocs/langs/fr_FR/oauth.lang
@@ -9,8 +9,9 @@ HasAccessToken=Un jeton a été généré et sauvegardé dans la base de donnée
NewTokenStored=Jeton reçu et sauvegardé
ToCheckDeleteTokenOnProvider=Cliquer ici pour vérifier/effacer les autorisations sauvées par le fournisseur OAuth %s
TokenDeleted=Jeton effacé
+GetAccess=Cliquez ici pour obtenir un token
RequestAccess=Cliquez ici pour demander/renouveler l'accès et recevoir un nouveau jeton
-DeleteAccess=Cliquez ici pour effacer le jeton
+DeleteAccess=Cliquez ici pour supprimer le jeton
UseTheFollowingUrlAsRedirectURI=Utilisez l'URL suivante comme URI de redirection quand vous créez des identifiants d'accès chez votre fournisseur OAuth :
ListOfSupportedOauthProviders=Ajoutez vos fournisseurs de jetons OAuth2. Ensuite, rendez-vous sur la page d'administration de votre fournisseur OAuth pour créer/obtenir un identifiant et un secret OAuth et enregistrez-les ici. Une fois cela fait, basculez sur l'autre onglet pour générer votre jeton.
OAuthSetupForLogin=Page pour gérer (générer/supprimer) les jetons OAuth
@@ -34,5 +35,6 @@ OAUTH_ID=ID OAuth
OAUTH_SECRET=Code secret OAuth
OAuthProviderAdded=Fournisseur OAuth ajouté
AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Une entrée OAuth pour ce fournisseur et ce libellé existe déjà
-ScopeUndefined=Permissions (Scopes) non définies (voir onglet précédent)
-Scopes=Portées
\ No newline at end of file
+URLOfServiceForAuthorization=URL fournie par le service OAuth pour l'authentification
+Scopes=Permissions ("Scopes" OAuth)
+ScopeUndefined=Permissions (Cibles) non définies (voir onglet précédent)
diff --git a/htdocs/langs/fr_FR/other.lang b/htdocs/langs/fr_FR/other.lang
index 7617085348e..6c714be2c4d 100644
--- a/htdocs/langs/fr_FR/other.lang
+++ b/htdocs/langs/fr_FR/other.lang
@@ -311,10 +311,10 @@ ExternalSiteURL=URL du site externe du contenu iFrame HTML
ExternalSiteModuleNotComplete=La configuration du module "Site externe" est incomplète.
ExampleMyMenuEntry=Mon entrée de menu
-# FTP
+# ftp
FTPClientSetup=Connexion client FTP/FTPS
NewFTPClient=Nouvelle connexion FTP/FTPS
-FTPArea=Zone des connexions FTP/FTPS
+FTPArea=Zone FTP/SFTP
FTPAreaDesc=Vue d'un serveur FTP/FTPS
SetupOfFTPClientModuleNotComplete=La configuration du client FTP/FTPS semble incomplète
FTPFeatureNotSupportedByYourPHP=Votre version de PHP ne supporte pas les fonctions FTP/FTPS
@@ -325,3 +325,9 @@ FTPFailedToRemoveDir=Échec suppression répertoire %s (Vérifiez les per
FTPPassiveMode=Mode passif
ChooseAFTPEntryIntoMenu=Sélection d'un site FTP/FTPS depuis le menu
FailedToGetFile=Echec à la récupération du fichier %s
+ErrorFTPNodisconnect=Erreur de déconnexion du serveur FTP/SFTP
+FileWasUpload=Le fichier %s a été téléchargé
+FTPFailedToUploadFile=Impossible de télécharger le fichier %s.
+AddFolder=Créer un dossier
+FileWasCreateFolder=Le dossier %s a été créé
+FTPFailedToCreateFolder=Échec de la création du dossier %s.
diff --git a/htdocs/langs/fr_FR/partnership.lang b/htdocs/langs/fr_FR/partnership.lang
index 845bf4ff36c..41849e2812e 100644
--- a/htdocs/langs/fr_FR/partnership.lang
+++ b/htdocs/langs/fr_FR/partnership.lang
@@ -28,6 +28,7 @@ PartnershipCheckBacklink=Partenariat : Vérifiez le backlink référent
# Menu
#
NewPartnership=Nouveau partenariat
+NewPartnershipbyWeb= Votre partenariat a été ajouté avec succès.
ListOfPartnerships=Listes des partenariats
#
@@ -42,6 +43,7 @@ PARTNERSHIP_BACKLINKS_TO_CHECK=Liens de retour à vérifier
PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL=Nb de jours avant l'annulation de l'état d'un partenariat lorsque la cotisation a expiré
ReferingWebsiteCheck=Vérification du site référent
ReferingWebsiteCheckDesc=Vous pouvez activer une fonctionnalité pour vérifier que vos partenaires ont ajouté un rétrolien vers les domaines de votre site Web sur leur propre site Web.
+PublicFormRegistrationPartnerDesc=Dolibarr peut vous fournir une URL/un site Web public pour permettre aux visiteurs externes de demander à faire partie du programme de partenariat.
#
# Object
@@ -59,6 +61,12 @@ BacklinkNotFoundOnPartnerWebsite=Lien de retour non trouvé sur le site web part
ConfirmClosePartnershipAsk=Êtes-vous sûr de vouloir annuler ce partenariat ?
PartnershipType=Type de partenariat
PartnershipRefApproved=Partenariat %s approuvé
+KeywordToCheckInWebsite=Si vous souhaitez vérifier qu'un mot-clé donné est présent dans le site de chaque partenaire, définissez ce mot-clé ici
+PartnershipDraft=Brouillon
+PartnershipAccepted=Accepté
+PartnershipRefused=Refusé
+PartnershipCanceled=Annulé
+PartnershipManagedFor=Les partenaires sont
#
# Template Mail
@@ -82,11 +90,6 @@ CountLastUrlCheckError=Nombre d'erreurs lors de la dernière vérification d'URL
LastCheckBacklink=Date de la dernière vérification d'URL
ReasonDeclineOrCancel=Raison du refus
-#
-# Status
-#
-PartnershipDraft=Brouillon
-PartnershipAccepted=Accepté
-PartnershipRefused=Refusé
-PartnershipCanceled=Annulé
-PartnershipManagedFor=Les partenaires sont
+NewPartnershipRequest=Nouvelle demande de partenariat
+NewPartnershipRequestDesc=Ce formulaire vous permet de demander à faire partie de l'un de nos programmes de partenariat. Si vous avez besoin d'aide pour remplir ce formulaire, veuillez contacter par email %s .
+
diff --git a/htdocs/langs/fr_FR/paypal.lang b/htdocs/langs/fr_FR/paypal.lang
index 0fdb3e38d20..be600a2671b 100644
--- a/htdocs/langs/fr_FR/paypal.lang
+++ b/htdocs/langs/fr_FR/paypal.lang
@@ -34,3 +34,4 @@ ARollbackWasPerformedOnPostActions=Une annulation a été effectuée sur toutes
ValidationOfPaymentFailed=La validation du paiement a échoué
CardOwner=Titulaire de la carte
PayPalBalance=Crédit Paypal
+OnlineSubscriptionPaymentLine=Cotisation en ligne enregistrée sur %s Payé via %s Adresse IP d'origine : %s ID de transaction : %s
diff --git a/htdocs/langs/fr_FR/productbatch.lang b/htdocs/langs/fr_FR/productbatch.lang
index 68b5e928084..8493e419384 100644
--- a/htdocs/langs/fr_FR/productbatch.lang
+++ b/htdocs/langs/fr_FR/productbatch.lang
@@ -1,8 +1,8 @@
# ProductBATCH language file - Source file is en_US - ProductBATCH
ManageLotSerial=Utiliser les numéros de lots/série
-ProductStatusOnBatch=Oui (Lot/Série requis)
+ProductStatusOnBatch=Oui (lot/série requis)
ProductStatusOnSerial=Oui (numéro de série unique requis)
-ProductStatusNotOnBatch=Non (Lot/Série non utilisé)
+ProductStatusNotOnBatch=Non (lot/série non utilisé)
ProductStatusOnBatchShort=Lot
ProductStatusOnSerialShort=Numéro Série
ProductStatusNotOnBatchShort=Non
@@ -17,6 +17,7 @@ printBatch=Lot/Série: %s
printEatby=DMD/DLUO: %s
printSellby=DLC: %s
printQty=Qté: %d
+printPlannedWarehouse=Entrepôt : %s
AddDispatchBatchLine=Ajouter une ligne pour la répartition par durée de conservation
WhenProductBatchModuleOnOptionAreForced=Quand le module Lot/Série est activé, le mode de décrémentation automatique des stocks est forcé sur 'Décrémenter les stocks réel sur validation d'expédition' et le mode d'incrémentation automatique de stocks est forcé sur 'Incrémenter les stocks réels sur ventilation manuels dans les entrepôts' et ne peut pas être édité. Les autres options peuvent être définies comme vous le voulez.
ProductDoesNotUseBatchSerial=Ce produit n'utilise pas les numéros de lot/série
@@ -43,4 +44,4 @@ HideLots=Masquer les lots
OutOfOrder=Hors d'usage
InWorkingOrder=En état de marche
ToReplace=Remplacer
-CantMoveNonExistantSerial=Erreur : Vous avez demandé un mouvement sur un numéro de série qui n’existe plus. Peut-être avez-vous requis le même numéro de série plusieurs fois dans une même expédition, ou il a déjà servi dans une autre expédition. Supprimez cette expédition et préparez-en une autre.
+CantMoveNonExistantSerial=Erreur : un numéro de série sur lequel vous avez demandé un mouvement n'existe plus. Peut-être avez-vous utilisé plusieurs fois le même numéro de série depuis le même entrepôt sur la même expédition, ou peut-être était-il utilisé sur une autre expédition. Supprimez cette expédition et préparez-en une autre.
diff --git a/htdocs/langs/fr_FR/products.lang b/htdocs/langs/fr_FR/products.lang
index 3e7eece5d0e..9061f0498fc 100644
--- a/htdocs/langs/fr_FR/products.lang
+++ b/htdocs/langs/fr_FR/products.lang
@@ -140,7 +140,7 @@ PriceQtyMin=Prix quantité min.
PriceQtyMinCurrency=Prix (devise) pour cette quantité.
WithoutDiscount=Sans remise
VATRateForSupplierProduct=Taux TVA (pour ce produit/fournisseur)
-DiscountQtyMin=Remise par défaut quantité min.
+DiscountQtyMin=Remise pour cette qté.
NoPriceDefinedForThisSupplier=Aucun prix/qté défini pour ce fournisseur/produit
NoSupplierPriceDefinedForThisProduct=Aucun prix/qté fournisseur défini pour ce produit
PredefinedItem=Article prédéfini
@@ -345,7 +345,7 @@ PossibleValues=Valeurs possibles
GoOnMenuToCreateVairants=Allez sur le menu %s - %s pour ajouter les attributs de variantes (comme les couleurs, tailles, ...)
UseProductFournDesc=Ajouter une fonctionnalité pour définir la description produit définie par les vendeurs (pour chaque référence vendeur) en plus de la description pour les clients
ProductSupplierDescription=Description du fournisseur du produit
-UseProductSupplierPackaging=Utiliser le conditionnement/emballage sur les prix fournisseur (recalculer les quantités en fonction de l'emballage défini sur le prix fournisseur lors de l'ajout / mise à jour de la ligne dans les documents fournisseurs)
+UseProductSupplierPackaging=Utiliser l'emballage pour les prix arrondis aux multiples pour les prix d'achat (recalculer les quantités en fonction des multiples définis sur les prix d'achat lors de l'ajout/de la mise à jour d'une ligne dans les documents d'un fournisseur)
PackagingForThisProduct=Conditionnement
PackagingForThisProductDesc=Vous achèterez automatiquement un multiple de cette quantité.
QtyRecalculatedWithPackaging=La quantité de la ligne a été recalculée en fonction de l'emballage du fournisseur
@@ -417,7 +417,6 @@ ErrorsProductsMerge=Erreur lors de la fusion des produits
SwitchOnSaleStatus=Basculer le statut En vente
SwitchOnPurchaseStatus=Basculer le statut En achat
StockMouvementExtraFields= Champs supplémentaires (mouvement de stock)
-OrProductsWithCategories=Ou produits avec tags/categories
InventoryExtraFields= Attributs supplémentaires (inventaire)
ScanOrTypeOrCopyPasteYourBarCodes=Scannez ou tapez ou copiez/collez vos codes-barres
PuttingPricesUpToDate=Mise à jour des prix avec les prix connus actuels
@@ -428,3 +427,4 @@ RealValuation=Valorisation réelle
ConfirmEditExtrafield = Sélectionnez l'extrafield que vous souhaitez modifier
ConfirmEditExtrafieldQuestion = Voulez-vous vraiment modifier cet extrafield ?
ModifyValueExtrafields = Modifier la valeur d'un extrafield
+OrProductsWithCategories=Ou des produits avec des tags/catégories
diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang
index af97ce451bb..90fe82c2ffb 100644
--- a/htdocs/langs/fr_FR/projects.lang
+++ b/htdocs/langs/fr_FR/projects.lang
@@ -167,7 +167,7 @@ OpportunityAmount=Montant opportunité
OpportunityAmountShort=Montant opportunité
OpportunityWeightedAmount=Montant pondéré des opportunités
OpportunityWeightedAmountShort=Montant pondéré opp.
-OpportunityAmountAverageShort=montant moyen des opportunités
+OpportunityAmountAverageShort=Montant moyen des opportunités
OpportunityAmountWeigthedShort=Montant pondéré des opportunités
WonLostExcluded=hors opportunités remportées/perdues
##### Types de contacts #####
@@ -259,7 +259,7 @@ TimeSpentInvoiced=Temps passé facturé
TimeSpentForIntervention=Temps consommé
TimeSpentForInvoice=Temps consommés
OneLinePerUser=Une ligne par utilisateur
-ServiceToUseOnLines=Service à utiliser sur les lignes
+ServiceToUseOnLines=Service à utiliser sur les lignes par défaut
InvoiceGeneratedFromTimeSpent=La facture %s a été générée à partir du temps passé sur le projet
InterventionGeneratedFromTimeSpent=L'intervention %s a été générée à partir du temps consacré au projet
ProjectBillTimeDescription=Cochez si vous saisissez du temps sur les tâches du projet ET prévoyez de générer des factures à partir des temps pour facturer le client du projet (ne cochez pas si vous comptez créer une facture qui n'est pas basée sur la saisie des temps). Note: Pour générer une facture, aller sur l'onglet 'Temps consommé' du project et sélectionnez les lignes à inclure.
@@ -294,3 +294,4 @@ EnablePublicLeadForm=Activer le formulaire public de contact
NewLeadbyWeb=Votre message ou votre demande a été enregistré. Nous vous répondrons ou vous contacterons bientôt.
NewLeadForm=Nouveau formulaire de contact
LeadFromPublicForm=Lead en ligne à partir d'un formulaire public
+ExportAccountingReportButtonLabel=Obtenir un rapport
diff --git a/htdocs/langs/fr_FR/propal.lang b/htdocs/langs/fr_FR/propal.lang
index 4c44d0691c3..93bfd82a24e 100644
--- a/htdocs/langs/fr_FR/propal.lang
+++ b/htdocs/langs/fr_FR/propal.lang
@@ -47,7 +47,7 @@ SendPropalByMail=Envoyer proposition commerciale par email
DatePropal=Date de proposition
DateEndPropal=Date de fin de validité
ValidityDuration=Durée de validité
-SetAcceptedRefused=Accepter/Refuser
+SetAcceptedRefused=Accepter/Refuser
ErrorPropalNotFound=Propale %s inexistante
AddToDraftProposals=Ajouter à proposition brouillon
NoDraftProposals=Pas de propositions brouillons
diff --git a/htdocs/langs/fr_FR/receiptprinter.lang b/htdocs/langs/fr_FR/receiptprinter.lang
index 6c313e08dd8..6964eb61308 100644
--- a/htdocs/langs/fr_FR/receiptprinter.lang
+++ b/htdocs/langs/fr_FR/receiptprinter.lang
@@ -7,7 +7,7 @@ TestSentToPrinter=Test envoyé à l'imprimante %s
ReceiptPrinter=Imprimantes Tickets
ReceiptPrinterDesc=Réglage des imprimantes de tickets
ReceiptPrinterTemplateDesc=Réglage des modèles
-ReceiptPrinterTypeDesc=Description des types d'imprimantes de tickets
+ReceiptPrinterTypeDesc=Exemple de valeurs possibles pour le champ "Paramètres" selon le type de driver
ReceiptPrinterProfileDesc=Description des imprimantes de tickets
ListPrinters=Liste des imprimantes
SetupReceiptTemplate=Réglage des modèles
@@ -54,7 +54,9 @@ DOL_DOUBLE_WIDTH=Double la taille en largeur
DOL_DEFAULT_HEIGHT_WIDTH=Hauteur et largeur par défaut
DOL_UNDERLINE=Activer le souligné
DOL_UNDERLINE_DISABLED=Désactiver le souligné
-DOL_BEEP=Bruit de fond
+DOL_BEEP=Notification sonore
+DOL_BEEP_ALTERNATIVE=Bip sonore (mode alternatif)
+DOL_PRINT_CURR_DATE=Imprimer la date/l'heure actuelle
DOL_PRINT_TEXT=Imprimer le texte
DateInvoiceWithTime=Date et heure de facturation
YearInvoice=Année de facturation
diff --git a/htdocs/langs/fr_FR/receptions.lang b/htdocs/langs/fr_FR/receptions.lang
index 30ac8e985bc..5411fc7142f 100644
--- a/htdocs/langs/fr_FR/receptions.lang
+++ b/htdocs/langs/fr_FR/receptions.lang
@@ -48,7 +48,6 @@ ReceptionsNumberingModules=Module de numérotation pour les réceptions
ReceptionsReceiptModel=Modèles de document pour les réceptions
NoMorePredefinedProductToDispatch=Plus de produits prédéfinis à expédier
ReceptionExist=Une réception existe
-ByingPrice=Prix d'achat
ReceptionBackToDraftInDolibarr=Réception %s retourné en brouillon
ReceptionClassifyClosedInDolibarr=Reception %s classée Fermée
ReceptionUnClassifyCloseddInDolibarr=Réception %s ré-ouverte
diff --git a/htdocs/langs/fr_FR/recruitment.lang b/htdocs/langs/fr_FR/recruitment.lang
index f2d8df78aa3..1525b06d5b3 100644
--- a/htdocs/langs/fr_FR/recruitment.lang
+++ b/htdocs/langs/fr_FR/recruitment.lang
@@ -57,8 +57,9 @@ EmailRecruiter=Email recruteur
ToUseAGenericEmail=Pour utiliser un e-mail générique. S'il n'est pas défini, l'email du responsable du recrutement sera utilisé
NewCandidature=Nouvelle candidature
ListOfCandidatures=Liste des candidatures
-RequestedRemuneration=Rémunération demandée
-ProposedRemuneration=Rémunération proposée
+Remuneration=Salaire
+RequestedRemuneration=Salaire demandé
+ProposedRemuneration=Salaire proposé
ContractProposed=Contrat proposé
ContractSigned=Contrat signé
ContractRefused=Contrat refusé
@@ -74,3 +75,5 @@ JobClosedTextCanceled=Le poste n'est plus ouvert.
ExtrafieldsJobPosition=Attributs complémentaires (postes)
ExtrafieldsApplication=Attributs complémentaires (candidature)
MakeOffer=Faire un offre
+WeAreRecruiting=Nous recrutons. Voici une liste de postes à pourvoir...
+NoPositionOpen=Aucun poste ouvert pour le moment
diff --git a/htdocs/langs/fr_FR/stocks.lang b/htdocs/langs/fr_FR/stocks.lang
index 2b3559787d3..a0d91884279 100644
--- a/htdocs/langs/fr_FR/stocks.lang
+++ b/htdocs/langs/fr_FR/stocks.lang
@@ -24,6 +24,7 @@ StockAtDateInFuture=Date dans le futur
StocksByLotSerial=Stocks par lot/série
LotSerial=Lots/séries
LotSerialList=Liste des numéros de lots/séries
+SubjectToLotSerialOnly=Produits soumis au lot/série uniquement
Movements=Mouvements
ErrorWarehouseRefRequired=Le nom de référence de l'entrepôt est obligatoire
ListOfWarehouses=Liste des entrepôts
@@ -234,7 +235,7 @@ StockIncrease=Augmentation du stock
StockDecrease=Diminution du stock
InventoryForASpecificWarehouse=Inventaire pour un entrepôt spécifique
InventoryForASpecificProduct=Inventaire pour un produit spécifique
-StockIsRequiredToChooseWhichLotToUse=Un stock existant est requis pour pouvoir choisir un lot
+StockIsRequiredToChooseWhichLotToUse=Un stock existant est nécessaire pour pouvoir choisir le lot à utiliser
ForceTo=Forcer à
AlwaysShowFullArbo=Afficher l'arborescence complète de l'entrepôt sur la popup du lien entrepôt (Avertissement: cela peut réduire considérablement les performances)
StockAtDatePastDesc=Vous pouvez voir ici le stock (stock réel) à une date donnée dans le passé
diff --git a/htdocs/langs/fr_FR/suppliers.lang b/htdocs/langs/fr_FR/suppliers.lang
index 0998191b0a2..f73df3434c9 100644
--- a/htdocs/langs/fr_FR/suppliers.lang
+++ b/htdocs/langs/fr_FR/suppliers.lang
@@ -4,6 +4,7 @@ SuppliersInvoice=Facture fournisseur
SupplierInvoices=Factures fournisseur
ShowSupplierInvoice=Montrer la facture fournisseur
NewSupplier=Nouveau fournisseur
+NewSupplierInvoice = Nouvelle facture du vendeur
History=Historique
ListOfSuppliers=Liste des fournisseurs
ShowSupplier=Afficher fournisseur
diff --git a/htdocs/langs/fr_FR/ticket.lang b/htdocs/langs/fr_FR/ticket.lang
index 3f5be72e1d9..be78d74f2a8 100644
--- a/htdocs/langs/fr_FR/ticket.lang
+++ b/htdocs/langs/fr_FR/ticket.lang
@@ -149,6 +149,8 @@ TicketsAutoNotifyCloseHelp=Lors de la clôture d'un ticket, il vous sera propos
TicketWrongContact=Le contact fourni ne fait pas partie des contacts actuels du ticket. E-mail non envoyé.
TicketChooseProductCategory=Catégorie de produit pour les tickets
TicketChooseProductCategoryHelp=Sélectionnez la catégorie de produit du support de ticket. Celui-ci sera utilisé pour lier automatiquement un contrat à un ticket.
+TicketUseCaptchaCode=Utiliser le code graphique (CAPTCHA) lors de la création d'un ticket
+TicketUseCaptchaCodeHelp=Ajoute la vérification CAPTCHA lors de la création d'un nouveau ticket.
#
# Index & list page
@@ -204,8 +206,8 @@ TicketSeverity=Sévérité
ShowTicket=Voir le ticket
RelatedTickets=Tickets liés
TicketAddIntervention=Créer intervention
-CloseTicket=Fermer|Résoudre ticket
-AbandonTicket=Abandonner le ticket
+CloseTicket=Fermer|Résoudre
+AbandonTicket=Abandonner
CloseATicket=Fermer|Résoudre un ticket
ConfirmCloseAticket=Confirmer la fermeture du ticket
ConfirmAbandonTicket=Confirmez-vous la fermeture du ticket au statut 'Abandonné'
@@ -219,18 +221,17 @@ SendMessageByEmail=Envoyer ce message par email
TicketNewMessage=Nouveau message
ErrorMailRecipientIsEmptyForSendTicketMessage=Le destinataire est vide. Aucun e-mail envoyé
TicketGoIntoContactTab=Rendez-vous dans le tableau "Contacts" pour les sélectionner
-TicketMessageMailIntro=Introduction
+TicketMessageMailIntro=Entête de message
TicketMessageMailIntroHelp=Ce texte est ajouté seulement au début de l'email et ne sera pas sauvegardé.
-TicketMessageMailIntroLabelAdmin=Texte d'introduction à toutes les réponses aux tickets
TicketMessageMailIntroText=Bonjour, Une nouvelle réponse a été ajoutée à un ticket que vous suivez. Voici le message :
TicketMessageMailIntroHelpAdmin=Ce texte sera inséré avant la réponse lors d'une réponse à un ticket depuis Dolibarr
-TicketMessageMailSignature=Signature
-TicketMessageMailSignatureHelp=Ce texte est ajouté seulement à la fin de l'email et ne sera pas sauvegardé.
-TicketMessageMailSignatureText=Message envoyé par %s via Dolibarr
-TicketMessageMailSignatureLabelAdmin=Signature de l'email de réponse
-TicketMessageMailSignatureHelpAdmin=Ce texte sera inséré après le message de réponse.
+TicketMessageMailFooter=Pied de page des messages
+TicketMessageMailFooterHelp=Ce texte est ajouté uniquement à la fin du message envoyé par e-mail et ne sera pas enregistré.
+TicketMessageMailFooterText=Message envoyé par %s via Dolibarr
+TicketMessageMailFooterHelpAdmin=Ce texte sera inséré après le message de réponse.
TicketMessageHelp=Seul ce texte sera sauvegardé dans la liste des messages sur la fiche ticket.
TicketMessageSubstitutionReplacedByGenericValues=Les variables de substitution sont remplacées par des valeurs génériques.
+ForEmailMessageWillBeCompletedWith=Pour les e-mails envoyés à des utilisateurs externes, le message sera complété par
TimeElapsedSince=Temps écoulé depuis
TicketTimeToRead=Temps écoulé avant la lecture
TicketTimeElapsedBeforeSince=Temps écoulé avant / depuis
@@ -296,7 +297,7 @@ TicketNewEmailBodyInfosTrackUrlCustomer=Vous pouvez voir la progression du ticke
TicketCloseEmailBodyInfosTrackUrlCustomer=Vous pouvez consulter l'historique de ce ticket en cliquant sur le lien suivant
TicketEmailPleaseDoNotReplyToThisEmail=Merci de ne pas répondre directement à ce courriel ! Utilisez le lien pour répondre via l'interface.
TicketPublicInfoCreateTicket=Ce formulaire vous permet d'enregistrer un ticket dans notre système de gestion.
-TicketPublicPleaseBeAccuratelyDescribe=Veuillez décrire avec précision le problème. Fournissez le plus d'informations possibles pour nous permettre d'identifier correctement votre demande.
+TicketPublicPleaseBeAccuratelyDescribe=Veuillez décrire précisément votre question. Fournissez le plus d'informations possible pour nous permettre d'identifier correctement votre demande.
TicketPublicMsgViewLogIn=Merci d'entrer le code de suivi du ticket
TicketTrackId=ID de suivi publique
OneOfTicketTrackId=Un de vos ID de suivi
diff --git a/htdocs/langs/fr_FR/users.lang b/htdocs/langs/fr_FR/users.lang
index 5888332a820..4840c05740a 100644
--- a/htdocs/langs/fr_FR/users.lang
+++ b/htdocs/langs/fr_FR/users.lang
@@ -68,7 +68,6 @@ CreateDolibarrLogin=Créer un compte utilisateur
CreateDolibarrThirdParty=Créer un tiers
LoginAccountDisableInDolibarr=Le compte est désactivé sur Dolibarr.
UsePersonalValue=Utiliser valeur personnalisée
-InternalUser=Utilisateur interne
ExportDataset_user_1=Utilisateurs et attributs
DomainUser=Utilisateur du domaine %s
Reactivate=Réactiver
diff --git a/htdocs/langs/fr_FR/website.lang b/htdocs/langs/fr_FR/website.lang
index 53e07d0dd2e..c46c3b33e37 100644
--- a/htdocs/langs/fr_FR/website.lang
+++ b/htdocs/langs/fr_FR/website.lang
@@ -1,5 +1,6 @@
# Dolibarr language file - Source file is en_US - website
Shortname=Code
+WebsiteName=Nom du site web
WebsiteSetupDesc=Créez ici les sites Web que vous souhaitez utiliser. Ensuite, allez dans le menu Sites Web pour les éditer.
DeleteWebsite=Effacer site web
ConfirmDeleteWebsite=Êtes-vous sûr de vouloir supprimer ce site web. Toutes les pages et le contenu seront également supprimés. Les fichiers téléversés (comme ceux dans le répertoire medias, dans le module GED, ...) seront conservés.
@@ -15,9 +16,9 @@ WEBSITE_HTML_HEADER=Ajout en bas de l'en-tête HTML (commun à toutes les pages)
WEBSITE_ROBOT=Fichier robot (robots.txt)
WEBSITE_HTACCESS=Fichier .htaccess du site web
WEBSITE_MANIFEST_JSON=Fichier manifest.json de site Web
-WEBSITE_README=Fichier README.md
WEBSITE_KEYWORDSDesc=Utiliser une virgule pour séparer les valeurs
-EnterHereLicenseInformation=Entrez ici les métadonnées ou les informations de licence pour créer un fichier README.md. Si vous distribuez votre site Web en tant que modèle, le fichier sera inclus dans le package.
+EnterHereReadmeInformation=Entrez ici une description du site Web. Si vous distribuez votre site Web en tant que modèle, le fichier sera inclus dans le package de modèles.
+EnterHereLicenseInformation=Entrez ici la LICENCE du code du site Web. Si vous distribuez votre site Web en tant que modèle, le fichier sera inclus dans le package de modèles.
HtmlHeaderPage=En-tête HTML (spécifique pour la page uniquement)
PageNameAliasHelp=Nom ou alias de la page. Cet alias est également utilisé pour forger une URL SEO lorsque le site Web est exécuté à partir d'un hôte virtuel d'un serveur Web (comme Apache, Nginx, ...). Utilisez le bouton "%s" pour modifier cet alias.
EditTheWebSiteForACommonHeader=Remarque: Si vous souhaitez définir un en-tête personnalisé pour toutes les pages, modifiez l'en-tête au niveau du site plutôt qu'au niveau page/container.
@@ -42,6 +43,8 @@ ViewPageInNewTab=Pré-visualiser la page dans un nouvel onglet
SetAsHomePage=Définir comme page d'accueil
RealURL=URL réelle
ViewWebsiteInProduction=Pré-visualiser le site web en utilisant l'URL de la page d'accueil
+Virtualhost=Hôte virtuel ou nom de domaine
+VirtualhostDesc=Le nom de l'hôte virtuel ou du domaine (par exemple : www.mywebsite.com, mybigcompany.net, ...)
SetHereVirtualHost= Utilisation avec Apache/NGinx/... Créez sur votre serveur Web (Apache, Nginx, ...) un hôte virtuel dédié avec PHP activé et un répertoire racine sur %s
ExampleToUseInApacheVirtualHostConfig=Exemple à utiliser dans la configuration de l'hôte virtuel Apache:
YouCanAlsoTestWithPHPS= Utilisation avec un serveur PHP incorporé Sous environnement de développement, vous pouvez préférer tester le site avec le serveur Web PHP intégré (PHP 5.5 requis) en exécutant php -S 0.0.0.0:8080 -t %s
@@ -145,3 +148,6 @@ ImportFavicon=Favicon
ErrorFaviconType=Le Favicon doit être en png
ErrorFaviconSize=Le Favicon doit être de taille 16x16, 32x32 ou 64x64
FaviconTooltip=Téléverser une image qui doit être au format png (16x16, 32x32 ou 64x64)
+NextContainer=Page/conteneur suivant(e)
+PreviousContainer=Page/conteneur précédent(e)
+WebsiteMustBeDisabled=Le site Web doit avoir le statut "désactivé"
diff --git a/htdocs/langs/fr_FR/withdrawals.lang b/htdocs/langs/fr_FR/withdrawals.lang
index f91ffbd55f3..8b6e6aa317e 100644
--- a/htdocs/langs/fr_FR/withdrawals.lang
+++ b/htdocs/langs/fr_FR/withdrawals.lang
@@ -42,6 +42,7 @@ CreditTransferStatistics=Statistiques sur les virements
Rejects=Rejets
LastWithdrawalReceipt=Les %s derniers bons de prélèvements
MakeWithdrawRequest=Faire une demande de prélèvement
+MakeWithdrawRequestStripe=Faire une demande de paiement par prélèvement automatique via Stripe
MakeBankTransferOrder=Faire une demande de virement
WithdrawRequestsDone=%s demandes de prélèvements enregistrées
BankTransferRequestsDone=%s demandes de prélèvements enregistrées
@@ -100,8 +101,11 @@ CreditDate=Crédité le
WithdrawalFileNotCapable=Impossible de générer le fichier de reçu des prélèvement pour votre pays %s (Votre pays n'est pas supporté)
ShowWithdraw=Afficher ordre de prélèvement
IfInvoiceNeedOnWithdrawPaymentWontBeClosed=Toutefois, si la facture a au moins une demande de prélèvement non traité, elle ne sera pas classée payée afin de permettre le prélèvement d'abord.
-DoStandingOrdersBeforePayments=Cet onglet vous permet de demander un prélèvement. Une fois la demande faite, allez dans le menu Banque->Paiement par prélèvement pour générer l'ordre de prélèvement. Lorsque l'ordre de paiement est clos, le paiement sur les factures seront automatiquement enregistrés, et les factures fermées si le reste à payer est nul.
-DoCreditTransferBeforePayments=Cet onglet vous permet de demander un ordre de virement. Une fois fait, allez dans le menu Banque ->Paiements par virement pour gérer l'ordre de virement. Lorsque le virement est clôturé, le paiement des factures fournisseurs sera automatiquement enregistré et les factures clôturées si le solde à payer est nul.
+DoStandingOrdersBeforePayments=Cet onglet vous permet de demander un ordre de prélèvement automatique. Une fois cela fait, vous pouvez vous rendre dans le menu "Banque->Paiement par prélèvement" pour générer et gérer un fichier d'ordre de prélèvement.
+DoStandingOrdersBeforePayments2=Vous pouvez également envoyer une demande directement à un processeur de paiement SEPA comme Stripe, ...
+DoStandingOrdersBeforePayments3=Lors de la clôture d'un ordre de prélèvement, le règlement des factures sera automatiquement enregistré, et les factures clôturées si le reste à payer est nul.
+DoCreditTransferBeforePayments=Cet onglet vous permet de demander un ordre de virement. Une fois cela fait, allez dans le menu "Banque->Paiement par virement" pour générer et gérer un fichier d'ordre de virement.
+DoCreditTransferBeforePayments3=A la clôture de l'ordre de virement, le règlement des factures sera automatiquement enregistré, et les factures clôturées si le reste à payer est nul.
WithdrawalFile=Fichier de prélèvement
CreditTransferFile=Fichier de virement
SetToStatusSent=Mettre au statut "Fichier envoyé"
@@ -118,7 +122,7 @@ WithdrawRequestErrorNilAmount=Impossible de créer une demande de prélèvement
SepaMandate=Mandat prélèvement SEPA
SepaMandateShort=Mandat SEPA
PleaseReturnMandate=Merci de retourner ce formulaire mandat par email à %s ou par courrier à
-SEPALegalText=En signant ce formulaire de mandat, vous autorisez (A) %s à envoyer des instructions à votre banque pour débiter votre compte et (B) votre banque à débiter votre compte conformément aux instructions de %s. Dans le cadre de vos droits, vous avez droit à un remboursement de votre banque selon les termes et conditions de votre accord avec votre banque. Vos droits concernant le mandat ci-dessus sont expliqués dans une déclaration que vous pouvez obtenir auprès de votre banque.
+SEPALegalText=En signant ce formulaire de mandat, vous autorisez (A) %s et son prestataire de services de paiement à envoyer des instructions à votre banque pour débiter votre compte et (B) votre banque à débiter votre compte conformément aux instructions de %s. Dans le cadre de vos droits, vous avez droit à un remboursement de votre banque selon les termes et conditions de votre accord avec votre banque. Vos droits concernant le mandat ci-dessus sont expliqués dans une déclaration que vous pouvez obtenir auprès de votre banque.
CreditorIdentifier=Identifiant créditeur
CreditorName=Nom du créditeur
SEPAFillForm=(B) Remplir tous les champs marqués *
@@ -137,7 +141,7 @@ SEPAFRST=SEPA FRST
ExecutionDate=Date d'éxecution
CreateForSepa=Créer fichier de prélèvement automatique
ICS=Identifiant du créancier - ICS
-IDS=Debitor Identifier
+IDS=Identifiant débiteur
END_TO_END=Balise XML SEPA "EndToEndId" - Identifiant unique attribué par transaction
USTRD=Balise XML SEPA "Non structurée"
ADDDAYS=Ajouter des jours à la date d'exécution
@@ -156,4 +160,4 @@ ErrorICSmissing=ICS manquant pour le compte bancaire %s
TotalAmountOfdirectDebitOrderDiffersFromSumOfLines=Le montant total de l'ordre de prélèvement diffère de la somme des lignes
WarningSomeDirectDebitOrdersAlreadyExists=Attention : Il y a déjà des ordres de prélèvement automatique en attente (%s) demandés pour un montant de %s
WarningSomeCreditTransferAlreadyExists=Attention : Il y a déjà des virements en attente (%s) demandés pour un montant de %s
-UsedFor=Used for %s
+UsedFor=Utilisé pour %s
diff --git a/htdocs/langs/it_CH/accountancy.lang b/htdocs/langs/it_CH/accountancy.lang
deleted file mode 100644
index 44c4229cd8b..00000000000
--- a/htdocs/langs/it_CH/accountancy.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-# Dolibarr language file - Source file is en_US - accountancy
-ExportAccountingSourceDocHelp=With this tool, you can search and export the source events that are used to generate your accountancy. The exported ZIP file will contain the lists of requested items in CSV, as well as their attached files in their original format (PDF, ODT, DOCX...).
-NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "%s" feature, modification and deletion of the lines will DEFINITELY not be possible)
diff --git a/htdocs/langs/nl_BE/admin.lang b/htdocs/langs/nl_BE/admin.lang
index 29adcec7d4d..96a2c46c4ed 100644
--- a/htdocs/langs/nl_BE/admin.lang
+++ b/htdocs/langs/nl_BE/admin.lang
@@ -192,7 +192,6 @@ LibraryToBuildPDF=Bibliotheek om PDF bestanden te genereren.
RefreshPhoneLink=Herladen link
SetAsDefault=Instellen als standaard
BarcodeInitForProductsOrServices=Mass barcode init of reset voor producten of diensten
-InitEmptyBarCode=Init value for the %s empty barcodes
NoDetails=Geen aanvullende details in voettekst
DisplayCompanyInfo=Bedrijfsadres weergeven
DisplayCompanyManagers=Namen van beheerders weergeven
diff --git a/htdocs/langs/nl_BE/commercial.lang b/htdocs/langs/nl_BE/commercial.lang
index d949aad6bac..fae3f5e6ae7 100644
--- a/htdocs/langs/nl_BE/commercial.lang
+++ b/htdocs/langs/nl_BE/commercial.lang
@@ -11,8 +11,5 @@ ActionAC_COM=Verzend verkooporder per mail
ActionAC_SUP_ORD=Verzend bestelling per mail
ActionAC_SUP_INV=Stuur leveranciersfactuur per mail
ToOfferALinkForOnlineSignature=Link voor online handtekening
-WelcomeOnOnlineSignaturePage=Welkom op deze pagina om commerciële voorstellen van %s te accepteren
-ThisScreenAllowsYouToSignDocFrom=Met dit scherm kunt u een offerte / commercieel voorstel accepteren en ondertekenen of weigeren
-ThisIsInformationOnDocumentToSign=In dit document is informatie om te accepteren of te weigeren
SignatureProposalRef=Handtekening van offerte / commercieel voorstel %s
FeatureOnlineSignDisabled=Functie voor online ondertekenen uitgeschakeld of het document is gegenereerd voordat de functie was ingeschakeld
diff --git a/htdocs/langs/nl_BE/ticket.lang b/htdocs/langs/nl_BE/ticket.lang
index 37e0550685c..30a0241a7d4 100644
--- a/htdocs/langs/nl_BE/ticket.lang
+++ b/htdocs/langs/nl_BE/ticket.lang
@@ -67,7 +67,6 @@ SendMessageByEmail=Stuur bericht per e-mail
ErrorMailRecipientIsEmptyForSendTicketMessage=Ontvanger is leeg. Geen e-mail verzonden
TicketMessageMailIntro=Inleiding
TicketMessageMailIntroHelp=Deze tekst wordt alleen aan het begin van de e-mail toegevoegd en wordt niet opgeslagen.
-TicketMessageMailSignatureLabelAdmin=Handtekening van reactie-e-mail
TicketMessageHelp=Alleen deze tekst wordt opgeslagen in de berichtenlijst van het ticket.
TicketMessageSubstitutionReplacedByGenericValues=Vervangingenvariabelen worden vervangen door generieke waarden.
TimeElapsedSince=tijd verstreken sinds
diff --git a/htdocs/langs/pt_AO/projects.lang b/htdocs/langs/pt_AO/projects.lang
deleted file mode 100644
index f5f817beac1..00000000000
--- a/htdocs/langs/pt_AO/projects.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-# Dolibarr language file - Source file is en_US - projects
-ServiceToUseOnLines=Service to use on lines by default
diff --git a/htdocs/langs/pt_BR/admin.lang b/htdocs/langs/pt_BR/admin.lang
index d2ab3e033a9..80684c463d4 100644
--- a/htdocs/langs/pt_BR/admin.lang
+++ b/htdocs/langs/pt_BR/admin.lang
@@ -47,8 +47,6 @@ ClientSortingCharset=Conferência de Clientes
WarningModuleNotActive=Módulo %s deve ser Ativado!
WarningOnlyPermissionOfActivatedModules=Somente as permissões relacionadas com os módulos ativados que aparecem aqui.
DolibarrSetup=Instalação/Atualização do Dolibarr
-InternalUser=Usuário Interno
-ExternalUser=Usuário Externo
InternalUsers=Usuários Internos
ExternalUsers=Usuários Externos
UploadNewTemplate=Carregar novo(s) tema(s)
@@ -652,7 +650,6 @@ Permission283=Deletar Contatos
Permission286=Exportar Contatos
Permission291=Ler Tarifas
Permission292=Definir Permissões das Tarifas
-Permission300=Ler códigos de barras
Permission301=Criar/modificar códigos de barras
Permission311=Ler Serviços
Permission312=Atribuir Serviço no Contrato
diff --git a/htdocs/langs/pt_BR/commercial.lang b/htdocs/langs/pt_BR/commercial.lang
index a70dde7954c..d7296bed8f8 100644
--- a/htdocs/langs/pt_BR/commercial.lang
+++ b/htdocs/langs/pt_BR/commercial.lang
@@ -54,7 +54,5 @@ Stats=Estatísticas de vendas
StatusProsp=Status de prospecto de cliente
DraftPropals=Minutas de orçamentos
ToOfferALinkForOnlineSignature=Link para assinatura on-line
-WelcomeOnOnlineSignaturePage=Bem-vindo à página para aceitar propostas comerciais de %s
-ThisScreenAllowsYouToSignDocFrom=Esta tela permite que você aceite e assine ou recuse um orçamento / proposta comercial
SignatureProposalRef=Assinatura da cotação / proposta comercial %s
FeatureOnlineSignDisabled=Recurso para assinatura online desabilitado ou documento gerado antes que o recurso fosse ativado
diff --git a/htdocs/langs/pt_BR/errors.lang b/htdocs/langs/pt_BR/errors.lang
index 03f3d75a362..517027dde8c 100644
--- a/htdocs/langs/pt_BR/errors.lang
+++ b/htdocs/langs/pt_BR/errors.lang
@@ -64,7 +64,6 @@ ErrorFieldValueNotIn=Campo %s : '%s' não é um valor encontrado n
ErrorFieldRefNotIn=Campo %s : '%s' não é uma referência existente %s
ErrorsOnXLines=%s erros encontrados
ErrorFileIsInfectedWithAVirus=O antivírus não foi capaz de atestar o arquivo (o arquivo pode estar infectado por um vírus)
-ErrorSpecialCharNotAllowedForField=O campo "%s" não aceita caracteres especiais
ErrorNumRefModel=Uma referência existe no banco de dados (% s) e não é compatível com esta regra de numeração. Remover registro ou referência renomeado para ativar este módulo.
ErrorQtyTooLowForThisSupplier=Quantidade muito baixa para este fornecedor ou nenhum preço definido neste produto para este fornecedor
ErrorOrdersNotCreatedQtyTooLow=Algumas encomendas não foram criadas por causa de quantidades muito baixas
diff --git a/htdocs/langs/pt_BR/mailmanspip.lang b/htdocs/langs/pt_BR/mailmanspip.lang
index bbea232c4ef..9e0a707c3eb 100644
--- a/htdocs/langs/pt_BR/mailmanspip.lang
+++ b/htdocs/langs/pt_BR/mailmanspip.lang
@@ -7,7 +7,6 @@ MailmanCreationSuccess=O teste da assinatura foi realizado com sucesso
MailmanDeletionSuccess=O teste de cancelamento da assinatura foi realizado com sucesso
SynchroMailManEnabled=O Mailman sera atualizado
SynchroSpipEnabled=O SPIP sera atualizado
-DescADHERENT_MAILMAN_ADMINPW=Senha do administrador Mailman
DescADHERENT_MAILMAN_URL=URL para inscriçoes Mailman
DescADHERENT_MAILMAN_UNSUB_URL=URL para desenscriçoes Mailman
DescADHERENT_MAILMAN_LISTS=Lista(s) para inscriçao automatica de novos membros (separado por virgula)
diff --git a/htdocs/langs/pt_BR/ticket.lang b/htdocs/langs/pt_BR/ticket.lang
index 2a751f5516a..df070b1eced 100644
--- a/htdocs/langs/pt_BR/ticket.lang
+++ b/htdocs/langs/pt_BR/ticket.lang
@@ -97,8 +97,6 @@ TicketUpdated=Bilhete atualizado
SendMessageByEmail=Enviar mensagem por e-mail
ErrorMailRecipientIsEmptyForSendTicketMessage=O destinatário está vazio. Nenhum e-mail enviado
TicketMessageMailIntroHelp=Este texto é adicionado apenas no início do e-mail e não será salvo.
-TicketMessageMailSignatureHelp=Este texto é adicionado somente no final do e-mail e não será salvo.
-TicketMessageMailSignatureLabelAdmin=Assinatura do e-mail de resposta
TicketTimeElapsedBeforeSince=Tempo decorrido antes / desde
TicketContacts=Bilhete de contatos
TicketDocumentsLinked=Documentos vinculados ao ticket
diff --git a/htdocs/langs/pt_BR/website.lang b/htdocs/langs/pt_BR/website.lang
index a5781ea5a75..e2afc369eb2 100644
--- a/htdocs/langs/pt_BR/website.lang
+++ b/htdocs/langs/pt_BR/website.lang
@@ -9,7 +9,6 @@ WEBSITE_CSS_URL=URL do arquivo CSS externo.
WEBSITE_HTML_HEADER=Adição na parte inferior do cabeçalho HTML (comum a todas as páginas)
WEBSITE_ROBOT=Arquivo robô (robots.txt)
WEBSITE_MANIFEST_JSON=Arquivo manifest.json do site
-WEBSITE_README=Arquivo README.md
EnterHereLicenseInformation=Digite aqui metadados ou informações de licença para arquivar num arquivo README.md. Se você distribuir seu site como modelo, o arquivo será incluído no pacote tentado.
HtmlHeaderPage=Cabeçalho HTML (específico apenas para esta página)
PageNameAliasHelp=Nome ou alias da página. Esse alias também é usado para forjar uma URL de SEO quando o site é executado a partir de um host virtual de um servidor da Web (como Apacke, Nginx, ...). Use o botão %s para editar este alias.
diff --git a/htdocs/langs/pt_MZ/accountancy.lang b/htdocs/langs/pt_MZ/accountancy.lang
index 90584e4bd28..b99e895d7c0 100644
--- a/htdocs/langs/pt_MZ/accountancy.lang
+++ b/htdocs/langs/pt_MZ/accountancy.lang
@@ -27,7 +27,6 @@ ConfirmDeleteCptCategory=Tem certeza de que deseja remover essa conta contábil
JournalizationInLedgerStatus=Situação do registro do diário
GroupIsEmptyCheckSetup=O grupo está vazio, verifique a configuração do grupo de contabilidade personalizado
AccountantFiles=Exportar documentos de origem
-ExportAccountingSourceDocHelp=With this tool, you can search and export the source events that are used to generate your accountancy. The exported ZIP file will contain the lists of requested items in CSV, as well as their attached files in their original format (PDF, ODT, DOCX...).
VueByAccountAccounting=Ver por conta contábil
MainAccountForCustomersNotDefined=Conta contábil principal para clientes não definidos na configuração
MainAccountForUsersNotDefined=Conta contábil principal para usuários não definidos na configuração
@@ -185,7 +184,6 @@ AccountingJournalType9=Novo
ErrorAccountingJournalIsAlreadyUse=Esta Livro de Registro já está sendo usado
NumberOfAccountancyEntries=Número de entradas
NumberOfAccountancyMovements=Número de movimentos
-NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "%s" feature, modification and deletion of the lines will DEFINITELY not be possible)
ExportDraftJournal=Livro de Registro de rascunho de exportação
Selectmodelcsv=Escolha um modelo de exportação
Modelcsv_CEGID=Exportar para CEGID Expert Comptable
diff --git a/htdocs/langs/pt_MZ/admin.lang b/htdocs/langs/pt_MZ/admin.lang
index e805a0c6120..f499ad97ebf 100644
--- a/htdocs/langs/pt_MZ/admin.lang
+++ b/htdocs/langs/pt_MZ/admin.lang
@@ -47,8 +47,6 @@ ClientSortingCharset=Conferência de Clientes
WarningModuleNotActive=Módulo %s deve ser Ativado!
WarningOnlyPermissionOfActivatedModules=Somente as permissões relacionadas com os módulos ativados que aparecem aqui.
DolibarrSetup=Instalação/Atualização do Dolibarr
-InternalUser=Usuário Interno
-ExternalUser=Usuário Externo
InternalUsers=Usuários Internos
ExternalUsers=Usuários Externos
SetupArea=Conf.
@@ -647,7 +645,6 @@ Permission283=Deletar Contatos
Permission286=Exportar Contatos
Permission291=Ler Tarifas
Permission292=Definir Permissões das Tarifas
-Permission300=Ler códigos de barras
Permission301=Criar/modificar códigos de barras
Permission311=Ler Serviços
Permission312=Atribuir Serviço no Contrato
diff --git a/htdocs/langs/pt_MZ/commercial.lang b/htdocs/langs/pt_MZ/commercial.lang
index 493791da89d..4e15f6d6895 100644
--- a/htdocs/langs/pt_MZ/commercial.lang
+++ b/htdocs/langs/pt_MZ/commercial.lang
@@ -56,7 +56,5 @@ Stats=Estatísticas de vendas
StatusProsp=Status de prospecto de cliente
DraftPropals=Minutas de orçamentos
ToOfferALinkForOnlineSignature=Link para assinatura on-line
-WelcomeOnOnlineSignaturePage=Bem-vindo à página para aceitar propostas comerciais de %s
-ThisScreenAllowsYouToSignDocFrom=Esta tela permite que você aceite e assine ou recuse um orçamento / proposta comercial
SignatureProposalRef=Assinatura da cotação / proposta comercial %s
FeatureOnlineSignDisabled=Recurso para assinatura online desabilitado ou documento gerado antes que o recurso fosse ativado
diff --git a/htdocs/langs/pt_MZ/errors.lang b/htdocs/langs/pt_MZ/errors.lang
index 03f3d75a362..517027dde8c 100644
--- a/htdocs/langs/pt_MZ/errors.lang
+++ b/htdocs/langs/pt_MZ/errors.lang
@@ -64,7 +64,6 @@ ErrorFieldValueNotIn=Campo %s : '%s' não é um valor encontrado n
ErrorFieldRefNotIn=Campo %s : '%s' não é uma referência existente %s
ErrorsOnXLines=%s erros encontrados
ErrorFileIsInfectedWithAVirus=O antivírus não foi capaz de atestar o arquivo (o arquivo pode estar infectado por um vírus)
-ErrorSpecialCharNotAllowedForField=O campo "%s" não aceita caracteres especiais
ErrorNumRefModel=Uma referência existe no banco de dados (% s) e não é compatível com esta regra de numeração. Remover registro ou referência renomeado para ativar este módulo.
ErrorQtyTooLowForThisSupplier=Quantidade muito baixa para este fornecedor ou nenhum preço definido neste produto para este fornecedor
ErrorOrdersNotCreatedQtyTooLow=Algumas encomendas não foram criadas por causa de quantidades muito baixas
diff --git a/htdocs/langs/pt_MZ/mailmanspip.lang b/htdocs/langs/pt_MZ/mailmanspip.lang
index bbea232c4ef..9e0a707c3eb 100644
--- a/htdocs/langs/pt_MZ/mailmanspip.lang
+++ b/htdocs/langs/pt_MZ/mailmanspip.lang
@@ -7,7 +7,6 @@ MailmanCreationSuccess=O teste da assinatura foi realizado com sucesso
MailmanDeletionSuccess=O teste de cancelamento da assinatura foi realizado com sucesso
SynchroMailManEnabled=O Mailman sera atualizado
SynchroSpipEnabled=O SPIP sera atualizado
-DescADHERENT_MAILMAN_ADMINPW=Senha do administrador Mailman
DescADHERENT_MAILMAN_URL=URL para inscriçoes Mailman
DescADHERENT_MAILMAN_UNSUB_URL=URL para desenscriçoes Mailman
DescADHERENT_MAILMAN_LISTS=Lista(s) para inscriçao automatica de novos membros (separado por virgula)
diff --git a/htdocs/langs/pt_MZ/projects.lang b/htdocs/langs/pt_MZ/projects.lang
index 8d0c1cedae8..065ddf804d6 100644
--- a/htdocs/langs/pt_MZ/projects.lang
+++ b/htdocs/langs/pt_MZ/projects.lang
@@ -6,6 +6,5 @@ LinkToElementShort=Link para
ProjectReferers=Itens correlatos
OppStatusPROPO=Proposta
OppStatusPENDING=Pedente
-ServiceToUseOnLines=Service to use on lines by default
NewInter=Nova Intervenção
StartDateCannotBeAfterEndDate=A data final não pode ser anterior a data de início
diff --git a/htdocs/langs/pt_MZ/website.lang b/htdocs/langs/pt_MZ/website.lang
index a5781ea5a75..e2afc369eb2 100644
--- a/htdocs/langs/pt_MZ/website.lang
+++ b/htdocs/langs/pt_MZ/website.lang
@@ -9,7 +9,6 @@ WEBSITE_CSS_URL=URL do arquivo CSS externo.
WEBSITE_HTML_HEADER=Adição na parte inferior do cabeçalho HTML (comum a todas as páginas)
WEBSITE_ROBOT=Arquivo robô (robots.txt)
WEBSITE_MANIFEST_JSON=Arquivo manifest.json do site
-WEBSITE_README=Arquivo README.md
EnterHereLicenseInformation=Digite aqui metadados ou informações de licença para arquivar num arquivo README.md. Se você distribuir seu site como modelo, o arquivo será incluído no pacote tentado.
HtmlHeaderPage=Cabeçalho HTML (específico apenas para esta página)
PageNameAliasHelp=Nome ou alias da página. Esse alias também é usado para forjar uma URL de SEO quando o site é executado a partir de um host virtual de um servidor da Web (como Apacke, Nginx, ...). Use o botão %s para editar este alias.
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index eebf96a6040..b11ed9a6158 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -518,7 +518,7 @@ if ((!defined('NOCSRFCHECK') && empty($dolibarr_nocsrfcheck) && getDolGlobalInt(
$sensitiveget = false;
if ((GETPOSTISSET('massaction') || GETPOST('action', 'aZ09')) && getDolGlobalInt('MAIN_SECURITY_CSRF_WITH_TOKEN') >= 3) {
// All GET actions and mass actions are processed as sensitive.
- if (GETPOSTISSET('massaction') || !in_array(GETPOST('action', 'aZ09'), array('create', 'createsite', 'edit', 'editvalidator', 'file_manager', 'presend', 'presend_addmessage', 'preview', 'specimen'))) { // We exclude the case action='create' and action='file_manager' that are legitimate
+ if (GETPOSTISSET('massaction') || !in_array(GETPOST('action', 'aZ09'), array('create', 'createsite', 'createcard', 'edit', 'editvalidator', 'file_manager', 'presend', 'presend_addmessage', 'preview', 'specimen'))) { // We exclude the case action='create' and action='file_manager' that are legitimate
$sensitiveget = true;
}
} elseif (getDolGlobalInt('MAIN_SECURITY_CSRF_WITH_TOKEN') >= 2) {
diff --git a/htdocs/modulebuilder/admin/setup.php b/htdocs/modulebuilder/admin/setup.php
index 50c86e38cc0..4c7e597e889 100644
--- a/htdocs/modulebuilder/admin/setup.php
+++ b/htdocs/modulebuilder/admin/setup.php
@@ -132,21 +132,23 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2) {
}
}
print '';
+}
- print '
';
}
print '';
@@ -4381,7 +4396,7 @@ if ($module == 'initmodule') {
print '';
print '';
print ' ('.$langs->trans("GeneratedOn").' '.dol_print_date(dol_filemtime($outputfiledoc), 'dayhour').')';
- print ' '.img_picto($langs->trans("Delete"), 'delete').'';
+ print ' '.img_picto($langs->trans("Delete"), 'delete').'';
}
print ' ';
@@ -4396,7 +4411,7 @@ if ($module == 'initmodule') {
print '';
print '';
print ' ('.$langs->trans("GeneratedOn").' '.dol_print_date(dol_filemtime($outputfiledocpdf), 'dayhour').')';
- print ' '.img_picto($langs->trans("Delete"), 'delete').'';
+ print ' '.img_picto($langs->trans("Delete"), 'delete').'';
}
print ' ';
@@ -4451,7 +4466,7 @@ if ($module == 'initmodule') {
$arrayversion = explode('.', $moduleobj->version, 3);
if (count($arrayversion)) {
- $FILENAMEZIP = "module_".$modulelowercase.'-'.$arrayversion[0].(empty($arrayversion[1]) ? '.0' : '.'.$arrayversion[1]).($arrayversion[2] ? ".".$arrayversion[2] : '').".zip";
+ $FILENAMEZIP = "module_".$modulelowercase.'-'.$arrayversion[0].(empty($arrayversion[1]) ? '.0' : '.'.$arrayversion[1]).(empty($arrayversion[2]) ? '' : ".".$arrayversion[2]).".zip";
$outputfilezip = dol_buildpath($modulelowercase, 0).'/bin/'.$FILENAMEZIP;
}
@@ -4464,7 +4479,7 @@ if ($module == 'initmodule') {
$relativepath = $modulelowercase.'/bin/'.$FILENAMEZIP;
print ''.$outputfilezip.'';
print ' ('.$langs->trans("GeneratedOn").' '.dol_print_date(dol_filemtime($outputfilezip), 'dayhour').')';
- print ' '.img_picto($langs->trans("Delete"), 'delete').'';
+ print ' '.img_picto($langs->trans("Delete"), 'delete').'';
}
print '';
@@ -4495,7 +4510,7 @@ if ($module == 'initmodule') {
print ' ';
print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.'';
- print ' '.img_picto($langs->trans("Edit"), 'edit').'';
+ print ' '.img_picto($langs->trans("Edit"), 'edit').'';
print ' ';
print ' ';
diff --git a/htdocs/modulebuilder/template/core/modules/modMyModule.class.php b/htdocs/modulebuilder/template/core/modules/modMyModule.class.php
index 212f02aa4b3..99cd900b512 100644
--- a/htdocs/modulebuilder/template/core/modules/modMyModule.class.php
+++ b/htdocs/modulebuilder/template/core/modules/modMyModule.class.php
@@ -188,7 +188,7 @@ class modMyModule extends DolibarrModules
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
- // 'order' to add a tab in customer order view
+ // 'order' to add a tab in sale order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php
index 61186a3b4f3..cce647de224 100644
--- a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php
+++ b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php
@@ -30,7 +30,7 @@ dol_include_once('/mymodule/core/modules/mymodule/modules_myobject.php');
/**
- * Class to manage customer Bom numbering rules advanced
+ * Class to manage the Advanced numbering rule for MyObject
*/
class mod_myobject_advanced extends ModeleNumRefMyObject
{
diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php
index 75068cf8d57..f21ffe880d0 100644
--- a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php
+++ b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php
@@ -26,7 +26,7 @@ dol_include_once('/mymodule/core/modules/mymodule/modules_myobject.php');
/**
- * Class to manage customer order numbering rules standard
+ * Class to manage the Standard numbering rule for MyObject
*/
class mod_myobject_standard extends ModeleNumRefMyObject
{
diff --git a/htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php b/htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php
index 2c76818ab84..8f7764ad100 100644
--- a/htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php
+++ b/htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php
@@ -155,7 +155,7 @@ class InterfaceMyModuleTriggers extends DolibarrTriggers
//case 'MYECMDIR_MODIFY':
//case 'MYECMDIR_DELETE':
- // Customer orders
+ // Sales orders
//case 'ORDER_CREATE':
//case 'ORDER_MODIFY':
//case 'ORDER_VALIDATE':
diff --git a/htdocs/partnership/core/modules/partnership/mod_partnership_advanced.php b/htdocs/partnership/core/modules/partnership/mod_partnership_advanced.php
index d717bdc49bf..676de032659 100644
--- a/htdocs/partnership/core/modules/partnership/mod_partnership_advanced.php
+++ b/htdocs/partnership/core/modules/partnership/mod_partnership_advanced.php
@@ -30,7 +30,7 @@ dol_include_once('/partnership/core/modules/partnership/modules_partnership.php'
/**
- * Class to manage customer Bom numbering rules advanced
+ * Class to manage the Advanced numbering rule for Partnership
*/
class mod_partnership_advanced extends ModeleNumRefPartnership
{
diff --git a/htdocs/partnership/core/modules/partnership/mod_partnership_standard.php b/htdocs/partnership/core/modules/partnership/mod_partnership_standard.php
index d5a2bb326b2..5de4b07f215 100644
--- a/htdocs/partnership/core/modules/partnership/mod_partnership_standard.php
+++ b/htdocs/partnership/core/modules/partnership/mod_partnership_standard.php
@@ -26,7 +26,7 @@ dol_include_once('/partnership/core/modules/partnership/modules_partnership.php'
/**
- * Class to manage customer order numbering rules standard
+ * Class to manage the Standard numbering rule for Partnership
*/
class mod_partnership_standard extends ModeleNumRefPartnership
{
diff --git a/htdocs/partnership/partnership_list.php b/htdocs/partnership/partnership_list.php
index 49b50a037e9..838969e745e 100644
--- a/htdocs/partnership/partnership_list.php
+++ b/htdocs/partnership/partnership_list.php
@@ -359,13 +359,16 @@ foreach ($search as $key => $val) {
}
if ($managedfor == 'member') {
if ($search_filter == 'withoutsubscription') {
- $sql .= " AND (d.datefin IS NULL OR dty.subscription = 0)";
+ $sql .= " AND (d.datefin IS NULL)";
+ }
+ if ($search_filter == 'waitingsubscription') {
+ $sql .= " AND (d.datefin IS NULL AND t.subscription = '1')";
}
if ($search_filter == 'uptodate') {
- $sql .= " AND (d.datefin >= '".$db->idate($now)."' OR dty.subscription = 0)";
+ $sql .= " AND (d.datefin >= '".$db->idate($now)."' OR dty.subscription = '0')";
}
if ($search_filter == 'outofdate') {
- $sql .= " AND (d.datefin < '".$db->idate($now)."' AND dty.subscription = 1)";
+ $sql .= " AND (d.datefin < '".$db->idate($now)."' AND dty.subscription = '1')";
}
}
if ($search_all) {
diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php
index c7503bb957f..faaf7e346fa 100644
--- a/htdocs/product/stock/product.php
+++ b/htdocs/product/stock/product.php
@@ -761,7 +761,7 @@ if ($id > 0 || $ref) {
$found = 0;
$helpondiff = ''.$langs->trans("StockDiffPhysicTeoric").': ';
- // Number of customer orders running
+ // Number of sales orders running
if (isModEnabled('commande')) {
if ($found) {
$helpondiff .= ' ';
@@ -776,7 +776,7 @@ if ($id > 0 || $ref) {
$helpondiff .= ' ('.$langs->trans("ProductQtyInDraft").': '.$object->stats_commande['qty'].')';
}
- // Number of product from customer order already sent (partial shipping)
+ // Number of product from sales order already sent (partial shipping)
if (isModEnabled("expedition")) {
require_once DOL_DOCUMENT_ROOT.'/expedition/class/expedition.class.php';
$filterShipmentStatus = '';
diff --git a/htdocs/projet/graph_opportunities.inc.php b/htdocs/projet/graph_opportunities.inc.php
index ae0542d8b4b..8c6fc512509 100644
--- a/htdocs/projet/graph_opportunities.inc.php
+++ b/htdocs/projet/graph_opportunities.inc.php
@@ -43,7 +43,7 @@ if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES)) {
$valsnb = array();
$valsamount = array();
$dataseries = array();
- // -1=Canceled, 0=Draft, 1=Validated, (2=Accepted/On process not managed for customer orders), 3=Closed (Sent/Received, billed or not)
+ // -1=Canceled, 0=Draft, 1=Validated, (2=Accepted/On process not managed for sale orders), 3=Closed (Sent/Received, billed or not)
while ($i < $num) {
$obj = $db->fetch_object($resql);
if ($obj) {
diff --git a/htdocs/public/payment/newpayment.php b/htdocs/public/payment/newpayment.php
index d3b08e9672b..2e830a8241b 100644
--- a/htdocs/public/payment/newpayment.php
+++ b/htdocs/public/payment/newpayment.php
@@ -1005,7 +1005,7 @@ if (!$source) {
}
-// Payment on customer order
+// Payment on sales order
if ($source == 'order') {
$found = true;
$langs->load("orders");
diff --git a/htdocs/recruitment/core/modules/recruitment/mod_recruitmentcandidature_advanced.php b/htdocs/recruitment/core/modules/recruitment/mod_recruitmentcandidature_advanced.php
index 8772e97bf77..9635eba3e58 100644
--- a/htdocs/recruitment/core/modules/recruitment/mod_recruitmentcandidature_advanced.php
+++ b/htdocs/recruitment/core/modules/recruitment/mod_recruitmentcandidature_advanced.php
@@ -30,7 +30,7 @@ dol_include_once('/recruitment/core/modules/recruitment/modules_recruitmentcandi
/**
- * Class to manage customer Bom numbering rules advanced
+ * Class to manage the Advanced numbering rule for Job application
*/
class mod_recruitmentcandidature_advanced extends ModeleNumRefRecruitmentCandidature
{
diff --git a/htdocs/recruitment/core/modules/recruitment/mod_recruitmentcandidature_standard.php b/htdocs/recruitment/core/modules/recruitment/mod_recruitmentcandidature_standard.php
index ce96d1cd67b..4221915eb29 100644
--- a/htdocs/recruitment/core/modules/recruitment/mod_recruitmentcandidature_standard.php
+++ b/htdocs/recruitment/core/modules/recruitment/mod_recruitmentcandidature_standard.php
@@ -26,7 +26,7 @@ dol_include_once('/recruitment/core/modules/recruitment/modules_recruitmentcandi
/**
- * Class to manage customer order numbering rules standard
+ * Class to manage the Standard numbering rule for Job application
*/
class mod_recruitmentcandidature_standard extends ModeleNumRefRecruitmentCandidature
{
diff --git a/htdocs/recruitment/core/modules/recruitment/mod_recruitmentjobposition_advanced.php b/htdocs/recruitment/core/modules/recruitment/mod_recruitmentjobposition_advanced.php
index c280153f9c8..4f781a18214 100644
--- a/htdocs/recruitment/core/modules/recruitment/mod_recruitmentjobposition_advanced.php
+++ b/htdocs/recruitment/core/modules/recruitment/mod_recruitmentjobposition_advanced.php
@@ -30,7 +30,7 @@ dol_include_once('/recruitment/core/modules/recruitment/modules_recruitmentjobpo
/**
- * Class to manage customer Bom numbering rules advanced
+ * Class to manage the Advanced numbering rule for Job position
*/
class mod_recruitmentjobposition_advanced extends ModeleNumRefRecruitmentJobPosition
{
diff --git a/htdocs/recruitment/core/modules/recruitment/mod_recruitmentjobposition_standard.php b/htdocs/recruitment/core/modules/recruitment/mod_recruitmentjobposition_standard.php
index b2b413ee508..260ee510c5b 100644
--- a/htdocs/recruitment/core/modules/recruitment/mod_recruitmentjobposition_standard.php
+++ b/htdocs/recruitment/core/modules/recruitment/mod_recruitmentjobposition_standard.php
@@ -26,7 +26,7 @@ dol_include_once('/recruitment/core/modules/recruitment/modules_recruitmentjobpo
/**
- * Class to manage customer order numbering rules standard
+ * Class to manage the Standard numbering rule for Job positions
*/
class mod_recruitmentjobposition_standard extends ModeleNumRefRecruitmentJobPosition
{
diff --git a/htdocs/societe/paymentmodes.php b/htdocs/societe/paymentmodes.php
index 2ba271cd936..a7a7cd44972 100644
--- a/htdocs/societe/paymentmodes.php
+++ b/htdocs/societe/paymentmodes.php
@@ -1591,16 +1591,16 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard'
if ($permissiontoaddupdatepaymentinformation) {
if (empty($rib->stripe_card_ref)) {
// Add link to create BAN on Stripe
- print 'id.'&id='.$rib->id.'&action=syncsepatostripe">';
+ print 'id.'&id='.$rib->id.'&action=syncsepatostripe&token='.newToken().'">';
print img_picto($langs->trans("CreateBANOnStripe"), 'stripe');
print '';
}
- print 'id.'&id='.$rib->id.'&action=edit">';
+ print 'id.'&id='.$rib->id.'&action=edit">';
print img_picto($langs->trans("Modify"), 'edit');
print '';
- print 'id.'&id='.$rib->id.'&action=delete&token='.newToken().'">';
+ print 'id.'&id='.$rib->id.'&action=delete&token='.newToken().'">';
print img_picto($langs->trans("Delete"), 'delete');
print '';
}
diff --git a/htdocs/stripe/class/stripe.class.php b/htdocs/stripe/class/stripe.class.php
index cc8178d2a01..25a4edb6123 100644
--- a/htdocs/stripe/class/stripe.class.php
+++ b/htdocs/stripe/class/stripe.class.php
@@ -908,7 +908,7 @@ class Stripe extends CommonObject
$sql = "SELECT sa.stripe_card_ref, sa.proprio, sa.iban_prefix"; // stripe_card_ref is src_ for sepa
$sql .= " FROM ".MAIN_DB_PREFIX."societe_rib as sa";
- $sql .= " WHERE sa.rowid = '".$this->db->escape($object->id)."'"; // We get record from ID, no need for filter on entity
+ $sql .= " WHERE sa.rowid = ".((int) $object->id); // We get record from ID, no need for filter on entity
$sql .= " AND sa.type = 'ban'"; //type ban to get normal bank account of customer (prelevement)
$soc = new Societe($this->db);
diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php
index 76c4784b013..37853d1488a 100644
--- a/htdocs/supplier_proposal/card.php
+++ b/htdocs/supplier_proposal/card.php
@@ -1613,7 +1613,7 @@ if ($action == 'create') {
print '
';
// Relative and absolute discounts
- if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
+ if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
$filterabsolutediscount = "fk_invoice_supplier_source IS NULL"; // If we want deposit to be substracted to payments only and not to total of final invoice
$filtercreditnote = "fk_invoice_supplier_source IS NOT NULL"; // If we want deposit to be substracted to payments only and not to total of final invoice
} else {
diff --git a/htdocs/supplier_proposal/index.php b/htdocs/supplier_proposal/index.php
index a77c4eac47d..40cca19a8b1 100644
--- a/htdocs/supplier_proposal/index.php
+++ b/htdocs/supplier_proposal/index.php
@@ -90,7 +90,7 @@ if ($resql) {
$dataseries = array();
$colorseries = array();
$vals = array();
- // -1=Canceled, 0=Draft, 1=Validated, (2=Accepted/On process not managed for customer orders), 3=Closed (Sent/Received, billed or not)
+ // -1=Canceled, 0=Draft, 1=Validated, (2=Accepted/On process not managed for sales orders), 3=Closed (Sent/Received, billed or not)
while ($i < $num) {
$row = $db->fetch_row($resql);
if ($row) {
diff --git a/htdocs/takepos/admin/terminal.php b/htdocs/takepos/admin/terminal.php
index 9cd1a5fd5f0..c511d3e0529 100644
--- a/htdocs/takepos/admin/terminal.php
+++ b/htdocs/takepos/admin/terminal.php
@@ -414,7 +414,7 @@ $htmltext .= '';
print ' ';
print load_fiche_titre($langs->trans('FreeLegalTextOnInvoices'), '', '');
-print '
';
+print '
';
print '
';
print '
';
print '
'.$langs->trans("Parameters").'
'.$langs->trans('Value').'
';
diff --git a/htdocs/takepos/index.php b/htdocs/takepos/index.php
index c43d0ec092f..faa843aec9a 100644
--- a/htdocs/takepos/index.php
+++ b/htdocs/takepos/index.php
@@ -587,7 +587,9 @@ function New() {
* return {void}
*/
function Search2(keyCodeForEnter, moreorless) {
- console.log("Search2 Call ajax search to replace products keyCodeForEnter="+keyCodeForEnter);
+ var eventKeyCode = window.event.keyCode;
+
+ console.log("Search2 Call ajax search to replace products keyCodeForEnter="+keyCodeForEnter+", eventKeyCode="+eventKeyCode);
var search_term = $('#search').val();
var search_start = 0;
@@ -610,20 +612,19 @@ function Search2(keyCodeForEnter, moreorless) {
}
var search = false;
- var eventKeyCode = window.event.keyCode;
- if (keyCodeForEnter == '' || eventKeyCode == keyCodeForEnter) {
+ if (keyCodeForEnter != '' || eventKeyCode == keyCodeForEnter) {
search = true;
}
if (search === true) {
-
- // temporization time to give time to type
+ // if a timer has been already started (search2_timer is a global js variable), we cancel it now
+ // we click onto another key, we will restart another timer just after
if (search2_timer) {
clearTimeout(search2_timer);
}
+ // temporization time to give time to type
search2_timer = setTimeout(function(){
-
pageproducts = 0;
jQuery(".wrapper2 .catwatermark").hide();
var nbsearchresults = 0;
@@ -695,8 +696,8 @@ function Search2(keyCodeForEnter, moreorless) {
if (data.length == 0) {
$('#search').val('load('errors');
- echo dol_escape_js($langs->trans("ErrorRecordNotFound"));
- ?>');
+ echo dol_escape_js($langs->transnoentitiesnoconv("ErrorRecordNotFoundShort"));
+ ?> ('+search_term+')');
$('#search').select();
}
else ClearSearch();
diff --git a/htdocs/user/list.php b/htdocs/user/list.php
index 72b00c75577..05d2f88c035 100644
--- a/htdocs/user/list.php
+++ b/htdocs/user/list.php
@@ -604,9 +604,12 @@ if ($permissiontoadd) {
if (isModEnabled('category') && $permissiontoadd) {
$arrayofmassactions['preaffecttag'] = img_picto('', 'category', 'class="pictofixedwidth"').$langs->trans("AffectTag");
}
+if ($permissiontoadd) {
+ $arrayofmassactions['presetsupervisor'] = img_picto('', 'user', 'class="pictofixedwidth"').$langs->trans("SetSupervisor");
+}
//if ($permissiontodelete) $arrayofmassactions['predelete'] = img_picto('', 'delete', 'class="pictofixedwidth"').$langs->trans("Delete");
-if (GETPOST('nomassaction', 'int') || in_array($massaction, array('presend', 'predelete', 'preaffecttag'))) {
+if (GETPOST('nomassaction', 'int') || in_array($massaction, array('presend', 'predelete', 'preaffecttag', 'presetsupervisor'))) {
$arrayofmassactions = array();
}
$massactionbutton = $form->selectMassAction('', $arrayofmassactions);