# -*- coding: utf-8 -*-
"""Kiem chung ket qua agy cho bao cao mua hang T10 ky 1->3 (doc lap)."""
import json, os, re, openpyxl

D = r'C:\Claw 2\Bao cao - Hanh chinh\bao cao mua hang'
JS = os.path.join(D, 'Bao_cao', 'capnhat_csdl_T10_ky03.json')
XL = os.path.join(D, 'File-lam-sach', 'MUA_HANG_03T10-26_DA-LAM-SACH.xlsx')
HT = os.path.join(D, 'Bao_cao', 'Baocaomuahang_thang10_ky01-03-10-2026.html')
DX = os.path.join(D, 'Bao_cao', 'BAO_CAO_SO_SANH_MUA_HANG_T10_ky03.docx')

ok = True
def chk(name, cond, extra=''):
    global ok
    print(('  OK   ' if cond else '  FAIL ') + name + (' | ' + str(extra) if extra else ''))
    if not cond: ok = False

print('=== 1. JSON ===')
d = json.load(open(JS, encoding='utf-8'))
print('  ky:', d['ky'], '| so_ngay:', d['so_ngay'], '| tong_kg:', d['tong_kg'], '| tb_ngay:', d['tb_ngay'], '| so_sanh:', d['so_sanh'])
kh = d['khach_hang']
chk('ky = T10', d['ky'] == 'T10')
chk('so_ngay = 3', d['so_ngay'] == 3)
chk('tong_kg = 116584', d['tong_kg'] == 116584, d['tong_kg'])
chk('tb_ngay = 38861', d['tb_ngay'] == 38861, d['tb_ngay'])
chk('so_sanh dung', d['so_sanh'].replace(' ', '') == '+6,935(+21.7%)', repr(d['so_sanh']))
chk('so khach hang = 190', len(kh) == 190, len(kh))
s = sum(x['tong_kg'] for x in kh)
chk('tong tong_kg cac KH = 116584', s == 116584, s)
chk('khong co dong Tong cong trong khach_hang', not any('Tổng' in (x['ten'] or '') for x in kh))
chk('co ma_kh + ten + kg_ngay + so_sanh', all(x.get('ma_kh') and x.get('ten') and 'kg_ngay' in x and x.get('so_sanh') for x in kh))
# so sanh vai KH lon nhat voi file goc
wb0 = openpyxl.load_workbook(os.path.join(D, 'mua hang thang 10- 26.xlsx'), data_only=True)
w0 = wb0['FILE GỐC']
goc = {}
for r in range(5, 195):
    ma, ten, t9, t10 = w0.cell(r, 2).value, w0.cell(r, 3).value, w0.cell(r, 12).value, w0.cell(r, 13).value
    if ma: goc[ten] = (int(t9 or 0), int(t10 or 0))
lech = []
for x in kh:
    if x['ten'] in goc:
        g = goc[x['ten']]
        if g[1] != x['tong_kg'] or round(g[1] / 3) != x['kg_ngay']:
            lech.append((x['ten'], g[1], x['tong_kg'], round(g[1] / 3), x['kg_ngay']))
chk('tong_kg/kg_ngay tung KH khop file goc', len(lech) == 0, lech[:3])
chk('khong thua KH so voi file goc', set(x['ten'] for x in kh) == set(goc.keys()), (len(set(goc) - set(x['ten'] for x in kh)), len(set(x['ten'] for x in kh) - set(goc))))

print('=== 2. File Excel da lam sach ===')
wb = openpyxl.load_workbook(XL, data_only=True)
chk('chi 1 sheet FILE GỐC', wb.sheetnames == ['FILE GỐC'], wb.sheetnames)
ws = wb['FILE GỐC']
h = [str(ws.cell(4, c).value).replace('\n', ' ') for c in range(4, 14)]
print('  header:', h)
chk('cot cuoi = Tu 1->3 Thang 10 2026', h[9].startswith('Từ 1->3 Tháng 10 2026'), h[9])
chk('cot thang co (Khoi luong Kg)', all('Khối lượng Kg' in x for x in h[:9]), h[:9])
chk('dong Tong cong = 116584', int(ws.cell(195, 13).value or 0) == 116584, ws.cell(195, 13).value)
chk('T9 = 957767 (30 ngay)', int(ws.cell(195, 12).value or 0) == 957767, ws.cell(195, 12).value)

print('=== 3. Portal HTML ===')
h = open(HT, encoding='utf-8', errors='replace').read()
chk('khong con placeholder @@', '@@' not in h, h.count('@@'))
for k in ['Nhà máy', '116', '584', '38', '861', '21,7', 'T9', 'Từ 1->3']:
    chk('HTML co chuoi %r' % k, k in h)
chk('co o tim kiem', ('input' in h.lower() and 'search' in h.lower()))
chk('nhan truc x co T9', ('T9' in h) and ('T10' in h))
print('  do dai HTML:', len(h))

print('=== 4. DOCX ===')
try:
    from docx import Document
    doc = Document(DX)
    txt = '\n'.join(p.text for p in doc.paragraphs)
    chk('DOCX co 2 bang', len(doc.tables) == 2, len(doc.tables))
    chk('ban chi tiet 190 KH', len(doc.tables[1].rows) >= 191, len(doc.tables[1].rows))
    for k in ['38.861', '116.584', '+6.935', '21.7']:
        chk('DOCX co %r' % k, k in txt or any(k in c.text for t in doc.tables for r in t.rows for c in r.cells))
except Exception as e:
    chk('doc docx', False, e)

print()
print('KET LUAN:', 'TAT CA DAT' if ok else 'CO LOI — KHONG NAP CSDL')
