public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario) { //Trace.Add("Mensagem " + numeroMensagem + " XML: {0}", mensagem); usuarioIntegracao = usuario; var objeto = this.DefinirPropriedades(this.CarregarMensagem <Pollux.MSG0010>(mensagem)); if (!resultadoPersistencia.Sucesso) { retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0010R1>(numeroMensagem, retorno)); } objeto = new Intelbras.CRM2013.Domain.Servicos.EnderecoServices(this.Organizacao, this.IsOffline).Persistir(objeto); if (objeto == null) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "(Registro não encontrado!"; } else { resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "(Integração ocorrida com sucesso"; } retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0010R1>(numeroMensagem, retorno)); }
public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario) { try { usuarioIntegracao = usuario; var objeto = this.DefinirPropriedades(this.CarregarMensagem <Pollux.MSG0012>(mensagem)); objeto = new Intelbras.CRM2013.Domain.Servicos.EnderecoServices(this.Organizacao, this.IsOffline).Persistir(objeto); if (objeto == null) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Registro não encontrado!"; } else { resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso"; } retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0012R1>(numeroMensagem, retorno)); } catch (ArgumentException ex) { resultadoPersistencia.Mensagem = ex.Message; resultadoPersistencia.Sucesso = false; return(CriarMensagemRetorno <Pollux.MSG0012R1>(numeroMensagem, retorno)); } }
public Municipio DefinirPropriedades(Intelbras.Message.Helper.MSG0012 xml) { if (string.IsNullOrWhiteSpace(xml.Nome)) { throw new ArgumentException("(CRM) Nome não pode ser vazio"); } if (string.IsNullOrWhiteSpace(xml.Estado)) { throw new ArgumentException("(CRM) Estado não pode ser vazio"); } if (string.IsNullOrWhiteSpace(xml.ChaveIntegracao)) { throw new ArgumentException("(CRM) ChaveIntegracao não pode ser vazio"); } var estado = new Intelbras.CRM2013.Domain.Servicos.EnderecoServices(this.Organizacao, this.IsOffline).BuscaEstado(xml.Estado); if (estado == null) { throw new ArgumentException("(CRM) Estado não encontrado no CRM"); } #region Propriedades Crm->Xml var crm = new Municipio(this.Organizacao, this.IsOffline); crm.Nome = xml.Nome; crm.Estadoid = new Lookup(estado.ID.Value, ""); crm.ChaveIntegracao = xml.ChaveIntegracao; crm.State = xml.Situacao; crm.IntegradoEm = DateTime.Now; crm.IntegradoPor = usuarioIntegracao.NomeCompleto; crm.UsuarioIntegracao = xml.LoginUsuario; crm.CodigoIbge = xml.CodigoIBGE; if (xml.CodigoIBGE.HasValue) { crm.CodigoIbge = xml.CodigoIBGE; } else { crm.AddNullProperty("CodigoIbge"); } #endregion return(crm); }
public RegiaoAtuacao DefinirPropriedades(Intelbras.Message.Helper.MSG0076 xml) { var crm = new RegiaoAtuacao(this.Organizacao, this.IsOffline); if (!String.IsNullOrEmpty(xml.CodigoConta)) { Model.Conta conta = new Model.Conta(this.Organizacao, this.IsOffline); conta = new Intelbras.CRM2013.Domain.Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(new Guid(xml.CodigoConta)); if (conta != null) { crm.Canal = conta.ID.Value; } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Canal não encontrado!"; return(crm); } //Municipio if (!String.IsNullOrEmpty(xml.ChaveIntegracaoCidade)) { Model.Municipio cidade = new Model.Municipio(this.Organizacao, this.IsOffline); cidade = new Intelbras.CRM2013.Domain.Servicos.EnderecoServices(this.Organizacao, this.IsOffline).BuscaMunicipio(xml.ChaveIntegracaoCidade); if (cidade != null && cidade.ID.HasValue) { crm.MunicipioId = cidade.ID.Value; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Cidade não encontrada!"; return(crm); } } return(crm); }
public Estado DefinirPropriedades(Intelbras.Message.Helper.MSG0010 xml) { var crm = new Estado(this.Organizacao, this.IsOffline); #region Propriedades Crm->Xml if (!String.IsNullOrEmpty(xml.Nome)) { crm.Nome = xml.Nome; crm.UF = xml.Nome; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "(Nome não enviado."; return(crm); } if (!String.IsNullOrEmpty(xml.Sigla)) { crm.SiglaUF = xml.Sigla; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "(Sigla UF não enviado."; return(crm); } //Não obrigatório if (!String.IsNullOrEmpty(xml.RegiaoGeografica)) { Model.Itbc_regiaogeo regiao = new Model.Itbc_regiaogeo(this.Organizacao, this.IsOffline); var regiaoGeoId = new Guid(xml.RegiaoGeografica); regiao = new Intelbras.CRM2013.Domain.Servicos.EnderecoServices(this.Organizacao, this.IsOffline).BuscaRegiaoGeo(regiaoGeoId); if (regiao != null && regiao.ID.HasValue) { crm.RegiaoGeografica = new Lookup(regiao.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "(Região não encontrada!"; return(crm); } } else { crm.AddNullProperty("RegiaoGeografica"); } if (!String.IsNullOrEmpty(xml.ChaveIntegracao)) { crm.ChaveIntegracao = xml.ChaveIntegracao; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "(ChaveIntegracao não enviada."; return(crm); } if (!String.IsNullOrEmpty(xml.Pais)) { Model.Pais pais = new Model.Pais(this.Organizacao, this.IsOffline); pais = new Intelbras.CRM2013.Domain.Servicos.EnderecoServices(this.Organizacao, this.IsOffline).BuscaPais(xml.Pais); if (pais != null && pais.ID.HasValue) { crm.Pais = new Lookup(pais.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "(Pais não encontrado!"; return(crm); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "(País não enviada."; return(crm); } crm.Status = xml.Situacao; crm.IntegradoEm = DateTime.Now; crm.IntegradoPor = usuarioIntegracao.NomeCompleto; crm.UsuarioIntegracao = xml.LoginUsuario; #endregion return(crm); }
public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario) { //Trace.Add("Mensagem " + numeroMensagem + " XML: {0}", mensagem); var xml = this.CarregarMensagem <Pollux.MSG0078>(mensagem); Conta objetoConta = null; UnidadeNegocio objetoUnidade = null; Classificacao objetoclassificacao = null; Categoria objetocategoria = null; Estado objetoEstado = null; if (string.IsNullOrEmpty(xml.CodigoConta) && string.IsNullOrEmpty(xml.CodigoUnidadeNegocio) && string.IsNullOrEmpty(xml.ChaveIntegracaoEstado)) { resultadoConsulta.Sucesso = false; resultadoConsulta.Mensagem = "Paramêtros não enviados."; retorno.Add("Resultado", resultadoConsulta); return(CriarMensagemRetorno <Pollux.MSG0078R1>(numeroMensagem, retorno)); } if (!String.IsNullOrEmpty(xml.CodigoConta)) { objetoConta = new Intelbras.CRM2013.Domain.Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(new Guid(xml.CodigoConta)); if (objetoConta == null) { resultadoConsulta.Sucesso = false; resultadoConsulta.Mensagem = "[Conta] não encontrada."; retorno.Add("Resultado", resultadoConsulta); return(CriarMensagemRetorno <Pollux.MSG0078R1>(numeroMensagem, retorno)); } } if (!String.IsNullOrEmpty(xml.CodigoUnidadeNegocio)) { objetoUnidade = new Intelbras.CRM2013.Domain.Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(xml.CodigoUnidadeNegocio); if (objetoUnidade == null) { resultadoConsulta.Sucesso = false; resultadoConsulta.Mensagem = "[Unidade Negócio] não encontrada."; retorno.Add("Resultado", resultadoConsulta); return(CriarMensagemRetorno <Pollux.MSG0078R1>(numeroMensagem, retorno)); } } //new if (!String.IsNullOrEmpty(xml.Classificacao)) { objetoclassificacao = new Intelbras.CRM2013.Domain.Servicos.ClassificacaoService(this.Organizacao, this.IsOffline).BuscaClassificacao(new Guid(xml.Classificacao)); if (objetoclassificacao == null) { resultadoConsulta.Sucesso = false; resultadoConsulta.Mensagem = "[Classificao] não encontrada."; retorno.Add("Resultado", resultadoConsulta); return(CriarMensagemRetorno <Pollux.MSG0078R1>(numeroMensagem, retorno)); } } if (!String.IsNullOrEmpty(xml.Categoria)) { objetocategoria = new Intelbras.CRM2013.Domain.Servicos.CategoriaService(this.Organizacao, this.IsOffline).BuscaCategoria(new Guid(xml. Categoria)); if (objetocategoria == null) { resultadoConsulta.Sucesso = false; resultadoConsulta.Mensagem = "[Categoria] não encontrada."; retorno.Add("Resultado", resultadoConsulta); return(CriarMensagemRetorno <Pollux.MSG0078R1>(numeroMensagem, retorno)); } } // if (!String.IsNullOrEmpty(xml.ChaveIntegracaoEstado)) { objetoEstado = new Intelbras.CRM2013.Domain.Servicos.EnderecoServices(this.Organizacao, this.IsOffline).BuscaEstado(xml.ChaveIntegracaoEstado); if (objetoEstado == null) { resultadoConsulta.Sucesso = false; resultadoConsulta.Mensagem = "[Estado] não encontrado."; retorno.Add("Resultado", resultadoConsulta); return(CriarMensagemRetorno <Pollux.MSG0078R1>(numeroMensagem, retorno)); } } List <CategoriasCanal> lstObjetoCategoria = new List <CategoriasCanal>(); List <Guid> lstUnd = new List <Guid>(); if (objetoConta != null) { if (objetoUnidade != null) { lstObjetoCategoria = new Intelbras.CRM2013.Domain.Servicos.CategoriaCanalService(this.Organizacao, this.IsOffline).ListarPor((Guid)objetoConta.ID, (Guid)objetoUnidade.ID); } else { lstObjetoCategoria = new Intelbras.CRM2013.Domain.Servicos.CategoriaCanalService(this.Organizacao, this.IsOffline).ListarPor((Guid)objetoConta.ID, null); } foreach (CategoriasCanal item in lstObjetoCategoria ?? Enumerable.Empty <CategoriasCanal>()) { if (!lstUnd.Contains(item.UnidadeNegocios.Id)) { lstUnd.Add(item.UnidadeNegocios.Id); } } if (lstUnd != null && lstUnd.Count == 0) { resultadoConsulta.Sucesso = true; retorno.Add("Resultado", resultadoConsulta); return(CriarMensagemRetorno <Pollux.MSG0078R1>(numeroMensagem, retorno)); } } else if (objetoUnidade != null) { lstUnd.Add(objetoUnidade.ID.Value); } var objetoMunicipio = new Intelbras.CRM2013.Domain.Servicos.MunicipioServices(this.Organizacao, this.IsOffline).ObterPor(objetoConta.Endereco1Municipioid.Id); List <LinhaCorteDistribuidor> objLinhaCorteItem = new Intelbras.CRM2013.Domain.Servicos.LinhaCorteService(this.Organizacao, this.IsOffline).ListarLinhadeCorteDistribuidor(lstUnd, objetoEstado, objetoMunicipio.CapitalOuInterior); foreach (var item in objLinhaCorteItem) { // service que pega o objLinhaCorte com base na unidade de negócio e o estadoId da conta List <LinhaCorteEstado> LinhaCorteEstado = new Intelbras.CRM2013.Domain.Servicos.LinhaCorteService(this.Organizacao, this.IsOffline).ObterLinhaDeCorteDistribuidorEstadoPorIdDistribuidor(item.ID.Value); retornoLinhaCorteItem.CodigoLinhaCorte = item.ID.ToString(); if (!String.IsNullOrEmpty(item.Nome)) { retornoLinhaCorteItem.Nome = item.Nome; } if (item.UnidadeNegocios != null) { retornoLinhaCorteItem.CodigoUnidadeNegocio = new Intelbras.CRM2013.Domain.Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocio(item.UnidadeNegocios.Id).ChaveIntegracao; retornoLinhaCorteItem.NomeUnidadeNegocio = item.UnidadeNegocios.Name; } retornoLinhaCorteItem.LinhaCorteSemestral = (decimal)item.LinhaCorteSemestral; retornoLinhaCorteItem.LinhaCorteTrimestral = (decimal)item.LinhaCorteTrimestral; if (item.Moeda != null) { retornoLinhaCorteItem.Moeda = item.Moeda.Name; } if (usuario != null) { retornoLinhaCorteItem.CodigoProprietario = usuario.ID.Value.ToString(); retornoLinhaCorteItem.NomeProprietario = usuario.Nome; } //if (LinhaCorteEstado.Count <= 0) //{ // retornoLinhaCorteItem.EstadosItens.Add(new Pollux.Entities.EstadoItem(){}); //} foreach (var estado in LinhaCorteEstado) { Estado objEstado = new Intelbras.CRM2013.Domain.Servicos.EnderecoServices(this.Organizacao, this.IsOffline).BuscaEstadoPorGuid(estado.Estado.Value); if (objEstado != null && item.ID == estado.LinhaCorteDistribuidor.Value) { if (!String.IsNullOrEmpty(objEstado.Nome)) { listaEstados.NomeEstado = objEstado.Nome; } if (!String.IsNullOrEmpty(objEstado.ChaveIntegracao)) { listaEstados.ChaveIntegracaoEstado = objEstado.ChaveIntegracao; } retornoLinhaCorteItem.EstadosItens.Add(listaEstados); listaEstados = new Pollux.Entities.EstadoItem { }; } } //Depois de pegar as infos adiciona o dictionary em uma lista de dictionaries response.Add(retornoLinhaCorteItem); retornoLinhaCorteItem = new Pollux.Entities.LinhaCorte { }; } retorno.Add("LinhasCorteItens", response); retorno.Add("Resultado", resultadoConsulta); return(CriarMensagemRetorno <Pollux.MSG0078R1>(numeroMensagem, retorno)); }
///////////////////// CASO DE USO 2 e 3 APURAÇÃO DE BENEFICIO E COMPROMISSO POR FILIAL E POR MATRIZ public void MonitoramntoAutomaticoParaApuracaoDeCompromissosEBaneficiosPorFilialEMatriz() { Trace = new SDKore.Helper.Trace("MonitoramentoAutomatico"); mensagemLog = new List <string>(); string dataProc = DateTime.Now.ToString() + " - "; #region Validando Parametros if (StatusCompromissoCumprido == null) { throw new ApplicationException("A execução do monitoramento foi interrompida, não foi encontrado o Status do Compromisso: " + Intelbras.CRM2013.Domain.Enum.CompromissoCanal.StatusCompromisso.Cumprido); } if (StatusCompromissoNaoCumprido == null) { throw new ApplicationException("A execução do monitoramento foi interrompida, não foi encontrado o Status do Compromisso: " + Intelbras.CRM2013.Domain.Enum.CompromissoCanal.StatusCompromisso.Nao_Cumprido); } ParametroGlobal dataTimestre = ParametroGlobal.ListarParamGlobalPorTipoParam((int)Intelbras.CRM2013.Domain.Enum.TipoParametroGlobal.DatasTrimestre).FirstOrDefault(); if (dataTimestre == null) { throw new ApplicationException("A execução do monitoramento foi interrompida, o parâmetro global não foi encontrado ou está preenchido com valores incorretos."); } CompromissosDoPrograma compProgMeta = CompromissoDoCanal.BuscarCompromissoDoPrograma((int)Intelbras.CRM2013.Domain.Enum.CompromissoPrograma.Codigo.MetaTrimestral); if (compProgMeta == null) { throw new ApplicationException("Não foi possível encontrar o compromisso do programa de MetasTrimestrais"); } CompromissosDoPrograma compromissoTecnicoTreinadoCertificado = CompromissoDoCanal.BuscarCompromissoDoPrograma((int)Intelbras.CRM2013.Domain.Enum.CompromissoPrograma.Codigo.TecnicoTreinadoCertificado); if (compromissoTecnicoTreinadoCertificado == null) { throw new ApplicationException("Compromisso tecnico treinado certificado não encontrado"); } CompromissosDoPrograma compProgLinhaCorte = CompromissoDoCanal.BuscarCompromissoDoPrograma((int)Intelbras.CRM2013.Domain.Enum.CompromissoPrograma.Codigo.LinhaCorteTrimestral); if (compProgLinhaCorte == null) { throw new ApplicationException("Não foi possível encontrar o compromisso do programa de Linhas de cortes"); } #endregion DateTime ultimoDiaDoUltimoTrimestre = new SDKore.Helper.DateTimeHelper().UltimoDiaDoUltimoTrimestre(); int ano = ultimoDiaDoUltimoTrimestre.Year; int trimestre = (ultimoDiaDoUltimoTrimestre.Month - 1) / 3 + 1; var trimestreOrcamentodaUnidade = Helper.ConverterTrimestreOrcamentoUnidade(trimestre); // Obtem lista de canais matriz ou filial // (CASO USO 2: STEP 2) List <Conta> lstContas = ContaService.ListarContasParticipantesMAtrizEFilial(); // (CASO USO 2: STEP 2) foreach (Conta canal in lstContas) { if (canal.TipoConta == (int)Enum.Conta.MatrizOuFilial.Filial && canal.ApuracaoBeneficiosCompromissos == (int)Enum.Conta.ApuracaoDeBeneficiosECompromissos.Centralizada_Na_Matriz) { continue; } // LISTA DE CATEGORIAS DO CANAL // (CASO USO 2: STEP 4) List <CategoriasCanal> lstCat = CategoriaCanal.ListarPor(canal.ID, null); // caso seja um canal matriz obtem lista de suas filiais // (CASO USO 2: STEP 4) List <Conta> listaFiliais = ContaService.ListarContasFiliaisPorMatriz(canal.ID.Value); listaFiliais = listaFiliais.Where(x => x.ParticipantePrograma.HasValue && x.ParticipantePrograma.Value == (int)Enum.Conta.ParticipaDoPrograma.Sim).ToList(); // refina lista de unidade de negocio por categoria // (CASO USO 2: STEP 4) List <Guid> unidadesDeNegocio = this.RefinaUnidadeNegocio(lstCat); // (CASO USO 2: STEP 5 INICIANDO) foreach (var unNeg in unidadesDeNegocio) { HistoricoCompraCanal histCanal = new HistoricoCompraCanal(OrganizationName, isOffline); MetadoCanal metaCanal = new MetadoCanal(OrganizationName, isOffline); decimal valorHistorico = 0, metaPlanejada = 0; CompromissosDoCanal compCanal = CompromissoDoCanal.BuscarCompromissoCanal(compProgMeta.ID.Value, unNeg, canal.ID.Value); if (compCanal == null) { continue; } // SE FOR UM CANAL CENTRALIZADO NA MATRI OBTEM SUAS FILIAIS // ESSA INTERAÇÃO GARANTE QUE NO CASO DE UM CANAL SER UMA MATRIZ, O CASO USO 3: STEP 6,7,8 SERA ORRETAMENTE CONTEMPLADO // VISTO QUE O VALOR DO HISTORICO ESTA SENDO SOMADO CASO HAJA FILIAIS PARA O CANAL CORRENTE foreach (Intelbras.CRM2013.Domain.Model.Conta filial in listaFiliais) { if (canal.TipoConta == (int)Enum.Conta.MatrizOuFilial.Matriz && canal.ApuracaoBeneficiosCompromissos == (int)Enum.Conta.ApuracaoDeBeneficiosECompromissos.Por_Filiais) { continue; } List <CategoriasCanal> lstCatFiliais = CategoriaCanal.ListarPor(filial.ID, null); foreach (var categoria in lstCatFiliais) { if (categoria.UnidadeNegocios != null && categoria.UnidadeNegocios.Id == unNeg) { histCanal = null; metaCanal = null; // (CASO USO 3: STEP 6) hISTORICO DE COMPRA DAS FILIAIS, CASO CANAL SEJA CENTRALIZADO NA MATRI histCanal = RepositoryService.HistoricoCompraCanal.ObterPor(categoria.UnidadeNegocios.Id, (int)trimestreOrcamentodaUnidade, ano, filial.ID.Value); // so soma se for diferente do proprio canal pois posteriormente é somado o canal corrente if (histCanal != null && histCanal.Valor.HasValue) { valorHistorico += histCanal.Valor.Value; } } } } #region VALIDANDO BENEFICIO DE META x HISTORICO // EM CASO DE MATRIZ O VALOR DO HISTORICO É CALCULADO PARA TODAS A FILIAIS // (CASO USO 3: STEP 6) histCanal = RepositoryService.HistoricoCompraCanal.ObterPor(unNeg, (int)trimestreOrcamentodaUnidade, ano, canal.ID.Value); // (CASO USO 2: STEP 6) e // (CASO USO 3: STEP 9) metaCanal = MetaDoCanal.ObterPor(unNeg, (int)trimestreOrcamentodaUnidade, canal.ID.Value, ano); Trace.Add(dataProc + "Obter Meta do Canal - Un [{0}] Trimeste [{1}] Canal [{2}] Ano [{3}] Encontrou? [{4}]", unNeg, trimestre, canal.ID.Value, ano, (metaCanal != null)); if (metaCanal == null || !metaCanal.MetaPlanejada.HasValue || metaCanal.MetaPlanejada.Value == 0) { UnidadeNegocio un = RepositoryService.UnidadeNegocio.Retrieve(unNeg); string mensagem = string.Format("Não foi possível obter a Meta do Canal para Canal [{0}] e Unidade de Negócio [{1}]", canal.CodigoMatriz, un.Nome); this.AtualizarCompromissoCanalInconsistente(mensagem, compCanal, canal); } else { if (histCanal != null && histCanal.Valor.HasValue) { valorHistorico += histCanal.Valor.Value; } // (CASO USO 2: STEP 7) ou // (CASO USO 3: STEP 10) #region CALCULO DE HITORICO X META E BAIXA EM COMPROMISSO metaPlanejada = metaCanal.MetaPlanejada.Value; StatusCompromissos statusCompromissoMeta = (valorHistorico >= metaPlanejada) ? StatusCompromissoCumprido : StatusCompromissoNaoCumprido; if (statusCompromissoMeta != null) { compCanal.StatusCompromisso = new Lookup(statusCompromissoMeta.ID.Value, ""); compCanal.Validade = DateTime.Now.Date.AddMonths(3); CompromissoDoCanal.Atualizar(compCanal); } #endregion } #endregion #region VALIDANDO BENEFICIO DE LINHA DE CORTE valorHistorico = 0; decimal linhaCorte = 0; Lookup estadoCanal = canal.Endereco1Estadoid; Lookup classCanal = canal.Classificacao; StatusCompromissos statusComp = null; // compromisso do canal para linha de corte CompromissosDoCanal compCanalLinCorte = CompromissoDoCanal.BuscarCompromissoCanal(compProgLinhaCorte.ID.Value, unNeg, canal.ID.Value); #region VALIDAÇÕES PARA LOG if (compCanal == null) { InserirLog(dataProc + "Não foi possível encontrar o compromisso do canal de Linha de Corte para o canal : " + canal.ID.Value.ToString()); } if (canal.Endereco1Estadoid == null) { InserirLog(dataProc + "Monitoramento de linhas de corte não realizado para o canal : " + canal.ID.Value.ToString() + " Estado do canal não preenchido."); } if (canal.Classificacao == null) { InserirLog(dataProc + "Monitoramento de linhas de corte não realizado para o canal : " + canal.ID.Value.ToString() + " Classificação do canal não preenchido."); } #endregion #region PARA AS FILIAIS DA MATRIZ // EM CASO DE MATRIZ O VALOR DO HISTORICO X LINHA DE CORTE É CALCULADO PARA TODAS A FILIAIS // (CASO USO 3: STEP 6) foreach (Intelbras.CRM2013.Domain.Model.Conta filial in listaFiliais) { if (canal.TipoConta == (int)Enum.Conta.MatrizOuFilial.Matriz && canal.ApuracaoBeneficiosCompromissos == (int)Enum.Conta.ApuracaoDeBeneficiosECompromissos.Por_Filiais) { continue; } histCanal = null; CRM2013.Domain.Model.Estado estado = new Intelbras.CRM2013.Domain.Model.Estado(this.OrganizationName, this.isOffline); CRM2013.Domain.Model.Municipio municipio = new Intelbras.CRM2013.Domain.Model.Municipio(this.OrganizationName, this.isOffline); CRM2013.Domain.Model.Categoria _categoriaCanal = new Intelbras.CRM2013.Domain.Model.Categoria(this.OrganizationName, this.isOffline); List <Guid> lstUnidade = new List <Guid>(); List <CategoriasCanal> lstCatFiliais = new List <CategoriasCanal>(); if (canal.Endereco1Municipioid == null) { InserirLogFormat("O Município do Canal [{0}] não está preenchido.", canal.CodigoMatriz); } // (CASO USO 3: STEP 6) histCanal = RepositoryService.HistoricoCompraCanal.ObterPor(unNeg, (int)trimestreOrcamentodaUnidade, ano, filial.ID.Value); if (histCanal != null && histCanal.Valor.HasValue) { valorHistorico += histCanal.Valor.Value; } lstCatFiliais = CategoriaCanal.ListarPor(filial.ID, null); foreach (var categoria in lstCatFiliais) { if (categoria.UnidadeNegocios != null && categoria.UnidadeNegocios.Id == unNeg) { // (CASO USO 3: STEP 12) if (classCanal.Name == Intelbras.CRM2013.Domain.Enum.Conta.Classificacao.Dist_BoxMover || classCanal.Name == Intelbras.CRM2013.Domain.Enum.Conta.Classificacao.Dist_VAD) { lstUnidade = new List <Guid>(); lstUnidade.Add(categoria.UnidadeNegocios.Id); estado.ID = estadoCanal.Id; // (CASO USO 3: STEP 11) MUNICIPIO DO CANAL municipio = new Intelbras.CRM2013.Domain.Servicos.EnderecoServices(this.OrganizationName, this.isOffline).ObterMunicipio(canal.Endereco1Municipioid.Id); List <LinhaCorteDistribuidor> listaLinhaCorte = LinhaCorteService.ListarLinhadeCorteDistribuidor(lstUnidade, estado, municipio.CapitalOuInterior); //(CASO USO 3: STEP 14) if (listaLinhaCorte == null || listaLinhaCorte.Count == 0) { InserirLog(dataProc + "Linha de corte não encontrada para a filial: " + filial.CodigoMatriz); continue; } foreach (var item in listaLinhaCorte) { //(CASO USO 3: STEP 12) //Se achar mais de uma linha de corte, verifica se o campo capitalOuInterior é igual ao valor do municipio ligado ao canal if ((listaLinhaCorte.Count > 1 && item.CapitalOuInterior == municipio.CapitalOuInterior) || listaLinhaCorte.Count == 1) { linhaCorte += item.LinhaCorteTrimestral.Value; } //(CASO USO 3: STEP 14) if (!item.LinhaCorteTrimestral.HasValue) { InserirLog(dataProc + "Linha de corte não encontrada para a filial : " + filial.ID.Value.ToString()); } //this.AtualizarCompromissoCanalInconsistente("Linha de corte não possui valor para a filial : : " + filial.ID.Value.ToString() + " do canal : ", compCanal, canal); } } //SE FOR REVENDA TRANSACIONAL OU RELACIONAL // (CASO USO 3: STEP 17) if (classCanal.Name == Intelbras.CRM2013.Domain.Enum.Conta.Classificacao.Rev_Rel || classCanal.Name == Intelbras.CRM2013.Domain.Enum.Conta.Classificacao.Rev_Trans) { foreach (var item in lstCat) { lstUnidade = new List <Guid>(); lstUnidade.Add(unNeg); _categoriaCanal.ID = item.ID; List <LinhaCorteRevenda> listaLinhaCorteRevenda = LinhaCorteService.ListarLinhadeCorteRevenda(lstUnidade, _categoriaCanal); //(CASO USO 3: STEP 14) if (listaLinhaCorteRevenda == null || listaLinhaCorteRevenda.Count == 0) { InserirLog(dataProc + "Linha de corte não encontrada para a filial : " + filial.ID.Value.ToString()); } //this.AtualizarCompromissoCanalInconsistente("Linha de corte não encontrada para a filial : " + filial.ID.Value.ToString() + " do canal : ", compCanal, canal); foreach (var _linhaCorteRevenda in listaLinhaCorteRevenda) { //(CASO USO 3: STEP 19) if (!_linhaCorteRevenda.LinhaCorteTrimestral.HasValue) { InserirLog(dataProc + "Linha de corte não encontrada para a filial : " + filial.ID.Value.ToString()); } //this.AtualizarCompromissoCanalInconsistente("Linha de corte não possui valor para a filial : : " + filial.ID.Value.ToString() + " do canal : ", compCanal, canal); linhaCorte += _linhaCorteRevenda.LinhaCorteTrimestral.Value; } } } } } } #endregion // OBTEM HISTORICO DE CANAL histCanal = RepositoryService.HistoricoCompraCanal.ObterPor(unNeg, (int)trimestreOrcamentodaUnidade, ano, canal.ID.Value); // SE TIVER HISTORICO SOMA COM VARIAVEL SOMADORA valorHistorico if (histCanal != null && histCanal.Valor.HasValue) { valorHistorico += histCanal.Valor.Value; } #region BOXMOVER OU VAD //(CASO USO 2: STEP 11) if (classCanal.Name == Intelbras.CRM2013.Domain.Enum.Conta.Classificacao.Dist_BoxMover || classCanal.Name == Intelbras.CRM2013.Domain.Enum.Conta.Classificacao.Dist_VAD) { LinhaCorteDistribuidor objLinhaCorte = (LinhaCorteDistribuidor)LinhaCorteService.ObterLinhaCorte(unNeg, estadoCanal.Id, null, "distribuidor"); if (objLinhaCorte == null || objLinhaCorte.LinhaCorteTrimestral == null) { InserirLog(dataProc + "Linha de corte não encontrada para a canal : " + canal.ID.Value.ToString()); } //this.AtualizarCompromissoCanalInconsistente("Linha de corte não encontrada para o canal : ", compCanal, canal); if (!objLinhaCorte.LinhaCorteTrimestral.HasValue) { InserirLog(dataProc + "Linha de corte não encontrada para a canal : " + canal.ID.Value.ToString()); } //this.AtualizarCompromissoCanalInconsistente("Linha de corte não possui valor para o canal : ", compCanal, canal); linhaCorte += objLinhaCorte.LinhaCorteTrimestral.Value; } #endregion #region RELACIONAL OU TRANSACIONAL //(CASO USO 2: STEP 11) if (classCanal.Name == Intelbras.CRM2013.Domain.Enum.Conta.Classificacao.Rev_Rel || classCanal.Name == Intelbras.CRM2013.Domain.Enum.Conta.Classificacao.Rev_Trans) { foreach (var item in lstCat) { LinhaCorteRevenda objLinhaCorteRevenda = (LinhaCorteRevenda)LinhaCorteService.ObterLinhaCorte(unNeg, null, item.Categoria.Id, "revenda"); if (objLinhaCorteRevenda == null || objLinhaCorteRevenda.LinhaCorteTrimestral == null) { InserirLog(dataProc + "Linha de corte não encontrada para a canal : " + canal.ID.Value.ToString()); } //this.AtualizarCompromissoCanalInconsistente("Linha de corte não encontrada para o canal : ", compCanal, canal); if (!objLinhaCorteRevenda.LinhaCorteTrimestral.HasValue) { InserirLog(dataProc + "Linha de corte não encontrada para a canal : " + canal.ID.Value.ToString()); } //this.AtualizarCompromissoCanalInconsistente("Linha de corte não possui valor para o canal : ", compCanal, canal); linhaCorte += objLinhaCorteRevenda.LinhaCorteTrimestral.Value; } } #endregion #region CALCULO DE HISTORICO X LINHA DE CORTE statusComp = (valorHistorico >= linhaCorte) ? StatusCompromissoCumprido : StatusCompromissoNaoCumprido; compCanalLinCorte.StatusCompromisso = new Lookup(statusComp.ID.Value, ""); compCanalLinCorte.Validade = DateTime.Now.Date.AddMonths(3); CompromissoDoCanal.Atualizar(compCanalLinCorte); #endregion #endregion #region VALIDANDO TREINAMENTO // ESTE CASO DE USO ATENDE O 2 E O 3 POIS AMBOS IDEPENDEM DE MATRIZ OU FILIAL // E O MESMO DEVE SER REFERENCIADO PELO CANAL EM QUESTÃO CompromissosDoCanal compTreinamento = CompromissoDoCanal.BuscarCompromissoCanal(compromissoTecnicoTreinadoCertificado.ID.Value, unNeg, canal.ID.Value); if (compTreinamento == null) { continue; } //(CASO USO 2: STEP 12) List <TreinamentoCanal> lstTreinamentoCanal = RepositoryService.TreinamentoCanal.ListarPor(null, null, compTreinamento.ID.Value); StatusCompromissos statusCompromissoTreinamento = StatusCompromissoCumprido; //(CASO USO 2: STEP 13) foreach (TreinamentoCanal _treinamentocanal in lstTreinamentoCanal) { if (_treinamentocanal.StatusCompromisso.Name == Enum.TreinamentoCanal.StatusCompromisso.Nao_Cumprido) { statusCompromissoTreinamento = StatusCompromissoNaoCumprido; break; } } compTreinamento.StatusCompromisso = new Lookup(statusCompromissoTreinamento.ID.Value, ""); compTreinamento.Validade = DateTime.Now.Date.AddMonths(3); CompromissoDoCanal.Atualizar(compTreinamento); #endregion Trace.SaveClear(); } } #region MANDA EMAIL DE LOG StringBuilder sb = new StringBuilder(); foreach (string item in mensagemLog) { sb.AppendLine(item); } EnviaEmailDeLog("Monitoramnto Automatico"); #endregion }
public Fatura DefinirPropriedades(Intelbras.Message.Helper.MSG0094 xml) { Fatura crm = new Fatura(this.Organizacao, this.IsOffline); if (!String.IsNullOrEmpty(xml.NumeroNotaFiscal)) { crm.NumeroNF = xml.NumeroNotaFiscal; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "NumeroNotaFiscal não enviado."; return(crm); } crm.Serie = xml.NumeroSerie; crm.ClienteId = new Lookup(new Guid(xml.CodigoClienteCRM), xml.TipoObjetoCliente); crm.ChaveIntegracao = xml.ChaveIntegracao; //NumeroPedido.ToString(); if (xml.NumeroPedido != null) { Pedido pedido = new Servicos.PedidoService(this.Organizacao, this.IsOffline).BuscaPedidoEMS(xml.NumeroPedido.ToString()); if (pedido != null) { crm.PedidoCRM = new Lookup(pedido.ID.Value, ""); Fatura fatura = new Servicos.FaturaService(this.Organizacao, this.IsOffline).ObterFaturaPorPedidoEMS(xml.NumeroPedido.ToString()); if (fatura != null) { crm.ID = fatura.ID.Value; } } } if (!String.IsNullOrEmpty(xml.NumeroPedidoCliente)) { crm.PedidoCliente = xml.NumeroPedidoCliente; } else { crm.AddNullProperty("PedidoCliente"); } if (!String.IsNullOrEmpty(xml.Descricao)) { crm.Descricao = xml.Descricao; } else { crm.AddNullProperty("Descricao"); } //Service Estabelecimento Estabelecimento ObjEstabelecimento = new Intelbras.CRM2013.Domain.Servicos.EstabelecimentoService(this.Organizacao, this.IsOffline).BuscaEstabelecimentoPorCodigo(xml.Estabelecimento.Value); if (ObjEstabelecimento != null) { crm.Estabelecimento = new Lookup((Guid)ObjEstabelecimento.ID, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador do Estabelecimento não encontrado."; return(crm); } //Service Condição Pagamento CondicaoPagamento ObjCondicaoPagamento = null; if (xml.CondicaoPagamento.HasValue) { ObjCondicaoPagamento = new Intelbras.CRM2013.Domain.Servicos.CondicaoPagamentoService(this.Organizacao, this.IsOffline).BuscaCondicaoPagamentoPorCodigo(xml.CondicaoPagamento.Value); if (ObjCondicaoPagamento != null) { crm.CondicaoPagamento = new Lookup((Guid)ObjCondicaoPagamento.ID, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador da Condição de Pagamento não encontrado."; return(crm); } } else { crm.AddNullProperty("CondicaoPagamento"); } crm.NomeAbreviado = xml.NomeAbreviadoCliente; //Service Natureza Operação NaturezaOperacao ObjNaturezaOperacao = new Intelbras.CRM2013.Domain.Servicos.NaturezaOperacaoService(this.Organizacao, this.IsOffline).BuscaNaturezaOperacaoPorCodigo(xml.NaturezaOperacao); if (ObjNaturezaOperacao != null) { crm.NaturezaOperacao = new Lookup((Guid)ObjNaturezaOperacao.ID, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador da Natureza de Operação não encontrado."; return(crm); } //Service Moeda Moeda ObjMoeda = new Intelbras.CRM2013.Domain.Servicos.MoedaService(this.Organizacao, this.IsOffline).BuscaMoedaPorCodigo(xml.Moeda); if (ObjMoeda != null) { crm.Moeda = new Lookup((Guid)ObjMoeda.ID, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador da Moeda não encontrado."; return(crm); } //Service para resolver o status if (System.Enum.IsDefined(typeof(Enum.Fatura.Status), xml.SituacaoNota)) { crm.Status = xml.SituacaoNota; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador da Situação da nota não encontrado."; return(crm); } if (System.Enum.IsDefined(typeof(Enum.Fatura.RazaoStatus), xml.SituacaoEntrega)) { crm.RazaoStatus = xml.SituacaoEntrega; } crm.DataEmissao = xml.DataEmissao; if (xml.DataSaida.HasValue) { crm.DataSaida = xml.DataSaida; } else { crm.AddNullProperty("DataSaida"); } if (xml.DataEntrega.HasValue) { crm.DataEntrega = xml.DataEntrega; } else { crm.AddNullProperty("DataEntrega"); } if (xml.DataConfirmacao != null) { crm.DataConfirmacao = xml.DataConfirmacao; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "DataConfirmacao não enviada."; return(crm); } if (xml.DataCancelamento.HasValue) { crm.DataCancelamento = xml.DataCancelamento; } else { crm.AddNullProperty("DataCancelamento"); } if (xml.DataConclusao.HasValue) { crm.DataConclusao = xml.DataConclusao; } else { crm.AddNullProperty("DataConclusao"); } crm.ValorFrete = xml.ValorFrete; crm.PesoLiquido = xml.PesoLiquido; crm.PesoBruto = xml.PesoBruto; if (!String.IsNullOrEmpty(xml.Observacao)) { crm.Observacao = xml.Observacao; } else { crm.AddNullProperty("Observacao"); } crm.Volume = xml.Volume.ToString(); crm.BaseICMS = xml.ValorBaseICMS; crm.ValorICMS = xml.ValorICMS; crm.ValorIPI = xml.ValorIPI; crm.BaseSubstTributaria = xml.ValorBaseSubstituicaoTributaria; crm.ValorSubstituicao = xml.ValorSubstituicaoTributaria; crm.ClienteRetira = xml.RetiraNoLocal; if (xml.MetodoEntrega.HasValue) { crm.MetodoEntrega = xml.MetodoEntrega; } else { crm.AddNullProperty("MetodoEntrega"); } //Service Transportadora Transportadora ObjTransportadora = new Intelbras.CRM2013.Domain.Servicos.TransportadoraService(this.Organizacao, this.IsOffline).ObterPorCodigoTransportadora(xml.Transportadora.Value); if (ObjTransportadora != null) { crm.Transportadora = new Lookup((Guid)ObjTransportadora.ID, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador da Transportadora não encontrado."; return(crm); } crm.Frete = xml.Frete; //crm.CondicoesFrete = xml.tipo; if (!String.IsNullOrEmpty(xml.TelefoneCobranca)) { crm.TelefoneCobranca = xml.TelefoneCobranca; } else { crm.AddNullProperty("TelefoneCobranca"); } if (!String.IsNullOrEmpty(xml.FaxCobranca)) { crm.FaxCobranca = xml.FaxCobranca; } else { crm.AddNullProperty("FaxCobranca"); } //Removido essa validação para que as NF de clientes estrangeiros sejam integrados no CRM //if (!String.IsNullOrEmpty(xml.CNPJ)) // crm.CpfCnpj = Intelbras.CRM2013.Domain.Servicos.Helper.FormatarCnpj(xml.CNPJ); //else if (!String.IsNullOrEmpty(xml.CPF)) // crm.CpfCnpj = Intelbras.CRM2013.Domain.Servicos.Helper.FormatarCpf(xml.CPF); //else //{ // resultadoPersistencia.Sucesso = false; // resultadoPersistencia.Mensagem = "CNPJ/CPF não enviado."; // return crm; //} if (!String.IsNullOrEmpty(xml.InscricaoEstadual)) { crm.InscricaoEstadual = xml.InscricaoEstadual; } else { crm.AddNullProperty("InscricaoEstadual"); } if (!string.IsNullOrEmpty(xml.Oportunidade)) { crm.Oportunidade = new Lookup(new Guid(xml.Oportunidade), ""); } xml.PrecoBloqueado = xml.PrecoBloqueado; if (xml.ValorDesconto.HasValue) { crm.ValorDescontoFatura = xml.ValorDesconto; } else { crm.AddNullProperty("ValorDescontoFatura"); } if (xml.PercentualDesconto.HasValue) { crm.DescontoGlobalTotal = xml.PercentualDesconto; } else { crm.AddNullProperty("DescontoGlobalTotal"); } //Service Lista Preço ListaPreco ObjListaPreco = new Intelbras.CRM2013.Domain.Servicos.ListaPrecoService(this.Organizacao, this.IsOffline).BuscaListaPreco(xml.ListaPreco); if (ObjListaPreco != null) { crm.ListaPrecos = new Lookup((Guid)ObjListaPreco.ID, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador da Lista de Preço não encontrado."; return(crm); } crm.Prioridade = xml.Prioridade; if (xml.ValorTotal.HasValue) { crm.ValorTotal = xml.ValorTotal; } else { crm.AddNullProperty("ValorTotal"); } if (xml.ValorTotalImpostos.HasValue) { crm.TotalImpostos = xml.ValorTotalImpostos; } else { crm.AddNullProperty("TotalImpostos"); } //if (xml.ValorTotalProdutosSemImposto.HasValue) // crm.ValorTotalProdutosSemIPIST = xml.ValorTotalProdutosSemImposto; if (xml.ValorTotalSemFrete.HasValue) { crm.ValorTotalSemFrete = xml.ValorTotalSemFrete; } else { crm.AddNullProperty("ValorTotalSemFrete"); } if (xml.ValorTotalDesconto.HasValue) { crm.DescontoTotal = xml.ValorTotalDesconto; } else { crm.AddNullProperty("DescontoTotal"); } if (xml.ValorTotalProdutos.HasValue) { crm.TotalProdutosComIPIST = xml.ValorTotalProdutos; } else { crm.AddNullProperty("TotalProdutosComIPIST"); } if (xml.ValorTotalProdutosSemImposto.HasValue) { crm.ValorTotalProdutosSemIPIST = xml.ValorTotalProdutosSemImposto; } else { crm.AddNullProperty("ValorTotalProdutosSemIPIST"); } //Service Endereco Entrega if (!string.IsNullOrEmpty(xml.EnderecoEntrega.CaixaPostal)) { crm.EnderecoEntregaCaixaPostal = xml.EnderecoEntrega.CaixaPostal; } else { crm.AddNullProperty("EnderecoEntregaCaixaPostal"); } if (!string.IsNullOrEmpty(xml.EnderecoEntrega.NomeEndereco)) { crm.NomeEntrega = xml.EnderecoEntrega.NomeEndereco; } else { crm.AddNullProperty("NomeEntrega"); } crm.CEPEntrega = xml.EnderecoEntrega.CEP; crm.EnderecoEntregaRua = xml.EnderecoEntrega.Logradouro; crm.EnderecoEntregaNumero = xml.EnderecoEntrega.Numero; crm.BairroEntrega = xml.EnderecoEntrega.Bairro; crm.ComplementoEntrega = xml.EnderecoEntrega.Complemento; crm.TipoNotaFiscal = xml.TipoNotaFiscal; crm.NotaDevolucao = xml.NotaDevolucao; crm.IdentificadorUnicoNfe = xml.IdentificadorUnicoNFE; if (!string.IsNullOrEmpty(xml.EnderecoEntrega.Complemento)) { crm.ComplementoEntrega = xml.EnderecoEntrega.Complemento; } else { crm.AddNullProperty("ComplementoEntrega"); } if (!String.IsNullOrEmpty(xml.EnderecoEntrega.Cidade)) { Model.Municipio cidade = new Model.Municipio(this.Organizacao, this.IsOffline); cidade = new Intelbras.CRM2013.Domain.Servicos.EnderecoServices(this.Organizacao, this.IsOffline).BuscaMunicipio(xml.EnderecoEntrega.Cidade); if (cidade != null && cidade.ID.HasValue) { crm.EnderecoEntregaCidade = new Lookup(cidade.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador da Cidade não encontrado!"; return(crm); } } if (!String.IsNullOrEmpty(xml.EnderecoEntrega.Estado)) { Model.Estado estado = new Model.Estado(this.Organizacao, this.IsOffline); estado = new Intelbras.CRM2013.Domain.Servicos.EnderecoServices(this.Organizacao, this.IsOffline).BuscaEstado(xml.EnderecoEntrega.Estado); if (estado != null && estado.ID.HasValue) { crm.EnderecoEntregaEstado = new Lookup(estado.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador do Estado não encontrado!"; return(crm); } } ///Service Pais if (!String.IsNullOrEmpty(xml.EnderecoEntrega.Pais)) { Model.Pais pais = new Model.Pais(this.Organizacao, this.IsOffline); pais = new Intelbras.CRM2013.Domain.Servicos.EnderecoServices(this.Organizacao, this.IsOffline).BuscaPais(xml.EnderecoEntrega.Pais); if (pais != null && pais.ID.HasValue) { crm.EnderecoEntregaPais = new Lookup(pais.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador do País não encontrado."; return(crm); } } if (!String.IsNullOrEmpty(xml.EnderecoEntrega.NomeContato)) { crm.NomeEntrega = xml.EnderecoEntrega.NomeContato; } else { crm.AddNullProperty("NomeEntrega"); } if (!String.IsNullOrEmpty(xml.EnderecoEntrega.Telefone)) { crm.TelefoneEntrega = xml.EnderecoEntrega.Telefone; } else { crm.AddNullProperty("TelefoneEntrega"); } if (!String.IsNullOrEmpty(xml.EnderecoEntrega.Fax)) { crm.FaxEntrega = xml.EnderecoEntrega.Fax; } else { crm.AddNullProperty("FaxEntrega"); } #region Representante crm.IntegradoRepresentanteComErro = false; crm.IntegradoComErros = false; crm.RepresentanteOriginal = xml.Representante.ToString(); Contato ObjRepresentante = new Intelbras.CRM2013.Domain.Servicos.ContatoService(this.Organizacao, this.IsOffline) .BuscaContatoPorCodigoRepresentante(xml.Representante.ToString()); if (ObjRepresentante != null) { crm.KARepresentante = new Lookup(ObjRepresentante.ID.Value, ""); } else { crm.IntegradoRepresentanteComErro = true; crm.IntegradoComErros = true; crm.KARepresentante = new Lookup(ObterRepresentatePadrao(), ""); } #endregion return(crm); }
public Bens DefinirPropriedades(Intelbras.Message.Helper.MSG0066 xml) { var crm = new Bens(this.Organizacao, this.IsOffline); #region Propriedades Crm->Xml //ID não obrigatório - Create if (!String.IsNullOrEmpty(xml.CodigoImovel)) { crm.ID = new Guid(xml.CodigoImovel); } if (String.IsNullOrEmpty(xml.Contato) && String.IsNullOrEmpty(xml.Conta)) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Conta e Contato não foram enviados, deve ser enviado ao menos um destes objetos."; return(crm); } if (!String.IsNullOrEmpty(xml.Contato)) { if (xml.Contato.Length == 36) { crm.Contato = new Lookup(new Guid(xml.Contato), ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador do Contato enviado fora do padrão."; return(crm); } } if (!String.IsNullOrEmpty(xml.Conta)) { if (xml.Conta.Length == 36) { crm.Conta = new Lookup(new Guid(xml.Conta), ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador do Canal enviado fora do padrão."; return(crm); } } if (!String.IsNullOrEmpty(xml.EnderecoImovel.Numero)) { crm.Numero = xml.EnderecoImovel.Numero; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Numero do endereço do imóvel não enviado."; return(crm); } if (!String.IsNullOrEmpty(xml.EnderecoImovel.Logradouro)) { crm.Endereco = xml.EnderecoImovel.Logradouro; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Logradouro do endereço do imóvel não enviado."; return(crm); } if (!String.IsNullOrEmpty(xml.EnderecoImovel.Bairro)) { crm.Bairro = xml.EnderecoImovel.Bairro; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "(Bairro do endereço do imóvel não enviado."; return(crm); } if (!String.IsNullOrEmpty(xml.EnderecoImovel.CEP)) { crm.CEP = xml.EnderecoImovel.CEP; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "CEP do endereço do imóvel não enviado."; return(crm); } //Cidade - service if (!String.IsNullOrEmpty(xml.EnderecoImovel.Cidade)) { Municipio cidade = new Intelbras.CRM2013.Domain.Servicos.MunicipioServices(this.Organizacao, this.IsOffline).BuscaCidade(xml.EnderecoImovel.Cidade); if (cidade.ID.HasValue) { crm.Cidade = new Lookup(cidade.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Cidade do endereço do imóvel não encontrada!"; return(crm); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Cidade do endereço do imóvel não enviado."; return(crm); } if (!String.IsNullOrEmpty(xml.EnderecoImovel.Complemento)) { crm.Complemento = xml.EnderecoImovel.Complemento; } else { crm.AddNullProperty("Complemento"); } // Estado (UF) - service if (!String.IsNullOrEmpty(xml.EnderecoImovel.Estado)) { Model.Estado estado = new Model.Estado(this.Organizacao, this.IsOffline); estado = new Intelbras.CRM2013.Domain.Servicos.EnderecoServices(this.Organizacao, this.IsOffline).BuscaEstado(xml.EnderecoImovel.Estado); if (estado != null && estado.ID.HasValue) { crm.Estado = new Lookup(estado.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Estado não encontrado!"; return(crm); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Estado do endereço do imóvel não enviado."; return(crm); } if (!String.IsNullOrEmpty(xml.Matricula)) { crm.Matrícula = xml.Matricula; } else { crm.AddNullProperty("Matrícula"); } if (!String.IsNullOrEmpty(xml.Nome)) { crm.Nome = xml.Nome; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Nome do imóvel não enviado."; return(crm); } crm.Onus = xml.ValorOnus; // País if (!String.IsNullOrEmpty(xml.EnderecoImovel.Pais)) { Model.Pais pais = new Model.Pais(this.Organizacao, this.IsOffline); pais = new Intelbras.CRM2013.Domain.Servicos.EnderecoServices(this.Organizacao, this.IsOffline).BuscaPais(xml.EnderecoImovel.Pais); if (pais != null && pais.ID.HasValue) { crm.Pais = new Lookup(pais.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "País não encontrado!"; return(crm); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "País do endereço do imóvel não enviado."; return(crm); } crm.TipoImovel = xml.TipoImovel; crm.Valor = xml.ValorImovel; crm.Status = xml.Situacao; // Moeda - service if (!String.IsNullOrEmpty(xml.Moeda)) { Model.Moeda moeda = new Model.Moeda(this.Organizacao, this.IsOffline); moeda = new Intelbras.CRM2013.Domain.Servicos.MoedaService(this.Organizacao, this.IsOffline).BuscaMoedaPorNome(xml.Moeda); if (moeda != null && moeda.ID.HasValue) { crm.Moeda = new Lookup(moeda.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Moeda não encontrada!"; return(crm); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Moeda não enviada."; return(crm); } crm.NaturezaProprietario = xml.NaturezaProprietarioImovel; #endregion return(crm); }