跳轉到

程式資訊

  • 程式 IDGPURCHPRINT
  • 所屬子系統:C.總務管理
  • 狀態:stable

採購單列印

功能簡介

「採購單列印」是 G採購單(Purchase Order) 的列印伴隨頁,負責把採購單以 PO 起迄區間整批送進報表預覽/列印。它本身是一支獨立的程式(ProgramClass.GPURCHPRINT,沿用採購單主檔 GPURCH 的選單編號 C-050),但操作上幾乎只在「設定列印範圍」這一件事,採購主檔的維護請回 G採購單

最常見的進入方式是:在 G採購單 畫面停在某一張採購單時直接呼叫列印,系統會把目前這張採購單的單號自動帶成列印起迄(起=迄=目前單號),等同「只印這一張」。你也可以手動把起迄改成一段區間,整批列印多張採購單。

目前實作狀態

本頁的條件面板(PO 起迄、Purchase Order No 選項)與「目前採購單自動帶入」已可運作;但實際的報表取數與輸出邏輯在程式碼中尚被註解保留、未啟用(對應的報表來源 TWORK_RPT_GPURCH 與報表樣板尚未接上)。在此之前,列印面板可開啟、可輸入範圍,但按列印不會產生內容。下方「欄位連動與附加功能」中標示「規劃中」者,即屬此類尚未提供的行為。

前置需求

  • 權限:C.總務 → C-050 採購單相關的瀏覽/列印權限。
  • 基礎資料:列印的內容完全來自既有採購單,請先在 G採購單 建立並存好要列印的單據。
資料 影響的結果
採購單主檔(G採購單 列印的單號範圍、表頭(廠商、訂購日期、付款條件等)與明細(SKU/數量/單價)
廠商主檔(SPDATA 報表上的廠商名稱、地址等資訊
倉庫代號 報表的「收貨地址(Ship To)」由倉庫代號決定(見欄位連動與附加功能

操作步驟

  1. G採購單 主檔切到要列印的採購單,呼叫列印功能進入本頁;系統會把目前這張採購單的單號自動帶入起迄兩欄(起=迄=目前單號)。
  2. 確認列印條件為 Purchase Order No(目前唯一的列印條件,預設已選取)。
  3. 視需要調整 PO 起迄
    • 只印目前這一張:保留自動帶入的單號不動。
    • 整批列印:把起始採購單號結束採購單號改成想要的區間。
  4. 按列印工具列上的預覽/列印(由外層 SqlPrint 提供)。

起迄不可留空

起始或結束 PO 任一欄留空時,系統判定沒有可列印的資料(HaveReportData 回傳 false),不會進入列印。請確保兩欄都有值。

欄位說明

欄位 必填 說明/格式/預設
列印條件(Purchase Order No 目前唯一的列印條件,預設已選取(GPurchPrintCondition.PurchaseOrderNo)。
起始採購單號(Beginning) 列印區間下界。由 G採購單 進入時,自動帶目前採購單的單號。
結束採購單號(Ending) 列印區間上界。由 G採購單 進入時,自動帶目前採購單的單號(與起始相同=只印一張)。

欄位連動與附加功能

這一節說明「輸入某欄位/按某動作後,系統會做什麼」,全部依實際程式碼整理。

從採購單主檔帶入起迄

當你在 G採購單 停在某張單據並呼叫列印時,主檔的 GetPrintViewModel() 會新建本列印頁,並把目前顯示的採購單號同時填進起始結束兩欄。因此預設情境就是「只印目前這一張」;要印多張時自行把結束單號往後改即可。

小技巧

若主檔目前沒有任何資料列(例如剛開啟還沒查詢),起迄不會被自動帶入,需要你手動輸入 PO 起迄。

起迄留空 → 視同無資料

按列印前,系統會檢查起始或結束 PO 是否留空:

  • 任一欄留空:HaveReportData() 直接回傳 false、GetPrintSettings() 回傳 null → 不會列印任何東西。
  • 兩欄都有值:才會往下進入報表流程。

收貨地址(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)——若原本已有註記則換行接在後面,否則直接以備註填入。

常見問題

按了列印卻沒有任何內容/預覽是空白的?

目前報表取數與輸出在程式碼中尚未啟用(對應報表 TWORK_RPT_GPURCH 與樣板尚未接上)。條件面板可正常開啟與輸入,但實際列印內容要等報表接上後才會產生。詳見頁首的「目前實作狀態」說明。

為什麼進來時起迄已經自動填好了?

因為你是從 G採購單 停在某張單據後呼叫列印,主檔會把目前這張採購單的單號同時帶進起始與結束欄,等於預設「只印目前這一張」。要整批列印就把結束單號往後改。

起迄留空會怎樣?

起始或結束 PO 任一欄留空時,系統判定沒有可列印資料,按列印不會有反應。請確認兩欄都有值。

收貨地址(Ship To)為什麼會自己變?

報表上的收貨地址是依採購明細的倉庫代號自動帶固定地址(PR/NC/ZZ/XW/XD 各有對應),不是逐筆手key。對應表見欄位連動與附加功能。(此邏輯隨報表取數一併規劃中。)

可以依日期、廠商或倉庫範圍列印嗎?

目前條件面板只提供 Purchase Order No(PO 起迄)一種條件,沒有日期/廠商/倉庫的篩選欄位。需要這類範圍列印時,請先在 G採購單 查到目標單號,再以 PO 區間列印。

相關功能


需補截圖清單

以下截圖待功能 runtime 驗收(報表接上)後補拍(放 docs/C-GeneralAffair/images/):

  1. gpurchprint-step1.png — 列印條件面板(Purchase Order No 選項與 PO 起迄輸入框)
  2. gpurchprint-step2.png — 從 G採購單呼叫列印、起迄自動帶入目前單號的畫面
  3. gpurchprint-step3.png — 採購單報表預覽(待報表樣板接上後補拍)