# Stripe 發票相關更新流程
* 步驟一:先跑 migration,更新內容如下:
* stripe_invoices 新增 `charge_id` 欄位,建立關聯到 stripe_balance_transaction_logs
* invoices 及 stripe_balance_transaction_logs 新增 `stripe_invoice_id` 欄位,讓兩張表可以直接關連不用透過 stripe_invoices
* 將現有 invoice id 從 stripe_invoice 更新到 invoices 的 `stripe_invoice_id` 欄位
* 新增 `tax`, `after_tax_net`, `bundle_tax`, `episode_id`, `interval`, `interval_start_at`, `current_interval` 欄位到 stripe/google/itunes logs表單,存帳表資料用
---
* 步驟二:到 Postman 更新以下內容:
* Payment API -> Update Invoice Transactions
* 更新目的
1. 補回從 webhook 遺漏的發票
2. 發票的建立時間在表單上紀錄都不相同,統一改為用 stripe 上開立的時間為準
* 用日期區間做更新 body request example
`{
"startDate": "2020-04-01",
"endDate": "2020-04-15"
}`
* 更新流程
1. 從 stripe 取回時間區間內 status 為 paid 的發票
2. 從 stripe_invoices 批次找相關連的發票,補 `charge_id` 資料,`created_at` 時間改為跟 stripe 上相同的開立時間
3. 從 invoices 批次找相關連的發票,`created_at` 時間改為跟 stripe 上相同的開立時間
4. 若無匹配的分票,就改走建立發票流程
* Payment API -> Update Stripe Balance Transaction Logs
* 更新目的: 用 `stripe_invoice_id` 建立 stripe_balance_transaction_logs 及 invoices table 的關聯,方便產出會計報表及建立 manual logs
* 用日期區間做更新 body request example
`{
"startDate": "2020-04-01",
"endDate": "2020-04-15"
}`
* 更新流程
1. 從 stripe_balance_transaction_logs 取出區間內的資料
2. 打 stripe 的 api 拿到 `stripe_invoice_id` 更新回資料庫
* Stripe Balance Transaction Logs API -> Get Logs For Account
* 目的: 取出日期區間內帳表資料,供會計檢視用
* body request example
`{
"dateRange": ["2020-04-01", "2020-04-15"]
}`
* 流程: 從 stripe_balance_transaction_logs 出發,關聯 invoices & episode & svod_plans 表單, 匯出資料格式如[帳表範例](https://docs.google.com/spreadsheets/d/1wS0jutduxqsfi1b0AhOG5dn7l674fN6v5kFcTXKkzIw/edit#gid=1132717584)
* Stripe Balance Transaction Logs API -> Bulk Create Stripe Balance Transaction Log
* 目的: 資料無誤,建立日期區間內攤提後的 logs 到資料庫 manual_stripe_balance_transaction_logs
* body request example
`{
"dateRange": ["2020-04-01", "2020-04-15"],
"description": "test bulk creat",
"pay_date": "2020-04-15"
}`
* 流程:若是年訂閱,入帳金額、手續費...等需攤提成 12等分,並記錄到接下來的 12 個月裡面
---
* 其他修改:
* 修改 weebhook 付款成功流程:
* 目的: 改善發票遺漏的問題,在原先流程中檢查 user 訂閱狀態若無訂閱,就會跳出流程,導致無建立到發票
* 流程:
1. 在資料庫若無找到訂閱資料,會打 stripe api 取得 訂閱資料,重新建立訂閱到 subscriptions,並把接下來的建立發票流程跑完
2. 把訂閱成功 email 通知功能改到發票流程都成功後才寄出,以免寄信出錯跳出而影響到發票建立