# -*- coding: utf-8 -*- # Copyright (C) 2016-Today: La Louve (<http://www.lalouve.net/>) # @author: Julien Weste (julien.weste@akretion.com) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from openerp import api, fields, models class ResPartner(models.Model): _inherit = "res.partner" @api.multi @api.depends('capital_certificate_ids') def _compute_capital_certificate_count(self): for partner in self: partner.capital_certificate_count = len( partner.capital_certificate_ids) capital_certificate_ids = fields.One2many( string="Capital Certificates", comodel_name="capital.certificate", inverse_name="partner_id") capital_certificate_count = fields.Integer( string="Capital Certificates count", compute="_compute_capital_certificate_count") @api.multi def generate_certificate(self, year=False, send_mail=False): if not year: return False aml_obj = self.env['account.move.line'] cc_obj = self.env['capital.certificate'] mail_template = self.env.ref( "coop_capital_certificate.capital_certificate_mail_template") min_date = "%s-01-01" % (year) max_date = "%s-01-01" % (year + 1) cfc_obj = self.env['capital.fundraising.category'] account_list = tuple( [c.capital_account_id.id for c in cfc_obj.search([])]) for partner in self: lines = [] aml_ids = aml_obj.search([ ('partner_id', '=', partner.id), ('date', '>=', min_date), ('date', '<', max_date), ('account_id', 'in', account_list), ('credit', '>', 0), ], order='account_id') for aml in aml_ids: price = aml.product_id.list_price qty = aml.credit / price lines.append({ 'account_move_line_id': aml.id, 'date': aml.invoice_id.date_invoice, 'qty': qty, 'product': aml.product_id.name, 'price': price, 'payment_date': aml.date, }) lines = map(lambda x: (0, 0, x), lines) cc = cc_obj.create({ 'partner_id': partner.id, 'year': year, 'template_id': mail_template.id, 'line_ids': lines, }) cc.create_certificate(send_mail)