diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index 66991379b1a..6f3336f2c3c 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -781,12 +781,7 @@ class sale_order_line(osv.osv):
if not product:
return {'value': {'th_weight' : 0, 'product_packaging': False,
'product_uos_qty': qty}, 'domain': {'product_uom': [],
- 'product_uos': []}}
-
- if not pricelist:
- raise osv.except_osv(_('No Pricelist !'),
- _('You have to select a pricelist in the sale form !\n'
- 'Please set one before choosing a product.'))
+ 'product_uos': []}}
if not date_order:
date_order = time.strftime('%Y-%m-%d')
@@ -798,18 +793,7 @@ class sale_order_line(osv.osv):
pack = self.pool.get('product.packaging').browse(cr, uid, packaging, context)
q = product_uom_obj._compute_qty(cr, uid, uom, pack.qty, default_uom)
qty = qty - qty % q + q
- result['product_uom_qty'] = qty
-
- price = self.pool.get('product.pricelist').price_get(cr, uid, [pricelist],
- product, qty or 1.0, partner_id, {
- 'uom': uom,
- 'date': date_order,
- })[pricelist]
- if price is False:
- raise osv.except_osv(_('No valid pricelist line found !'),
- _("Couldn't find a pricelist line matching this product and quantity.\n"
- "You have to change either the product, the quantity or the pricelist."))
-
+ result['product_uom_qty'] = qty
if uom:
uom2 = product_uom_obj.browse(cr, uid, uom)
@@ -824,7 +808,7 @@ class sale_order_line(osv.osv):
else:
uos = False
- result .update({'price_unit': price, 'type': product_obj.procure_method})
+ result .update({'type': product_obj.procure_method})
if product_obj.description_sale:
result['notes'] = product_obj.description_sale
@@ -878,7 +862,34 @@ class sale_order_line(osv.osv):
result['product_uom_qty'] = qty_uos / product_obj.uos_coeff
result['th_weight'] = result['product_uom_qty'] * product_obj.weight
# Round the quantity up
- return {'value': result, 'domain': domain}
+
+ # get unit price
+ warning={}
+ if not pricelist:
+ warning={
+ 'title':'No Pricelist !',
+ 'message':
+ 'You have to select a pricelist in the sale form !\n'
+ 'Please set one before choosing a product.'
+ }
+ else:
+ price = self.pool.get('product.pricelist').price_get(cr, uid, [pricelist],
+ product, qty or 1.0, partner_id, {
+ 'uom': uom,
+ 'date': date_order,
+ })[pricelist]
+ if price is False:
+ warning={
+ 'title':'No valid pricelist line found !',
+ 'message':
+ "Couldn't find a pricelist line matching this product and quantity.\n"
+ "You have to change either the product, the quantity or the pricelist."
+ }
+ else:
+ result.update({'price_unit': price})
+
+
+ return {'value': result, 'domain': domain,'warning':warning}
def product_uom_change(self, cursor, user, ids, pricelist, product, qty=0,
uom=False, qty_uos=0, uos=False, name='', partner_id=False,
diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml
index de39b272441..c826d1c00ee 100644
--- a/addons/stock/stock_view.xml
+++ b/addons/stock/stock_view.xml
@@ -453,6 +453,19 @@
=============================
Packing
=============================
+
+ stock.picking.calendar
+ stock.picking
+ calendar
+
+
+
+
+
+
+
+
+
stock.picking.tree
stock.picking
@@ -634,7 +647,7 @@
stock.picking
ir.actions.act_window
form
- tree,form
+ tree,form,calendar
[('type','=','delivery')]
{'contact_display': 'partner'}
@@ -658,7 +671,7 @@
stock.picking
ir.actions.act_window
form
- tree,form
+ tree,form,calendar
[('state','=','assigned'),('type','=','delivery')]
{'contact_display': 'partner'}
@@ -681,7 +694,7 @@
stock.picking
ir.actions.act_window
form
- tree,form
+ tree,form,calendar
[('state','=','confirmed'),('type','=','delivery')]
{'contact_display': 'partner'}
@@ -791,7 +804,7 @@
stock.picking
ir.actions.act_window
form
- tree,form
+ tree,form,calendar
[('type','=','out')]
{'contact_display': 'partner'}
@@ -814,7 +827,7 @@
stock.picking
ir.actions.act_window
form
- tree,form
+ tree,form,calendar
[('state','=','assigned'),('type','=','out')]
{'contact_display': 'partner'}
@@ -837,7 +850,7 @@
stock.picking
ir.actions.act_window
form
- tree,form
+ tree,form,calendar
[('state','=','confirmed'),('type','=','out')]
{'contact_display': 'partner'}
@@ -956,7 +969,7 @@
stock.picking
ir.actions.act_window
form
- tree,form
+ tree,form,calendar
[('type','=','in')]
{'contact_display': 'partner'}
@@ -980,7 +993,7 @@
stock.picking
ir.actions.act_window
form
- tree,form
+ tree,form,calendar
[('state','=','assigned'),('type','=','in')]
{'contact_display': 'partner'}
@@ -1027,7 +1040,7 @@
stock.picking
ir.actions.act_window
form
- tree,form
+ tree,form,calendar
[('type','=','internal')]
{'contact_display': 'partner'}
@@ -1039,7 +1052,7 @@
stock.picking
ir.actions.act_window
form
- tree,form
+ tree,form,calendar
[('state','=','assigned'),('type','=','internal')]
{'contact_display': 'partner'}
@@ -1050,7 +1063,7 @@
stock.picking
ir.actions.act_window
form
- tree,form
+ tree,form,calendar
[('state','=','confirmed'),('type','=','internal')]
{'contact_display': 'partner'}
@@ -1061,7 +1074,7 @@
stock.picking
ir.actions.act_window
form
- tree,form
+ tree,form,calendar
[('state','=','draft'),('type','=','internal')]
{'contact_display': 'partner'}