X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=remembership.py;h=84b7d9b63cd4d85e3e697a02a2909330ba0e7964;hb=554aa60e422b30172ed4ce8aa4cf88f1b94627bd;hp=72b560202b15fbdf70fd48b46cc4d896d920c59d;hpb=3b66c4d30be6b33a91e7781bc1ea486f568b5d7a;p=burette%2Fremembership.git diff --git a/remembership.py b/remembership.py index 72b5602..84b7d9b 100644 --- a/remembership.py +++ b/remembership.py @@ -23,6 +23,7 @@ from osv import osv from osv import fields +import time class Partner(osv.osv): @@ -44,7 +45,7 @@ class Product(osv.osv): _columns = { 'membership_grouped': fields.boolean('Grouped membership product', help='Check if it\'s a grouped membership product.'), - 'membership_date2date': fields.boolean('Date to date membership product', help='Check if it\'s a date to date membership product.'), + 'membership_date2date': fields.boolean('Date to date membership product', required=False, help='Check if it\'s a date to date membership product.'), } Product() @@ -54,12 +55,34 @@ class account_invoice_line(osv.osv): _inherit = 'account.invoice.line' def create(self, cr, uid, vals, context=None): + member_line_obj = self.pool.get('membership.membership_line') res = super(account_invoice_line, self).create(cr, uid, vals, context=context) line = self.browse(cr, uid, res, context=context) - if line.invoice_id.type == 'out_invoice': - if line.product_id and line.product_id.membership and not line.invoice_id.partner_id.member_ident: - mbr_id = self.pool.get('ir.sequence').get(cr, uid, 'member_ident') - self.pool.get('res.partner').write(cr, uid, line.invoice_id.partner_id.id, {'member_ident': mbr_id}) + + if line.invoice_id.type == 'out_invoice' and line.product_id and line.product_id.membership: + date_from = line.product_id.membership_date_from + date_to = line.product_id.membership_date_to + if line.invoice_id.date_invoice > date_from and line.invoice_id.date_invoice < date_to: + date_from = line.invoice_id.date_invoice + partners = [line.invoice_id.partner_id] + if line.product_id.membership_grouped and line.invoice_id.partner_id.associate_members: + partners.extend(line.invoice_id.partner_id.associate_members) + #Adding membership line just for associate partners + for associate_member in line.invoice_id.partner_id.associate_members: + member_line_obj.create(cr, uid, { + 'partner': associate_member.id, + 'membership_id': line.product_id.id, + 'member_price': line.price_unit, + 'date': time.strftime('%Y-%m-%d'), + 'date_from': date_from, + 'date_to': date_to, + 'account_invoice_line': line.id, + }, context=context) + #Define member ident if it's necessary + for i in partners: + if not i.member_ident: + mbr_id = self.pool.get('ir.sequence').get(cr, uid, 'member_ident') + self.pool.get('res.partner').write(cr, uid, i.id, {'member_ident': mbr_id}) return res account_invoice_line()