seasonal sevices
This commit is contained in:
parent
3a7c946be2
commit
f83fc9681c
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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"/>
|
||||
|
|
|
|||
|
|
@ -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 "الخدمات الموسمية"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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}',
|
||||
|
|
|
|||
|
|
@ -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}}
|
||||
|
||||
|
||||
|
||||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
})
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue