Exemple #1
0
        /// <summary>
        /// Gets the current list of account executives.
        /// </summary>
        /// <param name="user">The user making the request.</param>
        /// <returns></returns>
        public static List <string> GetAccountExecutiveList(User user)
        {
            List <string> aeList = new List <string>();

            try
            {
                DBConnect connection = ConnectionsMgr.GetSharedConnection(user, _Database.Home);
                {
                    var query = connection.Query("SELECT aename FROM deptdesc GROUP BY aename ORDER BY aename");
                    while (query.Read())
                    {
                        var ae = query.Field(0, "").Trim();
                        if (ae != "")
                        {
                            aeList.Add(ae);
                        }
                    }
                }
                connection.Close();
                aeList.Sort();
            }
            catch (Exception e)
            {
                Log(user, nameof(GetAccountExecutiveList), e);
            }
            return(aeList);
        }
Exemple #2
0
        private static StLookupDict GetStoreInfoLookup(User user, string storePartner, IEnumerable <string> storeList)
        {
            StLookupDict stLookup = new StLookupDict();
            string       compList = storeList.ToSqlValueList();

            try
            {
                DBConnect connection = ConnectionsMgr.GetSharedConnection(user);
                using (var querySt = connection.Select(new[] { BYId, XrefId, STName }, _Table.Stinfo, $"WHERE {Partner}='{storePartner}' AND ({BYId} IN {compList} OR TRIM({XrefId}) IN {compList})"))
                {
                    while (querySt.Read())
                    {
                        string xref   = querySt.FieldByName(XrefId);
                        string byid   = querySt.FieldByName(BYId);
                        string stname = querySt.FieldByName(STName);
                        if (!stLookup.byidDict.ContainsKey(byid))
                        {
                            stLookup.byidDict.Add(byid, stname);
                        }
                        if (!stLookup.xrefDict.ContainsKey(xref))
                        {
                            stLookup.xrefDict.Add(xref, stname);
                        }
                    }
                }
                connection.Close();
            }
            catch (Exception e)
            {
                Log(user, nameof(GetStoreInfoLookup), e);
            }
            return(stLookup);
        }
Exemple #3
0
        /// <summary>
        /// Gets the current list of stores.
        /// </summary>
        /// <param name="user">The user making the request.</param>
        /// <returns></returns>
        public static List <Store> GetStoreList(User user)
        {
            List <Store> stores       = new List <Store>();
            string       sPartner     = user.ActivePartner.SQLEscape();
            string       prtCondition = "";
            string       storePartner = GetStorePartner(sPartner);

            if (sPartner == _Partner.Marines)
            {
                prtCondition = "AND (LENGTH(xrefid)=3 OR LENGTH(xrefid)=5)"; //EXCLUDE 4 CHAR STORES THAT DON'T END IN 'E' OR 'W' (AKA HAVE 4 CHAR XREFID)
            }
            try
            {
                DBConnect connection = ConnectionsMgr.GetSharedConnection(user, _Database.Home);
                using (DBResult res = connection.Select(new[] { STName, BYId }, _Table.Stinfo, $"WHERE partner='{storePartner}' and byid!='' {prtCondition} GROUP BY byid ORDER BY byid,upddate DESC"))
                {
                    while (res.Read())
                    {
                        var s = new Store(res);
                        stores.Add(s);
                    }
                }
                connection.Close();
            }
            catch (Exception e)
            {
                Log(user, nameof(GetStoreList), e);
            }
            return(stores);
        }
Exemple #4
0
        public static List <RetailWeekData> GetRetailWeeks(User user)
        {
            string dateLatest = "";
            List <RetailWeekData> retailWeekList = new List <RetailWeekData>();

            try
            {
                var connectionSalesData = ConnectionsMgr.GetSharedConnection(user, _Database.ESIC);
                {
                    var querySalesDataLatest = connectionSalesData.Select("startdate", tableSales, string.Format("WHERE {0}='{1}' ORDER BY {2} DESC LIMIT 1", _Column.Partner, user.ActivePartner.SQLEscape(), "startdate"));

                    if (querySalesDataLatest.Read())
                    {
                        DateTime temp;
                        if (!DateTime.TryParse(querySalesDataLatest.Field(0), out temp))
                        {
                            dateLatest = DateTime.Now.ToMySQLDateStr();
                        }
                        else
                        {
                            dateLatest = querySalesDataLatest.Field(0);
                        }
                    }
                    else
                    {
                        dateLatest = DateTime.Now.ToMySQLDateStr();
                    }
                }
                connectionSalesData.Close();

                var connectionAdminData = ConnectionsMgr.GetAdminConnection();
                {
                    var resultQueryWeek = connectionAdminData.Select(new[] { columnRetailWeek, columnRetailYear, columnRetailWeekStart, columnRetailWeekEnd }, _Table.RetailCalendar, string.Format("WHERE {0}<'{1}'", columnRetailWeekStart, dateLatest));

                    while (resultQueryWeek.Read())
                    {
                        var date = resultQueryWeek.Field2(2) as DateTime?;
                        if (date != null && date < DateTime.Now)
                        {
                            RetailWeekData retailWeek = new RetailWeekData();
                            retailWeek.Week      = int.Parse(resultQueryWeek.Field(0));
                            retailWeek.Year      = int.Parse(resultQueryWeek.Field(1));
                            retailWeek.WeekStart = resultQueryWeek.Field(2);
                            retailWeek.WeekEnd   = resultQueryWeek.Field(3);
                            retailWeekList.Add(retailWeek);
                        }
                    }
                }
                connectionAdminData.Close();
                retailWeekList.Sort((weekA, weekB) => weekB.CompareTo(weekA));
                return(retailWeekList);
            }
            catch (Exception e)
            {
                ProgramLog.LogError(user, "SalesRequestManager", "GetRetailWeeks", e.Message);
                return(new List <RetailWeekData>());
            }
        }
Exemple #5
0
        public static List <ItemInfo> GetItemData(User user)
        {
            Dictionary <string, QuantityInfo> currentDict = new Dictionary <string, QuantityInfo>();
            List <ItemInfo> _itemTable = new List <ItemInfo>();

            try
            {
                DBConnect connection = ConnectionsMgr.GetSharedConnection(user, _Database.ESIC);
                {
                    using (var reader = connection.Query(string.Format(qFetchCurrDist, user.ActivePartner.SQLEscape())))
                    {
                        while (reader.Read())
                        {
                            string       vendor = reader.Field(0, "").ToString();
                            QuantityInfo cqi    = new QuantityInfo();
                            string       min    = reader.Field(1, "0");
                            string       max    = reader.Field(2, "0");
                            string       reo    = reader.Field(3, "0");
                            cqi.Min     = (int)double.Parse(min);
                            cqi.Max     = (int)double.Parse(max);
                            cqi.Reorder = (int)double.Parse(reo);
                            currentDict.Add(vendor, cqi);
                        }
                    }

                    using (var reader = connection.Query(qFetchBaseDist))
                    {
                        while (reader.Read())
                        {
                            ItemInfo info = new ItemInfo();
                            info.Vendor      = reader.Field(0, "").ToString();
                            info.ItemUPC     = reader.Field(1, "").ToString();
                            info.Description = reader.Field(2, "").ToString();
                            info.Base        = new QuantityInfo()
                            {
                                Min     = int.Parse(reader.Field(3, "0")),
                                Max     = int.Parse(reader.Field(4, "0")),
                                Reorder = int.Parse(reader.Field(5, "0"))
                            };
                            if (currentDict.ContainsKey(info.Vendor))
                            {
                                info.Current = currentDict[info.Vendor];
                            }
                            _itemTable.Add(info);
                            ItemInfo infoCopy = info.Clone();
                        }
                    }
                }
                connection.Close();
                return(_itemTable);
            }
            catch (Exception e)
            {
                ProgramLog.LogError(user, "ItemTable", "GetItemData", e.Message);
                return(new List <ItemInfo>());
            }
        }
Exemple #6
0
        public static string GenerateReport(User user, DateTime startDate, DateTime endDate)
        {
            try
            {
                DBConnect   connection = ConnectionsMgr.GetSharedConnection(user, _Database.ECGB);
                Application app        = new Application();
                app.AutomationSecurity = MsoAutomationSecurity.msoAutomationSecurityForceDisable;
                Workbook  xlWB = app.Workbooks.Add();
                Worksheet ws   = xlWB.Worksheets.Add();
                app.ActiveWindow.SplitRow    = 1;
                app.ActiveWindow.FreezePanes = true;

                //string queryReport = "SELECT sum(d.quantity) AS PidQty,d.unitprice AS GLC,d.chgprice AS MilCost,d.retailprc AS MilRetail,d.vendornum AS PID,trim(h.ponumber) AS contract,trim(h.custorder) AS PO,h.department AS Dept,h.deptname AS Brand,h.arrivdate AS INDCDate" +
                //    " FROM gdetl855 AS d JOIN ghead855 AS h ON d.uniquekey=h.uniquekey WHERE arrivdate BETWEEN '{0}' AND '{1}' GROUP BY d.vendornum,h.ponumber ORDER BY h.ponumber,d.upcnum";
                string queryReport = "SELECT sum(d.quantity) AS PidQty,d.unitprice AS GLC,d.chgprice AS MilCost,d.retailprc AS MilRetail,d.vendornum AS PID,c.COLORCODE, c.ITEMCOLOR,trim(h.ponumber) AS contract,trim(h.custorder) AS PO,h.department AS Dept,h.deptname AS Brand,h.arrivdate AS INDCDate" +
                                     " FROM gdetl855 AS d JOIN ghead855 AS h ON d.uniquekey=h.uniquekey " +
                                     " LEFT join catinfo c on d.VENDORNUM=c.VENDORNUM and d.UPCNUM = c.UPCNUM and h.PONUMBER = c.PONUMBER " +
                                     " WHERE h.arrivdate BETWEEN '{0}' AND '{1}' " +
                                     //" GROUP BY d.vendornum,h.ponumber ORDER BY h.ponumber,d.upcnum";
                                     " GROUP BY h.ponumber,d.vendornum,c.colorcode ORDER BY h.ponumber,d.vendornum,c.colorcode";
                string   formatReport = string.Format(queryReport, startDate.ToString("yyyy-MM-dd"), endDate.ToString("yyyy-MM-dd"));
                DBResult resultReport = connection.Query(formatReport);

                char   colLastLetter = (char)('A' + resultReport.FieldCount - 1);
                string rowLastIndex  = (2 + resultReport.AffectedRows - 1).ToString();

                object[,] reportData = new object[resultReport.AffectedRows, resultReport.FieldCount];
                for (int rowIndex = 0; rowIndex < resultReport.AffectedRows; rowIndex++)
                {
                    resultReport.Read();
                    for (int columnIndex = 0; columnIndex < resultReport.FieldCount; columnIndex++)
                    {
                        reportData[rowIndex, columnIndex] = resultReport.Field2(columnIndex, "'---");
                    }
                }

                var rangeHead = ws.Range["A1", colLastLetter + "1"];
                var rangeBody = ws.Range["A2", colLastLetter + rowLastIndex];
                rangeHead.Value = new[] { "PidQty", "GLC", "MilCost", "MilRetail", "PID", "Color Code", "Color Description", "Contract", "PO #", "Dept.", "Brand", "INDCDate" };
                rangeBody.Value = reportData;
                ws.Columns.AutoFit();
                string diFileName = SiteFileSystem.GetTempFileName();
                xlWB.SaveCopyAs(diFileName);
                xlWB.Close(false);
                string eoToken = Crypt.EncryptFileToFile(user, diFileName);
                File.Delete(diFileName);
                return(eoToken);
            }
            catch (Exception e)
            {
                ProgramLog.LogError(user, "GVMReport", "GenerateReport", e.Message);
                return("");
            }
        }
Exemple #7
0
        private static ShipReport _GenShipReport(User user, string store, List <RetailWeekData> retailWeeks)
        {
            ShipReport shipReport = new ShipReport();

            shipReport.Store     = store.SQLEscape();
            shipReport.Shipments = new List <ShipReportData>();

            var queryShipInfo = string.Format("SELECT {0},{1},IFNULL({2},'')FROM {3}", _Column.UniqueKey, _Column.ShipmentDate, _Column.BOLNumber, _Table.PHead850) +
                                string.Format(" WHERE {0}='{1}' AND {2}='{3}' AND({4})", _Column.Partner, user.ActivePartner.SQLEscape(), _Column.STId, shipReport.Store, string.Join("OR", from week in retailWeeks select string.Format("({0}>='{1}' AND {0}<='{2}')", _Column.ShipmentDate, week.WeekStart.SQLEscape(), week.WeekEnd.SQLEscape())));
            var queryQtyInfo = string.Format("SELECT {0},{1},IFNULL({2},0) FROM {3}", _Column.VendorNum, _Column.UPCNum, _Column.Quantity, _Table.PDetl850);

            try
            {
                var connectionSalesData = ConnectionsMgr.GetSharedConnection(user, _Database.ESIC);
                var result = connectionSalesData.Query(queryShipInfo);

                while (result.Read())
                {
                    ShipReportData srd     = new ShipReportData();
                    string         keyShip = result.Field(0, "");
                    srd.ShipDate       = ((DateTime)result.Field2(1)).ToString("MMM dd, yyyy");
                    srd.TrackingNumber = result.Field(2, "").Trim();
                    srd.Quantity       = 0;
                    srd.Items          = new List <ShipItemInfo>();
                    if (keyShip != "")
                    {
                        var resultQuantity = connectionSalesData.Query(queryQtyInfo + string.Format(" WHERE {0}='{1}'", _Column.UniqueKey, keyShip));
                        while (resultQuantity.Read())
                        {
                            ShipItemInfo itemInfo = new ShipItemInfo();
                            itemInfo.VendorNum = resultQuantity.Field(0);
                            itemInfo.UPCNum    = resultQuantity.Field(1);
                            itemInfo.Quantity  = (int)decimal.Parse(resultQuantity.Field(2));
                            srd.Items.Add(itemInfo);
                        }
                        if (srd.Items.Count > 0)
                        {
                            srd.Quantity = srd.Items.Sum(item => item.Quantity);
                        }
                    }
                    shipReport.Shipments.Add(srd);
                }
                connectionSalesData.Close();
                return(shipReport);
            }
            catch (Exception e)
            {
                ProgramLog.LogError(user, "SalesRequestManager", "_GenShipReport", e.Message);
                return(shipReport);
            }
        }
Exemple #8
0
        private static ResponseType Apply860(User user, string sHeadUniqueKey860)
        {
            try
            {
                DBConnect connection      = ConnectionsMgr.GetSharedConnection(user, _Database.ECGB);
                string    filterUniqueKey = string.Format("WHERE {0}='{1}'", _Column.UniqueKey, sHeadUniqueKey860);
                var       resultCheckHead = connection.Select(new[] { _Column.PONumber, _Column.Purpose }, _Table.Head860, filterUniqueKey);
                if (resultCheckHead.AffectedRows == 0)
                {
                    return(ResponseType.ErrorCPOCouldNotApplyItemChange);
                }
                resultCheckHead.Read();
                string sPONumber = resultCheckHead.Field(0, "");
                string sPurpose  = resultCheckHead.Field(1, "");

                ResponseType resultOperation = ResponseType.ErrorCPOUnknown;

                switch (sPurpose)
                {
                case Code353.Cancel:
                    resultOperation = CancelPO(connection, user, sPONumber);
                    break;

                case Code353.Change:
                    resultOperation = ChangePO(connection, user, sPONumber, sHeadUniqueKey860);
                    break;

                default:
                    resultOperation = ResponseType.ErrorCPOPurposeUnrecognized;
                    break;
                }
                if (resultOperation == ResponseType.SuccessCPO)
                {
                    UpdateHead860ProcFlag(connection, sHeadUniqueKey860, _ProgressFlag.Success);
                }
                else
                {
                    UpdateHead860ProcFlag(connection, sHeadUniqueKey860, _ProgressFlag.Error);
                }
                return(resultOperation);
            }
            catch (Exception e)
            {
                ProgramLog.LogError(user, "ChangePOTracker", "Apply860", e.Message);
                return(ResponseType.ErrorCPOUnknown);
            }
        }
Exemple #9
0
        public static void DoChanges(User user, UpdateData updateData)
        {
            Dictionary <string, string> updateDistroVals = new Dictionary <string, string>()
            {
                { columnReviewSun, updateData.days[0] ? "1" : "0" },
                { columnReviewMon, updateData.days[1] ? "1" : "0" },
                { columnReviewTue, updateData.days[2] ? "1" : "0" },
                { columnReviewWed, updateData.days[3] ? "1" : "0" },
                { columnReviewThu, updateData.days[4] ? "1" : "0" },
                { columnReviewFri, updateData.days[5] ? "1" : "0" },
                { columnReviewSat, updateData.days[6] ? "1" : "0" },
                { columnMinDollars, updateData.minDollars.ToString() },
                { columnDayRange, updateData.dayRange.ToString() }
            };

            try
            {
                DBConnect connection = ConnectionsMgr.GetSharedConnection(user, _Database.ESIC);
                {
                    connection.Update(tableDistroDays, updateDistroVals.ToNameValueCollection(), string.Format("WHERE {0}='{1}'", _Column.Partner, user.ActivePartner.SQLEscape()));

                    foreach (var kvp in updateData.itemInfo)
                    {
                        string qtymin = kvp.Value.Min.ToString();
                        string qtymax = kvp.Value.Max.ToString();
                        string qtyreo = kvp.Value.Reorder.ToString();
                        string vennum = kvp.Key;
                        connection.Query(string.Format(qUpdateItems, vennum.SQLEscape(), qtymin.SQLEscape(), qtymax.SQLEscape(), qtyreo.SQLEscape(), user.ActivePartner.SQLEscape()));
                    }
                }
                connection.Close();
            }
            catch (Exception e)
            {
                ProgramLog.LogError(user, "ItemTable", "DoChanges", e.Message);
            }
        }
Exemple #10
0
        public static List <string> GetStoreList(User user)
        {
            List <string> storeList = new List <string>();

            try
            {
                var connection = ConnectionsMgr.GetSharedConnection(user, _Database.ESIC);
                {
                    var queryStores = connection.Select(_Column.STId, tableStores, string.Format("WHERE {0}='{1}'", _Column.Partner, user.ActivePartner.SQLEscape()));

                    while (queryStores.Read())
                    {
                        storeList.Add(queryStores.Field(0).TrimEnd());
                    }
                }
                connection.Close();
                return(storeList);
            }
            catch (Exception e)
            {
                ProgramLog.LogError(user, "SalesRequestManager", "GetStoreList", e.Message);
                return(new List <string>());
            }
        }
Exemple #11
0
        public static DistroInfo GetDistributionDays(User user)
        {
            DistroInfo distroDays = new DistroInfo();

            try
            {
                DBConnect connection = ConnectionsMgr.GetSharedConnection(user, _Database.ESIC);
                {
                    using (var queryDistroDays = connection.Select(new[] { columnReviewSun, columnReviewMon, columnReviewTue, columnReviewWed, columnReviewThu, columnReviewFri, columnReviewSat, columnMinDollars, columnDayRange }, tableDistroDays, string.Format("WHERE {0}='{1}'", _Column.Partner, user.ActivePartner.SQLEscape())))
                    {
                        if (queryDistroDays.AffectedRows == 0)
                        {
                            ProgramLog.LogError(user, "ItemTable", "GetDistributionDays", string.Format("No distribution data for partner \"{0}\"", user.ActivePartner));
                            return(distroDays);
                        }
                        queryDistroDays.Read();
                        distroDays.IsSunday    = queryDistroDays.Field(0, "0").ToString() != "0";
                        distroDays.IsMonday    = queryDistroDays.Field(1, "0").ToString() != "0";
                        distroDays.IsTuesday   = queryDistroDays.Field(2, "0").ToString() != "0";
                        distroDays.IsWednesday = queryDistroDays.Field(3, "0").ToString() != "0";
                        distroDays.IsThursday  = queryDistroDays.Field(4, "0").ToString() != "0";
                        distroDays.IsFriday    = queryDistroDays.Field(5, "0").ToString() != "0";
                        distroDays.IsSaturday  = queryDistroDays.Field(6, "0").ToString() != "0";
                        distroDays.MinDollars  = int.Parse(queryDistroDays.Field(7, "0"));
                        distroDays.DayRange    = int.Parse(queryDistroDays.Field(8, "0"));
                    }
                }
                connection.Close();
                return(distroDays);
            }
            catch (Exception e)
            {
                ProgramLog.LogError(user, "ItemTable", "GetDistributionDays", e.Message);
                return(distroDays);
            }
        }
Exemple #12
0
        private static List <SalesReport> _GenSalesReport(User user, string storeId, List <RetailWeekData> listQueryWeeks)
        {
            string querySelectSalesData         = "SELECT ihead.vendornum AS vendornum,ibody.unitcost AS unitcost,ibody.unitprice AS unitprice,SUM(IFNULL(onhand.qavailable,0)) as onhand";
            string querySelectSalesDataTemplate = ",SUM(IFNULL(sales{0}.quantity,0))AS sold{0},SUM(IFNULL(orders{0}.quantity,0))AS order{0}";

            string querySalesDataFormat = " FROM(SELECT uniqitem,unitcost,unitprice FROM vmiitem WHERE partner='{0}')AS ibody" +
                                          " LEFT JOIN(SELECT uniquekey,vendornum FROM imaster)AS ihead ON ihead.uniquekey=ibody.uniqitem";
            string queryOnHandFormat          = " LEFT JOIN(SELECT * FROM(SELECT uniqueitem, qavailable, uniquest, updatedt FROM vmioh WHERE partner='{0}' AND uniquest='{1}' ORDER BY enddate DESC) AS onhand0 GROUP BY onhand0.uniqueitem)AS onhand ON ihead.uniquekey=onhand.uniqueitem";
            string queryFromSalesDataTemplate = " LEFT JOIN(SELECT uniqitem,SUM(quantity)AS quantity FROM vmisales WHERE partner='{0}' AND enddate>='{1}' AND enddate<='{2}' {3} GROUP BY uniqitem)AS sales{5} ON sales{5}.uniqitem=ihead.uniquekey" +
                                                " LEFT JOIN(SELECT pd.vendornum AS vendornum,ROUND(SUM(pd.quantity),0)AS quantity FROM(SELECT uniquekey FROM phead850 WHERE partner='{0}' AND podate>='{1}' AND podate<='{2}' {4})AS ph LEFT JOIN pdetl850 AS pd ON ph.uniquekey=pd.uniquekey GROUP BY vendornum)AS orders{5} ON orders{5}.vendornum=ihead.vendornum";
            string             queryFromSalesDataEnd = " GROUP BY ihead.vendornum";
            string             stidComp    = _Column.STId + "='" + storeId.SQLEscape() + "'";
            List <SalesReport> salesReport = new List <SalesReport>();

            try
            {
                var connection = ConnectionsMgr.GetSharedConnection(user, _Database.ESIC);
                {
                    var    queryStoreKeys = connection.Select(_Column.UniqueKey, tableStores, "WHERE " + stidComp);
                    string storeUniqueKey = "";
                    if (queryStoreKeys.Read())
                    {
                        storeUniqueKey = queryStoreKeys.Field(0);
                    }
                    string conditionStoreID  = "AND " + stidComp;
                    string conditionStoreKey = string.Format("AND {0}='{1}'", _Column.UniqueSt, storeUniqueKey);

                    string queryFromSalesData = string.Format(querySalesDataFormat, user.ActivePartner.SQLEscape());
                    queryFromSalesData += string.Format(queryOnHandFormat, user.ActivePartner.SQLEscape(), storeUniqueKey);

                    for (int i = 0; i < listQueryWeeks.Count; i++)
                    {
                        querySelectSalesData += string.Format(querySelectSalesDataTemplate, i);
                        queryFromSalesData   += string.Format(queryFromSalesDataTemplate, user.ActivePartner.SQLEscape(), listQueryWeeks[i].WeekStart, listQueryWeeks[i].WeekEnd, conditionStoreKey, conditionStoreID, i);
                    }

                    string queryCombined = querySelectSalesData + queryFromSalesData + queryFromSalesDataEnd;
                    var    result        = connection.Query(queryCombined);

                    while (result.Read())
                    {
                        SalesReport sr = new SalesReport();
                        sr.VendorNum = result.Field(0);
                        sr.UnitCost  = decimal.Parse(result.Field(1, "0"));
                        sr.UnitPrice = decimal.Parse(result.Field(2, "0"));
                        sr.OnHand    = int.Parse(result.Field(3, "0"));
                        sr.Details   = new List <SaleData>();
                        for (int i = 0; i < listQueryWeeks.Count; i++)
                        {
                            SaleData sd = new SaleData();
                            sd.RetailWeek = listQueryWeeks[i];
                            sd.Sold       = int.Parse(result.Field(4 + (i * 2), "0"));
                            sd.Order      = int.Parse(result.Field(5 + (i * 2), "0"));
                            sr.Details.Add(sd);
                        }
                        salesReport.Add(sr);
                    }
                }
                connection.Close();
                return(salesReport);
            }
            catch (Exception e)
            {
                ProgramLog.LogError(user, "SalesRequestManager", "_GenSalesReport", e.Message);
                return(new List <SalesReport>());
            }
        }
Exemple #13
0
        private static string GenASNReportGeneral(User user, LocationReportDetails reportDetails)
        {
            try
            {
                string sPartner       = user.ActivePartner.SQLEscape();
                string reportTemplate = "SELECT d856.ponumber AS `Mil PO`," +
                                        "gh855.custodate AS `Mil PO Date`," +
                                        "UPPER(DATE_FORMAT(gh855.ARRIVDATE,'%b-%Y')) AS `DC Month`," +
                                        "d856.shipnum AS `ASN #`," +
                                        "TRIM(gd855.vendornum) AS `PID Style`," +
                                        "TRIM(d856.upcnum) AS `UPC #`," +
                                        "TRIM(c.colorcode) AS `Color Code`," +
                                        "TRIM(c.itemcolor) AS `Color Decription`," +
                                        "d856.cartid AS `Carton ID`," +
                                        "TRIM(d.category) AS `Category`," +
                                        "TRIM(IFNULL(c.branddesc,d.deptname)) AS `Brand Name`," +
                                        "TRIM(c.scategory) AS `Sub Category`," +
                                        "TRIM(c.prodclass) AS `Class`," +
                                        "TRIM(c.sprodclass) AS `Sub Class`," +
                                        "TRIM(c.itemdesc) AS `Description`," +
                                        "ROUND(gd855.unitprice * SUM(d856.shpunits),2) AS `GLC`," +
                                        "ROUND(gd855.chgprice * SUM(d856.shpunits),2) AS `Mil Cost`," +
                                        "ROUND(gd855.retailprc * SUM(d856.shpunits),2) AS `Mil Retail`," +
                                        "gh855.fobtype AS `East/West`," +
                                        "d856.byid AS `Store #`," +
                                        "s.stname AS `Store Name`," +
                                        "h856.shipdate AS `Ship Date`," +
                                        "ROUND(SUM(d856.ordunits)) AS `On Order`," +
                                        "ROUND(SUM(d856.shpunits)) AS `Shipped`," +
                                        "gh855.department AS `MMG Dept.`," +
                                        "{0} AS `Buyer Name`," +
                                        "d.aename AS `Account Executive`" +
                                        //" FROM(SELECT uniquekey,shipdate,bolnumber FROM ecgb.head856 WHERE partner='{1}' AND shipdate>='{2}' AND shipdate<='{3}') AS h856" +
                                        //" JOIN ecgb.detl856 AS d856 ON h856.uniquekey=d856.uniquekey" +
                                        " FROM(SELECT uniquekey,shipdate,bolnumber FROM mrsk3pl.head856 WHERE partner IN {1} AND shipdate>='{2}' AND shipdate<='{3}') AS h856" +
                                        " JOIN mrsk3pl.detl856 AS d856 ON h856.uniquekey=d856.uniquekey and !isnull(d856.invoiceno)" +
                                        GetJoinThla(user.ActivePartner) +
                                        " JOIN ecgb.ghead855 AS gh855 ON gh855.custorder=d856.ponumber" +
                                        " LEFT JOIN temp.xdept AS d ON d.department=gh855.department" +
                                        " LEFT JOIN ecgb.gdetl855 AS gd855 ON gd855.uniquekey=gh855.uniquekey" +
                                        " AND gd855.upcnum=d856.upcnum" +
                                        //" AND gd855.vendornum=d856.vendornum" + /* UPDATE FROM NEIL: We don't need to match Vendornum here since we're using ponumber + upcnum already */
                                        " LEFT JOIN ecgb.catinfo AS c ON c.ponumber = gh855.ponumber" +
                                        " AND c.upcnum=gd855.upcnum" +
                                        " AND c.vendornum=gd855.vendornum" +
                                        " LEFT JOIN temp.xstore AS s ON {4}" +
                                        " WHERE " + GetConditionThla(user.ActivePartner) + " AND {5}" +
                                        " GROUP BY h856.shipdate,d856.shipnum,d856.upcnum,d856.cartid,d856.ponumber,d856.podate,gd855.vendornum,gd855.itemdesc,d856.byid,d.aename,{0},gh855.department;";
                LocPrtSpecific prtInfo = GetPartnerProperties(sPartner);

                string conditionDetail = GetConditionDetail(prtInfo, reportDetails, user.ActivePartner);

                string formatReport = string.Format(reportTemplate, prtInfo.BuyerName, GetPartnerQueryStr(user).ToSqlValueList(), reportDetails.StartDate.ToString("yyyy-MM-dd"), reportDetails.EndDate.ToString("yyyy-MM-dd"), prtInfo.StoreJoin, conditionDetail);
                //string formatReport = string.Format(reportTemplate, prtInfo.BuyerName, user.ActivePartner.SQLEscape(), reportDetails.StartDate.ToString("yyyy-MM-dd"), reportDetails.EndDate.ToString("yyyy-MM-dd"), prtInfo.StoreJoin, conditionDetail);

                var header = new[] { "Mil PO", "Mil PO Date", "DC Month", "ASN #", "PID Style", "UPC #", "Color Code", "Color Description", "Carton ID", "Category", "Brand Name", "Sub Category", "Class", "Sub Class", "Description", "GLC", "Mil Cost", "Mil Retail", "East/West", "Store #", "Store Name", "Ship Date", "On Order", "Shipped", "MMG Dept.", "Buyer Name", "Account Executive" };

                int colCount = 0;
                int rowCount = 0;
                object[,] reportData = null;

                DBConnect connection = ConnectionsMgr.GetSharedConnection(user, _Database.ECGB);
                if (!CreateTempStoreTable(user, connection, reportDetails))
                {
                    return("");
                }
                if (!CreateTempDeptTable(user, connection))
                {
                    return("");
                }

                using (var resultReport = connection.Query(formatReport))
                {
                    colCount   = resultReport.FieldCount;
                    rowCount   = resultReport.AffectedRows;
                    reportData = CopyResultDataToArray(resultReport);
                }

                return(SaveReportToExcelFile(user, header, reportData, rowCount, colCount, new[] { "P:P", "Q:Q", "R:R" }));
            }
            catch (Exception e)
            {
                Log(user, nameof(GenASNReportGeneral), e);
                return("");
            }
        }
Exemple #14
0
        private static string GenLocationReportANAS(User user, LocationReportDetails reportDetails)
        {
            try
            {
                string sCustomer      = user.Customer.SQLEscape();
                string sPartner       = user.ActivePartner.SQLEscape();
                string reportTemplate = "SELECT shipmonth AS `Ship Month`," +
                                        "shipdate AS `Ship Date`," +
                                        "ponumber AS `PO #`," +
                                        "podate AS `PO Date`," +
                                        "canceldate AS `Cancel Date`," +
                                        "stid AS `STID`," +
                                        "stname AS `Ship To Name`," +
                                        "SUM(quantity) AS `Quantity`," +
                                        "vendornum AS `Vendor #`," +
                                        "upcnum AS `UPC #`," +
                                        "itemdesc AS `Item Description`," +
                                        "SUM(CAST(unitprice AS DECIMAL(14,2))) AS `Unit Price`," +
                                        "SUM(CAST(lineprice AS DECIMAL(14,2))) AS `Extended Price`" +
                                        "FROM" +
                                        "(SELECT DATE_FORMAT(h810.shipdate,'%M %Y') AS shipmonth," +
                                        "h810.shipdate AS shipdate," +
                                        "h810.ponumber AS ponumber," +
                                        "h810.podate AS podate," +
                                        "h850.canceldate AS canceldate," +
                                        "h810.stid AS stid," +
                                        "s.stname AS stname," +
                                        "ROUND(d810.quantity) AS quantity," +
                                        "TRIM(d810.vendornum) AS vendornum," +
                                        "d810.upcnum AS upcnum," +
                                        "d850.itemdesc AS itemdesc," +
                                        "d810.unitprice AS unitprice," +
                                        "d810.unitprice * d810.quantity AS lineprice" +
                                        " FROM (SELECT uniquekey,uniquepo,shipdate,ponumber,podate,stid,byid FROM ecgb.trxh810 WHERE customer='{0}' AND partner='ANAS' AND shipdate>='{1}' AND shipdate<='{2}') AS h810" +
                                        " JOIN ecgb.trxd810 AS d810 ON h810.uniquekey=d810.uniquekey AND !isnull(d810.invoiceno)" +
                                        " LEFT JOIN srch850 AS h850 ON h810.uniquepo=h850.uniquekey" +
                                        " LEFT JOIN srcd850 AS d850 ON h850.uniquekey=d850.uniquekey AND d810.uniqpoitem=d850.uniqueitem" +
                                        " LEFT JOIN temp.xstore AS s ON h810.byid=s.byid" +
                                        " WHERE {3}" +
                                        " GROUP BY ponumber,vendornum,upcnum,h810.byid,shipdate)" +
                                        " AS st GROUP BY ponumber,vendornum,upcnum,shipdate;";

                LocPrtSpecific prtInfo = GetPartnerProperties(sPartner);

                string conditionDetail = GetConditionDetail(prtInfo, reportDetails, sPartner);

                string formatReport = string.Format(reportTemplate, sCustomer, reportDetails.StartDate.ToMySQLDateStr(), reportDetails.EndDate.ToMySQLDateStr(), conditionDetail);

                var header = new[] { "Ship Month", "Ship Date", "PO #", "PO Date", "Cancel Date", "STID", "Ship To Name", "Quantity", "Vendor #", "UPC #", "Item Description", "Unit Price", "Extended Price" };

                int colCount = 0;
                int rowCount = 0;
                object[,] reportData = null;

                List <List <string> > storeNameData = new List <List <string> >();
                {
                    string condStore = "";
                    if (reportDetails.Stores.Count > 0)
                    {
                        condStore = string.Format("AND byid IN {0}", reportDetails.Stores.ToSqlValueList());
                    }

                    DBConnect connectionSHR = ConnectionsMgr.GetSharedConnection(user, _Database.Home);
                    using (var queryStore = connectionSHR.Select("byid,stname", _Table.Stinfo, string.Format("WHERE partner='NAVY' {0} GROUP BY byid", condStore)))
                    {
                        while (queryStore.Read())
                        {
                            storeNameData.Add(new List <string>()
                            {
                                queryStore.Field(0), queryStore.Field(1)
                            });
                        }
                    }
                    connectionSHR.Close();
                }

                DBConnect connection = ConnectionsMgr.GetOCConnection(user, _Database.ECGB);

                if (!CreateTempStoreTableFromData(user, connection, storeNameData))
                {
                    return("");
                }

                using (var resultReport = connection.Query(formatReport))
                {
                    colCount   = resultReport.FieldCount;
                    rowCount   = resultReport.AffectedRows;
                    reportData = CopyResultDataToArray(resultReport);
                }

                return(SaveReportToExcelFile(user, header, reportData, rowCount, colCount, new[] { "L:L", "M:M" }));
            }
            catch (Exception e)
            {
                Log(user, nameof(GenLocationReportANAS), e);
                return("");
            }
        }