diff options
| author | Quentin (OpenERP) <qdp-launchpad@openerp.com> | 2014-02-03 08:28:33 +0100 |
|---|---|---|
| committer | Quentin (OpenERP) <qdp-launchpad@openerp.com> | 2014-02-03 08:28:33 +0100 |
| commit | 3d392cab4ec961b9d5d3e65f79f146d0bc5e1aa6 (patch) | |
| tree | 78bf77e858b1c1044886de45b2bb79c0a1a6803e /addons | |
| parent | 72f4cdc3b10b4103c83749b5de6e0d956b14a91e (diff) | |
| parent | ca041ac63170ceb01c5af7a891f40241b97efdc0 (diff) | |
[MERGE] branch with fixes of picking wave
bzr revid: qdp-launchpad@openerp.com-20140203072833-tda8bncaanf0b36j
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/stock/res_config.py | 1 | ||||
| -rw-r--r-- | addons/stock/res_config_view.xml | 4 | ||||
| -rw-r--r-- | addons/stock_picking_wave/security/ir.model.access.csv | 3 | ||||
| -rw-r--r-- | addons/stock_picking_wave/stock_picking_wave.py | 33 | ||||
| -rw-r--r-- | addons/stock_picking_wave/stock_picking_wave_demo.xml | 19 | ||||
| -rw-r--r-- | addons/stock_picking_wave/stock_picking_wave_view.xml | 40 |
6 files changed, 33 insertions, 67 deletions
diff --git a/addons/stock/res_config.py b/addons/stock/res_config.py index 952407f59b3..b03bbedff68 100644 --- a/addons/stock/res_config.py +++ b/addons/stock/res_config.py @@ -87,6 +87,7 @@ This installs the module product_expiry."""), 'module_stock_dropshipping': fields.boolean("Manage dropshipping", help='\nCreates the dropship route and add more complex tests' '-This installs the module stock_dropshipping.'), + 'module_stock_picking_wave': fields.boolean('Manage picking wave', help='Install the picking wave module which will help you grouping your pickings and processing them in batch'), } def _default_company(self, cr, uid, context=None): diff --git a/addons/stock/res_config_view.xml b/addons/stock/res_config_view.xml index f8d154e3dd9..b83100e115b 100644 --- a/addons/stock/res_config_view.xml +++ b/addons/stock/res_config_view.xml @@ -82,6 +82,10 @@ <field name="module_stock_dropshipping" class="oe_inline"/> <label for="module_stock_dropshipping"/> </div> + <div> + <field name="module_stock_picking_wave" class="oe_inline"/> + <label for="module_stock_picking_wave"/> + </div> </div> </group> <group> diff --git a/addons/stock_picking_wave/security/ir.model.access.csv b/addons/stock_picking_wave/security/ir.model.access.csv index c33f87685bc..40168055609 100644 --- a/addons/stock_picking_wave/security/ir.model.access.csv +++ b/addons/stock_picking_wave/security/ir.model.access.csv @@ -1,3 +1,2 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_stock_picking_wave,stock.picking.wave stock users,model_stock_picking_wave,stock.group_stock_user,1,1,1,1 -access_stock_picking_wave_type,stock.picking.wave.type stock users,model_stock_picking_wave_type,stock.group_stock_user,1,1,1,1 +access_stock_picking_wave,stock.picking.wave stock users,model_stock_picking_wave,stock.group_stock_user,1,1,1,1
\ No newline at end of file diff --git a/addons/stock_picking_wave/stock_picking_wave.py b/addons/stock_picking_wave/stock_picking_wave.py index 33148cac6f0..a6bef3ad32c 100644 --- a/addons/stock_picking_wave/stock_picking_wave.py +++ b/addons/stock_picking_wave/stock_picking_wave.py @@ -7,23 +7,23 @@ class stock_picking_wave(osv.osv): _order = "name desc" _columns = { 'name': fields.char('name', required=True, help='Name of the picking wave'), - 'partner_id': fields.many2one('res.partner', 'Responsible', help='Person responsible for this wave'), + 'user_id': fields.many2one('res.users', 'Responsible', help='Person responsible for this wave'), 'time': fields.float('Time', help='Time it will take to perform the wave'), 'picking_ids': fields.one2many('stock.picking', 'wave_id', 'Pickings', help='List of picking associated to this wave'), 'capacity': fields.float('Capacity', help='The capacity of the transport used to get the goods'), 'capacity_uom': fields.many2one('product.uom', 'Unit of Measure', help='The Unity Of Measure of the transport capacity'), - 'wave_type_id': fields.many2one('stock.picking.wave.type', 'Picking Wave Type'), - 'state': fields.selection([('in_progress', 'Running'), ('done', 'Done'), ('cancel', 'Cancelled')], required=True), + 'state': fields.selection([('draft', 'Draft'), ('in_progress', 'Running'), ('done', 'Done'), ('cancel', 'Cancelled')], required=True), } _defaults = { 'name': '/', - 'state': 'in_progress', + 'state': 'draft', } def confirm_picking(self, cr, uid, ids, context=None): picking_todo = self.pool.get('stock.picking').search(cr, uid, [('wave_id', 'in', ids)], context=context) - return self.pool.get('stock.picking').action_done(cr, uid, picking_todo, context=context) + self.write(cr, uid, ids, {'state': 'in_progress'}, context=context) + return self.pool.get('stock.picking').action_assign(cr, uid, picking_todo, context=context) def cancel_picking(self, cr, uid, ids, context=None): picking_todo = self.pool.get('stock.picking').search(cr, uid, [('wave_id', 'in', ids)], context=context) @@ -66,6 +66,16 @@ class stock_picking_wave(osv.osv): return super(stock_picking_wave, self).copy(cr, uid, id, default=default, context=context) def done(self, cr, uid, ids, context=None): + picking_todo = set() + for wave in self.browse(cr, uid, ids, context=context): + for picking in wave.picking_ids: + if picking.state in ('cancel', 'done'): + continue + if picking.state != 'assigned': + raise osv.except_osv(_('Warning'), _('Some pickings are still waiting for goods. Please check or force their availability before setting this wave to done.')) + picking_todo.add(picking.id) + if picking_todo: + self.pool.get('stock.picking').action_done(cr, uid, list(picking_todo), context=context) return self.write(cr, uid, ids, {'state': 'done'}, context=context) @@ -73,17 +83,4 @@ class stock_picking(osv.osv): _inherit = "stock.picking" _columns = { 'wave_id': fields.many2one('stock.picking.wave', 'Picking Wave', help='Picking wave associated to this picking'), - 'wave_type_ids': fields.related('partner_id', 'wave_type_ids', type="many2many", relation='stock.picking.wave.type', string='Picking Wave Type'), - } - -class res_partner(osv.osv): - _inherit = 'res.partner' - _columns = { - 'wave_type_ids': fields.many2many('stock.picking.wave.type', 'stock_picking_wave_type_rel', 'wave_type_id', 'partner_id', 'Picking Wave Type'), - } - -class stock_picking_wave_type(osv.osv): - _name = 'stock.picking.wave.type' - _columns = { - 'name': fields.char('Type', required=True), } diff --git a/addons/stock_picking_wave/stock_picking_wave_demo.xml b/addons/stock_picking_wave/stock_picking_wave_demo.xml index ffcdeb4462c..0ef026422ec 100644 --- a/addons/stock_picking_wave/stock_picking_wave_demo.xml +++ b/addons/stock_picking_wave/stock_picking_wave_demo.xml @@ -1,18 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <openerp> <data> - - <!-- - Add picking wave type - --> - <record id="wave_type_freeze" model="stock.picking.wave.type"> - <field name="name">Type Freeze</field> - </record> - - <record id="wave_type_dry" model="stock.picking.wave.type"> - <field name="name">Type Dry</field> - </record> - <!-- Add picking wave --> @@ -20,17 +8,14 @@ <field name="name">Picking Dry for John</field> <field name="capacity">15</field> <field name="capacity_uom" ref="product.product_uom_ton" /> - <field name="state">in_progress</field> - <field name="wave_type_id" ref="wave_type_dry" /> - + <field name="state">in_progress</field> </record> <record id="stock_picking_wave_freeze_1" model="stock.picking.wave"> <field name="name">Picking Freeze for Mickael</field> <field name="capacity">600</field> <field name="capacity_uom" ref="product.product_uom_kgm" /> - <field name="state">in_progress</field> - <field name="wave_type_id" ref="wave_type_freeze" /> + <field name="state">in_progress</field> </record> <!-- diff --git a/addons/stock_picking_wave/stock_picking_wave_view.xml b/addons/stock_picking_wave/stock_picking_wave_view.xml index 19a0b286353..c6f920e01d2 100644 --- a/addons/stock_picking_wave/stock_picking_wave_view.xml +++ b/addons/stock_picking_wave/stock_picking_wave_view.xml @@ -6,15 +6,14 @@ <field name="arch" type="xml"> <form string="Stock Picking Waves" version="7.0"> <header> + <button name="confirm_picking" states="draft" string="Confirm" type="object" class="oe_highlight"/> <button name="done" states="in_progress" string="Done" type="object" class="oe_highlight"/> <button name="cancel_picking" string="Cancel" type="object" states="in_progress"/> <field name="state" widget="statusbar" statusbar_visible="in_progress,done"/> </header> <sheet> <div class="oe_right oe_button_box"> - <button name="print_picking" string="Print all internal pickings" type="object" context="{'report':'stock.picking.list.internal'}"/> - <button name="print_picking" string="Print all in/out pickings" type="object" context="{'report':'stock.picking.list'}"/> - <button name="confirm_picking" string="Confirm all pickings" type="object"/> + <button name="print_picking" string="Print all pickings" type="object" context="{'report':'stock.picking.list.internal'}"/> </div> <div class="oe_title"> <h1> @@ -23,8 +22,7 @@ </div> <group> <group> - <field name="partner_id"/> - <field name="wave_type_id"/> + <field name="user_id"/> </group> <group> <label for="capacity"/> @@ -36,7 +34,7 @@ </group> </group> <separator string="Pickings"/> - <field name="picking_ids" widget="many2many"> + <field name="picking_ids" widget="many2many" domain="[('state', 'not in', ('done', 'cancel'))]"> <tree> <field name="name"/> <field name="backorder_id"/> @@ -44,7 +42,8 @@ <field name="date"/> <field name="min_date"/> <field name="state"/> - <button name="action_done" string="Confirm picking" type="object" icon="gtk-apply" attrs="{'invisible': [('state', 'in', ('done', 'cancel'))]}"/> + <button name="action_assign" string="Confirm picking" type="object" icon="gtk-apply" attrs="{'invisible': [('state', 'in', ('done', 'cancel', 'confirmed', 'assigned'))]}"/> + <button name="force_assign" string="Force availability" type="object" icon="gtk-go-forward" attrs="{'invisible': [('state', 'in', ('done', 'cancel', 'draft', 'assigned'))]}"/> <button name="action_cancel" string="Cancel picking" type="object" icon="gtk-cancel" attrs="{'invisible': [('state', 'in', ('done', 'cancel'))]}"/> </tree> </field> @@ -60,10 +59,9 @@ <field name="arch" type="xml"> <tree string="Stock Picking Waves" colors="black:state in ('in_progress','done');grey: state=='cancel'"> <field name="name"/> - <field name="partner_id"/> + <field name="user_id"/> <field name="capacity"/> <field name="capacity_uom"/> - <field name="wave_type_id"/> <field name="time" widget="float_time"/> <field name="state"/> </tree> @@ -77,9 +75,9 @@ <search string="Search Picking Waves"> <field name="name" string="Picking Wave"/> <filter name="in_progress" string="In Progress" domain="[('state','=', 'in_progress')]" help="Picking Waves not finished"/> - <field name="partner_id"/> + <field name="user_id"/> <group expand="0" string="Group By..."> - <filter string="Partner" domain="[]" context="{'group_by':'partner_id'}"/> + <filter string="User" domain="[]" context="{'group_by':'user_id'}"/> <filter string="State" domain="[]" context="{'group_by':'state'}"/> </group> </search> @@ -113,10 +111,7 @@ <field name="inherit_id" ref="stock.view_picking_form"/> <field name="arch" type="xml"> <xpath expr="//field[@name='picking_type_id']" position="after"> - <field name="wave_id"/> - </xpath> - <xpath expr="//field[@name='move_type']" position="after"> - <field name="wave_type_ids" widget="many2many_tags"/> + <field name="wave_id" domain="[('state', 'not in', ('done', 'cancel'))]"/> </xpath> </field> </record> @@ -126,7 +121,6 @@ <field name="inherit_id" ref="stock.vpicktree"/> <field name="arch" type="xml"> <xpath expr="//field[@name='picking_type_id']" position="after"> - <field name="wave_type_ids" invisible="1"/> <field name="wave_id"/> </xpath> </field> @@ -139,22 +133,8 @@ <xpath expr="//filter[@string='Picking Type']" position="after"> <filter string="Wave" domain="[]" context="{'group_by':'wave_id'}"/> </xpath> - <xpath expr="//field[@name='picking_type_id']" position="after"> - <field name="wave_type_ids"/> - </xpath> </field> </record> - <record model="ir.ui.view" id="partner_wave_type"> - <field name="name">partner.wave.type.view</field> - <field name="model">res.partner</field> - <field name="inherit_id" ref="base.view_partner_form" /> - <field name="arch" type="xml"> - <xpath expr="//field[@name='active']" position="after"> - <field name="wave_type_ids" widget="many2many_tags"/> - </xpath> - </field> - </record> - </data> </openerp> |
