Esempio n. 1
0
        public ActionResult ExportReport(string from, string to, string cus_id, string status)
        {
            var order          = new ORDERED();
            var orderReport    = new OrderReport();
            var lstOrderReport = new List <OrderReport>();

            var fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
            var list     = order.GetSumExport(from.Trim(), to.Trim(), cus_id.Trim(), status.Trim());

            var orderKinds = list.Select(o => o.ORD_USAGE).Distinct().ToList();

            foreach (var kind in orderKinds)
            {
                var salesTeamResult           = orderReport.GetRowsBySalesAndKind(list, "Sales Team", kind);
                var solutionTeamResult        = orderReport.GetRowsBySalesAndKind(list, "Solution Sales", kind);
                var solutionImproveTeamResult = orderReport.GetRowsBySalesAndKind(list, "Solution Improvement ", kind);
                if (salesTeamResult != null)
                {
                    lstOrderReport.AddRange(salesTeamResult);
                }
                if (solutionTeamResult != null)
                {
                    lstOrderReport.AddRange(solutionTeamResult);
                }
                if (solutionImproveTeamResult != null)
                {
                    lstOrderReport.AddRange(solutionImproveTeamResult);
                }

                var sumRow = new OrderReport();
                sumRow.Name         = kind;
                sumRow.InQuiryTotal = (from o in lstOrderReport where o.Usage != null && o.Usage.Contains(kind) select o.InQuiryTotal).Sum();
                sumRow.InQuiry200   = (from o in lstOrderReport where o.Usage != null && o.Usage.Contains(kind) select o.InQuiry200).Sum();
                sumRow.InQuiry300   = (from o in lstOrderReport where o.Usage != null && o.Usage.Contains(kind) select o.InQuiry300).Sum();
                sumRow.InQuiry400   = (from o in lstOrderReport where o.Usage != null && o.Usage.Contains(kind) select o.InQuiry400).Sum();

                sumRow.ContractTotal = (from o in lstOrderReport where o.Usage != null && o.Usage.Contains(kind) select o.ContractTotal).Sum();
                sumRow.Contract200   = (from o in lstOrderReport where o.Usage != null && o.Usage.Contains(kind) select o.Contract200).Sum();
                sumRow.Contract300   = (from o in lstOrderReport where o.Usage != null && o.Usage.Contains(kind) select o.Contract300).Sum();
                sumRow.Contract400   = (from o in lstOrderReport where o.Usage != null && o.Usage.Contains(kind) select o.Contract400).Sum();
                lstOrderReport.Add(sumRow);
            }
            var Total = new OrderReport();

            Total.Name         = "Grand Total";
            Total.InQuiryTotal = (from o in lstOrderReport where o.CUSTOMER_ID == null select o.InQuiryTotal).Sum();
            Total.InQuiry200   = (from o in lstOrderReport where o.CUSTOMER_ID == null select o.InQuiry200).Sum();
            Total.InQuiry300   = (from o in lstOrderReport where o.CUSTOMER_ID == null select o.InQuiry300).Sum();
            Total.InQuiry400   = (from o in lstOrderReport where o.CUSTOMER_ID == null select o.InQuiry400).Sum();

            Total.ContractTotal = (from o in lstOrderReport where o.CUSTOMER_ID == null select o.ContractTotal).Sum();
            Total.Contract200   = (from o in lstOrderReport where o.CUSTOMER_ID == null select o.Contract200).Sum();
            Total.Contract300   = (from o in lstOrderReport where o.CUSTOMER_ID == null select o.Contract300).Sum();
            Total.Contract400   = (from o in lstOrderReport where o.CUSTOMER_ID == null select o.Contract400).Sum();

            var saleTeamTotal = new OrderReport();

            saleTeamTotal.Name         = "Sales Team Total";
            saleTeamTotal.InQuiryTotal = (from o in lstOrderReport where o.Name.Contains("Sales Team") select o.InQuiryTotal).Sum();
            saleTeamTotal.InQuiry200   = (from o in lstOrderReport where o.Name.Contains("Sales Team") select o.InQuiry200).Sum();
            saleTeamTotal.InQuiry300   = (from o in lstOrderReport where o.Name.Contains("Sales Team") select o.InQuiry300).Sum();
            saleTeamTotal.InQuiry400   = (from o in lstOrderReport where o.Name.Contains("Sales Team") select o.InQuiry400).Sum();

            saleTeamTotal.ContractTotal = (from o in lstOrderReport where o.Name.Contains("Sales Team") select o.ContractTotal).Sum();
            saleTeamTotal.Contract200   = (from o in lstOrderReport where o.Name.Contains("Sales Team") select o.Contract200).Sum();
            saleTeamTotal.Contract300   = (from o in lstOrderReport where o.Name.Contains("Sales Team") select o.Contract300).Sum();
            saleTeamTotal.Contract400   = (from o in lstOrderReport where o.Name.Contains("Sales Team") select o.Contract400).Sum();

            var solutionTeamTotal = new OrderReport();

            solutionTeamTotal.Name         = "Solution Sales Total";
            solutionTeamTotal.InQuiryTotal = (from o in lstOrderReport where o.Name.Contains("Solution Sales") select o.InQuiryTotal).Sum();
            solutionTeamTotal.InQuiry200   = (from o in lstOrderReport where o.Name.Contains("Solution Sales") select o.InQuiry200).Sum();
            solutionTeamTotal.InQuiry300   = (from o in lstOrderReport where o.Name.Contains("Solution Sales") select o.InQuiry300).Sum();
            solutionTeamTotal.InQuiry400   = (from o in lstOrderReport where o.Name.Contains("Solution Sales") select o.InQuiry400).Sum();

            solutionTeamTotal.ContractTotal = (from o in lstOrderReport where o.Name.Contains("Solution Sales") select o.ContractTotal).Sum();
            solutionTeamTotal.Contract200   = (from o in lstOrderReport where o.Name.Contains("Solution Sales") select o.Contract200).Sum();
            solutionTeamTotal.Contract300   = (from o in lstOrderReport where o.Name.Contains("Solution Sales") select o.Contract300).Sum();
            solutionTeamTotal.Contract400   = (from o in lstOrderReport where o.Name.Contains("Solution Sales") select o.Contract400).Sum();

            //Solution Improvement

            var solutionImprovementTeamTotal = new OrderReport();

            solutionImprovementTeamTotal.Name         = "Solution Improvement Total";
            solutionImprovementTeamTotal.InQuiryTotal = (from o in lstOrderReport where o.Name.Contains("Solution Improvement") select o.InQuiryTotal).Sum();
            solutionImprovementTeamTotal.InQuiry200   = (from o in lstOrderReport where o.Name.Contains("Solution Improvement") select o.InQuiry200).Sum();
            solutionImprovementTeamTotal.InQuiry300   = (from o in lstOrderReport where o.Name.Contains("Solution Improvement") select o.InQuiry300).Sum();
            solutionImprovementTeamTotal.InQuiry400   = (from o in lstOrderReport where o.Name.Contains("Solution Improvement") select o.InQuiry400).Sum();

            solutionImprovementTeamTotal.ContractTotal = (from o in lstOrderReport where o.Name.Contains("Solution Improvement") select o.ContractTotal).Sum();
            solutionImprovementTeamTotal.Contract200   = (from o in lstOrderReport where o.Name.Contains("Solution Improvement") select o.Contract200).Sum();
            solutionImprovementTeamTotal.Contract300   = (from o in lstOrderReport where o.Name.Contains("Solution Improvement") select o.Contract300).Sum();
            solutionImprovementTeamTotal.Contract400   = (from o in lstOrderReport where o.Name.Contains("Solution Improvement") select o.Contract400).Sum();

            lstOrderReport.Add(saleTeamTotal);
            lstOrderReport.Add(solutionTeamTotal);
            lstOrderReport.Add(solutionImprovementTeamTotal);
            lstOrderReport.Add(Total);
            var template = Server.MapPath("~/Template/order.xlsx");
            // start from cell E:4
            var i = 4;

            using (ExcelPackage package = new ExcelPackage(new FileInfo(template)))
            {
                ExcelWorksheet ws = package.Workbook.Worksheets.FirstOrDefault();
                ws.Cells["K1"].Value = string.Format("DOMESTIC ORDER RECORD {0} ~ {1}", from, to);
                foreach (var item in lstOrderReport)
                {
                    ws.Cells["E" + i].Value = item.Name.Trim();
                    ws.Cells["F" + i].Value = item.InQuiryTotal;
                    ws.Cells["G" + i].Value = item.InQuiry300;
                    ws.Cells["H" + i].Value = item.InQuiry400;
                    ws.Cells["I" + i].Value = item.InQuiry200;
                    ws.Cells["J" + i].Value = 0;  // No1
                    ws.Cells["K" + i].Value = item.ContractTotal;
                    ws.Cells["L" + i].Value = item.Contract300;
                    ws.Cells["M" + i].Value = item.Contract400;
                    ws.Cells["N" + i].Value = item.Contract200;
                    ws.Cells["O" + i].Value = 0;  // No1
                    ws.Cells["P" + i].Value = item.ContractPrice300;
                    ws.Cells["Q" + i].Value = item.ContractPrice400;
                    ws.Cells["R" + i].Value = item.ContractPrice200;
                    ws.Cells["S" + i].Value = 0;  // No1
                    ws.Cells["T" + i].Value = item.BidPrice300;
                    ws.Cells["U" + i].Value = item.BidPrice400;
                    ws.Cells["V" + i].Value = item.BidPrice200;
                    ws.Cells["W" + i].Value = 0;  // No1

                    ws.Cells["Z" + i].Value  = item.InQuiryBA300;
                    ws.Cells["AA" + i].Value = item.InQuiryBA400;
                    ws.Cells["AB" + i].Value = item.InQuiryBA200;
                    ws.Cells["AC" + i].Value = item.InQuiry2B2D300;
                    ws.Cells["AD" + i].Value = item.InQuiry2B2D400;
                    ws.Cells["AE" + i].Value = item.InQuiry2B2D200;
                    ws.Cells["AF" + i].Value = 0;  // NO 1

                    ws.Cells["AG" + i].Value = item.InQuiry300;
                    ws.Cells["AH" + i].Value = item.InQuiry400;
                    ws.Cells["AI" + i].Value = item.InQuiry200;
                    ws.Cells["AJ" + i].Value = 0;  // No 1
                    ws.Cells["AK" + i].Value = item.InQuiryTotal;
                    // kkk
                    ws.Cells["AO" + i].Value = item.ContractBA300;
                    ws.Cells["AP" + i].Value = item.ContractBA400;
                    ws.Cells["AQ" + i].Value = item.ContractBA200;
                    ws.Cells["AR" + i].Value = item.Contract2B2D300;
                    ws.Cells["AS" + i].Value = item.Contract2B2D400;
                    ws.Cells["AT" + i].Value = item.Contract2B2D200;
                    ws.Cells["AU" + i].Value = 0;  // NO 1

                    ws.Cells["AV" + i].Value = item.Contract300;
                    ws.Cells["AW" + i].Value = item.Contract400;
                    ws.Cells["AX" + i].Value = item.Contract200;
                    ws.Cells["AY" + i].Value = 0;  // No 1
                    ws.Cells["AZ" + i].Value = item.ContractTotal;

                    i++;
                }
                var index2 = i + 2;
                var index3 = i + 3;
                var index4 = i + 4;
                ws.Cells["E" + index2].Value = "INQUIRY";
                ws.Cells["N" + index2].Value = "CONTRACT";
                ws.Cells["G" + index2].Value = ws.Cells["Q" + index2].Value = "300";
                ws.Cells["H" + index2].Value = ws.Cells["R" + index2].Value = "400";
                ws.Cells["I" + index2].Value = ws.Cells["S" + index2].Value = "200";
                ws.Cells["G" + index2].Value = ws.Cells["Q" + index2].Value = "300";
                ws.Cells["J" + index2].Value = ws.Cells["T" + index2].Value = "SUB TOTAL";
                ws.Cells["L" + index2].Value = ws.Cells["V" + index2].Value = "TOTAL";
                ws.Cells["E" + index3].Value = ws.Cells["N" + index3].Value = "SURFACE";
                ws.Cells["F" + index3].Value = ws.Cells["P" + index3].Value = "BA";
                ws.Cells["F" + index4].Value = ws.Cells["P" + index4].Value = "2B & 2D";

                var inquiryBA300        = (from o in lstOrderReport where o.CUSTOMER_ID != null select o.InQuiryBA300).Sum();
                var inquiryBA400        = (from o in lstOrderReport where o.CUSTOMER_ID != null select o.InQuiryBA400).Sum();
                var inquiryBA200        = (from o in lstOrderReport where o.CUSTOMER_ID != null select o.InQuiryBA200).Sum();
                var subTotalInquiryBA   = inquiryBA300 + inquiryBA400 + inquiryBA200;
                var inquiry2B2D300      = (from o in lstOrderReport where o.CUSTOMER_ID != null select o.InQuiry2B2D300).Sum();
                var inquiry2B2D400      = (from o in lstOrderReport where o.CUSTOMER_ID != null select o.InQuiry2B2D400).Sum();
                var inquiry2B2D200      = (from o in lstOrderReport where o.CUSTOMER_ID != null select o.InQuiry2B2D200).Sum();
                var subTotalInquiry2B2D = inquiry2B2D300 + inquiry2B2D400 + inquiry2B2D200;

                var inquiryTotal = subTotalInquiryBA + subTotalInquiry2B2D;

                var contractBA300       = (from o in lstOrderReport where o.CUSTOMER_ID != null select o.ContractBA300).Sum();
                var contractBA400       = (from o in lstOrderReport where o.CUSTOMER_ID != null select o.ContractBA400).Sum();
                var contractBA200       = (from o in lstOrderReport where o.CUSTOMER_ID != null select o.ContractBA200).Sum();
                var subTotalContractBA  = contractBA300 + contractBA400 + contractBA200;
                var contract2B2D300     = (from o in lstOrderReport where o.CUSTOMER_ID != null select o.Contract2B2D300).Sum();
                var contract2B2D400     = (from o in lstOrderReport where o.CUSTOMER_ID != null select o.Contract2B2D400).Sum();
                var contract2B2D200     = (from o in lstOrderReport where o.CUSTOMER_ID != null select o.Contract2B2D200).Sum();
                var subTotalContrac2B2D = contract2B2D300 + contract2B2D400 + contract2B2D200;

                var contractTotal = subTotalContractBA + subTotalContrac2B2D;

                ws.Cells["G" + index3].Value = inquiryBA300;
                ws.Cells["H" + index3].Value = inquiryBA400;
                ws.Cells["I" + index3].Value = inquiryBA200;
                ws.Cells["J" + index3].Value = subTotalInquiryBA;
                ws.Cells["G" + index4].Value = inquiry2B2D300;
                ws.Cells["H" + index4].Value = inquiry2B2D400;
                ws.Cells["I" + index4].Value = inquiry2B2D200;
                ws.Cells["J" + index4].Value = subTotalInquiry2B2D;
                ws.Cells["L" + index3].Value = inquiryTotal;

                ws.Cells["Q" + index3].Value = contractBA300;
                ws.Cells["R" + index3].Value = contractBA400;
                ws.Cells["S" + index3].Value = contractBA200;
                ws.Cells["T" + index3].Value = subTotalContractBA;
                ws.Cells["V" + index3].Value = contractTotal;
                ws.Cells["Q" + index4].Value = contract2B2D300;
                ws.Cells["R" + index4].Value = contract2B2D400;
                ws.Cells["S" + index4].Value = contract2B2D200;
                ws.Cells["T" + index4].Value = subTotalContrac2B2D;
                ws.Column(5).Width           = 50;
                //buffer = package.Stream as MemoryStream;
                Byte[] fileBytes = package.GetAsByteArray();
                Response.ClearContent();
                Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                Response.AddHeader("content-disposition", "attachment;  filename=" + fileName);
                Response.BinaryWrite(fileBytes);
                Response.Flush();
                Response.End();
            }

            return(RedirectToAction("Order"));;
        }