PRG do arquivo TXT da EFD
Enviado: 20 Mai 2011 16:42
Estou desenvolvendo o prg do arquivo txt da efd em clipper 5.2, estou com dificuldades, gostaria de algumas dicas para concluir o prg.
- 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|"
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
//------------------------------------------------------------------------------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
ENDDO