DBA Data[Home] [Help]

APPS.PJI_FM_SUM_ROLLUP_FIN SQL Statements

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

Line: 20

    insert /*+ append parallel(fin_i) */ into PJI_PJI_RMAP_FIN fin_i
    (
      WORKER_ID,
      STG_ROWID
    )
    select
      p_worker_id                           WORKER_ID,
      fin9.ROWID                            STG_ROWID
    from
      PJI_PJI_PROJ_BATCH_MAP map,
      PJI_FM_AGGR_FIN9 fin9
    where
      map.WORKER_ID = p_worker_id and
      fin9.PROJECT_ID = map.PROJECT_ID;
Line: 67

    select
      TXN_CURR_FLAG,
      GLOBAL_CURR2_FLAG
    into
      l_txn_currency_flag,
      l_g2_currency_flag
    from
      PJI_SYSTEM_SETTINGS;
Line: 79

    insert  /*+ append parallel(fin4_i) */ into PJI_FM_AGGR_FIN4 fin4_i
    (
      WORKER_ID,
      PROJECT_ID,
      PROJECT_ORGANIZATION_ID,
      PROJECT_ORG_ID,
      PROJECT_TYPE_CLASS,
      WORK_TYPE_ID,
      EXP_EVT_TYPE_ID,
      TIME_ID,
      CALENDAR_TYPE,
      GL_CALENDAR_ID,
      PA_CALENDAR_ID,
      CURR_RECORD_TYPE_ID,
      CURRENCY_CODE,
      PERIOD_TYPE_ID,
      REVENUE,
      LABOR_REVENUE,
      RAW_COST,
      BURDENED_COST,
      BILL_RAW_COST,
      BILL_BURDENED_COST,
      LABOR_RAW_COST,
      LABOR_BURDENED_COST,
      BILL_LABOR_RAW_COST,
      BILL_LABOR_BURDENED_COST,
      REVENUE_WRITEOFF,
      LABOR_HRS,
      BILL_LABOR_HRS,
      QUANTITY,
      BILL_QUANTITY
    )
    select
      src3.WORKER_ID,
      src3.PROJECT_ID,
      src3.PROJECT_ORGANIZATION_ID,
      src3.PROJECT_ORG_ID,
      src3.PROJECT_TYPE_CLASS,
      src3.WORK_TYPE_ID,
      src3.EXP_EVT_TYPE_ID,
      src3.TIME_ID,
      src3.CALENDAR_TYPE,
      src3.GL_CALENDAR_ID,
      src3.PA_CALENDAR_ID,
      sum(src3.CURR_RECORD_TYPE_ID)                   CURR_RECORD_TYPE_ID,
      nvl(src3.CURRENCY_CODE, 'PJI$NULL')             CURRENCY_CODE,
      src3.PERIOD_TYPE_ID,
      max(src3.REVENUE)                               REVENUE,
      max(src3.LABOR_REVENUE)                         LABOR_REVENUE,
      max(src3.RAW_COST)                              RAW_COST,
      max(src3.BURDENED_COST)                         BURDENED_COST,
      max(src3.BILL_RAW_COST)                         BILL_RAW_COST,
      max(src3.BILL_BURDENED_COST)                    BILL_BURDENED_COST,
      max(src3.LABOR_RAW_COST)                        LABOR_RAW_COST,
      max(src3.LABOR_BURDENED_COST)                   LABOR_BURDENED_COST,
      max(src3.BILL_LABOR_RAW_COST)                   BILL_LABOR_RAW_COST,
      max(src3.BILL_LABOR_BURDENED_COST)              BILL_LABOR_BURDENED_COST,
      max(src3.REVENUE_WRITEOFF)                      REVENUE_WRITEOFF,
      max(src3.LABOR_HRS)                             LABOR_HRS,
      max(src3.BILL_LABOR_HRS)                        BILL_LABOR_HRS,
      max(src3.QUANTITY)                              QUANTITY,
      max(src3.BILL_QUANTITY)                         BILL_QUANTITY
    from
      (
      select /*+ ordered */
        p_worker_id                                   WORKER_ID,
        src2.PROJECT_ID,
        src2.PROJECT_ORGANIZATION_ID,
        src2.PROJECT_ORG_ID,
        src2.PROJECT_TYPE_CLASS,
        src2.WORK_TYPE_ID,
        src2.EXP_EVT_TYPE_ID,
        src2.TIME_ID,
        src2.CALENDAR_TYPE,
        src2.GL_CALENDAR_ID,
        src2.PA_CALENDAR_ID,
        invert.INVERT_ID                              CURR_RECORD_TYPE_ID,
        decode(invert.INVERT_ID,
               1,   l_g1_currency_code,
               2,   l_g2_currency_code,
               4,   info.PF_CURRENCY_CODE,
               8,   prj.PROJECT_CURRENCY_CODE,
               16,  src2.TXN_CURRENCY_CODE,
               32,  l_g1_currency_code,
               64,  l_g2_currency_code,
               128, info.PF_CURRENCY_CODE,
               256, prj.PROJECT_CURRENCY_CODE)        DIFF_CURRENCY_CODE,
        src2.DIFF_ROWNUM                              DIFF_ROWNUM,
        decode(invert.INVERT_ID,
               1,   l_g1_currency_code,
               2,   l_g2_currency_code,
               4,   info.PF_CURRENCY_CODE,
               8,   prj.PROJECT_CURRENCY_CODE,
               16,  src2.TXN_CURRENCY_CODE,
               32,  src2.TXN_CURRENCY_CODE,
               64,  src2.TXN_CURRENCY_CODE,
               128, src2.TXN_CURRENCY_CODE,
               256, src2.TXN_CURRENCY_CODE)           CURRENCY_CODE,
        1                                             PERIOD_TYPE_ID,
        decode(invert.INVERT_ID,
               1,   src2.G1_REVENUE,
               2,   src2.G2_REVENUE,
               4,   src2.POU_REVENUE,
               8,   src2.PRJ_REVENUE,
               16,  src2.TXN_REVENUE,
               32,  src2.G1_REVENUE,
               64,  src2.G2_REVENUE,
               128, src2.POU_REVENUE,
               256, src2.PRJ_REVENUE)                 REVENUE,
        decode(invert.INVERT_ID,
               1,   src2.G1_LABOR_REVENUE,
               2,   src2.G2_LABOR_REVENUE,
               4,   src2.POU_LABOR_REVENUE,
               8,   src2.PRJ_LABOR_REVENUE,
               16,  src2.TXN_LABOR_REVENUE,
               32,  src2.G1_LABOR_REVENUE,
               64,  src2.G2_LABOR_REVENUE,
               128, src2.POU_LABOR_REVENUE,
               256, src2.PRJ_LABOR_REVENUE)           LABOR_REVENUE,
        decode(invert.INVERT_ID,
               1,   src2.G1_RAW_COST,
               2,   src2.G2_RAW_COST,
               4,   src2.POU_RAW_COST,
               8,   src2.PRJ_RAW_COST,
               16,  src2.TXN_RAW_COST,
               32,  src2.G1_RAW_COST,
               64,  src2.G2_RAW_COST,
               128, src2.POU_RAW_COST,
               256, src2.PRJ_RAW_COST)                RAW_COST,
        decode(invert.INVERT_ID,
               1,   src2.G1_BRDN_COST,
               2,   src2.G2_BRDN_COST,
               4,   src2.POU_BRDN_COST,
               8,   src2.PRJ_BRDN_COST,
               16,  src2.TXN_BRDN_COST,
               32,  src2.G1_BRDN_COST,
               64,  src2.G2_BRDN_COST,
               128, src2.POU_BRDN_COST,
               256, src2.PRJ_BRDN_COST)               BURDENED_COST,
        decode(invert.INVERT_ID,
               1,   src2.G1_BILL_RAW_COST,
               2,   src2.G2_BILL_RAW_COST,
               4,   src2.POU_BILL_RAW_COST,
               8,   src2.PRJ_BILL_RAW_COST,
               16,  src2.TXN_BILL_RAW_COST,
               32,  src2.G1_BILL_RAW_COST,
               64,  src2.G2_BILL_RAW_COST,
               128, src2.POU_BILL_RAW_COST,
               256, src2.PRJ_BILL_RAW_COST)           BILL_RAW_COST,
        decode(invert.INVERT_ID,
               1,   src2.G1_BILL_BRDN_COST,
               2,   src2.G2_BILL_BRDN_COST,
               4,   src2.POU_BILL_BRDN_COST,
               8,   src2.PRJ_BILL_BRDN_COST,
               16,  src2.TXN_BILL_BRDN_COST,
               32,  src2.G1_BILL_BRDN_COST,
               64,  src2.G2_BILL_BRDN_COST,
               128, src2.POU_BILL_BRDN_COST,
               256, src2.PRJ_BILL_BRDN_COST)          BILL_BURDENED_COST,
        decode(invert.INVERT_ID,
               1,   src2.G1_LABOR_RAW_COST,
               2,   src2.G2_LABOR_RAW_COST,
               4,   src2.POU_LABOR_RAW_COST,
               8,   src2.PRJ_LABOR_RAW_COST,
               16,  src2.TXN_LABOR_RAW_COST,
               32,  src2.G1_LABOR_RAW_COST,
               64,  src2.G2_LABOR_RAW_COST,
               128, src2.POU_LABOR_RAW_COST,
               256, src2.PRJ_LABOR_RAW_COST)          LABOR_RAW_COST,
        decode(invert.INVERT_ID,
               1,   src2.G1_LABOR_BRDN_COST,
               2,   src2.G2_LABOR_BRDN_COST,
               4,   src2.POU_LABOR_BRDN_COST,
               8,   src2.PRJ_LABOR_BRDN_COST,
               16,  src2.TXN_LABOR_BRDN_COST,
               32,  src2.G1_LABOR_BRDN_COST,
               64,  src2.G2_LABOR_BRDN_COST,
               128, src2.POU_LABOR_BRDN_COST,
               256, src2.PRJ_LABOR_BRDN_COST)         LABOR_BURDENED_COST,
        decode(invert.INVERT_ID,
               1,   src2.G1_BILL_LABOR_RAW_COST,
               2,   src2.G2_BILL_LABOR_RAW_COST,
               4,   src2.POU_BILL_LABOR_RAW_COST,
               8,   src2.PRJ_BILL_LABOR_RAW_COST,
               16,  src2.TXN_BILL_LABOR_RAW_COST,
               32,  src2.G1_BILL_LABOR_RAW_COST,
               64,  src2.G2_BILL_LABOR_RAW_COST,
               128, src2.POU_BILL_LABOR_RAW_COST,
               256, src2.PRJ_BILL_LABOR_RAW_COST)     BILL_LABOR_RAW_COST,
        decode(invert.INVERT_ID,
               1,   src2.G1_BILL_LABOR_BRDN_COST,
               2,   src2.G2_BILL_LABOR_BRDN_COST,
               4,   src2.POU_BILL_LABOR_BRDN_COST,
               8,   src2.PRJ_BILL_LABOR_BRDN_COST,
               16,  src2.TXN_BILL_LABOR_BRDN_COST,
               32,  src2.G1_BILL_LABOR_BRDN_COST,
               64,  src2.G2_BILL_LABOR_BRDN_COST,
               128, src2.POU_BILL_LABOR_BRDN_COST,
               256, src2.PRJ_BILL_LABOR_BRDN_COST)    BILL_LABOR_BURDENED_COST,
        decode(invert.INVERT_ID,
               1,   src2.G1_REVENUE_WRITEOFF,
               2,   src2.G2_REVENUE_WRITEOFF,
               4,   src2.POU_REVENUE_WRITEOFF,
               8,   src2.PRJ_REVENUE_WRITEOFF,
               16,  src2.TXN_REVENUE_WRITEOFF,
               32,  src2.G1_REVENUE_WRITEOFF,
               64,  src2.G2_REVENUE_WRITEOFF,
               128, src2.POU_REVENUE_WRITEOFF,
               256, src2.PRJ_REVENUE_WRITEOFF)        REVENUE_WRITEOFF,
        src2.LABOR_HRS,
        src2.BILL_LABOR_HRS,
        src2.QUANTITY,
        src2.BILL_QUANTITY
      from
        (
        select
          ROWNUM                                    DIFF_ROWNUM,
          src1.PROJECT_ID,
          src1.PROJECT_ORGANIZATION_ID,
          src1.PROJECT_ORG_ID,
          src1.PROJECT_TYPE_CLASS,
          src1.WORK_TYPE_ID,
          src1.EXP_EVT_TYPE_ID,
          src1.TIME_ID,
          src1.CALENDAR_TYPE,
          src1.GL_CALENDAR_ID,
          src1.PA_CALENDAR_ID,
          src1.TXN_CURRENCY_CODE,
          src1.TXN_REVENUE,
          src1.TXN_LABOR_REVENUE,
          src1.TXN_RAW_COST,
          src1.TXN_BRDN_COST,
          src1.TXN_BILL_RAW_COST,
          src1.TXN_BILL_BRDN_COST,
          src1.TXN_LABOR_RAW_COST,
          src1.TXN_LABOR_BRDN_COST,
          src1.TXN_BILL_LABOR_RAW_COST,
          src1.TXN_BILL_LABOR_BRDN_COST,
          src1.TXN_REVENUE_WRITEOFF,
          src1.PRJ_REVENUE,
          src1.PRJ_LABOR_REVENUE,
          src1.PRJ_RAW_COST,
          src1.PRJ_BRDN_COST,
          src1.PRJ_BILL_RAW_COST,
          src1.PRJ_BILL_BRDN_COST,
          src1.PRJ_LABOR_RAW_COST,
          src1.PRJ_LABOR_BRDN_COST,
          src1.PRJ_BILL_LABOR_RAW_COST,
          src1.PRJ_BILL_LABOR_BRDN_COST,
          src1.PRJ_REVENUE_WRITEOFF,
          src1.POU_REVENUE,
          src1.POU_LABOR_REVENUE,
          src1.POU_RAW_COST,
          src1.POU_BRDN_COST,
          src1.POU_BILL_RAW_COST,
          src1.POU_BILL_BRDN_COST,
          src1.POU_LABOR_RAW_COST,
          src1.POU_LABOR_BRDN_COST,
          src1.POU_BILL_LABOR_RAW_COST,
          src1.POU_BILL_LABOR_BRDN_COST,
          src1.POU_REVENUE_WRITEOFF,
          src1.EOU_REVENUE,
          src1.EOU_LABOR_REVENUE,
          src1.EOU_RAW_COST,
          src1.EOU_BRDN_COST,
          src1.EOU_BILL_RAW_COST,
          src1.EOU_BILL_BRDN_COST,
          src1.EOU_LABOR_RAW_COST,
          src1.EOU_LABOR_BRDN_COST,
          src1.EOU_BILL_LABOR_RAW_COST,
          src1.EOU_BILL_LABOR_BRDN_COST,
          src1.EOU_REVENUE_WRITEOFF,
          src1.G1_REVENUE,
          src1.G1_LABOR_REVENUE,
          src1.G1_RAW_COST,
          src1.G1_BRDN_COST,
          src1.G1_BILL_RAW_COST,
          src1.G1_BILL_BRDN_COST,
          src1.G1_LABOR_RAW_COST,
          src1.G1_LABOR_BRDN_COST,
          src1.G1_BILL_LABOR_RAW_COST,
          src1.G1_BILL_LABOR_BRDN_COST,
          src1.G1_REVENUE_WRITEOFF,
          src1.G2_REVENUE,
          src1.G2_LABOR_REVENUE,
          src1.G2_RAW_COST,
          src1.G2_BRDN_COST,
          src1.G2_BILL_RAW_COST,
          src1.G2_BILL_BRDN_COST,
          src1.G2_LABOR_RAW_COST,
          src1.G2_LABOR_BRDN_COST,
          src1.G2_BILL_LABOR_RAW_COST,
          src1.G2_BILL_LABOR_BRDN_COST,
          src1.G2_REVENUE_WRITEOFF,
          src1.LABOR_HRS,
          src1.BILL_LABOR_HRS,
          src1.QUANTITY,
          src1.BILL_QUANTITY
        from
          (
          select
            fin9.PROJECT_ID,
            nvl(map.NEW_PROJECT_ORGANIZATION_ID,
                fin9.PROJECT_ORGANIZATION_ID)       PROJECT_ORGANIZATION_ID,
            fin9.PROJECT_ORG_ID,
            fin9.PROJECT_TYPE_CLASS,
            fin9.WORK_TYPE_ID,
            fin9.EXP_EVT_TYPE_ID,
            fin9.TIME_ID,
            fin9.CALENDAR_TYPE,
            fin9.GL_CALENDAR_ID,
            fin9.PA_CALENDAR_ID,
            fin9.TXN_CURRENCY_CODE,
            sum(fin9.TXN_REVENUE)                   TXN_REVENUE,
            sum(fin9.TXN_LABOR_REVENUE)             TXN_LABOR_REVENUE,
            sum(fin9.TXN_RAW_COST)                  TXN_RAW_COST,
            sum(fin9.TXN_BRDN_COST)                 TXN_BRDN_COST,
            sum(fin9.TXN_BILL_RAW_COST)             TXN_BILL_RAW_COST,
            sum(fin9.TXN_BILL_BRDN_COST)            TXN_BILL_BRDN_COST,
            sum(fin9.TXN_LABOR_RAW_COST)            TXN_LABOR_RAW_COST,
            sum(fin9.TXN_LABOR_BRDN_COST)           TXN_LABOR_BRDN_COST,
            sum(fin9.TXN_BILL_LABOR_RAW_COST)       TXN_BILL_LABOR_RAW_COST,
            sum(fin9.TXN_BILL_LABOR_BRDN_COST)      TXN_BILL_LABOR_BRDN_COST,
            sum(fin9.TXN_REVENUE_WRITEOFF)          TXN_REVENUE_WRITEOFF,
            sum(fin9.PRJ_REVENUE)                   PRJ_REVENUE,
            sum(fin9.PRJ_LABOR_REVENUE)             PRJ_LABOR_REVENUE,
            sum(fin9.PRJ_RAW_COST)                  PRJ_RAW_COST,
            sum(fin9.PRJ_BRDN_COST)                 PRJ_BRDN_COST,
            sum(fin9.PRJ_BILL_RAW_COST)             PRJ_BILL_RAW_COST,
            sum(fin9.PRJ_BILL_BRDN_COST)            PRJ_BILL_BRDN_COST,
            sum(fin9.PRJ_LABOR_RAW_COST)            PRJ_LABOR_RAW_COST,
            sum(fin9.PRJ_LABOR_BRDN_COST)           PRJ_LABOR_BRDN_COST,
            sum(fin9.PRJ_BILL_LABOR_RAW_COST)       PRJ_BILL_LABOR_RAW_COST,
            sum(fin9.PRJ_BILL_LABOR_BRDN_COST)      PRJ_BILL_LABOR_BRDN_COST,
            sum(fin9.PRJ_REVENUE_WRITEOFF)          PRJ_REVENUE_WRITEOFF,
            sum(fin9.POU_REVENUE)                   POU_REVENUE,
            sum(fin9.POU_LABOR_REVENUE)             POU_LABOR_REVENUE,
            sum(fin9.POU_RAW_COST)                  POU_RAW_COST,
            sum(fin9.POU_BRDN_COST)                 POU_BRDN_COST,
            sum(fin9.POU_BILL_RAW_COST)             POU_BILL_RAW_COST,
            sum(fin9.POU_BILL_BRDN_COST)            POU_BILL_BRDN_COST,
            sum(fin9.POU_LABOR_RAW_COST)            POU_LABOR_RAW_COST,
            sum(fin9.POU_LABOR_BRDN_COST)           POU_LABOR_BRDN_COST,
            sum(fin9.POU_BILL_LABOR_RAW_COST)       POU_BILL_LABOR_RAW_COST,
            sum(fin9.POU_BILL_LABOR_BRDN_COST)      POU_BILL_LABOR_BRDN_COST,
            sum(fin9.POU_REVENUE_WRITEOFF)          POU_REVENUE_WRITEOFF,
            sum(fin9.EOU_REVENUE)                   EOU_REVENUE,
            sum(fin9.EOU_LABOR_REVENUE)             EOU_LABOR_REVENUE,
            sum(fin9.EOU_RAW_COST)                  EOU_RAW_COST,
            sum(fin9.EOU_BRDN_COST)                 EOU_BRDN_COST,
            sum(fin9.EOU_BILL_RAW_COST)             EOU_BILL_RAW_COST,
            sum(fin9.EOU_BILL_BRDN_COST)            EOU_BILL_BRDN_COST,
            sum(fin9.EOU_LABOR_RAW_COST)            EOU_LABOR_RAW_COST,
            sum(fin9.EOU_LABOR_BRDN_COST)           EOU_LABOR_BRDN_COST,
            sum(fin9.EOU_BILL_LABOR_RAW_COST)       EOU_BILL_LABOR_RAW_COST,
            sum(fin9.EOU_BILL_LABOR_BRDN_COST)      EOU_BILL_LABOR_BRDN_COST,
            sum(fin9.EOU_REVENUE_WRITEOFF)          EOU_REVENUE_WRITEOFF,
            sum(fin9.G1_REVENUE)                    G1_REVENUE,
            sum(fin9.G1_LABOR_REVENUE)              G1_LABOR_REVENUE,
            sum(fin9.G1_RAW_COST)                   G1_RAW_COST,
            sum(fin9.G1_BRDN_COST)                  G1_BRDN_COST,
            sum(fin9.G1_BILL_RAW_COST)              G1_BILL_RAW_COST,
            sum(fin9.G1_BILL_BRDN_COST)             G1_BILL_BRDN_COST,
            sum(fin9.G1_LABOR_RAW_COST)             G1_LABOR_RAW_COST,
            sum(fin9.G1_LABOR_BRDN_COST)            G1_LABOR_BRDN_COST,
            sum(fin9.G1_BILL_LABOR_RAW_COST)        G1_BILL_LABOR_RAW_COST,
            sum(fin9.G1_BILL_LABOR_BRDN_COST)       G1_BILL_LABOR_BRDN_COST,
            sum(fin9.G1_REVENUE_WRITEOFF)           G1_REVENUE_WRITEOFF,
            sum(fin9.G2_REVENUE)                    G2_REVENUE,
            sum(fin9.G2_LABOR_REVENUE)              G2_LABOR_REVENUE,
            sum(fin9.G2_RAW_COST)                   G2_RAW_COST,
            sum(fin9.G2_BRDN_COST)                  G2_BRDN_COST,
            sum(fin9.G2_BILL_RAW_COST)              G2_BILL_RAW_COST,
            sum(fin9.G2_BILL_BRDN_COST)             G2_BILL_BRDN_COST,
            sum(fin9.G2_LABOR_RAW_COST)             G2_LABOR_RAW_COST,
            sum(fin9.G2_LABOR_BRDN_COST)            G2_LABOR_BRDN_COST,
            sum(fin9.G2_BILL_LABOR_RAW_COST)        G2_BILL_LABOR_RAW_COST,
            sum(fin9.G2_BILL_LABOR_BRDN_COST)       G2_BILL_LABOR_BRDN_COST,
            sum(fin9.G2_REVENUE_WRITEOFF)           G2_REVENUE_WRITEOFF,
            sum(fin9.LABOR_HRS)                     LABOR_HRS,
            sum(fin9.BILL_LABOR_HRS)                BILL_LABOR_HRS,
            sum(fin9.QUANTITY)                      QUANTITY,
            sum(fin9.BILL_QUANTITY)                 BILL_QUANTITY
          from
            PJI_PJI_RMAP_FIN fin9_r,
            PJI_FM_AGGR_FIN9 fin9,
            (
            select
              map.PROJECT_ID,
              map.NEW_PROJECT_ORGANIZATION_ID
            from
              PJI_PJI_PROJ_BATCH_MAP map
            where
              map.NEW_PROJECT_ORGANIZATION_ID <> map.PROJECT_ORGANIZATION_ID
            ) map
          where
            fin9_r.WORKER_ID = p_worker_id and
            fin9.ROWID       = fin9_r. STG_ROWID and
            fin9.PROJECT_ID  = map.PROJECT_Id (+)
          group by
            fin9.PROJECT_ID,
            nvl(map.NEW_PROJECT_ORGANIZATION_ID,
                fin9.PROJECT_ORGANIZATION_ID),
            fin9.PROJECT_ORG_ID,
            fin9.PROJECT_TYPE_CLASS,
            fin9.WORK_TYPE_ID,
            fin9.EXP_EVT_TYPE_ID,
            fin9.TIME_ID,
            fin9.CALENDAR_TYPE,
            fin9.GL_CALENDAR_ID,
            fin9.PA_CALENDAR_ID,
            fin9.TXN_CURRENCY_CODE
          ) src1
        ) src2,
        PA_PROJECTS_ALL prj,
        PJI_ORG_EXTR_INFO info,
        (
          select 1   INVERT_ID from dual
                               where l_g1_currency_code is not null union all
          select 2   INVERT_ID from dual
                               where l_g2_currency_flag = 'Y' and
                                     l_g2_currency_code is not null union all
          select 4   INVERT_ID from dual union all
          select 8   INVERT_ID from dual
       -- select 16  INVERT_ID from dual  OMIT TXN CURRENCY FROM PJI
       --                      where l_txn_currency_flag = 'Y' union all
       -- select 32  INVERT_ID from dual  OMIT DETAIL SLICES FOR NOW
       --                      where l_g1_currency_code is not null union all
       -- select 64  INVERT_ID from dual
       --                      where l_g2_currency_flag = 'Y' and
       --                            l_g2_currency_code is not null union all
       -- select 128 INVERT_ID from dual union all
       -- select 256 INVERT_ID from dual
        ) invert
      where
        src2.PROJECT_ID              = prj.PROJECT_ID       and
        nvl(src2.PROJECT_ORG_ID, -1) = nvl(info.ORG_ID, -1)
      ) src3
    group by
      src3.WORKER_ID,
      src3.PROJECT_ID,
      src3.PROJECT_ORGANIZATION_ID,
      src3.PROJECT_ORG_ID,
      src3.PROJECT_TYPE_CLASS,
      src3.WORK_TYPE_ID,
      src3.EXP_EVT_TYPE_ID,
      src3.TIME_ID,
      src3.CALENDAR_TYPE,
      src3.GL_CALENDAR_ID,
      src3.PA_CALENDAR_ID,
      src3.DIFF_CURRENCY_CODE,
      src3.DIFF_ROWNUM,
      nvl(src3.CURRENCY_CODE, 'PJI$NULL'),
      src3.PERIOD_TYPE_ID;
Line: 557

    delete
    from   PJI_FM_AGGR_FIN9
    where  ROWID in (select STG_ROWID
                     from   PJI_PJI_RMAP_FIN
                     where  WORKER_ID = p_worker_id);
Line: 586

    insert /*+ append parallel(fin5_i) */ into PJI_FM_AGGR_FIN5 fin5_i
    (
      WORKER_ID,
      PROJECT_ID,
      PROJECT_ORG_ID,
      PROJECT_ORGANIZATION_ID,
      PROJECT_TYPE_CLASS,
      EXP_EVT_TYPE_ID,
      TIME_ID,
      PERIOD_TYPE_ID,
      CALENDAR_TYPE,
      GL_CALENDAR_ID,
      PA_CALENDAR_ID,
      CURR_RECORD_TYPE_ID,
      CURRENCY_CODE,
      REVENUE,
      LABOR_REVENUE,
      RAW_COST,
      BURDENED_COST,
      BILL_RAW_COST,
      BILL_BURDENED_COST,
      LABOR_RAW_COST,
      LABOR_BURDENED_COST,
      BILL_LABOR_RAW_COST,
      BILL_LABOR_BURDENED_COST,
      REVENUE_WRITEOFF,
      LABOR_HRS,
      BILL_LABOR_HRS,
      QUANTITY,
      BILL_QUANTITY
    )
    select /*+ parallel(tmp4) */
      p_worker_id,
      tmp4.PROJECT_ID,
      tmp4.PROJECT_ORG_ID,
      tmp4.PROJECT_ORGANIZATION_ID,
      tmp4.PROJECT_TYPE_CLASS,
      tmp4.EXP_EVT_TYPE_ID,
      tmp4.TIME_ID,
      tmp4.PERIOD_TYPE_ID,
      tmp4.CALENDAR_TYPE,
      tmp4.GL_CALENDAR_ID,
      tmp4.PA_CALENDAR_ID,
      tmp4.CURR_RECORD_TYPE_ID,
      tmp4.CURRENCY_CODE,
      sum(tmp4.REVENUE),
      sum(tmp4.LABOR_REVENUE),
      sum(tmp4.RAW_COST),
      sum(tmp4.BURDENED_COST),
      sum(tmp4.BILL_RAW_COST),
      sum(tmp4.BILL_BURDENED_COST),
      sum(tmp4.LABOR_RAW_COST),
      sum(tmp4.LABOR_BURDENED_COST),
      sum(tmp4.BILL_LABOR_RAW_COST),
      sum(tmp4.BILL_LABOR_BURDENED_COST),
      sum(tmp4.REVENUE_WRITEOFF),
      sum(tmp4.LABOR_HRS),
      sum(tmp4.BILL_LABOR_HRS),
      sum(QUANTITY),
      sum(BILL_QUANTITY)
    from
      PJI_FM_AGGR_FIN4 tmp4
    where
      tmp4.WORKER_ID = p_worker_id
    group by
      tmp4.PROJECT_ID,
      tmp4.PROJECT_ORG_ID,
      tmp4.PROJECT_ORGANIZATION_ID,
      tmp4.PROJECT_TYPE_CLASS,
      tmp4.EXP_EVT_TYPE_ID,
      tmp4.TIME_ID,
      tmp4.PERIOD_TYPE_ID,
      tmp4.CALENDAR_TYPE,
      tmp4.GL_CALENDAR_ID,
      tmp4.PA_CALENDAR_ID,
      tmp4.CURR_RECORD_TYPE_ID,
      tmp4.CURRENCY_CODE;
Line: 687

    insert /*+ append parallel(fin3_i) */ into PJI_FM_AGGR_FIN3 fin3_i
    (
      WORKER_ID,
      PROJECT_ID,
      PROJECT_ORG_ID,
      PROJECT_ORGANIZATION_ID,
      PROJECT_TYPE_CLASS,
      TIME_ID,
      PERIOD_TYPE_ID,
      CALENDAR_TYPE,
      GL_CALENDAR_ID,
      PA_CALENDAR_ID,
      CURR_RECORD_TYPE_ID,
      CURRENCY_CODE,
      REVENUE,
      LABOR_REVENUE,
      RAW_COST,
      BURDENED_COST,
      BILL_RAW_COST,
      BILL_BURDENED_COST,
      LABOR_RAW_COST,
      LABOR_BURDENED_COST,
      BILL_LABOR_RAW_COST,
      BILL_LABOR_BURDENED_COST,
      REVENUE_WRITEOFF,
      LABOR_HRS,
      BILL_LABOR_HRS,
      CURR_BGT_REVENUE,
      CURR_BGT_RAW_COST,
      CURR_BGT_BURDENED_COST,
      CURR_BGT_LABOR_HRS,
      ORIG_BGT_REVENUE,
      ORIG_BGT_RAW_COST,
      ORIG_BGT_BURDENED_COST,
      ORIG_BGT_LABOR_HRS,
      FORECAST_REVENUE,
      FORECAST_RAW_COST,
      FORECAST_BURDENED_COST,
      FORECAST_LABOR_HRS
    )
    select /*+ parallel(tmp5) */
      p_worker_id,
      tmp5.PROJECT_ID,
      tmp5.PROJECT_ORG_ID,
      tmp5.PROJECT_ORGANIZATION_ID,
      tmp5.PROJECT_TYPE_CLASS,
      tmp5.TIME_ID,
      tmp5.PERIOD_TYPE_ID,
      tmp5.CALENDAR_TYPE,
      tmp5.GL_CALENDAR_ID,
      tmp5.PA_CALENDAR_ID,
      tmp5.CURR_RECORD_TYPE_ID,
      tmp5.CURRENCY_CODE,
      sum(tmp5.REVENUE)                  REVENUE,
      sum(tmp5.LABOR_REVENUE)            LABOR_REVENUE,
      sum(tmp5.RAW_COST)                 RAW_COST,
      sum(tmp5.BURDENED_COST)            BURDENED_COST,
      sum(tmp5.BILL_RAW_COST)            BILL_RAW_COST,
      sum(tmp5.BILL_BURDENED_COST)       BILL_BURDENED_COST,
      sum(tmp5.LABOR_RAW_COST)           LABOR_RAW_COST,
      sum(tmp5.LABOR_BURDENED_COST)      LABOR_BURDENED_COST,
      sum(tmp5.BILL_LABOR_RAW_COST)      BILL_LABOR_RAW_COST,
      sum(tmp5.BILL_LABOR_BURDENED_COST) BILL_LABOR_BURDENED_COST,
      sum(tmp5.REVENUE_WRITEOFF)         REVENUE_WRITEOFF,
      sum(tmp5.LABOR_HRS)                LABOR_HRS,
      sum(tmp5.BILL_LABOR_HRS)           BILL_LABOR_HRS,
      to_number(null)                    CURR_BGT_REVENUE,
      to_number(null)                    CURR_BGT_RAW_COST,
      to_number(null)                    CURR_BGT_BURDENED_COST,
      to_number(null)                    CURR_BGT_LABOR_HRS,
      to_number(null)                    ORIG_BGT_REVENUE,
      to_number(null)                    ORIG_BGT_RAW_COST,
      to_number(null)                    ORIG_BGT_BURDENED_COST,
      to_number(null)                    ORIG_BGT_LABOR_HRS,
      to_number(null)                    FORECAST_REVENUE,
      to_number(null)                    FORECAST_RAW_COST,
      to_number(null)                    FORECAST_BURDENED_COST,
      to_number(null)                    FORECAST_LABOR_HRS
    from
      PJI_FM_AGGR_FIN5 tmp5
    where
      tmp5.WORKER_ID = p_worker_id
    group by
      tmp5.PROJECT_ID,
      tmp5.PROJECT_ORG_ID,
      tmp5.PROJECT_ORGANIZATION_ID,
      tmp5.PROJECT_TYPE_CLASS,
      tmp5.TIME_ID,
      tmp5.PERIOD_TYPE_ID,
      tmp5.CALENDAR_TYPE,
      tmp5.GL_CALENDAR_ID,
      tmp5.PA_CALENDAR_ID,
      tmp5.CURR_RECORD_TYPE_ID,
      tmp5.CURRENCY_CODE;
Line: 808

    insert /*+ append parallel(fin4_i) */ into PJI_FM_AGGR_FIN4 fin4_i -- in EXPAND_FPW_CAL_EN
    (
      WORKER_ID,
      PROJECT_ID,
      PROJECT_ORG_ID,
      PROJECT_ORGANIZATION_ID,
      PROJECT_TYPE_CLASS,
      EXP_EVT_TYPE_ID,
      WORK_TYPE_ID,
      TIME_ID,
      PERIOD_TYPE_ID,
      CALENDAR_TYPE,
      CURR_RECORD_TYPE_ID,
      CURRENCY_CODE,
      REVENUE,
      LABOR_REVENUE,
      RAW_COST,
      BURDENED_COST,
      BILL_RAW_COST,
      BILL_BURDENED_COST,
      LABOR_RAW_COST,
      LABOR_BURDENED_COST,
      BILL_LABOR_RAW_COST,
      BILL_LABOR_BURDENED_COST,
      REVENUE_WRITEOFF,
      LABOR_HRS,
      BILL_LABOR_HRS,
      QUANTITY,
      BILL_QUANTITY
    )
    select /*+ ordered
               full(time) use_hash(time) swap_join_inputs(time)
               full(fin)  use_hash(fin)  parallel(fin) */
      p_worker_id                           WORKER_ID,
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.EXP_EVT_TYPE_ID,
      fin.WORK_TYPE_ID,
      case when grouping(time.ENT_YEAR_ID)   = 0 and
                grouping(time.ENT_QTR_ID)    = 0 and
                grouping(time.ENT_PERIOD_ID) = 0
           then time.ENT_PERIOD_ID
           when grouping(time.ENT_YEAR_ID)   = 0 and
                grouping(time.ENT_QTR_ID)    = 0 and
                grouping(time.ENT_PERIOD_ID) = 1
           then time.ENT_QTR_ID
           when grouping(time.ENT_YEAR_ID)   = 0 and
                grouping(time.ENT_QTR_ID)    = 1 and
                grouping(time.ENT_PERIOD_ID) = 1
           then time.ENT_YEAR_ID
           end                              TIME_ID,
      case when grouping(time.ENT_YEAR_ID)   = 0 and
                grouping(time.ENT_QTR_ID)    = 0 and
                grouping(time.ENT_PERIOD_ID) = 0
           then 32
           when grouping(time.ENT_YEAR_ID)   = 0 and
                grouping(time.ENT_QTR_ID)    = 0 and
                grouping(time.ENT_PERIOD_ID) = 1
           then 64
           when grouping(time.ENT_YEAR_ID)   = 0 and
                grouping(time.ENT_QTR_ID)    = 1 and
                grouping(time.ENT_PERIOD_ID) = 1
           then 128
           end                              PERIOD_TYPE_ID,
      'E'                                   CALENDAR_TYPE,
      bitand(fin.CURR_RECORD_TYPE_ID, 247)  CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE,
      sum(fin.REVENUE)                      REVENUE,
      sum(fin.LABOR_REVENUE)                LABOR_REVENUE,
      sum(fin.RAW_COST)                     RAW_COST,
      sum(fin.BURDENED_COST)                BURDENED_COST,
      sum(fin.BILL_RAW_COST)                BILL_RAW_COST,
      sum(fin.BILL_BURDENED_COST)           BILL_BURDENED_COST,
      sum(fin.LABOR_RAW_COST)               LABOR_RAW_COST,
      sum(fin.LABOR_BURDENED_COST)          LABOR_BURDENED_COST,
      sum(fin.BILL_LABOR_RAW_COST)          BILL_LABOR_RAW_COST,
      sum(fin.BILL_LABOR_BURDENED_COST)     BILL_LABOR_BURDENED_COST,
      sum(fin.REVENUE_WRITEOFF)             REVENUE_WRITEOFF,
      sum(fin.LABOR_HRS)                    LABOR_HRS,
      sum(fin.BILL_LABOR_HRS)               BILL_LABOR_HRS,
      sum(fin.QUANTITY)                     QUANTITY,
      sum(fin.BILL_QUANTITY)                BILL_QUANTITY
    from
      FII_TIME_DAY     time,
      PJI_FM_AGGR_FIN4 fin
    where
      fin.WORKER_ID           = p_worker_id   and
      fin.PERIOD_TYPE_ID      = 1             and
      fin.CALENDAR_TYPE       = 'C'           and
      fin.CURR_RECORD_TYPE_ID not in (8, 256) and
      fin.TIME_ID             = time.REPORT_DATE_JULIAN
    group by
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.EXP_EVT_TYPE_ID,
      fin.WORK_TYPE_ID,
      rollup (time.ENT_YEAR_ID,
              time.ENT_QTR_ID,
              time.ENT_PERIOD_ID),
      bitand(fin.CURR_RECORD_TYPE_ID, 247),
      fin.CURRENCY_CODE
    having
      not (grouping(time.ENT_YEAR_ID)   = 1 and
           grouping(time.ENT_QTR_ID)    = 1 and
           grouping(time.ENT_PERIOD_ID) = 1);
Line: 944

    insert /*+ append parallel(fin4_i) */ into PJI_FM_AGGR_FIN4 fin4_i -- in EXPAND_FPW_CAL_PA
    (
      WORKER_ID,
      PROJECT_ID,
      PROJECT_ORG_ID,
      PROJECT_ORGANIZATION_ID,
      PROJECT_TYPE_CLASS,
      EXP_EVT_TYPE_ID,
      WORK_TYPE_ID,
      TIME_ID,
      PERIOD_TYPE_ID,
      CALENDAR_TYPE,
      CURR_RECORD_TYPE_ID,
      CURRENCY_CODE,
      REVENUE,
      LABOR_REVENUE,
      RAW_COST,
      BURDENED_COST,
      BILL_RAW_COST,
      BILL_BURDENED_COST,
      LABOR_RAW_COST,
      LABOR_BURDENED_COST,
      BILL_LABOR_RAW_COST,
      BILL_LABOR_BURDENED_COST,
      REVENUE_WRITEOFF,
      LABOR_HRS,
      BILL_LABOR_HRS,
      QUANTITY,
      BILL_QUANTITY
    )
    select /*+ ordered
               full(time) use_hash(time) parallel(time) swap_join_inputs(time)
               full(fin)  use_hash(fin)  parallel(fin) */
      p_worker_id                           WORKER_ID,
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.EXP_EVT_TYPE_ID,
      fin.WORK_TYPE_ID,
      case when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 0
           then time.CAL_PERIOD_ID
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 1
           then time.CAL_QTR_ID
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 1 and
                grouping(time.CAL_PERIOD_ID) = 1
           then time.CAL_YEAR_ID
           end                              TIME_ID,
      case when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 0
           then 32
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 1
           then 64
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 1 and
                grouping(time.CAL_PERIOD_ID) = 1
           then 128
           end                              PERIOD_TYPE_ID,
      'P'                                   CALENDAR_TYPE,
      fin.CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE,
      sum(fin.REVENUE)                      REVENUE,
      sum(fin.LABOR_REVENUE)                LABOR_REVENUE,
      sum(fin.RAW_COST)                     RAW_COST,
      sum(fin.BURDENED_COST)                BURDENED_COST,
      sum(fin.BILL_RAW_COST)                BILL_RAW_COST,
      sum(fin.BILL_BURDENED_COST)           BILL_BURDENED_COST,
      sum(fin.LABOR_RAW_COST)               LABOR_RAW_COST,
      sum(fin.LABOR_BURDENED_COST)          LABOR_BURDENED_COST,
      sum(fin.BILL_LABOR_RAW_COST)          BILL_LABOR_RAW_COST,
      sum(fin.BILL_LABOR_BURDENED_COST)     BILL_LABOR_BURDENED_COST,
      sum(fin.REVENUE_WRITEOFF)             REVENUE_WRITEOFF,
      sum(fin.LABOR_HRS)                    LABOR_HRS,
      sum(fin.BILL_LABOR_HRS)               BILL_LABOR_HRS,
      sum(fin.QUANTITY)                     QUANTITY,
      sum(fin.BILL_QUANTITY)                BILL_QUANTITY
    from
      FII_TIME_CAL_DAY_MV time,
      PJI_FM_AGGR_FIN4    fin
    where
      fin.WORKER_ID                      = p_worker_id        and
      fin.PERIOD_TYPE_ID                 = 1                  and
      fin.CALENDAR_TYPE                  = 'P'                and
      to_date(to_char(fin.TIME_ID), 'J') = time.REPORT_DATE   and
      fin.PA_CALENDAR_ID                 = time.CALENDAR_ID
    group by
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.EXP_EVT_TYPE_ID,
      fin.WORK_TYPE_ID,
      rollup (time.CAL_YEAR_ID,
              time.CAL_QTR_ID,
              time.CAL_PERIOD_ID),
      fin.CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE
    having
      not (grouping(time.CAL_YEAR_ID)   = 1 and
           grouping(time.CAL_QTR_ID)    = 1 and
           grouping(time.CAL_PERIOD_ID) = 1);
Line: 1080

    insert /*+ append parallel(fin4_i) */ into PJI_FM_AGGR_FIN4 fin4_i -- in EXPAND_FPW_CAL_GL
    (
      WORKER_ID,
      PROJECT_ID,
      PROJECT_ORG_ID,
      PROJECT_ORGANIZATION_ID,
      PROJECT_TYPE_CLASS,
      EXP_EVT_TYPE_ID,
      WORK_TYPE_ID,
      TIME_ID,
      PERIOD_TYPE_ID,
      CALENDAR_TYPE,
      CURR_RECORD_TYPE_ID,
      CURRENCY_CODE,
      REVENUE,
      LABOR_REVENUE,
      RAW_COST,
      BURDENED_COST,
      BILL_RAW_COST,
      BILL_BURDENED_COST,
      LABOR_RAW_COST,
      LABOR_BURDENED_COST,
      BILL_LABOR_RAW_COST,
      BILL_LABOR_BURDENED_COST,
      REVENUE_WRITEOFF,
      LABOR_HRS,
      BILL_LABOR_HRS,
      QUANTITY,
      BILL_QUANTITY
    )
    select /*+ ordered
               full(time) use_hash(time) parallel(time) swap_join_inputs(time)
               full(fin)  use_hash(fin)  parallel(fin) */
      p_worker_id                           WORKER_ID,
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.EXP_EVT_TYPE_ID,
      fin.WORK_TYPE_ID,
      case when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 0
           then time.CAL_PERIOD_ID
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 1
           then time.CAL_QTR_ID
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 1 and
                grouping(time.CAL_PERIOD_ID) = 1
           then time.CAL_YEAR_ID
           end                              TIME_ID,
      case when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 0
           then 32
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 1
           then 64
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 1 and
                grouping(time.CAL_PERIOD_ID) = 1
           then 128
           end                              PERIOD_TYPE_ID,
      'G'                                   CALENDAR_TYPE,
      fin.CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE,
      sum(fin.REVENUE)                      REVENUE,
      sum(fin.LABOR_REVENUE)                LABOR_REVENUE,
      sum(fin.RAW_COST)                     RAW_COST,
      sum(fin.BURDENED_COST)                BURDENED_COST,
      sum(fin.BILL_RAW_COST)                BILL_RAW_COST,
      sum(fin.BILL_BURDENED_COST)           BILL_BURDENED_COST,
      sum(fin.LABOR_RAW_COST)               LABOR_RAW_COST,
      sum(fin.LABOR_BURDENED_COST)          LABOR_BURDENED_COST,
      sum(fin.BILL_LABOR_RAW_COST)          BILL_LABOR_RAW_COST,
      sum(fin.BILL_LABOR_BURDENED_COST)     BILL_LABOR_BURDENED_COST,
      sum(fin.REVENUE_WRITEOFF)             REVENUE_WRITEOFF,
      sum(fin.LABOR_HRS)                    LABOR_HRS,
      sum(fin.BILL_LABOR_HRS)               BILL_LABOR_HRS,
      sum(fin.QUANTITY)                     QUANTITY,
      sum(fin.BILL_QUANTITY)                BILL_QUANTITY
    from
      FII_TIME_CAL_DAY_MV time,
      PJI_FM_AGGR_FIN4    fin
    where
      fin.WORKER_ID                      = p_worker_id        and
      fin.PERIOD_TYPE_ID                 = 1                  and
      fin.CALENDAR_TYPE                  = 'C'                and
      to_date(to_char(fin.TIME_ID), 'J') = time.REPORT_DATE   and
      fin.GL_CALENDAR_ID                 = time.CALENDAR_ID
    group by
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.EXP_EVT_TYPE_ID,
      fin.WORK_TYPE_ID,
      rollup (time.CAL_YEAR_ID,
              time.CAL_QTR_ID,
              time.CAL_PERIOD_ID),
      fin.CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE
    having
      not (grouping(time.CAL_YEAR_ID)   = 1 and
           grouping(time.CAL_QTR_ID)    = 1 and
           grouping(time.CAL_PERIOD_ID) = 1);
Line: 1213

    insert /*+ append parallel(fin4_i) */ into PJI_FM_AGGR_FIN4 fin4_i -- in EXPAND_FPW_CAL_WK
    (
      WORKER_ID,
      PROJECT_ID,
      PROJECT_ORG_ID,
      PROJECT_ORGANIZATION_ID,
      PROJECT_TYPE_CLASS,
      EXP_EVT_TYPE_ID,
      WORK_TYPE_ID,
      TIME_ID,
      PERIOD_TYPE_ID,
      CALENDAR_TYPE,
      CURR_RECORD_TYPE_ID,
      CURRENCY_CODE,
      REVENUE,
      LABOR_REVENUE,
      RAW_COST,
      BURDENED_COST,
      BILL_RAW_COST,
      BILL_BURDENED_COST,
      LABOR_RAW_COST,
      LABOR_BURDENED_COST,
      BILL_LABOR_RAW_COST,
      BILL_LABOR_BURDENED_COST,
      REVENUE_WRITEOFF,
      LABOR_HRS,
      BILL_LABOR_HRS,
      QUANTITY,
      BILL_QUANTITY
    )
    select /*+ ordered
               full(time) use_hash(time) swap_join_inputs(time)
               full(fin)  use_hash(fin)  parallel(fin) */
      p_worker_id                           WORKER_ID,
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.EXP_EVT_TYPE_ID,
      fin.WORK_TYPE_ID,
      time.WEEK_ID                          TIME_ID,
      16                                    PERIOD_TYPE_ID,
      'E'                                   CALENDAR_TYPE,
      bitand(fin.CURR_RECORD_TYPE_ID, 247)  CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE,
      sum(fin.REVENUE)                      REVENUE,
      sum(fin.LABOR_REVENUE)                LABOR_REVENUE,
      sum(fin.RAW_COST)                     RAW_COST,
      sum(fin.BURDENED_COST)                BURDENED_COST,
      sum(fin.BILL_RAW_COST)                BILL_RAW_COST,
      sum(fin.BILL_BURDENED_COST)           BILL_BURDENED_COST,
      sum(fin.LABOR_RAW_COST)               LABOR_RAW_COST,
      sum(fin.LABOR_BURDENED_COST)          LABOR_BURDENED_COST,
      sum(fin.BILL_LABOR_RAW_COST)          BILL_LABOR_RAW_COST,
      sum(fin.BILL_LABOR_BURDENED_COST)     BILL_LABOR_BURDENED_COST,
      sum(fin.REVENUE_WRITEOFF)             REVENUE_WRITEOFF,
      sum(fin.LABOR_HRS)                    LABOR_HRS,
      sum(fin.BILL_LABOR_HRS)               BILL_LABOR_HRS,
      sum(fin.QUANTITY)                     QUANTITY,
      sum(fin.BILL_QUANTITY)                BILL_QUANTITY
    from
      FII_TIME_DAY     time,
      PJI_FM_AGGR_FIN4 fin
    where
      fin.WORKER_ID           = p_worker_id   and
      fin.PERIOD_TYPE_ID      = 1             and
      fin.CALENDAR_TYPE       = 'C'           and
      fin.CURR_RECORD_TYPE_ID not in (8, 256) and
      fin.TIME_ID             = time.REPORT_DATE_JULIAN
    group by
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.EXP_EVT_TYPE_ID,
      fin.WORK_TYPE_ID,
      time.WEEK_ID,
      bitand(fin.CURR_RECORD_TYPE_ID, 247),
      fin.CURRENCY_CODE;
Line: 1315

    insert /*+ append parallel(fin5_i) */ into PJI_FM_AGGR_FIN5 fin5_i -- in EXPAND_FPE_CAL_EN
    (
      WORKER_ID,
      PROJECT_ID,
      PROJECT_ORG_ID,
      PROJECT_ORGANIZATION_ID,
      PROJECT_TYPE_CLASS,
      EXP_EVT_TYPE_ID,
      TIME_ID,
      PERIOD_TYPE_ID,
      CALENDAR_TYPE,
      CURR_RECORD_TYPE_ID,
      CURRENCY_CODE,
      REVENUE,
      LABOR_REVENUE,
      RAW_COST,
      BURDENED_COST,
      BILL_RAW_COST,
      BILL_BURDENED_COST,
      LABOR_RAW_COST,
      LABOR_BURDENED_COST,
      BILL_LABOR_RAW_COST,
      BILL_LABOR_BURDENED_COST,
      REVENUE_WRITEOFF,
      LABOR_HRS,
      BILL_LABOR_HRS,
      QUANTITY,
      BILL_QUANTITY
    )
    select /*+ ordered
               full(time) use_hash(time) swap_join_inputs(time)
               full(fin)  use_hash(fin)  parallel(fin)   */
      p_worker_id                           WORKER_ID,
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.EXP_EVT_TYPE_ID,
      case when grouping(time.ENT_YEAR_ID)   = 0 and
                grouping(time.ENT_QTR_ID)    = 0 and
                grouping(time.ENT_PERIOD_ID) = 0
           then time.ENT_PERIOD_ID
           when grouping(time.ENT_YEAR_ID)   = 0 and
                grouping(time.ENT_QTR_ID)    = 0 and
                grouping(time.ENT_PERIOD_ID) = 1
           then time.ENT_QTR_ID
           when grouping(time.ENT_YEAR_ID)   = 0 and
                grouping(time.ENT_QTR_ID)    = 1 and
                grouping(time.ENT_PERIOD_ID) = 1
           then time.ENT_YEAR_ID
           end                              TIME_ID,
      case when grouping(time.ENT_YEAR_ID)   = 0 and
                grouping(time.ENT_QTR_ID)    = 0 and
                grouping(time.ENT_PERIOD_ID) = 0
           then 32
           when grouping(time.ENT_YEAR_ID)   = 0 and
                grouping(time.ENT_QTR_ID)    = 0 and
                grouping(time.ENT_PERIOD_ID) = 1
           then 64
           when grouping(time.ENT_YEAR_ID)   = 0 and
                grouping(time.ENT_QTR_ID)    = 1 and
                grouping(time.ENT_PERIOD_ID) = 1
           then 128
           end                              PERIOD_TYPE_ID,
      'E'                                   CALENDAR_TYPE,
      bitand(fin.CURR_RECORD_TYPE_ID, 247)  CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE,
      sum(fin.REVENUE)                      REVENUE,
      sum(fin.LABOR_REVENUE)                LABOR_REVENUE,
      sum(fin.RAW_COST)                     RAW_COST,
      sum(fin.BURDENED_COST)                BURDENED_COST,
      sum(fin.BILL_RAW_COST)                BILL_RAW_COST,
      sum(fin.BILL_BURDENED_COST)           BILL_BURDENED_COST,
      sum(fin.LABOR_RAW_COST)               LABOR_RAW_COST,
      sum(fin.LABOR_BURDENED_COST)          LABOR_BURDENED_COST,
      sum(fin.BILL_LABOR_RAW_COST)          BILL_LABOR_RAW_COST,
      sum(fin.BILL_LABOR_BURDENED_COST)     BILL_LABOR_BURDENED_COST,
      sum(fin.REVENUE_WRITEOFF)             REVENUE_WRITEOFF,
      sum(fin.LABOR_HRS)                    LABOR_HRS,
      sum(fin.BILL_LABOR_HRS)               BILL_LABOR_HRS,
      sum(fin.QUANTITY)                     QUANTITY,
      sum(fin.BILL_QUANTITY)                BILL_QUANTITY
    from
      FII_TIME_DAY     time,
      PJI_FM_AGGR_FIN5 fin
    where
      fin.WORKER_ID           = p_worker_id   and
      fin.PERIOD_TYPE_ID      = 1             and
      fin.CALENDAR_TYPE       = 'C'           and
      fin.CURR_RECORD_TYPE_ID not in (8, 256) and
      fin.TIME_ID             = time.REPORT_DATE_JULIAN
    group by
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.EXP_EVT_TYPE_ID,
      rollup (time.ENT_YEAR_ID,
              time.ENT_QTR_ID,
              time.ENT_PERIOD_ID),
      bitand(fin.CURR_RECORD_TYPE_ID, 247),
      fin.CURRENCY_CODE
    having
      not (grouping(time.ENT_YEAR_ID)   = 1 and
           grouping(time.ENT_QTR_ID)    = 1 and
           grouping(time.ENT_PERIOD_ID) = 1);
Line: 1448

    insert /*+ append parallel(fin5_i) */ into PJI_FM_AGGR_FIN5 fin5_i -- in EXPAND_FPE_CAL_PA
    (
      WORKER_ID,
      PROJECT_ID,
      PROJECT_ORG_ID,
      PROJECT_ORGANIZATION_ID,
      PROJECT_TYPE_CLASS,
      EXP_EVT_TYPE_ID,
      TIME_ID,
      PERIOD_TYPE_ID,
      CALENDAR_TYPE,
      CURR_RECORD_TYPE_ID,
      CURRENCY_CODE,
      REVENUE,
      LABOR_REVENUE,
      RAW_COST,
      BURDENED_COST,
      BILL_RAW_COST,
      BILL_BURDENED_COST,
      LABOR_RAW_COST,
      LABOR_BURDENED_COST,
      BILL_LABOR_RAW_COST,
      BILL_LABOR_BURDENED_COST,
      REVENUE_WRITEOFF,
      LABOR_HRS,
      BILL_LABOR_HRS,
      QUANTITY,
      BILL_QUANTITY
    )
    select /*+ ordered
               full(time) use_hash(time) parallel(time) swap_join_inputs(time)
               full(fin)  use_hash(fin)  parallel(fin) */
      p_worker_id                           WORKER_ID,
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.EXP_EVT_TYPE_ID,
      case when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 0
           then time.CAL_PERIOD_ID
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 1
           then time.CAL_QTR_ID
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 1 and
                grouping(time.CAL_PERIOD_ID) = 1
           then time.CAL_YEAR_ID
           end                              TIME_ID,
      case when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 0
           then 32
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 1
           then 64
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 1 and
                grouping(time.CAL_PERIOD_ID) = 1
           then 128
           end                              PERIOD_TYPE_ID,
      'P'                                   CALENDAR_TYPE,
      fin.CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE,
      sum(fin.REVENUE)                      REVENUE,
      sum(fin.LABOR_REVENUE)                LABOR_REVENUE,
      sum(fin.RAW_COST)                     RAW_COST,
      sum(fin.BURDENED_COST)                BURDENED_COST,
      sum(fin.BILL_RAW_COST)                BILL_RAW_COST,
      sum(fin.BILL_BURDENED_COST)           BILL_BURDENED_COST,
      sum(fin.LABOR_RAW_COST)               LABOR_RAW_COST,
      sum(fin.LABOR_BURDENED_COST)          LABOR_BURDENED_COST,
      sum(fin.BILL_LABOR_RAW_COST)          BILL_LABOR_RAW_COST,
      sum(fin.BILL_LABOR_BURDENED_COST)     BILL_LABOR_BURDENED_COST,
      sum(fin.REVENUE_WRITEOFF)             REVENUE_WRITEOFF,
      sum(fin.LABOR_HRS)                    LABOR_HRS,
      sum(fin.BILL_LABOR_HRS)               BILL_LABOR_HRS,
      sum(fin.QUANTITY)                     QUANTITY,
      sum(fin.BILL_QUANTITY)                BILL_QUANTITY
    from
      FII_TIME_CAL_DAY_MV time,
      PJI_FM_AGGR_FIN5    fin
    where
      fin.WORKER_ID                      = p_worker_id        and
      fin.PERIOD_TYPE_ID                 = 1                  and
      fin.CALENDAR_TYPE                  = 'P'                and
      to_date(to_char(fin.TIME_ID), 'J') = time.REPORT_DATE   and
      fin.PA_CALENDAR_ID                 = time.CALENDAR_ID
    group by
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.EXP_EVT_TYPE_ID,
      rollup (time.CAL_YEAR_ID,
              time.CAL_QTR_ID,
              time.CAL_PERIOD_ID),
      fin.CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE
    having
      not (grouping(time.CAL_YEAR_ID)   = 1 and
           grouping(time.CAL_QTR_ID)    = 1 and
           grouping(time.CAL_PERIOD_ID) = 1);
Line: 1581

    insert /*+ append parallel(fin5_i) */ into PJI_FM_AGGR_FIN5 fin5_i -- in EXPAND_FPE_CAL_GL
    (
      WORKER_ID,
      PROJECT_ID,
      PROJECT_ORG_ID,
      PROJECT_ORGANIZATION_ID,
      PROJECT_TYPE_CLASS,
      EXP_EVT_TYPE_ID,
      TIME_ID,
      PERIOD_TYPE_ID,
      CALENDAR_TYPE,
      CURR_RECORD_TYPE_ID,
      CURRENCY_CODE,
      REVENUE,
      LABOR_REVENUE,
      RAW_COST,
      BURDENED_COST,
      BILL_RAW_COST,
      BILL_BURDENED_COST,
      LABOR_RAW_COST,
      LABOR_BURDENED_COST,
      BILL_LABOR_RAW_COST,
      BILL_LABOR_BURDENED_COST,
      REVENUE_WRITEOFF,
      LABOR_HRS,
      BILL_LABOR_HRS,
      QUANTITY,
      BILL_QUANTITY
    )
    select /*+ ordered
               full(time) use_hash(time) parallel(time) swap_join_inputs(time)
               full(fin)  use_hash(fin)  parallel(fin) */
      p_worker_id                           WORKER_ID,
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.EXP_EVT_TYPE_ID,
      case when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 0
           then time.CAL_PERIOD_ID
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 1
           then time.CAL_QTR_ID
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 1 and
                grouping(time.CAL_PERIOD_ID) = 1
           then time.CAL_YEAR_ID
           end                              TIME_ID,
      case when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 0
           then 32
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 1
           then 64
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 1 and
                grouping(time.CAL_PERIOD_ID) = 1
           then 128
           end                              PERIOD_TYPE_ID,
      'G'                                   CALENDAR_TYPE,
      fin.CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE,
      sum(fin.REVENUE)                      REVENUE,
      sum(fin.LABOR_REVENUE)                LABOR_REVENUE,
      sum(fin.RAW_COST)                     RAW_COST,
      sum(fin.BURDENED_COST)                BURDENED_COST,
      sum(fin.BILL_RAW_COST)                BILL_RAW_COST,
      sum(fin.BILL_BURDENED_COST)           BILL_BURDENED_COST,
      sum(fin.LABOR_RAW_COST)               LABOR_RAW_COST,
      sum(fin.LABOR_BURDENED_COST)          LABOR_BURDENED_COST,
      sum(fin.BILL_LABOR_RAW_COST)          BILL_LABOR_RAW_COST,
      sum(fin.BILL_LABOR_BURDENED_COST)     BILL_LABOR_BURDENED_COST,
      sum(fin.REVENUE_WRITEOFF)             REVENUE_WRITEOFF,
      sum(fin.LABOR_HRS)                    LABOR_HRS,
      sum(fin.BILL_LABOR_HRS)               BILL_LABOR_HRS,
      sum(fin.QUANTITY)                     QUANTITY,
      sum(fin.BILL_QUANTITY)                BILL_QUANTITY
    from
      FII_TIME_CAL_DAY_MV time,
      PJI_FM_AGGR_FIN5    fin
    where
      fin.WORKER_ID                      = p_worker_id        and
      fin.PERIOD_TYPE_ID                 = 1                  and
      fin.CALENDAR_TYPE                  = 'C'                and
      to_date(to_char(fin.TIME_ID), 'J') = time.REPORT_DATE   and
      fin.GL_CALENDAR_ID                 = time.CALENDAR_ID
    group by
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.EXP_EVT_TYPE_ID,
      rollup (time.CAL_YEAR_ID,
              time.CAL_QTR_ID,
              time.CAL_PERIOD_ID),
      fin.CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE
    having
      not (grouping(time.CAL_YEAR_ID)   = 1 and
           grouping(time.CAL_QTR_ID)    = 1 and
           grouping(time.CAL_PERIOD_ID) = 1);
Line: 1711

    insert /*+ append parallel(fin5_i) */ into PJI_FM_AGGR_FIN5 fin5_i -- in EXPAND_FPE_CAL_WK
    (
      WORKER_ID,
      PROJECT_ID,
      PROJECT_ORG_ID,
      PROJECT_ORGANIZATION_ID,
      PROJECT_TYPE_CLASS,
      EXP_EVT_TYPE_ID,
      TIME_ID,
      PERIOD_TYPE_ID,
      CALENDAR_TYPE,
      CURR_RECORD_TYPE_ID,
      CURRENCY_CODE,
      REVENUE,
      LABOR_REVENUE,
      RAW_COST,
      BURDENED_COST,
      BILL_RAW_COST,
      BILL_BURDENED_COST,
      LABOR_RAW_COST,
      LABOR_BURDENED_COST,
      BILL_LABOR_RAW_COST,
      BILL_LABOR_BURDENED_COST,
      REVENUE_WRITEOFF,
      LABOR_HRS,
      BILL_LABOR_HRS,
      QUANTITY,
      BILL_QUANTITY
    )
    select /*+ ordered
               full(time) use_hash(time) swap_join_inputs(time)
               full(fin)  use_hash(fin)  parallel(fin) */
      p_worker_id                           WORKER_ID,
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.EXP_EVT_TYPE_ID,
      time.WEEK_ID                          TIME_ID,
      16                                    PERIOD_TYPE_ID,
      'E'                                   CALENDAR_TYPE,
      bitand(fin.CURR_RECORD_TYPE_ID, 247)  CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE,
      sum(fin.REVENUE)                      REVENUE,
      sum(fin.LABOR_REVENUE)                LABOR_REVENUE,
      sum(fin.RAW_COST)                     RAW_COST,
      sum(fin.BURDENED_COST)                BURDENED_COST,
      sum(fin.BILL_RAW_COST)                BILL_RAW_COST,
      sum(fin.BILL_BURDENED_COST)           BILL_BURDENED_COST,
      sum(fin.LABOR_RAW_COST)               LABOR_RAW_COST,
      sum(fin.LABOR_BURDENED_COST)          LABOR_BURDENED_COST,
      sum(fin.BILL_LABOR_RAW_COST)          BILL_LABOR_RAW_COST,
      sum(fin.BILL_LABOR_BURDENED_COST)     BILL_LABOR_BURDENED_COST,
      sum(fin.REVENUE_WRITEOFF)             REVENUE_WRITEOFF,
      sum(fin.LABOR_HRS)                    LABOR_HRS,
      sum(fin.BILL_LABOR_HRS)               BILL_LABOR_HRS,
      sum(fin.QUANTITY)                     QUANTITY,
      sum(fin.BILL_QUANTITY)                BILL_QUANTITY
    from
      FII_TIME_DAY     time,
      PJI_FM_AGGR_FIN5 fin
    where
      fin.WORKER_ID           = p_worker_id   and
      fin.PERIOD_TYPE_ID      = 1             and
      fin.CALENDAR_TYPE       = 'C'           and
      fin.CURR_RECORD_TYPE_ID not in (8, 256) and
      fin.TIME_ID             = time.REPORT_DATE_JULIAN
    group by
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.EXP_EVT_TYPE_ID,
      time.WEEK_ID,
      bitand(fin.CURR_RECORD_TYPE_ID, 247),
      fin.CURRENCY_CODE;
Line: 1814

    insert /*+ append parallel(fin3_i) */ into PJI_FM_AGGR_FIN3 fin3_i -- in EXPAND_FPP_CAL_EN
    (
      WORKER_ID,
      PROJECT_ID,
      PROJECT_ORG_ID,
      PROJECT_ORGANIZATION_ID,
      PROJECT_TYPE_CLASS,
      TIME_ID,
      PERIOD_TYPE_ID,
      CALENDAR_TYPE,
      CURR_RECORD_TYPE_ID,
      CURRENCY_CODE,
      REVENUE,
      LABOR_REVENUE,
      RAW_COST,
      BURDENED_COST,
      BILL_RAW_COST,
      BILL_BURDENED_COST,
      LABOR_RAW_COST,
      LABOR_BURDENED_COST,
      BILL_LABOR_RAW_COST,
      BILL_LABOR_BURDENED_COST,
      REVENUE_WRITEOFF,
      LABOR_HRS,
      BILL_LABOR_HRS,
      CURR_BGT_REVENUE,
      CURR_BGT_RAW_COST,
      CURR_BGT_BURDENED_COST,
      CURR_BGT_LABOR_HRS,
      ORIG_BGT_REVENUE,
      ORIG_BGT_RAW_COST,
      ORIG_BGT_BURDENED_COST,
      ORIG_BGT_LABOR_HRS,
      FORECAST_REVENUE,
      FORECAST_RAW_COST,
      FORECAST_BURDENED_COST,
      FORECAST_LABOR_HRS
    )
    select
      p_worker_id,
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.TIME_ID,
      fin.PERIOD_TYPE_ID,
      fin.CALENDAR_TYPE,
      fin.CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE,
      sum(fin.REVENUE),
      sum(fin.LABOR_REVENUE),
      sum(fin.RAW_COST),
      sum(fin.BURDENED_COST),
      sum(fin.BILL_RAW_COST),
      sum(fin.BILL_BURDENED_COST),
      sum(fin.LABOR_RAW_COST),
      sum(fin.LABOR_BURDENED_COST),
      sum(fin.BILL_LABOR_RAW_COST),
      sum(fin.BILL_LABOR_BURDENED_COST),
      sum(fin.REVENUE_WRITEOFF),
      sum(fin.LABOR_HRS),
      sum(fin.BILL_LABOR_HRS),
      sum(fin.CURR_BGT_REVENUE),
      sum(fin.CURR_BGT_RAW_COST),
      sum(fin.CURR_BGT_BURDENED_COST),
      sum(fin.CURR_BGT_LABOR_HRS),
      sum(fin.ORIG_BGT_REVENUE),
      sum(fin.ORIG_BGT_RAW_COST),
      sum(fin.ORIG_BGT_BURDENED_COST),
      sum(fin.ORIG_BGT_LABOR_HRS),
      sum(fin.FORECAST_REVENUE),
      sum(fin.FORECAST_RAW_COST),
      sum(fin.FORECAST_BURDENED_COST),
      sum(fin.FORECAST_LABOR_HRS)
    from
    (
    select /*+ ordered
               full(time) use_hash(time) swap_join_inputs(time)
               full(fin)  use_hash(fin)  parallel(fin) */
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      case when grouping(time.ENT_YEAR_ID)   = 0 and
                grouping(time.ENT_QTR_ID)    = 0 and
                grouping(time.ENT_PERIOD_ID) = 0
           then time.ENT_PERIOD_ID
           when grouping(time.ENT_YEAR_ID)   = 0 and
                grouping(time.ENT_QTR_ID)    = 0 and
                grouping(time.ENT_PERIOD_ID) = 1
           then time.ENT_QTR_ID
           when grouping(time.ENT_YEAR_ID)   = 0 and
                grouping(time.ENT_QTR_ID)    = 1 and
                grouping(time.ENT_PERIOD_ID) = 1
           then time.ENT_YEAR_ID
           end                              TIME_ID,
      case when grouping(time.ENT_YEAR_ID)   = 0 and
                grouping(time.ENT_QTR_ID)    = 0 and
                grouping(time.ENT_PERIOD_ID) = 0
           then 32
           when grouping(time.ENT_YEAR_ID)   = 0 and
                grouping(time.ENT_QTR_ID)    = 0 and
                grouping(time.ENT_PERIOD_ID) = 1
           then 64
           when grouping(time.ENT_YEAR_ID)   = 0 and
                grouping(time.ENT_QTR_ID)    = 1 and
                grouping(time.ENT_PERIOD_ID) = 1
           then 128
           end                              PERIOD_TYPE_ID,
      'E'                                   CALENDAR_TYPE,
      bitand(fin.CURR_RECORD_TYPE_ID, 247)  CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE,
      sum(fin.REVENUE)                      REVENUE,
      sum(fin.LABOR_REVENUE)                LABOR_REVENUE,
      sum(fin.RAW_COST)                     RAW_COST,
      sum(fin.BURDENED_COST)                BURDENED_COST,
      sum(fin.BILL_RAW_COST)                BILL_RAW_COST,
      sum(fin.BILL_BURDENED_COST)           BILL_BURDENED_COST,
      sum(fin.LABOR_RAW_COST)               LABOR_RAW_COST,
      sum(fin.LABOR_BURDENED_COST)          LABOR_BURDENED_COST,
      sum(fin.BILL_LABOR_RAW_COST)          BILL_LABOR_RAW_COST,
      sum(fin.BILL_LABOR_BURDENED_COST)     BILL_LABOR_BURDENED_COST,
      sum(fin.REVENUE_WRITEOFF)             REVENUE_WRITEOFF,
      sum(fin.LABOR_HRS)                    LABOR_HRS,
      sum(fin.BILL_LABOR_HRS)               BILL_LABOR_HRS,
      to_number(null)                       CURR_BGT_REVENUE,
      to_number(null)                       CURR_BGT_RAW_COST,
      to_number(null)                       CURR_BGT_BURDENED_COST,
      to_number(null)                       CURR_BGT_LABOR_HRS,
      to_number(null)                       ORIG_BGT_REVENUE,
      to_number(null)                       ORIG_BGT_RAW_COST,
      to_number(null)                       ORIG_BGT_BURDENED_COST,
      to_number(null)                       ORIG_BGT_LABOR_HRS,
      to_number(null)                       FORECAST_REVENUE,
      to_number(null)                       FORECAST_RAW_COST,
      to_number(null)                       FORECAST_BURDENED_COST,
      to_number(null)                       FORECAST_LABOR_HRS
    from
      FII_TIME_DAY     time,
      PJI_FM_AGGR_FIN3 fin
    where
      fin.WORKER_ID           = p_worker_id   and
      fin.PERIOD_TYPE_ID      = 1             and
      fin.CALENDAR_TYPE       = 'C'           and
      fin.CURR_RECORD_TYPE_ID not in (8, 256) and
      fin.TIME_ID             = time.REPORT_DATE_JULIAN
    group by
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      rollup (time.ENT_YEAR_ID,
              time.ENT_QTR_ID,
              time.ENT_PERIOD_ID),
      bitand(fin.CURR_RECORD_TYPE_ID, 247),
      fin.CURRENCY_CODE
    having
      not (grouping(time.ENT_YEAR_ID)   = 1 and
           grouping(time.ENT_QTR_ID)    = 1 and
           grouping(time.ENT_PERIOD_ID) = 1)
    union all
    select /*+ ordered
               full(period) use_hash(period) swap_join_inputs(period)
               full(qtr)    use_hash(qtr)    swap_join_inputs(qtr)
               full(tmp1)   use_hash(tmp1)   parallel(tmp1) */  -- budget data
      tmp1.PROJECT_ID,
      tmp1.PROJECT_ORG_ID,
      tmp1.PROJECT_ORGANIZATION_ID,
      tmp1.PROJECT_TYPE_CLASS,
      case when grouping(qtr.ENT_YEAR_ID)      = 0 and
                grouping(period.ENT_QTR_ID)    = 0 and
                grouping(period.ENT_PERIOD_ID) = 0
           then period.ENT_PERIOD_ID
           when grouping(qtr.ENT_YEAR_ID)      = 0 and
                grouping(period.ENT_QTR_ID)    = 0 and
                grouping(period.ENT_PERIOD_ID) = 1
           then period.ENT_QTR_ID
           when grouping(qtr.ENT_YEAR_ID)      = 0 and
                grouping(period.ENT_QTR_ID)    = 1 and
                grouping(period.ENT_PERIOD_ID) = 1
           then qtr.ENT_YEAR_ID
           end                              TIME_ID,
      case when grouping(qtr.ENT_YEAR_ID)      = 0 and
                grouping(period.ENT_QTR_ID)    = 0 and
                grouping(period.ENT_PERIOD_ID) = 0
           then 32
           when grouping(qtr.ENT_YEAR_ID)      = 0 and
                grouping(period.ENT_QTR_ID)    = 0 and
                grouping(period.ENT_PERIOD_ID) = 1
           then 64
           when grouping(qtr.ENT_YEAR_ID)      = 0 and
                grouping(period.ENT_QTR_ID)    = 1 and
                grouping(period.ENT_PERIOD_ID) = 1
           then 128
           end                              PERIOD_TYPE_ID,
      'E'                                   CALENDAR_TYPE,
      bitand(tmp1.CURR_RECORD_TYPE_ID, 247) CURR_RECORD_TYPE_ID,
      tmp1.CURRENCY_CODE,
      to_number(null)                       REVENUE,
      to_number(null)                       LABOR_REVENUE,
      to_number(null)                       RAW_COST,
      to_number(null)                       BURDENED_COST,
      to_number(null)                       BILL_RAW_COST,
      to_number(null)                       BILL_BURDENED_COST,
      to_number(null)                       LABOR_RAW_COST,
      to_number(null)                       LABOR_BURDENED_COST,
      to_number(null)                       BILL_LABOR_RAW_COST,
      to_number(null)                       BILL_LABOR_BURDENED_COST,
      to_number(null)                       REVENUE_WRITEOFF,
      to_number(null)                       LABOR_HRS,
      to_number(null)                       BILL_LABOR_HRS,
      sum(tmp1.CURR_BGT_REVENUE)            CURR_BGT_REVENUE,
      sum(tmp1.CURR_BGT_RAW_COST)           CURR_BGT_RAW_COST,
      sum(tmp1.CURR_BGT_BRDN_COST)          CURR_BGT_BURDENED_COST,
      sum(tmp1.CURR_BGT_LABOR_HRS)          CURR_BGT_LABOR_HRS,
      sum(tmp1.CURR_ORIG_BGT_REVENUE)       ORIG_BGT_REVENUE,
      sum(tmp1.CURR_ORIG_BGT_RAW_COST)      ORIG_BGT_RAW_COST,
      sum(tmp1.CURR_ORIG_BGT_BRDN_COST)     ORIG_BGT_BURDENED_COST,
      sum(tmp1.CURR_ORIG_BGT_LABOR_HRS)     ORIG_BGT_LABOR_HRS,
      sum(tmp1.CURR_FORECAST_REVENUE)       FORECAST_REVENUE,
      sum(tmp1.CURR_FORECAST_RAW_COST)      FORECAST_RAW_COST,
      sum(tmp1.CURR_FORECAST_BRDN_COST)     FORECAST_BURDENED_COST,
      sum(tmp1.CURR_FORECAST_LABOR_HRS)     FORECAST_LABOR_HRS
    from
      FII_TIME_ENT_PERIOD period,
      FII_TIME_ENT_QTR    qtr,
      PJI_FM_AGGR_PLN     tmp1
    where
      tmp1.CALENDAR_TYPE_CODE  = 'ENT'                and
      tmp1.CURR_RECORD_TYPE_ID not in (8, 256)        and
      tmp1.TIME_ID             = period.ENT_PERIOD_ID and
      period.ENT_QTR_ID        = qtr.ENT_QTR_ID
    group by
      tmp1.PROJECT_ID,
      tmp1.PROJECT_ORG_ID,
      tmp1.PROJECT_ORGANIZATION_ID,
      tmp1.PROJECT_TYPE_CLASS,
      rollup (qtr.ENT_YEAR_ID,
              period.ENT_QTR_ID,
              period.ENT_PERIOD_ID),
      bitand(tmp1.CURR_RECORD_TYPE_ID, 247),
      tmp1.CURRENCY_CODE
    having
      not (grouping(qtr.ENT_YEAR_ID)      = 1 and
           grouping(period.ENT_QTR_ID)    = 1 and
           grouping(period.ENT_PERIOD_ID) = 1)
    union all
    select /*+ ordered full(map) parallel(map)
                       index(fpp, PJI_FP_PROJ_F_N2) use_nl(fpp) */  -- budget reversals
      fpp.PROJECT_ID,
      fpp.PROJECT_ORG_ID,
      fpp.PROJECT_ORGANIZATION_ID,
      fpp.PROJECT_TYPE_CLASS,
      fpp.TIME_ID,
      fpp.PERIOD_TYPE_ID,
      fpp.CALENDAR_TYPE,
      fpp.CURR_RECORD_TYPE_ID,
      fpp.CURRENCY_CODE,
      to_number(null)                       REVENUE,
      to_number(null)                       LABOR_REVENUE,
      to_number(null)                       RAW_COST,
      to_number(null)                       BURDENED_COST,
      to_number(null)                       BILL_RAW_COST,
      to_number(null)                       BILL_BURDENED_COST,
      to_number(null)                       LABOR_RAW_COST,
      to_number(null)                       LABOR_BURDENED_COST,
      to_number(null)                       BILL_LABOR_RAW_COST,
      to_number(null)                       BILL_LABOR_BURDENED_COST,
      to_number(null)                       REVENUE_WRITEOFF,
      to_number(null)                       LABOR_HRS,
      to_number(null)                       BILL_LABOR_HRS,
      case when map.REVENUE_BUDGET_C_VERSION <>
                map.REVENUE_BUDGET_N_VERSION
           then -fpp.CURR_BGT_REVENUE
           else to_number(null)
           end                              CURR_BGT_REVENUE,
      case when map.COST_BUDGET_C_VERSION <>
                map.COST_BUDGET_N_VERSION
           then -fpp.CURR_BGT_RAW_COST
           else to_number(null)
           end                              CURR_BGT_RAW_COST,
      case when map.COST_BUDGET_C_VERSION <>
                map.COST_BUDGET_N_VERSION
           then -fpp.CURR_BGT_BURDENED_COST
           else to_number(null)
           end                              CURR_BGT_BURDENED_COST,
      case when map.COST_BUDGET_C_VERSION <>
                map.COST_BUDGET_N_VERSION
           then -fpp.CURR_BGT_LABOR_HRS
           else to_number(null)
           end                              CURR_BGT_LABOR_HRS,
      case when map.REVENUE_BUDGET_CO_VERSION <>
                map.REVENUE_BUDGET_NO_VERSION
           then -fpp.ORIG_BGT_REVENUE
           else to_number(null)
           end                              ORIG_BGT_REVENUE,
      case when map.COST_BUDGET_CO_VERSION <>
                map.COST_BUDGET_NO_VERSION
           then -fpp.ORIG_BGT_RAW_COST
           else to_number(null)
           end                              ORIG_BGT_RAW_COST,
      case when map.COST_BUDGET_CO_VERSION <>
                map.COST_BUDGET_NO_VERSION
           then -fpp.ORIG_BGT_BURDENED_COST
           else to_number(null)
           end                              ORIG_BGT_BURDENED_COST,
      case when map.COST_BUDGET_CO_VERSION <>
                map.COST_BUDGET_NO_VERSION
           then -fpp.ORIG_BGT_LABOR_HRS
           else to_number(null)
           end                              ORIG_BGT_LABOR_HRS,
      case when map.REVENUE_FORECAST_C_VERSION <>
                map.REVENUE_FORECAST_N_VERSION
           then -fpp.FORECAST_REVENUE
           else to_number(null)
           end                              FORECAST_REVENUE,
      case when map.COST_FORECAST_C_VERSION <>
                map.COST_FORECAST_N_VERSION
           then -fpp.FORECAST_RAW_COST
           else to_number(null)
           end                              FORECAST_RAW_COST,
      case when map.COST_FORECAST_C_VERSION <>
                map.COST_FORECAST_N_VERSION
           then -fpp.FORECAST_BURDENED_COST
           else to_number(null)
           end                              FORECAST_BURDENED_COST,
      case when map.COST_FORECAST_C_VERSION <>
                map.COST_FORECAST_N_VERSION
           then -fpp.FORECAST_LABOR_HRS
           else to_number(null)
           end                              FORECAST_LABOR_HRS
    from
      PJI_PJI_PROJ_BATCH_MAP map,
      PJI_FP_PROJ_F fpp
    where
      l_extraction_type <> 'FULL' and
      map.WORKER_ID = p_worker_id and
      (map.REVENUE_BUDGET_C_VERSION   <> map.REVENUE_BUDGET_N_VERSION   or
       map.COST_BUDGET_C_VERSION      <> map.COST_BUDGET_N_VERSION      or
       map.REVENUE_BUDGET_CO_VERSION  <> map.REVENUE_BUDGET_NO_VERSION  or
       map.COST_BUDGET_CO_VERSION     <> map.COST_BUDGET_NO_VERSION     or
       map.REVENUE_FORECAST_C_VERSION <> map.REVENUE_FORECAST_N_VERSION or
       map.COST_FORECAST_C_VERSION    <> map.COST_FORECAST_N_VERSION) and
      map.PROJECT_ID = fpp.PROJECT_ID and
      fpp.CALENDAR_TYPE = 'E' and
      fpp.PERIOD_TYPE_ID <> 1
    ) fin
    group by
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.TIME_ID,
      fin.PERIOD_TYPE_ID,
      fin.CALENDAR_TYPE,
      fin.CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE;
Line: 2202

    insert /*+ append parallel(fin3_i) */ into PJI_FM_AGGR_FIN3 fin3_i -- in EXPAND_FPP_CAL_PA
    (
      WORKER_ID,
      PROJECT_ID,
      PROJECT_ORG_ID,
      PROJECT_ORGANIZATION_ID,
      PROJECT_TYPE_CLASS,
      TIME_ID,
      PERIOD_TYPE_ID,
      CALENDAR_TYPE,
      CURR_RECORD_TYPE_ID,
      CURRENCY_CODE,
      REVENUE,
      LABOR_REVENUE,
      RAW_COST,
      BURDENED_COST,
      BILL_RAW_COST,
      BILL_BURDENED_COST,
      LABOR_RAW_COST,
      LABOR_BURDENED_COST,
      BILL_LABOR_RAW_COST,
      BILL_LABOR_BURDENED_COST,
      REVENUE_WRITEOFF,
      LABOR_HRS,
      BILL_LABOR_HRS,
      CURR_BGT_REVENUE,
      CURR_BGT_RAW_COST,
      CURR_BGT_BURDENED_COST,
      CURR_BGT_LABOR_HRS,
      ORIG_BGT_REVENUE,
      ORIG_BGT_RAW_COST,
      ORIG_BGT_BURDENED_COST,
      ORIG_BGT_LABOR_HRS,
      FORECAST_REVENUE,
      FORECAST_RAW_COST,
      FORECAST_BURDENED_COST,
      FORECAST_LABOR_HRS
    )
    select
      p_worker_id,
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.TIME_ID,
      fin.PERIOD_TYPE_ID,
      fin.CALENDAR_TYPE,
      fin.CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE,
      sum(fin.REVENUE),
      sum(fin.LABOR_REVENUE),
      sum(fin.RAW_COST),
      sum(fin.BURDENED_COST),
      sum(fin.BILL_RAW_COST),
      sum(fin.BILL_BURDENED_COST),
      sum(fin.LABOR_RAW_COST),
      sum(fin.LABOR_BURDENED_COST),
      sum(fin.BILL_LABOR_RAW_COST),
      sum(fin.BILL_LABOR_BURDENED_COST),
      sum(fin.REVENUE_WRITEOFF),
      sum(fin.LABOR_HRS),
      sum(fin.BILL_LABOR_HRS),
      sum(fin.CURR_BGT_REVENUE),
      sum(fin.CURR_BGT_RAW_COST),
      sum(fin.CURR_BGT_BURDENED_COST),
      sum(fin.CURR_BGT_LABOR_HRS),
      sum(fin.ORIG_BGT_REVENUE),
      sum(fin.ORIG_BGT_RAW_COST),
      sum(fin.ORIG_BGT_BURDENED_COST),
      sum(fin.ORIG_BGT_LABOR_HRS),
      sum(fin.FORECAST_REVENUE),
      sum(fin.FORECAST_RAW_COST),
      sum(fin.FORECAST_BURDENED_COST),
      sum(fin.FORECAST_LABOR_HRS)
    from
    (
    select /*+ ordered
               full(time) use_hash(time) parallel(time) swap_join_inputs(time)
               full(fin)  use_hash(fin)  parallel(fin) */
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      case when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 0
           then time.CAL_PERIOD_ID
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 1
           then time.CAL_QTR_ID
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 1 and
                grouping(time.CAL_PERIOD_ID) = 1
           then time.CAL_YEAR_ID
           end                              TIME_ID,
      case when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 0
           then 32
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 1
           then 64
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 1 and
                grouping(time.CAL_PERIOD_ID) = 1
           then 128
           end                              PERIOD_TYPE_ID,
      'P'                                   CALENDAR_TYPE,
      fin.CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE,
      sum(fin.REVENUE)                      REVENUE,
      sum(fin.LABOR_REVENUE)                LABOR_REVENUE,
      sum(fin.RAW_COST)                     RAW_COST,
      sum(fin.BURDENED_COST)                BURDENED_COST,
      sum(fin.BILL_RAW_COST)                BILL_RAW_COST,
      sum(fin.BILL_BURDENED_COST)           BILL_BURDENED_COST,
      sum(fin.LABOR_RAW_COST)               LABOR_RAW_COST,
      sum(fin.LABOR_BURDENED_COST)          LABOR_BURDENED_COST,
      sum(fin.BILL_LABOR_RAW_COST)          BILL_LABOR_RAW_COST,
      sum(fin.BILL_LABOR_BURDENED_COST)     BILL_LABOR_BURDENED_COST,
      sum(fin.REVENUE_WRITEOFF)             REVENUE_WRITEOFF,
      sum(fin.LABOR_HRS)                    LABOR_HRS,
      sum(fin.BILL_LABOR_HRS)               BILL_LABOR_HRS,
      to_number(null)                       CURR_BGT_REVENUE,
      to_number(null)                       CURR_BGT_RAW_COST,
      to_number(null)                       CURR_BGT_BURDENED_COST,
      to_number(null)                       CURR_BGT_LABOR_HRS,
      to_number(null)                       ORIG_BGT_REVENUE,
      to_number(null)                       ORIG_BGT_RAW_COST,
      to_number(null)                       ORIG_BGT_BURDENED_COST,
      to_number(null)                       ORIG_BGT_LABOR_HRS,
      to_number(null)                       FORECAST_REVENUE,
      to_number(null)                       FORECAST_RAW_COST,
      to_number(null)                       FORECAST_BURDENED_COST,
      to_number(null)                       FORECAST_LABOR_HRS
    from
      FII_TIME_CAL_DAY_MV time,
      PJI_FM_AGGR_FIN3    fin
    where
      fin.WORKER_ID                      = p_worker_id        and
      fin.PERIOD_TYPE_ID                 = 1                  and
      fin.CALENDAR_TYPE                  = 'P'                and
      to_date(to_char(fin.TIME_ID), 'J') = time.REPORT_DATE   and
      fin.PA_CALENDAR_ID                 = time.CALENDAR_ID
    group by
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      rollup (time.CAL_YEAR_ID,
              time.CAL_QTR_ID,
              time.CAL_PERIOD_ID),
      fin.CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE
    having
      not (grouping(time.CAL_YEAR_ID)   = 1 and
           grouping(time.CAL_QTR_ID)    = 1 and
           grouping(time.CAL_PERIOD_ID) = 1)
    union all
    select /*+ ordered
               full(period) use_hash(period) swap_join_inputs(period)
               full(qtr)    use_hash(qtr)    swap_join_inputs(qtr)
               full(tmp1)   use_hash(tmp1)   parallel(tmp1) */ -- budget data
      tmp1.PROJECT_ID,
      tmp1.PROJECT_ORG_ID,
      tmp1.PROJECT_ORGANIZATION_ID,
      tmp1.PROJECT_TYPE_CLASS,
      case when grouping(qtr.CAL_YEAR_ID)      = 0 and
                grouping(period.CAL_QTR_ID)    = 0 and
                grouping(period.CAL_PERIOD_ID) = 0
           then period.CAL_PERIOD_ID
           when grouping(qtr.CAL_YEAR_ID)      = 0 and
                grouping(period.CAL_QTR_ID)    = 0 and
                grouping(period.CAL_PERIOD_ID) = 1
           then period.CAL_QTR_ID
           when grouping(qtr.CAL_YEAR_ID)      = 0 and
                grouping(period.CAL_QTR_ID)    = 1 and
                grouping(period.CAL_PERIOD_ID) = 1
           then qtr.CAL_YEAR_ID
           end                              TIME_ID,
      case when grouping(qtr.CAL_YEAR_ID)      = 0 and
                grouping(period.CAL_QTR_ID)    = 0 and
                grouping(period.CAL_PERIOD_ID) = 0
           then 32
           when grouping(qtr.CAL_YEAR_ID)      = 0 and
                grouping(period.CAL_QTR_ID)    = 0 and
                grouping(period.CAL_PERIOD_ID) = 1
           then 64
           when grouping(qtr.CAL_YEAR_ID)      = 0 and
                grouping(period.CAL_QTR_ID)    = 1 and
                grouping(period.CAL_PERIOD_ID) = 1
           then 128
           end                              PERIOD_TYPE_ID,
      'P'                                   CALENDAR_TYPE,
      tmp1.CURR_RECORD_TYPE_ID,
      tmp1.CURRENCY_CODE,
      to_number(null)                       REVENUE,
      to_number(null)                       LABOR_REVENUE,
      to_number(null)                       RAW_COST,
      to_number(null)                       BURDENED_COST,
      to_number(null)                       BILL_RAW_COST,
      to_number(null)                       BILL_BURDENED_COST,
      to_number(null)                       LABOR_RAW_COST,
      to_number(null)                       LABOR_BURDENED_COST,
      to_number(null)                       BILL_LABOR_RAW_COST,
      to_number(null)                       BILL_LABOR_BURDENED_COST,
      to_number(null)                       REVENUE_WRITEOFF,
      to_number(null)                       LABOR_HRS,
      to_number(null)                       BILL_LABOR_HRS,
      sum(tmp1.CURR_BGT_REVENUE)            CURR_BGT_REVENUE,
      sum(tmp1.CURR_BGT_RAW_COST)           CURR_BGT_RAW_COST,
      sum(tmp1.CURR_BGT_BRDN_COST)          CURR_BGT_BURDENED_COST,
      sum(tmp1.CURR_BGT_LABOR_HRS)          CURR_BGT_LABOR_HRS,
      sum(tmp1.CURR_ORIG_BGT_REVENUE)       ORIG_BGT_REVENUE,
      sum(tmp1.CURR_ORIG_BGT_RAW_COST)      ORIG_BGT_RAW_COST,
      sum(tmp1.CURR_ORIG_BGT_BRDN_COST)     ORIG_BGT_BURDENED_COST,
      sum(tmp1.CURR_ORIG_BGT_LABOR_HRS)     ORIG_BGT_LABOR_HRS,
      sum(tmp1.CURR_FORECAST_REVENUE)       FORECAST_REVENUE,
      sum(tmp1.CURR_FORECAST_RAW_COST)      FORECAST_RAW_COST,
      sum(tmp1.CURR_FORECAST_BRDN_COST)     FORECAST_BURDENED_COST,
      sum(tmp1.CURR_FORECAST_LABOR_HRS)     FORECAST_LABOR_HRS
    from
      FII_TIME_CAL_PERIOD period,
      FII_TIME_CAL_QTR    qtr,
      PJI_FM_AGGR_PLN     tmp1
    where
      tmp1.CALENDAR_TYPE_CODE = 'PA'               and
      tmp1.TIME_ID            = period.CAL_PERIOD_ID and
      period.CAL_QTR_ID       = qtr.CAL_QTR_ID
    group by
      tmp1.PROJECT_ID,
      tmp1.PROJECT_ORG_ID,
      tmp1.PROJECT_ORGANIZATION_ID,
      tmp1.PROJECT_TYPE_CLASS,
      rollup (qtr.CAL_YEAR_ID,
              period.CAL_QTR_ID,
              period.CAL_PERIOD_ID),
      tmp1.CURR_RECORD_TYPE_ID,
      tmp1.CURRENCY_CODE
    having
      not (grouping(qtr.CAL_YEAR_ID)      = 1 and
           grouping(period.CAL_QTR_ID)    = 1 and
           grouping(period.CAL_PERIOD_ID) = 1)
    union all
    select /*+ ordered full(map) parallel(map)
                       index(fpp, PJI_FP_PROJ_F_N2) use_nl(fpp) */  -- budget reversals
      fpp.PROJECT_ID,
      fpp.PROJECT_ORG_ID,
      fpp.PROJECT_ORGANIZATION_ID,
      fpp.PROJECT_TYPE_CLASS,
      fpp.TIME_ID,
      fpp.PERIOD_TYPE_ID,
      fpp.CALENDAR_TYPE,
      fpp.CURR_RECORD_TYPE_ID,
      fpp.CURRENCY_CODE,
      to_number(null)                       REVENUE,
      to_number(null)                       LABOR_REVENUE,
      to_number(null)                       RAW_COST,
      to_number(null)                       BURDENED_COST,
      to_number(null)                       BILL_RAW_COST,
      to_number(null)                       BILL_BURDENED_COST,
      to_number(null)                       LABOR_RAW_COST,
      to_number(null)                       LABOR_BURDENED_COST,
      to_number(null)                       BILL_LABOR_RAW_COST,
      to_number(null)                       BILL_LABOR_BURDENED_COST,
      to_number(null)                       REVENUE_WRITEOFF,
      to_number(null)                       LABOR_HRS,
      to_number(null)                       BILL_LABOR_HRS,
      case when map.REVENUE_BUDGET_C_VERSION <>
                map.REVENUE_BUDGET_N_VERSION
           then -fpp.CURR_BGT_REVENUE
           else to_number(null)
           end                              CURR_BGT_REVENUE,
      case when map.COST_BUDGET_C_VERSION <>
                map.COST_BUDGET_N_VERSION
           then -fpp.CURR_BGT_RAW_COST
           else to_number(null)
           end                              CURR_BGT_RAW_COST,
      case when map.COST_BUDGET_C_VERSION <>
                map.COST_BUDGET_N_VERSION
           then -fpp.CURR_BGT_BURDENED_COST
           else to_number(null)
           end                              CURR_BGT_BURDENED_COST,
      case when map.COST_BUDGET_C_VERSION <>
                map.COST_BUDGET_N_VERSION
           then -fpp.CURR_BGT_LABOR_HRS
           else to_number(null)
           end                              CURR_BGT_LABOR_HRS,
      case when map.REVENUE_BUDGET_CO_VERSION <>
                map.REVENUE_BUDGET_NO_VERSION
           then -fpp.ORIG_BGT_REVENUE
           else to_number(null)
           end                              ORIG_BGT_REVENUE,
      case when map.COST_BUDGET_CO_VERSION <>
                map.COST_BUDGET_NO_VERSION
           then -fpp.ORIG_BGT_RAW_COST
           else to_number(null)
           end                              ORIG_BGT_RAW_COST,
      case when map.COST_BUDGET_CO_VERSION <>
                map.COST_BUDGET_NO_VERSION
           then -fpp.ORIG_BGT_BURDENED_COST
           else to_number(null)
           end                              ORIG_BGT_BURDENED_COST,
      case when map.COST_BUDGET_CO_VERSION <>
                map.COST_BUDGET_NO_VERSION
           then -fpp.ORIG_BGT_LABOR_HRS
           else to_number(null)
           end                              ORIG_BGT_LABOR_HRS,
      case when map.REVENUE_FORECAST_C_VERSION <>
                map.REVENUE_FORECAST_N_VERSION
           then -fpp.FORECAST_REVENUE
           else to_number(null)
           end                              FORECAST_REVENUE,
      case when map.COST_FORECAST_C_VERSION <>
                map.COST_FORECAST_N_VERSION
           then -fpp.FORECAST_RAW_COST
           else to_number(null)
           end                              FORECAST_RAW_COST,
      case when map.COST_FORECAST_C_VERSION <>
                map.COST_FORECAST_N_VERSION
           then -fpp.FORECAST_BURDENED_COST
           else to_number(null)
           end                              FORECAST_BURDENED_COST,
      case when map.COST_FORECAST_C_VERSION <>
                map.COST_FORECAST_N_VERSION
           then -fpp.FORECAST_LABOR_HRS
           else to_number(null)
           end                              FORECAST_LABOR_HRS
    from
      PJI_PJI_PROJ_BATCH_MAP map,
      PJI_FP_PROJ_F fpp
    where
      l_extraction_type <> 'FULL' and
      map.WORKER_ID = p_worker_id and
      (map.REVENUE_BUDGET_C_VERSION   <> map.REVENUE_BUDGET_N_VERSION   or
       map.COST_BUDGET_C_VERSION      <> map.COST_BUDGET_N_VERSION      or
       map.REVENUE_BUDGET_CO_VERSION  <> map.REVENUE_BUDGET_NO_VERSION  or
       map.COST_BUDGET_CO_VERSION     <> map.COST_BUDGET_NO_VERSION     or
       map.REVENUE_FORECAST_C_VERSION <> map.REVENUE_FORECAST_N_VERSION or
       map.COST_FORECAST_C_VERSION    <> map.COST_FORECAST_N_VERSION) and
      map.PROJECT_ID = fpp.PROJECT_ID and
      fpp.CALENDAR_TYPE = 'P' and
      fpp.PERIOD_TYPE_ID <> 1
    ) fin
    group by
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.TIME_ID,
      fin.PERIOD_TYPE_ID,
      fin.CALENDAR_TYPE,
      fin.CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE;
Line: 2589

    insert /*+ append parallel(fin3_i) */ into PJI_FM_AGGR_FIN3 fin3_i -- in EXPAND_FPP_CAL_GL
    (
      WORKER_ID,
      PROJECT_ID,
      PROJECT_ORG_ID,
      PROJECT_ORGANIZATION_ID,
      PROJECT_TYPE_CLASS,
      TIME_ID,
      PERIOD_TYPE_ID,
      CALENDAR_TYPE,
      CURR_RECORD_TYPE_ID,
      CURRENCY_CODE,
      REVENUE,
      LABOR_REVENUE,
      RAW_COST,
      BURDENED_COST,
      BILL_RAW_COST,
      BILL_BURDENED_COST,
      LABOR_RAW_COST,
      LABOR_BURDENED_COST,
      BILL_LABOR_RAW_COST,
      BILL_LABOR_BURDENED_COST,
      REVENUE_WRITEOFF,
      LABOR_HRS,
      BILL_LABOR_HRS,
      CURR_BGT_REVENUE,
      CURR_BGT_RAW_COST,
      CURR_BGT_BURDENED_COST,
      CURR_BGT_LABOR_HRS,
      ORIG_BGT_REVENUE,
      ORIG_BGT_RAW_COST,
      ORIG_BGT_BURDENED_COST,
      ORIG_BGT_LABOR_HRS,
      FORECAST_REVENUE,
      FORECAST_RAW_COST,
      FORECAST_BURDENED_COST,
      FORECAST_LABOR_HRS
    )
    select
      p_worker_id,
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.TIME_ID,
      fin.PERIOD_TYPE_ID,
      fin.CALENDAR_TYPE,
      decode(fin.PERIOD_TYPE_ID,
             32, fin.CURR_RECORD_TYPE_ID,
                 bitand(fin.CURR_RECORD_TYPE_ID,
                        247))               CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE,
      sum(fin.REVENUE),
      sum(fin.LABOR_REVENUE),
      sum(fin.RAW_COST),
      sum(fin.BURDENED_COST),
      sum(fin.BILL_RAW_COST),
      sum(fin.BILL_BURDENED_COST),
      sum(fin.LABOR_RAW_COST),
      sum(fin.LABOR_BURDENED_COST),
      sum(fin.BILL_LABOR_RAW_COST),
      sum(fin.BILL_LABOR_BURDENED_COST),
      sum(fin.REVENUE_WRITEOFF),
      sum(fin.LABOR_HRS),
      sum(fin.BILL_LABOR_HRS),
      sum(fin.CURR_BGT_REVENUE),
      sum(fin.CURR_BGT_RAW_COST),
      sum(fin.CURR_BGT_BURDENED_COST),
      sum(fin.CURR_BGT_LABOR_HRS),
      sum(fin.ORIG_BGT_REVENUE),
      sum(fin.ORIG_BGT_RAW_COST),
      sum(fin.ORIG_BGT_BURDENED_COST),
      sum(fin.ORIG_BGT_LABOR_HRS),
      sum(fin.FORECAST_REVENUE),
      sum(fin.FORECAST_RAW_COST),
      sum(fin.FORECAST_BURDENED_COST),
      sum(fin.FORECAST_LABOR_HRS)
    from
    (
    select /*+ ordered
               full(time) use_hash(time) parallel(time) swap_join_inputs(time)
               full(fin)  use_hash(fin)  parallel(fin) */
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      case when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 0
           then time.CAL_PERIOD_ID
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 1
           then time.CAL_QTR_ID
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 1 and
                grouping(time.CAL_PERIOD_ID) = 1
           then time.CAL_YEAR_ID
           end                              TIME_ID,
      case when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 0
           then 32
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 0 and
                grouping(time.CAL_PERIOD_ID) = 1
           then 64
           when grouping(time.CAL_YEAR_ID)   = 0 and
                grouping(time.CAL_QTR_ID)    = 1 and
                grouping(time.CAL_PERIOD_ID) = 1
           then 128
           end                              PERIOD_TYPE_ID,
      'G'                                   CALENDAR_TYPE,
      fin.CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE,
      sum(fin.REVENUE)                      REVENUE,
      sum(fin.LABOR_REVENUE)                LABOR_REVENUE,
      sum(fin.RAW_COST)                     RAW_COST,
      sum(fin.BURDENED_COST)                BURDENED_COST,
      sum(fin.BILL_RAW_COST)                BILL_RAW_COST,
      sum(fin.BILL_BURDENED_COST)           BILL_BURDENED_COST,
      sum(fin.LABOR_RAW_COST)               LABOR_RAW_COST,
      sum(fin.LABOR_BURDENED_COST)          LABOR_BURDENED_COST,
      sum(fin.BILL_LABOR_RAW_COST)          BILL_LABOR_RAW_COST,
      sum(fin.BILL_LABOR_BURDENED_COST)     BILL_LABOR_BURDENED_COST,
      sum(fin.REVENUE_WRITEOFF)             REVENUE_WRITEOFF,
      sum(fin.LABOR_HRS)                    LABOR_HRS,
      sum(fin.BILL_LABOR_HRS)               BILL_LABOR_HRS,
      to_number(null)                       CURR_BGT_REVENUE,
      to_number(null)                       CURR_BGT_RAW_COST,
      to_number(null)                       CURR_BGT_BURDENED_COST,
      to_number(null)                       CURR_BGT_LABOR_HRS,
      to_number(null)                       ORIG_BGT_REVENUE,
      to_number(null)                       ORIG_BGT_RAW_COST,
      to_number(null)                       ORIG_BGT_BURDENED_COST,
      to_number(null)                       ORIG_BGT_LABOR_HRS,
      to_number(null)                       FORECAST_REVENUE,
      to_number(null)                       FORECAST_RAW_COST,
      to_number(null)                       FORECAST_BURDENED_COST,
      to_number(null)                       FORECAST_LABOR_HRS
    from
      FII_TIME_CAL_DAY_MV time,
      PJI_FM_AGGR_FIN3    fin
    where
      fin.WORKER_ID                      = p_worker_id        and
      fin.PERIOD_TYPE_ID                 = 1                  and
      fin.CALENDAR_TYPE                  = 'C'                and
      to_date(to_char(fin.TIME_ID), 'J') = time.REPORT_DATE   and
      fin.GL_CALENDAR_ID                 = time.CALENDAR_ID
    group by
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      rollup (time.CAL_YEAR_ID,
              time.CAL_QTR_ID,
              time.CAL_PERIOD_ID),
      fin.CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE
    having
      not (grouping(time.CAL_YEAR_ID)   = 1 and
           grouping(time.CAL_QTR_ID)    = 1 and
           grouping(time.CAL_PERIOD_ID) = 1)
    union all
    select /*+ ordered
               full(period) use_hash(period) swap_join_inputs(period)
               full(qtr)    use_hash(qtr)    swap_join_inputs(qtr)
               full(tmp1)   use_hash(tmp1)   parallel(tmp1) */ -- budget data
      tmp1.PROJECT_ID,
      tmp1.PROJECT_ORG_ID,
      tmp1.PROJECT_ORGANIZATION_ID,
      tmp1.PROJECT_TYPE_CLASS,
      case when grouping(qtr.CAL_YEAR_ID)      = 0 and
                grouping(period.CAL_QTR_ID)    = 0 and
                grouping(period.CAL_PERIOD_ID) = 0
           then period.CAL_PERIOD_ID
           when grouping(qtr.CAL_YEAR_ID)      = 0 and
                grouping(period.CAL_QTR_ID)    = 0 and
                grouping(period.CAL_PERIOD_ID) = 1
           then period.CAL_QTR_ID
           when grouping(qtr.CAL_YEAR_ID)      = 0 and
                grouping(period.CAL_QTR_ID)    = 1 and
                grouping(period.CAL_PERIOD_ID) = 1
           then qtr.CAL_YEAR_ID
           end                              TIME_ID,
      case when grouping(qtr.CAL_YEAR_ID)      = 0 and
                grouping(period.CAL_QTR_ID)    = 0 and
                grouping(period.CAL_PERIOD_ID) = 0
           then 32
           when grouping(qtr.CAL_YEAR_ID)      = 0 and
                grouping(period.CAL_QTR_ID)    = 0 and
                grouping(period.CAL_PERIOD_ID) = 1
           then 64
           when grouping(qtr.CAL_YEAR_ID)      = 0 and
                grouping(period.CAL_QTR_ID)    = 1 and
                grouping(period.CAL_PERIOD_ID) = 1
           then 128
           end                              PERIOD_TYPE_ID,
      'G'                                   CALENDAR_TYPE,
      tmp1.CURR_RECORD_TYPE_ID,
      tmp1.CURRENCY_CODE,
      to_number(null)                       REVENUE,
      to_number(null)                       LABOR_REVENUE,
      to_number(null)                       RAW_COST,
      to_number(null)                       BURDENED_COST,
      to_number(null)                       BILL_RAW_COST,
      to_number(null)                       BILL_BURDENED_COST,
      to_number(null)                       LABOR_RAW_COST,
      to_number(null)                       LABOR_BURDENED_COST,
      to_number(null)                       BILL_LABOR_RAW_COST,
      to_number(null)                       BILL_LABOR_BURDENED_COST,
      to_number(null)                       REVENUE_WRITEOFF,
      to_number(null)                       LABOR_HRS,
      to_number(null)                       BILL_LABOR_HRS,
      sum(tmp1.CURR_BGT_REVENUE)            CURR_BGT_REVENUE,
      sum(tmp1.CURR_BGT_RAW_COST)           CURR_BGT_RAW_COST,
      sum(tmp1.CURR_BGT_BRDN_COST)          CURR_BGT_BURDENED_COST,
      sum(tmp1.CURR_BGT_LABOR_HRS)          CURR_BGT_LABOR_HRS,
      sum(tmp1.CURR_ORIG_BGT_REVENUE)       ORIG_BGT_REVENUE,
      sum(tmp1.CURR_ORIG_BGT_RAW_COST)      ORIG_BGT_RAW_COST,
      sum(tmp1.CURR_ORIG_BGT_BRDN_COST)     ORIG_BGT_BURDENED_COST,
      sum(tmp1.CURR_ORIG_BGT_LABOR_HRS)     ORIG_BGT_LABOR_HRS,
      sum(tmp1.CURR_FORECAST_REVENUE)       FORECAST_REVENUE,
      sum(tmp1.CURR_FORECAST_RAW_COST)      FORECAST_RAW_COST,
      sum(tmp1.CURR_FORECAST_BRDN_COST)     FORECAST_BURDENED_COST,
      sum(tmp1.CURR_FORECAST_LABOR_HRS)     FORECAST_LABOR_HRS
    from
      FII_TIME_CAL_PERIOD period,
      FII_TIME_CAL_QTR    qtr,
      PJI_FM_AGGR_PLN     tmp1
    where
      tmp1.CALENDAR_TYPE_CODE = 'GL'                 and
      tmp1.TIME_ID            = period.CAL_PERIOD_ID and
      period.CAL_QTR_ID       = qtr.CAL_QTR_ID
    group by
      tmp1.PROJECT_ID,
      tmp1.PROJECT_ORG_ID,
      tmp1.PROJECT_ORGANIZATION_ID,
      tmp1.PROJECT_TYPE_CLASS,
      rollup (qtr.CAL_YEAR_ID,
              period.CAL_QTR_ID,
              period.CAL_PERIOD_ID),
      tmp1.CURR_RECORD_TYPE_ID,
      tmp1.CURRENCY_CODE
    having
      not (grouping(qtr.CAL_YEAR_ID)      = 1 and
           grouping(period.CAL_QTR_ID)    = 1 and
           grouping(period.CAL_PERIOD_ID) = 1)
    union all
    select /*+ ordered full(map) parallel(map)
                       index(fpp, PJI_FP_PROJ_F_N2) use_nl(fpp) */  -- budget reversals
      fpp.PROJECT_ID,
      fpp.PROJECT_ORG_ID,
      fpp.PROJECT_ORGANIZATION_ID,
      fpp.PROJECT_TYPE_CLASS,
      fpp.TIME_ID,
      fpp.PERIOD_TYPE_ID,
      fpp.CALENDAR_TYPE,
      fpp.CURR_RECORD_TYPE_ID,
      fpp.CURRENCY_CODE,
      to_number(null)                       REVENUE,
      to_number(null)                       LABOR_REVENUE,
      to_number(null)                       RAW_COST,
      to_number(null)                       BURDENED_COST,
      to_number(null)                       BILL_RAW_COST,
      to_number(null)                       BILL_BURDENED_COST,
      to_number(null)                       LABOR_RAW_COST,
      to_number(null)                       LABOR_BURDENED_COST,
      to_number(null)                       BILL_LABOR_RAW_COST,
      to_number(null)                       BILL_LABOR_BURDENED_COST,
      to_number(null)                       REVENUE_WRITEOFF,
      to_number(null)                       LABOR_HRS,
      to_number(null)                       BILL_LABOR_HRS,
      case when map.REVENUE_BUDGET_C_VERSION <>
                map.REVENUE_BUDGET_N_VERSION
           then -fpp.CURR_BGT_REVENUE
           else to_number(null)
           end                              CURR_BGT_REVENUE,
      case when map.COST_BUDGET_C_VERSION <>
                map.COST_BUDGET_N_VERSION
           then -fpp.CURR_BGT_RAW_COST
           else to_number(null)
           end                              CURR_BGT_RAW_COST,
      case when map.COST_BUDGET_C_VERSION <>
                map.COST_BUDGET_N_VERSION
           then -fpp.CURR_BGT_BURDENED_COST
           else to_number(null)
           end                              CURR_BGT_BURDENED_COST,
      case when map.COST_BUDGET_C_VERSION <>
                map.COST_BUDGET_N_VERSION
           then -fpp.CURR_BGT_LABOR_HRS
           else to_number(null)
           end                              CURR_BGT_LABOR_HRS,
      case when map.REVENUE_BUDGET_CO_VERSION <>
                map.REVENUE_BUDGET_NO_VERSION
           then -fpp.ORIG_BGT_REVENUE
           else to_number(null)
           end                              ORIG_BGT_REVENUE,
      case when map.COST_BUDGET_CO_VERSION <>
                map.COST_BUDGET_NO_VERSION
           then -fpp.ORIG_BGT_RAW_COST
           else to_number(null)
           end                              ORIG_BGT_RAW_COST,
      case when map.COST_BUDGET_CO_VERSION <>
                map.COST_BUDGET_NO_VERSION
           then -fpp.ORIG_BGT_BURDENED_COST
           else to_number(null)
           end                              ORIG_BGT_BURDENED_COST,
      case when map.COST_BUDGET_CO_VERSION <>
                map.COST_BUDGET_NO_VERSION
           then -fpp.ORIG_BGT_LABOR_HRS
           else to_number(null)
           end                              ORIG_BGT_LABOR_HRS,
      case when map.REVENUE_FORECAST_C_VERSION <>
                map.REVENUE_FORECAST_N_VERSION
           then -fpp.FORECAST_REVENUE
           else to_number(null)
           end                              FORECAST_REVENUE,
      case when map.COST_FORECAST_C_VERSION <>
                map.COST_FORECAST_N_VERSION
           then -fpp.FORECAST_RAW_COST
           else to_number(null)
           end                              FORECAST_RAW_COST,
      case when map.COST_FORECAST_C_VERSION <>
                map.COST_FORECAST_N_VERSION
           then -fpp.FORECAST_BURDENED_COST
           else to_number(null)
           end                              FORECAST_BURDENED_COST,
      case when map.COST_FORECAST_C_VERSION <>
                map.COST_FORECAST_N_VERSION
           then -fpp.FORECAST_LABOR_HRS
           else to_number(null)
           end                              FORECAST_LABOR_HRS
    from
      PJI_PJI_PROJ_BATCH_MAP map,
      PJI_FP_PROJ_F fpp
    where
      l_extraction_type <> 'FULL' and
      map.WORKER_ID = p_worker_id and
      (map.REVENUE_BUDGET_C_VERSION   <> map.REVENUE_BUDGET_N_VERSION   or
       map.COST_BUDGET_C_VERSION      <> map.COST_BUDGET_N_VERSION      or
       map.REVENUE_BUDGET_CO_VERSION  <> map.REVENUE_BUDGET_NO_VERSION  or
       map.COST_BUDGET_CO_VERSION     <> map.COST_BUDGET_NO_VERSION     or
       map.REVENUE_FORECAST_C_VERSION <> map.REVENUE_FORECAST_N_VERSION or
       map.COST_FORECAST_C_VERSION    <> map.COST_FORECAST_N_VERSION) and
      map.PROJECT_ID = fpp.PROJECT_ID and
      fpp.CALENDAR_TYPE = 'G' and
      fpp.PERIOD_TYPE_ID <> 1
    ) fin
    where
      not (fin.CURR_RECORD_TYPE_ID in (8, 256) and
           fin.PERIOD_TYPE_ID <> 32)
    group by
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      fin.TIME_ID,
      fin.PERIOD_TYPE_ID,
      fin.CALENDAR_TYPE,
      decode(fin.PERIOD_TYPE_ID,
             32, fin.CURR_RECORD_TYPE_ID,
                 bitand(fin.CURR_RECORD_TYPE_ID,
                        247)),
      fin.CURRENCY_CODE;
Line: 2982

    insert /*+ append parallel(fin3_i) */ into PJI_FM_AGGR_FIN3 fin3_i -- in EXPAND_FPP_CAL_WK
    (
      WORKER_ID,
      PROJECT_ID,
      PROJECT_ORG_ID,
      PROJECT_ORGANIZATION_ID,
      PROJECT_TYPE_CLASS,
      TIME_ID,
      PERIOD_TYPE_ID,
      CALENDAR_TYPE,
      CURR_RECORD_TYPE_ID,
      CURRENCY_CODE,
      REVENUE,
      LABOR_REVENUE,
      RAW_COST,
      BURDENED_COST,
      BILL_RAW_COST,
      BILL_BURDENED_COST,
      LABOR_RAW_COST,
      LABOR_BURDENED_COST,
      BILL_LABOR_RAW_COST,
      BILL_LABOR_BURDENED_COST,
      REVENUE_WRITEOFF,
      LABOR_HRS,
      BILL_LABOR_HRS,
      CURR_BGT_REVENUE,
      CURR_BGT_RAW_COST,
      CURR_BGT_BURDENED_COST,
      CURR_BGT_LABOR_HRS,
      ORIG_BGT_REVENUE,
      ORIG_BGT_RAW_COST,
      ORIG_BGT_BURDENED_COST,
      ORIG_BGT_LABOR_HRS,
      FORECAST_REVENUE,
      FORECAST_RAW_COST,
      FORECAST_BURDENED_COST,
      FORECAST_LABOR_HRS
    )
    select
      p_worker_id,
      PROJECT_ID,
      PROJECT_ORG_ID,
      PROJECT_ORGANIZATION_ID,
      PROJECT_TYPE_CLASS,
      TIME_ID,
      PERIOD_TYPE_ID,
      CALENDAR_TYPE,
      CURR_RECORD_TYPE_ID,
      CURRENCY_CODE,
      sum(REVENUE),
      sum(LABOR_REVENUE),
      sum(RAW_COST),
      sum(BURDENED_COST),
      sum(BILL_RAW_COST),
      sum(BILL_BURDENED_COST),
      sum(LABOR_RAW_COST),
      sum(LABOR_BURDENED_COST),
      sum(BILL_LABOR_RAW_COST),
      sum(BILL_LABOR_BURDENED_COST),
      sum(REVENUE_WRITEOFF),
      sum(LABOR_HRS),
      sum(BILL_LABOR_HRS),
      sum(CURR_BGT_REVENUE),
      sum(CURR_BGT_RAW_COST),
      sum(CURR_BGT_BURDENED_COST),
      sum(CURR_BGT_LABOR_HRS),
      sum(ORIG_BGT_REVENUE),
      sum(ORIG_BGT_RAW_COST),
      sum(ORIG_BGT_BURDENED_COST),
      sum(ORIG_BGT_LABOR_HRS),
      sum(FORECAST_REVENUE),
      sum(FORECAST_RAW_COST),
      sum(FORECAST_BURDENED_COST),
      sum(FORECAST_LABOR_HRS)
    from
    (
    select /*+ ordered
               full(time) use_hash(time) swap_join_inputs(time)
               full(fin)  use_hash(fin)  parallel(fin) */
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      time.WEEK_ID                          TIME_ID,
      16                                    PERIOD_TYPE_ID,
      'E'                                   CALENDAR_TYPE,
      bitand(fin.CURR_RECORD_TYPE_ID, 247)  CURR_RECORD_TYPE_ID,
      fin.CURRENCY_CODE,
      sum(fin.REVENUE)                      REVENUE,
      sum(fin.LABOR_REVENUE)                LABOR_REVENUE,
      sum(fin.RAW_COST)                     RAW_COST,
      sum(fin.BURDENED_COST)                BURDENED_COST,
      sum(fin.BILL_RAW_COST)                BILL_RAW_COST,
      sum(fin.BILL_BURDENED_COST)           BILL_BURDENED_COST,
      sum(fin.LABOR_RAW_COST)               LABOR_RAW_COST,
      sum(fin.LABOR_BURDENED_COST)          LABOR_BURDENED_COST,
      sum(fin.BILL_LABOR_RAW_COST)          BILL_LABOR_RAW_COST,
      sum(fin.BILL_LABOR_BURDENED_COST)     BILL_LABOR_BURDENED_COST,
      sum(fin.REVENUE_WRITEOFF)             REVENUE_WRITEOFF,
      sum(fin.LABOR_HRS)                    LABOR_HRS,
      sum(fin.BILL_LABOR_HRS)               BILL_LABOR_HRS,
      to_number(null)                       CURR_BGT_REVENUE,
      to_number(null)                       CURR_BGT_RAW_COST,
      to_number(null)                       CURR_BGT_BURDENED_COST,
      to_number(null)                       CURR_BGT_LABOR_HRS,
      to_number(null)                       ORIG_BGT_REVENUE,
      to_number(null)                       ORIG_BGT_RAW_COST,
      to_number(null)                       ORIG_BGT_BURDENED_COST,
      to_number(null)                       ORIG_BGT_LABOR_HRS,
      to_number(null)                       FORECAST_REVENUE,
      to_number(null)                       FORECAST_RAW_COST,
      to_number(null)                       FORECAST_BURDENED_COST,
      to_number(null)                       FORECAST_LABOR_HRS
    from
      FII_TIME_DAY     time,
      PJI_FM_AGGR_FIN3 fin
    where
      fin.WORKER_ID           = p_worker_id   and
      fin.PERIOD_TYPE_ID      = 1             and
      fin.CALENDAR_TYPE       = 'C'           and
      fin.CURR_RECORD_TYPE_ID not in (8, 256) and
      fin.TIME_ID             = time.REPORT_DATE_JULIAN
    group by
      fin.PROJECT_ID,
      fin.PROJECT_ORG_ID,
      fin.PROJECT_ORGANIZATION_ID,
      fin.PROJECT_TYPE_CLASS,
      time.WEEK_ID,
      bitand(fin.CURR_RECORD_TYPE_ID, 247),
      fin.CURRENCY_CODE
    union all
    select /*+ parallel(tmp1) */          -- budget data
      tmp1.PROJECT_ID,
      tmp1.PROJECT_ORG_ID,
      tmp1.PROJECT_ORGANIZATION_ID,
      tmp1.PROJECT_TYPE_CLASS,
      tmp1.TIME_ID,
      16                                    PERIOD_TYPE_ID,
      'E'                                   CALENDAR_TYPE,
      bitand(tmp1.CURR_RECORD_TYPE_ID, 247) CURR_RECORD_TYPE_ID,
      tmp1.CURRENCY_CODE,
      to_number(null)                       REVENUE,
      to_number(null)                       LABOR_REVENUE,
      to_number(null)                       RAW_COST,
      to_number(null)                       BURDENED_COST,
      to_number(null)                       BILL_RAW_COST,
      to_number(null)                       BILL_BURDENED_COST,
      to_number(null)                       LABOR_RAW_COST,
      to_number(null)                       LABOR_BURDENED_COST,
      to_number(null)                       BILL_LABOR_RAW_COST,
      to_number(null)                       BILL_LABOR_BURDENED_COST,
      to_number(null)                       REVENUE_WRITEOFF,
      to_number(null)                       LABOR_HRS,
      to_number(null)                       BILL_LABOR_HRS,
      sum(tmp1.CURR_BGT_REVENUE)            CURR_BGT_REVENUE,
      sum(tmp1.CURR_BGT_RAW_COST)           CURR_BGT_RAW_COST,
      sum(tmp1.CURR_BGT_BRDN_COST)          CURR_BGT_BURDENED_COST,
      sum(tmp1.CURR_BGT_LABOR_HRS)          CURR_BGT_LABOR_HRS,
      sum(tmp1.CURR_ORIG_BGT_REVENUE)       ORIG_BGT_REVENUE,
      sum(tmp1.CURR_ORIG_BGT_RAW_COST)      ORIG_BGT_RAW_COST,
      sum(tmp1.CURR_ORIG_BGT_BRDN_COST)     ORIG_BGT_BURDENED_COST,
      sum(tmp1.CURR_ORIG_BGT_LABOR_HRS)     ORIG_BGT_LABOR_HRS,
      sum(tmp1.CURR_FORECAST_REVENUE)       FORECAST_REVENUE,
      sum(tmp1.CURR_FORECAST_RAW_COST)      FORECAST_RAW_COST,
      sum(tmp1.CURR_FORECAST_BRDN_COST)     FORECAST_BURDENED_COST,
      sum(tmp1.CURR_FORECAST_LABOR_HRS)     FORECAST_LABOR_HRS
    from
      PJI_FM_AGGR_PLN tmp1
    where
      tmp1.CALENDAR_TYPE_CODE = 'ENTW' and
      tmp1.CURR_RECORD_TYPE_ID not in (8, 256)
    group by
      tmp1.PROJECT_ID,
      tmp1.PROJECT_ORG_ID,
      tmp1.PROJECT_ORGANIZATION_ID,
      tmp1.PROJECT_TYPE_CLASS,
      tmp1.TIME_ID,
      bitand(tmp1.CURR_RECORD_TYPE_ID, 247),
      tmp1.CURRENCY_CODE
    union all
    select /*+ ordered full(map) parallel(map)
                       index(fpp, PJI_FP_PROJ_F_N2) use_nl(fpp) */  -- budget reversals
      fpp.PROJECT_ID,
      fpp.PROJECT_ORG_ID,
      fpp.PROJECT_ORGANIZATION_ID,
      fpp.PROJECT_TYPE_CLASS,
      fpp.TIME_ID,
      fpp.PERIOD_TYPE_ID,
      fpp.CALENDAR_TYPE,
      fpp.CURR_RECORD_TYPE_ID,
      fpp.CURRENCY_CODE,
      to_number(null)                       REVENUE,
      to_number(null)                       LABOR_REVENUE,
      to_number(null)                       RAW_COST,
      to_number(null)                       BURDENED_COST,
      to_number(null)                       BILL_RAW_COST,
      to_number(null)                       BILL_BURDENED_COST,
      to_number(null)                       LABOR_RAW_COST,
      to_number(null)                       LABOR_BURDENED_COST,
      to_number(null)                       BILL_LABOR_RAW_COST,
      to_number(null)                       BILL_LABOR_BURDENED_COST,
      to_number(null)                       REVENUE_WRITEOFF,
      to_number(null)                       LABOR_HRS,
      to_number(null)                       BILL_LABOR_HRS,
      case when map.REVENUE_BUDGET_C_VERSION <>
                map.REVENUE_BUDGET_N_VERSION
           then -fpp.CURR_BGT_REVENUE
           else to_number(null)
           end                              CURR_BGT_REVENUE,
      case when map.COST_BUDGET_C_VERSION <>
                map.COST_BUDGET_N_VERSION
           then -fpp.CURR_BGT_RAW_COST
           else to_number(null)
           end                              CURR_BGT_RAW_COST,
      case when map.COST_BUDGET_C_VERSION <>
                map.COST_BUDGET_N_VERSION
           then -fpp.CURR_BGT_BURDENED_COST
           else to_number(null)
           end                              CURR_BGT_BURDENED_COST,
      case when map.COST_BUDGET_C_VERSION <>
                map.COST_BUDGET_N_VERSION
           then -fpp.CURR_BGT_LABOR_HRS
           else to_number(null)
           end                              CURR_BGT_LABOR_HRS,
      case when map.REVENUE_BUDGET_CO_VERSION <>
                map.REVENUE_BUDGET_NO_VERSION
           then -fpp.ORIG_BGT_REVENUE
           else to_number(null)
           end                              ORIG_BGT_REVENUE,
      case when map.COST_BUDGET_CO_VERSION <>
                map.COST_BUDGET_NO_VERSION
           then -fpp.ORIG_BGT_RAW_COST
           else to_number(null)
           end                              ORIG_BGT_RAW_COST,
      case when map.COST_BUDGET_CO_VERSION <>
                map.COST_BUDGET_NO_VERSION
           then -fpp.ORIG_BGT_BURDENED_COST
           else to_number(null)
           end                              ORIG_BGT_BURDENED_COST,
      case when map.COST_BUDGET_CO_VERSION <>
                map.COST_BUDGET_NO_VERSION
           then -fpp.ORIG_BGT_LABOR_HRS
           else to_number(null)
           end                              ORIG_BGT_LABOR_HRS,
      case when map.REVENUE_FORECAST_C_VERSION <>
                map.REVENUE_FORECAST_N_VERSION
           then -fpp.FORECAST_REVENUE
           else to_number(null)
           end                              FORECAST_REVENUE,
      case when map.COST_FORECAST_C_VERSION <>
                map.COST_FORECAST_N_VERSION
           then -fpp.FORECAST_RAW_COST
           else to_number(null)
           end                              FORECAST_RAW_COST,
      case when map.COST_FORECAST_C_VERSION <>
                map.COST_FORECAST_N_VERSION
           then -fpp.FORECAST_BURDENED_COST
           else to_number(null)
           end                              FORECAST_BURDENED_COST,
      case when map.COST_FORECAST_C_VERSION <>
                map.COST_FORECAST_N_VERSION
           then -fpp.FORECAST_LABOR_HRS
           else to_number(null)
           end                              FORECAST_LABOR_HRS
    from
      PJI_PJI_PROJ_BATCH_MAP map,
      PJI_FP_PROJ_F fpp
    where
      l_extraction_type <> 'FULL' and
      map.WORKER_ID = p_worker_id and
      (map.REVENUE_BUDGET_C_VERSION   <> map.REVENUE_BUDGET_N_VERSION   or
       map.COST_BUDGET_C_VERSION      <> map.COST_BUDGET_N_VERSION      or
       map.REVENUE_BUDGET_CO_VERSION  <> map.REVENUE_BUDGET_NO_VERSION  or
       map.COST_BUDGET_CO_VERSION     <> map.COST_BUDGET_NO_VERSION     or
       map.REVENUE_FORECAST_C_VERSION <> map.REVENUE_FORECAST_N_VERSION or
       map.COST_FORECAST_C_VERSION    <> map.COST_FORECAST_N_VERSION) and
      map.PROJECT_ID = fpp.PROJECT_ID and
      fpp.CALENDAR_TYPE = 'E' and
      fpp.PERIOD_TYPE_ID = 16
    ) fin
    group by
      PROJECT_ID,
      PROJECT_ORG_ID,
      PROJECT_ORGANIZATION_ID,
      PROJECT_TYPE_CLASS,
      TIME_ID,
      PERIOD_TYPE_ID,
      CALENDAR_TYPE,
      CURR_RECORD_TYPE_ID,
      CURRENCY_CODE;
Line: 3291

    l_last_update_date     date;
Line: 3292

    l_last_updated_by      number;
Line: 3295

    l_last_update_login    number;
Line: 3313

    l_last_update_date  := sysdate;
Line: 3314

    l_last_updated_by   := FND_GLOBAL.USER_ID;
Line: 3317

    l_last_update_login := FND_GLOBAL.LOGIN_ID;
Line: 3321

      insert /*+ append parallel(fpw) */ into PJI_FP_PROJ_ET_WT_F fpw
      (
        PROJECT_ORG_ID,
        PROJECT_ORGANIZATION_ID,
        TIME_ID,
        PROJECT_ID,
        EXP_EVT_TYPE_ID,
        WORK_TYPE_ID,
        PERIOD_TYPE_ID,
        CALENDAR_TYPE,
        CURR_RECORD_TYPE_ID,
        CURRENCY_CODE,
        PROJECT_TYPE_CLASS,
        RAW_COST,
        BURDENED_COST,
        BILL_RAW_COST,
        BILL_BURDENED_COST,
        CAPITALIZABLE_RAW_COST,
        CAPITALIZABLE_BRDN_COST,
        LABOR_RAW_COST,
        LABOR_BURDENED_COST,
        BILL_LABOR_RAW_COST,
        BILL_LABOR_BURDENED_COST,
        LABOR_HRS,
        BILL_LABOR_HRS,
        QUANTITY,
        BILL_QUANTITY,
        LAST_UPDATE_DATE,
        LAST_UPDATED_BY,
        CREATION_DATE,
        CREATED_BY,
        LAST_UPDATE_LOGIN
      )
      select /*+ full(fin4)  parallel(fin4)  */
        fin4.PROJECT_ORG_ID,
        fin4.PROJECT_ORGANIZATION_ID,
        fin4.TIME_ID,
        fin4.PROJECT_ID,
        fin4.EXP_EVT_TYPE_ID,
        fin4.WORK_TYPE_ID,
        fin4.PERIOD_TYPE_ID,
        fin4.CALENDAR_TYPE,
        fin4.CURR_RECORD_TYPE_ID,
        fin4.CURRENCY_CODE,
        fin4.PROJECT_TYPE_CLASS,
        fin4.RAW_COST,
        fin4.BURDENED_COST,
        decode(fin4.PROJECT_TYPE_CLASS,
               'B', fin4.BILL_RAW_COST,
                    to_number(null))         BILL_RAW_COST,
        decode(fin4.Project_Type_Class,
               'B', fin4.BILL_BURDENED_COST,
                    to_number(null))         BILL_BURDENED_COST,
        decode(fin4.PROJECT_TYPE_CLASS,
               'C', fin4.BILL_RAW_COST,
                    to_number(null))         CAPITALIZABLE_RAW_COST,
        decode(fin4.PROJECT_TYPE_CLASS,
               'C', fin4.BILL_BURDENED_COST,
                    to_number(null))         CAPITALIZABLE_BRDN_COST,
        fin4.LABOR_RAW_COST,
        fin4.LABOR_BURDENED_COST,
        fin4.BILL_LABOR_RAW_COST,
        fin4.BILL_LABOR_BURDENED_COST,
        fin4.LABOR_HRS,
        fin4.BILL_LABOR_HRS,
        fin4.QUANTITY,
        fin4.BILL_QUANTITY,
        l_last_update_date,
        l_last_updated_by,
        l_creation_date,
        l_created_by,
        l_last_update_login
      from
        PJI_FM_AGGR_FIN4 fin4
      where
        fin4.WORKER_ID = p_worker_id and
        (nvl(fin4.RAW_COST                 , 0) <> 0 or
         nvl(fin4.BURDENED_COST            , 0) <> 0 or
         nvl(fin4.BILL_RAW_COST            , 0) <> 0 or
         nvl(fin4.BILL_BURDENED_COST       , 0) <> 0 or
         nvl(fin4.LABOR_RAW_COST           , 0) <> 0 or
         nvl(fin4.LABOR_BURDENED_COST      , 0) <> 0 or
         nvl(fin4.BILL_LABOR_RAW_COST      , 0) <> 0 or
         nvl(fin4.BILL_LABOR_BURDENED_COST , 0) <> 0 or
         nvl(fin4.LABOR_HRS                , 0) <> 0 or
         nvl(fin4.BILL_LABOR_HRS           , 0) <> 0 or
         nvl(fin4.QUANTITY                 , 0) <> 0 or
         nvl(fin4.BILL_QUANTITY            , 0) <> 0);
Line: 3415

        select
          PROJECT_ORG_ID,
          PROJECT_ORGANIZATION_ID,
          TIME_ID,
          PROJECT_ID,
          EXP_EVT_TYPE_ID,
          WORK_TYPE_ID,
          PERIOD_TYPE_ID,
          CALENDAR_TYPE,
          CURR_RECORD_TYPE_ID,
          CURRENCY_CODE,
          PROJECT_TYPE_CLASS,
          RAW_COST,
          BURDENED_COST,
          BILL_RAW_COST,
          BILL_BURDENED_COST,
          CAPITALIZABLE_RAW_COST,
          CAPITALIZABLE_BRDN_COST,
          LABOR_RAW_COST,
          LABOR_BURDENED_COST,
          BILL_LABOR_RAW_COST,
          BILL_LABOR_BURDENED_COST,
          LABOR_HRS,
          BILL_LABOR_HRS,
          QUANTITY,
          BILL_QUANTITY,
          l_last_update_date            LAST_UPDATE_DATE,
          l_last_updated_by             LAST_UPDATED_BY,
          l_creation_date               CREATION_DATE,
          l_created_by                  CREATED_BY,
          l_last_update_login           LAST_UPDATE_LOGIN
        from
          (
          select
            PROJECT_ORG_ID,
            PROJECT_ORGANIZATION_ID,
            TIME_ID,
            PROJECT_ID,
            EXP_EVT_TYPE_ID,
            WORK_TYPE_ID,
            PERIOD_TYPE_ID,
            CALENDAR_TYPE,
            CURR_RECORD_TYPE_ID,
            CURRENCY_CODE,
            PROJECT_TYPE_CLASS,
            sum(RAW_COST)                 RAW_COST,
            sum(BURDENED_COST)            BURDENED_COST,
            sum(BILL_RAW_COST)            BILL_RAW_COST,
            sum(BILL_BURDENED_COST)       BILL_BURDENED_COST,
            sum(CAPITALIZABLE_RAW_COST)   CAPITALIZABLE_RAW_COST,
            sum(CAPITALIZABLE_BRDN_COST)  CAPITALIZABLE_BRDN_COST,
            sum(LABOR_RAW_COST)           LABOR_RAW_COST,
            sum(LABOR_BURDENED_COST)      LABOR_BURDENED_COST,
            sum(BILL_LABOR_RAW_COST)      BILL_LABOR_RAW_COST,
            sum(BILL_LABOR_BURDENED_COST) BILL_LABOR_BURDENED_COST,
            sum(LABOR_HRS)                LABOR_HRS,
            sum(BILL_LABOR_HRS)           BILL_LABOR_HRS,
            sum(QUANTITY)                 QUANTITY,
            sum(BILL_QUANTITY)            BILL_QUANTITY
          from
            (
            select /*+ full(fin4)   parallel(fin4)  */
              fin4.PROJECT_ORG_ID,
              fin4.PROJECT_ORGANIZATION_ID,
              fin4.TIME_ID,
              fin4.PROJECT_ID,
              fin4.EXP_EVT_TYPE_ID,
              fin4.WORK_TYPE_ID,
              fin4.PERIOD_TYPE_ID,
              fin4.CALENDAR_TYPE,
              fin4.CURR_RECORD_TYPE_ID,
              fin4.CURRENCY_CODE,
              fin4.PROJECT_TYPE_CLASS,
              fin4.RAW_COST,
              fin4.BURDENED_COST,
              decode(fin4.PROJECT_TYPE_CLASS,
                     'B', fin4.BILL_RAW_COST,
                          to_number(null))         BILL_RAW_COST,
              decode(fin4.Project_Type_Class,
                     'B', fin4.BILL_BURDENED_COST,
                          to_number(null))         BILL_BURDENED_COST,
              decode(fin4.PROJECT_TYPE_CLASS,
                     'C', fin4.BILL_RAW_COST,
                          to_number(null))         CAPITALIZABLE_RAW_COST,
              decode(fin4.PROJECT_TYPE_CLASS,
                     'C', fin4.BILL_BURDENED_COST,
                          to_number(null))         CAPITALIZABLE_BRDN_COST,
              fin4.LABOR_RAW_COST,
              fin4.LABOR_BURDENED_COST,
              fin4.BILL_LABOR_RAW_COST,
              fin4.BILL_LABOR_BURDENED_COST,
              fin4.LABOR_HRS,
              fin4.BILL_LABOR_HRS,
              fin4.QUANTITY,
              fin4.BILL_QUANTITY
            from
              PJI_FM_AGGR_FIN4 fin4
            where
              fin4.WORKER_ID = p_worker_id
            union all                       -- partial refresh
            select /*+ ordered full(map) parallel(map)
                               index(fpw, PJI_FP_PROJ_ET_WT_F_N2) use_nl(fpw)*/
              fpw.PROJECT_ORG_ID,
              fpw.PROJECT_ORGANIZATION_ID,
              fpw.TIME_ID,
              fpw.PROJECT_ID,
              fpw.EXP_EVT_TYPE_ID,
              fpw.WORK_TYPE_ID,
              fpw.PERIOD_TYPE_ID,
              fpw.CALENDAR_TYPE,
              fpw.CURR_RECORD_TYPE_ID,
              fpw.CURRENCY_CODE,
              fpw.PROJECT_TYPE_CLASS,
              -fpw.RAW_COST,
              -fpw.BURDENED_COST,
              -fpw.BILL_RAW_COST,
              -fpw.BILL_BURDENED_COST,
              -fpw.CAPITALIZABLE_RAW_COST,
              -fpw.CAPITALIZABLE_BRDN_COST,
              -fpw.LABOR_RAW_COST,
              -fpw.LABOR_BURDENED_COST,
              -fpw.BILL_LABOR_RAW_COST,
              -fpw.BILL_LABOR_BURDENED_COST,
              -fpw.LABOR_HRS,
              -fpw.BILL_LABOR_HRS,
              -fpw.QUANTITY,
              -fpw.BILL_QUANTITY
            from
              PJI_PJI_PROJ_BATCH_MAP map,
              PJI_FP_PROJ_ET_WT_F fpw
            where
              l_extraction_type   = 'PARTIAL'   and
              map.WORKER_ID       = p_worker_id and
              map.EXTRACTION_TYPE = 'P'         and
              fpw.PROJECT_ID      = map.PROJECT_ID
            )
          group by
            PROJECT_ORG_ID,
            PROJECT_ORGANIZATION_ID,
            TIME_ID,
            PROJECT_ID,
            EXP_EVT_TYPE_ID,
            WORK_TYPE_ID,
            PERIOD_TYPE_ID,
            CALENDAR_TYPE,
            CURR_RECORD_TYPE_ID,
            CURRENCY_CODE,
            PROJECT_TYPE_CLASS
          )
        where
          nvl(RAW_COST                , 0) <> 0 or
          nvl(BURDENED_COST           , 0) <> 0 or
          nvl(BILL_RAW_COST           , 0) <> 0 or
          nvl(BILL_BURDENED_COST      , 0) <> 0 or
          nvl(CAPITALIZABLE_RAW_COST  , 0) <> 0 or
          nvl(CAPITALIZABLE_BRDN_COST , 0) <> 0 or
          nvl(LABOR_RAW_COST          , 0) <> 0 or
          nvl(LABOR_BURDENED_COST     , 0) <> 0 or
          nvl(BILL_LABOR_RAW_COST     , 0) <> 0 or
          nvl(BILL_LABOR_BURDENED_COST, 0) <> 0 or
          nvl(LABOR_HRS               , 0) <> 0 or
          nvl(BILL_LABOR_HRS          , 0) <> 0 or
          nvl(QUANTITY                , 0) <> 0 or
          nvl(BILL_QUANTITY           , 0) <> 0
      ) fin
      on
      (
        fin.PROJECT_ORG_ID          = fpw.PROJECT_ORG_ID          and
        fin.PROJECT_ORGANIZATION_ID = fpw.PROJECT_ORGANIZATION_ID and
        fin.TIME_ID                 = fpw.TIME_ID                 and
        fin.PROJECT_ID              = fpw.PROJECT_ID              and
        fin.EXP_EVT_TYPE_ID         = fpw.EXP_EVT_TYPE_ID         and
        fin.WORK_TYPE_ID            = fpw.WORK_TYPE_ID            and
        fin.PERIOD_TYPE_ID          = fpw.PERIOD_TYPE_ID          and
        fin.CALENDAR_TYPE           = fpw.CALENDAR_TYPE           and
        fin.CURR_RECORD_TYPE_ID     = fpw.CURR_RECORD_TYPE_ID     and
        fin.CURRENCY_CODE           = fpw.CURRENCY_CODE           and
        fin.PROJECT_TYPE_CLASS      = fpw.PROJECT_TYPE_CLASS
      )
      when matched then update set
        fpw.RAW_COST       = case when fpw.RAW_COST is null and
                                       fin.RAW_COST is null
                                  then to_number(null)
                                  else nvl(fpw.RAW_COST, 0) +
                                       nvl(fin.RAW_COST, 0)
                                  end,
        fpw.BURDENED_COST  = case when fpw.BURDENED_COST is null and
                                       fin.BURDENED_COST is null
                                  then to_number(null)
                                  else nvl(fpw.BURDENED_COST, 0) +
                                       nvl(fin.BURDENED_COST, 0)
                                  end,
        fpw.BILL_RAW_COST  = case when fpw.BILL_RAW_COST is null and
                                       fin.BILL_RAW_COST is null
                                  then to_number(null)
                                  else nvl(fpw.BILL_RAW_COST, 0) +
                                       nvl(fin.BILL_RAW_COST, 0)
                                  end,
        fpw.BILL_BURDENED_COST
                           = case when fpw.BILL_BURDENED_COST is null and
                                       fin.BILL_BURDENED_COST is null
                                  then to_number(null)
                                  else nvl(fpw.BILL_BURDENED_COST, 0) +
                                       nvl(fin.BILL_BURDENED_COST, 0)
                                  end,
        fpw.CAPITALIZABLE_RAW_COST
                           = case when fpw.CAPITALIZABLE_RAW_COST is null and
                                       fin.CAPITALIZABLE_RAW_COST is null
                                  then to_number(null)
                                  else nvl(fpw.CAPITALIZABLE_RAW_COST, 0) +
                                       nvl(fin.CAPITALIZABLE_RAW_COST, 0)
                                  end,
        fpw.CAPITALIZABLE_BRDN_COST
                           = case when fpw.CAPITALIZABLE_BRDN_COST is null and
                                       fin.CAPITALIZABLE_BRDN_COST is null
                                  then to_number(null)
                                  else nvl(fpw.CAPITALIZABLE_BRDN_COST, 0) +
                                       nvl(fin.CAPITALIZABLE_BRDN_COST, 0)
                                  end,
        fpw.LABOR_RAW_COST = case when fpw.LABOR_RAW_COST is null and
                                       fin.LABOR_RAW_COST is null
                                  then to_number(null)
                                  else nvl(fpw.LABOR_RAW_COST, 0) +
                                       nvl(fin.LABOR_RAW_COST, 0)
                                  end,
        fpw.LABOR_BURDENED_COST
                           = case when fpw.LABOR_BURDENED_COST is null and
                                       fin.LABOR_BURDENED_COST is null
                                  then to_number(null)
                                  else nvl(fpw.LABOR_BURDENED_COST, 0) +
                                       nvl(fin.LABOR_BURDENED_COST, 0)
                                  end,
        fpw.BILL_LABOR_RAW_COST
                           = case when fpw.BILL_LABOR_RAW_COST is null and
                                       fin.BILL_LABOR_RAW_COST is null
                                  then to_number(null)
                                  else nvl(fpw.BILL_LABOR_RAW_COST, 0) +
                                       nvl(fin.BILL_LABOR_RAW_COST, 0)
                                  end,
        fpw.BILL_LABOR_BURDENED_COST
                           = case when fpw.BILL_LABOR_BURDENED_COST is null and
                                       fin.BILL_LABOR_BURDENED_COST is null
                                  then to_number(null)
                                  else nvl(fpw.BILL_LABOR_BURDENED_COST, 0) +
                                       nvl(fin.BILL_LABOR_BURDENED_COST, 0)
                                  end,
        fpw.LABOR_HRS      = case when fpw.LABOR_HRS is null and
                                       fin.LABOR_HRS is null
                                  then to_number(null)
                                  else nvl(fpw.LABOR_HRS, 0) +
                                       nvl(fin.LABOR_HRS, 0)
                                  end,
        fpw.BILL_LABOR_HRS = case when fpw.BILL_LABOR_HRS is null and
                                       fin.BILL_LABOR_HRS is null
                                  then to_number(null)
                                  else nvl(fpw.BILL_LABOR_HRS, 0) +
                                       nvl(fin.BILL_LABOR_HRS, 0)
                                  end,
        fpw.QUANTITY       = case when fpw.QUANTITY is null and
                                       fin.QUANTITY is null
                                  then to_number(null)
                                  else nvl(fpw.QUANTITY, 0) +
                                       nvl(fin.QUANTITY, 0)
                                  end,
        fpw.BILL_QUANTITY  = case when fpw.BILL_QUANTITY is null and
                                       fin.BILL_QUANTITY is null
                                  then to_number(null)
                                  else nvl(fpw.BILL_QUANTITY, 0) +
                                       nvl(fin.BILL_QUANTITY, 0)
                                  end,
        fpw.LAST_UPDATE_DATE
                 = fin.LAST_UPDATE_DATE,
        fpw.LAST_UPDATED_BY
                 = fin.LAST_UPDATED_BY,
        fpw.LAST_UPDATE_LOGIN
                 = fin.LAST_UPDATE_LOGIN
      when not matched then insert
      (
        fpw.PROJECT_ORG_ID,
        fpw.PROJECT_ORGANIZATION_ID,
        fpw.TIME_ID,
        fpw.PROJECT_ID,
        fpw.EXP_EVT_TYPE_ID,
        fpw.WORK_TYPE_ID,
        fpw.PERIOD_TYPE_ID,
        fpw.CALENDAR_TYPE,
        fpw.CURR_RECORD_TYPE_ID,
        fpw.CURRENCY_CODE,
        fpw.PROJECT_TYPE_CLASS,
        fpw.RAW_COST,
        fpw.BURDENED_COST,
        fpw.BILL_RAW_COST,
        fpw.BILL_BURDENED_COST,
        fpw.CAPITALIZABLE_RAW_COST,
        fpw.CAPITALIZABLE_BRDN_COST,
        fpw.LABOR_RAW_COST,
        fpw.LABOR_BURDENED_COST,
        fpw.BILL_LABOR_RAW_COST,
        fpw.BILL_LABOR_BURDENED_COST,
        fpw.LABOR_HRS,
        fpw.BILL_LABOR_HRS,
        fpw.QUANTITY,
        fpw.BILL_QUANTITY,
        fpw.LAST_UPDATE_DATE,
        fpw.LAST_UPDATED_BY,
        fpw.CREATION_DATE,
        fpw.CREATED_BY,
        fpw.LAST_UPDATE_LOGIN
      )
      values
      (
        fin.PROJECT_ORG_ID,
        fin.PROJECT_ORGANIZATION_ID,
        fin.TIME_ID,
        fin.PROJECT_ID,
        fin.EXP_EVT_TYPE_ID,
        fin.WORK_TYPE_ID,
        fin.PERIOD_TYPE_ID,
        fin.CALENDAR_TYPE,
        fin.CURR_RECORD_TYPE_ID,
        fin.CURRENCY_CODE,
        fin.PROJECT_TYPE_CLASS,
        fin.RAW_COST,
        fin.BURDENED_COST,
        fin.BILL_RAW_COST,
        fin.BILL_BURDENED_COST,
        fin.CAPITALIZABLE_RAW_COST,
        fin.CAPITALIZABLE_BRDN_COST,
        fin.LABOR_RAW_COST,
        fin.LABOR_BURDENED_COST,
        fin.BILL_LABOR_RAW_COST,
        fin.BILL_LABOR_BURDENED_COST,
        fin.LABOR_HRS,
        fin.BILL_LABOR_HRS,
        fin.QUANTITY,
        fin.BILL_QUANTITY,
        fin.LAST_UPDATE_DATE,
        fin.LAST_UPDATED_BY,
        fin.CREATION_DATE,
        fin.CREATED_BY,
        fin.LAST_UPDATE_LOGIN
      );
Line: 3782

    l_last_update_date     date;
Line: 3783

    l_last_updated_by      number;
Line: 3786

    l_last_update_login    number;
Line: 3804

    l_last_update_date  := sysdate;
Line: 3805

    l_last_updated_by   := FND_GLOBAL.USER_ID;
Line: 3808

    l_last_update_login := FND_GLOBAL.LOGIN_ID;
Line: 3812

      insert /*+ append parallel(fpe) */ into PJI_FP_PROJ_ET_F fpe
      (
        PROJECT_ORG_ID,
        PROJECT_ORGANIZATION_ID,
        TIME_ID,
        PROJECT_ID,
        EXP_EVT_TYPE_ID,
        PERIOD_TYPE_ID,
        CALENDAR_TYPE,
        CURR_RECORD_TYPE_ID,
        CURRENCY_CODE,
        PROJECT_TYPE_CLASS,
        REVENUE,
        LABOR_REVENUE,
        RAW_COST,
        BURDENED_COST,
        BILL_RAW_COST,
        BILL_BURDENED_COST,
        CAPITALIZABLE_RAW_COST,
        CAPITALIZABLE_BRDN_COST,
        LABOR_RAW_COST,
        LABOR_BURDENED_COST,
        BILL_LABOR_RAW_COST,
        BILL_LABOR_BURDENED_COST,
        LABOR_HRS,
        BILL_LABOR_HRS,
        QUANTITY,
        BILL_QUANTITY,
        LAST_UPDATE_DATE,
        LAST_UPDATED_BY,
        CREATION_DATE,
        CREATED_BY,
        LAST_UPDATE_LOGIN
      )
      select /*+ full(fin5)  parallel(fin5)  */
        fin5.PROJECT_ORG_ID,
        fin5.PROJECT_ORGANIZATION_ID,
        fin5.TIME_ID,
        fin5.PROJECT_ID,
        fin5.EXP_EVT_TYPE_ID,
        fin5.PERIOD_TYPE_ID,
        fin5.CALENDAR_TYPE,
        fin5.CURR_RECORD_TYPE_ID,
        fin5.CURRENCY_CODE,
        fin5.PROJECT_TYPE_CLASS,
        fin5.REVENUE,
        fin5.LABOR_REVENUE,
        fin5.RAW_COST,
        fin5.BURDENED_COST,
        decode(fin5.PROJECT_TYPE_CLASS,
               'B', fin5.BILL_RAW_COST,
                    to_number(null))         BILL_RAW_COST,
        decode(fin5.Project_Type_Class,
               'B', fin5.BILL_BURDENED_COST,
                    to_number(null))         BILL_BURDENED_COST,
        decode(fin5.PROJECT_TYPE_CLASS,
               'C', fin5.BILL_RAW_COST,
                    to_number(null))         CAPITALIZABLE_RAW_COST,
        decode(fin5.PROJECT_TYPE_CLASS,
               'C', fin5.BILL_BURDENED_COST,
                    to_number(null))         CAPITALIZABLE_BRDN_COST,
        fin5.LABOR_RAW_COST,
        fin5.LABOR_BURDENED_COST,
        fin5.BILL_LABOR_RAW_COST,
        fin5.BILL_LABOR_BURDENED_COST,
        fin5.LABOR_HRS,
        fin5.BILL_LABOR_HRS,
        fin5.QUANTITY,
        fin5.BILL_QUANTITY,
        l_last_update_date,
        l_last_updated_by,
        l_creation_date,
        l_created_by,
        l_last_update_login
      from
        PJI_FM_AGGR_FIN5 fin5
      where
        fin5.WORKER_ID = p_worker_id and
        (nvl(fin5.REVENUE                 , 0) <> 0 or
         nvl(fin5.LABOR_REVENUE           , 0) <> 0 or
         nvl(fin5.RAW_COST                , 0) <> 0 or
         nvl(fin5.BURDENED_COST           , 0) <> 0 or
         nvl(fin5.BILL_RAW_COST           , 0) <> 0 or
         nvl(fin5.BILL_BURDENED_COST      , 0) <> 0 or
         nvl(fin5.LABOR_RAW_COST          , 0) <> 0 or
         nvl(fin5.LABOR_BURDENED_COST     , 0) <> 0 or
         nvl(fin5.BILL_LABOR_RAW_COST     , 0) <> 0 or
         nvl(fin5.BILL_LABOR_BURDENED_COST, 0) <> 0 or
         nvl(fin5.LABOR_HRS               , 0) <> 0 or
         nvl(fin5.BILL_LABOR_HRS          , 0) <> 0 or
         nvl(fin5.QUANTITY                , 0) <> 0 or
         nvl(fin5.BILL_QUANTITY           , 0) <> 0);
Line: 3910

        select
          PROJECT_ORG_ID,
          PROJECT_ORGANIZATION_ID,
          TIME_ID,
          PROJECT_ID,
          EXP_EVT_TYPE_ID,
          PERIOD_TYPE_ID,
          CALENDAR_TYPE,
          CURR_RECORD_TYPE_ID,
          CURRENCY_CODE,
          PROJECT_TYPE_CLASS,
          REVENUE,
          LABOR_REVENUE,
          RAW_COST,
          BURDENED_COST,
          BILL_RAW_COST,
          BILL_BURDENED_COST,
          CAPITALIZABLE_RAW_COST,
          CAPITALIZABLE_BRDN_COST,
          LABOR_RAW_COST,
          LABOR_BURDENED_COST,
          BILL_LABOR_RAW_COST,
          BILL_LABOR_BURDENED_COST,
          LABOR_HRS,
          BILL_LABOR_HRS,
          QUANTITY,
          BILL_QUANTITY,
          l_last_update_date            LAST_UPDATE_DATE,
          l_last_updated_by             LAST_UPDATED_BY,
          l_creation_date               CREATION_DATE,
          l_created_by                  CREATED_BY,
          l_last_update_login           LAST_UPDATE_LOGIN
        from
          (
          select
            PROJECT_ORG_ID,
            PROJECT_ORGANIZATION_ID,
            TIME_ID,
            PROJECT_ID,
            EXP_EVT_TYPE_ID,
            PERIOD_TYPE_ID,
            CALENDAR_TYPE,
            CURR_RECORD_TYPE_ID,
            CURRENCY_CODE,
            PROJECT_TYPE_CLASS,
            sum(REVENUE)                  REVENUE,
            sum(LABOR_REVENUE)            LABOR_REVENUE,
            sum(RAW_COST)                 RAW_COST,
            sum(BURDENED_COST)            BURDENED_COST,
            sum(BILL_RAW_COST)            BILL_RAW_COST,
            sum(BILL_BURDENED_COST)       BILL_BURDENED_COST,
            sum(CAPITALIZABLE_RAW_COST)   CAPITALIZABLE_RAW_COST,
            sum(CAPITALIZABLE_BRDN_COST)  CAPITALIZABLE_BRDN_COST,
            sum(LABOR_RAW_COST)           LABOR_RAW_COST,
            sum(LABOR_BURDENED_COST)      LABOR_BURDENED_COST,
            sum(BILL_LABOR_RAW_COST)      BILL_LABOR_RAW_COST,
            sum(BILL_LABOR_BURDENED_COST) BILL_LABOR_BURDENED_COST,
            sum(LABOR_HRS)                LABOR_HRS,
            sum(BILL_LABOR_HRS)           BILL_LABOR_HRS,
            sum(QUANTITY)                 QUANTITY,
            sum(BILL_QUANTITY)            BILL_QUANTITY
          from
            (
            select /*+ full(fin5)   parallel(fin5)  */
              fin5.PROJECT_ORG_ID,
              fin5.PROJECT_ORGANIZATION_ID,
              fin5.TIME_ID,
              fin5.PROJECT_ID,
              fin5.EXP_EVT_TYPE_ID,
              fin5.PERIOD_TYPE_ID,
              fin5.CALENDAR_TYPE,
              fin5.CURR_RECORD_TYPE_ID,
              fin5.CURRENCY_CODE,
              fin5.PROJECT_TYPE_CLASS,
              fin5.REVENUE,
              fin5.LABOR_REVENUE,
              fin5.RAW_COST,
              fin5.BURDENED_COST,
              decode(fin5.PROJECT_TYPE_CLASS,
                     'B', fin5.BILL_RAW_COST,
                          to_number(null))         BILL_RAW_COST,
              decode(fin5.Project_Type_Class,
                     'B', fin5.BILL_BURDENED_COST,
                          to_number(null))         BILL_BURDENED_COST,
              decode(fin5.PROJECT_TYPE_CLASS,
                     'C', fin5.BILL_RAW_COST,
                          to_number(null))         CAPITALIZABLE_RAW_COST,
              decode(fin5.PROJECT_TYPE_CLASS,
                     'C', fin5.BILL_BURDENED_COST,
                          to_number(null))         CAPITALIZABLE_BRDN_COST,
              fin5.LABOR_RAW_COST,
              fin5.LABOR_BURDENED_COST,
              fin5.BILL_LABOR_RAW_COST,
              fin5.BILL_LABOR_BURDENED_COST,
              fin5.LABOR_HRS,
              fin5.BILL_LABOR_HRS,
              fin5.QUANTITY,
              fin5.BILL_QUANTITY
            from
              PJI_FM_AGGR_FIN5 fin5
            where
              fin5.WORKER_ID = p_worker_id
            union all                       -- partial refresh
            select /*+ ordered full(map) parallel(map)
                               index(fpe, PJI_FP_PROJ_ET_F_N2) use_nl(fpe) */
              fpe.PROJECT_ORG_ID,
              fpe.PROJECT_ORGANIZATION_ID,
              fpe.TIME_ID,
              fpe.PROJECT_ID,
              fpe.EXP_EVT_TYPE_ID,
              fpe.PERIOD_TYPE_ID,
              fpe.CALENDAR_TYPE,
              fpe.CURR_RECORD_TYPE_ID,
              fpe.CURRENCY_CODE,
              fpe.PROJECT_TYPE_CLASS,
              -fpe.REVENUE,
              -fpe.LABOR_REVENUE,
              -fpe.RAW_COST,
              -fpe.BURDENED_COST,
              -fpe.BILL_RAW_COST,
              -fpe.BILL_BURDENED_COST,
              -fpe.CAPITALIZABLE_RAW_COST,
              -fpe.CAPITALIZABLE_BRDN_COST,
              -fpe.LABOR_RAW_COST,
              -fpe.LABOR_BURDENED_COST,
              -fpe.BILL_LABOR_RAW_COST,
              -fpe.BILL_LABOR_BURDENED_COST,
              -fpe.LABOR_HRS,
              -fpe.BILL_LABOR_HRS,
              -fpe.QUANTITY,
              -fpe.BILL_QUANTITY
            from
              PJI_PJI_PROJ_BATCH_MAP map,
              PJI_FP_PROJ_ET_F fpe
            where
              l_extraction_type   = 'PARTIAL'   and
              map.WORKER_ID       = p_worker_id and
              map.EXTRACTION_TYPE = 'P'         and
              fpe.PROJECT_ID      = map.PROJECT_ID
            )
          group by
            PROJECT_ORG_ID,
            PROJECT_ORGANIZATION_ID,
            TIME_ID,
            PROJECT_ID,
            EXP_EVT_TYPE_ID,
            PERIOD_TYPE_ID,
            CALENDAR_TYPE,
            CURR_RECORD_TYPE_ID,
            CURRENCY_CODE,
            PROJECT_TYPE_CLASS
          )
        where
          nvl(REVENUE                 , 0) <> 0 or
          nvl(LABOR_REVENUE           , 0) <> 0 or
          nvl(RAW_COST                , 0) <> 0 or
          nvl(BURDENED_COST           , 0) <> 0 or
          nvl(BILL_RAW_COST           , 0) <> 0 or
          nvl(BILL_BURDENED_COST      , 0) <> 0 or
          nvl(CAPITALIZABLE_RAW_COST  , 0) <> 0 or
          nvl(CAPITALIZABLE_BRDN_COST , 0) <> 0 or
          nvl(LABOR_RAW_COST          , 0) <> 0 or
          nvl(LABOR_BURDENED_COST     , 0) <> 0 or
          nvl(BILL_LABOR_RAW_COST     , 0) <> 0 or
          nvl(BILL_LABOR_BURDENED_COST, 0) <> 0 or
          nvl(LABOR_HRS               , 0) <> 0 or
          nvl(BILL_LABOR_HRS          , 0) <> 0 or
          nvl(QUANTITY                , 0) <> 0 or
          nvl(BILL_QUANTITY           , 0) <> 0
      ) fin
      on
      (
        fin.PROJECT_ORG_ID          = fpe.PROJECT_ORG_ID          and
        fin.PROJECT_ORGANIZATION_ID = fpe.PROJECT_ORGANIZATION_ID and
        fin.TIME_ID                 = fpe.TIME_ID                 and
        fin.PROJECT_ID              = fpe.PROJECT_ID              and
        fin.EXP_EVT_TYPE_ID         = fpe.EXP_EVT_TYPE_ID         and
        fin.PERIOD_TYPE_ID          = fpe.PERIOD_TYPE_ID          and
        fin.CALENDAR_TYPE           = fpe.CALENDAR_TYPE           and
        fin.CURR_RECORD_TYPE_ID     = fpe.CURR_RECORD_TYPE_ID     and
        fin.CURRENCY_CODE           = fpe.CURRENCY_CODE           and
        fin.PROJECT_TYPE_CLASS      = fpe.PROJECT_TYPE_CLASS
      )
      when matched then update set
        fpe.REVENUE        = case when fpe.REVENUE is null and
                                       fin.REVENUE is null
                                  then to_number(null)
                                  else nvl(fpe.REVENUE, 0) +
                                       nvl(fin.REVENUE, 0)
                                  end,
        fpe.LABOR_REVENUE  = case when fpe.LABOR_REVENUE is null and
                                       fin.LABOR_REVENUE is null
                                  then to_number(null)
                                  else nvl(fpe.LABOR_REVENUE, 0) +
                                       nvl(fin.LABOR_REVENUE, 0)
                                  end,
        fpe.RAW_COST       = case when fpe.RAW_COST is null and
                                       fin.RAW_COST is null
                                  then to_number(null)
                                  else nvl(fpe.RAW_COST, 0) +
                                       nvl(fin.RAW_COST, 0)
                                  end,
        fpe.BURDENED_COST  = case when fpe.BURDENED_COST is null and
                                       fin.BURDENED_COST is null
                                  then to_number(null)
                                  else nvl(fpe.BURDENED_COST, 0) +
                                       nvl(fin.BURDENED_COST, 0)
                                  end,
        fpe.BILL_RAW_COST  = case when fpe.BILL_RAW_COST is null and
                                       fin.BILL_RAW_COST is null
                                  then to_number(null)
                                  else nvl(fpe.BILL_RAW_COST, 0) +
                                       nvl(fin.BILL_RAW_COST, 0)
                                  end,
        fpe.BILL_BURDENED_COST
                           = case when fpe.BILL_BURDENED_COST is null and
                                       fin.BILL_BURDENED_COST is null
                                  then to_number(null)
                                  else nvl(fpe.BILL_BURDENED_COST, 0) +
                                       nvl(fin.BILL_BURDENED_COST, 0)
                                  end,
        fpe.CAPITALIZABLE_RAW_COST
                           = case when fpe.CAPITALIZABLE_RAW_COST is null and
                                       fin.CAPITALIZABLE_RAW_COST is null
                                  then to_number(null)
                                  else nvl(fpe.CAPITALIZABLE_RAW_COST, 0) +
                                       nvl(fin.CAPITALIZABLE_RAW_COST, 0)
                                  end,
        fpe.CAPITALIZABLE_BRDN_COST
                           = case when fpe.CAPITALIZABLE_BRDN_COST is null and
                                       fin.CAPITALIZABLE_BRDN_COST is null
                                  then to_number(null)
                                  else nvl(fpe.CAPITALIZABLE_BRDN_COST, 0) +
                                       nvl(fin.CAPITALIZABLE_BRDN_COST, 0)
                                  end,
        fpe.LABOR_RAW_COST = case when fpe.LABOR_RAW_COST is null and
                                       fin.LABOR_RAW_COST is null
                                  then to_number(null)
                                  else nvl(fpe.LABOR_RAW_COST, 0) +
                                       nvl(fin.LABOR_RAW_COST, 0)
                                  end,
        fpe.LABOR_BURDENED_COST
                           = case when fpe.LABOR_BURDENED_COST is null and
                                       fin.LABOR_BURDENED_COST is null
                                  then to_number(null)
                                  else nvl(fpe.LABOR_BURDENED_COST, 0) +
                                       nvl(fin.LABOR_BURDENED_COST, 0)
                                  end,
        fpe.BILL_LABOR_RAW_COST
                           = case when fpe.BILL_LABOR_RAW_COST is null and
                                       fin.BILL_LABOR_RAW_COST is null
                                  then to_number(null)
                                  else nvl(fpe.BILL_LABOR_RAW_COST, 0) +
                                       nvl(fin.BILL_LABOR_RAW_COST, 0)
                                  end,
        fpe.BILL_LABOR_BURDENED_COST
                           = case when fpe.BILL_LABOR_BURDENED_COST is null and
                                       fin.BILL_LABOR_BURDENED_COST is null
                                  then to_number(null)
                                  else nvl(fpe.BILL_LABOR_BURDENED_COST, 0) +
                                       nvl(fin.BILL_LABOR_BURDENED_COST, 0)
                                  end,
        fpe.LABOR_HRS      = case when fpe.LABOR_HRS is null and
                                       fin.LABOR_HRS is null
                                  then to_number(null)
                                  else nvl(fpe.LABOR_HRS, 0) +
                                       nvl(fin.LABOR_HRS, 0)
                                  end,
        fpe.BILL_LABOR_HRS = case when fpe.BILL_LABOR_HRS is null and
                                       fin.BILL_LABOR_HRS is null
                                  then to_number(null)
                                  else nvl(fpe.BILL_LABOR_HRS, 0) +
                                       nvl(fin.BILL_LABOR_HRS, 0)
                                  end,
        fpe.QUANTITY       = case when fpe.QUANTITY is null and
                                       fin.QUANTITY is null
                                  then to_number(null)
                                  else nvl(fpe.QUANTITY, 0) +
                                       nvl(fin.QUANTITY, 0)
                                  end,
        fpe.BILL_QUANTITY  = case when fpe.BILL_QUANTITY is null and
                                       fin.BILL_QUANTITY is null
                                  then to_number(null)
                                  else nvl(fpe.BILL_QUANTITY, 0) +
                                       nvl(fin.BILL_QUANTITY, 0)
                                  end,
        fpe.LAST_UPDATE_DATE
                 = fin.LAST_UPDATE_DATE,
        fpe.LAST_UPDATED_BY
                 = fin.LAST_UPDATED_BY,
        fpe.LAST_UPDATE_LOGIN
                 = fin.LAST_UPDATE_LOGIN
      when not matched then insert
      (
        fpe.PROJECT_ORG_ID,
        fpe.PROJECT_ORGANIZATION_ID,
        fpe.TIME_ID,
        fpe.PROJECT_ID,
        fpe.EXP_EVT_TYPE_ID,
        fpe.PERIOD_TYPE_ID,
        fpe.CALENDAR_TYPE,
        fpe.CURR_RECORD_TYPE_ID,
        fpe.CURRENCY_CODE,
        fpe.PROJECT_TYPE_CLASS,
        fpe.REVENUE,
        fpe.LABOR_REVENUE,
        fpe.RAW_COST,
        fpe.BURDENED_COST,
        fpe.BILL_RAW_COST,
        fpe.BILL_BURDENED_COST,
        fpe.CAPITALIZABLE_RAW_COST,
        fpe.CAPITALIZABLE_BRDN_COST,
        fpe.LABOR_RAW_COST,
        fpe.LABOR_BURDENED_COST,
        fpe.BILL_LABOR_RAW_COST,
        fpe.BILL_LABOR_BURDENED_COST,
        fpe.LABOR_HRS,
        fpe.BILL_LABOR_HRS,
        fpe.QUANTITY,
        fpe.BILL_QUANTITY,
        fpe.LAST_UPDATE_DATE,
        fpe.LAST_UPDATED_BY,
        fpe.CREATION_DATE,
        fpe.CREATED_BY,
        fpe.LAST_UPDATE_LOGIN
      )
      values
      (
        fin.PROJECT_ORG_ID,
        fin.PROJECT_ORGANIZATION_ID,
        fin.TIME_ID,
        fin.PROJECT_ID,
        fin.EXP_EVT_TYPE_ID,
        fin.PERIOD_TYPE_ID,
        fin.CALENDAR_TYPE,
        fin.CURR_RECORD_TYPE_ID,
        fin.CURRENCY_CODE,
        fin.PROJECT_TYPE_CLASS,
        fin.REVENUE,
        fin.LABOR_REVENUE,
        fin.RAW_COST,
        fin.BURDENED_COST,
        fin.BILL_RAW_COST,
        fin.BILL_BURDENED_COST,
        fin.CAPITALIZABLE_RAW_COST,
        fin.CAPITALIZABLE_BRDN_COST,
        fin.LABOR_RAW_COST,
        fin.LABOR_BURDENED_COST,
        fin.BILL_LABOR_RAW_COST,
        fin.BILL_LABOR_BURDENED_COST,
        fin.LABOR_HRS,
        fin.BILL_LABOR_HRS,
        fin.QUANTITY,
        fin.BILL_QUANTITY,
        fin.LAST_UPDATE_DATE,
        fin.LAST_UPDATED_BY,
        fin.CREATION_DATE,
        fin.CREATED_BY,
        fin.LAST_UPDATE_LOGIN
      );
Line: 4295

    l_last_update_date     date;
Line: 4296

    l_last_updated_by      number;
Line: 4299

    l_last_update_login    number;
Line: 4317

    l_last_update_date  := sysdate;
Line: 4318

    l_last_updated_by   := FND_GLOBAL.USER_ID;
Line: 4321

    l_last_update_login := FND_GLOBAL.LOGIN_ID;
Line: 4325

      insert /*+ append parallel(fpp) */ into PJI_FP_PROJ_F fpp
      (
        PROJECT_ORG_ID,
        PROJECT_ORGANIZATION_ID,
        TIME_ID,
        PROJECT_ID,
        PERIOD_TYPE_ID,
        CALENDAR_TYPE,
        CURR_RECORD_TYPE_ID,
        CURRENCY_CODE,
        PROJECT_TYPE_CLASS,
        REVENUE,
        LABOR_REVENUE,
        RAW_COST,
        BURDENED_COST,
        BILL_RAW_COST,
        BILL_BURDENED_COST,
        CAPITALIZABLE_RAW_COST,
        CAPITALIZABLE_BRDN_COST,
        LABOR_RAW_COST,
        LABOR_BURDENED_COST,
        BILL_LABOR_RAW_COST,
        BILL_LABOR_BURDENED_COST,
        REVENUE_WRITEOFF,
        LABOR_HRS,
        BILL_LABOR_HRS,
        CURR_BGT_REVENUE,
        CURR_BGT_RAW_COST,
        CURR_BGT_BURDENED_COST,
        CURR_BGT_LABOR_HRS,
        ORIG_BGT_REVENUE,
        ORIG_BGT_RAW_COST,
        ORIG_BGT_BURDENED_COST,
        ORIG_BGT_LABOR_HRS,
        FORECAST_REVENUE,
        FORECAST_RAW_COST,
        FORECAST_BURDENED_COST,
        FORECAST_LABOR_HRS,
        LAST_UPDATE_DATE,
        LAST_UPDATED_BY,
        CREATION_DATE,
        CREATED_BY,
        LAST_UPDATE_LOGIN
      )
      select /*+ full(fin3)  parallel(fin3)  */
        fin3.PROJECT_ORG_ID,
        fin3.PROJECT_ORGANIZATION_ID,
        fin3.TIME_ID,
        fin3.PROJECT_ID,
        fin3.PERIOD_TYPE_ID,
        fin3.CALENDAR_TYPE,
        fin3.CURR_RECORD_TYPE_ID,
        fin3.CURRENCY_CODE,
        fin3.PROJECT_TYPE_CLASS,
        fin3.REVENUE,
        fin3.LABOR_REVENUE,
        fin3.RAW_COST,
        fin3.BURDENED_COST,
        decode(fin3.PROJECT_TYPE_CLASS,
               'B', fin3.BILL_RAW_COST,
                    to_number(null))         BILL_RAW_COST,
        decode(fin3.Project_Type_Class,
               'B', fin3.BILL_BURDENED_COST,
                    to_number(null))         BILL_BURDENED_COST,
        decode(fin3.PROJECT_TYPE_CLASS,
               'C', fin3.BILL_RAW_COST,
                    to_number(null))         CAPITALIZABLE_RAW_COST,
        decode(fin3.PROJECT_TYPE_CLASS,
               'C', fin3.BILL_BURDENED_COST,
                    to_number(null))         CAPITALIZABLE_BRDN_COST,
        fin3.LABOR_RAW_COST,
        fin3.LABOR_BURDENED_COST,
        fin3.BILL_LABOR_RAW_COST,
        fin3.BILL_LABOR_BURDENED_COST,
        fin3.REVENUE_WRITEOFF,
        fin3.LABOR_HRS,
        fin3.BILL_LABOR_HRS,
        fin3.CURR_BGT_REVENUE,
        fin3.CURR_BGT_RAW_COST,
        fin3.CURR_BGT_BURDENED_COST,
        fin3.CURR_BGT_LABOR_HRS,
        fin3.ORIG_BGT_REVENUE,
        fin3.ORIG_BGT_RAW_COST,
        fin3.ORIG_BGT_BURDENED_COST,
        fin3.ORIG_BGT_LABOR_HRS,
        fin3.FORECAST_REVENUE,
        fin3.FORECAST_RAW_COST,
        fin3.FORECAST_BURDENED_COST,
        fin3.FORECAST_LABOR_HRS,
        l_last_update_date,
        l_last_updated_by,
        l_creation_date,
        l_created_by,
        l_last_update_login
      from
        PJI_FM_AGGR_FIN3 fin3
      where
        fin3.WORKER_ID = p_worker_id and
        (nvl(fin3.REVENUE                 , 0) <> 0 or
         nvl(fin3.LABOR_REVENUE           , 0) <> 0 or
         nvl(fin3.RAW_COST                , 0) <> 0 or
         nvl(fin3.BURDENED_COST           , 0) <> 0 or
         nvl(fin3.BILL_RAW_COST           , 0) <> 0 or
         nvl(fin3.BILL_BURDENED_COST      , 0) <> 0 or
         nvl(fin3.LABOR_RAW_COST          , 0) <> 0 or
         nvl(fin3.LABOR_BURDENED_COST     , 0) <> 0 or
         nvl(fin3.BILL_LABOR_RAW_COST     , 0) <> 0 or
         nvl(fin3.BILL_LABOR_BURDENED_COST, 0) <> 0 or
         nvl(fin3.REVENUE_WRITEOFF        , 0) <> 0 or
         nvl(fin3.LABOR_HRS               , 0) <> 0 or
         nvl(fin3.BILL_LABOR_HRS          , 0) <> 0 or
         nvl(fin3.CURR_BGT_REVENUE        , 0) <> 0 or
         nvl(fin3.CURR_BGT_RAW_COST       , 0) <> 0 or
         nvl(fin3.CURR_BGT_BURDENED_COST  , 0) <> 0 or
         nvl(fin3.CURR_BGT_LABOR_HRS      , 0) <> 0 or
         nvl(fin3.ORIG_BGT_REVENUE        , 0) <> 0 or
         nvl(fin3.ORIG_BGT_RAW_COST       , 0) <> 0 or
         nvl(fin3.ORIG_BGT_BURDENED_COST  , 0) <> 0 or
         nvl(fin3.ORIG_BGT_LABOR_HRS      , 0) <> 0 or
         nvl(fin3.FORECAST_REVENUE        , 0) <> 0 or
         nvl(fin3.FORECAST_RAW_COST       , 0) <> 0 or
         nvl(fin3.FORECAST_BURDENED_COST  , 0) <> 0 or
         nvl(fin3.FORECAST_LABOR_HRS      , 0) <> 0);
Line: 4454

        select
          PROJECT_ORG_ID,
          PROJECT_ORGANIZATION_ID,
          TIME_ID,
          PROJECT_ID,
          PERIOD_TYPE_ID,
          CALENDAR_TYPE,
          CURR_RECORD_TYPE_ID,
          CURRENCY_CODE,
          PROJECT_TYPE_CLASS,
          REVENUE,
          LABOR_REVENUE,
          RAW_COST,
          BURDENED_COST,
          BILL_RAW_COST,
          BILL_BURDENED_COST,
          CAPITALIZABLE_RAW_COST,
          CAPITALIZABLE_BRDN_COST,
          LABOR_RAW_COST,
          LABOR_BURDENED_COST,
          BILL_LABOR_RAW_COST,
          BILL_LABOR_BURDENED_COST,
          REVENUE_WRITEOFF,
          LABOR_HRS,
          BILL_LABOR_HRS,
          CURR_BGT_REVENUE,
          CURR_BGT_RAW_COST,
          CURR_BGT_BURDENED_COST,
          CURR_BGT_LABOR_HRS,
          ORIG_BGT_REVENUE,
          ORIG_BGT_RAW_COST,
          ORIG_BGT_BURDENED_COST,
          ORIG_BGT_LABOR_HRS,
          FORECAST_REVENUE,
          FORECAST_RAW_COST,
          FORECAST_BURDENED_COST,
          FORECAST_LABOR_HRS,
          l_last_update_date            LAST_UPDATE_DATE,
          l_last_updated_by             LAST_UPDATED_BY,
          l_creation_date               CREATION_DATE,
          l_created_by                  CREATED_BY,
          l_last_update_login           LAST_UPDATE_LOGIN
        from
          (
          select
            PROJECT_ORG_ID,
            PROJECT_ORGANIZATION_ID,
            TIME_ID,
            PROJECT_ID,
            PERIOD_TYPE_ID,
            CALENDAR_TYPE,
            CURR_RECORD_TYPE_ID,
            CURRENCY_CODE,
            PROJECT_TYPE_CLASS,
            sum(REVENUE)                  REVENUE,
            sum(LABOR_REVENUE)            LABOR_REVENUE,
            sum(RAW_COST)                 RAW_COST,
            sum(BURDENED_COST)            BURDENED_COST,
            sum(BILL_RAW_COST)            BILL_RAW_COST,
            sum(BILL_BURDENED_COST)       BILL_BURDENED_COST,
            sum(CAPITALIZABLE_RAW_COST)   CAPITALIZABLE_RAW_COST,
            sum(CAPITALIZABLE_BRDN_COST)  CAPITALIZABLE_BRDN_COST,
            sum(LABOR_RAW_COST)           LABOR_RAW_COST,
            sum(LABOR_BURDENED_COST)      LABOR_BURDENED_COST,
            sum(BILL_LABOR_RAW_COST)      BILL_LABOR_RAW_COST,
            sum(BILL_LABOR_BURDENED_COST) BILL_LABOR_BURDENED_COST,
            sum(REVENUE_WRITEOFF)         REVENUE_WRITEOFF,
            sum(LABOR_HRS)                LABOR_HRS,
            sum(BILL_LABOR_HRS)           BILL_LABOR_HRS,
            sum(CURR_BGT_REVENUE)         CURR_BGT_REVENUE,
            sum(CURR_BGT_RAW_COST)        CURR_BGT_RAW_COST,
            sum(CURR_BGT_BURDENED_COST)   CURR_BGT_BURDENED_COST,
            sum(CURR_BGT_LABOR_HRS)       CURR_BGT_LABOR_HRS,
            sum(ORIG_BGT_REVENUE)         ORIG_BGT_REVENUE,
            sum(ORIG_BGT_RAW_COST)        ORIG_BGT_RAW_COST,
            sum(ORIG_BGT_BURDENED_COST)   ORIG_BGT_BURDENED_COST,
            sum(ORIG_BGT_LABOR_HRS)       ORIG_BGT_LABOR_HRS,
            sum(FORECAST_REVENUE)         FORECAST_REVENUE,
            sum(FORECAST_RAW_COST)        FORECAST_RAW_COST,
            sum(FORECAST_BURDENED_COST)   FORECAST_BURDENED_COST,
            sum(FORECAST_LABOR_HRS)       FORECAST_LABOR_HRS
          from
            (
            select /*+ full(fin3)   parallel(fin3)  */
              fin3.PROJECT_ORG_ID,
              fin3.PROJECT_ORGANIZATION_ID,
              fin3.TIME_ID,
              fin3.PROJECT_ID,
              fin3.PERIOD_TYPE_ID,
              fin3.CALENDAR_TYPE,
              fin3.CURR_RECORD_TYPE_ID,
              fin3.CURRENCY_CODE,
              fin3.PROJECT_TYPE_CLASS,
              fin3.REVENUE,
              fin3.LABOR_REVENUE,
              fin3.RAW_COST,
              fin3.BURDENED_COST,
              decode(fin3.PROJECT_TYPE_CLASS,
                     'B', fin3.BILL_RAW_COST,
                          to_number(null))         BILL_RAW_COST,
              decode(fin3.Project_Type_Class,
                     'B', fin3.BILL_BURDENED_COST,
                          to_number(null))         BILL_BURDENED_COST,
              decode(fin3.PROJECT_TYPE_CLASS,
                     'C', fin3.BILL_RAW_COST,
                          to_number(null))         CAPITALIZABLE_RAW_COST,
              decode(fin3.PROJECT_TYPE_CLASS,
                     'C', fin3.BILL_BURDENED_COST,
                          to_number(null))         CAPITALIZABLE_BRDN_COST,
              fin3.LABOR_RAW_COST,
              fin3.LABOR_BURDENED_COST,
              fin3.BILL_LABOR_RAW_COST,
              fin3.BILL_LABOR_BURDENED_COST,
              fin3.REVENUE_WRITEOFF,
              fin3.LABOR_HRS,
              fin3.BILL_LABOR_HRS,
              fin3.CURR_BGT_REVENUE,
              fin3.CURR_BGT_RAW_COST,
              fin3.CURR_BGT_BURDENED_COST,
              fin3.CURR_BGT_LABOR_HRS,
              fin3.ORIG_BGT_REVENUE,
              fin3.ORIG_BGT_RAW_COST,
              fin3.ORIG_BGT_BURDENED_COST,
              fin3.ORIG_BGT_LABOR_HRS,
              fin3.FORECAST_REVENUE,
              fin3.FORECAST_RAW_COST,
              fin3.FORECAST_BURDENED_COST,
              fin3.FORECAST_LABOR_HRS
            from
              PJI_FM_AGGR_FIN3 fin3
            where
              fin3.WORKER_ID = p_worker_id
            union all                       -- partial refresh
            select /*+ ordered full(map) parallel(map)
                               index(fpp, PJI_FP_PROJ_F_N2) use_nl(fpp) */
              fpp.PROJECT_ORG_ID,
              fpp.PROJECT_ORGANIZATION_ID,
              fpp.TIME_ID,
              fpp.PROJECT_ID,
              fpp.PERIOD_TYPE_ID,
              fpp.CALENDAR_TYPE,
              fpp.CURR_RECORD_TYPE_ID,
              fpp.CURRENCY_CODE,
              fpp.PROJECT_TYPE_CLASS,
              -fpp.REVENUE,
              -fpp.LABOR_REVENUE,
              -fpp.RAW_COST,
              -fpp.BURDENED_COST,
              -fpp.BILL_RAW_COST,
              -fpp.BILL_BURDENED_COST,
              -fpp.CAPITALIZABLE_RAW_COST,
              -fpp.CAPITALIZABLE_BRDN_COST,
              -fpp.LABOR_RAW_COST,
              -fpp.LABOR_BURDENED_COST,
              -fpp.BILL_LABOR_RAW_COST,
              -fpp.BILL_LABOR_BURDENED_COST,
              -fpp.REVENUE_WRITEOFF,
              -fpp.LABOR_HRS,
              -fpp.BILL_LABOR_HRS,
              to_number(null) CURR_BGT_REVENUE,
              to_number(null) CURR_BGT_RAW_COST,
              to_number(null) CURR_BGT_BURDENED_COST,
              to_number(null) CURR_BGT_LABOR_HRS,
              to_number(null) ORIG_BGT_REVENUE,
              to_number(null) ORIG_BGT_RAW_COST,
              to_number(null) ORIG_BGT_BURDENED_COST,
              to_number(null) ORIG_BGT_LABOR_HRS,
              to_number(null) FORECAST_REVENUE,
              to_number(null) FORECAST_RAW_COST,
              to_number(null) FORECAST_BURDENED_COST,
              to_number(null) FORECAST_LABOR_HRS
            from
              PJI_PJI_PROJ_BATCH_MAP map,
              PJI_FP_PROJ_F fpp
            where
              l_extraction_type   = 'PARTIAL'   and
              map.WORKER_ID       = p_worker_id and
              map.EXTRACTION_TYPE = 'P'         and
              fpp.PROJECT_ID      = map.PROJECT_ID
            )
          group by
            PROJECT_ORG_ID,
            PROJECT_ORGANIZATION_ID,
            TIME_ID,
            PROJECT_ID,
            PERIOD_TYPE_ID,
            CALENDAR_TYPE,
            CURR_RECORD_TYPE_ID,
            CURRENCY_CODE,
            PROJECT_TYPE_CLASS
          )
        where
          nvl(REVENUE                 , 0) <> 0 or
          nvl(LABOR_REVENUE           , 0) <> 0 or
          nvl(RAW_COST                , 0) <> 0 or
          nvl(BURDENED_COST           , 0) <> 0 or
          nvl(BILL_RAW_COST           , 0) <> 0 or
          nvl(BILL_BURDENED_COST      , 0) <> 0 or
          nvl(CAPITALIZABLE_RAW_COST  , 0) <> 0 or
          nvl(CAPITALIZABLE_BRDN_COST , 0) <> 0 or
          nvl(LABOR_RAW_COST          , 0) <> 0 or
          nvl(LABOR_BURDENED_COST     , 0) <> 0 or
          nvl(BILL_LABOR_RAW_COST     , 0) <> 0 or
          nvl(BILL_LABOR_BURDENED_COST, 0) <> 0 or
          nvl(REVENUE_WRITEOFF        , 0) <> 0 or
          nvl(LABOR_HRS               , 0) <> 0 or
          nvl(BILL_LABOR_HRS          , 0) <> 0 or
          nvl(CURR_BGT_REVENUE        , 0) <> 0 or
          nvl(CURR_BGT_RAW_COST       , 0) <> 0 or
          nvl(CURR_BGT_BURDENED_COST  , 0) <> 0 or
          nvl(CURR_BGT_LABOR_HRS      , 0) <> 0 or
          nvl(ORIG_BGT_REVENUE        , 0) <> 0 or
          nvl(ORIG_BGT_RAW_COST       , 0) <> 0 or
          nvl(ORIG_BGT_BURDENED_COST  , 0) <> 0 or
          nvl(ORIG_BGT_LABOR_HRS      , 0) <> 0 or
          nvl(FORECAST_REVENUE        , 0) <> 0 or
          nvl(FORECAST_RAW_COST       , 0) <> 0 or
          nvl(FORECAST_BURDENED_COST  , 0) <> 0 or
          nvl(FORECAST_LABOR_HRS      , 0) <> 0
      ) fin
      on
      (
        fin.PROJECT_ORG_ID          = fpp.PROJECT_ORG_ID          and
        fin.PROJECT_ORGANIZATION_ID = fpp.PROJECT_ORGANIZATION_ID and
        fin.TIME_ID                 = fpp.TIME_ID                 and
        fin.PROJECT_ID              = fpp.PROJECT_ID              and
        fin.PERIOD_TYPE_ID          = fpp.PERIOD_TYPE_ID          and
        fin.CALENDAR_TYPE           = fpp.CALENDAR_TYPE           and
        fin.CURR_RECORD_TYPE_ID     = fpp.CURR_RECORD_TYPE_ID     and
        fin.CURRENCY_CODE           = fpp.CURRENCY_CODE           and
        fin.PROJECT_TYPE_CLASS      = fpp.PROJECT_TYPE_CLASS
      )
      when matched then update set
        fpp.REVENUE        = case when fpp.REVENUE is null and
                                       fin.REVENUE is null
                                  then to_number(null)
                                  else nvl(fpp.REVENUE, 0) +
                                       nvl(fin.REVENUE, 0)
                                  end,
        fpp.LABOR_REVENUE  = case when fpp.LABOR_REVENUE is null and
                                       fin.LABOR_REVENUE is null
                                  then to_number(null)
                                  else nvl(fpp.LABOR_REVENUE, 0) +
                                       nvl(fin.LABOR_REVENUE, 0)
                                  end,
        fpp.RAW_COST       = case when fpp.RAW_COST is null and
                                       fin.RAW_COST is null
                                  then to_number(null)
                                  else nvl(fpp.RAW_COST, 0) +
                                       nvl(fin.RAW_COST, 0)
                                  end,
        fpp.BURDENED_COST  = case when fpp.BURDENED_COST is null and
                                       fin.BURDENED_COST is null
                                  then to_number(null)
                                  else nvl(fpp.BURDENED_COST, 0) +
                                       nvl(fin.BURDENED_COST, 0)
                                  end,
        fpp.BILL_RAW_COST  = case when fpp.BILL_RAW_COST is null and
                                       fin.BILL_RAW_COST is null
                                  then to_number(null)
                                  else nvl(fpp.BILL_RAW_COST, 0) +
                                       nvl(fin.BILL_RAW_COST, 0)
                                  end,
        fpp.BILL_BURDENED_COST
                           = case when fpp.BILL_BURDENED_COST is null and
                                       fin.BILL_BURDENED_COST is null
                                  then to_number(null)
                                  else nvl(fpp.BILL_BURDENED_COST, 0) +
                                       nvl(fin.BILL_BURDENED_COST, 0)
                                  end,
        fpp.CAPITALIZABLE_RAW_COST
                           = case when fpp.CAPITALIZABLE_RAW_COST is null and
                                       fin.CAPITALIZABLE_RAW_COST is null
                                  then to_number(null)
                                  else nvl(fpp.CAPITALIZABLE_RAW_COST, 0) +
                                       nvl(fin.CAPITALIZABLE_RAW_COST, 0)
                                  end,
        fpp.CAPITALIZABLE_BRDN_COST
                           = case when fpp.CAPITALIZABLE_BRDN_COST is null and
                                       fin.CAPITALIZABLE_BRDN_COST is null
                                  then to_number(null)
                                  else nvl(fpp.CAPITALIZABLE_BRDN_COST, 0) +
                                       nvl(fin.CAPITALIZABLE_BRDN_COST, 0)
                                  end,
        fpp.LABOR_RAW_COST = case when fpp.LABOR_RAW_COST is null and
                                       fin.LABOR_RAW_COST is null
                                  then to_number(null)
                                  else nvl(fpp.LABOR_RAW_COST, 0) +
                                       nvl(fin.LABOR_RAW_COST, 0)
                                  end,
        fpp.LABOR_BURDENED_COST
                           = case when fpp.LABOR_BURDENED_COST is null and
                                       fin.LABOR_BURDENED_COST is null
                                  then to_number(null)
                                  else nvl(fpp.LABOR_BURDENED_COST, 0) +
                                       nvl(fin.LABOR_BURDENED_COST, 0)
                                  end,
        fpp.BILL_LABOR_RAW_COST
                           = case when fpp.BILL_LABOR_RAW_COST is null and
                                       fin.BILL_LABOR_RAW_COST is null
                                  then to_number(null)
                                  else nvl(fpp.BILL_LABOR_RAW_COST, 0) +
                                       nvl(fin.BILL_LABOR_RAW_COST, 0)
                                  end,
        fpp.BILL_LABOR_BURDENED_COST
                           = case when fpp.BILL_LABOR_BURDENED_COST is null and
                                       fin.BILL_LABOR_BURDENED_COST is null
                                  then to_number(null)
                                  else nvl(fpp.BILL_LABOR_BURDENED_COST, 0) +
                                       nvl(fin.BILL_LABOR_BURDENED_COST, 0)
                                  end,
        fpp.REVENUE_WRITEOFF
                           = case when fpp.REVENUE_WRITEOFF is null and
                                       fin.REVENUE_WRITEOFF is null
                                  then to_number(null)
                                  else nvl(fpp.REVENUE_WRITEOFF, 0) +
                                       nvl(fin.REVENUE_WRITEOFF, 0)
                                  end,
        fpp.LABOR_HRS      = case when fpp.LABOR_HRS is null and
                                       fin.LABOR_HRS is null
                                  then to_number(null)
                                  else nvl(fpp.LABOR_HRS, 0) +
                                       nvl(fin.LABOR_HRS, 0)
                                  end,
        fpp.BILL_LABOR_HRS = case when fpp.BILL_LABOR_HRS is null and
                                       fin.BILL_LABOR_HRS is null
                                  then to_number(null)
                                  else nvl(fpp.BILL_LABOR_HRS, 0) +
                                       nvl(fin.BILL_LABOR_HRS, 0)
                                  end,
        fpp.CURR_BGT_REVENUE
                           = case when fpp.CURR_BGT_REVENUE is null and
                                       fin.CURR_BGT_REVENUE is null
                                  then to_number(null)
                                  else nvl(fpp.CURR_BGT_REVENUE, 0) +
                                       nvl(fin.CURR_BGT_REVENUE, 0)
                                  end,
        fpp.CURR_BGT_RAW_COST
                           = case when fpp.CURR_BGT_RAW_COST is null and
                                       fin.CURR_BGT_RAW_COST is null
                                  then to_number(null)
                                  else nvl(fpp.CURR_BGT_RAW_COST, 0) +
                                       nvl(fin.CURR_BGT_RAW_COST, 0)
                                  end,
        fpp.CURR_BGT_BURDENED_COST
                           = case when fpp.CURR_BGT_BURDENED_COST is null and
                                       fin.CURR_BGT_BURDENED_COST is null
                                  then to_number(null)
                                  else nvl(fpp.CURR_BGT_BURDENED_COST, 0) +
                                       nvl(fin.CURR_BGT_BURDENED_COST, 0)
                                  end,
        fpp.CURR_BGT_LABOR_HRS
                           = case when fpp.CURR_BGT_LABOR_HRS is null and
                                       fin.CURR_BGT_LABOR_HRS is null
                                  then to_number(null)
                                  else nvl(fpp.CURR_BGT_LABOR_HRS, 0) +
                                       nvl(fin.CURR_BGT_LABOR_HRS, 0)
                                  end,
        fpp.ORIG_BGT_REVENUE
                           = case when fpp.ORIG_BGT_REVENUE is null and
                                       fin.ORIG_BGT_REVENUE is null
                                  then to_number(null)
                                  else nvl(fpp.ORIG_BGT_REVENUE, 0) +
                                       nvl(fin.ORIG_BGT_REVENUE, 0)
                                  end,
        fpp.ORIG_BGT_RAW_COST
                           = case when fpp.ORIG_BGT_RAW_COST is null and
                                       fin.ORIG_BGT_RAW_COST is null
                                  then to_number(null)
                                  else nvl(fpp.ORIG_BGT_RAW_COST, 0) +
                                       nvl(fin.ORIG_BGT_RAW_COST, 0)
                                  end,
        fpp.ORIG_BGT_BURDENED_COST
                           = case when fpp.ORIG_BGT_BURDENED_COST is null and
                                       fin.ORIG_BGT_BURDENED_COST is null
                                  then to_number(null)
                                  else nvl(fpp.ORIG_BGT_BURDENED_COST, 0) +
                                       nvl(fin.ORIG_BGT_BURDENED_COST, 0)
                                  end,
        fpp.ORIG_BGT_LABOR_HRS
                           = case when fpp.ORIG_BGT_LABOR_HRS is null and
                                       fin.ORIG_BGT_LABOR_HRS is null
                                  then to_number(null)
                                  else nvl(fpp.ORIG_BGT_LABOR_HRS, 0) +
                                       nvl(fin.ORIG_BGT_LABOR_HRS, 0)
                                  end,
        fpp.FORECAST_REVENUE
                           = case when fpp.FORECAST_REVENUE is null and
                                       fin.FORECAST_REVENUE is null
                                  then to_number(null)
                                  else nvl(fpp.FORECAST_REVENUE, 0) +
                                       nvl(fin.FORECAST_REVENUE, 0)
                                  end,
        fpp.FORECAST_RAW_COST
                           = case when fpp.FORECAST_RAW_COST is null and
                                       fin.FORECAST_RAW_COST is null
                                  then to_number(null)
                                  else nvl(fpp.FORECAST_RAW_COST, 0) +
                                       nvl(fin.FORECAST_RAW_COST, 0)
                                  end,
        fpp.FORECAST_BURDENED_COST
                           = case when fpp.FORECAST_BURDENED_COST is null and
                                       fin.FORECAST_BURDENED_COST is null
                                  then to_number(null)
                                  else nvl(fpp.FORECAST_BURDENED_COST, 0) +
                                       nvl(fin.FORECAST_BURDENED_COST, 0)
                                  end,
        fpp.FORECAST_LABOR_HRS
                           = case when fpp.FORECAST_LABOR_HRS is null and
                                       fin.FORECAST_LABOR_HRS is null
                                  then to_number(null)
                                  else nvl(fpp.FORECAST_LABOR_HRS, 0) +
                                       nvl(fin.FORECAST_LABOR_HRS, 0)
                                  end,
        fpp.LAST_UPDATE_DATE
                 = fin.LAST_UPDATE_DATE,
        fpp.LAST_UPDATED_BY
                 = fin.LAST_UPDATED_BY,
        fpp.LAST_UPDATE_LOGIN
                 = fin.LAST_UPDATE_LOGIN
      when not matched then insert
      (
        fpp.PROJECT_ORG_ID,
        fpp.PROJECT_ORGANIZATION_ID,
        fpp.TIME_ID,
        fpp.PROJECT_ID,
        fpp.PERIOD_TYPE_ID,
        fpp.CALENDAR_TYPE,
        fpp.CURR_RECORD_TYPE_ID,
        fpp.CURRENCY_CODE,
        fpp.PROJECT_TYPE_CLASS,
        fpp.REVENUE,
        fpp.LABOR_REVENUE,
        fpp.RAW_COST,
        fpp.BURDENED_COST,
        fpp.BILL_RAW_COST,
        fpp.BILL_BURDENED_COST,
        fpp.CAPITALIZABLE_RAW_COST,
        fpp.CAPITALIZABLE_BRDN_COST,
        fpp.LABOR_RAW_COST,
        fpp.LABOR_BURDENED_COST,
        fpp.BILL_LABOR_RAW_COST,
        fpp.BILL_LABOR_BURDENED_COST,
        fpp.REVENUE_WRITEOFF,
        fpp.LABOR_HRS,
        fpp.BILL_LABOR_HRS,
        fpp.CURR_BGT_REVENUE,
        fpp.CURR_BGT_RAW_COST,
        fpp.CURR_BGT_BURDENED_COST,
        fpp.CURR_BGT_LABOR_HRS,
        fpp.ORIG_BGT_REVENUE,
        fpp.ORIG_BGT_RAW_COST,
        fpp.ORIG_BGT_BURDENED_COST,
        fpp.ORIG_BGT_LABOR_HRS,
        fpp.FORECAST_REVENUE,
        fpp.FORECAST_RAW_COST,
        fpp.FORECAST_BURDENED_COST,
        fpp.FORECAST_LABOR_HRS,
        fpp.LAST_UPDATE_DATE,
        fpp.LAST_UPDATED_BY,
        fpp.CREATION_DATE,
        fpp.CREATED_BY,
        fpp.LAST_UPDATE_LOGIN
      )
      values
      (
        fin.PROJECT_ORG_ID,
        fin.PROJECT_ORGANIZATION_ID,
        fin.TIME_ID,
        fin.PROJECT_ID,
        fin.PERIOD_TYPE_ID,
        fin.CALENDAR_TYPE,
        fin.CURR_RECORD_TYPE_ID,
        fin.CURRENCY_CODE,
        fin.PROJECT_TYPE_CLASS,
        fin.REVENUE,
        fin.LABOR_REVENUE,
        fin.RAW_COST,
        fin.BURDENED_COST,
        fin.BILL_RAW_COST,
        fin.BILL_BURDENED_COST,
        fin.CAPITALIZABLE_RAW_COST,
        fin.CAPITALIZABLE_BRDN_COST,
        fin.LABOR_RAW_COST,
        fin.LABOR_BURDENED_COST,
        fin.BILL_LABOR_RAW_COST,
        fin.BILL_LABOR_BURDENED_COST,
        fin.REVENUE_WRITEOFF,
        fin.LABOR_HRS,
        fin.BILL_LABOR_HRS,
        fin.CURR_BGT_REVENUE,
        fin.CURR_BGT_RAW_COST,
        fin.CURR_BGT_BURDENED_COST,
        fin.CURR_BGT_LABOR_HRS,
        fin.ORIG_BGT_REVENUE,
        fin.ORIG_BGT_RAW_COST,
        fin.ORIG_BGT_BURDENED_COST,
        fin.ORIG_BGT_LABOR_HRS,
        fin.FORECAST_REVENUE,
        fin.FORECAST_RAW_COST,
        fin.FORECAST_BURDENED_COST,
        fin.FORECAST_LABOR_HRS,
        fin.LAST_UPDATE_DATE,
        fin.LAST_UPDATED_BY,
        fin.CREATION_DATE,
        fin.CREATED_BY,
        fin.LAST_UPDATE_LOGIN
      );
Line: 4987

       CURSOR update_scope(c_worker_id number)
       IS
         SELECT
                 map.PROJECT_ID
                 , map.NEW_PROJECT_ORGANIZATION_ID
         FROM    PJI_PJI_PROJ_BATCH_MAP   map
         WHERE   1=1
           AND   map.WORKER_ID = c_worker_id
           AND   map.PROJECT_ORGANIZATION_ID <> map.NEW_PROJECT_ORGANIZATION_ID
         ;
Line: 5024

      IF    update_scope%ISOPEN then
            CLOSE update_scope;
Line: 5027

      OPEN update_scope(p_worker_id);
Line: 5033

             L_NEW_ORGZ_TAB.delete;
Line: 5034

             L_PROJECT_TAB.delete;
Line: 5039

             FETCH update_scope BULK COLLECT
             INTO
             L_PROJECT_TAB
             , L_NEW_ORGZ_TAB    LIMIT 1000;
Line: 5047

                l_this_fetch := update_scope%ROWCOUNT - l_totally_fetched;
Line: 5048

                l_totally_fetched := update_scope%ROWCOUNT;
Line: 5074

             Update PJI_FP_PROJ_ET_WT_F
                Set PROJECT_ORGANIZATION_ID = L_NEW_ORGZ_TAB(I)
              Where PROJECT_ID              = L_PROJECT_TAB(I)
             ;
Line: 5080

             Update PJI_FP_PROJ_ET_F
                Set PROJECT_ORGANIZATION_ID = L_NEW_ORGZ_TAB(I)
              Where PROJECT_ID              = L_PROJECT_TAB(I)
             ;
Line: 5086

             Update PJI_FP_PROJ_F
                Set PROJECT_ORGANIZATION_ID = L_NEW_ORGZ_TAB(I)
              Where PROJECT_ID              = L_PROJECT_TAB(I)
             ;
Line: 5101

      CLOSE update_scope;