[IMP] grant.benefit
This commit is contained in:
parent
ab2f11964e
commit
0923f303cf
|
|
@ -1,89 +1,91 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<odoo>
|
||||
<record id="sequence_benefit" model="ir.sequence">
|
||||
<field name="name">Benefit Sequence</field>
|
||||
<field name="code">benefit.sequence</field>
|
||||
<field name="prefix">B/</field>
|
||||
<field eval="1" name="number_next"/>
|
||||
<field eval="1" name="number_increment"/>
|
||||
<field eval="False" name="use_date_range"/>
|
||||
<field eval="False" name="company_id"/>
|
||||
<field name="padding">4</field>
|
||||
</record>
|
||||
<record id="receive_zkat_sequence" model="ir.sequence">
|
||||
<field name="name">Receive Zkat Sequence</field>
|
||||
<field name="code">benefit.receive.zkat.sequence</field>
|
||||
<field name="prefix">RZ/</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>
|
||||
<data noupdate="1">
|
||||
<record id="sequence_benefit" model="ir.sequence">
|
||||
<field name="name">Benefit Sequence</field>
|
||||
<field name="code">benefit.sequence</field>
|
||||
<field name="prefix">B/</field>
|
||||
<field eval="1" name="number_next"/>
|
||||
<field eval="1" name="number_increment"/>
|
||||
<field eval="False" name="use_date_range"/>
|
||||
<field eval="False" name="company_id"/>
|
||||
<field name="padding">4</field>
|
||||
</record>
|
||||
<record id="receive_zkat_sequence" model="ir.sequence">
|
||||
<field name="name">Receive Zkat Sequence</field>
|
||||
<field name="code">benefit.receive.zkat.sequence</field>
|
||||
<field name="prefix">RZ/</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>
|
||||
|
||||
<record id="zkat_sequence" model="ir.sequence">
|
||||
<field name="name">Zkat Sequence</field>
|
||||
<field name="code">benefit.zkat.sequence</field>
|
||||
<field name="prefix">Z/</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 Visit -->
|
||||
<record id="visit_location_sequence" model="ir.sequence">
|
||||
<field name="name">Visit Sequence</field>
|
||||
<field name="code">visit.location.sequence</field>
|
||||
<field name="prefix">VT</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">5</field>
|
||||
</record>
|
||||
<!-- Sequence for services requests -->
|
||||
<record id="service_request_sequence" model="ir.sequence">
|
||||
<field name="name">Services Requests Sequence</field>
|
||||
<field name="code">service.request.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 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">
|
||||
<field name="name">Payment Orders Sequence</field>
|
||||
<field name="code">payment.orders.sequence</field>
|
||||
<field name="prefix">P/</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 Family Expense -->
|
||||
<record id="family_expense_sequence" model="ir.sequence">
|
||||
<field name="name">Family Expense Sequence</field>
|
||||
<field name="code">family.expense.sequence</field>
|
||||
<field name="prefix">EXP/</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>
|
||||
<record id="zkat_sequence" model="ir.sequence">
|
||||
<field name="name">Zkat Sequence</field>
|
||||
<field name="code">benefit.zkat.sequence</field>
|
||||
<field name="prefix">Z/</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 Visit -->
|
||||
<record id="visit_location_sequence" model="ir.sequence">
|
||||
<field name="name">Visit Sequence</field>
|
||||
<field name="code">visit.location.sequence</field>
|
||||
<field name="prefix">VT</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">5</field>
|
||||
</record>
|
||||
<!-- Sequence for services requests -->
|
||||
<record id="service_request_sequence" model="ir.sequence">
|
||||
<field name="name">Services Requests Sequence</field>
|
||||
<field name="code">service.request.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 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">
|
||||
<field name="name">Payment Orders Sequence</field>
|
||||
<field name="code">payment.orders.sequence</field>
|
||||
<field name="prefix">P/</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 Family Expense -->
|
||||
<record id="family_expense_sequence" model="ir.sequence">
|
||||
<field name="name">Family Expense Sequence</field>
|
||||
<field name="code">family.expense.sequence</field>
|
||||
<field name="prefix">EXP/</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>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -9922,6 +9922,7 @@ msgstr " توجيه الملف للاخصائي"
|
|||
#. module: odex_benefit
|
||||
#: model:ir.model.fields,field_description:odex_benefit.field_changes_requests__researcher_ids
|
||||
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__researcher_id
|
||||
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__researcher_id
|
||||
#: model:ir.model.fields,field_description:odex_benefit.field_family_complaints__researcher_id
|
||||
#: model:ir.model.fields,field_description:odex_benefit.field_visit_location__researcher_ids
|
||||
msgid "Researcher"
|
||||
|
|
@ -12071,6 +12072,7 @@ msgstr "مدير اللجنة النسائية"
|
|||
#. module: odex_benefit
|
||||
#: model:ir.model.fields.selection,name:odex_benefit.selection__grant_benefit__state__new
|
||||
#: model:ir.model.fields.selection,name:odex_benefit.selection__family_member__state__new
|
||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.grant_benefit_search
|
||||
msgid "New"
|
||||
msgstr "جديد"
|
||||
|
||||
|
|
@ -14495,4 +14497,18 @@ msgid ""
|
|||
"The benefit record <b>%s</b> state has been changed to <b>%s</b>.<br/>Return"
|
||||
" Reason: <b>%s</b>"
|
||||
msgstr ""
|
||||
"تم تغيير حالة المستفيد <b>%s</b> إلى <b>%s</b>.<br/>سبب الإرجاع: <b>%s</b>"
|
||||
"تم تغيير حالة المستفيد <b>%s</b> إلى <b>%s</b>.<br/>سبب الإرجاع: <b>%s</b>"
|
||||
|
||||
#. module: odex_benefit
|
||||
#: code:addons/odex_benefit/models/res_users.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Failed to delete this partner after the related user was "
|
||||
"removed.<br/>Reason: %s"
|
||||
msgstr "فشل في حذف هذا الشريك بعد حذف المستخدم المرتبط به.<br/>السبب: %s"
|
||||
|
||||
#. module: odex_benefit
|
||||
#: code:addons/odex_benefit/models/res_users.py:0
|
||||
#, python-format
|
||||
msgid "Cannot delete user '%s': linked to Benefits - Profiles %s"
|
||||
msgstr "لا يمكن حذف المستخدم '%s': مرتبط بملفات المستفيدين %s"
|
||||
|
|
@ -32,4 +32,5 @@ from . import family_complaints
|
|||
from . import service_refuse_reason
|
||||
from . import res_city
|
||||
from . import seasonal_service
|
||||
# from . import res_config_settings
|
||||
# from . import res_config_settings
|
||||
from . import res_users
|
||||
|
|
@ -20,7 +20,7 @@ class GrantBenefitProfile(models.Model):
|
|||
_description = "Benefits - Profiles"
|
||||
_inherit = ['mail.thread', 'mail.activity.mixin']
|
||||
_inherits = {'res.partner': 'partner_id'}
|
||||
_order = 'code desc'
|
||||
_order = 'create_date desc'
|
||||
def get_url(self):
|
||||
return "wwww"
|
||||
|
||||
|
|
@ -574,6 +574,10 @@ class GrantBenefitProfile(models.Model):
|
|||
seasonal_service_id = fields.Many2one('seasonal.service', string="Seasonal Service")
|
||||
is_from_portal = fields.Boolean(string='is Created from Portal?', default=False, readonly=True)
|
||||
|
||||
_sql_constraints = [
|
||||
('unique_code', 'unique (code)', 'This code already exists')
|
||||
]
|
||||
|
||||
|
||||
def action_set_waiting_if_needed(self):
|
||||
records = self.env['grant.benefit'].browse(self._context.get('active_ids', []))
|
||||
|
|
@ -1063,7 +1067,7 @@ class GrantBenefitProfile(models.Model):
|
|||
|
||||
def unlink(self):
|
||||
for order in self:
|
||||
if order.state not in ['draft']:
|
||||
if order.state not in ['draft','new']:
|
||||
raise UserError(_('You cannot delete this record'))
|
||||
return super(GrantBenefitProfile, self).unlink()
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class ResUsers(models.Model):
|
||||
_inherit = 'res.users'
|
||||
|
||||
def unlink(self):
|
||||
for user in self:
|
||||
grants = self.env['grant.benefit'].search([
|
||||
('user_id', '=', user.id),
|
||||
('state', 'not in', ['draft', 'new'])
|
||||
])
|
||||
if grants:
|
||||
grant_info = ', '.join('[%s: %s]' % (g.code or g.name or g.id, g.state) for g in grants)
|
||||
raise ValidationError(
|
||||
_("Cannot delete user '%s': linked to Benefits - Profiles %s") % (user.name, grant_info)
|
||||
)
|
||||
partners = self.mapped('partner_id')
|
||||
res = super(ResUsers, self).unlink()
|
||||
|
||||
for partner in partners:
|
||||
still_linked = self.env['res.users'].search([('partner_id', '=', partner.id)], limit=1)
|
||||
if not still_linked:
|
||||
try:
|
||||
partner.unlink()
|
||||
except Exception as e:
|
||||
partner.message_post(
|
||||
body=_(
|
||||
"Failed to delete this partner after the related user was removed.<br/>Reason: %s") % str(
|
||||
e),
|
||||
)
|
||||
|
||||
return res
|
||||
|
|
@ -16,6 +16,7 @@ class ServiceRequest(models.Model):
|
|||
benefit_type = fields.Selection(string='Benefit Type',selection=[('family', 'Family'),('member', 'Member')])
|
||||
date = fields.Datetime(string='Request Date',default=fields.Datetime.now)
|
||||
family_id = fields.Many2one('grant.benefit',string='Family',domain="['|','|',('state','=','second_approve'),('state','=','temporarily_suspended'),('state','=','suspended_first_approve')]")
|
||||
researcher_id = fields.Many2one("committees.line", string="Researcher", related="family_id.researcher_id",store=True)
|
||||
family_category = fields.Many2one('benefit.category',string='Family Category',related='family_id.benefit_category_id')
|
||||
benefit_member_count = fields.Integer(string="Benefit Member count", related='family_id.benefit_member_count')
|
||||
branch_custom_id = fields.Many2one('branch.settings', string="Branch",related='family_id.branch_custom_id',store=True)
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
<field name="view_mode">kanban,form,tree,activity,google_map</field>
|
||||
<!-- <field name="domain">[('state','=','draft')]-->
|
||||
<!-- </field>-->
|
||||
<field name="context">{'is_benefit': True}</field>
|
||||
<field name="context">{'is_benefit': True,'search_default_new': 1}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="oe_view_nocontent_create">Create the Benefit
|
||||
</p>
|
||||
|
|
|
|||
|
|
@ -914,16 +914,6 @@
|
|||
<field name="expenses_type_custom"/>
|
||||
<field name="note"/>
|
||||
<field name="amount" sum="amount"/>
|
||||
<button name="action_accept" type="object" string="Accept"
|
||||
class="oe_highlight"
|
||||
attrs="{'invisible':[('state','=','accepted')]}"
|
||||
groups="odex_benefit.group_accept_income_and_expenses"/>
|
||||
<button name="action_refuse" type="object" string="Refuse"
|
||||
class="oe_highlight" attrs="{'invisible':[('state','=','refused')]}"
|
||||
groups="odex_benefit.group_accept_income_and_expenses"/>
|
||||
<field name="state" readonly="1" force_save="1" widget="badge"
|
||||
decoration-success="state in ['accepted']"
|
||||
decoration-danger="state in ['refused']"/>
|
||||
<button name="action_accept" type="object" string="Accept" class="oe_highlight" attrs="{'invisible':[('state','=','accepted')]}" groups="odex_benefit.group_accept_income_and_expenses"/>
|
||||
<button name="action_refuse" type="object" string="Refuse" class="oe_highlight" attrs="{'invisible':[('state','=','refused')]}" groups="odex_benefit.group_accept_income_and_expenses"/>
|
||||
<field name="state" readonly="1" force_save="1" widget="badge" decoration-warning="state in ['waiting']" decoration-success="state in ['accepted']" decoration-danger="state in ['refused']"/>
|
||||
|
|
@ -941,15 +931,6 @@
|
|||
<field name="salary_attach" widget="many2many_attachment_preview"/>
|
||||
<field name="attach_start_date"/>
|
||||
<field name="attach_end_date"/>
|
||||
<button name="action_accept" type="object" string="Accept" class="oe_highlight"
|
||||
attrs="{'invisible':[('state','=','accepted')]}"
|
||||
groups="odex_benefit.group_accept_income_and_expenses"/>
|
||||
<button name="action_refuse" type="object" string="Refuse" class="oe_highlight"
|
||||
attrs="{'invisible':[('state','=','refused')]}"
|
||||
groups="odex_benefit.group_accept_income_and_expenses"/>
|
||||
<field name="state" readonly="1" force_save="1" widget="badge"
|
||||
decoration-success="state in ['accepted']"
|
||||
decoration-danger="state in ['refused']"/>
|
||||
<button name="action_accept" type="object" string="Accept" class="oe_highlight" attrs="{'invisible':[('state','=','accepted')]}" groups="odex_benefit.group_accept_income_and_expenses"/>
|
||||
<button name="action_refuse" type="object" string="Refuse" class="oe_highlight" attrs="{'invisible':[('state','=','refused')]}" groups="odex_benefit.group_accept_income_and_expenses"/>
|
||||
<field name="state" readonly="1" force_save="1" widget="badge" decoration-warning="state in ['waiting']" decoration-success="state in ['accepted']" decoration-danger="state in ['refused']"/>
|
||||
|
|
@ -1414,6 +1395,8 @@
|
|||
<separator/>
|
||||
<filter string="Auto Suspended" name="auto_suspend" domain="[('suspend_method', '=', 'auto')]"/>
|
||||
<separator/>
|
||||
<filter string="New" name="new" domain="[('state', '=', 'new')]"/>
|
||||
<separator/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@
|
|||
<field name="benefit_type" attrs="{'readonly':[('state','not in',['draft','researcher','send_request'])]}" required="1"/>
|
||||
<field name="family_id" attrs="{'readonly':[('state','not in',['draft','researcher','send_request'])]}" required="1"/>
|
||||
<field name="family_category" force_save="1"/>
|
||||
<field name="researcher_id" force_save="1"/>
|
||||
<field name="benefit_member_count" force_save="1"/>
|
||||
<field name="eid_gift_benefit_count" attrs="{'invisible':['|',('service_type','!=','eid_gift'),('benefit_type','!=','family')]}"/>
|
||||
<field name="branch_custom_id" force_save="1"/>
|
||||
|
|
@ -257,6 +258,7 @@
|
|||
<field name="create_date"/>
|
||||
<field name="create_uid" string="Request Creator"/>
|
||||
<field name="family_id"/>
|
||||
<field name="researcher_id"/>
|
||||
<field name="need_status"/>
|
||||
<field name="main_service_category"/>
|
||||
<field name="sub_service_category"/>
|
||||
|
|
|
|||
Loading…
Reference in New Issue