[IMP] stock: removed location input and location output on warehouse

bzr revid: qdp-launchpad@openerp.com-20130903090334-iqtk4a762volg5s2
This commit is contained in:
Quentin (OpenERP) 2013-09-03 11:03:34 +02:00
parent ab07c9cc12
commit 8a23802e9e
10 changed files with 19 additions and 44 deletions

View File

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

View File

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

View File

@ -196,7 +196,7 @@
<group>
<field name="date_order"/>
<field name="origin" attr="{'invisible': [('origin','=',False)]}"/>
<field name="warehouse_id" on_change="onchange_warehouse_id(warehouse_id)" widget="selection" groups="stock.group_locations"/>
<field name="warehouse_id" widget="selection" groups="stock.group_locations"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
<field name="picking_type_id"/>
</group>

View File

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

View File

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

View File

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

View File

@ -210,9 +210,7 @@ watch your stock valuation, and track production lots upstream and downstream (b
-->
<record id="warehouse0" model="stock.warehouse">
<field model="res.company" name="name" search="[]" use="name"/>
<field name="lot_input_id" ref="stock_location_stock"/>
<field name="lot_stock_id" ref="stock_location_stock"/>
<field name="lot_output_id" ref="stock_location_output"/>
</record>
<record id="sequence_mrp_op_type" model="ir.sequence.type">

View File

@ -251,20 +251,16 @@
</record>
<record id="stock_warehouse_shop0" model="stock.warehouse">
<field name="lot_output_id" ref="stock.stock_location_output"/>
<field name="name">Chicago Warehouse</field>
<field name="lot_stock_id" ref="stock_location_shop0"/>
<field name="partner_id" ref="res_partner_address_41"/>
<field name="company_id" ref="res_company_1"/>
<field name="lot_input_id" ref="stock_location_shop0"/>
</record>
<record id="stock_warehouse_shop1" model="stock.warehouse">
<field name="lot_output_id" ref="stock.stock_location_output"/>
<field name="name">Birmingham Warehouse</field>
<field name="lot_stock_id" ref="stock_location_shop1"/>
<field name="partner_id" ref="res_partner_address_40"/>
<field name="company_id" ref="res_company_1"/>
<field name="lot_input_id" ref="stock_location_shop1"/>
</record>
</data>

View File

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

View File

@ -498,9 +498,7 @@
<h1><field name="name"/></h1>
<group>
<group>
<field name="lot_input_id" groups="stock.group_locations"/>
<field name="lot_stock_id" groups="stock.group_locations"/>
<field name="lot_output_id" groups="stock.group_locations"/>
</group>
<group>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
@ -517,9 +515,7 @@
<field name="arch" type="xml">
<tree string="Warehouse">
<field name="name"/>
<field name="lot_input_id" groups="stock.group_locations"/>
<field name="lot_stock_id" groups="stock.group_locations"/>
<field name="lot_output_id" groups="stock.group_locations"/>
<field name="partner_id"/>
</tree>
</field>