过程及描述
过程 | 描述 |
---|---|
** 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;