人员转移(PKG_PA_TRANSFER)

过程及描述

过程 描述
** p_Template **
p_grzc_save_detail 个人转出详细信息

过程实现逻辑及代码

** p_grzc_save_detail **

  • 输入参数
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); --一次性缴费月数
    n_aae180_ycx   NUMBER(6); --一次性缴费基数
    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); --参保地区行政区划
    s_aab300       VARCHAR2(200); -- aab300 参保地区机构名称 VARCHAR2(200)
    n_aae180       NUMBER(14, 2); --月缴费基数 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); --转移人员历年缴费及个人账户记账信息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); --单位缴费比例(比例调整补收)
    n_aaa042_dw_bs NUMBER(10, 4); --单位缴费划账比例(比例调整补收)
    n_aaa041_gr_bs NUMBER(10, 4); --个人缴费比例(比例调整补收)
    n_aaa042_gr_bs NUMBER(10, 4); --个人缴费划账比例(比例调整补收)
    s_aae300       VARCHAR2(1); --一次性趸交标志
    n_aae030_ycx   NUMBER(6);
  • 初始化变量
BEGIN
 prm_AppCode  := PKG_Constants.GN_DEF_OK;
    prm_ErrorMsg := '';
  • 删除ac07a3人员历年缴费信息及个人账户记账信息中该人员转移ID,转移明细ID对应的条目
DELETE ac07a3
     WHERE yac071 = prm_yac071
       AND yac072 = prm_yac072;
  • 查询AC07A1人员转移明细表中的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--人员转移记录id 
       AND a.yac072 = prm_yac072;--人员转移明细id ;
  • 查询AC06人员转移记录中个人编码aac001、人员转移记录ID yac071对应的aab034社会保险经办机构编码赋值到变量s_aab034_
SELECT aab034--社会保险经办机构编码 
      INTO s_aab034_c
      FROM ac06
     WHERE aac001 = s_aac001
       AND yac071 = prm_yac071;
  • 调用过程pkg_pa_conmmon.p_getEmployeeJfxx获取指定期间内,某人某险种的累积实缴月数,累积实缴缴费基数(不包含任何一次性缴费),并判断是否执行成功
 pkg_pa_common.p_getEmployeeJfxx( prm_aac001    => s_aac001, --个人编号
                                    prm_aaz159    => s_aaz159, --人员参保关系ID
                                    prm_aae140    => s_aae140, --险种编号
                                    prm_aab001    => NULL, --单位编号(允许为空)
                                    prm_aab034    => NULL, --经办机构(允许为空)
                                    prm_aae002_ks => NULL, --开始期号(允许为空)
                                    prm_aae002_jz => NULL, --截止期号(允许为空)
                                    prm_aae041    => n_aae030, --最小做账期号
                                    prm_aae042    => n_aae031_t, --最大做账期号
                                    prm_appcode   => prm_appcode, --执行代码
                                    prm_ErrorMsg  => prm_ErrorMsg); --执行失败信息
    IF prm_AppCode != PKG_Constants.gn_def_OK THEN
      RETURN;
    END IF;
  • 查询ac01社会保险参保人员中aac001、aac146首次参工用工形式为原固定职工条目的个数赋值到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;
  • 本地不存在历年记录的话也检查是否有一次性记录,有一次性记录的话也得参与循环
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;
  • 判断一次性缴费和非一次性缴费在本地是否有数据,都没有则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小于等于系统当前时间时,循环loop
WHILE n_aae002 <= n_aae031 LOOP
      --n_aae031 取得是转移日期,即系统当月
      n_aae180     := 0; --月缴费基数 NUMBER(14,2)
      n_aae181     := 0; --单位缴费比例 NUMBER(10,4)
      n_aae183     := 0; --其中单位缴费划入个人账户比例 NUMBER(10,4)
      n_aae182     := 0; --个人缴费比例 NUMBER(10,4)
      n_aic079     := 0; --月数
      s_aab300     := '';
      s_aab034     := '';
      s_aab301     := '';
      s_aae013     := '';
      N_AIC079_YCX := 0;
      N_AAE180_YCX := 0;
      s_aae300     := '';
      --获取本地非一次性缴费月数的  缴费基数 和 月数
      pkg_pa_common.p_getEmployeeJfxx(prm_aac001    => s_aac001, --个人编号
                                      prm_aaz159    => s_aaz159, --人员参保关系ID
                                      prm_aae140    => s_aae140, --险种编号
                                      prm_aab001    => NULL, --单位编号(允许为空)
                                      prm_aab034    => NULL, --经办机构(允许为空)
                                      prm_aae002_ks => n_aae002, --开始期号(允许为空)
                                      prm_aae002_jz => n_aae002, --截止期号(允许为空)
                                      prm_aae202_sj => n_aic079, --实缴月数
                                      prm_aae180_sj => n_aae180, --实缴基数
                                      prm_appcode   => prm_appcode, --执行代码
                                      prm_ErrorMsg  => prm_ErrorMsg); --执行失败信息
      IF prm_appcode != pkg_constants.GN_DEF_OK THEN
        RETURN;
      END IF;

      --获取本地一次性缴费月数的 缴费基数 和 月数
      BEGIN
        SELECT SUM(AAE202), SUM(NVL(AAE180, 0))--累计缴费月数增加额 人员缴费基数 
          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, --实缴历史数据
                              pkg_constants.AAA115_SBJJDJYBF, --失业保险代缴医保费
                              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;

        --获取比例调整补收 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 --缴费比例调整补收
             AND rownum = 1;
          --获取缴费比例调整补收 缴费比例
          --获取缴费比例调整补收 单位、个人缴费比例
          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;

        --基数进行汇总  这时只有历年缴费的当月基数
        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,然后再生成走循环生成历年的那条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;

        --获取行政区划代码,参保地区名称
        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, --人员转移记录ID VARCHAR2(16)
           yac072, --
           aab301, --参保地区行政区划 VARCHAR2(16)
           aab300, --参保地区机构名称 VARCHAR2(200)
           aae001, --年度 NUMBER(4)
           aae002, --费款所属期 NUMBER(6)
           aae180, --月缴费基数 NUMBER(14,2)
           aic079, --月数
           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, --转移人员历年缴费及个人账户记账信息ID VARCHAR2(16)
           aae180_fz, --
           aae300, --一次性趸交标志
           aae013) --备注 VARCHAR2(200)
        VALUES
          (s_aac001, -- aac001 个人编号 VARCHAR2(20)
           prm_yac071, -- yac071 人员转移记录ID VARCHAR2(16)
           prm_yac072, --
           s_aab301, -- aab301 参保地区行政区划 VARCHAR2(16)
           s_aab300, -- aab300 参保地区机构名称 VARCHAR2(200)
           trunc(n_aae002 / 100), -- aae001 年度 NUMBER(4)
           n_aae002, -- aae002 费款所属期 NUMBER(6)
           NVL(N_AAE180_YCX, 0), -- aae180 月缴费基数 NUMBER(14,2)
           NVL(N_AIC079_YCX, 0), -- aic079 月数
           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 转移人员历年缴费及个人账户记账信息ID VARCHAR2(16)
           ceil(NVL(N_AAE180_YCX, 0)), --
           '1', --一次性趸交标志
           ''); -- aae013 备注 VARCHAR2(200)

        --一次性缴费的那条AC07A3写完,现在写历年的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 社会保险经办机构编码 对应费款所属期 
          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, --实缴历史数据
                            pkg_constants.AAA115_SBJJDJYBF, --失业保险代缴医保费
                            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;

        --获取比例调整补收 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 --缴费比例调整补收
             AND rownum = 1;
          --获取缴费比例调整补收 缴费比例
          --获取缴费比例调整补收 单位、个人缴费比例
          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;

        --基数进行汇总  这时只有历年缴费的当月基数
        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----
      --获取行政区划代码,参保地区名称
      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, --人员转移记录ID VARCHAR2(16)
         yac072, --
         aab301, --参保地区行政区划 VARCHAR2(16)
         aab300, --参保地区机构名称 VARCHAR2(200)
         aae001, --年度 NUMBER(4)
         aae002, --费款所属期 NUMBER(6)
         aae180, --月缴费基数 NUMBER(14,2)
         aic079, --月数
         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, --转移人员历年缴费及个人账户记账信息ID VARCHAR2(16)
         aae180_fz, --
         aae300, --一次性趸交标志
         aae013) --备注 VARCHAR2(200)
      VALUES
        (s_aac001, -- aac001 个人编号 VARCHAR2(20)
         prm_yac071, -- yac071 人员转移记录ID VARCHAR2(16)
         prm_yac072, --
         s_aab301, -- aab301 参保地区行政区划 VARCHAR2(16)
         s_aab300, -- aab300 参保地区机构名称 VARCHAR2(200)
         trunc(n_aae002 / 100), -- aae001 年度 NUMBER(4)
         n_aae002, -- aae002 费款所属期 NUMBER(6)
         n_aae180, -- aae180 月缴费基数 NUMBER(14,2)
         n_aic079, -- aic079 月数
         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 转移人员历年缴费及个人账户记账信息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;

你可能感兴趣的:(人员转移(PKG_PA_TRANSFER))