Ngân sách trong xây dựng

Chào các anh/chị,

Hiện tại tại App 13 (Ngân sách), em cần tính tổng Chi phí cam kết (Committed Cost) cho từng Dòng ngân sách nhằm kiểm soát trần chi tiêu. Tuy nhiên, giá trị cam kết này lại phát sinh từ hai nguồn khác nhau:

  • App 16 (Đơn mua hàng - PO): ghi nhận khi PO được phê duyệt.

  • App 22 (Gói thầu phụ): ghi nhận khi hợp đồng giao khoán chuyển sang trạng thái Đang thực hiện.

Em đang cân nhắc giữa hai phương án:

Phương án 1 – Rollup + Formula

Tạo 2 trường Rollup riêng trên App Ngân sách:

  • Committed_PO
  • Committed_Subcontract.
  • Sau đó sử dụng trường Formula để tính:
  • Committed = Committed_PO + Committed_Subcontract

Phương án 2 – Automation cộng dồn trực tiếp theo spec yêu cầu

  • Tạo trường Committed dạng Number.

  • Thiết lập Automation từ App PO và App Gói thầu phụ để cộng dồn giá trị vào trường này khi chứng từ đủ điều kiện ghi nhận cam kết.

Hiện tại em đang chọn về Phương án 1 vì dữ liệu tài chính cần đảm bảo tính chính xác và khả năng đối soát. Việc sử dụng Rollup giúp giá trị cam kết luôn được tính toán dựa trên dữ liệu nguồn hiện tại và cập nhật theo thời gian thực.

Trong khi đó, với Phương án 2, em lo ngại các trường hợp PO hoặc Hợp đồng thầu phụ bị hủy, điều chỉnh giá trị hoặc thay đổi trạng thái sau khi đã ghi nhận cam kết. Khi đó Automation sẽ phải xử lý các nghiệp vụ hoàn tác (rollback) hoặc cập nhật chênh lệch. Nếu logic không được thiết kế đầy đủ, có thể dẫn đến sai lệch số liệu ngân sách.

Không biết trong các dự án thực tế, các anh/chị thường ưu tiên hướng tiếp cận nào cho bài toán này? Rất mong nhận được thêm góc nhìn và kinh nghiệm từ mọi người. Em cảm ơn ạ.

1 Like

Hi nhóm,

Trước khi đi vào câu hỏi cụ thể của nhóm, theo mình với bài toán tính Committed Cost cho ngân sách, nhóm không nên ưu tiên dùng Automation trong tính toán - Số lần trigger automation trên hệ thống là có giới hạn, nếu ứng dụng theo cách này sẽ ảnh hưởng đến khả năng xử lí của hệ thống.

Lý do là hệ thống đã hỗ trợ các loại field như Reference/Data Connection, Rollup và Formula, vốn phù hợp hơn cho các bài toán tính toán lũy kế, tổng hợp dữ liệu từ chứng từ nguồn và thiết lập điều kiện tính toán theo trạng thái.

Trong trường hợp này, giá trị Committed Cost phát sinh từ nhiều nguồn như POHợp đồng thầu phụ. Vì vậy, cách an toàn hơn là để dữ liệu được tổng hợp từ các bản ghi nguồn thông qua Rollup, sau đó dùng Formula để tính tổng cam kết:

Committed Cost = Committed_PO + Committed_Subcontract

Cách làm này giúp số liệu ngân sách luôn bám theo dữ liệu gốc hiện tại. Nếu PO hoặc hợp đồng thầu phụ bị hủy, điều chỉnh giá trị hoặc thay đổi trạng thái, số liệu Rollup sẽ phản ánh lại theo nguồn dữ liệu, thay vì phải xử lý thêm các logic hoàn tác, cộng bù hoặc trừ bù như khi dùng Automation.

Do đó, mình nghiêng về Phương án 1 - Rollup + Formula làm hướng xử lý chính. Automation nếu có thì chỉ nên dùng cho các nghiệp vụ hỗ trợ như gửi cảnh báo vượt ngân sách, cập nhật trạng thái, ghi log hoặc thông báo cho người phụ trách, chứ không nên dùng làm cơ chế cộng dồn chính cho dữ liệu tài chính.

Tóm lại, với các dữ liệu liên quan đến ngân sách và chi phí, nên ưu tiên nguyên tắc: số liệu chính phải được tính từ chứng từ nguồn và có khả năng đối soát, thay vì chỉ ghi nhận bằng Automation cộng dồn.

– Nếu có thắc mắc thì các bạn có thể hỏi và mình sẽ giải đáp sớm nhất –

2 Likes