From 6fd1248f75fcb46748610aff94c34da794e55646 Mon Sep 17 00:00:00 2001 From: Bakry Date: Wed, 17 Jul 2024 15:59:17 +0300 Subject: [PATCH] fix loan constrain --- .../hr_loans_salary_advance/i18n/ar_001.po | 90 +++++++++++++++---- .../models/hr_loan_salary_advance.py | 27 +++++- .../models/loan_payment_suspension.py | 4 +- .../views/hr_loan_salary_advance.xml | 18 ++-- .../views/loan_request_type_view.xml | 3 +- 5 files changed, 112 insertions(+), 30 deletions(-) diff --git a/odex25_hr/hr_loans_salary_advance/i18n/ar_001.po b/odex25_hr/hr_loans_salary_advance/i18n/ar_001.po index 662248a46..9e26b3b83 100644 --- a/odex25_hr/hr_loans_salary_advance/i18n/ar_001.po +++ b/odex25_hr/hr_loans_salary_advance/i18n/ar_001.po @@ -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 "عفوآ, المبلغ المصدق يجب ان يكون اكبر من صفر" + + diff --git a/odex25_hr/hr_loans_salary_advance/models/hr_loan_salary_advance.py b/odex25_hr/hr_loans_salary_advance/models/hr_loan_salary_advance.py index eaf4995a4..e1c6af8a9 100644 --- a/odex25_hr/hr_loans_salary_advance/models/hr_loan_salary_advance.py +++ b/odex25_hr/hr_loans_salary_advance/models/hr_loan_salary_advance.py @@ -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) diff --git a/odex25_hr/hr_loans_salary_advance/models/loan_payment_suspension.py b/odex25_hr/hr_loans_salary_advance/models/loan_payment_suspension.py index c1d3c327b..8bc1820a2 100644 --- a/odex25_hr/hr_loans_salary_advance/models/loan_payment_suspension.py +++ b/odex25_hr/hr_loans_salary_advance/models/loan_payment_suspension.py @@ -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 diff --git a/odex25_hr/hr_loans_salary_advance/views/hr_loan_salary_advance.xml b/odex25_hr/hr_loans_salary_advance/views/hr_loan_salary_advance.xml index d78bd5199..d0cf28752 100644 --- a/odex25_hr/hr_loans_salary_advance/views/hr_loan_salary_advance.xml +++ b/odex25_hr/hr_loans_salary_advance/views/hr_loan_salary_advance.xml @@ -35,15 +35,16 @@