diff options
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/delivery/data/delivery_data.xml | 8 | ||||
| -rw-r--r-- | addons/delivery/data/delivery_demo.xml | 9 | ||||
| -rw-r--r-- | addons/delivery/models/delivery_carrier.py | 18 | ||||
| -rw-r--r-- | addons/delivery/models/sale_order.py | 2 | ||||
| -rw-r--r-- | addons/delivery/models/stock_picking.py | 2 | ||||
| -rw-r--r-- | addons/delivery/views/delivery_view.xml | 45 |
6 files changed, 49 insertions, 35 deletions
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 @@ <?xml version="1.0" encoding="utf-8"?> <odoo> <data noupdate="1"> - <!-- Create a transporter --> - <record id="res_partner_delivery" model="res.partner"> - <field name="name">Transporter (Delivery provider)</field> - <field name="is_company" eval="True"/> - <field name="supplier" eval="True"/> - <field name="customer" eval="False"/> - </record> <record id="free_delivery_carrier" model="delivery.carrier"> <field name="name">Free delivery charges</field> @@ -18,7 +11,6 @@ <field name="delivery_type">fixed</field> <field name="product_type">service</field> <field name="product_sale_ok" eval="False"/> - <field name="partner_id" ref="res_partner_delivery"/> </record> <record forcecreate="True" id="property_delivery_carrier" model="ir.property"> 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 @@ <?xml version="1.0" encoding="utf-8"?> <odoo> <data noupdate="1"> - <!-- Update a transporter --> - <record id="res_partner_delivery" model="res.partner"> - <field name="city">Manchester</field> - <field name="zip">06040</field> - <field model="res.country" name="country_id" search="[('code','ilike','us')]"/> - <field name="street">3958 Maxwell Street</field> - </record> <!-- Carrier --> @@ -15,7 +8,6 @@ <field name="name">The Poste</field> <field name="fixed_price">20</field> <field name="sequence">2</field> - <field name="partner_id" ref="res_partner_delivery"/> <field name="delivery_type">base_on_rule</field> <field name="product_type">service</field> <field name="product_sale_ok" eval="False"/> @@ -25,7 +17,6 @@ <field name="name">Normal Delivery Charges</field> <field name="fixed_price">10</field> <field name="sequence">3</field> - <field name="partner_id" ref="res_partner_delivery"/> <field name="delivery_type">fixed</field> <field name="product_type">service</field> <field name="product_sale_ok" eval="False"/> 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.') @@ -63,6 +62,19 @@ class DeliveryCarrier(models.Model): 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': _('''<p class="oe_view_nocontent"> + Buy Odoo Enterprise now to get more providers. + </p>'''), + } + + @api.multi def name_get(self): display_delivery = self.env.context.get('display_delivery', False) order_id = self.env.context.get('order_id', 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 @@ <field name="arch" type="xml"> <search string="Delivery Carrier Search"> <field name="name" string="Carrier" /> - <field name="partner_id" operator="child_of"/> <separator/> <filter string="Archived" name="inactive" domain="[('active','=',False)]"/> <group expand="0" string="Group By" > @@ -27,12 +26,24 @@ <tree string="Carrier"> <field name="sequence" widget="handle"/> <field name="name"/> - <field name="partner_id"/> - <field name="price"/> + <field name="delivery_type"/> </tree> </field> </record> + <record id="view_delivery_carrier_search" model="ir.ui.view"> + <field name="name">delivery.carrier.search</field> + <field name="model">delivery.carrier</field> + <field name="arch" type="xml"> + <search string="Delivery Carrier"> + <field name="delivery_type"/> + <group expand="1" string="Group By"> + <filter string="Provider" name="provider" context="{'group_by':'delivery_type', 'residual_visible':True}"/> + </group> + </search> + </field> + </record> + <record id="view_delivery_carrier_form" model="ir.ui.view"> <field name="name">delivery.carrier.form</field> <field name="model">delivery.carrier</field> @@ -52,15 +63,7 @@ <h1> <field name="name" placeholder="e.g. UPS Express"/> </h1> - <group name="company"> - <field name="partner_id" class="oe_inline"/> - <field name="product_type" invisible="1"/> - <field name="product_sale_ok" invisible="1"/> - <field name="shipping_enabled" attrs="{'invisible': ['|', ('delivery_type', '=', 'fixed'), ('delivery_type', '=', 'base_on_rule')]}"/> - </group> - </div> - <notebook> - <page string="Pricing"> + <group> <group> <field name="delivery_type" widget="radio"/> <label for="margin"/> @@ -68,6 +71,16 @@ <field name="margin" class="oe_inline"/>% </div> </group> + <group> + <button string="Install more Providers" name="install_more_provider" type="object" class="oe_link oe_edit_only"/> + </group> + </group> + <group> + <field name="integration_level" widget="radio" attrs="{'invisible': ['|', ('delivery_type', '=', 'fixed'), ('delivery_type', '=', 'base_on_rule')]}"/> + </group> + </div> + <notebook> + <page string="Pricing" attrs="{'invisible': [('delivery_type', 'not in', ['fixed', 'base_on_rule'])]}"> <group attrs="{'invisible':[('delivery_type', '!=', 'fixed')]}"> <group> <field name="fixed_price"/> @@ -84,7 +97,12 @@ <field name="price_rule_ids" nolabel="1"/> </group> </page> - <page string="Destination"> + <page string="Destination" name="destination"> + <group> + <p> + Filling this form allows you to filter delivery carriers according to the delivery address of your customer. + </p> + </group> <group> <group> <field name="country_ids" widget="many2many_tags"/> @@ -111,6 +129,7 @@ <field name="res_model">delivery.carrier</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> + <field name="context">{'search_default_group_by_provider': True}</field> <field name="help" type="html"> <p class="oe_view_nocontent_create"> Click to define a new delivery method. |
