二〇〇八年九月
1前言 1
2实现流程图 1
3数据交换的内容 1
4数据交换机制及复制频率 2
5数据交换的技术实现 2
5.1采用的数据库工具和复制方法 2
5.2省地税局向各市社保局提供的信息表 3
5.2.1个人基本信息(T_SFZJ_GRJBXX) 3
5.2.2关联缴费登记信息(T_SFZJ_GLJFDJXX) 4
5.2.3单位缴费登记信息 T_SFZJ_DWJFDJXX 5
5.2.4单位应征明细(T_SFZJ_DWYZMX) 6
5.2.5个人应征明细(T_SFZJ_GRYZMX) 8
5.2.6单位缴款明细(T_SFZJ_DWJKMX) 9
1前言
目前广东省地方税务局采用统一的大集中系统来征收社保费,而各市社保局还没有统一的应用系统。为保证地税和社保的数据能实时准确地交换,特编写地税与社保交换数据技术实现方案。
2实现流程图
3数据交换的内容
数据交换的内容主要包括:单位和个人的登记、应征、缴款信息。
登记信息 表1 个人基本信息(T_SFZJ_GRJBXX)
表2 关联缴费登记信息(T_SFZJ_GLJFDJXX)
表3 单位缴费登记信息(T_SFZJ_DWJFDJXX)
应征信息 表4 单位应征明细(T_SFZJ_DWYZMX)
表5 个人应征明细(T_SFZJ_GRYZMX)
缴款信息 表6 单位缴款明细(T_SFZJ_DWJKMX)
4数据交换机制及复制频率
省地税局的大集中核心生产数据库,通过省地税局的社保中间库与各市社保局进行数据交互。大集中核心生产库产生的登记、应征、缴款数据每天都会通过定时任务复制到社保中间库供社保局读取;社保局也可以将相关的登记、应征信息放入社保中间库,每天由定时任务复制到核心生产库后,由地税局进行征收。复制频率为:
| 复制内容 | 复制方向 | 频率 |
| 个人基本信息 | 核心生产库 社保中间库 | 每天两次 |
| 关联缴费登记信息 | 社保中间库 核心生产库 | 每小时一次 |
| 个人基本信息、单位个人应征明细 | 社保中间库 核心生产库 | 每天两次 |
| 单位个人应征缴款信息 | 核心生产库 社保中间库 | 每天两次 |
| 单位缴费登记信息 | 核心生产库 社保中间库 | 每天两次 |
5.1采用的数据库工具和复制方法
省地税局的核心数据库和社保中间库都采用ORACLE 9i 进行构建,通过编写存储过程,采用JOB的形式将数据由核心生产库复制到社保中间库。定时任务定期执行对核心表的全表扫描,只是将上次传送以来,有变动的记录传递到中间库。
5.2省地税局向各市社保局提供的信息表
5.2.1个人基本信息(T_SFZJ_GRJBXX)
表作用:此表是双向流水表,用于传送由地税方发起的参保人员明细的新增、修改或删节的数据给社保局。同时社保局也可将个人基本信息放在该表中传入大集中系统。
表结构:
| 字段中文名 | 字段英文名 | 数据类型 | NOT NULL | 说明 |
| 序号 | XH | NUMBER(10) | TRUE | 通过序列SEQ_SFZJ_GRJBXX_XH产生 |
| 单位社保号 | DWSBH | VARCHAR2(18) | ||
| 个人社保号 | SBBH | VARCHAR2(20) | TRUE | |
| 姓名 | XM | VARCHAR2(100) | ||
| 身份证 | SFZMHM | VARCHAR2(30) | ||
| 性别 | XB | CHAR(1) | ||
| 出生日期 | CS_RQ | DATE | ||
| 通讯地址 | TX_DZ | VARCHAR2(200) | ||
| 邮政编码 | YZBM | CHAR(6) | ||
| 联系电话 | LX_DH | VARCHAR2(20) | ||
| 用工形式 | YGXS_DM | CHAR(2) | 对应代码表t_dm_sf_ygxs | |
| 人员类别 | RYLB_DM | CHAR(2) | 对应代码表t_dm_sf_rylb | |
| 人员状态 | RYZT | CHAR(1) | 对应代码表T_dm_sf_ryzt | |
| 户籍类型 | HJLX_DM | CHAR(2) | 对应代码表t_dm_sf_hjlx | |
| 有效起始日期 | YX_QSRQ | DATE | ||
| 有效终止日期 | YX_ZZRQ | DATE | ||
| 变动类型 | BDLX_DM | VARCHAR2(10) | 新增字段,取值I,U,D | |
| 单位纳税人编码 | NSRBM | VARCHAR2(13) | ||
| 社保管理机构代码 | SBGLJG_DM | VARCHAR2(11) | TRUE | 对应代码表t_dm_sf_sbgljg |
| 导入时间 | DR_SJ | DATE | TRUE | |
| 读取时间 | DQ_SJ | DATE | ||
| 来源标记 | YZLY_BJ | CHAR(1) | TRUE | 来自地税的数据为:D; 社保的为 T |
| 错误信息类别代码 | CWXXLB_DM | CHAR(1) | TRUE | 这个字段的作用是反馈社保传入地税情况的标记。'F' 表示非身份证(即号码的位数非15or18);'C' 表示地税数据库存在的个人社保号和社保局传入的社保号不相等;'M' 表示地税有多条数据与之对应;null表示正确 |
1.此表只做 INSERT 操作,通过ORACLE序列产生主键“序号”。
2.社保写数据方法:将社保局的个人基本资料直接传入这个表即可。
需要注意的是:主键务必使用 “序列”产生,否则会导致程序失败;
“来源标记”务必使用’T’,否则程序不会将数据迁移到SXDB;
“读取时间”,和“错误信息类别代码”务必不能填写;
“通讯地址”,“联系电话”,“纳税人编码”这三个字段可以不填写,其他的字段务必填写,不可缺少。
3.社保读数据方法:将“来源标记”为‘D’,“读取时间”为空的记录读入社保的数据库。
需要注意的是:社保局可以根据字段 BDLX_DM 字段处理社保数据库中的数据,I表示增员个人,D表示减员个人,U表示个人登记信息有变化。
5.2.2关联缴费登记信息(T_SFZJ_GLJFDJXX)
表作用:此表是单向流水表,用于传送社保局登记缴费人的信息给地税方。对于已作了税务登记、未作社保登记的单位,当它们在社保局作登记后,社保方将它们的信息传入到中间库该表,传入时“纳税人编码”字段为空;地税方核心端运行定时JOB脚本,从中间库读取该表数据后,存入到核心库的对应表(T_SF_GLJFDJXX)中;有其他业务模块负责把该表信息通过“单位社保号”和“社保管理机构代码”与登记表(机构纳税人表)关联,取得“纳税人编码”信息,并最终存入核心库的“单位缴费登记信息”表中。
表结构:
| 字段中文名称 | 字段英文名称 | 数据类型 | Not NULL | 说明 |
| 序号 | XH | NUMBER(10) | TRUE | 通过序列SEQ_SFZJ_GLJFDJXX_XH产生 |
| 缴费人名称 | JFR_MC | VARCHAR2(100) | ||
| 缴费人地址 | JFR_DZ | VARCHAR2(600) | ||
| 组织机构代码 | ZZJG_DM | VARCHAR2(20) | ||
| 纳税人编码 | NSRBM | VARCHAR2(20) | ||
| 单位社保号 | DWSBH | VARCHAR2(18) | ||
| 所属行业 | HY_DM | VARCHAR2(4) | ||
| 缴费单位类型代码 | JFDWLX_DM | CHAR(3) | 对应代码表t_dm_sf_jfdwlx | |
| 社保管理机构代码 | SBGLJG_DM | VARCHAR2(11) | 对应代码表t_dm_sf_sbgljg | |
| 社保级次代码 | SBJC_DM | CHAR(2) | TRUE | 对应代码表t_dm_sf_sbjc |
| 社保登记状态 | SBDJZT_DM | CHAR(2) | TRUE | 对应代码表t_dm_sf_sbdjzt |
| 联系人 | LXR_MC | VARCHAR2(30) | ||
| 联系电话 | LX_DH | VARCHAR2(30) | ||
| 法人身份证号码 | FRSFZMHM | VARCHAR2(30) | ||
| 登记日期 | DJ_RQ | DATE | ||
| 登记机关代码 | DJJG_DM | VARCHAR2(11) | 对应代码表t_dm_gy_swjg | |
| 登记人员代码 | DJRY_DM | VARCHAR2(11) | 对应代码表t_dm_gy_swry | |
| 导入时间 | DR_SJ | DATE | TRUE | 导入时间是社保局导入的时间,由社保局写入。 |
| 读取时间 | DQ_SJ | DATE | 读取时间是地税局取得数据的时间,由地税局写入。 |
1.对表中记录,只插入、不修改、不删除;插入时,通过ORACLE序列产生主键“序号”。
2.社保方写入规则:社保方写入中间库该表时,应将新插记录的 “导入时间”置为当前时间,并置“读取时间”为空
5.2.3单位缴费登记信息 T_SFZJ_DWJFDJXX
表作用:此表为单向流水表,由地税方向社保方传送单位缴费登记信息。
表结构:
| 字段中文名称 | 字段英文名称 | 数据类型 | Not NULL | 说明 | |
| 序号 | XH | NUMBER(10) | N | 通过序列SEQ_SFZJ_DWJFDJXX_XH产生 | |
| 纳税人内部码 | NSRNBM | NUMBER(10) | N | ||
| 单位社保号 | DWSBH | VARCHAR2(18) | N | ||
| 缴费单位内部码 | JFDWNBM | NUMBER(10) | N | ||
| 行业分类代码 | HYFL_DM | CHAR(1) | Y | ||
| 缴费单位类型代码 | JFDWLX_DM | CHAR(3) | N | ||
| 社保级次代码 | SBJC_DM | CHAR(2) | N | ||
| 社保管理机构代码 | SBGLJG_DM | VARCHAR2(11) | N | ||
| 税务管理机构代码,一般只记到市一级 | SWGLJG_DM | VARCHAR2(11) | N | ||
| 社保登记状态 | SBDJZT_DM | CHAR(2) | N | ||
| 登记日期 | DJ_RQ | DATE | Y | ||
| 登记机关代码 | DJJG_DM | VARCHAR2(11) | Y | ||
| 重点费源标志 | ZDFY_BJ | CHAR(1) | Y | ||
| 纳税人编码 | NSRBM | VARCHAR2(20) | Y | ||
| 缴费人名称 | JFR_MC | VARCHAR2(200) | N | ||
| 缴费人地址 | JFR_DZ | VARCHAR2(200) | Y | ||
| 法定代表人姓名 | FDDBR_MC | VARCHAR2(50) | Y | ||
| 组织机构代码 | ZZJG_DM | VARCHAR2(20) | Y | ||
| 法人手机号码 | FRSJHM | VARCHAR2(20) | Y | ||
| 联系电话 | LX_DH | VARCHAR2(30) | Y | ||
| 变动类型 | BDLX_DM | VARCHAR2(10) | N | ||
| 导入时间 | DR_SJ | DATE | N | ||
| 读取时间 | DQ_SJ | DATE | Y | ||
1.通过ORACLE序列产生主键“序号”。
2.社保读数据方法:每次读取读取时间为空的数据。
5.2.4单位应征明细(T_SFZJ_DWYZMX)
表作用:此表为双向流水表,用于传送单位应征数据。当社保局产生应征数据后,写入中间库该表,由地税局读取;当缴费单位在地税局按月进行社保费申报产生应征之后,也写入该表,供社保局读取。
表结构:
| 字段中文名 | 字段英文名 | 字段类型 | NOT NULL | 说明 |
| 应征序号 | YZ_XH | NUMBER(16,0) | TRUE | 通过序列SEQ_SFZJ_DWYZMX_YZ_XH产生 |
| 单位社保号 | DWSBH | VARCHAR2(18) | ||
| 纳税人编码 | NSRBM | VARCHAR2(13) | ||
| 征收品目代码 | ZSPM_DM | VARCHAR2(6) | 对应代码表t_dm_gy_zspm | |
| 税款属性1 | SKSX1_DM | CHAR(2) | 对应代码表t_dm_gy_sksx1 | |
| 税款属性2 | SKSX2_DM | CHAR(2) | 对应代码表t_dm_gy_sksx2 | |
| 社保属性 | SBSX_DM | CHAR(2) | 对应代码表t_dm_sf_sfsx | |
| 税费所属期起 | SFSSQ_QSRQ | DATE | ||
| 税费所属期止 | SFSSQ_ZZRQ | DATE | ||
| 缴费期限 | JK_QX | DATE | ||
| 征收方式 | XSFS_DM | CHAR(2) | ||
| 凭证序号 | PZ_XH | NUMBER(16,0) | 当由社保导入时凭证序号PZ_XH、应征明细序号YZMX_XH为空,当地税导入核心库之后再回写上述字段。 | |
| 应征明细序号 | YZMX_XH | NUMBER(6) | ||
| 应征来源标志 | YZLY_BJ | CHAR(1) | TRUE | S,T— 社保,D—地税 |
| 社保管理机关码 | SBGLJG_DM | VARCHAR2(11) | 对应代码表t_dm_sf_sbgljg | |
| 参保人数 | CBRS | NUMBER(9,0) | 由社保局导入的数据,但核心库T_ZS_YZMX表没有此对应字段,故暂不处理。如果地税提供,要参照T_SF_FXZHZSBB.sbRS_sl提供。参保人数地税与社保两方都需要提供; | |
| 计费工资总额 | JFGZZE | NUMBER(15,2) | ||
| 应缴金额 | YJJE | NUMBER(15,2) | ||
| 托收单编码 | TSDBM | NUMBER(15,0) | ||
| 一次性缴费类型 | YCXJFLX_DM | CHAR(1) | 用于表明一次性缴费类型。当社保局提供应征数据时,由社保局明确该类型数据;当地税局提供应征数据时,地税局不提供该类型数据。 1—一次性补缴 2—一次性补缴医保费缴费 3—一次性预缴 4—单位一次性缴费 7—离休医疗单位应收 | |
| 缴费人员列表 | JFRYLB | VARCHAR2(200) | ||
| 调帐类型代码 | TZLX_DM | CHAR(2) | ||
| 变动类型 | BDLX_DM | VARCHAR2(10) | 取值方法见后面 | |
| 导入时间 | DR_SJ | DATE | TRUE | |
| 读取时间 | DQ_SJ | DATE | ||
| 判断标记 | PD_BJ | NUMBER(1) | 这个字段的作用是为了屏蔽重复迁移缴款数据,无需提供给社保局,社保局也无需提供这个字段,这个字段只是SXDB和SBZJDB交换数据时使用,地市和社保局完全可以不关心这个字段 | |
| 错误信息类别代码 | CWXXLB_DM | CHAR(1) | P 表示无法获取公共信息; M 表示返回了多于一行的公共信息; T 表示无法获取税率 |
1.对表中记录,只插入、不删除。
2. 社保写数据方法: 非空字段和托收单是务必填写,PZ_XH,YZMX_XH务必不要填写。其他的字段可以根据需要填写。
需要注意的是:插入的数据的主键必须通过序列产生,否则会造成省局的复制程序出错。
字段YZLY_BJ的填写规则:
S 代表只有汇总数据,即在SXDB中,只有T_ZS_YZMX的数据,而没有明细表T_SF_GRYZMX的数据。需要说明的是,如果插入的数据没有做关联登记,这些应征数据会保留在中间库,等到相关的单位基本信息在SXDB产生之后,程序会自动迁移这些应征数据(当然,基本信息要正确,如果发现单位信息无法传入SXDB,可以查看CWXXLB_DM返回异常处理结果)
T 代表既有汇总数据,又有明细数据,如果社保插入这个标记,必须保证做了以下操作:首先将个人的基本信息插入到中间库的《个人基本信息》(每次都必须插入这个数据,无论我们的数据库中是否存在这个人的基本资料)中,然后必须保证该人所在的单位的基本信息是否存在SXDB,跟着插入这个表的信息,最后将个人的应征数据插入到T_SFZJ_GRYZMX表中。插入其他的字符程序将不处理这条数据
字段BDLX_DM的填写规则:
A 表示新增,当P_SFDT_INNER_ZST4_SUB读取到这个标记的时候,会把应征数据插入到SXDB的表:T_SB_YZPZ,T_ZS_YZMX;这里不会插入申报表,因为这些数据不是在地税申报的,并且也没有那么多的信息支持插入到申报表。
C 表示作废,这里可以作废由社保传入的数据,当社保局发现传入的数据有误的话,可以进行如下操作作废SXDB中的数据:把原来的数据的BDLX_DM更新为 ’C’,同时把读取时间更新为空,程序会自动将SXDB中相关的未缴款的数据作废。插入其他的字符程序将不处理这条数据,注意,这里不支持更新操作。
3.社保读数据方法:
将“来源标记”为‘D’,“读取时间”为空的记录读入社保的数据库。
根据 BDLX_DM 并结合社保的应征数据,更具实际情况来处理社保库中的数据。
5.2.5个人应征明细(T_SFZJ_GRYZMX)
表作用:此表为双向流水表,用于地税方和社保方互传个人应征明细。
表结构:
| 字段中文名称 | 字段英文名 | 数据类型 | Not NULL | 说明 | ||
| 序号 | XH | NUMBER(16,0) | TRUE | 通过序列SEQ_SFZJ_GRYZMX_XH产生 | ||
| 应征序号 | NUMBER(16,0) | TRUE | 此表应征序号YZ_XH是 表单位应征情况表YZ_XH的外键 | |||
| 个人社保号 | GRSBH | VARCHAR2(18) | ||||
| 单位社保号 | DWSBH | VARCHAR2(18) | ||||
| 社保属性代码 | SFSX_DM | CHAR(2) | 对应代码表t_dm_sf_sfsx | |||
| 征收品目代码 | ZSPM_DM | VARCHAR2(6) | 对应代码表t_dm_gy_zspm | |||
| 税费所属期起 | SFSSQ_QSRQ | DATE | 通过应征序号到单位应征中去找 | |||
| 税费所属期止 | SFSSQ_ZZRQ | DATE | 同上; | |||
| 人员类别 | RYLB_DM | CHAR(2) | 通过本表的个人社保号、社保管理机关码,在核心“个人基本信息表“中找“纳税个人内部识别码”,再到“用工情况表”中找到“人员类别”和“人员状态”; | |||
| 人员状态 | RYZT | CHAR(1) | 同上 | |||
| 计费依据 | JF_YJ | NUMBER(18,2) | ||||
| 费率 | FL | NUMBER(16,6) | ||||
| 应缴费金额 | YJFE_JE | NUMBER(18,2) | ||||
| 凭证序号 | PZXH | NUMBER(16,0) | ||||
| 应征明细序号 | YZMX_XH | NUMBER(6) | ||||
| 社保管理机关码 | SBGLJG_DM | VARCHAR2(11) | 对应代码表t_dm_sf_sbgljg | |||
| 应征来源标志 | YZLY_BJ | CHAR(1) | TRUE | |||
| 入库时间 | RK_SJ | DATE | ||||
| 导入时间 | DR_SJ | DATE | TRUE | |||
| 应征读取时间 | YZDQ_SJ | DATE | ||||
| 入库读取时间 | RKDQ_SJ | DATE | 只用于从地税到社保方向 | |||
| 变动类型代码 | BDLX_DM | VARCHAR2(10) | A表示新增,YC表示应征作废,JC表示交款作废 | |||
1.通过ORACLE序列产生主键“序号”。
2.社保写数据方法:按含义填写相关字段,注意的是,应征来源标记请务必填写 T,程序不处理其它标记
3.社保读数据方法:可以参照单位应征数据读取;
5.2.6单位缴款明细(T_SFZJ_DWJKMX)
表作用:此表为单项流水表,地税方在社保费入库后,通过此表将入库情况传送给社保方。
表结构:
| 字段中文名称 | 字段英文名 | 数据类型 | Not Null | 说明 |
| 缴费序号 | JF_XH | NUMBER(16,0) | TRUE | 通过序列SEQ_SFZJ_DWJKMX_JF_XH产生 |
| 社保管理机构 | SBGLJG_DM | VARCHAR2(11) | 对应代码表t_dm_sf_sbgljg | |
| 应征序号 | YZ_XH | NUMBER(16,0) | TRUE | 应征序号YZ_XH 是表单位应征情况表YZ_XH 的外键 |
| 实缴金额 | SJ_JE | NUMBER(15,2) | ||
| 入库时间 | RK_SJ | DATE | TRUE | |
| 导入时间 | DR_SJ | DATE | TRUE | |
| 读取时间 | DQ_SJ | DATE |
1.通过ORACLE序列产生主键“序号”。
2.社保读数据方法:关联应征明细取数,同样需要参照以上的操作方法。下载本文