mirror of
https://github.com/OCA/rma.git
synced 2025-02-16 17:11:47 +02:00
@@ -56,6 +56,14 @@ If you want to manually finish RMAs, you need to:
|
|||||||
#. Go to *Settings > Inventory*.
|
#. Go to *Settings > Inventory*.
|
||||||
#. Set *Finish RMAs manually* checkbox on.
|
#. Set *Finish RMAs manually* checkbox on.
|
||||||
|
|
||||||
|
By default, returns to customer are grouped by shipping address, warehouse and company.
|
||||||
|
If you want to avoid this grouping you can:
|
||||||
|
|
||||||
|
#. Go to *Settings > Inventory*.
|
||||||
|
#. Set *Group RMA returns by customer address and warehouse* checkbox off.
|
||||||
|
|
||||||
|
The users will still be able to group those pickings from the wizard.
|
||||||
|
|
||||||
Usage
|
Usage
|
||||||
=====
|
=====
|
||||||
|
|
||||||
|
|||||||
320
rma/i18n/es.po
320
rma/i18n/es.po
@@ -10,7 +10,6 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2022-01-17 12:39+0000\n"
|
"PO-Revision-Date: 2022-01-17 12:39+0000\n"
|
||||||
"Last-Translator: xavigutipujol <jgutierrez@pyming.com>\n"
|
"Last-Translator: xavigutipujol <jgutierrez@pyming.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Language: \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"
|
||||||
@@ -22,12 +21,12 @@ msgstr ""
|
|||||||
#: model:mail.template,report_name:rma.mail_template_rma_notification
|
#: model:mail.template,report_name:rma.mail_template_rma_notification
|
||||||
#: model:mail.template,report_name:rma.mail_template_rma_receipt_notification
|
#: model:mail.template,report_name:rma.mail_template_rma_receipt_notification
|
||||||
msgid "${(object.name or '')}"
|
msgid "${(object.name or '')}"
|
||||||
msgstr ""
|
msgstr "${(object.name or '')}"
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model:mail.template,subject:rma.mail_template_rma_notification
|
#: model:mail.template,subject:rma.mail_template_rma_notification
|
||||||
msgid "${object.company_id.name} RMA (Ref ${object.name or 'n/a' })"
|
msgid "${object.company_id.name} RMA (Ref ${object.name or 'n/a' })"
|
||||||
msgstr ""
|
msgstr "${object.company_id.name} RMA (Ref ${object.name or 'n/a' })"
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model:mail.template,subject:rma.mail_template_rma_receipt_notification
|
#: model:mail.template,subject:rma.mail_template_rma_receipt_notification
|
||||||
@@ -42,11 +41,10 @@ msgstr ""
|
|||||||
#. module: rma
|
#. module: rma
|
||||||
#: model:mail.template,subject:rma.mail_template_rma_draft_notification
|
#: model:mail.template,subject:rma.mail_template_rma_draft_notification
|
||||||
msgid ""
|
msgid ""
|
||||||
"${object.company_id.name} Your RMA has been succesfully created (Ref "
|
"${object.company_id.name} Your RMA has been succesfully created (Ref ${object.name or 'n/"
|
||||||
"${object.name or 'n/a' })"
|
"a' })"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"${object.company_id.name} Su RMA se ha creado con éxito (Ref ${object.name "
|
"${object.company_id.name} Su RMA se ha creado con éxito (Ref ${object.name or 'n/a' })"
|
||||||
"or 'n/a' })"
|
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: code:addons/rma/models/rma_team.py:0
|
#: code:addons/rma/models/rma_team.py:0
|
||||||
@@ -64,8 +62,8 @@ msgstr ""
|
|||||||
#, python-format
|
#, python-format
|
||||||
msgid "<b>E-mail subject:</b> %s<br/><br/><b>E-mail body:</b><br/>%s"
|
msgid "<b>E-mail subject:</b> %s<br/><br/><b>E-mail body:</b><br/>%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"<b>Asunto del correo electrónico:</b> %s<br/><br/><b>Cuerpo del correo "
|
"<b>Asunto del correo electrónico:</b> %s<br/><br/><b>Cuerpo del correo electrónico:</b><br/"
|
||||||
"electrónico:</b><br/>%s"
|
">%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
|
||||||
@@ -77,8 +75,7 @@ msgid ""
|
|||||||
" (${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."
|
" Here is the RMA <strong>${object.name}</strong> from ${object.company_id.name}.\n"
|
||||||
"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"
|
||||||
@@ -92,8 +89,7 @@ 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"
|
||||||
" Aquí tiene el RMA <strong>${object.name}</strong> Desde ${object."
|
" Aquí tiene el RMA <strong>${object.name}</strong> Desde ${object.company_id.name}.\n"
|
||||||
"company_id.name}.\n"
|
|
||||||
" <br/><br/>\n"
|
" <br/><br/>\n"
|
||||||
" No dude en ponerse en contacto con nosotros si tiene alguna pregunta.\n"
|
" No dude en ponerse en contacto con nosotros si tiene alguna pregunta.\n"
|
||||||
"</p>\n"
|
"</p>\n"
|
||||||
@@ -170,12 +166,9 @@ 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 ""
|
msgid "<i class=\"fa fa-download\" role=\"img\" aria-label=\"Download\" title=\"Download\"/>"
|
||||||
"<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=\"Descargar\"/>"
|
||||||
"\"Descargar\"/>"
|
|
||||||
|
|
||||||
#. 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
|
||||||
@@ -194,63 +187,63 @@ msgstr "<i class=\"fa fa-fw fa-clock-o\"/><b>Esperando Pago</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 ""
|
msgid ""
|
||||||
"<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="
|
||||||
"title=\"Download\"/>"
|
|
||||||
msgstr ""
|
|
||||||
"<i class=\"fa fa-pencil-square-o mr-1\" role=\"img\" aria-label=\"Download\" "
|
|
||||||
"title=\"Descargar\"/>"
|
|
||||||
|
|
||||||
#. module: rma
|
|
||||||
#: 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\"/>"
|
"\"Download\"/>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"<i class=\"fa fa-truck mr-1\" role=\"img\" aria-label=\"Download\" title="
|
"<i class=\"fa fa-pencil-square-o mr-1\" role=\"img\" aria-label=\"Download\" title="
|
||||||
"\"Descargar\"/>"
|
"\"Descargar\"/>"
|
||||||
|
|
||||||
#. 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 ""
|
msgid ""
|
||||||
"<span class=\"badge badge-danger label-text-align\"><i class=\"fa fa-fw fa-"
|
"<i class=\"fa fa-truck mr-1\" role=\"img\" aria-label=\"Download\" title=\"Download\"/>"
|
||||||
"times\"/> Cancelled</span>"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"<span class=\"badge badge-danger label-text-align\"><i class=\"fa fa-fw fa-"
|
"<i class=\"fa fa-truck mr-1\" role=\"img\" aria-label=\"Download\" title=\"Descargar\"/>"
|
||||||
"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 ""
|
msgid ""
|
||||||
"<span class=\"badge badge-info label-text-align\"><i class=\"fa fa-fw fa-"
|
"<span class=\"badge badge-danger label-text-align\"><i class=\"fa fa-fw fa-times\"/> "
|
||||||
"clock-o\"/> Preparation</span>"
|
"Cancelled</span>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"<span class=\"badge badge-info label-text-align\"><i class=\"fa fa-fw fa-"
|
"<span class=\"badge badge-danger label-text-align\"><i class=\"fa fa-fw fa-times\"/"
|
||||||
"clock-o\"/>Preparación</span>"
|
">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 ""
|
msgid ""
|
||||||
"<span class=\"badge badge-success 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\"/> "
|
||||||
"truck\"/> Shipped</span>"
|
"Preparation</span>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"<span class=\"badge badge-success 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\"/"
|
||||||
"truck\"/> Enviado</span>"
|
">Preparación</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 ""
|
msgid ""
|
||||||
"<span class=\"badge badge-warning label-text-align\"><i class=\"fa fa-fw fa-"
|
"<span class=\"badge badge-success label-text-align\"><i class=\"fa fa-fw fa-truck\"/> "
|
||||||
"clock-o\"/> Partially Available</span>"
|
"Shipped</span>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"<span class=\"badge badge-warning label-text-align\"><i class=\"fa fa-fw fa-"
|
"<span class=\"badge badge-success label-text-align\"><i class=\"fa fa-fw fa-truck\"/> "
|
||||||
"clock-o\"/>Disponible parcialmente</span>"
|
"Enviado</span>"
|
||||||
|
|
||||||
|
#. module: rma
|
||||||
|
#: 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>"
|
||||||
|
msgstr ""
|
||||||
|
"<span class=\"badge badge-warning label-text-align\"><i class=\"fa fa-fw fa-clock-o\"/"
|
||||||
|
">Disponible parcialmente</span>"
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form
|
#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form
|
||||||
msgid ""
|
msgid ""
|
||||||
"<span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-"
|
"<span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-specific.\" "
|
||||||
"specific.\" groups=\"base.group_multi_company\"/>"
|
"groups=\"base.group_multi_company\"/>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"<span class=\"fa fa-lg fa-building-o\" title=\"Valores específicos por compañía.\" groups="
|
||||||
|
"\"base.group_multi_company\"/>"
|
||||||
|
|
||||||
#. 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
|
||||||
@@ -376,11 +369,11 @@ msgstr "<strong>Estado:</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 ""
|
msgid ""
|
||||||
"A Python dictionary that will be evaluated to provide default values when "
|
"A Python dictionary that will be evaluated to provide default values when creating new "
|
||||||
"creating new records for this alias."
|
"records for this alias."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Diccionario Python a evaluar para proporcionar valores por defecto cuando un "
|
"Diccionario Python a evaluar para proporcionar valores por defecto cuando un nuevo "
|
||||||
"nuevo registro se cree para este seudónimo."
|
"registro se cree para este seudónimo."
|
||||||
|
|
||||||
#. 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
|
||||||
@@ -808,9 +801,7 @@ msgstr "Enviar correo al cliente una vez se recepcionen los productos del RMA."
|
|||||||
#: model:ir.model.fields,help:rma.field_res_company__rma_mail_draft_confirmation_template_id
|
#: model:ir.model.fields,help:rma.field_res_company__rma_mail_draft_confirmation_template_id
|
||||||
#: model:ir.model.fields,help:rma.field_res_config_settings__rma_mail_draft_confirmation_template_id
|
#: model:ir.model.fields,help:rma.field_res_config_settings__rma_mail_draft_confirmation_template_id
|
||||||
msgid "Email sent to the customer when they place an RMA from the portal"
|
msgid "Email sent to the customer when they place an RMA from the portal"
|
||||||
msgstr ""
|
msgstr "Enviar correo de confirmación al cliente una vez se tramite el RMA desde el portal"
|
||||||
"Enviar correo de confirmación al cliente una vez se tramite el RMA desde el "
|
|
||||||
"portal"
|
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: code:addons/rma/wizard/rma_split.py:0
|
#: code:addons/rma/wizard/rma_split.py:0
|
||||||
@@ -914,14 +905,26 @@ msgstr "Agrupar por"
|
|||||||
msgid "ID"
|
msgid "ID"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: rma
|
||||||
|
#: model:ir.model.fields,field_description:rma.field_res_company__rma_return_grouping
|
||||||
|
#: model:ir.model.fields,field_description:rma.field_res_config_settings__rma_return_grouping
|
||||||
|
#: model:ir.model.fields,field_description:rma.field_rma_delivery_wizard__rma_return_grouping
|
||||||
|
msgid "Group RMA returns by customer address and warehouse"
|
||||||
|
msgstr "Agrupar las devoluciones de RMA a cliente por dirección de envío y almacén"
|
||||||
|
|
||||||
|
#. module: rma
|
||||||
|
#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form
|
||||||
|
msgid "Group RMA returns by customer and warehouse."
|
||||||
|
msgstr "Agrupar las devoluciones de RMA a cliente por dirección de envío y almacén"
|
||||||
|
|
||||||
#. 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 ""
|
msgid ""
|
||||||
"ID of the parent record holding the alias (example: project holding the task "
|
"ID of the parent record holding the alias (example: project holding the task creation "
|
||||||
"creation alias)"
|
"alias)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"ID del registro padre que tiene el seudónimo. (ejemplo: el proyecto que "
|
"ID del registro padre que tiene el seudónimo. (ejemplo: el proyecto que contiene el "
|
||||||
"contiene el seudónimo para la creación de tareas)"
|
"seudónimo para la creación de tareas)"
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model:ir.model.fields,field_description:rma.field_rma__activity_exception_icon
|
#: model:ir.model.fields,field_description:rma.field_rma__activity_exception_icon
|
||||||
@@ -959,11 +962,10 @@ 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 ""
|
msgid ""
|
||||||
"If the active field is set to false, it will allow you to hide the RMA Team "
|
"If the active field is set to false, it will allow you to hide the RMA Team without "
|
||||||
"without removing it."
|
"removing it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Si el campo activo se establece a Falso, permitirá ocultar El equipo de RMA "
|
"Si el campo activo se establece a Falso, permitirá ocultar El equipo de RMA sin eliminarlo."
|
||||||
"sin eliminarlo."
|
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: code:addons/rma/models/rma.py:0
|
#: code:addons/rma/models/rma.py:0
|
||||||
@@ -1078,19 +1080,17 @@ msgstr "Adjuntos principales"
|
|||||||
#. module: rma
|
#. module: rma
|
||||||
#: model_terms:ir.actions.act_window,help:rma.action_rma_finalization
|
#: model_terms:ir.actions.act_window,help:rma.action_rma_finalization
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manage RMA finalization reasons to better classify them for tracking and "
|
"Manage RMA finalization reasons to better classify them for tracking and analysis purposes."
|
||||||
"analysis purposes."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Adminitrar motivos de finalización de RMA para una mejor clasificación de "
|
"Adminitrar motivos de finalización de RMA para una mejor clasificación de estos para su "
|
||||||
"estos para su seguimiento análisis posterior."
|
"seguimiento análisis posterior."
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model_terms:ir.actions.act_window,help:rma.action_rma_tag
|
#: model_terms:ir.actions.act_window,help:rma.action_rma_tag
|
||||||
msgid ""
|
msgid "Manage RMA tags to better classify them for tracking and analysis purposes."
|
||||||
"Manage RMA tags to better classify them for tracking and analysis purposes."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Administrar etiquetas de RMA para clasificarlos de modo que mejore el "
|
"Administrar etiquetas de RMA para clasificarlos de modo que mejore el seguimiento y "
|
||||||
"seguimiento y análisis de los mismos."
|
"análisis de los mismos."
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model:ir.module.category,description:rma.rma_module_category
|
#: model:ir.module.category,description:rma.rma_module_category
|
||||||
@@ -1199,13 +1199,12 @@ msgstr "Número de mensajes no leidos"
|
|||||||
#. 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 ""
|
msgid ""
|
||||||
"Optional ID of a thread (record) to which all incoming messages will be "
|
"Optional ID of a thread (record) to which all incoming messages will be attached, even if "
|
||||||
"attached, even if they did not reply to it. If set, this will disable the "
|
"they did not reply to it. If set, this will disable the creation of new records completely."
|
||||||
"creation of new records completely."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Id. opcional de un hilo (registro) al que todos los mensajes entrantes serán "
|
"Id. opcional de un hilo (registro) al que todos los mensajes entrantes serán adjuntados, "
|
||||||
"adjuntados, incluso si no fueron respuestas del mismo. Si se establece, se "
|
"incluso si no fueron respuestas del mismo. Si se establece, se deshabilitará completamente "
|
||||||
"deshabilitará completamente la creación de nuevos registros."
|
"la creación de nuevos registros."
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model:ir.ui.menu,name:rma.rma_orders_menu
|
#: model:ir.ui.menu,name:rma.rma_orders_menu
|
||||||
@@ -1245,12 +1244,11 @@ msgstr "ID del hilo del registro padre"
|
|||||||
#. 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 ""
|
msgid ""
|
||||||
"Parent model holding the alias. The model holding the alias reference is not "
|
"Parent model holding the alias. The model holding the alias reference is not necessarily "
|
||||||
"necessarily the model given by alias_model_id (example: project "
|
"the model given by alias_model_id (example: project (parent_model) and task (model))"
|
||||||
"(parent_model) and task (model))"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Modelo padre que contiene el alias. El modelo que contiene la referencia "
|
"Modelo padre que contiene el alias. El modelo que contiene la referencia alias no es "
|
||||||
"alias no es necesariamente el modelo dado por alias_model_id"
|
"necesariamente el modelo dado por alias_model_id"
|
||||||
|
|
||||||
#. 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
|
||||||
@@ -1263,15 +1261,13 @@ msgid ""
|
|||||||
"Policy to post a message on the document using the mailgateway.\n"
|
"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 "
|
"- followers: only followers of the related document or members of following channels\n"
|
||||||
"channels\n"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Política para publicar un mensaje en el documento utilizando el servidor de "
|
"Política para publicar un mensaje en el documento utilizando el servidor de correo.\n"
|
||||||
"correo.\n"
|
|
||||||
"- todo el mundo: todos pueden publicar\n"
|
"- todo el mundo: todos pueden publicar\n"
|
||||||
"- socios: sólo socios autenticados\n"
|
"- socios: sólo socios autenticados\n"
|
||||||
"- seguidores: sólo seguidores del documento relacionado o miembros de los "
|
"- seguidores: sólo seguidores del documento relacionado o miembros de los siguientes "
|
||||||
"siguientes canales\n"
|
"canales\n"
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model:ir.model.fields,field_description:rma.field_rma__access_url
|
#: model:ir.model.fields,field_description:rma.field_rma__access_url
|
||||||
@@ -1330,12 +1326,8 @@ msgstr "Cantidad a extraer"
|
|||||||
#. module: rma
|
#. module: rma
|
||||||
#: code:addons/rma/models/rma.py:0
|
#: code:addons/rma/models/rma.py:0
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid "Quantity to extract cannot be greater than remaining delivery quantity (%s %s)"
|
||||||
"Quantity to extract cannot be greater than remaining delivery quantity (%s "
|
msgstr "La cantidad a extraer no puede ser mayor que la cantidad de entrega restante(%s %s)"
|
||||||
"%s)"
|
|
||||||
msgstr ""
|
|
||||||
"La cantidad a extraer no puede ser mayor que la cantidad de entrega "
|
|
||||||
"restante(%s %s)"
|
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model:ir.model.fields,help:rma.field_rma_split_wizard__product_uom_qty
|
#: model:ir.model.fields,help:rma.field_rma_split_wizard__product_uom_qty
|
||||||
@@ -1343,13 +1335,11 @@ msgid "Quantity to extract to a new RMA."
|
|||||||
msgstr "Cantidad a extraer en nuevo RMA."
|
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_move_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 model:ir.ui.menu,name:rma.rma_menu
|
||||||
#: model:ir.ui.menu,name:rma.rma_menu
|
|
||||||
#: model_terms:ir.ui.view,arch_db:rma.view_partner_form
|
#: model_terms:ir.ui.view,arch_db:rma.view_partner_form
|
||||||
#: model_terms:ir.ui.view,arch_db:rma.view_picking_form
|
#: model_terms:ir.ui.view,arch_db:rma.view_picking_form
|
||||||
msgid "RMA"
|
msgid "RMA"
|
||||||
@@ -1481,8 +1471,7 @@ msgid "RMA Tag"
|
|||||||
msgstr "Etiqueta RMA"
|
msgstr "Etiqueta RMA"
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model:ir.actions.act_window,name:rma.action_rma_tag
|
#: model:ir.actions.act_window,name:rma.action_rma_tag model:ir.model,name:rma.model_rma_tag
|
||||||
#: model:ir.model,name:rma.model_rma_tag
|
|
||||||
#: model:ir.ui.menu,name:rma.rma_configuration_rma_tag_menu
|
#: model:ir.ui.menu,name:rma.rma_configuration_rma_tag_menu
|
||||||
#: model_terms:ir.ui.view,arch_db:rma.rma_tag_view_search
|
#: model_terms:ir.ui.view,arch_db:rma.rma_tag_view_search
|
||||||
#: model_terms:ir.ui.view,arch_db:rma.view_rma_tag_list
|
#: model_terms:ir.ui.view,arch_db:rma.view_rma_tag_list
|
||||||
@@ -1532,8 +1521,7 @@ msgstr "RMAs que originaron esta orden"
|
|||||||
#. module: rma
|
#. module: rma
|
||||||
#: model:ir.model.fields,help:rma.field_stock_warehouse__rma
|
#: model:ir.model.fields,help:rma.field_stock_warehouse__rma
|
||||||
msgid "RMA related products can be stored in this warehouse."
|
msgid "RMA related products can be stored in this warehouse."
|
||||||
msgstr ""
|
msgstr "Productos relacionados con el RMA pueden ser guardados en este almacén."
|
||||||
"Productos relacionados con el RMA pueden ser guardados en este almacén."
|
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model:ir.model,name:rma.model_rma_operation
|
#: model:ir.model,name:rma.model_rma_operation
|
||||||
@@ -1664,27 +1652,25 @@ msgstr "Reemplazado"
|
|||||||
#: code:addons/rma/models/rma.py:0
|
#: 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\">%s</a> "
|
||||||
"\">%s</a> (Picking <a href=\"#\" data-oe-model=\"stock.picking\" data-oe-id="
|
"(Picking <a href=\"#\" data-oe-model=\"stock.picking\" data-oe-id=\"%d\">%s</a>) has been "
|
||||||
"\"%d\">%s</a>) has been created."
|
"created."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Reemplazo: El movimiento <a href=\"#\" data-oe-model=\"stock.move\" data-oe-"
|
"Reemplazo: El movimiento <a href=\"#\" data-oe-model=\"stock.move\" data-oe-id=\"%d\">%s</"
|
||||||
"id=\"%d\">%s</a> (Orden de entrega <a href=\"#\" data-oe-model=\"stock."
|
"a> (Orden de entrega <a href=\"#\" data-oe-model=\"stock.picking\" data-oe-id=\"%d\">%s</"
|
||||||
"picking\" data-oe-id=\"%d\">%s</a>) ha sido creado."
|
"a>) ha sido creado."
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: code:addons/rma/models/rma.py:0
|
#: 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\" data-oe-id=\"%d\">"
|
||||||
"data-oe-id=\"%d\">%s</a><br/>Quantity %f %s<br/>This replacement did not "
|
"%s</a><br/>Quantity %f %s<br/>This replacement did not create a new move, but one of the "
|
||||||
"create a new move, but one of the previously created moves was updated with "
|
"previously created moves was updated with this data."
|
||||||
"this data."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Reemplazo:<br/>Producto <a href=\"#\" data-oe-model=\"product.product\" data-"
|
"Reemplazo:<br/>Producto <a href=\"#\" data-oe-model=\"product.product\" data-oe-id=\"%d\">"
|
||||||
"oe-id=\"%d\">%s</a><br/>Cantidad %f %s<br/>El reemplazo realizado no creó un "
|
"%s</a><br/>Cantidad %f %s<br/>El reemplazo realizado no creó un movimiento nuevo, pero uno "
|
||||||
"movimiento nuevo, pero uno de los movimientos creados anteriormente fué "
|
"de los movimientos creados anteriormente fué actualizado con estos datos."
|
||||||
"actualizado con estos datos."
|
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model:ir.ui.menu,name:rma.rma_reporting_menu
|
#: model:ir.ui.menu,name:rma.rma_reporting_menu
|
||||||
@@ -1729,11 +1715,11 @@ msgstr "Devolver al cliente"
|
|||||||
#: code:addons/rma/models/rma.py:0
|
#: 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</a> has been "
|
||||||
"a> has been created."
|
"created."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Devolución: La orden de entrega <a href=\"#\" data-oe-model=\"stock.picking"
|
"Devolución: La orden de entrega <a href=\"#\" data-oe-model=\"stock.picking\" data-oe-id="
|
||||||
"\" data-oe-id=\"%d\">%s</a> ha sido creada."
|
"\"%d\">%s</a> ha sido creada."
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model:ir.model.fields.selection,name:rma.selection__rma__state__returned
|
#: model:ir.model.fields.selection,name:rma.selection__rma__state__returned
|
||||||
@@ -1870,12 +1856,10 @@ msgstr "Dividir RMA"
|
|||||||
#. module: rma
|
#. module: rma
|
||||||
#: code:addons/rma/models/rma.py:0
|
#: 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 created."
|
||||||
"Split: <a href=\"#\" data-oe-model=\"rma\" data-oe-id=\"%d\">%s</a> has been "
|
|
||||||
"created."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"División: El RMA <a href=\"#\" data-oe-model=\"rma\" data-oe-id=\"%d\">%s</"
|
"División: El RMA <a href=\"#\" data-oe-model=\"rma\" data-oe-id=\"%d\">%s</a> ha sido "
|
||||||
"a> ha sido creado."
|
"creado."
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model:ir.model.fields,field_description:rma.field_rma__state
|
#: model:ir.model.fields,field_description:rma.field_rma__state
|
||||||
@@ -1884,8 +1868,7 @@ msgid "State"
|
|||||||
msgstr "Estado"
|
msgstr "Estado"
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: code:addons/rma/controllers/main.py:0
|
#: 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"
|
||||||
msgstr "Estado"
|
msgstr "Estado"
|
||||||
@@ -1957,46 +1940,44 @@ 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 ""
|
msgid ""
|
||||||
"The model (Odoo Document Kind) to which this alias corresponds. Any incoming "
|
"The model (Odoo Document Kind) to which this alias corresponds. Any incoming email that "
|
||||||
"email that does not reply to an existing record will cause the creation of a "
|
"does not reply to an existing record will cause the creation of a new record of this model "
|
||||||
"new record of this model (e.g. a Project Task)"
|
"(e.g. a Project Task)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"El modelo (Tipo de documento de Odoo) al que corresponde este seudónimo. "
|
"El modelo (Tipo de documento de Odoo) al que corresponde este seudónimo. Cualquier correo "
|
||||||
"Cualquier correo entrante que no sea respuesta a un registro existente, "
|
"entrante que no sea respuesta a un registro existente, causará la creación de un nuevo "
|
||||||
"causará la creación de un nuevo registro de este modelo"
|
"registro de este modelo"
|
||||||
|
|
||||||
#. 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 ""
|
msgid ""
|
||||||
"The name of the email alias, e.g. 'jobs' if you want to catch emails for "
|
"The name of the email alias, e.g. 'jobs' if you want to catch emails for <jobs@example."
|
||||||
"<jobs@example.odoo.com>"
|
"odoo.com>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"El nombre de este seudónimo de correo electrónico. Por ejemplo, \"trabajos"
|
"El nombre de este seudónimo de correo electrónico. Por ejemplo, \"trabajos\", si lo que "
|
||||||
"\", si lo que quiere es obtener los correos para <trabajos@example.odoo.com>"
|
"quiere es obtener los correos para <trabajos@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 ""
|
msgid ""
|
||||||
"The owner of records created upon receiving emails on this alias. If this "
|
"The owner of records created upon receiving emails on this alias. If this field is not set "
|
||||||
"field is not set the system will attempt to find the right owner based on "
|
"the system will attempt to find the right owner based on the sender (From) address, or "
|
||||||
"the sender (From) address, or will use the Administrator account if no "
|
"will use the Administrator account if no system user is found for that address."
|
||||||
"system user is found for that address."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"El propietario de los registros creados al recibir correos electrónicos en "
|
"El propietario de los registros creados al recibir correos electrónicos en este seudónimo. "
|
||||||
"este seudónimo. Si el campo no está establecido, el sistema tratará de "
|
"Si el campo no está establecido, el sistema tratará de encontrar el propietario adecuado "
|
||||||
"encontrar el propietario adecuado basado en la dirección del emisor (De), o "
|
"basado en la dirección del emisor (De), o usará la cuenta de administrador si no se "
|
||||||
"usará la cuenta de administrador si no se encuentra un usuario para esa "
|
"encuentra un usuario para esa dirección."
|
||||||
"dirección."
|
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: code:addons/rma/models/stock_move.py:0
|
#: 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 because the "
|
||||||
"because the stock move is linked to an RMA (%s)."
|
"stock move is linked to an RMA (%s)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"La cantidad realizada para el producto '%s' debe ser igual a la demanda "
|
"La cantidad realizada para el producto '%s' debe ser igual a la demanda inicial porque el "
|
||||||
"inicial porque el movimiento está enlazado a un RMA (%s)."
|
"movimiento está enlazado a un RMA (%s)."
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: code:addons/rma/models/rma.py:0
|
#: code:addons/rma/models/rma.py:0
|
||||||
@@ -2013,11 +1994,11 @@ msgstr "La etiqueta es visible en la vista de portal"
|
|||||||
#: code:addons/rma/models/account_move.py:0
|
#: 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 specified in "
|
||||||
"specified in its linked RMA."
|
"its linked RMA."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Hay al menos una linea de factura que tiene una cantidad menor que la "
|
"Hay al menos una linea de factura que tiene una cantidad menor que la cantidad "
|
||||||
"cantidad especificada en el RMA asociado."
|
"especificada en el RMA asociado."
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: code:addons/rma/models/rma.py:0
|
#: code:addons/rma/models/rma.py:0
|
||||||
@@ -2159,8 +2140,8 @@ msgstr ""
|
|||||||
#. module: rma
|
#. module: rma
|
||||||
#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form
|
#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form
|
||||||
msgid ""
|
msgid ""
|
||||||
"When customers themselves place an RMA from the portal, send an automatic "
|
"When customers themselves place an RMA from the portal, send an automatic notification "
|
||||||
"notification acknowleging it."
|
"acknowleging it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
@@ -2177,22 +2158,19 @@ msgstr ""
|
|||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form
|
#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form
|
||||||
msgid ""
|
msgid "When the RMA products are received, send an automatic information email."
|
||||||
"When the RMA products are received, send an automatic information email."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model:ir.model.fields,help:rma.field_res_company__send_rma_receipt_confirmation
|
#: model:ir.model.fields,help:rma.field_res_company__send_rma_receipt_confirmation
|
||||||
#: model:ir.model.fields,help:rma.field_res_config_settings__send_rma_receipt_confirmation
|
#: model:ir.model.fields,help:rma.field_res_config_settings__send_rma_receipt_confirmation
|
||||||
msgid ""
|
msgid "When the RMA receipt is confirmed, send a confirmation email to the customer."
|
||||||
"When the RMA receipt is confirmed, send a confirmation email to the customer."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model:ir.model.fields,help:rma.field_res_company__send_rma_confirmation
|
#: model:ir.model.fields,help:rma.field_res_company__send_rma_confirmation
|
||||||
#: model:ir.model.fields,help:rma.field_res_config_settings__send_rma_confirmation
|
#: model:ir.model.fields,help:rma.field_res_config_settings__send_rma_confirmation
|
||||||
msgid ""
|
msgid "When the delivery is confirmed, send a confirmation email to the customer."
|
||||||
"When the delivery is confirmed, send a confirmation email to the customer."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
@@ -2205,18 +2183,14 @@ msgstr "No puede eliminar RMAs que no estén en estado borrador"
|
|||||||
#: code:addons/rma/wizard/stock_picking_return.py:0
|
#: 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 be created"
|
||||||
"be created"
|
|
||||||
msgstr ""
|
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
|
#. module: rma
|
||||||
#: model:res.groups,comment:rma.rma_group_user_all
|
#: model:res.groups,comment:rma.rma_group_user_all
|
||||||
msgid ""
|
msgid "the user will have access to all records of everyone in the RMA application."
|
||||||
"the user will have access to all records of everyone in the RMA application."
|
msgstr "El usuario tendrá acceso a todos los registros de RMA de todos lo usuarios."
|
||||||
msgstr ""
|
|
||||||
"El usuario tendrá acceso a todos los registros de RMA de todos lo usuarios."
|
|
||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model:res.groups,comment:rma.rma_group_user_own
|
#: model:res.groups,comment:rma.rma_group_user_own
|
||||||
@@ -2225,9 +2199,5 @@ msgstr "el usuario tendrá acceso solo a sus propios RMAs."
|
|||||||
|
|
||||||
#. module: rma
|
#. module: rma
|
||||||
#: model:res.groups,comment:rma.rma_group_manager
|
#: model:res.groups,comment:rma.rma_group_manager
|
||||||
msgid ""
|
msgid "the user will have an access to the RMA configuration as well as statistic reports."
|
||||||
"the user will have an access to the RMA configuration as well as statistic "
|
msgstr "El usuario tendrá acceso a la configuración de RMA y a los informes estadísticos."
|
||||||
"reports."
|
|
||||||
msgstr ""
|
|
||||||
"El usuario tendrá acceso a la configuración de RMA y a los informes "
|
|
||||||
"estadísticos."
|
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo Server 14.0\n"
|
"Project-Id-Version: Odoo Server 14.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2022-03-07 16:33+0000\n"
|
||||||
|
"PO-Revision-Date: 2022-03-07 16:33+0000\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
|
|||||||
@@ -25,6 +25,10 @@ class Company(models.Model):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
rma_return_grouping = fields.Boolean(
|
||||||
|
string="Group RMA returns by customer address and warehouse",
|
||||||
|
default=True,
|
||||||
|
)
|
||||||
send_rma_confirmation = fields.Boolean(
|
send_rma_confirmation = fields.Boolean(
|
||||||
string="Send RMA Confirmation",
|
string="Send RMA Confirmation",
|
||||||
help="When the delivery is confirmed, send a confirmation email "
|
help="When the delivery is confirmed, send a confirmation email "
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ class ResConfigSettings(models.TransientModel):
|
|||||||
help="Allow to finish an RMA without returning back a product or refunding",
|
help="Allow to finish an RMA without returning back a product or refunding",
|
||||||
implied_group="rma.group_rma_manual_finalization",
|
implied_group="rma.group_rma_manual_finalization",
|
||||||
)
|
)
|
||||||
|
rma_return_grouping = fields.Boolean(
|
||||||
|
related="company_id.rma_return_grouping",
|
||||||
|
readonly=False,
|
||||||
|
)
|
||||||
send_rma_confirmation = fields.Boolean(
|
send_rma_confirmation = fields.Boolean(
|
||||||
related="company_id.send_rma_confirmation",
|
related="company_id.send_rma_confirmation",
|
||||||
readonly=False,
|
readonly=False,
|
||||||
|
|||||||
@@ -649,7 +649,9 @@ 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.move"].with_context(
|
self.env["account.move"]
|
||||||
|
.sudo()
|
||||||
|
.with_context(
|
||||||
default_move_type="out_refund",
|
default_move_type="out_refund",
|
||||||
company_id=rmas[0].company_id.id,
|
company_id=rmas[0].company_id.id,
|
||||||
),
|
),
|
||||||
@@ -676,7 +678,7 @@ class Rma(models.Model):
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
refund.invoice_origin = origin
|
refund.invoice_origin = origin
|
||||||
refund.message_post_with_view(
|
refund.with_user(self.env.uid).message_post_with_view(
|
||||||
"mail.message_origin_link",
|
"mail.message_origin_link",
|
||||||
values={"self": refund, "origin": rmas},
|
values={"self": refund, "origin": rmas},
|
||||||
subtype_id=self.env.ref("mail.mt_note").id,
|
subtype_id=self.env.ref("mail.mt_note").id,
|
||||||
@@ -1046,6 +1048,8 @@ class Rma(models.Model):
|
|||||||
"""
|
"""
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
invoice_form.partner_id = self.partner_invoice_id
|
invoice_form.partner_id = self.partner_invoice_id
|
||||||
|
# Avoid set partner default value
|
||||||
|
invoice_form.invoice_payment_term_id = self.env["account.payment.term"]
|
||||||
|
|
||||||
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.
|
||||||
@@ -1086,6 +1090,9 @@ class Rma(models.Model):
|
|||||||
# Returning business methods
|
# Returning business methods
|
||||||
def create_return(self, scheduled_date, qty=None, uom=None):
|
def create_return(self, scheduled_date, qty=None, uom=None):
|
||||||
"""Intended to be invoked by the delivery wizard"""
|
"""Intended to be invoked by the delivery wizard"""
|
||||||
|
group_returns = self.env.company.rma_return_grouping
|
||||||
|
if "rma_return_grouping" in self.env.context:
|
||||||
|
group_returns = self.env.context.get("rma_return_grouping")
|
||||||
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 = {}
|
||||||
@@ -1098,7 +1105,11 @@ class Rma(models.Model):
|
|||||||
)
|
)
|
||||||
group_dict.setdefault(key, self.env["rma"])
|
group_dict.setdefault(key, self.env["rma"])
|
||||||
group_dict[key] |= record
|
group_dict[key] |= record
|
||||||
for rmas in group_dict.values():
|
if group_returns:
|
||||||
|
grouped_rmas = group_dict.values()
|
||||||
|
else:
|
||||||
|
grouped_rmas = rmas_to_return
|
||||||
|
for rmas in grouped_rmas:
|
||||||
origin = ", ".join(rmas.mapped("name"))
|
origin = ", ".join(rmas.mapped("name"))
|
||||||
rma_out_type = rmas[0].warehouse_id.rma_out_type_id
|
rma_out_type = rmas[0].warehouse_id.rma_out_type_id
|
||||||
picking_form = Form(
|
picking_form = Form(
|
||||||
|
|||||||
@@ -11,3 +11,11 @@ If you want to manually finish RMAs, you need to:
|
|||||||
|
|
||||||
#. Go to *Settings > Inventory*.
|
#. Go to *Settings > Inventory*.
|
||||||
#. Set *Finish RMAs manually* checkbox on.
|
#. Set *Finish RMAs manually* checkbox on.
|
||||||
|
|
||||||
|
By default, returns to customer are grouped by shipping address, warehouse and company.
|
||||||
|
If you want to avoid this grouping you can:
|
||||||
|
|
||||||
|
#. Go to *Settings > Inventory*.
|
||||||
|
#. Set *Group RMA returns by customer address and warehouse* checkbox off.
|
||||||
|
|
||||||
|
The users will still be able to group those pickings from the wizard.
|
||||||
|
|||||||
@@ -14,3 +14,5 @@ access_rma_finalization_portal,rma.finalization.portal,model_rma_finalization,ba
|
|||||||
access_rma_finalization_user_own,rma.finalization.user.own,model_rma_finalization,rma_group_user_own,1,0,0,0
|
access_rma_finalization_user_own,rma.finalization.user.own,model_rma_finalization,rma_group_user_own,1,0,0,0
|
||||||
access_rma_finalization_manager,rma.finalization.manager,model_rma_finalization,rma_group_manager,1,1,1,1
|
access_rma_finalization_manager,rma.finalization.manager,model_rma_finalization,rma_group_manager,1,1,1,1
|
||||||
access_rma_finalization_wizard_user_own,rma.finalization.wizard.user.own,model_rma_finalization_wizard,group_rma_manual_finalization,1,1,1,1
|
access_rma_finalization_wizard_user_own,rma.finalization.wizard.user.own,model_rma_finalization_wizard,group_rma_manual_finalization,1,1,1,1
|
||||||
|
access_account_move_rma_user,account_move rma_user,account.model_account_move,rma.rma_group_user_own,1,0,0,0
|
||||||
|
access_account_move_line_rma_user,account_move_line rma_user,account.model_account_move_line,rma.rma_group_user_own,1,0,0,0
|
||||||
|
|||||||
|
@@ -91,6 +91,23 @@
|
|||||||
name="domain_force"
|
name="domain_force"
|
||||||
> ['|', ('company_id', 'in', company_ids), ('company_id', '=', False)]</field>
|
> ['|', ('company_id', 'in', company_ids), ('company_id', '=', False)]</field>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- Allow to refund RMAs -->
|
||||||
|
<record id="rma_account_move_personal_rule" model="ir.rule">
|
||||||
|
<field name="name">RMA Personal Invoice</field>
|
||||||
|
<field ref="model_account_move" name="model_id" />
|
||||||
|
<field
|
||||||
|
name="domain_force"
|
||||||
|
>[('move_type', '=', 'out_refund'), '|', ('invoice_user_id', '=', user.id), ('invoice_user_id', '=', False)]</field>
|
||||||
|
<field name="groups" eval="[(4, ref('rma.rma_group_user_own'))]" />
|
||||||
|
</record>
|
||||||
|
<record id="rma_account_move_line_personal_rule" model="ir.rule">
|
||||||
|
<field name="name">RMA Personal Invoice Lines</field>
|
||||||
|
<field ref="model_account_move_line" name="model_id" />
|
||||||
|
<field
|
||||||
|
name="domain_force"
|
||||||
|
>[('move_id.move_type', '=', 'out_refund'), '|', ('move_id.invoice_user_id', '=', user.id), ('move_id.invoice_user_id', '=', False)]</field>
|
||||||
|
<field name="groups" eval="[(4, ref('rma.rma_group_user_own'))]" />
|
||||||
|
</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">
|
||||||
<field name="groups_id" eval="[(4, ref('rma_group_user_own'))]" />
|
<field name="groups_id" eval="[(4, ref('rma_group_user_own'))]" />
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<meta name="generator" content="Docutils 0.15.1: http://docutils.sourceforge.net/" />
|
<meta name="generator" content="Docutils: http://docutils.sourceforge.net/" />
|
||||||
<title>Return Merchandise Authorization Management</title>
|
<title>Return Merchandise Authorization Management</title>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
|
|
||||||
@@ -406,6 +406,13 @@ one.</li>
|
|||||||
<li>Go to <em>Settings > Inventory</em>.</li>
|
<li>Go to <em>Settings > Inventory</em>.</li>
|
||||||
<li>Set <em>Finish RMAs manually</em> checkbox on.</li>
|
<li>Set <em>Finish RMAs manually</em> checkbox on.</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
<p>By default, returns to customer are grouped by shipping address, warehouse and company.
|
||||||
|
If you want to avoid this grouping you can:</p>
|
||||||
|
<ol class="arabic simple">
|
||||||
|
<li>Go to <em>Settings > Inventory</em>.</li>
|
||||||
|
<li>Set <em>Group RMA returns by customer address and warehouse</em> checkbox off.</li>
|
||||||
|
</ol>
|
||||||
|
<p>The users will still be able to group those pickings from the wizard.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="usage">
|
<div class="section" id="usage">
|
||||||
<h1><a class="toc-backref" href="#id2">Usage</a></h1>
|
<h1><a class="toc-backref" href="#id2">Usage</a></h1>
|
||||||
|
|||||||
@@ -2,13 +2,18 @@
|
|||||||
# 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, new_test_user, users
|
||||||
|
|
||||||
|
|
||||||
class TestRma(SavepointCase):
|
class TestRma(SavepointCase):
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
super(TestRma, cls).setUpClass()
|
super(TestRma, cls).setUpClass()
|
||||||
|
cls.user_rma = new_test_user(
|
||||||
|
cls.env,
|
||||||
|
login="user_rma",
|
||||||
|
groups="rma.rma_group_user_own,stock.group_stock_user",
|
||||||
|
)
|
||||||
cls.res_partner = cls.env["res.partner"]
|
cls.res_partner = cls.env["res.partner"]
|
||||||
cls.product_product = cls.env["product.product"]
|
cls.product_product = cls.env["product.product"]
|
||||||
cls.company = cls.env.user.company_id
|
cls.company = cls.env.user.company_id
|
||||||
@@ -34,6 +39,9 @@ class TestRma(SavepointCase):
|
|||||||
{
|
{
|
||||||
"name": "Partner test",
|
"name": "Partner test",
|
||||||
"property_account_receivable_id": cls.account_receiv.id,
|
"property_account_receivable_id": cls.account_receiv.id,
|
||||||
|
"property_payment_term_id": cls.env.ref(
|
||||||
|
"account.account_payment_term_30days"
|
||||||
|
).id,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
cls.partner_invoice = cls.res_partner.create(
|
cls.partner_invoice = cls.res_partner.create(
|
||||||
@@ -57,6 +65,8 @@ class TestRma(SavepointCase):
|
|||||||
{"name": "[Test] It's out of warranty. To be scrapped"}
|
{"name": "[Test] It's out of warranty. To be scrapped"}
|
||||||
)
|
)
|
||||||
cls.env.ref("rma.group_rma_manual_finalization").users |= cls.env.user
|
cls.env.ref("rma.group_rma_manual_finalization").users |= cls.env.user
|
||||||
|
# Ensure grouping
|
||||||
|
cls.env.company.rma_return_grouping = True
|
||||||
|
|
||||||
def _create_rma(self, partner=None, product=None, qty=None, location=None):
|
def _create_rma(self, partner=None, product=None, qty=None, location=None):
|
||||||
rma_form = Form(self.env["rma"])
|
rma_form = Form(self.env["rma"])
|
||||||
@@ -256,6 +266,7 @@ class TestRmaCase(TestRma):
|
|||||||
self.assertEqual(rma_1.state, "draft")
|
self.assertEqual(rma_1.state, "draft")
|
||||||
self.assertEqual(rma_2.state, "received")
|
self.assertEqual(rma_2.state, "received")
|
||||||
|
|
||||||
|
@users("__system__", "user_rma")
|
||||||
def test_action_refund(self):
|
def test_action_refund(self):
|
||||||
rma = self._create_confirm_receive(self.partner, self.product, 10, self.rma_loc)
|
rma = self._create_confirm_receive(self.partner, self.product, 10, self.rma_loc)
|
||||||
self.assertEqual(rma.state, "received")
|
self.assertEqual(rma.state, "received")
|
||||||
@@ -265,6 +276,7 @@ class TestRmaCase(TestRma):
|
|||||||
rma.action_refund()
|
rma.action_refund()
|
||||||
self.assertEqual(rma.refund_id.move_type, "out_refund")
|
self.assertEqual(rma.refund_id.move_type, "out_refund")
|
||||||
self.assertEqual(rma.refund_id.state, "draft")
|
self.assertEqual(rma.refund_id.state, "draft")
|
||||||
|
self.assertFalse(rma.refund_id.invoice_payment_term_id)
|
||||||
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.product_uom_id, rma.product_uom)
|
self.assertEqual(rma.refund_line_id.product_uom_id, rma.product_uom)
|
||||||
@@ -272,6 +284,10 @@ class TestRmaCase(TestRma):
|
|||||||
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)
|
||||||
|
# A regular user can create the refund but only Invoicing users will be able
|
||||||
|
# to edit it and post it
|
||||||
|
if self.env.user.login != "__system__":
|
||||||
|
return
|
||||||
with Form(rma.refund_line_id.move_id) as refund_form:
|
with Form(rma.refund_line_id.move_id) as refund_form:
|
||||||
with refund_form.invoice_line_ids.edit(0) as refund_line:
|
with refund_form.invoice_line_ids.edit(0) as refund_line:
|
||||||
refund_line.quantity = 9
|
refund_line.quantity = 9
|
||||||
@@ -593,6 +609,39 @@ class TestRmaCase(TestRma):
|
|||||||
pick_2.button_validate()
|
pick_2.button_validate()
|
||||||
self.assertEqual(all_rmas.mapped("state"), ["returned"] * 4)
|
self.assertEqual(all_rmas.mapped("state"), ["returned"] * 4)
|
||||||
|
|
||||||
|
def test_mass_return_to_customer_ungrouped(self):
|
||||||
|
"""We can choose to avoid the customer returns grouping"""
|
||||||
|
self.env.company.rma_return_grouping = False
|
||||||
|
# Create, confirm and receive rma_1
|
||||||
|
rma_1 = self._create_confirm_receive(
|
||||||
|
self.partner, self.product, 10, self.rma_loc
|
||||||
|
)
|
||||||
|
# create, confirm and receive 3 more RMAs
|
||||||
|
# rma_2: Same partner and same product as rma_1
|
||||||
|
rma_2 = self._create_confirm_receive(
|
||||||
|
self.partner, self.product, 15, self.rma_loc
|
||||||
|
)
|
||||||
|
# rma_3: Same partner and different product than rma_1
|
||||||
|
product = self.product_product.create(
|
||||||
|
{"name": "Product 2 test", "type": "product"}
|
||||||
|
)
|
||||||
|
rma_3 = self._create_confirm_receive(self.partner, product, 20, self.rma_loc)
|
||||||
|
# rma_4: Different partner and same product as rma_1
|
||||||
|
partner = self.res_partner.create({"name": "Partner 2 test"})
|
||||||
|
rma_4 = self._create_confirm_receive(partner, product, 25, self.rma_loc)
|
||||||
|
# all rmas are ready to be returned to the customer
|
||||||
|
all_rmas = rma_1 | rma_2 | rma_3 | rma_4
|
||||||
|
self.assertEqual(all_rmas.mapped("state"), ["received"] * 4)
|
||||||
|
self.assertEqual(all_rmas.mapped("can_be_returned"), [True] * 4)
|
||||||
|
# Mass return of those four RMAs
|
||||||
|
delivery_wizard = (
|
||||||
|
self.env["rma.delivery.wizard"]
|
||||||
|
.with_context(active_ids=all_rmas.ids, rma_delivery_type="return")
|
||||||
|
.create({})
|
||||||
|
)
|
||||||
|
delivery_wizard.action_deliver()
|
||||||
|
self.assertEqual(4, len(all_rmas.delivery_move_ids.picking_id))
|
||||||
|
|
||||||
def test_rma_from_picking_return(self):
|
def test_rma_from_picking_return(self):
|
||||||
# Create a return from a delivery picking
|
# Create a return from a delivery picking
|
||||||
origin_delivery = self._create_delivery()
|
origin_delivery = self._create_delivery()
|
||||||
|
|||||||
@@ -23,6 +23,22 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-12 col-lg-6 o_setting_box">
|
||||||
|
<div class="o_setting_left_pane">
|
||||||
|
<field name="rma_return_grouping" />
|
||||||
|
</div>
|
||||||
|
<div class="o_setting_right_pane">
|
||||||
|
<label for="rma_return_grouping" />
|
||||||
|
<span
|
||||||
|
class="fa fa-lg fa-building-o"
|
||||||
|
title="Values set here are company-specific."
|
||||||
|
groups="base.group_multi_company"
|
||||||
|
/>
|
||||||
|
<div class="text-muted">
|
||||||
|
Group RMA returns by customer and warehouse.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div
|
<div
|
||||||
class="col-12 col-lg-6 o_setting_box"
|
class="col-12 col-lg-6 o_setting_box"
|
||||||
title="Send automatic RMA info to customer"
|
title="Send automatic RMA info to customer"
|
||||||
|
|||||||
@@ -31,6 +31,10 @@ class RmaReDeliveryWizard(models.TransientModel):
|
|||||||
required=True,
|
required=True,
|
||||||
)
|
)
|
||||||
uom_category_id = fields.Many2one(related="product_id.uom_id.category_id")
|
uom_category_id = fields.Many2one(related="product_id.uom_id.category_id")
|
||||||
|
rma_return_grouping = fields.Boolean(
|
||||||
|
string="Group RMA returns by customer address and warehouse",
|
||||||
|
default=lambda self: self.env.company.rma_return_grouping,
|
||||||
|
)
|
||||||
|
|
||||||
@api.constrains("product_uom_qty")
|
@api.constrains("product_uom_qty")
|
||||||
def _check_product_uom_qty(self):
|
def _check_product_uom_qty(self):
|
||||||
@@ -87,4 +91,6 @@ class RmaReDeliveryWizard(models.TransientModel):
|
|||||||
qty = uom = None
|
qty = uom = None
|
||||||
if self.rma_count == 1:
|
if self.rma_count == 1:
|
||||||
qty, uom = self.product_uom_qty, self.product_uom
|
qty, uom = self.product_uom_qty, self.product_uom
|
||||||
rma.create_return(self.scheduled_date, qty, uom)
|
rma.with_context(
|
||||||
|
rma_return_grouping=self.rma_return_grouping
|
||||||
|
).create_return(self.scheduled_date, qty, uom)
|
||||||
|
|||||||
@@ -14,6 +14,10 @@
|
|||||||
name="warehouse_id"
|
name="warehouse_id"
|
||||||
attrs="{'invisible': [('type', '!=', 'replace')]}"
|
attrs="{'invisible': [('type', '!=', 'replace')]}"
|
||||||
/>
|
/>
|
||||||
|
<field
|
||||||
|
name="rma_return_grouping"
|
||||||
|
attrs="{'invisible': ['|', ('type', '=', 'replace'), ('rma_count', '=', 1)]}"
|
||||||
|
/>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<field name="uom_category_id" invisible="1" />
|
<field name="uom_category_id" invisible="1" />
|
||||||
|
|||||||
@@ -67,9 +67,13 @@ class CustomerPortal(CustomerPortal):
|
|||||||
rma = wizard.sudo().create_rma(from_portal=True)
|
rma = wizard.sudo().create_rma(from_portal=True)
|
||||||
for rec in rma:
|
for rec in rma:
|
||||||
rec.origin += _(" (Portal)")
|
rec.origin += _(" (Portal)")
|
||||||
# Add the user as follower of the created RMAs so they can
|
# Add the user as follower of the created RMAs so they can later view them.
|
||||||
# later view them.
|
|
||||||
rma.message_subscribe([request.env.user.partner_id.id])
|
rma.message_subscribe([request.env.user.partner_id.id])
|
||||||
|
# Subscribe the user to the notification subtype so he receives the confirmation
|
||||||
|
# note.
|
||||||
|
rma.message_follower_ids.filtered(
|
||||||
|
lambda x: x.partner_id == request.env.user.partner_id
|
||||||
|
).subtype_ids += request.env.ref("rma.mt_rma_notification")
|
||||||
if len(rma) == 0:
|
if len(rma) == 0:
|
||||||
route = order_sudo.get_portal_url()
|
route = order_sudo.get_portal_url()
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -4,42 +4,121 @@
|
|||||||
odoo.define("rma_sale.animation", function (require) {
|
odoo.define("rma_sale.animation", function (require) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var sAnimation = require("website.content.snippets.animation");
|
const publicWidget = require("web.public.widget");
|
||||||
|
|
||||||
// In the customer portal when a RMA operation is selected show the comments
|
/**
|
||||||
// selector so the user doesn't miss the chance to add his comments
|
* Adds some machinery to the customer portal RMA form:
|
||||||
sAnimation.registry.rma_operation_portal = sAnimation.Class.extend({
|
*
|
||||||
selector: ".rma-operation",
|
* - Avoid submitting the form if no qty or operation is reported.
|
||||||
start: function () {
|
* - Show automatically the observations field when the operation is selected
|
||||||
this.id = this.el.name.replace("-operation_id", "");
|
* and hide it back with no operation selected.
|
||||||
this.$comment = $("#comment-" + this.id);
|
*/
|
||||||
this.$comment_input = $("[name='" + this.id + "-description']");
|
publicWidget.registry.PortalRmaSale = publicWidget.Widget.extend({
|
||||||
var _this = this;
|
selector: "#form-request-rma",
|
||||||
this.$el.on("change", function () {
|
events: {
|
||||||
_this._onChangeOperationId();
|
"change .rma-operation": "_onChangeOperationId",
|
||||||
});
|
"change #delivery-rma-qty input": "_onChangeQty",
|
||||||
},
|
},
|
||||||
_show_comment: function () {
|
|
||||||
if (this.$comment) {
|
/**
|
||||||
this.$comment.removeClass("show");
|
* @override
|
||||||
this.$comment.addClass("show");
|
*/
|
||||||
if (this.$comment_input) {
|
start: function () {
|
||||||
this.$comment_input.focus();
|
const ids = this.$("[name*='-operation_id']")
|
||||||
|
.map(function () {
|
||||||
|
return this.name.replace("-operation_id", "");
|
||||||
|
})
|
||||||
|
.get();
|
||||||
|
this.$submit = $("#form-request-rma button[type='submit']");
|
||||||
|
this.rows_ids = ids;
|
||||||
|
// We'll build an object that will ease the form check. It could be further
|
||||||
|
// extended with additional checks.
|
||||||
|
this.rows = {};
|
||||||
|
_.each(ids, (id) => {
|
||||||
|
this.rows[id] = {
|
||||||
|
$comment: this.$(`#comment-${id}`),
|
||||||
|
$comment_input: this.$(`[name='${id}-description']`),
|
||||||
|
$operation: this.$(`[name='${id}-operation_id']`),
|
||||||
|
$qty: this.$(`[name='${id}-quantity']`),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
this._checkCanSubmit();
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
* @param {Object} row: the form row structure
|
||||||
|
*/
|
||||||
|
_show_comment: function (row) {
|
||||||
|
if (row.$comment) {
|
||||||
|
row.$comment.addClass("show");
|
||||||
|
if (row.$comment_input) {
|
||||||
|
row.$comment_input.focus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
_hide_comment: function () {
|
/**
|
||||||
if (this.$comment) {
|
* @private
|
||||||
this.$comment.removeClass("show");
|
* @param {Object} row: the form row structure
|
||||||
|
*/
|
||||||
|
_hide_comment: function (row) {
|
||||||
|
if (row.$comment) {
|
||||||
|
row.$comment.removeClass("show");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
_onChangeOperationId: function () {
|
/**
|
||||||
// Toggle comment on or off if an operation is requested
|
* We should be able to submit only when an operation is selected and a
|
||||||
if (this.$el && this.$el.val()) {
|
* quantity entered in a row at least.
|
||||||
this._show_comment();
|
* @private
|
||||||
} else {
|
*/
|
||||||
this._hide_comment();
|
_canSubmit: function () {
|
||||||
|
var can_submit = false;
|
||||||
|
for (const id of this.rows_ids) {
|
||||||
|
const row = this.rows[id];
|
||||||
|
if (
|
||||||
|
row &&
|
||||||
|
// Qty greater than 0
|
||||||
|
row.$qty &&
|
||||||
|
row.$qty.val() &&
|
||||||
|
Number(row.$qty.val()) &&
|
||||||
|
// An operation is defined
|
||||||
|
row.$operation &&
|
||||||
|
row.$operation.val()
|
||||||
|
) {
|
||||||
|
can_submit = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return can_submit;
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* Checked every time we change the quantity or the operation and at start
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @param {Object} row: the form row structure
|
||||||
|
*/
|
||||||
|
_checkCanSubmit: function () {
|
||||||
|
this.$submit.prop("disabled", !this._canSubmit());
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
* @param {InputEvent} ev
|
||||||
|
*/
|
||||||
|
_onChangeOperationId: function (ev) {
|
||||||
|
// Toggle comment on or off if an operation is requested
|
||||||
|
const id = ev.currentTarget.name.replace("-operation_id", "");
|
||||||
|
var row = this.rows[id];
|
||||||
|
if (row && row.$operation && row.$operation.val()) {
|
||||||
|
this._show_comment(row);
|
||||||
|
} else {
|
||||||
|
this._hide_comment(row);
|
||||||
|
}
|
||||||
|
this._checkCanSubmit();
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
_onChangeQty: function () {
|
||||||
|
this._checkCanSubmit();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user