#faq#fx#currency#ap#ar#gl
เอกสารสกุลเงินต่างประเทศคำนวณและลงบัญชีกำไร/ขาดทุนอัตราแลกเปลี่ยนอย่างไร
ตอบสั้น: เมื่อเปิด multi-currency เอกสารเก็บยอดสกุลต่างประเทศในคอลัมน์ *_2 แล้วคูณอัตราแลกเปลี่ยนเป็นเงินบาท ผลต่างอัตราเกิดตอนจ่ายชำระ (19) / รับชำระ (239) เท่านั้น ลงกำไร 420040 หรือขาดทุน 511030 ไม่พบโค้ดปรับมูลค่าสิ้นงวด (revaluation)
รายละเอียด
ดู หลายสกุลเงินและกำไรขาดทุนจากอัตราแลกเปลี่ยน (Multi-Currency & FX Gain/Loss) และ สกุลเงิน และอัตราแลกเปลี่ยน (currency / exchange_rate / multi_currency)
เปิดใช้งาน
transFxคืน nil ถ้าบริษัทไม่ได้เปิดMultiCurrencyสกุลเงินหลักอ่านจากerp_option.home_currency(fxHomeSQL)- เอกสารที่มีสกุลเงินที่หัวเอกสาร =
fxTopFlags(เช่น 2, 3, 4, 6, 12, 16, 44, 46, 48, 99, 144, 250, 260, 310, 315 ฯลฯ) checkFxModeปฏิเสธ "การตั้งค่าหลายสกุลเงินเปลี่ยนไป กรุณาเปิดเอกสารใหม่" ถ้าจอเปิดไว้คนละโหมดกับค่าบริษัท
อัตราแลกเปลี่ยน (newFxSetup)
- อ่านอัตราที่ 6 ตำแหน่ง
- อัตราติดลบ หรือเป็น 0 กับสกุลต่างประเทศ → "กรุณาระบุอัตราแลกเปลี่ยนของสกุลเงิน %s มากกว่า 0"
- อัตรา 0 กับสกุลหลัก/ไม่ระบุสกุล → ใช้ 1
แปลงเป็นเงินบาท
local:price=price_2× rate และsum_amount=sum_amount_2× rate (บรรทัดนี้ไม่ปัด)headerTotals: คำนวณ VAT ฝั่งสกุลต่างประเทศรอบหนึ่ง แล้วคำนวณฝั่งบาทจากยอดที่แปลงและปัดด้วยsmlRoundที่item_amount_decimal(ระบบปัดเศษทศนิยมเงินอย่างไร ทำไมยอดต่างกัน 0.01) ยอด*_2เก็บไว้ด้วย
ผลต่างตอนชำระ (billFxFlags = 19, 239)
fxBillPay: pay = smlRound(ยอดจ่าย_2 × อัตราวันจ่าย), old = smlRound(ยอดจ่าย_2 × อัตราของหนี้), lost = old − pay- ถ้าจ่ายปิดยอดค้างสกุลต่างประเทศครบ บวกเศษ (ยอดค้างบาท − old) เข้า lost ด้วย
fxBillตรวจ "เอกสาร %s: อัตราแลกเปลี่ยนต้องมากกว่า 0";refreshFxBillsอ่านคอลัมน์หนี้ใหม่จากเอกสารหนี้จริง- รวม lost ลง
ap_ar_trans.lost_profit_exchange_amount(หัวเอกสารใบวางบิล/ใบเสร็จ-จ่ายชำระหนี้ (ap_ar_trans))
GL เส้นมาตรฐานของ 19/239 (lost ปัด HALF_UP 2, debt = total + lost)
- 239 รับชำระ: Dr ช่องทางรับเงิน (แท็บรับ/จ่ายชำระ (เงินสด โอน เช็ค บัตร PromptPay ภาษีหัก) เก็บและลงบัญชีอย่างไร ทำไมขึ้น "ยอดการจ่ายเงินไม่สมบูรณ์") / Cr ลูกหนี้ เท่ากับ debt
- 19 จ่ายชำระ: Dr เจ้าหนี้ เท่ากับ debt / Cr ช่องทางจ่ายเงิน
- รับได้น้อยกว่าหนี้ หรือจ่ายมากกว่าหนี้ → Dr ขาดทุน 511030; กรณีกลับกัน → Cr กำไร 420040
ข้อควรระวัง
- ไม่พบโค้ดปรับมูลค่าหนี้สกุลต่างประเทศคงค้างสิ้นงวด (ค้นคำ "revaluat" ไม่เจอ) ผลต่างรับรู้เฉพาะตอนชำระ
- รหัส 420040 / 511030 ส่งเข้า
resolveChartAccountถ้าไม่มีในผัง ระบบคืนรหัสนั้นตรงๆ ไม่ได้ตกบัญชีพัก 9999 (บันทึกเอกสารแล้วขึ้น GL ไม่สมดุล (debit credit do not balance) แก้ยังไง) - ถ้าเอกสารมีรูปแบบ GL ระบบใช้รูปแบบแทนเส้นมาตรฐาน (ตั้งรูปแบบการลงบัญชี (GL) ในรูปแบบเอกสารยังไง และระบบใช้เมื่อไร)
ดูเพิ่ม
- หลายสกุลเงินและกำไรขาดทุนจากอัตราแลกเปลี่ยน (Multi-Currency & FX Gain/Loss)
- รับชำระหนี้ (239) / จ่ายชำระหนี้ (19) ลงบัญชี GL ยังไง เช็ค โอน ภาษีหัก ไปไหน
- แท็บรับ/จ่ายชำระ (เงินสด โอน เช็ค บัตร PromptPay ภาษีหัก) เก็บและลงบัญชีอย่างไร ทำไมขึ้น "ยอดการจ่ายเงินไม่สมบูรณ์"
- ระบบปัดเศษทศนิยมเงินอย่างไร ทำไมยอดต่างกัน 0.01
- สกุลเงิน และอัตราแลกเปลี่ยน (currency / exchange_rate / multi_currency)
ที่มาในโค้ด
backend/internal/application/process/fx.go:18fxTopFlags;:37fxHomeSQLbackend/internal/application/process/fx.go:43transFx;:63checkFxModebackend/internal/application/process/fx.go:129newFxSetup(อัตรา 6 ตำแหน่ง)backend/internal/application/process/fx.go:150headerTotals;:179localbackend/internal/application/process/fx.go:223billFxFlags;:252fxBillPay;:267fxBill;:311refreshFxBillsbackend/internal/application/process/docs.go:338UPDATElost_profit_exchange_amountbackend/internal/application/process/service.go:2159GL 19/239;:2177ขาดทุน 511030;:2180กำไร 420040