Description
This method is used to generate the final report files by catch input parameters from User Interface
Parameters
icAcctLevel | input | character | Account Level. |
icIndustry | input | character | Industry |
icOrgCode | input | character | Organization Code. |
icFiscalYear | input | character | Fiscal Year (format YYYY) |
icAcctBookNo | input | character | Account Book Number. |
itFromDate1 | input | date | From Date1(Displayed on User Interface) |
itToDate1 | input | date | To Date1(Displayed on User Interface) |
itFromDate2 | input | date | From Date2(Displayed on User Interface) |
itToDate2 | input | date | To Date2(Displayed on User Interface) |
icCompanyIDList | input | character | Company List(selected) |
tAcctIFTable | input | temp-table | Temp table to store Account Interface Filter information. |
iiBudgetLevel | input | integer | Budget Level. |
icReportStructBS | input | character | Report Structure of Balance Sheet Report. |
icReportStructIS | input | character | Report Structure of Income Statement. |
icLayerCode | input | character | Layer code. |
icCOACrossRefCode | input | character | |
iiAltCOALevel | input | integer | |
oiReturnStatus | output | integer | Return 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.