project QadFinancials > class BDInvoice > method ApiStdMaintainTTWithIntPostCreateVat
Description
Create DInvoiceVat records based on the records that were passed by the caller.
Parameters
icDInvoiceRowid | input | character | DInvoice Rowid |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program8/bdinvoice.p)
/* ===================================================================== */
/* Create tCInvoiceVat records based upon the tApiStdDInvoiceVat records */
/* ===================================================================== */
for each tApiStdDInvoiceVat where
tApiStdDInvoiceVat.tc_Status <> "D":
<M-84 run AddDetailLine
(input 'DInvoiceVat':U (icTable),
input icDInvoiceRowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
if viFcReturnSuper < 0
then do:
assign oiReturnStatus = viFcReturnSuper.
return.
end. /* if viFcReturnSuper < 0 */
buffer-copy tApiStdDInvoiceVat
except tApiStdDInvoiceVat.DInvoiceVAT_ID
tApiStdDInvoiceVat.DInvoice_ID
tApiStdDInvoiceVat.tc_ParentRowid
tApiStdDInvoiceVat.tc_Rowid
tApiStdDInvoiceVat.tc_Status
to tDInvoiceVat.
if (tDInvoiceVat.DInvoiceVatVatCreditCC <> 0 and tDInvoiceVat.DInvoiceVatVatCreditCC <> ?) or
(tDInvoiceVat.DInvoiceVatVatDebitCC <> 0 and tDInvoiceVat.DInvoiceVatVatDebitCC <> ?)
then assign vdExchangeRateCC = if tDInvoiceVat.DInvoiceVatVatCreditCC <> 0 and tDInvoiceVat.DInvoiceVatVatCreditTC <> 0
then tDInvoiceVat.DInvoiceVatVatCreditCC / tDInvoiceVat.DInvoiceVatVatCreditTC
else if tDInvoiceVat.DInvoiceVatVatDebitCC <> 0 and tDInvoiceVat.DInvoiceVatVatDebitTC <> 0
then tDInvoiceVat.DInvoiceVatVatDebitCC / tDInvoiceVat.DInvoiceVatVatDebitTC
else ?
tDInvoiceVat.DInvoiceVatVatBaseCreditCC = <M-46 RoundAmount
(input tDInvoiceVat.DInvoiceVatVatBaseCreditTC * vdExchangeRateCC (idUnroundedAmount),
input viCompanyCCID (iiCurrencyID),
input vcCompanyCC (icCurrencyCode)) in BDInvoice>
tDInvoiceVat.DInvoiceVatVatBaseDebitCC = <M-53 RoundAmount
(input tDInvoiceVat.DInvoiceVatVatBaseDebitTC * vdExchangeRateCC (idUnroundedAmount),
input viCompanyCCID (iiCurrencyID),
input vcCompanyCC (icCurrencyCode)) in BDInvoice>.
end. /* for each tApiDInvoiceVat where */
/* =================================================================== */
/* Get some Debtor related info that we need to create the posting etc */
/* =================================================================== */
if not available tqDebtorByDebtor and
tApiDInvoice.Company_ID <> 0 and tApiDInvoice.Company_ID <> ? and
tApiDInvoice.tcDebtorCode <> "":U and tApiDInvoice.tcDebtorCode <> ?
then do:
<Q-7 run DebtorByDebtor (first) (Read) (NoCache)
(input tApiDInvoice.Company_ID, (CompanyId)
input {&ADDRESSTYPECODESYSTEM-HEADOFFICE}, (AddressType)
input tApiDInvoice.Debtor_ID, (DebtorId)
input tApiDInvoice.tcDebtorCode, (DebtorCode)
output dataset tqDebtorByDebtor) in BDebtor>
Find first tqDebtorByDebtor no-lock no-error.
if not available tqDebtorByDebtor
then return.
end. /* if not available tqDebtorByDebtor and */
/* ============================================================ */
/* First get the existing tDInvoice and tDInvoicePosting record */
/* ============================================================ */
find tDInvoice where
tDInvoice.tc_Rowid = icDInvoiceRowid
no-lock no-error.
if not available tDInvoice
then return.
find first tDInvoicePosting where
tDInvoicePosting.tc_ParentRowid = tDInvoice.tc_rowid
no-lock no-error.
assign viDInvoicePostingID = (if available tDInvoicePosting
then tDInvoicePosting.Posting_ID
else ?).
/* ============================================ */
/* Assign the total invoice amount in TC and LC */
/* ============================================ */
assign vdDInvoiceAmountTC = if tApiDInvoice.DInvoiceOriginalDebitTC <> 0 and
tApiDInvoice.DInvoiceOriginalDebitTC <> ?
then tApiDInvoice.DInvoiceOriginalDebitTC
else tApiDInvoice.DInvoiceOriginalCreditTC
vdDInvoiceAmountLC = if tApiDInvoice.DInvoiceOriginalDebitLC <> 0 and
tApiDInvoice.DInvoiceOriginalDebitLC <> ?
then tApiDInvoice.DInvoiceOriginalDebitLC
else tApiDInvoice.DInvoiceOriginalCreditLC.
/* ========================================== */
/* Re-compose the Posting using the new taxes */
/* ========================================== */
/* Empty unused input param-table before making the call */
empty temp-table tDIAccount.
<M-66 run CreateDIPosting
(input tDInvoice.DInvoice_ID (iiDInvoiceId),
input tDInvoice.Period_ID (iiPeriodId),
input tDInvoice.DInvoicePostingYear (iiPeriodYear),
input tDInvoice.DInvoicePostingYearPeriod (iiPeriodPeriod),
input tDInvoice.DInvoicePostingDate (itPostingDate),
input tDInvoice.Debtor_ID (iiDebtorId),
input tDInvoice.tcDebtorCode (icDebtorCode),
input tDInvoice.DInvoiceType (icDInvoiceType),
input tDInvoice.Division_ID (iiDivisionId),
input tDInvoice.tcDivisionCode (icDivisionCode),
input tDInvoice.Journal_ID (iiJournalId),
input tDInvoice.tcJournalCode (icJournalCode),
input tDInvoice.DInvoiceVoucher (iiVoucher),
input tDInvoice.DInvoiceTaxPointDate (itTaxPointDate),
input tDInvoice.DInvoiceDescription (icDescription),
input vdDInvoiceAmountTC (idInvoiceAmountTC),
input vdDInvoiceAmountLC (idInvoiceAmountLC),
input ? (idInvoiceAmountCC),
input tDInvoice.DInvoiceCurrency_ID (iiCurrencyId),
input tDInvoice.tcCurrencyCode (icCurrencyCode),
input tDInvoice.DInvoiceExchangeRate (idExchangeRate),
input tDInvoice.DInvoiceRateScale (idExchangeRateScale),
input tDInvoice.DInvoiceDIText (icDIText),
input tDInvoice.DInvoiceDate (itInvoiceDate),
input ' ':U (icPostingType),
input-output viDInvoicePostingID (biPostingId),
input-output viBJournalEntryDIID (biBJournalEntryId),
input tDIAccount (tDIAccount),
input-output tDInvoiceVat (tApiDInvoiceVat),
input ' ':U (icGLCode),
input tDInvoice.tcCostCentreCode (icCostCentreCode),
input tDInvoice.tcProjectCode (icProjectCode),
input false (ilOnlyControlAccount),
input ? (icShipFromCountryCode),
input ? (icShipToCountryCode),
input ? (ilShipFromCountryIsEUCountry),
input ? (ilShipToCountryIsEUCountry),
input ? (icTxclTaxCls),
input ? (icTxuTaxUsage),
input ? (icShipToTxzTaxZone),
input ? (icTxenvTaxEnv),
input ? (icPaymentCondition),
input ? (ilIsTaxInCityFromShipTo),
input tDInvoice.DInvoiceIsTaxable (ilIsTaxable),
input tDInvoice.tcCostCentreCode (icControlCostCentreCode),
input tDInvoice.tcProjectCode (icControlProjectCode),
input ? (iiShipFromAddressId),
input ? (iiShipToAddressId),
input ? (icSoldToDebtorCode),
input tDInvoice.DInvoiceIsTaxExcluded (ilDInvoiceIsTaxExcluded),
input tqDebtorByDebtor.tcBusinessRelationCode (icBusinessRelationCode),
input tqDebtorByDebtor.tcBusinessRelationICCode (icBusinessRelationICCode),
input tqDebtorByDebtor.tiInvControlGLProfile_ID (iiInvControlGLProfileId),
input tqDebtorByDebtor.tiCnControlGLProfile_ID (iiCnControlGLProfileId),
input tqDebtorByDebtor.tiPrepayControlGLProfile_ID (iiPrepayControlGLProfileId),
input tqDebtorByDebtor.tiSalesAccountGLProfile_ID (iiSalesAccGLProfileId),
input tqDebtorByDebtor.tiFinChgGLProfile_ID (iiFinChgGLProfileId),
input tDInvoice.tcDivisionCode (icControlDivisionCode),
input 0 (iiDeductionControlGLProfileId),
input ? (idExchangeRateCC),
input ? (idExchangeRateScaleCC),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
if viFcReturnSuper <> 0
then assign oiReturnStatus = viFcReturnSuper.
if oiReturnStatus < 0
then Return.