To implement this hotfix, you must have a developer license.
You do not have to have rights to the data stores unless you have to perform data repair.
...
AppliesID := CheckLedgEntry."Document No.";
PaymentDetVendLedgEntry.SETCURRENTKEY("Vendor Ledger Entry No.","Entry Type","Posting Date");
PaymentDetVendLedgEntry.SETRANGE("Vendor Ledger Entry No.",OrigPaymentVendLedgEntry."Entry No.");
// Delete the following lines.
PaymentDetVendLedgEntry.SETRANGE("Entry Type",PaymentDetVendLedgEntry."Entry Type"::Application);
IF PaymentDetVendLedgEntry.FINDFIRST THEN BEGIN
GenJnlLine3."Document No." := OrigPaymentVendLedgEntry."Document No.";
GenJnlLine3."Posting Date" := VoidDate;
GenJnlLine3."Account Type" := GenJnlLine3."Account Type"::Vendor;
GenJnlLine3."Account No." := OrigPaymentVendLedgEntry."Vendor No.";
GenJnlLine3.Correction := TRUE;
GenJnlLine3.Description := STRSUBSTNO(Text001,CheckLedgEntry."Check No.");;
GenJnlLine3."Shortcut Dimension 1 Code" := OrigPaymentVendLedgEntry."Global Dimension 1 Code";
GenJnlLine3."Shortcut Dimension 2 Code" := OrigPaymentVendLedgEntry."Global Dimension 2 Code";
GenJnlLine3."Posting Group" := OrigPaymentVendLedgEntry."Vendor Posting Group";
GenJnlLine3."Source Type" := GenJnlLine3."Source Type"::Vendor;
GenJnlLine3."Source No." := OrigPaymentVendLedgEntry."Vendor No.";
GenJnlLine3."Source Code" := SourceCodeSetup."Financially Voided Check";
GenJnlLine3."Source Currency Code" := OrigPaymentVendLedgEntry."Currency Code";
GenJnlLine3."System-Created Entry" := TRUE;
GenJnlLine3."Financial Void" := TRUE;
GenJnlPostLine.UnapplyVendLedgEntry(GenJnlLine3,PaymentDetVendLedgEntry);
END;
// End of the deleted lines.
WITH OrigPaymentVendLedgEntry DO BEGIN
FINDSET(TRUE,FALSE); // re-get the now-modified payment entry.
REPEAT // set up to be applied by upcoming voiding entry.
MakeAppliesID(AppliesID,CheckLedgEntry."Document No.");
"Applies-to ID" := AppliesID;
...
...
AppliesID := CheckLedgEntry."Document No.";
PaymentDetVendLedgEntry.SETCURRENTKEY("Vendor Ledger Entry No.","Entry Type","Posting Date");
PaymentDetVendLedgEntry.SETRANGE("Vendor Ledger Entry No.",OrigPaymentVendLedgEntry."Entry No.");
// Add the following lines.
PaymentDetVendLedgEntry.SETRANGE(Unapplied,FALSE);
PaymentDetVendLedgEntry.SETFILTER("Applied Vend. Ledger Entry No.",'<>%1',0);
PaymentDetVendLedgEntry.SETRANGE("Entry Type",PaymentDetVendLedgEntry."Entry Type"::Application);
PaymentDetVendLedgEntry.FINDFIRST;
GenJnlLine3."Document No." := OrigPaymentVendLedgEntry."Document No.";
GenJnlLine3."Posting Date" := VoidDate;
GenJnlLine3."Account Type" := GenJnlLine3."Account Type"::Vendor;
GenJnlLine3."Account No." := OrigPaymentVendLedgEntry."Vendor No.";
GenJnlLine3.Correction := TRUE;
GenJnlLine3.Description := STRSUBSTNO(Text001,CheckLedgEntry."Check No.");;
GenJnlLine3."Shortcut Dimension 1 Code" := OrigPaymentVendLedgEntry."Global Dimension 1 Code";
GenJnlLine3."Shortcut Dimension 2 Code" := OrigPaymentVendLedgEntry."Global Dimension 2 Code";
GenJnlLine3."Posting Group" := OrigPaymentVendLedgEntry."Vendor Posting Group";
GenJnlLine3."Source Type" := GenJnlLine3."Source Type"::Vendor;
GenJnlLine3."Source No." := OrigPaymentVendLedgEntry."Vendor No.";
GenJnlLine3."Source Code" := SourceCodeSetup."Financially Voided Check";
GenJnlLine3."Source Currency Code" := OrigPaymentVendLedgEntry."Currency Code";
GenJnlLine3."System-Created Entry" := TRUE;
GenJnlLine3."Financial Void" := TRUE;
GenJnlPostLine.UnapplyVendLedgEntry(GenJnlLine3,PaymentDetVendLedgEntry);
// End of the added lines.
WITH OrigPaymentVendLedgEntry DO BEGIN
FINDSET(TRUE,FALSE); // re-get the now-modified payment entry.
REPEAT // set up to be applied by upcoming voiding entry.
MakeAppliesID(AppliesID,CheckLedgEntry."Document No.");
"Applies-to ID" := AppliesID;
...