Hello Team,
Please I include a boostrap template into my mvc5 application for order receipt printing, and when I save the data after saving which the order receipt suppose to popup automatically, the order number catch this error saying that; An exception of type 'System.NullReferenceException' occurred in App_Web_33zc353f.dll but was not handled in user code,
Kindly assist..
JAVASCRIPT FUNCTION
function FinalPayment() {
// Validate before submission
if ($("#tblRestuarantItemList tr").length <= 1) {
alert("Please add at least one item to the order");
return;
}
if (!$("#Customer").val()) {
alert("Please select a customer");
return;
}
if (!$("#PaymentType").val()) {
alert("Please select a payment type");
return;
}
// Prepare order data
var orderDetails = [];
$("#tblRestuarantItemList").find("tr:gt(0)").each(function () {
var row = $(this);
orderDetails.push({
ItemId: parseInt(row.find("td:eq(0)").text()),
UnitPrice: parseFloat(row.find("td:eq(2)").text()),
Quantity: parseFloat(row.find("td:eq(3)").text()),
Discount: parseFloat(row.find("td:eq(4)").text()),
Vat: parseFloat(row.find("td:eq(5)").text()),
Total: parseFloat(row.find("td:eq(6)").text())
});
});
var orderData = {
OrderNumber: $("#OrderNo").val(),
OrderDate: $("#OrderDate").val(),
PaymentTypeId: parseInt($("#PaymentType").val()),
CustomerId: parseInt($("#Customer").val()),
FinalTotal: parseFloat($("#textFinalTotal").val()),
ListofOrderDetailViewModel: orderDetails
};
// Disable button during processing
var $btn = $("#btnPayment");
$btn.prop("disabled", true).html('<i class="fa fa-spinner fa-spin"></i> Processing...');
$.ajax({
url: '/Home/SaveSales',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(orderData),
dataType: 'json',
success: function (response) {
if (response.success) {
// Show success message
toastr.success("Order #" + response.OrderNumber + " saved successfully!");
// Open receipt in new tab
if (response.OderId) {
var receiptUrl = '/Home/PrintSalesReceipt/' + response.OderId;
window.open(receiptUrl, '_blank');
}
// Clear the form
ResetOrderForm();
// Refresh page after short delay (e.g., 2 seconds)
setTimeout(function () {
location.reload();
}, 2000);
} else {
toastr.error("Error: " + response.message);
}
},
error: function (xhr) {
toastr.error("Error: " + xhr.statusText);
},
complete: function () {
$btn.prop("disabled", false).html('Payment');
}
});
}
public ActionResult Sales()
{
Random random = new Random();
// Generate 6-digit number
string numberPart = random.Next(1, 1000000).ToString("D6");
// Generate 2 random uppercase letters
char letter1 = (char)random.Next('A', 'Z' + 1);
char letter2 = (char)random.Next('A', 'Z' + 1);
// Date part
string datePart = DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss");
// Set separately
ViewBag.OrderDate = datePart;
ViewBag.OrderNumber = numberPart + letter1 + letter2;
CustomerRepository objCustomerRepository = new CustomerRepository();
ItemRepository objItemRepository = new ItemRepository();
PaymentTypeRepository objPaymentTypeRepository = new PaymentTypeRepository();
var objMultipleModels = new Tuple<IEnumerable<SelectListItem>, IEnumerable<SelectListItem>, IEnumerable<SelectListItem>>
(objCustomerRepository.GetAllCustomer(),objItemRepository.GetAllItem(),objPaymentTypeRepository.GetAllPaymentType());
return View(objMultipleModels);
}