[grouped] [date2date] : fix : account_invoice_line : write : date_from.
[burette/remembership.git] / remembership.py
index 733f00d..b88034f 100644 (file)
@@ -26,6 +26,7 @@ from osv import fields
 import time
 from datetime import datetime, date
 from dateutil.relativedelta import relativedelta
 import time
 from datetime import datetime, date
 from dateutil.relativedelta import relativedelta
+from openerp.tools.translate import _
 
 
 class Partner(osv.osv):
 
 
 class Partner(osv.osv):
@@ -37,6 +38,7 @@ class Partner(osv.osv):
         name = name[0]
         res = {}
         member_line_obj = self.pool.get('membership.membership_line')
         name = name[0]
         res = {}
         member_line_obj = self.pool.get('membership.membership_line')
+        print ("DEV: [remembership] [_membership_date]")
         for partner in self.browse(cr, uid, ids, context=context):
             # XXX: commented part from openerp/addons/membership/membership.py
             #if partner.associate_member:
         for partner in self.browse(cr, uid, ids, context=context):
             # XXX: commented part from openerp/addons/membership/membership.py
             #if partner.associate_member:
@@ -55,6 +57,10 @@ class Partner(osv.osv):
                 if line_id:
                     res[partner.id]['membership_start'] = member_line_obj.read(cr, uid, line_id[0],
                             ['date_from'], context=context)['date_from']
                 if line_id:
                     res[partner.id]['membership_start'] = member_line_obj.read(cr, uid, line_id[0],
                             ['date_from'], context=context)['date_from']
+                    if partner.associate_member:
+                        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)],
 
             if name == 'membership_stop':
                 line_id1 = member_line_obj.search(cr, uid, [('partner', '=', partner_id),('date_cancel','=',False)],
@@ -62,6 +68,10 @@ class Partner(osv.osv):
                 if line_id1:
                     res[partner.id]['membership_stop'] = member_line_obj.read(cr, uid, line_id1[0],
                               ['date_to'], context=context)['date_to']
                 if line_id1:
                     res[partner.id]['membership_stop'] = member_line_obj.read(cr, uid, line_id1[0],
                               ['date_to'], context=context)['date_to']
+                    if partner.associate_member:
+                        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':
 
             if name == 'membership_cancel':
                 if partner.membership_state == 'canceled':
@@ -172,10 +182,15 @@ 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 = 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")
                             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")
+                        print ("DEV: [write] date_from: %s" % str(date_from))
+                        print ("DEV: [write] date_to  : %s" % str(date_to))
                         member_line_obj.write(cr, uid, member_line.id
                           , {'date_from': date_from
                             ,'date_to'  : date_to
                         member_line_obj.write(cr, uid, member_line.id
                           , {'date_from': date_from
                             ,'date_to'  : date_to
@@ -189,6 +204,8 @@ class account_invoice_line(osv.osv):
                                 ]
                               , context=context)
                             for associate_member_line in member_line_obj.browse(cr, uid, associate_member_line_ids, context=context):
                                 ]
                               , context=context)
                             for associate_member_line in member_line_obj.browse(cr, uid, associate_member_line_ids, context=context):
+                                print ("DEV: [write] [associate] date_from: %s" % str(date_from))
+                                print ("DEV: [write] [associate] date_to  : %s" % str(date_to))
                                 member_line_obj.write(cr, uid, associate_member_line.id
                                   , {'date_from': date_from
                                     ,'date_to'  : date_to
                                 member_line_obj.write(cr, uid, associate_member_line.id
                                   , {'date_from': date_from
                                     ,'date_to'  : date_to
@@ -236,10 +253,15 @@ 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 = 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")
                     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")
+                print ("DEV: [create] date_from: %s" % str(date_from))
+                print ("DEV: [create] date_to  : %s" % str(date_to))
                 member_line_obj.write(cr, uid, member_line.id
                   , {'date_from': date_from
                     ,'date_to'  : date_to
                 member_line_obj.write(cr, uid, member_line.id
                   , {'date_from': date_from
                     ,'date_to'  : date_to
@@ -250,6 +272,8 @@ class account_invoice_line(osv.osv):
                 partners.extend(line.invoice_id.partner_id.associate_members)
                 #Adding membership lines just for associate partners
                 for associate_member in line.invoice_id.partner_id.associate_members:
                 partners.extend(line.invoice_id.partner_id.associate_members)
                 #Adding membership lines just for associate partners
                 for associate_member in line.invoice_id.partner_id.associate_members:
+                    print ("DEV: [create] [associate] date_from: %s" % str(date_from))
+                    print ("DEV: [create] [associate] date_to  : %s" % str(date_to))
                     member_line_obj.create(cr, uid, {
                         'partner': associate_member.id,
                         'membership_id': line.product_id.id,
                     member_line_obj.create(cr, uid, {
                         'partner': associate_member.id,
                         'membership_id': line.product_id.id,
@@ -259,6 +283,8 @@ class account_invoice_line(osv.osv):
                         'date_to': date_to,
                         'account_invoice_line': line.id,
                     }, context=context)
                         '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:
             #Define member ident if it's necessary
             for i in partners:
                 if not i.member_ident: