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