From 8078341b761a59193a90f87d5a106d660de26642 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Thu, 5 Jan 2017 10:14:08 +0100 Subject: [PATCH] Inherit action_invoice_paid() instead of using a cron to generate tax receipts for invoices --- donation_sale/models/donation_sale.py | 28 ++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/donation_sale/models/donation_sale.py b/donation_sale/models/donation_sale.py index 83fe60d..78e67fe 100644 --- a/donation_sale/models/donation_sale.py +++ b/donation_sale/models/donation_sale.py @@ -61,6 +61,7 @@ class AccountInvoice(models.Model): 'company_id': self.company_id.id, 'currency_id': self.company_currency_id.id, 'donation_date': self.date_invoice, + 'date': self.date_invoice, 'amount': self.tax_receipt_total, 'type': 'each', 'partner_id': self.commercial_partner_id.id, @@ -107,6 +108,30 @@ class AccountInvoice(models.Model): self.tax_receipt_option = 'annual' return res + @api.multi + def action_invoice_paid(self): + res = super(AccountInvoice, self).action_invoice_paid() + dtro = self.env['donation.tax.receipt'] + to_gen_tax_receipt_invoices = self.filtered( + lambda inv: inv.state == 'paid' and not inv.tax_receipt_id and + inv.tax_receipt_option == 'each') + for invoice in to_gen_tax_receipt_invoices: + tax_receipt_amount = invoice.tax_receipt_total + if float_is_zero( + tax_receipt_amount, + precision_rounding=invoice.currency_id.rounding): + continue + vals = invoice._prepare_each_tax_receipt() + tax_receipt = dtro.with_context( + ir_sequence_date=invoice.date_invoice).create(vals) + invoice.tax_receipt_id = tax_receipt.id + logger.debug( + 'Tax receipt ID %d generated for invoice ID %d partner %s', + tax_receipt.id, invoice.id, invoice.commercial_partner_id.name) + return res + + # TODO: remove this method and the one below + # if the inherit of action_invoice_paid() works well @api.multi def _generate_each_tax_receipt_from_invoices(self): precision = self.env['decimal.precision'].precision_get('Account') @@ -119,7 +144,8 @@ class AccountInvoice(models.Model): continue partner = invoice.commercial_partner_id vals = invoice._prepare_each_tax_receipt() - tax_receipt = dtro.create(vals) + tax_receipt = dtro.with_context( + ir_sequence_date=invoice.date_invoice).create(vals) invoice.tax_receipt_id = tax_receipt.id logger.debug( 'Tax receipt ID %d generated for invoice ID %d partner %s',