สมอง SML

คลังความรู้ / ตารางข้อมูล

#tables#as

หัวเอกสารสินทรัพย์ (as_trans)

หัวเอกสารของระบบสินทรัพย์ถาวร (Fixed Asset) 1 แถวต่อ 1 เอกสาร มี 2 ชนิดที่โปรแกรมนี้เขียน แยกด้วย trans_flag:

trans_flag เอกสาร ผู้เขียน
1801 โอนค่าเสื่อมราคา (ประมวลผลค่าเสื่อมราคาเป็นงวด) insertDepDoc fa_depreciation.go:964
1802 ขายสินทรัพย์ insertAssetSaleDoc fa_sale.go:513

ค่าคงที่: depTransFlag = 1801 (fa_depreciation.go:29), depSaleFlag = 1802 (fa_depreciation.go:30) ทั้งคู่ผูกกับ รหัสชนิดเอกสาร trans_flag และทิศทางสต็อก (Trans Flag Map) บรรทัดของเอกสารอยู่ที่ รายการเอกสารสินทรัพย์ (as_trans_detail) ตารางเงินตามกฎ moneyTablePattern (as_trans(_\w+)? write_policy.go:24) จึงห้ามเขียนผ่านหน้า master ทั่วไป ต้องผ่าน process เฉพาะเท่านั้น

คอลัมน์สำคัญ

คอลัมน์ร่วม (ทั้ง 1801 และ 1802)

คอลัมน์ ความหมาย ใช้ที่ไหน
guid_code GUID ของเอกสาร สร้างตอนบันทึก fa_depreciation.go:966, fa_sale.go:515
doc_no, doc_date, doc_time เลขที่/วันที่/เวลาเอกสาร ทุกที่
doc_format_code รหัสรูปแบบเอกสาร (erp_doc_format — รูปแบบ/ชนิดเอกสารและเลขที่รัน) ใช้หา gl_book และ template ลงบัญชี gl_template.go:1112
trans_flag 1801 หรือ 1802 ทุก SQL
remark หมายเหตุ ตัดที่ 500 ตัวอักษร fa_depreciation.go:972
total_amount ยอดรวม (1801 = ค่าเสื่อมรวม, 1802 = ยอดรวมหลังภาษี) fa_depreciation.go:966, fa_sale.go:515
creator_code, create_datetime, create_date_time_now ผู้บันทึกและเวลาบันทึก ทุก INSERT
branch_code สาขา ทุก INSERT
last_status 0 = ใช้งาน (ผู้อ่านรายงานกรอง COALESCE(last_status,0) = 0) report_menu_ap_ar.go:478, :555
is_cancel, is_doc_copy ธงยกเลิก / เอกสารสำเนา ใช้กรองตอนลงบัญชีด้วย template ซ้ำ gl_template.go:1112

เฉพาะ 1801 (โอนค่าเสื่อมราคา)

คอลัมน์ ความหมาย ใช้ที่ไหน
process_by วิธีประมวลผล เก็บเลขลำดับของ combobox ใน C# (0 รายวัน by_day, 1 รายเดือน by_month, 2 รายปี by_year) fa_depreciation.go:973
process_mode โหมดประมวลผล (ค่าตัวเลขตามพารามิเตอร์ mode; ความหมายแต่ละค่าไม่ชัดจากโค้ดที่อ่านที่ INSERT) fa_depreciation.go:973
from_as_code, to_as_code ช่วงรหัสสินทรัพย์ที่ประมวลผล fa_depreciation.go:974
from_as_type, to_as_type ช่วงประเภทสินทรัพย์ fa_depreciation.go:974
from_as_department, to_as_department ช่วงแผนก fa_depreciation.go:974
from_as_period, to_as_period เก็บ 0 เสมอ fa_depreciation.go:970
date_begin, date_end วันที่เริ่ม/สิ้นสุดของช่วงที่คิดค่าเสื่อม ใช้ตรวจเอกสารซ้ำช่วงเดียวกัน fa_depreciation.go:897
by_year, department_split เก็บ 0 เสมอ (ความหมายเต็มไม่ชัดจากโค้ด) fa_depreciation.go:971

เฉพาะ 1802 (ขายสินทรัพย์)

คอลัมน์ ความหมาย ใช้ที่ไหน
trans_type ประเภทรายการ = 2 (saleTransType fa_sale.go:17) fa_sale.go:515
status เก็บ 0 fa_sale.go:519
cust_code ลูกหนี้ผู้ซื้อ (ทะเบียนลูกหนี้/ลูกค้า (ar_customer)) fa_sale.go:515, docs.go:616
tax_doc_no, tax_doc_date เลขที่/วันที่ใบกำกับภาษีขาย (ตรงกับ ทะเบียนภาษีขาย (gl_journal_vat_sale)) fa_sale.go:444
doc_ref, doc_ref_date เอกสารอ้างอิง (ตัด doc_ref ที่ 25 ตัวอักษร) fa_sale.go:515
inquiry_type ประเภทการขาย รายงานค้างรับกรอง inquiry_type IN (0,2) report_menu_ap_ar.go:555
vat_type, vat_rate ประเภท/อัตราภาษี fa_sale.go:515
credit_day, credit_date เครดิตวัน/วันครบกำหนด (ว่างได้) fa_sale.go:515
total_value, total_before_vat, total_vat_value, total_after_vat, total_except_vat ยอดก่อนภาษี/ภาษี/หลังภาษี/ยกเว้น fa_sale.go:515
is_pos เก็บ 0 fa_sale.go:520

คีย์และความสัมพันธ์

ใครเขียน (writers)

  • 1801: insertDepDoc fa_depreciation.go:964-990 เขียน as_trans + as_trans_detail + gl_journal + gl_journal_detail ใน transaction เดียว (ค่าเสื่อมราคาสินทรัพย์ถาวร (Fixed Asset Depreciation))
  • 1802: insertAssetSaleDoc fa_sale.go:513-556 เขียน as_trans + as_trans_detail + gl_journal* + gl_journal_vat_sale + (ขายสด) cb_trans* + อัปเดตฟิลด์ขายใน รายละเอียดสินทรัพย์ (as_asset_detail)
  • ไม่มี UPDATE ของ as_trans ในโค้ด การแก้ไขเอกสาร 1802 ทำโดยลบแล้วสร้างใหม่ (deleteAssetSaleDoc แล้ว insertAssetSaleDoc พร้อม keepWht); การบันทึก 1801 ซ้ำเลขที่เดิมก็ลบ 4 ตารางก่อน insert ใหม่ ภายใต้ advisory lock fa-depreciation ให้บันทึกได้ทีละคน (fa_depreciation.go:817-823)

ใครลบ

  • 1802: deleteAssetSaleDoc fa_sale.go:486-499 ลบตามลำดับ as_trans_detail, as_trans, cb_trans, cb_trans_detail, gl_journal_detail, gl_journal, gl_journal_vat_sale (+ gl_wht_list_detail, gl_wht_list ถ้าไม่ keepWht) แล้วล้างฟิลด์ขายใน as_asset_detail ที่ doc_sale_ref = doc_no
  • 1801: ลบทั้ง 4 ตาราง as_trans_detail, as_trans, gl_journal_detail, gl_journal (fa_depreciation.go:880) โปรแกรมเดิมลบเฉพาะ as_trans ทิ้งลูกและสมุดรายวันกำพร้า โค้ดนี้แก้ตรงนี้ (คอมเมนต์ fa_depreciation.go:855)

ใครอ่าน

  • ตรวจเอกสารค่าเสื่อมซ้ำช่วงวันที่ (date_begin/date_end) fa_depreciation.go:897; ตรวจว่ามีสินทรัพย์ในเอกสารที่ถูกขายแล้ว fa_depreciation.go:868-871; ตรวจ doc_no ซ้ำข้าม trans_flag fa_depreciation.go:919; รายการเอกสารที่ลงรายวันซ้ำได้ fa_depreciation.go:940
  • ขายสินทรัพย์: ตรวจวันที่/เลขใบกำกับ fa_sale.go:419, :444; ตรวจเลขที่ซ้ำ fa_sale.go:456
  • ลง GL: SQL หัวเอกสาร AS ที่ template engine ใช้ gl_template.go:802-817 และรายการลงบัญชีซ้ำเฉพาะ template (ข้ามเอกสารที่ trans_direct = 1) gl_template.go:1112 (เครื่องมือลงบัญชีตามรูปแบบ GL (GL Template Engine))
  • รายงาน: ลูกหนี้ค้างรับ report_menu_ap_ar.go:478, :555; รายงานรับ-จ่ายเงิน report_menu_cb.go:761; ภาษีขาย/หัก ณ ที่จ่ายตรวจว่าเอกสารเป็นของ AS trans_tax.go:238; รายงานขายสินทรัพย์ report_menu_gl_fa.go:1542
  • ออกเลขที่ถัดไป: nextDocNoTables มี as_trans (doc_no_next.go:12)

ข้อควรระวัง

  • 1801 ไม่ใช่ตัวเก็บยอดสะสม: ตารางนี้ไม่ได้ปรับยอดใน as_asset_detail ยอดสะสมคำนวณจากผลรวม as_trans_detail.sum_amount ของ 1801 บวก as_sum_value_balance (รายละเอียดสินทรัพย์ (as_asset_detail))
  • doc_no ของ 1801/1802 ห้ามซ้ำกับเอกสารอื่นใน as_trans ที่ trans_flag ต่างกัน (ตรวจ IS DISTINCT FROM fa_depreciation.go:919)
  • 1802 ต้องกรอง trans_flag = 1802 ทุกครั้ง เพราะใช้ doc_no ร่วมกับตารางภาษี/GL ที่มีเอกสารสินค้าเลขที่ซ้ำกันได้
  • process_by เก็บค่า combobox 0-based ของ C# ไม่ใช่ค่า 1-based ที่หน้าจอส่งมา (โค้ดลบ 1 ก่อนบันทึก fa_depreciation.go:973)
  • ยอดเงินเป็น NUMERIC ส่งเป็น string (การปัดเศษ ทศนิยม และตัวเลขเงิน (Rounding & Decimal Policy)); ห้ามเปิดแก้ผ่านหน้า master (ตารางเงิน)

ที่มาในโค้ด

  • backend/internal/application/process/fa_depreciation.go:29 ค่าคงที่ 1801/1802
  • backend/internal/application/process/fa_depreciation.go:868 ตรวจสินทรัพย์ที่ขายแล้ว
  • backend/internal/application/process/fa_depreciation.go:880 ลบเอกสาร 1801
  • backend/internal/application/process/fa_depreciation.go:897 ตรวจซ้ำช่วงวันที่
  • backend/internal/application/process/fa_depreciation.go:919 ตรวจ doc_no ซ้ำ
  • backend/internal/application/process/fa_depreciation.go:966 INSERT as_trans (1801)
  • backend/internal/application/process/fa_sale.go:17 saleTransType
  • backend/internal/application/process/fa_sale.go:419 ตรวจวันที่เอกสาร
  • backend/internal/application/process/fa_sale.go:488 ลบเอกสาร 1802
  • backend/internal/application/process/fa_sale.go:515 INSERT as_trans (1802)
  • backend/internal/application/process/gl_template.go:802 SQL หัวเอกสาร AS สำหรับ GL
  • backend/internal/application/process/gl_template.go:1112 ลงบัญชีซ้ำด้วย template
  • backend/internal/application/process/docs.go:616 billDebtSource
  • backend/internal/application/process/report_menu_ap_ar.go:478 ลูกหนี้ค้าง
  • backend/internal/application/process/report_menu_cb.go:761 สถานะเอกสารในรายงานรับจ่าย
  • backend/internal/application/process/doc_no_next.go:12 ตารางออกเลขที่ถัดไป
  • backend/internal/domain/query/write_policy.go:24 regex ตารางเงิน

ดูเพิ่ม