คลังความรู้ / ตารางข้อมูล
#tables#as
รายการเอกสารสินทรัพย์ (as_trans_detail)
บรรทัดลูกของ หัวเอกสารสินทรัพย์ (as_trans) 1 แถวต่อ 1 สินทรัพย์ในเอกสาร ใช้สองแบบตาม trans_flag:
| trans_flag |
ความหมายของแถว |
ผู้เขียน |
| 1801 |
ค่าเสื่อมราคาของสินทรัพย์ 1 ตัวในงวดนั้น (sum_amount = ค่าเสื่อมงวดนี้) |
fa_depreciation.go:982 |
| 1802 |
สินทรัพย์ 1 ตัวที่ขาย (ทุน ค่าเสื่อมสะสม มูลค่าตามบัญชี ราคาขาย กำไรขาดทุน) |
fa_sale.go:535 |
นอกจากเป็นรายการของเอกสาร ตารางนี้ยังเป็นตัวเชื่อม "สินทรัพย์ → เอกสาร" (ผ่าน item_code = รหัส ทะเบียนสินทรัพย์ (as_asset)) ที่ใช้คำนวณค่าเสื่อมสะสม ตรวจว่าขายแล้ว และกันลบสินทรัพย์ที่มีเอกสาร
คอลัมน์สำคัญ
ร่วมกันทั้งสองชนิด
| คอลัมน์ |
ความหมาย |
ใช้ที่ไหน |
doc_no, doc_date, doc_time |
ตรงกับหัว หัวเอกสารสินทรัพย์ (as_trans) |
fa_depreciation.go:982, fa_sale.go:535 |
trans_flag |
1801 / 1802 (คีย์เชื่อมหัวคู่กับ doc_no) |
ทุก SQL |
item_code |
รหัสสินทรัพย์ (ทะเบียนสินทรัพย์ (as_asset).code) |
ทุกที่ที่เชื่อมสินทรัพย์ |
item_name |
ชื่อสินทรัพย์ ณ วันบันทึก ตัดที่ 255 ตัวอักษร |
fa_depreciation.go:982, fa_sale.go:535 |
line_number |
ลำดับบรรทัด เริ่มจาก 0 |
fa_depreciation.go:983, fa_sale.go:535 |
sum_amount |
1801 = ค่าเสื่อมราคาของงวด; 1802 = ราคาขาย (รวมตามที่ระบบเก็บ) |
ดูตารางด้านล่าง |
branch_code |
สาขา |
ทุก INSERT |
เฉพาะ 1801
| คอลัมน์ |
ความหมาย |
ใช้ที่ไหน |
remark |
เก็บค่าว่าง |
fa_depreciation.go:982 |
sum_amount |
ค่าเสื่อมราคาที่ประมวลผลได้ (depRow.Amount จากผลลัพธ์ as_result) |
fa_depreciation.go:567, :982 |
เฉพาะ 1802
| คอลัมน์ |
ความหมาย |
ใช้ที่ไหน |
trans_type |
= 2 (saleTransType fa_sale.go:17) |
fa_sale.go:535 |
cust_code, inquiry_type, vat_type |
คัดลอกจากหัวเอกสาร |
fa_sale.go:535 |
tax_type |
เก็บ 0 |
fa_sale.go:538 |
price_default |
ราคาทุนของสินทรัพย์ (cost) |
fa_sale.go:535, รายงาน report_menu_gl_fa.go:1542 |
average_cost |
ค่าเสื่อมราคาสะสม (AccumDep) |
fa_sale.go:535, gl_template.go:814 |
price |
มูลค่าตามบัญชี (BookValue) |
fa_sale.go:535 |
sum_amount |
ราคาขาย (SalePrice) |
fa_sale.go:535 |
sum_amount_exclude_vat |
ราคาขายไม่รวมภาษี (ExcludeVat) ใช้เป็น "ราคาขาย" ในรายงานขายสินทรัพย์และเป็น as_sale_price |
fa_sale.go:551, report_menu_gl_fa.go:1542 |
total_vat_value |
ภาษีมูลค่าเพิ่มของบรรทัด |
fa_sale.go:535 |
profit_lost_cost_amount |
กำไร (ขาดทุน) จากการขาย |
fa_sale.go:535, report_menu_gl_fa.go:1542 |
last_status |
เก็บ 0 (ใช้บอกว่าบรรทัดยังใช้งาน) |
fa_sale.go:535, fa_sale.go:291 |
creator_code, create_datetime |
ผู้บันทึก/เวลา |
fa_sale.go:535 |
คีย์และความสัมพันธ์
ใครเขียน
- 1801:
insertDepDoc fa_depreciation.go:964-988 insert หลายแถวด้วย unnest เดียว (fa_depreciation.go:982) (ค่าเสื่อมราคาสินทรัพย์ถาวร (Fixed Asset Depreciation))
- 1802:
insertAssetSaleDoc fa_sale.go:513-550 insert หลายแถวด้วย unnest เดียว (fa_sale.go:535)
- ไม่มี UPDATE ของตารางนี้ในโค้ด แก้ไขด้วยการลบเอกสารทั้งใบแล้วสร้างใหม่
ใครลบ
- 1801: ลบเอกสาร
fa_depreciation.go:880 (พร้อม as_trans, gl_journal_detail, gl_journal); ตอนบันทึกซ้ำเลขที่เดิมจะลบ 4 ตารางนี้ก่อน insert ใหม่ภายใต้ advisory lock fa-depreciation (fa_depreciation.go:817-823)
- 1802:
deleteAssetSaleDoc fa_sale.go:488 (ตารางแรกในลำดับ)
ใครอ่าน
- ค่าเสื่อมสะสม ณ วันขาย:
loadSaleAssets fa_sale.go:286-293 ใช้ as_sum_value_balance + Σ sum_amount ของ 1801 ต่อ item_code และรวม doc_no ของ 1802 ที่ยังใช้งาน (last_status = 0) ของสินทรัพย์เดียวกันเพื่อกันขายซ้ำ (ยกเว้นเอกสารที่กำลังแก้)
- วันที่ขายสินทรัพย์ในเอนจินค่าเสื่อม:
loadDepSources fa_depreciation.go:660 (วันที่ของ 1802)
- ตรวจสินทรัพย์ในเอกสาร 1801 ที่ถูกขายแล้ว:
fa_depreciation.go:868-871; ตรวจเอกสารซ้ำช่วงวันที่ fa_depreciation.go:940-941
- ลง GL: ผลรวมต้นทุน/ค่าเสื่อมสะสมของหัว
gl_template.go:802, :814 และรายการ glSQLDetailAS gl_template.go:864-871 (เครื่องมือลงบัญชีตามรูปแบบ GL (GL Template Engine))
- รายงาน: รายละเอียดสินทรัพย์/วันที่ขาย
report_menu_gl_fa.go:1264; รายงานขายสินทรัพย์ report_menu_gl_fa.go:1542
- ตัวกันลบสินทรัพย์: spec ของ master สินทรัพย์ห้ามลบถ้ามีแถวที่
item_code ตรง (ข้อความ "มีเอกสารสินทรัพย์อ้างอิงแล้ว") master_detail_specs.go:223
ข้อควรระวัง
trans_flag ต้องใส่ทุก SQL: เอกสาร 1801 และ 1802 ใช้ doc_no ร่วมกับตารางอื่นและเลขที่อาจซ้ำข้ามชนิด
- 1801 ไม่ได้ปรับยอดสะสมใน
as_asset_detail; ยอดค่าเสื่อมสะสมที่แท้จริง = as_sum_value_balance + Σ sum_amount (1801) (fa_sale.go:289-290) ถ้าลบเอกสาร 1801 ยอดสะสมจะเปลี่ยนทันที
- ใน 1802 คอลัมน์
price_default / average_cost / price เป็นตัวเลขที่ GL ใช้ลงบัญชี รายงานไม่คำนวณใหม่ (คอมเมนต์ report_menu_gl_fa.go:1534) ห้ามแก้เองโดยไม่ลงบัญชีใหม่
glSQLDetailAS เติม ''/'0' ในช่องที่ตารางนี้ไม่มี เพื่อให้จำนวนคอลัมน์เท่ากับ SQL รายการฝั่งสินค้า/CB ที่ UNION ALL ด้วยกัน (gl_template.go:864-871, :892)
- ยอดเป็น NUMERIC ส่งเป็น string (การปัดเศษ ทศนิยม และตัวเลขเงิน (Rounding & Decimal Policy))
ที่มาในโค้ด
backend/internal/application/process/fa_depreciation.go:567 โครงผลลัพธ์ค่าเสื่อมต่อสินทรัพย์
backend/internal/application/process/fa_depreciation.go:660 วันที่ขายใน loadDepSources
backend/internal/application/process/fa_depreciation.go:823 ลบก่อน insert ใหม่ (1801)
backend/internal/application/process/fa_depreciation.go:868 ตรวจสินทรัพย์ที่ขายแล้ว
backend/internal/application/process/fa_depreciation.go:880 ลบ 1801
backend/internal/application/process/fa_depreciation.go:940 ตรวจซ้ำ
backend/internal/application/process/fa_depreciation.go:982 INSERT 1801
backend/internal/application/process/fa_sale.go:286 loadSaleAssets
backend/internal/application/process/fa_sale.go:488 ลบ 1802
backend/internal/application/process/fa_sale.go:535 INSERT 1802
backend/internal/application/process/gl_template.go:802 SQL หัวเอกสาร AS (ผลรวมจากลูก)
backend/internal/application/process/gl_template.go:864 glSQLDetailAS
backend/internal/application/process/master_detail_specs.go:223 ตัวกันลบสินทรัพย์
backend/internal/application/process/report_menu_gl_fa.go:1264 join วันที่ขาย
backend/internal/application/process/report_menu_gl_fa.go:1542 รายงานขายสินทรัพย์
ดูเพิ่ม