# 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 通知功能改到發票流程都成功後才寄出,以免寄信出錯跳出而影響到發票建立