partial reception from move and picking for outgoing

bzr revid: nel@tinyerp.com-20100610140453-em5ypfw7wit9fw3f
This commit is contained in:
nel@tinyerp.com
2010-06-10 16:04:53 +02:00
parent 4de29c696c
commit 0a7f8cf1e6
5 changed files with 69 additions and 20 deletions
+34 -5
View File
@@ -3,6 +3,7 @@
<data>
<menuitem icon="terp-stock" id="menu_stock_root" name="Warehouse" sequence="2"/>
<menuitem id="menu_stock_warehouse_mgmt" name="Warehouse Management" parent="menu_stock_root" sequence="1"/>
<menuitem id="menu_stock_products_moves" name="Products Moves" parent="menu_stock_root" sequence="5"/>
<menuitem id="menu_stock_product" name="Product" parent="menu_stock_root" sequence="4"/>
<menuitem action="product.product_normal_action" id="menu_stock_products_menu" parent="menu_stock_product" sequence="1"/>
<menuitem id="menu_stock_configuration" name="Configuration" parent="menu_stock_root" sequence="6"/>
@@ -1447,7 +1448,7 @@
<field name="arch" type="xml">
<tree colors="grey:state in ('cancel')" string="Moves">
<field name="picking_id" string="Reference"/>
<field name="origin" string="Latest Procurement"/>
<field name="origin"/>
<field name="partner_id" string="Supplier"/>
<field name="product_id"/>
<field name="product_qty" />
@@ -1510,9 +1511,9 @@
<button name="action_done" states="assigned" string="Done" type="object" icon="gtk-jump-to"/>
</group>
</page>
<page string="Return Picking History">
<!-- <page string="Return Picking History">
<field name="move_stock_return_history" nolabel="1"/>
</page>
</page-->
</notebook>
</form>
</field>
@@ -1530,7 +1531,7 @@
<filter icon="terp-accessories-archiver-minus" string="Back Orders" domain="[('backorder_id','!=',False)]" help="Back Orders"/>
<filter icon="terp-go-today" string="Planned Today" domain="[('date_planned::date','=',time.strftime('%%Y-%%m-%%d'))]" help="Orders planned for today"/>
<separator orientation="vertical"/>
<field name="origin" string="Latest Procurement"/>
<field name="origin"/>
<field name="partner_id" string="Supplier"/>
<field name="product_id"/>
</group>
@@ -1551,7 +1552,7 @@
</record>
<record id="action_reception_picking_move" model="ir.actions.act_window">
<field name="name">Incoming Products</field>
<field name="name">Incoming Packings</field>
<field name="res_model">stock.move</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
@@ -1761,5 +1762,33 @@
<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">Outcoming Packings</field>
<field name="res_model">stock.move</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('picking_id','!=',False),('picking_id.type','=','out')]</field>
<field name="view_id" ref="view_move_tree_reception_picking"/>
<field name="context">{"search_default_receive":1}</field>
<field name="search_view_id" ref="view_move_search_reception_picking"/>
</record>
<record model="ir.actions.act_window.view" id="action_move_out_picking_tree">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="view_move_tree_reception_picking"/>
<field name="act_window_id" ref="action_out_picking_move"/>
</record>
<record model="ir.actions.act_window.view" id="action_move_out_picking_form">
<field name="sequence" eval="2"/>
<field name="view_mode">form</field>
<field name="view_id" ref="view_move_form_reception_picking"/>
<field name="act_window_id" ref="action_out_picking_move"/>
</record>
<menuitem action="action_reception_picking_move" id="menu_action_pdct_in" parent="menu_stock_products_moves" sequence="1"/>
<menuitem action="action_out_picking_move" id="menu_action_pdct_out" parent="menu_stock_products_moves" sequence="2"/>
</data>
</openerp>
+3
View File
@@ -203,9 +203,12 @@ class split_in_production_lot(osv.osv_memory):
move = self.pool.get('stock.move').browse(cr, uid, context['active_id'], context=context)
if 'product_id' in fields:
res.update({'product_id': move.product_id.id})
if 'qty' in fields:
res.update({'qty': move.product_qty})
return res
_columns = {
'qty': fields.integer('Quantity'),
'product_id': fields.many2one('product.product', 'Product', required=True, select=True),
'line_ids': fields.one2many('stock.move.split.lines', 'lot_id', 'Lots Number'),
'line_exist_ids': fields.one2many('stock.move.split.lines.exist', 'lot_id', 'Lots Existing Numbers'),
+1
View File
@@ -107,6 +107,7 @@
<field name="product_id" colspan="4" readonly="1"/>
<newline/>
<field name="use_exist"/>
<field name="qty" readonly="1"/>
<group colspan="4" attrs="{'invisible':[('use_exist','=',True)]}">
<field name="line_ids" colspan="4" nolabel="1">
<tree string="Lots Number" editable="top">
+14
View File
@@ -180,6 +180,20 @@ class stock_partial_move(osv.osv_memory):
if 'move%s_product_uom'%(m.id) in fields:
res['move%s_product_uom'%(m.id)] = m.product_uom.id
if (m.picking_id.type == 'out') and (m.product_id.cost_method == 'average'):
price = 0
if hasattr(m, 'sale_line_id') and m.sale_line_id:
price = m.sale_line_id.price_unit
currency = False
if hasattr(m.picking_id, 'sale_id') and m.picking_id.sale_id:
currency = m.picking_id.sale_id.pricelist_id.currency_id.id
if 'move%s_product_price'%(m.id) in fields:
res['move%s_product_price'%(m.id)] = price
if 'move%s_product_currency'%(m.id) in fields:
res['move%s_product_currency'%(m.id)] = currency
if (m.picking_id.type == 'in') and (m.product_id.cost_method == 'average'):
price = 0
if hasattr(m, 'purchase_line_id') and m.purchase_line_id:
+17 -15
View File
@@ -52,7 +52,7 @@ class stock_partial_picking(osv.osv_memory):
if 'move%s_product_uom'%(m.id) not in self._columns:
self._columns['move%s_product_uom'%(m.id)] = fields.many2one('product.uom',string="Product UOM")
if (pick.type == 'in') and (m.product_id.cost_method == 'average'):
if (m.product_id.cost_method == 'average'):
if 'move%s_product_price'%(m.id) not in self._columns:
self._columns['move%s_product_price'%(m.id)] = fields.float("Price")
if 'move%s_product_currency'%(m.id) not in self._columns:
@@ -63,16 +63,14 @@ class stock_partial_picking(osv.osv_memory):
result = super(stock_partial_picking, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar,submenu)
pick_obj = self.pool.get('stock.picking')
picking_ids = context.get('active_ids', False)
picking_ids = pick_obj.search(cr, uid, [('id', 'in', picking_ids)])
partner_id = set([pick.partner_id for pick in pick_obj.browse(cr, uid, picking_ids)])
_moves_arch_lst = """<form string="Deliver Products">
<separator colspan="4" string="Delivery Information"/>
<field name="date" colspan="4" />
<field name="partner_id" domain="[('id','=',%d)]"/>
<field name="partner_id"/>
<field name="address_id"/>
<newline/>
<separator colspan="4" string="Move Detail"/>
"""%(partner_id)
"""
_moves_fields = result['fields']
if picking_ids and view_type in ['form']:
for pick in pick_obj.browse(cr, uid, picking_ids, context):
@@ -107,7 +105,7 @@ class stock_partial_picking(osv.osv_memory):
<field name="move%s_product_qty" string="Qty" />
<field name="move%s_product_uom" nolabel="1" />
"""%(m.id, m.id, m.id)
if (pick.type == 'in') and (m.product_id.cost_method == 'average'):
if (m.product_id.cost_method == 'average'):
_moves_fields.update({
'move%s_product_price'%(m.id) : {
'string': _('Price'),
@@ -177,15 +175,19 @@ class stock_partial_picking(osv.osv_memory):
if 'move%s_product_uom'%(m.id) in fields:
res['move%s_product_uom'%(m.id)] = m.product_uom.id
if (pick.type == 'in') and (m.product_id.cost_method == 'average'):
price = 0
if hasattr(m, 'purchase_line_id') and m.purchase_line_id:
price = m.purchase_line_id.price_unit
if (m.product_id.cost_method == 'average'):
currency = False
if hasattr(pick, 'purchase_id') and pick.purchase_id:
currency = pick.purchase_id.pricelist_id.currency_id.id
price = 0
if (pick.type == 'in'):
if hasattr(m, 'purchase_line_id') and m.purchase_line_id:
price = m.purchase_line_id.price_unit
if hasattr(pick, 'purchase_id') and pick.purchase_id:
currency = pick.purchase_id.pricelist_id.currency_id.id
if (pick.type == 'out'):
if hasattr(m, 'sale_line_id') and m.sale_line_id:
price = m.sale_line_id.price_unit
if hasattr(pick, 'sale_id') and pick.sale_id:
currency = pick.sale_id.pricelist_id.currency_id.id
if 'move%s_product_price'%(m.id) in fields:
res['move%s_product_price'%(m.id)] = price
if 'move%s_product_currency'%(m.id) in fields:
@@ -211,7 +213,7 @@ class stock_partial_picking(osv.osv_memory):
'product_uom' : getattr(partial, 'move%s_product_uom'%(m.id)).id
}
if (pick.type == 'in') and (m.product_id.cost_method == 'average'):
if (m.product_id.cost_method == 'average'):
partial_datas['move%s'%(m.id)].update({
'product_price' : getattr(partial, 'move%s_product_price'%(m.id)),
'product_currency': getattr(partial, 'move%s_product_currency'%(m.id)).id