예제 #1
0
        public ActionResult Check(ProductFilter filter)
        {
            var data = ProductInfo.Check(UserID, Employee.ID, Employee.BussinessID, filter, null);

            data.Warehouses = WarehouseInfo.FindAuthorized(UserID, Employee.ID, Employee.BussinessID, UserID, DbAction.Product.View);
            if (Request.IsAjaxRequest())
            {
                return(Json(new
                {
                    html = RenderPartialViewToString(Views.CheckPartial, data)
                }, JsonRequestBehavior.AllowGet));
            }
            return(View(Views.Check, data));
        }
예제 #2
0
        public ActionResult List(WarehouseFilter filter)
        {
            var data = WarehouseInfo.Find(UserID, Employee.ID, Employee.BussinessID, "", filter, true);

            if (Request.IsAjaxRequest())
            {
                return(Json(new
                {
                    result = true,
                    html = RenderPartialViewToString(Views.ListPartial, data)
                }, JsonRequestBehavior.AllowGet));
            }
            return(View(Views.List, data));
        }
예제 #3
0
        public ActionResult Find()
        {
            var data = new FindList();

            data.Warehouses = WarehouseInfo.FindAuthorized(UserID, Employee.ID, Employee.BussinessID, UserID, DbAction.Product.View);
            if (Request.IsAjaxRequest())
            {
                return(Json(new
                {
                    html = RenderPartialViewToString(Views.FindPartial, data)
                }, JsonRequestBehavior.AllowGet));
            }
            return(View(Views.Find, data));
        }
예제 #4
0
        public ActionResult Remove(int id)
        {
            WarehouseInfo.Remove(UserID, Employee.ID, id);
            var model = WarehouseInfo.Find(UserID, Employee.ID, Employee.BussinessID, "Xóa thông tin thành công");

            if (Request.IsAjaxRequest())
            {
                return(Json(new
                {
                    html = RenderPartialViewToString(Views.ListPartial, model)
                }, JsonRequestBehavior.AllowGet));
            }
            return(View(Views.List, model));
        }
예제 #5
0
        public ActionResult CreateFromExport(int id)
        {
            var record = Export.GetExport(UserID, Employee.ID, id);
            var model  = new Import(Employee.Name,
                                    WarehouseInfo.FindAuthorized(UserID, Employee.ID, Employee.BussinessID, UserID, DbAction.Import.View), selected: record.Products.Select(i => new ImexItem(i, record.WarehouseID, record.WarehouseName)).ToArray());

            if (Request.IsAjaxRequest())
            {
                return(Json(new
                {
                    html = RenderPartialViewToString(Views.ImportPartial, model)
                }, JsonRequestBehavior.AllowGet));
            }
            return(View(Views.Import, model));
        }
예제 #6
0
        public ActionResult Create()
        {
            var login = Login.Get(UserID);
            var model = new Export(Employee.Name,
                                   WarehouseInfo.FindAuthorized(UserID, Employee.ID, Employee.BussinessID, UserID, DbAction.Export.View));

            model.Editable = login.Username == "admin";
            if (Request.IsAjaxRequest())
            {
                return(Json(new
                {
                    html = RenderPartialViewToString(Views.ExportPartial, model)
                }, JsonRequestBehavior.AllowGet));
            }
            return(View(Views.Export, model));
        }
예제 #7
0
        public ActionResult Update(int id)
        {
            var login = Login.Get(UserID);
            var model = new Export(
                WarehouseInfo.FindAuthorized(UserID, Employee.ID, Employee.BussinessID, UserID, DbAction.Order.View),
                new OrderRecord(Export.GetOrder(UserID, Employee.ID, id)),
                login.Username == "admin");

            if (Request.IsAjaxRequest())
            {
                return(Json(new
                {
                    html = RenderPartialViewToString(Views.ExportPartial, model)
                }, JsonRequestBehavior.AllowGet));
            }
            return(View(Views.Export, model));
        }
예제 #8
0
        public ActionResult FindFinish(int warehouseID, int?tagID, FindItem[] items)
        {
            var filter = new ProductFilter()
            {
                WarehouseID = warehouseID,
                TagID       = tagID
            };
            var products = ProductInfo.FindAll(UserID, Employee.ID, Employee.BussinessID, "", filter, true, null);
            var model    = new FindList(filter);

            model.Warehouses = WarehouseInfo.FindAuthorized(UserID, Employee.ID, Employee.BussinessID, UserID, DbAction.Product.View);
            var warehouse = model.Warehouses.FirstOrDefault(i => i.ID == warehouseID);

            if (products.Data.Count > 0 && warehouse != null)
            {
                if (items != null)
                {
                    foreach (var item in items)
                    {
                        var product = products.Data.FirstOrDefault(i => i.Code == item.Code);
                        if (product == null)
                        {
                            product = ProductInfo.FindList(UserID, Employee.BussinessID, Employee.BussinessID, new ProductFilter()
                            {
                                Code = item.Code
                            }, false, 100, DbAction.Product.View).FirstOrDefault();
                            model.Data.Add(new FindItem(item.Code, warehouse.Name, item.Quantity, product));
                        }
                        else
                        {
                            model.Data.Add(new FindItem(product, item.Quantity));
                        }
                    }
                }
                model.Data.AddRange(products.Data.Where(i => model.Data.FirstOrDefault(d => d.Code == i.Code) == null).Select(i => new FindItem(i)));
            }
            if (Request.IsAjaxRequest())
            {
                return(Json(new
                {
                    html = RenderPartialViewToString(Views.FindPartial, model)
                }, JsonRequestBehavior.AllowGet));
            }
            return(View(Views.Find, model));
        }
예제 #9
0
        public ActionResult Update(int id)
        {
            var record = Export.GetExport(UserID, Employee.ID, id);
            var login  = Login.Get(UserID);
            var model  = new Export(record.EmployeeName,
                                    WarehouseInfo.FindAuthorized(UserID, Employee.ID, Employee.BussinessID, UserID, DbAction.Export.View),
                                    record.ToWarehouseID, record.Status, record.WarehouseID, record.Products.Select(p => new ImexItem(p)).ToArray(), record.Note, "", record.Result);

            model.ID       = record.ID;
            model.Code     = record.Code;
            model.Editable = login.Username == "admin";
            if (Request.IsAjaxRequest())
            {
                return(Json(new
                {
                    html = RenderPartialViewToString(Views.ExportPartial, model)
                }, JsonRequestBehavior.AllowGet));
            }
            return(View(Views.Export, model));
        }
예제 #10
0
        private void UpdateTemplate(string fileName)
        {
            var warehouses = WarehouseInfo.FindAuthorized(UserID, Employee.ID, Employee.BussinessID, UserID, DbAction.Import.View);

            if (warehouses.Count > 0)
            {
                HSSFWorkbook hssfwb;
                using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read))
                {
                    hssfwb = new HSSFWorkbook(file);
                }

                var sheet    = hssfwb.GetSheetAt(0);
                var rowCount = sheet.LastRowNum;
                for (var i = 1; i <= rowCount; i++)
                {
                    var row = sheet.GetRow(i);
                    if (row.Cells.FirstOrDefault(c => c.ColumnIndex == 10) != null)
                    {
                        row.Cells.FirstOrDefault(c => c.ColumnIndex == 10).SetCellValue("");
                    }
                }
                for (var i = 0; i < warehouses.Count; i++)
                {
                    if (i + 1 > rowCount)
                    {
                        sheet.CreateRow(i + 1);
                    }
                    var row = sheet.GetRow(i + 1);
                    if (row.Cells.FirstOrDefault(c => c.ColumnIndex == 10) == null)
                    {
                        row.CreateCell(10);
                    }
                    row.Cells.FirstOrDefault(c => c.ColumnIndex == 10).SetCellValue(warehouses[i].Name);
                }
                using (var fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    hssfwb.Write(fs);
                }
            }
        }
예제 #11
0
        public ActionResult Update(int id)
        {
            var record = Import.Get(UserID, Employee.ID, id);
            var model  = new Import(record.EmployeeName,
                                    WarehouseInfo.FindAuthorized(UserID, Employee.ID, Employee.BussinessID, UserID, DbAction.Import.View),
                                    record.WarehouseID, record.Products.ToArray(), record.Note)
            {
                Receipt = record.Receipt
            };

            model.ID   = record.ID;
            model.Code = record.Code;
            if (Request.IsAjaxRequest())
            {
                return(Json(new
                {
                    html = RenderPartialViewToString(Views.ImportPartial, model)
                }, JsonRequestBehavior.AllowGet));
            }
            return(View(Views.Import, model));
        }
예제 #12
0
        public static List <ImexItem> Read(int userID, int employeeID, FileInfo fileInfo, int bussinessID)
        {
            var          result = new List <ImexItem>();
            HSSFWorkbook hssfwb;

            using (FileStream file = new FileStream(fileInfo.FullName, FileMode.Open, FileAccess.Read))
            {
                hssfwb = new HSSFWorkbook(file);
            }

            var sheet = hssfwb.GetSheetAt(0);

            if (sheet.LastRowNum > 0)
            {
                var whs = new List <string>();
                for (var i = 1; i <= sheet.LastRowNum; i++)
                {
                    var row = sheet.GetRow(i);
                    try
                    {
                        var wh = row.GetCellValue <string>(2);
                        if (!String.IsNullOrEmpty(wh) && !whs.Contains(wh))
                        {
                            whs.Add(wh);
                        }
                        var item = new ImexItem();
                        item.Code = row.GetCellValue <string>(0);
                        //item.WarehouseID = warehouseID;
                        item.WarehouseName = wh;
                        item.Price         = row.GetCellValue <decimal>(3);
                        item.Quantity      = row.GetCellValue <int>(4);
                        result.Add(item);
                    }
                    catch { }
                }
                var warehouses = WarehouseInfo.Find(userID, employeeID, whs);
                foreach (var item in result)
                {
                    if (warehouses.FirstOrDefault(i => i.Name == item.WarehouseName) != null)
                    {
                        item.WarehouseID = warehouses.FirstOrDefault(i => i.Name == item.WarehouseName).ID;
                    }
                }
                if (result.Count > 0)
                {
                    var dbItems = ImexItem.Get(userID, employeeID, result);
                    foreach (var dbItem in dbItems)
                    {
                        foreach (var item in result.Where(i => i.Code == dbItem.Code))
                        {
                            item.ID    = dbItem.ID;
                            item.Code  = dbItem.Code;
                            item.Name  = dbItem.Name;
                            item.Price = dbItem.Price;
                            //item.Quantity = 1;
                        }
                    }
                }
                result = result.Where(i => i.ID > 0 && i.WarehouseID > 0).ToList();
            }
            return(result);
        }
예제 #13
0
        public ActionResult Submit(int id, ImexItem[] items, string note, string receipt)
        {
            var action      = id > 0 ? DbAction.Import.Modify : DbAction.Import.Create;
            var message     = "";
            int?recordID    = null;
            int warehouseID = 0;

            if (id > 0 && !EmployeeInfo.IsAdmin(UserID, Employee.ID, Employee.ID, action))
            {
                message = "Bạn không có quyền sử dụng chức năng này";
            }
            else
            {
                message = "Lưu thông tin không thành công";
                if (items != null && items.Length > 0)
                {
                    var warehouses = items.GroupBy(i => i.WarehouseID);
                    foreach (var warehouse in warehouses)
                    {
                        recordID    = SKtimeManagement.Import.Submit(id, UserID, Employee.ID, Employee.BussinessID, warehouse.Key, warehouse.ToArray(), note, receipt);
                        warehouseID = warehouse.Key;
                    }
                    if (recordID.HasValue)
                    {
                        message = "Lưu thông tin thành công";
                    }
                }
                else
                {
                    message = "Không có sản phẩm được chọn";
                }
            }
            if (!recordID.HasValue)
            {
                var model = new Import(Employee.Name,
                                       WarehouseInfo.FindAuthorized(UserID, Employee.ID, Employee.BussinessID, UserID, DbAction.Import.View),
                                       warehouseID, items, note, message)
                {
                    Receipt = receipt
                };
                model.ID = id;
                if (Request.IsAjaxRequest())
                {
                    return(Json(new
                    {
                        html = RenderPartialViewToString(Views.ImportPartial, model)
                    }, JsonRequestBehavior.DenyGet));
                }
                return(View(Views.Import, model));
            }
            else
            {
                if (Request.IsAjaxRequest())
                {
                    return(Json(new
                    {
                        result = true,
                        redirect = Url.Action("Detail", "Import", new { id = recordID.Value })
                    }, JsonRequestBehavior.DenyGet));
                }
                return(RedirectToAction(Views.Detail, new { id = recordID.Value }));
            }
        }
예제 #14
0
        public ActionResult Submit(OrderRecord record, FormCollection collection)
        {
            record.EmployeeName = Employee.Name;
            var action      = record.ID > 0 ? DbAction.Order.Modify : DbAction.Order.Create;
            var unavailable = ImexItem.Unavailable(UserID, Employee.ID, record.WarehouseID, action, record.Items, record.ID);
            var orderID     = 0;
            var message     = "";
            var result      = false;
            var login       = Login.Get(UserID);

            //if (record.ID > 0 && login.Username != "admin" && login.Type != LoginType.Office)
            //    message = "Bạn không có quyền cập nhật hóa đơn";
            if (unavailable.Count > 0)
            {
                message = String.Format("Số lượng vượt mức tồn kho:<br/>{0}", String.Join("<br/>", unavailable.Select(i => i.Name)));
            }
            else if (record.ClientID == 0 && (String.IsNullOrEmpty(record.ClientName) || String.IsNullOrEmpty(record.ClientPhone)))
            {
                message = "Thiếu thông tin khách hàng (tên, số điện thoại)";
            }
            else if (record.Items.Sum(i => i.Quantity * i.Price) - record.Discount - record.Paid != 0)
            {
                message = "Tổng tiền khuyến mãi và đã trả không bằng tổng tiền hóa đơn";
            }
            else
            {
                message = "Lưu thông tin không thành công";
                if (record.Items != null && record.Items.Length > 0)
                {
                    if (login.Username != "admin" && record.ID == 0)
                    {
                        record.SubmitDate = DateTime.Now;
                    }
                    if (login.Username != "admin")
                    {
                        record.NewEmployeeID = null;
                    }
                    if ((orderID = SKtimeManagement.Export.SaveOrder(UserID, Employee.ID, Employee.BussinessID, record)) > 0)
                    {
                        message = "Lưu thông tin thành công";
                        result  = true;
                    }
                }
                else
                {
                    message = "Không có sản phẩm được chọn";
                }
            }
            if (result)
            {
                // trigger creating income when do exchange product on order
                if (collection["Action"] == "Exchange")
                {
                    using (var data = new DataClassesDataContext())
                    {
                        data.TriggerInsertIncome(record.ID, Employee.ID, Employee.BussinessID, record.WarehouseID, record.Code, BaseModel.NewUniqueCode(UserID, Employee.ID, Employee.BussinessID, "Income"), DateTime.Now, Convert.ToDecimal(collection["TotalTransactionPaid"]));
                    }
                }

                var model = new ExportList();
                model.List    = Export.OrderHistory(UserID, Employee.ID, Employee.BussinessID);
                model.Current = Export.GetOrder(UserID, Employee.ID, orderID);
                foreach (var product in model.Current.Products)
                {
                    product.ProductUrl = RenderPartialViewToString("ProductUrl", product);
                }
                foreach (var product in model.Current.ReturnProducts)
                {
                    product.ProductUrl = RenderPartialViewToString("ProductUrl", product);
                }
                if (Request.IsAjaxRequest())
                {
                    return(Json(new
                    {
                        html = RenderPartialViewToString(Views.HistoryPartial, model)
                    }, JsonRequestBehavior.DenyGet));
                }
                return(RedirectToAction(Views.History));
            }
            else
            {
                var data  = ImexItem.Find(UserID, Employee.ID, action, Employee.BussinessID);
                var model = new Export(
                    WarehouseInfo.FindAuthorized(UserID, Employee.ID, Employee.BussinessID, UserID, DbAction.Order.View),
                    record, login.Username == "admin", message, result);
                if (record.Return)
                {
                    var returnRecord = new OrderRecord(Export.GetOrder(UserID, Employee.ID, record.ID), true);
                    var items        = model.Selected.ToList();
                    items.AddRange(returnRecord.Items);
                    model.Selected = items.ToArray();
                }
                if (Request.IsAjaxRequest())
                {
                    return(Json(new
                    {
                        html = RenderPartialViewToString(Views.ExportPartial, model)
                    }, JsonRequestBehavior.DenyGet));
                }
                return(RedirectToAction(Views.Export));
            }
        }
예제 #15
0
        public ActionResult Submit(int id, int warehouseID, int?toWarehouseID, ImexItem[] items, string note, string status)
        {
            var action      = id > 0 ? DbAction.Export.Modify : DbAction.Export.Create;
            var unavailable = ImexItem.Unavailable(UserID, Employee.ID, warehouseID, action, items, 0, id);
            var exportID    = 0;
            var message     = "";
            var result      = false;
            var login       = Login.Get(UserID);

            if (id > 0 && login.Username != "admin" && login.Type != LoginType.Office)
            {
                message = "Bạn không có quyền cập nhật phiếu xuất";
            }
            else if (unavailable.Count > 0)
            {
                message = String.Format("Số lượng vượt mức tồn kho:<br/>{0}", String.Join("<br/>", unavailable.Select(i => i.Name)));
            }
            else if (toWarehouseID.HasValue && toWarehouseID.Value == warehouseID)
            {
                message = "Kho nhận trùng kho xuất";
            }
            else
            {
                message = "Lưu thông tin không thành công";
                if (items != null && items.Length > 0)
                {
                    if ((exportID = SKtimeManagement.Export.Submit(id, UserID, Employee.ID, Employee.BussinessID, warehouseID, toWarehouseID, status, items, note)) > 0)
                    {
                        message = "Lưu thông tin thành công";
                        result  = true;
                    }
                }
                else
                {
                    message = "Không có sản phẩm được chọn";
                }
            }
            if (result)
            {
                var model = new ExportList();
                model.List    = Export.History(UserID, Employee.ID, Employee.BussinessID);
                model.Current = Export.GetExport(UserID, Employee.ID, exportID);
                foreach (var product in model.Current.Products)
                {
                    product.ProductUrl = RenderPartialViewToString("ProductUrl", product);
                }
                if (Request.IsAjaxRequest())
                {
                    return(Json(new
                    {
                        html = RenderPartialViewToString(Views.HistoryPartial, model)
                    }, JsonRequestBehavior.DenyGet));
                }
                return(RedirectToAction(Views.History));
            }
            else
            {
                var model = new Export(Employee.Name,
                                       WarehouseInfo.FindAuthorized(UserID, Employee.ID, Employee.BussinessID, UserID, DbAction.Export.View),
                                       toWarehouseID, status, warehouseID, items, note, message, result);
                model.ID       = id;
                model.Editable = login.Username == "admin";
                if (Request.IsAjaxRequest())
                {
                    return(Json(new
                    {
                        html = RenderPartialViewToString(Views.ExportPartial, model)
                    }, JsonRequestBehavior.DenyGet));
                }
                return(RedirectToAction(Views.Export));
            }
        }
예제 #16
0
        private void SaveProductWarehouse(HSSFWorkbook workbook, IEnumerable <ProductSaleReport> products, WarehouseInfo warehouse = null)
        {
            var name      = warehouse != null ? warehouse.Name : "Toàn bộ";
            var worksheet = workbook.CreateSheet(name);

            ExcelWorker.CellStyles = new List <ICellStyle>();
            ExcelWorker.CreateRow(worksheet, 0, new ExcelCell[] {
                ExcelWorker.CreateCell(workbook, "Kho"),
                ExcelWorker.CreateCell(workbook, name)
            });
            ExcelWorker.CreateRow(worksheet, 0, new ExcelCell[] {
                ExcelWorker.CreateCell(workbook, "Mã", HSSFColor.RoyalBlue.Index, HSSFColor.White.Index),
                ExcelWorker.CreateCell(workbook, "Tên", HSSFColor.RoyalBlue.Index, HSSFColor.White.Index),
                ExcelWorker.CreateCell(workbook, "Tỷ lệ (số lượng)", HSSFColor.RoyalBlue.Index, HSSFColor.White.Index),
                ExcelWorker.CreateCell(workbook, "Tỷ lệ (tổng tiền)", HSSFColor.RoyalBlue.Index, HSSFColor.White.Index),
                ExcelWorker.CreateCell(workbook, "Số lượng bán", HSSFColor.RoyalBlue.Index, HSSFColor.White.Index),
                ExcelWorker.CreateCell(workbook, "Tổng tiền bán", HSSFColor.RoyalBlue.Index, HSSFColor.White.Index),
                ExcelWorker.CreateCell(workbook, "Số lượng nhập", HSSFColor.RoyalBlue.Index, HSSFColor.White.Index),
                ExcelWorker.CreateCell(workbook, "Tổng tiền nhập", HSSFColor.RoyalBlue.Index, HSSFColor.White.Index)
            });
            var index = 1;

            foreach (var product in products)
            {
                ExcelWorker.CreateRow(worksheet, index, new ExcelCell[] {
                    ExcelWorker.CreateCell(workbook, product.Code),
                    ExcelWorker.CreateCell(workbook, product.Name),
                    ExcelWorker.CreateCell(workbook, Math.Round(product.QuantityPercentage, 2).ToString()),
                    ExcelWorker.CreateCell(workbook, Math.Round(product.RevenuePercentage, 2).ToString()),
                    ExcelWorker.CreateCell(workbook, product.OrderQuantityString),
                    ExcelWorker.CreateCell(workbook, product.OrderTotalString),
                    ExcelWorker.CreateCell(workbook, product.ImportQuantityString),
                    ExcelWorker.CreateCell(workbook, product.ImportTotalString)
                });
                index++;
            }
            ExcelWorker.CreateRow(worksheet, index, new ExcelCell[] {
                ExcelWorker.CreateCell(workbook, ""),
                ExcelWorker.CreateCell(workbook, ""),
                ExcelWorker.CreateCell(workbook, ""),
                ExcelWorker.CreateCell(workbook, "Tổng cộng"),
                ExcelWorker.CreateCell(workbook, products.Sum(i => i.OrderQuantity).GetCurrencyString()),
                ExcelWorker.CreateCell(workbook, products.Sum(i => i.OrderTotal).GetCurrencyString()),
                ExcelWorker.CreateCell(workbook, products.Sum(i => i.ImportQuantity).GetCurrencyString()),
                ExcelWorker.CreateCell(workbook, products.Sum(i => i.ImportTotal).GetCurrencyString())
            });
        }