Beispiel #1
0
        public List <PotencialdoKAporFamilia> ListarValoresPorUnidadeNegocio(Guid unidadeNegocioId, int ano)
        {
            var lista = new List <PotencialdoKAporFamilia>();

            string fetch = @"<fetch aggregate='true' no-lock='true' returntotalrecordcount='true' >
                              <entity name='itbc_metadokaporsubfamilia' >
                                <attribute name='itbc_metaplanejada' alias='valor_planejado' aggregate='sum' />
                                <attribute name='itbc_metarealizada' alias='valor_realizado' aggregate='sum' />
                                <link-entity name='itbc_metadokaporfamilia' from='itbc_metadokaporfamiliaid' to='itbc_metadokaporfamiliaid' alias='fam' >
                                  <attribute name='itbc_metadokaporfamiliaid' 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 potencialFamilia = new PotencialdoKAporFamilia(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(potencialFamilia);
            }

            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 RetornoDWKaFamilia(int ano, int trimestre)
        {
            List <MetadaUnidade> lstMetadaUnidade = RepositoryService.MetadaUnidade.ListarMetas(ano);

            DataTable dtMetaCanal = RepositoryService.PotencialdoKAporFamilia.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());
                FamiliaProduto mFamiliaProduto = RepositoryService.FamiliaProduto.ObterPor(item["CD_familia"].ToString());

                if (mUnidadeNegocio != null && mContato != null && mSegmento != null && mFamiliaProduto != null)
                {
                    PotencialdoKAporFamilia mPotencialdoKAporFamilia = RepositoryService.PotencialdoKAporFamilia.ObterPor(mUnidadeNegocio.ID.Value, mContato.ID.Value, ano, trimestre, mSegmento.ID.Value, mFamiliaProduto.ID.Value);
                    if (mPotencialdoKAporFamilia != null)
                    {
                        mPotencialdoKAporFamilia.PotencialRealizado = decimal.Parse(item["vlr"].ToString());
                        RepositoryService.PotencialdoKAporFamilia.Update(mPotencialdoKAporFamilia);
                    }
                }
            }
        }