예제 #1
0
        public void RetornoDWDetalhadoProduto(int ano, int trimestre)
        {
            List <MetadaUnidade> lstMetadaUnidade = RepositoryService.MetadaUnidade.ListarMetas(ano);

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

            DataTable dtMetaCanal = RepositoryService.PotencialDetalhadodoSupervisorporProduto.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());
                Product           mProduto           = RepositoryService.Produto.ObterPor(item["cd_item"].ToString());

                if (mUnidadeNegocio != null && mUsuario != null && mSegmento != null && mFamiliaProduto != null && mSubfamiliaProduto != null && mProduto != null)
                {
                    PotencialdoSupervisorporProduto mPotencialdoSupervisorporProduto = RepositoryService.PotencialdoSupervisorporProduto
                                                                                       .Obter(mUnidadeNegocio.ID.Value, mUsuario.ID.Value, Convert.ToInt32(item["cd_ano"].ToString()), trimestre, mSegmento.ID.Value, mFamiliaProduto.ID.Value, mSubfamiliaProduto.ID.Value, mProduto.ID.Value);

                    if (mPotencialdoSupervisorporProduto != null)
                    {
                        PotencialdoSupervisorporProdutoDetalhado mPotencialDetalhadodoSupervisorporProduto = RepositoryService.PotencialDetalhadodoSupervisorporProduto
                                                                                                             .Obter(Convert.ToInt32(item["cd_ano"].ToString()), trimestre, Convert.ToInt32(item["cd_mes"].ToString()), mProduto.ID.Value, mUsuario.ID.Value, mPotencialdoSupervisorporProduto.ID.Value);

                        if (mPotencialDetalhadodoSupervisorporProduto != null)
                        {
                            mPotencialdoSupervisorporProduto.PotencialRealizado = decimal.Parse(item["vlr"].ToString());
                            mPotencialdoSupervisorporProduto.QtdeRealizada      = decimal.Parse(item["qtde"].ToString());

                            RepositoryService.PotencialdoSupervisorporProduto.Update(mPotencialdoSupervisorporProduto);
                        }
                    }
                }
            }
        }
예제 #2
0
        public List <PotencialdoSupervisorporProdutoDetalhado> ListarValoresPorUnidadeNegocio(Guid unidadeNegocioId, int ano, Domain.Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes mes)
        {
            var lista = new List <PotencialdoSupervisorporProdutoDetalhado>();

            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' />
                                <filter type='and' >
                                  <condition attribute='itbc_ano' operator='eq' value='{0}' />
                                  <condition attribute='itbc_unidadedenegocioid' operator='eq' value='{1}' />
                                </filter>
                                <link-entity name='itbc_metadokaporfamilia' from='itbc_metadokaporsegmentoid' to='itbc_metadokaporsegmentoid' >
                                  <link-entity name='itbc_metadokaporsubfamilia' from='itbc_metadokaporfamiliaid' to='itbc_metadokaporfamiliaid' >
                                    <link-entity name='itbc_metadokaporproduto' from='itbc_metadokaporsubfamiliaid' to='itbc_metadokaporsubfamiliaid' >
                                      <attribute name='itbc_produtoid' alias='produto' groupby='true' />
                                      <link-entity name='itbc_metadetalhadadokaporproduto' from='itbc_metadokaporprodutoid' to='itbc_metadokaporprodutoid' >
                                        <attribute name='itbc_qtderealizada' alias='quantidade_realizada' aggregate='sum' />
                                        <attribute name='itbc_qtdeplanejada' alias='quantidade_planejada' aggregate='sum' />
                                        <filter type='and' >
                                          <condition attribute='itbc_mes' operator='eq' value='{2}' />
                                        </filter>
                                      </link-entity>
                                    </link-entity>
                                  </link-entity>
                                </link-entity>
                              </entity>
                            </fetch>";

            fetch = string.Format(fetch, ano, unidadeNegocioId, (int)mes);

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

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

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

                var potencial = new PotencialdoSupervisorporProdutoDetalhado(OrganizationName, IsOffline, Provider)
                {
                    PotencialPlanejado = ((Money)((AliasedValue)item.Attributes["valor_planejado"]).Value).Value,
                    PotencialRealizado = ((Money)((AliasedValue)item.Attributes["valor_realizado"]).Value).Value,
                    QtdePlanejada      = (decimal)((AliasedValue)item.Attributes["quantidade_planejada"]).Value,
                    QtdeRealizada      = (decimal)((AliasedValue)item.Attributes["quantidade_realizada"]).Value,
                    Supervisor         = new SDKore.DomainModel.Lookup(supervisor.Id, supervisor.Name, supervisor.LogicalName),
                    Mes     = (int)mes,
                    Ano     = ano,
                    Produto = new SDKore.DomainModel.Lookup(produto.Id, produto.Name, produto.LogicalName)
                };

                lista.Add(potencial);
            }

            return(lista);
        }