icCurrencyCode | input | character | Currency Code of the Subsidiary ( = Source) Company. |
itExchangeRateDate | input | date | Date of the exchange rate. = The Consolidation date |
icGLExchangeMethod | input | character | Exchange Method that is linked to the GL |
icUsrDefExchangeRateType | input | character | Possible Exchange Rate Type when the exchange method is USERDEFINED. |
itPeriodStartDate | input | date | Period Start Date |
itPeriodEndDate | input | date | Period End Date |
odExchangeRate | output | decimal | Exchange Rate |
odExchangeRateScale | output | decimal | Exchange Rate Scale |
oiReturnStatus | output | integer | Return status of the method. |
/* =============================================== */ /* Initialise output parameters and oiReturnStatus */ /* =============================================== */ assign odExchangeRate = 0 odExchangeRateScale = 0 viLocalReturnStatus = oiReturnStatus oiReturnStatus = -98. /* ======================================== */ /* Check if the input parameters are filled */ /* ======================================== */ if icCurrencyCode = ? or icCurrencyCode = "":U or icGLExchangeMethod = ? or icGLExchangeMethod = "":U or itExchangeRateDate = ? or itPeriodStartDate = ? or itPeriodEndDate = ? or (icGLExchangeMethod = {&EXCHANGEMETHOD-USERDEFINED} and (icUsrDefExchangeRateType = "":U or icUsrDefExchangeRateType = ?)) then do: assign vcMessage = trim(#T-13'Not all parameters of method GetExchangeRate were entered correctly.':100(61701)t-13#) + chr(10) + trim(substitute(#T-16'Currency Code: &1':30(61703)T-16#, trim(icCurrencyCode) )) + chr(10) + trim(substitute(#T-22'Period Start Date: &1':100(61708)T-22#, trim(string(itPeriodStartDate)) )) + chr(10) + trim(substitute(#T-23'Period End Date: &1':100(61709)T-23#, trim(string(itPeriodEndDate)) )) + chr(10) + trim(substitute(#T-24'Exchange Rate Date: &1':100(61710)T-24#, trim(string(itExchangeRateDate)) )) + chr(10) + trim(substitute(#T-19'Exchange Method: &1':100(61706)T-19#, trim(icGLExchangeMethod) )) + chr(10) + trim(substitute(#T-20'User Defined Exchange Rate Type: &1':100(61707)T-20#, trim(icUsrDefExchangeRateType) )) oiReturnStatus = -3. <M-21 run SetMessage (input vcMessage (icMessage), input '':U (icArguments), input '':U (icFieldName), input '':U (icFieldValue), input 'E':U (icType), input 2 (iiSeverity), input '':U (icRowid), input 'QadFin-6313':U (icFcMsgNumber), input '':U (icFcExplanation), input '':U (icFcIdentification), input '':U (icFcContext), output viFcReturnSuper (oiReturnStatus)) in BConsolid> return. end. /* Check input parameters */ /* ============================================ */ /* Start Submethod based on the Exchange Method */ /* ============================================ */ case icGLExchangeMethod: when {&EXCHANGEMETHOD-CURRENT} then do: <M-27 run GetExchangeRatesCurrent (input icCurrencyCode (icCurrencyCode), input itPeriodEndDate (itExchangeRateDate), output odExchangeRate (odExchangeRate), output odExchangeRateScale (odExchangeRateScale), output viFcReturnSuper (oiReturnStatus)) in BConsolid> if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and viLocalReturnStatus >= 0) then assign viLocalReturnStatus = viFcReturnSuper. end. /* when {&EXCHANGEMETHOD-CURRENT} */ when {&EXCHANGEMETHOD-WEIGHTEDAVERAGE} then do: <M-28 run GetExchangeRatesWeightedAverage (input icCurrencyCode (icCurrencyCode), input itPeriodStartDate (itPeriodStartDate), input itPeriodEndDate (itPeriodEndDate), output odExchangeRate (odExchangeRate), output odExchangeRateScale (odExchangeRateScale), output viFcReturnSuper (oiReturnStatus)) in BConsolid> if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and viLocalReturnStatus >= 0) then assign viLocalReturnStatus = viFcReturnSuper. end. /* when {&EXCHANGEMETHOD-WEIGHTEDAVERAGE} */ when {&EXCHANGEMETHOD-SIMPLEAVERAGE} then do: <M-29 run GetExchangeRatesSimpleAverage (input icCurrencyCode (icCurrencyCode), input itPeriodStartDate (itPeriodStartDate), input itPeriodEndDate (itPeriodEndDate), output odExchangeRate (odExchangeRate), output odExchangeRateScale (odExchangeRateScale), output viFcReturnSuper (oiReturnStatus)) in BConsolid> if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and viLocalReturnStatus >= 0) then assign viLocalReturnStatus = viFcReturnSuper. end. /* when {&EXCHANGEMETHOD-SIMPLEAVERAGE} */ when {&EXCHANGEMETHOD-USERDEFINED} then do: <M-31 run GetExchangeRatesUserDefined (input icCurrencyCode (icCurrencyCode), input itPeriodEndDate (itExchangeRateDate), input icUsrDefExchangeRateType (icUsrDefExchangeRateType), output odExchangeRate (odExchangeRate), output odExchangeRateScale (odExchangeRateScale), output viFcReturnSuper (oiReturnStatus)) in BConsolid> if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and viLocalReturnStatus >= 0) then assign viLocalReturnStatus = viFcReturnSuper. end. /* when {&EXCHANGEMETHOD-SIMPLEAVERAGE} */ otherwise do: assign vcMessage = trim(substitute(#T-25'The exchange method &1 was not defined in the consolidation.':100(61714)t-25#, trim(icGLExchangeMethod) )) oiReturnStatus = -3. <M-26 run SetMessage (input vcMessage (icMessage), input '':U (icArguments), input '':U (icFieldName), input '':U (icFieldValue), input 'E':U (icType), input 2 (iiSeverity), input '':U (icRowid), input 'QadFin-6315':U (icFcMsgNumber), input '':U (icFcExplanation), input '':U (icFcIdentification), input '':U (icFcContext), output viFcReturnSuper (oiReturnStatus)) in BConsolid> return. end. /* otherwise do: */ end case. /* case icGLExchangeMethod: */ /* ==================== */ /* Set Output parameter */ /* ==================== */ assign oiReturnStatus = viLocalReturnStatus.