예제 #1
0
        public void TesteCrmWebServiceProdutoSolicitacao()
        {
            string organizationName = ConfigurationManager.GetSettingValue("OrganizacaoIntelbras");

            Domain.Model.SolicitacaoBeneficio solBeneficio = new Domain.Model.SolicitacaoBeneficio(organizationName, false);
            JavaScriptSerializer        jsonConverter      = new JavaScriptSerializer();
            Dictionary <string, object> dictResposta       = new Dictionary <string, object>();

            try
            {
                string produtoID              = "08bc0401-bef0-e311-9420-00155d013d39";
                string notaFiscalID           = "2D109EDA-AC18-E411-9233-00155D013E44";
                string solicitacaoBeneficioID = "F9A8E1BB-A418-E411-9233-00155D013E44";

                Domain.Model.ProdutoFatura prodFatura = new Domain.Model.ProdutoFatura(organizationName, false);
                Guid produtoGuid              = Guid.Parse(produtoID);
                Guid notaFiscalGuid           = Guid.Parse(notaFiscalID);
                Guid solicitacaoBeneficioGuid = Guid.Parse(solicitacaoBeneficioID);

                solBeneficio = new Intelbras.CRM2013.Domain.Servicos.SolicitacaoBeneficioService(organizationName, false).ObterPor(solicitacaoBeneficioGuid);

                if (solBeneficio == null)
                {
                    throw new ArgumentException("Não foi possível encontrar a solicitação de benefício");
                }

                if (solBeneficio.BeneficioPrograma.Name != "Stock Rotation")
                {
                    dictResposta.Add("Resultado", false);
                    dictResposta.Add("Mensagem", "Benefício do programa não é Stock Rotation");
                    dictResposta.Add("Ignorar", true);
                }
                else
                {
                    prodFatura = new Intelbras.CRM2013.Domain.Servicos.ProdutoFaturaService(organizationName, false).ObterPorProdutoEfatura(produtoGuid, notaFiscalGuid);

                    if (prodFatura == null)
                    {
                        throw new ArgumentException("Produto não encontrado na Nota Fiscal");
                    }

                    if (!prodFatura.ValorTotal.HasValue)
                    {
                        throw new ArgumentException("Produto sem valor total");
                    }

                    dictResposta.Add("Resultado", true);
                    dictResposta.Add("ValorTotal", prodFatura.ValorTotal.Value.ToString());
                }
            }
            catch (FormatException)
            {
                dictResposta = new Dictionary <string, object>();
                dictResposta.Add("Resultado", false);
                dictResposta.Add("Mensagem", "Guid em formato incorreto!Esperado : (xxxxxxxx-xxxx-xxxxx-xxxx-xxxxxxxxxxxx)");
            }
            catch (Exception e)
            {
                dictResposta = new Dictionary <string, object>();
                dictResposta.Add("Resultado", false);
                dictResposta.Add("Mensagem", e.Message);
            }

            var json = jsonConverter.Serialize(dictResposta);
        }
예제 #2
0
파일: MSG0094.cs 프로젝트: ertprs/crm_fonte
        public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        {
            usuarioIntegracao = usuario;
            Pollux.MSG0094 polluxMsg0094 = this.CarregarMensagem <Pollux.MSG0094>(mensagem);

            if (!string.IsNullOrWhiteSpace(polluxMsg0094.ChaveIntegracao))
            {
                var statusFatura = new Intelbras.CRM2013.Domain.Servicos.RepositoryService(this.Organizacao, this.IsOffline)
                                   .Fatura.ObterPorChaveIntegracao(polluxMsg0094.ChaveIntegracao, "statecode");

                if (statusFatura != null)
                {
                    if (statusFatura.Status.Value == (int)Enum.Fatura.Status.Cancelada)
                    {
                        resultadoPersistencia.Sucesso  = true;
                        resultadoPersistencia.Mensagem = "Fatura foi ignorado para atualização, o status no CRM é Cancelada e não é feito mais modificações!";
                        retorno.Add("Resultado", resultadoPersistencia);
                        return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno));
                    }
                }
            }

            Fatura ObjFatura = this.DefinirPropriedades(polluxMsg0094);

            this.DefinirPropriedadesProdutoFatura(polluxMsg0094, Guid.Empty);

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

            //Para poder atualizar state posteriormente
            int? stateUpdate       = ObjFatura.Status;
            int? razaoStatusUpdate = ObjFatura.RazaoStatus;
            bool alteraStatus      = false;

            int countErrosIntegracaoItem = lstProdutoFaturaUpdate.Where(x => x.IntegradoRepresentanteComErro.Value).Count();

            if (countErrosIntegracaoItem > 0)
            {
                ObjFatura.IntegradoComErros = true;
            }

            //Persistir Fatura para obter o id que sera utilizado no ProdutoFatura
            ObjFatura = new Intelbras.CRM2013.Domain.Servicos.FaturaService(this.Organizacao, this.IsOffline).Persistir(ObjFatura, ref alteraStatus);
            if (ObjFatura == null)
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Erro ao persistir Fatura!";

                retorno.Add("Resultado", resultadoPersistencia);

                return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno));
            }
            else

            if (lstProdutoFaturaUpdate == null && lstProdutoFaturaDelete == null)
            {
                this.DefinirPropriedadesProdutoFatura(polluxMsg0094, ObjFatura.ID.Value);
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno));
            }

            if (!resultadoPersistencia.Sucesso)
            //if (lstProdutoFaturaUpdate.Any())
            {
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno));
            }

            // foreach (ProdutoFatura item in lstProdutoFaturaUpdate)
            //  {
            //bool mudarprop = false;
            //item.Fatura = new Lookup(ObjFatura.ID.Value, "");

            //if (lstProdutoFaturaUpdate == null && lstProdutoFaturaDelete == null)
            //    ProdutoFatura ObjProdutoFatura = new Intelbras.CRM2013.Domain.Servicos.ProdutoFaturaService(this.Organizacao, this.IsOffline).Atualizar(item, ref mudarprop);

            //if (ObjProdutoFatura == null)
            //{
            //retorno.Add("Resultado", resultadoPersistencia);
            //return CriarMensagemRetorno<Pollux.MSG0094R1>(numeroMensagem, retorno);
            //    resultadoPersistencia.Sucesso = false;
            //    resultadoPersistencia.Mensagem = "Erro de persistência no item da fatura.";
            //    retorno.Add("Resultado", resultadoPersistencia);
            //    return CriarMensagemRetorno<Pollux.MSG0094R1>(numeroMensagem, retorno);
            //}

            if (lstProdutoFaturaUpdate.Any())
            {
                foreach (ProdutoFatura item in lstProdutoFaturaUpdate)
                {
                    bool mudarprop = false;
                    item.Fatura = new Lookup(ObjFatura.ID.Value, "");

                    ProdutoFatura ObjProdutoFatura = new Intelbras.CRM2013.Domain.Servicos.ProdutoFaturaService(this.Organizacao, this.IsOffline).Atualizar(item, ref mudarprop);

                    if (ObjProdutoFatura == null)
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "Erro de persistência no item da fatura.";
                        retorno.Add("Resultado", resultadoPersistencia);
                        return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno));
                    }
                }
            }
            if (lstProdutoFaturaDelete.Any())
            {
                foreach (ProdutoFatura item in lstProdutoFaturaUpdate)
                {
                    new Intelbras.CRM2013.Domain.Servicos.ProdutoFaturaService(this.Organizacao, this.IsOffline).Deletar(item);
                }
            }
            //}
            //Alterar Status da Fatura após todo processo
            if (alteraStatus)
            {
                if (ObjFatura.ID.HasValue && stateUpdate.HasValue && razaoStatusUpdate.HasValue)
                {
                    new Intelbras.CRM2013.Domain.Servicos.FaturaService(this.Organizacao, this.IsOffline).MudarStatus(ObjFatura.ID.Value, stateUpdate.Value, razaoStatusUpdate.Value);
                }
            }

            resultadoPersistencia.Sucesso  = true;
            resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso";
            retorno.Add("Resultado", resultadoPersistencia);
            return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno));
        }