Ejemplo n.º 1
0
        public void Criar(PotencialdoKARepresentante mPotencialdoKARepresentante, List <Model.OrcamentoDetalhado> lstOrcamentoDetalhado)
        {
            int numTrimestreFormatado = 0;
            PotencialdoKAporTrimestre mPotencialdoKAporTrimestre;

            for (int cont = 1; cont <= 4; cont++)
            {
                #region monta trimeste
                switch (cont)
                {
                case 1:
                    numTrimestreFormatado = (int)Enum.OrcamentodaUnidade.Trimestres.Trimestre1;
                    break;

                case 2:
                    numTrimestreFormatado = (int)Enum.OrcamentodaUnidade.Trimestres.Trimestre2;
                    break;

                case 3:
                    numTrimestreFormatado = (int)Enum.OrcamentodaUnidade.Trimestres.Trimestre3;
                    break;

                case 4:
                    numTrimestreFormatado = (int)Enum.OrcamentodaUnidade.Trimestres.Trimestre4;
                    break;
                }
                #endregion

                Console.WriteLine("Trimestre " + (int)numTrimestreFormatado + " em  " + cont + "/ " + cont + " as " + DateTime.Now.ToString());


                mPotencialdoKAporTrimestre = RepositoryService.PotencialdoKAporTrimestre.ObterPor(mPotencialdoKARepresentante.ID.Value, mPotencialdoKARepresentante.KeyAccountRepresentante.Id, numTrimestreFormatado);
                if (mPotencialdoKAporTrimestre == null)
                {
                    mPotencialdoKAporTrimestre                            = new PotencialdoKAporTrimestre(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider);
                    mPotencialdoKAporTrimestre.ID                         = Guid.NewGuid();
                    mPotencialdoKAporTrimestre.Nome                       = "Trimestre " + numTrimestreFormatado + " / " + mPotencialdoKARepresentante.Ano + "  -  Unidade de Negocio " + mPotencialdoKARepresentante.UnidadedeNegocio.Name;
                    mPotencialdoKAporTrimestre.UnidadedeNegocio           = mPotencialdoKARepresentante.UnidadedeNegocio;
                    mPotencialdoKAporTrimestre.Ano                        = mPotencialdoKARepresentante.Ano;
                    mPotencialdoKAporTrimestre.Trimestre                  = numTrimestreFormatado;
                    mPotencialdoKAporTrimestre.PotencialdoKARepresentante = new Lookup(mPotencialdoKARepresentante.ID.Value, SDKore.Crm.Util.Utility.GetEntityName <Model.PotencialdoKARepresentante>());

                    RepositoryService.PotencialdoKAporTrimestre.Create(mPotencialdoKAporTrimestre);
                }

                ServicePotencialdoKAporSegmento.Criar(mPotencialdoKAporTrimestre, lstOrcamentoDetalhado, mPotencialdoKARepresentante.KeyAccountRepresentante.Id, numTrimestreFormatado);
            }
        }
        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);
                }
            }
        }
        public List <PotencialdoKAporTrimestre> ListarValoresPorUnidadeNegocio(Guid unidadeNegocioId, int ano)
        {
            var lista = new List <PotencialdoKAporTrimestre>();

            string fetch = @"<fetch aggregate='true' no-lock='true' returntotalrecordcount='true' >
                              <entity name='itbc_metadokaporsegmento' >
                                <attribute name='itbc_metaplanejada' alias='valor_planejado' aggregate='sum' />
                                <attribute name='itbc_metarealizada' alias='valor_realizado' aggregate='sum' />
                                <link-entity name='itbc_metatrimestreka' from='itbc_metatrimestrekaid' to='itbc_metatrimestrekaid' alias='tri' >
                                  <attribute name='itbc_metatrimestrekaid' alias='id' groupby='true' />
                                  <filter type='and' >
                                    <condition attribute='itbc_ano' operator='eq' value='{0}' />
                                    <condition attribute='itbc_unidadenegocioid' 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 potencialTrimestre = new PotencialdoKAporTrimestre(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(potencialTrimestre);
            }

            return(lista);
        }
Ejemplo n.º 4
0
        public void AtualizarRealizadoDoRepresentantePorTrimestre(int ano, int trimestre)
        {
            List <PotencialdoKAporTrimestre> lstPotencialTrimestre = RepositoryService.PotencialdoKAporTrimestre.ListarPorTrimestre(ano, trimestre);

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

            List <UnidadeNegocio> filterUnidadeNeg = new List <UnidadeNegocio>();

            foreach (var lstTmpUnidade in lstPotencialTrimestre)
            {
                UnidadeNegocio filterUnTmp = RepositoryService.UnidadeNegocio.ObterPor(lstTmpUnidade.UnidadedeNegocio.Id);
                filterUnidadeNeg.Add(filterUnTmp);
            }

            DataTable dtMetaCanal = RepositoryService.PotencialdoKAporTrimestre.ListarMetaTrimestreDW(ano, trimestre, filterUnidadeNeg);

            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);
                }
            }

            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()))
                {
                    UnidadeNegocio mUnidadeNegocio = unidadeNegocioMap[item.Field <string>("CD_Unidade_Negocio")];
                    Contato        mContato        = representatesMap[item["CD_representante"].ToString()];

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