Inherit action_invoice_paid() instead of using a cron to generate tax receipts for invoices

14.0
Alexis de Lattre 8 years ago
parent ca8db2a760
commit 8078341b76

@ -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',

Loading…
Cancel
Save