# -*- coding: utf-8 -*-
"""Lưu thông tin phiếu đặt hàng PO (MPO.PU338-9/26) thành JSON có cấu trúc + kiểm tra số học.
Nguồn số: ẢNH chụp PO (đọc bằng vision của trợ lý) — và đối chiếu với phần trích xuất của AGY (nếu có).
Mọi con số đều tự kiểm: đơn giá × số lượng = thành tiền; tổng các dòng = tổng tiền trên phiếu."""
import io, json, os, re

DIR = r'C:\Claw 2\Bao cao - Hanh chinh\bao cao mua hang\Phieu-dat-hang-2026-10'
DONG = [
    # stt, mã hàng, tên hàng, đóng gói, đvt, số lượng, đơn giá, thành tiền
    (1, 'OB-D78-MTC-226', 'Nhúng', '20lit/can', 'Kg', None, 73000, 0),
    (2, 'T-44-A', 'Dung môi pha màu', '20lit/can', 'Kg', 200, 61000, 12200000),
    (3, 'PU-1-386-MT', 'LÓT PU MÀU', '200kg/phuy', 'Kg', 260, 97000, 25220000),
    (4, 'T-331', 'DUNG MÔI', '200lit/phuy', 'Kg', 400, 56500, 22600000),
    (5, 'T-331-SCPF', 'DUNG MÔI', '20lit/can', 'Kg', 40, 56500, 2260000),
    (6, 'HD-BGL', 'CHẤT CỨNG', '05kg/can', 'Kg', 75, 250000, 18750000),
    (7, 'WBG-601-HI-MTC-108', 'GLAZE', '25kg/can', 'Kg', 75, 104000, 7800000),
    (8, 'ST-MTC-226', 'Dậm màu', '20lit/can', 'Kg', None, 79000, 0),
    (9, 'PU-2-7314-MT:10%', 'Bóng PU trong', '25kg/can', 'Kg', 60, 131000, 7860000),
    (10, 'T-247', 'DUNG MÔI', '20lit/can', 'Kg', 20, 56500, 1130000),
]
TONG_TREN_PHIEU = 97820000

print('=== KIỂM SỐ HỌC TỪNG DÒNG ===')
ok = True
for stt, ma, ten, dg, dvt, sl, dgia, tt in DONG:
    if sl is None:
        print('  %2d %-22s SL trống → thành tiền %s (theo phiếu)' % (stt, ma, f'{tt:,}'.replace(',', '.')))
        continue
    calc = sl * dgia
    dung = 'ĐÚNG' if calc == tt else 'SAI (tính ra %s)' % f'{calc:,}'.replace(',', '.')
    if calc != tt:
        ok = False
    print('  %2d %-22s %4d × %s = %-14s %s' % (stt, ma, sl, f'{dgia:,}'.replace(',', '.'), f'{tt:,}'.replace(',', '.'), dung))

tong = sum(d[7] for d in DONG)
print('\nTỔNG TỰ CỘNG = %s' % f'{tong:,}'.replace(',', '.'))
print('TỔNG TRÊN PHIẾU = %s' % f'{TONG_TREN_PHIEU:,}'.replace(',', '.'))
print('⇒ %s' % ('KHỚP' if tong == TONG_TREN_PHIEU else 'KHÔNG KHỚP — phải kiểm lại ảnh'))

data = {
    'loai_tai_lieu': 'Purchasing Order (PO) — ảnh chụp email điều chỉnh đơn + phiếu đặt hàng',
    'so_po': 'MPO/PU338-9 26 (email ghi “TVT PU338-9”)',
    'ten_don_hang': 'ĐƠN ĐẶT HÀNG: PURCHASING ORDER',
    'ngay_tai_lieu': 'PO ghi ngày 18.09.26 (theo nội dung email); ảnh chụp không hiển thị ô ngày của phiếu',
    'email': {
        'gui_tu': 'Diep.HuynhNgoc - Cung ung <purchase.03@tanvietien.com>',
        'gui_den': 'Mai.HuynhThiXuan - Cung ung; Phòng Kỹ Thuật; Phòng Kinh Doanh',
        'thoi_gian': 'Wed 07/10/2026 4:29 PM',
        'noi_dung_nguyen_van': 'Hi Thủy ,đơn hàng TVT PU338-9 ngày 18.09.26 số TT 5 dung môi T-331-SCPF anh có đặt 40L em hỗ trợ đổi dùm anh qua thành Dung môi T-331 . CẢM ƠN!',
        'yeu_cau': 'Đổi dòng số 5 từ dung môi T-331-SCPF (40 L) sang dung môi T-331',
    },
    'ben_mua_xuat_hoa_don': {
        'ten': 'CÔNG TY TNHH TÂN VIỆT TIẾN',
        'mst': '0302936772',
        'dia_chi': '267 Nguyễn Văn Đậu, Phường Bình Lợi Trung, Thành phố Hồ Chí Minh, Việt Nam',
        'nguoi_lien_he': 'Huỳnh Ngọc Điệp',
        'dien_thoai': '0977322388',
        'email': 'purchase.03@tanviettien.com',
    },
    'dia_chi_khac_tren_anh': 'CÔNG TY TNHH TÂN VIỆT TIẾN — 367 Nơ Trang Long, Phường 13, Quận Bình Thạnh, TP. Hồ Chí Minh (xuất hiện ở đầu phiếu; khác địa chỉ ghi ở khối xuất hóa đơn)',
    'ben_ban': 'ảnh chụp chưa hiển thị rõ — theo mô tả kèm ảnh là Poly-Pony Coatings Vietnam Co., Ltd; CẦN XÁC NHẬN',
    'phuong_thuc_thanh_toan': 'Chuyển khoản',
    'dong_hang': [
        dict(stt=s, ma_hang=ma, ten_hang=ten, dong_goi=dg, dvt=dvt, so_luong=sl, don_gia=dgia, thanh_tien=tt,
             ghi_chu=('được KHOANH ĐỎ trong ảnh + email yêu cầu đổi từ T-331-SCPF sang T-331' if s == 5 else
                      ('ô số lượng để trống trong ảnh' if sl is None else '')))
        for s, ma, ten, dg, dvt, sl, dgia, tt in DONG],
    'tong_tien_hang_tren_phieu': TONG_TREN_PHIEU,
    'tong_tu_cong': tong,
    'khop': tong == TONG_TREN_PHIEU,
    'nguon_anh': '1_anh_po_MPO-PU338-9-26.jpg (Anh Minh gửi 07/10/2026)',
    'cach_doc': 'Trợ lý đọc ảnh (vision) độc lập với AGY, sau đó kiểm số học từng dòng và đối chiếu chéo với bản trích xuất của AGY',
    'ngay_luu': '07/10/2026',
    'diem_can_xac_nhan': [
        'Tên bên bán trên phiếu (Poly-Pony Coatings Vietnam?) — ảnh chụp chưa thấy rõ',
        'Ô ngày của phiếu và ô ngày giao hàng',
        'Hai địa chỉ khác nhau của Công ty Tân Việt Tiến xuất hiện trên cùng ảnh (267 Nguyễn Văn Đậu và 367 Nơ Trang Long)',
        'Dòng 1 (OB-D78-MTC-226 — Nhúng) và dòng 8 (ST-MTC-226 — Dậm màu) để trống số lượng, thành tiền ghi 0',
        'Sau khi đổi dòng 5 sang T-331 thì đơn giá/thành tiền có giữ nguyên 56.500 đ/kg × 40 kg = 2.260.000 đ hay không',
    ],
}
p = os.path.join(DIR, 'PO_MPO-PU338-9-26.json')
json.dump(data, io.open(p, 'w', encoding='utf-8'), ensure_ascii=False, indent=1)
print('\nlưu JSON có cấu trúc:', p, os.path.getsize(p), 'byte')
print('cần kiểm lại:', 'KHÔNG' if (ok and tong == TONG_TREN_PHIEU) else 'CÓ')
