大总账凭证导出至核心
2013-12-06 17:42
381 查看
通过此程序将大总帐凭证数据抽出,按照凭证明细的形式传送至核心系统。
cux_gl_core_details
cux_gl_core_headers
cux_gl_core_summary
进行校验,判断是否是在在日结、是否已经日结。然后会依次创建批次、创建头、创建明细、汇总、生成传输明细。
1、开始:调用请求程序传入参数时间、请求类型
2、是否是日间:判断请求类型。日间的凭证来源为手工、自动和电子表格
3、日间验证(A):如果请求类型是日间,就调用日间请求校验程序
3.1、是否正在日结:判断是否正在日结或日结已完成, 查询cux_dc_system_status表判断open_flag = 'N'的条数
3.4、是否在日期指针下:查询cux_gl_daily_pointer的日期指针
5、传输准备:调用 cux_public_interface_pkg.create_upload_schedule
程序
6、创建批次:生成一个当前传输的批次,默认传输状态为P(待传输)
7、更新传输头表:
INSERT INTO cux_gl_core_headers ch
(batch_id, je_header_id, doc_sequence_value)
SELECT l_batch_id, gjh.je_header_id, gjh.doc_sequence_value
FROM gl_je_headers gjh
WHERE gjh.period_name = p_period_name
AND gjh.status = 'P'
AND gjh.ledger_id = g_ledger_id
AND NOT EXISTS
(SELECT 1 FROM cux_gl_core_headers cgh WHERE gjh.je_header_id = cgh.je_header_id)
AND gjh.created_by <> l_xn_user_id -- 1.来源为核心的并且createby是指定虚拟柜员的数据不导入
AND (p_transfer_type = 'N' OR
(p_transfer_type = 'D' AND gjh.je_source IN ('Manual', 'AutoCopy', 'Spreadsheet'))) --2.日间和晚上跑批的数据区分
;
8、根据批次、传输头表生成传输凭证明细:
Select *
FROM gl_je_lines gjl, gl_code_combinations gcc, gl_je_headers gh
WHERE gjl.code_combination_id = gcc.code_combination_id
AND gjl.je_header_id = gh.je_header_id
AND gh.status = 'P' --已过帐
AND gjl.je_header_id IN
(SELECT gch.je_header_id FROM cux_gl_core_headers gch WHERE gch.batch_id = l_batch_id)
9、验证科目所对应的业务代号、账户序号是否正确:校验科目所对应的业务代号是否存在,
校验业务代号对应的账户序号是否存在
11、删除错误数据所对应的传输明细表和传输头表
12、生出传输和汇总表:SELECT *
FROM cux_gl_core_summary
WHERE batch_id = p_batch_id
AND amount > 0
ORDER BY voucher_id, voucher_num
1)传票组号:在同一个批量文件中按照机构汇成汇总凭证,不同机构的凭证区分为不同传票,自动从1开始流水。
2)组内序号:在同一组传票下,自动从1开始流水,同一传票下按照业务代号升序排列,同一业务代号按照账户序号升序排列,同一账户序号下按照借贷标志升序排列
3)业务代号:依据科目取值自客户化form“核心系统业务代号维护”
4)账户序号:依据业务代号取自客户化form“核心系统内部账户序号列表”
--创建一个批次
SELECT cux_gl_core_batches_s.nextval INTO l_batch_id FROM dual;
x_batch_id := l_batch_id;
INSERT INTO cux_gl_core_batches cb
(cb.batch_id,
cb.period_name,
cb.last_update_date,
cb.last_updated_by,
cb.creation_date,
cb.created_by,
cb.last_update_login,
cb.gl_date,
cb.process_status)
VALUES
(l_batch_id, p_period_name,SYSDATE, g_user_id, SYSDATE, g_user_id, g_login_id, SYSDATE, 'P');
更新头
--将数据插入header
INSERT INTO cux_gl_core_headers ch
(batch_id, je_header_id,external_reference)
SELECT l_batch_id,gjh.je_header_id, gjh.external_reference
FROM gl_je_headers gjh
WHERE gjh.period_name =p_period_name
AND gjh.status = 'P'
AND gjh.ledger_id =g_ledger_id
AND NOT EXISTS
(SELECT 1 FROMcux_gl_core_headers cgh WHERE gjh.je_header_id = cgh.je_header_id)
AND gjh.created_by<> l_xn_user_id --1.来源为核心的并且createby是指定虚拟柜员的数据不导入
AND (p_transfer_type ='N' OR (p_transfer_type = 'D' AND
gjh.je_source IN ('Manual','Manual (Copied)', 'Spreadsheet'))) --2.日间和晚上跑批的数据区分
更新传输明细
通过此程序将大总帐凭证数据抽出,按照凭证明细的形式传送至核心系统。
开发列表
•DEV083_大总账凭证导出至核心系统CUX:大总账凭证导出至核心系统
本节用于描述有关实现DEV-083《大总账凭证导出至核心系统》的相关设计细节。主要表结构
cux_gl_core_batches传输批次字段名 | 类型 | 是否为空 | 描述 |
BATCH_ID | NUMBER | 批次号 | |
PERIOD_NAME | VARCHAR2(10) | 期间 | |
LAST_UPDATE_DATE | DATE | ||
LAST_UPDATED_BY | NUMBER(15) | ||
CREATION_DATE | DATE | ||
CREATED_BY | NUMBER(15) | ||
LAST_UPDATE_LOGIN | NUMBER(15) | Y | |
GL_DATE | DATE | 记账日期 | |
PROCESS_STATUS | VARCHAR2(1) | p-待传输 s-传输成功 e-传输失败 |
字段名 | 类型 | 是否为空 | 描述 |
BATCH_ID | NUMBER | Y | 批次id |
JE_HEADER_ID | NUMBER | Y | 凭证头id |
JE_LINE_NUM | NUMBER | Y | 凭证行号 |
CURRENCY_CODE | VARCHAR2(3) | Y | 币种 |
AMOUNT_DR | NUMBER | Y | 借方金额 |
AMOUNT_CR | NUMBER | Y | 贷方金额 |
SEGMENT1 | VARCHAR2(20) | Y | |
SEGMENT2 | VARCHAR2(20) | Y | |
SEGMENT3 | VARCHAR2(20) | Y | |
SEGMENT4 | VARCHAR2(20) | Y | |
SEGMENT5 | VARCHAR2(20) | Y | |
SEGMENT6 | VARCHAR2(20) | Y | |
SEGMENT7 | VARCHAR2(20) | Y | |
SEGMENT8 | VARCHAR2(20) | Y | |
SEGMENT9 | VARCHAR2(20) | Y | |
LAST_UPDATE_DATE | DATE | ||
LAST_UPDATED_BY | NUMBER(15) | ||
CREATION_DATE | DATE | ||
CREATED_BY | NUMBER(15) | ||
LAST_UPDATE_LOGIN | NUMBER(15) | Y | |
AMOUNT_DR_BEQ | NUMBER | Y | 本位币借方金额 |
AMOUNT_CR_BEQ | NUMBER | Y | 本位币贷方金额 |
BATCH_ID | NUMBER | Y | 批次id |
字段名 | 类型 | 是否为空 | 描述 |
BATCH_ID | NUMBER | Y | 批次id |
JE_HEADER_ID | NUMBER | Y | 头id |
EXTERNAL_REFERENCE | VARCHAR2(80) | Y | 凭证编号 |
字段名 | 类型 | 是否为空 | 描述 |
BATCH_ID | NUMBER | Y | 批次号 |
VOUCHER_ID | NUMBER | Y | 传票组号 |
VOUCHER_NUM | NUMBER | Y | 组内序号 |
BUSINESS_CODE | VARCHAR2(4) | Y | 业务代号 |
ACCOUNT_SEQUENCE | VARCHAR2(5) | Y | 账户序号 |
CURRENCY_CODE | VARCHAR2(3) | Y | 币种 |
CURRENCY_NUM | VARCHAR2(2) | Y | 币种编号 |
AMOUNT | NUMBER | Y | 金额 |
TRADE_CODE | VARCHAR2(10) | Y | 摘要代码 |
TRADE_CHANNEL | VARCHAR2(3) | Y | 交易渠道 |
TRADE_USER | VARCHAR2(10) | Y | 交易柜员 |
SEGMENT1 | VARCHAR2(20) | Y | 机构 |
SEGMENT3 | VARCHAR2(20) | Y | 科目 |
LAST_UPDATE_DATE | DATE | ||
LAST_UPDATED_BY | NUMBER(15) | ||
CREATION_DATE | DATE | ||
CREATED_BY | NUMBER(15) | ||
LAST_UPDATE_LOGIN | NUMBER(15) | Y | |
AMOUNT_BEQ | NUMBER | Y | 本位币金额 |
DR_CR_FLAG | VARCHAR2(5) | Y | 借贷方向 0-借 1-贷 |
主要逻辑
当提交请求时main会判断请求的种类,如果是白天的就会调用day_validate进行校验,判断是否是在在日结、是否已经日结。然后会依次创建批次、创建头、创建明细、汇总、生成传输明细。
流程图
流程解释:1、开始:调用请求程序传入参数时间、请求类型
2、是否是日间:判断请求类型。日间的凭证来源为手工、自动和电子表格
3、日间验证(A):如果请求类型是日间,就调用日间请求校验程序
3.1、是否正在日结:判断是否正在日结或日结已完成, 查询cux_dc_system_status表判断open_flag = 'N'的条数
3.4、是否在日期指针下:查询cux_gl_daily_pointer的日期指针
5、传输准备:调用 cux_public_interface_pkg.create_upload_schedule
程序
6、创建批次:生成一个当前传输的批次,默认传输状态为P(待传输)
7、更新传输头表:
INSERT INTO cux_gl_core_headers ch
(batch_id, je_header_id, doc_sequence_value)
SELECT l_batch_id, gjh.je_header_id, gjh.doc_sequence_value
FROM gl_je_headers gjh
WHERE gjh.period_name = p_period_name
AND gjh.status = 'P'
AND gjh.ledger_id = g_ledger_id
AND NOT EXISTS
(SELECT 1 FROM cux_gl_core_headers cgh WHERE gjh.je_header_id = cgh.je_header_id)
AND gjh.created_by <> l_xn_user_id -- 1.来源为核心的并且createby是指定虚拟柜员的数据不导入
AND (p_transfer_type = 'N' OR
(p_transfer_type = 'D' AND gjh.je_source IN ('Manual', 'AutoCopy', 'Spreadsheet'))) --2.日间和晚上跑批的数据区分
;
8、根据批次、传输头表生成传输凭证明细:
Select *
FROM gl_je_lines gjl, gl_code_combinations gcc, gl_je_headers gh
WHERE gjl.code_combination_id = gcc.code_combination_id
AND gjl.je_header_id = gh.je_header_id
AND gh.status = 'P' --已过帐
AND gjl.je_header_id IN
(SELECT gch.je_header_id FROM cux_gl_core_headers gch WHERE gch.batch_id = l_batch_id)
9、验证科目所对应的业务代号、账户序号是否正确:校验科目所对应的业务代号是否存在,
校验业务代号对应的账户序号是否存在
11、删除错误数据所对应的传输明细表和传输头表
12、生出传输和汇总表:SELECT *
FROM cux_gl_core_summary
WHERE batch_id = p_batch_id
AND amount > 0
ORDER BY voucher_id, voucher_num
传输字段排列说明
序号 | 字段名称 | 字段说明 | 类型 | 是否必输 |
1 | 传票组号 | 用来标识一组传票,例:1,2,3顺序使用 | NUMBER(10,0) | 是 |
2 | 组内序号 | 行序号,自动流水码 | NUMBER(10,0) | 是 |
3 | 机构代码 | 凭证行账户的平衡段值 | VARCHAR2(4) | |
4 | 业务代号 | 依据凭证行账户的自然账户段值取值 | VARCHAR2(5) | |
5 | 账户序号 | 依据业务代号进行取值 | VARCHAR2(5) | |
6 | 币种 | 依据币种代码转换 | VARCHAR2(2) | |
7 | 借贷标志 | 0 -借 1 -贷 | VARCHAR2(32) | 是 |
8 | 交易金额 | 按照机构,业务代号,账户序号,币种,借贷方向汇总输入金 额 | NUMBER(17,2) | 是 |
9 | 摘要代码 | 留空 | VARCHAR2(30) | |
10 | 交易渠道 | 默认05,代表ERP财务系统 | VARCHAR2(3) | |
11 | 交易柜员 | 由核心分配的虚拟柜员 | VARCHAR2(6) | 暂定为FD_hexin |
2)组内序号:在同一组传票下,自动从1开始流水,同一传票下按照业务代号升序排列,同一业务代号按照账户序号升序排列,同一账户序号下按照借贷标志升序排列
3)业务代号:依据科目取值自客户化form“核心系统业务代号维护”
4)账户序号:依据业务代号取自客户化form“核心系统内部账户序号列表”
主要SQL
创建批次--创建一个批次
SELECT cux_gl_core_batches_s.nextval INTO l_batch_id FROM dual;
x_batch_id := l_batch_id;
INSERT INTO cux_gl_core_batches cb
(cb.batch_id,
cb.period_name,
cb.last_update_date,
cb.last_updated_by,
cb.creation_date,
cb.created_by,
cb.last_update_login,
cb.gl_date,
cb.process_status)
VALUES
(l_batch_id, p_period_name,SYSDATE, g_user_id, SYSDATE, g_user_id, g_login_id, SYSDATE, 'P');
更新头
--将数据插入header
INSERT INTO cux_gl_core_headers ch
(batch_id, je_header_id,external_reference)
SELECT l_batch_id,gjh.je_header_id, gjh.external_reference
FROM gl_je_headers gjh
WHERE gjh.period_name =p_period_name
AND gjh.status = 'P'
AND gjh.ledger_id =g_ledger_id
AND NOT EXISTS
(SELECT 1 FROMcux_gl_core_headers cgh WHERE gjh.je_header_id = cgh.je_header_id)
AND gjh.created_by<> l_xn_user_id --1.来源为核心的并且createby是指定虚拟柜员的数据不导入
AND (p_transfer_type ='N' OR (p_transfer_type = 'D' AND
gjh.je_source IN ('Manual','Manual (Copied)', 'Spreadsheet'))) --2.日间和晚上跑批的数据区分
更新传输明细
相关文章推荐
- Android--加载大分辨率图片到内存
- RubyGems 镜像 - 淘宝网
- 测试专用术语
- 用友ERP-U8最新破解(再次更新版本,附安装过程中的解决办法)
- html禁止手机页面放大缩小
- 如何解决SSH登录Solaris主机速度慢的问题
- SQL 分组获取产品 前两条记录
- Java内存模型——可见性
- c_汉诺塔
- c# 委托与多线程
- Android Lights
- CSLA .NET是一个.NET软件开发框架
- Spring 通过注解注入Properties文件
- 冒泡排序
- C# 比较时间大小
- 简单理解Socket
- Struts2 的Result Type
- 当前用户不是有效的System Center Orchestrator用户
- 数据仓库入门(实验7)部署分析服务数据库
- 数据仓库入门(实验7)部署分析服务数据库