Sp_System_BatchPriceMoney (procedure)
@author: qmj @date: 20210707 封存 @describe: 价格批量更新,按外币计算,目前仅使用销售订单
- Type: PROCEDURE
- Deterministic: NO
- SQL data access: CONTAINS SQL
Parameters
| # | Mode | Name | Type |
|---|---|---|---|
| 1 | IN | sFormGuid |
varchar(100) |
| 2 | IN | sSrcGuid |
varchar(100) |
| 3 | IN | dPrice |
decimal(18,6) |
| 4 | IN | dMoney |
decimal(18,6) |
| 5 | IN | dQty |
decimal(18,6) |
| 6 | IN | oldQty |
decimal(18,6) |
| 7 | IN | tDeliverDate |
datetime |
| 8 | IN | sLoginId |
varchar(100) |
| 9 | IN | sBrId |
varchar(100) |
| 10 | IN | sSuId |
varchar(100) |
| 11 | IN | sChangePriceMemo |
longtext |
| 12 | OUT | sCode |
int |
| 13 | OUT | sReturn |
varchar(4000) |
Body
Body is not pre-cached. To inspect: mysql --defaults-file=~/.my.cnf -e 'SHOW CREATE PROCEDURESpSystem_BatchPriceMoney'._
Narrative
Business context: 销售管理 → 销售订单 / 改价(外币) — foreign-currency batch price-update twin of Sp_System_BatchNPriceMoney. Same trigger (改价 button on a sales-order slave) and same propagation (订单→工单→送货通知/送货单), but the price input dPrice is interpreted as 外币价 (dForeignPrice) and the proc back-computes local-currency dProductPrice / dProductMoney from dCurrencyRate. Header 封存 (qmj, 2021-07-07): "价格批量更新,按外币计算,目前仅使用销售订单".
What it does: Reads NetMoney/NetPrice decimals and CbxDeliverGoods/CbxDeliverGoodsNotify flags from SysSystemSettings. Resolves the parent SalSalesOrderMaster for slave id sSrcGuid, looks up its dCurrencyRate and the order's tCreateDate, and gates on sysaccountperiod.bFrozen — aborts with sNoCanCheckByAccountPeriod when frozen. Calls Sp_System_AutoMaterialsPriceSingle for any materials touched by the change (refreshing weighted-average prices). Updates SalSalesOrderSlave with new dForeignPrice / derived dProductPrice / dProductMoney / tax fields, then cascades the same money set to MftWorkOrderSlave (joined with sistax) and pending 送货通知/送货单 rows. sChangePriceMemo is stored on the slave for the audit trail.
Invocation: Dispatched dynamically by GenericProcedureCallServiceImpl.doGenericProcedureCall() from the 销售订单 改价(外币) button. Java BusinessBaseServiceImpl.updatePriceBatch matches the name and, after successful run, pushes the new dProductMoney to RocketMQ (rocketMQService.pushERPOrderAmount) keyed by sWebOrderId so any cloud-order partner sees the new amount. Install: script/标版/30100101/Sp_System_BatchPriceMoney.sql, customer override script/客户/千彩/Sp_System_BatchPriceMoney.sql.