| opPrimeKey | output | longchar | Primary Key field value of loaded record(s). Keys are chr(4) separated. Key fields are chr(2) separated. |
| oiReturnStatus | output | integer | Return status of the method. |
if oiReturnStatus = 0
then oiReturnStatus = -98.
assign viSharedSetID = 0.
if vcActivityCode <> "Create":U
then do:
/*SharedSet_ID linked to the current company (viCompanyId)*/
assign vcSharedSetType = {&SHAREDSETTYPECODE-EXCHANGERATE}.
<Q-10 run LookupSharedSetForCompany (all) (Read) (NoCache)
(input viCompanyId, (CompanyId)
input vcSharedSetType, (SharedSetType)
output dataset tqSharedSetForCompany) in BCompany >
find first tqSharedSetForCompany no-error.
if available tqSharedSetForCompany
then assign viSharedSetID = tqSharedSetForCompany.tiSharedSet_ID.
end.
<Q-11 run CurrencyPrim (Start) in BCurrency >
<Q-12 run ExchangeRateTypePrim (Start) in BExchangeRateType >
PROCESSBLOCK:
for each t_sExchangeRate:
assign t_sExchangeRate.SharedSet_ID = viSharedSetID.
/* ========================================================================= */
/* If this is XML integration, then tc_Status field can be blank, in this */
/* case it overtakes tc_Status from Activity */
/* ========================================================================= */
if t_sExchangeRate.tc_Status = "":U or
t_sExchangeRate.tc_Status = ?
then case vcActivityCode:
when "Create":U then assign t_sExchangeRate.tc_Status = "N":U.
when "Modify":U then assign t_sExchangeRate.tc_Status = "C":U.
when "Delete":U then assign t_sExchangeRate.tc_Status = "D":U.
end case.
/* ========================================================================== */
/* This part needs to be done for QXTend integration. */
/* AdditionalUpdates will take care of the necessary updates to other records */
/* ========================================================================== */
if (t_sExchangeRate.tc_Status <> "N":U and vcActivityCode = "Create":U) or
(t_sExchangeRate.tc_Status <> "D":U and vcActivityCode = "Delete":U)
then do:
delete t_sExchangeRate.
next.
end.
if t_sExchangeRate.FromCurrency_ID = ? or
t_sExchangeRate.FromCurrency_ID = 0
then do:
<Q-6 run CurrencyPrim (all) (Read) (NoCache)
(input t_sExchangeRate.tcFromCurrencyCode, (CurrencyCode)
input ?, (Currency_ID)
output dataset tqCurrencyPrim) in BCurrency >
find first tqCurrencyPrim no-error.
if available tqCurrencyPrim then assign t_sExchangeRate.FromCurrency_ID = tqCurrencyPrim.tiCurrency_ID.
end.
if t_sExchangeRate.ToCurrency_ID = ? or
t_sExchangeRate.ToCurrency_ID = 0
then do:
<Q-7 run CurrencyPrim (all) (Read) (NoCache)
(input t_sExchangeRate.tcToCurrencyCode, (CurrencyCode)
input ?, (Currency_ID)
output dataset tqCurrencyPrim) in BCurrency >
find first tqCurrencyPrim no-error.
if available tqCurrencyPrim then assign t_sExchangeRate.ToCurrency_ID = tqCurrencyPrim.tiCurrency_ID.
end.
if t_sExchangeRate.ExchangeRateType_ID = ? or
t_sExchangeRate.ExchangeRateType_ID = 0
then do:
<Q-9 run ExchangeRateTypePrim (all) (Read) (NoCache)
(input ?, (ExchangeRateTypeId)
input t_sExchangeRate.tcExchangeRateTypeCode, (ExchangeRateTypeCode)
output dataset tqExchangeRateTypePrim) in BExchangeRateType >
find first tqExchangeRateTypePrim no-error.
if available tqExchangeRateTypePrim then assign t_sExchangeRate.ExchangeRateType_ID = tqExchangeRateTypePrim.tiExchangeRateType_ID.
end.
/* ================================================================= */
/* Lookup object by logical key */
/* When in create mode, skip lookup. */
/* ================================================================= */
if vcActivityCode <> "Create":U
then do:
vcFreeform = substitute("for each ExchangeRate where &1 and &2 and &3 and &4 and &5":U,
substitute("ExchangeRate.SharedSet_ID = &1":U,
quoter(t_sExchangeRate.SharedSet_ID)
),
substitute("ExchangeRate.ExchangeRateValidDateFrom = &1":U,
quoter(t_sExchangeRate.ExchangeRateValidDateFrom)
),
substitute("ExchangeRate.FromCurrency_ID = &1":U,
quoter(t_sExchangeRate.FromCurrency_ID)
),
substitute("ExchangeRate.ToCurrency_ID = &1":U,
quoter(t_sExchangeRate.ToCurrency_ID)
),
substitute("ExchangeRate.ExchangeRateType_ID = &1":U,
quoter(t_sExchangeRate.ExchangeRateType_ID)
)
).
<M-2 run DataLoad (input '' (icRowids),
input '' (icPkeys),
input '' (icObjectIds),
input vcFreeform (icFreeform),
input yes (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BExchangeRate>
if viFcReturnSuper >= 0
then find first tExchangeRate where
tExchangeRate.SharedSet_ID = t_sExchangeRate.SharedSet_ID and
tExchangeRate.ExchangeRateValidDateFrom = t_sExchangeRate.ExchangeRateValidDateFrom and
tExchangeRate.FromCurrency_ID = t_sExchangeRate.FromCurrency_ID and
tExchangeRate.ToCurrency_ID = t_sExchangeRate.ToCurrency_ID and
tExchangeRate.ExchangeRateType_ID = t_sExchangeRate.ExchangeRateType_ID.
end.
/* ================================================================= */
/* When in delete mode, ignore input data. */
/* When object not found, do not return an error. */
/* ================================================================= */
if vcActivityCode = "Delete":U
then do:
if viFcReturnSuper = -4
then delete t_sExchangeRate.
else do:
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then leave PROCESSBLOCK.
<M-76 run SetRowidConvert
(input t_sExchangeRate.tc_Rowid (icOldRowid),
input tExchangeRate.tc_Rowid (icNewRowid),
output viFcReturnSuper (oiReturnStatus)) in BExchangeRate>
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sExchangeRate.tc_Rowid = tExchangeRate.tc_Rowid
t_sExchangeRate.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tExchangeRate.ExchangeRate_ID).
end.
next.
end.
if vcActivityCode = "Create":U
or viFcReturnSuper = -4
then do:
/* ================================================================= */
/* When object not found and in modify only mode, return an error. */
/* ================================================================= */
if vcActivityCode = "Modify":U
then do:
assign
vcMessage = trim(#T-1'Object with key $1 does not exist.':100(48021)T-1#).
<M-3 run SetMessage (input vcMessage (icMessage),
input t_sExchangeRate.tcFromCurrencyCode (icArguments),
input 'tExchangeRate.tcFromCurrencyCode':U (icFieldName),
input t_sExchangeRate.tcFromCurrencyCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sExchangeRate.tc_Rowid (icRowid),
input 'QadFin-5372':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BExchangeRate>
assign oiReturnStatus = -1.
leave PROCESSBLOCK.
end.
/* ================================================================= */
/* When object not found or in create mode, create it. */
/* ================================================================= */
<M-4 run AddDetailLine (input 'ExchangeRate':U (icTable),
input '' (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BExchangeRate>
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sExchangeRate.tc_Status = "N":U.
end.
else do:
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sExchangeRate.tc_Status = "C":U.
end.
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then leave PROCESSBLOCK.
<M-90 run SetRowidConvert
(input t_sExchangeRate.tc_Rowid (icOldRowid),
input tExchangeRate.tc_Rowid (icNewRowid),
output viFcReturnSuper (oiReturnStatus)) in BExchangeRate>
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign
t_sExchangeRate.ExchangeRate_ID = tExchangeRate.ExchangeRate_ID
t_sExchangeRate.SharedSet_ID = tExchangeRate.SharedSet_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sExchangeRate.tc_Rowid = tExchangeRate.tc_Rowid
t_sExchangeRate.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tExchangeRate.ExchangeRate_ID).
end.
<Q-13 run CurrencyPrim (Stop) in BCurrency >
<Q-14 run ExchangeRateTypePrim (Stop) in BExchangeRateType >
if oiReturnStatus = -98
then oiReturnStatus = 0.