| iiCompanyId | input | integer | Company ID of the caller |
| iiPeriodYear | input | integer | Accounting Year |
| iiPeriodPeriod | input | integer | accounting period |
| icJournalCode | input | character | accounting journal |
| icReportingJournalCode | input | character | |
| iiVoucher | input | integer | When zero, a number will be fetched. When not zero, this number will be used. |
| itPostingDate | input | date | posting date |
| itValueDate | input | date | value date (optional) |
| icPostingText | input | character | PostingText |
| icPostingBusinessRelationText | input | character | PostingBusinessRelationText |
| icPostingInvoiceReferenceText | input | character | PostingInvoiceReferenceText |
| icPostingParentText | input | character | PostingParentText |
| iiBPeriodId | input | integer | Instance of Period |
| icPostingOriginAddressCode | input | character | customer or supplier code (not used anymore) |
| icPostingOriginDocument | input | character | Invoice number or description of the line or year/number or .....(not used anymore) |
| icPostingOriginDocumentType | input | character | Invoice Type or document type or journal type or ....(not used anymore) |
| icBatchNumber | input | character | Batch number of created posting. |
| icBankImpLineRef | input | character | Bank Importing Reference |
| oiPostingId | output | integer | |
| ocRowid | output | character | tposting.tc_Rowid |
| oiPostingVoucher | output | integer | voucher number |
| oiReturnStatus | output | integer | Return status of the method. |
QadFinancials
/* Normalize input paramters */
if iiCompanyId = 0 or iiCompanyId = ? then assign iiCompanyId = viCompanyId.
if icPostingOriginAddressCode = ? then assign icPostingOriginAddressCode = "":U.
if icPostingOriginDocument = ? then assign icPostingOriginDocument = "":U.
if icPostingOriginDocumentType = ? then assign icPostingOriginDocumentType = "":U.
if icReportingJournalCode = ? then assign icReportingJournalCode = "":U.
if iiPeriodYear = 0
or iiPeriodYear = ?
/* or iiPeriodPeriod = 0 - LBO Zero period is a valid period */
or iiPeriodPeriod = ?
then do:
assign vcMessage = trim(#T-14'You must enter the GL calendar year and GL period.':150(3298)T-14#)
oiReturnStatus = -3.
<M-6 run SetMessage (input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QADFIN-869':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BPosting>
return.
end.
<Q-13 run PeriodByYearPeriodNull (all) (Read) (NoCache)
(input iiCompanyId, (CompanyId)
input iiPeriodYear, (PeriodYear)
input iiPeriodPeriod, (PeriodPeriod)
input ?, (PeriodId)
output dataset tqPeriodByYearPeriodNull) in BPeriod >
find first tqPeriodByYearPeriodNull no-error.
if not available tqPeriodByYearPeriodNull
then do:
assign viBPeriodPostingID = iiBPeriodId
vlPeriodExists = false.
if viBPeriodPostingID <> 0 and viBPeriodPostingID <> ?
then do:
<I-12 {bFcOpenInstance
&CLASS = "BPeriod"}>
<M-9 run CheckPeriodExistence
(input iiCompanyId (iiCompanyId),
input iiPeriodYear (iiPeriodYear),
input iiPeriodPeriod (iiPeriodPeriod),
output vlPeriodExists (olDoesExist),
output viPeriod_ID (oiPeriod_ID),
output viPeriodMark_ID (oiPeriodMark_ID),
output vtStartDate (otStartDate),
output vtEndDate (otEndDate),
output vcPeriodTypeCode (ocPeriodTypeCode),
output viFcReturnSuper (oiReturnStatus)) in BPeriod>
<I-11 {bFcCloseInstance
&CLASS = "BPeriod"}>
end.
if not vlPeriodExists
then do:
assign vcMessage = trim(substitute(#T-15'This combination of GL calendar year and GL period &1/&2 cannot be found.':150(3299)T-15#, string(iiPeriodYear), string(iiPeriodPeriod)))
oiReturnStatus = -3.
<M-7 run SetMessage (input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QADFIN-870':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BPosting>
return.
end.
end.
<M-2 run AddDetailLine (input 'posting':U (icTable),
input '' (icParentRowid),
output oiReturnStatus (oiReturnStatus)) in BPosting>
if oiReturnStatus <> 0
then return.
assign tPosting.Company_ID = iiCompanyId
tPosting.Period_ID = if available tqPeriodByYearPeriodNull then tqPeriodByYearPeriodNull.tiPeriod_ID else viPeriod_ID
tPosting.PostingYear = iiPeriodYear
tPosting.PostingPeriod = iiPeriodPeriod
tPosting.PostingYearPeriod = iiPeriodYear * 100 + iiPeriodPeriod
tPosting.PeriodMark_ID = if available tqPeriodByYearPeriodNull then tqPeriodByYearPeriodNull.tiPeriodMark_ID else viPeriodMark_ID
tPosting.PostingDate = itPostingDate
tPosting.PostingValueDate = itValueDate
tPosting.PostingText = icPostingText
tPosting.PostingBusinessRelationTxt = icPostingBusinessRelationText
tPosting.PostingInvoiceReferenceTxt = if icPostingInvoiceReferenceText <> "CREATEDBYPOSTING":U
then icPostingInvoiceReferenceText
else "":U
tPosting.PostingParentText = icPostingParentText
tPosting.PostingBatchNumber = icBatchNumber
/* assign period type code for the calculated field in posting if the period was not saved yet */
tPosting.tcPeriodTypeCode = if available tqPeriodByYearPeriodNull then tqPeriodByYearPeriodNull.tcPeriodTypeCode else vcPeriodTypeCode
tPosting.PostingOriginAddressCode = icPostingOriginAddressCode
tPosting.tcReportingJournalCode = if icReportingJournalCode <> "":U
then icReportingJournalCode
else icJournalCode
tPosting.PostingBankImpRef = icBankImpLineRef.
if iiVoucher = 0
or iiVoucher = ?
then do:
<M-3 run GetPostingNumber (input tPosting.tc_Rowid (ictcRowid),
input iiPeriodYear (iiYear),
input icJournalCode (icJournalCode),
output viFcCount1 (oiVoucher),
output oiReturnStatus (oiReturnStatus)) in BPosting>
if oiReturnStatus <> 0
then do:
delete tPosting.
return.
end.
end.
else do:
<Q-5 run JournalPrim (all) (Read) (NoCache)
(input tPosting.Company_ID, (CompanyId)
input icJournalCode, (JournalCode)
input 0, (JournalID)
output dataset tqJournalPrim) in BJournal >
find first tqJournalPrim no-error.
if available tqJournalPrim
then assign tPosting.Journal_ID = tqJournalPrim.tiJournal_ID
tPosting.tcJournalCode = icJournalCode
tPosting.tcLayerTypeCode = tqJournalPrim.tcLayerTypeCode
tPosting.PostingVoucher = iiVoucher.
if not can-find (tCommitNumber where
tCommitNumber.tcNumberType = {&COMMITNUMBERTYPE-POSTINGVOUCHER} and
tCommitNumber.tcPostingRowID = tPosting.tc_Rowid)
then do :
create tCommitNumber.
assign tCommitNumber.tcNumberType = {&COMMITNUMBERTYPE-POSTINGVOUCHER}
tCommitNumber.tcPostingRowID = tPosting.tc_Rowid.
end.
end.
/* if this string is in it, then pass year/period journal and voucher */
if icPostingInvoiceReferenceText = "CREATEDBYPOSTING":U
then do:
assign tPosting.PostingInvoiceReferenceTxt = string(tPosting.PostingYear, "9999":U) + "/":U + string(tPosting.PostingPeriod,"99":U) +
" ":U + icJournalCode + " ":U + string(tPosting.PostingVoucher, "999999999":U).
end.
assign oiPostingId = tPosting.Posting_ID
oiPostingVoucher = tPosting.PostingVoucher
ocRowid = tPosting.tc_Rowid.