project QadFinancials > class BFcTranslation > method DataSaveTranslationsDIRECT


Parameters


oiTranslationsRead#outputinteger
oiTranslationsCreated#outputinteger
oiTranslationsUpdated#outputinteger
oiTranslationsDeleted#outputinteger
olUpdatesDoneoutputlogical
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BFcTranslation.LoadResourceFile


program code (program9/bfctranslation.p)

define var vcCaseTranslationStringText          as char case-sensitive.
define var vcCaseTranslationOriginalTextString  as char case-sensitive.

/****************************************************************************/
/* Merge the tResourceFile to the database using native progress statements */
/* one string is treated in one transaction                                 */
/****************************************************************************/
<I-13 {WRITEDIRECTDBACCESS
     &WRITETABLENAMES = "'fcTranslation':U"}>


for each tResourceFile 
         TRANSACTION 
         on error undo, throw:

    assign oiTranslationsRead# = oiTranslationsRead# + 1.

    /* Search on unique index */
    find fcTranslation where
         fcTranslation.TranslationStringNumber  = tResourceFile.tiTranslationStringNumber  and
         fcTranslation.TranslationProjShortCode = tResourceFile.tcTranslationProjShortCode and
         fcTranslation.TranslationLanguageCode  = tResourceFile.tcTranslationLanguageCode
         no-lock no-error.

    if not available fcTranslation
    then do :
        create fcTranslation.
        assign olUpdatesDone                                = yes
               fcTranslation.TranslationStringNumber        = tResourceFile.tiTranslationStringNumber
               fcTranslation.TranslationProjShortCode       = tResourceFile.tcTranslationProjShortCode
               fcTranslation.TranslationLanguageCode        = tResourceFile.tcTranslationLanguageCode
               fcTranslation.TranslationStringText          = tResourceFile.tcTranslationStringText
               fcTranslation.TranslationOriginalTextString  = tResourceFile.tcTranslationStringText    
               fcTranslation.TranslationIsUpdatedByUser     = false           
               fcTranslation.BusinessClass                  = tResourceFile.Tcbusinessclass
               oiTranslationsCreated#                       = oiTranslationsCreated# + 1.
    
    end. /* if not available fcTranslation */
    
    else do :
        /* do a case-sensitive compare */
        assign vcCaseTranslationStringText         = tResourceFile.tcTranslationStringText
               vcCaseTranslationOriginalTextString = tResourceFile.tcTranslationStringText.
        if fcTranslation.BusinessClass         <> tResourceFile.tcBusinessClass                     OR 
           (fcTranslation.TranslationIsUpdatedByUser     = true and
            fcTranslation.TranslationOriginalTextString <> vcCaseTranslationOriginalTextString)     OR 
           (fcTranslation.TranslationIsUpdatedByUser <> true and 
            fcTranslation.TranslationStringText      <> vcCaseTranslationStringText)
        then do:
            find fcTranslation where
                 fcTranslation.TranslationStringNumber  = tResourceFile.tiTranslationStringNumber  and
                 fcTranslation.TranslationProjShortCode = tResourceFile.tcTranslationProjShortCode and
                 fcTranslation.TranslationLanguageCode  = tResourceFile.tcTranslationLanguageCode
                 exclusive-lock no-error no-wait.
            if available fcTranslation
            then do :
                /* Only update the translated string in case the user did not yet adapted it  */
                if fcTranslation.TranslationIsUpdatedByUser <> true 
                then assign fcTranslation.TranslationStringText  = tResourceFile.tcTranslationStringText.
                /* Update the original string */
                assign fcTranslation.TranslationOriginalTextString  = tResourceFile.tcTranslationStringText
                       fcTranslation.BusinessClass                  = tResourceFile.tcBusinessClass
                       olUpdatesDone                                = yes
                       oiTranslationsUpdated#                       = oiTranslationsUpdated# + 1. 
            end. /* if available fcTranslation */
        end. /* if fcTranslation.TranslationStringText <> vcCaseTranslationStringText or */
    end. /* if available fcTranslation */
    
end. /* for each tResourceFile */