示例#1
0
文件: SalesOrder.cs 项目: Allors/apps
        public void AppsConfirm(OrderConfirm method)
        {
            var orderThreshold = this.Store.OrderThreshold;

            var customerRelationships = this.BillToCustomer.CustomerRelationshipsWhereCustomer;
            customerRelationships.Filter.AddEquals(CustomerRelationships.Meta.InternalOrganisation, this.TakenByInternalOrganisation);

            decimal amountOverDue = 0;
            decimal creditLimit = 0;
            foreach (CustomerRelationship customerRelationship in customerRelationships)
            {
                if (customerRelationship.FromDate <= DateTime.UtcNow && (!customerRelationship.ExistThroughDate || customerRelationship.ThroughDate >= DateTime.UtcNow))
                {
                    creditLimit = customerRelationship.CreditLimit ?? (this.Store.ExistCreditLimit ? this.Store.CreditLimit : 0);
                    amountOverDue = customerRelationship.AmountOverDue;
                }
            }

            if (amountOverDue > creditLimit || this.TotalExVat < orderThreshold)
            {
                this.CurrentObjectState = new SalesOrderObjectStates(this.Strategy.Session).RequestsApproval;
            }
            else
            {
                this.CurrentObjectState = new SalesOrderObjectStates(this.Strategy.Session).InProcess;
            }
        }
示例#2
0
 public static OrderConfirm GetOrderConfirmInstance()
 {
     if (orderConfirm == null || orderConfirm.IsDisposed)
     {
         orderConfirm = new OrderConfirm();
     }
     return(orderConfirm);
 }
示例#3
0
        public async Task <User> SaveUserInfo(OrderConfirm model)
        {
            Address address = await db.Address.FirstOrDefaultAsync(x => x.City == model.City && x.Street == model.Street &&
                                                                   x.Building == model.Building && x.Flat == model.Flat && x.PostalCode == model.PostalCode);

            if (address == null)
            {
                address = new Address
                {
                    City       = model.City,
                    Street     = model.Street,
                    Building   = model.Building,
                    Flat       = model.Flat,
                    PostalCode = model.PostalCode
                };
            }
            User user = new User();

            if (User.Identity.IsAuthenticated)
            {
                string UserName = db.GetUserName(HttpContext);
                user = await db.User.Include(p => p.Profile).FirstOrDefaultAsync(x => x.Login == UserName);

                user.Profile.Address = address;
                if (user.Profile.FirstName != model.FirstName || user.Profile.SecondName != model.SecondName)
                {
                    user.Profile.FirstName  = model.FirstName;
                    user.Profile.SecondName = model.SecondName;
                }
                db.User.Update(user);
            }
            else
            {
                UserProfile profile = new UserProfile
                {
                    FirstName  = model.FirstName,
                    SecondName = model.SecondName,
                    Address    = address
                };
                Role anonimRole = await db.Roles.FirstOrDefaultAsync(r => r.Name == "anonim");

                user = new User
                {
                    Login    = model.Login,
                    Email    = model.Email,
                    Role     = anonimRole,
                    Password = Guid.NewGuid().ToString(),
                    Profile  = profile
                };
                await db.User.AddAsync(user);
            }
            await db.SaveChangesAsync();

            return(user);
        }
    void OnGUI()
    {
        if (StoreFrontEnabled)
        {
            int spacing = 150;
            int anchorX = Screen.width / 2 - ((20 * 4 + spacing * 3) / 2);
            int anchorY = 30;

            //KarenGetsBillyPriceListthanks
            decimal x          = decimal.Parse(priceOfTop.Replace("$", ""));
            decimal y          = decimal.Parse(priceOfPants.Replace("$", ""));
            decimal z          = decimal.Parse(priceOfShoes.Replace("$", ""));
            decimal sum        = x + y + z;
            string  priceOfAll = "$" + sum.ToString();

            GUI.Box(new Rect(0, 0, Screen.width, 90), "Select product(s) for purchasing:");

            if (GUI.Button(new Rect(anchorX, anchorY, 120, 40), "Top (" + priceOfTop + ")"))
            {
                StoreFrontEnabled = false;
                OrderConfirm checkout = GameObject.Find("OrderConfirm").GetComponent <OrderConfirm>();
                checkout.setPackNumber(TOPS_PACK_NUMBER);
            }
            if (GUI.Button(new Rect(anchorX + spacing, anchorY, 120, 40), "Pants (" + priceOfPants + ")"))
            {
                StoreFrontEnabled = false;
                OrderConfirm checkout = GameObject.Find("OrderConfirm").GetComponent <OrderConfirm>();
                checkout.setPackNumber(PANTS_PACK_NUMBER);
            }
            if (GUI.Button(new Rect(anchorX + spacing * 2, anchorY, 120, 40), "Shoes (" + priceOfShoes + ")"))
            {
                StoreFrontEnabled = false;
                OrderConfirm checkout = GameObject.Find("OrderConfirm").GetComponent <OrderConfirm>();
                checkout.setPackNumber(SHOES_PACK_NUMBER);
            }
            if (GUI.Button(new Rect(anchorX + spacing * 3, anchorY, 120, 40), "All (" + priceOfAll + ")"))
            {
                StoreFrontEnabled = false;
                OrderConfirm checkout = GameObject.Find("OrderConfirm").GetComponent <OrderConfirm>();
                checkout.setPackNumber(ALL_PACK_NUMBER);
            }

            if (GUI.Button(new Rect(Screen.width - 90, Screen.height - 70, 80, 60), "Cancel"))
            {
                StoreFrontEnabled = false;
                Main back = GameObject.Find("GameObject").GetComponent <Main>();
                back.stage = 1;
            }
        }
    }
示例#5
0
        public void AppsConfirm(OrderConfirm method)
        {
            var orderThreshold = this.Store.OrderThreshold;
            var partyFinancial = this.BillToCustomer.PartyFinancialRelationshipsWhereParty.FirstOrDefault(v => Equals(v.InternalOrganisation, this.TakenBy));

            decimal amountOverDue = partyFinancial.AmountOverDue;
            decimal creditLimit   = partyFinancial.CreditLimit ?? (this.Store.ExistCreditLimit ? this.Store.CreditLimit : 0);

            if (amountOverDue > creditLimit || this.TotalExVat < orderThreshold)
            {
                this.SalesOrderState = new SalesOrderStates(this.Strategy.Session).RequestsApproval;
            }
            else
            {
                this.SalesOrderState = new SalesOrderStates(this.Strategy.Session).InProcess;
            }
        }
示例#6
0
        /// <summary>
        /// Согласовать заказ
        /// </summary>
        /// <returns></returns>
        private async Task <IActionResult> OrderConfirm()
        {
            try
            {
                int number = Convert.ToInt32(base.OriginalMessage.Substring(ForceReplyOrderConfirm.Length));

                int id = 0;

                using (MarketBotDbContext db = new MarketBotDbContext())
                {
                    Order = db.Orders.Where(o => o.Number == number).Include(o => o.OrderConfirm).Include(o => o.OrdersInWork).FirstOrDefault();

                    if (Order != null && Order.OrderConfirm != null && Order.OrderConfirm.Count == 0 &&
                        await Processing.CheckInWork(Order) && await Processing.CheckIsDone(Order) == false)   // Если уже есть записи о том что заказ соглосован, то больще записей не делаем
                    {
                        string text = base.ReplyToMessageText;
                        id = Order.Id;

                        OrderConfirm orderConfirm = new OrderConfirm
                        {
                            DateAdd    = DateTime.Now,
                            Confirmed  = true,
                            FollowerId = FollowerId,
                            OrderId    = id,
                            Text       = text
                        };

                        db.OrderConfirm.Add(orderConfirm);
                        db.SaveChanges();
                    }
                }

                OrderAdminMsg = new AdminOrderMessage(id, FollowerId);
                var message = OrderAdminMsg.BuildMessage();
                await SendMessage(message);

                string notify = "Заказ №" + this.Order.Number.ToString() + " согласован. Пользователь " + GeneralFunction.FollowerFullName(base.FollowerId);
                await Processing.NotifyChanges(notify, this.Order.Id);

                return(base.OkResult);
            }
            catch (Exception exp)
            {
                return(base.NotFoundResult);
            }
        }
示例#7
0
        public async Task <IActionResult> PurchaseTokens(Purchase model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            User loggedInUser = await this.userManager.GetUserAsync(base.User);

            Token token = this.context.tokens.Where(t => t.ammount == model.amount).FirstOrDefault();

            DateTime today = DateTime.Now;

            Order order = new Order()
            {
                userId      = loggedInUser.Id,
                user        = loggedInUser,
                date        = today,
                tokenAmmout = model.amount,
                price       = token.price
            };

            if (loggedInUser.orderList == null)
            {
                loggedInUser.orderList = new List <Order>();
            }

            loggedInUser.orderList.Add(order);

            loggedInUser.tokens += model.amount;

            this.context.Users.Update(loggedInUser);
            this.context.orders.Update(order);
            await this.context.SaveChangesAsync();

            OrderConfirm confirm = new OrderConfirm()
            {
                order     = order,
                newAmount = loggedInUser.tokens
            };

            return(PartialView("OrderConfirmation", confirm));
        }
示例#8
0
        public async Task <IActionResult> OrderConfirm(OrderConfirm model)
        {
            User user = await SaveUserInfo(model);

            decimal Total          = 0;
            string  ShoppingCartId = db.GetUserName(HttpContext);
            var     ShoppingCart   = db.Cart.Where(c => c.CartId == ShoppingCartId);
            Order   order          = new Order
            {
                User         = user,
                Delivery     = model.Delivery,
                OrderDate    = DateTime.Now,
                Address      = user.Profile.Address,
                OrderDetails = new List <OrderDetail>(),
                Status       = 1,
            };

            foreach (var item in ShoppingCart)
            {
                var orderDetail = new OrderDetail
                {
                    PaperId    = item.PaperId,
                    TemplateId = item.TemplateId,
                    Quantity   = item.Quantity,
                    Price      = item.Price
                };
                Total += item.Price;
                order.OrderDetails.Add(orderDetail);
                db.Cart.Remove(item);
            }
            order.Total = Total;
            await db.Order.AddAsync(order);

            await db.SaveChangesAsync();

            return(RedirectToAction("Complete", "Order", new { id = order.OrderId }));
        }
示例#9
0
        public async Task <IActionResult> OrderConfirm()
        {
            OrderConfirm model = new OrderConfirm();

            if (User.Identity.IsAuthenticated)
            {
                string UserName = db.GetUserName(HttpContext);
                User   user     = await db.User.Include(p => p.Profile).ThenInclude(a => a.Address).FirstOrDefaultAsync(x => x.Login == UserName);

                if (user.Profile == null)
                {
                    user.Profile = new UserProfile
                    {
                        Address = new Address()
                    };
                    db.User.Update(user);
                    await db.SaveChangesAsync();
                }
                else
                {
                    model = new OrderConfirm
                    {
                        Login      = user.Login,
                        Email      = user.Email,
                        FirstName  = user.Profile.FirstName,
                        SecondName = user.Profile.SecondName,
                        City       = user.Profile.Address.City,
                        Street     = user.Profile.Address.Street,
                        Building   = user.Profile.Address.Building,
                        Flat       = user.Profile.Address.Flat,
                        PostalCode = user.Profile.Address.PostalCode
                    };
                }
            }
            return(View(model));
        }
示例#10
0
        public ActionResult <string> Post([FromBody] OrderConfirm order)
        {
            //ZHHelper.ConsoleOut($"接收到订单确认 {DateTime.Now.ToString("hh:mm:ss,fff")} order confirm:{order.orderID}");
            //Core.Core.GetOrderConfirm(order);
            //AssignResult r = new AssignResult();
            //r.code = 200;
            //return Ok(r);

            AssignResult r = new AssignResult();

            if (order == null)
            {
                r.code = 200;
                r.Des  = "传入的数据异常";
                ZHHelper.ConsoleOut($"接收到订单确认 {DateTime.Now.ToString("hh:mm:ss,fff")} message confirm:code:{r.code} Des:{r.code}");
            }
            else if (order.deviceId == null || order.deviceId == "")
            {
                r.code = 200;
                r.Des  = "传入的deviceId数据异常";
                ZHHelper.ConsoleOut($"接收到订单确认 {DateTime.Now.ToString("hh:mm:ss,fff")} message confirm:code:{r.code} Des:{r.code}");
            }
            else if (order.orderID == null || order.orderID == "")
            {
                r.code = 200;
                r.Des  = "传入的orderID数据异常";
                ZHHelper.ConsoleOut($"接收到订单确认 {DateTime.Now.ToString("hh:mm:ss,fff")} message confirm:code:{r.code} Des:{r.code}");
            }
            else
            {
                r.code = 200;
                ZHHelper.ConsoleOut($"接收到订单确认 {DateTime.Now.ToString("hh:mm:ss,fff")} message confirm:{order.orderID}");
                Core.Core.DeleteOrderConfirm(order.deviceId, order.orderID);
            }
            return(Ok(r));
        }
示例#11
0
        public OrderConfirm Confirm()
        {
            var log = new MongoHistoryAPI()
            {
                APIUrl     = "/api/order/confirm",
                CreateTime = DateTime.Now,
                Sucess     = 1
            };

            var result = new OrderConfirm()
            {
                id  = "1",
                msg = "success"
            };

            try
            {
                var requestContent = Request.Content.ReadAsStringAsync().Result;
                var jsonserializer = new JavaScriptSerializer();
                var paser          = jsonserializer.Deserialize <OrderConfirmRequest>(requestContent);
                log.Content = new JavaScriptSerializer().Serialize(paser);

                if (!mongoHelper.checkLoginSession(paser.user, paser.token))
                {
                    throw new Exception("Wrong token and user login!");
                }

                var haiStaff = db.HaiStaffs.Where(p => p.UserLogin == paser.user).FirstOrDefault();
                if (haiStaff == null)
                {
                    throw new Exception("Chỉ nhân viên công ty mới có quyền thực hiện");
                }

                // check C2
                C2Info c2 = db.C2Info.Where(p => p.Code == paser.agency).FirstOrDefault();

                if (c2 == null)
                {
                    throw new Exception("Sai thông tin khách hàng");
                }

                if (c2.IsActive == 0)
                {
                    throw new Exception("Khách hàng đang tạm khóa");
                }

                result.agencyCode = c2.Code;
                result.agencyId   = c2.Id;
                result.store      = c2.StoreName;
                result.deputy     = c2.Deputy;
                result.phone      = c2.CInfoCommon.Phone;
                result.address    = c2.CInfoCommon.AddressInfo;

                /*
                 * result.c1 = GetC2C1(c2.Code);
                 *
                 * // add them
                 * result.c1.Add(new AgencyC2C1()
                 * {
                 *  code = "000",
                 *  name = "Chi nhánh",
                 *  priority = 0,
                 *  store = "Chi nhánh : " + haiStaff.HaiBranch.Name
                 * });
                 */
                // lay danh sach type
                var payType = db.PayTypes.OrderBy(p => p.Idx).ToList();
                List <IdentityCommon> paytypeAll = new List <IdentityCommon>();
                foreach (var item in payType)
                {
                    paytypeAll.Add(new IdentityCommon()
                    {
                        code = item.Id,
                        name = item.Name
                    });
                }

                result.payType = paytypeAll;

                //
                var shipType = db.ShipTypes.OrderBy(p => p.Idx).ToList();
                List <IdentityCommon> shipTypeAll = new List <IdentityCommon>();
                foreach (var item in shipType)
                {
                    shipTypeAll.Add(new IdentityCommon()
                    {
                        code = item.Id,
                        name = item.Name
                    });
                }
                result.shipType = shipTypeAll;

                // danh sach khuyen mai
                result.events = getEvent(paser.product, c2.CInfoCommon);
            }
            catch (Exception e)
            {
                result.id  = "0";
                result.msg = e.Message;
                log.Sucess = 0;
            }

            log.ReturnInfo = new JavaScriptSerializer().Serialize(result);

            mongoHelper.createHistoryAPI(log);

            return(result);
        }
示例#12
0
 public void AppsConfirm(OrderConfirm method)
 {
     this.PurchaseOrderState = new PurchaseOrderStates(this.Strategy.Session).InProcess;
 }