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