The record in the table already exit issue

codeunit 50436 GetAllSalesOrders
{
procedure GetSalesOrdersFromArchiveTable()
var
recArchiveSalesOrder: Record “Sales Header Archive”;

begin
    if recArchiveSalesOrder.FindSet() then
        repeat
            recArchiveSalesOrder.CalcFields("No. of Archived Versions");
            if recArchiveSalesOrder."Version No." = recArchiveSalesOrder."No. of Archived Versions" then begin
                InsertIntoEnquiryHeader(recArchiveSalesOrder);
            end;
        until recArchiveSalesOrder.Next() = 0;
end;

procedure InsertIntoEnquiryHeader(recArchiveSalesOrder: Record "Sales Header Archive")
var
    recEnquiriesHeader: Record Enquiries;
    cduEnquiryReturn: Codeunit EnquiriesAndReturns;
    returnHistory: Text;
    cdu_Enquiriesnotes: Codeunit "Enquiries notes";
    enumSalesDocType: Enum "Sales Document Type";
    versionNo: Integer;
begin
    recArchiveSalesOrder.SetFilter("Document Type", '%1 | %2', enumSalesDocType::Order, enumSalesDocType::"Return Order");
    if recArchiveSalesOrder.FindSet() then
        repeat
            recArchiveSalesOrder.CalcFields("No. of Archived Versions");
            versionNo := recArchiveSalesOrder."No. of Archived Versions";
            recEnquiriesHeader.Init();
            recEnquiriesHeader.Id := CreateGuid();
            recEnquiriesHeader.No := recArchiveSalesOrder."No.";
            recEnquiriesHeader."Sell-to Customer No." := recArchiveSalesOrder."Bill-to Customer No.";
            recEnquiriesHeader."Sell-to Customer Name" := recArchiveSalesOrder."Bill-to Name";
            recEnquiriesHeader.Contact := recArchiveSalesOrder."Bill-to Contact";
            recEnquiriesHeader.Address := recArchiveSalesOrder."Bill-to Address";
            recEnquiriesHeader."Address 2" := recArchiveSalesOrder."Bill-to Address 2";
            recEnquiriesHeader.County := recArchiveSalesOrder."Bill-to County";
            recEnquiriesHeader.Postcode := recArchiveSalesOrder."Bill-to Post Code";
            recEnquiriesHeader.Country := recArchiveSalesOrder."Bill-to Country/Region Code";
            recEnquiriesHeader.Email := recArchiveSalesOrder."Sell-to E-Mail";
            recEnquiriesHeader.Phone := recArchiveSalesOrder."Sell-to Phone No.";
            recEnquiriesHeader."Sell-to City" := recArchiveSalesOrder."Bill-to City";

            recEnquiriesHeader."Ship-to-Contact" := recArchiveSalesOrder."Ship-to Contact";
            recEnquiriesHeader."Ship-to City" := recArchiveSalesOrder."Ship-to City";
            recEnquiriesHeader."Ship-to County" := recArchiveSalesOrder."Ship-to County";
            recEnquiriesHeader."Ship-to Country" := recArchiveSalesOrder."Ship-to Country/Region Code";
            recEnquiriesHeader."Ship-to Post Code" := recArchiveSalesOrder."Ship-to Post Code";
            recEnquiriesHeader."Ship-to Address" := recArchiveSalesOrder."Ship-to Address";
            recEnquiriesHeader."Internal Notes" := recArchiveSalesOrder.customDeliveryNotes;

            recArchiveSalesOrder.CalcFields("Amount Including VAT");
            recEnquiriesHeader."Total Value" := recArchiveSalesOrder."Amount Including VAT";
            if recArchiveSalesOrder."Document Type" = recArchiveSalesOrder."Document Type"::"Return Order" then begin
                recEnquiriesHeader.History := cduEnquiryReturn.GetSalesHistory(cduEnquiryReturn.GetSalesOrderNoFromReturnOrderNote(recArchiveSalesOrder.HistoryNotes));
            end
            else begin
                recEnquiriesHeader.History := cduEnquiryReturn.GetSalesHistory(recArchiveSalesOrder."No.");
            end;

            recEnquiriesHeader.Reference := recArchiveSalesOrder."Your Reference";
            recEnquiriesHeader.Description := recArchiveSalesOrder."External Document No.";
            recEnquiriesHeader.isArchive := true;
            recEnquiriesHeader."Location Code" := recArchiveSalesOrder."Location Code";
            recEnquiriesHeader.Status := recArchiveSalesOrder.Status;
            recEnquiriesHeader.ArchieveVersionNo := recArchiveSalesOrder."Version No.";
            recEnquiriesHeader.ArchieveOccurrence := recArchiveSalesOrder."Doc. No. Occurrence";
            recEnquiriesHeader.DateCreated := DT2DATE(recArchiveSalesOrder.SystemCreatedAt);
            recEnquiriesHeader.ShortcutDimension1 := recArchiveSalesOrder."Shortcut Dimension 1 Code";
            recEnquiriesHeader.Insert(true);
            cduEnquiryReturn.InsertSalesLineArchieve(recEnquiriesHeader, recEnquiriesHeader.ArchieveVersionNo);
        // cduEnquiryReturn.GetCustomeNotesFromArchive(recEnquiriesHeader.No, versionNo);
        until recArchiveSalesOrder.Next() = 0;
end;

}
When I click on Get all enquiries i am not getting order for the archive and hence giving error record that already exits.

Look for the PK of recEnquiriesHeader. That should be indicative of why you’re getting the “record already exists” error.

1 Like

This is a custom table, either specific to you or from a third-party extension. You should reach out to the person who developed this table/process for their input on how to correct.

1 Like