DBA Data[Home] [Help]

APPS.CSTPPWAC SQL Statements

The following lines contain the word 'select', 'insert', 'update' or 'delete':

Line: 43

  l_no_update_qty       NUMBER;
Line: 110

  l_no_update_qty := 0;
Line: 119

  insert_txn_history(i_pac_period_id, i_cost_group_id, i_txn_id,
                      i_process_group, i_item_id, i_qty_layer_id,
                      i_txn_qty, i_user_id, i_login_id, i_req_id,
                      i_prg_appl_id, i_prg_id, i_txn_category,
                      l_err_num, l_err_code, l_err_msg);
Line: 134

      CSTPPWAC.periodic_cost_update(
                                  i_pac_period_id,
                                  i_cost_group_id,
                                  i_cost_type_id,
                                  i_txn_id,
                                  i_cost_layer_id,
                                  i_qty_layer_id,
                                  i_item_id,
                                  i_user_id,
                                  i_login_id,
                                  i_req_id,
                                  i_prg_appl_id,
                                  i_prg_id,
                                  i_txn_category,
				  i_txn_qty,/*LCM*/
                                  l_err_num,
                                  l_err_code,
                                  l_err_msg);
Line: 154

      CSTPFCHK.periodic_cost_update_hook(
                                       i_pac_period_id,
                                       i_cost_group_id,
                                       i_cost_type_id,
                                       i_txn_id,
                                       i_cost_layer_id,
                                       i_qty_layer_id,
                                       i_item_id,
                                       i_user_id,
                                       i_login_id,
                                       i_req_id,
                                       i_prg_appl_id,
                                       i_prg_id,
                                       i_txn_category,
				       i_txn_qty,/*LCM*/
                                       l_err_num,
                                       l_err_code,
                                       l_err_msg);
Line: 181

    update_txn_history(i_pac_period_id, i_cost_group_id, i_txn_id,
                      i_user_id, i_login_id, i_req_id, i_prg_appl_id, i_prg_id,
                      l_err_num, l_err_code, l_err_msg);
Line: 317

    update_txn_history(i_pac_period_id, i_cost_group_id, i_txn_id,
                      i_user_id, i_login_id, i_req_id, i_prg_appl_id, i_prg_id,
                      l_err_num, l_err_code, l_err_msg);
Line: 355

                        l_no_update_qty,
                        i_cost_method,
                        i_user_id,
                        i_login_id,
                        i_req_id,
                        i_prg_appl_id,
                        i_prg_id,
                        i_txn_category,
                        l_err_num,
                        l_err_code,
                        l_err_msg);
Line: 426

            UPDATE cst_pac_item_costs cpic
              SET   last_update_date       = sysdate,
                    last_updated_by        = i_user_id,
                    last_update_login      = i_login_id,
                    request_id             = i_req_id,
                    program_application_id = i_prg_appl_id,
                    program_id             = i_prg_id,
                    program_update_date    = sysdate,
                    issue_quantity = issue_quantity + i_txn_qty,
                    buy_quantity   = buy_quantity + l_buy_qty,
                    make_quantity  = make_quantity + l_make_qty
            WHERE cpic.cost_layer_id = i_cost_layer_id;
Line: 493

                        l_no_update_qty,
                        i_cost_method,
                        i_user_id,
                        i_login_id,
                        i_req_id,
                        i_prg_appl_id,
                        i_prg_id,
                        i_txn_category,
                        l_err_num,
                        l_err_code,
                        l_err_msg);
Line: 514

  update_txn_history(i_pac_period_id, i_cost_group_id, i_txn_id,
                      i_user_id, i_login_id, i_req_id, i_prg_appl_id, i_prg_id,
                      l_err_num, l_err_code, l_err_msg);
Line: 775

  I_NO_UPDATE_QTY       IN        NUMBER,
  I_COST_METHOD         IN        NUMBER,
  I_USER_ID             IN        NUMBER,
  I_LOGIN_ID            IN        NUMBER,
  I_REQ_ID              IN        NUMBER,
  I_PRG_APPL_ID         IN        NUMBER,
  I_PRG_ID              IN        NUMBER,
  I_TXN_CATEGORY        IN        NUMBER,
  O_Err_Num             OUT NOCOPY        NUMBER,
  O_Err_Code            OUT NOCOPY        VARCHAR2,
  O_Err_Msg             OUT NOCOPY        VARCHAR2
) IS
  l_err_num             NUMBER;
Line: 825

        'I_NO_UPDATE_QTY = '||I_NO_UPDATE_QTY||','||
        'I_COST_METHOD = '||I_COST_METHOD||','||
        'I_USER_ID = '||I_USER_ID||','||
        'I_LOGIN_ID = '||I_LOGIN_ID||','||
        'I_REQ_ID = '||I_REQ_ID||','||
        'I_PRG_APPL_ID = '||I_PRG_APPL_ID||','||
        'I_PRG_ID = '||I_PRG_ID||','||
        'I_TXN_CATEGORY = '||I_TXN_CATEGORY
      );
Line: 854

                        i_no_update_qty,
                        i_user_id,
                        i_login_id,
                        i_req_id,
                        i_prg_appl_id,
                        i_prg_id,
                        i_txn_category,
                        i_txn_id,
                        i_item_id,
                        l_err_num,
                        l_err_code,
                        l_err_msg);
Line: 877

                        i_no_update_qty,
                        i_user_id,
                        i_login_id,
                        i_req_id,
                        i_prg_appl_id,
                        i_prg_id,
                        l_err_num,
                        l_err_code,
                        l_err_msg);
Line: 959

  I_NO_UPDATE_QTY       IN        NUMBER,
  I_COST_METHOD         IN        NUMBER,
  I_USER_ID             IN        NUMBER,
  I_LOGIN_ID            IN        NUMBER,
  I_REQ_ID              IN        NUMBER,
  I_PRG_APPL_ID         IN        NUMBER,
  I_PRG_ID              IN        NUMBER,
  I_TXN_CATEGORY        IN        NUMBER,
  O_Err_Num             OUT NOCOPY        NUMBER,
  O_Err_Code            OUT NOCOPY        VARCHAR2,
  O_Err_Msg             OUT NOCOPY        VARCHAR2
) IS
  l_exp1                NUMBER;
Line: 1016

        'I_NO_UPDATE_QTY = '||I_NO_UPDATE_QTY||','||
        'I_COST_METHOD = '||I_COST_METHOD||','||
        'I_USER_ID = '||I_USER_ID||','||
        'I_LOGIN_ID = '||I_LOGIN_ID||','||
        'I_REQ_ID = '||I_REQ_ID||','||
        'I_PRG_APPL_ID = '||I_PRG_APPL_ID||','||
        'I_PRG_ID = '||I_PRG_ID||','||
        'I_TXN_CATEGORY = '||I_TXN_CATEGORY
      );
Line: 1038

  select decode(asset_inventory,1,0,1)
  into l_exp1
  from mtl_secondary_inventories msi,
       mtl_material_transactions mmt
  where msi.secondary_inventory_name = mmt.subinventory_code
  and msi.organization_id = i_org_id
  and mmt.transaction_id = i_txn_id
  and mmt.organization_id = i_org_id;
Line: 1053

    select decode(asset_inventory,1,0,1)
    into l_exp2
    from mtl_secondary_inventories msi,
         mtl_material_transactions mmt
    where msi.secondary_inventory_name = mmt.transfer_subinventory
    and msi.organization_id = mmt.transfer_organization_id
    and mmt.transaction_id = i_txn_id
    and mmt.organization_id = i_org_id;
Line: 1113

                        i_no_update_qty,
                        i_cost_method,
                        i_user_id,
                        i_login_id,
                        i_req_id,
                        i_prg_appl_id,
                        i_prg_id,
                        i_txn_category,
                        l_err_num,
                        l_err_code,
                        l_err_msg);
Line: 1215

  l_no_update_qty       NUMBER;
Line: 1276

  l_no_update_qty := 0;
Line: 1287

    select decode(asset_inventory,1,0,1)
    into l_exp1
    from mtl_secondary_inventories msi,
         mtl_material_transactions mmt
    where msi.secondary_inventory_name = mmt.subinventory_code
    and msi.organization_id = i_org_id
    and mmt.transaction_id = i_txn_id
    and mmt.organization_id = i_org_id;
Line: 1378

                        l_no_update_qty,
                        i_cost_method,
                        i_user_id,
                        i_login_id,
                        i_req_id,
                        i_prg_appl_id,
                        i_prg_id,
                        i_txn_category,
                        l_err_num,
                        l_err_code,
                        l_err_msg);
Line: 1551

  select count(*)
  into l_txn_cost_exist
  from mtl_pac_txn_cost_details
  where transaction_id = i_txn_id
  and cost_group_id = i_cost_group_id
  and pac_period_id = i_pac_period_id;
Line: 1563

    INSERT INTO mtl_pac_actual_cost_details (
        transaction_id,
        pac_period_id,
        cost_type_id,
        cost_group_id,
        cost_layer_id,
        cost_element_id,
        level_type,
        last_update_date,
        last_updated_by,
        creation_date,
        created_by,
        last_update_login,
        request_id,
        program_application_id,
        program_id,
        program_update_date,
        inventory_item_id,
        actual_cost,
        wip_variance, -- New Column added for BOM based WIP reqmnt
        insertion_flag,
        user_entered,
        transaction_costed_date,
	txn_category)
    SELECT
        i_txn_id,
        i_pac_period_id,
        i_cost_type_id,
        i_cost_group_id,
        i_cost_layer_id,
        mptcd.cost_element_id,
        mptcd.level_type,
        sysdate,
        i_user_id,
        sysdate,
        i_user_id,
        i_login_id,
        i_req_id,
        i_prg_appl_id,
        i_prg_id,
        sysdate,
        mptcd.inventory_item_id,
        mptcd.transaction_cost,
        mptcd.wip_variance,
        'Y',
        'N',
        SYSDATE,
	i_txn_category
    FROM  mtl_pac_txn_cost_details mptcd
    WHERE transaction_id = i_txn_id
    AND   pac_period_id  = i_pac_period_id
    AND   cost_group_id  = i_cost_group_id;
Line: 1625

     ** we will insert a TL material 0 cost layer.                     **
     ********************************************************************/

    l_stmt_num := 30;
Line: 1630

    select count(*)
    into l_cost_details
    from cst_pac_item_cost_details
    where cost_layer_id = i_cost_layer_id;
Line: 1643

            SELECT  decode(WE.entity_type,6,1,7,1,0)
            INTO    l_eam_job
            FROM    mtl_material_transactions MMT, WIP_ENTITIES WE
            WHERE   MMT.transaction_id = i_txn_id
            AND     MMT.transaction_source_id = WE.wip_entity_id;
Line: 1678

      INSERT INTO mtl_pac_actual_cost_details (
        transaction_id,
        pac_period_id,
        cost_type_id,
        cost_group_id,
        cost_layer_id,
        cost_element_id,
        level_type,
        last_update_date,
        last_updated_by,
        creation_date,
        created_by,
        last_update_login,
        request_id,
        program_application_id,
        program_id,
        program_update_date,
        inventory_item_id,
        actual_cost,
        insertion_flag,
        user_entered,
        transaction_costed_date,
	txn_category)
      SELECT
        i_txn_id,
        i_pac_period_id,
        i_cost_type_id,
        i_cost_group_id,
        i_cost_layer_id,
        cpicd.cost_element_id,
        cpicd.level_type,
        sysdate,
        i_user_id,
        sysdate,
        i_user_id,
        i_login_id,
        i_req_id,
        i_prg_appl_id,
        i_prg_id,
        sysdate,
        i_item_id,
        decode(l_zero_cost_flag, 1, 0, cpicd.item_cost), /* changed for eAM support in PAC. Added decode to handle rebuilds */
        'N',
        'N',
        SYSDATE,
	i_txn_category
      FROM  cst_pac_item_cost_details cpicd
      WHERE cpicd.cost_layer_id = i_cost_layer_id;
Line: 1730

      INSERT INTO mtl_pac_actual_cost_details (
        transaction_id,
        pac_period_id,
        cost_type_id,
        cost_group_id,
        cost_layer_id,
        cost_element_id,
        level_type,
        last_update_date,
        last_updated_by,
        creation_date,
        created_by,
        last_update_login,
        request_id,
        program_application_id,
        program_id,
        program_update_date,
        inventory_item_id,
        actual_cost,
        insertion_flag,
        user_entered,
        transaction_costed_date,
	txn_category)
      VALUES(
        i_txn_id,
        i_pac_period_id,
        i_cost_type_id,
        i_cost_group_id,
        i_cost_layer_id,
        1,
        1,
        sysdate,
        i_user_id,
        sysdate,
        i_user_id,
        i_login_id,
        i_req_id,
        i_prg_appl_id,
        i_prg_id,
        sysdate,
        i_item_id,
        0,
        'N',
        'N',
        SYSDATE,
	i_txn_category);
Line: 1797

        select nvl(mmt.fob_point, mip.fob_point), mmt.transfer_organization_id
        into   l_fob_point, l_txfr_org_id
        from   mtl_interorg_parameters mip, mtl_material_transactions mmt
        where  mip.from_organization_id = i_org_id
          and  mip.to_organization_id = mmt.transfer_organization_id
          and  mmt.transaction_id = i_txn_id;
Line: 1996

  select count(*)
  into l_mpacd_mat_ovhds
  from mtl_pac_actual_cost_details mpacd
  where transaction_id = i_txn_id
  and cost_layer_id = i_cost_layer_id
  and cost_element_id = 2
  and level_type = decode(i_level, 1,1,level_type);
Line: 2006

  select nvl(sum(actual_cost),0)
  into l_item_cost
  from mtl_pac_actual_cost_details mpacd
  where transaction_id = i_txn_id
  and cost_layer_id = i_cost_layer_id;
Line: 2014

  INSERT INTO mtl_pac_cost_subelements(
        transaction_id,
        pac_period_id,
        cost_type_id,
        cost_group_id,
        cost_element_id,
        level_type,
        resource_id,
        last_update_date,
        last_updated_by,
        creation_date,
        created_by,
        last_update_login,
        request_id,
        program_application_id,
        program_id,
        program_update_date,
        actual_cost,
        user_entered)
  SELECT i_txn_id,
        i_pac_period_id,
        i_cost_type_id,
        i_cost_group_id,
        cicd.cost_element_id,
        cicd.level_type,
        cicd.resource_id,
        sysdate,
        i_user_id,
        sysdate,
        i_user_id,
        i_login_id,
        i_req_id,
        i_prg_appl_id,
        i_prg_id,
        sysdate,
        decode(cicd.basis_type, 1, cicd.usage_rate_or_amount,
                                2, cicd.usage_rate_or_amount/abs(i_txn_qty),
                                5, cicd.usage_rate_or_amount * l_item_cost,
                                6, cicd.usage_rate_or_amount * cicd.basis_factor,0),
        'N'
  FROM  cst_item_cost_details cicd
  WHERE inventory_item_id = i_item_id
  AND   organization_id = i_org_id
  AND   cost_type_id = i_pac_rates_id
  AND   basis_type in (1,2,5,6)
  AND   cost_element_id = 2
  AND   level_type = decode(i_level, 1,1,level_type);
Line: 2064

  select count(*)
  into l_mpcs_mat_ovhds
  from mtl_pac_cost_subelements
  where transaction_id = i_txn_id
  and pac_period_id = i_pac_period_id
  and cost_group_id = i_cost_group_id
  and cost_element_id = 2
  and level_type = decode(i_level, 1,1,level_type);
Line: 2083

      UPDATE mtl_pac_actual_cost_details mpacd
      SET      (last_update_date,
                     last_updated_by,
                creation_date,
                created_by,
                last_update_login,
                request_id,
                program_application_id,
                program_id,
                program_update_date,
                actual_cost,
                transaction_costed_date) =
               (SELECT  sysdate,
                          i_user_id,
                          sysdate,
                          i_user_id,
                        i_login_id,
                        i_req_id,
                        i_prg_appl_id,
                        i_prg_id,
                        sysdate,
                        sum(mpcs.actual_cost) + mpacd.actual_cost,
                        sysdate
                FROM mtl_pac_cost_subelements mpcs
                WHERE mpcs.transaction_id = i_txn_id
                AND   mpcs.pac_period_id  = i_pac_period_id
                AND   mpcs.cost_group_id  = i_cost_group_id
                AND   mpcs.cost_element_id = 2)
      WHERE mpacd.transaction_id = i_txn_id
      AND   mpacd.cost_group_id = i_cost_group_id
      AND   mpacd.cost_layer_id = i_cost_layer_id
      AND   mpacd.cost_element_id = 2
      AND   mpacd.level_type = 1;
Line: 2121

      INSERT INTO mtl_pac_actual_cost_details(
        transaction_id,
        pac_period_id,
        cost_type_id,
        cost_group_id,
        cost_layer_id,
        cost_element_id,
        level_type,
        last_update_date,
        last_updated_by,
        creation_date,
        created_by,
        last_update_login,
        request_id,
        program_application_id,
        program_id,
        program_update_date,
        inventory_item_id,
        actual_cost,
        insertion_flag,
        user_entered,
        transaction_costed_date,
	txn_category)
      SELECT
        i_txn_id,
        i_pac_period_id,
        i_cost_type_id,
        i_cost_group_id,
        i_cost_layer_id,
        2,
        1,
        sysdate,
        i_user_id,
        sysdate,
        i_user_id,
        i_login_id,
        i_req_id,
        i_prg_appl_id,
        i_prg_id,
        sysdate,
        i_item_id,
        sum(actual_cost),
        'Y',
        'N',
        SYSDATE,
	i_txn_category
      FROM  mtl_pac_cost_subelements
      WHERE transaction_id = i_txn_id
      AND   pac_period_id  = i_pac_period_id
      AND   cost_group_id  = i_cost_group_id
      AND   cost_element_id = 2;
Line: 2222

  I_NO_UPDATE_QTY       IN        NUMBER,
  I_USER_ID             IN        NUMBER,
  I_LOGIN_ID            IN        NUMBER,
  I_REQ_ID              IN        NUMBER,
  I_PRG_APPL_ID         IN        NUMBER,
  I_PRG_ID              IN        NUMBER,
  I_TXN_CATEGORY        IN        NUMBER,
  I_TXN_ID              IN        NUMBER,
  I_ITEM_ID             IN        NUMBER,
  O_Err_Num             OUT NOCOPY        NUMBER,
  O_Err_Code            OUT NOCOPY        VARCHAR2,
  O_Err_Msg             OUT NOCOPY        VARCHAR2
) IS
  l_err_num             NUMBER;
Line: 2267

        'I_NO_UPDATE_QTY = '||I_NO_UPDATE_QTY||','||
        'I_USER_ID = '||I_USER_ID||','||
        'I_LOGIN_ID = '||I_LOGIN_ID||','||
        'I_REQ_ID = '||I_REQ_ID||','||
        'I_PRG_APPL_ID = '||I_PRG_APPL_ID||','||
        'I_PRG_ID = '||I_PRG_ID||','||
        'I_TXN_CATEGORY = '||I_TXN_CATEGORY||','||
        'I_TXN_ID = '||I_TXN_ID||','||
        'I_ITEM_ID = '||I_ITEM_ID
      );
Line: 2286

  if ((i_txn_action_id = 30) or (i_no_update_qty = 1) or (i_exp_flag = 1)) then
    GOTO out_arg_log;
Line: 2296

  (SELECT actual_cost, cost_element_id, level_type
  FROM mtl_pac_actual_cost_details mpacd
  WHERE mpacd.cost_layer_id = i_cost_layer_id
  AND   mpacd.transaction_id = i_txn_id)
  LOOP
   DECLARE
    l_index NUMBER;
Line: 2510

   ** Update mtl_pac_actual_cost_details and update the prior cost   **
   ** to the current average for the elements that exists and insert **
   ** in to mtl_pac_actual_cost_details the current average cost for **
   ** the elements that do not exist.                                **
   ********************************************************************/

  l_stmt_num := 10;
Line: 2518

  INSERT INTO mtl_pac_actual_cost_details (
        transaction_id,
        pac_period_id,
        cost_type_id,
        cost_group_id,
        cost_layer_id,
        cost_element_id,
        level_type,
        last_update_date,
        last_updated_by,
        creation_date,
        created_by,
        last_update_login,
        request_id,
        program_application_id,
        program_id,
        program_update_date,
        inventory_item_id,
        actual_cost,
        insertion_flag,
        user_entered,
        transaction_costed_date,
	txn_category)
  SELECT i_txn_id,
        i_pac_period_id,
        i_cost_type_id,
        i_cost_group_id,
        i_cost_layer_id,
        cpicd.cost_element_id,
        cpicd.level_type,
        sysdate,
        i_user_id,
        sysdate,
        i_user_id,
        i_login_id,
        i_req_id,
        i_prg_appl_id,
        i_prg_id,
        sysdate,
        i_item_id,
        0,
        'N',
        'N',
        sysdate,
	i_txn_category
  FROM  cst_pac_item_cost_details cpicd
  WHERE cost_layer_id = i_cost_layer_id
  AND NOT EXISTS
        (SELECT        'this detail is not in mpacd already'
         FROM        mtl_pac_actual_cost_details mpacd
         WHERE        mpacd.transaction_id = i_txn_id
         AND        mpacd.cost_group_id = i_cost_group_id
         AND        mpacd.cost_layer_id = i_cost_layer_id
         AND        mpacd.cost_element_id = cpicd.cost_element_id
         AND        mpacd.level_type = cpicd.level_type);
Line: 2576

 (SELECT actual_cost, cost_element_id, level_type
      FROM   mtl_pac_actual_cost_details mpacd
  WHERE mpacd.cost_layer_id = i_cost_layer_id
  AND   mpacd.transaction_id = i_txn_id)
  LOOP
   DECLARE
    l_index NUMBER;
Line: 2602

          Item-cost_element-level_type combination not found: Insert into
          PL/SQL table. Quantity is maintained for each item, whereas all
          other tables are maintained for each item-cost_element-level_type
       **********************************************************************/

       l_index := CSTPPINV.l_item_id_tbl.COUNT + 1;
Line: 2623

         Update/Insert total quantity, make quantity, buy quantity for each item
       **************************************************************************/

       CSTPPINV.l_item_balance_tbl(l_index) := (x.actual_cost * i_txn_qty) + CSTPPINV.l_item_balance_tbl(l_index);
Line: 2709

PROCEDURE periodic_cost_update (
  I_PAC_PERIOD_ID       IN      NUMBER,
  I_COST_GROUP_ID       IN      NUMBER,
  I_COST_TYPE_ID        IN      NUMBER,
  I_TXN_ID              IN      NUMBER,
  I_COST_LAYER_ID       IN      NUMBER,
  I_QTY_LAYER_ID        IN      NUMBER,
  I_ITEM_ID             IN      NUMBER,
  I_USER_ID             IN      NUMBER,
  I_LOGIN_ID            IN      NUMBER,
  I_REQ_ID              IN      NUMBER,
  I_PRG_APPL_ID         IN      NUMBER,
  I_PRG_ID              IN      NUMBER,
  I_TXN_CATEGORY        IN      NUMBER,
  I_TXN_QTY             IN      NUMBER,
  O_Err_Num             OUT NOCOPY     NUMBER,
  O_Err_Code            OUT NOCOPY     VARCHAR2,
  O_Err_Msg             OUT NOCOPY     VARCHAR2)
IS
  l_value_change_flag   NUMBER;
Line: 2735

    l_module       CONSTANT VARCHAR2(90) := 'cst.plsql.CSTPPWAC.periodic_cost_update';
Line: 2752

        'Entering CSTPPWAC.periodic_cost_update with '||
        'I_PAC_PERIOD_ID = '||I_PAC_PERIOD_ID||','||
        'I_COST_GROUP_ID = '||I_COST_GROUP_ID||','||
        'I_COST_TYPE_ID = '||I_COST_TYPE_ID||','||
        'I_TXN_ID = '||I_TXN_ID||','||
        'I_COST_LAYER_ID = '||I_COST_LAYER_ID||','||
        'I_QTY_LAYER_ID = '||I_QTY_LAYER_ID||','||
        'I_ITEM_ID = '||I_ITEM_ID||','||
        'I_USER_ID = '||I_USER_ID||','||
        'I_LOGIN_ID = '||I_LOGIN_ID||','||
        'I_REQ_ID = '||I_REQ_ID||','||
        'I_PRG_APPL_ID = '||I_PRG_APPL_ID||','||
        'I_PRG_ID = '||I_PRG_ID||','||
        'I_TXN_CATEGORY = '||I_TXN_CATEGORY
      );
Line: 2771

   ** Insert into mpacd, all the elemental cost :                    **
   ** - exists in cpicd, but not exists in mptcd                     **
   ** It will use the current cost in cpicd as the new cost          **
   ********************************************************************/
  l_stmt_num := 10;
Line: 2777

  INSERT INTO mtl_pac_actual_cost_details (
        transaction_id,
        pac_period_id,
        cost_type_id,
        cost_group_id,
        cost_layer_id,
        cost_element_id,
        level_type,
        last_update_date,
        last_updated_by,
        creation_date,
        created_by,
        last_update_login,
        request_id,
        program_application_id,
        program_id,
        program_update_date,
        inventory_item_id,
        actual_cost,
        prior_cost,
        prior_buy_cost,
        prior_make_cost,
        new_cost,
        new_buy_cost,
        new_make_cost,
        variance_amount,
        insertion_flag,
        user_entered,
        transaction_costed_date,
	txn_category)
  SELECT
        i_txn_id,
        i_pac_period_id,
        i_cost_type_id,
        i_cost_group_id,
        i_cost_layer_id,
        cpicd.cost_element_id,
        cpicd.level_type,
        sysdate,
        i_user_id,
        sysdate,
        i_user_id,
        i_login_id,
        i_req_id,
        i_prg_appl_id,
        i_prg_id,
        sysdate,
        i_item_id,
        decode (i_txn_category, 5, 0, nvl(cpicd.item_cost,0)), -- insert 0 for PCU value change
        nvl(cpicd.item_cost,0),
        nvl(cpicd.item_buy_cost,0),
        nvl(cpicd.item_make_cost,0),
        nvl(cpicd.item_cost,0),
        nvl(cpicd.item_buy_cost,0),
        nvl(cpicd.item_make_cost,0),
          0,    -- variance
        'Y',
        'N',
          sysdate,
	i_txn_category
  FROM  cst_pac_item_cost_details cpicd
  WHERE cpicd.cost_layer_id  = i_cost_layer_id
    AND not exists (
        SELECT 'not exists in mptcd'
        FROM mtl_pac_txn_cost_details mptcd
        WHERE mptcd.transaction_id = i_txn_id
          AND mptcd.pac_period_id  = i_pac_period_id
          AND mptcd.cost_group_id  = i_cost_group_id
          AND mptcd.cost_element_id = cpicd.cost_element_id
          AND mptcd.level_type = cpicd.level_type);
Line: 2849

   ** Insert into mpacd, all the elemental cost :                    **
   ** - exists in mptcd and cpicd                                    **
   ** - exists in mptcd but not exists in cpicd                      **
   ** New cost will be calculated based on current cost (if exists)  **
   ** and cost change in mptcd.                                      **
   ********************************************************************/
  l_stmt_num := 20;
Line: 2856

  INSERT INTO mtl_pac_actual_cost_details (
        transaction_id,
        pac_period_id,
        cost_type_id,
        cost_group_id,
        cost_layer_id,
        cost_element_id,
        level_type,
        last_update_date,
        last_updated_by,
        creation_date,
        created_by,
        last_update_login,
        request_id,
        program_application_id,
        program_id,
        program_update_date,
        inventory_item_id,
        actual_cost,
        prior_cost,
        prior_buy_cost,
        prior_make_cost,
        new_cost,
        new_buy_cost,
        new_make_cost,
        variance_amount,
        insertion_flag,
        user_entered,
        transaction_costed_date,
	txn_category,
	onhand_variance_amount)
  SELECT
        i_txn_id,
        i_pac_period_id,
        i_cost_type_id,
        i_cost_group_id,
        i_cost_layer_id,
        mptcd.cost_element_id,
        mptcd.level_type,
        sysdate,
        i_user_id,
        sysdate,
        i_user_id,
        i_login_id,
        i_req_id,
        i_prg_appl_id,
        i_prg_id,
        sysdate,
        mptcd.inventory_item_id,
        decode(mptcd.new_periodic_cost,NULL,
             decode(mptcd.percentage_change,NULL,
                  /* value change formula */
               decode(sign(cpql.layer_quantity),1,
		      decode(sign(i_txn_qty),1,
		        decode(sign(cpql.layer_quantity-i_txn_qty),-1,
			       (mptcd.value_change/i_txn_qty*cpql.layer_quantity),
                               nvl(mptcd.value_change,0)
			       ),
			    nvl(mptcd.value_change,0)),
                      nvl(mptcd.value_change,0)),
                   /* percentage change formula */
                   nvl(cpicd.item_cost,0)*(1+mptcd.percentage_change/100)),
             /* new average cost formula */
             mptcd.new_periodic_cost),
        decode (mptcd.value_change, NULL, nvl(cpicd.item_cost,0), NULL),
        decode (mptcd.value_change, NULL, nvl(cpicd.item_buy_cost,0), NULL),
        decode (mptcd.value_change, NULL, nvl(cpicd.item_make_cost,0), NULL),
        decode(mptcd.new_periodic_cost,NULL,
             decode(mptcd.percentage_change,NULL,
                  /* value change formula */
                       NULL,    /* do not populate new_cost for value_change */
                   /* percentage change formula */
                   nvl(cpicd.item_cost,0)*(1+mptcd.percentage_change/100)),
             /* new average cost formula */
             mptcd.new_periodic_cost),
        decode (mptcd.value_change, NULL, nvl(cpicd.item_buy_cost,0), NULL),
        decode (mptcd.value_change, NULL, nvl(cpicd.item_make_cost,0), NULL),
        NULL,   /* variance */
        'Y',
        'N',
        sysdate,
	i_txn_category,
	decode(mptcd.value_change,NULL,
               0,
	       decode(sign(i_txn_qty),1,
	              decode(sign(cpql.layer_quantity),1,
		             decode(sign(cpql.layer_quantity-i_txn_qty),-1,
			            mptcd.value_change*(1-cpql.layer_quantity/i_txn_qty),
				    0
			            ),
			     0
		             ),
		      0
	              )
               )
  FROM  mtl_pac_txn_cost_details mptcd,
        cst_pac_item_cost_details cpicd,
        cst_pac_quantity_layers cpql
  WHERE mptcd.transaction_id = i_txn_id
    AND mptcd.pac_period_id  = i_pac_period_id
    AND mptcd.cost_group_id  = i_cost_group_id
    AND cpql.cost_layer_id = i_cost_layer_id
    AND cpql.quantity_layer_id = i_qty_layer_id
    AND cpicd.cost_layer_id (+) = i_cost_layer_id
    AND cpicd.cost_element_id (+) = mptcd.cost_element_id
    AND cpicd.level_type (+) = mptcd.level_type;
Line: 2964

    If the transaction is not a value change cost update, set the value_change
    flag to 1, otherwise set it to 0
  *****************************************************************************/

  l_stmt_num := 30;
Line: 2969

  SELECT DECODE(MAX(value_change),NULL, 1, 0)
    INTO   l_value_change_flag
  FROM mtl_pac_txn_cost_details mptcd
  WHERE mptcd.transaction_id = i_txn_id
    AND mptcd.pac_period_id  = i_pac_period_id
    AND mptcd.cost_group_id  = i_cost_group_id;
Line: 2977

    SELECT nvl(total_layer_quantity,0),
           nvl(make_quantity,0),
           nvl(buy_quantity,0)
    INTO   l_onhand,
           l_make_qty,
           l_buy_qty
    FROM   cst_pac_item_costs
    WHERE  cost_layer_id = i_cost_layer_id;
Line: 2990

     DELETE FROM cst_pac_item_cost_details
     WHERE cost_layer_id = i_cost_layer_id;
Line: 2994

     INSERT INTO cst_pac_item_cost_details(
           cost_layer_id,
           cost_element_id,
           level_type,
           last_update_date,
           last_updated_by,
           creation_date,
           created_by,
           last_update_login,
           request_id,
           program_application_id,
           program_id,
           program_update_date,
           item_cost,
           item_buy_cost,
           item_make_cost,
           item_balance,
           buy_balance,
           make_balance)
    SELECT i_cost_layer_id,
           mpacd.cost_element_id,
           mpacd.level_type,
           sysdate,
           i_user_id,
           sysdate,
           i_user_id,
           i_login_id,
           i_req_id,
           i_prg_appl_id,
           i_prg_id,
           sysdate,
           mpacd.new_cost,
           mpacd.new_buy_cost,
           mpacd.new_make_cost,
           mpacd.new_cost * l_onhand,
           mpacd.new_buy_cost * l_buy_qty,
           mpacd.new_make_cost * l_make_qty
     FROM  mtl_pac_actual_cost_details mpacd
     WHERE mpacd.transaction_id = i_txn_id
     AND   mpacd.cost_group_id = i_cost_group_id
     AND   mpacd.cost_layer_id = i_cost_layer_id;
Line: 3037

      UPDATE cst_pac_item_costs cpic
       SET (last_updated_by,
            last_update_date,
            last_update_login,
            request_id,
            program_application_id,
            program_id,
            program_update_date,
            pl_material,
            pl_material_overhead,
            pl_resource,
            pl_outside_processing,
            pl_overhead,
            tl_material,
            tl_material_overhead,
            tl_resource,
            tl_outside_processing,
            tl_overhead,
            material_cost,
            material_overhead_cost,
            resource_cost,
            outside_processing_cost,
            overhead_cost,
            pl_item_cost,
            tl_item_cost,
            item_cost,
            begin_item_cost,
            item_buy_cost,
            item_make_cost,
            unburdened_cost,
            burden_cost) =
         (SELECT
            i_user_id,
            sysdate,
            i_login_id,
            i_req_id,
            i_prg_appl_id,
            i_prg_id,
            sysdate,
            SUM(DECODE(LEVEL_TYPE,2,DECODE(COST_ELEMENT_ID,1,ITEM_COST,0),0)),        -- PL_MATERIAL
            SUM(DECODE(LEVEL_TYPE,2,DECODE(COST_ELEMENT_ID,2,ITEM_COST,0),0)),        -- PL_MATERIAL_OVERHEAD
            SUM(DECODE(LEVEL_TYPE,2,DECODE(COST_ELEMENT_ID,3,ITEM_COST,0),0)),        -- PL_RESOURCE
            SUM(DECODE(LEVEL_TYPE,2,DECODE(COST_ELEMENT_ID,4,ITEM_COST,0),0)),        -- PL_OUTSIDE_PROCESSING
            SUM(DECODE(LEVEL_TYPE,2,DECODE(COST_ELEMENT_ID,5,ITEM_COST,0),0)),        -- PL_OVERHEAD
            SUM(DECODE(LEVEL_TYPE,1,DECODE(COST_ELEMENT_ID,1,ITEM_COST,0),0)),        -- TL_MATERIAL
            SUM(DECODE(LEVEL_TYPE,1,DECODE(COST_ELEMENT_ID,2,ITEM_COST,0),0)),        -- TL_MATERIAL_OVERHEAD
            SUM(DECODE(LEVEL_TYPE,1,DECODE(COST_ELEMENT_ID,3,ITEM_COST,0),0)),        -- TL_RESOURCE
            SUM(DECODE(LEVEL_TYPE ,1,DECODE(COST_ELEMENT_ID ,4,ITEM_COST,0),0)),      -- TL_OUTSIDE_PROCESSING
            SUM(DECODE(LEVEL_TYPE,1,DECODE(COST_ELEMENT_ID,5,ITEM_COST,0),0)),        -- TL_OVERHEAD
            SUM(DECODE(COST_ELEMENT_ID,1,ITEM_COST,0)),                               -- MATERIAL_COST
            SUM(DECODE(COST_ELEMENT_ID,2,ITEM_COST,0)),                               -- MATERIAL_OVERHEAD_COST
            SUM(DECODE(COST_ELEMENT_ID,3,ITEM_COST,0)),                               -- RESOURCE_COST
            SUM(DECODE(COST_ELEMENT_ID,4,ITEM_COST,0)),                               -- OUTSIDE_PROCESSING_COST
            SUM(DECODE(COST_ELEMENT_ID,5,ITEM_COST,0)),                               -- OVERHEAD_COST
            SUM(DECODE(LEVEL_TYPE,2,ITEM_COST,0)),                                    -- PL_ITEM_COST
            SUM(DECODE(LEVEL_TYPE,1,ITEM_COST,0)),                                    -- TL_ITEM_COST
            SUM(ITEM_COST),                                                           -- ITEM_COST
            DECODE(l_value_change_flag, 1, SUM(ITEM_COST), cpic.begin_item_cost),
            SUM(ITEM_BUY_COST),                                                       -- ITEM_BUY_COST
            SUM(ITEM_MAKE_COST),                                                      -- ITEM_MAKE_COST
            SUM(DECODE(COST_ELEMENT_ID,2,DECODE(LEVEL_TYPE,2,ITEM_COST,0),ITEM_COST)),-- UNBURDENED_COST
            SUM(DECODE(COST_ELEMENT_ID,2,DECODE(LEVEL_TYPE,1,ITEM_COST,0),0))         -- BURDEN_COST
          FROM CST_PAC_ITEM_COST_DETAILS
          WHERE COST_LAYER_ID = i_cost_layer_id
          GROUP BY COST_LAYER_ID)
      WHERE cpic.cost_layer_id = i_cost_layer_id
      AND EXISTS
            (SELECT 'there is detail cost'
             FROM   cst_pac_item_cost_details cpicd
             WHERE  cpicd.cost_layer_id = i_cost_layer_id);
Line: 3110

     USING      (SELECT   i_pac_period_id pac_period_id,
                          i_cost_group_id cost_group_id,
                          i_item_id item_id,
                          i_cost_layer_id cost_layer_id,
                          i_qty_layer_id qty_layer_id,
                          mpacd.cost_element_id cost_element_id,
                          mpacd.level_type level_type,
                          2 txn_category,  -- txn category = 2 for PCU new cost and % change
                          0 category_quantity,  -- quantity = 0 for cost update transactions
                          (l_onhand * (mpacd.actual_cost - mpacd.prior_cost)) category_balance,
                          (l_onhand * mpacd.actual_cost) period_balance,
                          l_onhand period_quantity,
                          mpacd.actual_cost
                  FROM    mtl_pac_actual_cost_details mpacd
                  WHERE   mpacd.cost_layer_id = i_cost_layer_id
                  AND     mpacd.pac_period_id = i_pac_period_id
                  AND     mpacd.cost_group_id = i_cost_group_id
                  AND     mpacd.transaction_id = i_txn_id) mpacd
      ON	  (       cppb.pac_period_id = mpacd.pac_period_id
                  AND     cppb.cost_group_id = mpacd.cost_group_id
                  AND     cppb.cost_layer_id = mpacd.cost_layer_id
                  AND     cppb.cost_element_id = mpacd.cost_element_id
                  AND     cppb.level_type = mpacd.level_type
                  AND     cppb.txn_category = mpacd.txn_category)
      WHEN NOT MATCHED THEN
                  INSERT  (PAC_PERIOD_ID,
                          COST_GROUP_ID,
                          INVENTORY_ITEM_ID,
                          COST_LAYER_ID,
                          QUANTITY_LAYER_ID,
                          COST_ELEMENT_ID,
                          LEVEL_TYPE,
                          TXN_CATEGORY,
                          TXN_CATEGORY_QTY,
                          TXN_CATEGORY_VALUE,
                          PERIOD_BALANCE,
                          PERIOD_QUANTITY,
                          PERIODIC_COST,
                          VARIANCE_AMOUNT,
                          LAST_UPDATE_DATE,
                          LAST_UPDATED_BY,
                          LAST_UPDATE_LOGIN,
                          CREATED_BY,
                          CREATION_DATE,
                          REQUEST_ID,
                          PROGRAM_APPLICATION_ID,
                          PROGRAM_ID,
                          PROGRAM_UPDATE_DATE)
                  VALUES  (mpacd.pac_period_id,
                          mpacd.cost_group_id,
                          mpacd.item_id,
                          mpacd.cost_layer_id,
                          mpacd.qty_layer_id,
                          mpacd.cost_element_id,
                          mpacd.level_type,
                          mpacd.txn_category,
                          mpacd.category_quantity,
                          mpacd.category_balance,
                          mpacd.period_balance,
                          mpacd.period_quantity,
                          mpacd.actual_cost,
                          0,
                          sysdate,
                          i_user_id,
                          i_login_id,
                          i_user_id,
                          sysdate,
                          i_req_id,
                          i_prg_appl_id,
                          i_prg_id,
                          sysdate)
             WHEN MATCHED THEN
                  UPDATE  SET
                          txn_category_qty = mpacd.category_quantity,
                          txn_category_value = txn_category_value + mpacd.category_balance,
                          period_quantity = mpacd.period_quantity,
                          period_balance = mpacd.period_balance,
                          periodic_cost = mpacd.actual_cost,
                          last_update_date = sysdate,
                          last_updated_by = i_user_id,
                          last_update_login = i_login_id,
                          request_id = i_req_id,
                          program_application_id = i_prg_appl_id,
                          program_id = i_prg_id,
                          program_update_date = sysdate;
Line: 3200

     (select actual_cost, cost_element_id, level_type
     from  mtl_pac_actual_cost_details mpacd
     where mpacd.cost_layer_id = i_cost_layer_id
     and   mpacd.cost_group_id = i_cost_group_id
     and   mpacd.transaction_id = i_txn_id)
     LOOP
        DECLARE
           l_index NUMBER;
Line: 3226

           IF (l_index = -1) THEN	/* item-cost_element-level_type combination not found: Insert*/
              l_index := CSTPPINV.l_item_id_tbl.COUNT + 1;
Line: 3240

           ELSE					/* item-cost_element-level_type combination found: Update*/
              CSTPPINV.l_item_balance_tbl(l_index) := x.actual_cost + CSTPPINV.l_item_balance_tbl(l_index);
Line: 3247

 * For a value change periodic update cost transaction,
 * update the primary_quantity in mmt to the layer quantity from cpql.
 * Prior to this, the quantity at the beginning of the period was being
 * used and this caused errors in the distributions.
 * The layer qty can be obtained from cst_pac_quantity_layers
 */
    l_stmt_num := 120;
Line: 3254

    UPDATE mtl_material_transactions mmt
    SET --primary_quantity  = l_onhand,
        /* Bug 2288994. Update periodic_primary_quantity also */
        periodic_primary_quantity = l_onhand
    WHERE mmt.value_change IS NOT NULL
    AND mmt.transaction_id = i_txn_id;
Line: 3260

    fnd_file.put_line(fnd_file.log,'Updated MMT with primary_quantity: ' || to_char(l_onhand));
Line: 3271

        'Exiting CSTPPWAC.periodic_cost_update with '||
        'O_Err_Num = '||O_Err_Num||','||
        'O_Err_Code = '||O_Err_Code||','||
        'O_Err_Msg = '||O_Err_Msg
      );
Line: 3294

END periodic_cost_update;
Line: 3301

PROCEDURE insert_txn_history (
  I_PAC_PERIOD_ID       IN      NUMBER,
  I_COST_GROUP_ID       IN      NUMBER,
  I_TXN_ID              IN      NUMBER,
  I_PROCESS_GROUP       IN      NUMBER,
  I_ITEM_ID             IN      NUMBER,
  I_QTY_LAYER_ID        IN        NUMBER,
  I_TXN_QTY             IN      NUMBER,
  I_USER_ID             IN      NUMBER,
  I_LOGIN_ID            IN      NUMBER,
  I_REQ_ID              IN      NUMBER,
  I_PRG_APPL_ID         IN      NUMBER,
  I_PRG_ID              IN      NUMBER,
  I_TXN_CATEGORY        IN      NUMBER,
  O_Err_Num             OUT NOCOPY     NUMBER,
  O_Err_Code            OUT NOCOPY     VARCHAR2,
  O_Err_Msg             OUT NOCOPY     VARCHAR2
) IS
  l_stmt_num            NUMBER;
Line: 3322

    l_module       CONSTANT VARCHAR2(90) := 'cst.plsql.CSTPPWAC.insert_txn_history';
Line: 3339

        'Entering CSTPPWAC.insert_txn_history with '||
        'I_PAC_PERIOD_ID = '||I_PAC_PERIOD_ID||','||
        'I_COST_GROUP_ID = '||I_COST_GROUP_ID||','||
        'I_TXN_ID = '||I_TXN_ID||','||
        'I_PROCESS_GROUP = '||I_PROCESS_GROUP||','||
        'I_ITEM_ID = '||I_ITEM_ID||','||
        'I_QTY_LAYER_ID = '||I_QTY_LAYER_ID||','||
        'I_TXN_QTY = '||I_TXN_QTY||','||
        'I_USER_ID = '||I_USER_ID||','||
        'I_LOGIN_ID = '||I_LOGIN_ID||','||
        'I_REQ_ID = '||I_REQ_ID||','||
        'I_PRG_APPL_ID = '||I_PRG_APPL_ID||','||
        'I_PRG_ID = '||I_PRG_ID||','||
        'I_TXN_CATEGORY = '||I_TXN_CATEGORY
      );
Line: 3358

  INSERT INTO cst_pc_txn_history (
    pac_period_id,
    cost_group_id,
    transaction_id,
    process_seq,
    process_group,
    inventory_item_id,
    txn_master_qty,
    prior_costed_master_qty,
    txn_category,
    last_update_date,
    last_updated_by,
    creation_date,
    created_by,
    request_id,
    program_application_id,
    program_id,
    program_update_date,
    last_update_login)
  (SELECT
    i_pac_period_id,
    i_cost_group_id,
    i_txn_id,
    cst_pc_txn_history_s.nextval,
    i_process_group,
    i_item_id,
    i_txn_qty,
    layer_quantity,
    i_txn_category,
    sysdate,
    i_user_id,
    sysdate,
    i_user_id,
    i_req_id,
    i_prg_appl_id,
    i_prg_id,
    SYSDATE,
    i_login_id
  FROM
    cst_pac_quantity_layers
  WHERE quantity_layer_id = i_qty_layer_id);
Line: 3407

        'Exiting CSTPPWAC.insert_txn_history with '||
        'O_Err_Num = '||O_Err_Num||','||
        'O_Err_Code = '||O_Err_Code||','||
        'O_Err_Msg = '||O_Err_Msg
      );
Line: 3430

END insert_txn_history;
Line: 3440

PROCEDURE update_txn_history (
  I_PAC_PERIOD_ID       IN      NUMBER,
  I_COST_GROUP_ID       IN      NUMBER,
  I_TXN_ID              IN      NUMBER,
  I_USER_ID             IN      NUMBER,
  I_LOGIN_ID            IN      NUMBER,
  I_REQ_ID              IN      NUMBER,
  I_PRG_APPL_ID         IN      NUMBER,
  I_PRG_ID              IN      NUMBER,
  O_Err_Num             OUT NOCOPY     NUMBER,
  O_Err_Code            OUT NOCOPY     VARCHAR2,
  O_Err_Msg             OUT NOCOPY     VARCHAR2
) IS
  l_stmt_num            NUMBER;
Line: 3456

    l_module       CONSTANT VARCHAR2(90) := 'cst.plsql.CSTPPWAC.update_txn_history';
Line: 3473

        'Entering CSTPPWAC.update_txn_history with '||
        'I_PAC_PERIOD_ID = '||I_PAC_PERIOD_ID||','||
        'I_COST_GROUP_ID = '||I_COST_GROUP_ID||','||
        'I_TXN_ID = '||I_TXN_ID||','||
        'I_USER_ID = '||I_USER_ID||','||
        'I_LOGIN_ID = '||I_LOGIN_ID||','||
        'I_REQ_ID = '||I_REQ_ID||','||
        'I_PRG_APPL_ID = '||I_PRG_APPL_ID||','||
        'I_PRG_ID = '||I_PRG_ID
      );
Line: 3487

  UPDATE cst_pc_txn_history
    SET( actual_cost,
         new_cost,
         prior_cost )=
    (SELECT
      sum(actual_cost),
      sum(new_cost),
      sum(prior_cost)
    FROM
      mtl_pac_actual_cost_details
    WHERE pac_period_id = i_pac_period_id
      and cost_group_id = i_cost_group_id
      and transaction_id = i_txn_id)
  WHERE pac_period_id = i_pac_period_id
    and cost_group_id = i_cost_group_id
    and transaction_id = i_txn_id;
Line: 3511

        'Exiting CSTPPWAC.update_txn_history with '||
        'O_Err_Num = '||O_Err_Num||','||
        'O_Err_Code = '||O_Err_Code||','||
        'O_Err_Msg = '||O_Err_Msg
      );
Line: 3534

END update_txn_history;
Line: 3540

PROCEDURE insert_into_cppb(i_pac_period_id  IN  NUMBER,
                           i_cost_group_id  IN  NUMBER,
                           i_txn_category   IN  NUMBER,
                           i_user_id        IN  NUMBER,
                           i_login_id       IN  NUMBER,
                           i_request_id     IN  NUMBER,
                           i_prog_id        IN  NUMBER,
                           i_prog_appl_id   IN  NUMBER,
                           o_err_num        OUT NOCOPY NUMBER,
                           o_err_code       OUT NOCOPY VARCHAR2,
                           o_err_msg        OUT NOCOPY VARCHAR2)
IS
  l_stmt_num  NUMBER;
Line: 3560

    l_module       CONSTANT VARCHAR2(90) := 'cst.plsql.CSTPPWAC.insert_into_cppb';
Line: 3577

        'Entering CSTPPWAC.insert_into_cppb with '||
        'i_cost_group_id = '||i_cost_group_id||','||
        'i_txn_category = '||i_txn_category||','||
        'i_user_id = '||i_user_id||','||
        'i_login_id = '||i_login_id||','||
        'i_request_id = '||i_request_id||','||
        'i_prog_id = '||i_prog_id||','||
        'i_prog_appl_id = '||i_prog_appl_id
      );
Line: 3596

        SELECT cpic.total_layer_quantity,
               cpic.buy_quantity,
               cpic.make_quantity,
               cpic.issue_quantity,
               0             /* category_qty = 0 for cost updates */
        INTO   l_new_qty_tbl (l_index),
               l_new_buy_qty_tbl (l_index),
               l_new_make_qty_tbl (l_index),
               l_new_issue_qty_tbl (l_index),
               l_category_qty_tbl (l_index)
        FROM   cst_pac_item_costs cpic
        WHERE  cpic.cost_layer_id = CSTPPINV.l_cost_layer_id_tbl (l_index);
Line: 3609

        SELECT cpic.total_layer_quantity + CSTPPINV.l_item_quantity_tbl (CSTPPINV.l_item_id_tbl(l_index)),
               cpic.buy_quantity +  CSTPPINV.l_buy_quantity_tbl (CSTPPINV.l_item_id_tbl(l_index)),
               cpic.make_quantity + CSTPPINV.l_make_quantity_tbl (CSTPPINV.l_item_id_tbl(l_index)),
               cpic.issue_quantity + CSTPPINV.l_issue_quantity_tbl (CSTPPINV.l_item_id_tbl(l_index)),
               CSTPPINV.l_item_quantity_tbl (CSTPPINV.l_item_id_tbl(l_index))
        INTO   l_new_qty_tbl (l_index),
               l_new_buy_qty_tbl (l_index),
               l_new_make_qty_tbl (l_index),
               l_new_issue_qty_tbl (l_index),
               l_category_qty_tbl (l_index)
        FROM   cst_pac_item_costs cpic
        WHERE  cpic.cost_layer_id = CSTPPINV.l_cost_layer_id_tbl (l_index);
Line: 3628

  USING      (SELECT   i_pac_period_id pac_period_id,
                       i_cost_group_id cost_group_id,
                       CSTPPINV.l_item_id_tbl(l_index) item_id,
                       CSTPPINV.l_cost_layer_id_tbl(l_index) cost_layer_id,
                       CSTPPINV.l_qty_layer_id_tbl(l_index) qty_layer_id,
                       CSTPPINV.l_cost_element_id_tbl(l_index) cost_element_id,
                       CSTPPINV.l_level_type_tbl(l_index) level_type,
                       CSTPPINV.l_txn_category_tbl(l_index) txn_category,
                       l_category_qty_tbl (l_index) category_quantity,
                       CSTPPINV.l_item_balance_tbl(l_index) category_balance
               FROM    dual) temp
   ON		(      cppb.pac_period_id = temp.pac_period_id
               AND     cppb.cost_layer_id = temp.cost_layer_id
               AND     cppb.cost_element_id = temp.cost_element_id
               AND     cppb.level_type = temp.level_type
               AND     cppb.txn_category = temp.txn_category)
   WHEN NOT MATCHED THEN
               INSERT  (pac_period_id,
                       cost_group_id,
                       inventory_item_id,
                       cost_layer_id,
                       quantity_layer_id,
                       cost_element_id,
                       level_type,
                       txn_category,
                       txn_category_qty,
                       txn_category_value,
                       last_update_date,
                       last_updated_by,
                       last_update_login,
                       created_by,
                       creation_date,
                       request_id,
                       program_application_id,
                       program_id,
                       program_update_date)
               VALUES  (temp.pac_period_id,
                       temp.cost_group_id,
                       temp.item_id,
                       temp.cost_layer_id,
                       temp.qty_layer_id,
                       temp.cost_element_id,
                       temp.level_type,
                       temp.txn_category,
                       temp.category_quantity,
                       temp.category_balance,
                       sysdate,
                       i_user_id,
                       i_login_id,
                       i_user_id,
                       sysdate,
                       i_request_id,
                       i_prog_appl_id,
                       i_prog_id,
                       sysdate)
          WHEN MATCHED THEN
               UPDATE  SET
                       txn_category_qty = txn_category_qty + temp.category_quantity,
                       txn_category_value = txn_category_value + temp.category_balance,
                       last_update_date = sysdate,
                       last_updated_by = i_user_id,
                       last_update_login = i_login_id,
                       request_id = i_request_id,
                       program_application_id = i_prog_appl_id,
                       program_id = i_prog_id,
                       program_update_date = sysdate;
Line: 3698

  UPDATE CST_PAC_ITEM_COST_DETAILS cpicd
  SET    item_balance = nvl(item_balance, 0) + CSTPPINV.l_item_balance_tbl (l_index),
         make_balance = nvl(make_balance, 0) + CSTPPINV.l_make_balance_tbl (l_index),
         buy_balance  = nvl(buy_balance, 0) + CSTPPINV.l_buy_balance_tbl (l_index),
         last_update_date = sysdate,
         last_updated_by = i_user_id,
         last_update_login = i_login_id,
         request_id = i_request_id,
         program_application_id = i_prog_appl_id,
         program_id = i_prog_id,
         program_update_date = sysdate
  WHERE  cpicd.cost_layer_id = CSTPPINV.l_cost_layer_id_tbl (l_index)
  AND    cpicd.cost_element_id = CSTPPINV.l_cost_element_id_tbl (l_index)
  AND    cpicd.level_type = CSTPPINV.l_level_type_tbl (l_index);
Line: 3716

  INSERT  INTO CST_PAC_ITEM_COST_DETAILS cpicd
               (cost_layer_id,
                cost_element_id,
                level_type,
                last_update_date,
                last_updated_by,
                creation_date,
                created_by,
                last_update_login,
                request_id,
                program_application_id,
                program_id,
                program_update_date,
                item_cost,
                item_buy_cost,
                item_make_cost,
                item_balance,
                make_balance,
                buy_balance)
                (SELECT CSTPPINV.l_cost_layer_id_tbl (l_index),
                        CSTPPINV.l_cost_element_id_tbl (l_index),
                        CSTPPINV.l_level_type_tbl (l_index),
                        sysdate,
                        i_user_id,
                        sysdate,
                        i_user_id,
                        i_login_id,
                        i_request_id,
                        i_prog_appl_id,
                        i_prog_id,
                        sysdate,
                        0,
                        0,
                        0,
                        CSTPPINV.l_item_balance_tbl (l_index),
                        CSTPPINV.l_make_balance_tbl (l_index),
                        CSTPPINV.l_buy_balance_tbl (l_index)
                FROM    dual
                WHERE   NOT EXISTS (SELECT 1
                                    FROM   cst_pac_item_cost_details cpicd1
                                    WHERE  cpicd1.cost_layer_id = CSTPPINV.l_cost_layer_id_tbl (l_index)
                                    AND    cpicd1.cost_element_id = CSTPPINV.l_cost_element_id_tbl (l_index)
                                    AND    cpicd1.level_type = CSTPPINV.l_level_type_tbl (l_index)));
Line: 3762

  /* update quantities and balance in CPIC */
  FORALL l_index IN CSTPPINV.l_item_id_tbl.FIRST..CSTPPINV.l_item_id_tbl.LAST
  UPDATE cst_pac_item_costs cpic
  SET   total_layer_quantity   = l_new_qty_tbl (l_index),
        issue_quantity         = l_new_issue_qty_tbl (l_index),
        buy_quantity           = l_new_buy_qty_tbl(l_index),
        make_quantity          = l_new_make_qty_tbl (l_index),
        last_update_date       = sysdate,
        last_updated_by        = i_user_id,
        request_id             = i_request_id,
        program_application_id = i_prog_appl_id,
        program_id             = i_prog_id,
        program_update_date    = sysdate,
        last_update_login      = i_login_id
  WHERE cpic.cost_layer_id     = CSTPPINV.l_cost_layer_id_tbl (l_index);
Line: 3779

  /* Update CPQL quantity */
  FORALL l_index IN CSTPPINV.l_item_id_tbl.FIRST..CSTPPINV.l_item_id_tbl.LAST
  UPDATE CST_PAC_QUANTITY_LAYERS cpql
  SET    (last_updated_by,
          last_update_date,
          last_update_login,
          request_id,
          program_application_id,
          program_id,
          program_update_date,
          layer_quantity) =
          (SELECT i_user_id,
                  sysdate,
                  i_login_id,
                  i_request_id,
                  i_prog_appl_id,
                  i_prog_id,
                  sysdate,
                  l_new_qty_tbl (l_index)
            FROM  sys.dual)
           WHERE  cpql.quantity_layer_id = CSTPPINV.l_qty_layer_id_tbl (l_index)
           AND EXISTS
          (SELECT 'there is a layer'
           FROM   cst_pac_quantity_layers cpql
           WHERE  cpql.quantity_layer_id = CSTPPINV.l_qty_layer_id_tbl (l_index));
Line: 3807

     CSTPPINV.l_item_id_tbl.DELETE;
Line: 3808

     CSTPPINV.l_cost_layer_id_tbl.DELETE;
Line: 3809

     CSTPPINV.l_qty_layer_id_tbl.DELETE;
Line: 3811

     CSTPPINV.l_cost_element_id_tbl.DELETE;
Line: 3812

     CSTPPINV.l_level_type_tbl.DELETE;
Line: 3813

     CSTPPINV.l_txn_category_tbl.DELETE;
Line: 3815

     CSTPPINV.l_item_balance_tbl.DELETE;
Line: 3816

     CSTPPINV.l_make_balance_tbl.DELETE;
Line: 3817

     CSTPPINV.l_buy_balance_tbl.DELETE;
Line: 3819

     CSTPPINV.l_item_quantity_tbl.DELETE;
Line: 3820

     CSTPPINV.l_make_quantity_tbl.DELETE;
Line: 3821

     CSTPPINV.l_buy_quantity_tbl.DELETE;
Line: 3822

     CSTPPINV.l_issue_quantity_tbl.DELETE;
Line: 3824

     CSTPPINV.l_item_start_index_tbl.DELETE;
Line: 3825

     CSTPPINV.l_item_end_index_tbl.DELETE;
Line: 3834

        'Exiting CSTPPWAC.insert_into_cppb with '||
        'o_err_num = '||o_err_num||','||
        'o_err_code = '||o_err_code||','||
        'o_err_msg = '||o_err_msg
      );
Line: 3857

END insert_into_cppb;
Line: 3924

      SELECT  distinct cost_layer_id, mpacd.transaction_id, mpacd.txn_category
      BULK    COLLECT
      INTO    l_cost_layer_id_tbl, l_last_txn_id_tbl, l_txn_category_tbl
      FROM    mtl_pac_actual_cost_details mpacd
      WHERE   mpacd.transaction_id = (SELECT max(mpacd1.transaction_id)
                                      FROM   mtl_pac_actual_cost_details mpacd1
                                      WHERE  mpacd1.txn_category = (SELECT max(txn_category)
                                                                      FROM cst_pac_period_balances cppb
                                                                     WHERE cppb.pac_period_id = i_pac_period_id
                                                                       AND cppb.cost_group_id = i_cost_group_id
                                                                       AND cppb.cost_layer_id = mpacd.cost_layer_id)
                                      AND    mpacd1.inventory_item_id = mpacd.inventory_item_id
                                      AND    mpacd1.pac_period_id     = i_pac_period_id
                                      AND    mpacd1.cost_group_id     = i_cost_group_id)
      AND     mpacd.cost_group_id = i_cost_group_id
      AND     mpacd.pac_period_id = i_pac_period_id
      AND     mpacd.inventory_item_id = i_item_id
      AND     NOT EXISTS (SELECT 1
                          FROM   cst_pac_low_level_codes cpllc
                          WHERE  cpllc.inventory_item_id = mpacd.inventory_item_id
                          AND    cpllc.pac_period_id = i_pac_period_id
                          AND    cpllc.cost_group_id = i_cost_group_id);
Line: 3953

      SELECT  max(txn_category)
      INTO    l_max_txn_category
      FROM    mtl_pac_actual_cost_details mpacd
      WHERE   mpacd.pac_period_id = i_pac_period_id
      AND     mpacd.cost_group_id = i_cost_group_id
      AND     mpacd.inventory_item_id = i_item_id
      AND     EXISTS (SELECT  1
                      FROM    cst_pac_low_level_codes cpllc
                      WHERE   cpllc.cost_group_id = i_cost_group_id
                      AND     cpllc.pac_period_id = i_pac_period_id
                      AND     cpllc.inventory_item_id = mpacd.inventory_item_id
                      AND     cpllc.low_level_code = i_low_level_code);
Line: 3976

         SELECT  distinct cost_layer_id, mpacd.transaction_id, mpacd.txn_category
         BULK    COLLECT
         INTO    l_cost_layer_id_tbl, l_last_txn_id_tbl, l_txn_category_tbl
         FROM    mtl_pac_actual_cost_details mpacd
         WHERE   mpacd.transaction_id = (SELECT max(mpacd1.transaction_id)
                                         FROM   mtl_pac_actual_cost_details mpacd1
                                         WHERE  mpacd1.txn_category = (SELECT max(txn_category)
                                                                         FROM cst_pac_period_balances cppb
                                                                        WHERE cppb.pac_period_id = i_pac_period_id
                                                                          AND cppb.cost_group_id = i_cost_group_id
                                                                          AND cppb.cost_layer_id = mpacd.cost_layer_id)
                                         AND    mpacd1.txn_category      = l_max_txn_category
                                         AND    mpacd1.inventory_item_id = mpacd.inventory_item_id
                                         AND    mpacd1.pac_period_id     = i_pac_period_id
                                         AND    mpacd1.cost_group_id     = i_cost_group_id)
         AND     mpacd.cost_group_id = i_cost_group_id
         AND     mpacd.pac_period_id = i_pac_period_id
         AND     mpacd.inventory_item_id = i_item_id
         AND     EXISTS (SELECT 1
                         FROM   cst_pac_low_level_codes cpllc
                         WHERE  cpllc.inventory_item_id = mpacd.inventory_item_id
                         AND    cpllc.low_level_code = i_low_level_code
                         AND    cpllc.pac_period_id = i_pac_period_id
                         AND    cpllc.cost_group_id = i_cost_group_id);
Line: 4004

         SELECT  distinct cost_layer_id, mpacd.transaction_id, mpacd.txn_category
         BULK    COLLECT
         INTO    l_cost_layer_id_tbl, l_last_txn_id_tbl, l_txn_category_tbl
         FROM    mtl_pac_actual_cost_details mpacd
         WHERE   mpacd.transaction_id = (SELECT max(mpacd1.transaction_id)
                                         FROM   mtl_pac_actual_cost_details mpacd1
                                         WHERE  mpacd1.txn_category = (SELECT max(txn_category)
                                                                         FROM cst_pac_period_balances cppb
                                                                        WHERE cppb.pac_period_id = i_pac_period_id
                                                                          AND cppb.cost_group_id = i_cost_group_id
                                                                          AND cppb.cost_layer_id = mpacd.cost_layer_id)
                                         AND    mpacd1.inventory_item_id = mpacd.inventory_item_id
                                         AND    mpacd1.pac_period_id = i_pac_period_id
                                         AND    mpacd1.cost_group_id = i_cost_group_id)
         AND     mpacd.cost_group_id = i_cost_group_id
         AND     mpacd.pac_period_id = i_pac_period_id
         AND     mpacd.inventory_item_id = i_item_id
         AND     EXISTS (SELECT 1
                         FROM   cst_pac_low_level_codes cpllc
                         WHERE  cpllc.inventory_item_id = mpacd.inventory_item_id
                         AND    cpllc.low_level_code = i_low_level_code
                         AND    cpllc.pac_period_id = i_pac_period_id
                         AND    cpllc.cost_group_id = i_cost_group_id);
Line: 4033

   processed for that item. Insert rows into mpacd for missing cost elements
  ****************************************************************************/

  l_stmt_num := 35;
Line: 4038

  UPDATE mtl_pac_actual_cost_details mpacd
  SET    variance_amount = (SELECT decode (sign(cpic.total_layer_quantity),
                                           0, cpicd.item_balance,
                                           (-1 * sign(cpicd.item_balance)), cpicd.item_balance,
                                           0)
                            FROM   cst_pac_item_costs cpic,
                                   cst_pac_item_cost_details cpicd
                            WHERE  cpic.cost_layer_id = cpicd.cost_layer_id
                            AND    cpicd.cost_layer_id = l_cost_layer_id_tbl (l_index)
                            AND    cpicd.cost_element_id = mpacd.cost_element_id
                            AND    cpicd.level_type = mpacd.level_type),
         last_update_date = sysdate,
         last_updated_by = i_user_id,
         last_update_login = i_login_id,
         request_id = i_request_id,
         program_application_id = i_prog_appl_id,
         program_id = i_prog_id,
         program_update_date = sysdate
  WHERE  transaction_id = l_last_txn_id_tbl (l_index)
  AND    mpacd.cost_group_id = i_cost_group_id
  AND    mpacd.pac_period_id = i_pac_period_id
  AND    mpacd.cost_layer_id = l_cost_layer_id_tbl(l_index)
  AND    (cost_element_id, level_type) = (SELECT cost_element_id, level_type
                                          FROM   cst_pac_item_cost_details cpicd
                                          WHERE  cpicd.cost_layer_id = l_cost_layer_id_tbl (l_index)
                                          AND    cpicd.cost_element_id = mpacd.cost_element_id
                                          AND    cpicd.level_type = mpacd.level_type);
Line: 4068

  INSERT INTO mtl_pac_actual_cost_details mpacd
          (COST_GROUP_ID,
          TRANSACTION_ID,
          PAC_PERIOD_ID,
          COST_TYPE_ID,
          COST_ELEMENT_ID,
          LEVEL_TYPE,
          INVENTORY_ITEM_ID,
          COST_LAYER_ID,
          ACTUAL_COST,
          USER_ENTERED,
          INSERTION_FLAG,
          TRANSACTION_COSTED_DATE,
          LAST_UPDATE_DATE,
          LAST_UPDATED_BY,
          CREATION_DATE,
          CREATED_BY,
          REQUEST_ID,
          PROGRAM_APPLICATION_ID,
          PROGRAM_ID,
          PROGRAM_UPDATE_DATE,
          LAST_UPDATE_LOGIN,
          VARIANCE_AMOUNT,
	  TXN_CATEGORY)
          (SELECT  i_cost_group_id,
                   l_last_txn_id_tbl (l_index),
                   i_pac_period_id,
                   i_cost_type_id,
                   cpicd.cost_element_id,
                   cpicd.level_type,
                   cpic.inventory_item_id,
                   cpic.cost_layer_id,
                   0,
                   'N',
                   'N',
                   sysdate,
                   SYSDATE,
                   i_user_id,
                   SYSDATE,
                   i_user_id,
                   i_request_id,
                   i_prog_appl_id,
                   i_prog_id,
                   SYSDATE,
                   i_login_id,
                   decode (sign(cpic.total_layer_quantity),
                           0, cpicd.item_balance,
                           (-1 * sign(cpicd.item_balance)), cpicd.item_balance,
                           0),
		   l_txn_category_tbl(l_index)
           FROM    cst_pac_item_cost_details cpicd,
                   cst_pac_item_costs cpic
           WHERE   cpicd.cost_layer_id = cpic.cost_layer_id
           AND     cpicd.cost_layer_id = l_cost_layer_id_tbl (l_index)
           AND     NOT EXISTS (SELECT 1
                               FROM   mtl_pac_actual_cost_details mpacd1
                               WHERE  mpacd1.transaction_id = l_last_txn_id_tbl (l_index)
                               AND    mpacd1.cost_layer_id = cpicd.cost_layer_id
                               AND    mpacd1.cost_element_id = cpicd.cost_element_id
                               AND    mpacd1.level_type = cpicd.level_type)
                             );
Line: 4133

       UPDATE cst_pac_item_cost_details cpicd
       SET    (last_update_date,
              last_updated_by,
              last_update_login,
              request_id,
              program_application_id,
              program_id,
              program_update_date,
              item_cost,
              item_buy_cost,
              item_make_cost,
              item_balance,
              buy_balance,
              make_balance) =
              (SELECT sysdate,
                      i_user_id,
                      i_login_id,
                      i_request_id,
                      i_prog_appl_id,
                      i_prog_id,
                      sysdate,
                      decode (sign(cpic.total_layer_quantity),
                              0, cpicd.item_cost,
                              (-1 * sign(cpicd.item_balance)), 0,
                              cpicd.item_balance / cpic.total_layer_quantity),
                      decode (sign(cpic.total_layer_quantity),
                              0, cpicd.item_buy_cost,
                              (-1 * sign(cpicd.item_balance)), 0,
                              decode (cpic.buy_quantity,
                                      0, 0,
                                      cpicd.buy_balance / cpic.buy_quantity)),
                      decode (sign(cpic.total_layer_quantity),
                              0, cpicd.item_make_cost,
                              (-1 * sign(cpicd.item_balance)), 0,
                              decode (cpic.make_quantity,
                                      0, 0,
                                      cpicd.make_balance / cpic.make_quantity)),
                      decode (sign (cpic.total_layer_quantity),
                              0, 0,
                              (-1 * sign(cpicd.item_balance)), 0,
                              cpicd.item_balance),
                      decode (sign (cpic.total_layer_quantity),
                              0, 0,
                              (-1 * sign(cpicd.item_balance)), 0,
                              cpicd.buy_balance),
                      decode (sign (cpic.total_layer_quantity),
                              0, 0,
                              (-1 * sign(cpicd.item_balance)), 0,
                              cpicd.make_balance)
                     FROM  cst_pac_item_costs cpic
                     WHERE cpic.cost_layer_id = cpicd.cost_layer_id)
      WHERE  cpicd.cost_layer_id IN ( SELECT cost_layer_id
				      FROM cst_pac_item_costs
				      WHERE inventory_item_id = i_item_id
					AND cost_group_id = i_cost_group_id
			 	        AND pac_period_id = i_pac_period_id)
      AND    EXISTS (SELECT 1
                     FROM   cst_pac_period_balances cppb
                     WHERE  cppb.pac_period_id = i_pac_period_id
                     AND    cppb.cost_group_id = i_cost_group_id
                     AND    cppb.cost_layer_id = cpicd.cost_layer_id
                     AND    cppb.cost_element_id = cpicd.cost_element_id
                     AND    cppb.level_type = cpicd.level_type
                     AND    cppb.inventory_item_id = i_item_id)
      AND    NOT EXISTS (SELECT 1
                         FROM   cst_pac_low_level_codes cpllc
                         WHERE  cpllc.pac_period_id = i_pac_period_id
                         AND    cpllc.cost_group_id = i_cost_group_id
                         AND    cpllc.inventory_item_id = i_item_id);
Line: 4204

       UPDATE cst_pac_item_costs cpic
        SET (last_updated_by,
             last_update_date,
             last_update_login,
             request_id,
             program_application_id,
             program_id,
             program_update_date,
             pl_material,
             pl_material_overhead,
             pl_resource,
             pl_outside_processing,
             pl_overhead,
             tl_material,
             tl_material_overhead,
             tl_resource,
             tl_outside_processing,
             tl_overhead,
             material_cost,
             material_overhead_cost,
             resource_cost,
             outside_processing_cost,
             overhead_cost,
             pl_item_cost,
             tl_item_cost,
             item_cost,
             item_buy_cost,
             item_make_cost,
             unburdened_cost,
             burden_cost) =
            (SELECT i_user_id,
                    sysdate,
                    i_login_id,
                    i_request_id,
                    i_prog_appl_id,
                    i_prog_id,
                    sysdate,
                    pl_material,
                    pl_material_overhead,
                    pl_resource,
                    pl_outside_processing,
                    pl_overhead,
                    tl_material,
                    tl_material_overhead,
                    tl_resource,
                    tl_outside_processing,
                    tl_overhead,
                    material_cost,
                    material_overhead_cost,
                    resource_cost,
                    outside_processing_cost,
                    overhead_cost,
                    pl_item_cost,
                    tl_item_cost,
                    item_cost,
                    item_buy_cost,
                    item_make_cost,
                    unburdened_cost,
                    burden_cost
              FROM  cst_pac_item_costs_v v
             WHERE  v.cost_layer_id = cpic.cost_layer_id)
        WHERE  cpic.inventory_item_id = i_item_id
	AND    cpic.cost_group_id = i_cost_group_id
	AND    cpic.pac_period_id = i_pac_period_id
        AND    EXISTS (SELECT 1
                      FROM   cst_pac_period_balances cppb
                      WHERE  cppb.pac_period_id = i_pac_period_id
                      AND    cppb.cost_group_id = i_cost_group_id
                      AND    cppb.cost_layer_id = cpic.cost_layer_id)
        AND NOT EXISTS (SELECT 1
                        FROM   cst_pac_low_level_codes cpllc
                        WHERE  cpllc.inventory_item_id = cpic.inventory_item_id
                        AND    cpllc.pac_period_id = i_pac_period_id
                        AND    cpllc.cost_group_id = i_cost_group_id)
        AND EXISTS
             (SELECT 'there is detail cost'
              FROM   cst_pac_item_cost_details cpicd
              WHERE  cpicd.cost_layer_id = cpic.cost_layer_id);
Line: 4286

       UPDATE cst_pac_item_cost_details cpicd
       SET    (last_update_date,
              last_updated_by,
              last_update_login,
              request_id,
              program_application_id,
              program_id,
              program_update_date,
              item_cost,
              item_buy_cost,
              item_make_cost,
              item_balance,
              buy_balance,
              make_balance) =
              (SELECT sysdate,
                      i_user_id,
                      i_login_id,
                      i_request_id,
                      i_prog_appl_id,
                      i_prog_id,
                      sysdate,
                      decode (sign(cpic.total_layer_quantity),
                              0, cpicd.item_cost,
                              (-1 * sign(cpicd.item_balance)), 0,
                              cpicd.item_balance / cpic.total_layer_quantity),
                      decode (sign(cpic.total_layer_quantity),
                              0, cpicd.item_buy_cost,
                              (-1 * sign(cpicd.item_balance)), 0,
                              decode (cpic.buy_quantity,
                                      0, 0,
                                      cpicd.buy_balance / cpic.buy_quantity)),
                      decode (sign(cpic.total_layer_quantity),
                              0, cpicd.item_make_cost,
                              (-1 * sign(cpicd.item_balance)), 0,
                              decode (cpic.make_quantity,
                                      0, 0,
                                      cpicd.make_balance / cpic.make_quantity)),
                      decode (sign (cpic.total_layer_quantity),
                              0, 0,
                              (-1 * sign(cpicd.item_balance)), 0,
                              cpicd.item_balance),
                      decode (sign (cpic.total_layer_quantity),
                              0, 0,
                              (-1 * sign(cpicd.item_balance)), 0,
                              cpicd.buy_balance),
                      decode (sign (cpic.total_layer_quantity),
                              0, 0,
                              (-1 * sign(cpicd.item_balance)), 0,
                              cpicd.make_balance)
                     FROM  cst_pac_item_costs cpic
                     WHERE cpic.cost_layer_id = cpicd.cost_layer_id)
      WHERE  cpicd.cost_layer_id IN ( SELECT cost_layer_id
				      FROM cst_pac_item_costs
				      WHERE inventory_item_id = i_item_id
					AND cost_group_id = i_cost_group_id
			 	        AND pac_period_id = i_pac_period_id)
      AND    EXISTS (SELECT 1
                     FROM   cst_pac_period_balances cppb
                     WHERE  cppb.pac_period_id = i_pac_period_id
                     AND    cppb.cost_group_id = i_cost_group_id
                     AND    cppb.cost_layer_id = cpicd.cost_layer_id
                     AND    cppb.cost_element_id = cpicd.cost_element_id
                     AND    cppb.level_type = cpicd.level_type
                     AND    cppb.inventory_item_id = i_item_id)
      AND    EXISTS (SELECT 1
                     FROM   cst_pac_low_level_codes cpllc
                     WHERE  cpllc.low_level_code = i_low_level_code
                     AND    cpllc.pac_period_id = i_pac_period_id
                     AND    cpllc.cost_group_id = i_cost_group_id
                     AND    cpllc.inventory_item_id = i_item_id);
Line: 4358

       UPDATE cst_pac_item_costs cpic
        SET (last_updated_by,
             last_update_date,
             last_update_login,
             request_id,
             program_application_id,
             program_id,
             program_update_date,
             pl_material,
             pl_material_overhead,
             pl_resource,
             pl_outside_processing,
             pl_overhead,
             tl_material,
             tl_material_overhead,
             tl_resource,
             tl_outside_processing,
             tl_overhead,
             material_cost,
             material_overhead_cost,
             resource_cost,
             outside_processing_cost,
             overhead_cost,
             pl_item_cost,
             tl_item_cost,
             item_cost,
             item_buy_cost,
             item_make_cost,
             unburdened_cost,
             burden_cost) =
            (SELECT i_user_id,
                    sysdate,
                    i_login_id,
                    i_request_id,
                    i_prog_appl_id,
                    i_prog_id,
                    sysdate,
                    pl_material,
                    pl_material_overhead,
                    pl_resource,
                    pl_outside_processing,
                    pl_overhead,
                    tl_material,
                    tl_material_overhead,
                    tl_resource,
                    tl_outside_processing,
                    tl_overhead,
                    material_cost,
                    material_overhead_cost,
                    resource_cost,
                    outside_processing_cost,
                    overhead_cost,
                    pl_item_cost,
                    tl_item_cost,
                    item_cost,
                    item_buy_cost,
                    item_make_cost,
                    unburdened_cost,
                    burden_cost
              FROM  cst_pac_item_costs_v v
             WHERE  v.cost_layer_id = cpic.cost_layer_id)
        WHERE cpic.inventory_item_id = i_item_id
	AND   cpic.cost_group_id = i_cost_group_id
	AND   cpic.pac_period_id = i_pac_period_id
        AND   EXISTS (SELECT 1
                      FROM   cst_pac_period_balances cppb
                      WHERE  cppb.pac_period_id = i_pac_period_id
                      AND    cppb.cost_group_id = i_cost_group_id
                      AND    cppb.cost_layer_id = cpic.cost_layer_id)
        AND   EXISTS (SELECT 1
                      FROM   cst_pac_low_level_codes cpllc
                      WHERE  cpllc.low_level_code = i_low_level_code
                      AND    cpllc.inventory_item_id = cpic.inventory_item_id
                      AND    cpllc.pac_period_id = i_pac_period_id
                      AND    cpllc.cost_group_id = i_cost_group_id)
        AND EXISTS
             (SELECT 'there is detail cost'
              FROM   cst_pac_item_cost_details cpicd
              WHERE  cpicd.cost_layer_id = cpic.cost_layer_id);
Line: 4532

      SELECT  distinct cost_layer_id, mpacd.transaction_id, mpacd.txn_category
      BULK    COLLECT
      INTO    l_cost_layer_id_tbl, l_last_txn_id_tbl, l_txn_category_tbl
      FROM    mtl_pac_actual_cost_details mpacd
      WHERE   mpacd.transaction_id = (SELECT max(mpacd1.transaction_id)
                                      FROM   mtl_pac_actual_cost_details mpacd1
                                      WHERE  mpacd1.txn_category = (SELECT max(txn_category)
                                                                      FROM cst_pac_period_balances cppb
                                                                     WHERE cppb.pac_period_id = i_pac_period_id
                                                                       AND cppb.cost_group_id = i_cost_group_id
                                                                       AND cppb.cost_layer_id = mpacd.cost_layer_id)
                                      AND    mpacd1.inventory_item_id = mpacd.inventory_item_id
                                      AND    mpacd1.pac_period_id     = i_pac_period_id
                                      AND    mpacd1.cost_group_id     = i_cost_group_id)
      AND     mpacd.cost_group_id = i_cost_group_id
      AND     mpacd.pac_period_id = i_pac_period_id
      AND     NOT EXISTS (SELECT 1
                          FROM   cst_pac_low_level_codes cpllc
                          WHERE  cpllc.inventory_item_id = mpacd.inventory_item_id
                          AND    cpllc.pac_period_id = i_pac_period_id
                          AND    cpllc.cost_group_id = i_cost_group_id);
Line: 4560

      SELECT  max(mpacd.txn_category)
      INTO    l_max_txn_category
      FROM    mtl_pac_actual_cost_details mpacd
      WHERE   mpacd.pac_period_id = i_pac_period_id
      AND     mpacd.cost_group_id = i_cost_group_id
      AND     EXISTS (SELECT  1
                      FROM    cst_pac_low_level_codes cpllc
                      WHERE   cpllc.cost_group_id = i_cost_group_id
                      AND     cpllc.pac_period_id = i_pac_period_id
                      AND     cpllc.inventory_item_id = mpacd.inventory_item_id
                      AND     cpllc.low_level_code = i_low_level_code);
Line: 4582

         SELECT  distinct cost_layer_id, mpacd.transaction_id, mpacd.txn_category
         BULK    COLLECT
         INTO    l_cost_layer_id_tbl, l_last_txn_id_tbl, l_txn_category_tbl
         FROM    mtl_pac_actual_cost_details mpacd
         WHERE   mpacd.transaction_id = (SELECT max(mpacd1.transaction_id)
                                         FROM   mtl_pac_actual_cost_details mpacd1
                                         WHERE  mpacd1.txn_category = (SELECT max(txn_category)
                                                                         FROM cst_pac_period_balances cppb
                                                                        WHERE cppb.pac_period_id = i_pac_period_id
                                                                          AND cppb.cost_group_id = i_cost_group_id
                                                                          AND cppb.cost_layer_id = mpacd.cost_layer_id)
                                         AND    mpacd1.txn_category      = l_max_txn_category
                                         AND    mpacd1.inventory_item_id = mpacd.inventory_item_id
                                         AND    mpacd1.pac_period_id     = i_pac_period_id
                                         AND    mpacd1.cost_group_id     = i_cost_group_id)
         AND     mpacd.cost_group_id = i_cost_group_id
         AND     mpacd.pac_period_id = i_pac_period_id
         AND     EXISTS (SELECT 1
                         FROM   cst_pac_low_level_codes cpllc
                         WHERE  cpllc.inventory_item_id = mpacd.inventory_item_id
                         AND    cpllc.low_level_code = i_low_level_code
                         AND    cpllc.pac_period_id = i_pac_period_id
                         AND    cpllc.cost_group_id = i_cost_group_id);
Line: 4609

         SELECT  distinct cost_layer_id, mpacd.transaction_id, mpacd.txn_category
         BULK    COLLECT
         INTO    l_cost_layer_id_tbl, l_last_txn_id_tbl, l_txn_category_tbl
         FROM    mtl_pac_actual_cost_details mpacd
         WHERE   mpacd.transaction_id = (SELECT max(transaction_id)
                                         FROM   mtl_pac_actual_cost_details mpacd1
                                         WHERE  mpacd1.txn_category = (SELECT max(txn_category)
                                                                         FROM cst_pac_period_balances cppb
                                                                        WHERE cppb.pac_period_id = i_pac_period_id
                                                                          AND cppb.cost_group_id = i_cost_group_id
                                                                          AND cppb.cost_layer_id = mpacd.cost_layer_id)
                                         AND    mpacd1.inventory_item_id = mpacd.inventory_item_id
                                         AND    mpacd1.pac_period_id = i_pac_period_id
                                         AND    mpacd1.cost_group_id = i_cost_group_id)
         AND     mpacd.cost_group_id = i_cost_group_id
         AND     mpacd.pac_period_id = i_pac_period_id
         AND     EXISTS (SELECT 1
                         FROM   cst_pac_low_level_codes cpllc
                         WHERE  cpllc.inventory_item_id = mpacd.inventory_item_id
                         AND    cpllc.low_level_code = i_low_level_code
                         AND    cpllc.pac_period_id = i_pac_period_id
                         AND    cpllc.cost_group_id = i_cost_group_id);
Line: 4637

   processed for that item. Insert rows into mpacd for missing cost elements
  ****************************************************************************/

  l_stmt_num := 35;
Line: 4642

  UPDATE mtl_pac_actual_cost_details mpacd
  SET    variance_amount = (SELECT decode (sign(cpic.total_layer_quantity),
                                           0, cpicd.item_balance,
                                           (-1 * sign(cpicd.item_balance)), cpicd.item_balance,
                                           0)
                            FROM   cst_pac_item_costs cpic,
                                   cst_pac_item_cost_details cpicd
                            WHERE  cpic.cost_layer_id = cpicd.cost_layer_id
                            AND    cpicd.cost_layer_id = l_cost_layer_id_tbl (l_index)
                            AND    cpicd.cost_element_id = mpacd.cost_element_id
                            AND    cpicd.level_type = mpacd.level_type),
         last_update_date = sysdate,
         last_updated_by = i_user_id,
         last_update_login = i_login_id,
         request_id = i_request_id,
         program_application_id = i_prog_appl_id,
         program_id = i_prog_id,
         program_update_date = sysdate
  WHERE  transaction_id = l_last_txn_id_tbl (l_index)
  AND    mpacd.cost_group_id = i_cost_group_id
  AND    mpacd.pac_period_id = i_pac_period_id
  AND    mpacd.cost_layer_id = l_cost_layer_id_tbl(l_index)
  AND    (cost_element_id, level_type) = (SELECT cost_element_id, level_type
                                          FROM   cst_pac_item_cost_details cpicd
                                          WHERE  cpicd.cost_layer_id = l_cost_layer_id_tbl (l_index)
                                          AND    cpicd.cost_element_id = mpacd.cost_element_id
                                          AND    cpicd.level_type = mpacd.level_type);
Line: 4672

  INSERT INTO mtl_pac_actual_cost_details mpacd
          (COST_GROUP_ID,
          TRANSACTION_ID,
          PAC_PERIOD_ID,
          COST_TYPE_ID,
          COST_ELEMENT_ID,
          LEVEL_TYPE,
          INVENTORY_ITEM_ID,
          COST_LAYER_ID,
          ACTUAL_COST,
          USER_ENTERED,
          INSERTION_FLAG,
          TRANSACTION_COSTED_DATE,
          LAST_UPDATE_DATE,
          LAST_UPDATED_BY,
          CREATION_DATE,
          CREATED_BY,
          REQUEST_ID,
          PROGRAM_APPLICATION_ID,
          PROGRAM_ID,
          PROGRAM_UPDATE_DATE,
          LAST_UPDATE_LOGIN,
          VARIANCE_AMOUNT,
	  TXN_CATEGORY)
          (SELECT  i_cost_group_id,
                   l_last_txn_id_tbl (l_index),
                   i_pac_period_id,
                   i_cost_type_id,
                   cpicd.cost_element_id,
                   cpicd.level_type,
                   cpic.inventory_item_id,
                   cpic.cost_layer_id,
                   0,
                   'N',
                   'N',
                   sysdate,
                   SYSDATE,
                   i_user_id,
                   SYSDATE,
                   i_user_id,
                   i_request_id,
                   i_prog_appl_id,
                   i_prog_id,
                   SYSDATE,
                   i_login_id,
                   decode (sign(cpic.total_layer_quantity),
                           0, cpicd.item_balance,
                           (-1 * sign(cpicd.item_balance)), cpicd.item_balance,
                           0),
	           l_txn_category_tbl(l_index)
           FROM    cst_pac_item_cost_details cpicd,
                   cst_pac_item_costs cpic
           WHERE   cpicd.cost_layer_id = cpic.cost_layer_id
           AND     cpicd.cost_layer_id = l_cost_layer_id_tbl (l_index)
           AND     NOT EXISTS (SELECT 1
                               FROM   mtl_pac_actual_cost_details mpacd1
                               WHERE  mpacd1.transaction_id = l_last_txn_id_tbl (l_index)
                               AND    mpacd1.cost_layer_id = cpicd.cost_layer_id
                               AND    mpacd1.cost_element_id = cpicd.cost_element_id
                               AND    mpacd1.level_type = cpicd.level_type)
                             );
Line: 4737

       UPDATE cst_pac_item_cost_details cpicd
       SET    (last_update_date,
              last_updated_by,
              last_update_login,
              request_id,
              program_application_id,
              program_id,
              program_update_date,
              item_cost,
              item_buy_cost,
              item_make_cost,
              item_balance,
              buy_balance,
              make_balance) =
              (SELECT sysdate,
                      i_user_id,
                      i_login_id,
                      i_request_id,
                      i_prog_appl_id,
                      i_prog_id,
                      sysdate,
                      decode (sign(cpic.total_layer_quantity),
                              0, cpicd.item_cost,
                              (-1 * sign(cpicd.item_balance)), 0,
                              cpicd.item_balance / cpic.total_layer_quantity),
                      decode (sign(cpic.total_layer_quantity),
                              0, cpicd.item_buy_cost,
                              (-1 * sign(cpicd.item_balance)), 0,
                              decode (cpic.buy_quantity,
                                      0, 0,
                                      cpicd.buy_balance / cpic.buy_quantity)),
                      decode (sign(cpic.total_layer_quantity),
                              0, cpicd.item_make_cost,
                              (-1 * sign(cpicd.item_balance)), 0,
                              decode (cpic.make_quantity,
                                      0, 0,
                                      cpicd.make_balance / cpic.make_quantity)),
                      decode (sign (cpic.total_layer_quantity),
                              0, 0,
                              (-1 * sign(cpicd.item_balance)), 0,
                              cpicd.item_balance),
                      decode (sign (cpic.total_layer_quantity),
                              0, 0,
                              (-1 * sign(cpicd.item_balance)), 0,
                              cpicd.buy_balance),
                      decode (sign (cpic.total_layer_quantity),
                              0, 0,
                              (-1 * sign(cpicd.item_balance)), 0,
                              cpicd.make_balance)
                     FROM  cst_pac_item_costs cpic
                     WHERE cpic.cost_layer_id = cpicd.cost_layer_id)
      WHERE  cpicd.cost_layer_id IN ( SELECT cost_layer_id
				      FROM cst_pac_item_costs
				      WHERE pac_period_id = i_pac_period_id
					AND cost_group_id = i_cost_group_id)
        AND  EXISTS (SELECT 1
                     FROM   cst_pac_period_balances cppb
                     WHERE  cppb.pac_period_id = i_pac_period_id
                     AND    cppb.cost_group_id = i_cost_group_id
                     AND    cppb.cost_layer_id = cpicd.cost_layer_id
                     AND    cppb.cost_element_id = cpicd.cost_element_id
                     AND    cppb.level_type = cpicd.level_type)
      AND    NOT EXISTS (SELECT 1
			 FROM   cst_pac_low_level_codes cpllc,
                                cst_pac_item_costs cpic1
                         WHERE  cpllc.inventory_item_id = cpic1.inventory_item_id
                         AND    cpic1.cost_layer_id = cpicd.cost_layer_id
                         AND    cpllc.pac_period_id = i_pac_period_id
                         AND    cpllc.cost_group_id = i_cost_group_id);
Line: 4808

       UPDATE cst_pac_item_costs cpic
        SET (last_updated_by,
             last_update_date,
             last_update_login,
             request_id,
             program_application_id,
             program_id,
             program_update_date,
             pl_material,
             pl_material_overhead,
             pl_resource,
             pl_outside_processing,
             pl_overhead,
             tl_material,
             tl_material_overhead,
             tl_resource,
             tl_outside_processing,
             tl_overhead,
             material_cost,
             material_overhead_cost,
             resource_cost,
             outside_processing_cost,
             overhead_cost,
             pl_item_cost,
             tl_item_cost,
             item_cost,
             item_buy_cost,
             item_make_cost,
             unburdened_cost,
             burden_cost) =
            (SELECT i_user_id,
                    sysdate,
                    i_login_id,
                    i_request_id,
                    i_prog_appl_id,
                    i_prog_id,
                    sysdate,
                    pl_material,
                    pl_material_overhead,
                    pl_resource,
                    pl_outside_processing,
                    pl_overhead,
                    tl_material,
                    tl_material_overhead,
                    tl_resource,
                    tl_outside_processing,
                    tl_overhead,
                    material_cost,
                    material_overhead_cost,
                    resource_cost,
                    outside_processing_cost,
                    overhead_cost,
                    pl_item_cost,
                    tl_item_cost,
                    item_cost,
                    item_buy_cost,
                    item_make_cost,
                    unburdened_cost,
                    burden_cost
              FROM  cst_pac_item_costs_v v
             WHERE  v.cost_layer_id = cpic.cost_layer_id)
        WHERE  cpic.cost_group_id = i_cost_group_id
	AND    cpic.pac_period_id = i_pac_period_id
        AND    EXISTS (SELECT 1
                      FROM   cst_pac_period_balances cppb
                      WHERE  cppb.pac_period_id = i_pac_period_id
                      AND    cppb.cost_group_id = i_cost_group_id
                      AND    cppb.cost_layer_id = cpic.cost_layer_id)
        AND NOT EXISTS (SELECT 1
                        FROM   cst_pac_low_level_codes cpllc
                        WHERE  cpllc.inventory_item_id = cpic.inventory_item_id
                        AND    cpllc.pac_period_id = i_pac_period_id
                        AND    cpllc.cost_group_id = i_cost_group_id)
        AND EXISTS
             (SELECT 'there is detail cost'
              FROM   cst_pac_item_cost_details cpicd
              WHERE  cpicd.cost_layer_id = cpic.cost_layer_id);
Line: 4889

       UPDATE cst_pac_item_cost_details cpicd
       SET    (last_update_date,
              last_updated_by,
              last_update_login,
              request_id,
              program_application_id,
              program_id,
              program_update_date,
              item_cost,
              item_buy_cost,
              item_make_cost,
              item_balance,
              buy_balance,
              make_balance) =
              (SELECT sysdate,
                      i_user_id,
                      i_login_id,
                      i_request_id,
                      i_prog_appl_id,
                      i_prog_id,
                      sysdate,
                      decode (sign(cpic.total_layer_quantity),
                              0, cpicd.item_cost,
                              (-1 * sign(cpicd.item_balance)), 0,
                              cpicd.item_balance / cpic.total_layer_quantity),
                      decode (sign(cpic.total_layer_quantity),
                              0, cpicd.item_buy_cost,
                              (-1 * sign(cpicd.item_balance)), 0,
                              decode (cpic.buy_quantity,
                                      0, 0,
                                      cpicd.buy_balance / cpic.buy_quantity)),
                      decode (sign(cpic.total_layer_quantity),
                              0, cpicd.item_make_cost,
                              (-1 * sign(cpicd.item_balance)), 0,
                              decode (cpic.make_quantity,
                                      0, 0,
                                      cpicd.make_balance / cpic.make_quantity)),
                      decode (sign (cpic.total_layer_quantity),
                              0, 0,
                              (-1 * sign(cpicd.item_balance)), 0,
                              cpicd.item_balance),
                      decode (sign (cpic.total_layer_quantity),
                              0, 0,
                              (-1 * sign(cpicd.item_balance)), 0,
                              cpicd.buy_balance),
                      decode (sign (cpic.total_layer_quantity),
                              0, 0,
                              (-1 * sign(cpicd.item_balance)), 0,
                              cpicd.make_balance)
                     FROM  cst_pac_item_costs cpic
                     WHERE cpic.cost_layer_id = cpicd.cost_layer_id)
      WHERE  cpicd.cost_layer_id IN ( SELECT cost_layer_id
				      FROM cst_pac_item_costs
				      WHERE pac_period_id = i_pac_period_id
					AND cost_group_id = i_cost_group_id)
      AND    EXISTS (SELECT 1
                     FROM   cst_pac_period_balances cppb
                     WHERE  cppb.pac_period_id = i_pac_period_id
                     AND    cppb.cost_group_id = i_cost_group_id
                     AND    cppb.cost_layer_id = cpicd.cost_layer_id
                     AND    cppb.cost_element_id = cpicd.cost_element_id
                     AND    cppb.level_type = cpicd.level_type)
      AND    EXISTS (SELECT 1
                     FROM   cst_pac_low_level_codes cpllc,
                            cst_pac_item_costs cpic1
                     WHERE  cpllc.low_level_code = i_low_level_code
                     AND    cpllc.pac_period_id = i_pac_period_id
                     AND    cpllc.cost_group_id = i_cost_group_id
                     AND    cpllc.inventory_item_id = cpic1.inventory_item_id
                     AND    cpic1.cost_layer_id = cpicd.cost_layer_id);
Line: 4961

       UPDATE cst_pac_item_costs cpic
        SET (last_updated_by,
             last_update_date,
             last_update_login,
             request_id,
             program_application_id,
             program_id,
             program_update_date,
             pl_material,
             pl_material_overhead,
             pl_resource,
             pl_outside_processing,
             pl_overhead,
             tl_material,
             tl_material_overhead,
             tl_resource,
             tl_outside_processing,
             tl_overhead,
             material_cost,
             material_overhead_cost,
             resource_cost,
             outside_processing_cost,
             overhead_cost,
             pl_item_cost,
             tl_item_cost,
             item_cost,
             item_buy_cost,
             item_make_cost,
             unburdened_cost,
             burden_cost) =
            (SELECT i_user_id,
                    sysdate,
                    i_login_id,
                    i_request_id,
                    i_prog_appl_id,
                    i_prog_id,
                    sysdate,
                    pl_material,
                    pl_material_overhead,
                    pl_resource,
                    pl_outside_processing,
                    pl_overhead,
                    tl_material,
                    tl_material_overhead,
                    tl_resource,
                    tl_outside_processing,
                    tl_overhead,
                    material_cost,
                    material_overhead_cost,
                    resource_cost,
                    outside_processing_cost,
                    overhead_cost,
                    pl_item_cost,
                    tl_item_cost,
                    item_cost,
                    item_buy_cost,
                    item_make_cost,
                    unburdened_cost,
                    burden_cost
              FROM  cst_pac_item_costs_v v
             WHERE  v.cost_layer_id = cpic.cost_layer_id)
        WHERE cpic.cost_group_id = i_cost_group_id
	AND   cpic.pac_period_id = i_pac_period_id
        AND   EXISTS (SELECT 1
                      FROM   cst_pac_period_balances cppb
                      WHERE  cppb.pac_period_id = i_pac_period_id
                      AND    cppb.cost_group_id = i_cost_group_id
                      AND    cppb.cost_layer_id = cpic.cost_layer_id)
        AND   EXISTS (SELECT 1
                      FROM   cst_pac_low_level_codes cpllc
                      WHERE  cpllc.low_level_code = i_low_level_code
                      AND    cpllc.inventory_item_id = cpic.inventory_item_id
                      AND    cpllc.pac_period_id = i_pac_period_id
                      AND    cpllc.cost_group_id = i_cost_group_id)
        AND EXISTS
             (SELECT 'there is detail cost'
              FROM   cst_pac_item_cost_details cpicd
              WHERE  cpicd.cost_layer_id = cpic.cost_layer_id);
Line: 5177

PROCEDURE update_cppb (i_pac_period_id  IN  NUMBER,
                       i_cost_group_id  IN  NUMBER,
                       i_txn_category   IN  NUMBER,
                       i_low_level_code IN  NUMBER,
                       i_user_id        IN  NUMBER,
                       i_login_id       IN  NUMBER,
                       i_request_id     IN  NUMBER,
                       i_prog_id        IN  NUMBER,
                       i_prog_appl_id   IN  NUMBER,
                       o_err_num        OUT NOCOPY NUMBER,
                       o_err_code       OUT NOCOPY VARCHAR2,
                       o_err_msg        OUT NOCOPY VARCHAR2)
IS
  l_stmt_num  NUMBER;
Line: 5193

    l_module       CONSTANT VARCHAR2(90) := 'cst.plsql.CSTPPWAC.update_cppb';
Line: 5210

        'Entering CSTPPWAC.update_cppb with '||
        'i_cost_group_id = '||i_cost_group_id||','||
        'i_txn_category = '||i_txn_category||','||
        'i_low_level_code = '||i_low_level_code||','||
        'i_user_id = '||i_user_id||','||
        'i_login_id = '||i_login_id||','||
        'i_request_id = '||i_request_id||','||
        'i_prog_id = '||i_prog_id||','||
        'i_prog_appl_id = '||i_prog_appl_id
      );
Line: 5231

     UPDATE CST_PAC_PERIOD_BALANCES cppb
     SET    (last_updated_by,
             last_update_date,
             last_update_login,
             request_id,
             program_application_id,
             program_id,
             program_update_date,
             period_balance,
             period_quantity,
             periodic_cost,
             variance_amount) =
             (SELECT i_user_id,
                     sysdate,
                     i_login_id,
                     i_request_id,
                     i_prog_appl_id,
                     i_prog_id,
                     sysdate,
                     cpicd.item_balance,
                     cpic.total_layer_quantity,
                     cpicd.item_cost,
                     (SELECT  sum (nvl (mpacd.variance_amount, 0))
                       FROM   mtl_pac_actual_cost_details mpacd
                      WHERE   mpacd.txn_category      = i_txn_category
                        AND   mpacd.inventory_item_id = cppb.inventory_item_id
                        AND   mpacd.pac_period_id     = i_pac_period_id
                        AND   mpacd.cost_group_id     = i_cost_group_id
                        AND   mpacd.cost_layer_id     = cppb.cost_layer_id
                        AND   mpacd.cost_element_id   = cppb.cost_element_id
                        AND   mpacd.level_type        = cppb.level_type)
             FROM    cst_pac_item_cost_details cpicd,
                     cst_pac_item_costs cpic
             WHERE   cpic.cost_layer_id   = cpicd.cost_layer_id
             AND     cppb.cost_layer_id   = cpicd.cost_layer_id
             AND     cppb.cost_element_id = cpicd.cost_element_id
             AND     cppb.level_type      = cpicd.level_type)
     WHERE   cppb.pac_period_id = i_pac_period_id
     AND     cppb.cost_group_id = i_cost_group_id
     AND     cppb.txn_category  = i_txn_category
     AND     i_txn_category = (SELECT max (txn_category)
                               FROM   MTL_PAC_ACTUAL_COST_DETAILS
                               WHERE  pac_period_id     = i_pac_period_id
                               AND    cost_group_id     = i_cost_group_id
                               AND    inventory_item_id = cppb.inventory_item_id)
     AND     EXISTS (SELECT 1
                     FROM  CST_PAC_ITEM_COST_DETAILS cpicd1
                     WHERE cppb.cost_layer_id   = cpicd1.cost_layer_id
                     AND   cppb.cost_element_id = cpicd1.cost_element_id
                     AND   cppb.level_type      = cpicd1.level_type);
Line: 5287

     UPDATE CST_PAC_PERIOD_BALANCES cppb
     SET    (last_updated_by,
             last_update_date,
             last_update_login,
             request_id,
             program_application_id,
             program_id,
             program_update_date,
             period_balance,
             period_quantity,
             periodic_cost,
             variance_amount) =
             (SELECT i_user_id,
                     sysdate,
                     i_login_id,
                     i_request_id,
                     i_prog_appl_id,
                     i_prog_id,
                     sysdate,
                     cpicd.item_balance,
                     cpic.total_layer_quantity,
                     cpicd.item_cost,
                     (SELECT  sum (nvl (mpacd.variance_amount, 0))
                       FROM   mtl_pac_actual_cost_details mpacd
                      WHERE   mpacd.txn_category      = i_txn_category
                        AND   mpacd.inventory_item_id = cppb.inventory_item_id
                        AND   mpacd.pac_period_id     = i_pac_period_id
                        AND   mpacd.cost_group_id     = i_cost_group_id
                        AND   mpacd.cost_layer_id     = cppb.cost_layer_id
                        AND   mpacd.cost_element_id   = cppb.cost_element_id
                        AND   mpacd.level_type        = cppb.level_type)
             FROM    cst_pac_item_cost_details cpicd,
                     cst_pac_item_costs cpic
             WHERE   cpic.cost_layer_id   = cpicd.cost_layer_id
             AND     cppb.cost_layer_id   = cpicd.cost_layer_id
             AND     cppb.cost_element_id = cpicd.cost_element_id
             AND     cppb.level_type      = cpicd.level_type)
     WHERE   cppb.pac_period_id  = i_pac_period_id
     AND     cppb.cost_group_id  = i_cost_group_id
     AND     cppb.txn_category   = i_txn_category
     AND     i_txn_category = (SELECT max (txn_category)
                               FROM   MTL_PAC_ACTUAL_COST_DETAILS
                               WHERE  pac_period_id = i_pac_period_id
                               AND    cost_group_id = i_cost_group_id
                               AND    inventory_item_id = cppb.inventory_item_id)
     AND     EXISTS (SELECT 1
                     FROM  CST_PAC_ITEM_COST_DETAILS cpicd1
                     WHERE cppb.cost_layer_id = cpicd1.cost_layer_id
                     AND   cppb.cost_element_id = cpicd1.cost_element_id
                     AND   cppb.level_type = cpicd1.level_type)
     AND     NOT EXISTS (SELECT 1
                         FROM   cst_pac_low_level_codes cpllc
                         WHERE  cpllc.inventory_item_id = cppb.inventory_item_id
                         AND    cpllc.pac_period_id = i_pac_period_id
                         AND    cpllc.cost_group_id = i_cost_group_id);
Line: 5347

     UPDATE  CST_PAC_PERIOD_BALANCES cppb
     SET    (last_updated_by,
             last_update_date,
             last_update_login,
             request_id,
             program_application_id,
             program_id,
             program_update_date,
             period_balance,
             period_quantity,
             periodic_cost,
             variance_amount) =
             (SELECT i_user_id,
                     sysdate,
                     i_login_id,
                     i_request_id,
                     i_prog_appl_id,
                     i_prog_id,
                     sysdate,
                     cpicd.item_balance,
                     cpic.total_layer_quantity,
                     cpicd.item_cost,
                     (select  sum (nvl (mpacd.variance_amount, 0))
                       from   mtl_pac_actual_cost_details mpacd
                      where   mpacd.txn_category      = i_txn_category
                        and   mpacd.inventory_item_id = cppb.inventory_item_id
                        and   mpacd.pac_period_id     = i_pac_period_id
                        and   mpacd.cost_group_id     = i_cost_group_id
                        and   mpacd.cost_layer_id     = cppb.cost_layer_id
                        and   mpacd.cost_element_id   = cppb.cost_element_id
                        and   mpacd.level_type        = cppb.level_type)
             FROM    cst_pac_item_cost_details cpicd,
                     cst_pac_item_costs cpic
             WHERE   cpic.cost_layer_id = cpicd.cost_layer_id
             AND     cppb.cost_layer_id = cpicd.cost_layer_id
             AND     cppb.cost_element_id = cpicd.cost_element_id
             AND     cppb.level_type = cpicd.level_type)
     WHERE   cppb.pac_period_id = i_pac_period_id
     AND     cppb.cost_group_id = i_cost_group_id
     AND     cppb.txn_category = i_txn_category
     AND     i_txn_category = (SELECT max (txn_category)
                               FROM   MTL_PAC_ACTUAL_COST_DETAILS
                               WHERE  pac_period_id = i_pac_period_id
                               AND    cost_group_id = i_cost_group_id
                               AND    inventory_item_id = cppb.inventory_item_id)
     AND     EXISTS (SELECT 1
                     FROM  CST_PAC_ITEM_COST_DETAILS cpicd1
                     WHERE cppb.cost_layer_id = cpicd1.cost_layer_id
                     AND   cppb.cost_element_id = cpicd1.cost_element_id
                     AND   cppb.level_type = cpicd1.level_type)
     AND     EXISTS (SELECT 1
                     FROM   cst_pac_low_level_codes cpllc
                     WHERE  cpllc.inventory_item_id = cppb.inventory_item_id
                     AND    cpllc.low_level_code = i_low_level_code
                     AND    cpllc.pac_period_id = i_pac_period_id
                     AND    cpllc.cost_group_id = i_cost_group_id);
Line: 5412

        'Exiting CSTPPWAC.update_cppb with '||
        'o_err_num = '||o_err_num||','||
        'o_err_code = '||o_err_code||','||
        'o_err_msg = '||o_err_msg
      );
Line: 5435

END update_cppb;
Line: 5441

PROCEDURE update_item_cppb (i_pac_period_id  IN  NUMBER,
                            i_cost_group_id  IN  NUMBER,
                            i_txn_category   IN  NUMBER,
			    i_item_id        IN  NUMBER,
                            i_user_id        IN  NUMBER,
                            i_login_id       IN  NUMBER,
                            i_request_id     IN  NUMBER,
                            i_prog_id        IN  NUMBER,
                            i_prog_appl_id   IN  NUMBER,
                            o_err_num        OUT NOCOPY NUMBER,
                            o_err_code       OUT NOCOPY VARCHAR2,
                            o_err_msg        OUT NOCOPY VARCHAR2)
IS
  l_stmt_num  NUMBER;
Line: 5457

    l_module       CONSTANT VARCHAR2(90) := 'cst.plsql.CSTPPWAC.update_item_cppb';
Line: 5474

        'Entering CSTPPWAC.update_item_cppb with '||
        'i_cost_group_id = '||i_cost_group_id||','||
        'i_txn_category = '||i_txn_category||','||
	'i_item_id = '||i_item_id||','||
        'i_user_id = '||i_user_id||','||
        'i_login_id = '||i_login_id||','||
        'i_request_id = '||i_request_id||','||
        'i_prog_id = '||i_prog_id||','||
        'i_prog_appl_id = '||i_prog_appl_id
      );
Line: 5488

     UPDATE CST_PAC_PERIOD_BALANCES cppb
     SET    (last_updated_by,
             last_update_date,
             last_update_login,
             request_id,
             program_application_id,
             program_id,
             program_update_date,
             period_balance,
             period_quantity,
             periodic_cost,
             variance_amount) =
             (SELECT i_user_id,
                     sysdate,
                     i_login_id,
                     i_request_id,
                     i_prog_appl_id,
                     i_prog_id,
                     sysdate,
                     cpicd.item_balance,
                     cpic.total_layer_quantity,
                     cpicd.item_cost,
                     (SELECT  sum (nvl (mpacd.variance_amount, 0))
                       FROM   mtl_pac_actual_cost_details mpacd
                      WHERE   mpacd.txn_category      = cppb.txn_category
                        AND   mpacd.inventory_item_id = cppb.inventory_item_id
                        AND   mpacd.pac_period_id     = cppb.pac_period_id
                        AND   mpacd.cost_group_id     = cppb.cost_group_id
                        AND   mpacd.cost_layer_id     = cppb.cost_layer_id
                        AND   mpacd.cost_element_id   = cppb.cost_element_id
                        AND   mpacd.level_type        = cppb.level_type)
             FROM    cst_pac_item_cost_details cpicd,
                     cst_pac_item_costs cpic
             WHERE   cpic.cost_layer_id = cpicd.cost_layer_id
             AND     cppb.cost_layer_id = cpicd.cost_layer_id
             AND     cppb.cost_element_id = cpicd.cost_element_id
             AND     cppb.level_type = cpicd.level_type)
     WHERE   cppb.pac_period_id = i_pac_period_id
     AND     cppb.cost_group_id = i_cost_group_id
     AND     cppb.txn_category = i_txn_category
     AND     cppb.inventory_item_id = i_item_id
     AND     i_txn_category = (SELECT max (txn_category)
                               FROM   MTL_PAC_ACTUAL_COST_DETAILS
                               WHERE  pac_period_id = i_pac_period_id
                               AND    cost_group_id = i_cost_group_id
                               AND    inventory_item_id = cppb.inventory_item_id)
     AND     EXISTS (SELECT 1
                     FROM  CST_PAC_ITEM_COST_DETAILS cpicd1
                     WHERE cppb.cost_layer_id = cpicd1.cost_layer_id
                     AND   cppb.cost_element_id = cpicd1.cost_element_id
                     AND   cppb.level_type = cpicd1.level_type);
Line: 5547

        'Exiting CSTPPWAC.update_item_cppb with '||
        'o_err_num = '||o_err_num||','||
        'o_err_code = '||o_err_code||','||
        'o_err_msg = '||o_err_msg
      );
Line: 5570

END update_item_cppb;
Line: 5575

PROCEDURE insert_ending_balance (i_pac_period_id IN  NUMBER,
                                 i_cost_group_id IN  NUMBER,
                                 i_user_id       IN  NUMBER,
                                 i_login_id      IN  NUMBER,
                                 i_request_id    IN  NUMBER,
                                 i_prog_id       IN  NUMBER,
                                 i_prog_appl_id  IN  NUMBER,
                                 o_err_num       OUT NOCOPY NUMBER,
                                 o_err_code      OUT NOCOPY VARCHAR2,
                                 o_err_msg       OUT NOCOPY VARCHAR2)
IS
  l_stmt_num  NUMBER;
Line: 5589

    l_module       CONSTANT VARCHAR2(90) := 'cst.plsql.CSTPPWAC.insert_ending_balance';
Line: 5606

        'Entering CSTPPWAC.insert_ending_balance with '||
        'i_cost_group_id = '||i_cost_group_id||','||
        'i_user_id = '||i_user_id||','||
        'i_login_id = '||i_login_id||','||
        'i_request_id = '||i_request_id||','||
        'i_prog_id = '||i_prog_id||','||
        'i_prog_appl_id = '||i_prog_appl_id
      );
Line: 5618

 INSERT INTO cst_pac_period_balances (
           pac_period_id,
           cost_group_id,
           inventory_item_id,
           cost_layer_id,
           quantity_layer_id,
           cost_element_id,
           level_type,
           txn_category,
           txn_category_qty,
           txn_category_value,
           period_quantity,
           periodic_cost,
           period_balance,
           variance_amount,
           last_update_date,
           last_updated_by,
           last_update_login,
           created_by,
           creation_date,
           request_id,
           program_application_id,
           program_id,
           program_update_date)
           (SELECT i_pac_period_id,
                   i_cost_group_id,
                   cpic.inventory_item_id,
                   cpic.cost_layer_id,
                   cpql.quantity_layer_id,
                   cpicd.cost_element_id,
                   cpicd.level_type,
                   10,                   -- txn_category
                   0,
                   0,
                   cpic.total_layer_quantity,
                   cpicd.item_cost,
                   cpicd.item_balance,
                   0,
                   sysdate,
                   i_user_id,
                   i_login_id,
                   i_user_id,
                   sysdate,
                   i_request_id,
                   i_prog_appl_id,
                   i_prog_id,
                   sysdate
           FROM    cst_pac_item_costs cpic,
                   cst_pac_item_cost_details cpicd,
                   cst_pac_quantity_layers cpql
           WHERE   cpic.pac_period_id = i_pac_period_id
           AND     cpic.cost_group_id = i_cost_group_id
           AND     cpicd.cost_layer_id = cpic.cost_layer_id
           AND     cpql.cost_layer_id = cpic.cost_layer_id
           -- Insert ending balance records in CPPB only for asset items, i.e. only for items
           -- which already have atleast one record in CPPB
           AND     exists (select 1
                           from   cst_pac_period_balances cppb1
                           where  cppb1.inventory_item_id = cpic.inventory_item_id
                           and    cppb1.cost_group_id = cpic.cost_group_id
                           and    cppb1.pac_period_id = cpic.pac_period_id));
Line: 5687

        'Exiting CSTPPWAC.insert_ending_balance with '||
        'o_err_num = '||o_err_num||','||
        'o_err_code = '||o_err_code||','||
        'o_err_msg = '||o_err_msg
      );
Line: 5710

END insert_ending_balance;