[IMP] delivery: in SO, only suggest carriers available for the partner address
This commit is contained in:
@@ -14,12 +14,19 @@ class SaleOrder(models.Model):
|
||||
delivery_message = fields.Char(readonly=True, copy=False)
|
||||
delivery_rating_success = fields.Boolean(copy=False)
|
||||
invoice_shipping_on_delivery = fields.Boolean(string="Invoice Shipping on Delivery", copy=False)
|
||||
available_carrier_ids = fields.Many2many("delivery.carrier", compute="_compute_available_carrier", string="Available Carriers")
|
||||
|
||||
def _compute_amount_total_without_delivery(self):
|
||||
self.ensure_one()
|
||||
delivery_cost = sum([l.price_total for l in self.order_line if l.is_delivery])
|
||||
return self.amount_total - delivery_cost
|
||||
|
||||
@api.depends('partner_id')
|
||||
def _compute_available_carrier(self):
|
||||
carriers = self.env['delivery.carrier'].search([])
|
||||
for rec in self:
|
||||
rec.available_carrier_ids = carriers.available_carriers(rec.partner_id) if rec.partner_id else carriers
|
||||
|
||||
def get_delivery_price(self):
|
||||
for order in self.filtered(lambda o: o.state in ('draft', 'sent') and len(o.order_line) > 0):
|
||||
# We do not want to recompute the shipping price of an already validated/done SO
|
||||
@@ -45,7 +52,7 @@ class SaleOrder(models.Model):
|
||||
@api.onchange('partner_id')
|
||||
def onchange_partner_id_carrier_id(self):
|
||||
if self.partner_id:
|
||||
self.carrier_id = self.partner_id.property_delivery_carrier_id
|
||||
self.carrier_id = self.partner_id.property_delivery_carrier_id.filtered('active')
|
||||
|
||||
# TODO onchange sol, clean delivery price
|
||||
|
||||
|
||||
@@ -275,10 +275,11 @@
|
||||
<data>
|
||||
<xpath expr="//field[@name='payment_term_id']" position="after">
|
||||
<field name="id" invisible="1"/>
|
||||
<field name="available_carrier_ids" invisible="1"/>
|
||||
<label for="carrier_id"/>
|
||||
<div name='carrier_selection'>
|
||||
<div>
|
||||
<field name="carrier_id" context="{'order_id': id}" class="oe_inline" options="{'no_create': True, 'no_open': True}" attrs="{'readonly':[('state','not in',('draft','sent'))]}"/> <i class="fa fa-check text-success" aria-hidden="true" attrs="{'invisible':['|','|',('carrier_id','=',False),('state','not in',('draft','sent')),('delivery_rating_success','=',False)]}"></i>
|
||||
<field name="carrier_id" domain="[('id', 'in', available_carrier_ids)]" context="{'order_id': id}" class="oe_inline" options="{'no_create': True, 'no_open': True}" attrs="{'readonly':[('state','not in',('draft','sent'))]}"/> <i class="fa fa-check text-success" aria-hidden="true" attrs="{'invisible':['|','|',('carrier_id','=',False),('state','not in',('draft','sent')),('delivery_rating_success','=',False)]}"></i>
|
||||
</div>
|
||||
<div>
|
||||
<field name='delivery_price' widget='monetary' class="oe_inline" options="{'currency_field': 'currency_id'}" nolabel="1" attrs="{'invisible': [('carrier_id','=', False)]}" force_save="1"/>
|
||||
|
||||
Reference in New Issue
Block a user