收款通对接-销售回款自动核销

引言

一.编写目的

为打通重药批发ERP与收款通系统数据通道,实现批发ERP应收账款自动核销,及财务凭证分录的生成。特编写此文档,以为项目方案制定、实施、开发、测试、验收提供支持。

二.背景

实现重药批发ERP与收款通系统互连互通、业务自动化。

项目概述

一.批发ERP现状描述

目前批发ERP上线的公司中,针对重药云商线上完成支付的订单,后期仍需销售员手工进行回款认领、回款核销。工作量大且工作效率低。

二.目标

针对线上已完成支付的电商订单,在支付中心在完成ERP出库订单、三方渠道支付记录及电商平台订单的对账处理后,支付中心将对账完成的订单信息回传至ERP,ERP接收到支付中心的数据后,进行自动核销处理。

三.业务解决方案

现依据前期多轮项目讨论成果,基于批发ERP编写如下解决方案,以达成项目目标。

1、自动核销流程


① ERP提供接口,用于接收对账完成数据;
② ERP增加定时器,针对接收到的待核销数据,自动查找对应订单是否已经产生发票及对应发票是否可核销,若存在待核销的发票,则进行自动核销处理(自动生成收款单、回款单)。
③ 自动生成的回款单不再下发财务系统进行回款确认;
④ 自动核销处理时,若销售订单对应的发票未开具,则此订单暂不进行自动核销处理,等待下一轮询处理。
⑤ 自动核销处理时,若销售订单对应发票已全部核销,则此笔订单不再进行自动核销处理。且后续轮询中都不再处理此销售订单。
⑥ 自动核销处理时,若销售订单对应发票已被部分核销,则根据发票待核销金额生成收款单及回款单,系统自动按此金额进行核销。
⑦ 自动核销产生的收款单、回款单均自动确认为正式状态,不再由分子公司确认。
⑧ 核销完成后,核销结果数据再向支付中心反馈。

2、自动核销风险点

由于线上订单与发票可能不是一对一关系,自动核销时可能出现一张发票被拆分为多次核销处理。

3、新增核销管理点

针对来自重药云商的订单,且订单上支付流水号不为空的订单,建议不要手工核销。不然在自动核销时会出现由于手工核销导致自动核销处理卡单的问题。

4、特别说明

针对收款通下发的待核销单据,若同一客户下同时存在多笔销售细单,只有当多笔销售细单均满足核销条件时,该笔对账结果才进行自动核销处理。
② 自动核销时,收款通对账报表ID将作为【销售回款认领管理81003】总单上的来源单号,后续生成回款核销凭证时同一来源单号必须做到同一凭证中。以保证销售回款核销金额与前期金蝶系统内自动认领金额保持一致(1对1的关系)。

四.系统修改解决方案

1、增加支付中心收款数据相关数据表

①表名定义
总单表名:支付记录总单 ZX_SA_PAYMENT_RECORD_DOC
细单表名:支付记录细单ZX_SA_PAYMENT_RECORD_DTL
②总单字段名定义
独立单元ID: ENTRYID NUMBER(10) NOT NULL
客户ID:CUSTOMID NUMBER(10) NOT NULL
收款类别:RECMETHOD NUMBER(2) (1-预收款;2-现收;3-收欠款)
收款金额:TOTAL NUMBER(12,2)
三方支付标识:ZX_ZSFSKBS VARCHAR2(20) (24-收款通-微信、25-收款通-支付宝、26-收款通-民生银行)
回款方式:SETTLETYPEID NUMBER(10) (1-三方支付)
对账报表:OUTSYSSETTLENUM VARCHAR2(30) 收款通对账报表唯一标识
总单ID :ID NUMBER(10) 主键
核销处理说明:ZX_PROCESSMSG VARCHAR2(200)
收款方银行账号: ZX_BANKACCOUNT VARCHAR2(40)
收款方银行开户行名称: ZX_BANKOPENNAME VARCHAR2(100)
付款方银行账号: ZX_PAYBANKACCOUNT VARCHAR2(40)
付款方银行开户行名称: ZX_PAYBANKOPENNAME VARCHAR2(100)
核销状态:ZX_PROCESSSTATE NUMBER(1) 1:已核销;0或空:未核销 非必填,新增数据时默认为0
收款单ID:SARECID NUMBER(20) 非必填
发送收款通标识:ZX_SENDFLAG NUMBER(1) 非必填,0-未反馈,1-已反馈
最后修改人:sys_modifymanid NUMBER(10) 新增数据时默认为0,修改数据时默认取当前操作人的人员ID
最后修改时间:SYS_MODIFYDATE DATE 数据保存时默认取数据库当前时间

③明细表字段定义
细单ID:DTID NUMBER(20) NOT NULL 主键 必填
总单ID:ID NUMBER(10) NOT NULL 外键(对应头表的总单ID字段) 非必填
销售发货单细单ID: SALESDTLID NUMBER(20);必填
金额:LINE_TOTLE NUMBER(12,2) 必填
核销金额:CONSUMPTIONAMOUNT NUMBER(12,2) 非必填

2、增加支付中心收款数据接收接口

①接口类型

接口采用RESTFUL类型

②数据方向

支付中心 –> ESB –> 英克批发

③接口地址:

测试环境接口地址:
正式环境接口地址:

④请求报文示例:

{
    "REQUEST": {
        "HEAD": {
            "ACCOUNT": "调用此服务的系统标识",
            "BIZTRANSACTIONID": "事务ID,唯一性,用于标识每次请求事务",
            "CONSUMER": "接收系统标识,英克批发:10061",
            "COUNT": "交易数量,明确单次数据交互的条目数",
            "PAGENUM": "",
            "PAGESIZE": "",
            "PASSWORD": "",
            "SRVLEVEL": "默认1"
        },
        "LIST": [{
            "CONSUMEID": "客户编码", (主数据6位数编码)
            "RECMETHOD": "收款类别  (1-预收款,2-现收,3-收欠款"),
            "TOTAL": "收款金额",
            "THIRDFLAG": "三方支付标识 (财务系统:SKT01|收款通-微信,SKT02|收款通-支付宝,SKT03|收款通-XX银行)",
            "COMPANYID": "分公司主数据编码",
            "SKTID": "对账报表ID(收款通对账报表唯一标识)",
            "SETTLEMENTTYPEID": "回款方式 (银行存款、三方支付)",
            "BANKACCOUNT":"收款方银行账号",
            "BANKOPENNAME":"收款方银行开户行名称",
            "PAYBANKACCOUNT":"付款方银行账号",
            "PAYBANKOPENNAME":"付款方银行开户行名称",
            "charge""手续费""arrivalMoney""到账金额""payBankAccount""付款方银行账号""payBankAccount""付款方银行开户行名称""bankAccount""收款方银行账号""bankOpenName""收款方银行开户行名称"
            "CHILD_TABLE_LIST": [{
                "ERPORDERNO": "销售发货单细单ID ",
            "AMOUNT""收款金额"
            }]
        }]
    }
}

⑤反馈报文示例:

{
    "RESPONSE": {
        "HEAD": {
            "ERRORINFO": "系统反馈错误描述",
            "PAGENUM": "",
            "ERRORCODE": "系统反馈错误代码",
            "COMMENTS": "备注",
            "SUCCESSCOUNT": "",
            "TOTALROW": "",
            "BIZTRANSACTIONID": "事务ID,唯一性,用于标识每次请求事务",
            "RESULT": "0,成功;1,业务失败但无需重做;",
            "PAGESIZE": ""
        },
        "LIST": []
    }
}

⑥接口字段说明:

⑦ 数据接收排重处理

针对支付中心对账结果唯一标识 (字符串) + 客户 + 收款类别 + 货主单位 + 收款额 + 第三方标识 + 回款方式相同的单据,ERP系统仅接收一次,支付中心重复发送时,ERP不再接收;

3、增加【支付中心对账结果查询】数据展示界面

界面说明:该界面用于展示从支付中心接收到的数据,且默认仅查询当前独立单元数据。查询时默认只能查询当前独立单元数据(按独立单元进行数据隔离)。

4、【销售回款单管理81003】调整

总单增加字段:
自动核销来源:AUTOPROCESSSOURCE NUMBER(2) ;非必填,不可编辑,1:收款通
自动核销来源相关单号:AUTOPROCESSSOURCEID VARCHAR2(200);非必填,不可编辑;

5、增加支付中心对账数据自动核销定时器

针对【支付中心对账结果查询】中总单“回款单处理状态”为“未核销”,且明细中未核销金额不等于0的单据,先根据销售细单ID匹配可核销的销售发票,若同一总单下多明细均可进行核销(销售发货细单均开具发票,且收款金额均小于等于发票可核销金额)才进行自动核销处理。若同一总单下任一销售细单不能全部金额核销,则该单据不纳入本次处理范围。并在【支付中心对账结果查询】细单“核销处理说明”字段中更新未核销原因。
具体核销处理逻辑如下:

①自动生成【销售回款单管理81003】总单数据。

【销售回款单管理81003】总单各字段默认逻辑如下:
独立单元ID:取【支付中心对账结果查询】总单中的独立单元ID;
客户ID:取【支付中心对账结果查询】总单中的客户ID;
回款来源:默认“收款通下发”;
来源单号:取【支付中心对账结果查询】总单中的对账报表ID;
单据状态:默认“临时”;
回款类别:默认“被动回款”;
回款方式:取【支付中心对账结果查询】总单中的回款方式;
回款金额:取【支付中心对账结果查询】总单中的收款方式;
认领状态:默认“认领完成”;
认领余额:默认0;
认领金额:默认等于(可核销金额与收款金额中的数值中)更小的数据值;
录入人:默认0;
来源:默认“自动生成”;
回款单类型:默认”正常收(付)款单”;
币种:默认”人民币“;
审批状态:默认“审批完成”;
自动核销来源:默认“收款通”;
自动核销来源相关单号:取【支付中心对账结果查询】总单的总单ID;
收款单ID:按现有逻辑自动生成;
账期方式:默认赊销;

② 生成【销售回款单管理81003】总单数据后,再自动生成【销售回款单管理81003】细单数据。

【销售回款单管理81003】细单各字段默认逻辑:
收款类别:取【支付中心对账结果查询】总单的收款类别;
收款单ID:按现有逻辑自动生成;
业务日期:取产生数据时刻时间;
客户ID:取【销售回款单管理81003】总单客户ID;
银行:默认空;
委托人ID:取客户对应有效委托人;
联系人ID:取客户对应有效联系人:
业务员ID:取【销售回款单管理81003】总单业务员;
收款额:取【销售回款单管理81003】总单回款金额;
使用状态:默认临时;
外币ID:默认0;
汇率:默认1;
独立单元ID:取【销售回款单管理81003】总单独立单元ID;
细单条数:默认0;
结算方式ID:取【销售回款单管理81003】总单回款方式ID;
确认人ID、制单人ID:默认0;
回款总单ID:取【销售回款单管理81003】总单回款总单ID;
审批状态:默认“审批通过”;
三方支付标识:根据【支付中心对账结果查询】总单的三方支付标识转换为ERP对应三方支付标识ID;

③ 生成【销售回款单管理81003】细单单数据后,再自动生成【销售收款单1080】细单数据。

【销售收款单1080】细单数据主要来源于步骤(1)中查找到的可核销发票数据。

④ 在【销售收款单1080】细单数据生成成功后,再更新【销售收款单1080】总单的使用状态字段值(由临时更新为正式)。同时反向更新【销售回款单81003】的使用状态(临时更新为正式)。

⑤ 若【销售回款单管理81003】总单及细单生成失败,将对应【支付中心对账结果查询】总单的“核销处理说明”更新为具体处理失败原因。

⑥ 若【销售回款单管理81003】总单及细单、【销售收款单1080】总单及细单均生成成功,则根据【销售收款单1080】细单数据,反向更新更新【支付中心对账结果查询】对应细单的已核销金额,并清空明细上的“核销处理说明”。还需将【销售收款单1080】的收款单ID更新至【支付中心对账结果查询】总单的“收款单ID”列。

⑦ 若同一销售细单存在多笔可核销的销售结算细单,则按销售结算细单对应的业务日期从早到晚排序后再进行核销处理;

6、核销数据回传

ERP需要保证销售发货单细单的核销金额与下发时销售发货单细单的核销金额一致(单个销售发货单细单金额全部核销完成)之后才进行回传,使用ESB进行分发,遵循ESB RESTFUL报文规范,核销结果暂定T+1回传,可根据业务实际需求调整成实时或者其他定时回传。

{
    "REQUEST": {
        "HEAD": {
            "BIZTRANSACTIONID": "string",
            "COUNT": "string",
            "CONSUMER": "string",
            "SRVLEVEL": "string",
            "ACCOUNT": "string",
            "PASSWORD": "string",
            "PAGENUM": "string",
            "PAGESIZE": "string",
            "MODULE": "string"
        },
        "LIST": [{
            DATA
        }]
    }
}

接口报文说明:

添加定时器【支付中心核销结果反馈】
取【支付中心对账结果查询】中总单“回款单处理状态”为“已核销”,且“反馈状态”为未反馈的单据传输至支付中心。
接口地址:待定
接口类型:接口采用RESTFUL类型
数据方向:英克批发 –> ESB–>支付中心
接口地址:待定

文档更新时间: 2023-10-19 10:50   作者:刘春燕