public void Criar(PotencialdoKAporSubfamilia mPotencialdoKAporSubfamilia, List <Model.OrcamentoDetalhado> lstOrcamentoDetalhado, Guid representanteId, int numTrimestre) { PotencialdoKAporProduto mPotencialdoKAporProduto = 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) { mPotencialdoKAporSubfamilia = RepositoryService.PotencialdoKAporSubfamilia.Retrieve(mPotencialdoKAporSubfamilia.ID.Value); if (OrcaProduto.First().Produto.Id != Guid.Empty) { var tempProduto = RepositoryService.PotencialdoKAporProduto.Obter(representanteId, OrcaProduto.First().Produto.Id, OrcaProduto.First().SubFamilia.Id, mPotencialdoKAporSubfamilia.ID.Value, (int)mPotencialdoKAporSubfamilia.Trimestre); if (tempProduto == null) { mPotencialdoKAporProduto = new PotencialdoKAporProduto(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider); mPotencialdoKAporProduto.ID = Guid.NewGuid(); mPotencialdoKAporProduto.Ano = mPotencialdoKAporSubfamilia.Ano; mPotencialdoKAporProduto.Trimestre = numTrimestre; mPotencialdoKAporProduto.Produto = new Lookup(OrcaProduto.First().Produto.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Product>()); mPotencialdoKAporProduto.PotencialdoKAporSubfamilia = new Lookup(mPotencialdoKAporSubfamilia.ID.Value, SDKore.Crm.Util.Utility.GetEntityName <Model.PotencialdoKAporSubfamilia>()); mPotencialdoKAporProduto.Nome = OrcaProduto.First().Produto.Name; mPotencialdoKAporProduto.KAouRepresentante = new Lookup(representanteId, SDKore.Crm.Util.Utility.GetEntityName <Model.Contato>()); RepositoryService.PotencialdoKAporProduto.Create(mPotencialdoKAporProduto); ServiceMetaDetalhadadoKAporProduto.Criar(mPotencialdoKAporProduto); } } } }
public void RetornoDWKaProduto(int ano, int trimestre) { List <MetadaUnidade> lstMetadaUnidade = RepositoryService.MetadaUnidade.ListarMetas(ano); if (lstMetadaUnidade.Count == 0) { return; } DataTable dtMetaCanal = RepositoryService.PotencialdoKAporProduto.ListarMetaTrimestreDW(ano, trimestre, lstMetadaUnidade); foreach (DataRow item in dtMetaCanal.Rows) { UnidadeNegocio mUnidadeNegocio = RepositoryService.UnidadeNegocio.ObterPorChaveIntegracao(item["CD_Unidade_Negocio"].ToString()); Contato mContato = RepositoryService.Contato.ObterPor(item["CD_representante"].ToString()); Product mProduto = RepositoryService.Produto.ObterPor(item["cd_item"].ToString()); if (mUnidadeNegocio != null && mContato != null && mProduto != null) { PotencialdoKAporProduto mPotencialdoKAporProduto = RepositoryService.PotencialdoKAporProduto.Obter(mUnidadeNegocio.ID.Value, mContato.ID.Value, Convert.ToInt32(item["cd_ano"].ToString()), trimestre, mProduto.ID.Value); if (mPotencialdoKAporProduto != null) { mPotencialdoKAporProduto.PotencialRealizado = decimal.Parse(item["vlr"].ToString()); mPotencialdoKAporProduto.QtdeRealizada = decimal.Parse(item["qtde"].ToString()); RepositoryService.PotencialdoKAporProduto.Update(mPotencialdoKAporProduto); } } } }
public void Calcular(PotencialdoKAporProduto mPotencialdoKAporProduto, Trimestre trimestre, ref decimal valor, ref int quantidade) { decimal vlr = 0; int qtde = 0; List <MetaDetalhadadoKAporProduto> lstMetaDetalhadadoKAporProduto = RepositoryService.MetaDetalhadadoKAporProduto.ListarPor(mPotencialdoKAporProduto.ID.Value); foreach (MetaDetalhadadoKAporProduto prod in lstMetaDetalhadadoKAporProduto) { #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.MetaDetalhadadoKAporProduto.Update(prod); vlr += prod.MetaPlanejada.Value; qtde += (int)prod.QtdePlanejada; #endregion } valor = vlr; quantidade = qtde; }
public List <PotencialdoKAporProduto> ListarValoresPorUnidadeNegocio(Guid unidadeNegocioId, int ano, Domain.Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes mes) { var lista = new List <PotencialdoKAporProduto>(); string fetch = @"<fetch aggregate='true' no-lock='true' returntotalrecordcount='true' > <entity name='itbc_metadetalhadadokaporproduto' > <attribute name='itbc_metaplanejada' alias='valor_planejado' aggregate='sum' /> <attribute name='itbc_qtdeplanejada' alias='quantidade_planejada' aggregate='sum' /> <attribute name='itbc_metarealizada' alias='valor_realizado' aggregate='sum' /> <attribute name='itbc_qtderealizada' alias='quantidade_realizado' aggregate='sum' /> <filter type='and' > <condition attribute='itbc_mes' operator='eq' value='{2}' /> </filter> <link-entity name='itbc_metadokaporproduto' from='itbc_metadokaporprodutoid' to='itbc_metadokaporprodutoid' link-type='inner' alias='prod' > <attribute name='itbc_metadokaporprodutoid' alias='id' groupby='true' /> <filter type='and' > <condition attribute='itbc_ano' operator='eq' value='{0}' /> <condition attribute='itbc_unidade_negociosid' operator='eq' value='{1}' /> </filter> </link-entity> </entity> </fetch>"; fetch = string.Format(fetch, ano, unidadeNegocioId, mes); var retrieveMultiple = new RetrieveMultipleRequest() { Query = new FetchExpression(fetch) }; EntityCollection collection = ((RetrieveMultipleResponse)this.Execute(retrieveMultiple)).EntityCollection; foreach (var item in collection.Entities) { var potencialProduto = new PotencialdoKAporProduto(OrganizationName, IsOffline, Provider) { ID = (Guid)((AliasedValue)(item.Attributes["id"])).Value, 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_realizado"])).Value }; lista.Add(potencialProduto); } return(lista); }