Merge lp:~akretion-team/openobject-addons/purchase_dates_refactor into lp:openobject-addons

Proposed by Benoit Guillot - http://www.akretion.com
Status: Merged
Merged at revision: 6153
Proposed branch: lp:~akretion-team/openobject-addons/purchase_dates_refactor
Merge into: lp:openobject-addons
Diff against target: 31 lines (+11/-3)
1 file modified
purchase/purchase.py (+11/-3)
To merge this branch: bzr merge lp:~akretion-team/openobject-addons/purchase_dates_refactor
Reviewer Review Type Date Requested Status
Olivier Dony (Odoo) Approve
Raphaël Valyi - http://www.akretion.com (community) Needs Fixing
Review via email: mp+86670@code.launchpad.net

Description of the change

This is a refactoring of schedule_date and order_dates in order to overload them easily. I just defined 2 new functions : _get_schedule_date and _get_order_dates. I need it for a module calculating the expeditions considering the working time.

To post a comment you must log in.
Revision history for this message
Raphaël Valyi - http://www.akretion.com (rvalyi) wrote :

Hello Benoit,

I'm not 100% sure, but I suggest you change the signature of the methods you are introducing so that you pass the procurement object. That may allow to to access exra product or partner or order delay properties to compute the dates with more flexibility. Else please can you justify your choice not to pass the procurement object?

Regards.

review: Needs Fixing
Revision history for this message
Benoit Guillot - http://www.akretion.com (benoit-guillot-z) wrote :

Hello Raphaël,

I have changed the method, and pass the procurement object.

Regards.

Revision history for this message
Olivier Dony (Odoo) (odo-openerp) wrote :

Hi,

The idea is good, but in addition to passing high-level objects as much as possible in that API, it's important to have clear and explicit method names and a proper docstring. I'll fix this while merging, don't hesitate to do it directly next time ;-)

Note also that this patch only covers the computation of dates, so perhaps you'd need a refactoring to use a separate method for preparing the PO and PO lines completely (e.g. a _prepare_xxx(), as was done recently for other cases), allowing custom modules to more easily override other values.

Thanks for the patch!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'purchase/purchase.py'
2--- purchase/purchase.py 2011-12-21 15:39:24 +0000
3+++ purchase/purchase.py 2011-12-22 16:12:38 +0000
4@@ -828,6 +828,15 @@
5 po_vals.update({'order_line': [(0,0,line_vals)]})
6 return self.pool.get('purchase.order').create(cr, uid, po_vals, context=context)
7
8+ def _get_schedule_date(self, cr, uid, procurement, company, context=None):
9+ procurement_date_planned = datetime.strptime(procurement.date_planned, '%Y-%m-%d %H:%M:%S')
10+ schedule_date = (procurement_date_planned - relativedelta(days=company.po_lead))
11+ return schedule_date
12+
13+ def _get_order_dates(self, cr, uid, schedule_date, seller_delay, context=None):
14+ order_dates = schedule_date - relativedelta(days=seller_delay)
15+ return order_dates
16+
17 def make_po(self, cr, uid, ids, context=None):
18 """ Make purchase order from procurement
19 @return: New created Purchase Orders procurement wise
20@@ -860,9 +869,8 @@
21
22 price = pricelist_obj.price_get(cr, uid, [pricelist_id], procurement.product_id.id, qty, partner_id, {'uom': uom_id})[pricelist_id]
23
24- order_date = datetime.strptime(procurement.date_planned, '%Y-%m-%d %H:%M:%S')
25- schedule_date = (order_date - relativedelta(days=company.po_lead))
26- order_dates = schedule_date - relativedelta(days=seller_delay)
27+ schedule_date = self._get_schedule_date(cr, uid, procurement, company, context=context)
28+ order_dates = self._get_order_dates(cr, uid, schedule_date, seller_delay, context=context)
29
30 #Passing partner_id to context for purchase order line integrity of Line name
31 context.update({'lang': partner.lang, 'partner_id': partner_id})

Subscribers

People subscribed via source and target branches

to all changes: