Sp_DailyStatisticalSalary.md 2.77 KB

Sp_DailyStatisticalSalary (procedure)

  • Type: PROCEDURE
  • Deterministic: NO
  • SQL data access: CONTAINS SQL

Parameters

# Mode Name Type
1 IN sProInParam varchar(10000)
2 IN sLoginId varchar(100)
3 IN sBrId varchar(100)
4 IN sSuId varchar(100)
5 OUT sReturn varchar(1000)
6 OUT sCode int

Body

Body is not pre-cached. To inspect: mysql --defaults-file=~/.my.cnf -e 'SHOW CREATE PROCEDURESpDailyStatisticalSalary'._

Narrative

Business context: 生产管理 → 工资结算 / 计件工资 — month-scope salary computation driver. For the chosen 年月 (tYearMonth), walks every active 日统计 row in sissalarystructureplan (sCycle='1') and applies its sFormulaId to roll wage figures from mftproductionreportslave (and its employee split table) into per-row dWageMoney<iOrder> columns, materialising a snapshot in mftpayrollstatementcalc and back-writing into mftDaySumReport.

What it does: Validates sProInParam, parses tYearMonth from $.changeValue[0].tYearMonth. Cursors sissalarystructureplan rows for the tenant where sCycle='1' ordered by iOrder; for each plan:

  1. If bCalcType=0 (per-team), inserts a grouped snapshot into mftpayrollstatementcalc from mftproductionreportslave for the year-month, decorates with machine/team names, then cursors back through and for each row calls Sp_System_ReplaceField(sId, 'mftpayrollstatementcalc', 'billSlave', p_sFormulaId, @awardMoney, …) to evaluate the formula. The dynamic UPDATE then writes the resulting money into mftProductionReportSlave.dWageMoney<iOrder> proportional to dProcessQty, splits it to mftproductionreportemployee.dWageMoney<iOrder> by dProportion, and finally rolls a per-employee total into mftDaySumReport.dWageMoney<iOrder>.
  2. If bCalcType=1 (per-employee/direct), copies the rows from mftDaySumReport straight into mftpayrollstatementcalc and updates mftDaySumReport.dWageMoney<iOrder> directly with the formula output. Any Sp_System_ReplaceField failure aborts via LEAVE top with sCode=-1.

Invocation: Status: appears orphaned in production hooks. No caller in any channel — no form-master, no gdsmodule hook, no other routine. xly-src has install scripts at script/标版/30100101/Sp_DailyStatisticalSalary.sql, the doubled-name Sp_Sp_DailyStatisticalSalary.sql, and a customer override script/客户/金九/Sp_DailyStatisticalSalary.sql — confirming it has a customer-side use history (金九 印务) but no live button binding in the standard 30100101 deployment. The JSON $.changeValue[0].tYearMonth shape is sp_btn_action-style, so binding probably lived on a removed wage-calc button. Candidate for maintainer audit.