Description
Creates postings
Parameters
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program1/bfixedassetrevaluation.p)
/* start and/or open the BJournalEntry instance */
if viBJournalEntryRevalID = 0 or viBJournalEntryRevalID = ?
then do:
<I-1 {bFcStartAndOpenInstance
&ADD-TO-TRANSACTION = "true"
&CLASS = "BJournalEntry"}>
assign vlBJEIsStartedFromReval = true.
end.
else do:
<I-2 {bFcOpenInstance
&CLASS = "BJournalEntry"}>
end.
/* Create JournalEntry for each tFAReval record.*/
for each tFAReval where
tFAReval.tc_Status = 'N':U
/*grouped by Asset code so we can easily create additional postings for an official book*/
group by tFAReval.tiFAAsset_ID:
/* Add Posting Header */
assign vcPostingText = (if tFAReval.tlFABookTypeIsOfficial
then trim(#T-21'Off Reval':20(14360)T-21#)
else trim(#T-28'Unoff Reval':20(14361)T-28#)) + " ":U +
trim(tFAReval.tcFAAssetCode) + " ":U +
trim(tFAReval.tcFAAssetBookCode).
<M-7 run AddPostingHeader
(input ? (iiCompanyId),
input viFARevalAccPeriodYear (iiPeriodYear),
input viFARevalAccPeriodPeriod (iiPeriodPeriod),
input tFAReval.tcRevaluationJournalCode (icJournalCode),
input '' (icReportingJournalCode),
input 0 (iiVoucher),
input vtFARevalPostingDate (itPostingDate),
input ? (itValueDate),
input vcPostingText (icPostingText),
input '':U (icPostingBusinessRelationText),
input '':U (icPostingInvoiceReferenceText),
input '':U (icPostingParentText),
input 0 (iiBPeriodId),
input ? (icPostingOriginAddressCode),
input ? (icPostingOriginDocument),
input ? (icPostingOriginDocumentType),
input '':U (icBatchNumber),
input ? (icBankImpLineRef),
output viPostingID (oiPostingId),
output vcRowid (ocRowid),
output viPostingVoucher (oiPostingVoucher),
output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus >= 0)
then assign oiReturnStatus = viFcReturnSuper.
/*do not continue with this posting if there were errors*/
if viFcReturnSuper < 0
then next.
/*create tFARevalPosting*/
<M-22 run AddDetailLine (input 'FARevalPosting':U (icTable),
input tFAReval.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BFixedAssetRevaluation>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus >= 0)
then assign oiReturnStatus = viFcReturnSuper.
if available tFARevalPosting
then assign tFARevalPosting.FARevalPostingType = if tFAReval.tlFABookTypeIsOfficial
then {&FAPOSTINGTYPE-OFFICIAL}
else {&FAPOSTINGTYPE-UNOFFICIAL}
tFARevalPosting.Posting_ID = viPostingId
tFARevalPosting.tiPeriodYear = viFARevalAccPeriodYear
tFARevalPosting.tiPeriodPeriod = viFARevalAccPeriodPeriod
tFARevalPosting.tcJournalCode = tFAReval.tcRevaluationJournalCode
tFARevalPosting.tiPostingVoucher= viPostingVoucher.
/* Add PostingLines for each tFARevalDet */
for each tFARevalDet where
tFARevalDet.tc_ParentRowid = tFAReval.tc_Rowid and
tFARevalDet.tc_Status = 'N':U:
if tFARevalDet.FARevalDetAmountLC > 0
then assign vdDebitLC = tFARevalDet.FARevalDetAmountLC
vdCreditLC = 0.
else assign vdDebitLC = 0
vdCreditLC = tFARevalDet.FARevalDetAmountLC * -1.
empty temp-table tRevalPostingSafs.
assign vcSafStructureCode = '':U.
for each tFARevalDetSaf where
tFARevalDetSaf.tc_ParentRowid = tFARevalDet.tc_Rowid and
tFARevalDetSaf.tc_Status = 'N':U:
if vcSafStructureCode = '':U
then assign vcSafStructureCode = tFARevalDetSaf.tcSafStructureCode.
create tRevalPostingSafs.
assign tRevalPostingSafs.tcSafConceptCode = tFARevalDetSaf.tcSafConceptCode
tRevalPostingSafs.tcSafCode = tFARevalDetSaf.tcSafCode.
end.
<M-8 run AddStandardPosting (input vcRowID (icPostingtcRowid),
input tFARevalDet.tcGLCode (icGLCode),
input tFARevalDet.tcDivisionCode (icDivisionCode),
input tFARevalDet.tcCostCentreCode (icCostCentreCode),
input '':U (icCostCentreText),
input tFARevalDet.tcProjectCode (icProjectCode),
input '':U (icProjectText),
input '':U (icIntercoBusinessRelationCode),
input vcCompanyLC (icCurrencyCode),
input vdDebitLC (idDebitTC),
input vdDebitLC (idDebitLC),
input ? (idDebitCC),
input ? (idDebitPC),
input vdCreditLC (idCreditTC),
input vdCreditLC (idCreditLC),
input ? (idCreditCC),
input ? (idCreditPC),
input 0 (idQty),
input '':U (icLineText),
input '':U (icSafText),
input tRevalPostingSafs (tDefaultSafs),
input {&EXCHANGERATETYPE-ACCOUNTING} (icExchangeRateType),
input 1 (idExchangeRate),
input 1 (idExchangeRateScale),
output viPostingLineID (oiPostingLineId),
input ? (iiSafStructureId),
input vcSafStructureCode (icSafStructureCode),
input ? (icAllocationKey),
output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus >= 0)
then assign oiReturnStatus = viFcReturnSuper.
end.
/*ONLY FOR OFFICIAL BOOKS*/
if not tFAReval.tlFABookTypeIsOfficial
then next.
/*get all non-official books of the asset*/
if first-of (tFAReval.tiFAAsset_ID)
then do:
empty temp-table tqFAAssetBookByFARevalAddPost.
<Q-27 run FAAssetBookByFARevalAddPost (all) (Read) (NoCache)
(input viCompanyId, (CompanyId)
input tFAReval.tiFAAsset_ID, (FAAssetId)
input false, (FABookTypeIsOfficial)
output dataset tqFAAssetBookByFARevalAddPost) in BFixedAssetAsset >
end.
/*additional postings into those non-official books retrieved above*/
for each tqFAAssetBookByFARevalAddPost:
/* Add Posting Header */
assign vcPostingText = trim(#T-26'Reverse Reval':20(14362)T-26#) + " ":U +
trim(tFAReval.tcFAAssetCode) + " ":U +
trim(tFAReval.tcFAAssetBookCode).
<M-23 run AddPostingHeader
(input ? (iiCompanyId),
input viFARevalAccPeriodYear (iiPeriodYear),
input viFARevalAccPeriodPeriod (iiPeriodPeriod),
input tqFAAssetBookByFARevalAddPost.tcRevaluationJournalCode (icJournalCode),
input '' (icReportingJournalCode),
input 0 (iiVoucher),
input vtFARevalPostingDate (itPostingDate),
input ? (itValueDate),
input vcPostingText (icPostingText),
input '':U (icPostingBusinessRelationText),
input '':U (icPostingInvoiceReferenceText),
input '':U (icPostingParentText),
input 0 (iiBPeriodId),
input ? (icPostingOriginAddressCode),
input ? (icPostingOriginDocument),
input ? (icPostingOriginDocumentType),
input '':U (icBatchNumber),
input ? (icBankImpLineRef),
output viPostingID (oiPostingId),
output vcRowid (ocRowid),
output viPostingVoucher (oiPostingVoucher),
output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus >= 0)
then assign oiReturnStatus = viFcReturnSuper.
/*do not continue with this posting if there were errors*/
if viFcReturnSuper < 0
then next.
/*create tFARevalPosting*/
<M-24 run AddDetailLine (input 'FARevalPosting':U (icTable),
input tFAReval.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BFixedAssetRevaluation>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus >= 0)
then assign oiReturnStatus = viFcReturnSuper.
if available tFARevalPosting
then assign tFARevalPosting.FARevalPostingType = {&FAPOSTINGTYPE-REVERSE}
tFARevalPosting.Posting_ID = viPostingId
tFARevalPosting.tiPeriodYear = viFARevalAccPeriodYear
tFARevalPosting.tiPeriodPeriod = viFARevalAccPeriodPeriod
tFARevalPosting.tcJournalCode = tqFAAssetBookByFARevalAddPost.tcRevaluationJournalCode
tFARevalPosting.tiPostingVoucher= viPostingVoucher.
/* Add PostingLines for each tFARevalDet */
for each tFARevalDet where
tFARevalDet.tc_ParentRowid = tFAReval.tc_Rowid and
tFARevalDet.tc_Status = 'N':U:
/*REVERSE POSTING, so amount > 0 is posted on Credit*/
if tFARevalDet.FARevalDetAmountLC > 0
then assign vdCreditLC = tFARevalDet.FARevalDetAmountLC
vdDebitLC = 0.
else assign vdCreditLC = 0
vdDebitLC = tFARevalDet.FARevalDetAmountLC * -1.
empty temp-table tRevalPostingSafs.
assign vcSafStructureCode = '':U.
for each tFARevalDetSaf where
tFARevalDetSaf.tc_ParentRowid = tFARevalDet.tc_Rowid and
tFARevalDetSaf.tc_Status = 'N':U:
if vcSafStructureCode = '':U
then assign vcSafStructureCode = tFARevalDetSaf.tcSafStructureCode.
create tRevalPostingSafs.
assign tRevalPostingSafs.tcSafConceptCode = tFARevalDetSaf.tcSafConceptCode
tRevalPostingSafs.tcSafCode = tFARevalDetSaf.tcSafCode.
end.
<M-25 run AddStandardPosting (input vcRowID (icPostingtcRowid),
input tFARevalDet.tcGLCode (icGLCode),
input tFARevalDet.tcDivisionCode (icDivisionCode),
input tFARevalDet.tcCostCentreCode (icCostCentreCode),
input '':U (icCostCentreText),
input tFARevalDet.tcProjectCode (icProjectCode),
input '':U (icProjectText),
input '':U (icIntercoBusinessRelationCode),
input vcCompanyLC (icCurrencyCode),
input vdDebitLC (idDebitTC),
input vdDebitLC (idDebitLC),
input ? (idDebitCC),
input ? (idDebitPC),
input vdCreditLC (idCreditTC),
input vdCreditLC (idCreditLC),
input ? (idCreditCC),
input ? (idCreditPC),
input 0 (idQty),
input '':U (icLineText),
input '':U (icSafText),
input tRevalPostingSafs (tDefaultSafs),
input {&EXCHANGERATETYPE-ACCOUNTING} (icExchangeRateType),
input 1 (idExchangeRate),
input 1 (idExchangeRateScale),
output viPostingLineID (oiPostingLineId),
input ? (iiSafStructureId),
input vcSafStructureCode (icSafStructureCode),
input ? (icAllocationKey),
output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus >= 0)
then assign oiReturnStatus = viFcReturnSuper.
end.
end.
end.
/* Validate Component and Additional updates */
if vlBJEIsStartedFromReval = true
then do:
<M-13 run ValidateBCAndAdditionalUpdates (output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = 0)
then assign oiReturnStatus = viFcReturnSuper.
end.
/* close the BJournalEntry instance */
<I-10 {bFcCloseInstance
&CLASS = "BJournalEntry"}>