程式資訊
- 程式 ID:
DEPT - 所屬子系統:B.基本資料
- 狀態:stable
部門資料¶
功能簡介¶
「部門資料」維護公司的部門主檔,是整套 ERP 用來標示「哪個部門」的基礎資料。每筆部門包含部門代號、簡稱、名稱、負責主管、職稱、要員人數、生產順序,並可在明細逐列登記該部門的要員(成員)清單。
部門代號之後會被銷售、採購、生產、人事、會計各模組大量引用——例如業務員所屬部門、製令的生產部門、傳票的成本中心等——因此本表單通常由系統管理員或人資在系統啟用初期就先建好,後續才在各單據選用。屬於 B.基礎資料 模組的設定主檔,採「主檔+要員明細」的雙層結構。
前置需求¶
- 權限:B.基礎資料 →
B-020 部門資料的瀏覽/新增/修改/刪除/列印權限。 - 先維護的關聯資料:本表單的「主管」與「要員」欄位是從其他主檔挑選回填,建議先備妥下列資料——
| 資料 | 影響什麼 |
|---|---|
系統使用者(SECRET,使用者代號/使用者姓名) |
負責主管 搜尋方塊的查詢來源(放大鏡列出使用者代號/使用者姓名供挑選) |
員工基本資料(PERDATA,員工編號/姓名/Email) |
明細 員工編號 欄的搜尋來源;切換部門時也由此重算 主管姓名 與每位要員的 Email |
備註
部門代號一旦被其他單據引用就不應再隨意更改或刪除,否則會造成既有單據的部門失去對照。建議停用而非刪除已被使用的部門。
操作步驟¶
新增部門¶
- 開啟「部門資料」,按工具列的
新增。 - 在上方主檔區輸入:
- 部門代號(主鍵,必填)。
- 部門簡稱、部門名稱。
- 在 負責主管 搜尋方塊輸入或用放大鏡查詢使用者代號,挑選後右側唯讀欄會顯示對應姓名(詳見欄位連動與附加功能)。
- 視需要填 職稱、要員人數、生產順序。
- 到下方明細格線逐列加入要員(見新增要員明細)。
- 按工具列的
儲存。
新增要員明細¶
- 在下方格線新增一列,系統會自動把 人員別 帶為「目前明細最大人員別 + 1」(第一列從程式預設值起算)。
- 在 員工編號 欄輸入或查詢員工,選定後系統自動帶出該員工的 姓名(唯讀)與 Email(唯讀)。
- 視需要填 備註。
- 若某列的員工編號留空,儲存時該空列會被自動略過(不會寫入)。
修改/刪除¶
- 用工具列翻頁或查詢定位到要修改的部門,直接修改欄位後
儲存。 - 切換部門時,系統會重新帶出 主管姓名 與每位要員的 Email(見欄位連動與附加功能)。
- 要刪除整筆部門,定位後按
刪除;要刪除單一要員,刪除明細格線該列即可。
列印¶
- 按工具列的
列印。 - 從報表清單擇一:
B020-1 部門表:列出部門主檔資料。B020-2 部門要員表:連同各部門的要員明細一併列印。
欄位說明¶
主檔欄位¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 部門代號 | ✔ | 主鍵,最長 10 碼;存檔後即為各單據引用的部門代號 |
| 部門簡稱 | — | 最長 20 字;單據與清單上多以簡稱顯示 |
| 部門名稱 | — | 最長 80 字,部門全名 |
| 負責主管 | — | 使用者代號(最長 20 字);以 UserSearch 搜尋方塊挑選(查詢 SECRET 使用者主檔 secret1) |
| 主管姓名 | — | 唯讀,不儲存於主檔(NotMapped);切換部門時由 PERDATA 員工資料依負責主管代號即時帶出 |
| 職稱 | — | 主管職稱,最長 20 字 |
| 要員人數 | — | 數值,預設 0(PlaceEnum=Zero);目前為人工輸入欄位,未與明細列數自動連動 |
| 生產順序 | — | 1 碼;供排產/報表排序用 |
資料表中的其他欄位
部門資料表(view)底層尚含 製程別、隸屬倉庫、可用倉庫、在製倉庫、出貨倉庫、外調倉庫、虛擬儲位 等欄位,供倉儲/生產模組使用,但未呈現在本表單畫面上,本頁不提供編輯。若需設定請於對應模組維護。
要員明細欄位¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 序號 | — | 明細列序號,最長 6 碼 |
| 人員別 | — | 兩位數值(d2 遮罩);新增列時自動帶為「現有最大值 + 1」 |
| 員工編號 | — | 以 TsEmployeeSeekGridViewColumn(員工搜尋欄)挑選;留空的列儲存時自動略過 |
| 姓名 | — | 唯讀,由員工編號自動帶出 |
| — | 唯讀,由員工編號自動帶出 | |
| 備註 | — | 最長 80 字 |
欄位連動與附加功能¶
這一節說明「輸入某欄位/按某動作後系統會做什麼」,全部來自實際程式行為。
負責主管 → 主管姓名¶
主管姓名來自兩條不同路徑,請特別留意它們查的不是同一張表:
- 挑選當下(搜尋方塊):負責主管 搜尋方塊套用
UserSearch樣式,向SECRET(使用者主檔secret1)以使用者代號比對、回帶使用者姓名,右側唯讀欄即顯示挑到的人名。 - 翻頁/查詢切換部門時:系統改依該部門的負責主管代號重新計算 主管姓名(
AfterMoverRecord呼叫DescriptionHelper.GetEmployeeName),而此函式查的是PERDATA員工主檔(perdata)。因此主管姓名不會被存進部門主檔(標記NotMapped),永遠以目前的員工資料即時顯示;若負責主管代號在員工資料中查無對應,重新載入後姓名會留空。
員工編號 → 姓名/Email(要員明細)¶
- 員工編號 欄是員工搜尋欄(
TsEmployeeSeekGridViewColumn),挑選員工時由搜尋欄本身把 姓名 帶到唯讀欄(DescriptionBindingPath="姓名")。 - 同一時間,員工編號的 setter(
EmployeeCodeBinding)會呼叫DescriptionHelper.GetEmail向PERDATA(員工主檔perdata)取回該員工的 Email 填入唯讀欄。 - 當你切換到另一筆部門時,系統會逐列重新帶出每位要員的 Email(
AfterMoverRecord對每列呼叫GetEmail重算)。
新增明細列 → 人員別自動編號¶
- 當你在明細格線新增一列,系統會找出目前明細中最大的 人員別 值,把新列的人員別設為「最大值 + 1」(
SetNewData)。第一列沒有可參考的舊值時,採欄位預設值。 - 此自動編號只在新增列當下發生一次,之後仍可手動調整。
儲存時的處理¶
- 人員別不可重複:儲存前系統會檢查所有未刪除的要員明細,若有兩列以上的 人員別 相同,會以「資料重複」訊息擋下、不允許儲存(
DeptSave.AllowSave)。請確保每位要員的人員別唯一。 - 明細列若 員工編號為空,儲存時該列會被視為無效列自動略過、不寫入資料庫(
NeedDeleteFunction以員工編號是否為空白判定)。 - 主管姓名、Email 標記為
NotMapped/不儲存,只作顯示用;它們不會被寫進資料表,而是每次載入時由員工資料即時計算。
列印報表¶
- 本表單實作
IPrintSource,提供兩張報表:B020-1(內部名Dept)— 部門表,抬頭「部門表」。B020-2(內部名Dept1)— 部門要員表,抬頭「部門要員表」。
- 兩張報表皆為 A4、台灣(
TW)版面,列印資料分別來自rpt_b020_dept_report1、rpt_b020_dept_report2兩個本機資料來源。
常見問題¶
輸入了負責主管,但翻頁回來「主管姓名」變空白?
切換部門後重新帶出的主管姓名查的是 PERDATA 員工主檔(不是登入用的使用者主檔)。若負責主管填的代號在員工資料中查無對應,重新載入後姓名就會留空。請確認該代號同時存在於員工資料中,或改填員工資料裡有的代號。
明細選了員工,「Email」卻是空的?
Email 取自 PERDATA 該員工的 Email 欄位。若該員工在人員主檔中沒有填 Email,這裡自然就空白;請先到人員資料補上 Email。
明細加了一列卻沒存進去?
只有員工編號為空的明細列會在儲存時被自動略過。若你想保留一列備註但沒選員工,系統會把它當成空列丟棄——請先選定員工編號再儲存。
「要員人數」會不會跟著我加的明細自動算?
不會。目前 要員人數 是獨立的人工輸入欄位,與明細實際列數沒有自動連動,需要時請自行維護。
儲存時出現「資料重複」存不了?
要員明細的 人員別 不可重複。系統在儲存前會檢查所有未刪除的要員列,只要有兩列的人員別相同就會擋下並提示資料重複。請把重複的人員別改成不同值(新增列時系統預設帶「現有最大值+1」,通常不會撞號,但手動改過就可能重複)。
部門代號可以改嗎?刪除部門會怎樣?
部門代號是主鍵,且會被各模組單據引用。已被單據使用的部門若更改代號或刪除,會造成既有單據的部門對照失效。建議只在尚未被引用時調整,已上線的部門以停用取代刪除。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/B-BasicData/images/):
images/dept-step1.png— 部門資料主畫面全貌(上方主檔區+下方要員明細)images/dept-step2.png— 負責主管搜尋方塊與自動帶出的主管姓名images/dept-step3.png— 要員明細格線(員工編號搜尋、自動帶出姓名/Email)images/dept-step4.png— 列印報表選單(B020-1 部門表/B020-2 部門要員表)