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 @@
-
-