Emmmanuel FIADUFE

Emmmanuel FIADUFE

  • 699
  • 1.3k
  • 62.8k

Object reference not set to an instance of an object

Jan 21 2025 1:37 PM

Hello Team.

I have purchase table and purchaseItem table with thier respective modelView. and in my ajax post request I keep getting this error, Object reference not set to an instance of an object. kindly assist.

 function SavePurchases()
    {
        debugger;
           
        var purchaseModel = new Object();
        var ListOfPurchaseItemsViewModel = new Array();
        purchaseModel.PurchaseID = $.trim($('#PurchaseID').val() + '--' + $('#SelectSupplier').val()),
        purchaseModel.Date = $('#InvocingDate').val().trim(),
        purchaseModel.SupplierID = $('#SelectSupplier').val(),
        purchaseModel.Amount = $('#Amount').val(),
        purchaseModel.Discount = $('#Discount').val(),
        purchaseModel.Tax = $('#Tax').val(),
       purchaseModel.GrandTotal = $('#GrandTotal').val(),
       purchaseModel.IsPaid = $('#Payment').is(":checked") ? 1 : 0,
       purchaseModel.Description = $('#Description').val(),

        $("#orderItems").find("tr:gt(0)").each(function () {
            var PurchaseItemsViewModel = {};
            debugger;
            //PurchaseItemModel.ItemID = parseFloat($(this).find("td:eq(0)").text());
            PurchaseItemsViewModel.ItemName = String($(this).find("td:eq(0)").text());
            PurchaseItemsViewModel.Batch = parseFloat($(this).find("td:eq(5)").text());
            PurchaseItemsViewModel.Qty = parseFloat($(this).find("td:eq(2)").text());
            PurchaseItemsViewModel.CostPrice = parseFloat($(this).find("td:eq(3)").text());
            PurchaseItemsViewModel.SellingPrice = parseFloat($(this).find("td:eq(4)").text());
            PurchaseItemsViewModel.Expiry = Date($(this).find("td:eq(6)").html());

            //var dateText = $(this).find("td:eq(6)").text().trim();
            //var parts = dateText.split('/');
            //var formattedDate = new Date(parts[2], parts[1] - 1, parts[0]); // Month is 0-based
            //PurchaseItemModel.Expiry = formattedDate;

            // Assuming Moment.js is included in the project
            //var dateText = $(this).find("td:eq(6)").text().trim();
            //var formattedDate = moment(dateText, "DD/MM/YYYY").format("YYYY-MM-DD");
            //PurchaseItemModel.Expiry = formattedDate;
          
            ListOfPurchaseItemsViewModel.push(PurchaseItemsViewModel);
        });
        ListOfPurchaseItemsViewModel.purchaseModel = ListOfPurchaseItemsViewModel;
        //post data to server
        $.ajax({
            async: true,
            contentType: "application/json; charset=utf-8",
            type: "POST",
            dataType: "JSON",
            url: "/PurchaseEntry/SavePurchase",
            data: JSON.stringify(purchaseModel),
                    success: function (d) {
                        //check is successfully save to database
                        if (d.status == true) {
                            //will send status from server side
                            alert('Successfully done.');
                            location.reload(true);
                            //clear form
                            purchaseItems = [];
                            $('#PurchaseID').val('');
                            $('#InvocingDate').val('');
                            $('#SelectSupplier').val('0');

                        }
                        else {
                            alert('Failed');
                        }
                        $('#submit').val('Save');
                    },
                    error: function () {
                        alert('Error. Please try again.');
                        $('#btnSubmit').val('Save');
                    }
                });
            
}

 

 public ActionResult SavePurchase(PurchaseItem purchaseModel)
        {
            var result = false;
            try
            {

                tblPurchase objPurchase = new tblPurchase();
                if (purchaseModel.tblPurchase.PurchaseID > 0)
                {
                    objPurchase = objASPNETPHARMACYDBEntities.tblPurchases.Where(x => x.PurchaseID == purchaseModel.PurchaseID).FirstOrDefault<tblPurchase>();
                }else
                {
                    objPurchase.Date = purchaseModel.tblPurchase.Date;
                    objPurchase.SupplierID = purchaseModel.tblPurchase.SupplierID;
                    objPurchase.Amount = purchaseModel.tblPurchase.Amount;
                    objPurchase.Discount = purchaseModel.tblPurchase.Discount;
                    objPurchase.Tax = purchaseModel.tblPurchase.Tax;
                    objPurchase.GrandTotal = purchaseModel.tblPurchase.GrandTotal;
                    objPurchase.IsPaid = purchaseModel.tblPurchase.IsPaid;
                    objPurchase.Description = purchaseModel.tblPurchase.Description;
                    if (purchaseModel.tblPurchase.PurchaseID <= 0)
                        objASPNETPHARMACYDBEntities.tblPurchases.Add(objPurchase);
                    objASPNETPHARMACYDBEntities.SaveChanges();
                    purchaseModel.PurchaseID = purchaseModel.PurchaseID;
                }
                tblPurchaseItem updatePurchase = new tblPurchaseItem();
                if (purchaseModel.PurchaseItemID > 0)
                {
                    updatePurchase = objASPNETPHARMACYDBEntities.tblPurchaseItems.Where(x => x.PurchaseItemID == purchaseModel.PurchaseItemID).FirstOrDefault<tblPurchaseItem>();
                }
                else
                {
                    updatePurchase.PurchaseID = purchaseModel.PurchaseID;
                    updatePurchase.ItemID = purchaseModel.ItemID;
                    updatePurchase.Batch = purchaseModel.Batch;
                    updatePurchase.Qty = purchaseModel.Qty;
                    updatePurchase.CostPrice = purchaseModel.CostPrice;
                    updatePurchase.SellingPrice = purchaseModel.SellingPrice;
                    updatePurchase.Expiry = purchaseModel.Expiry;
                    
                }
                if (purchaseModel.PurchaseItemID <= 0)
                {
                    objASPNETPHARMACYDBEntities.tblPurchaseItems.Add(updatePurchase);
                }
                objASPNETPHARMACYDBEntities.SaveChanges();
                result = true;
            }
            catch (Exception ex)
            {
                throw ex;
                //return Json(new { result = true, message = "Purchase fails to save!" }, JsonRequestBehavior.AllowGet);
            }
            return Json(new { result = true, message = "Purchase successfully saved!" }, JsonRequestBehavior.AllowGet);
        }


Answers (8)