mirror of
https://github.com/OCA/rma.git
synced 2025-02-16 17:11:47 +02:00
[FIX] rma + rma_sale: Allow to create an RMA to a user with access_to…ken to sale order (no user created).
[FIX] rma + rma_sale: Show RMA's list (with share url) to a user with access_token to sale order (no user created).
This commit is contained in:
committed by
Pedro M. Baeza
parent
a95e14c6f9
commit
f4affc0422
@@ -623,6 +623,10 @@ class Rma(models.Model):
|
|||||||
"context": ctx,
|
"context": ctx,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def _add_message_subscribe_partner(self):
|
||||||
|
if self.partner_id and self.partner_id not in self.message_partner_ids:
|
||||||
|
self.message_subscribe([self.partner_id.id])
|
||||||
|
|
||||||
def action_confirm(self):
|
def action_confirm(self):
|
||||||
"""Invoked when 'Confirm' button in rma form view is clicked."""
|
"""Invoked when 'Confirm' button in rma form view is clicked."""
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
@@ -633,8 +637,7 @@ class Rma(models.Model):
|
|||||||
else:
|
else:
|
||||||
reception_move = self._create_receptions_from_product()
|
reception_move = self._create_receptions_from_product()
|
||||||
self.write({"reception_move_id": reception_move.id, "state": "confirmed"})
|
self.write({"reception_move_id": reception_move.id, "state": "confirmed"})
|
||||||
if self.partner_id not in self.message_partner_ids:
|
self._add_message_subscribe_partner()
|
||||||
self.message_subscribe([self.partner_id.id])
|
|
||||||
self._send_confirmation_email()
|
self._send_confirmation_email()
|
||||||
|
|
||||||
def action_refund(self):
|
def action_refund(self):
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
# Copyright 2020 Tecnativa - Ernesto Tejeda
|
# Copyright 2020 Tecnativa - Ernesto Tejeda
|
||||||
|
# Copyright 2022 Tecnativa - Víctor Martínez
|
||||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
from odoo import _, http
|
from odoo import _, http
|
||||||
@@ -64,6 +65,9 @@ class CustomerPortal(CustomerPortal):
|
|||||||
"custom_description": custom_description,
|
"custom_description": custom_description,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
user_has_group_portal = request.env.user.has_group(
|
||||||
|
"base.group_portal"
|
||||||
|
) or request.env.user.has_group("base.group_public")
|
||||||
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)")
|
||||||
@@ -76,8 +80,14 @@ class CustomerPortal(CustomerPortal):
|
|||||||
).subtype_ids += request.env.ref("rma.mt_rma_notification")
|
).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()
|
||||||
|
elif len(rma) == 1:
|
||||||
|
route = rma._get_share_url() if user_has_group_portal else rma.access_url
|
||||||
else:
|
else:
|
||||||
route = "/my/rmas?sale_id=%d" % order_id
|
route = (
|
||||||
|
order._get_share_url()
|
||||||
|
if user_has_group_portal
|
||||||
|
else "/my/rmas?sale_id=%d" % order_id
|
||||||
|
)
|
||||||
return request.redirect(route)
|
return request.redirect(route)
|
||||||
|
|
||||||
@http.route(
|
@http.route(
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<form
|
<form
|
||||||
id="form-request-rma"
|
id="form-request-rma"
|
||||||
method="POST"
|
method="POST"
|
||||||
t-attf-action="/my/orders/#{sale_order.id}/requestrma?access_token=#{sale_order.access_token}"
|
t-attf-action="/my/orders/#{sale_order.id}/requestrma?{{ keep_query() }}"
|
||||||
t-att-class="not single_page_mode and 'modal-content' or 'col-12'"
|
t-att-class="not single_page_mode and 'modal-content' or 'col-12'"
|
||||||
>
|
>
|
||||||
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()" />
|
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()" />
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
# Copyright 2020 Tecnativa - Ernesto Tejeda
|
# Copyright 2020 Tecnativa - Ernesto Tejeda
|
||||||
|
# Copyright 2022 Tecnativa - Víctor Martínez
|
||||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
from odoo import _, api, fields, models
|
from odoo import SUPERUSER_ID, _, api, fields, models
|
||||||
|
|
||||||
|
|
||||||
class SaleOrderRmaWizard(models.TransientModel):
|
class SaleOrderRmaWizard(models.TransientModel):
|
||||||
@@ -46,11 +47,21 @@ class SaleOrderRmaWizard(models.TransientModel):
|
|||||||
help="Values coming from portal RMA request form custom fields",
|
help="Values coming from portal RMA request form custom fields",
|
||||||
)
|
)
|
||||||
|
|
||||||
def create_rma(self, from_portal=None):
|
def create_rma(self, from_portal=False):
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
|
user_has_group_portal = self.env.user.has_group(
|
||||||
|
"base.group_portal"
|
||||||
|
) or self.env.user.has_group("base.group_public")
|
||||||
lines = self.line_ids.filtered(lambda r: r.quantity > 0.0)
|
lines = self.line_ids.filtered(lambda r: r.quantity > 0.0)
|
||||||
val_list = [line._prepare_rma_values() for line in lines]
|
val_list = [line._prepare_rma_values() for line in lines]
|
||||||
rma = self.env["rma"].create(val_list)
|
rma_model = (
|
||||||
|
self.env["rma"].with_user(SUPERUSER_ID)
|
||||||
|
if user_has_group_portal
|
||||||
|
else self.env["rma"]
|
||||||
|
)
|
||||||
|
rma = rma_model.create(val_list)
|
||||||
|
if from_portal:
|
||||||
|
rma._add_message_subscribe_partner()
|
||||||
# post messages
|
# post messages
|
||||||
msg_list = [
|
msg_list = [
|
||||||
'<a href="#" data-oe-model="rma" data-oe-id="%d">%s</a>' % (r.id, r.name)
|
'<a href="#" data-oe-model="rma" data-oe-id="%d">%s</a>' % (r.id, r.name)
|
||||||
|
|||||||
Reference in New Issue
Block a user