steevenz / id-payroll-calculator
印度尼西亚员工工资计算器
v1.7.5
2019-12-08 11:27 UTC
Requires
- php: ^7.2.0
- o2system/spl: *
README
这是一个PHP组件,用于辅助计算符合印度尼西亚现行规定的工资过程。
特性
- 计算PPH21
- 计算PPH23
- 计算PPH26
- 计算奖金和节日补贴的税收
- 计算符合规定的加班费
- 计算分班制
参考
安装
安装此库的最佳方法是使用 Composer
composer require steevenz/id-payroll-calculator
使用方法
use Steevenz\IndonesiaPayrollCalculator\PayrollCalculator; // Inisiasi class PayrollCalculator $payrollCalculator = new PayrollCalculator(); // Khusus Perhitungan PPH 21 ------- // Calculation method $payrollCalculator->method = PayrollCalculator::NETT_CALCULATION; // Tax Number $payrollCalculator->taxNumber = 21; // Set data karyawan $payrollCalculator->employee->permanentStatus = true; // Tetap (true), Tidak Tetap (false), secara default sudah terisi nilai true. $payrollCalculator->employee->maritalStatus = true; // Menikah (true), Tidak Menikah/Single (false), secara default sudah terisi nilai false. $payrollCalculator->employee->hasNPWP = true; // Secara default sudah terisi nilai true. Jika tidak memiliki npwp akan dikenakan potongan tambahan 20% $payrollCalculator->employee->numOfDependentsFamily = 0; // Jumlah tanggungan, max 5 jika lebih akan dikenakan tambahannya perorang sesuai ketentuan BPJS Kesehatan // Set data pendapatan karyawan $payrollCalculator->employee->earnings->base = 8000000; // Besaran nilai gaji pokok/bulan $payrollCalculator->employee->earnings->fixedAllowance = 0; // Besaran nilai tunjangan tetap $payrollCalculator->employee->calculateHolidayAllowance = 0; // jumlah bulan proporsional // NOTE: besaran nilai diatas bukan nilai hasil proses perhitungan absensi tetapi nilai default sebagai faktor perhitungan gaji. // Set data kehadiran karyawan $payrollCalculator->employee->presences->workDays = 25; // jumlah hari masuk kerja $payrollCalculator->employee->presences->overtime = 2; // perhitungan jumlah lembur dalam satuan jam $payrollCalculator->employee->presences->latetime = 0; // perhitungan jumlah keterlambatan dalam satuan jam $payrollCalculator->employee->presences->travelDays = 0; // perhitungan jumlah hari kepergian dinas $payrollCalculator->employee->presences->indisposedDays = 0; // perhitungan jumlah hari sakit yang telah memiliki surat dokter $payrollCalculator->employee->presences->absentDays = 0; // perhitungan jumlah hari alpha $payrollCalculator->employee->presences->splitShifts = 0; // perhitungan jumlah split shift // Set data tunjangan karyawan diluar tunjangan BPJS Kesehatan dan Ketenagakerjaan $payrollCalculator->employee->allowances->offsetSet('tunjanganMakan', 100000); // NOTE: Jumlah allowances tidak ada batasan // Set data potongan karyawan diluar potongan BPJS Kesehatan dan Ketenagakerjaan $payrollCalculator->employee->deductions->offsetSet('kasbon', 100000); // NOTE: Jumlah deductions tidak ada batasan // Set data bonus karyawan diluar tunjangan $payrollCalculator->employee->bonus->offsetSet('serviceCharge', 100000); // NOTE: Jumlah bonus tidak ada batasan // Set data ketentuan negara $payrollCalculator->provisions->state->overtimeRegulationCalculation = true; // Jika false maka akan dihitung sesuai kebijakan perusahaan $payrollCalculator->provisions->state->provinceMinimumWage = 3940972; // Ketentuan UMP sesuai propinsi lokasi perusahaan // Set data ketentuan perusahaan $payrollCalculator->provisions->company->numOfWorkingDays = 25; // Jumlah hari kerja dalam satu bulan $payrollCalculator->provisions->company->numOfWorkingHours = 8; // Jumlah hari kerja dalam satu hari $payrollCalculator->provisions->company->calculateOvertime = true; // Apakah perusahaan menghitung lembur // Jika $payrollCalculator->provisions->state->overtimeRegulationCalculation = false; $payrollCalculator->provisions->company->overtimeRate = 10000 // Nilai rate overtime per jam, Jika bernilai 0 namun $payrollCalculator->provisions->company->calculateOvertime, maka rate akan dihitung secara otomatis berdasarkan renumerasi besaran gaji, hari dan jam kerja $payrollCalculator->provisions->company->calculateSplitShifts = true; // Apakah perusahan menghitung split shifts $payrollCalculator->provisions->company->splitShiftsRate = 25000; // Rate Split Shift perusahaan $payrollCalculator->provisions->company->calculateBPJSKesehatan = true; // Apakah perusahaan menyediakan BPJS Kesehatan / tidak untuk orang tersebut // Apakah perusahaan menyediakan BPJS Ketenagakerjaan / tidak untuk orang tersebut $payrollCalculator->provisions->company->JKK = true; $payrollCalculator->provisions->company->JKM = true; $payrollCalculator->provisions->company->JHT = true; $payrollCalculator->provisions->company->JIP = true; $payrollCalculator->provisions->company->riskGrade = 2; // Golongan resiko ketenagakerjaan, umumnya 2 $payrollCalculator->provisions->company->absentPenalty = 55000; // Perhitungan nilai potongan gaji/hari sebagai penalty. $payrollCalculator->provisions->company->latetimePenalty = 100000; // Perhitungan nilai keterlambatan sebagai penalty. // Mengambil hasil perhitungan $payrollCalculator->getCalculation(); // Berupa SplArrayObject yang berisi seluruh data perhitungan gaji, lengkap dengan perhitungan BPJS dan PPh21 // Khusus Perhitungan PPH 23 ------- $payrollCalculator->taxNumber = 23; $payrollCalculator->employee->hasNPWP = true; $payrollCalculator->employee->earnings->base = 8000000; // Khusus Perhitungan PPH 26 ------- $payrollCalculator->taxNumber = 26; $payrollCalculator->employee->hasNPWP = true; $payrollCalculator->employee->earnings->base = 8000000; // Mengambil hasil perhitungan $payrollCalculator->getCalculation(); // Berupa SplArrayObject yang berisi lengkap dengan perhitungan pajak
有关更详细的信息,请参阅 Wiki
想法、批评和建议
如果您有任何想法、批评或建议,您可以发送电子邮件到 steevenz@stevenz.com。您也可以访问我的个人网站 steevenz.com
错误和问题
如果您发现错误或问题,您可以在 Github Issues 上发布。
要求
- PHP 7.2+
- Composer
- O2System Spl