/// <summary> /// Muestra el reporte en un report viewver /// </summary> /// <param name="finfo">File a mostrat</param> /// <history> /// [emoguel] 07/09/2016 modified---> ahora ya no habre el archivo de excel /// </history> private void OpenReport(FileInfo finfo) { if (finfo != null) { frmDocumentViewer documentViewver = new frmDocumentViewer(finfo, Context.User.HasPermission(EnumPermission.RptExcel, EnumPermisionLevel.ReadOnly), false); documentViewver.Owner = this; documentViewver.ShowDialog(); } }
/// <summary> /// abre el reporte de excel despues de guardarse /// </summary> /// <history> /// [jorcanche] 07/05/2016 created /// [emoguel] 08/09/2016 Modified. Ahora abre el visor de reportes /// </history> private static void OpenFile(FileInfo file, Window window) { if (file != null) { frmDocumentViewer documentViewer = new frmDocumentViewer(file, Context.User.HasPermission(EnumPermission.RptExcel, EnumPermisionLevel.ReadOnly), false); documentViewer.Owner = window; documentViewer.ShowDialog(); } }
/// <summary> /// Exporta el reporte seleccionado a un archivo de excel. /// </summary> /// <history> /// [jorcanche] 31/ago/2016 Created /// [emoguel] 08/09/2016 Ahora abre el visor de reportes /// </history> private async void lstReports_Select(object sender, RoutedEventArgs e) { if (e.GetType() == typeof(KeyEventArgs) && ((KeyEventArgs)e).Key != Key.Enter) { return; } var filters = new List <Tuple <string, string> >(); var daterange = DateHelper.DateRange(dtpDate.Value.Value, dtpDate.Value.Value); var dateFileName = DateHelper.DateRangeFileName(dtpDate.Value.Value, dtpDate.Value.Value); FileInfo fileinfo = null; if (lstReports.SelectedItem == null) { UIHelper.ShowMessage("You must select a report"); return; } switch ((lstReports.SelectedItem as ListBoxItem).Content.ToString()) { case "Deposits by PR": var lstRptDepPr = await BRReportsByLeadSource.GetRptDepositByPR(dtpDate.Value.Value, dtpDate.Value.Value, Context.User.LeadSource.lsID); if (lstRptDepPr.Any()) { filters.Add(Tuple.Create("Filter Range", daterange)); filters.Add(Tuple.Create("Lead Source", Context.User.LeadSource.lsID)); var lstDepPr = lstRptDepPr[0] as List <RptDepositsByPR>; var currencies = lstRptDepPr[1] as List <Currency>; var payType = lstRptDepPr[2] as List <PaymentType>; lstDepPr.ForEach(c => { c.guPRInvit1 = $"{c.guPRInvit1} {c.peN}"; c.gucu = currencies.First(cu => cu.cuID == c.gucu).cuN ?? ""; c.gupt = payType.First(pt => pt.ptID == c.gupt).ptN ?? ""; }); fileinfo = await ReportBuilder.CreateCustomExcelAsync(TableHelper.GetDataTableFromList(lstDepPr, true, false), filters, "Deposits by PR", dateFileName, clsFormatReports.RptDepositByPr(), blnShowSubtotal : true, blnRowGrandTotal : true, isPivot : true, addEnumeration : true); } else { UIHelper.ShowMessage("There is no data for make a report"); } break; } if (fileinfo != null) { frmDocumentViewer documentViewer = new frmDocumentViewer(fileinfo, Context.User.HasPermission(EnumPermission.RptExcel, EnumPermisionLevel.ReadOnly), false); documentViewer.Owner = this; documentViewer.ShowDialog(); } }
/// <summary> /// Exporta los datos a un documento de Excel. /// </summary> /// <history> /// [edgrodriguez] 28/Abr/2016 Created /// </history> private async void BtnPrint_OnClick(object sender, RoutedEventArgs e) { biWait.IsBusy = true; if (dgvLoginsLog.Items.Count <= 0) { return; } biWait.BusyContent = "Loading Report..."; string message = ValidateFields(); if (message != "") { UIHelper.ShowMessage(message); return; } DataTable dtRptLoginsLog = TableHelper.GetDataTableFromList(lstLoginsLog.View.Cast <RptLoginLog>().ToList(), true, false, true); List <Tuple <string, string> > filters = new List <Tuple <string, string> > { Tuple.Create("Date Range", DateHelper.DateRange(dtmStart.Value.Value, dtmEnd.Value.Value)), Tuple.Create("Location", cbLocation.SelectedValue.ToString()), Tuple.Create("Personnel", cbPersonnel.SelectedValue.ToString()), Tuple.Create("PC Name", cbPcName.SelectedValue.ToString()) }; string strReportName = "Logins Log"; string dateFileName = DateHelper.DateRangeFileName(dtmStart.Value.Value, dtmEnd.Value.Value); string fileFullPath = ReportBuilder.CreateEmptyExcel(strReportName, dateFileName); frmReportQ.AddReport(fileFullPath, strReportName); try { var finfo = await ReportBuilder.CreateCustomExcelAsync(dtRptLoginsLog, filters, strReportName, string.Empty, clsFormatReport.RptLoginsLog(), isRptQueue : true, filePath : fileFullPath, addEnumeration : true); if (finfo == null) { finfo = ReportBuilder.CreateNoInfoRptExcel(filters, strReportName, fileFullPath); } frmDocumentViewer frmDocumentViewver = new frmDocumentViewer(finfo, Context.User.HasPermission(EnumPermission.RptExcel, EnumPermisionLevel.ReadOnly)); frmDocumentViewver.Show(); frmReportQ.SetExist(finfo.FullName, finfo); } catch (Exception ex) { UIHelper.ShowMessage(ex); biWait.IsBusy = false; } biWait.IsBusy = false; }
/// <summary> /// Exporta los registros de grid a un archivo de excel. /// </summary> /// <history> /// [edgrodriguez] 08/07/2016 Created /// [edgrodriguez] 05/09/2016 Modified. Se cambio el método CreateExcelCustom por CreatCustomExcel /// [emoguel] 08/09/2016 modified. Ahora abre el visor de reportes /// </history> private async void btnPrint_Click(object sender, RoutedEventArgs e) { if (((List <ExchangeRateLogData>)_cvsExchangeRate.Source).Any()) { var fileinfo = await ReportBuilder.CreateCustomExcelAsync(TableHelper.GetDataTableFromList((List <ExchangeRateLogData>)_cvsExchangeRate.Source, true, true, true), new List <Tuple <string, string> > { Tuple.Create("Date Range", DateHelper.DateRange(DateTime.Today, DateTime.Today)), Tuple.Create("Gift ID", string.Join(",", ((List <ExchangeRateLogData>)_cvsExchangeRate.Source).Select(c => c.elcu).Distinct().ToList())) }, "Exchange Rates Log", DateHelper.DateRangeFileName(DateTime.Today, DateTime.Today), EpplusHelper.OrderColumns(getExchangeRateLogDataGrid.Columns.ToList(), clsFormatReport.RptExchangeRatesLog())); if (fileinfo != null) { frmDocumentViewer documentViewer = new frmDocumentViewer(fileinfo, Context.User.HasPermission(EnumPermission.RptExcel, EnumPermisionLevel.ReadOnly), false); documentViewer.Owner = this; documentViewer.ShowDialog(); } } else { UIHelper.ShowMessage("There is no info to make a report"); } }
/// <summary> /// Imprime el reporte del Sale Log /// </summary> /// <history> /// [jorcanche] created 07072016 /// [edgrodriguez] 05/09/2016 Modified. Se cambio el método CreateExcelCustom por CreatCustomExcel /// </history> private async void btnPrintSaleLog_Click(object sender, RoutedEventArgs e) { try { if (saleLogDataDataGrid == null) { return; } if (saleLogDataDataGrid.Items.Count == 0) { UIHelper.ShowMessage("There is no info to make a report"); return; } Mouse.OverrideCursor = Cursors.Wait; FileInfo fileInfo = await ReportBuilder.CreateCustomExcelAsync( TableHelper.GetDataTableFromList((List <SaleLogData>)saleLogDataDataGrid.ItemsSource, true, true, true), new List <Tuple <string, string> > { Tuple.Create("Sale Id", _sale.ToString()) }, "Sale Log", DateHelper.DateRangeFileName(DateTime.Today, DateTime.Today), EpplusHelper.OrderColumns(saleLogDataDataGrid.Columns.ToList(), Classes.clsFormatReport.RptSaleLog())); if (fileInfo != null) { frmDocumentViewer documentViewver = new frmDocumentViewer(fileInfo, Context.User.HasPermission(EnumPermission.RptExcel, EnumPermisionLevel.ReadOnly), false); documentViewver.Owner = this; documentViewver.ShowDialog(); } } catch (Exception ex) { UIHelper.ShowMessage(ex); } finally { Mouse.OverrideCursor = null; } }
/// <summary> /// Exporta los registros de grid a un archivo de excel. /// </summary> /// <history> /// [edgrodriguez] 08/07/2016 Created /// [edgrodriguez] 05/09/2016 Modified. Se cambio el método CreateExcelCustom por CreatCustomExcel /// [emoguel] 08/09/2016 Modified. Ahora se abre el visor de reportes /// </history> private async void btnPrint_Click(object sender, RoutedEventArgs e) { if (((List <SalesRoomLogData>)_salesRoomLog.Source).Any()) { var fileinfo = await ReportBuilder.CreateCustomExcelAsync(TableHelper.GetDataTableFromList((List <SalesRoomLogData>)_salesRoomLog.Source, true, true, true), new List <Tuple <string, string> > { Tuple.Create("Date Range", DateHelper.DateRange(DateTime.Today, DateTime.Today)), Tuple.Create("Sales Room ID", Context.User.SalesRoom.srID) }, "Sales Rooms Log", DateHelper.DateRangeFileName(DateTime.Today, DateTime.Today), EpplusHelper.OrderColumns(dtgSalesRoomLog.Columns.ToList(), clsFormatReport.RptCloseSalesRoomLog())); if (fileinfo != null) { frmDocumentViewer documentViewver = new frmDocumentViewer(fileinfo, Context.User.HasPermission(EnumPermission.RptExcel, EnumPermisionLevel.ReadOnly), false); documentViewver.Owner = this; documentViewver.ShowDialog(); } } else { UIHelper.ShowMessage("There is no info to make a report"); } }
/// <summary> /// Guarda un excel con los datos del grid /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <history> /// [emoguel] created 01/07/2016 /// [edgrodriguez] 05/09/2016 Modified. Se cambio el método CreateExcelCustom por CreatCustomExcel /// </history> private async void btnPrint_Click(object sender, RoutedEventArgs e) { try { Mouse.OverrideCursor = Cursors.Wait; var fileinfo = await ReportBuilder.CreateCustomExcelAsync(TableHelper.GetDataTableFromList((List <GiftLogData>)dgrGifsLog.ItemsSource, true, true, true), new List <Tuple <string, string> > { Tuple.Create("GIFT ID", idGift) }, $"Gift Logs - {idGift}", DateHelper.DateRangeFileName(DateTime.Today, DateTime.Today), EpplusHelper.OrderColumns(dgrGifsLog.Columns.ToList(), clsFormatReport.RptGiftLog())); frmDocumentViewer documentViewver = new frmDocumentViewer(fileinfo, Context.User.HasPermission(EnumPermission.RptExcel, EnumPermisionLevel.ReadOnly), false); documentViewver.Owner = this; documentViewver.ShowDialog(); } catch (Exception ex) { UIHelper.ShowMessage(ex); } finally { Mouse.OverrideCursor = null; } }
/// <summary> /// Exporta el reporte seleccionado a un archivo de excel. /// </summary> /// <history> /// [edgrodriguez] 21/Jun/2016 Created /// [jorcanche] 01/09/2016 modified se agrego validacion si no se selecciono un reporte /// [edgrodriguez] 05/09/2016 Modified. Se cambio el método CreateExcelCustom por CreatCustomExcel /// [emoguel] 08/09/2016 Modified. Ahora abre el visor de reportes /// </history> private async void lstHostReports_Select(object sender, RoutedEventArgs e) { if (e.GetType() == typeof(KeyEventArgs) && ((KeyEventArgs)e).Key != Key.Enter) { return; } var filters = new List <Tuple <string, string> >(); var daterange = DateHelper.DateRange(dtpDate.Value.Value, dtpDate.Value.Value); var dateFileName = DateHelper.DateRangeFileName(dtpDate.Value.Value, dtpDate.Value.Value); FileInfo fileinfo = null; if (lstHostReports.SelectedItem == null) { UIHelper.ShowMessage("You must select a report"); return; } switch ((lstHostReports.SelectedItem as ListBoxItem).Content.ToString()) { case "Premanifest": var lstPremanifest = await BRGeneralReports.GetRptPremanifest(dtpDate.Value.Value, salesRoom : Context.User.SalesRoom.srID); if (lstPremanifest.Any()) { filters.Add(Tuple.Create("Filter Range", daterange)); filters.Add(Tuple.Create("Sales Room", Context.User.SalesRoom.srID)); fileinfo = await ReportBuilder.CreateCustomExcelAsync(TableHelper.GetDataTableFromList(lstPremanifest, true, true), filters, "Premanifest", dateFileName, clsFormatReports.RptPremanifest()); } else { UIHelper.ShowMessage("There is no data for make a report"); } break; case "Premanifest With Gifts": var lstPremanifestWithG = await BRGeneralReports.GetRptPremanifestWithGifts(dtpDate.Value.Value, salesRoom : Context.User.SalesRoom.srID); if (lstPremanifestWithG.Any()) { filters.Add(Tuple.Create("Filter Range", daterange)); filters.Add(Tuple.Create("Sales Room", Context.User.SalesRoom.srID)); fileinfo = await ReportBuilder.CreateCustomExcelAsync(TableHelper.GetDataTableFromList(lstPremanifestWithG, true, true), filters, "Premanifest With Gifts", dateFileName, clsFormatReports.RptPremanifestWithGifts()); } else { UIHelper.ShowMessage("There is no data for make a report"); } break; case "Up List End": var lstUplistEnd = await BRReportsBySalesRoom.GetRptUplist(dtpDate.Value.Value.Date, salesRoom : Context.User.SalesRoom.srID, uplistType : 1); if (lstUplistEnd.Any()) { filters.Add(Tuple.Create("Filter Range", daterange)); filters.Add(Tuple.Create("Sales Room", Context.User.SalesRoom.srID)); var salesmans = lstUplistEnd.Select(c => c.Salesman).Distinct().ToList(); salesmans.ForEach(s => { var first = lstUplistEnd.FirstOrDefault(u => u.Salesman == s); var index = lstUplistEnd.IndexOf(first); lstUplistEnd.Where(c => c.Salesman == s && lstUplistEnd.IndexOf(c) != index).ToList().ForEach(c => { c.AmountM = 0; c.AmountYtd = 0; }); }); fileinfo = await ReportBuilder.CreateCustomExcelAsync(TableHelper.GetDataTableFromList(lstUplistEnd, true, true), filters, "Up List End", dateFileName, clsFormatReport.RptUpList(), isPivot : true, addEnumeration : true); } else { UIHelper.ShowMessage("There is no data for make a report"); } break; case "Up List Start": var lstUplistStart = await BRReportsBySalesRoom.GetRptUplist(dtpDate.Value.Value, salesRoom : Context.User.SalesRoom.srID); if (lstUplistStart.Any()) { filters.Add(Tuple.Create("Filter Range", daterange)); filters.Add(Tuple.Create("Sales Room", Context.User.SalesRoom.srID)); var newUplist = new List <RptUpList>(); var times = new List <string> { "08:00", "10:00", "12:00" }; //Replicamos los registros por cada registro de la lista times lstUplistStart.ForEach(c => { times.ForEach(t => { newUplist.Add(new RptUpList { Salesman = c.Salesman, SalesmanN = c.SalesmanN, SalesmanPost = c.SalesmanPost, SalesmanPostN = c.SalesmanPostN, DayOffList = c.DayOffList, Language = c.Language, Location = c.Location, Time = c.Time, TimeN = t, AmountYtd = c.AmountYtd, AmountM = c.AmountM }); }); }); fileinfo = await ReportBuilder.CreateCustomExcelAsync(TableHelper.GetDataTableFromList(newUplist, true, true), filters, "Up List Start", dateFileName, clsFormatReport.RptUpList(), isPivot : true, addEnumeration : true); } else { UIHelper.ShowMessage("There is no data for make a report"); } break; } if (fileinfo != null) { frmDocumentViewer documentViewver = new frmDocumentViewer(fileinfo, Context.User.HasPermission(EnumPermission.RptExcel, EnumPermisionLevel.ReadOnly), false); documentViewver.Owner = this; documentViewver.ShowDialog(); } }
public async static void PremanifestToExcel(List <RptPremanifestOuthouse> lstpremanifest, Window window) { _filters = new List <Tuple <string, string> > { Tuple.Create("Lead Source", Context.User.LeadSource.lsID) }; var date = BRHelpers.GetServerDate(); if (lstpremanifest.Count > 0) { var premanifestAux = lstpremanifest.Select(c => new { c.srN, c.guID, c.guOutInvitNum, c.Deposit, c.guHotel, c.guRoomNum, c.guLastName1, c.guFirstName1, c.guco, c.coN, c.guBookD, c.guBookT, c.guPRInvit1, guShow = c.guShow ? "✓" : "", guSale = c.guSale ? "✓" : "", c.guComments, }).ToList(); var dt = TableHelper.GetDataTableFromList(premanifestAux, true); _rptName = "Premanifest Outhouse " + Context.User.LeadSource.lsN; var dateRange = DateHelper.DateRangeFileName(date, date); var format = new ColumnFormatList(); format.Add("SR", "srN", isGroup: true, isVisible: false); format.Add("Deposit", "Deposit", isGroup: true, isVisible: false); format.Add("GUID", "guID"); format.Add("Out Invit", "guOutInvitNum"); format.Add("Hotel", "guHotel"); format.Add("Room", "guRoomNum"); format.Add("Last Name", "guLastName1"); format.Add("Firs tName", "guFirstName1"); format.Add("Country ID", "guco"); format.Add("Country", "coN"); format.Add("Book D", "guBookD", format: EnumFormatTypeExcel.Date); format.Add("Book T", "guBookT", format: EnumFormatTypeExcel.Time); format.Add("PR B", "guPRInvit1"); format.Add("Sh", "guShow", axis: ePivotFieldAxis.Values, aligment: ExcelHorizontalAlignment.Center, function: DataFieldFunctions.Count); format.Add("Sale", "guSale", axis: ePivotFieldAxis.Values, aligment: ExcelHorizontalAlignment.Center, function: DataFieldFunctions.Count); format.Add("Deposits / Comments", "guComments"); var info = await ReportBuilder.CreateCustomExcelAsync(dt, _filters, _rptName, dateRange, format, blnShowSubtotal : true, blnRowGrandTotal : true, addEnumeration : true); if (info != null) { frmDocumentViewer documentViewer = new frmDocumentViewer(info, Context.User.HasPermission(EnumPermission.RptExcel, EnumPermisionLevel.ReadOnly), false); documentViewer.Owner = window; documentViewer.ShowDialog(); } } }
/// <summary> /// Muestra el reporte de Salesman Seleccionado /// </summary> /// <param name="rptSalesman"></param> /// <param name="clsFilter"></param> /// <history> /// [aalcocer] 08/07/2016 Created /// </history> private async void ShowReportBySalesman(EnumRptSalesRoomAndSalesman rptSalesman, ClsFilter clsFilter) { FileInfo file = null; //Deberia validarse con #region Datos del reporte string dateRange = _multiDate ? string.Join("; ", clsFilter.LstMultiDate.Select(x => $"{x.SalesRoom} {DateHelper.DateRange(x.DtStart, x.DtEnd)}")) : DateHelper.DateRange(clsFilter.DtmStart, clsFilter.DtmEnd); string dateRangeFileName = _multiDate ? string.Join("; ", clsFilter.LstMultiDate.Select(x => $"{x.SalesRoom} {DateHelper.DateRange(x.DtStart, x.DtEnd)}")) : DateHelper.DateRangeFileName(clsFilter.DtmStart, clsFilter.DtmEnd); string reporteName = EnumToListHelper.GetEnumDescription(rptSalesman); #endregion #region Filtro(s) List <Tuple <string, string> > filters = new List <Tuple <string, string> > { new Tuple <string, string>("Date Range", dateRange) }; //Si es de solo un registro El sales Room es unico, si no Se toma por Todos o por los seleccionados if (_onlyOnRegister) { filters.Add(new Tuple <string, string>("Sales Room", clsFilter.LstSalesRooms.First())); } else { filters.Add(new Tuple <string, string>("Sales Room", _frmFilter.dtgSalesRoom.Items.Count == clsFilter.LstSalesRooms.Count ? "All" : string.Join(",", clsFilter.LstSalesRooms))); } filters.Add(new Tuple <string, string>("Salesman", $"{clsFilter.Salesman.peID} {clsFilter.Salesman.peN}")); #endregion List <dynamic> list = new List <dynamic>(); string fileFullPath = ReportBuilder.CreateEmptyExcel(reporteName, dateRangeFileName); _frmReportQueue.AddReport(fileFullPath, reporteName); try { switch (rptSalesman) { #region FtmIn&OutHouse case EnumRptSalesRoomAndSalesman.FtmInAndOutHouse: list.AddRange(await BRReportsBySalesRoom.GetRptFTMInOutHouse(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms, clsFilter.Salesman.peID)); if (list.Count > 0) { file = await Reports.RptFTMInOutHouse(reporteName, fileFullPath, filters, list.Cast <RptFTMInOutHouse>().ToList(), clsFilter.DtmStart, clsFilter.DtmEnd); } break; #endregion #region Manifest case EnumRptSalesRoomAndSalesman.Manifest: // Roles filters.Add(new Tuple <string, string>("Roles", clsFilter.LstEnumRole.EnumListToString())); list.AddRange(await BRReportsBySalesRoom.GetRptManiest(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms, clsFilter.Salesman.peID, clsFilter.LstEnumRole)); if (list.Any()) { file = await Reports.RptManifest(reporteName, fileFullPath, filters, list.Cast <RptManifest>().ToList(), clsFilter.DtmStart, clsFilter.DtmEnd); } break; #endregion #region Self Gen & Self Gen Team case EnumRptSalesRoomAndSalesman.SelfGenAndSelfGenTeam: list.AddRange(await BRReportsBySalesRoom.GetRptSelfGenAndSelfGenTeam(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms, clsFilter.Salesman.peID)); if (list.Count > 0) { file = await Reports.RptSelfGenAndSelfGenTeam(reporteName, fileFullPath, filters, list.Cast <RptSelfGenTeam>().ToList(), clsFilter.DtmStart, clsFilter.DtmEnd); } break; #endregion #region Stats by Closer case EnumRptSalesRoomAndSalesman.StatsByCloser: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByCloser(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), clsFilter.Salesman.peID, groupByTeams: clsFilter.BlnGroupedByTeams)); if (list.Any()) { file = await Reports.RptStatisticsByCloser(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByCloser>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion #region Stats by Exit Closer case EnumRptSalesRoomAndSalesman.StatsByExitCloser: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByExitCloser(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), clsFilter.Salesman.peID)); if (list.Any()) { file = await Reports.RptStatisticsByExitCloser(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByExitCloser>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion #region Stats by F.T.B case EnumRptSalesRoomAndSalesman.StatsByFtb: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByFTB(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), clsFilter.Salesman.peID, program: clsFilter.EnumProgram, segments: clsFilter.BlnAllSegments ? null : clsFilter.LstSegments, groupByTeam: clsFilter.BlnGroupedByTeams, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsByFTB(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByFTB>().ToList(), clsFilter.BlnIncludeAllSalesmen); } break; #endregion #region Stats by F.T.B. & Locations case EnumRptSalesRoomAndSalesman.StatsByFtbAndLocations: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByFTBLocations(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), clsFilter.Salesman.peID, clsFilter.BlnGroupedByTeams, clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsByFTBByLocations(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByFTBLocations>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion #region Stats by F.T.B. & Locations Categories case EnumRptSalesRoomAndSalesman.StatsByFtbAndLocationsCategories: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByFTBCategories(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), clsFilter.Salesman.peID, clsFilter.BlnGroupedByTeams, clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsByFTBByCategories(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByFTBCategories>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion #region Statistics by Segments case EnumRptSalesRoomAndSalesman.StatsBySegments: list.AddRange(await BRReportsBySalesRoom.GetStatisticsBySegments(new[] { clsFilter.DtmStart }, new[] { clsFilter.DtmEnd }, clsFilter.LstSalesRooms, clsFilter.Salesman.peID)); if (list.Any()) { file = await Reports.RptStatisticsBySegments(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySegments>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion Statistics by Segments Own #region Statistics by Segments case EnumRptSalesRoomAndSalesman.StatsBySegmentsOwn: list.AddRange(await BRReportsBySalesRoom.GetStatisticsBySegments(new[] { clsFilter.DtmStart }, new[] { clsFilter.DtmEnd }, clsFilter.LstSalesRooms, clsFilter.Salesman.peID, own: true)); if (list.Any()) { file = await Reports.RptStatisticsBySegments(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySegments>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion Statistics by Segments Own case EnumRptSalesRoomAndSalesman.StatsBySegmentsCategories: list.AddRange(await BRReportsBySalesRoom.GetStatisticsBySegments(new[] { clsFilter.DtmStart }, new[] { clsFilter.DtmEnd }, clsFilter.LstSalesRooms, clsFilter.Salesman.peID, true)); if (list.Any()) { file = await Reports.RptStatisticsBySegments(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySegments>().ToList(), clsFilter.BlnGroupedByTeams); } break; case EnumRptSalesRoomAndSalesman.StatsBySegmentsCategoriesOwn: list.AddRange(await BRReportsBySalesRoom.GetStatisticsBySegments(new[] { clsFilter.DtmStart }, new[] { clsFilter.DtmEnd }, clsFilter.LstSalesRooms, clsFilter.Salesman.peID, true, true)); if (list.Any()) { file = await Reports.RptStatisticsBySegments(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySegments>().ToList(), clsFilter.BlnGroupedByTeams); } break; } if (file == null) { file = ReportBuilder.CreateNoInfoRptExcel(filters, reporteName, fileFullPath); } frmDocumentViewer frmDocumentViewver = new frmDocumentViewer(file, Context.User.HasPermission(EnumPermission.RptExcel, EnumPermisionLevel.ReadOnly)); frmDocumentViewver.Show(); _frmReportQueue.SetExist(file.FullName, file); _frmReportQueue.Activate(); } catch (Exception ex) { UIHelper.ShowMessage(ex); } }
/// <summary> /// Muestra el reporte de Sales Room Seleccionado /// </summary> /// <param name="rptRoomSales"></param> /// <param name="clsFilter"></param> /// <history> /// [ecanul] 05/05/2016 Created /// </history> private async void ShowReportBySalesRoom(EnumRptSalesRoom rptRoomSales, ClsFilter clsFilter) { FileInfo file = null; //Deberia validarse con #region Datos del reporte string dateRange = _multiDate ? string.Join("; ", clsFilter.LstMultiDate.Select(x => $"{x.SalesRoom} {DateHelper.DateRange(x.DtStart, x.DtEnd)}")) : DateHelper.DateRange(clsFilter.DtmStart, clsFilter.DtmEnd); string dateRangeFileName = _multiDate ? string.Join("; ", clsFilter.LstMultiDate.Select(x => $"{x.SalesRoom} {DateHelper.DateRange(x.DtStart, x.DtEnd)}")) : DateHelper.DateRangeFileName(clsFilter.DtmStart, clsFilter.DtmEnd); string reporteName = EnumToListHelper.GetEnumDescription(rptRoomSales); #endregion #region Filtro(s) List <Tuple <string, string> > filters = new List <Tuple <string, string> > { new Tuple <string, string>("Date Range", dateRange) }; //Si es cualquier reporte menos Concentrate Daily Sales o Multidate (porque sus grids son diferentes) se agrega de manera comun if (rptRoomSales != EnumRptSalesRoom.ConcerntrateDailySales && rptRoomSales != EnumRptSalesRoom.StatsBySegmentsCategoriesMultiDatesRanges) { //Si es de solo un registro El sales Room es unico, si no Se toma por Todos o por los seleccionados if (_onlyOnRegister) { filters.Add(new Tuple <string, string>("Sales Room", clsFilter.LstSalesRooms.First())); } else { filters.Add(new Tuple <string, string>("Sales Room", _frmFilter.dtgSalesRoom.Items.Count == clsFilter.LstSalesRooms.Count ? "All" : string.Join(",", clsFilter.LstSalesRooms))); } } if (rptRoomSales == EnumRptSalesRoom.StatsByCloser || rptRoomSales == EnumRptSalesRoom.StatsByExitCloser || rptRoomSales == EnumRptSalesRoom.StatsByFtb) { filters.Add(Tuple.Create("Programs", EnumToListHelper.GetEnumDescription(clsFilter.EnumProgram))); filters.Add(Tuple.Create("Segments", clsFilter.BlnAllSegments ? "ALL" : string.Join(",", clsFilter.LstSegments))); } #endregion List <dynamic> list = new List <dynamic>(); string fileFullPath = ReportBuilder.CreateEmptyExcel(reporteName, dateRangeFileName); _frmReportQueue.AddReport(fileFullPath, reporteName); try { switch (rptRoomSales) { #region Manifest case EnumRptSalesRoom.Manifest: list.AddRange(await BRReportsBySalesRoom.GetRptManiest(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms)); if (list.Count > 0) { file = await Reports.RptManifest(reporteName, fileFullPath, filters, list.Cast <RptManifest>().ToList(), clsFilter.DtmStart, clsFilter.DtmEnd); } break; #endregion #region StatsByLocation case EnumRptSalesRoom.StatsByLocation: list.AddRange(await BRReportsBySalesRoom.GetRptStatisticsByLocation(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms)); if (list.Count > 0) { file = await Reports.RptStatisticsByLocation(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByLocation>().ToList()); } break; #endregion #region StatsByLocationMonthly case EnumRptSalesRoom.StatsByLocationMonthly: list.AddRange(await BRReportsBySalesRoom.GetRptStaticsByLocationMonthly(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms)); if (list.Count > 0) { file = await Reports.RptStaticsByLocationMonthly(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByLocationMonthly>().ToList()); } break; #endregion #region SalesByLocationMonthly case EnumRptSalesRoom.SalesByLocationMonthly: list.AddRange(await BRReportsBySalesRoom.GetRptSalesByLocationMonthly(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms)); if (list.Count > 0) { file = await Reports.RptSalesByLocationMonthly(reporteName, fileFullPath, filters, list.Cast <RptSalesByLocationMonthly>().ToList()); } break; #endregion #region StatsByLocationAndSalesRoom case EnumRptSalesRoom.StatsByLocationAndSalesRoom: list.AddRange(await BRReportsBySalesRoom.GetRptStatisticsBySalesRoomLocation(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms)); if (list.Count > 0) { file = await Reports.RptStatisticsBySalesRoomLocation(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySalesRoomLocation>().ToList()); } break; #endregion #region ConcerntrateDailySales case EnumRptSalesRoom.ConcerntrateDailySales: #region FiltroSalesRoomConcentrate clsFilter.LstSalesRooms.AddRange(clsFilter.LstGoals.Select(c => c.SalesRoomByUser.srID)); filters.Add(new Tuple <string, string>("Sales Room", string.Join("/", clsFilter.LstGoals.Select(c => c.SalesRoomByUser.srID).ToList()))); #endregion list.AddRange(await BRReportsBySalesRoom.GetRptConcentrateDailySales(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstGoals.Select(c => c.SalesRoomByUser.srID).ToList())); if (list.Count > 0) { file = await Reports.RptConcentrateDailySales(reporteName, fileFullPath, clsFilter.DtmEnd, filters, list.Cast <RptConcentrateDailySales>().ToList(), clsFilter.LstGoals); } break; #endregion #region DailySales case EnumRptSalesRoom.DailySales: list.AddRange(await BRReportsBySalesRoom.GetRptDailySalesDetail(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms)); List <RptDailySalesHeader> lstHeader = await BRReportsBySalesRoom.GetRptDailySalesHeader(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms); if (list.Count > 0 && lstHeader.Count > 0) { file = await Reports.RptDailySales(reporteName, dateRange, fileFullPath, filters, list.Cast <RptDailySalesDetail>().ToList(), lstHeader, clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.Goal); } break; #endregion #region FTM In & Out House case EnumRptSalesRoom.FtmInAndOutHouse: list.AddRange(await BRReportsBySalesRoom.GetRptFTMInOutHouse(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms)); if (list.Count > 0) { file = await Reports.RptFTMInOutHouse(reporteName, fileFullPath, filters, list.Cast <RptFTMInOutHouse>().ToList(), clsFilter.DtmStart, clsFilter.DtmEnd); } break; #endregion #region Stats by Segments case EnumRptSalesRoom.StatsBySegments: list.AddRange(await BRReportsBySalesRoom.GetStatisticsBySegments(new[] { clsFilter.DtmStart }, new[] { clsFilter.DtmEnd }, clsFilter.LstSalesRooms, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsBySegments(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySegments>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion Stats by Segments #region Stats by Segments (OWN) case EnumRptSalesRoom.StatsBySegmentsOwn: list.AddRange(await BRReportsBySalesRoom.GetStatisticsBySegments(new[] { clsFilter.DtmStart }, new[] { clsFilter.DtmEnd }, clsFilter.LstSalesRooms, own: true, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsBySegments(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySegments>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion Stats by Segments (OWN) #region Stats by Segments Categories case EnumRptSalesRoom.StatsBySegmentsCategories: list.AddRange(await BRReportsBySalesRoom.GetStatisticsBySegments(new[] { clsFilter.DtmStart }, new[] { clsFilter.DtmEnd }, clsFilter.LstSalesRooms, bySegmentsCategories: true, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsBySegments(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySegments>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion Stats by Segments Categories #region Stats by Segments Categories (OWN) case EnumRptSalesRoom.StatsBySegmentsCategoriesOwn: list.AddRange(await BRReportsBySalesRoom.GetStatisticsBySegments(new[] { clsFilter.DtmStart }, new[] { clsFilter.DtmEnd }, clsFilter.LstSalesRooms, bySegmentsCategories: true, own: true, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsBySegments(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySegments>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion Stats by Segments Categories (OWN) #region Stats by Segments Categories (Multi Date Ranges) case EnumRptSalesRoom.StatsBySegmentsCategoriesMultiDatesRanges: list.AddRange(await BRReportsBySalesRoom.GetStatisticsBySegments(clsFilter.LstMultiDate.Select(x => x.DtStart), clsFilter.LstMultiDate.Select(x => x.DtEnd), clsFilter.LstMultiDate.Select(x => x.SalesRoom), bySegmentsCategories: true, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsBySegments(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySegments>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion Stats by Segments Categories (Multi Date Ranges) #region Stats by Closer case EnumRptSalesRoom.StatsByCloser: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByCloser(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), program: clsFilter.EnumProgram, segments: clsFilter.BlnAllSegments ? null : clsFilter.LstSegments, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen, groupByTeams: clsFilter.BlnGroupedByTeams)); if (list.Any()) { file = await Reports.RptStatisticsByCloser(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByCloser>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion #region Stats by Exit Closer case EnumRptSalesRoom.StatsByExitCloser: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByExitCloser(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), program: clsFilter.EnumProgram, segments: clsFilter.BlnAllSegments ? null : clsFilter.LstSegments, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsByExitCloser(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByExitCloser>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion #region Self Gen & Self Gen Team case EnumRptSalesRoom.SelfGenAndSelfGenTeam: list.AddRange(await BRReportsBySalesRoom.GetRptSelfGenAndSelfGenTeam(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms)); if (list.Count > 0) { file = await Reports.RptSelfGenAndSelfGenTeam(reporteName, fileFullPath, filters, list.Cast <RptSelfGenTeam>().ToList(), clsFilter.DtmStart, clsFilter.DtmEnd); } break; #endregion #region Stats by F.T.B case EnumRptSalesRoom.StatsByFtb: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByFTB(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), program: clsFilter.EnumProgram, segments: clsFilter.BlnAllSegments ? null : clsFilter.LstSegments, groupByTeam: clsFilter.BlnGroupedByTeams, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsByFTB(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByFTB>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion #region Stats by F.T.B. & Locations case EnumRptSalesRoom.StatsByFtbAndLocatios: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByFTBLocations(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), groupByTeam: clsFilter.BlnGroupedByTeams, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsByFTBByLocations(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByFTBLocations>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion #region Stats by F.T.B. & Locations Categories case EnumRptSalesRoom.StatsByFtbAndLocatiosCategories: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByFTBCategories(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), groupByTeam: clsFilter.BlnGroupedByTeams, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsByFTBByCategories(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByFTBCategories>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion #region Efficiency Weekly case EnumRptSalesRoom.EfficiencyWeekly: list.AddRange(await BRReportsBySalesRoom.GetRptEfficiencyWeekly(clsFilter.lstEfficiency.Select(x => x.efDateFrom), clsFilter.lstEfficiency.Select(x => x.efDateTo), clsFilter.LstSalesRooms.First().ToString())); if (list.Any()) { file = await Reports.RptEfficiencyWeekly(reporteName, fileFullPath, filters, list.Cast <RptEfficiencyWeekly>().ToList(), clsFilter); } break; #endregion } if (file == null) { file = ReportBuilder.CreateNoInfoRptExcel(filters, reporteName, fileFullPath); } frmDocumentViewer frmDocumentViewver = new frmDocumentViewer(file, Context.User.HasPermission(EnumPermission.RptExcel, EnumPermisionLevel.ReadOnly)); frmDocumentViewver.Show(); _frmReportQueue.SetExist(file.FullName, file); _frmReportQueue.Activate(); } catch (Exception ex) { UIHelper.ShowMessage(ex); } }