Esempio n. 1
0
        public void Criar(MetadoCanalporSubFamilia mMetadoCanalporSubFamilia, List <Model.OrcamentoDetalhado> lstOrcamentoDetalhado)
        {
            MetadoCanalporProduto mMetadoCanalporProduto;
            var lstOrcamentoporSegSubFamilia = (from x in lstOrcamentoDetalhado
                                                group x by string.Format("{0}/{1}/{2}/{3}", x.Segmento.Id, x.Familia.Id, x.SubFamilia.Id, x.Produto.Id));

            foreach (var OrcaProduto in lstOrcamentoporSegSubFamilia)
            {
                if (OrcaProduto.First().Produto.Id != Guid.Empty)
                {
                    mMetadoCanalporProduto = RepositoryService.MetadoCanalporProduto.Obter(OrcaProduto.First().Canal.Id, OrcaProduto.First().Produto.Id, OrcaProduto.First().SubFamilia.Id, mMetadoCanalporSubFamilia.ID.Value, (int)mMetadoCanalporSubFamilia.Ano.Value, (int)mMetadoCanalporSubFamilia.Trimestre);

                    if (mMetadoCanalporProduto == null)
                    {
                        mMetadoCanalporProduto           = new MetadoCanalporProduto(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider);
                        mMetadoCanalporProduto.ID        = Guid.NewGuid();
                        mMetadoCanalporProduto.Ano       = mMetadoCanalporSubFamilia.Ano;
                        mMetadoCanalporProduto.Trimestre = mMetadoCanalporSubFamilia.Trimestre;
                        mMetadoCanalporProduto.Produto   = new Lookup(OrcaProduto.First().Produto.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Product>());
                        mMetadoCanalporProduto.MetadoCanalporSubFamilia = new Lookup(mMetadoCanalporSubFamilia.ID.Value, SDKore.Crm.Util.Utility.GetEntityName <Model.MetadoCanalporSubFamilia>());
                        mMetadoCanalporProduto.Nome  = OrcaProduto.First().Produto.Name;
                        mMetadoCanalporProduto.Canal = new Lookup(OrcaProduto.First().Canal.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Conta>());

                        RepositoryService.MetadoCanalporProduto.Create(mMetadoCanalporProduto);
                        ServiceMetaDetalhadadoCanalporProduto.Criar(mMetadoCanalporProduto);
                    }
                }
            }
        }
        public void RetornoDWMetaCanalSubFamilia(int ano, int trimestre)
        {
            List <MetadaUnidade> lstMetadaUnidade = RepositoryService.MetadaUnidade.ListarMetas(ano);

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

            DataTable dtMetaCanalSubFamilia = RepositoryService.MetadoCanalporSubFamilia.ListarMetaCanalSubFamiliaDW(ano, trimestre, lstMetadaUnidade);

            foreach (DataRow item in dtMetaCanalSubFamilia.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());
                SubfamiliaProduto mSubfamiliaProduto = RepositoryService.SubfamiliaProduto.ObterPor(item["CD_subfamilia"].ToString());

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

                    if (mMetadoCanalporSubFamilia != null)
                    {
                        mMetadoCanalporSubFamilia.MetaRealizada = decimal.Parse(item["vlr"].ToString());
                        RepositoryService.MetadoCanalporSubFamilia.Update(mMetadoCanalporSubFamilia);
                    }
                }
            }
        }
        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);
            }
        }
        public List <MetadoCanalporSubFamilia> ListarValoresPorUnidadeNegocio(Guid unidadeNegocioId, int ano, Guid canalId)
        {
            var lista = new List <MetadoCanalporSubFamilia>();

            string fetch = @"<fetch aggregate='true' no-lock='true' >
                              <entity name='itbc_metadocanalporproduto' >
                                <attribute name='itbc_metaplanejada' alias='valor_planejado' aggregate='sum' />
                                <attribute name='itbc_metarealizada' alias='valor_realizado' aggregate='sum' />
                                <link-entity name='itbc_metadocanalporsubfamilia' from='itbc_metadocanalporsubfamiliaid' to='itbc_metadocanalporsubfamiliaid' >
                                  <attribute name='itbc_metadocanalporsubfamiliaid' alias='id' groupby='true' />
                                  <filter type='and' >
                                    <condition attribute='itbc_unidadedenegociosid' operator='eq' value='{1}' />
                                    <condition attribute='itbc_ano' operator='eq' value='{0}' />
                                    <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 MetadoCanalporSubFamilia(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);
        }