[FIX] odex_takaful: create bill for family

This commit is contained in:
Abdurrahman Saber 2025-11-12 16:26:50 +02:00
parent f97078a400
commit 6ec9eb09a0
1 changed files with 27 additions and 26 deletions

View File

@ -71,7 +71,7 @@ class AccountRegisterPayment(models.TransientModel):
def _create_payments(self):
sponsorship_line_ids = self.env.context.get('sponsorship_line_ids')
sponsorship_lines = self.env['donations.details.lines'].browse(sponsorship_line_ids).filtered(lambda r: r.display_type == False)
sponsorship = self.env['takaful.sponsorship'].browse(self.env.context.get('sponsorship_id'))
payments = super(AccountRegisterPayment, self)._create_payments()
if sponsorship_lines:
@ -85,7 +85,10 @@ class AccountRegisterPayment(models.TransientModel):
else:
state = 'paid'
elif line.record_type == 'donation':
state = 'paid'
if line.donation_mechanism == 'with_conditions':
state = 'active'
else:
state = 'paid'
line.write({'state': state})
if self.env.context.get('schedule_line_payment'):
schedule_line = self.env['sponsorship.scheduling.line'].browse(self.env.context.get('schedule_line_id'))
@ -95,39 +98,37 @@ class AccountRegisterPayment(models.TransientModel):
if len(all_schedule_lines_paid) == len(
schedule_line.donation_detail_linked_id.sponsorship_scheduling_line_ids):
schedule_line.donation_detail_linked_id.state = 'paid'
vendor_bill_vals = []
benefit_journal_id = self.env.company.kafala_benefit_journal_id.id
benefit_ids = sponsorship_lines.benefit_id | sponsorship_lines.benefit_ids
for benefit in benefit_ids:
benefit_lines = sponsorship_lines.filtered(
lambda l: l.benefit_id == benefit or benefit in l.benefit_ids)
sponsorship_id = (benefit_lines.sponsorship_id + benefit_lines.sponsorship_mechanism_id)[0]
if sponsorship.record_type == 'donation' and sponsorship.donation_mechanism == 'with_conditions':
benefit_journal_id = self.env.company.kafala_benefit_journal_id.id
donation_line = schedule_line.donation_detail_linked_id
family_id = donation_line.family_id
bill_values = {
'takaful_sponsorship_id': sponsorship_id.id,
'takaful_sponsorship_id': sponsorship.id,
'name': self.env['ir.sequence'].next_by_code('account.move.accrsp'),
'move_type': 'in_invoice',
'journal_id': benefit_journal_id,
'date': fields.Date.today(),
'partner_id': benefit.partner_id.id,
'invoice_date': fields.Date.today(),
'partner_id': family_id.partner_id.id,
'invoice_line_ids': [(0, 0, {
'product_id': line.product_id.id,
'product_id': donation_line.product_id.id,
'price_unit': schedule_line.amount,
'quantity': 1,
'name': _("Benefit Number %s %s") % (line.sequence_no, f"Cheque Number: {self.check_number} Cheque Due Date: {self.check_due_date}" if self.takaful_payment_method == 'check' else " "),
'analytic_account_id': sponsorship_id.branch_custom_id.branch.analytic_account_id.id,
}) for line in benefit_lines]
'name': _("Benefit Number %s %s") % (donation_line.sequence_no, f"Cheque Number: {self.check_number} Cheque Due Date: {self.check_due_date}" if self.takaful_payment_method == 'check' else " "),
'analytic_account_id': sponsorship.branch_custom_id.branch.analytic_account_id.id,
})]
}
vendor_bill_vals.append(bill_values)
bill_id = self.env['account.move'].sudo().create(vendor_bill_vals)
for line in bill_id.invoice_line_ids:
line.account_id = line._get_computed_account()
taxes = line._get_computed_taxes()
if taxes and line.move_id.fiscal_position_id:
taxes = line.move_id.fiscal_position_id.map_tax(taxes, partner=line.partner_id)
line.tax_ids = taxes
line.product_uom_id = line._get_computed_uom()
bill_id.action_post()
bill_id = self.env['account.move'].sudo().create(bill_values)
for line in bill_id.invoice_line_ids:
line.account_id = line._get_computed_account()
taxes = line._get_computed_taxes()
if taxes and line.move_id.fiscal_position_id:
taxes = line.move_id.fiscal_position_id.map_tax(taxes, partner=line.partner_id)
line.tax_ids = taxes
line.product_uom_id = line._get_computed_uom()
bill_id.action_post()
for line in sponsorship_lines:
if line.record_type != 'sponsorship':
continue
@ -149,7 +150,7 @@ class AccountRegisterPayment(models.TransientModel):
if self.env.context.get('is_direct_debit'):
payments.write({'direct_debit': True})
payments.move_id.write({
'takaful_sponsorship_id': self.env.context.get('sponsorship_id')
'takaful_sponsorship_id': sponsorship.id
})
if self.transaction_file_attachment: