Description
OIAdjCreatePosting
Parameters
iiCompanyID | input | integer | Entity ID |
iiPostingYear | input | integer | PostingYear |
iiPostingPeriod | input | integer | PostingPeriod |
itPostingDate | input | date | PostingDate |
icPostingJournalCode | input | character | |
ocJournalTypeCode | output | character | |
ocLayerCode | output | character | Layer Code |
oiPostingID | output | integer | |
oiPostingVoucher | output | integer | |
ocPostingTcRowid | output | character | PostingTcRowid |
oiBJournalEntryId | output | integer | Instance-ID of BJournalEntry |
ocLCCurrencyCode | output | character | LCCurrencyCode |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
unused
program code (program6/bopenitemadjustment.p)
/* ================== */
/* Set default return */
/* ================== */
assign oiReturnStatus = -98.
/* ================================================================= */
/* Clear the instance and the external ones so we start from scratch */
/* Reset the data-items that represent the link to the posting */
/* ================================================================= */
<M-13 run StopExternalInstancesExceptBJE (output viFcReturnSuper (oiReturnStatus)) in BOpenItemAdjustment>
assign viMainPostingID = 0
viMainPostingVoucher = 0
vcMainPostingTcRowid = "":U
vcMainPostingJournalCode = "":U.
empty temp-table tOIAdj.
empty temp-table tOICMovement.
empty temp-table tOIDMovement.
empty temp-table tOIOpenBalance.
/* ============================================ */
/* Replace Unknown values + Validate parameters */
/* ============================================ */
if iiPostingYear = ? then assign iiPostingYear = 0.
if iiPostingPeriod = ? then assign iiPostingPeriod = 0.
if icPostingJournalCode = ? then assign icPostingJournalCode = "":U.
if iiPostingYear = 0 or
iiPostingPeriod = 0 or
icPostingJournalCode = "":U
then do :
assign vcMsgOIAdj = trim(substitute(#T-16'You must enter the posting year (&1), GL period (&2), and daybook (&3).':255(2909)T-16#,string(iiPostingYear),string(iiPostingPeriod),icPostingJournalCode))
oiReturnStatus = -1.
<M-1 run SetMessage
(input vcMsgOIAdj (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QADFIN-675':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BOpenItemAdjustment>
Return.
end. /* if iiPostingYear = 0 or */
/* ============================================== */
/* Get the Layer and Control based on the Journal */
/* ============================================== */
<Q-8 run JournalByJournalLayer (all) (Read) (NoCache)
(input iiCompanyID, (CompanyId)
input icPostingJournalCode, (JournalCode)
input ?, (CandoJournalTypeCode)
input ?, (LayerCode)
input ?, (CandoLayerTypeCode)
input ?, (JournalID)
input ?, (JournalIsActive)
output dataset tqJournalByJournalAndLayer) in BJournal >
find first tqJournalByJournalAndLayer no-lock NO-error.
if not available tqJournalByJournalAndLayer
then do :
assign vcMsgOIAdj = trim(substitute(#T-17'The system cannot determine the layer based on the daybook (&1).':255(2910)T-17#,icPostingJournalCode))
oiReturnStatus = -1.
<M-9 run SetMessage
(input vcMsgOIAdj (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QADFIN-678':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BOpenItemAdjustment>
Return.
end. /* if not available tqJournalByJournalAndLayer */
if tqJournalByJournalAndLayer.tcJournalTypeCode <> {&JOURNALTYPE-CREDITORADJUSTMENT} and
tqJournalByJournalAndLayer.tcJournalTypeCode <> {&JOURNALTYPE-DEBTORADJUSTMENT}
then do:
assign vcMsgOIAdj = trim(subst(#T-18'The daybook type of the selected daybook must be &1 or &2.':255(2911)T-18#, {&JOURNALTYPE-CREDITORADJUSTMENT-TR}, {&JOURNALTYPE-DEBTORADJUSTMENT-TR}))
oiReturnStatus = -1.
<M-15 run SetMessage
(input vcMsgOIAdj (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QADFIN-1141':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BOpenItemAdjustment>
return.
end. /* if tqJournalByJournalAndLayer.tcJournalTypeCode <> {&JOURNALTYPE-CREDITORADJUSTMENT} and */
if tqJournalByJournalAndLayer.tcJournalControl <> {&JOURNALCONTROL-FINANCIAL}
then do:
assign vcMsgOIAdj = trim(substitute(#T-25'A daybook with an invalid Daybook control (&1) was specified.':255(69632)T-25#, tqJournalByJournalAndLayer.tcJournalControl)) + chr(10) +
trim(substitute(#T-26'You can only specify daybooks with control &1.':255(69634)T-26#,{&JOURNALCONTROL-FINANCIAL-TR}))
oiReturnStatus = -1.
<M-23 run SetMessage
(input vcMsgOIAdj (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QadFin-8205':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BOpenItemAdjustment>
return.
end. /* if tqJournalByJournalAndLayer.tcJournalControl <> {&JOURNALCONTROL-FINANCIAL} */
assign ocJournalTypeCode = tqJournalByJournalAndLayer.tcJournalTypeCode
ocLayerCode = tqJournalByJournalAndLayer.tcLayerCode.
/* ================================================================== */
/* Start instance of JE / No instance of BJournalEntry may exist yet */
/* ================================================================== */
if viBJournalEntryID <> 0 and
viBJournalEntryID <> ?
then do :
assign vcMsgOIAdj = trim(#T-19'Internal error. The system cannot find an active instance of the journal entry. Contact your system administrator.':255(2912)T-19#) + chr(10) +
trim(substitute(#T-20'Journal entry: &1.':255(2913)T-20#,string(viBJournalEntryID))).
oiReturnStatus = -1.
<M-5 run SetMessage
(input vcMsgOIAdj (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'S':U (icType),
input 1 (iiSeverity),
input '':U (icRowid),
input 'QADFIN-676':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BOpenItemAdjustment>
Return.
end. /* if viBJournalEntryID <> 0 */
<I-4 {bFcStartAndOpenInstance
&ADD-TO-TRANSACTION = "true"
&CLASS = "BJournalEntry"}>
assign oiBJournalEntryId = viBJournalEntryID
vlBJEIsStartedFromOIAdj = true.
<M-14 run SetPublicData (input 'vlPostingMustBeBalanced':U (icDataList),
input 'false':U (icValueList),
output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
/* ================================================================== */
/* Call method in BJournalEntry that creates the posting header */
/* ================================================================== */
<M-6 run AddPostingHeader
(input iiCompanyID (iiCompanyId),
input iiPostingYear (iiPeriodYear),
input iiPostingPeriod (iiPeriodPeriod),
input icPostingJournalCode (icJournalCode),
input '' (icReportingJournalCode),
input 0 (iiVoucher),
input itPostingDate (itPostingDate),
input ? (itValueDate),
input substring((string(iiPostingYear, '9999':U) + '/':U + string(iiPostingPeriod,'99':U) + '/ ':U + icPostingJournalCode + '/':U + trim(#T-21'Open Item Adjustment':30(2900)t-21#)),1,36, 'CHARACTER') (icPostingText),
input '':U (icPostingBusinessRelationText),
input '':U (icPostingInvoiceReferenceText),
input '':U (icPostingParentText),
input ? (iiBPeriodId),
input ? (icPostingOriginAddressCode),
input ? (icPostingOriginDocument),
input ? (icPostingOriginDocumentType),
input '':U (icBatchNumber),
input ? (icBankImpLineRef),
output oiPostingID (oiPostingId),
output ocPostingTcRowid (ocRowid),
output oiPostingVoucher (oiPostingVoucher),
output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
if viFcReturnSuper <> 0
then do :
<I-10 {bFcCloseAndStopInstance
&CLASS = "BJournalEntry"}>
assign vcMsgOIAdj = trim(substitute(#T-22'An error occurred while creating the posting: &1. See further on for more details.':255(2914)T-22#,string(viFcReturnSuper))).
oiReturnStatus = viFcReturnSuper.
<M-7 run SetMessage
(input vcMsgOIAdj (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QADFIN-677':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BOpenItemAdjustment>
Return.
end. /* if viFcReturnSuper <> 0 */
assign viMainPostingID = oiPostingID
vcMainPostingTcRowid = ocPostingTcRowid
viMainPostingVoucher = oiPostingVoucher
vcMainPostingJournalCode = icPostingJournalCode
vcMainPostingJournalTypeCode = tqJournalByJournalAndLayer.tcJournalTypeCode
vtMainPostingDate = itPostingDate
viMainPostingYear = iiPostingYear
viMainPostingPeriod = iiPostingPeriod
viMainPostingCompanyID = iiCompanyID
ocLCCurrencyCode = vcCompanyLC.
/* ===================================================== */
/* Everything OK; Close the Instance without stopping it */
/* ===================================================== */
<I-11 {bFcCloseInstance
&CLASS = "BJournalEntry"}>
/* ================== */
/* Set default return */
/* ================== */
assign oiReturnStatus = 0.