Epc-premium

Plugin chuyên nghiệp quản lý phụ tùng
Bản thương mại hổ trợ AI, báo giá , hóa đơn bán lẻ

Theo dổi doanh thu và tồn kho

  • Phiên bản: 16.7.12
  • WordPress: 7.1+
  • PHP: 8.5+
  • Cập nhật: 2026-10-03 16:54

Nhật ký thay đổi

16.7.12

  • Tính năng: Đồng hồ đếm ngược chạy từng giây cho đơn TQ (hạn kiểm tra 14 ngày) và biên nhận khách (ngày hẹn giao); đổi màu xanh → vàng → đỏ, quá hạn nhấp nháy
  • Tính năng: Biên nhận khách có ô "Ngày hẹn giao" (in trên phiếu) và nút "Đã giao" / "Chưa giao"
  • Nâng cấp giao diện: Cột "Giao hàng" trong danh sách biên nhận

16.7.11

  • Nâng cấp giao diện: Danh sách đơn dạng thẻ trên điện thoại (món, số lượng, tổng/cọc/còn lại, bấm gọi khách)
  • Nâng cấp giao diện: Thêm/sửa đơn mở toàn màn hình trên điện thoại, thanh tổng tiền và nút Lưu cố định dưới đáy
  • Nâng cấp giao diện: Món dạng thẻ, nút −/+ số lượng, chọn mức cọc bằng nút bấm, chuyển loại đơn dạng segmented
  • Sửa lỗi giao diện: Lỗi lưu đơn hiện ngay trong biểu mẫu

16.7.10

  • Tính năng: Đơn đặt TQ và biên nhận khách ghi giá nhập từng món (chỉ người xem được giá vốn); nhận hàng TQ cập nhật luôn giá nhập TQ
  • Tính năng: Mã chưa có trong EPC có tuỳ chọn "Thêm vào EPC khi lưu"; mã đã có tự liên kết
  • Tính năng: Biên nhận khách tính vào doanh thu theo ngày đặt (có nguồn VN/TQ từng món); xoá biên nhận thì bỏ khỏi doanh thu
  • Nâng cấp giao diện: Trang Quản lý đặt hàng và cửa sổ in phiếu hiển thị chuẩn trên điện thoại; thêm nút "Gửi ảnh" phiếu
  • Sửa lỗi: Điện thoại chặn cửa sổ in phiếu biên nhận

16.7.9

  • Tối ưu: License và cập nhật chuyển sang Ahago SDK dùng chung — nhập key ở Cài đặt → Ahago License
  • Tối ưu: Key đang lưu tự chuyển sang SDK, không phải nhập lại
  • Sửa lỗi: Gỡ plugin không còn để lại key cũ trong DB; nhả suất site trên máy chủ

16.7.8

  • Sửa lỗi giao diện: khung xuất chứng từ hiện thừa tab "Hóa đơn bán lẻ" (thực là biên nhận đặt hàng)

16.7.7

  • Tối ưu: AI đọc tem nhận ảnh gốc 2048px thay vì bản 1024px — đọc mã nhỏ rõ hơn
  • Sửa lỗi: sửa phụ tùng trong wp-admin không còn lưu được mã trùng (giữ mã cũ, báo lỗi)

16.7.6

  • Sửa lỗi: xóa hoặc thêm ảnh tem thì bỏ kết quả AI cũ và đọc lại; ô đã sửa tay được giữ
  • Sửa lỗi: kết quả "Tra mã trên internet" không còn dính sang phụ tùng sau hoặc mã khác
  • Sửa lỗi: chỉ đánh dấu tem nhãn cho ảnh thuộc chính phụ tùng đang lưu
  • Tối ưu: một lần lưu phụ tùng chỉ xóa cache trang một lần thay vì nhiều lần

16.7.5

  • Sửa lỗi: "Kiểm tra lại" trong Cập nhật dùng kết quả cũ tới 1 giờ nên không thấy bản mới vừa phát hành
  • Tính năng: nút "Kiểm tra cập nhật ngay" trong Cài đặt → License & cập nhật

16.7.4

  • Tối ưu: tắt bước "Tra mã trên internet" mặc định — wizard đi thẳng từ đọc tem sang ảnh, bớt một lượt AI mỗi phụ tùng
  • Tính năng: công tắc bật lại bước tra mã trong Cài đặt → AI nhận diện

16.7.3

  • Nâng cấp giao diện: trang Cài đặt chia 4 tab (AI nhận diện, Chứng từ, License & cập nhật, Hệ thống), dạng thẻ, thanh lưu dính đáy

16.7.2

  • Kiểm tra: bản thử kênh cập nhật tự động từ ahago.net

16.7.1

  • Tính năng: nhận bản cập nhật từ ahago.net ngay trong trang Plugins (nút Cập nhật, Xem chi tiết)
  • Tính năng: ô nhập license trong Cài đặt, kiểm tra ngay khi lưu

16.7.0

  • Tính năng: mục Quản lý đặt hàng — đơn đặt TQ (thêm, xem, sửa, xóa; chọn phụ tùng có sẵn hoặc gõ tay)
  • Tính năng: nhắc đơn TQ quá 14 ngày; bấm "Đã nhận hàng" để cộng tồn và cập nhật giá bán nguồn TQ
  • Tính năng: biên nhận đặt hàng cho khách, trả trước 30/40/50/70%, in phiếu theo mẫu chứng từ

16.6.5

  • Chẩn đoán: đo thời gian từng chặng khi tải ảnh (nén, gửi, máy chủ, thư viện ảnh) — chỉ admin thấy

16.6.4

  • Nâng cấp giao diện: bỏ dòng "Kính gửi" và lời chào; có tên khách thì in "Khách hàng: …"
  • Sửa lỗi giao diện: mã đầy đủ trên hóa đơn một món gãy dòng, tràn khỏi ô

16.6.3

  • Nâng cấp giao diện: báo giá và hóa đơn theo mẫu mới — header trắng, ô số/ngày, "Kính gửi", bảng chi tiết, khối tổng, khối thông tin
  • Tính năng: Cài đặt thêm Khẩu hiệu, Website, Thời gian giao hàng, Phương thức thanh toán, Bảo hành (trống thì không in)
  • Nâng cấp giao diện: khoản khác in chung bảng hàng; bỏ dòng xe tương thích trên chứng từ
  • Sửa lỗi giao diện: phụ tùng không có ảnh làm ô ảnh tràn xuống bảng

16.6.2

  • Sửa: ghi chú chân hóa đơn và báo giá không xuống dòng. Các điều khoản gõ
  • Sửa: ghi chú chân dài hơn 3 dòng bị cắt và thêm "…". Giờ in đủ
  • Sửa: ô tên khách quá hẹp khi báo giá nhiều món — bị nhét vào cột 120px
  • Sửa: tên khách dài tràn ra khỏi mép phải của ảnh chứng từ. Giờ xuống dòng

16.6.1

  • Sửa: "Khoản khác" trên báo giá và hóa đơn bị coi là phí vận chuyển. Món
  • "Khoản khác" giờ là hộp riêng, tính như tiền hàng: in thành khối "KHOẢN
  • Hộp phí vận chuyển đổi nút thành "Phí ship khác +" cho phí ship tên tùy ý
  • Sửa: báo giá một món đang "Giá: liên hệ" làm mất phí ship và khoản khác
  • Bản chữ (Chép chữ) tách nhóm "Khoản khác" và "Phí vận chuyển"

16.6.0

  • Ảnh tải lên lúc nhập phụ tùng xử lý nhanh hơn hẳn. Máy chủ trước đây tạo
  • Xoay ảnh cũng chỉ tạo lại ba cỡ đó
  • Chọn nhiều ảnh một lượt không còn nén và tải cả sáu tấm song song: tối đa
  • Ảnh thiếu nén từ trình duyệt cũ được lõi thu về 2048px thay vì giữ file gốc
  • Đọc tem bằng AI gửi đúng MIME của file cỡ large. Plugin tối ưu ảnh đổi cỡ
  • Yêu cầu WordPress 7.1 trở lên
  • Block "Tra cứu phụ tùng" đăng ký thuần PHP, chèn được từ inserter. Shortcode
  • Abilities dùng cờ public của 7.1 thay cho show_in_rest. Thêm khả năng
  • WP AI Client xin chế độ trả JSON theo schema khi builder hỗ trợ, đường tự
  • REST: xoá ảnh đã gắn vào phụ tùng trả 409 thay vì 403. Các route /{id} khai

16.5.1

  • Ảnh trên báo giá và hóa đơn giữ nguyên tỉ lệ gốc, không còn bị xén. Trước
  • Ảnh chính của chứng từ một món vẽ vừa khít bề ngang, chiều cao chạy theo
  • Ảnh nhỏ hơn ô không bị phóng to: kéo căng thì vỡ hạt, trên chứng từ gửi
  • Bỏ dải "ẢNH CHI TIẾT". Những ô vuông nhỏ đó là chỗ tỉ lệ bị xén nặng nhất
  • Chứng từ một món chỉ còn nạp một tấm ảnh thay vì sáu. Năm tấm kia chỉ phục

16.5.0

  • Chứng từ ghi "Thứ Ba, 15/09/2026" thay vì "15/09/2026", cả trên ảnh lẫn bản
  • Thẻ hóa đơn trong báo cáo cũng hiện tên thứ, và đổi ngay khi sửa ngày lập
  • Ô sửa ngày có thêm dòng đọc lại ngay dưới ba ô, in ngày kèm tên thứ và cập
  • Nhãn cột biểu đồ theo ngày thêm thứ dạng ngắn: "T3 15/09"
  • Hạn hiệu lực báo giá cố ý KHÔNG có tên thứ — dòng đó ở chân chứng từ giữa
  • Wall.weekday() suy ra thứ bằng số học lịch, không qua múi giờ nào: thứ là

16.4.3

  • Ô sửa ngày lập bỏ hẳn giờ và phút, chỉ còn ngày, tháng, năm. Việc thật sự
  • Khu sửa trong thẻ ép một cột dưới 640px bằng media query thay vì trông chờ
  • Thanh chọn khoảng thời gian thành một dải chip cuộn ngang, thay cho mười một
  • Bỏ mẹo tràn mép âm ở dải chip: nó phụ thuộc vào đệm của wp-admin, đúng kiểu

16.4.2

  • Mọi lưới auto-fit đổi sang minmax(min(...), 1fr). Với minmax thường, khung
  • Ô ngày xếp [Ngày][Tháng][Năm] rồi xuống dòng [Giờ][Phút] trên màn hẹp, trải
  • white-space: nowrap thu hẹp lại chỉ cho số tiền. Trước đây nó áp cho mọi
  • Khu sửa trong thẻ bỏ hai cột ghim cứng 'auto 1fr', chuyển sang tự xếp theo
  • Thanh chọn khoảng thời gian thành lưới ba cột đều trên điện thoại, thay vì
  • Đoạn hướng dẫn dài gấp vào . Nó chỉ cần đọc một lần nhưng chiếm gần
  • Số tiền và khoảng đệm thu nhỏ một bậc dưới 640px

16.4.1

  • Tháng đổi thành danh sách TÊN THÁNG thay vì ô số. Đây là chỗ xóa hẳn khả
  • Bỏ tự nhảy ô: nó làm người dùng chỉ dùng bàn phím khó quay lại sửa
  • Bỏ chữ mờ trong ô, thay bằng nhãn thật cho từng ô và một dòng ví dụ cho cả
  • Bỏ dấu gạch chéo giữa các ô
  • Nhóm lại trong fieldset có legend, mỗi ô một label trỏ đúng id, nhóm gắn
  • Vẫn nhận cả "9" lẫn "09", vẫn tăng giảm bằng phím mũi tên có xoay vòng, và

16.4.0

  • Chuẩn HTML cố ý để thứ tự hiển thị của datetime-local cho trình duyệt tự
  • Thêm assets/js/datefield.js: năm ô con ngày/tháng/năm giờ/phút với thứ tự
  • Ngày không tồn tại bị chặn ngay tại ô: 31/02 và 29/02 năm không nhuận không
  • Bỏ dòng chữ dd/mm/yyyy phụ thêm ở 16.2.0 — nó sinh ra để bù cho ô native,

16.3.2

  • Báo giá và hóa đơn nhiều món chỉ gửi kèm MỘT ảnh đại diện cho mỗi món, thay
  • Số ảnh ghi trên ô tích và số ảnh thật sự gửi đi giờ do cùng một hàm quyết
  • Media::gallery_ids() luôn đưa ảnh đại diện lên đầu, kể cả khi nó đã nằm sẵn

16.3.1

  • Wizard nhập phụ tùng có ô chọn nguồn đặt ngay trên ba ô tiền. Bản 16.3.0 để
  • Sửa phụ tùng đã có mà đổi nguồn thì ba ô tiền tải lại theo nguồn vừa chọn,
  • Bước xác nhận hiện thêm dòng Nguồn, để nhìn thấy trước khi bấm lưu
  • Src.suffix() lùi về nguồn mặc định khi gặp giá trị lạ, thay vì dựng khóa

16.3.0

  • Thêm enum EPCEnumSource. Nguồn Việt Nam dùng lại đúng các khóa meta và
  • Bảng chỉ mục thêm cột price_cn, stock_cn; DB_VERSION lên 7.0.0 và chỉ mục tự
  • Trang tra cứu có thanh chọn nguồn đặt trước ô tìm kiếm. Cả trang chạy theo
  • Màn hình sửa phụ tùng xếp theo nguồn, mỗi nguồn một khối ba ô — người nhập
  • Dòng giỏ chụp lại nguồn lúc được thêm, nên một báo giá trộn được hàng hai
  • Cùng mã khác nguồn là hai dòng giỏ riêng, không gộp. Khóa lưu giỏ lên v4
  • Hóa đơn lưu nguồn theo từng dòng hàng, cùng bốn cột tổng hợp rev_vn, rev_cn,
  • Doanh thu chia theo tỉ lệ tiền hàng của mỗi nguồn, phần dư dồn vào nguồn lớn
  • Chi phí khác phân bổ theo tỉ lệ doanh thu, tính ở giao diện báo cáo để số
  • Báo cáo có khối "Theo nguồn lấy hàng": doanh thu, tỉ trọng, giá vốn, chi phí
  • Nhãn nguồn hiện trên từng dòng hàng trong báo cáo, KHÔNG hiện trên chứng từ
  • Tham số REST đặt tên 'supply' chứ không phải 'source': phụ tùng đã có trường

16.2.0

  • Thêm EPCSupportClock: nơi duy nhất trong PHP tạo và đọc ngày tháng, luôn
  • Thêm assets/js/wallclock.js: nơi duy nhất trong JS đọc, cộng trừ và định
  • InvoicesController::range() viết lại bằng DateTimeImmutable: bỏ chuỗi
  • Số chứng từ và ngày lập chốt một lần cho mỗi chứng từ rồi dùng lại ở ảnh,
  • Hóa đơn gửi kèm createdAt đã in trên chứng từ thay vì để máy chủ đóng dấu
  • Danh sách hóa đơn luôn hiện năm. Nhãn cột biểu đồ chỉ bỏ năm khi cả kỳ nằm
  • Ngày lập trên thẻ vẽ lại ngay sau khi sửa, thay vì giữ giá trị cũ tới lúc
  • In thêm bản dd/mm/yyyy cạnh ô datetime-local: ô đó hiển thị theo ngôn ngữ
  • Giá trị ô datetime-local đọc qua wallclock thay vì nối thêm ':00' — ô có
  • Trang báo cáo in múi giờ đang áp dụng. Múi giờ site đặt sai làm mọi hóa đơn
  • Dấu thời gian lỗi PHP trong trang chẩn đoán quy về giờ site
  • Trang báo cáo và trang cài đặt chuyển sang Script Module, xóa hẳn

16.1.0

  • Phụ tùng hết hàng hoặc chưa đếm tồn kho đều hiện "Hết hàng" khi tra cứu,
  • Trên báo giá và hóa đơn, món hết hàng ghi rõ "Hết hàng" ở cột số lượng và
  • Giỏ báo giá cũng hiện "Hết hàng · Liên hệ" và không cộng tiền món đó
  • Ô nhập tồn kho trong wizard giữ nguyên phân biệt: bỏ trống là chưa đếm,

16.1.0

  • Sửa lỗi trên laptop chỉ thêm được một ảnh mỗi lần. Nút "Chụp ảnh" mở ô nhập
  • Bấm ô trống trong khay nay mở hộp chọn nhiều ảnh, vì đó là thao tác thêm
  • Máy không có cảm ứng thì nút đổi tên thành "Chọn ảnh" cho khớp việc nó làm
  • Bước đọc tem nhận nhiều ảnh một lượt thay vì lấy ảnh đầu rồi bỏ im lặng

16.1.0

  • Sửa lỗi "Invalid value: 'web_search'" khi tra mã trên internet bằng OpenAI.
  • Kết quả tra mạng không kèm nguồn nào thì bỏ luôn mô tả thay vì chỉ hạ mức

16.0.1

  • Sửa lỗi chí mạng làm trắng toàn bộ wp-admin: toán tử ống với arrow function
  • Thêm tools/verify-php-syntax.py kiểm những mẫu PHP 8.5 đang dùng, cho môi
  • Sentinel không còn tham chiếu class nào khi ghi lỗi: nó chạy lúc shutdown,

16.0.0

  • Sửa ba chỗ truy vấn N+1: giá vốn trên trang kết quả, đường dẫn ảnh, và
  • Dùng toán tử ống cho năm chuỗi biến đổi mảng, đọc xuôi thay vì đọc ngược
  • Đánh dấu #[NoDiscard] cho mười ba hàm trả về WP_Error: bỏ qua giá trị trả
  • Chuyển bảy chỗ array_map('intval', ...) sang cú pháp callable hạng nhất
  • tools/verify-references.py cảnh báo cú pháp cũ còn sót

15.5.0

  • Ảnh tem nhãn không còn gửi kèm báo giá lẫn hóa đơn bán lẻ, và cũng không
  • Thêm nút TEM trên mỗi ô ảnh để đánh dấu, dùng được cho cả phụ tùng đã nhập
  • Bốn ký tự cuối mã phụ tùng được che trên BÁO GIÁ, hiện đầy đủ trên hóa đơn

15.4.2

  • Mỗi lời gọi REST dạng GET dùng một URL khác nhau, nên không tầng cache nào
  • Khai hằng số DONOTCACHEPAGE, DONOTCACHEOBJECT, DONOTCACHEDB và gọi hook
  • Tự dọn cache sau mỗi lần ghi hóa đơn hoặc sửa phụ tùng
  • Bảng chẩn đoán liệt kê plugin cache đang bật, để biết tầng nào có thể giữ

15.4.1

  • Sửa doanh thu chỉ hiện sau năm bảy phút. Plugin không gửi header chống
  • Sửa hóa đơn đổi ngày xong tải lại trang thì hiện ở ngày cũ. strtotime()

15.4.0

  • Sửa được ngày lập hóa đơn ngay trong trang báo cáo. Bán hôm qua mà hôm nay
  • Đổi ngày làm đơn rơi ra khỏi khoảng đang xem thì thẻ tự biến mất và số tổng
  • Chặn ngày ở tương lai: hóa đơn ghi nhận việc đã xảy ra, và đơn đề ngày mai

15.3.1

  • Sửa lỗi chọn OpenAI hay Anthropic rồi bấm Tải danh sách vẫn ra model của
  • Endpoint tải model chuyển sang POST: khóa API đi kèm để tải trước khi lưu,
  • Đổi nhà cung cấp thì nhắc nhập khóa mới, và xóa danh sách model cũ

15.3.0

  • AI nhận cả ba trường hợp thay vì chỉ tem nhãn: tem nhãn, mã dập trên thân
  • Trường hợp không có mã, AI ghi ra tên và mô tả chức năng bằng tiếng Việt,
  • Kết quả nói rõ nguồn — đọc từ tem, đọc từ mã dập, hay nhận dạng bằng hình
  • Nhận dạng bằng hình ảnh không bao giờ được xếp mức tin cậy cao: hai phụ
  • Thêm OpenAI làm nhà cung cấp thứ tư, dùng Structured Outputs strict
  • Thử lại tối đa 2 lần khi máy chủ AI trả 500, 502, 503, 504, 529 hoặc đứt

15.2.0

  • Báo cáo cập nhật tức thì. Gõ chi phí khác, bật tắt tính doanh thu hay xóa
  • Bỏ nút Lưu: tự lưu sau khi ngừng gõ 700ms, có hiện trạng thái đang lưu và
  • Số tổng cập nhật bằng cách cộng trừ phần chênh lệch chứ không tính lại từ
  • Xóa hóa đơn chỉ bỏ thẻ đó và trừ khỏi số tổng, không dựng lại cả trang

15.1.0

  • Báo cáo thêm sáu mốc dài: tháng này, tháng trước, 3 tháng, 6 tháng, năm
  • Thêm bảng phân tích có thanh tỉ lệ: khoảng ngắn gộp theo ngày, khoảng dài
  • Danh sách hóa đơn giới hạn 100 đơn gần nhất, có báo rõ còn bao nhiêu đơn

15.0.1

  • Sửa hóa đơn xuất hôm nay lại nằm ở mục hôm qua. current_time('timestamp')
  • Danh sách hóa đơn đổi từ bảng chín cột sang thẻ. Bảng đó không đọc được
  • Ô nhập trong báo cáo dùng cỡ chữ 16px để iOS không tự phóng to

15.0.0

  • Hóa đơn bán lẻ tự lưu vào sổ khi xuất thành công, kèm giá vốn chụp tại
  • Ô "Tính vào doanh thu" khi xuất hóa đơn, mặc định bật. Đơn thử hay đơn nội
  • Trang Phụ Tùng → Báo cáo doanh thu: hôm nay, hôm qua, 3 ngày, 7 ngày,
  • Bốn chỉ số: doanh thu, giá vốn, chi phí khác, lợi nhuận kèm tỉ suất
  • Sửa từng hóa đơn ngay trong bảng: thêm chi phí phát sinh như tiền vào cổng
  • Trang báo cáo chỉ mở cho người có quyền xem giá nhập

14.2.3

  • Sửa danh sách dòng xe trong suốt và bị nút Thêm phụ tùng đè lên. Thanh tra
  • Nền các khung nổi có giá trị dự phòng cứng: theme khai biến màu với giá trị
  • tools/verify-css.py cảnh báo phần tử nổi dùng nền từ biến mà không có giá

14.2.2

  • Sửa danh sách dòng xe không xổ ra. Bản 14.1.5 thêm contain:layout vào thanh
  • Bo góc chuyển xuống nút lọc và ô tìm kiếm, nên thanh không cần cắt tràn
  • tools/verify-css.py cảnh báo mọi thuộc tính tạo khối chứa mới trên tổ tiên

14.2.1

  • Sửa nút Thêm phụ tùng không mở được. Các module nạp nhau bằng đường dẫn
  • Đổi toàn bộ import tĩnh lẫn động sang định danh module
  • tools/verify-assets.py kiểm định danh khớp với wp_register_script_module,

14.2.0

  • Thêm giảm giá cho khách trên báo giá và hóa đơn, dùng được cho cả một món
  • Nhập theo phần trăm hoặc số tiền cố định. Kiểu phần trăm hiện rõ mức giảm
  • Dòng giảm giá đứng ngay sau tổng tiền hàng, in màu đỏ có dấu trừ, rồi mới
  • Chặn giảm quá tổng tiền hàng và chặn số âm

14.1.5

  • Sửa kính lúp đè lên chữ trên theme Blocksy. Biểu tượng trước đây là ảnh nền
  • Thanh tra cứu dựng ranh giới bố cục bằng isolation và contain, không phụ

14.1.4

  • Khung báo giá khoá cuộn trang khi mở nhưng KHÔNG có lệnh mở khoá khi đóng.
  • Khoá cuộn chuyển sang cơ chế đếm dùng chung: chỉ mở khoá khi lớp phủ cuối
  • Safari iOS giữ nguyên DOM khi bấm Back, khôi phục cả lớp phủ đang mở lẫn
  • Gõ tìm kiếm trong lúc mở trang chi tiết làm danh sách vẽ lại phía sau lớp

14.1.3

  • Giỏ không còn lưu đường dẫn ảnh cỡ lớn. Khung báo giá hỏi máy chủ một lần
  • Sửa lỗi xoá một món thì ảnh biến mất: khung báo giá nhận cùng đối tượng
  • Báo giá nhiều món gửi tối đa 2 ảnh mỗi phụ tùng thay vì 1
  • Ô tích gửi kèm ảnh luôn được dựng rồi cập nhật sau khi đếm xong, thay vì

14.1.2

  • Ảnh gửi kèm không còn lấy đường dẫn lưu trong giỏ mà hỏi lại máy chủ theo
  • Sửa lỗi "vui lòng thử lại" trên Safari iOS: navigator.share chỉ chạy khi
  • Bỏ tham số title khi chia sẻ file: Safari iOS coi đó là chia sẻ hỗn hợp và
  • Món thêm từ thẻ kết quả chỉ mang một ảnh bìa; nay đối chiếu với số ảnh thật
  • Khoá lưu giỏ lên v3

14.1.1

  • Sửa ảnh gửi kèm vẫn nhỏ 300px khi thêm món từ thẻ kết quả. Payload thẻ kết
  • Sửa lỗi chia sẻ Zalo báo lỗi chung chung: ảnh 2048px dạng PNG vượt ngân
  • Chia sẻ tự lùi từng nấc khi bị từ chối: đủ ảnh, chỉ tấm báo giá, rồi chép
  • Báo ngay khi tải hụt ảnh, thay vì để khách nhận thiếu mà không biết

14.1.0

  • Sửa bước 7 của wizard hiện trống: biến cục bộ trùng tên với hàm định dạng
  • Tên phụ tùng trên chứng từ không bao giờ bị cắt thành dấu ba chấm nữa
  • Cột số lượng hẹp lại, nhường chỗ cho cột tên
  • Dòng "Tạm tính" đổi thành "Tổng tiền hàng"
  • Khối phí vận chuyển có vạch ngăn và tiêu đề riêng
  • Chọn được câu ghi ở chân chứng từ: đã gồm hay chưa gồm phí vận chuyển
  • Ảnh gửi kèm dùng bản 2048px thay vì bản large 1024px
  • Thêm ô nâng giá theo phần trăm, cộng vào đơn giá từng món, không in ra

14.0.3

  • Ô tìm kiếm reset viền và bóng ở cả bốn trạng thái hover, focus,

14.0.2

  • Sửa ô tìm kiếm hiện khung viền riêng và kính lúp bị chữ đè. Theme nhắm
  • tools/verify-css.py cảnh báo rule cho ô nhập dùng class đơn

14.0.1

  • Sửa thanh tra cứu vỡ bố cục: khối @container vẫn còn flex-direction column

14.0.0

  • JS tải ngay giảm từ 139 KB xuống 39 KB. Wizard, báo giá và giỏ hàng nạp
  • Khai dependency dạng array('id' => ..., 'import' => 'dynamic') để trình
  • Dữ liệu PHP truyền qua filter script_module_data_@epc/app thay cho
  • Bỏ toàn bộ biến toàn cục window.EPC*, thay bằng import/export thật
  • Trang admin giữ script cổ điển với dom-global.js, vì
  • tools/verify-assets.py kiểm thêm Script Module và đường dẫn import

13.5.0

  • Thanh tra cứu gộp bộ lọc dòng xe và ô tìm kiếm thành một khối liền. Trước
  • Ô tìm kiếm có biểu tượng kính lúp, cỡ chữ 16px chặn iOS tự phóng to
  • Mũi tên chỉ hướng của bộ lọc vẽ bằng CSS, xoay khi mở
  • Trên điện thoại hai ô giữ cùng một hàng thay vì xếp dọc

13.4.1

  • Sửa gợi ý phí vận chuyển bị cắt vụn tại dấu phẩy. Lược đồ REST khai kiểu
  • tools/verify-references.py cảnh báo tham số REST khai kiểu chuỗi kèm 'items'

13.4.0

  • Thêm hóa đơn bán lẻ bên cạnh báo giá. Chọn bằng tab ngay trong khung xuất.
  • Hóa đơn khác báo giá ở bản chất, không chỉ tiêu đề: số chứng từ tiền tố HD,
  • Ghi chú chân hóa đơn khai riêng trong Cài đặt AI, bỏ trống thì dùng chung
  • Tên file tải về theo loại: bao-gia-*.png hoặc hoa-don-*.png

13.3.0

  • Thêm phí vận chuyển vào báo giá. Mỗi khoản một dòng riêng có tên, không gộp
  • Năm gợi ý bấm nhanh sẵn có: Grab ra bến xe, Grab ra nhà xe, phí vào cổng,
  • Phí cộng sau thuế, hiện trên cả ảnh báo giá lẫn bản chép chữ

13.2.3

  • Lỗi 429 của Google phân biệt được ba trường hợp thay vì gộp một. Google trả
  • Thông báo hết hạn mức ngày nói rõ gói Gemini Plus của ứng dụng Gemini KHÔNG
  • Thêm cảnh báo về hạn mức Gemini Free tier trong trang Cài đặt AI

13.2.2

  • Bước tra mã tự lấy mã và tên đã có, không phải gõ lại. Bản trước chỉ đổ mã
  • Vào bước tra mã mà đã có mã sẵn thì tự chạy tìm kiếm luôn
  • Hiện tên phụ tùng đang tra ngay dưới ô nhập, để biết mình đang tra cái gì
  • Gửi kèm tên cho AI: mã có thể trùng giữa các hãng, nhưng mã trùng kèm cùng

13.2.1

  • Tra mã trên internet giờ luôn tìm kèm tên hãng. Bản trước chỉ nói cho AI
  • Lỗi 429 tách làm hai: hết hạn mức tài khoản và nhà cung cấp đang bận. Hai

13.2.0

  • Bước 2 mới trong wizard: nhập mã, AI tìm trên internet mô tả kỹ thuật và
  • Kết quả KHÔNG tự đổ vào biểu mẫu. Người nhập tick từng phần muốn dùng, vì
  • Luôn hiện nguồn tham khảo dạng liên kết mở được, để tự đối chiếu. Không có
  • Nguồn lưu vào meta _epc_sources để rà lại sau
  • Dùng web_search của Anthropic hoặc google_search của Gemini. WP AI Client
  • Gom việc chèn HTML máy chủ về EPCDom.serverHtml(): innerHTML giờ chỉ tồn

13.1.0

  • Sửa lỗi hết thời gian chờ khi AI đọc tem nhãn. Bản 13.0.0 hạ thời gian chờ
  • Thời gian chờ thành ô cài đặt, dải 15–180 giây, trong Phụ Tùng → Cài đặt AI
  • Lỗi hết thời gian chờ báo riêng kèm cách khắc phục, thay vì gộp chung vào
  • Wizard gợi ý bớt ảnh tem khi gặp lỗi này với nhiều ảnh

13.0.1

  • Sửa lỗi nghiêm trọng khi mở bảng chẩn đoán hoặc lưu phụ tùng: hàm kiểm tra
  • tools/verify-references.py bắt luôn lời gọi tới các hàm namespace đã xoá

13.0.0

  • Chống trùng mã giờ so trên chuỗi đã chuẩn hoá. Trước đây "1012010-E01" và
  • Không còn rò đường dẫn file và câu lỗi PHP cho người dùng thường: WordPress
  • Giới hạn lượt AI chuyển sang cửa sổ cố định một giờ; trước đây TTL bị đặt
  • Timeout gọi AI 45 giây xuống 30 để đỡ giữ worker PHP-FPM.
  • Cảnh báo khi bảng chỉ mục không chạy InnoDB — trên MyISAM thì ROLLBACK bị
  • Abilities API đi qua rest_do_request thay vì gọi thẳng controller, nên
  • Bỏ inline script gắn vào jquery-core trong màn hình sửa phụ tùng, thay bằng
  • Dọn PHPDoc treo còn sót sau refactor.

12.12.0

  • Ảnh báo giá: mọi nhãn to hơn và đậm hơn. Nhãn cột 20 lên 24px, số lượng và
  • Bỏ hẳn bậc màu xám nhạt trên ảnh báo giá — chứng từ gửi khách thì mọi dòng

12.11.0

  • Trên điện thoại, lớp phủ bỏ đệm ngang và khung trắng rộng đúng bằng trang
  • Ảnh lớn trong trang chi tiết bỏ khung nền xám và tỉ lệ ép 4/3: ảnh tự
  • Ảnh trên thẻ kết quả chuyển sang object-fit cover, lấp đầy ô

12.10.0

  • Thang bo góc mới: nút và ô nhập 10px, thẻ 14px, sheet 18px. Chỉ huy hiệu
  • Nút nhỏ lại: đệm 11/18px thay vì 15/26px, chữ 14px, viền 1px thay vì 2px
  • Bớt lớp khung lồng nhau: lề ngoài lớp phủ và đệm trong sheet đều giảm,
  • Sửa nhãn "Ảnh đại diện" đè lên hai nút xoay: chuyển lên góc trái trên,

12.9.0

  • Ảnh tải lên: cạnh dài nhất 2048px, chất lượng JPEG 0.85
  • Ảnh nhỏ hơn ngưỡng và không cần đóng dấu thì giữ nguyên bản gốc
  • Gộp thu nhỏ và đóng dấu thành MỘT lượt giải mã, vẽ, mã hoá. Trước đây chế
  • Trần tải lên phía máy chủ nâng lên 12 MB cho khớp kích thước mới

12.8.1

  • Sửa trang chi tiết phụ tùng vẫn hiện hai cột trên điện thoại: khối
  • Nới ngưỡng xếp dọc lên 46rem cho khớp bề rộng cột ảnh
  • Thêm tools/verify-css.py: kiểm mọi @container có container-name tương ứng,

12.8.0

  • admin-settings.js dựng bảng chẩn đoán và các danh sách chọn bằng DOM
  • Luật ESLint no-restricted-properties chặn innerHTML, outerHTML và
  • Ngoại lệ duy nhất: dom.js và hàm serverHtml() trong script.js, chèn mô tả

12.7.0

  • Thẻ kết quả tra cứu thiếu trường price_raw nên món thêm vào giỏ từ đó bị
  • payload() khai price_raw hai lần, PHP im lặng lấy cái sau — đã gộp
  • Đổi khoá lưu giỏ sang v2 để bỏ giỏ cũ mang giá sai
  • quote.js và cart.js dựng hoàn toàn bằng DOM
  • Xoá hàm esc() — không còn nơi nào ghép chuỗi HTML từ dữ liệu

12.6.0

  • Khay ảnh, dải ảnh tem, danh sách dòng xe, gợi ý và bảng xem lại đều dựng
  • Bỏ toàn bộ cơ chế gắn sự kiện qua thuộc tính data-*: listener giờ là
  • Còn lại: quote.js và cart.js (đợt 3), admin-settings.js (đợt 4)

12.5.1

  • dom.js không được enqueue nên trang tra cứu vỡ ngay khi tải
  • heartbeat chưa bao giờ được enqueue — nonce REST không tự làm mới từ 11.1.0
  • cart.js và cart.css chưa bao giờ được enqueue — giỏ báo giá nhiều món
  • Viết lại phần enqueue tường minh với chuỗi phụ thuộc rõ ràng
  • Thêm tools/verify-assets.py chặn lớp lỗi này: kiểm hai chiều giữa file

12.5.0

  • Thêm assets/js/dom.js: bộ dựng DOM nhỏ, chuỗi luôn qua createTextNode nên
  • script.js dựng thẻ kết quả, trang chi tiết và danh sách dòng xe bằng DOM
  • Tô sáng từ khoá bọc bằng phần tử thật thay vì ghép chuỗi HTML bằng regex
  • Còn lại: wizard.js (đợt 2), quote.js và cart.js (đợt 3),

12.4.0

  • Đơn vị rem và clamp() thay px cho cỡ chữ, khoảng cách, bo góc — giao diện
  • @container thay @media cho khung tra cứu và modal chi tiết: bố cục đo bề
  • Màu chữ và nền lấy từ theme.json, các sắc phụ pha bằng color-mix nên tự
  • Gộp bốn nhóm biến CSS rời rạc về một tiền tố epc- duy nhất

12.3.1

  • Sửa lỗi tra cứu không ra kết quả sau khi lên 12.3.0: migration chỉ dựng lại
  • Bảng chẩn đoán cảnh báo khi còn dòng chỉ mục thiếu chuỗi tra cứu

12.3.0

  • Tra cứu được cả mô tả, ghi chú nội bộ và tên dòng xe
  • Bỏ dấu tiếng Việt: gõ "loc dau" ra "Lọc dầu"
  • Khớp nhiều mảnh từ khoá: "lọc dầu n200" ra đúng phụ tùng, dù hai mảnh nằm

12.2.1

  • Danh sách chọn dòng xe có đường phân cách, viền khung, số phụ tùng mỗi

12.2.0

  • Gỡ @layer khỏi CSS. Style không thuộc layer nào luôn thắng style trong
  • Nút Thêm phụ tùng và nút Giỏ báo giá chuyển vào một thanh sticky nằm trong

12.1.1

  • Sửa nút đóng bị góc bo cắt và trôi khi cuộn ở trang chi tiết phụ tùng:
  • Chặn tràn ngang nên bảng chi tiết không còn kéo qua kéo lại được
  • Bỏ ID selector cuối cùng trong CSS

12.1.0

  • Nút xoay trái, xoay phải trên từng ảnh trong wizard. Xoay do máy chủ làm

12.0.4

  • Trên điện thoại, wizard, khung báo giá và giỏ báo giá nằm giữa màn hình

12.0.3

  • Sửa spinner quay mãi ở trang cài đặt: câu return nằm trong khối try nên
  • Lược đồ REST lấy giá trị hợp lệ thẳng từ backed enum. Chọn nhà cung cấp
  • Máy chủ đọc lại từ cơ sở dữ liệu sau khi lưu và báo rõ nếu ghi không thành
  • Bảng chẩn đoán hiện nhà cung cấp, model và tình trạng khóa đang lưu thật

12.0.2

  • Sửa lỗi bấm "Thêm phụ tùng" lại hiện phụ tùng vừa nhập hoặc vừa sửa:
  • Bản nháp quá 6 giờ không tự khôi phục nữa

12.0.1

  • Sửa lỗi mất toàn bộ CSS: selector trần trong @scope được hiểu là con cháu

12.0.0

  • Backed enum thay chuỗi rời rạc: AiProvider, WatermarkMode, WatermarkAngle,
  • Bỏ toàn bộ toán tử @ chặn lỗi
  • Mệnh đề IN dùng placeholder qua prepare thay vì nối chuỗi
  • Kiểm tra $wpdb->last_error sau mỗi truy vấn quan trọng
  • Tạo phụ tùng bọc trong transaction, hỏng giữa chừng thì hoàn nguyên
  • Khóa API mã hoá bằng salt trong wp-config trước khi lưu vào cơ sở dữ liệu
  • Đăng ký Abilities API: tra cứu phụ tùng và liệt kê dòng xe
  • Đăng ký 5 lệnh vào Command Palette
  • Thêm WP AI Client làm nhà cung cấp AI thứ ba
  • CSS bọc trong @layer epc và @scope (.epc-ui), bỏ hết !important và ID

11.6.0

  • Danh sách model tải thẳng từ nhà cung cấp thay vì nhúng cứng trong code.
  • Model Gemini mặc định lên gemini-3.6-flash
  • Bỏ tham số temperature khi gọi Gemini — Google đã đánh dấu deprecated

11.5.0

  • Nút lưu ảnh vừa chụp vào máy ở bước ảnh của wizard. Trên iPhone, ảnh chụp

11.4.0

  • Watermark đóng dấu ngay khi tải ảnh lên, tuỳ chọn trong cài đặt
  • Chọn kiểu lát nền: xéo hoặc ngang
  • Gộp hai công tắc watermark cũ thành một ô chọn phạm vi
  • Tách công thức watermark ra module dùng chung cho wizard và báo giá

11.3.4

  • Sửa lỗi không lưu được Cài đặt AI: listener của thanh độ đậm watermark
  • Thêm ESLint với luật no-use-before-define để chặn lại lớp lỗi này

11.3.3

  • Chỉ đổi tỉ lệ hai cột trên ảnh báo giá một món: ảnh từ 35% lên 48% bề ngang.

11.3.1

  • Watermark rõ hơn 15% trên cả tấm báo giá lẫn ảnh phụ tùng
  • Thêm thanh chỉnh độ đậm watermark 25-300% trong cài đặt

11.3.0

  • Đóng dấu cả ảnh phụ tùng gửi kèm, không chỉ tấm báo giá
  • Dải chân ảnh ghi tên công ty và số điện thoại
  • Ảnh gốc trong thư viện không bị ghi đè — chỉ bản gửi đi mới có dấu

11.2.2

  • Sửa lỗi nghiêm trọng khi thêm dòng xe: callable [Parts::class, 'validate_filled']
  • Thêm tools/verify-references.py kiểm tra callable mảng và self::

11.2.1

  • Sửa lỗi nghiêm trọng: callback gắn vào set_object_terms ép kiểu quá chặt,
  • Bắt lỗi PHP chí mạng ngoài REST, hiện lại trong bảng chẩn đoán
  • Chống null khi đọc lại dòng xe vừa tạo
  • wp_count_terms trả WP_Error không còn bị ép (int)

11.2.0

  • Giỏ báo giá: gom nhiều phụ tùng rồi xuất một ảnh có bảng nhiều dòng
  • Watermark chìm trên ảnh báo giá, bật tắt và đổi chữ trong cài đặt
  • noindex, nofollow, noarchive cho toàn bộ phần thuộc plugin
  • Sửa bố cục mobile: thoát khung theme, thẻ kết quả xếp ngang

11.1.0

  • Sửa phụ tùng ngay trên trang tra cứu, dùng lại wizard ở chế độ sửa
  • Capability epc_see_cost tách quyền xem giá nhập khỏi quyền nhập liệu
  • Nonce REST tự làm mới qua Heartbeat, máy tính bảng mở cả ngày không lỗi 403
  • Tách hai nhà cung cấp AI thành class riêng sau interface chung
  • Tách lược đồ REST khỏi tầng Domain

11.0.0

  • Tái cấu trúc PSR-4 với autoloader tự viết, không cần Composer khi chạy
  • Điều hướng nạp theo ngữ cảnh request
  • Tách God class Rest thành router và 6 controller

10.0.0

  • Tách bảng chỉ mục làm hai, bỏ nhân bản dữ liệu theo dòng xe
  • Tra cứu ba lượt, thêm cột code_key chuẩn hóa
  • Dựng thẻ kết quả bằng 3 truy vấn thay vì hơn 200

9.0.0

  • Chuyển toàn bộ sang REST API với tham số khai báo
  • Gộp hai đường ghi dữ liệu về một service duy nhất