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:
@@ -4,42 +4,38 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-12-03 21:31+0000\n"
|
||||
"PO-Revision-Date: 2020-12-03 21:31+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"POT-Creation-Date: 2024-07-04 16:09+0000\n"
|
||||
"PO-Revision-Date: 2024-07-04 16:09+0000\n"
|
||||
"Last-Translator: Alexis de Lattre <alexis.delattre@akretion.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: sale_stock_usability
|
||||
#: model:ir.model.fields.selection,name:sale_stock_usability.selection__sale_order__picking_status__cancel
|
||||
msgid "Delivery Cancelled"
|
||||
msgstr "Livraison annulée"
|
||||
|
||||
#. module: sale_stock_usability
|
||||
#: 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"
|
||||
#: model:ir.model.fields,help:sale_stock_usability.field_sale_order__picking_policy
|
||||
msgid ""
|
||||
"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 "
|
||||
"shortest."
|
||||
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
|
||||
#: model:ir.model.fields,field_description:sale_stock_usability.field_sale_order__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
|
||||
#: 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 "
|
||||
"used in international transactions."
|
||||
msgstr ""
|
||||
"Les Incoterms sont une série de termes commerciaux prédéfinie 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"
|
||||
"Les termes commerciaux internationaux sont une série de termes commerciaux "
|
||||
"prédéfinis utilisés dans les transactions internationales."
|
||||
|
||||
#. module: sale_stock_usability
|
||||
#: model:ir.model,name:sale_stock_usability.model_sale_order
|
||||
@@ -81,11 +52,12 @@ msgid "Sales Order"
|
||||
msgstr "Bon de commande"
|
||||
|
||||
#. module: sale_stock_usability
|
||||
#: model:ir.model.fields.selection,name:sale_stock_usability.selection__sale_order__picking_status__to_deliver
|
||||
msgid "To Deliver"
|
||||
msgstr "À livrer"
|
||||
#: model:ir.model.fields,field_description:sale_stock_usability.field_sale_order__picking_policy
|
||||
msgid "Shipping Policy"
|
||||
msgstr "Politique d'expédition"
|
||||
|
||||
#. module: sale_stock_usability
|
||||
#: 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"
|
||||
msgstr "Entrepôt"
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
'views/account_move.xml',
|
||||
# 'views/res_company.xml', TODO uncomment once account_usa is ported
|
||||
"views/res_partner.xml",
|
||||
'wizards/sale_invoice_discount_all_lines_view.xml',
|
||||
'security/ir.model.access.csv',
|
||||
],
|
||||
'installable': True,
|
||||
}
|
||||
|
||||
@@ -4,63 +4,21 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-09-18 08:22+0000\n"
|
||||
"PO-Revision-Date: 2022-09-18 18:19+0200\n"
|
||||
"POT-Creation-Date: 2024-07-04 16:06+0000\n"
|
||||
"PO-Revision-Date: 2024-07-04 16:06+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: fr\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 à"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: sale_usability
|
||||
#: model_terms:ir.ui.view,arch_db:sale_usability.view_order_form
|
||||
msgid "Are you sure you want to cancel this sale order?"
|
||||
msgstr "Êtes-vous sûr de vouloir annuler cette commande ?"
|
||||
|
||||
#. module: sale_usability
|
||||
#: model_terms:ir.ui.view,arch_db:sale_usability.sale_invoice_discount_all_lines_form
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
msgstr "Êtes-vous sûr de vouloir annuler cette commande client ?"
|
||||
|
||||
#. module: sale_usability
|
||||
#: model:ir.model,name:sale_usability.model_res_company
|
||||
@@ -70,7 +28,7 @@ msgstr "Sociétés"
|
||||
#. module: sale_usability
|
||||
#: model:ir.model,name:sale_usability.model_res_partner
|
||||
msgid "Contact"
|
||||
msgstr "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_usability
|
||||
#: 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"
|
||||
"Confirmation date of confirmed orders."
|
||||
msgstr ""
|
||||
"Date de création des ordres en brouillons/envoyés,\n"
|
||||
"Date de confirmation des commandes validées."
|
||||
"Date de création des commandes à l'état brouillon/envoyés.\n"
|
||||
"Date de confirmation des commandes confirmées."
|
||||
|
||||
#. module: sale_usability
|
||||
#: 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"
|
||||
|
||||
#. 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_order__display_name
|
||||
#: model:ir.model.fields,field_description:sale_usability.field_sale_order_line__display_name
|
||||
msgid "Display Name"
|
||||
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
|
||||
#: model:ir.model.fields,help:sale_usability.field_product_product__expense_policy
|
||||
#: model:ir.model.fields,help:sale_usability.field_product_template__expense_policy
|
||||
msgid ""
|
||||
"Expenses and vendor bills can be re-invoiced to a customer.With this option, a validated expense can be re-invoice to "
|
||||
"a customer at its cost or sales price."
|
||||
"Expenses and vendor bills can be re-invoiced to a customer.With this option,"
|
||||
" a validated expense can be re-invoice to a customer at its cost or sales "
|
||||
"price."
|
||||
msgstr ""
|
||||
"Les notes de frais et les factures des fournisseurs peuvent être refacturées à un client. Avec cette option, une "
|
||||
"dépense validée peut être refacturée au client à son coût ou à son prix de vente."
|
||||
"Les notes de frais et les factures fournisseurs peuvent être refacturées à "
|
||||
"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
|
||||
#: model:ir.model.fields,field_description:sale_usability.field_sale_order__fiscal_position_id
|
||||
@@ -165,11 +89,13 @@ msgstr "Position fiscale"
|
||||
#. module: sale_usability
|
||||
#: model:ir.model.fields,help:sale_usability.field_sale_order__fiscal_position_id
|
||||
msgid ""
|
||||
"Fiscal positions are used to adapt taxes and accounts for particular customers or sales orders/invoices.The default "
|
||||
"value comes from the customer."
|
||||
"Fiscal positions are used to adapt taxes and accounts for particular "
|
||||
"customers or sales orders/invoices.The default value comes from the "
|
||||
"customer."
|
||||
msgstr ""
|
||||
"Les positions fiscales sont utilisées pour adapter les taxes et les comptes comptables par clients ou par bons de "
|
||||
"commande/factures. La valeur par défaut sera celle renseignée sur le client."
|
||||
"Les positions fiscales sont utilisées pour adapter les taxes et les comptes "
|
||||
"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
|
||||
#: 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
|
||||
#: model:ir.model.fields,field_description:sale_usability.field_sale_order__has_discount
|
||||
msgid "Has Discount"
|
||||
msgstr "A une réduction"
|
||||
msgstr "A une remise"
|
||||
|
||||
#. 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_order__id
|
||||
#: model:ir.model.fields,field_description:sale_usability.field_sale_order_line__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 ""
|
||||
"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
|
||||
#: model:ir.model.fields,help:sale_usability.field_sale_order_line__product_barcode
|
||||
msgid "International Article Number used for product identification."
|
||||
msgstr "Numéro d'article international (IAN) utilisé pour identifier cet article."
|
||||
|
||||
#. 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."
|
||||
msgstr "Numéro d'article international utilisé pour identifier ce produit."
|
||||
|
||||
#. module: sale_usability
|
||||
#: 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"
|
||||
|
||||
#. 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_order____last_update
|
||||
#: model:ir.model.fields,field_description:sale_usability.field_sale_order_line____last_update
|
||||
msgid "Last Modified on"
|
||||
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_template__service_type
|
||||
msgid ""
|
||||
"Manually set quantities on order: Invoice based on the manually entered quantity, without creating an analytic "
|
||||
"account.\n"
|
||||
"Manually set quantities on order: Invoice based on the manually entered quantity, without creating an analytic account.\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."
|
||||
msgstr ""
|
||||
"Définition manuelle des quantités sur la commande : facture selon les quantités saisies manuellement, sans création de "
|
||||
"compte analytique.\n"
|
||||
"Définition manuelle des quantités sur la commande : facture selon les quantités saisies manuellement, sans création de 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"
|
||||
" 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"
|
||||
|
||||
#. module: sale_usability
|
||||
#: model:ir.model.fields,field_description:sale_usability.field_sale_invoice_discount_all_lines__sale_id
|
||||
msgid "Order"
|
||||
msgstr "Commande"
|
||||
#: model:ir.model,name:sale_usability.model_sale_invoice_discount_all_lines
|
||||
msgid "None"
|
||||
msgstr "Aucune"
|
||||
|
||||
#. module: sale_usability
|
||||
#: 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"
|
||||
"Delivered Quantity: Invoice quantities delivered to the customer."
|
||||
msgstr ""
|
||||
"Quantité commandée : facturez les quantités commandées par le client.\n"
|
||||
"Quantité livrée : facturez les quantités livrées au client."
|
||||
"Quantité commandée : facture les quantités commandées par le client.\n"
|
||||
"Quantité livrée : facture les quantités livrées au client."
|
||||
|
||||
#. module: sale_usability
|
||||
#: model:ir.model.fields,field_description:sale_usability.field_sale_order__payment_term_id
|
||||
msgid "Payment Terms"
|
||||
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
|
||||
#: model:ir.actions.act_window,name:sale_usability.product_pricelist_item_action
|
||||
#: model:ir.ui.menu,name:sale_usability.product_pricelist_item_menu
|
||||
msgid "Pricelist Items"
|
||||
msgstr "Éléments de la liste de prix"
|
||||
msgid "Price Rules"
|
||||
msgstr "Règles des listes de prix"
|
||||
|
||||
#. module: sale_usability
|
||||
#: model_terms:ir.ui.view,arch_db:sale_usability.view_order_form
|
||||
msgid "Print"
|
||||
msgstr "Imprimer"
|
||||
|
||||
#. module: sale_usability
|
||||
#: model:ir.model,name:sale_usability.model_product_template
|
||||
msgid "Product"
|
||||
msgstr "Produit"
|
||||
|
||||
#. module: sale_usability
|
||||
#: model:ir.model.fields,field_description:sale_usability.field_sale_order_line__product_barcode
|
||||
msgid "Product Barcode"
|
||||
@@ -331,17 +219,7 @@ msgstr "Code barre du produit"
|
||||
#. module: sale_usability
|
||||
#: model:ir.ui.menu,name:sale_usability.product_category_sale_menu
|
||||
msgid "Product Categories"
|
||||
msgstr "Catégories d'articles"
|
||||
|
||||
#. 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"
|
||||
msgstr "Catégories de produit"
|
||||
|
||||
#. module: sale_usability
|
||||
#: 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"
|
||||
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
|
||||
#: model:ir.model,name:sale_usability.model_sale_order
|
||||
msgid "Sales Order"
|
||||
msgstr "Bon de commande client"
|
||||
msgstr "Bon de commande"
|
||||
|
||||
#. module: sale_usability
|
||||
#: 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_template__sale_line_warn
|
||||
msgid "Sales Order Line"
|
||||
msgstr "Ligne de bons de commande"
|
||||
msgstr "Ligne de commande"
|
||||
|
||||
#. module: sale_usability
|
||||
#: 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_users__sale_warn
|
||||
msgid ""
|
||||
"Selecting the \"Warning\" option will notify user with the message, Selecting \"Blocking Message\" will throw an "
|
||||
"exception with the message and block the flow. The Message has to be written in the next field."
|
||||
"Selecting the \"Warning\" option will notify user with the message, "
|
||||
"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 ""
|
||||
"Sélectionner l'option 'Avertissement' informera l'utilisateur du Message. Sélectionner 'Message Bloquant' lancera une "
|
||||
"exception avec le message et bloquera le flux. Le message doit être écrit dans le champ suivant."
|
||||
"Sélectionner l'option 'Avertissement' affichera le message à l'utilisateur. "
|
||||
"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
|
||||
#: model_terms:ir.ui.view,arch_db:sale_usability.view_order_form
|
||||
msgid "Send Order Acknowledgement"
|
||||
msgstr "Confirmation de commande"
|
||||
msgstr "Envoyer une confirmation de commande"
|
||||
|
||||
#. module: sale_usability
|
||||
#: model_terms:ir.ui.view,arch_db:sale_usability.view_sales_order_filter
|
||||
@@ -412,16 +272,10 @@ msgstr "État"
|
||||
#. module: sale_usability
|
||||
#: model:ir.model.fields,field_description:sale_usability.field_sale_order__amount_tax
|
||||
msgid "Taxes"
|
||||
msgstr "Taxes"
|
||||
|
||||
#. 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."
|
||||
msgstr ""
|
||||
|
||||
#. 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_template__service_type
|
||||
msgid "Track Service"
|
||||
msgstr "Opérateur de suivi"
|
||||
msgstr "Suivre le service"
|
||||
|
||||
@@ -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
|
||||
|
@@ -10,7 +10,7 @@
|
||||
<!-- This is in the sale_usability module instead of the product_usability module
|
||||
because the parent menu entry is in the sale module -->
|
||||
<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="view_mode">tree,form</field>
|
||||
<field name="context">{'product_pricelist_item_main_view': True}</field>
|
||||
|
||||
@@ -2,94 +2,12 @@
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import api, models, fields, _
|
||||
from odoo.tools import float_compare
|
||||
from odoo.exceptions import UserError
|
||||
from odoo import models, fields
|
||||
|
||||
|
||||
class SaleInvoiceDiscountAllLines(models.TransientModel):
|
||||
_name = 'sale.invoice.discount.all.lines'
|
||||
_description = 'Apply discount on all lines of a sale order or invoice'
|
||||
|
||||
@api.model
|
||||
def default_get(self, fields_list):
|
||||
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)))
|
||||
_description = 'None'
|
||||
# Remove because this feature is now mostly native
|
||||
# TODO 04/07/2024 remove later to avoid ORM bug: it crashes when reloading module
|
||||
# KeyError: 'sale.invoice.discount.all.lines'
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user