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'}