程式資訊
- 程式 ID:
ORSSMA - 所屬子系統:E.營業收款
- 狀態:stable
調撥指示單¶
功能簡介¶
「調撥指示單」(程式內部又稱調撥通知)是銷售模組裡的一種特殊訂單,用來開立「訂單別=2(調撥指示)」的單據——它的單頭、明細結構與銷售訂單幾乎相同,但專門用於倉庫之間調撥、補貨或集團內公司互轉等不走一般正常出貨流程的需求。建立後可送工作流程簽核,並由後續的出貨/請購/製通單作業承接。
主要使用者是業務或生管人員。在流程中的位置是「需求來源端」:開立調撥指示單後,明細的已交數量/出通單數量/請購數量會由下游出貨、出貨通知單、請購等作業回填,作為調撥進度的依據。
雙名說明
本程式在系統內同時出現「調撥指示單」與「調撥通知」兩種稱呼——前者是新版選單與畫面標題用名,後者是舊 VFP 版的資料表別名(調撥通知主檔/調撥通知明細)。兩者指的是同一支程式(ProgramClass.ORSSMA),文件統一以調撥指示單稱之。
前置需求¶
- 權限:E.銷售訂單 →
E-080 調撥指示單的瀏覽/修改權限。其中「工作流程」送審與「快速審核」另受工作流程權限控管(無權審核時系統會擋)。 - 基礎資料:下列主檔的維護狀況會直接影響本單能否正確帶值與存檔——
| 資料 | 影響什麼 |
|---|---|
| 客戶主檔(含交易預設) | 輸入客戶代號時自動帶出交易方式、業務員、收付條件、幣別、交易條件、運送方式、交易類別、港口、稅別 |
| 品號主檔(vw_invent,含平均成本/標準成本) | 明細輸入品號時帶出品名、中文描述、單位,並以平均成本÷匯率自動帶單價 |
| 該客戶的歷史調撥單明細 | 明細品號帶出該客戶慣用的客戶品號/單位/製程別(抓該客戶最近一張調撥指示單明細,非讀客戶品號對照主檔) |
| 匯率資料 | 依幣別+受訂日期自動帶「買入」匯率;本位幣固定匯率 1 |
| 稅別主檔 | 決定稅率,計算明細含稅單價、原幣含稅與主檔總額 |
| 業務員/收付條件/港口/運送方式/交易條件等代碼 | 主檔對應欄位的下拉與簡稱顯示 |
操作步驟¶
新增¶
- 從主選單開啟 銷售訂單 → 調撥指示單。
- 點工具列
新增。系統自動帶入預設:訂單別=2、受訂日期=今天、幣別=本位幣、匯率=1,明細列出貨別=1(正常)。 - 在單頭輸入 客戶代號(必填)。輸入後系統會自動帶出該客戶的交易方式、業務員、收付條件、幣別、交易條件、運送方式、交易類別、港口與稅別(詳見欄位連動與附加功能)。
- 確認 受訂日期(必填)、幣別/匯率、稅別等單頭欄位。
-
在明細格線輸入 品號:
- 系統檢查品號是否存在、是否停用,帶出品名/中文描述/單位。
- 自動以平均成本÷匯率(無平均成本改用標準成本)帶入單價。
- 帶出該客戶的客戶品號/製程別。
-
輸入 訂單數量,系統即時計算該列金額(原幣未稅)並更新單頭總數量/原幣總金額。
- 視需要逐列補 客戶交期/預訂交期/回覆日期/製程別/訂單分類/廠商代號 等欄位。
-
點
儲存。小技巧
可用 Ctrl+S 快速儲存。
修改¶
- 用工具列的查詢(Seek)定位單據:輸入訂單編號(前置碼
KU)或.加流水號(依 PKID)定位,與其他單據作業相同。 - 點
修改,調整單頭或明細欄位。 - 改 匯率或稅別 會觸發全部明細金額重算(見欄位連動與附加功能)。
- 點
儲存。
刪除¶
- 定位到要刪除的單據,點
刪除。 - 系統檢查:若任一明細列的已交數量 > 0 或 出通單數量 > 0(代表已轉出貨/已開出貨通知),則不可刪除並提示。
列印尚未提供
本版尚未移植調撥指示單報表(VFP 對應 ORSSMA_P / SCX_ORDP),畫面上沒有列印功能(ViewModel 未實作列印介面)。需要紙本時請暫以其他方式輸出,待報表移植後再補。
工作流程簽核¶
- 點工具列
工作流程,系統將本單以「訂單送審」事由送出(對應 VFPWKFLOW_ADD),進入集中式工作流程。 - 有審核權限者點
快速審核(集中式審核鈕)完成核可;無權限時系統提示「無權快速審核」。 - 審核結果反映在單頭的 已審核/審核人員/審核日期 欄位(唯讀,由系統回填)。
工作流程採集中式機制
本單的送審與審核走系統共用的工作流程頁籤+審核鈕,不是表單自帶的獨立按鈕。畫面右側的工作流程/聯絡單ID欄位為唯讀顯示,由工作流程作業回填。
欄位說明¶
單頭¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 訂單編號 | — | 系統自動產生(唯讀),前置碼 KU |
| 訂單別 | — | 固定 2(調撥指示),唯讀,新增時自動帶入 |
| 受訂日期 | ✔ | 格式 yyyy/MM/dd,新增預設今天;未輸入不可存檔 |
| 客戶代號 | ✔ | 未輸入不可存檔;輸入後帶出整組客戶交易預設 |
| 客戶訂單號 | — | 文字 30 字;離開欄位時回填到尚空白的明細列 |
| 公司代碼 | — | 下拉(C101),新增預設 1 |
| 幣別/匯率 | ✔ | 幣別空白時帶本位幣+匯率 1;改幣別+受訂日期由匯率控件自動帶「買入」匯率 |
| 交易方式/交易條件/運送方式/交易類別 | — | 由客戶代號帶出;交易類別限 D(直接外銷)/I(貿易商)/L(內銷) |
| 港口代碼 | — | 由客戶代號帶出,右側顯示港口簡稱 |
| 業務員編號/收付條件/稅別 | — | 由客戶代號帶出;稅別決定稅率 |
| 轉出倉庫(倉儲代號)/轉入倉庫(轉入倉儲) | — | 倉庫搜尋;本版不強制輸入(沿襲 VFP 鈞寶設定) |
| 舊單號 | — | 文字 20 字,自由輸入 |
| 總數量(數量總額) | — | 系統加總明細數量(唯讀) |
| 原幣總金額(總原幣未稅) | — | 系統加總明細原幣未稅(唯讀) |
| 結案 | — | 勾選表示結案(Y/N) |
| 已審核/審核人員/審核日期 | — | 唯讀,由工作流程回填 |
| 訂單備註/注意事項 | — | 自由輸入 |
明細¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 序號 | — | 系統產生(唯讀),5 位流水號 |
| 出貨別 | — | 1 正常 / 2 補貨;新增預設 1;存檔限 1 或 2 |
| 客訂單序號 | — | 文字 |
| 品號 | ✔ | 空白或數量 0 的列存檔時視為刪除;輸入後帶品名/單位/單價 |
| 品名/中文描述 | — | 由品號帶出(唯讀) |
| 客戶品號 | — | 由品號+客戶帶出,可改 |
| 顏色 | — | 自由輸入 |
| 訂單數量 | ✔ | 為 0 的列存檔視為刪除;變更時重算金額與總額 |
| 單位 | — | 下拉(單位清單);優先採用客戶歷史單位 |
| 單價 | — | 由平均成本÷匯率自動帶(受看價權限控管才顯示) |
| 金額(原幣未稅) | — | =數量×單價(唯讀,受看價權限控管) |
| 客戶交期/預訂交期/回覆日期 | — | yyyy/MM/dd;回覆日期填入且預訂交期空白時自動帶入預訂交期 |
| 已交數量/請購數量/出通單數量 | — | 唯讀,由下游作業回填,用於判斷可否刪除 |
| 製程別 | — | 下拉 1 內製 / 2 外購 / 3 觀瀾 |
| 訂單分類 | — | 限 A,B,C,D,E(可空白) |
| 廠商代號 | — | 廠商搜尋 |
| 採購別/備註/交期變更/營業確認 | — | 自由輸入 |
| 建議採購量/建議交期/建議售價 | — | 自由輸入(建議售價受看價權限控管) |
| 是否採購/是否核發/是否結案 | — | 唯讀狀態欄位 |
| 製通單號 | — | 唯讀,由製通單作業回填 |
| 包裝量/標籤數/交貨地點/客戶訂單號/Reqno/合併單號/結關日期 | — | 自由輸入或由下游回填 |
欄位連動與附加功能¶
這一節把「輸入某欄位/按某按鈕後系統會做什麼」逐項列出,全部來源是 ViewModel、Source、SaveBll、DeleteBll 與 VFP
orssmaclass 的實際程式碼。
新增時的預設值(AfterAddNew)¶
當你按 新增:
- 單頭自動設定公司代碼=1、訂單別=2(調撥指示)、序號前置碼=KU、受訂日期=今天。
- 幣別若空白,帶入本位幣並把匯率設為 1。
- 數量總額歸 0。
- 所有明細列若出貨別空白,補上
1(正常)。
以新增明細鈕加入的每一列,也會套用同樣的明細預設(出貨別=1,並掛上主檔參照供計稅)。
輸入「客戶代號」→ 帶出整組交易預設(SetCustomerData)¶
當你在單頭輸入客戶代號並離開欄位,系統以 DARB_QRY_ORSSMA 查詢別 3(vw_cudata 客戶預設)抓資料,一次帶出:
- 交易方式、業務員編號、收付條件號、幣別、交易條件碼、運送方式碼、交易類別、港口代碼、稅別。
- 同步顯示客戶簡稱、業務員姓名、收付條件說明、港口簡稱。
- 帶出的稅別會連動更新稅率與稅別名稱。
- 若帶回的幣別為空,補本位幣+匯率 1。
- 查無客戶代號時跳「查無客戶代號」訊息並清空客戶簡稱。
匯率怎麼來
匯率不是由客戶帶出,而是由畫面上的幣別控件依幣別+受訂日期自動查「買入(Buy)」匯率(對應 VFP U_BLRATE … '買')。本位幣固定為 1。
輸入「客戶訂單號」→ 回填空白明細列¶
當你修改單頭客戶訂單號,系統會把這個值回填到所有客戶訂單號仍為空白的明細列(對應 VFP 客戶訂單號.LostFocus)。已填過的明細列不會被覆蓋。
修改「匯率」或「稅別」→ 全部明細重算(ReceiveWeakEvent)¶
在編輯狀態下變更單頭匯率或稅別,系統會:
- 依新稅別重抓稅率。
- 重算每一列的含稅單價、原幣含稅、本幣未稅、本幣含稅,以及單頭的總原幣未稅/含稅、總本幣未稅/含稅(對應 VFP「計算金額(2)」)。
明細輸入「品號」→ 驗證並帶值帶價(SetSkuData)¶
當你在明細輸入品號:
- 先檢查單頭匯率是否大於 0,否則提示「請先輸入正確的匯率」並中止。
- 查 vw_invent:查無品號提示「查無品號」並清空品名/中文描述;品號停用則提示「品號停用」中止。
- 帶出品名、中文描述、單位。
- 以
DARB_QRY_ORSSMA查詢別 4 抓該客戶最近一張調撥通知,帶出客戶品號、單位(優先採用歷史單位)、製程別。 -
自動帶單價:有平均成本時=
ROUND(平均成本÷計價匯率, 5);否則用標準成本÷匯率;都沒有則 0。為什麼用平均成本而非售價
VFP 2014/06/25 起改抓平均成本當單價,因為調撥屬內部移轉,用售價會被課過多稅。
-
帶完值後立即依數量×單價計算該列金額。
明細輸入「訂單數量」或「單價」→ 即時算金額(SetTaxPrice)¶
變更明細數量或單價時,系統依稅別/匯率重算該列稅額與金額(TaxCalculator.SetDetail),並更新單頭數量總額(對應 VFP「計算金額(1)」與「sum加總」)。被標記刪除(增刪修=D)或品號空白的列不列入加總。
明細「回覆日期」→ 自動補預訂交期(回覆日期Binding)¶
當你在明細填回覆日期而預訂交期為空時,系統自動把回覆日期帶入預訂交期(對應 VFP col回覆日期 sqltext1.Valid)。
「複製明細」按鈕(CopyDetailCommand)¶
單頭右下方的 複製明細 鈕:把目前選取的明細列整列複製到第一筆空白列(沒有空白列就新增一列並給新序號)。複製的是品號、數量、單價、各金額、交期、廠商、製程別、備註等內容欄位,但不複製製通單號、已交數量、出通單數量、請購數量、回覆日期、生產回覆等狀態欄位(這些維持空白/0,對應 VFP 複製鈕.Click 與 sql_mno1.GotFocus 的排除清單)。複製後重算金額與總額。
「查庫存」按鈕(StockQueryCommand)¶
明細每列的 查庫存 鈕:以該列品號切換到右側的庫存查詢頁籤,查看該品號的庫存狀況。
與 VFP 的差異
VFP 原版的查庫存鈕(cmdbtn11)會在單頭下方顯示庫存量/採購未入/訂單未交/小計四個數字與一個進出明細小表。新版改用系統共用的庫存查詢頁籤呈現,單頭不再放這四個合計欄位。
存檔檢查(OrssmaSave.AllowSave)¶
按 儲存 時系統依序檢查:
- 受訂日期未輸入 → 擋存並提示。
- 客戶代號未輸入 → 擋存並提示。
- 交易類別若有值但不在
D/I/L→ 擋存。 - 逐列明細:品號空白或數量為 0 的列自動標記為刪除(不報錯);出貨別有值但不是
1/2→ 擋存並指出序號;訂單分類有值但不在A~E→ 擋存並指出序號。
通過後在存檔前(HandleDataBeforeEndEdit)補預設(幣別空白補本位幣、訂單別補 2)並執行完整稅額計算;因 orssde 無微調欄位,尾差會併入對應明細列的金額。
刪除檢查(OrssmaDelete.CheckDataCanDelete)¶
按 刪除 時,只要任一明細列已交數量 > 0 或 出通單數量 > 0(代表已轉出貨/已開出貨通知),即不可刪除並提示「已轉出貨」。
常見問題¶
存檔時提示「受訂日期未輸入」或「客戶代號未輸入」?
這兩個是單頭必填欄位。受訂日期新增時預設今天,若被清空需重填;客戶代號務必輸入有效代號(輸入後系統才會帶出交易方式、幣別、稅別等預設)。
明細輸入品號後跳「請先輸入正確的匯率」?
系統用「平均成本÷匯率」算單價,所以匯率必須先大於 0。請先在單頭確認幣別與匯率(本位幣匯率為 1),再回明細輸入品號。
明細單價或金額是 0?
單價來自品號的平均成本(無平均成本改用標準成本)。若該品號兩者都沒有,單價會帶 0、金額也為 0。請先在品號主檔維護成本,或手動輸入單價。另外,若您沒有看價權限,單價/金額/建議售價欄位會被隱藏。
改了匯率或稅別,金額沒跟著變?
在編輯狀態下改匯率或稅別才會即時重算全部明細與總額;瀏覽狀態不會重算。若仍未更新,存檔時也會做一次完整稅額計算。
這張單刪不掉,提示「已轉出貨」?
只要任一明細的已交數量或出通單數量大於 0,代表已被下游出貨/出貨通知承接,系統禁止刪除。需先處理(沖銷)下游單據後才能刪。
按了「快速審核」卻提示無權?
工作流程的送審與審核走集中式機制並受權限控管。沒有審核權限時系統會擋並提示「無權快速審核」,請洽系統管理員開通工作流程審核權限。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/E-SalesOrder/images/):
orssma-step1.png— 新增畫面(單頭預設值:訂單別 2、受訂日期今天、本位幣匯率 1)orssma-step2.png— 輸入客戶代號後自動帶出交易預設的單頭全貌orssma-step3.png— 明細格線(含品號帶價、複製明細鈕、查庫存鈕)orssma-step4.png— 工作流程送審/快速審核後的已審核欄位狀態