예제 #1
0
        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);
        }
예제 #2
0
        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));
            }
        }