人員轉(zhuǎn)移(PKG_PA_TRANSFER)

過程及描述

過程 描述
** p_Template **
p_grzc_save_detail 個人轉(zhuǎn)出詳細信息

過程實現(xiàn)邏輯及代碼

** p_grzc_save_detail **

  • 輸入?yún)?shù)
PROCEDURE p_grzc_save_detail(prm_yac071   IN VARCHAR2, --
                               prm_yac072   IN VARCHAR2, --
                               prm_AppCode  OUT VARCHAR2,
                               prm_ErrorMsg OUT VARCHAR2) IS
  • 變量申明
 n_count        NUMBER(6);
    n_aae030       NUMBER(6);
    n_aae031       NUMBER(6);
    n_aae031_t     NUMBER(6);
    n_aic079_ycx   NUMBER(6); --一次性繳費月數(shù)
    n_aae180_ycx   NUMBER(6); --一次性繳費基數(shù)
    n_aae001       NUMBER(4);
    s_aaz159       ac02.aaz159%TYPE;
    s_aac001       ac01.aac001%TYPE;
    s_aae140       ac02.aae140%TYPE;
    s_aab034       af01.aab034%TYPE;
    s_aab034_c     af01.aab034%TYPE;
    s_aaz223       ac43.aaz223%TYPE;
    n_aae003       ac43.aae003%TYPE;
    n_aic079       NUMBER(4);
    s_aab301       VARCHAR2(16); --參保地區(qū)行政區(qū)劃
    s_aab300       VARCHAR2(200); -- aab300 參保地區(qū)機構(gòu)名稱 VARCHAR2(200)
    n_aae180       NUMBER(14, 2); --月繳費基數(shù) NUMBER(14,2)
    n_aae181       NUMBER(10, 4); --單位繳費比例 NUMBER(10,4)
    n_aae183       NUMBER(10, 4); --其中單位繳費劃入個人賬戶比例 NUMBER(10,4)
    n_aae182       NUMBER(10, 4); --個人繳費比例 NUMBER(10,4)
    n_yae121       NUMBER(14, 2); --當年記賬金額小計 NUMBER(14,2)
    n_aic072       NUMBER(14, 2); --當年記賬金額個人繳費部分 NUMBER(14,2)
    n_yae122       NUMBER(14, 2); --當年記賬利息 NUMBER(14,2)
    n_yae123       NUMBER(14, 2); --當年記賬利息個人繳費部分 NUMBER(14,2)
    n_yae124       NUMBER(14, 2); --至本年末賬戶累計存儲額 NUMBER(14,2)
    n_yae125       NUMBER(14, 2); --至本年末賬戶累計存儲額個人繳費部分 NUMBER(14,2)
    n_aae002       NUMBER(6); --費款所屬期 NUMBER(6)
    n_yaz341       NUMBER(14, 2); --轉(zhuǎn)移人員歷年繳費及個人賬戶記賬信息ID VARCHAR2(16)
    s_aae013       VARCHAR2(200);
    n_aaa041_dw    NUMBER(10, 4); --單位繳費比例
    n_aaa042_dw    NUMBER(10, 4); --單位繳費劃賬比例
    n_aaa041_gr    NUMBER(10, 4); --個人繳費比例
    n_aaa042_gr    NUMBER(10, 4); --個人繳費劃賬比例
    n_aaa041_dw_bs NUMBER(10, 4); --單位繳費比例(比例調(diào)整補收)
    n_aaa042_dw_bs NUMBER(10, 4); --單位繳費劃賬比例(比例調(diào)整補收)
    n_aaa041_gr_bs NUMBER(10, 4); --個人繳費比例(比例調(diào)整補收)
    n_aaa042_gr_bs NUMBER(10, 4); --個人繳費劃賬比例(比例調(diào)整補收)
    s_aae300       VARCHAR2(1); --一次性躉交標志
    n_aae030_ycx   NUMBER(6);
  • 初始化變量
BEGIN
 prm_AppCode  := PKG_Constants.GN_DEF_OK;
    prm_ErrorMsg := '';
  • 刪除ac07a3人員歷年繳費信息及個人賬戶記賬信息中該人員轉(zhuǎn)移ID,轉(zhuǎn)移明細ID對應的條目
DELETE ac07a3
     WHERE yac071 = prm_yac071
       AND yac072 = prm_yac072;
  • 查詢AC07A1人員轉(zhuǎn)移明細表中的aac001個人編號、aaz159人員參保關系ID、aae140險種類型、在本地終止繳費時間aae031賦值到變量中
SELECT a.aac001, a.aaz159, a.aae140, to_char(a.aae035, 'yyyymm')
      INTO s_aac001, s_aaz159, s_aae140, n_aae031--個人編號 人員參保關系id 險種類型 在本地繳費終止時間 
      FROM ac07a1 a
     WHERE a.yac071 = prm_yac071--人員轉(zhuǎn)移記錄id 
       AND a.yac072 = prm_yac072;--人員轉(zhuǎn)移明細id ;
  • 查詢AC06人員轉(zhuǎn)移記錄中個人編碼aac001、人員轉(zhuǎn)移記錄ID yac071對應的aab034社會保險經(jīng)辦機構(gòu)編碼賦值到變量s_aab034_
SELECT aab034--社會保險經(jīng)辦機構(gòu)編碼 
      INTO s_aab034_c
      FROM ac06
     WHERE aac001 = s_aac001
       AND yac071 = prm_yac071;
  • 調(diào)用過程pkg_pa_conmmon.p_getEmployeeJfxx獲取指定期間內(nèi),某人某險種的累積實繳月數(shù),累積實繳繳費基數(shù)(不包含任何一次性繳費),并判斷是否執(zhí)行成功
 pkg_pa_common.p_getEmployeeJfxx( prm_aac001    => s_aac001, --個人編號
                                    prm_aaz159    => s_aaz159, --人員參保關系ID
                                    prm_aae140    => s_aae140, --險種編號
                                    prm_aab001    => NULL, --單位編號(允許為空)
                                    prm_aab034    => NULL, --經(jīng)辦機構(gòu)(允許為空)
                                    prm_aae002_ks => NULL, --開始期號(允許為空)
                                    prm_aae002_jz => NULL, --截止期號(允許為空)
                                    prm_aae041    => n_aae030, --最小做賬期號
                                    prm_aae042    => n_aae031_t, --最大做賬期號
                                    prm_appcode   => prm_appcode, --執(zhí)行代碼
                                    prm_ErrorMsg  => prm_ErrorMsg); --執(zhí)行失敗信息
    IF prm_AppCode != PKG_Constants.gn_def_OK THEN
      RETURN;
    END IF;
  • 查詢ac01社會保險參保人員中aac001、aac146首次參工用工形式為原固定職工條目的個數(shù)賦值到n_count
    如果是固定工且非一次性繳費開始月小于199204,則起始年月設為199204,這樣明細就不會顯示199204前記錄n_aae030 := 199204
SELECT COUNT(1)
      INTO n_count
      FROM ac01--社會保險參保人員
     WHERE aac001 = s_aac001
       AND aac146 != pkg_constants.AAC013_YGDZG;--首次參工用工形式 
IF n_count <= 0 AND n_aae030 <> 0 AND n_aae030 <= 199204 THEN
      n_aae030 := 199204;
    END IF;
n_aae002 := n_aae030;
  • 本地不存在歷年記錄的話也檢查是否有一次性記錄,有一次性記錄的話也得參與循環(huán)
BEGIN
      SELECT MIN(AAE002)--費款所屬期 
        INTO N_AAE030_YCX
        FROM AC43--人員征繳明細
       WHERE AAC001 = S_AAC001
         AND AAE140 = '110'
         AND AAA115 IN ('41', '42', '43', '44', '45')--應繳類型 
         AND AAE073 > 0--實收總金額 
         AND YAE230 = 0--退收標志 
         AND AAE100 = '1';
    EXCEPTION
      WHEN OTHERS THEN
        N_AAE030_YCX := 0;
    END;
  • 判斷一次性繳費和非一次性繳費在本地是否有數(shù)據(jù),都沒有則n_aae002費款所屬期設為999912即從未有繳費記錄,有非一次性繳費null不做處理,只有一次性繳費按一次性繳費時間賦值到n_aae002,都有取兩者最近記錄
 IF n_aae002 = 0 AND N_AAE030_YCX = 0 THEN
      n_aae002 := 999912;
    ELSIF n_aae002 > 0 AND N_AAE030_YCX = 0 THEN
      NULL;
    ELSIF n_aae002 = 0 AND N_AAE030_YCX > 0 THEN
      n_aae002 := N_AAE030_YCX;
    ELSIF n_aae002 > 0 AND N_AAE030_YCX > 0 THEN
      n_aae002 := least(n_aae002, N_AAE030_YCX);
    END IF;
  • 如果費款所屬期為零
IF n_aae002 = 0 THEN
      n_aae002 := 999912;
    END IF;
  • while loop,當費款所屬期n_aae002小于等于系統(tǒng)當前時間時,循環(huán)loop
WHILE n_aae002 <= n_aae031 LOOP
      --n_aae031 取得是轉(zhuǎn)移日期,即系統(tǒng)當月
      n_aae180     := 0; --月繳費基數(shù) NUMBER(14,2)
      n_aae181     := 0; --單位繳費比例 NUMBER(10,4)
      n_aae183     := 0; --其中單位繳費劃入個人賬戶比例 NUMBER(10,4)
      n_aae182     := 0; --個人繳費比例 NUMBER(10,4)
      n_aic079     := 0; --月數(shù)
      s_aab300     := '';
      s_aab034     := '';
      s_aab301     := '';
      s_aae013     := '';
      N_AIC079_YCX := 0;
      N_AAE180_YCX := 0;
      s_aae300     := '';
      --獲取本地非一次性繳費月數(shù)的  繳費基數(shù) 和 月數(shù)
      pkg_pa_common.p_getEmployeeJfxx(prm_aac001    => s_aac001, --個人編號
                                      prm_aaz159    => s_aaz159, --人員參保關系ID
                                      prm_aae140    => s_aae140, --險種編號
                                      prm_aab001    => NULL, --單位編號(允許為空)
                                      prm_aab034    => NULL, --經(jīng)辦機構(gòu)(允許為空)
                                      prm_aae002_ks => n_aae002, --開始期號(允許為空)
                                      prm_aae002_jz => n_aae002, --截止期號(允許為空)
                                      prm_aae202_sj => n_aic079, --實繳月數(shù)
                                      prm_aae180_sj => n_aae180, --實繳基數(shù)
                                      prm_appcode   => prm_appcode, --執(zhí)行代碼
                                      prm_ErrorMsg  => prm_ErrorMsg); --執(zhí)行失敗信息
      IF prm_appcode != pkg_constants.GN_DEF_OK THEN
        RETURN;
      END IF;

      --獲取本地一次性繳費月數(shù)的 繳費基數(shù) 和 月數(shù)
      BEGIN
        SELECT SUM(AAE202), SUM(NVL(AAE180, 0))--累計繳費月數(shù)增加額 人員繳費基數(shù) 
          INTO N_AIC079_YCX, N_AAE180_YCX
          FROM AC43
         WHERE AAC001 = S_AAC001
           AND AAE002 = N_AAE002--費款所屬期 
           AND AAE140 = '110'
           AND AAA115 IN ('41', '42', '43', '44', '45')
           AND AAE073 > 0
           AND YAE230 = 0
           AND AAE100 = '1';
      EXCEPTION
        WHEN no_data_found THEN
          N_AIC079_YCX := 0;
          N_AAE180_YCX := 0;
      END;

      --本月有歷年繳費 ( 不包含有一次性繳費 )
      IF n_aae180 > 0 AND NVL(N_AAE180_YCX, 0) = 0 THEN
        BEGIN
          SELECT a.aaz223, a.aab034, a.aae003
            INTO s_aaz223, s_aab034, n_aae003
            FROM ac43 a
           WHERE a.aae140 = s_aae140
             AND a.aae002 = n_aae002
             AND a.aae100 = pkg_constants.GN_DEF_YES
             AND a.aae078 = pkg_constants.GN_DEF_YES
             AND a.aaz159 = s_aaz159
             AND a.aac001 = s_aac001
             AND a.aaa115 IN (pkg_constants.AAA115_ZCYJ, --正常應繳
                              pkg_constants.AAA115_SJLSSJ, --實繳歷史數(shù)據(jù)
                              pkg_constants.AAA115_SBJJDJYBF, --失業(yè)保險代繳醫(yī)保費
                              pkg_constants.AAA115_BZD, --中斷或延遲年限補收
                              pkg_constants.AAA115_YCXBS, --一次性補收
                              '37',
                              '38')
             AND rownum = 1;
        EXCEPTION
          WHEN OTHERS THEN
            PRM_APPCODE  := PKG_CONSTANTS.GN_DEF_ERR;
            PRM_ERRORMSG := '獲取本人歷年繳費出錯,請檢查![' || s_aae140 || ']-[' ||
                            n_aae002 || ']-[' || s_aaz159 || ']' || SQLERRM ||
                            PKG_COMMON.F_get_error_line(DBMS_UTILITY.format_call_stack);
            RETURN;
        END;
        --獲取繳費比例
        --獲取單位、個人繳費比例
        BEGIN
          SELECT nvl(a.aaa041, 0), nvl(a.aaa042, 0)
            INTO n_aaa041_dw, n_aaa042_dw
            FROM ac44 a, aa20 b
           WHERE a.aaz223 = s_aaz223
             AND a.aae140 = s_aae140
             AND a.aae140 = b.aae140
             AND a.aae341 = b.aae341
             AND b.aae342 = '01'
             AND b.aae343 = '01'
             AND rownum = 1;
        EXCEPTION
          WHEN no_data_found THEN
            n_aaa041_dw := 0;
            n_aaa042_dw := 0;
        END;
        BEGIN
          SELECT nvl(a.aaa041, 0), nvl(a.aaa042, 0)
            INTO n_aaa041_gr, n_aaa042_gr
            FROM ac44 a, aa20 b
           WHERE a.aaz223 = s_aaz223
             AND a.aae140 = s_aae140
             AND a.aae140 = b.aae140
             AND a.aae341 = b.aae341
             AND b.aae342 = '02'
             AND b.aae343 = '01'
             AND rownum = 1;
        EXCEPTION
          WHEN no_data_found THEN
            n_aaa041_gr := 0;
            n_aaa042_gr := 0;
        END;
        -- aae181 單位繳費比例 NUMBER(14,2)
        n_aae181 := n_aaa041_dw + n_aaa041_gr - n_aaa042_gr;
        -- aae182 個人繳費比例 NUMBER(14,2)
        n_aae182 := n_aaa042_gr;
        -- aae183 其中單位繳費劃入個人賬戶比例
        n_aae183 := n_aaa042_dw;

        --備注
        IF trunc(n_aae002 / 100) < trunc(n_aae003 / 100) THEN
          s_aae013 := n_aae003 || '補繳';
        END IF;

        --獲取比例調(diào)整補收 20130822    begin  --
        begin
          SELECT a.aaz223
            INTO s_aaz223
            FROM ac43 a
           WHERE a.aae140 = s_aae140
             AND a.aae002 = n_aae002
             AND a.aae100 = pkg_constants.GN_DEF_YES
             AND a.aaz159 = s_aaz159
             AND a.aac001 = s_aac001
             AND a.aaa115 = pkg_constants.AAA115_JFBLTZBS --繳費比例調(diào)整補收
             AND rownum = 1;
          --獲取繳費比例調(diào)整補收 繳費比例
          --獲取繳費比例調(diào)整補收 單位、個人繳費比例
          BEGIN
            SELECT nvl(a.aaa041, 0), nvl(a.aaa042, 0)
              INTO n_aaa041_dw_bs, n_aaa042_dw_bs
              FROM ac44 a, aa20 b
             WHERE a.aaz223 = s_aaz223
               AND a.aae140 = s_aae140
               AND a.aae140 = b.aae140
               AND a.aae341 = b.aae341
               AND b.aae342 = '01'
               AND b.aae343 = '01'
               AND rownum = 1;
          EXCEPTION
            WHEN no_data_found THEN
              n_aaa041_dw_bs := 0;
              n_aaa042_dw_bs := 0;
          END;

          BEGIN
            SELECT nvl(a.aaa041, 0), nvl(a.aaa042, 0)
              INTO n_aaa041_gr_bs, n_aaa042_gr_bs
              FROM ac44 a, aa20 b
             WHERE a.aaz223 = s_aaz223
               AND a.aae140 = s_aae140
               AND a.aae140 = b.aae140
               AND a.aae341 = b.aae341
               AND b.aae342 = '02'
               AND b.aae343 = '01'
               AND rownum = 1;
          EXCEPTION
            WHEN no_data_found THEN
              n_aaa041_gr_bs := 0;
              n_aaa042_gr_bs := 0;
          end;

          -- aae181 單位繳費比例 NUMBER(14,2)
          n_aae181 := n_aae181 + n_aaa041_dw_bs + n_aaa041_gr_bs -
                      n_aaa042_gr_bs;
          -- aae182 個人繳費比例 NUMBER(14,2)
          n_aae182 := n_aae182 + n_aaa042_gr_bs;
          -- aae183 其中單位繳費劃入個人賬戶比例
          n_aae183 := n_aae183 + n_aaa042_dw_bs;

        EXCEPTION
          WHEN no_data_found THEN
            null;
        END;

        --基數(shù)進行匯總  這時只有歷年繳費的當月基數(shù)
        n_aae180 := NVL(n_aae180, 0) + NVL(N_AAE180_YCX, 0);
        n_aic079 := NVL(n_aic079, 0) + NVL(N_AIC079_YCX, 0);
        s_aae300 := '0';

        -- 只有一次性繳費
      ELSIF n_aae180 = 0 AND NVL(N_AAE180_YCX, 0) > 0 THEN
        SELECT a.aab034
          INTO s_aab034
          FROM ac43 a
         WHERE a.aae140 = s_aae140
           AND a.aae002 = n_aae002
           AND a.aae100 = pkg_constants.GN_DEF_YES
           AND a.aae078 = pkg_constants.GN_DEF_YES
           AND a.aaz159 = s_aaz159
           AND a.aac001 = s_aac001
           AND a.aaa115 IN
               (pkg_constants.AAA115_ZDNZFYCXJF, '42', '43', '44', '45') --征地一次性補及其他
           AND rownum = 1;

        -- aae181 單位繳費比例 NUMBER(14,2)
        n_aae181 := 0.2;
        -- aae182 個人繳費比例 NUMBER(14,2)
        n_aae182 := 0.08;
        -- aae183 其中單位繳費劃入個人賬戶比例
        n_aae183 := 0;

        n_aae180 := NVL(n_aae180, 0) + NVL(N_AAE180_YCX, 0);
        n_aic079 := NVL(n_aic079, 0) + NVL(N_AIC079_YCX, 0);
        s_aae300 := '1';

        --如果歷年和一次性繳費都存在,則一次性繳費先生成一條AC07A3,然后再生成走循環(huán)生成歷年的那條AC07A3
      ELSIF n_aae180 > 0 AND NVL(N_AAE180_YCX, 0) > 0 THEN

        SELECT a.aab034
          INTO s_aab034
          FROM ac43 a
         WHERE a.aae140 = s_aae140
           AND a.aae002 = n_aae002
           AND a.aae100 = pkg_constants.GN_DEF_YES
           AND a.aae078 = pkg_constants.GN_DEF_YES
           AND a.aaz159 = s_aaz159
           AND a.aac001 = s_aac001
           AND a.aaa115 IN
               (pkg_constants.AAA115_ZDNZFYCXJF, '42', '43', '44', '45') --征地一次性補及其他
           AND rownum = 1;

        -- aae181 單位繳費比例 NUMBER(14,2)
        n_aae181 := 0.2;
        -- aae182 個人繳費比例 NUMBER(14,2)
        n_aae182 := 0.08;
        -- aae183 其中單位繳費劃入個人賬戶比例
        n_aae183 := 0;

        --獲取行政區(qū)劃代碼,參保地區(qū)名稱
        SELECT a.aab301, a.aab131
          INTO s_aab301, s_aab300
          FROM aa48 a, af01 b, ae10 c
         WHERE a.aab301 = c.aab301
           AND b.aaz198 = c.aaz001
           AND b.aab034 = s_aab034;
        INSERT INTO AC07A3
          (aac001, --個人編號 VARCHAR2(20)
           yac071, --人員轉(zhuǎn)移記錄ID VARCHAR2(16)
           yac072, --
           aab301, --參保地區(qū)行政區(qū)劃 VARCHAR2(16)
           aab300, --參保地區(qū)機構(gòu)名稱 VARCHAR2(200)
           aae001, --年度 NUMBER(4)
           aae002, --費款所屬期 NUMBER(6)
           aae180, --月繳費基數(shù) NUMBER(14,2)
           aic079, --月數(shù)
           aae181, --單位繳費比例 NUMBER(10,4)
           aae182, --個人繳費比例 NUMBER(10,4)
           aae183, --其中單位繳費劃入個人賬戶比例 NUMBER(10,4)
           yae121, --當年記賬金額小計 NUMBER(14,2)
           aic072, --當年記賬金額個人繳費部分 NUMBER(14,2)
           yae122, --當年記賬利息 NUMBER(14,2)
           yae123, --當年記賬利息個人繳費部分 NUMBER(14,2)
           yae124, --至本年末賬戶累計存儲額 NUMBER(14,2)
           yae125, --至本年末賬戶累計存儲額個人繳費部分 NUMBER(14,2)
           yaz341, --轉(zhuǎn)移人員歷年繳費及個人賬戶記賬信息ID VARCHAR2(16)
           aae180_fz, --
           aae300, --一次性躉交標志
           aae013) --備注 VARCHAR2(200)
        VALUES
          (s_aac001, -- aac001 個人編號 VARCHAR2(20)
           prm_yac071, -- yac071 人員轉(zhuǎn)移記錄ID VARCHAR2(16)
           prm_yac072, --
           s_aab301, -- aab301 參保地區(qū)行政區(qū)劃 VARCHAR2(16)
           s_aab300, -- aab300 參保地區(qū)機構(gòu)名稱 VARCHAR2(200)
           trunc(n_aae002 / 100), -- aae001 年度 NUMBER(4)
           n_aae002, -- aae002 費款所屬期 NUMBER(6)
           NVL(N_AAE180_YCX, 0), -- aae180 月繳費基數(shù) NUMBER(14,2)
           NVL(N_AIC079_YCX, 0), -- aic079 月數(shù)
           n_aae181, -- aae181 單位繳費比例 NUMBER(10,4)
           n_aae182, -- aae182 個人繳費比例 NUMBER(10,4)
           n_aae183, -- aae183 其中單位繳費劃入個人賬戶比例 NUMBER(10,4)
           n_yae121, -- yae121 當年記賬金額小計 NUMBER(14,2)
           n_aic072, -- aic072 當年記賬金額個人繳費部分 NUMBER(14,2)
           n_yae122, -- yae122 當年記賬利息 NUMBER(14,2)
           n_yae123, -- yae123 當年記賬利息個人繳費部分 NUMBER(14,2)
           n_yae124, -- yae124 至本年末賬戶累計存儲額 NUMBER(14,2)
           n_yae125, -- yae125 至本年末賬戶累計存儲額個人繳費部分 NUMBER(14,2)
           NULL, -- yaz341 轉(zhuǎn)移人員歷年繳費及個人賬戶記賬信息ID VARCHAR2(16)
           ceil(NVL(N_AAE180_YCX, 0)), --
           '1', --一次性躉交標志
           ''); -- aae013 備注 VARCHAR2(200)

        --一次性繳費的那條AC07A3寫完,現(xiàn)在寫歷年的AC07A3
        n_aae181 := 0; --單位繳費比例 NUMBER(10,4)
        n_aae183 := 0; --其中單位繳費劃入個人賬戶比例 NUMBER(10,4)
        n_aae182 := 0; --個人繳費比例 NUMBER(10,4)
        s_aab300 := '';
        s_aab034 := '';
        s_aae013 := '';

        SELECT a.aaz223, a.aab034, a.aae003--人員征繳明細id 社會保險經(jīng)辦機構(gòu)編碼 對應費款所屬期 
          INTO s_aaz223, s_aab034, n_aae003
          FROM ac43 a
         WHERE a.aae140 = s_aae140
           AND a.aae002 = n_aae002
           AND a.aae100 = pkg_constants.GN_DEF_YES
           AND a.aae078 = pkg_constants.GN_DEF_YES
           AND a.aaz159 = s_aaz159
           AND a.aac001 = s_aac001
           AND a.aaa115 IN (pkg_constants.AAA115_ZCYJ, --正常應繳
                            pkg_constants.AAA115_SJLSSJ, --實繳歷史數(shù)據(jù)
                            pkg_constants.AAA115_SBJJDJYBF, --失業(yè)保險代繳醫(yī)保費
                            pkg_constants.AAA115_BZD, --中斷或延遲年限補收
                            pkg_constants.AAA115_YCXBS, --一次性補收
                            '37',
                            '38')
           AND rownum = 1;
        --獲取繳費比例
        --獲取單位、個人繳費比例
        BEGIN
          SELECT nvl(a.aaa041, 0), nvl(a.aaa042, 0)
            INTO n_aaa041_dw, n_aaa042_dw
            FROM ac44 a, aa20 b
           WHERE a.aaz223 = s_aaz223
             AND a.aae140 = s_aae140
             AND a.aae140 = b.aae140
             AND a.aae341 = b.aae341
             AND b.aae342 = '01'
             AND b.aae343 = '01'
             AND rownum = 1;
        EXCEPTION
          WHEN no_data_found THEN
            n_aaa041_dw := 0;
            n_aaa042_dw := 0;
        END;
        BEGIN
          SELECT nvl(a.aaa041, 0), nvl(a.aaa042, 0)
            INTO n_aaa041_gr, n_aaa042_gr
            FROM ac44 a, aa20 b
           WHERE a.aaz223 = s_aaz223
             AND a.aae140 = s_aae140
             AND a.aae140 = b.aae140
             AND a.aae341 = b.aae341
             AND b.aae342 = '02'
             AND b.aae343 = '01'
             AND rownum = 1;
        EXCEPTION
          WHEN no_data_found THEN
            n_aaa041_gr := 0;
            n_aaa042_gr := 0;
        END;
        -- aae181 單位繳費比例 NUMBER(14,2)
        n_aae181 := n_aaa041_dw + n_aaa041_gr - n_aaa042_gr;
        -- aae182 個人繳費比例 NUMBER(14,2)
        n_aae182 := n_aaa042_gr;
        -- aae183 其中單位繳費劃入個人賬戶比例
        n_aae183 := n_aaa042_dw;

        --備注
        IF trunc(n_aae002 / 100) < trunc(n_aae003 / 100) THEN
          s_aae013 := n_aae003 || '補繳';
        END IF;

        --獲取比例調(diào)整補收 20130822    begin  --
        begin
          SELECT a.aaz223
            INTO s_aaz223
            FROM ac43 a
           WHERE a.aae140 = s_aae140
             AND a.aae002 = n_aae002
             AND a.aae100 = pkg_constants.GN_DEF_YES
             AND a.aaz159 = s_aaz159
             AND a.aac001 = s_aac001
             AND a.aaa115 = pkg_constants.AAA115_JFBLTZBS --繳費比例調(diào)整補收
             AND rownum = 1;
          --獲取繳費比例調(diào)整補收 繳費比例
          --獲取繳費比例調(diào)整補收 單位、個人繳費比例
          BEGIN
            SELECT nvl(a.aaa041, 0), nvl(a.aaa042, 0)
              INTO n_aaa041_dw_bs, n_aaa042_dw_bs
              FROM ac44 a, aa20 b
             WHERE a.aaz223 = s_aaz223
               AND a.aae140 = s_aae140
               AND a.aae140 = b.aae140
               AND a.aae341 = b.aae341
               AND b.aae342 = '01'
               AND b.aae343 = '01'
               AND rownum = 1;
          EXCEPTION
            WHEN no_data_found THEN
              n_aaa041_dw_bs := 0;
              n_aaa042_dw_bs := 0;
          END;

          BEGIN
            SELECT nvl(a.aaa041, 0), nvl(a.aaa042, 0)
              INTO n_aaa041_gr_bs, n_aaa042_gr_bs
              FROM ac44 a, aa20 b
             WHERE a.aaz223 = s_aaz223
               AND a.aae140 = s_aae140
               AND a.aae140 = b.aae140
               AND a.aae341 = b.aae341
               AND b.aae342 = '02'
               AND b.aae343 = '01'
               AND rownum = 1;
          EXCEPTION
            WHEN no_data_found THEN
              n_aaa041_gr_bs := 0;
              n_aaa042_gr_bs := 0;
          end;

          -- aae181 單位繳費比例 NUMBER(14,2)
          n_aae181 := n_aae181 + n_aaa041_dw_bs + n_aaa041_gr_bs -
                      n_aaa042_gr_bs;
          -- aae182 個人繳費比例 NUMBER(14,2)
          n_aae182 := n_aae182 + n_aaa042_gr_bs;
          -- aae183 其中單位繳費劃入個人賬戶比例
          n_aae183 := n_aae183 + n_aaa042_dw_bs;

        EXCEPTION
          WHEN no_data_found THEN
            null;
        END;

        --基數(shù)進行匯總  這時只有歷年繳費的當月基數(shù)
        n_aae180 := NVL(n_aae180, 0);
        n_aic079 := NVL(n_aic079, 0);
        s_aae300 := '0';

      ELSE

        s_aab034 := s_aab034_c;
        n_aae180 := NVL(n_aae180, 0) + NVL(N_AAE180_YCX, 0);
        n_aic079 := NVL(n_aic079, 0) + NVL(N_AIC079_YCX, 0);
        s_aae300 := '0';

      END IF;

      --end----
      --獲取行政區(qū)劃代碼,參保地區(qū)名稱
      SELECT a.aab301, a.aab131
        INTO s_aab301, s_aab300
        FROM aa48 a, af01 b, ae10 c
       WHERE a.aab301 = c.aab301
         AND b.aaz198 = c.aaz001
         AND b.aab034 = s_aab034;
      INSERT INTO AC07A3
        (aac001, --個人編號 VARCHAR2(20)
         yac071, --人員轉(zhuǎn)移記錄ID VARCHAR2(16)
         yac072, --
         aab301, --參保地區(qū)行政區(qū)劃 VARCHAR2(16)
         aab300, --參保地區(qū)機構(gòu)名稱 VARCHAR2(200)
         aae001, --年度 NUMBER(4)
         aae002, --費款所屬期 NUMBER(6)
         aae180, --月繳費基數(shù) NUMBER(14,2)
         aic079, --月數(shù)
         aae181, --單位繳費比例 NUMBER(10,4)
         aae182, --個人繳費比例 NUMBER(10,4)
         aae183, --其中單位繳費劃入個人賬戶比例 NUMBER(10,4)
         yae121, --當年記賬金額小計 NUMBER(14,2)
         aic072, --當年記賬金額個人繳費部分 NUMBER(14,2)
         yae122, --當年記賬利息 NUMBER(14,2)
         yae123, --當年記賬利息個人繳費部分 NUMBER(14,2)
         yae124, --至本年末賬戶累計存儲額 NUMBER(14,2)
         yae125, --至本年末賬戶累計存儲額個人繳費部分 NUMBER(14,2)
         yaz341, --轉(zhuǎn)移人員歷年繳費及個人賬戶記賬信息ID VARCHAR2(16)
         aae180_fz, --
         aae300, --一次性躉交標志
         aae013) --備注 VARCHAR2(200)
      VALUES
        (s_aac001, -- aac001 個人編號 VARCHAR2(20)
         prm_yac071, -- yac071 人員轉(zhuǎn)移記錄ID VARCHAR2(16)
         prm_yac072, --
         s_aab301, -- aab301 參保地區(qū)行政區(qū)劃 VARCHAR2(16)
         s_aab300, -- aab300 參保地區(qū)機構(gòu)名稱 VARCHAR2(200)
         trunc(n_aae002 / 100), -- aae001 年度 NUMBER(4)
         n_aae002, -- aae002 費款所屬期 NUMBER(6)
         n_aae180, -- aae180 月繳費基數(shù) NUMBER(14,2)
         n_aic079, -- aic079 月數(shù)
         n_aae181, -- aae181 單位繳費比例 NUMBER(10,4)
         n_aae182, -- aae182 個人繳費比例 NUMBER(10,4)
         n_aae183, -- aae183 其中單位繳費劃入個人賬戶比例 NUMBER(10,4)
         n_yae121, -- yae121 當年記賬金額小計 NUMBER(14,2)
         n_aic072, -- aic072 當年記賬金額個人繳費部分 NUMBER(14,2)
         n_yae122, -- yae122 當年記賬利息 NUMBER(14,2)
         n_yae123, -- yae123 當年記賬利息個人繳費部分 NUMBER(14,2)
         n_yae124, -- yae124 至本年末賬戶累計存儲額 NUMBER(14,2)
         n_yae125, -- yae125 至本年末賬戶累計存儲額個人繳費部分 NUMBER(14,2)
         NULL, -- yaz341 轉(zhuǎn)移人員歷年繳費及個人賬戶記賬信息ID VARCHAR2(16)
         ceil(n_aae180), --
         s_aae300, --一次性躉交標志
         ''); -- aae013 備注 VARCHAR2(200)
      n_aae002 := to_number(to_char(add_months(to_date(to_char(n_aae002),
                                                       'yyyymm'),
                                               1),
                                    'yyyymm'));
    END LOOP;
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容