summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorMartin Geubelle <mge@odoo.com>2016-02-10 18:01:42 +0100
committerMartin Geubelle <mge@odoo.com>2016-03-10 13:41:10 +0100
commitd32abe75b16eb215f8c2bdf5682fd7bdb7238c4d (patch)
treebaf84fafbaf1f2c62604ba3497f4b42bd48cfe25 /addons
parentbf102514747e02992a7b18ad48860ea5c8eadcf8 (diff)
[IMP] delivery: usability
* Remove useless field `partner_id` (+ data) * `delivery.carrier` form view * 'Install more provider' button * etc.
Diffstat (limited to 'addons')
-rw-r--r--addons/delivery/data/delivery_data.xml8
-rw-r--r--addons/delivery/data/delivery_demo.xml9
-rw-r--r--addons/delivery/models/delivery_carrier.py18
-rw-r--r--addons/delivery/models/sale_order.py2
-rw-r--r--addons/delivery/models/stock_picking.py2
-rw-r--r--addons/delivery/views/delivery_view.xml45
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.