# `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.
