terça-feira, 19 de outubro de 2010

Problema de acesso

Caros,

Como já foram mais de 10 pessoas me perguntando sobre problema de acesso, resolvi fazer duas observações mais comuns:

1º) Caso... VS 2005 com .Net Framework 2.0.

A classe que o VS cria ao referenciar o WS fica BEEEEM diferente da do exemplo... Nesse ambiente não conseguia fazer o ADD do certificado de comunicação no ClientCertifocates, como sugiro no exemplo e passei a receber erros 403 (conforme relatado por alguns)...
Consegui contornar esse problema, na classe gerada pelo VS que implementa uma interface "SoapHttpClientProtocol" com a referencia ao próprio WS. No construtor da classe, alterei uma propriedade privada "useDefaultCredentialsSetExplicitly" para “True” e uma propriedade pública "UseDefaultCredentials" para "FALSE" , pois credencial padrão continha as minhas credenciais de rede (???) e parece que isso que causava o erro, depois disso, tudo funcionou bem. Isso está meio marretado, sugiro pesquisar mais sobre esse problema e se alguém tiver uma solução melhor, faça um comentário, por favor, pois não vou me aprofundar muito nisso...

2º) Ambientes mais recentes (VS 2008/2010 com .Net Framework 3.5 e 4.0)

O projeto de exemplo está funcionando perfeitamente, tentem observar todos os aspectos de configuração da aplicação, não só as classes que consomem os serviços. Repare nos atributos presentes no "app.config" em especial para problemas de acesso, não esquecer de definir o "clientCredentialType" como "Certificate".

terça-feira, 10 de agosto de 2010

Quebra de linha

Uma informação que parece não estar clara para todos, é a forma de se fazer quebras de linha no arquivo XML. Muitas pessoas tem se confundido com o que existe no manual de importação de lote de RPS por arquivos TXT. Tenham em mente que o lote no formato TXT é uma especificação feita pela própria prefeitura, portanto quem define suas regras é ela mesma, quando que o lote via webservice (e arquivo XML), quem define é a ABRASF, portanto a prefeitura TEM que seguir as regras definidas por ela (Modelo Nacional). Como dizia minha avó: "Uma coisa é uma coisa e outra coisa é outra coisa".

Então na hora de fazer alguma coisa nos lotes com arquivos XML, não procurem informações no manual do lote TXT, vocês só vão se confundir.

Respondendo à pergunta, a forma de se fazer a quebra de linha no arquivo XML é incluindo-se os caracteres de término de linha e o caractere de retonno de carga.

Exemplo:
...
Dim discriminacao as String
discriminacao = "Dados de Serviço:" & chr(13) & chr(10)
discriminacao = discriminacao & "Esse serviço possui quebra de linha"
...

Desta forma ao se imprimir a NFS-e o campo discriminação irá possuir duas linhas.

quarta-feira, 28 de julho de 2010

Novo Serviço - Conversão de RPS (único e síncrono)

Já está disponível o novo serviço no Web Service da Nota Carioca, de conversão de RPS único e com resposta imediata. Esse serviço foi criado para facilitar o desenvolvimento das aplicações, que eram obrigados a criar um lote único de identificação para seu contribuinte e esses não podiam ser repetidos ou de empresas que optaram por não armazenar os RPS gerados, emitindo-os em lotes com apenas um RPS, para cada serviço prestado.

O novo serviço é simples e respeita o layout da ABRASF, utilizando os tipos que já existiam. Ele já é descrito no WCL de homologação e está também disponível para download no arquivo zip com os schemas no site da prefeitura.

Para acelerar, criei um XML de utilização desse serviço em branco.

Para ajudar, atualizei o projeto de exemplo que agora possui um botão que consome esse novo serviço: Exemplo 28-07-2010

terça-feira, 27 de julho de 2010

Informações de Cancelamento

Caros desenvolvedores,

Um erro MUITO recorrente na hora de enviar os dados para o serviço e cancelamento, é informar o número da NFSe a ser cancelada e as informações do TOMADOR na tag "IdentificacaoNfse". Isso está errado. Os dados de identificação devem ser preenchidos com os dados do PRESTADOR do Serviço. Veja o Exemplo: PedidoCancelamentoEnvio

quinta-feira, 1 de julho de 2010

Dica 1:

Alguns sistemas criam tag a tag do XML, em vez de utilizar um objeto de documento XML, como existem no .Net e na hora de assinar, estão tendo problemas. Fica aí a dica de se você estiver tendo esse problema, incluir o xml namespace na tag de informação de assinatura, isso influencia na hora de criar o hash.

"< SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#" >"

Dica 2:

Algumas pessoas estão reclamando de um erro de tamanho excedente ao se consultar um lote ou uma lista de notas. Atenção, pois por default no VS 8 Framework 3.5, o maxReceivedMessageSize está setado com "65536", isso é em byte, portanto 64 KB... Para receber arquivos maiores, altere esse numero para um valor mair, como 1 MB ou "1048576".

Continuando com os exemplos:

Muitas pessoas já possuem um sistema que está assinando o documento, mas não conseguem validar se os dados e a assinatura estão corretos. Resolvi incluir um método de exemplo para esse processo...

Exemplo 01-07-2010

quarta-feira, 23 de junho de 2010

Houve uma pequena mudança no WSDL (apenas lá), visando evitar confusões recorrentes com relação a utilização do Web Service. Quem já adicionou o Web Service, será necessário atualizar o webreferences em seus projetos. Quem está usando o projeto de exemplo, também precisa fazer a atualização ou baixar uma nova versão do exemplo.

Exemplo 23-06-2010

terça-feira, 15 de junho de 2010

Continuando com os exemplos:

Melhorei o método de envio (tirei os lixos de teste que tinha esquecido lá);
O botão de "Assinar Lote" agora funciona.

Exemplo 15-06-2010

sexta-feira, 11 de junho de 2010

Aqui está a primeira versão de exemplo da solução que consome o serviço de Recepção de Lote de RPS.

Exemplo 08-06-2010

Nela você vai encontrar algumas coisas visuais desabilitadas, pois ainda não tive tempo de fazer tudo que quero, mas já serve como exemplo atual e funcionando, utilizando o servidor de homologação da NOTA CARIOCA - NFS-e do Rio de Janeiro.
Resolvi começar esse blog, por sugestão de um amigo (SR), após inúmeras vezes conversarmos sobre os problemas que atualmente as empresas estão tendo ao se adequar ao Modelo Nacional de emissão de NFS-e da ABRASF.

Nas próximas postagens, vou colocar exemplos e um cliente BEM simples de como consumir o serviço de Recepção de Lotes de RPS.

Por hora, fica só a dica do "pulo do gato", na hora de configurar as referencias em seus projetos (atualmente a dúvida/problema mais comuns). Certifique-se que nas configurações do registro do serviço, as seguintes propriedades estejam setadas da seguinte forma:

messageEncoding="Text"
textEncoding="utf-8"

Se não estiverem, você irá ficar recebendo o erro: "String cannot be converted to ... RecepcionarLoteRpsRequest" ou um erro de falha de acesso ao serviço.

Meus exemplos estarão em VB.NET com Framework 3.5