# Accountant Open Invoice System
#### A Simple way to Open Invoice
---
# Part 1
### Main Architecture
---
## Server Service Architecture
```mermaid
graph TD;
Server1-->|"Build 1"| Apace_Server1["Apace Server 1"];
Server1-->|"Build 1"| Api_Server1["Api Server 1"];
Server1-->|"Build 1"| postgresql1["postgresql 1"];
Api_Server1-->|"interact 1"| postgresql1
Apace_Server1-->|"Request 1"|Api_Server1
Server1-->|"Sends data 1"| Webhook1;
Webhook1-->|"Forwards data 1"| LineOfficialAccount1;
LineOfficialAccount1-->|"Sends to 1"| LineGroup1["LineGroup Room ID) 1"];
LineOfficialAccount1-->|"Sends to 1"|LineIndividual1("LineIndividual Line ID123");
```
---
## User Stroy
```mermaid
graph TD;
A["Add offical Account 1"]
B["Rich Menu(Main Menu) 1"]
C["Change Company 1"]
D["Open Invoice 1"]
E["Recent Invoice 1"]
F["Create Function 1"]
G["Operator Invoice 1"]
A-->B
B-->C
B-->D
B-->E
B-->F
B-->G
```
---
## User Stroy
#### Change Company
```mermaid
graph TD;
C["Change Company 1"]
C1["Cheack Company information exist 1"]
C2["Give A link direct crate account 11"]
C3["Display change company flex message 1"]
C-->C1
C1--"不存在-"-->C2
C1--"存在-"-->C3
```
---
#### Diaplay Flex Message
<img src="https://hackmd.io/_uploads/B10qLGFkC.png" alt="image" height="800">
---
## User Stroy
#### Open Invoice
```mermaid
graph TD;
D["Open Invoice 1"]
D1["Cheack Company information exisx 11"]
D2["Give A link direct crate account 111"]
D3["Give A link direct Open Invoice Web 11"]
D-->D1
D1--"不存在-"-->D2
D1--"存在-"-->D3
```
---
#### Diaplay Web UI(Main Menu)
<img src="https://hackmd.io/_uploads/B1aZ_fKkC.png" alt="image" height="700">
---
#### Diaplay Web UI(Open Invoice)
<img src="https://hackmd.io/_uploads/Hk9HuMYJ0.png" alt="image" height="700">
---
#### Diaplay Web UI(Add Item)
<img src="https://hackmd.io/_uploads/Hy69uMFyC.png" alt="image" height="700">
---
#### Diaplay Web UI(Preview Invoice)
<img src="https://hackmd.io/_uploads/By6n_Mt10.png" alt="image" height="700">
---
#### Diaplay Web UI(Sent By Email)
<img src="https://hackmd.io/_uploads/SkpWKMKyR.png" alt="image" height="700">
---
#### Diaplay Web UI(Save Local)
<img src="https://hackmd.io/_uploads/ryIrtzYyA.png" alt="image" height="500">
---
## User Stroy
#### Recent Invoice
```mermaid
graph TD;
E["Recent Invoice 1"]
E1["Cheack Company information exist 11"]
E2["Give A link direct crate account 111"]
E3["Display recent invoice flex message 111"]
E-->E1
E1--"不存在-"-->E2
E1--"存在-"-->E3
```
---
#### Diaplay Flex Message
<img src="https://hackmd.io/_uploads/Byrz5MFJR.png)" alt="image" height="700">
---
## User Stroy
#### Crate Function
```mermaid
graph TD;
B["Rich Menu(Create Function) 1"]
F["Create Function 1"]
F1["Rich Menu(Create Function) 1"]
AA["Create Company 1"]
BB["Create Items 1"]
CC["Create Customer 1"]
DD["Back Rich Menu(Create Function) 1"]
F-->F1
F1-->AA
F1-->BB
F1-->CC
F1-->DD
DD-->B
```
---
#### Rich Menu(Create Function)
<img src="https://hackmd.io/_uploads/ByAjoGKJA.png" alt="image" height="700">
---
#### Create Company
<img src="https://hackmd.io/_uploads/Bkq_vrYyR.png" alt="image" height="700">
---
#### Create Customer
<img src="https://hackmd.io/_uploads/SJwswStyC.png" alt="image" height="700">
---
#### Add Item
<img src="https://hackmd.io/_uploads/BJR8dSFkC.png" alt="image" height="700">
---
## User Stroy
#### Operator Function
```mermaid
graph TD;
B["Rich Menu(Create Function) 1"]
G["Operator Invoice 1"]
G1["Rich Menu(Operator Invoice) 1"]
AAA["Setting Target Customer 1"]
BBB["Setting Date 1"]
CCC["Find Invoice by setting 1"]
DDD["Back Rich Menu(Create Function) 1"]
G-->G1
G1-->AAA
G1-->BBB
G1-->CCC
G1-->DDD
DDD-->B
```
---
#### Rich Menu(Operator Function)
<img src="https://hackmd.io/_uploads/ByWPhMtJ0.png" alt="image" height="700">
---
#### Setting Target Customer
<img src="https://hackmd.io/_uploads/rkG4CGFk0.png" alt="image" height="700">
---
#### Setting Date
<img src="https://hackmd.io/_uploads/H1bLAMK1R.png" alt="image" height="700">
---
#### Setting Date
<img src="https://hackmd.io/_uploads/rJxTAMFJR.png" alt="image" height="700">
---
#### Void Invoice
<img src="https://hackmd.io/_uploads/HJoJJQY1C.png" alt="image" height="700">
---
#### Void Discount
<img src="https://hackmd.io/_uploads/rJYQ1mF1A.png" alt="image" height="700">
---
#### Add Discount(Web view)
<img src="https://hackmd.io/_uploads/BJoIJ7KyA.png" alt="image" height="700">
---
#### Preview Discount(Web view)
<img src="https://hackmd.io/_uploads/rydY1XYJR.png" alt="image" height="700">
---
#### Comfirm Discount(Web view)
<img src="https://hackmd.io/_uploads/S16ikmFJC.png" alt="image" height="600">
---
## User Stroy
#### Display Invoice(Web view)
<img src="https://hackmd.io/_uploads/B1k_f7tkC.png" alt="image" height="600">
---
## Api
<img src="https://hackmd.io/_uploads/Sk3aI8t1R.png" alt="image" height="600">
<a href="https://hackmd.io/@tPJ4eIj3QIKVLzPjc7S6jg/HJ-r-mtkR">詳細定義文檔</a>
---
## Database Schema
<img src="https://hackmd.io/_uploads/Sy7MzXYkA.png" alt="image" height="550">
<a href="https://hackmd.io/@tPJ4eIj3QIKVLzPjc7S6jg/HJ-r-mtkR">詳細定義文檔</a>
---
## POC<br>Material Source
{%youtube 1L4KQrhXasQ %}
{"contributors":"[{\"id\":\"b4f27878-88f7-4082-952f-33e373b4ba8e\",\"add\":8187,\"del\":2624}]","title":"交付客戶ppt","description":"<a href=\"https://hackmd.io/@tPJ4eIj3QIKVLzPjc7S6jg/HJ-r-mtkR\">詳細定義文檔</a>"}