สมอง SML

คลังความรู้ / หน้าจอทีละจอ

#screens#master

กำหนดรูปแบบเลขที่เอกสาร (เมนู 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#### (รหัส+ปี+เดือน+เลขรัน) ไม่ใช่ต้องพิมพ์ @ ก่อนทุกตัว

ที่มาในโค้ด