from docx import Document
from docx.shared import Inches, Pt, Cm, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn, nsdecls
from docx.oxml import parse_xml
import os

doc = Document()

# PAGE SETUP
section = doc.sections[0]
section.top_margin = Cm(2)
section.bottom_margin = Cm(2)
section.left_margin = Cm(2)
section.right_margin = Cm(2)

def remove_all_borders(table):
    for row in table.rows:
        for cell in row.cells:
            tc = cell._tc
            tcPr = tc.get_or_add_tcPr()
            tcBorders = parse_xml(
                f'<w:tcBorders {nsdecls("w")}>'
                f'<w:top w:val="none" w:sz="0" w:space="0" w:color="auto"/>'
                f'<w:left w:val="none" w:sz="0" w:space="0" w:color="auto"/>'
                f'<w:bottom w:val="none" w:sz="0" w:space="0" w:color="auto"/>'
                f'<w:right w:val="none" w:sz="0" w:space="0" w:color="auto"/>'
                f'</w:tcBorders>'
            )
            tcPr.append(tcBorders)

def add_run(paragraph, text, bold=False, size=10, font_name='Times New Roman', color=None):
    run = paragraph.add_run(text)
    run.font.name = font_name
    run._element.rPr.rFonts.set(qn('w:eastAsia'), 'Times New Roman')
    run.font.size = Pt(size)
    run.bold = bold
    if color:
        run.font.color.rgb = color
    return run

def set_spacing(paragraph, before=0, after=0):
    pf = paragraph.paragraph_format
    pf.space_before = Pt(before)
    pf.space_after = Pt(after)

# ===== HEADER TABLE =====
header_table = doc.add_table(rows=1, cols=3)
header_table.alignment = WD_TABLE_ALIGNMENT.CENTER
remove_all_borders(header_table)
header_table.columns[0].width = Cm(5)
header_table.columns[1].width = Cm(9)
header_table.columns[2].width = Cm(4.5)

# CELL 1 - Logo
cell1 = header_table.cell(0, 0)
logo_path = '/c/antigra-DS/CLAW_LAM_VIEC/Khach hang/DANH MUC SẢN PHẨM/btchem_logo_with_bg.jpg'
if os.path.exists(logo_path):
    p_logo = cell1.paragraphs[0]
    p_logo.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = p_logo.add_run()
    run.add_picture(logo_path, width=Cm(2.8))

p1b = cell1.add_paragraph()
p1b.alignment = WD_ALIGN_PARAGRAPH.CENTER
add_run(p1b, 'ISO 9001 - ISO 14001', size=8)
set_spacing(p1b, before=2, after=0)

# CELL 2 - Company info
cell2 = header_table.cell(0, 1)
p2 = cell2.paragraphs[0]
add_run(p2, 'CÔNG TY TNHH SX - TM HÓA KEO BÌNH THẠNH', bold=True, size=10)
set_spacing(p2, before=0, after=3)

lines = [
    'Địa chỉ: Bình Phước B, P. Bình Chuẩn, Thuận An, Bình Dương.',
    'Tel: (0650) 3 789 991/2/3',
    'Fax: (0650) 3 789 996',
    'Email: hkbt@btchem.com.vn',
    'Website: www.btchem.com.vn',
]
for text in lines:
    p = cell2.add_paragraph()
    add_run(p, text, size=9)
    set_spacing(p, before=0, after=0)

# CELL 3 - Accreditation logos
cell3 = header_table.cell(0, 2)
p3 = cell3.paragraphs[0]
p3.alignment = WD_ALIGN_PARAGRAPH.RIGHT
add_run(p3, '[ANAB]', size=8, color=RGBColor(128,128,128))
set_spacing(p3, before=5, after=5)
p3b = cell3.add_paragraph()
p3b.alignment = WD_ALIGN_PARAGRAPH.RIGHT
add_run(p3b, '[Intertek]', size=8, color=RGBColor(128,128,128))

# ===== TITLE =====
p_title = doc.add_paragraph()
p_title.alignment = WD_ALIGN_PARAGRAPH.CENTER
add_run(p_title, 'BẢNG ĐÁNH GIÁ KHÁCH HÀNG MỚI', bold=True, size=14)
set_spacing(p_title, before=14, after=2)
for run in p_title.runs:
    run.underline = True

p_sub = doc.add_paragraph()
p_sub.alignment = WD_ALIGN_PARAGRAPH.CENTER
add_run(p_sub, '(NEW CUSTOMER EVALUATION FORM)', size=9)
set_spacing(p_sub, before=0, after=10)

# ===== SECTION A =====
pA = doc.add_paragraph()
add_run(pA, 'A- Thông tin khách hàng', bold=True, size=12)
set_spacing(pA, before=8, after=4)

pA1 = doc.add_paragraph()
add_run(pA1, 'Tên Công ty Khách hàng:', size=11)
add_run(pA1, ' ' * 3)
add_run(pA1, '_________________________________________________', size=11)
set_spacing(pA1, before=2, after=2)

for item in ['Địa chỉ:', 'Người liên lạc:', 'Làm hàng cho khách hàng nào:', 'Đang sử dụng sơn NCC nào:']:
    p = doc.add_paragraph()
    run = p.add_run('✓ ')
    run.font.name = 'Times New Roman'
    run._element.rPr.rFonts.set(qn('w:eastAsia'), 'Times New Roman')
    run.font.size = Pt(11)
    add_run(p, item, size=11)
    add_run(p, ' ' * 3)
    add_run(p, '_________________________________________________', size=11)
    set_spacing(p, before=1, after=1)

# ===== SECTION B =====
pB = doc.add_paragraph()
add_run(pB, 'B- Quy mô nhà máy', bold=True, size=12)
set_spacing(pB, before=10, after=4)

for item in ['Diện tích nhà xưởng :', 'Số lượng dây chuyền sơn:', 'Sản lượng (cont /tháng) :', 'Số lượng công nhân :']:
    p = doc.add_paragraph()
    run = p.add_run('✓ ')
    run.font.name = 'Times New Roman'
    run._element.rPr.rFonts.set(qn('w:eastAsia'), 'Times New Roman')
    run.font.size = Pt(11)
    add_run(p, item, size=11)
    add_run(p, ' ' * 3)
    add_run(p, '_________________________________________________', size=11)
    set_spacing(p, before=1, after=1)

# ===== SECTION C =====
pC = doc.add_paragraph()
add_run(pC, 'C- Ý kiến đánh giá phòng kỹ thuật', bold=True, size=12)
set_spacing(pC, before=10, after=6)

pC1 = doc.add_paragraph()
add_run(pC1, '1- Đánh giá quy mô khách hàng:', bold=True, size=11)
set_spacing(pC1, before=2, after=4)

pC1_opts = doc.add_paragraph()
for opt in ['Lớn', 'Khá lớn', 'Trung bình', 'Nhỏ', 'Tiềm năng']:
    add_run(pC1_opts, '☐ ' + opt, size=11)
    add_run(pC1_opts, '    ')
set_spacing(pC1_opts, before=0, after=6)

pC2 = doc.add_paragraph()
add_run(pC2, '2- Nhân sự kỹ thuật bố trí theo dõi – phục vụ khách hàng:', bold=True, size=11)
set_spacing(pC2, before=4, after=4)

pC2_opts = doc.add_paragraph()
for opt in ['Không bố trí kỹ thuật', '1 kỹ thuật', '2 kỹ thuật', '3 kỹ thuật']:
    add_run(pC2_opts, '☐ ' + opt, size=11)
    add_run(pC2_opts, '    ')
set_spacing(pC2_opts, before=0, after=4)

pC2_special = doc.add_paragraph()
add_run(pC2_special, '☐ Yêu cầu đặc biệt khác (1 nhóm kỹ thuật)', size=11)
add_run(pC2_special, ' ' * 3)
add_run(pC2_special, '_________________________________', size=11)
set_spacing(pC2_special, before=0, after=6)

pC3 = doc.add_paragraph()
add_run(pC3, '3- Giá thành và công nợ:', bold=True, size=11)
set_spacing(pC3, before=4, after=4)

pC3_opts = doc.add_paragraph()
add_run(pC3_opts, '☐ Giá tốt cạnh tranh', size=11)
add_run(pC3_opts, '    ')
add_run(pC3_opts, '☐ Giá bình thường', size=11)
add_run(pC3_opts, '    ')
add_run(pC3_opts, '☐ Giá khác:', size=11)
add_run(pC3_opts, ' ' * 3)
add_run(pC3_opts, '____________________', size=11)
set_spacing(pC3_opts, before=0, after=6)

pCN = doc.add_paragraph()
add_run(pCN, 'Công nợ:', bold=True, size=11)
set_spacing(pCN, before=2, after=2)

for _ in range(3):
    p = doc.add_paragraph()
    add_run(p, '___________________________________________________________', size=11)
    set_spacing(p, before=0, after=0)

# ===== SIGNATURES =====
p_space = doc.add_paragraph()
set_spacing(p_space, before=25, after=0)

sig_table = doc.add_table(rows=1, cols=3)
sig_table.alignment = WD_TABLE_ALIGNMENT.CENTER
remove_all_borders(sig_table)

for i, width in enumerate([Cm(5.5), Cm(5.5), Cm(5.5)]):
    sig_table.columns[i].width = width

sig_labels = ['Ban Giám Đốc xem xét', 'LĐ phòng kỹ thuật', 'Người đánh giá.']
for i, label in enumerate(sig_labels):
    cell = sig_table.cell(0, i)
    cell.paragraphs[0].clear()
    p = cell.paragraphs[0]
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    add_run(p, '', size=11)
    set_spacing(p, before=45, after=0)
    
    p2 = cell.add_paragraph()
    p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
    add_run(p2, label, bold=True, size=11)
    set_spacing(p2, before=0, after=0)

# SAVE
output_path = 'BANG_DANH_GIA_KHACH_HANG_MOI.docx'
doc.save(output_path)
print(f'Đã lưu: {output_path}')
