project QadFinancials > class BCInvoice > method ApiStdMaintainTTCreateVatWHT

Description

Create CInvoiceVat and CInvoiceWHT records based on the records that were passed by the caller.


Parameters


icInvoiceRowidinputcharacterInvoice Rowid
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BCInvoice.ApiStdMaintainTTWithIntPost


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.