## Database schema ```mermaid erDiagram Buyers { BuyerTaxID varchar(50) PK BuyerName varchar(255) } Sellers { SellerTaxID varchar(50) PK SellerName varchar(255) } Invoices { InvoiceNumber varchar(50) PK BuyerTaxID varchar(50) FK SellerTaxID varchar(50) FK InvoiceDate date DeliveryDate date TotalSalesAmount decimal(18) TaxableSalesAmount decimal(18) ZeroTaxSalesAmount decimal(18) ExemptSalesAmount decimal(18) SalesTax decimal(18) TotalAmount decimal(18) TaxType varchar(50) ExchangeRate decimal(18) CarrierTypeCode varchar(50) CarrierNumber1 varchar(50) CarrierNumber2 varchar(50) GeneralRemarks varchar(255) IssueConfirmationTime datetime LastUpdateTime datetime MIGMessageType varchar(50) SenderTaxID varchar(50) SenderName varchar(255) } Items { ItemID int PK ItemName varchar(255) Unit varchar(50) UnitPrice decimal(18) } InvoiceDetailStatuses { StatusID int PK StatusName varchar(50) } InvoiceDetails { InvoiceNumber varchar(50) PK ItemID int FK Quantity decimal(18) Amount decimal(18) FieldRemarks varchar(255) RelatedNumber varchar(50) StatusID int FK } Buyers ||--o{ Invoices : "BuyerTaxID" Sellers ||--o{ Invoices : "SellerTaxID" Invoices }|--|| InvoiceDetails : "InvoiceNumber" Items }|--|| InvoiceDetails : "ItemID" InvoiceDetailStatuses }|--|| InvoiceDetails : "StatusID" ``` ```sql= -- 建立買方表格 CREATE TABLE Buyers ( BuyerTaxID VARCHAR(50) PRIMARY KEY, -- 買方統一編號 (設定主鍵) BuyerName VARCHAR(255) -- 買方名稱 ); -- 建立賣方表格 CREATE TABLE Sellers ( SellerTaxID VARCHAR(50) PRIMARY KEY, -- 賣方統一編號 (設定主鍵) SellerName VARCHAR(255) -- 賣方名稱 ); -- 建立發票表格 CREATE TABLE Invoices ( InvoiceNumber VARCHAR(50) PRIMARY KEY, -- 發票號碼 (設定主鍵) BuyerTaxID VARCHAR(50), -- 買方統一編號 SellerTaxID VARCHAR(50), -- 賣方統一編號 InvoiceDate DATE, -- 發票日期 DeliveryDate DATE, -- 寄送日期 TotalSalesAmount DECIMAL(18, 2), -- 銷售額合計 TaxableSalesAmount DECIMAL(18, 2), -- 應稅銷售額 ZeroTaxSalesAmount DECIMAL(18, 2), -- 零稅銷售額 ExemptSalesAmount DECIMAL(18, 2), -- 免稅銷售額 SalesTax DECIMAL(18, 2), -- 營業稅 TotalAmount DECIMAL(18, 2), -- 總計 TaxType VARCHAR(50), -- 課稅別 ExchangeRate DECIMAL(18, 4), -- 匯率 CarrierTypeCode VARCHAR(50), -- 載具類別編號 CarrierNumber1 VARCHAR(50), -- 載具號碼1 CarrierNumber2 VARCHAR(50), -- 載具號碼2 GeneralRemarks VARCHAR(255), -- 總備註 IssueConfirmationTime DATETIME, -- 開立確認時間 LastUpdateTime DATETIME, -- 最後異動時間 MIGMessageType VARCHAR(50), -- MIG訊息類別 SenderTaxID VARCHAR(50), -- 傳送方統編 SenderName VARCHAR(255), -- 傳送方名稱 FOREIGN KEY (BuyerTaxID) REFERENCES Buyers(BuyerTaxID), -- 設定買方外鍵參考 FOREIGN KEY (SellerTaxID) REFERENCES Sellers(SellerTaxID) -- 設定賣方外鍵參考 ); -- 建立商品表格 CREATE TABLE Items ( ItemID INT AUTO_INCREMENT PRIMARY KEY, -- 商品ID (自動增加) ItemName VARCHAR(255), -- 品名 Unit VARCHAR(50), -- 單位 UnitPrice DECIMAL(18, 2) -- 單價 ); -- 建立發票商品細節狀態表格 CREATE TABLE InvoiceDetailStatuses ( StatusID INT AUTO_INCREMENT PRIMARY KEY, -- 狀態ID (自動增加) StatusName VARCHAR(50) -- 狀態名稱 (開立、作廢、折讓等) ); -- 建立發票商品細節表格 CREATE TABLE InvoiceDetails ( InvoiceNumber VARCHAR(50), -- 發票號碼 ItemID INT, -- 商品ID Quantity DECIMAL(18, 2), -- 數量 Amount DECIMAL(18, 2), -- 金額 FieldRemarks VARCHAR(255), -- 單一欄位備註 RelatedNumber VARCHAR(50), -- 相關號碼 StatusID INT, -- 狀態ID (外鍵參考 InvoiceDetailStatuses 表格) FOREIGN KEY (InvoiceNumber) REFERENCES Invoices(InvoiceNumber), -- 設定外鍵參考 FOREIGN KEY (ItemID) REFERENCES Items(ItemID), -- 設定外鍵參考 FOREIGN KEY (StatusID) REFERENCES InvoiceDetailStatuses(StatusID) -- 設定外鍵參考 ); ``` #### List Company ##### 描述 建立新的公司使用者 ##### 端點 `POST /api/{roomID/LineID}/ListCompanies` ##### 請求參數 {} ##### 請求範例 ```http POST /api/{roomID/LineID}/ListCompanies Content-Type: application/json { } ``` ##### 回應範例(staue code:400) ```json { "error": "Missing required roomID or LineID" } ``` ##### 回應範例(staue code:404) ```json { "error": "No companies found" } ``` ##### 回應範例(staue code:200) ```json [ { "companyID": 1, "companyName": "Example Company", "companyAddress": "123 Main Street, City, Country", "companyPhoneNumber": "123-456-7890" }, { "companyID": 2, "companyName": "Another Company", "companyAddress": "456 Park Avenue, Town, Country", "companyPhoneNumber": "987-654-3210" } ] ``` #### Add Company ##### 描述 建立新的公司使用者 ##### 端點 `POST /api/{roomID/LineID}/CreateCompany` ##### 請求參數 - `companyName` (string, required): 公司名稱 - `companyAddress` (string, required): 公司地址 - `companyPhoneNumber` (string, required): 公司電話號碼 ##### 請求範例 ```http POST /api/{roomID/LineID}/CreateCompany Content-Type: application/json { "companyName": "Example Company", "companyAddress": "123 Main Street, City, Country", "companyPhoneNumber": "123-456-7890" } ``` ##### 回應範例(staue code:400) ```json { "error": "Missing required parameters" } ``` ##### 回應範例(staue code:200) ```json { "messge": "Create Company Successful" } ``` #### Add Customer Data ##### 描述 新增客戶資料 ##### 端點 `POST /api/{roomID/LineID}/AddCustomerData` ##### 請求參數 * customerName (string, required): 客戶名稱 * customerAddress (string, required): 客戶地址 * customerPhoneNumber (string, required): 客戶電話號碼 ##### 請求範例 ```http POST /api/addCustomerData Content-Type: application/json { "customerName": "John Doe", "customerAddress": "456 Oak Street, Town, Country", "customerPhoneNumber": "987-654-3210" } ``` ##### 回應範例(staue code:400) ```json { "error": "Missing required parameters" } ``` ##### 回應範例(staue code:200) ```json { "messge": "Add Customer Data Successful" } ``` #### Open Invoice ##### 描述 開立發票 ##### 端點 `POST /api/{roomID/LineID}/OpenInvoice` ##### 請求參數 * "invoiceNumber": 發票號碼 * "buyerNote": 買受人註記 * "formatCode": 格式代號 * "invoiceStatus": 發票狀態 * "invoiceDate": 發票日期 * "buyerTaxID": 買方統一編號 * "buyerName": 買方名稱 * "sellerTaxID": 賣方統一編號 * "sellerName": 賣方名稱 * "deliveryDate": 寄送日期 * "totalSalesAmount": 銷售額合計 * "taxableSalesAmount": 應稅銷售額 * "zeroTaxSalesAmount": 零稅銷售額 * "exemptSalesAmount": 免稅銷售額 * "salesTax": 營業稅 * "totalAmount": 總計 * "taxType": 課稅別 * "exchangeRate": 匯率 * "carrierTypeCode": 載具類別編號 * "carrierNumber1": 載具號碼1 * "carrierNumber2": 載具號碼2 * "totalRemark": 總備註 ##### 請求範例 ```http POST /api/{roomID/LineID}/OpenInvoice Content-Type: application/json { "invoiceNumber": "", // 發票號碼 "buyerNote": "", // 買受人註記 "formatCode": "", // 格式代號 "invoiceStatus": "", // 發票狀態 "invoiceDate": "", // 發票日期 "buyerTaxID": "", // 買方統一編號 "buyerName": "", // 買方名稱 "sellerTaxID": "", // 賣方統一編號 "sellerName": "", // 賣方名稱 "deliveryDate": "", // 寄送日期 "totalSalesAmount": 0.00, // 銷售額合計 "taxableSalesAmount": 0.00, // 應稅銷售額 "zeroTaxSalesAmount": 0.00, // 零稅銷售額 "exemptSalesAmount": 0.00, // 免稅銷售額 "salesTax": 0.00, // 營業稅 "totalAmount": 0.00, // 總計 "taxType": "", // 課稅別 "exchangeRate": 0.00, // 匯率 "carrierTypeCode": "", // 載具類別編號 "carrierNumber1": "", // 載具號碼1 "carrierNumber2": "", // 載具號碼2 "totalRemark": "" // 總備註 } ``` ##### 回應範例(staue code:400) ```json { "error": "Missing required parameters" } ``` ##### 回應範例(staue code:200) ```json { "messge": "Add Customer Data Successful" } ``` #### Add Item ##### 描述 新增商品 ##### 端點 `POST /api/{roomID/LineID}/AddItem` ##### 請求參數 * itemName (string, required): 品項名稱 * itemPrice (number, required): 品項價格 ##### 請求範例 ```http POST /api/{roomID/LineID}/AddItem` Content-Type: application/json { "itemName": "Product ABC", "itemPrice": 50.00 } ``` ##### 回應範例(staue code:400) ```json { "error": "Missing required parameters" } ``` ##### 回應範例(staue code:200) ```json { "messge": "Add Item Data Successful" } ``` #### Check Invoice Details ##### 描述 新增商品 ##### 端點 `POST /api/{roomID/LineID}/InvoiceDetail` ##### 請求參數 * customer (string, required): 顧客名稱/顧客編號 * date (date, required): 開發票時間 ##### 請求範例 ```http POST /api/{roomID/LineID}/InvoiceDetail Content-Type: application/json { "customer": "customer ABC", "date": "2024-10-22" } ``` ##### 回應範例(staue code:400) ```json { "error": "Missing required parameters" } ``` ##### 回應範例(staue code:200) ```json { "InvoiceId": "XXXAABBBCCC", "items":{ { "ItemName":"ABC", "quantity":1 "price":100 } } "amount":100, "statue":"Something" } ``` #### List Item ##### 描述 新增商品 ##### 端點 `POST /api/{roomID/LineID}/Items` ##### 請求參數 nope ##### 請求範例 ```http POST /api/{roomID/LineID}/Items` Content-Type: application/json { } ``` ##### 回應範例(staue code:400) ```json { "error": "Missing required roomID or LineID" } ``` ##### 回應範例(staue code:200) ```json [ { "itemID": 1, "itemName": "Product ABC", "itemPrice": 50.00 }, { "itemID": 2, "itemName": "Product XYZ", "itemPrice": 30.00 } ] ``` #### List Customer Data ##### 描述 新增客戶資料 ##### 端點 `POST /api/{roomID/LineID}/CustomerData` ##### 請求參數 ##### 請求範例 ```http POST /api/addCustomerData Content-Type: application/json { } ``` ##### 回應範例(staue code:400) ```json { "error": "Missing required parameters" } ``` ##### 回應範例(staue code:200) ```json [ { "customerID": 1, "customerName": "John Doe", "customerEmail": "john.doe@example.com", "customerPhone": "123-456-7890" }, { "customerID": 2, "customerName": "Jane Smith", "customerEmail": "jane.smith@example.com", "customerPhone": "987-654-3210" } ] ```