public ActionResult SaveBillNo([FromBody] SaveOrderDTO dTO) { string errMsg = "Error!"; int ret = 0; if (dTO == null) { errMsg = "Kindly send Invoice Data!"; return(Json(new { Count = ret, Msg = errMsg })); } return(Json(new { Count = ret, Msg = errMsg })); }
public ActionResult SaveOrder([FromBody] SaveOrderDTO dTO) /*string name, [FromBody] String address, [FromBody] SaleItemList[] saleItems)*/ { string result = "Error! Order Is Not Complete!"; if (dTO.Name != null && dTO.Address != null && dTO.SaleItems != null) { InvoiceSaveReturn x = new RegularSaleManager().OnInsert(aprajitaContext, dTO, User.Identity.Name, dTO.StoreId); if (x.NoOfRecord <= 0) { result = "Error while saving bill, Kindly try again!"; } else { result = "Invoice is Generated! Kindly print if required"; return(Json(new { x.FileName, result })); } } return(Json(new { FileName = new String("Error"), result })); }
public async Task <ActionResult> AddOrderAsync(AddOrder values) { // Check Customer existence var customer = await _unitOfWork.Customers.GetByAsync(values.CustomerId); if (customer == null) // Nếu không tồn tại khách hàng này trong db { // Add Customer var saveCustomerDTO = new SaveCustomerDTO { Id = values.CustomerId, FullName = values.FullName, Phone = values.Phone, }; // Mapping: SaveCustomer customer = _mapper.Map <SaveCustomerDTO, Customer>(saveCustomerDTO); await _unitOfWork.Customers.AddAsync(customer); } else { customer.FullName = values.FullName; customer.Phone = values.Phone; } // Lấy DepartureDate Id var departureDateIdAsync = await _unitOfWork.Dates.FindAsync(d => d.DepartureDate == Convert.ToDateTime(values.DepartureDateName)); var departureDateId = departureDateIdAsync .Select(d => d.Id).SingleOrDefault(); // Add Order SaveOrderDTO saveOrderDTO = new SaveOrderDTO { Id = await this.autoOrderIdAsync(), TicketCount = values.TicketCount, TotalPrice = values.TotalPrice, CreateAt = DateTime.Now, // Lấy thời điểm đặt vé Status = 0, CustomerId = values.CustomerId, DepartureDateId = departureDateId, ReturnDateId = null, UserId = null }; // Lấy ReturnDate Id if (values.ReturnDateName != "") { var returnDateIdAsync = await _unitOfWork.Dates.FindAsync(d => d.DepartureDate == Convert.ToDateTime(values.ReturnDateName)); saveOrderDTO.ReturnDateId = returnDateIdAsync .Select(d => d.Id).SingleOrDefault(); } // Mapping: SaveOrder var order = _mapper.Map <SaveOrderDTO, Order>(saveOrderDTO); await _unitOfWork.Orders.AddAsync(order); IList <Ticket> tickets = new List <Ticket>(); // Dòng này để kiểm tra dữ liệu tạm thời (xóa sau) // Add Tickets for (int i = 0; i < values.FlightIds.Count; i++) { for (int j = 0; j < values.Passengers.Count; j++) { // Luggage Price var luggageAsync = await _unitOfWork.Luggages.FindAsync(l => l.Id == values.Passengers.ElementAt(j).LuggageIds.ElementAt(i)); decimal luggagePrice = Convert.ToDecimal(luggageAsync.SingleOrDefault().Price); // Ticket Price var ticketAsync = await _unitOfWork.FlightTicketCategories.FindAsync(ft => ft.TicketCategoryId == values.Passengers.ElementAt(j).TicketCategoryId && ft.FlightId == values.FlightIds.ElementAt(i)); decimal ticketPrice = Convert.ToDecimal(ticketAsync.SingleOrDefault().Price); // Lấy ngày bay, i = 0 là của chiều đi, i = 1 là của chiều về int dateId = 0; if (i == 0) { dateId = order.DepartureDateId; } else { dateId = (int)order.ReturnDateId; } var saveTicketDTO = new SaveTicketDTO { Id = await this.autoTicketIdAsync(), PassengerName = values.Passengers.ElementAt(j).PassengerName, PassengerGender = values.Passengers.ElementAt(j).PassengerGender, LuggageId = values.Passengers.ElementAt(j).LuggageIds.ElementAt(i), FlightId = values.FlightIds.ElementAt(i), OrderId = order.Id, DateId = dateId, TicketCategoryId = values.Passengers.ElementAt(j).TicketCategoryId, Price = ticketPrice + luggagePrice }; // Mapping: SaveTicket var ticket = _mapper.Map <SaveTicketDTO, Ticket>(saveTicketDTO); tickets.Add(ticket); // Xóa sau await _unitOfWork.Tickets.AddAsync(ticket); await _unitOfWork.CompleteAsync(); } } return(Ok(new { success = true, message = "Thêm thành công.", data = tickets })); }
public ActionResult SaveEditedInvoice([FromBody] SaveOrderDTO dTO) { string result = "Error! Order Is Not Complete!"; return(Json(new { FileName = new String("Error"), result })); }
public InvoiceSaveReturn OnInsert(eStoreDbContext db, SaveOrderDTO sales, string userName, int StoreId = 1) { Customer cust = db.Customers.Where(c => c.MobileNo == sales.MobileNo).FirstOrDefault(); if (cust == null) { string[] names = sales.Name.Split(" "); string FName = names[0]; string LName = ""; for (int i = 1; i < names.Length; i++) { LName += names[i] + " "; } cust = new Customer { City = sales.Address, Age = 30, FirstName = FName, Gender = Gender.Male, LastName = LName, MobileNo = sales.MobileNo, NoOfBills = 0, TotalAmount = 0, CreatedDate = DateTime.Now.Date }; db.Customers.Add(cust); } string InvNo = GenerateInvoiceNo(db, StoreId, true); List <RegularSaleItem> itemList = new List <RegularSaleItem>(); List <Stock> stockList = new List <Stock>(); foreach (var item in sales.SaleItems) { RegularSaleItem sItem = new RegularSaleItem { BarCode = item.BarCode, MRP = item.Price, Qty = item.Quantity, Discount = 0, SalesmanId = item.Salesman, Units = item.Units, InvoiceNo = InvNo, BasicAmount = item.Amount, TaxAmount = 0, ProductItemId = -1, BillAmount = 0, SaleTaxTypeId = 1, //TODO: default tax id needed }; ProductItem pItem = db.ProductItems.Where(c => c.Barcode == item.BarCode).FirstOrDefault(); Stock stock = db.Stocks.Where(c => c.ProductItemId == pItem.ProductItemId && c.StoreId == StoreId).FirstOrDefault(); sItem.ProductItemId = pItem.ProductItemId; decimal amt = (decimal)item.Quantity * item.Price; sItem.BasicAmount = (amt * 100) / (100 + pItem.TaxRate); sItem.TaxAmount = (sItem.BasicAmount * pItem.TaxRate) / 100; sItem.BillAmount = sItem.BasicAmount + sItem.TaxAmount; //SaleTax Id var taxid = db.SaleTaxTypes.Where(c => c.CompositeRate == pItem.TaxRate).Select(c => c.SaleTaxTypeId).FirstOrDefault(); if (taxid <= 0) { taxid = 1; //TODO: Handle it for creating new saletax id } sItem.SaleTaxTypeId = taxid; itemList.Add(sItem); stock.SaleQty += item.Quantity; stock.Quantity -= item.Quantity; stockList.Add(stock); } var totalBillamt = itemList.Sum(c => c.BillAmount); var totaltaxamt = itemList.Sum(c => c.TaxAmount); var totalDiscount = itemList.Sum(c => c.Discount); var totalQty = itemList.Sum(c => c.Qty); var totalitem = itemList.Count; decimal roundoffamt = Math.Round(totalBillamt) - totalBillamt; PaymentDetail pd = new PaymentDetail { CardAmount = sales.PaymentInfo.CardAmount, CashAmount = sales.PaymentInfo.CashAmount, InvoiceNo = InvNo, IsManualBill = true, MixAmount = 0, PayMode = SalePayMode.Cash }; if (sales.PaymentInfo.CardAmount > 0) { if (sales.PaymentInfo.CashAmount > 0) { pd.PayMode = SalePayMode.Mix; } else { pd.PayMode = SalePayMode.Card; } CardDetail cd = new CardDetail { CardCode = CardType.Visa,//TODO: default Amount = sales.PaymentInfo.CardAmount, AuthCode = (int)Int64.Parse(sales.PaymentInfo.AuthCode), InvoiceNo = InvNo, LastDigit = (int)Int64.Parse(sales.PaymentInfo.CardNo), CardType = CardMode.DebitCard//TODO: default }; if (sales.PaymentInfo.CardType.Contains("Debit") || sales.PaymentInfo.CardType.Contains("debit") || sales.PaymentInfo.CardType.Contains("DEBIT")) { cd.CardType = CardMode.DebitCard; } else if (sales.PaymentInfo.CardType.Contains("Credit") || sales.PaymentInfo.CardType.Contains("credit") || sales.PaymentInfo.CardType.Contains("CREDIT")) { cd.CardType = CardMode.CreditCard; } if (sales.PaymentInfo.CardType.Contains("visa") || sales.PaymentInfo.CardType.Contains("Visa") || sales.PaymentInfo.CardType.Contains("VISA")) { cd.CardCode = CardType.Visa; } else if (sales.PaymentInfo.CardType.Contains("MasterCard") || sales.PaymentInfo.CardType.Contains("mastercard") || sales.PaymentInfo.CardType.Contains("MASTERCARD")) { cd.CardCode = CardType.MasterCard; } else if (sales.PaymentInfo.CardType.Contains("Rupay") || sales.PaymentInfo.CardType.Contains("rupay") || sales.PaymentInfo.CardType.Contains("RUPAY")) { cd.CardCode = CardType.Rupay; } else if (sales.PaymentInfo.CardType.Contains("MASTRO") || sales.PaymentInfo.CardType.Contains("mastro") || sales.PaymentInfo.CardType.Contains("Mastro")) { cd.CardCode = CardType.Rupay; } pd.CardDetail = cd; } RegularInvoice Invoice = new RegularInvoice { Customer = cust, InvoiceNo = InvNo, OnDate = sales.OnDate, IsManualBill = true, StoreId = StoreId, SaleItems = itemList, CustomerId = cust.CustomerId, TotalBillAmount = totalBillamt + roundoffamt, TotalDiscountAmount = totalDiscount, TotalItems = totalitem, TotalQty = totalQty, TotalTaxAmount = totaltaxamt, RoundOffAmount = roundoffamt, PaymentDetail = pd, UserId = userName }; db.RegularInvoices.Add(Invoice); db.Stocks.UpdateRange(stockList); InvoiceSaveReturn returnData = new InvoiceSaveReturn { NoOfRecord = db.SaveChanges(), FileName = "NotSaved" }; if (returnData.NoOfRecord > 0) { ReceiptHeader header = PrinterHelper.GetReceiptHeader(db, StoreId); ReceiptDetails details = PrinterHelper.GetReceiptDetails(Invoice.InvoiceNo, Invoice.OnDate, DateTime.Now.ToShortTimeString(), sales.Name); ReceiptItemTotal itemtotal = PrinterHelper.GetReceiptItemTotal(Invoice); List <ReceiptItemDetails> itemDetailList = PrinterHelper.GetInvoiceDetails(db, itemList); returnData.FileName = "/" + InvoicePrinter.PrintManaulInvoice(header, itemtotal, details, itemDetailList, false); } return(returnData); }