project QadFinancials > class BGrossIncomeAccounting > method ApiGetGIAMapping

Description

This method can be used to find GIA mappings. It will be used by the operational programs when creating the GIA transaction.


Parameters


tGIAMappinginput-outputtemp-tableTemp-table holding the Sales and Tax Payable COA combinations to be validated. If mapping is found it will be returned in this temp-table as well.
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program9/bgrossincomeaccounting.p)

for each tGIAMapping 
    break by tGIAMapping.tcCompanyCode
    on error undo, throw:

    /* Initialize some tGIAMapping fields */   
    assign tGIAMapping.tlGIAMapAvailable = false.
    if tGIAMapping.tcSalesDivisionCode = ?
    then assign tGIAMapping.tcSalesDivisionCode = ''.
    if tGIAMapping.tcSalesCostCentreCode = ?
    then assign tGIAMapping.tcSalesCostCentreCode = ''.
    if tGIAMapping.tcSalesProjectCode = ?
    then assign tGIAMapping.tcSalesProjectCode = ''.
    if tGIAMapping.tcTaxDivisionCode = ?
    then assign tGIAMapping.tcTaxDivisionCode = ''.

    /* =========================================================================== */
    /* For each new company used in the temp-table, check if it is using GIA       */
    /* If it is not using GIA, we will skipp all records defined with this company */
    /* =========================================================================== */
    if first-of(tGIAMapping.tcCompanyCode)
    then do:
        assign vlCompanyIsDefinedWithGIA = false.
        <Q-5 run CompanyPropertyByCompany (all) (Read) (NoCache)
           (input 0, (CompanyId)
            input tGIAMapping.tcCompanyCode, (CompanyCode)
            input '', (CurrencyCode)
            output dataset tqCompanyPropertyByCompany) in BCompanyProperty >
        find tqCompanyPropertyByCompany where
             tqCompanyPropertyByCompany.tcCompanyCode               = tGIAMapping.tcCompanyCode and
             tqCompanyPropertyByCompany.tlCompanyPropertyIsGrIncAcc = true
             no-error.
        if available tqCompanyPropertyByCompany
        then do:
            assign vlCompanyIsDefinedWithGIA = true.
            /* Retrieve mappings for this company */
            <Q-11 run GrossIncAccForAllFields (all) (Read) (NoCache)
               (input tqCompanyPropertyByCompany.tiCompany_ID, (CompanyId)
                input 0, (GrossIncAccId)
                input 0, (SalesGLId)
                input '', (SalesGLCode)
                input 0, (SalesDivisionId)
                input '', (SalesDivisionCode)
                input 0, (SalesCostCentreId)
                input '', (SalesCostCentreCode)
                input 0, (SalesProjectId)
                input '', (SalesProjectCode)
                input 0, (TaxPayableGLId)
                input '', (TaxPayableGLCode)
                input 0, (TaxPayableDivisionId)
                input '', (TaxPayableDivisionCode)
                output dataset tqGrossIncAccForAllFields) in BGrossIncomeAccounting >
            /* initialize the non-mandatory fields that have unknown value */
            for each tqGrossIncAccForAllFields on error undo, throw:
                if tqGrossIncAccForAllFields.tcSalesDivisionCode = ?
                then assign tqGrossIncAccForAllFields.tcSalesDivisionCode = ''.
                if tqGrossIncAccForAllFields.tcSalesCostCentreCode = ?
                then assign tqGrossIncAccForAllFields.tcSalesCostCentreCode = ''.
                if tqGrossIncAccForAllFields.tcSalesProjectCode = ?
                then assign tqGrossIncAccForAllFields.tcSalesProjectCode = ''.
                if tqGrossIncAccForAllFields.tcTaxPayableDivisionCode = ?
                then assign tqGrossIncAccForAllFields.tcTaxPayableDivisionCode = ''.
            end. /* for each tqGrossIncAccForAllFields on error undo, throw: */
        end. /* if available tqCompanyPropertyByCompany */
    end. /* if first-of(tGIAMapping.tcCompanyCode) */
    if vlCompanyIsDefinedWithGIA = false
    then next.

    /* ============================================== */
    /* Check if this combination is mapped for GIA    */
    /* 8 different combinations will be used to check */
    /* ============================================== */
    /* 1. Sales GL Div CC Proj, Tax GL Division, Div Flag NO, CC Flag NO, Proj Flag NO */
    find tqGrossIncAccForAllFields where
         tqGrossIncAccForAllFields.tcSalesGLCode                = tGIAMapping.tcSalesGLCode         and
         tqGrossIncAccForAllFields.tcSalesDivisionCode          = tGIAMapping.tcSalesDivisionCode   and
         tqGrossIncAccForAllFields.tcSalesCostCentreCode        = tGIAMapping.tcSalesCostCentreCode and
         tqGrossIncAccForAllFields.tcSalesProjectCode           = tGIAMapping.tcSalesProjectCode    and
         tqGrossIncAccForAllFields.tcTaxPayableGLCode           = tGIAMapping.tcTaxGLCode           and
         tqGrossIncAccForAllFields.tcTaxPayableDivisionCode     = tGIAMapping.tcTaxDivisionCode     and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllDivision   = false                             and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllCostCentre = false                             and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllProject    = false
         no-error.
    if available tqGrossIncAccForAllFields
    then do:
        assign tGIAMapping.tcTaxExpGLCode         = tqGrossIncAccForAllFields.tcTaxExpenseGLCode
               tGIAMapping.tcTaxExpDivisionCode   = tqGrossIncAccForAllFields.tcTaxExpenseDivisionCode
               tGIAMapping.tcTaxExpCostCentreCode = tqGrossIncAccForAllFields.tcTaxExpenseCostCentreCode
               tGIAMapping.tcTaxExpProjectCode    = tqGrossIncAccForAllFields.tcTaxExpenseProjectCode
               tGIAMapping.tcJournalCode          = tqGrossIncAccForAllFields.tcJournalCode
               tGIAMapping.tlGIAMapAvailable      = true.
        next.
    end. /* if available tqGrossIncAccForAllFields */

    /* 2. Sales GL CC Proj, Tax GL Division, Div Flag YES, CC Flag NO, Proj Flag NO */
    find tqGrossIncAccForAllFields where
         tqGrossIncAccForAllFields.tcSalesGLCode                = tGIAMapping.tcSalesGLCode         and
         tqGrossIncAccForAllFields.tcSalesCostCentreCode        = tGIAMapping.tcSalesCostCentreCode and
         tqGrossIncAccForAllFields.tcSalesProjectCode           = tGIAMapping.tcSalesProjectCode    and
         tqGrossIncAccForAllFields.tcTaxPayableGLCode           = tGIAMapping.tcTaxGLCode           and         
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllDivision   = true                              and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllCostCentre = false                             and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllProject    = false
         no-error.
    if available tqGrossIncAccForAllFields
    then do:
        assign tGIAMapping.tcTaxExpGLCode         = tqGrossIncAccForAllFields.tcTaxExpenseGLCode
               tGIAMapping.tcTaxExpDivisionCode   = tqGrossIncAccForAllFields.tcTaxExpenseDivisionCode
               tGIAMapping.tcTaxExpCostCentreCode = tqGrossIncAccForAllFields.tcTaxExpenseCostCentreCode
               tGIAMapping.tcTaxExpProjectCode    = tqGrossIncAccForAllFields.tcTaxExpenseProjectCode
               tGIAMapping.tcJournalCode          = tqGrossIncAccForAllFields.tcJournalCode
               tGIAMapping.tlGIAMapAvailable      = true.
        next.
    end. /* if available tqGrossIncAccForAllFields */

    /* 3. Sales GL Div Proj, Tax GL Division, Div Flag NO, CC Flag YES, Proj Flag NO */
    find tqGrossIncAccForAllFields where
         tqGrossIncAccForAllFields.tcSalesGLCode                = tGIAMapping.tcSalesGLCode         and
         tqGrossIncAccForAllFields.tcSalesDivisionCode          = tGIAMapping.tcSalesDivisionCode   and
         tqGrossIncAccForAllFields.tcSalesProjectCode           = tGIAMapping.tcSalesProjectCode    and
         tqGrossIncAccForAllFields.tcTaxPayableGLCode           = tGIAMapping.tcTaxGLCode           and
         tqGrossIncAccForAllFields.tcTaxPayableDivisionCode     = tGIAMapping.tcTaxDivisionCode     and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllDivision   = false                             and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllCostCentre = true                              and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllProject    = false
         no-error.
    if available tqGrossIncAccForAllFields
    then do:
        assign tGIAMapping.tcTaxExpGLCode         = tqGrossIncAccForAllFields.tcTaxExpenseGLCode
               tGIAMapping.tcTaxExpDivisionCode   = tqGrossIncAccForAllFields.tcTaxExpenseDivisionCode
               tGIAMapping.tcTaxExpCostCentreCode = tqGrossIncAccForAllFields.tcTaxExpenseCostCentreCode
               tGIAMapping.tcTaxExpProjectCode    = tqGrossIncAccForAllFields.tcTaxExpenseProjectCode
               tGIAMapping.tcJournalCode          = tqGrossIncAccForAllFields.tcJournalCode
               tGIAMapping.tlGIAMapAvailable      = true.
        next.
    end. /* if available tqGrossIncAccForAllFields */

    /* 4. Sales GL Div CC, Tax GL Division, Div Flag NO, CC Flag NO, Proj Flag YES */
    find tqGrossIncAccForAllFields where
         tqGrossIncAccForAllFields.tcSalesGLCode                = tGIAMapping.tcSalesGLCode         and
         tqGrossIncAccForAllFields.tcSalesDivisionCode          = tGIAMapping.tcSalesDivisionCode   and
         tqGrossIncAccForAllFields.tcSalesCostCentreCode        = tGIAMapping.tcSalesCostCentreCode and         
         tqGrossIncAccForAllFields.tcTaxPayableGLCode           = tGIAMapping.tcTaxGLCode           and
         tqGrossIncAccForAllFields.tcTaxPayableDivisionCode     = tGIAMapping.tcTaxDivisionCode     and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllDivision   = false                             and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllCostCentre = false                             and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllProject    = true
         no-error.
    if available tqGrossIncAccForAllFields
    then do:
        assign tGIAMapping.tcTaxExpGLCode         = tqGrossIncAccForAllFields.tcTaxExpenseGLCode
               tGIAMapping.tcTaxExpDivisionCode   = tqGrossIncAccForAllFields.tcTaxExpenseDivisionCode
               tGIAMapping.tcTaxExpCostCentreCode = tqGrossIncAccForAllFields.tcTaxExpenseCostCentreCode
               tGIAMapping.tcTaxExpProjectCode    = tqGrossIncAccForAllFields.tcTaxExpenseProjectCode
               tGIAMapping.tcJournalCode          = tqGrossIncAccForAllFields.tcJournalCode
               tGIAMapping.tlGIAMapAvailable      = true.
        next.
    end. /* if available tqGrossIncAccForAllFields */

    /* 5. Sales GL Proj, Tax GL Division, Div Flag YES, CC Flag YES, Proj Flag NO */
    find tqGrossIncAccForAllFields where
         tqGrossIncAccForAllFields.tcSalesGLCode                = tGIAMapping.tcSalesGLCode         and
         tqGrossIncAccForAllFields.tcSalesProjectCode           = tGIAMapping.tcSalesProjectCode    and
         tqGrossIncAccForAllFields.tcTaxPayableGLCode           = tGIAMapping.tcTaxGLCode           and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllDivision   = true                              and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllCostCentre = true                              and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllProject    = false
         no-error.
    if available tqGrossIncAccForAllFields
    then do:
        assign tGIAMapping.tcTaxExpGLCode         = tqGrossIncAccForAllFields.tcTaxExpenseGLCode
               tGIAMapping.tcTaxExpDivisionCode   = tqGrossIncAccForAllFields.tcTaxExpenseDivisionCode
               tGIAMapping.tcTaxExpCostCentreCode = tqGrossIncAccForAllFields.tcTaxExpenseCostCentreCode
               tGIAMapping.tcTaxExpProjectCode    = tqGrossIncAccForAllFields.tcTaxExpenseProjectCode
               tGIAMapping.tcJournalCode          = tqGrossIncAccForAllFields.tcJournalCode
               tGIAMapping.tlGIAMapAvailable      = true.
        next.
    end. /* if available tqGrossIncAccForAllFields */

    /* 6. Sales GL CC, Tax GL Division, Div Flag YES, CC Flag NO, Proj Flag YES */
    find tqGrossIncAccForAllFields where
         tqGrossIncAccForAllFields.tcSalesGLCode                = tGIAMapping.tcSalesGLCode         and
         tqGrossIncAccForAllFields.tcSalesCostCentreCode        = tGIAMapping.tcSalesCostCentreCode and
         tqGrossIncAccForAllFields.tcTaxPayableGLCode           = tGIAMapping.tcTaxGLCode           and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllDivision   = true                              and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllCostCentre = false                             and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllProject    = true
         no-error.
    if available tqGrossIncAccForAllFields
    then do:
        assign tGIAMapping.tcTaxExpGLCode         = tqGrossIncAccForAllFields.tcTaxExpenseGLCode
               tGIAMapping.tcTaxExpDivisionCode   = tqGrossIncAccForAllFields.tcTaxExpenseDivisionCode
               tGIAMapping.tcTaxExpCostCentreCode = tqGrossIncAccForAllFields.tcTaxExpenseCostCentreCode
               tGIAMapping.tcTaxExpProjectCode    = tqGrossIncAccForAllFields.tcTaxExpenseProjectCode
               tGIAMapping.tcJournalCode          = tqGrossIncAccForAllFields.tcJournalCode
               tGIAMapping.tlGIAMapAvailable      = true.
        next.
    end. /* if available tqGrossIncAccForAllFields */

    /* 7. Sales GL Div, Tax GL Division, Div Flag NO, CC Flag YES, Proj Flag Yes */
    find tqGrossIncAccForAllFields where
         tqGrossIncAccForAllFields.tcSalesGLCode                = tGIAMapping.tcSalesGLCode         and
         tqGrossIncAccForAllFields.tcSalesDivisionCode          = tGIAMapping.tcSalesDivisionCode   and
         tqGrossIncAccForAllFields.tcTaxPayableGLCode           = tGIAMapping.tcTaxGLCode           and
         tqGrossIncAccForAllFields.tcTaxPayableDivisionCode     = tGIAMapping.tcTaxDivisionCode     and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllDivision   = false                             and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllCostCentre = true                              and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllProject    = true
         no-error.
    if available tqGrossIncAccForAllFields
    then do:
        assign tGIAMapping.tcTaxExpGLCode         = tqGrossIncAccForAllFields.tcTaxExpenseGLCode
               tGIAMapping.tcTaxExpDivisionCode   = tqGrossIncAccForAllFields.tcTaxExpenseDivisionCode
               tGIAMapping.tcTaxExpCostCentreCode = tqGrossIncAccForAllFields.tcTaxExpenseCostCentreCode
               tGIAMapping.tcTaxExpProjectCode    = tqGrossIncAccForAllFields.tcTaxExpenseProjectCode
               tGIAMapping.tcJournalCode          = tqGrossIncAccForAllFields.tcJournalCode
               tGIAMapping.tlGIAMapAvailable      = true.
        next.
    end. /* if available tqGrossIncAccForAllFields */

    /* 8. Sales GL, Tax GL Division, Div Flag YES, CC Flag YES, Proj Flag YES */
    find tqGrossIncAccForAllFields where
         tqGrossIncAccForAllFields.tcSalesGLCode                = tGIAMapping.tcSalesGLCode         and
         tqGrossIncAccForAllFields.tcTaxPayableGLCode           = tGIAMapping.tcTaxGLCode           and        
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllDivision   = true                              and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllCostCentre = true                              and
         tqGrossIncAccForAllFields.tlGrossIncAccIsAllProject    = true
         no-error.
    if available tqGrossIncAccForAllFields
    then do:
        assign tGIAMapping.tcTaxExpGLCode         = tqGrossIncAccForAllFields.tcTaxExpenseGLCode
               tGIAMapping.tcTaxExpDivisionCode   = tqGrossIncAccForAllFields.tcTaxExpenseDivisionCode
               tGIAMapping.tcTaxExpCostCentreCode = tqGrossIncAccForAllFields.tcTaxExpenseCostCentreCode
               tGIAMapping.tcTaxExpProjectCode    = tqGrossIncAccForAllFields.tcTaxExpenseProjectCode
               tGIAMapping.tcJournalCode          = tqGrossIncAccForAllFields.tcJournalCode
               tGIAMapping.tlGIAMapAvailable      = true.
        next.
    end. /* if available tqGrossIncAccForAllFields */
end. /* for each tGIAMapping */