project QadFinancials > class BCInvoice > method DefaultValuesSupplier

Description

default some fields based on the supplier


Parameters


icPoNbrinputcharacter
bcCreditorCodeinput-outputcharacter
icCInvoiceTypeinputcharacter
itCInvoicePostingDateinputdate
itCInvoiceDateinputdate
icOwnVatCurrencyCodeinputcharacter
itCInvoiceTaxPointDateinputdate
icCInvoiceRowIDinputcharacter
idCInvoiceOriginalTCinputdecimal
iiCInvoicePostingYearinputinteger
icCInvoiceJournalCodeinputcharacter
iiCInvoiceVoucherinputintegerVoucher
ocBusinessRelationCodeoutputcharacter
ocBusinessRelationName1outputcharacter
ocCInvoiceCreditorVatNumberoutputcharacter
ocCurrencyCodeoutputcharacter
ocNormalPaymentConditionCodeoutputcharacter
ocNormalPaymentConditionTypeoutputcharacter
ocReasonAllocationStatusoutputcharacter
ocReasonCodeoutputcharacter
olCInvoiceIsTaxableoutputlogical
olCInvoiceIsInvoiceApprovedoutputlogical
olCInvoiceIsLockPaymentoutputlogical
olCInvoiceIsLogisticMatchingoutputlogical
ocCreditorTaxClassoutputcharacter
ocCreditorTaxUsageoutputcharacter
ocCreditorTaxZoneoutputcharacter
oiCreditorCnControlGLProfileIdoutputinteger
oiCreditorInvControlGLProfileIdoutputinteger
oiCreditorDivisionProfileIdoutputinteger
olCreditorIsIndividualPaymentoutputlogical
ocCredVatNumberCountryCodeoutputcharacter
ocTransactionStartCountryCodeoutputcharacter
oiShipFromAddressIdoutputinteger
olControlGLIsDivisionAccountoutputlogical
ocDivisionCodeoutputcharacter
ocCostCentreCodeoutputcharacter
ocProjectCodeoutputcharacter
ocBLWIGroupCodeoutputcharacter
odCInvoiceExchangeRateoutputdecimal
odCInvoiceRateScaleoutputdecimal
otCInvoiceDueDateoutputdate
otCInvoiceDiscountDueDateoutputdate
ocMFJournalCodeoutputcharacter
odCInvoiceVatExchangeRateoutputdecimal
odCInvoiceVatRateScaleoutputdecimal
ocPurchaseTypeCodeoutputcharacter
oiCreditorIdoutputinteger
olBusinessRelationIsIntercooutputlogical
ocBusinessRelationICCodeoutputcharacter
olCountryIsEUCountryoutputlogical
ocJournalCodeoutputcharacter
ocDaybookSetoutputcharacter
ocSiteoutputcharacter
tApiCInvoiceStageoutputtemp-table
oiCInvoiceVoucheroutputinteger
olCInvoiceIsInitialStatusoutputlogical
ocRoleNameoutputcharacterThis parameter is not set anywhere in the business logic currently. It was added to enable NI Customizations default it per customer's specification. May be added to standard product in the future
olCreditorIsWHToutputlogical
ocDefaultWHTCodeoutputcharacterDefault WHT Code for creditor based on the current domain
ocWHTTypeoutputcharacter
ocWHTDescoutputcharacter
odWHTPctoutputdecimal
odWHTPctRecvoutputdecimal
ocWHTGLCodeoutputcharacter
ocWHTDivisionCodeoutputcharacter
ocControlGLCodeoutputcharactercontrol GL Code
oiControlGLIDoutputintegerControl GL ID
odCInvoiceCCExchangeRateoutputdecimal
odCInvoiceCCRateScaleoutputdecimal
oiBusinessRelationIDoutputinteger
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BCInvoice.DefaultValuesPO

QadFitnesse
method BCInvoice.ApiDefaultValuesSupplier


program code (program3/bcinvoice.p)

if bcCreditorCode = ?
then assign bcCreditorCode = "":U.

if bcCreditorCode = "":U
then return.

find first tCInvoice where
           tCInvoice.tc_Rowid = icCInvoiceRowId
           no-error.
if not available tCInvoice
then do:
    <M-32 run SetMessage
       (input  #T-33'Invalid Supplier Invoice':255(999890851)T-33# (icMessage), 
        input  '':U (icArguments), 
        input  '':U (icFieldName), 
        input  '':U (icFieldValue), 
        input  'D':U (icType), 
        input  3 (iiSeverity), 
        input  '':U (icRowid), 
        input  'QadFin-9369':U (icFcMsgNumber), 
        input  '':U (icFcExplanation), 
        input  '':U (icFcIdentification), 
        input  '':U (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
    assign oiReturnStatus = -3.
    return.
end.

assign vcOrginialCreditorCode = bcCreditorCode.

<Q-26 run CreditorBeginsForCIDefault (all) (Read) (NoCache)
   (input viCompanyId, (CompanyId)
    input bcCreditorCode, (CreditorCode)
    input {&ADDRESSTYPECODESYSTEM-HEADOFFICE}, (AddressTypeCode)
    output dataset tqCreditorBeginsForCIDefault) in BCreditor >

find first tqCreditorBeginsForCIDefault no-error.
if not available tqCreditorBeginsForCIDefault
then do:
    assign oiReturnStatus = -4.
    return.
end.
else do:
    find first tqCreditorBeginsForCIDefault
         where tqCreditorBeginsForCIDefault.tcCreditorCode = bcCreditorCode no-error.
    if not available tqCreditorBeginsForCIDefault
    then do:
       find tqCreditorBeginsForCIDefault
            where tqCreditorBeginsForCIDefault.tcCreditorCode BEGINS bcCreditorCode no-error.
        /* if there's only one record - ambiguous records will not be found and available will be
            false */
       if available tqCreditorBeginsForCIDefault 
       then do:
            assign bcCreditorCode = tqCreditorBeginsForCIDefault.tcCreditorCode.
       end.
       else do:
           assign  bcCreditorCode = vcOrginialCreditorCode
           oiReturnStatus = -4.
           return.                  
       end. 
    end.
end.

assign ocBusinessRelationCode          = tqCreditorBeginsForCIDefault.tcBusinessRelationCode
       ocBusinessRelationName1         = tqCreditorBeginsForCIDefault.tcBusinessRelationName1
       olBusinessRelationIsInterco     = tqCreditorBeginsForCIDefault.tlBusinessRelationIsInterco
       ocBusinessRelationICCode        = if olBusinessRelationIsInterco
                                         then tqCreditorBeginsForCIDefault.tcBusinessRelationICCode
                                         else "":U
       ocCInvoiceCreditorVatNumber     = tqCreditorBeginsForCIDefault.tcCreditorTaxIDState
       ocCurrencyCode                  = tqCreditorBeginsForCIDefault.tcCurrencyCode
       ocNormalPaymentConditionCode    = tqCreditorBeginsForCIDefault.tcPaymentConditionCode
       ocNormalPaymentConditionType    = tqCreditorBeginsForCIDefault.tcPaymentConditionPaymentTyp
       ocReasonAllocationStatus        = tqCreditorBeginsForCIDefault.tcReasonAllocationStatus
       ocReasonCode                    = tqCreditorBeginsForCIDefault.tcReasonCode
       olCInvoiceIsTaxable             = tqCreditorBeginsForCIDefault.tlCreditorIsTaxable
       olCInvoiceIsInvoiceApproved     = tqCreditorBeginsForCIDefault.tlReasonIsInvoiceApproved
       olCInvoiceIsLockPayment         = tqCreditorBeginsForCIDefault.tlReasonIsLockPayment
       olCInvoiceIsLogisticMatching    = tqCreditorBeginsForCIDefault.tlReasonIsLogisticMatching
       olCInvoiceIsInitialStatus       = tqCreditorBeginsForCIDefault.tlReasonIsInitialStatus
       ocCreditorTaxUsage              = tqCreditorBeginsForCIDefault.tcTxuTaxUsage
       ocCreditorTaxZone               = tqCreditorBeginsForCIDefault.tcTxzTaxZone
       ocCreditorTaxClass              = tqCreditorBeginsForCIDefault.tcTxclTaxCls
       oiCreditorCnControlGLProfileId  = tqCreditorBeginsForCIDefault.tiCnControlGLProfile_ID
       oiCreditorInvControlGLProfileId = tqCreditorBeginsForCIDefault.tiInvControlGLProfile_ID
       oiCreditorDivisionProfileId     = tqCreditorBeginsForCIDefault.tiDivisionProfile_ID
       olCreditorIsIndividualPayment   = tqCreditorBeginsForCIDefault.tlCreditorIsIndividualPaymnt
       oiCreditorId                    = tqCreditorBeginsForCIDefault.tiCreditor_ID
       olCreditorIsWHT                 = tqCreditorBeginsForCIDefault.tlCreditorIsWHT
       oiBusinessRelationID            = tqCreditorBeginsForCIDefault.tiBusinessRelation_ID. 

/* Get control account */
assign viControlGLProfileId = if icCInvoiceType = {&INVOICETYPE-PREPAYMENT}
                              then tqCreditorBeginsForCIDefault.tiPrePayControlGLProfile_ID
                              else
                              if icCInvoiceType = {&INVOICETYPE-INVOICE} or
                                 icCInvoiceType = {&INVOICETYPE-INVOICECORRECTION}
                              then tqCreditorBeginsForCIDefault.tiInvControlGLProfile_ID
                              else tqCreditorBeginsForCIDefault.tiCnControlGLProfile_ID.
                              
if viControlGLProfileId = ? or viControlGLProfileId = 0
then assign vlError = true.
else do:
    <Q-29 run ProfileLinkByGL (all) (Read) (NoCache)
       (input viControlGLProfileId, (GlProfileId)
        input viCompanyId, (CompanyId)
        output dataset tqProfileLinkByGL) in BProfile >
    find first tqProfileLinkByGL where
               tqProfileLinkByGL.tiProfile_ID = viControlGLProfileId
               no-error.
    if not available tqProfileLinkByGL
    then assign vlError = true.
end.
if vlError
then do:
    <M-30 run SetMessage
       (input  trim(#T-31'The system could not find a supplier control account record.':150(1053)T-31#) (icMessage), 
        input  '':U (icArguments), 
        input  '':U (icFieldName), 
        input  '':U (icFieldValue), 
        input  'E':U (icType), 
        input  3 (iiSeverity), 
        input  tCInvoice.tc_Rowid (icRowid), 
        input  'QadFin-9368':U (icFcMsgNumber), 
        input  '':U (icFcExplanation), 
        input  '':U (icFcIdentification), 
        input  '':U (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BCInvoice>

    assign oiReturnStatus = -1.
    return.
end. /* end if not available tqProfileLinkByGL */

assign tCInvoice.tcControlGLCode = tqProfileLinkByGL.tcGLCode
       tCInvoice.ControlGL_ID    = tqProfileLinkByGL.tiGL_ID
       /* needed on ui for drafts, otherwise ui overwrite values of business */
       ocControlGLCode           = tqProfileLinkByGL.tcGLCode
       oiControlGLID             = tqProfileLinkByGL.tiGL_ID.

if (vcActivityCode = "InitialCreate":U and olCInvoiceIsInitialStatus = false)
then do:
     assign ocReasonAllocationStatus        = '':U
            ocReasonCode                    = '':U
            olCInvoiceIsInvoiceApproved     = false
            olCInvoiceIsLockPayment         = false
            olCInvoiceIsLogisticMatching    = false
            olCInvoiceIsInitialStatus       = false.
    
    /* check for unique code where initial = true */
    <Q-25 run ReasonByInitialStatus (all) (Read) (NoCache)
       (input true, (ReasonIsInitialStatus)
        output dataset tqReasonByInitialStatus) in BReason >

     find first tqReasonByInitialStatus where
         tqReasonByInitialStatus.tlReasonIsInitialStatus = true
         no-error.
     if available tqReasonByInitialStatus 
     then do:
         assign ocReasonAllocationStatus        = tqReasonByInitialStatus.tcReasonAllocationStatus
                ocReasonCode                    = tqReasonByInitialStatus.tcReasonCode       
                olCInvoiceIsInvoiceApproved     = tqReasonByInitialStatus.tlReasonIsInvoiceApproved
                olCInvoiceIsLockPayment         = tqReasonByInitialStatus.tlReasonIsLockPayment
                olCInvoiceIsLogisticMatching    = tqReasonByInitialStatus.tlReasonIsLogisticMatching
                olCInvoiceIsInitialStatus       = tqReasonByInitialStatus.tlReasonIsInitialStatus.

         find next tqReasonByInitialStatus where
                   tqReasonByInitialStatus.tlReasonIsInitialStatus = true no-error. 
         if available tqReasonByInitialStatus
         then do:
             assign ocReasonAllocationStatus        = '':U
                    ocReasonCode                    = '':U
                    olCInvoiceIsInvoiceApproved     = false
                    olCInvoiceIsLockPayment         = false
                    olCInvoiceIsLogisticMatching    = false
                    olCInvoiceIsInitialStatus       = false.
         end.
     end. 
end.

<Q-22 run AddressForInvoiceDefault (all) (Read) (NoCache)
   (input tqCreditorBeginsForCIDefault.tiBusinessRelation_ID, (BusinessRelationId)
    input {&ADDRESSTYPECODESYSTEM-HEADOFFICE}, (AddressTypeCode)
    output dataset tqAddressForInvoiceDefault) in BBusinessRelation >    

find first tqAddressForInvoiceDefault where
           tqAddressForInvoiceDefault.tiBusinessRelation_ID = tqCreditorBeginsForCIDefault.tiBusinessRelation_ID and
           tqAddressForInvoiceDefault.tcAddressTypeCode     = {&ADDRESSTYPECODESYSTEM-HEADOFFICE}
           no-error.

assign ocCredVatNumberCountryCode    = if available tqAddressForInvoiceDefault
                                       then tqAddressForInvoiceDefault.tcCountryCode
                                       else "":U
       ocTransactionStartCountryCode = if available tqAddressForInvoiceDefault
                                       then tqAddressForInvoiceDefault.tcCountryCode
                                       else "":U
       olCountryIsEUCountry          = if available tqAddressForInvoiceDefault
                                       then tqAddressForInvoiceDefault.tlCountryIsEUCountry
                                       else false
       oiShipFromAddressId           = if available tqAddressForInvoiceDefault
                                       then tqAddressForInvoiceDefault.tiAddress_ID
                                       else 0.

<M-15 run DefaultValuesInvoiceType
   (input  icCInvoiceRowID (icCInvoiceRowId), 
    input  icCInvoiceType (icCInvoiceType), 
    input  tqCreditorBeginsForCIDefault.tiInvControlGLProfile_ID (iiCreditorInvControlGLProfileId), 
    input  tqCreditorBeginsForCIDefault.tiCnControlGLProfile_ID (iiCreditorCnControlGLProfileId), 
    input  tqCreditorBeginsForCIDefault.tiDivisionProfile_ID (iiDivisionProfileId), 
    input  iiCInvoiceVoucher (iiOldCInvoiceVoucher), 
    input  icCInvoiceJournalCode (icOldJournalCode), 
    input  iiCInvoicePostingYear (iiJournalYear), 
    input  olCInvoiceIsInitialStatus (ilCInvoiceIsInitialStatus), 
    output olControlGLIsDivisionAccount (olControlGLIsDivisionAccount), 
    output ocDivisionCode (ocDivisionCode), 
    output ocCostCentreCode (ocCostCentreCode), 
    output ocProjectCode (ocProjectCode), 
    output ocJournalCode (ocJournalCode), 
    output oiCInvoiceVoucher (oiCInvoiceVoucher), 
    output viFcReturnSuper (oiReturnStatus)) in BCInvoice>

if tqCreditorBeginsForCIDefault.tiBLWIGroup_ID <> 0 and
   tqCreditorBeginsForCIDefault.tiBLWIGroup_ID <> ?
then do:
    <Q-8 run BLWIGroupPrim (all) (Read) (NoCache)
       (input tqCreditorBeginsForCIDefault.tiBLWIGroup_ID, (BLWIGroupId)
        input ?, (BLWIGroupCode)
        output dataset tqBLWIGroupPrim) in BBLWIGroup >

    find first tqBLWIGroupPrim where
               tqBLWIGroupPrim.tiBLWIGroup_ID = tqCreditorBeginsForCIDefault.tiBLWIGroup_ID
               no-error.

    assign ocBLWIGroupCode = if available tqBLWIGroupPrim
                             then tqBLWIGroupPrim.tcBLWIGroupCode
                             else "":U.
end.
else assign ocBLWIGroupCode = "":U.

<M-16 run DefaultValuesCurrency
   (input  tCInvoice.Company_ID (iiCompanyID), 
    input  tqCreditorBeginsForCIDefault.tcCurrencyCode (icCurrencyCode), 
    input  tqCreditorBeginsForCIDefault.tiCurrency_ID (iiCurrencyId), 
    input  itCInvoicePostingDate (itCInvoicePostingDate), 
    input  icOwnVatCurrencyCode (icOwnVatCurrencyCode), 
    input  itCInvoiceTaxPointDate (itCInvoiceTaxPointDate), 
    input  itCInvoiceDate (itCInvoiceDate), 
    output odCInvoiceExchangeRate (odCInvoiceExchangeRate), 
    output odCInvoiceRateScale (odCInvoiceRateScale), 
    output odCInvoiceVatExchangeRate (odCInvoiceVatExchangeRate), 
    output odCInvoiceVatRateScale (odCInvoiceVatRateScale), 
    output odCInvoiceCcExchangeRate (odCInvoiceCCExchangeRate), 
    output odCInvoiceCCRateScale (odCInvoiceCCRateScale), 
    output viFcReturnSuper (oiReturnStatus)) in BCInvoice>

assign viPaymentConditionID = if tqCreditorBeginsForCIDefault.tcPaymentConditionPaymentTyp = {&PAYMENTCONDITIONPAYMENTTYPE-STAGED}
                              then tqCreditorBeginsForCIDefault.tiNormalPaymentCondition_ID
                              else ?.

<M-19 run DefaultValuesPaymentCondition
   (input  ? (icPaymentConditionCode), 
    input  viPaymentConditionID (iiPaymentConditionID), 
    input  itCInvoiceDate (itCInvoiceDate), 
    input  icCInvoiceRowID (icCInvoiceRowID), 
    input  idCInvoiceOriginalTC (idCInvoiceOriginalTC), 
    input  ocCurrencyCode (icCurrencyCode), 
    input  false (ilCInvoiceIsTaxExcluded), 
    input  tqCreditorBeginsForCIDefault.tcPaymentConditionPaymentTyp (icPaymentConditionPaymentType), 
    input  tqCreditorBeginsForCIDefault.tcPaymentConditionPeriodType (icPaymentConditionPeriodType), 
    input  tqCreditorBeginsForCIDefault.ttPaymentConditionBaseDate (itPaymentConditionBaseDate), 
    input  tqCreditorBeginsForCIDefault.tiPaymentConditionDaysMonths (iiPaymentConditionDaysMonths), 
    input  tqCreditorBeginsForCIDefault.tiPaymentConditionSupplDays (iiPaymentConditionSupplDays), 
    input  tqCreditorBeginsForCIDefault.tiPaymentConditionBaseDays (iiPaymentConditionBaseDays), 
    input  tqCreditorBeginsForCIDefault.tiPaymentConditionDueDays (iiPaymentConditionDueDays), 
    input  tqCreditorBeginsForCIDefault.tcPaymentConditionDescript (icPaymentConditionDescript), 
    input  tqCreditorBeginsForCIDefault.tdPaymentConditionPercentage (idPaymentConditionPercentage), 
    input  tqCreditorBeginsForCIDefault.tcPaymentConditionPdDiscType (icPaymentConditionPdtypediscount), 
    input  tqCreditorBeginsForCIDefault.tiPaymentConditionDayMthDisc (iiPaymentConditionDayMthsDisc), 
    input  tqCreditorBeginsForCIDefault.tiPaymentConditionSupDayDisc (iiPaymentConditionSupDaysDisc), 
    output tqCreditorBeginsForCIDefault.tcPaymentConditionPaymentTyp (ocPaymentConditionPaymentType), 
    output otCInvoiceDueDate (otCInvoiceDueDate), 
    output otCInvoiceDiscountDueDate (otCInvoiceDiscountDueDate), 
    output tApiCInvoiceStage (tApiCInvoiceStage), 
    output viFcReturnSuper (oiReturnStatus)) in BCInvoice>

<M-17 run GetMFJournal
   (input  viCompanyId (iiCompanyId), 
    input  tqCreditorBeginsForCIDefault.tcReasonAllocationStatus (icReasonAllocationStatus), 
    output ocMFJournalCode (ocMFJournalCode), 
    output vcDummy (ocLayerTypeCode), 
    output viFcReturnSuper (oiReturnStatus)) in BCInvoice>

if tqCreditorBeginsForCIDefault.tiPurchaseType_ID <> 0 and
   tqCreditorBeginsForCIDefault.tiPurchaseType_ID <> ?
then do:
    <Q-21 run PurchaseTypePrim (all) (Read) (NoCache)
       (input tqCreditorBeginsForCIDefault.tiPurchaseType_ID, (PurchaseTypeId)
        input ?, (PurchaseTypeCode)
        output dataset tqPurchaseTypePrim) in BPurchaseType >

    find first tqPurchaseTypePrim where
               tqPurchaseTypePrim.tiPurchaseType_ID = tqCreditorBeginsForCIDefault.tiPurchaseType_ID
               no-error.

    assign ocPurchaseTypeCode = if available tqPurchaseTypePrim
                                then tqPurchaseTypePrim.tcPurchaseTypeCode
                                else "":U.
end.
else assign ocPurchaseTypeCode = "":U.

<Q-36 run SupplierForDaybookSetSite (all) (Read) (NoCache)
   (input vcDomainCode, (DomainCode)
    input bcCreditorCode, (SupplierCode)
    output dataset tqSupplierForDaybookSetSite) in BMfgSupplier >    

find first tqSupplierForDaybookSetSite where tqSupplierForDaybookSetSite.tcvd_addr = bcCreditorCode no-error.
if available tqSupplierForDaybookSetSite 
then do:
    
    assign ocSite = tqSupplierForDaybookSetSite.tcvd_site. 
        
    if tqSupplierForDaybookSetSite.tcvd_daybookset <> "":U and
       tqSupplierForDaybookSetSite.tcvd_daybookset <> ? 
    then assign ocDaybookSet = tqSupplierForDaybookSetSite.tcvd_daybookset. 
    else assign ocDaybookSet = vcPOCDefaultDaybookSet.
    
    if icPoNbr = "":U or 
       icPoNbr = ?
    then do:     
        <M-34 run DefaultValuesDaybookSetCodeSite
           (input  icCInvoiceRowID (icCInvoiceRowID), 
            input  icCInvoiceType (icInvoiceType), 
            input  olCInvoiceIsInitialStatus (ilCInvoiceIsInitialStatus), 
            input-output ocDaybookSet (bcDaybookSetCode), 
            input-output ocSite (bcSite), 
            input  true (ilUpdateDaybookAndVoucher), 
            input-output ocJournalCode (bcDaybook), 
            input-output oiCInvoiceVoucher (biVoucher), 
            input  0 (iiOldCInvoicePostingYear), 
            input  ? (icOldJournalCode), 
            input  0 (iiOldCInvoiceVoucher), 
            output viFcReturnSuper (oiReturnStatus)) in BCInvoice> 
    
        if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
        if viFcReturnSuper < 0 then return.  
    end. /*  if icPoNbr = "":U or  */
    else do:
        <M-68 run DefaultValuesDaybookSetCodeSite
           (input  icCInvoiceRowID (icCInvoiceRowID), 
            input  icCInvoiceType (icInvoiceType), 
            input  olCInvoiceIsInitialStatus (ilCInvoiceIsInitialStatus), 
            input-output ocDaybookSet (bcDaybookSetCode), 
            input-output ocSite (bcSite), 
            input  false (ilUpdateDaybookAndVoucher), 
            input-output ocJournalCode (bcDaybook), 
            input-output oiCInvoiceVoucher (biVoucher), 
            input  0 (iiOldCInvoicePostingYear), 
            input  ? (icOldJournalCode), 
            input  0 (iiOldCInvoiceVoucher), 
            output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
            
         if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
         if viFcReturnSuper < 0 then return.          
    end.
        
end.

/* Get default WHT Code for supplier */
<Q-13 run CreditorVatByCreditorDomainId (all) (Read) (NoCache)
   (input viCompanyId, (CompanyId)
    input ?, (CreditorId)
    input bcCreditorCode, (CreditorCode)
    input viDomainID, (DomainId)
    output dataset tqCreditorVatByCreditorDomainId) in BCreditor >

find first tqCreditorVatByCreditorDomainId where
           tqCreditorVatByCreditorDomainId.tcCreditorCode = bcCreditorCode and
           tqCreditorVatByCreditorDomainId.tiDomain_ID    = viDomainID 
           no-error.
if available tqCreditorVatByCreditorDomainId           
then do:    
    assign ocDefaultWHTCode = tqCreditorVatByCreditorDomainId.tcVatCode
           vdDummy          = 0.
    
    <M-61 run DefaultValuesWHTCode
       (input  icCInvoiceRowID (icCInvoiceRowId), 
        input  icCInvoiceType (icCInvoiceType), 
        input  ocDefaultWHTCode (icWHTCode), 
        input-output vdDummy (bdCInvoiceWHTFeesDebitTC), 
        input-output vdDummy (bdCInvoiceWHTFeesCreditTC), 
        input  ocCurrencyCode (icCInvoiceCurrencyCode), 
        input  '':U (iiCInvoiceCurrencyId), 
        input  '':U (idCInvoiceExchangeRate), 
        input  '':U (idCInvoiceExchangeRateScale), 
        input  itCInvoicePostingDate (itCInvoicePostingDate), 
        input  itCInvoiceDate (itCInvoiceDate), 
        output ocWHTType (ocTx2TaxType), 
        output ocWHTDesc (ocTx2Desc), 
        output odWHTPct (odTx2TaxPct), 
        output odWHTPctRecv (odWHTBasePercentage), 
        output ocWHTGLCode (ocWHTAcct), 
        output ocWHTDivisionCode (ocWHTSubAcct), 
        output vdDummy (odCInvoiceWHTTaxableFeesDebitTC), 
        output vdDummy (odCInvoiceWHTTaxableFeesCreditTC), 
        output vdDummy (odCInvoiceWHTTaxableFeesDebitLC), 
        output vdDummy (odCInvoiceWHTTaxableFeesCreditLC), 
        output vdDummy (odCInvoiceWHTTaxableFeesDebitCC), 
        output vdDummy (odCInvoiceWHTTaxableFeesCreditCC), 
        output vdDummy (odCInvoiceWHTAmountDebitTC), 
        output vdDummy (odCInvoiceWHTAmountCreditTC), 
        output vdDummy (odCInvoiceWHTAmountDebitLC), 
        output vdDummy (odCInvoiceWHTAmountCreditLC), 
        output vdDummy (odCInvoiceWHTAmountDebitCC), 
        output vdDummy (odCInvoiceWHTAmountCreditCC), 
        output vlDummy (olWHTIsUpdAllow), 
        output viFcReturnSuper (oiReturnStatus)) in BCInvoice>

    if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
    if viFcReturnSuper < 0 then return.        
end.