MPOS開發SPEC
===
[toc]
---
# 裝置啟用
[參考文件](https://hackmd.io/d0AyPmyRRlCCQXKRgB5jlg)
# 登入
## 流程

| api | description |
|:--------------------------------------------------------------------------------------------------------------- |:----------- |
| [Login](https://hackmd.io/VivUv2sHQgSFlcO2hf72kg?view#POST-employeelogin-%E7%99%BB%E5%85%A5-%E6%9C%89%E7%B4%80%E9%8C%84) | 登入 |
| [settlement](https://hackmd.io/@chhuang/Hkc1A9Ilw#POST-employeesettlement) | 日結 |
## 畫面說明

| name | element type | description |
| ---- |:------------ |:----------- |
| 薪號 | input | 6碼數字 |
| 密碼 | input | 4碼數字 |
| 登入 | button | |

| name | element type | description |
| ------ |:------------ |:-------------------------- |
| 店號 | text | |
| 機號 | text | |
| 營業日 | text | 顯示未日結的營業日(非今日) |
| 確認 | button | |
| 取消 | button | |
## 操作說明
1. 輸入登入帳號密碼
2. call api login
3. 處理api回傳結果
4. 登入成功進入系統
5. 登入失敗依error message判斷是否進入其它操作
6. error message=未日結,顯示日結dialog並以目前登入者當作日結人員
# 系統Layout
## 畫面說明

1. [功能Menu](https://hackmd.io/BiHIrctyThuW_vfeaUj8bA#%E5%8A%9F%E8%83%BDMenu)
2. 功能View
3. Info:放入簡單且必要的資訊
4. [系統功能](https://hackmd.io/BiHIrctyThuW_vfeaUj8bA?both#%E7%B3%BB%E7%B5%B1%E5%8A%9F%E8%83%BD): 交班(登出)、畫面鎖定
# 系統功能

## 鎖定
### 流程

| api | description |
|:------------------------------------------------------------------------------------------------------------- | ----------- |
| [auth](https://hackmd.io/@chhuang/Hkc1A9Ilw#POST-employeeauth-%E9%A9%97%E8%AD%89-%E7%84%A1%E7%B4%80%E9%8C%84) | 登入帳密驗證 |
### 畫面說明

| name | element type | description |
|:-------- |:------------ |:-------------------- |
| 姓名 | text | 目前登入使用者 |
| 密碼 | input | 4碼數字(POS登入密碼) |
| 清除 | button | 快速清除input |
| 解除鎖定 | button | |
### 操作說明
1. 按下鎖定
2. 在原操作畫面上加上遮蔽,並顯示解除鎖定Dialog
3. Dialog無法使用解除鎖定以外的方式關閉(Dialog關閉按鈕、按Dialog外的畫面)
4. 解除鎖定密碼為POS登入密碼
5. 解除鎖定的驗證透過api auth
6. 解除鎖定需回到鎖定前的畫面且保留資料
---
## 交班
### 流程
```plantuml
@startuml
|front|
:交班;
|#AntiqueWhite|api|
:logout;
|front|
:回登入畫面;
@enduml
```
| api | description |
| -------- | -------- |
| [logout](https://hackmd.io/@chhuang/Hkc1A9Ilw#%E4%BA%A4%E7%8F%AD) | user登出 |
---
# Menu功能
## POS
### 銷貨
#### 流程

:::info
**相關流程說明**
[分期](#分期)
[選擇售貨員](#售貨員)
[統一編號](#統一編號)
[會員](#會員)
[輸入商品](#商品輸入)
[促銷](#促銷)
[發票](#發票)
[結帳](#結帳)
:::
| api | description |
|:---------------------------------------------------------------------------------------------- |:------------------------------------ |
| [currentSerial](https://hackmd.io/@chhuang/Hkc1A9Ilw#GET-transactioncurrentSerialtermNotermNo) | 依POS機號取序號 |
| [invocie](https://hackmd.io/@chhuang/Hkc1A9Ilw#%E7%99%BC%E7%A5%A8%E8%99%9F%E7%A2%BC) | 依POS機號取發票號 |
| [CreditCardCancel](https://hackmd.io/@chhuang/Hkc1A9Ilw#POST-prcancel) | 信用卡取消授權 |
| [useFB](https://hackmd.io/@chhuang/Hkc1A9Ilw#POST-memberuseFB) | 產生還原金使用紀錄,退款金額使用負值 |
#### 畫面說明

| 編號 | 說明連結 |
|:---- |:----------------------- |
| 1 | [分期](#分期) |
| 2 | [選擇售貨員](#售貨員) |
| 3 | [統一編號](#統一編號) |
| 4 | [會員](#會員) |
| 5 | [新增商品](#商品輸入) |
| 6 | [商品快捷列](#商品輸入) |
| 7 | [促銷](#促銷) |
| 8 | [發票](#發票) |
| 9 | [結帳](#結帳) |
---
### 配達
#### 流程
```plantuml
@startuml
start
:配達;
:選擇配達功能;
fork
#LightSkyBlue:配達啟單;
fork again
#LightSkyBlue:配達結帳;
end fork
stop
@enduml
```

---
### 配達起單
#### 流程
:::info
流程同[銷貨](#銷貨)
:::
#### 畫面說明

#### 操作說明
1. 自動帶入配達單號(店號3碼開頭)
2. 付款別會多出賒帳
---
### 配達結帳
#### 流程

#### 畫面說明

| name | element type | description |
|:-------- |:------------ |:-------------------- |
| 配達單號 | number | 長度必為13 |
##### 操作說明
1. 輸入配達單號,會檢查是否符合店號
2. 單號錯誤會回傳錯誤訊息
3. 自動帶入單號的購物車資訊
4. 帶出的商品資訊皆不可修改
---
### FoodPanda
使用ParaStore流程紀錄FoodPanda單號
#### 流程
```plantuml
@startuml
start
:自動帶入FoodPanda會員;
:自動帶入FoodPanda貨號;
#LightSkyBlue:序號管理;
:輸入FoodPanda訂單號;
if (單號檢查是否符合規則?) then (YES)
else(NO)
:顯示錯誤訊息;
:停留原畫面;
end
endif
#LightSkyBlue:銷售;
stop
@enduml
```
:::info
* 訂單號規則:XXXX-XXXX
* 結帳付款別只有賒帳
:::
#### 畫面說明


::: info
1. 自動帶入foodpanda貨號(215840)
2. 自動帶入foodpanda會員編號(2990779789962)
3. 商品輸入觸發[ParaStore](#序號管理)
:::

::: info
訂單規則:XXXX-XXXX
訂單編號長度為9碼且第五碼是"-"
:::


---
### 維修
#### 流程

| api | description |
| -------------------------------------------------------------------------------- |:-------------- |
| [repair](https://hackmd.io/@chhuang/Hkc1A9Ilw#GET-repairrepairNo) | 維修單狀態 |
#### 畫面說明



| name | element type | description |
|:-------- |:------------ |:-------------------- |
| 單號 | number | 長度必為13 |
#### 操作說明
1. 輸入維修單號,長度限制13碼純數字
2. 如查詢不到,則會再次詢問是否正確
3. 選擇右邊的商品加入購物車
4. 商品金額由維修單為準不考慮原商品價格
5. 每次只能選擇一個商品
---
### 代收
#### 流程

| api | description |
| -------------------------------------------------------------------------------- |:-------------- |
| [collect](https://hackmd.io/c2D649hCTuW0DV2J8ntrIw?view#GET-collectbar1bar1ampbar2bar2ampbar3bar3) | 代收資訊 |
#### 畫面說明

| name | element type | description |
|:-------- |:------------ |:-------------------- |
| 第一段 | text | 無限制長度 字母為大寫 |
| 第二段 | text | 無限制長度 |
| 第三段 | text | 無限制長度 |
#### 操作說明
1. 輸入三段條碼 皆不可為空值
2. 如有錯誤,根據頁面顯示訊息調整輸入代碼
3. 如檢核過會自動加入購物車
---
### 退貨
#### 流程

| api | description |
| -------------------------------------------------------------------------------- |:-------------- |
| [checkvoid](https://hackmd.io/c2D649hCTuW0DV2J8ntrIw?view#GET-transactioncheckvoidtermNoserialNo) | 取得交易資料 |
| [void](https://hackmd.io/c2D649hCTuW0DV2J8ntrIw?view#POST-transactionvoid) | 確認銷退 |
| [useFB](https://hackmd.io/c2D649hCTuW0DV2J8ntrIw?view#POST-memberuseFB) | 退還還元金 |
#### 畫面說明



#### 操作說明
1. 輸入交易序號(僅限本機台結帳及當日結帳)
2. 秀出該筆序號的交易資料
3. 選擇退貨原因
4. 完成退貨
---
### 列印
#### 流程
```plantuml
@startuml
|front|
|#AntiqueWhite|api|
:so;
|front|
:列出期限內配達單;
:可利用單號模糊查詢;
#palegreen:秀出配達單資訊;
:選擇列印;
@enduml
```
#### 畫面說明



#### 操作說明
1. 自動列出可重印單據(期限內及)
2. 如有錯誤,根據頁面顯示訊息調整輸入代碼
3. 如檢核過會自動加入購物車
| api | description |
| -------------------------------------------------------------------------------- |:-------------- |
| [reprint](https://hackmd.io/c2D649hCTuW0DV2J8ntrIw?view#POST-transactionsoreprint) | 重印單據 |
| [so](https://hackmd.io/c2D649hCTuW0DV2J8ntrIw?view#GET-transactionso) | 單日未結單據 |
---
## 查價
### 流程

### 畫面說明


| name | element type | description |
|:-------- |:------------ |:-------------------- |
| 貨號/國際碼/店內碼 | number | |
---
## 讀帳/日結
### 流程
```plantuml
@startuml
|front|
start
|#AntiqueWhite|api|
:dailyAccount;
|front|
:顯示當日結帳資料;
stop
@enduml
```
### 畫面說明

---
# 共用元件
## 售貨員
### 流程
```plantuml
@startuml
|front|
:開啟售貨員輸入;
:取回SC員工列表;
note left
SC只有該店員工資料
end note
|api|
:userList;
|front|
:輸入員工編號;
if(有此員工?) then(yes)
else(no)
end
endif
:關閉輸入;
stop
@enduml
```
### 畫面說明


---
## 統一編號
### 流程
```plantuml
@startuml
:開啟統編輸入;
:檢查輸入統編;
if(總公司統編?) then(yes)
:不可輸入總公司統編;
end
else(no)
if(符合統編規則?) then(yes)
else(no)
if(詢問是否使用此統編?) then(yes)
if(確定使用?) then(yes)
else(no)
end
endif
else(no)
endif
endif
endif
:關閉輸入;
stop
@enduml
```
### 畫面說明


---
## 會員
### 流程
#### Login

| api | description |
| -------------------------------------------------------------------------------- |:-------------- |
| [member](https://hackmd.io/c2D649hCTuW0DV2J8ntrIw?view#POST-member) | 查詢會員 |
### 畫面說明


### 操作說明
1. 輸入會員號碼8or13碼或是可以使用手機及身分字號及市話
2. 如符合規則但查無資料則會顯示離線認證
3. 查詢後回傳會員資料,包含還元金
---
## 商品輸入
### 流程
```plantuml
@startuml
|front|
start
:\n{{\n salt \n{+\n"貨號/國際碼/店內碼" | [ 清除 ] \n[ 確定 ]}\n}}\n;
:輸入商品;
|#AntiqueWhite|api|
:product;
|front|
:ParaStore;
:促銷;
note: 非滿額促銷
:加進購物車;
stop
@enduml
```
| api | description |
| -------------------------------------------------------------------------------- |:-------------- |
| [product](https://hackmd.io/@chhuang/Hkc1A9Ilw#GET-productpromotionpluNobarcode) | 商品檔包含促銷 |
### 畫面說明

**component type: drawer**
---
## AMG
### 流程
```plantuml
@startuml
|front|
start
#lightblue:輸入商品;
if(商品可加購AMG?) then(yes)
:點選AMG圖示加購;
:選擇欲加購合約;
:\n{{\n salt \n{+\n 有賞條碼 |" input " | [ 清除 ] \n[ 確定 ]}\n}}\n;
if(檢查是否有輸入或重複) then(yes)
else(no)
:畫面停留;
end
endif
|front|
:callback;
else(no)
endif
stop
@enduml
```
:::: info
會員才可加購AMG
::::
> API參考:[Product](https://hackmd.io/c2D649hCTuW0DV2J8ntrIw?view#GET-productpluNobarcode)(property: warranty)
### 畫面說明




#### 操作說明
1. 需在有輸入會員卡號狀態才會顯示AMG
2. 點選AMG圖示會跳出該商品可加購AMG(綠色為可加購)
3. 加購商品已合約上的價格為主,不考慮原商品價格
4. 選擇後須輸入有賞條碼(必填)(同筆訂單內部可有相同條碼)
5. 如果刪除主商品AMG商品會一併刪除
6. 可加購數量不可超過主商品
---
## 序號管理
### 流程

| api | description |
|:-------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| [checkSeq](https://hackmd.io/@chhuang/Hkc1A9Ilw#%E5%BA%8F%E8%99%9F%E7%AE%A1%E7%90%86-%E6%AA%A2%E6%9F%A5%E5%95%86%E5%93%81%E5%BA%8F%E8%99%9F) | 檢查商品序號 |
### 畫面說明

**component type:dialog**
| name | element type | description |
|:---------- |:------------ |:------------ |
| RenderWord | text | 輸入欄位描述 |
| input | input | 輸入欄位 |
| 清除 | button | |
| 確認 | button | |
---
## 促銷
### 促銷組合邏輯

### 資料結構

### 流程
#### 一般促銷

#### 滿額促銷

### 畫面說明
#### 一般促銷


#### 滿額促銷


---
## 變價
### 流程

| api | description |
| ----------------------------------------------------------------------------------------------------------- |:----------- |
| [barginReason](https://hackmd.io/@chhuang/Hkc1A9Ilw#%E9%80%80%E8%B2%A8%E8%AE%8A%E5%83%B9%E5%8E%9F%E5%9B%A0) | 變價資料 |
* 可變價條件:
1. 非組合促銷加購商品
2. 未變價
3. 非促銷商品
4. 特價商品可變價
* 價格檢查:
1. 變價最低價格計算依據變價選項
2. 競爭廠商變價以輸入的廠商售價-1為最低變價價格
### 畫面說明
**變價價格輸入**

| name | element type | description |
| -------- |:------------ |:----------- |
| 輸入價格 | input | 數字 |
| 確認 | button | |
**權限驗證**

| name | element type | description |
| -------- |:------------ |:----------- |
| 輸入價格 | input | fixed |
| 店長帳號 | input | POS登入帳號 |
| 店長密碼 | input | POS登入密碼 |
**選擇變價原因**


| name | element type | description |
| -------- |:------------ |:----------- |
| 輸入價格 | input | fixed |
| 變價原因 | select | |
**競爭變價**


| name | element type | description |
| -------- |:------------ |:----------- |
| 輸入價格 | input | fixed |
| 變價原因 | select | |
| 競爭廠商 | select | |
| 廠商價格 | input | |
---
## 付款
### 流程

### 畫面說明

### 還元金
#### 流程

#### 畫面說明

### 信用卡
Ref:
[MPOS信用卡](https://hackmd.io/Ua-MJJcGQXqLGMf1ZaERdg)
#### 流程

| api | description |
|:------------------------------------------------------------------------------------------------------------------------------------------ |:------------ |
| [bankList](https://hackmd.io/@chhuang/Hkc1A9Ilw#GET-installment) | 銀行列表 |
| [installment](https://hackmd.io/@chhuang/Hkc1A9Ilw#%E5%88%86%E6%9C%9F---%E9%8A%80%E8%A1%8C%E5%88%86%E6%9C%9F%E8%A8%AD%E5%AE%9A) | 銀行分期設定 |
| [creditCardIssuer](https://hackmd.io/@chhuang/Hkc1A9Ilw#%E6%9F%A5%E8%A9%A2%E4%BF%A1%E7%94%A8%E5%8D%A1%E6%89%80%E5%B1%AC%E9%8A%80%E8%A1%8C) | 發卡行查詢 |
| [payment](https://hackmd.io/@chhuang/Hkc1A9Ilw#POST-prpayment) | 請求授權 |
| [query](https://hackmd.io/@chhuang/Hkc1A9Ilw#POST-prquery) | 交易查詢 |
#### 畫面說明
##### 一次付清


#### 分期


#### 3D驗證



---
## 結帳
### 流程
* [付款](#付款)

| api | description |
| ---------------------------------------------------------------------------------- |:-------------- |
| [useWishFB](https://hackmd.io/@chhuang/Hkc1A9Ilw#POST-memberuseWishFB) | 還元金扣款 |
| [transaction](https://hackmd.io/@chhuang/Hkc1A9Ilw#Transaction-%E4%BA%A4%E6%98%93) | SC寫入交易資料 |
---
## 發票
### 流程

### 畫面說明
**捐贈發票**

| name | element type | description |
| -------- |:------------ |:----------- |
| 捐贈碼 | text | |
**列印發票**

| name | element type | description |
| -------- |:------------ |:----------- |
| 護照號碼 | text | |
**手機條碼載具**

| name | element type | description |
| -------- |:------------ |:----------- |
| 載具碼 | text | 必填 |
**自然人憑證**

| name | element type | description |
| -------- |:------------ |:----------- |
| 自然人憑證 | text | 必填 |
---
# 系統LOG
# Ref
> [MPOS使用手冊](https://hackmd.io/0A1CEitXRBOv6NwMrbGyxA#MPOS%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8A)
[MPOS設計](https://hackmd.io/fc0uZaFyQL2LTSKB407v-g#MPOS-modules-amp-views-design)
[MPOS信用卡](https://hackmd.io/Ua-MJJcGQXqLGMf1ZaERdg)
{"metaMigratedAt":"2023-06-15T23:19:01.801Z","metaMigratedFrom":"YAML","title":"MPOS開發SPEC","breaks":true,"contributors":"[{\"id\":\"6b8673ce-8d13-4832-ad5c-65313cb14564\",\"add\":35138,\"del\":13896},{\"id\":\"957c3c55-8933-49b5-a6c4-6a11205d71b3\",\"add\":12816,\"del\":6907}]"}
MPOS開發SPEC
裝置啟用
登入
流程
畫面說明
操作說明
系統Layout
畫面說明
系統功能
鎖定
流程
畫面說明
操作說明
交班
流程
Menu功能
POS
銷貨
流程
畫面說明
配達
流程
配達起單
流程
畫面說明
操作說明
配達結帳
流程
畫面說明
操作說明
FoodPanda
流程
畫面說明
維修
流程
畫面說明
操作說明
代收
流程
畫面說明
操作說明
退貨
流程
畫面說明
操作說明
列印
流程
畫面說明
操作說明
查價
流程
畫面說明
讀帳/日結
流程
畫面說明
共用元件
售貨員
流程
畫面說明
統一編號
流程
畫面說明
會員
流程
Login
畫面說明
操作說明
商品輸入
流程
畫面說明
AMG
流程
畫面說明
操作說明
序號管理
流程
畫面說明
促銷
促銷組合邏輯
資料結構
流程
一般促銷
滿額促銷
畫面說明
一般促銷
滿額促銷
變價
流程
畫面說明
付款
流程
畫面說明
還元金
流程
畫面說明
信用卡
流程
畫面說明
一次付清
分期
3D驗證
結帳
流程
發票
流程
畫面說明
系統LOG
Ref