示例#1
0
        public ActionResult Details(int id)
        {
            try
            {
                // get so info (header & lines)
                var soHeader = (from t1 in db.Orders
                                join t2 in db.OrderTypes on t1.OrderType equals t2.OrderTypeId into j1
                                from t3 in j1.DefaultIfEmpty()
                                join t4 in db.PaymentTypes on t1.PaymentTypeId equals t4.PaymentTypeId into j2
                                from t5 in j2.DefaultIfEmpty()
                                join t6 in db.Employees on t1.EmployeeId equals t6.EmployeeId into j3
                                from t7 in j3.DefaultIfEmpty()
                                where t1.OrderId == id
                                select new
                {
                    OrderId = t1.OrderId,
                    OrderDate = t1.OrderDate,
                    OrderNo = t1.OrderNo,
                    OrderType = t1.OrderType,
                    OrderTypeName = t3.OrderTypeName,
                    CustomerName = t1.CustomerName,
                    CustomerAddress = t1.CustomerAddress,
                    TaxCode = t1.TaxCode,
                    Phone = t1.Phone,
                    Email = t1.Email,
                    DeliveryName = t1.DeliveryName,
                    ShipName = t1.ShipName,
                    ShipAddress = t1.ShipAddress,
                    ShippedDate = t1.ShippedDate,
                    ShippingCost = t1.ShippingCost,
                    Owner = t1.Owner,
                    CreationDate = t1.CreationDate,
                    EmployeeId = t1.EmployeeId,
                    FullName = t7.FullName,
                    PaymentTypeId = t1.PaymentTypeId,
                    PaymentTypeName = t5.PaymentTypeName,
                    Notes = t1.Notes
                }).FirstOrDefault();

                if (soHeader != null)
                {
                    SODetailsViewModel model = new SODetailsViewModel();
                    // create header view model
                    model.CustomerAddress = soHeader.CustomerAddress;
                    model.CustomerName    = soHeader.CustomerName;
                    model.Email           = soHeader.Email;
                    model.OrderDate       = soHeader.OrderDate.ToString("dd/MM/yyyy");
                    model.OrderID         = soHeader.OrderId;
                    model.OrderNo         = soHeader.OrderNo;
                    model.OrderTypeId     = soHeader.OrderType;
                    model.OrderTypeName   = soHeader.OrderTypeName;
                    model.Phone           = soHeader.Phone;
                    model.ShipAddress     = soHeader.ShipAddress;
                    model.ShipName        = soHeader.ShipName;
                    model.ShippedDate     = soHeader.ShippedDate.ToString("dd/MM/yyyy");
                    model.ShippingCost    = soHeader.ShippingCost.ToString("#,##0");
                    model.TaxCode         = soHeader.TaxCode;
                    model.PaymentTypeId   = soHeader.PaymentTypeId;
                    model.PaymentTypeName = soHeader.PaymentTypeName;
                    model.EmployeeId      = soHeader.EmployeeId;
                    model.FullName        = soHeader.FullName;
                    model.DeliveryName    = soHeader.DeliveryName;
                    model.Notes           = soHeader.Notes;

                    // create lines view model
                    var soLines = (from t1 in db.OrderDetails
                                   join t2 in db.Stocks on t1.StockId equals t2.StockId into j1
                                   from t3 in j1.DefaultIfEmpty()
                                   where t1.OrderId == id
                                   select new
                    {
                        Id = t1.Id,
                        OrderId = t1.OrderId,
                        ProductId = t1.ProductId,
                        ProductName = t1.ProductName,
                        StockId = t1.StockId,
                        StockName = t3.StockName,
                        UnitPrice = t1.UnitPrice,
                        UnitPriceBT = t1.UnitPriceBT,
                        Quantity = t1.Quantity,
                        Discount = t1.Discount
                    }).ToList();

                    foreach (var item in soLines)
                    {
                        AddSOLineViewModel line = new AddSOLineViewModel();
                        line.ProductId   = item.ProductId;
                        line.ProductName = item.ProductName;
                        line.StockId     = item.StockId;
                        line.StockName   = item.StockName;
                        line.Quantity    = item.Quantity.ToString("#,##0");
                        line.UnitPrice   = item.UnitPrice.ToString("#,##0");
                        line.UnitPriceBT = item.UnitPriceBT.ToString("#,##0");
                        model.OrderDetails.Add(line);
                    }

                    return(View(model));
                }
                else
                {
                    return(RedirectToAction("ErrorMessage", "Admin",
                                            new RouteValueDictionary(
                                                new { message = string.Format("Đơn hàng #{0} không tồn tại trong hệ thống!", id) })));
                }
            }
            catch (Exception ex)
            {
                return(RedirectToAction("ErrorMessage", "Admin",
                                        new RouteValueDictionary(
                                            new { message = ex.Message })));
            }
        }
示例#2
0
        public ActionResult Edit(int id)
        {
            var model = new AddSOViewModel();

            try
            {
                // get header
                var header = db.Orders.Where(r => r.OrderId == id).FirstOrDefault();
                if (header != null)
                {
                    model.OrderID         = header.OrderId;
                    model.OrderDate       = header.OrderDate.ToString("dd/MM/yyyy");
                    model.OrderNo         = header.OrderNo;
                    model.OrderType       = header.OrderType;
                    model.CustomerName    = header.CustomerName;
                    model.CustomerAddress = header.CustomerAddress;
                    model.TaxCode         = header.TaxCode;
                    model.Phone           = header.Phone;
                    model.Email           = header.Email;
                    model.ShipName        = header.ShipName;
                    model.ShipAddress     = header.ShipAddress;
                    model.ShippedDate     = header.ShippedDate.ToString("dd/MM/yyyy");
                    model.EmployeeId      = header.EmployeeId;
                    model.PaymentTypeId   = header.PaymentTypeId;
                    model.DeliveryName    = header.DeliveryName;
                    model.Notes           = header.Notes;
                    model.ShippingCost    = header.ShippingCost.ToString("#,##0");

                    // get lines
                    var lines = (from t1 in db.OrderDetails
                                 join t2 in db.Stocks on t1.StockId equals t2.StockId into j1
                                 from t3 in j1.DefaultIfEmpty()
                                 where t1.OrderId == id
                                 select new
                    {
                        Id = t1.OrderId,
                        OrderId = t1.OrderId,
                        ProductId = t1.ProductId,
                        ProductName = t1.ProductName,
                        StockId = t1.StockId,
                        StockName = t3.StockName,
                        UnitPrice = t1.UnitPrice,
                        UnitPriceBT = t1.UnitPriceBT,
                        Quantity = t1.Quantity,
                        Discount = t1.Discount
                    }).ToList();
                    foreach (var item in lines)
                    {
                        var line = new AddSOLineViewModel();
                        line.ProductId   = item.ProductId;
                        line.ProductName = item.ProductName;
                        line.StockId     = item.StockId;
                        line.StockName   = item.StockName;
                        line.Quantity    = item.Quantity.ToString();
                        line.UnitPriceBT = item.UnitPriceBT.ToString();
                        line.UnitPrice   = item.UnitPrice.ToString();
                        model.OrderDetails.Add(line);
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Không tìm thấy thông tin đơn hàng!!!");
                }

                // initialize viewbag

                // Order Types
                int orderTypeId = 0;
                if (header != null)
                {
                    orderTypeId = header.OrderType;
                }
                var orderTypes = db.OrderTypes.OrderBy(r => r.OrderTypeName).AsEnumerable()
                                 .Select(r => new SelectListItem
                {
                    Text     = r.OrderTypeName,
                    Value    = r.OrderTypeId.ToString(),
                    Selected = r.OrderTypeId == orderTypeId
                }).ToList();
                ViewBag.OrderTypes = orderTypes;

                // Employees
                int employeeId = 0;
                if (header != null && header.EmployeeId != null)
                {
                    employeeId = (int)header.EmployeeId;
                }
                var employees = db.Employees.OrderBy(r => r.FullName).AsEnumerable()
                                .Select(r => new SelectListItem
                {
                    Text     = r.FullName,
                    Value    = r.EmployeeId.ToString(),
                    Selected = r.EmployeeId == employeeId
                })
                                .ToList();
                ViewBag.Employees = employees;

                // Payment Types
                int paymentTypeId = 0;
                if (header != null && header.PaymentTypeId != null)
                {
                    paymentTypeId = (int)header.PaymentTypeId;
                }
                var paymentTypes = db.PaymentTypes.OrderBy(r => r.PaymentTypeName).AsEnumerable()
                                   .Select(r => new SelectListItem
                {
                    Text     = r.PaymentTypeName,
                    Value    = r.PaymentTypeId.ToString(),
                    Selected = r.PaymentTypeId == paymentTypeId
                })
                                   .ToList();
                ViewBag.PaymentTypes = paymentTypes;
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex);
            }
            if (ViewBag.OrderTypes == null)
            {
                ViewBag.OrderTypes = new List <SelectListItem>();
            }
            if (ViewBag.Employees == null)
            {
                ViewBag.Employees = new List <SelectListItem>();
            }
            if (ViewBag.PaymentTypes == null)
            {
                ViewBag.PaymentTypes = new List <SelectListItem>();
            }
            return(View(model));
        }