28 Mai 2020 20:47
29 Mai 2020 11:57
29 Mai 2020 12:54
está o layout e manuais ok
29 Mai 2020 14:25
29 Mai 2020 15:33
/*
*/
Static cSepa := '|'
Static CRLF := Chr(13)+Chr(10)
//Static lTestando:= ""
//--------------------------------------------------------------------
Function Spedpis()
REQUEST DBFCDX
RDDSETDEFAULT("dbfcdx")
DBSETDRIVER("dbfcdx")
set confirm on
set deleted on
set bell off
set scoreboard off
set date british
set epoch to 1950
Set date format to "DD/MM/YYYY"
set exclusive off
SET WRAP ON
dDATAPROC := dDATAPROC := Date()
Configurar()
IF MsgConf("Confirma Geracao SPED Contribuicoes ?","1") == .t.
GeraSpedFiscal_Pis()
Endif
Return Nil
//--------------------------------------------------------
Function GeraSpedFiscal_Pis()
private dDATAINI := BOM( dDATAPROC )
private dDATAFIM := EOM( dDATAPROC )
private cNomeTxt := "c:\temp\SPED_" + strzero( year( dDATAPROC ), 4, 0 ) + "_" + strzero( month( dDATAPROC ), 2, 0 ) + ".TXT"
private nTMP := fcreate( "c:\temp\PIS_" + strzero( year( dDATAPROC ), 4, 0 ) + "_" + strzero( month( dDATAPROC ), 2, 0 ) + ".TXT" )
Close All
Cria_C100()
Cria_C113() // Devolucao Mercadoria
Cria_C170()
Cria_C180()
Cria_C181()
Cria_C185()
Cria_C190()
Cria_C191()
Cria_C195()
Cria_E110()
Cria_E210()
Cria_M100()
Cria_C491()
Cria_C495()
Close All
Sele 1
Use Forneced
Set index to Forneced
Sele 2
Use Produto Alias Prod
Set index to Produto
Sele 3
Use ArqNotas Alias Nota
Set index to Arqnotas
Sele 4
Use Agendas Alias Agenda
Set index to Agendas
Sele 5
Use Moviment Alias Mvto
Set index to Moviment
Sele 6
Use c:\temp\C100 alias c100 Exclusive
Index on CodPart+NumDoc+Ser to c:\temp\C100
Set index to c:\temp\C100
Sele 7
Use c:\temp\C170 alias c170 Exclusive
Sele 8
Use c:\temp\C190 alias c190 Exclusive
Index on CODITEM tag c190_1 to c:\temp\C190
Set index to c:\temp\c190
Sele 9
use c:\temp\E110 Alias E110 Exclusive
Sele 10
use c:\temp\E210 Alias E210 Exclusive
Index on JAFFiltro to c:\temp\E210
Sele 11
use c:\temp\M100 Alias M100 Exclusive
Sele 12
Use c:\temp\C113 alias C113 Exclusive
Sele 13
Use c:\temp\C491 alias C491 Exclusive
Index on CODITEM to c:\temp\C491
Sele 14
Use c:\temp\C495 alias C495 Exclusive
Index on CODITEM to c:\temp\C495
Sele 15
//Use (xPathGZ+'movcaixa') alias GZ
Use (xPathGZ+'movoutra') alias GZ
Alerta(' necessa rio fazer a exporta‡Æo do Movimento'+Chr(10)+;
'no GZ Sistema para Gera‡Æo do Arquivo com os Itens'+chr(10)+;
'vendido no Periodo'+ Chr(10)+;
xPathGZ+'MOVOUTRA.DBF' )
If !File(xPathGZ+'movoutra.cdx')
Centra(24,'Criando Arquivo para Uso Movcaixa.cdx')
index on DataMovto Tag MovCaiDt to c:\temp\MovOutra ;
For( Gz->DataMovto >=dDATAINI .and. Gz->DataMovto <= dDATAFIM ;
.And. ;
Status=='01' ; // Produtos Apenas
.And. ;
Cancelado==.f. ; // Sem Produtos Cancelados
)
Endif
Set index to c:\temp\MovOutra
SELE 16
USE PISCOFIN ALIAS TABPIS
SET INDEX TO PISCOFIN
Sele 17
Use c:\temp\c191 alias C191 Exclusive
Index on JAFFiltro to c:\temp\c191
Sele 18
Use c:\temp\c195 alias C195 Exclusive
Index on JAFFiltro to c:\temp\c195
//---- Resumo de Entradas(NFe Modelo 55)
Sele 19
Use c:\temp\C180 alias c180 Exclusive
Index on CODITEM tag c180_1 to c:\temp\C180
Set index to c:\temp\c180
Sele 20
Use c:\temp\c181 alias C181 Exclusive
Index on C181->CSTPIS+C181->CFOP+Str(C181->ALIQPIS,8,4)+C181->JAFFiltro to c:\temp\c181
Sele 21
Use c:\temp\c185 alias C185 Exclusive
Index on C185->CSTCOF+C185->CFOP+Str(C185->ALIQCOF,8,4)+C185->JAFFiltro to c:\temp\c185
Sele 22
Use CADNCM
Set index to CADNCM
nLinha_BLOCOC_C100 := 0
nLinha_BLOCOC_C113 := 0
nLinha_BLOCOC_C170 := 0
nLinha_BLOCOC_C180 := 0
nLinha_BLOCOC_C181 := 0
nLinha_BLOCOC_C185 := 0
nLinha_BLOCOC_C190 := 0
nLinha_BLOCOC_C191 := 0
nLinha_BLOCOC_C195 := 0
nLinha_BLOCOC_C490 := 0
nLinha_BLOCOC_C491 := 0
nLinha_BLOCOC_C495 := 0
nLinha_BLOCOH_010 := 0
nLinha_BLOCOE_E200 := 0
nLinha_BLOCOE_E210 := 0
nLinhasBloco0 := 0
wRegistros_140 := {}
wRegistros_150 := {}
wRegistros_200 := {}
wBloco_Soma_9990 := {}
wRegistros_C010 := 0
IF MsgConf("Inicia Geracao do SPED Pis/Cofins ?","1") == .f.
Close all
Quit
Endif
GeraBlocoC() // Gera os Dados Em DBF
//18-07-2013 APENAS UM TESTE CASO QUEIRA GERAR E SO LIBERAR
// Alterado para perar pelo movoutra
GeraDados_C491() // Gera Dados C491 (Dados Venda ECF)
Func_bloco0()
Func_BlocoA() // Prestadora de Servicos
Func_BlocoC_DetalhaNFe_C170() // Grava o TXT apos Gerado Func_BlocoC490()// Dados de ECF
*Func_BlocoC_ResumoC190() // Grava o TXT apos Gerado Func_BlocoC490()// Dados de ECF
Func_BlocoD() // Vazio
*Func_BlocoE() // ICMS E IPI
Func_BlocoF() // Vazio
*Func_BlocoG() // Vazio
*Func_BlocoH() // INVENTARIO
Func_BlocoM() // Vazio
Func_Bloco1001()// Vazio
Aadd(wBloco_Soma_9990,{'C100',nLinha_BLOCOC_C100} )
Aadd(wBloco_Soma_9990,{'C170',nLinha_BLOCOC_C170} )
Aadd(wBloco_Soma_9990,{'C180',nLinha_BLOCOC_C180} )
Aadd(wBloco_Soma_9990,{'C181',nLinha_BLOCOC_C181} )
Aadd(wBloco_Soma_9990,{'C185',nLinha_BLOCOC_C185} )
Aadd(wBloco_Soma_9990,{'C190',nLinha_BLOCOC_C190} )
Aadd(wBloco_Soma_9990,{'C191',nLinha_BLOCOC_C191} )
Aadd(wBloco_Soma_9990,{'C195',nLinha_BLOCOC_C195} )
Aadd(wBloco_Soma_9990,{'C490',nLinha_BLOCOC_C490} )
Aadd(wBloco_Soma_9990,{'C491',nLinha_BLOCOC_C491} )
Aadd(wBloco_Soma_9990,{'C495',nLinha_BLOCOC_C495} )
Func_bloco9() // Encerramento
fclose( nTMP )
Return Nil
//--------------------------------------------------------
Function Func_bloco0()
nLinhasBloco := 0
Sele Forneced
OrdSetFocus('Forneced')
Go top
Seek cEmpresa
If !Found()
Alerta('Erro no cadastro da Empresa.. impossivel Montar Arquivo!')
Return nil
Endif
Reg := '0000'
Cod_ver := '003' // 002 03.06.2013
Tipo_Escrit := '0'
ind_sit_Esp := '0'
Num_rec_anterior:= '' // Ver
Dt_ini := LimpaStr(DTOC(dDATAINI))
Dt_Fim := LimpaStr(DtoC(dDATAFIM))
cNome := Alltrim(Substr(Forneced->Razao,1,40))
cCNPJ := StrZero(val(LimpaStr(Forneced->CGC)),14)
cUF := Forneced->UF
cCod_Num := Forneced->IBGE_cida
cSuframa := ''
ind_Nat_Pj := '00'
Ind_Ativ := '2'
cTxt := Reg +cSepa+;
Cod_ver +cSepa+;
Tipo_Escrit +cSepa+;
ind_sit_Esp +cSepa+;
Num_rec_anterior+cSepa+;
Dt_ini +cSepa+;
Dt_Fim +cSepa+;
cNome +cSepa+;
cCNPJ +cSepa+;
cUF +cSepa+;
cCod_Num +cSepa+;
cSuframa +cSepa+;
ind_Nat_Pj +cSepa+;
Ind_Ativ +cSepa
Fwrite( nTMP,cSepa+cTxt+CRLF)
Aadd(wBloco_Soma_9990,{'0000',1} )
// Abertura de Bloco 0
cTxt := '0001'+cSepa+'0'+cSepa // 0-Com Movto 1-Sem Mvto
Fwrite( nTMP,cSepa+cTxt+CRLF )
Aadd(wBloco_Soma_9990,{'0001',1} )
// Bloco 0 Registro 0100 - DADOS DO CONTABILISTA
Reg := '0100'
cNome := Alltrim(xContador_nome)//'EDSON RUSSIGNOLIA'
cCpf := xContador_cpf //'24912262862'
cCRC := xContador_crc //StrZero(123456789,11)
cCNPJ := ''
cCEP := ''
cEND := ''
cNUM := ''
cCompl := ''
cBairro := ''
cFone := ''
cFax := ''
cEmail := ''
cCod_num := xContador_IBGE//'3534708'
cTxt := Reg +cSepa+;
cNome +cSepa+;
cCpf +cSepa+;
cCRC +cSepa+;
cCNPJ +cSepa+;
cCEP +cSepa+;
cEND +cSepa+;
cNUM +cSepa+;
cCompl +cSepa+;
cBairro +cSepa+;
cFone +cSepa+;
cFax +cSepa+;
cEmail +cSepa+;
cCod_num +cSepa
Fwrite( nTMP,cSepa+cTxt+CRLF)
Aadd(wBloco_Soma_9990,{'0100',1} )
//--- Registro 0110
Reg := '0110'
cTxt := Reg +cSepa+;
'1' +cSepa+;
'1' +cSepa+;
'1' +cSepa+;
"" +cSepa // 03.06.2013
Fwrite( nTMP,cSepa+cTxt+CRLF)
Aadd(wBloco_Soma_9990,{'0110',1 } )
//---- Bloco 0 - Registro 140 - Tabela de Cadastro do Estabelecimentos
nB0Reg140 := MontaBloco0_Reg140(wRegistros_140)
//---- Bloco 0 - Registro 150 - Tabela de Cadastro do Participante
nB0Reg150 := MontaBloco0_Reg150(wRegistros_150)
//---- Bloco 0 - Registro 190 - INDENTIFICACAO DAS UNIDADES DE MEDIDAS
nB0Reg190 := MontaBloco0_Reg190(wRegistros_200)
//---- Bloco 0 - Registro 200 - Tabela de Identificao do Item(Produto e Servico)
nB0Reg200 := MontaBloco0_Reg200(wRegistros_200)
//-- Fechando bloco 0
Aadd(wBloco_Soma_9990,{'0140',nB0Reg140} )
Aadd(wBloco_Soma_9990,{'0150',nB0Reg150} )
Aadd(wBloco_Soma_9990,{'0190',nB0Reg190} )
Aadd(wBloco_Soma_9990,{'0200',nB0Reg200} )
Aadd(wBloco_Soma_9990,{'0990',1} )
nLinhasBloco0 := 1+1+1+1+nB0Reg140+nB0Reg150+nB0Reg190+nB0Reg200+1
cTxt := '0990'+cSepa+Alltrim(Str(nLinhasBloco0))+cSepa
Fwrite( nTMP,cSepa+cTxt+CRLF )
Return Nil
//------------------------------------------------
Static Function LimpaStr(Limpar)
Local x := Len(Limpar)
Local Numeros:= "0123456789"
Local nRet := ''
Local cString:= Limpar
For x:= 1 to Len(cString)
If Substr(cString,x,1)$Numeros
nRet += Substr(cString,x,1)
Endif
Next
Return (nRet)
//--------------------------------------
Static Function MontaBloco0_Reg150(lLista)
/* Monta os registros com Base na lLista
e Retorna a quantidade de Registros
*/
Local x ,nOk := 0
Sele Forneced
OrdSetFocus('Forneced')
For x:= 1 to Len(lLista)
Go top
Seek lLista[x]
If !Found()
Loop
Endif
nOk++
Reg := '0150'
Cod_part := Forneced->Codigo
Nome := Alltrim(Forneced->Razao)
Cod_pais := '1058'
CNPJ := Iif(Forneced->PessJurid==.t.,StrZero(val(LimpaStr(Forneced->CGC)),14),'')
CPF := Iif(Forneced->PessJurid==.f.,StrZero(val(LimpaStr(Forneced->CGC)),11),'')
cIE := Iif(Forneced->PessJurid==.f.,'',Alltrim(Str(Val(LimpaStr(Forneced->IE)),14)))
cIE := Iif(cIE=='0','',cIE)
Cod_Num := Alltrim(Forneced->IBGE_cida)
Suframa := ''
End := Alltrim(Forneced->Endereco)
Num := ''
Compl := ''
cBairro := Alltrim(Forneced->Bairro)
cTxt := Reg +cSepa+;
Cod_part +cSepa+;
Nome +cSepa+;
Cod_pais +cSepa+;
CNPJ +cSepa+;
CPF +cSepa+;
cIE +cSepa+;
Cod_Num +cSepa+;
Suframa +cSepa+;
End +cSepa+;
Num +cSepa+;
Compl +cSepa+;
cBairro +cSepa
Fwrite( nTMP,cSepa+cTxt+CRLF)
Next
Return nOk
//--------------------------------------
Static Function MontaBloco0_Reg190(lLista)
/* Monta os registros com Base na lLista
e Retorna a quantidade de Registros
*/
Local x ,nOk := 0 , wEmbala := {}, i, cPesq
//--- Correcao para evitar faltar unidade.
Aadd(wEmbala ,{'UN',"Unidades"})
Sele Prod
OrdSetFocus('Prod01')
For x:= 1 to Len(lLista)
Go top
Seek lLista[x]
If !Found()
Loop
Endif
cPesq := Alltrim(Prod->EMBALTITUL)
If Empty(cPesq)
Loop
Endif
nPos := Ascan(wEmbala, {|x|x[1]==cPesq})
If nPos==0
cTitulo := 'Unidades'
If cPesq=="KG"
cTitulo := 'Kilo'
ElseIf cPesq=="CX"
cTitulo := 'Caixa'
Endif
Aadd(wEmbala,{cPesq,cTitulo})
Endif
Next
If Len(wEmbala)==0
Aadd(wEmbala ,{'UN',"Unidades"})
Endif
For i:= 1 to Len(wEmbala)
nOk++
cTxt := '0190'+cSepa+Alltrim(Substr(wEmbala[i,1],1,6))+;
cSepa+Alltrim(Substr(wEmbala[i,2],1,6))+cSepa
Fwrite( nTMP,cSepa+cTxt+CRLF)
Next
Return nOk
//--------------------------------------
Static Function MontaBloco0_Reg200(lLista)
/* Monta os registros com Base na lLista
e Retorna a quantidade de Registros
*/
Local x ,nOk := 0
For x:= 1 to Len(lLista)
Sele Prod
OrdSetFocus('Prod01')
Go top
Seek lLista[x]
If !Found()
Loop
Endif
nOk++
Reg := '0200'
Cod_item := Alltrim(Prod->Codigo)
Descr_item := Alltrim(Prod->Descricao)
Cod_Barra := Alltrim(Prod->Ean)
Cod_ant_item:= ''
Univ_Inv := Iif(Empty(Prod->EMBALTITUL),"UN",Alltrim(Prod->EMBALTITUL))
Tipo_item := '00' // Ver Melhor
Cod_NCM := Alltrim(Iif(Empty(Prod->MCN),'10203040',Prod->MCN))
Ex_IPi := ''
Cod_gen := '10' // Fazer Cadastro
Cod_lst := ''
Aliq_icms := Alltrim(Transf(Prod->icmsv,'@EZ 999.99'))
Cod_NCM := ValidaCodigoNCM(Cod_NCM)
cTxt := Reg +cSepa+;
Cod_item +cSepa+;
Descr_item +cSepa+;
Cod_Barra +cSepa+;
Cod_ant_item+cSepa+;
Univ_Inv +cSepa+;
Tipo_item +cSepa+;
Cod_NCM +cSepa+;
Ex_IPi +cSepa+;
Cod_gen +cSepa+;
Cod_lst +cSepa+;
Aliq_icms +cSepa
Fwrite( nTMP,cSepa+cTxt+CRLF)
Next
Return nOk
//------------------------------------------------
Function Cria_C100()
Local Estru := {}
estru := { {'Reg' , 'C' , 04,0 },;
{'IndOper' , 'C' , 01,0 },;
{'IndEmit' , 'C' , 01,0 },;
{'CodPart' , 'C' , 05,0 },; // Codigo JAF
{'CodMod' , 'C' , 02,0 },;
{'CodSit' , 'C' , 02,0 },;
{'Ser' , 'C' , 03,0 },;
{'NumDoc' , 'C' , 09,0 },; // Converte o Atual e 10
{'chvnfe' , 'C' , 44,0 },;
{'dtdoc' , 'D' , 01,0 },;
{'Dtes' , 'D' , 01,0 },;
{'vldoc' , 'N' , 13,2 },;
{'indpagto' , 'C' , 01,0 },; // Padrao Avista
{'vldesc' , 'N' , 13,2 },;
{'vlabatnt' , 'N' , 13,2 },;
{'vlmerc' , 'N' , 13,2 },;
{'indfrt' , 'C' , 01,0 },;
{'vlfrt' , 'N' , 13,2 },;
{'vlSeg' , 'N' , 13,2 },;
{'vloutda' , 'N' , 13,2 },;
{'vlbcicms' , 'N' , 13,2 },;
{'vlicms' , 'N' , 13,2 },;
{'vlbcicmsst','N' , 13,2 },;
{'vlicmsst' , 'N' , 13,2 },;
{'vlipi' , 'N' , 13,2 },;
{'vlpis' , 'N' , 13,2 },;
{'vlcofins' , 'N' , 13,2 },;
{'vlpisst' , 'N' , 13,2 },;
{'vlconfisst','N' , 13,2 } }
dbcreate('c:\temp\C100.dbf',Estru)
Return Nil
//------------------------------------------------
Function Cria_C113()
Local Estru := {}
estru := { {'Reg' , 'C' , 04,0 },;
{'IndOper' , 'C' , 01,0 },;
{'IndEmit' , 'C' , 01,0 },;
{'CodPart' , 'C' , 05,0 },; // Codigo JAF
{'CodMod' , 'C' , 02,0 },;
{'Ser' , 'C' , 04,0 },;
{'sub' , 'C' , 03,0 },;
{'NumDoc' , 'C' , 09,0 },; // Converte o Atual e 10
{'dtdoc' , 'D' , 01,0 },;
{'JAFFiltro' ,'C' , 20,0 } } // Antigo
dbcreate('c:\temp\C113.dbf',Estru)
Return Nil
//------------------------------------------------
Function Cria_C170()
Local Estru := {}
estru := { {'Reg' , 'C' , 04,0 },;
{'numitem' , 'C' , 03,0 },;
{'Coditem' , 'C' , 05,0 },;
{'descricao', 'C' , 60,0 },;
{'qtd' , 'N' , 14,5 },;
{'unid' , 'C' , 06,0 },;
{'vlitem' , 'N' , 13,2 },;
{'vldesc' , 'N' , 13,2 },;
{'indmov' , 'c' , 01,0 },;
{'csticms' , 'c' , 03,0 },;
{'cfop' , 'c' , 04,0 },;
{'codnat' , 'c' , 10,0 },;
{'vlbcicms' , 'N' , 13,2 },;
{'Aliqicms' , 'N' , 06,2 },;
{'vlicms' , 'N' , 13,2 },;
{'vlbcicmsst','N' , 13,2 },;
{'aliqst' , 'N' , 13,2 },;
{'vlicmsst' , 'N' , 13,2 },;
{'indapur' , 'c' , 01,0 },;
{'cstipi' , 'c' , 02,0 },;
{'codenq' , 'c' , 03,0 },;
{'vlbcipi' , 'N' , 13,2 },;
{'aliqipi' , 'N' , 06,2 },;
{'vlipi' , 'N' , 13,2 },;
{'cstpis' , 'c' , 02,0 },;
{'vlbcpis' , 'N' , 13,2 },; // {'aliqpis' , 'N' , 13,2 },;
{'quantbcpis','N' , 13,2 },;
{'aliqpis' , 'N' , 13,4 },;
{'vlpis' , 'N' , 13,2 },;
{'cstcofins', 'C' , 02,0 },;
{'vlbcconfis','N' , 13,2 },;
{'aliqconfis','N' , 06,2 },;
{'qtdbcconfi','N' , 13,3 },; //{'aliqconfis','N' , 13,4 },;
{'vlcofins' ,'N' , 13,2 },;
{'codcta' ,'C' , 50,0 },;
{'JAFFiltro' ,'C' , 20,0 } } // 16
dbcreate('c:\temp\C170.dbf',Estru)
Return Nil
//------------------------------------------------
Function Cria_C190()
Local Estru := {}
estru := { {'Reg' , 'C' , 04,0 },;
{'CODMOD' , 'C' , 02,0 },;
{'DTREFINI' , 'D' , 08,0 },;
{'DTREFFIM' , 'D' , 08,0 },;
{'CODITEM' , 'C' , 05,0 },;
{'CODNCM' , 'C' , 08,0 },;
{'EXPIPI' , 'C' , 03,0 },;
{'VLTOTITEM', 'N' , 13,2 },;
{'JAFFiltro', 'C' , 05,0 } } // Codigo Fornecedor
dbcreate('c:\temp\C190.dbf',Estru)
Return Nil
//------------------------------------------------
Function Cria_C191()
Local Estru := {}
estru := { {'Reg' , 'C' , 04,0 },;
{'CNPJPART' , 'C' , 14,0 },;
{'CSTPIS' , 'C' , 02,0 },;
{'CFOP' , 'C' , 04,0 },;
{'VLRITEM' , 'N' , 13,2 },;
{'VLRDESC' , 'N' , 13,2 },;
{'VLRBCPIS' , 'N' , 13,2 },;
{'ALIQPIS' , 'N' , 08,4 },;
{'QTDBCPIS' , 'N' , 13,3 },;
{'ALIQPISQT', 'N' , 13,4 },;
{'VLPIS' , 'N' , 13,2 },;
{'CODCTA' , 'C' , 60,0 },;
{'JAFFiltro', 'C' , 5+5+2+4,0 } } // Item+CNPJ
dbcreate('c:\temp\C191.dbf',Estru)
Return Nil
//------------------------------------------------
Function Cria_C195()
Local Estru := {}
estru := { {'Reg' , 'C' , 04,0 },;
{'CNPJPART' , 'C' , 14,0 },;
{'CSTCOF' , 'C' , 02,0 },;
{'CFOP' , 'C' , 04,0 },;
{'VLRITEM' , 'N' , 13,2 },;
{'VLRDESC' , 'N' , 13,2 },;
{'VLRBCCOF' , 'N' , 13,2 },;
{'ALIQCOF' , 'N' , 08,4 },;
{'QTDBCCOF' , 'N' , 13,3 },;
{'ALIQCOFQT', 'N' , 13,4 },;
{'VLCOF' , 'N' , 13,2 },;
{'CODCTA' , 'C' , 60,0 },;
{'JAFFiltro', 'C' , 5+5+2+4,0 } } // Item/Part/CST/CFOP
dbcreate('c:\temp\C195.dbf',Estru)
Return Nil
//------------------------------------------
Static Function Cria_E110()
Local Estru := {}
Estru := { {"Reg" , 'C',04,0 },;
{"VlTotDeb" , "N",13,2 },;
{"VlAjuDeb" , "N",13,2 },;
{"VlTotAJDb" , "N",13,2 },;
{"VlEstCred" , "N",13,2 },;
{"VlTotCred" , "N",13,2 },;
{"VlAjCred" , "N",13,2 },;
{"VlTotAjcd" , "N",13,2 },;
{"VlEstdedb" , "N",13,2 },;
{"Vlsldcrea" , "N",13,2 },;
{"Vlsldapur" , "N",13,2 },;
{"VlTotredu" , "N",13,2 },;
{"Vlicmsrec" , "N",13,2 },;
{"Vlsdcdtrs" , "N",13,2 },;
{"debesp" , "N",13,2 } }
Dbcreate('c:\temp\E110.dbf',Estru)
Return nil
//------------------------------------------
Static Function Cria_E210()
Local Estru := {}
Estru := { {"Reg" , 'C',04,0 },;
{"Indmovst" , "c",01,0 },;
{"VLSDCRDAST", "N",13,2 },;
{"VLDEVOLST" , "N",13,2 },;
{"VLRESS_ST" , "N",13,2 },;
{"VLOUTCRDST", "N",13,2 },;
{"VLAJCRDST" , "N",13,2 },;
{"VLRETE_ST" , "N",13,2 },;
{"VLOUTDBST" , "N",13,2 },;
{"VLAJTDBST" , "N",13,2 },;
{"VLSLDDAST" , "N",13,2 },;
{"VLDEDUCST" , "N",13,2 },;
{"VLICMRCST" , "N",13,2 },;
{"VSLDCRSTTR", "N",13,2 },;
{"DRBESPST" , "N",13,2 },;
{'JAFFiltro' , 'C',02,0 } } // UF
Dbcreate('c:\temp\E210.dbf',Estru)
Return nil
//------------------------------------------
Function GeraBlocoC()
Local cPesq, _cPesq
wListaNotas := {}
*Aadd(wListaNotas,546001) // Danone
*Aadd(wListaNotas,2712070) // Spaipa
*Aadd(wListaNotas,1253) // Elcio Produtor
wListaNotas := CarregaListaTeste()
lTestando2 := .f.
Centra(24,'Selecionando Notas......')
Sele Nota
Index on Nota->Numero_Nf + Nota->Serie_Nf + Nota->Cli_Codi to C:\temp\Nota ;
For ( Nota->data_lc >=dDATAINI ;
.And. ;
Nota->data_lc <=dDataFim )
//dbedit(00,00,24,79)
Go top
//--- Colocando Apenas um Estabelecimento
nPos := Ascan(wRegistros_140,cEmpresa)
if nPos==0
Aadd(wRegistros_140,cEmpresa)
Endif
nCorte := 0
Do While ! Eof()
If lSomentePDV=="S"
Exit
Endif
If lTestando2
nPos := Ascan(wListaNotas,Val(Nota->Numero_Nf))
If nPos==0
Skip+1
Loop
Endif
Endif
If nCorte>100
Exit
Endif
//cCodModelo := Nota->Especie_Nf
cCodModelo := '55' // Nota->Especie_Nf
If Nota->status#"A" // Nota nao Atualizada Ainda..
Skip+1
Loop
Endif
// Testando Agendas
Sele Agenda
OrdSetFocus('Agd01')
Go top
Seek Nota->agenda
If Found()
If Agenda->CONTABILI==.f.
Sele Nota
Skip+1
Loop
Endif
If !Empty(Agenda->MODELONF)
cCodModelo := Agenda->MODELONF
Endif
Endif
_Cnpj:= ''
Sele Forneced
OrdSetFocus('Forneced')
Go top
Seek Nota->cli_codi
If Found()
If Forneced->PessJurid==.t.
_Cnpj := StrZero(val(LimpaStr(Forneced->CGC)),14)
Else
_Cnpj := StrZero(val(LimpaStr(Forneced->CGC)),11)
Endif
Endif
lNotaDevolucao:= Iif(Nota->movto=='D',.t.,.f.)
lNotaDevolucao:= .f.
cTipoOperacao := Iif(Nota->movto=='C','0','1') // Emissao Nota Propria
cChaveNfe := Nota->Chave_Nfe // Ver tem que ter a Chave da NFE
If cTipoOperacao=='1'
cCodModelo:= '01'
cCodModelo:= '55' // Somente NFe
Endif
Sele C100
Append Blank
Repla C100->Reg With 'C100'
Repla C100->IndOper With cTipoOperacao
Repla C100->IndEmit With Iif(cTipoOperacao=='0','1','0')
Repla C100->CodPart With Nota->cli_codi
Repla C100->CodSit With '00'
Repla C100->CodMod With cCodModelo//Nota->Especie_Nf
Repla C100->Ser With Iif(Alltrim(Nota->serie_nf)=='UN','1',Nota->serie_nf)
Repla C100->NumDoc With StrZero(val(Nota->numero_nf),9)
//Repla C100->chvnfe With Iif(C100->CodMod=='55',Substr(cChaveNfe,4,44),'')
//Repla C100->chvnfe With Right(Alltrim(Nota->Chave_Nfe),44)
Repla C100->chvnfe With PegaChaveNfe(Nota->Chave_Nfe)
If Empty(C100->chvnfe)
Repla C100->CodMod With "01"
Endif
* 21/03/2012
*If C100->IndEmit=='1'
* Repla C100->chvnfe With ''
*Endif
Repla C100->dtdoc With Nota->data_nf
Repla C100->Dtes With Nota->data_nf
Repla C100->vldoc With Nota->valor_nf
Repla C100->indpagto With '0'
Repla C100->vldesc With Nota->vlr_Desco
//Repla C100->vlabatnt With Nota->
//Repla C100->vlmerc With Nota->ValorProd // Atulizado pelo C170
Repla C100->indfrt With '1'
//Repla C100->vlfrt With Nota->
//Repla C100->vlSeg With Nota->
Repla C100->vloutda With Nota->ValorOutro
Repla C100->vlbcicms With Nota->BaseIcms
Repla C100->vlicms With Nota->ValorIcms
Repla C100->vlbcicmsst With Nota->BaseSubstr
Repla C100->vlicmsst With Nota->ValorSubst
Repla C100->vlipi With Nota->ValorIpi
//Esta Solicitando a geracao do C190
*Repla C100->vlpis With Nota->VLRPIS
*Repla C100->vlcofins With Nota->VLRCOFINS
*Repla C100->vlpisst With Nota->
*Repla C100->vlconfisst With Nota->
nPos := Ascan(wRegistros_150,Nota->cli_codi)
if nPos==0
Aadd(wRegistros_150,Nota->cli_codi)
Endif
cNota := Nota->numero_nf+Space(0)
cSerie:= Nota->serie_nf
cForne:= Nota->cli_codi
cTpoRegUF := Nota->UF_NOTA+Iif(C100->IndOper=='0','E',"S")
//--- JAFFILTRO
_cPesq := C100->CodPart+C100->NumDoc+C100->Ser
If lNotaDevolucao==.t.
GeraRegistroC113(_cPesq)
Endif
Sele Mvto
OrdSetFocus("movimen1")
Go Top
Seek (cNota+Substr(cSerie,1,3)+cForne)
If !Found()
//--Nota sem item Nao pode Enviar
Sele C100
Repla C100->reg With 'X100'
Sele Nota
Skip+1
Loop
Endif
Centra(24,'Selecionando Nota......'+cNota+'/'+cForne)
nSeq := 1
wTotalCofins := 0
wTotalPIS := 0
wTotalMERC := 0
Do While( Mvto->nf_num == cNota .And. ;
Mvto->nf_serie == Substr(cSerie,1,3) .And. ;
Mvto->nf_dest == cForne .and. ! Eof() )
nQuant := iif(Empty(Mvto->Qsaida),Mvto->Qentrada,Mvto->Qsaida)
nValor := iif(Empty(Mvto->Qsaida),Mvto->Custo_nf,Mvto->Venda)
cEmbal := "UN"
cCodMCN:= ''
Sele Prod
OrdSetFocus('Prod01')
Go top
Seek Mvto->Codigo
If Found()
cEmbal := Iif(Empty(Prod->EMBALTITUL),"UN",Alltrim(Prod->EMBALTITUL))
cCodMCN:= ValidaCodigoNCM(Prod->MCN)
Endif
cCfopIcms:= Mvto->nf_cfo
If cTipoOperacao=='0' // Quebra galho
If Substr(cCfopIcms,1,1)=="5"
cCfopIcms:='1'+Substr(cCfopIcms,2,3)
ElseIf Substr(cCfopIcms,1,1)=="6"
cCfopIcms:='2'+Substr(cCfopIcms,2,3)
Endif
Endif
Sele C170
Append Blank
Repla C170->Reg With 'C170'
Repla C170->numitem With StrZero(nSeq++,3)
Repla C170->Coditem With Mvto->Codigo
Repla C170->descricao With Mvto->Descricao
Repla C170->qtd With nQuant
Repla C170->unid With cEmbal
Repla C170->vlitem With nValor*nQuant
//Repla C170->vldesc With Mvto->
Repla C170->indmov With '0'
Repla C170->csticms With StrZero(Val(Mvto->cst_nf),3)
//Repla C170->cfop With LimpaStr(Mvto->nf_cfo)
Repla C170->cfop With LimpaStr(cCfopIcms)
//Repla C170->codnat With Mvto->
Repla C170->vlbcicms With Mvto->BASEICMS
Repla C170->Aliqicms With Mvto->icmsc
Repla C170->vlicms With Mvto->VLRICMS
Repla C170->vlbcicmsst With Mvto->BASEST
//Repla C170->aliqst With Mvto->
Repla C170->vlicmsst With Mvto->VLRST
Repla C170->indapur With '0'
//Repla C170->cstipi With
//Repla C170->codenq With Mvto->
//Repla C170->vlbcipi With Mvto->
//Repla C170->aliqipi With Mvto->
Repla C170->vlipi With Mvto->VLRIPI //* nQuant
Repla C170->cstpis With '98' // Mvto->Pis_Cst
Repla C170->vlbcpis With Mvto->Pis_Base
Repla C170->aliqpis With Mvto->Pis_Aliq
//--- Pegando pelo cadastro do JAF
//Repla C170->quantbcpis With nQuant
//Repla C170->vlpis With Mvto->VLRPIS
//Repla C170->cstcofins With '98' // Mvto->conf_Cst
//Repla C170->vlbcconfis With Mvto->conf_Base
//Repla C170->aliqconfis With Mvto->conf_Aliq
//Repla C170->qtdbcconfi With nQuant
//Repla C170->vlcofins With Mvto->VLRCOFINS
//Repla C170->codcta With Mvto->
Repla C170->JAFFiltro With _cPesq
* If C170->vlcofins<=0 .or. C170->aliqpis==0
* Repla C170->vlpis With 0
* Repla C170->cstcofins With '98'
* Repla C170->vlbcconfis With 0
* Repla C170->aliqconfis With 0
* Repla C170->vlcofins With 0
* Endif
//---Dados de Pis e Cofins
Sele TABPIS
OrdSetFocus('PISCOFI1')
Go top
Seek C170->Coditem
If Found() //
If cTipoOperacao=='0' // Entrada
Repla C170->cstpis With TabPis->PISCSTENT
Repla C170->vlbcpis With C170->vlitem//Mvto->Pis_Base
Repla C170->aliqpis With TabPis->PISALIQET // nAliqPis_Basica
//Repla C170->aliqpis With nAliqPis_Basica
//Repla C170->quantbcpis With nQuant
Repla C170->vlpis With C170->vlbcpis * C170->aliqpis/100
Repla C170->cstcofins With TabPis->CFSCSTENT
Repla C170->vlbcconfis With C170->vlitem//Mvto->conf_Base
Repla C170->aliqconfis With TabPis->CFSALIQET //nAqliCofins_bas
Repla C170->aliqconfis With nAqliCofins_bas
//Repla C170->qtdbcconfi With nQuant
Repla C170->vlcofins With C170->vlbcconfis*C170->aliqconfis /100
*If C170->cstcofins=='50' .and. C170->aliqpis=0.66
* Repla C170->cstcofins With '60'
* Repla C170->cstpis With '60'
*
* ElseIf C170->aliqpis==0
* Repla C170->aliqpis With nAliqPis_Basica
* Repla C170->aliqconfis With nAqliCofins_bas
*Endif
Else
Repla C170->cstpis With TabPis->PISCSTSDA
Repla C170->vlbcpis With C170->vlitem//Mvto->Pis_Base
Repla C170->aliqpis With TabPis->PISALIQSD // nAliqPis_Basica
// Repla C170->aliqpis With nAliqPis_Basica
Repla C170->quantbcpis With nQuant
Repla C170->vlpis With C170->vlbcpis*C170->aliqpis/100
Repla C170->cstcofins With TabPis->CFSCSTSDA
Repla C170->vlbcconfis With C170->vlitem//Mvto->conf_Base
Repla C170->aliqconfis With TabPis->CFSALIQSD //nAqliCofins_bas
//Repla C170->aliqconfis With nAqliCofins_bas
//Repla C170->qtdbcconfi With nQuant
Repla C170->vlcofins With C170->vlbcconfis*C170->aliqconfis /100
*If C170->cstcofins=='50' .and. C170->aliqpis=0.66
* Repla C170->cstcofins With '60'
* Repla C170->cstpis With '60'
*
* ElseIf C170->aliqpis==0
* *Repla C170->aliqpis With nAliqPis_Basica
* *Repla C170->aliqconfis With nAqliCofins_bas
*Endif
Endif
Endif
//--- Armazena para Atualizar o Registro C100
wTotalCofins += C170->vlcofins
wTotalPIS += C170->vlpis
wTotalMERC += C170->vlitem
nPos := Ascan(wRegistros_200,Mvto->codigo)
if nPos==0
Aadd(wRegistros_200,Mvto->codigo)
Endif
cPesq := C170->cfop+C170->csticms+Str(C170->Aliqicms,6,2)+Alltrim(_cPesq)
cPesq := C170->Coditem
If cTipoOperacao#'0' // Saida
cChavePesqC185 := C170->cstcofins+C170->cfop+Str(C170->aliqconfis,8,4)
cChavePesqC181 := C170->cstpis+C170->cfop+Str(C170->aliqpis,8,4)
Grava_Saidas(cPesq,cChavePesqC181,cChavePesqC185)
Sele Mvto
Skip+1
Loop
Endif
Sele C190
OrdSetFocus('c190_1')
Go top
Seek cPesq
If !Found()
Append Blank
Repla C190->Reg With 'C190'
Repla C190->CODMOD With '55'
Repla C190->DTREFINI With dDATAINI
Repla C190->DTREFFIM With dDATAFIM
Repla C190->CODITEM With cPesq
Repla C190->CODNCM With cCodMCN
Repla C190->EXPIPI With ''
Repla C190->JAFFiltro With cPesq//+cForne
Endif
Repla C190->VLTOTITEM With C190->VLTOTITEM + (C170->vlitem + C170->vlipi + C170->vlicmsst + Mvto->VLROUTRA )
cChavePesqC191 := cPesq+cForne+C170->cstpis +C170->cfop
cChavePesqC195 := cPesq+cForne+C170->cstcofins+C170->cfop
Sele C191 // Dados de Resumo de Pis
Go top
Seek cChavePesqC191
If ! Found()
Append Blank
Repla C191->Reg With 'C191'
Repla C191->CNPJPART With _Cnpj
Repla C191->JAFFiltro With cChavePesqC191
Repla C191->CSTPIS With C170->cstpis
Repla C191->CFOP With C170->cfop
Endif
Repla C191->VLRITEM With C191->VLRITEM+C170->vlitem
Repla C191->VLRDESC With 0
Repla C191->VLRBCPIS With C191->VLRBCPIS+C170->vlbcpis
Repla C191->ALIQPIS With C170->aliqpis
Repla C191->QTDBCPIS With 0
Repla C191->ALIQPISQT With 0
Repla C191->VLPIS With C191->VLPIS+C170->vlpis
Sele C195 // Dados de Cofins
Go top
Seek cChavePesqC195
If ! Found()
Append Blank
Repla C195->Reg With 'C195'
Repla C195->CNPJPART With _Cnpj
Repla C195->JAFFiltro With cChavePesqC195
Repla C195->CSTCOF With C170->cstcofins
Repla C195->CFOP With C170->cfop
Endif
Repla C195->VLRITEM With C195->VLRITEM+C170->vlitem
Repla C195->VLRDESC With 0
Repla C195->VLRBCCOF With C195->VLRBCCOF+C170->vlbcconfis
Repla C195->ALIQCOF With C170->aliqconfis
//Repla C195->QTDBCCOF With C195->QTDBCCOF+C170->qtdbcconfi
Repla C195->ALIQCOFQT With 0
Repla C195->VLCOF With C195->VLCOF+C170->vlcofins
Sele Mvto
Skip+1
Enddo
//--- Atualizando o arquivo c:\temp\C100
Repla C100->VLCOFINS With wTotalCofins
Repla C100->VlPis With wTotalPIS
Repla C100->VLMERC With wTotalMERC
Sele Nota
Skip+1
Enddo
Return nil
29 Mai 2020 15:34
//------------------------------------------------------
Static Function GeraRegistroC113(pFiltro)
Sele C113
Append Blank
Repla C113->Reg With 'C113'
Repla C113->IndOper With C100->IndOper
Repla C113->IndEmit With C100->IndEmit
Repla C113->CodPart With C100->CodPart
Repla C113->CodMod With C100->CodMod
Repla C113->Ser With C100->Ser
//Repla C113->sub With C100->
Repla C113->NumDoc With C100->NumDoc
Repla C113->dtdoc With C100->dtdoc
Repla C113->JAFFiltro With pFiltro//C100->JAFFiltro
Return Nil
//---------------------------------------------------------------------------
Function Func_bloco9()
Local nLIN_TOTAL := nLinhasBloco0 + nLinha_BLOCOC_C100+nLinha_BLOCOC_C170+nLinha_BLOCOC_C190+nLinha_BLOCOC_C191+nLinha_BLOCOC_C195+;
nLinha_BLOCOE_E200 + nLinha_BLOCOE_E210 +;
nLinha_BLOCOC_C490 + nLinha_BLOCOC_C491 + nLinha_BLOCOC_C495+;
wRegistros_C010+;
nLinha_BLOCOC_C180+nLinha_BLOCOC_C181+nLinha_BLOCOC_C185
fwrite( nTMP, "|" + "9001" )
fwrite( nTMP, "|" + "0" )
fwrite( nTMP, "|" + CRLF )
Aadd(wBloco_Soma_9990,{'9001',1})
Aadd(wBloco_Soma_9990,{'9990',1})
Aadd(wBloco_Soma_9990,{'9999',1})
Aadd(wBloco_Soma_9990,{'9900',Len(wBloco_Soma_9990)+1})
For i:= 1 to Len(wBloco_Soma_9990)
fwrite( nTMP, "|" + "9900" )
fwrite( nTMP, "|" + wBloco_Soma_9990[i,1] )
fwrite( nTMP, "|" + alltrim( str( wBloco_Soma_9990[i,2] ) ) ) // Ver
fwrite( nTMP, "|" + CRLF )
Next
fwrite( nTMP, "|" + "9990" )
fwrite( nTMP, "|" + alltrim( str( Len(wBloco_Soma_9990)+3 ) ) ) // Ver
fwrite( nTMP, "|" + CRLF )
fwrite( nTMP, "|" + "9999" )
// A
fwrite( nTMP, "|" + alltrim( str( nLIN_TOTAL+3+len(wBloco_Soma_9990)+2+2+4+2+2) ) )
fwrite( nTMP, "|" + CRLF )
Return Nil
//------------------------------------------
Function Func_BlocoD()
fwrite( nTMP, "|" + "D001" )
fwrite( nTMP, "|" + "1" )
fwrite( nTMP, "|" + CRLF )
fwrite( nTMP, "|" + "D990" )
fwrite( nTMP, "|" + "2" )
fwrite( nTMP, "|" + CRLF )
Aadd(wBloco_Soma_9990,{'D990',1})
Aadd(wBloco_Soma_9990,{'D001',1})
Return Nil
//------------------------------------------
Function Func_BlocoE()
Local nLinhas, cPesq
fwrite( nTMP, "|" + "E001" )
fwrite( nTMP, "|" + "0" ) // 1-Sem Mvto 0-Com Mvto
fwrite( nTMP, "|" + CRLF )
//--- Montando Registro E100
cMsg := LimpaStr(DTOC(dDATAINI))+cSepa+;
LimpaStr(DTOC(dDATAFIM))
fwrite( nTMP, "|" + "E100" )
fwrite( nTMP, "|" + cMsg )
fwrite( nTMP, "|" + CRLF )
Centra(24,'Processando Bloco E (Registro 110)')
Processa_E110()
Centra(24,'Processando Bloco E (Registro 220)')
Processa_E210()
//--- Gerando E110
Sele E110
//cObrigacaoComZeros:='vlipi_vlbcicmsst_vlicms_vlbcicmsst_vlicmsst_vlredbc'
cObrigacaoComZeros := 'TODOS'
cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.t.)
Fwrite( nTMP,cSepa+cTxt+CRLF)
//--- Gerando E116
cTxt := /*1 */ "E116" +cSepa+;
/*2 */ "000" +cSepa+;
/*3 */ Alltrim(Transf(E110->Vlicmsrec,'@E 9999999.99')) +cSepa+;
/*4 */ LimpaStr(DTOC(dDATAFIM)) +cSepa+;
/*5 */ "000" +cSepa+;
/*6 */ '' +cSepa+;
/*7 */ '' +cSepa+;
/*8 */ '' +cSepa+;
/*9 */ '' +cSepa+;
/*10*/ Substr(LimpaStr(DTOC(dDATAFIM)),3,6)+cSepa
Fwrite( nTMP,cSepa+cTxt+CRLF)
//---- Montando Bloco E210 Substituicao
wUFMontar := {}
Sele E210
Go top
Do while ! Eof()
cPesq:= E210->JafFiltro
nPos := Ascan(wUFMontar,cpesq)
If nPos==0
Aadd(wUFMontar,cPesq)
Endif
Skip+1
Enddo
Go top
For i:=1 to Len(wUFMontar)
cMsg := "E200"+cSepa+;
wUFMontar[i]+cSepa+;
LimpaStr(DTOC(dDATAINI))+cSepa+;
LimpaStr(DTOC(dDATAFIM))
fwrite( nTMP, "|" + cMsg+cSepa+CRLF )
nLinha_BLOCOE_E200++
Go top
Do while ! Eof()
If Substr(E210->JAfFiltro,1,2)==wUFMontar[i]
nLinha_BLOCOE_E210++
cObrigacaoComZeros := 'TODOS'
cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.t.)
Fwrite( nTMP,cSepa+cTxt+CRLF)
Endif
Skip+1
Enddo
Next
//nLinhas := 4 + nLinha_BLOCOE_E200 +nLinha_BLOCOE_E210
nLinhas := 5 + nLinha_BLOCOE_E200 +nLinha_BLOCOE_E210
fwrite( nTMP, "|" + "E990" )
fwrite( nTMP, "|" + Alltrim(Str(nLinhas,11)) )
fwrite( nTMP, "|" + CRLF )
Aadd(wBloco_Soma_9990,{'E001',1})
Aadd(wBloco_Soma_9990,{'E100',1})
Aadd(wBloco_Soma_9990,{'E110',1})
Aadd(wBloco_Soma_9990,{'E116',1})
Aadd(wBloco_Soma_9990,{'E200',nLinha_BLOCOE_E200})
Aadd(wBloco_Soma_9990,{'E210',nLinha_BLOCOE_E210})
Aadd(wBloco_Soma_9990,{'E990',1})
Return Nil
//------------------------------------------
Function Func_BlocoG()
fwrite( nTMP, "|" + "G001" )
fwrite( nTMP, "|" + "1" )
fwrite( nTMP, "|" + CRLF )
fwrite( nTMP, "|" + "G990" )
fwrite( nTMP, "|" + "2" )
fwrite( nTMP, "|" + CRLF )
Aadd(wBloco_Soma_9990,{'G990',1})
Aadd(wBloco_Soma_9990,{'G001',1})
Return Nil
//------------------------------------------
Function Func_BlocoH()
fwrite( nTMP, "|" + "H001" )
fwrite( nTMP, "|" + "0" )
fwrite( nTMP, "|" + CRLF )
//Ver Melhor ?
cMsg := "H005"+cSepa+"31122010"+cSepa+'0,00'+cSepa
fwrite( nTMP, "|" + cMsg+ CRLF)
fwrite( nTMP, "|" + "H990" )
fwrite( nTMP, "|" + "3" )
fwrite( nTMP, "|" + CRLF )
Aadd(wBloco_Soma_9990,{'H001',1})
Aadd(wBloco_Soma_9990,{'H005',1})
Aadd(wBloco_Soma_9990,{'H990',1})
Return Nil
//------------------------------------------
Function Func_Bloco1001()
fwrite( nTMP, "|" + "1001" )
fwrite( nTMP, "|" + "1" )
fwrite( nTMP, "|" + CRLF )
fwrite( nTMP, "|" + "1990" )
fwrite( nTMP, "|" + "2" )
fwrite( nTMP, "|" + CRLF )
Aadd(wBloco_Soma_9990,{'1001',1})
Aadd(wBloco_Soma_9990,{'1990',1})
Return Nil
//------------------------------------------------
Static Function Processa_E110()
Local nVlTotDeb := nVlAjuDeb := nVlTotAJDb:= 0
Local nVlEstCred:= nVlTotCred:= nVlAjCred := nVlTotAjcd := 0
Local nVlEstdedb:= nVlsldapur:= nVlTotredu:= nVlicmsrec := 0
Local nVlsdcdtrs:= ndebesp := 0
Local cSaida := .f. // Pega do JAFFILTRO a ultima posicao
Sele C190
Go top
Do While ! Eof()
cSaida := Iif( Substr(C190->JAFFiltro1,3,1)=="S",.t.,.f.)
If cSaida==.f. // Gera Credido de ICMS
nVlTotCred+= C190->vlicms
Else
nVlTotDeb += C190->vlicms
Endif
Skip+1
Enddo
nCal1:= (nVlTotDeb+nVlAjuDeb+nVlAjCred+nVlTotAJDb)-(nVlTotCred+nVlTotAjcd+nVlEstCred+nVlEstdedb+nVlsldapur)
If nCal1 > 0
nVlsdcdtrs := 0
nVlsldapur := nCal1
Else
nVlsdcdtrs := nCal1*-1
nVlsldapur := 0
Endif
Sele E110
Append Blank
Repla E110->Reg With "E110"
Repla E110->VlTotDeb With nVlTotDeb
Repla E110->VlAjuDeb With nVlAjuDeb
Repla E110->VlTotAJDb With nVlTotAJDb
Repla E110->VlEstCred With nVlEstCred
Repla E110->VlTotCred With nVlTotCred
Repla E110->VlAjCred With nVlAjCred
Repla E110->VlTotAjcd With nVlTotAjcd
Repla E110->VlEstdedb With nVlEstdedb
Repla E110->Vlsldapur With nVlsldapur
Repla E110->VlTotredu With nVlTotredu
Repla E110->Vlicmsrec With nVlicmsrec
Repla E110->Vlsdcdtrs With nVlsdcdtrs
Repla E110->debesp With ndebesp
Return Nil
//------------------------------------------------
Static Function Processa_E210()
Local cSaida := .f. // Pega do JAFFILTRO a ultima posicao
Local nIndmovst:= nVLSDCRDAST:= nVLDEVOLST:= nVLRESS_ST:= nVLOUTCRDST:= 0
Local nVLAJCRDST:= nVLRETE_ST:= nVLOUTDBST:= nVLAJTDBST:= nVLSLDDAST:= 0
Local nVLDEDUCST:= nVLICMRCST:= nVSLDCRSTTR:= nDRBESPST:= 0
Sele C190
Go top
Do While ! Eof()
If cSaida==.f. // Gera Credido de ICMS
Else
Endif
cPesq := substr(C190->JAFFiltro1,1,2)
*nVLICMRCST := C190->vlicmsst
*nVLSLDDAST := nVLICMRCST // 11
*nVLRETE_ST := C190->vlicmsst
nVLOUTCRDST := C190->vlicmsst
//--- Aplicando Regras
/* 8 */
*nVLRETE_ST := C190->vlicmsst
/* 11 */ nVLSLDDAST := (nVLRETE_ST + nVLOUTDBST + nVLAJTDBST) - (nVLSDCRDAST+nVLRESS_ST+nVLOUTCRDST+nVLAJCRDST)
If nVLSLDDAST >= 0
nVSLDCRSTTR := 0
Else
nVSLDCRSTTR := nVLSLDDAST*-1
nVLSLDDAST := 0
Endif
Sele E210
Go top
Seek cPesq // UF
If !Found()
Append Blank
Repla E210->Reg With "E210"
Repla E210->Indmovst With '1'
Repla E210->JAFFILTRO With cPesq
Endif
/* 3 */ Repla E210->VLSDCRDAST With E210->VLSDCRDAST+ nVLSDCRDAST
/* 4 */ Repla E210->VLDEVOLST With E210->VLDEVOLST + nVLDEVOLST
/* 5 */ Repla E210->VLRESS_ST With E210->VLRESS_ST + nVLRESS_ST
/* 6 */ Repla E210->VLOUTCRDST With E210->VLOUTCRDST+ nVLOUTCRDST
/* 7 */ Repla E210->VLAJCRDST With E210->VLAJCRDST + nVLAJCRDST
/* 8 */ Repla E210->VLRETE_ST With E210->VLRETE_ST + nVLRETE_ST
/* 9 */ Repla E210->VLOUTDBST With E210->VLOUTDBST + nVLOUTDBST
/* 10*/ Repla E210->VLAJTDBST With E210->VLAJTDBST + nVLAJTDBST
/* 11*/ Repla E210->VLSLDDAST With E210->VLSLDDAST + nVLSLDDAST
/* 12*/ Repla E210->VLDEDUCST With E210->VLDEDUCST + nVLDEDUCST
/* 13*/ Repla E210->VLICMRCST With E210->VLICMRCST + nVLICMRCST
/* 14*/ Repla E210->VSLDCRSTTR With E210->VSLDCRSTTR+ nVSLDCRSTTR
/* 15*/ Repla E210->DRBESPST With E210->DRBESPST + nDRBESPST
Sele C190
Skip+1
Enddo
Return Nil
//------------------------------------------------------
Function EscreveCamposTxt(Separador,wCamposComZeros,lTODOS)
Local i
Local cSepa := Separador
Local mString := ''
Local Campos := DbStruct()
For i:= 1 to Len(Campos)
If Substr(Campos[i,1],1,9)==Upper('JAFFiltro')
Loop
Endif
If Campos[i,2]=="C"
mString += Alltrim(&(Campos[i,1]))+cSepa
Elseif Campos[i,2]=="D"
cCampo := Dtoc(&(Campos[i,1]))
cCampo := LimpaStr(cCampo)
mString += cCampo+cSepa
ElseIf Campos[i,2]=="N"
If Campos[i,1]$Upper(wCamposComZeros) .or. lTODOS
cCampo := &(Campos[i,1])
*vlipi
cMasq := "@EZ "+repli('9',Campos[i,3])+'.'+Repli('9',Campos[i,4])
*cMasq := "@E "+repli('9',Campos[i,3])+'.'+Repli('9',Campos[i,4])
cCampo:= Transf(cCampo,cMasq)
cCampo := Alltrim(cCampo)
mString += cCampo+cSepa
Else
cCampo := &(Campos[i,1])
cMasq := "@EZ "+repli('9',Campos[i,3])+'.'+Repli('9',Campos[i,4])
cCampo:= Transf(cCampo,cMasq)
cCampo := Alltrim(cCampo)
mString += cCampo+cSepa
Endif
Endif
Next
Return (mString)
//------------------------------------
Function Configurar()
Local Lin := 05
Local Col := 5
Public xCod_fin := '0'
Public xIND_Perfil:= 'A'
Public xInd_ATIV := '1'
Public xContador_nome := 'TESTE CONTADOR+'+Space(40)
Public xContador_Cpf := '24912262862'
Public xContador_CRC := Space(15)
Public xContador_IBGE := '3534708'
Public xPathGZ := 'f:\gz\concent\'+Space(50)
Public xPathJAF := 'G:\dba\'+space(100)
Public cEmpresa := Lerparam('PDV_CODIGO_DESTINO') //'00422' //
Public lSomentePDV := "N"
Public lTestando := "N"
Public nAliqPis_Basica:= 1.65
Public nAqliCofins_bas:= 7.60
CAIXATEXTO(Lin-2,Col-1,Lin+15,MaxCol()-2,"....### GERACAO DO SPED FISCAL -PIS/COFINS ###....(1)","G/GR+","BG+/NB+","NN/NN","N")
@ Lin++,Col say 'Local DBA JAF (1):' Get xPathJAF Pict "@!"
@ Lin++,Col say 'Nr.Empresa JAF :' Get cEmpresa Pict "@!"
@ Lin++,Col say 'Mˆs Processamento :' Get dDATAPROC Pict "D"
@ Lin++,Col say 'Tipo Remessa (0)Original (1)Substituto ' ;
Get xCod_fin Pict "9" Valid xCod_fin$"10"
@ lin++,Col say 'Tipo Perfil :' Get xIND_Perfil pict "@!";
Valid xIND_Perfil$"ABC"
@ Lin++,Col say 'Contador Responsavel :' Get xContador_nome
@ Lin++,Col say ' Nr.CPF :' Get xContador_Cpf
@ Lin++,Col say ' Numero C.R.C :' Get xContador_CRC
@ Lin++,Col say ' Codigo IBGE Cidade :' Get xContador_IBGE
@ Lin++,Col say ' Local GZ sistema :' Get xPathGZ
@ Lin++,Col say ' Gera Somente PDV :' Get lSomentePDV Pict "@!"
@ Lin++,col say ' Gera Teste Apenas :' Get lTestando Pict "@!"
@ lin++,Col say 'Aliquota Basica Cofins :' Get nAqliCofins_bas Pict "@EZ 999.999"
@ lin++,Col say 'Aliquota Basica PIS :' Get nAliqPis_Basica Pict "@EZ 999.999"
Read
If LastKey()==27
FechaJanela()
Return nil
Endif
xPathJAF := Alltrim(xPathJAF)
xPathGZ := Alltrim(xPathGZ)
SET DEFAULT TO (xPathJAF)
FechaJanela()
Return nil
29 Mai 2020 15:35
//------------------------------------------
Function Func_BlocoA()
Local nLinhas, cPesq
fwrite( nTMP, "|" + "A001" )
fwrite( nTMP, "|" + "1" ) // 1-Sem Mvto 0-Com Mvto
fwrite( nTMP, "|" + CRLF )
fwrite( nTMP, "|" + "A990" )
fwrite( nTMP, "|" + Alltrim(Str(2,11)) )
fwrite( nTMP, "|" + CRLF )
Aadd(wBloco_Soma_9990,{'A001',1} )
Aadd(wBloco_Soma_9990,{'A990',1} )
Return Nil
//--------------------------------------
Static Function MontaBloco0_Reg140(lLista)
/* Monta os registros com Base na lLista
e Retorna a quantidade de Registros
*/
Local x ,nOk := 0
Sele Forneced
OrdSetFocus('Forneced')
For x:= 1 to Len(lLista)
Go top
Seek lLista[x]
If !Found()
Loop
Endif
nOk++
Reg := '0140'
Cod_part := Forneced->Codigo
Nome := Alltrim(Forneced->Razao)
Cod_pais := '1058'
CNPJ := StrZero(val(LimpaStr(Forneced->CGC)),14)
CPF := ''
//cIE := Alltrim(Str(Val(LimpaStr(Forneced->IE)),14))
cIE := Iif(Forneced->PessJurid==.f.,'',Alltrim(Str(Val(LimpaStr(Forneced->IE)),14)))
cIE := Iif(cIE=='0','',cIE)
Cod_Num := Alltrim(Forneced->IBGE_cida)
Suframa := ''
cIM := ''
cTxt := Reg +cSepa+;
Cod_part +cSepa+;
Nome +cSepa+;
CNPJ +cSepa+;
cuf +cSepa+;
cIE +cSepa+;
Cod_Num +cSepa+;
cIM +cSepa+;
cSuframa +cSepa
Fwrite( nTMP,cSepa+cTxt+CRLF)
Next
Return nOk
//------------------------------------------
Function Func_BlocoF()
fwrite( nTMP, "|" + "F001" )
fwrite( nTMP, "|" + "1" )
fwrite( nTMP, "|" + CRLF )
fwrite( nTMP, "|" + "F990" )
fwrite( nTMP, "|" + "2" )
fwrite( nTMP, "|" + CRLF )
Aadd(wBloco_Soma_9990,{'F990',1})
Aadd(wBloco_Soma_9990,{'F001',1})
Return Nil
//------------------------------------------
Function Func_BlocoM()
fwrite( nTMP, "|" + "M001" )
fwrite( nTMP, "|" + "1" )
fwrite( nTMP, "|" + CRLF )
fwrite( nTMP, "|" + "M990" )
fwrite( nTMP, "|" + "2" )
fwrite( nTMP, "|" + CRLF )
Aadd(wBloco_Soma_9990,{'M990',1})
Aadd(wBloco_Soma_9990,{'M001',1})
Return Nil
//------------------------------------------------
Function Cria_M100()
Local Estru := {}
estru := { {'Reg' , 'C' , 04,0 },;
{'CODCRED' , 'C' , 03,0 },; // Tabela Externa
{'INDCREDORI' , 'C' , 01,0 },;
{'VLBCPIS' , 'N' , 13,2 },; //
{'ALIQPIS' , 'N' , 13,4 },;
{'QTDBCPIS' , 'N' , 13,3 },;
{'ALQPISQTD' , 'N' , 13,4 },;
{'VLCRED' , 'N' , 13,2 },;
{'VLAJUSCRED' , 'N' , 13,2 },;
{'VLAJUSREDU' , 'N' , 13,2 },;
{'VLCREDDIF' , 'N' , 13,2 },;
{'VLCREDDISP' , 'N' , 13,2 },;
{'INDDESCCRD' , 'N' , 01,0 },;
{'VLCREDDESC' , 'N' , 13,2 },;
{'SLDCRED' , 'N' , 13,2 } }
dbcreate('c:\temp\M100.dbf',Estru)
Return Nil
//------------------------------------------------------
Function Cria_C491()
Local Estru := {}
estru := { {'Reg' , 'C' , 04,0 },;
{'CODITEM' , 'C' , 05,0 },;
{'CSTPIS' , 'C' , 02,0 },;
{'CFOP' , 'C' , 04,0 },; //
{'VLITEM' , 'N' , 13,2 },;
{'VLBCPIS' , 'N' , 13,2 },;
{'ALIQPIS' , 'N' , 13,4 },;
{'QTDBCPIS' , 'N' , 13,3 },;
{'ALIPISQTD' , 'N' , 13,4 },;
{'VLPIS' , 'N' , 13,2 },;
{'CODCTA' , 'C' , 60,0 } }
dbcreate('c:\temp\C491.dbf',Estru)
Return Nil
//------------------------------------------------------
Function Cria_C495()
Local Estru := {}
estru := { {'Reg' , 'C' , 04,0 },;
{'CODITEM' , 'C' , 05,0 },;
{'CSTCOFINS' , 'C' , 02,0 },;
{'CFOP' , 'C' , 04,0 },; //
{'VLITEM' , 'N' , 13,2 },;
{'VLBCCOFINS' , 'N' , 13,2 },;
{'ALIQCOFINS' , 'N' , 13,4 },;
{'QTDBCCOFIN' , 'N' , 13,3 },;
{'ALICOFQTD' , 'N' , 13,4 },;
{'VLCOFINS' , 'N' , 13,2 },;
{'CODCTA' , 'C' , 60,0 } }
dbcreate('c:\temp\C495.dbf',Estru)
Return Nil
//--------------------------------------------
Function GeraDados_C491() // GzSistema
Local _DataIni := dDATAINI //dDATAFIM
Local nReg := nTotalReg := 0, cCodPes
Centra(24,'Gerando Dados de Venda PDV(GZSistemas)')
//Return nil
Sele Gz
OrdSetFocus('MovCaiDt')
Go top
Set SoftSeek On
Seek dDataIni
Set SoftSeek Off
If !Found()
_DataIni := Gz->Data
Endif
If lTestando=="S"
Index on Data to c:\temp\Gz;
While(Data >=_DataIni .and. Data <= _DataIni) // Teste um Dia
*While(Data >=_DataIni .and. Data <= dDATAFIM)
Else
Index on Data to c:\temp\Gz;
While(Data >=_DataIni .and. Data <= dDATAFIM)
Endif
nTotalReg := OrdkeyCount()
Go top
Do While ! Eof()
If lTestando=="S" .and. ( nReg >=200 )
Exit
Endif
Centra(24,'Aguarde... (C491/C495)'+Str(++nReg/nTotalReg*100,7,2)+'%'+' Data Venda :'+Dtoc(Data))
If Gz->Cancelado==.t.
Skip+1
Loop
Endif
*If Gz->Tipo#"P"
* Skip+1
* Loop
*Endif
If Empty(Gz->CdProd)
Skip+1
Loop
Endif
If Gz->Tributacao=='000000' // Pula itens de agendas
//If cTbto=='000000' .or. cCoo=='000000'
Skip+1
Loop
Endif
cCodPes:= StrZero(Val(Gz->CdProd),5)
Sele Prod
OrdSetFocus('Prod01')
Go top
Seek cCodPes
If !Found()
Skip+1
Loop
Else
If Prod->EXCLPISCOF==.t.
Sele Gz
Skip+1
Loop
Endif
Endif
//--- Tratar Pis de Acordo com o Cadastro usando os dados de venda do GZ
Sele TABPIS
OrdSetFocus('PISCOFI1')
Go top
Seek cCodPes
If !Found() // Sem Cadastro de Pis e Cofins
Sele Gz
Skip+1
Loop
Endif
Sele C491
Go top
Seek cCodPes
IF !found()
Append Blank
Repla C491->Reg With 'C491'
Repla C491->CODITEM With cCodPes
Repla C491->CSTPIS With TabPis->PISCSTSDA
Repla C491->CFop With '5929'
Repla C491->CODCTA With ''
Endif
nAliquota:= TabPis->PISALIQSD
If nAliquota <= 0
//nAliquota:= nAliqPis_Basica
Endif
nBasePis := Gz->ValorTot//Gz->Valor
nValorPIS:= nBasePis*nAliquota/100
Repla C491->VLITEM With C491->VLITEM + Gz->ValorTot//Gz->Valor
Repla C491->VLBCPIS With C491->VLBCPIS + nBasePis
Repla C491->ALIQPIS With nAliquota
Repla C491->VLPIS With C491->VLPIS + nValorPIS
Sele C495
Go top
Seek cCodPes
IF !found()
Append Blank
Repla C495->Reg With 'C495'
Repla C495->CODITEM With cCodPes
Repla C495->CSTCOFINS With TabPis->CFSCSTSDA
Repla C495->CFop With '5929'
Repla C495->CODCTA With ''
Endif
nAliquota:= TabPis->CFSALIQSD
If nAliquota <= 0
//nAliquota := nAqliCofins_bas
Endif
nValorPIS:= nBasePis*nAliquota/100
Repla C495->VLITEM With C495->VLITEM + Gz->ValorTot//Gz->Valor
Repla C495->VLBCCOFINS With C495->VLBCCOFINS + nBasePis
Repla C495->ALIQCOFINS With nAliquota
//Repla C495->QTDBCCOFIN With C495->QTDBCCOFIN + Gz->Quant
Repla C495->VLCOFINS With C495->VLCOFINS + nValorPIS
//-- Montar o Registro 200
nPos := Ascan(wRegistros_200,cCodPes)
if nPos==0
Aadd(wRegistros_200,cCodPes)
Endif
Sele Gz
Skip+1
Enddo
Return Nil
//------------------------------------------------------------
Function Func_BlocoC490() // Escreve em Txt
//--- Escrevendo Bloco C490
cMsg := 'C490'+"|"+;
LimpaStr(DTOC(dDATAINI))+cSepa+;
LimpaStr(DTOC(dDATAFIM))+cSepa+;
'2D'+cSepa
fwrite( nTMP, "|" + cMsg+ CRLF )
nLinha_BLOCOC_C490++
Sele C491
Go top
Do While ! Eof()
nValorImposto :=C491->VLBCPIS*C491->ALIQPIS/100
Repla C491->VLPIS With nValorImposto
nLinha_BLOCOC_C491++
//cTxt := EscreveCamposTxt(cSepa,'',.f.)
// aqui
cObrigacaoComZeros:='Todos'
//cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.t.)
cTxt := Escreve_C491()
Fwrite( nTMP,cSepa+cTxt+CRLF)
Skip+1
Enddo
Sele C495
Go top
Do While ! Eof()
nValorImposto := C495->VLBCCOFINS*C495->ALIQCOFINS/100
Repla C495->VLCOFINS With nValorImposto
nLinha_BLOCOC_C495++
//cTxt := EscreveCamposTxt(cSepa,'',.f.)
cObrigacaoComZeros:='Todos'
//cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.t.)
cTxt := Escreve_C495()
Fwrite( nTMP,cSepa+cTxt+CRLF)
Skip+1
Enddo
Return Nil
//---------------------------------------------------------------
Static Function CamposC170()
c := Alltrim(C170->Reg )+cSepa+; // , 'C' , 04,0 },;
Alltrim(C170->numitem )+cSepa+; // 'C' , 03,0 },;
Alltrim(C170->Coditem )+cSepa+; // , 'C' , 05,0 },;
Alltrim(C170->descricao)+cSepa+; // , 'C' , 60,0 },;
Alltrim(Transf(C170->qtd,'@E 9999999999.99999'))+cSepa+; // 14,5 },;
Alltrim(C170->unid )+cSepa+; // , 'C' , 06,0 },;
Alltrim(Transf(C170->vlitem,'@E 99999999999.99'))+cSepa+; // 13,2 },;
Alltrim(Transf(C170->vldesc,'@E 99999999999.99'))+cSepa+; // 13,2 },;
Alltrim(C170->indmov )+cSepa+;
Alltrim(C170->csticms )+cSepa+;
Alltrim(C170->cfop )+cSepa+;
Alltrim(C170->codnat )+cSepa+;
Alltrim(Transf(C170->vlbcicms ,'@E 99999999999.99'))+cSepa+; // 13,2 },;
Alltrim(Transf(C170->Aliqicms ,'@E 99999999999.99'))+cSepa+;
Alltrim(Transf(C170->vlicms ,'@E 99999999999.99'))+cSepa+; //13,2 },;
Alltrim(Transf(C170->vlbcicmsst,'@E 99999999999.99'))+cSepa+;//13,2 },;
Alltrim(Transf(C170->aliqst ,'@E 99999999999.99'))+cSepa+; //13,2 },;
Alltrim(Transf(C170->vlicmsst ,'@E 99999999999.99'))+cSepa+; //13,2 },;
Alltrim(C170->indapur )+cSepa+;
Alltrim(C170->cstipi )+cSepa+;
Alltrim(C170->codenq )+cSepa+;
Alltrim(Transf(C170->vlbcipi,'@E 99999999999.99'))+cSepa+;
Alltrim(Transf(C170->aliqipi,'@E 99999.99'))+cSepa+;
Alltrim(Transf(C170->vlipi ,'@E 99999999999.99'))+cSepa+;
Alltrim(C170->cstpis )+cSepa+;
Alltrim(Transf(C170->vlbcpis ,'@E 99999999999.99'))+cSepa+;
Alltrim(Transf(C170->aliqpis ,'@E 99999999999.9999'))+cSepa+;
Alltrim(Transf(0,'@EZ 99999999999.999'))+cSepa+; //ver
Alltrim(Transf(0 ,'@EZ 99999999999.9999'))+cSepa+; //ver
Alltrim(Transf(C170->vlpis ,'@E 99999999999.99'))+cSepa+;
Alltrim(C170->cstcofins )+cSepa+;
Alltrim(Transf(C170->vlbcconfis,'@E 99999999999.99'))+cSepa+;
Alltrim(Transf(C170->aliqconfis,'@E 9999999.99'))+cSepa+;
Alltrim(Transf(0,'@EZ 99999999999.999'))+cSepa+; //ver
Alltrim(Transf(0,'@EZ 999999999.9999'))+cSepa+; //ver
Alltrim(Transf(C170->vlcofins ,'@E 99999999999.99'))+cSepa+;
Alltrim(C170->codcta )+cSepa
return c
//--------------------------------------------------------------------
Function Teste_Gera_C010()
Sele Forneced
OrdSetFocus('Forneced')
Go top
Seek cEmpresa
If Found()
cTxt := 'C010'+cSepa+;
StrZero(val(LimpaStr(Forneced->CGC)),14)+cSepa+;
'2'+cSepa // Ver era 2
// 2 - Usando C170
// 1 - Usando C190
Fwrite( nTMP,cSepa+cTxt+CRLF)
wRegistros_C010++
Endif
Return Nil
//------------------------------------------------------------
Static Function Escreve_C491()
Local cLinha := Alltrim(Reg) +cSepa+;
Alltrim(CODITEM) +cSepa+;
Alltrim(CSTPIS) +cSepa+;
Alltrim(CFOP) +cSepa+;
Alltrim(Transf(VLITEM ,'@EZ 999999.99'))+cSepa+; // 13,2
Alltrim(Transf(VLBCPIS ,'@EZ 999999.99'))+cSepa+; // 13,2
Alltrim(Transf(ALIQPIS ,'@E 9999.9999'))+cSepa+; // 13,4
Alltrim(Transf(QTDBCPIS ,'@EZ 9999.999' ))+cSepa+; // 13,3
Alltrim(Transf(ALIPISQTD,'@EZ 9999.9999'))+cSepa+; // 13,4
Alltrim(Transf(VLPIS ,'@E 9999.99' ))+cSepa+; // 13,2
Alltrim(CODCTA)+cSepa
Return (clinha)
//------------------------------------------------------------
Static Function Escreve_C495()
Local cLinha := Alltrim(Reg) +cSepa+;
Alltrim(CODITEM) +cSepa+;
Alltrim(CSTCOFINS) +cSepa+;
Alltrim(CFOP) +cSepa+;
Alltrim(Transf(VLITEM ,'@EZ 999999.99'))+cSepa+; // 13,2
Alltrim(Transf(VLBCCOFINS ,'@EZ 999999.99'))+cSepa+; // 13,2
Alltrim(Transf(ALIQCOFINS ,'@E 999999.9999'))+cSepa+; // 13,4
Alltrim(Transf(QTDBCCOFIN ,'@EZ 9999.999'))+cSepa+; // 13,3
Alltrim(Transf(ALICOFQTD ,'@EZ 9999.9999' ))+cSepa+; // 13,4
Alltrim(Transf(VLCOFINS ,'@E 9999.99' ))+cSepa+; // 13,2
Alltrim(CODCTA)+cSepa
Return (clinha)
//------------------------------------------------------------------------
Static Function Func_BlocoC_ResumoC190()
Local wUsados:= {}
cTxt := 'C001'+cSepa+'0'+cSepa // 0-Com Movto 1-Sem Mvto
Fwrite( nTMP,cSepa+cTxt+CRLF )
Aadd(wBloco_Soma_9990,{'C001',1})
Teste_Gera_C010() // Colocando Apenas o Estabelecimento
EscrevendoBlocoC180()
Sele C190
//Dbedit(00,00,24,79)
Go top
Centra(24,'Gerando BLOCO C (190/191/195)')
Do while ! Eof()
//nLinha_BLOCOC_C100++
nLinha_BLOCOC_C190++
cTxt := EscreveCamposTxt(cSepa,'',.f.)
Fwrite( nTMP,cSepa+cTxt+CRLF)
cPesq := Alltrim(C190->CodItem)
Sele C191
Go top
cPesq := Substr(C190->JAFFiltro,1,5)
Do While !Eof()
If Substr(C191->JAFFiltro,1,5)==cPesq
nLinha_BLOCOC_C191 ++
cObrigacaoComZeros:='Todos'
cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.f.)
Fwrite( nTMP,cSepa+cTxt+CRLF)
Endif
Skip+1
Enddo
Sele C195
Go top
cPesq := C190->JAFFiltro
Do While !Eof()
If Substr(C195->JAFFiltro,1,5)==cPesq
nLinha_BLOCOC_C195 ++
cObrigacaoComZeros:='Todos'
cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.f.)
Fwrite( nTMP,cSepa+cTxt+CRLF)
Endif
Skip+1
Enddo
Sele C190
Skip+1
Enddo
//--- Dados da ECF (GzSistemas no Caso)
Func_BlocoC490()
//--- Encerrando Bloco C
nLinhas := nLinha_BLOCOC_C100+nLinha_BLOCOC_C113+nLinha_BLOCOC_C170+nLinha_BLOCOC_C190+nLinha_BLOCOC_C191+nLinha_BLOCOC_C195
nLinhas := nLinhas+2+wRegistros_C010+nLinha_BLOCOC_C490+nLinha_BLOCOC_C491+nLinha_BLOCOC_C495
nLinhas := nLinhas+nLinha_BLOCOC_C180+nLinha_BLOCOC_C181+nLinha_BLOCOC_C185
cTxt := 'C990'+cSepa+Alltrim(Str(nLinhas,11))+cSepa // 0-Com Movto 1-Sem Mvto
Aadd(wBloco_Soma_9990,{'C990',1})
Aadd(wBloco_Soma_9990,{'C010',wRegistros_C010})
Fwrite( nTMP,cSepa+cTxt+CRLF )
Return Nil
//------------------------------------------------
Function Cria_C180()
Local Estru := {}
estru := { {'Reg' , 'C' , 04,0 },;
{'CODMOD' , 'C' , 02,0 },;
{'DTREFINI' , 'D' , 08,0 },;
{'DTREFFIM' , 'D' , 08,0 },;
{'CODITEM' , 'C' , 05,0 },;
{'CODNCM' , 'C' , 08,0 },;
{'EXPIPI' , 'C' , 03,0 },;
{'VLTOTITEM', 'N' , 13,2 },;
{'JAFFiltro', 'C' , 05,0 } } // Codigo Fornecedor
dbcreate('c:\temp\C180.dbf',Estru)
Return Nil
//------------------------------------------------
Function Cria_C181()
Local Estru := {}
estru := { {'Reg' , 'C' , 04,0 },;
{'CSTPIS' , 'C' , 02,0 },;
{'CFOP' , 'C' , 04,0 },;
{'VLRITEM' , 'N' , 13,2 },;
{'VLRDESC' , 'N' , 13,2 },;
{'VLRBCPIS' , 'N' , 13,2 },;
{'ALIQPIS' , 'N' , 08,4 },;
{'QTDBCPIS' , 'N' , 13,3 },;
{'ALIQPISQT', 'N' , 13,4 },;
{'VLPIS' , 'N' , 13,2 },;
{'CODCTA' , 'C' , 60,0 },;
{'JAFFiltro', 'C' , 05,0 } }
//{'CNPJPART' , 'C' , 14,0 },;
dbcreate('c:\temp\C181.dbf',Estru)
Return Nil
//------------------------------------------------
Function Cria_C185()
Local Estru := {}
estru := { {'Reg' , 'C' , 04,0 },;
{'CSTCOF' , 'C' , 02,0 },;
{'CFOP' , 'C' , 04,0 },;
{'VLRITEM' , 'N' , 13,2 },;
{'VLRDESC' , 'N' , 13,2 },;
{'VLRBCCOF' , 'N' , 13,2 },;
{'ALIQCOF' , 'N' , 08,4 },;
{'QTDBCCOF' , 'N' , 13,3 },;
{'ALIQCOFQT', 'N' , 13,4 },;
{'VLCOF' , 'N' , 13,2 },;
{'CODCTA' , 'C' , 60,0 },;
{'JAFFiltro', 'C' , 05,0 } }
//{'CNPJPART' , 'C' , 14,0 },;
dbcreate('c:\temp\C185.dbf',Estru)
Return Nil
//----------------------------------------------------
Function Grava_Saidas(_Pesq,_ChavePis,_ChaveCofins)
/* Uso Somente Na Saida
*/
Local cPesq := _Pesq
Local cCodPes := _Pesq
Local cPesqChave := _ChavePis
Local cPesqCofins:= _ChaveCofins
Sele C180
OrdSetFocus('c180_1')
Go top
Seek cPesq
If !Found()
Append Blank
Repla C180->Reg With 'C180'
Repla c180->CODMOD With '55'
Repla c180->DTREFINI With dDATAINI
Repla c180->DTREFFIM With dDATAFIM
Repla c180->CODITEM With cPesq
Repla c180->CODNCM With cCodMCN
Repla c180->EXPIPI With ''
Repla c180->JAFFiltro With cPesq
Endif
Repla c180->VLTOTITEM With c180->VLTOTITEM + (C170->vlitem + C170->vlipi + C170->vlicmsst + Mvto->VLROUTRA )
Sele C181 // Dados de Resumo de Pis
Go top
Seek (cPesqChave+cPesq)
If ! Found()
Append Blank
Repla c181->Reg With 'C181'
//Repla c181->CNPJPART With _Cnpj
Repla c181->JAFFiltro With cPesq
Repla c181->CSTPIS With C170->cstpis
Repla c181->CFOP With C170->cfop
Endif
Repla c181->VLRITEM With c181->VLRITEM+C170->vlitem
Repla c181->VLRDESC With 0
Repla c181->VLRBCPIS With c181->VLRBCPIS+C170->vlbcpis
Repla c181->ALIQPIS With C170->aliqpis
Repla c181->QTDBCPIS With 0
Repla c181->ALIQPISQT With 0
Repla c181->VLPIS With c181->VLPIS+C170->vlpis
Sele C185 // Dados de Cofins
Go top
Seek (cPesqCofins+cPesq)
If ! Found()
Append Blank
Repla c185->Reg With 'C185'
//Repla c185->CNPJPART With _Cnpj // C100->CodPart
Repla c185->JAFFiltro With cPesq
Repla c185->CSTCOF With C170->cstcofins
Repla c185->CFOP With C170->cfop
Repla c185->ALIQCOF With C170->aliqconfis
Endif
Repla c185->VLRITEM With c185->VLRITEM+C170->vlitem
Repla c185->VLRDESC With 0
Repla c185->VLRBCCOF With c185->VLRBCCOF+C170->vlbcconfis
//Repla c185->QTDBCCOF With c185->QTDBCCOF+C170->qtdbcconfi
Repla c185->ALIQCOFQT With 0
Repla c185->VLCOF With c185->VLCOF+C170->vlcofins
//-- Montar o Registro 200
nPos := Ascan(wRegistros_200,cCodPes)
if nPos==0
Aadd(wRegistros_200,cCodPes)
Endif
Return Nil
//----------------------------------------------------
Function EscrevendoBlocoC180()
/*
usado pela funcao Grava_Saidas(_Pesq)
nLinha_BLOCOC_C180 := 0
nLinha_BLOCOC_C181 := 0
nLinha_BLOCOC_C185 := 0
*/
Sele C180
Go top
Centra(24,'Gerando BLOCO C (180/181/185)')
Do While ! Eof()
nLinha_BLOCOC_C180++
cTxt := EscreveCamposTxt(cSepa,'',.f.)
Fwrite( nTMP,cSepa+cTxt+CRLF)
cPesq := Alltrim(C180->CodItem)
Sele C181
Go top
cPesq := C180->JAFFiltro
Do While !Eof()
If C181->JAFFiltro==cPesq
nLinha_BLOCOC_C181++
cObrigacaoComZeros:='Todos'
cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.f.)
Fwrite( nTMP,cSepa+cTxt+CRLF)
Endif
Skip+1
Enddo
Sele C185
Go top
cPesq := C180->JAFFiltro
Do While !Eof()
If Alltrim(C185->JAFFiltro)==cPesq
nLinha_BLOCOC_C185 ++
cObrigacaoComZeros:='Todos'
cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.f.)
Fwrite( nTMP,cSepa+cTxt+CRLF)
Endif
Skip+1
Enddo
Sele C180
Skip+1
Enddo
Return Nil
//------------------------------------------------------------------------
Static Function Func_BlocoC_DetalhaNFe_C170()
Local wUsados:= {}
cTxt := 'C001'+cSepa+'0'+cSepa // 0-Com Movto 1-Sem Mvto
Fwrite( nTMP,cSepa+cTxt+CRLF )
Aadd(wBloco_Soma_9990,{'C001',1})
Teste_Gera_C010() // Colocando Apenas o Estabelecimento
Sele C100
Go top
Centra(24,'Gerando BLOCO C (Registro 100/170/190)')
Do while ! Eof()
If C100->Reg=='X100'
Skip+1
Loop
Endif
nLinha_BLOCOC_C100 ++
cTxt := EscreveCamposTxt(cSepa,'',.f.)
Fwrite( nTMP,cSepa+cTxt+CRLF)
cPesq := Alltrim(C100->CodPart+C100->NumDoc+C100->Ser)
Sele C170
Go top
Do While !Eof()
If Alltrim(C170->JAFFiltro)==cPesq
nLinha_BLOCOC_C170 ++
cTxt := EscreveCamposTxt(cSepa,'',.f.)
cTxt := CamposC170()
Fwrite( nTMP,cSepa+cTxt+CRLF)
Endif
Skip+1
Enddo
/*
Sele C190
Go top
Do While !Eof()
*If Alltrim(C190->JAFFiltro)==cPesq
If Recno()== 1
nLinha_BLOCOC_C190 ++
cObrigacaoComZeros:='vlipi_vlbcicmsst_vlicms_vlbcicmsst_vlicmsst_vlredbc'
cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.f.)
Fwrite( nTMP,cSepa+cTxt+CRLF)
Endif
Skip+1
Enddo
*/
/*
Sele C191
Go top
cPesq := C100->CodPart
Do While !Eof()
If Alltrim(C191->JAFFiltro)==cPesq
nLinha_BLOCOC_C191 ++
cObrigacaoComZeros:='Todos'
cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.f.)
Fwrite( nTMP,cSepa+cTxt+CRLF)
Endif
Skip+1
Enddo
*/
/*
Sele C195
Go top
cPesq := C100->CodPart
Do While !Eof()
If Alltrim(C195->JAFFiltro)==cPesq
nLinha_BLOCOC_C195 ++
cObrigacaoComZeros:='Todos'
cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.f.)
Fwrite( nTMP,cSepa+cTxt+CRLF)
Endif
Skip+1
Enddo
*/
Sele C100
Skip+1
Enddo
//--- Dados da ECF (GzSistemas no Caso)
Func_BlocoC490()
//--- Encerrando Bloco C
nLinhas := nLinha_BLOCOC_C100+nLinha_BLOCOC_C113+nLinha_BLOCOC_C170+nLinha_BLOCOC_C190+nLinha_BLOCOC_C191+nLinha_BLOCOC_C195
nLinhas := nLinhas+2+wRegistros_C010+nLinha_BLOCOC_C490+nLinha_BLOCOC_C491+nLinha_BLOCOC_C495
nLinhas := nLinhas+nLinha_BLOCOC_C180+nLinha_BLOCOC_C181+nLinha_BLOCOC_C185
cTxt := 'C990'+cSepa+Alltrim(Str(nLinhas,11))+cSepa // 0-Com Movto 1-Sem Mvto
Aadd(wBloco_Soma_9990,{'C990',1})
Aadd(wBloco_Soma_9990,{'C010',wRegistros_C010})
Fwrite( nTMP,cSepa+cTxt+CRLF )
Return Nil
//--------------------------------------------------
Function ValidaCodigoNCM(Pesq)
Sele CADNCM
OrdSetFocus('CADNCM1')
Go top
Seek Pesq
IF !Found()
Return '10203040'
Endif
Return (CADNCM->NCM)
//------------------------------------------
static Function CarregaListaTeste()
Local cArq := 'c:\temp\cuca.txt'
Local cTexto , nLinhas, x , wLista := {}
If File(cArq)
cTexto := memoread(cArq)
nLinhas := mlcount( cTexto,10)
Centra(24,"Usando arquivo de configuracao :"+cArq)
For x:= 1 to nLinhas
mString := MemoLine(cTexto,15,x)
If Substr(mString,1,1)#"#"
Aadd(wLista,Val(mString))
Endif
Next
Endif
Return wLista
//---------------------------------
Static Function PegaChaveNfe(cChave)
Local cOk := Right(Alltrim(Nota->Chave_Nfe),44)
If Alltrim(cOk)=='Nfe'
cOk := ""
Endif
Return cOk
29 Mai 2020 17:44