程式資訊
- 程式 ID:
CUINVE - 所屬子系統:E.營業收款
- 狀態:stable
客戶產品表¶
功能簡介¶
「客戶產品表」是維護「客戶 ↔ 品號」對應關係的客戶層主檔。它以客戶代號為主鍵,在底下的明細格列出該客戶常用、約定的品號,並記錄每個品號對該客戶的客戶品號、客戶機種、包裝、重量、紙箱尺寸、生效/失效/停售日期、銷售區域、業務員等資訊。
業務人員與客服在維護客戶資料、製作銷售訂單時會用到它:當一張訂單輸入客戶與品號後,系統可由本表帶出該客戶專屬的客戶品號、包裝量、重量與業務員等預設值,省去逐筆查詢。本頁屬於基礎資料維護性質,先建好客戶產品表,後續的訂單、出貨、標籤作業才會有正確的對應來源。
與客戶報價單的區別
客戶產品表記錄的是「品號對應與物流屬性(包裝/重量/尺寸)」,不含售價。售價請維護於客戶報價單(CUPDMA)。本表明細雖有保留單價欄位,但僅供參考、不是報價來源。
前置需求¶
- 權限:E.銷售訂單 →
E-040 客戶產品表的瀏覽與修改權限。 - 基礎資料:本表的下拉/帶值功能依賴下列主檔先維護好——
| 資料 | 影響什麼 |
|---|---|
| 客戶基本資料(CUDATA) | 主檔客戶代號的查詢與客戶簡稱/全名帶出;客戶不存在無法存檔 |
| 品號主檔(SK_INVENT) | 明細品號查詢、帶出品名,以及輸入品號時自動回填的包裝/重量/尺寸來源 |
| 業務員主檔(SK_SALESMEN) | 明細業務員編號查詢與姓名顯示 |
操作步驟¶
本表為「客戶層主檔 + 品號明細」的版面:上方一行是客戶與整批備註,下方是該客戶的品號明細格。
新增一個客戶的產品對應¶
- 從主選單開啟 E.銷售訂單 → 客戶產品表。
- 點工具列
新增。 - 在 Customer Code(客戶代號) 欄輸入或查詢客戶代號,系統右側自動顯示客戶名稱。
- 視需要在 Notes(備註) 填整批說明。
- 在下方明細格逐列輸入品號(見欄位連動與附加功能,輸入品號會自動帶出包裝、重量、尺寸與業務員)。
-
點
儲存。小技巧
可用 Ctrl+S 快速儲存。
修改 / 刪除¶
- 用工具列的查詢(放大鏡)或上下筆按鈕找到要維護的客戶。
- 點
修改進入編輯狀態,直接在明細格調整欄位,或新增/刪除明細列。 - 要移除某個品號,把該列的 品號 清空即可——存檔時該列會被視為刪除(見欄位連動與附加功能)。
- 點
儲存。
列印¶
- 在工具列點
列印,開啟「客戶產品表」報表條件視窗。 - 在 Customer Code(客戶代號) 的起~訖兩欄輸入要列印的客戶區間。
- 由本表進入列印時,系統會把目前這筆客戶代號自動帶到起訖兩欄,預設只印目前這一家。
-
確認後產出報表。
起訖須有值才印得出來
報表的客戶代號起、訖兩欄至少要有一邊填值才會有資料;兩邊都留空會被視為「無資料」而不產出。
欄位說明¶
主檔(上方客戶區)¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| Customer Code(客戶代號) | ✔ | 主鍵。輸入後右側帶出客戶名稱;同一客戶代號不可重複建立 |
| Notes(備註) | — | 整筆客戶層備註,最多 120 字 |
明細(下方品號格)¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| LineNo_(序號) | 自動 | 系統自動編號 |
| SKU(品號) | ✔ | 對應品號主檔;輸入後自動回填多個物流欄位(見下節)。空白列存檔時自動刪除 |
| SKU Description(品名) | 自動 | 唯讀;由資料表檢視依品號帶出,於該筆資料載入/重新整理時顯示(非輸入品號當下) |
| Customer SKU(客戶品號) | — | 客戶端對此品號的編號。同一客戶內不可重複 |
| Sales Rep Code(業務員編號) | — | 對應業務員主檔;輸入品號時可帶出建議值,亦可手改 |
| Sales Region(銷售區域) | — | 文字,最多 15 字 |
| Unit Price(單價) | — | 參考用單價(非報價來源) |
| Unit Weight(單重) | — | 由品號帶出,可改 |
| Box Height/Box Length/Box Width(箱高/箱長/箱寬) | — | 紙箱尺寸(公分,1 位小數);輸入品號時帶出,存檔時據此重算材積 |
| Volume(材積) | 自動 | =ROUND(箱長 × 箱寬 × 箱高 ÷ 28317, 2),唯讀;於輸入品號與存檔時自動算 |
| Gross Weight/Net Weight(毛重/淨重) | — | 由品號帶出,可改 |
| Customer Model(客戶機種) | — | 客戶端機種名稱 |
| Model(機種) | — | 本廠機種 |
| Delivery Address(交貨地點) | — | 由品號帶出,可改 |
| Change Date(變動日期) | — | yyyy/MM/dd |
| Effective Date(生效日期) | — | yyyy/MM/dd;存檔時若空白自動補今天 |
| Expiration Date(失效日期) | — | yyyy/MM/dd |
| Halt Sales Date(停售日期) | — | yyyy/MM/dd |
| Quantity Per Carton(包裝量_箱) | — | 由品號帶出,可改 |
| Label Count(標籤數) | — | 整數 |
| Minimum Package Quantity(包裝量) | — | 由品號帶出(VFP 原版隱藏,標示「暫不開放使用」) |
| Revision No(改訂編號) | — | 文字,最多 10 字 |
| Notes(備註) | — | 明細列備註,最多 60 字 |
欄位連動與附加功能¶
本節整理「輸入某欄位 / 按某動作後系統會做什麼」,全部對應實際程式碼(C#
CuinveViewModel/CuinveSave/Twork_ord_vw_cuinveSource與 VFPcuinveclass)。
輸入客戶代號 → 帶出客戶名稱¶
- 當你在 Customer Code(客戶代號) 輸入或查到一個客戶,系統會即時帶出該客戶名稱顯示在右側唯讀欄。
- 切換到另一筆客戶資料時,系統會重新依客戶代號刷新名稱顯示,確保畫面上看到的名稱與目前這筆客戶相符。
輸入品號(SKU)→ 自動回填整列物流屬性¶
當你在明細列輸入 SKU(品號) 並離開該欄,系統會以該品號去查品號主檔(Darb_qry_cuinve_sku),自動回填下列欄位(你仍可逐欄手動覆寫):
- 包裝量(Minimum Package Quantity)、包裝量_箱(Quantity Per Carton)
- 淨重(Net Weight)、毛重(Gross Weight)、單重(Unit Weight)
- 箱高 / 箱長 / 箱寬(Box Height / Length / Width)與材積(Volume)
- 備註(明細 Notes)、交貨地點(Delivery Address)
- 業務員編號(Sales Rep Code)
品名不會在輸入品號當下帶出
品名(SKU Description)為唯讀,但不是在你輸入品號的瞬間帶出;它由資料表檢視(Twork_ord_vw_cuinve)在載入/重新整理該筆資料時隨品號顯示。輸入新品號後,品名要等該筆資料下次載入才會對應顯示。
為何輸入品號後欄位會被覆蓋
這是設計上「以品號主檔為預設來源」的行為——目的是讓你少打字。若某客戶的包裝/重量與品號主檔不同,請在帶出之後再手動修改該列即可,存檔會以你修改後的值為準。
箱高 / 箱長 / 箱寬 → 自動算材積¶
- 材積(Volume) 由系統用公式 ROUND(箱長 × 箱寬 × 箱高 ÷ 28317, 2) 自動算出,唯讀、不可直接輸入;要改材積只能改三邊尺寸。
- 材積會在兩個時機被重算:
- 輸入品號時:以品號主檔帶出的箱尺寸一併帶出對應材積。
- 存檔時:按
儲存時系統會逐列重算每一筆(只要該列箱長/箱寬/箱高任一大於 0),確保最終材積與你手改後的三邊尺寸一致。
- 因此,若你在格中手動改了箱長/箱寬/箱高,材積不會在離開儲存格的當下立即更新,要等存檔才會跟著重算。
與 VFP 舊版的差異
VFP 舊版是在離開箱尺寸欄位的當下(text1.Valid)即時重算材積;新版改為在存檔時統一重算(HandleDataBeforeEndEdit),計算公式相同,最終存進資料庫的材積值一致。
28317 是什麼
28317 立方公分 ≈ 1 才(30cm × 30cm × 30cm 的材積單位),因此材積欄算出來的是「才數」。
生效日期自動補今天¶
新增明細或存檔時,系統會檢查每一列:若 Effective Date(生效日期) 為空,就自動填入今天。對應 VFP 的 addagain / addsonitem(新增明細時補生效日期)與存檔前處理。
存檔前的整理與檢核¶
按 儲存 時,系統會:
- 把主檔客戶代號回寫到每一列明細,確保所有明細列都掛在同一個客戶下。
- 品號空白的列自動標記為刪除(不會存成空白列)。
- 重算每列材積並補生效日期(如上)。
- 進行下列檢核,任何一項不過就擋下存檔並提示:
- 主檔 客戶代號 不可為空。
- 同一客戶內 客戶品號 不可重複。
- 同一客戶內 品號 不可重複。
列印帶值¶
由本表工具列點 列印 時,系統會把目前這筆的客戶代號同時帶入報表條件的「起」與「訖」兩欄,並帶出客戶名稱,預設就是列印目前這一家客戶。你也可以把訖欄改成別家,列印一段客戶區間。
尚未提供的功能
主檔資料表雖保留工作流程 / 審核人員 / 審核日期 / 已審核等欄位,但目前畫面並未提供簽核或工作流程操作,本表以一般主檔的新增/修改/刪除方式維護即可。VFP 舊版另有一個「單筆表單版」版面(每次只顯示一個品號、含「送貨地點」多行欄位),新版統一改用上方客戶 + 下方品號明細格的格狀版面呈現,功能等價。
常見問題¶
輸入品號後,包裝量 / 重量 / 尺寸自己變了,是 bug 嗎?
不是。輸入 SKU(品號) 時系統會以品號主檔的資料自動回填該列的包裝量、重量、箱高箱長箱寬、材積、業務員等欄位,目的是帶預設值。若該客戶的實際資料不同,帶出後再手動覆寫即可,存檔會以你改後的值為準。詳見欄位連動與附加功能。
材積(Volume)欄打不進去 / 數字不對?
材積為唯讀、不能直接輸入,它由系統用「箱長 × 箱寬 × 箱高 ÷ 28317,四捨五入 2 位」自動算出。要改材積,請改三邊尺寸欄,材積會跟著重算。
存檔時出現「客戶代號不可空白 / 客戶品號重複 / 品號重複」?
- 客戶代號為主鍵,主檔客戶代號必填。
- 同一客戶內,同一個客戶品號或同一個品號只能出現一次。請檢查明細格是否有重複列;要保留哪一筆就把另一筆的品號清空(清空列存檔時會自動刪除)。
想刪掉某個品號對應,但找不到刪除鍵?
把該明細列的 SKU(品號) 清空即可——存檔時品號空白的列會被自動標記刪除,不需要另外按刪除。
品名 / 業務員姓名欄是空的?
品名來自品號主檔、業務員姓名來自業務員主檔。若品號或業務員編號在主檔中查不到,名稱欄就會空白。請先確認對應主檔已建檔,或重新查一次該品號/業務員編號。
列印時印不出任何資料?
報表以客戶代號區間取數。請確認條件視窗的客戶代號「起」「訖」至少一邊有填——兩邊都空白會被視為無資料而不產出。
相關功能¶
需補截圖清單
以下截圖待 runtime 驗收後補拍(放 docs/E-SalesOrder/images/):
cuinve-step1.png— 客戶產品表主畫面(上方客戶區 + 下方品號明細格)cuinve-step2.png— 輸入品號後自動帶出包裝/重量/尺寸的明細列cuinve-step3.png— 列印條件視窗(客戶代號起訖)