Skip to content
Snippets Groups Projects
Commit 7b6f1763 authored by Jay Vora's avatar Jay Vora
Browse files

[FIX] Stock-MRP : Split production wizard made individual to mrp if mrp is not installed

lp bug: https://launchpad.net/bugs/383057 fixed

bzr revid: jvo@tinyerp.com-20091007143823-l2hx2mjzth33hv1z
parent 1996f293
No related branches found
No related tags found
No related merge requests found
......@@ -27,6 +27,13 @@
name="product.product.procurement"
keyword="client_action_multi"
id="product_procurement_wizard"/>
<wizard
id="stock.track_line"
model="stock.move"
multi="True"
name="mrp.stock.move.track"
string="Track line"/>
</data>
</openerp>
......@@ -28,6 +28,7 @@ import wizard_workcenter_load
import wizard_track_prod
import wizard_change_production_qty
import make_procurement
import wizard_track_line
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# -*- encoding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
# $Id$
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import wizard
import netsvc
import pooler
import time
from osv import osv
from tools.translate import _
track_form = '''<?xml version="1.0"?>
<form string="Tracking a move">
<field name="tracking_prefix"/>
<newline/>
<field name="quantity"/>
</form>
'''
fields = {
'tracking_prefix': {
'string': 'Tracking prefix',
'type': 'char',
'size': 64,
},
'quantity': {
'string': 'Quantity per lot',
'type': 'float',
'default': 1,
}
}
def _track_lines(self, cr, uid, data, context):
move_id = data['id']
pool = pooler.get_pool(cr.dbname)
prodlot_obj = pool.get('stock.production.lot')
move_obj = pool.get('stock.move')
production_obj = pool.get('mrp.production')
ir_sequence_obj = pool.get('ir.sequence')
sequence = ir_sequence_obj.get(cr, uid, 'stock.lot.serial')
if not sequence:
raise wizard.except_wizard(_('Error!'), _('No production sequence defined'))
if data['form']['tracking_prefix']:
sequence=data['form']['tracking_prefix']+'/'+(sequence or '')
move = move_obj.browse(cr, uid, [move_id])[0]
quantity=data['form']['quantity']
if quantity <= 0 or move.product_qty == 0:
return {}
uos_qty=quantity/move.product_qty*move.product_uos_qty
quantity_rest = move.product_qty%quantity
uos_qty_rest = quantity_rest/move.product_qty*move.product_uos_qty
update_val = {
'product_qty': quantity,
'product_uos_qty': uos_qty,
}
new_move = []
production_ids = []
for idx in range(int(move.product_qty//quantity)):
if idx:
current_move = move_obj.copy(cr, uid, move.id, {'state': move.state, 'production_id': move.production_id.id})
new_move.append(current_move)
else:
current_move = move.id
new_prodlot = prodlot_obj.create(cr, uid, {'name': sequence, 'ref': '%d'%idx}, {'product_id': move.product_id.id})
update_val['prodlot_id'] = new_prodlot
move_obj.write(cr, uid, [current_move], update_val)
production_ids = production_obj.search(cr, uid, [('move_lines', 'in', [move.id])])
if quantity_rest > 0:
idx = int(move.product_qty//quantity)
update_val['product_qty']=quantity_rest
update_val['product_uos_qty']=uos_qty_rest
if idx:
current_move = move_obj.copy(cr, uid, move.id, {'state': move.state, 'production_id': move.production_id.id})
current_move = move_obj.copy(cr, uid, move.id, {'state': move.state})
new_move.append(current_move)
else:
current_move = move.id
new_prodlot = prodlot_obj.create(cr, uid, {'name': sequence, 'ref': '%d'%idx}, {'product_id': move.product_id.id})
update_val['prodlot_id'] = new_prodlot
move_obj.write(cr, uid, [current_move], update_val)
products = production_obj.read(cr, uid, production_ids, ['move_lines'])
for p in products:
for new in new_move:
if new not in p['move_lines']:
p['move_lines'].append(new)
production_obj.write(cr, uid, [p['id']], {'move_lines': [(6, 0, p['move_lines'])]})
return {}
class wizard_track_move(wizard.interface):
states = {
'init': {
'actions': [],
'result': {'type': 'form', 'arch': track_form, 'fields': fields, 'state': [('end', 'Cancel', 'gtk-cancel'), ('track', 'Ok', 'gtk-ok')]},
},
'track': {
'actions': [_track_lines],
'result': {'type':'state', 'state':'end'}
}
}
wizard_track_move('mrp.stock.move.track')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
......@@ -54,7 +54,7 @@ def _track_lines(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
prodlot_obj = pool.get('stock.production.lot')
move_obj = pool.get('stock.move')
production_obj = pool.get('mrp.production')
# production_obj = pool.get('mrp.production')
ir_sequence_obj = pool.get('ir.sequence')
sequence = ir_sequence_obj.get(cr, uid, 'stock.lot.serial')
......@@ -77,24 +77,26 @@ def _track_lines(self, cr, uid, data, context):
'product_uos_qty': uos_qty,
}
new_move = []
production_ids = []
# production_ids = []
for idx in range(int(move.product_qty//quantity)):
if idx:
current_move = move_obj.copy(cr, uid, move.id, {'state': move.state, 'production_id': move.production_id.id})
# current_move = move_obj.copy(cr, uid, move.id, {'state': move.state, 'production_id': move.production_id.id})
current_move = move_obj.copy(cr, uid, move.id, {'state': move.state})
new_move.append(current_move)
else:
current_move = move.id
new_prodlot = prodlot_obj.create(cr, uid, {'name': sequence, 'ref': '%d'%idx}, {'product_id': move.product_id.id})
update_val['prodlot_id'] = new_prodlot
move_obj.write(cr, uid, [current_move], update_val)
production_ids = production_obj.search(cr, uid, [('move_lines', 'in', [move.id])])
# production_ids = production_obj.search(cr, uid, [('move_lines', 'in', [move.id])])
if quantity_rest > 0:
idx = int(move.product_qty//quantity)
update_val['product_qty']=quantity_rest
update_val['product_uos_qty']=uos_qty_rest
if idx:
current_move = move_obj.copy(cr, uid, move.id, {'state': move.state, 'production_id': move.production_id.id})
# current_move = move_obj.copy(cr, uid, move.id, {'state': move.state, 'production_id': move.production_id.id})
current_move = move_obj.copy(cr, uid, move.id, {'state': move.state})
new_move.append(current_move)
else:
current_move = move.id
......@@ -102,12 +104,12 @@ def _track_lines(self, cr, uid, data, context):
update_val['prodlot_id'] = new_prodlot
move_obj.write(cr, uid, [current_move], update_val)
products = production_obj.read(cr, uid, production_ids, ['move_lines'])
for p in products:
for new in new_move:
if new not in p['move_lines']:
p['move_lines'].append(new)
production_obj.write(cr, uid, [p['id']], {'move_lines': [(6, 0, p['move_lines'])]})
# products = production_obj.read(cr, uid, production_ids, ['move_lines'])
# for p in products:
# for new in new_move:
# if new not in p['move_lines']:
# p['move_lines'].append(new)
# production_obj.write(cr, uid, [p['id']], {'move_lines': [(6, 0, p['move_lines'])]})
return {}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment