Hello Team,
I have some few issues with my project,
The Array is not able to send the table data rom the client side to the server side.
I want the controller to calculate taxes and profit on each individual sales and save them into the sales table.
I want to print sales receipt after sales by Transaction.
the stock table contains cost price and the selling price of the items.
function SaveSales() {
debugger;
var ObjSalesModel = {
tblSales: {
// Prepare the data
Amount: parseFloat($('#txtTotal').val()),
Discount: parseFloat($('#discountPercent').val()),
GrandTotal: parseFloat($('#grandTotal').val()),
},
SalesItems: []
};
$("#tblAppendHere").find("tr:gt(0)").each(function () {
debugger;
var SalesItem = {
StockID: parseInt($(this).find("td:eq(1)").text()),
SalesID: parseInt($(this).find("td:eq(2)").text()),
Qty: parseInt($(this).find("td:eq(3)").text()),
Rate: parseInt($(this).find("td:eq(4)").text()),
Amount: parseInt($(this).find("td:eq(5)").text())
};
ObjSalesModel.SalesItems.push(SalesItem);
});
//post data to server
$.ajax({
async: true,
contentType: "application/json; charset=utf-8",
type: "POST",
dataType: "JSON",
url: "/SalesEntry/SaveSales",
data: JSON.stringify(ObjSalesModel),
success: function (data) {
if(data.message==true){
toastr.success(data.message==true"Sales process successfully!...");
// After successful save, open the print preview in a popup
var orderNumber = data.TransactionNo;
// Assuming the order number is returned from the server
var printUrl = '/SalesEntry/SalesReceipt?TransactionNo=' + orderNumber;
//window.open(printUrl, 'PrintPreview', 'width=800,height=600');
window.location = printUrl;
}
}, error: function () {
alert("There is some problem adding the data");
}
//});
//}
});
}
public ActionResult SaveSales(SalesModel ObjSalesModel)
{
if (ObjSalesModel == null || ObjSalesModel.tblSales == null)
{
return Json(new { result = false, message = "Invalid data received." }, JsonRequestBehavior.AllowGet);
}
try
{
decimal vat = Vat;
decimal costPrice = CostPrice;
decimal sellingPrice = SellingPrice;
decimal Profit = SellingPrice - CostPrice;
decimal Vatpercent = (vat / 100) * sellingPrice;
tblSale ObjSales = new tblSale();
ObjSales.OrderDate = DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss");
ObjSales.TransactionNo = string.Format("{0:ddmmmyyyyhhmmss }", DateTime.Now);
ObjSales.Amount = ObjSalesModel.Amount;
ObjSales.Discount = ObjSalesModel.Discount;
ObjSales.Tax = ObjSalesModel.Tax;
ObjSales.GrandTotal = ObjSalesModel.GrandTotal;
ObjSales.Profit = ObjSalesModel.Profit;
ObjSales.UserID = ObjSalesModel.UserID;
objASPNETPHARMACYDBEntities.tblSales.Add(ObjSales);
objASPNETPHARMACYDBEntities.SaveChanges();
ObjSales.SalesID = ObjSalesModel.SalesID;
foreach (var sales in ObjSalesModel.SalesItems)
{
tblSalesItem ObjSalesItem = new tblSalesItem();
ObjSalesItem.StockID = ObjSalesModel.StockID;
ObjSalesItem.SalesID = ObjSalesModel.SalesID;
ObjSalesItem.Qty = ObjSalesModel.Qty;
ObjSalesItem.Rate = ObjSalesModel.Rate;
ObjSalesItem.Amount = ObjSalesModel.Amount;
objASPNETPHARMACYDBEntities.tblSalesItems.Add(ObjSalesItem);
objASPNETPHARMACYDBEntities.SaveChanges();
var ObjtblStock = objASPNETPHARMACYDBEntities.tblStocks.Where(x => x.StockID == sales.StockID).FirstOrDefault();
ObjtblStock.Qty = (ObjtblStock.Qty) - (sales.Qty);
objASPNETPHARMACYDBEntities.Entry(ObjtblStock).State = EntityState.Modified;
objASPNETPHARMACYDBEntities.SaveChanges();
}
return Json(new { result = true, message = "Sales fail to saved!" }, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
//throw;
return Json(new { result = false, message = ex.Message }, JsonRequestBehavior.AllowGet);
//return Json(new { result = true, message = "Sales successfully saved!" }, JsonRequestBehavior.AllowGet);
}
}