[FIX] replacment benefit action
This commit is contained in:
parent
32c6ab16e8
commit
ffa930c8d1
|
|
@ -63,6 +63,7 @@
|
|||
'wizards/donation_extension_wizard.xml',
|
||||
'wizards/replace_sponsor_wizard.xml',
|
||||
'wizards/add_benefit_wizard.xml',
|
||||
'wizards/replace_benefit_wizard.xml',
|
||||
'wizards/esterdad.xml',
|
||||
'wizards/otp_confirm.xml',
|
||||
'views/donations_details_lines.xml',
|
||||
|
|
|
|||
|
|
@ -7634,3 +7634,39 @@ msgstr "تبرعات"
|
|||
msgid "Target"
|
||||
msgstr "حملات"
|
||||
|
||||
#. module: odex_takaful
|
||||
#: model_terms:ir.ui.view,arch_db:odex_takaful.replace_benefit_wizard_form
|
||||
msgid "Replacement Information"
|
||||
msgstr "بيانات الاستبدال"
|
||||
|
||||
#. module: odex_takaful
|
||||
#: model:ir.model.fields,field_description:odex_takaful.field_replace_benefit_wizard__old_members_id
|
||||
msgid "Old Benefit"
|
||||
msgstr "المستفيد الحالي"
|
||||
|
||||
#. module: odex_takaful
|
||||
#: model:ir.model.fields,field_description:odex_takaful.field_replace_benefit_wizard__new_members_id
|
||||
msgid "New Benefit"
|
||||
msgstr "المستفيد الجديد"
|
||||
|
||||
#. module: odex_takaful
|
||||
#: model:ir.model.fields,field_description:odex_takaful.field_replace_benefit_wizard__replacement_reason_id
|
||||
#: model_terms:ir.ui.view,arch_db:odex_takaful.replace_benefit_wizard_form
|
||||
msgid "Replacement Reason"
|
||||
msgstr "سبب الإستبدال"
|
||||
|
||||
#. module: odex_takaful
|
||||
#: model_terms:ir.ui.view,arch_db:odex_takaful.replace_benefit_wizard_form
|
||||
msgid "Replace"
|
||||
msgstr "إستبدال"
|
||||
|
||||
#. module: odex_takaful
|
||||
#: model:ir.model,name:odex_takaful.model_replace_benefit_wizard
|
||||
msgid "Replace Benefit"
|
||||
msgstr "إستبدال مستفيد"
|
||||
|
||||
#. module: odex_takaful
|
||||
#: model_terms:ir.ui.view,arch_db:odex_takaful.replace_benefit_wizard_form
|
||||
msgid "Cancel"
|
||||
msgstr "إلغاء"
|
||||
|
||||
|
|
|
|||
|
|
@ -1049,19 +1049,17 @@ class DonationsDetailsLines(models.Model):
|
|||
|
||||
def action_view_replacement_wizard(self):
|
||||
self.ensure_one()
|
||||
wizard = self.env['replacement.wiz'].create({
|
||||
'old_members_id': self.benefit_ids[0].id if self.benefit_ids else False,
|
||||
'record_type': self.record_type,
|
||||
'sponsorship_id': self.id,
|
||||
})
|
||||
|
||||
return {
|
||||
'name': 'Replacement Wizard',
|
||||
'name': 'Benefit Replacement',
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_model': 'replacement.wiz',
|
||||
'res_model': 'replace.benefit.wizard',
|
||||
'view_mode': 'form',
|
||||
'res_id': wizard.id,
|
||||
'target': 'new',
|
||||
'context': {
|
||||
'default_old_members_id': self.benefit_ids[:1].id or False,
|
||||
'default_record_type': self.record_type,
|
||||
'default_sponsorship_id': self.id,
|
||||
}
|
||||
}
|
||||
|
||||
def action_view_scheduling_lines(self):
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ access_group_kufula_user_account_move,access_group_kufula_user_account_move,acco
|
|||
access_group_kufula_user_sale_order,access_group_kufula_user_sale_order,sale.model_sale_order,odex_takaful.group_kufula_user,1,1,1,0
|
||||
access_group_kufula_user_grant_benefit,access_group_kufula_user_grant_benefit,odex_benefit.model_grant_benefit,odex_takaful.group_kufula_user,1,1,1,0
|
||||
access_group_kufula_user_res_partner,access_group_kufula_user_res_partner,base.model_res_partner,odex_takaful.group_kufula_user,1,1,1,0
|
||||
|
||||
access_replace_benefit_wizard,replace.benefit.wizard.access,model_replace_benefit_wizard,odex_takaful.group_kufula_user,1,1,1,1
|
||||
access_group_esterdad_wizard,access_group_esterdad_wizard,model_esterdad_wizard,,1,1,1,0
|
||||
|
||||
access_group_otp_confirmation_wizard,access_group_otp_confirmation_wizard,model_otp_confirmation_wizard,,1,1,1,0
|
||||
|
|
|
|||
|
|
|
@ -9,5 +9,6 @@ from . import transfer_deduction_wizard
|
|||
from . import donation_extension_wizard
|
||||
from . import replace_sponsor_wizard
|
||||
from . import add_benefit_wizard
|
||||
from . import replace_benefit_wizard
|
||||
from . import account_payment_register
|
||||
from . import esterdad
|
||||
|
|
|
|||
|
|
@ -0,0 +1,108 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import ValidationError, UserError
|
||||
from odoo.osv import expression
|
||||
import logging
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class ReplaceBenefitWizard(models.TransientModel):
|
||||
_name = 'replace.benefit.wizard'
|
||||
_description = "Replace Benefit"
|
||||
|
||||
old_members_id = fields.Many2one('family.member', string="Old Benefit", readonly=True)
|
||||
members_domain_ids = fields.Many2many('family.member', compute='_compute_members_domain_ids')
|
||||
new_members_id = fields.Many2one('family.member', string="New Benefit", domain="[('id', 'in', members_domain_ids)]")
|
||||
record_type = fields.Selection([('sponsorship', 'Sponsorship'), ('donation', 'Donation')])
|
||||
sponsorship_id = fields.Many2one('donations.details.lines', string="Sponsorship")
|
||||
replacement_reason_id = fields.Many2one('replacement.reasons', string="Replacement Reason")
|
||||
|
||||
@api.depends('old_members_id')
|
||||
def _compute_members_domain_ids(self):
|
||||
for rec in self:
|
||||
domain = []
|
||||
|
||||
if rec.record_type == 'sponsorship':
|
||||
domain = [
|
||||
'|',
|
||||
('state', '=', 'second_approve'),
|
||||
'&',
|
||||
('state', 'in', ('waiting_approve', 'first_approve')),
|
||||
('action_type', '=', 'suspended'),
|
||||
('id', '!=', rec.old_members_id.id), ]
|
||||
|
||||
domain = expression.AND([domain, [
|
||||
('member_status', '=', 'benefit'),
|
||||
('sponsor_related_id', '=', False),
|
||||
('general_restriction', '=', False)
|
||||
]])
|
||||
|
||||
if rec.sponsorship_id.sponsorship_duration == 'temporary':
|
||||
benefit_age_limit = None
|
||||
if rec.sponsorship_id.direct_debit:
|
||||
benefit_age_limit = 16
|
||||
elif rec.sponsorship_id.payment_month_count < 6:
|
||||
benefit_age_limit = 18
|
||||
if benefit_age_limit:
|
||||
domain = expression.AND([domain, [
|
||||
('age', '>=', benefit_age_limit)
|
||||
]])
|
||||
|
||||
members = self.env['family.member'].sudo().search(domain)
|
||||
|
||||
rec.members_domain_ids = members if members else self.env['family.member'].sudo().browse()
|
||||
|
||||
def replacement_benefit_action(self):
|
||||
|
||||
self.ensure_one()
|
||||
|
||||
if not self.sponsorship_id:
|
||||
raise UserError(_("Please determine sponsorship."))
|
||||
|
||||
donation_line = self.sponsorship_id
|
||||
sponsorship_id = donation_line.sponsorship_mechanism_id if donation_line.sponsorship_mechanism_id else donation_line.sponsorship_id
|
||||
try:
|
||||
if self.record_type == "sponsorship":
|
||||
state = donation_line.state
|
||||
if donation_line.state == 'replace':
|
||||
state = 'active'
|
||||
|
||||
donation_line.sudo().write({
|
||||
'state': state,
|
||||
'benefit_id': self.new_members_id.id,
|
||||
'benefit_ids': [(6, 0, [self.new_members_id.id])]
|
||||
})
|
||||
self.old_members_id.sudo().write({
|
||||
'sponsor_related_id': False,
|
||||
'kafala_status': 'have_not_kafala'
|
||||
})
|
||||
self.new_members_id.sudo().write({
|
||||
'sponsor_related_id': donation_line.sponsor_id.id,
|
||||
'kafala_status': 'have_kafala'
|
||||
})
|
||||
|
||||
old_benefit = self.old_members_id.name
|
||||
new_benefit = self.new_members_id.name
|
||||
|
||||
else:
|
||||
raise UserError(_("type of record not determine."))
|
||||
|
||||
self.env['donation.replacement.log'].create({
|
||||
'user_id': self.env.user.id,
|
||||
'donation_detail_id': donation_line.id,
|
||||
'sponsorship_id': sponsorship_id.id,
|
||||
'old_benefit': old_benefit or '',
|
||||
'new_benefit': new_benefit or '',
|
||||
'record_type': donation_line.record_type,
|
||||
'replacement_reason_id': self.replacement_reason_id.id,
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
raise UserError(_("Error in replacement:\n%s") % str(e))
|
||||
|
||||
def action_cancel(self):
|
||||
"""
|
||||
Cancel the wizard
|
||||
"""
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="replace_benefit_wizard_form" model="ir.ui.view">
|
||||
<field name="name">replace.benefit.wizard.form</field>
|
||||
<field name="model">replace.benefit.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<field name="record_type" invisible="1"/>
|
||||
<field name="members_domain_ids" invisible="1" />
|
||||
<group>
|
||||
<group string="Replacement Information">
|
||||
<field name="old_members_id" attrs="{'invisible': [('record_type', '=', 'donation')]}"/>
|
||||
<field name="new_members_id" attrs="{'invisible': [('record_type', '=', 'donation')], 'required': [('record_type', '=', 'sponsorship')]}" options="{'no_create': True, 'no_create_edit':True,'no_open': True}" context="{'group_by': 'benefit_group', 'show_age_in_kafalat': True}"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Replacement Reason">
|
||||
<field name="replacement_reason_id" required="1"/>
|
||||
</group>
|
||||
|
||||
</sheet>
|
||||
<footer>
|
||||
<button string="Replace" type="object" name="replacement_benefit_action" class="oe_highlight"/>
|
||||
<button string="Cancel" class="btn-secondary" special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
Loading…
Reference in New Issue