• 电商财务对账


    1. 背景

    随着电商的普及和发展,各个电商平台竞争逐步进入红海,规则越来越复杂,数据量级越来越大,涉及电商业务的公司也越来越多。
    在这样的背景下,涉及电商公司运营部门很多需求得到重视。除此之外,还有一些隐藏在高速发展的电商需求没有得到关注,例如,订单多,涉及到的金额大,公司财务人员的收支对账任务也日益沉重。为此,使用信息系统来实现财务数据的自动对账的需求渐渐被很多公司看到。

    2. 概述

    下面基于电商特性讲解一下实现财务对账功能

    财务对账整体预览:

    内部数据
    对账引擎
    外部数据
    对账结果

    基于上图,我们需要解决以下几个问题:
    1、内部数据包括哪些
    2、外部数据如何获取
    3、对账引擎要做哪些
    4、对账结果如何处理

    这些问题,给我们整个对账系统的建设提供的方向,为此,我们分为四个部分给大家分析。

    3. 内部数据

    内部数据通常是指,公司内部系统中处理过的订单、退单和退款等数据。

    3.1. 需求说明

    为了不影响系统业务运行,建议定时同步订单系统数据到对账引擎中。
    平台单号将内部系统中的订单、退单和退款,聚合规整到系统账单。

    订单
    系统账单
    退单
    退款
    3.2. 数据流转示例

    把内部系统中的订单退单退款单转换为系统账单
    系统内部订单 ( table-1)

    订单主表信息
    平台订单号系统编号订单数量订单金额··· 订单时间
    PO001SO0016150··· 2022-11-22 16:00:00
    订单明细信息
    平台订单号系统编号sku信息sku数量sku金额··· 订单时间
    PO001SO001SKU001150··· 2022-11-22 16:00:00
    PO001SO001SKU002240··· 2022-11-22 16:00:00
    PO001SO001SKU003360··· 2022-11-22 16:00:00

    系统内部退单 ( table-2)

    退单主表信息
    平台退单号平台订单号系统编号退单数量退单金额退货原因··· 退单时间
    PRT001PO001SRT0012407天无理由退货··· 2022-11-24 10:00:00
    退单明细信息
    平台退单号平台订单号系统编号sku信息sku数量sku金额··· 订单时间
    PRT001PO001SRT001SKU003240··· 2022-11-24 10:00:00

    系统内部退款 ( table-3)

    退款主表信息
    平台退款号平台订单号系统编号退款金额退款原因··· 退款时间
    PRF001PO001SRF00110表面破损补偿··· 2022-11-25 11:00:00
    退款明细信息
    平台退款号平台订单号系统编号sku信息sku金额··· 订单时间
    PRF001PO001SRF001SKU00210··· 2022-11-25 11:00:00

    规整后生成一张系统账单 ( table-4),如下:

    系统账单主表
    平台订单号正向金额正向数量逆向金额逆向数量转换状态··· 操作时间
    PO0011506502已转换··· 2022-11-25 11:00:00
    系统账单明细信息
    单据类型平台订单号平台退单/款号系统编号sku信息sku数量sku金额··· 记录时间
    订单PO001--SO001SKU001150··· 2022-11-22 16:00:00
    订单PO001--SO001SKU002240··· 2022-11-22 16:00:00
    订单PO001--SO001SKU003360··· 2022-11-22 16:00:00
    退单PO001PRT001SRT001SKU003240··· 2022-11-24 10:00:00
    退款PO001PRF001SRF001SKU002010··· 2022-11-25 11:00:00

    至此,系统内部的数据已经规整到系统账单表中。

    4. 外部数据

    外部数据通常是指平台和商家之间的资金流水结算记录,这些数据可以从商家管理后台下载文件,也可以通过资金流水接口获取。

    4.1 需求说明
    4.1.1 数据获取

    我们在获取外部数据时,需要支持接口下载的同时兼容文件导入。

    资金流水文件导入后可以上传到oss上保存起来,系统需要解析时读取oss上对应的文件即可,为此我们可以使用 “原始文件记录表” 记录文件对应的oss路径以及解析状态等。

    4.1.2 数据规整

    支付宝账单是每一笔流水都有一条数据;抖音账单则是一笔订单对应的金额明细在一条数据的不同字段中体现。

    由于各个平台原始账单(后面提到的原始账单包括但不限于支付宝原始账单抖音原始账单拼多多原始账单、等表数据)内容不一致,我们需要根据平台单号把不一致的数据规整到一张统一的表中,这样我们就得到了平台账单

    我们在从各渠道原始账单转换生成平台账单数据时,需要确定哪些金额是归属正向,哪些金额归属逆向,为了便于后期扩展,我们可以引入一张平台金额计算配置表以标记不同渠道的不同类型数据中的字段取值

    常见电商平台的账单下载,其它的账单可以在对应的开放平台里找:
    支付宝账单下载京东账单下载拼多多账单下载抖音电商账单下载
    当然还会有很多其它平台不一定有接口,可以通过导入文件的方式进入对账引擎

    4.2 数据流转

    外部数据流转概况

    不同渠道原始账单最终生成平台账单的流转过程

    支付宝账单文件导入
    原始账单文件记录
    抖音账单文件导入
    ```文件导入
    拼多多账单文件导入
    支付宝原始账单
    抖音原始账单
    ```原始账单
    拼多多原始账单
    支付宝账单接口
    抖音账单接口
    ```账单接口
    拼多多账单接口
    平台账单

    常见的原始账单有以下两种:

    1. 每笔资金流水对应一条数据(以支付宝原始账单为代表, ( table-5)):
    账务流水号业务流水号商户订单号商品名称发生时间对方账号收入金额支出金额账户余额交易渠道业务类型备注业务描述业务账单来源业务基础订单号业务订单号
    1170**1412022110**891T200**82**商品2022/8/8 20:09:37*文(568***@qq.com)590**支付宝交易付款0010001|交易收款-交易收款商家中心PO001M{PO001}
    1170**1422022110**891T200**82**商品2022/8/8 20:09:37杭**里妈*软件服务有限公司(lmy***@service.aliyun.com)0-1.29**支付宝交易分账淘宝客佣金代扣款0060011|营销支出-淘宝客佣金联盟商家中心PO001M{PO001}
    1170**1432022110**891T200**82**商品2022/8/8 20:09:37*付*网络技术有限公司(sys***@alipay.com)0-0.71**支付宝收费花呗支付服务费[2022**5];淘宝交易号[T200P1**4]0030038|软件服务费-支付宝服务费蚂蚁商家中心PO001M{PO001}
    1. 每个账单的资金流水在一条数据的不同字段体现(以抖音原始账单为代表 ( table-6)):
    动账时间动帐流水号动账方向动账金额动账账户动账摘要计费类型子订单号订单号售后编号下单时间商品ID订单类型订单实付应结运费实付实际平台补贴_运费实际平台补贴实际达人补贴实际抖音支付补贴实际抖音月付营销补贴订单退款平台服务费佣金渠道分成招商服务费直播间站外推广费其他分成备注
    2022/7/26 23:10AS2022**019_IN入账100微信订单结算鲁班广告PO2PO002'SS7403**26282022/6/18 18:26'35**583普通订单1005100000-2-40050
    2022/7/26 23:47AS2022**405_IN入账100微信订单结算小店自卖PO3PO003'SS7124**49502022/7/19 13:27'35**050普通订单10010040000-50-4040
    2022/7/26 23:47AS2022**66994_IN入账100微信服务费返还鲁班广告PO4PO004'SS7124**95842022/6/18 20:43'35**940普通订单10015032000-300-1230

    为了实现抖音账单正逆向金额的区分,我们引入一张平台金额计算配置表,以期实现根据每条数据的不同字段,获取对应的金额。

    平台金额计算配置表设置为如下( ( table-7)):

    平台平台类型系统类型取值字段平台业务计算方式备注
    抖音订单结算正向订单实付应结订单实付应结
    抖音订单结算正向运费实付运费实付
    抖音订单结算正向实际平台补贴实际平台补贴
    抖音订单结算逆向平台服务费平台服务费
    抖音订单结算逆向佣金佣金
    抖音服务费返还正向订单实付应结订单实付应结
    抖音服务费返还正向实际平台补贴实际平台补贴
    抖音服务费返还逆向渠道分成渠道分成
    抖音服务费返还逆向招商服务费招商服务费
    支付宝交易付款正向收入金额收入金额
    支付宝交易付款逆向支出金额支出金额
    支付宝交易分账正向收入金额收入金额
    支付宝交易分账逆向支出金额支出金额
    支付宝收费正向收入金额收入金额
    支付宝收费逆向支出金额支出金额

    平台账单如下
    根据平台和原始账单中的平台类型,将( table-5 、 table-6)的数据,基于( table-7)规整成如下( table-8):

    平台账单列表页面
    序号平台平台订单号正向金额正向数量逆向金额逆向数量转换状态··· 账单时间
    1支付宝PO00159020未转换··· 2022/8/8 0:09:37
    2抖音PO002105060未转换··· 2022/7/26 23:10
    3抖音PO003114050未转换··· 2022/7/26 23:47
    4抖音PO0041030120未转换··· 2022/7/26 23:47

    上述表( table-8)中的序号1数据详情页如下,根据平台单号将多条原始账单数据聚合到一个平台账单中,明细数据是根据( table-7)将对应的每一条原始账单数据拆分成正向和逆向两类。

    序号1数据详情页( table-9)

    平台账单主表
    平台平台订单号正向金额正向数量逆向金额逆向数量转换状态··· 生成时间
    支付宝PO00159020未转换··· 2022/8/9 10:00:00
    平台账单-原始单据明细
    原始账单流水号系统类型平台类型平台业务金额数量转换状态 原始账单时间
    1170**141正向交易付款收入金额590未转换2022/8/8 20:09:37
    1170**141逆向交易付款支出金额00未转换2022/8/8 20:09:37
    1170**142正向交易分账收入金额00未转换2022/8/8 20:09:37
    1170**142逆向交易分账支出金额1.290未转换2022/8/8 20:09:37
    1170**143正向收费收入金额00未转换2022/8/8 20:09:37
    1170**143逆向收费支出金额0.710未转换2022/8/8 20:09:37

    同理,序号2数据详情页如下( table-10)

    平台账单主表
    平台平台订单号正向金额正向数量逆向金额逆向数量转换状态··· 生成时间
    抖音PO002105060未转换··· 2022/8/9 10:00:00
    平台账单-原始单据明细
    原始账单流水号系统类型平台类型平台业务金额数量转换状态 原始账单时间
    AS2022**019_IN正向订单结算订单实付应结1000未转换2022/8/8 20:09:37
    AS2022**019_IN正向订单结算运费实付50未转换2022/8/8 20:09:37
    AS2022**019_IN正向订单结算实际平台补贴00未转换2022/8/8 20:09:37
    AS2022**019_IN逆向订单结算平台服务费20未转换2022/8/8 20:09:37
    AS2022**019_IN逆向订单结算佣金40未转换2022/8/8 20:09:37

    对账引擎

    1、获取外部数据有两种方式,一是通过上述接口获取账单数据,二是通过商家后台下载资金流水文件
    2、对账系统需要将接口下载或者用户导入到系统中的资金流水文件写入数据库中,生成对应的平台原始对账单
    3、由于各个平台原始账单数据格式不一致,我们需要把不一致的数据规整成为一张统一的平台账单
    4、从内部系统中获取对应的订单、退单和退款单,生成系统单据;
    5、使用平台账单的数据生成对账结果单;
    6、根据关联关系,从系统单据中找到对应的数据写入对账结果单中;
    7、把平台金额和系统金额进行比对,得到对账结果。

    1~4步,我们在前面的操作将内部数据(订单退单退款单)规整成系统账单,外部的原始账单数据规整成平台账单

    接下来,我们用系统账单平台账单数据执行第5步。

    在做第5部操作之前,我们先思考一个问题:

    一定要用平台账单生成对账结果后,再根据平台单号等关联关系去找到系统账单数据后写入对账结果单吗?

    答案是否定的,我们也可以用系统账单生成对账结果单之后,根据对应的关联关系去找平台账单后写入对账结果单中。
    在正常情况下,我们的内部数据一定是会比外部数据多的,因为订单和退单等数据是我们内部系统产生的,我们可以第一时间拿到;外部数据则不然很多平台的资金流水数据都是n+1甚至是n+7才能获取到。
    平台账单生成对账结果单,可以减少对账结果单的数量,用户只需要关注同时有内部和外部数据的订单即可;
    系统账单生成对账结果单,可以将系统内的数据先处理好,等外部数据拿到后,就可以执行对账引擎的逻辑;
    二者各有利弊,需要根据实际情况择优选用。

    对账结果单中需要展示出内部金额和数量、外部金额和数量,除此之外,很多公司的财务管理比较精细,需要掌握公司内部每个sku在每一笔订单中的收支情况,便于后期的盘库盘账等操作。因此,我们以( table-4)和( table-9)为例将对账结果单设计成如下( table-11):

    对账结果单
    平台平台订单号平台账单正向金额平台账单正向数量平台账单逆向金额平台账单逆向数量系统账单正向金额系统账单正向数量系统账单逆向金额系统账单逆向数量封账正向金额封账正向数量封账逆向金额封账逆向数量对账状态封账状态··· 生成时间
    支付宝PO00110506015065020000对账失败未封账··· 2022/8/12 10:00:00
    对账结果单sku明细
    单据类型系统编号sku信息sku数量sku金额封账数量封账金额对账状态··· 原始账单时间
    订单SO001SKU00115000对账失败···2022/8/8 20:09:37
    订单SO001SKU00224000对账失败···2022/8/8 20:09:37
    订单SO001SKU00336000对账失败···2022/8/8 20:09:37
    退单SRT001SKU00324000对账失败···2022/8/8 20:09:37
    退款SRF001SKU00201000对账失败···2022/8/8 20:09:37

    如( table-11)所示,我们将内部数据中的sku信息作为子表关联到这个对账结果单上,等我们对账引擎处理结束之后,就可以将这笔订单中系统内部的sku金额收入和支出完整的展示出来。由于外部数据和内部数据不一致,我们将这个结果单设置为对账失败。

    接下来我们讲对账结果的操作

    对账结果

    在对账引擎中处理完成的数据,可能会出现内外部数据不一致的情况,基于这些数据,我们需要提供一些操作来平账(所谓平账,就是我们需要对这个内外不一致的数据,提供一个统一的结果供后续流程操作)。
    平账操作无外乎三种,分别是:
    1、对账结果单主表封账金额=平台金额,对账结果单sku明细表中的封账金额可以按比例分摊封账金额;
    2、对账结果单主表封账金额=系统金额,对账结果单sku明细表中的封账金额=sku金额;
    3、同时调整平台和系统金额,使其一致
    经过处理后的对账结果单,设置对账结果=已对账,做封账操作后,不再处理。

    前两种操作我们可以在列表页提供两个按钮,让用户选择数据后批量操作;如果需要同时调整平台和系统金额,那么用户要进入到对账结果单详情页,手动输入封账正向金额、封账正向数量、封账逆向金额、封账逆向数量,对账结果单sku明细表中的封账金额可以按比例分摊封账金额;

    我们将( table-11)按第三种情况操作后,结果如下:

    对账结果单
    平台平台订单号平台账单正向金额平台账单正向数量平台账单逆向金额平台账单逆向数量系统账单正向金额系统账单正向数量系统账单逆向金额系统账单逆向数量封账正向金额封账正向数量封账逆向金额封账逆向数量对账状态封账状态··· 生成时间
    支付宝PO00110506015065021305101已对账未封账··· 2022/8/12 10:00:00
    对账结果单sku明细
    单据类型系统编号sku信息sku数量sku金额封账数量封账金额对账状态··· 原始账单时间
    订单SO001SKU00115043.331已对账···2022/8/8 20:09:37
    订单SO001SKU00224034.662已对账···2022/8/8 20:09:37
    订单SO001SKU00336052.012已对账···2022/8/8 20:09:37
    退单SRT001SKU00324081已对账···2022/8/8 20:09:37
    退款SRF001SKU00201020已对账···2022/8/8 20:09:37

    此时该对账结果单已经是对账成功,再进行封账操作后,整个对账流程就结束了。

    在信息系统这个概念中,人是不可或缺的一个重要组成

    由于电商业务的特殊性,加之各个平台规范不一样,我们需要有技术可以解决很多问题,但是我们还是需要人工介入这样的意识。

    这套对账流程可以兼容绝大多数订单的对账需求,但是仍然有对账失败,且在对账结果单上操作无法满足需求的可能,所以我们还需要针对不同的情况,人工处理。

  • 相关阅读:
    Vue Cli安装和node-sass、less-loader、sass-loader安装
    快速排序(Quick Sort)
    刚开始学SpringCloud的Eureka带来的问题
    物理机服务器应该注意的事
    【博客531】linux kubernetes网络非法报文校验参数以及追踪
    FaceChain集成最强开源SDXL,生成人像质感拉满!
    MyBatis指定查询类容、多表查询
    图神经网络关系抽取论文阅读笔记(六)
    【数据结构】树与二叉树(七):二叉树的遍历
    ubuntu20.04 安装TensorRT,解决依赖问题
  • 原文地址:https://blog.csdn.net/videa1949/article/details/127924224