project QadFinancials > class BCInvoice > method ApiStdMaintainTTCreateVatWHT
Description
Create CInvoiceVat and CInvoiceWHT records based on the records that were passed by the caller.
Parameters
icInvoiceRowid | input | character | Invoice Rowid |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program9/bcinvoice.p)
/* =============================== */
/* Create all tCInvoiceVat records */
/* =============================== */
for each tApiStdCInvoiceVat where
tApiStdCInvoiceVat.tc_Status <> "D":
<M-44 run AddDetailLine
(input 'CInvoiceVat':U (icTable),
input icInvoiceRowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
if viFcReturnSuper < 0
then do:
assign oiReturnStatus = viFcReturnSuper.
return.
end.
buffer-copy tApiStdCInvoiceVat
except tApiStdCInvoiceVat.CInvoiceVAT_ID
tApiStdCInvoiceVat.CInvoice_ID
tApiStdCInvoiceVat.tc_ParentRowid
tApiStdCInvoiceVat.tc_Rowid
tApiStdCInvoiceVat.tc_Status
to tCInvoiceVat.
if (tCInvoiceVat.CInvoiceVatVatCreditCC <> 0 and tCInvoiceVat.CInvoiceVatVatCreditCC <> ?) or
(tCInvoiceVat.CInvoiceVatVatDebitCC <> 0 and tCInvoiceVat.CInvoiceVatVatDebitCC <> ?)
then do:
assign tCInvoiceVat.tdCInvoiceVatExchangeRateCC = if tCInvoiceVat.CInvoiceVatVatCreditCC <> 0 and tCInvoiceVat.CInvoiceVatVatCreditTC <> 0
then tCInvoiceVat.CInvoiceVatVatCreditCC / tCInvoiceVat.CInvoiceVatVatCreditTC
else if tCInvoiceVat.CInvoiceVatVatDebitCC <> 0 and tCInvoiceVat.CInvoiceVatVatDebitTC <> 0
then tCInvoiceVat.CInvoiceVatVatDebitCC / tCInvoiceVat.CInvoiceVatVatDebitTC
else ?
tCInvoiceVat.CInvoiceVatVatBaseCreditCC = <M-87 RoundAmount
(input tCInvoiceVat.CInvoiceVatVatBaseCreditTC * tCInvoiceVat.tdCInvoiceVatExchangeRateCC * 1 (idUnroundedAmount),
input viCompanyCCId (iiCurrencyID),
input vcCompanyCC (icCurrencyCode)) in BCInvoice>
tCInvoiceVat.CInvoiceVatVatBaseDebitCC = <M-55 RoundAmount
(input tCInvoiceVat.CInvoiceVatVatBaseDebitTC * tCInvoiceVat.tdCInvoiceVatExchangeRateCC * 1 (idUnroundedAmount),
input viCompanyCCId (iiCurrencyID),
input vcCompanyCC (icCurrencyCode)) in BCInvoice>.
end.
else do:
if tCInvoiceVat.tdCInvoiceVatExchangeRateCC <> 0 and tCInvoiceVat.tdCInvoiceVatExchangeRateCC <> ?
then do:
assign tCInvoiceVat.CInvoiceVatVatBaseCreditCC = <M-79 RoundAmount
(input tCInvoiceVat.CInvoiceVatVatBaseCreditTC * tCInvoiceVat.tdCInvoiceVatExchangeRateCC * 1 (idUnroundedAmount),
input viCompanyCCId (iiCurrencyID),
input vcCompanyCC (icCurrencyCode)) in BCInvoice>
tCInvoiceVat.CInvoiceVatVatBaseDebitCC = <M-31 RoundAmount
(input tCInvoiceVat.CInvoiceVatVatBaseDebitTC * tCInvoiceVat.tdCInvoiceVatExchangeRateCC * 1 (idUnroundedAmount),
input viCompanyCCId (iiCurrencyID),
input vcCompanyCC (icCurrencyCode)) in BCInvoice>
tCInvoiceVat.CInvoiceVatVatCreditCC = <M-39 RoundAmount
(input tCInvoiceVat.CInvoiceVatVatCreditTC * tCInvoiceVat.tdCInvoiceVatExchangeRateCC * 1 (idUnroundedAmount),
input viCompanyCCId (iiCurrencyID),
input vcCompanyCC (icCurrencyCode)) in BCInvoice>
tCInvoiceVat.CInvoiceVatVatDebitCC = <M-38 RoundAmount
(input tCInvoiceVat.CInvoiceVatVatDebitTC * tCInvoiceVat.tdCInvoiceVatExchangeRateCC * 1 (idUnroundedAmount),
input viCompanyCCId (iiCurrencyID),
input vcCompanyCC (icCurrencyCode)) in BCInvoice>.
end.
end.
end. /* for each tApiCInvoiceVat where */
/* =============================== */
/* Create all tCInvoiceWHT records */
/* =============================== */
for each tApiCInvoiceWHT where
tApiCInvoiceWHT.tc_Status <> "D":
<M-53 run AddDetailLine
(input 'CInvoiceWHT':U (icTable),
input icInvoiceRowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
if viFcReturnSuper < 0
then do:
assign oiReturnStatus = viFcReturnSuper.
return.
end.
buffer-copy tApiCInvoiceWHT
except tApiCInvoiceWHT.CInvoiceWHT_ID
tApiCInvoiceWHT.CInvoice_ID
tApiCInvoiceWHT.tc_ParentRowid
tApiCInvoiceWHT.tc_Rowid
tApiCInvoiceWHT.tc_Status
to tCInvoiceWHT.
end. /* for each tApiCInvoiceWHT where */
find tCInvoice where
tCInvoice.tc_Rowid = icInvoiceRowid
no-lock no-error.
if available tCInvoice and
tCInvoice.CInvoiceIsInitialStatus <> true
then do:
<Q-15 run CreditorByCreditor (first) (Read) (Cache)
(input ?, (CreditorId)
input tCInvoice.Company_ID, (CompanyId)
input tCInvoice.tcCreditorCode, (CreditorCode)
input {&ADDRESSTYPECODESYSTEM-HEADOFFICE}, (AddressType)
output dataset tqCreditorByCreditor) in BCreditor>
find first tqCreditorByCreditor no-error.
if not available tqCreditorByCreditor
then do:
assign oiReturnStatus = -1.
<M-19 run SetMessage
(input trim(#T-83'The supplier is not defined in the system.':255(1134)T-83#) (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'qadfin-600666':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
leave.
end. /* end not available tqCreditorByCreditor */
find first tCInvoicePosting where
tCInvoicePosting.tc_ParentRowid = tCInvoice.tc_Rowid
no-lock no-error.
if not available tCInvoicePosting
then do:
assign vcMessage = #T-54'No Supplier Invoice Posting found for this Supplier Invoice.':255(578249729)T-54#
oiReturnStatus = -3.
<M-94 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'S':U (icType),
input 1 (iiSeverity),
input tCInvoice.tc_Rowid (icRowid),
input 'qadfin-224905':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
return.
end. /* if not available tCInvoicePosting */
assign vdInvoiceAmountTC =
(if tCInvoice.CInvoiceOriginalDebitTC <> 0 and
tCInvoice.CInvoiceOriginalDebitTC <> ?
then tCInvoice.CInvoiceOriginalDebitTC
else tCInvoice.CInvoiceOriginalCreditTC)
vdInvoiceAmountLC =
(if tCInvoice.CInvoiceOriginalDebitLC <> 0 and
tCInvoice.CInvoiceOriginalDebitLC <> ?
then tCInvoice.CInvoiceOriginalDebitLC
else tCInvoice.CInvoiceOriginalCreditLC)
vdInvoiceAmountCC =
(if tCInvoice.CInvoiceOriginalDebitCC <> 0 and
tCInvoice.CInvoiceOriginalDebitCC <> ?
then tCInvoice.CInvoiceOriginalDebitCC
else tCInvoice.CInvoiceOriginalCreditCC)
vcPostingType =
if tCInvoice.CInvoiceOriginalDebitTC <> 0 and
tCInvoice.CInvoiceOriginalDebitTC <> ?
then {&POSTINGTYPE-DEBIT}
else {&POSTINGTYPE-CREDIT}.
<M-80 run CreateCIPosting
(input tCInvoice.CInvoice_ID (iiCInvoiceId),
input tCInvoice.CInvoicePostingYear (iiPeriodYear),
input tCInvoice.CInvoicePostingPeriod (iiPeriodPeriod),
input tCInvoice.CInvoicePostingDate (itPostingDate),
input tCInvoice.Creditor_ID (iiCreditorId),
input tCInvoice.tcCreditorCode (icCreditorCode),
input tCInvoice.CInvoiceType (icCInvoiceType),
input tCInvoice.tcDivisionCode (icDivisionCode),
input tCInvoice.tcJournalCode (icJournalCode),
input tCInvoice.CInvoiceVoucher (iiVoucher),
input tCInvoice.CInvoiceTaxPointDate (itTaxPointDate),
input tCInvoice.CInvoiceReference (icReference),
input tCInvoice.CInvoiceDescription (icDescription),
input vdInvoiceAmountTC (idInvoiceAmountTC),
input vdInvoiceAmountLC (idInvoiceAmountLC),
input vdInvoiceAmountCC (idInvoiceAmountCC),
input tCInvoice.tcCurrencyCode (icCurrencyCode),
input tCInvoice.CInvoiceExchangeRate (idExchangeRate),
input tCInvoice.CInvoiceRateScale (idExchangeRateScale),
input tCInvoice.CInvoiceCIText (icCIText),
input vcPostingType (icPostingType),
input '' (icGlCode),
input tCInvoice.tcCostCentreCode (icCostCentreCode),
input tCInvoice.tcProjectCode (icProjectCode),
input false (ilOnlyControlAccount),
input tCInvoice.tcShipToCountryCode (icShipToCountryCode),
input '' (icTxclTaxCls),
input '' (icTxuTaxUsage),
input '' (icTxenvTaxEnv),
input tCInvoice.tcNormalPaymentConditionCode (icPaymentCondition),
input tCInvoice.tlShipToAddressIsTaxInCity (ilIsTaxInCityFromShipTo),
input '' (icPoNbr),
input tCInvoice.CInvoiceIsTaxable (ilIsTaxable),
input tCInvoice.tcCostCentreCode (icControlCostCentreCode),
input tCInvoice.tcProjectCode (icControlProjectCode),
input 0 (iiShipFromAddressId),
input tCInvoice.ShipToAddress_ID (iiShipToAddressId),
input tCInvoice.CInvoiceIsLogisticMatching (ilIsLogisticMatching),
input true (ilGetDefaultSafs),
input tqCreditorByCreditor.tcBusinessRelationCode (icBusinessRelationCode),
input tqCreditorByCreditor.tiPrePayControlGLProfile_ID (iiPrePayControlGLProfileId),
input tqCreditorByCreditor.tiInvControlGLProfile_ID (iiInvControlGLProfileId),
input tqCreditorByCreditor.tiCnControlGLProfile_ID (iiCnControlGLProfileId),
input tCInvoice.tc_Rowid (icCInvoiceRowid),
input if tqCreditorByCreditor.tlBusinessRelationIsInterco then tqCreditorByCreditor.tcBusinessRelationICCode else '':U (icBusinessRelationInterCoCode),
input tqCreditorByCreditor.tcCountryCode (icShipFromCountryCode),
input tqCreditorByCreditor.tlCountryIsEUCountry (ilShipFromCountryIsEUCountry),
input tqCreditorByCreditor.tcTxzTaxZone (icCreditorTaxZone),
input false (ilCInvoiceIsTaxExcluded),
input ? (ilIsInitialStatus),
input-output tCInvoiceVat (tApiCInvoiceVat),
input tDefaultSafsCI (tDefaultSafsCI),
input true (ilHandleCommunicationWithJE),
input-output viBJournalEntryCIID (biBJournalEntryId),
input-output tCInvoicePosting.Posting_ID (biPostingId),
input tCInvoice.CInvoiceCCRate (idExchangeRateCC),
input tCInvoice.CInvoiceCCScale (idExchangeRateScaleCC),
input tCInvoice.CInvoiceDate (itInvoiceDate),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
if viFcReturnSuper <> 0 and oiReturnStatus >= 0
then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
end.