diff --git a/addons/delivery/data/delivery_data.xml b/addons/delivery/data/delivery_data.xml index a26475af993..1facabdeda1 100644 --- a/addons/delivery/data/delivery_data.xml +++ b/addons/delivery/data/delivery_data.xml @@ -1,13 +1,6 @@ - - - Transporter (Delivery provider) - - - - Free delivery charges @@ -18,7 +11,6 @@ fixed service - diff --git a/addons/delivery/data/delivery_demo.xml b/addons/delivery/data/delivery_demo.xml index 44b693baada..40c19d755f5 100644 --- a/addons/delivery/data/delivery_demo.xml +++ b/addons/delivery/data/delivery_demo.xml @@ -1,13 +1,6 @@ - - - Manchester - 06040 - - 3958 Maxwell Street - @@ -15,7 +8,6 @@ The Poste 20 2 - base_on_rule service @@ -25,7 +17,6 @@ Normal Delivery Charges 10 3 - fixed service diff --git a/addons/delivery/models/delivery_carrier.py b/addons/delivery/models/delivery_carrier.py index e360a70ccaa..de5e089e3da 100644 --- a/addons/delivery/models/delivery_carrier.py +++ b/addons/delivery/models/delivery_carrier.py @@ -35,10 +35,9 @@ class DeliveryCarrier(models.Model): sequence = fields.Integer(help="Determine the display order", default=10) # This field will be overwritten by internal shipping providers by adding their own type (ex: 'fedex') - delivery_type = fields.Selection([('fixed', 'Fixed Price'), ('base_on_rule', 'Based on Rules')], string='Price Computation', default='fixed', required=True) + delivery_type = fields.Selection([('fixed', 'Fixed Price'), ('base_on_rule', 'Based on Rules')], string='Provider', default='fixed', required=True) product_type = fields.Selection(related='product_id.type', default='service') product_sale_ok = fields.Boolean(related='product_id.sale_ok', default=False) - partner_id = fields.Many2one('res.partner', string='Transporter Company', required=True, help="The partner that is doing the delivery service.") product_id = fields.Many2one('product.product', string='Delivery Product', required=True, ondelete="cascade") price = fields.Float(compute='get_price') available = fields.Boolean(compute='get_price') @@ -50,7 +49,7 @@ class DeliveryCarrier(models.Model): zip_to = fields.Char('Zip To') price_rule_ids = fields.One2many('delivery.price.rule', 'carrier_id', 'Pricing Rules', copy=True) fixed_price = fields.Float(compute='_compute_fixed_price', inverse='_set_product_fixed_price', store=True, string='Fixed Price',help="Keep empty if the pricing depends on the advanced pricing per destination") - shipping_enabled = fields.Boolean(string="Shipping enabled", default=True, help="Uncheck this box to disable package shipping while validating Delivery Orders") + integration_level = fields.Selection([('rate', 'Get Rate'), ('rate_and_ship', 'Get Rate and Create Shipment')], string="Integration Level", default='rate_and_ship', help="Action while validating Delivery Orders") prod_environment = fields.Boolean("Environment", help="Set to True if your credentials are certified for production.") margin = fields.Integer(help='This percentage will be added to the shipping price.') @@ -62,6 +61,19 @@ class DeliveryCarrier(models.Model): def toggle_prod_environment(self): self.prod_environment = not self.prod_environment + @api.multi + def install_more_provider(self): + return { + 'name': 'New Providers', + 'view_mode': 'kanban', + 'res_model': 'ir.module.module', + 'domain': [['name', 'ilike', 'delivery_']], + 'type': 'ir.actions.act_window', + 'help': _('''

+ Buy Odoo Enterprise now to get more providers. +

'''), + } + @api.multi def name_get(self): display_delivery = self.env.context.get('display_delivery', False) diff --git a/addons/delivery/models/sale_order.py b/addons/delivery/models/sale_order.py index 9d64c718e1e..df9a14fcf8b 100644 --- a/addons/delivery/models/sale_order.py +++ b/addons/delivery/models/sale_order.py @@ -13,7 +13,7 @@ class SaleOrder(models.Model): carrier_id = fields.Many2one("delivery.carrier", string="Delivery Method", help="Fill this field if you plan to invoice the shipping based on picking.") invoice_shipping_on_delivery = fields.Boolean(string="Invoice Shipping on Delivery") - @api.depends('carrier_id', 'partner_id', 'order_line') + @api.depends('carrier_id', 'order_line') def _compute_delivery_price(self): for order in self: if order.state != 'draft': diff --git a/addons/delivery/models/stock_picking.py b/addons/delivery/models/stock_picking.py index b213ebafcbb..e8d37aa0cec 100644 --- a/addons/delivery/models/stock_picking.py +++ b/addons/delivery/models/stock_picking.py @@ -101,7 +101,7 @@ class StockPicking(models.Model): self.ensure_one() res = super(StockPicking, self).do_transfer() - if self.carrier_id and self.carrier_id.delivery_type not in ['fixed', 'base_on_rule'] and self.carrier_id.shipping_enabled: + if self.carrier_id and self.carrier_id.delivery_type not in ['fixed', 'base_on_rule'] and self.carrier_id.integration_level == 'rate_and_ship': self.send_to_shipper() if self.carrier_id: diff --git a/addons/delivery/views/delivery_view.xml b/addons/delivery/views/delivery_view.xml index 91d704a2af2..0e65b922654 100644 --- a/addons/delivery/views/delivery_view.xml +++ b/addons/delivery/views/delivery_view.xml @@ -10,7 +10,6 @@ - @@ -27,12 +26,24 @@ - - +
+ + delivery.carrier.search + delivery.carrier + + + + + + + + + + delivery.carrier.form delivery.carrier @@ -52,15 +63,7 @@

- - - - - - - - - + + +