diff --git a/Apps/US/HybridGP_US/app/src/Codeunits/GPPopulateVendor1099Data.Codeunit.al b/Apps/US/HybridGP_US/app/src/Codeunits/GPPopulateVendor1099Data.Codeunit.al index 3412835bab..77a14ab4c7 100644 --- a/Apps/US/HybridGP_US/app/src/Codeunits/GPPopulateVendor1099Data.Codeunit.al +++ b/Apps/US/HybridGP_US/app/src/Codeunits/GPPopulateVendor1099Data.Codeunit.al @@ -88,7 +88,6 @@ codeunit 42003 "GP Populate Vendor 1099 Data" var GPPM00200: Record "GP PM00200"; begin - GPPM00200.SetRange(TEN99TYPE, 2, 5); if not GPPM00200.FindSet() then exit; @@ -115,17 +114,13 @@ codeunit 42003 "GP Populate Vendor 1099 Data" if IRS1099Code <> '' then AssignIRS1099CodeToVendor(Vendor, IRS1099Code); - if GPPM00200.TXIDNMBR <> '' then - Vendor.Validate("Federal ID No.", GPPM00200.TXIDNMBR.TrimEnd()); + if GPPM00200.TXIDNMBR <> '' then begin + Vendor.Validate("Federal ID No.", CopyStr(GPPM00200.TXIDNMBR.TrimEnd(), 1, MaxStrLen(Vendor."Federal ID No."))); + Vendor.Modify(); + end; - if (IRS1099Code <> '') or (GPPM00200.TXIDNMBR <> '') then begin - Vendor.Validate("Tax Identification Type", Vendor."Tax Identification Type"::"Legal Entity"); - if Vendor.Modify() then - AddVendor1099Values(Vendor) - else - LogLastError(Vendor."No."); - end else - LogVendorSkipped(Vendor."No."); + if GPPM00200.TEN99TYPE > 1 then + AddVendor1099Values(Vendor); end; local procedure VendorAlreadyHasIRS1099CodeAssigned(var Vendor: Record Vendor): Boolean diff --git a/Apps/W1/HybridGP/app/src/Migration/Accounts/GPAccountMigrator.codeunit.al b/Apps/W1/HybridGP/app/src/Migration/Accounts/GPAccountMigrator.codeunit.al index e86320b027..adc52d53eb 100644 --- a/Apps/W1/HybridGP/app/src/Migration/Accounts/GPAccountMigrator.codeunit.al +++ b/Apps/W1/HybridGP/app/src/Migration/Accounts/GPAccountMigrator.codeunit.al @@ -16,6 +16,8 @@ codeunit 4017 "GP Account Migrator" DescriptionTrxTxt: Label 'Migrated transaction', Locked = true; BeginningBalanceTrxTxt: Label 'Beginning Balance', Locked = true; MigrationLogAreaTxt: Label 'Account', Locked = true; + FiscalYearMissingContextTxt: Label 'Account: %1, Year: %2', Locked = true; + FiscalYearMissingMessageTxt: Label 'Could not migrate beginning balance because the fiscal year is missing.'; [EventSubscriber(ObjectType::Codeunit, Codeunit::"GL Acc. Data Migration Facade", 'OnMigrateGlAccount', '', true, true)] local procedure OnMigrateGlAccount(var Sender: Codeunit "GL Acc. Data Migration Facade"; RecordIdToMigrate: RecordId) @@ -155,6 +157,7 @@ codeunit 4017 "GP Account Migrator" GenJournalLine: Record "Gen. Journal Line"; GPFiscalPeriods: Record "GP Fiscal Periods"; GPCompanyAdditionalSettings: Record "GP Company Additional Settings"; + GPMigrationWarnings: Record "GP Migration Warnings"; DataMigrationFacadeHelper: Codeunit "Data Migration Facade Helper"; HelperFunctions: Codeunit "Helper Functions"; BeginningBalance: Decimal; @@ -188,39 +191,42 @@ codeunit 4017 "GP Account Migrator" exit; PostingGroupCode := PostingGroupCodeTxt + Format(InitialYear) + 'BB'; - if GPFiscalPeriods.Get(0, InitialYear) then begin - DataMigrationFacadeHelper.CreateGeneralJournalBatchIfNeeded(CopyStr(PostingGroupCode, 1, 10), '', ''); - DataMigrationFacadeHelper.CreateGeneralJournalLine( - GenJournalLine, - PostingGroupCode, - PostingGroupCode, - BeginningBalanceTrxTxt, - GenJournalLine."Account Type"::"G/L Account", - CopyStr(GPAccount.AcctNum, 1, 20), - GPFiscalPeriods.PERIODDT, - 0D, - BeginningBalance, - BeginningBalance, - '', - '' - ); - - ACTNUMBR_1 := GPGL10111.ACTNUMBR_1; - ACTNUMBR_2 := GPGL10111.ACTNUMBR_2; - ACTNUMBR_3 := GPGL10111.ACTNUMBR_3; - ACTNUMBR_4 := GPGL10111.ACTNUMBR_4; - ACTNUMBR_5 := GPGL10111.ACTNUMBR_5; - ACTNUMBR_6 := GPGL10111.ACTNUMBR_6; - ACTNUMBR_7 := GPGL10111.ACTNUMBR_7; - ACTNUMBR_8 := GPGL10111.ACTNUMBR_8; - - if HelperFunctions.AreAllSegmentNumbersEmpty(ACTNUMBR_1, ACTNUMBR_2, ACTNUMBR_3, ACTNUMBR_4, ACTNUMBR_5, ACTNUMBR_6, ACTNUMBR_7, ACTNUMBR_8) then - HelperFunctions.GetSegmentNumbersFromGPAccountIndex(GPGL10111.ACTINDX, ACTNUMBR_1, ACTNUMBR_2, ACTNUMBR_3, ACTNUMBR_4, ACTNUMBR_5, ACTNUMBR_6, ACTNUMBR_7, ACTNUMBR_8); - - DimSetID := HelperFunctions.CreateDimSet(ACTNUMBR_1, ACTNUMBR_2, ACTNUMBR_3, ACTNUMBR_4, ACTNUMBR_5, ACTNUMBR_6, ACTNUMBR_7, ACTNUMBR_8); - GenJournalLine.Validate("Dimension Set ID", DimSetID); - GenJournalLine.Modify(true); + if not GPFiscalPeriods.Get(0, InitialYear) then begin + GPMigrationWarnings.InsertWarning(MigrationLogAreaTxt, StrSubstNo(FiscalYearMissingContextTxt, GPAccount.AcctNum, InitialYear), FiscalYearMissingMessageTxt); + exit; end; + + DataMigrationFacadeHelper.CreateGeneralJournalBatchIfNeeded(CopyStr(PostingGroupCode, 1, 10), '', ''); + DataMigrationFacadeHelper.CreateGeneralJournalLine( + GenJournalLine, + PostingGroupCode, + PostingGroupCode, + BeginningBalanceTrxTxt, + GenJournalLine."Account Type"::"G/L Account", + CopyStr(GPAccount.AcctNum, 1, 20), + GPFiscalPeriods.PERIODDT, + 0D, + BeginningBalance, + BeginningBalance, + '', + '' + ); + + ACTNUMBR_1 := GPGL10111.ACTNUMBR_1; + ACTNUMBR_2 := GPGL10111.ACTNUMBR_2; + ACTNUMBR_3 := GPGL10111.ACTNUMBR_3; + ACTNUMBR_4 := GPGL10111.ACTNUMBR_4; + ACTNUMBR_5 := GPGL10111.ACTNUMBR_5; + ACTNUMBR_6 := GPGL10111.ACTNUMBR_6; + ACTNUMBR_7 := GPGL10111.ACTNUMBR_7; + ACTNUMBR_8 := GPGL10111.ACTNUMBR_8; + + if HelperFunctions.AreAllSegmentNumbersEmpty(ACTNUMBR_1, ACTNUMBR_2, ACTNUMBR_3, ACTNUMBR_4, ACTNUMBR_5, ACTNUMBR_6, ACTNUMBR_7, ACTNUMBR_8) then + HelperFunctions.GetSegmentNumbersFromGPAccountIndex(GPGL10111.ACTINDX, ACTNUMBR_1, ACTNUMBR_2, ACTNUMBR_3, ACTNUMBR_4, ACTNUMBR_5, ACTNUMBR_6, ACTNUMBR_7, ACTNUMBR_8); + + DimSetID := HelperFunctions.CreateDimSet(ACTNUMBR_1, ACTNUMBR_2, ACTNUMBR_3, ACTNUMBR_4, ACTNUMBR_5, ACTNUMBR_6, ACTNUMBR_7, ACTNUMBR_8); + GenJournalLine.Validate("Dimension Set ID", DimSetID); + GenJournalLine.Modify(true); end; local procedure CreateStatisticalAccountBeginningBalanceImp(GPAccount: Record "GP Account") @@ -232,6 +238,7 @@ codeunit 4017 "GP Account Migrator" StatisticalAccJournalBatch: Record "Statistical Acc. Journal Batch"; StatisticalAccJournalLine: Record "Statistical Acc. Journal Line"; StatisticalAccJournalLineCurrent: Record "Statistical Acc. Journal Line"; + GPMigrationWarnings: Record "GP Migration Warnings"; HelperFunctions: Codeunit "Helper Functions"; InitialYear: Integer; BeginningBalance: Decimal; @@ -268,43 +275,46 @@ codeunit 4017 "GP Account Migrator" exit; DocumentNo := PostingGroupCodeTxt + Format(InitialYear) + 'BB'; - if GPFiscalPeriods.Get(0, InitialYear) then begin - if not StatisticalAccJournalBatch.Get('', DocumentNo) then begin - StatisticalAccJournalBatch.Validate(Name, DocumentNo); - StatisticalAccJournalBatch.Insert(true); - end; - - StatisticalAccJournalLineCurrent.SetRange("Journal Batch Name", StatisticalAccJournalBatch.Name); - if StatisticalAccJournalLineCurrent.FindLast() then - LineNum := StatisticalAccJournalLineCurrent."Line No." + 10000 - else - LineNum := 10000; - - StatisticalAccJournalLine.Validate("Journal Batch Name", DocumentNo); - StatisticalAccJournalLine.Validate("Line No.", LineNum); - StatisticalAccJournalLine.Validate("Document No.", DocumentNo); - StatisticalAccJournalLine.Validate(Description, CopyStr(BeginningBalanceTrxTxt, 1, MaxStrLen(StatisticalAccJournalLine.Description))); - StatisticalAccJournalLine.Validate("Statistical Account No.", CopyStr(GPAccount.AcctNum, 1, MaxStrLen(StatisticalAccJournalLine."Statistical Account No."))); - StatisticalAccJournalLine.Validate("Posting Date", GPFiscalPeriods.PERIODDT); - StatisticalAccJournalLine.Validate(Amount, BeginningBalance); - StatisticalAccJournalLine.Insert(); - - ACTNUMBR_1 := GPGL10111.ACTNUMBR_1; - ACTNUMBR_2 := GPGL10111.ACTNUMBR_2; - ACTNUMBR_3 := GPGL10111.ACTNUMBR_3; - ACTNUMBR_4 := GPGL10111.ACTNUMBR_4; - ACTNUMBR_5 := GPGL10111.ACTNUMBR_5; - ACTNUMBR_6 := GPGL10111.ACTNUMBR_6; - ACTNUMBR_7 := GPGL10111.ACTNUMBR_7; - ACTNUMBR_8 := GPGL10111.ACTNUMBR_8; - - if HelperFunctions.AreAllSegmentNumbersEmpty(ACTNUMBR_1, ACTNUMBR_2, ACTNUMBR_3, ACTNUMBR_4, ACTNUMBR_5, ACTNUMBR_6, ACTNUMBR_7, ACTNUMBR_8) then - HelperFunctions.GetSegmentNumbersFromGPAccountIndex(GPGL10111.ACTINDX, ACTNUMBR_1, ACTNUMBR_2, ACTNUMBR_3, ACTNUMBR_4, ACTNUMBR_5, ACTNUMBR_6, ACTNUMBR_7, ACTNUMBR_8); - - DimSetID := HelperFunctions.CreateDimSet(ACTNUMBR_1, ACTNUMBR_2, ACTNUMBR_3, ACTNUMBR_4, ACTNUMBR_5, ACTNUMBR_6, ACTNUMBR_7, ACTNUMBR_8); - StatisticalAccJournalLine.Validate("Dimension Set ID", DimSetID); - StatisticalAccJournalLine.Modify(true); + if not GPFiscalPeriods.Get(0, InitialYear) then begin + GPMigrationWarnings.InsertWarning(MigrationLogAreaTxt, StrSubstNo(FiscalYearMissingContextTxt, GPAccount.AcctNum, InitialYear), FiscalYearMissingMessageTxt); + exit; + end; + + if not StatisticalAccJournalBatch.Get('', DocumentNo) then begin + StatisticalAccJournalBatch.Validate(Name, DocumentNo); + StatisticalAccJournalBatch.Insert(true); end; + + StatisticalAccJournalLineCurrent.SetRange("Journal Batch Name", StatisticalAccJournalBatch.Name); + if StatisticalAccJournalLineCurrent.FindLast() then + LineNum := StatisticalAccJournalLineCurrent."Line No." + 10000 + else + LineNum := 10000; + + StatisticalAccJournalLine.Validate("Journal Batch Name", DocumentNo); + StatisticalAccJournalLine.Validate("Line No.", LineNum); + StatisticalAccJournalLine.Validate("Document No.", DocumentNo); + StatisticalAccJournalLine.Validate(Description, CopyStr(BeginningBalanceTrxTxt, 1, MaxStrLen(StatisticalAccJournalLine.Description))); + StatisticalAccJournalLine.Validate("Statistical Account No.", CopyStr(GPAccount.AcctNum, 1, MaxStrLen(StatisticalAccJournalLine."Statistical Account No."))); + StatisticalAccJournalLine.Validate("Posting Date", GPFiscalPeriods.PERIODDT); + StatisticalAccJournalLine.Validate(Amount, BeginningBalance); + StatisticalAccJournalLine.Insert(); + + ACTNUMBR_1 := GPGL10111.ACTNUMBR_1; + ACTNUMBR_2 := GPGL10111.ACTNUMBR_2; + ACTNUMBR_3 := GPGL10111.ACTNUMBR_3; + ACTNUMBR_4 := GPGL10111.ACTNUMBR_4; + ACTNUMBR_5 := GPGL10111.ACTNUMBR_5; + ACTNUMBR_6 := GPGL10111.ACTNUMBR_6; + ACTNUMBR_7 := GPGL10111.ACTNUMBR_7; + ACTNUMBR_8 := GPGL10111.ACTNUMBR_8; + + if HelperFunctions.AreAllSegmentNumbersEmpty(ACTNUMBR_1, ACTNUMBR_2, ACTNUMBR_3, ACTNUMBR_4, ACTNUMBR_5, ACTNUMBR_6, ACTNUMBR_7, ACTNUMBR_8) then + HelperFunctions.GetSegmentNumbersFromGPAccountIndex(GPGL10111.ACTINDX, ACTNUMBR_1, ACTNUMBR_2, ACTNUMBR_3, ACTNUMBR_4, ACTNUMBR_5, ACTNUMBR_6, ACTNUMBR_7, ACTNUMBR_8); + + DimSetID := HelperFunctions.CreateDimSet(ACTNUMBR_1, ACTNUMBR_2, ACTNUMBR_3, ACTNUMBR_4, ACTNUMBR_5, ACTNUMBR_6, ACTNUMBR_7, ACTNUMBR_8); + StatisticalAccJournalLine.Validate("Dimension Set ID", DimSetID); + StatisticalAccJournalLine.Modify(true); end; procedure MigrateAccountDetails(GPAccount: Record "GP Account"; var GLAccDataMigrationFacade: Codeunit "GL Acc. Data Migration Facade") diff --git a/Apps/W1/HybridGP/app/src/Migration/Customers/GPCustomerAddress.Table.al b/Apps/W1/HybridGP/app/src/Migration/Customers/GPCustomerAddress.Table.al index 3606370c52..b0d0fe4360 100644 --- a/Apps/W1/HybridGP/app/src/Migration/Customers/GPCustomerAddress.Table.al +++ b/Apps/W1/HybridGP/app/src/Migration/Customers/GPCustomerAddress.Table.al @@ -2,6 +2,7 @@ namespace Microsoft.DataMigration.GP; using Microsoft.Sales.Customer; using System.Email; +using Microsoft.Finance.SalesTax; table 4048 "GP Customer Address" { @@ -80,6 +81,7 @@ table 4048 "GP Customer Address" GPSY01200: Record "GP SY01200"; MailManagement: Codeunit "Mail Management"; EmailAddress: Text[80]; + TaxAreaCode: Code[20]; Exists: Boolean; begin if Customer.Get(Rec.CUSTNMBR) then begin @@ -97,7 +99,11 @@ table 4048 "GP Customer Address" ShipToAddress."Fax No." := CopyStr(Rec.FAX.TrimEnd(), 1, MaxStrLen(ShipToAddress."Fax No.")); ShipToAddress."Post Code" := CopyStr(Rec.ZIP.TrimEnd(), 1, MaxStrLen(ShipToAddress."Post Code")); ShipToAddress.County := CopyStr(Rec.STATE.TrimEnd(), 1, MaxStrLen(ShipToAddress.County)); - ShipToAddress."Tax Area Code" := CopyStr(Rec.TAXSCHID.TrimEnd(), 1, MaxStrLen(ShipToAddress."Tax Area Code")); + + TaxAreaCode := CopyStr(Rec.TAXSCHID.TrimEnd(), 1, MaxStrLen(ShipToAddress."Tax Area Code")); + CreateTaxAreaIfNeeded(TaxAreaCode); + + ShipToAddress."Tax Area Code" := TaxAreaCode; if (CopyStr(ShipToAddress."Phone No.", 1, 14) = '00000000000000') then ShipToAddress."Phone No." := ''; @@ -120,6 +126,18 @@ table 4048 "GP Customer Address" end; end; + local procedure CreateTaxAreaIfNeeded(CodeToSet: Code[20]) + var + TaxArea: Record "Tax Area"; + begin + if TaxArea.Get(CodeToSet) then + exit; + + Clear(TaxArea); + TaxArea.Validate(Code, CodeToSet); + TaxArea.Insert(true); + end; + var CustomerEmailTypeCodeLbl: Label 'CUS', Locked = true; } \ No newline at end of file diff --git a/Apps/W1/HybridGP/app/src/Migration/GPTables/GPPopulateCombinedTables.Codeunit.al b/Apps/W1/HybridGP/app/src/Migration/GPTables/GPPopulateCombinedTables.Codeunit.al index 46cb398ad2..ba582de867 100644 --- a/Apps/W1/HybridGP/app/src/Migration/GPTables/GPPopulateCombinedTables.Codeunit.al +++ b/Apps/W1/HybridGP/app/src/Migration/GPTables/GPPopulateCombinedTables.Codeunit.al @@ -2,6 +2,7 @@ namespace Microsoft.DataMigration.GP; using Microsoft.CRM.Outlook; using Microsoft.DataMigration; +using Microsoft.Finance.Currency; using Microsoft.Finance.GeneralLedger.Setup; using Microsoft.Inventory.Item; @@ -370,6 +371,8 @@ codeunit 40125 "GP Populate Combined Tables" GPCustomer.TAXSCHID := GPRM00101.TAXSCHID.Trim(); GPCustomer.UPSZONE := GPRM00101.UPSZONE.Trim(); GPCustomer.TAXEXMT1 := GPRM00101.TAXEXMT1.Trim(); + GPCustomer.CUSTCLAS := GPRM00101.CUSTCLAS.Trim(); + GPCustomer.RMSLSACC := GPRM00101.RMSLSACC; #pragma warning restore AA0139 if GPRM00101.PHONE1.Contains('E+') then @@ -530,13 +533,14 @@ codeunit 40125 "GP Populate Combined Tables" internal procedure PopulateGPVendors() var GPPM00200Vendor: Record "GP PM00200"; + GPPM00201VendorSum: Record "GP PM00201"; + GPSY01200NetAddresses: Record "GP SY01200"; GPVendor: Record "GP Vendor"; - GPCompanyMigrationSettings: Record "GP Company Migration Settings"; + GPCompanyAdditionalSettings: Record "GP Company Additional Settings"; begin GPPM00200Vendor.SetFilter(VENDSTTS, '1|3'); - if GPCompanyMigrationSettings.Get(CompanyName()) then - if GPCompanyMigrationSettings."Migrate Inactive Vendors" then - GPPM00200Vendor.SetRange(VENDSTTS); + if GPCompanyAdditionalSettings.GetMigrateInactiveVendors() then + GPPM00200Vendor.SetRange(VENDSTTS); if not GPPM00200Vendor.FindSet() then exit; @@ -571,7 +575,10 @@ codeunit 40125 "GP Populate Combined Tables" GPVendor.TAXSCHID := GPPM00200Vendor.TAXSCHID.TrimEnd(); GPVendor.UPSZONE := GPPM00200Vendor.UPSZONE.TrimEnd(); GPVendor.TXIDNMBR := GPPM00200Vendor.TXIDNMBR.TrimEnd(); -#pragma warning restore AA0139 + GPVendor.VNDCLSID := GPPM00200Vendor.VNDCLSID.TrimEnd(); +#pragma warning restore AA0139 + + GPVendor.PMPRCHIX := GPPM00200Vendor.PMPRCHIX; if GPPM00200Vendor.PHNUMBR1.Contains('E+') then GPVendor.PHNUMBR1 := '00000000000000' @@ -647,18 +654,12 @@ codeunit 40125 "GP Populate Combined Tables" local procedure ShouldAddItemToStagingTable(var GPIV00101: Record "GP IV00101"): Boolean var GPCompanyAdditionalSettings: Record "GP Company Additional Settings"; - InActive: Boolean; begin if not GPCompanyAdditionalSettings.GetMigrateKitItems() then if GPIV00101.ITEMTYPE = 3 then exit(false); - if GPIV00101.ITEMTYPE = 2 then - InActive := true - else - InActive := GPIV00101.INACTIVE; - - if InActive then + if GPIV00101.INACTIVE then if not GPCompanyAdditionalSettings.GetMigrateInactiveItems() then exit(false); @@ -695,14 +696,21 @@ codeunit 40125 "GP Populate Combined Tables" GPIV40201InventoryUom: Record "GP IV40201"; DummyItem: Record Item; GPMC40000: Record "GP MC40000"; + GPCompanyAdditionalSettings: Record "GP Company Additional Settings"; FoundCurrency: Boolean; begin + GPItem.ITEMNMBR := GPIV00101Inventory.ITEMNMBR; GPItem.No := CopyStr(GPIV00101Inventory.ITEMNMBR.TrimEnd(), 1, MaxStrLen(DummyItem."No.")); GPItem.Description := CopyStr(GPIV00101Inventory.ITEMDESC.TrimEnd(), 1, MaxStrLen(GPItem.Description)); GPItem.SearchDescription := CopyStr(GPIV00101Inventory.ITEMDESC.TrimEnd(), 1, MaxStrLen(GPItem.SearchDescription)); -#pragma warning disable AA0139 - GPItem.ShortName := GPIV00101Inventory.ITEMNMBR.TrimEnd(); -#pragma warning restore AA0139 + + case GPCompanyAdditionalSettings.GetItemDesc2Source() of + "GP Item Desc. 2 Source"::"Short Description": + GPItem.ShortName := CopyStr(GPIV00101Inventory.ITMSHNAM.TrimEnd(), 1, MaxStrLen(GPItem.ShortName)); // ITMSHNAM = Item Short Name + "GP Item Desc. 2 Source"::"Generic Description": + GPItem.ShortName := CopyStr(GPIV00101Inventory.ITMGEDSC.TrimEnd(), 1, MaxStrLen(GPItem.ShortName)); // ITMGEDSC = Item Generic Description + end; + case GPIV00101Inventory.ITEMTYPE of 1, 2: GPItem.ItemType := 0; diff --git a/Apps/W1/HybridGP/app/src/Migration/Items/GPIV00101.Table.al b/Apps/W1/HybridGP/app/src/Migration/Items/GPIV00101.Table.al index e9a34eab65..691f15ee5f 100644 --- a/Apps/W1/HybridGP/app/src/Migration/Items/GPIV00101.Table.al +++ b/Apps/W1/HybridGP/app/src/Migration/Items/GPIV00101.Table.al @@ -15,10 +15,18 @@ table 40116 "GP IV00101" { DataClassification = CustomerContent; } + field(4; ITMSHNAM; Text[15]) + { + DataClassification = CustomerContent; + } field(5; ITEMTYPE; Integer) { DataClassification = CustomerContent; } + field(6; ITMGEDSC; Text[11]) + { + DataClassification = CustomerContent; + } field(7; STNDCOST; Decimal) { AutoFormatType = 0; diff --git a/Apps/W1/HybridGP/app/src/Migration/Items/GPItem.table.al b/Apps/W1/HybridGP/app/src/Migration/Items/GPItem.table.al index e3b5d8fa1c..a6f39f321e 100644 --- a/Apps/W1/HybridGP/app/src/Migration/Items/GPItem.table.al +++ b/Apps/W1/HybridGP/app/src/Migration/Items/GPItem.table.al @@ -92,6 +92,11 @@ table 4095 "GP Item" Caption = 'Item Tracking Code'; DataClassification = CustomerContent; } + field(17; ITEMNMBR; Text[31]) + { + Caption = 'ITEMNMBR'; + DataClassification = CustomerContent; + } } keys diff --git a/Apps/W1/HybridGP/app/src/Migration/Items/GPItemDesc2Source.Enum.al b/Apps/W1/HybridGP/app/src/Migration/Items/GPItemDesc2Source.Enum.al new file mode 100644 index 0000000000..af51689763 --- /dev/null +++ b/Apps/W1/HybridGP/app/src/Migration/Items/GPItemDesc2Source.Enum.al @@ -0,0 +1,13 @@ +namespace Microsoft.DataMigration.GP; + +enum 40011 "GP Item Desc. 2 Source" +{ + value(0; "Short Description") + { + Caption = 'Short Description'; + } + value(1; "Generic Description") + { + Caption = 'Generic Description'; + } +} \ No newline at end of file diff --git a/Apps/W1/HybridGP/app/src/Migration/Items/GPItemMigrator.codeunit.al b/Apps/W1/HybridGP/app/src/Migration/Items/GPItemMigrator.codeunit.al index 92b2c9d0b6..a74d8f846a 100644 --- a/Apps/W1/HybridGP/app/src/Migration/Items/GPItemMigrator.codeunit.al +++ b/Apps/W1/HybridGP/app/src/Migration/Items/GPItemMigrator.codeunit.al @@ -62,7 +62,7 @@ codeunit 4019 "GP Item Migrator" if not GPItem.Get(RecordIdToMigrate) then exit; - if not HelperFunctions.ShouldMigrateItem(GPItem.No) then begin + if not HelperFunctions.ShouldMigrateItem(GPItem.ITEMNMBR) then begin DecrementMigratedCount(); exit; end; @@ -159,7 +159,7 @@ codeunit 4019 "GP Item Migrator" CostingMethodOption::Average: begin // Average : Group by Loc, CurrCost - GPItemTransactionAverageQuery.SetRange(No, GPItem.No); + GPItemTransactionAverageQuery.SetRange(No, GPItem.ITEMNMBR); GPItemTransactionAverageQuery.Open(); while GPItemTransactionAverageQuery.Read() do begin // 1 transaction for each grouping w/ Sum of all Quantities using CurrCost @@ -178,7 +178,7 @@ codeunit 4019 "GP Item Migrator" CostingMethodOption::Standard: begin // Standard : Group by Loc, Standard - GPItemTransactionStandardQuery.SetRange(No, GPItem.No); + GPItemTransactionStandardQuery.SetRange(No, GPItem.ITEMNMBR); GPItemTransactionStandardQuery.Open(); while GPItemTransactionStandardQuery.Read() do begin // 1 transaction for each grouping w/ Sum of all Quantities using Standard @@ -200,14 +200,14 @@ codeunit 4019 "GP Item Migrator" '': begin // 1 transaction for each record using Unit Cost - GPItemTransaction.SetRange(No, GPItem.No); + GPItemTransaction.SetRange(No, GPItem.ITEMNMBR); if GPItemTransaction.FindSet() then repeat CreateItemJnlLine(ItemJnlLine, GPItem, GPItemTransaction, GPItemTransaction.Quantity, GPItemTransaction.DateReceived); until GPItemTransaction.Next() = 0; end; else begin - GPItemTransactionQuery.SetRange(No, GPItem.No); + GPItemTransactionQuery.SetRange(No, GPItem.ITEMNMBR); GPItemTransactionQuery.Open(); while GPItemTransactionQuery.Read() do begin // 1 transaction for each grouping using Unit Cost @@ -251,7 +251,7 @@ codeunit 4019 "GP Item Migrator" CreateInventoryPostingGroup(GPItem, Sender); if GPCompanyAdditionalSettings.GetMigrateItemClasses() then - if GPIV00101.Get(GPItem.No) then + if GPIV00101.Get(GPItem.ITEMNMBR) then ItemClassId := CopyStr(GPIV00101.ITMCLSCD.Trim(), 1, MaxStrLen(ItemClassId)); if (ItemClassId <> '') then @@ -268,7 +268,7 @@ codeunit 4019 "GP Item Migrator" CreateGenProductPostingGroup(GPItem, Sender); if GPCompanyAdditionalSettings.GetMigrateItemClasses() then - if GPIV00101.Get(GPItem.No) then + if GPIV00101.Get(GPItem.ITEMNMBR) then ItemClassId := CopyStr(GPIV00101.ITMCLSCD.TrimEnd(), 1, MaxStrLen(ItemClassId)); if (ItemClassId <> '') then @@ -489,7 +489,7 @@ codeunit 4019 "GP Item Migrator" if GPIV40400.IsEmpty() then exit; - if not GPIV00101.Get(GPItem.No) then + if not GPIV00101.Get(GPItem.ITEMNMBR) then exit; PostingGroupCode := CopyStr(GPIV00101.ITMCLSCD.TrimEnd(), 1, MaxStrLen(PostingGroupCode)); @@ -531,7 +531,7 @@ codeunit 4019 "GP Item Migrator" if not GPCompanyAdditionalSettings.GetMigrateItemClasses() then exit; - if not GPIV00101.Get(GPItem.No) then + if not GPIV00101.Get(GPItem.ITEMNMBR) then exit; PostingGroupCode := CopyStr(GPIV00101.ITMCLSCD.TrimEnd(), 1, MaxStrLen(PostingGroupCode)); diff --git a/Apps/W1/HybridGP/app/src/Migration/Support/PurchaseOrders/GPPOMigrator.codeunit.al b/Apps/W1/HybridGP/app/src/Migration/Support/PurchaseOrders/GPPOMigrator.codeunit.al index b30c3a08fd..30ee240338 100644 --- a/Apps/W1/HybridGP/app/src/Migration/Support/PurchaseOrders/GPPOMigrator.codeunit.al +++ b/Apps/W1/HybridGP/app/src/Migration/Support/PurchaseOrders/GPPOMigrator.codeunit.al @@ -280,8 +280,8 @@ codeunit 40108 "GP PO Migrator" PurchaseLine.Validate("Gen. Prod. Posting Group", GPCodeTxt); PurchaseLine."Unit of Measure" := UnitOfMeasure; PurchaseLine."Unit of Measure Code" := UnitOfMeasure; - PurchaseLine."Location Code" := LocationCode; PurchaseLine.Validate("No.", ItemNo); + PurchaseLine."Location Code" := LocationCode; PurchaseLine."Posting Group" := GPCodeTxt; PurchaseLine.Validate("Expected Receipt Date", GPPOP10110.PRMDATE); PurchaseLine.Description := CopyStr(GPPOP10110.ITEMDESC.Trim(), 1, MaxStrLen(PurchaseLine.Description)); diff --git a/Apps/W1/HybridGP/app/src/Migration/Vendors/GPVendorMigrator.codeunit.al b/Apps/W1/HybridGP/app/src/Migration/Vendors/GPVendorMigrator.codeunit.al index 2550884794..261ee5552e 100644 --- a/Apps/W1/HybridGP/app/src/Migration/Vendors/GPVendorMigrator.codeunit.al +++ b/Apps/W1/HybridGP/app/src/Migration/Vendors/GPVendorMigrator.codeunit.al @@ -669,15 +669,19 @@ codeunit 4022 "GP Vendor Migrator" if not IsTemporaryVendor then exit(true); - // Check for open POs - GPPOP10100.SetRange(POTYPE, GPPOP10100.POTYPE::Standard); - GPPOP10100.SetRange(POSTATUS, 1, 4); - GPPOP10100.SetRange(VENDORID, VendorNo); - HasOpenPurchaseOrders := GPPOP10100.Count() > 0; - - // Check for open AP transactions - GPVendorTransactions.SetRange(VENDORID, VendorNo); - HasOpenTransactions := GPVendorTransactions.Count() > 0; + if GPCompanyAdditionalSettings.GetMigrateOpenPOs() then begin + // Check for open POs + GPPOP10100.SetRange(POTYPE, GPPOP10100.POTYPE::Standard); + GPPOP10100.SetRange(POSTATUS, 1, 4); + GPPOP10100.SetRange(VENDORID, VendorNo); + HasOpenPurchaseOrders := GPPOP10100.Count() > 0; + end; + + if GPCompanyAdditionalSettings.GetMigrateOnlyPayablesMaster() then begin + // Check for open AP transactions + GPVendorTransactions.SetRange(VENDORID, VendorNo); + HasOpenTransactions := GPVendorTransactions.Count() > 0; + end; if not HasOpenPurchaseOrders then if not HasOpenTransactions then diff --git a/Apps/W1/HybridGP/app/src/pages/GPCompanyAddSettingsList.Page.al b/Apps/W1/HybridGP/app/src/pages/GPCompanyAddSettingsList.Page.al index 6362486396..21eae4140c 100644 --- a/Apps/W1/HybridGP/app/src/pages/GPCompanyAddSettingsList.Page.al +++ b/Apps/W1/HybridGP/app/src/pages/GPCompanyAddSettingsList.Page.al @@ -153,6 +153,12 @@ page 4051 "GP Company Add. Settings List" ToolTip = 'Specify whether to migrate kit items.'; ApplicationArea = All; } + field("Item Desc. 2 Source"; Rec."Item Desc. 2 Source") + { + Caption = 'Item Desc. 2 Src'; + ToolTip = 'Specifies whether Short Description or Generic Description populates Item Description 2 field.'; + ApplicationArea = All; + } field("Migrate Customer Classes"; Rec."Migrate Customer Classes") { Caption = 'Customer Classes'; diff --git a/Apps/W1/HybridGP/app/src/pages/GPCompanyMigrationSettings.Page.al b/Apps/W1/HybridGP/app/src/pages/GPCompanyMigrationSettings.Page.al index 1fae58abef..504037b9bd 100644 --- a/Apps/W1/HybridGP/app/src/pages/GPCompanyMigrationSettings.Page.al +++ b/Apps/W1/HybridGP/app/src/pages/GPCompanyMigrationSettings.Page.al @@ -101,6 +101,11 @@ page 40056 "GP Company Migration Settings" Caption = 'Kit Items'; ToolTip = 'Specifies the value of the Migrate Kit Items field.'; } + field("Item Desc. 2 Source"; Rec."Item Desc. 2 Source") + { + Caption = 'Item Desc. 2 Src'; + ToolTip = 'Specifies whether Short Description or Generic Description populates Item Description 2 field.'; + } field("Migrate Inactive Vendors"; Rec."Migrate Inactive Vendors") { Caption = 'Inactive Vendors'; diff --git a/Apps/W1/HybridGP/app/src/pages/GPMigrationConfiguration.Page.al b/Apps/W1/HybridGP/app/src/pages/GPMigrationConfiguration.Page.al index 0e9824e113..3966bb76a2 100644 --- a/Apps/W1/HybridGP/app/src/pages/GPMigrationConfiguration.Page.al +++ b/Apps/W1/HybridGP/app/src/pages/GPMigrationConfiguration.Page.al @@ -442,6 +442,21 @@ page 4050 "GP Migration Configuration" until GPCompanyAdditionalSettings.Next() = 0; end; } + field("Item Desc 2 Source"; Rec."Item Desc. 2 Source") + { + Caption = 'Item Desc. 2 Source'; + ToolTip = 'Specifies whether Short Description or Generic Description populates Item Description 2 field.'; + ApplicationArea = All; + + trigger OnValidate() + begin + if PrepSettingsForFieldUpdate() then + repeat + GPCompanyAdditionalSettings.Validate("Item Desc. 2 Source", Rec."Item Desc. 2 Source"); + GPCompanyAdditionalSettings.Modify(); + until GPCompanyAdditionalSettings.Next() = 0; + end; + } } group(RecurringLines) @@ -785,6 +800,7 @@ page 4050 "GP Migration Configuration" GPCompanyAdditionalSettingsEachCompany.Validate("Migrate Inactive Checkbooks", Rec."Migrate Inactive Checkbooks"); GPCompanyAdditionalSettingsEachCompany.Validate("Migrate Inactive Items", Rec."Migrate Inactive Items"); GPCompanyAdditionalSettingsEachCompany.Validate("Migrate Kit Items", Rec."Migrate Kit Items"); + GPCompanyAdditionalSettingsEachCompany.Validate("Item Desc. 2 Source", Rec."Item Desc. 2 Source"); GPCompanyAdditionalSettingsEachCompany.Validate("Migrate Vendor Classes", Rec."Migrate Vendor Classes"); GPCompanyAdditionalSettingsEachCompany.Validate("Migrate Customer Classes", Rec."Migrate Customer Classes"); GPCompanyAdditionalSettingsEachCompany.Validate("Migrate Item Classes", Rec."Migrate Item Classes"); @@ -855,6 +871,7 @@ page 4050 "GP Migration Configuration" Rec.Validate("Migrate Inactive Checkbooks", GPCompanyAdditionalSettingsInit."Migrate Inactive Checkbooks"); Rec.Validate("Migrate Inactive Items", GPCompanyAdditionalSettingsInit."Migrate Inactive Items"); Rec.Validate("Migrate Kit Items", GPCompanyAdditionalSettingsInit."Migrate Kit Items"); + Rec.Validate("Item Desc. 2 Source", GPCompanyAdditionalSettingsInit."Item Desc. 2 Source"); Rec.Validate("Migrate Vendor Classes", GPCompanyAdditionalSettingsInit."Migrate Vendor Classes"); Rec.Validate("Migrate Customer Classes", GPCompanyAdditionalSettingsInit."Migrate Customer Classes"); Rec.Validate("Migrate Item Classes", GPCompanyAdditionalSettingsInit."Migrate Item Classes"); diff --git a/Apps/W1/HybridGP/app/src/tables/GPCompanyAdditionalSettings.table.al b/Apps/W1/HybridGP/app/src/tables/GPCompanyAdditionalSettings.table.al index 319379305f..4cda507d67 100644 --- a/Apps/W1/HybridGP/app/src/tables/GPCompanyAdditionalSettings.table.al +++ b/Apps/W1/HybridGP/app/src/tables/GPCompanyAdditionalSettings.table.al @@ -487,6 +487,10 @@ table 40105 "GP Company Additional Settings" Rec.Validate("Migrate Receivables Module", true); end; } + field(47; "Item Desc. 2 Source"; enum "GP Item Desc. 2 Source") + { + DataClassification = SystemMetadata; + } } keys @@ -705,6 +709,12 @@ table 40105 "GP Company Additional Settings" exit(Rec."Oldest GL Year to Migrate"); end; + procedure GetItemDesc2Source(): enum "GP Item Desc. 2 Source" + begin + GetSingleInstance(); + exit(Rec."Item Desc. 2 Source"); + end; + // Historical Transactions procedure GetHistInitialYear(): Integer begin diff --git a/Apps/W1/HybridGP/test/src/GPItemTests.codeunit.al b/Apps/W1/HybridGP/test/src/GPItemTests.codeunit.al index 5bfc2605c2..e811a22454 100644 --- a/Apps/W1/HybridGP/test/src/GPItemTests.codeunit.al +++ b/Apps/W1/HybridGP/test/src/GPItemTests.codeunit.al @@ -486,6 +486,7 @@ codeunit 139662 "GP Item Tests" begin Clear(GPItem); GPItem.No := ItemNoSashBrshTok; + GPItem.ITEMNMBR := CopyStr(GPItem.No, 1, MaxStrLen(GPItem.ITEMNMBR)); GPItem.Description := ItemNoSashBrshTok; GPItem.SearchDescription := 'Craftsman Brush 1 1/2\" Sash'; GPItem.ShortName := ItemNoSashBrshTok; @@ -504,6 +505,7 @@ codeunit 139662 "GP Item Tests" Clear(GPItem); GPItem.No := ItemNo12345ITEMNUMBERTok; + GPItem.ITEMNMBR := CopyStr(GPItem.No, 1, MaxStrLen(GPItem.ITEMNMBR)); GPItem.Description := '12345ITEMNUMBER!@#$%1234567890'; GPItem.SearchDescription := 'Item Description !@#123456789012345678901234567890'; GPItem.ShortName := '12345ITEMNUMBER!@#$%1234567890'; @@ -522,6 +524,7 @@ codeunit 139662 "GP Item Tests" Clear(GPItem); GPItem.No := ItemNoStepLadderTok; + GPItem.ITEMNMBR := CopyStr(GPItem.No, 1, MaxStrLen(GPItem.ITEMNMBR)); GPItem.Description := ItemNoStepLadderTok; GPItem.SearchDescription := ItemNoStepLadderTok; GPItem.ShortName := ItemNoStepLadderTok; @@ -540,6 +543,7 @@ codeunit 139662 "GP Item Tests" Clear(GPItem); GPItem.No := ItemNumberItemInactiveTok; + GPItem.ITEMNMBR := CopyStr(GPItem.No, 1, MaxStrLen(GPItem.ITEMNMBR)); GPItem.Description := 'Inactive item'; GPItem.SearchDescription := 'inactive'; GPItem.ShortName := 'Inactive item'; @@ -564,6 +568,7 @@ codeunit 139662 "GP Item Tests" Clear(GPItem); GPItem.No := ItemNoItemDiscontinuedTok; + GPItem.ITEMNMBR := CopyStr(GPItem.No, 1, MaxStrLen(GPItem.ITEMNMBR)); GPItem.Description := 'Discontinued item'; GPItem.SearchDescription := 'discontinued'; GPItem.ShortName := 'Discontinued item'; @@ -589,6 +594,7 @@ codeunit 139662 "GP Item Tests" // Kit and its components Clear(GPItem); GPItem.No := ItemNoKitTok; + GPItem.ITEMNMBR := CopyStr(GPItem.No, 1, MaxStrLen(GPItem.ITEMNMBR)); GPItem.Description := ItemNoKitTok; GPItem.SearchDescription := ItemNoKitTok; GPItem.ShortName := ItemNoKitTok; @@ -611,6 +617,7 @@ codeunit 139662 "GP Item Tests" Clear(GPItem); GPItem.No := ItemNoKitComponentInvTok; + GPItem.ITEMNMBR := CopyStr(GPItem.No, 1, MaxStrLen(GPItem.ITEMNMBR)); GPItem.Description := 'Kit Component Inventory'; GPItem.SearchDescription := 'Kit component inventory'; GPItem.ShortName := 'Kit Component Inventory'; @@ -633,6 +640,7 @@ codeunit 139662 "GP Item Tests" Clear(GPItem); GPItem.No := ItemNoKitComponentSvcTok; + GPItem.ITEMNMBR := CopyStr(GPItem.No, 1, MaxStrLen(GPItem.ITEMNMBR)); GPItem.Description := 'Kit Component Service'; GPItem.SearchDescription := 'Kit component service'; GPItem.ShortName := 'Kit Component SVC'; diff --git a/Apps/W1/HybridGP/test/src/GPItemTransactionTests.codeunit.al b/Apps/W1/HybridGP/test/src/GPItemTransactionTests.codeunit.al index 3cb6ca3675..23e79ecec0 100644 --- a/Apps/W1/HybridGP/test/src/GPItemTransactionTests.codeunit.al +++ b/Apps/W1/HybridGP/test/src/GPItemTransactionTests.codeunit.al @@ -328,6 +328,7 @@ codeunit 139665 "GP Item Transaction Tests" begin GPItem.Init(); GPItem.No := FIFOItemNoLbl; + GPItem.ITEMNMBR := CopyStr(GPItem.No, 1, MaxStrLen(GPItem.ITEMNMBR)); GPItem.Description := FIFOItemNoLbl; GPItem.SearchDescription := FIFOItemNoLbl; GPItem.ShortName := FIFOItemNoLbl; @@ -347,6 +348,7 @@ codeunit 139665 "GP Item Transaction Tests" GPItem.Init(); GPItem.No := FIFOSerialItemNoLbl; + GPItem.ITEMNMBR := CopyStr(GPItem.No, 1, MaxStrLen(GPItem.ITEMNMBR)); GPItem.Description := FIFOSerialItemNoLbl; GPItem.SearchDescription := FIFOSerialItemNoLbl; GPItem.ShortName := FIFOSerialItemNoLbl; @@ -366,6 +368,7 @@ codeunit 139665 "GP Item Transaction Tests" GPItem.Init(); GPItem.No := StandardItemNoLbl; + GPItem.ITEMNMBR := CopyStr(GPItem.No, 1, MaxStrLen(GPItem.ITEMNMBR)); GPItem.Description := StandardItemNoLbl; GPItem.SearchDescription := StandardItemNoLbl; GPItem.ShortName := StandardItemNoLbl; @@ -385,6 +388,7 @@ codeunit 139665 "GP Item Transaction Tests" GPItem.Init(); GPItem.No := StandardLotItemNoLbl; + GPItem.ITEMNMBR := CopyStr(GPItem.No, 1, MaxStrLen(GPItem.ITEMNMBR)); GPItem.Description := StandardLotItemNoLbl; GPItem.SearchDescription := StandardLotItemNoLbl; GPItem.ShortName := StandardLotItemNoLbl; @@ -404,6 +408,7 @@ codeunit 139665 "GP Item Transaction Tests" GPItem.Init(); GPItem.No := AverageItemNoLbl; + GPItem.ITEMNMBR := CopyStr(GPItem.No, 1, MaxStrLen(GPItem.ITEMNMBR)); GPItem.Description := AverageItemNoLbl; GPItem.SearchDescription := AverageItemNoLbl; GPItem.ShortName := AverageItemNoLbl; @@ -423,6 +428,7 @@ codeunit 139665 "GP Item Transaction Tests" GPItem.Init(); GPItem.No := AverageSerialItemNoLbl; + GPItem.ITEMNMBR := CopyStr(GPItem.No, 1, MaxStrLen(GPItem.ITEMNMBR)); GPItem.Description := AverageSerialItemNoLbl; GPItem.SearchDescription := AverageSerialItemNoLbl; GPItem.ShortName := AverageSerialItemNoLbl;