Exemplo n.º 1
0
        public JsonResult SubmitOrder(OrderPostModel model, string payPwd)
        {
            model.CurrentUser            = base.CurrentUser;
            model.DistributionUserLinkId = base.GetDistributionUserLinkId();
            model.PlatformType           = base.PlatformType.GetHashCode();
            OrderReturnModel model2 = OrderApplication.SubmitOrder(model, payPwd);

            base.ClearDistributionUserLinkId();
            OrderApplication.AddVshopBuyNumber(model2.OrderIds);
            base.Session.Remove("OrderTag");
            return(base.Json(new { success = model2.Success, orderIds = model2.OrderIds, realTotalIsZero = model2.OrderTotal == 0M }));
        }
Exemplo n.º 2
0
        public async Task <IHttpActionResult> PostOrder(OrderReturnModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var customer = AppUserManager.Users.Single(u => u.UserName == User.Identity.Name);

            if (customer == null)
            {
                return(NotFound());
            }

            var order = new Order
            {
                Description  = model.Description,
                DueDate      = model.DueDate,
                OrderDate    = DateTime.Now,
                OrderStatus  = OrderStatus.Initial,
                Customer     = customer,
                OrderDetails = new List <OrderDetail>()
            };

            DB.Orders.Add(order);
            await DB.SaveChangesAsync();

            var cart = await GetCurrentFullCart();

            cart.Records.ForEach(rec =>
            {
                var orderDetail = new OrderDetail()
                {
                    Item      = rec.SiteTemplate,
                    ItemPrice = rec.SiteTemplate.Price,
                    Quantity  = rec.Count,
                    Order     = order
                };
                DB.OrderDetails.Add(orderDetail);
            });
            DB.CartRecords.RemoveRange(cart.Records);
            await DB.SaveChangesAsync();

            return(Created("api/orders/" + order.Id, TheModelFactory.Create(order)));
        }
Exemplo n.º 3
0
        public async void InsertOrderData(string shopname, string requestBody)
        {
            var client = new HttpClient();
            List <OrderReturnModel> orders = new List <OrderReturnModel>();
            var json = requestBody;
            OrderReturnModel order = JsonConvert.DeserializeObject <OrderReturnModel>(json);

            order.StoreName = shopname;
            orders.Add(order);
            var    json1     = JsonConvert.SerializeObject(orders);
            string apiUrl2   = $"{config.Value.ResponseUrl}/api/AddShopifyOrders";
            var    response2 = client.PostAsJsonAsync(apiUrl2, orders).Result;

            response2.EnsureSuccessStatusCode();
            string responseBody1 = await response2.Content.ReadAsStringAsync();

            oidval = "";
        }
Exemplo n.º 4
0
        public async void DeleteOrdertData(string shopname, string requestBody)
        {
            List <long>             ids    = new List <long>();
            var                     client = new HttpClient();
            List <OrderReturnModel> orders = new List <OrderReturnModel>();
            var                     json   = requestBody;
            OrderReturnModel        order  = JsonConvert.DeserializeObject <OrderReturnModel>(json);

            order.StoreName = shopname;
            orders.Add(order);
            long id = (long)Convert.ToDouble(order.Id);

            ids.Add(id);
            string apiUrl2   = $"{config.Value.ResponseUrl}/api/DeleteShopifyOrders";
            var    response2 = client.PostAsJsonAsync(apiUrl2, ids).Result;

            response2.EnsureSuccessStatusCode();
            string responseBody1 = await response2.Content.ReadAsStringAsync();

            odidval = "";
        }
        public ActionResult Cancel(int id)
        {
            OrderReturnModel model = _context.OrderReturnModel
                                     .Where(p => p.OrderReturnMasterId == id)
                                     .FirstOrDefault();
            var Resuilt = "";

            if (model == null)
            {
                Resuilt = "Không tìm thấy đơn hàng yêu cầu !";
            }
            else
            {
                using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
                {
                    using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand())
                    {
                        cmd.CommandText = "usp_SellReturnCanceled";
                        cmd.Parameters.AddWithValue("@OrderReturnMasterId", model.OrderReturnMasterId);
                        cmd.Parameters.AddWithValue("@DeletedDate", DateTime.Now);
                        AccountModel Account = _context.AccountModel.Where(p => p.UserName == model.CreatedAccount).FirstOrDefault();
                        model.DeletedEmployeeId = Account.EmployeeId;

                        cmd.Parameters.AddWithValue("@DeletedAccount", currentAccount.UserName);
                        cmd.Parameters.AddWithValue("@DeletedEmployeeId", model.DeletedEmployeeId);
                        cmd.Connection  = conn;
                        cmd.CommandType = CommandType.StoredProcedure;
                        conn.Open();
                        cmd.ExecuteNonQuery();
                        conn.Close();
                    }
                }
                //_context.Entry(model).State = System.Data.Entity.EntityState.Modified;
                //_context.SaveChanges();
                Resuilt = "success";
            }
            return(Json(Resuilt, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 6
0
        public JsonResult SubmitLimitOrder(OrderPostModel model, string payPwd)
        {
            model.CurrentUser  = base.CurrentUser;
            model.PlatformType = 1;
            OrderCreateModel limitOrder = OrderApplication.GetLimitOrder(model);

            if (LimitOrderHelper.IsRedisCache())
            {
                string id = "";
                switch (LimitOrderHelper.SubmitOrder(limitOrder, out id, payPwd))
                {
                case SubmitOrderResult.SoldOut:
                    throw new HimallException("已售空");

                case SubmitOrderResult.NoSkuId:
                    throw new InvalidPropertyException("创建预约单的时候,SKU为空,或者数量为0");

                case SubmitOrderResult.NoData:
                    throw new InvalidPropertyException("参数错误");

                case SubmitOrderResult.NoLimit:
                    throw new InvalidPropertyException("没有限时购活动");

                case SubmitOrderResult.ErrorPassword:
                    throw new InvalidPropertyException("支付密码错误");
                }
                if (string.IsNullOrEmpty(id))
                {
                    throw new InvalidPropertyException("参数错误");
                }
                OrderApplication.UpdateDistributionUserLink(base.GetDistributionUserLinkId().ToArray(), base.UserId);
                return(base.Json(new { success = true, Id = id }));
            }
            OrderReturnModel model3 = OrderApplication.OrderSubmit(limitOrder, payPwd);

            return(base.Json(new { success = model3.Success, orderIds = model3.OrderIds, realTotalIsZero = model3.OrderTotal == 0M }));
        }
        public object PostSubmitFightGroupOrder(OrderSubmitFightGroupOrderModel value)
        {
            this.CheckUserLogin();
            if (value.CapitalAmount > new Decimal(0) && !string.IsNullOrEmpty(value.PayPwd) && !MemberApplication.VerificationPayPwd(this.CurrentUser.Id, value.PayPwd))
            {
                return((object)this.Json(new
                {
                    Success = "false",
                    Msg = "预付款支付密码错误"
                }));
            }
            string skuId            = value.skuId;
            long   count            = value.count;
            long   recieveAddressId = value.recieveAddressId;
            long   groupActionId    = value.GroupActionId;
            long   groupId          = value.GroupId;
            bool   isCashOnDelivery = value.isCashOnDelivery;
            int    invoiceType      = value.invoiceType;
            string invoiceTitle     = value.invoiceTitle;
            string invoiceContext   = value.invoiceContext;
            string invoiceCode      = value.invoiceCode;
            string orderRemarks     = "";
            List <FightGroupOrderJoinStatus> list = new List <FightGroupOrderJoinStatus>()
            {
                FightGroupOrderJoinStatus.Ongoing,
                FightGroupOrderJoinStatus.JoinSuccess
            };
            FightGroupActiveInfo active = Instance <IFightGroupService> .Create.GetActive(groupActionId, false, false, true);

            long num           = count;
            int? limitQuantity = active.LimitQuantity;

            if ((num <= (long)limitQuantity.GetValueOrDefault() ? 0 : (limitQuantity.HasValue ? 1 : 0)) != 0)
            {
                return((object)this.Json(new
                {
                    Success = "false",
                    Msg = string.Format("每人限购数量:{0}!", (object)active.LimitQuantity)
                }));
            }
            try
            {
                OrderCreateModel groupOrder     = OrderApplication.GetGroupOrder(this.CurrentUser.Id, skuId, count.ToString(), recieveAddressId, invoiceType, invoiceTitle, invoiceCode, invoiceContext, groupActionId, PlatformType.Android, groupId, isCashOnDelivery, orderRemarks, new Decimal(0));
                OrderShop[]      orderShopArray = JsonConvert.DeserializeObject <OrderShop[]>(value.jsonOrderShops);
                groupOrder.OrderShops   = orderShopArray;
                groupOrder.OrderRemarks = (IEnumerable <string>)Enumerable.ToArray <string>(Enumerable.Select <OrderShop, string>((IEnumerable <OrderShop>)orderShopArray, (Func <OrderShop, string>)(p => p.Remark)));
                OrderReturnModel orderReturnModel = OrderApplication.OrderSubmit(groupOrder, "");
                this.AddVshopBuyNumber((IEnumerable <long>)orderReturnModel.OrderIds);
                return((object)this.Json(new
                {
                    Success = "true",
                    OrderIds = orderReturnModel.OrderIds
                }));
            }
            catch (HimallException ex)
            {
                return((object)this.Json(new
                {
                    Success = "false",
                    Msg = ex.Message
                }));
            }
            catch (Exception ex)
            {
                return((object)this.Json(new
                {
                    Success = "false",
                    Msg = "提交订单异常"
                }));
            }
        }
        public ActionResult Save(OrderReturnModel model, List <OrderReturnDetailViewModel> detail, decimal?GuestAmountPaid, int CreateReceipt)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    using (TransactionScope ts = new TransactionScope())
                    {
                        var currentTime = DateTime.Now;
                        #region Thêm vào OrderReturnModel
                        model.CreatedDate    = currentTime;
                        model.CreatedAccount = currentAccount.UserName;
                        AccountModel Account = _context.AccountModel.Where(p => p.UserName == model.CreatedAccount).FirstOrDefault();
                        model.CreatedEmployeeId = Account.EmployeeId;
                        //// Tìm giá trị STT order code
                        model.OrderReturnMasterCode = GetReturnCode();
                        if (model.PaymentMethodId == EnumPaymentMethod.TienMat)
                        {
                            model.Paid          = GuestAmountPaid;
                            model.MoneyTransfer = 0;
                        }
                        else if (model.PaymentMethodId == EnumPaymentMethod.ChuyenKhoan)
                        {
                            model.Paid          = 0;
                            model.MoneyTransfer = GuestAmountPaid;
                        }
                        else if (model.PaymentMethodId == EnumPaymentMethod.CongNo)
                        {
                            model.Paid          = 0;
                            model.MoneyTransfer = 0;
                        }
                        else
                        {
                            return(Content("Phương thức thanh toán không hợp lệ !"));
                        }

                        #endregion

                        var orderModel = _context.OrderMasterModel.Where(p => p.OrderId == model.OrderId).FirstOrDefault();

                        #region Tính số dư còn lại
                        decimal?CustomerOldDebt = _context.AM_DebtModel
                                                  .Where(p => p.CustomerId == orderModel.CustomerId)
                                                  .OrderByDescending(p => p.TimeOfDebt)
                                                  .Select(p => p.RemainingAmountAccrued)
                                                  .FirstOrDefault();
                        CustomerOldDebt              = (CustomerOldDebt == null) ? 0 : CustomerOldDebt.Value;
                        model.RemainingAmount        = (model.RemainingAmount == null) ? 0 : model.RemainingAmount.Value;
                        model.RemainingAmountAccrued = CustomerOldDebt.Value - model.RemainingAmount.Value;

                        _context.Entry(model).State = System.Data.Entity.EntityState.Added;
                        _context.SaveChanges(); // LƯU TẠM ĐỂ LẤY OrderId (SẼ BỊ SCROLLBACK KHI XẢY RA LỖI)
                        #endregion

                        if (CreateReceipt == 1)
                        {
                            #region Thêm vào giao dịch kế toán
                            AM_TransactionModel AMmodel;
                            int MaKH = (_context.OrderMasterModel.Where(p => p.OrderId == model.OrderId).Select(p => p.CustomerId).FirstOrDefault());
                            #region TH1 : Trả đủ

                            if (model.TotalPrice == GuestAmountPaid)
                            {
                                AMmodel = new AM_TransactionModel()
                                {
                                    StoreId     = model.StoreId,
                                    AMAccountId = model.PaymentMethodId == EnumPaymentMethod.TienMat ?
                                                  (_context.AM_AccountModel.Where(p => p.Code == EnumAccountCode.TM && p.AMAccountTypeCode == EnumAM_AccountType.TIENMAT && p.StoreId == model.StoreId).Select(p => p.AMAccountId)).FirstOrDefault()
                                                       : (_context.AM_AccountModel.Where(p => p.Code == EnumAccountCode.NH && p.AMAccountTypeCode == EnumAM_AccountType.NGANHANG && p.StoreId == model.StoreId).Select(p => p.AMAccountId)).FirstOrDefault(),
                                    TransactionTypeCode = EnumTransactionType.BHTRA,
                                    ContactItemTypeCode = EnumContactType.KH,
                                    CustomerId          = MaKH,
                                    SupplierId          = null,
                                    EmployeeId          = null,
                                    OtherId             = null,
                                    Amount                 = GuestAmountPaid,
                                    OrderId                = model.OrderId,
                                    ImportMasterId         = null,
                                    IEOtherMasterId        = null,
                                    Note                   = model.Note,
                                    CreateDate             = currentTime,
                                    CreateEmpId            = currentEmployee.EmployeeId,
                                    RemainingAmountAccrued = model.RemainingAmountAccrued
                                };
                                _context.Entry(AMmodel).State = System.Data.Entity.EntityState.Added;
                                _context.SaveChanges();
                            }
                            #endregion

                            #region TH2 : Không trả lưu vào công nợ
                            else if (GuestAmountPaid == 0 || GuestAmountPaid == null)
                            {
                                AMmodel = new AM_TransactionModel()
                                {
                                    StoreId             = model.StoreId,
                                    AMAccountId         = (_context.AM_AccountModel.Where(p => p.Code == EnumAccountCode.PTKH && p.AMAccountTypeCode == EnumAM_AccountType.CONGNO && p.StoreId == model.StoreId).Select(p => p.AMAccountId)).FirstOrDefault(),
                                    TransactionTypeCode = EnumTransactionType.BHTRA,
                                    ContactItemTypeCode = EnumContactType.KH,
                                    CustomerId          = MaKH,
                                    SupplierId          = null,
                                    EmployeeId          = null,
                                    OtherId             = null,
                                    Amount                 = model.TotalPrice,
                                    OrderId                = model.OrderId,
                                    ImportMasterId         = null,
                                    IEOtherMasterId        = null,
                                    Note                   = model.Note,
                                    CreateDate             = currentTime,
                                    CreateEmpId            = currentEmployee.EmployeeId,
                                    RemainingAmountAccrued = model.RemainingAmountAccrued
                                };
                                _context.Entry(AMmodel).State = System.Data.Entity.EntityState.Added;
                                // model.PaymentMethodId == EnumPamentMethod.CongNo
                                model.PaymentMethodId       = EnumPaymentMethod.CongNo;
                                _context.Entry(model).State = System.Data.Entity.EntityState.Modified;

                                _context.SaveChanges();
                            }
                            #endregion

                            #region TH3 : Trả 1 phần
                            else
                            {
                                #region 1 phần (Tiền mặt hoặc chuyển khoản)
                                AMmodel = new AM_TransactionModel()
                                {
                                    StoreId     = model.StoreId,
                                    AMAccountId = model.PaymentMethodId == EnumPaymentMethod.TienMat ?
                                                  (_context.AM_AccountModel.Where(p => p.Code == EnumAccountCode.TM && p.AMAccountTypeCode == EnumAM_AccountType.TIENMAT && p.StoreId == model.StoreId).Select(p => p.AMAccountId)).FirstOrDefault()
                                                       : (_context.AM_AccountModel.Where(p => p.Code == EnumAccountCode.NH && p.AMAccountTypeCode == EnumAM_AccountType.NGANHANG && p.StoreId == model.StoreId).Select(p => p.AMAccountId)).FirstOrDefault(),
                                    TransactionTypeCode = EnumTransactionType.BHTRA,
                                    ContactItemTypeCode = EnumContactType.KH,
                                    CustomerId          = MaKH,
                                    SupplierId          = null,
                                    EmployeeId          = currentEmployee.EmployeeId,
                                    OtherId             = null,
                                    Amount                 = GuestAmountPaid,
                                    OrderId                = model.OrderId,
                                    ImportMasterId         = null,
                                    IEOtherMasterId        = null,
                                    Note                   = model.Note,
                                    CreateDate             = currentTime,
                                    CreateEmpId            = currentEmployee.EmployeeId,
                                    RemainingAmountAccrued = model.RemainingAmountAccrued
                                };
                                _context.Entry(AMmodel).State = System.Data.Entity.EntityState.Added;
                                _context.SaveChanges();
                                #endregion

                                #region 1 phần đưa vào công nợ
                                AMmodel = new AM_TransactionModel()
                                {
                                    StoreId             = model.StoreId,
                                    AMAccountId         = (_context.AM_AccountModel.Where(p => p.Code == EnumAccountCode.PTKH && p.AMAccountTypeCode == EnumAM_AccountType.CONGNO && p.StoreId == model.StoreId).Select(p => p.AMAccountId)).FirstOrDefault(),
                                    TransactionTypeCode = EnumTransactionType.BHTRA,
                                    ContactItemTypeCode = EnumContactType.KH,
                                    CustomerId          = MaKH,
                                    SupplierId          = null,
                                    EmployeeId          = null,
                                    OtherId             = null,
                                    Amount                 = model.TotalPrice - GuestAmountPaid,
                                    OrderId                = model.OrderId,
                                    ImportMasterId         = null,
                                    IEOtherMasterId        = null,
                                    Note                   = model.Note,
                                    CreateDate             = currentTime,
                                    CreateEmpId            = currentEmployee.EmployeeId,
                                    RemainingAmountAccrued = model.RemainingAmountAccrued
                                };
                                _context.Entry(AMmodel).State = System.Data.Entity.EntityState.Added;
                                _context.SaveChanges();
                                #endregion
                            }
                            #endregion



                            #endregion
                        }

                        #region Thêm AM_DebtModel (Số nợ còn lại)
                        if (model.RemainingAmount > 0)
                        {
                            var AMDebModel = new AM_DebtModel()
                            {
                                CustomerId             = orderModel.CustomerId,
                                TimeOfDebt             = currentTime,
                                RemainingAmountAccrued = model.RemainingAmountAccrued,
                                OrderReturnId          = model.OrderReturnMasterId,
                                TransactionTypeCode    = EnumTransactionType.BHTRA
                            };
                            _context.Entry(AMDebModel).State = System.Data.Entity.EntityState.Added;
                            _context.SaveChanges();
                        }
                        #endregion

                        #region Thêm vào InventoryMaster
                        // Insert InventoryMaster
                        InventoryMasterModel InvenMaster = new InventoryMasterModel();
                        InvenMaster.WarehouseModelId      = model.WarehouseId;
                        InvenMaster.InventoryTypeId       = EnumInventoryType.NB;// Nhập - Khách trả hàng
                        InvenMaster.InventoryCode         = model.OrderReturnMasterCode;
                        InvenMaster.CreatedDate           = model.CreatedDate;
                        InvenMaster.CreatedAccount        = model.CreatedAccount;
                        InvenMaster.CreatedEmployeeId     = model.CreatedEmployeeId;
                        InvenMaster.StoreId               = model.StoreId;
                        InvenMaster.Actived               = true;
                        InvenMaster.BusinessId            = model.OrderId;                 // Id nghiệp vụ
                        InvenMaster.BusinessName          = "OrderReturnMaster";           // Tên bảng nghiệp vụ
                        InvenMaster.ActionUrl             = "/OrderReturnMaster/Details/"; // Đường dẫn ( cộng ID cho truy xuất)
                        _context.Entry(InvenMaster).State = System.Data.Entity.EntityState.Added;
                        _context.SaveChanges();                                            // insert tạm để lấy InvenMasterID
                        #endregion

                        #region duyệt list lưu OrderReturnDetailModel và InvenrotyDetail
                        decimal TotalQty = 0;
                        foreach (var item in detail)
                        {
                            if (item.ReturnQuantity > 0) // Chỉ tính Số lượng trả > 0
                            {
                                TotalQty += item.ReturnQuantity.Value;
                                #region Lưu OrderReturnDetailModel
                                decimal CogsInOd = _context.OrderDetailModel.Where(p => p.OrderId == model.OrderId && p.ProductId == item.ProductId).Select(p => p.COGS.Value).FirstOrDefault();
                                item.COGS = CogsInOd;
                                OrderReturnDetailModel detailmodel = new OrderReturnDetailModel()
                                {
                                    OrderReturnId    = model.OrderReturnMasterId,
                                    ProductId        = item.ProductId,
                                    SellQuantity     = item.SellQuantity,
                                    ReturnedQuantity = item.ReturnQuantity, // cần xem lại
                                    ReturnQuantity   = item.ReturnQuantity,
                                    Price            = item.Price,
                                    UnitPrice        = item.UnitPrice,
                                    Note             = item.Note,
                                    ReturnReason     = item.ReturnReason,
                                    COGS             = item.COGS
                                };
                                _context.Entry(detailmodel).State = System.Data.Entity.EntityState.Added;
                                _context.SaveChanges();
                                #endregion

                                #region Lưu InventoryDetail
                                // tính tồn đầu
                                EndInventoryRepository EndInventoryRepo = new EndInventoryRepository(_context);
                                decimal tondau = EndInventoryRepo.GetQty(item.ProductId.Value);

                                InventoryDetailModel InvenDetail = new InventoryDetailModel()
                                {
                                    InventoryMasterId = InvenMaster.InventoryMasterId,
                                    ProductId         = item.ProductId,
                                    BeginInventoryQty = tondau,
                                    COGS = CogsInOd,
                                    //Price = item.Price,
                                    ImportQty = item.ReturnQuantity,
                                    //ExportQty = 0,
                                    UnitCOGS = item.ReturnQuantity * CogsInOd,
                                    //UnitPrice = item.ReturnQuantity * item.Price, //[ImportQty] *[Price]
                                    EndInventoryQty = tondau + item.ReturnQuantity//Tồn cuối = [BeginInventoryQty] + [ImportQty] -  [ExportQty]
                                };
                                _context.Entry(InvenDetail).State = System.Data.Entity.EntityState.Added;

                                // _context.SaveChanges();

                                #endregion
                            }
                        }
                        #endregion

                        // Cập nhật lại Tổng giá vốn
                        model.SumCOGSOfOrderDetail  = detail.Where(p => p.ReturnQuantity > 0).Sum(p => p.COGS * p.ReturnQuantity);
                        model.TotalQty              = TotalQty;
                        _context.Entry(model).State = System.Data.Entity.EntityState.Modified;
                        _context.SaveChanges();
                        ts.Complete();
                        return(Content("success"));
                    }
                }
                else
                {
                    return(Content("Vui lòng kiểm tra lại thông tin không hợp lệ"));
                }
            }
            catch
            {
                return(Content("Xảy ra lỗi trong quá trình thêm mới đơn hàng"));
            }
        }