# 未轉出貨量統計與 LINE 通知系統

## 📌 功能簡介

此系統透過 Flask 建置 Web 介面，結合 **MSSQL 訂單與庫存資料**，提供未轉出貨量統計、匯出 Excel 報表，並支援將重點訊息推播至 LINE 群組。

## 🔧 系統架構

- **框架**：Flask (Python)
- **資料庫**：MSSQL (透過 pyodbc 連線)
- **報表**：Pandas + ExcelWriter (xlsxwriter)
- **通知**：LINE Messaging API
- **環境變數管理**：python-dotenv
- **埠號**：5100

## 📑 功能說明

### 1. 未轉出貨量查詢 (`/`)

- 預設查詢 **明日** 的預交貨日。
- 依據訂單來源（客戶 FullName）分類，統計：
    
    
    - 總訂單數
    - 未轉出貨訂單數
    - 銷售金額（SumAmtATax）
    - EBOUdef3（自定金額）
- 可勾選來源條件過濾。
- 查詢結果顯示於頁面，支援篩選多來源。

### 2. 匯出未轉出貨量統計 Excel (`/export`)

- 匯出欄位包含：
    
    
    - 品名規格
    - SKU
    - 未轉數量
    - D 倉庫存
    - B 倉庫存
    - 建議叫貨量（D倉庫存 - 未轉數量）
- 自動排除指定 SKU：`P07-005-09`、`P07-005-10`。
- 檔名格式：

```bash
未轉出貨量統計_YYYYMMDD_YYYYMMDD.xlsx
```

### 3. LINE 群組推播 (`/send_line`)

- 透過環境變數讀取：
    
    
    - `LINE_CHANNEL_ACCESS_TOKEN`
    - `LINE_GROUP_IDS`
- 支援一次推播至多個群組。
- 訊息長度超過 480 字會自動截斷。

## 📂 環境變數設定（.env）

```
LINE_CHANNEL_ACCESS_TOKEN=xxxxxxxx
LINE_GROUP_IDS=groupid1,groupid2
```

## 📂 主要 SQL 查詢

**訂單未轉出貨量**

```
SELECT s.BillNO, s.ProdID, s.ProdName, s.Quantity, s.QtyRemain,
       m.CustomerID, c.FullName,
       m.SumAmtATax, m.EBOUdef3
FROM ordBillSub s
LEFT JOIN ordBillMain m ON s.BillNO = m.BillNO
LEFT JOIN comCustomer c ON m.CustomerID = c.FundsAttribution
WHERE s.PreInDate BETWEEN ? AND ?
ORDER BY s.PreInDate, s.BillNO
```

****D 倉 / B 倉 庫存****

```
SELECT ProdID, WareID, SUM(Quantity) AS 庫存
FROM StkYearMonthQty
WHERE WareID IN ('D', 'B')
GROUP BY ProdID, WareID
```