Exemple #1
0
	def calculate_component_amounts(self):
		if not getattr(self, '_salary_structure_doc', None):
			self._salary_structure_doc = frappe.get_doc('Salary Structure', self.salary_structure)

		payroll_period = get_payroll_period(self.start_date, self.end_date, self.company)

		self.add_structure_components()
		self.add_employee_benefits(payroll_period)
		self.add_additional_salary_components()
		self.add_tax_components(payroll_period)
Exemple #2
0
	def calculate_component_amounts(self, component_type):
		if not getattr(self, '_salary_structure_doc', None):
			self._salary_structure_doc = frappe.get_doc('Salary Structure', self.salary_structure)

		payroll_period = get_payroll_period(self.start_date, self.end_date, self.company)

		self.add_structure_components(component_type)
		self.add_additional_salary_components(component_type)
		if component_type == "earnings":
			self.add_employee_benefits(payroll_period)
		else:
			self.add_tax_components(payroll_period)

		self.set_component_amounts_based_on_payment_days(component_type)
 def validate(self):
     max_benefits = get_max_benefits(self.employee, self.claim_date)
     if not max_benefits or max_benefits <= 0:
         frappe.throw(
             _("Employee {0} has no maximum benefit amount").format(
                 self.employee))
     payroll_period = get_payroll_period(
         self.claim_date, self.claim_date,
         frappe.db.get_value("Employee", self.employee, "company"))
     if not payroll_period:
         frappe.throw(
             _("{0} is not in a valid Payroll Period").format(
                 frappe.format(self.claim_date, dict(fieldtype='Date'))))
     self.validate_max_benefit_for_component(payroll_period)
     self.validate_max_benefit_for_sal_struct(max_benefits)
     self.validate_benefit_claim_amount(max_benefits, payroll_period)
     if self.pay_against_benefit_claim:
         self.validate_non_pro_rata_benefit_claim(max_benefits,
                                                  payroll_period)