project QadFinancials > class BDebtorReport > method DebtorInvoicePrint

report procedure


Parameters


icLanguageCodeinputcharacter
tFilterinputtemp-table
dcrDebtorInvoicePrintoutputdataset
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program7/bdebtorreport.p)

empty temp-table tqDebtorInvoicePrint.

<M-1 run GetReportLabels
   (input  'DebtorInvoicePrint':U (icReportName), 
    input  icLanguageCode (icLanguageCode), 
    input  tFilter (tFilter), 
    output tqHeader (tqHeader), 
    output tqFilter (tqFilter), 
    output tqText (tqText), 
    output oiReturnStatus (oiReturnStatus)) in BDebtorReport>

if oiReturnStatus <> 0 then return.

<M-2 run SetDataItemsBasedOnFilterTT
   (output oiReturnStatus (oiReturnStatus)) in BDebtorReport>

if vcEntityFilter1 = ? 
then assign vcCurrentCompanyCode = vcCompanyCode.
else assign vcCurrentCompanyCode = vcEntityFilter1.

<Q-3 run GetDebtorInvoicePrint (all) (Read) (NoCache)
   (input ?, (CompanyId)
    input vtDInvoiceDateFromFilter, (DInvoiceDateFromFilter)
    input vtDInvoiceDateToFilter, (DInvoiceDateToFilter)
    input vtDInvoiceDueDateFromFilter, (DInvoiceDueDateFromFilter)
    input vtDInvoiceDueDateToFilter, (DInvoiceDueDateToFilter)
    input vcDInvoiceTypeFilter, (DInvoiceTypeFilter)
    input vcCandoJournalCodeFilter, (CandoJournalCodeFilter)
    input vcCurrencyCodeFilter, (CurrencyCodeFilter)
    input vcCandoBRCodeFilter, (CandoBRCodeFilter)
    input viAccYear, (AccYear)
    input vlDinvoiceIsOpenFilter, (DInvoiceIsOpenFilter)
    input viDInvoiceVoucherFrom, (DInvoiceVoucherFrom)
    input viDInvoiceVoucherTo, (DInvoiceVoucherTo)
    input vcToDebtorCodeFilter, (ToDebtorCodeFilter)
    input vcFromDebtorCodeFilter, (FromDebtorCodeFilter)
    input vcFromDebtorBillToCode, (FromDebtorBillToCodeFilter)
    input vcToDebtorBillToCode, (ToDebtorBillToCodeFilter)
    input vcFromDebtorShipToCode, (FromDebtorShipToCodeFilter)
    input vcToDebtorShipToCode, (ToDebtorShipToCodeFilter)
    input vcCurrentCompanyCode, (CompanyCode)
    input vcCandoDebtorCodeFilter, (DebtorCodeCando)
    output dataset tqGetDebtorInvoicePrint) in BDebtorReport>



<Q-11 run CompanyPrim (all) (Read) (NoCache)
   (input ?, (LookupCompanyId)
    input vcCurrentCompanyCode, (CompanyCode)
    output dataset tqCompanyPrim) in BCompany >

find first tqCompanyPrim 
     no-error.
if available tqCompanyPrim 
then do:        
        /* Populate Company Address Details here */
        <Q-12 run GetCompanyAddress (all) (Read) (NoCache)
           (input tqCompanyPrim.tiCompany_ID, (CompanyId)
            input {&ADDRESSTYPECODESYSTEM-HEADOFFICE}, (AddressTypeCode)
            input yes, (ContactIsPrimary)
            input '':U, (CompanyCode)
            output dataset tqGetCompanyAddress) in BDebtorReport >
        find first tqGetCompanyAddress 
             no-error.
        if available tqGetCompanyAddress
        then assign vlCompanyData = true. 
   
   /* ========================================================= */
   /* Check if invoice certification is enabled for this domain */
   /* ========================================================= */
   <Q-96 run CompanyForDomainProperties (all) (Read) (NoCache)
      (input ?, (CompanyId)
       input vcCurrentCompanyCode, (CompanyCode)
       output dataset tqCompanyForDomainProperties) in BCompany>
   find first tqCompanyForDomainProperties
        no-lock no-error. 
   if not available tqCompanyForDomainProperties
   then do:
       assign vcMessage      = #T-53'Unable to retrieve the domain settings.':255(576266750)T-53#
              oiReturnStatus = -3.
       <M-71 run SetMessage
           (input  vcMessage (icMessage), 
            input  '':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'E':U (icType), 
            input  1 (iiSeverity), 
            input  '':U (icRowid), 
            input  'qadfin-265409':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BDebtorReport>
        return.
    end. /* if not available tqCompanyForDomainProperties*/ 
   
    <Q-10 run DebtorByDebtor (all) (Read) (NoCache)
        (input tqCompanyPrim.tiCompany_ID, (CompanyId)
        input ?, (AddressType)
        input ?, (DebtorId)
        input ?, (DebtorCode)
        output dataset tqDebtorByDebtor) in BDebtor >     
            
    for each tqGetDebtorInvoicePrint break by tqGetDebtorInvoicePrint.tcTxclTaxCls:
    
        create tqDebtorInvoicePrint.
        assign tqDebtorInvoicePrint.tcCustomer                  = tqGetDebtorInvoicePrint.tcDebtorCode
            tqDebtorInvoicePrint.tcCustDescription              = tqGetDebtorInvoicePrint.tcDebtorCode
            tqDebtorInvoicePrint.tcCustomerName                 = tqGetDebtorInvoicePrint.tcBusinessRelationName1
            tqDebtorInvoicePrint.tcCustomerAddress              = tqGetDebtorInvoicePrint.tcAddressStreet1
            tqDebtorInvoicePrint.tcCustomerCity                 = tqGetDebtorInvoicePrint.tcAddressCity
            tqDebtorInvoicePrint.tcCustomerState                = tqGetDebtorInvoicePrint.tcAddressState
            tqDebtorInvoicePrint.tcCustomerZip                  = tqGetDebtorInvoicePrint.tcAddressZip
            tqDebtorInvoicePrint.tcCustomerTelephone            = tqGetDebtorInvoicePrint.tcAddressTelephone
            tqDebtorInvoicePrint.tcDebtorCredittermDesc         = tqGetDebtorInvoicePrint.tcPaymentConditionDescript
            tqDebtorInvoicePrint.tcDebtorCreditTermCode         = tqGetDebtorInvoicePrint.tcPaymentConditionCode
            tqDebtorInvoicePrint.tcDebtorCreditRatingCode       = tqGetDebtorInvoicePrint.tcDebtorCreditRatingCode
            tqDebtorInvoicePrint.tcInvoiceReference             = tqGetDebtorInvoicePrint.tcDInvoiceDIText
            tqDebtorInvoicePrint.tcDInvoiceDescription          = tqGetDebtorInvoicePrint.tcDInvoiceDescription
            tqDebtorInvoicePrint.tcDinvoiceSalespns             = tqGetDebtorInvoicePrint.tcDInvoiceSlsPsn1
            tqDebtorInvoicePrint.tcDinvoiceShiptoCode           = tqGetDebtorInvoicePrint.tcDInvoiceShipToCode
            tqDebtorInvoicePrint.tcDinvoiceSO                   = tqGetDebtorInvoicePrint.tcDInvoicePurchaseOrder
            tqDebtorInvoicePrint.tcInvoiceType                  = if tqGetDebtorInvoicePrint.tcDInvoiceType = "FINANCECHARGE" 
                                                                  then "SALES FINANCECHARGE" else tqGetDebtorInvoicePrint.tcDInvoiceType
            tqDebtorInvoicePrint.tcReasonCode                   = tqGetDebtorInvoicePrint.tcReasonCode
            tqDebtorInvoicePrint.tcCurrencyCode                 = tqGetDebtorInvoicePrint.tcCurrencyCode
            tqDebtorInvoicePrint.tlDinvoiceisTaxable            = tqGetDebtorInvoicePrint.tlDInvoiceIsTaxable
            tqDebtorInvoicePrint.ttDueDate                      = tqGetDebtorInvoicePrint.ttDInvoiceDueDate
            tqDebtorInvoicePrint.ttDInvoiceDate                 = tqGetDebtorInvoicePrint.ttDInvoiceDate
            tqDebtorInvoicePrint.ttDInvoiceDiscountDueDate      = tqGetDebtorInvoicePrint.ttDInvoiceDiscountDueDate
            tqDebtorInvoicePrint.tdInvoiceAmount                = tqGetDebtorInvoicePrint.tdDInvoiceBalanceTC
            tqDebtorInvoicePrint.tdInvoiceVat                   = if (tqGetDebtorInvoicePrint.tlDInvoiceIsTaxable and
                                                                      (tqDebtorInvoicePrint.tcInvoiceType = {&INVOICETYPE-CREDITNOTE} or
                                                                       tqDebtorInvoicePrint.tcInvoiceType = {&INVOICETYPE-CREDITNOTECORRECTION})) then
                                                                      (- tqGetDebtorInvoicePrint.tdDInvoiceVatVatDebitTC) else tqGetDebtorInvoicePrint.tdDInvoiceVatVatCreditTC
            tqDebtorInvoicePrint.ttDinvoiceTaxPointDate         = tqGetDebtorInvoicePrint.ttDInvoiceDiscountDueDate
            tqDebtorInvoicePrint.tcARBatchNumber                = tqGetDebtorInvoicePrint.tcDInvoiceBatch
            tqDebtorInvoicePrint.tcInvoiceVoucher               = string(tqGetDebtorInvoicePrint.tiDInvoicePostingYear, "9999":U) + "/":U +
                                                                  tqGetDebtorInvoicePrint.tcJournalCode + "/":U +
                                                                  string(tqGetDebtorInvoicePrint.tiDInvoiceVoucher, "999999999":U)
            tqDebtorInvoicePrint.tiDInvoiceReminderCount        = tqGetDebtorInvoicePrint.tiDInvoiceReminderCount
            tqDebtorInvoicePrint.tcDebtorBillTo                 = (if tqGetDebtorInvoicePrint.tcDebtorBillToCode <> "":U
                                                                   then tqGetDebtorInvoicePrint.tcDebtorBillToCode
                                                                   else tqDebtorInvoicePrint.tcCustomer)
            tqDebtorInvoicePrint.tcDebtorSoldTo                 = tqGetDebtorInvoicePrint.tcDebtorSoldToCode
            tqDebtorInvoicePrint.tcDebtorShipTo                 = tqGetDebtorInvoicePrint.tcDInvoiceShipToCode
            tqDebtorInvoicePrint.tcTaxRateDesc                  = tqGetDebtorInvoicePrint.tctx2_desc
            tqDebtorInvoicePrint.tcTaxClass                     = tqGetDebtorInvoicePrint.tcTxclTaxCls
            tqDebtorInvoicePrint.tiTaxRate                      = tqGetDebtorInvoicePrint.tdtx2_tax_pct
            tqDebtorInvoicePrint.tlDInvoiceVatIsTaxable         = tqGetDebtorInvoicePrint.tlDInvoiceVatIsTaxable
            tqDebtorInvoicePrint.tcDInvoiceInvCertCertificate   = if tqCompanyForDomainProperties.tlDomainPropertyIsInvCertific
                                                                  then tqGetDebtorInvoicePrint.tcDInvoiceInvCertCertificate
                                                                  else "":u
            tqDebtorInvoicePrint.tcDInvoiceInvCertSignatureCurr = if tqCompanyForDomainProperties.tlDomainPropertyIsInvCertific
                                                                  then substring(tqGetDebtorInvoicePrint.tcDInvoiceInvCertSignatureCurr,1,1,"CHARACTER")  +
                                                                       substring(tqGetDebtorInvoicePrint.tcDInvoiceInvCertSignatureCurr,11,1,"CHARACTER") +
                                                                       substring(tqGetDebtorInvoicePrint.tcDInvoiceInvCertSignatureCurr,21,1,"CHARACTER") +
                                                                       substring(tqGetDebtorInvoicePrint.tcDInvoiceInvCertSignatureCurr,31,1,"CHARACTER")
                                                                  else "":u
            tqDebtorInvoicePrint.tcDInvoiceTSMNumber            = tqGetDebtorInvoicePrint.tcDInvoiceTSMNumber
            tqDebtorInvoicePrint.tcDInvoiceDIText               = tqGetDebtorInvoicePrint.tcDInvoiceDIText.
                                                                  
            /* get bank number */
            <Q-46 run GetBankNumberByDInvoiceId (first) (Read) (NoCache)
               (input ?, (CompanyId)
                input tqGetDebtorInvoicePrint.tiDInvoice_ID, (DInvoiceId)
                output dataset tqGetBankNumberByDInvoiceId) in BDInvoice>
            find first tqGetBankNumberByDInvoiceId no-error.
            if available tqGetBankNumberByDInvoiceId
            then do:
                assign tqDebtorInvoicePrint.tcBankNumber = tqGetBankNumberByDInvoiceId.tcBankNumber.
            end.                                                                  

        if tqGetDebtorInvoicePrint.tlDInvoiceVatIsTaxable
        then do:
            assign 
                tqDebtorInvoicePrint.tdInvoiceBaseAmount = if (tqDebtorInvoicePrint.tcInvoiceType = {&INVOICETYPE-CREDITNOTE} or 
                                                               tqDebtorInvoicePrint.tcInvoiceType = {&INVOICETYPE-CREDITNOTECORRECTION})
                                                           then (- tqGetDebtorInvoicePrint.tdDInvoiceVatVatBaseDebitTC)
                                                           else tqGetDebtorInvoicePrint.tdDInvoiceVatVatBaseCreditTC.
        end.
        else do:
             tqDebtorInvoicePrint.tdInvoiceBaseAmount  = if (tqDebtorInvoicePrint.tcInvoiceType = {&INVOICETYPE-CREDITNOTE} or
                                                             tqDebtorInvoicePrint.tcInvoiceType = {&INVOICETYPE-CREDITNOTECORRECTION})
                                                         then (- tqGetDebtorInvoicePrint.tdDInvoiceVatNTBaseDebitTC)
                                                         else tqGetDebtorInvoicePrint.tdDInvoiceVatNTBaseCreditTC.
        end.
        if vlCompanyData = true 
        then assign tqDebtorInvoicePrint.tcEntity    = tqGetDebtorInvoicePrint.tcCompanyCode
            tqDebtorInvoicePrint.tcCompanyAddress    = tqGetCompanyAddress.tcAddressStreet1
            tqDebtorInvoicePrint.tcCompanyCity       = tqGetCompanyAddress.tcAddressCity
            tqDebtorInvoicePrint.tcCompanyState      = tqGetCompanyAddress.tcStateCode
            tqDebtorInvoicePrint.tcCompanyZip        = tqGetCompanyAddress.tcAddressZip
            tqDebtorInvoicePrint.tcCompanyTelephone  = tqGetCompanyAddress.tcAddressTelephone
            tqDebtorInvoicePrint.tcCompanyStateTaxID = tqGetCompanyAddress.tcAddressTaxIDState.
         
        if tqDebtorInvoicePrint.tcDebtorBillTo <> "":U 
        then do:
            find first tqDebtorByDebtor where 
                       tqDebtorByDebtor.tcDebtorCode      = tqDebtorInvoicePrint.tcDebtorBillTo AND
                       tqDebtorByDebtor.tcAddressTypeCode = {&ADDRESSTYPECODESYSTEM-HEADOFFICE} no-error.        
            if available tqDebtorByDebtor 
            then assign tqDebtorInvoicePrint.tcBillToAddress     = tqDebtorByDebtor.tcAddressStreet1
                        tqDebtorInvoicePrint.tcBillToAddress2    = tqDebtorByDebtor.tcAddressStreet2
                        tqDebtorInvoicePrint.tcBillToAddress3    = tqDebtorByDebtor.tcAddressStreet3
                        tqDebtorInvoicePrint.tcBillToCity        = tqDebtorByDebtor.tcAddressCity
                        tqDebtorInvoicePrint.tcBillToDescription = tqDebtorByDebtor.tcBusinessRelationName1
                        tqDebtorInvoicePrint.tcBillToName        = tqDebtorByDebtor.tcAddressName
                        tqDebtorInvoicePrint.tcBillToState       = tqDebtorByDebtor.tcStateCode
                        tqDebtorInvoicePrint.tcBillToTelephone   = tqDebtorByDebtor.tcAddressTelephone
                        tqDebtorInvoicePrint.tcBillToZip         = tqDebtorByDebtor.tcAddressZip
                        tqDebtorInvoicePrint.tcBillToStateTaxID  = tqDebtorByDebtor.tcAddressTaxIDState
                        tqDebtorInvoicePrint.tcBillToCountry     = tqDebtorByDebtor.tcCountryDescription.
        end. /* if tqDebtorInvoicePrint.tcDebtorBillTo <> "":U  */                        
                                                                                       
        if tqDebtorInvoicePrint.tcDebtorSoldTo <> "":U 
        then do:
            find first tqDebtorByDebtor where
                       tqDebtorByDebtor.tcDebtorCode      = tqDebtorInvoicePrint.tcDebtorSoldTo AND
                       tqDebtorByDebtor.tcAddressTypeCode = {&ADDRESSTYPECODESYSTEM-HEADOFFICE} no-error.                                                                             
            if available tqDebtorByDebtor 
            then assign tqDebtorInvoicePrint.tcSoldToAddress     = tqDebtorByDebtor.tcAddressStreet1
                        tqDebtorInvoicePrint.tcSoldToAddress2    = tqDebtorByDebtor.tcAddressStreet2
                        tqDebtorInvoicePrint.tcSoldToAddress3    = tqDebtorByDebtor.tcAddressStreet3
                        tqDebtorInvoicePrint.tcSoldToCity        = tqDebtorByDebtor.tcAddressCity
                        tqDebtorInvoicePrint.tcSoldToDescription = tqDebtorByDebtor.tcBusinessRelationName1
                        tqDebtorInvoicePrint.tcSoldToName        = tqDebtorByDebtor.tcAddressName
                        tqDebtorInvoicePrint.tcSoldToState       = tqDebtorByDebtor.tcStateCode
                        tqDebtorInvoicePrint.tcSoldToTelephone   = tqDebtorByDebtor.tcAddressTelephone
                        tqDebtorInvoicePrint.tcSoldToZip         = tqDebtorByDebtor.tcAddressZip
                        tqDebtorInvoicePrint.tcSoldToCountry     = tqDebtorByDebtor.tcCountryDescription.
        end. /* if tqDebtorInvoicePrint.tcDebtorSoldTo <> "":U then */
        
        if tqDebtorInvoicePrint.tcDebtorShipTo <> "":U
        then do:
           if tqDebtorInvoicePrint.tcCustomer =  tqDebtorInvoicePrint.tcDebtorShipTo 
           then do:
               find first tqDebtorByDebtor where
                          tqDebtorByDebtor.tcDebtorCode      = tqDebtorInvoicePrint.tcDebtorShipTo AND
                          tqDebtorByDebtor.tcAddressTypeCode = {&ADDRESSTYPECODESYSTEM-HEADOFFICE} no-error.
               
               if available tqDebtorByDebtor
               then assign tqDebtorInvoicePrint.tcShipToName       = tqDebtorByDebtor.tcAddressName
                           tqDebtorInvoicePrint.tcShipToStateTaxID = tqDebtorByDebtor.tcAddressTaxIDState.
           end. /* if tqDebtorInvoicePrint.tcCustomer =  tqDebtorInvoicePrint.tcDebtorShipTo  */           
           else do:
                       
               <Q-84 run DebtorShiptoByDebtorForInvRep (all) (Read) (NoCache)
                  (input tqCompanyPrim.tiCompany_ID, (CompanyId)
                   input tqDebtorInvoicePrint.tcDebtorShipTo, (DebtorShipToCode)
                   output dataset tqDebtorShiptoByDebtorForInvRep) in BDebtorShipTo> 
                                                      
               find first tqDebtorShiptoByDebtorForInvRep where
                          tqDebtorShiptoByDebtorForInvRep.tcDebtorShipToCode = tqDebtorInvoicePrint.tcDebtorShipTo AND
                          tqDebtorShiptoByDebtorForInvRep.tcDebtorCode       = tqDebtorInvoicePrint.tcDebtorSoldTo no-error.

               if available tqDebtorShiptoByDebtorForInvRep 
               then assign tqDebtorInvoicePrint.tcShipToName       = tqDebtorShiptoByDebtorForInvRep .tcAddressName
                           tqDebtorInvoicePrint.tcShipToStateTaxID = tqDebtorShiptoByDebtorForInvRep .tcAddressTaxIDState.   
                
               else do:
                           
                  /* Handling Customer Invoice Create using Financials with any type Address type  */                            
                  <Q-19 run AddressById (all) (Read) (NoCache)
                     (input tqGetDebtorInvoicePrint.tiShipToAddress_ID, (AddressID)
                      output dataset tqAddressById) in BBusinessRelation >
             
                  find first tqAddressById  where tqAddressById.tiAddress_ID = tqGetDebtorInvoicePrint.tiShipToAddress_ID no-error.

                  if available tqAddressById
                  then assign tqDebtorInvoicePrint.tcShipToName       = tqAddressById.tcAddressName
                              tqDebtorInvoicePrint.tcShipToStateTaxID = tqAddressById.tcAddressTaxIDState.
                              
               end. /* else do */
           end.  /* else if  tqDebtorInvoicePrint.tcCustomer <> tqDebtorInvoicePrint.tcDebtorShipTo  */               
        end. /* if tqDebtorInvoicePrint.tcDebtorShipTo <> "":U then */
    end. /* for each tqGetDebtorInvoicePrint: */
        
end. /* if available tqCompanyPrim then */