Esempio n. 1
0
        public void RetornoDWMetaCanalFamilia(int ano, int trimestre)
        {
            List <MetadaUnidade> lstMetadaUnidade = RepositoryService.MetadaUnidade.ListarMetas(ano);

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

            DataTable dtMetaCanalFamilia = RepositoryService.MetadoCanalporFamilia.ListarMetaCanalFamiliaDW(ano, trimestre, lstMetadaUnidade);

            foreach (DataRow item in dtMetaCanalFamilia.Rows)
            {
                UnidadeNegocio mUnidadeNegocio = RepositoryService.UnidadeNegocio.ObterPorChaveIntegracao(item["CD_Unidade_Negocio"].ToString());
                Segmento       mSegmento       = RepositoryService.Segmento.ObterPor(item["cd_segmento"].ToString());
                FamiliaProduto mFamiliaProduto = RepositoryService.FamiliaProduto.ObterPor(item["CD_familia"].ToString());
                Conta          mConta          = RepositoryService.Conta.ObterCanal(item["CD_Emitente"].ToString());

                if (mUnidadeNegocio != null && mConta != null && mSegmento != null && mFamiliaProduto != null)
                {
                    MetadoCanalporFamilia mMetadoCanalporFamilia = RepositoryService.MetadoCanalporFamilia.Obterpor(mUnidadeNegocio.ID.Value, mConta.ID.Value, ano, trimestre, mSegmento.ID.Value, mFamiliaProduto.ID.Value);

                    if (mMetadoCanalporFamilia != null)
                    {
                        mMetadoCanalporFamilia.MetaRealizada = decimal.Parse(item["vlr"].ToString());
                        RepositoryService.MetadoCanalporFamilia.Update(mMetadoCanalporFamilia);
                    }
                }
            }
        }
        public void Criar(MetadoCanalporFamilia mMetadoCanalporFamilia, List <Model.OrcamentoDetalhado> lstOrcamentoDetalhado)
        {
            MetadoCanalporSubFamilia mMetadoCanalporSubFamilia;
            var lstOrcamentoporSegSubFamilia = (from x in lstOrcamentoDetalhado
                                                group x by string.Format("{0}/{1}/{2}", x.Segmento.Id, x.Familia.Id, x.SubFamilia.Id));

            foreach (var OrcaSegSubFamilia in lstOrcamentoporSegSubFamilia)
            {
                //mMetadoCanalporSubFamilia = RepositoryService.MetadoCanalporSubFamilia.Obterpor(OrcaSegSubFamilia.First().Canal.Id, OrcaSegSubFamilia.First().Familia.Id, mMetadoCanalporFamilia.ID.Value, OrcaSegSubFamilia.First().Segmento.Id, OrcaSegSubFamilia.First().SubFamilia.Id, mMetadoCanalporFamilia.Trimestre.Value);
                mMetadoCanalporSubFamilia = RepositoryService.MetadoCanalporSubFamilia.Obterpor(OrcaSegSubFamilia.First().UnidadeNegocio.Id, OrcaSegSubFamilia.First().Canal.Id, mMetadoCanalporFamilia.Ano.Value, mMetadoCanalporFamilia.Trimestre.Value, OrcaSegSubFamilia.First().Segmento.Id, OrcaSegSubFamilia.First().Familia.Id, OrcaSegSubFamilia.First().SubFamilia.Id);
                if (mMetadoCanalporSubFamilia == null)
                {
                    mMetadoCanalporSubFamilia    = new MetadoCanalporSubFamilia(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider);
                    mMetadoCanalporSubFamilia.ID = Guid.NewGuid();
                    mMetadoCanalporSubFamilia.UnidadedeNegocio = mMetadoCanalporFamilia.UnidadedeNegocio;
                    mMetadoCanalporSubFamilia.Ano                   = mMetadoCanalporFamilia.Ano;
                    mMetadoCanalporSubFamilia.Trimestre             = mMetadoCanalporFamilia.Trimestre;
                    mMetadoCanalporSubFamilia.Segmento              = new Lookup(OrcaSegSubFamilia.First().Segmento.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Segmento>());
                    mMetadoCanalporSubFamilia.Familia               = new Lookup(OrcaSegSubFamilia.First().Familia.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.FamiliaProduto>());
                    mMetadoCanalporSubFamilia.SubFamilia            = new Lookup(OrcaSegSubFamilia.First().SubFamilia.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.SubfamiliaProduto>());
                    mMetadoCanalporSubFamilia.MetadoCanalporFamilia = new Lookup(mMetadoCanalporFamilia.ID.Value, SDKore.Crm.Util.Utility.GetEntityName <Model.MetadoCanalporFamilia>());
                    mMetadoCanalporSubFamilia.Nome                  = (mMetadoCanalporFamilia.Nome + " - " + OrcaSegSubFamilia.First().SubFamilia.Name).Length > 99 ? (mMetadoCanalporFamilia.Nome + " - " + OrcaSegSubFamilia.First().SubFamilia.Name).Substring(1, 99) : (mMetadoCanalporFamilia.Nome + " - " + OrcaSegSubFamilia.First().SubFamilia.Name);
                    mMetadoCanalporSubFamilia.Canal                 = new Lookup(OrcaSegSubFamilia.First().Canal.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Conta>());
                    RepositoryService.MetadoCanalporSubFamilia.Create(mMetadoCanalporSubFamilia);
                }
                //ServiceOrcamentodoCanalporProduto.Criar(mMetadoCanalporSubFamilia, OrcaSegSubFamilia.ToList(), OrcaSegSubFamilia.First().SubFamilia.Id, canalId);
                ServiceMetadoCanalporProduto.Criar(mMetadoCanalporSubFamilia, lstOrcamentoDetalhado);
            }
        }
Esempio n. 3
0
        public List <MetadoCanalporFamilia> ListarValoresPorUnidadeNegocio(Guid unidadeNegocioId, int ano, Guid canalId)
        {
            var lista = new List <MetadoCanalporFamilia>();

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


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

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

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

            foreach (var item in collection.Entities)
            {
                var meta = new MetadoCanalporFamilia(OrganizationName, IsOffline, Provider)
                {
                    ID            = (Guid)((AliasedValue)(item.Attributes["id"])).Value,
                    MetaPlanejada = ((Money)((AliasedValue)item.Attributes["valor_planejado"]).Value).Value,
                    MetaRealizada = ((Money)((AliasedValue)item.Attributes["valor_realizado"]).Value).Value
                };

                lista.Add(meta);
            }

            return(lista);
        }