Table extension 906 Asm. Requisition Line
- App
- Base Application
- Namespace
- Microsoft.Inventory.Requisition
- Versions
- 26-28
- Extends
- Requisition Line
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Assembly/Inventory/Requisition/AsmRequisitionLine.TableExt.al117 lines, Copyright (c) Microsoft Corporation. MIT
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace Microsoft.Inventory.Requisition;
using Microsoft.Assembly.Document;
using Microsoft.Inventory.Item;
tableextension 906 "Asm. Requisition Line" extends "Requisition Line"
{
fields
{
modify("Ref. Order No.")
{
TableRelation = if ("Ref. Order Type" = const(Assembly)) "Assembly Header"."No." where("Document Type" = const(Order));
}
}
/// <summary>
/// Prepares and transfers relevant field values from provided assembly header to the current requisition line.
/// </summary>
/// <param name="AsmHeader">Source assembly header record. </param>
procedure GetAsmHeader(AsmHeader: Record "Assembly Header")
var
AsmHeader2: Record "Assembly Header";
begin
AsmHeader.CalcFields("Reserved Quantity", "Reserved Qty. (Base)");
AsmHeader2.Get(AsmHeader."Document Type", AsmHeader."No.");
TransferFromAsmHeader(AsmHeader);
end;
procedure TransferFromAsmHeader(var AsmHeader: Record "Assembly Header")
begin
Item.Get(AsmHeader."Item No.");
Type := Type::Item;
"No." := AsmHeader."Item No.";
"Variant Code" := AsmHeader."Variant Code";
Description := AsmHeader.Description;
"Description 2" := AsmHeader."Description 2";
"Location Code" := AsmHeader."Location Code";
"Dimension Set ID" := AsmHeader."Dimension Set ID";
"Shortcut Dimension 1 Code" := AsmHeader."Shortcut Dimension 1 Code";
"Shortcut Dimension 2 Code" := AsmHeader."Shortcut Dimension 2 Code";
"Bin Code" := AsmHeader."Bin Code";
"Gen. Prod. Posting Group" := AsmHeader."Gen. Prod. Posting Group";
"Low-Level Code" := Item."Low-Level Code";
"Order Date" := AsmHeader."Due Date";
"Starting Date" := "Order Date";
"Ending Date" := AsmHeader."Due Date";
"Due Date" := AsmHeader."Due Date";
Quantity := AsmHeader.Quantity;
"Finished Quantity" := AsmHeader."Assembled Quantity";
"Remaining Quantity" := AsmHeader."Remaining Quantity";
BlockDynamicTracking(true);
Validate("Unit Cost", AsmHeader."Unit Cost");
BlockDynamicTracking(false);
"Indirect Cost %" := AsmHeader."Indirect Cost %";
"Overhead Rate" := AsmHeader."Overhead Rate";
"Unit of Measure Code" := AsmHeader."Unit of Measure Code";
"Qty. per Unit of Measure" := AsmHeader."Qty. per Unit of Measure";
"Quantity (Base)" := AsmHeader."Quantity (Base)";
"Finished Qty. (Base)" := AsmHeader."Assembled Quantity (Base)";
"Remaining Qty. (Base)" := AsmHeader."Remaining Quantity (Base)";
"Replenishment System" := "Replenishment System"::Assembly;
"MPS Order" := AsmHeader."MPS Order";
"Planning Flexibility" := AsmHeader."Planning Flexibility";
"Ref. Order Type" := "Ref. Order Type"::Assembly;
"Ref. Order Status" := AsmHeader."Document Type";
"Ref. Order No." := AsmHeader."No.";
"Ref. Line No." := 0;
OnAfterTransferFromAsmHeader(Rec, AsmHeader);
GetDimFromRefOrderLine(false);
end;
procedure SetReplenishmentSystemFromAssembly()
var
AssemblyHeader: Record "Assembly Header";
begin
if PlanningResiliency and (Item."Base Unit of Measure" = '') then
TempPlanningErrorLog.SetError(
StrSubstNo(
MissingFieldValueErr, Item.TableCaption(), Item."No.",
Item.FieldCaption("Base Unit of Measure")),
Database::Item, CopyStr(Item.GetPosition(), 1, 250));
Item.TestField("Base Unit of Measure");
if "Ref. Order No." = '' then begin
"Ref. Order Type" := "Ref. Order Type"::Assembly;
"Ref. Order Status" := AssemblyHeader."Document Type"::Order;
end;
Validate("Vendor No.", '');
CleanProdBOMNo();
Validate("Transfer-from Code", '');
UpdateUnitOfMeasureCodeFromItemBaseUnitOfMeasure();
if ("Planning Line Origin" = "Planning Line Origin"::"Order Planning") and ValidateFields() then
PlanningLineMgt.Calculate(Rec, 1, true, true, 0);
OnAfterSetReplenishmentSystemFromAssembly(Rec, Item);
end;
[IntegrationEvent(false, false)]
local procedure OnAfterTransferFromAsmHeader(var ReqLine: Record "Requisition Line"; AsmHeader: Record "Assembly Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterSetReplenishmentSystemFromAssembly(var RequisitionLine: Record "Requisition Line"; Item: Record Item)
begin
end;
}