sale_usability+sale_stock_usability: update FR translation

sale_usability: remove wizard discount on all lines, which is mostly native
This commit is contained in:
Alexis de Lattre
2024-07-04 18:13:41 +02:00
parent a7fd6a1361
commit 8d584871d6
7 changed files with 80 additions and 393 deletions

View File

@@ -4,42 +4,38 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Odoo Server 14.0\n" "Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-12-03 21:31+0000\n" "POT-Creation-Date: 2024-07-04 16:09+0000\n"
"PO-Revision-Date: 2020-12-03 21:31+0000\n" "PO-Revision-Date: 2024-07-04 16:09+0000\n"
"Last-Translator: \n" "Last-Translator: Alexis de Lattre <alexis.delattre@akretion.com>\n"
"Language-Team: \n" "Language-Team: \n"
"Language: fr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n" "Content-Transfer-Encoding: \n"
"Plural-Forms: \n" "Plural-Forms: \n"
#. module: sale_stock_usability #. module: sale_stock_usability
#: model:ir.model.fields.selection,name:sale_stock_usability.selection__sale_order__picking_status__cancel #: model:ir.model.fields,help:sale_stock_usability.field_sale_order__picking_policy
msgid "Delivery Cancelled" msgid ""
msgstr "Livraison annulée" "If you deliver all products at once, the delivery order will be scheduled "
"based on the greatest product lead time. Otherwise, it will be based on the "
#. module: sale_stock_usability "shortest."
#: model:ir.model.fields,field_description:sale_stock_usability.field_sale_order__display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: sale_stock_usability
#: model:ir.model.fields.selection,name:sale_stock_usability.selection__sale_order__picking_status__delivered
#: model_terms:ir.ui.view,arch_db:sale_stock_usability.view_sales_order_filter
msgid "Fully Delivered"
msgstr "Entierement Livré "
#. module: sale_stock_usability
#: model:ir.model.fields,field_description:sale_stock_usability.field_sale_order__id
msgid "ID"
msgstr "" msgstr ""
"Si vous livrez tous les produits en même temps, le bon de livraison sera "
"planifié sur base du produit avec le délai le plus long. Autrement, il le sera"
" sur le plus court."
#. module: sale_stock_usability #. module: sale_stock_usability
#: model:ir.model.fields,field_description:sale_stock_usability.field_sale_order__incoterm #: model:ir.model.fields,field_description:sale_stock_usability.field_sale_order__incoterm
msgid "Incoterm" msgid "Incoterm"
msgstr "" msgstr "Incoterm"
#. module: sale_stock_usability
#: model:ir.model.fields,field_description:sale_stock_usability.field_sale_order__incoterm_location
msgid "Incoterm Location"
msgstr "Lieu associé à l'incoterm"
#. module: sale_stock_usability #. module: sale_stock_usability
#: model:ir.model.fields,help:sale_stock_usability.field_sale_order__incoterm #: model:ir.model.fields,help:sale_stock_usability.field_sale_order__incoterm
@@ -47,33 +43,8 @@ msgid ""
"International Commercial Terms are a series of predefined commercial terms " "International Commercial Terms are a series of predefined commercial terms "
"used in international transactions." "used in international transactions."
msgstr "" msgstr ""
"Les Incoterms sont une série de termes commerciaux prédéfinie utilisés dans " "Les termes commerciaux internationaux sont une série de termes commerciaux "
"les transactions internationales." "prédéfinis utilisés dans les transactions internationales."
#. module: sale_stock_usability
#: model:ir.model.fields,field_description:sale_stock_usability.field_sale_order____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: sale_stock_usability
#: model_terms:ir.ui.view,arch_db:sale_stock_usability.view_sales_order_filter
msgid "Not Fully Delivered"
msgstr "Livraison à faire"
#. module: sale_stock_usability
#: model:ir.model.fields.selection,name:sale_stock_usability.selection__sale_order__picking_status__no
msgid "Nothing to Deliver"
msgstr "Rien à livrer"
#. module: sale_stock_usability
#: model:ir.model.fields.selection,name:sale_stock_usability.selection__sale_order__picking_status__partially_delivered
msgid "Partially Delivered"
msgstr "Partiellement livré"
#. module: sale_stock_usability
#: model:ir.model.fields,field_description:sale_stock_usability.field_sale_order__picking_status
msgid "Picking Status"
msgstr "Statut de la livraison"
#. module: sale_stock_usability #. module: sale_stock_usability
#: model:ir.model,name:sale_stock_usability.model_sale_order #: model:ir.model,name:sale_stock_usability.model_sale_order
@@ -81,11 +52,12 @@ msgid "Sales Order"
msgstr "Bon de commande" msgstr "Bon de commande"
#. module: sale_stock_usability #. module: sale_stock_usability
#: model:ir.model.fields.selection,name:sale_stock_usability.selection__sale_order__picking_status__to_deliver #: model:ir.model.fields,field_description:sale_stock_usability.field_sale_order__picking_policy
msgid "To Deliver" msgid "Shipping Policy"
msgstr "À livrer" msgstr "Politique d'expédition"
#. module: sale_stock_usability #. module: sale_stock_usability
#: model:ir.model.fields,field_description:sale_stock_usability.field_sale_order__warehouse_id #: model:ir.model.fields,field_description:sale_stock_usability.field_sale_order__warehouse_id
#: model_terms:ir.ui.view,arch_db:sale_stock_usability.view_order_product_search
msgid "Warehouse" msgid "Warehouse"
msgstr "Entrepôt" msgstr "Entrepôt"

View File

@@ -23,8 +23,6 @@
'views/account_move.xml', 'views/account_move.xml',
# 'views/res_company.xml', TODO uncomment once account_usa is ported # 'views/res_company.xml', TODO uncomment once account_usa is ported
"views/res_partner.xml", "views/res_partner.xml",
'wizards/sale_invoice_discount_all_lines_view.xml',
'security/ir.model.access.csv',
], ],
'installable': True, 'installable': True,
} }

View File

@@ -4,63 +4,21 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Odoo Server 14.0\n" "Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-09-18 08:22+0000\n" "POT-Creation-Date: 2024-07-04 16:06+0000\n"
"PO-Revision-Date: 2022-09-18 18:19+0200\n" "PO-Revision-Date: 2024-07-04 16:06+0000\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: \n"
"Language: fr\n" "Plural-Forms: \n"
"X-Generator: Poedit 2.0.4\n"
#. module: sale_usability
#: model:ir.model.fields.selection,name:sale_usability.selection__sale_invoice_discount_all_lines__line_type__all
msgid "All Lines"
msgstr "Toutes les lignes"
#. module: sale_usability
#: model:ir.model.fields.selection,name:sale_usability.selection__sale_invoice_discount_all_lines__line_type__products
msgid "All Product Lines"
msgstr "Toutes les gammes de produits"
#. module: sale_usability
#: model:ir.model.fields.selection,name:sale_usability.selection__sale_invoice_discount_all_lines__line_type__services
msgid "All Service Lines"
msgstr "Toutes les gammes de services"
#. module: sale_usability
#: code:addons/sale_usability/wizards/sale_invoice_discount_all_lines.py:0
#, python-format
msgid "Applied a {discount}% discount on {line_type}."
msgstr "Remise de {discount} % appliquée sur {line_type}."
#. module: sale_usability
#: model_terms:ir.ui.view,arch_db:sale_usability.sale_invoice_discount_all_lines_form
msgid "Apply"
msgstr "Appliquer"
#. module: sale_usability
#: model:ir.model,name:sale_usability.model_sale_invoice_discount_all_lines
msgid "Apply discount on all lines of a sale order or invoice"
msgstr "Appliquer une remise sur toutes les lignes d'un bon de commande ou d'une facture"
#. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_sale_invoice_discount_all_lines__line_type
msgid "Apply on"
msgstr "Appliquer à"
#. module: sale_usability #. module: sale_usability
#: model_terms:ir.ui.view,arch_db:sale_usability.view_order_form #: model_terms:ir.ui.view,arch_db:sale_usability.view_order_form
msgid "Are you sure you want to cancel this sale order?" msgid "Are you sure you want to cancel this sale order?"
msgstr "Êtes-vous sûr de vouloir annuler cette commande ?" msgstr "Êtes-vous sûr de vouloir annuler cette commande client ?"
#. module: sale_usability
#: model_terms:ir.ui.view,arch_db:sale_usability.sale_invoice_discount_all_lines_form
msgid "Cancel"
msgstr "Annuler"
#. module: sale_usability #. module: sale_usability
#: model:ir.model,name:sale_usability.model_res_company #: model:ir.model,name:sale_usability.model_res_company
@@ -70,7 +28,7 @@ msgstr "Sociétés"
#. module: sale_usability #. module: sale_usability
#: model:ir.model,name:sale_usability.model_res_partner #: model:ir.model,name:sale_usability.model_res_partner
msgid "Contact" msgid "Contact"
msgstr "Contact" msgstr ""
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_sale_invoice_discount_all_lines__create_uid #: model:ir.model.fields,field_description:sale_usability.field_sale_invoice_discount_all_lines__create_uid
@@ -88,8 +46,8 @@ msgid ""
"Creation date of draft/sent orders,\n" "Creation date of draft/sent orders,\n"
"Confirmation date of confirmed orders." "Confirmation date of confirmed orders."
msgstr "" msgstr ""
"Date de création des ordres en brouillons/envoyés,\n" "Date de création des commandes à l'état brouillon/envoyés.\n"
"Date de confirmation des commandes validées." "Date de confirmation des commandes confirmées."
#. module: sale_usability #. module: sale_usability
#: model_terms:ir.ui.view,arch_db:sale_usability.view_sales_order_line_filter #: model_terms:ir.ui.view,arch_db:sale_usability.view_sales_order_line_filter
@@ -107,55 +65,21 @@ msgid "Delivery Address"
msgstr "Adresse de livraison" msgstr "Adresse de livraison"
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_sale_invoice_discount_all_lines__discount
msgid "Discount"
msgstr "Remise"
#. module: sale_usability
#: code:addons/sale_usability/wizards/sale_invoice_discount_all_lines.py:0
#, python-format
msgid "Discount cannot be negative."
msgstr "La remise ne peut être négative."
#. module: sale_usability
#: model:ir.actions.act_window,name:sale_usability.account_move_discount_all_lines_action
#: model:ir.actions.act_window,name:sale_usability.sale_order_discount_all_lines_action
msgid "Discount on all lines"
msgstr "Remise sur toutes les lignes"
#. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_account_move__display_name
#: model:ir.model.fields,field_description:sale_usability.field_product_template__display_name
#: model:ir.model.fields,field_description:sale_usability.field_res_company__display_name
#: model:ir.model.fields,field_description:sale_usability.field_res_partner__display_name
#: model:ir.model.fields,field_description:sale_usability.field_sale_invoice_discount_all_lines__display_name #: model:ir.model.fields,field_description:sale_usability.field_sale_invoice_discount_all_lines__display_name
#: model:ir.model.fields,field_description:sale_usability.field_sale_order__display_name
#: model:ir.model.fields,field_description:sale_usability.field_sale_order_line__display_name
msgid "Display Name" msgid "Display Name"
msgstr "Nom affiché" msgstr "Nom affiché"
#. module: sale_usability
#: code:addons/sale_usability/models/sale_order.py:0
#, python-format
msgid ""
"Due to the update of the ordered quantity on line '%s', the price has been updated according to pricelist '%s'.\n"
"Old price: %s\n"
"New price: %s"
msgstr ""
"En raison de la mise à jour de la quantité commandée sur la ligne '%s', le prix a été mis à jour selon la liste de "
"prix '%s'.\n"
"Ancien prix : %s\n"
"Nouveau prix : %s"
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,help:sale_usability.field_product_product__expense_policy #: model:ir.model.fields,help:sale_usability.field_product_product__expense_policy
#: model:ir.model.fields,help:sale_usability.field_product_template__expense_policy #: model:ir.model.fields,help:sale_usability.field_product_template__expense_policy
msgid "" msgid ""
"Expenses and vendor bills can be re-invoiced to a customer.With this option, a validated expense can be re-invoice to " "Expenses and vendor bills can be re-invoiced to a customer.With this option,"
"a customer at its cost or sales price." " a validated expense can be re-invoice to a customer at its cost or sales "
"price."
msgstr "" msgstr ""
"Les notes de frais et les factures des fournisseurs peuvent être refacturées à un client. Avec cette option, une " "Les notes de frais et les factures fournisseurs peuvent être refacturées à "
"dépense validée peut être refacturée au client à son coût ou à son prix de vente." "un client. Avec cette option, une dépense validée peut être refacturée au "
"client à son coût ou à son prix de vente."
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_sale_order__fiscal_position_id #: model:ir.model.fields,field_description:sale_usability.field_sale_order__fiscal_position_id
@@ -165,11 +89,13 @@ msgstr "Position fiscale"
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,help:sale_usability.field_sale_order__fiscal_position_id #: model:ir.model.fields,help:sale_usability.field_sale_order__fiscal_position_id
msgid "" msgid ""
"Fiscal positions are used to adapt taxes and accounts for particular customers or sales orders/invoices.The default " "Fiscal positions are used to adapt taxes and accounts for particular "
"value comes from the customer." "customers or sales orders/invoices.The default value comes from the "
"customer."
msgstr "" msgstr ""
"Les positions fiscales sont utilisées pour adapter les taxes et les comptes comptables par clients ou par bons de " "Les positions fiscales sont utilisées pour adapter les taxes et les comptes "
"commande/factures. La valeur par défaut sera celle renseignée sur le client." "comptables pour un client spécifique ou pour une commande/facture. La valeur"
" par défaut sera celle renseignée sur le client."
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_sale_order__has_attachment #: model:ir.model.fields,field_description:sale_usability.field_sale_order__has_attachment
@@ -179,41 +105,17 @@ msgstr "Possède une pièce jointe"
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_sale_order__has_discount #: model:ir.model.fields,field_description:sale_usability.field_sale_order__has_discount
msgid "Has Discount" msgid "Has Discount"
msgstr "A une réduction" msgstr "A une remise"
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_account_move__id
#: model:ir.model.fields,field_description:sale_usability.field_product_template__id
#: model:ir.model.fields,field_description:sale_usability.field_res_company__id
#: model:ir.model.fields,field_description:sale_usability.field_res_partner__id
#: model:ir.model.fields,field_description:sale_usability.field_sale_invoice_discount_all_lines__id #: model:ir.model.fields,field_description:sale_usability.field_sale_invoice_discount_all_lines__id
#: model:ir.model.fields,field_description:sale_usability.field_sale_order__id
#: model:ir.model.fields,field_description:sale_usability.field_sale_order_line__id
msgid "ID" msgid "ID"
msgstr "ID"
#. module: sale_usability
#: model:ir.model.fields,help:sale_usability.field_sale_order__pricelist_id
msgid "If you change the pricelist, only newly added lines will be affected."
msgstr "" msgstr ""
"Si vous modifiez la liste de prix; seules les lignes de bon de commande ajoutées après cette modification seront "
"affectées."
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,help:sale_usability.field_sale_order_line__product_barcode #: model:ir.model.fields,help:sale_usability.field_sale_order_line__product_barcode
msgid "International Article Number used for product identification." msgid "International Article Number used for product identification."
msgstr "Numéro d'article international (IAN) utilisé pour identifier cet article." msgstr "Numéro d'article international utilisé pour identifier ce produit."
#. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_sale_invoice_discount_all_lines__move_id
msgid "Invoice"
msgstr "Facture"
#. module: sale_usability
#: code:addons/sale_usability/wizards/sale_invoice_discount_all_lines.py:0
#, python-format
msgid "Invoice '%s' is not in draft state."
msgstr "La facture '%s' n'est pas en brouillon."
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_sale_order__partner_invoice_id #: model:ir.model.fields,field_description:sale_usability.field_sale_order__partner_invoice_id
@@ -232,13 +134,7 @@ msgid "Journal Entry"
msgstr "Pièce comptable" msgstr "Pièce comptable"
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_account_move____last_update
#: model:ir.model.fields,field_description:sale_usability.field_product_template____last_update
#: model:ir.model.fields,field_description:sale_usability.field_res_company____last_update
#: model:ir.model.fields,field_description:sale_usability.field_res_partner____last_update
#: model:ir.model.fields,field_description:sale_usability.field_sale_invoice_discount_all_lines____last_update #: model:ir.model.fields,field_description:sale_usability.field_sale_invoice_discount_all_lines____last_update
#: model:ir.model.fields,field_description:sale_usability.field_sale_order____last_update
#: model:ir.model.fields,field_description:sale_usability.field_sale_order_line____last_update
msgid "Last Modified on" msgid "Last Modified on"
msgstr "Dernière modification le" msgstr "Dernière modification le"
@@ -261,13 +157,11 @@ msgstr "Mentions légales figurant sur les devis"
#: model:ir.model.fields,help:sale_usability.field_product_product__service_type #: model:ir.model.fields,help:sale_usability.field_product_product__service_type
#: model:ir.model.fields,help:sale_usability.field_product_template__service_type #: model:ir.model.fields,help:sale_usability.field_product_template__service_type
msgid "" msgid ""
"Manually set quantities on order: Invoice based on the manually entered quantity, without creating an analytic " "Manually set quantities on order: Invoice based on the manually entered quantity, without creating an analytic account.\n"
"account.\n"
"Timesheets on contract: Invoice based on the tracked hours on the related timesheet.\n" "Timesheets on contract: Invoice based on the tracked hours on the related timesheet.\n"
"Create a task and track hours: Create a task on the sales order validation and track the work hours." "Create a task and track hours: Create a task on the sales order validation and track the work hours."
msgstr "" msgstr ""
"Définition manuelle des quantités sur la commande : facture selon les quantités saisies manuellement, sans création de " "Définition manuelle des quantités sur la commande : facture selon les quantités saisies manuellement, sans création de compte analytique.\n"
"compte analytique.\n"
" Feuilles de temps sur les contrats : facture selon les heures passées en fonction de la feuille de temps liée.\n" " Feuilles de temps sur les contrats : facture selon les heures passées en fonction de la feuille de temps liée.\n"
" Créer une tâche et suivre les heures : crée une tâche à validation de la commande et effectue un suivi du temps passé." " Créer une tâche et suivre les heures : crée une tâche à validation de la commande et effectue un suivi du temps passé."
@@ -277,9 +171,9 @@ msgid "Missing Attachment"
msgstr "Pièce jointe manquante" msgstr "Pièce jointe manquante"
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_sale_invoice_discount_all_lines__sale_id #: model:ir.model,name:sale_usability.model_sale_invoice_discount_all_lines
msgid "Order" msgid "None"
msgstr "Commande" msgstr "Aucune"
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_sale_order__date_order #: model:ir.model.fields,field_description:sale_usability.field_sale_order__date_order
@@ -293,36 +187,30 @@ msgid ""
"Ordered Quantity: Invoice quantities ordered by the customer.\n" "Ordered Quantity: Invoice quantities ordered by the customer.\n"
"Delivered Quantity: Invoice quantities delivered to the customer." "Delivered Quantity: Invoice quantities delivered to the customer."
msgstr "" msgstr ""
"Quantité commandée : facturez les quantités commandées par le client.\n" "Quantité commandée : facture les quantités commandées par le client.\n"
"Quantité livrée : facturez les quantités livrées au client." "Quantité livrée : facture les quantités livrées au client."
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_sale_order__payment_term_id #: model:ir.model.fields,field_description:sale_usability.field_sale_order__payment_term_id
msgid "Payment Terms" msgid "Payment Terms"
msgstr "Conditions de paiement" msgstr "Conditions de paiement"
#. module: sale_usability
#: code:addons/sale_usability/models/sale_order.py:0
#, python-format
msgid "Price updated"
msgstr "Prix mis à jour"
#. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_sale_order__pricelist_id
msgid "Pricelist"
msgstr "Liste de prix"
#. module: sale_usability #. module: sale_usability
#: model:ir.actions.act_window,name:sale_usability.product_pricelist_item_action #: model:ir.actions.act_window,name:sale_usability.product_pricelist_item_action
#: model:ir.ui.menu,name:sale_usability.product_pricelist_item_menu #: model:ir.ui.menu,name:sale_usability.product_pricelist_item_menu
msgid "Pricelist Items" msgid "Price Rules"
msgstr "Éléments de la liste de prix" msgstr "Règles des listes de prix"
#. module: sale_usability #. module: sale_usability
#: model_terms:ir.ui.view,arch_db:sale_usability.view_order_form #: model_terms:ir.ui.view,arch_db:sale_usability.view_order_form
msgid "Print" msgid "Print"
msgstr "Imprimer" msgstr "Imprimer"
#. module: sale_usability
#: model:ir.model,name:sale_usability.model_product_template
msgid "Product"
msgstr "Produit"
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_sale_order_line__product_barcode #: model:ir.model.fields,field_description:sale_usability.field_sale_order_line__product_barcode
msgid "Product Barcode" msgid "Product Barcode"
@@ -331,17 +219,7 @@ msgstr "Code barre du produit"
#. module: sale_usability #. module: sale_usability
#: model:ir.ui.menu,name:sale_usability.product_category_sale_menu #: model:ir.ui.menu,name:sale_usability.product_category_sale_menu
msgid "Product Categories" msgid "Product Categories"
msgstr "Catégories d'articles" msgstr "Catégories de produit"
#. module: sale_usability
#: model:ir.model,name:sale_usability.model_product_template
msgid "Product Template"
msgstr "Modèle d'article"
#. module: sale_usability
#: model_terms:ir.ui.view,arch_db:sale_usability.view_company_form
msgid "Quotation Legal Terms"
msgstr "Mentions légales figurant sur les devis"
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_product_product__expense_policy #: model:ir.model.fields,field_description:sale_usability.field_product_product__expense_policy
@@ -349,37 +227,17 @@ msgstr "Mentions légales figurant sur les devis"
msgid "Re-Invoice Expenses" msgid "Re-Invoice Expenses"
msgstr "Re-facturer les notes de frais" msgstr "Re-facturer les notes de frais"
#. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_account_bank_statement_line__sale_count
#: model:ir.model.fields,field_description:sale_usability.field_account_move__sale_count
#: model:ir.model.fields,field_description:sale_usability.field_account_payment__sale_count
msgid "Sale Order Count"
msgstr "Nombre de commandes clients"
#. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_account_bank_statement_line__sale_ids
#: model:ir.model.fields,field_description:sale_usability.field_account_move__sale_ids
#: model:ir.model.fields,field_description:sale_usability.field_account_payment__sale_ids
#: model_terms:ir.ui.view,arch_db:sale_usability.account_invoice_form
msgid "Sale Orders"
msgstr "Bons de commande"
#. module: sale_usability
#: model_terms:ir.ui.view,arch_db:sale_usability.sale_report_tree
msgid "Sales Analysis"
msgstr "Analyse des ventes"
#. module: sale_usability #. module: sale_usability
#: model:ir.model,name:sale_usability.model_sale_order #: model:ir.model,name:sale_usability.model_sale_order
msgid "Sales Order" msgid "Sales Order"
msgstr "Bon de commande client" msgstr "Bon de commande"
#. module: sale_usability #. module: sale_usability
#: model:ir.model,name:sale_usability.model_sale_order_line #: model:ir.model,name:sale_usability.model_sale_order_line
#: model:ir.model.fields,field_description:sale_usability.field_product_product__sale_line_warn #: model:ir.model.fields,field_description:sale_usability.field_product_product__sale_line_warn
#: model:ir.model.fields,field_description:sale_usability.field_product_template__sale_line_warn #: model:ir.model.fields,field_description:sale_usability.field_product_template__sale_line_warn
msgid "Sales Order Line" msgid "Sales Order Line"
msgstr "Ligne de bons de commande" msgstr "Ligne de commande"
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_res_partner__sale_warn #: model:ir.model.fields,field_description:sale_usability.field_res_partner__sale_warn
@@ -393,16 +251,18 @@ msgstr "Avertissements de vente"
#: model:ir.model.fields,help:sale_usability.field_res_partner__sale_warn #: model:ir.model.fields,help:sale_usability.field_res_partner__sale_warn
#: model:ir.model.fields,help:sale_usability.field_res_users__sale_warn #: model:ir.model.fields,help:sale_usability.field_res_users__sale_warn
msgid "" msgid ""
"Selecting the \"Warning\" option will notify user with the message, Selecting \"Blocking Message\" will throw an " "Selecting the \"Warning\" option will notify user with the message, "
"exception with the message and block the flow. The Message has to be written in the next field." "Selecting \"Blocking Message\" will throw an exception with the message and "
"block the flow. The Message has to be written in the next field."
msgstr "" msgstr ""
"Sélectionner l'option 'Avertissement' informera l'utilisateur du Message. Sélectionner 'Message Bloquant' lancera une " "Sélectionner l'option 'Avertissement' affichera le message à l'utilisateur. "
"exception avec le message et bloquera le flux. Le message doit être écrit dans le champ suivant." "Sélectionner 'Message Bloquant' lancera une exception avec le message et "
"bloquera le flux. Le message doit être écrit dans le champ suivant."
#. module: sale_usability #. module: sale_usability
#: model_terms:ir.ui.view,arch_db:sale_usability.view_order_form #: model_terms:ir.ui.view,arch_db:sale_usability.view_order_form
msgid "Send Order Acknowledgement" msgid "Send Order Acknowledgement"
msgstr "Confirmation de commande" msgstr "Envoyer une confirmation de commande"
#. module: sale_usability #. module: sale_usability
#: model_terms:ir.ui.view,arch_db:sale_usability.view_sales_order_filter #: model_terms:ir.ui.view,arch_db:sale_usability.view_sales_order_filter
@@ -412,16 +272,10 @@ msgstr "État"
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_sale_order__amount_tax #: model:ir.model.fields,field_description:sale_usability.field_sale_order__amount_tax
msgid "Taxes" msgid "Taxes"
msgstr "Taxes" msgstr ""
#. module: sale_usability
#: code:addons/sale_usability/wizards/sale_invoice_discount_all_lines.py:0
#, python-format
msgid "There are no lines to apply the discount on."
msgstr "Il n'y a pas de lignes sur lesquelles appliquer la remise."
#. module: sale_usability #. module: sale_usability
#: model:ir.model.fields,field_description:sale_usability.field_product_product__service_type #: model:ir.model.fields,field_description:sale_usability.field_product_product__service_type
#: model:ir.model.fields,field_description:sale_usability.field_product_template__service_type #: model:ir.model.fields,field_description:sale_usability.field_product_template__service_type
msgid "Track Service" msgid "Track Service"
msgstr "Opérateur de suivi" msgstr "Suivre le service"

View File

@@ -1,3 +0,0 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_sale_invoice_discount_all_lines_sale,Full access on sale.invoice.discount.all.lines to Sale user,model_sale_invoice_discount_all_lines,sales_team.group_sale_salesman,1,1,1,1
access_sale_invoice_discount_all_lines_invoice,Full access on sale.invoice.discount.all.lines to Invoice user,model_sale_invoice_discount_all_lines,account.group_account_invoice,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_sale_invoice_discount_all_lines_sale Full access on sale.invoice.discount.all.lines to Sale user model_sale_invoice_discount_all_lines sales_team.group_sale_salesman 1 1 1 1
3 access_sale_invoice_discount_all_lines_invoice Full access on sale.invoice.discount.all.lines to Invoice user model_sale_invoice_discount_all_lines account.group_account_invoice 1 1 1 1

View File

@@ -10,7 +10,7 @@
<!-- This is in the sale_usability module instead of the product_usability module <!-- This is in the sale_usability module instead of the product_usability module
because the parent menu entry is in the sale module --> because the parent menu entry is in the sale module -->
<record id="product_pricelist_item_action" model="ir.actions.act_window"> <record id="product_pricelist_item_action" model="ir.actions.act_window">
<field name="name">Pricelist Items</field> <field name="name">Price Rules</field>
<field name="res_model">product.pricelist.item</field> <field name="res_model">product.pricelist.item</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="context">{'product_pricelist_item_main_view': True}</field> <field name="context">{'product_pricelist_item_main_view': True}</field>

View File

@@ -2,94 +2,12 @@
# @author: Alexis de Lattre <alexis.delattre@akretion.com> # @author: Alexis de Lattre <alexis.delattre@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, models, fields, _ from odoo import models, fields
from odoo.tools import float_compare
from odoo.exceptions import UserError
class SaleInvoiceDiscountAllLines(models.TransientModel): class SaleInvoiceDiscountAllLines(models.TransientModel):
_name = 'sale.invoice.discount.all.lines' _name = 'sale.invoice.discount.all.lines'
_description = 'Apply discount on all lines of a sale order or invoice' _description = 'None'
# Remove because this feature is now mostly native
@api.model # TODO 04/07/2024 remove later to avoid ORM bug: it crashes when reloading module
def default_get(self, fields_list): # KeyError: 'sale.invoice.discount.all.lines'
res = super().default_get(fields_list)
if self._context.get('active_id'):
if self._context.get('active_model') == 'sale.order':
res['sale_id'] = self._context['active_id']
elif self._context.get('active_model') == 'account.move':
res['move_id'] = self._context['active_id']
move = self.env['account.move'].browse(res['move_id'])
if move.state != 'draft':
raise UserError(
_("Invoice '%s' is not in draft state.")
% self.move_id.display_name)
else:
# I don't translate this because it should never happen.
raise UserError(
"This wizard can only work on a sale order or an invoice.")
else:
# I don't translate this because it should never happen.
raise UserError("Missing active_id in context. It should never happen.")
return res
sale_id = fields.Many2one(
'sale.order', string='Order', readonly=True)
move_id = fields.Many2one(
'account.move', string='Invoice', readonly=True)
discount = fields.Float(
string='Discount', digits='Discount', required=True)
line_type = fields.Selection([
('all', 'All Lines'),
('products', 'All Product Lines'),
('services', 'All Service Lines'),
], default='all', required=True, string='Apply on')
def run(self):
prec = self.env['decimal.precision'].precision_get('Discount')
if float_compare(self.discount, 0, precision_digits=prec) < 0:
raise UserError(_("Discount cannot be negative."))
if self.sale_id:
record = self.sale_id
line_obj = self.env['sale.order.line']
domain = [('order_id', '=', self.sale_id.id)]
elif self.move_id:
record = self.move_id
if self.move_id.state != 'draft':
raise UserError(_(
"Invoice '%s' is not in draft state.") % self.move_id.display_name)
line_obj = self.env['account.move.line']
domain = [
('move_id', '=', self.move_id.id),
('exclude_from_invoice_tab', '=', False),
]
else:
# I don't translate this because it should never happen.
raise UserError(
"The wizard is not linked to a sale order nor an invoice. "
"This should never happen.")
domain += [('display_type', '=', False)]
if self.line_type == 'products':
domain += [
('product_id', '!=', False),
('product_id.type', '!=', 'service'),
]
elif self.line_type == 'services':
domain += [
('product_id', '!=', False),
('product_id.type', '=', 'service'),
]
lines = line_obj.search(domain)
if not lines:
raise UserError(_("There are no lines to apply the discount on."))
lines.with_context(check_move_validity=False).write({'discount': self.discount})
if self.move_id:
self.move_id.with_context(
check_move_validity=False)._recompute_dynamic_lines(
recompute_all_taxes=True)
self.move_id._check_balanced()
record.message_post(body=_(
"Applied a {discount}% discount on {line_type}.").format(
discount=self.discount,
line_type=self._fields['line_type'].convert_to_export(
self.line_type, self)))

View File

@@ -1,52 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2022 Akretion France (http://www.akretion.com/)
@author: Alexis de Lattre <alexis.delattre@akretion.com>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-->
<odoo>
<record id="sale_invoice_discount_all_lines_form" model="ir.ui.view">
<field name="model">sale.invoice.discount.all.lines</field>
<field name="arch" type="xml">
<form>
<group name="main">
<field name="sale_id" attrs="{'invisible': [('sale_id', '=', False)]}"/>
<field name="move_id" attrs="{'invisible': [('move_id', '=', False)]}"/>
<label for="discount"/>
<div name="discount">
<field name="discount" class="oe_inline"/> %%
</div>
<field name="line_type"/>
</group>
<footer>
<button name="run" type="object"
class="btn-primary" string="Apply"/>
<button special="cancel" string="Cancel" class="btn-default"/>
</footer>
</form>
</field>
</record>
<record id="account_move_discount_all_lines_action" model="ir.actions.act_window">
<field name="name">Discount on all lines</field>
<field name="res_model">sale.invoice.discount.all.lines</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="groups_id" eval="[(4, ref('account.group_account_invoice'))]"/>
<field name="binding_model_id" ref="account.model_account_move" />
<field name="binding_view_types">form</field>
</record>
<record id="sale_order_discount_all_lines_action" model="ir.actions.act_window">
<field name="name">Discount on all lines</field>
<field name="res_model">sale.invoice.discount.all.lines</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="groups_id" eval="[(4, ref('sales_team.group_sale_salesman'))]"/>
<field name="binding_model_id" ref="sale.model_sale_order" />
<field name="binding_view_types">form</field>
</record>
</odoo>