Ir para conteúdo
  • Cadastre-se

jaidomini

Membros
  • Total de ítens

    64
  • Registro em

  • Última visita

Tudo que jaidomini postou

  1. Esta função faz o ajuste automático da largura da coluna em até 100px, quando chega a 100 é inserido espaço em branco a cada 19 caractres para que o fortes faça a quebra com o WordWrap. Antes de chamar a função imprimir do ACBRNFe, chame esta procedure DanfeFortesAjustaQuebraLinha. Atenção, depois que chamar esta procedure não exporte xml, pois a Tag cProd foi modificada. Att Jaisson procedure DanfeFortesAjustaQuebraLinha; var i, iNota: Integer; begin if ACBrNFe1.DANFE=DanfeFortes1 then if DanfeFortes1.TipoDANFE = tiRetrato then begin DanfeFortes1.LarguraCodProd := 61; if ACBrNFe1.NotasFiscais.Count>0 then for iNota := 0 to ACBrNFe1.NotasFiscais.Count-1 do for i := 0 to ACBrNFe1.NotasFiscais.Items[iNota].NFe.Det.Count-1 do begin if Length(ACBrNFe1.NotasFiscais.Items[iNota].NFe.Det.Items[i].Prod.cProd) > 11 then if (DanfeFortes1.LarguraCodProd < (Length(ACBrNFe1.NotasFiscais.Items[iNota].NFe.Det.Items[i].Prod.cProd)-11) * 5.3 + 61) then begin DanfeFortes1.LarguraCodProd := Trunc((Length(ACBrNFe1.NotasFiscais.Items[iNota].NFe.Det.Items[i].Prod.cProd)-11) * 5.3 + 61); if DanfeFortes1.LarguraCodProd > 100 then begin DanfeFortes1.LarguraCodProd := 100; ACBrNFe1.NotasFiscais.Items[iNota].NFe.Det.Items[i].Prod.cProd := Copy(ACBrNFe1.NotasFiscais.Items[iNota].NFe.Det.Items[i].Prod.cProd,1,19) + ' '+ Copy(ACBrNFe1.NotasFiscais.Items[iNota].NFe.Det.Items[i].Prod.cProd,20,19) + ' '+ Copy(ACBrNFe1.NotasFiscais.Items[iNota].NFe.Det.Items[i].Prod.cProd,39,19) + ' '+ Copy(ACBrNFe1.NotasFiscais.Items[iNota].NFe.Det.Items[i].Prod.cProd,58,19); //tem no max 60 carac o codigo end; end; end; end; end;
  2. Boa Tarde. Não sei exatamente o que vc fez na parte de retorno, mas pra mim funciona o retorno pefeitamente. Antes de realizar o retorno, faça isso ACBrBoleto1.Banco.TipoCobranca := cobBancoSofisaItau Dessa forma a unit que vai fazer a leitura do retorno é a ACBrBancoSofisaItau.pas Vi que vc anexou ACBrBancoItau.pas sendo que a leitura do Banco Sofisa itaú é feita pela unit ACBrBancoSofisaItau.pas
  3. Boa tarde, por nada! Obrigado a vcs também que fazem um esforço enorme! Eu passei onde modifiquei, porque não está 100% atualizado com as últimas modificações do SVN, de qualquer maneira segue anexo. Por isso que passei os pontos em que foram ajustados, que foram poucos. ACBrBoleto.pas
  4. Bom dia Já configurei várias vezes Sicredi, e a agência é sempre com 4 casas e o dígito da agência, no caso o posto com 2 casas. DigitoVerificadorAgenciaConta não preencho. Sobre o nosso numero, eu passo um código que crio para cada boleto e o Acbr se encarrega de formatar ele, exemplo: 5775
  5. Bom dia Como não tem o layout do Sofisa quando o parceiro é Itaú(hoje tem com o Santander), eu desenvolvi no padrão do ACBr. - Já ajustei TODOS os códigos de rejeições conforme layout - Para imprimir o boleto, eles pedem para seguir o manual do Itaú, então é só falar que é Itaú que o boleto imprime certinho Boleto.Banco.TipoCobranca := cobItau - Utilizam carteira 109 - Na conta corrente e codigo cedente e convenio, tem que colocar o código do cedente que eles passam, nunca a conta corrente. - O codigo da empresa no banco, utilizei do campo CodigoTransmissao pois ele é parecido com o codigo de transmissao que o Santander utiliza. Ex deste codigo: "000000099999CVE341" Alterações em em ACBrBoleto.pas 1) TACBrTipoCobranca = acrescentar: cobBancoSofisaItau 2) ACBrBancoSofisaItau no uses 3) function GetTipoCobranca 637: begin if StrToInt(Carteira) = 109 then Result := cobBancoSofisaItau else Result := cobBancoSofisaSantander; end; 4) SetTipoCobranca cobBancoSofisaItau : fBancoClass := TACBrBancoSofisaItau.Create(Self); {637} Obrigado Jaisson LayoutSofisa.zip ACBrBancoSofisaItau.pas
  6. Verdade, tem no header do lote também, mas o ACBR já faz aquilo que comentei, deixa em branco Então também resolveria deixando DigitoVerificadorAgenciaConta := '0' Porque no lote o acbr já segue o manual. Realmente, o pessoa que elaborou o manual deixou 2 regras para o mesmo campo. Abraço.
  7. Bom Dia. Link para envio de arquivo para validar https://www.sicoob.com.br/web/sicoob/validador-cnab Link do arquivo em XLS do layout (quer está de acordo com o link) https://www.sicoob.com.br/documents/3068856/0/layout-cnab-240.xls/5bfadf52-4278-3d28-0b69-b09b467aad45?t=1614120550911 Eu entendo o que o Antonio comentou, porém se no manual fala que tem que vir assim, já era melhor deixar fixo para não ficar gerando tópicos de dúvidas aqui e ajudar os próximos a não passar um tempo analisando, e o tempo que eu usei pra fazer isso já seja útil para o próximo. O layout da forma que está, para quem já passou pela homologação funciona, porém, para quem vai começar a emitir e precisa passar pela homologação, não passa. layout-cnab-240.xls ACBrBancoBancoob.pas
  8. Boa Tarde Apesar do layout já funcionar em alguns clientes em produção, novos clientes não passam pela homologação no validador por causa de 2 campos que estão exigindo conteúdo em branco em um e zero no outro, fiz a alteração da unit e passou 100% pelo validador, o manual também pede isso. unit ACBrBancoBancoob; GerarRegistroHeader240 Antes (Linha) PadRight(Convenio, 20, ' ') + // 33 a 52 - Brancos - Alteração para passar no validador Depois space(20 ) + // 33 a 52 - Brancos - Alteração para passar no validador Antes (Linha) PadRight(DigitoVerificadorAgenciaConta, 1, ' ')+ // 72 - Dígito verificador Ag/Conta (zero) Depois '0' + // 72 - Dígito verificador Ag/Conta (zero) Att Jaisson
  9. Eu fiz isso no meu software, porém deixei a sugestão porque outros terão o problema. Att Jaisson
  10. Bom dia, unit ACBrBoleto procedure AdicionarMensagensPadroes Quase no final da procedure, adicionei 2 linhas, logo após o código da DataLimitePagto. if DataLimitePagto <> 0 then begin if DataLimitePagto > Vencimento then AStringList.Add(ACBrStr('Não Receber após ' + IntToStr(DaysBetween(Vencimento, DataLimitePagto))+ ' dias')) else AStringList.Add(ACBrStr('Não Receber após o Vencimento')); end; if Banco.TipoCobranca = cobSicred then AStringList.Text := TiraAcentos(AStringList.Text); Obrigado Jaisson
  11. Resolvido, anteriormente não estava gerando este arquivo na pasta "Notas" com a alteração de que vc passou o arquivo está lá agora. E também foi possível pegar o XML da NFSe de ACBrNFSeX1.NotasFiscais.Items[ i ].XmlNfse Tudo certo.
  12. Boa tarde, no arquivo do centi.Provider que fiz o upload já tinha consegui consultar, eu tinha corrigido o consultar da mesma forma que vc tinha corrigido o gerar para outra pessoa, com a alteração que vc pediu também deu certo a consulta, porém em ambas as situação tenho que "extrair" a NFSe do XML para visualizar na DANFE, conforme código abaixo. if Pos('<ListaNfse>', ACBrNFSeX1.WebService.ConsultaNFSeporRps.XmlRetorno) > 0 then xmlDaNFSE := Copy(ACBrNFSeX1.WebService.ConsultaNFSeporRps.XmlRetorno, Pos('<Nfse>', ACBrNFSeX1.WebService.ConsultaNFSeporRps.XmlRetorno), Pos('</Nfse>', ACBrNFSeX1.WebService.ConsultaNFSeporRps.XmlRetorno) + 7{<Nfse>} - Pos('<Nfse>', ACBrNFSeX1.WebService.ConsultaNFSeporRps.XmlRetorno)) else xmlDaNFSE := ACBrNFSeX1.WebService.ConsultaNFSeporRps.XmlRetorno;
  13. Alterei e testei, veja os novos arquivo 17NFS-comp-nfse.xml 17NFS-comp-nfse-soap.xml 17NFS-con-nfse-rps.xml 17NFS-con-nfse-rps-soap.xml
  14. Olá. Segue os arquivos, assim que pegar, se conseguir, delete daqui pfv. Abraço
  15. No primeiro post eu anexei os XML's com erro, os xml que deram sucesso no retorno não tenho, estão no cliente. Se precisar eu entro em contato com ele e pego, precisa os que tiveram sucesso ou que tiveram erro(com erro estão no primeiro post)?
  16. @Italo Giurizzato Junior, consegui resolver, emissão e consultar por RPS. O cancelamento não testei, mas segui o mesmo raciocínio que foi a correção que você fez para gerar a NFSe. Agora uma coisa importante, quando ele faz o consulta, o xml que vem no XMLRetorno vem com aquela tag <ListaNfse> isso acaba impedindo de visualizar a NFSe, fiz um código simples para extrair apenas o XML da NFSe e consegui imprimir a DANFE if Pos('<ListaNfse>', ACBrNFSeX1.WebService.ConsultaNFSeporRps.XmlRetorno) > 0 then xmlDaNFSE := Copy(ACBrNFSeX1.WebService.ConsultaNFSeporRps.XmlRetorno, Pos('<Nfse>', ACBrNFSeX1.WebService.ConsultaNFSeporRps.XmlRetorno), Pos('</Nfse>', ACBrNFSeX1.WebService.ConsultaNFSeporRps.XmlRetorno) + 7{<Nfse>} - Pos('<Nfse>', ACBrNFSeX1.WebService.ConsultaNFSeporRps.XmlRetorno)) else xmlDaNFSE := ACBrNFSeX1.WebService.ConsultaNFSeporRps.XmlRetorno; Segue contribuição em anexo. Centi.Provider.pas
  17. @Italo Giurizzato Junior Italo, td bem? Vi que neste post estava o mesmo erro no gerar, e vc resolveu, já dei uma vasculhada no fonte, debuguei mas nao encontrei... agora está no consultar por rps
  18. Bom dia. A cidade de Neropolis trocou do Sigep para o Centi, atualizei o ini e o .res com as informações abaixo e consegui transmitir, porém a consulta do RPS está dando o erro citado no Título. ACBrNFSeX - Atualizado ontem 09/03/22 Nome=Neropolis UF=GO Provedor=Centi Versao=2.02 ProRecepcionar=https://api.centi.com.br/nfe/gerar/go/neropolis ProConsultarNFSeRps=https://api.centi.com.br/nfe/consultar/rps/go/neropolis ProCancelarNFSe=https://api.centi.com.br/nfe/cancelar/go/neropolis ProGerarNFSe=https://api.centi.com.br/nfe/gerar/go/neropolis ; HomRecepcionar=https://api.centi.com.br/nfe/gerar/homologacao/go/neropolis HomConsultarNFSeRps=https://api.centi.com.br/nfe/consultar/homologacao/rps/go/neropolis HomCancelarNFSe=https://api.centi.com.br/nfe/cancelar/homologacao/go/neropolis HomGerarNFSe=https://api.centi.com.br/nfe/gerar/homologacao/go/neropolis ; ProLinkURL=https://api.centi.dev.br/portal/nfse/go/neropolis/%CodVerif% HomLinkURL=https://api.centi.dev.br/portal/nfse/go/neropolis/%CodVerif% Anexei os arquivos envolvidos na consulta Obrigado. 17NFS-comp-nfse.xml 17NFS-comp-nfse-soap.xml 17NFS-con-nfse-rps.xml 17NFS-con-nfse-rps-soap.xml
  19. Americana suspendeu o SmarAPD, está usando o TIPLAN que por sinal funciona muito bem aqui! Minha propria empresa emite via ACBr. Utilizo: ACBrNFSe1.NotasFiscais.GerarNFSe; Depois: ACBrNFSe1.Enviar(Numero do Lote, False); Lembrando que o que p Italo disse, vamos ter que atualizar para o ACBRNFSEX
  20. [5214507] Nome=Neropolis UF=GO Provedor=Sigep NomeURL_H=gestaopublica.neropolis NomeURL_P=gestaopublica.neropolis Atenciosamente Jaisson Cruz Me desculpem, não vi que tinha um tópico para isso, algum moderador, mover para o conversa certa ou excluir o post.
  21. Daniel, até Dezembro/17 eu utilizava os fontes antes desta alteração sem problemas com o Gmail/Hotmail, depois que atualizei notei que em "procedure TACBrMail.SendMail;" a linha if fSMTP.Login and fSMTP.AuthDone then foi alterada para if fSMTP.Login then Em outros smtps, estes com hospedagem cPanel, funciona normal, só que com gmail ou hotmail não vai... Eu fiz um teste alterando e compilando com a linha abaixo if fSMTP.Login and fSMTP.AuthDone then E o envio voltou a funcionar normalmente, veja aí se faz sentido o que relatei. Obrigado Jaisson
  22. Eu fiz faz uns 4 dias, em XE2, coloca no uses: IdHTTP e IdSSLOpenSSL function RecWslerCampo(Texto: TStringList; NomeCampo: String ): String; var i : integer; linha: String; begin NomeCampo := Trim(NomeCampo) + '='; Result := ''; for i := 0 to Texto.Count-1 do begin linha := Trim(Texto); if Copy(linha,1,Length(NomeCampo)) = NomeCampo then begin Result := Copy(linha, Length(NomeCampo)+1, Length(linha)); break; end; end end; var IdHTTP1: TIdHTTP; IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL; sResposta: TStringList; begin try IdHTTP1:= TIdHTTP.Create(self); IdSSLIOHandlerSocketOpenSSL1:= TIdSSLIOHandlerSocketOpenSSL.Create(Self); IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1; IdHTTP1.ReadTimeout := 5000; sResposta := TStringList.Create; sResposta.Text := IdHTTP1.Get( 'https://www.receitaws.com.br/v1/cnpj/XXXXXXXXXXXXXX', ' ','%20')); sResposta.Text := TrocaTexto(sResposta.Text,'": ','='); sResposta.Text := TrocaTexto(sResposta.Text,'",',''); sResposta.Text := TrocaTexto(sResposta.Text,'"',''); finally IdSSLIOHandlerSocketOpenSSL1.Free; IdHTTP1.Free; FechaAguarda; end; if Pos('nome=', sResposta.Text) > -1 then begin if RecWslerCampo(sResposta, 'situacao') <> 'ATIVA' then ShowMessage('Atenção, SITUAÇÃO está: ' + RecWslerCampo(sResposta, 'situacao')); razao_social := RecWslerCampo(sResposta, 'nome'); fantasia := RecWslerCampo(sResposta,'fantasia'); .... e assim por diante... end; end;
  23. Eu fiz semana passa isso que você sugeriu, deu tudo certo, mas o problema foi o reCaptcha pedindo intermináveis verificações de placas e carros após clicar em Não sou robô. Eu até consegui resolver os problemas de script do TWebbrowser, rodando em compatibilidade do IE instalado, mas este reCaptcha parece que sabe que o browser está rodando dentro de um sistema, então ele pensa que é algum bot....
  24. Hoje o dia todo não funcionou, até via browser estava instavel. Acabei de testar com a correção para o link http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/cnpjreva_solicitacao3.asp está funcionando 100%.
  25. Percebi que o atual, tem como passar o CNPJ direto http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/Cnpjreva_Solicitacao2.asp?cnpj=XXXXXXXXXXXXXX Agora tem como lidar internamente com este novo captcha para o usuario clicar no "Eu Nao Sou Robo" Estou tentando, se descobrir coloco aqui
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.