Оклад BASIC none code # Оклад пропорционально отработанным дням (норма и отработанные берутся из # календаря и hr.leave автоматически: отпуск/больничный/за свой счёт # уменьшают отработанные дни). Ручной ввод не требуется. norm = payslip.rsbu_norm_days or 0.0 worked = payslip.rsbu_worked_days or 0.0 if norm: result = contract.wage * worked / norm else: result = contract.wage Премия PREMIUM none code result = inputs.PREMIUM.amount if 'PREMIUM' in inputs.dict else 0.0 Отпускные VACATION none code avg = employee.rsbu_avg_daily_wage or 0.0 result = avg * (payslip.rsbu_vacation_cal_days or 0.0) Больничный (3 дня за счёт работодателя) SICK3 none code # Календарные дни больничного берутся из hr.leave (тип «Больничный») # автоматически. Работодатель оплачивает первые 3 календарных дня. sick_days = payslip.rsbu_sick_cal_days or 0.0 employer_days = min(3.0, sick_days) avg = employee.rsbu_avg_daily_wage or 0.0 rate = employee.rsbu_sick_rate() result = avg * employer_days * rate Начислено GROSS none code result = categories.RSBU_BASIC + categories.RSBU_ALW НДФЛ NDFL none code result = - payslip.rsbu_compute_ndfl(current_gross=categories.RSBU_GROSS) Страховые взносы (единый тариф) INSURANCE none code # Сумма = разбивка ОПС+ОМС+ВНиМ (с учётом льготы МСП сверх 1.5 МРОТ). # База берётся из localdict (RSBU_GROSS − SICK3), т.к. строки листка на # момент расчёта ещё не сохранены. Разбивка по видам для РСВ доступна # через payslip.rsbu_insurance_breakdown(base). result = payslip.rsbu_insurance_breakdown( base=max(0.0, categories.RSBU_GROSS - SICK3))['total'] Взносы на травматизм INJURY none code rate = payslip.company_id.rsbu_injury_rate or 0.0 base = categories.RSBU_GROSS - SICK3 result = base * rate / 100.0 К выплате NET none code result = categories.RSBU_GROSS + categories.RSBU_NDFL