def validate_non_pro_rata_benefit_claim(self, max_benefits,
                                            payroll_period):
        claimed_amount = self.claimed_amount
        pro_rata_amount = self.get_pro_rata_amount_in_application(
            payroll_period.name)
        if not pro_rata_amount:
            pro_rata_amount = 0
            # Get pro_rata_amount if there is no application,
            # get salary structure for the date and calculate pro-rata amount
            sal_struct_name = get_assigned_salary_structure(
                self.employee, self.claim_date)
            if sal_struct_name:
                sal_struct = frappe.get_doc("Salary Structure",
                                            sal_struct_name)
                pro_rata_amount = get_benefit_pro_rata_ratio_amount(
                    self.employee, self.claim_date, sal_struct)

        claimed_amount += get_previous_claimed_amount(self.employee,
                                                      payroll_period,
                                                      non_pro_rata=True)
        if max_benefits < pro_rata_amount + claimed_amount:
            frappe.throw(
                _("Maximum benefit of employee {0} exceeds {1} by the sum {2} of benefit application pro-rata component\
			amount and previous claimed amount").format(
                    self.employee, max_benefits,
                    pro_rata_amount + claimed_amount - max_benefits))
Exemple #2
0
	def validate_max_benefit_for_component(self, payroll_period):
		if self.max_amount_eligible:
			claimed_amount = self.claimed_amount
			claimed_amount += get_previous_claimed_amount(self.employee,
				payroll_period, component = self.earning_component)
			if claimed_amount > self.max_amount_eligible:
				frappe.throw(_("Maximum amount eligible for the component {0} exceeds {1}")
					.format(self.earning_component, self.max_amount_eligible))
    def validate_benefit_claim_amount(self, max_benefits, payroll_period):
        claimed_amount = self.claimed_amount
        claimed_amount += get_previous_claimed_amount(self.employee,
                                                      payroll_period)
        if max_benefits < claimed_amount:
            frappe.throw(
                _("Maximum benefit of employee {0} exceeds {1} by the sum {2} of previous claimed\
			amount").format(self.employee, max_benefits, claimed_amount - max_benefits))
	def validate_max_benefit_for_component(self, payroll_period):
		if self.max_amount_eligible:
			claimed_amount = self.claimed_amount
			claimed_amount += get_previous_claimed_amount(self.employee,
				payroll_period, component = self.earning_component)
			if claimed_amount > self.max_amount_eligible:
				frappe.throw(_("Maximum amount eligible for the component {0} exceeds {1}")
					.format(self.earning_component, self.max_amount_eligible))
	def validate_prev_benefit_claim(self):
		if self.employee_benefits:
			for benefit in self.employee_benefits:
				if benefit.pay_against_benefit_claim == 1:
					payroll_period = frappe.get_doc("Payroll Period", self.payroll_period)
					benefit_claimed = get_previous_claimed_amount(self.employee, payroll_period, component = benefit.earning_component)
					benefit_given = get_sal_slip_total_benefit_given(self.employee, payroll_period, component = benefit.earning_component)
					benefit_claim_remining = benefit_claimed - benefit_given
					if benefit_claimed > 0 and benefit_claim_remining > benefit.amount:
						frappe.throw(_("An amount of {0} already claimed for the component {1},\
						 set the amount equal or greater than {2}").format(benefit_claimed, benefit.earning_component, benefit_claim_remining))
	def validate_prev_benefit_claim(self):
		if self.employee_benefits:
			for benefit in self.employee_benefits:
				if benefit.pay_against_benefit_claim == 1:
					payroll_period = frappe.get_doc("Payroll Period", self.payroll_period)
					benefit_claimed = get_previous_claimed_amount(self.employee, payroll_period, component = benefit.earning_component)
					benefit_given = get_sal_slip_total_benefit_given(self.employee, payroll_period, component = benefit.earning_component)
					benefit_claim_remining = benefit_claimed - benefit_given
					if benefit_claimed > 0 and benefit_claim_remining > benefit.amount:
						frappe.throw(_("An amount of {0} already claimed for the component {1},\
						 set the amount equal or greater than {2}").format(benefit_claimed, benefit.earning_component, benefit_claim_remining))
	def validate_non_pro_rata_benefit_claim(self, max_benefits, payroll_period):
		claimed_amount = self.claimed_amount
		pro_rata_amount = self.get_pro_rata_amount_in_application(payroll_period.name)
		if not pro_rata_amount:
			pro_rata_amount = 0
			# Get pro_rata_amount if there is no application,
			# get salary structure for the date and calculate pro-rata amount
			sal_struct_name = get_assigned_salary_structure(self.employee, self.claim_date)
			if sal_struct_name:
				sal_struct = frappe.get_doc("Salary Structure", sal_struct_name)
				pro_rata_amount = get_benefit_pro_rata_ratio_amount(self.employee, self.claim_date, sal_struct)

		claimed_amount += get_previous_claimed_amount(self.employee, payroll_period, non_pro_rata = True)
		if max_benefits < pro_rata_amount + claimed_amount:
			frappe.throw(_("Maximum benefit of employee {0} exceeds {1} by the sum {2} of benefit application pro-rata component\
			amount and previous claimed amount").format(self.employee, max_benefits, pro_rata_amount+claimed_amount-max_benefits))
	def validate_benefit_claim_amount(self, max_benefits, payroll_period):
		claimed_amount = self.claimed_amount
		claimed_amount += get_previous_claimed_amount(self.employee, payroll_period)
		if max_benefits < claimed_amount:
			frappe.throw(_("Maximum benefit of employee {0} exceeds {1} by the sum {2} of previous claimed\
			amount").format(self.employee, max_benefits, claimed_amount-max_benefits))