将本账期、本通道里面的支付全部设置为短款、撤销/退款记录为长款
找出本账期所有的对账文件
-
打开每一个文件, 遍历每一条记录
- 如果Ksher单号不是900(配置文件)开头的,跳过
- 对账单交易插入通道交易记录表
- 以单号和交易类型判断pay_flow_check记录
-
记录存在:
- 时间、币种、金额、单号相同:平账
- (时间、币种、金额、单号)有不同:错账
更新pay_flow_check的通道交易金额和通道手续费、通道币种、消费者支付币种、消费者支付金额
-
记录不存在:
插入到pay_flow_check表- 支付:长款
- 退款/撤销:短款
-
更新交易的结算金额、手续费、VAT等
更新平账记录的结算状态为可结算,其余为不可结算
转移记录 *
- 从pay_flow表中将昨天/通道(成功的记录)中记录转移到pay_flow_check当中。
- 同步商户的费率(注意:隔天退款用支付时候的费率)
- 计算手续费、VAT、结算金额。
- 同步商户的结算币种
对账 *
- 将pay_flow_check中昨天/通道:(已对账、不可结算)&(支付全部设置为短款,撤销/退款记录为长款)
- 找出昨天/通道的所有的对账文件
- 删除通道交易记录表channel_record
- 打开每一个文件, 遍历每一条记录
4-1. 如果Ksher单号不是900(配置文件)开头的,跳过
4-2. 交易记录插入通道交易记录表channel_record - 更新对账状态
- 支付:
channel_record LEFT JOIN pay_flow_check(支付时间、币种、金额、单号)- 相同: 平账
- 不相同: 错账
- 退款/撤销:
channel_record LEFT JOIN pay_flow_check(退款时间,退款单号,金额)- 相同: 平账
- 不相同: 错账
- 支付:
- 分(支付、退款、撤销) 对账单中有但是pay_flow_check中没有的记录:
插入到pay_flow_check表中(不可结算,ksher交易金额为0,
支付:长款 退款/撤销: 短款 - 将平账记录调整为可结算。
生成报表
- 获取指定国家/通道/(开始日期-结束日期)下的所有商户
- 排除测试商户
- 计算 开始日期-结束日期 跨越几个自然月
- 遍历自然月(如果跨月,每个商户会生成2张报表):
- 获取本自然月里面的的交易开始日期和结束日期,记做month_begin_day, month_end_day
- 遍历商户:
- 遍历 month_begin_day, month_end_day,生成data_list:
- 获取所有的支付订单信息
- 减去当日(退款/撤销)金额 == 支付金额的单子
- 遍历data_list写入到excel
- 计算每天的交易金额:
- 单日支付、退款、撤销金额合计
- 当日隔天退款合计
- 汇总本月本商户的当日金额和隔日金额,交易记录行数,结算金额写入excel。
- 根据开始日期和结束日期,生成excel
- 遍历 month_begin_day, month_end_day,生成data_list:
- 压缩excel打包
出款
- 寻找通道/账期的默认出款日期(默认月份记为A)
- 在work_for_bill中寻找是否有这个月的记录:
- 没有的话,加入一条记录到work_for_bill
- 获取所有的交易商户
- 减去测试商户
- 获取账期的跨自然, span_month
- 遍历span_month
- 获取自然月的交易开始日期begin_date和结束日期end_date
- 获取begin_date和end_date之间的交易商户
- 删除测试商户
- 遍历商户:
- 生成一个出款单号
- 遍历交易日
- 计算交易金额,手续费,VAT、wht(可结算的交易)
- 插入到Pay_out_detail
- 插入到汇总表 pay_out_sum
- 更新pay_flow_check的pay_out_id
- 如果本月交易金额 > 0:
* 生成发票号 get_tax_no(begin_date, end_date, mch_id, pay_channel)
* 更新发票号
生成发票
- 查找本通道、本商户的开始日期和结束日期是否有发票号
- 如果有,返回
- 通过结束日期找到默认的结算日期
- 找到本月已经出发票的最大次数down_times
- 当前号 = down_times + 1
- 根据当前号获取佛历发票号
- 更新work_for_bill中的target_month和download_times
撤销出款
- 清空pay_out_detail中本账期的数据
- 将pay_out_sum中本账期的数据清除。
- 将pay_flow_check中的pay_out_id清空,并且置状态为可结算,结算时间设置为''
- work_for_bill中download_times减去发票的数量。