示例#1
0
        public List <ShirtInfo> getItemCount(string type)
        {
            DataAccessLayer.AssemblyDB.Assembly assembly = new DataAccessLayer.AssemblyDB.Assembly();
            List <int> ids = (from cat in dbBCS.Categories
                              where cat.Name == type
                              join fab in dbBCS.OTISIdsToFabIds on cat.ID equals fab.CatID
                              select fab.FabID).ToList();

            var q1 = from inv in assembly.InvoiceDetails
                     where ids.Contains(inv.GarmentID)
                     join auto in assembly.AutoSorts on inv.ArticleCode equals auto.ArticleCode
                     where DbFunctions.TruncateTime(auto.DueDate) == DateTime.Today
                     select new ShirtInfo {
                articleID = inv.ArticleCode, invoiceID = inv.InvoiceID, dueDate = auto.DueDate
            };


            return(q1.ToList());
        }
示例#2
0
        public List <GarmentIds> getTypes()
        {
            DataAccessLayer.AssemblyDB.Assembly assembly = new DataAccessLayer.AssemblyDB.Assembly();
            assembly.Database.Log = Console.Write;
            List <DataAccessLayer.AssemblyDB.InvoiceDetail> distinctPeople = assembly.InvoiceDetails
                                                                             .GroupBy(p => p.GarmentID)
                                                                             .Select(g => g.FirstOrDefault())
                                                                             .ToList();
            List <GarmentIds> gids = new List <GarmentIds>();

            foreach (DataAccessLayer.AssemblyDB.InvoiceDetail inv in distinctPeople)
            {
                GarmentIds g1 = new GarmentIds()
                {
                    garmentID = inv.GarmentID, desc = inv.DetailDesc
                };
                gids.Add(g1);
            }

            return(gids);
        }
示例#3
0
        public List <missingPieceInfo> FindMissingOrders(string storeName)
        {
            DataAccessLayer.AssemblyDB.Assembly assembly    = new DataAccessLayer.AssemblyDB.Assembly();
            ConnectionStringSettingsCollection  connections = ConfigurationManager.ConnectionStrings;
            string StoreConnectionString = connections["StoreContext"].ConnectionString;

            db1OTS = new StoreContext(StoreConnectionString);
            //      List<Invoice> invs = assembly.Invoices.Take(10).ToList();
            StoreConnectionString = connections["Store2Context"].ConnectionString;
            db2OTS = new StoreContext(StoreConnectionString);
            StoreConnectionString = connections["Store3Context"].ConnectionString;
            db3OTS = new StoreContext(StoreConnectionString);
            StoreConnectionString = connections["Store4Context"].ConnectionString;
            db4OTS = new StoreContext(StoreConnectionString);

            List <missingPieceInfo> miss = new List <missingPieceInfo>();
            DateTime prev = DateTime.Today.AddDays(-1);
            List <DataAccessLayer.AssemblyDB.Invoice> allInvoices = (from inv in assembly.Invoices
                                                                     where DbFunctions.TruncateTime(inv.InvoiceDate) >= prev
                                                                     select inv).ToList();


            var invsGroupedByOrderID = from inv2 in allInvoices
                                       group inv2 by inv2.OrderID into groupedinvs
                                       select groupedinvs;

            foreach (var AssemblyInvGroup in invsGroupedByOrderID)
            {
                int storeid = AssemblyInvGroup.First().StoreID;
                dbOTS = db1OTS;
                switch (storeid)
                {
                case 2:
                    dbOTS = db2OTS;
                    break;

                case 3:
                    dbOTS = db3OTS;
                    break;

                case 4:
                    dbOTS = db4OTS;
                    break;
                }

                var ordersGroup = from order in dbOTS.OrderDetails
                                  where AssemblyInvGroup.Key == order.OrderID
                                  group order by order.OrderID into groupedby
                                  select groupedby;
                if (ordersGroup.Count() > 0)
                {
                    foreach (var group in ordersGroup)
                    {
                        int piecesInOrders = (int)group.Sum(o => o.Pieces);
                        DataAccessLayer.AssemblyDB.Invoice inv = AssemblyInvGroup.First();
                        if (group.Sum(o => o.Pieces) != AssemblyInvGroup.Sum(i => i.Pieces))
                        {
                            missingPieceInfo info = new missingPieceInfo()
                            {
                                orderid     = AssemblyInvGroup.Key,
                                numInvoiced = (int)AssemblyInvGroup.Sum(i => i.Pieces),
                                numOrders   = piecesInOrders,
                                storeid     = inv.StoreID,
                                date        = inv.InvoiceDate.ToString()
                            };
                            //before we mark this as an error, the clerk might have generated another invoice for this order to make up for
                            //an error on their part so check if there are multiple invoices for this customer
                            List <AssemblyDB.Invoice> inerror = (from inv1 in allInvoices
                                                                 where inv1.CustomerID == inv.CustomerID

                                                                 select inv1).ToList();
                            if (inerror.Count > 1)  //must be more than one to bother checking
                            {
                                int TotalCount = (int)inerror.Sum(o => o.Pieces);
                                if (TotalCount != piecesInOrders)
                                {
                                    miss.Add(info);
                                }
                            }
                            else
                            {
                                miss.Add(info);
                            }
                        }
                    }
                }
            }

            return(miss.OrderBy(o => o.storeid).ToList());;
        }