public DataTable ListarPor(string ano, string trimestre) { string commandIn = string.Empty; StringBuilder strSql = new StringBuilder(); strSql.Append("Select "); strSql.Append("cd_canal, "); strSql.Append("CD_Mes, "); strSql.Append("cd_ano, "); strSql.Append("cd_item, "); strSql.Append("cd_trimestre, "); strSql.Append(" sum([NM_Vl_Liquido_Total]) Valor, "); strSql.Append(" sum([NM_Quantidade_Total]) Qtd "); strSql.Append(" From viewFaturamentoCRM "); strSql.AppendFormat(" Where CD_Ano = {0} ", ano); Intelbras.CRM2013.Domain.Servicos.RepositoryService RepositoryService = new Intelbras.CRM2013.Domain.Servicos.RepositoryService(this.OrganizationName, this.IsOffline); var parametroGlobal = RepositoryService.ParametroGlobal.ObterPorCodigoTipoParametroGlobal((int)Intelbras.CRM2013.Domain.Enum.ParametroGlobal.Parametrizar.GruposEstoqueGeracaoOrcamentosMeta); if (parametroGlobal == null || string.IsNullOrEmpty(parametroGlobal.Valor)) { throw new ArgumentException("(CRM) Não foi encontrado Parametro Global [" + (int)Intelbras.CRM2013.Domain.Enum.ParametroGlobal.Parametrizar.GruposEstoqueGeracaoOrcamentosMeta + "]."); } else { strSql.AppendFormat(" And CD_Grupo_Estoque IN ({0}) ", parametroGlobal.Valor.Replace(';', ',')); } strSql.AppendFormat(" And cd_trimestre = {0} ", trimestre); strSql.AppendLine(" AND CD_Canal = 1 "); strSql.Append(" group by CD_Mes, CD_Ano, CD_Trimestre, cd_canal, cd_item "); return(DataBaseSqlServer.executeQuery(strSql.ToString())); }
protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService) { Intelbras.CRM2013.Domain.Servicos.RepositoryService RepositoryService = new Intelbras.CRM2013.Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline, adminService); switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName)) { case Domain.Enum.Plugin.MessageName.Create: if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) { var target = (Entity)context.InputParameters["Target"]; var oportunidade = target.Parse <Domain.Model.Oportunidade>(context.OrganizationName, context.IsExecutingOffline, adminService); try { if (oportunidade.ClientePotencialOriginador != null) { #region Copia Arquivos do Sharepoint Domain.Model.ClientePotencial clientePotencial = RepositoryService.ClientePotencial.Retrieve(oportunidade.ClientePotencialOriginador.Id); List <Domain.Model.DocumentoSharePoint> lstDocs = RepositoryService.DocumentoSharePoint.ListarPorIdRegistro(oportunidade.ClientePotencialOriginador.Id); List <Domain.Model.Anotacao> lstAnotacoes = RepositoryService.Anotacao.ListarPor(oportunidade.ClientePotencialOriginador.Id); foreach (var doc in lstDocs) { Domain.Model.DocumentoSharePoint newDoc = doc; newDoc.ObjetoRelacionadoId = new SDKore.DomainModel.Lookup(oportunidade.ID.Value, "", SDKore.Crm.Util.Utility.GetEntityName(oportunidade)); newDoc.Id = Guid.Empty; newDoc.ID = null; RepositoryService.DocumentoSharePoint.Create(newDoc); } foreach (var anotacao in lstAnotacoes) { Domain.Model.Anotacao newAnotacao = anotacao; newAnotacao.EntidadeRelacionada = new SDKore.DomainModel.Lookup(oportunidade.ID.Value, "", SDKore.Crm.Util.Utility.GetEntityName(oportunidade)); newAnotacao.Id = Guid.Empty; newAnotacao.ID = null; RepositoryService.Anotacao.Create(newAnotacao); } #endregion } } catch (System.Exception e) { throw; } } break; } }
public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario) { usuarioIntegracao = usuario; Pollux.MSG0094 polluxMsg0094 = this.CarregarMensagem <Pollux.MSG0094>(mensagem); if (!string.IsNullOrWhiteSpace(polluxMsg0094.ChaveIntegracao)) { var statusFatura = new Intelbras.CRM2013.Domain.Servicos.RepositoryService(this.Organizacao, this.IsOffline) .Fatura.ObterPorChaveIntegracao(polluxMsg0094.ChaveIntegracao, "statecode"); if (statusFatura != null) { if (statusFatura.Status.Value == (int)Enum.Fatura.Status.Cancelada) { resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Fatura foi ignorado para atualização, o status no CRM é Cancelada e não é feito mais modificações!"; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno)); } } } Fatura ObjFatura = this.DefinirPropriedades(polluxMsg0094); this.DefinirPropriedadesProdutoFatura(polluxMsg0094, Guid.Empty); if (!resultadoPersistencia.Sucesso) { retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno)); } //Para poder atualizar state posteriormente int? stateUpdate = ObjFatura.Status; int? razaoStatusUpdate = ObjFatura.RazaoStatus; bool alteraStatus = false; int countErrosIntegracaoItem = lstProdutoFaturaUpdate.Where(x => x.IntegradoRepresentanteComErro.Value).Count(); if (countErrosIntegracaoItem > 0) { ObjFatura.IntegradoComErros = true; } //Persistir Fatura para obter o id que sera utilizado no ProdutoFatura ObjFatura = new Intelbras.CRM2013.Domain.Servicos.FaturaService(this.Organizacao, this.IsOffline).Persistir(ObjFatura, ref alteraStatus); if (ObjFatura == null) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Erro ao persistir Fatura!"; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno)); } else if (lstProdutoFaturaUpdate == null && lstProdutoFaturaDelete == null) { this.DefinirPropriedadesProdutoFatura(polluxMsg0094, ObjFatura.ID.Value); retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno)); } if (!resultadoPersistencia.Sucesso) //if (lstProdutoFaturaUpdate.Any()) { retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno)); } // foreach (ProdutoFatura item in lstProdutoFaturaUpdate) // { //bool mudarprop = false; //item.Fatura = new Lookup(ObjFatura.ID.Value, ""); //if (lstProdutoFaturaUpdate == null && lstProdutoFaturaDelete == null) // ProdutoFatura ObjProdutoFatura = new Intelbras.CRM2013.Domain.Servicos.ProdutoFaturaService(this.Organizacao, this.IsOffline).Atualizar(item, ref mudarprop); //if (ObjProdutoFatura == null) //{ //retorno.Add("Resultado", resultadoPersistencia); //return CriarMensagemRetorno<Pollux.MSG0094R1>(numeroMensagem, retorno); // resultadoPersistencia.Sucesso = false; // resultadoPersistencia.Mensagem = "Erro de persistência no item da fatura."; // retorno.Add("Resultado", resultadoPersistencia); // return CriarMensagemRetorno<Pollux.MSG0094R1>(numeroMensagem, retorno); //} if (lstProdutoFaturaUpdate.Any()) { foreach (ProdutoFatura item in lstProdutoFaturaUpdate) { bool mudarprop = false; item.Fatura = new Lookup(ObjFatura.ID.Value, ""); ProdutoFatura ObjProdutoFatura = new Intelbras.CRM2013.Domain.Servicos.ProdutoFaturaService(this.Organizacao, this.IsOffline).Atualizar(item, ref mudarprop); if (ObjProdutoFatura == null) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Erro de persistência no item da fatura."; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno)); } } } if (lstProdutoFaturaDelete.Any()) { foreach (ProdutoFatura item in lstProdutoFaturaUpdate) { new Intelbras.CRM2013.Domain.Servicos.ProdutoFaturaService(this.Organizacao, this.IsOffline).Deletar(item); } } //} //Alterar Status da Fatura após todo processo if (alteraStatus) { if (ObjFatura.ID.HasValue && stateUpdate.HasValue && razaoStatusUpdate.HasValue) { new Intelbras.CRM2013.Domain.Servicos.FaturaService(this.Organizacao, this.IsOffline).MudarStatus(ObjFatura.ID.Value, stateUpdate.Value, razaoStatusUpdate.Value); } } resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso"; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno)); }
protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService) { switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName)) { #region Create case Domain.Enum.Plugin.MessageName.Create: if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) { var entidade = (Entity)context.InputParameters["Target"]; Conta conta = entidade.Parse <Conta>(context.OrganizationName, context.IsExecutingOffline, adminService); Classificacao classificacao = new Intelbras.CRM2013.Domain.Servicos.ClassificacaoService(context.OrganizationName, context.IsExecutingOffline, adminService).BuscaClassificacao(conta.Classificacao.Id); //Se estiver fazendo adesão e o proprietário for um systemuser, cria equipe // Executa somente se for participante do programa if (conta.ParticipantePrograma == (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim) { //Adesao ao Programa new Domain.Servicos.BeneficioDoCanalService(context.OrganizationName, context.IsExecutingOffline, adminService).AdesaoAoPrograma(conta); //Integração com CRM 4.0 //new Intelbras.CRM2013.Domain.Servicos.CanalServices(context.OrganizationName, context.IsExecutingOffline, service).IntegracaoCRM4(conta); } #region SellOut if (conta.Classificacao != null && conta.Classificacao.Name != null) { String resultString = null; //Verifica se a conta é distribuidor ou revenda switch (conta.Classificacao.Name) { case Domain.Enum.Conta.Classificacao.Dist_BoxMover: case Domain.Enum.Conta.Classificacao.Dist_VAD: resultString = new Domain.Servicos.CanalServices(context.OrganizationName, context.IsExecutingOffline, adminService).PersistirDistribuidor(conta, context); if (!string.IsNullOrEmpty(resultString)) { throw new ArgumentException("(CRM) " + resultString); } break; case Domain.Enum.Conta.Classificacao.Atac_Dist: if (Domain.Enum.Conta.SubClassificacao.Atac_Distribuidor == conta.Subclassificacao.Name) { if (Domain.Enum.Conta.CategoriaConta.Completo == conta.Categoria.Name) { resultString = new Domain.Servicos.CanalServices(context.OrganizationName, context.IsExecutingOffline, adminService).PersistirDistribuidor(conta, context); if (!string.IsNullOrEmpty(resultString)) { throw new ArgumentException("(CRM) " + resultString); } } } break; } } #endregion if (!conta.IntegrarNoPlugin || conta.IntegrarNoPlugin == null || conta.IntegrarNoPlugin.ToString().Equals("")) { new Intelbras.CRM2013.Domain.Servicos.ContaService(context.OrganizationName, context.IsExecutingOffline, adminService).IntegracaoBarramento(conta, ref entidade); } new Intelbras.CRM2013.Domain.Servicos.EnderecoService(context.OrganizationName, context.IsExecutingOffline, adminService).AtualizaEnderecosAdicionaisDaConta(conta); } break; #endregion #region Update case Domain.Enum.Plugin.MessageName.Update: if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity && context.PreEntityImages.Contains("imagem") && context.PreEntityImages["imagem"] is Entity) { var CanalPre = ((Entity)context.PreEntityImages["imagem"]).Parse <Conta>(context.OrganizationName, context.IsExecutingOffline, adminService); var CanalPost = ((Entity)context.PostEntityImages["imagem"]).Parse <Conta>(context.OrganizationName, context.IsExecutingOffline, adminService); Classificacao NomeClassificacao = new Intelbras.CRM2013.Domain.Servicos.ClassificacaoService(context.OrganizationName, context.IsExecutingOffline, adminService).BuscaClassificacao(CanalPost.Classificacao.Id); // Valida ALteração do Atributo Forma de apuração dos Benefícios if (CanalPre.ApuracaoBeneficiosCompromissos != CanalPost.ApuracaoBeneficiosCompromissos) { new Domain.Servicos.ContaService(context.OrganizationName, context.IsExecutingOffline, adminService).ValidaCanalApuracaoDeBeneficios(CanalPre, CanalPost); } #region Historico Categorias Conta if (CanalPost.Categoria != null && CanalPre.Categoria != null) { if (CanalPre.Categoria.Id != CanalPost.Categoria.Id) { Intelbras.CRM2013.Domain.Servicos.RepositoryService RepositoryService = new Intelbras.CRM2013.Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline, adminService); var categoriaAtual = RepositoryService.Categoria.Retrieve(CanalPost.Categoria.Id); var categoriaAnterior = RepositoryService.Categoria.Retrieve(CanalPre.Categoria.Id); var historicoCategoria = new HistoricoCategoria(context.OrganizationName, context.IsExecutingOffline, adminService); historicoCategoria.Conta = new SDKore.DomainModel.Lookup(CanalPost.ID.Value, CanalPost.RazaoSocial, SDKore.Crm.Util.Utility.GetEntityName(CanalPost)); historicoCategoria.CategoriaAnterior = new SDKore.DomainModel.Lookup(categoriaAnterior.ID.Value, categoriaAnterior.Nome, SDKore.Crm.Util.Utility.GetEntityName(categoriaAnterior)); historicoCategoria.CategoriaAtual = new SDKore.DomainModel.Lookup(categoriaAtual.ID.Value, categoriaAtual.Nome, SDKore.Crm.Util.Utility.GetEntityName(categoriaAtual)); historicoCategoria.DataCriacao = DateTime.Now; RepositoryService.HistoricoCategoria.Create(historicoCategoria); } } #endregion #region SellOut if (CanalPost.Classificacao != null && CanalPost.Classificacao.Name != null) { if (!String.IsNullOrEmpty(CanalPost.CodigoMatriz) && !String.IsNullOrEmpty(CanalPost.CpfCnpj)) { //Verifica se a conta é distribuidor ou revenda String resultString = null; switch (CanalPost.Classificacao.Name) { case Domain.Enum.Conta.Classificacao.Dist_BoxMover: case Domain.Enum.Conta.Classificacao.Dist_VAD: resultString = new Domain.Servicos.CanalServices(context.OrganizationName, context.IsExecutingOffline, adminService).PersistirDistribuidor(CanalPost, context); if (!string.IsNullOrEmpty(resultString)) { throw new ArgumentException("(CRM) " + resultString); } break; case Domain.Enum.Conta.Classificacao.Atac_Dist: if (Domain.Enum.Conta.SubClassificacao.Atac_Distribuidor == CanalPost.Subclassificacao.Name) { if (Domain.Enum.Conta.CategoriaConta.Completo == CanalPost.Categoria.Name) { resultString = new Domain.Servicos.CanalServices(context.OrganizationName, context.IsExecutingOffline, adminService).PersistirDistribuidor(CanalPost, context); if (!string.IsNullOrEmpty(resultString)) { throw new ArgumentException("(CRM) " + resultString); } } } break; } } } #endregion } break; #endregion #region SetStateDynamicEntity case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity: if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity && context.PreEntityImages.Contains("imagem") && context.PreEntityImages["imagem"] is Entity) { var CanalPre = ((Entity)context.PreEntityImages["imagem"]).Parse <Conta>(context.OrganizationName, context.IsExecutingOffline, adminService); var CanalPost = ((Entity)context.PostEntityImages["imagem"]).Parse <Conta>(context.OrganizationName, context.IsExecutingOffline, adminService); #region sellout if (CanalPost.Classificacao != null && CanalPost.Classificacao.Name != null) { if (!String.IsNullOrEmpty(CanalPost.CodigoMatriz) && !String.IsNullOrEmpty(CanalPost.CpfCnpj)) { String resultString = null; //Verifica se a conta é distribuidor ou Atacado switch (CanalPost.Classificacao.Name) { case Domain.Enum.Conta.Classificacao.Dist_BoxMover: case Domain.Enum.Conta.Classificacao.Dist_VAD: resultString = new Domain.Servicos.CanalServices(context.OrganizationName, context.IsExecutingOffline, adminService).PersistirDistribuidor(CanalPost, context); if (!string.IsNullOrEmpty(resultString)) { throw new ArgumentException("(CRM) " + resultString); } break; case Domain.Enum.Conta.Classificacao.Atac_Dist: if (Domain.Enum.Conta.SubClassificacao.Atac_Distribuidor == CanalPost.Subclassificacao.Name) { if (Domain.Enum.Conta.CategoriaConta.Completo == CanalPost.Categoria.Name) { resultString = new Domain.Servicos.CanalServices(context.OrganizationName, context.IsExecutingOffline, adminService).PersistirDistribuidor(CanalPost, context); if (!string.IsNullOrEmpty(resultString)) { throw new ArgumentException("(CRM) " + resultString); } } } break; } } } #endregion } break; #endregion } }
public FamiliaProduto DefinirPropriedades(Intelbras.Message.Helper.MSG0028 xml) { var crm = new FamiliaProduto(this.Organizacao, this.IsOffline); FamiliaProduto familiaProduto = new Intelbras.CRM2013.Domain.Servicos.RepositoryService(this.Organizacao, this.IsOffline).FamiliaProduto.ObterPor(xml.CodigoFamilia); if (familiaProduto != null) { crm.DescontoVerdeHabilitado = familiaProduto.DescontoVerdeHabilitado; } #region Propriedades Crm->Xml if (!String.IsNullOrEmpty(xml.Nome)) { crm.Nome = xml.Nome; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "(Nome não enviado."; return(crm); } if (!String.IsNullOrEmpty(xml.CodigoFamilia)) { crm.Codigo = xml.CodigoFamilia; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "(Código Família não enviado."; return(crm); } crm.Status = xml.Situacao; //Segmento if (!String.IsNullOrEmpty(xml.Segmento)) { Model.Segmento segmento = new Model.Segmento(this.Organizacao, this.IsOffline); segmento = new Intelbras.CRM2013.Domain.Servicos.SegmentoService(this.Organizacao, this.IsOffline).BuscaSegmento(xml.Segmento); if (segmento != null && segmento.ID.HasValue) { crm.Segmento = new Lookup(segmento.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Segmento não encontrado!"; return(crm); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Segmento não enviado."; return(crm); } crm.IntegradoEm = DateTime.Now; crm.IntegradoPor = usuarioIntegracao.NomeCompleto; crm.UsuarioIntegracao = xml.LoginUsuario; #endregion return(crm); }