From 10d3f4a00ba5424fae0e3dd5ea4dbfcd71c14f3d Mon Sep 17 00:00:00 2001 From: Brian Lauer Date: Mon, 1 Jun 2026 11:43:50 -0400 Subject: [PATCH 1/2] Add support for SL historical project transactions to SL Historical Data extension --- .../SLHistMigrationStatusMgmt.Codeunit.al | 16 + .../src/Enums/SLHistMigrationStepType.Enum.al | 1 + .../src/PageExt/SLHistProjectCard.PageExt.al | 44 ++ .../src/PageExt/SLHistProjectList.PageExt.al | 44 ++ .../app/src/Pages/SLHistBatchEntries.Page.al | 140 ++++ .../app/src/Pages/SLHistPJTranEntries.Page.al | 703 ++++++++++++++++++ .../app/src/tables/SLHistPJEmploy.Table.al | 344 +++++++++ .../app/src/tables/SLHistPJProj.Table.al | 447 +++++++++++ .../app/src/tables/SLHistPJTran.Table.al | 342 +++++++++ .../app/src/tables/SLHistPJTranEx.Table.al | 156 ++++ 10 files changed, 2237 insertions(+) create mode 100644 Apps/W1/DynamicsSLHistoricalData/app/src/PageExt/SLHistProjectCard.PageExt.al create mode 100644 Apps/W1/DynamicsSLHistoricalData/app/src/PageExt/SLHistProjectList.PageExt.al create mode 100644 Apps/W1/DynamicsSLHistoricalData/app/src/Pages/SLHistBatchEntries.Page.al create mode 100644 Apps/W1/DynamicsSLHistoricalData/app/src/Pages/SLHistPJTranEntries.Page.al create mode 100644 Apps/W1/DynamicsSLHistoricalData/app/src/tables/SLHistPJEmploy.Table.al create mode 100644 Apps/W1/DynamicsSLHistoricalData/app/src/tables/SLHistPJProj.Table.al create mode 100644 Apps/W1/DynamicsSLHistoricalData/app/src/tables/SLHistPJTran.Table.al create mode 100644 Apps/W1/DynamicsSLHistoricalData/app/src/tables/SLHistPJTranEx.Table.al diff --git a/Apps/W1/DynamicsSLHistoricalData/app/src/Codeunits/SLHistMigrationStatusMgmt.Codeunit.al b/Apps/W1/DynamicsSLHistoricalData/app/src/Codeunits/SLHistMigrationStatusMgmt.Codeunit.al index 74abfde327..229630f76c 100644 --- a/Apps/W1/DynamicsSLHistoricalData/app/src/Codeunits/SLHistMigrationStatusMgmt.Codeunit.al +++ b/Apps/W1/DynamicsSLHistoricalData/app/src/Codeunits/SLHistMigrationStatusMgmt.Codeunit.al @@ -91,6 +91,10 @@ codeunit 42800 "SL Hist. Migration Status Mgmt" SLHistGLTran: Record "SL Hist. GLTran Archive"; SLHistINTran: Record "SL Hist. INTran Archive"; SLHistLotSerT: Record "SL Hist. LotSerT Archive"; + SLHistPJEmploy: Record "SL Hist. PJEmploy"; + SLHistPJProj: Record "SL Hist. PJProj"; + SLHistPJTran: Record "SL Hist. PJTran"; + SLHistPJTranEx: Record "SL Hist. PJTranEx"; SLHistPOReceipt: Record "SL Hist. POReceipt"; SLHistPOTran: Record "SL Hist. POTran"; SLHistPurchOrd: Record "SL Hist. PurchOrd"; @@ -134,6 +138,18 @@ codeunit 42800 "SL Hist. Migration Status Mgmt" if not SLHistPOReceipt.IsEmpty() then BatchDeleteAll(Database::"SL Hist. POReceipt", SLHistPOReceipt.FieldNo(SLHistPOReceipt.RcptNbr)); + if not SLHistPJTranEx.IsEmpty() then + BatchDeleteAll(Database::"SL Hist. PJTranEx", SLHistPJTranEx.FieldNo(SLHistPJTranEx.fiscalno)); + + if not SLHistPJTran.IsEmpty() then + BatchDeleteAll(Database::"SL Hist. PJTran", SLHistPJTran.FieldNo(SLHistPJTran.fiscalno)); + + if not SLHistPJProj.IsEmpty() then + BatchDeleteAll(Database::"SL Hist. PJProj", SLHistPJProj.FieldNo(SLHistPJProj.project)); + + if not SLHistPJEmploy.IsEmpty() then + BatchDeleteAll(Database::"SL Hist. PJEmploy", SLHistPJEmploy.FieldNo(SLHistPJEmploy.employee)); + if not SLHistLotSerT.IsEmpty() then BatchDeleteAll(Database::"SL Hist. LotSerT Archive", SLHistLotSerT.FieldNo(SLHistLotSerT.LotSerNbr)); diff --git a/Apps/W1/DynamicsSLHistoricalData/app/src/Enums/SLHistMigrationStepType.Enum.al b/Apps/W1/DynamicsSLHistoricalData/app/src/Enums/SLHistMigrationStepType.Enum.al index 8535930cbd..6d5e72c1ba 100644 --- a/Apps/W1/DynamicsSLHistoricalData/app/src/Enums/SLHistMigrationStepType.Enum.al +++ b/Apps/W1/DynamicsSLHistoricalData/app/src/Enums/SLHistMigrationStepType.Enum.al @@ -15,6 +15,7 @@ enum 42800 "SL Hist. Migration Step Type" value(5; "SL Payables Trx.") { Caption = 'SL Payables Trx.'; } value(6; "SL Inventory Trx.") { Caption = 'SL Inventory Trx.'; } value(7; "SL Purchase Receivables Trx.") { Caption = 'SL Purchase Receivables Trx.'; } + value(8; "SL Project Trx.") { Caption = 'SL Project Trx.'; } value(98; "Resetting Data") { Caption = 'Resetting Historical Data'; } value(99; Finished) { Caption = 'Finished'; } } \ No newline at end of file diff --git a/Apps/W1/DynamicsSLHistoricalData/app/src/PageExt/SLHistProjectCard.PageExt.al b/Apps/W1/DynamicsSLHistoricalData/app/src/PageExt/SLHistProjectCard.PageExt.al new file mode 100644 index 0000000000..03234e4dd2 --- /dev/null +++ b/Apps/W1/DynamicsSLHistoricalData/app/src/PageExt/SLHistProjectCard.PageExt.al @@ -0,0 +1,44 @@ +// ------------------------------------------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// ------------------------------------------------------------------------------------------------ + +namespace Microsoft.DataMigration.SL.HistoricalData; + +using Microsoft.Projects.Project.Job; + +pageextension 42807 "SL Hist. Project Card" extends "Job Card" +{ + actions + { + addlast("&Job") + { + group(SLHistorical) + { + Caption = 'SL Historical'; + Image = History; + action("SL Hist. Project Transactions") + { + ApplicationArea = Basic, Suite; + Caption = 'SL Historical Project Transactions'; + Image = Transactions; + ToolTip = 'View the historical project transactions for this project.'; + RunObject = page "SL Hist. PJTran Entries"; + RunPageLink = project = field("No."); + Visible = SLHistPJTranDataAvailable; + } + } + } + } + + trigger OnOpenPage() + var + SLHistPJTran: Record "SL Hist. PJTran"; + begin + if SLHistPJTran.ReadPermission() then + SLHistPJTranDataAvailable := not SLHistPJTran.IsEmpty(); + end; + + var + SLHistPJTranDataAvailable: Boolean; +} \ No newline at end of file diff --git a/Apps/W1/DynamicsSLHistoricalData/app/src/PageExt/SLHistProjectList.PageExt.al b/Apps/W1/DynamicsSLHistoricalData/app/src/PageExt/SLHistProjectList.PageExt.al new file mode 100644 index 0000000000..019dc03a8d --- /dev/null +++ b/Apps/W1/DynamicsSLHistoricalData/app/src/PageExt/SLHistProjectList.PageExt.al @@ -0,0 +1,44 @@ +// ------------------------------------------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// ------------------------------------------------------------------------------------------------ + +namespace Microsoft.DataMigration.SL.HistoricalData; + +using Microsoft.Projects.Project.Job; + +pageextension 42806 "SL Hist. Project List" extends "Job List" +{ + actions + { + addlast("&Job") + { + group(SLHistorical) + { + Caption = 'SL Historical'; + Image = History; + action("SL Hist. Project Transactions") + { + ApplicationArea = Basic, Suite; + Caption = 'SL Historical Project Transactions'; + Image = Transactions; + ToolTip = 'View the historical project transactions for this project.'; + RunObject = page "SL Hist. PJTran Entries"; + RunPageLink = project = field("No."); + visible = SLHistPJTranDataAvailable; + } + } + } + } + + trigger OnOpenPage() + var + SLHistPJTran: Record "SL Hist. PJTran"; + begin + if SLHistPJTran.ReadPermission() then + SLHistPJTranDataAvailable := not SLHistPJTran.IsEmpty(); + end; + + var + SLHistPJTranDataAvailable: Boolean; +} \ No newline at end of file diff --git a/Apps/W1/DynamicsSLHistoricalData/app/src/Pages/SLHistBatchEntries.Page.al b/Apps/W1/DynamicsSLHistoricalData/app/src/Pages/SLHistBatchEntries.Page.al new file mode 100644 index 0000000000..c5e7dda13e --- /dev/null +++ b/Apps/W1/DynamicsSLHistoricalData/app/src/Pages/SLHistBatchEntries.Page.al @@ -0,0 +1,140 @@ +// ------------------------------------------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// ------------------------------------------------------------------------------------------------ + +namespace Microsoft.DataMigration.SL.HistoricalData; + +page 42803 "SL Hist. Batch Entries" +{ + AdditionalSearchTerms = 'SL Batches, SL Historical Entries, SL Historical Batch Entries'; + ApplicationArea = Basic, Suite; + Caption = 'SL Historical Batch Entries'; + DeleteAllowed = false; + Editable = false; + InsertAllowed = false; + LinksAllowed = false; + ModifyAllowed = false; + MultipleNewLines = false; + PageType = List; + Permissions = TableData "SL Hist. Batch" = m; + SourceTable = "SL Hist. Batch"; + UsageCategory = History; + + layout + { + area(Content) + { + repeater(General) + { + field("Company ID"; Rec.CpnyID) + { + Caption = 'Company ID'; + Editable = false; + ToolTip = 'Specifies the Company ID that the batch belongs to.'; + } + field("Account"; Rec.Acct) + { + Caption = 'Account'; + Editable = false; + ToolTip = 'Specifies the Account that the batch is associated with.'; + } + field("Subaccount"; Rec.Sub) + { + Caption = 'Subaccount'; + Editable = false; + ToolTip = 'Specifies the Subaccount that the batch is associated with.'; + } + field("Batch Number"; Rec.BatNbr) + { + Caption = 'Batch Number'; + Editable = false; + ToolTip = 'Specifies the Batch Number that the entry belongs to.'; + } + field("Journal Type"; Rec.JrnlType) + { + Caption = 'Journal Type'; + Editable = false; + ToolTip = 'Specifies the Journal Type that the batch belongs to.'; + } + field("Ledger ID"; Rec.LedgerID) + { + Caption = 'Ledger ID'; + Editable = false; + ToolTip = 'Specifies the Ledger ID that the batch is posted to.'; + } + field("Description"; Rec.Descr) + { + Caption = 'Description'; + Editable = false; + ToolTip = 'Specifies the Description of the batch.'; + } + field("Balance Type"; Rec.BalanceType) + { + Caption = 'Balance Type'; + Editable = false; + ToolTip = 'Specifies the Balance Type of the batch.'; + } + field("Module"; Rec.Module) + { + Caption = 'Module'; + Editable = false; + ToolTip = 'Specifies the Module that the batch belongs to.'; + } + field("Period Entered"; Rec.PerEnt) + { + Caption = 'Period Entered'; + Editable = false; + ToolTip = 'Specifies the period that the batch was entered.'; + } + field("Period to Post"; Rec.PerPost) + { + Caption = 'Period to Post'; + Editable = false; + ToolTip = 'Specifies the period that the batch was posted to.'; + } + field("Status"; Rec.Status) + { + Caption = 'Status'; + Editable = false; + ToolTip = 'Specifies the status of the batch.'; + } + field("Credit Total"; Rec.CrTot) + { + Caption = 'Credit Total'; + Editable = false; + ToolTip = 'Specifies the credit total for the batch.'; + } + field("Debit Total"; Rec.DrTot) + { + Caption = 'Debit Total'; + Editable = false; + ToolTip = 'Specifies the debit total for the batch.'; + } + } + } + } + + trigger OnOpenPage() + begin + if FilterAcct <> '' then + Rec.SetRange(Acct, FilterAcct); + + if FilterLedgerID <> '' then + Rec.SetRange(LedgerID, FilterLedgerID); + end; + + procedure SetFilterAcct(Acct: Text[10]) + begin + FilterAcct := Acct; + end; + + procedure SetLedgerID(LedgerID: Code[10]) + begin + FilterLedgerID := LedgerID; + end; + + var + FilterAcct: Text[10]; + FilterLedgerID: Code[10]; +} diff --git a/Apps/W1/DynamicsSLHistoricalData/app/src/Pages/SLHistPJTranEntries.Page.al b/Apps/W1/DynamicsSLHistoricalData/app/src/Pages/SLHistPJTranEntries.Page.al new file mode 100644 index 0000000000..422bf11074 --- /dev/null +++ b/Apps/W1/DynamicsSLHistoricalData/app/src/Pages/SLHistPJTranEntries.Page.al @@ -0,0 +1,703 @@ +// ------------------------------------------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// ------------------------------------------------------------------------------------------------ + +namespace Microsoft.DataMigration.SL.HistoricalData; + +page 42804 "SL Hist. PJTran Entries" +{ + AdditionalSearchTerms = 'SL PJ Transactions, SL Historical Entries, SL Historical Project Entries, SL Project Transactions'; + ApplicationArea = Basic, Suite; + Caption = 'SL Historical Project Transaction Entries'; + DeleteAllowed = false; + Editable = false; + InsertAllowed = false; + LinksAllowed = false; + ModifyAllowed = false; + MultipleNewLines = false; + PageType = List; + Permissions = TableData "SL Hist. PJTran" = m; + SourceTable = "SL Hist. PJTran"; + UsageCategory = History; + + layout + { + area(Content) + { + repeater(General) + { + field("Project"; Rec.project) + { + Caption = 'Project'; + Editable = false; + ToolTip = 'Specifies the Project that the entry belongs to.'; + } + field("Project Description"; ProjectDescription) + { + Caption = 'Project Description'; + Editable = false; + ToolTip = 'Specifies the description of the project.'; + } + field("Customer"; ProjectCustomer) + { + Caption = 'Customer'; + Editable = false; + ToolTip = 'Specifies the customer associated with the project.'; + } + field("Task"; Rec.pjt_entity) + { + Caption = 'Task'; + Editable = false; + ToolTip = 'Specifies the task associated with the entry.'; + } + field("Subtask"; Rec.SubTask_Name) + { + Caption = 'Subtask'; + Editable = false; + ToolTip = 'Specifies the subtask name associated with the entry.'; + } + field("Company"; Rec.CpnyId) + { + Caption = 'Company'; + Editable = false; + ToolTip = 'Specifies the Company ID that the entry belongs to.'; + } + field("Account Category"; Rec.acct) + { + Caption = 'Account Category'; + Editable = false; + ToolTip = 'Specifies the account category of the entry.'; + } + field("Transaction Date"; Rec.trans_date) + { + Caption = 'Transaction Date'; + Editable = false; + ToolTip = 'Specifies the entry''s transaction date.'; + } + field("Amount"; Rec.amount) + { + Caption = 'Amount'; + Editable = false; + ToolTip = 'Specifies the amount of the entry.'; + } + field("Units"; Rec.units) + { + Caption = 'Units'; + Editable = false; + ToolTip = 'Specifies the units of the entry.'; + } + field("Base Currency ID"; Rec.BaseCuryId) + { + Caption = 'Base Currency ID'; + Editable = false; + ToolTip = 'Specifies the base currency ID of the entry.'; + } + field("Currency ID"; Rec.CuryId) + { + Caption = 'Currency ID'; + Editable = false; + ToolTip = 'Specifies the currency ID of the entry.'; + } + field("Currency Amount"; Rec.CuryTranamt) + { + Caption = 'Currency Amount'; + Editable = false; + ToolTip = 'Specifies the currency amount of the entry.'; + } + field("Resource"; Rec.employee) + { + Caption = 'Resource'; + Editable = false; + ToolTip = 'Specifies the resource (employee) associated with the entry.'; + } + field("Resource Name"; ResourceName) + { + Caption = 'Resource Name'; + Editable = false; + ToolTip = 'Specifies the name of the resource (employee) associated with the entry.'; + } + field("Project Manager"; ProjectManager) + { + Caption = 'Project Manager'; + Editable = false; + ToolTip = 'Specifies the project manager.'; + } + field("Project Mgr Name"; ProjectMgrName) + { + Caption = 'Project Mgr Name'; + Editable = false; + ToolTip = 'Specifies the name of the project manager.'; + } + field("Transaction Status"; Rec.tr_status) + { + Caption = 'Transaction Status'; + Editable = false; + ToolTip = 'Specifies the transaction status of the entry.'; + } + field("Transaction Comment"; Rec.tr_comment) + { + Caption = 'Transaction Comment'; + Editable = false; + ToolTip = 'Specifies the transaction comment of the entry.'; + } + field("G/L Account"; Rec.gl_acct) + { + Caption = 'G/L Account'; + Editable = false; + ToolTip = 'Specifies the G/L account of the entry.'; + } + field("Subaccount"; Rec.gl_subacct) + { + Caption = 'Subaccount'; + Editable = false; + ToolTip = 'Specifies the subaccount of the entry.'; + } + field("Labor Class"; Rec.tr_id05) + { + Caption = 'Labor Class'; + Editable = false; + ToolTip = 'Specifies the labor class of the entry.'; + } + field("Fiscal Period"; Rec.fiscalno) + { + Caption = 'Fiscal Period'; + Editable = false; + ToolTip = 'Specifies the fiscal period of the entry.'; + } + field("System Code"; Rec.system_cd) + { + Caption = 'System Code'; + Editable = false; + ToolTip = 'Specifies the system code of the entry.'; + } + field("Batch ID"; Rec.batch_id) + { + Caption = 'Batch ID'; + Editable = false; + ToolTip = 'Specifies the batch ID of the entry.'; + } + field("Batch Type"; Rec.batch_type) + { + Caption = 'Batch Type'; + Editable = false; + ToolTip = 'Specifies the batch type of the entry.'; + } + field("Doc Num from T&E"; Rec.bill_batch_id) + { + Caption = 'Doc Num from T&E'; + Editable = false; + ToolTip = 'Specifies the document number from T&E.'; + } + field("Vendor Number"; Rec.vendor_num) + { + Caption = 'Vendor Number'; + Editable = false; + ToolTip = 'Specifies the vendor number of the entry.'; + } + field("RefNbr from Source Trans"; Rec.voucher_num) + { + Caption = 'RefNbr from Source Trans'; + Editable = false; + ToolTip = 'Specifies the reference number from the source transaction.'; + } + field("Allocation Flag"; Rec.alloc_flag) + { + Caption = 'Allocation Flag'; + Editable = false; + ToolTip = 'Specifies the allocation flag of the entry.'; + } + field("Line from Source Trans"; Rec.voucher_line) + { + Caption = 'Line from Source Trans'; + Editable = false; + ToolTip = 'Specifies the line from the source transaction.'; + } + field("Invoice Number"; Rec.tr_id02) + { + Caption = 'Invoice Number'; + Editable = false; + ToolTip = 'Specifies the invoice number of the entry.'; + } + field("PO Number"; Rec.tr_id03) + { + Caption = 'PO Number'; + Editable = false; + ToolTip = 'Specifies the purchase order number of the entry.'; + } + field("Inventory ID"; InventoryId) + { + Caption = 'Inventory ID'; + Editable = false; + ToolTip = 'Specifies the inventory ID of the entry.'; + } + field("Detail Number"; Rec.detail_num) + { + Caption = 'Detail Number'; + Editable = false; + ToolTip = 'Specifies the detail number of the entry.'; + } + field("Subcontract"; Rec.Subcontract) + { + Caption = 'Subcontract'; + Editable = false; + ToolTip = 'Specifies the subcontract of the entry.'; + } + field("Unit of Measure"; Rec.unit_of_measure) + { + Caption = 'Unit of Measure'; + Editable = false; + ToolTip = 'Specifies the unit of measure of the entry.'; + } + field("Equipment ID"; EquipmentId) + { + Caption = 'Equipment ID'; + Editable = false; + ToolTip = 'Specifies the equipment ID of the entry.'; + } + field("Lot Serial Number"; LotSerialNbr) + { + Caption = 'Lot Serial Number'; + Editable = false; + ToolTip = 'Specifies the lot serial number of the entry.'; + } + field("Sales Order Num"; SalesOrderNum) + { + Caption = 'Sales Order Num'; + Editable = false; + ToolTip = 'Specifies the sales order number of the entry.'; + } + field("Sales Order Line"; SalesOrderLine) + { + Caption = 'Sales Order Line'; + Editable = false; + ToolTip = 'Specifies the sales order line of the entry.'; + } + field("Shipper ID"; ShipperId) + { + Caption = 'Shipper ID'; + Editable = false; + ToolTip = 'Specifies the shipper ID of the entry.'; + } + field("Shipper Line"; ShipperLine) + { + Caption = 'Shipper Line'; + Editable = false; + ToolTip = 'Specifies the shipper line of the entry.'; + } + field("Site ID"; SiteId) + { + Caption = 'Site ID'; + Editable = false; + ToolTip = 'Specifies the site ID of the entry.'; + } + field("Warehouse Location"; WarehouseLocation) + { + Caption = 'Warehouse Location'; + Editable = false; + ToolTip = 'Specifies the warehouse location of the entry.'; + } + field("User1"; Rec.user1) + { + Caption = 'User1'; + Editable = false; + ToolTip = 'Specifies the user1 field of the entry.'; + Visible = false; + } + field("User2"; Rec.user2) + { + Caption = 'User2'; + Editable = false; + ToolTip = 'Specifies the user2 field of the entry.'; + Visible = false; + } + field("User3"; Rec.user3) + { + Caption = 'User3'; + Editable = false; + ToolTip = 'Specifies the user3 field of the entry.'; + Visible = false; + } + field("User4"; Rec.user4) + { + Caption = 'User4'; + Editable = false; + ToolTip = 'Specifies the user4 field of the entry.'; + Visible = false; + } + field("tr_id01"; Rec.tr_id01) + { + Caption = 'tr_id01'; + Editable = false; + ToolTip = 'Specifies the tr_id01 field of the entry.'; + Visible = false; + } + field("Source Batch Num"; Rec.tr_id04) + { + Caption = 'Source Batch Num'; + Editable = false; + ToolTip = 'Specifies the source batch number of the entry.'; + Visible = false; + } + field("tr_id06"; Rec.tr_id06) + { + Caption = 'tr_id06'; + Editable = false; + ToolTip = 'Specifies the tr_id06 field of the entry.'; + Visible = false; + } + field("tr_id07"; Rec.tr_id07) + { + Caption = 'tr_id07'; + Editable = false; + ToolTip = 'Specifies the tr_id07 field of the entry.'; + Visible = false; + } + field("Invoice Date"; Rec.tr_id08) + { + Caption = 'Invoice Date'; + Editable = false; + ToolTip = 'Specifies the invoice date of the entry.'; + Visible = false; + } + field("tr_id09"; Rec.tr_id09) + { + Caption = 'tr_id09'; + Editable = false; + ToolTip = 'Specifies the tr_id09 field of the entry.'; + Visible = false; + } + field("tr_id10"; Rec.tr_id10) + { + Caption = 'tr_id10'; + Editable = false; + ToolTip = 'Specifies the tr_id10 field of the entry.'; + Visible = false; + } + field("tr_id23"; Rec.tr_id23) + { + Caption = 'tr_id23'; + Editable = false; + ToolTip = 'Specifies the tr_id23 field of the entry.'; + Visible = false; + } + field("Hrs Type+Shift+Earn Type"; Rec.tr_id24) + { + Caption = 'Hrs Type+Shift+Earn Type'; + Editable = false; + ToolTip = 'Specifies the hours type, shift, and earn type of the entry.'; + Visible = false; + } + field("tr_id25"; Rec.tr_id25) + { + Caption = 'tr_id25'; + Editable = false; + ToolTip = 'Specifies the tr_id25 field of the entry.'; + Visible = false; + } + field("Utilization Period"; Rec.tr_id26) + { + Caption = 'Utilization Period'; + Editable = false; + ToolTip = 'Specifies the utilization period of the entry.'; + Visible = false; + } + field("tr_id27"; Rec.tr_id27) + { + Caption = 'tr_id27'; + Editable = false; + ToolTip = 'Specifies the tr_id27 field of the entry.'; + Visible = false; + } + field("Original Cost of Allocated Trans"; Rec.tr_id28) + { + Caption = 'Original Cost of Allocated Trans'; + Editable = false; + ToolTip = 'Specifies the original cost of the allocated transaction.'; + Visible = false; + } + field("tr_id29"; Rec.tr_id29) + { + Caption = 'tr_id29'; + Editable = false; + ToolTip = 'Specifies the tr_id29 field of the entry.'; + Visible = false; + } + field("PJInvDet Trans ID"; Rec.tr_id30) + { + Caption = 'PJInvDet Trans ID'; + Editable = false; + ToolTip = 'Specifies the PJInvDet transaction ID of the entry.'; + Visible = false; + } + field("tr_id31"; Rec.tr_id31) + { + Caption = 'tr_id31'; + Editable = false; + ToolTip = 'Specifies the tr_id31 field of the entry.'; + Visible = false; + } + field("tr_id32"; Rec.tr_id32) + { + Caption = 'tr_id32'; + Editable = false; + ToolTip = 'Specifies the tr_id32 field of the entry.'; + Visible = false; + } + field("Key of Originating Trans"; KeyOfOriginatingTrans) + { + Caption = 'Key of Originating Trans'; + Editable = false; + ToolTip = 'Specifies the key of the originating transaction.'; + Visible = false; + } + field("tr_id13"; TrId13) + { + Caption = 'tr_id13'; + Editable = false; + ToolTip = 'Specifies the tr_id13 field of the entry.'; + Visible = false; + } + field("tr_id14"; TrId14) + { + Caption = 'tr_id14'; + Editable = false; + ToolTip = 'Specifies the tr_id14 field of the entry.'; + Visible = false; + } + field("WO Info"; WOInfo) + { + Caption = 'WO Info'; + Editable = false; + ToolTip = 'Specifies the work order info of the entry.'; + Visible = false; + } + field("Payroll Work Loc"; PayrollWorkLoc) + { + Caption = 'Payroll Work Loc'; + Editable = false; + ToolTip = 'Specifies the payroll work location of the entry.'; + Visible = false; + } + field("tr_id17"; TrId17) + { + Caption = 'tr_id17'; + Editable = false; + ToolTip = 'Specifies the tr_id17 field of the entry.'; + Visible = false; + } + field("tr_id18"; TrId18) + { + Caption = 'tr_id18'; + Editable = false; + ToolTip = 'Specifies the tr_id18 field of the entry.'; + Visible = false; + } + field("tr_id19"; TrId19) + { + Caption = 'tr_id19'; + Editable = false; + ToolTip = 'Specifies the tr_id19 field of the entry.'; + Visible = false; + } + field("Offset Cpny, Acct, Sub"; OffsetCpnyAcctSub) + { + Caption = 'Offset Cpny, Acct, Sub'; + Editable = false; + ToolTip = 'Specifies the offset company, account, and subaccount of the entry.'; + Visible = false; + } + field("tr_id21"; TrId21) + { + Caption = 'tr_id21'; + Editable = false; + ToolTip = 'Specifies the tr_id21 field of the entry.'; + Visible = false; + } + field("Timecard Period End"; TimecardPeriodEnd) + { + Caption = 'Timecard Period End'; + Editable = false; + ToolTip = 'Specifies the timecard period end date of the entry.'; + Visible = false; + } + field("Create Date"; Rec.crtd_datetime) + { + Caption = 'Create Date'; + Editable = false; + ToolTip = 'Specifies the creation date of the entry.'; + Visible = false; + } + field("Create Program"; Rec.crtd_prog) + { + Caption = 'Create Program'; + Editable = false; + ToolTip = 'Specifies the program that created the entry.'; + Visible = false; + } + field("Create User"; Rec.crtd_user) + { + Caption = 'Create User'; + Editable = false; + ToolTip = 'Specifies the user that created the entry.'; + Visible = false; + } + field("Last Update Date"; Rec.lupd_datetime) + { + Caption = 'Last Update Date'; + Editable = false; + ToolTip = 'Specifies the last update date of the entry.'; + Visible = false; + } + field("Last Update Program"; Rec.lupd_prog) + { + Caption = 'Last Update Program'; + Editable = false; + ToolTip = 'Specifies the program that last updated the entry.'; + Visible = false; + } + field("Last Update User"; Rec.lupd_user) + { + Caption = 'Last Update User'; + Editable = false; + ToolTip = 'Specifies the user that last updated the entry.'; + Visible = false; + } + } + } + } + + trigger OnAfterGetRecord() + var + SLHistPJTranEx: Record "SL Hist. PJTranEx"; + SLHistPJProj: Record "SL Hist. PJProj"; + SLHistPJEmploy: Record "SL Hist. PJEmploy"; + begin + // Lookup PJTranEx fields + if SLHistPJTranEx.Get(Rec.fiscalno, Rec.system_cd, Rec.batch_id, Rec.detail_num) then begin + InventoryId := SLHistPJTranEx.invtid; + EquipmentId := SLHistPJTranEx.equip_id; + LotSerialNbr := SLHistPJTranEx.lotsernbr; + SalesOrderNum := SLHistPJTranEx.ordnbr; + SalesOrderLine := SLHistPJTranEx.orderlineref; + ShipperId := SLHistPJTranEx.shipperid; + ShipperLine := SLHistPJTranEx.shipperlineref; + SiteId := SLHistPJTranEx.siteid; + WarehouseLocation := SLHistPJTranEx.whseloc; + KeyOfOriginatingTrans := SLHistPJTranEx.tr_id12; + TrId13 := SLHistPJTranEx.tr_id13; + TrId14 := SLHistPJTranEx.tr_id14; + WOInfo := SLHistPJTranEx.tr_id15; + PayrollWorkLoc := SLHistPJTranEx.tr_id16; + TrId17 := SLHistPJTranEx.tr_id17; + TrId18 := SLHistPJTranEx.tr_id18; + TrId19 := SLHistPJTranEx.tr_id19; + OffsetCpnyAcctSub := SLHistPJTranEx.tr_id20; + TrId21 := SLHistPJTranEx.tr_id21; + TimecardPeriodEnd := SLHistPJTranEx.tr_id22; + end else + ClearTranExFields(); + + // Lookup PJProj fields + if SLHistPJProj.Get(Rec.project) then begin + ProjectDescription := SLHistPJProj.project_desc; + ProjectCustomer := SLHistPJProj.customer; + ProjectManager := SLHistPJProj.manager1; + + // Lookup project manager name + if (ProjectManager <> '') and SLHistPJEmploy.Get(ProjectManager) then + ProjectMgrName := FormatEmployeeName(SLHistPJEmploy.emp_name) + else + ProjectMgrName := ''; + end else begin + ProjectDescription := ''; + ProjectCustomer := ''; + ProjectManager := ''; + ProjectMgrName := ''; + end; + + // Lookup resource name + if (Rec.employee <> '') and SLHistPJEmploy.Get(Rec.employee) then + ResourceName := FormatEmployeeName(SLHistPJEmploy.emp_name) + else + ResourceName := ''; + end; + + local procedure FormatEmployeeName(EmpName: Text[60]): Text[60] + var + TildePos: Integer; + FirstPart: Text; + LastPart: Text; + begin + TildePos := StrPos(EmpName, '~'); + if TildePos > 0 then begin + FirstPart := CopyStr(EmpName, 1, TildePos - 1); + LastPart := CopyStr(EmpName, TildePos + 1); + exit(CopyStr(FirstPart.TrimStart() + ', ' + LastPart.Trim(), 1, 60)); + end; + exit(EmpName); + end; + + local procedure ClearTranExFields() + begin + InventoryId := ''; + EquipmentId := ''; + LotSerialNbr := ''; + SalesOrderNum := ''; + SalesOrderLine := ''; + ShipperId := ''; + ShipperLine := ''; + SiteId := ''; + WarehouseLocation := ''; + KeyOfOriginatingTrans := ''; + TrId13 := ''; + TrId14 := ''; + WOInfo := ''; + PayrollWorkLoc := ''; + TrId17 := ''; + TrId18 := ''; + TrId19 := ''; + OffsetCpnyAcctSub := ''; + TrId21 := ''; + TimecardPeriodEnd := 0D; + end; + + trigger OnOpenPage() + begin + if FilterProject <> '' then + Rec.SetRange(Project, FilterProject); + end; + + procedure SetFilterProject(ProjectID: Text[16]) + begin + FilterProject := ProjectID; + end; + + var + FilterProject: Text[16]; + ProjectDescription: Text[60]; + ProjectCustomer: Text[15]; + ProjectManager: Text[10]; + ProjectMgrName: Text[60]; + ResourceName: Text[60]; + InventoryId: Text[30]; + EquipmentId: Text[10]; + LotSerialNbr: Text[25]; + SalesOrderNum: Text[15]; + SalesOrderLine: Text[5]; + ShipperId: Text[15]; + ShipperLine: Text[5]; + SiteId: Text[10]; + WarehouseLocation: Text[10]; + KeyOfOriginatingTrans: Text[30]; + TrId13: Text[30]; + TrId14: Text[16]; + WOInfo: Text[16]; + PayrollWorkLoc: Text[16]; + TrId17: Text[4]; + TrId18: Text[4]; + TrId19: Text[4]; + OffsetCpnyAcctSub: Text[40]; + TrId21: Text[40]; + TimecardPeriodEnd: Date; +} diff --git a/Apps/W1/DynamicsSLHistoricalData/app/src/tables/SLHistPJEmploy.Table.al b/Apps/W1/DynamicsSLHistoricalData/app/src/tables/SLHistPJEmploy.Table.al new file mode 100644 index 0000000000..27957b6eea --- /dev/null +++ b/Apps/W1/DynamicsSLHistoricalData/app/src/tables/SLHistPJEmploy.Table.al @@ -0,0 +1,344 @@ +// ------------------------------------------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// ------------------------------------------------------------------------------------------------ + +namespace Microsoft.DataMigration.SL.HistoricalData; + +table 42833 "SL Hist. PJEmploy" +{ + DataClassification = CustomerContent; + ReplicateData = false; + + fields + { + field(1; BaseCuryId; Text[4]) + { + Caption = 'BaseCuryId'; + } + field(2; CpnyId; Text[10]) + { + Caption = 'CpnyId'; + } + field(3; crtd_datetime; DateTime) + { + Caption = 'crtd_datetime'; + } + field(4; crtd_prog; Text[8]) + { + Caption = 'crtd_prog'; + } + field(5; crtd_user; Text[10]) + { + Caption = 'crtd_user'; + } + field(6; CuryId; Text[4]) + { + Caption = 'CuryId'; + } + field(7; CuryRateType; Text[6]) + { + Caption = 'CuryRateType'; + } + field(8; date_hired; Date) + { + Caption = 'date_hired'; + } + field(9; date_terminated; Date) + { + Caption = 'date_terminated'; + } + field(10; employee; Text[10]) + { + Caption = 'employee'; + } + field(11; emp_name; Text[60]) + { + Caption = 'emp_name'; + } + field(12; emp_status; Text[1]) + { + Caption = 'emp_status'; + } + field(13; emp_type_cd; Text[4]) + { + Caption = 'emp_type_cd'; + } + field(14; em_id01; Text[30]) + { + Caption = 'em_id01'; + } + field(15; em_id02; Text[30]) + { + Caption = 'em_id02'; + } + field(16; em_id03; Text[50]) + { + Caption = 'em_id03'; + } + field(17; em_id04; Text[16]) + { + Caption = 'em_id04'; + } + field(18; em_id05; Text[4]) + { + Caption = 'em_id05'; + } + field(19; em_id06; Decimal) + { + Caption = 'em_id06'; + AutoFormatType = 0; + } + field(20; em_id07; Decimal) + { + Caption = 'em_id07'; + AutoFormatType = 0; + } + field(21; em_id08; Date) + { + Caption = 'em_id08'; + } + field(22; em_id09; Date) + { + Caption = 'em_id09'; + } + field(23; em_id10; Integer) + { + Caption = 'em_id10'; + } + field(24; em_id11; Text[30]) + { + Caption = 'em_id11'; + } + field(25; em_id12; Text[30]) + { + Caption = 'em_id12'; + } + field(26; em_id13; Text[20]) + { + Caption = 'em_id13'; + } + field(27; em_id14; Text[20]) + { + Caption = 'em_id14'; + } + field(28; em_id15; Text[10]) + { + Caption = 'em_id15'; + } + field(29; em_id16; Text[10]) + { + Caption = 'em_id16'; + } + field(30; em_id17; Text[4]) + { + Caption = 'em_id17'; + } + field(31; em_id18; Decimal) + { + Caption = 'em_id18'; + AutoFormatType = 0; + } + field(32; em_id19; Date) + { + Caption = 'em_id19'; + } + field(33; em_id20; Integer) + { + Caption = 'em_id20'; + } + field(34; em_id21; Text[10]) + { + Caption = 'em_id21'; + } + field(35; em_id22; Text[10]) + { + Caption = 'em_id22'; + } + field(36; em_id23; Text[10]) + { + Caption = 'em_id23'; + } + field(37; em_id24; Text[10]) + { + Caption = 'em_id24'; + } + field(38; em_id25; Text[10]) + { + Caption = 'em_id25'; + } + field(39; exp_approval_max; Decimal) + { + Caption = 'exp_approval_max'; + AutoFormatType = 0; + } + field(40; gl_subacct; Text[24]) + { + Caption = 'gl_subacct'; + } + field(41; lupd_datetime; DateTime) + { + Caption = 'lupd_datetime'; + } + field(42; lupd_prog; Text[8]) + { + Caption = 'lupd_prog'; + } + field(43; lupd_user; Text[10]) + { + Caption = 'lupd_user'; + } + field(44; manager1; Text[10]) + { + Caption = 'manager1'; + } + field(45; manager2; Text[10]) + { + Caption = 'manager2'; + } + field(46; MSPData; Text[50]) + { + Caption = 'MSPData'; + } + field(47; MSPInterface; Text[1]) + { + Caption = 'MSPInterface'; + } + field(48; MSPRes_UID; Integer) + { + Caption = 'MSPRes_UID'; + } + field(49; MSPType; Text[1]) + { + Caption = 'MSPType'; + } + field(50; noteid; Integer) + { + Caption = 'noteid'; + } + field(51; placeholder; Text[1]) + { + Caption = 'placeholder'; + } + field(52; projExec; Integer) + { + Caption = 'projExec'; + } + field(53; S4Future01; Text[30]) + { + Caption = 'S4Future01'; + } + field(54; S4Future02; Text[30]) + { + Caption = 'S4Future02'; + } + field(55; S4Future03; Decimal) + { + Caption = 'S4Future03'; + AutoFormatType = 0; + } + field(56; S4Future04; Decimal) + { + Caption = 'S4Future04'; + AutoFormatType = 0; + } + field(57; S4Future05; Decimal) + { + Caption = 'S4Future05'; + AutoFormatType = 0; + } + field(58; S4Future06; Decimal) + { + Caption = 'S4Future06'; + AutoFormatType = 0; + } + field(59; S4Future07; Date) + { + Caption = 'S4Future07'; + } + field(60; S4Future08; Date) + { + Caption = 'S4Future08'; + } + field(61; S4Future09; Integer) + { + Caption = 'S4Future09'; + } + field(62; S4Future10; Integer) + { + Caption = 'S4Future10'; + } + field(63; S4Future11; Text[10]) + { + Caption = 'S4Future11'; + } + field(64; S4Future12; Text[10]) + { + Caption = 'S4Future12'; + } + field(65; stdday; Integer) + { + Caption = 'stdday'; + } + field(66; Stdweek; Integer) + { + Caption = 'Stdweek'; + } + field(67; Subcontractor; Text[1]) + { + Caption = 'Subcontractor'; + } + field(68; user1; Text[30]) + { + Caption = 'user1'; + } + field(69; user2; Text[30]) + { + Caption = 'user2'; + } + field(70; user3; Decimal) + { + Caption = 'user3'; + AutoFormatType = 0; + } + field(71; user4; Decimal) + { + Caption = 'user4'; + AutoFormatType = 0; + } + field(72; user_id; Text[50]) + { + Caption = 'user_id'; + } + field(73; VacaTot; Decimal) + { + Caption = 'VacaTot'; + AutoFormatType = 0; + } + field(74; VacaBal; Decimal) + { + Caption = 'VacaBal'; + AutoFormatType = 0; + } + field(75; VacaProjectID; Text[16]) + { + Caption = 'VacaProjectID'; + } + field(76; VacaTaskID; Text[32]) + { + Caption = 'VacaTaskID'; + } + field(77; VacaLUpd; Date) + { + Caption = 'VacaLUpd'; + } + } + + keys + { + key(PK; employee) + { + Clustered = true; + } + } +} \ No newline at end of file diff --git a/Apps/W1/DynamicsSLHistoricalData/app/src/tables/SLHistPJProj.Table.al b/Apps/W1/DynamicsSLHistoricalData/app/src/tables/SLHistPJProj.Table.al new file mode 100644 index 0000000000..f92ef1982b --- /dev/null +++ b/Apps/W1/DynamicsSLHistoricalData/app/src/tables/SLHistPJProj.Table.al @@ -0,0 +1,447 @@ +// ------------------------------------------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// ------------------------------------------------------------------------------------------------ + +namespace Microsoft.DataMigration.SL.HistoricalData; + +table 42832 "SL Hist. PJProj" +{ + DataClassification = CustomerContent; + ReplicateData = false; + + fields + { + field(1; alloc_method_cd; Text[4]) + { + Caption = 'alloc_method_cd'; + } + field(2; alloc_method2_cd; Text[4]) + { + Caption = 'alloc_method2_cd'; + } + field(3; BaseCuryId; Text[4]) + { + Caption = 'BaseCuryId'; + } + field(4; bf_values_switch; Text[1]) + { + Caption = 'bf_values_switch'; + } + field(5; billcuryfixedrate; Decimal) + { + Caption = 'billcuryfixedrate'; + AutoFormatType = 0; + } + field(6; billcuryid; Text[4]) + { + Caption = 'billcuryid'; + } + field(7; billing_setup; Text[1]) + { + Caption = 'billing_setup'; + } + field(8; billratetypeid; Text[6]) + { + Caption = 'billratetypeid'; + } + field(9; budget_type; Text[1]) + { + Caption = 'budget_type'; + } + field(10; budget_version; Text[2]) + { + Caption = 'budget_version'; + } + field(11; contract; Text[16]) + { + Caption = 'contract'; + } + field(12; contract_type; Text[4]) + { + Caption = 'contract_type'; + } + field(13; CpnyId; Text[10]) + { + Caption = 'CpnyId'; + } + field(14; crtd_datetime; DateTime) + { + Caption = 'crtd_datetime'; + } + field(15; crtd_prog; Text[8]) + { + Caption = 'crtd_prog'; + } + field(16; crtd_user; Text[10]) + { + Caption = 'crtd_user'; + } + field(17; CuryId; Text[4]) + { + Caption = 'CuryId'; + } + field(18; CuryRateType; Text[6]) + { + Caption = 'CuryRateType'; + } + field(19; customer; Text[15]) + { + Caption = 'customer'; + } + field(20; end_date; Date) + { + Caption = 'end_date'; + } + field(21; EndDateChk; Integer) + { + Caption = 'EndDateChk'; + } + field(22; gl_subacct; Text[24]) + { + Caption = 'gl_subacct'; + } + field(23; labor_gl_acct; Text[10]) + { + Caption = 'labor_gl_acct'; + } + field(24; lupd_datetime; DateTime) + { + Caption = 'lupd_datetime'; + } + field(25; lupd_prog; Text[8]) + { + Caption = 'lupd_prog'; + } + field(26; lupd_user; Text[10]) + { + Caption = 'lupd_user'; + } + field(27; manager1; Text[10]) + { + Caption = 'manager1'; + } + field(28; manager2; Text[10]) + { + Caption = 'manager2'; + } + field(29; MSPData; Text[50]) + { + Caption = 'MSPData'; + } + field(30; MSPInterface; Text[1]) + { + Caption = 'MSPInterface'; + } + field(31; MSPProj_ID; Integer) + { + Caption = 'MSPProj_ID'; + } + field(32; noteid; Integer) + { + Caption = 'noteid'; + } + field(33; opportunityID; Text[36]) + { + Caption = 'opportunityID'; + } + field(34; pm_id01; Text[30]) + { + Caption = 'pm_id01'; + } + field(35; pm_id02; Text[30]) + { + Caption = 'pm_id02'; + } + field(36; pm_id03; Text[16]) + { + Caption = 'pm_id03'; + } + field(37; pm_id04; Text[16]) + { + Caption = 'pm_id04'; + } + field(38; pm_id05; Text[4]) + { + Caption = 'pm_id05'; + } + field(39; pm_id06; Decimal) + { + Caption = 'pm_id06'; + AutoFormatType = 0; + } + field(40; pm_id07; Decimal) + { + Caption = 'pm_id07'; + AutoFormatType = 0; + } + field(41; pm_id08; Date) + { + Caption = 'pm_id08'; + } + field(42; pm_id09; Date) + { + Caption = 'pm_id09'; + } + field(43; pm_id10; Integer) + { + Caption = 'pm_id10'; + } + field(44; pm_id31; Text[30]) + { + Caption = 'pm_id31'; + } + field(45; pm_id32; Text[30]) + { + Caption = 'pm_id32'; + } + field(46; pm_id33; Text[20]) + { + Caption = 'pm_id33'; + } + field(47; pm_id34; Text[20]) + { + Caption = 'pm_id34'; + } + field(48; pm_id35; Text[10]) + { + Caption = 'pm_id35'; + } + field(49; pm_id36; Text[10]) + { + Caption = 'pm_id36'; + } + field(50; pm_id37; Text[4]) + { + Caption = 'pm_id37'; + } + field(51; pm_id38; Decimal) + { + Caption = 'pm_id38'; + AutoFormatType = 0; + } + field(52; pm_id39; Date) + { + Caption = 'pm_id39'; + } + field(53; pm_id40; Integer) + { + Caption = 'pm_id40'; + } + field(54; probability; Integer) + { + Caption = 'probability'; + } + field(55; ProjCuryId; Text[4]) + { + Caption = 'ProjCuryId'; + } + field(56; ProjCuryRateType; Text[6]) + { + Caption = 'ProjCuryRateType'; + } + field(57; ProjCuryBudEffDate; Date) + { + Caption = 'ProjCuryBudEffDate'; + } + field(58; ProjCuryBudMultiDiv; Text[1]) + { + Caption = 'ProjCuryBudMultiDiv'; + } + field(59; ProjCuryBudRate; Decimal) + { + Caption = 'ProjCuryBudRate'; + AutoFormatType = 0; + } + field(60; ProjCuryRevenueRec; Text[1]) + { + Caption = 'ProjCuryRevenueRec'; + } + field(61; project; Text[16]) + { + Caption = 'project'; + } + field(62; project_desc; Text[60]) + { + Caption = 'project_desc'; + } + field(63; purchase_order_num; Text[20]) + { + Caption = 'purchase_order_num'; + } + field(64; rate_table_id; Text[4]) + { + Caption = 'rate_table_id'; + } + field(65; S4Future01; Text[30]) + { + Caption = 'S4Future01'; + } + field(66; S4Future02; Text[30]) + { + Caption = 'S4Future02'; + } + field(67; S4Future03; Decimal) + { + Caption = 'S4Future03'; + AutoFormatType = 0; + } + field(68; S4Future04; Decimal) + { + Caption = 'S4Future04'; + AutoFormatType = 0; + } + field(69; S4Future05; Decimal) + { + Caption = 'S4Future05'; + AutoFormatType = 0; + } + field(70; S4Future06; Decimal) + { + Caption = 'S4Future06'; + AutoFormatType = 0; + } + field(71; S4Future07; Date) + { + Caption = 'S4Future07'; + } + field(72; S4Future08; Date) + { + Caption = 'S4Future08'; + } + field(73; S4Future09; Integer) + { + Caption = 'S4Future09'; + } + field(74; S4Future10; Integer) + { + Caption = 'S4Future10'; + } + field(75; S4Future11; Text[10]) + { + Caption = 'S4Future11'; + } + field(76; S4Future12; Text[10]) + { + Caption = 'S4Future12'; + } + field(77; shiptoid; Text[10]) + { + Caption = 'shiptoid'; + } + field(78; slsperid; Text[10]) + { + Caption = 'slsperid'; + } + field(79; start_date; Date) + { + Caption = 'start_date'; + } + field(80; status_08; Text[1]) + { + Caption = 'status_08'; + } + field(81; status_09; Text[1]) + { + Caption = 'status_09'; + } + field(82; status_10; Text[1]) + { + Caption = 'status_10'; + } + field(83; status_11; Text[1]) + { + Caption = 'status_11'; + } + field(84; status_12; Text[1]) + { + Caption = 'status_12'; + } + field(85; status_13; Text[1]) + { + Caption = 'status_13'; + } + field(86; status_14; Text[1]) + { + Caption = 'status_14'; + } + field(87; status_15; Text[1]) + { + Caption = 'status_15'; + } + field(88; status_16; Text[1]) + { + Caption = 'status_16'; + } + field(89; status_17; Text[1]) + { + Caption = 'status_17'; + } + field(90; status_18; Text[1]) + { + Caption = 'status_18'; + } + field(91; status_19; Text[1]) + { + Caption = 'status_19'; + } + field(92; status_20; Text[1]) + { + Caption = 'status_20'; + } + field(93; status_ap; Text[1]) + { + Caption = 'status_ap'; + } + field(94; status_ar; Text[1]) + { + Caption = 'status_ar'; + } + field(95; status_gl; Text[1]) + { + Caption = 'status_gl'; + } + field(96; status_in; Text[1]) + { + Caption = 'status_in'; + } + field(97; status_lb; Text[1]) + { + Caption = 'status_lb'; + } + field(98; status_pa; Text[1]) + { + Caption = 'status_pa'; + } + field(99; status_po; Text[1]) + { + Caption = 'status_po'; + } + field(100; user1; Text[30]) + { + Caption = 'user1'; + } + field(101; user2; Text[30]) + { + Caption = 'user2'; + } + field(102; user3; Decimal) + { + Caption = 'user3'; + AutoFormatType = 0; + } + field(103; user4; Decimal) + { + Caption = 'user4'; + AutoFormatType = 0; + } + } + + keys + { + key(PK; project) + { + Clustered = true; + } + } +} \ No newline at end of file diff --git a/Apps/W1/DynamicsSLHistoricalData/app/src/tables/SLHistPJTran.Table.al b/Apps/W1/DynamicsSLHistoricalData/app/src/tables/SLHistPJTran.Table.al new file mode 100644 index 0000000000..a21e7ffcf8 --- /dev/null +++ b/Apps/W1/DynamicsSLHistoricalData/app/src/tables/SLHistPJTran.Table.al @@ -0,0 +1,342 @@ +// ------------------------------------------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// ------------------------------------------------------------------------------------------------ + +namespace Microsoft.DataMigration.SL.HistoricalData; + +table 42830 "SL Hist. PJTran" +{ + DataClassification = CustomerContent; + ReplicateData = false; + + fields + { + field(1; acct; Text[16]) + { + Caption = 'acct'; + } + field(2; alloc_flag; Text[1]) + { + Caption = 'alloc_flag'; + } + field(3; amount; Decimal) + { + Caption = 'amount'; + AutoFormatType = 0; + } + field(4; BaseCuryId; Text[4]) + { + Caption = 'BaseCuryId'; + } + field(5; batch_id; Text[10]) + { + Caption = 'batch_id'; + } + field(6; batch_type; Text[4]) + { + Caption = 'batch_type'; + } + field(7; bill_batch_id; Text[10]) + { + Caption = 'bill_batch_id'; + } + field(8; CpnyId; Text[10]) + { + Caption = 'CpnyId'; + } + field(9; crtd_datetime; DateTime) + { + Caption = 'crtd_datetime'; + } + field(10; crtd_prog; Text[8]) + { + Caption = 'crtd_prog'; + } + field(11; crtd_user; Text[10]) + { + Caption = 'crtd_user'; + } + field(12; CuryEffDate; Date) + { + Caption = 'CuryEffDate'; + } + field(13; CuryId; Text[4]) + { + Caption = 'CuryId'; + } + field(14; CuryMultDiv; Text[1]) + { + Caption = 'CuryMultDiv'; + } + field(15; CuryRate; Decimal) + { + Caption = 'CuryRate'; + AutoFormatType = 0; + } + field(16; CuryRateType; Text[6]) + { + Caption = 'CuryRateType'; + } + field(17; CuryTranamt; Decimal) + { + Caption = 'CuryTranamt'; + AutoFormatType = 0; + } + field(18; data1; Text[16]) + { + Caption = 'data1'; + } + field(19; detail_num; Integer) + { + Caption = 'detail_num'; + } + field(20; employee; Text[10]) + { + Caption = 'employee'; + } + field(21; fiscalno; Text[6]) + { + Caption = 'fiscalno'; + } + field(22; gl_acct; Text[10]) + { + Caption = 'gl_acct'; + } + field(23; gl_subacct; Text[24]) + { + Caption = 'gl_subacct'; + } + field(24; lupd_datetime; DateTime) + { + Caption = 'lupd_datetime'; + } + field(25; lupd_prog; Text[8]) + { + Caption = 'lupd_prog'; + } + field(26; lupd_user; Text[10]) + { + Caption = 'lupd_user'; + } + field(27; noteid; Integer) + { + Caption = 'noteid'; + } + field(28; pjt_entity; Text[32]) + { + Caption = 'pjt_entity'; + } + field(29; post_date; Date) + { + Caption = 'post_date'; + } + field(30; ProjCury_amount; Decimal) + { + Caption = 'ProjCury_amount'; + AutoFormatType = 0; + } + field(31; ProjCuryEffDate; Date) + { + Caption = 'ProjCuryEffDate'; + } + field(32; ProjCuryId; Text[4]) + { + Caption = 'ProjCuryId'; + } + field(33; ProjCuryMultiDiv; Text[1]) + { + Caption = 'ProjCuryMultiDiv'; + } + field(34; ProjCuryRate; Decimal) + { + Caption = 'ProjCuryRate'; + AutoFormatType = 0; + } + field(35; ProjCuryRateType; Text[6]) + { + Caption = 'ProjCuryRateType'; + } + field(36; project; Text[16]) + { + Caption = 'project'; + } + field(37; Subcontract; Text[16]) + { + Caption = 'Subcontract'; + } + field(38; SubTask_Name; Text[50]) + { + Caption = 'SubTask_Name'; + } + field(39; system_cd; Text[2]) + { + Caption = 'system_cd'; + } + field(40; TranProjCuryEffDate; Date) + { + Caption = 'TranProjCuryEffDate'; + } + field(41; TranProjCuryId; Text[4]) + { + Caption = 'TranProjCuryId'; + } + field(42; TranProjCuryMultiDiv; Text[1]) + { + Caption = 'TranProjCuryMultiDiv'; + } + field(43; TranProjCuryRate; Decimal) + { + Caption = 'TranProjCuryRate'; + AutoFormatType = 0; + } + field(44; TranProjCuryRateType; Text[6]) + { + Caption = 'TranProjCuryRateType'; + } + field(45; trans_date; Date) + { + Caption = 'trans_date'; + } + field(46; tr_comment; Text[100]) + { + Caption = 'tr_comment'; + } + field(47; tr_id01; Text[30]) + { + Caption = 'tr_id01'; + } + field(48; tr_id02; Text[30]) + { + Caption = 'tr_id02'; + } + field(49; tr_id03; Text[16]) + { + Caption = 'tr_id03'; + } + field(50; tr_id04; Text[16]) + { + Caption = 'tr_id04'; + } + field(51; tr_id05; Text[4]) + { + Caption = 'tr_id05'; + } + field(52; tr_id06; Decimal) + { + Caption = 'tr_id06'; + AutoFormatType = 0; + } + field(53; tr_id07; Decimal) + { + Caption = 'tr_id07'; + AutoFormatType = 0; + } + field(54; tr_id08; Date) + { + Caption = 'tr_id08'; + } + field(55; tr_id09; Date) + { + Caption = 'tr_id09'; + } + field(56; tr_id10; Integer) + { + Caption = 'tr_id10'; + } + field(57; tr_id23; Text[30]) + { + Caption = 'tr_id23'; + } + field(58; tr_id24; Text[20]) + { + Caption = 'tr_id24'; + } + field(59; tr_id25; Text[20]) + { + Caption = 'tr_id25'; + } + field(60; tr_id26; Text[10]) + { + Caption = 'tr_id26'; + } + field(61; tr_id27; Text[4]) + { + Caption = 'tr_id27'; + } + field(62; tr_id28; Decimal) + { + Caption = 'tr_id28'; + AutoFormatType = 0; + } + field(63; tr_id29; Date) + { + Caption = 'tr_id29'; + } + field(64; tr_id30; Integer) + { + Caption = 'tr_id30'; + } + field(65; tr_id31; Decimal) + { + Caption = 'tr_id31'; + AutoFormatType = 0; + } + field(66; tr_id32; Decimal) + { + Caption = 'tr_id32'; + AutoFormatType = 0; + } + field(67; tr_status; Text[10]) + { + Caption = 'tr_status'; + } + field(68; unit_of_measure; Text[10]) + { + Caption = 'unit_of_measure'; + } + field(69; units; Decimal) + { + Caption = 'units'; + AutoFormatType = 0; + } + field(70; user1; Text[30]) + { + Caption = 'user1'; + } + field(71; user2; Text[30]) + { + Caption = 'user2'; + } + field(72; user3; Decimal) + { + Caption = 'user3'; + AutoFormatType = 0; + } + field(73; user4; Decimal) + { + Caption = 'user4'; + AutoFormatType = 0; + } + field(74; vendor_num; Text[15]) + { + Caption = 'vendor_num'; + } + field(75; voucher_line; Integer) + { + Caption = 'voucher_line'; + } + field(76; voucher_num; Text[10]) + { + Caption = 'voucher_num'; + } + } + + keys + { + key(PK; fiscalno, system_cd, batch_id, detail_num) + { + Clustered = true; + } + } +} \ No newline at end of file diff --git a/Apps/W1/DynamicsSLHistoricalData/app/src/tables/SLHistPJTranEx.Table.al b/Apps/W1/DynamicsSLHistoricalData/app/src/tables/SLHistPJTranEx.Table.al new file mode 100644 index 0000000000..9aa86e3dac --- /dev/null +++ b/Apps/W1/DynamicsSLHistoricalData/app/src/tables/SLHistPJTranEx.Table.al @@ -0,0 +1,156 @@ +// ------------------------------------------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// ------------------------------------------------------------------------------------------------ + +namespace Microsoft.DataMigration.SL.HistoricalData; + +table 42831 "SL Hist. PJTranEx" +{ + DataClassification = CustomerContent; + ReplicateData = false; + + fields + { + field(1; batch_id; Text[10]) + { + Caption = 'batch_id'; + } + field(2; crtd_datetime; DateTime) + { + Caption = 'crtd_datetime'; + } + field(3; crtd_prog; Text[8]) + { + Caption = 'crtd_prog'; + } + field(4; crtd_user; Text[10]) + { + Caption = 'crtd_user'; + } + field(5; detail_num; Integer) + { + Caption = 'detail_num'; + } + field(6; equip_id; Text[10]) + { + Caption = 'equip_id'; + } + field(7; fiscalno; Text[6]) + { + Caption = 'fiscalno'; + } + field(8; invtid; Text[30]) + { + Caption = 'invtid'; + } + field(9; lotsernbr; Text[25]) + { + Caption = 'lotsernbr'; + } + field(10; lupd_datetime; DateTime) + { + Caption = 'lupd_datetime'; + } + field(11; lupd_prog; Text[8]) + { + Caption = 'lupd_prog'; + } + field(12; lupd_user; Text[10]) + { + Caption = 'lupd_user'; + } + field(13; orderlineref; Text[5]) + { + Caption = 'orderlineref'; + } + field(14; ordnbr; Text[15]) + { + Caption = 'ordnbr'; + } + field(15; shipperid; Text[15]) + { + Caption = 'shipperid'; + } + field(16; shipperlineref; Text[5]) + { + Caption = 'shipperlineref'; + } + field(17; siteid; Text[10]) + { + Caption = 'siteid'; + } + field(18; system_cd; Text[2]) + { + Caption = 'system_cd'; + } + field(19; tr_id11; Text[30]) + { + Caption = 'tr_id11'; + } + field(20; tr_id12; Text[30]) + { + Caption = 'tr_id12'; + } + field(21; tr_id13; Text[30]) + { + Caption = 'tr_id13'; + } + field(22; tr_id14; Text[16]) + { + Caption = 'tr_id14'; + } + field(23; tr_id15; Text[16]) + { + Caption = 'tr_id15'; + } + field(24; tr_id16; Text[16]) + { + Caption = 'tr_id16'; + } + field(25; tr_id17; Text[4]) + { + Caption = 'tr_id17'; + } + field(26; tr_id18; Text[4]) + { + Caption = 'tr_id18'; + } + field(27; tr_id19; Text[4]) + { + Caption = 'tr_id19'; + } + field(28; tr_id20; Text[40]) + { + Caption = 'tr_id20'; + } + field(29; tr_id21; Text[40]) + { + Caption = 'tr_id21'; + } + field(30; tr_id22; Date) + { + Caption = 'tr_id22'; + } + field(31; tr_status2; Text[1]) + { + Caption = 'tr_status2'; + } + field(32; tr_status3; Text[1]) + { + Caption = 'tr_status3'; + } + field(33; whseloc; Text[10]) + { + Caption = 'whseloc'; + } + } + + keys + { + key(PK; fiscalno, system_cd, batch_id, detail_num) + { + Clustered = true; + } + } +} \ No newline at end of file From b89f7b3f8700ed075b371e211638b831e0701917 Mon Sep 17 00:00:00 2001 From: Brian Lauer Date: Mon, 1 Jun 2026 12:12:16 -0400 Subject: [PATCH 2/2] Add support for SL historical project transactions to SL Migration extension --- .../src/Migration/History/SLPJTran.Table.al | 343 ++++++++++++++++++ .../src/Migration/History/SLPJTranEx.Table.al | 157 ++++++++ .../History/SLPopulateHistTables.Codeunit.al | 147 ++++++++ .../SLD365BASICISVMSL.PermissionSetExt.al | 2 + .../SLD365BASICMSL.PermissionSetExt.al | 2 + .../SLD365TEAMMEMBERMSL.PermissionSetExt.al | 2 + .../SLINTELLIGENTCLOUDMSL.PermissionSetExt.al | 2 + .../SLMigrationEdit.PermissionSet.al | 2 + .../SLMigrationObjects.PermissionSet.al | 2 + .../SLMigrationRead.PermissionSet.al | 2 + .../src/codeunits/SLHybridWizard.Codeunit.al | 2 + 11 files changed, 663 insertions(+) create mode 100644 Apps/W1/HybridSL/app/src/Migration/History/SLPJTran.Table.al create mode 100644 Apps/W1/HybridSL/app/src/Migration/History/SLPJTranEx.Table.al diff --git a/Apps/W1/HybridSL/app/src/Migration/History/SLPJTran.Table.al b/Apps/W1/HybridSL/app/src/Migration/History/SLPJTran.Table.al new file mode 100644 index 0000000000..1d55f755ca --- /dev/null +++ b/Apps/W1/HybridSL/app/src/Migration/History/SLPJTran.Table.al @@ -0,0 +1,343 @@ +// ------------------------------------------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// ------------------------------------------------------------------------------------------------ + +namespace MSFT.DataMigration.SL; + +table 47105 "SL PJTran" +{ + Access = Internal; + Caption = 'SL PJTran'; + DataClassification = CustomerContent; + + fields + { + field(1; acct; Text[16]) + { + Caption = 'acct'; + } + field(2; alloc_flag; Text[1]) + { + Caption = 'alloc_flag'; + } + field(3; amount; Decimal) + { + Caption = 'amount'; + AutoFormatType = 0; + } + field(4; BaseCuryId; Text[4]) + { + Caption = 'BaseCuryId'; + } + field(5; batch_id; Text[10]) + { + Caption = 'batch_id'; + } + field(6; batch_type; Text[4]) + { + Caption = 'batch_type'; + } + field(7; bill_batch_id; Text[10]) + { + Caption = 'bill_batch_id'; + } + field(8; CpnyId; Text[10]) + { + Caption = 'CpnyId'; + } + field(9; crtd_datetime; DateTime) + { + Caption = 'crtd_datetime'; + } + field(10; crtd_prog; Text[8]) + { + Caption = 'crtd_prog'; + } + field(11; crtd_user; Text[10]) + { + Caption = 'crtd_user'; + } + field(12; CuryEffDate; Date) + { + Caption = 'CuryEffDate'; + } + field(13; CuryId; Text[4]) + { + Caption = 'CuryId'; + } + field(14; CuryMultDiv; Text[1]) + { + Caption = 'CuryMultDiv'; + } + field(15; CuryRate; Decimal) + { + Caption = 'CuryRate'; + AutoFormatType = 0; + } + field(16; CuryRateType; Text[6]) + { + Caption = 'CuryRateType'; + } + field(17; CuryTranamt; Decimal) + { + Caption = 'CuryTranamt'; + AutoFormatType = 0; + } + field(18; data1; Text[16]) + { + Caption = 'data1'; + } + field(19; detail_num; Integer) + { + Caption = 'detail_num'; + } + field(20; employee; Text[10]) + { + Caption = 'employee'; + } + field(21; fiscalno; Text[6]) + { + Caption = 'fiscalno'; + } + field(22; gl_acct; Text[10]) + { + Caption = 'gl_acct'; + } + field(23; gl_subacct; Text[24]) + { + Caption = 'gl_subacct'; + } + field(24; lupd_datetime; DateTime) + { + Caption = 'lupd_datetime'; + } + field(25; lupd_prog; Text[8]) + { + Caption = 'lupd_prog'; + } + field(26; lupd_user; Text[10]) + { + Caption = 'lupd_user'; + } + field(27; noteid; Integer) + { + Caption = 'noteid'; + } + field(28; pjt_entity; Text[32]) + { + Caption = 'pjt_entity'; + } + field(29; post_date; Date) + { + Caption = 'post_date'; + } + field(30; ProjCury_amount; Decimal) + { + Caption = 'ProjCury_amount'; + AutoFormatType = 0; + } + field(31; ProjCuryEffDate; Date) + { + Caption = 'ProjCuryEffDate'; + } + field(32; ProjCuryId; Text[4]) + { + Caption = 'ProjCuryId'; + } + field(33; ProjCuryMultiDiv; Text[1]) + { + Caption = 'ProjCuryMultiDiv'; + } + field(34; ProjCuryRate; Decimal) + { + Caption = 'ProjCuryRate'; + AutoFormatType = 0; + } + field(35; ProjCuryRateType; Text[6]) + { + Caption = 'ProjCuryRateType'; + } + field(36; project; Text[16]) + { + Caption = 'project'; + } + field(37; Subcontract; Text[16]) + { + Caption = 'Subcontract'; + } + field(38; SubTask_Name; Text[50]) + { + Caption = 'SubTask_Name'; + } + field(39; system_cd; Text[2]) + { + Caption = 'system_cd'; + } + field(40; TranProjCuryEffDate; Date) + { + Caption = 'TranProjCuryEffDate'; + } + field(41; TranProjCuryId; Text[4]) + { + Caption = 'TranProjCuryId'; + } + field(42; TranProjCuryMultiDiv; Text[1]) + { + Caption = 'TranProjCuryMultiDiv'; + } + field(43; TranProjCuryRate; Decimal) + { + Caption = 'TranProjCuryRate'; + AutoFormatType = 0; + } + field(44; TranProjCuryRateType; Text[6]) + { + Caption = 'TranProjCuryRateType'; + } + field(45; trans_date; Date) + { + Caption = 'trans_date'; + } + field(46; tr_comment; Text[100]) + { + Caption = 'tr_comment'; + } + field(47; tr_id01; Text[30]) + { + Caption = 'tr_id01'; + } + field(48; tr_id02; Text[30]) + { + Caption = 'tr_id02'; + } + field(49; tr_id03; Text[16]) + { + Caption = 'tr_id03'; + } + field(50; tr_id04; Text[16]) + { + Caption = 'tr_id04'; + } + field(51; tr_id05; Text[4]) + { + Caption = 'tr_id05'; + } + field(52; tr_id06; Decimal) + { + Caption = 'tr_id06'; + AutoFormatType = 0; + } + field(53; tr_id07; Decimal) + { + Caption = 'tr_id07'; + AutoFormatType = 0; + } + field(54; tr_id08; Date) + { + Caption = 'tr_id08'; + } + field(55; tr_id09; Date) + { + Caption = 'tr_id09'; + } + field(56; tr_id10; Integer) + { + Caption = 'tr_id10'; + } + field(57; tr_id23; Text[30]) + { + Caption = 'tr_id23'; + } + field(58; tr_id24; Text[20]) + { + Caption = 'tr_id24'; + } + field(59; tr_id25; Text[20]) + { + Caption = 'tr_id25'; + } + field(60; tr_id26; Text[10]) + { + Caption = 'tr_id26'; + } + field(61; tr_id27; Text[4]) + { + Caption = 'tr_id27'; + } + field(62; tr_id28; Decimal) + { + Caption = 'tr_id28'; + AutoFormatType = 0; + } + field(63; tr_id29; Date) + { + Caption = 'tr_id29'; + } + field(64; tr_id30; Integer) + { + Caption = 'tr_id30'; + } + field(65; tr_id31; Decimal) + { + Caption = 'tr_id31'; + AutoFormatType = 0; + } + field(66; tr_id32; Decimal) + { + Caption = 'tr_id32'; + AutoFormatType = 0; + } + field(67; tr_status; Text[10]) + { + Caption = 'tr_status'; + } + field(68; unit_of_measure; Text[10]) + { + Caption = 'unit_of_measure'; + } + field(69; units; Decimal) + { + Caption = 'units'; + AutoFormatType = 0; + } + field(70; user1; Text[30]) + { + Caption = 'user1'; + } + field(71; user2; Text[30]) + { + Caption = 'user2'; + } + field(72; user3; Decimal) + { + Caption = 'user3'; + AutoFormatType = 0; + } + field(73; user4; Decimal) + { + Caption = 'user4'; + AutoFormatType = 0; + } + field(74; vendor_num; Text[15]) + { + Caption = 'vendor_num'; + } + field(75; voucher_line; Integer) + { + Caption = 'voucher_line'; + } + field(76; voucher_num; Text[10]) + { + Caption = 'voucher_num'; + } + } + + keys + { + key(Key1; fiscalno, system_cd, batch_id, detail_num) + { + Clustered = true; + } + } +} \ No newline at end of file diff --git a/Apps/W1/HybridSL/app/src/Migration/History/SLPJTranEx.Table.al b/Apps/W1/HybridSL/app/src/Migration/History/SLPJTranEx.Table.al new file mode 100644 index 0000000000..6877aade54 --- /dev/null +++ b/Apps/W1/HybridSL/app/src/Migration/History/SLPJTranEx.Table.al @@ -0,0 +1,157 @@ +// ------------------------------------------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// ------------------------------------------------------------------------------------------------ + +namespace MSFT.DataMigration.SL; + +table 47106 "SL PJTranEx" +{ + Access = Internal; + Caption = 'SL PJTranEx'; + DataClassification = CustomerContent; + + fields + { + field(1; batch_id; Text[10]) + { + Caption = 'batch_id'; + } + field(2; crtd_datetime; DateTime) + { + Caption = 'crtd_datetime'; + } + field(3; crtd_prog; Text[8]) + { + Caption = 'crtd_prog'; + } + field(4; crtd_user; Text[10]) + { + Caption = 'crtd_user'; + } + field(5; detail_num; Integer) + { + Caption = 'detail_num'; + } + field(6; equip_id; Text[10]) + { + Caption = 'equip_id'; + } + field(7; fiscalno; Text[6]) + { + Caption = 'fiscalno'; + } + field(8; invtid; Text[30]) + { + Caption = 'invtid'; + } + field(9; lotsernbr; Text[25]) + { + Caption = 'lotsernbr'; + } + field(10; lupd_datetime; DateTime) + { + Caption = 'lupd_datetime'; + } + field(11; lupd_prog; Text[8]) + { + Caption = 'lupd_prog'; + } + field(12; lupd_user; Text[10]) + { + Caption = 'lupd_user'; + } + field(13; orderlineref; Text[5]) + { + Caption = 'orderlineref'; + } + field(14; ordnbr; Text[15]) + { + Caption = 'ordnbr'; + } + field(15; shipperid; Text[15]) + { + Caption = 'shipperid'; + } + field(16; shipperlineref; Text[5]) + { + Caption = 'shipperlineref'; + } + field(17; siteid; Text[10]) + { + Caption = 'siteid'; + } + field(18; system_cd; Text[2]) + { + Caption = 'system_cd'; + } + field(19; tr_id11; Text[30]) + { + Caption = 'tr_id11'; + } + field(20; tr_id12; Text[30]) + { + Caption = 'tr_id12'; + } + field(21; tr_id13; Text[30]) + { + Caption = 'tr_id13'; + } + field(22; tr_id14; Text[16]) + { + Caption = 'tr_id14'; + } + field(23; tr_id15; Text[16]) + { + Caption = 'tr_id15'; + } + field(24; tr_id16; Text[16]) + { + Caption = 'tr_id16'; + } + field(25; tr_id17; Text[4]) + { + Caption = 'tr_id17'; + } + field(26; tr_id18; Text[4]) + { + Caption = 'tr_id18'; + } + field(27; tr_id19; Text[4]) + { + Caption = 'tr_id19'; + } + field(28; tr_id20; Text[40]) + { + Caption = 'tr_id20'; + } + field(29; tr_id21; Text[40]) + { + Caption = 'tr_id21'; + } + field(30; tr_id22; Date) + { + Caption = 'tr_id22'; + } + field(31; tr_status2; Text[1]) + { + Caption = 'tr_status2'; + } + field(32; tr_status3; Text[1]) + { + Caption = 'tr_status3'; + } + field(33; whseloc; Text[10]) + { + Caption = 'whseloc'; + } + } + + keys + { + key(Key1; fiscalno, system_cd, batch_id, detail_num) + { + Clustered = true; + } + } +} \ No newline at end of file diff --git a/Apps/W1/HybridSL/app/src/Migration/History/SLPopulateHistTables.Codeunit.al b/Apps/W1/HybridSL/app/src/Migration/History/SLPopulateHistTables.Codeunit.al index 4230f10f0e..363b03e9c3 100644 --- a/Apps/W1/HybridSL/app/src/Migration/History/SLPopulateHistTables.Codeunit.al +++ b/Apps/W1/HybridSL/app/src/Migration/History/SLPopulateHistTables.Codeunit.al @@ -753,6 +753,153 @@ codeunit 47025 "SL Populate Hist. Tables" AfterProcessedSection(SourceTableId, LastSourceRecordId); end; + internal procedure PopulateHistoricalProjectTransactions() + begin + if not SLCompanyAdditionalSettings.GetMigrateHistProjectTrans() then + exit; + + SLHistMigrationStatusMgmt.UpdateStepStatus("SL Hist. Migration Step Type"::"SL Project Trx.", false); + PopulateHistoricalPJTran(); + PopulateHistoricalPJTranEx(); + PopulateHistoricalPJProj(); + PopulateHistoricalPJEmploy(); + SLHistMigrationStatusMgmt.UpdateStepStatus("SL Hist. Migration Step Type"::"SL Project Trx.", true); + end; + + internal procedure PopulateHistoricalPJTran() + var + SLHistPJTran: Record "SL Hist. PJTran"; + SLPJTran: Record "SL PJTran"; + ErrorReference: Text[150]; + SourceTableId: Integer; + LastSourceRecordId: Integer; + begin + SourceTableId := Database::"SL PJTran"; + if InitialHistYear > 0 then + SLPJTran.SetFilter(fiscalno, '>= %1', Format(InitialHistYear)); + + SLPJTran.SetFilter(CpnyID, '= %1', GetCpnyID()); + + if not SLPJTran.FindSet() then + exit; + + repeat + LastSourceRecordId := SLPJTran.SystemRowVersion; + Clear(SLHistPJTran); + SLHistPJTran.TransferFields(SLPJTran); + + if SLHistPJTran.Insert() then + ReportLastSuccess(SourceTableId, LastSourceRecordId) + else begin + ErrorReference := SLPJTran.fiscalno.Trim() + '-' + SLPJTran.system_cd.Trim() + '-' + SLPJTran.batch_id.Trim() + '-' + Format(SLPJTran.detail_num); + ReportLastError(SourceTableId, LastSourceRecordId, "SL Hist. Migration Step Type"::"SL Project Trx.", ErrorReference); + end; + + AfterProcessedNextRecord(SourceTableId, LastSourceRecordId); + until SLPJTran.Next() = 0; + AfterProcessedSection(SourceTableId, LastSourceRecordId); + end; + + internal procedure PopulateHistoricalPJTranEx() + var + SLHistPJTranEx: Record "SL Hist. PJTranEx"; + SLPJTranEx: Record "SL PJTranEx"; + ErrorReference: Text[150]; + SourceTableId: Integer; + LastSourceRecordId: Integer; + begin + SourceTableId := Database::"SL PJTranEx"; + if InitialHistYear > 0 then + SLPJTranEx.SetFilter(fiscalno, '>= %1', Format(InitialHistYear)); + + if not SLPJTranEx.FindSet() then + exit; + + repeat + LastSourceRecordId := SLPJTranEx.SystemRowVersion; + Clear(SLHistPJTranEx); + SLHistPJTranEx.TransferFields(SLPJTranEx); + + if SLHistPJTranEx.Insert() then + ReportLastSuccess(SourceTableId, LastSourceRecordId) + else begin + ErrorReference := SLPJTranEx.fiscalno.Trim() + '-' + SLPJTranEx.system_cd.Trim() + '-' + SLPJTranEx.batch_id.Trim() + '-' + Format(SLPJTranEx.detail_num); + ReportLastError(SourceTableId, LastSourceRecordId, "SL Hist. Migration Step Type"::"SL Project Trx.", ErrorReference); + end; + + AfterProcessedNextRecord(SourceTableId, LastSourceRecordId); + until SLPJTranEx.Next() = 0; + AfterProcessedSection(SourceTableId, LastSourceRecordId); + end; + + internal procedure PopulateHistoricalPJProj() + var + SLHistPJProj: Record "SL Hist. PJProj"; + SLPJProj: Record "SL PJProj Buffer"; + ErrorReference: Text[150]; + SourceTableId: Integer; + LastSourceRecordId: Integer; + begin + SourceTableId := Database::"SL PJProj Buffer"; + if InitialHistYear > 0 then + SLPJProj.SetFilter(start_date, '>= %1', InitialYearDate); + + SLPJProj.SetFilter(CpnyId, '= %1', GetCpnyID()); + + if not SLPJProj.FindSet() then + exit; + + repeat + LastSourceRecordId := SLPJProj.SystemRowVersion; + Clear(SLHistPJProj); + SLHistPJProj.TransferFields(SLPJProj); + + if SLHistPJProj.Insert() then + ReportLastSuccess(SourceTableId, LastSourceRecordId) + else begin + ErrorReference := CopyStr(SLPJProj.project.Trim(), 1, MaxStrLen(ErrorReference)); + ReportLastError(SourceTableId, LastSourceRecordId, "SL Hist. Migration Step Type"::"SL Project Trx.", ErrorReference); + end; + + AfterProcessedNextRecord(SourceTableId, LastSourceRecordId); + until SLPJProj.Next() = 0; + AfterProcessedSection(SourceTableId, LastSourceRecordId); + end; + + internal procedure PopulateHistoricalPJEmploy() + var + SLHistPJEmploy: Record "SL Hist. PJEmploy"; + SLPJEmploy: Record "SL PJEmploy Buffer"; + ErrorReference: Text[150]; + SourceTableId: Integer; + LastSourceRecordId: Integer; + begin + SourceTableId := Database::"SL PJEmploy Buffer"; + if InitialHistYear > 0 then + SLPJEmploy.SetFilter(date_hired, '>= %1', InitialYearDate); + + SLPJEmploy.SetFilter(CpnyId, '= %1', GetCpnyID()); + + if not SLPJEmploy.FindSet() then + exit; + + repeat + LastSourceRecordId := SLPJEmploy.SystemRowVersion; + Clear(SLHistPJEmploy); + SLHistPJEmploy.TransferFields(SLPJEmploy); + + if SLHistPJEmploy.Insert() then + ReportLastSuccess(SourceTableId, LastSourceRecordId) + else begin + ErrorReference := CopyStr(SLPJEmploy.employee.Trim(), 1, MaxStrLen(ErrorReference)); + ReportLastError(SourceTableId, LastSourceRecordId, "SL Hist. Migration Step Type"::"SL Project Trx.", ErrorReference); + end; + + AfterProcessedNextRecord(SourceTableId, LastSourceRecordId); + until SLPJEmploy.Next() = 0; + AfterProcessedSection(SourceTableId, LastSourceRecordId); + end; + local procedure AfterProcessedNextRecord(TableId: Integer; RecId: Integer) var SLHistSourceProgress: Record "SL Hist. Source Progress"; diff --git a/Apps/W1/HybridSL/app/src/Permissions/SLD365BASICISVMSL.PermissionSetExt.al b/Apps/W1/HybridSL/app/src/Permissions/SLD365BASICISVMSL.PermissionSetExt.al index 1910575ace..694cdd2cfc 100644 --- a/Apps/W1/HybridSL/app/src/Permissions/SLD365BASICISVMSL.PermissionSetExt.al +++ b/Apps/W1/HybridSL/app/src/Permissions/SLD365BASICISVMSL.PermissionSetExt.al @@ -62,6 +62,8 @@ permissionsetextension 47002 "SLD365 BASIC ISV - MSL" extends "D365 BASIC ISV" tabledata "SL PJEquip Buffer" = RIMD, tabledata "SL PJPent Buffer" = RIMD, tabledata "SL PJProj Buffer" = RIMD, + tabledata "SL PJTran" = RIMD, + tabledata "SL PJTranEx" = RIMD, tabledata "SL Post Migration Data Log" = RIMD, tabledata "SL POAddress" = RIMD, tabledata "SL POReceipt" = RIMD, diff --git a/Apps/W1/HybridSL/app/src/Permissions/SLD365BASICMSL.PermissionSetExt.al b/Apps/W1/HybridSL/app/src/Permissions/SLD365BASICMSL.PermissionSetExt.al index c525dcb211..f9dbe1b8ad 100644 --- a/Apps/W1/HybridSL/app/src/Permissions/SLD365BASICMSL.PermissionSetExt.al +++ b/Apps/W1/HybridSL/app/src/Permissions/SLD365BASICMSL.PermissionSetExt.al @@ -62,6 +62,8 @@ permissionsetextension 47001 "SLD365 BASIC - MSL" extends "D365 BASIC" tabledata "SL PJEquip Buffer" = RIMD, tabledata "SL PJPent Buffer" = RIMD, tabledata "SL PJProj Buffer" = RIMD, + tabledata "SL PJTran" = RIMD, + tabledata "SL PJTranEx" = RIMD, tabledata "SL Post Migration Data Log" = RIMD, tabledata "SL POAddress" = RIMD, tabledata "SL POReceipt" = RIMD, diff --git a/Apps/W1/HybridSL/app/src/Permissions/SLD365TEAMMEMBERMSL.PermissionSetExt.al b/Apps/W1/HybridSL/app/src/Permissions/SLD365TEAMMEMBERMSL.PermissionSetExt.al index 167842fe27..15c399828f 100644 --- a/Apps/W1/HybridSL/app/src/Permissions/SLD365TEAMMEMBERMSL.PermissionSetExt.al +++ b/Apps/W1/HybridSL/app/src/Permissions/SLD365TEAMMEMBERMSL.PermissionSetExt.al @@ -62,6 +62,8 @@ permissionsetextension 47003 "SLD365 TEAM MEMBER - MSL" extends "D365 TEAM MEMBE tabledata "SL PJEquip Buffer" = RIMD, tabledata "SL PJPent Buffer" = RIMD, tabledata "SL PJProj Buffer" = RIMD, + tabledata "SL PJTran" = RIMD, + tabledata "SL PJTranEx" = RIMD, tabledata "SL Post Migration Data Log" = RIMD, tabledata "SL POAddress" = RIMD, tabledata "SL POReceipt" = RIMD, diff --git a/Apps/W1/HybridSL/app/src/Permissions/SLINTELLIGENTCLOUDMSL.PermissionSetExt.al b/Apps/W1/HybridSL/app/src/Permissions/SLINTELLIGENTCLOUDMSL.PermissionSetExt.al index a7369d72a4..a873541738 100644 --- a/Apps/W1/HybridSL/app/src/Permissions/SLINTELLIGENTCLOUDMSL.PermissionSetExt.al +++ b/Apps/W1/HybridSL/app/src/Permissions/SLINTELLIGENTCLOUDMSL.PermissionSetExt.al @@ -62,6 +62,8 @@ permissionsetextension 47000 "SLINTELLIGENT CLOUD - MSL" extends "INTELLIGENT CL tabledata "SL PJEquip Buffer" = RIMD, tabledata "SL PJPent Buffer" = RIMD, tabledata "SL PJProj Buffer" = RIMD, + tabledata "SL PJTran" = RIMD, + tabledata "SL PJTranEx" = RIMD, tabledata "SL Post Migration Data Log" = RIMD, tabledata "SL POAddress" = RIMD, tabledata "SL POReceipt" = RIMD, diff --git a/Apps/W1/HybridSL/app/src/Permissions/SLMigrationEdit.PermissionSet.al b/Apps/W1/HybridSL/app/src/Permissions/SLMigrationEdit.PermissionSet.al index f563a29fb9..f85ffbb3b4 100644 --- a/Apps/W1/HybridSL/app/src/Permissions/SLMigrationEdit.PermissionSet.al +++ b/Apps/W1/HybridSL/app/src/Permissions/SLMigrationEdit.PermissionSet.al @@ -64,6 +64,8 @@ permissionset 47004 "SL Migration - Edit" tabledata "SL PJEquip Buffer" = IMD, tabledata "SL PJPent Buffer" = IMD, tabledata "SL PJProj Buffer" = IMD, + tabledata "SL PJTran" = IMD, + tabledata "SL PJTranEx" = IMD, tabledata "SL Post Migration Data Log" = IMD, tabledata "SL POAddress" = IMD, tabledata "SL POReceipt" = IMD, diff --git a/Apps/W1/HybridSL/app/src/Permissions/SLMigrationObjects.PermissionSet.al b/Apps/W1/HybridSL/app/src/Permissions/SLMigrationObjects.PermissionSet.al index f74e104719..b9e498ed19 100644 --- a/Apps/W1/HybridSL/app/src/Permissions/SLMigrationObjects.PermissionSet.al +++ b/Apps/W1/HybridSL/app/src/Permissions/SLMigrationObjects.PermissionSet.al @@ -65,6 +65,8 @@ permissionset 47005 "SL Migration-Objects" table "SL PJEquip Buffer" = X, table "SL PJPent Buffer" = X, table "SL PJProj Buffer" = X, + table "SL PJTran" = X, + table "SL PJTranEx" = X, table "SL Post Migration Data Log" = X, table "SL POAddress" = X, table "SL POReceipt" = X, diff --git a/Apps/W1/HybridSL/app/src/Permissions/SLMigrationRead.PermissionSet.al b/Apps/W1/HybridSL/app/src/Permissions/SLMigrationRead.PermissionSet.al index af1728c513..15da30d738 100644 --- a/Apps/W1/HybridSL/app/src/Permissions/SLMigrationRead.PermissionSet.al +++ b/Apps/W1/HybridSL/app/src/Permissions/SLMigrationRead.PermissionSet.al @@ -65,6 +65,8 @@ permissionset 47006 "SL Migration - Read" tabledata "SL PJEquip Buffer" = R, tabledata "SL PJPent Buffer" = R, tabledata "SL PJProj Buffer" = R, + tabledata "SL PJTran" = R, + tabledata "SL PJTranEx" = R, tabledata "SL Post Migration Data Log" = R, tabledata "SL POAddress" = R, tabledata "SL POReceipt" = R, diff --git a/Apps/W1/HybridSL/app/src/codeunits/SLHybridWizard.Codeunit.al b/Apps/W1/HybridSL/app/src/codeunits/SLHybridWizard.Codeunit.al index ba49332680..9e5274df2e 100644 --- a/Apps/W1/HybridSL/app/src/codeunits/SLHybridWizard.Codeunit.al +++ b/Apps/W1/HybridSL/app/src/codeunits/SLHybridWizard.Codeunit.al @@ -287,6 +287,8 @@ codeunit 47012 "SL Hybrid Wizard" UpdateOrInsertRecord(Database::"SL PJEQRate Buffer", 'PJEQRate'); UpdateOrInsertRecord(Database::"SL PJPent Buffer", 'PJPent'); UpdateOrInsertRecord(Database::"SL PJProj Buffer", 'PJProj'); + UpdateOrInsertRecord(Database::"SL PJTran", 'PJTran'); + UpdateOrInsertRecord(Database::"SL PJTranEx", 'PJTranEx'); // Cash Manager UpdateOrInsertRecord(Database::"SL Address", 'Address'); UpdateOrInsertRecord(Database::"SL CASetup", 'CASetup');