import time
from datetime import datetime, date
from dateutil.relativedelta import relativedelta
+from openerp.tools.translate import _
class Partner(osv.osv):
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:
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 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':
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")
+ 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
]
, 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
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")
+ 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
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,
'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: