# `Fun_GetLimitDate` (function)

> 获取任务截至时间


- **Type:** FUNCTION
- **Returns:** `varchar(255)`
- **Deterministic:** NO
- **SQL data access:** CONTAINS SQL

## Parameters

| # | Mode | Name | Type |
|---|---|---|---|
| 1 | IN | `sFormId` | `varchar(255)` |
| 2 | IN | `tCheckDate` | `datetime` |
| 3 | IN | `sBrId` | `varchar(100)` |
| 4 | IN | `sSuId` | `varchar(100)` |

## Body

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

## Narrative

**Business context:** KPI/SLA deadline calculator (`获取任务截至时间`). Given a form id and a starting timestamp, projects a "must-finish-by" datetime using the per-form working-hour configuration stored in `kpimodule` — used pervasively by the overdue/未付/未收 warning reports (采购预警, 应付/应收, 销售未发货, etc.).

**What it does:** reads `kpimodule.dLimitation`/`sLimitTime`/`sWorkDate` for the form (matched on `sBrandsId`, `sSubsidiaryId`, `sModelId = sFormId`). Snaps the start time inside the configured working window, then converts the limitation hours into working-minutes and walks forward whole work-days plus a partial day, returning the projected deadline.

**Invocation:** called from `Sp_Cashier_OrderMoneyWarning`, `Sp_Manufacture_PurPurchaseChecking`, `Sp_Manufacture_SalSalesChecking`, `Sp_Manufacture_sSodPurchareMaterials`, `Sp_NotPayAbles*` family, `Sp_NotReceivables*` family, `Sp_OEE_PlanByProcess`, `Sp_OverdueNoCheck`, `Sp_OverdueNotReceivables`, `Sp_Sales_NotDeliverGoodMaterials*`, `Sp_SalSalesCheck_YanBao` — every overdue/limit-aware report runs each row through this. Java references in `KpiServiceImpl` and `CommonFromSqlServiceImpl` are commented out; current invocation path is proc-only.
