task : misc - part 1

bzr revid: jke@openerp.com-20131011160423-arlw8cb809us4c9f
This commit is contained in:
jke-openerp
2013-10-11 18:04:23 +02:00
parent 381e68ce8c
commit 7dde2be791
7 changed files with 109 additions and 11 deletions
+41
View File
@@ -422,6 +422,47 @@ class purchase_order(osv.osv):
})
return action
def view_picking_(self, cr, uid, ids, context=None):
'''
This function returns an action that display existing picking orders of given purchase order ids.
'''
import ipdb; ipdb.set_trace()
if context is None:
context = {}
mod_obj = self.pool.get('ir.model.data')
pick_ids = []
for po in self.browse(cr, uid, ids, context=context):
pick_ids += [picking.id for picking in po.picking_ids]
print(pick_ids)
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)
active_id = context.get('active_id',ids[0])
picking_type_id = self.browse(cr, uid, active_id, context=context)['picking_type_id'].id
ctx = eval(action['context'],{'active_id': picking_type_id}, nocopy=True)
ctx.update({
'search_default_purchase_id': ids[0]
})
if pick_ids and len(pick_ids) == 1:
form_view_ids = [view_id for view_id, view in action['views'] if view == 'form']
view_id = form_view_ids and form_view_ids[0] or False
action.update({
'views': [],
'view_mode': 'form',
'view_id': view_id,
'res_id': pick_ids[0]
})
action.update({
'context': ctx,
})
return action
def wkf_approve_order(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'state': 'approved', 'date_approve': fields.date.context_today(self,cr,uid,context=context)})
return True
+1 -1
View File
@@ -170,7 +170,7 @@
<button name="invoice_ok" states="except_invoice" string="Manually Corrected"/>
<button name="purchase_approve" states="confirmed" string="Approve Order" class="oe_highlight" groups="purchase.group_purchase_manager"/>
<button name="wkf_send_rfq" states="approved" string="Send PO by Email" type="object" context="{'send_rfq':False}"/>
<button name="view_picking" string="Receptions" type="object" attrs="{'invisible': ['|', ('shipped','=',True), ('state','!=', 'approved')]}" class="oe_highlight"/>
<button name="view_picking_" string="Receptions" type="object" attrs="{'invisible': ['|', ('shipped','=',True), ('state','!=', 'approved')]}" class="oe_highlight"/>
<button name="view_invoice" string="Receive Invoice" type="object" attrs="{'invisible': ['|', ('invoice_method','=','picking'), '|', ('state','!=', 'approved'), ('invoiced','=',True) ]}" class="oe_highlight"/>
<button name="action_cancel_draft" states="cancel,sent,confirmed" string="Set to Draft" type="object" />
<button name="purchase_cancel" states="draft,confirmed,sent,bid" string="Cancel"/>
+1 -1
View File
@@ -25,7 +25,7 @@ import openerp.addons.decimal_precision as dp
class product_product(osv.osv):
_inherit = "product.product"
def _stock_move_count(self, cr, uid, ids, field_name, arg, context=None):
res = dict([(id, {'reception_count': 0, 'delivery_count': 0}) for id in ids])
move_pool=self.pool.get('stock.move')
+22 -5
View File
@@ -575,8 +575,20 @@ class stock_picking(osv.osv):
else:
res[pick.id] = False
return res
# def onchange_owner_id(self,cr,uid,ids,new_owner_id,pack_operation_ids, context=None):
# packop_ids = self.resolve_2many_commands(cr, uid, 'pack_operation_ids',pack_operation_ids, ['id'])
# packop_ids = [p['id'] for p in packop_ids] #NO CORRECT FOR NEW
# self.pool.get('stock.pack.operation').write(cr,uid,packop_ids,{'owner_id':new_owner_id},context=context)
# result = {
# 'pack_operation_ids':pack_operation_ids
# }
# return { 'value' : result}
#
def action_assign_owner(self, cr, uid, ids, context=None):
pack_op = self.browse(cr,uid,ids[0],context=context)
packop_ids = [p.id for p in pack_op.pack_operation_ids]
self.pool.get('stock.pack.operation').write(cr,uid,packop_ids,{'owner_id':pack_op.owner_id.id},context=context)
_columns = {
'name': fields.char('Reference', size=64, select=True, states={'done':[('readonly', True)], 'cancel':[('readonly',True)]}),
@@ -616,12 +628,13 @@ class stock_picking(osv.osv):
'pack_operation_exist': fields.function(_get_pack_operation_exist, type='boolean', string='Pack Operation Exists?', help='technical field for attrs in view'),
'picking_type_id': fields.many2one('stock.picking.type', 'Picking Type', required=True),
'owner_id': fields.many2one('res.partner', 'Owner', help="Default Owner"),
# Used to search 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', readonly=True),
'location_dest_id': fields.related('move_lines', 'location_dest_id', type='many2one', relation='stock.location', string='Destination Location', readonly=True),
'group_id': fields.related('move_lines', 'group_id', type='many2one', relation='procurement.group', string='Procurement Group', readonly=True),
# 'group_id': fields.function(_get_group_id, type='many2one', store={'stock.move': (_get_pickings, ['picking_id', 'group_id'], 10)}),
# 'group_id': fields.function(_get_group_id, type='many2one', store={'stock.move': (_get_pickings, ['picking_id', 'group_id'], 10)}),
}
_defaults = {
'name': lambda self, cr, uid, context: '/',
@@ -2326,6 +2339,11 @@ class stock_pack_operation(osv.osv):
_name = "stock.pack.operation"
_description = "Packing Operation"
def onchange_product_id_for_owner(self,cr,uid,ids,powner_id, context=None):
return { 'value' : {'owner_id' : powner_id} }
def _get_remaining_qty(self, cr, uid, ids, context=None):
res = {}
for ops in self.browse(cr, uid, ids, context=context):
@@ -2335,7 +2353,6 @@ class stock_pack_operation(osv.osv):
res[ops.id] = qty
return res
_columns = {
'picking_id': fields.many2one('stock.picking', 'Stock Picking', help='The stock operation where the packing has been made', required=True),
'product_id': fields.many2one('product.product', 'Product', ondelete="CASCADE"), # 1
@@ -2355,7 +2372,7 @@ class stock_pack_operation(osv.osv):
}
_defaults = {
'date': fields.date.context_today,
'date': fields.date.context_today,
}
+9 -2
View File
@@ -612,6 +612,12 @@
<field name="date"/>
<field name="min_date" attrs="{'invisible': [('min_date','=',False)]}"/>
<field name="origin" placeholder="e.g. PO0032" class="oe_inline"/>
<label for="owner_id" groups="stock.group_tracking_owner"/>
<div groups="stock.group_tracking_owner">
<field name="owner_id"/>
<button name="action_assign_owner" string="Assign Owner" type="object" attrs="{'invisible': ['|',('pack_operation_exist', '=', False),('state', 'not in', ('draft','assigned','confirmed'))]}"
class="oe_link oe_edit_only"/>
</div>
</group>
</group>
<notebook>
@@ -621,8 +627,9 @@
groups="stock.group_tracking_lot"/>
<button name="do_split" string="Split" groups="base.group_no_one" type="object" attrs="{'invisible': ['|',('pack_operation_exist', '=', False),('state','!=','assigned')]}"/>
<field name="pack_operation_ids" attrs="{'invisible': [('pack_operation_exist', '=', False)]}">
<tree editable="top">
<field name="product_id"/>
<tree editable="top">
<field name="product_id"
on_change="onchange_product_id_for_owner(parent.owner_id)"/>
<field name="product_uom_id" groups="product.group_uom"/>
<field name="lot_id" domain="[('product_id','=?', product_id)]" context="{'product_id': product_id}" groups="stock.group_production_lot"/>
<field name="package_id" groups="stock.group_tracking_lot"/>
+26
View File
@@ -559,6 +559,32 @@ class stock_warehouse(osv.osv):
def unlink(self, cr, uid, ids, context=None):
#TODO try to delete location and route and if not possible, put them in inactive
return super(stock_warehouse, self).unlink(cr, uid, ids, context=context)
def view_all_routes_for_wh(self, cr, uid, ids, context):
wh_obj = self.pool.get("stock.warehouse")
wh = wh_obj.browse(cr,uid,ids[0])
all_routes = []
all_routes += [wh.crossdock_route_id.id]
all_routes += [wh.reception_route_id.id]
all_routes += [wh.delivery_route_id.id]
all_routes += [wh.mto_pull_id.route_id.id]
all_routes += [route.id for route in wh.resupply_route_ids]
all_routes += [route.id for route in wh.route_ids]
res_id = ids and ids[0] or False
domain = [('id', 'in', all_routes)]
return {
'name': _('The routes !'),
'domain': domain,
'res_model': 'stock.location.route',
'type': 'ir.actions.act_window',
'view_id': False,
'view_mode': 'tree,form',
'view_type': 'form',
'limit': 20
}
class stock_location_path(osv.osv):
_name = "stock.location.path"
@@ -174,12 +174,17 @@
</xpath>
</field>
</record>
<record id="view_warehouse_inherit" model="ir.ui.view">
<field name="name">stock.warehouse</field>
<field name="model">stock.warehouse</field>
<field name="inherit_id" ref="stock.view_warehouse"/>
<field name="arch" type="xml">
<xpath expr="/form/sheet/label" position="before">
<div class="oe_right oe_button_box">
<button name="view_all_routes_for_wh" string="View related routes" type="object" />
</div>
</xpath>
<xpath expr="//group[last()]" position="after">
<notebook colspan="4">
<page string="Warehouse Configuration" colspan="4">
@@ -190,11 +195,13 @@
<field name="default_resupply_wh_id"/> <!-- TODO should be filtered on resupply_wh_ids only... -->
</group>
</page>
<!--
<page string="Routes Information" colspan="4">
<group colspan="4">
<field name="route_ids" nolabel="1" readonly="1"/>
</group>
</page>
</page>
-->
</notebook>
</xpath>
</field>