public void Criar(PotencialdoSupervisorporSegmento mPotencialdoSupervisorporSegmento, List <Model.OrcamentoDetalhado> lstOrcamentoDetalhado)
        {
            PotencialdoSupervisorporFamilia mPotencialdoSupervisorporFamilia;
            var lstorcamentoporsegfamilia = (from x in lstOrcamentoDetalhado
                                             group x by string.Format("{0}/{1}", x.Familia.Id, x.Segmento.Id));

            foreach (var OrcaSegFamilia in lstorcamentoporsegfamilia)
            {
                mPotencialdoSupervisorporFamilia = RepositoryService.PotencialdoSupervisorporFamilia.Obter(OrcaSegFamilia.First().Segmento.Id, OrcaSegFamilia.First().Familia.Id, mPotencialdoSupervisorporSegmento.ID.Value, OrcaSegFamilia.First().Canal.Id, mPotencialdoSupervisorporSegmento.Trimestre.Value);
                if (mPotencialdoSupervisorporFamilia == null)
                {
                    mPotencialdoSupervisorporFamilia                  = new PotencialdoSupervisorporFamilia(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider);
                    mPotencialdoSupervisorporFamilia.ID               = Guid.NewGuid();
                    mPotencialdoSupervisorporFamilia.Supervisor       = new Lookup(OrcaSegFamilia.First().Canal.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Usuario>());
                    mPotencialdoSupervisorporFamilia.UnidadedeNegocio = mPotencialdoSupervisorporSegmento.UnidadedeNegocios;
                    mPotencialdoSupervisorporFamilia.Ano              = mPotencialdoSupervisorporSegmento.Ano;
                    mPotencialdoSupervisorporFamilia.Trimestre        = mPotencialdoSupervisorporSegmento.Trimestre;
                    mPotencialdoSupervisorporFamilia.Segmento         = new Lookup(OrcaSegFamilia.First().Segmento.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Segmento>());
                    mPotencialdoSupervisorporFamilia.FamiliadoProduto = new Lookup(OrcaSegFamilia.First().Familia.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.FamiliaProduto>());
                    mPotencialdoSupervisorporFamilia.PotencialdoSupervisorporSegmento = new Lookup(mPotencialdoSupervisorporSegmento.ID.Value, SDKore.Crm.Util.Utility.GetEntityName <Model.PotencialdoSupervisorporSegmento>());

                    mPotencialdoSupervisorporFamilia.Nome = (mPotencialdoSupervisorporSegmento.Nome + " - " + OrcaSegFamilia.First().Familia.Name).ToString().Length > 99 ?
                                                            (mPotencialdoSupervisorporSegmento.Nome + " - " + OrcaSegFamilia.First().Familia.Name).Substring(1, 99)
                        : (mPotencialdoSupervisorporSegmento.Nome + " - " + OrcaSegFamilia.First().Familia.Name);

                    RepositoryService.PotencialdoSupervisorporFamilia.Create(mPotencialdoSupervisorporFamilia);
                }
                ServicePotencialdoSupervisorporSubfamilia.Criar(mPotencialdoSupervisorporFamilia, OrcaSegFamilia.ToList());
            }
        }
Пример #2
0
        public void AtualizarFaturamentoDoSegmentoSupervisor(int ano, int trimestre)
        {
            List <MetadaUnidade> lstMetadaUnidade = RepositoryService.MetadaUnidade.ListarMetas(ano);

            if (lstMetadaUnidade.Count == 0)
            {
                return;
            }

            DataTable dtMetaCanal = RepositoryService.PotencialdoSupervisorporSegmento.ListarMetaTrimestreDW(ano, trimestre, lstMetadaUnidade);

            foreach (DataRow item in dtMetaCanal.Rows)
            {
                UnidadeNegocio mUnidadeNegocio = RepositoryService.UnidadeNegocio.ObterPorChaveIntegracao(item["CD_Unidade_Negocio"].ToString());
                Usuario        mUsuario        = RepositoryService.Usuario.ObterPor(item["CD_representante"].ToString());
                Segmento       mSegmento       = RepositoryService.Segmento.ObterPor(item["cd_segmento"].ToString());

                if (mUnidadeNegocio != null && mUsuario != null && mSegmento != null)
                {
                    PotencialdoSupervisorporSegmento mPotencialdoSupervisorporSegmento = RepositoryService.PotencialdoSupervisorporSegmento.Obter(mUnidadeNegocio.ID.Value, mUsuario.ID.Value, ano, trimestre, mSegmento.ID.Value);
                    if (mPotencialdoSupervisorporSegmento != null)
                    {
                        mPotencialdoSupervisorporSegmento.PotencialRealizado = decimal.Parse(item["vlr"].ToString());
                        RepositoryService.PotencialdoSupervisorporSegmento.Update(mPotencialdoSupervisorporSegmento);
                    }
                }
            }
        }
        public List <PotencialdoSupervisorporSegmento> ListarValoresPorUnidadeNegocio(Guid unidadeNegocioId, int ano, Domain.Enum.OrcamentodaUnidade.Trimestres?trimestre = null)
        {
            var lista = new List <PotencialdoSupervisorporSegmento>();

            string fetch = @"<fetch aggregate='true' no-lock='true'>
                              <entity name='itbc_metadokaporsegmento' >
                                <attribute name='itbc_metaplanejada' alias='valor_planejado' aggregate='sum' />
                                <attribute name='itbc_metarealizada' alias='valor_realizado' aggregate='sum' />
                                <attribute name='itbc_supervisorid' alias='supervisor' groupby='true' />
                                <attribute name='itbc_segmentoid' alias='segmento' groupby='true' />
                                <attribute name='itbc_trimestre' alias='trimestre' groupby='true' />
                                <filter type='and' >
                                  <condition attribute='itbc_ano' operator='eq' value='{0}' />
                                  <condition attribute='itbc_unidadedenegocioid' operator='eq' value='{1}' />
                                  {2}
                                </filter>
                              </entity>
                            </fetch>";

            string filterTrimestre = string.Empty;

            if (trimestre.HasValue)
            {
                filterTrimestre = string.Format(@"<condition attribute='itbc_trimestre' operator='eq' value='{0}' />", (int)trimestre.Value);
            }

            fetch = string.Format(fetch, ano, unidadeNegocioId, filterTrimestre);

            var retrieveMultiple = new RetrieveMultipleRequest()
            {
                Query = new FetchExpression(fetch)
            };

            EntityCollection collection = ((RetrieveMultipleResponse)this.Execute(retrieveMultiple)).EntityCollection;

            foreach (var item in collection.Entities)
            {
                var segmento   = ((EntityReference)((AliasedValue)item.Attributes["segmento"]).Value);
                var supervisor = ((EntityReference)((AliasedValue)item.Attributes["supervisor"]).Value);

                var potencial = new PotencialdoSupervisorporSegmento(OrganizationName, IsOffline, Provider)
                {
                    PotencialPlanejado = ((Money)((AliasedValue)item.Attributes["valor_planejado"]).Value).Value,
                    PotencialRealizado = ((Money)((AliasedValue)item.Attributes["valor_realizado"]).Value).Value,
                    Segmento           = new SDKore.DomainModel.Lookup(segmento.Id, segmento.Name, segmento.LogicalName),
                    Supervisor         = new SDKore.DomainModel.Lookup(supervisor.Id, supervisor.Name, supervisor.LogicalName),
                    Trimestre          = ((OptionSetValue)((AliasedValue)item.Attributes["trimestre"]).Value).Value
                };

                lista.Add(potencial);
            }

            return(lista);
        }