#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 測試匯入邏輯 """ import pandas as pd from datetime import date # 讀取 Excel excel_path = '/Users/ogt/Downloads/缺貨測試.xlsx' df = pd.read_excel(excel_path) print("=" * 80) print("測試讀取第一行") print("=" * 80) # 讀取第一行 row = df.iloc[0] print(f"\n區ID: {row.get('區ID')}") print(f"區名稱: {row.get('區名稱')}") print(f"借採轉: {row.get('借採轉')}") print(f"缺貨天數: {row.get('缺貨天數')}") print(f"商品可賣量: {row.get('商品可賣量')}") print(f"庫存水位: {row.get('庫存水位')}") # 測試日期轉換 print(f"\n當前日期原始值: {row.get('當前日期')} (類型: {type(row.get('當前日期')).__name__})") date_value = row.get('當前日期') row_import_date = None if pd.notna(date_value): print(f" pd.notna(date_value): True") if isinstance(date_value, (int, float)): print(f" 是數字類型") parsed_date = pd.to_datetime(date_value, unit='D', origin='1899-12-30', errors='coerce') print(f" parsed_date: {parsed_date}, pd.notna: {pd.notna(parsed_date)}") if pd.notna(parsed_date): row_import_date = parsed_date.date() print(f" ✅ 轉換後: {row_import_date}") else: print(f" pd.notna(date_value): False") # 測試缺貨日期轉換 print(f"\n缺貨日期原始值: {row.get('缺貨日期')} (類型: {type(row.get('缺貨日期')).__name__})") stockout_date_value = row.get('缺貨日期') stockout_date_obj = None if pd.notna(stockout_date_value): print(f" pd.notna(stockout_date_value): True") if isinstance(stockout_date_value, (int, float)): print(f" 是數字類型") stockout_parsed = pd.to_datetime(stockout_date_value, unit='D', origin='1899-12-30', errors='coerce') print(f" stockout_parsed: {stockout_parsed}, pd.notna: {pd.notna(stockout_parsed)}") if pd.notna(stockout_parsed): stockout_date_obj = stockout_parsed.date() print(f" ✅ 轉換後: {stockout_date_obj}") else: print(f" pd.notna(stockout_date_value): False") # 模擬完整的 record 建立 record = { 'import_date': row_import_date if 'row_import_date' in locals() else None, 'department': row.get('處別'), 'section': row.get('科別'), 'pm_name': row.get('PM姓名'), 'zone_id': row.get('區ID'), 'zone_name': row.get('區名稱'), 'product_code': str(row.get('商品ID', '')).strip(), 'product_name': str(row.get('商品名稱', '')).strip(), 'product_spec': row.get('單品/組合商品'), 'borrow_transfer': row.get('借採轉'), 'sale_price': None, 'cost_price': None, 'vendor_code': str(row.get('來源供應商編號', '')).strip(), 'vendor_name': str(row.get('來源供應商名稱', '')).strip(), 'current_stock': row.get('商品可賣量'), 'stockout_date': stockout_date_obj, 'stockout_days': row.get('缺貨天數'), 'monthly_sales_amount': row.get('缺貨商品前30天業績'), 'monthly_sales_qty': row.get('最近30天銷售量'), 'daily_avg_sales': None, 'safe_stock_days': row.get('庫存水位'), 'notes': None } print("\n" + "=" * 80) print("建立的 record:") print("=" * 80) for key, value in record.items(): print(f" {key}: {value}")