# `Sp_SalesMaterials_Memo3` (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_SalesMaterials_Memo3`'`._

## Narrative

**Business context:** 工单子表 (`mftworkorderslave`) — 车间主管反馈 button-event handler for slot 3. In addition to writing `sFeedBack3Memo`, `sFeedBack3Name`, `tFeedBack3Date` (like slots 1/2), it also flips the success flag `bSucceed` carried in `changeValue`, marking the work-order line as "fed back successfully" or "failed". Slot-3 sibling of `Sp_SalesMaterials_Memo1` / `Sp_SalesMaterials_Memo2`. Despite the `Sp_SalesMaterials_*` prefix the proc targets the manufacturing work-order slave, not anything in `sal*`.

**What it does:** Parses `$.params[*].value[*].sSlaveId`, `$.changeValue.sFeedBack3Memo`, and `$.changeValue.bSucceed` from `sProInParam`. Rejects with `sCode=-1, sReturn=Fun_Sis_GetConst('sEnterFeedBack')` (请输入反馈内容) if the memo is empty. Otherwise loops over every `sSlaveId` and runs `UPDATE mftworkorderslave SET sFeedBack3Memo=…, sFeedBack3Name=sMakePerson, tFeedBack3Date=NOW(), bSucceed=p_bSucceed WHERE sId=p_sId AND sBrandsId=sBrId AND sSubsidiaryId=sSuId`.

**Invocation:** Generic-dispatch button signature `(sProInParam, sMakePerson, sUserId, sBrId, sSuId, OUT sReturn, OUT sCode)` — dispatched by `GenericProcedureCallServiceImpl.doGenericProcedureCall()` when a 车间主管反馈(3) toolbar button posts to `/procedureCall/doGenericProcedureCall` with this name. No xly-src reference, no gdsmodule binding, no other proc references it — status: appears orphaned / candidate for maintainer audit (likely a customer-specific button that lost its grid configuration).
