# 門市叫貨系統

# 叫貨單管理系統（Flask + MSSQL + SQLite）

## 📖 簡介

此系統整合 **MSSQL (B倉庫存)** 與 **SQLite (訂單/商品顯示控制)**，提供 Web 介面管理叫貨單，並支援 **Email 發送叫貨單** 及 **Excel 匯出**。

---

## 🛠 功能特色

1. **商品管理**
    
    
    - 從 MSSQL `comProduct` 讀取商品資料。
    - SQLite 紀錄商品顯示控制與備註（`product_control` 表）。
    - 可搜尋、更新商品是否顯示及備註說明。
2. **B倉庫存查詢**
    
    
    - MSSQL 查詢：
        
        
        - `StkYearMonthQty` → 現有庫存
        - `stkBorrowSub` → 借出數量
    - 計算並回傳 **實際庫存（RealStock）**。
3. **叫貨單管理**
    
    
    - **建立叫貨單**
        
        
        - 輸入日期、選擇商品與數量，附備註。
        - 自動生成單號（格式：`YYYYMMDD-序號`）。
    - **編輯叫貨單**
        
        
        - 修改商品清單與備註。
    - **刪除叫貨單**
        
        
        - AJAX 刪除指定叫貨單。
    - **列表分頁**
        
        
        - 預設每頁顯示 10 筆 (`PAGE_SIZE = 10`)。
4. **寄送叫貨單（Gmail API）**
    
    
    - 使用 Gmail API 發送 HTML 格式叫貨單。
    - 收件人群組包含多個 Email（如主管/工廠/門市）。
    - SQLite 更新寄送狀態與寄送時間。
5. **Excel 匯出**
    
    
    - **叫貨清單匯出**
        
        
        - SKU / 品名規格 / 數量
    - **工廠叫貨匯出**
        
        
        - SKU 對應 `UserDef1`（工廠編號）
        - 品名規格 / 數量

---

## 📂 資料庫結構

### SQLite (`db.sqlite3`)

- **orders**
    
    
    - id (PK)
    - date
    - order\_no
    - products (JSON)
    - note
    - mail\_sent (是否寄送)
    - mail\_record (寄送時間)
- **product\_control**
    
    
    - sku (PK)
    - show (是否顯示)
    - note (備註)

### MSSQL

- **comProduct**：商品資料
- **comProductClass**：商品分類
- **StkYearMonthQty**：庫存數量
- **stkBorrowSub**：借出數量

---

## 📐 系統流程

1. 使用者登入首頁 → 選擇分類 → 選擇商品與數量。
2. 系統查詢 B倉實際庫存並顯示。
3. 建立叫貨單，存入 SQLite。
4. 可選擇匯出 Excel 或寄送 Email 給指定收件人。
5. 商品顯示與備註可於管理頁維護。

---

## 📊 畫面範例

- **首頁**：
    
    
    - 日期預設為今日。
    - 下拉選單選擇商品分類。
    - 顯示商品現有庫存與可輸入叫貨數量。
- **叫貨清單**：
    
    
    - 顯示訂單列表。
    - 可進行 **編輯 / 刪除 / 寄送** 操作。
- **商品管理**：
    
    
    - 搜尋 SKU 或品名。
    - 更新商品顯示狀態與備註。

---

## ✅ 成果

- 完整的 **叫貨單管理系統**。
- 整合 MSSQL 即時庫存與 SQLite 控制表。
- 支援 **寄送 Gmail** 與 **匯出 Excel**。
- 適合工廠與門市每日叫貨作業流程。

---