PRG do arquivo TXT da EFD
Moderador: Moderadores
-
JUDIVAN CONTABIL
- Usuário Nível 2

- Mensagens: 55
- Registrado em: 20 Mai 2011 07:42
- Localização: IMACULADA-PB
PRG do arquivo TXT da EFD
Estou desenvolvendo o prg do arquivo txt da efd em clipper 5.2, estou com dificuldades, gostaria de algumas dicas para concluir o prg.
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
PRG DO ARQUIVO TXT DA EFD
Olá!
Poderia ser mais claro?
Quais dificuldades está tendo? Quais dicas precisa?
Informe detalhes para que os colegas possam analisar e propor soluções. Use o recurso de busca do fórum.
Poderia ser mais claro?
Quais dificuldades está tendo? Quais dicas precisa?
Informe detalhes para que os colegas possam analisar e propor soluções. Use o recurso de busca do fórum.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
JUDIVAN CONTABIL
- Usuário Nível 2

- Mensagens: 55
- Registrado em: 20 Mai 2011 07:42
- Localização: IMACULADA-PB
PRG DO ARQUIVO TXT DA EFD
Estou desenvolvendo o prg da SEFD, do arquivo txt, em clipper 5.2, estou com algumas dificuldades e gostaria de ajuda dos colegas: as duvidas são:
o exemplo do arquivo txt é mais ou menos assim:
|0000|204|0|01052011|31052011|ARMSTRONG BRASIL EQUIPAMENTOS IND.LTDA|00258807000129||SP|206084839119|3550308|||B|0|1
|0001|0|
|0005|ARMSTRONG BRASIL EQUIPAMENTOS IND.LTDA|42810000|R.BENZENO|S/N||COPEC||||
|0100|MARCIA APARECIDA|38558505853|4431694||04369000|BRIGADEIRO TOBIAS|3333||Paia Grande|31776764 |||3550308|
|0150|3147F|CONFEROL COMERCIAL DE FERRAMENTAS E PRODUTOS INDUSTRIAIS LTDA|01058|02435456000100|||2927408||RUA BARAO DE COTEGIPE, N. 169||CALCADA|CALCADA|
|0190|un|Unidade|
|0200|AD42900001|Segurança e sinalização - misc.|||un|99|00000000||00||17|
|0400|E04.09|USO OU CONSUMO|
|0460|252486|VL IPI:19,07|
|0990|10|
o registro 0990 refere-se a soma dos arquivos acima, existe a dificuldade como fazer esta soma, tabem colocar essa | que tem nos registgros do efd.
continuando o exemplo, vem os totais abaixo:
|1990|3|
|9001|0|
|9900|0000|1|
|9900|0001|1|
|9900|0005|1|
|9900|0100|1|
|9900|0150|1|
|9900|0190|1|
|9900|0200|1|
|9900|0400|1|
|9900|0460|1|
|9900|0990|1|
|9900|C001|1|
|9900|C100|1|
|9900|C120|1|
|9900|C140|1|
|9900|C141|2|
|9900|C170|2|
|9900|C190|1|
|9900|C195|1|
|9900|C990|1|
|9900|D001|1|
|9900|D990|1|
|9900|E001|1|
|9900|E100|1|
|9900|E110|1|
|9900|E111|2|
|9900|E500|1|
|9900|E510|57|
|9900|E520|1|
|9900|E990|1|
|9900|H001|1|
|9900|H005|1|
|9900|H010|1|
|9900|H990|1|
|9900|1001|1|
|9900|1100|1|
|9900|1990|1|
|9900|9001|1|
|9900|9900|40|
|9900|9990|1|
|9900|9999|1|
|9990|43|
|9999|138|
que é totlizando os registros, essas sao as duvidas.
o exemplo do arquivo txt é mais ou menos assim:
|0000|204|0|01052011|31052011|ARMSTRONG BRASIL EQUIPAMENTOS IND.LTDA|00258807000129||SP|206084839119|3550308|||B|0|1
|0001|0|
|0005|ARMSTRONG BRASIL EQUIPAMENTOS IND.LTDA|42810000|R.BENZENO|S/N||COPEC||||
|0100|MARCIA APARECIDA|38558505853|4431694||04369000|BRIGADEIRO TOBIAS|3333||Paia Grande|31776764 |||3550308|
|0150|3147F|CONFEROL COMERCIAL DE FERRAMENTAS E PRODUTOS INDUSTRIAIS LTDA|01058|02435456000100|||2927408||RUA BARAO DE COTEGIPE, N. 169||CALCADA|CALCADA|
|0190|un|Unidade|
|0200|AD42900001|Segurança e sinalização - misc.|||un|99|00000000||00||17|
|0400|E04.09|USO OU CONSUMO|
|0460|252486|VL IPI:19,07|
|0990|10|
o registro 0990 refere-se a soma dos arquivos acima, existe a dificuldade como fazer esta soma, tabem colocar essa | que tem nos registgros do efd.
continuando o exemplo, vem os totais abaixo:
|1990|3|
|9001|0|
|9900|0000|1|
|9900|0001|1|
|9900|0005|1|
|9900|0100|1|
|9900|0150|1|
|9900|0190|1|
|9900|0200|1|
|9900|0400|1|
|9900|0460|1|
|9900|0990|1|
|9900|C001|1|
|9900|C100|1|
|9900|C120|1|
|9900|C140|1|
|9900|C141|2|
|9900|C170|2|
|9900|C190|1|
|9900|C195|1|
|9900|C990|1|
|9900|D001|1|
|9900|D990|1|
|9900|E001|1|
|9900|E100|1|
|9900|E110|1|
|9900|E111|2|
|9900|E500|1|
|9900|E510|57|
|9900|E520|1|
|9900|E990|1|
|9900|H001|1|
|9900|H005|1|
|9900|H010|1|
|9900|H990|1|
|9900|1001|1|
|9900|1100|1|
|9900|1990|1|
|9900|9001|1|
|9900|9900|40|
|9900|9990|1|
|9900|9999|1|
|9990|43|
|9999|138|
que é totlizando os registros, essas sao as duvidas.
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
PRG DO ARQUIVO TXT DA EFD
Olá!
Neste tipo de programa não tem muito segredo. É só seguir estritamente o que pede o layout do arquivo. Claro que você precisará ter na tua base de dados as informações que devem constar no arquivo texto que vai gerar.
Não sei qual é o teu nível de conhecimento na liguagem Clipper. O conhecimento necessário é basicamente concatenação de strings, conversão de tipos, busca em arquivos (DbSeek() e aritmética simples. Claro que conhecimento em programação será necesário.
Normalmente, neste tipo de programa, ocorrem os seguintes passos:
- abertura dos arquivos de entrada necessários
- abertura do arquivo texto de saída. Normalmente usa-se a função FCreate()
- criação do registro header (cabeçalho) do arquivo. A linha gerada tem que ficar no formato daquela que você colocou no teu exemplo:
- Geração do registro final (rodapé ou footer)
Veja um esboço:
Veja o tópico Exportar dados usando 2 ou mais dbf´s para um exemplo mais detalhado.
Boa sorte
Neste tipo de programa não tem muito segredo. É só seguir estritamente o que pede o layout do arquivo. Claro que você precisará ter na tua base de dados as informações que devem constar no arquivo texto que vai gerar.
Não sei qual é o teu nível de conhecimento na liguagem Clipper. O conhecimento necessário é basicamente concatenação de strings, conversão de tipos, busca em arquivos (DbSeek() e aritmética simples. Claro que conhecimento em programação será necesário.
Normalmente, neste tipo de programa, ocorrem os seguintes passos:
- abertura dos arquivos de entrada necessários
- abertura do arquivo texto de saída. Normalmente usa-se a função FCreate()
- criação do registro header (cabeçalho) do arquivo. A linha gerada tem que ficar no formato daquela que você colocou no teu exemplo:
- Loop na tabela principal e geração das linhas de detalhe"|0000|204|0|01052011|31052011|ARMSTRONG BRASIL EQUIPAMENTOS IND.LTDA|00258807000129||SP|206084839119|3550308|||B|0|1|0001|0|"
- Geração do registro final (rodapé ou footer)
Veja um esboço:
Código: Selecionar todos
PROCEDURE GeraTxt()
LOCAL nHandle, cLinha
// Abrir os arquivos de antrada
// abrir o arquivo de saida
If ( nHandle := FCreate( "Saida.Txt" ) ) <=0
Alert( "Falha na criacao do arquivo de saida" )
Else
// gerar o cabeçalho do arquivo
If GeraHeader()
// percorrer a tabela principal, gravando as linhas de dealhe do arquivo
WHILE Tabela->( ! Eof() )
// formatar linha
cLinha := GeraLinha()
// aqui você já terá que ir somando os campos que precisa
// gravar a linha
If ! Gravar( cLinha )
EXIT
Endif
ENDDO
// final do arquivo... gerar o registro footer (rodapé)
cLinha := cSep + "0990" + cSep
cLinha += demais campos
Endif
DbCloseAll()
If nHandle > 0
FClose( nHandle )
Endif
RETURN
//------------------------------------------------------------------------------
STATIC FUNCTION GeraHeader()
LOCAL cString, lRet
// inicializa a string com o separador de campos conforme o teu layout
cString := cSep
// daqui em diante, você terá que ir acrescentando os demais campos, um a um e o separador
// tem que ver no manual o que tem que gravar em cada campo.
// Lembre-se que o arquivo de saída é texto. Se o campo do teu arquivo é numérico ou data,
// precisará ser convertido para caracter. Use as funções Transform(), Str(), DtoS() confome necessário
cString += "0000" + cSep
cString += "204" + cSep
lRet := Gravar()
RETURN lRet
//------------------------------------------------------------------------------
STATIC FUNCTION GeraLinha()
LOCAL cString
// comandos para formatar uma linha
RETURN cString
//------------------------------------------------------------------------------
STATIC FUNCTION Gravar( cString )
// gravar uma linha no arquivo texto
LOCAL lRet
// comandos para gravar uma linha no txt
If ! lRet
Alert( "Falha de gravação..." )
Endif
RETURN lRet
//------------------------------------------------------------------------------Veja o tópico Exportar dados usando 2 ou mais dbf´s para um exemplo mais detalhado.
Boa sorte
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
JUDIVAN CONTABIL
- Usuário Nível 2

- Mensagens: 55
- Registrado em: 20 Mai 2011 07:42
- Localização: IMACULADA-PB
PRG do arquivo TXT da EFD
Olá
Bom dia
desculpe a existencia, montar este arquivo, achado complicado, gostaria de ajuda, abaixo as tabelas que eu uso e o arquivo txt da efd, mans ou menos como deve ficar.
********************************************
para formar esse arquivo txt:
|0000|004|0|01042011|30042011|GENIVAL FRANCISCO DE OLIVEIRA|11453139000107||PB|161145795|2500106|||A|1|
|0001|0|
|0005|GENIVAL FRANCISCO DE OLIVEIRA|58748000|R JOSE BARBOSA|23||CENTRO|0083348210||judivanc ... uol.com.br|
|0100|FRANCISCO JUDIVAN RAMALHO FERREIRA|49179250459|PB004267O7||58748000|RUA VEREADOR ROLDAO LOPES FERNANDES|09||CENTRO|0083348210||judiva ... uol.com.br|2500106|
|0150|01396747000173|CASA NORTE LTDA||08713513000828||161505945|||||||
|0150|01396747000173|CASA NORTE LTDA||08713513000828||161505945|||||||
|0190|01|unidade|
|0990|8|
|C001|1|
|C990|2|
|D001|1|
|D990|2|
|E001|1|
|E990|2|
|G001|1|
|G990|2|
|H001|1|
|H990|2|
|1001|1|
|1990|2|
|9001|0|
|9900|0000|1|
|9900|0001|1|
|9900|0005|1|
|9900|0100|1|
|9900|0150|2|
|9900|0190|1|
|9900|0990|1|
|9900|C001|1|
|9900|C990|1|
|9900|D001|1|
|9900|D990|1|
|9900|E001|1|
|9900|E990|1|
|9900|G001|1|
|9900|G990|1|
|9900|H001|1|
|9900|H990|1|
|9900|1001|1|
|9900|1990|1|
|9900|9001|1|
|9900|9900|23|
|9900|9990|1|
|9900|9999|1|
|9990|26|
|9999|46|
Agradeço pela ajuda.
Bom dia
desculpe a existencia, montar este arquivo, achado complicado, gostaria de ajuda, abaixo as tabelas que eu uso e o arquivo txt da efd, mans ou menos como deve ficar.
Código: Selecionar todos
SELECT CONFIG
vreg:="0000"
vcod_ver:=cod_ver
vcod_fin:=cod_fin
vDT_INI:=vDataI
vDT_FIN:=VdataF
vNOME:=RAZAO
vCNPJJ:=STRTRAN(CGC,".","")
vCNPJJ:=STRTRAN(vCNPJJ,"/","")
vCNPJJ:=STRTRAN(vCNPJJ,"-","")
vCPF:="0"
vUF:=UF
vINSCESTA:=STRTRAN(IE,".","")
vINSCESTA:=STRTRAN(vINSCESTA,"/","")
vINSCESTA:=STRTRAN(vINSCESTA,"-","")
vCOD_MUN:=COD_MUNI
vIM:="|" // INSCRICAO MUNICIPAL DA ENTIDADE
vSUFRAMA:="|" // INSCRICAO DA ENTIDADE NA SUFRAMA
vIND_PERFIL:=IND_PERFIL // Perfil de apresentacao do arquivo fiscal, A-Perfil A;B-perfil B; C-perfil C
vIND_ATIV:=IND_ATIV // Indicador tipo de atividade: 0-industrial ou equiparado a industrial e 1-outros
SELECT REG0000
IF LASTREC()=0
APPEND BLANK
ENDIF
REPL REG WITH vREG,;
COD_VER WITH vCOD_VER,;
COD_FIN WITH vCOD_FIN,;
DT_INI WITH vDT_INI,;
DT_FIN WITH vDT_FIN,;
NOME WITH vNOME,;
CNPJJ WITH vCNPJJ,;
CPF WITH vCPF,;
UF WITH vUF,;
INSCESTA WITH vINSCESTA,;
COD_MUN WITH vCOD_MUN,;
IM WITH vIM,;
SUFRAMA WITH vSUFRAMA,;
IND_PERFIL WITH vIND_PERFIL,;
IND_ATIV WITH vIND_ATIV
SELECT CONFIG
SKIP
ENDDO
********************************************
SELE CONFIG
vREG0001:="0001"
vIND_MOV:="0"
SELE REG0001
IF LASTREC()=0
APPEND BLANK
ENDIF
REPL REG0001 WITH vREG0001,;
IND_MOV WITH vIND_MOV
SELECT CONFIG
SKIP
ENDDO
********************************************
SELE CONFIG
vREG0005:="0005"
vFANTASIA:=RAZAO
vCEP:=STRTRAN(CEP,".","")
vCEP:=STRTRAN(vCEP,"/","")
vCEP:=STRTRAN(vCEP,"-","")
vEND:=ENDERECO
vNUM:=NUMERO
vCOMPL:=COMPLEM
vBAIRRO:=BAIRRO
vFONE:=FONE
vFAX:="|"
vEMAIL:=E_MAILS
SELE REG0005
IF LASTREC()=0
APPEND BLANK
ENDIF
REPL REG0005 WITH vREG0005,;
FANTASIA WITH vFANTASIA,;
CEP WITH vCEP,;
END WITH vEND,;
NUM WITH vNUM,;
COMPL WITH vCOMPL,;
BAIRRO WITH vBAIRRO,;
FONE WITH vFONE,;
FAX WITH vFAX,;
EMAIL WITH vEMAIL
SELECT CONFIG
SKIP
ENDDO
********************************************
SELE CONFIG
vREG:="0100"
vNOME:=NOME_CON
vCPF:=CPF_CGC
vCRC:=REG
vCNPJ:="|"
vCEP:=STRTRAN(CEP_CONT,".","")
vCEP:=STRTRAN(vCEP,"/","")
vCEP:=STRTRAN(vCEP,"-","")
vEND:=END_CONT
vNUM:=NUM_CONT
vCOMPL:=COMPL_CONT
vBAIRRO:=BAIRO_CONT
vFONE:=FONE
vFAX:="|"
vE_MAIL:=E_MAIL
vCOD_MUN:=COD_MUNI
SELE REG0100
IF LASTREC()=0
APPEND BLANK
ENDIF
REPL REG WITH vREG,;
NOME WITH vNOME,;
CPF WITH vCPF,;
CRC WITH vCRC,;
CNPJ WITH vCNPJ,;
CEP WITH vCEP,;
END WITH vEND,;
NUM WITH vNUM,;
COMPL WITH vCOMPL,;
BAIRRO WITH vBAIRRO,;
FONE WITH vFONE,;
FAX WITH vFAX,;
E_MAIL WITH vE_MAIL,;
COD_MUN WITH vCOD_MUN
SELECT CONFIG
SKIP
ENDDO
********************************************
SELECT ENTRADA
vTotreg0000+=1
vREG:="0150"
vCOD_PART:=STRTRAN(CNPJ_CPF,".","")
vCOD_PART:=STRTRAN(vCNPJ,"/","")
vCOD_PART:=STRTRAN(vCNPJ,"-","")
vNOME:=R_SOCIAL
vCOD_PAIS:="|"
vCNPJ:=STRTRAN(CNPJ_CPF,".","")
vCNPJ:=STRTRAN(vCNPJ,"/","")
vCNPJ:=STRTRAN(vCNPJ,"-","")
vCPF:="|"
vIE:=STRTRAN(INSC_EST,".","")
vCOD_MUN:="0000000"
vSUFRAMA:="|"
vEND:="|"
vNUM:="|"
vCOMPL:="|"
vBAIRRO:="|"
SELE REG0150
If (Adireg(0))
REPL REG WITH vREG,;
COD_PART WITH vCOD_PART,;
NOME WITH vNOME,;
COD_PAIS WITH vCOD_PAIS,;
CNPJ WITH vCNPJ,;
CPF WITH vCPF,;
IE WITH vIE,;
COD_MUN WITH vCOD_MUN,;
SUFRAMA WITH vSUFRAMA,;
END WITH vEND,;
NUM WITH vNUM,;
COMPL WITH vCOMPL,;
BAIRRO WITH vBAIRRO
SELECT ENTRADA
SKIP
Unlock
Endif
ENDDO
********************************************
SELECT CONFIG
vREG:="0190"
vUNID:="01"
vDESCR:="unidade"
SELE REG0190
If (Adireg(0))
REPL REG WITH vREG,;
UNID WITH vUNID,;
DESCR WITH vDESCR
SELECT CONFIG
SKIP
Endif
ENDDOpara formar esse arquivo txt:
|0000|004|0|01042011|30042011|GENIVAL FRANCISCO DE OLIVEIRA|11453139000107||PB|161145795|2500106|||A|1|
|0001|0|
|0005|GENIVAL FRANCISCO DE OLIVEIRA|58748000|R JOSE BARBOSA|23||CENTRO|0083348210||judivanc ... uol.com.br|
|0100|FRANCISCO JUDIVAN RAMALHO FERREIRA|49179250459|PB004267O7||58748000|RUA VEREADOR ROLDAO LOPES FERNANDES|09||CENTRO|0083348210||judiva ... uol.com.br|2500106|
|0150|01396747000173|CASA NORTE LTDA||08713513000828||161505945|||||||
|0150|01396747000173|CASA NORTE LTDA||08713513000828||161505945|||||||
|0190|01|unidade|
|0990|8|
|C001|1|
|C990|2|
|D001|1|
|D990|2|
|E001|1|
|E990|2|
|G001|1|
|G990|2|
|H001|1|
|H990|2|
|1001|1|
|1990|2|
|9001|0|
|9900|0000|1|
|9900|0001|1|
|9900|0005|1|
|9900|0100|1|
|9900|0150|2|
|9900|0190|1|
|9900|0990|1|
|9900|C001|1|
|9900|C990|1|
|9900|D001|1|
|9900|D990|1|
|9900|E001|1|
|9900|E990|1|
|9900|G001|1|
|9900|G990|1|
|9900|H001|1|
|9900|H990|1|
|9900|1001|1|
|9900|1990|1|
|9900|9001|1|
|9900|9900|23|
|9900|9990|1|
|9900|9999|1|
|9990|26|
|9999|46|
Agradeço pela ajuda.
Editado pela última vez por anacatacombs em 26 Mai 2011 08:25, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1