[FIX+IMP] rma: view permissions + portal views access errors + teams flow + Translated using Weblate (Spanish)

[FIX] rma: views permissions

Regular users don't have permissions to rma models, so we should avoid
loading views that lead to permission errors.

TT24986

rma 12.0.1.1.0

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: rma-12.0/rma-12.0-rma
Translate-URL: https://translation.odoo-community.org/projects/rma-12-0/rma-12-0-rma/

[FIX] rma: portal views access errors

- Portal mail thread needs token config.
- Unpublished products will raise AccessError on RMAs portal views for
portal users due to record rules.
- Ensure active_id when getting actions in rma, since we could come from
a context that pollutes the expected active rma id.

[IMP] rma: teams flow

- If no RMA Team is set, we'll assign a default one to the new RMA.
- A sequence is now used to search for the top team and assign it.
- No default user is assigned when it's not in the context (i.e. portal
rmas).

[UPD] Update rma.pot

rma 12.0.1.2.0

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: rma-12.0/rma-12.0-rma
Translate-URL: https://translation.odoo-community.org/projects/rma-12-0/rma-12-0-rma/

Translated using Weblate (Spanish)

Currently translated at 96.2% (253 of 263 strings)

Translation: rma-12.0/rma-12.0-rma
Translate-URL: https://translation.odoo-community.org/projects/rma-12-0/rma-12-0-rma/es/
This commit is contained in:
david
2020-08-14 12:15:42 +02:00
committed by Víctor Martínez
parent 051bad1e1c
commit f94eadee13
14 changed files with 294 additions and 138 deletions

View File

@@ -89,8 +89,23 @@ An RMA can also be created from a return of a delivery order:
Every RMA will be in confirmed state and they will Every RMA will be in confirmed state and they will
be linked to the returning operation generated previously. be linked to the returning operation generated previously.
**Note: An RMA can also be created from an incoming email (See configuration There are Optional RMA Teams that can be used for:
section).**
- Organize RMAs in sections.
- Subscribe users to notifications.
- Create RMAs from incoming mail to special aliases (See configuration
section).
To create an RMA Team (RMA Responsible user level required):
#. Go to *RMA > Configuration > RMA Teams*
#. Create a new team and assign a name, a responsible and members.
#. Subscribe users to notifications, that can be of these subtypes:
- RMA draft. When a new RMA is created.
- Notes, Debates, Activities. As in standard Odoo.
#. In the list view, use the cross handle to sort RMA Teams. The top team
will be the default one if no team is set.
Known issues / Roadmap Known issues / Roadmap
====================== ======================

View File

@@ -3,7 +3,7 @@
{ {
"name": "Return Merchandise Authorization Management", "name": "Return Merchandise Authorization Management",
"summary": "Return Merchandise Authorization (RMA)", "summary": "Return Merchandise Authorization (RMA)",
"version": "12.0.1.0.0", "version": "12.0.1.2.0",
"development_status": "Beta", "development_status": "Beta",
"category": "RMA", "category": "RMA",
"website": "https://github.com/OCA/rma", "website": "https://github.com/OCA/rma",

View File

@@ -7,15 +7,15 @@ 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-06-21 05:13+0000\n"
"PO-Revision-Date: 2020-06-21 01:16-0400\n" "PO-Revision-Date: 2020-08-18 13:59+0000\n"
"Last-Translator: <>\n" "Last-Translator: David Vidal <david.vidal@tecnativa.com>\n"
"Language-Team: \n" "Language-Team: \n"
"Language: es\n" "Language: es\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 2.0.6\n" "X-Generator: Weblate 3.10\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,7 +28,7 @@ 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:43 #: code:addons/rma/models/rma_team.py:44
#, python-format #, python-format
msgid "%s (copy)" msgid "%s (copy)"
msgstr "%s (copia)" msgstr "%s (copia)"
@@ -202,7 +202,6 @@ msgstr "<strong>Orden de Entrega:</strong>"
#. 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
#, fuzzy #, fuzzy
#| msgid "<strong>Origin delivery:</strong>"
msgid "<strong>Origin delivery</strong>" msgid "<strong>Origin delivery</strong>"
msgstr "<strong>Orden de Entrega:</strong>" msgstr "<strong>Orden de Entrega:</strong>"
@@ -325,7 +324,7 @@ msgstr "Modelo con seudónimo"
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.rma_view_form #: model_terms:ir.ui.view,arch_db:rma.rma_view_form
msgid "Are you sure you want to cancel this RMA" msgid "Are you sure you want to cancel this RMA"
msgstr "" msgstr "¿Está seguro de querer cancelar este RMA?"
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__message_attachment_count #: model:ir.model.fields,field_description:rma.field_rma__message_attachment_count
@@ -538,7 +537,7 @@ msgid "Draft RMA"
msgstr "RMA en estado Borrador" msgstr "RMA en estado Borrador"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:1076 #: code:addons/rma/models/rma.py:1091
#, python-format #, python-format
msgid "" msgid ""
"E-mail subject: %s\n" "E-mail subject: %s\n"
@@ -641,7 +640,7 @@ msgstr ""
"sin eliminarlo." "sin eliminarlo."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:1080 #: code:addons/rma/models/rma.py:1095
#, python-format #, python-format
msgid "Incoming e-mail" msgid "Incoming e-mail"
msgstr "Correo electrónico entrante" msgstr "Correo electrónico entrante"
@@ -747,8 +746,8 @@ msgid "Name"
msgstr "Nombre" msgstr "Nombre"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:31 code:addons/rma/models/rma.py:496 #: code:addons/rma/models/rma.py:31 code:addons/rma/models/rma.py:495
#: code:addons/rma/models/rma.py:1079 #: code:addons/rma/models/rma.py:1094
#, python-format #, python-format
msgid "New" msgid "New"
msgstr "Nuevo" msgstr "Nuevo"
@@ -774,13 +773,13 @@ msgid "Next Activity Type"
msgstr "Siguiente tipo de actividad" msgstr "Siguiente tipo de actividad"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:757 #: code:addons/rma/models/rma.py:772
#, 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:740 #: code:addons/rma/models/rma.py:755
#, 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."
@@ -961,7 +960,7 @@ msgid "Quantity to extract"
msgstr "Cantidad a extraer" msgstr "Cantidad a extraer"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:790 #: code:addons/rma/models/rma.py:805
#, 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 "
@@ -1087,7 +1086,7 @@ msgstr ""
#. module: rma #. module: rma
#: model:ir.model,name:rma.model_rma_operation #: model:ir.model,name:rma.model_rma_operation
msgid "RMA requested operation" msgid "RMA requested operation"
msgstr "" msgstr "Operación de RMA solicitada"
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_stock_move__rma_id #: model:ir.model.fields,field_description:rma.field_stock_move__rma_id
@@ -1133,7 +1132,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:679 #: code:addons/rma/models/rma.py:693
#: 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
@@ -1169,7 +1168,7 @@ msgstr "Ctd. entregada restante por realizar"
#. module: rma #. module: rma
#: model:rma.operation,name:rma.rma_operation_return #: model:rma.operation,name:rma.rma_operation_return
msgid "Repair" msgid "Repair"
msgstr "" msgstr "Reparar"
#. module: rma #. module: rma
#: model_terms:ir.ui.view,arch_db:rma.rma_view_form #: model_terms:ir.ui.view,arch_db:rma.rma_view_form
@@ -1189,7 +1188,7 @@ msgid "Replaced"
msgstr "Reemplazado" msgstr "Reemplazado"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:995 #: code:addons/rma/models/rma.py:1010
#, 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"
@@ -1201,7 +1200,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:1006 #: code:addons/rma/models/rma.py:1021
#, 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\" "
@@ -1221,13 +1220,11 @@ msgstr "Informes"
#. module: rma #. module: rma
#: model:ir.model.fields,field_description:rma.field_rma__operation_id #: model:ir.model.fields,field_description:rma.field_rma__operation_id
#, fuzzy
#| msgid "Type of Operation"
msgid "Requested operation" msgid "Requested operation"
msgstr "Tipo de operación" msgstr "Operación solicitada"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:721 #: code:addons/rma/models/rma.py:736
#, 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"
@@ -1256,7 +1253,7 @@ msgid "Return to customer"
msgstr "Devolver al cliente" msgstr "Devolver al cliente"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:956 #: code:addons/rma/models/rma.py:971
#, 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</"
@@ -1300,6 +1297,11 @@ msgstr "Enviar por correo"
msgid "Sent" msgid "Sent"
msgstr "Enviado" msgstr "Enviado"
#. module: rma
#: model:ir.model.fields,field_description:rma.field_rma_team__sequence
msgid "Sequence"
msgstr "Secuencia"
#. module: rma #. module: rma
#: code:addons/rma/models/stock_warehouse.py:48 #: code:addons/rma/models/stock_warehouse.py:48
#, python-format #, python-format
@@ -1339,7 +1341,7 @@ msgid "Split RMA"
msgstr "Dividir RMA" msgstr "Dividir RMA"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:874 #: code:addons/rma/models/rma.py:889
#, 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 "
@@ -1352,7 +1354,7 @@ msgstr ""
#: model:ir.model.fields,field_description:rma.field_rma__state #: model:ir.model.fields,field_description:rma.field_rma__state
#: model_terms:ir.ui.view,arch_db:rma.rma_view_search #: model_terms:ir.ui.view,arch_db:rma.rma_view_search
msgid "State" msgid "State"
msgstr "Provincia" msgstr "Estado"
#. module: rma #. module: rma
#: code:addons/rma/controllers/main.py:40 #: code:addons/rma/controllers/main.py:40
@@ -1398,7 +1400,7 @@ msgstr "Miembros del equipo"
#. module: rma #. module: rma
#: sql_constraint:rma.operation:0 #: sql_constraint:rma.operation:0
msgid "That operation name already exists !" msgid "That operation name already exists !"
msgstr "" msgstr "¡El nombre de operación ya existe!"
#. 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
@@ -1446,7 +1448,7 @@ 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:778 #: code:addons/rma/models/rma.py:793
#, 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."
@@ -1462,19 +1464,19 @@ msgstr ""
"cantidad especificada en el RMA asociado." "cantidad especificada en el RMA asociado."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:767 #: code:addons/rma/models/rma.py:782
#, 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:754 #: code:addons/rma/models/rma.py:769
#, 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:737 #: code:addons/rma/models/rma.py:752
#, 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."
@@ -1598,7 +1600,7 @@ 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:514 #: code:addons/rma/models/rma.py:516
#, 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 " msgstr "No puede "

View File

@@ -1,6 +1,6 @@
# 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 ""
@@ -27,21 +27,23 @@ 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:43 #: code:addons/rma/models/rma_team.py:44
#, python-format #, python-format
msgid "%s (copy)" msgid "%s (copy)"
msgstr "%s (Cópia)" msgstr "%s (Cópia)"
#. 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 ""
"<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"
" % endif\n" " % endif\n"
" <br/><br/>\n" " <br/><br/>\n"
" Here is the RMA <strong>${object.name}</strong> from ${object.company_id.name}.\n" " Here is the RMA <strong>${object.name}</strong> from ${object.company_id."
"name}.\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"
@@ -55,8 +57,8 @@ msgstr ""
" (${object.partner_id.parent_id.name})\n" " (${object.partner_id.parent_id.name})\n"
" % endif\n" " % endif\n"
" <br/><br/>\n" " <br/><br/>\n"
" Aqui está o RMA <strong>${object.name}</strong> from " " Aqui está o RMA <strong>${object.name}</strong> from ${object.company_id."
"${object.company_id.name}.\n" "name}.\n"
" <br/><br/>\n" " <br/><br/>\n"
" Não deixe de nos contactar se houver qualquer dúvida ou outra questão.\n" " Não deixe de nos contactar se houver qualquer dúvida ou outra questão.\n"
"</p>\n" "</p>\n"
@@ -65,10 +67,12 @@ 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-download\" role=\"img\" aria-label=\"Download\" title=\"Download\"/>" msgid ""
"<i class=\"fa fa-download\" role=\"img\" aria-label=\"Download\" title="
"\"Download\"/>"
msgstr "" msgstr ""
"<i class=\"fa fa-download\" role=\"img\" aria-label=\"Download\" title=\"" "<i class=\"fa fa-download\" role=\"img\" aria-label=\"Download\" title="
"Download\"/>" "\"Download\"/>"
#. 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
@@ -82,42 +86,54 @@ msgstr "<i class=\"fa fa-fw fa-clock-o\"/> <b>Aguardando Pagamento</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-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 ""
"<i class=\"fa fa-pencil-square-o mr-1\" role=\"img\" aria-label=\"Download\" " "<i class=\"fa fa-pencil-square-o mr-1\" role=\"img\" aria-label=\"Download\" "
"title=\"Download\"/>" "title=\"Download\"/>"
#. 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 ""
"<i class=\"fa fa-truck mr-1\" role=\"img\" aria-label=\"Download\" title=\"" "<i class=\"fa fa-truck mr-1\" role=\"img\" aria-label=\"Download\" title="
"Download\"/>" "\"Download\"/>"
#. 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 ""
"<span class=\"badge badge-danger label-text-align\"><i class=\"fa fa-fw fa-" "<span class=\"badge badge-danger label-text-align\"><i class=\"fa fa-fw fa-"
"times\"/> Cancelado</span>" "times\"/> Cancelado</span>"
#. 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 ""
"<span class=\"badge badge-info label-text-align\"><i class=\"fa fa-fw fa-" "<span class=\"badge badge-info label-text-align\"><i class=\"fa fa-fw fa-"
"clock-o\"/> Preparo</span>" "clock-o\"/> Preparo</span>"
#. 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 ""
"<span class=\"badge badge-success label-text-align\"><i class=\"fa fa-fw fa-" "<span class=\"badge badge-success label-text-align\"><i class=\"fa fa-fw fa-"
"truck\"/> Embarcado</span>" "truck\"/> Embarcado</span>"
#. 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 ""
"<span class=\"badge badge-warning label-text-align\"><i class=\"fa fa-fw fa-" "<span class=\"badge badge-warning label-text-align\"><i class=\"fa fa-fw fa-"
"clock-o\"/> Parcialmente Disponível</span>" "clock-o\"/> Parcialmente Disponível</span>"
@@ -240,7 +256,9 @@ msgstr "<strong>Situação:</strong>"
#. 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 ""
"Um dicionário Python que será avaliado para fornecer valores padrão ao criar " "Um dicionário Python que será avaliado para fornecer valores padrão ao criar "
"novos registros para esse alias." "novos registros para esse alias."
@@ -392,8 +410,7 @@ msgid "Confirm"
msgstr "Confirmar" msgstr "Confirmar"
#. 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 selection:rma,state:0
#: selection:rma,state:0
msgid "Confirmed" msgid "Confirmed"
msgstr "Confirmado(a)" msgstr "Confirmado(a)"
@@ -507,8 +524,7 @@ msgid "Display Name"
msgstr "Exibir Nome" msgstr "Exibir Nome"
#. 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 selection:rma,state:0
#: selection:rma,state:0
msgid "Draft" msgid "Draft"
msgstr "Rascunho" msgstr "Rascunho"
@@ -519,9 +535,10 @@ msgid "Draft RMA"
msgstr "Rascunho do RMA" msgstr "Rascunho do RMA"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:1076 #: code:addons/rma/models/rma.py:1091
#, python-format #, python-format
msgid "E-mail subject: %s\n" msgid ""
"E-mail subject: %s\n"
"\n" "\n"
"E-mail body:\n" "E-mail body:\n"
"%s" "%s"
@@ -586,7 +603,9 @@ msgstr "ID"
#. 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 ""
"ID do registro pai que contém o alias (exemplo: projeto que contém o alias " "ID do registro pai que contém o alias (exemplo: projeto que contém o alias "
"de criação da tarefa)" "de criação da tarefa)"
@@ -611,13 +630,15 @@ msgstr "Se marcada, algumas mensagens apresentam um erro de entrega."
#. 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 ""
"Se o campo ativo estiver definido como falso, permitirá ocultar a equipe RMA " "Se o campo ativo estiver definido como falso, permitirá ocultar a equipe RMA "
"sem removê-lo." "sem removê-lo."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:1080 #: code:addons/rma/models/rma.py:1095
#, python-format #, python-format
msgid "Incoming e-mail" msgid "Incoming e-mail"
msgstr "E-mail recebido" msgstr "E-mail recebido"
@@ -723,9 +744,8 @@ msgid "Name"
msgstr "Nome" msgstr "Nome"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:31 #: code:addons/rma/models/rma.py:31 code:addons/rma/models/rma.py:495
#: code:addons/rma/models/rma.py:496 #: code:addons/rma/models/rma.py:1094
#: code:addons/rma/models/rma.py:1079
#, python-format #, python-format
msgid "New" msgid "New"
msgstr "Novo(a)" msgstr "Novo(a)"
@@ -751,13 +771,13 @@ 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:757 #: code:addons/rma/models/rma.py:772
#, 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:740 #: code:addons/rma/models/rma.py:755
#, 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."
@@ -804,7 +824,10 @@ msgstr "Número de Mensagens Não Lidas"
#. 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 ""
"ID opcional de um encadeamento (registro) ao qual todas as mensagens " "ID opcional de um encadeamento (registro) ao qual todas as mensagens "
"recebidas serão anexadas, mesmo que não tenham respondido. Se definido, isso " "recebidas serão anexadas, mesmo que não tenham respondido. Se definido, isso "
@@ -852,7 +875,10 @@ msgstr "ID do Encadeamento do Registro Pai"
#. 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 ""
"Modelo pai que contém o alias. O modelo que contém a referência de alias não " "Modelo pai que contém o alias. O modelo que contém a referência de alias não "
"é necessariamente o modelo fornecido pelo alias_model_id (exemplo: projeto " "é necessariamente o modelo fornecido pelo alias_model_id (exemplo: projeto "
@@ -870,11 +896,12 @@ 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 "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 ""
"Política para postar uma mensagem no documento usando o mail gateway.\n" "Política para postar uma mensagem no documento usando o mail gateway.\n"
"- todos: todos podem postar\n" "- todos: todos podem postar\n"
@@ -920,8 +947,7 @@ msgid "Quantity"
msgstr "Quantidade" msgstr "Quantidade"
#. module: rma #. module: rma
#: code:addons/rma/wizard/rma_delivery.py:49 #: code:addons/rma/wizard/rma_delivery.py:49 sql_constraint:rma.split.wizard:0
#: sql_constraint:rma.split.wizard:0
#, 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."
@@ -932,9 +958,11 @@ msgid "Quantity to extract"
msgstr "Quantidade a extrair" msgstr "Quantidade a extrair"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:790 #: code:addons/rma/models/rma.py:805
#, 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 ""
"A quantidade a extrair não pode ser maior que a quantidade de entrega " "A quantidade a extrair não pode ser maior que a quantidade de entrega "
"restante (%s %s)" "restante (%s %s)"
@@ -1082,8 +1110,7 @@ msgid "Receipt"
msgstr "Recebimento" msgstr "Recebimento"
#. 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 selection:rma,state:0
#: selection:rma,state:0
msgid "Received" msgid "Received"
msgstr "Recebido" msgstr "Recebido"
@@ -1103,7 +1130,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:679 #: code:addons/rma/models/rma.py:693
#: 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
@@ -1159,18 +1186,25 @@ msgid "Replaced"
msgstr "Substituído" msgstr "Substituído"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:995 #: code:addons/rma/models/rma.py:1010
#, 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 ""
"Substituição: Movimentação <a href=\"#\" data-oe-model=\"stock.move\" data-" "Substituição: Movimentação <a href=\"#\" data-oe-model=\"stock.move\" data-"
"oe-id=\"%d\">%s</a> (A Coleta <a href=\"#\" data-oe-model=\"stock.picking\" " "oe-id=\"%d\">%s</a> (A Coleta <a href=\"#\" data-oe-model=\"stock.picking\" "
"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:1006 #: code:addons/rma/models/rma.py:1021
#, 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 ""
"Substituição:<br/> Produto <a href=\"#\" data-oe-model=\"product.product\" " "Substituição:<br/> Produto <a href=\"#\" data-oe-model=\"product.product\" "
"data-oe-id=\"%d\">%s</a><br/> Quantidade %f%s<br/> Essa substituição não " "data-oe-id=\"%d\">%s</a><br/> Quantidade %f%s<br/> Essa substituição não "
@@ -1188,7 +1222,7 @@ msgid "Requested operation"
msgstr "Operação Solicitada" msgstr "Operação Solicitada"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:721 #: code:addons/rma/models/rma.py:736
#, 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"
@@ -1217,12 +1251,14 @@ msgid "Return to customer"
msgstr "Retornar ao cliente" msgstr "Retornar ao cliente"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:956 #: code:addons/rma/models/rma.py:971
#, 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 ""
"Retorno: <a href=\"#\" data-oe-model=\"stock.picking\" data-oe-id=\"%d\"" "Retorno: <a href=\"#\" data-oe-model=\"stock.picking\" data-oe-id=\"%d\">%s</"
">%s</a> foi criado." "a> foi criado."
#. module: rma #. module: rma
#: selection:rma,state:0 #: selection:rma,state:0
@@ -1259,6 +1295,11 @@ msgstr "Enviado(a) por Correio"
msgid "Sent" msgid "Sent"
msgstr "Enviado(a)" msgstr "Enviado(a)"
#. module: rma
#: model:ir.model.fields,field_description:rma.field_rma_team__sequence
msgid "Sequence"
msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/stock_warehouse.py:48 #: code:addons/rma/models/stock_warehouse.py:48
#, python-format #, python-format
@@ -1298,9 +1339,11 @@ msgid "Split RMA"
msgstr "Dividir RMA" msgstr "Dividir RMA"
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:874 #: code:addons/rma/models/rma.py:889
#, 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 ""
"Divisão: <a href=\"#\" data-oe-model=\"rma\" data-oe-id=\"%d\">%s</a> foi " "Divisão: <a href=\"#\" data-oe-model=\"rma\" data-oe-id=\"%d\">%s</a> foi "
"criada." "criada."
@@ -1320,7 +1363,8 @@ msgstr "Status"
#. 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."
@@ -1358,7 +1402,10 @@ msgstr "Esse nome de operação já existe!"
#. 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 ""
"Modelo (tipo de documento Odoo) ao qual esse alias corresponde. Qualquer e-" "Modelo (tipo de documento Odoo) ao qual esse alias corresponde. Qualquer e-"
"mail recebido que não responda a um registro existente causará a criação de " "mail recebido que não responda a um registro existente causará a criação de "
@@ -1366,14 +1413,20 @@ 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 ""
"O nome do alias do email, por exemplo 'jobs' se você deseja receber e-mails " "O nome do alias do email, por exemplo 'jobs' se você deseja receber e-mails "
"de <jobs@example.odoo.com>" "de <jobs@example.odoo.com>"
#. 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 ""
"O proprietário dos registros criados ao receber emails nesse alias. Se esse " "O proprietário dos registros criados ao receber emails nesse alias. Se esse "
"campo não estiver definido, o sistema tentará encontrar o proprietário certo " "campo não estiver definido, o sistema tentará encontrar o proprietário certo "
@@ -1383,13 +1436,15 @@ msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/stock_move.py:60 #: code:addons/rma/models/stock_move.py:60
#, 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 ""
"A quantidade realizada para o produto '%s' deve ser igual à sua demanda " "A quantidade realizada para o produto '%s' deve ser igual à sua demanda "
"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:778 #: code:addons/rma/models/rma.py:793
#, 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."
@@ -1397,25 +1452,27 @@ 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_invoice.py:22
#, 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 ""
"Há pelo menos uma linha de fatura cuja quantidade é menor que a quantidade " "Há pelo menos uma linha de fatura cuja quantidade é menor que a quantidade "
"especificada na sua RMA vinculada." "especificada na sua RMA vinculada."
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:767 #: code:addons/rma/models/rma.py:782
#, 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:754 #: code:addons/rma/models/rma.py:769
#, 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:737 #: code:addons/rma/models/rma.py:752
#, 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."
@@ -1539,7 +1596,7 @@ 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:514 #: code:addons/rma/models/rma.py:516
#, 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\""
@@ -1547,14 +1604,17 @@ 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:56 #: code:addons/rma/wizard/stock_picking_return.py:56
#, 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 "" 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 #. 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 "o usuário terá acesso a todos os registros de todos na aplicação RMA." msgstr "o usuário terá acesso a todos os registros de todos na aplicação RMA."
#. module: rma #. module: rma
@@ -1564,7 +1624,9 @@ msgstr "o usuário terá acesso aos seus próprios dados na aplicação RMA."
#. 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 ""
"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."

View File

@@ -24,7 +24,7 @@ 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:43 #: code:addons/rma/models/rma_team.py:44
#, python-format #, python-format
msgid "%s (copy)" msgid "%s (copy)"
msgstr "" msgstr ""
@@ -486,7 +486,7 @@ msgid "Draft RMA"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:1076 #: code:addons/rma/models/rma.py:1091
#, python-format #, python-format
msgid "E-mail subject: %s\n" msgid "E-mail subject: %s\n"
"\n" "\n"
@@ -576,7 +576,7 @@ msgid "If the active field is set to false, it will allow you to hide the RMA Te
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:1080 #: code:addons/rma/models/rma.py:1095
#, python-format #, python-format
msgid "Incoming e-mail" msgid "Incoming e-mail"
msgstr "" msgstr ""
@@ -683,8 +683,8 @@ msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:31 #: code:addons/rma/models/rma.py:31
#: code:addons/rma/models/rma.py:496 #: code:addons/rma/models/rma.py:495
#: code:addons/rma/models/rma.py:1079 #: code:addons/rma/models/rma.py:1094
#, python-format #, python-format
msgid "New" msgid "New"
msgstr "" msgstr ""
@@ -710,13 +710,13 @@ msgid "Next Activity Type"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:757 #: code:addons/rma/models/rma.py:772
#, 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:740 #: code:addons/rma/models/rma.py:755
#, 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 ""
@@ -880,7 +880,7 @@ msgid "Quantity to extract"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:790 #: code:addons/rma/models/rma.py:805
#, 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 ""
@@ -1049,7 +1049,7 @@ msgid "Reference of the document that generated this RMA."
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:679 #: code:addons/rma/models/rma.py:693
#: 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
@@ -1105,13 +1105,13 @@ msgid "Replaced"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:995 #: code:addons/rma/models/rma.py:1010
#, 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:1006 #: code:addons/rma/models/rma.py:1021
#, 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 ""
@@ -1127,7 +1127,7 @@ msgid "Requested operation"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:721 #: code:addons/rma/models/rma.py:736
#, python-format #, python-format
msgid "Required field(s):%s" msgid "Required field(s):%s"
msgstr "" msgstr ""
@@ -1156,7 +1156,7 @@ msgid "Return to customer"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:956 #: code:addons/rma/models/rma.py:971
#, 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 ""
@@ -1196,6 +1196,11 @@ msgstr ""
msgid "Sent" msgid "Sent"
msgstr "" msgstr ""
#. module: rma
#: model:ir.model.fields,field_description:rma.field_rma_team__sequence
msgid "Sequence"
msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/stock_warehouse.py:48 #: code:addons/rma/models/stock_warehouse.py:48
#, python-format #, python-format
@@ -1235,7 +1240,7 @@ msgid "Split RMA"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:874 #: code:addons/rma/models/rma.py:889
#, 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 ""
@@ -1309,7 +1314,7 @@ msgid "The quantity done for the product '%s' must be equal to its initial deman
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:778 #: code:addons/rma/models/rma.py:793
#, 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 ""
@@ -1321,19 +1326,19 @@ msgid "There is at least one invoice lines whose quantity is less than the quant
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:767 #: code:addons/rma/models/rma.py:782
#, 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:754 #: code:addons/rma/models/rma.py:769
#, 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:737 #: code:addons/rma/models/rma.py:752
#, python-format #, python-format
msgid "This RMA cannot perform a return." msgid "This RMA cannot perform a return."
msgstr "" msgstr ""
@@ -1457,7 +1462,7 @@ msgid "Website communication history"
msgstr "" msgstr ""
#. module: rma #. module: rma
#: code:addons/rma/models/rma.py:514 #: code:addons/rma/models/rma.py:516
#, 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 ""

View File

@@ -55,7 +55,6 @@ class Rma(models.Model):
comodel_name="res.users", comodel_name="res.users",
string="Responsible", string="Responsible",
track_visibility="always", track_visibility="always",
default=lambda self: self.env.user,
states={ states={
'locked': [('readonly', True)], 'locked': [('readonly', True)],
'cancelled': [('readonly', True)], 'cancelled': [('readonly', True)],
@@ -499,6 +498,9 @@ class Rma(models.Model):
ir_sequence = ir_sequence.with_context( ir_sequence = ir_sequence.with_context(
force_company=vals['company_id']) force_company=vals['company_id'])
vals['name'] = ir_sequence.next_by_code('rma') vals['name'] = ir_sequence.next_by_code('rma')
# 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) return super().create(vals)
def copy(self, default=None): def copy(self, default=None):
@@ -599,7 +601,10 @@ class Rma(models.Model):
"""Invoked when 'Replace' button in rma form view is clicked.""" """Invoked when 'Replace' button in rma form view is clicked."""
self.ensure_one() self.ensure_one()
self._ensure_can_be_replaced() self._ensure_can_be_replaced()
action = self.env.ref("rma.rma_delivery_wizard_action").read()[0] # Force active_id to avoid issues when coming from smart buttons
# in other models
action = self.env.ref("rma.rma_delivery_wizard_action").with_context(
active_id=self.id).read()[0]
action['name'] = 'Replace product(s)' action['name'] = 'Replace product(s)'
action['context'] = dict(self.env.context) action['context'] = dict(self.env.context)
action['context'].update( action['context'].update(
@@ -615,7 +620,10 @@ class Rma(models.Model):
""" """
self.ensure_one() self.ensure_one()
self._ensure_can_be_returned() self._ensure_can_be_returned()
action = self.env.ref("rma.rma_delivery_wizard_action").read()[0] # Force active_id to avoid issues when coming from smart buttons
# in other models
action = self.env.ref("rma.rma_delivery_wizard_action").with_context(
active_id=self.id).read()[0]
action['context'] = dict(self.env.context) action['context'] = dict(self.env.context)
action['context'].update( action['context'].update(
active_id=self.id, active_id=self.id,
@@ -628,9 +636,12 @@ class Rma(models.Model):
"""Invoked when 'Split' button in rma form view is clicked.""" """Invoked when 'Split' button in rma form view is clicked."""
self.ensure_one() self.ensure_one()
self._ensure_can_be_split() self._ensure_can_be_split()
action = self.env.ref("rma.rma_split_wizard_action").read()[0] # Force active_id to avoid issues when coming from smart buttons
# in other models
action = self.env.ref("rma.rma_split_wizard_action").with_context(
active_id=self.id).read()[0]
action['context'] = dict(self.env.context) action['context'] = dict(self.env.context)
action['context'].update(active_ids=self.ids) action['context'].update(active_id=self.id, active_ids=self.ids)
return action return action
def action_cancel(self): def action_cancel(self):
@@ -663,7 +674,10 @@ class Rma(models.Model):
def action_view_receipt(self): def action_view_receipt(self):
"""Invoked when 'Receipt' smart button in rma form view is clicked.""" """Invoked when 'Receipt' smart button in rma form view is clicked."""
self.ensure_one() self.ensure_one()
action = self.env.ref('stock.action_picking_tree_all').read()[0] # Force active_id to avoid issues when coming from smart buttons
# in other models
action = self.env.ref('stock.action_picking_tree_all').with_context(
active_id=self.id).read()[0]
action.update( action.update(
res_id=self.reception_move_id.picking_id.id, res_id=self.reception_move_id.picking_id.id,
view_mode="form", view_mode="form",
@@ -687,7 +701,8 @@ class Rma(models.Model):
def action_view_delivery(self): def action_view_delivery(self):
"""Invoked when 'Delivery' smart button in rma form view is clicked.""" """Invoked when 'Delivery' smart button in rma form view is clicked."""
action = self.env.ref('stock.action_picking_tree_all').read()[0] action = self.env.ref('stock.action_picking_tree_all').with_context(
active_id=self.id).read()[0]
picking = self.delivery_move_ids.mapped('picking_id') picking = self.delivery_move_ids.mapped('picking_id')
if len(picking) > 1: if len(picking) > 1:
action['domain'] = [('id', 'in', picking.ids)] action['domain'] = [('id', 'in', picking.ids)]

View File

@@ -8,8 +8,9 @@ class RmaTeam(models.Model):
_name = "rma.team" _name = "rma.team"
_inherit = ['mail.alias.mixin', 'mail.thread'] _inherit = ['mail.alias.mixin', 'mail.thread']
_description = "RMA Team" _description = "RMA Team"
_order = "name" _order = "sequence, name"
sequence = fields.Integer()
name = fields.Char( name = fields.Char(
required=True, required=True,
translate=True, translate=True,

View File

@@ -33,5 +33,20 @@ An RMA can also be created from a return of a delivery order:
Every RMA will be in confirmed state and they will Every RMA will be in confirmed state and they will
be linked to the returning operation generated previously. be linked to the returning operation generated previously.
**Note: An RMA can also be created from an incoming email (See configuration There are Optional RMA Teams that can be used for:
section).**
- Organize RMAs in sections.
- Subscribe users to notifications.
- Create RMAs from incoming mail to special aliases (See configuration
section).
To create an RMA Team (RMA Responsible user level required):
#. Go to *RMA > Configuration > RMA Teams*
#. Create a new team and assign a name, a responsible and members.
#. Subscribe users to notifications, that can be of these subtypes:
- RMA draft. When a new RMA is created.
- Notes, Debates, Activities. As in standard Odoo.
#. In the list view, use the cross handle to sort RMA Teams. The top team
will be the default one if no team is set.

View File

@@ -440,8 +440,29 @@ stock location and click on Return button.</li>
Every RMA will be in confirmed state and they will Every RMA will be in confirmed state and they will
be linked to the returning operation generated previously.</li> be linked to the returning operation generated previously.</li>
</ol> </ol>
<p><strong>Note: An RMA can also be created from an incoming email (See configuration <p>There are Optional RMA Teams that can be used for:</p>
section).</strong></p> <blockquote>
<ul class="simple">
<li>Organize RMAs in sections.</li>
<li>Subscribe users to notifications.</li>
<li>Create RMAs from incoming mail to special aliases (See configuration
section).</li>
</ul>
</blockquote>
<p>To create an RMA Team (RMA Responsible user level required):</p>
<blockquote>
<ol class="arabic simple">
<li>Go to <em>RMA &gt; Configuration &gt; RMA Teams</em></li>
<li>Create a new team and assign a name, a responsible and members.</li>
<li>Subscribe users to notifications, that can be of these subtypes:<ul>
<li>RMA draft. When a new RMA is created.</li>
<li>Notes, Debates, Activities. As in standard Odoo.</li>
</ul>
</li>
<li>In the list view, use the cross handle to sort RMA Teams. The top team
will be the default one if no team is set.</li>
</ol>
</blockquote>
</div> </div>
<div class="section" id="known-issues-roadmap"> <div class="section" id="known-issues-roadmap">
<h1><a class="toc-backref" href="#id3">Known issues / Roadmap</a></h1> <h1><a class="toc-backref" href="#id3">Known issues / Roadmap</a></h1>

View File

@@ -6,6 +6,7 @@
<field name="name">res.partner.form</field> <field name="name">res.partner.form</field>
<field name="model">res.partner</field> <field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/> <field name="inherit_id" ref="base.view_partner_form"/>
<field name="groups_id" eval="[(4, ref('rma.rma_group_user_own'))]"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<div name="button_box"> <div name="button_box">
<button name="action_view_rma" <button name="action_view_rma"

View File

@@ -50,7 +50,8 @@
</a> </a>
</td> </td>
<td class="d-none d-md-table-cell"><span t-field="rma.date"/></td> <td class="d-none d-md-table-cell"><span t-field="rma.date"/></td>
<td><span t-field="rma.product_id.name"/></td> <!-- Portal users don't have access to unpublished products -->
<td><span t-esc="rma.sudo().product_id.display_name"/></td>
<td class='text-right'><span t-field="rma.product_uom_qty"/></td> <td class='text-right'><span t-field="rma.product_uom_qty"/></td>
<td class="d-none d-md-table-cell tx_status"> <td class="d-none d-md-table-cell tx_status">
<span class="badge badge-pill badge-secondary"><span t-field="rma.state"/></span> <span class="badge badge-pill badge-secondary"><span t-field="rma.state"/></span>
@@ -132,12 +133,14 @@
<span t-field="rma.picking_id"/> <span t-field="rma.picking_id"/>
</div> </div>
</div> </div>
<div t-if="rma.product_id" class="row mb-2 mb-sm-1"> <!-- We need to prevent access errors if the product is
unpublished-->
<div t-if="rma.sudo().product_id" class="row mb-2 mb-sm-1">
<div class="col-12 col-sm-4"> <div class="col-12 col-sm-4">
<strong>Product</strong> <strong>Product</strong>
</div> </div>
<div class="col-12 col-sm-8"> <div class="col-12 col-sm-8">
<span t-field="rma.product_id"/> <span t-esc="rma.sudo().product_id.display_name"/>
</div> </div>
</div> </div>
<div t-if="rma.product_uom_qty" class="row mb-2 mb-sm-1"> <div t-if="rma.product_uom_qty" class="row mb-2 mb-sm-1">
@@ -262,6 +265,9 @@
<h2>Communication</h2> <h2>Communication</h2>
<t t-call="portal.message_thread"> <t t-call="portal.message_thread">
<t t-set="object" t-value="rma"/> <t t-set="object" t-value="rma"/>
<t t-set="token" t-value="rma.access_token"/>
<t t-set="pid" t-value="pid"/>
<t t-set="hash" t-value="hash"/>
</t> </t>
</div> </div>
</t> </t>

View File

@@ -2,6 +2,17 @@
<!-- 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). -->
<odoo> <odoo>
<record id="rma_team_view_tree" model="ir.ui.view">
<field name="model">rma.team</field>
<field name="arch" type="xml">
<tree>
<field name="sequence" widget="handle" />
<field name="name" />
<field name="user_id" />
<field name="company_id" groups="base.group_multi_company" />
</tree>
</field>
</record>
<record id="rma_team_view_form" model="ir.ui.view"> <record id="rma_team_view_form" model="ir.ui.view">
<field name="name">rma.team.view.form</field> <field name="name">rma.team.view.form</field>
<field name="model">rma.team</field> <field name="model">rma.team</field>

View File

@@ -6,6 +6,7 @@
<field name="name">stock.picking.form</field> <field name="name">stock.picking.form</field>
<field name="model">stock.picking</field> <field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form"/> <field name="inherit_id" ref="stock.view_picking_form"/>
<field name="groups_id" eval="[(4, ref('rma.rma_group_user_own'))]"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<div name="button_box"> <div name="button_box">
<button name="action_view_rma" <button name="action_view_rma"

View File

@@ -4,6 +4,7 @@
<field name="name">Stock Warehouse Inherit MRP</field> <field name="name">Stock Warehouse Inherit MRP</field>
<field name="model">stock.warehouse</field> <field name="model">stock.warehouse</field>
<field name="inherit_id" ref="stock.view_warehouse"/> <field name="inherit_id" ref="stock.view_warehouse"/>
<field name="groups_id" eval="[(4, ref('rma.rma_group_user_own'))]"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//field[@name='wh_output_stock_loc_id']/.."> <xpath expr="//field[@name='wh_output_stock_loc_id']/..">
<field name="rma_loc_id"/> <field name="rma_loc_id"/>