# `Sp_BtnEvent_NotifyMerge` (procedure) > 送货通知单合并 - **Type:** PROCEDURE - **Deterministic:** NO - **SQL data access:** CONTAINS SQL ## Parameters | # | Mode | Name | Type | |---|---|---|---| | 1 | IN | `sProInParam` | `varchar(10000)` | | 2 | IN | `sMakePerson` | `varchar(100)` | | 3 | IN | `sUserId` | `varchar(100)` | | 4 | IN | `sBrId` | `varchar(100)` | | 5 | IN | `sSuId` | `varchar(100)` | | 6 | OUT | `sReturn` | `varchar(1000)` | | 7 | OUT | `sCode` | `int` | ## Body _Body is not pre-cached. To inspect: `mysql --defaults-file=~/.my.cnf -e 'SHOW CREATE PROCEDURE `Sp_BtnEvent_NotifyMerge`'`._ ## Narrative **Business context:** 销售 / 送货通知单 — button-click handler that merges several 送货通知单 (`saldelivernotifymaster`) into one by re-parenting all slave lines to the first selected master, so a single delivery covers multiple notify documents. Customer-uniqueness is enforced before merging. **What it does:** Walks `$.params[*].value[*].sId` into a comma-CSV `p_sAllId`, keeping the first id as `p_sParentId`. Counts distinct `saldelivernotifyslave.sCustomerId` over `sParentId IN p_sAllId`; if more than one customer, aborts with `sCode=-1` and the localised `sDifferentCustomerCantHb` ("不同的客户不能进行合并") message. Otherwise `UPDATE saldelivernotifyslave SET sSrcParentId=sParentId, sParentId=p_sParentId` for all matched slaves, attaching them to the surviving master. Default success message `sShNoticeHb` ("送货通知单合并成功") via `Fun_Sis_GetConst`. **Invocation:** Dispatched dynamically by `GenericProcedureCallServiceImpl.doGenericProcedureCall()` (POST `/procedureCall/doGenericProcedureCall`) — 送货通知单 grid's 合并 toolbar button names `Sp_BtnEvent_NotifyMerge` as the action. No static caller, no `gdsmodule` hook. Flag: `LOCATE(A.sParentId, p_sAllId)>0` is a substring match, not a list match — a sParentId that is a prefix of another id (`abc` matching `abcdef`) would be merged in error.