# `Fun_GetProcessAuxiliaryQty` (function)


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

## Parameters

| # | Mode | Name | Type |
|---|---|---|---|
| 1 | IN | `sMaterialsStyle` | `varchar(100)` |
| 2 | IN | `sAuxiliaryUnit` | `varchar(100)` |
| 3 | IN | `sMaterialsUnit` | `varchar(100)` |
| 4 | IN | `dAuxiliaryQty` | `decimal(18,6)` |
| 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_GetProcessAuxiliaryQty`'`._

## Narrative

**Business context:** Process-step area conversion — when a process records its qty in 张 (sheets) but the material is stocked in `M2`, converts sheet-count to square-metres using the sheet size (`WxH` parsed from `sMaterialsStyle`) and the global `CbxMaterialsUnit` system setting (`MM`/`CM`/`INCH`, with `NetConversionRate` for inch→m). When the auxiliary unit already matches the material unit or the material unit isn't `M2`, returns `dAuxiliaryQty` unchanged.

**What it does:** Loads `CbxMaterialsUnit` (and `NetConversionRate` for INCH) via `Fun_GetSystemSetting`; counts `*` in style; if exactly one `*` and the units differ and material is `M2`, splits dimensions, computes `qty * left * right` with the scale factor for `MM`/`CM`/`INCH`; else passes qty through.

**Invocation:** Called by `Sp_Check_sOis`, `Sp_Check_sOpc`, `Sp_Check_sOpkg`, `Sp_Check_sOpn`, `Sp_Check_sOpn1` — the `Sp_Check_*` audit procedures that verify per-process auxiliary quantities against material-unit totals in inspection/check workflows.
