0
Answer

Object reference not set to an instance of an object

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);
            
        }
 

Next Recommended Forum