[IMP] ensan_donation_request: fix transaction invoice

This commit is contained in:
Abdurrahman Saber 2025-08-06 15:14:17 +03:00
parent 8effb6c372
commit 51ca859a9a
3 changed files with 592 additions and 399 deletions

File diff suppressed because it is too large Load Diff

View File

@ -56,6 +56,7 @@ class DonationRecurring(models.Model):
)
sale_order_count = fields.Integer(string="Sale Orders", compute="_compute_sale_order_count", store=True)
invoice_count = fields.Integer(string="Invoices", compute="_compute_invoice_count", store=True)
transaction_ids = fields.Many2many('payment.transaction', compute="_compute_transaction_ids")
@api.depends('sale_order_ids')
def _compute_sale_order_count(self):
@ -102,6 +103,10 @@ class DonationRecurring(models.Model):
for rec in self:
rec.total_amount = sum(line.total_amount for line in rec.recurring_line_ids)
def _compute_transaction_ids(self):
for rec in self:
rec.transaction_ids = rec.sale_order_ids.transaction_ids
@api.onchange('recurring_interval', 'frequency')
def _onchange_frequency_or_interval(self):
for rec in self:
@ -199,21 +204,12 @@ class DonationRecurring(models.Model):
#
# self.message_post(body=_("📦 Delivery validated for Sale Order <b>%s</b>.") % order.name)
# return picking
def create_invoice_from_order(self, order):
invoice = order._create_invoices()
invoice.action_post()
self.message_post(body=_("🧾 Invoice <b>%s</b> posted for Sale Order <b>%s</b>.") % (invoice.name, order.name))
return invoice
def action_activate(self):
for rec in self:
rec.name = self.env['ir.sequence'].next_by_code('donation.recurring') or _('New')
for line in rec.recurring_line_ids:
order = rec._create_sale_order(line)
if not order:
continue
rec.sudo().create_invoice_from_order(order)
rec._create_sale_order(line)
rec._advance_next_date()
rec.state = 'active'
template = self.env.company.donation_recurring_created_sms_template_id
@ -272,7 +268,6 @@ class DonationRecurring(models.Model):
def action_cancel(self):
for record in self:
record.state = 'cancel'
record.active = False
record.date_end = fields.Date.context_today(self)
def action_reset_to_active(self):
@ -295,15 +290,11 @@ class DonationRecurring(models.Model):
unprocessed_lines = rec.recurring_line_ids.filtered(lambda l: not l.sale_order_id)
if unprocessed_lines:
for line in unprocessed_lines:
order = rec._create_sale_order(line)
if order:
rec.create_invoice_from_order(order)
rec._create_sale_order(line)
new_line = rec._create_donation_line()
if not new_line:
continue
order = rec._create_sale_order(new_line)
if order:
rec.create_invoice_from_order(order)
rec._create_sale_order(new_line)
rec._advance_next_date()
except Exception as e:
rec.message_post(body=_("⛔ Unexpected error:<br/><pre>%s</pre>") % str(e))

View File

@ -89,6 +89,7 @@
<field name="date_start"/>
<field name="date_end"/>
<field name="recurring_next_date"/>
<field name="send_recurring_sms"/>
</group>
</group>
<notebook>