Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }