示例#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);
                    }
                }
            }
        }
示例#2
0
        public void Calcular(MetadoCanalporProduto mMetadoCanalporProduto, Trimestre trimestre, ref decimal valor, ref int quantidade)
        {
            decimal vlr  = 0;
            int     qtde = 0;

            List <MetaDetalhadadoCanalporProduto> lstMetaDetalhadadoCanalporProduto = RepositoryService.MetaDetalhadadoCanalporProduto.ListarPor(mMetadoCanalporProduto.Canal.Id, mMetadoCanalporProduto.Produto.Id, trimestre.Id.Value);

            foreach (MetaDetalhadadoCanalporProduto prod in lstMetaDetalhadadoCanalporProduto)
            {
                #region
                if (prod.Mes == trimestre.Mes1)
                {
                    prod.MetaPlanejada = trimestre.Mes1Vlr.HasValue ? trimestre.Mes1Vlr.Value : 0;
                    prod.QtdePlanejada = trimestre.Mes1Qtde.HasValue ? trimestre.Mes1Qtde.Value : 0;
                }
                else if (prod.Mes == trimestre.Mes2)
                {
                    prod.MetaPlanejada = trimestre.Mes2Vlr.HasValue ? trimestre.Mes2Vlr.Value : 0;
                    prod.QtdePlanejada = trimestre.Mes2Qtde.HasValue ? trimestre.Mes2Qtde.Value : 0;
                }
                else if (prod.Mes == trimestre.Mes3)
                {
                    prod.MetaPlanejada = trimestre.Mes3Vlr.HasValue ? trimestre.Mes3Vlr.Value : 0;
                    prod.QtdePlanejada = trimestre.Mes3Qtde.HasValue ? trimestre.Mes3Qtde.Value : 0;
                }

                RepositoryService.MetaDetalhadadoCanalporProduto.Update(prod);
                vlr  += prod.MetaPlanejada.Value;
                qtde += (int)prod.QtdePlanejada;
                #endregion
            }

            valor      = vlr;
            quantidade = qtde;
        }
示例#3
0
        public void RetornoDWMetaCanalProduto(int ano, int trimestre)
        {
            List <MetadaUnidade> lstMetadaUnidade = RepositoryService.MetadaUnidade.ListarMetas(ano);

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

            DataTable dtMetaCanalProduto = RepositoryService.MetadoCanalporProduto.ListarMetaCanalProdutoDW(ano, trimestre, lstMetadaUnidade);

            foreach (DataRow item in dtMetaCanalProduto.Rows)
            {
                UnidadeNegocio    mUnidadeNegocio    = RepositoryService.UnidadeNegocio.ObterPorChaveIntegracao(item["CD_Unidade_Negocio"].ToString());
                Conta             mConta             = RepositoryService.Conta.ObterCanal(item["CD_Emitente"].ToString());
                SubfamiliaProduto mSubfamiliaProduto = RepositoryService.SubfamiliaProduto.ObterPor(item["CD_subfamilia"].ToString());
                Product           mProduto           = RepositoryService.Produto.ObterPor(item["CD_Item"].ToString());

                if (mUnidadeNegocio != null && mConta != null && mSubfamiliaProduto != null && mProduto != null)
                {
                    MetadoCanalporProduto mMetadoCanalporProduto = RepositoryService.MetadoCanalporProduto
                                                                   .Obterpor(mUnidadeNegocio.ID.Value, mConta.ID.Value, Convert.ToInt32(item["cd_ano"].ToString()), trimestre, mSubfamiliaProduto.ID.Value, mProduto.ID.Value);

                    if (mMetadoCanalporProduto != null)
                    {
                        mMetadoCanalporProduto.MetaRealizada = decimal.Parse(item["vlr"].ToString());
                        RepositoryService.MetadoCanalporProduto.Update(mMetadoCanalporProduto);
                    }
                }
            }
        }
        public List <MetadoCanalporProduto> ListarValoresPorUnidadeNegocio(Guid unidadeNegocioId, int ano, Guid canalId)
        {
            var lista = new List <MetadoCanalporProduto>();

            string fetch = @"<fetch aggregate='true' no-lock='true' >
                              <entity name='itbc_metadetalhadadocanalporproduto' >
                                <attribute name='itbc_qtderealizada' alias='quantidade_realizado' aggregate='sum' />
                                <attribute name='itbc_metarealizada' alias='valor_realizado' aggregate='sum' />
                                <attribute name='itbc_qtdeplanejada' alias='quantidade_planejada' aggregate='sum' />
                                <attribute name='itbc_metaplanejada' alias='valor_planejado' aggregate='sum' />
                                <filter type='and' >
                                  <condition attribute='itbc_ano' operator='eq' value='{0}' />
                                  <condition attribute='itbc_unidade_negocio' operator='eq' value='{1}' />
                                  <condition attribute='itbc_canalid' operator='eq' value='{2}' />
                                </filter>
                                <link-entity name='itbc_metadocanalporproduto' from='itbc_metadocanalporprodutoid' to='itbc_metadocanalporprodutoid' >
                                  <attribute name='itbc_metadocanalporprodutoid' alias='id' groupby='true' />
                                </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 MetadoCanalporProduto(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
                                    //qu = (decimal)((AliasedValue)(item.Attributes["quantidade_planejada"])).Value,
                                    //QtdeRealizada = (decimal)((AliasedValue)(item.Attributes["quantidade_realizado"])).Value
                };

                lista.Add(meta);
            }

            return(lista);
        }