程式資訊
- 程式 ID:
PURCHPRINT - 所屬子系統:G.採購付款
- 狀態:stable
採購單列印¶
功能簡介¶
「採購單列印」是 採購單(Purch) 的列印伴隨頁,負責把採購單以 PO 起迄區間整批送進報表預覽/列印。它本身是一支獨立的程式(ProgramClass.PURCHPRINT,沿用採購單主檔 PURCH 的選單編號 G-040),但操作上只做「設定列印範圍」這一件事;採購單本身的維護(新增/修改/明細)請回 採購單。
最常見的進入方式是:在 採購單 畫面停在某一張採購單時直接呼叫列印,系統會把目前這張採購單的單號自動帶成列印起迄(起=迄=目前單號),等同「只印這一張」。你也可以手動把起迄改成一段區間,整批列印多張採購單。
目前實作狀態
本頁的條件面板(PO 起迄、Purchase Order No 選項)與「目前採購單自動帶入」已可運作;但實際的報表取數與輸出邏輯在程式碼中尚被註解保留、未啟用(對應的報表來源 TWORK_RPT_PURCH 與報表樣板 Purch_TW_ZH_A4 尚未接上)。在此之前,列印面板可開啟、可輸入範圍,但按列印不會產生內容。下方「欄位連動與附加功能」中標示「規劃中」者,即屬此類尚未提供的行為。
前置需求¶
- 權限:G.採購 →
G-040採購單相關的瀏覽/列印權限。 - 基礎資料:列印的內容完全來自既有採購單,請先在 採購單 建立並存好要列印的單據。
| 資料 | 影響的結果 |
|---|---|
| 採購單主檔(採購單) | 列印的單號範圍、表頭(廠商、訂購日期、付款條件等)與明細(SKU/數量/單價) |
| 廠商主檔(SPDATA) | 報表上的廠商名稱、地址等資訊 |
| 倉庫代號 | 報表的「收貨地址(Ship To)」由倉庫代號決定(見欄位連動與附加功能) |
操作步驟¶
- 從 採購單 主檔切到要列印的採購單,呼叫列印功能進入本頁;系統會把目前這張採購單的單號自動帶入起迄兩欄(起=迄=目前單號)。
- 確認列印條件為
Purchase Order No(目前唯一的列印條件,預設已選取)。 - 視需要調整 PO 起迄:
- 只印目前這一張:保留自動帶入的單號不動。
- 整批列印:把起始採購單號與結束採購單號改成想要的區間。
- 按列印工具列上的預覽/列印(由外層
SqlPrint提供)。
起迄不可留空
起始或結束 PO 任一欄留空時,系統判定沒有可列印的資料(HaveReportData() 回傳 false),不會進入列印。請確保兩欄都有值。
欄位說明¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
列印條件(Purchase Order No) |
✔ | 目前唯一的列印條件,預設已選取(PurchPrintCondition.PurchaseOrderNo)。 |
| 起始採購單號(Beginning) | ✔ | 列印區間下界。由 採購單 進入時,自動帶目前採購單的單號。 |
| 結束採購單號(Ending) | ✔ | 列印區間上界。由 採購單 進入時,自動帶目前採購單的單號(與起始相同=只印一張)。 |
欄位連動與附加功能¶
這一節說明「輸入某欄位/按某動作後,系統會做什麼」,全部依實際程式碼整理。
從採購單主檔帶入起迄¶
當你在 採購單 停在某張單據並呼叫列印時,主檔的 GetPrintViewModel() 會新建本列印頁,並把目前顯示的採購單號同時填進起始與結束兩欄。因此預設情境就是「只印目前這一張」;要印多張時自行把結束單號往後改即可。
小技巧
若主檔目前沒有任何資料列(例如剛開啟還沒查詢),起迄不會被自動帶入,需要你手動輸入 PO 起迄。
起迄留空 → 視同無資料¶
按列印前,系統會檢查起始或結束 PO 是否留空:
- 任一欄留空:
HaveReportData()直接回傳 false → 不會列印任何東西。 - 兩欄都有值:才會往下進入報表流程。
報表參數帶入起迄單號¶
進入報表流程時(規劃中),系統會把起始/結束採購單號分別填入報表參數 BeginningDocumentNo 與 EndingDocumentNo(GetReportParameters()),供報表依此區間取數與顯示抬頭。
收貨地址(Ship To)依倉庫代號自動帶¶
報表取數時,系統會依採購明細的倉庫代號自動填入固定的收貨地址(SetShipAddress),對應關係如下:
| 倉庫代號 | 帶入的收貨對象 |
|---|---|
PR |
Prime Wire and Cable(CERRITOS, CA) |
NC |
Prime Wire and Cable(Aberdeen, NC) |
ZZ |
若已有收貨名稱則保留原值;否則同 PR(CERRITOS, CA) |
XW |
WUXI UNIVERSAL NETWORK CO., LTD.(WUXI, JIANGSU) |
XD |
YFC-BONEAGLE ELECTRONIC(DONGGUAN, GUANGDONG) |
規劃中
上述收貨地址帶值、日期格式化、報價基準等取數邏輯目前隨報表取數一併尚未啟用(程式碼保留但已註解)。報表接上後即會生效,目前列印不會輸出這些內容。
日期格式化為 MM/DD/YYYY¶
報表取數時(規劃中),訂購日期、ETD、報價日期會統一轉成 MM/DD/YYYY 格式(SetDate),以符合英文版採購單報表的版面。
報價基準(Quote On)顯示¶
報表取數時(規劃中),系統會依採購明細帶的行情值產生「報價基準」字串(SetQuoteOn):
- 有 LME 值:顯示
BASE ON LME:$<金額>。 - 否則有 COMEX 值:顯示
BASE ON COMEX:$...。 - 否則有 RMB 值:顯示
BASE ON RMB:$...。
數量為零的明細不列印¶
報表取數時(規劃中),數量為 0 的明細列會被剔除(list.RemoveAll(x => x.Quantity == 0)),避免空列印在採購單上。
備註合併¶
報表取數時(規劃中),明細的備註(Remark)會併入明細註記欄(CommentsD)——若原本已有註記則換行接在後面,否則直接以備註填入(SetCommentD)。
常見問題¶
按了列印卻沒有任何內容/預覽是空白的?
目前報表取數與輸出在程式碼中尚未啟用(對應報表 TWORK_RPT_PURCH/樣板 Purch_TW_ZH_A4 尚未接上)。條件面板可正常開啟與輸入,但實際列印內容要等報表接上後才會產生。詳見頁首的「目前實作狀態」說明。
為什麼進來時起迄已經自動填好了?
因為你是從 採購單 停在某張單據後呼叫列印,主檔會把目前這張採購單的單號同時帶進起始與結束欄,等於預設「只印目前這一張」。要整批列印就把結束單號往後改。
起迄留空會怎樣?
起始或結束 PO 任一欄留空時,系統判定沒有可列印資料(HaveReportData() 回傳 false),按列印不會有反應。請確認兩欄都有值。
收貨地址(Ship To)為什麼會自己變?
報表上的收貨地址是依採購明細的倉庫代號自動帶固定地址(PR/NC/ZZ/XW/XD 各有對應),不是逐筆手 key。對應表見欄位連動與附加功能。(此邏輯隨報表取數一併規劃中。)
可以依日期、廠商或倉庫範圍列印嗎?
目前條件面板只提供 Purchase Order No(PO 起迄)一種條件,沒有日期/廠商/倉庫的篩選欄位。需要這類範圍列印時,請先在 採購單 查到目標單號,再以 PO 區間列印。
相關功能¶
- 採購單(Purch) — 本單的列印母表單
- 廠商基本資料(SPDATA)
- 採購單列印(G採購單版 GPURCHPRINT) — 總務模組另一支採購單列印
- 採購模組功能總覽
需補截圖清單
以下截圖待功能 runtime 驗收(報表接上)後補拍(放 docs/G-Purchasing/images/):
purchprint-step1.png— 列印條件面板(Purchase Order No選項與 PO 起迄輸入框)purchprint-step2.png— 從採購單呼叫列印、起迄自動帶入目前單號的畫面purchprint-step3.png— 採購單報表預覽(待報表樣板接上後補拍)