Cải tiến Lệnh sản xuất — Tổng hợp trạng thái NVL "Có thể xuất NVL / Cần nhập thêm NVL" bằng 1 field duy nhất

Bài toán mình đang giải là gì?

Trong app Lệnh sản xuất (ProductionOrder), mỗi lệnh có một bảng NVL cần cấp phát gồm nhiều dòng nguyên vật liệu. Trước khi phát hành lệnh xuống sàn sản xuất, Trưởng SX cần biết:

  • NVL nào đủ tồn kho → xuất ngay

  • NVL nào thiếu → cần mua thêm

Vấn đề: Với lệnh SX có 10–15 dòng NVL, Trưởng SX phải mở từng dòng kiểm tra tồn kho so với số lượng yêu cầu → mất thời gian, dễ bỏ sót, và không có cái nhìn tổng thể để ra quyết định nhanh.
Hai hướng mình đang cân nhắc:

Hướng 1: Kiểm tra thủ công từng dòng: Mỗi dòng NVL có field Kiểm tra tồn kho hiển thị “đủ” hoặc “thiếu X”. Trưởng SX tự scan mắt qua toàn bộ danh sách để đánh giá.

Hướng 2: Tổng hợp tự động bằng Formula + Rollup: Thêm các field tính toán ở cấp sub-entity để tổng hợp lại nếu có dòng nào còn thiếu thì trả về 1 dòng là “cần nhập thêm/cần mua thêm”, bên cạnh đó nếu tất cả các dòng đều đã đủ thì sẽ trả về 1 dòng là “sẵn sàng để xuất”.

Mình đang nghiêng về hướng 2 vì:

  • Trưởng sx chỉ cần nhìn 1 field là biết ngay tình trạng NVL thiếu hay đủ để quyết định ngay lập tức mà không cần soi từng dòng trong sub-entity nữa.

? Tuy nhiên, mình lo lắng về việc Lệnh SX vốn đã là 1 app lớn với nhiều sub-entity nên nếu thêm vào các rollup hoặc formula có thể gây ảnh hưởng hiệu năng hoặc nếu nó được tái sử dụng tại nơi khác có thể gây ra lỗi vòng lặp tham chiếu. Vậy nên mình rất muốn nghe ý kiến của mọi người về việc thêm các rollup và formula vào các app có nhiều bảng sub-entity thì có gây tốn hiệu năng không? Ngoài ra, ngoài 2 trạng thái là đủ/thiếu NVL thì có nên thêm “đang chờ mua” để theo dõi chi tiết hơn không?

Hi Trí,

Ý tưởng chọn Hướng 2 của người bạn đó là hoàn toàn chính xác về mặt trải nghiệm người dùng (cần cái nhìn tổng thể chớp nhoáng). Đồng thời, nỗi lo về hiệu năng và vòng lặp tham chiếu cũng hoàn toàn có cơ sở.

  1. Việc dùng Rollup và Formula ở cấp độ Lệnh Sản Xuất (Entity cha) là cần thiết để có cái nhìn tổng quan. Tuy nhiên, để hệ thống chạy nhẹ nhàng và trực quan nhất, thay vì dùng Formula phức tạp để trả về các đoạn text dài (như “Cần nhập thêm” hay “Sẵn sàng để xuất”), chúng ta sẽ dùng Hiển thị theo điều kiện ngay trên trường Rollup. Ví dụ: Trường Rollup là NVL tồn kho, lúc này sẽ setup điều kiện hiển thị Nếu giá Field NVL tồn kho < Field NVL cần xuất → Lúc này Trưởng SX chỉ nhìn qua sẽ lập tức biết NVL đang thiếu so với nhu cầu xuất kho.
  2. Thêm vào trạng thái “Đang chờ mua“ là một ý kiến hay. Nếu không có trạng thái “Đang chờ mua” hoặc “Hàng đang về”, Trưởng SX sẽ lại tiếp tục thúc giục hoặc tạo thêm một yêu cầu mua hàng mới, dẫn đến rủi ro đọng vốn do mua thừa NVL. Việc thêm trạng thái này giúp các phòng ban (Sản xuất - Kho - Mua hàng) đồng bộ thông tin với nhau tốt hơn.