diff --git a/index.html b/index.html index c0a9e6c..29a133c 100644 --- a/index.html +++ b/index.html @@ -276,17 +276,23 @@

+ 奖惩与满勤同一口径:未定稿(次月初组长审核前)一律按 ¥0 计,不进大字。 -->
工时 {{ money(monthStats.basePay) }}({{ fmt(monthStats.totalHours) }}h) + 满勤 {{ money(monthStats.fullBonus) }} + 奖惩 {{ signed(monthStats.reviewNet) }} - {{ monthStats.finalized ? '已定稿' : '待审核' }} + {{ monthStats.finalized ? '已定稿' : '未定稿不计' }}
+ +

+ + 记录中 {{ signed(monthStats.rawReview) }}(查获 {{ monthStats.foundCount }} 件 · 漏查 {{ monthStats.missedCount }} 件),需次月初组长审核定稿后才计入 +

+

@@ -395,11 +401,11 @@ {{ monthStats.fullBonus > 0 ? '+' + money(monthStats.fullBonus) : '¥0' }}

- +
- 奖惩净额(查获−漏查−扣款) + 奖惩净额{{ monthStats.finalized ? '(审核终稿)' : '(未定稿,不计)' }} - {{ monthStats.finalized ? '已定稿' : '记录·待审核' }} + {{ monthStats.finalized ? '已定稿' : '待次月初审核' }} {{ signed(monthStats.reviewNet) }}
@@ -407,7 +413,7 @@ 合计应得 {{ money(earnedTotal) }} -

查获在本月只作记录;实际奖金需次月初组长审核、扣除漏查与其他扣款后定稿,金额可能与此处累计不同。

+

查获在本月只作记录(当前累计 {{ signed(monthStats.rawReview) }});须次月初组长审核、扣除漏查与其他扣款后提交定稿才算奖金。未定稿一律按 ¥0 计入应得,与未达 {{ settings.fullDays }} 天不计满勤奖同一个道理。

@@ -441,7 +447,7 @@ {{ prevLabel.month + 1 }}月

{{ currentMonth + 1 }}/{{ settings.payDayB }}

-

下半月 {{ fmt(prevStats.h2) }}h + 奖惩 {{ signed(prevStats.adjustNet) }}

+

下半月 {{ fmt(prevStats.h2) }}h{{ prevStats.finalized ? ' + 奖惩 ' + signed(prevStats.adjustNet) : '(奖惩未定稿不计)' }}

{{ money(payoutThisB) }} @@ -450,7 +456,7 @@
- {{ prevLabel.month + 1 }}月奖惩{{ prevStats.finalized ? '已定稿' : (prevStats.adjustStatus === 'draft' ? '草稿未定稿' : '待申报') }} + {{ prevLabel.month + 1 }}月奖惩{{ prevStats.finalized ? '已定稿·已计入' : (prevStats.adjustStatus === 'draft' ? '草稿未定稿·不计入' : '待审核·不计入') }}
- +
-

{{ currentMonth + 1 }}月奖惩

- 次月{{ settings.payDayB }}号结算 +

{{ currentMonth + 1 }}月奖惩记录

+ {{ monthStats.finalized ? '已定稿·次月' + settings.payDayB + '号发' : '待次月初组长审核' }}
-

以下金额不计入当月工资

+

下方为日常记录累计,定稿前不计入任何金额口径

- 查获记录({{ monthStats.foundCount }}件 · 待审核) + 查获记录({{ monthStats.foundCount }}件) {{ monthStats.foundBonus > 0 ? '+' + money(monthStats.foundBonus) : '¥0' }}
@@ -546,8 +552,9 @@ {{ monthStats.fullBonus > 0 ? '+' + money(monthStats.fullBonus) : '¥0' }}
+
- 奖惩净额(查获−漏查−扣款) + 计入应得的奖惩{{ monthStats.finalized ? '(已定稿)' : '(未定稿,不计)' }} {{ signed(monthStats.reviewNet) }}
@@ -556,7 +563,7 @@
- {{ monthStats.finalized ? '已定稿' : (monthStats.adjustStatus === 'draft' ? '草稿未定稿' : '预估·未申报') }} + {{ monthStats.finalized ? '已定稿·已计入' : (monthStats.adjustStatus === 'draft' ? '草稿未定稿·不计入' : '仅记录·不计入') }}

处罚已超过下半月工时收入,实发按 ¥0 计,差额可能顺延

@@ -787,7 +794,7 @@ {{ selectedDay <= settings.cutoff ? `${currentMonth + 1}月${settings.payDayA}号` : `${nextLabel.month + 1}月${settings.payDayB}号` }} - · 奖惩次月{{ settings.payDayB }}号结算 + · 奖惩定稿后随次月{{ settings.payDayB }}号发

@@ -843,7 +850,7 @@
-

以下奖惩不计入当月工资,次月{{ settings.payDayB }}号结算

+

以下只是记录,需次月初组长审核定稿后才算金额

查获 +{{ settings.foundBonus }}/件

@@ -1161,19 +1168,22 @@ createApp({ const foundBonus = foundCount * c.foundBonus; const missedPenalty = missedCount * c.missedPenalty; - // 待申报奖惩 = 查获 - 漏查 - 其他扣款(不含满勤奖),这是需要次月初核对的部分 + // 日常累计奖惩 = 查获 - 漏查 - 其他扣款(不含满勤奖)。 + // 这只是「记录」,不是可发金额:查获多少件当月只记账,实际奖金要等次月初组长 + // 审核提交、扣掉漏查与其他扣款后才确定。 const rawReview = foundBonus - missedPenalty - otherPenalties; - // 已定稿 → 用审核终稿金额;未定稿 → 用日常累计值(预估) + // 与「满勤未达标 → 满勤奖按 0 计」同一个道理: + // 奖惩未定稿 → 一律按 0 计,不进任何应得/发放口径;只有定稿后才用审核终稿金额。 const adj = getMonthAdjust(year, month); const finalized = !!(adj && adj.status === 'final' && Number.isFinite(Number(adj.finalAmount))); - const reviewAmount = finalized ? Number(adj.finalAmount) : rawReview; + const reviewAmount = finalized ? Number(adj.finalAmount) : 0; const reviewDelta = finalized ? reviewAmount - rawReview : 0; - // 奖惩净额(不含满勤奖):查获−漏查−其他扣款,需次月初组长审核定稿;页面单列这一项。 + // 计入应得的奖惩净额:未定稿恒为 0,页面单列这一项并标明「未定稿不计」。 const reviewNet = reviewAmount; - // 发放净额 = 满勤奖 + 奖惩净额。次月 payDayB 这两笔与下半月工时一起发, + // 发放净额 = 满勤奖 + 已定稿奖惩。次月 payDayB 这两笔与下半月工时一起发, // 「挣得」与「结转」两套口径都复用它,保证同名同数。 - const adjustNet = fullBonus + reviewAmount; + const adjustNet = fullBonus + reviewNet; return { h1, h2, totalHours, workDays, dayShifts, nightShifts, restDays, leaveDays, @@ -1464,14 +1474,14 @@ createApp({ `上半月 ${fmt(s.h1)}h → ${money(s.h1 * c.rate)} 下半月 ${fmt(s.h2)}h → ${money(s.h2 * c.rate)}`, ``, `【${m}月总劳动应得】${money(earnedTotal.value)}`, - `工时收入 ${money(s.basePay)}(确定) | 满勤奖 ${money(s.fullBonus)}(${s.workDays >= settings.fullDays ? '已达标' : '未达' + settings.fullDays + '天不计'}) | 奖惩净额 ${signed(s.reviewNet)}(${s.finalized ? '已定稿' : '记录·待次月初审核'})`, + `工时收入 ${money(s.basePay)}(确定) | 满勤奖 ${money(s.fullBonus)}(${s.workDays >= settings.fullDays ? '已达标' : '未达' + settings.fullDays + '天不计'}) | 奖惩 ${signed(s.reviewNet)}(${s.finalized ? '已定稿' : '未定稿不计,仅记录 ' + signed(s.rawReview)})`, `何时到手:${m}/${settings.payDayA} ${money(earnedSplit.value.paid)}(上半月工时) | ${nm}/${settings.payDayB} ${money(earnedSplit.value.carry)}(结转:下半月工时+奖惩+满勤奖)`, ``, `【${m}月奖惩明细·次月${settings.payDayB}号结算】`, `满勤奖 ${s.fullBonus > 0 ? '+' + money(s.fullBonus) : '¥0(未满勤)'}`, `查获 +${money(s.foundBonus)}(${s.foundCount}件) | 漏查 -${money(s.missedPenalty)}(${s.missedCount}件) | 其他 -${money(s.otherPenalties)}`, - `日常累计(待申报)${signed(s.rawReview)}${s.finalized ? ` → 审核终稿 ${signed(s.reviewAmount)}` : ''}`, - `奖惩净额 ${signed(s.reviewNet)}(查获−漏查−扣款,${s.finalized ? '已定稿' : '待次月初审核'})`, + `日常累计(仅记录,未定稿不计入应得)${signed(s.rawReview)}${s.finalized ? ` → 审核终稿 ${signed(s.reviewAmount)}` : ''}`, + `计入应得的奖惩 ${signed(s.reviewNet)}(${s.finalized ? '已定稿' : '未定稿按 ¥0 计,同满勤未达标口径'})`, ``, `【${m}月进账·实际到账】${money(cashTotal.value)}`, `${m}月${settings.payDayB}日 ${money(payoutThisB.value)}(归属${pm}月:下半月 ${fmt(p.h2)}h + 奖惩 ${signed(p.adjustNet)})`,