Ir para conteúdo
  • Cadastre-se

Fábio Fonseca

Membros
  • Total de ítens

    7
  • Registro em

  • Última visita

Últimos Visitantes

1.130 visualizações

Fábio Fonseca's Achievements

Rookie

Rookie (2/14)

  • First Post
  • Conversation Starter
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

6

Reputação

  1. Boa noite José e Elton! Eu que agradeço pela oportunidade de contribuir. Amanhã eu baixo os fontes atualizados e refaço os testes.
  2. Boa noite Juliomar Eu recompilei no Lazarus o componente ACBrReinf e o projeto ACBrMonitor Plus disponibilizados gratuitamente no Trunk da ACBr.
  3. Boa tarde Fiz algumas adaptações no código-fonte para habilitar o envio do Evento R-2055 - Aquisição de Produção Rural através do ACBrMonitor Plus. Verifiquei que já existia uma implementação para leitura do arquivo INI para este Evento, mas ainda faltavam alguns detalhes para funcionar corretamente. Compartilhando com vocês as alterações que fiz para enviar o evento R-2055 corretamente através leitura de arquivo INI pelo Monitor. As alterações estão localizadas entre as linhas com o texto "//28/04/2021 * Fábio *" ). 1ª Alteração: unit pcnEventosReinf function TReinfEventos.LoadFromIni(const AIniString: String): Boolean; var Ok: Boolean; begin case StringINIToTipoEvento(Ok, AIniString) of teR1000: Self.R1000.New.evtInfoContri.LerArqIni(AIniString); teR1070: Self.R1070.New.evtTabProcesso.LerArqIni(AIniString); teR2010: Self.R2010.New.evtServTom.LerArqIni(AIniString); teR2020: Self.R2020.New.evtServPrest.LerArqIni(AIniString); teR2030: Self.R2030.New.evtAssocDespRec.LerArqIni(AIniString); teR2040: Self.R2040.New.evtAssocDespRep.LerArqIni(AIniString); teR2050: Self.R2050.New.evtComProd.LerArqIni(AIniString); //28/04/2021 * Fábio * teR2055: Self.R2055.New.evtAqProd.LerArqIni(AIniString); //28/04/2021 * Fábio * teR2060: Self.R2060.New.evtCPRB.LerArqIni(AIniString); teR2070: Self.R2070.New.evtPgtosDivs.LerArqIni(AIniString); teR2098: Self.R2098.New.evtReabreEvPer.LerArqIni(AIniString); teR2099: Self.R2099.New.evtFechaEvPer.LerArqIni(AIniString); teR3010: Self.R3010.New.evtEspDesportivo.LerArqIni(AIniString); teR9000: Self.R9000.New.evtExclusao.LerArqIni(AIniString); end; Result := (GetCount > 0); end; 2ª Alteração unit pcnReinfR2055 TinfoProcCollectionItem = class(TObject) private //28/04/2021 * Fábio * FtpProc: TtpProc; //28/04/2021 * Fábio * FcodSusp: String; FvlrSenarNRet: double; FnrProc: String; FvlrRatNRet: double; FvlrCPNRet: double; public //28/04/2021 * Fábio * property tpProc: TtpProc read FtpProc write FtpProc; //28/04/2021 * Fábio * property nrProc: String read FnrProc write FnrProc; property codSusp: String read FcodSusp write FcodSusp; property vlrCPNRet: double read FvlrCPNRet write FvlrCPNRet; property vlrRatNRet: double read FvlrRatNRet write FvlrRatNRet; property vlrSenarNRet: double read FvlrSenarNRet write FvlrSenarNRet; end; 3ª Alteração unit pcnReinfR2055 function TevtAqProd.LerArqIni(const AIniString: String): Boolean; var INIRec: TMemIniFile; Ok: Boolean; sSecao, sFim, sSecaoF: String; I, J: Integer; begin Result := True; INIRec := TMemIniFile.Create(''); try LerIniArquivoOuString(AIniString, INIRec); // ******************************************** // Precisa checar se não esta faltando nada // ******************************************** with Self do begin sSecao := 'evtAqProd'; Id := INIRec.ReadString(sSecao, 'Id', ''); Sequencial := INIRec.ReadInteger(sSecao, 'Sequencial', 0); sSecao := 'ideEvento'; ideEvento.indRetif := StrToIndRetificacao(Ok, INIRec.ReadString(sSecao, 'indRetif', '1')); ideEvento.NrRecibo := INIRec.ReadString(sSecao, 'nrRecibo', EmptyStr); ideEvento.perApur := INIRec.ReadString(sSecao, 'perApur', EmptyStr); ideEvento.ProcEmi := StrToProcEmiReinf(Ok, INIRec.ReadString(sSecao, 'procEmi', '1')); ideEvento.VerProc := INIRec.ReadString(sSecao, 'verProc', EmptyStr); { Indicativo de retificação de informação enviada ao ambiente nacional do eSocial. Validação: Informação permitida apenas se perApur for anterior ao início de vigência do evento R-2055 na EFD-Reinf. Só pode ser informado se indRetif = [1]. Valores válidos: S. } ideEvento.retifS1250 := INIRec.ReadString(sSecao, 'retifS1250', EmptyStr); sSecao := 'ideContri'; ideContri.OrgaoPublico := (TACBrReinf(FACBrReinf).Configuracoes.Geral.TipoContribuinte = tcOrgaoPublico); ideContri.TpInsc := StrToTpInscricao(Ok, INIRec.ReadString(sSecao, 'tpInsc', '1')); ideContri.NrInsc := INIRec.ReadString(sSecao, 'nrInsc', EmptyStr); sSecao := 'ideEstabAdq'; FinfoAquisProd.ideEstabAdquir.tpInscAdq := StrToTpInscricao(Ok, INIRec.ReadString(sSecao, 'tpInscAdq', '1')); FinfoAquisProd.ideEstabAdquir.nrInscAdq := INIRec.ReadString(sSecao, 'nrInscAdq', EmptyStr); //28/04/2021 * Fábio * FinfoAquisProd.ideEstabAdquir.tpInscProd := StrToTpInscricao(Ok, INIRec.ReadString(sSecao, 'tpInscProd', '1')); FinfoAquisProd.ideEstabAdquir.nrInscProd := INIRec.ReadString(sSecao, 'nrInscProd', EmptyStr); FinfoAquisProd.ideEstabAdquir.indOpcCP := INIRec.ReadString(sSecao, 'indOpcCP', EmptyStr); //28/04/2021 * Fábio * with FinfoAquisProd.ideEstabAdquir do begin I := 1; while true do begin // de 1 até 3 sSecao := 'tipoCom' + IntToStrZero(I, 1); sFim := INIRec.ReadString(sSecao, 'indCom', 'FIM'); if (sFim = 'FIM') or (Length(sFim) <= 0) then break; with detAquis.New do begin indAquis := StrToDetAquis(Ok, sFim); vlrBruto := StringToFloatDef(INIRec.ReadString(sSecao, 'vlrBruto', ''), 0); //28/04/2021 * Fábio * vlrCPDescPR := StringToFloatDef(INIRec.ReadString(sSecao, 'vlrCPDescPR', ''), 0); vlrRatDescPR := StringToFloatDef(INIRec.ReadString(sSecao, 'vlrRatDescPR', ''), 0); vlrSenarDesc := StringToFloatDef(INIRec.ReadString(sSecao, 'vlrSenarDesc', ''), 0); //28/04/2021 * Fábio * J := 1; while true do begin // de 01 até 50 sSecao := 'infoProcJud' + IntToStrZero(I, 1) + IntToStrZero(J, 2); //28/04/2021 * Fábio * sFim := INIRec.ReadString(sSecao, 'tpProc', 'FIM'); //28/04/2021 * Fábio * if (sFim = 'FIM') or (Length(sFim) <= 0) then break; with infoProc.New do begin //28/04/2021 * Fábio * tpProc := StrToTpProc(Ok, sFim); //28/04/2021 * Fábio * nrProc := INIRec.ReadString(sSecao, 'nrProc', ''); codSusp := INIRec.ReadString(sSecao, 'codSusp', ''); vlrCPNRet := StringToFloatDef(INIRec.ReadString(sSecao, 'vlrCPNRet', ''), 0); vlrRatNRet := StringToFloatDef(INIRec.ReadString(sSecao, 'vlrRatNRet', ''), 0); vlrSenarDesc := StringToFloatDef(INIRec.ReadString(sSecao, 'vlrSenarDesc', ''), 0); end; Inc(J); end; end; Inc(I); end; end; end; GerarXML; XML := FXML; finally INIRec.Free; end; end; Realizei os envios em Ambiente de Homologação utilizando a seguinte estrutura no arquivo INI: [evtAqProd] Id= Sequencial= [ideEvento] indRetif= perApur= tpAmb= procEmi= verProc= [ideContri] tpInsc= nrInsc= [ideEstabAdq] tpInscAdq= nrInscAdq= tpInscProd= nrInscProd= indOpcCP= [tipoCom1] indCom= vlrBruto= vlrCPDescPR= vlrRatDescPR= vlrSenarDesc= [infoProcJud101] tpProc nrProc= codSusp= vlrCPNRet= vlrRatNRet= vlrSenarDesc= Conclusão: Após estas adaptações, todos testes foram enviados com sucesso através do ACBrMonitor Plus 1.4.0.2. Espero ter contribuído de alguma forma com a comunidade ACBr. Obs: Units em Anexo para avaliação/validação pela equipe ACBr. pcnEventosReinf.pas pcnReinfR2055.pas
  4. Boa tarde A princípio o problema foi resolvido. Este Erro Relacionado ao Canal Seguro ocorreu somente entre os dias 03 e 04/10/19 no RS. Pelo meu monitoramento durante a semana, identifiquei que este erro não foi mais registrado do dia 05/10/19 em diante
  5. Boa tarde pessoal Seguindo a orientação do Italo, refiz os testes em Produção restrita e o teste "valendo" em Produção após atualizar os componentes ACBr e os fontes do programa de exemplo (revisão 15123). Consegui registrar o evento R-1000 - Informações do Contribuinte com sucesso nestes 2 ambientes (ambos no layout 1.03.02). Muito obrigado!
  6. Boa tarde! Alguém já tentou enviar algum registro em "Produção" pelo programa de exemplo? sabem se os WebServices já estão operando normalmente neste ambiente? Estou conhecendo o componente ACBrReinf e achei excelente aquele programa ExemploReinf para estudar o funcionamento deste componente. Preenchi manualmente as informações no programa e em alguns eventos, realizei testes de envio destes eventos (R-1000, R-2010, R-2099 e R-2098) pelo programa de Exemplo atualizado (componentes ACBr reinstalados revisão 15105). Adicionei o arquivo ACBrReinfServicos.ini na propriedade ACBrReinf1.Configuracoes.Arquivos.IniServicos Em ambiente de "Produção Restrita" funcionou perfeitamente, consegui registrar todos os testes. Depois troquei para o ambiente de Produção para testar o envio de um registro já "valendo" para o mês de maio/2018 (somente com o evento R-1000 - Informações do Contribuinte). - na RadioGroup rgTipoAmb, marquei a opção "Produção". - na procedure GerarReinf1000, alterei a propriedade IdeEvento.TpAmb de taProducaoRestritaDadosReais para taProducao. - alterei também algumas informações para o Evento R1000 com informações reais para o mês de maio/18. Neste ambiente de Produção, ocorreu o mesmo Erro HTTP: 404 relatado por 1 dos participantes do fórum. Project ExemploReinf.exe raised exception class EACBrDFeException with message WebService: http://sped.fazenda.gov.br/RecepcaoLoteReinf/ReceberLoteEventos Inativo ou Inoperante tente novamente. Erro Interno: 0 Erro HTTP: 404'. Dúvida: além destas propriedades que eu alterei, existe outra configuração que deve ser alterada no programa de exemplo para eu realizar um envio em Produção?
  7. Boa tarde Gilberto Migrei recentemente para o trunk2 no SVN e estou testando o ACBrMonitorPLUS 0.1.11.2 (lazarus) para emissão de NF-e / NFC-e / CT-e. Durante os testes para envio de CT-e, passei exatamente pelo mesmo problema que você relatou. O monitor está interpretando somente a 1ª linha do teu comando de geração do CT-e. CTE.CriarCTe( "[ide] Por este motivo a procedure GerarIniCTe da DoACBrCTeUnit não está preenchendo nenhum valor para o CNPJ do emitente nesta linha abaixo: Emit.CNPJ := INIRec.ReadString('emit','CNPJ',''); O erro está sendo exibido no bloco abaixo quando é comparado o CNPJ do certificado digital (preenchido) com o CNPJ do componente (em branco) na procedure Conhecimento.Assinar da unit ACBrCTeConhecimentos. // Verificando se pode assinar esse XML (O XML tem o mesmo CNPJ do Certificado ??) CNPJEmitente := OnlyNumber(CTe.Emit.CNPJ); CNPJCertificado := OnlyNumber(TACBrCTe(TConhecimentos(Collection).ACBrCTe).SSL.CertCNPJ); // verificar somente os 8 primeiros digitos, para evitar problemas quando // a filial estiver utilizando o certificado da matriz if Copy(CNPJEmitente, 1, 8) <> Copy(CNPJCertificado, 1, 8) then raise EACBrCTeException.Create('Erro ao Assinar. O XML informado possui CNPJ diferente do Certificado Digital' ); Para resolver este caso, adicionei uma linha na procedure Processar da unit ACBrMonitor1.pas. { Objeto BOLETO/NFE pode receber comandos com várias Linhas, portanto deve processar todas linhas de uma só vez... } Objeto := TrimLeft(fsProcessar[0]); if Copy(Objeto, 1, 3) = UTF8BOM then Objeto := copy(Objeto, 4, Length(Objeto) ); if (UpperCase(Copy(Objeto, 1, 6)) = 'BOLETO') or (UpperCase(Copy(Objeto, 1, 3)) = 'NFE') or (UpperCase(Copy(Objeto, 1, 3)) = 'SAT') // Adaptado em 13/11/2015 - Fábio Fonseca - permite receber comandos para CT-e com várias linhas or (UpperCase(Copy(Objeto, 1, 3)) = 'CTE') then begin Linha := Trim(fsProcessar.Text); if Copy(Linha, 1, 3) = UTF8BOM then Linha := copy(Linha, 4, Length(Linha) ); fsProcessar.Clear; end else begin Linha := Objeto; fsProcessar.Delete(0); end; Espero ter ajudado com o teu problema no envio de CT-e.
×
×
  • 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.

The popup will be closed in 10 segundos...