# -*- coding: utf-8 -*-
import docx
from docx import Document
from docx.shared import Inches, Pt, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml import parse_xml
from docx.oxml.ns import nsdecls

def create_docx_report():
    doc = Document()

    # Căn lề trang chuẩn 2cm (0.8 inch)
    for section in doc.sections:
        section.top_margin = Inches(0.8)
        section.bottom_margin = Inches(0.8)
        section.left_margin = Inches(0.8)
        section.right_margin = Inches(0.8)

    # Style mặc định Times New Roman, đen trắng
    style = doc.styles['Normal']
    font = style.font
    font.name = 'Times New Roman'
    font.size = Pt(10.5)
    font.color.rgb = RGBColor(0, 0, 0)

    # Đóng khung viền ô bảng (nét đơn mảnh, đen)
    def set_cell_border(cell):
        tcPr = cell._tc.get_or_add_tcPr()
        tcBorders = parse_xml(
            f'<w:tcBorders {nsdecls("w")}>\n'
            f'<w:top w:val="single" w:sz="4" w:space="0" w:color="000000"/>\n'
            f'<w:left w:val="single" w:sz="4" w:space="0" w:color="000000"/>\n'
            f'<w:bottom w:val="single" w:sz="4" w:space="0" w:color="000000"/>\n'
            f'<w:right w:val="single" w:sz="4" w:space="0" w:color="000000"/>\n'
            f'</w:tcBorders>'
        )
        tcPr.append(tcBorders)

    # Nền header bảng: xám nhạt không màu (F2F2F2)
    def set_cell_shading(cell, color_hex="F2F2F2"):
        tcPr = cell._tc.get_or_add_tcPr()
        shd = parse_xml(f'<w:shd {nsdecls("w")} w:fill="{color_hex}"/>')
        tcPr.append(shd)

    # Tiêu đề tài liệu
    title_p = doc.add_paragraph()
    title_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    title_p.paragraph_format.space_before = Pt(0)
    title_p.paragraph_format.space_after = Pt(3)
    r_title = title_p.add_run('BÁO CÁO TỔNG HỢP LIÊN HỆ CÔNG TÁC HÀNG TUẦN')
    r_title.bold = True
    r_title.font.size = Pt(14)
    r_title.font.name = 'Times New Roman'

    sub_p = doc.add_paragraph()
    sub_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    sub_p.paragraph_format.space_after = Pt(12)
    r_sub1 = sub_p.add_run('Đơn vị: ')
    r_sub1.font.name = 'Times New Roman'
    r_sub1_b = sub_p.add_run('Phòng R&D và QA')
    r_sub1_b.bold = True
    r_sub1_b.font.name = 'Times New Roman'
    r_sub2 = sub_p.add_run('  |  Thời gian: ')
    r_sub2.font.name = 'Times New Roman'
    r_sub2_b = sub_p.add_run('Tuần lễ 07/09 -> 12/09/2026')
    r_sub2_b.bold = True
    r_sub2_b.font.name = 'Times New Roman'
    r_sub3 = sub_p.add_run('  |  Ngày cập nhật: ')
    r_sub3.font.name = 'Times New Roman'
    r_sub3_b = sub_p.add_run('14/09/2026\n')
    r_sub3_b.bold = True
    r_sub3_b.font.name = 'Times New Roman'
    r_sub4 = sub_p.add_run('(Tổng hợp phân loại: Các việc chưa thực hiện/quá hạn, việc đã hoàn thành và việc mới phát sinh chưa tới hạn)')
    r_sub4.italic = True
    r_sub4.font.size = Pt(9.5)
    r_sub4.font.name = 'Times New Roman'

    def create_table(headers, col_widths, rows_data):
        table = doc.add_table(rows=len(rows_data) + 1, cols=len(headers))
        table.alignment = WD_TABLE_ALIGNMENT.CENTER
        table.autofit = False

        # Header
        hdr_cells = table.rows[0].cells
        for i, h in enumerate(headers):
            hdr_cells[i].text = h
            hdr_cells[i].paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
            for r in hdr_cells[i].paragraphs[0].runs:
                r.bold = True
                r.font.name = 'Times New Roman'
                r.font.size = Pt(10)
            set_cell_border(hdr_cells[i])
            set_cell_shading(hdr_cells[i], 'F2F2F2')
            hdr_cells[i].width = col_widths[i]

        # Data
        for r_idx, row_data in enumerate(rows_data):
            row_cells = table.rows[r_idx + 1].cells
            for c_idx, val in enumerate(row_data):
                cell = row_cells[c_idx]
                cell.text = str(val) if val is not None else ''
                p = cell.paragraphs[0]
                p.paragraph_format.space_before = Pt(2.5)
                p.paragraph_format.space_after = Pt(2.5)
                p.paragraph_format.line_spacing = 1.15

                # Căn lề
                if c_idx in [0, 4]:  # STT, Hạn/Ngày
                    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
                elif c_idx in [1, 2]:  # Phòng ban, Người nhận
                    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
                else:
                    p.alignment = WD_ALIGN_PARAGRAPH.LEFT

                for r in p.runs:
                    r.font.name = 'Times New Roman'
                    r.font.size = Pt(9.5)

                set_cell_border(cell)
                cell.width = col_widths[c_idx]

        p_spacer = doc.add_paragraph()
        p_spacer.paragraph_format.space_after = Pt(4)

    # --- MỤC I ---
    p1 = doc.add_paragraph()
    p1.paragraph_format.space_before = Pt(6)
    p1.paragraph_format.space_after = Pt(3)
    r_p1 = p1.add_run('I. CÁC HẠNG MỤC CHƯA ĐƯỢC THỰC HIỆN / QUÁ HẠN / ĐANG VƯỚNG MẮC')
    r_p1.bold = True
    r_p1.font.size = Pt(11)
    r_p1.font.name = 'Times New Roman'

    headers_1 = ['STT', 'Phòng Ban', 'Người Nhận', 'Nội Dung Công Việc', 'Hạn / Ngày', 'Tình Trạng & Ghi Chú Chi Tiết']
    widths_1 = [Inches(0.4), Inches(1.1), Inches(0.9), Inches(2.3), Inches(0.9), Inches(1.8)]

    data_1 = [
        [
            '1', 'KỸ THUẬT', 'HỌC',
            'Sơn nhúng trong (Mẫu 1 180826)\n(Ngày liên hệ: 19/08/2026 - Phiếu thử mẫu)',
            '24/08/2026',
            'CHƯA THỬ: Quá hạn kéo dài, Kỹ thuật chưa triển khai thử mẫu và chưa báo cáo kết quả.'
        ],
        [
            '2', 'KỸ THUẬT', 'HỌC',
            'Bóng màu Mekong 12/17H - Gom gọn Cthuc bóng trắng\n(Ngày liên hệ: 11/08/2026 - Phiếu thử mẫu)',
            '15/08/2026',
            'Quá hạn 30 ngày. Chưa có thông tin phản hồi kết quả từ bộ phận Kỹ thuật.'
        ],
        [
            '3', 'KỸ THUẬT', 'HỌC',
            'Lót nhúng BT 0126H trắng thử xử lý lỗ ghim hạt gỗ Beech Hành Mỹ\n(Ngày liên hệ: 13/08/2026 - Phiếu thử mẫu)',
            '20/08/2026',
            'Quá hạn 25 ngày. Chưa có thông tin phản hồi kết quả từ bộ phận Kỹ thuật.'
        ],
        [
            '4', 'SN', 'MR DƯƠNG',
            'Lót S03 2410H tăng độ phủ\n(Ngày liên hệ: 25/08/2026 - SX thử nghiệm)',
            '25/08/2026',
            'CHƯA SẢN XUẤT: Xưởng Sơn Nước chưa tiến hành sản xuất thử nghiệm.'
        ],
        [
            '5', 'QC1', 'MRS YẾN',
            'Xanh lá GN 20 chỉnh xử lý tồn kho\n(Ngày liên hệ: 21/08/2026 - Phiếu thử mẫu)',
            '21/08/2026',
            'Chưa có phản hồi / Chưa có thông tin kết quả xử lý từ phòng QC1.'
        ],
        [
            '6', 'SN', 'MR DƯƠNG',
            'Cách pha loãng phụ gia sơn nước: 093; 204\n(Ngày liên hệ: 05/09/2026 - Văn thư nội bộ)',
            '05/09/2026',
            'Chưa có phản hồi từ Xưởng Sơn Nước.'
        ],
        [
            '7', 'KỸ THUẬT', 'HỌC',
            'Lót quét cọ trắng chỉnh cho Mekong (Tuần 24-29/8)\n(Ngày liên hệ: 29/08/2026 - Phiếu thử mẫu)',
            '07/09/2026',
            'Đã phản hồi giảm 60-70% bọt, vẫn còn bọt -> R&D tiếp tục gửi mẫu điều chỉnh mới ngày 09/09/2026 để xử lý dứt điểm.'
        ]
    ]
    create_table(headers_1, widths_1, data_1)

    # --- MỤC II ---
    p2 = doc.add_paragraph()
    p2.paragraph_format.space_before = Pt(6)
    p2.paragraph_format.space_after = Pt(3)
    r_p2 = p2.add_run('II. CÁC HẠNG MỤC ĐÃ THỰC HIỆN XONG TRONG TUẦN QUA (TUẦN 07/09 -> 12/09/2026)')
    r_p2.bold = True
    r_p2.font.size = Pt(11)
    r_p2.font.name = 'Times New Roman'

    headers_2 = ['STT', 'Phòng Ban', 'Người Nhận', 'Nội Dung Công Việc', 'Ngày LH', 'Kết Quả Thực Hiện Hoàn Thành']
    widths_2 = [Inches(0.4), Inches(1.1), Inches(0.9), Inches(2.3), Inches(0.9), Inches(1.8)]

    data_2 = [
        [
            '1', 'SN', 'MR DƯƠNG',
            'Theo dõi sản xuất Nhựa Stain BT 2402H BC\n(Trực tiếp)',
            '11/09/2026',
            'ĐÃ SẢN XUẤT OK đạt yêu cầu chất lượng xuất xưởng.'
        ],
        [
            '2', 'QC1', 'MRS YẾN',
            'Kết hợp thử lại quy trình độ bám trên nền mây Thịnh Việt',
            '03/09/2026',
            'KẾT QUẢ ĐẠT -> QC1 và Kỹ thuật đã đi thử nghiệm thực tế trực tiếp trên sản phẩm tại Thịnh Việt ngày 05/09/2026.'
        ],
        [
            '3', 'KỸ THUẬT', 'HỌC',
            'Bóng BEx 03 2402H 25% BC chỉnh tăng độ phủ, chống vàng cho Hành Mỹ',
            '29/08/2026',
            'ĐÃ PHẢN HỒI KẾT QUẢ ĐẠT (Khắc phục hoàn toàn sự cố màng sơn bị ngả vàng của đợt thử nghiệm trước).'
        ],
        [
            '4', 'QC2', 'MRS NAM',
            'Kiểm tra hàng SX cho Scansia (PU White) & Minh Dương (Bóng PU 0408 ABRNY)',
            '21/08/2026',
            'ĐÃ HOÀN THÀNH KIỂM TRA VÀ ĐÃ XUẤT GIAO HÀNG cho khách hàng.'
        ],
        [
            '5', 'QC2', 'MRS NAM',
            'Kiểm tra Ngăn dầu TB 2211H (trắng + tự nhiên) cthuc điều chỉnh & Lót NC Mod 1106',
            '27 - 28/08',
            'ĐÃ HOÀN THÀNH KIỂM TRA để chuẩn bị xuất giao hàng.'
        ],
        [
            '6', 'DB', 'MR THƯ',
            'Sản xuất Lót MC mod 1106 280826-l3 & Bóng PU OD 0408 ABR NY 270826-l2',
            '28/08/2026',
            'ĐÃ SẢN XUẤT XONG theo đúng kế hoạch.'
        ],
        [
            '7', 'SN', 'MR DƯƠNG',
            'Sản xuất Ngăn dầu TB 2211H và TB 2211H trắng\n(SX thử nghiệm)',
            '25/08/2026',
            'ĐÃ SẢN XUẤT XONG đạt yêu cầu.'
        ],
        [
            '8', 'KỸ THUẬT', 'HỌC',
            'Stain màu Mekong 176H (Mẫu 7-170826)',
            '18/08/2026',
            'Báo cáo ĐẠT -> Đã sản xuất xong và xuất tiếp lô thứ 2 giao cho Mekong.'
        ]
    ]
    create_table(headers_2, widths_2, data_2)

    # --- PHẦN III ---
    p3 = doc.add_paragraph()
    p3.paragraph_format.space_before = Pt(6)
    p3.paragraph_format.space_after = Pt(3)
    r_p3 = p3.add_run('III. CÁC HẠNG MỤC MỚI PHÁT SINH CHƯA TỚI HẠN (TUẦN 07/09 -> 12/09/2026)')
    r_p3.bold = True
    r_p3.font.size = Pt(11)
    r_p3.font.name = 'Times New Roman'

    headers_3 = ['STT', 'Phòng Ban', 'Người Nhận', 'Nội Dung Công Việc', 'Thời Hạn', 'Tình Trạng & Tiến Độ Hiện Tại']
    widths_3 = [Inches(0.4), Inches(1.1), Inches(0.9), Inches(2.3), Inches(0.9), Inches(1.8)]

    data_3 = [
        [
            '1', 'KỸ THUẬT', 'HỌC',
            'Lót quét cọ điều chỉnh bọt Mekong\n(Ngày gửi: 09/09/2026 - Phiếu thử mẫu)',
            '15/09/2026',
            'Chưa tới hạn phản hồi (Hạn ngày mai 15/09/2026).'
        ],
        [
            '2', 'KỸ THUẬT', 'HỌC',
            'Bóng PU 0408 ABR NY 5% làm mẫu màu Minh Dương làm bóng 2 lần 1 loại (4280826)\n(Ngày gửi: 11/09/2026)',
            '15/09/2026',
            'Chưa tới hạn phản hồi (Hạn ngày mai 15/09/2026).'
        ],
        [
            '3', 'KỸ THUẬT', 'HỌC',
            'BÓNG PU 0408 ABR NY 10% làm mẫu màu cho Liên Minh (120926)\n(Ngày gửi: 12/09/2026 - Phiếu thử mẫu)',
            '18/09/2026',
            'Chưa tới hạn phản hồi (Hạn 18/09/2026).'
        ],
        [
            '4', 'KỸ THUẬT', 'HỌC',
            'Bóng Roller Hành Mỹ - mẫu 6-080926\n(Ngày gửi: 12/09/2026 - Phiếu thử mẫu)',
            '15/09/2026',
            'Chưa tới hạn phản hồi (Hạn 15/09/2026).'
        ],
        [
            '5', 'QC2', 'MRS NAM',
            'LÓT NC T2012 MẪU 2.2.1-090926\n(Ngày gửi: 09/09/2026 - Phiếu thử mẫu)',
            '15/09/2026',
            'Chưa tới hạn phản hồi (Hạn ngày mai 15/09/2026).'
        ],
        [
            '6', 'QC2', 'MRS NAM',
            'BÓNG B06 1405H TTNL MẪU 1090926\n(Ngày gửi: 11/09/2026 - Phiếu thử mẫu)',
            '18/09/2026',
            'Chưa tới hạn phản hồi (Hạn 18/09/2026).'
        ],
        [
            '7', 'QC2', 'MRS NAM',
            'Lót nhúng BT 0126 trắng TTNL\n(Ngày gửi: 12/09/2026 - Phiếu thử mẫu)',
            '25/09/2026',
            'Chưa tới hạn phản hồi (Hạn 25/09/2026).'
        ],
        [
            '8', 'QC2 / SN', 'NAM / DƯƠNG',
            'Thông tin kiểm tra lô SP sử dụng nguyên liệu 4511 sậm màu\n(Ngày gửi: 12/09/2026)',
            '18/09/2026',
            'Mới gửi thông tin, QC2 và Xưởng Sơn Nước đang theo dõi kiểm tra chất lượng.'
        ],
        [
            '9', 'DB', 'MR THƯ',
            'Áp dụng sản xuất các sản phẩm điều chỉnh: NC Mod, CAXT, Dầu 04092K, PU HJFD...\n(Ngày gửi: 03/09 - 12/09/2026)',
            '-',
            'Xưởng ĐB đang áp dụng sản xuất bình thường.'
        ]
    ]
    create_table(headers_3, widths_3, data_3)

    out_file = 'Bao_cao_lien_he_cong_tac_14_09_2026.docx'
    doc.save(out_file)
    print(f'Done: {out_file}')

if __name__ == '__main__':
    create_docx_report()
