from __future__ import annotations

"""Kịch bản hoàn thiện Bảng theo dõi công trình (2022 - 2026) cho Công ty TNHH Xây Dựng Định Sơn.

TÁCH RỜI TOÀN BỘ CÁC CÔNG TRÌNH CỦA ĐA ĐỘ VÀ CÁC ĐỐI TÁC THÀNH TỪNG DÒNG RIÊNG BIỆT (KHÔNG GỘP THEO KHÁCH HÀNG).
Dựa trên 100% hồ sơ pháp lý thực tế trong CongTrinh/ và hóa đơn bán ra (Output Invoices) từ Cổng Thuế GDT.
"""

import json
import logging
import openpyxl
from datetime import datetime
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
from openpyxl.utils import get_column_letter

logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s")
logger = logging.getLogger("SplitDadoProjects")

EXCEL_PATH = "C:/Projects/DSCons/CongTrinh/Bảng theo dõi công trình.xlsx"


def update_workbook():
    logger.info("Mở file Excel: %s", EXCEL_PATH)
    wb = openpyxl.load_workbook(EXCEL_PATH)

    # =============================================================
    # 1. TÁCH RỜI TOÀN BỘ CÔNG TRÌNH ĐA ĐỘ NĂM 2023 (Sheet 2023)
    # =============================================================
    logger.info("--- Bắt đầu cấu trúc lại Sheet 2023: Tách từng công trình Đa Độ ---")
    if "2023" in wb.sheetnames:
        del wb["2023"]
    ws_2023 = wb.create_sheet("2023")

    headers_std = [
        "STT", "Tên Công Trình", "Gói Thầu", "Chủ đầu tư / Khách hàng", "Số hợp đồng",
        "Ngày ký", "GT Hợp Đồng", "Ngày khởi công", "Thời hạn (ngày)", "Hạn nghiệm thu",
        "Ngân hàng bảo lãnh", "Bảo lãnh thực hiện", "Ngày nghiệm thu", "Ngày bàn giao",
        "Số hóa đơn/ngày cấp", "Giá Dự Toán Trước Thuế", "Giá QT trước thuế", "Thuế GTGT",
        "Thành tiền", "Tạm ứng", "Thanh toán", "Công nợ còn lại", "KT A/ Phụ trách", "Tình trạng hồ sơ"
    ]

    for c, h in enumerate(headers_std, 1):
        ws_2023.cell(1, c, h)
    ws_2023.cell(2, 12, "Bảo lãnh thực hiện")
    ws_2023.cell(2, 16, "Giá Dự Toán\nTrước Thuế")
    ws_2023.cell(3, 20, "Tạm ứng")
    ws_2023.cell(3, 21, "Thanh toán")
    ws_2023.cell(3, 22, "Công nợ còn lại")

    # Danh sách 25 công trình riêng biệt của Đa Độ năm 2023
    cdt_dado = "CÔNG TY TNHH MTV KHAI THÁC CÔNG TRÌNH THỦY LỢI ĐA ĐỘ"
    projects_dado_2023 = [
        ("Thi công sửa chữa, nâng cấp nhà vận hành cống Trung Trang", "Sửa chữa công trình", cdt_dado, "12.04/2023/HĐ-TCXD", datetime(2023, 4, 12), 190000000, datetime(2023, 5, 24), datetime(2023, 5, 24), "1C23TDS-00000007\n24/05/2023", 175487037, 14038963, 189526000, 189526000, 0, "Đã nghiệm thu quyết toán"),
        ("Thi công công trình: Sửa chữa kênh tưới sau trạm bơm Tú Đôi 1", "Xây lắp kênh mương", cdt_dado, "15.04/2023/HĐ-TCXD", datetime(2023, 4, 15), 405000000, datetime(2023, 5, 29), datetime(2023, 5, 29), "1C23TDS-00000008\n29/05/2023", 370619444, 29649556, 400269000, 400269000, 0, "Đã nghiệm thu quyết toán"),
        ("Thi công công trình: Sửa chữa kênh tưới sau trạm bơm Tú Đôi 2", "Xây lắp kênh mương", cdt_dado, "15.04.1/2023/HĐ-TCXD", datetime(2023, 4, 15), 355000000, datetime(2023, 5, 29), datetime(2023, 5, 29), "1C23TDS-00000009\n29/05/2023", 326358333, 26108667, 352467000, 352467000, 0, "Đã nghiệm thu quyết toán"),
        ("Thi công công trình: Nạo vét, đắp bờ kênh hút trạm bơm Nãi Sơn 3", "Nạo vét đắp bờ", cdt_dado, "18.05/2023/HĐ-TCXD", datetime(2023, 5, 18), 405000000, datetime(2023, 7, 28), datetime(2023, 7, 28), "1C23TDS-00000014\n28/07/2023", 371698148, 29735852, 401434000, 401434000, 0, "Đã nghiệm thu thanh lý HĐ"),
        ("Thi công công trình: Sửa chữa đột xuất kênh Gốc Đa phục vụ sản xuất", "Sửa chữa đột xuất", cdt_dado, "20.06/2023/HĐ-TCXD", datetime(2023, 6, 20), 128500000, datetime(2023, 8, 10), datetime(2023, 8, 10), "1C23TDS-00000020\n10/08/2023", 118479630, 9478370, 127958000, 127958000, 0, "Đã nghiệm thu thanh toán"),
        ("Thi công công trình: Nạo vét, đắp bờ kênh sau cống Cầm Cập (L=1490m), P. Hải Thành", "Nạo vét đắp bờ", cdt_dado, "29.6/2023/HĐ-TCXD", datetime(2023, 6, 29), 495342000, datetime(2023, 11, 5), datetime(2023, 11, 5), "1C23TTS-00000001\n05/11/2023", 458159259, 36652741, 494812000, 494812000, 0, "QĐ phê duyệt QT số 689/QĐ-TLĐ"),
        ("Nạo vét, đắp bờ kênh Đại Trà 2, xã Đông Phương, huyện Kiến Thụy", "Nạo vét đắp bờ", cdt_dado, "25.06/2023/HĐ-TCXD", datetime(2023, 6, 25), 402000000, datetime(2023, 8, 16), datetime(2023, 8, 16), "1C23TDS-00000022\n16/08/2023", 370252044, 29620163, 399872207, 399872207, 0, "Đã nghiệm thu quyết toán"),
        ("Gia công, cung cấp kết cấu thép trạm bơm An Lão", "Cơ khí xây dựng", cdt_dado, "15.08/2023/HĐ-VTTB", datetime(2023, 8, 15), 22500000, datetime(2023, 8, 18), datetime(2023, 8, 18), "1C23TDS-00000023\n18/08/2023", 20376889, 1630151, 22007040, 22007040, 0, "Đã hoàn thành bàn giao"),
        ("Thi công công trình: Sửa chữa kênh tưới sau trạm bơm Lạng Côn", "Sửa chữa kênh tưới", cdt_dado, "7.4.6/2023/HĐ-TCXD", datetime(2023, 7, 4), 471608000, datetime(2023, 9, 17), datetime(2023, 9, 17), "1C23TDS-00000026\n17/09/2023", 434972222, 34797778, 469770000, 469770000, 0, "Đã nghiệm thu quyết toán"),
        ("Thi công công trình: Sửa chữa kênh tưới sau trạm bơm Núi Đối", "Sửa chữa kênh tưới", cdt_dado, "7.4.2/2023/HĐ-TCXD", datetime(2023, 7, 4), 481157000, datetime(2023, 9, 18), datetime(2023, 9, 18), "1C23TDS-00000027\n18/09/2023", 444374074, 35549926, 479924000, 479924000, 0, "Đã nghiệm thu quyết toán"),
        ("Thi công công trình: Sửa chữa kênh tưới sau trạm bơm Đại Đồng 1", "Sửa chữa kênh tưới", cdt_dado, "7.4.3/2023/HĐ-TCXD", datetime(2023, 7, 4), 400628000, datetime(2023, 9, 18), datetime(2023, 9, 18), "1C23TDS-00000028\n18/09/2023", 369689815, 29575185, 399265000, 399265000, 0, "Đã nghiệm thu quyết toán"),
        ("Nạo vét, đắp bờ kênh Mai Dương 5 (đoạn từ trạm bơm Đồng Đông)", "Nạo vét đắp bờ", cdt_dado, "25.5.1/2023/HĐ-TCXD", datetime(2023, 5, 25), 491837000, datetime(2023, 9, 18), datetime(2023, 9, 18), "1C23TDS-00000029\n18/09/2023", 453687037, 36294963, 489982000, 489982000, 0, "Đã nghiệm thu quyết toán"),
        ("Thi công công trình: Sửa chữa đột xuất kênh Thuận Thiên phục vụ cấp bách", "Sửa chữa đột xuất", cdt_dado, "04.07/2023/HĐ-TCXD", datetime(2023, 7, 4), 273869000, datetime(2023, 9, 18), datetime(2023, 9, 18), "1C23TDS-00000030\n18/09/2023", 253091667, 20247333, 273339000, 273339000, 0, "Đã nghiệm thu quyết toán"),
        ("Thi công công trình: Nạo vét, đắp bờ kênh hút trạm bơm Xuân Úc", "Nạo vét đắp bờ", cdt_dado, "04.07.1/2023/HĐ-TCXD", datetime(2023, 7, 4), 265957000, datetime(2023, 9, 18), datetime(2023, 9, 18), "1C23TDS-00000031\n18/09/2023", 245965741, 19677259, 265643000, 265643000, 0, "Đã nghiệm thu quyết toán"),
        ("Nạo vét, đắp bờ kênh Thượng Lĩnh 2 (đoạn từ kênh Mai Dương 4)", "Nạo vét đắp bờ", cdt_dado, "20.07/2023/HĐ-TCXD", datetime(2023, 7, 20), 480435000, datetime(2023, 10, 4), datetime(2023, 10, 4), "1C23TDS-00000038\n04/10/2023", 444356481, 35548519, 479905000, 479905000, 0, "Đã nghiệm thu quyết toán"),
        ("Sửa chữa kênh tưới sau trạm bơm Đoàn Xá 1 (sau bể xả)", "Sửa chữa kênh tưới", cdt_dado, "21.12.2/2022/HĐ-TCXD", datetime(2022, 12, 21), 430657000, datetime(2023, 10, 17), datetime(2023, 10, 17), "1C23TDS-00000040\n17/10/2023", 387033333, 30962667, 417996000, 417996000, 0, "Đã nghiệm thu quyết toán"),
        ("Nạo vét, đắp bờ kênh hút trạm bơm Trà Phương 1 (L = 268M)", "Nạo vét đắp bờ", cdt_dado, "24.07/2023/HĐ-TCXD", datetime(2023, 7, 24), 118175000, datetime(2023, 10, 17), datetime(2023, 10, 17), "1C23TDS-00000041\n17/10/2023", 108194444, 8655556, 116850000, 116850000, 0, "Đã nghiệm thu quyết toán"),
        ("Nạo vét, đắp bờ kênh Đức Phong 4 (đoạn cách cao tốc 150m)", "Nạo vét đắp bờ", cdt_dado, "22.07/2023/HĐ-TCXD", datetime(2023, 7, 22), 491944000, datetime(2023, 10, 17), datetime(2023, 10, 17), "1C23TDS-00000042\n17/10/2023", 453050000, 36244000, 489294000, 489294000, 0, "Đã nghiệm thu quyết toán"),
        ("Thi công công trình: Nạo vét, đắp bờ kênh Đức Phong 1", "Nạo vét đắp bờ", cdt_dado, "21.07/2023/HĐ-TCXD", datetime(2023, 7, 21), 490724000, datetime(2023, 11, 13), datetime(2023, 11, 13), "1C23TDS-00000044\n13/11/2023", 453147222, 36251778, 489399000, 489399000, 0, "Đã nghiệm thu quyết toán"),
        ("Thi công công trình: Sửa chữa kênh tưới sau trạm bơm Đại Trà 1", "Sửa chữa kênh tưới", cdt_dado, "23.07/2023/HĐ-TCXD", datetime(2023, 7, 23), 490046000, datetime(2023, 11, 11), datetime(2023, 11, 11), "1C23TDS-00000045\n11/11/2023", 452623148, 36209852, 488833000, 488833000, 0, "Đã nghiệm thu quyết toán"),
        ("Thi công công trình: Nạo vét, đắp bờ kênh hút trạm bơm Cây Đa", "Nạo vét đắp bờ", cdt_dado, "15.9/2023/HĐ-TCXD", datetime(2023, 9, 15), 275990000, datetime(2023, 11, 14), datetime(2023, 11, 14), "1C23TDS-00000046\n14/11/2023", 254319444, 20345556, 274665000, 274665000, 0, "Đã nghiệm thu quyết toán"),
        ("Nạo vét, đắp bờ kênh Thượng Lĩnh 3 (Đợt 1)", "Nạo vét đắp bờ", cdt_dado, "10.10/2023/HĐ-TCXD", datetime(2023, 10, 10), 750000000, datetime(2023, 11, 15), datetime(2023, 11, 15), "1C23TDS-00000047\n15/11/2023", 461500000, 36920000, 498420000, 498420000, 0, "Nghiệm thu khối lượng Đợt 1"),
        ("Nạo vét, đắp bờ kênh Thượng Lĩnh 3 (Quyết toán)", "Nạo vét đắp bờ", cdt_dado, "10.10/2023/HĐ-TCXD", datetime(2023, 10, 10), 750000000, datetime(2023, 12, 8), datetime(2023, 12, 8), "1C23TDS-00000048\n08/12/2023", 231373148, 18509852, 249883000, 249883000, 0, "Nghiệm thu thanh lý quyết toán"),
        ("Thi công công trình: Sửa chữa kênh tưới sau trạm bơm Lão Phú 2", "Sửa chữa kênh tưới", cdt_dado, "16.11/2023/HĐ-TCXD", datetime(2023, 11, 16), 251986000, datetime(2023, 12, 13), datetime(2023, 12, 13), "1C23TDS-00000049\n13/12/2023", 231300926, 18504074, 249805000, 249805000, 0, "Đã nghiệm thu quyết toán"),
        ("Thi công công trình: Nạo vét, đắp bờ kênh hút trạm bơm Kim Đới", "Nạo vét đắp bờ", cdt_dado, "19.10/2023/HĐ-TCXD", datetime(2023, 10, 19), 200450000, datetime(2023, 12, 13), datetime(2023, 12, 13), "1C23TDS-00000050\n13/12/2023", 184865741, 14789259, 199655000, 199655000, 0, "Đã nghiệm thu quyết toán"),
    ]

    # Các công trình của các chủ đầu tư khác năm 2023
    projects_other_2023 = [
        ("Thi công điện nước & kết cấu sắt thép CA xã Ngũ Phúc", "Xây dựng hoàn thiện", "CÔNG TY CỔ PHẦN XÂY DỰNG RẠNG ĐÔNG", "01.2023/HĐ-RĐ-NP", datetime(2023, 2, 10), 1850000000, datetime(2023, 10, 29), datetime(2023, 10, 29), "1C23TDS-Nhiều đợt\n2023", 1712962963, 137037037, 1850000000, 1850000000, 0, "Đã hoàn thành bàn giao"),
        ("Cung cấp vật tư, dây điện Trung tâm Y tế huyện Kiến Thụy", "Cơ điện công trình", "CÔNG TY CỔ PHẦN XÂY DỰNG RẠNG ĐÔNG", "02.2023/HĐ-RĐ-TTYT", datetime(2023, 3, 15), 2350000000, datetime(2023, 11, 20), datetime(2023, 11, 20), "1C23TDS-Nhiều đợt\n2023", 2175925926, 174074074, 2350000000, 2350000000, 0, "Đã hoàn thành nghiệm thu"),
        ("Thi công điện nước công trình CA xã Kiến Quốc", "Cơ điện công trình", "CÔNG TY CỔ PHẦN XÂY DỰNG RẠNG ĐÔNG", "03.2023/HĐ-RĐ-KQ", datetime(2023, 4, 20), 1250000000, datetime(2023, 12, 15), datetime(2023, 12, 15), "1C23TDS-Nhiều đợt\n2023", 1157407407, 92592593, 1250000000, 1250000000, 0, "Đã hoàn thành bàn giao"),
        ("Gia công cơ khí, nhôm kính và kết cấu thép các dự án Rạng Đông", "Gia công lắp đặt", "CÔNG TY CỔ PHẦN XÂY DỰNG RẠNG ĐÔNG", "04.2023/HĐ-RĐ-ĐS", datetime(2023, 1, 12), 1719416741, datetime(2023, 12, 25), datetime(2023, 12, 25), "1C23TDS-Nhiều đợt\n2023", 1592052538, 127364203, 1719416741, 1719416741, 0, "Đã quyết toán hoàn tất"),
        ("Cải tạo, sửa chữa văn phòng làm việc Duy Khánh", "Sửa chữa hoàn thiện", "CÔNG TY TNHH DUY KHÁNH", "15.05/2023/HĐ-DK", datetime(2023, 5, 15), 78489000, datetime(2023, 7, 20), datetime(2023, 7, 20), "1C23TDS-00000021\n20/07/2023", 72675000, 5814000, 78489000, 78489000, 0, "Đã thanh toán đủ"),
        ("Gia công cơ khí và kết cấu thép Trung Nghĩa", "Cơ khí xây dựng", "CÔNG TY CP XD THƯƠNG MẠI TRUNG NGHĨA", "10.08/2023/HĐ-TN", datetime(2023, 8, 10), 54672450, datetime(2023, 12, 26), datetime(2023, 12, 26), "1C23TDS-00000052,53,54\n2023", 50622639, 4049811, 54672450, 54672450, 0, "Đã xuất đủ 3 hóa đơn"),
        ("Thi công lắp đặt thiết bị cơ điện Nam Hải", "Cơ điện công trình", "CÔNG TY TNHH XD PHÁT TRIỂN NAM HẢI", "22.03/2023/HĐ-NH", datetime(2023, 3, 22), 53277400, datetime(2023, 5, 12), datetime(2023, 5, 12), "1C23TDS-00000012\n12/05/2023", 49330926, 3946474, 53277400, 53277400, 0, "Đã hoàn thành bàn giao"),
        ("Cung cấp vật tư và sửa chữa kho Lương thực Đông Bắc", "Sửa chữa kho bãi", "CÔNG TY CỔ PHẦN LƯƠNG THỰC ĐÔNG BẮC", "15.11/2023/HĐ-ĐB", datetime(2023, 11, 15), 24253776, datetime(2023, 12, 20), datetime(2023, 12, 20), "1C23TDS-00000051\n20/12/2023", 22457200, 1796576, 24253776, 24253776, 0, "Đã thanh toán đủ"),
    ]

    all_2023 = projects_dado_2023 + projects_other_2023
    r_idx = 5
    for stt, item in enumerate(all_2023, 1):
        name, goi, cdt, hd_num, d_ky, gt, d_nt, d_bg, inv_str, pre, vat_amt, tot, tt_amt, no_amt, note = item
        ws_2023.cell(r_idx, 1, stt)
        ws_2023.cell(r_idx, 2, name)
        ws_2023.cell(r_idx, 3, goi)
        ws_2023.cell(r_idx, 4, cdt)
        ws_2023.cell(r_idx, 5, hd_num)
        ws_2023.cell(r_idx, 6, d_ky)
        ws_2023.cell(r_idx, 7, gt)
        ws_2023.cell(r_idx, 13, d_nt)
        ws_2023.cell(r_idx, 14, d_bg)
        ws_2023.cell(r_idx, 15, inv_str)
        ws_2023.cell(r_idx, 17, pre)
        ws_2023.cell(r_idx, 18, vat_amt)
        ws_2023.cell(r_idx, 19, tot)
        ws_2023.cell(r_idx, 21, tt_amt)
        ws_2023.cell(r_idx, 22, no_amt)
        ws_2023.cell(r_idx, 24, note)
        r_idx += 1

    ws_2023.cell(3, 17, f"=SUM(Q5:Q{r_idx-1})")
    ws_2023.cell(3, 19, f"=SUM(S5:S{r_idx-1})")
    logger.info("Hoàn tất Sheet 2023: Đã tách thành %d dòng công trình riêng biệt.", r_idx - 5)

    # =============================================================
    # 2. TÁCH RỜI CÁC CÔNG TRÌNH ĐA ĐỘ NĂM 2024 (Sheet 2024)
    # =============================================================
    logger.info("--- Bắt đầu hoàn thiện Sheet 2024: Tách từng công trình Đa Độ ---")
    ws_2024 = wb["2024"]

    # Đa Độ 2024 thêm các dòng công trình cụ thể
    # Rows 18 -> 23 thay thế bằng các công trình Đa Độ đã bóc tách:
    extra_dado_2024 = [
        (10, "Thi công sửa chữa, lắp đặt hệ thống điện chiếu sáng xã Du Lễ", "Điện chiếu sáng", cdt_dado, "10.01/2024/HĐGK-ĐS", datetime(2024, 1, 10), 258658000, datetime(2024, 1, 12), "1C24TDS-00000001\n12/01/2024", 239500000, 19158000, 258658000, "Đã hoàn thành bàn giao"),
        (11, "Nạo vét, duy tu khơi thông dòng chảy kênh Úc Gián", "Nạo vét đắp bờ", cdt_dado, "15.03/2024/HĐTCXD", datetime(2024, 3, 15), 43960000, datetime(2024, 4, 7), "1C24TDS-00000009\n07/04/2024", 40703704, 3256296, 43960000, "Đã quyết toán hoàn thành"),
        (12, "Thi công sửa chữa tuyến kênh ngăn mặn xã Đại Hợp", "Thủy lợi ngăn mặn", cdt_dado, "25.04/2024/HĐTCXD", datetime(2024, 4, 25), 485848000, datetime(2024, 5, 22), "1C24TDS-00000012\n22/05/2024", 449859259, 35988741, 485848000, "Đã quyết toán thanh toán"),
        (13, "Nạo vét, duy tu nắn dòng tuyến kênh Ngọc Chử", "Nạo vét đắp bờ", cdt_dado, "10.06/2024/HĐTCXD", datetime(2024, 6, 10), 481036000, datetime(2024, 7, 4), "1C24TDS-00000030\n04/07/2024", 445403704, 35632296, 481036000, "Đã quyết toán hoàn thành"),
        (14, "Gia công lắp dựng kết cấu thép Cống B2 và Cống Cầu Đen", "Kết cấu thép thủy lợi", "CHI NHÁNH CÔNG TY TNHH MTV KTCT THỦY LỢI ĐA ĐỘ - XÍ NGHIỆP XÂY LẮP", "16.10/ĐS-XNXL 2024", datetime(2024, 10, 16), 238921000, datetime(2024, 12, 6), "1C24TTS-0011,12\n06/12/2024", 221223148, 17697852, 238921000, "Đã quyết toán 2 đợt HĐ 11, 12"),
        (15, "Cung cấp thép hình, thép tấm gia công Cống Mông Thượng & Tiểu Trà", "Cung cấp vật tư kết cấu", "CHI NHÁNH CÔNG TY TNHH MTV KTCT THỦY LỢI ĐA ĐỘ - XÍ NGHIỆP XÂY LẮP", "17.10/ĐS-XNXL 2024", datetime(2024, 10, 17), 219669380, datetime(2024, 12, 6), "1C24TTS-0013,14\n06/12/2024", 203397574, 16271806, 219669380, "Đã quyết toán 2 đợt HĐ 13, 14"),
        (16, "Thi công Showroom ô tô Vượng An Phát", "Xây dựng hoàn thiện", "CÔNG TY TNHH VƯỢNG AN PHÁT", "12.04/2024/HĐTC", datetime(2024, 4, 12), 652136400, datetime(2024, 7, 15), "1C24TDS-00000024\n15/07/2024", 603830000, 48306400, 652136400, "Hoàn thành bàn giao"),
        (17, "Sửa chữa, cải tạo các phòng giao dịch Agribank Kiến Thụy", "Sửa chữa cải tạo", "NGÂN HÀNG NÔNG NGHIỆP & PTNT VIỆT NAM", "15.07/2024/HĐ-AGRIBANK", datetime(2024, 7, 15), 145800000, datetime(2024, 9, 9), "1C24TDS-0037,38,39\n09/09/2024", 135000000, 10800000, 145800000, "Đã quyết toán thanh toán"),
        (18, "Sơn sửa, nâng cấp trụ sở PGD Ngân hàng Chính sách xã hội Kiến Thụy", "Sơn bả hoàn thiện", "PGD NGÂN HÀNG CHÍNH SÁCH XÃ HỘI HUYỆN KIẾN THỤY", "20.11/2024/HĐTC", datetime(2024, 11, 20), 49896000, datetime(2024, 12, 22), "1C24TTS-00000020\n22/12/2024", 46200000, 3696000, 49896000, "Hoàn thành 100%"),
        (19, "Cung cấp và lắp đặt kết cấu nhà xưởng Bao Bì Voion", "Kết cấu thép", "CÔNG TY TNHH BAO BÌ VOION", "10.08/2024/HĐ-VOION", datetime(2024, 8, 10), 200000000, datetime(2024, 9, 29), "1C24TDS-00000042\n29/09/2024", 185185185, 14814815, 200000000, "Đã xuất hóa đơn quyết toán"),
        (20, "Gia công cơ khí, nhôm kính và vách ngăn các công trình Rạng Đông", "Gia công lắp đặt", "CÔNG TY CỔ PHẦN XÂY DỰNG RẠNG ĐÔNG", "01.2024/HĐ-RĐ-ĐS", datetime(2024, 1, 10), 1359184597, datetime(2024, 12, 30), "1C24TDS-19 đợt\n2024", 1258504256, 100680341, 1359184597, "Đã quyết toán đủ 19 đợt"),
        (21, "Thi công hạ tầng, san lấp và vận chuyển đất bùn Minh Tiến", "San lấp hạ tầng", "CÔNG TY TNHH VẬN TẢI & XD MINH TIẾN", "05.05/2024/HĐ-MT", datetime(2024, 5, 5), 541302270, datetime(2024, 12, 29), "1C24TTS-8 đợt\n2024", 501205806, 40096464, 541302270, "Đã quyết toán đủ 8 đợt"),
        (22, "Thi công xử lý nền móng công trình Hải Phòng", "Xử lý nền móng", "CÔNG TY CP XD VÀ XỬ LÝ NỀN MÓNG HP", "12.06/2024/HĐ-NLM", datetime(2024, 6, 12), 362952000, datetime(2024, 8, 20), "1C24TDS-35,36\n20/08/2024", 336066667, 26885333, 362952000, "Đã quyết toán thanh toán"),
        (23, "Thi công xây lắp gói thầu công trình số 5", "Xây lắp dân dụng", "CÔNG TY CP ĐẦU TƯ XÂY DỰNG SỐ 5 HP", "18.09/2024/HĐ-XD5", datetime(2024, 9, 18), 320174470, datetime(2024, 12, 1), "1C24TTS-00000009\n01/12/2024", 296457843, 23716627, 320174470, "Đã hoàn thành bàn giao"),
        (24, "Lắp đặt hệ thống chiếu sáng đô thị NTM Nam Hải", "Cơ điện chiếu sáng", "CÔNG TY CỔ PHẦN QUỐC TẾ NAM HẢI", "15.10/2024/HĐ-NH", datetime(2024, 10, 15), 108000000, datetime(2024, 12, 25), "1C24TTS-00000022\n25/12/2024", 100000000, 8000000, 108000000, "Đã thanh toán đủ"),
    ]

    curr_24 = 18
    for item in extra_dado_2024:
        stt, name, goi, cdt, hd_num, d_ky, gt, d_nt, inv_str, pre, vat_amt, tot, note = item
        ws_2024.cell(curr_24, 1, stt)
        ws_2024.cell(curr_24, 2, name)
        ws_2024.cell(curr_24, 3, goi)
        ws_2024.cell(curr_24, 4, cdt)
        ws_2024.cell(curr_24, 5, hd_num)
        ws_2024.cell(curr_24, 6, d_ky)
        ws_2024.cell(curr_24, 7, d_ky)
        ws_2024.cell(curr_24, 12, d_nt)
        ws_2024.cell(curr_24, 14, gt)
        ws_2024.cell(curr_24, 15, pre)
        ws_2024.cell(curr_24, 17, note)
        ws_2024.cell(curr_24, 18, inv_str)
        ws_2024.cell(curr_24, 19, vat_amt)
        ws_2024.cell(curr_24, 20, tot)
        curr_24 += 1

    ws_2024.cell(3, 15, f"=SUM(O9:O{curr_24-1})")
    ws_2024.cell(3, 20, f"=SUM(T9:T{curr_24-1})")
    logger.info("Hoàn tất Sheet 2024: %d dòng công trình riêng biệt.", curr_24 - 9)

    # =============================================================
    # 3. ĐỊNH DẠNG VÀ CÂN CHỈNH GIAO DIỆN CHUẨN ĐỒNG NHẤT
    # =============================================================
    ws_src = wb["2026"]
    header_font = Font(name="Times New Roman", size=11, bold=True, color="000000")
    header_fill = PatternFill(start_color="D9E1F2", end_color="D9E1F2", fill_type="solid")
    data_font = Font(name="Times New Roman", size=11, bold=False, color="000000")
    thin_border = Border(
        left=Side(style="thin", color="BFBFBF"),
        right=Side(style="thin", color="BFBFBF"),
        top=Side(style="thin", color="BFBFBF"),
        bottom=Side(style="thin", color="BFBFBF")
    )

    for target_name in ["2023", "2022"]:
        ws = wb[target_name]
        for c in range(1, 26):
            col_letter = get_column_letter(c)
            src_width = ws_src.column_dimensions[col_letter].width
            ws.column_dimensions[col_letter].width = src_width if src_width else 18

        for r in range(1, 4):
            for c in range(1, 25):
                cell = ws.cell(r, c)
                cell.font = header_font
                cell.fill = header_fill
                cell.alignment = Alignment(horizontal="center", vertical="center", wrap_text=True)
                cell.border = thin_border

        for r in range(5, ws.max_row + 1):
            for c in range(1, 25):
                cell = ws.cell(r, c)
                cell.font = data_font
                cell.border = thin_border
                if c in [1, 6, 8, 9, 10, 13, 14]:
                    cell.alignment = Alignment(horizontal="center", vertical="center")
                elif c in [7, 12, 16, 17, 18, 19, 20, 21, 22]:
                    cell.alignment = Alignment(horizontal="right", vertical="center")
                    if isinstance(cell.value, (int, float)):
                        cell.number_format = "#,##0"
                else:
                    cell.alignment = Alignment(horizontal="left", vertical="center", wrap_text=True)

    target_split = "C:/Projects/DSCons/CongTrinh/Bảng theo dõi công trình - TÁCH CÔNG TRÌNH ĐA ĐỘ.xlsx"
    wb.save(target_split)
    logger.info("Đã lưu thành công file Excel sau khi tách rời công trình tại: %s", target_split)

    try:
        wb.save(EXCEL_PATH)
        logger.info("Đã ghi đè trực tiếp vào file chính: %s", EXCEL_PATH)
    except PermissionError:
        logger.warning("File %s đang được mở trong WPS Office/Excel. Đã lưu bản tách rời mới nhất tại: %s", EXCEL_PATH, target_split)


if __name__ == "__main__":
    update_workbook()
