fix: [payroll] 수정 모달 공제항목 자동계산값으로 표시하도록 변경

- 수정 모달 열 때 DB 저장값 대신 자동계산값으로 공제항목 표시
- 계산 방식 변경(round→floor, 구상수→DB조회)으로 인한 수동표시 오작동 해결
- 비교 API 호출에 user_id 추가하여 가족수 반영
This commit is contained in:
김보곤
2026-02-27 14:19:32 +09:00
parent b11de7e294
commit 5f0b2ae798

View File

@@ -452,22 +452,13 @@ function openEditPayrollModal(id, data) {
data.deductions.forEach(d => addDeductionRow(d.name, d.amount));
}
// 법정공제 항목 값 복원 (서버 저장값으로 설정하고 수동 표시)
const deductionFields = {
'calcPension': data.pension, 'calcHealth': data.health_insurance,
'calcLongTermCare': data.long_term_care, 'calcEmployment': data.employment_insurance,
'calcIncomeTax': data.income_tax, 'calcResidentTax': data.resident_tax,
};
Object.entries(deductionFields).forEach(([id, val]) => {
const el = document.getElementById(id);
setMoneyValue(el, val || 0);
});
// 자동 계산하여 서버 저장값과 다르면 수동 수정 표시
// 법정공제 항목: 자동 계산값으로 설정 (수동 수정 표시 없음)
// 사용자가 직접 필드를 수정할 때만 수동 표시됨 (oninput → markManualOverride)
const calcData = {
base_salary: parseMoneyValue(document.getElementById('payrollBaseSalary')),
overtime_pay: parseMoneyValue(document.getElementById('payrollOvertimePay')),
bonus: parseMoneyValue(document.getElementById('payrollBonus')),
user_id: parseInt(document.getElementById('payrollUserId').value) || null,
};
fetch('{{ route("api.admin.hr.payrolls.calculate") }}', {
method: 'POST',
@@ -478,20 +469,20 @@ function openEditPayrollModal(id, data) {
.then(result => {
if (result.success) {
const d = result.data;
const autoMap = {
const autoFields = {
'calcPension': d.pension, 'calcHealth': d.health_insurance,
'calcLongTermCare': d.long_term_care, 'calcEmployment': d.employment_insurance,
'calcIncomeTax': d.income_tax, 'calcResidentTax': d.resident_tax,
};
Object.entries(autoMap).forEach(([id, autoVal]) => {
const el = document.getElementById(id);
const savedVal = parseMoneyValue(el);
if (savedVal !== autoVal) {
markManualOverride(el);
}
Object.entries(autoFields).forEach(([id, val]) => {
setMoneyValue(document.getElementById(id), val);
});
document.getElementById('calcGross').textContent = numberFormat(d.gross_salary);
document.getElementById('calcTaxableBase').textContent = numberFormat(d.taxable_base);
if (d.family_count) {
const fcEl = document.getElementById('calcFamilyCount');
if (fcEl) fcEl.textContent = d.family_count + '명';
}
updateDeductionTotals();
}
})