Texgit: problemas com length e Records opcionais

237 views
Skip to first unread message

Leandro Matioli

unread,
Feb 28, 2012, 11:53:57 AM2/28/12
to jrimum-c...@googlegroups.com
Olá pessoal! 

Comecei a usar o Texgit recentemente, mas estou com algumas dúvidas na sua utilização. Peço desculpas se as dúvidas já tiverem sido postadas em outro tópico, mas não consegui encontrar aqui...

Estou com 2 problemas. O primeiro é com o length que é preciso setar em cada tag Field. Eu não gostaria que ele preenchesse a quantidade de caracteres que faltam com espaço. Exemplo:

<Field name="teste" length="10"/>

Na hora que eu fosse escrevê-lo com o valor "abc", eu gostaria que ficasse "abc" no arquivo, e não "abc       ". Existe alguma maneira de fazer isso? A pergunta vale também para quando eu não quiser preencher o campo... eu gostaria que ele ficasse vazio "" e não como "          ".

A outra dúvida é com um Record opcional. Terei alguns records no meu arquivo que só serão escritos em certas condições, então eu preciso que eles só sejam escritos quando eu quiser. Se eu não criar o objeto dele, dá nullpointer na hora de escrever o arquivo. E se eu criá-lo vazio, tenho o problema do length citado acima (ele vai preencher com espaços em branco). Tenho também uma tag que já tem uma value setada... mas ela só deve ser escrita quando eu quiser ter esse record.

Exemplo:

                        <Record name="Registro0001">
<GroupOfFields>
<IdType name="id" value="0001" length="4" position="1" />
<Field name="teste0001" length="1" />
</GroupOfFields>
</Record>


Esse record deve constar por completo arquivo ou não... eu gostaria que não ficasse uma linha em branco quando ele não fosse escrito. É pra ele ser ignorado mesmo, e o próximo record ser escrito na linha dele.

Enfim, não sei se fui muito claro na minha explicação! :( Espero que seja possível entender minha dúvida.

Abraço e parabéns pelo projeto!

Gilmar P.S.L.

unread,
Mar 1, 2012, 8:37:00 AM3/1/12
to jrimum-c...@googlegroups.com
Olá Leandro, 

Desculpe pela demora, é o seguinte, ...

O texgit foi inicialmente concebido para trabalhar com arquivos bancários, e estes são fixed-width, ou melhor, de tamanho fixo. Então para preencher os campos apenas com os valores, portanto, sem os preenchedores, no momento não é possível.

Quanto ao record opcional,..., bom, não tenho certeza no momento, vou verificar e depois dou a resposta.

Mas para que tipo de arquivo vc está querendo usar?
Talvez consigamos desenvolver isso juntos.

--
Você recebeu esta mensagem porque está inscrito no Grupo "JRimum
Community" nos Grupos do Google.
Para postar neste grupo, envie um e-mail para
jrimum-c...@googlegroups.com
ANTES DE POSTAR... leia:
https://groups.google.com/d/topic/jrimum-community/ULU8QHHgaBs/discussion
Para cancelar a sua inscrição neste grupo, envie um e-mail para
jrimum-communi...@googlegroups.com
Para ver mais opções, visite este grupo em
http://groups.google.com/group/jrimum-community?hl=pt-BR?hl=pt-BR

Leandro Matioli

unread,
Mar 1, 2012, 8:58:59 AM3/1/12
to jrimum-c...@googlegroups.com
Opa! Que isso cara, não demorou não...

Então, o que estou desenvolvendo é o seguinte. Preciso gerar EFD's (Escrituração Fiscal Digital) para um software aqui onde trabalho. Um arquivo de EFD é um arquivo .txt com um layout definido. Pensei em usar o Texgit para gerar esse layout em xml e depois utilizá-lo sempre para a escrita desses arquivos.

Ex de um trecho de um arquivo de EFD:

|0000|001|0|01062008|30062008|ARMSTRONG BRASIL EQUIPAMENTOS IND.LTDA|00258807000129||SP|206084839119|3550308|||B|0|
|0001|0|
|0005|ARMSTRONG BRASIL EQUIPAMENTOS IND.LTDA|42810000|R.BENZENO|S/N||COPEC||||

O problema do fixed-width nem é tão grande assim porque daria pra eu tratar isso depois no arquivo gerado. 

O Record opcional eu também poderia tratar no arquivo gerado depois, removendo as linhas em branco nele (porque ele preencheria de acordo com o length dos atributos desse record). Eu perguntei porque seria mais elegante se o próprio layout já suportasse esse tratamento.

Enfim, não sei se essa é a melhor forma de fazer esses arquivos. Achei o texgit uma ferramenta muito boa e fácil de utilizar, por isso optei por ela. Mas talvez vocês conheçam outra possibilidade para atender essa minha necessidade!

Desde já, obrigado!
2012/2/28 Leandro Matioli <matioli...@gmail.com>

ANTES DE POSTAR... leia:
https://groups.google.com/d/topic/jrimum-community/ULU8QHHgaBs/discussion
Para cancelar a sua inscrição neste grupo, envie um e-mail para
2012/2/28 Leandro Matioli <matioli...@gmail.com>

ANTES DE POSTAR... leia:
https://groups.google.com/d/topic/jrimum-community/ULU8QHHgaBs/discussion
Para cancelar a sua inscrição neste grupo, envie um e-mail para

Gilmar P.S.L.

unread,
Mar 5, 2012, 12:08:08 PM3/5/12
to jrimum-c...@googlegroups.com
Olá Leandro,

Não sei qual a melhor forma de fazer o que vc quer com outra ferramenta.

Mas como texgit eu posso te ajudar..

Vc poderia escrever como vc acha que o layout xml seria e como  deveria sair o arquivo, a partir daí vemos se é fácil de implementar.

Pode ser?

2012/3/1 Leandro Matioli <matioli...@gmail.com>

ANTES DE POSTAR... leia:
https://groups.google.com/d/topic/jrimum-community/ULU8QHHgaBs/discussion
Para cancelar a sua inscrição neste grupo, envie um e-mail para

Renato Atilio

unread,
Mar 5, 2012, 12:28:31 PM3/5/12
to jrimum-c...@googlegroups.com
Olá,

Eu uso o Texgit para os CNABs pois são estruturas simples... para os EFDs (PIS/Cofins e ICMS/IPI) eu utilizo classes próprias, é uma porrada de registros em alguns blocos, acredito que manter tipagem de data, valor e até enum (em casos tipo "tipo de arquivo") seja necessário pra manter clareza do código.

Eu não vou voltar atrás na minha estrutura, mas estou falando isso para tentar manter legibilidade caso vocês utilizem o Texgit para arquivos fiscais, pois são arquivos que *começaram* a ser usados há pouco tempo e sofrerão mudanças, tendo que tomar cuidado pra não quebrar compatibilidade com código que já esteja feito.

Abs,
Renato.

2012/3/5 Gilmar P.S.L. <gilm...@gmail.com>

Leandro Matioli

unread,
Mar 6, 2012, 11:57:40 AM3/6/12
to jrimum-c...@googlegroups.com
Então Gilmar, pelo que vi aqui um xml que representaria uma EFD seria algo do tipo (essas são só as duas primeiras linhas do arquivo, tem vários outros Records ainda, hehe):

<Record name="Registro0000">
<GroupOfFields>
<IdType name="REG" value="0000" length="4" position="1" />
<Field name="COD_VER" length="3"/>
<Field name="COD_FIN" length="1" />
<Field name="DT_INI" length="8" />
<Field name="DT_FIN" length="8" />
<Field name="NOME" length="100" />
<Field name="CNPJ" length="14" />
<Field name="CPF" length="11" />
<Field name="UF" length="2" />
<Field name="IE" length="14" />
<Field name="COD_MUN" length="7" />
<Field name="IM" length="1"/>
<Field name="SUFRAMA" length="9" />
<Field name="IND_PERFIL" length="1" />
<Field name="IND_ATIV" length="1" />
</GroupOfFields>
</Record>
<Record name="Registro0001">
<GroupOfFields>
<IdType name="REG" value="0001" length="4" position="1" />
<Field name="IND_MOV" length="1" />
</GroupOfFields>
</Record>

E a saída no arquivo deveria ser assim:

|0000|005|0|01022012|24022012|DPZ Com|11729437550155||MG|55164678740002|3347203|||A|0|
|0001|0|

Um detalhe que não está representado no xml acima é que cada Field deve ser separado do outro com o caractere "|" (pipe). Eu não gostaria de criar fields com valor "|" entre cada field no xml pois acredito que poluiria demais o layout.

Os detalhes que a gente precisaria fazer são: 

* Ver essa questão do pipe "|" entre cada field.
* Se um field definido em um record não for preenchido, deixa o valor dele como "" (repare que no exemplo acima, existem alguns campos assim... eles saem no arquivo só com o pipe abrindo e fechando o field - ||);
* Tornar alguns campos de um record obrigatórios e outros não (por exemplo, o campo SUFRAMA acima não era obrigatório).
* Possibilitar que alguns Records sejam opcionais (existem alguns que só devem ser feitos se você preencheu outro record);
* Tem a questão do tamanho dos fields... No manual da EFD, existem tamanhos fixos, tamanhos livres e tamanhos até tal valor. Mas esse tipo de tratamento de várias possibilidades já seria algo a mais. Só acho importante tratar a questão dos espaços em branco.
* Tem campos que possuem apenas algumas possibilidades de valor. (Seria o caso de um enum, com o Renato comentou). Pode ser interessante o próprio layout suportar isso na hora que o objeto fosse montado...
* Existe também a possibilidade de colocarmos os tipos de cada valor, mas isso o texgit já suporta, certo?

Acho que é basicamente isso... Tenho um arquivo aqui que gerei um layout de EFD no modelo do Texgit (li de um arquivo excel e montei o xml). Ele só não está completo porque o arquivo excel não estava... e como o Renato comentou, esses arquivos fiscais estão sofrendo vários alterações. Se quiser ele pra dar uma olhada... Os lengths de cada field estão definidos com as possibilidades que disse acima (tamanho exato, variável, e livre).

Enfim, vamos conversando aqui pra ver se encontramos uma boa solução! :) 

Obrigado Gilmar e Renato.

JhonyStein

unread,
Mar 7, 2012, 11:27:32 AM3/7/12
to jrimum-c...@googlegroups.com
Boa tarde pessoa,

Sem querer me meter muito, mas já me metendo...
Acredito que para manter a compatibilidade e virar uma coisa padrão
dentro do Textgit, teríamos que ter 3 parâmetros indicando:
- separador: string que separaria os fields
- tamanho fixo: sim ou não
- delimitador de string: caracter que delimita string (algumas
exportações solicitam que vc adicione string delimitando por aspas (")

o local apropriado para isso acredito que seria o nodo Record do
leiaute pois deixaria bastante dinâmico para vc criar uns leiautes bem
malucos, dependendo da necessidade do programador, claro... ;-)

Em 6 de março de 2012 13:57, Leandro Matioli
<matioli...@gmail.com> escreveu:

> --
> Você recebeu esta mensagem porque está inscrito no Grupo "JRimum
> Community" nos Grupos do Google.
> Para postar neste grupo, envie um e-mail para
> jrimum-c...@googlegroups.com
> ANTES DE POSTAR... leia:
> https://groups.google.com/d/topic/jrimum-community/ULU8QHHgaBs/discussion
> Para cancelar a sua inscrição neste grupo, envie um e-mail para
> jrimum-communi...@googlegroups.com
> Para ver mais opções, visite este grupo em
> http://groups.google.com/group/jrimum-community?hl=pt-BR?hl=pt-BR

--
att,

Jhony!

Gilmar P.S.L.

unread,
Mar 8, 2012, 11:15:40 AM3/8/12
to jrimum-c...@googlegroups.com
Valeu a observação Renato.

Estou com isso em mente. O preocupação também tem que ser com a compatibilidade, principalmente, do pessoal que usa o CNAB.

Uma das formas de se fazer isso é com o atributo "version" que se encontra na tag Texgit.

Mas eu fiquei em dúvida, vc está falando da compatibilidade com o que existe hoje ou com o que virá a ser desenvolvido?

Atenciosamente
2012/3/5 Renato Atilio <rena...@gmail.com>

Gilmar P.S.L.

unread,
Mar 8, 2012, 11:26:06 AM3/8/12
to jrimum-c...@googlegroups.com
Lenandro e Johny,

Entendi o que vcs estão dizendo, vou fazer um fake layout para vcs darem uma olhada como fica.

Leandro, vc  tem como passar o arquivo que vc falou?

Johny, vc não tá se metendo não, tá é colaborando, valeu pela colaboração precisamos de mais colaborações para que a versão saia bem racionalizada.

É isso galera.

2012/3/7 JhonyStein <jhony...@gmail.com>

Leandro Matioli

unread,
Mar 9, 2012, 6:56:31 AM3/9/12
to jrimum-c...@googlegroups.com
Gilmar, está ai o arquivo. 

Esse foi um arquivo inicial que fiz lendo uma planilha excel, então existem várias coisas que não foram tratadas corretamente, por exemplo:

-> Campos que ficaram sem nome e Records vazios (Isso é erro no layout excel, e consequentemente passou para esse xml. Por favor, ignore coisas desse tipo)
-> Repare que no atributo length existem valores que são só números, números com * (008*) e valores que são apenas um hífen (-). Como estava fazendo apenas uma leitura para testes, não me preocupei em tratar essa legenda que o pessoal da EFD usa. Mas ai vai o significado com exemplos:
           60 = Tamanho do campo deve ser até 60
           008* = Tamanho do campo deve ser exatamente 8
           - = Tamanho não definido no layout

Eles não deixam muito claro essa questão do length no .pdf deles não. Só falam do asterisco, mas acredito que sejam esses os significados. Talvez o Renato posso esclarecer isso pra gente...

Lembrando que não consta nessa layout a marcação dos Records opcionais nem o separador de fields. Eu poderia ter adicionado nele a informação do tipo do campo (são 2 apenas: campo numérico e campo alfanumérico).

Acho que por enquanto é isso... qualquer dúvida, estou por aqui! :)
2012/3/7 JhonyStein <jhony...@gmail.com>

> ANTES DE POSTAR... leia:
> https://groups.google.com/d/topic/jrimum-community/ULU8QHHgaBs/discussion
> Para cancelar a sua inscrição neste grupo, envie um e-mail para

> Para ver mais opções, visite este grupo em
> http://groups.google.com/group/jrimum-community?hl=pt-BR?hl=pt-BR



--
att,

Jhony!

--
Você recebeu esta mensagem porque está inscrito no Grupo "JRimum
Community" nos Grupos do Google.
Para postar neste grupo, envie um e-mail para

ANTES DE POSTAR... leia:
https://groups.google.com/d/topic/jrimum-community/ULU8QHHgaBs/discussion
Para cancelar a sua inscrição neste grupo, envie um e-mail para
layoutEFD_PIS_COFINS.xml

Leandro Matioli

unread,
Mar 20, 2012, 11:58:24 AM3/20/12
to jrimum-c...@googlegroups.com
E ai Gilmar, como estão as coisas?

Imagino que você esteja ocupado com várias outras coisas, mas gostaria de saber se você deu uma olhada em algo no texgit, se precisa de alguma ajuda, ou se essas alterações por agora são inviáveis de serem feitas...

Abraço!

Gilmar P.S.L.

unread,
Mar 21, 2012, 9:20:57 AM3/21/12
to jrimum-c...@googlegroups.com
Olá Leandro,

Eu dei uma olhada sim, na semana passada, mas depois não pude olhar mais porque, literalmente não pude (fiz uma cirurgia no olho: https://twitter.com/#!/gilmatryx/status/180613440170242048/photo/1 :-)

Mas essa semana já posso retomar as atividades.

Bom pelo que vi semana passada, da para fazer sim, vou fazer aquela proposta que falei e aí te digo.

Muito bom contar com a sua colaboração e a de todos.

Valeu pessoal.
2012/3/20 Leandro Matioli <matioli...@gmail.com>

ANTES DE POSTAR... leia:
https://groups.google.com/d/topic/jrimum-community/ULU8QHHgaBs/discussion
Para cancelar a sua inscrição neste grupo, envie um e-mail para

Leandro Matioli

unread,
Mar 21, 2012, 9:31:47 AM3/21/12
to jrimum-c...@googlegroups.com
Eita, que beleza de foto! :D Hehe. "Literalmente não pude olhar mais" foi foda! :P

Fico no aguardo então, Gilmar! Precisando de qualquer coisa, estou por aqui.

Abraço e melhoras ai! :)

Leandro Matioli

unread,
May 15, 2012, 3:52:12 PM5/15/12
to jrimum-c...@googlegroups.com
E ai Gilmar, tudo beleza? 

Desculpa reviver o tópico assim, mas gostaria de saber se você chegou a olhar algo sobre as alterações que comentamos aqui. Não quero de maneira nenhuma soar chato ou como alguém que está cobrando algo, mas precisava saber sobre a situação pois agora o prazo deve apertar por aqui pra eu resolver essa questão da EFD. 

De qualquer maneira, volto a afirmar o quanto o projeto de vocês é interessante! Continuarei divulgando ele independente dessas alterações ocorrerem ou não! ;)

Abraço!

Gilmar P.S.L.

unread,
May 16, 2012, 4:37:52 PM5/16/12
to jrimum-c...@googlegroups.com
Valeu pela consideração leandro.

Para falar a verdade não tive como olhar não, passei por outro procedimento depois daquele e meu tempo ficou e condições ficaram complicados.

Mas vou olhar sim e te dou a resposta. Pode confiar.

2012/5/15 Leandro Matioli <matioli...@gmail.com>

ANTES DE POSTAR... leia:
https://groups.google.com/d/topic/jrimum-community/ULU8QHHgaBs/discussion
Para cancelar a sua inscrição neste grupo, envie um e-mail para
Reply all
Reply to author
Forward
0 new messages