# `Fun_GetAuxiliaryQtyUnit` (function)


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

## Parameters

| # | Mode | Name | Type |
|---|---|---|---|
| 1 | IN | `sMaterialsGuid` | `varchar(100)` |
| 2 | IN | `sMaterialsStyle` | `varchar(100)` |
| 3 | IN | `dAuxiliaryQty` | `decimal(18,6)` |
| 4 | IN | `iType` | `int` |
| 5 | IN | `sBrId` | `varchar(100)` |
| 6 | IN | `sSuId` | `varchar(100)` |

## Body

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

## Narrative

**Business context:** Inverse of `Fun_GetMaterialsQtyUnit` — given an **auxiliary** quantity (the purchasing/storage unit, e.g. 张/PCS/m) plus a material spec, returns either the equivalent **stocking-unit** quantity (when `iType=0`) or the auxiliary-unit name (when `iType=1`). Used during reverse formula calculation: `sFormulaIdType = sReComputeId`.

**What it does:** reads the material's `EleMaterials` row (`sMaterialsUnit`, `sAuxiliaryUnit`, `dGramWeight`, `sConversionUnit`, `bReel`, `dCoefficient`, `bInverse`) plus tenant system settings `CbxMaterialsUnit` (MM/CM/INCH), `NetSquareM` (m² rounding decimals), `NetConversionRate` (inch conversion). Branches by spec format (`W*L`, `W*L*H`, plain numeric, blank) × unit family (Ton/吨/噸, KG, M2, M3, m, reel) × MM/CM/INCH dimension base. Each branch derives `dMaterialsQty` from `dAuxiliaryQty` using gram-weight or sheet-area math, picks a default `sAuxiliaryUnit` (`张`/`張`/`PCS`/`m`), and finally rounds: 张/PCS → `CEILING`; m → `ROUND(qty, NetSquareM)` (or CEILING if NetSquareM=0). Returns the quantity (iType=0) or unit string (iType=1).

**Invocation:** invoked by `ReplaceFieldServiceImpl.getReplaceFieldReslut()` when the formula type is `sReComputeId` — the Java service synthesizes `SELECT Fun_GetAuxiliaryQtyUnit(...)` from material + slave-row context and runs it through `businessBaseDao.getByMap`. Also referenced by the bill-check family (`Sp_Check_sCmt`, `sLok`, `sMpa`, `sOis`, `sOpc`, `sOpi`, `sOpkg`, `sOpn`, `sOpn1`, `sOpp`, `sPca`, `sPca1`, `sPis`, `sPkg`, `sPmd`, `sPod`, `sPpa`) and inventory in/out procs (`SP_Inventory_InOutWarehouse`, `_All`, `_220709`, `_221111`).
