# 大智通 gem
## 設計哲學
使用 [Shopify/active_shipping](https://github.com/Shopify/active_shipping) 這個 gem 做為主要設計介面 (但沒有切得很乾淨,微失敗 寫日翊 gem 時就有改進很多)
會有一個 Carrier, Location, Package,這些都已實做好,可以看 seven_worker.rb
```
carrier = Seven::Carrier.new(
account_id: SevenWorker.seven_account(order.shop.name),
default_account: SevenWorker.get_default_customer_id
)
destination = Seven::Location.new(
seven_store_id: order.store_id,
seven_store_name: Seven::Carrier.get_store_name(order.store_id),
phone: order.phone,
buyer: order.customer_name,
receiver: order.customer_name,
email: order.email)
package = Seven::Package.new(shop_name: order.shop.name, shop_order_number: order.shipment_order_name, is_cod: order.is_cod?, total_price: order.total_price)
# 建立訂單,carrier 有一個 create_shipment 的介面(function) 可以呼叫
carrier.create_shipment(nil, destination, package)
```
## Schema
- Seven::Account
欄位
- seven_parent_id
母客代,都是 829
- seven_shop_id
子客代,各個企業版客戶會申請自己的子客代(CSD 會申請)
- Seven::TrackingNumber
託運單
大智通的託運單要事先申請,拿單號區間
## 大智通 B2C 串接文件重點說明
## 貨態追踨
## 簡訊寄送
- 接到錯誤訊息
```單號 59978862異常內容: RuntimeError: CODE: -25, DESCRIPTION: 寫入發送紀錄檔發生錯誤```
先檢查有沒有成功寄出
`tracking_number = Seven::TrackingNumber.where(tracking_number: '82959978862').last`
可以看到顧客電話
到 Every8d 後台查看
https://tw.every8d.com/every8d30/report/SearchMemberSend.aspx
帳密到 server ~/wms/shared/config/secrets.yml 的
`every8d_user_id`
`every8d_password`

這樣就可以看看是否真的有寄送成功。
## 對帳
對帳會有一個 .acc 檔,目前大智通在每月10號和25號會發出 acc 檔,會存在
data/seven_ftp_files/MAIN/ACC/829EEE_201811US03.acc
SevenCheckAccountWorker.new.perform