Merge pull request #6292 from expsa/samir_aladawi_global_extension_customizations

Samir aladawi global extension customizations
This commit is contained in:
SamirLADOUI-sa 2026-01-21 11:38:48 +01:00 committed by GitHub
commit 7a304ebeed
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 52 additions and 21 deletions

View File

@ -107,6 +107,7 @@ class DonationExtensionHistory(models.Model):
state = fields.Selection([ state = fields.Selection([
('active', 'Active'), ('active', 'Active'),
('wait_pay', 'Wait Pay'),
('paid', 'Paid'), ('paid', 'Paid'),
('cancel', 'Canceled') ('cancel', 'Canceled')
], string='State', default='active', tracking=True) ], string='State', default='active', tracking=True)
@ -263,6 +264,13 @@ class DonationExtensionHistory(models.Model):
self.sudo().invoice_id.button_draft() self.sudo().invoice_id.button_draft()
self.sudo().invoice_id.button_cancel() self.sudo().invoice_id.button_cancel()
if self.new_direct_debit:
scheduling_lines = self.env['sponsorship.scheduling.line'].search([
('donation_detail_linked_id', '=', self.donation_detail_id.id),
('scheduled_date', '>', self.old_end_date)
])
scheduling_lines.sudo().unlink()
self.write({ self.write({
'state': 'cancel' 'state': 'cancel'
}) })

View File

@ -158,6 +158,13 @@ class SchedulingLine(models.Model):
elif line.donation_detail_linked_id.state != 'waiting' and line.donation_detail_linked_id.record_type != 'donation' and line.donation_detail_linked_id.record_type == 'sponsorship': elif line.donation_detail_linked_id.state != 'waiting' and line.donation_detail_linked_id.record_type != 'donation' and line.donation_detail_linked_id.record_type == 'sponsorship':
line.donation_detail_linked_id.sudo().write({'state': 'active'}) line.donation_detail_linked_id.sudo().write({'state': 'active'})
line.donation_detail_linked_id.sponsorship_id.sudo().write({'state': 'wait_pay'}) line.donation_detail_linked_id.sponsorship_id.sudo().write({'state': 'wait_pay'})
histories = self.env['donation.extension.history'].sudo().search([
('donation_detail_id', '=', line.donation_detail_linked_id.id),
('old_end_date', '<', line.scheduled_date),
('new_end_date', '>=', line.scheduled_date)
])
if len(histories):
histories.write({'state': 'wait_pay'})
_logger.info(f"Successfully processed scheduled payment for line {line.sequence_no}") _logger.info(f"Successfully processed scheduled payment for line {line.sequence_no}")

View File

@ -30,7 +30,7 @@
<form create="0" edit="0" delete="0"> <form create="0" edit="0" delete="0">
<header> <header>
<field name="state" widget="statusbar" statusbar_visible="active,paid,cancel" /> <field name="state" widget="statusbar" statusbar_visible="active,paid,cancel" />
<button string="Pay" name="action_pay_invoice" type="object" class="oe_highlight" states="active"/> <button string="Pay" name="action_pay_invoice" type="object" class="oe_highlight" attrs="{'invisible': ['|', ('state', '!=', 'active'), ('new_direct_debit', '=', True)]}"/>
<button string="Cancel" name="action_cancel_invoice" type="object" states="active"/> <button string="Cancel" name="action_cancel_invoice" type="object" states="active"/>
<button <button
name="action_print_extension_receipt" name="action_print_extension_receipt"
@ -38,7 +38,7 @@
string="Print Extension Receipt" string="Print Extension Receipt"
class="btn-primary" class="btn-primary"
icon="fa-print" icon="fa-print"
attrs="{'invisible': [('state', '!=', 'paid')]}" attrs="{'invisible': [('state', 'not in', ['wait_pay', 'paid'])]}"
groups="odex_takaful.group_print_receipt" groups="odex_takaful.group_print_receipt"
/> />
</header> </header>

View File

@ -505,32 +505,32 @@ class DonationExtensionWizardLine(models.TransientModel):
def cancel_extension(self): def cancel_extension(self):
self.ensure_one() self.ensure_one()
if self.extension_invoice_id: # if self.extension_invoice_id:
invoice = self.extension_invoice_id # invoice = self.extension_invoice_id
if invoice.state == 'posted': # if invoice.state == 'posted':
invoice.button_draft() # invoice.button_draft()
invoice.button_cancel() # invoice.button_cancel()
else: # else:
invoice.button_cancel() # invoice.button_cancel()
scheduling_lines = self.env['sponsorship.scheduling.line'].search([ # scheduling_lines = self.env['sponsorship.scheduling.line'].search([
('donation_detail_linked_id', '=', self.donation_line_id.id), # ('donation_detail_linked_id', '=', self.donation_line_id.id),
('scheduled_date', '>', self.old_end_date) # ('scheduled_date', '>', self.old_end_date)
]) # ])
scheduling_lines.sudo().unlink() # scheduling_lines.sudo().unlink()
self.donation_line_id.write({ # self.donation_line_id.write({
'end_date': self.old_end_date, # 'end_date': self.old_end_date,
'payment_month_count': self.old_payment_month_count, # 'payment_month_count': self.old_payment_month_count,
}) # })
history_records = self.env['donation.extension.history'].search([ history_records = self.env['donation.extension.history'].search([
('donation_detail_id', '=', self.donation_line_id.id), ('donation_detail_id', '=', self.donation_line_id.id),
('invoice_id', '=', self.extension_invoice_id.id if self.extension_invoice_id else False), ('invoice_id', '=', self.extension_invoice_id.id if self.extension_invoice_id else False),
('new_end_date', '=', self.new_end_date), ('new_end_date', '=', self.new_end_date),
]) ])
history_records.sudo().unlink() history_records.sudo().action_cancel_invoice()
return True return True

View File

@ -2,6 +2,19 @@
<odoo> <odoo>
<data> <data>
<record id="donations_conditional_tree_odex_takaful" model="ir.ui.view">
<field name="name">donations.details.lines.view.form.inherit</field>
<field name="model">donations.details.lines</field>
<field name="inherit_id" ref="odex_takaful.donations_conditional_tree"/>
<field name="mode">primary</field>
<field name="active">False</field>
<field name="arch" type="xml">
<xpath expr="//field[@name='donation_amount']" position="replace" />
</field>
</record>
<record id="view_global_extension_wizard_form" model="ir.ui.view"> <record id="view_global_extension_wizard_form" model="ir.ui.view">
<field name="name">global.extension.wizard.form</field> <field name="name">global.extension.wizard.form</field>
<field name="model">global.extension.wizard</field> <field name="model">global.extension.wizard</field>
@ -11,7 +24,11 @@
<notebook> <notebook>
<page string="Donation Lines"> <page string="Donation Lines">
<field name="line_ids" options="{'no_create': True, 'no_open': True, 'no_create_edit': True}" <field name="line_ids" options="{'no_create': True, 'no_open': True, 'no_create_edit': True}"
context="{'wizard_force_show_all': True, 'active_test': False}" context="{
'wizard_force_show_all': True,
'active_test': False,
'tree_view_ref': 'odex_takaful.donations_conditional_tree_odex_takaful'
}"
domain="[ domain="[
('record_type', '=', 'sponsorship'), ('record_type', '=', 'sponsorship'),
('sponsorship_duration', '=', 'temporary'), ('sponsorship_duration', '=', 'temporary'),
@ -22,7 +39,6 @@
<field name="sponsor_id"/> <field name="sponsor_id"/>
<field name="family_id"/> <field name="family_id"/>
<field name="product_template_id"/> <field name="product_template_id"/>
<field name="donation_amount" widget="monetary"/>
<field name="create_date"/> <field name="create_date"/>
<field name="branch_custom_id"/> <field name="branch_custom_id"/>
</tree> </tree>