示例#1
0
        /// <summary>
        /// Obtiene todos los place y los mantiene en memoria para utilizarlos posteriormente
        /// </summary>
        /// <returns>lista dynamica</returns>
        /// <history>
        /// [erosado] 29/04/2016  Created
        /// </history>
        public async Task <int> getAllPlaces()
        {
            places = new List <Item>();
            switch (_loginType)
            {
            case EnumLoginType.SalesRoom:
                var sr = await BRSalesRooms.GetSalesRoomsByUser();

                sr.ForEach(s => places.Add(new Item()
                {
                    Id = s.srID, Name = s.srN, UserId = s.plpe
                }));
                break;

            case EnumLoginType.Warehouse:
                var wh = await BRWarehouses.GetWarehousesByUser();

                wh.ForEach(w => places.Add(new Item()
                {
                    Id = w.whID, Name = w.whN, UserId = w.plpe
                }));
                break;

            case EnumLoginType.Location:
                var lo = await BRLocations.GetLocationsByUser(programs : EnumToListHelper.GetEnumDescription(_program));

                lo.ForEach(l => places.Add(new Item()
                {
                    Id = l.loID, Name = l.loN, UserId = l.plpe
                }));
                break;
            }
            return(1);
        }
示例#2
0
        /// <summary>
        /// Devuelve los datos para el reporte de produccion por membresia
        /// </summary>
        /// <param name="dtmStart">Fecha desde</param>
        /// <param name="dtmEnd">Fecha hasta</param>
        /// <param name="leadSources">Claves de Lead Sources</param>
        /// <param name="pRs">Claves de PRs</param>
        /// <param name="program">Clave de programa</param>
        /// <param name="aplication">Clave de membresia</param>
        /// <param name="company">Clave de compania</param>
        /// <param name="club">Clave de club</param>
        /// <param name="onlyWholesalers">Indica si se desean solo mayoristas</param>
        /// <param name="considerQuinellas">Indica si se debe considerar quinielas</param>
        /// <param name="basedOnArrival">Indica si se debe basar en la fecha de llegada</param>
        /// <returns><list type="RptProductionByMember"></list></returns>
        /// <history>
        /// [aalcocer] 03/05/2016 Created
        /// [aalcocer] 24/05/2016 Modified. Se agregó asincronía
        /// </history>
        public static async Task <List <RptProductionByMember> > GetRptProductionByMembers(DateTime dtmStart, DateTime dtmEnd, IEnumerable <string> leadSources,
                                                                                           IEnumerable <string> pRs            = null, EnumProgram program = EnumProgram.All, string aplication = "", int company = 0, Club club = null,
                                                                                           EnumOnlyWholesalers onlyWholesalers = EnumOnlyWholesalers.NoOnlyWholesalers, EnumQuinellas considerQuinellas = EnumQuinellas.NoQuinellas,
                                                                                           EnumBasedOnArrival basedOnArrival   = EnumBasedOnArrival.NoBasedOnArrival)
        {
            var result = new List <RptProductionByMember>();

            if (pRs == null || !pRs.Any())
            {
                pRs = new[] { "ALL" }
            }
            ;

            await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    dbContext.Database.CommandTimeout = Settings.Default.USP_OR_RptProductionByMember_Timeout;
                    result = dbContext.USP_OR_RptProductionByMember(dtmStart, dtmEnd, string.Join(",", leadSources), string.Join(",", pRs),
                                                                    EnumToListHelper.GetEnumDescription(program), string.IsNullOrWhiteSpace(aplication) ? "ALL" : aplication,
                                                                    company, club?.clID, Convert.ToBoolean(onlyWholesalers), Convert.ToBoolean(considerQuinellas),
                                                                    Convert.ToBoolean(basedOnArrival)).ToList();
                }
            });

            return(result);
        }
示例#3
0
 /// <summary>
 /// Obtiene el listado de dias libres del personal
 /// </summary>
 /// <param name="placeID">ID del lugar de trabajo</param>
 /// <param name="teamType"></param>
 /// <returns></returns>
 /// <history>[ECANUL] 09-08-2016 Created</history>
 public static List <PersonnelDayOff> GetPersonnelDaysOff(string placeID, EnumTeamType teamType)
 {
     using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
     {
         string _teamType = EnumToListHelper.GetEnumDescription(teamType);
         return(dbContext.USP_OR_GetPersonnelDaysOff(_teamType, placeID).ToList());
     }
 }
示例#4
0
 /// <summary>
 /// Obtiene la lista de empleados En un periodo de fechas establecido y que NO ha sido registrado en la base de datos
 /// NO REGISTRA SOLO HACE UNA CONSULTA
 /// </summary>
 /// <param name="palaceType">LS, SR o WH</param>
 /// <param name="PalaceID"> String con el ID del Sitio </param>
 /// <param name="dateStart">Fecha inicio de la lista de asistencia</param>
 /// <param name="DateEnd">Fecha fin de la lista de asistencia</param>
 /// <returns>Lista de asistencia enrtre las fechas seleccionadas</returns>
 /// <history>[ECANUL] 19-03-2016 CREATED</history>
 public static List <PersonnelAssistance> GetPersonnelAssistance(EnumPlaceType palaceType, string PalaceID, DateTime dateStart, DateTime DateEnd)
 {
     using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
     {
         string strPalaceType = EnumToListHelper.GetEnumDescription(palaceType);
         return(dbContext.USP_OR_GetPersonnelAssistance(strPalaceType, PalaceID, dateStart, DateEnd).ToList());
     }
 }
示例#5
0
        /// <summary>
        /// Carga el Program para la invitacion
        /// </summary>
        /// <param name="module">EnumModule</param>
        /// <param name="invitationType">EnumInvitationType</param>
        /// <param name="guId">GuestID</param>
        /// <history>
        /// [erosado] 10/08/2016  Created.
        /// </history>
        private async Task LoadProgram(EnumModule module, EnumInvitationType invitationType, int guId)
        {
            EnumProgram program = EnumProgram.All;

            //Si se tiene el GuestID
            if (guId != 0 && module != EnumModule.Host)
            {
                //Obtenemos la informacion del Guest
                var guest = await BRGuests.GetGuest(guId);

                //Obtenemos la informacion de program
                var result = await BRLeadSources.GetLeadSourceProgram(guest.gulsOriginal);

                //Asignamos el Program
                if (result == EnumToListHelper.GetEnumDescription(EnumProgram.Inhouse))
                {
                    program = EnumProgram.Inhouse;
                }
                else
                {
                    program = EnumProgram.Outhouse;
                }
            }
            //Si NO hay un Guest para obtener el program
            else
            {
                //De que modulo me estan hablando
                switch (module)
                {
                case EnumModule.InHouse:
                    if (invitationType == EnumInvitationType.newExternal)
                    {
                        program = EnumProgram.Inhouse;
                    }
                    break;

                case EnumModule.OutHouse:
                    if (invitationType == EnumInvitationType.newOutHouse)
                    {
                        program = EnumProgram.Outhouse;
                    }
                    break;

                case EnumModule.Host:
                    if (invitationType == EnumInvitationType.newOutHouse)
                    {
                        program = EnumProgram.Outhouse;
                    }
                    else
                    {
                        program = EnumProgram.Inhouse;
                    }
                    break;
                }
            }
            Program         = program;
            AllowReschedule = program == EnumProgram.Inhouse;
        }
示例#6
0
 /// <summary>
 /// Agrega un elemento EnumMenu a la lista actual
 /// </summary>
 /// <param name="item">Enumerado del elemento</param>
 /// <history>
 /// [wtorres]  16/Jul/2016 Created
 /// </history>
 public void Add(EnumMenu item)
 {
     Add(new Item()
     {
         Id       = item.ToString(),
         Name     = EnumToListHelper.GetEnumDescription(item),
         ImageUrl = $"pack://application:,,,/IM.Styles;component/Images/{item.ToString()}.png"
     });
 }
示例#7
0
        /// <summary>
        /// Obtiene los Lead Sources de un usuario
        /// </summary>
        /// <param name="user">Usuario </param>
        /// <param name="programs"> Programa o default('ALL') </param>
        /// <param name="regions">Region o default('ALL') </param>
        /// <returns>List<LeadSourceByUser></returns>
        /// <hystory>
        /// [erosado] 08/03/2016  created
        /// [aalcocer] 17/03/2016 Modified. Agregado parametros por default
        /// [erosado] 07/04/2016  Modified. Se cambio el parametro string Progam a EnumPrograms
        /// [edgrodriguez] 21/May/2016 Modified. El método se volvio asincrónico.
        /// </hystory>

        public async static Task <List <LeadSourceByUser> > GetLeadSourcesByUser(string user, EnumProgram program = EnumProgram.All, string regions = "ALL")
        {
            List <LeadSourceByUser> result = new List <LeadSourceByUser>();
            await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    result = dbContext.USP_OR_GetLeadSourcesByUser(user, EnumToListHelper.GetEnumDescription(program), regions).ToList();
                }
            });

            return(result);
        }
示例#8
0
        /// <summary>
        /// obtiene registros del catalogo PersLSSR
        /// </summary>
        /// <param name="idUser">id del Usuario</param>
        /// <param name="typeAcces">SR. Sales Room | LS. Lead Source | WH. Wharehouse</param>
        /// <returns></returns>
        public static async Task <List <PersonnelAccess> > getPersonnelAcces(string idUser, EnumPlaceType enumPlaceType)
        {
            List <PersonnelAccess> lstPersonnelAcces = await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    string placeType = EnumToListHelper.GetEnumDescription(enumPlaceType);
                    return(dbContext.PersonnelAccessList.Where(pl => pl.plpe == idUser && pl.plLSSR == placeType).ToList());
                }
            });

            return(lstPersonnelAcces);
        }
示例#9
0
        /// <summary>
        /// Obtiene catalogo de Lead Sources .
        /// </summary>
        /// <param name="status"> 0- Sin filtro, 1-Activos, 2. Inactivos </param>
        /// <returns>List<LeadSource></returns>
        /// <history>
        /// [aalcocer] 09/03/2016 Created
        /// [jorcanche] 02/05/2016 Agrego el parametro EnumProgram para que se puede saleccionar
        /// [aalcocer] 09/06/2016 Modified.  Se agregó asincronía.
        /// </history>
        public static async Task <List <LeadSource> > GetLeadSources(int status = 0, EnumProgram program = EnumProgram.All)
        {
            var leadSources = new List <LeadSource>();
            var pro         = EnumToListHelper.GetEnumDescription(program);
            await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    leadSources = dbContext.LeadSources
                                  .Where(ls => status.Equals(1) ? ls.lsA : status.Equals(2) ? !ls.lsA : true)
                                  .Where(ls => program != EnumProgram.All ? ls.lspg == pro : true)
                                  .OrderBy(ls => ls.lsN).ToList();
                }
            });

            return(leadSources);
        }
示例#10
0
        /// <summary>
        /// Configura los controles de fecha.
        /// </summary>
        /// <history>
        /// [edgrodriguez] 05/Mar/2016 Created
        /// </history>
        private void ConfigureDates(bool blnOneDate, EnumPeriod enumPeriod, bool blnDateRange)
        {
            Dictionary <EnumPredefinedDate, string> dictionaryPredefinedDate = EnumToListHelper.GetList <EnumPredefinedDate>();

            cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.DatesSpecified));
            _enumPeriod = enumPeriod;//Asignamos el enumPeriod a la variable privada del formulario.
            switch (enumPeriod)
            {
            //Sin periodo
            case EnumPeriod.None:

                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.Today));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.Yesterday));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisWeek));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousWeek));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisHalf));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousHalf));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisMonth));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousMonth));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisYear));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousYear));
                break;

            //Semanal
            case EnumPeriod.Weekly:
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisWeek));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousWeek));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.TwoWeeksAgo));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThreeWeeksAgo));
                Title += $" ({EnumToListHelper.GetEnumDescription(enumPeriod)})";
                break;

            //Mensual
            case EnumPeriod.Monthly:
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisMonth));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousMonth));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.TwoMonthsAgo));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThreeMonthsAgo));
                Title += $" ({EnumToListHelper.GetEnumDescription(enumPeriod)})";
                break;
            }
            cboDate.SelectedIndex = 0;
            //Si es un rango de fechas.
            cboDate.IsEnabled   = pnlDtmEnd.IsEnabled = !blnOneDate;
            grpDates.Visibility = (blnDateRange) ? Visibility.Visible : Visibility.Collapsed;
        }
示例#11
0
        /// <summary>
        /// Configura los controles de fecha.
        /// </summary>
        /// <history>
        /// [aalcocer] 16/Mar/2016 Created
        /// [aalcocer
        /// </history>
        private void ConfigureDates(bool blnOneDate, EnumPeriod enumPeriod)
        {
            Dictionary <EnumPredefinedDate, string> dictionaryPredefinedDate = EnumToListHelper.GetList <EnumPredefinedDate>();

            cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.DatesSpecified));

            switch (enumPeriod)
            {
            //Sin periodo
            case EnumPeriod.None:

                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.Today));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.Yesterday));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisWeek));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousWeek));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisHalf));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousHalf));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisMonth));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousMonth));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisYear));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousYear));
                break;

            //Semanal
            case EnumPeriod.Weekly:
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisWeek));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousWeek));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.TwoWeeksAgo));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThreeWeeksAgo));
                Title += $" ({EnumToListHelper.GetEnumDescription(enumPeriod)})";
                break;

            //Mensual
            case EnumPeriod.Monthly:
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisMonth));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousMonth));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.TwoMonthsAgo));
                cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThreeMonthsAgo));
                Title += $" ({EnumToListHelper.GetEnumDescription(enumPeriod)})";
                break;
            }
            cboDate.SelectedIndex = 0;
            //Si es un rango de fechas.
            cboDate.IsEnabled = pnlDtmEnd.IsEnabled = !blnOneDate;
        }
示例#12
0
        /// <summary>
        /// Load Invitation Info es el mensaje que sale a lado del menu bar en la invitacion
        /// </summary>
        /// <history>
        /// [erosado] 17/08/2016  Created.
        /// </history>
        public void LoadInvitationInfo()
        {
            string invitType = string.Empty;

            switch (_invitationType)
            {
            case EnumInvitationType.existing:
                invitType = "Existing Guest";
                break;

            case EnumInvitationType.newOutHouse:
                invitType = "New OutHouse";
                break;

            case EnumInvitationType.newExternal:
                invitType = "New External";
                break;
            }
            InvitationInfo = $"Mode: {EnumToListHelper.GetEnumDescription(InvitationMode)} | Module: {_module} | Invitation Type: {invitType}";
        }
示例#13
0
        /// <summary>
        ///  Carga y configuracion del grid PRs
        /// </summary>
        /// <param name="blnOnlyOneRegister"></param>
        /// <param name="blnPRs"></param>
        /// <param name="blnAllPRs"></param>
        /// <history>
        ///   [vku] 25/May/2016 Created
        /// </history>
        private async void LoadPRs(bool blnOnlyOneRegister, bool blnPRs, bool blnAllPRs)
        {
            if (!blnPRs)
            {
                return;
            }

            grdPR.SelectionMode = (blnOnlyOneRegister) ? DataGridSelectionMode.Single : DataGridSelectionMode.Extended;
            pnlPR.Visibility    = Visibility.Visible;
            var x = (await BRLeadSources.GetLeadSourcesByUser(Context.User.User.peID, EnumProgram.Outhouse)).Select(y => y.lsID).ToList();

            _lstPRs = await BRPersonnel.GetPersonnel(string.Join(",", x), roles : EnumToListHelper.GetEnumDescription(EnumRole.PR), status : 0);

            grdPR.ItemsSource = _lstPRs;

            chkAllPR.IsChecked = blnAllPRs;
            chkAllPR.IsEnabled = !blnOnlyOneRegister;

            if (!frmPO._clsFilter._lstPRs.Any())
            {
                return;
            }

            chkAllPR.IsChecked = (grdPR.SelectionMode == DataGridSelectionMode.Extended) && frmPO._clsFilter.AllPRs;

            if (grdPR.ItemsSource != null && !frmPO._clsFilter.AllPRs && !blnOnlyOneRegister)
            {
                grdPR.SelectedItem = null;
                frmPO._clsFilter._lstPRs.ForEach(c =>
                {
                    grdPR.SelectedItems.Add(_lstPRs.FirstOrDefault(pr => pr.peID == c));
                });
            }
            else
            {
                grdPR.SelectedItem = _lstPRs.FirstOrDefault(c => c.peID == frmPO._clsFilter._lstPRs[0]);
            }
        }
示例#14
0
 /// <summary>
 /// Carga personal en el combobox
 /// </summary>
 /// <history>
 /// [erosado] 18/04/2016  Created
 /// [vipacheco] 02/Mayo/2016 Modified --> Se cambio el parametro de string a un tipo EnumRole
 /// </history>
 public void LoadPersonnel()
 {
     StaStart("Loading Personnel...");
     DoGetPersonnel(Context.User.SalesRoom.srID, EnumToListHelper.GetEnumDescription(EnumRole.Liner));
 }
示例#15
0
        /// <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);
            }
        }
示例#16
0
        /// <summary>
        ///   Carga los integrantes
        /// </summary>
        /// <history>
        ///   [vku] 12/Jul/2016 Created
        /// </history>
        public async void LoadIntegrantes(TeamGuestServices team)
        {
            try
            {
                List <Personnel> lstPersonnel = await BRPersonnel.GetPersonnels(blnLiner : true);

                List <Personnel> lstPersonnelIni = await BRPersonnel.GetPersonnels(blnLiner : true);

                List <Personnel> lstliner = new List <Personnel>();
                lstliner.AddRange(lstPersonnel);
                cboIntegrant.ItemsSource = lstPersonnel;
                cboLiner.ItemsSource     = lstliner;
                _lstPersonnel            = lstPersonnel.Where(pe => pe.peTeam == team.tgID && pe.peTeamType == EnumToListHelper.GetEnumDescription(EnumTeamType.TeamPRs) && pe.pePlaceID == team.tglo).ToList();
                _lstOldPersonnel         = lstPersonnelIni.Where(pe => pe.peTeam == team.tgID && pe.peTeamType == EnumToListHelper.GetEnumDescription(EnumTeamType.TeamPRs) && pe.pePlaceID == team.tglo).ToList(); //Cargamos la lista con los datos iniciales

                dgrIntegrants.ItemsSource = _lstPersonnel;

                StatusBarReg.Content = _lstPersonnel.Count + " Integrants.";
                status.Visibility    = Visibility.Collapsed;
            }
            catch (Exception ex)
            {
                UIHelper.ShowMessage(ex);
            }
        }
示例#17
0
        /// <summary>
        /// Carga el combobox de patrones
        /// </summary>
        /// <history>
        /// [emoguel] created 16/05/2016
        /// [erosado] 19/05/2016  Modified. Se agregó asincronía
        /// </history>
        private async void LoadBoss()
        {
            try
            {
                List <PersonnelShort> lstBoss = await BRPersonnel.GetPersonnel(roles : EnumToListHelper.GetEnumDescription(EnumRole.Boss));

                cmblsBoss.ItemsSource = lstBoss;
            }
            catch (Exception ex)
            {
                UIHelper.ShowMessage(ex);
            }
        }
示例#18
0
        /// <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);
            }
        }
示例#19
0
        /// <summary>
        /// Valida que una fecha de una entidad no este en una fecha cerrada con 7 dias
        /// </summary>
        /// <param name="pEntity"></param>
        /// <param name="pDate"></param>
        /// <param name="pDateClose"></param>
        /// <param name="pDescription"></param>
        /// <param name="pCondition"></param>
        /// <returns></returns>
        /// <history>
        /// [vipacheco] 08/Julio/2016 Created
        /// [aalcocer] 12/08/2016 Modified. Se valida si el parametro pDate tiene valor
        /// </history>
        public static bool ValidateCloseDate(EnumEntities pEntity, ref DateTimePicker pDate, DateTime pDateClose, string pDescription = "", bool pCondition = true)
        {
            int    diffDay = 0;
            string items = "", description = "";

            if (pDate.Value == null)
            {
                return(true);
            }

            // Dias transcurridos
            diffDay = (pDateClose - pDate.Value.Value.Date).Days;

            // si la condicion es valida y el editor esta habilitado
            if (pCondition && pDate.IsEnabled)
            {
                items = EnumToListHelper.GetEnumDescription(pEntity);

                // si no se envio una descripcion
                if (pDescription == "")
                {
                    switch (pEntity)
                    {
                    case EnumEntities.Shows:
                        description = "Show";
                        break;

                    case EnumEntities.MealTickets:
                        description = "Meal Ticket";
                        break;

                    case EnumEntities.Sales:
                        description = "Sale";
                        break;

                    case EnumEntities.GiftsReceipts:
                        description = "Gift Receipt";
                        break;
                    }
                }
                else
                {
                    description = pDescription;
                }

                // validamos que la fecha no sea mayor a la fecha actual
                if (pDate.Value.Value.Date > BRHelpers.GetServerDate())
                {
                    UIHelper.ShowMessage(description + " can not be after today.", System.Windows.MessageBoxImage.Exclamation, "Intelligence Marketing");
                    pDate.Focus();
                    return(false);
                }
                // validamos que la fecha no sea menor o igual a la fecha de cierre y no sea mayor o igual a 7 dias y si viene de Show
                else if (pEntity == EnumEntities.Shows)
                {
                    pDate.Focus();
                    return(ValidateCloseDate7Days(pDate.Value.Value.Date, pDateClose.Date, diffDay));
                }
                // validamos que la fecha no sea menor o igual a la fecha de cierre
                else if (pDate.Value.Value.Date <= pDateClose.Date)
                {
                    UIHelper.ShowMessage("It's not allowed to make " + items + " for a closed date.", System.Windows.MessageBoxImage.Exclamation);
                    pDate.Focus();
                    return(false);
                }
            }
            return(true);
        }
示例#20
0
        /// <summary>
        ///   Agrega | Actualiza un equipo de PRs
        /// </summary>
        /// <param name="idUser">Clave de usuario</param>
        /// <param name="team">Objeto a guardar</param>
        /// <param name="blnUpdate">True - Actualiza | False - Agrega</param>
        /// <param name="lstAdd">Personnels a asignar al equipo</param>
        /// <param name="lstDel">Personeels a remover del equipo</param>
        /// <param name="lstChanged">Lista de integrantes que tuvieron cambios</param>
        /// <returns>0. No se guardó | 1. Se guardó | -1. Existe un registro con el mismo ID</returns>
        /// <history>
        ///   [vku] 13/Jul/2016 Created
        /// </history>
        public async static Task <int> SaveTeam(string idUser, TeamGuestServices team, bool blnUpdate, List <Personnel> lstAdd, List <Personnel> lstDel, List <Personnel> lstChanged)
        {
            bool HadPost = false;
            int  nRes    = await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    using (var transaction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
                    {
                        try
                        {
                            #region ChangePersonnel
                            if (lstChanged.Count > 0)
                            {
                                foreach (Personnel pe in lstChanged)
                                {
                                    dbContext.Entry(pe).State = EntityState.Modified;
                                }
                            }
                            #endregion

                            #region Update
                            if (blnUpdate)
                            {
                                dbContext.Entry(team).State = EntityState.Modified;
                            }
                            #endregion
                            #region Add
                            else
                            {
                                TeamGuestServices teamVal = dbContext.TeamsGuestServices.Where(te => te.tgID == team.tgID).FirstOrDefault();
                                if (teamVal != null)
                                {
                                    return(-1);
                                }
                                else
                                {
                                    dbContext.TeamsGuestServices.Add(team);
                                }
                            }
                            #endregion

                            #region addPerssonnel
                            if (lstAdd.Count > 0)
                            {
                                dbContext.Personnels.AsEnumerable().Where(pe => lstAdd.Any(pee => pee.peID == pe.peID)).ToList().ForEach(pe =>
                                {
                                    pe.peTeamType = EnumToListHelper.GetEnumDescription(EnumTeamType.TeamPRs);
                                    pe.pePlaceID  = team.tglo;
                                    pe.peTeam     = team.tgID;
                                    if (pe.pepo == "GS" || pe.pepo == "OPC")
                                    {
                                        HadPost = true;
                                    }
                                    if (BRPrograms.GetProgramByLocation(team.tglo) == EnumToListHelper.GetEnumDescription(EnumProgram.Inhouse))
                                    {
                                        pe.pepo = "GS";
                                    }
                                    else
                                    {
                                        pe.pepo = "OPC";
                                    }

                                    DateTime dtmServerDate = BRHelpers.GetServerDateTime();

                                    TeamLog teamLog     = new TeamLog();
                                    teamLog.tlDT        = dtmServerDate;
                                    teamLog.tlChangedBy = idUser;
                                    teamLog.tlpe        = pe.peID;
                                    teamLog.tlTeamType  = pe.peTeamType;
                                    teamLog.tlPlaceID   = pe.pePlaceID;
                                    teamLog.tlTeam      = pe.peTeam;
                                    dbContext.TeamsLogs.Add(teamLog);
                                    if (HadPost == false)
                                    {
                                        PostLog postLog     = new PostLog();
                                        postLog.ppChangedBy = idUser;
                                        postLog.ppDT        = dtmServerDate;
                                        postLog.pppe        = pe.peID;
                                        postLog.pppo        = pe.pepo;
                                        dbContext.PostsLogs.Add(postLog);
                                    }
                                });
                            }
                            #endregion

                            #region del Personnel
                            if (lstDel.Count > 0)
                            {
                                dbContext.Personnels.AsEnumerable().Where(pe => lstDel.Any(pee => pee.peID == pe.peID)).ToList().ForEach(pe =>
                                {
                                    pe.peTeamType = null;
                                    pe.pePlaceID  = null;
                                    pe.peTeam     = null;
                                    pe.pepo       = null;
                                    pe.peLinerID  = null;

                                    DateTime dtmServerDate = BRHelpers.GetServerDateTime();

                                    TeamLog teamLog     = new TeamLog();
                                    teamLog.tlDT        = dtmServerDate;
                                    teamLog.tlChangedBy = idUser;
                                    teamLog.tlpe        = pe.peID;
                                    teamLog.tlTeamType  = pe.peTeamType;
                                    teamLog.tlPlaceID   = pe.pePlaceID;
                                    teamLog.tlTeam      = pe.peTeam;
                                    dbContext.TeamsLogs.Add(teamLog);

                                    PostLog postLog     = new PostLog();
                                    postLog.ppChangedBy = idUser;
                                    postLog.ppDT        = dtmServerDate;
                                    postLog.pppe        = pe.peID;
                                    postLog.pppo        = pe.pepo;
                                    dbContext.PostsLogs.Add(postLog);
                                });
                            }
                            #endregion

                            int nSave = dbContext.SaveChanges();
                            transaction.Commit();
                            return(nSave);
                        }
                        catch
                        {
                            transaction.Rollback();
                            return(0);
                        }
                    }
                }
            });

            return(nRes);
        }
示例#21
0
 /// <summary>
 /// Carga personal en el combobox
 /// </summary>
 /// <history>
 /// [erosado] 18/04/2016  Created
 /// </history>
 public void LoadPersonnel()
 {
     StaStart("Loading Personnel...");
     DoGetPersonnel(Context.User.LeadSource.lsID, EnumToListHelper.GetEnumDescription(EnumRole.PR));
 }
示例#22
0
        /// <summary>
        /// Obtiene un reporte de Equity
        /// </summary>
        /// <param name="membershipNum">numero de membresia</param>
        /// <param name="company">compania</param>
        /// <param name="clubAgency">agencia</param>
        /// <param name="clubGuest">club</param>
        /// <param name="owner">Ventana padre</param>
        /// <history>
        /// [ecanul] 06/04/2016 Created
        /// [ecanul] 07/04/2016 Modificated Agregado Validaciones y "show" del reporte
        /// [ecanul] 20/04/2016 Modificated Metodo Movido de frmInhouse a EquityHelpers
        /// [ecanul] 06/07/2016 Modified. Agregue subreporte RptEquityMembershipsPrevious
        /// [ecanul] 08/09/2016 Modified. Agregado nombre del web service y Club en el titulo del mensaje que genero un error.
        /// [wtorres] 06/09/2016 Modified. Agregue el parametro owner
        /// </history>
        public static void EquityReport(string membershipNum, Decimal company, int?clubAgency, int?clubGuest,
                                        Window owner)
        {
            EnumClub club;

            // si tiene membrecia
            if (membershipNum != null && membershipNum != "")
            {//si tiene permiso para el reporte de equity
                if (Context.User.HasPermission(EnumPermission.Equity, EnumPermisionLevel.ReadOnly))
                {
                    // // // ShowReport
                    // determinamos el club
                    if (clubAgency != null && clubAgency != 0)
                    {
                        club = (EnumClub)clubAgency;
                    }
                    else if (clubGuest != null && clubGuest != 0)
                    {
                        club = (EnumClub)clubGuest;
                    }
                    else
                    {
                        //Si no se encuentra un club en la tabla de agencies o en la tabla del guest se manda un error diciendo esto y se sale del metodo
                        UIHelper.ShowMessage("Agency Not Found", MessageBoxImage.Error, "Equity Report");
                        return;
                    }

                    Services.ClubesService.RptEquity rptClubes = null;

                    var clubesTitle     = $"Equity Report - Clubes - {EnumToListHelper.GetEnumDescription(club)}";
                    var callCenterTitle = $"Equity Report - Credito y Cobranza - {EnumToListHelper.GetEnumDescription(club)}";
                    try
                    {
                        //obtenemos los datos del reporte del servicio de Clubes
                        rptClubes = ClubesHelper.GetRptEquity(membershipNum, Convert.ToInt32(company), club);
                    }
                    catch (Exception ex)
                    {
                        UIHelper.ShowMessage(ex, clubesTitle);
                        return;
                    }


                    //si no se pudo generenar el reporte en clubes y nos salimos
                    if (rptClubes == null)
                    {
                        UIHelper.ShowMessage("This report did not return data", MessageBoxImage.Exclamation, clubesTitle);
                        return;
                    }
                    //si no encontramos la membrecia en clubles, nos salimos
                    if (rptClubes.Membership == null)
                    {
                        UIHelper.ShowMessage("Membership not found", MessageBoxImage.Exclamation, clubesTitle);
                        return;
                    }
                    Services.CallCenterService.RptEquity rptCallCenter = null;
                    try
                    {
                        //Obtenemos la membrecia en el servicio de Call Center
                        rptCallCenter = CallCenterHelper.GetRptEquity(membershipNum, Convert.ToInt32(company), club);
                    }
                    catch (Exception ex)
                    {
                        UIHelper.ShowMessage(ex, callCenterTitle);
                        return;
                    }

                    // si no se pudo generar reporte en Call Center nos salimos
                    if (rptCallCenter == null)
                    {
                        UIHelper.ShowMessage("This report did not return data", MessageBoxImage.Exclamation, callCenterTitle);
                        return;
                    }

                    // si no encontramos la membresia en Credito y Cobranza Reserva, nos salimos
                    if (rptCallCenter.Membership == null)
                    {
                        UIHelper.ShowMessage("Membership not found", MessageBoxImage.Exclamation, callCenterTitle);
                        return;
                    }

                    // indicamos que ciertas listas del reporte no tienen registros
                    RptEquityHeader header = new RptEquityHeader();
                    header.HasGolfFields = rptClubes.GolfFieldsDetail.Length > 0;
                    header.IsElite       = (club == EnumClub.PalaceElite);

                    var equity = new rptEquity();
                    //datos generales de equity
                    equity.Database.Tables["Membership"].SetDataSource(ObjectHelper.ObjectToList(rptClubes.Membership));
                    equity.Database.Tables["Member"].SetDataSource(ObjectHelper.ObjectToList(rptCallCenter.Membership));
                    //Si no tiene un Salesman  con OPC no se envia nada
                    Services.ClubesService.RptEquitySalesman[] salesmanOPC = rptClubes.Salesmen.Where(sm => sm.Title.Trim() == "OPC").ToArray();
                    if (salesmanOPC.Length > 0)
                    {
                        equity.Database.Tables["SalesmanOPC"].SetDataSource(salesmanOPC);
                    }
                    equity.Database.Tables["Hotel"].SetDataSource(ObjectHelper.ObjectToList(rptClubes.Hotels));
                    equity.Database.Tables["GolfFieldsHeader"].SetDataSource(ObjectHelper.ObjectToList(rptClubes.GolfFieldsHeader));
                    if (rptClubes.Verification != null)
                    {
                        rptClubes.Verification.VOLUMENGOLF = rptCallCenter.Membership.Golf - (rptClubes.Verification.VOLUMENGOLF / EquityHelpers.GetIVAByOffice(rptClubes.Membership.OFFICE));
                    }
                    equity.Database.Tables["Verification"].SetDataSource(ObjectHelper.ObjectToList(rptClubes.Verification));
                    //Subreportes
                    if (club == EnumClub.PalaceElite)
                    {
                        header.HasMembershipsPrevious = rptClubes.MembershipsPrevious.Length > 0;
                        if (header.HasMembershipsPrevious)
                        {
                            equity.Subreports["rptEquityMembershipsPrevious.rpt"].SetDataSource(rptClubes.MembershipsPrevious);
                        }
                    }
                    equity.Subreports["rptEquitySalesman.rpt"].SetDataSource(rptClubes.Salesmen);
                    equity.Subreports["rptEquityCoOwners.rpt"].SetDataSource(rptClubes.CoOwners);

                    equity.Subreports["rptEquityBeneficiaries.rpt"].Database.Tables["Reporte"].SetDataSource(rptClubes.Beneficiaries);
                    equity.Subreports["rptEquityBeneficiaries.rpt"].Database.Tables["Membership"].SetDataSource(ObjectHelper.ObjectToList(rptCallCenter.Membership));

                    equity.Subreports["rptEquityGolfFields.rpt"].SetDataSource(rptClubes.GolfFieldsDetail);
                    equity.Subreports["rptEquityRoomTypes.rpt"].SetDataSource(rptClubes.RoomTypes);

                    RptEquityProvision[] provisionsSNORM = rptCallCenter.Provisions.Where(p => p.IsSNORM == true).ToArray();
                    header.HasSNORM = provisionsSNORM.Length > 0;
                    if (header.HasSNORM)
                    {
                        equity.Subreports["rptEquityProvisionsSNORM.rpt"].SetDataSource(provisionsSNORM);
                    }

                    RptEquityProvision[] provisionsSAIRF = rptCallCenter.Provisions.Where(p => p.IsSAIRF == true).ToArray();
                    header.HasSAIRF = provisionsSAIRF.Length > 0;
                    equity.Subreports["rptEquityProvisionsSAIRF.rpt"].SetDataSource(provisionsSAIRF);

                    RptEquityProvision[] provisionsSRCI = rptCallCenter.Provisions.Where(p => p.IsSRCI == true).ToArray();
                    header.HasSRCI = provisionsSRCI.Length > 0;
                    equity.Subreports["rptEquityProvisionsSRCI.rpt"].SetDataSource(provisionsSRCI);

                    RptEquityProvision[] provisionsSCOMP = rptCallCenter.Provisions.Where(p => p.IsSCOMP == true).ToArray();
                    header.HasSCOMP = provisionsSCOMP.Length > 0;
                    equity.Subreports["rptEquityProvisionsSCOMP.rpt"].SetDataSource(provisionsSCOMP);

                    RptEquityProvision[] provisionsSCRG = rptCallCenter.Provisions.Where(p => p.IsSCRG == true).ToArray();
                    header.HasSCRG = provisionsSCRG.Length > 0;
                    equity.Subreports["rptEquityProvisionsSCRG.rpt"].SetDataSource(provisionsSCRG);

                    RptEquityProvision[] provisionsSIGR = rptCallCenter.Provisions.Where(p => p.IsSIGR == true).ToArray();
                    header.HasSIGR = provisionsSIGR.Length > 0;
                    equity.Subreports["rptEquityProvisionsSIGR.rpt"].SetDataSource(provisionsSIGR);

                    RptEquityProvision[] provisionsSVEC = rptCallCenter.Provisions.Where(p => p.IsSVEC == true).ToArray();
                    header.HasSVEC = provisionsSVEC.Length > 0;
                    equity.Subreports["rptEquityProvisionsSVEC.rpt"].SetDataSource(provisionsSVEC);

                    RptEquityProvision[] provisionsSREF = rptCallCenter.Provisions.Where(p => p.IsSREF == true).ToArray();
                    header.HasSREF = provisionsSREF.Length > 0;
                    equity.Subreports["rptEquityProvisionsSREF.rpt"].SetDataSource(provisionsSREF);

                    equity.Database.Tables["Header"].SetDataSource(ObjectHelper.ObjectToList(header));
                    if (rptCallCenter.Reservations.Length != 0)
                    {
                        equity.Subreports["rptEquityReservations.rpt"].SetDataSource(rptCallCenter.Reservations);
                    }

                    if (rptClubes.BalanceElectronicPurseHeaders.Length == 0)
                    {
                        equity.Subreports["rptEquityBalanceElectronicPurse.rpt"].ReportDefinition.Sections["GroupHeaderSection1"].SectionFormat.EnableSuppress = true;
                    }
                    equity.Subreports["rptEquityBalanceElectronicPurse.rpt"].Database.Tables["EquityBalanceElectronicPurseDetail"].SetDataSource(rptClubes.BalanceElectronicPurseDetails);
                    equity.Subreports["rptEquityBalanceElectronicPurse.rpt"].Database.Tables["BalanceElectronicPurseHeader"].SetDataSource(rptClubes.BalanceElectronicPurseHeaders);
                    var sum = rptCallCenter.Membership.Down - rptCallCenter.Membership.Down_escrow - rptCallCenter.Membership.Down_bal;
                    if (sum > 1)
                    {
                        equity.Subreports["rptEquityPaymentPromises.rpt"].SetDataSource(rptClubes.PaymentPromises);
                    }
                    if (club == EnumClub.PalaceElite)
                    {
                        equity.Subreports["rptEquityWeeksNights.rpt"].Database.Tables["WeeksNightsDetail"].SetDataSource(rptClubes.WeeksNightsDetails);
                        equity.Subreports["rptEquityWeeksNights.rpt"].Database.Tables["WeeksNightsHeader"].SetDataSource(rptClubes.WeeksNightsHeaders);
                    }
                    if (club == EnumClub.PalaceElite)
                    {
                        equity.Subreports["rptEquityGolfRCI.rpt"].SetDataSource(rptClubes.GolfRCI);
                    }
                    else
                    {
                        equity.ReportDefinition.ReportObjects["srptGolfRCI"].ObjectFormat.EnableSuppress = true;
                    }
                    if (club == EnumClub.PalaceElite)
                    {
                        equity.Subreports["rptEquityPromotions.rpt"].SetDataSource(rptClubes.Promotions);
                    }

                    if (club == EnumClub.PalaceElite)
                    {
                        if (rptClubes.MemberExtension != null)
                        {
                            if (rptClubes.MemberExtension.WHOLESALER)
                            {
                                equity.ReportDefinition.Sections["Section2"].SectionFormat.EnableSuppress = false;
                            }
                        }
                    }

                    var frm = new frmViewer(equity);
                    frm.Owner = owner;
                    frm.ShowDialog();
                }
                else
                {
                    UIHelper.ShowMessage("Access denied");
                }
            }
        }
示例#23
0
 /// <summary>
 /// Obtiene el reporte Production By Lead Source & Market(Monthly).
 /// </summary>
 /// <returns>List of RptProductionByLeadSourceMarketMonthly</returns>
 /// <history>
 /// [edgrodriguez] 21/Abr/2016 Created
 /// </history>
 public static async Task <List <RptProductionByLeadSourceMarketMonthly> > GetRptProductionByLeadSourceMarketMonthly(DateTime?dtmStart, DateTime?dtmEnd, EnumQuinellas quinellas, EnumExternalInvitation external, EnumBasedOnArrival basedOnArrival, string leadSources = "ALL", EnumProgram program = EnumProgram.All)
 {
     return(await Task.Run(() =>
     {
         using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
         {
             return dbContext.USP_OR_RptProductionByLeadSourceMarketMonthly(dtmStart, dtmEnd, leadSources, EnumToListHelper.GetEnumDescription(program), Convert.ToBoolean(quinellas), Convert.ToInt32(external), Convert.ToBoolean(basedOnArrival)).ToList();
         }
     }));
 }
示例#24
0
        /// <summary>
        /// Guarda un Sale con asincronia y con transaction
        /// </summary>
        /// <param name="saleOld">Sale Original antes de que se modificará</param>
        /// <param name="saleNew">Sale despues de que se modificará</param>
        /// <param name="obpayments">Observable Collection de tipo Payments</param>
        /// <param name="isEnabledsaRefMember">Para indicar como encuentra habilitado en txtsaRefMember.enabled </param>
        /// <param name="hoursDifSalesRoom">La direfencia de horas del Sales Room</param>
        /// <param name="user">Usuario que hizo el cambio</param>
        /// <param name="saleAmount">El monto de la venta</param>
        /// <param name="lstSalesSalesman">Listado de los SalesSalesmen que se modificaron</param>
        /// <param name="saleAmountOriginal">El monto de la venta original</param>
        /// <param name="ipMachine">Ip de la maquina en el que se hizo el cambio</param>
        /// <param name="lstSalesSalesmenChanges">Listadoque SalesSalesmen que se remplazaron</param>
        /// <param name="authorizedBy">Quien autorizo los cambios</param>
        /// <param name="isOnlySaveSalesSalesmen">Cuando este parametro esta en "True" indica que solo se guardara los SalesSalesmens</param>
        /// <history>
        /// [jorcanche]  created 02/ago/2016
        /// </history>
        public static async Task <int> SaveSale(Sale saleOld, Sale saleNew, ObservableCollection <Payment> obpayments, bool isEnabledsaRefMember,
                                                short hoursDifSalesRoom, string user, decimal saleAmount,
                                                IEnumerable <SalesSalesman> lstSalesSalesman, decimal saleAmountOriginal, string ipMachine,
                                                IEnumerable <SalesmenChanges> lstSalesSalesmenChanges, string authorizedBy, bool isOnlySaveSalesSalesmen = false)
        {
            return(await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    using (var transaction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
                    {
                        try
                        {
                            //Si el parametro isOnlySaveSalesSalesmen esta en "True" No permitira hacer ningun movimiento mas que el de
                            //"Guardo de los movimientos de los SalesSalesmen"
                            if (!isOnlySaveSalesSalesmen)
                            {
                                #region   Guardamos el Sale
                                //*****************************************************************************************************
                                //                                      Guardamos el Sale
                                //*****************************************************************************************************
                                //1.- Guardamos cambios en el Sale si hubo cambios
                                if (!ObjectHelper.IsEquals(saleNew, saleOld))
                                {
                                    dbContext.Entry(saleNew).State = EntityState.Modified;
                                }
                                #endregion

                                #region Guardamos los pagos
                                //*****************************************************************************************************
                                //                                      Guardamos los pagos
                                //*****************************************************************************************************
                                //2.- Eliminamos uno o mas registros que contengan el Id Sale en la tabla Payments
                                //2.1.-  Obtenemos los Payments que estan actualmente en la base con este Sale
                                var lstPayments = dbContext.Payments.Where(p => p.pasa == saleNew.saID);
                                //2.2 Si hubo Payments los eliminamos
                                if (lstPayments.Any())
                                {
                                    dbContext.Payments.RemoveRange(lstPayments);
                                }
                                //2.3 Guardamos los nuevos Payments.
                                foreach (var payment in obpayments)
                                {
                                    dbContext.Entry(payment).State = EntityState.Added;
                                }
                                #endregion

                                #region  Marcamos las ventas como actualizadas
                                //*****************************************************************************************************
                                //                                   Marcamos las ventas como actualizada
                                //*****************************************************************************************************
                                //3.-Si hubo cambio con la anterior venta se procede
                                if (isEnabledsaRefMember && saleNew.saReference != saleOld.saReference)
                                {
                                    //3.1.- si tenia venta anterior, la marcamos como actualizada
                                    if (saleOld.saReference != null)
                                    {
                                        //3.2.- marcamos la venta anterior actual como actualizada
                                        dbContext.USP_OR_UpdateSaleUpdated(saleOld.saReference, false);
                                    }
                                    //3.3.- actualizamos los vendedores del huesped en base a los vendedores de la venta
                                    dbContext.USP_OR_UpdateSaleUpdated(saleNew.saReference, true);
                                }
                                #endregion

                                #region  Actualizamos los vendedores del huesped en base a los vendedores de la venta
                                //*****************************************************************************************************
                                //          Actualizamos los vendedores del huesped en base a los vendedores de la venta
                                //*****************************************************************************************************
                                //4.- Actualizamos
                                dbContext.USP_OR_UpdateGuestSalesmen(saleNew.sagu, saleNew.saID);
                                #endregion

                                #region Si cambio de Guest ID realizamos lo cambios
                                //*****************************************************************************************************
                                //                              Si cambio de Guest ID realizamos lo cambios
                                //*****************************************************************************************************
                                //5.- Si hubo cambio en el sagu
                                if (saleOld.sagu != saleNew.sagu)
                                {
                                    //5.1.- Marcamos como venta el guest Id Nuevo
                                    dbContext.USP_OR_UpdateGuestSale(saleNew.sagu, true);

                                    //5.2.- Desmarcamos como venta el Guest Id anterior si ya no le quedan ventas
                                    if (!(from s in dbContext.Sales where s.sagu == saleNew.sagu select s).Any())
                                    {
                                        dbContext.USP_OR_UpdateGuestSale(saleOld.sagu, false);
                                    }
                                }
                                #endregion
                            }

                            #region Guarda los movimientos de los SalesSalesmen
                            //*****************************************************************************************************
                            //                             Guarda los movimientos de los SalesSalesmen
                            //*****************************************************************************************************
                            //7.1.-Extraemos el Listado de los SaleMan que se modificaron
                            //7.2.-Se elimina la propiedad virtual Persaonel para que no marque error de repeticion de llaves,
                            // ya que personel tiene la llave de peID y la llave de la tabla SalesSaleman tiene igual la llave smpe y marcan conflicto
                            var lstSalesSalemanAdd = new List <SalesSalesman>();
                            lstSalesSalesman.Where(ss => !ss.smSale || ss.smSaleAmountOwn != saleAmount || ss.smSaleAmountWith != saleAmount).
                            ToList().ForEach(x =>
                            {
                                var ss = new SalesSalesman();
                                ObjectHelper.CopyProperties(ss, x);
                                lstSalesSalemanAdd.Add(ss);
                            });
                            //7.3.- Eliminamos todos los registros de la tabla SalesSalesmen que sean de este sale
                            var lstSalesSalesmanDelete = dbContext.SalesSalesmen.Where(salesSalesman => salesSalesman.smsa == saleNew.saID);
                            if (lstSalesSalesmanDelete.Any())
                            {
                                dbContext.SalesSalesmen.RemoveRange(lstSalesSalesmanDelete);
                            }

                            //7.4.- Se guardan los SalesSaleman que se modificaron
                            foreach (var salesSalesSaleman in lstSalesSalemanAdd)
                            {
                                dbContext.Entry(salesSalesSaleman).State = EntityState.Added;
                            }
                            #endregion

                            //Si el parametro isOnlySaveSalesSalesmen esta en "True" No permitira hacer ningun movimiento mas que el de
                            //"Guardo de los movimientos de los SalesSalesmen"
                            if (!isOnlySaveSalesSalesmen)
                            {
                                #region Guardamos el movimiento de venta del huesped
                                //*****************************************************************************************************
                                //                             Guardamos el movimiento de venta del huesped
                                //*****************************************************************************************************

                                //8.- Guardamos
                                dbContext.USP_OR_SaveGuestMovement(saleNew.sagu, EnumToListHelper.GetEnumDescription(EnumGuestsMovementsType.Sale),
                                                                   user, Environment.MachineName, ipMachine);
                                #endregion

                                #region Guardamos los cambios de vendedores y la persona que autorizo los cambios
                                //*****************************************************************************************************
                                //               Guardamos los cambios de vendedores y la persona que autorizo los cambios
                                //*****************************************************************************************************
                                //9.- Si No se autorizo no hacemos ningun cambio
                                if (!string.IsNullOrEmpty(authorizedBy))
                                {
                                    //9.1.- Guardamos cambios
                                    foreach (var salesmenChange in lstSalesSalesmenChanges)
                                    {
                                        dbContext.USP_OR_SaveSalesmenChanges
                                            (saleNew.saID, authorizedBy, user, salesmenChange.roN, salesmenChange.schPosition,
                                            salesmenChange.schOldSalesman, salesmenChange.schNewSalesman, null, "SL");
                                    }
                                }

                                #endregion
                            }

                            //Si no hubo ningun problema guardamos cambios
                            var respuesta = dbContext.SaveChanges();

                            if (!isOnlySaveSalesSalesmen)
                            {
                                #region Guardamos el historico de la venta
                                //*****************************************************************************************************
                                //                               Guardamos el historico de la venta
                                //*****************************************************************************************************
                                //6.1.- Guardamos SaleLog
                                dbContext.USP_OR_SaveSaleLog(saleNew.saID, hoursDifSalesRoom, user);

                                #endregion
                            }

                            //Confirmamos la transaccion
                            transaction.Commit();
                            return respuesta;
                        }
                        catch (Exception)
                        {
                            //De lo contrario mandamos el mensaje de error en la interfaz y realizamos un Rollback
                            transaction.Rollback();
                            throw;
                        }
                    }
                }
            }));
        }
        /// <summary>
        ///   Carga los integrantes
        /// </summary>
        /// <history>
        ///   [vku] 23/Jul/2016 Created
        /// </history>
        public async void LoadIntegrantes(TeamSalesmen team)
        {
            try
            {
                List <Personnel> lstPersonnel = await BRPersonnel.GetPersonnels(blnLiner : true);

                cboIntegrant.ItemsSource  = lstPersonnel;
                _lstPersonnel             = lstPersonnel.Where(pe => pe.peTeam == team.tsID && pe.peTeamType == EnumToListHelper.GetEnumDescription(EnumTeamType.TeamSalesmen) && pe.pePlaceID == team.tssr).OrderBy(pe => pe.pepo).ThenBy(pe => pe.peN).ToList();
                dgrIntegrants.ItemsSource = _lstPersonnel;
                List <Personnel> lstPersonnelIni = await BRPersonnel.GetPersonnels();

                _lstOldPersonnel     = lstPersonnelIni.Where(pe => pe.peTeam == team.tsID && pe.peTeamType == EnumToListHelper.GetEnumDescription(EnumTeamType.TeamSalesmen) && pe.pePlaceID == team.tssr).OrderBy(pe => pe.pepo).ThenBy(pe => pe.peN).ToList(); //Cargamos la lista con los datos iniciales
                StatusBarReg.Content = _lstPersonnel.Count + " Integrants.";
                status.Visibility    = Visibility.Collapsed;
            }
            catch (Exception ex)
            {
                UIHelper.ShowMessage(ex);
            }
        }
示例#26
0
        /// <summary>
        ///    Agrega | Actualiza un equipo de PRs
        /// </summary>
        /// <param name="idUser">Clave de usuario</param>
        /// <param name="team">Objeto a guardar</param>
        /// <param name="blnUpdate">True - Actualiza | False - Agrega</param>
        /// <param name="lstAdd">Personnels a asignar al equipo</param>
        /// <param name="lstDel">Personeels a remover del equipo</param>
        /// <param name="lstChanged">Lista de integrantes que tuvieron cambios</param>
        /// <returns>0. No se guardó | 1. Se guardó | -1. Existe un registro con el mismo ID</returns>
        /// <history>
        ///   [vku] 23/Jul/2016 Created
        /// </history>
        public async static Task <int> SaveTeam(string idUser, TeamSalesmen team, bool blnUpdate, List <Personnel> lstAdd, List <Personnel> lstDel, List <Personnel> lstChanged)
        {
            int nRes = await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    using (var transaction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
                    {
                        try
                        {
                            #region ChangePersonnel
                            if (lstChanged.Count > 0)
                            {
                                foreach (Personnel p in lstChanged)
                                {
                                    dbContext.Entry(p).State = EntityState.Modified;

                                    DateTime dtmServerDate = BRHelpers.GetServerDateTime();

                                    PostLog postLog     = new PostLog();
                                    postLog.ppChangedBy = idUser;
                                    postLog.ppDT        = dtmServerDate;
                                    postLog.pppe        = p.peID;
                                    postLog.pppo        = p.pepo;
                                    dbContext.PostsLogs.Add(postLog);
                                }
                            }
                            #endregion

                            #region Update
                            if (blnUpdate)
                            {
                                dbContext.Entry(team).State = EntityState.Modified;
                            }
                            #endregion
                            #region Add
                            else
                            {
                                TeamSalesmen teamVal = dbContext.TeamsSalesmen.Where(te => te.tsID == team.tsID).FirstOrDefault();
                                if (teamVal != null)
                                {
                                    return(-1);
                                }
                                else
                                {
                                    dbContext.TeamsSalesmen.Add(team);
                                }
                            }
                            #endregion

                            #region addPerssonnel
                            if (lstAdd.Count > 0)
                            {
                                dbContext.Personnels.AsEnumerable().Where(pe => lstAdd.Any(pee => pee.peID == pe.peID)).ToList().ForEach(pe =>
                                {
                                    pe.peTeamType = EnumToListHelper.GetEnumDescription(EnumTeamType.TeamSalesmen);
                                    pe.pePlaceID  = team.tssr;
                                    pe.peTeam     = team.tsID;

                                    DateTime dtmServerDate = BRHelpers.GetServerDateTime();

                                    TeamLog teamLog     = new TeamLog();
                                    teamLog.tlDT        = dtmServerDate;
                                    teamLog.tlChangedBy = idUser;
                                    teamLog.tlpe        = pe.peID;
                                    teamLog.tlTeamType  = pe.peTeamType;
                                    teamLog.tlPlaceID   = pe.pePlaceID;
                                    teamLog.tlTeam      = pe.peTeam;
                                    dbContext.TeamsLogs.Add(teamLog);
                                    Personnel p = lstAdd.Where(pa => pa.peID == pe.peID).FirstOrDefault();
                                    if (p.pepo != pe.pepo)
                                    {
                                        dbContext.Entry(p).State = EntityState.Modified;

                                        PostLog postLog     = new PostLog();
                                        postLog.ppChangedBy = idUser;
                                        postLog.ppDT        = dtmServerDate;
                                        postLog.pppe        = pe.peID;
                                        postLog.pppo        = p.pepo;
                                        dbContext.PostsLogs.Add(postLog);
                                    }
                                });
                            }
                            #endregion

                            #region del Personnel
                            if (lstDel.Count > 0)
                            {
                                dbContext.Personnels.AsEnumerable().Where(pe => lstDel.Any(pee => pee.peID == pe.peID)).ToList().ForEach(pe =>
                                {
                                    pe.peTeamType = null;
                                    pe.pePlaceID  = null;
                                    pe.peTeam     = null;

                                    DateTime dtmServerDate = BRHelpers.GetServerDateTime();

                                    TeamLog teamLog     = new TeamLog();
                                    teamLog.tlDT        = dtmServerDate;
                                    teamLog.tlChangedBy = idUser;
                                    teamLog.tlpe        = pe.peID;
                                    teamLog.tlTeamType  = pe.peTeamType;
                                    teamLog.tlPlaceID   = pe.pePlaceID;
                                    teamLog.tlTeam      = pe.peTeam;
                                    dbContext.TeamsLogs.Add(teamLog);
                                });
                            }
                            #endregion

                            int nSave = dbContext.SaveChanges();
                            transaction.Commit();
                            return(nSave);
                        }
                        catch
                        {
                            transaction.Rollback();
                            return(0);
                        }
                    }
                }
            });

            return(nRes);
        }
示例#27
0
        /// <summary>
        /// Carga y configuracion del grid Programs
        /// </summary>
        /// <param name="blnPrograms"></param>
        /// <history>
        /// [aalcocer] 09/07/2016 Created
        /// </history>
        private async void LoadPrograms(bool blnPrograms)
        {
            if (!blnPrograms)
            {
                pnlPrograms.Visibility = Visibility.Collapsed;
                return;
            }

            _lstPrograms = await BRPrograms.GetPrograms();

            dtgPrograms.ItemsSource = _lstPrograms;

            if (frmPrs._clsFilter.EnumProgram == EnumProgram.All)
            {
                chkAllPrograms.IsChecked = true;
            }
            else
            {
                dtgPrograms.SelectedItem = _lstPrograms.FirstOrDefault(c => c.pgID == EnumToListHelper.GetEnumDescription(frmPrs._clsFilter.EnumProgram));
            }
        }
示例#28
0
 /// <summary>
 /// Determina si el usuario tiene cierto nivel de un permiso
 /// </summary>
 /// <param name="permission">Permiso</param>
 /// <param name="level">Nivel</param>
 /// <history>
 /// [jorcanche]  08/Mar/2016 Created
 /// </history>
 public bool HasPermission(EnumPermission permission, EnumPermisionLevel level)
 {
     return(this.Permissions.Exists(p => p.pppm == EnumToListHelper.GetEnumDescription(permission) && p.pppl >= (int)level));
 }
示例#29
0
 /// <summary>
 /// Determina si el usuario tiene cierto rol
 /// </summary>
 /// <param name="role">Rol</param>
 /// <history>
 /// [jorcanche]  08/Mar/2016 Created
 /// </history>
 public bool HasRole(EnumRole role)
 {
     return(this.Roles.Exists(p => p.prro == EnumToListHelper.GetEnumDescription(role)));
 }