project QadFinancials > class BAccountingInterface > method ExecuteFileExport

Description

This method is used to generate the final report files by catch input parameters from User Interface


Parameters


icAcctLevelinputcharacterAccount Level.
icIndustryinputcharacterIndustry
icOrgCodeinputcharacterOrganization Code.
icFiscalYearinputcharacterFiscal Year (format YYYY)
icAcctBookNoinputcharacterAccount Book Number.
itFromDate1inputdateFrom Date1(Displayed on User Interface)
itToDate1inputdateTo Date1(Displayed on User Interface)
itFromDate2inputdateFrom Date2(Displayed on User Interface)
itToDate2inputdateTo Date2(Displayed on User Interface)
icCompanyIDListinputcharacterCompany List(selected)
tAcctIFTableinputtemp-tableTemp table to store Account Interface Filter information.
iiBudgetLevelinputintegerBudget Level.
icReportStructBSinputcharacterReport Structure of Balance Sheet Report.
icReportStructISinputcharacterReport Structure of Income Statement.
icLayerCodeinputcharacterLayer code.
icCOACrossRefCodeinputcharacter
iiAltCOALevelinputinteger
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program1/baccountinginterface.p)

if oiReturnStatus = 0
then oiReturnStatus = -98.

assign vlHavingReportsFail = false.

/* check whether user have reports to export */
find first tAcctIFTable where tAcctIFTable.AcctIFIsExport =  true and
                              tAcctIFTable.AcctIFCode     <> {&EXPORTREPORTCODE-GSSM} 
                              no-error.
if not available tAcctIFTable
then do:
    assign oiReturnStatus = -1.
    <M-41 run SetMessage
       (input  trim(#T-12'You have to select at least one record to export except format file.':100(61019)T-12#) (icMessage), 
        input  '':U (icArguments), 
        input  '':U (icFieldName), 
        input  '':U (icFieldValue), 
        input  'E':U (icType), 
        input  3 (iiSeverity), 
        input  '':U (icRowid), 
        input  'QadFin-6241':U (icFcMsgNumber), 
        input  '':U (icFcExplanation), 
        input  '':U (icFcIdentification), 
        input  '':U (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BAccountingInterface>
    return.
end. /* if not available tAcctIFTable */
 
/* put code and file name list to tFilter */
empty temp-table tFilter.

/* assign all filters into tFilter */
create tFilter. 
assign 
    tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-ACCBOOKNO}
    tFilter.tcOperator = '=':U
    tFilter.tcParameterValue = icAcctBookNo.

create tFilter. 
assign 
    tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-ACCOUNTLEVEL}
    tFilter.tcOperator = '=':U
    tFilter.tcParameterValue = icAcctLevel.

create tFilter. 
assign 
    tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-INDUSTRY}
    tFilter.tcOperator = '=':U
    tFilter.tcParameterValue = icIndustry.

create tFilter. 
assign 
    tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-ORGCODE}
    tFilter.tcOperator = '=':U
    tFilter.tcParameterValue = icOrgCode.

create tFilter. 
assign 
    tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-BUDGETLEVEL}
    tFilter.tcOperator = '=':U
    tFilter.tcParameterValue = string(iiBudgetLevel).

create tFilter. 
assign 
    tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-ENTITYIDLIST}
    tFilter.tcOperator = '=':U
    tFilter.tcParameterValue = icCompanyIDList.

create tFilter. 
assign 
    tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-FISCALYEAR}
    tFilter.tcOperator = '=':U
    tFilter.tcParameterValue = icFiscalYear.

create tFilter. 
assign 
    tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-FROMDATE1}
    tFilter.tcOperator = '=':U
    tFilter.tcParameterValue = string(itFromDate1).

create tFilter. 
assign 
    tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-TODATE1}
    tFilter.tcOperator = '=':U
    tFilter.tcParameterValue = string(itToDate1).

create tFilter. 
assign 
    tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-FROMDATE2}
    tFilter.tcOperator = '=':U
    tFilter.tcParameterValue = string(itFromDate2).

create tFilter. 
assign 
    tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-TODATE2}
    tFilter.tcOperator = '=':U
    tFilter.tcParameterValue = string(itToDate2).

create tFilter.
assign
     tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-LAYERCODE}
     tFilter.tcOperator = '=':U
     tFilter.tcParameterValue = icLayerCode.

create tFilter.
assign
     tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-REPORTSTRUCTBS}
     tFilter.tcOperator = '=':U
     tFilter.tcParameterValue = icReportStructBS.

create tFilter.
assign
     tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-REPORTSTRUCTIS}
     tFilter.tcOperator = '=':U
     tFilter.tcParameterValue = icReportStructIS.

create tFilter.
assign
     tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-COACROSSREFCODE}
     tFilter.tcOperator = '=':U
     tFilter.tcParameterValue = icCOACrossRefCode.

/* generate prodataset first, assemble the correct format file according to the prodataset status */
for each tAcctIFTable where tAcctIFTable.AcctIFIsExport = true 
                        and tAcctIFTable.AcctIFCode <> {&EXPORTREPORTCODE-GSSM} 
                        by  tAcctIFTable.AcctIF_ID:   

    /* put report code in tFilter and ensure only one report code record in the temp-table */
    find first tFilter where tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-REPORTCODE} no-error.
    if available tFilter
    then do :        
        tFilter.tcParameterValue = tAcctIFTable.AcctIFCode.
    end. /* end of if available */
    else do:        
        create tFilter.
        assign tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-REPORTCODE}
               tFilter.tcOperator = '=':U
               tFilter.tcParameterValue = tAcctIFTable.AcctIFCode.
    end. /* end of else do */
    /* clear the handle before use it to handle another dataset */
    if valid-handle(vhProDS)
    then vhProDS:clear().
   
    /* assign return handle to local handle for cache */      
    <M-40 run BulidProDataSet
       (input  tFilter (tFilter), 
        input  '' (icLanguageCode), 
        output vhProDs (ohProDs), 
        output oiReturnStatus (oiReturnStatus)) in BAccountingInterface>

    if oiReturnStatus >= 0 
    then do:
        /* prepare format file needed file name string */
        assign vcFileNameList = vcFileNameList + tAcctIFTable.AcctIFCode + chr(2) + tAcctIFTable.AcctIFExportFileName + chr(2).      
        case tAcctIFTable.AcctIFCode:
            when {&EXPORTREPORTCODE-DZZB}
            then do:
                create dataset vhAccntBook in widget-pool "non-persistent".
                vhAccntBook:create-like(vhProDs).
                vhAccntBook:copy-dataset(vhProDs).
            end.
            when {&EXPORTREPORTCODE-KJKM}
            then do:
                create dataset vhChartOfAccnt in widget-pool "non-persistent".
                vhChartOfAccnt:create-like(vhProDs).
                vhChartOfAccnt:copy-dataset(vhProDs).
            end.
            when {&EXPORTREPORTCODE-BMXX}
            then do:
                create dataset vhDepartment in widget-pool "non-persistent".
                vhDepartment:create-like(vhProDs).
                vhDepartment:copy-dataset(vhProDs).
            end.
            when {&EXPORTREPORTCODE-WLDW}
            then do:
                create dataset vhEntity in widget-pool "non-persistent".
                vhEntity:create-like(vhProDs).
                vhEntity:copy-dataset(vhProDs).
            end.
            when {&EXPORTREPORTCODE-XMXX}
            then do:
                create dataset vhProjectData in widget-pool "non-persistent".
                vhProjectData:create-like(vhProDs).
                vhProjectData:copy-dataset(vhProDs).
            end.
            when {&EXPORTREPORTCODE-KMYE}
            then do:
                create dataset vhAccntBalance in widget-pool "non-persistent".
                vhAccntBalance:create-like(vhProDs).
                vhAccntBalance:copy-dataset(vhProDs).
            end.
            when {&EXPORTREPORTCODE-JZPZ}
            then do:
                create dataset vhGLVoucher in widget-pool "non-persistent".
                vhGLVoucher:create-like(vhProDs).
                vhGLVoucher:copy-dataset(vhProDs).
            end.
            when {&EXPORTREPORTCODE-Q_ZCFZ}
            then do:
                create dataset vhBalanceSheet in widget-pool "non-persistent".
                vhBalanceSheet:create-like(vhProDs).
                vhBalanceSheet:copy-dataset(vhProDs).
            end.
            when {&EXPORTREPORTCODE-Q_LR}
            then do:
                create dataset vhIncomeStatement in widget-pool "non-persistent".
                vhIncomeStatement:create-like(vhProDs).
                vhIncomeStatement:copy-dataset(vhProDs).
            end.
        end.
    end. /* if oiReturnStatus >= 0 */
    /*if viFcReturnSuper < 0
    then do:*/
    else do:
        assign tAcctIFTable.AcctIFStatus         = {&EXPORT-STATUS-FAILED-TR} 
               tAcctIFTable.AcctIFLastExportDate = today 
               tAcctIFTable.Usr_ID               = viUsrId
               /*oiReturnStatus                    = viFcReturnSuper*/
               tAcctIFTable.AcctIFIsExport       = false. /* assign isExport to false is for next loop to ignore it */
        assign vlHavingReportsFail = true.
    end.
end. /* end of for each tAcctIFTable where tAcctIFTable.AcctIFIsExport = true */


/* call generating logic, generate format file first */
/* check whether there is at least one successful bulidprodataset */
/*if vcFileNameList = '':U or vcFileNameList = ?
then do:
     assign oiReturnStatus = -1.
     return.
end.*/

/* to generate format file as long as we have report to export  */
for first tAcctIFTable where tAcctIFTable.AcctIFIsExport = true 
                         and tAcctIFTable.AcctIFCode = {&EXPORTREPORTCODE-GSSM}:
    /* put file name list to the temp-table */
    create tFilter. 
    assign 
        tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-FILENAMELIST}
        tFilter.tcOperator = '=':U
        tFilter.tcParameterValue = vcFileNameList.
   
    /* avoid to create multiple export code record in tFilter */
    find first tFilter where tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-REPORTCODE}  no-error.
    if available tFilter
    then do :        
       tFilter.tcParameterValue = {&EXPORTREPORTCODE-GSSM}.
    end. /* end of if available */
    else do:        
        create tFilter.
        assign 
            tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-REPORTCODE}
            tFilter.tcOperator = '=':U
            tFilter.tcParameterValue = {&EXPORTREPORTCODE-GSSM}.
    end. /* end of else */

    /* build the prodataset for format file */   
    <M-17 run BulidProDataSet
       (input  tFilter (tFilter), 
        input  '':U (icLanguageCode), 
        output vhFormat (ohProDs), 
        output oiReturnStatus (oiReturnStatus)) in BAccountingInterface>   

    if oiReturnStatus >= 0
    then do:
        /* generate format file if the prodataset is valid */
        <M-18 run GenerateFile
           (input  vhFormat (ihProDs), 
            output oiReturnStatus (oiReturnStatus)) in BAccountingInterface>

        if oiReturnStatus >= 0 
        then do:
            /* status change back to preprocessor */      
            assign
                tAcctIFTable.AcctIFStatus         = {&EXPORT-STATUS-SUCCESSFUL-TR}               
                tAcctIFTable.AcctIFLastExportDate = today
                tAcctIFTable.Usr_ID               = viUsrId.
        end.
        /*if viFcReturnSuper < 0
        then do:*/
        else do:
            /*assign oiReturnStatus = viFcReturnSuper.*/
            /* no need to export other reports without format file */
            assign vlHavingReportsFail = true.
            return.
        end.
    end. /* if oiReturnStatus >= 0 */
    else do:
        assign vlHavingReportsFail = true.
    end.
    /*if viFcReturnSuper < 0
    then do:        
        assign oiReturnStatus = viFcReturnSuper.     
    /* no need to export other reports without format file*/
    /* return. */ 
    end. /* end of if viFcReturnSuper < 0 */    */
end. /* end of for first */

/* export others report */
for each tAcctIFTable where tAcctIFTable.AcctIFIsExport = true 
                        and tAcctIFTable.AcctIFCode <> {&EXPORTREPORTCODE-GSSM} 
                        by  tAcctIFTable.AcctIF_ID:
    /* put report code in tFilter and ensure only one report code record in the temp-table */
    find first tFilter where tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-REPORTCODE} no-error.
    if available tFilter
    then do:
        tFilter.tcParameterValue = tAcctIFTable.AcctIFCode.
    end. /* end of if available */
    else do:        
        create tFilter.
        assign tFilter.tcBusinessFieldName = {&BUSINESSFIELDNAME-REPORTCODE}
               tFilter.tcOperator = '=':U
               tFilter.tcParameterValue = tAcctIFTable.AcctIFCode.
    end. /* end of else do */
   
    /* generate others report */
    /* assign return handle to local handle for cache */   

    case tAcctIFTable.AcctIFCode:
        when {&EXPORTREPORTCODE-DZZB}
        then do:
            <M-19 run GenerateFile
               (input  vhAccntBook (ihProDs), 
                output oiReturnStatus (oiReturnStatus)) in BAccountingInterface>.
        end.
        when {&EXPORTREPORTCODE-KJKM}
        then do:
            <M-20 run GenerateFile
               (input  vhChartOfAccnt (ihProDs), 
                output oiReturnStatus (oiReturnStatus)) in BAccountingInterface>.
        end.
        when {&EXPORTREPORTCODE-BMXX}
        then do: 
            <M-21 run GenerateFile
               (input  vhDepartment (ihProDs), 
                output oiReturnStatus (oiReturnStatus)) in BAccountingInterface>.
        end.
        when {&EXPORTREPORTCODE-WLDW}
        then do:
            <M-22 run GenerateFile
               (input  vhEntity (ihProDs), 
                output oiReturnStatus (oiReturnStatus)) in BAccountingInterface>.
        end.
        when {&EXPORTREPORTCODE-XMXX}
        then do:
            <M-23 run GenerateFile
               (input  vhProjectData (ihProDs), 
                output oiReturnStatus (oiReturnStatus)) in BAccountingInterface>.
        end.
        when {&EXPORTREPORTCODE-KMYE}
        then do:
            <M-24 run GenerateFile
               (input  vhAccntBalance (ihProDs), 
                output oiReturnStatus (oiReturnStatus)) in BAccountingInterface>.
        end.
        when {&EXPORTREPORTCODE-JZPZ}
        then do:
            <M-25 run GenerateFile
               (input  vhGLVoucher (ihProDs), 
                output oiReturnStatus (oiReturnStatus)) in BAccountingInterface>.
        end.
        when {&EXPORTREPORTCODE-Q_ZCFZ}
        then do:
            <M-26 run GenerateFile
               (input  vhBalanceSheet (ihProDs), 
                output oiReturnStatus (oiReturnStatus)) in BAccountingInterface>.
        end.
        when {&EXPORTREPORTCODE-Q_LR}
        then do:
            <M-27 run GenerateFile
               (input  vhIncomeStatement (ihProDs), 
                output oiReturnStatus (oiReturnStatus)) in BAccountingInterface>.
        end.
    end. /* end of case */

    if oiReturnStatus >= 0 
    then do:
        /* status change back to preprocessor */      
        assign 
            tAcctIFTable.AcctIFStatus         = {&EXPORT-STATUS-SUCCESSFUL-TR}               
            tAcctIFTable.AcctIFLastExportDate = today
            tAcctIFTable.Usr_ID               = viUsrId.
    end. /* end of if >= 0 */
    /*if viFcReturnSuper < 0
    then do:*/
    else do:
        assign tAcctIFTable.AcctIFStatus         = {&EXPORT-STATUS-FAILED-TR} 
               tAcctIFTable.AcctIFLastExportDate = today 
               tAcctIFTable.Usr_ID               = viUsrId
               /*oiReturnStatus                    = viFcReturnSuper*/.
        assign vlHavingReportsFail = true.
    end.
end. /* end of for each tAcctIFTable where tAcctIFTable.AcctIFIsExport = true */

/* update table AcctIF */
<M-4 run ApiUpdateAcctIF
   (input  tAcctIFTable (tAcctIFTable), 
    output viFcReturnSuper (oiReturnStatus)) in BAccountingInterface>
if viFcReturnSuper < 0 and oiReturnStatus >= 0
then do:
    assign oiReturnStatus = viFcReturnSuper
           vcMessageInfo  = #T-9'The system failed to save the export data to the report table.':100(59531)T-9#.
    <M-5 run SetMessage
       (input  vcMessageInfo (icMessage), 
        input  '':U (icArguments), 
        input  '':U (icFieldName), 
        input  '':U (icFieldValue), 
        input  'E':U (icType), 
        input  3 (iiSeverity), 
        input  '':U (icRowid), 
        input  'QadFin-6016':U (icFcMsgNumber), 
        input  '':U (icFcExplanation), 
        input  '':U (icFcIdentification), 
        input  '':U (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BAccountingInterface>
    return.
end. /* end of viFcReturnSuper < 0 and oiReturnStatus >= 0 */

/* update table AcctIFFilter */
if viBAcctIFFiltersID = 0 or viBAcctIFFiltersID = ?
then do:
    <I-7 {bFcStartAndOpenInstance
         &ADD-TO-TRANSACTION   = "false"
         &CLASS                = "BAcctIFFilters"}>
end. /* end of if vibacctiffitersid */          
<M-6 run ApiUpdateAcctIFFilter
   (input  icAcctLevel (icAcctLevel), 
    input  icIndustry (icIndustry), 
    input  icOrgCode (icOrgCode), 
    input  icFiscalYear (icFiscalYear), 
    input  icAcctBookNo (icAcctBookNo), 
    input  itFromDate1 (itFromDate1), 
    input  itToDate1 (itToDate1), 
    input  itFromDate2 (itFromDate2), 
    input  itToDate2 (itToDate2), 
    input  iiBudgetLevel (iiBudgetLevel), 
    input  icReportStructBS (icReportStructBS), 
    input  icReportStructIS (icReportStructIS), 
    input  icLayerCode (icLayerCode), 
    input  icCOACrossRefCode (icCOACrossRefCode), 
    input  iiAltCOALevel (iiAltCOALevel), 
    output viFcReturnSuper (oiReturnStatus)) in BAcctIFFilters>
if viFcReturnSuper < 0 and oiReturnStatus >= 0
then do:
    assign oiReturnStatus = viFcReturnSuper
           vcMessageInfo  = #T-11'The system failed to save the filter data to the filter table.':100(59532)T-11#.
    <M-10 run SetMessage
         (input  vcMessageInfo (icMessage), 
          input  '':U (icArguments), 
          input  '':U (icFieldName), 
          input  '':U (icFieldValue), 
          input  'E':U (icType), 
          input  3 (iiSeverity), 
          input  '':U (icRowid), 
          input  'QadFin-6040':U (icFcMsgNumber), 
          input  '':U (icFcExplanation), 
          input  '':U (icFcIdentification), 
          input  '':U (icFcContext), 
          output viFcReturnSuper (oiReturnStatus)) in BAccountingInterface>
    <I-42 {bFcCloseAndStopInstance
         &CLASS           = "BAcctIFFilters"}>
    return.
end. /* end of viFcReturnSuper < 0 and oiReturnStatus >=0 */
<I-8 {bFcCloseAndStopInstance
     &CLASS           = "BAcctIFFilters"}>           
        
/* clear the tFilter after exporting */
empty temp-table tFilter.

/* clear buffers */
if valid-handle(vhAccntBalance)
then vhAccntBalance:clear().

if valid-handle(vhAccntBook)
then vhAccntBook:clear().

if valid-handle(vhBalanceSheet)
then vhBalanceSheet:clear().

if valid-handle(vhChartOfAccnt)
then vhChartOfAccnt:clear().

if valid-handle(vhDepartment)
then vhDepartment:clear().

if valid-handle(vhEntity)
then vhEntity:clear().

if valid-handle(vhFormat)
then vhFormat:clear().

if valid-handle(vhGLVoucher)
then vhGLVoucher:clear().

if valid-handle(vhIncomeStatement)
then vhIncomeStatement:clear().

if valid-handle(vhProjectData)
then vhProjectData:clear().

if valid-handle(vhReturnProDS)
then vhReturnProDS:clear().

if vlHavingReportsFail = true
then assign oiReturnStatus = -1.

if oiReturnStatus = -98
then oiReturnStatus = 0.