[IMP] delivery: in SO, only suggest carriers available for the partner address

This commit is contained in:
Richard Mathot
2017-12-27 16:35:33 +01:00
committed by GitHub
parent 81d98f32a5
commit f33ea46cef
2 changed files with 10 additions and 2 deletions
+8 -1
View File
@@ -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
+2 -1
View File
@@ -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"/>