حقوق پایه MONTHLY_WAGE none code work_hours = worked_days['WORK100'].number_of_hours if 'WORK100' in worked_days else 0 leave_120_hours = worked_days['LEAVE120'].number_of_hours if 'LEAVE120' in worked_days else 0 leave_100_hours = worked_days['LEAVE100'].number_of_hours if 'LEAVE100' in worked_days else 0 total_hours = work_hours + leave_120_hours + leave_100_hours result = contract.wage * total_hours / 8 اضافه‌کاری OVERTIME_WAGE python result = worked_days['OVERTIME'].number_of_hours code result = contract.wage * worked_days['OVERTIME'].number_of_hours * 1.4 / 8 کمک هزینه مسکن HOUSING_ALLOWANCE none code result = payslip._rule_parameter('housing_allowance') کمک هزینه عائله‌مندی MARITAL_ALLOWANCE python result = employee.marital == 'married' code result = payslip._rule_parameter('marital_allowance') کمک هزینه فرزند FAMILY_ALLOWANCE python result = employee.children > 0 code result = payslip._rule_parameter('child_allowance') * employee.children کمک هزینه خواربار CONSUMPTION_ALLOWANCE python result = payslip._rule_parameter('CONSUMPTION_ALLOWANCE') code result = payslip._rule_parameter('CONSUMPTION_ALLOWANCE') حضور به موقع GOODATTENDANCE_ALLOWANCE python result = payslip._rule_parameter('GOODATTENDANCE_ALLOWANCE') code result = payslip._rule_parameter('GOODATTENDANCE_ALLOWANCE') مانده هزینه‌ها REMAINED_EXPENSES python result = inputs['REIMBURSEMENT'] code result = inputs['REIMBURSEMENT'] بیمه سهم کارفرما SSP_COMPANY none code # مبنای مشمول بیمه: جمع BASIC و ALW insurable_base = categories['BASIC'] + categories['ALW'] # سهم کارفرما ۲۳٪ و سهم کارمند ۷٪ employer_share = insurable_base * 0.23 # محاسبه ناخالص مشمول بیمه result = employer_share result_name = "ناخالص مشمول بیمه" بیمه بیکاری UNEMPLOYMENT_SECURITY none code result = 0.0 بیمه سهم کارگر SSP_EMPLOYEE none code # مبنای مشمول بیمه: جمع BASIC و ALW insurable_base = categories['BASIC'] + categories['ALW'] # سهم کارفرما ۲۳٪ و سهم کارمند ۷٪ employer_share = insurable_base * 0.23 employee_share = insurable_base * 0.07 # محاسبه ناخالص مشمول بیمه result = employee_share ناخالص مشمول بیمه GROSS_SSP none code # مبنای مشمول بیمه: جمع BASIC و ALW insurable_base = categories['BASIC'] + categories['ALW'] # سهم کارفرما ۲۳٪ و سهم کارمند ۷٪ employer_share = insurable_base * 0.23 employee_share = insurable_base * 0.07 # محاسبه ناخالص مشمول بیمه result = insurable_base + employer_share + employee_share result_name = "ناخالص مشمول بیمه" ناخالص مشمول مالیات GROSS_TAXABLE python result = worked_days['WORK100'].number_of_days code # ۱) مبلغ حقوق ماهانه mw = contract.wage * (worked_days['WORK100'].number_of_days + (worked_days['LEAVE120'].number_of_days if worked_days['LEAVE120'].number_of_days else 0.0) ) # ۳) ناخالص مشمول مالیات = حقوق ماهانه + اضافه‌کاری result = mw # ۴) نام دلخواه برای نمایش result_name = "ناخالص مشمول مالیات" مالیات TAX_AMOUNT none code monthly_wage = contract.wage if monthly_wage <= 24000000: result = 0 elif monthly_wage <= 30000000: result = (monthly_wage - 24000000) * 0.10 elif monthly_wage <= 38000000: result = (6000000 * 0.10) + (monthly_wage - 30000000) * 0.15 elif monthly_wage <= 50000000: result = (6000000 * 0.10) + (8000000 * 0.15) + (monthly_wage - 38000000) * 0.20 elif monthly_wage <= 66667000: result = (6000000 * 0.10) + (8000000 * 0.15) + (12000000 * 0.20) + (monthly_wage - 50000000) * 0.25 else: result = (6000000 * 0.10) + (8000000 * 0.15) + (12000000 * 0.20) + (16667000 * 0.25) + (monthly_wage - 66667000) * 0.30 بیمه تکمیلی SUPPLEMENTARY_INSURANCE python result = inputs.ASSIG_SALARY code result = inputs['ASSIG_SALARY'].amount قسط وام LOAN_INSTALLMENT python result = inputs['DEDUCTION'] code result = inputs['DEDUCTION'].amount قسط مساعده ADVANCE_INSTALLMENT none code result = 0.0 دیر آمدگی DELAYED_CHECKIN python result = payslip.late_check_in_count_slip >= 2 code result = 0 result_name = "" if payslip.late_check_in_count_slip >= 2: result = inputs['DELAYED_CHCK'].amount result_name = "دیر آمدگی" خالص دریافتی NET none code result = categories['BASIC'] + categories['ALW'] + categories['DED'] End of Service Base Daily - 1404 EOSBASE1404_D 7 code # جدول پایه سنوات روزانه به ازای سال سابقه service_table = { 0: 0, 1: 94000, 2: 186400, 3: 299128, 4: 435529, 5: 561017, 6: 673958, 7: 764873, 8: 839722, 9: 922359, 10: 976799, 11: 1038860, 12: 1075168, 13: 1099568, 14: 1121934, 15: 1141081, 16: 1161373, 17: 1174944, 18: 1189193, 19: 1204156, 20: 1220615, 21: 1235386, 22: 1248422, 23: 1258705, 24: 1267521, 25: 1275000, 26: 1281327, 27: 1285196, 28: 1288468, 29: 1291772, 30: 1295768, 31: 1299202 } years = int(contract.l10n_ir_years_of_service or 0) daily_amount = service_table.get(years, 0) date_from = payslip.date_from date_to = payslip.date_to month_days = (date_to - date_from).days + 1 result = daily_amount * month_days کم‌کارکرد LOW_PERFORMANCE python expected_hours = worked_days['WORK100'].number_of_hours if 'WORK100' in worked_days else 0.0 actual_hours = ( worked_days['WORK100'].number_of_hours if 'WORK100' in worked_days else 0.0 ) + ( worked_days['LEAVE120'].number_of_hours if 'LEAVE120' in worked_days else 0.0 ) + ( worked_days['LEAVE105'].number_of_hours if 'LEAVE105' in worked_days else 0.0 ) + ( worked_days['LEAVE110'].number_of_hours if 'LEAVE110' in worked_days else 0.0 ) + ( worked_days['WORK110'].number_of_hours if 'WORK110' in worked_days else 0.0 ) result = actual_hours < expected_hours code expected_hours = worked_days['WORK100'].number_of_hours if 'WORK100' in worked_days else 0.0 actual_hours = ( worked_days['WORK100'].number_of_hours if 'WORK100' in worked_days else 0.0 ) + ( worked_days['LEAVE120'].number_of_hours if 'LEAVE120' in worked_days else 0.0 ) + ( worked_days['LEAVE105'].number_of_hours if 'LEAVE105' in worked_days else 0.0 ) + ( worked_days['LEAVE110'].number_of_hours if 'LEAVE110' in worked_days else 0.0 ) + ( worked_days['WORK110'].number_of_hours if 'WORK110' in worked_days else 0.0 ) short_hours = max(0.0, expected_hours - actual_hours) hourly_rate = contract.wage / 30.0 / (contract.resource_calendar_id.hours_per_day or 8.0) result = -1 * short_hours * hourly_rate result_name = "کم‌کارکرد"