Pra quem precisar de um caminho.
#INCLUDE "FIVEWIN.CH"
#include "FiveWin.ch"
#include "Utilprn.ch"
#INCLUDE "CORGET.CH"
#INCLUDE "CORES.CH"
#INCLUDE "TSBUTTON.CH"
#include "BTNGET.ch"
FUNCTION EFDFISCAL()
MEMVAR XDT,XDT2
STORE DATE() TO XDT,XDT2
STORE 0 TO VL_TOT_DEB,VL_AJ_DEBITOS,VL_TOT_AJ_DEBITOS,VL_ESTORNOS_CRED,VL_TOT_CREDITOS,VL_AJ_CREDITOS,VL_TOT_AJ_CREDITOS,VL_ESTORNOS_DEB,B0COD_VER
STORE 0 TO VL_SLD_CREDOR_ANT,VL_SLD_APURADO,VL_TOT_DED,VL_ICMS_RECOLHER,VL_SLD_CREDOR_TRANSPORTAR,DEB_ESP
Define Dialog oDlg From 0,0 To 600,700 Pixel Title "SPED - EFD-FISCAL" Style WS_CAPTION
oDlg:lHelpIcon:=.F.
@ 05,10 SAY oSAY VAR "PERÃODO DE APURAÇÃO" Of oDLg Size 200,40 PIXEL
@ 15,10 SAY oSAY VAR "PerÃodo Inicial" Of oDLg Size 200,40 PIXEL
@ 15,110 SAY oSAY VAR "PerÃodo Final" Of oDLg Size 200,40 PIXEL
@ 05,220 SAY oSAY VAR "VERSÃO DO ARQUIVO" Of oDLg Size 200,40 PIXEL
@ 15,50 BTNGET OSAY VAR XDT PICTURE "99/99/99" OF ODLG RESOURCE "CALENDARIO" Action CALEND(@XDT,OSAY) Size 50,10 PIXEL
@ 15,150 BTNGET OSAY2 VAR XDT2 PICTURE "99/99/99" OF ODLG RESOURCE "CALENDARIO" Action CALEND(@XDT2,OSAY2) Size 50,10 PIXEL
@ 15,220 GET OSAY VAR B0COD_VER PICTURE "999" OF ODLG Size 20,10 PIXEL
@ 30,10 SAY oSAY VAR "1-Valor Total dos Débitos Por SaÃdas **" Of oDLg Size 200,40 PIXEL
@ 30,150 GET OSAY VAR VL_TOT_DEB PICTURE "99999999.99" OF ODLG Size 50,10 PIXEL
@ 40,10 SAY oSAY VAR "2+Valor Total dos ajustes a débito" Of oDLg Size 200,40 PIXEL
@ 40,150 GET OSAY VAR VL_AJ_DEBITOS PICTURE "99999999.99" OF ODLG Size 50,10 PIXEL
@ 50,10 SAY oSAY VAR "3-Valor Total de 'Ajustes a débito'" Of oDLg Size 200,40 PIXEL
@ 50,150 GET OSAY VAR VL_TOT_AJ_DEBITOS PICTURE "99999999.99" OF ODLG Size 50,10 PIXEL
@ 60,10 SAY oSAY VAR "4+Valor Total de Ajustes 'Estornos de crédito'" Of oDLg Size 200,40 PIXEL
@ 60,150 GET OSAY VAR VL_ESTORNOS_CRED PICTURE "99999999.99" OF ODLG Size 50,10 PIXEL
@ 70,10 SAY oSAY VAR "5-Valor total dos créditos por ´Entradas'" Of oDLg Size 200,40 PIXEL
@ 70,150 GET OSAY VAR VL_TOT_CREDITOS PICTURE "99999999.99" OF ODLG Size 50,10 PIXEL
@ 80,10 SAY oSAY VAR "6-Valor total dos ajustes de crédito" Of oDLg Size 200,40 PIXEL
@ 80,150 GET OSAY VAR VL_AJ_CREDITOS PICTURE "99999999.99" OF ODLG Size 50,10 PIXEL
@ 90,10 SAY oSAY VAR "7-Valor total dos ajustes 'Estornos de débitos'" Of oDLg Size 200,40 PIXEL
@ 90,150 GET OSAY VAR VL_TOT_AJ_CREDITOS PICTURE "99999999.99" OF ODLG Size 50,10 PIXEL
@ 100,10 SAY oSAY VAR "8-Valor total de Ajustes “Estornos de Débitosâ€" Of oDLg Size 200,40 PIXEL
@ 100,150 GET OSAY VAR VL_ESTORNOS_DEB PICTURE "99999999.99" OF ODLG Size 50,10 PIXEL
@ 110,10 SAY oSAY VAR "9-Valor total de â€Saldo credor do perÃodo anteriorâ€" Of oDLg Size 200,40 PIXEL
@ 110,150 GET OSAY VAR VL_SLD_CREDOR_ANT PICTURE "99999999.99" OF ODLG Size 50,10 PIXEL
@ 120,10 SAY oSAY VAR "10-Valor do saldo devedor apurado **" Of oDLg Size 200,40 PIXEL
@ 120,150 GET OSAY VAR VL_SLD_APURADO PICTURE "99999999.99" OF ODLG Size 50,10 PIXEL
@ 130,10 SAY oSAY VAR "11-Valor total de â€Deduções†**" Of oDLg Size 200,40 PIXEL
@ 130,150 GET OSAY VAR VL_TOT_DED PICTURE "99999999.99" OF ODLG Size 50,10 PIXEL
@ 140,10 SAY oSAY VAR "12-Valor total de â€ICMS a recolher (11-12)†**" Of oDLg Size 200,40 PIXEL
@ 140,150 GET OSAY VAR VL_ICMS_RECOLHER PICTURE "99999999.99" OF ODLG Size 50,10 PIXEL
@ 150,10 SAY oSAY VAR "13-Valor total de â€Sdo credor a transp perÃodo seguinteâ€" Of oDLg Size 200,40 PIXEL
@ 150,150 GET OSAY VAR VL_SLD_CREDOR_TRANSPORTAR PICTURE "99999999.99" OF ODLG Size 50,10 PIXEL
@ 160,10 SAY oSAY VAR "14-Valores recolhidos ou a recolher, extra apuração" Of oDLg Size 200,40 PIXEL
@ 160,150 GET OSAY VAR DEB_ESP PICTURE "99999999.99" OF ODLG Size 50,10 PIXEL
@ 200,10 Button "Ok" Size 40,10 Pixel Action (IMPRESSAO_EFDPISCOFINS(XDT,XDT2,VL_TOT_DEB,VL_AJ_DEBITOS,VL_TOT_AJ_DEBITOS,VL_ESTORNOS_CRED,VL_TOT_CREDITOS,VL_AJ_CREDITOS,VL_TOT_AJ_CREDITOS,VL_ESTORNOS_DEB,VL_SLD_CREDOR_ANT,VL_SLD_APURADO,VL_TOT_DED,VL_ICMS_RECOLHER,VL_SLD_CREDOR_TRANSPORTAR,DEB_ESP,B0COD_VER),SAIDLG:=.T.,ODLG:END())
@ 200,70 Button "Cancelar" Size 40,10 Pixel Action (SAIDLG:=.T.,oDLG:END())
Activate Dialog oDlg Centered //VALID SAIDLG
RETURN NIL
FUNCTION IMPRESSAO_EFDPISCOFINS(XDT,XDT2,VL_TOT_DEB,VL_AJ_DEBITOS,VL_TOT_AJ_DEBITOS,VL_ESTORNOS_CRED,VL_TOT_CREDITOS,VL_AJ_CREDITOS,VL_TOT_AJ_CREDITOS,VL_ESTORNOS_DEB,VL_SLD_CREDOR_ANT,VL_SLD_APURADO,VL_TOT_DED,VL_ICMS_RECOLHER,VL_SLD_CREDOR_TRANSPORTAR,DEB_ESP,B0COD_VER)
IF ABRE17()=.F..OR.ABRE18()=.F..OR.ABRE43()=.F..OR.ABRE1()=.F..OR.ABRE45()=.F..OR.ABRE19()=.F..OR.ABRE14()=.F..OR.ABRE16()=.F..OR.ABRE23()=.F..OR.ABRE20()=.F..OR.ABRE42()=.F..OR.ABRE200()=.F..OR.ABRE46()=.F..OR.ABRE180()=.F..OR.ABRE190()=.F..OR.ABRE170()=.F..OR.ABRE21()=.F..OR.ABRE201()=.F..OR.ABRE202()=.F..OR.ABRE160()=.F..OR.ABRE52()=.F.
MSGALERT("Não Foi PossÃvel Abrir os Arquivos, Tente Novamente...","Mensagem")
RETURN(.F.)
ENDIF
SELE 18
ORDSCOPE(0,NIL)
ORDSCOPE(1,NIL)
SELE 19
ORDSCOPE(0,NIL)
ORDSCOPE(1,NIL)
SELE 16
ORDSCOPE(0,NIL)
ORDSCOPE(1,NIL)
SELE 20
ORDSCOPE(0,NIL)
ORDSCOPE(1,NIL)
SELE 17
OrdDescend(,,.F.)
cArqTxt:=".\TXT\EFDFISCAL.TXT"
If File(cArqTxt)
FErase(cArqTxt)
EndIf
oTxt := TTxtFile():New(cArqTxt)
If oTxt:Open()
TOTALGERAL:=1
**BLOCO 0: ABERTURA, IDENTIFICAÇÃO E REFERÊNCIAS.
STORE 1 TO TOTALBLOCO0
**REGISTRO 0000: ABERTURA DO ARQUIVO DIGITAL E IDENTIFICAÇÃO DA ENTIDADE
b0reg :="0000"
b0cod_ver :=STRZERO(B0COD_VER,3)
b0cod_fin :="0" //0=remessa arquivo original 1-remessa do arquivo substituto
b0dt_ini :=SUBS(DTOC(XDT),1,2)+SUBS(DTOC(XDT),4,2)+SUBS(DTOC(XDT),7,4)
b0dt_fin :=SUBS(DTOC(XDT2),1,2)+SUBS(DTOC(XDT2),4,2)+SUBS(DTOC(XDT2),7,4)
b0nome :=ALLTRIM(ARQEMP->NOME)
b0cnpj :=ALLTRIM(CharCNPJ(ARQEMP->CNPJ))
b0cpf :=""
b0uf :=ALLTRIM(ARQEMP->ESTADO)
b0if :=ALLTRIM(ARQEMP->INSEST)
SELE 43
DBSETORDER(3)
DBSEEK(CONTADOR->UF+CONTADOR->MUNICIPIO)
b0cod_mun :=ALLTRIM(ARQMUN->CODIGO)
b0im :=ALLTRIM(ARQEMP->INSMUN)
b0suframa :=""
b0ind_perfil:="A"
b0ind_ativ :="0" //0 industrial ou equiparado 1-outros
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+b0reg+"|"+b0cod_ver+"|"+b0cod_fin+"|"+b0dt_ini+"|"+b0dt_fin+"|"+b0nome+"|"+b0cnpj+"|"+b0cpf+"|"+b0uf+"|"+b0if+;
"|"+b0cod_mun+"|"+b0im+"|"+b0suframa+"|"+b0ind_perfil+"|"+b0ind_ativ+"|"
oTxt:Add(oTexto)
TOTALBLOCO0+=1
TOTALGERAL+=1
*----------------//
**REGISTRO 0001: ABERTURA DO BLOCO 0
b1reg:="0001"
b1ind_mov:="0" //bloco com dados informados
*------------------------------------------------------------------------------------------------------------------------
oTexto="|"+b1reg+"|"+b1ind_mov+"|"
oTxt:Add(oTexto)
TOTALBLOCO0+=1
TOTALGERAL+=1
*----------------//
**REGISTRO 0005: DADOS COMPLEMENTARES DA ENTIDADE
b5reg :="0005"
b5fantasia :=ALLTRIM(ARQEMP->FANTASIA)
b5cep :=ALLTRIM(CharCNPJ(ARQEMP->CEP))
b5end :=ALLTRIM(ARQEMP->ENDERECO)
b5num :=ALLTRIM(ARQEMP->NUMERO)
b5compl :=ALLTRIM(ARQEMP->COMPLTO)
b5bairro :=ALLTRIM(ARQEMP->BAIRRO)
b5fone :=ALLTRIM(CharCNPJ(ARQEMP->TELEFONE))
b5fax :=""
b5email :="valpanemaserraria@uol.com.br"
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+b5reg+"|"+b5fantasia+"|"+b5cep+"|"+b5end+"|"+b5num+"|"+b5compl+"|"+b5bairro+"|"+b5fone+"|"+b5fax+"|"+b5email+"|"
oTxt:Add(oTexto)
TOTALBLOCO0+=1
TOTALGERAL+=1
*----------------//
**REGISTRO 0015: DADOS DO CONTRIBUINTE SUBSTITUTO
//Registro obrigatório para todos os contribuintes substitutos tributários do ICMS, conforme definidos na legislação
//pertinente. Deve ser gerado um registro para cada uma das inscrições estaduais cadastradas nas unidades federadas dos
//contribuintes substituÃdos, ainda que não tenha tido movimentação no perÃodo, ficando obrigado à apresentação dos
//registros E200 e filhos.
**REGISTRO 0100: DADOS DO CONTABILISTA
SELE 52
GO TOP
b100REG :="0100"
b100NOME :=ALLTRIM(CONTADOR->NOME)
b100CPF :=ALLTRIM(CHARIE(CONTADOR->CPF))
b100CRC :=ALLTRIM(CONTADOR->CRC)
b100CNPJ :=ALLTRIM(CharCNPJ(CONTADOR->CNPJ))
b100CEP :=ALLTRIM(CHARIE(CONTADOR->CEP))
b100END :=ALLTRIM(CONTADOR->LOGRADOURO)
b100NUM :=ALLTRIM(CONTADOR->NUMERO)
b100COMPL :=ALLTRIM(CONTADOR->COMPLEMENT)
b100BAIRRO:=ALLTRIM(CONTADOR->BAIRRO)
b100FONE :=ALLTRIM(CharCNPJ(CONTADOR->TELEFONE))
b100FAX :=ALLTRIM(CharCNPJ(CONTADOR->FAX))
b100EMAIL :=ALLTRIM(CONTADOR->EMAIL)
SELE 43
DBSETORDER(3)
DBSEEK(CONTADOR->UF+CONTADOR->MUNICIPIO)
b100COD_MUN:=ARQMUN->CODIGO
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+b100REG+"|"+b100NOME+"|"+b100CPF+"|"+b100CRC+"|"+b100CNPJ+"|"+b100CEP+"|"+b100END+"|"+b100NUM+"|"+b100COMPL+"|"+b100BAIRRO+"|"+b100FONE+"|"+b100FAX+"|"+b100EMAIL+"|"+b100COD_MUN+"|"
oTxt:Add(oTexto)
TOTALBLOCO0+=1
TOTALGERAL+=1
*----------------//
**REGISTRO 0150: TABELA DE CADASTRO DO PARTICIPANTE
TOTAL150:=0
SELE 1
DBSETORDER(4)
ARQCLI->(DBGOTOP())
DO WHILE !EOF()
STORE "" TO GREG,GCOD_PART,GNOME,GCOD_PAIS,GCNPJ,GCPF,GIE,GCOD_MUN,GSUFRAMA,GEND,GNUM,GCOMPL,GBAIRRO
SELE 17
DBSETORDER(4)
DBSEEK(EMPRESA_ATIVA+ALLTRIM(ARQCLI->CGCCLI),.T.)
B150REG:=""
DO WHILE ARQNFE->(!EOF()).AND.ARQNFE->CPFCNPJC==ARQCLI->CGCCLI.AND.DTOS(ARQNFE->DTEMISSAO)<=DTOS(XDT2)
IF DTOS(ARQNFE->DTEMISSAO)<DTOS(XDT)
ARQNFE->(DBSKIP())
LOOP
ENDIF
b150REG :="0150"
b150COD_PART :=ALLTRIM(CharCNPJ(ARQNFE->CPFCNPJC))
b150NOME :=ALLTRIM(ARQNFE->DESTINATA)
b150COD_PAIS :="01058"
IF ARQNFE->TIPOC="CNPJ"
b150CNPJ :=ALLTRIM(CharCNPJ(ARQNFE->CPFCNPJC))
b150CPF :=""
ELSE
b150CNPJ :=""
b150CPF :=ALLTRIM(CharCNPJ(ARQNFE->CPFCNPJC))
ENDIF
b150IE :=ALLTRIM(CHARIE(ARQNFE->INSCRICAO))
SELE 43
DBSETORDER(3)
DBSEEK(ARQNFE->ESTADO+ARQNFE->MUNICIPIO)
b150COD_MUN:=ARQMUN->CODIGO
SELE 17
b150SUFRAMA :=ALLTRIM(ARQNFE->SUFRAMA)
b150END :=ALLTRIM(ARQNFE->LOGRADOURO)
b150NUM :=ALLTRIM(ARQNFE->NUMERO)
b150COMPL :=ALLTRIM(ARQNFE->COMPLTO)
b150BAIRRO :=ALLTRIM(ARQNFE->BAIRRO)
ARQNFE->(DBSKIP())
ENDDO
IF !EMPTY(b150REG)
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+b150REG+"|"+b150COD_PART+"|"+b150NOME +"|"+b150COD_PAIS+"|"+b150CNPJ+"|"+b150CPF+"|"+b150IE+"|"+b150COD_MUN+"|"+b150SUFRAMA+;
"|"+b150END+"|"+b150NUM +"|"+b150COMPL+"|"+b150BAIRRO +"|"
oTxt:Add(oTexto)
TOTALBLOCO0+=1
TOTALGERAL+=1
TOTAL150+=1
*----------------//
ENDIF
SELE 1
ARQCLI->(DBSKIP())
ENDDO
**REGISTRO 0175: ALTERAÇÃO DA TABELA DE CADASTRO DE PARTICIPANTE
//Este registro é de preenchimento obrigatório quando houver, dentro do perÃodo, alteração nos dados informados no
//registro 0150, campos: NOME, COD_PAIS, CNPJ, CPF, IE, COD_MUN, SUFRAMA, END, NUM, COMPL e BAIRRO.
***REGISTRO 0190: IDENTIFICAÇÃO DAS UNIDADES DE MEDIDA
* TOTAL0190:=0
* SELE 16
* DBSETORDER(2)
* DBSEEK(EMPRESA_ATIVA,.T.)
* ORDSCOPE(0,EMPRESA_ATIVA)
* ORDSCOPE(1,EMPRESA_ATIVA)
* ARQNFEPRO->(DBGOTOP())
* DO WHILE ARQNFEPRO->(!EOF())
* IF DTOS(ARQNFEPRO->DATFAT)<DTOS(XDT).OR.DTOS(ARQNFEPRO->DATFAT)>DTOS(XDT2)
* ARQNFEPRO->(DBSKIP())
* LOOP
* ENDIF
* OUNIDADE:=UNIDADE
* b190REG:=""
* DO WHILE ARQNFEPRO->(!EOF()).AND.OUNIDADE==UNIDADE
* IF DTOS(ARQNFEPRO->DATFAT)<DTOS(XDT).OR.DTOS( ARQNFEPRO->DATFAT)>DTOS(XDT2)
* EXIT
* ENDIF
* b190REG :="0190"
* b190UNID :=ALLTRIM(ARQNFEPRO->UNIDADE)
* ARQNFEPRO->(DBSKIP())
* ENDDO
* IF !EMPTY(b190REG)
* IF b190UNID="M3"
* b190DESCR :="METRO CUBICO"
* ELSEIF b190UNID="ST"
* b190DESCR :="ESTEREO"
* ELSEIF b190UNID="T"
* b190DESCR :="TONELADA"
* ELSEIF b190UNID="UN"
* b190DESCR :="UNIDADE"
* ELSEIF b190UNID="PC"
* b190DESCR :="PEÇA"
* ELSEIF="A CADASTRAR"
* ENDIF
* *------------------------------------------------------------------------------------------------------------------------
* oTexto:="|"+b190REG+"|"+b190UNID+"|"+b190DESCR+"|"
* oTxt:Add(oTexto)
* TOTALBLOCO0+=1
* TOTALGERAL+=1
* TOTAL0190+=1
* *----------------//
* ENDIF
* ENDDO
**REGISTRO 0200: TABELA DE IDENTIFICAÇÃO DO ITEM (PRODUTOS E SERVIÇOS)
* TOTAL200:=0
* SELE 16
* ORDSCOPE(0,NIL)
* ORDSCOPE(1,NIL)
* SELE 16
* DBSETORDER(3)
* DBSEEK(EMPRESA_ATIVA,.T.)
* ORDSCOPE(0,EMPRESA_ATIVA)
* ORDSCOPE(1,EMPRESA_ATIVA)
* ARQNFEPRO->(DBGOTOP())
* DO WHILE ARQNFEPRO->(!EOF())
* IF DTOS(ARQNFEPRO->DATFAT)<DTOS(XDT).OR.DTOS(ARQNFEPRO->DATFAT)>DTOS(XDT2)
* ARQNFEPRO->(DBSKIP())
* LOOP
* ENDIF
* XCODIGO:=ARQNFEPRO->CODIGO
* b200REG:=""
* DO WHILE ARQNFEPRO->(!EOF()).AND.XCODIGO=ARQNFEPRO->CODIGO
* IF DTOS(ARQNFEPRO->DATFAT)<DTOS(XDT).OR.DTOS(ARQNFEPRO->DATFAT)>DTOS(XDT2)
* EXIT
* ENDIF
* b200REG :="0200"
* b200COD_ITEM :=ALLTRIM(STR(ARQNFEPRO->CODIGO,14))
* b200DESCR_ITEM :=ALLTRIM(ARQNFEPRO->DESCRICAO)
* b200COD_BARRA :=""
* b200COD_ANT_ITE:=""
* b200UNI_INV :=ALLTRIM(ARQNFEPRO->UNIDADE)
* b200TIPO_ITEM :="04" //produto acabado
* b200COD_NCM :=ALLTRIM(ARQNFEPRO->NCM)
* b200EX_TIP :=ALLTRIM(STR(ARQNFEPRO->EXTIPI,3))
* b200COD_LIST :=""
* b200COD_GEN :="44"
* b200ALIQ_ICMS :="18" // AQUI NAO TENHO CERTEZA
* ARQNFEPRO->(DBSKIP())
* ENDDO
* IF !EMPTY(b200REG)
* *------------------------------------------------------------------------------------------------------------------------
* oTexto:="|"+b200REG+"|"+b200COD_ITEM+"|"+b200DESCR_ITEM+"|"+b200COD_BARRA+"|"+b200COD_ANT_ITE+"|"+b200UNI_INV+"|"+b200TIPO_ITEM+"|"+b200COD_NCM+"|"+b200EX_TIP+"|"+b200COD_GEN+"|"+b200COD_LIST+"|"+b200ALIQ_ICMS+"|"
* oTxt:Add(oTexto)
* TOTALBLOCO0+=1
* TOTALGERAL+=1
* TOTAL200+=1
* *----------------//
* ENDIF
* ENDDO
**REGISTRO 0205: ALTERAÇÃO DO ITEM
**REGISTRO 0206: CÓDIGO DE PRODUTO CONFORME TABELA ANP (COMBUSTÃVEIS)
**REGISTRO 0220: FATORES DE CONVERSÃO DE UNIDADES
//Este registro tem por objetivo informar os fatores de conversão dos itens discriminados na Tabela de Identificação
//do Item (Produtos e Serviços) entre a unidade informada no registro 0200 e as unidades informadas nos registros dos
//documentos fiscais.
//Quando for utilizada unidade de inventário diferente da unidade comercial do produto é necessário informar o
//registro 0220 para informar os fatores de conversão entre as unidades.
**REGISTRO 0300: CADASTRO DE BENS OU COMPONENTES DO ATIVO IMOBILIZADO
//Este registro tem o objetivo de identificar e caracterizar todos os bens ou componentes arrolados no registro G125
//do Bloco G e os bens em construção.
**REGISTRO 0305: INFORMAÇÃO SOBRE A UTILIZAÇÃO DO BEM
/*Este registro tem o objetivo de prestar informações sobre a utilização do bem, sendo obrigatório quando o
conteúdo do campo IDENT_MERC do registro 0300 for igual a “1â€
*/
**REGISTRO 0400: TABELA DE NATUREZA DA OPERAÇÃO/PRESTAÇÃO
SELE 16
ORDSCOPE(0,NIL)
ORDSCOPE(1,NIL)
SELE 16
DBSETORDER(4)
DBSEEK(EMPRESA_ATIVA,.T.)
ORDSCOPE(0,EMPRESA_ATIVA)
ORDSCOPE(1,EMPRESA_ATIVA)
ARQNFEPRO->(DBGOTOP())
DO WHILE ARQNFEPRO->(!EOF())
IF DTOS(ARQNFEPRO->DATFAT)<DTOS(XDT).OR.DTOS(ARQNFEPRO->DATFAT)>=DTOS(XDT2)
ARQNFEPRO->(DBSKIP())
LOOP
ENDIF
XCFO:=ARQNFEPRO->CFO
b400reg:=" "
DO WHILE ARQNFEPRO->(!EOF()).AND.XCFO=ARQNFEPRO->CFO
IF DTOS(ARQNFEPRO->DATFAT)<DTOS(XDT).OR.DTOS(ARQNFEPRO->DATFAT)>=DTOS(XDT2)
EXIT
ENDIF
breg :="0400"
b400OD_NAT :=SUBS(ARQNFEPRO->CFO,1,5)
b400DESCR_NAT :=ALLTRIM(SUBS(ARQNFEPRO->CFO,9,100))
ARQNFEPRO->(DBSKIP())
ENDDO
IF !EMPTY(B400REG)
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+JREG+"|"+JCOD_NAT+"|"+JDESCR_NAT+"|"
oTxt:Add(oTexto)
TOTALBLOCO0+=1
TOTALGERAL+=1
*----------------//
ENDIF
ENDDO
**REGISTRO 0450: TABELA DE INFORMAÇÃO COMPLEMENTAR DO DOCUMENTO FISCAL
**REGISTRO 0460: TABELA DE OBSERVAÇÕES DO LANÇAMENTO FISCAL
/*Este registro é utilizado para informar anotações de escrituração determinadas pela legislação pertinente aos
lançamentos fiscais, tais como: ajustes efetuados por diferimento parcial de imposto, antecipações, diferencial de alÃquota e
outros.
*/
**REGISTRO 0500: PLANO DE CONTAS CONTÃBEIS
**REGISTRO 0600: CENTRO DE CUSTOS
**REGISTRO 0990: ENCERRAMENTO DO BLOCO 0
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+"0990"+"|"+ALLTRIM(STR(TOTALBLOCO0,4))+"|"
oTxt:Add(oTexto)
TOTALGERAL+=1
*----------------//
//------------------------------------------------------------------------------------------------------------------------
**BLOCO C: DOCUMENTOS FISCAIS I - MERCADORIAS (ICMS/IPI)
**REGISTRO C001: ABERTURA DO BLOCO C
STORE 1 TO TOTALBLOCOC
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+"C001"+"|"+"0"+"|" //0 bloco com dados
oTxt:Add(oTexto)
TOTALBLOCOC+=1
TOTALGERAL+=1
**REGISTRO C100: NOTA FISCAL (CÓDIGO 01), NOTA FISCAL AVULSA (CÓDIGO 1B), NOTA FISCAL DE PRODUTOR (CÓDIGO 04) E NF-e (CÓDIGO 55).
TOTAL100:=0
TOTAL170:=0
TOTAL190:=0
SELE 17
SET ORDER TO 3
ARQNFE->(DBGOTOP())
DBSEEK(EMPRESA_ATIVA+DTOS(XDT),.T.)
DO WHILE !ARQNFE->(EOF()).AND.DTOS(ARQNFE->DTEMISSAO)>=DTOS(XDT).AND.DTOS(ARQNFE->DTEMISSAO)<=DTOS(XDT2)
SELE 16
DBSETORDER(1)
DBSEEK(EMPRESA_ATIVA+STR(ARQNFE->SERIE,3)+STR(ARQNFE->NOTA,11))
ORDSCOPE(0,EMPRESA_ATIVA+STR(ARQNFE->SERIE,3)+STR(ARQNFE->NOTA,11))
ORDSCOPE(1,EMPRESA_ATIVA+STR(ARQNFE->SERIE,3)+STR(ARQNFE->NOTA,11))
OrdDescend(,,.F.)
ARQNFEPRO->(DBGOTOP())
C100VL_DESC :=0.00 ; ARQNFEPRO->(dbEval({||C100VL_DESC :=C100VL_DESC+ARQNFEPRO->DESCONTO}))
C100VL_FRT :=0.00 ; ARQNFEPRO->(dbEval({||C100VL_FRT :=C100VL_FRT +ARQNFEPRO->FRETE}))
C100VL_SEG :=0.00 ; ARQNFEPRO->(dbEval({||C100VL_SEG :=C100VL_SEG +ARQNFEPRO->SEGURO}))
C100VL_OUT_DA :=0.00 ; ARQNFEPRO->(dbEval({||C100VL_OUT_DA :=C100VL_OUT_DA +ARQNFEPRO->DESPESA}))
C100VL_BC_ICMS:=0.00 ; ARQNFEPRO->(dbEval({||C100VL_BC_ICMS:=C100VL_BC_ICMS+ARQNFEPRO->BICMS}))
C100VL_ICMS :=0.00 ; ARQNFEPRO->(dbEval({||C100VL_ICMS :=C100VL_ICMS+ARQNFEPRO->VICMS}))
C100VL_IPI :=0.00 ; ARQNFEPRO->(dbEval({||C100VL_IPI :=C100VL_IPI+ARQNFEPRO->VALORIPI}))
C100VL_PIS :=0.00 ; ARQNFEPRO->(dbEval({||C100VL_PIS :=C100VL_PIS+ARQNFEPRO->VALORPIS}))
C100VL_COFINS :=0.00 ; ARQNFEPRO->(dbEval({||C100VL_COFINS :=C100VL_COFINS+ARQNFEPRO->VALORCOFIN}))
ARQNFEPRO->(DBGOTOP())
IF C100VL_DESC<>0
C100VL_DESC :=ALLTRIM(STR(C100VL_DESC,10,2))
ELSE
C100VL_DESC:=""
ENDIF
* RC100VL_DESC:=STRTRAN(ALLTRIM(STR(RC100VL_DESC,10,2)),".",",")
C100VL_FRT :=STRTRAN(ALLTRIM(STR(C100VL_FRT,10,2)),".",",")
C100VL_SEG :=STRTRAN(ALLTRIM(STR(C100VL_SEG,10,2)),".",",")
C100VL_OUT_DA :=STRTRAN(ALLTRIM(STR(C100VL_OUT_DA,10,2)),".",",")
C100VL_BC_ICMS :=STRTRAN(ALLTRIM(STR(C100VL_BC_ICMS,10,2)),".",",")
C100VL_ICMS :=STRTRAN(ALLTRIM(STR(C100VL_ICMS,10,2)),".",",")
C100BC_ICMS_ST :="0,00"
C100VL_ICMS_ST :="0,00"
C100VL_IPI :=STRTRAN(ALLTRIM(STR(C100VL_IPI,10,2)),".",",")
C100VL_PIS :=STRTRAN(ALLTRIM(STR(C100VL_PIS,10,2)),".",",")
C100VL_COFINS :=STRTRAN(ALLTRIM(STR(C100VL_COFINS,10,2)),".",",")
C100VL_PIS_ST :="0,00"
C100VL_COFIN_ST :="0,00"
SELE 17
C100REG :="C100"
C100IND_OPER :=SUBS(ARQNFE->TIPODOC,1,1) //0ENTRADEA 1SAIDA
C100IND_EMIT :="0"
C100COD_PART :=ALLTRIM(CharCNPJ(ARQNFE->CPFCNPJC))
C100COD_MOD :="55"
C100COD_SIT :="00"
C100SER :=ALLTRIM(STR(ARQNFE->SERIE,3))
C100DOC :=ALLTRIM(STR(ARQNFE->NOTA,9))
C100CHV_NFE :=ALLTRIM(CharCNPJ(ARQNFE->CHAVE))
C100DT_DOC :=SUBS(DTOC(ARQNFE->DTEMISSAO),1,2)+SUBS(DTOC(ARQNFE->DTEMISSAO),4,2)+SUBS(DTOC(ARQNFE->DTEMISSAO),7,4)
C100DT_E_S :=SUBS(DTOC(ARQNFE->DTSAIDA),1,2)+SUBS(DTOC(ARQNFE->DTSAIDA),4,2)+SUBS(DTOC(ARQNFE->DTSAIDA),7,4)
C100VL_DOC :=STRTRAN(ALLTRIM(STR(ARQNFE->VALORTOTAL,10,2)),".",",")
C100IND_PGTO :=SUBS(ARQNFE->PAGAMENTO,1,1)
C100VL_ABAT_NT :=""
C100VL_MERC :=STRTRAN(ALLTRIM(STR(ARQNFE->VALORTOTAL,10,2)),".",",")
C100IND_FRT :=SUBS(ARQNFE->MODALIDADE,1,1)
//PARA PASSAR NA VALIDAÇÃO
* STORE "" TO C100VL_FRT,C100VL_SEG,C100VL_OUT_DA,C100VL_BC_ICMS,C100VL_ICMS,C100VL_IPI,C100VL_PIS,C100VL_COFINS,C100VL_MERC,C100VL_DESC //,C100VL_DOC
******
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+C100REG +"|"+C100IND_OPER +"|"+C100IND_EMIT +"|"+C100COD_PART +"|"+C100COD_MOD +"|"+C100COD_SIT+;
"|"+C100SER +"|"+C100DOC +"|"+C100CHV_NFE +"|"+C100DT_DOC +"|"+C100DT_E_S +"|"+C100VL_DOC+;
"|"+C100IND_PGTO+"|"+C100VL_DESC +"|"+C100VL_ABAT_NT+"|"+C100VL_MERC +"|"+C100IND_FRT +"|"+C100VL_FRT+;
"|"+C100VL_SEG +"|"+C100VL_OUT_DA+"|"+C100VL_BC_ICMS+"|"+C100VL_ICMS +"|"+C100BC_ICMS_ST +"|"+C100VL_ICMS_ST+;
"|"+C100VL_IPI +"|"+C100VL_PIS +"|"+C100VL_COFINS +"|"+C100VL_PIS_ST+"|"+C100VL_COFIN_ST+"|"
oTxt:Add(oTexto)
TOTALBLOCOC+=1
TOTALGERAL+=1
TOTAL100+=1
*----------------//
**REGISTRO C105: OPERAÇÕES COM ICMS ST RECOLHIDO PARA UF DIVERSA DO DESTINATÃRIO DO DOCUMENTO FISCAL (CÓDIGO 55).
**REGISTRO C110: COMPLEMENTO DO DOCUMENTO - INFORMAÇÃO COMPLEMENTAR DA NOTA FISCAL (CÓDIGOS 01, 1B, 04 e 55)
**REGISTRO C111: PROCESSO REFERENCIADO
**REGISTRO C112: DOCUMENTO DE ARRECADAÇÃO REFERENCIADO.
**REGISTRO C113: DOCUMENTO FISCAL REFERENCIADO
**REGISTRO C114: CUPOM FISCAL REFERENCIADO
**REGISTRO C115: LOCAL DA COLETA E/OU ENTREGA (CÓDIGO 01, 1B E 04)
**REGISTRO C116: CUPOM FISCAL ELETRÔNICO REFERENCIADO
**REGISTRO C120: COMPLEMENTO DO DOCUMENTO - OPERAÇÕES DE IMPORTAÇÃO (CÓDIGO 01)
**REGISTRO C130: ISSQN, IRRF E PREVIDÊNCIA SOCIAL
**REGISTRO C140: FATURA (CÓDIGO 01)
*/Duplicatas
* SELE 20
* DBSETORDER(1)
* DBSEEK(EMPRESA_ATIVA+STR(ARQNFE->SERIE,3)+STR(ARQNFE->NOTA,11))
* ORDSCOPE(0,EMPRESA_ATIVA+STR(ARQNFE->SERIE,3)+STR(ARQNFE->NOTA,11))
* ORDSCOPE(1,EMPRESA_ATIVA+STR(ARQNFE->SERIE,3)+STR(ARQNFE->NOTA,11))
* OrdDescend(,,.F.)
* ARQDUP->(DBGOTOP())
* IF ARQDUP->(!EOF())
* C140VL_TIT :=0.00 ; ARQDUP->(dbEval({||C140VL_TIT :=C140VL_TIT+ARQDUP->VALOR}))
* C140VL_TIT :=ALLTRIM(STR(C140VL_TIT,10,2))
* ARQDUP->(DBGOBOTTOM())
* C140REG :="C140"
* C140IND_EMIT :="0"
* C140IND_TIT :="00"
* C140DESC_TIT :=ALLTRIM(ARQDUP->FATURA)
* C140NUM_TIT :=ALLTRIM(STR(ARQDUP->NOTA,11))
* C140QTD_PARC :=ALLTRIM(STR(ARQDUP->ITEM,2))
* *------------------------------------------------------------------------------------------------------------------------
* oTexto:="|"+C140REG+"|"+C140IND_EMIT+"|"+C140IND_TIT+"|"+C140DESC_TIT+"|"+C140NUM_TIT+"|"+C140QTD_PARC+"|"+C140VL_TIT+"|"
* oTxt:Add(oTexto)
* TOTALBLOCOC+=1
* TOTALGERAL+=1
* ENDIF
*----------------//
**REGISTRO C141: VENCIMENTO DA FATURA (CÓDIGO 01).
* ARQDUP->(DBGOTOP())
* WHILE ARQDUP->(!EOF())
* C141REG:="C141"
* C141NUM_PARC:=ALLTRIM(STR(ARQDUP->ITEM,2))
* C141DT_VCTO:=SUBS(DTOC(ARQDUP->VENCTO),1,2)+SUBS(DTOC(ARQDUP->VENCTO),4,2)+SUBS(DTOC(ARQDUP->VENCTO),7,4)
* C141VL_PARC:=ALLTRIM(STR(ARQDUP->VALOR,10,2))
* *------------------------------------------------------------------------------------------------------------------------
* oTexto:="|"+C141REG+"|"+C141NUM_PARC+"|"+C141DT_VCTO+"|"+C141VL_PARC+"|"
* oTxt:Add(oTexto)
* TOTALBLOCOC+=1
* TOTALGERAL+=1
* *----------------//
* ARQDUP->(DBSKIP())
* ENDDO
**REGISTRO C160: VOLUMES TRANSPORTADOS (CÓDIGO 01 E 04) - EXCETO COMBUSTÃVEIS.
* SELE 17
* C160REG :="C160"
* C160COD_PART :=ALLTRIM(CharCNPJ(ARQNFE->CPFCNPJC))
* C160VEIC_ID :=ALLTRIM(ARQNFE->PLACA)
* C160UF_ID :=ALLTRIM(ARQNFE->UFP)
* SELE 19
* DBSETORDER(1)
* ORDSCOPE(0,EMPRESA_ATIVA+STR(ARQNFE->SERIE,3)+STR(ARQNFE->NOTA,11))
* ORDSCOPE(1,EMPRESA_ATIVA+STR(ARQNFE->SERIE,3)+STR(ARQNFE->NOTA,11))
* OrdDescend(,,.F.)
* ARQVOL->(DBGOTOP())
* C160PESO_BRT :=ALLTRIM(STR(ARQVOL->BRUTO,10,2))
* C160PESO_LIQ :=ALLTRIM(STR(ARQVOL->PESO,10,2))
* C160QTD_VOL :=ALLTRIM(STR(ARQVOL->QUANTIDADE,3))
* *------------------------------------------------------------------------------------------------------------------------
* oTexto:="|"+C160REG+"|"+C160COD_PART+"|"+C160VEIC_ID+"|"+C160QTD_VOL+"|"+C160PESO_BRT+"|"+C160PESO_LIQ+"|"+C160UF_ID+"|"
* oTxt:Add(oTexto)
* TOTALBLOCOC+=1
* TOTALGERAL+=1
*----------------//
**REGISTRO C165: OPERAÇÕES COM COMBUSTÃVEIS (CÓDIGO 01)
**REGISTRO C170: COMPLEMENTO DO DOCUMENTO - ITENS DO DOCUMENTO (CÓDIGOS 01, 1B, 04 e 55)
* SELE 16
* ARQNFEPRO->(DBGOTOP())
* DO WHILE ARQNFEPRO->(!EOF())
* C170REG :="C170"
* C170COD_ITEM :=ALLTRIM(STR(ARQNFEPRO->CODIGO,14))
* C170NUM_ITEM :=STRZERO(ARQNFEPRO->ITEM,3)
* C170DESCR_COMPL :=""
* C170QTD :=ALLTRIM(STR(ARQNFEPRO->QUANTIDADE,15,5))
* C170UNID :=ALLTRIM(ARQNFEPRO->UNIDADE)
* C170VL_ITEM :=ALLTRIM(STR(ARQNFEPRO->UNITARIO,10,2))
* C170VL_DESC :=ALLTRIM(STR(ARQNFEPRO->DESCONTO,10,2))
* C170IND_MOV :="0"
* C170CST_ICMS :=STRZERO(VAL(SUBS(ARQNFEPRO->SITUACAO,1,2)),3)
* C170CFOP :=ALLTRIM(CharCNPJ(SUBS(ARQNFEPRO->CFO,1,5)))
* C170COD_NAT :=SUBS(ARQNFEPRO->CFO,1,5)
* C170VL_BC_ICMS :=ALLTRIM(STR(ARQNFEPRO->BICMS,10,2))
* C170ALIQ_ICMS :=ALLTRIM(STR(ARQNFEPRO->ALIQUOTA,6,2))
* C170VL_ICMS :=ALLTRIM(STR(ARQNFEPRO->VICMS,10,2))
* C170VL_BC_ICMS_ST :=""
* C170ALIQ_ST :=""
* C170VL_ICMS_ST :=""
* C170IND_APUR :="0"
* C170COD_ENQ :=STRZERO(VAL(SUBS(ARQNFEPRO->CENQUAD,1,2)),2)
* C170CST_IPI :=STRZERO(VAL(SUBS(ARQNFEPRO->SITUAIPI,1,2)),2)
* C170VL_BC_IPI :=ALLTRIM(STR(ARQNFEPRO->BASEIPI,10,2))
* C170ALIQ_IPI :=ALLTRIM(STR(ARQNFEPRO->ALIQIPI,6,2))
* C170VL_IPI :=ALLTRIM(STR(ARQNFEPRO->VALORIPI,10,2))
* C170CST_PIS :=STRZERO(VAL(SUBS(ARQNFEPRO->SITUAPIS,1,2)),2)
* C170VL_BC_PIS :=ALLTRIM(STR(ARQNFEPRO->BASEPIS,10,2))
* C170ALIQ_PIS :=ALLTRIM(STR(ARQNFEPRO->ALIQPIS,8,4))
* C170QUANT_BC_PIS :=ALLTRIM(STR(ARQNFEPRO->QUANTPIS,10,2))
* C170VL_PIS :=ALLTRIM(STR(ARQNFEPRO->VALORPIS,10,2))
* C170CST_COFINS :=STRZERO(VAL(SUBS(ARQNFEPRO->SITUACOFIN,1,2)),2)
* C170VL_BC_COFINS :=ALLTRIM(STR(ARQNFEPRO->BASECOFINS,10,2))
* C170ALIQ_COFINS :=ALLTRIM(STR(ARQNFEPRO->ALIQCOFINS,8,4))
* C170QUANT_BC_COFINS:=ALLTRIM(STR(ARQNFEPRO->QUANTCOFIN,10,2))
* C170VL_COFINS :=ALLTRIM(STR(ARQNFEPRO->VALORCOFIN,10,2))
* C170COD_CTA :=""
*
* //PARA PASSAR NA VALIDAÇÃO
* STORE "" TO C170QTD,C170VL_ITEM,C170VL_DESC,C170VL_BC_ICMS,C170ALIQ,ICMS,C170VL_ICMS,C170VL_BC_IPI,C170ALIQ_IPI,C170VL_IPI,C170VL_BC_PIS,C170ALIQ_PIS_PERC,C170QUANT_BC_PIS
* STORE "" TO C170ALIQ_PIS,C170VL_PIS,C170VL_BC_COFINS,C170ALIQ_COFINS_PERC,C170QUANT_BC_COFINS
* STORE "" TO C170ALIQ_COFINS,C170VL_COFINS,C170COD_ENQ,C170ALIQ_ICMS
* *************
*
* *------------------------------------------------------------------------------------------------------------------------
* oTexto:="|"+C170REG +"|"+C170NUM_ITEM +"|"+C170COD_ITEM +"|"+C170DESCR_COMPL +"|"+C170QTD+;
* "|"+C170UNID +"|"+C170VL_ITEM +"|"+C170VL_DESC +"|"+C170IND_MOV +"|"+C170CST_ICMS+;
* "|"+C170CFOP +"|"+C170COD_NAT +"|"+C170VL_BC_ICMS +"|"+C170ALIQ_ICMS +"|"+C170VL_ICMS+;
* "|"+C170VL_BC_ICMS_ST+"|"+C170ALIQ_ST +"|"+C170VL_ICMS_ST +"|"+C170IND_APUR +"|"+C170CST_IPI+;
* "|"+C170COD_ENQ +"|"+C170VL_BC_IPI +"|"+C170ALIQ_IPI +"|"+C170VL_IPI +"|"+C170CST_PIS+;
* "|"+C170VL_BC_PIS +"|"+C170ALIQ_PIS +"|"+C170QUANT_BC_PIS+"|"+C170ALIQ_PIS +"|"+C170VL_PIS+;
* "|"+C170CST_COFINS +"|"+C170VL_BC_COFINS+"|"+C170ALIQ_COFINS +"|"+C170QUANT_BC_COFINS+"|"+C170ALIQ_COFINS+;
* "|"+C170VL_COFINS +"|"+C170COD_CTA +"|"
* oTxt:Add(oTexto)
* TOTALBLOCOC+=1
* TOTALGERAL+=1
* TOTAL170+=1
* *----------------//
* ARQNFEPRO->(DBSKIP())
* ENDDO
**REGISTRO C171: ARMAZENAMENTO DE COMBUSTIVEIS (código 01, 55)
**REGISTRO C172: OPERAÇÕES COM ISSQN (CÓDIGO 01)
**REGISTRO C173: OPERAÇÕES COM MEDICAMENTOS (CÓDIGO 01 e 55)
**REGISTRO C174: OPERAÇÕES COM ARMAS DE FOGO (CÓDIGO 01).
**REGISTRO C175: OPERAÇÕES COM VEÃCULOS NOVOS (CÓDIGO 01 e 55)
**REGISTRO C176: RESSARCIMENTO DE ICMS EM OPERAÇÕES COM SUBSTITUIÇÃO TRIBUTÃRIA (CÓDIGO 01, 55).
**REGISTRO C177: OPERAÇÕES COM PRODUTOS SUJEITOS A SELO DE CONTROLE IPI.
**REGISTRO C178: OPERAÇÕES COM PRODUTOS SUJEITOS À TRIBUTAÇÀO DE IPI POR UNIDADE OU QUANTIDADE DE PRODUTO.
**REGISTRO C179: INFORMAÇÕES COMPLEMENTARES ST (CÓDIGO 01).
**REGISTRO C190: REGISTRO ANALÃTICO DO DOCUMENTO (CÓDIGO 01, 1B, 04 E 55). SELE 17
SELE 16
DBSETORDER(1)
ARQNFEPRO->(DBGOTOP())
C190VL_BC_ICMS :=0.00 ; ARQNFEPRO->(dbEval({||C190VL_BC_ICMS:=C190VL_BC_ICMS+ARQNFEPRO->BICMS}))
C190VL_ICMS :=0.00 ; ARQNFEPRO->(dbEval({||C190VL_ICMS :=C190VL_ICMS+ARQNFEPRO->VICMS}))
C190VL_IPI :=0.00 ; ARQNFEPRO->(dbEval({||C190VL_IPI :=C190VL_IPI+ARQNFEPRO->VALORIPI}))
C190REG :="C190"
C190CST_ICMS :=STRZERO(VAL(SUBS(ARQNFEPRO->SITUACAO,1,2)),3)
ARQNFEPRO->(DBGOTOP())
C190CFOP :=ALLTRIM(CharCNPJ(SUBS(ARQNFEPRO->CFO,1,5)))
C190ALIQ_ICMS :=ALLTRIM(STR(ARQNFEPRO->ALIQUOTA,6,2))
C190VL_OPR :=STRTRAN(ALLTRIM(STR(ARQNFE->VALORTOTAL,10,2)),".",",")
C190VL_RED_BC :=STRTRAN(ALLTRIM(STR(ARQNFE->VALORTOTAL-C190VL_BC_ICMS,10,2)),".",",")
C190VL_BC_ICMS :=STRTRAN(ALLTRIM(STR(C190VL_BC_ICMS,10,2)),".",",")
C190VL_ICMS :=STRTRAN(ALLTRIM(STR(C190VL_ICMS,10,2)),".",",")
C190VL_BC_ICMS_ST :="0,00"
C190VL_ICMS_ST :="0,00"
C190VL_IPI :=STRTRAN(ALLTRIM(STR(C190VL_IPI,10,2)),".",",")
C190COD_OBS :=""
//PARA PASSAR NA VALIDAÇÃO
STORE "" TO C190ALIQ_ICMS //,C190VL_BC_ICMS,C190VL_ICMS,C190VL_RED_BC,C190VL_IPI,C190ALIQ_ICMS //,C190VL_OPR
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+C190REG +"|"+C190CST_ICMS +"|"+C190CFOP +"|"+C190ALIQ_ICMS +"|"+C190VL_OPR+;
"|"+C190VL_BC_ICMS+"|"+C190VL_ICMS +"|"+C190VL_BC_ICMS_ST+"|"+C190VL_ICMS_ST+"|"+C190VL_RED_BC+;
"|"+C190VL_IPI +"|"+C190COD_OBS +"|"
oTxt:Add(oTexto)
TOTALBLOCOC+=1
TOTALGERAL+=1
TOTAL190+=1
*----------------//
**REGISTRO C195: OBSERVAÇOES DO LANÇAMENTO FISCAL (CÓDIGO 01, 1B E 55)
**REGISTRO C197: OUTRAS OBRIGAÇÕES TRIBUTÃRIAS, AJUSTES E INFORMAÇÕES DE VALORES PROVENIENTES DE DOCUMENTO FISCAL.
**REGISTRO C300: RESUMO DIÃRIO DAS NOTAS FISCAIS DE VENDA A CONSUMIDOR (CÓDIGO 02)
**REGISTRO C310: DOCUMENTOS CANCELADOS DE NOTAS FISCAIS DE VENDA A CONSUMIDOR (CÓDIGO 02).
**REGISTRO C320: REGISTRO ANALÃTICO DO RESUMO DIÃRIO DAS NOTAS FISCAIS DE VENDA A CONSUMIDOR (CÓDIGO 02).
**REGISTRO C321: ITENS DO RESUMO DIÃRIO DOS DOCUMENTOS (CÓDIGO 02).
**REGISTRO C350: NOTA FISCAL DE VENDA A CONSUMIDOR (CÓDIGO 02)
**REGISTRO C370: ITENS DO DOCUMENTO (CÓDIGO 02)
**REGISTRO C390: REGISTRO ANALÃTICO DAS NOTAS FISCAIS DE VENDA A CONSUMIDOR (CÓDIGO 02)
**REGISTRO C400: EQUIPAMENTO ECF (CÓDIGO 02 e 2D).
**REGISTRO C405: REDUÇÃO Z (CÓDIGO 02 e 2D)
**REGISTRO C410: PIS E COFINS TOTALIZADOS NO DIA (CÓDIGO 02 e 2D).
**REGISTRO C420: REGISTRO DOS TOTALIZADORES PARCIAIS DA REDUÇÃO Z (COD 02 e 2D).
**REGISTRO C425: RESUMO DE ITENS DO MOVIMENTO DIÃRIO (CÓDIGO 02 e 2D).
**REGISTRO C460: DOCUMENTO FISCAL EMITIDO POR ECF (CÓDIGO 02 e 2D).
**REGISTRO C470: ITENS DO DOCUMENTO FISCAL EMITIDO POR ECF (CÓDIGO 02 e 2D)
**REGISTRO C490: REGISTRO ANALÃTICO DO MOVIMENTO DIÃRIO (CÓDIGO 02 e 2D).
**REGISTRO C495: RESUMO MENSAL DE ITENS DO ECF POR ESTABELECIMENTO (CÓDIGO 02 e 2D).
**REGISTRO C500: NOTA FISCAL/CONTA DE ENERGIA ELÉTRICA (CÓDIGO 06), NOTA FISCAL/CONTA DE FORNECIMENTO D'ÃGUA CANALIZADA (CÓDIGO 29) E NOTA FISCAL CONSUMO FORNECIMENTO DE GÃS (CÓDIGO 28).
**REGISTRO C510: ITENS DO DOCUMENTO NOTA FISCAL/CONTA ENERGIA ELÉTRICA (CÓDIGO 06), NOTA FISCAL/CONTA DE FORNECIMENTO D'ÃGUA CANALIZADA (CÓDIGO 29) E NOTA FISCAL/CONTA DE FORNECIMENTO DE GÃS (CÓDIGO 28).
**REGISTRO C590: REGISTRO ANALÃTICO DO DOCUMENTO - NOTA FISCAL/CONTA DE ENERGIA ELÉTRICA (CÓDIGO 06), NOTA FISCAL/CONTA DE FORNECIMENTO D'ÃGUA CANALIZADA (CÓDIGO 29) E NOTA FISCAL CONSUMO FORNECIMENTO DE GÃS (CÓDIGO 28).
**REGISTRO C600: CONSOLIDAÇÃO DIÃRIA DE NOTAS FISCAIS/CONTAS DE ENERGIA ELÉTRICA (CÓDIGO 06), NOTA FISCAL/CONTA DE FORNECIMENTO D'ÃGUA CANALIZADA (CÓDIGO 29) E NOTA FISCAL/CONTA DE FORNECIMENTO DE GÃS (CÓDIGO 28) (EMPRESAS NÃO OBRIGADAS AO CONVÊNIO ICMS 115/03).
**REGISTRO C601: DOCUMENTOS CANCELADOS - CONSOLIDAÇÃO DIÃRIA DE NOTAS FISCAIS/CONTAS DE ENERGIA ELÉTRICA (CÓDIGO 06), NOTA FISCAL/CONTA DE FORNECIMENTO D'ÃGUA CANALIZADA (CÓDIGO 29) E NOTA FISCAL/CONTA DE FORNECIMENTO DE GÃS (CÓDIGO 28)
**REGISTRO C610: ITENS DO DOCUMENTO CONSOLIDADO (CÓDIGO 06), NOTA FISCAL/CONTA DE FORNECIMENTO D'ÃGUA CANALIZADA (CÓDIGO 29) E NOTA FISCAL/CONTA DE FORNECIMENTO DE GÃS (CÓDIGO 28) (EMPRESAS NÃO OBRIGADAS AO CONVÊNIO ICMS 115/03).
**REGISTRO C690: REGISTRO ANALÃTICO DOS DOCUMENTOS (NOTAS FISCAIS/CONTAS DE ENERGIA ELÉTRICA (CÓDIGO 06), NOTA FISCAL/CONTA DE FORNECIMENTO D’ÃGUA CANALIZADA (CÓDIGO 29) E NOTA FISCAL/CONTA DE FORNECIMENTO DE GÃS (CÓDIGO 28)
**REGISTRO C700: CONSOLIDAÇÃO DOS DOCUMENTOS NF/CONTA ENERGIA ELÉTRICA (CÓD 06), EMITIDAS EM VIA ÚNICA (EMPRESAS OBRIGADAS À ENTREGA DO ARQUIVO PREVISTO NO CONVÊNIO ICMS 115/03) E NOTA FISCAL/CONTA DE FORNECIMENTO DE GÃS CANALIZADO (CÓDIGO 28)
**REGISTRO C790: REGISTRO ANALÃTICO DOS DOCUMENTOS (CÓDIGOS 06 e 28).
**REGISTRO C791: REGISTRO DE INFORMAÇÕES DE ST POR UF (COD 06)
**REGISTRO C800: CUPOM FISCAL ELETRÔNICO (CÓDIGO 59)
**REGISTRO C850: REGISTRO ANALÃTICO DO CF-E (CODIGO 59)
**REGISTRO C860: IDENTIFICAÇÃO DO EQUIPAMENTO SAT-CF-E
**REGISTRO C890: RESUMO DIÃRIO DO CF-E (CÓDIGO 59) POR EQUIPAMENTO SATCF-E
ARQNFE->(DBSKIP())
ENDDO
**REGISTRO C990: ENCERRAMENTO DO BLOCO C
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+"C990"+"|"+ALLTRIM(STR(TOTALBLOCOC,4))+"|"
oTxt:Add(oTexto)
TOTALGERAL+=1
*----------------//
**BLOCO D: DOCUMENTOS FISCAIS II - SERVIÇOS (ICMS).
/*Bloco de registros dos dados relativos à emissão ou ao recebimento de documentos fiscais que acobertam as
prestações de serviços de comunicação, transporte intermunicipal e interestadual.
*/
**REGISTRO D001: ABERTURA DO BLOCO D
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+"D001"+"|1|" //1-SEM DADOS INFORMADOS
oTxt:Add(oTexto)
TOTALGERAL+=1
*----------------//
**REGISTRO D100: NOTA FISCAL DE SERVIÇO DE TRANSPORTE (CÓDIGO 07) E CONHECIMENTOS DE TRANSPORTE RODOVIÃRIO DE CARGAS (CÓDIGO 08), CONHECIMENTOS DE TRANSPORTE DE CARGAS AVULSO (CÓDIGO 8B), AQUAVIÃRIO DE CARGAS (CÓDIGO 09), AÉREO (CÓDIGO 10), FERROVIÃRIO DE CARGAS (CÓDIGO 11) E MULTIMODAL DE CARGAS (CÓDIGO 26), NOTA FISCAL DE TRANSPORTE FERROVIÃRIO DE CARGA ( CÓDIGO 27) E CONHECIMENTO DE TRANSPORTE ELETRÔNICO – CT-e (CÓDIGO 57).
**REGISTRO D120: COMPLEMENTO DA NOTA FISCAL DE SERVIÇOS DE TRANSPORTE (CÓDIGO 07).
**REGISTRO D130: COMPLEMENTO DO CONHECIMENTO RODOVIÃRIO DE CARGAS (CÓDIGO 08) E DO CONHECIMENTO RODOVIÃRIO DE CARGAS AVULSO (CÓDIGO 8B).
**REGISTRO D140: COMPLEMENTO DO CONHECIMENTO AQUAVIÃRIO DE CARGAS (CÓDIGO 09).
**REGISTRO D150: COMPLEMENTO DO CONHECIMENTO AÉREO (CÓDIGO 10).
**REGISTRO D160: CARGA TRANSPORTADA (CÓDIGO 08, 8B, 09, 10, 11, 26 e 27)
**REGISTRO D161: LOCAL DA COLETA E ENTREGA (CÓDIGO 08, 8B, 09, 10, 11 e 26).
**REGISTRO D170: COMPLEMENTO DO CONHECIMENTO MULTIMODAL DE CARGAS (CÓDIGO 26).
**REGISTRO D180: MODAIS (CÓDIGO 26)
**REGISTRO D190: REGISTRO ANALÃTICO DOS DOCUMENTOS (CÓDIGO 07, 08, 8B, 09, 10, 11, 26, 27 e 57).
**REGISTRO D195: OBSERVAÇOES DO LANÇAMENTO FISCAL
**REGISTRO D197: OUTRAS OBRIGAÇÕES TRIBUTÃRIAS, AJUSTES E INFORMAÇÕES DE VALORES PROVENIENTES DE DOCUMENTO FISCAL.
**REGISTRO D300: REGISTRO ANALÃTICO DOS BILHETES CONSOLIDADOS DE PASSAGEM RODOVIÃRIO (CÓDIGO 13), DE PASSAGEM AQUAVIÃRIO (CÓDIGO 14), DE PASSAGEM E NOTA DE BAGAGEM (CÓDIGO 15) E DE PASSAGEM FERROVIÃRIO (CÓDIGO 16).
**REGISTRO D301: DOCUMENTOS CANCELADOS DOS BILHETES DE PASSAGEM RODOVIÃRIO (CÓDIGO 13), DE PASSAGEM AQUAVIÃRIO (CÓDIGO 14), DE PASSAGEM E NOTA DE BAGAGEM (CÓDIGO 15) E DE PASSAGEM FERROVIÃRIO (CÓDIGO 16).
**REGISTRO D310: COMPLEMENTO DOS BILHETES (CÓDIGO 13, 14, 15 E 16).
**REGISTRO D350: EQUIPAMENTO ECF (CÓDIGOS 2E, 13, 14, 15 e 16)
**REGISTRO D355: REDUÇÃO Z (CÓDIGOS 2E, 13, 14, 15 e 16).
**REGISTRO D360: PIS E COFINS TOTALIZADOS NO DIA (CÓDIGOS 2E, 13, 14, 15 e 16).
**REGISTRO D365: REGISTRO DOS TOTALIZADORES PARCIAIS DA REDUÇÃO Z (CÓDIGOS 2E, 13, 14, 15 e 16).
**REGISTRO D370: COMPLEMENTO DOS DOCUMENTOS INFORMADOS (CÓDIGOS 13, 14, 15 e 16 e 2E)
**REGISTRO D390: REGISTRO ANALÃTICO DO MOVIMENTO DIÃRIO (CÓDIGOS 13, 14, 15, 16 E 2E).
**REGISTRO D400: RESUMO DE MOVIMENTO DIÃRIO - RMD (CÓDIGO 18).
**REGISTRO D410: DOCUMENTOS INFORMADOS (CÓDIGOS 13, 14, 15 E 16).
**REGISTRO D411: DOCUMENTOS CANCELADOS DOS DOCUMENTOS INFORMADOS (CÓDIGO 13, 14, 15 e 16).
**REGISTRO D420: COMPLEMENTO DOS DOCUMENTOS INFORMADOS (CÓDIGO 13, 14, 15 e 16).
**REGISTRO D500: NOTA FISCAL DE SERVIÇO DE COMUNICAÇÃO (CÓDIGO 21) E NOTA FISCAL DE SERVIÇO DE TELECOMUNICAÇÃO (CÓDIGO 22)
**REGISTRO D510: ITENS DO DOCUMENTO – NOTA FISCAL DE SERVIÇO DE COMUNICAÇÃO (CÓDIGO 21) E SERVIÇO DE TELECOMUNICAÇÃO (CÓDIGO 22).
**REGISTRO D530: TERMINAL FATURADO.
**REGISTRO D590: REGISTRO ANALÃTICO DO DOCUMENTO (CÓDIGO 21 E 22)
**REGISTRO D600: CONSOLIDAÇÃO DA PRESTAÇÃO DE SERVIÇOS - NOTAS DE SERVIÇO DE COMUNICAÇÃO (CÓDIGO 21) E DE SERVIÇO DE TELECOMUNICAÇÃO (CÓDIGO 22).
**REGISTRO D610: ITENS DO DOCUMENTO CONSOLIDADO (CÓDIGO 21 E 22)
**REGISTRO D690: REGISTRO ANALÃTICO DOS DOCUMENTOS (CÓDIGOS 21 e 22).
**REGISTRO D695: CONSOLIDAÇÃO DA PRESTAÇÃO DE SERVIÇOS - NOTAS DE SERVIÇO DE COMUNICAÇÃO (CÓDIGO 21) E DE SERVIÇO DE TELECOMUNICAÇÃO (CÓDIGO 22) (EMPRESAS OBRIGADAS À ENTREGA DOS ARQUIVOS PREVISTOS NO CONVÊNIO ICMS 115/03).
**REGISTRO D696: REGISTRO ANALÃTICO DOS DOCUMENTOS (CÓDIGO 21 E 22)
**REGISTRO D697: REGISTRO DE INFORMAÇÕES DE OUTRAS UFs, RELATIVAMENTE AOS SERVIÇOS “NÃO-MEDIDOS†DE TELEVISÃO POR ASSINATURA VIA SATÉLITE.
**REGISTRO D990: ENCERRAMENTO DO BLOCO D.
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+"D990"+"|2|"
oTxt:Add(oTexto)
TOTALGERAL+=1
*----------------//
**BLOCO E: APURAÇÃO DO ICMS E DO IPI
TOTALBLOCOE:=1
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+"E001"+"|0|" //1BLOCO SEM DADOS INFORMADOS
oTxt:Add(oTexto)
TOTALBLOCOE+=1
TOTALGERAL+=1
*----------------//
**REGISTRO E100: PERÃODO DA APURAÇÃO DO ICMS.
E100REG :="E100"
E100DT_INI :=SUBS(DTOC(XDT),1,2)+SUBS(DTOC(XDT),4,2)+SUBS(DTOC(XDT),7,4)
E100DT_FIN :=SUBS(DTOC(XDT2),1,2)+SUBS(DTOC(XDT2),4,2)+SUBS(DTOC(XDT2),7,4)
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+E100REG+"|"+E100DT_INI+"|"+E100DT_FIN+"|"
oTxt:Add(oTexto)
TOTALBLOCOE+=1
TOTALGERAL+=1
*----------------//
**REGISTRO E110: APURAÇÃO DO ICMS – OPERAÇÕES PRÓPRIAS.
E110REG :="E110"
E110VL_TOT_DEB :=STRTRAN(ALLTRIM(STR(VL_TOT_DEB,10,2)),".",",")
E110VL_AJ_DEBITOS :=STRTRAN(ALLTRIM(STR(VL_AJ_DEBITOS,10,2)),".",",")
E110VL_TOT_AJ_DEBITOS :=STRTRAN(ALLTRIM(STR(VL_TOT_AJ_DEBITOS,10,2)),".",",")
E110VL_ESTORNOS_CRED :=STRTRAN(ALLTRIM(STR(VL_ESTORNOS_CRED,10,2)),".",",")
E110VL_TOT_CREDITOS :=STRTRAN(ALLTRIM(STR(VL_TOT_CREDITOS,10,2)),".",",")
E110VL_AJ_CREDITOS :=STRTRAN(ALLTRIM(STR(VL_AJ_CREDITOS,10,2)),".",",")
E110VL_TOT_AJ_CREDITOS :=STRTRAN(ALLTRIM(STR(VL_TOT_AJ_CREDITOS,10,2)),".",",")
E110VL_ESTORNOS_DEB :=STRTRAN(ALLTRIM(STR(VL_ESTORNOS_DEB,10,2)),".",",")
E110VL_SLD_CREDOR_ANT :=STRTRAN(ALLTRIM(STR(VL_SLD_CREDOR_ANT,10,2)),".",",")
E110VL_SLD_APURADO :=STRTRAN(ALLTRIM(STR(VL_SLD_APURADO,10,2)),".",",")
E110VL_TOT_DED :=STRTRAN(ALLTRIM(STR(VL_TOT_DED,10,2)),".",",")
E110VL_ICMS_RECOLHER :=STRTRAN(ALLTRIM(STR(VL_ICMS_RECOLHER,10,2)),".",",")
E110VL_SLD_CREDOR_TRANSPORTAR :=STRTRAN(ALLTRIM(STR(VL_SLD_CREDOR_TRANSPORTAR,10,2)),".",",")
E110DEB_ESP :=STRTRAN(ALLTRIM(STR(DEB_ESP,10,2)),".",",")
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+E110REG+"|"+E110VL_TOT_DEB+"|"+E110VL_AJ_DEBITOS+"|"+E110VL_TOT_AJ_DEBITOS+"|"+E110VL_ESTORNOS_CRED+"|"+E110VL_TOT_CREDITOS+"|"+E110VL_AJ_CREDITOS+"|"+E110VL_TOT_AJ_CREDITOS+"|"+E110VL_ESTORNOS_DEB+"|"+E110VL_SLD_CREDOR_ANT+"|"+E110VL_SLD_APURADO+"|"+E110VL_TOT_DED+"|"+E110VL_ICMS_RECOLHER+"|"+E110VL_SLD_CREDOR_TRANSPORTAR+"|"+E110DEB_ESP+"|"
oTxt:Add(oTexto)
TOTALBLOCOE+=1
TOTALGERAL+=1
*----------------//
**REGISTRO E111: AJUSTE/BENEFÃCIO/INCENTIVO DA APURAÇÃO DO ICMS
**REGISTRO E112: INFORMAÇÕES ADICIONAIS DOS AJUSTES DA APURAÇÃO DO ICMS.
**REGISTRO E113: INFORMAÇÕES ADICIONAIS DOS AJUSTES DA APURAÇÃO DO ICMS – IDENTIFICAÇÃO DOS DOCUMENTOS FISCAIS.
**REGISTRO E115: INFORMAÇÕES ADICIONAIS DA APURAÇÃO – VALORES DECLARATÓRIOS.
**REGISTRO E116: OBRIGAÇÕES DO ICMS RECOLHIDO OU A RECOLHER – OPERAÇÕES PRÓPRIAS.
E116REG :="E116"
E116COD_OR :="000"
E116VL_OR :=STRTRAN(ALLTRIM(STR(VL_SLD_APURADO,10,2)),".",",")
E116DT_VCTO :="10112012"
E116COD_REC :="046-2"
E116NUM_PROC :=""
E116IND_PROC :=""
E116PROC :=""
E116TXT_COMPL:=""
E116MES_REF :=SUBS(DTOC(XDT),4,2)+SUBS(DTOC(XDT),7,4)
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+E116REG+"|"+E116COD_OR+"|"+E116VL_OR+"|"+E116DT_VCTO+"|"+E116COD_REC+"|"+E116NUM_PROC+"|"+E116IND_PROC+"|"+E116PROC+"|"+E116TXT_COMPL+"|"+E116MES_REF+"|"
oTxt:Add(oTexto)
TOTALBLOCOE+=1
TOTALGERAL+=1
*----------------//
**REGISTRO E200: PERÃODO DA APURAÇÃO DO ICMS - SUBSTITUIÇÃO TRIBUTÃRIA
**REGISTRO E210: APURAÇÃO DO ICMS – SUBSTITUIÇÃO TRIBUTÃRIA.
**REGISTRO E220: AJUSTE/BENEFÃCIO/INCENTIVO DA APURAÇÃO DO ICMS SUBSTITUIÇÃO TRIBUTÃRIA.
**REGISTRO E230: INFORMAÇÕES ADICIONAIS DOS AJUSTES DA APURAÇÃO DO ICMS SUBSTITUIÇÃO TRIBUTÃRIA.
**REGISTRO E240: INFORMAÇÕES ADICIONAIS DOS AJUSTES DA APURAÇÃO DO ICMS SUBSTITUIÇÃO TRIBUTÃRIA – IDENTIFICAÇÃO DOS DOCUMENTOS FISCAIS.
**REGISTRO E250: OBRIGAÇÕES DO ICMS RECOLHIDO OU A RECOLHER – SUBSTITUIÇÃO TRIBUTÃRIA
**REGISTRO E500: PERÃODO DE APURAÇÃO DO IPI
E500REG :="E500"
E500IND_APUR:="0"
E500DT_INI :=SUBS(DTOC(XDT),1,2)+SUBS(DTOC(XDT),4,2)+SUBS(DTOC(XDT),7,4)
E500DT_FIN :=SUBS(DTOC(XDT2),1,2)+SUBS(DTOC(XDT2),4,2)+SUBS(DTOC(XDT2),7,4)
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+E500REG+"|"+E500IND_APUR+"|"+E500DT_INI+"|"+E500DT_FIN+"|"
oTxt:Add(oTexto)
TOTALBLOCOE+=1
TOTALGERAL+=1
*----------------//
**REGISTRO E510: CONSOLIDAÇÃO DOS VALORES DO IPI
**REGISTRO E520: APURAÇÃO DO IPI
E520REG :="E520"
E520SL_SD_ANT_IPI:="0,00"
E520VL_DEB_IPI :="0,00"
E520VL_CRED_IPI :="0,00"
E520VL_OD_IPI :="0,00"
E520VL_OC_IPI :="0,00"
E520VL_SC_IPI :="0,00"
E520VL_SD_IPI :="0,00"
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+E520REG+"|"+E520SL_SD_ANT_IPI+"|"+E520VL_DEB_IPI+"|"+E520VL_CRED_IPI+"|"+E520VL_OD_IPI+"|"+E520VL_OC_IPI+"|"+E520VL_SC_IPI+"|"+E520VL_SD_IPI+"|"
oTxt:Add(oTexto)
TOTALBLOCOE+=1
TOTALGERAL+=1
*----------------//
**REGISTRO E530: AJUSTES DA APURAÇÃO DO IPI.
**REGISTRO E990: ENCERRAMENTO DO BLOCO E
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|"+"E990"+"|"+ALLTRIM(STR(TOTALBLOCOE,4))+"|"
oTxt:Add(oTexto)
TOTALGERAL+=1
*----------------//
**BLOCO G – CONTROLE DO CRÉDITO DE ICMS DO ATIVO PERMANENTE CIAP
TOTALBLOCOG:=1
**REGISTRO G001: ABERTURA DO BLOCO G
G001reg:="G001"
G001ind_mov:="1" //bloco sem dados informados
*------------------------------------------------------------------------------------------------------------------------
oTexto="|"+G001reg+"|"+G001ind_mov+"|"
oTxt:Add(oTexto)
TOTALGERAL+=1
*----------------//
**REGISTRO G110: ICMS – ATIVO PERMANENTE – CIAP
**REGISTRO G125: MOVIMENTAÇÃO DE BEM OU COMPONENTE DO ATIVO IMOBILIZADO
**REGISTRO G126: OUTROS CRÉDITOS CIAP
**REGISTRO G130: IDENTIFICAÇÃO DO DOCUMENTO FISCAL
**REGISTRO G140: IDENTIFICAÇÃO DO ITEM DO DOCUMENTO FISCAL
**REGISTRO G990: ENCERRAMENTO DO BLOCO G
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|G990|2|"
oTxt:Add(oTexto)
TOTALGERAL+=1
*----------------//
**BLOCO H: INVENTÃRIO FÃSICO
**REGISTRO H001: ABERTURA DO BLOCO H
H001reg:="H001"
H001ind_mov:="1" //bloco sem dados informados
*------------------------------------------------------------------------------------------------------------------------
oTexto="|"+H001reg+"|"+H001ind_mov+"|"
oTxt:Add(oTexto)
TOTALGERAL+=1
*----------------//
**REGISTRO H005: TOTAIS DO INVENTÃRIO
**REGISTRO H010: INVENTÃRIO.
**REGISTRO H020: Informação complementar do Inventário.
**REGISTRO H990: ENCERRAMENTO DO BLOCO H.
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|H990|2|"
oTxt:Add(oTexto)
TOTALGERAL+=1
*----------------//
**BLOCO 1: OUTRAS INFORMAÇÕES
BLOCO1reg:="1001"
BLOCO1ind_mov:="0" //bloco COM dados informados
*------------------------------------------------------------------------------------------------------------------------
oTexto="|"+BLOCO1reg+"|"+BLOCO1ind_mov+"|"
oTxt:Add(oTexto)
TOTALGERAL+=1
*----------------//
**REGISTRO 1010: OBRIGATORIEDADE DE REGISTROS DO BLOCO 1
R1010REG:="1010"
STORE "N" TO R1010IND_EXP,R1010IND_CCRF,R1010IND_COMB,R1010IND_USINA,R1010IND_VA,R1010IND_VA,R1010IND_EE,R1010IND_CART,R1010IND_FORM,R1010IND_AER
*------------------------------------------------------------------------------------------------------------------------
oTexto="|"+R1010REG +"|"+R1010IND_EXP +"|"+R1010IND_CCRF+"|"+R1010IND_COMB+"|"+R1010IND_USINA+"|"+R1010IND_VA+;
"|"+R1010IND_EE+"|"+R1010IND_CART+"|"+R1010IND_FORM+"|"+R1010IND_AER +"|"
oTxt:Add(oTexto)
TOTALGERAL+=1
*----------------//
**REGISTRO 1100: REGISTRO DE INFORMAÇÕES SOBRE EXPORTAÇÃO.
**REGISTRO 1105: DOCUMENTOS FISCAIS DE EXPORTAÇÃO.
**REGISTRO- 1110: OPERAÇÕES DE EXPORTAÇÃO INDIRETA - MERCADORIAS DE TERCEIROS.
**REGISTRO 1200: CONTROLE DE CRÉDITOS FISCAIS - ICMS.
**REGISTRO 1210: UTILIZAÇÃO DE CRÉDITOS FISCAIS – ICMS
**REGISTRO 1300: MOVIMENTAÇÃO DIÃRIA DE COMBUSTÃVEIS
**REGISTRO 1310: MOVIMENTAÇÃO DIÃRIA DE COMBUSTÃVEIS POR TANQUE
**REGISTRO 1320: VOLUME DE VENDAS
**REGISTRO 1350: BOMBAS
**REGISTRO 1360: LACRES DA BOMBA
**REGISTRO 1370: BICOS DA BOMBA
**REGISTRO 1390: CONTROLE DE PRODUÇÃO DE USINA
**REGISTRO 1391: PRODUÇÃO DIÃRIA DA USINA
**REGISTRO 1400: INFORMAÇÃO SOBRE VALORES AGREGADOS
**REGISTRO 1500: NOTA FISCAL/CONTA DE ENERGIA ELÉTRICA (CÓDIGO 06) – OPERAÇÕES INTERESTADUAIS
**REGISTRO 1510: ITENS DO DOCUMENTO NOTA FISCAL/CONTA ENERGIA ELÉTRICA (CÓDIGO 06)
**REGISTRO 1600: TOTAL DAS OPERAÇÕES COM CARTÃO DE CRÉDITO E/OU DÉBITO
**REGISTRO 1700: DOCUMENTOS FISCAIS UTILIZADOS
**REGISTRO 1710: DOCUMENTOS FISCAIS CANCELADOS/INUTILIZADOS
**REGISTRO 1800: DCTA – DEMONSTRATIVO DE CRÉDITO DO ICMS SOBRE TRANSPORTE AÉREO
**REGISTRO 1900: INDICADOR DE SUB-APURAÇÃO DO ICMS
**REGISTRO 1910: PERÃODO DA SUB-APURAÇÃO DO ICMS
**REGISTRO 1920: SUB-APURAÇÃO DO ICMS
**REGISTRO 1921: AJUSTE/BENEFÃCIO/INCENTIVO DA SUB-APURAÇÃO DO ICMS
**REGISTRO 1922: INFORMAÇÕES ADICIONAIS DOS AJUSTES DA SUB-APURAÇÃO DO ICMS
**REGISTRO 1923: INFORMAÇÕES ADICIONAIS DOS AJUSTES DA SUB-APURAÇÃO DO ICMS – IDENTIFICAÇÃO DOS DOCUMENTOS FISCAIS
**REGISTRO 1925: INFORMAÇÕES ADICIONAIS DA SUB-APURAÇÃO – VALORES DECLARATÓRIOS
**REGISTRO 1926: OBRIGAÇÕES DO ICMS A RECOLHER – OPERAÇÕES REFERENTES À SUB-APURAÇÃO
**REGISTRO 1990: ENCERRAMENTO DO BLOCO 1
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|1990|3|"
oTxt:Add(oTexto)
TOTALGERAL+=1
*----------------//
**BLOCO 9: CONTROLE E ENCERRAMENTO DO ARQUIVO DIGITAL
**REGISTRO 9001: ABERTURA DO BLOCO 9
BLOCO9reg:="9001"
BLOCO9ind_mov:="0" //bloco com dados informados
*------------------------------------------------------------------------------------------------------------------------
oTexto="|"+BLOCO9reg+"|"+BLOCO9ind_mov+"|"
oTxt:Add(oTexto)
TOTALGERAL+=1
*----------------//
**REGISTRO 9900: REGISTROS DO ARQUIVO.
*------------------------------------------------------------------------------------------------------------------------
oTexto:="|9900|0000|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|0001|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|0005|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|0100|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|0150|"+ALLTRIM(STR(TOTAL150,4))+"|"
oTxt:Add(oTexto)
TOTALGERAL+=1
* oTexto:="|9900|0190|"+ALLTRIM(STR(TOTAL0190,4))+"|"
* oTxt:Add(oTexto)
* TOTALGERAL+=1
* oTexto:="|9900|0200|"+ALLTRIM(STR(TOTAL200,4))+"|"
* oTxt:Add(oTexto)
* TOTALGERAL+=1
oTexto:="|9900|1001|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|9001|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|9900|31|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|9990|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|9999|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|0990|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|C001|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|C100|"+ALLTRIM(STR(TOTAL100,4))+"|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|C170|"+ALLTRIM(STR(TOTAL170,4))+"|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|C190|"+ALLTRIM(STR(TOTAL190,4))+"|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|C990|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|D001|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|D990|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|E001|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|E100|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|E110|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|E116|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|E500|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|E520|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|E990|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|G001|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|G990|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|H001|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|H990|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|1990|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
oTexto:="|9900|1010|1|"
oTxt:Add(oTexto)
TOTALGERAL+=1
**REGISTRO 9990: ENCERRAMENTO DO BLOCO 9
oTexto:="|9990|34|"
oTxt:Add(oTexto)
TOTALGERAL+=1
**REGISTRO 9999: ENCERRAMENTO DO ARQUIVO DIGITAL.
*------------------------------------------------------------------------------------------------------------------------
oTexto="|9999|"+ALLTRIM(STR(TOTALGERAL,4))+"|"
oTextofin:=""
oTxt:Add(oTexto)
oTxt:Add(oTextoFin)
*----------------//
*----------FIM DO ARQUIVO
MSGINFO("Arquivo TXT Criado com Sucesso!!!","AVISO DE ALERTA")
oTxt:Close()
EndIf
SELE 18
ORDSCOPE(0,NIL)
ORDSCOPE(1,NIL)
SELE 19
ORDSCOPE(0,NIL)
ORDSCOPE(1,NIL)
SELE 16
ORDSCOPE(0,NIL)
ORDSCOPE(1,NIL)
SELE 20
ORDSCOPE(0,NIL)
ORDSCOPE(1,NIL)
RETURN(.T.)
*******final