public async Task <IActionResult> PutRegularInvoice(string id, RegularInvoice regularInvoice) { if (id != regularInvoice.InvoiceNo) { return(BadRequest()); } _context.Entry(regularInvoice).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!RegularInvoiceExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public int CreateSaleEntry(VoyagerContext db, DateTime onDate, AprajitaRetailsContext arDB) { int ctr = 0; bool isVat = false; if (onDate < new DateTime(2017, 7, 1)) { isVat = true; return(-1);// TODO: Temp implement for vat system } RegularInvoice saleInvoice = null; var data = db.ImportSaleItemWises.Where(c => c.IsDataConsumed == false && c.InvoiceDate.Date == onDate.Date).OrderBy(c => c.InvoiceNo).ToList(); if (data != null) { foreach (var item in data) { saleInvoice = CreateSaleInvoice(db, arDB, item, saleInvoice); //Create SaleInvoice saleInvoice.SaleItems.Add(CreateSaleItem(db, item)); // Create SaleItems ctr++; } if (saleInvoice != null) { db.RegularInvoices.Add(saleInvoice); // Save Last Sale Invoice db.SaveChanges(); CreateDailySale(arDB, db, saleInvoice); // Create DailySale Entry } return(ctr); } else { return(ctr); } }
public string RePrintManaulInvoice(eStoreDbContext db, RegularInvoice invoice, int StoreId = 1) { ReceiptHeader header = PrinterHelper.GetReceiptHeader(db, StoreId); ReceiptDetails details = PrinterHelper.GetReceiptDetails(invoice.InvoiceNo, invoice.OnDate, DateTime.Now.ToShortTimeString(), invoice.Customer.FullName); ReceiptItemTotal itemtotal = PrinterHelper.GetReceiptItemTotal(invoice); List <ReceiptItemDetails> itemDetailList = PrinterHelper.GetInvoiceDetails(db, invoice.SaleItems.ToList()); return(InvoicePrinter.PrintManaulInvoice(header, itemtotal, details, itemDetailList, true)); }
/// <summary> /// Get RecieptTotals /// </summary> /// <param name="inv"></param> /// <returns></returns> public static ReceiptItemTotal GetReceiptItemTotal(RegularInvoice inv) { ReceiptItemTotal total = new ReceiptItemTotal { ItemCount = inv.TotalItems.ToString(), TotalItem = inv.TotalQty.ToString("0.##"), NetAmount = inv.TotalBillAmount.ToString("0.##"), CashAmount = inv.PaymentDetail.CashAmount.ToString("0.##"), }; return(total); }
public static SaleInvoiceView CopyTo(RegularInvoice inv, List <RegularSaleItem> sItems) { List <SaleItemView> saleItems = new List <SaleItemView>(); foreach (var item in sItems) { SaleItemView si = new SaleItemView { BarCode = item.BarCode, BillAmount = item.BillAmount, MRP = item.MRP, Qty = item.Qty, ProductName = item.ProductItem.ProductName, SmCode = item.Salesman.SalesmanName, Units = "Pcs/Mtrs" }; saleItems.Add(si); //TODO: add unit name } SaleInvoiceView vm = new SaleInvoiceView { SaleItems = saleItems, InvoiceNo = inv.InvoiceNo, OnDate = inv.OnDate, NoofItem = inv.TotalItems.ToString(), CustomerName = inv.Customer.FullName, TotalQty = inv.TotalQty.ToString(), TotalAmount = inv.TotalBillAmount.ToString(), Discount = inv.TotalDiscountAmount.ToString() }; if (inv.PaymentDetail.CardAmount > 0) { vm.PaymentMode = "Card"; vm.CardAmount = inv.PaymentDetail.CardAmount.ToString(); vm.AuthCode = inv.PaymentDetail.CardDetail.AuthCode.ToString(); vm.CardNumber = inv.PaymentDetail.CardDetail.LastDigit.ToString(); vm.CardType = "#"; } else { vm.PaymentMode = "Cash"; vm.CashAmount = inv.PaymentDetail.CashAmount.ToString(); } return(vm); }
public async Task <ActionResult <RegularInvoice> > PostRegularInvoice(RegularInvoice regularInvoice) { _context.RegularInvoices.Add(regularInvoice); try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { if (RegularInvoiceExists(regularInvoice.InvoiceNo)) { return(Conflict()); } else { throw; } } return(CreatedAtAction("GetRegularInvoice", new { id = regularInvoice.InvoiceNo }, regularInvoice)); }
public InvoiceSaveReturn OnEdit(eStoreDbContext db, EditOrderDTO sales, 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 = "", Age = 30, FirstName = FName, Gender = Gender.Male, LastName = LName, MobileNo = sales.MobileNo, NoOfBills = 0, TotalAmount = 0, CreatedDate = DateTime.Now.Date }; db.Customers.Add(cust); db.SaveChanges(); } RegularInvoice inv = db.RegularInvoices.Find(sales.InvoiceNo); if (inv == null) { return(null); } inv.SaleItems = db.RegularSaleItems.Where(c => c.InvoiceNo == sales.InvoiceNo).ToList(); inv.PaymentDetail = db.PaymentDetails.Include(c => c.CardAmount).Where(c => c.InvoiceNo == sales.InvoiceNo).FirstOrDefault(); return(null);//TODO: temp }
private void CreateDailySale(AprajitaRetailsContext db, VoyagerContext voyager, RegularInvoice inv) { var dSale = db.DailySales.Where(c => c.InvNo == inv.InvoiceNo).FirstOrDefault(); if (dSale != null) { dSale.IsMatchedWithVOy = true; if (dSale.Amount != inv.TotalBillAmount) { dSale.Remarks += "Amount doesn't match"; dSale.IsMatchedWithVOy = false; db.Entry(dSale).State = EntityState.Modified; } if (dSale.PayMode == PayModes.Cash) { if (inv.PaymentDetail.PayMode != SalePayMode.Cash) { dSale.Remarks += "payment mode doesn't match"; dSale.IsMatchedWithVOy = false; db.Entry(dSale).State = EntityState.Modified; } if (dSale.CashAmount != inv.TotalBillAmount) { dSale.Remarks += "cash amount doesn't match"; dSale.IsMatchedWithVOy = false; db.Entry(dSale).State = EntityState.Modified; } } else if (dSale.PayMode == PayModes.Card) { if (inv.PaymentDetail.PayMode != SalePayMode.Card) { dSale.Remarks += "payment mode doesn't match"; dSale.IsMatchedWithVOy = false; db.Entry(dSale).State = EntityState.Modified; } } if (dSale.SaleDate != inv.OnDate) { dSale.Remarks += "Date doesn't match"; dSale.IsMatchedWithVOy = false; db.Entry(dSale).State = EntityState.Modified; } } else { DailySale dailySale = new DailySale { Amount = inv.TotalBillAmount, InvNo = inv.InvoiceNo, SaleDate = inv.OnDate, IsDue = false, IsManualBill = false, Remarks = "AutoGenerated", CashAmount = 0, IsMatchedWithVOy = true, IsSaleReturn = false, IsTailoringBill = false }; dailySale.SalesmanId = db.Salesmen.Where(c => c.SalesmanName == inv.SaleItems.First().Salesman.SalesmanName).Select(c => c.SalesmanId).FirstOrDefault(); if (dailySale.SalesmanId <= 0) { dailySale.SalesmanId = CreateSalesman(db, inv.SaleItems.First().Salesman.SalesmanName); } // Payment Mode. if (inv.PaymentDetail.PayMode == SalePayMode.Cash) { dailySale.PayMode = PayModes.Cash; dailySale.CashAmount = inv.TotalBillAmount; } else if (inv.PaymentDetail.PayMode == SalePayMode.Card) { dailySale.PayMode = PayModes.Card; } else if (inv.PaymentDetail.PayMode == SalePayMode.Mix) { dailySale.PayMode = PayModes.MixPayments; dailySale.Remarks += " Mix Payments. Update based on real Data"; } else if (inv.PaymentDetail.PayMode == SalePayMode.SR) { // Sale Return flag is marked dailySale.PayMode = PayModes.Cash; dailySale.CashAmount = inv.TotalBillAmount; dailySale.IsSaleReturn = true; } //IsTailoring if (inv.SaleItems.First().ProductItem != null && inv.SaleItems.First().ProductItem.Categorys == ProductCategorys.Tailoring) { dailySale.IsTailoringBill = true; } else if (inv.SaleItems.First().ProductItem == null) { if (voyager.ProductItems.Find(inv.SaleItems.First().ProductItemId).Categorys == ProductCategorys.Tailoring) { dailySale.IsTailoringBill = true; } } db.DailySales.Add(dailySale); } db.SaveChanges(); }
private RegularInvoice CreateSaleInvoice(VoyagerContext db, AprajitaRetailsContext arDB, ImportSaleItemWise item, RegularInvoice invoice) { if (invoice != null) { if (invoice.InvoiceNo == item.InvoiceNo) { //invoice.InvoiceNo = item.InvoiceNo; //invoice.OnDate = item.InvoiceDate; invoice.TotalDiscountAmount += item.Discount; invoice.TotalBillAmount += item.LineTotal; // Check for if it is empty invoice.TotalItems += 1; //TODO: Check for count invoice.TotalQty += item.Quantity; invoice.RoundOffAmount += item.RoundOff; invoice.TotalTaxAmount += (item.SGST + item.CGST); //TODO: Check Future make it tax invoice.StoreId = item.StoreId; if (invoice.PaymentDetail == null) { invoice.PaymentDetail = CreatePaymentDetails(db, item); //Create Payment details } invoice.CustomerId = GetCustomerId(db, item); // CustomerId } else { db.RegularInvoices.Add(invoice); db.SaveChanges(); CreateDailySale(arDB, db, invoice); invoice = new RegularInvoice { InvoiceNo = item.InvoiceNo, OnDate = item.InvoiceDate, TotalDiscountAmount = item.Discount, TotalBillAmount = item.LineTotal, TotalItems = 1,//TODO: Check for count TotalQty = item.Quantity, RoundOffAmount = item.RoundOff, TotalTaxAmount = (item.SGST + item.CGST), //TODO: Check PaymentDetail = CreatePaymentDetails(db, item), CustomerId = GetCustomerId(db, item), StoreId = item.StoreId, SaleItems = new List <RegularSaleItem> () }; } } else { invoice = new RegularInvoice { InvoiceNo = item.InvoiceNo, OnDate = item.InvoiceDate, TotalDiscountAmount = item.Discount, TotalBillAmount = item.LineTotal, TotalItems = 1,//TODO: Check for count TotalQty = item.Quantity, RoundOffAmount = item.RoundOff, TotalTaxAmount = (item.SGST + item.CGST), //TODO: Check PaymentDetail = CreatePaymentDetails(db, item), CustomerId = GetCustomerId(db, item), StoreId = item.StoreId, SaleItems = new List <RegularSaleItem> () }; } return(invoice); }
private RegularInvoice CreateSaleInvoice(VoyagerContext db, ImportSaleItemWise item, RegularInvoice invoice) { if (invoice != null) { if (invoice.InvoiceNo == item.InvoiceNo) { // invoice.InvoiceNo = item.InvoiceNo; //invoice.OnDate = item.InvoiceDate; invoice.TotalDiscountAmount += item.Discount; invoice.TotalBillAmount += item.LineTotal; invoice.TotalItems += 1;//TODO: Check for count invoice.TotalQty += item.Quantity; invoice.RoundOffAmount += item.RoundOff; invoice.TotalTaxAmount += item.SGST; //TODO: Check invoice.StoreId = item.StoreId; invoice.PaymentDetail = CreatePaymentDetails(db, item); invoice.CustomerId = GetCustomerId(db, item); } else { db.RegularInvoices.Add(invoice); db.SaveChanges(); invoice = new RegularInvoice { InvoiceNo = item.InvoiceNo, OnDate = item.InvoiceDate, TotalDiscountAmount = item.Discount, TotalBillAmount = item.LineTotal, TotalItems = 1,//TODO: Check for count TotalQty = item.Quantity, RoundOffAmount = item.RoundOff, TotalTaxAmount = item.SGST, //TODO: Check PaymentDetail = CreatePaymentDetails(db, item), CustomerId = GetCustomerId(db, item), StoreId = item.StoreId, SaleItems = new List <RegularSaleItem> () }; } } else { invoice = new RegularInvoice { InvoiceNo = item.InvoiceNo, OnDate = item.InvoiceDate, TotalDiscountAmount = item.Discount, TotalBillAmount = item.LineTotal, TotalItems = 1,//TODO: Check for count TotalQty = item.Quantity, RoundOffAmount = item.RoundOff, TotalTaxAmount = item.SGST, //TODO: Check PaymentDetail = CreatePaymentDetails(db, item), CustomerId = GetCustomerId(db, item), StoreId = item.StoreId, SaleItems = new List <RegularSaleItem> () }; } return(invoice); }
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); }