project BLF > class BReportTranslation > method apiSynchroniseUpdateTranslation


Parameters


iiClassIdinputinteger
iiReportIdinputinteger
icStringCodeinputcharacter
icStringTextinputcharacter
icClassNameinputcharacter
icReportNameinputcharacter
icFixedDataClassNameinputcharacter
icFixedDataReportNameinputcharacter
olUpdatesDoneoutputlogical
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


BLF
method BReportTranslation.apiSynchronise


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.