From 8a23802e9e6c3ce95f8bbb24cb126cdaa53897de Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Tue, 3 Sep 2013 11:03:34 +0200 Subject: [PATCH] [IMP] stock: removed location input and location output on warehouse bzr revid: qdp-launchpad@openerp.com-20130903090334-iqtk4a762volg5s2 --- addons/point_of_sale/point_of_sale.py | 18 +++++++++++++++--- addons/purchase/purchase.py | 6 ------ addons/purchase/purchase_view.xml | 2 +- .../purchase_requisition.py | 11 +---------- .../sale_stock/test/picking_order_policy.yml | 2 -- addons/stock/stock.py | 12 ++---------- addons/stock/stock_data.xml | 2 -- addons/stock/stock_demo.xml | 4 ---- addons/stock/stock_demo.yml | 2 -- addons/stock/stock_view.xml | 4 ---- 10 files changed, 19 insertions(+), 44 deletions(-) diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py index 591f65cf925..4767d90f188 100644 --- a/addons/point_of_sale/point_of_sale.py +++ b/addons/point_of_sale/point_of_sale.py @@ -642,6 +642,7 @@ class pos_order(osv.osv): 'invoice_id': fields.many2one('account.invoice', 'Invoice'), 'account_move': fields.many2one('account.move', 'Journal Entry', readonly=True), 'picking_id': fields.many2one('stock.picking', 'Picking', readonly=True), + 'picking_type_id': fields.many2one('stock.picking.type', 'Picking Type', required=True), 'note': fields.text('Internal Notes'), 'nb_print': fields.integer('Number of Print', readonly=True), 'pos_reference': fields.char('Receipt Ref', size=64, readonly=True), @@ -660,6 +661,13 @@ class pos_order(osv.osv): return session_record.config_id.pricelist_id and session_record.config_id.pricelist_id.id or False return False + def _get_out_picking_type(self, cr, uid, context=None): + try: + picking_type = self.pool.get('ir.model.data').get_object(cr, uid, 'stock', 'picking_type_out', context=context) + except: + picking_type = False + return picking_type + _defaults = { 'user_id': lambda self, cr, uid, context: uid, 'state': 'draft', @@ -669,6 +677,7 @@ class pos_order(osv.osv): 'session_id': _default_session, 'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id, 'pricelist_id': _default_pricelist, + 'picking_type_id': _get_out_picking_type, } def create(self, cr, uid, values, context=None): @@ -697,18 +706,21 @@ class pos_order(osv.osv): if not order.state=='draft': continue addr = order.partner_id and partner_obj.address_get(cr, uid, [order.partner_id.id], ['delivery']) or {} + picking_type = order.picking_type_id picking_id = picking_obj.create(cr, uid, { 'origin': order.name, 'partner_id': addr.get('delivery',False), - 'picking_type_id': self.pool.get('ir.model.data').get_object(cr, uid, 'stock', 'picking_type_out', context=context).id, + 'picking_type_id': picking_type.id, 'company_id': order.company_id.id, 'move_type': 'direct', 'note': order.note or "", 'invoice_state': 'none', }, context=context) self.write(cr, uid, [order.id], {'picking_id': picking_id}, context=context) - location_id = order.warehouse_id.lot_stock_id.id - output_id = order.warehouse_id.lot_output_id.id + location_id = picking_type.default_location_src_id.id + output_id = picking_type.default_location_dest_id.id + if not location_id or not output_id: + raise osv.except_osv(_('Error!'), _('Missing source or destination location for picking type %s. Please configure those fields and try again.' % (picking_type.name,))) for line in order.lines: if line.product_id and line.product_id.type == 'service': diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index ec4144f4cc6..d0876df7ef1 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -308,12 +308,6 @@ class purchase_order(osv.osv): values.update({'location_id': location_id}) return {'value':values} - def onchange_warehouse_id(self, cr, uid, ids, warehouse_id): - if not warehouse_id: - return {} - warehouse = self.pool.get('stock.warehouse').browse(cr, uid, warehouse_id) - return {'value':{'location_id': warehouse.lot_input_id.id, 'dest_address_id': False}} - def onchange_partner_id(self, cr, uid, ids, partner_id): partner = self.pool.get('res.partner') if not partner_id: diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml index 973757770c4..f152d5ba066 100644 --- a/addons/purchase/purchase_view.xml +++ b/addons/purchase/purchase_view.xml @@ -196,7 +196,7 @@ - + diff --git a/addons/purchase_requisition/purchase_requisition.py b/addons/purchase_requisition/purchase_requisition.py index 85fda69a65e..6d08d163696 100644 --- a/addons/purchase_requisition/purchase_requisition.py +++ b/addons/purchase_requisition/purchase_requisition.py @@ -136,22 +136,13 @@ class purchase_requisition(osv.osv): return res def _prepare_purchase_order(self, cr, uid, requisition, supplier, context=None): - if not requisition.warehouse_id: - warehouse_obj = self.pool.get('stock.warehouse') - - warehouse_id = warehouse_obj.search(cr, uid, [('company_id', '=', requisition.company_id.id)], context=context) - if not warehouse_id: - raise osv.except_osv(_('Warning!'), _('No warehouse found for this company.')) - location_id = warehouse_obj.browse(cr, uid, warehouse_id, context=context)[0].lot_input_id.id - else: - location_id = requisition.warehouse_id.lot_input_id.id supplier_pricelist = supplier.property_product_pricelist_purchase and supplier.property_product_pricelist_purchase.id or False return { 'origin': requisition.name, 'date_order': requisition.date_end or fields.date.context_today(self, cr, uid, context=context), 'partner_id': supplier.id, 'pricelist_id': supplier_pricelist, - 'location_id': location_id, + #'location_id': location_id, 'company_id': requisition.company_id.id, 'fiscal_position': supplier.property_account_position and supplier.property_account_position.id or False, 'requisition_id': requisition.id, diff --git a/addons/sale_stock/test/picking_order_policy.yml b/addons/sale_stock/test/picking_order_policy.yml index f903d160400..4251c7a98a8 100644 --- a/addons/sale_stock/test/picking_order_policy.yml +++ b/addons/sale_stock/test/picking_order_policy.yml @@ -58,7 +58,6 @@ assert picking.invoice_state == (sale_order.order_policy=='picking' and '2binvoiced') or 'none',"Invoice policy is not correspond with sale order." assert len(picking.move_lines) == len(sale_order.order_line), "Total move of delivery order are not corresposning with total sale order lines." location_id = sale_order.warehouse_id.lot_stock_id.id - output_id = sale_order.warehouse_id.lot_output_id.id for move in picking.move_lines: order_line = move.procurement_id.sale_line_id date_planned = datetime.strptime(sale_order.date_order, DEFAULT_SERVER_DATETIME_FORMAT) + relativedelta(days=order_line.delay or 0.0) @@ -72,7 +71,6 @@ assert move.product_packaging.id == order_line.product_packaging.id,"Product packaging is not correspond." assert move.partner_id.id == order_line.address_allotment_id.id or sale_order.partner_shipping_id.id,"Address is not correspond" #assert move.location_id.id == location_id,"Source Location is not correspond." - #assert move.location_dest_id == output_id,"Destination Location is not correspond." assert move.price_unit == order_line.product_id.standard_price or 0.0,"Price Unit is not correspond" - Now, I dispatch delivery order. diff --git a/addons/stock/stock.py b/addons/stock/stock.py index ab05b169f0d..494105a7784 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -1921,24 +1921,16 @@ class stock_warehouse(osv.osv): 'name': fields.char('Name', size=128, required=True, select=True), 'company_id': fields.many2one('res.company', 'Company', required=True, select=True), 'partner_id': fields.many2one('res.partner', 'Owner Address'), - 'lot_input_id': fields.many2one('stock.location', 'Location Input', required=True, domain=[('usage', '<>', 'view')]), 'lot_stock_id': fields.many2one('stock.location', 'Location Stock', required=True, domain=[('usage', '=', 'internal')]), - 'lot_output_id': fields.many2one('stock.location', 'Location Output', required=True, domain=[('usage', '<>', 'view')]), } - def _default_lot_input_stock_id(self, cr, uid, context=None): + def _default_stock_id(self, cr, uid, context=None): lot_input_stock = self.pool.get('ir.model.data').get_object(cr, uid, 'stock', 'stock_location_stock') return lot_input_stock.id - def _default_lot_output_id(self, cr, uid, context=None): - lot_output = self.pool.get('ir.model.data').get_object(cr, uid, 'stock', 'stock_location_output') - return lot_output.id - _defaults = { 'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'stock.inventory', context=c), - 'lot_input_id': _default_lot_input_stock_id, - 'lot_stock_id': _default_lot_input_stock_id, - 'lot_output_id': _default_lot_output_id, + 'lot_stock_id': _default_stock_id, } diff --git a/addons/stock/stock_data.xml b/addons/stock/stock_data.xml index 79d7545f8f4..b591263f4b2 100644 --- a/addons/stock/stock_data.xml +++ b/addons/stock/stock_data.xml @@ -210,9 +210,7 @@ watch your stock valuation, and track production lots upstream and downstream (b --> - - diff --git a/addons/stock/stock_demo.xml b/addons/stock/stock_demo.xml index 7d1515c427f..c42e216f636 100644 --- a/addons/stock/stock_demo.xml +++ b/addons/stock/stock_demo.xml @@ -251,20 +251,16 @@ - Chicago Warehouse - - Birmingham Warehouse - diff --git a/addons/stock/stock_demo.yml b/addons/stock/stock_demo.yml index cf8d1f71572..07763ee8cc1 100644 --- a/addons/stock/stock_demo.yml +++ b/addons/stock/stock_demo.yml @@ -22,9 +22,7 @@ - !record {model: stock.warehouse, id: warehouse_icecream}: name: Ice Cream Shop - lot_input_id: location_refrigerator lot_stock_id: location_refrigerator - lot_output_id: location_delivery_counter - !record {model: product.product, id: product_icecream}: default_code: 001 diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml index 313fcf90a85..d78f825bb1b 100644 --- a/addons/stock/stock_view.xml +++ b/addons/stock/stock_view.xml @@ -498,9 +498,7 @@

- - @@ -517,9 +515,7 @@ - -