public void Criar(Guid orcamentounidadeId, MetadaUnidadeporSubfamilia mMetadaUnidadeporSubfamilia, List <Model.OrcamentoDetalhado> lstOrcamentoDetalhado, Guid subfamiliaId, Guid metadosegmentoId)
        {
            MetadaUnidadeporProduto mMetadaUnidadeporProduto = null;
            MetadaUnidadeporProduto mMetaUnidadeProduto      = null;

            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)
                {
                    mMetaUnidadeProduto = RepositoryService.MetadaUnidadeporProduto.Obter(OrcaProduto.First().Produto.Id, mMetadaUnidadeporSubfamilia.ID.Value);
                    if (mMetaUnidadeProduto == null)
                    {
                        #region
                        mMetadaUnidadeporProduto                  = new MetadaUnidadeporProduto(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider);
                        mMetadaUnidadeporProduto.ID               = Guid.NewGuid();
                        mMetadaUnidadeporProduto.Ano              = mMetadaUnidadeporSubfamilia.Ano;
                        mMetadaUnidadeporProduto.Trimestre        = mMetadaUnidadeporSubfamilia.Trimestre;
                        mMetadaUnidadeporProduto.Produto          = new Lookup(OrcaProduto.First().Produto.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Product>());
                        mMetadaUnidadeporProduto.MetadaSubfamilia = new Lookup(mMetadaUnidadeporSubfamilia.ID.Value, SDKore.Crm.Util.Utility.GetEntityName <Model.OrcamentodaUnidadeporSubFamilia>());
                        mMetadaUnidadeporProduto.Nome             = OrcaProduto.First().Produto.Name;

                        RepositoryService.MetadaUnidadeporProduto.Create(mMetadaUnidadeporProduto);
                        ServiceMetaDetalhadadaUnidadeporProduto.Criar(mMetadaUnidadeporProduto);
                        #endregion
                    }
                }
            }
        }
Esempio n. 2
0
        public List <MetadaUnidadeporProduto> ListarValoresPorUnidadeNegocio(Guid unidadeNegocioId, int ano, Domain.Enum.OrcamentodaUnidade.Trimestres trimestre)
        {
            var lista = new List <MetadaUnidadeporProduto>();

            string fetch = @"<fetch aggregate='true' no-lock='true' >
                              <entity name='itbc_potencialdosupervisorporproduto' >
                                <attribute name='itbc_potencialplanejado' alias='valor_planejado' aggregate='sum' />
                                <attribute name='itbc_potencialrealizado' alias='valor_realizado' aggregate='sum' />
                                <attribute name='itbc_produtoid' alias='produto' groupby='true' />
                                <attribute name='itbc_qtdeplanejada' alias='quantidade_planejada' aggregate='sum' />
                                <attribute name='itbc_qtderealizada' alias='quantidade_realizada' aggregate='sum' />
                                <filter type='and' >
                                  <condition attribute='itbc_ano' operator='eq' value='{0}' />
                                  <condition attribute='itbc_unidade_negociosid' operator='eq' value='{1}' />
                                  <condition attribute='itbc_trimestre' operator='eq' value='{2}' />
                                </filter>
                                <link-entity name='itbc_potencial_supervisor_subfamilia' from='itbc_potencial_supervisor_subfamiliaid' to='itbc_potencialsupervisorporprodutoid' >
                                  <attribute name='itbc_subfamliadeprodutoid' alias='subfamilia' groupby='true' />
                                </link-entity>
                              </entity>
                            </fetch>";

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

            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 subfamilia = ((EntityReference)((AliasedValue)item.Attributes["subfamilia"]).Value);

                var potencial = new MetadaUnidadeporProduto(OrganizationName, IsOffline, Provider)
                {
                    MetaPlanejada = ((Money)((AliasedValue)item.Attributes["valor_planejado"]).Value).Value,
                    MetaRealizada = ((Money)((AliasedValue)item.Attributes["valor_realizado"]).Value).Value,
                    QtdePlanejada = (decimal)((AliasedValue)item.Attributes["quantidade_planejada"]).Value,
                    QtdeRealizada = (decimal)((AliasedValue)item.Attributes["quantidade_realizada"]).Value,
                    Trimestre     = (int)trimestre,
                    Ano           = ano,
                    Produto       = new SDKore.DomainModel.Lookup(produto.Id, produto.Name, produto.LogicalName),
                    Subfamilia    = new SDKore.DomainModel.Lookup(subfamilia.Id, subfamilia.Name, subfamilia.LogicalName)
                };

                lista.Add(potencial);
            }

            return(lista);
        }
        public void Calcular(MetadaUnidadeporProduto mMetadaUnidadeporProduto, Trimestre trimestre, ref decimal valor, ref int quantidade)
        {
            decimal vlr  = 0;
            int     qtde = 0;


            List <MetaDetalhadadaUnidadeporProduto> lstMetaDetalhadaProdutos = RepositoryService.MetadaUnidadeDetalhadaProduto.Obterpor(mMetadaUnidadeporProduto.ID.Value, trimestre.trimestre.Value);

            foreach (MetaDetalhadadaUnidadeporProduto prod in lstMetaDetalhadaProdutos)
            {
                #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.MetadaUnidadeDetalhadaProduto.Update(prod);
                vlr  += prod.MetaPlanejada.Value;
                qtde += (int)prod.QtdePlanejada;
                #endregion
            }

            valor      = vlr;
            quantidade = qtde;
        }
        public void Calcular(MetadaUnidadeporProduto mMetadaUnidadeporProduto, object itens)
        {
            Type myType = itens.GetType();
            IList <PropertyInfo> props = new List <PropertyInfo>(myType.GetProperties());

            List <MetaDetalhadadaUnidadeporProduto> lstMetaDetalhadaProdutos = RepositoryService.MetadaUnidadeDetalhadaProduto.Listar(mMetadaUnidadeporProduto.ID.Value);

            foreach (MetaDetalhadadaUnidadeporProduto prod in lstMetaDetalhadaProdutos)
            {
                #region
                if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Janeiro)
                {
                    prod.MetaPlanejada = decimal.Parse(props[10].GetValue(itens, null).ToString());
                    prod.QtdePlanejada = decimal.Parse(props[11].GetValue(itens, null).ToString());
                }
                else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Fevereiro)
                {
                    prod.MetaPlanejada = decimal.Parse(props[12].GetValue(itens, null).ToString());
                    prod.QtdePlanejada = decimal.Parse(props[13].GetValue(itens, null).ToString());
                }
                else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Marco)
                {
                    prod.MetaPlanejada = decimal.Parse(props[14].GetValue(itens, null).ToString());
                    prod.QtdePlanejada = decimal.Parse(props[15].GetValue(itens, null).ToString());
                }
                else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Abril)
                {
                    prod.MetaPlanejada = decimal.Parse(props[16].GetValue(itens, null).ToString());
                    prod.QtdePlanejada = decimal.Parse(props[17].GetValue(itens, null).ToString());
                }
                else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Maio)
                {
                    prod.MetaPlanejada = decimal.Parse(props[18].GetValue(itens, null).ToString());
                    prod.QtdePlanejada = decimal.Parse(props[19].GetValue(itens, null).ToString());
                }
                else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Junho)
                {
                    prod.MetaPlanejada = decimal.Parse(props[20].GetValue(itens, null).ToString());
                    prod.QtdePlanejada = decimal.Parse(props[21].GetValue(itens, null).ToString());
                }
                else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Julho)
                {
                    prod.MetaPlanejada = decimal.Parse(props[22].GetValue(itens, null).ToString());
                    prod.QtdePlanejada = decimal.Parse(props[23].GetValue(itens, null).ToString());
                }
                else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Agosto)
                {
                    prod.MetaPlanejada = decimal.Parse(props[24].GetValue(itens, null).ToString());
                    prod.QtdePlanejada = decimal.Parse(props[25].GetValue(itens, null).ToString());
                }
                else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Setembro)
                {
                    prod.MetaPlanejada = decimal.Parse(props[26].GetValue(itens, null).ToString());
                    prod.QtdePlanejada = decimal.Parse(props[27].GetValue(itens, null).ToString());
                }
                else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Outubro)
                {
                    prod.MetaPlanejada = decimal.Parse(props[28].GetValue(itens, null).ToString());
                    prod.QtdePlanejada = decimal.Parse(props[29].GetValue(itens, null).ToString());
                }
                else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Novembro)
                {
                    prod.MetaPlanejada = decimal.Parse(props[30].GetValue(itens, null).ToString());
                    prod.QtdePlanejada = decimal.Parse(props[31].GetValue(itens, null).ToString());
                }
                else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Dezembro)
                {
                    prod.MetaPlanejada = decimal.Parse(props[32].GetValue(itens, null).ToString());
                    prod.QtdePlanejada = decimal.Parse(props[33].GetValue(itens, null).ToString());
                }

                RepositoryService.MetadaUnidadeDetalhadaProduto.Update(prod);
                #endregion
            }
        }