If it is inserting in wrong and not updating it wrong later, you could probably prevent it without reproducing it.
It isn't the way I like to do things, because the underlying problem remains, but without reproducing it that might be your best option.
On line 29-30 of confirm.php you have:
if (isset($_POST["Payment_submit"]) || isset($_POST["Payment_submit_x"])) // Trigger
{
That is the trigger that does the insert summary. Below that you could add another final check:
<?php require_once("webassist/form_validations/wavt_scripts_php.php"); ?>
<?php
if (isset($_POST["Payment_submit"]) || isset($_POST["Payment_submit_x"])) {
$WAFV_Redirect = "checkout.php";
$_SESSION['WAVT_payment_Errors'] = "";
if ($WAFV_Redirect == "") {
$WAFV_Redirect = $_SERVER["PHP_SELF"];
}
$WAFV_Errors = "";
$WAFV_Errors .= WAValidateRQ(WA_getSavedFormValue('CheckoutWizard_NewFromBlank_Default','First_Name') . "",true,1);
if ($WAFV_Errors != "") {
PostResult($WAFV_Redirect,$WAFV_Errors,"payment");
}
}
?>
That way if it ever gets to that point without a First Name value being set, it will redirect to the checkout page and start the checkout process over. It should prevent the problem even without understanding it. Then if you ever find a case where you can't checkout and it keeps starting over you have reproduced the problem.