public int CreateSellInvoice([FromBody] IInvoice sellInvoice) { var newInvoice = new SellInvoice(); var user = this.Request.GetMyUser(); newInvoice.Invoice = new Invoice(); newInvoice.Invoice.UserId = user.Id; newInvoice.CustomerId = sellInvoice.TarafHesabId; var fee = 0; foreach (var item in sellInvoice.Items) { var good = db.Good.First(x => x.Id == item.GoodId); if (item.Quantity > good.Quantity) { throw new Exception("Not enough quantity in the inventory"); } var price = Convert.ToInt32(good.Price * (100 - good.Discount) / 100); fee += price; var invoiceItem = new InvoiceItem { GoodId = item.GoodId, GoodName = good.Name, Discount = good.Discount, GoodPrice = good.Price, Quantity = good.Quantity, }; invoiceItem.TotalPrice = invoiceItem.GetTotalPrice(); newInvoice.Invoice.InvoiceItem.Add(invoiceItem); } // TODO Calculate discount; newInvoice.Invoice.Fee = fee; db.SellInvoice.Add(newInvoice); db.SaveChanges(); IInventory inventory = new InventoryController(); foreach (var item in sellInvoice.Items) { inventory.IncreaseGoodQuantity(item.GoodId, -item.Quantity); } return(newInvoice.InvoiceId); }
public int CreatePurchaseInvoice([FromBody] IInvoice purchaseInvoice) { var newInvoice = new PurchaseInvoice(); var user = this.Request.GetMyUser(); newInvoice.Invoice = new Invoice(); newInvoice.Invoice.UserId = user.Id; newInvoice.SupplierId = purchaseInvoice.TarafHesabId; var fee = 0; foreach (var item in purchaseInvoice.Items) { var good = db.Good.First(x => x.Id == item.GoodId); var price = Convert.ToInt32(good.Price * (100 - good.Discount) / 100); fee += price; var invoiceItem = new InvoiceItem { GoodId = item.GoodId, GoodName = good.Name, Discount = good.Discount, GoodPrice = good.Price, Quantity = good.Quantity, }; invoiceItem.TotalPrice = invoiceItem.GetTotalPrice(); newInvoice.Invoice.InvoiceItem.Add(invoiceItem); } // TODO Calculate discount newInvoice.Invoice.Fee = fee; db.PurchaseInvoice.Add(newInvoice); db.SaveChanges(); IInventory inventory = new InventoryController(); foreach (var item in purchaseInvoice.Items) { inventory.IncreaseGoodQuantity(item.GoodId, item.Quantity); } return(newInvoice.InvoiceId); }