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); }
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)); }