SPED Fiscal TXT
Moderador: Moderadores
-
JUDIVAN CONTABIL
- Usuário Nível 2

- Mensagens: 55
- Registrado em: 20 Mai 2011 07:42
- Localização: IMACULADA-PB
SPED Fiscal TXT
OLÁ COLEGAS
Gostaria de ajuda;
Quando mando gerar o arquivo txt do sped fiscal, os blocos C100, C170 e C190, gera da seguinte forma:
|C100|0|1|35587112000175|55|00|001|000124995|25140435587112000175550010001249951060292571|25042014|01052014|172,77|2|||172,77|9|||||||||||||
|C100|0|1|41080722000504|55|00|001|000055343|25140441080722000504550010000553431000553434|28042014|01052014|13145,50|2|||13145,50|9|||||||||||||
|C100|0|1|02437279000109|55|00|001|000019676|25140502437279000109550010000196761082620074|05052014|05052014|7050,00|2|||7050,00|9|||||||||||||
|C170|1|12||2,00000|CX|26,00||0|010|1403|||||||||||||||||||||||||||
|C170|2|6||2,00000|CX|20,00||0|010|1403|||||||||||||||||||||||||||
|C170|3|7||2,00000|CX|24,00||0|010|1403|||||||||||||||||||||||||||
|C190|010|1403||26,00|0,00|0,00|0,00|0,00|26,00|0,00||
|C190|010|1403||20,00|0,00|0,00|0,00|0,00|20,00|0,00||
|C190|010|1403||24,00|0,00|0,00|0,00|0,00|24,00|0,00||
como eu faço para gerar de acordo com txt do sped fiscal
Gostaria de ajuda;
Quando mando gerar o arquivo txt do sped fiscal, os blocos C100, C170 e C190, gera da seguinte forma:
|C100|0|1|35587112000175|55|00|001|000124995|25140435587112000175550010001249951060292571|25042014|01052014|172,77|2|||172,77|9|||||||||||||
|C100|0|1|41080722000504|55|00|001|000055343|25140441080722000504550010000553431000553434|28042014|01052014|13145,50|2|||13145,50|9|||||||||||||
|C100|0|1|02437279000109|55|00|001|000019676|25140502437279000109550010000196761082620074|05052014|05052014|7050,00|2|||7050,00|9|||||||||||||
|C170|1|12||2,00000|CX|26,00||0|010|1403|||||||||||||||||||||||||||
|C170|2|6||2,00000|CX|20,00||0|010|1403|||||||||||||||||||||||||||
|C170|3|7||2,00000|CX|24,00||0|010|1403|||||||||||||||||||||||||||
|C190|010|1403||26,00|0,00|0,00|0,00|0,00|26,00|0,00||
|C190|010|1403||20,00|0,00|0,00|0,00|0,00|20,00|0,00||
|C190|010|1403||24,00|0,00|0,00|0,00|0,00|24,00|0,00||
como eu faço para gerar de acordo com txt do sped fiscal
SPED FISCAL TXT
Judivan, não entendi muito bem sua dúvida, poderia fornecer mais detalhes do problema?
[]´s
[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
-
JUDIVAN CONTABIL
- Usuário Nível 2

- Mensagens: 55
- Registrado em: 20 Mai 2011 07:42
- Localização: IMACULADA-PB
SPED FISCAL TXT
É porque no SPED FISCAL o formato do txt é o seguinte:
C100|0|1|35587112000175|55|00|001|000124995|25140435587112000175550010001249951060292571|25042014|01052014|172,77|2|||172,77|9|||||||||||||
|C170|1|12||2,00000|CX|26,00||0|010|1403|||||||||||||||||||||||||||
|C190|010|1403||26,00|0,00|0,00|0,00|0,00|26,00|0,00||
|C100|0|1|41080722000504|55|00|001|000055343|25140441080722000504550010000553431000553434|28042014|01052014|13145,50|2|||13145,50|9|||||||||||||
|C170|1|12||2,00000|CX|26,00||0|010|1403|||||||||||||||||||||||||||
|C190|010|1403||26,00|0,00|0,00|0,00|0,00|26,00|0,00||
|C100|0|1|02437279000109|55|00|001|000019676|25140502437279000109550010000196761082620074|05052014|05052014|7050,00|2|||7050,00|9|||||||||||||
|C190|010|1403||26,00|0,00|0,00|0,00|0,00|26,00|0,00||
e quando eu gero o txt, fica diferente ou seja fica assim:
|C100|0|1|35587112000175|55|00|001|000124995|25140435587112000175550010001249951060292571|25042014|01052014|172,77|2|||172,77|9|||||||||||||
|C100|0|1|41080722000504|55|00|001|000055343|25140441080722000504550010000553431000553434|28042014|01052014|13145,50|2|||13145,50|9|||||||||||||
|C100|0|1|02437279000109|55|00|001|000019676|25140502437279000109550010000196761082620074|05052014|05052014|7050,00|2|||7050,00|9|||||||||||||
|C170|1|12||2,00000|CX|26,00||0|010|1403|||||||||||||||||||||||||||
|C170|2|6||2,00000|CX|20,00||0|010|1403|||||||||||||||||||||||||||
|C170|3|7||2,00000|CX|24,00||0|010|1403|||||||||||||||||||||||||||
|C190|010|1403||26,00|0,00|0,00|0,00|0,00|26,00|0,00||
|C190|010|1403||20,00|0,00|0,00|0,00|0,00|20,00|0,00||
|C190|010|1403||24,00|0,00|0,00|0,00|0,00|24,00|0,00||
C100|0|1|35587112000175|55|00|001|000124995|25140435587112000175550010001249951060292571|25042014|01052014|172,77|2|||172,77|9|||||||||||||
|C170|1|12||2,00000|CX|26,00||0|010|1403|||||||||||||||||||||||||||
|C190|010|1403||26,00|0,00|0,00|0,00|0,00|26,00|0,00||
|C100|0|1|41080722000504|55|00|001|000055343|25140441080722000504550010000553431000553434|28042014|01052014|13145,50|2|||13145,50|9|||||||||||||
|C170|1|12||2,00000|CX|26,00||0|010|1403|||||||||||||||||||||||||||
|C190|010|1403||26,00|0,00|0,00|0,00|0,00|26,00|0,00||
|C100|0|1|02437279000109|55|00|001|000019676|25140502437279000109550010000196761082620074|05052014|05052014|7050,00|2|||7050,00|9|||||||||||||
|C190|010|1403||26,00|0,00|0,00|0,00|0,00|26,00|0,00||
e quando eu gero o txt, fica diferente ou seja fica assim:
|C100|0|1|35587112000175|55|00|001|000124995|25140435587112000175550010001249951060292571|25042014|01052014|172,77|2|||172,77|9|||||||||||||
|C100|0|1|41080722000504|55|00|001|000055343|25140441080722000504550010000553431000553434|28042014|01052014|13145,50|2|||13145,50|9|||||||||||||
|C100|0|1|02437279000109|55|00|001|000019676|25140502437279000109550010000196761082620074|05052014|05052014|7050,00|2|||7050,00|9|||||||||||||
|C170|1|12||2,00000|CX|26,00||0|010|1403|||||||||||||||||||||||||||
|C170|2|6||2,00000|CX|20,00||0|010|1403|||||||||||||||||||||||||||
|C170|3|7||2,00000|CX|24,00||0|010|1403|||||||||||||||||||||||||||
|C190|010|1403||26,00|0,00|0,00|0,00|0,00|26,00|0,00||
|C190|010|1403||20,00|0,00|0,00|0,00|0,00|20,00|0,00||
|C190|010|1403||24,00|0,00|0,00|0,00|0,00|24,00|0,00||
SPED FISCAL TXT
Ah entendi...
é q vc esta gerando primeiro os C100 cabeçalhos depois os C170 e depois os C190, ... o q vc tem q fazer é o seguinte, não sei como vc armazena os dados ai, suponhamos q vc grave suas notas fiscais em 2 tabelas, 01 para o cabeçalho e outra para os itens..., se for, vc tem q posicionar no primeiro registro do cabeçalho q satisfaça a condição do periodo q vc vai gerar o SPED e a partir dele gerar os itens e o agrupamento CSTXCFOPXICMS (C190), Exemplo (a grosso modo):
Nota 123 Total R$ 36,00
Itens da nota 123
ITEM A CFOP 1102 Valor 11,00 CST 000
ITEM B CFOP 1102 Valor 12,00 CST 000
ITEM C CFOP 1403 Valor 13,00 CST 060
Ai vc para no registro da nota 123 e gera o C100 dela, AI ANTES DE IR PARA A PROXIMA NOTA VC GERA OS C170 E OS C190, VEJA::
C170 ITEM A
C170 ITEM B
C170 ITEM C
C190 23,00 Referente CFOP1102 com CST 000
C190 13,00 Referente CFOP 1403 com CST 060
DEPOIS VC VAI PARA A PROXIMA NOTA E FAZ A MESMA LÓGICA ACIMA.
Agora se vc armazena de forma única as notas, então terá q tratar a situação exposta acima conforme sua realidade, exemplo
Estou Nota 123 (ai na mesma tabela tenho os itens)
nRegAtual := Tabela->(recno())
Ai vc pode criar um indice temporario filtrando a Nota 123 do periodo X do fornecedor Z
Ai gera os C170 e os C190
Depois reposiciona no nRegAtual.
Não sei se conseguiu entender, da uma analisada ai e qualquer coisa retorna aqui pra entendermos melhor tua realidade e ver o q conseguimos ajudar.
[]´s
é q vc esta gerando primeiro os C100 cabeçalhos depois os C170 e depois os C190, ... o q vc tem q fazer é o seguinte, não sei como vc armazena os dados ai, suponhamos q vc grave suas notas fiscais em 2 tabelas, 01 para o cabeçalho e outra para os itens..., se for, vc tem q posicionar no primeiro registro do cabeçalho q satisfaça a condição do periodo q vc vai gerar o SPED e a partir dele gerar os itens e o agrupamento CSTXCFOPXICMS (C190), Exemplo (a grosso modo):
Nota 123 Total R$ 36,00
Itens da nota 123
ITEM A CFOP 1102 Valor 11,00 CST 000
ITEM B CFOP 1102 Valor 12,00 CST 000
ITEM C CFOP 1403 Valor 13,00 CST 060
Ai vc para no registro da nota 123 e gera o C100 dela, AI ANTES DE IR PARA A PROXIMA NOTA VC GERA OS C170 E OS C190, VEJA::
C170 ITEM A
C170 ITEM B
C170 ITEM C
C190 23,00 Referente CFOP1102 com CST 000
C190 13,00 Referente CFOP 1403 com CST 060
DEPOIS VC VAI PARA A PROXIMA NOTA E FAZ A MESMA LÓGICA ACIMA.
Agora se vc armazena de forma única as notas, então terá q tratar a situação exposta acima conforme sua realidade, exemplo
Estou Nota 123 (ai na mesma tabela tenho os itens)
nRegAtual := Tabela->(recno())
Ai vc pode criar um indice temporario filtrando a Nota 123 do periodo X do fornecedor Z
Ai gera os C170 e os C190
Depois reposiciona no nRegAtual.
Não sei se conseguiu entender, da uma analisada ai e qualquer coisa retorna aqui pra entendermos melhor tua realidade e ver o q conseguimos ajudar.
[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
-
JUDIVAN CONTABIL
- Usuário Nível 2

- Mensagens: 55
- Registrado em: 20 Mai 2011 07:42
- Localização: IMACULADA-PB
SPED FISCAL TXT
É dessa forma que eu uso, a onde está o erro:
Código: Selecionar todos
**********************************************************
Function GeraBlocoC()
Local x ,nOk := 0
Local cPesq, _cPesq
Cen_tra('Selecionando Notas......')
SELECT ENTRADA
*SET ORDER TO 1
* ENTRADA->(DBGOTOP())
Index on PERIODO+DATA to ENTRADA1
GO TOP
SEEK M->vMes
DO WHILE (PERIODO=M->vMes)
SELECT NOTA
*Index on PERIODO+DATA TO (M->CAMINHO+"\"+M->CODIGO+"\NOTA1")
Index on PERIODO+DATA TO NOTA1
DBSETORDER(1)
Sele C100
Append Blank
Repla C100->Reg With 'C100'
Repla C100->IndOper With ALLTRIM(entrada->CONTA) //indicador do tipo de opercao->0-entrada e 1-saida
Repla C100->IndEmit With ENTRADA->IND_EMIT // Ver
Repla C100->CodPart With ALLTRIM(STRZERO(Val(LimpaStr(ENTRADA->CNPJ_CPF)),14))
Repla C100->CodSit With '00'
Repla C100->CodMod With entrada->COD_MOD
Repla C100->Ser With entrada->serie
Repla C100->NumDoc With StrZero(val(entrada->nota),9)
Repla C100->chvnfe With entrada->CHV_NFE
Repla C100->dtdoc With entrada->d_doc
Repla C100->Dtes With entrada->(LimpaStr(DATA))
Repla C100->vldoc With entrada->VL_CONTABI
Repla C100->indpagto With entrada->IND_PGTO
*Repla C100->vldesc With entrada->vlr_Desco //
*Repla C100->vlabatnt With entrada->
Repla C100->vlmerc With entrada->VL_CONTABI
Repla C100->indfrt With entrada->IND_FRT //
*Repla C100->vlfrt With entrada-> //
*Repla C100->vlSeg With entrada->
*Repla C100->vloutda With entrada->ValorOutro
Repla C100->vlbcicms With entrada->B_CALCULO
Repla C100->vlicms With entrada->VL_ICMS
Repla C100->vlbcicmsst With entrada->VLSUBT
Repla C100->vlicmsst With entrada->IMPSUBT
Repla C100->vlipi With entrada->IPI
*Repla C100->vlpis With entrada->
*Repla C100->vlcofins With entrada->
*Repla C100->vlpisst With entrada->
*Repla C100->vlconfisst With entrada->
Sele entrada
cTpoRegUF := entrada->UF+Iif(C100->IndEmit=='0','E',"S")
//--- JAFFILTRO
cPesq := C100->CodPart+C100->NumDoc+C100->Ser
Skip+1
*CLOSE ENTRADA
Enddo
*******************************
SELECT NOTA
NOTA->(DBGOTOP())
*Index on PERIODO+DATA TO (M->CAMINHO+"\"+M->CODIGO+"\NOTA1")
Index on PERIODO+DATA TO NOTA1
*GO TOP
SEEK M->vMes
DO WHILE (PERIODO=M->vMes)
IF TIPO_ES="E"
Sele C170
Append Blank
Repla C170->Reg With 'C170'
Repla C170->numitem With Alltrim(str(nota->nr_item))
Repla C170->Coditem With Alltrim(str((nota->codigo)))
Repla C170->descricao With Alltrim(nota->desc_compl)
Repla C170->qtd With nota->quant_unid
Repla C170->unid With Alltrim(nota->unid_med)
Repla C170->vlitem With nota->vlr_item //
Repla C170->vldesc With nota->vlr_desc
Repla C170->indmov With nota->ind_movi
Repla C170->csticms With nota->cstr_icms
Repla C170->cfop With LimpaStr(nota->operacao) //
Repla C170->codnat With ""
Repla C170->vlbcicms With nota->vlr_bc_icm
Repla C170->Aliqicms With nota->aliq_icmnf
Repla C170->vlicms With nota->vlr_icms
Repla C170->vlbcicmsst With nota->vlrbcicmst //
Repla C170->aliqst With nota->aliq_stnf
Repla C170->vlicmsst With nota->vlr_icm_st
Repla C170->indapur With nota->ind_apura //
Repla C170->cstipi With nota->cst_ipinf //
Repla C170->codenq With nota->cod_enqnf //
Repla C170->vlbcipi With nota->vlr_bc_ipi //
Repla C170->aliqipi With nota->aliq_ipinf
Repla C170->vlipi With nota->vlr_ipi //
Repla C170->cstpis With nota->cst_pisnf //
Repla C170->vlbcpis With nota->vlr_bc_pis //
Repla C170->aliqpis With nota->aliq_pisnf //
Repla C170->quantbcpis With nota->q_bc_pis //
Repla C170->aliqpis With nota->aliqpisr
Repla C170->vlpis With nota->vlr_pis //
Repla C170->cstcofins With nota->cst_cofinf //
Repla C170->vlbcconfis With nota->vlr_bc_cof //
Repla C170->aliqconfis With nota->aliq_cofin //
Repla C170->qtdbcconfi With nota->quan_bc_co //
Repla C170->aliqconfis With nota->aliqcofins
Repla C170->vlcofins With nota->vlr_cofins //
Repla C170->codcta With nota->cod_ctanf
Repla C170->JAFFiltro With nota->_cPesq
Select NOTA
ENDIF
*Skip
*Enddo
NOTA->(DBSKIP())
ENDDO
**********************************************************SPED FISCAL TXT
O erro esta nas linha 57 e 59, observe q vc vai para proxima nota (SKIP) no mesmo laço 59 (ENDDO), ou seja vc esta fazendo todos os C100 pra depois ir para o C170
Vc tem q antes de fazer o skip na nota fazer os c170 dessa nota e os c190 pra depois pular pra próxima...
Veja abaixo o teu código q eu dei uma reformulada pra vc entender a lógica, mas perceba q não esta concluído, vc como conhecedor das tabelas, estrutura de campos etc vai conseguir basear agora e fazer a alteração necessária.
Vc tem q antes de fazer o skip na nota fazer os c170 dessa nota e os c190 pra depois pular pra próxima...
Veja abaixo o teu código q eu dei uma reformulada pra vc entender a lógica, mas perceba q não esta concluído, vc como conhecedor das tabelas, estrutura de campos etc vai conseguir basear agora e fazer a alteração necessária.
Código: Selecionar todos
**********************************************************
Function GeraBlocoC()
Local x ,nOk := 0
Local cPesq, _cPesq
Cen_tra('Selecionando Notas......')
SELECT ENTRADA
Index on PERIODO+DATA to ENTRADA1
GO TOP
SEEK M->vMes
DO WHILE (PERIODO=M->vMes)
SELECT NOTA
*Index on PERIODO+DATA TO (M->CAMINHO+"\"+M->CODIGO+"\NOTA1")
Index on PERIODO+DATA TO NOTA1
DBSETORDER(1)
Sele C100
Append Blank
Repla C100->Reg With 'C100'
Repla C100->IndOper With ALLTRIM(entrada->CONTA) //indicador do tipo de opercao->0-entrada e 1-saida
Repla C100->IndEmit With ENTRADA->IND_EMIT // Ver
Repla C100->CodPart With ALLTRIM(STRZERO(Val(LimpaStr(ENTRADA->CNPJ_CPF)),14))
Repla C100->CodSit With '00'
Repla C100->CodMod With entrada->COD_MOD
Repla C100->Ser With entrada->serie
Repla C100->NumDoc With StrZero(val(entrada->nota),9)
Repla C100->chvnfe With entrada->CHV_NFE
Repla C100->dtdoc With entrada->d_doc
Repla C100->Dtes With entrada->(LimpaStr(DATA))
Repla C100->vldoc With entrada->VL_CONTABI
Repla C100->indpagto With entrada->IND_PGTO
Repla C100->vlmerc With entrada->VL_CONTABI
Repla C100->indfrt With entrada->IND_FRT //
Repla C100->vlbcicms With entrada->B_CALCULO
Repla C100->vlicms With entrada->VL_ICMS
Repla C100->vlbcicmsst With entrada->VLSUBT
Repla C100->vlicmsst With entrada->IMPSUBT
Repla C100->vlipi With entrada->IPI
Sele entrada
cTpoRegUF := entrada->UF+Iif(C100->IndEmit=='0','E',"S")
//--- JAFFILTRO
cPesq := C100->CodPart+C100->NumDoc+C100->Ser
//--> Aki vc tem q fazer os itens desta nota q vc incluiu no C100
//--> Tipo eu peguei o código q estava ap¢s o ENDDO e coloquei aki pra vc ter uma ideia,
//--> como não sei exatamente como estao as informações na tabela apenas coloquei pra vc perceber
SELECT NOTA
NOTA->(DBGOTOP())
//--> aki vc tem q filtrar a nota acima ENTRADA->Nota pra jogar os itens (C170) dela
DO WHILE //--> FA€A ENQUANTO FOR OS ITENS DA NOTA ACIMA DO C100
IF TIPO_ES="E"
Sele C170
Append Blank
Repla C170->Reg With 'C170'
Repla C170->numitem With Alltrim(str(nota->nr_item))
Repla C170->Coditem With Alltrim(str((nota->codigo)))
Repla C170->descricao With Alltrim(nota->desc_compl)
Repla C170->qtd With nota->quant_unid
Repla C170->unid With Alltrim(nota->unid_med)
Repla C170->vlitem With nota->vlr_item //
Repla C170->vldesc With nota->vlr_desc
Repla C170->indmov With nota->ind_movi
Repla C170->csticms With nota->cstr_icms
Repla C170->cfop With LimpaStr(nota->operacao) //
Repla C170->codnat With ""
Repla C170->vlbcicms With nota->vlr_bc_icm
Repla C170->Aliqicms With nota->aliq_icmnf
Repla C170->vlicms With nota->vlr_icms
Repla C170->vlbcicmsst With nota->vlrbcicmst //
Repla C170->aliqst With nota->aliq_stnf
Repla C170->vlicmsst With nota->vlr_icm_st
Repla C170->indapur With nota->ind_apura //
Repla C170->cstipi With nota->cst_ipinf //
Repla C170->codenq With nota->cod_enqnf //
Repla C170->vlbcipi With nota->vlr_bc_ipi //
Repla C170->aliqipi With nota->aliq_ipinf
Repla C170->vlipi With nota->vlr_ipi //
Repla C170->cstpis With nota->cst_pisnf //
Repla C170->vlbcpis With nota->vlr_bc_pis //
Repla C170->aliqpis With nota->aliq_pisnf //
Repla C170->quantbcpis With nota->q_bc_pis //
Repla C170->aliqpis With nota->aliqpisr
Repla C170->vlpis With nota->vlr_pis //
Repla C170->cstcofins With nota->cst_cofinf //
Repla C170->vlbcconfis With nota->vlr_bc_cof //
Repla C170->aliqconfis With nota->aliq_cofin //
Repla C170->qtdbcconfi With nota->quan_bc_co //
Repla C170->aliqconfis With nota->aliqcofins
Repla C170->vlcofins With nota->vlr_cofins //
Repla C170->codcta With nota->cod_ctanf
Repla C170->JAFFiltro With nota->_cPesq
Select NOTA
ENDIF
NOTA->(DBSKIP())
ENDDO
//--> AI SIM APOS TER TERMINADO OS ITENS DA NOTA VC VAI PRA PROXIMA NOTA NA TABELA ENTRADA
Skip
Enddo
RETURN NIL
**********************************************************Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
-
JUDIVAN CONTABIL
- Usuário Nível 2

- Mensagens: 55
- Registrado em: 20 Mai 2011 07:42
- Localização: IMACULADA-PB
SPED FISCAL TXT
Algum outro colega poderia revisar o código pra ver o q estaria errado, pois até onde vi seria o q mencionei.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
SPED FISCAL TXT
Acredito que a logica tá correta Fladimir... o colega Josivam poderia compactar o código pra ficar mais fácil analisar... mas como você disse para ele primeiro pega os dados de uma c100, depois filtra os c170 dessa c100 e depois os c190.. só depois disso que volta no c100 e pula o registro...
Tipo assim...
Tipo assim...
Código: Selecionar todos
Sele c100
append blank
Repla C100->Reg With 'C100'
Repla C100->IndOper With ALLTRIM(entrada->CONTA)
Repla C100->Numero With cNumero
Sele c170
Set Filter to itensdoc170 = cNumero do C100
append blank
Repla c170->Reg With 'C170'
Sele c190
Set Filter to itensdoc190 = cNumero do C100
append blank
Repla c190->Reg With 'C170'
Sele c100
dbskip()
"Eu e minha casa servimos ao Senhor e você
"
-
Mário Isa
- Usuário Nível 4

- Mensagens: 907
- Registrado em: 07 Jul 2004 13:54
- Localização: Ilha Solteira-sp
SPED FISCAL TXT
No caso em pauta o colega está fazendo somente das notas de entrada ?
Ou as de saída também ?
E os cupons fiscais ? também tem que incluir ?
Mário
Ou as de saída também ?
E os cupons fiscais ? também tem que incluir ?
Mário
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
SPED Fiscal TXT
Pra facilitar essas coisas, eu faço assim, supondo que fossem NFs, contendo pedidos, que contém produtos:
Ao invés de encher de DO WHILE, cada rotina faz sua parte.
O primeiro processa as notas, os registros 100.
geraPedido() mostra os pedidos daquela nota, os registros 170
GeraProdutoPedido() mostra os produtos daquele pedido, os registros 190.
Comparando com sua rotina, é como se voce colocasse todas as notas, depois todos os pedidos, e depois todos os produtos.
Acaba ficando tudo misturado, sem saber o que percente a cada coisa.
Como dizia uma regra antiga de programação:
Se você tem um problema grande, divida em pequenos problemas, e resolva um pequeno problema por vez.
Nota: usei esses arquivos só pra exemplificar, não é isso que vai no sped...
Código: Selecionar todos
SELECT NOTAS
DO WHILE .NOT. Eof()
? "NF - 100"
GeraPedidos() // 170
SKIP
ENDDO
RETURN
FUNCTION GeraPedidos() // 170
LOCAL nSelect := Select()
SELECT PEDIDOS
SEEK nota->NF
DO WHILE pedido->NF == nota->nf .AND. .NOT. Eof()
? "pedido -= 170"
GeraProdutoPedido() // 190
SKIP
ENDDO
SELECT (nSelect)
RETURN NIL
FUNCTION GeraPedidoProduto() // 190
LOCAL nSelect := Select()
SELECT produtopedido
SEEK pedidos->Pedido
DO WHILE produtopedido->Pedido == pedidos->pedido .and. .not. eof()
? "Produto pedido - 190"
SKIP
ENDDO
SELECT (nSelect)
RETURN NIL
O primeiro processa as notas, os registros 100.
geraPedido() mostra os pedidos daquela nota, os registros 170
GeraProdutoPedido() mostra os produtos daquele pedido, os registros 190.
Comparando com sua rotina, é como se voce colocasse todas as notas, depois todos os pedidos, e depois todos os produtos.
Acaba ficando tudo misturado, sem saber o que percente a cada coisa.
Como dizia uma regra antiga de programação:
Se você tem um problema grande, divida em pequenos problemas, e resolva um pequeno problema por vez.
Nota: usei esses arquivos só pra exemplificar, não é isso que vai no sped...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/