Merge lp:~camptocamp/openobject-addons/7.0-fix_1220716-rha+srt+afe into lp:openobject-addons/7.0

Proposed by Alexandre Fayolle - camptocamp
Status: Needs review
Proposed branch: lp:~camptocamp/openobject-addons/7.0-fix_1220716-rha+srt+afe
Merge into: lp:openobject-addons/7.0
Diff against target: 126 lines (+61/-13)
4 files modified
purchase_requisition/purchase_requisition.py (+37/-6)
purchase_requisition/test/cancel_purchase_requisition.yml (+6/-6)
purchase_requisition/test/purchase_requisition.yml (+11/-0)
purchase_requisition/test/purchase_requisition_demo.yml (+7/-1)
To merge this branch: bzr merge lp:~camptocamp/openobject-addons/7.0-fix_1220716-rha+srt+afe
Reviewer Review Type Date Requested Status
OpenERP Core Team Pending
Review via email: mp+209937@code.launchpad.net

Description of the change

I rebased the changes of Rifakat <email address hidden> on top of the 7.0 branch, fixing the conflicts in the way Stefan Rijnhart (Therp) (stefan-therp) suggested in the other MP, and added fixes I made for OCB in order to repair the tests so that runbot should be green for this branch.

To post a comment you must log in.
Revision history for this message
Rifakat Husen (OpenERP) (rha-openerp) wrote :

Hi,

_requisition_procurement_cancel() would become private method, could we change the name? What do you say?

Regards.

Revision history for this message
Alexandre Fayolle - camptocamp (alexandre-fayolle-c2c) wrote :

Hi Rifakat,

I think that introducing a new public method in stable is not accepted, so in order to give this patch a chance of getting merged I'm -1 on changing the name.

Revision history for this message
Rifakat Husen (OpenERP) (rha-openerp) wrote :

Yes right. Thanks Alexandre.

Unmerged revisions

9878. By Alexandre Fayolle - camptocamp

[FIX] purchase_requisition: fix broken test

cancel_purchase_requisition.yml:
  * use a different requisition from the one processed int purchase_requision.yml
  * fix the 'I delete requisition' step which used to destroy a purchase.order

purchase_requisition.yml:
  * add a check taht the purchase.requisition cannot be cancelled if the purchase.order are not cancelled first.

9877. By Rifakat Husen (OpenERP)

[IMP] refactorize code by adding new function to be reused from unlink() and tender_cancel()

9876. By Rifakat Husen (OpenERP)

[FIX] purchase_requisition: restricitng deletion of PR and also imp for cancelling PR

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'purchase_requisition/purchase_requisition.py'
--- purchase_requisition/purchase_requisition.py 2013-11-26 18:07:26 +0000
+++ purchase_requisition/purchase_requisition.py 2014-03-07 14:48:16 +0000
@@ -65,14 +65,45 @@
65 'name': self.pool.get('ir.sequence').get(cr, uid, 'purchase.order.requisition'),65 'name': self.pool.get('ir.sequence').get(cr, uid, 'purchase.order.requisition'),
66 })66 })
67 return super(purchase_requisition, self).copy(cr, uid, id, default, context)67 return super(purchase_requisition, self).copy(cr, uid, id, default, context)
68 68
69 def unlink(self, cr, uid, ids, context=None):
70 """
71 Deletes Requisition and related RFQs
72 """
73 if context is None: context = {}
74 purchase_obj = self.pool.get('purchase.order')
75 purchase_ids = self._requisition_procurement_cancel(cr, uid, ids, context=context)
76 if purchase_ids:
77 purchase_obj.unlink(cr, uid, purchase_ids, context=context)
78 return super(purchase_requisition, self).unlink(cr, uid, ids, context=context)
79
80 def _requisition_procurement_cancel(self, cr, uid, ids, context=None):
81 """
82 Cancels procurement order related to requisition
83 @param ids: requisition ids
84 @return: Returns purchase orders associated with requisition if any
85 """
86 if context is None: context = {}
87 purchase_ids = []
88 procurement_ids = []
89 procurement_obj = self.pool.get('procurement.order')
90 for requisition in self.browse(cr, uid, ids, context=context):
91 purchase_ids.extend(purchase.id for purchase in requisition.purchase_ids)
92 if requisition.state == 'cancel':
93 continue
94 procurement_ids.extend(procurement_obj.search(cr, uid,
95 [('requisition_id', '=', requisition.id)], context=context))
96 if procurement_ids:
97 procurement_obj.action_cancel(cr, uid, procurement_ids)
98 return purchase_ids
99
69 def tender_cancel(self, cr, uid, ids, context=None):100 def tender_cancel(self, cr, uid, ids, context=None):
101 if context is None: context = {}
70 purchase_order_obj = self.pool.get('purchase.order')102 purchase_order_obj = self.pool.get('purchase.order')
71 for purchase in self.browse(cr, uid, ids, context=context):103 purchase_ids = self._requisition_procurement_cancel(cr, uid, ids, context=context)
72 for purchase_id in purchase.purchase_ids:104 if purchase_ids:
73 if str(purchase_id.state) in('draft'):105 purchase_order_obj.action_cancel(cr, uid, purchase_ids, context=context)
74 purchase_order_obj.action_cancel(cr,uid,[purchase_id.id])106 return self.write(cr, uid, ids, {'state': 'cancel'}, context=context)
75 return self.write(cr, uid, ids, {'state': 'cancel'})
76107
77 def tender_in_progress(self, cr, uid, ids, context=None):108 def tender_in_progress(self, cr, uid, ids, context=None):
78 return self.write(cr, uid, ids, {'state':'in_progress'} ,context=context)109 return self.write(cr, uid, ids, {'state':'in_progress'} ,context=context)
79110
=== modified file 'purchase_requisition/test/cancel_purchase_requisition.yml'
--- purchase_requisition/test/cancel_purchase_requisition.yml 2011-12-02 05:15:06 +0000
+++ purchase_requisition/test/cancel_purchase_requisition.yml 2014-03-07 14:48:16 +0000
@@ -2,25 +2,25 @@
2 I cancel requisition.2 I cancel requisition.
3-3-
4 !python {model: purchase.requisition}: |4 !python {model: purchase.requisition}: |
5 self.tender_cancel(cr, uid, [ref("requisition1")])5 self.tender_cancel(cr, uid, [ref("requisition2")])
6-6-
7 I check requisition after cancelled.7 I check requisition after cancelled.
8-8-
9 !assert {model: purchase.requisition, id: requisition1}:9 !assert {model: purchase.requisition, id: requisition2}:
10 - state == 'cancel'10 - state == 'cancel'
11-11-
12 I reset requisition as "New".12 I reset requisition as "New".
13-13-
14 !python {model: purchase.requisition}: |14 !python {model: purchase.requisition}: |
15 self.tender_reset(cr, uid, [ref('requisition1')])15 self.tender_reset(cr, uid, [ref('requisition2')])
16-16-
17 I duplicate requisition.17 I duplicate requisition.
18-18-
19 !python {model: purchase.requisition}: |19 !python {model: purchase.requisition}: |
20 self.copy(cr, uid, ref('requisition1'))20 self.copy(cr, uid, ref('requisition2'))
21-21-
22 I delete requisition.22 I delete requisition.
23-23-
24 !python {model: purchase.order}: |24 !python {model: purchase.requisition}: |
25 self.unlink(cr, uid, [ref("requisition1")])25 self.unlink(cr, uid, [ref("requisition2")])
2626
2727
=== modified file 'purchase_requisition/test/purchase_requisition.yml'
--- purchase_requisition/test/purchase_requisition.yml 2012-11-29 22:26:45 +0000
+++ purchase_requisition/test/purchase_requisition.yml 2014-03-07 14:48:16 +0000
@@ -88,3 +88,14 @@
88 (data, format) = netsvc.LocalService('report.purchase.requisition').create(cr, uid, [ref('purchase_requisition.requisition1')], {}, {})88 (data, format) = netsvc.LocalService('report.purchase.requisition').create(cr, uid, [ref('purchase_requisition.requisition1')], {}, {})
89 if tools.config['test_report_directory']:89 if tools.config['test_report_directory']:
90 file(os.path.join(tools.config['test_report_directory'], 'purchase_requisition-purchase_requisition_report.'+format), 'wb+').write(data)90 file(os.path.join(tools.config['test_report_directory'], 'purchase_requisition-purchase_requisition_report.'+format), 'wb+').write(data)
91-
92 I check that I cannot cancel the requisision
93-
94 !python {model: purchase.requisition}: |
95 from openerp.osv.osv import except_osv
96 try:
97 self.tender_cancel(cr, uid, [ref("requisition1")])
98 except except_osv, exc:
99 assert exc.args == (u'Unable to cancel this purchase order.', u'First cancel all receptions related to this purchase order.')
100 else:
101 assert False, 'tender_cancel should have failed'
91102
=== modified file 'purchase_requisition/test/purchase_requisition_demo.yml'
--- purchase_requisition/test/purchase_requisition_demo.yml 2013-01-03 23:10:05 +0000
+++ purchase_requisition/test/purchase_requisition_demo.yml 2014-03-07 14:48:16 +0000
@@ -7,4 +7,10 @@
7 - product_id: product.product_product_97 - product_id: product.product_product_9
8 product_qty: 10.08 product_qty: 10.0
9 product_uom_id: product.product_uom_unit9 product_uom_id: product.product_uom_unit
10 10-
11 !record {model: purchase.requisition, id: requisition2}:
12 exclusive: exclusive
13 line_ids:
14 - product_id: product.product_product_13
15 product_qty: 10.0
16 product_uom_id: product.product_uom_unit