EBS – Cálculo de Impostos – API do Oracle (zx_api_pub.calculate_tax)

Fala Galera,

Hoje vou fazer um post mais rápido porém muito, muito útil.

Existem casos em que precisamos fazer, e saber antecipadamente, em alguma customização, quais serão os impostos que serão aplicados em algum determinado item que será vendido.

Vi essa questão resolvida de duas maneiras.

A primeira maneira de chegar nos impostos, é desenvolvendo uma solução customizada para cálculo de impostos. Sim, na minha opinião isso é loucura. Simplesmente não dá pra considerar todas as regras e exceções desses cálculos de uma maneira prática e rápida.

Inclusive, eu já vi essa solução em funcionamento. E sim, não funcionava direito. Sempre faltava considerar alguma regra, seja de regras de Uso e Consumo, seja se Cesta Básica, ou qualquer outra regra de imposto que não atendia a regra básica.

ICMS por exemplo. Algo que tivesse alguma alíquota fora da padrão de Estado Origem e Destino, já trazia a alíquota errada. E por mais que tentássemos cercar, sempre faltava alguma coisa.

Desta forma procurei outras maneiras de resolver esse problema. Foi então que caiu a fixa. Atualmente, o EBS atende, senão todas (não sei), mas a grande maioria das regras de impostos, pois a nota fiscal tem que sair corretamente, certo?

A partir daí cheguei na Segunda Maneira de Calcular os Impostos, de forma customizada, que no caso, foi apenas utilizar a roda que já foi inventada, ou seja, utilizar uma API nativa do Oracle, que já faz esse cálculo, e considere todas as regras configuradas pelo Fiscal.

A API que utilizei, encontrei dentro da tela de Ordens de Venda (OEXOEORD). Esta tela calcula uma prévia dos impostos quando fazemos o registro da mesma. Para ver, basta consultar uma ordem previamente registrada, navegar até uma das linhas, e ir no botão Ações e depois em Verificar detalhes do imposto.

Será exibida uma tela com as informações dos impostos.

calculo_impostos

Dessa forma, abrindo a tela, encontrei a API:

zx_api_pub.calculate_tax

Esta é a API responsável pelo cálculo dos impostos da Ordem de Venda e, provavelmente, seja ela também que faça os cálculos para a Nota Fiscal.

Dessa forma encontrei todos os dados e parâmetros necessários e montei uma procedure que recebe alguns parâmetros obrigatórios e faz a complexa chamada da API de cálculo de impostos.

Para testar, é necessário alterar as informações que estão sendo passadas nos parâmetros, conforme as informações da sua empresa em questão e demais informações, como item, vendedor, endereços, e demais informações.

-- Chama a rotina para carregar informações do imposto
  Calculate_Tax(p_org_id             => 81
              , p_order_type_id      => 1370
              , p_sold_to_org_id     => 3592570
              , p_organization_id    => 115
              , p_inventory_item_id  => 11734850
              , p_ship_from_org_id   => 115
              , p_ship_to_org_id     => 112975
              , p_invoice_to_org_id  => 112974
              , p_ordered_quantity   => 5000
              , p_unit_selling_price => 4.26
              , p_fob_point_code     => 'CIF'
              , p_salesrep_id        => 100011117
              , px_return_status     => w_return_status
              , px_message_error     => w_message_error);

No exemplo, foi necessário setar o contexto para que funcione corretamente ao rodar fora do ambiente do EBS, conforme abaixo:

MO_GLOBAL.SET_POLICY_CONTEXT(p_access_mode  => 'S', p_org_id => 81);

O que essa rotina faz é carregar uma tabela temporária(zx_detail_tax_lines_gt), então, depois de rodar o bloco PL/SQL, é possível visualizar as informações do imposto a partir da Query abaixo:

SELECT a.tax_id
     , a.tax
     , a.tax_rate_code
     , a.tax_rate
     , a.unit_price
     , a.trx_line_quantity
     , a.line_amt
     , a.taxable_amt
     , a.tax_amt
     , a.tax_amt_included_flag
     , a.tax_regime_id
     , a.tax_regime_code
     , a.tax_status_id
     , a.tax_status_code
     , a.tax_rate_id
     , a.legal_justification_text1
     , a.legal_justification_text2
     , a.legal_justification_text3
  FROM zx_detail_tax_lines_gt a
     , zx_rates_b             b
 WHERE a.tax_rate_id = b.tax_rate_id
--   AND a.tax LIKE '%C' -- Trazer apenas o que for Crédito
 ORDER BY a.tax_line_number;

O Resultado será assim:

exemplo_calculo_impostos_ebs

O código completo está abaixo, já possível testá-lo, porém antes é necessário configurar os parâmetros, conforme comentei acima.

Se foi útil, ou se você apenas gostou, peço que compartilhe com seus contatos, poderá ser muito útil para eles.

DECLARE

  C_ERROR   CONSTANT VARCHAR2(1) := 'E';
  C_SUCCESS CONSTANT VARCHAR2(1) := 'S';
  
  w_return_status VARCHAR2(1);
  w_message_error VARCHAR2(4000);
  
  PROCEDURE l (t IN VARCHAR2) IS
  BEGIN
    dbms_output.put_line (t);
  END l;
  
  --------------------------------------------------------------------------
  FUNCTION Get_le_id(p_order_type_id NUMBER
                   , p_sold_to_customer_id NUMBER
                   , p_bill_to_customer_id NUMBER
                   , p_org_id NUMBER
                   , px_message_error OUT VARCHAR2) RETURN NUMBER IS

    l_invoice_source_id  NUMBER;
    l_invoice_source     VARCHAR2(50);
    l_order_type_rec     OE_ORDER_CACHE.ORDER_TYPE_REC_TYPE;
    l_customer_type      VARCHAR2(30);
    l_customer_id        NUMBER;
    l_cust_trx_type_id   NUMBER;
    l_return_status      VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
    l_legal_entity_id    NUMBER;
    l_msg_data           VARCHAR2(1000);
    
  BEGIN

    IF p_sold_to_customer_id IS NOT NULL THEN
      l_customer_type := 'SOLD_TO';
      l_customer_id := p_sold_to_customer_id;
    ELSIF p_bill_to_customer_id IS NOT NULL THEN
      l_customer_type := 'BILL_TO';
      l_customer_id := p_bill_to_customer_id;
    END IF;

    l_order_type_rec    := OE_ORDER_CACHE.Load_Order_Type(p_order_type_id);
    l_invoice_source_id := l_order_type_rec.invoice_source_id;
    l_cust_trx_type_id  := l_order_type_rec.cust_trx_type_id;

    IF l_invoice_source_id IS NULL THEN
      l_invoice_source := oe_sys_parameters.value('INVOICE_SOURCE', p_org_id);

      IF (l_invoice_source IS NOT NULL) THEN
        SELECT batch_source_id
          INTO l_invoice_source_id
          FROM ra_batch_sources
         WHERE name = l_invoice_source;
      
      END IF;
    END IF;

    IF l_cust_trx_type_id IS NULL THEN
      l_cust_trx_type_id := oe_sys_parameters.value('OE_INVOICE_TRANSACTION_TYPE_ID',p_org_id);
    END IF;

    l_legal_entity_id := XLE_BUSINESSINFO_GRP.Get_OrdertoCash_Info (
                               x_return_status       => l_return_status,    -- OUT
                               x_msg_data            => l_msg_data,         -- OUT
                               p_customer_type       => l_customer_type,    -- IN  P_customer_type
                               p_customer_id         => l_customer_id,      -- IN  P_customer_id (sold_to/bill_to customer_id)
                               p_transaction_type_id => l_cust_trx_type_id, -- IN  P_transaction_type_id
                               p_batch_source_id     => l_invoice_source_id,-- IN  P_batch_source_id
                               p_operating_unit_id   => p_org_id            -- IN  P_operating_unit_id (org_id)
                               );

    IF l_return_status <> FND_API.G_RET_STS_SUCCESS OR l_legal_entity_id = -1 THEN

      IF l_msg_data IS NOT NULL THEN
        px_message_error := 'Erro: '||l_msg_data;
      ELSE
        px_message_error := 'Erro na chamada de XLE_BUSINESSINFO_GRP.Get_OrdertoCash_Info';
      END IF;
      
      RETURN -1;
    END IF;

    RETURN l_legal_entity_id;
  EXCEPTION
    WHEN OTHERS THEN
      px_message_error := 'Erro: '||SQLERRM;
      RETURN -1;
  END Get_le_id;
  
  --------------------------------------------------------------------------
  PROCEDURE Calculate_Tax(p_org_id             IN oe_order_headers_all.org_id%TYPE
                        , p_order_type_id      IN oe_order_headers_all.order_type_id%TYPE
                        , p_sold_to_org_id     IN oe_order_headers_all.sold_to_org_id%TYPE
                        , p_organization_id    IN mtl_system_items_b.organization_id%TYPE
                        , p_inventory_item_id  IN oe_order_lines_all.inventory_item_id%TYPE
                        , p_ship_from_org_id   IN oe_order_lines_all.ship_from_org_id%TYPE
                        , p_ship_to_org_id     IN oe_order_lines_all.ship_to_org_id%TYPE
                        , p_invoice_to_org_id  IN oe_order_lines_all.invoice_to_org_id%TYPE
                        , p_ordered_quantity   IN oe_order_lines_all.ordered_quantity%TYPE
                        , p_unit_selling_price IN oe_order_lines_all.unit_selling_price%TYPE
                        , p_fob_point_code     IN oe_order_lines_all.fob_point_code%TYPE
                        , p_salesrep_id        IN oe_order_lines_all.salesrep_id%TYPE
                        , px_return_status    OUT VARCHAR2
                        , px_message_error    OUT VARCHAR2) AS
  
    -- Busca informações básicas do Item
    CURSOR c_item IS
    SELECT a.organization_id
         , a.inventory_item_id
         , a.primary_uom_code
         , a.description
         , a.segment1
         , a.global_attribute2 trx_business_category
      FROM mtl_system_items_vl a
     WHERE a.inventory_item_id = p_inventory_item_id
       AND a.organization_id = p_organization_id;
    
    -- Busca informações fiscais do Tipo de Transação
    CURSOR c_order_type IS
    SELECT otta.transaction_type_id order_type_id
         , ottt.name
         , NVL(otta.cust_trx_type_id, 0) cust_trx_type_id
         , rct.global_attribute4        tax_code
         , otta.currency_code            currency_code
      FROM oe_transaction_types_all otta
         , oe_transaction_types_tl  ottt
         , ra_cust_trx_types_all    rct
     WHERE otta.transaction_type_id = ottt.transaction_type_id
       AND ottt.language = USERENV('LANG')
       AND otta.cust_trx_type_id = rct.cust_trx_type_id (+)
       AND otta.org_id           = rct.org_id           (+)
       AND otta.transaction_type_id = p_order_type_id;
    
    -- Busca a moeda
    CURSOR c_currency(p_currency_code IN fnd_currencies.currency_code%TYPE) IS
    SELECT c.currency_code
         , c.minimum_accountable_unit
         , c.precision
      FROM fnd_currencies c
     WHERE c.currency_code = p_currency_code;

    -- Busca informações do cliente e entrega
    CURSOR getlocinfo(p_site_org_id hz_cust_site_uses_all.site_use_id%TYPE) IS
    SELECT /* MOAC_SQL_CHANGE */ 
           s_ship.site_use_id
         , s_ship.cust_acct_site_id
         , acct_site_ship.cust_account_id
         , party.party_id
         , party_site_ship.party_site_id
         , loc_ship.location_id
      FROM hz_cust_site_uses      s_ship 
         , hz_cust_acct_sites_all acct_site_ship
         , hz_party_sites         party_site_ship
         , hz_locations           loc_ship
         , hz_parties             party
         , hz_cust_accounts_all   cust_acct
     WHERE s_ship.site_use_id       = p_site_org_id
       AND s_ship.cust_acct_site_id = acct_site_ship.cust_acct_site_id
       AND acct_site_ship.cust_account_id = cust_acct.cust_account_id
       AND cust_acct.party_id = party.party_id
       AND acct_site_ship.party_site_id = party_site_ship.party_site_id
       AND party_site_ship.location_id  = loc_ship.location_id;
    
    -- Busca o local da organização
    CURSOR get_internal_loc(p_organization_id number) IS
    SELECT location_id
      FROM hr_organization_units
     WHERE organization_id = p_organization_id;
    
    r_item         c_item%ROWTYPE;
    r_order_type   c_order_type%ROWTYPE;
    r_currency     c_currency%ROWTYPE;
    r_ship_locinfo getlocinfo%ROWTYPE;
    r_bill_locinfo getlocinfo%ROWTYPE;
    --
    l_return_status                VARCHAR2(1);
    l_msg_count                    NUMBER;
    l_msg_data                     VARCHAR2(2000);
    l_product_fisc_classification  VARCHAR2(240);
    l_trx_line_number              NUMBER;
    i                              NUMBER;
    l_internal_org_location_id     NUMBER;
    l_header_id                    oe_order_headers.header_id%type;
    l_tax_date                     oe_order_lines.tax_date%type;
    l_ship_from_location_id        NUMBER;
    l_application_id               NUMBER;
    l_entity_code_crsr             zx_detail_tax_lines_gt.entity_code%TYPE;
    l_event_class_code_crsr        zx_detail_tax_lines_gt.event_class_code%TYPE ;
    l_trx_level_type_crsr          zx_detail_tax_lines_gt.trx_level_type%TYPE;
    l_line_id                      NUMBER;
    l_inventory_org_id             NUMBER;
    l_order_number                 oe_order_headers_all.order_number%TYPE;
    l_ar_sys_param_rec             ar_system_parameters_all%ROWTYPE;
    l_legal_entity_id              NUMBER(15);
    l_bill_from_location_id        NUMBER;
    --
    l_transaction_rec       zx_api_pub.transaction_rec_type;
    l_doc_level_recalc_flag VARCHAR2(30);
    l_poo_party_id          NUMBER;
    l_poo_location_id       NUMBER;
    
    exit_excp EXCEPTION;
    
    PROCEDURE Add(p_field IN OUT VARCHAR2
                , p_text IN VARCHAR2) IS
    BEGIN
      IF p_text IS NULL THEN
        RETURN;
      END IF;
      
      IF p_field IS NULL THEN
        p_field := p_text;
      ELSE
        p_field := p_field || ' - ' || p_text;
      END IF;
    END Add;
  
  BEGIN
    
    -- O cálculo deverá ser feito exatamente como a Ordem de Venda Faz
    -- Por esse motivo esta sendo passado o mesmo evento como sendo a partir da Ordem
    px_return_status        := C_SUCCESS;
    l_entity_code_crsr      := 'OE_ORDER_HEADERS';
    l_event_class_code_crsr := 'SALES_TRANSACTION_TAX_QUOTE';
    l_trx_level_type_crsr   := 'LINE';
    
    -- Como Não temos Ordem de Venda por se tratar de uma simulação, passamos zero para os IDs
    l_header_id             := 0;
    l_order_number          := 0;
    l_line_id               := 0;
    l_trx_line_number       := 0;
    -- 
    l_tax_date              := SYSDATE;
    l_application_id        := 660;
    --
    l_inventory_org_id := oe_sys_parameters.value('MASTER_ORGANIZATION_ID', p_org_id);
    
    -- Busca informações básicas do Item
    r_item := NULL;
    OPEN c_item;
    FETCH c_item INTO r_item;
    CLOSE c_item;
    
    -- Verifica se encontrou o item
    IF r_item.organization_id IS NULL THEN
      px_return_status := C_ERROR;
      px_message_error := 'Item com ID '||p_inventory_item_id
                       || ' não encontrado na Organização com ID '||p_organization_id;
      RETURN;
    END IF;
    
    --l('trx business:'||r_item.trx_business_category);
    
    -- Busca a classificação fiscal do Item
    BEGIN
      SELECT category_concat_segs
        INTO l_product_fisc_classification
        FROM mtl_item_categories_v a
       WHERE a.inventory_item_id = p_inventory_item_id
         AND a.organization_id   = p_organization_id
         AND a.category_set_name = 'FISCAL_CLASSIFICATION'
         AND a.enabled_flag      = 'Y'
         AND rownum = 1;
    EXCEPTION
      WHEN no_Data_Found THEN
        px_return_status := C_ERROR;
        px_message_error := 'Classificação fiscal (FISCAL_CLASSIFICATION) não encontrada para o Item '||r_item.segment1
                       || ' da Organização com ID '||p_organization_id;
        RETURN;
      WHEN OTHERS THEN
        px_return_status := C_ERROR;
        px_message_error := 'Erro ao buscar Classificação fiscal (FISCAL_CLASSIFICATION) para o Item '||r_item.segment1
                       || ' da Organização com ID '||p_organization_id||'. Erro: '||SQLERRM;
        RETURN;
    END;
    
    --l('l_product_fisc_classification: '||l_product_fisc_classification);
        
    -- Busca informações do AR
    l_AR_Sys_Param_Rec := OE_Sys_Parameters_Pvt.Get_AR_Sys_Params;
    
    -- Busca informações
    r_order_type := NULL;
    OPEN c_order_type;
    FETCH c_order_type INTO r_order_type;
    CLOSE c_order_type;
    
    -- Verifica se encontrou o tipo de transação
    IF r_order_type.order_type_id IS NULL THEN
      px_return_status := C_ERROR;
      px_message_error := 'Tipo de transação com ID '||p_order_type_id
                       || ' não encontrado.';
      RETURN;
    END IF;
    
    --l('Customer trx type id is:'||r_order_type.cust_trx_type_id);
    --l('l_tax_code is:'||r_order_type.tax_code);
    --l('l_currency_code: '||r_order_type.currency_code);
    
    -- Verifica se encontrou tipo de transação do AR associado com o Tipo de Ordem
    -- Caso não encontre o tipo de transação no tipo de ordem do OM
    IF r_order_type.cust_trx_type_id = 0 THEN
      SELECT NVL(oe_sys_parameters.value('OE_INVOICE_TRANSACTION_TYPE_ID', p_org_id), 0) --moac
        INTO r_order_type.cust_trx_type_id
        FROM DUAL;
        --l(  'CUSTOMER TRANSACTION TYPE ID FROM PROFILE : '||r_order_type.cust_trx_type_id);
    END IF;
     
    --code changes made for bug 1883552  end
    --l('Customer trx type id is:'||r_order_type.cust_trx_type_id);
    
    -- Busca informações da Moeda
    r_currency := NULL;
    OPEN c_currency(r_order_type.currency_code);
    FETCH c_currency INTO r_currency;
    CLOSE c_currency;
    
    -- Verifica se encontrou informações da Moeda
    IF r_currency.currency_code IS NULL THEN
      l('Moeda '||r_order_type.currency_code||' não encontrada');
    END IF;
    
    r_ship_locinfo := NULL;
    IF p_ship_to_org_id IS NOT NULL THEN
      
      OPEN getlocinfo(p_ship_to_org_id);
      FETCH getlocinfo INTO r_ship_locinfo;
      CLOSE getlocinfo;
      
      -- Verifica se encontrou informações de entrega
      IF r_ship_locinfo.site_use_id IS NULL THEN
        l('Não encontrada informações para ship_to_org_id: '||p_ship_to_org_id);
      END IF;
      
    END IF;

    r_bill_locinfo := NULL;
    IF p_invoice_to_org_id IS NOT NULL THEN
    
      OPEN getlocinfo(p_invoice_to_org_id);
      FETCH getlocinfo INTO r_bill_locinfo;
      CLOSE getlocinfo;
      
      -- Verifica se encontrou informações de entrega
      IF r_bill_locinfo.site_use_id IS NULL THEN
        l('Não encontrada informações para invoice_to_org_id: '||p_invoice_to_org_id);
      END IF;
    END IF;
    
    -- Busca informações da Organização
    OPEN get_internal_loc(p_org_id);
    FETCH get_internal_loc INTO l_internal_org_location_id;
    CLOSE get_internal_loc;

    -- bug 4622791
    IF p_ship_from_org_id IS NOT NULL THEN
      BEGIN
        SELECT location_id
          INTO l_ship_from_location_id
          FROM hr_all_organization_units hu
         WHERE hu.organization_id = p_ship_from_org_id;
      EXCEPTION
        WHEN OTHERS THEN
          px_return_status := C_ERROR;
          px_message_error := 'Organização ID '||p_ship_from_org_id||' não encontrado em hr_all_organization_units.';
          RETURN;
      END;
    ELSE
      px_return_status := C_ERROR;
      px_message_error := 'Organização Depósito deve ser informada.';
      RETURN;
    END IF;

    --l('l_ship_from_location_id: '||l_ship_from_location_id);

    -- bug 5061910: pass l_poo_party_id poa_party_id
    IF p_salesrep_id IS NOT NULL THEN
      
      BEGIN
        SELECT asgn.organization_id
             , hou.location_id
          INTO l_poo_party_id
             , l_poo_location_id
          FROM ra_salesreps_all sales
             , per_all_assignments_f asgn
             , hr_organization_units hou
         WHERE asgn.person_id = sales.person_id
           AND sales.salesrep_id = p_salesrep_id
           AND sales.org_id = p_org_id
           AND NVL(asgn.primary_flag, 'Y') = 'Y'
           AND hou.organization_id = asgn.organization_id
           AND l_tax_date BETWEEN NVL(asgn.effective_start_date,TO_DATE( '01011900', 'DDMMYYYY'))
           AND NVL(asgn.effective_end_date,TO_DATE( '31122199', 'DDMMYYYY'))
           AND assignment_type = 'E';
           
           --l('l_poo_party_id: '||l_poo_party_id);
           --l('l_poo_location_id: '||l_poo_location_id);
      EXCEPTION
        WHEN OTHERS THEN
          l_poo_party_id := NULL;
          l_poo_location_id := NULL;
          --l('Informações não encontradas para p_salesrep_id: '||p_salesrep_id
                            --||' e p_org_id: '||p_org_id);
      END;
    END IF;

    --bug6995051
    BEGIN
      SELECT location_id
        INTO l_bill_from_location_id
        FROM hr_all_organization_units
       WHERE organization_id = p_org_id;
    EXCEPTION
      WHEN OTHERS THEN
        l_bill_from_location_id := NULL;
    END;
    
    --l('l_bill_from_location_id: '||l_bill_from_location_id);
    --l('l_poo_party_id: '|| l_poo_party_id);

    l_legal_entity_id := get_le_id(p_order_type_id       => p_order_type_id
                                 , p_sold_to_customer_id => p_sold_to_org_id
                                 , p_bill_to_customer_id => r_bill_locinfo.cust_account_id
                                 , p_org_id              => p_org_id
                                 , px_message_error      => l_msg_data);
    
    --l('l_legal_entity_id: '||l_legal_entity_id);
    IF l_msg_data IS NOT NULL THEN
      px_return_status := C_ERROR;
      px_message_error := 'Erro ao chamar get_le_id. Erro: '||l_msg_data;
      RETURN;
    END IF;

    i := 1;
    zx_global_structures_pkg.init_trx_line_dist_tbl(i);
    zx_global_structures_pkg.trx_line_dist_tbl.APPLICATION_ID(i)   := l_application_id;
    zx_global_structures_pkg.trx_line_dist_tbl.ENTITY_CODE(i)      := l_entity_code_crsr;
    zx_global_structures_pkg.trx_line_dist_tbl.EVENT_CLASS_CODE(i) := l_event_class_code_crsr;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID(i)           := l_header_id;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_LEVEL_TYPE(i)   := l_trx_level_type_crsr;

    zx_global_structures_pkg.trx_line_dist_tbl.INTERNAL_ORGANIZATION_ID(i)          := p_org_id;--p_header_rec.org_id;
    zx_global_structures_pkg.trx_line_dist_tbl.EVENT_TYPE_CODE(i)                   := 'CREATE';
    
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_DATE(i)                          := SYSDATE;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_DOC_REVISION(i)                  := NULL; --   VARCHAR2_150_tbl_type  ,
    zx_global_structures_pkg.trx_line_dist_tbl.LEDGER_ID(i)                         := l_AR_Sys_Param_Rec.set_of_books_id;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_CURRENCY_CODE(i)                 := r_order_type.currency_code;--p_header_rec.TRANSACTIONAL_CURR_CODE;
    zx_global_structures_pkg.trx_line_dist_tbl.CURRENCY_CONVERSION_DATE(i)          := NULL;--p_header_rec.CONVERSION_RATE_DATE;
    zx_global_structures_pkg.trx_line_dist_tbl.CURRENCY_CONVERSION_RATE(i)          := NULL;--p_header_rec.CONVERSION_RATE;
    zx_global_structures_pkg.trx_line_dist_tbl.CURRENCY_CONVERSION_TYPE(i)          := NULL;--p_header_rec.CONVERSION_TYPE_CODE;
    zx_global_structures_pkg.trx_line_dist_tbl.MINIMUM_ACCOUNTABLE_UNIT(i)          := r_currency.minimum_accountable_unit;
    zx_global_structures_pkg.trx_line_dist_tbl.PRECISION(i)                         := r_currency.precision;
    -- revisit the logic to derive legal_entity_id later when legal_entity_id approach is clarified.
    zx_global_structures_pkg.trx_line_dist_tbl.LEGAL_ENTITY_ID(i)                   := l_legal_entity_id; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.ESTABLISHMENT_ID(i)                  := NULL; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_TRX_NUMBER(i)           := NULL; --   VARCHAR2_150_tbl_type  ,
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_NUMBER(i)                        := l_order_number;--p_header_Rec.order_number;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_DESCRIPTION(i)                   := NULL; --   VARCHAR2_240_tbl_type  ,
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_COMMUNICATED_DATE(i)             := NULL; --   DATE_tbl_type          ,
    zx_global_structures_pkg.trx_line_dist_tbl.BATCH_SOURCE_ID(i)                   := NULL; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.BATCH_SOURCE_NAME(i)                 := NULL; --   VARCHAR2_150_tbl_type  ,
    zx_global_structures_pkg.trx_line_dist_tbl.DOC_SEQ_ID(i)                        := NULL; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.DOC_SEQ_NAME(i)                      := NULL; --   VARCHAR2_150_tbl_type  ,
    zx_global_structures_pkg.trx_line_dist_tbl.DOC_SEQ_VALUE(i)                     := NULL; --   VARCHAR2_240_tbl_type  ,
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_DUE_DATE(i)                      := NULL; --   DATE_tbl_type          ,
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_TYPE_DESCRIPTION(i)              := NULL; --   VARCHAR2_240_tbl_type  ,
    zx_global_structures_pkg.trx_line_dist_tbl.FIRST_PTY_ORG_ID(i)                  := NULL; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.RECEIVABLES_TRX_TYPE_ID(i)           := r_order_type.cust_trx_type_id;
    zx_global_structures_pkg.trx_line_dist_tbl.TAX_EVENT_CLASS_CODE(i)              := NULL; --   VARCHAR2_30_tbl_type   ,
    zx_global_structures_pkg.trx_line_dist_tbl.TAX_EVENT_TYPE_CODE(i)               := NULL; --   VARCHAR2_30_tbl_type   ,
    zx_global_structures_pkg.trx_line_dist_tbl.DOC_EVENT_STATUS(i)                  := NULL; --   VARCHAR2_30_tbl_type   ,
    zx_global_structures_pkg.trx_line_dist_tbl.DOCUMENT_SUB_TYPE(i)                 := NULL; --   VARCHAR2_240_tbl_type  ,
    zx_global_structures_pkg.trx_line_dist_tbl.SUPPLIER_TAX_INVOICE_NUMBER(i)       := NULL; --   VARCHAR2_150_tbl_type  ,
    zx_global_structures_pkg.trx_line_dist_tbl.SUPPLIER_TAX_INVOICE_DATE(i)         := NULL; --   DATE_tbl_type          ,
    zx_global_structures_pkg.trx_line_dist_tbl.SUPPLIER_EXCHANGE_RATE(i)            := NULL; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.TAX_INVOICE_DATE(i)                  := NULL; --   DATE_tbl_type          ,
    zx_global_structures_pkg.trx_line_dist_tbl.TAX_INVOICE_NUMBER(i)                := NULL; --   VARCHAR2_150_tbl_type  ,
    zx_global_structures_pkg.trx_line_dist_tbl.QUOTE_FLAG(i)                        := 'Y'; --   VARCHAR2_1_tbl_type   ,
    zx_global_structures_pkg.trx_line_dist_tbl.DEFAULT_TAXATION_COUNTRY(i)          := NULL; --   VARCHAR2_2_tbl_type   ,
    zx_global_structures_pkg.trx_line_dist_tbl.CTRL_HDR_TX_APPL_FLAG(i)             := NULL; --   VARCHAR2_1_tbl_type    ,
    zx_global_structures_pkg.trx_line_dist_tbl.CTRL_TOTAL_HDR_TX_AMT(i)             := NULL; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.PORT_OF_ENTRY_CODE(i)                := NULL; --   VARCHAR2_30_tbl_type,
    zx_global_structures_pkg.trx_line_dist_tbl.TAX_REPORTING_FLAG(i)                := 'N'; --   VARCHAR2_1_tbl_type,
    zx_global_structures_pkg.trx_line_dist_tbl.TAX_AMT_INCLUDED_FLAG(i)             := NULL; --   VARCHAR2_1_tbl_type ,
    zx_global_structures_pkg.trx_line_dist_tbl.COMPOUNDING_TAX_FLAG(i)              := NULL; --   VARCHAR2_1_tbl_type,
    zx_global_structures_pkg.trx_line_dist_tbl.PROVNL_TAX_DETERMINATION_DATE(i)     := NULL; --   DATE_tbl_type,
    zx_global_structures_pkg.trx_line_dist_tbl.INSERT_UPDATE_FLAG(i)                := NULL; --   VARCHAR2_1_tbl_type,
    zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_TRX_NUMBER(i)             := NULL; --   VARCHAR2_150_tbl_type,
    zx_global_structures_pkg.trx_line_dist_tbl.START_EXPENSE_DATE(i)                := NULL; --   DATE_tbl_type,
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_BATCH_ID(i)                      := NULL; --   NUMBER_tbl_type,
    zx_global_structures_pkg.trx_line_dist_tbl.RECORD_TYPE_CODE(i)                  := NULL; --   VARCHAR2_30_tbl_type,
    zx_global_structures_pkg.trx_line_dist_tbl.TAX_PROCESSING_COMPLETED_FLAG(i)     := NULL; --   VARCHAR2_1_tbl_type,
    zx_global_structures_pkg.trx_line_dist_tbl.APPLICATION_DOC_STATUS(i)            := NULL; --   VARCHAR2_30_tbl_type,
    zx_global_structures_pkg.trx_line_dist_tbl.OVERRIDING_RECOVERY_RATE(i)          := NULL; --   NUMBER_tbl_type,
    zx_global_structures_pkg.trx_line_dist_tbl.TAX_CALCULATION_DONE_FLAG(i)         := NULL; --   VARCHAR2_1_tbl_type,
    zx_global_structures_pkg.trx_line_dist_tbl.USER_UPD_DET_FACTORS_FLAG(i)         := NULL; --   VARCHAR2_1_tbl_type,
    zx_global_structures_pkg.trx_line_dist_tbl.ICX_SESSION_ID(i)                    := NULL; --   NUMBER_tbl_type
    -- line level columns
    --zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_CURRENCY_CODE(i)            := NULL; --   VARCHAR2_15_tbl_type   ,
    --zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_CURRENCY_CONV_DATE(i)       := NULL; --   DATE_tbl_type          ,
    --zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_CURRENCY_CONV_RATE(i)       := NULL; --   NUMBER_tbl_type        ,
    --zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_CURRENCY_CONV_TYPE(i)       := NULL; --   VARCHAR2_30_tbl_type   ,
    --zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_MAU(i)                      := NULL; --   NUMBER_tbl_type        ,
    --zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_PRECISION(i)                := NULL; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.LINE_INTENDED_USE(i)                 := NULL; --   VARCHAR2_240_tbl_type   ,
    zx_global_structures_pkg.trx_line_dist_tbl.INPUT_TAX_CLASSIFICATION_CODE(i)     := NULL; --   VARCHAR2_30_tbl_type   ,
    zx_global_structures_pkg.trx_line_dist_tbl.EXEMPTION_CONTROL_FLAG(i)            := 'S'; --l_line_rec.TAX_EXEMPT_FLAG;
    zx_global_structures_pkg.trx_line_dist_tbl.EXEMPT_REASON_CODE(i)                := NULL;--l_line_rec.TAX_EXEMPT_REASON_CODE;
    zx_global_structures_pkg.trx_line_dist_tbl.INTERFACE_ENTITY_CODE(i)             := NULL; --   VARCHAR2_30_tbl_type,
    zx_global_structures_pkg.trx_line_dist_tbl.INTERFACE_LINE_ID(i)                 := NULL; --   NUMBER_tbl_type,
    zx_global_structures_pkg.trx_line_dist_tbl.HISTORICAL_TAX_CODE_ID(i)            := NULL; --   NUMBER_tbl_type,
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_ID(i)  := l_line_id;--l_line_rec.line_id;
    zx_global_structures_pkg.trx_line_dist_tbl.LINE_CLASS(i)          := 'INVOICE';
    zx_global_structures_pkg.trx_line_dist_tbl.LINE_LEVEL_ACTION(i)  := 'CREATE';
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_SHIPPING_DATE(i)  := SYSDATE;--l_trx_shipping_date;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_RECEIPT_DATE(i)  := NULL ;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_TYPE(i)  := 'LINE';
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_DATE(i)  := l_tax_date;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_BUSINESS_CATEGORY(i)  := r_item.trx_business_category;
    zx_global_structures_pkg.trx_line_dist_tbl.LINE_INTENDED_USE(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.USER_DEFINED_FISC_CLASS(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.LINE_AMT_INCLUDES_TAX_FLAG(i)  := 'S';
    zx_global_structures_pkg.trx_line_dist_tbl.LINE_AMT(i)  := p_ordered_quantity*p_unit_selling_price;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_QUANTITY(i)  := p_ordered_quantity;
    zx_global_structures_pkg.trx_line_dist_tbl.UNIT_PRICE(i)  := p_unit_selling_price;
    zx_global_structures_pkg.trx_line_dist_tbl.EXEMPT_CERTIFICATE_NUMBER(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.EXEMPT_REASON(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.CASH_DISCOUNT(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.VOLUME_DISCOUNT(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.TRADING_DISCOUNT(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.TRANSFER_CHARGE(i)  := NULL ;
    zx_global_structures_pkg.trx_line_dist_tbl.TRANSPORTATION_CHARGE(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.INSURANCE_CHARGE(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.OTHER_CHARGE(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.PRODUCT_ID(i)  := p_inventory_item_id;
    zx_global_structures_pkg.trx_line_dist_tbl.PRODUCT_FISC_CLASSIFICATION(i):= l_product_fisc_classification;
    zx_global_structures_pkg.trx_line_dist_tbl.PRODUCT_ORG_ID(i)  := NVL(p_ship_from_org_id,l_inventory_org_id);
    zx_global_structures_pkg.trx_line_dist_tbl.UOM_CODE(i)    := r_item.primary_uom_code;
    zx_global_structures_pkg.trx_line_dist_tbl.PRODUCT_TYPE(i) := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.PRODUCT_CODE(i)  := r_item.segment1;
    zx_global_structures_pkg.trx_line_dist_tbl.PRODUCT_CATEGORY(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_SIC_CODE(i)  := NULL ;
    zx_global_structures_pkg.trx_line_dist_tbl.FOB_POINT(i)    := NVL(p_fob_point_code, 'CIF');
    zx_global_structures_pkg.trx_line_dist_tbl.SHIP_TO_PARTY_ID(i)  := r_ship_locinfo.party_id;
    zx_global_structures_pkg.trx_line_dist_tbl.SHIP_FROM_PARTY_ID(i):= p_ship_from_org_id;
    zx_global_structures_pkg.trx_line_dist_tbl.POA_PARTY_ID(i)  := p_org_id;
    zx_global_structures_pkg.trx_line_dist_tbl.POO_PARTY_ID(i)  := l_poo_party_id;
    zx_global_structures_pkg.trx_line_dist_tbl.BILL_TO_PARTY_ID(i)  := r_bill_locinfo.party_id;
    zx_global_structures_pkg.trx_line_dist_tbl.BILL_FROM_PARTY_ID(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.MERCHANT_PARTY_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.SHIP_TO_PARTY_SITE_ID(i)  := r_ship_locinfo.party_site_id;
    zx_global_structures_pkg.trx_line_dist_tbl.SHIP_FROM_PARTY_SITE_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.POA_PARTY_SITE_ID(i)  := NULL ;
    zx_global_structures_pkg.trx_line_dist_tbl.POO_PARTY_SITE_ID(i)  := NULL ;
    zx_global_structures_pkg.trx_line_dist_tbl.BILL_TO_PARTY_SITE_ID(i)  := r_bill_locinfo.party_site_id;
    zx_global_structures_pkg.trx_line_dist_tbl.BILL_FROM_PARTY_SITE_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.SHIP_TO_LOCATION_ID(i)  := r_ship_locinfo.location_id;
    zx_global_structures_pkg.trx_line_dist_tbl.SHIP_FROM_LOCATION_ID(i)  := l_ship_from_location_id;
    zx_global_structures_pkg.trx_line_dist_tbl.POA_LOCATION_ID(i)    := l_internal_org_location_id;
    zx_global_structures_pkg.trx_line_dist_tbl.POO_LOCATION_ID(i)    := l_poo_location_id ;
    zx_global_structures_pkg.trx_line_dist_tbl.BILL_TO_LOCATION_ID(i)  := r_bill_locinfo.location_id;
    zx_global_structures_pkg.trx_line_dist_tbl.BILL_FROM_LOCATION_ID(i)  := l_bill_from_location_id ; --bug6995051
    zx_global_structures_pkg.trx_line_dist_tbl.ACCOUNT_CCID(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ACCOUNT_STRING(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.MERCHANT_PARTY_COUNTRY(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ASSET_FLAG(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ASSET_NUMBER(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ASSET_ACCUM_DEPRECIATION(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ASSET_TYPE(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ASSET_COST(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DIST_LEVEL_ACTION(i)           := NULL; --   VARCHAR2_30_tbl_type   ,
    zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_TAX_DIST_ID(i)    := NULL; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_TAX_DIST_ID(i)    := NULL; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.TASK_ID(i)                     := NULL; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.AWARD_ID(i)                    := NULL; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.PROJECT_ID(i)                  := NULL; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.EXPENDITURE_TYPE(i)            := NULL; --   VARCHAR2_30_tbl_type   ,
    zx_global_structures_pkg.trx_line_dist_tbl.EXPENDITURE_ORGANIZATION_ID(i) := NULL; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.EXPENDITURE_ITEM_DATE(i)       := NULL; --   DATE_tbl_type          ,
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_DIST_AMT(i)           := NULL; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_DIST_QUANTITY(i)      := NULL; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_CURR_CONV_RATE(i)      := NULL; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.ITEM_DIST_NUMBER(i)            := NULL; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_DIST_ID(i)             := NULL; --   NUMBER_tbl_type        ,
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_DIST_TAX_AMT(i)       := NULL; --   NUMBER_tbl_type        ,

    zx_global_structures_pkg.trx_line_dist_tbl.ASSESSABLE_VALUE(i)    := NULL ;
    zx_global_structures_pkg.trx_line_dist_tbl.OUTPUT_TAX_CLASSIFICATION_CODE(i)  := r_order_type.tax_code;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID_LEVEL2(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID_LEVEL3(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID_LEVEL4(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID_LEVEL5(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID_LEVEL6(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.HDR_TRX_USER_KEY1(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.HDR_TRX_USER_KEY2(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.HDR_TRX_USER_KEY3(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.HDR_TRX_USER_KEY4(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.HDR_TRX_USER_KEY5(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.HDR_TRX_USER_KEY6(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.LINE_TRX_USER_KEY1(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.LINE_TRX_USER_KEY2(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.LINE_TRX_USER_KEY3(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.LINE_TRX_USER_KEY4(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.LINE_TRX_USER_KEY5(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.LINE_TRX_USER_KEY6(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_NUMBER(i)   := l_trx_line_number;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_DIST_ID(i)   := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DIST_TRX_USER_KEY1(i) := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DIST_TRX_USER_KEY2(i) := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DIST_TRX_USER_KEY3(i) := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DIST_TRX_USER_KEY4(i) := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DIST_TRX_USER_KEY5(i) := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DIST_TRX_USER_KEY6(i) := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.HISTORICAL_FLAG(i)  :='N';
    zx_global_structures_pkg.trx_line_dist_tbl.CTRL_HDR_TX_APPL_FLAG(i)  :='N';
    zx_global_structures_pkg.trx_line_dist_tbl.CTRL_TOTAL_LINE_TX_AMT(i)  :=NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_DESCRIPTION(i)  := r_item.description;
    zx_global_structures_pkg.trx_line_dist_tbl.PRODUCT_DESCRIPTION(i)  := r_item.description;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_WAYBILL_NUMBER(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_GL_DATE(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.MERCHANT_PARTY_NAME(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.MERCHANT_PARTY_DOCUMENT_NUMBER(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.MERCHANT_PARTY_REFERENCE(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.MERCHANT_PARTY_TAXPAYER_ID(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.MERCHANT_PARTY_TAX_REG_NUMBER(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.PAYING_PARTY_ID(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.OWN_HQ_PARTY_ID(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.TRADING_HQ_PARTY_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.POI_PARTY_ID(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.POD_PARTY_ID(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.TITLE_TRANSFER_PARTY_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.PAYING_PARTY_SITE_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.OWN_HQ_PARTY_SITE_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.TRADING_HQ_PARTY_SITE_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.POI_PARTY_SITE_ID(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.POD_PARTY_SITE_ID(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.TITLE_TRANSFER_PARTY_SITE_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.PAYING_LOCATION_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.OWN_HQ_LOCATION_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.TRADING_HQ_LOCATION_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.POC_LOCATION_ID(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.POI_LOCATION_ID(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.POD_LOCATION_ID(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.TITLE_TRANSFER_LOCATION_ID(i):= NULL;
    -- Rounding parties not required for OM. No override of rounding level
    zx_global_structures_pkg.trx_line_dist_tbl.ROUNDING_SHIP_TO_PARTY_ID(i)   := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ROUNDING_SHIP_FROM_PARTY_ID(i) := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ROUNDING_BILL_TO_PARTY_ID(i)   := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ROUNDING_BILL_FROM_PARTY_ID(i) := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.RNDG_SHIP_TO_PARTY_SITE_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.RNDG_SHIP_FROM_PARTY_SITE_ID(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.RNDG_BILL_TO_PARTY_SITE_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.RNDG_BILL_FROM_PARTY_SITE_ID(i):= NULL;

    -- Ref_doc, applied_from, applied_to, related_doc are not applicable for OM
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_APPLICATION_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_ENTITY_CODE(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_EVENT_CLASS_CODE(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_TRX_ID(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_HDR_TRX_USER_KEY1(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_HDR_TRX_USER_KEY2(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_HDR_TRX_USER_KEY3(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_HDR_TRX_USER_KEY4(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_HDR_TRX_USER_KEY5(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_HDR_TRX_USER_KEY6(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_LINE_ID(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_LIN_TRX_USER_KEY1(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_LIN_TRX_USER_KEY2(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_LIN_TRX_USER_KEY3(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_LIN_TRX_USER_KEY4(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_LIN_TRX_USER_KEY5(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_LIN_TRX_USER_KEY6(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_LINE_QUANTITY(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_APPLICATION_ID(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_ENTITY_CODE(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_EVENT_CLASS_CODE(i) := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_TRX_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_FROM_HDR_TRX_USER_KEY1(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_FROM_HDR_TRX_USER_KEY2(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_FROM_HDR_TRX_USER_KEY3(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_FROM_HDR_TRX_USER_KEY4(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_FROM_HDR_TRX_USER_KEY5(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_FROM_HDR_TRX_USER_KEY6(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_LINE_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_FROM_LIN_TRX_USER_KEY1(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_FROM_LIN_TRX_USER_KEY2(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_FROM_LIN_TRX_USER_KEY3(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_FROM_LIN_TRX_USER_KEY4(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_FROM_LIN_TRX_USER_KEY5(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_FROM_LIN_TRX_USER_KEY6(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_DIST_ID(i)      := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_FROM_DST_TRX_USER_KEY1(i) := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_FROM_DST_TRX_USER_KEY2(i) := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_FROM_DST_TRX_USER_KEY3(i) := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_FROM_DST_TRX_USER_KEY4(i) := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_FROM_DST_TRX_USER_KEY5(i) := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_FROM_DST_TRX_USER_KEY6(i) := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_APPLICATION_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_ENTITY_CODE(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_EVENT_CLASS_CODE(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_TRX_ID(i)  := NULL ;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJ_DOC_HDR_TRX_USER_KEY1(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJ_DOC_HDR_TRX_USER_KEY2(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJ_DOC_HDR_TRX_USER_KEY3(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJ_DOC_HDR_TRX_USER_KEY4(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJ_DOC_HDR_TRX_USER_KEY5(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJ_DOC_HDR_TRX_USER_KEY6(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_LINE_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJ_DOC_LIN_TRX_USER_KEY1(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJ_DOC_LIN_TRX_USER_KEY2(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJ_DOC_LIN_TRX_USER_KEY3(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJ_DOC_LIN_TRX_USER_KEY4(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJ_DOC_LIN_TRX_USER_KEY5(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJ_DOC_LIN_TRX_USER_KEY6(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_DIST_ID(i)       := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJ_DOC_DST_TRX_USER_KEY1(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJ_DOC_DST_TRX_USER_KEY2(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJ_DOC_DST_TRX_USER_KEY3(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJ_DOC_DST_TRX_USER_KEY4(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJ_DOC_DST_TRX_USER_KEY5(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJ_DOC_DST_TRX_USER_KEY6(i)     := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_NUMBER(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_DATE(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_APPLICATION_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_ENTITY_CODE(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_EVENT_CLASS_CODE(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_TRX_ID(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_TO_HDR_TRX_USER_KEY1(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_TO_HDR_TRX_USER_KEY2(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_TO_HDR_TRX_USER_KEY3(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_TO_HDR_TRX_USER_KEY4(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_TO_HDR_TRX_USER_KEY5(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_TO_HDR_TRX_USER_KEY6(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_TRX_LINE_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_TO_LIN_TRX_USER_KEY1(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_TO_LIN_TRX_USER_KEY2(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_TO_LIN_TRX_USER_KEY3(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_TO_LIN_TRX_USER_KEY4(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_TO_LIN_TRX_USER_KEY5(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APP_TO_LIN_TRX_USER_KEY6(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_APPLICATION_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_ENTITY_CODE(i)     := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_EVENT_CLASS_CODE(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_TRX_ID(i)          := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REL_DOC_HDR_TRX_USER_KEY1(i)   := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REL_DOC_HDR_TRX_USER_KEY2(i)   := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REL_DOC_HDR_TRX_USER_KEY3(i)   := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REL_DOC_HDR_TRX_USER_KEY4(i)   := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REL_DOC_HDR_TRX_USER_KEY5(i)   := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REL_DOC_HDR_TRX_USER_KEY6(i)   := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_NUMBER(i)          := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_DATE(i)            := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REVERSED_APPLN_ID(i)           := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REVERSED_ENTITY_CODE(i)        := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REVERSED_EVNT_CLS_CODE(i)      := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REVERSED_TRX_ID(i)             := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REVERSED_TRX_LEVEL_TYPE(i)     := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REVERSED_TRX_LINE_ID(i)        := NULL;

    zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC1(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC2(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC3(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC4(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC5(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC6(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC7(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC8(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC9(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC10(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.CHAR1(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.CHAR2(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.CHAR3(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.CHAR4(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.CHAR5(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.CHAR6(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.CHAR7(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.CHAR8(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.CHAR9(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.CHAR10(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DATE1(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DATE2(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DATE3(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DATE4(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DATE5(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DATE6(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DATE7(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DATE8(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DATE9(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DATE10(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.internal_org_location_id(i) := l_internal_org_location_id;
         
    zx_global_structures_pkg.trx_line_dist_tbl.SOURCE_APPLICATION_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.SOURCE_ENTITY_CODE(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.SOURCE_EVENT_CLASS_CODE(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.SOURCE_TRX_ID(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.SOURCE_LINE_ID(i)    := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.SOURCE_TRX_LEVEL_TYPE(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_TRX_LEVEL_TYPE(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_TRX_LEVEL_TYPE(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_TRX_LEVEL_TYPE(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_TRX_LEVEL_TYPE(i):= NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE1(i)  := 'N';
    zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE2(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE3(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE4(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE5(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE6(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE7(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE8(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE9(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE10(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.SOURCE_TAX_LINE_ID(i)  := NULL;
    zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_TRX_NUMBER(i)  := NULL;

    zx_global_structures_pkg.trx_line_dist_tbl.SHIP_THIRD_PTY_ACCT_SITE_ID(i)   := r_ship_locinfo.cust_acct_site_id;
    zx_global_structures_pkg.trx_line_dist_tbl.BILL_THIRD_PTY_ACCT_SITE_ID(i)   := r_bill_locinfo.cust_acct_site_id;
    zx_global_structures_pkg.trx_line_dist_tbl.SHIP_TO_CUST_ACCT_SITE_USE_ID(i) := r_ship_locinfo.site_use_id;
    zx_global_structures_pkg.trx_line_dist_tbl.BILL_TO_CUST_ACCT_SITE_USE_ID(i) := r_bill_locinfo.site_use_id;
    zx_global_structures_pkg.trx_line_dist_tbl.SHIP_THIRD_PTY_ACCT_ID(i)        := r_ship_locinfo.cust_account_id;
    zx_global_structures_pkg.trx_line_dist_tbl.BILL_THIRD_PTY_ACCT_ID(i)        := r_bill_locinfo.cust_account_id;

    l_transaction_rec.application_id   := l_application_id;
    l_transaction_rec.entity_code      := l_entity_code_crsr;
    l_transaction_rec.event_class_code := l_event_class_code_crsr;
    l_transaction_rec.event_type_code  := 'CREATE';
    l_transaction_rec.trx_id           := l_header_id;
    l_transaction_rec.internal_organization_id := p_org_id;

    zx_api_pub.calculate_tax(
                        p_api_version        => 1.0,
                        p_init_msg_list      => FND_API.G_TRUE,
                        p_commit             => NULL,
                        p_validation_level   => NULL,
                        x_return_status      => l_return_status,
                        x_msg_count          => l_msg_count,
                        x_msg_data           => l_msg_data,
                        p_transaction_rec    => l_transaction_rec,
                        p_quote_flag         => 'Y',
                        p_data_transfer_mode => 'PLS',
                        x_doc_level_recalc_flag => l_doc_level_recalc_flag);

    -- Verifica se ocorreu algum erro
    IF l_return_status != FND_API.G_RET_STS_SUCCESS THEN
       
      px_return_status := C_ERROR;
    
      IF l_msg_count = 1 THEN
        
        -- there is one message raised by the API
        l(l_msg_data);
        
        IF l_msg_data is not null then
          px_message_error := l_msg_data;
        ELSE
          px_message_error := 'Erro indefinido na chamada da API zx_api_pub.calculate_tax';
        END IF;

      ELSIF l_msg_count > 1 THEN
        
        LOOP
          
          l_msg_data := FND_MSG_PUB.GET(FND_MSG_PUB.G_NEXT,FND_API.G_FALSE);
          
          EXIT WHEN l_msg_data IS NULL;
          
          IF px_message_error IS NULL THEN
            px_message_error := l_msg_data;
          ELSE
            px_message_error := Substr(px_message_error || ' - '|| l_msg_data, 1, 2000);
          END IF;
          
        END LOOP;
      END IF;
      
      RAISE exit_excp;
      
    END IF;
    
  EXCEPTION
    WHEN exit_excp THEN
      ROLLBACK;
    WHEN OTHERS THEN
      ROLLBACK;
      px_return_status := C_ERROR;
      px_message_error := 'Erro inesperado. Erro: '||SQLERRM;
  END Calculate_Tax;
  
BEGIN

  MO_GLOBAL.SET_POLICY_CONTEXT(p_access_mode  => 'S', p_org_id => 81);

  -- Chama a rotina para carregar informações do imposto
  Calculate_Tax(p_org_id             => 81
              , p_order_type_id      => 1370
              , p_sold_to_org_id     => 3592570
              , p_organization_id    => 115
              , p_inventory_item_id  => 11734850
              , p_ship_from_org_id   => 115
              , p_ship_to_org_id     => 112975
              , p_invoice_to_org_id  => 112974
              , p_ordered_quantity   => 5000
              , p_unit_selling_price => 4.26
              , p_fob_point_code     => 'CIF'
              , p_salesrep_id        => 100011117
              , px_return_status     => w_return_status
              , px_message_error     => w_message_error);
  
  IF w_return_status != C_SUCCESS THEN
    l('ERRO: '||w_message_error);
  ELSE
    l('SUCESSO!');
  END IF;
  
END;

Se foi útil, ou se você apenas gostou, peço que compartilhe com seus contatos, poderá ser muito útil para eles.
Qualquer dúvida comenta aqui no blog.

Grande Abraço

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *