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

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

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

            foreach (DataRow item in dtMetaCanal.Rows)
            {
                UnidadeNegocio    mUnidadeNegocio    = RepositoryService.UnidadeNegocio.ObterPorChaveIntegracao(item["CD_Unidade_Negocio"].ToString());
                Usuario           mUsuario           = RepositoryService.Usuario.ObterPor(item["CD_representante"].ToString());
                Segmento          mSegmento          = RepositoryService.Segmento.ObterPor(item["cd_segmento"].ToString());
                FamiliaProduto    mFamiliaProduto    = RepositoryService.FamiliaProduto.ObterPor(item["CD_familia"].ToString());
                SubfamiliaProduto mSubfamiliaProduto = RepositoryService.SubfamiliaProduto.ObterPor(item["CD_subfamilia"].ToString());

                if (mUnidadeNegocio != null && mUsuario != null && mSegmento != null && mFamiliaProduto != null && mSubfamiliaProduto != null)
                {
                    PotencialdoSupervisorporSubfamilia mPotencialdoSupervisorporSubfamilia = RepositoryService.PotencialdoSupervisorporSubfamilia
                                                                                             .Obter(mUnidadeNegocio.ID.Value, mUsuario.ID.Value, ano, trimestre, mSegmento.ID.Value, mFamiliaProduto.ID.Value, mSubfamiliaProduto.ID.Value);

                    if (mPotencialdoSupervisorporSubfamilia != null)
                    {
                        mPotencialdoSupervisorporSubfamilia.PotencialRealizado = decimal.Parse(item["vlr"].ToString());
                        RepositoryService.PotencialdoSupervisorporSubfamilia.Update(mPotencialdoSupervisorporSubfamilia);
                    }
                }
            }
        }
Esempio n. 2
0
        public void Criar(PotencialdoSupervisorporFamilia mPotencialdoSupervisorporFamilia, List <Model.OrcamentoDetalhado> lstOrcamentoDetalhado)
        {
            PotencialdoSupervisorporSubfamilia mPotencialdoSupervisorporSubfamilia;
            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)
            {
                mPotencialdoSupervisorporSubfamilia = RepositoryService.PotencialdoSupervisorporSubfamilia.Obterpor(OrcaSegSubFamilia.First().Canal.Id, OrcaSegSubFamilia.First().Familia.Id, mPotencialdoSupervisorporFamilia.ID.Value, OrcaSegSubFamilia.First().Segmento.Id, OrcaSegSubFamilia.First().SubFamilia.Id, mPotencialdoSupervisorporFamilia.Trimestre.Value);
                if (mPotencialdoSupervisorporSubfamilia == null)
                {
                    mPotencialdoSupervisorporSubfamilia    = new PotencialdoSupervisorporSubfamilia(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider);
                    mPotencialdoSupervisorporSubfamilia.ID = Guid.NewGuid();
                    mPotencialdoSupervisorporSubfamilia.UnidadedeNegocio = mPotencialdoSupervisorporFamilia.UnidadedeNegocio;
                    mPotencialdoSupervisorporSubfamilia.Ano                 = mPotencialdoSupervisorporFamilia.Ano;
                    mPotencialdoSupervisorporSubfamilia.Trimestre           = mPotencialdoSupervisorporFamilia.Trimestre;
                    mPotencialdoSupervisorporSubfamilia.Segmento            = new Lookup(OrcaSegSubFamilia.First().Segmento.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Segmento>());
                    mPotencialdoSupervisorporSubfamilia.FamiliadoProduto    = new Lookup(OrcaSegSubFamilia.First().Familia.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.FamiliaProduto>());
                    mPotencialdoSupervisorporSubfamilia.SubfamiliadeProduto = new Lookup(OrcaSegSubFamilia.First().SubFamilia.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.SubfamiliaProduto>());
                    mPotencialdoSupervisorporSubfamilia.PotencialdoSupervisorporSubfamiliaID = new Lookup(mPotencialdoSupervisorporFamilia.ID.Value, SDKore.Crm.Util.Utility.GetEntityName <Model.PotencialdoSupervisorporFamilia>());
                    mPotencialdoSupervisorporSubfamilia.Nome       = (mPotencialdoSupervisorporFamilia.Nome + " - " + OrcaSegSubFamilia.First().SubFamilia.Name).Length > 99 ? (mPotencialdoSupervisorporFamilia.Nome + " - " + OrcaSegSubFamilia.First().SubFamilia.Name).Substring(1, 99) : (mPotencialdoSupervisorporFamilia.Nome + " - " + OrcaSegSubFamilia.First().SubFamilia.Name);
                    mPotencialdoSupervisorporSubfamilia.Supervisor = new Lookup(OrcaSegSubFamilia.First().Canal.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Usuario>());
                    RepositoryService.PotencialdoSupervisorporSubfamilia.Create(mPotencialdoSupervisorporSubfamilia);
                }
                ServicePotencialdoSupervisorporProduto.Criar(mPotencialdoSupervisorporSubfamilia, OrcaSegSubFamilia.ToList());
            }
        }
        public void Criar(PotencialdoSupervisorporSubfamilia mPotencialdoSupervisorporSubfamilia, List <Model.OrcamentoDetalhado> lstOrcamentoDetalhado)
        {
            PotencialdoSupervisorporProduto mPotencialdoSupervisorporProduto;
            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)
                {
                    //mPotencialdoSupervisorporProduto = RepositoryService.PotencialdoSupervisorporProduto.Obter(OrcaProduto.First().Canal.Id, OrcaProduto.First().Produto.Id, OrcaProduto.First().SubFamilia.Id, mPotencialdoSupervisorporSubfamilia.ID.Value, (int)mPotencialdoSupervisorporSubfamilia.Trimestre);
                    mPotencialdoSupervisorporProduto = RepositoryService.PotencialdoSupervisorporProduto.Obter(OrcaProduto.First().Canal.Id, OrcaProduto.First().Produto.Id, mPotencialdoSupervisorporSubfamilia.ID.Value, (int)mPotencialdoSupervisorporSubfamilia.Trimestre);

                    if (mPotencialdoSupervisorporProduto == null)
                    {
                        mPotencialdoSupervisorporProduto           = new PotencialdoSupervisorporProduto(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider);
                        mPotencialdoSupervisorporProduto.ID        = Guid.NewGuid();
                        mPotencialdoSupervisorporProduto.Ano       = mPotencialdoSupervisorporSubfamilia.Ano;
                        mPotencialdoSupervisorporProduto.Trimestre = mPotencialdoSupervisorporSubfamilia.Trimestre;
                        mPotencialdoSupervisorporProduto.Produto   = new Lookup(OrcaProduto.First().Produto.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Product>());
                        mPotencialdoSupervisorporProduto.PotencialdoSupervisorPorProduto = new Lookup(mPotencialdoSupervisorporSubfamilia.ID.Value, SDKore.Crm.Util.Utility.GetEntityName <Model.PotencialdoSupervisorporSubfamilia>());
                        mPotencialdoSupervisorporProduto.Nome       = OrcaProduto.First().Produto.Name;
                        mPotencialdoSupervisorporProduto.Supervisor = new Lookup(OrcaProduto.First().Canal.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Usuario>());

                        RepositoryService.PotencialdoSupervisorporProduto.Create(mPotencialdoSupervisorporProduto);

                        ServicePotencialDetalhadodoSupervisorporProduto.Criar(mPotencialdoSupervisorporProduto);
                    }
                }
            }
        }
        public List <PotencialdoSupervisorporSubfamilia> ListarValoresPorUnidadeNegocio(Guid unidadeNegocioId, int ano, Domain.Enum.OrcamentodaUnidade.Trimestres?trimestre = null)
        {
            var lista = new List <PotencialdoSupervisorporSubfamilia>();

            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' />
                                <attribute name='itbc_supervisorid' alias='supervisor' groupby='true' />
                                <attribute name='itbc_segmentoid' alias='segmento' groupby='true' />
                                <attribute name='itbc_trimestre' alias='trimestre' groupby='true' />
                                <filter type='and'>
                                  <condition attribute='itbc_ano' operator='eq' value='{0}' />
                                  <condition attribute='itbc_unidadedenegocioid' operator='eq' value='{1}' />
                                  {2}
                                </filter>
                                <link-entity name='itbc_metadokaporfamilia' from='itbc_metadokaporsegmentoid' to='itbc_metadokaporsegmentoid' >
                                  <attribute name='itbc_familiadeprodutoid' alias='familia' groupby='true' />
                                  <link-entity name='itbc_metadokaporsubfamilia' from='itbc_metadokaporfamiliaid' to='itbc_metadokaporfamiliaid' >
                                    <attribute name='itbc_subfamiliadeprodutoid' alias='subfamilia' groupby='true' />
                                  </link-entity>
                                </link-entity>
                              </entity>
                            </fetch>";

            string filterTrimestre = string.Empty;

            if (trimestre.HasValue)
            {
                filterTrimestre = string.Format(@"<condition attribute='itbc_trimestre' operator='eq' value='{0}' />", (int)trimestre.Value);
            }

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

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

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

            foreach (var item in collection.Entities)
            {
                var segmento   = ((EntityReference)((AliasedValue)item.Attributes["segmento"]).Value);
                var familia    = ((EntityReference)((AliasedValue)item.Attributes["familia"]).Value);
                var subfamilia = ((EntityReference)((AliasedValue)item.Attributes["subfamilia"]).Value);
                var supervisor = ((EntityReference)((AliasedValue)item.Attributes["supervisor"]).Value);

                var potencial = new PotencialdoSupervisorporSubfamilia(OrganizationName, IsOffline, Provider)
                {
                    PotencialPlanejado  = ((Money)((AliasedValue)item.Attributes["valor_planejado"]).Value).Value,
                    PotencialRealizado  = ((Money)((AliasedValue)item.Attributes["valor_realizado"]).Value).Value,
                    FamiliadoProduto    = new SDKore.DomainModel.Lookup(familia.Id, familia.Name, familia.LogicalName),
                    Supervisor          = new SDKore.DomainModel.Lookup(supervisor.Id, supervisor.Name, supervisor.LogicalName),
                    SubfamiliadeProduto = new SDKore.DomainModel.Lookup(subfamilia.Id, subfamilia.Name, subfamilia.LogicalName),
                    Segmento            = new SDKore.DomainModel.Lookup(segmento.Id, segmento.Name, segmento.LogicalName),
                    Trimestre           = ((OptionSetValue)((AliasedValue)item.Attributes["trimestre"]).Value).Value
                };

                lista.Add(potencial);
            }

            return(lista);
        }