seasonal sevices

This commit is contained in:
Esraa-Exp 2025-03-23 14:10:59 +02:00
parent 3a7c946be2
commit f83fc9681c
14 changed files with 498 additions and 23 deletions

View File

@ -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',

View File

@ -52,6 +52,17 @@
<field eval="True" name="use_date_range"/>
<field eval="False" name="company_id"/>
<field name="padding">4</field>
</record>
<!-- Sequence for Seasonal services-->
<record id="seasonal_service_sequence" model="ir.sequence">
<field name="name">Seasonal Services Sequence</field>
<field name="code">seasonal.service.sequence</field>
<field name="prefix">R/</field>
<field eval="1" name="number_next"/>
<field eval="1" name="number_increment"/>
<field eval="True" name="use_date_range"/>
<field eval="False" name="company_id"/>
<field name="padding">4</field>
</record>
<!-- Sequence for payment orders -->
<record id="payment_orders_sequence" model="ir.sequence">

View File

@ -11,6 +11,18 @@
if record.project_create == False:
action = records.action_open_exchange_order_wizard()</field>
</record>
<record id="server_action_seasonal_service_exchange_orders" model="ir.actions.server">
<field name="name">Exchange orders</field>
<field name="model_id" ref="odex_benefit.model_seasonal_service"/>
<field name="binding_model_id" ref="odex_benefit.model_seasonal_service"/>
<field name="state">code</field>
<field name="code">
action = records.action_open_exchange_order_wizard()
</field>
</record>
<record id="server_action_vendor_bill" model="ir.actions.server">
<field name="name">Create Vendor Bill</field>
<field name="model_id" ref="odex_benefit.model_service_request"/>

View File

@ -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 "الخدمات الموسمية"

View File

@ -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

View File

@ -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:

View File

@ -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}',

View File

@ -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}}

View File

@ -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'

View File

@ -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

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
125 access_exception_wizard access_exception_wizard model_exception_wizard base.group_user 1 1 1 1
126 access_exception_reason access_exception_reason model_exception_reason base.group_user 1 1 1 1
127 access_service_request access_service_request model_service_request base.group_user 1 1 1 1
128 access_seasonal_service access_seasonal_services model_seasonal_service base.group_user 1 1 1 1
129 access_seasonal_grant_benefit access_seasonal_grant_benefits model_seasonal_grant_benefit base.group_user 1 1 1 1
130 access_marital_status access_marital_status model_marital_status base.group_user 1 1 1 1
131 access_service_attachments_settings access_service_attachments_settings model_service_attachments_settings base.group_user 1 1 1 1
132 access_home_restoration_lines access_home_restoration_lines model_home_restoration_lines base.group_user 1 1 1 1

View File

@ -38,10 +38,11 @@
<group>
<field name="payment_order_description"/>
<field name="ref_num"/>
<field name="is_seasonal" invisible="1"/>
</group>
</group>
<notebook>
<page string="Services Requests">
<page string="Services Requests" attrs="{'invisible': [('is_seasonal', '=', True)]}">
<field name="service_requests_ids" widget="one2many_list" readonly="1">
<tree editable="bottom">
<field name="family_id"/>
@ -54,6 +55,19 @@
</tree>
</field>
</page>
<page string="Seasonal Services" attrs="{'invisible': [('is_seasonal', '=', False)]}">
<field name="family_seasonal_requests_ids" widget="one2many_list" readonly="1">
<tree editable="bottom">
<field name="family_id"/>
<field name="branch_custom_id"/>
<field name="account_id"/>
<field name="name" string="Service Number"/>
<field name="aid_amount" string="Service Amount"/>
</tree>
</field>
</page>
</notebook>
</sheet>
<div class="oe_chatter">

View File

@ -0,0 +1,98 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- Form View -->
<record id="seasonal_service_form_view" model="ir.ui.view">
<field name="name">seasonal.service.form</field>
<field name="model">seasonal.service</field>
<field name="arch" type="xml">
<form string="Seasonal Service">
<header>
<button name="action_approval_of_beneficiary_services" type="object"
string="Approve Beneficiary Services" class="oe_highlight"
attrs="{'invisible': [('state', '!=', 'draft')]}"
groups="odex_benefit.group_approval_of_beneficiary_services"/>
<button name="action_accounting_approve" type="object" string="Accounting Approve"
class="oe_highlight"
attrs="{'invisible': [('state', '!=', 'approval_of_beneficiary_services')]}"
groups="odex_benefit.group_benefit_accounting_accept"/>
<field name="state" widget="statusbar"
statusbar_visible="draft, approval_of_beneficiary_services,accounting_approve"/>
</header>
<sheet>
<field name="is_payment_order_done" invisible="1"/>
<widget name="web_ribbon" title="Payment Order Done" bg_color="bg-success"
attrs="{'invisible': [('is_payment_order_done', '=', False)]}"/>
<group>
<group>
<field name="name"/>
<field name="date"/>
<field name="service_type_id"/>
<field name="branch_ids" widget="many2many_tags"/>
<field name="family_category_ids" widget="many2many_tags"/>
<field name="payment_order_id" readonly="1"
groups="odex_benefit.group_benefit_accounting_accept"
attrs="{'invisible':[('payment_order_id','=',False)]}"/>
</group>
<group>
<field name="aid_amount" readonly="1"/>
<field name="family_count" readonly="1"/>
<field name="benefit_member_count" readonly="1"/>
<field name="family_disbursement_total_amount" readonly="1"/>
</group>
</group>
<notebook>
<page string="Families">
<field name="family_ids" widget="one2many_list">
<tree editable="bottom">
<field name="family_id"/>
<field name="branch_custom_id"/>
<field name="account_id"/>
<field name="name" string="Service Number"/>
<field name="aid_amount" string="Service Amount"/>
</tree>
</field>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers" groups="base.group_user"/>
<field name="activity_ids"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>
<!-- Tree View -->
<record id="seasonal_service_tree_view" model="ir.ui.view">
<field name="name">seasonal.service.tree</field>
<field name="model">seasonal.service</field>
<field name="arch" type="xml">
<tree string="Seasonal Services">
<field name="name"/>
<field name="date"/>
<field name="service_type_id"/>
<field name="aid_amount"/>
<field name="family_count"/>
<field name="benefit_member_count"/>
<field name="family_disbursement_total_amount"/>
<field name="state"/>
</tree>
</field>
</record>
<!-- Action -->
<record id="seasonal_service_action" model="ir.actions.act_window">
<field name="name">Seasonal Services</field>
<field name="res_model">seasonal.service</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="seasonal_service_menu" name="Seasonal Services"
parent="odex_benefit.benefit_services" sequence="3" action="seasonal_service_action"/>
</odoo>

View File

@ -22,8 +22,9 @@
<group>
<field name="is_main_service"/>
<field name="is_service_producer" attrs="{'invisible':[('is_main_service','=',True)]}"/>
<field name="is_this_service_for_student" attrs="{'invisible':[('is_main_service','=',True)]}"/>
<field name="required_attach" attrs="{'invisible':[('is_main_service','=',True)]}"/>
<field name="is_this_service_for_student" attrs="{'invisible':[('is_main_service','=',True)]}"/>
<field name="required_attach" attrs="{'invisible':[('is_main_service','=',True)]}"/>
<field name="is_seasonal_service"/>
</group>
</group>
<notebook>

View File

@ -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
})