您的位置:首页 > 其它

大总账凭证导出至核心

2013-12-06 17:42 381 查看


通过此程序将大总帐凭证数据抽出,按照凭证明细的形式传送至核心系统。

开发列表

•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-传输失败
cux_gl_core_details

字段名
类型
是否为空
描述
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
cux_gl_core_headers

字段名
类型
是否为空
描述
BATCH_ID
NUMBER
Y
批次id
JE_HEADER_ID
NUMBER
Y
头id
EXTERNAL_REFERENCE
VARCHAR2(80)
Y
凭证编号
cux_gl_core_summary

字段名
类型
是否为空
描述
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
1)传票组号:在同一个批量文件中按照机构汇成汇总凭证,不同机构的凭证区分为不同传票,自动从1开始流水。

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.日间和晚上跑批的数据区分

更新传输明细


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: