ทะเบียนหน้าจอและโครงเมนู (Screen registry & smlMenu)
ทุกเมนูมี "ชื่อเมนู" (menu key เช่น menu_ic_item_detail) และ screenRegistry.tsx ผูกชื่อนั้นกับ React component ที่เปิดเป็นแท็บ
เมนูมาจาก src/config/smlMenu.json (ลอกโครงจาก SMLERP เดิม) ส่วนหน้าจอที่ไม่ได้ลงทะเบียนมือจะถูกสร้างอัตโนมัติจากกฎ buildDynamicScreen
ทำงานอย่างไร
รูปแบบ ScreenDef = { title, code?, component, mode?: "tab"|"popup" } (screenRegistry.tsx:184-189). ผลสุดท้ายคือ export const SCREENS: Record<string, ScreenDef> (1423) และ hasScreen(menuName) (1425) ที่ TabWorkspace ใช้ (พื้นที่ทำงานแบบแท็บ MDI และสิทธิ์จอ (TabWorkspace)).
ลำดับการสร้าง SCREENS (ไฟล์ 1,427 บรรทัด)
BASE_SCREENSลงทะเบียนมือ 84 รายการ (เริ่มบรรทัด 191) - ตารางด้านล่าง.- ลูป
IC_MASTER_CONFIGS->createMasterScreen(บรรทัด 1012-1023) ดู รายการจอข้อมูลหลักแบบตารางเดียว (IC_MASTER_CONFIGS). - ลูป
TRANS_MENU_MAPข้ามชื่อในNON_TRANS_MENUS->createTransScreen(1024-1056) ดู จอเอกสารธุรกรรมแบบเดียวกันทุกจอ (UniversalTransScreen). - ซิงก์
codeและtitleของทุกจอให้ตรงsmlMenuด้วยgetMenuTextByName(1057-1061). registerAllMenus(1382) เดินทุกใบของsmlMenu+rawSmlMenu+homeShortcutGroupsแล้วเรียกbuildDynamicScreenกับใบที่ยังไม่มีจอ (เรียกที่ 1421).
ตัวสร้างจอ (helper): createProcessScreen (82), createReportDesignerScreen (101), createPosSetupScreen (133), createMasterScreen (152; เลือก StandardMasterScreen หรือ MasterDetailScreen), createTransScreen (167), createReportScreen (173).
buildDynamicScreen (1067-1380) - จัดชนิดใบเมนูที่เหลือ:
| เงื่อนไข | เป็นจอ |
|---|---|
ชื่อใน TRANS_MENU_MAP |
UniversalTransScreen |
| เมนูประมวลผล/system tool | SystemProcessWorkbenchScreen (จอประมวลผลระบบและ POS (System Process Workbench & POS Setup)) |
query / database_struct / verify_database |
โหมด sql_utility ของ UniversalReportScreen (ใช้ createReportScreen ที่ 1273) |
check_price, barcode_print |
โหมด check_price / barcode_print (1308 / 1322) |
ที่เหลือ = รายงาน เลือก WorkbenchMode จากหมวดบนสุด (topBranchName) |
menu_po -> report_po; menu_so/menu_so_pos -> report_so; menu_ap -> report_ap; menu_ar -> report_ar; menu_cash_and_bank -> report_chq (ชื่อมี chq/cheque/credit_card) หรือ report_cb; menu_asset -> report_fa; menu_general_ledger_main -> report_gl; menu_wh/menu_singha_warehouse -> report_wh_pp; menu_setup -> system_tool; อื่นๆ -> report_ic (ที่ 1371) |
| รายละเอียดโหมดรายงานดู จอรายงานกลาง (Universal Report Screen). |
ตัวอย่างจอที่ลงทะเบียนมือ (BASE_SCREENS) - บรรทัดคือจุดเริ่มรายการใน screenRegistry.tsx
| กลุ่ม | menu key -> ชื่อไทย | component (ใต้ account/) |
|---|---|---|
| ออกแบบรายงาน/แบบฟอร์ม | fast_report_designer ออกแบบรายงาน (192); menu_form_edit สร้าง/แก้ไขแบบฟอร์ม (203); menu_gl_report_design ออกแบบงบการเงิน (214); menu_import_report, menu_import_report_branch, menu_import_formdesign (225-249) |
report/FastReportDesignerScreen (พิมพ์รายงาน แบบฟอร์มเอกสาร และตัวออกแบบ (Report Print & Designers)) |
| ตั้งค่าระบบ | menu_company_profile กำหนดรายละเอียดบริษัท (261); menu_option กำหนดข้อเลือกพิเศษ (267) |
config/CompanyProfileForm, config/OptionsForm (เครื่องฟอร์มแบบ schema (SchemaForm, FieldDef, useRecordForm) และจอตั้งค่าระบบ) |
| ผู้ดูแล | menu_mcp_tokens; menu_change_password, menu_saletools_change_password |
admin/screens/McpTokenScreen, ChangePasswordScreen (หน้าจอผู้ดูแลระบบส่วนกลาง (Admin Console)) |
| พนักงาน/เอกสาร/หน่วย/คลัง | menu_setup_staff, menu_setup_doc_format, menu_setup_ic_unit, menu_setup_ic_wh |
master/EmployeeScreen, DocFormatScreen, UnitScreen, WarehouseScreen |
| ลูกหนี้/เจ้าหนี้ | menu_ar_detail, menu_ar_detail_2, menu_ar_dealer; menu_ap_detail, menu_ap_detail_2 |
master/CustomerScreen, CustomerDetailScreen, DealerScreen, SupplierScreen, SupplierDetailScreen |
| สินค้า | menu_ic_item_detail/menu_ic_inventory ข้อมูลสินค้า; menu_ic_item_detail_2(+_barcode); menu_ic_item_detail_barcode; menu_ic_item_for_sync; menu_ic_modify_price |
master/ItemScreen, ItemDetail2Screen, ItemBarcodeScreen, ModifyPriceScreen |
| สินค้า (เสริม) | menu_ic_description(+_fast), menu_ic_item_level, menu_ic_multi_item_level, check_price ตรวจสอบราคาสินค้า |
master/IcExtraScreens |
| บาร์โค้ด | menu_ic_item_barcode, menu_ic_item_add_barcode_fast, menu_ic_item_barcode_checker_ean13; menu_ic_item_barcode_laser_print; menu_ic_item_barcode_discount, menu_ic_item_multibarcode_discount; menu_ic_item_barcode_checker |
master/BarcodeScreens, BarcodePrintScreen, BarcodeDiscountScreens, StockCheckScreens |
| สต็อก | menu_ic_serialnumber_checker; menu_ic_serial_analyze; menu_ic_stk_adjust_auto(_2), menu_ic_stk_adjust_lot_auto, menu_ic_adjust_stock_lot_amount; menu_ic_hidden_cost_process, menu_ic_weight_cost; menu_ic_stk_balance |
master/SerialStockCountScreen, StockCheckScreens, LotAdjustScreens, HiddenCostScreen; transaction/StockBeginningBalanceScreen |
| รูปภาพ | menu_ic_item_picture, menu_ic_item_barcode_picture, menu_setup_staff_pic, menu_asset_picture, menu_import_ic_picture |
master/ItemPictureScreen (variant item/barcode/staff/asset) |
| รูปเอกสาร | menu_ic_document_picture, menu_po_doc_picture, menu_so_doc_picture, menu_ap_doc_picture, menu_ar_doc_picture, menu_cb_doc_picture, menu_gl_picture, menu_gl_doc_picture |
master/DocumentPictureScreen |
| ป้าย/ข้อมูลซื้อขาย | menu_ap_transport_label_print, menu_ar_transport_label_print; menu_po_buy_information, menu_so_sale_information |
master/TransportLabelPrintScreen; report/BuySaleInformationScreen |
| จังหวัด/อำเภอ/ตำบล | menu_setup_province, _province_auto, menu_province_auto, menu_setup_ampher, menu_setup_tambon |
master/ProvinceTreeScreen |
| คลัง/ที่เก็บ | menu_ic_warehouse_locaton, ic_warehouse_and_location_group |
createMasterScreen |
| POS | menu_config_pos_startup/_machine/_screen, menu_pos_point_rate, menu_edc_config, menu_usb_qr_display_config, menu_pos_sound_download_install, menu_coupon_list, menu_coupon_generate, menu_save_pos_receive_money, menu_save_send_money_pos, pos_invoice_list_pos, pos_full_invoide_list_pos, pos_invoice_cancel_pos |
pos/PosSetupAndControlScreen (จอประมวลผลระบบและ POS (System Process Workbench & POS Setup)) |
| ประมวลผล | menu_ic_change_code เปลี่ยนรหัสสินค้า (mode change_code); menu_log_view ตรวจสอบประวัติการทำงาน (mode audit_log) |
process/SystemProcessWorkbenchScreen |
| อื่นๆ | menu_report_employee_group (รายงาน report_ic); ขายสินทรัพย์ |
AssetSaleScreen (transaction/) |
โครงเมนู smlMenu.json: 9 หมวดบนสุด (จำนวนใบ): menu_setup 130, menu_ic 136, menu_po 77, menu_so 80, menu_ap 50, menu_ar 50, menu_cash_and_bank 114, menu_asset 12, menu_general_ledger_main 61. แต่ละ node มี name, text, icon, tag, owner, csharpModule, projects, children + code, legacyCode, section, adminOnly (smlMenu.ts:12-34).
smlMenu.tsกรองตามรหัสรุ่นMENU_VERSION_TAG = "&13&"(บรรทัด 36;removeByVersion44 เก็บโหนดที่ไม่มี tag,&hide&หรือ tag ตรงรุ่น) แล้วassignMenuCodesใส่รหัสลำดับ (เช่น 1.1.1) ให้ค้นย้อนได้.- ซ่อน
menu_singha_warehouseและmenu_so_posทั้งกิ่งตอนกรองรุ่น (smlMenu.ts:58,146).
รุ่นผลิตภัณฑ์ (edition): SmlEdition = "starter"|"account"|"pro" (editionConfig.ts:13). getSmlMenuByEdition(edition, businessTypes?) (smlMenu.ts:441) คืนเมนูเต็มสำหรับ pro; starter ตัด GL/สินทรัพย์ตามชุด STARTER_EXCLUDED_MENU_KEYS (editionConfig.ts:194); PRO_ONLY_MENU_KEYS (131) เปิดเฉพาะ pro; ประเภทธุรกิจหลายแบบปลดล็อกเมนูเพิ่มด้วย getUnlockedMenuKeysForBusinessTypes.
TabWorkspaceสร้างeditionAllowedMenuSetจากใบของเมนูตามรุ่น และสำหรับproเพิ่มทุก key ในSCREENS(TabWorkspace.tsx:184-193).
เมนูเฉพาะผู้ดูแล: ADMIN_ONLY_MENU_SET (smlMenu.ts:277) เช่น menu_company_profile, menu_option, menu_setup_branch, menu_setup_staff, menu_setup_user_group, menu_setup_doc_format, menu_config_pos_*, menu_close_account_process, menu_gl_journal_pass_cancel; isAdminOnlyMenu(name) (354) ตรวจชุดนี้หรือ node.adminOnly.
ข้อควรระวัง
- เพิ่มเมนูใหม่: ถ้าเป็นเอกสารต้องเพิ่มใน
TRANS_MENU_MAP; ถ้าเป็นข้อมูลหลักเพิ่มในIC_MASTER_CONFIGS; ไม่เช่นนั้นจะตกเป็นจอรายงานตามกฎtopBranchName. - ชื่อไทยของจอมาจาก
smlMenu.json(getMenuTextByName) ทับtitleที่ตั้งในทะเบียนเสมอ.
ที่มาในโค้ด
frontend/account/tabs/screenRegistry.tsx:82-190- ตัวสร้างจอและScreenDeffrontend/account/tabs/screenRegistry.tsx:191-1010-BASE_SCREENSลงมือfrontend/account/tabs/screenRegistry.tsx:1012-1061- ลงทะเบียน master / trans และซิงก์ชื่อfrontend/account/tabs/screenRegistry.tsx:1067-1423-buildDynamicScreen,registerAllMenus,SCREENSfrontend/src/config/smlMenu.ts:12-38,277-360,435-460- โครงเมนู, adminOnly, กรองตามรุ่นfrontend/src/config/editionConfig.ts:13,131,194- รุ่นผลิตภัณฑ์frontend/account/tabs/TabWorkspace.tsx:184-193- เมนูที่อนุญาตตามรุ่น
ดูเพิ่ม
ภาพรวม Frontend ของ SML Ai Account (Frontend overview) · พื้นที่ทำงานแบบแท็บ MDI และสิทธิ์จอ (TabWorkspace) · รายการจอข้อมูลหลักแบบตารางเดียว (IC_MASTER_CONFIGS) · จอเอกสารธุรกรรมแบบเดียวกันทุกจอ (UniversalTransScreen) · จอรายงานกลาง (Universal Report Screen) · จอประมวลผลระบบและ POS (System Process Workbench & POS Setup) · หน้าจอผู้ดูแลระบบส่วนกลาง (Admin Console)