---
# System prepended metadata

title: 大智通 gem

---

# 大智通 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`
![](https://i.imgur.com/ZCiB3Bq.png)
這樣就可以看看是否真的有寄送成功。

## 對帳
對帳會有一個 .acc 檔，目前大智通在每月10號和25號會發出 acc 檔，會存在
data/seven_ftp_files/MAIN/ACC/829EEE_201811US03.acc
SevenCheckAccountWorker.new.perform
