Skip to content

Commit 1690178

Browse files
GP Updates - July 2024 (#26821)
This update enhances the GP migrations by: - Migrating GP Kit Items as BC Assembly BOMs. - Prevent migration error when Customer/Vendor phone numbers contain alpha characters. The Customer/Vendors will be migrated, but the phone/fax numbers with alpha characters will be ignored and added to the Warning Log. - History Gen. Journal Line - View Distributions feature. - Updated labels in settings area to specify 'migration' instead of 'upgrade' to prevent customer confusion. Fixes #26487 Fixes [AB#543399](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/543399) --------- Co-authored-by: jaymckinney <[email protected]>
1 parent e9be9d9 commit 1690178

32 files changed

+758
-117
lines changed

Apps/W1/DynamicsGPHistoricalData/app/src/Pages/HistGenJournalLines.Page.al

+10-1
Original file line numberDiff line numberDiff line change
@@ -144,14 +144,23 @@ page 41001 "Hist. Gen. Journal Lines"
144144
trigger OnOpenPage()
145145
begin
146146
if FilterAccountNo <> '' then
147-
Rec.SetFilter("Account No.", FilterAccountNo);
147+
Rec.SetRange("Account No.", FilterAccountNo);
148+
149+
if FilterOriginatingTrxSourceNo <> '' then
150+
Rec.SetRange("Orig. Trx. Source No.", FilterOriginatingTrxSourceNo);
148151
end;
149152

150153
procedure SetFilterAccountNo(AccountNo: Code[130])
151154
begin
152155
FilterAccountNo := AccountNo;
153156
end;
154157

158+
procedure SetFilterOriginatingTrxSourceNo(OriginatingTrxSourceNo: Code[35])
159+
begin
160+
FilterOriginatingTrxSourceNo := OriginatingTrxSourceNo;
161+
end;
162+
155163
var
156164
FilterAccountNo: Code[130];
165+
FilterOriginatingTrxSourceNo: Code[35];
157166
}

Apps/W1/DynamicsGPHistoricalData/app/src/Pages/HistInventoryTrx.Page.al

+28
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,34 @@ page 41010 "Hist. Inventory Trx."
8181
}
8282
}
8383

84+
actions
85+
{
86+
area(Promoted)
87+
{
88+
actionref(ViewDistributions_Promoted; ViewDistributions)
89+
{
90+
}
91+
}
92+
area(Processing)
93+
{
94+
action(ViewDistributions)
95+
{
96+
ApplicationArea = All;
97+
Caption = 'View Distributions';
98+
ToolTip = 'View the G/L account distributions related to this transaction.';
99+
Image = RelatedInformation;
100+
101+
trigger OnAction()
102+
var
103+
HistGenJournalLines: Page "Hist. Gen. Journal Lines";
104+
begin
105+
HistGenJournalLines.SetFilterOriginatingTrxSourceNo(Rec."Audit Code");
106+
HistGenJournalLines.Run();
107+
end;
108+
}
109+
}
110+
}
111+
84112
trigger OnAfterGetCurrRecord()
85113
begin
86114
DataCaptionExpressionTxt := Format(Rec."Document Type") + ' - ' + Rec."Document No.";

Apps/W1/DynamicsGPHistoricalData/app/src/Pages/HistPayablesDocument.Page.al

+28
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,34 @@ page 41008 "Hist. Payables Document"
195195
}
196196
}
197197

198+
actions
199+
{
200+
area(Promoted)
201+
{
202+
actionref(ViewDistributions_Promoted; ViewDistributions)
203+
{
204+
}
205+
}
206+
area(Processing)
207+
{
208+
action(ViewDistributions)
209+
{
210+
ApplicationArea = All;
211+
Caption = 'View Distributions';
212+
ToolTip = 'View the G/L account distributions related to this transaction.';
213+
Image = RelatedInformation;
214+
215+
trigger OnAction()
216+
var
217+
HistGenJournalLines: Page "Hist. Gen. Journal Lines";
218+
begin
219+
HistGenJournalLines.SetFilterOriginatingTrxSourceNo(Rec."Audit Code");
220+
HistGenJournalLines.Run();
221+
end;
222+
}
223+
}
224+
}
225+
198226
trigger OnAfterGetCurrRecord()
199227
begin
200228
CurrPage.HistPayablesApplyList.Page.FilterByVoucherNo(Rec."Document Type", Rec."Voucher No.");

Apps/W1/DynamicsGPHistoricalData/app/src/Pages/HistPurchaseRecv.Page.al

+28
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,34 @@ page 41013 "Hist. Purchase Recv."
181181
}
182182
}
183183

184+
actions
185+
{
186+
area(Promoted)
187+
{
188+
actionref(ViewDistributions_Promoted; ViewDistributions)
189+
{
190+
}
191+
}
192+
area(Processing)
193+
{
194+
action(ViewDistributions)
195+
{
196+
ApplicationArea = All;
197+
Caption = 'View Distributions';
198+
ToolTip = 'View the G/L account distributions related to this transaction.';
199+
Image = RelatedInformation;
200+
201+
trigger OnAction()
202+
var
203+
HistGenJournalLines: Page "Hist. Gen. Journal Lines";
204+
begin
205+
HistGenJournalLines.SetFilterOriginatingTrxSourceNo(Rec."Audit Code");
206+
HistGenJournalLines.Run();
207+
end;
208+
}
209+
}
210+
}
211+
184212
trigger OnAfterGetCurrRecord()
185213
begin
186214
DataCaptionExpressionTxt := Format(Rec."Document Type") + ' - ' + Rec."Receipt No.";

Apps/W1/DynamicsGPHistoricalData/app/src/Pages/HistReceivablesDocument.Page.al

+28
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,34 @@ page 41006 "Hist. Receivables Document"
185185
}
186186
}
187187

188+
actions
189+
{
190+
area(Promoted)
191+
{
192+
actionref(ViewDistributions_Promoted; ViewDistributions)
193+
{
194+
}
195+
}
196+
area(Processing)
197+
{
198+
action(ViewDistributions)
199+
{
200+
ApplicationArea = All;
201+
Caption = 'View Distributions';
202+
ToolTip = 'View the G/L account distributions related to this transaction.';
203+
Image = RelatedInformation;
204+
205+
trigger OnAction()
206+
var
207+
HistGenJournalLines: Page "Hist. Gen. Journal Lines";
208+
begin
209+
HistGenJournalLines.SetFilterOriginatingTrxSourceNo(Rec."Audit Code");
210+
HistGenJournalLines.Run();
211+
end;
212+
}
213+
}
214+
}
215+
188216
trigger OnAfterGetCurrRecord()
189217
begin
190218
CurrPage.HistReceivablesApplyList.Page.FilterByDocumentNo(Rec."Document Type", Rec."Document No.");

Apps/W1/DynamicsGPHistoricalData/app/src/Pages/HistSalesTrx.Page.al

+28
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,34 @@ page 41007 "Hist. Sales Trx."
195195
}
196196
}
197197

198+
actions
199+
{
200+
area(Promoted)
201+
{
202+
actionref(ViewDistributions_Promoted; ViewDistributions)
203+
{
204+
}
205+
}
206+
area(Processing)
207+
{
208+
action(ViewDistributions)
209+
{
210+
ApplicationArea = All;
211+
Caption = 'View Distributions';
212+
ToolTip = 'View the G/L account distributions related to this transaction.';
213+
Image = RelatedInformation;
214+
215+
trigger OnAction()
216+
var
217+
HistGenJournalLines: Page "Hist. Gen. Journal Lines";
218+
begin
219+
HistGenJournalLines.SetFilterOriginatingTrxSourceNo(Rec."Audit Code");
220+
HistGenJournalLines.Run();
221+
end;
222+
}
223+
}
224+
}
225+
198226
trigger OnAfterGetCurrRecord()
199227
begin
200228
DataCaptionExpressionTxt := Rec."No.";

Apps/W1/DynamicsGPHistoricalData/app/src/Tables/HistGenJournalLine.Table.al

+3
Original file line numberDiff line numberDiff line change
@@ -138,5 +138,8 @@ table 40901 "Hist. Gen. Journal Line"
138138
{
139139
IncludedFields = "Source Type", "Journal Entry No.", "Audit Code";
140140
}
141+
key(Key3; "Orig. Trx. Source No.")
142+
{
143+
}
141144
}
142145
}

Apps/W1/HybridGP/app/Permissions/HybridGPEdit.PermissionSet.al

+2-1
Original file line numberDiff line numberDiff line change
@@ -113,5 +113,6 @@ permissionset 4031 "HybridGP - Edit"
113113
tabledata "GP PM30300" = IMD,
114114
tabledata "GP RM20201" = IMD,
115115
tabledata "GP RM30201" = IMD,
116-
tabledata "GP Migration Warnings" = IMD;
116+
tabledata "GP Migration Warnings" = IMD,
117+
tabledata "GP IV00104" = IMD;
117118
}

Apps/W1/HybridGP/app/Permissions/HybridGPObjects.PermissionSet.al

+2-1
Original file line numberDiff line numberDiff line change
@@ -152,5 +152,6 @@ permissionset 4029 "HybridGP - Objects"
152152
table "GP RM30201" = X,
153153
table "GP Migration Warnings" = X,
154154
page "GP Migration Warnings" = X,
155-
page "GP Payment Terms" = X;
155+
page "GP Payment Terms" = X,
156+
table "GP IV00104" = X;
156157
}

Apps/W1/HybridGP/app/Permissions/HybridGPRead.PermissionSet.al

+2-1
Original file line numberDiff line numberDiff line change
@@ -113,5 +113,6 @@ permissionset 4032 "HybridGP - Read"
113113
tabledata "GP PM30300" = R,
114114
tabledata "GP RM20201" = R,
115115
tabledata "GP RM30201" = R,
116-
tabledata "GP Migration Warnings" = R;
116+
tabledata "GP Migration Warnings" = R,
117+
tabledata "GP IV00104" = R;
117118
}

Apps/W1/HybridGP/app/Permissions/INTELLIGENTCLOUDHGP.PermissionSetExt.al

+2-1
Original file line numberDiff line numberDiff line change
@@ -111,5 +111,6 @@ permissionsetextension 4028 "INTELLIGENT CLOUD - HGP" extends "INTELLIGENT CLOUD
111111
tabledata "GP PM30300" = RIMD,
112112
tabledata "GP RM20201" = RIMD,
113113
tabledata "GP RM30201" = RIMD,
114-
tabledata "GP Migration Warnings" = RIMD;
114+
tabledata "GP Migration Warnings" = RIMD,
115+
tabledata "GP IV00104" = RIMD;
115116
}

Apps/W1/HybridGP/app/Permissions/d365basicHGP.permissionsetext.al

+2-1
Original file line numberDiff line numberDiff line change
@@ -110,5 +110,6 @@ permissionsetextension 4025 "D365 BASIC - HGP" extends "D365 BASIC"
110110
tabledata "GP PM30300" = RIMD,
111111
tabledata "GP RM20201" = RIMD,
112112
tabledata "GP RM30201" = RIMD,
113-
tabledata "GP Migration Warnings" = RIMD;
113+
tabledata "GP Migration Warnings" = RIMD,
114+
tabledata "GP IV00104" = RIMD;
114115
}

Apps/W1/HybridGP/app/Permissions/d365basicisvHGP.permissionsetext.al

+2-1
Original file line numberDiff line numberDiff line change
@@ -109,5 +109,6 @@ permissionsetextension 4026 "D365 BASIC ISV - HGP" extends "D365 BASIC ISV"
109109
tabledata "GP PM30300" = RIMD,
110110
tabledata "GP RM20201" = RIMD,
111111
tabledata "GP RM30201" = RIMD,
112-
tabledata "GP Migration Warnings" = RIMD;
112+
tabledata "GP Migration Warnings" = RIMD,
113+
tabledata "GP IV00104" = RIMD;
113114
}

Apps/W1/HybridGP/app/Permissions/d365teammemberHGP.permissionsetext.al

+2-1
Original file line numberDiff line numberDiff line change
@@ -110,5 +110,6 @@ permissionsetextension 4027 "D365 TEAM MEMBER - HGP" extends "D365 TEAM MEMBER"
110110
tabledata "GP PM30300" = RIMD,
111111
tabledata "GP RM20201" = RIMD,
112112
tabledata "GP RM30201" = RIMD,
113-
tabledata "GP Migration Warnings" = RIMD;
113+
tabledata "GP Migration Warnings" = RIMD,
114+
tabledata "GP IV00104" = RIMD;
114115
}

Apps/W1/HybridGP/app/src/Migration/Customers/GPCustomerMigrator.codeunit.al

+27-5
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@ codeunit 4018 "GP Customer Migrator"
1515
SourceCodeTxt: Label 'GENJNL', Locked = true;
1616
PostingGroupDescriptionTxt: Label 'Migrated from GP', Locked = true;
1717
CustomerEmailTypeCodeLbl: Label 'CUS', Locked = true;
18+
MigrationLogAreaTxt: Label 'Customer', Locked = true;
19+
PhoneNumberContainsLettersMsg: Label 'Phone/Fax number skipped because it contains letters. Value=%1', Comment = '%1 is the phone/fax number.';
1820

21+
#pragma warning disable AA0207
1922
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Customer Data Migration Facade", 'OnMigrateCustomer', '', true, true)]
2023
internal procedure OnMigrateCustomer(var Sender: Codeunit "Customer Data Migration Facade"; RecordIdToMigrate: RecordId)
2124
var
@@ -268,7 +271,6 @@ codeunit 4018 "GP Customer Migrator"
268271
GPSY01200: Record "GP SY01200";
269272
Customer: Record Customer;
270273
GPCompanyAdditionalSettings: Record "GP Company Additional Settings";
271-
HelperFunctions: Codeunit "Helper Functions";
272274
DataMigrationErrorLogging: Codeunit "Data Migration Error Logging";
273275
PaymentTermsFormula: DateFormula;
274276
Country: Code[10];
@@ -306,10 +308,7 @@ codeunit 4018 "GP Customer Migrator"
306308
CopyStr(MigrationGPCustomer.CITY, 1, 30));
307309

308310
CustomerDataMigrationFacade.SetContact(CopyStr(MigrationGPCustomer.CNTCPRSN, 1, 50));
309-
MigrationGPCustomer.PHONE1 := HelperFunctions.CleanGPPhoneOrFaxNumber(MigrationGPCustomer.PHONE1);
310-
MigrationGPCustomer.FAX := HelperFunctions.CleanGPPhoneOrFaxNumber(MigrationGPCustomer.FAX);
311-
CustomerDataMigrationFacade.SetPhoneNo(MigrationGPCustomer.PHONE1);
312-
CustomerDataMigrationFacade.SetFaxNo(MigrationGPCustomer.FAX);
311+
SetPhoneAndFaxNumberIfValid(MigrationGPCustomer, CustomerDataMigrationFacade);
313312

314313
if GPCompanyAdditionalSettings.GetGLModuleEnabled() then begin
315314
CustomerDataMigrationFacade.SetCustomerPostingGroup(CopyStr(PostingGroupCodeTxt, 1, 5));
@@ -360,6 +359,29 @@ codeunit 4018 "GP Customer Migrator"
360359
CustomerDataMigrationFacade.ModifyCustomer(true);
361360
end;
362361

362+
local procedure SetPhoneAndFaxNumberIfValid(var MigrationGPCustomer: Record "GP Customer"; var CustomerDataMigrationFacade: Codeunit "Customer Data Migration Facade")
363+
var
364+
GPMigrationWarnings: Record "GP Migration Warnings";
365+
HelperFunctions: Codeunit "Helper Functions";
366+
WarningContext: Text[50];
367+
begin
368+
WarningContext := CopyStr(MigrationGPCustomer.CUSTNMBR.Trim(), 1, MaxStrLen(GPMigrationWarnings.Context));
369+
MigrationGPCustomer.PHONE1 := HelperFunctions.CleanGPPhoneOrFaxNumber(MigrationGPCustomer.PHONE1);
370+
MigrationGPCustomer.FAX := HelperFunctions.CleanGPPhoneOrFaxNumber(MigrationGPCustomer.FAX);
371+
372+
if MigrationGPCustomer.PHONE1 <> '' then
373+
if not HelperFunctions.ContainsAlphaChars(MigrationGPCustomer.PHONE1) then
374+
CustomerDataMigrationFacade.SetPhoneNo(MigrationGPCustomer.PHONE1)
375+
else
376+
GPMigrationWarnings.InsertWarning(MigrationLogAreaTxt, WarningContext, StrSubstNo(PhoneNumberContainsLettersMsg, MigrationGPCustomer.PHONE1));
377+
378+
if MigrationGPCustomer.FAX <> '' then
379+
if not HelperFunctions.ContainsAlphaChars(MigrationGPCustomer.FAX) then
380+
CustomerDataMigrationFacade.SetFaxNo(MigrationGPCustomer.FAX)
381+
else
382+
GPMigrationWarnings.InsertWarning(MigrationLogAreaTxt, WarningContext, StrSubstNo(PhoneNumberContainsLettersMsg, MigrationGPCustomer.FAX));
383+
end;
384+
363385
local procedure MigrateCustomerAddresses(MigrationGPCustomer: Record "GP Customer")
364386
var
365387
GPCustomerAddress: Record "GP Customer Address";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
namespace Microsoft.DataMigration.GP;
2+
3+
table 41007 "GP IV00104"
4+
{
5+
DataClassification = CustomerContent;
6+
fields
7+
{
8+
field(1; ITEMNMBR; Text[31])
9+
{
10+
DataClassification = CustomerContent;
11+
}
12+
field(2; SEQNUMBR; Integer)
13+
{
14+
DataClassification = CustomerContent;
15+
}
16+
field(3; CMPTITNM; Text[31])
17+
{
18+
DataClassification = CustomerContent;
19+
}
20+
field(4; CMPITUOM; Text[9])
21+
{
22+
DataClassification = CustomerContent;
23+
}
24+
field(5; CMPITQTY; Decimal)
25+
{
26+
DataClassification = CustomerContent;
27+
}
28+
field(6; CMPSERNM; Boolean)
29+
{
30+
DataClassification = CustomerContent;
31+
}
32+
field(7; DEX_ROW_ID; Integer)
33+
{
34+
DataClassification = CustomerContent;
35+
}
36+
}
37+
keys
38+
{
39+
key(Key1; ITEMNMBR, CMPTITNM, CMPITUOM)
40+
{
41+
Clustered = true;
42+
}
43+
}
44+
}

0 commit comments

Comments
 (0)