예제 #1
0
        public void AtualizarFaturamentoDoSegmentoRepresentante(int ano, int trimestre)
        {
            List <MetadaUnidade> lstMetadaUnidade = RepositoryService.MetadaUnidade.ListarMetas(ano);

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

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

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

                if (mUnidadeNegocio != null && mContato != null && mSegmento != null)
                {
                    PotencialdoKAporSegmento mPotencialdoKAporSegmento = RepositoryService.PotencialdoKAporSegmento.Obter(mUnidadeNegocio.ID.Value, mContato.ID.Value, ano, trimestre, mSegmento.ID.Value);
                    if (mPotencialdoKAporSegmento != null)
                    {
                        mPotencialdoKAporSegmento.PotencialRealizado = item.Field <decimal>("vlr");
                        RepositoryService.PotencialdoKAporSegmento.Update(mPotencialdoKAporSegmento);
                    }
                }
            }
        }
        public void Criar(PotencialdoKAporTrimestre mPotencialdoKATrimestre, List <Model.OrcamentoDetalhado> lstOrcamentoDetalhado, Guid representanteId, int numTrimestre)
        {
            PotencialdoKAporSegmento mPotencialdoKAporSegmento = null;
            var lstOrcamentoporSegmento = (from x in lstOrcamentoDetalhado
                                           group x by string.Format("{0}", x.Familia.Id));



            foreach (var OrcaSegmento in lstOrcamentoporSegmento)
            {
                mPotencialdoKATrimestre = RepositoryService.PotencialdoKAporTrimestre.Retrieve(mPotencialdoKATrimestre.ID.Value);
                List <PotencialdoKAporSegmento> tempSegmento = RepositoryService.PotencialdoKAporSegmento.__Obter(mPotencialdoKATrimestre.UnidadedeNegocio.Id, representanteId, numTrimestre, mPotencialdoKATrimestre.ID.Value, OrcaSegmento.First().Segmento.Id);
                if (tempSegmento.Count == 0)
                {
                    PortfoliodoKeyAccountRepresentantes portfolioKA = RepositoryService.PortfoliodoKeyAccountRepresentantes.ObterPor(mPotencialdoKATrimestre.UnidadedeNegocio.Id, representanteId);

                    if (portfolioKA.Segmento != null)
                    {
                        if (OrcaSegmento.First().Segmento.Id != portfolioKA.Segmento.Id)
                        {
                            continue;
                        }
                    }

                    mPotencialdoKAporSegmento                      = new PotencialdoKAporSegmento(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider);
                    mPotencialdoKAporSegmento.ID                   = Guid.NewGuid();
                    mPotencialdoKAporSegmento.Nome                 = mPotencialdoKATrimestre.Nome + " - " + OrcaSegmento.First().Segmento.Name;
                    mPotencialdoKAporSegmento.UnidadedeNegocio     = mPotencialdoKATrimestre.UnidadedeNegocio;
                    mPotencialdoKAporSegmento.Ano                  = mPotencialdoKATrimestre.Ano;
                    mPotencialdoKAporSegmento.KAouRepresentante    = new Lookup(representanteId, SDKore.Crm.Util.Utility.GetEntityName <Model.Contato>());
                    mPotencialdoKAporSegmento.Segmento             = new Lookup(OrcaSegmento.First().Segmento.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Segmento>());
                    mPotencialdoKAporSegmento.Trimestre            = numTrimestre;
                    mPotencialdoKAporSegmento.PotencialKaTrimestre = new Lookup(mPotencialdoKATrimestre.ID.Value, SDKore.Crm.Util.Utility.GetEntityName <Model.PotencialdoKAporTrimestre>());

                    RepositoryService.PotencialdoKAporSegmento.Create(mPotencialdoKAporSegmento);

                    ServicePotencialdoKAporFamilia.Criar(mPotencialdoKAporSegmento, OrcaSegmento.ToList(), representanteId, numTrimestre);
                }
                else
                {
                    ServicePotencialdoKAporFamilia.Criar(tempSegmento[0], OrcaSegmento.ToList(), representanteId, numTrimestre);
                }
            }
        }
예제 #3
0
        public List <PotencialdoKAporSegmento> ListarValoresPorUnidadeNegocio(Guid unidadeNegocioId, int ano)
        {
            var lista = new List <PotencialdoKAporSegmento>();

            string fetch = @"<fetch aggregate='true' no-lock='true' returntotalrecordcount='true' >
                              <entity name='itbc_metadokaporfamilia' >
                                <attribute name='itbc_metaplanejada' alias='valor_planejado' aggregate='sum' />
                                <attribute name='itbc_metarealizada' alias='valor_realizado' aggregate='sum' />
                                <link-entity name='itbc_metadokaporsegmento' from='itbc_metadokaporsegmentoid' to='itbc_metadokaporsegmentoid' alias='seg' >
                                  <attribute name='itbc_metadokaporsegmentoid' alias='id' groupby='true' />
                                  <filter type='and' >
                                    <condition attribute='itbc_ano' operator='eq' value='{0}' />
                                    <condition attribute='itbc_unidadedenegocioid' operator='eq' value='{1}' />
                                  </filter>
                                </link-entity>
                              </entity>
                            </fetch>";

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

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

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

            foreach (var item in collection.Entities)
            {
                var potencialSegmento = new PotencialdoKAporSegmento(OrganizationName, IsOffline, Provider)
                {
                    ID = (Guid)((AliasedValue)(item.Attributes["id"])).Value,
                    PotencialPlanejado = ((Money)((AliasedValue)item.Attributes["valor_planejado"]).Value).Value,
                    PotencialRealizado = ((Money)((AliasedValue)item.Attributes["valor_realizado"]).Value).Value
                };

                lista.Add(potencialSegmento);
            }

            return(lista);
        }
        public void Criar(PotencialdoKAporSegmento mPotencialdoKAporSegmento, List <Model.OrcamentoDetalhado> lstOrcamentoDetalhado, Guid representanteId, int numTrimestre)
        {
            PotencialdoKAporFamilia mPotencialdoKAporFamilia = null;

            var lstorcamentoporsegfamilia = (from x in lstOrcamentoDetalhado
                                             group x by string.Format("{0}/{1}", x.Familia.Id, x.Segmento.Id));

            foreach (var OrcaSegFamilia in lstorcamentoporsegfamilia)
            {
                mPotencialdoKAporSegmento = RepositoryService.PotencialdoKAporSegmento.Retrieve(mPotencialdoKAporSegmento.ID.Value);
                PotencialdoKAporFamilia tempFamilia = RepositoryService.PotencialdoKAporFamilia.ObterPor(OrcaSegFamilia.First().Segmento.Id, OrcaSegFamilia.First().Familia.Id, representanteId, numTrimestre);
                if (tempFamilia == null)
                {
                    mPotencialdoKAporFamilia    = new PotencialdoKAporFamilia(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider);
                    mPotencialdoKAporFamilia.ID = Guid.NewGuid();
                    mPotencialdoKAporFamilia.KAouRepresentante = new Lookup(representanteId, SDKore.Crm.Util.Utility.GetEntityName <Model.Contato>());
                    mPotencialdoKAporFamilia.UnidadedeNegocio  = mPotencialdoKAporSegmento.UnidadedeNegocio;
                    mPotencialdoKAporFamilia.Ano                      = mPotencialdoKAporSegmento.Ano;
                    mPotencialdoKAporFamilia.Trimestre                = numTrimestre;
                    mPotencialdoKAporFamilia.Segmento                 = new Lookup(OrcaSegFamilia.First().Segmento.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Segmento>());
                    mPotencialdoKAporFamilia.FamiliadeProduto         = new Lookup(OrcaSegFamilia.First().Familia.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.FamiliaProduto>());
                    mPotencialdoKAporFamilia.PotencialdoKAporSegmento = new Lookup(mPotencialdoKAporSegmento.ID.Value, SDKore.Crm.Util.Utility.GetEntityName <Model.PotencialdoKAporSegmento>());

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

                    RepositoryService.PotencialdoKAporFamilia.Create(mPotencialdoKAporFamilia);
                }
                if (tempFamilia != null)
                {
                    ServicePotencialdoKAporSubFamilia.Criar(tempFamilia, OrcaSegFamilia.ToList(), representanteId, numTrimestre);
                }
                else
                {
                    ServicePotencialdoKAporSubFamilia.Criar(mPotencialdoKAporFamilia, OrcaSegFamilia.ToList(), representanteId, numTrimestre);
                }
            }
        }
        public void AtualizarFaturamentoDoSegmentoRepresentante(int ano, int trimestre)
        {
            List <MetadaUnidade> lstMetadaUnidade = RepositoryService.MetadaUnidade.ListarMetas(ano);

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

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

            List <UnidadeNegocio> unidadeNegocioAll = RepositoryService.UnidadeNegocio.ListarTodosChaveIntegracao();
            Dictionary <string, UnidadeNegocio> unidadeNegocioMap = new Dictionary <string, UnidadeNegocio>();

            foreach (var tmpVar in unidadeNegocioAll)
            {
                if (tmpVar.ChaveIntegracao != null)
                {
                    unidadeNegocioMap.Add(tmpVar.ChaveIntegracao, tmpVar);
                }
            }

            List <Contato> representatesAll = RepositoryService.Contato.ListarKaRepresentantes(null);
            Dictionary <string, Contato> representatesMap = new Dictionary <string, Contato>();

            foreach (var tmpVar in representatesAll)
            {
                if (tmpVar.CodigoRepresentante != null)
                {
                    representatesMap.Add(tmpVar.CodigoRepresentante, tmpVar);
                }
            }

            List <Segmento> segmentosAll = RepositoryService.Segmento.ListarTodos();
            Dictionary <string, Segmento> segmentosMap = new Dictionary <string, Segmento>();

            foreach (var tmpVar in segmentosAll)
            {
                if (tmpVar.CodigoSegmento != null)
                {
                    segmentosMap.Add(tmpVar.CodigoSegmento, tmpVar);
                }
            }


            foreach (DataRow item in dtMetaCanal.Rows)
            {
                if (item.IsNull("CD_Unidade_Negocio") || item.IsNull("CD_representante"))
                {
                    continue;
                }

                if (unidadeNegocioMap.ContainsKey(item.Field <string>("CD_Unidade_Negocio")) &&
                    representatesMap.ContainsKey(item["CD_representante"].ToString()) &&
                    segmentosMap.ContainsKey(item["cd_segmento"].ToString()))
                {
                    UnidadeNegocio mUnidadeNegocio = unidadeNegocioMap[item.Field <string>("CD_Unidade_Negocio")];
                    Contato        mContato        = representatesMap[item["CD_representante"].ToString()];
                    Segmento       mSeg            = segmentosMap[item["cd_segmento"].ToString()];

                    PotencialdoKAporSegmento mPotencialdoKAporSegmento = RepositoryService.PotencialdoKAporSegmento.Obter(mUnidadeNegocio.ID.Value, mContato.ID.Value, ano, trimestre, mSeg.ID.Value);
                    if (mPotencialdoKAporSegmento != null)
                    {
                        mPotencialdoKAporSegmento.PotencialRealizado = item.Field <decimal>("vlr");
                        RepositoryService.PotencialdoKAporSegmento.Update(mPotencialdoKAporSegmento);
                    }
                }
            }
        }