[WIP] Remove stock_journal, change name and origin of created procurement, remove some remaining picking in/out, add sequence on dropship

bzr revid: jco@openerp.com-20130725144335-l48yws3wbqxmstxc
This commit is contained in:
Josse Colpaert 2013-07-25 16:43:35 +02:00
parent 1be2fe79ad
commit c932b34e11
16 changed files with 111 additions and 238 deletions

View File

@ -4,7 +4,7 @@
<record model="res.request.link" id="request_link_claim_from_delivery">
<field name="name">Delivery Order</field>
<field name="object">stock.picking.out</field>
<field name="object">stock.picking</field>
</record>
</data>

View File

@ -6,17 +6,18 @@
<field name="res_model">crm.claim</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm_claim.crm_case_claims_tree_view"/>
<field name="context">{'default_ref': 'stock.picking.out,'+str(context.get('active_id', False))}</field>
<field name="domain">[('ref','=','stock.picking.out,'+str(context.get('active_id',False)))]</field>
<field name="context">{'default_ref': 'stock.picking,'+str(context.get('active_id', False))}</field>
<field name="domain">[('ref','=','stock.picking,'+str(context.get('active_id',False)))]</field>
</record>
<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="model">stock.picking</field>
<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">
<!-- TODO: Show only when picking type out (or add boolean to picking type)-->
<button name="%(action_claim_from_delivery)d" string="Claims" type="action"/>
</div>
</xpath>

View File

@ -51,6 +51,7 @@ class stock_picking(osv.osv):
result[line.picking_id.id] = True
return result.keys()
_columns = {
'carrier_id':fields.many2one("delivery.carrier","Carrier"),
'volume': fields.float('Volume'),
@ -184,57 +185,6 @@ class stock_move(osv.osv):
'weight_uom_id': lambda self,cr,uid,c: self._get_default_uom(cr,uid,c)
}
# Redefinition of the new fields 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'
def _cal_weight(self, cr, uid, ids, name, args, context=None):
return self.pool.get('stock.picking')._cal_weight(cr, uid, ids, name, args, context=context)
def _get_picking_line(self, cr, uid, ids, context=None):
return self.pool.get('stock.picking')._get_picking_line(cr, uid, ids, context=context)
_columns = {
'carrier_id':fields.many2one("delivery.carrier","Carrier"),
'volume': fields.float('Volume'),
'weight': fields.function(_cal_weight, type='float', string='Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_weight',
store={
'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 20),
'stock.move': (_get_picking_line, ['product_id','product_qty','product_uom','product_uos_qty'], 20),
}),
'weight_net': fields.function(_cal_weight, type='float', string='Net Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_weight',
store={
'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 20),
'stock.move': (_get_picking_line, ['product_id','product_qty','product_uom','product_uos_qty'], 20),
}),
'carrier_tracking_ref': fields.char('Carrier Tracking Ref', size=32),
'number_of_packages': fields.integer('Number of Packages'),
}
class stock_picking_in(osv.osv):
_inherit = 'stock.picking.in'
def _cal_weight(self, cr, uid, ids, name, args, context=None):
return self.pool.get('stock.picking')._cal_weight(cr, uid, ids, name, args, context=context)
def _get_picking_line(self, cr, uid, ids, context=None):
return self.pool.get('stock.picking')._get_picking_line(cr, uid, ids, context=context)
_columns = {
'weight': fields.function(_cal_weight, type='float', string='Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_weight',
store={
'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 20),
'stock.move': (_get_picking_line, ['product_id','product_qty','product_uom','product_uos_qty'], 20),
}),
'weight_net': fields.function(_cal_weight, type='float', string='Net Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_weight',
store={
'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 20),
'stock.move': (_get_picking_line, ['product_id','product_qty','product_uom','product_uos_qty'], 20),
}),
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -56,7 +56,7 @@ class procurement_group(osv.osv):
_description = 'Procurement Requisition'
_order = "id desc"
_columns = {
'name': fields.char('Reference'),
'name': fields.char('Reference', required=True),
'partner_id': fields.many2one('res.partner', string = 'Partner'), #Sale should pass it here
'procurement_ids': fields.many2one('procurement.order', 'group_id', 'Procurements'),
}

View File

@ -220,6 +220,7 @@ class sale_order(osv.osv):
'payment_term': fields.many2one('account.payment.term', 'Payment Term'),
'fiscal_position': fields.many2one('account.fiscal.position', 'Fiscal Position'),
'company_id': fields.many2one('res.company', 'Company'),
'procurement_group_id': fields.many2one('procurement.group', 'Procurement group'),
}
_defaults = {
'date_order': fields.date.context_today,
@ -667,6 +668,7 @@ class sale_order(osv.osv):
for order in self.browse(cr, uid, ids, context=context):
proc_ids = []
group_id = self.pool.get("procurement.group").create(cr, uid, {'name': order.name, 'sale_id': order.id}, context=context)
order.write({'procurement_group_id': group_id}, context=context)
for line in order.order_line:
if (line.state == 'done') or not line.product_id:
continue
@ -772,8 +774,6 @@ class sale_order_line(osv.osv):
'delay': fields.float('Delivery Lead Time', required=True, help="Number of days between the order confirmation and the shipping of the products to the customer", readonly=True, states={'draft': [('readonly', False)]}),
'procurement_id': fields.many2one('procurement.order', 'Procurement'),
#'property_ids': fields.many2many('mrp.property', 'sale_order_line_property_rel', 'order_id', 'property_id', 'Properties', readonly=True, states={'draft': [('readonly', False)]}),
}
_order = 'order_id desc, sequence, id'
_defaults = {

View File

@ -60,18 +60,6 @@ class picking(osv.osv):
'invoice_type_id': fields.many2one('sale_journal.invoice.type', 'Invoice Type', readonly=True)
}
class stock_picking_in(osv.osv):
_inherit = "stock.picking"
_columns = {
'invoice_type_id': fields.many2one('sale_journal.invoice.type', 'Invoice Type', readonly=True)
}
class stock_picking_out(osv.osv):
_inherit = "stock.picking.out"
_columns = {
'invoice_type_id': fields.many2one('sale_journal.invoice.type', 'Invoice Type', readonly=True)
}
class sale(osv.osv):
_inherit = "sale.order"

View File

@ -6,8 +6,6 @@ access_stock_warehouse_user,stock.warehouse.user,model_stock_warehouse,base.grou
access_stock_location__partner_manager,stock.location.partner.manager,model_stock_location,base.group_partner_manager,1,1,1,1
access_stock_location_manager,stock.location.manager,model_stock_location,stock.group_stock_manager,1,1,1,1
access_stock_location_user,stock.location.user,model_stock_location,base.group_user,1,0,0,0
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_manager,stock.picking manager,model_stock_picking,stock.group_stock_manager,1,1,0,0
access_stock_production_lot_manager,stock.production.lot manager,model_stock_production_lot,stock.group_stock_manager,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
6 access_stock_location__partner_manager stock.location.partner.manager model_stock_location base.group_partner_manager 1 1 1 1
7 access_stock_location_manager stock.location.manager model_stock_location stock.group_stock_manager 1 1 1 1
8 access_stock_location_user stock.location.user model_stock_location base.group_user 1 0 0 0
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
9 access_stock_picking_user stock.picking user model_stock_picking stock.group_stock_user 1 1 1 1
10 access_stock_picking_manager stock.picking manager model_stock_picking stock.group_stock_manager 1 1 0 0
11 access_stock_production_lot_manager stock.production.lot manager model_stock_production_lot stock.group_stock_manager 1 0 0 0

View File

@ -51,17 +51,6 @@ class stock_incoterms(osv.osv):
'active': True,
}
class stock_journal(osv.osv):
_name = "stock.journal"
_description = "Inventory Journal"
_columns = {
'name': fields.char('Stock Journal', size=32, required=True),
'user_id': fields.many2one('res.users', 'Responsible'),
}
_defaults = {
'user_id': lambda s, c, u, ctx: u
}
#----------------------------------------------------------
# Stock Location
#----------------------------------------------------------
@ -440,7 +429,6 @@ class stock_picking(osv.osv):
'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."),
'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"),
'state': fields.function(_get_state, type="selection", store = {'stock.move': (_get_pickings, ['state'], 20)}, selection = [
('draft', 'Draft'),
@ -1135,9 +1123,9 @@ class stock_move(osv.osv):
This will create a procurement order
"""
proc_obj = self.pool.get("procurement.order")
origin = _('Procurement created by stock move %s') % move.id
origin = _('Procurement from created by rule %s') % (move.group_id and move.group_id.name or "", move.rule_id and move.rule_id.name or "")
return proc_obj.create(cr, uid, {
'name': _('MTO procurement'),
'name': _('MTO procurement from rule %s') % move.rule_id and move.rule_id.name or "",
'origin': origin,
'company_id': move.company_id and move.company_id.id or False,
'date_planned': move.date,
@ -1331,7 +1319,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') #TODO: Need to have sequence for every picking type
back_order_name = sequence_obj.get_by_id(cr, uid, original_picking.picking_type_id.id, 'id') #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': [],
@ -1347,6 +1335,7 @@ class stock_move(osv.osv):
'company_id': move.company_id and move.company_id.id or False,
'move_type': 'one',
'partner_id': move.partner_id and move.partner_id.id or False,
'date_done': move.date_expected,
#'invoice_state': move.invoice_state
'state': 'confirmed',
'group_id': move.group_id and move.group_id.id or False,

View File

@ -1,5 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--
Picking types
-->
<!-- Sequences for picking types -->
<record id="seq_picking_type_in" model="ir.sequence">
<field name="name">Picking in</field>
<field name="prefix">IN</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
</record>
<record id="seq_picking_type_out" model="ir.sequence">
<field name="name">Picking out</field>
<field name="prefix">OUT</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
</record>
<record id="seq_picking_type_internal" model="ir.sequence">
<field name="name">Picking internal</field>
<field name="prefix">INT</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
</record>
<record id="picking_type_in" model="stock.picking.type">
<field name="name">in</field>
<field name="sequence_id" ref="seq_picking_type_in"/>
</record>
<record id="picking_type_out" model="stock.picking.type">
<field name="name">out</field>
<field name="sequence_id" ref="seq_picking_type_out"/>
</record>
<record id="picking_type_internal" model="stock.picking.type">
<field name="name">internal</field>
<field name="sequence_id" ref="seq_picking_type_internal"/>
</record>
</data>
<data noupdate="1">
<!-- notify all employees of module installation -->
<record model="mail.message" id="module_install_notification">
@ -85,9 +129,6 @@ watch your stock valuation, and track production lots upstream and downstream (b
<field name="location_id" ref="stock_location_locations"/>
</record>
<record id="journal_delivery" model="stock.journal">
<field name="name">Delivery Orders</field>
</record>
<record id="stock_location_output" model="stock.location">
<field name="name">Output</field>
<field name="location_id" ref="stock_location_company"/>
@ -99,58 +140,6 @@ watch your stock valuation, and track production lots upstream and downstream (b
</record>
<!--
Picking types
-->
<!-- Sequences for picking types -->
<record id="seq_picking_type_in" model="ir.sequence">
<field name="name">Picking in</field>
<field name="prefix">IN</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
</record>
<record id="seq_picking_type_out" model="ir.sequence">
<field name="name">Picking out</field>
<field name="prefix">OUT</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
</record>
<record id="seq_picking_type_internal" model="ir.sequence">
<field name="name">Picking internal</field>
<field name="prefix">INT</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
</record>
<record id="seq_picking_type_inventory" model="ir.sequence">
<field name="name">Picking inventory</field>
<field name="prefix">INV</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
</record>
<record id="picking_type_in" model="stock.picking.type">
<field name="name">in</field>
<field name="sequence_id" ref="seq_picking_type_in"/>
</record>
<record id="picking_type_out" model="stock.picking.type">
<field name="name">out</field>
<field name="sequence_id" ref="seq_picking_type_out"/>
</record>
<record id="picking_type_internal" model="stock.picking.type">
<field name="name">internal</field>
<field name="sequence_id" ref="seq_picking_type_internal"/>
</record>
<record id="picking_type_inventory" model="stock.picking.type">
<field name="name">inventory</field>
<field name="sequence_id" ref="seq_picking_type_inventory"/>
</record>
<!--

View File

@ -24,21 +24,7 @@
Sequences for pickings
-->
<!--<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>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
</record>
<record id="seq_picking_out" model="ir.sequence">
<field name="name">Picking OUT</field>
<field name="code">stock.picking.out</field>
<field name="prefix">OUT/</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
</record>-->
<record id="seq_picking_internal" model="ir.sequence">
<field name="name">Picking INT</field>

View File

@ -570,7 +570,6 @@
<field name="origin"/>
<field name="date"/>
<field name="min_date"/>
<field name="stock_journal_id" widget="selection"/>
<field name="state"/>
</tree>
</field>
@ -601,7 +600,7 @@
<group>
<field name="partner_id"/>
<field name="backorder_id" readonly="1" attrs="{'invisible': [('backorder_id','=',False)]}"/>
<field name="stock_journal_id" widget="selection"/>
<field name="picking_type_id"/>
</group>
<group>
<field name="date"/>
@ -631,7 +630,6 @@
<group>
<group>
<field name="move_type"/>
<field name="picking_type_id"/>
</group>
<group>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
@ -660,13 +658,13 @@
<filter icon="terp-dialog-close" name="done" string="Done" domain="[('state','=','done')]" help="Pickings already processed"/>
<field name="partner_id" filter_domain="[('partner_id','child_of',self)]"/>
<field name="product_id"/>
<field name="stock_journal_id"/>
<field name="picking_type_id"/>
<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="Origin" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'origin'}"/>
<filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'stock_journal_id'}"/>
<filter string="Origin" domain="[]" context="{'group_by':'origin'}"/>
<filter string="Picking Type" domain="[]" context="{'group_by':'picking_type_id'}"/>
</group>
</search>
</field>
@ -1133,58 +1131,61 @@
<menuitem action="action_out_picking_move" id="menu_action_pdct_out" parent="menu_stock_products_moves" sequence="2"/>
<record id="view_stock_journal_filter" model="ir.ui.view">
<field name="name">stock.journal.filter</field>
<field name="model">stock.journal</field>
<record id="view_pickingtype_filter" model="ir.ui.view">
<field name="name">stock.picking.type.filter</field>
<field name="model">stock.picking.type</field>
<field name="arch" type="xml">
<search string="Stock Journal">
<field name="name" string="Stock Journal"/>
<field name="user_id"/>
<search string="Picking Type">
<field name="name" string="Picking Type"/>
<field name="sequence_id"/>
</search>
</field>
</record>
<record model="ir.ui.view" id="view_stock_journal_tree">
<field name="name">Stock Journals</field>
<field name="model">stock.journal</field>
<record model="ir.ui.view" id="view_picking_type_tree">
<field name="name">Picking types</field>
<field name="model">stock.picking.type</field>
<field name="arch" type="xml">
<tree string="Stock Journal">
<tree string="Picking Types">
<field name="name"/>
<field name="user_id"/>
<field name="sequence_id"/>
<field name="pack"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_stock_journal_form">
<field name="name">Stock Journals</field>
<field name="model">stock.journal</field>
<record model="ir.ui.view" id="view_picking_type_form">
<field name="name">Picking Types</field>
<field name="model">stock.picking.type</field>
<field name="arch" type="xml">
<form string="Stock Journal" version="7.0">
<form string="Picking Types" version="7.0">
<group>
<field name="name"/>
<field name="user_id"/>
<field name="sequence_id"/>
<field name="pack"/>
</group>
</form>
</field>
</record>
<record id="action_stock_journal_form" model="ir.actions.act_window">
<field name="name">Stock Journals</field>
<field name="res_model">stock.journal</field>
<record id="action_picking_type_form" model="ir.actions.act_window">
<field name="name">Picking Types</field>
<field name="res_model">stock.picking.type</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a new journal.
Click to create a new picking type.
</p><p>
The stock journal system allows you to assign each stock
operation to a specific journal according to the type of
operation to perform or the worker/team that should perform the
operation. Examples of stock journals may be: quality control,
pick lists, packing, etc.
The picking type system allows you to assign each stock
operation a specific type which will alter its views accordingly.
On the picking type you could e.g. specify if packing is needed by default,
if it should show the customer.
<br/>
Examples are in, out, internal, packing, quality control, ...
</p>
</field>
</record>
<menuitem
action="action_stock_journal_form"
id="menu_action_stock_journal_form"
action="action_picking_type_form"
id="menu_action_picking_type_form"
parent="menu_warehouse_config" sequence="1"/>
<!-- Order Point -->

View File

@ -1,10 +1,21 @@
<?xml version="1.0"?>
<openerp>
<data>
<!-- Picking type dropship-->
<!-- Sequence and picking type dropship-->
<record id="seq_picking_type_dropship" model="ir.sequence">
<field name="name">Dropship</field>
<field name="prefix">DS</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
</record>
<record id="picking_type_dropship" model="stock.picking.type">
<field name="name">dropship</field>
<field name="sequence_id" ref="seq_picking_type_dropship"/>
</record>
<!-- Drop Shipping-->
<record id="route_drop_shipping" model='stock.location.route'>
<field name="name">Drop Shipping</field>
@ -24,6 +35,10 @@
<!-- Crossdock -->
<record id="stock_location.route_warehouse0_crossdock" model='stock.location.route'>
<field name="name">Crossdock</field>
<field name="sale">True</field>
</record>
<record id="procurement_rule_customer0_xdock" model="procurement.rule">
<field name="name"> Supplier → Output</field>
<field name="action">buy</field>

View File

@ -90,9 +90,6 @@ class stock_location_path(osv.osv):
'location_dest_id': rule.location_dest_id.id
})
vals = {}
# TODO journal_id was to be removed?
# if route.journal_id:
# vals['stock_journal_id'] = route.journal_id.id
vals['type'] = rule.picking_type
if rule.location_dest_id.id<>move.location_dest_id.id:
move_obj._push_apply(self, cr, uid, move.id, context)

View File

@ -3,9 +3,6 @@
<record id="product.product_product_9" model="product.product">
<field name="description">This product is configured with example of push/pull flows</field>
</record>
<record id="stock_journal_quality" model="stock.journal">
<field name="name">Quality Control</field>
</record>
<record id="stock_location_qualitytest0" model="stock.location">
<field name="location_id" ref="stock.stock_location_company"/>

View File

@ -1,15 +1,3 @@
-
!record {model: stock.journal, id: journal_pick}:
name: Pick List
-
!record {model: stock.journal, id: journal_pack}:
name: Packing
-
!record {model: stock.journal, id: journal_gate_a}:
name: Delivery Gate A
-
!record {model: stock.journal, id: journal_gate_b}:
name: Delivery Gate B
-
!record {model: stock.location, id: location_order}:
name: Order Processing
@ -36,4 +24,4 @@
product_id: product.product_product_10
location_from_id: stock.stock_location_output
location_dest_id: location_pack_zone
picking_type_id: stock.picking_type_internal
picking_type_id: stock.picking_type_internal

View File

@ -172,8 +172,8 @@ class stock_picking(osv.osv):
# FIXME:(class stock_picking_in and stock_picking_out) this is a temporary workaround because of a framework bug (ref: lp:996816).
# It should be removed as soon as the bug is fixed
class stock_picking_in(osv.osv):
_inherit = 'stock.picking.in'
class stock_picking(osv.osv):
_inherit = 'stock.picking'
def onchange_partner_in(self, cr, uid, ids, partner_id=None, context=None):
if not partner_id:
@ -198,32 +198,6 @@ class stock_picking_in(osv.osv):
return {'value': result.get('value',{}), 'warning':warning}
class stock_picking_out(osv.osv):
_inherit = 'stock.picking.out'
def onchange_partner_in(self, cr, uid, ids, partner_id=None, context=None):
if not partner_id:
return {}
partner = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context)
warning = {}
title = False
message = False
if partner.picking_warn != 'no-message':
if partner.picking_warn == 'block':
raise osv.except_osv(_('Alert for %s!') % (partner.name), partner.picking_warn_msg)
title = _("Warning for %s") % partner.name
message = partner.picking_warn_msg
warning = {
'title': title,
'message': message
}
result = super(stock_picking_out, self).onchange_partner_in(cr, uid, ids, partner_id, context)
if result.get('warning',False):
warning['title'] = title and title +' & '+ result['warning']['title'] or result['warning']['title']
warning['message'] = message and message + ' ' + result['warning']['message'] or result['warning']['message']
return {'value': result.get('value',{}), 'warning':warning}
class product_product(osv.osv):
_inherit = 'product.product'
_columns = {