[grouped] [date2date] : fix : account_invoice_line : write : date_from.
[burette/remembership.git] / remembership.py
index 849afcf..b88034f 100644 (file)
@@ -26,6 +26,7 @@ from osv import fields
 import time
 from datetime import datetime, date
 from dateutil.relativedelta import relativedelta
+from openerp.tools.translate import _
 
 
 class Partner(osv.osv):
@@ -60,7 +61,7 @@ class Partner(osv.osv):
                         print ("DEV: [_membership_date] [associate] date_from: %s" % str(res[partner.id]['membership_start']))
                     else:
                         print ("DEV: [_membership_date] date_from: %s" % str(res[partner.id]['membership_start']))
-            
+
             if name == 'membership_stop':
                 line_id1 = member_line_obj.search(cr, uid, [('partner', '=', partner_id),('date_cancel','=',False)],
                             limit=1, order='date_to desc', context=context)
@@ -71,7 +72,7 @@ class Partner(osv.osv):
                         print ("DEV: [_membership_date] [associate] date_to: %s" % str(res[partner.id]['membership_stop']))
                     else:
                         print ("DEV: [_membership_date] date_to: %s" % str(res[partner.id]['membership_stop']))
-            
+
             if name == 'membership_cancel':
                 if partner.membership_state == 'canceled':
                     line_id2 = member_line_obj.search(cr, uid, [('partner', '=', partner.id)], limit=1, order='date_cancel', context=context)
@@ -181,7 +182,10 @@ class account_invoice_line(osv.osv):
                         date_from = member_line.date_from
                         date_to   = member_line.date_to
                         if line.product_id.membership_date2date:
-                            date_from = context['date_from'] and datetime.strptime(context['date_from'], "%Y-%m-%d") or date.today()
+                            date_from = ('date_from' in context
+                              and context['date_from']
+                              and datetime.strptime(context['date_from'], "%Y-%m-%d")
+                              or date.today())
                             date_to   = date_from + relativedelta(months = +12) # TODO: parameterize this delta?
                             date_from = date_from.strftime("%Y-%m-%d")
                             date_to   = date_to  .strftime("%Y-%m-%d")
@@ -279,6 +283,8 @@ class account_invoice_line(osv.osv):
                         'date_to': date_to,
                         'account_invoice_line': line.id,
                     }, context=context)
+            elif line.product_id.membership_grouped and not line.invoice_id.partner_id.associate_members:
+                raise osv.except_osv(_('Error!!!'), _('You try to invoice grouped membership product to a partner who hasn\'t associated partners.'))
             #Define member ident if it's necessary
             for i in partners:
                 if not i.member_ident: