สมอง SML

คลังความรู้ / ถาม-ตอบ

#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

แปลงเป็นเงินบาท

ผลต่างตอนชำระ (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)

ข้อควรระวัง

ดูเพิ่ม

ที่มาในโค้ด

  • backend/internal/application/process/fx.go:18 fxTopFlags; :37 fxHomeSQL
  • backend/internal/application/process/fx.go:43 transFx; :63 checkFxMode
  • backend/internal/application/process/fx.go:129 newFxSetup (อัตรา 6 ตำแหน่ง)
  • backend/internal/application/process/fx.go:150 headerTotals; :179 local
  • backend/internal/application/process/fx.go:223 billFxFlags; :252 fxBillPay; :267 fxBill; :311 refreshFxBills
  • backend/internal/application/process/docs.go:338 UPDATE lost_profit_exchange_amount
  • backend/internal/application/process/service.go:2159 GL 19/239; :2177 ขาดทุน 511030; :2180 กำไร 420040