bcquality/microsoft/knowledge/scm/carry-out-requisition-actions-through-the-standard-workflow.bad.al
Jesper Schulz-Wedde bec8890b7e
Add SCM functional knowledge domain (#192)
* Add SCM functional knowledge domain

Introduce nine source-backed rules with original AL sample pairs, bounded SCM review routing, and complete positive/clean evaluation coverage.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* Normalize SCM knowledge and review ownership

Align article and AL sample conventions, keep BC facts separate from review mechanics, and clarify reciprocal Finance ownership without bespoke shared test assertions.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Jesper Schulz-Wedde <jesper.schulzwedde@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-09-21 10:16:44 +02:00

47 lines
2.4 KiB
AL

codeunit 50116 "SCM Requisition Action Bad"
{
procedure CarryOutAcceptedNewPurchase(TemplateName: Code[10]; BatchName: Code[10]; LineNo: Integer; OrderDate: Date; PostingDate: Date; ReceiptDate: Date; CutoffDate: Date)
var
RequisitionLine: Record "Requisition Line";
PurchaseHeader: Record "Purchase Header";
PurchaseLine: Record "Purchase Line";
begin
if (OrderDate = 0D) or (PostingDate = 0D) or (ReceiptDate = 0D) or (CutoffDate = 0D) then
Error(PlanningDatesErr);
RequisitionLine.Get(TemplateName, BatchName, LineNo);
RequisitionLine.TestField(Type, RequisitionLine.Type::Item);
RequisitionLine.TestField("Replenishment System", RequisitionLine."Replenishment System"::Purchase);
RequisitionLine.TestField("Action Message", RequisitionLine."Action Message"::New);
RequisitionLine.TestField("Accept Action Message", true);
RequisitionLine.TestField("Demand Type", Database::"Sales Line");
RequisitionLine.TestField("Demand Order No.");
RequisitionLine.TestField("Vendor No.");
RequisitionLine.SetRecFilter();
PurchaseHeader.Init();
PurchaseHeader."Document Type" := PurchaseHeader."Document Type"::Order;
PurchaseHeader.Insert(true);
PurchaseHeader.Validate("Buy-from Vendor No.", RequisitionLine."Vendor No.");
PurchaseHeader.Validate("Order Date", OrderDate);
PurchaseHeader.Validate("Posting Date", PostingDate);
PurchaseHeader.Validate("Expected Receipt Date", ReceiptDate);
PurchaseHeader.Modify(true);
PurchaseLine.Init();
PurchaseLine."Document Type" := PurchaseHeader."Document Type";
PurchaseLine."Document No." := PurchaseHeader."No.";
PurchaseLine."Line No." := 10000;
PurchaseLine.Validate(Type, PurchaseLine.Type::Item);
PurchaseLine.Validate("No.", RequisitionLine."No.");
PurchaseLine.Validate("Location Code", RequisitionLine."Location Code");
PurchaseLine.Validate("Variant Code", RequisitionLine."Variant Code");
PurchaseLine.Validate("Unit of Measure Code", RequisitionLine."Unit of Measure Code");
PurchaseLine.Validate(Quantity, RequisitionLine.Quantity);
PurchaseLine.Insert(true);
RequisitionLine.Delete(true);
end;
var
PlanningDatesErr: Label 'Supply explicit order, posting, receipt, and cutoff dates.';
}