Ir para conteúdo
  • Cadastre-se

EMBarbosa

Consultores
  • Total de ítens

    9.338
  • Registro em

  • Última visita

  • Days Won

    117

Tudo que EMBarbosa postou

  1. Você testou com o Demo?
  2. Eu não tive prazo ainda para testar. Mas se puder fazê-lo, altere a seguinte função no arquivo ACBrEPCBloco_0_Class.pas: procedure TBloco_0.WriteRegistro0000; var strCOD_VER: AnsiString; strTIPO_ESCRIT: AnsiString; strIND_SIT_ESP: AnsiString; strIND_NAT_PJ: AnsiString; strIND_ATIV: AnsiString; strNUM_REC_ANTERIOR: AnsiString; begin if Assigned(Registro0000) then begin with Registro0000 do begin case COD_VER of vlVersao100: strCOD_VER := '001'; // Código 001 - Versão 100 ADE Cofis nº 31/2010 de 01/01/2011 vlVersao101: strCOD_VER := '002'; // Código 002 - Versão 101 ADE Cofis nº 34/2010 de 01/01/2011 end; case TIPO_ESCRIT of tpEscrOriginal: strTIPO_ESCRIT := '0'; tpEscrRetificadora: strTIPO_ESCRIT := '1'; end; case IND_SIT_ESP of indSitAbertura: strIND_SIT_ESP := '0'; indSitCisao: strIND_SIT_ESP := '1'; indSitFusao: strIND_SIT_ESP := '2'; indSitIncorporacao: strIND_SIT_ESP := '3'; indSitEncerramento: strIND_SIT_ESP := '4'; indNenhum: strIND_SIT_ESP := ' '; end; case IND_NAT_PJ of indNatPJSocEmpresariaGeral : strIND_NAT_PJ := '00'; //0 - Sociedade empresária geral indNatPJSocCooperativa : strIND_NAT_PJ := '01'; //1 - Sociedade Cooperativa indNatPJEntExclusivaFolhaSal : strIND_NAT_PJ := '02'; //2 - Entidade sujeita ao PIS/Pasep exclusivamente com base na folha de salários end; case IND_ATIV of indAtivIndustrial: strIND_ATIV := '0'; indAtivPrestadorServico: strIND_ATIV := '1'; indAtivComercio: strIND_ATIV := '2'; indAtivoFincanceira: strIND_ATIV := '3'; indAtivoImobiliaria: strIND_ATIV := '4'; indAtivoOutros: strIND_ATIV := '9'; end; if (TIPO_ESCRIT = tpEscrRetificadora) then strNUM_REC_ANTERIOR := LFill( NUM_REC_ANTERIOR, 41 ) else strNUM_REC_ANTERIOR := ''; Check(funChecaCNPJ(CNPJ), '(0-0000) ENTIDADE: O CNPJ "%s" digitado é inválido!', [CNPJ]); Check(funChecaUF(UF), '(0-0000) ENTIDADE: A UF "%s" digitada é inválido!', [UF]); Check(funChecaMUN(COD_MUN), '(0-0000) ENTIDADE: O código do município "%s" digitado é inválido!', [IntToStr(COD_MUN)]); /// Add( LFill( '0000' ) + LFill( strCOD_VER ) + LFill( strTIPO_ESCRIT ) + LFill( strIND_SIT_ESP ) + LFill( strNUM_REC_ANTERIOR ) + LFill( DT_INI ) + LFill( DT_FIN ) + LFill( NOME ) + LFill( CNPJ ) + LFill( UF ) + LFill( COD_MUN, 7 ) + LFill( SUFRAMA, 9 ) + LFill( strIND_NAT_PJ ) + LFill( strIND_ATIV ) ); /// Registro0990.QTD_LIN_0 := Registro0990.QTD_LIN_0 + 1; end; end; end;[/code] Obrigado pelo report.
  3. Sim e Não. O que você copiou do arquivo ACBrEPCBlocos.pas na verdade está fazendo alusão aos valores ordinais do tipo TACBrCodIndIncTributaria. Isso é apenas um comentário e não uma definição: //Codigo indicador da incidencia tributária no período (0110) TACBrCodIndIncTributaria = ( codEscrOpIncNaoCumulativo, // 0 - Escrituração de operações com incidencia exclusivamente no regime não cumulativo codEscrOpIncCumulativo, // 1 - Escrituração de operações com incidencia exclusivamente no regime cumulativo codEscrOpIncAmbos // 2 - Escrituração de operações com incidencia nos regimes cumulativo e não cumulativo ); [/code] Em outras palavras, o valor ordinal de [b]codEscrOpIncNaoCumulativo [/b]é zero. Mas quando o registro [b]0110[/b] vai ser escrito no arquivo texto, ele recebe o valor definido na procedure [b]TBloco_0.WriteRegistro0110[/b] do arquivo [u]ACBrEPCBloco_0_Class.pas[/u] por volta da linha 450. Veja: [code] case COD_INC_TRIB of codEscrOpIncNaoCumulativo: strCOD_INC_TRIB := '1'; codEscrOpIncCumulativo: strCOD_INC_TRIB := '2'; codEscrOpIncAmbos: strCOD_INC_TRIB := '3'; end; Certamente o que lhe confundiu foi que nos outros tipos declarados no arquivo ACBrEPCBlocos.pas os valores nos comentários não são os ordinais e sim os valores no registro final.
  4. Se preocupa não Dante. Relendo agora, acho que minha resposta ficou com um tom um pouco rude, mas sinceramente, não era essa intenção. Era mais um lembrete mesmo...
  5. Seu fonte está desatualizado. Esse erro já foi corrigido há vários dias. Eu sugiro sempre usar o pesquisar do fórum antes de postar um bug. Nesse caso, se você fizer uma busca por "C100" ou por IND_FRT, vai encontrar.
  6. Veja: viewtopic.php?f=5&t=2819&p=12908&hilit=acbrbombas#p12908 Houve até um usuário que ofereceu uma recompensa pelo início do projeto, mas não sei em que pé ficou. Veja: viewtopic.php?f=17&t=2500&p=19558&hilit=acbrbombas#p19558
  7. Exceto no caso do parágrafo único:
  8. Não. Você só não precisa informar o C170 em caso de notas canceladas, denegadas ou inutilizadas. Veja:
  9. Tentou fazer no DEMO?
  10. Não sei o porquê, mas não tinha visto essa mensagem... Bem, você não entendeu o método errado não. É isso mesmo. Achei que você queria retornar o valor do tipo e não o valor do campo SPED. Na verdade, no momento penso que a melhor opção pra armazenar esse tipo de campo é armazenando a string do tipo (ex. stpisValorAliquotaNormal). Isso impede o problema de quando o SPED muda os valores por ventura de uma nova versão, como já aconteceu com alguns campos.
  11. Ederson, Correto. Muito obrigado. Só para futuras referências, o erro dos registros G110, G125 e G126 estava relacionado à correção do erro do seguinte tópico Bloco E Registro E116 não gera.
  12. Você não precisa fazer add de nada disso. Já estão lá no código. Veja: interface uses ACBrBase, ACBrUtil, {Units da ACBr} SysUtils , Classes; (.....) implementation {$IFDEF COMPILER6_UP} uses Variants , Math, StrUtils;[/code] EDIT: Será que o seu Delphi não está identificando a diretiva de compilação corretamente?
  13. Olá Thiago, Muito obrigado. Você tem razão. Já corrigi. Revisão 3196.
  14. Você deve seguir o modo que o Guia Prático informar. O PVA é usado para garantir que está fazendo igual ao Guia Prático pede, principalmente em pontos ambíguos. Mas acontece de o PVA estar desatualizado. Pelo menos foi o que entendi...
  15. Que tutorial?
  16. Faz um revert nesse arquivo ACBrValidador.pas
  17. Olá, Muito obrigado. Já está disponível na revisão 3192. Favor testar.
  18. Oi Regys, Fiquei um pouco confuso. Posso usar só o método IdentificaPAF ou preciso mesmo testar se o ECF é MFD?
  19. Não. Você por acaso notou que o guia prático o registro C170 diz que esses campos devem ter 4 casas Decimais? Você tentou informar só uma das alíquotas? Veja novamente a mensagem de erro: "É obrigatório informar a alíquota em reais ou a alíquota em percentual".
  20. Não está não. É isso mesmo. Que função você usou para tentar pegar a Data do Soft Básico?
  21. Olá, Desde que o Delphi incluiu RTTI, dá pra fazer isso usando os métodos GetEnumName e GetEnumValue. Não sei se funciona no Lazarus... Mas é algo como: uses TypeInfo //...... var aTACBrSituacaoTribPIS : TACBrSituacaoTribPIS; campodoBD: string; begin //imagine que campodoBD é o campo do BD... então salvar seria como campodoBD := GetEnumName(TypeInfo(TACBrSituacaoTribPIS), integer(stpisValorAliquotaNormal)) ; //imagine que aTACBrSituacaoTribPIS é o campo do componte que você está lendo do BD. Pra simplificar vou usar a mesma variável campodoBD aTACBrSituacaoTribPIS := TACBrSituacaoTribPIS(GetEnumValue(TypeInfo(TACBrSituacaoTribPIS), campodoBD); // Mas poderia ser o abaixo // aTACBrSituacaoTribPIS := TACBrSituacaoTribPIS(GetEnumValue(TypeInfo(TACBrSituacaoTribPIS), 'stpisValorAliquotaNormal'); [/code] Como não sei se o Lazarus faz isso, talvez seja uma boa ideia implementar outros métodos.
  22. Não. No código mostrado, você só vai tirar do M600. Vou explicar o motivo. Você pode observar no Guia Prático que o M600 tem ocorrência 1. Então o componente já cria uma instância automaticamente e você só precisa chamar a instância criada por meio do RegistroM600. Agora note que o Registro M610 no Guia Prático tem ocorrência 1:N, ou seja, podem aparecer vários M610. Como não tem como o ACBr saber quantos vão ser criados, você precisa criar cada um dos registros, usando pra isso RegistroM610new. Então, a princípio, toda vez que o registro tiver ocorrência 1, você não usa o "new". Caso contrário você vai ter que usar o new. Espero que tenha ajudado.
  23. Não sei se entendi bem sua dúvida. Mas você tentou alterar o gerenciador atual no ACBrTEFD? ACBrTEFD1.GPAtual := gpHiperTef; ACBrTEFD1.CRT;[/code]
  24. Olá, eu não estou usando o ACBrNFSe no momento. Mas você usa o TortoiseSVN para baixar os códigos? Você pode fazer um Diff dos arquivos alterados e verificar quais alterações foram feitas. É mais ou menos assim: 1) Vá para pasta do ACBr no seu computador. Clique com o botão direito e selecione TortoiseSVN->Show Log; 2) Veja qual das revisões listadas alterou algum arquivo do ACBrNFSe. 3) Ao fazer dois cliques no arquivo, você vai abrir uma janela mostrando as alterações feitas naquela revisão 4) Repita os passos 2 e 3 até encontrar a alteração.
  25. Encontrei o erro. Veja: O segundo campo deveria ser ALIQ_COFINS_QUANT: with RegistroM600 do begin {02} VL_TOT_CONT_NC_PER := StrToCurr(FormatCurr('#####0.00',(vlBcCofins*aliqCofins)/100)); {03} if vlcredNC =0 then VL_TOT_CRED_DESC := 0 else VL_TOT_CRED_DESC := vlcredNC; {04} VL_TOT_CRED_DESC_ANT := 0; {05} VL_TOT_CONT_NC_DEV := StrToCurr(FormatCurr('#####0.00',(vlBcCofins*aliqCofins)/100))-vlcredNC; {06} VL_RET_NC := 0; {07} VL_OUT_DED_NC := 0; {08} VL_CONT_NC_REC := StrToCurr(FormatCurr('#####0.00',(vlBcCofins*aliqCofins)/100))-vlcredNC; {09} VL_TOT_CONT_CUM_PER := 0; {10} VL_RET_CUM := 0; {11} VL_OUT_DED_CUM := 0; {12} VL_CONT_CUM_REC := 0; {13} VL_TOT_CONT_REC := StrToCurr(FormatCurr('#####0.00',(vlBcCofins*aliqCofins)/100))-vlcredNC; with RegistroM610New do begin {02} COD_CONT := ccNaoAcumAliqBasica; {03} VL_REC_BRT := vlBC; {04} VL_BC_CONT := vlBcCofins; {05} ALIQ_COFINS := aliqCofins; {06} QUANT_BC_COFINS := 0; {07} ALIQ_COFINS_QUANT := 0; {08} VL_CONT_APUR := StrToCurr(FormatCurr('#####0.00',(vlBcCofins*aliqCofins)/100)); {09} VL_AJUS_ACRES := 0; {10} VL_AJUS_REDUC := 0; {11} VL_CONT_DIFER := 0; {12} VL_CONT_DIFER_ANT:= 0; {13} VL_CONT_PER := StrToCurr(FormatCurr('#####0.00',(vlBcCofins*aliqCofins)/100)); end; end;[/code] Observe também que o registro M600 não é chamado pelo método RegistroM600New, pois ele é único.
×
×
  • 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.