Пример #1
0
        public void TestMethod1()
        {
            //var a = new TokenDeiveItem()
            //{
            //    App = "SPIG4",
            //    UserId = "afd",
            //    Token = "sdf",
            //};
            //   var b1 = JsonConvert.SerializeObject(a);
            var a = new StorageWarehousingRequest()
            {
                TotalPrice   = 123,
                ReceiveDate  = 100,
                RequestWares = new List <RequestWare>()
                {
                    new RequestWare()
                    {
                        CateId   = 3,
                        Price    = 5000000,
                        Quantity = 1,
                        Details  = new List <RequestWareDetail>()
                        {
                            new RequestWareDetail()
                            {
                                ProductId = 1,
                                Quantity  = 2
                            }
                        }
                    }
                }
            };

            var b = JsonConvert.SerializeObject(a, new JsonSerializerSettings()
            {
                NullValueHandling     = NullValueHandling.Ignore,
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            });
        }
        public async Task <ActionResult> UpdateOrder(StorageWarehousingRequest request)
        {
            var customer = _customerDa.GetByQrCode(request.CustomerCode);

            if (customer == null)
            {
                return(Json(new JsonMessage()
                {
                    Erros = true, Message = "Customer is not exits"
                }, JsonRequestBehavior.AllowGet));
            }

            const StatusWarehouse status = StatusWarehouse.New | StatusWarehouse.Pending | StatusWarehouse.WattingConfirm;
            var order = _da.GetById(request.Code, customer.ID);

            if (!status.HasFlag((StatusWarehouse)order.Status))
            {
                return(Json(new JsonMessage()
                {
                    Erros = true, Message = "Đơn hàng đã được xác nhận"
                }, JsonRequestBehavior.AllowGet));
            }

            //get remove item
            var removeitems = order.DN_RequestWare.Where(m => request.RequestWares.All(n => n.CateId != m.CateID) && m.IsDelete == false).ToList();

            foreach (var dnRequestWare in removeitems)
            {
                dnRequestWare.IsDelete = true;
            }

            //update item
            var updateitems = order.DN_RequestWare.Where(m => request.RequestWares.Any(n => m.CateID == n.CateId && m.IsDelete == false)).ToList();

            foreach (var dnRequestWare in updateitems)
            {
                var requestitem = request.RequestWares.FirstOrDefault(m => m.CateId == dnRequestWare.CateID);
                dnRequestWare.Quantity = requestitem.Quantity;

                dnRequestWare.DN_RequestWareDetail.Clear();
                foreach (var detail in requestitem.Details)
                {
                    dnRequestWare.DN_RequestWareDetail.Add(new DN_RequestWareDetail()
                    {
                        RequestWareId = Guid.NewGuid(),
                        ProductId     = detail.ProductId,
                        Quantity      = detail.Quantity,
                    });
                }
            }

            //get add item
            var additems = request.RequestWares.Where(m => !order.DN_RequestWare.Any(n => n.CateID == m.CateId && n.IsDelete == false)).ToList();

            foreach (var item in additems)
            {
                var requestWare = new DN_RequestWare()
                {
                    GID            = Guid.NewGuid(),
                    CateID         = item.CateId,
                    Quantity       = item.Quantity,
                    QuantityActive = item.Quantity,
                    Price          = item.Price,
                    TotalPrice     = item.TotalPrice,
                    Today          = request.ReceiveDate.DecimalToDate().Date.TotalSeconds(),
                    IsDelete       = false
                };

                foreach (var detail in item.Details)
                {
                    requestWare.DN_RequestWareDetail.Add(new DN_RequestWareDetail()
                    {
                        RequestWareId = Guid.NewGuid(),
                        ProductId     = detail.ProductId,
                        Quantity      = detail.Quantity,
                    });
                }
                order.DN_RequestWare.Add(requestWare);
            }
            _da.Save();
            return(Json(new JsonMessage {
                Erros = false
            }));
        }
        public ActionResult Create(StorageWarehousingRequest request)
        {
            //get customerid
            //var customer = _customerDa.GetByQrCode(request.CustomerCode);
            //if (customer == null)
            //{
            //    return Json(new JsonMessage() { Erros = true, Message = "Customer is not exits" }, JsonRequestBehavior.AllowGet);
            //}

            //if (_da.CheckExistOrder(request.Code, customer.ID))
            //{
            //    return Json(new JsonMessage() { Erros = true, Message = "Mã đơn hàng đã tồn tại" }, JsonRequestBehavior.AllowGet);
            //}

            var model = new StorageWarehousing
            {
                Code   = request.Code,
                Status = (int)StatusWarehouse.New,
                // CustomerId = customer.ID,
                DateCreated    = DateTime.Now.TotalSeconds(),
                IsDelete       = false,
                DateRecive     = request.ReceiveDate,
                DN_RequestWare = new List <DN_RequestWare>(),
                UrlConfirm     = request.UrlConfirm,
                AgencyId       = AgencyId
            };

            foreach (var item in request.RequestWares)
            {
                //get priceunit and costprice
                var category = _categoryDa.GetItemById(item.CateId);
                if (category == null || category.CostPrice == null)
                {
                    return(Json(new JsonMessage(true, "Sản phẩm chưa có giá nhập")));
                }

                //get policyagency

                var policyDa      = new PolicyAgencyDA();
                var requestWareDA = new RequestWareDA();

                // lay so luong da giao
                var quantityFinish =
                    requestWareDA.GetQuantityFinish(AgencyId, item.CateId, request.ReceiveDate.DecimalToDate().Month);

                //so luong tinh hoa hong
                var quantityCaculate = quantityFinish + item.Quantity;

                decimal sale = 0;
                // tim chinh sach dai ly
                var policies     = policyDa.GetAll(item.CateId).OrderBy(m => m.Quantity).ToList();
                var policyActive = policies.Where(m => quantityCaculate <= m.Quantity)
                                   .OrderBy(m => m.Quantity).FirstOrDefault();

                if (policyActive != null)
                {
                    sale = item.Quantity * policyActive.Profit;
                }
                else if (policies.Count > 0)
                {
                    sale = item.Quantity * policies[policies.Count - 1].Profit;
                }

                var requestWare = new DN_RequestWare()
                {
                    GID            = Guid.NewGuid(),
                    CateID         = item.CateId,
                    Quantity       = item.Quantity,
                    QuantityActive = item.Quantity,
                    Price          = category.Price,
                    CostPrice      = category.CostPrice,
                    Sale           = sale,
                    //TotalPrice = item.TotalPrice,
                    Today    = request.ReceiveDate.DecimalToDate().Date.TotalSeconds(),
                    IsDelete = false
                };

                if (item.Details != null)
                {
                    foreach (var detail in item.Details)
                    {
                        requestWare.DN_RequestWareDetail.Add(new DN_RequestWareDetail()
                        {
                            RequestWareId = Guid.NewGuid(),
                            ProductId     = detail.ProductId,
                            Quantity      = detail.Quantity,
                        });
                    }
                }
                model.DN_RequestWare.Add(requestWare);
            }
            _da.Add(model);
            _da.Save();

            //add log
            _storageWareHouseLogDa.AddLog(new StorageWarehousingLog()
            {
                StorageWarehousingId = model.ID,
                // NewValue = JsonConvert.SerializeObject(model, new BinaryConverter())
            });

            return(Json(model.ID, JsonRequestBehavior.AllowGet));
        }