Skip to main content

未轉出貨量統計與 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-09P07-005-10

  • 檔名格式:

未轉出貨量統計_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