[MIG] rma: Migration to 13.0

This commit is contained in:
Ernesto Tejeda
2020-10-23 15:29:47 -04:00
committed by Víctor Martínez
parent bbc1c95e8e
commit 3408e5bf92
27 changed files with 726 additions and 527 deletions

View File

@@ -7,20 +7,20 @@ Return Merchandise Authorization Management
!! changes will be overwritten. !! !! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png .. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
:target: https://odoo-community.org/page/development-status :target: https://odoo-community.org/page/development-status
:alt: Beta :alt: Production/Stable
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png .. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3 :alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Frma-lightgray.png?logo=github .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Frma-lightgray.png?logo=github
:target: https://github.com/OCA/rma/tree/12.0/rma :target: https://github.com/OCA/rma/tree/13.0/rma
:alt: OCA/rma :alt: OCA/rma
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/rma-12-0/rma-12-0-rma :target: https://translation.odoo-community.org/projects/rma-13-0/rma-13-0-rma
:alt: Translate me on Weblate :alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/145/12.0 :target: https://runbot.odoo-community.org/runbot/145/13.0
:alt: Try me on Runbot :alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5| |badge1| |badge2| |badge3| |badge4| |badge5|
@@ -120,7 +120,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues <https://github.com/OCA/rma/issues>`_. Bugs are tracked on `GitHub Issues <https://github.com/OCA/rma/issues>`_.
In case of trouble, please check there if your issue has already been reported. In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/rma/issues/new?body=module:%20rma%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. `feedback <https://github.com/OCA/rma/issues/new?body=module:%20rma%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues. Do not contact contributors directly about support or help with technical issues.
@@ -162,6 +162,6 @@ Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-ernestotejeda| |maintainer-ernestotejeda|
This module is part of the `OCA/rma <https://github.com/OCA/rma/tree/12.0/rma>`_ project on GitHub. This module is part of the `OCA/rma <https://github.com/OCA/rma/tree/13.0/rma>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@@ -3,19 +3,20 @@
{ {
"name": "Return Merchandise Authorization Management", "name": "Return Merchandise Authorization Management",
"summary": "Return Merchandise Authorization (RMA)", "summary": "Return Merchandise Authorization (RMA)",
"version": "12.0.1.6.0", "version": "13.0.1.0.0",
"development_status": "Beta", "development_status": "Production/Stable",
"category": "RMA", "category": "RMA",
"website": "https://github.com/OCA/rma", "website": "https://github.com/OCA/rma",
"author": "Tecnativa, Odoo Community Association (OCA)", "author": "Tecnativa, Odoo Community Association (OCA)",
"maintainers": ["ernestotejeda"], "maintainers": ["ernestotejeda"],
"license": "AGPL-3", "license": "AGPL-3",
"depends": ["account", "stock",], "depends": ["account", "stock"],
"data": [ "data": [
"views/report_rma.xml", "views/report_rma.xml",
"report/report.xml", "report/report.xml",
"data/mail_data.xml", "data/mail_data.xml",
"data/rma_operation_data.xml", "data/rma_operation_data.xml",
"data/stock_data.xml",
"security/rma_security.xml", "security/rma_security.xml",
"security/ir.model.access.csv", "security/ir.model.access.csv",
"wizard/stock_picking_return_views.xml", "wizard/stock_picking_return_views.xml",

9
rma/data/stock_data.xml Normal file
View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<data noupdate="1">
<record id="stock_location_rma" model="stock.location">
<field name="name">RMA</field>
<field name="location_id" ref="stock.stock_location_locations" />
<field name="usage">view</field>
<field name="company_id" />
</record>
</data>

View File

@@ -23,12 +23,13 @@ def post_init_hook(cr, registry):
def create_rma_locations(warehouse): def create_rma_locations(warehouse):
stock_location = env["stock.location"] stock_location = env["stock.location"]
location_vals = warehouse._get_locations_values({}) if not warehouse.rma_loc_id:
for field_name, values in location_vals.items(): rma_location_vals = warehouse._get_rma_location_values()
if field_name == "rma_loc_id" and not warehouse.rma_loc_id: warehouse.rma_loc_id = (
warehouse.rma_loc_id = ( stock_location.with_context(active_test=False)
stock_location.with_context(active_test=False).create(values).id .create(rma_location_vals)
) .id
)
def create_rma_picking_types(whs): def create_rma_picking_types(whs):
ir_sequence_sudo = env["ir.sequence"].sudo() ir_sequence_sudo = env["ir.sequence"].sudo()

View File

@@ -6,8 +6,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Odoo Server 12.0\n" "Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-06-21 05:13+0000\n" "POT-Creation-Date: 2020-10-23 20:11+0000\n"
"PO-Revision-Date: 2020-10-06 14:16+0000\n" "PO-Revision-Date: 2020-10-23 16:21-0400\n"
"Last-Translator: David Vidal <david.vidal@tecnativa.com>\n" "Last-Translator: David Vidal <david.vidal@tecnativa.com>\n"
"Language-Team: \n" "Language-Team: \n"
"Language: es\n" "Language: es\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.10\n" "X-Generator: Poedit 2.0.6\n"
#. module: rma #. module: rma
#: model:mail.template,report_name:rma.mail_template_rma_notification #: model:mail.template,report_name:rma.mail_template_rma_notification
@@ -28,16 +28,25 @@ msgid "${object.company_id.name} RMA (Ref ${object.name or 'n/a' })"
msgstr "${object.company_id.name} RMA (Ref ${object.name or 'n/a' })" msgstr "${object.company_id.name} RMA (Ref ${object.name or 'n/a' })"
#. module: rma #. module: rma
#: code:addons/rma/models/rma_team.py:46 #: code:addons/rma/models/rma_team.py:0
#, python-format #, python-format
msgid "%s (copy)" msgid "%s (copy)"
msgstr "%s (copia)" msgstr "%s (copia)"
#. module: rma
#: code:addons/rma/models/rma.py:0
#, python-format
msgid "<b>E-mail subject:</b> %s<br/><br/><b>E-mail body:</b><br/>%s"
msgstr ""
"<b>Asunto del correo electrónico:</b> %s<br/><br/><b>Cuerpo del correo "
"electrónico:</b><br/>%s"
#. module: rma #. module: rma
#: model:mail.template,body_html:rma.mail_template_rma_notification #: model:mail.template,body_html:rma.mail_template_rma_notification
#, fuzzy
msgid "" msgid ""
"<div style=\"margin: 0px; padding: 0px;\">\n" "<div style=\"margin: 0px; padding: 0px;\">\n"
"<p style=\"margin: 0px; padding: 0px; font-size: 13px;\">\n" " <p style=\"margin: 0px; padding: 0px; font-size: 13px;\">\n"
" Dear ${object.partner_id.name}\n" " Dear ${object.partner_id.name}\n"
" % if object.partner_id.parent_id:\n" " % if object.partner_id.parent_id:\n"
" (${object.partner_id.parent_id.name})\n" " (${object.partner_id.parent_id.name})\n"
@@ -48,7 +57,7 @@ msgid ""
" <br/><br/>\n" " <br/><br/>\n"
" Do not hesitate to contact us if you have any question.\n" " Do not hesitate to contact us if you have any question.\n"
"</p>\n" "</p>\n"
"</div>\n" " </div>\n"
" " " "
msgstr "" msgstr ""
"<div style=\"margin: 0px; padding: 0px;\">\n" "<div style=\"margin: 0px; padding: 0px;\">\n"
@@ -77,12 +86,18 @@ msgstr ""
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.portal_rma_page #: model_terms:ir.ui.view,arch_db:rma.portal_rma_page
msgid "<i class=\"fa fa-fw fa-check\"/> <b>Paid</b>" #, fuzzy
msgid ""
"<i class=\"fa fa-fw fa-check\"/>\n"
" <b>Paid</b>"
msgstr "<i class=\"fa fa-fw fa-check\"/><b>Pagado</b>" msgstr "<i class=\"fa fa-fw fa-check\"/><b>Pagado</b>"
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.portal_rma_page #: model_terms:ir.ui.view,arch_db:rma.portal_rma_page
msgid "<i class=\"fa fa-fw fa-clock-o\"/> <b>Waiting Payment</b>" #, fuzzy
msgid ""
"<i class=\"fa fa-fw fa-clock-o\"/>\n"
" <b>Waiting Payment</b>"
msgstr "<i class=\"fa fa-fw fa-clock-o\"/><b>Esperando Pago</b>" msgstr "<i class=\"fa fa-fw fa-clock-o\"/><b>Esperando Pago</b>"
#. module: rma #. module: rma
@@ -290,6 +305,11 @@ msgstr "Activo"
msgid "Activities" msgid "Activities"
msgstr "Actividades" msgstr "Actividades"
#. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__activity_exception_decoration
msgid "Activity Exception Decoration"
msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__activity_state #: model:ir.model.fields,field_description:rma.field_rma__activity_state
msgid "Activity State" msgid "Activity State"
@@ -369,7 +389,7 @@ msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__cancelled
msgid "Canceled" msgid "Canceled"
msgstr "Cancelado" msgstr "Cancelado"
@@ -411,7 +431,8 @@ msgid "Confirm"
msgstr "Confirmar" msgstr "Confirmar"
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__confirmed
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search
msgid "Confirmed" msgid "Confirmed"
msgstr "Confirmado" msgstr "Confirmado"
@@ -455,7 +476,7 @@ msgid "Customer Portal URL"
msgstr "URL del portal de cliente" msgstr "URL del portal de cliente"
#. module: rma #. module: rma
#: code:addons/rma/controllers/main.py:42 #: code:addons/rma/controllers/main.py:0
#: model:ir.model.fields,field_description:rma.field_rma__date #: model:ir.model.fields,field_description:rma.field_rma__date
#: model_terms:ir.ui.view,arch_db:rma.portal_my_rmas #: model_terms:ir.ui.view,arch_db:rma.portal_my_rmas
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search #: model_terms:ir.ui.view,arch_db:rma.rma_view_search
@@ -525,7 +546,8 @@ msgid "Display Name"
msgstr "Nombre mostrado" msgstr "Nombre mostrado"
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__draft
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search
msgid "Draft" msgid "Draft"
msgstr "Borrador" msgstr "Borrador"
@@ -535,20 +557,6 @@ msgstr "Borrador"
msgid "Draft RMA" msgid "Draft RMA"
msgstr "RMA en estado Borrador" msgstr "RMA en estado Borrador"
#. module: rma
#: code:addons/rma/models/rma.py:1098
#, python-format
msgid ""
"E-mail subject: %s\n"
"\n"
"E-mail body:\n"
"%s"
msgstr ""
"Asunto del correo electrónico: %s\n"
"\n"
"Cuerpo del correo electrónico:\n"
"%s"
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.rma_team_view_form #: model_terms:ir.ui.view,arch_db:rma.rma_team_view_form
msgid "Email" msgid "Email"
@@ -560,7 +568,7 @@ msgid "Email Alias"
msgstr "Pseudónimo de correo" msgstr "Pseudónimo de correo"
#. module: rma #. module: rma
#: code:addons/rma/wizard/rma_split.py:63 #: code:addons/rma/wizard/rma_split.py:0
#, python-format #, python-format
msgid "Extracted RMA" msgid "Extracted RMA"
msgstr "RMA Extraído" msgstr "RMA Extraído"
@@ -612,20 +620,28 @@ msgstr ""
"contiene el seudónimo para la creación de tareas)" "contiene el seudónimo para la creación de tareas)"
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma__message_unread #: model:ir.model.fields,field_description:rma.field_rma__activity_exception_icon
#: model:ir.model.fields,help:rma.field_rma_team__message_unread msgid "Icon"
msgid "If checked new messages require your attention." msgstr ""
msgstr "Si está marcado, hay nuevos mensajes que requieren su atención."
#. module: rma
#: model:ir.model.fields,help:rma.field_rma__activity_exception_icon
msgid "Icon to indicate an exception activity."
msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma__message_needaction #: model:ir.model.fields,help:rma.field_rma__message_needaction
#: model:ir.model.fields,help:rma.field_rma__message_unread
#: model:ir.model.fields,help:rma.field_rma_team__message_needaction #: model:ir.model.fields,help:rma.field_rma_team__message_needaction
#: model:ir.model.fields,help:rma.field_rma_team__message_unread
msgid "If checked, new messages require your attention." msgid "If checked, new messages require your attention."
msgstr "Si está marcado, hay nuevos mensajes que requieren su atención." msgstr "Si está marcado, hay nuevos mensajes que requieren su atención."
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma__message_has_error #: model:ir.model.fields,help:rma.field_rma__message_has_error
#: model:ir.model.fields,help:rma.field_rma__message_has_sms_error
#: model:ir.model.fields,help:rma.field_rma_team__message_has_error #: model:ir.model.fields,help:rma.field_rma_team__message_has_error
#: model:ir.model.fields,help:rma.field_rma_team__message_has_sms_error
msgid "If checked, some messages have a delivery error." msgid "If checked, some messages have a delivery error."
msgstr "Si se encuentra marcado, algunos mensajes tienen error de envío." msgstr "Si se encuentra marcado, algunos mensajes tienen error de envío."
@@ -639,32 +655,32 @@ msgstr ""
"sin eliminarlo." "sin eliminarlo."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:1102 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "Incoming e-mail" msgid "Incoming e-mail"
msgstr "Correo electrónico entrante" msgstr "Correo electrónico entrante"
#. module: rma
#: model:ir.model,name:rma.model_account_invoice
msgid "Invoice"
msgstr "Factura"
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__partner_invoice_id #: model:ir.model.fields,field_description:rma.field_rma__partner_invoice_id
msgid "Invoice Address" msgid "Invoice Address"
msgstr "Dirección de factura" msgstr "Dirección de factura"
#. module: rma
#: model:ir.model,name:rma.model_account_invoice_line
msgid "Invoice Line"
msgstr "Linea de factura"
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__message_is_follower #: model:ir.model.fields,field_description:rma.field_rma__message_is_follower
#: model:ir.model.fields,field_description:rma.field_rma_team__message_is_follower #: model:ir.model.fields,field_description:rma.field_rma_team__message_is_follower
msgid "Is Follower" msgid "Is Follower"
msgstr "Es un seguidor" msgstr "Es un seguidor"
#. module: rma
#: model:ir.model,name:rma.model_account_move
msgid "Journal Entries"
msgstr ""
#. module: rma
#: model:ir.model,name:rma.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma____last_update #: model:ir.model.fields,field_description:rma.field_rma____last_update
#: model:ir.model.fields,field_description:rma.field_rma_delivery_wizard____last_update #: model:ir.model.fields,field_description:rma.field_rma_delivery_wizard____last_update
@@ -708,7 +724,7 @@ msgid "Lock"
msgstr "Bloquear" msgstr "Bloquear"
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__locked
msgid "Locked" msgid "Locked"
msgstr "Bloqueado" msgstr "Bloqueado"
@@ -741,7 +757,7 @@ msgid "Messages"
msgstr "Mensajes" msgstr "Mensajes"
#. module: rma #. module: rma
#: code:addons/rma/controllers/main.py:43 #: code:addons/rma/controllers/main.py:0
#: model:ir.model.fields,field_description:rma.field_rma__name #: model:ir.model.fields,field_description:rma.field_rma__name
#: model:ir.model.fields,field_description:rma.field_rma_operation__name #: model:ir.model.fields,field_description:rma.field_rma_operation__name
#: model:ir.model.fields,field_description:rma.field_rma_team__name #: model:ir.model.fields,field_description:rma.field_rma_team__name
@@ -750,8 +766,7 @@ msgid "Name"
msgstr "Nombre" msgstr "Nombre"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:31 code:addons/rma/models/rma.py:494 #: code:addons/rma/models/rma.py:0
#: code:addons/rma/models/rma.py:1101
#, python-format #, python-format
msgid "New" msgid "New"
msgstr "Nuevo" msgstr "Nuevo"
@@ -772,24 +787,24 @@ msgid "Next Activity Type"
msgstr "Siguiente tipo de actividad" msgstr "Siguiente tipo de actividad"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:772 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "None of the selected RMAs can perform a replacement." msgid "None of the selected RMAs can perform a replacement."
msgstr "Ninguno de los RMAs seleccionados puede realizar un reemplazo." msgstr "Ninguno de los RMAs seleccionados puede realizar un reemplazo."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:755 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "None of the selected RMAs can perform a return." msgid "None of the selected RMAs can perform a return."
msgstr "Ninguno de los RMAs seleccionados puede realizar una devolución." msgstr "Ninguno de los RMAs seleccionados puede realizar una devolución."
#. module: rma #. module: rma
#: selection:rma,priority:0 #: model:ir.model.fields.selection,name:rma.selection__rma__priority__1
msgid "Normal" msgid "Normal"
msgstr "Normal" msgstr "Normal"
#. module: rma #. module: rma
#: selection:rma,priority:0 #: model:ir.model.fields.selection,name:rma.selection__rma__priority__0
msgid "Not urgent" msgid "Not urgent"
msgstr "No Urgente" msgstr "No Urgente"
@@ -802,8 +817,8 @@ msgstr "Número de acciones"
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__message_has_error_counter #: model:ir.model.fields,field_description:rma.field_rma__message_has_error_counter
#: model:ir.model.fields,field_description:rma.field_rma_team__message_has_error_counter #: model:ir.model.fields,field_description:rma.field_rma_team__message_has_error_counter
msgid "Number of error" msgid "Number of errors"
msgstr "Número de error" msgstr "Número de errores"
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma__message_needaction_counter #: model:ir.model.fields,help:rma.field_rma__message_needaction_counter
@@ -854,11 +869,6 @@ msgstr "Movimiento"
msgid "Other Information" msgid "Other Information"
msgstr "Otra información" msgstr "Otra información"
#. module: rma
#: selection:rma,activity_state:0
msgid "Overdue"
msgstr "Vencidas"
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma_team__alias_user_id #: model:ir.model.fields,field_description:rma.field_rma_team__alias_user_id
msgid "Owner" msgid "Owner"
@@ -889,11 +899,6 @@ msgstr ""
msgid "Partner" msgid "Partner"
msgstr "Empresa" msgstr "Empresa"
#. module: rma
#: selection:rma,activity_state:0
msgid "Planned"
msgstr "Planeado"
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma_team__alias_contact #: model:ir.model.fields,help:rma.field_rma_team__alias_contact
msgid "" msgid ""
@@ -948,7 +953,8 @@ msgid "Quantity"
msgstr "Cantidad" msgstr "Cantidad"
#. module: rma #. module: rma
#: code:addons/rma/wizard/rma_delivery.py:49 sql_constraint:rma.split.wizard:0 #: code:addons/rma/wizard/rma_delivery.py:0
#: model:ir.model.constraint,message:rma.constraint_rma_split_wizard_check_product_uom_qty_positive
#, python-format #, python-format
msgid "Quantity must be greater than 0." msgid "Quantity must be greater than 0."
msgstr "La cantidad debe ser mayor que cero." msgstr "La cantidad debe ser mayor que cero."
@@ -959,7 +965,7 @@ msgid "Quantity to extract"
msgstr "Cantidad a extraer" msgstr "Cantidad a extraer"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:805 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "" msgid ""
"Quantity to extract cannot be greater than remaining delivery quantity (%s " "Quantity to extract cannot be greater than remaining delivery quantity (%s "
@@ -976,7 +982,7 @@ msgstr "Cantidad a extraer en nuevo RMA."
#. module: rma #. module: rma
#: model:ir.actions.act_window,name:rma.rma_action #: model:ir.actions.act_window,name:rma.rma_action
#: model:ir.model,name:rma.model_rma #: model:ir.model,name:rma.model_rma
#: model:ir.model.fields,field_description:rma.field_account_invoice_line__rma_id #: model:ir.model.fields,field_description:rma.field_account_move_line__rma_id
#: model:ir.model.fields,field_description:rma.field_rma_split_wizard__rma_id #: model:ir.model.fields,field_description:rma.field_rma_split_wizard__rma_id
#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma #: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma
#: model:ir.module.category,name:rma.rma_module_category #: model:ir.module.category,name:rma.rma_module_category
@@ -993,7 +999,7 @@ msgid "RMA #"
msgstr "RMA nº" msgstr "RMA nº"
#. module: rma #. module: rma
#: code:addons/rma/models/res_company.py:18 #: code:addons/rma/models/res_company.py:0
#, python-format #, python-format
msgid "RMA Code" msgid "RMA Code"
msgstr "Código de RMA" msgstr "Código de RMA"
@@ -1009,7 +1015,7 @@ msgid "RMA Deadline"
msgstr "RMA fecha límite" msgstr "RMA fecha límite"
#. module: rma #. module: rma
#: code:addons/rma/models/stock_warehouse.py:82 #: code:addons/rma/models/stock_warehouse.py:0
#, python-format #, python-format
msgid "RMA Delivery Orders" msgid "RMA Delivery Orders"
msgstr "Órdenes de entrega de RMA" msgstr "Órdenes de entrega de RMA"
@@ -1047,7 +1053,7 @@ msgid "RMA Out Type"
msgstr "Tipo de operación para entrega de RMA" msgstr "Tipo de operación para entrega de RMA"
#. module: rma #. module: rma
#: code:addons/rma/models/stock_warehouse.py:73 #: code:addons/rma/models/stock_warehouse.py:0
#, python-format #, python-format
msgid "RMA Receipts" msgid "RMA Receipts"
msgstr "Recepciones de RMA" msgstr "Recepciones de RMA"
@@ -1137,7 +1143,8 @@ msgid "Receipt"
msgstr "Recepción" msgstr "Recepción"
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__received
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search
msgid "Received" msgid "Received"
msgstr "Recibido" msgstr "Recibido"
@@ -1157,7 +1164,7 @@ msgid "Reference of the document that generated this RMA."
msgstr "Referencia al documento que generó este RMA." msgstr "Referencia al documento que generó este RMA."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:693 #: code:addons/rma/models/rma.py:0
#: model:ir.model.fields,field_description:rma.field_rma__refund_id #: model:ir.model.fields,field_description:rma.field_rma__refund_id
#: model_terms:ir.ui.view,arch_db:rma.rma_view_form #: model_terms:ir.ui.view,arch_db:rma.rma_view_form
#: model:rma.operation,name:rma.rma_operation_refund #: model:rma.operation,name:rma.rma_operation_refund
@@ -1176,7 +1183,7 @@ msgid "Refund line"
msgstr "Línea de factura rectificativa" msgstr "Línea de factura rectificativa"
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__refunded
msgid "Refunded" msgid "Refunded"
msgstr "Reembolsado" msgstr "Reembolsado"
@@ -1196,8 +1203,8 @@ msgid "Repair"
msgstr "Reparar" msgstr "Reparar"
#. module: rma #. module: rma
#: model:ir.model.fields.selection,name:rma.selection__rma_delivery_wizard__type__replace
#: model_terms:ir.ui.view,arch_db:rma.rma_view_form #: model_terms:ir.ui.view,arch_db:rma.rma_view_form
#: selection:rma.delivery.wizard,type:0
#: model:rma.operation,name:rma.rma_operation_replace #: model:rma.operation,name:rma.rma_operation_replace
msgid "Replace" msgid "Replace"
msgstr "Reemplazar" msgstr "Reemplazar"
@@ -1208,12 +1215,12 @@ msgid "Replace Product"
msgstr "Reemplazar producto" msgstr "Reemplazar producto"
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__replaced
msgid "Replaced" msgid "Replaced"
msgstr "Reemplazado" msgstr "Reemplazado"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:1011 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "" msgid ""
"Replacement: Move <a href=\"#\" data-oe-model=\"stock.move\" data-oe-id=\"%d" "Replacement: Move <a href=\"#\" data-oe-model=\"stock.move\" data-oe-id=\"%d"
@@ -1225,7 +1232,7 @@ msgstr ""
"picking\" data-oe-id=\"%d\">%s</a>) ha sido creado." "picking\" data-oe-id=\"%d\">%s</a>) ha sido creado."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:1022 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "" msgid ""
"Replacement:<br/>Product <a href=\"#\" data-oe-model=\"product.product\" " "Replacement:<br/>Product <a href=\"#\" data-oe-model=\"product.product\" "
@@ -1249,7 +1256,7 @@ msgid "Requested operation"
msgstr "Operación solicitada" msgstr "Operación solicitada"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:736 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "Required field(s):%s" msgid "Required field(s):%s"
msgstr "Campo(s) requerido(s):%s" msgstr "Campo(s) requerido(s):%s"
@@ -1272,13 +1279,13 @@ msgstr "Albarán de devolución"
#. module: rma #. module: rma
#: model:ir.actions.act_window,name:rma.rma_delivery_wizard_action #: model:ir.actions.act_window,name:rma.rma_delivery_wizard_action
#: model:ir.model.fields.selection,name:rma.selection__rma_delivery_wizard__type__return
#: model_terms:ir.ui.view,arch_db:rma.rma_view_form #: model_terms:ir.ui.view,arch_db:rma.rma_view_form
#: selection:rma.delivery.wizard,type:0
msgid "Return to customer" msgid "Return to customer"
msgstr "Devolver al cliente" msgstr "Devolver al cliente"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:972 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "" msgid ""
"Return: <a href=\"#\" data-oe-model=\"stock.picking\" data-oe-id=\"%d\">%s</" "Return: <a href=\"#\" data-oe-model=\"stock.picking\" data-oe-id=\"%d\">%s</"
@@ -1288,7 +1295,7 @@ msgstr ""
"\" data-oe-id=\"%d\">%s</a> ha sido creada." "\" data-oe-id=\"%d\">%s</a> ha sido creada."
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__returned
msgid "Returned" msgid "Returned"
msgstr "Devuelto" msgstr "Devuelto"
@@ -1297,6 +1304,13 @@ msgstr "Devuelto"
msgid "Rma Count" msgid "Rma Count"
msgstr "Cantidad de RMAs" msgstr "Cantidad de RMAs"
#. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__message_has_sms_error
#: model:ir.model.fields,field_description:rma.field_rma_team__message_has_sms_error
#, fuzzy
msgid "SMS Delivery error"
msgstr "Error de Envío de Mensaje"
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma_delivery_wizard__scheduled_date #: model:ir.model.fields,field_description:rma.field_rma_delivery_wizard__scheduled_date
msgid "Scheduled Date" msgid "Scheduled Date"
@@ -1328,13 +1342,13 @@ msgid "Sequence"
msgstr "Secuencia" msgstr "Secuencia"
#. module: rma #. module: rma
#: code:addons/rma/models/stock_warehouse.py:48 #: code:addons/rma/models/stock_warehouse.py:0
#, python-format #, python-format
msgid "Sequence RMA in" msgid "Sequence RMA in"
msgstr "Secuencia de recepción de RMA" msgstr "Secuencia de recepción de RMA"
#. module: rma #. module: rma
#: code:addons/rma/models/stock_warehouse.py:53 #: code:addons/rma/models/stock_warehouse.py:0
#, python-format #, python-format
msgid "Sequence RMA out" msgid "Sequence RMA out"
msgstr "Secuencia de entrega de RMA" msgstr "Secuencia de entrega de RMA"
@@ -1366,7 +1380,7 @@ msgid "Split RMA"
msgstr "Dividir RMA" msgstr "Dividir RMA"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:889 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "" msgid ""
"Split: <a href=\"#\" data-oe-model=\"rma\" data-oe-id=\"%d\">%s</a> has been " "Split: <a href=\"#\" data-oe-model=\"rma\" data-oe-id=\"%d\">%s</a> has been "
@@ -1382,7 +1396,7 @@ msgid "State"
msgstr "Estado" msgstr "Estado"
#. module: rma #. module: rma
#: code:addons/rma/controllers/main.py:44 #: code:addons/rma/controllers/main.py:0
#: model_terms:ir.ui.view,arch_db:rma.portal_my_rmas #: model_terms:ir.ui.view,arch_db:rma.portal_my_rmas
#, python-format #, python-format
msgid "Status" msgid "Status"
@@ -1423,7 +1437,7 @@ msgid "Team Members"
msgstr "Miembros del equipo" msgstr "Miembros del equipo"
#. module: rma #. module: rma
#: sql_constraint:rma.operation:0 #: model:ir.model.constraint,message:rma.constraint_rma_operation_name_uniq
msgid "That operation name already exists !" msgid "That operation name already exists !"
msgstr "¡El nombre de operación ya existe!" msgstr "¡El nombre de operación ya existe!"
@@ -1462,7 +1476,7 @@ msgstr ""
"dirección." "dirección."
#. module: rma #. module: rma
#: code:addons/rma/models/stock_move.py:64 #: code:addons/rma/models/stock_move.py:0
#, python-format #, python-format
msgid "" msgid ""
"The quantity done for the product '%s' must be equal to its initial demand " "The quantity done for the product '%s' must be equal to its initial demand "
@@ -1472,13 +1486,13 @@ msgstr ""
"inicial porque el movimiento está enlazado a un RMA (%s)." "inicial porque el movimiento está enlazado a un RMA (%s)."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:793 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "The quantity to return is greater than remaining quantity." msgid "The quantity to return is greater than remaining quantity."
msgstr "La cantidad a devolver es mayor que la cantidad restante del RMA." msgstr "La cantidad a devolver es mayor que la cantidad restante del RMA."
#. module: rma #. module: rma
#: code:addons/rma/models/account_invoice.py:22 #: code:addons/rma/models/account_move.py:0
#, python-format #, python-format
msgid "" msgid ""
"There is at least one invoice lines whose quantity is less than the quantity " "There is at least one invoice lines whose quantity is less than the quantity "
@@ -1488,19 +1502,19 @@ msgstr ""
"cantidad especificada en el RMA asociado." "cantidad especificada en el RMA asociado."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:782 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "This RMA cannot be split." msgid "This RMA cannot be split."
msgstr "Este RMA no puede ser dividido." msgstr "Este RMA no puede ser dividido."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:769 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "This RMA cannot perform a replacement." msgid "This RMA cannot perform a replacement."
msgstr "Este RMA no puede realizar un reemplazo." msgstr "Este RMA no puede realizar un reemplazo."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:752 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "This RMA cannot perform a return." msgid "This RMA cannot perform a return."
msgstr "Este RMA no puede realizar una devolución." msgstr "Este RMA no puede realizar una devolución."
@@ -1511,11 +1525,6 @@ msgstr "Este RMA no puede realizar una devolución."
msgid "To Refund" msgid "To Refund"
msgstr "Reembolsar" msgstr "Reembolsar"
#. module: rma
#: selection:rma,activity_state:0
msgid "Today"
msgstr "Hoy"
#. module: rma #. module: rma
#: model:ir.model,name:rma.model_stock_picking #: model:ir.model,name:rma.model_stock_picking
msgid "Transfer" msgid "Transfer"
@@ -1531,6 +1540,11 @@ msgstr "Tipo"
msgid "Type of Operation" msgid "Type of Operation"
msgstr "Tipo de operación" msgstr "Tipo de operación"
#. module: rma
#: model:ir.model.fields,help:rma.field_rma__activity_exception_decoration
msgid "Type of the exception activity on record."
msgstr ""
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search #: model_terms:ir.ui.view,arch_db:rma.rma_view_search
msgid "Unassigned RMAs" msgid "Unassigned RMAs"
@@ -1570,7 +1584,7 @@ msgid "UoM"
msgstr "UdM" msgstr "UdM"
#. module: rma #. module: rma
#: selection:rma,priority:0 #: model:ir.model.fields.selection,name:rma.selection__rma__priority__2
msgid "Urgent" msgid "Urgent"
msgstr "Urgente" msgstr "Urgente"
@@ -1590,17 +1604,17 @@ msgid "Users"
msgstr "Usuarios" msgstr "Usuarios"
#. module: rma #. module: rma
#: selection:rma,priority:0 #: model:ir.model.fields.selection,name:rma.selection__rma__priority__3
msgid "Very Urgent" msgid "Very Urgent"
msgstr "Muy Urgente" msgstr "Muy Urgente"
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__waiting_replacement
msgid "Waiting for replacement" msgid "Waiting for replacement"
msgstr "Esperando por reemplazo" msgstr "Esperando por reemplazo"
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__waiting_return
msgid "Waiting for return" msgid "Waiting for return"
msgstr "Esperando por devolución" msgstr "Esperando por devolución"
@@ -1624,13 +1638,13 @@ msgid "Website communication history"
msgstr "Historial de comunicaciones del sitio web" msgstr "Historial de comunicaciones del sitio web"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:516 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "You cannot delete RMAs that are not in draft state" msgid "You cannot delete RMAs that are not in draft state"
msgstr "No puede eliminar RMAs que no estén en estado borrador" msgstr "No puede eliminar RMAs que no estén en estado borrador"
#. module: rma #. module: rma
#: code:addons/rma/wizard/stock_picking_return.py:55 #: code:addons/rma/wizard/stock_picking_return.py:0
#, python-format #, python-format
msgid "" msgid ""
"You must specify the 'Customer' in the 'Stock Picking' from which RMAs will " "You must specify the 'Customer' in the 'Stock Picking' from which RMAs will "
@@ -1639,6 +1653,11 @@ msgstr ""
"Debe seleccionar el 'Cliente' en la 'Orden de Entrega' desde la cual los " "Debe seleccionar el 'Cliente' en la 'Orden de Entrega' desde la cual los "
"RMAs serán creados" "RMAs serán creados"
#. module: rma
#: model:ir.actions.report,print_report_name:rma.report_rma_action
msgid "object._get_report_base_filename()"
msgstr ""
#. module: rma #. module: rma
#: model:res.groups,comment:rma.rma_group_user_all #: model:res.groups,comment:rma.rma_group_user_all
msgid "" msgid ""
@@ -1660,6 +1679,24 @@ msgstr ""
"El usuario tendrá acceso a la configuración de RMA y a los informes " "El usuario tendrá acceso a la configuración de RMA y a los informes "
"estadísticos." "estadísticos."
#~ msgid "If checked new messages require your attention."
#~ msgstr "Si está marcado, hay nuevos mensajes que requieren su atención."
#~ msgid "Invoice"
#~ msgstr "Factura"
#~ msgid "Invoice Line"
#~ msgstr "Linea de factura"
#~ msgid "Overdue"
#~ msgstr "Vencidas"
#~ msgid "Planned"
#~ msgstr "Planeado"
#~ msgid "Today"
#~ msgstr "Hoy"
#~ msgid "Waiting for refund" #~ msgid "Waiting for refund"
#~ msgstr "Esperando por reembolso" #~ msgstr "Esperando por reembolso"

View File

@@ -27,16 +27,22 @@ msgid "${object.company_id.name} RMA (Ref ${object.name or 'n/a' })"
msgstr "${object.company_id.name} RMA (Ref ${object.name or 'n/a' })" msgstr "${object.company_id.name} RMA (Ref ${object.name or 'n/a' })"
#. module: rma #. module: rma
#: code:addons/rma/models/rma_team.py:46 #: code:addons/rma/models/rma_team.py:0
#, python-format #, python-format
msgid "%s (copy)" msgid "%s (copy)"
msgstr "%s (Cópia)" msgstr "%s (Cópia)"
#. module: rma
#: code:addons/rma/models/rma.py:0
#, python-format
msgid "<b>E-mail subject:</b> %s<br/><br/><b>E-mail body:</b><br/>%s"
msgstr ""
#. module: rma #. module: rma
#: model:mail.template,body_html:rma.mail_template_rma_notification #: model:mail.template,body_html:rma.mail_template_rma_notification
msgid "" msgid ""
"<div style=\"margin: 0px; padding: 0px;\">\n" "<div style=\"margin: 0px; padding: 0px;\">\n"
"<p style=\"margin: 0px; padding: 0px; font-size: 13px;\">\n" " <p style=\"margin: 0px; padding: 0px; font-size: 13px;\">\n"
" Dear ${object.partner_id.name}\n" " Dear ${object.partner_id.name}\n"
" % if object.partner_id.parent_id:\n" " % if object.partner_id.parent_id:\n"
" (${object.partner_id.parent_id.name})\n" " (${object.partner_id.parent_id.name})\n"
@@ -47,23 +53,9 @@ msgid ""
" <br/><br/>\n" " <br/><br/>\n"
" Do not hesitate to contact us if you have any question.\n" " Do not hesitate to contact us if you have any question.\n"
"</p>\n" "</p>\n"
"</div>\n" " </div>\n"
" " " "
msgstr "" msgstr ""
"<div style=\"margin: 0px; padding: 0px;\">\n"
"<p style=\"margin: 0px; padding: 0px; font-size: 13px;\">\n"
" Dear ${object.partner_id.name}\n"
" % if object.partner_id.parent_id:\n"
" (${object.partner_id.parent_id.name})\n"
" % endif\n"
" <br/><br/>\n"
" Aqui está o RMA <strong>${object.name}</strong> from ${object.company_id."
"name}.\n"
" <br/><br/>\n"
" Não deixe de nos contactar se houver qualquer dúvida ou outra questão.\n"
"</p>\n"
"</div>\n"
" "
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.portal_rma_page #: model_terms:ir.ui.view,arch_db:rma.portal_rma_page
@@ -76,13 +68,17 @@ msgstr ""
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.portal_rma_page #: model_terms:ir.ui.view,arch_db:rma.portal_rma_page
msgid "<i class=\"fa fa-fw fa-check\"/> <b>Paid</b>" msgid ""
msgstr "<i class=\"fa fa-fw fa-check\"/> <b>Pago</b>" "<i class=\"fa fa-fw fa-check\"/>\n"
" <b>Paid</b>"
msgstr ""
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.portal_rma_page #: model_terms:ir.ui.view,arch_db:rma.portal_rma_page
msgid "<i class=\"fa fa-fw fa-clock-o\"/> <b>Waiting Payment</b>" msgid ""
msgstr "<i class=\"fa fa-fw fa-clock-o\"/> <b>Aguardando Pagamento</b>" "<i class=\"fa fa-fw fa-clock-o\"/>\n"
" <b>Waiting Payment</b>"
msgstr ""
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.portal_rma_page #: model_terms:ir.ui.view,arch_db:rma.portal_rma_page
@@ -289,6 +285,11 @@ msgstr "Ativar/Ativo(a)"
msgid "Activities" msgid "Activities"
msgstr "Atividades" msgstr "Atividades"
#. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__activity_exception_decoration
msgid "Activity Exception Decoration"
msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__activity_state #: model:ir.model.fields,field_description:rma.field_rma__activity_state
msgid "Activity State" msgid "Activity State"
@@ -368,7 +369,7 @@ msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__cancelled
msgid "Canceled" msgid "Canceled"
msgstr "Cancelado(a)" msgstr "Cancelado(a)"
@@ -410,7 +411,8 @@ msgid "Confirm"
msgstr "Confirmar" msgstr "Confirmar"
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__confirmed
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search
msgid "Confirmed" msgid "Confirmed"
msgstr "Confirmado(a)" msgstr "Confirmado(a)"
@@ -454,7 +456,7 @@ msgid "Customer Portal URL"
msgstr "URL do portal do cliente" msgstr "URL do portal do cliente"
#. module: rma #. module: rma
#: code:addons/rma/controllers/main.py:42 #: code:addons/rma/controllers/main.py:0
#: model:ir.model.fields,field_description:rma.field_rma__date #: model:ir.model.fields,field_description:rma.field_rma__date
#: model_terms:ir.ui.view,arch_db:rma.portal_my_rmas #: model_terms:ir.ui.view,arch_db:rma.portal_my_rmas
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search #: model_terms:ir.ui.view,arch_db:rma.rma_view_search
@@ -524,7 +526,8 @@ msgid "Display Name"
msgstr "Exibir Nome" msgstr "Exibir Nome"
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__draft
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search
msgid "Draft" msgid "Draft"
msgstr "Rascunho" msgstr "Rascunho"
@@ -534,20 +537,6 @@ msgstr "Rascunho"
msgid "Draft RMA" msgid "Draft RMA"
msgstr "Rascunho do RMA" msgstr "Rascunho do RMA"
#. module: rma
#: code:addons/rma/models/rma.py:1098
#, python-format
msgid ""
"E-mail subject: %s\n"
"\n"
"E-mail body:\n"
"%s"
msgstr ""
"Assunto do E-mail: %s\n"
"\n"
"Corpo do E-mail:\n"
"%s"
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.rma_team_view_form #: model_terms:ir.ui.view,arch_db:rma.rma_team_view_form
msgid "Email" msgid "Email"
@@ -559,7 +548,7 @@ msgid "Email Alias"
msgstr "Alias do Email" msgstr "Alias do Email"
#. module: rma #. module: rma
#: code:addons/rma/wizard/rma_split.py:63 #: code:addons/rma/wizard/rma_split.py:0
#, python-format #, python-format
msgid "Extracted RMA" msgid "Extracted RMA"
msgstr "RMA Extraído" msgstr "RMA Extraído"
@@ -611,20 +600,28 @@ msgstr ""
"de criação da tarefa)" "de criação da tarefa)"
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma__message_unread #: model:ir.model.fields,field_description:rma.field_rma__activity_exception_icon
#: model:ir.model.fields,help:rma.field_rma_team__message_unread msgid "Icon"
msgid "If checked new messages require your attention." msgstr ""
msgstr "Se marcada, novas mensagens requerem sua atenção."
#. module: rma
#: model:ir.model.fields,help:rma.field_rma__activity_exception_icon
msgid "Icon to indicate an exception activity."
msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma__message_needaction #: model:ir.model.fields,help:rma.field_rma__message_needaction
#: model:ir.model.fields,help:rma.field_rma__message_unread
#: model:ir.model.fields,help:rma.field_rma_team__message_needaction #: model:ir.model.fields,help:rma.field_rma_team__message_needaction
#: model:ir.model.fields,help:rma.field_rma_team__message_unread
msgid "If checked, new messages require your attention." msgid "If checked, new messages require your attention."
msgstr "Se marcada, novas mensagens requerem sua atenção." msgstr "Se marcada, novas mensagens requerem sua atenção."
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma__message_has_error #: model:ir.model.fields,help:rma.field_rma__message_has_error
#: model:ir.model.fields,help:rma.field_rma__message_has_sms_error
#: model:ir.model.fields,help:rma.field_rma_team__message_has_error #: model:ir.model.fields,help:rma.field_rma_team__message_has_error
#: model:ir.model.fields,help:rma.field_rma_team__message_has_sms_error
msgid "If checked, some messages have a delivery error." msgid "If checked, some messages have a delivery error."
msgstr "Se marcada, algumas mensagens apresentam um erro de entrega." msgstr "Se marcada, algumas mensagens apresentam um erro de entrega."
@@ -638,32 +635,32 @@ msgstr ""
"sem removê-lo." "sem removê-lo."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:1102 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "Incoming e-mail" msgid "Incoming e-mail"
msgstr "E-mail recebido" msgstr "E-mail recebido"
#. module: rma
#: model:ir.model,name:rma.model_account_invoice
msgid "Invoice"
msgstr "Fatura"
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__partner_invoice_id #: model:ir.model.fields,field_description:rma.field_rma__partner_invoice_id
msgid "Invoice Address" msgid "Invoice Address"
msgstr "Endereço de Faturamento" msgstr "Endereço de Faturamento"
#. module: rma
#: model:ir.model,name:rma.model_account_invoice_line
msgid "Invoice Line"
msgstr "Linha da Fatura"
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__message_is_follower #: model:ir.model.fields,field_description:rma.field_rma__message_is_follower
#: model:ir.model.fields,field_description:rma.field_rma_team__message_is_follower #: model:ir.model.fields,field_description:rma.field_rma_team__message_is_follower
msgid "Is Follower" msgid "Is Follower"
msgstr "É Seguidor" msgstr "É Seguidor"
#. module: rma
#: model:ir.model,name:rma.model_account_move
msgid "Journal Entries"
msgstr ""
#. module: rma
#: model:ir.model,name:rma.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma____last_update #: model:ir.model.fields,field_description:rma.field_rma____last_update
#: model:ir.model.fields,field_description:rma.field_rma_delivery_wizard____last_update #: model:ir.model.fields,field_description:rma.field_rma_delivery_wizard____last_update
@@ -707,7 +704,7 @@ msgid "Lock"
msgstr "Travar" msgstr "Travar"
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__locked
msgid "Locked" msgid "Locked"
msgstr "Travado" msgstr "Travado"
@@ -740,7 +737,7 @@ msgid "Messages"
msgstr "Mensagens" msgstr "Mensagens"
#. module: rma #. module: rma
#: code:addons/rma/controllers/main.py:43 #: code:addons/rma/controllers/main.py:0
#: model:ir.model.fields,field_description:rma.field_rma__name #: model:ir.model.fields,field_description:rma.field_rma__name
#: model:ir.model.fields,field_description:rma.field_rma_operation__name #: model:ir.model.fields,field_description:rma.field_rma_operation__name
#: model:ir.model.fields,field_description:rma.field_rma_team__name #: model:ir.model.fields,field_description:rma.field_rma_team__name
@@ -749,8 +746,7 @@ msgid "Name"
msgstr "Nome" msgstr "Nome"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:31 code:addons/rma/models/rma.py:494 #: code:addons/rma/models/rma.py:0
#: code:addons/rma/models/rma.py:1101
#, python-format #, python-format
msgid "New" msgid "New"
msgstr "Novo(a)" msgstr "Novo(a)"
@@ -771,24 +767,24 @@ msgid "Next Activity Type"
msgstr "Tipo da Próxima Atividade" msgstr "Tipo da Próxima Atividade"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:772 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "None of the selected RMAs can perform a replacement." msgid "None of the selected RMAs can perform a replacement."
msgstr "Nenhum dos RMAs selecionados pode executar uma substituição." msgstr "Nenhum dos RMAs selecionados pode executar uma substituição."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:755 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "None of the selected RMAs can perform a return." msgid "None of the selected RMAs can perform a return."
msgstr "Nenhum dos RMAs selecionados pode executar uma devolução." msgstr "Nenhum dos RMAs selecionados pode executar uma devolução."
#. module: rma #. module: rma
#: selection:rma,priority:0 #: model:ir.model.fields.selection,name:rma.selection__rma__priority__1
msgid "Normal" msgid "Normal"
msgstr "Normal" msgstr "Normal"
#. module: rma #. module: rma
#: selection:rma,priority:0 #: model:ir.model.fields.selection,name:rma.selection__rma__priority__0
msgid "Not urgent" msgid "Not urgent"
msgstr "Não é urgente" msgstr "Não é urgente"
@@ -801,8 +797,8 @@ msgstr "Número de Ações"
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__message_has_error_counter #: model:ir.model.fields,field_description:rma.field_rma__message_has_error_counter
#: model:ir.model.fields,field_description:rma.field_rma_team__message_has_error_counter #: model:ir.model.fields,field_description:rma.field_rma_team__message_has_error_counter
msgid "Number of error" msgid "Number of errors"
msgstr "Número de Erros" msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma__message_needaction_counter #: model:ir.model.fields,help:rma.field_rma__message_needaction_counter
@@ -853,11 +849,6 @@ msgstr "Origem da Movimentação"
msgid "Other Information" msgid "Other Information"
msgstr "Outra Informação" msgstr "Outra Informação"
#. module: rma
#: selection:rma,activity_state:0
msgid "Overdue"
msgstr "Vencidos(as)"
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma_team__alias_user_id #: model:ir.model.fields,field_description:rma.field_rma_team__alias_user_id
msgid "Owner" msgid "Owner"
@@ -889,11 +880,6 @@ msgstr ""
msgid "Partner" msgid "Partner"
msgstr "Parceiro" msgstr "Parceiro"
#. module: rma
#: selection:rma,activity_state:0
msgid "Planned"
msgstr "Planejado)a)"
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma_team__alias_contact #: model:ir.model.fields,help:rma.field_rma_team__alias_contact
msgid "" msgid ""
@@ -947,7 +933,8 @@ msgid "Quantity"
msgstr "Quantidade" msgstr "Quantidade"
#. module: rma #. module: rma
#: code:addons/rma/wizard/rma_delivery.py:49 sql_constraint:rma.split.wizard:0 #: code:addons/rma/wizard/rma_delivery.py:0
#: model:ir.model.constraint,message:rma.constraint_rma_split_wizard_check_product_uom_qty_positive
#, python-format #, python-format
msgid "Quantity must be greater than 0." msgid "Quantity must be greater than 0."
msgstr "Quantidade precisa ser maior que zero." msgstr "Quantidade precisa ser maior que zero."
@@ -958,7 +945,7 @@ msgid "Quantity to extract"
msgstr "Quantidade a extrair" msgstr "Quantidade a extrair"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:805 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "" msgid ""
"Quantity to extract cannot be greater than remaining delivery quantity (%s " "Quantity to extract cannot be greater than remaining delivery quantity (%s "
@@ -975,7 +962,7 @@ msgstr "Quantidade a extrair para um novo RMA."
#. module: rma #. module: rma
#: model:ir.actions.act_window,name:rma.rma_action #: model:ir.actions.act_window,name:rma.rma_action
#: model:ir.model,name:rma.model_rma #: model:ir.model,name:rma.model_rma
#: model:ir.model.fields,field_description:rma.field_account_invoice_line__rma_id #: model:ir.model.fields,field_description:rma.field_account_move_line__rma_id
#: model:ir.model.fields,field_description:rma.field_rma_split_wizard__rma_id #: model:ir.model.fields,field_description:rma.field_rma_split_wizard__rma_id
#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma #: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma
#: model:ir.module.category,name:rma.rma_module_category #: model:ir.module.category,name:rma.rma_module_category
@@ -992,7 +979,7 @@ msgid "RMA #"
msgstr "RMA #" msgstr "RMA #"
#. module: rma #. module: rma
#: code:addons/rma/models/res_company.py:18 #: code:addons/rma/models/res_company.py:0
#, python-format #, python-format
msgid "RMA Code" msgid "RMA Code"
msgstr "Código RMA" msgstr "Código RMA"
@@ -1008,7 +995,7 @@ msgid "RMA Deadline"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/stock_warehouse.py:82 #: code:addons/rma/models/stock_warehouse.py:0
#, python-format #, python-format
msgid "RMA Delivery Orders" msgid "RMA Delivery Orders"
msgstr "Pedidos de Entrega RMA" msgstr "Pedidos de Entrega RMA"
@@ -1046,7 +1033,7 @@ msgid "RMA Out Type"
msgstr "Tipo Saída RMA" msgstr "Tipo Saída RMA"
#. module: rma #. module: rma
#: code:addons/rma/models/stock_warehouse.py:73 #: code:addons/rma/models/stock_warehouse.py:0
#, python-format #, python-format
msgid "RMA Receipts" msgid "RMA Receipts"
msgstr "Recebimentos RMA" msgstr "Recebimentos RMA"
@@ -1135,7 +1122,8 @@ msgid "Receipt"
msgstr "Recebimento" msgstr "Recebimento"
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__received
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search
msgid "Received" msgid "Received"
msgstr "Recebido" msgstr "Recebido"
@@ -1155,7 +1143,7 @@ msgid "Reference of the document that generated this RMA."
msgstr "Referência do documento que gerou este RMA." msgstr "Referência do documento que gerou este RMA."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:693 #: code:addons/rma/models/rma.py:0
#: model:ir.model.fields,field_description:rma.field_rma__refund_id #: model:ir.model.fields,field_description:rma.field_rma__refund_id
#: model_terms:ir.ui.view,arch_db:rma.rma_view_form #: model_terms:ir.ui.view,arch_db:rma.rma_view_form
#: model:rma.operation,name:rma.rma_operation_refund #: model:rma.operation,name:rma.rma_operation_refund
@@ -1174,7 +1162,7 @@ msgid "Refund line"
msgstr "Linha de Restituição" msgstr "Linha de Restituição"
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__refunded
msgid "Refunded" msgid "Refunded"
msgstr "Restituído" msgstr "Restituído"
@@ -1194,8 +1182,8 @@ msgid "Repair"
msgstr "Reparo" msgstr "Reparo"
#. module: rma #. module: rma
#: model:ir.model.fields.selection,name:rma.selection__rma_delivery_wizard__type__replace
#: model_terms:ir.ui.view,arch_db:rma.rma_view_form #: model_terms:ir.ui.view,arch_db:rma.rma_view_form
#: selection:rma.delivery.wizard,type:0
#: model:rma.operation,name:rma.rma_operation_replace #: model:rma.operation,name:rma.rma_operation_replace
msgid "Replace" msgid "Replace"
msgstr "Substituir" msgstr "Substituir"
@@ -1206,12 +1194,12 @@ msgid "Replace Product"
msgstr "Substituir Produto" msgstr "Substituir Produto"
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__replaced
msgid "Replaced" msgid "Replaced"
msgstr "Substituído" msgstr "Substituído"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:1011 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "" msgid ""
"Replacement: Move <a href=\"#\" data-oe-model=\"stock.move\" data-oe-id=\"%d" "Replacement: Move <a href=\"#\" data-oe-model=\"stock.move\" data-oe-id=\"%d"
@@ -1223,7 +1211,7 @@ msgstr ""
"data-oe-id=\"%d\">%s</a> foi criada." "data-oe-id=\"%d\">%s</a> foi criada."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:1022 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "" msgid ""
"Replacement:<br/>Product <a href=\"#\" data-oe-model=\"product.product\" " "Replacement:<br/>Product <a href=\"#\" data-oe-model=\"product.product\" "
@@ -1247,7 +1235,7 @@ msgid "Requested operation"
msgstr "Operação Solicitada" msgstr "Operação Solicitada"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:736 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "Required field(s):%s" msgid "Required field(s):%s"
msgstr "Campo(s) Solicitado(s):%s" msgstr "Campo(s) Solicitado(s):%s"
@@ -1270,13 +1258,13 @@ msgstr "Retorno de Coleta"
#. module: rma #. module: rma
#: model:ir.actions.act_window,name:rma.rma_delivery_wizard_action #: model:ir.actions.act_window,name:rma.rma_delivery_wizard_action
#: model:ir.model.fields.selection,name:rma.selection__rma_delivery_wizard__type__return
#: model_terms:ir.ui.view,arch_db:rma.rma_view_form #: model_terms:ir.ui.view,arch_db:rma.rma_view_form
#: selection:rma.delivery.wizard,type:0
msgid "Return to customer" msgid "Return to customer"
msgstr "Retornar ao cliente" msgstr "Retornar ao cliente"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:972 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "" msgid ""
"Return: <a href=\"#\" data-oe-model=\"stock.picking\" data-oe-id=\"%d\">%s</" "Return: <a href=\"#\" data-oe-model=\"stock.picking\" data-oe-id=\"%d\">%s</"
@@ -1286,7 +1274,7 @@ msgstr ""
"a> foi criado." "a> foi criado."
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__returned
msgid "Returned" msgid "Returned"
msgstr "Retornado(a)" msgstr "Retornado(a)"
@@ -1295,6 +1283,12 @@ msgstr "Retornado(a)"
msgid "Rma Count" msgid "Rma Count"
msgstr "Contagem de RMA" msgstr "Contagem de RMA"
#. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__message_has_sms_error
#: model:ir.model.fields,field_description:rma.field_rma_team__message_has_sms_error
msgid "SMS Delivery error"
msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma_delivery_wizard__scheduled_date #: model:ir.model.fields,field_description:rma.field_rma_delivery_wizard__scheduled_date
msgid "Scheduled Date" msgid "Scheduled Date"
@@ -1326,13 +1320,13 @@ msgid "Sequence"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/stock_warehouse.py:48 #: code:addons/rma/models/stock_warehouse.py:0
#, python-format #, python-format
msgid "Sequence RMA in" msgid "Sequence RMA in"
msgstr "Sequência de Entrada RMA" msgstr "Sequência de Entrada RMA"
#. module: rma #. module: rma
#: code:addons/rma/models/stock_warehouse.py:53 #: code:addons/rma/models/stock_warehouse.py:0
#, python-format #, python-format
msgid "Sequence RMA out" msgid "Sequence RMA out"
msgstr "Sequência de Saída RMA" msgstr "Sequência de Saída RMA"
@@ -1364,7 +1358,7 @@ msgid "Split RMA"
msgstr "Dividir RMA" msgstr "Dividir RMA"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:889 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "" msgid ""
"Split: <a href=\"#\" data-oe-model=\"rma\" data-oe-id=\"%d\">%s</a> has been " "Split: <a href=\"#\" data-oe-model=\"rma\" data-oe-id=\"%d\">%s</a> has been "
@@ -1380,7 +1374,7 @@ msgid "State"
msgstr "Situação" msgstr "Situação"
#. module: rma #. module: rma
#: code:addons/rma/controllers/main.py:44 #: code:addons/rma/controllers/main.py:0
#: model_terms:ir.ui.view,arch_db:rma.portal_my_rmas #: model_terms:ir.ui.view,arch_db:rma.portal_my_rmas
#, python-format #, python-format
msgid "Status" msgid "Status"
@@ -1421,7 +1415,7 @@ msgid "Team Members"
msgstr "Membros da Equipe" msgstr "Membros da Equipe"
#. module: rma #. module: rma
#: sql_constraint:rma.operation:0 #: model:ir.model.constraint,message:rma.constraint_rma_operation_name_uniq
msgid "That operation name already exists !" msgid "That operation name already exists !"
msgstr "Esse nome de operação já existe!" msgstr "Esse nome de operação já existe!"
@@ -1459,7 +1453,7 @@ msgstr ""
"nenhum usuário do sistema for encontrado para esse endereço." "nenhum usuário do sistema for encontrado para esse endereço."
#. module: rma #. module: rma
#: code:addons/rma/models/stock_move.py:64 #: code:addons/rma/models/stock_move.py:0
#, python-format #, python-format
msgid "" msgid ""
"The quantity done for the product '%s' must be equal to its initial demand " "The quantity done for the product '%s' must be equal to its initial demand "
@@ -1469,13 +1463,13 @@ msgstr ""
"inicial, porque a movimentação do estoque está vinculada a uma RMA (%s)." "inicial, porque a movimentação do estoque está vinculada a uma RMA (%s)."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:793 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "The quantity to return is greater than remaining quantity." msgid "The quantity to return is greater than remaining quantity."
msgstr "A quantidade a retornar é maior que a quantidade restante." msgstr "A quantidade a retornar é maior que a quantidade restante."
#. module: rma #. module: rma
#: code:addons/rma/models/account_invoice.py:22 #: code:addons/rma/models/account_move.py:0
#, python-format #, python-format
msgid "" msgid ""
"There is at least one invoice lines whose quantity is less than the quantity " "There is at least one invoice lines whose quantity is less than the quantity "
@@ -1485,19 +1479,19 @@ msgstr ""
"especificada na sua RMA vinculada." "especificada na sua RMA vinculada."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:782 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "This RMA cannot be split." msgid "This RMA cannot be split."
msgstr "Esta RMA não pode ser dividida." msgstr "Esta RMA não pode ser dividida."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:769 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "This RMA cannot perform a replacement." msgid "This RMA cannot perform a replacement."
msgstr "Esta RMA não pode executar uma substituição." msgstr "Esta RMA não pode executar uma substituição."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:752 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "This RMA cannot perform a return." msgid "This RMA cannot perform a return."
msgstr "Este RMA não pode executar uma devolução." msgstr "Este RMA não pode executar uma devolução."
@@ -1508,11 +1502,6 @@ msgstr "Este RMA não pode executar uma devolução."
msgid "To Refund" msgid "To Refund"
msgstr "A Ser Restituído" msgstr "A Ser Restituído"
#. module: rma
#: selection:rma,activity_state:0
msgid "Today"
msgstr "Hoje"
#. module: rma #. module: rma
#: model:ir.model,name:rma.model_stock_picking #: model:ir.model,name:rma.model_stock_picking
msgid "Transfer" msgid "Transfer"
@@ -1528,6 +1517,11 @@ msgstr "Tipo"
msgid "Type of Operation" msgid "Type of Operation"
msgstr "Tipo de Operação" msgstr "Tipo de Operação"
#. module: rma
#: model:ir.model.fields,help:rma.field_rma__activity_exception_decoration
msgid "Type of the exception activity on record."
msgstr ""
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search #: model_terms:ir.ui.view,arch_db:rma.rma_view_search
msgid "Unassigned RMAs" msgid "Unassigned RMAs"
@@ -1567,7 +1561,7 @@ msgid "UoM"
msgstr "Unidade de Medida" msgstr "Unidade de Medida"
#. module: rma #. module: rma
#: selection:rma,priority:0 #: model:ir.model.fields.selection,name:rma.selection__rma__priority__2
msgid "Urgent" msgid "Urgent"
msgstr "Urgente" msgstr "Urgente"
@@ -1587,17 +1581,17 @@ msgid "Users"
msgstr "Usuários" msgstr "Usuários"
#. module: rma #. module: rma
#: selection:rma,priority:0 #: model:ir.model.fields.selection,name:rma.selection__rma__priority__3
msgid "Very Urgent" msgid "Very Urgent"
msgstr "Muito Urgente" msgstr "Muito Urgente"
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__waiting_replacement
msgid "Waiting for replacement" msgid "Waiting for replacement"
msgstr "Aguardando Substituição" msgstr "Aguardando Substituição"
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__waiting_return
msgid "Waiting for return" msgid "Waiting for return"
msgstr "Aguardando Devolução" msgstr "Aguardando Devolução"
@@ -1621,13 +1615,13 @@ msgid "Website communication history"
msgstr "Histórico de Comunicação Através do Site" msgstr "Histórico de Comunicação Através do Site"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:516 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "You cannot delete RMAs that are not in draft state" msgid "You cannot delete RMAs that are not in draft state"
msgstr "Você não pode apagar RMAs que não estejam na situação \"Rascunho\"" msgstr "Você não pode apagar RMAs que não estejam na situação \"Rascunho\""
#. module: rma #. module: rma
#: code:addons/rma/wizard/stock_picking_return.py:55 #: code:addons/rma/wizard/stock_picking_return.py:0
#, python-format #, python-format
msgid "" msgid ""
"You must specify the 'Customer' in the 'Stock Picking' from which RMAs will " "You must specify the 'Customer' in the 'Stock Picking' from which RMAs will "
@@ -1636,6 +1630,11 @@ msgstr ""
"Você deve especificar o 'Cliente' na 'Seleção de estoque' a partir do qual " "Você deve especificar o 'Cliente' na 'Seleção de estoque' a partir do qual "
"as RMAs serão criadas" "as RMAs serão criadas"
#. module: rma
#: model:ir.actions.report,print_report_name:rma.report_rma_action
msgid "object._get_report_base_filename()"
msgstr ""
#. module: rma #. module: rma
#: model:res.groups,comment:rma.rma_group_user_all #: model:res.groups,comment:rma.rma_group_user_all
msgid "" msgid ""
@@ -1656,6 +1655,76 @@ msgstr ""
"o usuário terá acesso à configuração RMA, bem como aos relatórios " "o usuário terá acesso à configuração RMA, bem como aos relatórios "
"estatísticos." "estatísticos."
#~ msgid ""
#~ "<div style=\"margin: 0px; padding: 0px;\">\n"
#~ "<p style=\"margin: 0px; padding: 0px; font-size: 13px;\">\n"
#~ " Dear ${object.partner_id.name}\n"
#~ " % if object.partner_id.parent_id:\n"
#~ " (${object.partner_id.parent_id.name})\n"
#~ " % endif\n"
#~ " <br/><br/>\n"
#~ " Here is the RMA <strong>${object.name}</strong> from ${object."
#~ "company_id.name}.\n"
#~ " <br/><br/>\n"
#~ " Do not hesitate to contact us if you have any question.\n"
#~ "</p>\n"
#~ "</div>\n"
#~ " "
#~ msgstr ""
#~ "<div style=\"margin: 0px; padding: 0px;\">\n"
#~ "<p style=\"margin: 0px; padding: 0px; font-size: 13px;\">\n"
#~ " Dear ${object.partner_id.name}\n"
#~ " % if object.partner_id.parent_id:\n"
#~ " (${object.partner_id.parent_id.name})\n"
#~ " % endif\n"
#~ " <br/><br/>\n"
#~ " Aqui está o RMA <strong>${object.name}</strong> from ${object."
#~ "company_id.name}.\n"
#~ " <br/><br/>\n"
#~ " Não deixe de nos contactar se houver qualquer dúvida ou outra "
#~ "questão.\n"
#~ "</p>\n"
#~ "</div>\n"
#~ " "
#~ msgid "<i class=\"fa fa-fw fa-check\"/> <b>Paid</b>"
#~ msgstr "<i class=\"fa fa-fw fa-check\"/> <b>Pago</b>"
#~ msgid "<i class=\"fa fa-fw fa-clock-o\"/> <b>Waiting Payment</b>"
#~ msgstr "<i class=\"fa fa-fw fa-clock-o\"/> <b>Aguardando Pagamento</b>"
#~ msgid ""
#~ "E-mail subject: %s\n"
#~ "\n"
#~ "E-mail body:\n"
#~ "%s"
#~ msgstr ""
#~ "Assunto do E-mail: %s\n"
#~ "\n"
#~ "Corpo do E-mail:\n"
#~ "%s"
#~ msgid "If checked new messages require your attention."
#~ msgstr "Se marcada, novas mensagens requerem sua atenção."
#~ msgid "Invoice"
#~ msgstr "Fatura"
#~ msgid "Invoice Line"
#~ msgstr "Linha da Fatura"
#~ msgid "Number of error"
#~ msgstr "Número de Erros"
#~ msgid "Overdue"
#~ msgstr "Vencidos(as)"
#~ msgid "Planned"
#~ msgstr "Planejado)a)"
#~ msgid "Today"
#~ msgstr "Hoje"
#~ msgid "Waiting for refund" #~ msgid "Waiting for refund"
#~ msgstr "Aguardando Restituição" #~ msgstr "Aguardando Restituição"

View File

@@ -1,12 +1,12 @@
# Translation of Odoo Server. # Translation of Odoo Server.
# This file contains the translation of the following modules: # This file contains the translation of the following modules:
# * rma # * rma
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Odoo Server 12.0\n" "Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"Last-Translator: <>\n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -24,15 +24,22 @@ msgid "${object.company_id.name} RMA (Ref ${object.name or 'n/a' })"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma_team.py:46 #: code:addons/rma/models/rma_team.py:0
#, python-format #, python-format
msgid "%s (copy)" msgid "%s (copy)"
msgstr "" msgstr ""
#. module: rma
#: code:addons/rma/models/rma.py:0
#, python-format
msgid "<b>E-mail subject:</b> %s<br/><br/><b>E-mail body:</b><br/>%s"
msgstr ""
#. module: rma #. module: rma
#: model:mail.template,body_html:rma.mail_template_rma_notification #: model:mail.template,body_html:rma.mail_template_rma_notification
msgid "<div style=\"margin: 0px; padding: 0px;\">\n" msgid ""
"<p style=\"margin: 0px; padding: 0px; font-size: 13px;\">\n" "<div style=\"margin: 0px; padding: 0px;\">\n"
" <p style=\"margin: 0px; padding: 0px; font-size: 13px;\">\n"
" Dear ${object.partner_id.name}\n" " Dear ${object.partner_id.name}\n"
" % if object.partner_id.parent_id:\n" " % if object.partner_id.parent_id:\n"
" (${object.partner_id.parent_id.name})\n" " (${object.partner_id.parent_id.name})\n"
@@ -42,7 +49,7 @@ msgid "<div style=\"margin: 0px; padding: 0px;\">\n"
" <br/><br/>\n" " <br/><br/>\n"
" Do not hesitate to contact us if you have any question.\n" " Do not hesitate to contact us if you have any question.\n"
"</p>\n" "</p>\n"
"</div>\n" " </div>\n"
" " " "
msgstr "" msgstr ""
@@ -53,42 +60,58 @@ msgstr ""
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.portal_rma_page #: model_terms:ir.ui.view,arch_db:rma.portal_rma_page
msgid "<i class=\"fa fa-fw fa-check\"/> <b>Paid</b>" msgid ""
"<i class=\"fa fa-fw fa-check\"/>\n"
" <b>Paid</b>"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.portal_rma_page #: model_terms:ir.ui.view,arch_db:rma.portal_rma_page
msgid "<i class=\"fa fa-fw fa-clock-o\"/> <b>Waiting Payment</b>" msgid ""
"<i class=\"fa fa-fw fa-clock-o\"/>\n"
" <b>Waiting Payment</b>"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.portal_rma_page #: model_terms:ir.ui.view,arch_db:rma.portal_rma_page
msgid "<i class=\"fa fa-pencil-square-o mr-1\" role=\"img\" aria-label=\"Download\" title=\"Download\"/>" msgid ""
"<i class=\"fa fa-pencil-square-o mr-1\" role=\"img\" aria-label=\"Download\""
" title=\"Download\"/>"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.portal_rma_page #: model_terms:ir.ui.view,arch_db:rma.portal_rma_page
msgid "<i class=\"fa fa-truck mr-1\" role=\"img\" aria-label=\"Download\" title=\"Download\"/>" msgid ""
"<i class=\"fa fa-truck mr-1\" role=\"img\" aria-label=\"Download\" "
"title=\"Download\"/>"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.portal_rma_page #: model_terms:ir.ui.view,arch_db:rma.portal_rma_page
msgid "<span class=\"badge badge-danger label-text-align\"><i class=\"fa fa-fw fa-times\"/> Cancelled</span>" msgid ""
"<span class=\"badge badge-danger label-text-align\"><i class=\"fa fa-fw fa-"
"times\"/> Cancelled</span>"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.portal_rma_page #: model_terms:ir.ui.view,arch_db:rma.portal_rma_page
msgid "<span class=\"badge badge-info label-text-align\"><i class=\"fa fa-fw fa-clock-o\"/> Preparation</span>" msgid ""
"<span class=\"badge badge-info label-text-align\"><i class=\"fa fa-fw fa-"
"clock-o\"/> Preparation</span>"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.portal_rma_page #: model_terms:ir.ui.view,arch_db:rma.portal_rma_page
msgid "<span class=\"badge badge-success label-text-align\"><i class=\"fa fa-fw fa-truck\"/> Shipped</span>" msgid ""
"<span class=\"badge badge-success label-text-align\"><i class=\"fa fa-fw fa-"
"truck\"/> Shipped</span>"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.portal_rma_page #: model_terms:ir.ui.view,arch_db:rma.portal_rma_page
msgid "<span class=\"badge badge-warning label-text-align\"><i class=\"fa fa-fw fa-clock-o\"/> Partially Available</span>" msgid ""
"<span class=\"badge badge-warning label-text-align\"><i class=\"fa fa-fw fa-"
"clock-o\"/> Partially Available</span>"
msgstr "" msgstr ""
#. module: rma #. module: rma
@@ -209,7 +232,9 @@ msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma_team__alias_defaults #: model:ir.model.fields,help:rma.field_rma_team__alias_defaults
msgid "A Python dictionary that will be evaluated to provide default values when creating new records for this alias." msgid ""
"A Python dictionary that will be evaluated to provide default values when "
"creating new records for this alias."
msgstr "" msgstr ""
#. module: rma #. module: rma
@@ -238,6 +263,11 @@ msgstr ""
msgid "Activities" msgid "Activities"
msgstr "" msgstr ""
#. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__activity_exception_decoration
msgid "Activity Exception Decoration"
msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__activity_state #: model:ir.model.fields,field_description:rma.field_rma__activity_state
msgid "Activity State" msgid "Activity State"
@@ -317,7 +347,7 @@ msgid "Cancel"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__cancelled
msgid "Canceled" msgid "Canceled"
msgstr "" msgstr ""
@@ -359,8 +389,8 @@ msgid "Confirm"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields.selection,name:rma.selection__rma__state__confirmed
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search #: model_terms:ir.ui.view,arch_db:rma.rma_view_search
#: selection:rma,state:0
msgid "Confirmed" msgid "Confirmed"
msgstr "" msgstr ""
@@ -404,7 +434,7 @@ msgid "Customer Portal URL"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/controllers/main.py:42 #: code:addons/rma/controllers/main.py:0
#: model:ir.model.fields,field_description:rma.field_rma__date #: model:ir.model.fields,field_description:rma.field_rma__date
#: model_terms:ir.ui.view,arch_db:rma.portal_my_rmas #: model_terms:ir.ui.view,arch_db:rma.portal_my_rmas
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search #: model_terms:ir.ui.view,arch_db:rma.rma_view_search
@@ -474,8 +504,8 @@ msgid "Display Name"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields.selection,name:rma.selection__rma__state__draft
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search #: model_terms:ir.ui.view,arch_db:rma.rma_view_search
#: selection:rma,state:0
msgid "Draft" msgid "Draft"
msgstr "" msgstr ""
@@ -485,15 +515,6 @@ msgstr ""
msgid "Draft RMA" msgid "Draft RMA"
msgstr "" msgstr ""
#. module: rma
#: code:addons/rma/models/rma.py:1098
#, python-format
msgid "E-mail subject: %s\n"
"\n"
"E-mail body:\n"
"%s"
msgstr ""
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.rma_team_view_form #: model_terms:ir.ui.view,arch_db:rma.rma_team_view_form
msgid "Email" msgid "Email"
@@ -505,7 +526,7 @@ msgid "Email Alias"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/wizard/rma_split.py:63 #: code:addons/rma/wizard/rma_split.py:0
#, python-format #, python-format
msgid "Extracted RMA" msgid "Extracted RMA"
msgstr "" msgstr ""
@@ -549,59 +570,71 @@ msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma_team__alias_parent_thread_id #: model:ir.model.fields,help:rma.field_rma_team__alias_parent_thread_id
msgid "ID of the parent record holding the alias (example: project holding the task creation alias)" msgid ""
"ID of the parent record holding the alias (example: project holding the task"
" creation alias)"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma__message_unread #: model:ir.model.fields,field_description:rma.field_rma__activity_exception_icon
#: model:ir.model.fields,help:rma.field_rma_team__message_unread msgid "Icon"
msgid "If checked new messages require your attention." msgstr ""
#. module: rma
#: model:ir.model.fields,help:rma.field_rma__activity_exception_icon
msgid "Icon to indicate an exception activity."
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma__message_needaction #: model:ir.model.fields,help:rma.field_rma__message_needaction
#: model:ir.model.fields,help:rma.field_rma__message_unread
#: model:ir.model.fields,help:rma.field_rma_team__message_needaction #: model:ir.model.fields,help:rma.field_rma_team__message_needaction
#: model:ir.model.fields,help:rma.field_rma_team__message_unread
msgid "If checked, new messages require your attention." msgid "If checked, new messages require your attention."
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma__message_has_error #: model:ir.model.fields,help:rma.field_rma__message_has_error
#: model:ir.model.fields,help:rma.field_rma__message_has_sms_error
#: model:ir.model.fields,help:rma.field_rma_team__message_has_error #: model:ir.model.fields,help:rma.field_rma_team__message_has_error
#: model:ir.model.fields,help:rma.field_rma_team__message_has_sms_error
msgid "If checked, some messages have a delivery error." msgid "If checked, some messages have a delivery error."
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma_team__active #: model:ir.model.fields,help:rma.field_rma_team__active
msgid "If the active field is set to false, it will allow you to hide the RMA Team without removing it." msgid ""
"If the active field is set to false, it will allow you to hide the RMA Team "
"without removing it."
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:1102 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "Incoming e-mail" msgid "Incoming e-mail"
msgstr "" msgstr ""
#. module: rma
#: model:ir.model,name:rma.model_account_invoice
msgid "Invoice"
msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__partner_invoice_id #: model:ir.model.fields,field_description:rma.field_rma__partner_invoice_id
msgid "Invoice Address" msgid "Invoice Address"
msgstr "" msgstr ""
#. module: rma
#: model:ir.model,name:rma.model_account_invoice_line
msgid "Invoice Line"
msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__message_is_follower #: model:ir.model.fields,field_description:rma.field_rma__message_is_follower
#: model:ir.model.fields,field_description:rma.field_rma_team__message_is_follower #: model:ir.model.fields,field_description:rma.field_rma_team__message_is_follower
msgid "Is Follower" msgid "Is Follower"
msgstr "" msgstr ""
#. module: rma
#: model:ir.model,name:rma.model_account_move
msgid "Journal Entries"
msgstr ""
#. module: rma
#: model:ir.model,name:rma.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma____last_update #: model:ir.model.fields,field_description:rma.field_rma____last_update
#: model:ir.model.fields,field_description:rma.field_rma_delivery_wizard____last_update #: model:ir.model.fields,field_description:rma.field_rma_delivery_wizard____last_update
@@ -645,7 +678,7 @@ msgid "Lock"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__locked
msgid "Locked" msgid "Locked"
msgstr "" msgstr ""
@@ -678,7 +711,7 @@ msgid "Messages"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/controllers/main.py:43 #: code:addons/rma/controllers/main.py:0
#: model:ir.model.fields,field_description:rma.field_rma__name #: model:ir.model.fields,field_description:rma.field_rma__name
#: model:ir.model.fields,field_description:rma.field_rma_operation__name #: model:ir.model.fields,field_description:rma.field_rma_operation__name
#: model:ir.model.fields,field_description:rma.field_rma_team__name #: model:ir.model.fields,field_description:rma.field_rma_team__name
@@ -687,9 +720,8 @@ msgid "Name"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:31 #: code:addons/rma/models/rma.py:0 code:addons/rma/models/rma.py:0
#: code:addons/rma/models/rma.py:494 #: code:addons/rma/models/rma.py:0
#: code:addons/rma/models/rma.py:1101
#, python-format #, python-format
msgid "New" msgid "New"
msgstr "" msgstr ""
@@ -710,24 +742,24 @@ msgid "Next Activity Type"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:772 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "None of the selected RMAs can perform a replacement." msgid "None of the selected RMAs can perform a replacement."
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:755 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "None of the selected RMAs can perform a return." msgid "None of the selected RMAs can perform a return."
msgstr "" msgstr ""
#. module: rma #. module: rma
#: selection:rma,priority:0 #: model:ir.model.fields.selection,name:rma.selection__rma__priority__1
msgid "Normal" msgid "Normal"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: selection:rma,priority:0 #: model:ir.model.fields.selection,name:rma.selection__rma__priority__0
msgid "Not urgent" msgid "Not urgent"
msgstr "" msgstr ""
@@ -740,7 +772,7 @@ msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__message_has_error_counter #: model:ir.model.fields,field_description:rma.field_rma__message_has_error_counter
#: model:ir.model.fields,field_description:rma.field_rma_team__message_has_error_counter #: model:ir.model.fields,field_description:rma.field_rma_team__message_has_error_counter
msgid "Number of error" msgid "Number of errors"
msgstr "" msgstr ""
#. module: rma #. module: rma
@@ -763,7 +795,10 @@ msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma_team__alias_force_thread_id #: model:ir.model.fields,help:rma.field_rma_team__alias_force_thread_id
msgid "Optional ID of a thread (record) to which all incoming messages will be attached, even if they did not reply to it. If set, this will disable the creation of new records completely." msgid ""
"Optional ID of a thread (record) to which all incoming messages will be "
"attached, even if they did not reply to it. If set, this will disable the "
"creation of new records completely."
msgstr "" msgstr ""
#. module: rma #. module: rma
@@ -786,11 +821,6 @@ msgstr ""
msgid "Other Information" msgid "Other Information"
msgstr "" msgstr ""
#. module: rma
#: selection:rma,activity_state:0
msgid "Overdue"
msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma_team__alias_user_id #: model:ir.model.fields,field_description:rma.field_rma_team__alias_user_id
msgid "Owner" msgid "Owner"
@@ -808,7 +838,10 @@ msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma_team__alias_parent_model_id #: model:ir.model.fields,help:rma.field_rma_team__alias_parent_model_id
msgid "Parent model holding the alias. The model holding the alias reference is not necessarily the model given by alias_model_id (example: project (parent_model) and task (model))" msgid ""
"Parent model holding the alias. The model holding the alias reference is not"
" necessarily the model given by alias_model_id (example: project "
"(parent_model) and task (model))"
msgstr "" msgstr ""
#. module: rma #. module: rma
@@ -816,18 +849,13 @@ msgstr ""
msgid "Partner" msgid "Partner"
msgstr "" msgstr ""
#. module: rma
#: selection:rma,activity_state:0
msgid "Planned"
msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma_team__alias_contact #: model:ir.model.fields,help:rma.field_rma_team__alias_contact
msgid "Policy to post a message on the document using the mailgateway.\n" msgid ""
"Policy to post a message on the document using the mailgateway.\n"
"- everyone: everyone can post\n" "- everyone: everyone can post\n"
"- partners: only authenticated partners\n" "- partners: only authenticated partners\n"
"- followers: only followers of the related document or members of following channels\n" "- followers: only followers of the related document or members of following channels\n"
""
msgstr "" msgstr ""
#. module: rma #. module: rma
@@ -868,8 +896,8 @@ msgid "Quantity"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/wizard/rma_delivery.py:49 #: code:addons/rma/wizard/rma_delivery.py:0
#: sql_constraint:rma.split.wizard:0 #: model:ir.model.constraint,message:rma.constraint_rma_split_wizard_check_product_uom_qty_positive
#, python-format #, python-format
msgid "Quantity must be greater than 0." msgid "Quantity must be greater than 0."
msgstr "" msgstr ""
@@ -880,9 +908,11 @@ msgid "Quantity to extract"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:805 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "Quantity to extract cannot be greater than remaining delivery quantity (%s %s)" msgid ""
"Quantity to extract cannot be greater than remaining delivery quantity (%s "
"%s)"
msgstr "" msgstr ""
#. module: rma #. module: rma
@@ -893,7 +923,7 @@ msgstr ""
#. module: rma #. module: rma
#: model:ir.actions.act_window,name:rma.rma_action #: model:ir.actions.act_window,name:rma.rma_action
#: model:ir.model,name:rma.model_rma #: model:ir.model,name:rma.model_rma
#: model:ir.model.fields,field_description:rma.field_account_invoice_line__rma_id #: model:ir.model.fields,field_description:rma.field_account_move_line__rma_id
#: model:ir.model.fields,field_description:rma.field_rma_split_wizard__rma_id #: model:ir.model.fields,field_description:rma.field_rma_split_wizard__rma_id
#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma #: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma
#: model:ir.module.category,name:rma.rma_module_category #: model:ir.module.category,name:rma.rma_module_category
@@ -910,7 +940,7 @@ msgid "RMA #"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/res_company.py:18 #: code:addons/rma/models/res_company.py:0
#, python-format #, python-format
msgid "RMA Code" msgid "RMA Code"
msgstr "" msgstr ""
@@ -926,7 +956,7 @@ msgid "RMA Deadline"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/stock_warehouse.py:82 #: code:addons/rma/models/stock_warehouse.py:0
#, python-format #, python-format
msgid "RMA Delivery Orders" msgid "RMA Delivery Orders"
msgstr "" msgstr ""
@@ -964,7 +994,7 @@ msgid "RMA Out Type"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/stock_warehouse.py:73 #: code:addons/rma/models/stock_warehouse.py:0
#, python-format #, python-format
msgid "RMA Receipts" msgid "RMA Receipts"
msgstr "" msgstr ""
@@ -1053,8 +1083,8 @@ msgid "Receipt"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields.selection,name:rma.selection__rma__state__received
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search #: model_terms:ir.ui.view,arch_db:rma.rma_view_search
#: selection:rma,state:0
msgid "Received" msgid "Received"
msgstr "" msgstr ""
@@ -1074,7 +1104,7 @@ msgid "Reference of the document that generated this RMA."
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:693 #: code:addons/rma/models/rma.py:0
#: model:ir.model.fields,field_description:rma.field_rma__refund_id #: model:ir.model.fields,field_description:rma.field_rma__refund_id
#: model_terms:ir.ui.view,arch_db:rma.rma_view_form #: model_terms:ir.ui.view,arch_db:rma.rma_view_form
#: model:rma.operation,name:rma.rma_operation_refund #: model:rma.operation,name:rma.rma_operation_refund
@@ -1093,7 +1123,7 @@ msgid "Refund line"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__refunded
msgid "Refunded" msgid "Refunded"
msgstr "" msgstr ""
@@ -1113,8 +1143,8 @@ msgid "Repair"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields.selection,name:rma.selection__rma_delivery_wizard__type__replace
#: model_terms:ir.ui.view,arch_db:rma.rma_view_form #: model_terms:ir.ui.view,arch_db:rma.rma_view_form
#: selection:rma.delivery.wizard,type:0
#: model:rma.operation,name:rma.rma_operation_replace #: model:rma.operation,name:rma.rma_operation_replace
msgid "Replace" msgid "Replace"
msgstr "" msgstr ""
@@ -1125,20 +1155,27 @@ msgid "Replace Product"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__replaced
msgid "Replaced" msgid "Replaced"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:1011 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "Replacement: Move <a href=\"#\" data-oe-model=\"stock.move\" data-oe-id=\"%d\">%s</a> (Picking <a href=\"#\" data-oe-model=\"stock.picking\" data-oe-id=\"%d\">%s</a>) has been created." msgid ""
"Replacement: Move <a href=\"#\" data-oe-model=\"stock.move\" data-oe-"
"id=\"%d\">%s</a> (Picking <a href=\"#\" data-oe-model=\"stock.picking\" "
"data-oe-id=\"%d\">%s</a>) has been created."
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:1022 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "Replacement:<br/>Product <a href=\"#\" data-oe-model=\"product.product\" data-oe-id=\"%d\">%s</a><br/>Quantity %f %s<br/>This replacement did not create a new move, but one of the previously created moves was updated with this data." msgid ""
"Replacement:<br/>Product <a href=\"#\" data-oe-model=\"product.product\" "
"data-oe-id=\"%d\">%s</a><br/>Quantity %f %s<br/>This replacement did not "
"create a new move, but one of the previously created moves was updated with "
"this data."
msgstr "" msgstr ""
#. module: rma #. module: rma
@@ -1152,7 +1189,7 @@ msgid "Requested operation"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:736 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "Required field(s):%s" msgid "Required field(s):%s"
msgstr "" msgstr ""
@@ -1175,19 +1212,21 @@ msgstr ""
#. module: rma #. module: rma
#: model:ir.actions.act_window,name:rma.rma_delivery_wizard_action #: model:ir.actions.act_window,name:rma.rma_delivery_wizard_action
#: model:ir.model.fields.selection,name:rma.selection__rma_delivery_wizard__type__return
#: model_terms:ir.ui.view,arch_db:rma.rma_view_form #: model_terms:ir.ui.view,arch_db:rma.rma_view_form
#: selection:rma.delivery.wizard,type:0
msgid "Return to customer" msgid "Return to customer"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:972 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "Return: <a href=\"#\" data-oe-model=\"stock.picking\" data-oe-id=\"%d\">%s</a> has been created." msgid ""
"Return: <a href=\"#\" data-oe-model=\"stock.picking\" data-oe-"
"id=\"%d\">%s</a> has been created."
msgstr "" msgstr ""
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__returned
msgid "Returned" msgid "Returned"
msgstr "" msgstr ""
@@ -1196,6 +1235,12 @@ msgstr ""
msgid "Rma Count" msgid "Rma Count"
msgstr "" msgstr ""
#. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__message_has_sms_error
#: model:ir.model.fields,field_description:rma.field_rma_team__message_has_sms_error
msgid "SMS Delivery error"
msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma_delivery_wizard__scheduled_date #: model:ir.model.fields,field_description:rma.field_rma_delivery_wizard__scheduled_date
msgid "Scheduled Date" msgid "Scheduled Date"
@@ -1227,13 +1272,13 @@ msgid "Sequence"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/stock_warehouse.py:48 #: code:addons/rma/models/stock_warehouse.py:0
#, python-format #, python-format
msgid "Sequence RMA in" msgid "Sequence RMA in"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/stock_warehouse.py:53 #: code:addons/rma/models/stock_warehouse.py:0
#, python-format #, python-format
msgid "Sequence RMA out" msgid "Sequence RMA out"
msgstr "" msgstr ""
@@ -1265,9 +1310,11 @@ msgid "Split RMA"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:889 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "Split: <a href=\"#\" data-oe-model=\"rma\" data-oe-id=\"%d\">%s</a> has been created." msgid ""
"Split: <a href=\"#\" data-oe-model=\"rma\" data-oe-id=\"%d\">%s</a> has been"
" created."
msgstr "" msgstr ""
#. module: rma #. module: rma
@@ -1277,7 +1324,7 @@ msgid "State"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/controllers/main.py:44 #: code:addons/rma/controllers/main.py:0
#: model_terms:ir.ui.view,arch_db:rma.portal_my_rmas #: model_terms:ir.ui.view,arch_db:rma.portal_my_rmas
#, python-format #, python-format
msgid "Status" msgid "Status"
@@ -1285,7 +1332,8 @@ msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma__activity_state #: model:ir.model.fields,help:rma.field_rma__activity_state
msgid "Status based on activities\n" msgid ""
"Status based on activities\n"
"Overdue: Due date is already passed\n" "Overdue: Due date is already passed\n"
"Today: Activity date is today\n" "Today: Activity date is today\n"
"Planned: Future activities." "Planned: Future activities."
@@ -1313,57 +1361,70 @@ msgid "Team Members"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: sql_constraint:rma.operation:0 #: model:ir.model.constraint,message:rma.constraint_rma_operation_name_uniq
msgid "That operation name already exists !" msgid "That operation name already exists !"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma_team__alias_model_id #: model:ir.model.fields,help:rma.field_rma_team__alias_model_id
msgid "The model (Odoo Document Kind) to which this alias corresponds. Any incoming email that does not reply to an existing record will cause the creation of a new record of this model (e.g. a Project Task)" msgid ""
"The model (Odoo Document Kind) to which this alias corresponds. Any incoming"
" email that does not reply to an existing record will cause the creation of "
"a new record of this model (e.g. a Project Task)"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma_team__alias_name #: model:ir.model.fields,help:rma.field_rma_team__alias_name
msgid "The name of the email alias, e.g. 'jobs' if you want to catch emails for <jobs@example.odoo.com>" msgid ""
"The name of the email alias, e.g. 'jobs' if you want to catch emails for "
"<jobs@example.odoo.com>"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model:ir.model.fields,help:rma.field_rma_team__alias_user_id #: model:ir.model.fields,help:rma.field_rma_team__alias_user_id
msgid "The owner of records created upon receiving emails on this alias. If this field is not set the system will attempt to find the right owner based on the sender (From) address, or will use the Administrator account if no system user is found for that address." msgid ""
"The owner of records created upon receiving emails on this alias. If this "
"field is not set the system will attempt to find the right owner based on "
"the sender (From) address, or will use the Administrator account if no "
"system user is found for that address."
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/stock_move.py:64 #: code:addons/rma/models/stock_move.py:0
#, python-format #, python-format
msgid "The quantity done for the product '%s' must be equal to its initial demand because the stock move is linked to an RMA (%s)." msgid ""
"The quantity done for the product '%s' must be equal to its initial demand "
"because the stock move is linked to an RMA (%s)."
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:793 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "The quantity to return is greater than remaining quantity." msgid "The quantity to return is greater than remaining quantity."
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/account_invoice.py:22 #: code:addons/rma/models/account_move.py:0
#, python-format #, python-format
msgid "There is at least one invoice lines whose quantity is less than the quantity specified in its linked RMA." msgid ""
"There is at least one invoice lines whose quantity is less than the quantity"
" specified in its linked RMA."
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:782 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "This RMA cannot be split." msgid "This RMA cannot be split."
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:769 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "This RMA cannot perform a replacement." msgid "This RMA cannot perform a replacement."
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:752 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "This RMA cannot perform a return." msgid "This RMA cannot perform a return."
msgstr "" msgstr ""
@@ -1374,11 +1435,6 @@ msgstr ""
msgid "To Refund" msgid "To Refund"
msgstr "" msgstr ""
#. module: rma
#: selection:rma,activity_state:0
msgid "Today"
msgstr ""
#. module: rma #. module: rma
#: model:ir.model,name:rma.model_stock_picking #: model:ir.model,name:rma.model_stock_picking
msgid "Transfer" msgid "Transfer"
@@ -1394,6 +1450,11 @@ msgstr ""
msgid "Type of Operation" msgid "Type of Operation"
msgstr "" msgstr ""
#. module: rma
#: model:ir.model.fields,help:rma.field_rma__activity_exception_decoration
msgid "Type of the exception activity on record."
msgstr ""
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search #: model_terms:ir.ui.view,arch_db:rma.rma_view_search
msgid "Unassigned RMAs" msgid "Unassigned RMAs"
@@ -1433,7 +1494,7 @@ msgid "UoM"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: selection:rma,priority:0 #: model:ir.model.fields.selection,name:rma.selection__rma__priority__2
msgid "Urgent" msgid "Urgent"
msgstr "" msgstr ""
@@ -1453,17 +1514,17 @@ msgid "Users"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: selection:rma,priority:0 #: model:ir.model.fields.selection,name:rma.selection__rma__priority__3
msgid "Very Urgent" msgid "Very Urgent"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__waiting_replacement
msgid "Waiting for replacement" msgid "Waiting for replacement"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: selection:rma,state:0 #: model:ir.model.fields.selection,name:rma.selection__rma__state__waiting_return
msgid "Waiting for return" msgid "Waiting for return"
msgstr "" msgstr ""
@@ -1487,20 +1548,28 @@ msgid "Website communication history"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:516 #: code:addons/rma/models/rma.py:0
#, python-format #, python-format
msgid "You cannot delete RMAs that are not in draft state" msgid "You cannot delete RMAs that are not in draft state"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/wizard/stock_picking_return.py:55 #: code:addons/rma/wizard/stock_picking_return.py:0
#, python-format #, python-format
msgid "You must specify the 'Customer' in the 'Stock Picking' from which RMAs will be created" msgid ""
"You must specify the 'Customer' in the 'Stock Picking' from which RMAs will "
"be created"
msgstr ""
#. module: rma
#: model:ir.actions.report,print_report_name:rma.report_rma_action
msgid "object._get_report_base_filename()"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: model:res.groups,comment:rma.rma_group_user_all #: model:res.groups,comment:rma.rma_group_user_all
msgid "the user will have access to all records of everyone in the RMA application." msgid ""
"the user will have access to all records of everyone in the RMA application."
msgstr "" msgstr ""
#. module: rma #. module: rma
@@ -1510,6 +1579,7 @@ msgstr ""
#. module: rma #. module: rma
#: model:res.groups,comment:rma.rma_group_manager #: model:res.groups,comment:rma.rma_group_manager
msgid "the user will have an access to the RMA configuration as well as statistic reports." msgid ""
"the user will have an access to the RMA configuration as well as statistic "
"reports."
msgstr "" msgstr ""

View File

@@ -1,9 +0,0 @@
# Copyright 2020 Tecnativa - David Vidal
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from openupgradelib import openupgrade
@openupgrade.migrate()
def migrate(env, version):
# Convert Text description field to Html
openupgrade.convert_field_to_html(env.cr, "rma", "description", "description")

View File

@@ -1,6 +1,6 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import account_invoice from . import account_move
from . import rma from . import rma
from . import rma_operation from . import rma_operation
from . import rma_team from . import rma_team

View File

@@ -6,10 +6,10 @@ from odoo.exceptions import ValidationError
from odoo.tools import float_compare from odoo.tools import float_compare
class AccountInvoice(models.Model): class AccountMove(models.Model):
_inherit = "account.invoice" _inherit = "account.move"
def action_invoice_open(self): def post(self):
""" Avoids to validate a refund with less quantity of product than """ Avoids to validate a refund with less quantity of product than
quantity in the linked RMA. quantity in the linked RMA.
""" """
@@ -33,7 +33,7 @@ class AccountInvoice(models.Model):
"less than the quantity specified in its linked RMA." "less than the quantity specified in its linked RMA."
) )
) )
return super().action_invoice_open() return super().post()
def unlink(self): def unlink(self):
rma = self.mapped("invoice_line_ids.rma_id") rma = self.mapped("invoice_line_ids.rma_id")
@@ -41,7 +41,7 @@ class AccountInvoice(models.Model):
return super().unlink() return super().unlink()
class AccountInvoiceLine(models.Model): class AccountMoveLine(models.Model):
_inherit = "account.invoice.line" _inherit = "account.move.line"
rma_id = fields.Many2one(comodel_name="rma", string="RMA",) rma_id = fields.Many2one(comodel_name="rma", string="RMA",)

View File

@@ -16,9 +16,7 @@ class ResPartner(models.Model):
rma_data = self.env["rma"].read_group( rma_data = self.env["rma"].read_group(
[("partner_id", "in", self.ids)], ["partner_id"], ["partner_id"] [("partner_id", "in", self.ids)], ["partner_id"], ["partner_id"]
) )
mapped_data = { mapped_data = {r["partner_id"][0]: r["partner_id_count"] for r in rma_data}
r["partner_id"][0]: r["partner_id_count"] for r in rma_data
}
for record in self: for record in self:
record.rma_count = mapped_data.get(record.id, 0) record.rma_count = mapped_data.get(record.id, 0)

View File

@@ -8,7 +8,6 @@ from odoo.exceptions import ValidationError
from odoo.tests import Form from odoo.tests import Form
from odoo.tools import html2plaintext from odoo.tools import html2plaintext
import odoo.addons.decimal_precision as dp
from odoo.addons.stock.models.stock_move import PROCUREMENT_PRIORITIES from odoo.addons.stock.models.stock_move import PROCUREMENT_PRIORITIES
@@ -34,7 +33,7 @@ class Rma(models.Model):
) )
origin = fields.Char( origin = fields.Char(
string="Source Document", string="Source Document",
states={"locked": [("readonly", True)], "cancelled": [("readonly", True)],}, states={"locked": [("readonly", True)], "cancelled": [("readonly", True)]},
help="Reference of the document that generated this RMA.", help="Reference of the document that generated this RMA.",
) )
date = fields.Datetime( date = fields.Datetime(
@@ -45,24 +44,26 @@ class Rma(models.Model):
states={"draft": [("readonly", False)]}, states={"draft": [("readonly", False)]},
) )
deadline = fields.Date( deadline = fields.Date(
states={"locked": [("readonly", True)], "cancelled": [("readonly", True)],}, states={"locked": [("readonly", True)], "cancelled": [("readonly", True)]},
) )
user_id = fields.Many2one( user_id = fields.Many2one(
comodel_name="res.users", comodel_name="res.users",
string="Responsible", string="Responsible",
track_visibility="always", index=True,
states={"locked": [("readonly", True)], "cancelled": [("readonly", True)],}, default=lambda self: self.env.user,
tracking=True,
states={"locked": [("readonly", True)], "cancelled": [("readonly", True)]},
) )
team_id = fields.Many2one( team_id = fields.Many2one(
comodel_name="rma.team", comodel_name="rma.team",
string="RMA team", string="RMA team",
index=True, index=True,
states={"locked": [("readonly", True)], "cancelled": [("readonly", True)],}, states={"locked": [("readonly", True)], "cancelled": [("readonly", True)]},
) )
company_id = fields.Many2one( company_id = fields.Many2one(
comodel_name="res.company", comodel_name="res.company",
default=lambda self: self.env.user.company_id, default=lambda self: self.env.company,
states={"locked": [("readonly", True)], "cancelled": [("readonly", True)],}, states={"locked": [("readonly", True)], "cancelled": [("readonly", True)]},
) )
partner_id = fields.Many2one( partner_id = fields.Many2one(
string="Customer", string="Customer",
@@ -70,14 +71,14 @@ class Rma(models.Model):
readonly=True, readonly=True,
states={"draft": [("readonly", False)]}, states={"draft": [("readonly", False)]},
index=True, index=True,
track_visibility="always", tracking=True,
) )
partner_invoice_id = fields.Many2one( partner_invoice_id = fields.Many2one(
string="Invoice Address", string="Invoice Address",
comodel_name="res.partner", comodel_name="res.partner",
readonly=True, readonly=True,
states={"draft": [("readonly", False)]}, states={"draft": [("readonly", False)]},
domain=[("customer", "=", True)], domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]",
help="Refund address for current RMA.", help="Refund address for current RMA.",
) )
commercial_partner_id = fields.Many2one( commercial_partner_id = fields.Many2one(
@@ -111,7 +112,7 @@ class Rma(models.Model):
string="Quantity", string="Quantity",
required=True, required=True,
default=1.0, default=1.0,
digits=dp.get_precision("Product Unit of Measure"), digits="Product Unit of Measure",
readonly=True, readonly=True,
states={"draft": [("readonly", False)]}, states={"draft": [("readonly", False)]},
) )
@@ -158,10 +159,10 @@ class Rma(models.Model):
], ],
default="draft", default="draft",
copy=False, copy=False,
track_visibility="onchange", tracking=True,
) )
description = fields.Html( description = fields.Html(
states={"locked": [("readonly", True)], "cancelled": [("readonly", True)],}, states={"locked": [("readonly", True)], "cancelled": [("readonly", True)]},
) )
# Reception fields # Reception fields
location_id = fields.Many2one( location_id = fields.Many2one(
@@ -178,10 +179,10 @@ class Rma(models.Model):
) )
# Refund fields # Refund fields
refund_id = fields.Many2one( refund_id = fields.Many2one(
comodel_name="account.invoice", string="Refund", readonly=True, copy=False, comodel_name="account.move", string="Refund", readonly=True, copy=False,
) )
refund_line_id = fields.Many2one( refund_line_id = fields.Many2one(
comodel_name="account.invoice.line", comodel_name="account.move.line",
string="Refund line", string="Refund line",
readonly=True, readonly=True,
copy=False, copy=False,
@@ -200,26 +201,27 @@ class Rma(models.Model):
) )
delivered_qty = fields.Float( delivered_qty = fields.Float(
string="Delivered qty", string="Delivered qty",
digits=dp.get_precision("Product Unit of Measure"), digits="Product Unit of Measure",
compute="_compute_delivered_qty", compute="_compute_delivered_qty",
store=True, store=True,
) )
delivered_qty_done = fields.Float( delivered_qty_done = fields.Float(
string="Delivered qty done", string="Delivered qty done",
digits=dp.get_precision("Product Unit of Measure"), digits="Product Unit of Measure",
compute="_compute_delivered_qty", compute="_compute_delivered_qty",
compute_sudo=True,
) )
can_be_returned = fields.Boolean(compute="_compute_can_be_returned",) can_be_returned = fields.Boolean(compute="_compute_can_be_returned",)
can_be_replaced = fields.Boolean(compute="_compute_can_be_replaced",) can_be_replaced = fields.Boolean(compute="_compute_can_be_replaced",)
can_be_locked = fields.Boolean(compute="_compute_can_be_locked",) can_be_locked = fields.Boolean(compute="_compute_can_be_locked",)
remaining_qty = fields.Float( remaining_qty = fields.Float(
string="Remaining delivered qty", string="Remaining delivered qty",
digits=dp.get_precision("Product Unit of Measure"), digits="Product Unit of Measure",
compute="_compute_remaining_qty", compute="_compute_remaining_qty",
) )
remaining_qty_to_done = fields.Float( remaining_qty_to_done = fields.Float(
string="Remaining delivered qty to done", string="Remaining delivered qty to done",
digits=dp.get_precision("Product Unit of Measure"), digits="Product Unit of Measure",
compute="_compute_remaining_qty", compute="_compute_remaining_qty",
) )
# Split fields # Split fields
@@ -457,7 +459,7 @@ class Rma(models.Model):
and not self.location_id and not self.location_id
): ):
# If this condition is True, it is because a picking is not set # If this condition is True, it is because a picking is not set
company = self.company_id or self.env.user.company_id company = self.company_id or self.env.company
warehouse = self.env["stock.warehouse"].search( warehouse = self.env["stock.warehouse"].search(
[("company_id", "=", company.id)], limit=1 [("company_id", "=", company.id)], limit=1
) )
@@ -465,19 +467,21 @@ class Rma(models.Model):
return {"domain": {"product_uom": domain_product_uom}} return {"domain": {"product_uom": domain_product_uom}}
# CRUD methods (ORM overrides) # CRUD methods (ORM overrides)
@api.model @api.model_create_multi
def create(self, vals): def create(self, vals_list):
if vals.get("name", _("New")) == _("New"): for vals in vals_list:
ir_sequence = self.env["ir.sequence"] if vals.get("name", _("New")) == _("New"):
if "company_id" in vals: ir_sequence = self.env["ir.sequence"]
ir_sequence = ir_sequence.with_context(force_company=vals["company_id"]) if "company_id" in vals:
vals["name"] = ir_sequence.next_by_code("rma") ir_sequence = ir_sequence.with_context(
# Assign a default team_id which will be the first in the sequence force_company=vals["company_id"]
if "team_id" not in vals: )
vals["team_id"] = self.env["rma.team"].search([], limit=1).id vals["name"] = ir_sequence.next_by_code("rma")
return super().create(vals) # Assign a default team_id which will be the first in the sequence
if "team_id" not in vals:
vals["team_id"] = self.env["rma.team"].search([], limit=1).id
return super().create(vals_list)
@api.multi
def copy(self, default=None): def copy(self, default=None):
team = super().copy(default) team = super().copy(default)
for follower in self.message_follower_ids: for follower in self.message_follower_ids:
@@ -529,9 +533,7 @@ class Rma(models.Model):
reception_move = self._create_receptions_from_picking() reception_move = self._create_receptions_from_picking()
else: else:
reception_move = self._create_receptions_from_product() reception_move = self._create_receptions_from_product()
self.write( self.write({"reception_move_id": reception_move.id, "state": "confirmed"})
{"reception_move_id": reception_move.id, "state": "confirmed",}
)
if self.partner_id not in self.message_partner_ids: if self.partner_id not in self.message_partner_ids:
self.message_subscribe([self.partner_id.id]) self.message_subscribe([self.partner_id.id])
@@ -547,24 +549,24 @@ class Rma(models.Model):
for rmas in group_dict.values(): for rmas in group_dict.values():
origin = ", ".join(rmas.mapped("name")) origin = ", ".join(rmas.mapped("name"))
invoice_form = Form( invoice_form = Form(
self.env["account.invoice"].with_context( self.env["account.move"].with_context(
default_type="out_refund", company_id=rmas[0].company_id.id, default_type="out_refund", company_id=rmas[0].company_id.id,
), ),
"account.invoice_form", "account.view_move_form",
) )
rmas[0]._prepare_refund(invoice_form, origin) rmas[0]._prepare_refund(invoice_form, origin)
refund = invoice_form.save() refund = invoice_form.save()
for rma in rmas: for rma in rmas:
# For each iteration the Form is edited, a new invoice line
# is added and then saved. This is to generate the other
# lines of the accounting entry and to specify the associated
# RMA to that new invoice line.
invoice_form = Form(refund)
with invoice_form.invoice_line_ids.new() as line_form: with invoice_form.invoice_line_ids.new() as line_form:
rma._prepare_refund_line(line_form) rma._prepare_refund_line(line_form)
# rma_id is not present in the form view, so we need to get refund = invoice_form.save()
# the 'values to save' to add the rma id and use the line = refund.invoice_line_ids.filtered(lambda r: not r.rma_id)
# create method instead of save the form. We also need line.rma_id = rma.id
# the new refund line id to be linked to the rma.
refund_vals = invoice_form._values_to_save(all_fields=True)
line_vals = refund_vals["invoice_line_ids"][-1][2]
line_vals.update(invoice_id=refund.id, rma_id=rma.id)
line = self.env["account.invoice.line"].create(line_vals)
rma.write( rma.write(
{ {
"refund_line_id": line.id, "refund_line_id": line.id,
@@ -572,6 +574,7 @@ class Rma(models.Model):
"state": "refunded", "state": "refunded",
} }
) )
refund.invoice_origin = origin
refund.message_post_with_view( refund.message_post_with_view(
"mail.message_origin_link", "mail.message_origin_link",
values={"self": refund, "origin": rmas}, values={"self": refund, "origin": rmas},
@@ -683,8 +686,8 @@ class Rma(models.Model):
"type": "ir.actions.act_window", "type": "ir.actions.act_window",
"view_type": "form", "view_type": "form",
"view_mode": "form", "view_mode": "form",
"res_model": "account.invoice", "res_model": "account.move",
"views": [(self.env.ref("account.invoice_form").id, "form")], "views": [(self.env.ref("account.view_move_form").id, "form")],
"res_id": self.refund_id.id, "res_id": self.refund_id.id,
} }
@@ -800,12 +803,15 @@ class Rma(models.Model):
self.ensure_one() self.ensure_one()
create_vals = {} create_vals = {}
if self.location_id: if self.location_id:
create_vals["location_id"] = self.location_id.id create_vals.update(
location_id=self.location_id.id, picking_id=self.picking_id.id,
)
return_wizard = ( return_wizard = (
self.env["stock.return.picking"] self.env["stock.return.picking"]
.with_context(active_id=self.picking_id.id, active_ids=self.picking_id.ids,) .with_context(active_id=self.picking_id.id, active_ids=self.picking_id.ids,)
.create(create_vals) .create(create_vals)
) )
return_wizard._onchange_picking_id()
return_wizard.product_return_moves.filtered( return_wizard.product_return_moves.filtered(
lambda r: r.move_id != self.move_id lambda r: r.move_id != self.move_id
).unlink() ).unlink()
@@ -843,7 +849,6 @@ class Rma(models.Model):
return picking.move_lines return picking.move_lines
def _prepare_picking(self, picking_form): def _prepare_picking(self, picking_form):
picking_form.company_id = self.company_id
picking_form.origin = self.name picking_form.origin = self.name
picking_form.partner_id = self.partner_id picking_form.partner_id = self.partner_id
picking_form.location_dest_id = self.location_id picking_form.location_dest_id = self.location_id
@@ -898,9 +903,7 @@ class Rma(models.Model):
rma.action_refund rma.action_refund
""" """
self.ensure_one() self.ensure_one()
invoice_form.company_id = self.company_id
invoice_form.partner_id = self.partner_invoice_id invoice_form.partner_id = self.partner_invoice_id
invoice_form.origin = origin
def _prepare_refund_line(self, line_form): def _prepare_refund_line(self, line_form):
""" Hook method for preparing a refund line Form. """ Hook method for preparing a refund line Form.
@@ -914,7 +917,7 @@ class Rma(models.Model):
self.ensure_one() self.ensure_one()
line_form.product_id = self.product_id line_form.product_id = self.product_id
line_form.quantity = self.product_uom_qty line_form.quantity = self.product_uom_qty
line_form.uom_id = self.product_uom line_form.product_uom_id = self.product_uom
line_form.price_unit = self._get_refund_line_price_unit() line_form.price_unit = self._get_refund_line_price_unit()
def _get_refund_line_price_unit(self): def _get_refund_line_price_unit(self):
@@ -928,7 +931,8 @@ class Rma(models.Model):
self._ensure_can_be_returned() self._ensure_can_be_returned()
self._ensure_qty_to_return(qty, uom) self._ensure_qty_to_return(qty, uom)
group_dict = {} group_dict = {}
for record in self.filtered("can_be_returned"): rmas_to_return = self.filtered("can_be_returned")
for record in rmas_to_return:
key = (record.partner_id.id, record.company_id.id, record.warehouse_id) key = (record.partner_id.id, record.company_id.id, record.warehouse_id)
group_dict.setdefault(key, self.env["rma"]) group_dict.setdefault(key, self.env["rma"])
group_dict[key] |= record group_dict[key] |= record
@@ -972,11 +976,10 @@ class Rma(models.Model):
values={"self": picking, "origin": rmas}, values={"self": picking, "origin": rmas},
subtype_id=self.env.ref("mail.mt_note").id, subtype_id=self.env.ref("mail.mt_note").id,
) )
self.write({"state": "waiting_return"}) rmas_to_return.write({"state": "waiting_return"})
def _prepare_returning_picking(self, picking_form, origin=None): def _prepare_returning_picking(self, picking_form, origin=None):
picking_form.picking_type_id = self.warehouse_id.rma_out_type_id picking_form.picking_type_id = self.warehouse_id.rma_out_type_id
picking_form.company_id = self.company_id
picking_form.origin = origin or self.name picking_form.origin = origin or self.name
picking_form.partner_id = self.partner_id picking_form.partner_id = self.partner_id
@@ -1052,15 +1055,18 @@ class Rma(models.Model):
values = self._prepare_procurement_values( values = self._prepare_procurement_values(
self.procurement_group_id, scheduled_date, warehouse self.procurement_group_id, scheduled_date, warehouse
) )
self.env["procurement.group"].run( procurement = self.env["procurement.group"].Procurement(
product, product,
qty, qty,
uom, uom,
self.partner_id.property_stock_customer, self.partner_id.property_stock_customer,
self.product_id.display_name, self.product_id.display_name,
self.procurement_group_id.name, self.procurement_group_id.name,
self.company_id,
values, values,
) )
self.env["procurement.group"].run([procurement])
return True
def _prepare_procurement_values( def _prepare_procurement_values(
self, group_id, scheduled_date, warehouse, self, group_id, scheduled_date, warehouse,
@@ -1077,11 +1083,11 @@ class Rma(models.Model):
} }
# Mail business methods # Mail business methods
def _track_subtype(self, init_values): def _creation_subtype(self):
self.ensure_one() if self.state in ("draft", "confirmed"):
if "state" in init_values and self.state == "draft": return self.env.ref("rma.mt_rma_draft")
return "rma.mt_rma_draft" else:
return super()._track_subtype(init_values) return super()._creation_subtype()
def message_new(self, msg_dict, custom_values=None): def message_new(self, msg_dict, custom_values=None):
"""Extract the needed values from an incoming rma emails data-set """Extract the needed values from an incoming rma emails data-set
@@ -1091,7 +1097,10 @@ class Rma(models.Model):
custom_values = {} custom_values = {}
subject = msg_dict.get("subject", "") subject = msg_dict.get("subject", "")
body = html2plaintext(msg_dict.get("body", "")) body = html2plaintext(msg_dict.get("body", ""))
desc = _("E-mail subject: %s\n\nE-mail body:\n%s") % (subject, body) desc = _("<b>E-mail subject:</b> %s<br/><br/><b>E-mail body:</b><br/>%s") % (
subject,
body,
)
defaults = { defaults = {
"description": desc, "description": desc,
"name": _("New"), "name": _("New"),

View File

@@ -1,7 +1,7 @@
# Copyright 2020 Tecnativa - Ernesto Tejeda # Copyright 2020 Tecnativa - Ernesto Tejeda
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import _, api, fields, models from odoo import _, fields, models
class RmaTeam(models.Model): class RmaTeam(models.Model):
@@ -20,7 +20,7 @@ class RmaTeam(models.Model):
company_id = fields.Many2one( company_id = fields.Many2one(
comodel_name="res.company", comodel_name="res.company",
string="Company", string="Company",
default=lambda self: self.env.user.company_id, default=lambda self: self.env.company,
) )
user_id = fields.Many2one( user_id = fields.Many2one(
comodel_name="res.users", comodel_name="res.users",
@@ -32,7 +32,6 @@ class RmaTeam(models.Model):
comodel_name="res.users", inverse_name="rma_team_id", string="Team Members", comodel_name="res.users", inverse_name="rma_team_id", string="Team Members",
) )
@api.multi
def copy(self, default=None): def copy(self, default=None):
self.ensure_one() self.ensure_one()
if default is None: if default is None:

View File

@@ -43,7 +43,7 @@ class StockMove(models.Model):
cancelled_moves.mapped("rma_id").update_replaced_state() cancelled_moves.mapped("rma_id").update_replaced_state()
return res return res
def _action_done(self): def _action_done(self, cancel_backorder=False):
""" Avoids to validate stock.move with less quantity than the """ Avoids to validate stock.move with less quantity than the
quantity in the linked receiver RMA. It also set the appropriated quantity in the linked receiver RMA. It also set the appropriated
linked RMA to 'received' or 'delivered'. linked RMA to 'received' or 'delivered'.

View File

@@ -1,7 +1,7 @@
# Copyright 2020 Tecnativa - Ernesto Tejeda # Copyright 2020 Tecnativa - Ernesto Tejeda
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import api, fields, models from odoo import fields, models
class StockPicking(models.Model): class StockPicking(models.Model):
@@ -13,7 +13,6 @@ class StockPicking(models.Model):
for rec in self: for rec in self:
rec.rma_count = len(rec.move_lines.mapped("rma_ids")) rec.rma_count = len(rec.move_lines.mapped("rma_ids"))
@api.multi
def copy(self, default=None): def copy(self, default=None):
self.ensure_one() self.ensure_one()
if self.env.context.get("set_rma_picking_type"): if self.env.context.get("set_rma_picking_type"):

View File

@@ -1,7 +1,7 @@
# Copyright 2020 Tecnativa - Ernesto Tejeda # Copyright 2020 Tecnativa - Ernesto Tejeda
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import _, fields, models from odoo import _, api, fields, models
class StockWarehouse(models.Model): class StockWarehouse(models.Model):
@@ -23,21 +23,33 @@ class StockWarehouse(models.Model):
) )
rma_loc_id = fields.Many2one(comodel_name="stock.location", string="RMA Location",) rma_loc_id = fields.Many2one(comodel_name="stock.location", string="RMA Location",)
def _get_locations_values(self, vals): @api.model_create_multi
values = super()._get_locations_values(vals) def create(self, vals_list):
values.update( """ To create an RMA location and link it with a new warehouse,
{ this method is overridden instead of '_get_locations_values'
"rma_loc_id": { method because the locations that are created with the
"name": "RMA", values returned by that method are forced to be children
"active": True, of view_location_id, and we don't want that.
"return_location": True, """
"usage": "internal", res = super().create(vals_list)
"company_id": vals.get("company_id", self.company_id.id), stock_location = self.env["stock.location"]
"location_id": self.view_location_id.id, for record in res:
}, rma_location_vals = record._get_rma_location_values()
} record.rma_loc_id = stock_location.create(rma_location_vals).id
) return res
return values
def _get_rma_location_values(self):
""" this method is intended to be used by 'create' method
to create a new RMA location to be linked to a new warehouse.
"""
return {
"name": self.view_location_id.name,
"active": True,
"return_location": True,
"usage": "internal",
"company_id": self.company_id.id,
"location_id": self.env.ref("rma.stock_location_rma").id,
}
def _get_sequence_values(self): def _get_sequence_values(self):
values = super()._get_sequence_values() values = super()._get_sequence_values()
@@ -79,6 +91,8 @@ class StockWarehouse(models.Model):
"default_location_src_id": False, "default_location_src_id": False,
"default_location_dest_id": self.rma_loc_id.id, "default_location_dest_id": self.rma_loc_id.id,
"sequence": max_sequence + 1, "sequence": max_sequence + 1,
"sequence_code": "RMA/IN",
"company_id": self.company_id.id,
}, },
"rma_out_type_id": { "rma_out_type_id": {
"name": _("RMA Delivery Orders"), "name": _("RMA Delivery Orders"),
@@ -88,6 +102,8 @@ class StockWarehouse(models.Model):
"default_location_src_id": self.rma_loc_id.id, "default_location_src_id": self.rma_loc_id.id,
"default_location_dest_id": False, "default_location_dest_id": False,
"sequence": max_sequence + 2, "sequence": max_sequence + 2,
"sequence_code": "RMA/OUT",
"company_id": self.company_id.id,
}, },
} }
) )
@@ -97,8 +113,8 @@ class StockWarehouse(models.Model):
data = super()._get_picking_type_update_values() data = super()._get_picking_type_update_values()
data.update( data.update(
{ {
"rma_in_type_id": {"default_location_dest_id": self.rma_loc_id.id,}, "rma_in_type_id": {"default_location_dest_id": self.rma_loc_id.id},
"rma_out_type_id": {"default_location_src_id": self.rma_loc_id.id,}, "rma_out_type_id": {"default_location_src_id": self.rma_loc_id.id},
} }
) )
return data return data

View File

@@ -69,7 +69,7 @@
<field name="global" eval="True" /> <field name="global" eval="True" />
<field <field
name="domain_force" name="domain_force"
>['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> >['|',('company_id','=',False),('company_id','in',company_ids)]</field>
</record> </record>
<record id="rma_team_rule_multi_company" model="ir.rule"> <record id="rma_team_rule_multi_company" model="ir.rule">
<field name="name">RMA team multi-company</field> <field name="name">RMA team multi-company</field>
@@ -77,7 +77,7 @@
<field name="global" eval="True" /> <field name="global" eval="True" />
<field <field
name="domain_force" name="domain_force"
>['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> >['|',('company_id','=',False),('company_id','in',company_ids)]</field>
</record> </record>
<!-- New users will belong to rma_group_user_own --> <!-- New users will belong to rma_group_user_own -->
<record id="base.default_user" model="res.users"> <record id="base.default_user" model="res.users">

View File

@@ -367,7 +367,7 @@ ul.auto-toc {
!! This file is generated by oca-gen-addon-readme !! !! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !! !! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/rma/tree/12.0/rma"><img alt="OCA/rma" src="https://img.shields.io/badge/github-OCA%2Frma-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/rma-12-0/rma-12-0-rma"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/145/12.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p> <p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/rma/tree/13.0/rma"><img alt="OCA/rma" src="https://img.shields.io/badge/github-OCA%2Frma-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/rma-13-0/rma-13-0-rma"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/145/13.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>This module allows you to manage <a class="reference external" href="https://en.wikipedia.org/wiki/Return_merchandise_authorization">Return Merchandise Authorization (RMA)</a>. <p>This module allows you to manage <a class="reference external" href="https://en.wikipedia.org/wiki/Return_merchandise_authorization">Return Merchandise Authorization (RMA)</a>.
RMA documents can be created from scratch, from a delivery order or from RMA documents can be created from scratch, from a delivery order or from
an incoming email. Product receptions and returning delivery operations an incoming email. Product receptions and returning delivery operations
@@ -477,7 +477,7 @@ the product of that move is.</li>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/rma/issues">GitHub Issues</a>. <p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/rma/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported. In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed If you spotted it first, help us smashing it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/rma/issues/new?body=module:%20rma%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p> <a class="reference external" href="https://github.com/OCA/rma/issues/new?body=module:%20rma%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p> <p>Do not contact contributors directly about support or help with technical issues.</p>
</div> </div>
<div class="section" id="credits"> <div class="section" id="credits">
@@ -508,7 +508,7 @@ mission is to support the collaborative development of Odoo features and
promote its widespread use.</p> promote its widespread use.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p> <p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external" href="https://github.com/ernestotejeda"><img alt="ernestotejeda" src="https://github.com/ernestotejeda.png?size=40px" /></a></p> <p><a class="reference external" href="https://github.com/ernestotejeda"><img alt="ernestotejeda" src="https://github.com/ernestotejeda.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/rma/tree/12.0/rma">OCA/rma</a> project on GitHub.</p> <p>This module is part of the <a class="reference external" href="https://github.com/OCA/rma/tree/13.0/rma">OCA/rma</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p> <p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div> </div>
</div> </div>

View File

@@ -2,9 +2,10 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo.exceptions import UserError, ValidationError from odoo.exceptions import UserError, ValidationError
from odoo.tests import Form, SavepointCase from odoo.tests import Form, SavepointCase, tagged
@tagged("post_install", "-at_install")
class TestRma(SavepointCase): class TestRma(SavepointCase):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
@@ -16,27 +17,11 @@ class TestRma(SavepointCase):
[("company_id", "=", cls.company.id)], limit=1 [("company_id", "=", cls.company.id)], limit=1
) )
cls.rma_loc = cls.warehouse_company.rma_loc_id cls.rma_loc = cls.warehouse_company.rma_loc_id
account_pay = cls.env["account.account"].create(
{
"code": "X1111",
"name": "Creditors - (test)",
"user_type_id": cls.env.ref("account.data_account_type_payable").id,
"reconcile": True,
}
)
cls.journal = cls.env["account.journal"].create(
{
"name": "sale_0",
"code": "SALE0",
"type": "sale",
"default_debit_account_id": account_pay.id,
}
)
cls.product = cls.product_product.create( cls.product = cls.product_product.create(
{"name": "Product test 1", "type": "product",} {"name": "Product test 1", "type": "product"}
) )
account_type = cls.env["account.account.type"].create( account_type = cls.env["account.account.type"].create(
{"name": "RCV type", "type": "receivable",} {"name": "RCV type", "type": "receivable", "internal_group": "income"}
) )
cls.account_receiv = cls.env["account.account"].create( cls.account_receiv = cls.env["account.account"].create(
{ {
@@ -116,7 +101,6 @@ class TestRma(SavepointCase):
), ),
view="stock.view_picking_form", view="stock.view_picking_form",
) )
picking_form.company_id = self.company
picking_form.partner_id = self.partner picking_form.partner_id = self.partner
with picking_form.move_ids_without_package.new() as move: with picking_form.move_ids_without_package.new() as move:
move.product_id = self.product move.product_id = self.product
@@ -148,7 +132,7 @@ class TestRma(SavepointCase):
} }
) )
product_2 = self.product_product.create( product_2 = self.product_product.create(
{"name": "Product test 2", "type": "product", "uom_id": uom_ten.id,} {"name": "Product test 2", "type": "product", "uom_id": uom_ten.id}
) )
outgoing_picking_type = self.env["stock.picking.type"].search( outgoing_picking_type = self.env["stock.picking.type"].search(
[ [
@@ -165,8 +149,6 @@ class TestRma(SavepointCase):
), ),
view="stock.view_picking_form", view="stock.view_picking_form",
) )
picking_form.company_id = self.company
picking_form.partner_id = self.partner
picking_form.partner_id = self.partner picking_form.partner_id = self.partner
with picking_form.move_ids_without_package.new() as move: with picking_form.move_ids_without_package.new() as move:
move.product_id = product_2 move.product_id = product_2
@@ -275,16 +257,20 @@ class TestRma(SavepointCase):
self.assertEqual(rma.refund_id.state, "draft") self.assertEqual(rma.refund_id.state, "draft")
self.assertEqual(rma.refund_line_id.product_id, rma.product_id) self.assertEqual(rma.refund_line_id.product_id, rma.product_id)
self.assertEqual(rma.refund_line_id.quantity, 10) self.assertEqual(rma.refund_line_id.quantity, 10)
self.assertEqual(rma.refund_line_id.uom_id, rma.product_uom) self.assertEqual(rma.refund_line_id.product_uom_id, rma.product_uom)
self.assertEqual(rma.state, "refunded") self.assertEqual(rma.state, "refunded")
self.assertFalse(rma.can_be_refunded) self.assertFalse(rma.can_be_refunded)
self.assertFalse(rma.can_be_returned) self.assertFalse(rma.can_be_returned)
self.assertFalse(rma.can_be_replaced) self.assertFalse(rma.can_be_replaced)
rma.refund_line_id.quantity = 9 with Form(rma.refund_line_id.move_id) as refund_form:
with refund_form.invoice_line_ids.edit(0) as refund_line:
refund_line.quantity = 9
with self.assertRaises(ValidationError): with self.assertRaises(ValidationError):
rma.refund_id.action_invoice_open() rma.refund_id.post()
rma.refund_line_id.quantity = 10 with Form(rma.refund_line_id.move_id) as refund_form:
rma.refund_id.action_invoice_open() with refund_form.invoice_line_ids.edit(0) as refund_line:
refund_line.quantity = 10
rma.refund_id.post()
self.assertFalse(rma.can_be_refunded) self.assertFalse(rma.can_be_refunded)
self.assertFalse(rma.can_be_returned) self.assertFalse(rma.can_be_returned)
self.assertFalse(rma.can_be_replaced) self.assertFalse(rma.can_be_replaced)
@@ -354,14 +340,18 @@ class TestRma(SavepointCase):
for rma in all_rmas: for rma in all_rmas:
self.assertEqual(rma.product_id, rma.refund_line_id.product_id) self.assertEqual(rma.product_id, rma.refund_line_id.product_id)
self.assertEqual(rma.product_uom_qty, rma.refund_line_id.quantity) self.assertEqual(rma.product_uom_qty, rma.refund_line_id.quantity)
self.assertEqual(rma.product_uom, rma.refund_line_id.uom_id) self.assertEqual(rma.product_uom, rma.refund_line_id.product_uom_id)
# Less quantity -> error on confirm # Less quantity -> error on confirm
rma_2.refund_line_id.quantity = 14 with Form(rma_2.refund_line_id.move_id) as refund_form:
with refund_form.invoice_line_ids.edit(1) as refund_line:
refund_line.quantity = 14
with self.assertRaises(ValidationError): with self.assertRaises(ValidationError):
refund_1.action_invoice_open() refund_1.post()
rma_2.refund_line_id.quantity = 15 with Form(rma_2.refund_line_id.move_id) as refund_form:
refund_1.action_invoice_open() with refund_form.invoice_line_ids.edit(1) as refund_line:
refund_2.action_invoice_open() refund_line.quantity = 15
refund_1.post()
refund_2.post()
def test_replace(self): def test_replace(self):
# Create, confirm and receive an RMA # Create, confirm and receive an RMA
@@ -573,8 +563,9 @@ class TestRma(SavepointCase):
return_wizard = ( return_wizard = (
self.env["stock.return.picking"] self.env["stock.return.picking"]
.with_context(active_id=origin_delivery.id, active_ids=origin_delivery.ids,) .with_context(active_id=origin_delivery.id, active_ids=origin_delivery.ids,)
.create({"create_rma": True}) .create({"create_rma": True, "picking_id": origin_delivery.id})
) )
return_wizard._onchange_picking_id()
picking_action = return_wizard.create_returns() picking_action = return_wizard.create_returns()
# Each origin move is linked to a different RMA # Each origin move is linked to a different RMA
origin_moves = origin_delivery.move_lines origin_moves = origin_delivery.move_lines
@@ -657,7 +648,11 @@ class TestRma(SavepointCase):
def test_rma_picking_type_default_values(self): def test_rma_picking_type_default_values(self):
warehouse = self.env["stock.warehouse"].create( warehouse = self.env["stock.warehouse"].create(
{"name": "Stock - RMA Test", "code": "SRT",} {"name": "Stock - RMA Test", "code": "SRT"}
) )
self.assertFalse(warehouse.rma_in_type_id.use_create_lots) self.assertFalse(warehouse.rma_in_type_id.use_create_lots)
self.assertTrue(warehouse.rma_in_type_id.use_existing_lots) self.assertTrue(warehouse.rma_in_type_id.use_existing_lots)
def test_quantities_on_hand(self):
rma = self._create_confirm_receive(self.partner, self.product, 10, self.rma_loc)
self.assertEqual(rma.product_id.qty_available, 0)

View File

@@ -28,7 +28,7 @@
priority="30" priority="30"
> >
<xpath expr="//div[hasclass('o_portal_docs')]" position="inside"> <xpath expr="//div[hasclass('o_portal_docs')]" position="inside">
<t t-call="portal.portal_docs_entry" t-if="rma_count"> <t t-call="portal.portal_docs_entry">
<t t-set="title">RMA Orders</t> <t t-set="title">RMA Orders</t>
<t t-set="url" t-value="'/my/rmas'" /> <t t-set="url" t-value="'/my/rmas'" />
<t t-set="count" t-value="rma_count" /> <t t-set="count" t-value="rma_count" />
@@ -157,9 +157,9 @@
<div class="row"> <div class="row">
<div class="col flex-grow-0 pr-3"> <div class="col flex-grow-0 pr-3">
<img <img
t-if="rma.partner_id.image" t-if="rma.partner_id.image_1024"
class="rounded-circle mt-1 o_portal_contact_img" class="rounded-circle mt-1 o_portal_contact_img"
t-att-src="image_data_uri(rma.partner_id.image)" t-att-src="image_data_uri(rma.partner_id.image_1024)"
alt="Contact" alt="Contact"
/> />
<img <img
@@ -184,9 +184,9 @@
<div class="row"> <div class="row">
<div class="col flex-grow-0 pr-3"> <div class="col flex-grow-0 pr-3">
<img <img
t-if="rma.user_id.image" t-if="rma.user_id.image_1024"
class="rounded-circle mt-1 o_portal_contact_img" class="rounded-circle mt-1 o_portal_contact_img"
t-att-src="image_data_uri(rma.user_id.image)" t-att-src="image_data_uri(rma.user_id.image_1024)"
alt="Contact" alt="Contact"
/> />
<img <img
@@ -360,10 +360,10 @@
aria-label="Download" aria-label="Download"
title="Download" title="Download"
/> />
<span t-esc="refund.number" class="mr-lg-3" /> <span t-esc="refund.name" class="mr-lg-3" />
<div class="d-lg-inline-block">Date: <span <div class="d-lg-inline-block">Date: <span
class="text-muted" class="text-muted"
t-field="refund.date_invoice" t-field="refund.invoice_date"
/></div> /></div>
</div> </div>
<span <span

View File

@@ -141,7 +141,6 @@
<record id="rma_team_action" model="ir.actions.act_window"> <record id="rma_team_action" model="ir.actions.act_window">
<field name="name">RMA team</field> <field name="name">RMA team</field>
<field name="res_model">rma.team</field> <field name="res_model">rma.team</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="help" type="html"> <field name="help" type="html">
<p class="o_view_nocontent_smiling_face"> <p class="o_view_nocontent_smiling_face">

View File

@@ -352,7 +352,6 @@
<record id="rma_action" model="ir.actions.act_window"> <record id="rma_action" model="ir.actions.act_window">
<field name="name">RMA</field> <field name="name">RMA</field>
<field name="res_model">rma</field> <field name="res_model">rma</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,pivot,calendar,activity</field> <field name="view_mode">tree,form,pivot,calendar,activity</field>
<field name="context">{"search_default_user_id": uid}</field> <field name="context">{"search_default_user_id": uid}</field>
<field name="help" type="html"> <field name="help" type="html">

View File

@@ -4,8 +4,6 @@
from odoo import _, api, fields, models from odoo import _, api, fields, models
from odoo.exceptions import ValidationError from odoo.exceptions import ValidationError
import odoo.addons.decimal_precision as dp
class RmaReDeliveryWizard(models.TransientModel): class RmaReDeliveryWizard(models.TransientModel):
_name = "rma.delivery.wizard" _name = "rma.delivery.wizard"
@@ -13,7 +11,7 @@ class RmaReDeliveryWizard(models.TransientModel):
rma_count = fields.Integer() rma_count = fields.Integer()
type = fields.Selection( type = fields.Selection(
selection=[("replace", "Replace"), ("return", "Return to customer"),], selection=[("replace", "Replace"), ("return", "Return to customer")],
string="Type", string="Type",
required=True, required=True,
) )
@@ -21,10 +19,10 @@ class RmaReDeliveryWizard(models.TransientModel):
comodel_name="product.product", string="Replace Product", comodel_name="product.product", string="Replace Product",
) )
product_uom_qty = fields.Float( product_uom_qty = fields.Float(
string="Product qty", digits=dp.get_precision("Product Unit of Measure"), string="Product qty", digits="Product Unit of Measure",
) )
product_uom = fields.Many2one(comodel_name="uom.uom", string="Unit of measure",) product_uom = fields.Many2one(comodel_name="uom.uom", string="Unit of measure")
scheduled_date = fields.Datetime(required=True, default=fields.Datetime.now(),) scheduled_date = fields.Datetime(required=True, default=fields.Datetime.now())
warehouse_id = fields.Many2one( warehouse_id = fields.Many2one(
comodel_name="stock.warehouse", string="Warehouse", required=True, comodel_name="stock.warehouse", string="Warehouse", required=True,
) )

View File

@@ -57,13 +57,11 @@
<act_window <act_window
id="rma_delivery_wizard_action" id="rma_delivery_wizard_action"
name="Return to customer" name="Return to customer"
src_model="rma" binding_model="rma"
binding_views="list"
res_model="rma.delivery.wizard" res_model="rma.delivery.wizard"
view_type="form"
view_mode="form" view_mode="form"
key2="client_action_multi"
target="new" target="new"
multi="True"
context="{'rma_delivery_type': 'return'}" context="{'rma_delivery_type': 'return'}"
/> />
</odoo> </odoo>

View File

@@ -3,8 +3,6 @@
from odoo import _, api, fields, models from odoo import _, api, fields, models
import odoo.addons.decimal_precision as dp
class RmaReSplitWizard(models.TransientModel): class RmaReSplitWizard(models.TransientModel):
_name = "rma.split.wizard" _name = "rma.split.wizard"
@@ -13,7 +11,7 @@ class RmaReSplitWizard(models.TransientModel):
rma_id = fields.Many2one(comodel_name="rma", string="RMA",) rma_id = fields.Many2one(comodel_name="rma", string="RMA",)
product_uom_qty = fields.Float( product_uom_qty = fields.Float(
string="Quantity to extract", string="Quantity to extract",
digits=dp.get_precision("Product Unit of Measure"), digits="Product Unit of Measure",
required=True, required=True,
help="Quantity to extract to a new RMA.", help="Quantity to extract to a new RMA.",
) )

View File

@@ -31,7 +31,6 @@
<record id="rma_split_wizard_action" model="ir.actions.act_window"> <record id="rma_split_wizard_action" model="ir.actions.act_window">
<field name="name">Split RMA</field> <field name="name">Split RMA</field>
<field name="res_model">rma.split.wizard</field> <field name="res_model">rma.split.wizard</field>
<field name="view_type">form</field>
<field name="view_mode">form</field> <field name="view_mode">form</field>
<field name="target">new</field> <field name="target">new</field>
</record> </record>

View File

@@ -25,14 +25,28 @@ class ReturnPicking(models.TransientModel):
if self.create_rma: if self.create_rma:
warehouse = self.picking_id.picking_type_id.warehouse_id warehouse = self.picking_id.picking_type_id.warehouse_id
self.location_id = warehouse.rma_loc_id.id self.location_id = warehouse.rma_loc_id.id
rma_loc = warehouse.search([]).mapped("rma_loc_id") rma_loc = warehouse.search(
[("company_id", "=", self.picking_id.company_id.id)]
).mapped("rma_loc_id")
rma_loc_domain = [("id", "child_of", rma_loc.ids)] rma_loc_domain = [("id", "child_of", rma_loc.ids)]
else: else:
self.location_id = self.default_get(["location_id"])["location_id"] # If self.create_rma is not True, the value of the location and
# the location domain will be the same as assigned by default.
location_id = self.picking_id.location_id.id
return_picking_type = self.picking_id.picking_type_id.return_picking_type_id
if return_picking_type.default_location_dest_id.return_location:
location_id = return_picking_type.default_location_dest_id.id
self.location_id = location_id
rma_loc_domain = [ rma_loc_domain = [
"|", "|",
("id", "=", self.picking_id.location_id.id), ("id", "=", self.picking_id.location_id.id),
"|",
"&",
("return_location", "=", True), ("return_location", "=", True),
("company_id", "=", False),
"&",
("return_location", "=", True),
("company_id", "=", self.picking_id.company_id.id),
] ]
return {"domain": {"location_id": rma_loc_domain}} return {"domain": {"location_id": rma_loc_domain}}