public void Criar(PotencialdoKARepresentante mPotencialdoKARepresentante, List <Model.OrcamentoDetalhado> lstOrcamentoDetalhado) { int numTrimestreFormatado = 0; PotencialdoKAporTrimestre mPotencialdoKAporTrimestre; for (int cont = 1; cont <= 4; cont++) { #region monta trimeste switch (cont) { case 1: numTrimestreFormatado = (int)Enum.OrcamentodaUnidade.Trimestres.Trimestre1; break; case 2: numTrimestreFormatado = (int)Enum.OrcamentodaUnidade.Trimestres.Trimestre2; break; case 3: numTrimestreFormatado = (int)Enum.OrcamentodaUnidade.Trimestres.Trimestre3; break; case 4: numTrimestreFormatado = (int)Enum.OrcamentodaUnidade.Trimestres.Trimestre4; break; } #endregion Console.WriteLine("Trimestre " + (int)numTrimestreFormatado + " em " + cont + "/ " + cont + " as " + DateTime.Now.ToString()); mPotencialdoKAporTrimestre = RepositoryService.PotencialdoKAporTrimestre.ObterPor(mPotencialdoKARepresentante.ID.Value, mPotencialdoKARepresentante.KeyAccountRepresentante.Id, numTrimestreFormatado); if (mPotencialdoKAporTrimestre == null) { mPotencialdoKAporTrimestre = new PotencialdoKAporTrimestre(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider); mPotencialdoKAporTrimestre.ID = Guid.NewGuid(); mPotencialdoKAporTrimestre.Nome = "Trimestre " + numTrimestreFormatado + " / " + mPotencialdoKARepresentante.Ano + " - Unidade de Negocio " + mPotencialdoKARepresentante.UnidadedeNegocio.Name; mPotencialdoKAporTrimestre.UnidadedeNegocio = mPotencialdoKARepresentante.UnidadedeNegocio; mPotencialdoKAporTrimestre.Ano = mPotencialdoKARepresentante.Ano; mPotencialdoKAporTrimestre.Trimestre = numTrimestreFormatado; mPotencialdoKAporTrimestre.PotencialdoKARepresentante = new Lookup(mPotencialdoKARepresentante.ID.Value, SDKore.Crm.Util.Utility.GetEntityName <Model.PotencialdoKARepresentante>()); RepositoryService.PotencialdoKAporTrimestre.Create(mPotencialdoKAporTrimestre); } ServicePotencialdoKAporSegmento.Criar(mPotencialdoKAporTrimestre, lstOrcamentoDetalhado, mPotencialdoKARepresentante.KeyAccountRepresentante.Id, numTrimestreFormatado); } }
public void Criar(PotencialdoKAporTrimestre mPotencialdoKATrimestre, List <Model.OrcamentoDetalhado> lstOrcamentoDetalhado, Guid representanteId, int numTrimestre) { PotencialdoKAporSegmento mPotencialdoKAporSegmento = null; var lstOrcamentoporSegmento = (from x in lstOrcamentoDetalhado group x by string.Format("{0}", x.Familia.Id)); foreach (var OrcaSegmento in lstOrcamentoporSegmento) { mPotencialdoKATrimestre = RepositoryService.PotencialdoKAporTrimestre.Retrieve(mPotencialdoKATrimestre.ID.Value); List <PotencialdoKAporSegmento> tempSegmento = RepositoryService.PotencialdoKAporSegmento.__Obter(mPotencialdoKATrimestre.UnidadedeNegocio.Id, representanteId, numTrimestre, mPotencialdoKATrimestre.ID.Value, OrcaSegmento.First().Segmento.Id); if (tempSegmento.Count == 0) { PortfoliodoKeyAccountRepresentantes portfolioKA = RepositoryService.PortfoliodoKeyAccountRepresentantes.ObterPor(mPotencialdoKATrimestre.UnidadedeNegocio.Id, representanteId); if (portfolioKA.Segmento != null) { if (OrcaSegmento.First().Segmento.Id != portfolioKA.Segmento.Id) { continue; } } mPotencialdoKAporSegmento = new PotencialdoKAporSegmento(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider); mPotencialdoKAporSegmento.ID = Guid.NewGuid(); mPotencialdoKAporSegmento.Nome = mPotencialdoKATrimestre.Nome + " - " + OrcaSegmento.First().Segmento.Name; mPotencialdoKAporSegmento.UnidadedeNegocio = mPotencialdoKATrimestre.UnidadedeNegocio; mPotencialdoKAporSegmento.Ano = mPotencialdoKATrimestre.Ano; mPotencialdoKAporSegmento.KAouRepresentante = new Lookup(representanteId, SDKore.Crm.Util.Utility.GetEntityName <Model.Contato>()); mPotencialdoKAporSegmento.Segmento = new Lookup(OrcaSegmento.First().Segmento.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Segmento>()); mPotencialdoKAporSegmento.Trimestre = numTrimestre; mPotencialdoKAporSegmento.PotencialKaTrimestre = new Lookup(mPotencialdoKATrimestre.ID.Value, SDKore.Crm.Util.Utility.GetEntityName <Model.PotencialdoKAporTrimestre>()); RepositoryService.PotencialdoKAporSegmento.Create(mPotencialdoKAporSegmento); ServicePotencialdoKAporFamilia.Criar(mPotencialdoKAporSegmento, OrcaSegmento.ToList(), representanteId, numTrimestre); } else { ServicePotencialdoKAporFamilia.Criar(tempSegmento[0], OrcaSegmento.ToList(), representanteId, numTrimestre); } } }
public List <PotencialdoKAporTrimestre> ListarValoresPorUnidadeNegocio(Guid unidadeNegocioId, int ano) { var lista = new List <PotencialdoKAporTrimestre>(); 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' /> <link-entity name='itbc_metatrimestreka' from='itbc_metatrimestrekaid' to='itbc_metatrimestrekaid' alias='tri' > <attribute name='itbc_metatrimestrekaid' alias='id' groupby='true' /> <filter type='and' > <condition attribute='itbc_ano' operator='eq' value='{0}' /> <condition attribute='itbc_unidadenegocioid' operator='eq' value='{1}' /> </filter> </link-entity> </entity> </fetch>"; fetch = string.Format(fetch, ano, unidadeNegocioId); var retrieveMultiple = new RetrieveMultipleRequest() { Query = new FetchExpression(fetch) }; EntityCollection collection = ((RetrieveMultipleResponse)this.Execute(retrieveMultiple)).EntityCollection; foreach (var item in collection.Entities) { var potencialTrimestre = new PotencialdoKAporTrimestre(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 }; lista.Add(potencialTrimestre); } return(lista); }
public void AtualizarRealizadoDoRepresentantePorTrimestre(int ano, int trimestre) { List <PotencialdoKAporTrimestre> lstPotencialTrimestre = RepositoryService.PotencialdoKAporTrimestre.ListarPorTrimestre(ano, trimestre); if (lstPotencialTrimestre.Count == 0) { return; } List <UnidadeNegocio> filterUnidadeNeg = new List <UnidadeNegocio>(); foreach (var lstTmpUnidade in lstPotencialTrimestre) { UnidadeNegocio filterUnTmp = RepositoryService.UnidadeNegocio.ObterPor(lstTmpUnidade.UnidadedeNegocio.Id); filterUnidadeNeg.Add(filterUnTmp); } DataTable dtMetaCanal = RepositoryService.PotencialdoKAporTrimestre.ListarMetaTrimestreDW(ano, trimestre, filterUnidadeNeg); List <UnidadeNegocio> unidadeNegocioAll = RepositoryService.UnidadeNegocio.ListarTodosChaveIntegracao(); Dictionary <string, UnidadeNegocio> unidadeNegocioMap = new Dictionary <string, UnidadeNegocio>(); foreach (var tmpVar in unidadeNegocioAll) { if (tmpVar.ChaveIntegracao != null) { unidadeNegocioMap.Add(tmpVar.ChaveIntegracao, tmpVar); } } List <Contato> representatesAll = RepositoryService.Contato.ListarKaRepresentantes(null); Dictionary <string, Contato> representatesMap = new Dictionary <string, Contato>(); foreach (var tmpVar in representatesAll) { if (tmpVar.CodigoRepresentante != null) { representatesMap.Add(tmpVar.CodigoRepresentante, tmpVar); } } foreach (DataRow item in dtMetaCanal.Rows) { if (item.IsNull("CD_Unidade_Negocio") || item.IsNull("CD_representante")) { continue; } if (unidadeNegocioMap.ContainsKey(item.Field <string>("CD_Unidade_Negocio")) && representatesMap.ContainsKey(item["CD_representante"].ToString())) { UnidadeNegocio mUnidadeNegocio = unidadeNegocioMap[item.Field <string>("CD_Unidade_Negocio")]; Contato mContato = representatesMap[item["CD_representante"].ToString()]; PotencialdoKAporTrimestre mPotencialdoKAporTrimestre = RepositoryService.PotencialdoKAporTrimestre.Obter(mUnidadeNegocio.ID.Value, mContato.ID.Value, ano, trimestre); if (mPotencialdoKAporTrimestre != null) { mPotencialdoKAporTrimestre.PotencialRealizado = item.Field <decimal>("vlr"); RepositoryService.PotencialdoKAporTrimestre.Update(mPotencialdoKAporTrimestre); } } } }