terça-feira, 10 de maio de 2011

Compatibilidade

Caros colegas desenvolvedores... Primeiramente, gostaria de me desculpar se ainda não respondi seu e-mail/dúvida. Me dedico a essa tarefa, apenas nas minhas horas vagas e isso está cada dia mais escasso. Para agilizar, uma informação para os leitores:

Esse blog tem como intuito, ajudar no desenvolvimento de aplicações que visam consumir o Web Service do Modelo Nacional versão 1.0 da prefeitura municipal do Rio de Janeiro... Portanto não saberei responder coisas referentes a outras prefeituras ou outros modelos...

Sei que alguns outros municípios implementam esse modelo e são compatíveis:
- Angra dos Reis (RJ);
- Americana (SP);
- Barra Mansa (RJ);
- Duque de Caxias (RJ);
- Itaguaí (RJ);
- Macaé (RJ);
- Mangaratiba (RJ);
- Recife (PE);
- Resende (RJ);
- Rio das Ostras(RJ).

Mesmo compatíveis, não quer dizer que os exemplos presentes aqui vão funcionar 100% com esses outros municípios.

Boa sorte a todos...

sexta-feira, 1 de abril de 2011

Contato

Caros,

Estou sem muito tempo de acompanhar o blog. Para um contato "mais rápido", mandem um e-mail para: desenvolvimentocarioca@gmail.com

Abraços

Apoena...

PS.: Andei ajudando alguns desenvolvedores Delphi a consumir o serviço WS, pois estavam tomando o erro "E972 Mensagem XML de Pedido do serviço sem conteúdo"... E todos param de entrar em contato comigo após comentar algo sobre registrar um novo documento base (ou nova versão base) do XML no Delphi... Não sei o que isso quer dizer. Por Favor, me informem como estão resolvendo esse problema, para que eu possa divulgar aqui.

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