merge GARY_XTUPLE/23254 into my issue23878
[xtuple] / foundation-database / public / functions / postcheck.sql
index 9a077d1..7765875 100644 (file)
@@ -270,6 +270,23 @@ BEGIN
                              round(_p.checkhead_amount_base, 2),
                               _p.checkhead_checkdate, _gltransNote, pcheckid );
 
+  -- Post any gain/loss from the alternate currency exchange rate
+  IF (COALESCE(_p.checkhead_alt_curr_rate, 0.0) <> 0.0) THEN
+    _exchGain := ROUND((_p.checkhead_curr_rate - _p.checkhead_alt_curr_rate) * _p.checkhead_amount_base, 2);
+
+    IF (_exchGain <> 0) THEN
+      PERFORM insertIntoGLSeries( _sequence, _t.checkrecip_gltrans_source, 'CK',
+                          CAST(_p.checkhead_number AS TEXT),
+                          _p.bankaccntid, (_exchGain * -1.0),
+                          _p.checkhead_checkdate, _gltransNote, pcheckid );      
+                          
+      PERFORM insertIntoGLSeries( _sequence, _t.checkrecip_gltrans_source, 'CK',
+                          CAST(_p.checkhead_number AS TEXT),
+                          getGainLossAccntId(_p.bankaccntid), _exchGain,
+                          _p.checkhead_checkdate, _gltransNote, pcheckid );      
+    END IF;
+  END IF;
+
   PERFORM postGLSeries(_sequence, _journalNumber);
 
   UPDATE checkhead