bcquality/microsoft/knowledge/scm/transfer-item-tracking-through-source-reservation-codeunits.bad.al
Jesper Schulz-Wedde 9ac62e3967 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>
2026-09-17 15:54:23 +02:00

35 lines
1.9 KiB
AL

namespace BCQuality.SCM.Samples;
using Microsoft.Inventory.Tracking;
using Microsoft.Sales.Document;
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.';
}