ฝากเงิน/ถอนเงิน/โอนเงินระหว่างธนาคาร และเงินสดย่อย ลงบัญชีอย่างไร
ตอบสั้น: 401 ฝากเงิน = Dr ธนาคาร / Cr เงินสด, 402 ถอนเงิน = Dr เงินสด / Cr ธนาคาร, 422 โอนเงิน = Dr สมุดบัญชีปลายทาง / Cr สมุดบัญชีต้นทาง ส่วนเงินสดย่อย 300 = Dr เงินสดย่อย / Cr ช่องทางเงิน และ 301 = Dr ช่องทางเงิน / Cr เงินสดย่อย บัญชีธนาคารมาจาก erp_pass_book.account_code_1 ของสมุดบัญชี
รายละเอียด
ดู เงินสด ธนาคาร และวงจรเช็ค (Cash, Bank & Cheque Lifecycle), บันทึกฝากเงิน / บันทึกถอนเงิน (Bank Deposit / Withdrawal), บันทึกโอนเงินระหว่างธนาคาร (Bank Transfer), วงเงินสดย่อย (Petty Cash)
บัญชีตั้งต้น (ใช้รหัสแรกที่มีในผัง): เงินสด 1111/1110/1100, ธนาคาร 1112/1113/1111 ถ้าเอกสารระบุสมุดบัญชี ใช้ erp_pass_book.account_code_1 (erp_pass_book — สมุดเงินฝาก/บัญชีธนาคารของบริษัท)
401 บันทึกฝากเงิน / 402 บันทึกถอนเงิน (menu_cb_cash_payin / menu_cb_cash_withdraw)
- อ่านแถว
ic_trans_detailที่ยอด > 0 แต่ละแถวใช้สมุดบัญชีจากitem_code - แยกบรรทัดธนาคารตามแถว ต่อเมื่อผลรวมแถวเท่ายอดเอกสาร ไม่เท่าใช้ธนาคารตั้งต้นบรรทัดเดียว
- 401: Dr ธนาคาร (ต่อแถว) / Cr เงินสด = ยอด − รายได้/ค่าใช้จ่ายอื่นสุทธิ
- 402: Dr เงินสด = ยอด + รายได้/ค่าใช้จ่ายอื่นสุทธิ / Cr ธนาคาร (ต่อแถว)
422 โอนเงินระหว่างธนาคาร
- ตอนบันทึกต้องมีสมุดโอนเข้า ("กรุณาระบุสมุดบัญชีโอนเข้า") และต้องไม่ใช่สมุดเดียวกับโอนออก ค่าธรรมเนียมต้องไม่ติดลบ ถ้าไม่ระบุยอดโอน ระบบใช้ ยอด − ค่าธรรมเนียม
- ระบบสร้างแถวคู่ 420 (โอนเงินเข้า) เลขเดียวกัน เวลา +1 นาที สลับต้นทาง/ปลายทาง (
SyncTransferPair) ก่อนลง GL - GL: Dr บัญชีของ
item_code_2(ปลายทาง) / Cr บัญชีของitem_code(ต้นทาง) ด้วยยอดเอกสาร อ่านจากแถวแรก
เงินสดย่อย 300 / 301 (วงเงินสดย่อย (cb_petty_cash))
- บัญชีเงินสดย่อย =
cb_petty_cash.chart_of_accountของรหัสในแถวแรก ไม่มีใช้ 1111-01/1112/1111 - 300 (เมนู "คืน/ลด วงเงินสดย่อย"): Dr เงินสดย่อย / Cr ช่องทางเงินในแท็บชำระ
- 301 (เมนู "รับ/เพิ่ม วงเงินสดย่อย"): Dr ช่องทางเงินในแท็บชำระ / Cr เงินสดย่อย
- ช่องทางเงินแยกตาม
cb_trans(แท็บรับ/จ่ายชำระ (เงินสด โอน เช็ค บัตร PromptPay ภาษีหัก) เก็บและลงบัญชีอย่างไร ทำไมขึ้น "ยอดการจ่ายเงินไม่สมบูรณ์")
ข้อควรระวัง
- ทิศทางของ 300/301 ไม่ตรงกันในโค้ด: ชื่อเมนู 300 คือ "คืน/ลด" แต่ GL ลง Dr เงินสดย่อย,
payReceiveFlagsนับ 300 เป็นฝั่งรับเงิน (trans.go:1332) ขณะที่payOtherPayFlagsนับ 300 เป็นฝั่งจ่าย และ 301 เป็นฝั่งรับ (pay_other.go:35-38) ควรให้ผู้ดูแลยืนยันกับ C# - GL เส้นมาตรฐานของ 422 ไม่มีบรรทัดค่าธรรมเนียม ลง Dr/Cr ด้วยยอดเดียวกัน การลงค่าธรรมเนียม ไม่ชัดจากโค้ดเส้นมาตรฐาน
- 422 อ่านสมุดจากแถวแรกเท่านั้น
- ถ้ารหัสเอกสารมีรูปแบบ GL ระบบใช้รูปแบบแทน (คอมเมนต์ระบุว่ารูปแบบ TM ลงแถว 420 ด้วย) (ตั้งรูปแบบการลงบัญชี (GL) ในรูปแบบเอกสารยังไง และระบบใช้เมื่อไร)
ดูเพิ่ม
- เงินสด ธนาคาร และวงจรเช็ค (Cash, Bank & Cheque Lifecycle)
- บันทึกโอนเงินระหว่างธนาคาร (Bank Transfer)
- วงเงินสดย่อย (Petty Cash)
- แท็บรับ/จ่ายชำระ (เงินสด โอน เช็ค บัตร PromptPay ภาษีหัก) เก็บและลงบัญชีอย่างไร ทำไมขึ้น "ยอดการจ่ายเงินไม่สมบูรณ์"
- รายได้อื่นๆ (250) / ค่าใช้จ่ายอื่นๆ (260) ลงบัญชีเข้าบัญชีไหน ตั้งรหัสบัญชีที่ไหน
ที่มาในโค้ด
backend/internal/application/process/service.go:2064GL 401/402backend/internal/application/process/service.go:2207GL 300/301 (:2215-2218Dr/Cr)backend/internal/application/process/service.go:2221GL 422backend/internal/application/process/gl_template.go:195glSQLPassBook;:202glSQLPettybackend/internal/application/process/trans.go:1018ตรวจ 422 (สมุดโอนเข้า, ค่าธรรมเนียม);:604เรียกSyncTransferPairbackend/internal/application/process/cheque.go:101SyncTransferPairแถวคู่ 420backend/internal/application/process/trans.go:1331payReceiveFlags;pay_other.go:35payOtherPayFlagsfrontend/account/tabs/transMenuMap.ts:1798เมนูเงินสดย่อย 300/301