project BLF > class BReportTranslation > method apiSynchroniseUpdateTranslation
Parameters
iiClassId | input | integer | |
iiReportId | input | integer | |
icStringCode | input | character | |
icStringText | input | character | |
icClassName | input | character | |
icReportName | input | character | |
icFixedDataClassName | input | character | |
icFixedDataReportName | input | character | |
olUpdatesDone | output | logical | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
BLF
program code (program9/breporttranslation.p)
define variable v1 as character case-sensitive.
define variable v2 as character case-sensitive.
find first tReportTranslation where
tReportTranslation.ReportTranslationCode = icStringCode and
tReportTranslation.ReportBusComponent_ID = iiClassId and
tReportTranslation.ReportBusActivity_ID = iiReportId no-error.
if available tReportTranslation
then do:
/* case-sensitive compare to also detect case-only changes */
v1 = tReportTranslation.ReportTranslationText.
v2 = icStringText.
if tReportTranslation.ReportTranslationIsSysDef <> yes
or v1 <> v2
then assign tReportTranslation.tc_Status = (if tReportTranslation.tc_Status = "N" then "N" else "C")
olUpdatesDone = yes.
else if tReportTranslation.tc_Status = "D"
then assign tReportTranslation.tc_Status = "".
end.
else do:
<M-1 run AddDetailLine (input 'ReportTranslation':U (icTable),
input '' (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BReportTranslation>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
assign olUpdatesDone = yes.
end.
assign tReportTranslation.ReportBusActivity_ID = iiReportId
tReportTranslation.tcBusActivityCode = icReportName
tReportTranslation.ReportBusComponent_ID = iiClassId
tReportTranslation.tcBusComponentCode = icClassName
tReportTranslation.ReportTranslationCode = icStringCode
tReportTranslation.ReportTranslationIsSysDef = yes
tReportTranslation.ReportTranslationText = icStringText.
/* ================================================================= */
/* Prepare translations for save */
/* ================================================================= */
for each bFixedData where
bFixedData.tcClassName = icFixedDataClassName and
bFixedData.tcReportName = icFixedDataReportName and
entry(3,bFixedData.tcStringCode) = icStringCode and
entry(2,bFixedData.tcStringCode) <> "?":U on error undo, throw:
find first tTransString where
tTransString.tiParentObject_ID = tReportTranslation.ReportTranslation_ID and
tTransString.tcLngCode = entry(2,bFixedData.tcStringCode)
no-error.
if available tTransString
then do:
v1 = tTransString.tcTranslationStringText.
v2 = bFixedData.tcStringText.
if v1 <> v2
then assign tTransString.tcTranslationStringText = bFixedData.tcStringText
tTransString.tc_Status = (if tTransString.tc_Status = "" then "C" else tTransString.tc_Status).
end.
else do:
create tTransString.
assign tTransString.tiParentObject_ID = tReportTranslation.ReportTranslation_ID
tTransString.tcLngCode = entry(2,bFixedData.tcStringCode)
tTransString.tcTranslationStringText = bFixedData.tcStringText
tTransString.tc_Rowid = entry(2,bFixedData.tcStringCode) + "=" + tReportTranslation.tc_Rowid.
end.
end.