# 點子數位 - 電子發票導入概念驗證(POC)
參考文件:[財政部北區國稅局導入電子發票模式自我評估](https://www.ntbna.gov.tw/download/163de82cc8d00000e426127ad0b70c2f)
## 導入模式
依自我評估 P.5 之圖,導入分為不需要內部整合及需要內部整合二類。其下又分為:
1. 不需內部整合
- 大平台 WEB 系統開立模式:適用規模較小、量少、月結彙開、不需要與內部系統整合。
- 系統外包開立模式
2. 需要內部整合
### 不需要內部整合
需要與內部整合,又可區分為以下二種:
1. 高穩私模式
2. 低隱私模式 (***暫定採用此模式***)
```graphviz
digraph {
rankdir=LR;
營業人 -> 開立發票系統[label="開立發票"]
開立發票系統 -> 易發票[label="API 呼叫"];
易發票 -> "大平台"
}
```
###
## 銷售單建立作業
```graphviz
digraph {
銷售作業 -> 開立發票[label="API 呼叫"];
開立發票 -> 取得發票資訊[label="API 回覆"];
取得發票資訊 -> 建立銷售單;
取得發票資訊 -> 取得發票PDF[label="API 呼叫"];
取得發票PDF -> 呼叫列印代理[label="本地 API 呼叫"];
}
```
## 發票重印
```graphviz
digraph {
}
```
### 發票生命週期
```graphviz
digraph {
開立 -> { 註銷重開, 折讓, 作廢 }
}
```
開立
作廢
折讓
## 開發進度
### 測試 API 界接
- [x] 登入測試 API 取得 AccessToken,回應如下,其中 validTo 為 token 有效時間為60天。
```json
{
"code": 0,
"message": "Ok",
"value": {
"accName": "A50852742",
"dspName": null
},
"token": {
"token": "9bb58eaaf0b0d8c59b2e96951f641d0c12035746002cabbc",
"validTo": 1710510536656
}
}
```
- [x] 將 token 存入供未來備用,目前放在 /var/app/syu3c/mis/invoice_poc
```php
$token_file = ./tmp/token.json
```
- [x] 測試取得指定週期的發票清單。
```json
// 測試名稱:取得 202401 期的已開立的發票資料
// URL is https://tryapi.ezreceipt.cc/eInvoice/invoice/list
// STATUS 200
// BODY
{
"code": 0,
"message": "Ok",
"value": {
"list": [
{
"invID": 21555,
"invNo": "AA10000000",
"invType": 7,
"soID": 51442,
"orderNo": "ID2024011500022",
"salesAmount": 1504,
"taxAmount": 75,
"taxType": 1,
"taxRate": 0.05,
"msgType": 0,
"invoiceTime": "2024-01-15 20:05:00",
"lotStatus": -10,
"carrierType": 10,
"carrierInfo": "",
"charity": null,
"cdc4": null,
"notifyEmail": null,
"remarks": "",
"uploadCode": null,
"procState": 11,
"allowance": [],
"prodList": [
{
"title": "iPhone 8 64G 黑",
"qty": 1
}
]
}
],
"entries": 1
}
}
```
### 單獨列印發票 POC
> 取得發票不是以發票號碼,而是以 invID
- [x] 取得發票 PDF 檔。
- 樣本網頁: https://dev.idea3c.com.tw/pg/invoice/proof/2
- [x] 列印發票測試,
```graphviz
digraph {
rankdir=LR;
取得發票PDF -> 主機暫存 -> 呼叫列印代理 -> 抓取暫存PDF -> "進行列印(lq)"
}
```
發票列印代理指令:
```shell
lp -o media=Custom.57x90mm -o PaperType=Continue 1.pdf
```
### 開立發票 POC
- [ ] 測試開立發票(純 API 測試,未與流程整合)
- [ ] 測試開立發票後、透過標籤機列印發票。
- [ ] 設計發票列印代理。
- [ ]
```
開立發票
```