Đến nội dung chính
ERP Thực Chiến
Thư viện
Menu

Item Journal đã duyệt vẫn không post được: lỗi "Imposed restriction"

Item Journal đã duyệt xong mà post vẫn báo restriction: Business Central gắn lại restriction khi dòng bị sửa sau lần duyệt cuối. Cách nhận ra và cách xử lý.

Item Journal đã duyệt mà post vẫn báo "The restriction was imposed because the journal batch requires approval" là do dòng journal bị sửa sau lần duyệt cuối. Business Central gắn lại restriction cho batch mỗi khi dòng bị thêm hoặc sửa, kể cả khi batch đã duyệt xong. Ô Approval Status lúc đó hiện Imposed restriction. Cách xử lý là gửi duyệt lại, duyệt xong thì post ngay.

Tôi đọc code Base Application 28.0 (codeunit Record Restriction Mgt., Approvals Mgmt., Item Jnl.-Check Line) rồi dựng lại lỗi trên một sandbox QA chép từ dữ liệu thật của một khách hàng sản xuất, ngày 09/10/2026. Lỗi này khách gặp từ đầu dự án. Nhóm dự án biết là do restricted record, nhưng chưa tìm ra vì sao duyệt xong rồi mà restriction vẫn còn.

Câu lỗi khi post#

mã
You cannot use Item Journal Batch: ITEM,<tên batch> for this action.
The restriction was imposed because the journal batch requires approval.

Duyệt Item Journal là tính năng mới từ bản 2026 release wave 1 (BC 28), dựng theo đúng cách duyệt General Journal Batch. Workflow tạo từ template Item Journal Batch Approval Workflow. Microsoft mô tả tính năng ở trang Approve requisition worksheets and item journals, còn cơ chế gắn và gỡ restriction nằm ở trang Restrict and allow usage of a record.

Restriction được gắn và gỡ lúc nào#

Đọc code thì có năm mốc:

  1. Gửi duyệt: bước đầu của workflow chạy response Add record restriction, gắn restriction lên batch.
  2. Người duyệt cuối cùng bấm Approve: bước Remove record restriction gỡ restriction ở batch và ở mọi dòng. Bước này chỉ chạy khi không còn approval entry nào đang chờ.
  3. Sau đó, mỗi lần dòng bị thêm hoặc sửa, BC lại gắn restriction lên batch, miễn là batch còn workflow đang bật. Code không kiểm batch đã duyệt hay chưa.
  4. Lúc post, dòng có Entry Type là Positive Adjmt., Negative Adjmt., Purchase, Sale, Consumption, Output bị kiểm restriction. Có restriction thì báo lỗi ở trên.
  5. Approval Status hiện Imposed restriction khi batch đã có approval entry Approved mà vẫn đang bị restriction.

Nói gọn: duyệt chỉ gỡ restriction đúng một lần. Sửa dòng sau đó là restriction quay lại, và phải duyệt lại.

Dựng lại trên sandbox: duyệt xong, sửa Posting Date, post#

Tôi tạo một batch test và một workflow test từ template chuẩn, cùng các bước với workflow khách đang dùng, người gửi duyệt cũng là người duyệt. Dòng test là Negative Adjmt. 1 đơn vị một mặt hàng có lot. Chạy hai lượt:

BướcLượt A: duyệt xong, không sửa dòngLượt B: duyệt xong, đổi Posting Date
Nhập dòngBatch bị restriction ngay khi nhập mã hàngNhư lượt A
Gửi duyệt, duyệtApproval Status = Approved, restriction được gỡNhư lượt A
Sau khi duyệtGán lot qua Item Tracking LinesĐổi Posting Date từ 09/10 sang 08/10
Approval StatusVẫn ApprovedChuyển sang Imposed restriction
PostThành côngBáo lỗi như trên

Phiếu thật của khách rơi đúng vào lượt B. Bản backup hôm trước cho thấy dòng đầu mang ngày cuối tháng, ảnh chụp lúc post sáng hôm sau thì dòng đó đã đổi sang ngày đầu tháng kế tiếp. Người post đã sửa ngày sau khi người duyệt bấm Approve.

Có một chỗ dễ làm người dùng tin là mọi thứ đã ổn: FactBox Journal Check bên phải vẫn báo "No issues found" khi batch đã bị gắn restriction lại. Dấu hiệu duy nhất trên màn hình là ô Approval Status.

Phân biệt restriction do gửi duyệt và do sửa dòng#

Trang Restricted Records (page 1550) có một dòng cho batch, dạng Item Journal Batch: ITEM,<tên batch>. BC ghi đè nội dung lý do lên cùng dòng đó, nên đọc nội dung là biết restriction từ đâu ra:

Nội dung trên Restricted RecordsTừ đâu ra
"The restriction was imposed by the <mã workflow> workflow, <mô tả workflow>."Bước gửi duyệt của workflow. Batch đang chờ duyệt là bình thường
"The restriction was imposed because the journal batch requires approval."Có người thêm hoặc sửa dòng sau lần gửi duyệt gần nhất

Trên sandbox QA của khách, trang này có khoảng 15 batch mang nội dung loại thứ hai. Batch nào trong số đó đã duyệt xong thì post sẽ ra lỗi.

Những thao tác khác cũng làm restriction quay lại#

Các trường hợp dưới đây tôi rút từ code, chưa chạy thử từng cái:

  • Thêm dòng mới vào batch đã duyệt.
  • Bấm Renumber Document Numbers sau khi duyệt. Code gắn restriction thẳng cho từng dòng.
  • Gửi duyệt rồi Cancel, hoặc bị Reject. Restriction vẫn còn, muốn post phải gửi duyệt lại.
  • Workflow tự dựng thiếu bước Remove record restriction sau sự kiện duyệt xong. Duyệt xong mà restriction không bao giờ được gỡ. Với khách này tôi đã mở workflow ra kiểm: đủ bước, nên loại được khả năng này.
  • Duyệt nhiều cấp mà còn approval entry Open. Bước gỡ chưa chạy.

Gán lot qua trang Item Tracking Lines thì không tính là sửa dòng, lượt A đã chứng minh. Gõ lot thẳng vào cột Lot No. trên dòng journal thì là sửa dòng.

Xử lý phiếu đang kẹt và dặn người dùng#

Phiếu đang kẹt: gửi duyệt lại, duyệt xong post ngay, không sửa gì thêm. Không cần sửa code, không cần sửa workflow.

Dặn người dùng ba điều:

  • Chỉnh xong Posting Date, số lượng, lot rồi mới gửi duyệt. Cuối tháng sắp khóa kỳ thì để ngày theo kỳ còn mở ngay từ lúc nhập.
  • Sau khi duyệt mà còn phải bổ sung lot thì mở Item Tracking Lines, không gõ vào cột Lot No.
  • Thấy Approval Status là Imposed restriction thì gửi duyệt lại, đừng bấm post rồi báo lỗi.

Khách muốn sau khi duyệt vẫn đổi được ngày mà không phải duyệt lại thì BC chuẩn không cho. Phải viết thêm code để BC bỏ qua một số field như Posting Date khi gắn lại restriction. Đó là yêu cầu mới và nó nới lỏng kiểm soát duyệt, nên khách phải chốt có muốn hay không trước khi làm.

Item Journal hay đi kèm lot, và lot thì hay phải sửa. Hai bài liên quan: cách import tồn đầu kỳ có lot và ba cách sửa lô sau khi xuất kho.

Đọc tiếp