Danilo MSI Soluções
Membros Pro-
Total de ítens
58 -
Registro em
-
Última visita
Sobre Danilo MSI Soluções

Últimos Visitantes
O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.
Danilo MSI Soluções's Achievements
-
Olá pessoa, bom dia! Sobre o problema do regime especial de tributação, tive um parecido (não igual relataram) com um cliente de Indaiatuba/SP. Só consegui transmitir quando não passei nenhuma informação. Não verifiquei se o ACBr colocou algum valor padrão, mas o erro era o seguinte: Erro(s): --------- Código : E0178 Mensagem: Regime especial de tributação não permitido para o prestador do serviço com código de tributação na data de competência, informados na DPS, conforme parametrização do município de incidência do ISSQN. Eu cheguei a cogitar para a filial que atende esse cliente procurar mais informações junto à prefeitura se de fato seria correto a remoção ou algum acerto de cadastro da empresa por lá. Não houve resposta, então optamos por remover. Dessa forma, passou a transmitir normalmente.
-
Olá @Etiane, boa tarde! Essa rejeição do DcTribMun parece ser já do WebService Nacional, então acredito que você conseguiu fazer a conexão de forma correta. Eu também não estava conseguindo, mas seguindo os seus passos passei a receber também rejeições do WebService como NBS não informado e grupo de obras não informado para o código de tributação nacional escolhido, então acho que deu bom aqui também. Vou ajustar todas as pendências e ver se consigo finalmente transmitir. Se conseguir, eu retorno aqui para avisar todos vocês. Muito obrigado por compartilhar as informações! Não teria conseguido sem elas.
-
Olá pessoal, boa tarde! Estou com um cliente de Duartina/SP que está exatamente com os mesmos problemas. Esse erro de "Erro de Conexão: StartTag: invalid element name" está acontecendo com o endereço antigo da prefeitura de lá também. Eles usam também o provedor Fiorilli. EndPoint antigo/atual: http://186.224.0.35:5661/IssWeb-ejb/IssWebWS/IssWebWS EndPoint novo (produção): http://186.224.0.35:5661/IssWeb-ejb/IssWebWSNacional/IssWebWSNacionalPortType EndPoint novo (homologação): Ainda não enviaram, mas, se for seguir a mesma lógica de Laranjal, seria http://fi1.fiorilli.com.br:5661/IssWeb-ejb/IssWebWSNacional/IssWebWSNacionalPortType
-
Controle da tag <ValorIss> no provedor DeISS (município Indaiatuba/SP) - 2
um tópico no fórum postou Danilo MSI Soluções ACBrNFSe
Olá pessoal, bom dia! Prosseguindo com a validação da implementação do componente ACBrNFSeX no cliente em Indaiatuba/SP, encontramos mais uma situação, conforme retorno do WebService: Com base nessa orientação, mudei a função "GerarXml" da Unit "DeISS.GravarXml" da seguinte forma: function TNFSeW_DeISS203.GerarXml: Boolean; begin { Padrão: if NFSe.Servico.Valores.IssRetido = stRetencao then NrOcorrValorIss := 1 else NrOcorrValorIss := -1;} // Novo: if (NFSe.Servico.Valores.IssRetido = stRetencao) or (NFSe.Prestador.Endereco.CodigoMunicipio <> NFSe.Tomador.Endereco.CodigoMunicipio) then NrOcorrValorIss := 1 else NrOcorrValorIss := -1; Result := inherited GerarXml; end; O cliente validou a alteração e retornou que está tudo certo, portanto segue a Unit em anexo para a apreciação dos senhores. Fico à disposição para esclarecimentos. Muito obrigado, desde já, pela atenção! DeISS.GravarXml.pas -
Olá novamente, @Italo Giurizzato Junior! A sua solução deu certo e, ao meu parecer, faz mais sentido que a nossa uma vez que o parâmetro se torna desnecessário a partir do momento que o WebService passa a exigir essa tag em algumas situações (quando retido). Já a nossa solução tem como objetivo justamente "burlar" o parâmetro. Então já descartamos a nossa e vamos usar a sua como oficial daqui em diante, tudo bem? Se me permitir, só faça um ajuste ali onde o NrOcorrValorIss recebe os valores. Está recebendo 1 nos dois casos (com e sem retenção). O correto, ao meu ver, seria 1 para retenção (gerar) e -1 para não retenção (não gerar). Mas já ajustei o meu aqui: function TNFSeW_DeISS203.GerarXml: Boolean; begin if NFSe.Servico.Valores.IssRetido = stRetencao then NrOcorrValorIss := 1 else NrOcorrValorIss := -1; Result := inherited GerarXml; end; No mais, pode encerrar. Muito obrigado pela ajuda!
-
Olá @Italo Giurizzato Junior, boa tarde! Farei os testes agora mesmo. Em paralelo, nós conseguimos alterar o parâmetro em tempo de execução através da nossa Unit, sendo necessário apenas a limpeza da TStringList "fSL" do ACBr (TACBrNFSeXConfigParams) que armazena os parâmetros. Isso porque ela somente os adiciona, então quando eu tento substituir o valor, o valor original acaba ficando deixando o parâmetro sempre ativo. Talvez seja intencional, mas segue abaixo para caso achem interessante essa saída também: // Nossa Unit. Entra aqui somente quando for caso de retenção: // Controle do parâmetro "NaoGerarTag:ValorIss" para o provedor "proDeISS": // Quando tem retenção, precisa da tag <ValorIss>. Portanto, precisa remover o parâmetro para passar a gerá-la (caso tenha): // OBS: O controle não precisa ser desfeito caso não tenha retenção pois na próxima nota acontece nova leitura do .ini, recriando o parâmetro. if ACBrNFSe.Configuracoes.Geral.Provedor = proDeISS then if ACBrNFSe.Provider.ConfigGeral.Params.ParamTemValor('NaoGerarTag', 'ValorIss') then begin vParametroAlterado := ACBrNFSe.Provider.ConfigGeral.Params.AsString; if Pos(vParametroAlterado, 'NaoGerarTag:ValorIss') > 0 then begin vParametroAlterado := ReplaceText(vParametroAlterado, 'NaoGerarTag:ValorIss', ''); ACBrNFSe.Provider.ConfigGeral.Params.AsString := vParametroAlterado; end; end; Aqui o ajuste que foi necessário no ACBr para funcionar: procedure TACBrNFSeXConfigParams.SetAsString(const AValue: String); var s: String; begin if FAsString = AValue then Exit; FAsString := Trim(AValue); s := StringReplace(FAsString, ':', '=', [rfReplaceAll]); fSL.clear(); // * Linha adicionada AddDelimitedTextToList(s, '|', fSL, #0); end; Vou desfazer os ajustes e implementar a sua solução e já lhe dou um retorno sobre o resultado. Muito obrigado pela atenção!
-
Controle da tag <ValorIss> no provedor DeISS (município Indaiatuba/SP)
um tópico no fórum postou Danilo MSI Soluções ACBrNFSe
Olá pessoal, boa tarde! Estamos implementando o novo componente ACBrNFSeX para um cliente na cidade de Indaiatuba/SP (provedor DeISS). Porém, estamos enfrentando um problema quando ao controle da tag <ValorIss>: Se a NFSe é emitida a um cliente que retém ISS, acontece o seguinte erro na transmissão: --------- Código : X999 Mensagem: Erro de Conexão: soap:Server - javax.xml.ws.WebServiceException: Verifique sua mensagem SOAP e a passagem desses parâmetros necessários. Não conseguiu obter a mensagem XML do cabeçalho ou dos dados. Verifique a passagem desses parâmetros pela mensagem SOAP. --------- Segundo suporte do WebService, foi nos dito que, nesses casos, é necessário passar o valor do ISS através da tag <ValorIss>. Por padrão, essa tag não é gerada para esse provedor pois, no arquivo "ACBrNFSeXServicos.ini", tem o seguinte parâmetro ativo: Params=NaoGerarTag:ValorIss Ao removermos manualmente esse parâmetro, a NFSe para cliente que retém ISS passa a ser transmitida com sucesso. Porém, se emitirmos daí para um cliente que não retém ISS, caímos no seguinte erro: -------- Código : E220 Mensagem: Valor do ISSQN informado indevidamente. Correção: O valor do ISSQN será calculado pela Prefeitura e não deve ser informado pelo contribuinte. --------- Em resumo, temos: - Se o cliente Retém ISS, tem que ter valor de ISS (parâmetro "Params=NaoGerarTag:ValorIss" desativado). Senão, erro X999 - Se o cliente não Retém ISS, não pode haver valor de ISS (parâmetro "Params=NaoGerarTag:ValorIss" ativado). Senão, erro E220 (e também o E221 caso seja informada alguma alíquota) @Juliomar Marchetti, através do Discord, nos orientou a procurarmos por alguma opção que controlasse a impressão ou não da referida TAG, mas nós não encontramos. Também nos orientou a não passar a TAG e assim já tínhamos feito, mas também sem sucesso. A TAG aparece com o valor padrão 0. Acredito que o preenchimento, inclusive, se dê nesse trecho (Unit "ACBrNFSeXLerXml_ABRASFv2", procedure "TNFSeR_ABRASFv2.LerServicos", linha 938): if Valores.IssRetido = stRetencao then begin Valores.ValorIssRetido := Valores.ValorIss; Valores.ValorIss := 0; end else Valores.ValorIssRetido := 0; Notem que sempre que for caso de retenção, o valor 0 é atribuído ao "ValorIss", o que impede a emissão para cliente que não retém ISS neste provedor (mesmo removendo o parâmetro do .ini). Então, até o presente momento, estamos sem saber como tratar a referida situação. Muito obrigado, em antecipado, pela atenção! -
Opa, bom dia @Italo Giurizzato Junior! Entendi. No meu caso, por hora, controlei pelo valor de retenção. Se for 0, então eu não coloco nenhum responsável (rtNenhum). Caso haja, coloquei para trazer o valor do campo "responsavelretencao" da view que criamos para abastecer os dados da NFSe, dessa forma: { ISS Retido } if MeuDataSet.FieldByName('vrissretido').AsExtended > 0 then begin IssRetido := stRetencao; ResponsavelRetencao := ACBrNFSe.Provider.StrToResponsavelRetencao(OK, MeuDataSet.FieldByName('responsavel_retencao').AsString); end else begin IssRetido := stNormal; ResponsavelRetencao := rtNenhum; end; Sei que não é o ideal, mas estamos validando essa versão por enquanto em um único cliente que vai ser atendido pelo ajuste.
-
Olá, bom dia! Conforme relatado no grupo do Discord (https://discord.com/channels/798697718800318484/801796941813907456/1370377955242672279) as funções supracitadas não estão permitindo a escolha da opção "rtNenhum" pois, para tal, é necessário passar o valor '', porém, já existe outra opção que corresponde ao valor citado. Vide abaixo: function TACBrNFSeXProvider.ResponsavelRetencaoToStr( const t: TnfseResponsavelRetencao): string; begin Result := EnumeradoToStr(t, ['1', '', '2', ''], [rtTomador, rtPrestador, rtIntermediario, rtNenhum]); end; function TACBrNFSeXProvider.StrToResponsavelRetencao(out ok: boolean; const s: string): TnfseResponsavelRetencao; begin Result := StrToEnumerado(ok, s, ['1', '', '2', ''], [rtTomador, rtPrestador, rtIntermediario, rtNenhum]); end; Por hora, contornei aqui no meu fonte passando rtNenhum diretamente quando não for caso de Retenção de ISS. Muito obrigado!
