mirror of
https://github.com/OCA/rma.git
synced 2025-02-16 17:11:47 +02:00
[IMP] rma, rma_sale: shipping address
Allow to set the desired shipping address where the goods must be returned after the RMA is processed.
This commit is contained in:
@@ -27,6 +27,7 @@ class CustomerPortal(CustomerPortal):
|
||||
wizard_obj = request.env["sale.order.rma.wizard"]
|
||||
# Set wizard line vals
|
||||
mapped_vals = {}
|
||||
partner_shipping_id = post.pop("partner_shipping_id", False)
|
||||
for name, value in post.items():
|
||||
row, field_name = name.split("-", 1)
|
||||
mapped_vals.setdefault(row, {}).update({field_name: value})
|
||||
@@ -38,7 +39,11 @@ class CustomerPortal(CustomerPortal):
|
||||
order = order_obj.browse(order_id).sudo()
|
||||
location_id = order.warehouse_id.rma_loc_id.id
|
||||
wizard = wizard_obj.with_context(active_id=order_id).create(
|
||||
{"line_ids": line_vals, "location_id": location_id}
|
||||
{
|
||||
"line_ids": line_vals,
|
||||
"location_id": location_id,
|
||||
"partner_shipping_id": partner_shipping_id,
|
||||
}
|
||||
)
|
||||
rma = wizard.sudo().create_rma(from_portal=True)
|
||||
for rec in rma:
|
||||
|
||||
@@ -67,6 +67,48 @@
|
||||
</ul>
|
||||
</span>
|
||||
</div>
|
||||
<t
|
||||
t-set="delivery_addresses"
|
||||
t-value="sale_order.partner_id.commercial_partner_id.mapped('child_ids').filtered(lambda x: x.type in ['contact', 'delivery'])"
|
||||
/>
|
||||
<button
|
||||
class="btn btn-primary btn-block mb8"
|
||||
type="button"
|
||||
data-toggle="collapse"
|
||||
data-target="#delivery_address_picker"
|
||||
aria-expanded="false"
|
||||
><i
|
||||
class="fa fa-truck"
|
||||
/> Choose a delivery address</button>
|
||||
<div
|
||||
class="col-lg-12 collapse mt8"
|
||||
id="delivery_address_picker"
|
||||
>
|
||||
<div data-toggle="buttons" class="row">
|
||||
<label
|
||||
t-attf-class="card mr4 btn btn-light"
|
||||
t-foreach="delivery_addresses"
|
||||
t-as="address"
|
||||
>
|
||||
<input
|
||||
class="d-none"
|
||||
type="radio"
|
||||
name="partner_shipping_id"
|
||||
t-att-value="address.id"
|
||||
>
|
||||
<strong>
|
||||
<i
|
||||
t-attf-class="text-secondary fa #{address.type == 'delivery' and 'fa-truck' or 'fa-user'}"
|
||||
/>
|
||||
<t t-esc="address.name" />
|
||||
</strong>
|
||||
<pre><h6
|
||||
t-esc="address.contact_address"
|
||||
/></pre>
|
||||
</input>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<t
|
||||
t-set="data_list"
|
||||
t-value="sale_order.get_delivery_rma_data()"
|
||||
|
||||
@@ -27,6 +27,16 @@ class SaleOrderRmaWizard(models.TransientModel):
|
||||
domain=_domain_location_id,
|
||||
default=lambda r: r.order_id.warehouse_id.rma_loc_id.id,
|
||||
)
|
||||
commercial_partner_id = fields.Many2one(
|
||||
comodel_name="res.partner",
|
||||
related="order_id.partner_id.commercial_partner_id",
|
||||
string="Commercial entity",
|
||||
)
|
||||
partner_shipping_id = fields.Many2one(
|
||||
comodel_name="res.partner",
|
||||
string="Shipping Address",
|
||||
help="Will be used to return the goods when the RMA is completed",
|
||||
)
|
||||
|
||||
def create_rma(self, from_portal=None):
|
||||
self.ensure_one()
|
||||
@@ -147,9 +157,13 @@ class SaleOrderLineRmaWizard(models.TransientModel):
|
||||
|
||||
def _prepare_rma_values(self):
|
||||
self.ensure_one()
|
||||
partner_shipping = (
|
||||
self.wizard_id.partner_shipping_id or self.order_id.partner_shipping_id
|
||||
)
|
||||
return {
|
||||
"partner_id": self.order_id.partner_id.id,
|
||||
"partner_invoice_id": self.order_id.partner_invoice_id.id,
|
||||
"partner_shipping_id": partner_shipping.id,
|
||||
"origin": self.order_id.name,
|
||||
"company_id": self.order_id.company_id.id,
|
||||
"location_id": self.wizard_id.location_id.id,
|
||||
|
||||
@@ -31,6 +31,11 @@
|
||||
</field>
|
||||
</group>
|
||||
<group>
|
||||
<field name="commercial_partner_id" invisible="1" />
|
||||
<field
|
||||
name="partner_shipping_id"
|
||||
domain="[('id', 'child_of', commercial_partner_id)]"
|
||||
/>
|
||||
<field
|
||||
name="location_id"
|
||||
options="{'no_create': True, 'no_open': True}"
|
||||
|
||||
Reference in New Issue
Block a user