summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorQuentin (OpenERP) <qdp-launchpad@openerp.com>2013-09-04 17:01:37 +0200
committerQuentin (OpenERP) <qdp-launchpad@openerp.com>2013-09-04 17:01:37 +0200
commit7fe0d4f8407418b00a1f527438c706ea2bf3d955 (patch)
tree9abee28e2f629a365ef9afa4cbd12ef538d7313f /addons
parentcd64a655d74078ad4e2cfdc22ac131f0c18be9da (diff)
[FIX] purchase: workflow of PO wasn't correctly updated
bzr revid: qdp-launchpad@openerp.com-20130904150137-og2bu4ineae2o2ax
Diffstat (limited to 'addons')
-rw-r--r--addons/purchase/purchase.py33
-rw-r--r--addons/purchase/purchase_workflow.xml4
-rw-r--r--addons/purchase/stock.py6
-rw-r--r--addons/stock/stock.py5
4 files changed, 22 insertions, 26 deletions
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index aa14c8f26c1..4d42b22c65b 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -745,30 +745,26 @@ class purchase_order(osv.osv):
return [picking_id]
def test_moves_done(self, cr, uid, ids, context=None):
- done = True
+ '''PO is done at the delivery side if all the incoming shipments are done'''
for purchase in self.browse(cr, uid, ids, context=context):
- for line in purchase.order_line:
- for move in line.move_ids:
- if move.state != 'done':
- done = False
- return done
-
+ for picking in purchase.picking_ids:
+ if picking.state != 'done':
+ return False
+ return True
def test_moves_except(self, cr, uid, ids, context=None):
+ ''' PO is in exception at the delivery side if one of the picking is canceled
+ and the other pickings are completed (done or canceled)
'''
- If one of the pickings is cancel and the other pickings are done: except
- '''
- cancel = False
+ at_least_one_canceled = False
alldoneorcancel = True
for purchase in self.browse(cr, uid, ids, context=context):
- for line in purchase.order_line:
- for move in line.move_ids:
- if move.state == 'cancel':
- cancel = True
- if move.state not in ['done', 'cancel']:
- alldoneorcancel = False
- return cancel and alldoneorcancel
-
+ for picking in purchase.picking_ids:
+ if picking.state == 'cancel':
+ at_least_one_canceled = True
+ if picking.state not in ['done', 'cancel']:
+ alldoneorcancel = False
+ return at_least_one_canceled and alldoneorcancel
def move_lines_get(self, cr, uid, ids, *args):
res = []
@@ -777,7 +773,6 @@ class purchase_order(osv.osv):
res += [x.id for x in line.move_ids]
return res
-
def action_picking_create(self, cr, uid, ids, context=None):
picking_ids = []
for order in self.browse(cr, uid, ids):
diff --git a/addons/purchase/purchase_workflow.xml b/addons/purchase/purchase_workflow.xml
index 294dad28d92..176c133bcc6 100644
--- a/addons/purchase/purchase_workflow.xml
+++ b/addons/purchase/purchase_workflow.xml
@@ -186,13 +186,13 @@
<field name="act_to" ref="act_cancel"/>
<field name="signal">purchase_cancel</field>
</record>
- <!--<record id="trans_picking_except_picking" model="workflow.transition">
+ <record id="trans_picking_except_picking" model="workflow.transition">
<field name="act_from" ref="act_picking"/>
<field name="act_to" ref="act_except_picking"/>
<field name="trigger_model">stock.move</field>
<field name="trigger_expr_id">move_lines_get()</field>
<field name="condition">test_moves_except()</field>
- </record>-->
+ </record>
<record id="trans_invoice_except_invoice" model="workflow.transition">
<field name="act_from" ref="act_invoice"/>
<field name="act_to" ref="act_except_invoice"/>
diff --git a/addons/purchase/stock.py b/addons/purchase/stock.py
index 2da42f8f5d3..ef1d5107093 100644
--- a/addons/purchase/stock.py
+++ b/addons/purchase/stock.py
@@ -29,8 +29,10 @@ class stock_move(osv.osv):
readonly=True),
}
- def action_done(self, cr ,uid, ids, context=None):
- res = super(stock_move, self).action_done(cr, uid, ids, context)
+ def write(self, cr, uid, ids, vals, context=None):
+ if isinstance(ids, (int, long)):
+ ids = [ids]
+ res = super(stock_move, self).write(cr, uid, ids, vals, context=context)
wf_service = netsvc.LocalService('workflow')
for id in ids:
wf_service.trg_trigger(uid, 'stock.move', id, cr)
diff --git a/addons/stock/stock.py b/addons/stock/stock.py
index de28462f03e..21ad4f93f11 100644
--- a/addons/stock/stock.py
+++ b/addons/stock/stock.py
@@ -2397,11 +2397,10 @@ class stock_picking_type(osv.osv):
res = []
if not ids:
return res
- reads = self.browse(cr, uid, ids, context=context)
- for record in reads:
+ for record in self.browse(cr, uid, ids, context=context):
name = record.name
if record.warehouse_id:
- name = record.warehouse_id.name+': '+name
+ name = record.warehouse_id.name + ': ' +name
res.append((record.id, name))
return res