X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=remembership.py;h=113d0a960877aa7704f6c4fe48320ad21c07f951;hb=784e4148b5dd149e6c35a9cb206c538dcb3cba39;hp=260e56edd0fbe3957b595a558c6e964cd2fdcffb;hpb=a8b8dd5c849171c2a3583fa5d9069bb551cb4780;p=burette%2Fremembership.git diff --git a/remembership.py b/remembership.py index 260e56e..113d0a9 100644 --- a/remembership.py +++ b/remembership.py @@ -24,30 +24,41 @@ from osv import osv from osv import fields + class Partner(osv.osv): _inherit = 'res.partner' _columns = { - 'member_ident': fields.char('Member identifier', size=64, readonly=True), + 'member_ident': fields.char('Member identifier', size=64), + 'associate_members': fields.one2many('res.partner', 'associate_member', 'Associate members', help='Members who are associated to this partner.'), } + _sql_constraints = [ + ('member_ident_uniq', 'unique(member_ident, company_id)', 'The member identifier must be unique !'), + ] + Partner() class account_invoice_line(osv.osv): - _inherit='account.invoice.line' + _inherit = 'account.invoice.line' def create(self, cr, uid, vals, context=None): 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: + partners = [line.invoice_id.partner_id] + partners.extend(line.invoice_id.partner_id.associate_members) + 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() + class pos_make_payment(osv.osv_memory): _inherit = 'pos.make.payment'