Inventory Transactions trong AX 2012

Trong quá trình làm việc với Microsoft Dynamics AX 2012, mình nhận ra việc hiểu đúng cách hệ thống vận hành có vai trò rất quan trọng góp phần nâng cao hiệu quả khai thác hệ thống và sự cộng tác giữa các bộ phận xuyên suốt qua cả quy trình vận hành.

Ở trung tâm của báo cáo hàng tồn kho đó chính là inventory transactions. Dữ liệu inventory transaction phản ánh toàn bộ vòng đời của hàng hóa trong hệ thống. Khi hiểu rõ cách từng giao dịch được ghi nhận, cập nhật và kết nối giữa InventoryLedger, chúng ta không chỉ xử lý được sai lệch dữ liệu, mà còn nhìn thấy được bức tranh vận hành tổng thể của doanh nghiệp một cách rõ ràng hơn.

Bài viết này được chia sẻ dành cho tất cả những ai đang làm việc với AX 2012, từ người quản lý, nhân viên kế hoạch, mua hàng, sản xuất cho đến tài chính. Khi bạn hiểu được cách hệ thống “cập nhật”, việc phân tích báo cáo tồn kho sẽ không còn là một thao tác kỹ thuật, mà trở thành hành trình thú vị để khám phá sức mạnh thật sự của dữ liệu.

Các trạng thái của Inventory Transaction

Trong Microsoft Dynamics AX, mỗi inventory transaction đều có một vòng đời dữ liệu, bắt đầu từ khi giao dịch được tạo ra cho đến khi hoàn tất. Trong suốt vòng đời này, hệ thống cập nhật trạng thái (status) của transaction để phản ánh mức độ hoàn thành của quy trình nhập – xuất – ghi sổ.

Trên màn hình Inventory transactions, bạn sẽ thấy hai cột chính:

  • Receipt status – phản ánh trạng thái của các giao dịch nhập hàng
  • Issue status – phản ánh trạng thái của các giao dịch xuất hàng

Một transaction chỉ thuộc về một trong hai loại: hoặc nhập (receipt), hoặc xuất (issue). Nếu transaction thuộc nhóm nhập, cột receipt status sẽ có giá trị và issue status sẽ trống, và ngược lại.

Lưu ý

– “Receipt” không phải lúc nào cũng làm tăng hàng tồn kho, và “Issue” không phải lúc nào cũng làm giảm hàng tồn kho.
– Tác động tăng hay giảm còn phụ thuộc vào bản chất của giao dịch, đó là nhập mua hàng, hay nhập trả hàng, xuất bán hàng hay xuất hoàn trả.

1. Các trạng thái của giao dịch nhập hàng (Receipt Status)

Một transaction nhập hàng sẽ trải qua ba trạng thái chính:

  • Ordered – Giao dịch đã được tạo (ví dụ: purchase order đã được xác nhận), nhưng hàng chưa được nhận thực tế.
  • Received – Hàng đã được nhận vào kho, tuy nhiên chưa có hóa đơn tài chính từ nhà cung cấp, nên hệ thống mới chỉ cập nhật về mặt vật lý (physical).
  • Purchased – Giao dịch đã hoàn tất: hóa đơn nhà cung cấp đã được ghi nhận, hệ thống cập nhật cả vật lý (physical)tài chính (financial). Ở trạng thái này, hàng hóa đã được ghi nhận chính thức vào tồn kho, đồng thời công nợ với nhà cung cấp cũng được hình thành trong sổ kế toán.

2. Các trạng thái của giao dịch xuất hàng (Issue Status)

Khác với nhận hàng, một transaction xuất hàng trong AX có nhiều trạng thái hơn, phản ánh các bước từ lúc lên đơn đến khi hoàn tất hóa đơn bán hàng:

  • On order – Đơn hàng xuất (ví dụ: sales order) đã được tạo, nhưng hàng chưa được giữ hay xuất.
  • Reserved ordered – Hàng được giữ (reserve) cho đơn hàng này, nhưng là hàng sẽ về từ một đơn mua (purchase order) hoặc lệnh sản xuất khác.
  • Reserved physical – Hàng đã được giữ trực tiếp từ tồn kho thực tế (on-hand inventory) trong kho. Hệ thống đảm bảo rằng hàng này không được xuất cho đơn hàng khác.
  • Deducted – Hàng đã được giao ra khỏi kho (packing slip đã post), nhưng chưa có hóa đơn bán hàng. Hệ thống mới ghi nhận thay đổi vật lý (physical).
  • Sold – Giao dịch đã hoàn tất, hóa đơn bán hàng đã được post. Hệ thống cập nhật cả physicalfinancial, và giá trị hàng hóa được ghi nhận vào doanh thu, giá vốn tương ứng.

Hiểu rõ vòng đời và trạng thái của từng inventory transaction là bước đầu tiên để làm chủ dữ liệu hàng tồn kho trong AX 2012. Một khi bạn nắm được cách hệ thống “cập nhật” các trạng thái này, mọi vấn đề về lệch số liệu giữa báo cáo tồn kho và sổ kế toán sẽ trở nên dễ dàng phân tích, truy vết và giải quyết.

Phân biệt Physical – Financial – Closing

Khi làm việc với hệ thống tồn kho trong AX 2012, bạn sẽ thường nghe đến hai khái niệm quen thuộc: PhysicalFinancial. Tuy nhiên, hiểu đúng về chúng lại là yếu tố quyết định để đảm bảo dữ liệu tồn kho và sổ kế toán luôn đồng nhất.

Thực tế, mỗi inventory transaction trong AX có thể trải qua ba trạng thái chính: Physical, FinancialClosing (Settlement). Mỗi trạng thái thể hiện một giai đoạn khác nhau trong vòng đời của giao dịch hàng hóa.

1. Physical – Ghi nhận vật lý, giá trị tạm tính

“Physical” không chỉ thể hiện sự thay đổi về số lượng hàng hóa, mà còn có giá trị tạm tính đi kèm.
Tuy nhiên, giá trị này chưa phải giá trị chính thức, vì giao dịch vẫn chưa được “close” và có thể còn thay đổi sau này.

Ví dụ thực tế:

  • Ngày 5/7/2019, hàng được nhận vào kho (theo PO) với giá trị tạm tính dựa trên đơn hàng — chẳng hạn 6.549.000 VND.
  • Tại thời điểm này, AX cập nhật số lượng và giá trị tạm trên sổ phụ Inventory, nhưng chưa có bút toán nào ghi nhận trên Ledger (sổ cái kế toán).

Điều này có nghĩa: tồn kho trên hệ thống đã tăng, nhưng kế toán vẫn “chưa thấy gì” — vì chưa có chứng từ tài chính được ghi nhận.

2. Financial – Ghi nhận tài chính

Khi hóa đơn tài chính được post (ví dụ ngày 31/8/2019), giao dịch bước sang trạng thái Financial.
Lúc này, hệ thống chốt giá trị thật sự của giao dịch, ghi nhận vào Ledger, và phản ánh chính xác giá trị hàng tồn kho cùng công nợ nhà cung cấp.

Ở ví dụ trên, giá trị sau khi post hóa đơn thay đổi nhẹ — còn 6.521.000 VND, do chênh lệch tỷ giá giữa thời điểm nhận hàng và thời điểm lập hóa đơn.

Điều đó cho thấy:

  • Physical là bản ghi tạm, dựa trên giá trị ước tính.
  • Financial là bản ghi chính thức, phản ánh giá trị thật sau khi đã có hóa đơn tài chính.

Từ đây, transaction mới thực sự hoàn chỉnh về giá trị kế toán.

3. Closing – Hoàn tất, cố định giá trị

Ngay cả khi đã có Financial, giá trị hàng tồn kho vẫn có thể điều chỉnh nếu inventory chưa được Close.
Khi hệ thống chạy Inventory Close (ví dụ ngày 30/6/2020), AX sẽ chốt tất cả các giao dịch tồn kho, cập nhật mọi chênh lệch, điều chỉnh giá vốn phát sinh từ tỷ giá, chi phí bổ sung (misc. charge), hay thay đổi giá trị thực tế.

Sau khi Close, giá trị được gắn thêm phần “Amount Settled”, ví dụ tăng từ 6,5 triệu lên 7,6 triệu VND sau điều chỉnh.
Từ thời điểm đó, transaction được xem là hoàn tất, không thể thay đổi trừ khi mở lại kỳ Inventory Close.

Một điểm quan trọng cần lưu ý
Tùy vào cấu hình hệ thống (setup), AX có thể được thiết lập để Physical có hoặc không ghi nhận lên Ledger.

  • Nếu Physical không post vào Ledger, tồn kho trong sổ phụ sẽ thay đổi nhưng sổ cái kế toán thì không.
  • Nếu Financial mới post vào Ledger, thì chỉ khi có hóa đơn, giá trị mới được cập nhật vào sổ cái.

Điều này giải thích vì sao Inventory Value ReportLedger Trial Balance đôi khi không khớp nhau, dù người dùng nghĩ dữ liệu là giống nhau.

Hiểu đúng về Physical – Financial – Closing chính là bước đầu tiên để “làm chủ” dữ liệu hàng tồn kho trong AX 2012.

  • Biết chính xác dữ liệu nào là tạm, dữ liệu nào đã chốt.
  • Hiểu vì sao có sự chênh lệch giữa tồn kho và kế toán.
  • Và quan trọng hơn hết, biết cách đọc dữ liệu hệ thống, nơi từng dòng transaction kể lại hành trình của hàng hóa từ kho đến sổ sách.

Khi bạn nắm vững ba trạng thái này, bạn không chỉ đối chiếu được báo cáo — bạn còn có thể giải thích được “vì sao” dữ liệu lại như vậy. Đó chính là năng lực thật sự của người làm chủ Dynamics AX 2012.

So sánh giá trị giữa Inventory và Ledger

Trong AX 2012, khác biệt về giá trị giữa sổ phụ Inventory và sổ cái Ledger là chuyện thường gặp, và thường bắt nguồn từ cách hệ thống được setup và thứ tự nghiệp vụ được thực hiện. Hiểu rõ nguyên nhân sẽ giúp bạn không bị bất ngờ khi đối chiếu số liệu, đồng thời biết phải làm gì để kiểm soát.

Nguyên nhân chính khiến Inventory và Ledger khác nhau

  • Physical không post lên Ledger. Một số doanh nghiệp tắt tính năng post physical lên ledger để tránh đưa các giao dịch tạm (nhận hàng rồi trả lại, kiểm tra chất lượng, v.v.) vào sổ cái. Kết quả: sổ phụ inventory thay đổi về số lượng/giá trị, nhưng ledger không phản ánh.
  • Thời điểm post invoice (financial date) khác thời điểm nhận hàng (physical date). Giá trị ghi ở physical thường là giá tạm tính theo PO; khi hóa đơn được post, giá trị có thể thay đổi (do tỷ giá, misc charges…), dẫn đến khác biệt.
  • Inventory Close (settlement) chạy muộn hoặc chưa chạy. Ngay cả khi đã có financial, nếu kỳ inventory chưa close thì vẫn có thể có điều chỉnh, và khi close, system sẽ thực hiện các điều chỉnh (adjustment) để chốt giá trị.
  • Multiple items / combined invoice postings. Ledger thường ghi tổng hoá đơn (sum) lên một hay vài voucher; inventory lưu theo từng item. Việc này gây khó khăn khi so sánh từng dòng nhỏ lẻ.
  • Cấu hình account theo item/site. Nếu items được cấu hình post vào nhiều tài khoản khác nhau, đối chiếu sẽ phức tạp hơn so với trường hợp tất cả post vào cùng một tài khoản.

Các bước thực tế để thu hẹp khoảng cách value

  1. Rà soát setup Inventory model → Post physical ledger integration. Xác định item nào post physical, item nào không. Lọc ra các trường hợp ngoại lệ (vật tư nhỏ, samples…).
  2. Quy định ngày áp dụng khi thay đổi chính sách. Nếu bắt đầu post physical từ ngày X, cần backdate/điều chỉnh sao cho 2 mô-đun khớp tại thời điểm xuất phát.
  3. Chạy Inventory Close đúng kỳ và kịp thời. Close chậm là nguyên nhân lớn tạo ra điều chỉnh lớn vào cuối kỳ.
  4. Tạo báo cáo đối chiếu thông minh. Loại bỏ các transactions có trạng thái không cần đối chiếu (ví dụ: những line có receipt/issue status chỉ tạm), hoặc có thể lập báo cáo customize để so sánh theo từng dimension.
  5. Thực hiện reconcile định kỳ theo item / site / batch. Drill-down tới từng inventory transaction để tìm nguyên nhân: do invoice, do exchange, do misc-charge hay do adjustment của close.
  6. Giao tiếp liên bộ phận và lưu quy trình. Kế toán và người vận hành kho/phòng mua/phòng sản xuất cần quy trình rõ ràng để kiểm soát khi nào giá trị được ghi nhận và ai chịu trách nhiệm.

Hợp tác khi đối chiếu dữ liệu

Khi thấy sự khác nhau giữa inventory và ledger, đừng vội “ép” hai mô-đun phải giống nhau bằng mọi giá. Trước tiên:

  • Kiểm tra setup: hệ thống được cấu hình thế nào? Có bật post physical không?
  • Kiểm tra luồng nghiệp vụ: có nhiều nhận-trả tạm khiến ledger bị “ồn”?
  • Drill down từng transaction: xác định ngày physical, ngày financial, ngày close, và các điều chỉnh trên voucher.

Kết luận

Khác biệt giá trị giữa Inventory và Ledger không phải là lỗi hệ thống mà thường là hệ quả của chính sách, cài đặt và quy trình vận hành. Nhiệm vụ của người quản trị AX và người làm báo cáo là phối hợp để thiết kế chính sách phù hợp, chạy close đúng kỳ, và có quy trình đối chiếu. Khi đó, sự khác biệt sẽ trở nên có thể giải thích và kiểm soát được.

Công thức tính Inventory Value

Trong Dynamics AX 2012, việc xác định giá trị hàng tồn kho tại một thời điểm cụ thể là bước quan trọng để đảm bảo dữ liệu giữa InventoryLedger khớp nhau. Tuy nhiên, do hệ thống quản lý đồng thời hai trạng thái PhysicalFinancial, nên nếu không hiểu rõ cách tính, người dùng rất dễ rơi vào tình huống “giá trị tồn kho không khớp sổ cái”. Dưới đây là công thức và phương pháp thực hành giúp bạn tính được Inventory Value có độ chính xác cao, phản ánh đúng trạng thái của dữ liệu tại thời điểm báo cáo.

Nguyên tắc tính toán

Khi đối chiếu giữa Inventory ValueLedger Value, bạn luôn cần xác định rõ thời điểm lọc dữ liệu (From Date – To Date). Tùy theo thời điểm này, hệ thống sẽ có những giao dịch chỉ mới ở trạng thái physical, hoặc đã financially posted. Vì vậy, công thức tính cần linh hoạt chọn giá trị cost amount phù hợp với trạng thái giao dịch tại thời điểm lọc.

Công thức tổng quát

Giả sử bạn có một cột phụ tên là InventoryValue_ToDate, công thức có thể mô phỏng như sau:

=IF(FinancialCloseDate <= ToDate, AmountSettled,
   IF(FinancialDate <= ToDate, FinancialCostAmount,
      IF(PhysicalDate <= ToDate, PhysicalCostAmount, 0)))

Giải thích:

  1. Nếu Financial Close Date nằm trong kỳ lọc (<= ToDate) → lấy Amount Settled (đã đóng sổ).
  2. Nếu chưa closed nhưng Financial Date nằm trong kỳ lọc → lấy Financial Cost Amount.
  3. Nếu giao dịch chỉ mới physical tại thời điểm đó → lấy Physical Cost Amount.
  4. Nếu cả ba điều kiện đều không thỏa → trả về 0 (giao dịch chưa tác động đến tồn kho tại thời điểm này).

Lưu ý khi phân tích và lọc dữ liệu

  • Luôn lọc theo Physical Date, vì đây là thời điểm làm thay đổi số lượng tồn kho thực tế.
  • Nếu bạn muốn xem tình hình tồn kho tại thời điểm chưa post tài chính, chỉ nên lấy Physical Cost Amount.
  • Nếu kỳ báo cáo của bạn bao gồm cả những giao dịch đã post tài chính, hãy lấy theo Financial Cost Amount hoặc Amount Settled tùy trạng thái.
  • Không nên “cố định” công thức lấy theo financial hay physical, mà phải linh hoạt dựa trên kỳ lọc dữ liệu (To Date).

Kinh nghiệm thực tế

Khi bạn thay đổi kỳ lọc (ví dụ: từ 1–5/7 sang 1/7–31/8), bạn sẽ thấy giá trị Inventory Value thay đổi nhẹ, vì tại thời điểm sau, một số giao dịch đã được post financial hoặc close, dẫn đến số liệu được cập nhật chính xác hơn. Đây chính là bản chất động (dynamic nature) của dữ liệu tồn kho trong AX: mỗi thời điểm là một “bức ảnh chụp” của hệ thống tại thời khắc đó.

Kết luận

Công thức trên giúp bạn hiểu cách AX tính giá trị hàng tồn kho và từ đó, có thể xây dựng báo cáo đối chiếu (reconciliation report) giữa Inventory và Ledger một cách chính xác. Điều quan trọng không nằm ở con số, mà là hiểu được cơ chế vận hành của dữ liệu, để bạn tự tin giải thích và kiểm soát được mọi biến động trong hệ thống.

Bạn cần dịch vụ đào tạo quản lý hàng tồn kho trong AX 2012 cho công ty vui lòng email về địa chỉ phat.nguyen@sks.vn

Dưới đây là clip một buổi đào tạo về Inventory Transactions trong AX 2012

Leave a Comment