public async Task <JsonResult> ProcessOrder(long orderId) { JsonResult response = null; try { var order = db.Orders.Find(orderId); var scwInvoice = db.SCWTimers.Where(t => t.OrderId == orderId); if (order == null && !scwInvoice.Any()) { response = Json(new { success = false, responseText = "Invalid order number." }, JsonRequestBehavior.AllowGet); return(response); } if (order.StatusId == (long)EOrderStatus.NEW) { response = Json(new { success = false, responseText = "Order cannot be processed before Invoice." }, JsonRequestBehavior.AllowGet); return(response); } //UPDATE INVOICE STATUS IN SCWInvoice TABLE SCWTimer scwInvoiceRow = scwInvoice.FirstOrDefault(); scwInvoiceRow.IsInvoiced = true; db.Entry(scwInvoiceRow).State = EntityState.Modified; //UPDATE INVOICE STATUS IN SCWInvoice TABLE order.StatusId = (long)EOrderStatus.COMPLETED; db.Entry(order).State = EntityState.Modified; var invoice = new Invoice() { OrderId = scwInvoice.FirstOrDefault().OrderId, InvoiceNumber = scwInvoiceRow.InvoiceNumber, InvoiceDate = scwInvoiceRow.InvoiceDate, GrandTotal = scwInvoiceRow.GrandTotal, DiscountValue = scwInvoiceRow.DiscountValue, GST = scwInvoiceRow.GST, NetTotal = scwInvoiceRow.NetTotal, PaymentType = scwInvoiceRow.PaymentType, ServiceCharges = scwInvoiceRow.ServiceCharges, IsSentToPRA = true, IsDeleted = false, UpdatedOn = DateTime.Now, }; db.Invoices.Add(invoice); var processStatus = await db.SaveChangesAsync(); if (processStatus > 0) { response = Json(new { success = true, responseText = "Order has been completed." }, JsonRequestBehavior.AllowGet); } } catch (Exception ex) { response = Json(new { success = false, responseText = "Invalid order number." }, JsonRequestBehavior.AllowGet); throw; } return(response); }
public async Task <JsonResult> GenerateInvoice(SCWTimer invoice) { string message = "Invoice Generated."; bool isValidData = true; try { invoice.InvoiceDate = DateTime.Now; if (invoice.InvoiceNumber == null || invoice.InvoiceNumber <= 0) { message = "Invoice Number is not valid."; isValidData = false; } else if (invoice.OrderId == null || invoice.OrderId <= 0) { message = "Order Not selected."; isValidData = false; } else if (invoice.GrandTotal == null || invoice.GrandTotal <= 0) { message = "Invoice amount must be greater than 0."; isValidData = false; } if (isValidData) { var checkIfAlreadyGenerated = db.SCWTimers.Where(t => t.OrderId == invoice.OrderId); if (checkIfAlreadyGenerated != null && checkIfAlreadyGenerated.Any()) { return(Json(new { success = false, responseText = "Invoice Already Generated." }, JsonRequestBehavior.AllowGet)); } else { if (invoice.IsDeleted.GetValueOrDefault()) { invoice.IsDeleted = true; invoice.IsInvoiced = false; } else { invoice.IsDeleted = false; } var order = db.Orders.Where(t => t.Id == invoice.OrderId).FirstOrDefault(); order.StatusId = (int)EOrderStatus.PENDING; db.Entry(order).State = EntityState.Modified; invoice.IsInvoiced = false; //invoice.UpdatedOn = DateTime.Now; invoice.InvoiceDate = order.OrderDateTime.Value; var invoiceData = db.SCWTimers.Add(invoice); var result = await db.SaveChangesAsync(); try { if (Common.CSNCommon.DataSync && !invoice.IsDeleted.GetValueOrDefault()) { /*PRALService.ServiceSoap client = new PRALService.ServiceSoapClient("ServiceSoap12"); * var praUpdateStatus = client.Resturant_Details(Common.CSNCommon.RestraurantId, invoice.InvoiceDate, invoice.InvoiceNumber.ToString(), * invoice.GrandTotal, invoice.GST, (invoice.GrandTotal + invoice.GST), 0, 0, 0, "0", false); * if (praUpdateStatus >= 1) * { * var updateInvoice = db.Invoices.Find(invoiceData.Id); * updateInvoice.IsSentToPRA = true; * var updateResult = await db.SaveChangesAsync(); * } */ } var updateInvStatus = await UpdateInventory(invoice.OrderId); } catch (Exception ex) { throw; } return(Json(new { success = true, responseText = $"{message}" }, JsonRequestBehavior.AllowGet)); } } else { return(Json(new { success = false, responseText = $"{message}" }, JsonRequestBehavior.AllowGet)); } } catch (Exception ex) { return(Json(new { success = false, responseText = $"{ex.Message}" }, JsonRequestBehavior.AllowGet)); } }