程式資訊
- 程式 ID:
EXCE_INOUT - 所屬子系統:H.庫存管理
- 狀態:stable
例外出入庫查詢¶
功能簡介¶
「例外出入庫查詢」把指定期間內、指定倉庫的例外出庫/例外入庫交易明細撈出來,並針對每一筆品號估算它的組立價(依 BOM 展開後的最低階零件成本)與銷售價(最低客戶報價打九折),再乘上數量算出組立金額與銷售金額。
這支屬於主管資訊(EIS)類的純查詢報表,適合生管/成本主管回答:
- 這段期間有哪些不在正常流程內的例外進出料?是哪個部門、哪張單、什麼原因?
- 這些例外進出的料,換算成成本(組立價)與市價(銷售價)大概值多少錢?
資料來源與所屬模組
本頁雖收錄在「庫存管理(H-Inventory)」手冊下,實際程式碼歸在主管資訊(M.EIS)模組(ProgramClass.EXCE_INOUT,VFP 原始程式 scx_qry.vcx → exce_inout)。例外進出交易本身由庫存異動單(trlima)與例外進出(trlost)等庫存單據產生,因此放在庫存模組一起查閱較直覺。
前置需求¶
- 權限:
H-110 例外出入庫查詢的瀏覽權限。 - 基礎資料:查詢結果與估價的完整度取決於下列資料的維護狀況——
| 資料 | 影響的結果 |
|---|---|
例外進出交易(trlima / trlost,序號前置碼 EO/EI) |
主要查詢明細;沒有交易就查無資料 |
| 倉庫主檔(stkbas,隸屬倉庫 / 倉庫說明) | 條件面板的倉庫多選清單 |
| BOM 結構(DARB_BIZ_BOMBOTTOM 展開) | 每筆品號的組立價(展開到最低階零件) |
| 庫存主檔(invent,品號/品別/三家供應廠商及比例) | 組立價取最高廠商報價時的供應商來源 |
| 廠商資料(spdata,含幣別、其他加成、已審核報價) | 組立價的零件單價(最高廠商報價 × 成本匯率) |
| 客戶報價(最低客戶報價) | 銷售價(最低客戶報價 × 0.9) |
| 幣別匯率資料 | 條件面板成本匯率表的初始清單(非本位幣、序號 < 100 的幣別) |
操作步驟¶
本表單是「先設條件、後按查詢」的單頁查詢,沒有新增/修改/刪除等異動動作。
- 從主選單開啟 主管資訊 → 例外出入庫查詢,畫面分成上方條件面板與下方「例外出入查詢」結果格線。
- 在條件面板選擇 單據別:
零件例外出庫/成品例外出庫→ 系統抓序號前置碼EO(出庫)的交易。零件例外入庫/成品例外入庫→ 系統抓序號前置碼EI(入庫)的交易。- 預設為
零件例外出庫。
- 輸入 起訖日期(比對交易日期)。預設為本月 1 日 ~ 今天。
- 在 倉庫 多選格線勾選要查的倉庫:
- 勾 ALL(全部倉庫) 列 = 查全部倉庫。
- 或逐列勾選個別倉庫。
- 至少要勾一個,否則按查詢會被擋下(見欄位連動與附加功能)。
- 視需要調整 成本匯率 表:系統列出所有非本位幣的幣別,組立價要把外幣的廠商報價換算成本幣時會用到這裡的匯率。每一格都必須填大於 0 的數值。
-
按工具列的
查詢,結果顯示在下方「例外出入查詢」格線。小技巧
結果格線資料可在欄位標題上按右鍵,選 匯出至 Excel 把整份結果匯出。
欄位說明¶
查詢條件¶
| 欄位 | 必填 | 說明 / 格式 / 預設 |
|---|---|---|
| 單據別 | 是 | 下拉:零件例外出庫/零件例外入庫/成品例外出庫/成品例外入庫。預設 零件例外出庫。含「入庫」者查 EI,否則查 EO |
| 起訖日期 | 是 | yyyy/MM/dd,比對交易日期。預設起=本月 1 日、訖=今天 |
| 倉庫(多選) | 是 | 勾選要查的倉庫;勾 ALL 列=全部倉庫。至少勾一個 |
| 成本匯率 | 是 | 各非本位幣對本幣的換算匯率,組立價估價用。每格須 > 0 |
結果格線「例外出入查詢」¶
| 欄位 | 說明 |
|---|---|
| 部門代號/部門簡稱 | 交易部門(SP 回傳的交易部門 / 客廠部簡稱) |
| 品號/品名 | 例外進出的品號與品名 |
| 隸屬倉庫 | 該筆交易的隸屬倉庫 |
| 單號/序號 | 來源單據的單號與明細序號 |
| 交易日期 | 交易發生日期 |
| 數量 | 例外進出數量 |
| 組立價 | BOM 最低階零件成本合計(見欄位連動與附加功能),單價格式 |
| 銷售價 | 最低客戶報價 × 0.9,單價格式 |
| 組立金額 | 數量 × 組立價(四捨五入至整數,本幣) |
| 銷售金額 | 數量 × 銷售價(四捨五入至整數,本幣) |
| 例出入原因 | 例外出入碼對應的原因說明(由原因對照檔帶出) |
| 備註 | 來源單據備註(系統把備註與備註 1 合併成一欄) |
| 是否最後 | 勾選表示該筆是同一「部門代號+單號」群組的最後一列(分組視覺輔助) |
欄位連動與附加功能¶
這一節把「按某欄位/某按鈕後系統實際會做什麼」逐條列出,來源是 Exce_inoutViewModel / 例外出入庫查詢Bll 與 VFP exce_inout 原始程式。
條件面板載入時的自動帶值¶
- 倉庫清單自動載入:開啟條件面板時,系統以
DARB_GETDATA4讀倉庫主檔(stkbas)的「隸屬倉庫/倉庫說明」,在清單最上面補一列 ALL(全部倉庫),其餘為各別倉庫。 - 成本匯率清單自動載入:系統讀幣別清單(
Cmb_C001),只把非本位幣且序號 < 100 的幣別列入成本匯率表(與 qc_qry2 同一套邏輯);本位幣不列、序號 ≥ 100 的幣別也不列。初始匯率為空,需由使用者填入。 - 單據別預設:載入時帶
零件例外出庫(對應 VFP Init 的例外出入.VALUE='零件例外出庫')。 -
起訖日期預設:訖=今天、起=本月 1 日。
與 VFP 預設的差異
VFP 原版日期欄位沒有預設值(空白)。新版 C# 改帶「本月 1 日~今天」當預設,省去每次手動輸入;查詢範圍仍可自行調整。
按 查詢 時的檢核與連動¶
當你按 查詢,系統依序做:
- 匯率檢核:若成本匯率表內任一列匯率 ≤ 0,跳出「請輸入正確之匯率 !!!」並中止查詢(對應 VFP
LOCATE FOR 成本匯率<=0)。 - 倉庫檢核:若一個倉庫都沒勾,跳出「請選擇倉庫 !!!」並中止查詢。
- ALL 展開:若你勾的是 ALL 列,系統視為全部倉庫(傳空字串給 SP,不加倉庫條件);否則把勾選的倉庫代號以逗號串接帶給 SP。
- 撈交易明細:以單據別(
EO/EI)、起訖日期、倉庫清單呼叫 SPTWORK_QRY_EXCE_INOUT,取回部門、品號、單號、交易日期、數量、例出入原因等欄位。SP 在回傳前已替你做好兩件事:把備註與備註 1 合併成一欄、以及標記是否最後(同「部門代號+單號」群組、序號最大的那一列為「是」)。同一次呼叫的第二個結果集帶回每個品號的最低客戶報價。 - 逐筆估價:C# 端對每一筆明細計算組立價、銷售價、組立金額、銷售金額(詳下節)。
組立價怎麼算¶
每一筆品號的 組立價 是這樣推出來的(對應 VFP 查詢鈕的 BOM 展開段):
- 以該品號 + 交易日期呼叫
DARB_BIZ_BOMBOTTOM把 BOM 展開到最低階零件。 - 對每個最低階零件,取它的最高廠商報價(
Ucy_MaxSpup:依庫存主檔設定的三家供應廠商各取最新報價,每家以條件面板的成本匯率換算本幣、再乘上 1 +(關稅稅率+廠商其他加成)後取三家最高者)。 - 組立價 = Σ(零件數量 × 該零件最高廠商報價),每項先四捨五入到小數 2 位再累加。
- 同一「品號+交易日期」的展開結果會被快取,相同組合不重複展開以加速。
為什麼組立價可能是 0
若品號沒有 BOM、或展開出來的零件都查不到有效廠商報價,組立價會是 0。這不是錯誤,而是缺報價/缺 BOM 的結果。
銷售價怎麼算¶
銷售價 = 該品號的最低客戶報價 × 0.9,四捨五入到小數 2 位(對應 VFP ROUND(CY_MINCUUP(品號)*0.9,2))。查不到客戶報價時銷售價為 0。
金額與「是否最後」¶
- 組立金額 = 數量 × 組立價,四捨五入到整數(本幣)。
- 銷售金額 = 數量 × 銷售價,四捨五入到整數(本幣)。
- 是否最後:由 SP 計算(
ROW_NUMBER() OVER PARTITION BY 部門代號, 單號),把每一個「部門代號+單號」群組的最後一列(序號最大者)標記為「是」,方便在報表上做分組小計的視覺切割。對應 VFP 查詢鈕最後那段SCAN WHILE 部門代號=… AND 單號=…+REPLACE 是否最後 WITH .T.。
報表 / 列印(規劃中)¶
舊版報表尚未在新版提供
VFP 原版可依單據別列印四種報表(零件例外出庫 MDEXOUT、零件例外入庫 MDEXIN、成品例外出庫 MMEXOUT、成品例外入庫 MMEXIN),也支援預覽/列印/Email/匯出 Excel 的列印工具列。
目前新版 Exce_inoutViewModel 只實作查詢與格線顯示,並未掛上對應的 FastReport 報表(未覆寫報表資料),因此上述四種專屬報表暫未提供。若要把資料帶出,請改用結果格線標題右鍵的 匯出至 Excel。
常見問題¶
按查詢時跳出「請輸入正確之匯率 !!!」?
成本匯率表中有某個幣別的匯率是 0(或空白)。請把每一列的成本匯率都填成大於 0 的數值再查詢——這是組立價把外幣零件報價換算本幣時要用的。
按查詢時跳出「請選擇倉庫 !!!」?
倉庫多選清單一個都沒勾。請至少勾一個倉庫,或勾 ALL(全部倉庫) 列代表查全部倉庫。
查不到任何明細?
請確認:(1) 單據別選對(出庫對 EO、入庫對 EI);(2) 起訖日期涵蓋到實際交易日期;(3) 勾選的倉庫確實有該期間的例外進出交易。本表單只撈序號前置碼為 EO/EI 的例外進出交易,正常進出料不會出現。
組立價或組立金額是 0?
組立價是把品號的 BOM 展開到最低階零件、再乘上各零件的最高廠商報價算出來的。若品號沒有 BOM 結構,或展開後的零件查不到有效(且已審核)的廠商報價,組立價就會是 0。請先到 BOM 管理 與廠商報價確認資料齊全。
銷售價是 0?
銷售價=最低客戶報價 × 0.9。若該品號沒有任何客戶報價,銷售價會是 0。請確認該品號在客戶報價中有資料。
想匯出成 Excel?有沒有專屬報表?
目前新版未提供 VFP 那四張專屬報表(MDEXOUT/MDEXIN/MMEXOUT/MMEXIN),詳見報表 / 列印(規劃中)。要把查詢結果帶出,請在結果格線的欄位標題上按右鍵、選 匯出至 Excel。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/H-Inventory/images/):
exce_inout-step1.png— 條件面板全貌(單據別下拉、起訖日期、倉庫多選、成本匯率表)exce_inout-step2.png— 倉庫多選格線(含 ALL 全部倉庫列與勾選狀態)exce_inout-step3.png— 「例外出入查詢」結果格線(含組立價/銷售價/組立金額/銷售金額欄)