Jump to content

CarlosSolla

Membros
  • Content Count

    28
  • Joined

  • Last visited

Community Reputation

6 Neutral

1 Follower

About CarlosSolla

  • Rank
    Membro
  • Birthday 03/12/1967

Profile Information

  • Sexo
    Masculino
  • Localização
    Itápolis

Recent Profile Visitors

684 profile views
  1. Boa tarde! Acredito que consegui resolver o problema, que era na "function TinfoCREstabCollection.New: TinfoCREstabCollectionItem;" (linha 1173), faltava o comando Self.Add(Result); Unit alterada em anexo. Abraço a todos! pcesS5011.pas
  2. Bom dia! Após a atualização do ACBR referente revisão 16797 , está apresentando o erro "List index out of bounds (0)' ao tentar carregar o xml do evento S-5011. var S5011: TS5011; begin S5011 := TS5011.Create; S5011.Xml := S1299XML5011.AsString; .... end; verifiquei os fontes e ao que parece o problema é no treco abaixo (linha 778 da unit pcesS5011.pas), onde, após adicionar um item no comando InfoCREstab.add, o InfoCREstab.Count permanece = 0. Não consegui entender o porque, talvez eu esteja fazendo algo errado while Leitor.rExtrai(4, 'infoCREstab', '', j + 1) <> '' do begin infoCS.ideEstab.Items[i].infoCREstab.Add; infoCS.ideEstab.Items[i].infoCREstab.Items[j].FtpCR := leitor.rCampo(tcInt, 'tpCR'); infoCS.ideEstab.Items[i].infoCREstab.Items[j].FvrCR := leitor.rCampo(tcDe2, 'vrCR'); infoCS.ideEstab.Items[i].infoCREstab.Items[j].FvrSuspCR := leitor.rCampo(tcDe2, 'vrSuspCR'); inc(j); end; Obrigado a todos!
  3. Bom dia Anderson, Acredito que são códigos da tabela 19 do eSocial - Motivos de Desligamento
  4. Boa tarde a todos! Referente ao nº do DI, é necessário ficar atento à quantidade de zeros à esquerda que vem especificado no documento, após o ano e antes do digito final. Um cliente precisou fazer uma nota de importação hoje, na qual o nº do DI no documento recebido da transportadora era no formato: AANNNNNNNNND, onde: AA -> Ano com 2 posições (18) NNNNNNNNN -> nº do documento de importação com zeros à esquerda até completar 9 dígitos. D -> Digito Verificador. Para dar certo na validação do ACBR tive que retirar os zeros à esquerda do nº do documento, ficando no formato TAANNNNNNND, onde: T -> Tipo de documento = 2 - Documento de Importação (DI) AA -> Ano com 2 posições = 18 NNNNNNN -> nº do documento com zeros a esquerda até completar 7 dígitos D -> dígito verificador.
  5. Bom dia Mariana O código que você postou apenas carrega as informações de um evento que será adicionado na lista de eventos que será incluída no lote. Você precisa cuidar para que não seja adicionado mais que 50 eventos, que é o máximo permitido por lote. Dentro de seu while, para cada evento você ainda precisa chamar o comando evtTabRubrica.GerarXML, onde o ACBR vai carregar o ID do evento (caso não tenho sido atribuido) e assinar. O arquivo na verdade será criado quando você chamar o comando ACBreSocial.Enviar(egIniciais), que é quando o arquivo XML será salvo na pasta especificada nas configurações do ACBR, isso se a opção de salvar o XML também estiver ativada, e o XML contendo os eventos carregados no lote (através dos comandos ACBreSocial.Eventos.Tabelas.S1010.Add) serão transmitidos. Logo após a transmissão deve-se esperar um tempinho através do comando Sleep(3000) e efetuar a consulta do protocolo do lote: var RetornoEnvioLote: TRetEnvioLote; DataHoraDaRecepcaoDoLote: string; VersaoDoAplicativoNaRecepcao: string; ProtocoloDoEnvioDoLote: string; begin RetornoEnvioLote := ACBreSocial.WebServices.EnvioLote.RetEnvioLote; if RetornoEnvioLote.Status.cdResposta in [201, 202] then begin DataHoraDaRecepcaoDoLote := RetornoEnvioLote.dadosRecLote.dhRecepcao; VersaoDoAplicativoNaRecepcao := RetornoEnvioLote.dadosRecLote.versaoAplicRecepcao; // ProtocoloDoEnvioDoLote deverá ser usado para obter depois o resultado do processamento do lote ProtocoloDoEnvioDoLote := RetornoEnvioLote.dadosRecLote.Protocolo; end; end;
  6. Boa tarde! Como sugestão estão postando uma adaptação que fiz na emissão da Danfe em Fast. Criei uma nova propriedade chamada de ExibirTotalTributosItem, que indica se a informação sobre os tributos deve ser impressa sempre ou apenas para o consumidor final. Incluída também na mesma unit ACBrNFeDANFEFR.pas uma correção na função PrepareReportEvento, pois em uma lista de NFes, o evento estava sendo impresso sempre referente à primeira NFe da lista. Desculpem se fiz algo errado, não tenho conhecimento da estrutura das classes do ACBr como um todo. Abraço! ACBrNFeDANFEFR.pas ACBrNFeDANFEFRDM.pas
  7. Olá Rogério, boa tarde! Sim, realmente só podemos enviar lotes com no máximo 50 eventos. Dê uma olhada no tópico,abaixo que tem várias sugestões sobre como fazer o envio:
  8. Boa tarde Anderson, Creio que, mesmo utilizando certificado A3, você precisa carregar o nº de série do certificado para o componente ACBRESocial, da seguinte forma: ACBreSocial.Configuracoes.Certificados.NumeroSerie := wNumeroDeSerieDoCertificadoA3;
  9. Boa tarde! Valeu, Joao Jr, consegui enviar no modo Produção Restrita criando um numero usando o CPF sem o digito + um nro sequencial + digito gerado pelo site que você passou. Ainda bem que podemos simular o CAEPF, pois a caixa informou por email: Muito obrigado!
  10. Transmissão de empresa CEI Boa tarde! Alguém sabe qual o procedimento para a transmissão do eSocial para empresas (propriedades rurais) que são vinculadas à matricula CEI (o qual deve ser convertido para CAEPF). Alguém sabe como emitir o CAEPF? O certificado da empresa é um e-CPF do proprietário.
  11. Aqui também deu o mesmo erro , estou tentando desde as 15 horas , enviar eventos S-1010 e S-1020, ainda continua dando o mesmo erro.
  12. Também estou com o mesmo problema
  13. Boa tarde Não sei se entendi bem o que você precisa, mas seria algo assim: ... uses ... , pcesS1250; ... procedure TFExemploEsocial.GerareSocial1250_Trecho; var TempIdeProdutorItem: TIdeProdutorItem; begin with ACBreSocial1.Eventos.Periodicos.S1250.Add do begin EvtAqProd.Sequencial := 0; EvtAqProd.IdeEvento.indRetif := tpIndRetificacao(0); EvtAqProd.IdeEvento.NrRecibo := '65.5454.987798798798'; EvtAqProd.IdeEvento.IndApuracao := tpIndApuracao(iapuMensal); EvtAqProd.IdeEvento.perApur := '2015-06'; EvtAqProd.IdeEvento.TpAmb := taProducaoRestrita; EvtAqProd.IdeEvento.ProcEmi := TpProcEmi(0); EvtAqProd.IdeEvento.VerProc := '1.0'; EvtAqProd.IdeEmpregador.TpInsc := tiCPF; EvtAqProd.IdeEmpregador.NrInsc := '0123456789'; EvtAqProd.InfoAquisProd.IdeEstabAdquir.tpInscAdq := tiCNPJ; EvtAqProd.InfoAquisProd.IdeEstabAdquir.nrInscAdq := '12345678910001'; with EvtAqProd.InfoAquisProd.IdeEstabAdquir.TpAquis.Add do begin indAquis := tpIdAquis(0); vlrTotAquis := 520000.80; TempIdeProdutorItem := IdeProdutor.Add; TempIdeProdutorItem.tpInscProd := tiCNPJ; TempIdeProdutorItem.nrInscProd := '98765432100015'; TempIdeProdutorItem.vlrBruto := 4000.54; TempIdeProdutorItem.vrCPDescPR := 3850.32; TempIdeProdutorItem.vrRatDescPR := 500.30; TempIdeProdutorItem.vrSenarDesc := 2500.30; with TempIdeProdutorItem.Nfs.Add do begin serie := '00004'; nrDocto := '64896549898789'; dtEmisNF := Now; vlrBruto := 4000.54; vrCPDescPR := 3850.32; vrRatDescPR := 500.30; vrSenarDesc := 2500.30; end; end; ... end; end; (Trecho extraído da unit uExemploEsocial.pas, alterado para demonstração)
  14. Bom dia Italo, Unit com a alteração anexada. pcesS1050.pas
  15. Bom dia a todos! Estava incluindo algumas tabelas de horários com 2 intervalos , e estava dando o seguinte erro: First chance exception at $750F08F2. Exception class EArgumentOutOfRangeException with message 'Argument out of range'. Como não detectei nenhum problema na carga dos eventos, tentei alterar a procedure pcesS1050.TEvtTabHorTur.GerarHorarioIntervalo , conforme abaixo, e parou de dar o erro. Alguém já passou por isso, ou eu fiz alguma coisa errada? procedure TEvtTabHorTur.GerarHorarioIntervalo; var i: Integer; objHorarioIntervalo: THorarioIntervaloCollectionItem; begin if InfoHorContratual.dadosHorContratual.horarioIntervalo.Count > 99 then Gerador.wAlerta('', 'horarioIntervalo', 'Lista de Horário de Intervalo', ERR_MSG_MAIOR_MAXIMO + '99'); for i := 0 to InfoHorContratual.dadosHorContratual.horarioIntervalo.Count - 1 do begin objHorarioIntervalo := InfoHorContratual.dadosHorContratual.horarioIntervalo.Items[i]; //try Gerador.wGrupo('horarioIntervalo'); Gerador.wCampo(tcStr, '', 'tpInterv', 1, 1, 1, eSTpIntervaloToStr(objHorarioIntervalo.tpInterv)); Gerador.wCampo(tcStr, '', 'durInterv', 1, 3, 1, objHorarioIntervalo.durInterv); if (objHorarioIntervalo.tpInterv = tinHorarioFixo) then begin Gerador.wCampo(tcStr, '', 'iniInterv', 4, 4, 1, objHorarioIntervalo.iniInterv); Gerador.wCampo(tcStr, '', 'termInterv', 4, 4, 1, objHorarioIntervalo.termInterv); end; Gerador.wGrupo('/horarioIntervalo'); //finally //FreeAndNil(objHorarioIntervalo); //end; end; for i := InfoHorContratual.dadosHorContratual.horarioIntervalo.Count - 1 downto 0 do begin objHorarioIntervalo := InfoHorContratual.dadosHorContratual.horarioIntervalo.Items[i]; FreeAndNil(objHorarioIntervalo); end; end;
×
×
  • Create New...