Sp_Save_CheckSaveAfter.md 2.59 KB

Sp_Save_CheckSaveAfter (procedure)

保存校验单据

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

Parameters

# Mode Name Type
1 IN sFormGuid varchar(100)
2 IN sGuid varchar(2000)
3 IN sTableName varchar(100)
4 IN sLogINId varchar(100)
5 IN sUserId varchar(50)
6 OUT sReturn varchar(4000)
7 IN sBrId varchar(100)
8 IN sSuId varchar(100)
9 OUT sCode int

Body

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

Narrative

Business context: 系统 → 保存校验单据 — central POST-save validator that the framework calls after a row is committed but before the user sees "saved". Branches on sTableName and sFormGuid to run business-rule guards across most of the ERP — basic data (elecustomer, eleemployee, eleKnifemould, elematerialsyearmaster, eleproductpricemaster, elesupply, mftproductmaster), sales (salsalesordermaster, SalSalesInvoiceMaster, salsalesorderbecomemaster, saldelivergoodsdedmaster, saldelivergoodsdedinmaster), production / outsource (mftoutprocessmaster, mftprocesschangemaster, mftmaterialstest, mitproductionapplymaster, mitproductionmaterialsmaster, mftproductionplanbillslave, pitproductcheckmaster), purchasing (purpurchaseinstorededmaster, opsoutsideinstorededmaster), and file management (filfilemanagemaster).

What it does: For each branch, runs a SELECT COUNT / EXISTS style check on the slave or related tables, and on violation emits a localised error from Fun_Sis_GetConst / Sp_Sis_GetConst (e.g. sGykkNagativeNum "扣款单单价请填写负数!", sCheckSaveAfterRemarkEmpty, sCheckSaveAfterProductCantInsert, sCheckSaveAfterChooseDbType, sCheckSaveAfterMaterialCg, sCheckSaveAfterZyzrMoneyNoSameZr, sCheckSaveAfterOrderTypeZlsgNeedNo, ...) and aborts with sCode=-1 via the labelled top: block. On all-pass falls through with no message.

Invocation: Signature matches the save-validator hook contract. Dispatched by Java BusinessBaseServiceImpl against gdsmodule.sSaveProName for every form whose sFormGuid the proc explicitly branches on (the form ids enumerated inside the body). No other-routine caller; no install script ships in xly-src/script/ under the standard tree — this proc is DB-resident. Effectively the catch-all "everything-else" save validator for the ERP modules that don't have a dedicated Sp_Check_s<Code>.