开票
2023-10-20 10:01:10 3 举报
登录查看完整内容
开票流程梳理
作者其他创作
大纲/内容
POS
结束
异步插入操作日志
批次号加锁处理,并判断so_invoice中批次号是否存在
trade-core-order-server外部订单号8123123123131212门店107U
invoice-core-server
筛选订单可开票支付方式并校验是否支持开票
循环订单列表
根据内部订单号查询支付详情
开票申请查询(H5)
pay-app-api内部订单号8123123123131212
trade-core-order-server内部订单号8123123123131212
外卖订单
该步骤在代码中无实际意义(没有使用过滤后的数据)过滤出可开票的发票种类invoiceMode=电子发票开票状态isInvoice=未开票或开票失败
根据渠道订单号查询订单详情渠道订单号:为二维码解析出的单号①未查到,显示订单数据还未上传②查到超过1条,显示订单数据异常
合并开票申请
调用每刻申请开票
根据外部订单号和门店查询订单详情
根据渠道订单号查询相关订单信息
trade-core-order-server
校验是否能够补开发票
WM
根据platformCode(POS|WM)
循环每个待开票数据重新计算分摊金额异步重新修改发票、发票明细实际支付金额
so_invoice_apply
校验订单是否申请过开票
汇总订单列表运费
定时任务循环扫描span style=\"font-size: inherit;\
tradeStatus=8时获取待开票的订单发票详情
补开发票流程
根据orderNo
订单交易状态0-订单取消1-待付款3-待发货5-已发货8-订单成功
pmz-api-untimely
合并开票
门店扫描多笔订单,调用开票申请接口,数据进入到so_invoice_apply开票申请表中
判断platformCode
保存发票信息
invoice-app-api
需要拆分汇总运费的traderType7-外卖自营28-云店及时达
构建开票申请信息
font color=\"#e74f4c\
1.校验发票信息:若发票类型为增值税专用发票invoiceType=2且发票种类为纸质发票invoiceMode=2则需抛出异常:span style=\"font-size: inherit;\
分摊金额计算1.根据订单号查询发票详情 select * from so_invoice where order_no = #{orderNo} and is_deleted = 0 and is_available = 1 order by create_time desc2.循环发票集合进行分摊金额计算2.1根据订单号查询交易中心订单信息2.2根据订单号查询交易中心订单售后退货信息2.3重新构建发票明细售后商品详情2.3.1 循环发票明细2.3.2 若当前发票明细不包含在当前订单中,则删除该发票明细2.3.3 若当前发票明细的sku购买数量小于等于退货数量,则删除该发票明细2.3.4 若当前发票明细的sku购买数量大于退货数量,则将(购买数量-退货数量)写入发票明细的开票sku数量span style=\
回写申请开票状态
return
pay-app-api
校验批次中每一笔订单是否可进行开票,若存在不能开票订单直接跳过该批次
font color=\"#323232\
开票申请(H5)
普通POS订单
根据内部订单号查询订单详情
去开票
pmz-api-untimely渠道订单号1001121288221111商户号xxxxxxx
1. 根据orderNo查询(select * from so_invoice where order_no = #{orderNo} and is_deleted = 0 and is_available = 1) 发票数据2.根据orderNo查询订单详情(远程调用)3.判断订单交易类型若为购买伊点卡(tradeType=12),则返回并设置操作状态为\"无法进行操作\
订单类型:28 - 及时达29 - 及时达流水,外卖订单对应的实际出货订单外卖订单开票:校验需要使用 ①原始订单收货时间②原始订单支付方式 开票需要使用③流水订单明细原始订单:有收货时间,有运费原始订单支付方式:已经剔除运费,只包含本单运费外的费用流水订单:无收货时间,无运费,开票明细要用此订单明细流水订单支付方式:包含本单全部费用(含运费),为\"及时达\"支付方式操作:(1) 开票申请 orderNo = 申请操作传入订单号(很长) - 原始外卖订单号 orderOutNo = 根据传入的订单号查询支付返回的WM开头单号 deliveryFee = 从原始订单中取值(2) 去开票 根据orderNo,查询到原始订单数据用于校验【收货时间】与【支付方式 】 根据WM开头的单号+门店,查询到流水订单数据(其中明细用于开票)
根据渠道订单号查询订单详情①未查到,显示订单数据还未上传②查到超过1条,显示订单数据异常
根据渠道channelCode查询开票方门店编码1.若渠道编码channelCode包含\"_\"1.1 String channelType = channelCode.split(\"_\")[1];1.2 若channelType=100|101|103|139,则storeCode = channelCode.split(\"_\")[0];2.若不包含\"_\"2.1 根据key=invoice_core_channelCode_${channelCode}从redis获取storeCode2.2 若缓存未获取到,则从库中查询select * from invoice_channel where channel_code = #{channelCode} and is_deleted = 0 and is_available = 1;2.3 查询获取到storeCode后并设置到redis,最后返回storeCode;
组装申请开票信息
循环每个待开票数据1.纸质发票开票保存发票信息,发送邮件通知财务处理2.电子发票,进行申请开票处理(每刻开票)
保存发票信息保存订单轨迹
根据原始外卖订单号查询订单详情
计算分摊金额等
合并开票同一批次校验公司相同,允许不同门店校验订单号不能重复开票:合并开票与app开票
根据内部订单号或渠道订单号查询支付明细
1001121288221111扫码开票
POS订单
0 条评论
回复 删除
下一页