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