[WIP] remove stock.picking.in and stock.picking.out and replace by picking_type_id

bzr revid: jco@openerp.com-20130723164755-39wldz6jdjkqjvkk
This commit is contained in:
Josse Colpaert 2013-07-23 18:47:55 +02:00
parent f02c1dabf7
commit 15f509178b
35 changed files with 144 additions and 541 deletions

View File

@ -13,7 +13,7 @@
<record id="crm_claim_from_delivery" model="ir.ui.view">
<field name="name">crm.claim.from_delivery.form</field>
<field name="model">stock.picking.out</field>
<field name="inherit_id" ref="stock.view_picking_out_form"/>
<field name="inherit_id" ref="stock.view_picking_form"/>
<field name="arch" type="xml">
<xpath expr="/form/sheet/h1" position="before">
<div class="oe_right oe_button_box">

View File

@ -253,7 +253,7 @@
</field>
</record>
<record id="action_picking_tree4" model="ir.actions.act_window">
<record id="action_picking_tree" model="ir.actions.act_window">
<field name="name">Picking to be invoiced</field>
<field name="res_model">stock.picking.out</field>
<field name="type">ir.actions.act_window</field>
@ -330,7 +330,7 @@
<record id="view_picking_withcarrier_in_form" model="ir.ui.view">
<field name="name">delivery.stock.picking_withcarrier.in.form.view</field>
<field name="model">stock.picking.in</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form"/>
<field name="arch" type="xml">
<field name="company_id" position="before">

View File

@ -899,6 +899,7 @@ class mrp_production(osv.osv):
'move_dest_id': production.move_prod_id.id,
'state': 'waiting',
'company_id': production.company_id.id,
'picking_type_id': self.pool.get("ir.model.data").get_object_reference(cr, uid, 'stock', 'picking_type_internal')[1],
}
move_id = stock_move.create(cr, uid, data, context=context)
production.write({'move_created_ids': [(6, 0, [move_id])]}, context=context)
@ -928,6 +929,7 @@ class mrp_production(osv.osv):
'state': 'waiting',
'company_id': production.company_id.id,
'procure_method': 'make_to_order',
'picking_type_id': self.pool.get("ir.model.data").get_object_reference(cr, uid, 'stock', 'picking_type_internal')[1],
})
production.write({'move_lines': [(4, move_id)]}, context=context)
return move_id

View File

@ -715,10 +715,7 @@
<field name="product_qty"/>
<field name="product_uom" string="Unit of Measure" groups="product.group_uom"/>
<field name="state" invisible="1"/>
<button name="%(stock.action_partial_move_server)d"
string="Partial"
type="action" states="confirmed,assigned"
icon="gtk-justify-fill"/>
<!--TODO: should have a partial picking here-->
</tree>
</field>
</group>

View File

@ -1,5 +1,4 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_stock_picking,stock.picking,stock.model_stock_picking,portal.group_portal,1,0,0,0
access_stock_picking.out,stock.picking.out,stock.model_stock_picking_out,portal.group_portal,1,0,0,0
access_stock_move,stock.move,stock.model_stock_move,portal.group_portal,1,0,0,0
access_stock_warehouse_orderpoint,stock.warehouse.orderpoint,stock.model_stock_warehouse_orderpoint,portal.group_portal,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_stock_picking stock.picking stock.model_stock_picking portal.group_portal 1 0 0 0
access_stock_picking.out stock.picking.out stock.model_stock_picking_out portal.group_portal 1 0 0 0
3 access_stock_move stock.move stock.model_stock_move portal.group_portal 1 0 0 0
4 access_stock_warehouse_orderpoint stock.warehouse.orderpoint stock.model_stock_warehouse_orderpoint portal.group_portal 1 0 0 0

View File

@ -9,13 +9,5 @@
<field name="domain_force">[('message_follower_ids','in',[user.partner_id.id])]</field>
<field name="groups" eval="[(4, ref('portal.group_portal'))]"/>
</record>
<record id="portal_stock_picking_out_user_rule" model="ir.rule">
<field name="name">Portal Personal Out Pickings</field>
<field name="model_id" ref="stock.model_stock_picking_out"/>
<field name="domain_force">[('message_follower_ids','in',[user.partner_id.id])]</field>
<field name="groups" eval="[(4, ref('portal.group_portal'))]"/>
</record>
</data>
</openerp>

View File

@ -60,7 +60,7 @@ Dashboard / Reports for Purchase Management will include:
'purchase_view.xml',
'stock_view.xml',
'partner_view.xml',
'process/purchase_process.xml',
# 'process/purchase_process.xml',
'report/purchase_report_view.xml',
'board_purchase_view.xml',
'edi/purchase_order_action_data.xml',

View File

@ -95,7 +95,7 @@
</record>
<record id="process_node_packinglist0" model="process.node">
<field name="menu_id" ref="stock.menu_action_picking_tree4"/>
<field name="menu_id" ref="stock.menu_action_picking_tree"/>
<field name="model_id" ref="stock.model_stock_picking"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Incoming Products&quot;&quot;&quot;" name="name"/>

View File

@ -192,7 +192,7 @@ class purchase_order(osv.osv):
'validator' : fields.many2one('res.users', 'Validated by', readonly=True),
'notes': fields.text('Terms and Conditions'),
'invoice_ids': fields.many2many('account.invoice', 'purchase_invoice_rel', 'purchase_id', 'invoice_id', 'Invoices', help="Invoices generated for a purchase order"),
'picking_ids': fields.one2many('stock.picking.in', 'purchase_id', 'Picking List', readonly=True, help="This is the list of incoming shipments that have been generated for this purchase order."),
'picking_ids': fields.one2many('stock.picking', 'purchase_id', 'Picking List', readonly=True, help="This is the list of incoming shipments that have been generated for this purchase order."),
'shipped':fields.boolean('Received', readonly=True, select=True, help="It indicates that a picking has been done"),
'shipped_rate': fields.function(_shipped_rate, string='Received Ratio', type='float'),
'invoiced': fields.function(_invoiced, string='Invoice Received', type='boolean', help="It indicates that an invoice has been paid"),
@ -373,7 +373,7 @@ class purchase_order(osv.osv):
for po in self.browse(cr, uid, ids, context=context):
pick_ids += [picking.id for picking in po.picking_ids]
action_model, action_id = tuple(mod_obj.get_object_reference(cr, uid, 'stock', 'action_picking_tree4'))
action_model, action_id = tuple(mod_obj.get_object_reference(cr, uid, 'stock', 'action_picking_tree'))
action = self.pool[action_model].read(cr, uid, action_id, context=context)
ctx = eval(action['context'])
ctx.update({
@ -623,7 +623,7 @@ class purchase_order(osv.osv):
def _prepare_order_picking(self, cr, uid, order, context=None):
return {
'name': self.pool.get('ir.sequence').get(cr, uid, 'stock.picking.in'),
'name': self.pool.get('ir.sequence').get(cr, uid, 'stock.picking'),
'origin': order.name + ((order.origin and (':' + order.origin)) or ''),
'date': self.date_to_datetime(cr, uid, order.date_order, context),
'partner_id': order.dest_address_id.id or order.partner_id.id,

View File

@ -84,8 +84,6 @@
<!--Inventory control-->
<menuitem id="menu_procurement_management_inventory" name="Incoming Products"
parent="base.menu_purchase_root" sequence="4"/>
<menuitem action="stock.action_picking_tree4" id="menu_action_picking_tree4" parent="menu_procurement_management_inventory"
name="Incoming Shipments" sequence="9"/>
<menuitem action="stock.action_reception_picking_move" id="menu_action_picking_tree_in_move"
parent="menu_procurement_management_inventory" sequence="11"/>

View File

@ -43,6 +43,7 @@ class stock_picking(osv.osv):
_columns = {
'purchase_id': fields.many2one('purchase.order', 'Purchase Order',
ondelete='set null', select=True),
'warehouse_id': fields.related('purchase_id', 'warehouse_id', type='many2one', relation='stock.warehouse', string='Destination Warehouse'),
}
_defaults = {
@ -125,28 +126,18 @@ class stock_picking(osv.osv):
if picking.purchase_id:
purchase_obj.write(cursor, user, [picking.purchase_id.id], {'invoice_ids': [(4, invoice_id)]})
return super(stock_picking, self)._invoice_hook(cursor, user, picking, invoice_id)
#
# class stock_partial_picking(osv.osv_memory):
# _inherit = 'stock.partial.picking'
#
# # Overridden to inject the purchase price as true 'cost price' when processing
# # incoming pickings. The price is always stored in the company currency.
# def _product_cost_for_average_update(self, cr, uid, move):
# if move.picking_id.purchase_id:
# currency_obj = self.pool.get("res.currency")
# new_price = currency_obj.compute(cr, uid, move.picking_id.purchase_id.pricelist_id.currency_id.id, move.company_id.currency_id.id,
# move.purchase_line_id.price_unit, round=False)
# return {'cost': new_price}
# return super(stock_partial_picking, self)._product_cost_for_average_update(cr, uid, move)
class stock_partial_picking(osv.osv_memory):
_inherit = 'stock.partial.picking'
# Overridden to inject the purchase price as true 'cost price' when processing
# incoming pickings. The price is always stored in the company currency.
def _product_cost_for_average_update(self, cr, uid, move):
if move.picking_id.purchase_id:
currency_obj = self.pool.get("res.currency")
new_price = currency_obj.compute(cr, uid, move.picking_id.purchase_id.pricelist_id.currency_id.id, move.company_id.currency_id.id,
move.purchase_line_id.price_unit, round=False)
return {'cost': new_price}
return super(stock_partial_picking, self)._product_cost_for_average_update(cr, uid, move)
# Redefinition of the new field in order to update the model stock.picking.in in the orm
# FIXME: this is a temporary workaround because of a framework bug (ref: lp996816). It should be removed as soon as
# the bug is fixed
class stock_picking_in(osv.osv):
_inherit = 'stock.picking.in'
_columns = {
'purchase_id': fields.many2one('purchase.order', 'Purchase Order',
ondelete='set null', select=True),
'warehouse_id': fields.related('purchase_id', 'warehouse_id', type='many2one', relation='stock.warehouse', string='Destination Warehouse'),
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -14,7 +14,7 @@
<record id="stock_picking_in_inherit_purchase" model="ir.ui.view">
<field name="name">Incoming Picking Inherited</field>
<field name="model">stock.picking.in</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='date']" position="before">
@ -28,8 +28,8 @@
<record id="view_picking_in_search_picking_inherit" model="ir.ui.view">
<field name="name">stock.picking.in.search.inherit</field>
<field name="model">stock.picking.in</field>
<field name="inherit_id" ref="stock.view_picking_in_search"/>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_internal_search"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='product_id']" position="before">
<field name="purchase_id"/>
@ -55,15 +55,15 @@
</field>
</record>
<record id="action_picking_tree4_picking_to_invoice" model="ir.actions.act_window">
<record id="action_picking_tree_picking_to_invoice" model="ir.actions.act_window">
<field name="name">On Incoming Shipments</field>
<field name="res_model">stock.picking.in</field>
<field name="res_model">stock.picking</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar</field>
<field name="domain">[('type','=','in'),('purchase_id.invoice_method','=','picking')]</field>
<field name="domain">[('purchase_id.invoice_method','=','picking')]</field>
<field name="context">{"default_type": "in", "contact_display": "partner_address", "search_default_done": 1, "search_default_to_invoice": 1}</field>
<field name="search_view_id" ref="stock.view_picking_in_search"/>
<field name="search_view_id" ref="stock.view_picking_internal_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a new incoming shipment.
@ -76,8 +76,8 @@
</field>
</record>
<menuitem action="action_picking_tree4_picking_to_invoice"
id="menu_action_picking_tree4_picking_to_invoice"
<menuitem action="action_picking_tree_picking_to_invoice"
id="menu_action_picking_tree_picking_to_invoice"
parent="purchase.menu_procurement_management_invoice" sequence="90"/>
</data>
</openerp>

View File

@ -61,7 +61,7 @@ class picking(osv.osv):
}
class stock_picking_in(osv.osv):
_inherit = "stock.picking.in"
_inherit = "stock.picking"
_columns = {
'invoice_type_id': fields.many2one('sale_journal.invoice.type', 'Invoice Type', readonly=True)
}

View File

@ -98,7 +98,7 @@
<record model="ir.ui.view" id="sale_journal_picking_order_in">
<field name="name">stock.picking.journal.view.form</field>
<field name="model">stock.picking.in</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_in_form" />
<field name="arch" type="xml">
<field name="move_type" position="before">
@ -109,7 +109,7 @@
<record model="ir.ui.view" id="sale_journal_picking_order_tree_in">
<field name="name">stock.picking.journal.view.tree</field>
<field name="model">stock.picking.in</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_in_tree" />
<field name="arch" type="xml">
<field name="state" position="before">
@ -120,8 +120,8 @@
<record model="ir.ui.view" id="sale_journal_picking_order_out">
<field name="name">stock.picking.journal.view.form</field>
<field name="model">stock.picking.out</field>
<field name="inherit_id" ref="stock.view_picking_out_form" />
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form" />
<field name="arch" type="xml">
<field name="move_type" position="before">
<field name="invoice_type_id"/>
@ -131,7 +131,7 @@
<record model="ir.ui.view" id="sale_journal_picking_order_tree_out">
<field name="name">stock.picking.journal.view.tree</field>
<field name="model">stock.picking.out</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_out_tree" />
<field name="arch" type="xml">
<field name="state" position="before">
@ -178,8 +178,8 @@
<record id="view_picking_out_search" model="ir.ui.view">
<field name="name">stock.picking.out.search.inherit</field>
<field name="model">stock.picking.out</field>
<field name="inherit_id" ref="stock.view_picking_out_search"/>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_internal_search"/>
<field name="arch" type="xml">
<xpath expr="//group/filter[@string='Journal']" position="after">
<filter string="Invoice Type" domain="[]" context="{'group_by':'invoice_type_id'}"/>
@ -189,7 +189,7 @@
<record id="view_picking_in_search" model="ir.ui.view">
<field name="name">stock.picking.in.search.inherit</field>
<field name="model">stock.picking.in</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_in_search"/>
<field name="arch" type="xml">
<xpath expr="//group/filter[@string='Journal']" position="after">

View File

@ -63,7 +63,7 @@ class sale_order(osv.osv):
#TODO: not better to use picking
pickingstates = []
for pick in sale.picking_ids:
pickingstates += [x.state not in ['cancel', 'done'] for x in pick.move_lines]
pickingstates += [x.state not in ['cancel', 'done'] for x in pick.move_lines if x]
if any(pickingstates):
res[sale.id] = False
return res
@ -175,7 +175,7 @@ class sale_order(osv.osv):
if len(pick_ids) > 1:
result['domain'] = "[('id','in',["+','.join(map(str, pick_ids))+"])]"
else:
res = mod_obj.get_object_reference(cr, uid, 'stock', 'view_picking_out_form')
res = mod_obj.get_object_reference(cr, uid, 'stock', 'view_picking_form')
result['views'] = [(res and res[1] or False, 'form')]
result['res_id'] = pick_ids and pick_ids[0] or False
return result

View File

@ -118,13 +118,4 @@ class stock_picking(osv.osv):
self.pool.get('sale.order').message_post(cr, uid, [record.sale_id.id], body=_("Products delivered"), context=context)
return super(stock_picking, self).action_done(cr, uid, ids, context=context)
# Redefinition of the new field in order to update the model stock.picking.out in the orm
# FIXME: this is a temporary workaround because of a framework bug (ref: lp996816). It should be removed as soon as
# the bug is fixed
class stock_picking_out(osv.osv):
_inherit = 'stock.picking.out'
_columns = {
'sale_id': fields.many2one('sale.order', 'Sale Order',
ondelete='set null', select=True),
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -32,7 +32,7 @@
<record id="action_sale_picking_out_form_view" model="ir.actions.act_window.view">
<field eval="2" name="sequence"/>
<field name="view_mode">form</field>
<field name="view_id" ref="stock.view_picking_out_form"/>
<field name="view_id" ref="stock.view_picking_form"/>
<field name="act_window_id" ref="act_sale_order_2_stock_picking"/>
</record>
-->
@ -41,8 +41,8 @@
<record id="stock_picking_out_inherit_sale" model="ir.ui.view">
<field name="name">Outgoing picking Inherited</field>
<field name="model">stock.picking.out</field>
<field name="inherit_id" ref="stock.view_picking_out_form"/>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form"/>
<field name="arch" type="xml">
<field name="move_type" position="after">
<field name="sale_id"/>
@ -57,9 +57,9 @@
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar</field>
<field name="domain">[('type','=','out')]</field>
<field name="domain">[('location_id.usage','=','internal'), ('location_dest_id.usage','!=','internal')]</field>
<field name="context">{'default_type': 'out', 'contact_display': 'partner_address', 'search_default_to_invoice': 1, 'search_default_done': 1, 'default_invoice_state': '2binvoiced'}</field>
<field name="search_view_id" ref="stock.view_picking_out_search"/>
<field name="search_view_id" ref="stock.view_picking_internal_search"/>
</record>
<menuitem action="outgoing_picking_list_to_invoice" id="menu_action_picking_list_to_invoice" parent="base.menu_invoiced" groups="sale_stock.group_invoice_deli_orders" sequence="20"/>

View File

@ -40,7 +40,7 @@ class procurement_rule(osv.osv):
'location_id': fields.many2one('stock.location', 'Destination Location'),
'location_src_id': fields.many2one('stock.location', 'Source Location',
help="Source location is action=move"),
'picking_type_id': fields.many2one('stock.picking.type', 'Picking Type',
'picking_type_id': fields.many2one('stock.picking.type', 'Picking Type', required=True,
help="Picking Type determines the way the picking should be shown in the view, reports, ...")
}
@ -83,7 +83,7 @@ class procurement_order(osv.osv):
'move_dest_id': procurement.move_dest_id and procurement.move_dest_id.id or False,
#'cancel_cascade': procurement.rule_id and procurement.rule_id.cancel_cascade or False,
'group_id': procurement.group_id and procurement.group_id.id or False,
'picking_type': self.pool.get('stock.move').get_type_from_usage(cr, uid, procurement.rule_id.location_src_id, procurement.rule_id.location_id, context=context)
'picking_type_id': procurement.rule_id.picking_type_id.id,
}
def _run(self, cr, uid, procurement, context=None):

View File

@ -9,11 +9,7 @@ access_stock_location_user,stock.location.user,model_stock_location,base.group_u
access_stock_journal_user,stock.journal.user,model_stock_journal,base.group_user,1,0,0,0
access_stock_journal_manager,stock.journal.manager,model_stock_journal,stock.group_stock_manager,1,1,1,1
access_stock_picking_user,stock.picking user,model_stock_picking,stock.group_stock_user,1,1,1,1
access_stock_picking_in_user,stock.picking.in,model_stock_picking_in,stock.group_stock_user,1,1,1,1
access_stock_picking_out_user,stock.picking.out,model_stock_picking_out,stock.group_stock_user,1,1,1,1
access_stock_picking_manager,stock.picking manager,model_stock_picking,stock.group_stock_manager,1,1,0,0
access_stock_picking_in_manager,stock.picking.in manager,model_stock_picking_in,stock.group_stock_manager,1,0,0,0
access_stock_picking_out_manager,stock.picking.out manager,model_stock_picking_out,stock.group_stock_manager,1,0,0,0
access_stock_production_lot_manager,stock.production.lot manager,model_stock_production_lot,stock.group_stock_manager,1,0,0,0
access_stock_production_lot_user,stock.production.lot user,model_stock_production_lot,stock.group_stock_user,1,1,1,1
access_stock_move_manager,stock.move manager,model_stock_move,stock.group_stock_manager,1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
9 access_stock_journal_user stock.journal.user model_stock_journal base.group_user 1 0 0 0
10 access_stock_journal_manager stock.journal.manager model_stock_journal stock.group_stock_manager 1 1 1 1
11 access_stock_picking_user stock.picking user model_stock_picking stock.group_stock_user 1 1 1 1
access_stock_picking_in_user stock.picking.in model_stock_picking_in stock.group_stock_user 1 1 1 1
access_stock_picking_out_user stock.picking.out model_stock_picking_out stock.group_stock_user 1 1 1 1
12 access_stock_picking_manager stock.picking manager model_stock_picking stock.group_stock_manager 1 1 0 0
access_stock_picking_in_manager stock.picking.in manager model_stock_picking_in stock.group_stock_manager 1 0 0 0
access_stock_picking_out_manager stock.picking.out manager model_stock_picking_out stock.group_stock_manager 1 0 0 0
13 access_stock_production_lot_manager stock.production.lot manager model_stock_production_lot stock.group_stock_manager 1 0 0 0
14 access_stock_production_lot_user stock.production.lot user model_stock_production_lot stock.group_stock_user 1 1 1 1
15 access_stock_move_manager stock.move manager model_stock_move stock.group_stock_manager 1 1 1 1

View File

@ -440,7 +440,7 @@ class stock_picking(osv.osv):
'name': fields.char('Reference', size=64, select=True, states={'done':[('readonly', True)], 'cancel':[('readonly',True)]}),
'origin': fields.char('Source Document', size=64, states={'done':[('readonly', True)], 'cancel':[('readonly',True)]}, help="Reference of the document", select=True),
'backorder_id': fields.many2one('stock.picking', 'Back Order of', states={'done':[('readonly', True)], 'cancel':[('readonly',True)]}, help="If this shipment was split, then this field links to the shipment which contains the already processed part.", select=True),
'type': fields.selection([('out', 'Sending Goods'), ('in', 'Getting Goods'), ('internal', 'Internal')], 'Shipping Type', required=True, select=True, help="Shipping type specify, goods coming in or going out."),
#'type': fields.selection([('out', 'Sending Goods'), ('in', 'Getting Goods'), ('internal', 'Internal')], 'Shipping Type', required=True, select=True, help="Shipping type specify, goods coming in or going out."),
'note': fields.text('Notes', states={'done':[('readonly', True)], 'cancel':[('readonly',True)]}),
'stock_journal_id': fields.many2one('stock.journal','Stock Journal', select=True, states={'done':[('readonly', True)], 'cancel':[('readonly',True)]}),
'move_type': fields.selection([('direct', 'Partial'), ('one', 'All at once')], 'Delivery Method', required=True, states={'done':[('readonly', True)], 'cancel':[('readonly',True)]}, help="It specifies goods to be deliver partially or all at once"),
@ -470,13 +470,13 @@ class stock_picking(osv.osv):
'partner_id': fields.many2one('res.partner', 'Partner', states={'done':[('readonly', True)], 'cancel':[('readonly',True)]}),
'company_id': fields.many2one('res.company', 'Company', required=True, select=True, states={'done':[('readonly', True)], 'cancel':[('readonly',True)]}),
'pack_operation_ids': fields.one2many('stock.pack.operation', 'picking_id', string='Related Packing Operations'),
'picking_type_id': fields.many2one('stock.picking.type', string="Picking Type"),
# Used to search a product on pickings
'product_id': fields.related('move_lines', 'product_id', type='many2one', relation='product.product', string='Product'),
'location_id': fields.related('move_lines', 'location_id', type='many2one', relation='stock.location', string='Location'),
'location_dest_id': fields.related('move_lines', 'location_dest_id', type='many2one', relation='stock.location', string='Destination Location'),
'group_id': fields.related('move_lines', 'group_id', type='many2one', relation='procurement.group', string='Procurement Group'),
'group_id': fields.related('move_lines', 'group_id', type='many2one', relation='procurement.group', string='Procurement Group'),
'picking_type_id': fields.related('move_lines', 'picking_type_id', type='many2one', relation='stock.picking.type', string="Picking Type"),
}
_defaults = {
'name': lambda self, cr, uid, context: '/',
@ -484,7 +484,6 @@ class stock_picking(osv.osv):
'partner_id': lambda self, cr, uid, context: self.pool.get('stock.move')._default_destination_address(cr, uid, context=context),
'state': 'draft',
'move_type': 'direct',
'type': 'internal',
'date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'stock.picking', context=c)
}
@ -504,14 +503,6 @@ class stock_picking(osv.osv):
default['backorder_id'] = False
return super(stock_picking, self).copy(cr, uid, id, default, context)
def fields_view_get(self, cr, uid, view_id=None, view_type=False, context=None, toolbar=False, submenu=False):
if view_type == 'form' and not view_id:
mod_obj = self.pool.get('ir.model.data')
if self._name == "stock.picking.in":
model, view_id = mod_obj.get_object_reference(cr, uid, 'stock', 'view_picking_in_form')
if self._name == "stock.picking.out":
model, view_id = mod_obj.get_object_reference(cr, uid, 'stock', 'view_picking_out_form')
return super(stock_picking, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu)
def action_confirm(self, cr, uid, ids, context=None):
""" Confirms picking.
@ -760,18 +751,14 @@ class stock_picking(osv.osv):
self.make_packaging(cr, uid, picking.id, todo_move_ids, context=context)
# views associated to each picking type
_VIEW_LIST = {
'out': 'view_picking_out_form',
'in': 'view_picking_in_form',
'internal': 'view_picking_form',
}
def _get_view_id(self, cr, uid, type):
"""Get the view id suiting the given type
@param type: the picking type as a string
@return: view i, or False if no view found
"""
res = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'stock', self._VIEW_LIST.get(type, 'view_picking_form'))
res = self.pool.get('ir.model.data').get_object_reference(cr, uid,
'stock', 'view_picking_form')
return res and res[1] or False
def _get_picking_for_packing_ui(self, cr, uid, context=None):
@ -1014,8 +1001,9 @@ class stock_move(osv.osv):
# used for colors in tree views:
'scrapped': fields.related('location_dest_id','scrap_location',type='boolean',relation='stock.location',string='Scrapped', readonly=True),
'type': fields.related('picking_id', 'type', type='selection', selection=[('out', 'Sending Goods'), ('in', 'Getting Goods'), ('internal', 'Internal')], string='Shipping Type'),
'quant_ids': fields.many2many('stock.quant', 'stock_quant_move_rel', 'move_id', 'quant_id', 'Quants'),
'picking_type_id': fields.many2one('stock.picking.type', 'Picking Type', help="The picking type will be used for composing the views and reports the related picking", required=True),
#'type': fields.related('picking_id', 'type', type='selection', selection=[('out', 'Sending Goods'), ('in', 'Getting Goods'), ('internal', 'Internal')], string='Shipping Type'),
'quant_ids': fields.many2many('stock.quant', 'stock_quant_move_rel', 'move_id', 'quant_id', 'Quants'),
'reserved_quant_ids': fields.one2many('stock.quant', 'reservation_id', 'Reserved quants'),
'remaining_qty': fields.function(_get_remaining_qty, type='float', string='Remaining Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), states={'done': [('readonly', True)]}),
'group_id': fields.many2one('procurement.group', 'Procurement Group'),
@ -1126,7 +1114,7 @@ class stock_move(osv.osv):
'location_id': _default_location_source,
'location_dest_id': _default_location_destination,
'partner_id': _default_destination_address,
'type': _default_move_type,
# 'picking_type_id': lambda self, cr, uid, c: self.pool.get('ir.model.data').get_object_reference(cr, uid, 'stock', 'picking_type_internal')[1],
'state': 'draft',
'priority': '1',
'product_qty': 1.0,
@ -1293,7 +1281,7 @@ class stock_move(osv.osv):
result['location_dest_id'] = loc_dest_id
return {'value': result}
def onchange_move_type(self, cr, uid, ids, type, context=None):
def onchange_move_type(self, cr, uid, ids, picking_type_id, context=None):
""" On change of move type gives sorce and destination location.
@param type: Move Type
@return: Dictionary of values
@ -1301,6 +1289,7 @@ class stock_move(osv.osv):
mod_obj = self.pool.get('ir.model.data')
location_source_id = 'stock_location_stock'
location_dest_id = 'stock_location_stock'
type="internal"
if type == 'in':
location_source_id = 'stock_location_suppliers'
location_dest_id = 'stock_location_stock'
@ -1337,7 +1326,7 @@ class stock_move(osv.osv):
original_picking = pick_obj.browse(cr, uid, context.get('backorder_of'), context=context)
new_picking_name = original_picking.name
#TODO back_order_name is False currently => find why
back_order_name = sequence_obj.get(cr, uid, 'stock.picking.%s' % (original_picking.type))
back_order_name = sequence_obj.get(cr, uid, 'stock.picking') #TODO: Need to have sequence for every picking type
pick_obj.write(cr, uid, [original_picking.id], {'name': back_order_name})
pick = pick_obj.copy(cr, uid, original_picking.id, {'name': new_picking_name,
'move_lines': [],
@ -1350,7 +1339,7 @@ class stock_move(osv.osv):
#a backorder picking doesn't exist yet, create a new one
values = {'origin': move.origin,
'company_id': move.company_id and move.company_id.id or False,
'type': 'internal',
# 'type': 'internal',
'move_type': 'one',
'partner_id': move.partner_id and move.partner_id.id or False,
#'invoice_state': move.invoice_state
@ -1872,7 +1861,8 @@ class stock_inventory(osv.osv):
'product_id': line.product_id.id,
'product_uom': line.product_uom.id,
'date': inv.date,
'company_id': line.location_id.company_id.id
'company_id': line.location_id.company_id.id,
'picking_type_id': self.pool.get('ir.model.data').get_object_reference(cr, uid, 'stock', 'picking_type_inventory')[1],
}
if change > 0:
@ -1978,95 +1968,6 @@ class stock_warehouse(osv.osv):
}
#----------------------------------------------------------
# "Empty" Classes that are used to vary from the original stock.picking (that are dedicated to the internal pickings)
# in order to offer a different usability with different views, labels, available reports/wizards..
# --> TO BE REPLACED by stock_picking_type
#----------------------------------------------------------
class stock_picking_in(osv.osv):
_name = "stock.picking.in"
_inherit = "stock.picking"
_table = "stock_picking"
_description = "Incoming Shipments"
# def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False):
# return self.pool.get('stock.picking').search(cr, user, args, offset, limit, order, context, count)
#
# def read(self, cr, uid, ids, fields=None, context=None, load='_classic_read'):
# return self.pool.get('stock.picking').read(cr, uid, ids, fields=fields, context=context, load=load)
def check_access_rights(self, cr, uid, operation, raise_exception=True):
#override in order to redirect the check of acces rights on the stock.picking object
return self.pool.get('stock.picking').check_access_rights(cr, uid, operation, raise_exception=raise_exception)
def check_access_rule(self, cr, uid, ids, operation, context=None):
#override in order to redirect the check of acces rules on the stock.picking object
return self.pool.get('stock.picking').check_access_rule(cr, uid, ids, operation, context=context)
_columns = {
'backorder_id': fields.many2one('stock.picking.in', 'Back Order of', states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}, help="If this shipment was split, then this field links to the shipment which contains the already processed part.", select=True),
'state': fields.selection(
[('draft', 'Draft'),
('auto', 'Waiting Another Operation'),
('confirmed', 'Waiting Availability'),
('assigned', 'Ready to Receive'),
('done', 'Received'),
('cancel', 'Cancelled')],
'Status', readonly=True, select=True,
help="""* Draft: not confirmed yet and will not be scheduled until confirmed\n
* Waiting Another Operation: waiting for another move to proceed before it becomes automatically available (e.g. in Make-To-Order flows)\n
* Waiting Availability: still waiting for the availability of products\n
* Ready to Receive: products reserved, simply waiting for confirmation.\n
* Received: has been processed, can't be modified or cancelled anymore\n
* Cancelled: has been cancelled, can't be confirmed anymore"""),
}
_defaults = {
'type': 'in',
}
class stock_picking_out(osv.osv):
_name = "stock.picking.out"
_inherit = "stock.picking"
_table = "stock_picking"
_description = "Delivery Orders"
# def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False):
# return self.pool.get('stock.picking').search(cr, user, args, offset, limit, order, context, count)
#
# def read(self, cr, uid, ids, fields=None, context=None, load='_classic_read'):
# return self.pool.get('stock.picking').read(cr, uid, ids, fields=fields, context=context, load=load)
def check_access_rights(self, cr, uid, operation, raise_exception=True):
#override in order to redirect the check of acces rights on the stock.picking object
return self.pool.get('stock.picking').check_access_rights(cr, uid, operation, raise_exception=raise_exception)
def check_access_rule(self, cr, uid, ids, operation, context=None):
#override in order to redirect the check of acces rules on the stock.picking object
return self.pool.get('stock.picking').check_access_rule(cr, uid, ids, operation, context=context)
_columns = {
'backorder_id': fields.many2one('stock.picking.out', 'Back Order of', states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}, help="If this shipment was split, then this field links to the shipment which contains the already processed part.", select=True),
'state': fields.selection(
[('draft', 'Draft'),
('auto', 'Waiting Another Operation'),
('confirmed', 'Waiting Availability'),
('assigned', 'Ready to Deliver'),
('done', 'Delivered'),
('cancel', 'Cancelled')],
'Status', readonly=True, select=True,
help="""* Draft: not confirmed yet and will not be scheduled until confirmed\n
* Waiting Another Operation: waiting for another move to proceed before it becomes automatically available (e.g. in Make-To-Order flows)\n
* Waiting Availability: still waiting for the availability of products\n
* Ready to Deliver: products reserved, simply waiting for confirmation.\n
* Delivered: has been processed, can't be modified or cancelled anymore\n
* Cancelled: has been cancelled, can't be confirmed anymore"""),
}
_defaults = {
'type': 'out',
}
# -------------------------
# Packaging related stuff
# -------------------------
@ -2410,7 +2311,8 @@ class stock_picking_type(osv.osv):
_columns = {
'name': fields.char('name', size=30),
'pack': fields.boolean('Pack', 'This picking type needs packing interface'),
'print_delivery': fields.boolean('Print delivery'),
'delivery': fields.boolean('Print delivery'),
}

View File

@ -98,27 +98,11 @@ watch your stock valuation, and track production lots upstream and downstream (b
<field name="location_id" ref="stock_location_company"/>
</record>
<!--
Procurement rules
-->
<record id="procurement_rule_customer0" model="procurement.rule">
<field name="name">Output > Customer</field>
<field name="action">move</field>
<field name="location_id" ref="stock_location_customers"/>
<field name="location_src_id" ref="stock_location_output"/>
</record>
<record id="procurement_rule_customer1" model="procurement.rule">
<field name="name">Stock > Output</field>
<field name="action">move</field>
<field name="location_id" ref="stock_location_output"/>
<field name="location_src_id" ref="stock_location_stock"/>
</record>
<!--
Picking types
-->
<record id="picking_type_in" model="stock.picking.type">
<field name="name">in</field>
</record>
@ -128,6 +112,24 @@ watch your stock valuation, and track production lots upstream and downstream (b
<record id="picking_type_internal" model="stock.picking.type">
<field name="name">internal</field>
</record>
<record id="picking_type_inventory" model="stock.picking.type">
<field name="name">inventory</field>
</record>
<!--
Procurement rules
-->
<record id="procurement_rule_customer0" model="procurement.rule">
<field name="name">Stock > Customer</field>
<field name="action">move</field>
<field name="location_id" ref="stock_location_customers"/>
<field name="location_src_id" ref="stock_location_stock"/>
<field name="picking_type_id" ref="picking_type_out"/>
</record>
<!--
Properties

View File

@ -66,11 +66,11 @@
location_id: location_refrigerator
-
!record {model: stock.picking, id: outgoing_shipment}:
type: out
location_dest_id: location_delivery_counter
-
!record {model: stock.move, id: outgoing_shipment_icecream}:
picking_id: outgoing_shipment
picking_type_id: picking_type_out
product_id: product_icecream
product_uom: product.product_uom_kgm
product_uom_qty: 130.0
@ -78,12 +78,12 @@
location_dest_id: location_delivery_counter
-
!record {model: stock.picking, id: incomming_shipment}:
type: in
partner_id: base.res_partner_address_9
location_dest_id: location_refrigerator
-
!record {model: stock.move, id: incomming_shipment_icecream}:
picking_id: incomming_shipment
picking_type_id: picking_type_in
product_id: product_icecream
product_uom: product.product_uom_kgm
product_uom_qty: 50.0

View File

@ -4,8 +4,8 @@
<report auto="False" id="report_product_history" model="product.product" name="stock.product.history" string="Stock Level Forecast"/>
<report id="report_picking_list" model="stock.picking" name="stock.picking.list.internal" string="Picking Slip" rml="stock/report/picking_internal.rml"/>
<report id="report_quant_package_barcode" model="stock.quant.package" name="stock.quant.package.barcode" string="Picking BarCode" rml="stock/report/picking_barcode.rml"/>
<report id="report_picking_list_in" model="stock.picking.in" name="stock.picking.list" string="Receipt Slip" rml="stock/report/picking.rml"/>
<report id="report_picking_list_out" model="stock.picking.out" name="stock.picking.list" string="Delivery Slip" rml="stock/report/picking.rml"/>
<report id="report_picking_list_in" model="stock.pickin" name="stock.picking.list" string="Receipt Slip" rml="stock/report/picking.rml"/>
<report id="report_picking_list_out" model="stock.picking" name="stock.picking.list" string="Delivery Slip" rml="stock/report/picking.rml"/>
<report id="report_move_labels" model="stock.move" name="stock.move.label" string="Item Labels" xml="stock/report/lot_move_label.xml" xsl="stock/report/lot_move_label.xsl"/>
<report auto="False" id="report_location_overview" model="stock.location" name="lot.stock.overview" string="Location Inventory Overview" rml="stock/report/lot_overview.rml"/>
<report id="report_location_overview_all" model="stock.location" name="lot.stock.overview_all" string="Location Content" rml="stock/report/lot_overview_all.rml"/>

View File

@ -24,7 +24,7 @@
Sequences for pickings
-->
<record id="seq_picking_in" model="ir.sequence">
<!--<record id="seq_picking_in" model="ir.sequence">
<field name="name">Picking IN</field>
<field name="code">stock.picking.in</field>
<field name="prefix">IN/</field>
@ -38,7 +38,7 @@
<field name="prefix">OUT/</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
</record>
</record>-->
<record id="seq_picking_internal" model="ir.sequence">
<field name="name">Picking INT</field>

View File

@ -554,7 +554,7 @@
<field name="arch" type="xml">
<calendar string="Calendar View" date_start="min_date" date_stop="max_date" color="partner_id">
<field name="origin"/>
<field name="type"/>
<field name="picking_type_id"/>
<field name="partner_id"/>
</calendar>
</field>
@ -629,7 +629,7 @@
<group>
<group>
<field name="move_type"/>
<field name="type" invisible="1"/>
<field name="picking_type_id"/>
<field name="auto_picking" groups="base.group_user"/>
</group>
<group>
@ -671,13 +671,13 @@
</field>
</record>
<record id="action_picking_tree6" model="ir.actions.act_window">
<record id="action_picking_tree" model="ir.actions.act_window">
<field name="name">Internal Moves</field>
<field name="res_model">stock.picking</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar</field>
<field name="domain">[('type','=','internal')]</field>
<field name="domain"></field>
<field name="context">{'contact_display': 'partner_address', 'search_default_available': 1}</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
@ -691,270 +691,22 @@
</field>
</record>
<record model="ir.actions.act_window.view" id="action_picking_tree6_tree_view">
<record model="ir.actions.act_window.view" id="action_picking_tree_tree_view">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="vpicktree"/>
<field name="act_window_id" ref="action_picking_tree6"/>
<field name="act_window_id" ref="action_picking_tree"/>
</record>
<record model="ir.actions.act_window.view" id="action_picking_tree6_form_view">
<record model="ir.actions.act_window.view" id="action_picking_tree_form_view">
<field name="sequence" eval="2"/>
<field name="view_mode">form</field>
<field name="view_id" ref="view_picking_form"/>
<field name="act_window_id" ref="action_picking_tree6"/>
</record>
<!-- Sending Products -->
<record model="ir.ui.view" id="stock_picking_out_calendar">
<field name="name">stock.picking.out.calendar</field>
<field name="model">stock.picking.out</field>
<field name="priority" eval="2"/>
<field name="arch" type="xml">
<calendar string="Calendar View" date_start="min_date" date_stop="max_date" color="partner_id">
<field name="origin"/>
<field name="type"/>
<field name="partner_id"/>
</calendar>
</field>
</record>
<record id="view_picking_out_tree" model="ir.ui.view">
<field name="name">stock.picking.out.tree</field>
<field name="model">stock.picking.out</field>
<field name="arch" type="xml">
<tree colors="blue:state == 'draft';grey:state == 'cancel';red:state not in ('cancel', 'done') and min_date &lt; current_date" string="Delivery Orders">
<field name="name"/>
<field name="partner_id" string="Customer"/>
<field name="origin"/>
<field name="min_date"/>
<field name="date"/>
<field name="backorder_id"/>
<field name="stock_journal_id"/>
<field name="state"/>
</tree>
</field>
</record>
<record id="view_picking_out_form" model="ir.ui.view">
<field name="name">stock.picking.out.form</field>
<field name="model">stock.picking.out</field>
<field name="inherit_id" ref="view_picking_form"/>
<field name="arch" type="xml">
<field name="date_done" position="attributes" version="7.0">
<attribute name="string">Date of Delivery</attribute>
</field>
<xpath expr="/form/header//button[@name='%(act_stock_return_picking)d']" position="replace">
<button name="%(report_picking_list_out)d" string="Print Delivery Slip" type="action" states="done" class="oe_highlight"/>
<button name="%(act_stock_return_picking)d" string="Return Products" states="done" type="action"/>
</xpath>
<xpath expr="/form/header//button[@name='draft_validate']" position="replace">
<button name="draft_validate" states="draft" string="Confirm &amp; Deliver" type="object" class="oe_highlight"/>
<button name="action_assign" states="confirmed" string="Check Availability" type="object" class="oe_highlight"/>
</xpath>
<xpath expr="/form/header//button[@name='do_partial']" position="replace">
<button name="do_partial" states="assigned" string="Deliver" type="object" class="oe_highlight"/>
</xpath>
<xpath expr="/form/header//field[@name='state']" position="replace">
<field name="state" nolabel="1" readonly="1" widget="statusbar" statusbar_visible="draft,confirmed,assigned,done" statusbar_colors='{"auto":"blue", "confirmed":"blue"}'/>
</xpath>
<xpath expr="//field[@name='move_lines']" position="replace">
<field name="move_lines" context="{'address_out_id': partner_id, 'picking_type': 'out', 'form_view_ref':'view_move_picking_form', 'tree_view_ref':'view_move_picking_tree'}"/>
</xpath>
<xpath expr="/form/sheet" position="after">
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</xpath>
</field>
</record>
<record id="view_picking_out_search" model="ir.ui.view">
<field name="name">stock.picking.out.search</field>
<field name="model">stock.picking</field>
<field name="arch" type="xml">
<search string="Picking list">
<field name="name" string="Picking List" filter_domain="['|',('name','ilike', self),('origin','ilike',self)]"/>
<filter icon="terp-check" name="available" string="Ready" domain="[('state','=','assigned')]" help="Assigned Delivery Orders"/>
<filter icon="terp-camera_test" name="confirmed" string="Waiting" domain="[('state','=','confirmed')]" help="Confirmed Delivery Orders"/>
<filter icon="terp-dialog-close" name="done" string="Done" domain="[('state','=','done')]" help="Delivery orders already processed"/>
<separator/>
<filter icon="terp-accessories-archiver-minus" string="Back Orders" domain="[('backorder_id', '!=', False)]" help="Is a Back Order"/>
<separator/>
<field name="partner_id" filter_domain="[('partner_id','child_of',self)]"/>
<field name="stock_journal_id"/>
<field name="company_id" groups="base.group_multi_company"/>
<group expand="0" string="Group By...">
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
<filter string="Order Date" icon="terp-go-month" domain="[]" context="{'group_by':'date'}"/>
<filter string="Expected Date" icon="terp-go-month" domain="[]" context="{'group_by':'min_date'}"/>
<filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'stock_journal_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_picking_tree" model="ir.actions.act_window">
<field name="name">Delivery Orders</field>
<field name="res_model">stock.picking.out</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar</field>
<field name="domain">[('type','=','out')]</field>
<field name="context">{'default_type': 'out', 'contact_display': 'partner_address'}</field>
<field name="search_view_id" ref="view_picking_out_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a delivery order.
</p><p>
This is the list of all delivery orders that have to be
prepared, according to your different sales orders and your
logistics rules.
</p>
</field>
</record>
<record id="action_picking_tree_out_view1_waiting" model="ir.actions.act_window.view">
<field eval="1" name="sequence"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="view_picking_out_tree"/>
<field name="act_window_id" ref="action_picking_tree"/>
</record>
<record id="action_picking_tree_out_view2_waiting" model="ir.actions.act_window.view">
<field eval="2" name="sequence"/>
<field name="view_mode">form</field>
<field name="view_id" ref="view_picking_out_form"/>
<field name="act_window_id" ref="action_picking_tree"/>
</record>
<record id="action_picking_tree_out_view2_waiting_cal" model="ir.actions.act_window.view">
<field eval="3" name="sequence"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="stock_picking_out_calendar"/>
<field name="act_window_id" ref="action_picking_tree"/>
</record>
<menuitem action="action_picking_tree" id="menu_action_picking_tree" parent="menu_stock_warehouse_mgmt" sequence="3"/>
<!-- Incomming Shipments -->
<record model="ir.ui.view" id="stock_picking_in_calendar">
<field name="name">stock.picking.in.calendar</field>
<field name="model">stock.picking.in</field>
<field name="priority" eval="2"/>
<field name="arch" type="xml">
<calendar string="Calendar View" date_start="min_date" date_stop="max_date" color="partner_id">
<field name="origin"/>
<field name="type"/>
<field name="partner_id"/>
</calendar>
</field>
</record>
<record id="view_picking_in_tree" model="ir.ui.view">
<field name="name">stock.picking.in.tree</field>
<field name="model">stock.picking.in</field>
<field name="arch" type="xml">
<tree colors="blue:state == 'draft';grey:state == 'done';red:state not in ('cancel', 'done') and date &lt; current_date" string="Picking list">
<field name="name"/>
<field name="partner_id" string="Supplier"/>
<field name="backorder_id"/>
<field name="origin"/>
<field name="date"/>
<field name="min_date"/>
<field name="stock_journal_id" widget="selection"/>
<field name="state"/>
</tree>
</field>
</record>
<record id="view_picking_in_form" model="ir.ui.view">
<field name="name">stock.picking.in.form</field>
<field name="model">stock.picking.in</field>
<field name="inherit_id" ref="view_picking_form"/>
<field name="arch" type="xml">
<field name="date_done" position="attributes" version="7.0">
<attribute name="string">Date of Reception</attribute>
</field>
<xpath expr="/form/header//button[@name='%(act_stock_return_picking)d']" position="replace">
<button name="%(act_stock_return_picking)d" string="Return Products" states="done" type="action"/>
</xpath>
<xpath expr="//button[@name='draft_validate']" position="replace">
<button name="draft_validate" states="draft" string="Confirm &amp; Receive" type="object" class="oe_highlight"/>
</xpath>
<xpath expr="//button[@name='do_partial']" position="replace">
<button name="do_partial" states="assigned" string="Receive" type="object" class="oe_highlight"/>
</xpath>
<xpath expr="//field[@name='move_lines']" position="replace">
<field name="move_lines" context="{'address_in_id': partner_id, 'picking_type': 'in', 'form_view_ref':'view_move_picking_form', 'tree_view_ref':'view_move_picking_tree'}"/>
</xpath>
<xpath expr="/form/sheet" position="after">
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</xpath>
</field>
</record>
<record id="view_picking_in_search" model="ir.ui.view">
<field name="name">stock.picking.in.search</field>
<field name="model">stock.picking.in</field>
<field name="arch" type="xml">
<search string="Incoming Shipments">
<field name="name" string="Incoming Shipments" filter_domain="['|',('name','ilike',self),('origin','ilike',self)]"/>
<filter icon="terp-check" name="available" string="Ready to Process" domain="[('state','=','assigned')]" help="Incoming Shipments Available"/>
<filter icon="terp-dialog-close" name="done" string="Done" domain="[('state','=','done')]" help="Incoming Shipments already processed"/>
<separator/>
<filter icon="terp-accessories-archiver-minus" string="Back Orders" domain="[('backorder_id', '!=', False)]" help="Is a Back Order"/>
<separator/>
<field name="partner_id" filter_domain="[('partner_id','child_of',self)]"/>
<field name="stock_journal_id"/>
<field name="product_id"/>
<group expand="0" string="Group By...">
<filter icon="terp-stock_effects-object-colorize" name="state" string="Status" domain="[]" context="{'group_by':'state'}"/>
<filter string="Order Date" icon="terp-go-month" domain="[]" context="{'group_by':'date'}"/>
<filter string="Expected Date" icon="terp-go-month" domain="[]" context="{'group_by':'min_date'}"/>
<filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'stock_journal_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_picking_tree4" model="ir.actions.act_window">
<field name="name">Incoming Shipments</field>
<field name="res_model">stock.picking.in</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar</field>
<field name="domain">[('type','=','in')]</field>
<field name="context">{'contact_display': 'partner_address', 'default_type': 'in'}</field>
<field name="search_view_id" ref="view_picking_in_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create an incoming shipment.
</p><p>
The Incoming Shipments is the list of all orders you will
receive from your suppliers. An incoming shipment contains a
list of products to be received according to the original
purchase order.
</p>
</field>
</record>
<record id="action_invoice_tree5_view1" model="ir.actions.act_window.view">
<field eval="1" name="sequence"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="view_picking_in_tree"/>
<field name="act_window_id" ref="action_picking_tree4"/>
</record>
<record id="action_invoice_tree5_view2" model="ir.actions.act_window.view">
<field eval="2" name="sequence"/>
<field name="view_mode">form</field>
<field name="view_id" ref="view_picking_in_form"/>
<field name="act_window_id" ref="action_picking_tree4"/>
</record>
<record id="action_invoice_tree5_view2_cal" model="ir.actions.act_window.view">
<field eval="3" name="sequence"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="stock_picking_in_calendar"/>
<field name="act_window_id" ref="action_picking_tree4"/>
</record>
<menuitem action="action_picking_tree4" id="menu_action_picking_tree4" parent="menu_stock_warehouse_mgmt" sequence="1"/>
<menuitem action="action_picking_tree" id="menu_action_picking_tree" parent="menu_stock_warehouse_mgmt" sequence="0"/>
<menuitem action="action_picking_tree6" id="menu_action_picking_tree6" parent="menu_stock_warehouse_mgmt" sequence="2" groups="stock.group_locations"/>
<record id="view_move_tree" model="ir.ui.view">
<field name="name">stock.move.tree</field>
@ -965,7 +717,7 @@
<field name="name"/>
<field name="picking_id" string="Reference"/>
<field name="origin"/>
<field name="type" on_change="onchange_move_type(type)"/>
<field name="picking_type_id" on_change="onchange_move_type(picking_type_id)"/>
<field name="create_date" invisible="1" groups="base.group_no_one"/>
<field name="product_id" on_change="onchange_product_id(product_id,location_id,location_dest_id, False)"/>
<field name="product_uom_qty" on_change="onchange_quantity(product_id, product_uom_qty, product_uom, product_uos)"/>
@ -1053,8 +805,8 @@
</group>
<group name="origin_grp" string="Origin">
<field name="origin"/>
<field name="picking_id" domain="[('type','=',type)]"/>
<field name="type" on_change="onchange_move_type(type)"/>
<field name="picking_id" domain="[('picking_type_id','=',picking_type_id)]"/>
<field name="picking_type_id" on_change="onchange_move_type(picking_type_id)"/>
<field name="location_id" groups="stock.group_locations"/>
<field name="create_date" groups="base.group_no_one"/>
</group>
@ -1087,7 +839,7 @@
<group>
<field name="name" invisible="1"/>
<field name="product_id" on_change="onchange_product_id(product_id,location_id,location_dest_id, parent.partner_id)"/>
<field name="type" invisible="1"/>
<field name="picking_type_id" invisible="1"/>
<field name="procure_method"/>
<label for="product_uom_qty"/>
<div>
@ -1251,9 +1003,9 @@
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">['|','&amp;',('picking_id','=',False),('location_id.usage', 'in', ['customer','supplier']),'&amp;',('picking_id','!=',False),('picking_id.type','=','in')]</field>
<field name="domain">['|','&amp;',('picking_id','=',False),('location_id.usage', 'in', ['customer','supplier']),'&amp;',('picking_id','!=',False)]</field>
<field name="view_id" ref="view_move_tree_reception_picking"/>
<field name="context">{'product_receive': True, 'search_default_future': True, 'picking_type': 'in'}</field>
<field name="context">{'product_receive': True, 'search_default_future': True}</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to register a product reception.
@ -1337,33 +1089,8 @@
<field name="name">Open Products</field>
<field eval="'ir.actions.act_window,%d'%action_view_stock_location_product" name="value"/>
</record>
<record id="action_picking_tree_out" model="ir.actions.act_window">
<field name="name">Customers Packings</field>
<field name="res_model">stock.picking</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar</field>
<field name="domain">[('type','=','out')]</field>
<field name="context">{'default_type': 'out', 'contact_display': 'partner',"search_default_available":1}</field>
<field name="search_view_id" ref="view_picking_in_search"/>
</record>
<record id="action_invoice_tree5_out" model="ir.actions.act_window.view">
<field eval="1" name="sequence"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="view_picking_in_tree"/>
<field name="act_window_id" ref="action_picking_tree_out"/>
</record>
<record id="action_invoice_tree5_view2_out" model="ir.actions.act_window.view">
<field eval="2" name="sequence"/>
<field name="view_mode">form</field>
<field name="view_id" ref="view_picking_in_form"/>
<field name="act_window_id" ref="action_picking_tree_out"/>
</record>
<record id="action_invoice_tree5_viewout_cal" model="ir.actions.act_window.view">
<field eval="3" name="sequence"/>
<field name="view_mode">calendar</field>
<field name="act_window_id" ref="action_picking_tree_out"/>
</record>
<record id="action_out_picking_move" model="ir.actions.act_window">
<field name="name">Deliver Products</field>
@ -1586,6 +1313,7 @@
<field name="location_src_id"/>
<field name="location_id"/>
<field name="action"/>
<field name="picking_type_id"/>
</tree>
</field>
</record>

View File

@ -210,18 +210,12 @@ class stock_return_picking(osv.osv_memory):
pick_obj.write(cr, uid, [pick.id], {'invoice_state':'none'}, context=context)
pick_obj.signal_button_confirm(cr, uid, [new_picking])
pick_obj.force_assign(cr, uid, [new_picking], context)
# Update view id in context, lp:702939
model_list = {
'out': 'stock.picking.out',
'in': 'stock.picking.in',
'internal': 'stock.picking',
}
return {
'domain': "[('id', 'in', ["+str(new_picking)+"])]",
'name': _('Returned Picking'),
'view_type':'form',
'view_mode':'tree,form',
'res_model': model_list.get(new_type, 'stock.picking'),
'res_model': 'stock.picking',
'type':'ir.actions.act_window',
'context':context,
}

View File

@ -11,7 +11,7 @@
id="act_stock_return_picking"/>
<act_window name="Return Shipment"
res_model="stock.return.picking"
src_model="stock.picking.in"
src_model="stock.picking"
view_mode="form"
target="new"
key2="client_action_multi"
@ -19,7 +19,7 @@
id="act_stock_return_picking_in"/>
<act_window name="Return Shipment"
res_model="stock.return.picking"
src_model="stock.picking.out"
src_model="stock.picking"
view_mode="form"
target="new"
key2="client_action_multi"

View File

@ -53,10 +53,10 @@
</record>-->
<record id="view_picking_in_search_inherit" model="ir.ui.view">
<record id="view_picking_internal_search_inherit" model="ir.ui.view">
<field name="name">stock.picking.in.search.inherit</field>
<field name="model">stock.picking.in</field>
<field name="inherit_id" ref="stock.view_picking_in_search"/>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_internal_search"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='partner_id']" position="before">
<filter string="To Invoice" name="to_invoice" icon="terp-dolar" domain="[('invoice_state', '=', '2binvoiced')]"/>
@ -66,7 +66,7 @@
<record id="view_picking_out_search_inherit" model="ir.ui.view">
<field name="name">stock.picking.out.search.inherit</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_out_search"/>
<field name="inherit_id" ref="stock.view_picking_internal_search"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='partner_id']" position="before">
<filter icon="terp-dolar" name="to_invoice" string="To Invoice" domain="[('invoice_state','=','2binvoiced')]" help="Delivery orders to invoice"/>

View File

@ -23,7 +23,7 @@
<act_window name="Create Invoice"
res_model="stock.invoice.onshipping"
src_model="stock.picking.out"
src_model="stock.picking"
key2="client_action_multi"
multi="True"
view_mode="form"
@ -33,7 +33,7 @@
<act_window name="Create Draft Invoices"
res_model="stock.invoice.onshipping"
src_model="stock.picking.in"
src_model="stock.picking"
key2="client_action_multi"
multi="True"
view_mode="form"

View File

@ -1,6 +1,10 @@
<?xml version="1.0"?>
<openerp>
<data>
<!-- Picking type dropship-->
<record id="picking_type_dropship" model="stock.picking.type">
<field name="name">dropship</field>
</record>
<!-- Drop Shipping-->
<record id="route_drop_shipping" model='stock.location.route'>
<field name="name">Drop Shipping</field>
@ -15,6 +19,7 @@
<field name="location_src_id" ref="stock.stock_location_suppliers"/>
<field name="procure_method">make_to_stock</field>
<field name="route_id" ref="route_drop_shipping"/>
<field name="picking_type_id" ref="picking_type_dropship"/>
</record>
@ -25,6 +30,7 @@
<field name="location_id" ref="stock.stock_location_output"/>
<field name="location_src_id" ref="stock.stock_location_suppliers"/>
<field name="route_id" ref="stock_location.route_warehouse0_crossdock"/>
<field name="picking_type_id" ref="stock.picking_type_in"/>
</record>
</data>
</openerp>

View File

@ -63,7 +63,8 @@ class stock_location_path(osv.osv):
("2binvoiced", "To Be Invoiced"),
("none", "Not Applicable")], "Invoice Status",
required=True,),
'picking_type': fields.selection([('out','Sending Goods'),('in','Getting Goods'),('internal','Internal')], 'Shipping Type', required=True, select=True, help="Depending on the company, choose whatever you want to receive or send products"),
# 'picking_type': fields.selection([('out','Sending Goods'),('in','Getting Goods'),('internal','Internal')], 'Shipping Type', required=True, select=True, help="Depending on the company, choose whatever you want to receive or send products"),
'picking_type_id': fields.many2one('stock.picking.type', 'Picking Type', help="This is the picking type associated with the different pickings"),
'auto': fields.selection(
[('auto','Automatic Move'), ('manual','Manual Operation'),('transparent','Automatic No Step Added')],
'Automatic Move',
@ -78,7 +79,6 @@ class stock_location_path(osv.osv):
'auto': 'auto',
'delay': 1,
'invoice_state': 'none',
'picking_type': 'internal',
'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'procurement.order', context=c)
}
def _apply(self, cr, uid, rule, move, context=None):

View File

@ -28,6 +28,7 @@
<field name="location_src_id" ref="stock.stock_location_stock"/>
<field name="procure_method">make_to_stock</field>
<field name="route_id" ref="route_warehouse0_mts"/>
<field name="picking_type_id" ref="stock.picking_type_internal"/>
</record>
<record id="procurement_rule_customer1_mts" model="procurement.rule">
@ -37,6 +38,7 @@
<field name="location_src_id" ref="stock.stock_location_output"/>
<field name="procure_method">make_to_order</field>
<field name="route_id" ref="route_warehouse0_mts"/>
<field name="picking_type_id" ref="stock.picking_type_out"/>
</record>
@ -52,6 +54,7 @@
<field name="location_src_id" ref="stock.stock_location_stock"/>
<field name="procure_method">make_to_order</field>
<field name="route_id" ref="route_warehouse0_mto"/>
<field name="picking_type_id" ref="stock.picking_type_internal"/>
</record>
<record id="route_warehouse0_crossdock" model='stock.location.route'>
@ -66,6 +69,7 @@
<field name="location_src_id" ref="stock.stock_location_output"/>
<field name="procure_method">make_to_order</field>
<field name="route_id" ref="route_warehouse0_crossdock"/>
<field name="picking_type_id" ref="stock.picking_type_out"/>
</record>
<!--TODO: pack zone must be in data of stock_location, not demo -->
@ -83,6 +87,7 @@
<field name="location_src_id" ref="stock.stock_location_stock"/>
<field name="procure_method">make_to_stock</field>
<field name="route_id" ref="route_warehouse0_pack"/>
<field name="picking_type_id" ref="stock.picking_type_internal"/>
</record>
<record id="procurement_rule_customer1_pack" model="procurement.rule">
@ -92,6 +97,7 @@
<field name="location_src_id" ref="stock.stock_location_output"/>
<field name="procure_method">make_to_order</field>
<field name="route_id" ref="route_warehouse0_pack"/>
<field name="picking_type_id" ref="stock.picking_type_out"/>
</record>
<record id="procurement_rule_customer2_pack" model="procurement.rule">
@ -101,9 +107,8 @@
<field name="location_src_id" ref="location_pack_zone"/>
<field name="procure_method">make_to_order</field>
<field name="route_id" ref="route_warehouse0_pack"/>
<field name="picking_type_id" ref="stock.picking_type_internal"/>
</record>
<record id="procurement_rule_customer0_mto_pack" model="procurement.rule">
@ -113,6 +118,7 @@
<field name="location_src_id" ref="stock.stock_location_stock"/>
<field name="procure_method">make_to_order</field>
<field name="route_id" ref="route_warehouse0_mto"/>
<field name="picking_type_id" ref="stock.picking_type_internal"/>
</record>
</data>
</openerp>

View File

@ -12,7 +12,6 @@
<field eval="0" name="scrap_location"/>
<field name="company_id" ref="base.main_company"/>
<field name="usage">internal</field>
<field name="chained_location_type">none</field>
<field name="name">Quality Control</field>
</record>
<record id="stock_location_path_4" model="stock.location.path">
@ -24,7 +23,7 @@
<field name="name">Receptions to Quality Control</field>
<field name="location_dest_id" ref="stock_location_qualitytest0"/>
<field name="location_from_id" ref="stock.stock_location_stock"/>
<field name="picking_type">in</field>
<field name="picking_type_id" ref="stock.picking_type_internal"/>
</record>
<record id="stock_location_path_5" model="stock.location.path">
<field name="location_from_id" ref="stock_location_qualitytest0"/>
@ -34,7 +33,7 @@
<field name="name">Store in Shelf</field>
<field eval="5" name="delay"/>
<field name="location_dest_id" ref="stock.stock_location_14"/>
<field name="picking_type">internal</field>
<field name="picking_type_id" ref="stock.picking_type_internal"/>
</record>
<record id="product_pulled_flow_l0" model="procurement.rule">
@ -47,7 +46,7 @@
<field name="type_proc">move</field>
<field eval="0" name="cancel_cascade"/>
<field name="procure_method">make_to_order</field>
<field name="picking_type">in</field>
<field name="picking_type_id" ref="stock.picking_type_in"/>
<field name="name">Receive from Warehouse</field>
<field name="action">move</field>
</record>
@ -61,7 +60,7 @@
<field name="company_id" ref="base.main_company"/>
<field eval="0" name="cancel_cascade"/>
<field name="procure_method">make_to_stock</field>
<field name="picking_type">out</field>
<field name="picking_type_id" ref="stock.picking_type_out"/>
<field name="name">Deliver Shop</field>
<field name="action">move</field>
</record>

View File

@ -36,4 +36,4 @@
product_id: product.product_product_10
location_from_id: stock.stock_location_output
location_dest_id: location_pack_zone
picking_type: internal
picking_type_id: stock.picking_type_internal

View File

@ -75,8 +75,8 @@
!python {model: stock.picking }: |
self.draft_force_assign(cr, uid, [ref("stock_picking_in0")], {"lang": "en_US",
"search_default_available": 1, "tz": False, "active_model": "ir.ui.menu",
"contact_display": "partner_address", "active_ids": [ref("stock.menu_action_picking_tree4")],
"active_id": ref("stock.menu_action_picking_tree4"), })
"contact_display": "partner_address", "active_ids": [ref("stock.menu_action_picking_tree")],
"active_id": ref("stock.menu_action_picking_tree"), })
-
I check that the outgoing order of the supplier is create with two move line.
Stock/Input To Quality test and Quality test To Stock.