X-Git-Url: https://git.heureux-cyclage.org/?p=burette%2Fremembership.git;a=blobdiff_plain;f=remembership.py;h=207225867414848e412221870394ca112dbec7d8;hp=20047709aba5b5d8830ada53d0bf65f948e7b74b;hb=9efdcb4433b01c194c03a71f64485ebdeca038d1;hpb=03e884c839ad12ec33540cffb07217b0d762e2a7 diff --git a/remembership.py b/remembership.py index 2004770..2072258 100644 --- a/remembership.py +++ b/remembership.py @@ -92,4 +92,36 @@ class Partner(osv.osv): Partner() +class account_invoice_line(osv.osv): + _inherit='account.invoice.line' + + def write(self, cr, uid, ids, vals, context=None): + """Overrides orm write method + """ + member_line_obj = self.pool.get('membership.membership_line') + res = super(account_invoice_line, self).write(cr, uid, ids, vals, context=context) + for line in self.browse(cr, uid, ids, context=context): + if line.invoice_id.type == 'out_invoice': + ml_ids = member_line_obj.search(cr, uid, [('account_invoice_line', '=', line.id)], context=context) + if line.product_id and line.product_id.membership and not ml_ids: + # Product line has changed to a membership product + 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 + member_line_obj.create(cr, uid, { + 'partner': line.invoice_id.partner_id.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) + if line.product_id and not line.product_id.membership and ml_ids: + # Product line has changed to a non membership product + member_line_obj.unlink(cr, uid, ml_ids, context=context) + return res + +account_invoice_line() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: