Created Invoice and auto Posted Invoiced

Currently, I am importing the records to a table then creating Invoice and automatically posting.
I have successfully created the Invoice but cannot post automatically. Please give me a solution. Thanks so much

TempImport Invoice - OnAfterGetRecord()

vCount := "TempImport Invoice".COUNT;

IF "Created Invoice" = FALSE THEN BEGIN
  IF (LastDocument <> "Document No.") THEN BEGIN

//Insert Purchase Invoice

  PurchHeader.INIT;
  PurchHeader."Document Type" := PurchHeader."Document Type"::Invoice;
  DocNo  := lCdu_NoSeries.GetNextNo('P-INV+',TODAY,TRUE);
  PurchHeader."No." := DocNo;
  PurchHeader.INSERT(TRUE);
  
  PurchHeader.VALIDATE("Buy-from Vendor No.","Account No.");
  PurchHeader.VALIDATE("Order Date", WORKDATE);
  PurchHeader.VALIDATE("Responsibility Center","Responsibility Center");

  PurchHeader."Vendor Invoice No.":="TempImport Invoice"."Document No.";
  PurchHeader.MODIFY;

  LineNo :=0;
END;
  LastDocument:="TempImport Invoice"."Document No.";
  
  PurchLineRec.RESET;
  PurchLineRec.SETCURRENTKEY("Document No.","Line No.");
  PurchLineRec.SETRANGE("Document Type",PurchHeader."Document Type");
  PurchLineRec.SETRANGE("Document No.",PurchHeader."No.");

  IF PurchLineRec.FINDLAST THEN
    LineNo := PurchLineRec."Line No." +10000
  ELSE
    LineNo += 10000;
    PurchLine.INIT;

//Create Purchase Line
    PurchLine.VALIDATE("Document Type", PurchLine."Document Type"::Invoice);
    PurchLine.VALIDATE("Document No.", PurchHeader."No.");
    PurchLine.VALIDATE("Line No.", LineNo);

    PurchLine.VALIDATE(Type,PurchLine.Type::"G/L Account" );
    PurchLine.VALIDATE("No.","G/L Account");  // -> Check G/L
    PurchLine.VALIDATE(Quantity,1);
    PurchLine.VALIDATE("Direct Unit Cost","Amount");
    PurchLine.VALIDATE("Dimension Set ID","Dimension Set ID");

    PurchLine.INSERT(TRUE);
    
    PurchLine."Dimension Set ID":="Dimension Set ID";
    PurchLine.MODIFY;

END;


//Process PPI Document
//    ReleasePurchDoc.PerformManualRelease(PurchHeader);
//    PostPurchaseInvoice(PurchHeader."No.");


TempImport Invoice- OnPostDataItem()
PurchaseHeader.SETRANGE("Vendor Invoice No.","History Dragon Payment"."Document No.");
 IF PurchaseHeader.FIND('-') THEN BEGIN
 REPEAT
  ReleasePurchDoc.PerformManualRelease(PurchHeader);
  PostPurchaseInvoice(PurchHeader."No.");
 UNTIL PurchaseHeader.NEXT=0;
END;

//Proc posted

PostPurchaseInvoice(DocNo : Code[20]) : Boolean

WITH PurchHeaderRec DO BEGIN
  PurchHeaderRec.SETRANGE("No.",DocNo);
  PurchHeaderRec.SETFILTER("Document Type",'%1',PurchHeaderRec."Document Type"::Invoice);
   IF PurchHeaderRec.FIND('-') THEN 
   BEGIN
 //     ReleasePurchDoc.PerformManualRelease(PurchHeaderRec);
      PurchPost.RUN(PurchHeaderRec);
   END;
END;

Please give us a bit more to work with. Like what error do you get, how far does it come with you run it with the debugger turned on?

Thank you reply.

For example, in the import table, there are two documents. And after creating 2 Invoice (A, B), the program will only post Invoice last created.

Are you using Background Posting of standard NAV??

Thank you have replied. Yes, I used Background Posting

You make sure you set the Receive and Invoice values something like this

WITH PurchaseHeader DO BEGIN
    Ship := "Document Type" = "Document Type"::"Return Order";
    Receive := "Document Type" = "Document Type"::Order;
    Invoice := TRUE;
END;
PurchPost.RUN(PurchaseHeader);

And what is the Error you are facing?