跳轉到

程式資訊

  • 程式 IDORMAST
  • 所屬子系統:E.營業收款
  • 狀態:stable

銷售訂單作業

功能簡介

「銷售訂單作業」是業務人員建立與維護銷售訂單(ORMAST)的核心單據,採主檔+明細結構:表頭記錄客戶、幣別、稅別、收付條件、出貨/請款地址等資訊;明細逐列登錄品號、數量、單價、預訂交期等。本表單位於銷售流程的最前端——訂單成立後,後續的出貨發票應收帳款生產計畫都以這張訂單為來源。

表單同時內建多項自動化:輸入客戶自動帶出幣別/業務員/收付條件/稅別並重算匯率;輸入品號自動帶客戶報價單價;數量/單價/匯率變動即時重算稅額金額。另提供訂單簽核、信用簽核、訂單複製、結案(透過子表單)等延伸功能。

本頁的定位

本頁是銷售訂單作業的完整功能參考,涵蓋新增、修改、刪除、列印以及全部欄位連動與延伸功能;想先了解整體流程可從銷售模組首頁進入。

前置需求

  • 權限:E.銷售 → E-060 銷售訂單作業,依操作需要具備新增/修改/刪除/瀏覽/列印權限。金額相關欄位(單價、折扣%、原幣/本幣金額)另受 允許檢視價格(AllowViewPrice)權限控管,無此權限者該些欄位自動隱藏。
  • 基礎資料:表單帶值與檢核仰賴下列主檔,請先維護完成——
資料 影響什麼
客戶主檔(含集團、業務員、收付條件、稅別、幣別) 輸入客戶後自動帶出的幣別、業務員、收付條件、稅別、聯絡人、電話與匯率
客戶產品報價(CUPDMA) 明細輸入品號後自動帶入的單價(依客戶+品號+受訂日期+數量+幣別查報價)
品號主檔(INVENT) 品號的品名(中文描述)、單位
倉庫主檔 表頭倉庫;預設值取自使用者參數 3010
稅別與稅率設定 稅別說明、稅率(TAXPCT),用於計算稅額
匯率資料 外幣訂單的匯率,預設取受訂日期當天的「買入/帳列」匯率
收付條件、運送方式、付款方式、交易條件(C201/C202/C203) 表頭對應下拉的說明文字
折讓規則(ARAllowan,選用) 明細的回饋金額(AMTREBATE)計算

操作步驟

新增訂單

  1. 從主選單進入 E 銷售 → 銷售訂單作業,按工具列 新增。系統自動帶入下列預設值(詳見欄位說明):公司代碼 1、幣別為本位幣、匯率 1、訂單類別 O、訂單別 1、受訂日期為今天、倉庫取使用者參數 3010
  2. Customer Code(客戶代號) 輸入或查詢客戶。選定後系統自動帶出幣別、業務員、收付條件、稅別、聯絡人、電話、交易/付款/運送方式,並依受訂日期重算匯率(詳見欄位連動與附加功能)。
  3. 視需要調整表頭 Currency(幣別)/Exchange Rate(匯率)Tax Code(稅別)Payment Term(收付條件)Project Code(專案代號)Customer Order No(客戶訂單號) 等欄位。
  4. 在下方明細格線逐列輸入:
    1. SKU(品號):輸入或按查詢鈕,系統自動帶出 品名,並依客戶報價帶入 單價
    2. Quantity(數量):輸入後自動重算該列稅額與金額。
    3. Unit Price(單價):若報價未帶到或要調整可手動輸入,異動後重算金額。
    4. ETD/ETA(預訂交期):ETA 新增列預設為今天起 10 天後
  5. 儲存(或工具列存檔)。系統將表頭與明細寫回資料庫並產生訂單號碼。

修改訂單

  1. 用工具列查詢/瀏覽功能定位到要修改的訂單,按 修改
  2. 調整表頭或明細欄位;異動幣別/匯率/含稅別/折扣%/專案代號等會觸發自動重算或帶值(見欄位連動)。
  3. 儲存

已出貨/已揀貨的明細列鎖定

明細列只要 已交數量(Shipped Quantity)揀貨數量(Picked Quantity) 大於 0,該列即進入唯讀狀態,無法再修改。要結案此類明細請改用延伸功能 ⑤ 訂單結案子表單

刪除

  1. 定位到目標訂單後按 刪除
  2. 明細列若品號為空白會被視為空列自動略過(不寫回);訂單事件列(Detail1)若 SKU 為空白同樣略過。

列印

按工具列 列印,系統開啟 銷售訂單列印(SalesOrderPrint),並自動把目前這張訂單的訂單號碼帶入列印範圍的起訖(起=迄=目前訂單),可直接預覽/輸出。

欄位說明

表頭欄位

欄位 必填 說明/格式/預設
Sales Order No(訂單號碼) 系統 唯讀,存檔後系統產生
Order Date(受訂日期) 短日期;新增預設今天
Warehouse(倉庫) 新增預設取使用者參數 3010
Customer Code(客戶代號) 輸入後自動帶值,見欄位連動
Group Company(集團代號) 隨客戶帶出;若空白則回填為客戶代號
Currency(幣別) 新增預設本位幣;隨客戶帶出
Exchange Rate(匯率) 新增預設 1;幣別變動由匯率控件帶當日匯率
Ship Via(運送方式碼) 對應 C201
Payment Method(付款方式碼) 對應 C203
Payment Term(收付條件號) 隨客戶帶出,顯示說明
Tax Code(稅別) 隨客戶帶出,連動稅率與稅額
Transaction Term(交易條件碼) 對應 C202
Project Code(專案代號) 新增時輸入會把專案內品號帶入明細空列
Customer Order No(客戶訂單號) 客戶端的採購單號
Is Closed(ORDERCLOSE) 整張訂單結案旗標(Y/N)
Currency Amount(總原幣未稅) 系統 唯讀,由明細加總;無檢視價格權限時隱藏
Amount(總本幣未稅) 系統 唯讀,由明細加總;無檢視價格權限時隱藏

明細欄位

欄位 必填 說明/格式/預設
Line No(序號) 系統 列序號
SKU(品號) 輸入後帶品名與報價單價
SKUDescription(品名) 系統 唯讀,隨品號帶出
Stock(庫存) 按鈕欄,開啟庫存查詢(見欄位連動)
Customer SKU(客戶品號) 客戶端料號
UOM(單位) 下拉,來源為單位清單
Quantity(數量) 異動後重算稅額金額
Unit Price(單價) 報價帶入,可手改;無檢視價格權限隱藏
Discount Percent(折扣%) 隨表頭 DISCOUPCT 帶下;無檢視價格權限隱藏
CurrencyAmount(原幣未稅) 系統 唯讀,計算結果
Amount(本幣未稅) 系統 唯讀,計算結果
ETD 出貨預定日
ETA(預訂交期) 新增列預設今天 + 10 天
Notes(備註) 最長 30 字
Shipped Quantity(已交數量) 系統 唯讀;> 0 時該列鎖定
Picked Quantity(PICKEDQTY) 系統 唯讀;> 0 時該列鎖定
IsClosed(結案) 該明細列結案旗標(Y/N)

出貨別(隱藏預設)

新增明細列時,若出貨別為空白,系統自動填 1(這是 SetNewData 帶入的隱藏預設,畫面上未必呈現該欄)。

欄位連動與附加功能

這一節是本表單的重點。以下「當你…,系統會…」的行為全部來自程式碼。

表頭欄位連動

  1. 輸入客戶代號(Customer Code)時 — 系統以客戶代號查客戶設定,命中時自動帶入:客戶簡稱、集團代號、業務員(SALES1,業績比例 SALECOMPG1 設為 100)、收付條件號與其說明、幣別、聯絡人、聯絡電話、交易方式碼/交易條件碼、付款方式碼、運送方式碼、稅別(同時設為 TAXCODE1)。接著:
    1. 依稅別取稅率(TAXPCT1);特例:稅別為 FAL 且倉庫為 DI 時稅率強制為 0。
    2. 若帶出的幣別為空白,回填為本位幣且匯率設 1;否則呼叫匯率服務,取受訂日期當天的「買入/帳列」匯率寫入 匯率
    3. 若集團代號為空白,回填為客戶代號本身。
    4. 查無客戶時,上述欄位全部清空、幣別回本位幣。
  2. 輸入集團代號(Group Company)時 — 系統帶出集團公司簡稱顯示於旁。
  3. 變動幣別或匯率時 — 由幣別控件(TsCurrency)依受訂日期帶當日匯率到匯率欄;匯率欄本身變動則觸發全表稅額金額重算(見下方「重算」)。
  4. 變動含稅別(含稅/未稅)或匯率時 — 系統呼叫稅額計算器(TaxCalculator)對整張訂單的主檔與所有明細重新計算稅額與金額
  5. 變動表頭折扣%(DISCOUPCT)時 — 系統把折扣%同步寫到每一筆明細的 Discount Percent(DISCOUNTPG)。
  6. 新增模式下輸入專案代號(Project Code)時 — 系統依專案帶出該專案的品號清單,逐一填入明細中「品號為空白」的列(品號 + 品名),方便快速建立整批專案品項。
  7. 切換到不同訂單(換筆)時 — 系統清空庫存查詢面板,並重新取得專案名稱與稅別說明顯示。

明細欄位連動

  1. 輸入品號(SKU)時 — 透過 SKUBinding 設定品號:自動帶出品名等品號描述;若品號真的有變動(與原值不同),呼叫客戶報價程序(DARB_BIZ_CUPDM,依客戶代號+品號+受訂日期+數量+幣別)帶回單價
  2. 輸入數量(Quantity)時 — 透過 QuantityBinding 寫入數量並立即呼叫稅額計算器重算該列的原幣/本幣未稅、含稅、稅額。
  3. 輸入單價(Unit Price)時 — 透過 UnitPriceBinding 寫入單價並立即重算該列金額與稅額。
  4. 新增明細列(OnAddListener)時 — 系統把表頭物件掛到該明細列(作為稅率與計算的母單參考),確保新列也能正確套用含稅別與匯率。
  5. 按明細「Stock(庫存)」按鈕時 — 以該列品號帶入庫存查詢面板、執行查詢,並把右側支援面板切到「特殊查詢」頁,讓你不離開訂單就看該品號庫存。
  6. 明細列鎖定 — 已交數量或揀貨數量 > 0 的列,CanEdit 為 false,整列唯讀。

工具列延伸功能(ExtensionFunction)

功能 行為
延伸功能 ① 開啟訂單簽核(OrderApprove)視窗,關閉後重新整理目前資料
延伸功能 ② 開啟 Darb 編輯工具(Darbedittool) 視窗,關閉後重新整理
延伸功能 ③ 詢問「Approve Automatically」。選「是」開啟信用簽核(OrderApprove_Credit)視窗並重新整理;選「否」則進入修改模式切換審核人員後存檔——若原審核人員為空白或已是 !! 開頭(未簽核狀態),寫入目前使用者完成簽核;否則前綴 !!(標記為取消簽核)
延伸功能 ④ 開啟訂單複製(OrderDuplicate)視窗,關閉後重新整理
延伸功能 ⑤ 進入修改模式後開啟訂單結案子表單(Ormast_s),可逐列檢視揀/包/出貨進度並對「已部分出貨」的明細做結案

延伸功能 ⑤ 訂單結案子表單(Ormast_s)說明

  1. 子表單載入時自動以目前訂單查詢出每筆明細的揀貨、包裝、出貨數量(最多顯示三個出貨批次的日期欄),並計算未交(BO)數量。
  2. 只有管理員或備註含 SUPERVISORCLOSEORDER 的使用者,存檔按鈕才會啟用。
  3. Save:若整張訂單有任何出貨數量,系統把子表單上各列的結案旗標回寫到主表單明細並存檔;若完全沒有出貨,會提示「Line Item can't be closed until part of order ship out!」並取消,不允許結案。

訂單事件(Order Event,Detail1)

  1. 表單維護一份訂單事件清單(Detail1Data),可為各明細品號掛上「事件碼(Event Code)」(來源為訂單事件下拉清單,預設取清單第一筆)。
  2. 套用事件碼(EventCodeApply):把目前選定的事件碼套到所有已存在的事件列。
  3. 取得明細(GetDetail)(限修改/特殊修改狀態):為每一筆「尚未有事件列」的明細品號,新增一筆事件列(帶訂單號碼、明細 pkid、事件碼、SKU)。

其他附加功能

  1. 整箱檢查(FullCasePack) — 逐列檢查訂單數量是否為整箱包裝量(QuantityPerCarton)的整數倍;非整箱者列出 Line#序號 Full case pack is 整箱量 訊息,全部符合則提示 Each line is full case pack already!
  2. 請款地址複製到出貨地址(CopyFromBillTo) — 一鍵把請款(Bill To)名稱、地址、城市、州、郵遞區號、國家複製到出貨(Ship To)對應欄位。
  3. 回饋金額計算(RebateCalculator,BLL) — 依客戶折讓規則(取最新生效日的扣率),對各明細的原幣未稅算出回饋金額(AMTREBATE);倉庫為 DI 用 DI 扣率、其餘用倉庫扣率;特定客戶+品號組合排除不算(程式內建清單)。
  4. 列印來源(IPrintSource) — 列印時自動把目前訂單號碼帶入列印範圍起訖。

VFP 欄位事件對照

本表單對應的 VFP 舊版 scx_ord 程式碼不在本 repo,欄位事件描述以新版 C# 程式為準;若與舊版操作習慣有差異,以新版行為為主。

常見問題

輸入客戶後,幣別、業務員、稅別沒有自動帶出?

自動帶值是以客戶代號查客戶設定,查無資料時系統會把這些欄位清空並把幣別回設為本位幣。請確認:該客戶代號正確且客戶設定(含業務員、收付條件、稅別、幣別)已維護。

明細輸入品號後單價是 0?

單價來自客戶產品報價(CUPDMA),呼叫 DARB_BIZ_CUPDM,以客戶代號+品號+受訂日期+數量+幣別查報價。若該客戶+品號沒有有效報價、或受訂日期不在報價有效範圍內,就帶不到單價,需手動輸入。另外只有在品號真的變動(與原值不同)時才會去抓報價。

金額、稅額一直是 0,或改了匯率金額沒變?

金額與稅額由系統依數量、單價、匯率、含稅別自動計算。請確認已輸入數量與單價;變動含稅別或匯率會觸發整張訂單重算。若仍為 0,請檢查稅別/稅率是否正確設定。另外,單價、折扣%、金額欄位受「允許檢視價格」權限控管,無此權限時這些欄位會隱藏(並非數值為 0)。

某筆明細無法修改(變灰)?

明細列只要已交數量揀貨數量大於 0 就會鎖定為唯讀。要對已部分出貨的明細結案,請用工具列的訂單結案子表單(延伸功能 ⑤),且操作者需具備管理員或 SUPERVISORCLOSEORDER 權限。

結案子表單按存檔卻跳出「until part of order ship out」?

這是設計上的保護:整張訂單若完全沒有任何出貨,不允許把明細結案。請先有實際出貨後再結案。

輸入專案代號沒有自動帶品號?

專案帶品號只在新增模式下作用,且只會填入明細中「品號為空白」的列。若明細已填滿或不在新增狀態,就不會帶入。

相關功能


需補截圖清單

以下截圖待 runtime 驗收後補拍(放 docs/E-SalesOrder/images/):

  1. ormast-step1.png — 新增訂單後的表頭全貌(客戶帶值結果)
  2. ormast-step2.png — 明細格線(含 SKU 帶品名/單價、數量金額)
  3. ormast-step3.png — 工具列延伸功能(簽核/複製/結案入口)
  4. ormast-step4.png — 訂單結案子表單(Ormast_s,揀/包/出貨三批次欄)