Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ codeunit 99001522 "Subc. Planning Comp. Ext."
PlanningRoutingLine.SetRange("Worksheet Line No.", PlanningComponent."Worksheet Line No.");
PlanningRoutingLine.SetRange("Routing Link Code", PlanningComponent."Routing Link Code");
PlanningRoutingLine.SetRange(Type, PlanningRoutingLine.Type::"Work Center");
PlanningRoutingLine.SetLoadFields("No.");
if PlanningRoutingLine.FindFirst() then
if SubcontractingManagement.GetSubcontractor(PlanningRoutingLine."No.", Vendor) then
SubcontractingManagement.ChangeLocation_OnPlanningComponent(PlanningComponent, Vendor."Subcontr. Location Code", PlanningComponent."Orig. Location Code", PlanningComponent."Orig. Bin Code");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,8 @@ codeunit 99001524 "Subc. Prod. Order Comp. Ext."
TransferShipmentLine.SetRange("Prod. Order Line No.", ProdOrderComponent."Prod. Order Line No.");
TransferShipmentLine.SetRange("Prod. Order Comp. Line No.", ProdOrderComponent."Line No.");
TransferShipmentLine.SetRange("Item No.", ProdOrderComponent."Item No.");
TransferShipmentLine.SetLoadFields(SystemId);
if not TransferShipmentLine.IsEmpty() then begin
TransferShipmentLine.SetLoadFields(SystemId);
TransferShipmentLine.FindFirst();
if not ConfirmManagement.GetResponse(StrSubstNo(ExistingTransferLineQst, TransferShipmentLine."Document No.")) then
Error('');
Expand Down Expand Up @@ -106,8 +106,10 @@ codeunit 99001524 "Subc. Prod. Order Comp. Ext."
if ProdOrderComponent."Subcontracting Type" <> ProdOrderComponent."Subcontracting Type"::Purchase then
exit;

PurchaseLine.SetCurrentKey("Prod. Order No.", "Prod. Order Line No.", "Routing No.", "Operation No.");
PurchaseLine.SetRange("Prod. Order No.", ProdOrderComponent."Prod. Order No.");
PurchaseLine.SetRange("Prod. Order Line No.", ProdOrderComponent."Prod. Order Line No.");
PurchaseLine.SetLoadFields("Document Type", "Document No.", "Line No.");
if PurchaseLine.FindSet() then
repeat
TempPurchaseLine.Init();
Expand Down Expand Up @@ -267,6 +269,7 @@ codeunit 99001524 "Subc. Prod. Order Comp. Ext."
ProdOrderRoutingLine.SetRange("Routing No.", ProdOrderLine."Routing No.");
ProdOrderRoutingLine.SetRange("Routing Reference No.", ProdOrderLine."Routing Reference No.");
ProdOrderRoutingLine.SetRange("Routing Link Code", ProdOrderComponent."Routing Link Code");
ProdOrderRoutingLine.SetLoadFields("Starting Date", "Starting Time", Type, "No.");
if ProdOrderRoutingLine.FindFirst() then begin
ProdOrderComponent."Due Date" := ProdOrderRoutingLine."Starting Date";
ProdOrderComponent."Due Time" := ProdOrderRoutingLine."Starting Time";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,19 +49,24 @@ codeunit 99001515 "Subc. ItemJnlPostLine Ext"
ProdOrderRoutingLine: Record "Prod. Order Routing Line";
ProductionOrder: Record "Production Order";
begin
if ItemJournalLine.Subcontracting then begin
ProductionOrder.SetLoadFields("Created from Purch. Order");
if ProductionOrder.Get(ProdOrderLine.Status, ProdOrderLine."Prod. Order No.") then
if ProdOrderRoutingLine.Get(ProdOrderLine.Status, ProdOrderLine."Prod. Order No.", ProdOrderLine."Line No.", ProdOrderLine."Routing No.", ItemJournalLine."Operation No.") then begin
CapacityLedgerEntry.SetRange("Routing No.", ProdOrderRoutingLine."Routing No.");
CapacityLedgerEntry.SetRange("Routing Reference No.", ProdOrderRoutingLine."Routing Reference No.");
CapacityLedgerEntry.SetRange("Operation No.", ProdOrderRoutingLine."Operation No.");
CapacityLedgerEntry.SetRange("Order No.", ProdOrderRoutingLine."Prod. Order No.");
CapacityLedgerEntry.CalcSums("Output Quantity");
if CapacityLedgerEntry."Output Quantity" >= ProdOrderLine."Quantity (Base)" then
ProdOrderRoutingLine."Routing Status" := "Prod. Order Routing Status"::Finished;
ProdOrderRoutingLine.Modify();
end;
if not ItemJournalLine.Subcontracting then
exit;

ProductionOrder.SetLoadFields("Created from Purch. Order");
if not ProductionOrder.Get(ProdOrderLine.Status, ProdOrderLine."Prod. Order No.") then
exit;

if not ProdOrderRoutingLine.Get(ProdOrderLine.Status, ProdOrderLine."Prod. Order No.", ProdOrderLine."Line No.", ProdOrderLine."Routing No.", ItemJournalLine."Operation No.") then
exit;

CapacityLedgerEntry.SetRange("Routing No.", ProdOrderRoutingLine."Routing No.");
CapacityLedgerEntry.SetRange("Routing Reference No.", ProdOrderRoutingLine."Routing Reference No.");
CapacityLedgerEntry.SetRange("Operation No.", ProdOrderRoutingLine."Operation No.");
CapacityLedgerEntry.SetRange("Order No.", ProdOrderRoutingLine."Prod. Order No.");
CapacityLedgerEntry.CalcSums("Output Quantity");
if CapacityLedgerEntry."Output Quantity" >= ProdOrderLine."Quantity (Base)" then begin
ProdOrderRoutingLine."Routing Status" := "Prod. Order Routing Status"::Finished;
ProdOrderRoutingLine.Modify();
end;
end;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,10 @@ codeunit 99001511 "Subc. Synchronize Management"
if ProdOrderLine.Quantity <> PurchLineBaseQuantity then begin
ProdOrderLine.Validate(Quantity, PurchLineBaseQuantity);
ProdOrderLine.Modify();
ProdOrderComponent.SetRange(Status, "Production Order Status"::Released);

ProdOrderComponent.SetRange("Prod. Order No.", PurchaseLine."Prod. Order No.");
ProdOrderComponent.SetRange("Prod. Order Line No.", ProdOrderLine."Line No.");
ProdOrderComponent.SetRange(Status, "Production Order Status"::Released);
if not ProdOrderComponent.IsEmpty() then begin
ProdOrderComponent.FindSet();
repeat
Expand All @@ -90,10 +91,9 @@ codeunit 99001511 "Subc. Synchronize Management"
procedure DeleteEnhancedDocumentsByChangeOfVendorNo(var PurchaseHeader: Record "Purchase Header"; var xPurchaseHeader: Record "Purchase Header")
var
CapacityLedgerEntry: Record "Capacity Ledger Entry";
ItemLedgerEntry, ItemLedgerEntry2 : Record "Item Ledger Entry";
ItemLedgerEntry: Record "Item Ledger Entry";
ProductionOrder: Record "Production Order";
PurchaseLine, PurchaseLine2, PurchaseLineModify : Record "Purchase Line";
TransferHeader: Record "Transfer Header";
PurchaseLine, PurchaseLineModify : Record "Purchase Line";
begin
PurchaseLine.SetRange("Document Type", PurchaseHeader."Document Type");
PurchaseLine.SetRange("Document No.", PurchaseHeader."No.");
Expand All @@ -102,13 +102,6 @@ codeunit 99001511 "Subc. Synchronize Management"
PurchaseLine.SetFilter("Prod. Order No.", '<>%1', '');
PurchaseLine.SetRange("Qty. Received (Base)", 0);

PurchaseLine2.SetRange("Document Type", PurchaseHeader."Document Type");
PurchaseLine2.SetRange("Document No.", PurchaseHeader."No.");
PurchaseLine2.SetRange(Type, "Purchase Line Type"::Item);
PurchaseLine2.SetFilter("No.", '<>%1', '');
PurchaseLine2.SetRange("Prod. Order No.", '');
PurchaseLine2.SetRange("Qty. Received (Base)", 0);

if not PurchaseLine.IsEmpty() then begin
PurchaseLine.FindSet();
repeat
Expand Down Expand Up @@ -136,23 +129,10 @@ codeunit 99001511 "Subc. Synchronize Management"
PurchaseLineModify.ModifyAll("Prod. Order No.", '');
end;

// Delete Subcontracting dependent Purchase Lines
PurchaseLine2.SetRange("Subc. Prod. Order No.", ProductionOrder."No.");
if not PurchaseLine2.IsEmpty() then
PurchaseLine2.DeleteAll(true);

TransferHeader.SetCurrentKey("Source ID", "Source Type", "Source Subtype");
TransferHeader.SetRange("Source ID", PurchaseHeader."Buy-from Vendor No.");
TransferHeader.SetRange("Source Type", "Transfer Source Type"::Subcontracting);
TransferHeader.SetRange("Source Subtype", TransferHeader."Source Subtype"::"2");
TransferHeader.SetRange("Subcontr. Purch. Order No.", PurchaseHeader."No.");
if not TransferHeader.IsEmpty() then begin
TransferHeader.FindFirst();
ItemLedgerEntry2.SetRange("Order Type", "Inventory Order Type"::Production);
ItemLedgerEntry2.SetRange("Order No.", ProductionOrder."No.");
if ItemLedgerEntry.IsEmpty() then
TransferHeader.Delete(true);
end;
DeleteSubcontractingDependentPurchaseLines(ProductionOrder, PurchaseLine);

DeleteSubcontractingDependentTransferOrders(PurchaseLine);

ProductionOrder.Delete();
end;
end;
Expand All @@ -164,10 +144,8 @@ codeunit 99001511 "Subc. Synchronize Management"
procedure DeleteEnhancedDocumentsByDeletePurchLine(var PurchaseLine: Record "Purchase Line")
var
CapacityLedgerEntry: Record "Capacity Ledger Entry";
ItemLedgerEntry, ItemLedgerEntry2 : Record "Item Ledger Entry";
ItemLedgerEntry: Record "Item Ledger Entry";
ProductionOrder: Record "Production Order";
PurchaseLine2: Record "Purchase Line";
TransferHeader: Record "Transfer Header";
begin
if not IsSubcontractingLine(PurchaseLine) then
exit;
Expand All @@ -186,29 +164,52 @@ codeunit 99001511 "Subc. Synchronize Management"
if CapacityLedgerEntry.IsEmpty() then begin
ProductionOrder.DeleteProdOrderRelations();

// Delete Subcontracting dependent Purchase Lines
PurchaseLine2.SetRange("Subc. Prod. Order No.", ProductionOrder."No.");
if PurchaseLine2.FindSet() then
PurchaseLine2.DeleteAll(true);

TransferHeader.SetCurrentKey("Source ID", "Source Type", "Source Subtype");
TransferHeader.SetRange("Source ID", PurchaseLine."Buy-from Vendor No.");
TransferHeader.SetRange("Source Type", "Transfer Source Type"::Subcontracting);
TransferHeader.SetRange("Source Subtype", TransferHeader."Source Subtype"::"2");
TransferHeader.SetRange("Subcontr. Purch. Order No.", PurchaseLine."Document No.");
if not TransferHeader.IsEmpty() then begin
TransferHeader.FindFirst();
ItemLedgerEntry2.SetRange("Order Type", "Inventory Order Type"::Production);
ItemLedgerEntry2.SetRange("Order No.", ProductionOrder."No.");
if ItemLedgerEntry.IsEmpty() then
TransferHeader.Delete(true);
end;
DeleteSubcontractingDependentPurchaseLines(ProductionOrder, PurchaseLine);

DeleteSubcontractingDependentTransferOrders(PurchaseLine);

ProductionOrder.Delete();
end
end;
end;
end;

local procedure DeleteSubcontractingDependentTransferOrders(var PurchaseLine: Record "Purchase Line")
var
TransferHeader: Record "Transfer Header";
ItemLedgerEntry2: Record "Item Ledger Entry";
begin
TransferHeader.SetCurrentKey("Source ID", "Source Type", "Source Subtype");
TransferHeader.SetRange("Source ID", PurchaseLine."Buy-from Vendor No.");
TransferHeader.SetRange("Source Type", "Transfer Source Type"::Subcontracting);
TransferHeader.SetRange("Source Subtype", TransferHeader."Source Subtype"::"2");
TransferHeader.SetRange("Subcontr. Purch. Order No.", PurchaseLine."Document No.");
if not TransferHeader.IsEmpty() then begin
TransferHeader.FindFirst();
ItemLedgerEntry2.SetRange("Order Type", "Inventory Order Type"::Production);
ItemLedgerEntry2.SetRange("Order No.", PurchaseLine."Document No.");
if ItemLedgerEntry2.IsEmpty() then
TransferHeader.Delete(true);
end;
end;

local procedure DeleteSubcontractingDependentPurchaseLines(ProductionOrder: Record "Production Order"; var PurchaseLine: Record "Purchase Line")
var
PurchaseLineDelete: Record "Purchase Line";
begin
PurchaseLineDelete.SetRange("Document Type", PurchaseLine."Document Type");
PurchaseLineDelete.SetRange("Document No.", PurchaseLine."Document No.");
PurchaseLineDelete.SetRange(Type, "Purchase Line Type"::Item);
PurchaseLineDelete.SetFilter("No.", '<>%1', '');
PurchaseLineDelete.SetRange("Prod. Order No.", '');
PurchaseLineDelete.SetRange("Qty. Received (Base)", 0);

// Delete Subcontracting dependent Purchase Lines
PurchaseLineDelete.SetRange("Subc. Prod. Order No.", ProductionOrder."No.");
if not PurchaseLineDelete.IsEmpty() then
PurchaseLineDelete.DeleteAll(true);
end;

local procedure IsSubcontractingLine(var PurchaseLine: Record "Purchase Line") IsSubcontracting: Boolean
begin
if PurchaseLine.Type <> "Purchase Line Type"::Item then
Expand Down
Loading