Skip to content
Open
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
10 changes: 10 additions & 0 deletions Update Item Tracking - Posted Item/Readme.md
Original file line number Diff line number Diff line change
@@ -1 +1,11 @@
# Update Item Tracking - Posted Item

This extension can be used by companies that need to assign a Tracking Code to an existing Item. The new Tracking Code must require a mandatory Lot No. A defined Lot No. will be assigned to all Item entries.

## What this extension includes:

- A new Report (80110) Update Item Tracking - Posted Item.

## What you will need to do for this extension to work

- Run this report and fill necessary perameters. Report will update ony one Item.
39 changes: 39 additions & 0 deletions Update Item Tracking - Posted Item/app.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"id": "ac0c87be-2178-48cf-a94a-b7d324c50c43",
"name": "PrintVis Update Item Tracking Posted Item",
"publisher": "PrintVis A/S",
"version": "1.0.0.0",
"brief": "",
"description": "This extension can be used to add a Tracking Code to selected Item even the Item has open entries.",
"privacyStatement": "",
"EULA": "",
"help": "",
"url": "",
"logo": "",
"dependencies": [
{
"id": "5452f323-059e-499a-9753-5d2c07eef904",
"name": "PrintVis",
"publisher": "PrintVis A/S",
"version": "26.0.182.0"
}
],
"screenshots": [],
"platform": "1.0.0.0",
"application": "26.0.0.0",
"idRanges": [
{
"from": 80100,
"to": 89999
}
],
"resourceExposurePolicy": {
"allowDebugging": true,
"allowDownloadingSource": true,
"includeSourceInSymbolFile": true
},
"runtime": "15.2",
"features": [
"NoImplicitWith"
]
}
119 changes: 119 additions & 0 deletions Update Item Tracking - Posted Item/src/UpdateItemTracking.Report.al
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
report 80110 "Update Item Tracking"
{
UsageCategory = ReportsAndAnalysis;
ApplicationArea = All;
ProcessingOnly = true;
Caption = 'Update Item Tracking - Posted Item';
Permissions = tabledata Item = RM,
tabledata "Item Ledger Entry" = RM,
tabledata "Warehouse Entry" = RM;

dataset
{
dataitem(Item; Item)
{
RequestFilterFields = "No.";
trigger OnAfterGetRecord()
begin
if ItemNumber = 1 then
Error(ErrorItemQuantityLbl)
else begin
// Checking
Item.TestField("Item Tracking Code", '');
ItemLedgerEntry.SetRange("Item No.", Item."No.");
ItemLedgerEntry.SetFilter("Lot No.", '<>%1', '');
if not ItemLedgerEntry.IsEmpty then begin
ItemLedgerEntry.FindFirst();
ItemLedgerEntry.TestField("Lot No.", '');
end;
ItemLedgerEntry.SetRange("Lot No.");
if ItemLedgerEntry.FindSet() then
repeat
if ItemLedgerEntry."Invoiced Quantity" <> ItemLedgerEntry.Quantity then
ItemLedgerEntry.TestField(ItemLedgerEntry."Invoiced Quantity", ItemLedgerEntry.Quantity);
until ItemLedgerEntry.Next() = 0;

ItemJournalLine.SetRange("Item No.", Item."No.");
if not ItemJournalLine.IsEmpty then
ItemJournalLine.TestField("Item No.", '');

PVSJobCostingJournalLine.SetRange("Item No.", Item."No.");
if not PVSJobCostingJournalLine.IsEmpty then
PVSJobCostingJournalLine.TestField("Item No.", '');

TransferLines.SetRange("Item No.", Item."No.");
if not TransferLines.IsEmpty then
TransferLines.TestField("Item No.", '');

// Update data
if ItemLedgerEntry.FindSet() then
repeat
ItemLedgerEntry."Lot No." := OldEntriesLotNo;
ItemLedgerEntry.Modify(false);
until ItemLedgerEntry.Next() = 0;

WarehouseEntry.SetRange("Item No.", Item."No.");
if not WarehouseEntry.IsEmpty then
WarehouseEntry.ModifyAll("Lot No.", OldEntriesLotNo);

Item."Item Tracking Code" := NewItemTrackingCode;
Item.Modify(false);
Commit();
end;
ItemNumber := ItemNumber + 1;
end;
}
}

requestpage
{
layout
{
area(Content)
{
group(GroupName)
{
field(NewItemTrackingCode; NewItemTrackingCode)
{
Caption = 'New Item Tracking Code';
ApplicationArea = All;
TableRelation = "Item Tracking Code".Code;
ToolTip = 'New Item Tracking Code';
ShowMandatory = true;
}
field(OldEntriesLotNo; OldEntriesLotNo)
{
Caption = 'Old Entries Lot No.';
ApplicationArea = All;
ToolTip = 'Lot No. for all old Item entries';
ShowMandatory = true;
}
}
}
}
}

trigger OnPreReport()
begin
ItemLedgerEntry.SetCurrentKey("Item No.", "Posting Date");
WarehouseEntry.SetCurrentKey("Item No.", "Bin Code", "Location Code", "Variant Code", "Unit of Measure Code", "Lot No.", "Serial No.", "Entry Type", Dedicated, "Package No.", "Bin Type Code", "SIFT Bucket No.");
ItemNumber := 0;
if NewItemTrackingCode = '' then
Error(ErrorNewItemTrackingEmptyLbl);
if OldEntriesLotNo = '' then
Error(ErrorLotNoEmptyLbl);
end;

var
ItemLedgerEntry: Record "Item Ledger Entry";
WarehouseEntry: Record "Warehouse Entry";
TransferLines: Record "Transfer Line";
ItemJournalLine: Record "Item Journal Line";
PVSJobCostingJournalLine: Record "PVS Job Costing Journal Line";
NewItemTrackingCode: Code[10];
OldEntriesLotNo: Code[50];
ItemNumber: Integer;
ErrorItemQuantityLbl: Label 'You can update only one Item.';
ErrorNewItemTrackingEmptyLbl: Label 'New Item Tracking Code can not be empty.';
ErrorLotNoEmptyLbl: Label 'Old Entries Lot No. can not be empty.';
}
Loading