Exemple #1
0
        public static async Task <string> BuildPdf(OrderDataModel order)
        {
            string template = Properties.Settings.Default.template;

            if (string.IsNullOrWhiteSpace(template))
            {
                throw new InvalidOperationException("No se puede generar el archivo solicitado, debido a que la plantilla no está establecida.");
            }

            if (!File.Exists(template))
            {
                throw new InvalidOperationException("La plantilla para generar el arhcivo no existe, por favor, verifique la ruta al archivo.");
            }

            string html = File.ReadAllText(template);

            html = ModeltoHtml(order, html);

            string tmpDir   = Path.GetTempPath();
            string filename = $"{tmpDir}\\{order.ID}_{order.Customer.Firstname}{order.Customer.Lastname}.pdf";

            await HTMLtoPDF(html, filename, template);

            return(filename);
        }
Exemple #2
0
        /// <summary>
        /// Main method for processing Data
        /// </summary>
        /// <param name="Path">XML file path</param>
        public void Process(string Path)
        {
            if (!File.Exists(Path))
            {
                MessageBox.Show($"File {Path} does not exist.!", "DataProcessing");
                return;
            }

            string formattedString = FormatXml(@"C:\zadatak\zadatak.xml");

            if (formattedString == string.Empty)
            {
                return;
            }
            else
            {
                loggerUI.LogMessage(formattedString, UIModelView.XML);
            }

            OrderDataModel order = DeserializeXml(@"C:\zadatak\zadatak.xml");

            CalculateTotalValue(order);
            loggerUI.LogMessage(ToJSON(order), UIModelView.JSON);
            loggerUI.LogMessage(ToJSON(order, "Burger"), UIModelView.Filter);
        }
Exemple #3
0
        public static OrderModelItem MapToModel(this OrderDataModel orderDataModel)
        {
            var orderItem = new OrderModelItem();

            orderItem.Id       = orderDataModel.Id;
            orderItem.Date     = orderDataModel.CreationDate;
            orderItem.Email    = orderDataModel.Email;
            orderItem.UserName = $"{orderDataModel.FirstName} {orderDataModel.LastName}";
            orderItem.Amount   = orderDataModel.Amount;

            var result = orderDataModel.PaymentId == null ? Enums.TransactionStatus.UnPaid : Enums.TransactionStatus.Paid;

            orderItem.TransactionStatus = result;

            orderItem.Currency = orderDataModel.OrderItems.Select(x => x.Currency).FirstOrDefault();

            orderItem.OrderItems = new List <OrderItemModelItem>();

            foreach (var item in orderDataModel.OrderItems)
            {
                orderItem.OrderItems.Add(new OrderItemModelItem
                {
                    PrintingEditionType = item.PrintingEditionType,
                    Title = item.Title,
                    Count = item.Count
                });
            }

            return(orderItem);
        }
Exemple #4
0
        /// <summary>
        /// 订单信息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public OrderDataModel GetOrderData(HomeRequest request)
        {
            #region 查询条件

            var wherePS = new Where <TbDistributionPlanInfo>();
            var whereQS = new Where <TbDistributionEntOrder>();

            #endregion

            var retData = new OrderDataModel();
            //订单信息
            var orderInfo = CreatOrderInfo(request);
            if (!orderInfo.Item2.Any())
            {
                return(retData);
            }
            retData = orderInfo.Item1;
            //配送
            wherePS.And(p => p.OrderCode.In(orderInfo.Item2));
            var psList = Db.Context.From <TbDistributionPlanInfo>().Select(TbDistributionPlanInfo._.DistributionStart).Where(wherePS).ToList();
            retData.Distribution    = psList.Where(p => p.DistributionStart == "配送完成").Count();
            retData.NotDistribution = psList.Where(p => p.DistributionStart == "未配送").Count();
            //签收
            whereQS.And(p => p.OrderCode.In(orderInfo.Item2));
            var qsList = Db.Context.From <TbDistributionEntOrder>().Select(TbDistributionEntOrder._.All)
                         .LeftJoin <TbDistributionEnt>((a, c) => a.DistributionCode == c.DistributionCode)
                         .Where(whereQS).ToList();
            retData.Sign    = qsList.Where(p => p.SignState == "已签收").Count();
            retData.NotSign = qsList.Where(p => p.SignState == "未签收").Count();
            return(retData);
        }
Exemple #5
0
        public OrderReviewViewModel(OrderDataModel order)
        {
            this.order = order;

            BackCommand            = new CommandHandler(o => Back(o as UserControl));
            AcceptCommand          = new CommandHandler(o => Accept(o as PrintDialog));
            ProductSelectedCommand = new CommandHandler(i => ProductSelected((int)i));
        }
Exemple #6
0
 /// <summary>
 /// Method for calculating total Order value.
 /// </summary>
 /// <param name="order">Order object</param>
 private void CalculateTotalValue(OrderDataModel order)
 {
     if (order.Item == null)
     {
         return;
     }
     order.Total = (order.Item.Sum(x => Convert.ToDecimal(x.Price) * Convert.ToDecimal(x.Quantity))
                    + order.Item.Select(x => x.Modifiers).Select(y => y.Sum(t => Convert.ToDecimal(t.Price) * Convert.ToDecimal(t.Quantity))).Sum()).ToString();
 }
        public async Task <IActionResult> GetOrder([FromRoute] int id)
        {
            PutOrderDataModel data = CheackRequest();

            if (data == null)
            {
                return(BadRequest());
            }

            ApplicationUser user = await GetUserWorker(data);

            if (user == null)
            {
                return(Unauthorized());
            }

            var order = await _context.Orders
                        .Where(o => o.Id == id)
                        .Include(o => o.User)
                        .Include(o => o.Category).ThenInclude(c => c.Services)
                        .Include(o => o.Location).ThenInclude(l => l.District)
                        .Include(o => o.Location).ThenInclude(l => l.City)
                        .Include(o => o.OrderDetails)
                        .SingleOrDefaultAsync();

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

            //_context.Cities.Where(c => c.Id == order.Location.District.CityId).Load();
            //_context.Services.Where(s => s.CategoryId == order.CategoryId).Load();
            //_context.Categories.Where(c => c.Id == order.CategoryId).Load();

            OrderDataModel dataModel = new OrderDataModel
            {
                Id             = order.Id,
                Number         = order.Number,
                Date           = order.Date.ToString(),
                CategoryName   = order.Category.Name,
                ClientCity     = order.Location.City.Name,
                ClientDistrict = order.Location.District.Name,
                ClientAddress  = order.Location.Address,
                ClientPhone    = order.User.PhoneNumber,
                Description    = order.Description,
                OrderDetails   = order.OrderDetails.Select(o => new OrderDetailDataModel {
                    Quantity = o.Quantity, SeviceName = o.Service.Name
                }).ToList(),
                TotalCost = order.TotalCost
            };

            return(Ok(dataModel));
        }
        public static int SetOrderTrackingNo(int orderId, string trackingNo)
        {
            OrderDataModel orderDataModel = new OrderDataModel
            {
                Id             = orderId,
                TrackingNumber = trackingNo,
                Status         = "Shipped"
            };
            string sql = @"UPDATE [dbo].[Order] SET Status=@Status, [TrackingNumber] = @TrackingNumber where Id=@Id";

            return(SQLDataAccess.SaveData(sql, orderDataModel));
        }
Exemple #9
0
        /// <summary>
        /// 生成订单详情
        /// </summary>
        /// <param name="info"></param>
        public void InitOrderDetailElment(OrderDataModel orderModel)
        {
            var dic = orderModel.OrderContentDic;

            foreach (KeyValuePair <MaterialDataModel, int> kvp in dic)
            {
                var obj     = ObjectManager.Instance.InstantiateObject(UIPath.PrefabPath.Order_Detail_Element);
                var element = UIUtility.SafeGetComponent <OrderDetailElement>(obj.transform);
                element.InitOrderDetailElement(kvp.Key, kvp.Value);
                obj.transform.SetParent(OrderContent.transform, false);
            }
            HasInitDetailElement = true;
        }
Exemple #10
0
 /// <summary>
 /// Serialize filtered Order Object to Json format.
 /// </summary>
 /// <param name="order">Order object</param>
 /// <param name="filter">Filtered Name of Item</param>
 /// <returns></returns>
 private string ToJSON(OrderDataModel order, string filter)
 {
     try
     {
         string json = JsonConvert.SerializeObject(order.Item.Where(x => x.Name.Equals(filter)), Newtonsoft.Json.Formatting.Indented);
         return(json);
     }
     catch (Exception ex)
     {
         MessageBox.Show($"Error while serializing filtered JSON object.", "DataProcessing");
         return("");
     }
 }
 public HttpResponseMessage Order([FromBody] OrderDataModel orderData)
 {
     try
     {
         OrderModel objOrder  = new OrderModel();
         bool       blnStatus = objOrder.PlaceOrder(orderData);
         var        response  = Request.CreateResponse(blnStatus);
         return(response);
     }
     catch (Exception)
     {
         throw;
     }
 }
Exemple #12
0
 public static OrderViewModel ToViewModel(this OrderDataModel orderDataModel)
 {
     return(new OrderViewModel
     {
         cheese = orderDataModel.Cheese,
         comment = orderDataModel.Comment,
         create_date = orderDataModel.CreateDate,
         meat = orderDataModel.Meat,
         rate = orderDataModel.Rate,
         salad = orderDataModel.Salad,
         status = Enum.GetName(typeof(OrderStatus), ((OrderStatus)orderDataModel.Status)),
         total_price = orderDataModel.TotalPrice,
         order_number = orderDataModel.Id
     });
 }
Exemple #13
0
        public async Task <ActionResult <WXUserOrder> > PostWXUserOrder([FromForm] OrderDataModel data)
        {
            //string open_id, List<ProductResultModel> productResult, decimal total_price, string order_code
            System.Diagnostics.Debug.WriteLine("正在创建订单:");
            System.Diagnostics.Debug.WriteLine(data.OpenId);

            //foreach (var item in productResult)
            //{
            //    WXUserOrder wXUserOrder = new WXUserOrder();
            //    wXUserOrder.WXUserID = open_id;
            //}
            WXUserOrder wXUserOrder = new WXUserOrder
            {
                WXUserID    = data.OpenId,
                TotalPrice  = data.TotalPrice,
                WXPayNumber = data.OrderCode,
                WXUserPhone = "",
                State       = 1,
                CreateTime  = DateTime.Now
            };

            _context.WXUserOrder.Add(wXUserOrder);
            //List<WXUserOrderDetail> OrderDetails = new List<WXUserOrderDetail>();
            List <ProductResultModel> OrderDetails = JsonConvert.DeserializeObject <List <ProductResultModel> >(data.ProductResult);

            System.Diagnostics.Debug.WriteLine(data.ProductResult);
            System.Diagnostics.Debug.WriteLine("商品数据");
            for (int i = 0; i < OrderDetails.Count(); i++)
            {
                System.Diagnostics.Debug.WriteLine(OrderDetails[i].ProductName);
                WXUserOrderDetail wXUserOrderDetail = new WXUserOrderDetail
                {
                    WXUserOrderID   = data.OrderCode,
                    WXUserPhone     = "",
                    WXProductID     = OrderDetails[i].ProductID,
                    WXProductNumber = OrderDetails[i].ProductNumber,
                };
                _context.WXUserOrderDetail.Add(wXUserOrderDetail);
            }

            await _context.SaveChangesAsync();

            //foreach(var item in wXUserOrderDetails)
            //{
            //    CreatedAtAction("GetWXUserOrderDetail", new { id = item.ID }, item);
            //}
            return(CreatedAtAction("GetWXUserOrder", new { id = wXUserOrder.ID }, wXUserOrder));
        }
        public bool Add(OrderBLModel order)
        {
            OrderDataModel orderToAdd = Mapper.Map <OrderDataModel>(order);

            var orderDetailsToAdd = orderToAdd.OrderDetails;

            orderToAdd.OrderDetails = null;
            orderToAdd.OrderDate    = DateTime.Now;

            _unitOfWork.OrderRepository.Create(orderToAdd);

            foreach (var item in orderDetailsToAdd)
            {
                item.ProductId = item.Game.Id;
                item.Game      = null;
                item.OrderId   = orderToAdd.Id;
                _unitOfWork.OrderDetailsRepository.Create(item);
            }

            return(_unitOfWork.OrderRepository.GetById(orderToAdd.Id) != null);
        }
        public async Task <OrderDataModel> GetOrderDataModelAsync(int orderId)
        {
            ApplicationUser userWorker = await GetUserWorkerAsync();

            if (userWorker == null)
            {
                return(null);
            }

            WorkerSetting workerSetting = await GetWorkerSetting(userWorker);

            Order order = await Context.Orders
                          .Include(o => o.User).Include(o => o.Location).ThenInclude(o => o.District)
                          .Where(o => o.Id == orderId)
                          .Include(o => o.OrderDetails)
                          .SingleOrDefaultAsync();

            Context.Categories.Where(c => c.Id == order.CategoryId).Load();
            Context.Services.Where(s => s.CategoryId == order.CategoryId).Load();

            OrderDataModel orderDM = new OrderDataModel
            {
                Id             = order.Id,
                Number         = order.Number,
                Date           = order.Date.ToString(),
                CategoryName   = order.Category.Name,
                ClientCity     = order.Location.City.Name,
                ClientDistrict = order.Location.District.Name,
                ClientAddress  = order.Location.Address,
                ClientPhone    = order.User.PhoneNumber,
                Description    = order.Description,
                OrderDetails   = order.OrderDetails
                                 .Select(o => new OrderDetailDataModel {
                    Quantity = o.Quantity, SeviceName = o.Service.Name
                }).ToList(),
                TotalCost = order.TotalCost
            };

            return(orderDM);
        }
Exemple #16
0
        /// <summary>
        /// 加工订单统计图
        /// </summary>
        /// <returns></returns>
        public OrderDataModel GetOrderInfoReport(HomeRequest request)
        {
            var retData = new OrderDataModel();
            //订单信息
            var orderInfo = CreatOrderInfo(request);

            if (!orderInfo.Item2.Any())
            {
                return(retData);
            }
            retData = orderInfo.Item1;
            //配送超期
            var where = new Where <TbDistributionPlanInfo>();
            where.And(p => p.OrderCode.In(orderInfo.Item2));
            where.And(new WhereClip("(DistributionStart='配送完成' and DATEPART(day,DeliveryCompleteTime)>DATEPART(day,DistributionTime)) or (DistributionStart='未配送' and DistributionTime>GETDATE())"));
            var data = Db.Context.From <TbDistributionPlanInfo>()
                       .Select(TbDistributionPlanInfo._.ID, TbCompany._.ParentCompanyCode)
                       .LeftJoin <TbCompany>((a, c) => a.SiteCode == c.CompanyCode)
                       .Where(where).ToList();

            retData.Distribution = data.GroupBy(p => p.ParentCompanyCode).Count();
            return(retData);
        }
 public OrderProvider(OrderDataModel data)
 {
     _data = data;
 }
        public OrderBLModel GetOrderByOrderId(int id)
        {
            OrderDataModel order = _unitOfWork.OrderRepository.GetById(id);

            return(Mapper.Map <OrderBLModel>(order));
        }
        public static int CreateNewOrder(int UserId, string Name, string CompanyName, string Address,
                                         string City, string State, string Zip, DateTime DateCreated)
        {
            //Saving Order Header
            OrderDataModel orderDataModel = new OrderDataModel
            {
                UserId      = UserId,
                Name        = Name,
                CompanyName = CompanyName,
                Address     = Address,
                City        = City,
                State       = State,
                Zip         = Zip,
                DateCreated = DateCreated
            };
            string sql = @"INSERT INTO [dbo].[Order]
                               ([UserId]
                               ,[Name]
                               ,[CompanyName]
                               ,[Address]
                               ,[City]
                               ,[State]
                               ,[Zip]
                               ,[DateCreated])
                         VALUES
                               (@UserId
                               ,@Name
                               ,@CompanyName
                               ,@Address
                               ,@City
                               ,@State
                               ,@Zip
                               ,@DateCreated)";

            SQLDataAccess.SaveData(sql, orderDataModel);

            OrderDataModel newOrder = GetOrder(UserId);
            CartDataModel  openCart = CartProcessor.GetOpenCart(UserId);
            List <CartProductsDataModel> cartProducts = CartProcessor.LoadCartProducts(UserId);

            //Saving order details
            foreach (var product in cartProducts)
            {
                OrderProductsDataModel orderProducts = new OrderProductsDataModel
                {
                    OrderId            = newOrder.Id,
                    ProductId          = product.ProductId,
                    ProductDescription = ProductProcessor.GetProduct(product.ProductId).Description,
                    ProductQty         = product.ProductQty,
                    ProductPrice       = product.ProductPrice,
                    ProductImagePath   = ProductProcessor.GetProduct(product.ProductId).ImagePath,
                    ProductCode        = ""
                };
                sql = @"INSERT INTO [dbo].[OrderProducts]
                               ([OrderId]
                               ,[ProductId]
                               ,[ProductCode]
                               ,[ProductDescription]
                               ,[ProductImagePath]
                               ,[ProductQty]
                               ,[ProductPrice])
                         VALUES
                               (@OrderId
                               ,@ProductId
                               ,@ProductCode
                               ,@ProductDescription
                               ,@ProductImagePath
                               ,@ProductQty
                               ,@ProductPrice)";
                SQLDataAccess.SaveData(sql, orderProducts);
            }

            //Closing user cart
            CartProcessor.CloseCart(UserId);
            return(newOrder.Id);
        }
Exemple #20
0
        public async Task <GenericModel <OrderDataModel> > GetAllOrdersAsync(FilterOrderModel filter, long userId)
        {
            var responseModel = new GenericModel <OrderDataModel>();

            var columnSql = $"oi.Id, oi.Count, pe.Id, pe.Title, pe.PrintingEditionType, o.Id, o.CreationDate, o.Amount, pa.Id, pa.TransactionId, u.Id, u.FirstName, u.LastName, u.Email";

            var searchUserSql  = string.Empty;
            var offsetSql      = string.Empty;
            var sort           = string.Empty;
            var orderSql       = string.Empty;
            var transactionSql = string.Empty;

            if (userId > 1)
            {
                searchUserSql = $@"AND o.UserId = @userId";
            }

            if (filter.TransactionStatus.Equals(TransactionStatus.Paid))
            {
                transactionSql = $"AND pa.TransactionId IS NOT NULL ";
            }

            if (filter.TransactionStatus.Equals(TransactionStatus.UnPaid))
            {
                transactionSql = $"AND pa.TransactionId IS NULL ";
            }

            var sortType = $"Id";

            if (filter.SortType.Equals(SortType.Amount))
            {
                sortType = $"Amount";
            }

            if (filter.SortType.Equals(SortType.Date))
            {
                sortType = $"CreationDate";
            }

            var filterTypeSql = $"o.{sortType}";


            if (filter.SortState.Equals(SortState.Asc))
            {
                sort = "ASC";
            }

            if (filter.SortState.Equals(SortState.Desc))
            {
                sort = "DESC";
            }

            var countBuilder = new StringBuilder($@"
                                SELECT COUNT(DISTINCT o.Id)
                                FROM OrderItems AS oi
                                INNER JOIN PrintingEditions AS pe ON pe.Id = oi.PrintingEditionId                                                               
                                INNER JOIN (
	                                SELECT  o.Id, o.CreationDate, o.Amount, o.UserId, o.PaymentId
	                                FROM Orders AS o
	                                INNER JOIN Payments AS pa ON o.PaymentId = pa.Id
	                                WHERE o.IsRemoved = 0 {transactionSql} {searchUserSql} "    );

            var endSql = $@"
                    ) AS o ON o.Id = oi.OrderId
                    INNER JOIN Payments AS pa ON pa.Id = o.PaymentId
                    INNER JOIN AspNetUsers AS u ON u.Id = o.UserId;";

            var mainBuilder = new StringBuilder(countBuilder.ToString().Replace("COUNT(DISTINCT o.Id)", columnSql));

            orderSql = $@"ORDER BY {filterTypeSql} {sort}
                          OFFSET (@Page - 1) * @PageSize ROWS FETCH NEXT @PageSize ROWS ONLY";

            var resultSql = mainBuilder.Append(orderSql)
                            .Append(endSql)
                            .Append(countBuilder.Append(endSql).ToString()).ToString();

            var orders = new List <OrderDataModel>();

            using (var connection = GetSqlConnection())
            {
                var dict = new Dictionary <long, OrderDataModel>();

                var result = await connection.QueryMultipleAsync(resultSql, new {
                    filter.Page,
                    filter.PageSize,
                    userId
                });

                orders = result.Read <OrderItem, PrintingEdition, Order, Payment, ApplicationUser, OrderDataModel>(
                    (orderItem, printingEdition, order, payment, user) =>
                {
                    OrderDataModel model;

                    if (!dict.TryGetValue(order.Id, out model))
                    {
                        model = new OrderDataModel
                        {
                            Id           = order.Id,
                            CreationDate = order.CreationDate,
                            Amount       = order.Amount,
                            FirstName    = user.FirstName,
                            LastName     = user.LastName,
                            Email        = user.Email,
                            PaymentId    = payment.TransactionId,

                            OrderItems = new List <OrderItemDataModel>()
                        };

                        dict.Add(model.Id, model);
                    }

                    model.OrderItems.Add(new OrderItemDataModel
                    {
                        PrintingEditionType = printingEdition.PrintingEditionType,
                        Count = orderItem.Count,
                        Title = printingEdition.Title
                    });

                    return(model);
                },
                    splitOn: "Id")
                         .Distinct()
                         .ToList();

                responseModel.CollectionCount = result.Read <int>().FirstOrDefault();
            }

            responseModel.Collection = orders;

            return(responseModel);
        }
Exemple #21
0
 public override void ChangeAction(BaseDataModel model)
 {
     _model = (OrderDataModel)model;
     InitOrderReceiveElement();
 }
 public OrderViewModel()
 {
     GetItems();
     Order = new OrderDataModel();
     Test  = new Command(Pay);
 }
Exemple #23
0
        private static string ModeltoHtml(OrderDataModel order, string html)
        {
            // Order Products
            string html_products = string.Empty;

            foreach (OrderProductModel or in order.Cart)
            {
                html_products += $"<tr><td>{or.Name}</td><td>{or.Model}</td><td>${or.Price:#.##}</td><td>{or.Quantity}</td><td>${or.Total:#.##}</td><td><ul>[FLAG_SERIALS]<ul></td></tr>";
                string html_serials = string.Empty;
                if (or.SerialNumbers != null)
                {
                    foreach (ProductSerialModel serial in or.SerialNumbers)
                    {
                        html_serials += $"<li>{serial.SerialNumber} | {serial.DateStart.ToShortDateString()} - {serial.DateEnd.ToShortDateString()}</li>";
                    }
                }
                html_products = html_products.Replace("[FLAG_SERIALS]", html_serials);
            }

            // Totals
            string html_totals_header = string.Empty;
            string html_totals_value  = string.Empty;

            foreach (OrderTotalModel t in order.OrderTotals)
            {
                html_totals_header += $"<th>{t.Title}</th>";
                html_totals_value  += $"<td>{(t.Value != 0 ? $"${t.Value:#.##}" : "N/A")}</td>";
            }

            var flags = new Dictionary <string, string>()
            {
                // Order
                { "[FLAG_DATE_EXPEDITION]", DateTime.Today.ToShortDateString() },
                { "[FLAG_FOLIO]", order.ID.ToString() },
                { "[FLAG_DATE_ORDER]", order.DateAdded.ToShortDateString() },
                // Customer
                { "[FLAG_CNAME]", $"{order.Customer.Firstname} {order.Customer.Lastname}" },
                { "[FLAG_TELEPHONE]", $"{order.Customer.Telephone}" },
                { "[FLAG_EMAIL]", $"{order.Customer.Email}" },
                { "[FLAG_INVOICE]", $"{order.InvoicePrefix}{order.InvoiceNo}" },
                { "[FLAG_PAYMETHOD]", order.PaymentMethod.ToString() },
                { "[FLAG_SHIPMETHOD]", order.ShippingMethod.ToString() },
                // Payment
                { "[FLAG_PAYMENT_NAME]", $"{order.PaymentAddress.Firstname} {order.PaymentAddress.Lastname}" },
                { "[FLAG_PAYMENT_COMPANY]", order.PaymentAddress.Company },
                { "[FLAG_PAYMENT_ADDRESS]", order.PaymentAddress.Address1 },
                { "[FLAG_PAYMENT_CITY]", order.PaymentAddress.City },
                { "[FLAG_PAYMENT_POSTCODE]", order.PaymentAddress.Postcode },
                { "[FLAG_PAYMENT_ZONE]", order.PaymentAddress.Zone.ToString() },
                { "[FLAG_PAYMENT_COUNTRY]", order.PaymentAddress.Country.ToString() },
                // Shipping
                { "[FLAG_SHIPPING_NAME]", $"{order.ShippingAddress.Firstname} {order.ShippingAddress.Lastname}" },
                { "[FLAG_SHIPPING_COMPANY]", order.ShippingAddress.Company },
                { "[FLAG_SHIPPING_ADDRESS]", order.ShippingAddress.Address1 },
                { "[FLAG_SHIPPING_CITY]", order.ShippingAddress.City },
                { "[FLAG_SHIPPING_POSTCODE]", order.ShippingAddress.Postcode },
                { "[FLAG_SHIPPING_ZONE]", order.ShippingAddress.Zone.ToString() },
                { "[FLAG_SHIPPING_COUNTRY]", order.ShippingAddress.Country.ToString() },
                // Products
                { "[FLAG_PRODS]", html_products },
                // Totals
                { "[FLAG_TOTALS_HEADER]", html_totals_header },
                { "[FLAG_TOTALS_VALUE]", html_totals_value },
                { "[FLAG_IVA]", "16%" }
            };

            foreach (var flag in flags)
            {
                html = html.Replace(flag.Key, flag.Value);
            }

            return(html);
        }
Exemple #24
0
        private static void BuildBody(TicketDocument ticket, OrderDataModel order)
        {
            CustomerModel customer = order.Customer;

            ticket.TextLocationMode = TextTicketLocation.Body;
            ticket.SideText("Fecha de expedición:", DateTime.Today.ToShortDateString());
            ticket.SideText("Fecha de venta:", order.DateAdded.ToShortDateString());
            ticket.SideText("Folio:", $"#{order.ID}");
            ticket.Separator(TicketSeparator.Dash);

            // Cliente
            ticket.CenterText("[Datos del cliente]");
            ticket.LeftText($"Nombre: {customer.Firstname} {customer.Lastname}");
            if (!string.IsNullOrWhiteSpace(customer.Email))
            {
                ticket.LeftText($"Email: {customer.Email}");
            }

            ticket.Separator(TicketSeparator.Asterisk);

            // Venta
            ticket.CenterText("[Datos de venta]");
            ticket.SideText("Método de pago:", order.PaymentMethod.ToString());
            ticket.SideText("Método de envío:", order.ShippingMethod.ToString());
            ticket.Separator(TicketSeparator.Blank);
            ticket.Separator(TicketSeparator.Dash);
            ticket.LeftText("Producto\tP/U\tCant\tTotal");
            ticket.Separator(TicketSeparator.Dash);

            // Productos
            StringBuilder serials    = new StringBuilder();
            bool          hasSerials = false;

            foreach (OrderProductModel op in order.Cart)
            {
                string prod = (op.Name.Length < 8) ? op.Name.PadRight(8) : op.Name.Substring(0, 8);

                ticket.LeftText($"-{prod}\t${op.Price:#.##}\t{op.Quantity}\t${op.Total:#.##}");

                if (op.SerialNumbers.Count() > 0)
                {
                    hasSerials = true;
                    foreach (ProductSerialModel serial in op.SerialNumbers)
                    {
                        serials
                        .Append($"-{prod} {serial.SerialNumber}"
                                .PadRight(TicketLen))
                        .Append($"{serial.DateStart.ToShortDateString()} {serial.DateEnd.ToShortDateString()}"
                                .PadRight(TicketLen));
                    }
                }
            }
            if (hasSerials)
            {
                ticket.Separator(TicketSeparator.Dash);
                // Serials
                ticket.CenterText("# Serie | Garantía");
                ticket.Separator(TicketSeparator.Blank);
                ticket.LeftText(serials.ToString());
            }

            ticket.Separator(TicketSeparator.Dash);

            // Totales
            var orderTotals = order.OrderTotals.OrderBy(o => o.SortOrder);

            foreach (OrderTotalModel ot in orderTotals)
            {
                ticket.RightText($"{ot.Title}: {((ot.Value != 0) ? $"{ot.Value:#.##}" : "N/A")}");
            }
            ticket.RightText($"IVA: 16%");
            ticket.Separator(TicketSeparator.Dash);
        }
Exemple #25
0
        public static void PrintTicket(string document_name, PrinterSettings settings, OrderDataModel order, int font_size = 8)
        {
            TicketDocument ticket = new TicketDocument(document_name, font_size, TicketLen)
            {
                Logo = Properties.Resources.logotipo
            };

            ticket.PrinterSettings = settings;

            BuildHeader(ticket);
            BuildBody(ticket, order);
            BuildFooter(ticket);

            ticket.Print();
        }
Exemple #26
0
        public async Task <IActionResult> GetTable(FilterModel[] Filters, OrderDataModel OrderData, int pages)
        {
            #region Logging
            if (Filters != null && Filters.Count() > 0)
            {
                string parameters = JsonConvert.SerializeObject(new { Filters, OrderData });
                sql.LogAsync("Filter Applied", DateTime.Now, User.Identity.Name, parameters);
            }
            #endregion

            StringBuilder WhereClause = new StringBuilder("WHERE ");

            #region Initial Column Data
            string ColumnNamesQuery = @"SELECT COLUMNS.COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'arkiv' AND COLUMN_NAME NOT IN (
                                            SELECT [Column] FROM ColumnBlacklist
                                        )";

            IEnumerable <ColumnNameModel> ColumnNames = await sql.SelectDataAsync <ColumnNameModel>(ColumnNamesQuery).ConfigureAwait(false);

            List <SelectListItem> ColumnNamesSelectList = ColumnNames.Select(x => new SelectListItem()
            {
                Value = x.COLUMN_NAME, Text = x.COLUMN_NAME
            }).ToList();
            #endregion

            #region Active Directory account checking
            bool ClearWhereFlag = false;

            IEnumerable <ActiveModel> ActiveDirectoryGroupModel = await sql.SelectDataAsync <ActiveModel>("SELECT * FROM active").ConfigureAwait(false);

            IEnumerable <string> Groups = GetUserGroups();

            IEnumerable <string> SortedGroups = (from model in ActiveDirectoryGroupModel where Groups.Any(g => g == model.Group) select model.DEVI);

            List <(string, object)> ParamList = new List <(string, object)>();

            if (SortedGroups.Count() > 0)
            {
                WhereClause.Append("(");
                for (int i = 0; i < SortedGroups.Count(); i++)
                {
                    if (i < SortedGroups.Count() && i > 0)
                    {
                        WhereClause.Append(" OR ");
                    }

                    WhereClause.Append("DEVI = @DEVI" + i);
                    ParamList.Add(("@DEVI" + i, SortedGroups.ElementAt(i)));
                }

                WhereClause.Append(")");
            }
            else
            {
                ClearWhereFlag = true;
            }
            #endregion

            #region Filtering
            if (Filters.Count() > 0)
            {
                if (SortedGroups.Count() != 0)
                {
                    WhereClause.Append(" AND ");
                }

                (string, (string, object)[])items = await GetFiltersToQueriesAsync(Filters).ConfigureAwait(false);
        public async Task PostOrderAsync(string ordersUri, OrderDataModel order)
        {
            RESTClientService <OrderDataModel> restClientService = new RESTClientService <OrderDataModel>();

            var item = await restClientService.PostAsync(ordersUri, order);
        }
        public OrderBLModel GetOrderByCustomerId(int id)
        {
            OrderDataModel order = _unitOfWork.OrderRepository.GetAll().FirstOrDefault(p => p.CustomerId == id);

            return(Mapper.Map <OrderBLModel>(order));
        }
Exemple #29
0
        /// <summary>
        /// 接单信息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        private Tuple <OrderDataModel, List <string> > CreatOrderInfo(HomeRequest request)
        {
            #region 查询条件
            var where = new Where <TbOrderProgress>();
            //组织机构
            if (!string.IsNullOrWhiteSpace(request.SiteCode))
            {
                List <string> SiteList = _WorkOrderLogic.GetCompanyWorkAreaOrSiteList(request.SiteCode, 5);
                if (SiteList.Count > 0)
                {
                    where.And(p => p.SiteCode.In(SiteList));
                }
            }
            if (!string.IsNullOrEmpty(request.ProcessFactoryCode))
            {
                where.And(p => p.ProcessFactoryCode == request.ProcessFactoryCode);
            }

            where.And(new WhereClip("(YEAR(DistributionTime)=" + request.DayMonth.Year + " and MONTH(DistributionTime)=" + request.DayMonth.Month + ") or (DistributionTime<'" + request.DayMonth + "' and (ProcessingState!='Finishing'))"));

            #endregion

            var retData  = new OrderDataModel();
            var codeList = new List <string>();
            //订单信息
            var orderList = GetOverReceiveData(request);
            if (orderList.Item1.Any())
            {
                var receiveList = orderList.Item1.Where(p => p.InsertTime.Month == request.DayMonth.Month).ToList();
                retData.OrderCount = receiveList.Count;
                retData.OrderTotal = receiveList.Sum(p => p.WeightTotal);
                retData.TotalCount = orderList.Item1.GroupBy(p => p.ParentCompanyCode).Count();
                codeList.AddRange(receiveList.Select(p => p.OrderCode).ToList());
            }
            if (orderList.Item2.Any())
            {
                var overList = orderList.Item2.Where(p => p.FinishTime.Value.Month == request.DayMonth.Month).ToList();
                retData.OverTotal = overList.Sum(p => p.WeightSmallPlan);
                retData.OverCount = overList.Select(p => p.OrderCode).Distinct().Count();
                codeList.AddRange(overList.Select(p => p.OrderCode).ToList());
            }
            //计划完成
            var planOrderList = Db.Context.From <TbOrderProgress>()
                                .Select(TbOrderProgress._.ProcessingState, TbOrderProgress._.OrderCode, TbOrderProgress._.FinishProcessingDateTime, TbOrderProgress._.DistributionTime, TbOrderProgress._.SiteCode)
                                .Where(where).ToList();
            var orderCodeList = planOrderList.Select(p => p.OrderCode).ToList();
            codeList.AddRange(orderCodeList);
            var orderDetailList = Repository <TbWorkOrderDetail> .Query(p => p.OrderCode.In(orderCodeList) && p.DaetailWorkStrat == "未加工").ToList();

            if (orderDetailList.Any())
            {
                retData.PlanCount = planOrderList.Count;
                retData.PlanTotal = orderDetailList.Sum(p => p.WeightSmallPlan);
            }
            //未完成
            retData.NotOver = planOrderList.Count(p => p.ProcessingState != "Finishing");
            //滞后
            codeList = codeList.Distinct().ToList();
            var lag = GetLagData(orderCodeList);
            retData.Lag       = lag.Number;
            retData.LagCount  = lag.TotalCount;
            retData.LagWeight = lag.TotalWeight;
            return(new Tuple <OrderDataModel, List <string> >(retData, codeList));
        }
        public async Task <List <OrderDataModel> > GetOrdersDataModelAsync(UserInformerOption dataOption)
        {
            ApplicationUser userWorker = await GetUserWorkerAsync();

            if (userWorker == null)
            {
                return(null);
            }

            WorkerSetting workerSetting = await GetWorkerSetting(userWorker);

            List <Order> newOrders = new List <Order>();

            if (dataOption == UserInformerOption.All || dataOption == UserInformerOption.New)
            {
                newOrders = await Context.Orders.Include(o => o.Location)
                            .Where(o => o.StatusId == (int)OrderStatus.Active &&
                                   o.Location.CityId == workerSetting.CityId &&
                                   workerSetting.DistrictIds.Contains(o.Location.DistrictId))
                            .Include(o => o.OrderDetails)
                            .ToListAsync();
            }

            List <Order> workOrders = new List <Order>();

            if (dataOption == UserInformerOption.All || dataOption == UserInformerOption.Work)
            {
                workOrders = await Context.Orders
                             .Include(o => o.User).Include(o => o.Location)
                             .Where(o => o.WorkerId == userWorker.Worker.Id &&
                                    o.StatusId == (int)OrderStatus.InProgress &&
                                    o.Location.CityId == workerSetting.CityId)
                             .Include(o => o.OrderDetails)
                             .ToListAsync();
            }

            Context.Districts.Where(d => d.CityId == workerSetting.CityId).Load();
            Context.Categories.Where(c => c.ParentId != null && workerSetting.CategoryIds.Contains(c.Id)).Load();
            Context.Services.Where(s => workerSetting.CategoryIds.Contains(s.CategoryId)).Load();

            List <OrderDataModel> orders = null;

            switch (dataOption)
            {
            case UserInformerOption.All: orders = new List <OrderDataModel>(newOrders.Count + workOrders.Count);
                foreach (var item in newOrders)
                {
                    OrderDataModel orderDM = new OrderDataModel
                    {
                        Id             = item.Id,
                        Number         = item.Number,
                        Date           = item.Date.ToString(),
                        CategoryName   = item.Category.Name,
                        ClientCity     = item.Location.City.Name,
                        ClientDistrict = item.Location.District.Name,
                        ClientAddress  = item.Location.Address,
                        ClientPhone    = item.User.PhoneNumber,
                        Description    = item.Description,
                        OrderDetails   = item.OrderDetails.Select(o => new OrderDetailDataModel {
                            Quantity = o.Quantity, SeviceName = o.Service.Name
                        }).ToList(),
                        TotalCost = item.TotalCost
                    };
                    orders.Add(orderDM);
                }
                foreach (var item in workOrders)
                {
                    OrderDataModel orderDM = new OrderDataModel
                    {
                        Id             = item.Id,
                        Number         = item.Number,
                        Date           = item.Date.ToString(),
                        CategoryName   = item.Category.Name,
                        ClientCity     = item.Location.City.Name,
                        ClientDistrict = item.Location.District.Name,
                        ClientAddress  = item.Location.Address,
                        ClientPhone    = item.User.PhoneNumber,
                        Description    = item.Description,
                        OrderDetails   = item.OrderDetails.Select(o => new OrderDetailDataModel {
                            Quantity = o.Quantity, SeviceName = o.Service.Name
                        }).ToList(),
                        TotalCost = item.TotalCost
                    };
                    orders.Add(orderDM);
                }
                break;

            case UserInformerOption.New: orders = new List <OrderDataModel>(newOrders.Count);
                foreach (var item in newOrders)
                {
                    OrderDataModel orderDM = new OrderDataModel
                    {
                        Id             = item.Id,
                        Number         = item.Number,
                        Date           = item.Date.ToString(),
                        CategoryName   = item.Category.Name,
                        ClientCity     = item.Location.City.Name,
                        ClientDistrict = item.Location.District.Name,
                        ClientAddress  = "",
                        ClientPhone    = "",
                        Description    = item.Description,
                        OrderDetails   = item.OrderDetails.Select(o => new OrderDetailDataModel {
                            Quantity = o.Quantity, SeviceName = o.Service.Name
                        }).ToList(),
                        TotalCost = item.TotalCost
                    };
                    orders.Add(orderDM);
                }
                break;

            case UserInformerOption.Work: orders = new List <OrderDataModel>(workOrders.Count);
                foreach (var item in workOrders)
                {
                    OrderDataModel orderDM = new OrderDataModel
                    {
                        Id             = item.Id,
                        Number         = item.Number,
                        Date           = item.Date.ToString(),
                        CategoryName   = item.Category.Name,
                        ClientCity     = item.Location.City.Name,
                        ClientDistrict = item.Location.District.Name,
                        ClientAddress  = item.Location.Address,
                        ClientPhone    = item.User.PhoneNumber,
                        Description    = item.Description,
                        OrderDetails   = item.OrderDetails.Select(o => new OrderDetailDataModel {
                            Quantity = o.Quantity, SeviceName = o.Service.Name
                        }).ToList(),
                        TotalCost = item.TotalCost
                    };
                    orders.Add(orderDM);
                }
                break;
            }
            ;


            return(orders);
        }