將本賬期、本通道里面的支付全部設(shè)置為短款糙置、撤銷/退款記錄為長款
找出本賬期所有的對賬文件
-
打開每一個文件, 遍歷每一條記錄
- 如果Ksher單號不是900(配置文件)開頭的,跳過
- 對賬單交易插入通道交易記錄表
- 以單號和交易類型判斷pay_flow_check記錄
-
記錄存在:
- 時間摩钙、幣種罢低、金額、單號相同:平賬
- (時間胖笛、幣種网持、金額、單號)有不同:錯賬
更新pay_flow_check的通道交易金額和通道手續(xù)費长踊、通道幣種功舀、消費者支付幣種、消費者支付金額
-
記錄不存在:
插入到pay_flow_check表- 支付:長款
- 退款/撤銷:短款
-
更新交易的結(jié)算金額身弊、手續(xù)費辟汰、VAT等
更新平賬記錄的結(jié)算狀態(tài)為可結(jié)算,其余為不可結(jié)算
轉(zhuǎn)移記錄 *
- 從pay_flow表中將昨天/通道(成功的記錄)中記錄轉(zhuǎn)移到pay_flow_check當中阱佛。
- 同步商戶的費率(注意:隔天退款用支付時候的費率)
- 計算手續(xù)費帖汞、VAT、結(jié)算金額凑术。
- 同步商戶的結(jié)算幣種
對賬 *
- 將pay_flow_check中昨天/通道:(已對賬翩蘸、不可結(jié)算)&(支付全部設(shè)置為短款,撤銷/退款記錄為長款)
- 找出昨天/通道的所有的對賬文件
- 刪除通道交易記錄表channel_record
- 打開每一個文件, 遍歷每一條記錄
4-1. 如果Ksher單號不是900(配置文件)開頭的淮逊,跳過
4-2. 交易記錄插入通道交易記錄表channel_record - 更新對賬狀態(tài)
- 支付:
channel_record LEFT JOIN pay_flow_check(支付時間催首、幣種、金額泄鹏、單號)- 相同: 平賬
- 不相同: 錯賬
- 退款/撤銷:
channel_record LEFT JOIN pay_flow_check(退款時間郎任,退款單號,金額)- 相同: 平賬
- 不相同: 錯賬
- 支付:
- 分(支付备籽、退款舶治、撤銷) 對賬單中有但是pay_flow_check中沒有的記錄:
插入到pay_flow_check表中(不可結(jié)算,ksher交易金額為0车猬,
支付:長款 退款/撤銷: 短款 - 將平賬記錄調(diào)整為可結(jié)算霉猛。
生成報表
- 獲取指定國家/通道/(開始日期-結(jié)束日期)下的所有商戶
- 排除測試商戶
- 計算 開始日期-結(jié)束日期 跨越幾個自然月
- 遍歷自然月(如果跨月,每個商戶會生成2張報表):
- 獲取本自然月里面的的交易開始日期和結(jié)束日期,記做month_begin_day, month_end_day
- 遍歷商戶:
- 遍歷 month_begin_day, month_end_day诈唬,生成data_list:
- 獲取所有的支付訂單信息
- 減去當日(退款/撤銷)金額 == 支付金額的單子
- 遍歷data_list寫入到excel
- 計算每天的交易金額:
- 單日支付韩脏、退款、撤銷金額合計
- 當日隔天退款合計
- 匯總本月本商戶的當日金額和隔日金額铸磅,交易記錄行數(shù)赡矢,結(jié)算金額寫入excel。
- 根據(jù)開始日期和結(jié)束日期阅仔,生成excel
- 遍歷 month_begin_day, month_end_day诈唬,生成data_list:
- 壓縮excel打包
出款
- 尋找通道/賬期的默認出款日期(默認月份記為A)
- 在work_for_bill中尋找是否有這個月的記錄:
- 沒有的話吹散,加入一條記錄到work_for_bill
- 獲取所有的交易商戶
- 減去測試商戶
- 獲取賬期的跨自然, span_month
- 遍歷span_month
- 獲取自然月的交易開始日期begin_date和結(jié)束日期end_date
- 獲取begin_date和end_date之間的交易商戶
- 刪除測試商戶
- 遍歷商戶:
- 生成一個出款單號
- 遍歷交易日
- 計算交易金額八酒,手續(xù)費空民,VAT、wht(可結(jié)算的交易)
- 插入到Pay_out_detail
- 插入到匯總表 pay_out_sum
- 更新pay_flow_check的pay_out_id
- 如果本月交易金額 > 0:
* 生成發(fā)票號 get_tax_no(begin_date, end_date, mch_id, pay_channel)
* 更新發(fā)票號
生成發(fā)票
- 查找本通道、本商戶的開始日期和結(jié)束日期是否有發(fā)票號
- 如果有界轩,返回
- 通過結(jié)束日期找到默認的結(jié)算日期
- 找到本月已經(jīng)出發(fā)票的最大次數(shù)down_times
- 當前號 = down_times + 1
- 根據(jù)當前號獲取佛歷發(fā)票號
- 更新work_for_bill中的target_month和download_times
撤銷出款
- 清空pay_out_detail中本賬期的數(shù)據(jù)
- 將pay_out_sum中本賬期的數(shù)據(jù)清除画饥。
- 將pay_flow_check中的pay_out_id清空,并且置狀態(tài)為可結(jié)算浊猾,結(jié)算時間設(shè)置為''
- work_for_bill中download_times減去發(fā)票的數(shù)量抖甘。