Пример #1
0
        public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        {
            //Trace.Add("Mensagem " + numeroMensagem + " XML: {0}", mensagem);
            var xml = this.CarregarMensagem <Pollux.MSG0130>(mensagem);


            //Retorna todos registros
            List <UnidadeNegocio> lstUnidNegocio = new Intelbras.CRM2013.Domain.Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).ListarTodos();

            List <Pollux.Entities.UnidadeNegocio> unidadesNegociosItens = this.ConverteLista(lstUnidNegocio);

            if (unidadesNegociosItens != null && unidadesNegociosItens.Count > 0)
            {
                resultadoPersistencia.Sucesso  = true;
                resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso.";
                retorno.Add("UnidadesNegocioItens", unidadesNegociosItens);
            }
            else
            {
                resultadoPersistencia.Sucesso  = true;
                resultadoPersistencia.Mensagem = "REgistrso não encontrados no Crm.";
            }


            retorno.Add("Resultado", resultadoPersistencia);
            return(CriarMensagemRetorno <Pollux.MSG0130R1>(numeroMensagem, retorno));
        }
Пример #2
0
        public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        {
            //Trace.Add("Mensagem " + numeroMensagem + " XML: {0}", mensagem);
            usuarioIntegracao = usuario;
            var xml = this.CarregarMensagem <Pollux.MSG0129>(mensagem);

            if (!String.IsNullOrEmpty(xml.CodigoUnidadeNegocio))
            {//Retorna registros com base no estabelecimento
                //Pegamos a Unidade de negócio com base no codigo do erp dele
                UnidadeNegocio objUnidadeNegocio = new Intelbras.CRM2013.Domain.Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(xml.CodigoUnidadeNegocio);

                if (objUnidadeNegocio == null)
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Unidade de Negócio não encontrada.";
                    retorno.Add("Resultado", resultadoPersistencia);
                    return(CriarMensagemRetorno <Pollux.MSG0129R1>(numeroMensagem, retorno));
                }

                List <Segmento> lstSegmento = new Intelbras.CRM2013.Domain.Servicos.SegmentoService(this.Organizacao, this.IsOffline).ListarPorUnidadeNegocio((Guid)objUnidadeNegocio.ID);

                if (lstSegmento.Any <Segmento>())
                {
                    //para nao precisar refazer a service
                    codigoUnidadeNegocio = xml.CodigoUnidadeNegocio;
                    List <Pollux.Entities.Segmento> SegmentoItens = this.ConverteLista(lstSegmento);
                    resultadoPersistencia.Sucesso = true;
                    retorno.Add("SegmentosItens", SegmentoItens);
                }
                else
                {
                    resultadoPersistencia.Sucesso  = true;
                    resultadoPersistencia.Mensagem = "Segmento não encontrado.";
                }
            }
            else
            {//Retorna todos registros
                List <Segmento> lstSegmento = new Intelbras.CRM2013.Domain.Servicos.SegmentoService(this.Organizacao, this.IsOffline).ListarTodos();

                List <Pollux.Entities.Segmento> lstRetorno = this.ConverteLista(lstSegmento);


                if (lstSegmento != null)
                {
                    resultadoPersistencia.Sucesso  = true;
                    resultadoPersistencia.Mensagem = "";
                    retorno.Add("SegmentosItens", lstRetorno);
                }
                else
                {
                    resultadoPersistencia.Sucesso  = true;
                    resultadoPersistencia.Mensagem = "Registros não encontrados.";
                }
            }
            retorno.Add("Resultado", resultadoPersistencia);
            return(CriarMensagemRetorno <Pollux.MSG0129R1>(numeroMensagem, retorno));
        }
Пример #3
0
        public Guid UnidadeNegocio(string codigoUN, ref Pollux.Entities.Resultado resultadoPersistencia)
        {
            UnidadeNegocio unidadeNegocio = new Intelbras.CRM2013.Domain.Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(codigoUN);

            if (unidadeNegocio != null)
            {
                //crm.UnidadeNegocio = new Lookup((Guid)unidadeNegocio.ID, "");
                return((Guid)unidadeNegocio.ID);
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Identificador da Unidade de Negócio não encontrado.";
                return(Guid.Empty);
            }
        }
Пример #4
0
        public Pollux.Entities.LinhaCorteRevenda DefinirPropriedades(LinhaCorteRevenda objCrm)
        {
            Pollux.Entities.LinhaCorteRevenda xmlRetorno = new Pollux.Entities.LinhaCorteRevenda();

            xmlRetorno.CodigoLinhaCorte = objCrm.ID.Value.ToString();

            if (!String.IsNullOrEmpty(objCrm.Nome))
            {
                xmlRetorno.Nome = objCrm.Nome;
            }

            if (objCrm.Categoria != null)
            {
                xmlRetorno.CodigoCategoria = objCrm.Categoria.Id.ToString();
                xmlRetorno.NomeCategoria   = objCrm.Categoria.Name;
            }

            if (objCrm.UnidadeNegocio != null)
            {
                UnidadeNegocio unidadeNegocio = new Intelbras.CRM2013.Domain.Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocio(objCrm.UnidadeNegocio.Id);
                if (unidadeNegocio != null)
                {
                    xmlRetorno.CodigoUnidadeNegocio = unidadeNegocio.ChaveIntegracao;
                    xmlRetorno.NomeUnidadeNegocio   = unidadeNegocio.Nome;
                }
            }

            xmlRetorno.LinhaCorteSemestral  = (decimal)objCrm.LinhaCorteSemestral;
            xmlRetorno.LinhaCorteTrimestral = (decimal)objCrm.LinhaCorteTrimestral;
            xmlRetorno.Moeda = "Real";

            Usuario proprietario = new Servicos.UsuarioService(this.Organizacao, this.IsOffline).BuscarProprietario("itbc_linhadecorterevenda", "itbc_linhadecorterevendaid", objCrm.Id);

            if (proprietario != null)
            {
                xmlRetorno.CodigoProprietario = proprietario.Id.ToString();
                xmlRetorno.NomeProprietario   = proprietario.NomeCompleto;
            }

            return(xmlRetorno);
        }
Пример #5
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));
        }
Пример #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.MSG0079>(mensagem);
            Conta                  objetoConta      = null;
            UnidadeNegocio         objetoUnidadeNeg = null;
            Categoria              objetoCategoria  = null;
            List <CategoriasCanal> lstCategCanal    = null;

            if (String.IsNullOrEmpty(xml.CodigoConta) && String.IsNullOrEmpty(xml.CodigoUnidadeNegocio) && String.IsNullOrEmpty(xml.CodigoCategoria))
            {
                resultadoConsulta.Sucesso  = false;
                resultadoConsulta.Mensagem = "Pelo menos 1 parâmetro deve ser enviado.";
                retorno.Add("Resultado", resultadoConsulta);
                return(CriarMensagemRetorno <Pollux.MSG0079R1>(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.MSG0079R1>(numeroMensagem, retorno));
                }
            }

            if (!String.IsNullOrEmpty(xml.CodigoUnidadeNegocio))
            {
                objetoUnidadeNeg = new Intelbras.CRM2013.Domain.Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(xml.CodigoUnidadeNegocio);
                if (objetoUnidadeNeg == null)
                {
                    resultadoConsulta.Sucesso  = false;
                    resultadoConsulta.Mensagem = "[Unidade Negócio] não encontrada.";
                    retorno.Add("Resultado", resultadoConsulta);
                    return(CriarMensagemRetorno <Pollux.MSG0078R1>(numeroMensagem, retorno));
                }
            }

            if (!String.IsNullOrEmpty(xml.CodigoCategoria))
            {
                objetoCategoria = new Intelbras.CRM2013.Domain.Servicos.CategoriaService(this.Organizacao, this.IsOffline).ObterPor(new Guid(xml.CodigoCategoria));
                if (objetoCategoria == null)
                {
                    resultadoConsulta.Sucesso  = false;
                    resultadoConsulta.Mensagem = "[Categoria] não encontrada.";
                    retorno.Add("Resultado", resultadoConsulta);
                    return(CriarMensagemRetorno <Pollux.MSG0079R1>(numeroMensagem, retorno));
                }
            }

            List <CategoriasCanal> lstObjetoCategoria = new List <CategoriasCanal>();
            List <Guid>            lstUnd             = new List <Guid>();

            if (objetoConta != null)
            {
                if (objetoUnidadeNeg != null)
                {
                    lstObjetoCategoria = new Intelbras.CRM2013.Domain.Servicos.CategoriaCanalService(this.Organizacao, this.IsOffline).ListarPor((Guid)objetoConta.ID, (Guid)objetoUnidadeNeg.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.Count == 0)
                {
                    resultadoConsulta.Sucesso = true;
                    retorno.Add("Resultado", resultadoConsulta);
                    return(CriarMensagemRetorno <Pollux.MSG0079R1>(numeroMensagem, retorno));
                }
            }
            else if (objetoUnidadeNeg != null)
            {
                lstUnd.Add(objetoUnidadeNeg.ID.Value);
            }
            else if (objetoCategoria != null)
            {
                lstUnd = null;
            }
            List <LinhaCorteRevenda> objLinhaCorteRevenda = new List <LinhaCorteRevenda>();

            if (objetoCategoria != null)
            {
                objLinhaCorteRevenda = new Intelbras.CRM2013.Domain.Servicos.LinhaCorteService(this.Organizacao, this.IsOffline).ListarLinhadeCorteRevenda(lstUnd, objetoCategoria);
            }
            else if (lstObjetoCategoria.Count > 0)
            {
                //Passado Canal, mas nao categoria. As categorias foram obtidas atraves de CategoriasCanal
                foreach (var itemCateg in lstObjetoCategoria)
                {
                    Categoria categ = new Servicos.CategoriaService(this.Organizacao, this.IsOffline).ObterPor(itemCateg.Categoria.Id);
                    List <LinhaCorteRevenda> lstPorItem = new Intelbras.CRM2013.Domain.Servicos.LinhaCorteService(this.Organizacao, this.IsOffline).ListarLinhadeCorteRevenda(lstUnd, categ);
                    if (lstPorItem.Count > 0)
                    {
                        foreach (var linhaCorte in lstPorItem)
                        {
                            objLinhaCorteRevenda.Add(linhaCorte);
                        }
                    }
                }
            }
            else
            {
                //Não foi passsado categoria, apenas CAnal, e nao foi encontrada CategoriasCanal
                objLinhaCorteRevenda = new Intelbras.CRM2013.Domain.Servicos.LinhaCorteService(this.Organizacao, this.IsOffline).ListarLinhadeCorteRevenda(lstUnd, null);
            }


            foreach (var item in objLinhaCorteRevenda)
            {
                if (!response.Exists(x => x.CodigoLinhaCorte == item.ID.Value.ToString()))
                {
                    response.Add(this.DefinirPropriedades(item));
                }
            }

            if (!resultadoConsulta.Sucesso)
            {
                retorno.Add("Resultado", resultadoConsulta);
                return(CriarMensagemRetorno <Pollux.MSG0079R1>(numeroMensagem, retorno));
            }

            resultadoConsulta.Sucesso = true;
            if (response != null && response.Count > 0)
            {
                resultadoConsulta.Mensagem = "Integração ocorrida com sucesso.";
                retorno.Add("LinhasCorteItens", response);
            }
            else
            {
                resultadoConsulta.Mensagem = "Linha de Corte Revenda não encontrado no Crm.";
            }
            retorno.Add("Resultado", resultadoConsulta);


            return(CriarMensagemRetorno <Pollux.MSG0079R1>(numeroMensagem, retorno));
        }
Пример #7
0
        public EstruturaAtendimento DefinirPropriedades(Intelbras.Message.Helper.MSG0062 xml)
        {
            var crm = new EstruturaAtendimento(this.Organizacao, this.IsOffline);

            #region Propriedades Crm->Xml

            if (!String.IsNullOrEmpty(xml.CodigoEstruturaMinima))
            {
                crm.ID = new Guid(xml.CodigoEstruturaMinima);
            }

            if (!String.IsNullOrEmpty(xml.Nome))
            {
                crm.Nome = xml.Nome;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Nome não enviado.";
                return(crm);
            }

            crm.TipoEstruturaAtendimento = xml.Tipo;

            crm.PossueEstrutura = xml.PossuiEstruturaMinima;

            if (!String.IsNullOrEmpty(xml.Conta))
            {
                crm.Canal = new Lookup(new Guid(xml.Conta), "");
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Canal não enviado.";
                return(crm);
            }

            if (!String.IsNullOrEmpty(xml.UnidadeNegocio))
            {
                Model.UnidadeNegocio unidadeNegocio = new UnidadeNegocio(this.Organizacao, this.IsOffline);
                unidadeNegocio = new Intelbras.CRM2013.Domain.Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(xml.UnidadeNegocio);
                if (unidadeNegocio != null)
                {
                    crm.UnidadeNegocios = new Lookup(unidadeNegocio.ID.Value, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Unidade de Negocio não encontrada!";
                    return(crm);
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Unidade de Negocio não enviado.";
                return(crm);
            }

            crm.State             = xml.Situacao;
            crm.IntegradoEm       = DateTime.Now;
            crm.IntegradoPor      = usuarioIntegracao.NomeCompleto;
            crm.UsuarioIntegracao = xml.LoginUsuario;



            #endregion

            return(crm);
        }
Пример #8
0
        private void DefinirPropriedadesProdutoFatura(Intelbras.Message.Helper.MSG0094 xml, Guid FaturaID)
        {
            ProdutoFatura crmProdFatura = null;

            foreach (Pollux.Entities.NotaFiscalItem item in xml.NotaFiscalItens)
            {
                crmProdFatura = new ProdutoFatura(this.Organizacao, this.IsOffline);

                crmProdFatura.ChaveIntegracao = item.ChaveIntegracao;
                crmProdFatura.Fatura          = new Lookup(FaturaID, "");

                if (!String.IsNullOrEmpty(item.CodigoProduto))
                {
                    Model.Product ObjProduto = new Product(this.Organizacao, this.IsOffline);
                    ObjProduto = new Intelbras.CRM2013.Domain.Servicos.ProdutoService(this.Organizacao, this.IsOffline).BuscaPorCodigo(item.CodigoProduto);

                    if (ObjProduto != null && ObjProduto.ID.HasValue)
                    {
                        crmProdFatura.ProdutoId = new Lookup(ObjProduto.ID.Value, "");
                    }
                    else
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "Identificador do Produto não encontrado.";
                        return;
                    }
                }

                if (!String.IsNullOrEmpty(item.Descricao))
                {
                    crmProdFatura.Descricao = item.Descricao;
                }
                else
                {
                    crmProdFatura.AddNullProperty("Descricao");
                }

                crmProdFatura.PrecoOriginal           = item.PrecoOriginal;
                crmProdFatura.ValorLiquido            = item.PrecoUnitario;
                crmProdFatura.PrecoLiquido            = item.PrecoLiquido;
                crmProdFatura.ValorMercadoriaTabela   = item.ValorMercadoriaTabela;
                crmProdFatura.ValorMercadoriaOriginal = item.ValorMercadoriaOriginal;
                crmProdFatura.ValorMercadoriaLiquida  = item.ValorMercadoriaLiquido;
                crmProdFatura.Precificacao            = item.PermiteSubstituirPreco;

                //Service Natureza Operação
                NaturezaOperacao ObjNaturezaOperacao = new Intelbras.CRM2013.Domain.Servicos.NaturezaOperacaoService(this.Organizacao, this.IsOffline).BuscaNaturezaOperacaoPorCodigo(item.CodigoNaturezaOperacao);

                if (ObjNaturezaOperacao != null)
                {
                    crmProdFatura.NaturezaOperacao = new Lookup((Guid)ObjNaturezaOperacao.ID, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Identificador da Natureza de Operação não encontrado.";
                    return;
                }

                crmProdFatura.SelecionarProduto = item.ProdutoForaCatalogo;

                if (!String.IsNullOrEmpty(item.DescricaoProdutoForaCatalogo))
                {
                    crmProdFatura.DescricaoProdutoSemCatalogo = item.DescricaoProdutoForaCatalogo;
                }
                else
                {
                    crmProdFatura.AddNullProperty("DescricaoProdutoSemCatalogo");
                }

                crmProdFatura.Precificacao = item.PermiteSubstituirPreco;

                //Service Unidade Medida
                Unidade ObjUnidadeMedida = new Intelbras.CRM2013.Domain.Servicos.UnidadeService(this.Organizacao, this.IsOffline).BuscaUnidadePorNome(item.UnidadeMedida);

                if (ObjUnidadeMedida != null)
                {
                    crmProdFatura.Unidade = new Lookup((Guid)ObjUnidadeMedida.ID, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Identificador da Unidade de Medida não encontrado.";
                    return;
                }

                if (item.ValorBaseICMS.HasValue)
                {
                    crmProdFatura.ValorBaseICMS = item.ValorBaseICMS;
                }
                else
                {
                    crmProdFatura.AddNullProperty("ValorBaseICMS");
                }

                if (item.ValorBaseICMSSubstituicao.HasValue)
                {
                    crmProdFatura.ValorSubstTributaria = item.ValorBaseICMSSubstituicao;
                }
                else
                {
                    crmProdFatura.AddNullProperty("ValorSubstTributaria");
                }

                if (item.ValorICMS.HasValue)
                {
                    crmProdFatura.ValorICMSItem = item.ValorICMS;
                }
                else
                {
                    crmProdFatura.AddNullProperty("ValorICMSItem");
                }

                if (item.ValorICMSSubstituicao.HasValue)
                {
                    crmProdFatura.ValorICMSSubstTributaria = item.ValorICMSSubstituicao;
                }
                else
                {
                    crmProdFatura.AddNullProperty("ValorICMSSubstTributaria");
                }

                if (item.ValorICMSNaoTributado.HasValue)
                {
                    crmProdFatura.ValorICMSNaoTributado = item.ValorICMSNaoTributado;
                }
                else
                {
                    crmProdFatura.AddNullProperty("ValorICMSNaoTributado");
                }

                if (item.ValorICMSOutras.HasValue)
                {
                    crmProdFatura.ValorICMSOutras = item.ValorICMSOutras;
                }
                else
                {
                    crmProdFatura.AddNullProperty("ValorICMSOutras");
                }

                crmProdFatura.CodigoTributarioICMS = item.CodigoTributarioICMS;

                if (!String.IsNullOrEmpty(item.CodigoTributarioISS))
                {
                    crmProdFatura.CodigoTributarioISS = item.CodigoTributarioISS;
                }
                else
                {
                    crmProdFatura.AddNullProperty("CodigoTributarioISS");
                }

                crmProdFatura.CodigoTributarioIPI = item.CodigoTributarioIPI;

                if (item.ValorBaseIPI.HasValue)
                {
                    crmProdFatura.ValorBaseIPI = item.ValorBaseIPI;
                }
                else
                {
                    crmProdFatura.AddNullProperty("ValorBaseIPI");
                }

                if (item.AliquotaISS.HasValue)
                {
                    crmProdFatura.AliquotaISS = (double)item.AliquotaISS;
                }
                else
                {
                    crmProdFatura.AddNullProperty("AliquotaISS");
                }

                crmProdFatura.CodigoTributarioIPI  = item.CodigoTributarioIPI;
                crmProdFatura.ValorBaseISS         = item.ValorBaseISS;
                crmProdFatura.AliquotaIPI          = (double)item.AliquotaIPI;
                crmProdFatura.AliquotaICMS         = (double)item.AliquotaICMS;
                crmProdFatura.ValorISSItem         = item.ValorISS;
                crmProdFatura.ValorISSNaoTributado = item.ValorISSNaoTributado;
                crmProdFatura.ValorISSOutras       = item.ValorISSOutras;

                crmProdFatura.CalcularRebate = item.CalcularRebate;

                if (item.ValorIPI.HasValue)
                {
                    crmProdFatura.ValorIPIItem = item.ValorIPI;
                }
                else
                {
                    crmProdFatura.AddNullProperty("ValorIPIItem");
                }

                if (item.ValorIPINaoTributado.HasValue)
                {
                    crmProdFatura.ValorIPINaoTributado = item.ValorIPINaoTributado;
                }
                else
                {
                    crmProdFatura.AddNullProperty("ValorIPINaoTributado");
                }

                if (item.ValorIPIOutras.HasValue)
                {
                    crmProdFatura.ValorIPIOutras = item.ValorIPIOutras;
                }
                else
                {
                    crmProdFatura.AddNullProperty("ValorIPIOutras");
                }

                if (item.PrecoConsumidor.HasValue)
                {
                    crmProdFatura.PrecoConsumidor = item.PrecoConsumidor;
                }
                else
                {
                    crmProdFatura.AddNullProperty("PrecoConsumidor");
                }

                if (item.QuantidadeCancelada.HasValue)
                {
                    crmProdFatura.QtdeCancelada = item.QuantidadeCancelada;
                }
                else
                {
                    crmProdFatura.AddNullProperty("QtdeCancelada");
                }

                if (item.QuantidadePendente.HasValue)
                {
                    crmProdFatura.QtdePedidoPendente = item.QuantidadePendente;
                }
                else
                {
                    crmProdFatura.AddNullProperty("QtdePedidoPendente");
                }

                if (item.DataEntrega.HasValue)
                {
                    crmProdFatura.Entregueem = item.DataEntrega;
                }
                else
                {
                    crmProdFatura.AddNullProperty("Entregueem");
                }

                if (item.CondicaoFrete.HasValue)
                {
                    crmProdFatura.CondicoesFrete = item.CondicaoFrete;
                }
                else
                {
                    crmProdFatura.AddNullProperty("CondicoesFrete");
                }

                if (item.CalcularRebate.HasValue)
                {
                    //TODO: Registrar valor de CalcularRebate no Item da nota
                }

                if (item.ValorOriginal.HasValue)
                {
                    crmProdFatura.ValorOriginal = item.ValorOriginal;
                }
                else
                {
                    crmProdFatura.AddNullProperty("ValorOriginal");
                }

                crmProdFatura.TotalImpostos  = item.ValorTotalImposto;
                crmProdFatura.DescontoManual = item.ValorDescontoManual;
                crmProdFatura.Quantidade     = item.Quantidade;
                crmProdFatura.Remessa        = item.RetiraNoLocal;

                if (item.QuantidadeEntregue.HasValue)
                {
                    crmProdFatura.QtdeEntregue = item.QuantidadeEntregue;
                }
                else
                {
                    crmProdFatura.AddNullProperty("QtdeEntregue");
                }

                if (item.NumeroSequencia.HasValue)
                {
                    crmProdFatura.NumeroSequencia = item.NumeroSequencia;
                }
                else
                {
                    crmProdFatura.AddNullProperty("NumeroSequencia");
                }

                //Service Unidade Negócio
                UnidadeNegocio ObjUnidadeNegocio = new Intelbras.CRM2013.Domain.Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(item.CodigoUnidadeNegocio);

                if (ObjUnidadeNegocio != null)
                {
                    crmProdFatura.UnidadeNegocio = new Lookup((Guid)ObjUnidadeNegocio.ID, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Identificador da Unidade de Negócio não encontrado.";
                    return;
                }

                #region Representante

                crmProdFatura.IntegradoRepresentanteComErro = false;
                crmProdFatura.RepresentanteOriginal         = item.CodigoRepresentante.ToString();

                Contato ObjRepresentante = new Intelbras.CRM2013.Domain.Servicos.ContatoService(this.Organizacao, this.IsOffline)
                                           .BuscaContatoPorCodigoRepresentante(item.CodigoRepresentante.ToString());

                if (ObjRepresentante != null)
                {
                    crmProdFatura.Representante = new Lookup(ObjRepresentante.ID.Value, "");
                }
                else
                {
                    crmProdFatura.IntegradoRepresentanteComErro = true;
                    crmProdFatura.Representante = new Lookup(ObterRepresentatePadrao(), string.Empty);
                }

                #endregion

                //Service Moeda
                Moeda ObjMoeda = new Intelbras.CRM2013.Domain.Servicos.MoedaService(this.Organizacao, this.IsOffline).BuscaMoedaPorCodigo(xml.Moeda);

                if (ObjMoeda != null)
                {
                    crmProdFatura.Moeda = new Lookup((Guid)ObjMoeda.ID, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Identificador da Moeda não encontrado.";
                    return;
                }

                crmProdFatura.RazaoStatus = 1;

                string acaoItemFatura = item.Acao;

                if (!string.IsNullOrEmpty(item.EnderecoEntrega.NomeEndereco))
                {
                    crmProdFatura.NomeEntrega = item.EnderecoEntrega.NomeEndereco;
                }
                else
                {
                    crmProdFatura.AddNullProperty("NomeEntrega");
                }

                crmProdFatura.CEPEntrega  = item.EnderecoEntrega.CEP;
                crmProdFatura.Rua1Entrega = item.EnderecoEntrega.Logradouro;

                if (!string.IsNullOrEmpty(item.EnderecoEntrega.Complemento))
                {
                    crmProdFatura.Rua2Entrega = item.EnderecoEntrega.Complemento;
                }
                else
                {
                    crmProdFatura.AddNullProperty("Rua2Entrega");
                }

                crmProdFatura.Rua3Entrega   = item.EnderecoEntrega.Bairro;
                crmProdFatura.CidadeEntrega = item.EnderecoEntrega.NomeCidade;

                if (!String.IsNullOrEmpty(item.EnderecoEntrega.Estado))
                {
                    crmProdFatura.EstadoEntrega = item.EnderecoEntrega.Estado;
                }

                if (!String.IsNullOrEmpty(item.EnderecoEntrega.Pais))
                {
                    crmProdFatura.PaisEntrega = item.EnderecoEntrega.Pais;
                }

                if (!String.IsNullOrEmpty(item.EnderecoEntrega.Telefone))
                {
                    crmProdFatura.TelefoneEntrega = item.EnderecoEntrega.Telefone;
                }
                else
                {
                    crmProdFatura.AddNullProperty("TelefoneEntrega");
                }

                if (!String.IsNullOrEmpty(item.EnderecoEntrega.Fax))
                {
                    crmProdFatura.FAXEntrega = item.EnderecoEntrega.Fax;
                }
                else
                {
                    crmProdFatura.AddNullProperty("FAXEntrega");
                }

                if (acaoItemFatura == "A" || acaoItemFatura == "I")
                {
                    lstProdutoFaturaUpdate.Add(crmProdFatura);
                }
                if (acaoItemFatura == "E")
                {
                    lstProdutoFaturaDelete.Add(crmProdFatura);
                }
            }
        }