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. |
/* 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.