Merge pull request #6038 from expsa/fix_bugs

Fix bugs
This commit is contained in:
NossibaElhadi 2026-01-07 13:08:15 +03:00 committed by GitHub
commit 0a95295f26
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 42 additions and 31 deletions

View File

@ -372,11 +372,11 @@ class DonationsDetailsLines(models.Model):
def onset_benefit_id(self):
for rec in self:
if rec.state == 'waiting' and (rec.benefit_id or rec.benefit_ids):
if rec.sponsorship_duration == 'permanent':
rec.state = 'paid'
else:
rec.state = 'active'
rec.start_date = fields.Date.today()
# if rec.sponsorship_duration == 'permanent':
# rec.state = 'paid'
# else:
rec.state = 'active'
rec.start_date = fields.Date.today()
sponsor_id = rec.sponsorship_mechanism_id.sponsor_id.id if rec.sponsorship_mechanism_id else rec.sponsorship_id.sponsor_id.id
(rec.benefit_id | rec.benefit_ids).write(
@ -690,11 +690,17 @@ class DonationsDetailsLines(models.Model):
else:
rec.payment_option = 'once'
@api.depends('start_date', 'payment_month_count')
@api.depends('start_date', 'payment_month_count', 'donation_mechanism', 'sponsorship_duration', 'donation_type', 'direct_debit')
def _compute_end_date(self):
for record in self:
if record.start_date and record.payment_month_count:
if record.direct_debit and record.start_date and record.payment_month_count:
record.end_date = record.start_date + relativedelta(months=record.payment_month_count)
elif record.donation_type == 'sponsorship' and record.sponsorship_duration == 'temporary' and record.start_date and record.payment_month_count:
record.end_date = record.start_date + relativedelta(months=record.payment_month_count)
elif not record.direct_debit and record.donation_type == 'donation':
record.end_date = record.start_date
else:
record.end_date = False

View File

@ -23,6 +23,8 @@ class GrantBenefit(models.Model):
for sponsorship in sponsorships:
if member.member_status and member.member_status == 'non_benefit' and sponsorship.record_type == 'sponsorship':
sponsorship.sudo().write({'state': 'replace'})
if member.member_status and member.member_status == 'benefit' and sponsorship.record_type == 'sponsorship' and sponsorship.state == 'replace':
sponsorship.sudo().write({'state': 'active'})

View File

@ -16,8 +16,8 @@ class AccountRegisterPayment(models.TransientModel):
if machine.exists() and machine.journal_id:
res['journal_id'] = machine.journal_id.id
elif not res.get('machine_id'):
# Fallback if default_get didn't catch the field default (though it usually does for computed defaults)
# Let's explicitly check our custom default logic if not present
# Fallback if default_get didn't catch the field default (though it usually does for computed defaults)
# Let's explicitly check our custom default logic if not present
machine_id = self._default_machine_id()
if machine_id:
res['machine_id'] = machine_id
@ -35,7 +35,8 @@ class AccountRegisterPayment(models.TransientModel):
return payment_method.id if payment_method else False
takaful_sponsorship_id = fields.Many2one('takaful.sponsorship')
takaful_payment_method_id = fields.Many2one('takaful.payment.method', string="Payment Method", required=True, default=_default_payment_method_id)
takaful_payment_method_id = fields.Many2one('takaful.payment.method', string="Payment Method", required=True,
default=_default_payment_method_id)
takaful_payment_method = fields.Selection([
("cash", "Cash"),
("bank", "Bank Transfer"),
@ -47,7 +48,9 @@ class AccountRegisterPayment(models.TransientModel):
is_refund_sponsorship = fields.Boolean(string='Is Refund Sponsorship')
transaction_file_attachment = fields.Binary(string='Transaction Attachment', attachment=False)
transaction_attachment_file_name = fields.Char('Transaction File Name', required=False)
payment_method = fields.Selection(selection=[("cash", "Cash"), ("bank", "Bank Transfer"), ("check", "Check")], string="Payment Method", required=True, default="cash")
payment_method = fields.Selection(selection=[("cash", "Cash"), ("bank", "Bank Transfer"), ("check", "Check")],
string="Payment Method", required=True, default="cash")
@api.model
def _default_machine_id(self):
sponsorship_id = self.env.context.get('default_takaful_sponsorship_id') or self.env.context.get('active_id')
@ -96,18 +99,17 @@ class AccountRegisterPayment(models.TransientModel):
for rec in self:
rec.show_payment_group = (len(unique_partners) == 1)
@api.depends_context('wiz_id')
def _compute_show_cancel_button(self):
for rec in self:
rec.show_cancel_button = not bool(self.env.context.get('wiz_id'))
@api.onchange("machine_id")
def onchange_machine_id(self):
for rec in self:
if rec.machine_id:
rec.journal_id = rec.machine_id.journal_id
@api.onchange("takaful_payment_method_id")
def onchange_takaful_payment_method_id(self):
for rec in self:
@ -119,13 +121,13 @@ class AccountRegisterPayment(models.TransientModel):
j_type = ""
if payment_method == "cash":
j_type = "cash"
elif payment_method in ("bank", "check","network"):
elif payment_method in ("bank", "check", "network"):
j_type = "bank"
if j_type:
return {"domain": {"journal_id": [("type", "=", j_type), ("branch_ids", "in", branch_ids)]}}
@api.depends('source_amount', 'source_amount_currency', 'source_currency_id', 'company_id', 'currency_id', 'payment_date')
@api.depends('source_amount', 'source_amount_currency', 'source_currency_id', 'company_id', 'currency_id',
'payment_date')
def _compute_amount(self):
if self.env.context.get('sponsorship_payment_skip_compute_amount'):
self.amount = self.amount
@ -143,23 +145,23 @@ class AccountRegisterPayment(models.TransientModel):
else:
rec.takaful_payment_method = "cash"
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_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:
for line in sponsorship_lines:
state = ''
if line.record_type == 'sponsorship':
if not (line.benefit_id | line.benefit_ids):
state = 'waiting'
elif line.sponsorship_duration == 'temporary':
state = 'active'
# elif line.sponsorship_duration == 'temporary':
# state = 'active'
else:
state = 'paid'
state = 'active'
elif line.record_type == 'donation':
if line.donation_mechanism == 'with_conditions':
state = 'paid'
@ -178,7 +180,7 @@ class AccountRegisterPayment(models.TransientModel):
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,
'move_type': 'in_invoice',
@ -190,7 +192,8 @@ class AccountRegisterPayment(models.TransientModel):
'product_id': donation_line.product_id.id,
'price_unit': schedule_line.amount,
'quantity': 1,
'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 " "),
'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,
})]
}
@ -237,7 +240,6 @@ class AccountRegisterPayment(models.TransientModel):
'type': 'binary',
})
return payments
@api.model
@ -261,15 +263,17 @@ class AccountRegisterPayment(models.TransientModel):
@api.model
def _get_batch_available_partner_banks(self, batch_result, journal):
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_lines = self.env['donations.details.lines'].browse(sponsorship_line_ids).filtered(
lambda r: r.display_type == False)
if sponsorship_lines:
return sponsorship_lines.sponsor_id.bank_ids
return sponsorship_lines.sponsor_id.bank_ids
return super(AccountRegisterPayment, self)._get_batch_available_partner_banks(batch_result, journal)
def action_create_payments(self):
res = super(AccountRegisterPayment, self.with_context(skip_account_move_synchronization=True)).action_create_payments()
res = super(AccountRegisterPayment,
self.with_context(skip_account_move_synchronization=True)).action_create_payments()
if self.env.context.get('dont_redirect_to_payments') and self.env.context.get('wiz_id'):
if self.amount < self.env.context.get('default_amount'):
wiz = self.env['donation.extension.wizard'].browse(self.env.context.get('wiz_id'))
@ -320,4 +324,3 @@ class AccountRegisterPayment(models.TransientModel):
}
return {'type': 'ir.actions.act_window_close'}