กำหนดรูปแบบเลขที่เอกสาร (เมนู 1012)
จอที่ผู้ใช้ตั้ง "ชนิดเอกสาร" แต่ละแบบ: รหัสรูปแบบ, หน้าจอที่ใช้, แพตเทิร์นเลขที่รัน, แบบฟอร์มพิมพ์, สมุดรายวัน GL, กฎลงบัญชีอัตโนมัติ และ การส่ง e-Tax INET รวมในจอเดียว (ตาราง erp_doc_format + ลูก 2 ตาราง) ทุกเอกสารซื้อ-ขาย-คลัง-บัญชีอ้างรหัสรูปแบบนี้ตอนบันทึก (ic_trans.doc_format_code) ตารางและวิธีรันเลขดู erp_doc_format — รูปแบบ/ชนิดเอกสารและเลขที่รัน, erp_doc_format_gl — เทมเพลตลงบัญชี GL ต่อรูปแบบเอกสาร และ สถานะต่อเนื่องของเอกสาร กราฟโยงเอกสาร และเลขที่เอกสารถัดไป (Doc flow & numbering); ตัวลงบัญชีที่อ่านกฎ GL ไปใช้ดู เครื่องมือลงบัญชีตามรูปแบบ GL (GL Template Engine)
วิธีเปิด
เมนูตั้งค่า 1012 "กำหนดรูปแบบเลขที่เอกสาร" (menu_setup_doc_format, screenRegistry.tsx:294) จอที่ให้เลือก "รูปแบบเอกสาร" ตอนเพิ่มใหม่ (เช่นจอ 2050 เลือกรูปแบบประเภท AFC ดู ประมวลผลเฉลี่ยต้นทุนแฝง และต้นทุนนำเข้าสินค้าจากต่างประเทศ (HiddenCostScreen)) อ่านรายการจากตารางนี้ กลไกเมนูดู ทะเบียนหน้าจอและโครงเมนู (Screen registry & smlMenu)
โครงจอ
- ซ้าย: รายการรูปแบบ (รหัส, รหัสหน้าจอ, ชื่อ, รูปแบบ) จาก
erp_doc_formatเรียงรหัส ค้นจากรหัส/รหัสหน้าจอ/ชื่อ 1/ชื่อ 2/รูปแบบ ดึงสูงสุด 500 แถว (:278-287) ปุ่มคัดลอกอยู่ในแถบเครื่องมือรายการ (onCopy={startCopy},:953) กลไกรายการดู รายการข้อมูล ค้นหา lookup และ dialog กลาง (SmlDataList / SmlLookupModal / SmlDialog) - ขวา: การ์ดหัว "รายละเอียดรูปแบบเอกสาร" + แถบ "ข้ามไปยังส่วน" 3 แท็บ: ส่วนที่ 2 GL, ส่วนที่ 3 e-Tax INET, ส่วนที่ 4 Help (
:1616-1622) - ปุ่ม: เพิ่มใหม่, แก้ไข, ลบ, ปิดหน้าจอ (โหมดดู); บันทึก, ปิดหน้าจอ (โหมดแก้ = ยกเลิกการแก้) ตามสิทธิ์ เพิ่ม/แก้/ลบ ดู การตรวจสิทธิ์เมนูของ route process (Process route rights)
- คีย์ลัด Ctrl+S บันทึก, Esc ยกเลิกการแก้ไข (
:886-899; คอมเมนต์ในโค้ดเขียน "F12 / Esc" แต่ F12 ไม่ได้ผูก) - แถบสีเทาบอกจำนวนเปลี่ยนแปลง (
dirtyCount) เปลี่ยนรายการขณะมีการแก้ไขค้าง ระบบถาม "ยังไม่ได้บันทึกข้อมูล... ละทิ้งการแก้ไข / แก้ไขต่อ"
ช่องหัวเอกสาร
| ช่อง | ข้อกำหนด |
|---|---|
| รหัสรูปแบบเอกสาร | บังคับ ตัวพิมพ์ใหญ่อัตโนมัติ แก้ได้เฉพาะตอนเพิ่มใหม่ (disabled เมื่อเปิดเอกสารเดิม) ตรวจรหัสซ้ำก่อนบันทึก |
| รหัสหน้าจอ (Screen Code) | บังคับ พิมพ์เองหรือเลือกจากรายการ 36 รหัสมาตรฐาน (IB, IC, IF, IO, IR, IM, CO, IA, IS, PR, PO, PU, PT, PA, SO, SR, SS, SI, ST, SA, SIP, JV, DA-DC, EA-EC, OI, EPO, DM, WM, TM, CHB, CPB) แบ่งตามระบบ สต๊อก/ซื้อ/ขาย/บัญชี/เจ้าหนี้/ลูกหนี้/เงินสด-ธนาคาร (STANDARD_SCREEN_CODES, :98-137) พิมพ์รหัสอื่นนอกรายการก็ได้ (ใช้ datalist ไม่ได้บังคับ) |
| ชื่อรูปแบบเอกสาร (ไทย) | บังคับ |
| ชื่อรูปแบบเอกสาร (อังกฤษ) | ไม่บังคับ |
| รูปแบบเอกสาร (Format) | ค่าเริ่มต้น @YYMM#### ถ้าปล่อยว่างตอนบันทึกระบบใส่ @YYMM#### ให้ |
| รูปแบบใบกำกับภาษี (Tax Format) | ไม่บังคับ |
| การรันเลขที่เอกสาร | ต่อเนื่อง (ค่าเริ่มต้น) / รายปี / รายเดือน / รายวัน |
| รหัสแบบพิมพ์หลัก + รหัสแบบพิมพ์ 1-5 | พิมพ์เองหรือเลือกจากรายชื่อแบบพิมพ์สำเร็จรูป (READY_DOC_FORM_TEMPLATES ของ GlobalDocFormPrintModal) |
| สมุดรายวัน (GL Journal Book) | ช่องรหัส + ปุ่มค้นหา gl_journal_book ชื่อสมุดแสดงต่อท้าย — เห็นเฉพาะรุ่นที่มี GL |
| คำอธิบายรายวัน GL | ข้อความที่ลงสมุดรายวันอัตโนมัติ — เฉพาะรุ่นที่มี GL |
| โฟลเดอร์ Scan / Computer ID สำหรับ Scan | ข้อความ ไม่บังคับ (ไว้ผูกการสแกนเอกสาร) |
| กำหนดสาขาที่ใช้งาน + รายชื่อสาขาที่อนุญาต | ติ๊กแล้วพิมพ์รหัสสาขาคั่นด้วยจุลภาค — เห็นเฉพาะรุ่นที่มีแผนก/สาขา |
| ประเภทภาษี (VAT Type) | 0 ภาษีปกติ / 1 แยกนอก / 2 รวมใน / 3 อัตราศูนย์ |
รุ่น Starter ปิด hasGl และ hasDepartmentAndBranch (editionConfig.ts:17-21,58-60) การ์ดสมุดรายวัน คำอธิบาย GL สาขา และแท็บ GL จึงไม่โผล่ รุ่น Account/Pro เปิดครบ (:76-96)
ตัวช่วยดูรูปแบบ (Preview)
ใต้ช่อง Format มีตัวอย่างเลขที่ที่จะได้ (generateFormatPreview, :159-183) แทน YYYY/YY/MM/DD ด้วยวันที่เครื่อง และ @ ด้วยรหัสรูปแบบ แล้วนับตัว # เป็นเลขรันขึ้นต้นที่ 0001 เป็นเพียงตัวอย่างฝั่งหน้าจอ เลขจริงรันที่ Go ตามรหัสรูปแบบนี้ (ปีตามที่ตั้งไว้ใน erp_option ดู erp_doc_format — รูปแบบ/ชนิดเอกสารและเลขที่รัน)
แท็บ GL (ผูกบัญชีรายวันอัตโนมัติ)
ตารางกฎลงบัญชีของรูปแบบนี้ (ตาราง erp_doc_format_gl): ลำดับ, เลขเงื่อนไข, ชื่อเงื่อนไข, กรณี/สูตร, ผังบัญชี (เดบิต), ผังบัญชี (เครดิต), ชื่อบัญชี, คำอธิบาย
- เพิ่มแถว / ลบแถว (ลบแถวที่เลือก แล้วเลขลำดับเรียงใหม่) (
:789-815) - ปุ่มค้นหาผังบัญชีในแถว เปิดหน้าต่างค้นหา
gl_chart_of_accountเลือกด้านเดบิตแล้ว ล้างด้านเครดิตของแถวนั้น และเลือกด้านเครดิตจะล้างด้านเดบิต (หนึ่งแถวมีบัญชีได้ด้านเดียว,:2154-2171) - Get Format (ดึงรูปแบบ): ต้องเลือกรหัสหน้าจอก่อน แล้วเรียก
POST /api/process/gl/template-defaultsขอแม่แบบมาตรฐานของรหัสหน้าจอนั้น (ตรรกะเดิมจาก C#gl_doc_format) ถามว่า "ต้องการล้างของเก่าหรือไม่" — ล้างของเก่า ใช้บัญชีของแม่แบบ, ไม่ล้าง จะเก็บบัญชีเดิมที่รหัสเทียบ (code_compare) ตรงกัน (:826-884) condition_numberคือรหัสการกระทำที่ตัวลงบัญชีฝั่ง backend ใช้เลือกกฎ ไม่ใช่เลขแถว (คอมเมนต์:789-790) ดังนั้นแถวที่เพิ่มเองจะมีเลข 0 จนกว่าจะแก้
แท็บ e-Tax INET
ติ๊ก "ส่งเอกสารไปยังระบบ e-Tax Invoice / Receipt ผ่าน INET" แล้วกำหนด: ประเภทเอกสาร e-Tax (T03, T04, 388, 80, 81, 380, T01, T02), ชื่อประเภทเอกสาร, รหัสฟอร์มพิมพ์ e-Tax (ETAX_DOCUMENT_TYPES, :139-149) เก็บ 1 แถวต่อรูปแบบเอกสารที่ erp_doc_format_etax ค่าตั้งระดับบริษัทของ e-Tax (รหัสอนุญาต, API key ฯลฯ) อยู่ที่หมวด etax ของ กำหนดข้อเลือกพิเศษต่างๆ (OptionsForm)
แท็บ Help
กล่องทดลองพิมพ์รูปแบบแล้วดูตัวอย่าง ตารางสัญลักษณ์ @YY @YYYY @MM @DD #### พร้อมความหมาย และตารางรหัสหน้าจอมาตรฐาน
บันทึกและลบ
- บันทึก (
:521-712): ตรวจสิทธิ์ → รหัส → ชื่อไทย → รหัสหน้าจอ ว่างไม่ได้ (ข้อความ "กรุณาระบุ...") → ตอนเพิ่มใหม่ตรวจรหัสซ้ำ (รหัส "X" มีอยู่ในระบบแล้ว) แล้วรวมคำสั่งเป็นชุดเดียว (queryExecBatch, ทำพร้อมกันหรือล้มพร้อมกัน): INSERT หรือ UPDATE หัว → ลบ+เพิ่มerp_doc_format_etaxใหม่ทุกครั้ง → ถ้าแก้เอกสารเดิม ลบerp_doc_format_glเดิมทั้งหมดแล้วเพิ่มแถว GL ปัจจุบันใหม่ (เลขแถวเรียง 1..n) สำเร็จขึ้นบันทึกรูปแบบเอกสาร "X" เรียบร้อยแล้ว - ลบ (
:714-785): ถามยืนยัน (ลบหลายรายการได้) แล้วตรวจว่ารหัสถูกใช้ใน หัวเอกสารสินค้า/ซื้อ/ขาย (ic_trans) (doc_format_code) หรือสมุดรายวันgl_journalหรือไม่ ถ้ามีขึ้น "ห้ามลบ : รหัสรูปแบบเอกสาร [X] ถูกใช้งานใน... แล้ว" ผ่านแล้วลบ etax + GL + หัวใน batch เดียว - คัดลอก (
startCopy,:508-519): เปิดฟอร์มเพิ่มใหม่ โดยรหัสต่อท้าย_COPYและชื่อต่อท้าย " (สำเนา)" แต่แถว GL/e-Tax ที่แสดงอยู่ไม่ถูกล้าง ต้องตรวจก่อนบันทึก
ข้อควรระวัง
- ตรวจอ้างอิงตอนลบดูแค่
ic_transกับgl_journalตารางเอกสารอื่นที่ใช้ตัวรันเลขร่วมกัน (ap_ar_trans,cb_trans,as_trans,ic_hidden_cost_processตาม erp_doc_format — รูปแบบ/ชนิดเอกสารและเลขที่รัน) จอนี้ไม่ได้ตรวจ — ยังไม่ได้ตรวจว่าตารางเหล่านั้นมีคอลัมน์รหัสรูปแบบหรือไม่ - ช่อง "รหัสหน้าจอ" แก้ได้ตอนแก้เอกสารเดิม และ UPDATE เปลี่ยน
screen_codeโดยไม่ตรวจว่ามีเอกสารใช้รูปแบบนี้แล้วหรือไม่ (:618-620) - แก้กฎ GL แล้วบันทึก เป็นการลบ-สร้างใหม่ทั้งชุด แถวที่ลบตอนแก้จึงหายจริง (ไม่มีประวัติ)
- ตารางสัญลักษณ์ใน Help แสดงเป็น
@YY,@MMฯลฯ ซึ่ง@ในแพตเทิร์นแทนรหัสรูปแบบ ส่วนYY/MMเป็นปี-เดือน ดังนั้นต้องเขียนเช่น@YYMM####(รหัส+ปี+เดือน+เลขรัน) ไม่ใช่ต้องพิมพ์@ก่อนทุกตัว
ที่มาในโค้ด
frontend/account/master/DocFormatScreen.tsx:39-96ชนิดข้อมูล;:98-157รหัสหน้าจอ/e-Tax/ประเภทภาษีคงที่;:159-183preview;:278-300รายการ;:310-403โหลดหัว/GL/e-Tax;:508-519คัดลอก;:521-712บันทึก;:714-785ลบ;:789-884แถว GL และดึงรูปแบบ;:886-899คีย์ลัด;:1616-1622แถบข้าม;:2145-2171หน้าต่างค้นหาfrontend/account/tabs/screenRegistry.tsx:294;frontend/src/config/editionConfig.ts:17-96- ดูเพิ่ม: กำหนดพนักงาน (EmployeeScreen) · กำหนดข้อเลือกพิเศษต่างๆ (OptionsForm) · รายการจอข้อมูลหลักแบบตารางเดียว (IC_MASTER_CONFIGS) · สารบัญหน้าจอทั้งหมดของ SML Ai Account (ต้นไม้เมนู → หน้าจอ → โน้ต)