bcquality/microsoft/knowledge/scm/transfer-item-tracking-through-source-reservation-codeunits.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

30 lines
1.8 KiB
AL

codeunit 50108 "SCM Tracking Transfer Bad"
{
procedure TransferBlanketOrderTracking(var SourceBlanketOrderLine: Record "Sales Line"; var DestinationSalesOrderLine: Record "Sales Line"; QuantityBaseToTransfer: Decimal)
var
ReservationEntry: Record "Reservation Entry";
begin
SourceBlanketOrderLine.TestField("Document Type", SourceBlanketOrderLine."Document Type"::"Blanket Order");
SourceBlanketOrderLine.TestField(Type, SourceBlanketOrderLine.Type::Item);
DestinationSalesOrderLine.TestField("Document Type", DestinationSalesOrderLine."Document Type"::Order);
DestinationSalesOrderLine.TestField(Type, DestinationSalesOrderLine.Type::Item);
DestinationSalesOrderLine.TestField("No.", SourceBlanketOrderLine."No.");
if QuantityBaseToTransfer <= 0 then
Error(PositiveQuantityErr);
ReservationEntry.SetRange("Source Type", Database::"Sales Line");
ReservationEntry.SetRange("Source Subtype", SourceBlanketOrderLine."Document Type".AsInteger());
ReservationEntry.SetRange("Source ID", SourceBlanketOrderLine."Document No.");
ReservationEntry.SetRange("Source Ref. No.", SourceBlanketOrderLine."Line No.");
ReservationEntry.SetRange(Positive, false);
ReservationEntry.FindFirst();
ReservationEntry."Source Subtype" := DestinationSalesOrderLine."Document Type".AsInteger();
ReservationEntry."Source ID" := DestinationSalesOrderLine."Document No.";
ReservationEntry."Source Ref. No." := DestinationSalesOrderLine."Line No.";
ReservationEntry.Validate("Quantity (Base)", -QuantityBaseToTransfer);
ReservationEntry.Modify(true);
end;
var
PositiveQuantityErr: Label 'The base quantity to transfer must be positive.';
}