project QadFinancials > class BCInvoice > method DefaultValuesPO

Description

Method that returns the default for a certain PO


Parameters


icCInvoiceTcRowidinputcharacterRowid of the current invoice
icPODomaininputcharacterDomain of the PO
icPONbrinputcharacterNumber of the PO
icCInvoiceTypeinputcharacterInvoice Type
itCInvoicePostingDateinputdatePosting Date of the invoice
itCInvoiceDateinputdateDate of the invoice
icOwnVatCurrencyCodeinputcharacterOwn Vat Currency Code
itCInvoiceTaxPointDateinputdateTax Point Date Of the Invoice
idCInvoiceOriginalTCinputdecimalOriginal Invoice Amount TC
iiCInvoicePostingYearinputintegerYear of the Invoice
icCInvoiceJournalCodeinputcharacterDaybook code of the invoice
iiCInvoiceVoucherinputintegerVoucher
ocPOSupplierCodeoutputcharacter
ocPOCurrencyCodeoutputcharacterCurrency-code of the PO
ocPOPaymentConditionCodeoutputcharacterPayment-condition-code of the PO
ocBusinessRelationCodeoutputcharacterBusiness Relation
ocBusinessRelationName1outputcharacterName of the Business Relation
ocCInvoiceCreditorVatNumberoutputcharacterSupplier Tax Number
ocReasonAllocationStatusoutputcharacterAllocation status of invoice status code
ocReasonCodeoutputcharacterInvoice Status Code
olCInvoiceIsTaxableoutputlogicalIS Taxable
olCInvoiceIsInvoiceApprovedoutputlogicalIs Invoice Approved ?
olCInvoiceIsLockPaymentoutputlogicalIS Lock Payment
olCInvoiceIsLogisticMatchingoutputlogicalIS Logistic Matching
ocCreditorTaxClassoutputcharacterTax Class of the supplier
ocCreditorTaxUsageoutputcharacterTax Usage of the supplier
ocCreditorTaxZoneoutputcharacterTax Zone of the supplier
oiCreditorCnControlGLProfileIdoutputintegerCN Control GL Profile Id
oiCreditorInvControlGLProfileIdoutputintegerInv Control GL Profile Id
oiCreditorDivisionProfileIdoutputintegerSub-Account profile Id
olCreditorIsIndividualPaymentoutputlogicalIs Individual Payment ?
ocCredVatNumberCountryCodeoutputcharacterCountry Code of the supplier tax number
ocTransactionStartCountryCodeoutputcharacterCountry Code of the transaction start
oiShipFromAddressIdoutputintegerShip From Address ID
olControlGLIsDivisionAccountoutputlogicalIs Control Account a Division Account ?
ocDivisionCodeoutputcharacterSub-Account
ocCostCentreCodeoutputcharacterCost Centre
ocProjectCodeoutputcharacterProject Code
ocBLWIGroupCodeoutputcharacterBLWI Group Code
odCInvoiceExchangeRateoutputdecimalExchange rate
odCInvoiceRateScaleoutputdecimalRate Scale
otCInvoiceDueDateoutputdateDue Date
otCInvoiceDiscountDueDateoutputdateDiscount Due Date
ocMFJournalCodeoutputcharacterMF DayBook
odCInvoiceVatExchangeRateoutputdecimalTax Exchange Rate
odCInvoiceVatRateScaleoutputdecimalTax Rate Scale
ocPurchaseTypeCodeoutputcharacterPurchase Type Code
oiCreditorIdoutputintegerSupplier Id
olBusinessRelationIsIntercooutputlogicalIs Interco Business Relation ?
ocBusinessRelationICCodeoutputcharacterIC Code Of Business Relation
olCountryIsEUCountryoutputlogicalIs EU Country ?
ocJournalCodeoutputcharacterDayBook
ocDaybookSetoutputcharacter
ocSiteoutputcharacter
oiCInvoiceVoucheroutputintegerVoucher
olCInvoiceIsInitialStatusoutputlogicalIS Initial Status ?
ocShipToBusinessRelationCodeoutputcharacterBusiness relation code of the ship to
ocShipToAddressTypeCodeoutputcharacterAddress type code of the ship to
ocShipToAddressStreet1outputcharacterStreet 1 of Ship To
ocShipToAddressStreet2outputcharacterStreet 2 of Ship To
ocShipToAddressStreet3outputcharacterStreet 3 of Ship To Address
ocShipToAddressZipoutputcharacterZip of the Ship To
ocShipToAddressCityoutputcharacterCity of the Ship To
ocShipToAddressStateoutputcharacterState of the Ship To
ocShipToCountryCodeoutputcharacterCountry Code of Ship To
olShipToCountryIsEUCountryoutputlogicalis ship to country an eu country ?
ocShipToTxzTaxZoneoutputcharacterTax zone of ship-to should be used when selecting Purchase Order
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 supplier based on the current domain
ocWHTTypeoutputcharacter
ocWHTDescoutputcharacter
odWHTPctoutputdecimal
odWHTPctRecvoutputdecimal
ocWHTGLCodeoutputcharacter
ocWHTDivisionCodeoutputcharacter
odCInvoiceCCExchangeRateoutputdecimal
odCInvoiceCCRateScaleoutputdecimal
oiShipToAddressIdoutputintegerShip To Address ID
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program3/bcinvoice.p)

/* ================== */
    /* Exception hanlding */
    /* ================== */
    assign oiReturnStatus       = -98.
    
    /* ======================================================================= */
    /* Validate input; when information is missing then raise error and return */
    /* ======================================================================= */
    if icCInvoiceTcRowid    = "":U or 
       icCInvoiceTcRowid    = ?    or
       icPODomain           = "":U or 
       icPODomain           = ?    or
       icPONbr              = "":U or 
       icPONbr              = ? 
    then do :
        assign oiReturnStatus   = -3
               vcMessage        = trim(substitute(#T-4'Defaulting based upon purchase order: missing elementary information. PO domain: &1, PO number: &2, Invoice: &3':255(69408)T-4#,icPODomain,icPONbr,icCInvoiceTcRowid)).
        <M-2 run SetMessage
           (input  vcMessage (icMessage), 
            input  ' ':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  ' ':U (icRowid), 
            input  'QadFin-8062':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
        Return.
    end. /* if icCInvoiceTcRowid    = "":U or  */
    
    /* ===================================================================== */
    /* Find the PO and return the supplier, currency and pay-cond when found */
    /* When information is incorrect then raise error and return             */
    /* ===================================================================== */
    <Q-1 run PurchaseOrderByDomainNbrVend (all) (Read) (NoCache)
       (input icPODomain, (DomainCode)
        input icPONbr, (PONbr)
        input ?, (POVendor)
        input ?, (POCurrency)
        input ?, (POType)
        output dataset tqPurchaseOrderByDomainNbrVend) in BMfgPO >
    find tqPurchaseOrderByDomainNbrVend
         no-error.
    if not available tqPurchaseOrderByDomainNbrVend
    then do :
        assign oiReturnStatus   = -3
               vcMessage        = trim(substitute(#T-6'Cannot find the purchase order based upon the PO domain (&1) and the PO number (&2).':255(69409)T-6#,icPODomain,icPONbr,icCInvoiceTcRowid)).
        <M-5 run SetMessage
           (input  vcMessage (icMessage), 
            input  ' ':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  ' ':U (icRowid), 
            input  'QadFin-8063':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
        Return.
    end. /* if not available tqPurchaseOrderByDomainNbrVend */
    assign ocPOSupplierCode         = tqPurchaseOrderByDomainNbrVend.tcpo_vend
           ocPOCurrencyCode         = tqPurchaseOrderByDomainNbrVend.tcpo_curr
           ocPOPaymentConditionCode = tqPurchaseOrderByDomainNbrVend.tcpo_cr_terms.
        
    if ocPOSupplierCode <> "":U and ocPOSupplierCode <> ?
    then do:
        <M-7 run DefaultValuesSupplier
           (input  ? (icPoNbr), 
            input-output ocPOSupplierCode (bcCreditorCode), 
            input  icCInvoiceType (icCInvoiceType), 
            input  itCInvoicePostingDate (itCInvoicePostingDate), 
            input  itCInvoiceDate (itCInvoiceDate), 
            input  icOwnVatCurrencyCode (icOwnVatCurrencyCode), 
            input  itCInvoiceTaxPointDate (itCInvoiceTaxPointDate), 
            input  icCInvoiceTcRowid (icCInvoiceRowID), 
            input  idCInvoiceOriginalTC (idCInvoiceOriginalTC), 
            input  iiCInvoicePostingYear (iiCInvoicePostingYear), 
            input  icCInvoiceJournalCode (icCInvoiceJournalCode), 
            input  iiCInvoiceVoucher (iiCInvoiceVoucher), 
            output ocBusinessRelationCode (ocBusinessRelationCode), 
            output ocBusinessRelationName1 (ocBusinessRelationName1), 
            output ocCInvoiceCreditorVatNumber (ocCInvoiceCreditorVatNumber), 
            output vcCurrencyCode (ocCurrencyCode), 
            output vcPaymentConditionCode (ocNormalPaymentConditionCode), 
            output vcDummy (ocNormalPaymentConditionType), 
            output ocReasonAllocationStatus (ocReasonAllocationStatus), 
            output ocReasonCode (ocReasonCode), 
            output olCInvoiceIsTaxable (olCInvoiceIsTaxable), 
            output olCInvoiceIsInvoiceApproved (olCInvoiceIsInvoiceApproved), 
            output olCInvoiceIsLockPayment (olCInvoiceIsLockPayment), 
            output olCInvoiceIsLogisticMatching (olCInvoiceIsLogisticMatching), 
            output ocCreditorTaxClass (ocCreditorTaxClass), 
            output ocCreditorTaxUsage (ocCreditorTaxUsage), 
            output ocCreditorTaxZone (ocCreditorTaxZone), 
            output oiCreditorCnControlGLProfileId (oiCreditorCnControlGLProfileId), 
            output oiCreditorInvControlGLProfileId (oiCreditorInvControlGLProfileId), 
            output oiCreditorDivisionProfileId (oiCreditorDivisionProfileId), 
            output olCreditorIsIndividualPayment (olCreditorIsIndividualPayment), 
            output ocCredVatNumberCountryCode (ocCredVatNumberCountryCode), 
            output ocTransactionStartCountryCode (ocTransactionStartCountryCode), 
            output oiShipFromAddressId (oiShipFromAddressId), 
            output olControlGLIsDivisionAccount (olControlGLIsDivisionAccount), 
            output ocDivisionCode (ocDivisionCode), 
            output ocCostCentreCode (ocCostCentreCode), 
            output ocProjectCode (ocProjectCode), 
            output ocBLWIGroupCode (ocBLWIGroupCode), 
            output odCInvoiceExchangeRate (odCInvoiceExchangeRate), 
            output odCInvoiceRateScale (odCInvoiceRateScale), 
            output otCInvoiceDueDate (otCInvoiceDueDate), 
            output otCInvoiceDiscountDueDate (otCInvoiceDiscountDueDate), 
            output ocMFJournalCode (ocMFJournalCode), 
            output odCInvoiceVatExchangeRate (odCInvoiceVatExchangeRate), 
            output odCInvoiceVatRateScale (odCInvoiceVatRateScale), 
            output ocPurchaseTypeCode (ocPurchaseTypeCode), 
            output oiCreditorId (oiCreditorId), 
            output olBusinessRelationIsInterco (olBusinessRelationIsInterco), 
            output ocBusinessRelationICCode (ocBusinessRelationICCode), 
            output olCountryIsEUCountry (olCountryIsEUCountry), 
            output ocJournalCode (ocJournalCode), 
            output ocDaybookSet (ocDaybookSet), 
            output ocSite (ocSite), 
            output tCInvoiceStage (tApiCInvoiceStage), 
            output oiCInvoiceVoucher (oiCInvoiceVoucher), 
            output olCInvoiceIsInitialStatus (olCInvoiceIsInitialStatus), 
            output ocRoleName (ocRoleName), 
            output olCreditorIsWHT (olCreditorIsWHT), 
            output ocDefaultWHTCode (ocDefaultWHTCode), 
            output ocWHTType (ocWHTType), 
            output ocWHTDesc (ocWHTDesc), 
            output odWHTPct (odWHTPct), 
            output odWHTPctRecv (odWHTPctRecv), 
            output ocWHTGLCode (ocWHTGLCode), 
            output ocWHTDivisionCode (ocWHTDivisionCode), 
            output vcDummy (ocControlGLCode), 
            output viDummy (oiControlGLID), 
            output odCInvoiceCCExchangeRate (odCInvoiceCCExchangeRate), 
            output odCInvoiceCCRateScale (odCInvoiceCCRateScale), 
            output viDummy (oiBusinessRelationID), 
            output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
        if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
        if viFcReturnSuper < 0 then return.
        
        assign vcJournalCode = ocJournalCode.
    end.

    if vcPaymentConditionCode   <> ocPOPaymentConditionCode and
      (ocPOPaymentConditionCode <> "":U                     or
       ocPOPaymentConditionCode <> ?)
    then do:
        <M-98 run DefaultValuesPaymentCondition
           (input  ocPOPaymentConditionCode (icPaymentConditionCode), 
            input  ? (iiPaymentConditionID), 
            input  itCInvoiceDate (itCInvoiceDate), 
            input  icCInvoiceTcRowid (icCInvoiceRowID), 
            input  idCInvoiceOriginalTC (idCInvoiceOriginalTC), 
            input  vcCurrencyCode (icCurrencyCode), 
            input  ? (ilCInvoiceIsTaxExcluded), 
            input  ? (icPaymentConditionPaymentType), 
            input  ? (icPaymentConditionPeriodType), 
            input  ? (itPaymentConditionBaseDate), 
            input  ? (iiPaymentConditionDaysMonths), 
            input  ? (iiPaymentConditionSupplDays), 
            input  ? (iiPaymentConditionBaseDays), 
            input  ? (iiPaymentConditionDueDays), 
            input  ? (icPaymentConditionDescript), 
            input  ? (idPaymentConditionPercentage), 
            input  ? (icPaymentConditionPdtypediscount), 
            input  ? (iiPaymentConditionDayMthsDisc), 
            input  ? (iiPaymentConditionSupDaysDisc), 
            output vcDummy (ocPaymentConditionPaymentType), 
            output otCInvoiceDueDate (otCInvoiceDueDate), 
            output otCInvoiceDiscountDueDate (otCInvoiceDiscountDueDate), 
            output tCInvoiceStage (tApiCInvoiceStage), 
            output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
        if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
        if viFcReturnSuper < 0 then return.
    end. /* if vcPaymentConditionCode */

    if tqPurchaseOrderByDomainNbrVend.tcpo_ship <> "":U and tqPurchaseOrderByDomainNbrVend.tcpo_ship <> ?
    then do:
        <Q-8 run AdMstrByAddress (all) (Read) (NoCache)
           (input tqPurchaseOrderByDomainNbrVend.tcpo_domain, (Domain)
            input tqPurchaseOrderByDomainNbrVend.tcpo_ship, (Code)
            output dataset tqAdMstrByAddress) in BMfgAddress >
        find first tqAdMstrByAddress where
                   tqAdMstrByAddress.tcad_domain = tqPurchaseOrderByDomainNbrVend.tcpo_domain and
                   tqAdMstrByAddress.tcad_addr   = tqPurchaseOrderByDomainNbrVend.tcpo_ship
                   no-lock no-error.
        if available tqAdMstrByAddress
        then assign ocShipToBusinessRelationCode = tqAdMstrByAddress.tcBusinessRelationCode
                    ocShipToAddressTypeCode      = tqAdMstrByAddress.tcAddressTypeCode
                    ocShipToAddressStreet1       = tqAdMstrByAddress.tcAddressStreet1
                    ocShipToAddressStreet2       = tqAdMstrByAddress.tcAddressStreet2
                    ocShipToAddressStreet3       = tqAdMstrByAddress.tcAddressStreet3
                    ocShipToAddressZip           = tqAdMstrByAddress.tcAddressZip
                    ocShipToAddressCity          = tqAdMstrByAddress.tcAddressCity
                    ocShipToAddressState         = tqAdMstrByAddress.tcAddressState
                    ocShipToCountryCode          = tqAdMstrByAddress.tcCountryCode
                    olShipToCountryIsEUCountry   = tqAdMstrByAddress.tlCountryIsEUCountry
                    ocShipToTxzTaxZone           = tqAdMstrByAddress.tcTxzTaxZone
                    oiShipToAddressId            = tqAdMstrByAddress.tiAddress_ID.
    end.

    if tqPurchaseOrderByDomainNbrVend.tcpo_daybookset <> "":U and tqPurchaseOrderByDomainNbrVend.tcpo_daybookset <> ?
    then do:
        assign ocDaybookSet = tqPurchaseOrderByDomainNbrVend.tcpo_daybookset
               ocSite       = tqPurchaseOrderByDomainNbrVend.tcpo_site.    

        <M-9 run DefaultValuesDaybookSetCodeSite
           (input  icCInvoiceTcRowid (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  iiCInvoicePostingYear (iiOldCInvoicePostingYear), 
            input  vcJournalCode (icOldJournalCode), 
            input  tCInvoice.CInvoiceVoucher (iiOldCInvoiceVoucher), 
            output viFcReturnSuper (oiReturnStatus)) in BCInvoice>  
        if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
        if viFcReturnSuper < 0 then return.  
        
    end.

    /* ================== */
    /* Exception handling */
    /* ================== */
    if oiReturnStatus = -98 then assign oiReturnStatus = 0.