diff --git a/rma/__manifest__.py b/rma/__manifest__.py
index 015ed11d1..d9acd35bf 100644
--- a/rma/__manifest__.py
+++ b/rma/__manifest__.py
@@ -19,6 +19,11 @@
"data/rma_operation.xml",
"report/rma_report.xml",
"report/rma_report_templates.xml",
+ "report/report_deliveryslip.xml",
+ "wizards/rma_make_picking_view.xml",
+ "wizards/rma_add_stock_move_view.xml",
+ "wizards/rma_make_supplier_rma_view.xml",
+ "wizards/rma_add_serial_views.xml",
"views/rma_order_view.xml",
"views/rma_operation_view.xml",
"views/rma_order_line_view.xml",
@@ -28,11 +33,6 @@
"views/res_partner_view.xml",
"views/res_config_settings_views.xml",
"views/rma_menu.xml",
- "wizards/rma_make_picking_view.xml",
- "wizards/rma_add_stock_move_view.xml",
- "wizards/rma_order_line_make_supplier_rma_view.xml",
- "report/report_deliveryslip.xml",
- "wizards/rma_add_serial_views.xml",
],
"installable": True,
"application": True,
diff --git a/rma/i18n/es.po b/rma/i18n/es.po
index 29e59b710..f1989f261 100644
--- a/rma/i18n/es.po
+++ b/rma/i18n/es.po
@@ -1459,7 +1459,7 @@ msgstr "Ajustes"
#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form
-msgid "Shipments"
+msgid "Incoming Shipments"
msgstr "Envíos"
#. module: rma
diff --git a/rma/i18n/fr.po b/rma/i18n/fr.po
new file mode 100644
index 000000000..c0fa79832
--- /dev/null
+++ b/rma/i18n/fr.po
@@ -0,0 +1,1867 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * rma
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 16.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-09-16 14:24+0000\n"
+"PO-Revision-Date: 2024-09-16 14:24+0000\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__out_shipment_count
+msgid "# of Deliveries"
+msgstr "# de Livraisons"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__out_shipment_count
+msgid "# of Outgoing Shipments"
+msgstr "# d'Expéditions sortantes"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__line_count
+msgid "# of RMA lines"
+msgstr "# de lignes RMA"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__rma_line_count
+msgid "# of RMA lines associated"
+msgstr "# de lignes RMA associées"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__in_shipment_count
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__in_shipment_count
+msgid "# of Shipments"
+msgstr "# d'Expéditions"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__supplier_line_count
+msgid "# of Supplier RMAs"
+msgstr "# de RMAs Fournisseur"
+
+#. module: rma
+#: model:ir.actions.report,print_report_name:rma.rma_order_line_report
+msgid "('RMA - %s' % (object.name))"
+msgstr ""
+
+#. module: rma
+#: model:ir.actions.report,print_report_name:rma.rma_order_report
+msgid "('RMA Group - %s' % (object.name))"
+msgstr ""
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document
+msgid "Contact Person:"
+msgstr "Personne à contacter:"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document
+msgid "Date Ordered:"
+msgstr "Date de commande:"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document
+msgid "Operation:"
+msgstr "Opération:"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document
+msgid "Origin Reference:"
+msgstr "Référence Source:"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.report_delivery_document
+msgid "RMA"
+msgstr ""
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document
+msgid "Reference:"
+msgstr "Référence:"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document
+msgid "Shipping address:"
+msgstr "Adresse de livraison:"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__message_needaction
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_needaction
+msgid "Action Needed"
+msgstr "Action nécessaire"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_operation__active
+msgid "Active"
+msgstr ""
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form
+msgid "Add From Stock Move"
+msgstr "Ajouter à partir des mouvements de stock"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+msgid "Add Lot/Serial Numbers"
+msgstr "Ajouter des numéros de lot/série"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form
+msgid "Add Lot/Serial numbers"
+msgstr "Ajouter des numéros de lot/série"
+
+#. module: rma
+#: model:ir.actions.act_window,name:rma.action_rma_add_serial_wiz_supplier
+msgid "Add from Lot/Serial Number"
+msgstr "Ajouter à partir des numéros de lot/série"
+
+#. module: rma
+#: model:ir.actions.act_window,name:rma.action_rma_add_serial_wiz_customer
+msgid "Add from Lot/Serial Numbers"
+msgstr "Ajouter à partir des numéros de lot/série"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/wizards/rma_add_stock_move.py:0
+#: model:ir.actions.act_window,name:rma.action_rma_add_stock_move_customer
+#: model:ir.actions.act_window,name:rma.action_rma_add_stock_move_supplier
+#, python-format
+msgid "Add from Stock Move"
+msgstr "Ajouter à partir d'un transfert de stock"
+
+#. module: rma
+#: model:ir.model.fields,help:rma.field_rma_order_line__name
+#: model:ir.model.fields,help:rma.field_rma_order_line_make_supplier_rma_item__name
+msgid "Add here the supplier RMA #. Otherwise an internal code is assigned."
+msgstr ""
+"Ajoutez ici le # RMA du fournisseur. Sinon, un code interne est attribué."
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__comment
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document
+msgid "Additional Information"
+msgstr "Informations Complémentaires"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+msgid "Additional information will be printed in RMA group report."
+msgstr "Des informations supplémentaires seront imprimées dans le rapport du groupe RMA"
+
+#. module: rma
+#: model:ir.model.fields,help:rma.field_rma_order__customer_address_id
+#: model:ir.model.fields,help:rma.field_rma_order_line__customer_address_id
+msgid "Address of the customer in case of Supplier RMA operation dropship."
+msgstr "Adresse du client en cas de dropship pour le RMA fournisseur."
+
+#. module: rma
+#: model:ir.model.fields,help:rma.field_rma_order__supplier_address_id
+#: model:ir.model.fields,help:rma.field_rma_order_line__supplier_address_id
+msgid "Address of the supplier in case of Customer RMA operation dropship."
+msgstr "Adresse du fournisseur en cas de dropship pour le RMA client."
+
+#. module: rma
+#: model:res.groups,name:rma.group_rma_delivery_invoice_address
+msgid "Addresses in RMA"
+msgstr "Adresse dans le RMA"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/models/rma_order.py:0
+#, python-format
+msgid "All grouped RMA's should have same partner."
+msgstr "Tous les RMA regroupés doivent avoir le même partenaire."
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "Approve"
+msgstr "Approuver"
+
+#. module: rma
+#: model:ir.model.fields.selection,name:rma.selection__rma_order__state__approved
+#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__state__approved
+msgid "Approved"
+msgstr "Approuvé"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.rma_operation_form
+msgid "Archived"
+msgstr "Archivé"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__assigned_to
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__assigned_to
+msgid "Assigned To"
+msgstr "Assigné à"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__message_attachment_count
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_attachment_count
+msgid "Attachment Count"
+msgstr "Nbre de pièces jointes"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "Back to Approved"
+msgstr "Retour à Approuvé"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "Back to Draft"
+msgstr "Remettre en brouillon"
+
+#. module: rma
+#: model:ir.model.fields.selection,name:rma.selection__rma_operation__receipt_policy__delivered
+#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__receipt_policy__delivered
+msgid "Based on Delivered Quantities"
+msgstr "Basé sur les quantités livrées"
+
+#. module: rma
+#: model:ir.model.fields.selection,name:rma.selection__rma_operation__delivery_policy__ordered
+#: model:ir.model.fields.selection,name:rma.selection__rma_operation__receipt_policy__ordered
+#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__delivery_policy__ordered
+#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__receipt_policy__ordered
+msgid "Based on Ordered Quantities"
+msgstr "Basé sur les quantités commandées"
+
+#. module: rma
+#: model:ir.model.fields.selection,name:rma.selection__rma_operation__delivery_policy__received
+#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__delivery_policy__received
+msgid "Based on Received Quantities"
+msgstr "Basé sur les quantités reçues"
+
+#. module: rma
+#: model:ir.actions.server,name:rma.action_request_cancel_rma_order_line
+#: model:ir.model.fields.selection,name:rma.selection__rma_order__state__cancel
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_order_line_make_supplier_rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking_out
+msgid "Cancel"
+msgstr "Annuler"
+
+#. module: rma
+#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__state__canceled
+msgid "Canceled"
+msgstr "Annulé"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_operation__code
+msgid "Code"
+msgstr ""
+
+#. module: rma
+#: model:ir.model,name:rma.model_res_company
+msgid "Companies"
+msgstr "Sociétés"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_operation__company_id
+#: model:ir.model.fields,field_description:rma.field_rma_order__company_id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__company_id
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "Company"
+msgstr "Société"
+
+#. module: rma
+#: model:ir.model,name:rma.model_res_config_settings
+msgid "Config Settings"
+msgstr "Paramètres de configuration"
+
+#. module: rma
+#: model:ir.ui.menu,name:rma.menu_rma_config
+msgid "Configuration"
+msgstr ""
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking_out
+msgid "Confirm"
+msgstr "Confirmer"
+
+#. module: rma
+#: model:ir.model,name:rma.model_res_partner
+msgid "Contact"
+msgstr ""
+
+#. module: rma
+#: model:ir.actions.act_window,name:rma.action_rma_picking_out
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_button_form
+msgid "Create Delivery"
+msgstr "Créer une Livraison"
+
+#. module: rma
+#: model:ir.actions.act_window,name:rma.action_rma_picking_in
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_button_form
+msgid "Create Incoming Shipment"
+msgstr "Créer une Réception"
+
+#. module: rma
+#: model:ir.actions.act_window,name:rma.action_make_supplier_rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_order_line_make_supplier_rma
+msgid "Create Supplier RMA"
+msgstr "Créer RMA Fournisseur"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_order_line_make_supplier_rma
+msgid "Create/Update Supplier RMA"
+msgstr "Créer/Mettre à jour RMA Fournisseur"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__create_uid
+#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__create_uid
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__create_uid
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__create_uid
+#: model:ir.model.fields,field_description:rma.field_rma_make_supplier_rma__create_uid
+#: model:ir.model.fields,field_description:rma.field_rma_operation__create_uid
+#: model:ir.model.fields,field_description:rma.field_rma_order__create_uid
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__create_uid
+#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__create_uid
+msgid "Created by"
+msgstr "Créé par"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__create_date
+#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__create_date
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__create_date
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__create_date
+#: model:ir.model.fields,field_description:rma.field_rma_make_supplier_rma__create_date
+#: model:ir.model.fields,field_description:rma.field_rma_operation__create_date
+#: model:ir.model.fields,field_description:rma.field_rma_order__create_date
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__create_date
+#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__create_date
+msgid "Created on"
+msgstr "Créé le"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__currency_id
+msgid "Currency"
+msgstr "Devise"
+
+#. module: rma
+#: model:ir.model.fields.selection,name:rma.selection__rma_operation__type__customer
+#: model:ir.model.fields.selection,name:rma.selection__rma_order__type__customer
+#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__type__customer
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_tree
+msgid "Customer"
+msgstr "Client"
+
+#. module: rma
+#: model:stock.picking.type,name:rma.picking_type_rma_dropship_return
+msgid "Customer -> Supplier"
+msgstr "Client -> Fournisseur"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__customer_address_id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__customer_address_id
+msgid "Customer Address"
+msgstr "Adresse Client"
+
+#. module: rma
+#: model:ir.actions.act_window,name:rma.action_rma_operation_customer
+#: model:ir.ui.menu,name:rma.menu_rma_operation_customer
+msgid "Customer Operations"
+msgstr "Opérations Client"
+
+#. module: rma
+#: model:ir.actions.act_window,name:rma.action_rma_customer_lines
+#: model:ir.ui.menu,name:rma.menu_customer_rma
+#: model:ir.ui.menu,name:rma.menu_rma_line_customer
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_supplier_form
+msgid "Customer RMA"
+msgstr "RMA Client"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/models/stock_warehouse.py:0
+#, python-format
+msgid "Customer RMA Deliveries"
+msgstr "Livraisons RMA Client"
+
+#. module: rma
+#: model:ir.actions.act_window,name:rma.action_rma_customer
+#: model:ir.ui.menu,name:rma.menu_rma_act_customer
+msgid "Customer RMA Group"
+msgstr "Groupe RMA Client"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/models/stock_warehouse.py:0
+#, python-format
+msgid "Customer RMA Receipts"
+msgstr "Réceptions RMA Client"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__customer_rma_id
+msgid "Customer RMA line"
+msgstr "Ligne RMA Client"
+
+#. module: rma
+#: model:stock.picking.type,name:rma.picking_type_rma_cust_in
+#: model:stock.rule,name:rma.rule_rma_customer_in_pull
+msgid "Customer → RMA"
+msgstr "Client → RMA"
+
+#. module: rma
+#: model:stock.rule,name:rma.rule_rma_dropship_return
+msgid "Customer → Supplier"
+msgstr "Client → Fournisseur"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document
+msgid "Customer:"
+msgstr "Client:"
+
+#. module: rma
+#: model:ir.ui.menu,name:rma.rma_res_partner_menu_customer
+msgid "Customers"
+msgstr "Clients"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer
+msgid "Date"
+msgstr ""
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__operation_default_id
+msgid "Default Operation Type"
+msgstr "Type d'opération par défaut"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_product_category__rma_customer_operation_id
+#: model:ir.model.fields,field_description:rma.field_product_product__rma_customer_operation_id
+#: model:ir.model.fields,field_description:rma.field_product_template__rma_customer_operation_id
+msgid "Default RMA Customer Operation"
+msgstr "Opération RMA Client par défaut"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_product_category__rma_supplier_operation_id
+#: model:ir.model.fields,field_description:rma.field_product_product__rma_supplier_operation_id
+#: model:ir.model.fields,field_description:rma.field_product_template__rma_supplier_operation_id
+msgid "Default RMA Supplier Operation"
+msgstr "Opération RMA Fournisseur par défaut"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__partner_shipping_id
+msgid "Deliver To"
+msgstr "Livrer à"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "Deliveries"
+msgstr "Livraisons"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_operation__delivery_policy
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__delivery_policy
+msgid "Delivery Policy"
+msgstr "Politique de livraison"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_operation__name
+#: model:ir.model.fields,field_description:rma.field_rma_order__description
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__description
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document
+#: model_terms:ir.ui.view,arch_db:rma.rma_operation_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "Description"
+msgstr ""
+
+#. module: rma
+#: model:ir.model.fields,help:rma.field_res_company__group_rma_delivery_address
+#: model:ir.model.fields,help:rma.field_res_config_settings__group_rma_delivery_address
+msgid "Display 3 fields on rma: partner, invoice address, delivery address"
+msgstr ""
+"Afficher 3 champs sur RMA : partenaire, adresse de facturation, adresse de "
+"livraison"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form
+msgid "Display 3 fields on rma: partner, invoice address, delivery address."
+msgstr ""
+"Afficher 3 champs sur RMA : partenaire, adresse de facturation, adresse de "
+"livraison"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__display_name
+#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__display_name
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__display_name
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__display_name
+#: model:ir.model.fields,field_description:rma.field_rma_make_supplier_rma__display_name
+#: model:ir.model.fields,field_description:rma.field_rma_operation__display_name
+#: model:ir.model.fields,field_description:rma.field_rma_order__display_name
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__display_name
+#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__display_name
+msgid "Display Name"
+msgstr "Afficher le nom"
+
+#. module: rma
+#: model:ir.model.fields.selection,name:rma.selection__rma_order__state__done
+#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__state__done
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "Done"
+msgstr "Fait"
+
+#. module: rma
+#: model:ir.model.fields.selection,name:rma.selection__rma_order__state__draft
+#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__state__draft
+msgid "Draft"
+msgstr "Brouillon"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form
+msgid "Enable RMA invoicing"
+msgstr "Activer la facturation RMA"
+
+#. module: rma
+#: model:ir.model.fields,help:rma.field_rma_order_line__product_tracking
+msgid "Ensure the traceability of a storable product in your warehouse."
+msgstr "Assurez la traçabilité d’un produit stockable dans votre entrepôt."
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/wizards/rma_make_supplier_rma.py:0
+#, python-format
+msgid "Enter a positive quantity."
+msgstr "Entrez une quantité positive"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/wizards/rma_make_supplier_rma.py:0
+#, python-format
+msgid "Enter a supplier."
+msgstr "Entrez un fournisseur"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_order_line_make_supplier_rma
+msgid "Existing Supplier RMA to update:"
+msgstr "Mettre à jour RMA Fournisseur existant:"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__message_follower_ids
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_follower_ids
+msgid "Followers"
+msgstr ""
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__message_partner_ids
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_partner_ids
+msgid "Followers (Partners)"
+msgstr ""
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "General"
+msgstr "Générale"
+
+#. module: rma
+#: model:ir.model.fields,help:rma.field_rma_order_line__sequence
+msgid "Gives the sequence of this line when displaying the rma."
+msgstr "Donne la séquence de cette ligne lors de l'affichage du RMA."
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_filter
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter
+msgid "Group By"
+msgstr "Grouper par"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__name
+msgid "Group Number"
+msgstr "Numéro de groupe"
+
+#. module: rma
+#: model:ir.model.fields,help:rma.field_res_company__group_rma_lines
+#: model:ir.model.fields,help:rma.field_res_config_settings__group_rma_lines
+#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form
+msgid "Group RMA lines in one RMA group"
+msgstr "Regrouper les lignes RMA dans un RMA Group"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/models/rma_order.py:0
+#: code:addons/rma/models/rma_order_line.py:0
+#, python-format
+msgid "Group partner and RMA's partner must be the same."
+msgstr ""
+"Le partenaire du groupe et le partenaire de RMA doivent être identiques."
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__has_message
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__has_message
+msgid "Has Message"
+msgstr "A un message"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__id
+#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__id
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__id
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__id
+#: model:ir.model.fields,field_description:rma.field_rma_make_supplier_rma__id
+#: model:ir.model.fields,field_description:rma.field_rma_operation__id
+#: model:ir.model.fields,field_description:rma.field_rma_order__id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__id
+msgid "ID"
+msgstr ""
+
+#. module: rma
+#: model:ir.model.fields,help:rma.field_rma_order__message_needaction
+#: model:ir.model.fields,help:rma.field_rma_order_line__message_needaction
+msgid "If checked, new messages require your attention."
+msgstr ""
+"Si cette case est cochée, les nouveaux messages nécessitent votre attention."
+
+#. module: rma
+#: model:ir.model.fields,help:rma.field_rma_order__message_has_error
+#: model:ir.model.fields,help:rma.field_rma_order__message_has_sms_error
+#: model:ir.model.fields,help:rma.field_rma_order_line__message_has_error
+#: model:ir.model.fields,help:rma.field_rma_order_line__message_has_sms_error
+msgid "If checked, some messages have a delivery error."
+msgstr "Si coché, certains messages ont une erreur de livraison."
+
+#. module: rma
+#: model:ir.model.fields,help:rma.field_stock_warehouse__rma_in_this_wh
+msgid ""
+"If set, it will create RMA location, picking types and routes for this "
+"warehouse."
+msgstr ""
+"S'il est défini, il créera un emplacement RMA, des picking types et des "
+"routes pour cet entrepôt."
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.rma_operation_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "Inbound"
+msgstr "Entrant"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_operation__in_route_id
+#: model:ir.model.fields,field_description:rma.field_rma_order__in_route_id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__in_route_id
+msgid "Inbound Route"
+msgstr "Route entrante"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_operation__in_warehouse_id
+#: model:ir.model.fields,field_description:rma.field_rma_order__in_warehouse_id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__in_warehouse_id
+msgid "Inbound Warehouse"
+msgstr "Entrepôt entrant"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_incoming
+msgid "Incoming Qty"
+msgstr "Quantité entrante"
+
+#. module: rma
+#: model:ir.model,name:rma.model_stock_route
+msgid "Inventory Routes"
+msgstr "Routes logistiques"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__message_is_follower
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_is_follower
+msgid "Is Follower"
+msgstr "Est Follower"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__item_ids
+#: model:ir.model.fields,field_description:rma.field_rma_make_supplier_rma__item_ids
+msgid "Items"
+msgstr "Articles"
+
+#. module: rma
+#: model:ir.model,name:rma.model_rma_make_picking_wizard_item
+msgid "Items to receive"
+msgstr "Articles à recevoir"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz____last_update
+#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move____last_update
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard____last_update
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item____last_update
+#: model:ir.model.fields,field_description:rma.field_rma_make_supplier_rma____last_update
+#: model:ir.model.fields,field_description:rma.field_rma_operation____last_update
+#: model:ir.model.fields,field_description:rma.field_rma_order____last_update
+#: model:ir.model.fields,field_description:rma.field_rma_order_line____last_update
+#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item____last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__write_uid
+#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__write_uid
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__write_uid
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__write_uid
+#: model:ir.model.fields,field_description:rma.field_rma_make_supplier_rma__write_uid
+#: model:ir.model.fields,field_description:rma.field_rma_operation__write_uid
+#: model:ir.model.fields,field_description:rma.field_rma_order__write_uid
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__write_uid
+#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__write_uid
+msgid "Last Updated by"
+msgstr ""
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__write_date
+#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__write_date
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__write_date
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__write_date
+#: model:ir.model.fields,field_description:rma.field_rma_make_supplier_rma__write_date
+#: model:ir.model.fields,field_description:rma.field_rma_operation__write_date
+#: model:ir.model.fields,field_description:rma.field_rma_order__write_date
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__write_date
+#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__write_date
+msgid "Last Updated on"
+msgstr ""
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__lot_id
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document
+msgid "Lot/Serial Number"
+msgstr "Numéro Lot/Série"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/wizards/rma_add_serial.py:0
+#, python-format
+msgid "Lot/Serial Number %s already added."
+msgstr "Numéro de lot/série %s déjà ajouté."
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__lot_domain_ids
+msgid "Lots Domain"
+msgstr "Domaine de lots"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__lot_ids
+#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__lot_ids
+msgid "Lots/Serials selected"
+msgstr "Lots/séries sélectionnés"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__message_main_attachment_id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_main_attachment_id
+msgid "Main Attachment"
+msgstr "Pièce jointe principale"
+
+#. module: rma
+#: model:ir.ui.menu,name:rma.menu_rma_rma_control
+msgid "Master Data"
+msgstr "Données de base"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__message_has_error
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_has_error
+msgid "Message Delivery error"
+msgstr "Message d'erreur de livraison"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__message_ids
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_ids
+msgid "Messages"
+msgstr ""
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter
+msgid "My RMAs"
+msgstr "Mes RMAs"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_order_line_make_supplier_rma
+msgid "New RMA details:"
+msgstr "Nouveaux détails RMA:"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/wizards/rma_make_picking.py:0
+#, python-format
+msgid "No deliveries needed for this operation"
+msgstr "Aucune livraison nécessaire pour cette opération"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/wizards/rma_make_picking.py:0
+#, python-format
+msgid "No quantity to transfer on %(arg1)s shipment of product %(arg2)s."
+msgstr ""
+"Aucune quantité à transférer lors de l'expédition %(arg1)s du produit "
+"%(arg2)s."
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/wizards/rma_make_picking.py:0
+#, python-format
+msgid "No route specified"
+msgstr "Aucune route spécifiée"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/models/procurement_group.py:0
+#, python-format
+msgid ""
+"No rule found for this product %(product)s and location %(location)s that is"
+" valid for RMA operations."
+msgstr ""
+"Aucune règle trouvée pour ce produit %(product)s et cet emplacement "
+"%(location)s qui soit valide pour les opérations RMA."
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/wizards/rma_make_picking.py:0
+#, python-format
+msgid "No shipments needed for this operation"
+msgstr "Aucun envoi nécessaire pour cette opération"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/wizards/rma_make_picking.py:0
+#, python-format
+msgid "No warehouse specified"
+msgstr "Aucun entrepôt spécifié"
+
+#. module: rma
+#: model:ir.model.fields.selection,name:rma.selection__rma_operation__delivery_policy__no
+#: model:ir.model.fields.selection,name:rma.selection__rma_operation__receipt_policy__no
+#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__delivery_policy__no
+#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__receipt_policy__no
+msgid "Not required"
+msgstr "Non requis"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__message_needaction_counter
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_needaction_counter
+msgid "Number of Actions"
+msgstr "Nbre d'actions"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__message_has_error_counter
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_has_error_counter
+msgid "Number of errors"
+msgstr "Nbre d'erreurs"
+
+#. module: rma
+#: model:ir.model.fields,help:rma.field_rma_order__message_needaction_counter
+#: model:ir.model.fields,help:rma.field_rma_order_line__message_needaction_counter
+msgid "Number of messages requiring action"
+msgstr "Nombre de messages nécessitant une action"
+
+#. module: rma
+#: model:ir.model.fields,help:rma.field_rma_order__message_has_error_counter
+#: model:ir.model.fields,help:rma.field_rma_order_line__message_has_error_counter
+msgid "Number of messages with delivery error"
+msgstr "Nbre de messages avec erreur de livraison"
+
+#. module: rma
+#: model:ir.model.fields.selection,name:rma.selection__product_category__rma_approval_policy__one_step
+msgid "One step"
+msgstr "Une étape"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/wizards/rma_make_picking.py:0
+#, python-format
+msgid "Only RMA lines from the same partner can be processed at the same time"
+msgstr ""
+"Seules les lignes RMA du même partenaire peuvent être traitées en même temps"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/wizards/rma_make_supplier_rma.py:0
+#, python-format
+msgid ""
+"Only RMA lines from the same supplier can be processed at the same time"
+msgstr ""
+"Seules les lignes RMA d'un même fournisseur peuvent être traitées en même "
+"temps"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__operation_id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__operation_id
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter
+msgid "Operation"
+msgstr "Opération"
+
+#. module: rma
+#: model:ir.model.fields,help:rma.field_product_category__rma_approval_policy
+#: model:ir.model.fields,help:rma.field_product_product__rma_approval_policy
+#: model:ir.model.fields,help:rma.field_product_template__rma_approval_policy
+msgid ""
+"Options: \n"
+" * One step: Always auto-approve RMAs that only contain products within categories with this policy.\n"
+"* Two steps: A RMA containing a product within a category with this policy will request the RMA manager approval."
+msgstr ""
+"Options: \n"
+" * Une étape: approuvez toujours automatiquement les RMA qui contiennent uniquement des produits appartenant à des catégories avec cette politique.\n"
+"* Deux étapes: un RMA contenant un produit dans une catégorie avec cette politique demandera l'approbation du responsable RMA."
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__date_rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__date_rma
+msgid "Order Date"
+msgstr "Date commande"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "Origin"
+msgstr "Origine"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__reference_move_id
+msgid "Originating Stock Move"
+msgstr "Mouvement de stock d'origine"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "Other Info"
+msgstr "Autres Infos"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.rma_operation_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form
+msgid "Outbound"
+msgstr "Sortant"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_operation__out_route_id
+#: model:ir.model.fields,field_description:rma.field_rma_order__out_route_id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__out_route_id
+msgid "Outbound Route"
+msgstr "Route sortante"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_operation__out_warehouse_id
+#: model:ir.model.fields,field_description:rma.field_rma_order__out_warehouse_id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__out_warehouse_id
+msgid "Outbound Warehouse"
+msgstr "Entrepôt sortant"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_outgoing
+msgid "Outgoing Qty"
+msgstr "Quantité sortante"
+
+#. module: rma
+#: model:ir.model,name:rma.model_stock_quant_package
+msgid "Packages"
+msgstr "Colis"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__partner_id
+#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__partner_id
+#: model:ir.model.fields,field_description:rma.field_rma_order__partner_id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__partner_id
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_filter
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter
+msgid "Partner"
+msgstr "Partenaire"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__reference
+msgid "Partner Reference"
+msgstr "Référence du partenaire"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__delivery_address_id
+msgid "Partner delivery address"
+msgstr "Adresse de livraison du partenaire"
+
+#. module: rma
+#: model:ir.ui.menu,name:rma.menu_rma_config_partners
+msgid "Partners"
+msgstr "Partenaires"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/wizards/rma_add_serial.py:0
+#: code:addons/rma/wizards/rma_add_stock_move.py:0
+#: code:addons/rma/wizards/rma_make_supplier_rma.py:0
+#, python-format
+msgid "Please define a warehouse with a default RMA location"
+msgstr "Veuillez définir un entrepôt avec un emplacement RMA par défaut"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/models/rma_order_line.py:0
+#, python-format
+msgid "Please define a warehouse with a default RMA location."
+msgstr "Veuillez définir un entrepôt avec un emplacement RMA par défaut."
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/wizards/rma_add_serial.py:0
+#: code:addons/rma/wizards/rma_add_stock_move.py:0
+#: code:addons/rma/wizards/rma_make_supplier_rma.py:0
+#, python-format
+msgid "Please define an RMA route"
+msgstr "Veuillez définir une route RMA"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/models/rma_order_line.py:0
+#, python-format
+msgid "Please define an RMA route."
+msgstr "Veuillez définir une route RMA"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/wizards/rma_add_serial.py:0
+#: code:addons/rma/wizards/rma_add_stock_move.py:0
+#, python-format
+msgid "Please define an operation first"
+msgstr "Veuillez d'abord définir une opération"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/models/rma_order_line.py:0
+#, python-format
+msgid "Please define an operation first."
+msgstr "Veuillez d'abord définir une opération."
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.rma_operation_form
+msgid "Policies"
+msgstr "Stratégies"
+
+#. module: rma
+#: model:ir.model,name:rma.model_procurement_group
+msgid "Procurement Group"
+msgstr "Groupe d'approvisionnement"
+
+#. module: rma
+#: model:ir.model,name:rma.model_product_template
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__product_id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__product_id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__product_id
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter
+msgid "Product"
+msgstr "Produit"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/models/rma_order_line.py:0
+#, python-format
+msgid ""
+"Product %s has serial tracking configuration, quantity to receive should be "
+"1"
+msgstr ""
+"Le produit %s est configuré par numéro de série, la quantité à recevoir doit"
+" être de 1"
+
+#. module: rma
+#: model:ir.model,name:rma.model_product_category
+msgid "Product Category"
+msgstr "Catégorie de produit"
+
+#. module: rma
+#: model:ir.ui.menu,name:rma.rma_product_product_menu
+msgid "Product Variants"
+msgstr "Variantes de produits"
+
+#. module: rma
+#: model:ir.ui.menu,name:rma.menu_rma_config_stock
+msgid "Products"
+msgstr "Produits"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_delivered
+msgid "Qty Delivered"
+msgstr "Qté livrée"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_received
+msgid "Qty Received"
+msgstr "Qté reçue"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__qty_to_deliver
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_to_deliver
+msgid "Qty To Deliver"
+msgstr "Qté à livrer"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__qty_to_receive
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_to_receive
+msgid "Qty To Receive"
+msgstr "Qté à recevoir"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_in_supplier_rma
+msgid "Qty in Supplier RMA"
+msgstr "Qté dans RMA Fournisseur"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_to_supplier_rma
+msgid "Qty to send to Supplier RMA"
+msgstr "Qté à envoyer au RMA Fournisseur"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "Quantities"
+msgstr "Quantités"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__product_qty
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "Quantity"
+msgstr "quantité"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__product_qty
+msgid "Quantity Ordered"
+msgstr "Quantité commandée"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__qty_to_deliver
+msgid "Quantity To Deliver"
+msgstr "Quantité à livrer"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__qty_to_receive
+msgid "Quantity to Receive"
+msgstr "Quantité à recevoir"
+
+#. module: rma
+#: model:ir.actions.report,name:rma.rma_order_line_report
+#: model:ir.model,name:rma.model_rma_order_line
+#: model:ir.model.fields,field_description:rma.field_procurement_group__rma_id
+#: model:ir.module.category,name:rma.module_category_rma
+#: model:ir.ui.menu,name:rma.menu_rma_root
+#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+msgid "RMA"
+msgstr ""
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/wizards/rma_make_picking.py:0
+#, python-format
+msgid "RMA %s is not approved"
+msgstr "RMA %s n'est pas approuvé"
+
+#. module: rma
+#: model:stock.picking.type,name:rma.picking_type_rma_sup_out
+msgid "RMA -> Supplier"
+msgstr "RMA -> Fournisseur"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_product_category__rma_approval_policy
+#: model:ir.model.fields,field_description:rma.field_product_product__rma_approval_policy
+#: model:ir.model.fields,field_description:rma.field_product_template__rma_approval_policy
+msgid "RMA Approval Policy"
+msgstr "Politique d'approbation RMA"
+
+#. module: rma
+#: model:stock.route,name:rma.route_rma_customer
+msgid "RMA Customer"
+msgstr "RMA Client"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_customer_in_pull_id
+msgid "RMA Customer In Rule"
+msgstr "Règle d'entrée RMA Client"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_customer_out_pull_id
+msgid "RMA Customer Out Rule"
+msgstr "Règle de sortie RMA Client"
+
+#. module: rma
+#: model:res.groups,name:rma.group_rma_customer_user
+msgid "RMA Customer User"
+msgstr "Utilisateur RMA Client"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_cust_in_type_id
+msgid "RMA Customer in Type"
+msgstr "Type d'entrée RMA Client"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_cust_out_type_id
+msgid "RMA Customer out Type"
+msgstr "Type de sortie RMA Client"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_filter
+msgid "RMA Date"
+msgstr "Date RMA"
+
+#. module: rma
+#: model:stock.route,name:rma.route_rma_dropship
+msgid "RMA Dropship"
+msgstr ""
+
+#. module: rma
+#: model:ir.actions.report,name:rma.rma_order_report
+#: model:ir.model,name:rma.model_rma_order
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__rma_id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__rma_id
+msgid "RMA Group"
+msgstr "Groupe RMA"
+
+#. module: rma
+#: model:res.groups,name:rma.group_rma_groups
+msgid "RMA Groups"
+msgstr ""
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__line_id
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "RMA Line"
+msgstr "Ligne RMA"
+
+#. module: rma
+#: model:ir.model,name:rma.model_rma_order_line_make_supplier_rma_item
+msgid "RMA Line Make Supplier RMA Item"
+msgstr "Ligne RMA Crée ligne de RMA Fournisseur"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+msgid "RMA Lines"
+msgstr "Lignes RMA"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_stock_warehouse__lot_rma_id
+msgid "RMA Location"
+msgstr "Emplacement RMA"
+
+#. module: rma
+#: model:res.groups,name:rma.group_rma_manager
+msgid "RMA Manager"
+msgstr "Responsable RMA"
+
+#. module: rma
+#: model:ir.model,name:rma.model_rma_operation
+msgid "RMA Operation"
+msgstr "Opération RMA"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.rma_operation_form
+msgid "RMA Operations"
+msgstr "Opérations RMA"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__rma_id
+#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__rma_id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__rma_id
+msgid "RMA Order"
+msgstr "Commande RMA"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.stock_location_route_form_view_inherit_rma_stock
+msgid "RMA Order Lines"
+msgstr "Lignes de commmande RMA"
+
+#. module: rma
+#: model:stock.route,name:rma.route_rma_supplier
+msgid "RMA Supplier"
+msgstr "RMA Fournisseur"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_supplier_in_pull_id
+msgid "RMA Supplier In Rule"
+msgstr "Règle d'entrée RMA Fournisseur"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_supplier_out_pull_id
+msgid "RMA Supplier Out Rule"
+msgstr "Règle de sortie RMA Fournisseur"
+
+#. module: rma
+#: model:res.groups,name:rma.group_rma_supplier_user
+msgid "RMA Supplier User"
+msgstr "utilisateur RMA Fournisseur"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_sup_in_type_id
+msgid "RMA Supplier in Type"
+msgstr "Type d'entrée RMA Fournisseur"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_sup_out_type_id
+msgid "RMA Supplier out Type"
+msgstr "Type de sortie RMA Fournisseur"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_res_company__group_rma_delivery_address
+#: model:ir.model.fields,field_description:rma.field_res_config_settings__group_rma_delivery_address
+msgid "RMA addresses"
+msgstr "Adresses RMA"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/models/rma_order_line.py:0
+#, python-format
+msgid "RMA customer and originating stock move customer doesn't match."
+msgstr ""
+"Le client RMA et le client du transfert de stock source ne correspondent "
+"pas."
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_in_this_wh
+msgid "RMA in this Warehouse"
+msgstr "RMA dans cet entrepôt"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_res_config_settings__module_rma_account
+msgid "RMA invoicing"
+msgstr "RMA Facturation"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_procurement_group__rma_line_id
+#: model:ir.model.fields,field_description:rma.field_stock_move__rma_line_id
+msgid "RMA line"
+msgstr "Ligne RMA"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_operation__rma_line_ids
+#: model:ir.model.fields,field_description:rma.field_rma_order__rma_line_ids
+msgid "RMA lines"
+msgstr "Lignes RMA"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__line_id
+msgid "RMA order Line"
+msgstr "Ligne de commande RMA"
+
+#. module: rma
+#: model:stock.picking.type,name:rma.picking_type_rma_cust_out
+#: model:stock.rule,name:rma.rule_rma_customer_out_pull
+msgid "RMA → Customer"
+msgstr "RMA → Client"
+
+#. module: rma
+#: model:stock.rule,name:rma.rule_rma_supplier_out_pull
+msgid "RMA → Supplier"
+msgstr "RMA → Fournisseur"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_res_partner__rma_line_ids
+#: model:ir.model.fields,field_description:rma.field_res_users__rma_line_ids
+#: model_terms:ir.ui.view,arch_db:rma.view_partner_form
+msgid "RMAs"
+msgstr ""
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_operation__receipt_policy
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__receipt_policy
+msgid "Receipt Policy"
+msgstr "Politique de réception"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__name
+#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__name
+msgid "Reference"
+msgstr "Référence"
+
+#. module: rma
+#: model:ir.model.fields,help:rma.field_rma_order_line__origin
+msgid "Reference of the document that produced this rma."
+msgstr "Référence du document ayant produit ce RMA."
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+msgid "Rel. RMA Lines"
+msgstr "Rel. lignes RMA"
+
+#. module: rma
+#: model:ir.actions.server,name:rma.action_request_approve_rma_order_line
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "Request Approval"
+msgstr "Demander l'approbation"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__requested_by
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__requested_by
+msgid "Requested By"
+msgstr "Demandé par"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form
+msgid "Return Merchandise Authorization"
+msgstr "Autorisation de retour de marchandise"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__product_qty
+msgid "Return Qty"
+msgstr "Quantité à retourner"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_res_partner__rma_line_count
+#: model:ir.model.fields,field_description:rma.field_res_users__rma_line_count
+msgid "Rma Line Count"
+msgstr "Nbre de lignes RMA"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "Routes"
+msgstr ""
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__message_has_sms_error
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_has_sms_error
+msgid "SMS Delivery error"
+msgstr "SMS Erreur de livraison"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_filter
+msgid "Search RMA"
+msgstr "Rechercher un RMA"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter
+msgid "Search RMA line"
+msgstr "Rechercher une ligne de RMA"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer
+msgid "Select Lot/Serial Numbers to add"
+msgstr "Sélectionnez les numéros de lot/série à ajouter"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier
+msgid "Select Move"
+msgstr "Sélectionner un Transfert"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier
+msgid "Select Stock Moves to add"
+msgstr "Sélectionnez les mouvements de stock à ajouter"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier
+msgid "Select all"
+msgstr "Tout sélectionner"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking_out
+msgid "Select lines for picking"
+msgstr "Sélectionnez les lignes à prélever"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_stock_route__rma_selectable
+msgid "Selectable on RMA Lines"
+msgstr "Sélectionnable sur les lignes RMA"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier
+msgid "Selected Lot/Serial Numbers"
+msgstr "Numéros de lot/série sélectionnés"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_operation__location_id
+#: model:ir.model.fields,field_description:rma.field_rma_order__location_id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__location_id
+msgid "Send To This Company Location"
+msgstr "Envoyer à cet emplacement de l'entreprise"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: rma
+#: model:ir.actions.act_window,name:rma.action_rma_config_settings
+#: model:ir.ui.menu,name:rma.menu_rma_global_settings
+msgid "Settings"
+msgstr "Paramètres"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "Incoming Shipments"
+msgstr "Réceptions"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer
+msgid "Shipping Address"
+msgstr "Adresse d'expédition"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__show_lot_filter
+msgid "Show lot filter?"
+msgstr "Afficher le filtre de lot ?"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__origin
+msgid "Source Document"
+msgstr "Document source"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__state
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__state
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter
+msgid "State"
+msgstr "Statut"
+
+#. module: rma
+#: model:ir.model,name:rma.model_stock_move
+msgid "Stock Move"
+msgstr "Mouvement de stock"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__move_ids
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__move_ids
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "Stock Moves"
+msgstr "Mouvements de stock"
+
+#. module: rma
+#: model:ir.model,name:rma.model_stock_rule
+msgid "Stock Rule"
+msgstr "Règle de stock minimum"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_make_supplier_rma__partner_id
+#: model:ir.model.fields.selection,name:rma.selection__rma_operation__type__supplier
+#: model:ir.model.fields.selection,name:rma.selection__rma_order__type__supplier
+#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__type__supplier
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_supplier
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_supplier_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_tree
+msgid "Supplier"
+msgstr "Fournisseur"
+
+#. module: rma
+#: model:stock.picking.type,name:rma.picking_type_rma_dropship
+msgid "Supplier -> Customer"
+msgstr "Fournisseur -> Client"
+
+#. module: rma
+#: model:stock.picking.type,name:rma.picking_type_rma_sup_in
+msgid "Supplier -> RMA"
+msgstr "Fournisseur -> RMA"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__supplier_address_id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__supplier_address_id
+msgid "Supplier Address"
+msgstr "Adresse Fournisseur"
+
+#. module: rma
+#: model:ir.actions.act_window,name:rma.action_rma_operation_supplier
+#: model:ir.ui.menu,name:rma.menu_rma_operation_supplier
+msgid "Supplier Operations"
+msgstr "Opérations Fournisseur"
+
+#. module: rma
+#: model:ir.actions.act_window,name:rma.action_rma_supplier_lines
+#: model:ir.ui.menu,name:rma.menu_rma_line_supplier
+#: model:ir.ui.menu,name:rma.menu_supplier_rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "Supplier RMA"
+msgstr "RMA Fournisseur"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/models/stock_warehouse.py:0
+#, python-format
+msgid "Supplier RMA Deliveries"
+msgstr "Livraisons RMA Fournisseurs"
+
+#. module: rma
+#: model:ir.actions.act_window,name:rma.action_rma_supplier
+#: model:ir.ui.menu,name:rma.menu_rma_act_supplier
+msgid "Supplier RMA Group"
+msgstr "Groupe RMA Fournisseur"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_make_supplier_rma__supplier_rma_id
+msgid "Supplier RMA Order Group"
+msgstr "Groupe RMA Fournisseur"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/models/stock_warehouse.py:0
+#, python-format
+msgid "Supplier RMA Receipts"
+msgstr "Réceptions RMA Fournisseurs"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__supplier_rma_line_ids
+msgid "Supplier Rma Line"
+msgstr "Ligne RMA Fournisseur"
+
+#. module: rma
+#: model:stock.rule,name:rma.rule_rma_dropship
+msgid "Supplier → Customer"
+msgstr "Fournisseur → Client"
+
+#. module: rma
+#: model:stock.rule,name:rma.rule_rma_supplier_in_pull
+msgid "Supplier → RMA"
+msgstr "Fournisseur → RMA"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document
+msgid "Supplier:"
+msgstr "Fournisseur:"
+
+#. module: rma
+#: model:ir.ui.menu,name:rma.rma_res_partner_menu_suppliers
+msgid "Suppliers"
+msgstr "Fournisseurs"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document
+msgid "Term and conditions"
+msgstr "Termes et conditions"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__conditions
+msgid "Terms and conditions"
+msgstr "Termes et conditions"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer
+msgid ""
+"The creation of the RMA Lines will be separated according to the lots or "
+"serials selected"
+msgstr ""
+"La création des Lignes RMA sera séparée selon les lots ou séries "
+"sélectionnés"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_operation__customer_to_supplier
+#: model:ir.model.fields,field_description:rma.field_rma_order__customer_to_supplier
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__customer_to_supplier
+msgid "The customer will send to the supplier"
+msgstr "Le client enverra au fournisseur"
+
+#. module: rma
+#: model:ir.model.fields,help:rma.field_rma_order__reference
+msgid "The partner reference of this RMA order."
+msgstr "La référence partenaire de cette commande RMA."
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_operation__supplier_to_customer
+#: model:ir.model.fields,field_description:rma.field_rma_order__supplier_to_customer
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__supplier_to_customer
+msgid "The supplier will send to the customer"
+msgstr "Le fournisseur enverra au client"
+
+#. module: rma
+#: model:ir.model.fields,help:rma.field_rma_order_line__delivery_address_id
+msgid "This address will be used to deliver repaired or replacement products."
+msgstr ""
+"Cette adresse sera utilisée pour livrer les produits réparés ou de "
+"remplacement."
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+msgid "This description will be copied to RMA lines."
+msgstr "Cette description sera copiée sur les lignes RMA."
+
+#. module: rma
+#: model:ir.model.fields.selection,name:rma.selection__rma_order__state__to_approve
+#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__state__to_approve
+msgid "To Approve"
+msgstr "A approuver"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter
+msgid "To Deliver"
+msgstr "A livrer"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter
+msgid "To Receive"
+msgstr "A recevoir"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter
+msgid "To Send to Supplier RMA"
+msgstr "À envoyer au fournisseur RMA"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/models/rma_order_line.py:0
+#, python-format
+msgid "To manage lots use RMA groups."
+msgstr "Pour gérer les lots, utilisez les groupes RMA."
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__product_tracking
+msgid "Tracking"
+msgstr "Suivi"
+
+#. module: rma
+#: model:ir.model.fields.selection,name:rma.selection__product_category__rma_approval_policy__two_step
+msgid "Two steps"
+msgstr "Deux étapes"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__type
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__type
+msgid "Type"
+msgstr ""
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/models/rma_order_line.py:0
+#, python-format
+msgid "Unable to cancel %s as some receptions have already been done."
+msgstr "Impossible d'annuler %s car certaines réceptions ont déjà été effectuées."
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__under_warranty
+msgid "Under Warranty?"
+msgstr "Sous garantie ?"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document
+msgid "Unit Price"
+msgstr "Prix unitaire"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__price_unit
+msgid "Unit cost"
+msgstr "Coût Unitaire"
+
+#. module: rma
+#: model:ir.model.fields,help:rma.field_rma_order_line__price_unit
+msgid "Unit cost of the items under RMA"
+msgstr "Coût unitaire des articles sous RMA"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__uom_id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__uom_id
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer
+msgid "Unit of Measure"
+msgstr "Unité de mesure"
+
+#. module: rma
+#. odoo-python
+#: code:addons/rma/wizards/rma_make_picking.py:0
+#, python-format
+msgid "Unknown delivery address"
+msgstr "Adresse de livraison inconnue"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__uom_id
+msgid "UoM"
+msgstr "UdM"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_res_company__group_rma_lines
+#: model:ir.model.fields,field_description:rma.field_res_config_settings__group_rma_lines
+msgid "Use RMA groups"
+msgstr "Utiliser les groupes RMA"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_operation__type
+msgid "Used in RMA of this type"
+msgstr "Utilisé dans les RMA de ce type"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document
+#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document
+msgid "VAT:"
+msgstr "TVA:"
+
+#. module: rma
+#: model:ir.model,name:rma.model_stock_warehouse
+#: model:ir.ui.menu,name:rma.menu_rma_config_warehouse
+msgid "Warehouse"
+msgstr "Entrepôt"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_order__website_message_ids
+#: model:ir.model.fields,field_description:rma.field_rma_order_line__website_message_ids
+msgid "Website Messages"
+msgstr "Messages du site Web"
+
+#. module: rma
+#: model:ir.model.fields,help:rma.field_rma_order__website_message_ids
+#: model:ir.model.fields,help:rma.field_rma_order_line__website_message_ids
+msgid "Website communication history"
+msgstr "Historique des communications du site Web"
+
+#. module: rma
+#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__wiz_id
+#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__wiz_id
+msgid "Wizard"
+msgstr "Assistant"
+
+#. module: rma
+#: model:ir.model,name:rma.model_rma_add_serial_wiz
+msgid "Wizard to add rma lines from Serial/Lot numbers"
+msgstr ""
+"Assistant pour ajouter des lignes RMA à partir des numéros de série/lot"
+
+#. module: rma
+#: model:ir.model,name:rma.model_rma_add_stock_move
+msgid "Wizard to add rma lines from pickings"
+msgstr "Assistant pour ajouter des lignes RMA à partir des pickings"
+
+#. module: rma
+#: model:ir.model,name:rma.model_rma_make_picking_wizard
+msgid "Wizard to create Pickings from rma"
+msgstr "Assistant pour créer des transferts à partir de rma"
+
+#. module: rma
+#: model:ir.model,name:rma.model_rma_make_supplier_rma
+msgid "Wizard to create Supplier RMA from rma"
+msgstr "Assistant pour créer un RMA fournisseur à partir d'un RMA"
+
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking_out
+msgid "or"
+msgstr "ou"
diff --git a/rma/i18n/rma.pot b/rma/i18n/rma.pot
index bf3878684..44dd0c9b4 100644
--- a/rma/i18n/rma.pot
+++ b/rma/i18n/rma.pot
@@ -100,6 +100,12 @@ msgstr ""
msgid "Action Needed"
msgstr ""
+#. module: rma
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form
+msgid "Incoming Shipments"
+msgstr ""
+
#. module: rma
#: model:ir.model.fields,field_description:rma.field_rma_operation__active
msgid "Active"
diff --git a/rma/models/rma_order.py b/rma/models/rma_order.py
index 14f95c298..ead5aeeed 100644
--- a/rma/models/rma_order.py
+++ b/rma/models/rma_order.py
@@ -60,6 +60,16 @@ def _compute_state(self):
state = "done"
rec.state = state
+ @api.depends("rma_line_ids", "rma_line_ids.qty_to_receive")
+ def _compute_qty_to_receive(self):
+ for rec in self:
+ rec.qty_to_receive = sum(rec.rma_line_ids.mapped("qty_to_receive"))
+
+ @api.depends("rma_line_ids", "rma_line_ids.qty_to_deliver")
+ def _compute_qty_to_deliver(self):
+ for rec in self:
+ rec.qty_to_deliver = sum(rec.rma_line_ids.mapped("qty_to_deliver"))
+
@api.model
def _default_date_rma(self):
return datetime.now()
@@ -175,6 +185,14 @@ def _default_warehouse_id(self):
required=False,
string="Default Operation Type",
)
+ qty_to_receive = fields.Float(
+ digits="Product Unit of Measure",
+ compute="_compute_qty_to_receive",
+ )
+ qty_to_deliver = fields.Float(
+ digits="Product Unit of Measure",
+ compute="_compute_qty_to_deliver",
+ )
@api.onchange(
"operation_default_id",
@@ -235,12 +253,12 @@ def create(self, vals_list):
def _view_shipments(self, result, shipments):
# choose the view_mode accordingly
- if len(shipments) > 1:
- result["domain"] = [("id", "in", shipments.ids)]
- elif len(shipments) == 1:
+ if len(shipments) == 1:
res = self.env.ref("stock.view_picking_form", False)
result["views"] = [(res and res.id or False, "form")]
result["res_id"] = shipments.ids[0]
+ else:
+ result["domain"] = [("id", "in", shipments.ids)]
return result
def action_view_in_shipments(self):
diff --git a/rma/security/ir.model.access.csv b/rma/security/ir.model.access.csv
index 3643627b0..32357097f 100644
--- a/rma/security/ir.model.access.csv
+++ b/rma/security/ir.model.access.csv
@@ -15,8 +15,8 @@ access_rma_picking_wizard_supplier,rma.order.manager,model_rma_make_picking_wiza
access_rma_picking_wizard_item,rma.order.manager,model_rma_make_picking_wizard_item,group_rma_manager,1,1,1,1
access_rma_picking_wizard_item_customer,rma.order.manager,model_rma_make_picking_wizard_item,group_rma_customer_user,1,1,1,1
access_rma_picking_wizard_item_supplier,rma.order.manager,model_rma_make_picking_wizard_item,group_rma_supplier_user,1,1,1,1
-access_rma_order_line_make_supplier_rma_customer_user,rma.order.line.make.supplier.rma.customer.user,model_rma_order_line_make_supplier_rma,rma.group_rma_customer_user,1,1,1,1
-access_rma_order_line_make_supplier_rmasupplier_user,rma.order.line.make.supplier.rma.supplier.user,model_rma_order_line_make_supplier_rma,rma.group_rma_supplier_user,1,1,1,1
+access_rma_make_supplier_rma_customer_user,rma.make.supplier.rma.customer.user,model_rma_make_supplier_rma,rma.group_rma_customer_user,1,1,1,1
+access_rma_make_supplier_rma_supplier_user,rma.make.supplier.rma.supplier.user,model_rma_make_supplier_rma,rma.group_rma_supplier_user,1,1,1,1
access_rma_order_line_make_supplier_rma_customer_user_item,rma.order.line.make.supplier.rma.item.customer.user,model_rma_order_line_make_supplier_rma_item,rma.group_rma_customer_user,1,1,1,1
access_rma_order_line_make_supplier_rmasupplier_user_item,rma.order.line.make.supplier.rma.item.supplier.user,model_rma_order_line_make_supplier_rma_item,rma.group_rma_supplier_user,1,1,1,1
access_rma_add_stock_move_customer_user_item,rma.add.stock.move.customer.user,model_rma_add_stock_move,rma.group_rma_customer_user,1,1,1,1
diff --git a/rma/tests/test_rma.py b/rma/tests/test_rma.py
index 20c1caa46..6dfa4bedd 100644
--- a/rma/tests/test_rma.py
+++ b/rma/tests/test_rma.py
@@ -13,7 +13,7 @@ def setUpClass(cls):
super(TestRma, cls).setUpClass()
# models
cls.rma_make_picking = cls.env["rma_make_picking.wizard"]
- cls.make_supplier_rma = cls.env["rma.order.line.make.supplier.rma"]
+ cls.make_supplier_rma = cls.env["rma.make.supplier.rma"]
cls.rma_add_stock_move = cls.env["rma_add_stock_move"]
cls.product_ctg_model = cls.env["product.category"]
cls.stockpicking = cls.env["stock.picking"]
diff --git a/rma/views/rma_order_line_view.xml b/rma/views/rma_order_line_view.xml
index 6e3fe580a..e035255bb 100644
--- a/rma/views/rma_order_line_view.xml
+++ b/rma/views/rma_order_line_view.xml
@@ -100,6 +100,12 @@
string="Cancel"
attrs="{'invisible':[('state', 'in', ('done', 'canceled'))]}"
groups="rma.group_rma_customer_user"
+ />
+
@@ -210,6 +246,8 @@
'invisible':[('customer_to_supplier', '=', False)],
'readonly':[('state', '!=', 'draft')]}"
/>
+
+
@@ -288,6 +326,20 @@
primary
+
+
+
+
rma.group_rma_supplier_user
diff --git a/rma/wizards/__init__.py b/rma/wizards/__init__.py
index 7989b0771..dcc3fc9b8 100644
--- a/rma/wizards/__init__.py
+++ b/rma/wizards/__init__.py
@@ -1,4 +1,4 @@
from . import rma_add_stock_move
from . import rma_make_picking
-from . import rma_order_line_make_supplier_rma
+from . import rma_make_supplier_rma
from . import rma_add_serial
diff --git a/rma/wizards/rma_add_serial_views.xml b/rma/wizards/rma_add_serial_views.xml
index 186818ba7..5909d4958 100644
--- a/rma/wizards/rma_add_serial_views.xml
+++ b/rma/wizards/rma_add_serial_views.xml
@@ -44,23 +44,6 @@
-
-
- rma.order.form - rma.add.serial.wiz
- rma.order
-
-
-
-
-
-
-
-
rma.add.serial.wiz.supplier
rma.add.serial.wiz
@@ -83,20 +66,4 @@
-
- rma.order.supplier.form - rma.add.serial.wiz
- rma.order
-
-
-
-
-
-
-
-
diff --git a/rma/wizards/rma_add_stock_move.py b/rma/wizards/rma_add_stock_move.py
index 1169a104c..64fc819bf 100644
--- a/rma/wizards/rma_add_stock_move.py
+++ b/rma/wizards/rma_add_stock_move.py
@@ -34,7 +34,7 @@ def default_get(self, fields_list):
move_ids = fields.Many2many(
comodel_name="stock.move",
string="Stock Moves",
- domain="[('state', '=', 'done')]",
+ domain="[('state', '=', 'done'), ('partner_id', '=', partner_id)]",
)
show_lot_filter = fields.Boolean(
string="Show lot filter?",
diff --git a/rma/wizards/rma_add_stock_move_view.xml b/rma/wizards/rma_add_stock_move_view.xml
index 7c91d080d..d0671a8bf 100644
--- a/rma/wizards/rma_add_stock_move_view.xml
+++ b/rma/wizards/rma_add_stock_move_view.xml
@@ -90,23 +90,6 @@
-
-
- rma.order.form - stock.move wizard
- rma.order
-
-
-
-
-
-
-
-
rma.add.stock.move.supplier
rma_add_stock_move
@@ -172,20 +155,4 @@
-
- rma.order.supplier.form - stock.move wizard
- rma.order
-
-
-
-
-
-
-
-
diff --git a/rma/wizards/rma_make_picking.py b/rma/wizards/rma_make_picking.py
index 637caea9b..c85aa314f 100644
--- a/rma/wizards/rma_make_picking.py
+++ b/rma/wizards/rma_make_picking.py
@@ -10,7 +10,7 @@
class RmaMakePicking(models.TransientModel):
_name = "rma_make_picking.wizard"
- _description = "Wizard to create pickings from rma lines"
+ _description = "Wizard to create Pickings from rma"
@api.returns("rma.order.line")
def _prepare_item(self, line):
@@ -32,17 +32,27 @@ def default_get(self, fields_list):
supplier.
"""
context = self._context.copy()
- res = super(RmaMakePicking, self).default_get(fields_list)
+ res = super().default_get(fields_list)
rma_line_obj = self.env["rma.order.line"]
- rma_line_ids = self.env.context["active_ids"] or []
- active_model = self.env.context["active_model"]
-
- if not rma_line_ids:
+ rma_obj = self.env["rma.order"]
+ active_ids = context.get("active_ids") or []
+ active_model = context.get("active_model")
+ if not active_ids:
return res
- assert active_model == "rma.order.line", "Bad context propagation"
+ assert active_model in [
+ "rma.order.line",
+ "rma.order",
+ ], "Bad context propagation"
items = []
- lines = rma_line_obj.browse(rma_line_ids)
+ if active_model == "rma.order":
+ rma = rma_obj.browse(active_ids)
+ if context.get("picking_type") == "incoming":
+ lines = rma.rma_line_ids.filtered(lambda x: x.qty_to_receive > 0)
+ if context.get("picking_type") == "outgoing":
+ lines = rma.rma_line_ids.filtered(lambda x: x.qty_to_deliver > 0)
+ else:
+ lines = rma_line_obj.browse(active_ids)
if len(lines.mapped("partner_id")) > 1:
raise ValidationError(
_(
diff --git a/rma/wizards/rma_make_picking_view.xml b/rma/wizards/rma_make_picking_view.xml
index 380be500b..92b0209a0 100644
--- a/rma/wizards/rma_make_picking_view.xml
+++ b/rma/wizards/rma_make_picking_view.xml
@@ -98,40 +98,4 @@
-
- rma.order.line.form
- rma.order.line
-
-
-
-
-
-
diff --git a/rma/wizards/rma_order_line_make_supplier_rma.py b/rma/wizards/rma_make_supplier_rma.py
similarity index 90%
rename from rma/wizards/rma_order_line_make_supplier_rma.py
rename to rma/wizards/rma_make_supplier_rma.py
index 0fcc544d8..1f651715e 100644
--- a/rma/wizards/rma_order_line_make_supplier_rma.py
+++ b/rma/wizards/rma_make_supplier_rma.py
@@ -5,9 +5,9 @@
from odoo.exceptions import ValidationError
-class RmaLineMakeSupplierRma(models.TransientModel):
- _name = "rma.order.line.make.supplier.rma"
- _description = "RMA Line Make Supplier RMA"
+class RmaMakeSupplierRma(models.TransientModel):
+ _name = "rma.make.supplier.rma"
+ _description = "Wizard to create Supplier RMA from rma"
partner_id = fields.Many2one(
comodel_name="res.partner",
@@ -50,17 +50,26 @@ def _prepare_item(self, line):
@api.model
def default_get(self, fields_list):
- res = super(RmaLineMakeSupplierRma, self).default_get(fields_list)
+ context = self._context.copy()
+ res = super().default_get(fields_list)
rma_line_obj = self.env["rma.order.line"]
- rma_line_ids = self.env.context["active_ids"] or []
- active_model = self.env.context["active_model"]
+ rma_obj = self.env["rma.order"]
+ active_ids = context.get("active_ids") or []
+ active_model = context.get("active_model")
- if not rma_line_ids:
+ if not active_ids:
return res
- assert active_model == "rma.order.line", "Bad context propagation"
+ assert active_model in [
+ "rma.order.line",
+ "rma.order",
+ ], "Bad context propagation"
items = []
- lines = rma_line_obj.browse(rma_line_ids)
+ if active_model == "rma.order":
+ rma = rma_obj.browse(active_ids)
+ lines = rma.rma_line_ids
+ else:
+ lines = rma_line_obj.browse(active_ids)
for line in lines:
items.append([0, 0, self._prepare_item(line)])
suppliers = lines.mapped(
@@ -177,7 +186,7 @@ class RmaLineMakeRmaOrderItem(models.TransientModel):
_description = "RMA Line Make Supplier RMA Item"
wiz_id = fields.Many2one(
- "rma.order.line.make.supplier.rma",
+ "rma.make.supplier.rma",
string="Wizard",
required=True,
ondelete="cascade",
diff --git a/rma/wizards/rma_order_line_make_supplier_rma_view.xml b/rma/wizards/rma_make_supplier_rma_view.xml
similarity index 73%
rename from rma/wizards/rma_order_line_make_supplier_rma_view.xml
rename to rma/wizards/rma_make_supplier_rma_view.xml
index e145b34cd..0ecc534e3 100644
--- a/rma/wizards/rma_order_line_make_supplier_rma_view.xml
+++ b/rma/wizards/rma_make_supplier_rma_view.xml
@@ -4,7 +4,7 @@
RMA Line Make Supplier RMA
- rma.order.line.make.supplier.rma
+ rma.make.supplier.rma
form
-
+
Create Supplier RMA
ir.actions.act_window
- rma.order.line.make.supplier.rma
+ rma.make.supplier.rma
form
new
-
- rma.order.line.supplier.rma.form
- rma.order.line
-
-
-
-
-
diff --git a/rma_account/__manifest__.py b/rma_account/__manifest__.py
index 28f6b2fc5..21166c9c0 100644
--- a/rma_account/__manifest__.py
+++ b/rma_account/__manifest__.py
@@ -13,13 +13,13 @@
"data": [
"security/ir.model.access.csv",
"data/rma_operation.xml",
+ "wizards/rma_add_account_move.xml",
+ "wizards/rma_refund.xml",
"views/rma_order_view.xml",
"views/rma_operation_view.xml",
"views/rma_order_line_view.xml",
"views/account_move_view.xml",
"views/rma_account_menu.xml",
- "wizards/rma_add_account_move.xml",
- "wizards/rma_refund.xml",
],
"installable": True,
}
diff --git a/rma_account/i18n/fr.po b/rma_account/i18n/fr.po
new file mode 100644
index 000000000..a71710a2e
--- /dev/null
+++ b/rma_account/i18n/fr.po
@@ -0,0 +1,589 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * rma_account
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 16.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-09-16 14:25+0000\n"
+"PO-Revision-Date: 2024-09-16 14:25+0000\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_order__invoice_count
+msgid "# of Invoices"
+msgstr "# de Factures"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_account_bank_statement_line__rma_count
+#: model:ir.model.fields,field_description:rma_account.field_account_move__rma_count
+#: model:ir.model.fields,field_description:rma_account.field_account_move_line__rma_line_count
+#: model:ir.model.fields,field_description:rma_account.field_account_payment__rma_count
+msgid "# of RMA"
+msgstr "# de RMA"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_order__invoice_refund_count
+#: model:ir.model.fields,field_description:rma_account.field_rma_order_line__refund_count
+msgid "# of Refunds"
+msgstr "# d'Avoirs"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_account_bank_statement_line__used_in_rma_count
+#: model:ir.model.fields,field_description:rma_account.field_account_move__used_in_rma_count
+#: model:ir.model.fields,field_description:rma_account.field_account_payment__used_in_rma_count
+msgid "# of Used in RMA"
+msgstr "# d'utilisés dans RMA"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_account_move_line__used_in_rma_line_count
+msgid "# of used RMA"
+msgstr "# de RMA utilisés"
+
+#. module: rma_account
+#: model:ir.ui.menu,name:rma_account.menu_rma_account
+msgid "Accounting"
+msgstr "Comptabilité"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund__date
+msgid "Accounting Date"
+msgstr "Date comptable"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_order__add_move_id
+msgid "Add Invoice"
+msgstr "Ajouter une facture"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_account_bank_statement_line__add_rma_line_id
+#: model:ir.model.fields,field_description:rma_account.field_account_move__add_rma_line_id
+#: model:ir.model.fields,field_description:rma_account.field_account_payment__add_rma_line_id
+msgid "Add from RMA line"
+msgstr "Ajouter depuis la ligne RMA"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_operation__automated_refund
+msgid "Automated Refund"
+msgstr "Remboursement automatisé"
+
+#. module: rma_account
+#: model:ir.model.fields.selection,name:rma_account.selection__rma_operation__refund_policy__delivered
+#: model:ir.model.fields.selection,name:rma_account.selection__rma_order_line__refund_policy__delivered
+msgid "Based on Delivered Quantities"
+msgstr "Basé sur les quantités livrées"
+
+#. module: rma_account
+#: model:ir.model.fields.selection,name:rma_account.selection__rma_operation__refund_policy__ordered
+#: model:ir.model.fields.selection,name:rma_account.selection__rma_order_line__refund_policy__ordered
+#: model:ir.model.fields.selection,name:rma_account.selection__rma_refund_item__refund_policy__ordered
+msgid "Based on Ordered Quantities"
+msgstr "Basé sur les quantités commandées"
+
+#. module: rma_account
+#: model:ir.model.fields.selection,name:rma_account.selection__rma_operation__refund_policy__received
+#: model:ir.model.fields.selection,name:rma_account.selection__rma_order_line__refund_policy__received
+#: model:ir.model.fields.selection,name:rma_account.selection__rma_refund_item__refund_policy__received
+msgid "Based on Received Quantities"
+msgstr "Basé sur les quantités reçues"
+
+#. module: rma_account
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_add_account_move
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_add_account_move_supplier
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_refund
+msgid "Cancel"
+msgstr "Annuler"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_order_line__commercial_partner_id
+msgid "Commercial Entity"
+msgstr "Entité commerciale"
+
+#. module: rma_account
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_add_account_move
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_add_account_move_supplier
+msgid "Confirm"
+msgstr "Confirmer"
+
+#. module: rma_account
+#: model:ir.actions.act_window,name:rma_account.action_rma_refund
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_line_form
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_refund
+msgid "Create Refund"
+msgstr "Créer un remboursement"
+
+#. module: rma_account
+#: model:ir.model.fields,help:rma_account.field_account_bank_statement_line__add_rma_line_id
+#: model:ir.model.fields,help:rma_account.field_account_move__add_rma_line_id
+#: model:ir.model.fields,help:rma_account.field_account_payment__add_rma_line_id
+msgid "Create a refund in based on an existing rma_line"
+msgstr "Créer un remboursement basé sur une ligne RMA existante"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_add_account_move__create_uid
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund__create_uid
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund_item__create_uid
+msgid "Created by"
+msgstr "Créé par"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_add_account_move__create_date
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund__create_date
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund_item__create_date
+msgid "Created on"
+msgstr "Créé le"
+
+#. module: rma_account
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_refund
+msgid "Credit Note"
+msgstr "Note de crédit"
+
+#. module: rma_account
+#: model:ir.actions.act_window,name:rma_account.action_rma_account_customer_lines
+msgid "Customer RMA"
+msgstr "RMA Client"
+
+#. module: rma_account
+#: model:ir.ui.menu,name:rma_account.menu_rma_customer_refunds
+#: model:ir.ui.menu,name:rma_account.menu_rma_line_account_customer
+msgid "Customer RMA to Refund"
+msgstr "RMA client à rembourser"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund_item__name
+msgid "Description"
+msgstr ""
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_add_account_move__display_name
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund__display_name
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund_item__display_name
+msgid "Display Name"
+msgstr "Afficher un nom"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_add_account_move__id
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund__id
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund_item__id
+msgid "ID"
+msgstr ""
+
+#. module: rma_account
+#: model:ir.model.fields,help:rma_account.field_rma_operation__refund_free_of_charge
+msgid ""
+"In case of automated refund you should mark this option as long "
+"automatedrefunds mean to compensate Stock Interim accounts only without "
+"hittingAccounts receivable"
+msgstr ""
+"En cas de remboursement automatique, vous devez cocher cette option car les "
+"remboursements automatisés longs visent à compenser uniquement les comptes "
+"Stock Provisoire sans affecter les comptes clients"
+
+#. module: rma_account
+#: model:ir.model.fields,help:rma_account.field_rma_operation__automated_refund
+msgid ""
+"In the scenario where a company uses anglo-saxon accounting, if you receive "
+"products from a customer and don't expect to refund the customer but send a "
+"replacement unit, mark this flag to be accounting consistent"
+msgstr ""
+"Dans le cas où une entreprise utilise la comptabilité anglo-saxonne, si vous"
+" recevez des produits d'un client et que vous n'espérez pas rembourser le "
+"client mais envoyer une unité de remplacement, cochez cette option pour être"
+" comptablement cohérent"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund_item__invoice_address_id
+msgid "Invoice Address"
+msgstr "Addresse de facturation"
+
+#. module: rma_account
+#: model:ir.actions.act_window,name:rma_account.action_invoice_line
+msgid "Invoice Line"
+msgstr "Ligne de facture"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_add_account_move__line_ids
+msgid "Invoice Lines"
+msgstr "Lignes de facture"
+
+#. module: rma_account
+#: model:ir.model.fields,help:rma_account.field_rma_order_line__invoice_address_id
+msgid "Invoice address for current rma order."
+msgstr "Adresse de facturation pour la commande RMA en cours."
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund__item_ids
+msgid "Items"
+msgstr "Articles"
+
+#. module: rma_account
+#: model:ir.model,name:rma_account.model_account_move
+msgid "Journal Entry"
+msgstr "Pièce comptable"
+
+#. module: rma_account
+#: model:ir.model,name:rma_account.model_account_move_line
+msgid "Journal Item"
+msgstr "Écriture comptable"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_order_line__move_line_ids
+msgid "Journal Items"
+msgstr "Éléments du journal"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_add_account_move____last_update
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund____last_update
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund_item____last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_add_account_move__write_uid
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund__write_uid
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund_item__write_uid
+msgid "Last Updated by"
+msgstr ""
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_add_account_move__write_date
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund__write_date
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund_item__write_date
+msgid "Last Updated on"
+msgstr ""
+
+#. module: rma_account
+#: model:ir.model.fields.selection,name:rma_account.selection__rma_operation__refund_policy__no
+#: model:ir.model.fields.selection,name:rma_account.selection__rma_order_line__refund_policy__no
+msgid "No refund"
+msgstr "Aucun remboursement"
+
+#. module: rma_account
+#: model:ir.model.fields.selection,name:rma_account.selection__rma_refund_item__refund_policy__no
+msgid "Not required"
+msgstr "Non requis"
+
+#. module: rma_account
+#. odoo-python
+#: code:addons/rma_account/wizards/rma_refund.py:0
+#, python-format
+msgid "Only RMAs from the same partner can be processed at the same time."
+msgstr "Seuls les RMA provenant du même partenaire peuvent être traités en même temps."
+
+#. module: rma_account
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_line_form
+msgid "Origin Inv"
+msgstr "Facture Source"
+
+#. module: rma_account
+#. odoo-python
+#: code:addons/rma_account/models/rma_order.py:0
+#, python-format
+msgid "Originating Invoice"
+msgstr "Facture Source"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_order_line__account_move_line_id
+msgid "Originating Invoice Line"
+msgstr "Ligne de facture source"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_add_account_move__partner_id
+msgid "Partner"
+msgstr "Partenaire"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_order_line__invoice_address_id
+msgid "Partner invoice address"
+msgstr "Adresse de facturation du partenaire"
+
+#. module: rma_account
+#. odoo-python
+#: code:addons/rma_account/models/rma_order_line.py:0
+#: code:addons/rma_account/wizards/rma_add_account_move.py:0
+#, python-format
+msgid "Please define a warehouse with a default rma location"
+msgstr "Veuillez définir un entrepôt avec un emplacement rma par défaut"
+
+#. module: rma_account
+#. odoo-python
+#: code:addons/rma_account/models/rma_order_line.py:0
+#: code:addons/rma_account/wizards/rma_add_account_move.py:0
+#, python-format
+msgid "Please define an operation first"
+msgstr "Veuillez d'abord définir une opération"
+
+#. module: rma_account
+#. odoo-python
+#: code:addons/rma_account/models/rma_order_line.py:0
+#: code:addons/rma_account/wizards/rma_add_account_move.py:0
+#, python-format
+msgid "Please define an rma route"
+msgstr "Veuillez définir une route rma"
+
+#. module: rma_account
+#: model:ir.model,name:rma_account.model_procurement_group
+msgid "Procurement Group"
+msgstr "Groupe d'approvisionnement"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund_item__product
+msgid "Product"
+msgstr "Produit"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund_item__product_id
+msgid "Product (Technical)"
+msgstr "Produit (Technique)"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_order_line__qty_refunded
+msgid "Qty Refunded"
+msgstr "Qté remboursée"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_order__qty_to_refund
+#: model:ir.model.fields,field_description:rma_account.field_rma_order_line__qty_to_refund
+msgid "Qty To Refund"
+msgstr "Qté à rembourser"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund_item__product_qty
+msgid "Quantity Ordered"
+msgstr "Quantité commandée"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund_item__qty_to_refund
+msgid "Quantity To Refund"
+msgstr "Quantité à rembourser"
+
+#. module: rma_account
+#: model:ir.model,name:rma_account.model_rma_order_line
+#: model:ir.model.fields,field_description:rma_account.field_account_move_line__rma_line_ids
+#: model:ir.model.fields,field_description:rma_account.field_procurement_group__rma_id
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund_item__rma_id
+#: model_terms:ir.ui.view,arch_db:rma_account.invoice_form
+msgid "RMA"
+msgstr ""
+
+#. module: rma_account
+#. odoo-python
+#: code:addons/rma_account/wizards/rma_refund.py:0
+#, python-format
+msgid "RMA %s is not approved"
+msgstr "RMA %s n'est pas approuvé"
+
+#. module: rma_account
+#: model:ir.model,name:rma_account.model_rma_order
+msgid "RMA Group"
+msgstr "Groupe RMA"
+
+#. module: rma_account
+#: model_terms:ir.ui.view,arch_db:rma_account.view_invoice_line_form
+msgid "RMA Lines"
+msgstr "Lignes RMA"
+
+#. module: rma_account
+#: model:ir.model,name:rma_account.model_rma_refund_item
+msgid "RMA Lines to refund"
+msgstr "Lignes RMA à rembourser"
+
+#. module: rma_account
+#: model:ir.model,name:rma_account.model_rma_operation
+msgid "RMA Operation"
+msgstr "Opération RMA"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_add_account_move__rma_id
+msgid "RMA Order"
+msgstr "Commande RMA"
+
+#. module: rma_account
+#. odoo-python
+#: code:addons/rma_account/models/rma_order_line.py:0
+#, python-format
+msgid "RMA customer and originating invoice line customer doesn't match."
+msgstr "Le client RMA et le client sur la ligne de facture source ne correspondent pas."
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_account_move_line__rma_line_id
+#: model:ir.model.fields,field_description:rma_account.field_procurement_group__rma_line_id
+msgid "RMA line"
+msgstr "Ligne RMA"
+
+#. module: rma_account
+#: model_terms:ir.ui.view,arch_db:rma_account.view_invoice_line_form
+msgid "RMA line originated"
+msgstr "Origine de la ligne RMA"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund_item__line_id
+msgid "RMA order Line"
+msgstr "Ligne de commande RMA"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund__description
+msgid "Reason"
+msgstr "Raison"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_operation__refund_journal_id
+msgid "Refund Account Journal"
+msgstr "Journal du compte d'avoir"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund__date_invoice
+msgid "Refund Date"
+msgstr "Date de remboursement"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_operation__refund_free_of_charge
+msgid "Refund Free Of Charge"
+msgstr "Remboursement sans frais"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_order_line__refund_line_ids
+msgid "Refund Lines"
+msgstr "Lignes d'avoir"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_operation__refund_policy
+#: model:ir.model.fields,field_description:rma_account.field_rma_order_line__refund_policy
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund_item__refund_policy
+msgid "Refund Policy"
+msgstr "Politique de remboursement"
+
+#. module: rma_account
+#. odoo-python
+#: code:addons/rma_account/wizards/rma_refund.py:0
+#, python-format
+msgid "Refund created by %(rnr)s, %(r)s"
+msgstr "Avoir créé par %(rnr)s, %(r)s"
+
+#. module: rma_account
+#. odoo-python
+#: code:addons/rma_account/wizards/rma_refund.py:0
+#, python-format
+msgid "Refund created by %s"
+msgstr "Avoir créé par %s"
+
+#. module: rma_account
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_line_form
+msgid "Refunds"
+msgstr "Avoirs"
+
+#. module: rma_account
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_add_account_move
+msgid "Select Invoice from customer"
+msgstr "Sélectionnez la Facture client"
+
+#. module: rma_account
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_add_account_move_supplier
+msgid "Select Invoice from supplier"
+msgstr "Sélectionnez la Facture fournisseur"
+
+#. module: rma_account
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_add_account_move
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_add_account_move_supplier
+msgid "Select Invoices lines to add"
+msgstr "Sélectionnez les lignes de facture à ajouter"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_order_line__move_id
+msgid "Source"
+msgstr ""
+
+#. module: rma_account
+#: model:ir.model,name:rma_account.model_stock_move
+msgid "Stock Move"
+msgstr "Mouvement de stock"
+
+#. module: rma_account
+#: model:ir.model,name:rma_account.model_stock_valuation_layer
+msgid "Stock Valuation Layer"
+msgstr "Couche de valorisation d'inventaire"
+
+#. module: rma_account
+#: model:ir.actions.act_window,name:rma_account.action_rma_supplier_lines
+msgid "Supplier RMA"
+msgstr "RMA Fournisseur"
+
+#. module: rma_account
+#: model:ir.ui.menu,name:rma_account.menu_rma_line_account_supplier
+#: model:ir.ui.menu,name:rma_account.menu_rma_line_supplier_refunds
+msgid "Supplier RMA to Refund"
+msgstr "RMA Fournisseur à rembourser"
+
+#. module: rma_account
+#. odoo-python
+#: code:addons/rma_account/wizards/rma_refund.py:0
+#, python-format
+msgid "The invoice address must be the same for all the lines."
+msgstr "L'adresse de facturation doit être la même pour toutes les lignes."
+
+#. module: rma_account
+#. odoo-python
+#: code:addons/rma_account/models/rma_order_line.py:0
+#, python-format
+msgid "There's an rma for the invoice line %(arg1)s and invoice %(arg2)s"
+msgstr "Il existe un rma pour la ligne de facture %(arg1)s et la facture %(arg2)s"
+
+#. module: rma_account
+#: model:ir.model.fields,help:rma_account.field_account_move_line__rma_line_ids
+msgid "This will contain the RMA lines for the invoice line"
+msgstr "Celui-ci contiendra les lignes RMA pour la ligne de facture"
+
+#. module: rma_account
+#: model:ir.model.fields,help:rma_account.field_account_move_line__rma_line_id
+msgid "This will contain the rma line that originated this line"
+msgstr "Celui-ci contiendra la ligne rma à l'origine de cette ligne"
+
+#. module: rma_account
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_rma_line_filter
+msgid "To Refund"
+msgstr "A rembourser"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund_item__uom_id
+msgid "Unit of Measure"
+msgstr "Unité de mesure"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_operation__valid_refund_journal_ids
+msgid "Valid Refund Journal"
+msgstr "Journal de remboursement valide"
+
+#. module: rma_account
+#: model:ir.model.fields,field_description:rma_account.field_rma_refund_item__wiz_id
+msgid "Wizard"
+msgstr "Assistant"
+
+#. module: rma_account
+#: model:ir.model,name:rma_account.model_rma_refund
+msgid "Wizard for RMA Refund"
+msgstr "Assistant de remboursement RMA"
+
+#. module: rma_account
+#: model:ir.model,name:rma_account.model_rma_add_account_move
+msgid "Wizard to add rma lines"
+msgstr "Assistant pour ajouter des lignes RMA"
+
+#. module: rma_account
+#: model:ir.model,name:rma_account.model_rma_make_supplier_rma
+msgid "Wizard to create Supplier RMA from rma"
+msgstr "Assistant pour créer un RMA fournisseur à partir d'un RMA"
+
+#. module: rma_account
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_add_account_move
+#: model_terms:ir.ui.view,arch_db:rma_account.view_rma_add_account_move_supplier
+msgid "or"
+msgstr "ou"
diff --git a/rma_account/models/rma_order.py b/rma_account/models/rma_order.py
index 7b163a218..0df9686ff 100644
--- a/rma_account/models/rma_order.py
+++ b/rma_account/models/rma_order.py
@@ -1,7 +1,7 @@
# Copyright 2017-22 ForgeFlow S.L.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html)
-from odoo import api, fields, models
+from odoo import _, api, fields, models
class RmaOrder(models.Model):
@@ -17,6 +17,11 @@ def _compute_invoice_count(self):
invoices = rec.mapped("rma_line_ids.move_id")
rec.invoice_count = len(invoices)
+ @api.depends("rma_line_ids", "rma_line_ids.qty_to_refund")
+ def _compute_qty_to_refund(self):
+ for rec in self:
+ rec.qty_to_refund = sum(rec.rma_line_ids.mapped("qty_to_refund"))
+
add_move_id = fields.Many2one(
comodel_name="account.move",
string="Add Invoice",
@@ -29,6 +34,10 @@ def _compute_invoice_count(self):
invoice_count = fields.Integer(
compute="_compute_invoice_count", string="# of Invoices"
)
+ qty_to_refund = fields.Float(
+ digits="Product Unit of Measure",
+ compute="_compute_qty_to_refund",
+ )
def _prepare_rma_line_from_inv_line(self, line):
if self.type == "customer":
@@ -95,25 +104,22 @@ def _prepare_rma_data(self, partner, origin_rma):
return res
def action_view_invoice_refund(self):
- move_ids = self.mapped("rma_line_ids.move_id").ids
+ move_ids = self.mapped("rma_line_ids.refund_line_ids.move_id").ids
form_view_ref = self.env.ref("account.view_move_form", False)
tree_view_ref = self.env.ref("account.view_move_tree", False)
-
- return {
- "domain": [("id", "in", move_ids)],
- "name": "Refunds",
- "res_model": "account.move",
- "views": [(tree_view_ref.id, "tree"), (form_view_ref.id, "form")],
- }
+ action = self.env.ref("account.action_move_in_refund_type")
+ result = action.sudo().read()[0]
+ result["domain"] = [("id", "in", move_ids)]
+ result["views"] = [(tree_view_ref.id, "tree"), (form_view_ref.id, "form")]
+ return result
def action_view_invoice(self):
move_ids = self.mapped("rma_line_ids.move_id").ids
form_view_ref = self.env.ref("account.view_move_form", False)
tree_view_ref = self.env.ref("account.view_move_tree", False)
-
- return {
- "domain": [("id", "in", move_ids)],
- "name": "Originating Invoice",
- "res_model": "account.move",
- "views": [(tree_view_ref.id, "tree"), (form_view_ref.id, "form")],
- }
+ action = self.env.ref("account.action_move_out_invoice_type")
+ result = action.sudo().read()[0]
+ result["domain"] = [("id", "in", move_ids)]
+ result["views"] = [(tree_view_ref.id, "tree"), (form_view_ref.id, "form")]
+ result["name"] = _("Originating Invoice")
+ return result
diff --git a/rma_account/views/rma_order_line_view.xml b/rma_account/views/rma_order_line_view.xml
index b2198885f..38faab17d 100644
--- a/rma_account/views/rma_order_line_view.xml
+++ b/rma_account/views/rma_order_line_view.xml
@@ -24,6 +24,21 @@
rma.order.line
+
+
+
+
rma.order
+
+
+
@@ -32,6 +46,9 @@
+
+
+
diff --git a/rma_account/wizards/__init__.py b/rma_account/wizards/__init__.py
index 52d1defb8..694d2cdea 100644
--- a/rma_account/wizards/__init__.py
+++ b/rma_account/wizards/__init__.py
@@ -3,4 +3,4 @@
from . import rma_refund
from . import rma_add_account_move
-from . import rma_order_line_make_supplier_rma
+from . import rma_make_supplier_rma
diff --git a/rma_account/wizards/rma_add_account_move.py b/rma_account/wizards/rma_add_account_move.py
index 0cf727ecd..8ab574a4f 100644
--- a/rma_account/wizards/rma_add_account_move.py
+++ b/rma_account/wizards/rma_add_account_move.py
@@ -11,7 +11,7 @@ class RmaAddAccountMove(models.TransientModel):
@api.model
def default_get(self, fields_list):
- res = super(RmaAddAccountMove, self).default_get(fields_list)
+ res = super().default_get(fields_list)
rma_obj = self.env["rma.order"]
rma_id = self.env.context["active_ids"] or []
active_model = self.env.context["active_model"]
diff --git a/rma_account/wizards/rma_order_line_make_supplier_rma.py b/rma_account/wizards/rma_make_supplier_rma.py
similarity index 67%
rename from rma_account/wizards/rma_order_line_make_supplier_rma.py
rename to rma_account/wizards/rma_make_supplier_rma.py
index 48818da05..0b462329c 100644
--- a/rma_account/wizards/rma_order_line_make_supplier_rma.py
+++ b/rma_account/wizards/rma_make_supplier_rma.py
@@ -4,12 +4,12 @@
from odoo import api, models
-class RmaLineMakeSupplierRma(models.TransientModel):
- _inherit = "rma.order.line.make.supplier.rma"
+class RmaMakeSupplierRma(models.TransientModel):
+ _inherit = "rma.make.supplier.rma"
@api.model
def _prepare_supplier_rma_line(self, rma, item):
- res = super(RmaLineMakeSupplierRma, self)._prepare_supplier_rma_line(rma, item)
+ res = super()._prepare_supplier_rma_line(rma, item)
if res["operation_id"]:
operation = self.env["rma.operation"].browse(res["operation_id"])
res["refund_policy"] = operation.refund_policy
diff --git a/rma_account/wizards/rma_refund.py b/rma_account/wizards/rma_refund.py
index 296299867..41e9f6c9d 100644
--- a/rma_account/wizards/rma_refund.py
+++ b/rma_account/wizards/rma_refund.py
@@ -12,7 +12,14 @@ class RmaRefund(models.TransientModel):
@api.model
def _get_reason(self):
active_ids = self.env.context.get("active_ids", False)
- return self.env["rma.order.line"].browse(active_ids[0]).rma_id.name or ""
+ active_model = self.env.context.get("active_model", False)
+ reason = ""
+ if active_model and active_ids:
+ if active_model == "rma.order":
+ reason = self.env[active_model].browse(active_ids[0]).name or ""
+ else:
+ reason = self.env[active_model].browse(active_ids[0]).rma_id.name or ""
+ return reason
@api.returns("rma.order.line")
def _prepare_item(self, line):
@@ -37,16 +44,24 @@ def default_get(self, fields_list):
supplier.
"""
context = self._context.copy()
- res = super(RmaRefund, self).default_get(fields_list)
+ res = super().default_get(fields_list)
rma_line_obj = self.env["rma.order.line"]
- rma_line_ids = self.env.context["active_ids"] or []
- active_model = self.env.context["active_model"]
- if not rma_line_ids:
+ rma_obj = self.env["rma.order"]
+ active_ids = context.get("active_ids") or []
+ active_model = context.get("active_model")
+ if not active_ids:
return res
- assert active_model == "rma.order.line", "Bad context propagation"
+ assert active_model in [
+ "rma.order.line",
+ "rma.order",
+ ], "Bad context propagation"
items = []
- lines = rma_line_obj.browse(rma_line_ids)
+ if active_model == "rma.order":
+ rma = rma_obj.browse(active_ids)
+ lines = rma.rma_line_ids.filtered(lambda x: x.qty_to_refund > 0)
+ else:
+ lines = rma_line_obj.browse(active_ids)
if len(lines.mapped("partner_id")) > 1:
raise ValidationError(
_(
@@ -90,8 +105,9 @@ def compute_refund(self):
return new_refund
def invoice_refund(self):
- rma_line_ids = self.env["rma.order.line"].browse(self.env.context["active_ids"])
- for line in rma_line_ids:
+ lines = self.item_ids.line_id
+ for line in lines:
+
if line.state != "approved":
raise ValidationError(_("RMA %s is not approved") % line.name)
new_invoice = self.compute_refund()
diff --git a/rma_account/wizards/rma_refund.xml b/rma_account/wizards/rma_refund.xml
index 60b6da755..4472b3a82 100644
--- a/rma_account/wizards/rma_refund.xml
+++ b/rma_account/wizards/rma_refund.xml
@@ -49,27 +49,4 @@
new
-
- rma.order.line.form
- rma.order.line
-
-
-
-
-
-
-
-
-
diff --git a/rma_sale/__manifest__.py b/rma_sale/__manifest__.py
index da495e850..b310f1e0d 100644
--- a/rma_sale/__manifest__.py
+++ b/rma_sale/__manifest__.py
@@ -13,11 +13,11 @@
"data": [
"security/ir.model.access.csv",
"data/rma_operation.xml",
+ "wizards/rma_make_sale_order_view.xml",
+ "wizards/rma_add_sale.xml",
"views/rma_order_view.xml",
"views/rma_operation_view.xml",
"views/sale_order_view.xml",
- "wizards/rma_order_line_make_sale_order_view.xml",
- "wizards/rma_add_sale.xml",
"views/rma_order_line_view.xml",
],
"installable": True,
diff --git a/rma_sale/i18n/fr.po b/rma_sale/i18n/fr.po
new file mode 100644
index 000000000..d4a34c0de
--- /dev/null
+++ b/rma_sale/i18n/fr.po
@@ -0,0 +1,502 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * rma_sale
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 16.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-09-16 14:27+0000\n"
+"PO-Revision-Date: 2024-09-16 14:27+0000\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order__src_sale_count
+msgid "# of Origin Sales"
+msgstr "# de Ventes Sources"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_sale_order__rma_count
+msgid "# of RMA"
+msgstr "# de RMA"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order__sale_count
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line__sales_count
+msgid "# of Sales"
+msgstr "# de Commandes de Ventes"
+
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_form
+msgid "Add From Sale Order"
+msgstr "Ajouter à partir des Ventes"
+
+#. module: rma_sale
+#. odoo-python
+#: code:addons/rma_sale/wizards/rma_add_sale.py:0
+#: model:ir.actions.act_window,name:rma_sale.action_rma_add_sale
+#, python-format
+msgid "Add Sale Order"
+msgstr "Ajouter Commande de Vente"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_operation__auto_confirm_rma_sale
+msgid "Auto confirm Sales Order upon creation from RMA"
+msgstr "Confirmer automatiquement la commande client lors de sa création à partir du RMA"
+
+#. module: rma_sale
+#: model:ir.model.fields.selection,name:rma_sale.selection__rma_operation__sale_policy__ordered
+#: model:ir.model.fields.selection,name:rma_sale.selection__rma_order_line__sale_policy__ordered
+msgid "Based on Ordered Quantities"
+msgstr "Basé sur les Quantités Commandées"
+
+#. module: rma_sale
+#: model:ir.model.fields.selection,name:rma_sale.selection__rma_operation__sale_policy__received
+#: model:ir.model.fields.selection,name:rma_sale.selection__rma_order_line__sale_policy__received
+msgid "Based on Received Quantities"
+msgstr "Basé sur les Qauntités Reçues"
+
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_add_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_order_line_make_sale_order
+msgid "Cancel"
+msgstr "Annuler"
+
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_add_sale
+msgid "Confirm"
+msgstr "Confirmer"
+
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_order_line_make_sale_order
+msgid "Create Quotation"
+msgstr "Créer Devis"
+
+#. module: rma_sale
+#: model:ir.actions.act_window,name:rma_sale.action_rma_make_sale_order
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_line_form
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_order_line_make_sale_order
+msgid "Create Sales Quotation"
+msgstr "Créer Commandes/Devis"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_add_sale__create_uid
+#: model:ir.model.fields,field_description:rma_sale.field_rma_make_sale_order__create_uid
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line_make_sale_order_item__create_uid
+msgid "Created by"
+msgstr "Créé par"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_add_sale__create_date
+#: model:ir.model.fields,field_description:rma_sale.field_rma_make_sale_order__create_date
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line_make_sale_order_item__create_date
+msgid "Created on"
+msgstr "Créé le"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_make_sale_order__partner_id
+msgid "Customer"
+msgstr "Client"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line_make_sale_order_item__name
+msgid "Description"
+msgstr ""
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_add_sale__display_name
+#: model:ir.model.fields,field_description:rma_sale.field_rma_make_sale_order__display_name
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line_make_sale_order_item__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: rma_sale
+#. odoo-python
+#: code:addons/rma_sale/wizards/rma_make_sale_order.py:0
+#, python-format
+msgid "Enter a customer."
+msgstr "Entrer un client"
+
+#. module: rma_sale
+#. odoo-python
+#: code:addons/rma_sale/wizards/rma_make_sale_order.py:0
+#, python-format
+msgid "Enter a positive quantity."
+msgstr "Entrer une quantité"
+
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_order_line_make_sale_order
+msgid "Existing Quotation to update:"
+msgstr "devis existant à mettre à jour:"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line_make_sale_order_item__free_of_charge
+msgid "Free of Charge"
+msgstr "Gratuit"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_operation__free_of_charge_rma_sale
+msgid "Free of charge RMA Sales Order"
+msgstr "Commande RMA gratuite"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_add_sale__id
+#: model:ir.model.fields,field_description:rma_sale.field_rma_make_sale_order__id
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line_make_sale_order_item__id
+msgid "ID"
+msgstr ""
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_make_sale_order__item_ids
+msgid "Items"
+msgstr "Articles"
+
+#. module: rma_sale
+#: model:ir.model,name:rma_sale.model_rma_make_picking_wizard_item
+msgid "Items to receive"
+msgstr "Articles à recevoir"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_add_sale____last_update
+#: model:ir.model.fields,field_description:rma_sale.field_rma_make_sale_order____last_update
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line_make_sale_order_item____last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_add_sale__write_uid
+#: model:ir.model.fields,field_description:rma_sale.field_rma_make_sale_order__write_uid
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line_make_sale_order_item__write_uid
+msgid "Last Updated by"
+msgstr ""
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_add_sale__write_date
+#: model:ir.model.fields,field_description:rma_sale.field_rma_make_sale_order__write_date
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line_make_sale_order_item__write_date
+msgid "Last Updated on"
+msgstr ""
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_add_sale__lot_domain_ids
+msgid "Lots Domain"
+msgstr ""
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_add_sale__lot_ids
+msgid "Lots/Serials selected"
+msgstr "Lots/Séries sélectionnés"
+
+#. module: rma_sale
+#: model:ir.model,name:rma_sale.model_rma_make_sale_order
+msgid "Make Sales Order from RMA"
+msgstr "Créer commande client à partir de RMA"
+
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_order_line_make_sale_order
+msgid "New Sales Order details:"
+msgstr "Détails de la nouvelle commande client:"
+
+#. module: rma_sale
+#: model:ir.model.fields.selection,name:rma_sale.selection__rma_operation__sale_policy__no
+#: model:ir.model.fields.selection,name:rma_sale.selection__rma_order_line__sale_policy__no
+msgid "Not required"
+msgstr "Non requis"
+
+#. module: rma_sale
+#. odoo-python
+#: code:addons/rma_sale/wizards/rma_make_sale_order.py:0
+#, python-format
+msgid "Only RMA lines from the same partner can be processed at the same time"
+msgstr "Seules les lignes RMA du même partenaire peuvent être traitées en même temps"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_add_sale__sale_id
+msgid "Order"
+msgstr "Commande"
+
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_line_form
+msgid "Origin Sale Order"
+msgstr "Commandes de Vente Sources"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line__sale_line_id
+msgid "Originating Sales Order Line"
+msgstr "Ligne de commande d'origine"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line_make_sale_order_item__out_warehouse_id
+msgid "Outbound Warehouse"
+msgstr "Entrepôt sortant"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_add_sale__partner_id
+msgid "Partner"
+msgstr "Partenaire"
+
+#. module: rma_sale
+#. odoo-python
+#: code:addons/rma_sale/models/rma_order_line.py:0
+#, python-format
+msgid "Please define a warehouse with a default RMA location."
+msgstr "Veuillez définir un entrepôt avec un emplacement RMA par défaut."
+
+#. module: rma_sale
+#. odoo-python
+#: code:addons/rma_sale/wizards/rma_add_sale.py:0
+#, python-format
+msgid "Please define a warehouse with a default rma location."
+msgstr "Veuillez définir un entrepôt avec un emplacement rma par défaut."
+
+#. module: rma_sale
+#. odoo-python
+#: code:addons/rma_sale/models/rma_order_line.py:0
+#, python-format
+msgid "Please define an RMA route"
+msgstr "Veuillez définir une route RMA"
+
+#. module: rma_sale
+#. odoo-python
+#: code:addons/rma_sale/models/rma_order_line.py:0
+#: code:addons/rma_sale/wizards/rma_add_sale.py:0
+#, python-format
+msgid "Please define an operation first"
+msgstr "Veuillez d'abord définir une opération"
+
+#. module: rma_sale
+#. odoo-python
+#: code:addons/rma_sale/wizards/rma_add_sale.py:0
+#, python-format
+msgid "Please define an rma route"
+msgstr "Veuillez définir une route RMA"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line_make_sale_order_item__product_id
+msgid "Product"
+msgstr "Produit"
+
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_add_sale
+msgid "Qty"
+msgstr "Qté"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line__qty_sold
+msgid "Qty Sold"
+msgstr "Qté Vendue"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order__qty_to_sell
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line__qty_to_sell
+msgid "Qty To Sell"
+msgstr "Qté à Vendre"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line_make_sale_order_item__product_qty
+msgid "Quantity to sell"
+msgstr "Quantité à vendre"
+
+#. module: rma_sale
+#: model:ir.model,name:rma_sale.model_rma_order_line
+#: model:ir.model.fields,field_description:rma_sale.field_sale_order_line__rma_line_id
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_order_form_inherit_sale_rma
+msgid "RMA"
+msgstr ""
+
+#. module: rma_sale
+#: model:ir.model,name:rma_sale.model_rma_order
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line_make_sale_order_item__rma_id
+msgid "RMA Group"
+msgstr "Groupe RMA"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line_make_sale_order_item__line_id
+msgid "RMA Line"
+msgstr "Ligne RMA"
+
+#. module: rma_sale
+#: model:ir.model,name:rma_sale.model_rma_order_line_make_sale_order_item
+msgid "RMA Line Make Sale Order Item"
+msgstr "Ligne RMA Crée une ligne de commande de vente"
+
+#. module: rma_sale
+#: model:ir.model,name:rma_sale.model_rma_refund_item
+msgid "RMA Lines to refund"
+msgstr "Lignes RMA à rembourser"
+
+#. module: rma_sale
+#: model:ir.model,name:rma_sale.model_rma_operation
+msgid "RMA Operation"
+msgstr "Opération RMA"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_add_sale__rma_id
+msgid "RMA Order"
+msgstr "Commande RMA"
+
+#. module: rma_sale
+#. odoo-python
+#: code:addons/rma_sale/models/rma_order_line.py:0
+#, python-format
+msgid "RMA customer and originating sales order line customer doesn't match."
+msgstr "Le client RMA et le client sur la ligne de commande d'origine ne correspondent pas"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_sale_order__rma_line_ids
+msgid "Rma Line"
+msgstr "Ligne RMA"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_make_picking_wizard_item__sale_line_id
+msgid "Sale Line"
+msgstr "Ligne de vente"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_add_sale__sale_line_ids
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_line_form
+msgid "Sale Lines"
+msgstr "Lignes de vente"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_refund_item__sale_line_id
+msgid "Sale Order Line"
+msgstr ""
+
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_add_sale
+msgid "Sale Order Lines"
+msgstr "Lignes de commande de vente"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_operation__sale_policy
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line__sale_policy
+msgid "Sale Policy"
+msgstr "Politique de vente"
+
+#. module: rma_sale
+#: model:ir.model,name:rma_sale.model_sale_order
+#: model:ir.model.fields,field_description:rma_sale.field_rma_make_sale_order__sale_order_id
+msgid "Sales Order"
+msgstr "Bon de commande"
+
+#. module: rma_sale
+#: model:ir.model,name:rma_sale.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Ligne de commande"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line__sale_line_ids
+msgid "Sales Order Lines"
+msgstr "Lignes de commande de vente"
+
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_form
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_line_form
+msgid "Sales Orders"
+msgstr "Bons de commande"
+
+#. module: rma_sale
+#: model:ir.model.fields,help:rma_sale.field_rma_operation__free_of_charge_rma_sale
+msgid "Sales orders created from RMA are free of charge by default"
+msgstr "Les commandes client créées à partir de RMA sont gratuites par défaut"
+
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_add_sale
+msgid "Select Sale Order Lines to Add"
+msgstr "Sélectionner les lignes de commande à ajouter"
+
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_add_sale
+msgid "Select Sale Order from customer"
+msgstr "Sélectionner la commande de vente du client"
+
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_add_sale
+msgid "Select all"
+msgstr "Sélectionner tout"
+
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_add_sale
+msgid "Selected Lot/Serial Numbers"
+msgstr "Numéros de lot/série sélectionnés"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_add_sale__show_lot_filter
+msgid "Show lot filter?"
+msgstr "Afficher le filtre de lot ?"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line__sale_id
+msgid "Source Sales Order"
+msgstr "Bons de commande Sources"
+
+#. module: rma_sale
+#: model:ir.model,name:rma_sale.model_stock_rule
+msgid "Stock Rule"
+msgstr "Règle de stock minimum"
+
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_add_sale
+msgid ""
+"The creation of the RMA Lines will be separated according to the lots or "
+"serials selected"
+msgstr ""
+"La création des lignes RMA sera séparée en fonction des lots ou "
+"séries sélectionnés"
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_rma_line_filter
+msgid "To Sell"
+msgstr "A Vendre"
+
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_add_sale
+msgid "Total"
+msgstr ""
+
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_add_sale
+msgid "Unit of Measure"
+msgstr "Unité de mesure"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line_make_sale_order_item__product_uom_id
+msgid "UoM"
+msgstr ""
+
+#. module: rma_sale
+#: model:ir.model.fields,help:rma_sale.field_rma_operation__auto_confirm_rma_sale
+msgid "When a sales is created from an RMA, automatically confirm it"
+msgstr "Lorsqu'une vente est créée à partir d'un RMA, confirmez-la automatiquement"
+
+#. module: rma_sale
+#: model:ir.model.fields,field_description:rma_sale.field_rma_order_line_make_sale_order_item__wiz_id
+msgid "Wizard"
+msgstr "Assistant"
+
+#. module: rma_sale
+#: model:ir.model,name:rma_sale.model_rma_refund
+msgid "Wizard for RMA Refund"
+msgstr "Assistant de remboursement RMA"
+
+#. module: rma_sale
+#: model:ir.model,name:rma_sale.model_rma_add_sale
+msgid "Wizard to add rma lines from SO lines"
+msgstr "Assistant pour ajouter des lignes rma à partir de lignes SO"
+
+#. module: rma_sale
+#: model:ir.model,name:rma_sale.model_rma_make_picking_wizard
+msgid "Wizard to create Pickings from rma"
+msgstr "Assistant pour créer des transferts à partir de rma"
+
+#. module: rma_sale
+#: model_terms:ir.ui.view,arch_db:rma_sale.view_rma_add_sale
+msgid "or"
+msgstr "ou"
diff --git a/rma_sale/models/rma_order.py b/rma_sale/models/rma_order.py
index 8a5806783..f89243cb0 100644
--- a/rma_sale/models/rma_order.py
+++ b/rma_sale/models/rma_order.py
@@ -11,12 +11,34 @@ class RmaOrder(models.Model):
"rma_line_ids.sale_line_id",
"rma_line_ids.sale_line_id.order_id",
)
- def _compute_sales_count(self):
+ def _compute_src_sale_count(self):
for rma in self:
- sales = rma.mapped("rma_line_ids.sale_line_id.order_id")
+ src_sales = rma.mapped("rma_line_ids.sale_line_id.order_id")
+ rma.src_sale_count = len(src_sales)
+
+ @api.depends(
+ "rma_line_ids",
+ "rma_line_ids.sale_line_ids",
+ "rma_line_ids.sale_line_ids.order_id",
+ )
+ def _compute_sale_count(self):
+ for rma in self:
+ sales = rma.mapped("rma_line_ids.sale_line_ids.order_id")
rma.sale_count = len(sales)
- sale_count = fields.Integer(compute="_compute_sales_count", string="# of Sales")
+ @api.depends("rma_line_ids", "rma_line_ids.qty_to_sell")
+ def _compute_qty_to_sell(self):
+ for rec in self:
+ rec.qty_to_sell = sum(rec.rma_line_ids.mapped("qty_to_sell"))
+
+ src_sale_count = fields.Integer(
+ compute="_compute_src_sale_count", string="# of Origin Sales"
+ )
+ qty_to_sell = fields.Float(
+ digits="Product Unit of Measure",
+ compute="_compute_qty_to_sell",
+ )
+ sale_count = fields.Integer(compute="_compute_sale_count", string="# of Sales")
@api.model
def _get_line_domain(self, rma_id, line):
@@ -30,9 +52,16 @@ def _get_line_domain(self, rma_id, line):
domain = super(RmaOrder, self)._get_line_domain(rma_id, line)
return domain
+ def action_view_origin_sale_order(self):
+ action = self.env.ref("sale.action_orders")
+ result = action.sudo().read()[0]
+ so_ids = self.mapped("rma_line_ids.sale_line_id.order_id").ids
+ result["domain"] = [("id", "in", so_ids)]
+ return result
+
def action_view_sale_order(self):
action = self.env.ref("sale.action_quotations")
result = action.sudo().read()[0]
- so_ids = self.mapped("rma_line_ids.sale_line_id.order_id").ids
+ so_ids = self.mapped("rma_line_ids.sale_line_ids.order_id").ids
result["domain"] = [("id", "in", so_ids)]
return result
diff --git a/rma_sale/security/ir.model.access.csv b/rma_sale/security/ir.model.access.csv
index ff4a894d3..b8d9112ac 100644
--- a/rma_sale/security/ir.model.access.csv
+++ b/rma_sale/security/ir.model.access.csv
@@ -1,6 +1,6 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_rma_order_line_make_sale_order_customer_user_item,rma.order.line.make.sale.order.customer.user,model_rma_order_line_make_sale_order,rma.group_rma_customer_user,1,1,1,1
-access_rma_order_line_make_sale_order_supplier_user_item,rma.order.line.make.sale.order.supplier.user,model_rma_order_line_make_sale_order,rma.group_rma_supplier_user,1,1,1,1
+access_rma_order_line_make_sale_order_customer_user_item,rma.order.line.make.sale.order.customer.user,model_rma_make_sale_order,rma.group_rma_customer_user,1,1,1,1
+access_rma_order_line_make_sale_order_supplier_user_item,rma.order.line.make.sale.order.supplier.user,model_rma_make_sale_order,rma.group_rma_supplier_user,1,1,1,1
access_rma_order_line_make_sale_order_item_customer_user_item,rma.order.line.make.sale.order.item.customer.user,model_rma_order_line_make_sale_order_item,rma.group_rma_customer_user,1,1,1,1
access_rma_order_line_make_sale_order_item_supplier_user_item,rma.order.line.make.sale.order.item.supplier.user,model_rma_order_line_make_sale_order_item,rma.group_rma_supplier_user,1,1,1,1
access_rma_add_sale_customer_user_item,rma.add.sale.customer.user,model_rma_add_sale,rma.group_rma_customer_user,1,1,1,1
diff --git a/rma_sale/tests/test_rma_sale.py b/rma_sale/tests/test_rma_sale.py
index 903c96092..301b2d563 100644
--- a/rma_sale/tests/test_rma_sale.py
+++ b/rma_sale/tests/test_rma_sale.py
@@ -13,7 +13,7 @@ def setUpClass(cls):
cls.rma_line_obj = cls.env["rma.order.line"]
cls.rma_op_obj = cls.env["rma.operation"]
cls.rma_add_sale_wiz = cls.env["rma_add_sale"]
- cls.rma_make_sale_wiz = cls.env["rma.order.line.make.sale.order"]
+ cls.rma_make_sale_wiz = cls.env["rma.make.sale.order"]
cls.so_obj = cls.env["sale.order"]
cls.sol_obj = cls.env["sale.order.line"]
cls.product_obj = cls.env["product.product"]
diff --git a/rma_sale/views/rma_order_line_view.xml b/rma_sale/views/rma_order_line_view.xml
index 03c5c2393..1f73791d2 100644
--- a/rma_sale/views/rma_order_line_view.xml
+++ b/rma_sale/views/rma_order_line_view.xml
@@ -1,22 +1,37 @@
-
- rma.order.line.form
- rma.order.line
-
-
-
+
+ rma.order.line.form
+ rma.order.line
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
- rma.order.line.form
- rma.order.line
-
-
-
+
+
+
diff --git a/rma_sale/views/rma_order_view.xml b/rma_sale/views/rma_order_view.xml
index 4d8618d02..d3e4010b3 100644
--- a/rma_sale/views/rma_order_view.xml
+++ b/rma_sale/views/rma_order_view.xml
@@ -1,25 +1,70 @@
-
- rma.order.form
- rma.order
-
-
-
-
+ rma.order.form
+ rma.order
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rma_sale/wizards/__init__.py b/rma_sale/wizards/__init__.py
index 64e20f814..69877679a 100644
--- a/rma_sale/wizards/__init__.py
+++ b/rma_sale/wizards/__init__.py
@@ -1,4 +1,4 @@
-from . import rma_order_line_make_sale_order
+from . import rma_make_sale_order
from . import rma_make_picking
from . import rma_refund
from . import rma_add_sale
diff --git a/rma_sale/wizards/rma_add_sale.xml b/rma_sale/wizards/rma_add_sale.xml
index 0e823ec0f..b45418231 100644
--- a/rma_sale/wizards/rma_add_sale.xml
+++ b/rma_sale/wizards/rma_add_sale.xml
@@ -14,13 +14,13 @@
@@ -103,21 +103,4 @@
/>
-
-
- rma.order.form - sale wizard
- rma.order
-
-
-
-
-
-
-
-
diff --git a/rma_sale/wizards/rma_order_line_make_sale_order.py b/rma_sale/wizards/rma_make_sale_order.py
similarity index 75%
rename from rma_sale/wizards/rma_order_line_make_sale_order.py
rename to rma_sale/wizards/rma_make_sale_order.py
index 3b422e45f..f8296c09e 100644
--- a/rma_sale/wizards/rma_order_line_make_sale_order.py
+++ b/rma_sale/wizards/rma_make_sale_order.py
@@ -1,12 +1,13 @@
# Copyright 2020 ForgeFlow S.L.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html)
-from odoo import _, api, exceptions, fields, models
+from odoo import _, api, fields, models
+from odoo.exceptions import ValidationError
-class RmaLineMakeSaleOrder(models.TransientModel):
- _name = "rma.order.line.make.sale.order"
- _description = "Make Sales Order from RMA Line"
+class RmaMakeSaleOrder(models.TransientModel):
+ _name = "rma.make.sale.order"
+ _description = "Make Sales Order from RMA"
partner_id = fields.Many2one(
comodel_name="res.partner",
@@ -43,24 +44,33 @@ def _prepare_item(self, line):
@api.model
def default_get(self, fields_list):
- res = super(RmaLineMakeSaleOrder, self).default_get(fields_list)
+ context = self._context.copy()
+ res = super().default_get(fields_list)
rma_line_obj = self.env["rma.order.line"]
- rma_line_ids = self.env.context["active_ids"] or []
- active_model = self.env.context["active_model"]
+ rma_obj = self.env["rma.order"]
+ active_ids = context.get("active_ids") or []
+ active_model = context.get("active_model")
- if not rma_line_ids:
+ if not active_ids:
return res
- assert active_model == "rma.order.line", "Bad context propagation"
+ assert active_model in [
+ "rma.order.line",
+ "rma.order",
+ ], "Bad context propagation"
items = []
- lines = rma_line_obj.browse(rma_line_ids)
+ if active_model == "rma.order":
+ rma = rma_obj.browse(active_ids)
+ lines = rma.rma_line_ids.filtered(lambda x: x.qty_to_sell > 0)
+ else:
+ lines = rma_line_obj.browse(active_ids)
for line in lines:
items.append([0, 0, self._prepare_item(line)])
customers = lines.mapped("partner_id")
if len(customers) == 1:
res["partner_id"] = customers.id
else:
- raise exceptions.Warning(
+ raise ValidationError(
_(
"Only RMA lines from the same partner can be processed at "
"the same time"
@@ -72,7 +82,7 @@ def default_get(self, fields_list):
@api.model
def _prepare_sale_order(self, line):
if not self.partner_id:
- raise exceptions.Warning(_("Enter a customer."))
+ raise ValidationError(_("Enter a customer."))
customer = self.partner_id
auto = self.env["account.fiscal.position"].search(
[("auto_apply", "=", True), ("country_id", "=", customer.country_id.id)],
@@ -83,8 +93,11 @@ def _prepare_sale_order(self, line):
fiscal_position = customer.property_account_position_id
elif auto:
fiscal_position = auto
+ origin = line.name
+ if self.env.context.get("active_model") == "rma.order":
+ origin = line.rma_id.name
data = {
- "origin": line.name,
+ "origin": origin,
"partner_id": customer.id,
"warehouse_id": line.out_warehouse_id.id,
"company_id": line.company_id.id,
@@ -118,19 +131,20 @@ def make_sale_order(self):
sale_obj = self.env["sale.order"]
so_line_obj = self.env["sale.order.line"]
sale = False
-
for item in self.item_ids:
- line = item.line_id
if item.product_qty <= 0.0:
- raise exceptions.Warning(_("Enter a positive quantity."))
+ raise ValidationError(_("Enter a positive quantity."))
if self.sale_order_id:
sale = self.sale_order_id
if not sale:
+ line = item.line_id
po_data = self._prepare_sale_order(line)
sale = sale_obj.create(po_data)
- sale.name = sale.name + " - " + line.name
-
+ rma = line
+ if self.env.context.get("active_model") == "rma.order":
+ rma = line.rma_id
+ sale.name = sale.name + " - " + rma.name
so_line_data = self._prepare_sale_order_line(sale, item)
sale_line = so_line_obj.create(so_line_data)
self._post_process_sale_order(item, sale_line)
@@ -146,12 +160,8 @@ class RmaLineMakeSaleOrderItem(models.TransientModel):
_name = "rma.order.line.make.sale.order.item"
_description = "RMA Line Make Sale Order Item"
- wiz_id = fields.Many2one(
- comodel_name="rma.order.line.make.sale.order", string="Wizard"
- )
- line_id = fields.Many2one(
- comodel_name="rma.order.line", string="RMA Line", compute="_compute_line_id"
- )
+ wiz_id = fields.Many2one(comodel_name="rma.make.sale.order", string="Wizard")
+ line_id = fields.Many2one(comodel_name="rma.order.line", string="RMA Line")
rma_id = fields.Many2one(
comodel_name="rma.order", related="line_id.rma_id", readonly=False
)
@@ -164,15 +174,6 @@ class RmaLineMakeSaleOrderItem(models.TransientModel):
)
free_of_charge = fields.Boolean(string="Free of Charge")
- def _compute_line_id(self):
- rma_line_obj = self.env["rma.order.line"]
- for rec in self:
- if not self.env.context["active_ids"]:
- return
- rma_line_ids = self.env.context["active_ids"] or []
- lines = rma_line_obj.browse(rma_line_ids)
- rec.line_id = lines[0]
-
@api.onchange("product_id")
def onchange_product_id(self):
if self.product_id:
diff --git a/rma_sale/wizards/rma_order_line_make_sale_order_view.xml b/rma_sale/wizards/rma_make_sale_order_view.xml
similarity index 91%
rename from rma_sale/wizards/rma_order_line_make_sale_order_view.xml
rename to rma_sale/wizards/rma_make_sale_order_view.xml
index 8709ec842..ac7c28d3a 100644
--- a/rma_sale/wizards/rma_order_line_make_sale_order_view.xml
+++ b/rma_sale/wizards/rma_make_sale_order_view.xml
@@ -5,7 +5,7 @@
RMA Line Make Sale Order
- rma.order.line.make.sale.order
+ rma.make.sale.order
form
-
+
Create Sales Quotation
ir.actions.act_window
- rma.order.line.make.sale.order
+ rma.make.sale.order
form
new
diff --git a/rma_sale_force_invoiced/wizards/__init__.py b/rma_sale_force_invoiced/wizards/__init__.py
index 049ccf680..1028f9098 100644
--- a/rma_sale_force_invoiced/wizards/__init__.py
+++ b/rma_sale_force_invoiced/wizards/__init__.py
@@ -1 +1 @@
-from . import rma_order_line_make_sale_order
+from . import rma_make_sale_order
diff --git a/rma_sale_force_invoiced/wizards/rma_order_line_make_sale_order.py b/rma_sale_force_invoiced/wizards/rma_make_sale_order.py
similarity index 61%
rename from rma_sale_force_invoiced/wizards/rma_order_line_make_sale_order.py
rename to rma_sale_force_invoiced/wizards/rma_make_sale_order.py
index 86885a0e8..d57f8a6d2 100644
--- a/rma_sale_force_invoiced/wizards/rma_order_line_make_sale_order.py
+++ b/rma_sale_force_invoiced/wizards/rma_make_sale_order.py
@@ -4,11 +4,11 @@
from odoo import api, models
-class RmaLineMakeSaleOrder(models.TransientModel):
- _inherit = "rma.order.line.make.sale.order"
+class RmaMakeSaleOrder(models.TransientModel):
+ _inherit = "rma.make.sale.order"
@api.model
def _prepare_sale_order(self, line):
- data = super(RmaLineMakeSaleOrder, self)._prepare_sale_order(line)
+ data = super()._prepare_sale_order(line)
data["force_invoiced"] = line.operation_id.sale_force_invoiced
return data