public async Task <ActionResult> Edit([Bind(Include = "Id,Branches_Id,Products_Id,ReceiveDate,BuyQty,AvailableQty,Suppliers_Id,BuyPrice,Notes")] InventoryModels inventoryModels) { if (ModelState.IsValid) { //inventoryModels.ReceiveDate = new DateTime(inventoryModels.ReceiveDate.Year, inventoryModels.ReceiveDate.Month, inventoryModels.ReceiveDate.Day, DateTime.UtcNow.Hour, DateTime.UtcNow.Minute, DateTime.UtcNow.Second); //inventoryModels.AvailableQty = inventoryModels.BuyQty; //db.Entry(inventoryModels).State = EntityState.Modified; #region Substract Qty InventoryModels inventoryModels_before = await db.Inventory.AsNoTracking().Where(x => x.Id == inventoryModels.Id).FirstOrDefaultAsync(); Products_QtyModels pq_substract = await db.Products_Qty.Where(x => x.Branches_Id == inventoryModels_before.Branches_Id && x.Products_Id == inventoryModels_before.Products_Id).FirstOrDefaultAsync(); pq_substract.Qty -= inventoryModels_before.BuyQty; db.Entry(pq_substract).State = EntityState.Modified; #endregion #region Added Qty Products_QtyModels pq_add = await db.Products_Qty.Where(x => x.Branches_Id == inventoryModels.Branches_Id && x.Products_Id == inventoryModels.Products_Id).FirstOrDefaultAsync(); pq_add.Qty += inventoryModels.BuyQty; db.Entry(pq_add).State = EntityState.Modified; #endregion #region Inventory Update var current_data = await db.Inventory.FindAsync(inventoryModels.Id); current_data.ReceiveDate = new DateTime(inventoryModels.ReceiveDate.Year, inventoryModels.ReceiveDate.Month, inventoryModels.ReceiveDate.Day, DateTime.UtcNow.Hour, DateTime.UtcNow.Minute, DateTime.UtcNow.Second); current_data.Products_Id = inventoryModels.Products_Id; current_data.Suppliers_Id = inventoryModels.Suppliers_Id; current_data.BuyQty = inventoryModels.BuyQty; current_data.AvailableQty = (inventoryModels.BuyQty - inventoryModels_before.BuyQty) + inventoryModels.AvailableQty; current_data.BuyPrice = inventoryModels.BuyPrice; current_data.Notes = inventoryModels.Notes; db.Entry(current_data).State = EntityState.Modified; #endregion await db.SaveChangesAsync(); return(RedirectToAction("Index")); } ViewBag.listBranch = new SelectList(db.Branches.Where(x => x.Active == true).OrderBy(x => x.Name).ToList(), "Id", "Name"); ViewBag.listProduct = new SelectList(db.Products.Where(x => x.ForSale == true && x.Active == true).OrderBy(x => x.Description).ToList(), "Id", "Description"); ViewBag.listSupplier = new SelectList(db.Suppliers.Where(x => x.Active == true).OrderBy(x => x.Name).ToList(), "Id", "Name"); return(View(inventoryModels)); }
public async Task <ActionResult> Create([Bind(Include = "Id,Branches_Id,Products_Id,ReceiveDate,BuyQty,AvailableQty,Suppliers_Id,BuyPrice,Notes")] InventoryModels inventoryModels) { if (ModelState.IsValid) { inventoryModels.Id = Guid.NewGuid(); inventoryModels.ReceiveDate = new DateTime(inventoryModels.ReceiveDate.Year, inventoryModels.ReceiveDate.Month, inventoryModels.ReceiveDate.Day, DateTime.UtcNow.Hour, DateTime.UtcNow.Minute, DateTime.UtcNow.Second); inventoryModels.AvailableQty = inventoryModels.BuyQty; db.Inventory.Add(inventoryModels); Products_QtyModels pq = await db.Products_Qty.Where(x => x.Branches_Id == inventoryModels.Branches_Id && x.Products_Id == inventoryModels.Products_Id).FirstOrDefaultAsync(); if (pq == null) { Products_QtyModels products_QtyModels = new Products_QtyModels { Id = Guid.NewGuid(), Branches_Id = inventoryModels.Branches_Id, Products_Id = inventoryModels.Products_Id, Qty = inventoryModels.BuyQty }; db.Products_Qty.Add(products_QtyModels); } else { pq.Qty += inventoryModels.BuyQty; db.Entry(pq).State = EntityState.Modified; } await db.SaveChangesAsync(); return(RedirectToAction("Index")); } ViewBag.listBranch = new SelectList(db.Branches.Where(x => x.Active == true).OrderBy(x => x.Name).ToList(), "Id", "Name"); ViewBag.listProduct = new SelectList(db.Products.Where(x => x.ForSale == true && x.Active == true).OrderBy(x => x.Description).ToList(), "Id", "Description"); ViewBag.listSupplier = new SelectList(db.Suppliers.Where(x => x.Active == true).OrderBy(x => x.Name).ToList(), "Id", "Name"); return(View(inventoryModels)); }
public async Task <ActionResult> Create([Bind(Include = "Branches_Id,LessonPackages_Id,Products_Id,Vouchers_Id,Customers_Id,Notes")] SaleInvoicesViewModels saleInvoicesViewModels, int Amount, string Items) { if (saleInvoicesViewModels.Customers_Id == Guid.Empty) { ModelState.AddModelError("Customers_Id", "The field Customer is required."); } if (Items == "[]" || Amount == 0) { ModelState.AddModelError("Items", "The field Items is required."); } var user_login = await db.User.Where(x => x.UserName == User.Identity.Name).FirstOrDefaultAsync(); if (ModelState.IsValid) { string lastHex_string = db.SaleInvoices.AsNoTracking().Max(x => x.No); int lastHex_int = int.Parse( string.IsNullOrEmpty(lastHex_string) ? 0.ToString("X5") : lastHex_string, System.Globalization.NumberStyles.HexNumber); //var login_session = Session["Login"] as LoginViewModel; SaleInvoicesModels saleInvoicesModels = new SaleInvoicesModels { Id = Guid.NewGuid(), Branches_Id = user_login.Branches_Id, //login_session.Branches_Id; No = (lastHex_int + 1).ToString("X5"), Timestamp = DateTime.UtcNow, Customer_UserAccounts_Id = saleInvoicesViewModels.Customers_Id.ToString(), Notes = saleInvoicesViewModels.Notes, Amount = Amount, Due = Amount, Cancelled = false, IsChecked = false }; db.SaleInvoices.Add(saleInvoicesModels); byte row = 1; List <SaleInvoiceItemDetails> details = JsonConvert.DeserializeObject <List <SaleInvoiceItemDetails> >(Items); foreach (var item in details) { Guid?saleinvoiceitems_vouchers = null; if (!string.IsNullOrEmpty(item.voucher_id)) { SaleInvoiceItems_VouchersModels saleInvoiceItems_VouchersModels = new SaleInvoiceItems_VouchersModels { Id = Guid.NewGuid(), Voucher_Ids = item.voucher_id, Amount = item.voucher }; db.SaleInvoiceItems_Vouchers.Add(saleInvoiceItems_VouchersModels); saleinvoiceitems_vouchers = saleInvoiceItems_VouchersModels.Id; } SaleInvoiceItemsModels sii = new SaleInvoiceItemsModels { Id = Guid.NewGuid(), RowNo = row, SaleInvoices_Id = saleInvoicesModels.Id, Description = item.desc, Qty = item.qty, Price = item.price, DiscountAmount = item.disc, SaleInvoiceItems_Vouchers_Id = saleinvoiceitems_vouchers, //item.voucher_id, Notes = item.note, Products_Id = item.inventory_id, Services_Id = item.service_id, LessonPackages_Id = item.lesson_id, SessionHours = item.qty * item.hours, //item.lesson_id.HasValue ? db.LessonPackages.Where(x => x.Id == item.lesson_id).FirstOrDefault().SessionHours : 0, SessionHours_Remaining = item.qty * item.hours, //item.lesson_id.HasValue ? db.LessonPackages.Where(x => x.Id == item.lesson_id).FirstOrDefault().SessionHours : 0, TravelCost = item.travel, TutorTravelCost = item.tutor }; db.SaleInvoiceItems.Add(sii); if (item.inventory_id.HasValue) { SyncSaleInvoice_Inventory(user_login.Branches_Id, item.inventory_id.Value, item.qty, sii.Id); Products_QtyModels products_QtyModels = await db.Products_Qty.Where(x => x.Branches_Id == user_login.Branches_Id && x.Products_Id == item.inventory_id.Value).FirstOrDefaultAsync(); products_QtyModels.Qty -= item.qty; db.Entry(products_QtyModels).State = EntityState.Modified; } row++; } await db.SaveChangesAsync(); return(RedirectToAction("Index")); } Permission p = new Permission(); #region List Voucher var vouchers = db.Vouchers.Where(x => x.Active == true).OrderBy(x => x.Code).ToList(); List <object> voucher_list = new List <object>(); foreach (var item in vouchers) { voucher_list.Add(new { item.Id, Name = (string.IsNullOrEmpty(item.Notes)) ? "[" + item.Code + ": " + string.Format("{0:N2}", item.Amount) + "] " + item.Description : "[" + item.Code + ": " + string.Format("{0:N2}", item.Amount) + "] " + item.Description + " (" + item.Notes + ")" }); } #endregion #region List Customer var customers = (from u in db.User where u.Active == true //join ur in db.UserRole on u.Id equals ur.UserId //join r in db.Role on ur.RoleId equals r.Id //where r.Name == "Student" orderby u.Firstname select new { u }).ToList(); List <object> customer_list = new List <object>(); foreach (var item in customers) { customer_list.Add(new { Id = item.u.Id, Name = item.u.Firstname + " " + item.u.Middlename + " " + item.u.Lastname }); } #endregion #region List Lesson var lessons = (from lp in db.LessonPackages join l in db.Languages on lp.Languages_Id equals l.Id join lt in db.LessonTypes on lp.LessonTypes_Id equals lt.Id where lp.Active == true orderby lp.Name select new LessonPackagesViewModels { Id = lp.Id, Name = lp.Name, Languages = l.Name, LessonTypes = lt.Name, SessionHours = lp.SessionHours, ExpirationDay = lp.ExpirationDay, Price = lp.Price, Active = lp.Active }).ToList(); List <object> lesson_list = new List <object>(); foreach (var item in lessons) { lesson_list.Add(new { item.Id, Name = "[" + item.LessonTypes + ", " + item.Languages + "] " + item.Name + " (" + item.SessionHours + " hrs, " + string.Format("{0:N0}", item.Price) + ")" }); } #endregion #region List Product var list_product = (from pr in db.Products join pq in db.Products_Qty on pr.Id equals pq.Products_Id where pq.Branches_Id == user_login.Branches_Id orderby pr.Description select new { pr, pq }).ToList(); List <object> products = new List <object>(); foreach (var product in list_product) { products.Add(new { product.pr.Id, Name = product.pr.Description }); } #endregion #region List Role string role_id_allowed = db.Settings.Find(SettingsValue.GUID_UserSetRoleAllowed).Value_Guid.Value.ToString(); List <SelectListItem> role_list = new List <SelectListItem>(); bool setRole = p.IsGranted(User.Identity.Name, "user_setroles"); if (setRole) { foreach (var role in db.Role.OrderBy(x => x.Name)) { role_list.Add(new SelectListItem() { Value = role.Name, Text = role.Name }); } } else { foreach (var role in db.Role.Where(x => x.Id == role_id_allowed).OrderBy(x => x.Name)) { role_list.Add(new SelectListItem() { Value = role.Name, Text = role.Name }); } } #endregion ViewBag.listBranch = new SelectList(db.Branches.Where(x => x.Active == true).OrderBy(x => x.Name).ToList(), "Id", "Name"); ViewBag.listVoucher = new SelectList(voucher_list, "Id", "Name"); ViewBag.listCustomer = new SelectList(customer_list, "Id", "Name"); ViewBag.listLesson = new SelectList(lesson_list, "Id", "Name"); ViewBag.listProduct = new SelectList(products, "Id", "Name"); ViewBag.listService = new SelectList(db.Services.Where(x => x.Active == true).OrderBy(x => x.Description).ToList(), "Id", "Description"); ViewBag.listRole = role_list; ViewBag.RoleValueDefault = db.Role.Find(role_id_allowed).Name; ViewBag.listLanguage = new SelectList(db.Languages.Where(x => x.Active == true).OrderBy(x => x.Name).ToList(), "Id", "Name"); ViewBag.listPromo = new SelectList(db.PromotionEvents.OrderBy(x => x.Name).ToList(), "Id", "Name"); ViewBag.DOB = DateTime.UtcNow.Date; return(View(saleInvoicesViewModels)); }