diff options
| author | Richard Mathot <rim@odoo.com> | 2017-12-27 16:35:33 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-12-27 16:35:33 +0100 |
| commit | f33ea46ceffb369995f1f0e19b35b03b242e6dac (patch) | |
| tree | f6fb64ede59c4fd2d67cf7b43e07a9f8a1a1a78f | |
| parent | 81d98f32a528e0e0aaff93edbde7b88a8f6a7933 (diff) | |
[IMP] delivery: in SO, only suggest carriers available for the partner address
| -rw-r--r-- | addons/delivery/models/sale_order.py | 9 | ||||
| -rw-r--r-- | addons/delivery/views/delivery_view.xml | 3 |
2 files changed, 10 insertions, 2 deletions
diff --git a/addons/delivery/models/sale_order.py b/addons/delivery/models/sale_order.py index 184374020af..f6dd0fbb9d8 100644 --- a/addons/delivery/models/sale_order.py +++ b/addons/delivery/models/sale_order.py @@ -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 diff --git a/addons/delivery/views/delivery_view.xml b/addons/delivery/views/delivery_view.xml index fc12008fd49..a88d62d81bd 100644 --- a/addons/delivery/views/delivery_view.xml +++ b/addons/delivery/views/delivery_view.xml @@ -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"/> |
