fix loan constrain

This commit is contained in:
Bakry 2024-07-17 15:59:17 +03:00
parent 9301b81913
commit 6fd1248f75
5 changed files with 112 additions and 30 deletions

View File

@ -267,11 +267,6 @@ msgstr "الاسم المعروض"
msgid "Due Loan"
msgstr "سلفة مستحقة الدفع"
#. module: hr_loans_salary_advance
#: model:ir.model.fields,field_description:hr_loans_salary_advance.field_hr_loan_salary_advance__emp_expect_amount
msgid "Emp Expect Amount"
msgstr ""
#. module: hr_loans_salary_advance
#: code:addons/hr_loans_salary_advance/report/loan_payslip_monthly_report.py:0
#: model:ir.model.fields,field_description:hr_loans_salary_advance.field_hr_loan_payment_suspension__employee_id
@ -294,9 +289,10 @@ msgid "Employee '%s' has no contract"
msgstr "عقد '%s' ليس للموظف"
#. module: hr_loans_salary_advance
#: model:ir.model.fields,field_description:hr_loans_salary_advance.field_hr_loan_salary_advance__emp_expect_amount
#: model_terms:ir.ui.view,arch_db:hr_loans_salary_advance.employee_loan_salary_form_view
msgid "Employee Expect Amount"
msgstr "مبلغ الموظف المتوقع"
msgid "Request Employee Amount"
msgstr "مبلغ الموظف المطلوب"
#. module: hr_loans_salary_advance
#: model:ir.model.fields,field_description:hr_loans_salary_advance.field_hr_loan_salary_advance__employee_id
@ -421,14 +417,22 @@ msgid "From Hr Depart"
msgstr ""
#. module: hr_loans_salary_advance
#: model:ir.model.fields,field_description:hr_loans_salary_advance.field_hr_loan_salary_advance__exception_loan
#: model_terms:ir.ui.view,arch_db:hr_loans_salary_advance.employee_loan_salary_form_view
msgid "GM proposed Amount"
msgstr "المبلغ المصدق من المديرالعام"
msgid "Exception Loan"
msgstr "إستثناء السلفة"
#. module: hr_loans_salary_advance
#: model:ir.model.fields,field_description:hr_loans_salary_advance.field_hr_loan_salary_advance__basic_amount
#: model_terms:ir.ui.view,arch_db:hr_loans_salary_advance.employee_loan_salary_form_view
msgid "Basic Amount"
msgstr "المبلغ الاساسي"
#. module: hr_loans_salary_advance
#: model:ir.model.fields,field_description:hr_loans_salary_advance.field_hr_loan_salary_advance__gm_propos_amount
msgid "Gm Propos Amount"
msgstr "قيمة السلفه حسب المدير"
#: model_terms:ir.ui.view,arch_db:hr_loans_salary_advance.employee_loan_salary_form_view
msgid "Approved Amount"
msgstr "المبلغ المصدق"
#. module: hr_loans_salary_advance
#: model:ir.model.fields,field_description:hr_loans_salary_advance.field_hr_loan_salary_advance__emp_hiring_date
@ -503,8 +507,15 @@ msgstr "تاريخ القسط"
#. module: hr_loans_salary_advance
#: model:ir.model.fields,field_description:hr_loans_salary_advance.field_loan_request_type__installment_number
#: model_terms:ir.ui.view,arch_db:hr_loans_salary_advance.loan_request_type_form_view
msgid "Installment Number"
msgstr ""
msgstr "عدد الاقساط"
#. module: hr_loans_salary_advance
#: model_terms:ir.ui.view,arch_db:hr_loans_salary_advance.loan_payment_suspension_form_view
#: model_terms:ir.ui.view,arch_db:hr_loans_salary_advance.loan_request_type_form_view
msgid "Number of months of deferment allowed"
msgstr "عدد شهور التأجيل المسموح بها"
#. module: hr_loans_salary_advance
#: model_terms:ir.ui.view,arch_db:hr_loans_salary_advance.loan_installment_line_form_view
@ -965,8 +976,8 @@ msgstr "الإجراء"
#. module: hr_loans_salary_advance
#: model_terms:ir.ui.view,arch_db:hr_loans_salary_advance.employee_loan_salary_form_view
msgid "RE-Piad"
msgstr "ارجاع للدفع"
msgid "Return To Deduct"
msgstr "إرجاع للخصم"
#. module: hr_loans_salary_advance
#: model:ir.model.fields,field_description:hr_loans_salary_advance.field_hr_account_moves__reference
@ -1650,9 +1661,15 @@ msgstr "تم الترحيل"
#. module: hr_loans_salary_advance
#: model:ir.model.fields.selection,name:hr_loans_salary_advance.selection__hr_loan_salary_advance__state__closed
msgid "Loan Suspended"
msgstr "القرض معلق"
#. module: hr_loans_salary_advance
#: code:addons/hr_loans_salary_advance/models/hr_loan_salary_advance.py:0
#: model_terms:ir.ui.view,arch_db:hr_loans_salary_advance.employee_loan_salary_form_view
msgid "Closed"
msgstr "مغلق"
#, python-format
msgid "Loan Suspension"
msgstr "تعليق القرض"
#. module: hr_loans_salary_advance
#: model:ir.model.fields.selection,name:hr_loans_salary_advance.selection__hr_loan_payment_suspension__state__refuse
@ -1698,3 +1715,44 @@ msgstr "ترحيل للمالية"
#: model_terms:ir.ui.view,arch_db:hr_loans_salary_advance.loan_payment_suspension_form_view
msgid "RE-Draft"
msgstr "إرجاع للمسودة"
#. module: hr_loans_salary_advance
#: model_terms:ir.ui.view,arch_db:hr_loans_salary_advance.employee_loan_salary_form_view
msgid "Are you Sure To Re Deduction?"
msgstr "هل أنت متأكد من إرجاع للخصم؟"
#. module: hr_loans_salary_advance
#: model_terms:ir.ui.view,arch_db:hr_loans_salary_advance.employee_loan_salary_form_view
msgid "Are you Sure To Loan Suspension?"
msgstr "هل أنت متأكد من تعليق القرض؟"
#. module: hr_loans_salary_advance
#: model:ir.model.fields,help:hr_loans_salary_advance.field_hr_loan_salary_advance__exception_loan
msgid "Exception The Required Loan Amount Or The Number Of Installments"
msgstr "إستثناء مبلغ القرض المطلوب او عدد الاقساط"
#. module: hr_loans_salary_advance
#: code:addons/hr_loans_salary_advance/models/hr_loan_salary_advance.py:0
#, python-format
msgid "Sorry, Request Employee Amount Exceeds The Basic Amount"
msgstr "عفوآ, المبلغ المطلوب للموظف يتجاوز المبلغ الأساسي"
#. module: hr_loans_salary_advance
#: code:addons/hr_loans_salary_advance/models/hr_loan_salary_advance.py:0
#, python-format
msgid "Sorry, Approved Amount Exceeds The Basic Amount"
msgstr "عفوآ, المبلغ المصدق يتجاوز المبلغ الأساسي"
#. module: hr_loans_salary_advance
#: code:addons/hr_loans_salary_advance/models/hr_loan_salary_advance.py:0
#, python-format
msgid "Sorry, The Number Of installments Must Not Exceed '%s' Installments"
msgstr "عفوآ، عدد اقساط القرض يجب ان لايتجاوز %s اقساط."
#. module: hr_loans_salary_advance
#: code:addons/hr_loans_salary_advance/models/hr_loan_salary_advance.py:0
#, python-format
msgid "Sorry, Approved Amount Must Be Greater Than Zero"
msgstr "عفوآ, المبلغ المصدق يجب ان يكون اكبر من صفر"

View File

@ -21,7 +21,7 @@ class HrSalaryAdvance(models.Model):
('hr_manager', _('Wait GM Approval')),
('executive_manager', _('Wait Transfer')),
('pay', _('Transferred')), ('refused', _('Refused')),
('closed', _('Closed')), ('cancel', _('Cancel'))],
('closed', _('Loan Suspended'))],
default="draft", tracking=True)
date = fields.Date()
from_hr_depart = fields.Boolean()
@ -30,9 +30,10 @@ class HrSalaryAdvance(models.Model):
evaluation_grade = fields.Many2one(related='employee_id.contract_id.appraisal_result_id', readonly=True)
contract_duration_date = fields.Date(related='employee_id.contract_id.date_start')
payment_ref = fields.Char()
emp_expect_amount = fields.Float()
basic_amount = fields.Float(string='Basic Amount')
emp_expect_amount = fields.Float(string='Request Employee Amount')
finance_propos_amount = fields.Float(compute='_get_finance_gm_propos_amount', store=True)
gm_propos_amount = fields.Float(compute='_get_finance_gm_propos_amount', store=True)
gm_propos_amount = fields.Float(compute='_get_finance_gm_propos_amount', store=True,string='Approved Amount')
months = fields.Integer(default=1)
monthly_salary = fields.Float()
total_paid_inst = fields.Float(compute='get_total_paid_installment')
@ -52,6 +53,8 @@ class HrSalaryAdvance(models.Model):
request_type = fields.Many2one('loan.request.type')
emp_hiring_date = fields.Date(related='employee_id.contract_id.hiring_date')
exception_loan = fields.Boolean(help='Exception The Required Loan Amount Or The Number Of Installments')
# change state to piad
@api.onchange('employee_id', 'request_type')
@ -198,6 +201,9 @@ class HrSalaryAdvance(models.Model):
def create_loan(self):
for item in self:
if item.gm_propos_amount <=0:
raise exceptions.Warning(_("Sorry, Approved Amount Must Be Greater Than Zero"))
if item.contract_duration_date:
if item.end_date:
if item.months <= item.months_employeed:
@ -238,6 +244,7 @@ class HrSalaryAdvance(models.Model):
item.deduction_lines = self.env['loan.installment.line'].browse(items)
else:
raise exceptions.Warning(_('The employee does not have contract Start Date .'))
self._onchange_emp_expect_amount()
# @api.constrains('deduction_lines')
# def deduction_lines_constraine(self):
@ -354,6 +361,7 @@ class HrSalaryAdvance(models.Model):
# Initialize component
self.emp_expect_amount = 0.0
self.gm_propos_amount = 0.0
self.months = self.request_type.installment_number
if self.request_type.loan_type == 'percentage':
total = 0.0
@ -364,14 +372,25 @@ class HrSalaryAdvance(models.Model):
else:
raise exceptions.Warning(_("Employee '%s' has no contract") % self.employee_id.name)
if self.request_type.factor > 0:
self.basic_amount = total * self.request_type.factor
self.emp_expect_amount = total * self.request_type.factor
else:
self.basic_amount = total
self.emp_expect_amount = total
else:
self.basic_amount = self.request_type.amount
self.emp_expect_amount = self.request_type.amount
@api.onchange('emp_expect_amount')
@api.onchange('emp_expect_amount','gm_propos_amount','months')
def _onchange_emp_expect_amount(self):
if self.exception_loan==False :
if self.emp_expect_amount > self.basic_amount >0:
raise exceptions.Warning(_("Sorry, Request Employee Amount Exceeds The Basic Amount"))
if self.gm_propos_amount > self.basic_amount >0:
raise exceptions.Warning(_("Sorry, Approved Amount Exceeds The Basic Amount"))
if self.months > self.request_type.installment_number >0:
raise exceptions.Warning(_("Sorry, The Number Of installments Must Not Exceed '%s' Installments")% self.request_type.installment_number)
if self.request_type.refund_from == 'bonus':
if not self.employee_id.contract_id:
raise exceptions.Warning(_("Employee '%s' has no contract") % self.employee_id.name)

View File

@ -320,8 +320,8 @@ class HrLoanInstallmentSuspension(models.Model):
@api.constrains('installment_date', 'date_new', 'pay_suspend_id.no_month_allowed')
def _check_no_month_allowed(self):
for rec in self:
installment_date = rec.installment_date
stardate_newt_date = rec.date_new
installment_date = str(rec.installment_date)
stardate_newt_date = str(rec.date_new)
start_date_1 = dt.strptime(installment_date, "%Y-%m-%d")
end_date_1 = dt.strptime(stardate_newt_date, "%Y-%m-%d")
no_of_month = relativedelta.relativedelta(end_date_1, start_date_1).months

View File

@ -35,15 +35,16 @@
<button name="refused" string="Refuse" states="executive_manager" type="object"
groups="hr_base.group_account_manager" class="oe_highlight"/>
<button name="closed" string="Closed" class="oe_highlight" type="object"
attrs="{'invisible':[('state','!=','pay')]}"
groups="hr_loans_salary_advance.group_loan_manager"/>
<button name="closed" string="Loan Suspension" class="oe_highlight" type="object"
states="pay" groups="hr.group_hr_manager" confirm="Are you Sure To Loan Suspension?"/>
<button name="refused" string="Refuse" class="oe_highlight" type="object"
states="pay" groups="hr.group_hr_manager"/>
<button name="draft_state" string="RE-Draft" class="oe_highlight" type="object" states="refused"
groups="hr.group_hr_manager,hr_loans_salary_advance.group_loan_manager"
confirm="Are you sure to Reset To Draft This Record?"/>
<button name="to_re_paid" string="RE-Piad" class="oe_highlight" type="object" states="closed"
groups="hr.group_hr_manager,hr_loans_salary_advance.group_loan_manager"/>
<button name="to_re_paid" string="Return To Deduct" class="oe_highlight" type="object" states="closed"
groups="hr.group_hr_manager,hr_loans_salary_advance.group_loan_manager" confirm="Are you Sure To Re Deduction?"/>
<field name="state" widget="statusbar"
statusbar_visible="draft,submit,direct_manager,hr_manager,executive_manager,pay,closed,refused"/>
</header>
@ -74,11 +75,14 @@
<field name="months_employeed" string="working duration(months)" readonly="1"/>
</group>
<group>
<field name="emp_expect_amount" string="Employee Expect Amount" required="True"
<field name="exception_loan" string="Exception Loan" groups="hr.group_hr_manager"
attrs="{'readonly':[('state','!=','draft')]}"/>
<field name="basic_amount" string="Basic Amount" readonly="1" force_save="1"/>
<field name="emp_expect_amount" string="Request Employee Amount" required="True"
attrs="{'readonly':[('state','!=','draft')]}"/>
<!-- <field name="finance_propos_amount" string="Finance proposed Amount"-->
<!-- attrs="{'readonly':[('state','!=','draft')]}"/>-->
<field name="gm_propos_amount" string="GM proposed Amount"
<field name="gm_propos_amount" string="Approved Amount"
attrs="{'readonly':[('state','!=','draft')]}"/>
<field name="months" string="Number of months"
attrs="{'readonly':[('state','!=','draft')]}"/>

View File

@ -23,6 +23,7 @@
<field name="loan_type" string="Loan type"/>
<field name="amount" string="Loan amount"
attrs="{'invisible':[('loan_type','=','percentage')]}"/>
<field name="installment_number" string="Installment Number"/>
<field name="percentage" string="Percentage"/>
<field name="refund_from" string='Refund From' required="1"/>
<field name="bonus_id" string='Bonus' attrs="{'invisible':[('refund_from','!=','bonus')],
@ -35,7 +36,7 @@
<field name="allow_overlapping" string="Allow overlapping"
attrs="{'invisible':[('number_of_request','=','once')]}"/>
<field name="year" string="Years of service"/>
<!-- <field name="no_month_allowed" string="Number of months of deferment allowed"/>-->
<field name="no_month_allowed" string="Number of months of deferment allowed"/>
</group>
</group>
</page>