public byte[] GetWarehousePackageReport(WorkingUser staff, FileStream template,
                                                OrderAdminSearchCriteria searchCriteria)
        {
            var orderDetails     = GetReportQueriedOrderDetails(staff, searchCriteria);
            var sessionStartDate = searchCriteria.SessionEndDate.Value.Date.AddMonths(-2);
            var hrManager        = GetHRManager(orderDetails);
            var hrAdmin          = GetHRAdmin(orderDetails);
            var isWarehouse      = staff.IsInRole(UserRole.Warehouse);
            var internRequisitionFormDataSource = new ExcelWorkSheetDataSource
            {
                Table                = GetInternalRequisitionFormReportTable(orderDetails),
                StartingCell         = "A13",
                SummaryColumnHeaders = new List <string> {
                    "Quantity", "UnitPrice", "TotalPrice", "PV", "TotalPV"
                },
                IsProtectedWithPassword = isWarehouse,
                SummaryCellColor        = "#C6E0B4",
                AdditionalCells         = new Dictionary <string, string>
                {
                    { "C5", hrAdmin?.Name },
                    { "E5", hrManager?.Name },
                    { "I1", sessionStartDate.ToString("MM.yyyy") + "/PVEntitlement" }
                },
                WorkSheetName = "InternalRequisitionForm"
            };
            var summaryDiscountProductDataSource = new ExcelWorkSheetDataSource
            {
                Table                = GetSummaryDiscountProductFormTable(orderDetails),
                StartingCell         = "A9",
                SummaryColumnHeaders =
                    new List <string>
                {
                    "Quantity",
                    "UnitPrice",
                    "TotalPrice",
                    "UnitDiscountedPrice",
                    "TotalDiscountedPrice"
                },
                IsProtectedWithPassword = isWarehouse,
                SummaryCellColor        = "#8EA9DB",
                AdditionalCells         = new Dictionary <string, string>
                {
                    { "C5", hrAdmin?.Name },
                    { "E5", hrManager?.Name },
                    { "I1", sessionStartDate.ToString("MM.yyyy") + "/DiscountedProduct" }
                },
                WorkSheetName = "SummaryDiscountProduct"
            };
            var orderByIndividualPVDataSource = new ExcelWorkSheetDataSource
            {
                Table                = GetSummaryOrderByIndividualPVReportTable(orderDetails),
                StartingCell         = "A9",
                SummaryColumnHeaders = new List <string> {
                    "Quantity", "UnitPrice", "TotalPrice", "PV", "TotalPV"
                },
                IsProtectedWithPassword = isWarehouse,
                SummaryCellColor        = "#C6E0B4",
                AdditionalCells         = new Dictionary <string, string>
                {
                    { "B5", hrAdmin?.Name },
                    { "D5", hrManager?.Name },
                    { "G2", sessionStartDate.ToString("MM.yyyy") + "/PVEntitlement" }
                },
                WorkSheetName = "OrderByIndividualPV"
            };

            var orderByIndividualDiscountDataSource = new ExcelWorkSheetDataSource
            {
                Table                = GetSummaryOrderByIndividualDiscountReportTable(orderDetails),
                StartingCell         = "A9",
                SummaryColumnHeaders =
                    new List <string>
                {
                    "Quantity",
                    "UnitPrice",
                    "TotalPrice",
                    "UnitDiscountedPrice",
                    "TotalDiscountedPrice"
                },
                IsProtectedWithPassword = isWarehouse,
                SummaryCellColor        = "#8EA9DB",
                AdditionalCells         = new Dictionary <string, string>
                {
                    { "B5", hrAdmin?.Name },
                    { "D5", hrManager?.Name },
                    { "G2", sessionStartDate.ToString("MM.yyyy") + "/DiscountedProduct" }
                },
                WorkSheetName = "OrderByIndividualDiscount"
            };
            var worksheetDataSources = new List <ExcelWorkSheetDataSource>
            {
                internRequisitionFormDataSource,
                orderByIndividualPVDataSource,
                summaryDiscountProductDataSource,
                orderByIndividualDiscountDataSource
            };

            var bin = _exportManager.ExportToExcel(worksheetDataSources, template);

            return(bin);
        }
        public byte[] GetWarehousePackageDiscountOrderReport(WorkingUser staff, FileStream template,
                                                             OrderAdminSearchCriteria searchCriteria, bool isPreview = false)
        {
            searchCriteria.OrderType = OrderType.Cash;
            var orderDetails   = GetReportQueriedOrderDetails(staff, searchCriteria);
            var sessionEndDate = searchCriteria.SessionEndDate.Value.Date;
            var hrManager      = GetHRManager(orderDetails);
            var hrAdmin        = GetHRAdmin(orderDetails);
            var warehouser     = GetWarehouser(orderDetails, searchCriteria);
            var isWarehouse    = staff.IsInRole(UserRole.Warehouse);
            var summaryDiscountProductDataSource = new ExcelWorkSheetDataSource
            {
                Table                = GetSummaryDiscountProductFormTable(orderDetails),
                StartingCell         = "A9",
                SummaryColumnHeaders =
                    new List <string>
                {
                    "Quantity",
                    "UnitPrice",
                    "TotalPrice",
                    "UnitDiscountedPrice",
                    "TotalDiscountedPrice"
                },
                IsProtectedWithPassword = isWarehouse,
                SummaryCellColor        = "#8EA9DB",
                AdditionalCells         = !isPreview ? new Dictionary <string, string>
                {
                    { "C5", hrAdmin?.Name },
                    { "C6", hrAdmin?.FormattedActionDate },
                    { "E5", hrManager?.Name },
                    { "E6", hrManager?.FormattedActionDate },
                    { "H5", warehouser?.Names },
                    { "H6", warehouser?.ActionDates },
                    { "I1", sessionEndDate.ToString("MM.yyyy") + "/DiscountedProduct" }
                } : new Dictionary <string, string>
                {
                    { "I1", sessionEndDate.ToString("MM.yyyy") + "/DiscountedProduct" }
                },
                WorkSheetName = "SummaryDiscountProduct"
            };
            var orderByIndividualDiscountDataSource = new ExcelWorkSheetDataSource
            {
                Table                = GetSummaryOrderByIndividualDiscountReportTable(orderDetails),
                StartingCell         = "A9",
                SummaryColumnHeaders =
                    new List <string>
                {
                    "Quantity",
                    "UnitPrice",
                    "TotalPrice",
                    "UnitDiscountedPrice",
                    "TotalDiscountedPrice"
                },
                IsProtectedWithPassword = isWarehouse,
                SummaryCellColor        = "#8EA9DB",
                AdditionalCells         = !isPreview ? new Dictionary <string, string>
                {
                    { "B5", hrAdmin?.Name },
                    { "B6", hrAdmin?.FormattedActionDate },
                    { "D5", hrManager?.Name },
                    { "D6", hrManager?.FormattedActionDate },
                    { "G5", warehouser?.Names },
                    { "G6", warehouser?.ActionDates },
                    { "G2", sessionEndDate.ToString("MM.yyyy") + "/DiscountedProduct" }
                } : new Dictionary <string, string>
                {
                    { "G2", sessionEndDate.ToString("MM.yyyy") + "/DiscountedProduct" }
                },
                WorkSheetName = "OrderByIndividualDiscount"
            };
            var worksheetDataSources = new List <ExcelWorkSheetDataSource>
            {
                summaryDiscountProductDataSource,
                orderByIndividualDiscountDataSource
            };

            var bin = _exportManager.ExportToExcel(worksheetDataSources, template);

            return(bin);
        }