# `Sp_interface_del_udfvoucher_after` (procedure)

> 接口推送后处理过程


- **Type:** PROCEDURE
- **Deterministic:** NO
- **SQL data access:** CONTAINS SQL

## Parameters

| # | Mode | Name | Type |
|---|---|---|---|
| 1 | IN | `sRequestParam` | `longtext` |
| 2 | IN | `p_sId` | `varchar(100)` |
| 3 | IN | `sProData` | `longtext` |
| 4 | IN | `sMakePerson` | `varchar(100)` |
| 5 | IN | `sBrId` | `varchar(100)` |
| 6 | IN | `sSuId` | `varchar(100)` |
| 7 | OUT | `sCode` | `int` |
| 8 | OUT | `sReturn` | `longtext` |

## Body

_Body is not pre-cached. To inspect: `mysql --defaults-file=~/.my.cnf -e 'SHOW CREATE PROCEDURE `Sp_interface_del_udfvoucher_after`'`._

## Narrative

**Business context:** Kingdee K3 Cloud integration after-hook for **delete-voucher** push. Counterpart of `Sp_interface_del_udfvoucher_before`. Runs once the remote `DynamicFormService.Delete` HTTP response returns; parses the response and updates local mirror status on the deleted `udfvouchermaster` row (`p_sId`).

**What it does:** Defaults `sCode=-1` and `sReturn` to `"操作失败：请求返回参数<sRequestParam>"`. If `sRequestParam` is non-empty and is valid JSON, extracts `$.Result.ResponseStatus.IsSuccess`, `$.Result.Id`, `$.Result.Number`. On `IsSuccess=true` flips local mirror columns on the source `udfvouchermaster` row (`p_sBillId = p_sId`) — typically writing back the K3 record id/number so the relationship can be re-verified, or clearing the "to-push" flag so the next sync doesn't repeat. Returns `sCode=1` on success, leaves the failure message intact otherwise.

**Invocation:** Wired into the JD/Kingdee interface flow as the after-hook for the delete path, paired with `Sp_interface_del_udfvoucher_before`. Dispatcher pattern matches `JdInterfaceServiceImpl.JDUDFVOUCHER()` (save-flow): a `procedureService.getCallPro()` invocation after the HTTP POST returns. No grep hit in xly-src for this specific delete pair — feature is stubbed in the database but not currently wired by the shipped Java code.
