# -*- coding: utf-8 -*-
"""
Làm sạch 3 file báo cáo mua hàng: MUA HANG 15T6-26, MUA HÀNG 22T6-26, MUA HÀNG T6-26 - 3-

Pattern từ SKILL/GOC.xlsx → LAMSACH.xlsx:
1. Xóa 2 sheet phụ (QN-T6-26, MUA HÀNG T6-26) — chỉ giữ FILE GỐC
2. Sửa header cột tháng: thêm "(Khối lượng Kg)"
3. Giữ nguyên dữ liệu + dòng tổng cộng
"""
import openpyxl
from openpyxl.styles import Font, Alignment
from openpyxl.utils import get_column_letter
import os, re, shutil

BASE = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
OUTPUT_DIR = f"{BASE}/SKILL/KETQUA"
os.makedirs(OUTPUT_DIR, exist_ok=True)

def process_file(input_path):
    basename = os.path.basename(input_path)
    print(f"\n=== Processing: {basename} ===")
    
    # Đọc file gốc
    wb = openpyxl.load_workbook(input_path)
    
    # Xác định sheet FILE GỐC
    sheet_name = None
    for sn in wb.sheetnames:
        if 'FILE GỐC' in sn or 'FILE' in sn:
            sheet_name = sn
            break
    
    if not sheet_name:
        # Thử tìm sheet có nhiều dòng nhất
        biggest = max(wb.sheetnames, key=lambda s: wb[s].max_row)
        sheet_name = biggest
    
    # Xóa các sheet không phải FILE GỐC
    sheets_to_delete = [s for s in wb.sheetnames if s != sheet_name]
    print(f"  Giữ sheet: {sheet_name}")
    print(f"  Xóa sheet: {sheets_to_delete}")
    for s in sheets_to_delete:
        del wb[s]
    
    ws = wb[sheet_name]
    
    # Sửa header dòng 4: thêm "(Khối lượng Kg)" vào cột 4-9
    for c in range(4, 10):
        cell = ws.cell(4, c)
        old_val = str(cell.value or '')
        if '(Khối lượng' not in old_val:
            new_val = old_val.replace('\n', ' ').strip()
            # Thêm đơn vị
            new_val = f"{new_val} (Khối lượng Kg)"
            cell.value = new_val
    
    # Style
    header_font = Font(name='Times New Roman', size=10, bold=True)
    data_font = Font(name='Times New Roman', size=10)
    
    # Định dạng header
    for c in range(1, 10):
        cell = ws.cell(4, c)
        cell.font = header_font
        cell.alignment = Alignment(horizontal='center', wrap_text=True)
    
    # Định dạng dữ liệu
    for r in range(5, ws.max_row + 1):
        for c in range(1, 10):
            cell = ws.cell(r, c)
            cell.font = data_font
            if c >= 4:
                cell.alignment = Alignment(horizontal='right')
                if cell.value:
                    try:
                        cell.value = int(str(cell.value).replace(',', ''))
                    except:
                        pass
    
    # Đặt độ rộng cột
    col_widths = [5, 14, 50, 14, 14, 14, 14, 14, 18]
    for ci, w in enumerate(col_widths, 1):
        ws.column_dimensions[get_column_letter(ci)].width = w
    
    # Xác định tuần từ tên file
    week = ''
    if '15T6' in basename:
        week = '15T6'
    elif '22T6' in basename:
        week = '22T6'
    elif '3-' in basename:
        week = 'CUOIT6'
    else:
        week = 'XX'
    
    out_name = f"MUA_HANG_{week}_DA-LAM-SACH.xlsx"
    out_path = f"{OUTPUT_DIR}/{out_name}"
    wb.save(out_path)
    
    rows = ws.max_row - 4  # trừ header
    print(f"  → Saved: {out_name} ({os.path.getsize(out_path)//1024} KB, {rows} KH)")
    
    return rows

total = 0
for in_file in INPUT_FILES:
    count = process_file(in_file)
    total += count

print(f"\n{'='*50}")
print(f"✅ Hoàn thành! Tổng: {total} khách hàng")
print(f"📁 Output: {OUTPUT_DIR}")
