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)
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)