Ir para conteúdo
  • Cadastre-se

Data Lider

Membros
  • Total de ítens

    88
  • Registro em

  • Última visita

Tudo que Data Lider postou

  1. Prezado, ACBrSpedUtils esse arquivo em nenhum momento é mencionado nas uses do projeto de importação, lembrando que o projeto de importação está para ser adicionado ainda na acbr, claro que isso não impede você de utilizar, tem como você ser mais específico quando a mensagem de erro ? Acabei de fazer uma pesquisa minuciosa aqui na minha máquina, esse arquivo não existe na minha pasta de códigos fontes, como também não existe na pasta do projeto ACBr.
  2. Na verdade, não tem, eu criei uma aplicação de teste, que gerava apenas o bloco F525, ai todos os campos strings eu coloquei mais de 200 caracteres, ai como estava com o manual aberto, acabei inserindo como no manual. Mas por exemplo, o arquivo ACBrEPCBloco_C_Class.pas na linha 868 referente ao procedimento WRITE do registro C010 no campo cnpj consta com o mesmo 14 de tamanho. Aproveitei a deixa e acertei. .
  3. Sim, eu verifiquei e realmente as conversões dos tipos não foram enviadas, vou tentar explicar os motivos. Algumas funções que existem ACBrEPCBlocos fazem a conversão do tipo "TACBrX" para string, porém não existe a função inversa, que converte string para "TACBrX". Algumas funções são tratadas como índice durante a conversão, porém quando é realizada a leitura diretamente do arquivo texto, e tento converter para a classe "TACBrX" a informação vem com um índice incorreto. Agora, como exemplo para o item 2º temos o seguinte código: var Tipo: TACBrIndNatPJ; Tipo2: TACBrIndNatPJ; const IndNat = '04'; //Sociedade Cooperativa Participante SCP begin Tipo := StrToIndNatPJ(IndNat); //Retorno: Geral participante de SCP (03) Tipo2 := StrToIndNatPJImporta(IndNat); // Retorno: Sociedade Cooperativa Participante SCP (04) end; A função StrToIndNatPJImporta é uma do conjunto novo de funções de conversões que foram criadas, nem todas funções estão preparadas para trazer a informação do arquivo texto. Set de funções novas para as situações acima: function StrToIndCodIncidencia(const AValue: string): TACBrIndCodIncidencia; function StrToIndMov(const AValue: string): TACBrIndMov; function StrToNaturezaConta(const AValue: string): TACBrNaturezaConta; function StrToIndCTA(const AValue: string): TACBrIndCTA; function StrToOrigemProcesso(const AValue: string): TACBrOrigemProcesso; function StrToLocalExecServico(const AValue: string): TACBrLocalExecServico; function StrToIndEscrituracao(const AValue: string): TACBrIndEscrituracao; function StrToEmitente(const AValue: string): TACBrEmitente; function StrToDoctoImporta(const AValue: string): TACBrDoctoImporta; function StrToApuracaoIPI(const AValue: string): TACBrApuracaoIPI; function StrToNaturezaFrtContratado(const AValue: string): TACBrNaturezaFrtContratado; function StrToIndRec(const AValue: string): TACBrIndRec; function StrToIndTpOperacaoReceita(const AValue: string): TACBrIndTpOperacaoReceita; function StrToInd_Rec(const AValue: string):TACBrInd_Rec; function StrToIndNatRetFonte(const AValue: string):TACBrIndNatRetFonte; function StrToIndNatRec(const AValue: string):TACBrIndNatRec; function StrToIndOrigemDiversas(const AValue: string):TACBrIndOrigemDiversas; function StrToIndNatDeducao(const AValue: string):TACBrIndNatDeducao; function StrToCodCred(const AValue: string): TACBrCodCred; function StrToIndAJ(const AValue: string):TACBrIndAJ; function StrToCodAj(const AValue: string): TACBrCodAj; function StrToCodCont(const AValue: string): TACBrCodCont; function StrToIndTipCoop(const AValue: string): TACBrIndTipCoop; function StrToNatCredDesc(const AValue: string): TACBrNatCredDesc; function StrToIndCredOri(const AValue: string):TACBrIndCredOri; function StrToIndDescCred(const AValue: string):TACBrIndDescCred; function StrToIndNatPJImporta(const AValue: string): TACBrIndNatPJ; Talvez seja mais interessante remover elas desse arquivo, e adicionar em um novo arquivo no componente de importação, ou não, a decisão é de vocês.
  4. Acho que faltou somente a delimitação do tamanho dos campos, caso contrário irá dar rejeição pelo validador.
  5. A correção foi basicamente alterar o tipo do campo FNUM_DOC no bloco F525. (ACBrPCBloco_F.pas) e o procedimento WriteRegistroF525 no bloco ACBrEPCBloco_F_Class. Mas foi falha minha não mencionar que o arquivo anexado, contem outras alterações (aquelas presentes no componente de importação que vocês irão subir futuramente). Estarei postando diretamente para nós não tenhamos que reverter. procedure TBloco_F.WriteRegistroF525(RegF010: TRegistroF010); var intFor : integer; strIND_REC : AnsiString; begin //(*) Os registros referentes à escrituração do PIS/Pasep e da Cofins das pessoas jurídicas sujeitas ao regime de tributação //com base no lucro presumido, aplicável para os fatos geradores a ocorrer a partir de 01 de janeiro de 2012, serão //disponibilizados pelo Programa Validador e Assinador (PVA) da EFD-PIS/Cofins, versão 1.05, com previsão de //disponibilização pela Receita Federal em janeiro/2012. if DT_INI >= EncodeDate(2012,01,01) then begin if Assigned(RegF010.RegistroF525) then begin for intFor := 0 to RegF010.RegistroF525.Count - 1 do begin with RegF010.RegistroF525.Items[intFor] do begin case IND_REC of crCliente : strIND_REC:='01'; crAdministradora : strIND_REC:='02'; crTituloDeCredito : strIND_REC:='03'; crDocumentoFiscal : strIND_REC:='04'; crItemVendido : strIND_REC:='05'; crOutros : strIND_REC:='99'; end; Add( LFill('F525') + LFill( VL_REC,0,2 ) + LFill( strIND_REC ) + LFill( CNPJ_CPF, 14) + LFill( NUM_DOC, 60) + LFill( COD_ITEM, 60) + LFill( VL_REC_DET,0,2 ) + LFill( CstPisToStr(CST_PIS) ) + LFill( CstCofinsToStr(CST_COFINS)) + LFill( INFO_COMPL) + LFill( COD_CTA, 60) ) ; end; /// RegistroF990.QTD_LIN_F := RegistroF990.QTD_LIN_F + 1; end; /// Variavél para armazenar a quantidade de registro do tipo. FRegistroF525Count := FRegistroF525Count + RegF010.RegistroF525.Count; end; end; end; TRegistroF525 = class private FVL_REC : Currency; FIND_REC : TACBrIndicadorDaComposicaoDaReceitaRecebida; FCNPJ_CPF : string; FNUM_DOC : string; FCOD_ITEM : string; FVL_REC_DET : Currency; FCST_PIS : TACBrCstPis; FCST_COFINS : TACBrSituacaoTribCOFINS; FINFO_COMPL : string; FCOD_CTA : string; public property VL_REC : Currency read FVL_REC write FVL_REC ; property IND_REC : TACBrInd_Rec read FIND_REC write FIND_REC ; property CNPJ_CPF : string read FCNPJ_CPF write FCNPJ_CPF ; property NUM_DOC : string read FNUM_DOC write FNUM_DOC ; property COD_ITEM : string read FCOD_ITEM write FCOD_ITEM ; property VL_REC_DET : Currency read FVL_REC_DET write FVL_REC_DET ; property CST_PIS : TACBrCstPis read FCST_PIS write FCST_PIS ; property CST_COFINS : TACBrCstCofins read FCST_COFINS write FCST_COFINS ; property INFO_COMPL : string read FINFO_COMPL write FINFO_COMPL ; property COD_CTA : string read FCOD_CTA write FCOD_CTA ; end;
  6. Nós realizamos a correção informada acima, segue os arquivos em anexo. ACBrEPCBloco_F.pas ACBrEPCBloco_F_Class.pas
  7. Se precisar de alguma alteração e não dispor de tempo, estamos a disposição.
  8. Prezados, gostaria de pedir a ajuda de vocês, poderiam encaminhar algum arquivo do SPED Contribuições que utilizem blocos menos usados, ou de situações muito específicas, o arquivo será utilizado para o teste de consistência de alguns registros. Quando as informações dos clientes, acredito que apenas o bloco de identificação da empresa (Reg0100) e contador (Reg0140) e todos os registros "?010" que identifica o CNPJ da empresa seja necessário alterar, caso isso seja um problema para quem tiver o arquivo. O teste é realizado da seguinte forma, importamos o arquivo, depois pedimos para o componente da ACBr gerar novamente o arquivo, então com o aplicativo "TortoiseMerge.exe" (Esse aplicativo faz parte da instalação do TortoiseSVN) verificamos se houve diferença significativa, assim identificando qualquer erro no código de importação.
  9. Adicionado anexo com os blocos C8?? e F509, F519, F559, F569 todos sem o procedimento Write.
  10. Prezados, estamos finalizando o código para importação do arquivo do SPED Contribuições para o componente da ACBr, na medida do possível estamos tentando seguir o padrão, mas é claro que algumas adaptações sejam necessárias, além dos testes em outras versões e no Lazarus, estamos abrindo o post para estar enviando futuramente e para informar e tirar algumas dúvidas nossas, além de evitar que alguém inicie esse trabalho agora já que estamos realizado. o arquivo ACBrEPCBloco_C e *_Class receberam os registros 800,810,820,830,860,870,880,890 para que a importação já fique atualizada com o novo padrão (o comando Write não foi elaborado). o arquivo ACBrEPCBlocos.pas recebeu até agora 13 novas funções de conversão de string para outro formato. O motivo do componente é a integração com outros filiais utilizando o componente do SPED PIS COFINS da ACBr, e a possibilidade de somar blocos M etc... sem muito esforço. Aproveitando o tópico gostaria de verificar se esses registros não são necessários pois não encontrei no bloco F da ACBr: F559, F519, F509, F569. Obrigado. ToDoList: Implementar base da biblioteca Implementar rotina de leitura do arquivo Implementar Bloco 0 Implementar Bloco A Adicionar Blocos C8XX na ACBr (sem write) Implementar Bloco C Implementar Bloco D Adicionar Blocos FXXX9 na ACBr (sem write) Implementar Bloco F Implementar Bloco I Implementar Bloco M Implementar Bloco P Implementar Bloco 1 Adicionar evento para leitura das colunas Adicionar evento para leitura das linhas Gerar estrutura do componente Transferir código para Lazarus e testar compatibilidade. Updates 24-02-2015 - Anexado ao tópico ACBrSPEDPisCofins_24-02-2015_1.Zz - Neste arquivo consta os novos blocos adicionados no C e F como mencionado anteriormente que estavam faltando, porém o procedimento Write não foi criado. 24-02-2015 - Adicionado tarefas pendentes para finalizar componente. 24-02-2015 - Finalizado Bloco M 24-02-2015 - Finalizado Blocos P e 1 24-02-2015 - [Corrigido] Registro 0000 o campo IND_NAT_PJ não deve ser um campo obrigatório, nos arquivos de teste foi identificado essa diferença depois de importado. 24-02-2015 - [Corrigido] Registro 0100 o campo FAX quando preenchido em branco, apresenta valor "0000000000" em vez de "Vazio". 24-02-2015 - [Corrigido] Campo ALIQ_ICMS no Registro 0200 deve ser do tipo "Variant", segundo o manual o campo não deve ser preenchido quando o cadastro do produto for por gênero (ativo imobilizado, por exemplo). 24-02-2015 - Adicionado arquivo com todas as implementações referente ao componente já existente ACBrSpedPisCofins, pronto para analisar e subir (ACBrSPEDPisCofins_24-02-2015_2.7z) 24-02-2015 21:55 - Adicionado evento para interceptar troca de linhas e o processamento de cada coluna, podendo esses valores serem interceptados e alterados antes de serem adicionados no componente ACBrSPEDPisCofins. 25-02-2015 - Componente finalizado (ACBRSpedPCImportar.7z). Arquivo disponibilizado, porém é necessário o arquivo _2 anteriormente enviado. ATENÇÃO ! Não baixe mais esses arquivos, o componente já foi finalizado, subido no repositório do projeto ACBr, além de já ter sofrido alteração e correções como mencionado nas respostas abaixo. ACBrSPEDPisCofins_24-02-2015_2.7z ACBRSpedPCImportar.7z
×
×
  • 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.