Fala pessoal.
Sou novo no ramo de NFSe e até agora não desenvolvi nenhuma Nota Fiscal Eletronica em uma prefeitura que não esteja no Projeto ACBR.
Essa semana iniciei Londrina, e os usuários já estão criados, e tudo certo. estou recebendo sempre a mensagem:
Processo Geral - Usuário não emissor de nota eletrônica
Processo Geral - Falha na autenticação, verifique suas credenciais.
Esse código é o envio da nota através do XML, gostaria de saber se estou fazendo da maneira certa.
var
RPS : TElementoRPS;
ws: ModuloEmissorNFSePortType;
descricaoRps: tcDescricaoRps;
retornoNota: tcRetornoNota;
DescricaoErros: tcListaErrosAlertas;
I: Integer;
dia,mes,ano : word;
begin
try
RPS := TLeitorGenerico(TNFPSe(FNFPSeRef).Leitor).lote.listaRPS.item(indice);
descricaoRps := tcDescricaoRps.Create;
DescricaoErros := tcListaErrosAlertas.Create();
if TUtil.iif(IniOptions.Ambiente = 1, True, False) then
begin
ws := getModuloEmissorNFSePortType(True,
'http://testeiss.londrina.pr.gov.br/ws/v1_01/sigiss_ws.php?wsdl',
frmMenu.HTTPRIO1);
descricaoRps.ccm := 948314;
descricaoRps.cpf := '22853201830';
descricaoRps.senha := '**********';
end
else
begin
ws := getModuloEmissorNFSePortType(True,
'https://iss.londrina.pr.gov.br/ws/v1_01/sigiss_ws.php?wsdl',
frmMenu.HTTPRIO1);
descricaoRps.ccm := 948314;
descricaoRps.cpf := '10280162634';
descricaoRps.senha := ''**********';';
end;
descricaoRps.cnpj := Session.Filial.getCnpj;
if (RPS.Servico.Valores.IssRetido <> 0.00) then
descricaoRps.situacao := 'tt' // tributado no tomador
else
descricaoRps.situacao := 'tp'; // tributado no prestador
//cod_pais_prestacao_servico := '1082';
descricaoRps.servico := StrToInt(RPS.Fiscal.ItemListaServico);
descricaoRps.aliquota := RPS.Servico.Valores.Aliquota;
if StrToFloat(descricaoRps.aliquota)=0 then
descricaoRps.aliquota := '0,00'
else
descricaoRps.aliquota := descricaoRps.aliquota+',00';
descricaoRps.cod_municipio_prestacao_servico := IntToStr(ord(Session.Filial.getEndereco.CodigoMunicipio));
descricaoRps.cod_municipio_incidencia := RPS.Fiscal.CodIBGEMunicipioIncidencia;
// ****************************** Início Dados Tomador ******************************** //
// Verifica o tipo de tomador
if (RPS.Tomador.TipoPessoa = pesFisica) then
descricaoRps.tomador_tipo := 2 // 2- Pessoa Física
else if (descricaoRps.cod_municipio_prestacao_servico = descricaoRps.tomador_cod_cidade) then
descricaoRps.tomador_tipo := 3 // 3- Pessoa Jurídica do Município do Prestador
else if (descricaoRps.cod_municipio_prestacao_servico <> descricaoRps.tomador_cod_cidade) then
descricaoRps.tomador_tipo := 4 // 4- Pessoa Jurídica de Fora
else
raise Exception.Create('Tipo do Tomador inexistente!!!');
if (descricaoRps.tomador_tipo<>1) and (descricaoRps.tomador_tipo<>5) then
begin
descricaoRps.tomador_cnpj := RPS.Tomador.Documento;
descricaoRps.tomador_razao := RPS.Tomador.RazaoSocial;
descricaoRps.tomador_endereco := RPS.Tomador.Endereco.Logradouro;
descricaoRps.tomador_numero := RPS.Tomador.Endereco.Numero;
descricaoRps.tomador_CEP := RPS.Tomador.Endereco.CEP;
descricaoRps.tomador_cod_cidade := RPS.Tomador.Endereco.CodigoMunicipio;
descricaoRps.tomador_bairro := RPS.Tomador.Endereco.Bairro;
if (descricaoRps.tomador_tipo<>1) then
descricaoRps.tomador_complemento := '';
end;
descricaoRps.tomador_im := IntToStr(descricaoRps.ccm);
// ****************************** Fim Dados Tomador ************************************ //
// Verifica se o código de incidência do serviço é diferente do município do prestador.
if (descricaoRps.cod_municipio_incidencia <> descricaoRps.cod_municipio_prestacao_servico) then
begin
descricaoRps.situacao := 'nt';
descricaoRps.retencao_iss := FormataDinheiro(FloatToStr(RPS.Servico.Valores.Inss.AsCurrency));
end
else
//descricaoRps.retencao_iss := '0,00'; //NAO PREENCHER COM NENHUM VALOR
//Dados e Impostos RPS
descricaoRps.valor := FormataDinheiro(FloatToStr(RPS.Servico.Valores.Servico));
descricaoRps.base := FormataDinheiro(FloatToStr(RPS.Servico.Valores.BaseDeCalculo));
if RPS.Servico.Valores.Ir.AsFloat>0 then
descricaoRps.ir := FormataDinheiro(FloatToStr(RPS.Servico.Valores.Ir.AsFloat));
if RPS.Servico.Valores.Pis.AsFloat>0 then
descricaoRps.pis := FormataDinheiro(FloatToStr(RPS.Servico.Valores.Pis.AsFloat));
if RPS.Servico.Valores.Cofins.AsFloat>0 then
descricaoRps.cofins := FormataDinheiro(FloatToStr(RPS.Servico.Valores.Cofins.AsFloat));
if RPS.Servico.Valores.Csll.AsFloat>0 then
descricaoRps.csll := FormataDinheiro(FloatToStr(RPS.Servico.Valores.Csll.AsFloat));
if RPS.Servico.Valores.Inss.AsFloat>0 then
descricaoRps.inss := FormataDinheiro(FloatToStr(RPS.Servico.Valores.Inss.AsFloat));
descricaoRps.descricaoNF := RPS.Servico.Discriminacao;
descricaoRps.rps_num := StrToInt(RPS.Numero);
descricaoRps.rps_serie := RPS.Serie;
DecodeDate(now,ano,mes,dia);
descricaoRps.rps_dia := dia;
descricaoRps.rps_mes := mes;
descricaoRps.rps_ano := ano;
retornoNota := tcRetornoNota.Create;
ws.GerarNota(descricaoRps, retornoNota, DescricaoErros);
if retornoNota.Resultado=1 then
begin
with retornoNota do
begin
TfrmNFSeEnvio(Pai).dolog('Auth: '+autenticidade,tmSucesso);
TfrmNFSeEnvio(Pai).doLog('Nota: '+IntToStr(Nota),tmSucesso);
TfrmNFSeEnvio(Pai).dolog('Link para visualização: '+LinkImpressao,tmSucesso);
end;
end
else
begin
for I:= 0 to Length(DescricaoErros)-1 do
with DescricaoErros[I] do
begin
TfrmNFSeEnvio(Pai).dolog(ID+'-'+DescricaoProcesso+' - '+DescricaoErro,tmVermelho);
end;
end;
{ if ((Length(DescricaoErros) > 0) and (retornoNota.Nota = 0)) then
begin
for I := 0 to Length(DescricaoErros) - 1 do
begin
with DescricaoErros[I] do
begin
frmNFSeEnvio.doLog(IntToStr(id) + ' - ' + DescricaoProcesso + ': ' + DescricaoErro, tmErro);
end;
end;
end
else
begin
frmNFSeEnvio.doLog(retornoNota.Resultado, tmSucesso);
frmNFSeEnvio.doLog(retornoNota.Nota, tmSucesso);
frmNFSeEnvio.doLog(retornoNota.autenticidade, tmSucesso);
frmNFSeEnvio.doLog(retornoNota.LinkImpressao, tmSucesso);
end; }
except
on e: Exception do
raise Exception.Create('Erro ao enviar da nota fiscal.' + sLineBreak + e.Message);
end;
end;
Alguém pode me auxiliar no codigo acima?? agradeço.