跳轉到

程式資訊

  • 程式 IDINVENT_PRIME
  • 所屬子系統:D.工程資料
  • 狀態:stable

品號基本資料(Prime 版型)

功能簡介

「品號基本資料(Prime 版型)」是 品號基本資料(庫存主檔)另一套畫面版型。兩支程式共用同一張品號主檔(Source Twork_bom_vw_inventSource)與同一份自訂分類明細(Twork_bom_vw_itemspecSource),但 Prime 版改用 Basic / Processing / Purchase / Price / Other / Statistics 六個分頁的英文欄位排版,把品號的工程、採購、品管、價格、成本、包裝、Web 行銷等所有屬性攤在同一支表單上維護;畫面右側再掛六個查詢分頁,方便邊維護品號邊看它的報價/訂單/進貨等單據。(其中 Processing 分頁目前在 XAML 中設為隱藏Price 分頁則受檢視價格權限控管,詳見各分頁說明。)

此版型適合需要一次檢視/維護完整品號屬性(含外銷與電商欄位)的物料、工程或業務人員使用。它與庫存主檔的關係是:

  • 兩支都是 SKU(品號)主檔的維護程式,資料同源——同一個品號不論從哪一支進去都是同一筆資料。
  • 差別只在欄位的排版方式與顯示語系;Prime 版多了 Other 分頁的「Marketplace(電商)特徵」「Web 上架」等延伸欄位,但少了庫存主檔的新增預設值、擴充功能鈕與「派工(WKPAPER)」查詢分頁(詳見欄位連動與附加功能)。

目前版型的已知狀態(beta)

Prime 版的程式(ProgramClass.INVENT_PRIMEInvent_primeViewModelInvent_primeSave)已建立並可載入,但 Invent_prime.xaml 的欄位仍維持英文標籤與英文 binding 路徑(例如主檔的 SKUOldSKUSKUDescriptionUnitOfMeasurement…,以及 Self-Defined 明細格的 ItemItemContent),而資料來源 Twork_bom_vw_inventSourceTwork_bom_vw_itemspecSource 的屬性名已全面中文化(品號、舊品號、品名、單位、分類、分類內容…)。兩者對不上,因此主檔欄位區與 Self-Defined 明細格在目前版本不會顯示/寫入資料(欄位空白)。在版型完成中文化前,品號的日常維護請改用功能完整、binding 正確的 品號基本資料(庫存主檔)。本頁以「程式碼實際具備的行為」為準說明,凡涉及上述英文 binding 欄位之處,皆以此警告為前提。

前置需求

  • 權限:D.BOM → 品號基本資料(Prime 版型) 的瀏覽權限;新增/修改/刪除需對應的編輯權限。Price(價格)分頁另外受「檢視價格權限」控管——Invent_primeViewModel 啟動時呼叫 Context.User.GetViewPricePermission,沒有該品號程式的檢視價格權限時,Price 分頁維持隱藏(PriceTabVisibility = Collapsed)。
  • 真實成本欄:瀏覽清單的真實成本欄受權限備註控管,無權者看到的值會被歸零(見進入瀏覽時的真實成本遮罩)。
  • 基礎資料:品號屬性的下拉選項與連動結果,取決於下列主檔/參數的維護狀況——
資料 影響什麼
群組資料維護(INVGRPM) 群組代號對應的自訂分類(Self-Defined)清單——決定 Setting 會展開哪些分類與可選內容
單位下拉(Cmb_C104 單位(Unit Of Measurement)的可選清單,由 VM 建構時載入 UnitSource
廠商主檔(spdata) 採購分頁三家供應廠商(廠商代號 1~3)與廠商簡稱,並決定主要供應商
BOM 表(BOM)/製程 BOM 代碼、製程代碼,以及成本展開
部門主檔 生產部門、調自部門等部門欄位的對應名稱

右側查詢分頁與權限

Prime 版的六個查詢分頁(Quotation/Sales Order/Shipping/Vendor Quote/Purchasing/Receiving)在畫面上固定存在、不依權限隱藏——它們各自轉接到 CUPDMAORMAST/出貨/SPPDTPURCH/進貨 程式。是否查得到資料仍取決於你對那支來源程式的瀏覽權限。(庫存主檔則是「沒權限就不顯示該分頁」,兩者行為不同。)

操作步驟

品號的新增、修改、刪除、查詢都走系統共用的工具列(Ade 編輯列),流程與其他主檔一致。

查詢與切換品號

  1. 在工具列輸入或挑選 SKU(品號),或用上一筆/下一筆按鈕翻動。
  2. 切換品號後,系統會把目前品號自動帶入右側六個查詢分頁的起訖條件(BeginningSKUEndingSKU 都設成同一個品號),這樣切到任一查詢分頁時看到的就是這個品號的相關單據(見切換品號時的連動)。

新增品號

  1. 按工具列 新增
  2. 在 Basic 分頁輸入 SKU(品號)SKU Description(品名) 等基本欄位,再依需要切到各分頁補齊工程、採購、品管、包裝、價格等屬性。
  3. 儲存。存檔前系統會自動補算停用日期、品名、包裝量與重量(見存檔前自動補算)。

資料同源,且 Prime 版新增不帶預設值

從 Prime 版新增的品號,等同在 品號基本資料(庫存主檔) 也能查到的同一筆品號——不要把兩支當成兩份資料各建一次。另外,Prime 版沒有庫存主檔新增時自動帶單位/品別/來源別/ABC 預設值的 AfterAddNew,新增時這些欄位是空的,需自行輸入。

修改品號

  1. 查到要改的品號,按 修改
  2. 進入修改狀態時,系統會依該品號的群組代號重新載入自訂分類(Self-Defined)每列的可選內容(ContentList),讓既有的分類明細能正確下拉。
  3. 改完按 儲存

刪除品號

  1. 查到品號後按 刪除,再確認。
  2. 自訂分類明細(itemspec)若「分類」為空,會被視為空列、存檔時自動跳過(NeedDeleteFunction 回傳 true),不會誤刪也不會留下空白列。

維護自訂分類(Self-Defined)

  1. 在 Basic 分頁下方的 Self-Defined 區,按 Setting
  2. 系統會依目前品號的群組代號,從群組資料叫出該群組設定的所有自訂分類,並把每個分類的第一個可選內容當預設值帶入;原本的明細列會先全部標記刪除再重建(見自訂分類(Self-Defined))。
  3. 逐列在分類內容下拉挑選要記錄的值,存檔即寫回。

小技巧

Setting 帶出的分類清單來自 群組資料維護(INVGRPM)。若某品號展不出任何自訂分類,多半是它的群組代號沒設,或該群組沒有定義自訂分類項目。

欄位說明

主檔欄位非常多,下表只列關鍵欄位與其預設/格式;其餘屬性多為直接輸入。括號內為畫面英文標籤對應的 Source 中文屬性。

Basic(基本)分頁

欄位 必填 說明/格式/預設
SKU(品號) 主鍵,最長 30 字
Old SKU(舊品號) 沿用舊系統品號,最長 30 字
SKU Description(品名) 最長 200 字;留白時存檔自動以品號補上
Is Disabled / Disable Date(停用/停用日期) 停用設 Y 且停用日期空白時,存檔自動帶今天;改回 N 時自動清空停用日期
Group Code(群組代號) 決定自訂分類(Self-Defined)清單,最長 10 字
ABCClassification(abc 分類) 可選空白/A/B/C(ABCClassificationSource
Unit Of Measurement(單位) 取自單位下拉(Cmb_C104),最長 10 字
UnitPackage / ShipPackage(包裝量_包/包裝量_箱) 與最小包裝數、小包裝件數、內箱箱數連動自動計算(見下節)

Processing(工程)分頁 (目前版型隱藏)

Processing 分頁目前隱藏

在現行 Invent_prime.xaml 中,Processing 分頁的 TsTabItem 設為 Visibility="Collapsed"畫面上不會顯示這個分頁,下列欄位目前無法在 Prime 版維護。需要維護工程資料請改用 品號基本資料(庫存主檔)

欄位 必填 說明
Bom Code / Component Code(bom代碼/製程代碼) 連到 BOM 與製程,最長 30 字
Engineering Drawing No(工程圖號)、Version(版次)、Document No / Name(文件編號/名稱) 工程文件資訊
Design Change Code / Date / Data(設變編號/設變導入日/設變資料) 設計變更紀錄
Production Department(生產部門)、Production Ratio(生產量比率)、Production Lot(生產批量) 生產屬性
Is Indivisible / Is Reverse Entry / Is Tax Refund(不可分割/倒沖入帳/退稅識別) 單字元旗標

Purchase(採購)分頁

欄位 必填 說明
Vendor 1~3 / Ratio(廠商代號 1~3/廠商 1~3 比例) 三家供應廠商與供應比例;比例最高者為主要供應商(GetVendorCode
Defact Rate / Control Lot Num(不良率/管制批數) 品管參數
HSF / REACH / RoHS / RoHSLevel(hsf/reach/rohs/rohs 等級) 有害物質管制旗標
Is Sampling / AQL / Inspection Level / Rules(批次取樣/允收水準/檢驗水準/檢驗規範) 進料檢驗設定
Purchase Policy / Type / Urgency(採購政策/採購別/採購緊急度) 採購策略
Min/Max Purchase Qty、EOQ、Repurchase/Fixed Purchase Qty、Daily Usage(最小/最大採購量、經濟採購量、再採購點、固定採購量、日用量) MRP/補貨參數

Price(價格)分頁 (需檢視價格權限)

欄位 必填 說明
Special Price / On Sale Price 1,2 / Selling Price / List Price / Audit Price(特殊價/特價 1,2/業務成本/標準訂價/稽核價) 售價類欄位
Material / Labor / Indirect / Outsourcing / Setup Cost、Standard / Average / True Cost(材料/人工/間接/委外/整備成本、標準/平均/真實成本) 成本類欄位;真實成本受權限遮罩

Other(其他)分頁

欄位 必填 說明
Size / Characteristics / Test Condition / Notes(尺寸/特性/測試條件/備註) 文字描述
Marketplace Product Feature 01~10 電商商品特徵欄位
Web Always Available / Display Order / Is Display / Is Hot Item … 電商上架屬性

Self-Defined(自訂分類)明細

欄位 可編輯 說明
分類(畫面 Item) 來自群組設定,空白列存檔時跳過
分類內容(畫面 ItemContent) 下拉自該分類的可選內容(ContentList),預設帶第一個值

欄位連動與附加功能

這一節整理 Prime 版實際會「自動發生」的行為,來源為 Invent_primeViewModelInvent_primeSave 與 Source Twork_bom_vw_inventSourceTwork_bom_vw_itemspecSource

存檔前自動補算(HandleDataBeforeEndEdit

儲存 時,Invent_primeSave 在寫入前會對主檔依序做四件事:

  1. 停用日期(SetDisabledDate:當你把停用設為 Y 而停用日期還是空的,系統自動把停用日期填成今天;當你把停用改回 N,停用日期自動清空。
  2. 品名補預設(SetSKUDescription:當品名留白,系統自動以品號當品名,避免品名空白。
  3. 包裝量重算(SetPackageQuantity:以最小包裝數、小包裝件數、內箱箱數重算內箱包裝數與整箱包裝量(公式見下)。
  4. 重量重算(SetWeight:以單重、整箱包裝量、箱重重算淨重與毛重。

包裝數量連動

品號主檔 Source 上備有 最小包裝數Binding小包裝件數Binding內箱箱數Binding 三個連動屬性,其 setter 會在被寫入時即時呼叫 SetPackageQuantity 重算:

  • 內箱包裝數 = 最小包裝數 × 小包裝件數
  • 包裝量_箱 = 內箱包裝數 × 內箱箱數
  • 重算包裝量後,會接著呼叫 SetWeight 重算重量(見下)。

存檔時 HandleDataBeforeEndEdit 也一定會再算一次 SetPackageQuantity

目前版型未綁到這些連動屬性

現行 Invent_prime.xaml 的包裝欄位綁的是 QuantityOfInnerBoxBindingQuantityPerInnerBox英文 binding 路徑,並未綁到上述中文連動屬性(最小包裝數Binding…),因此編輯畫面欄位不會即時觸發重算;只有存檔時的 SetPackageQuantity 會作用。版型完成中文化後才會恢復即時連動。

重量連動

Source 上的 單重Binding箱重Binding 連動屬性,其 setter 會即時呼叫 SetWeight(包裝量被重算時也會連帶呼叫):

  • 淨重 = 單重 × 包裝量_箱
  • 毛重 = 淨重 + 箱重

存檔時 HandleDataBeforeEndEdit 也會再算一次 SetWeight。與包裝連動相同,現行 XAML 的重量欄位綁的是英文路徑(NetWeightGrossWeight),即時連動同樣受英文 binding 問題影響。

材積連動

Source 上的 箱高Binding箱長Binding箱寬Binding 連動屬性,其 setter 會即時呼叫 CalculateVolume

  • 材積(CBM) = 箱高 × 箱長 × 箱寬 × 0.0000353,四捨五入到小數 2 位(RoundAwayFromZero)。

同樣地,現行 XAML 材積相關欄位綁的是英文路徑(Volume 等),即時連動受英文 binding 問題影響。

主要供應廠商判定(GetVendorCode

採購分頁登錄的三家廠商(廠商代號 1~3)與其供應比例,提供品號主檔 Source 一個 GetVendorCode 方法:比例最高的那家即為主要供應廠商(並列時依序號 1→2→3 取先比到的)。此方法不在 Prime 表單內觸發,而是供下游程式(例如進貨相關的領/撥單 Ngtrna)在沒有指定廠商時,據以帶出該品號的主要供應商。

自訂分類(Self-Defined)

  • SettingSelfDefinedExecute:依目前品號的群組代號呼叫群組查詢(GrpmBll.GetSelfDefined),把該群組定義的每個自訂分類重建成明細列,並把各分類的第一個可選內容當預設值。執行前會先把現有明細列全部標記刪除(增刪修=D),等於「以群組設定為準重新展開」。此鈕只在非瀏覽狀態(新增/修改)且已有主檔資料時才動作。
  • 進入修改狀態時AdeViewModel.Status 變為 Edit 時,系統依群組代號重新載入每列的可選內容(ContentList),確保既有明細的下拉選項正確。

切換品號時的連動(AfterMoverRecord

每次移動到另一筆品號,系統會:

  1. 若目前停在 Statistics 分頁,重新查詢該品號的統計資料(InventStatisticsViewModel.Query)。
  2. 把目前品號帶入六個查詢分頁的起訖條件(BeginningSKUEndingSKU),使 Quotation/Sales Order/Shipping/Vendor Quote/Purchasing/Receiving 都對齊這個品號。

Prime 版的差異:不取作業者姓名

庫存主檔在 AfterMoverRecord 還會呼叫 GetDescription 帶出 BOM/圖製作者姓名,Prime 版沒有這一步。

編輯狀態下停用查詢分頁

當主檔進入新增/修改狀態(AdeViewModel.StatusNormal)時,六個查詢分頁的 ViewModel 會被設為 IsEnabledByAdeStatus = false(停用);回到瀏覽狀態才重新開放。避免在編輯中誤觸右側查詢。

切換分頁時自動查詢

切換右側分頁(TabSelectedItem)時,若該分頁的 ViewModel 實作 ITabQuery,系統會自動執行一次 Query() 帶出該品號的資料;同時依分頁是否為品號主檔調整主鍵欄(Pkid)的顯示。

進入瀏覽時的真實成本遮罩(AfterBrowse

載入瀏覽清單時,若使用者的權限備註未包含「真實成本」欄名,系統會把瀏覽清單的真實成本欄整欄歸零顯示(UpdateFieldToZero)——避免無權者在清單上看到真實成本數字。

查詢分頁(右側六頁)

Quotation/Sales Order/Shipping/Vendor Quote/Purchasing/Receiving 六個分頁是內嵌的查詢視窗,分別轉接到 CUPDMAORMAST/出貨/SPPDTPURCH/進貨 等程式,以目前品號為條件查出相關單據;它們在 VM 建構時就把「結束客戶/廠商代號」帶到該庫最大值(GetMaxCustomerGetMaxVendor),切換品號時再對齊起訖 SKU。

Prime 版尚未提供的庫存主檔功能

相較於 品號基本資料(庫存主檔),Prime 版(Invent_primeViewModel沒有實作 IAdd(新增預設值 AfterAddNew)、IOther1IOther2(擴充功能鈕 ExtendedFunction1/2,含特殊編輯 SpecialEdit),也沒有「派工(WKPAPER)」查詢分頁。需要這些行為時請改用庫存主檔。

常見問題

Basic/Processing 等分頁的欄位、Self-Defined 明細格全部空白、打不進去?

這是目前版型的已知狀態:主檔分頁的欄位是英文 binding(SKUSKUDescription…),Self-Defined 明細格也是英文 binding(ItemItemContent),對不上已中文化的資料來源屬性(品號、品名、分類、分類內容…),因此不顯示也不寫入。請改用 品號基本資料(庫存主檔) 維護品號。詳見頁首的 beta 警告。

看不到 Price(價格)分頁?

Price 分頁受「檢視價格權限」控管。VM 啟動時若 GetViewPricePermission 回 false,分頁維持隱藏(PriceTabVisibility = Collapsed)。請洽系統管理員為你開啟該品號程式的檢視價格權限。

Setting 卻展不出任何自訂分類?

Self-Defined 清單來自品號的群組代號所對應的群組設定。請確認:① 該品號有設群組代號;② 該群組在 群組資料維護(INVGRPM) 有定義自訂分類項目。另外 Setting 只在新增/修改狀態下、且已有主檔資料時才會動作,瀏覽狀態按了沒反應是正常的。

改了包裝數或單重,淨重/毛重/材積沒跟著變?

重算掛在 Source 的 *Binding 連動屬性上(最小包裝數Binding單重Binding箱高Binding…)。重點是現行 Invent_prime.xaml 綁的是英文 binding 路徑(QuantityOfInnerBoxBindingNetWeightVolume…),並未綁到這些中文連動屬性,所以在 Prime 版的畫面上編輯時不會即時連動;不過存檔時 HandleDataBeforeEndEdit 仍會呼叫 SetPackageQuantitySetWeight 各算一次(材積 CalculateVolume 則只有連動屬性會觸發)。若需要即時連動,請改用 品號基本資料(庫存主檔)

停用日期為什麼自己被填上/被清掉?

這是設計行為(SetDisabledDate):把停用設為 Y 且停用日期空白時,存檔自動帶今天;把停用改回 N 時自動清空停用日期。

Prime 版和庫存主檔是兩筆不同的品號資料嗎?

不是。兩支共用同一張品號主檔(Twork_bom_vw_inventSource),資料完全同源,只是畫面版型不同。同一個品號不論從哪一支查詢都是同一筆。

新增品號時單位/品別/來源別/ABC 沒有預設值?

Prime 版沒有庫存主檔的 AfterAddNew,新增時不會自動帶這些預設值,需自行輸入或改用庫存主檔新增。

相關功能


需補截圖清單

以下截圖待版型完成中文化、runtime 驗收後補拍(放 docs/D-Bom/images/):

  1. invent_prime-step1.png — 六個主檔分頁全貌(Basic / Processing / Purchase / Price / Other / Statistics)
  2. invent_prime-step2.png — Basic 分頁主要欄位與 Self-Defined(含 Setting 鈕)
  3. invent_prime-step3.png — 右側查詢分頁(以 Purchasing 或 Sales Order 為例)