From f83fc9681cfbe7b5d7e9735504279d80337b4eb2 Mon Sep 17 00:00:00 2001 From: Esraa-Exp Date: Sun, 23 Mar 2025 14:10:59 +0200 Subject: [PATCH] seasonal sevices --- odex25_ensan/odex_benefit/__manifest__.py | 1 + .../odex_benefit/data/sequence_data.xml | 11 ++ .../odex_benefit/data/server_actions.xml | 12 ++ odex25_ensan/odex_benefit/i18n/ar_001.po | 161 ++++++++++++++++++ odex25_ensan/odex_benefit/models/__init__.py | 1 + odex25_ensan/odex_benefit/models/benefit.py | 1 + .../odex_benefit/models/payment_order.py | 43 +++-- .../odex_benefit/models/seasonal_service.py | 138 +++++++++++++++ .../odex_benefit/models/services_settings.py | 2 + .../odex_benefit/security/ir.model.access.csv | 2 + .../odex_benefit/views/payment_order.xml | 16 +- .../views/seasonal_service_view.xml | 98 +++++++++++ .../odex_benefit/views/services_settings.xml | 5 +- .../wizards/exchange_order_wizard.py | 30 +++- 14 files changed, 498 insertions(+), 23 deletions(-) create mode 100644 odex25_ensan/odex_benefit/views/seasonal_service_view.xml diff --git a/odex25_ensan/odex_benefit/__manifest__.py b/odex25_ensan/odex_benefit/__manifest__.py index cedc17f14..1a77b8aab 100644 --- a/odex25_ensan/odex_benefit/__manifest__.py +++ b/odex25_ensan/odex_benefit/__manifest__.py @@ -24,6 +24,7 @@ 'views/family_members.xml', 'views/family_complaints.xml', 'views/education_status_views.xml', + 'views/seasonal_service_view.xml', 'wizards/researcher_wizard.xml', 'wizards/suspend_reason_wizard.xml', diff --git a/odex25_ensan/odex_benefit/data/sequence_data.xml b/odex25_ensan/odex_benefit/data/sequence_data.xml index 9257f0c15..d83de587b 100644 --- a/odex25_ensan/odex_benefit/data/sequence_data.xml +++ b/odex25_ensan/odex_benefit/data/sequence_data.xml @@ -52,6 +52,17 @@ 4 + + + + Seasonal Services Sequence + seasonal.service.sequence + R/ + + + + + 4 diff --git a/odex25_ensan/odex_benefit/data/server_actions.xml b/odex25_ensan/odex_benefit/data/server_actions.xml index 6808b9bbb..7a8eaa930 100644 --- a/odex25_ensan/odex_benefit/data/server_actions.xml +++ b/odex25_ensan/odex_benefit/data/server_actions.xml @@ -11,6 +11,18 @@ if record.project_create == False: action = records.action_open_exchange_order_wizard() + + + Exchange orders + + + code + + action = records.action_open_exchange_order_wizard() + + + + Create Vendor Bill diff --git a/odex25_ensan/odex_benefit/i18n/ar_001.po b/odex25_ensan/odex_benefit/i18n/ar_001.po index a916f5701..0e570e511 100644 --- a/odex25_ensan/odex_benefit/i18n/ar_001.po +++ b/odex25_ensan/odex_benefit/i18n/ar_001.po @@ -13934,3 +13934,164 @@ msgstr "المدينة" #: model:ir.actions.act_window,name:odex_benefit.res_city_action msgid "Country Cities" msgstr "المدن" + +#. module: odex_benefit +#: model:ir.model.fields.selection,name:odex_benefit.selection__seasonal_service__state__accounting_approve +#: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_form_view +msgid "Accounting Approve" +msgstr "إعتماد إدارة المالية" + +#. module: odex_benefit +#: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_form_view +msgid "Approve Beneficiary Services" +msgstr "إعتماد خدمات المستفيدين" + +#. module: odex_benefit +#: model:ir.model.fields.selection,name:odex_benefit.selection__seasonal_service__state__approval_of_beneficiary_services +msgid "Approval Of Beneficiary Services" +msgstr "إعتماد خدمات المستفيدين" + +#. module: odex_benefit +#: model:ir.actions.act_window,name:odex_benefit.action_exchange_order_wizard +#: model_terms:ir.ui.view,arch_db:odex_benefit.view_exchange_order_wizard_form +msgid "Exchange Order" +msgstr "إنشاء أمر صرف" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__name +msgid "Reference" +msgstr "الرقم التسلسلي" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__date +msgid "Request Date" +msgstr "تاريخ الطلب" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_grant_benefit__service_type_id +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__service_type_id +msgid "Seasonal Service Type" +msgstr "بند الخدمة" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__branch_ids +msgid "Branches" +msgstr " الفروع" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_grant_benefit__family_category +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__family_category_ids +msgid "Family Category" +msgstr "فئة الأسرة" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_grant_benefit__aid_amount +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__aid_amount +msgid "Aid Amount" +msgstr "مبلغ المساعدة" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__family_count +msgid "Family count" +msgstr "عدد الأسر" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__benefit_member_count +#: model:ir.model.fields,field_description:odex_benefit.field_service_request__benefit_member_count +msgid "Benefit Member count" +msgstr "عدد الأفراد المستفيدين" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__family_disbursement_total_amount +msgid "Total Family Disbursement Amount" +msgstr "إجمالي مبلغ صرف الخدمة للأسر" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_grant_benefit__family_id +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__family_ids +msgid "Family" +msgstr "الأسرة" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_grant_benefit__branch_custom_id +msgid "Branch" +msgstr "الفرع" + +#. module: odex_benefit +#: model_terms:ir.ui.view,arch_db:odex_benefit.payment_orders_form +#: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_form_view +msgid "Service Number" +msgstr "رقم الخدمة" + +#. module: odex_benefit +#: model_terms:ir.ui.view,arch_db:odex_benefit.payment_orders_form +#: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_form_view +msgid "Service Amount" +msgstr "مبلغ الخدمة" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_grant_benefit__account_id +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__account_id +msgid "Expenses Account" +msgstr "حساب المصروف" + +#. module: odex_benefit +#: model:ir.actions.server,name:odex_benefit.server_action_exchange_orders +#: model:ir.actions.server,name:odex_benefit.server_action_seasonal_service_exchange_orders +msgid "Exchange orders" +msgstr "أمر الصرف" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_grant_benefit__payment_order_id +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__payment_order_id +msgid "Payment Order" +msgstr "أمر الصرف" + +#. module: odex_benefit +#: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_form_view +msgid "Families" +msgstr "الأسر" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__is_payment_order_done +msgid "Is Payment Order Done?" +msgstr "أمر الصرف تم" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_payment_orders__is_seasonal +#: model:ir.model.fields,field_description:odex_benefit.field_services_settings__is_seasonal_service +msgid "Is Seasonal Service?" +msgstr "هل هي خدمة موسمية" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__seasonal_service_id +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_grant_benefit__seasonal_service_id +#: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_form_view +msgid "Seasonal Service" +msgstr "الخدمة الموسمية" + +#. module: odex_benefit +#: model:ir.actions.act_window,name:odex_benefit.seasonal_service_action +#: model:ir.model.fields.selection,name:odex_benefit.selection__main_service__services__seasonal_services +#: model:ir.ui.menu,name:odex_benefit.seasonal_service_menu +#: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_tree_view +msgid "Seasonal Services" +msgstr "الخدمات الموسمية" + + + + + + + + + + + + + + + + + + diff --git a/odex25_ensan/odex_benefit/models/__init__.py b/odex25_ensan/odex_benefit/models/__init__.py index bebc0ce6e..fc0d9d9cc 100644 --- a/odex25_ensan/odex_benefit/models/__init__.py +++ b/odex25_ensan/odex_benefit/models/__init__.py @@ -31,4 +31,5 @@ from . import payment_order from . import family_complaints from . import service_refuse_reason from . import res_city +from . import seasonal_service # from . import res_config_settings \ No newline at end of file diff --git a/odex25_ensan/odex_benefit/models/benefit.py b/odex25_ensan/odex_benefit/models/benefit.py index 333e165ec..b366aefc9 100644 --- a/odex25_ensan/odex_benefit/models/benefit.py +++ b/odex25_ensan/odex_benefit/models/benefit.py @@ -558,6 +558,7 @@ class GrantBenefitProfile(models.Model): family_member_id = fields.Many2one('family.member', string='Account Holder Name', domain="[('id','in',member_ids)]") owner_identity_attachment_ids = fields.Many2many('ir.attachment', 'rel_identity_attachment','benefit_id','attachment_id',string='Account holder identity') family_approval_attachment_ids = fields.Many2many('ir.attachment', 'rel_approval_attachment','benefit_id','attachment_id',string='Family approval of transfer') + seasonal_service_id = fields.Many2one('seasonal.service', string="Seasonal Service") def validate_attachments(self): for rec in self: diff --git a/odex25_ensan/odex_benefit/models/payment_order.py b/odex25_ensan/odex_benefit/models/payment_order.py index 70918bcdb..580063bf5 100644 --- a/odex25_ensan/odex_benefit/models/payment_order.py +++ b/odex25_ensan/odex_benefit/models/payment_order.py @@ -13,9 +13,13 @@ class PaymentOrders(models.Model): accountant_id = fields.Many2one('res.users',string='Accountant') payment_order_description = fields.Char(string='Payment Order Description') service_requests_ids = fields.One2many('service.request', 'payment_order_id', string ='Service Requests') + seasonal_requests_ids = fields.One2many('seasonal.service', 'payment_order_id', string ='Seasonal Requests') + family_seasonal_requests_ids = fields.One2many('seasonal.grant.benefit', 'payment_order_id', string ='Seasonal Requests') total_moves = fields.Integer(string="Total Move Lines", compute='_get_total_moves') state = fields.Selection(string='Status', selection=[('draft', 'Draft'),('accountant_approve', 'accountant Approve'),('department_manager_approve', 'Department Manager Approve') ,('accounting_approve', 'Accounting Approve'),('general_manager_approve', 'General Manager Approve'),('refused', 'Refused')],default = 'draft',tracking=True) + is_seasonal = fields.Boolean(string='Is Seasonal Service?') + @api.model def create(self, vals): @@ -77,18 +81,33 @@ class PaymentOrders(models.Model): def get_lines(self): lines = [] total_credit = 0 - for request in self.service_requests_ids: - lines.append( - { - 'account_id' : request.account_id.id, - 'partner_id' : request.family_id.partner_id.id, - # 'branch_id' : request.branch_custom_id.id, - 'analytic_account_id': request.branch_custom_id.branch.analytic_account_id.id, - 'debit' : request.aid_amount, - 'name': f'{"Family code"}{request.family_id.code}-{request.description}-{request.payment_order_id.name}-{request.payment_order_id.ref_num}', - } - ) - total_credit += request.aid_amount + if self.service_requests_ids: + for request in self.service_requests_ids: + lines.append( + { + 'account_id': request.account_id.id, + 'partner_id': request.family_id.partner_id.id, + # 'branch_id' : request.branch_custom_id.id, + 'analytic_account_id': request.branch_custom_id.branch.analytic_account_id.id, + 'debit': request.aid_amount, + 'name': f'{"Family code"}{request.family_id.code}-{request.description}-{request.payment_order_id.name}-{request.payment_order_id.ref_num}', + } + ) + total_credit += request.aid_amount + if self.family_seasonal_requests_ids: + for request in self.family_seasonal_requests_ids: + lines.append( + { + 'account_id': request.account_id.id, + 'partner_id': request.family_id.partner_id.id, + # 'branch_id' : request.branch_custom_id.id, + 'analytic_account_id': request.branch_custom_id.branch.analytic_account_id.id, + 'debit': request.aid_amount, + 'name': f'{"Family code"}{request.family_id.code}-{request.payment_order_id.name}-{request.payment_order_id.ref_num}', + } + ) + total_credit += request.aid_amount + lines.append({ 'account_id': self.env["family.validation.setting"].search([], limit=1).account_id.id, 'name': f'{self.name}-{self.ref_num}', diff --git a/odex25_ensan/odex_benefit/models/seasonal_service.py b/odex25_ensan/odex_benefit/models/seasonal_service.py index e69de29bb..bc83ab51f 100644 --- a/odex25_ensan/odex_benefit/models/seasonal_service.py +++ b/odex25_ensan/odex_benefit/models/seasonal_service.py @@ -0,0 +1,138 @@ +from odoo import fields, models, api, _ +from odoo.exceptions import UserError, ValidationError +from datetime import timedelta +from dateutil.relativedelta import relativedelta + + +class SeasonalService(models.Model): + _name = 'seasonal.service' + _inherit = ['mail.thread', 'mail.activity.mixin'] + + name = fields.Char(string='Reference', required=True, copy=False, readonly=True, index=True,default=lambda self: _('New')) + date = fields.Datetime(string='Request Date', default=fields.Datetime.now) + service_type_id = fields.Many2one('services.settings', domain="[('is_seasonal_service','=',True)]",string="Seasonal Service Type", required=True) + branch_ids = fields.Many2many('branch.settings', 'service_branch_rel', 'service_id', 'branch_id', string='Branches', required=True) + family_category_ids = fields.Many2many('benefit.category', 'service_category_rel', 'service_id', 'category_id', string='Family Category') + family_ids = fields.One2many('seasonal.grant.benefit', 'seasonal_service_id', string='Family') + aid_amount = fields.Float(string="Aid Amount",compute="_compute_aid_amount", store=True) + benefit_member_count = fields.Integer(string="Benefit Member count", compute="compute_family_benefit", store=True) + family_count = fields.Integer(string="Family count", compute="compute_family_benefit", store=True) + family_disbursement_total_amount = fields.Float(string="Total Family Disbursement Amount", compute="_compute_family_disbursement", store=True) + payment_order_id = fields.Many2one('payment.orders',string='Payment Order') + state = fields.Selection(selection=[ + ('draft', 'Draft'), + ('approval_of_beneficiary_services', 'Approval of beneficiary services'), + ('accounting_approve', 'Accounting Approve'), + + ], string='state', default='draft', tracking=True) + is_payment_order_done = fields.Boolean(string='Is Payment Order Done?') + account_id = fields.Many2one('account.account', string='Expenses Account', related="service_type_id.account_id") + + + @api.model + def create(self, vals): + res = super(SeasonalService, self).create(vals) + if not res.name or res.name == _('New'): + res.name = self.env['ir.sequence'].sudo().next_by_code('seasonal.service.sequence') or _('New') + return res + + def action_open_exchange_order_wizard(self): + ids = [] + for rec in self: + ids.append(rec.id) + seasonal_services = self.env['seasonal.service'].browse(ids) + if any(request.state not in 'accounting_approve' for request in seasonal_services): + raise UserError(_("All selected requests should be in Accounting Approve state")) + if any(request.payment_order_id for request in seasonal_services): + raise UserError(_("All selected requests should be not has payment order")) + else: + return { + 'type': 'ir.actions.act_window', + 'name': 'Exchange Order', + 'res_model': 'exchange.order.wizard', + 'view_mode': 'form', + 'target': 'new', + 'context': {'default_service_ids': ids, + 'seasonal_service': True, + } + } + + @api.depends('family_ids', 'family_ids.family_id') + def compute_family_benefit(self): + for record in self: + record.family_count = len(record.family_ids) + record.benefit_member_count = sum(record.family_ids.family_id.mapped('benefit_member_count')) + + @api.depends('service_type_id') + def _compute_aid_amount(self): + """ Compute Aid Amount based on service_type_id """ + for record in self: + aid_amount = 0.0 + if record.service_type_id: + if record.service_type_id.service_type == 'ramadan_basket': + aid_amount = record.service_type_id.ramadan_basket_member_amount + elif record.service_type_id.service_type == 'eid_gift': + aid_amount = record.service_type_id.eid_gift_member_amount + elif record.service_type_id.service_type == 'winter_clothing': + aid_amount = record.service_type_id.winter_clothing_member_amount + record.write({'aid_amount': aid_amount}) + + @api.depends('service_type_id', 'aid_amount', 'benefit_member_count', 'family_count') + def _compute_family_disbursement(self): + """ Compute total disbursement amount based on service type """ + for record in self: + if record.service_type_id: + if record.service_type_id.service_type == 'ramadan_basket': + record.family_disbursement_total_amount = record.aid_amount * record.family_count + elif record.service_type_id.service_type == 'eid_gift': + record.family_disbursement_total_amount = record.aid_amount * record.benefit_member_count + elif record.service_type_id.service_type == 'winter_clothing': + record.family_disbursement_total_amount = record.aid_amount * record.benefit_member_count + else: + record.family_disbursement_total_amount = 0.0 + else: + record.family_disbursement_total_amount = 0.0 + + + def action_approval_of_beneficiary_services(self): + for rec in self: + rec.state = 'approval_of_beneficiary_services' + + def action_accounting_approve(self): + for rec in self: + rec.state = 'accounting_approve' + +class SeasonalGrantBenefit(models.Model): + _name = 'seasonal.grant.benefit' + + family_id = fields.Many2one('grant.benefit',string='Family', required=True) + family_category = fields.Many2one('benefit.category', string='Family Category', + related='family_id.benefit_category_id') + branch_custom_id = fields.Many2one('branch.settings', string="Branch", related='family_id.branch_custom_id', + store=True) + aid_amount = fields.Float(string="Aid Amount", related='seasonal_service_id.aid_amount') + account_id = fields.Many2one('account.account', string='Expenses Account', related='seasonal_service_id.account_id') + name = fields.Char(string='Reference', related='seasonal_service_id.name') + service_type_id = fields.Many2one('services.settings', related='seasonal_service_id.service_type_id', string="Seasonal Service Type") + seasonal_service_id = fields.Many2one('seasonal.service',string='Seasonal Service') + payment_order_id = fields.Many2one('payment.orders',string='Payment Order') + + @api.onchange('family_id') + def get_family_id_domain(self): + domain = ['|', '|', ('state', '=', 'second_approve'), ('state', '=', 'temporarily_suspended'), ('state', '=', 'suspended_first_approve')] + if self.seasonal_service_id: + if self.seasonal_service_id.branch_ids: + domain.append(('branch_custom_id', 'in', self.seasonal_service_id.branch_ids.ids)) # Filter by selected branches + + if self.seasonal_service_id.family_category_ids: + domain.append(('benefit_category_id', 'in', self.seasonal_service_id.family_category_ids.ids)) # Filter by selected family categories + + if self.service_type_id and self.service_type_id.service_type == 'eid_gift': + family_ids = self.env['family.member'].search( + [('age', '<=', self.service_type_id.eid_gift_max_age)]).benefit_id + + domain.append(('id', 'in', family_ids.ids)) # Append the filtered family IDs to domain + return {'domain': {'family_id': domain}} + + + diff --git a/odex25_ensan/odex_benefit/models/services_settings.py b/odex25_ensan/odex_benefit/models/services_settings.py index a4d1d501d..89a664840 100644 --- a/odex25_ensan/odex_benefit/models/services_settings.py +++ b/odex25_ensan/odex_benefit/models/services_settings.py @@ -79,6 +79,8 @@ class ServicesSettings(models.Model): buy_home_max_total_amount = fields.Float(string='Buy Home Max Total Amount') home_age = fields.Integer(string='Home Age') required_attach = fields.Boolean(string='Required Attach') + is_seasonal_service = fields.Boolean(string='Is Seasonal Service?') + class RentLines(models.Model): _name = 'rent.lines' diff --git a/odex25_ensan/odex_benefit/security/ir.model.access.csv b/odex25_ensan/odex_benefit/security/ir.model.access.csv index ef0789cc3..e33d499dd 100644 --- a/odex25_ensan/odex_benefit/security/ir.model.access.csv +++ b/odex25_ensan/odex_benefit/security/ir.model.access.csv @@ -125,6 +125,8 @@ access_diseases_settings,access_diseases_settings,model_diseases_settings,base.g access_exception_wizard,access_exception_wizard,model_exception_wizard,base.group_user,1,1,1,1 access_exception_reason,access_exception_reason,model_exception_reason,base.group_user,1,1,1,1 access_service_request,access_service_request,model_service_request,base.group_user,1,1,1,1 +access_seasonal_service,access_seasonal_services,model_seasonal_service,base.group_user,1,1,1,1 +access_seasonal_grant_benefit,access_seasonal_grant_benefits,model_seasonal_grant_benefit,base.group_user,1,1,1,1 access_marital_status,access_marital_status,model_marital_status,base.group_user,1,1,1,1 access_service_attachments_settings,access_service_attachments_settings,model_service_attachments_settings,base.group_user,1,1,1,1 access_home_restoration_lines,access_home_restoration_lines,model_home_restoration_lines,base.group_user,1,1,1,1 diff --git a/odex25_ensan/odex_benefit/views/payment_order.xml b/odex25_ensan/odex_benefit/views/payment_order.xml index 625aceee8..0a36f30e8 100644 --- a/odex25_ensan/odex_benefit/views/payment_order.xml +++ b/odex25_ensan/odex_benefit/views/payment_order.xml @@ -38,10 +38,11 @@ + - + @@ -54,6 +55,19 @@ + + + + + + + + + + + + +
diff --git a/odex25_ensan/odex_benefit/views/seasonal_service_view.xml b/odex25_ensan/odex_benefit/views/seasonal_service_view.xml new file mode 100644 index 000000000..c872ecfc7 --- /dev/null +++ b/odex25_ensan/odex_benefit/views/seasonal_service_view.xml @@ -0,0 +1,98 @@ + + + + + + seasonal.service.form + seasonal.service + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+
+ + + + seasonal.service.tree + seasonal.service + + + + + + + + + + + + + + + + + + Seasonal Services + seasonal.service + tree,form + + + + +
diff --git a/odex25_ensan/odex_benefit/views/services_settings.xml b/odex25_ensan/odex_benefit/views/services_settings.xml index 216d3c60d..3670730d2 100644 --- a/odex25_ensan/odex_benefit/views/services_settings.xml +++ b/odex25_ensan/odex_benefit/views/services_settings.xml @@ -22,8 +22,9 @@ - - + + + diff --git a/odex25_ensan/odex_benefit/wizards/exchange_order_wizard.py b/odex25_ensan/odex_benefit/wizards/exchange_order_wizard.py index a8228f17b..2dca121e7 100644 --- a/odex25_ensan/odex_benefit/wizards/exchange_order_wizard.py +++ b/odex25_ensan/odex_benefit/wizards/exchange_order_wizard.py @@ -8,11 +8,25 @@ class ExchangeOrderWizard(models.TransientModel): def create_payment_order(self): active_ids = self.env.context.get('default_service_ids') - service_requests = self.env['service.request'].browse(active_ids) - for service in service_requests: - service.is_payment_order_done = True - self.env['payment.orders'].create({ - 'state':'draft', - 'accountant_id':self.accountant_id.id, - 'service_requests_ids' : service_requests.ids - }) + if self.env.context.get('seasonal_service') == True: + seasonal_service = self.env['seasonal.service'].browse(active_ids) + for service in seasonal_service: + service.is_payment_order_done = True + self.env['payment.orders'].create({ + 'state': 'draft', + 'accountant_id': self.accountant_id.id, + 'seasonal_requests_ids': seasonal_service.ids, + 'family_seasonal_requests_ids': service.family_ids.ids, + 'is_seasonal': True, + }) + else: + service_requests = self.env['service.request'].browse(active_ids) + for service in service_requests: + service.is_payment_order_done = True + self.env['payment.orders'].create({ + 'state': 'draft', + 'accountant_id': self.accountant_id.id, + 'service_requests_ids': service_requests.ids + }) + +