project QadFinancials > class BCInvoice > method DefaultValuesGeneralInfo


Parameters


icCInvoiceRowIdinputcharacter
iiCInvoiceIdinputinteger
iiCreditorIdinputinteger
icCreditorCodeinputcharacter
idCInvoiceOriginalTCinputdecimal
icPONbrinputcharacter
icCurrencyCodeinputcharacter
icDocumentReferenceinputcharacter
itCInvoiceTaxPointDateinputdate
icShipFromTaxZoneinputcharacter
icShipToTaxZoneinputcharacter
icTxclTaxClassinputcharacter
icTxuTaxUsageinputcharacter
idCInvoiceExchangeRateinputdecimal
idCInvoiceRateScaleinputdecimal
icPaymentConditionCodeinputcharacter
itCInvoicePostingDateinputdate
ilCInvoiceIsTaxableinputlogical
ilCreditorIsWHTinputlogicalTrue if Creditor is set up for withholding tax
icCInvoiceTypeinputcharacter
ilShipToAddressIsTaxInCityinputlogical
idCInvoiceVatExchangeRateinputdecimal
idCInvoiceVatRateScaleinputdecimal
ilCInvoiceIsLogisticMatchinginputlogical
iiCInvoicePostingYearinputinteger
iiCInvoicePostingPeriodinputinteger
icDivisionCodeinputcharacter
icJournalCodeinputcharacter
iiCInvoiceVoucherinputinteger
icCInvoiceReferenceinputcharacter
icCInvoiceDescriptioninputcharacter
idCInvoiceOriginalLCinputdecimal
icCInvoiceCITextinputcharacter
itCInvoiceDateinputdate
icCostCentreCodeinputcharacter
icProjectCodeinputcharacter
icShipToCountryCodeinputcharacter
ilShipToCountryIsEUCountryinputlogical
iiShipFromAddressIdinputinteger
iiShipToAddressIdinputinteger
ilMatchingPostinginputlogical
icMFJournalCodeinputcharacter
icCInvoiceMFTextinputcharacter
icBusinessRelationCodeinputcharacter
iiInvControlGLProfileIdinputinteger
iiCnControlGLProfileIdinputinteger
icBusinessRelationICCodeinputcharacter
icShipFromCountryCodeinputcharacter
ilShipFromCountryIsEUCountryinputlogical
ilCInvoiceIsInitialStatusinputlogical
ilCInvoiceIsTaxExcludedinputlogical
idCInvoiceCCExchangeRateinputdecimal
idCInvoiceCCRateScaleinputdecimal
ocTxenvTaxEnvoutputcharacter
oiJEInstanceIdoutputinteger
oiCIPostingIdoutputinteger
oiMFPostingIdoutputinteger
dOutputDefaultValuesGenInfooutputdatasetdOutputDefaultValuesGenInfo: dataset that is used as output dataset for the different temp-tables returned by method DefaultValuesGeneralInfo.
This consists of following tables:
tApiCInvoice
tApiCInvoiceBank
tApiCInvoiceBankPayCode
tApiCInvoicePO
tApiCInvoiceVat
tApiCInvoiceWHT
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program3/bcinvoice.p)

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

empty temp-table tAccount.
empty temp-table tApiCInvoice.
empty temp-table tApiCInvoiceBank.
empty temp-table tApiCInvoiceBankPayCode.
empty temp-table tApiCInvoicePO.
empty temp-table tApiCInvoiceVat.
empty temp-table tApiCInvoiceWHT.
empty temp-table tDefaultSafsCI.

if iiCreditorId = 0 or
   iiCreditorId = ?
then do:
    <M-1 run SetMessage
       (input  trim(subst(#T-1'Invalid supplier: &1.':255(2886)T-1#, icCreditorCode)) (icMessage), 
        input  '':U (icArguments), 
        input  '':U (icFieldName), 
        input  '':U (icFieldValue), 
        input  'E':U (icType), 
        input  3 (iiSeverity), 
        input  icCInvoiceRowId (icRowid), 
        input  'QadFin-6989':U (icFcMsgNumber), 
        input  '':U (icFcExplanation), 
        input  '':U (icFcIdentification), 
        input  '':U (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BCInvoice>

    assign oiReturnStatus = -1.
    return.
end. /* end iiCreditorId = 0 or .. */

if icCurrencyCode = "":U
then do:
    assign vcMessage      = trim(substitute(#T-16'The specified currency code: &1 is invalid.':150(167)T-16#, icCurrencyCode))
           oiReturnStatus = -1.
    <M-14 run SetMessage
       (input  vcMessage (icMessage), 
        input  '':U (icArguments), 
        input  '':U (icFieldName), 
        input  '':U (icFieldValue), 
        input  'E':U (icType), 
        input  3 (iiSeverity), 
        input  icCInvoiceRowId (icRowid), 
        input  'QadFin-9020':U (icFcMsgNumber), 
        input  '':U (icFcExplanation), 
        input  '':U (icFcIdentification), 
        input  '':U (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
    return.
end. /* end icCurrencyCode = "":U */
else do:
   <Q-19 assign vlFcQueryRecordsAvailable = CurrencyPrim (NoCache)
      (input icCurrencyCode, (CurrencyCode)
       input ?, (Currency_ID)) in BCurrency >
    if not vlFcQueryRecordsAvailable
    then do:
        assign vcMessage      = trim(substitute(#T-18'The specified currency code: &1 is invalid.':150(167)T-18#, icCurrencyCode))
               oiReturnStatus = -1.
        <M-17 run SetMessage
           (input  vcMessage (icMessage), 
            input  '':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  icCInvoiceRowId (icRowid), 
            input  'QadFin-9021':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
        return.
    end. /* end if not vlFcQueryRecordsAvailable */
end. /* end else end icCurrencyCode = "":U */

if (vcActivityCode = "InitialCreate":U and ilCInvoiceIsInitialStatus = false)
then do:         
    <M-9 run SetMessage
       (input  #T-10'You must select an invoice status code of type Initial for initial invoices.':255(69053)T-10# (icMessage), 
        input  ' ':U (icArguments), 
        input  '':U (icFieldName), 
        input  '':U (icFieldValue), 
        input  'E':U (icType), 
        input  3 (iiSeverity), 
        input  icCInvoiceRowId (icRowid), 
        input  'QadFin-7840':U (icFcMsgNumber), 
        input  '':U (icFcExplanation), 
        input  '':U (icFcIdentification), 
        input  '':U (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BCInvoice>

    assign oiReturnStatus = -1.
    return.
end. /* end if (vcActivityCode = "InitialCreate":U and ilCInvoiceIsInitialStatus = false) */

if viCompanyCCId <> 0 and viCompanyCCId <> ? and (idCInvoiceCCExchangeRate = 0 or idCInvoiceCCExchangeRate = ?)
then do:
    if icCurrencyCode = vcCompanyCC
    then assign idCInvoiceCCExchangeRate = 1
                idCInvoiceCCRateScale    = 1.
    if vlDomainIsStatutory = false
    then assign idCInvoiceCCExchangeRate = idCInvoiceExchangeRate
                idCInvoiceCCRateScale    = idCInvoiceRateScale.
    else do:              
        <M-52 run GetExRateByEntityInvoiceFlag
           (input  itCInvoiceDate (itCInvoiceDate), 
            input  itCInvoicePostingDate (itCInvoicePostingDate), 
            input  ? (iiFromCurrencyId), 
            input  icCurrencyCode (icFromCurrencyCode), 
            input  viCompanyCCId (iiToCurrencyId), 
            input  vcCompanyCC (icToCurrencyCode), 
            input  ? (iiExchangeRateTypeId), 
            input  {&EXCHANGERATETYPE-STATUTORY} (icExchangeRateTypeCode), 
            output idCInvoiceCCExchangeRate (odCInvoiceExchangeRate), 
            output idCInvoiceCCRateScale (odCInvoiceRateScale), 
            output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
              
        if viFcReturnSuper < 0 or
           oiReturnStatus  = 0
        then assign oiReturnStatus = viFcReturnSuper.
   end. /* end else if vlDomainIsStatutory = false */
end. /* end if viCompanyCCId <> 0 and viCompanyCCId <> ? and (idCInvoiceCCExchangeRate = 0 or idCInvoiceCCExchangeRate = ?) */

/* Get default bank number for the selected supplier */
<M-2 run DefaultValuesBank
   (input  iiCreditorId (iiCreditorId), 
    input  iiCInvoiceId (iiCInvoiceId), 
    input  icCInvoiceRowId (icRowId), 
    input  idCInvoiceOriginalTC (idCInvoiceOriginalTC), 
    output tApiCInvoiceBank (tApiCInvoiceBank), 
    output tApiCInvoiceBankPayCode (tApiCInvoiceBankPayCode), 
    output viFcReturnSuper (oiReturnStatus)) in BCInvoice>

if viFcReturnSuper < 0 or
   oiReturnStatus  = 0
then assign oiReturnStatus = viFcReturnSuper.

if oiReturnStatus < 0
then return.

/* Tax stuff */
<M-4 run DefaultValuesTax
   (input  icCInvoiceRowId (icCInvoiceRowid), 
    input  iiCInvoiceId (iiCInvoiceId), 
    input  icCurrencyCode (icCurrencyCode), 
    input  icDocumentReference (icDocumentReference), 
    input  itCInvoiceTaxPointDate (itTaxPointDate), 
    input  icShipFromTaxZone (icShipFromTaxZone), 
    input  icShipToTaxZone (icShipToTaxZone), 
    input  icTxclTaxClass (icTxclTaxClass), 
    input  icTxuTaxUsage (icTxuTaxUsage), 
    input  idCInvoiceOriginalTC (idInvoiceAmountTC), 
    input  idCInvoiceExchangeRate (idExchangeRate), 
    input  idCInvoiceRateScale (idExchangeRateScale), 
    input  icPaymentConditionCode (icPaymentConditionCode), 
    input  itCInvoicePostingDate (itPostingDate), 
    input  ilCInvoiceIsTaxable (ilTaxable), 
    input  ilCreditorIsWHT (ilCreditorIsWht), 
    input  icCInvoiceType (icInvoiceType), 
    input  ilShipToAddressIsTaxInCity (ilShipToAddressIsTaxInCity), 
    input  idCInvoiceVatExchangeRate (idVatExchangeRate), 
    input  idCInvoiceVatRateScale (idVatRateScale), 
    input  ilCInvoiceIsLogisticMatching (ilIsLogisticMatching), 
    output ocTxenvTaxEnv (ocTxenvTaxEnv), 
    input  ilCInvoiceIsTaxExcluded (ilCInvoiceIsTaxExcluded), 
    input  itCInvoiceDate (itCInvoiceDate), 
    input  idCInvoiceCCExchangeRate (idCCExchangeRate), 
    input  idCInvoiceCCRateScale (idCCExchangeRateScale), 
    input  iiShipToAddressId (iiShipToAddressID), 
    input  iiShipFromAddressId (iiShipFromAddressID), 
    input  icCreditorCode (icCreditorCode), 
    output viFcReturnSuper (oiReturnStatus)) in BCInvoice>

if viFcReturnSuper < 0 or
   oiReturnStatus  = 0
then assign oiReturnStatus = viFcReturnSuper.

if oiReturnStatus < 0
then return.

for each tCInvoiceVat where
         tCInvoiceVat.tc_Status <> "D":U:
    create tApiCInvoiceVat.
    raw-transfer tCInvoiceVat to tApiCInvoiceVat.
end. /* end for each tCInvoiceVat */

for each tCInvoiceWHT where
         tCInvoiceWHT.tc_Status <> "D":U:
    create tApiCInvoiceWHT.
    raw-transfer tCInvoiceWHT to tApiCInvoiceWHT.
end. /* end for each tCInvoiceWHT */

/* Get Default Creditor SAF's here so they don't have to be fetched twice, in CreateCIPosting and CreateMFPosting */
<Q-7 run CreditorSafDefaultForCIDef (all) (Read) (NoCache)
   (input iiCreditorId, (CreditorId)
    output dataset tqCreditorSafDefaultForCIDef) in BCreditor >

for each tqCreditorSafDefaultForCIDef where
         tqCreditorSafDefaultForCIDef.tiCreditor_ID = iiCreditorId:
    create tDefaultSafsCI.

    assign tDefaultSafsCI.tcSafCode        = tqCreditorSafDefaultForCIDef.tcSafCode
           tDefaultSafsCI.tcSafConceptCode = tqCreditorSafDefaultForCIDef.tcSafConceptCode.
end. /* end for each tqCreditorSafDefaultForCIDef where .. */

if (ilCInvoiceIsInitialStatus = false)
then do:
    /* Start and/or Open BJournalEntry */
    if viBJournalEntryCIId = 0 or
       viBJournalEntryCIId = ?
    then do:
        <I-11 {bFcStartAndOpenInstance
             &ADD-TO-TRANSACTION = "true"
             &CLASS              = "BJournalEntry"}>
    
        assign vlBJEIsStartedFromCI = true.
    end. /* end if viBJournalEntryCIId = 0 or .. */
    else do:
        <I-12 {bFcOpenInstance
             &CLASS           = "BJournalEntry"}>
    end. /* end else if viBJournalEntryCIId = 0 or .. */

    POSTINGBLOCK : DO :
        /* Create CI Posting */
        <M-5 run CreateCIPosting
           (input  iiCInvoiceId (iiCInvoiceId), 
            input  iiCInvoicePostingYear (iiPeriodYear), 
            input  iiCInvoicePostingPeriod (iiPeriodPeriod), 
            input  itCInvoicePostingDate (itPostingDate), 
            input  iiCreditorId (iiCreditorId), 
            input  icCreditorCode (icCreditorCode), 
            input  icCInvoiceType (icCInvoiceType), 
            input  icDivisionCode (icDivisionCode), 
            input  icJournalCode (icJournalCode), 
            input  iiCInvoiceVoucher (iiVoucher), 
            input  itCInvoiceTaxPointDate (itTaxPointDate), 
            input  icCInvoiceReference (icReference), 
            input  icCInvoiceDescription (icDescription), 
            input  idCInvoiceOriginalTC (idInvoiceAmountTC), 
            input  idCInvoiceOriginalLC (idInvoiceAmountLC), 
            input  ? (idInvoiceAmountCC), 
            input  icCurrencyCode (icCurrencyCode), 
            input  idCInvoiceExchangeRate (idExchangeRate), 
            input  idCInvoiceRateScale (idExchangeRateScale), 
            input  icCInvoiceCIText (icCIText), 
            input  '':U (icPostingType), 
            input  '':U (icGlCode), 
            input  icCostCentreCode (icCostCentreCode), 
            input  icProjectCode (icProjectCode), 
            input  false (ilOnlyControlAccount), 
            input  icShipToCountryCode (icShipToCountryCode), 
            input  icTxclTaxClass (icTxclTaxCls), 
            input  icTxuTaxUsage (icTxuTaxUsage), 
            input  ocTxenvTaxEnv (icTxenvTaxEnv), 
            input  icPaymentConditionCode (icPaymentCondition), 
            input  ilShipToAddressIsTaxInCity (ilIsTaxInCityFromShipTo), 
            input  icPONbr (icPoNbr), 
            input  ilCInvoiceIsTaxable (ilIsTaxable), 
            input  icCostCentreCode (icControlCostCentreCode), 
            input  icProjectCode (icControlProjectCode), 
            input  iiShipFromAddressId (iiShipFromAddressId), 
            input  iiShipToAddressId (iiShipToAddressId), 
            input  ilCInvoiceIsLogisticMatching (ilIsLogisticMatching), 
            input  false (ilGetDefaultSafs), 
            input  icBusinessRelationCode (icBusinessRelationCode), 
            input  ? (iiPrePayControlGLProfileId), 
            input  iiInvControlGLProfileId (iiInvControlGLProfileId), 
            input  iiCnControlGLProfileId (iiCnControlGLProfileId), 
            input  icCInvoiceRowId (icCInvoiceRowid), 
            input  icBusinessRelationICCode (icBusinessRelationInterCoCode), 
            input  icShipFromCountryCode (icShipFromCountryCode), 
            input  ilShipFromCountryIsEUCountry (ilShipFromCountryIsEUCountry), 
            input  icShipFromTaxZone (icCreditorTaxZone), 
            input  ilCInvoiceIsTaxExcluded (ilCInvoiceIsTaxExcluded), 
            input  ilCInvoiceIsInitialStatus (ilIsInitialStatus), 
            input-output tApiCInvoiceVat (tApiCInvoiceVat), 
            input  tDefaultSafsCI (tDefaultSafsCI), 
            input  no (ilHandleCommunicationWithJE), 
            input-output viBJournalEntryCIID (biBJournalEntryId), 
            input-output oiCIPostingId (biPostingId), 
            input  idCInvoiceCCExchangeRate (idExchangeRateCC), 
            input  idCInvoiceCCRateScale (idExchangeRateScaleCC), 
            input  itCInvoiceDate (itInvoiceDate), 
            output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
        
        if viFcReturnSuper < 0 or oiReturnStatus  = 0
        then assign oiReturnStatus = viFcReturnSuper.
        if oiReturnStatus < 0
        then leave POSTINGBLOCK.
        
        assign oiJEInstanceId = viBJournalEntryCIID.
                
        /* Create MF Posting */
        if ilMatchingPosting
        then do:
            <M-6 run CreateMFPosting
               (input  iiCInvoiceId (iiCInvoiceId), 
                input  iiCInvoicePostingYear (iiPeriodYear), 
                input  iiCInvoicePostingPeriod (iiPeriodPeriod), 
                input  itCInvoicePostingDate (itPostingDate), 
                input  iiCreditorId (iiCreditorId), 
                input  icCreditorCode (icCreditorCode), 
                input  icCInvoiceType (icCInvoiceType), 
                input  icDivisionCode (icDivisionCode), 
                input  icMFJournalCode (icJournalCode), 
                input  0 (iiVoucher), 
                input  idCInvoiceOriginalTC (idInvoiceAmountTC), 
                input  icCurrencyCode (icCurrencyCode), 
                input  icCInvoiceMFText (icMFText), 
                input  icCostCentreCode (icCostCentreCode), 
                input  icProjectCode (icProjectCode), 
                input  icCInvoiceDescription (icDescription), 
                input  idCInvoiceExchangeRate (idExchangeRate), 
                input  idCInvoiceRateScale (idExchangeRateScale), 
                input  ilCInvoiceIsLogisticMatching (ilIsLogisticMatching), 
                input  icBusinessRelationCode (icBusinessRelationCode), 
                input  icBusinessRelationICCode (icBusinessRelationICCode), 
                input  icCInvoiceRowId (icCInvoiceRowid), 
                input  icCInvoiceReference (icCInvoiceReference), 
                input  false (ilGetDefaultSafs), 
                input  tAccount (tAccount), 
                input  tApiCInvoiceVat (tApiCInvoiceVat), 
                input  tDefaultSafsCI (tDefaultSafsCI), 
                input  no (ilHandleCommunicationWithJE), 
                input  ilCInvoiceIsTaxExcluded (ilCInvoiceIsTaxExcluded), 
                input  itCInvoiceDate (itCInvoiceDate), 
                input  idCInvoiceCCExchangeRate (idCCExchangeRate), 
                input  idCInvoiceCCRateScale (idCCExchangeRateScale), 
                input-output oiMFPostingId (biPostingId), 
                output vcDummy (ocCInvoiceAllocationStatus), 
                output viDummy (oiBJournalEntryId), 
                output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
        
            if viFcReturnSuper < 0 or oiReturnStatus  = 0
            then assign oiReturnStatus = viFcReturnSuper.
            if oiReturnStatus < 0
            then leave POSTINGBLOCK.
        end. /* end if ilMatchingPosting */
    END. /* end POSTINGBLOCK */

    /* If an error was raised during the posting block then we want to remove any postings that might have been created from the instance*/
    if oiReturnStatus < 0 and (oiCIPostingId <> 0 or oiMFPostingId <> 0)
    then do:       
         
        <M-20 run MarkInstanceDataAsDeleted
           (input  string(oiCIPostingId) + ',' + string(oiMFPostingId) (icPostingIDToDelete), 
            input  '' (icPostingLineIDToDelete), 
            output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>  
        if viFcReturnSuper < 0 or oiReturnStatus  = 0
        then assign oiReturnStatus = viFcReturnSuper.
    end. /* end if oiReturnStatus < 0 and (oiCIPostingId <> 0 or oiMFPostingId <> 0) */
     
    <I-13 {bFcCloseInstance
          &CLASS           = "BJournalEntry"}>
    if oiReturnStatus < 0 then return.
end. /* if not CInvoiceIsInitialStatus */

find tCInvoice where
     tCInvoice.tc_Rowid = icCInvoiceRowId
     no-error.

if available tCInvoice
then do:
    create tApiCInvoice.
    raw-transfer tCInvoice to tApiCInvoice.
end. /* end if available tCInvoice */