Quy trình sản xuất (Lưu trữ tồn kho)

Hiện tại thì mình đang làm dự án cho một xưởng sản xuất quy mô vừa, và trong quá trình triển khai thì mình lại có vấn đề về thiết kế luồng dữ liệu quản lý số lượng tồn kho. Mình thì muốn làm sao để hiệu năng hệ thống có được performance tốt và tối ưu cả UX cho user. Vấn đề cụ thể của mình thì trong spec dự án thì muốn lưu trữ thông tin sản phẩm (app A) và tra cứu thông tin tồn kho (app B) ở 2 app khác nhau, cái này dẫn tới việc user phải chuyển đổi qua lại để kiểm tra gây bất tiện. Vì ở app A thì chứ thông tin và giá thành chuẩn còn app B lại chứa tên và tổn kho thôi mà mình thì lại muốn quan sát tồn kho và giá thành chuẩn để lên kế hoạch nhập tối ưu dòng tiền. Dựa vào đó thì mình đang cần thêm một số recommend của mọi người, riêng mình thì có hai hướng như sau, nhờ mọi người xem thử:

  1. Tất nhiên là giữ nguyên như spec rồi.
  2. Mình sẽ tinh chỉnh app A thành một Kho sản phẩm bằng cách tạo thêm các field cần cho thông tin tồn kho như Tổng kho nhập/xuất, Tổng tồn kho NVL/ thành phẩm,…. Bên cạnh đó app B sẽ biến thành một table chỉ chứa các dòng nhập/xuất chỉ để báo cáo cuối kỳ đã xuất gì nhập gì, giá tiền ra sao để kế toán kiểm tra.

Mình hiện tại đang theo hướng số 2 vì vài lý do như sau:

  1. Tối ưu được UX user: Khi sales lên đơn hàng thì chỉ cần xem trực tiếp tồn kho cùng với những thông tin sản phẩm mà ko cần di chuyển qua nhiều app khác.
  2. Tối ưu hóa dòng Automation: Khi lệnh sản xuất cần tính toán nguyên vật liệu thì chỉ cần đối chiếu với app A thay vì phải nhìn thông tin app A rồi vòng qua app B.
  3. Tận dụng sự linh hoạt của Cleeksy: Dù biết master data không thể có chứa các metrics nhưng với cơ chế rollup chéo như vậy thì app được tận dụng triệt để hơn mà không tốn thêm quá nhiều tài nguyên chứa dữ liệu.

Ngoài vấn đề đó ra thì mình cũng muốn lắng nghe thêm về 2 vấn đề sau:

  1. Với quy mô SME (giao dịch vừa phải, SKU dưới 10.000), việc đặt Rollup tồn kho trực tiếp trên App A có thực sự gây ra rủi ro về hiệu năng tải trang hoặc khóa dữ liệu (data locking) trên Cleeksy khi có nhiều transaction nhập/xuất đồng thời hay không?
  2. Mọi người có kinh nghiệm thực tế nào về việc xử lý App B Thẻ kho (Stock Card) trên no-code không? Nên giữ nó làm ledger ghi nhận từng dòng transaction lịch sử hay chỉ cần rollup tổng số lượng là đủ?

Cám ơn mọi người đã quan tâm!!!

Hi Hòa,

Thiết kế

Mình ủng hộ ý kiến thiết kế theo hướng số 2 của bạn.Đúng như bạn nói, thiết kế này giúp Sales hay Quản đốc sản xuất chỉ cần vào đây là thấy bức tranh toàn cảnh: Hàng tên gì, giá bao nhiêu, trong kho còn mấy cái để lên đơn/lệnh sản xuất ngay lập tức. Tuy nhiên, App B (App quản lý Thẻ kho/ Sổ kho) không phải chỉ là cái bảng báo cáo cuối kỳ cho kế toán. Nó là cốt lõi của việc quản trị tính minh bạch để truy vết: Ai đã xuất? Xuất lúc nào? Xuất cho lệnh sản xuất hay đơn hàng nào?..

Hiệu năng

Khi một dòng Nhập/Xuất được tạo ở App B, hệ thống trigger update giá trị Rollup sang App A ở background (chạy ngầm). Người dùng mở App A ra thực chất là xem một con số đã được tính sẵn, chứ không phải lúc mở App ra hệ thống mới đi cộng trừ lại từ đầu. Do đó, UX tải trang không hề bị ảnh hưởng.

Khi Kho xuất 5 cái, đồng thời nhập 10 cái cùng lúc, hệ thống sẽ xếp hàng các lệnh và xử lý tuần tự. Rollup sẽ trả về kết quả cuối cùng là +5. Sẽ không bao giờ có chuyện sập hệ thống hay khóa App A.

App Thẻ kho

Thiết kế theo hướng ghi lại rollup tổng lượng bản chất là lệnh ghi đè. Dữ liệu cũ bị xóa mất để thay bằng số mới, dẫn đến việc mất hoàn toàn dấu vết lịch sử nếu có gian lận hoặc sai sót nhập liệu.
Thiết kế theo hướng làm ledger ghi nhận từng dòng transaction lịch sử là Ghi nhận độc lập từng lần nhập/ xuất. Mọi biến động đều để lại thông tin (thời gian, chứng từ gốc). Từ đó có thể truy vết khi thất thoát xảy ra hay có thể kiểm soát trách nhiệm khi quản lý Ai là người yêu cầu? Phê duyệt? Tham chiếu từ lệnh sản xuất nào? Diễn ra vào thời gian nào?..