a geração de SPED Fiscal/Contribuições
Vc tem essa rotina solta ?
Não estava querendo mexer nisso, mas parece que terei que estudar essa parte.
Saudações,
Itamar M. Lins Jr.

Moderador: Moderadores
a geração de SPED Fiscal/Contribuições
/*
PFISCSPED - SPED PIS/COFINS
2011.09 - José Quintas
*/
#include "josequintas.ch"
#include "inkey.ch"
#define SPED_SEPARADOR "|"
MEMVAR aBlocoList, aBlocoTotList
MEMVAR mDatIni, mDatFim, mTipoSped, mPerfil, mLayOut, aPisList, aCofinsList, aPisBasList, aCofinsBasList
MEMVAR mPisVal, mCofVal
PROCEDURE pFiscSped
LOCAL mFileSped, GetList := {}
PRIVATE mDatIni, mDatFim, mTipoSped, mPerfil, mLayOut, aBlocoList, aBlocoTotList, aPisList, aCofinsList, aPisBasList, aCofinsBasList
IF ! AbreArquivos( "jppedido", "jpcadastro", "jpitem", "jpcidade", "jpempresa", "jptabel" )
RETURN
ENDIF
mDatIni := Date() - Day( Date() )
mDatIni := mDatIni - Day( mDatIni ) + 1
mDatFim := Date() - Day( Date() )
mTipoSped := "P"
mPerfil := "A"
@ 5, 5 SAY "Data Inicial......:" GET mDatIni
@ 6, 5 SAY "Data Final........:" GET mDatFim
@ 7, 5 SAY "Sped Fiscal ou Pis:" GET mTipoSped PICTURE "!A" VALID mTipoSped $ "FP"
@ 8, 5 SAY "Perfil............:" GET mPerfil PICTURE "!A" VALID mPerfil $ "ABC"
@ 10, 5 SAY "Temporariamente retirado bloco C110 (Pis/Cof) ref informações complementares"
Mensagem( "Digite campos, ESC Sai" )
READ
Mensagem()
IF LastKey() == K_ESC
RETURN
ENDIF
IF ! MsgYesNo( "Confirma geração" )
RETURN
ENDIF
SayScroll( "Gerando SPED" )
IF mTipoSped == "P"
mLayout := "003" // 2.01A
mFileSped := "EXPORTA\SPPC" + Substr( Dtos( mDatFim ), 3, 4 ) + ".TXT"
ELSE
mLayOut := "006"
mFileSped := "EXPORTA\SPFI" + Substr( Dtos( mDatFim ), 3, 4 ) + ".TXT"
ENDIF
SET ALTERNATE TO ( mFileSped )
SET ALTERNATE ON
SET CONSOLE OFF
aBlocoList := {}
aBlocoTotList := {} // usado nos totalizadores
aPisList := {}
aPisBasList := {}
aCofinsList := {}
aCofinsBasList := {} // totaliza C170 para M400 e M800
// --------------------- Bloco0 - Abertura, Identificacao e Referencias
Bloco0000() // Abertura Bloco 0
Bloco0001() // Abertura Bloco 0
IF mTipoSped == "F"
Bloco0005()
Bloco0015()
ENDIF
Bloco0100() // Contabilista
IF mTipoSped == "P"
Bloco0110() // Regime de Apuracao
Bloco0111() // Tabela de Receita Bruta Mensal
Bloco0120() // Identif. Periodos dispensados da escrituracao digital
Bloco0140() // Tabela de Cadastro Estabelecimento
ENDIF
Bloco0150() // Tabela de Cadastro de Participantes
IF mTipoSped == "F"
Bloco0175()
ENDIF
Bloco0190() // Tabela de Unidades de Medida
Bloco0200() // Tabela de Produtos e Servicos
// Bloco0200-Bloco0205() // Alteração do produto/serviço
// Bloco0200-Bloco0206() // Tabela ANP
IF mTipoSped == "P"
Bloco0208() // Codigo de Grupos por Marca (Bebidas Frias)
ENDIF
IF mTipoSped == "F"
Bloco0220() // Fatores de Conversao
Bloco0300() // Bens ou Componentes do Ativo
ENDIF
Bloco0400() // Tabela de Natureza de Operacao
Bloco0450() // Tabela de Informacao Complementar
IF mTipoSped == "F"
Bloco0460()
ENDIF
Bloco0500() // Plano de Contas Contabil
Bloco0600() // Centros de Custo
Bloco0990() // Encerramento
IF mTipoSped == "P"
// --------------------- BlocoA - Documentos Fiscais Servicos ISS
BlocoA001() // Abertura Bloco A
// BlocoA010() // Identificacao do Estabelecimento
// BlocoA100() // Documento NF Servico
// BlocoA100-BlocoA110() // Complemento - Informacao Complementar
// BlocoA100-BlocoA111() // Processo Referenciado
// BlocoA100-BlocoA120() // Complemento - Importacao
// BlocoA100-BlocoA170() // Complemento - Itens do Documento
BlocoA990() // Encerramento Bloco A
ENDIF
// -------------------- BlocoC - Documentos Fiscais I Mercadorias ICMS/IPI
BlocoC001() // Abertura
IF mTipoSped == "P"
BlocoC010() // Identificacao do Estabelecimento
ENDIF
BlocoC100() // Nota Fiscal
// BlocoC100-BlocoC110( xxLeis ) // Complemento
IF mTipoSped == "F"
// BlocoC100-BlocoC105()
// BlocoC100-BlocoC110( xxLeis )
ENDIF
// BlocoC100-BlocoC111() // Processo Referenciado
// BlocoC100-BlocoC120() // Complemento Importacao
// BlocoC100-BlocoC170( nIdPedido ) // Itens do Documento
// BlocoC180() // Consolidacao das Notas Emitidas
// BlocoC181() // Detalhamento da Consolidacao Pis
// BlocoC185() // Detalhamento da Consolidacao Cofins
// BlocoC188() // Processo Referenciado
// BlocoC190() // Consolidacao de NFE Aquisicao e Devolucao Compras/Vendas
// BlocoC191() // Detalhamento 190 Pis
// BlocoC195() // Detalhamento 190 Cofins
// BlocoC198() // Processo Referenciado
// BlocoC199() // Complemento Importacao
// BlocoC380() // Consolidacao NF Consumidor Emitidos
// BlocoC381() // Detalhamento 380 Pis
// BlocoC385() // Detalhamento 380 Cofins
// BlocoC395() // NF Consumidor Aquisicoes
// BlocoC396() // Produtos da NF Consumidor 395
// BlocoC400() // Equipamento ECF
// BlocoC405() // Reducao Z
// BlocoC481() // Resumo Diario ECF Pis
// BlocoC485() // Resumo Diario ECF Cofins
// BlocoC489() // Processo Referenciado
// BlocoC490() // Consolidacao ECF
// BlocoC491() // Detalhamento 0490 Pis
// BlocoC495() // Detalhamento 0490 Cofins
// BlocoC499() // Processo Referenciado ECF
// BlocoC500() // Luz, Agua e Gas
// BlocoC501() // Complemento 500 Pis
// BlocoC505() // Complemento 500 Cofins
// BlocoC600() // Consolidacao Luz,Agua,Gas
// BlocoC601() // Complemento 0600 Pis
// BlocoC605() // Complemento 0600 Cofins
// BlocoC609() // Processo Referenciado 0600
// BlocoC800() // Cupom Fiscal Eletronico
// BlocoC810() // Detalhamento C800 Pis
// BlocoC820() // Detalhamento C800 Cofins
// BlocoC830() // Processo Referenciado C800
// BlocoC860() // Identificacao Equipamento SAT-CFe
// BlocoC870() // Detalhamento Cupom Pis
// BlocoC880() // Detalhamento Cupom Cofins
BlocoC990() // Encerramento Bloco C
// --------------------- BlocoD - Documentos Fiscais II Servicos ICMS
BlocoD001() // Abertura
// BlocoD010() // Identificacao do Estabelecimento
// BlocoD100() // Aquisicao Serv Transp
// BlocoD101() // Complemento Pis
// BlocoD105() // Complemento Cofins
// BlocoD111() // Processo Referenciado
// BlocoD200() // Resumo Diario Serv Transp
// BlocoD201() // Total Diario Pis
// BlocoD205() // Total Diario Cofins
// BlocoD209() // Processo Referenciado
// BlocoD300() // Resumo Diario
// BlocoD309() // Processo Referenciado
// BlocoD350() // Resumo Diario Cupom ECF
// BlocoD359() // Processo Referenciado
// BlocoD500() // NF Comunicacao/Telecomunicacao
// BlocoD501() // Complemento Pis
// BlocoD509() // Complemento Cofins
// BlocoD600() // Processo Referenciado
// BlocoD601() // Consolidacao
// BlocoD605() // Complemento Consolidacao
// BlocoD609() // Processo Referenciado
BlocoD990() // Encerramento
IF mTipoSped == "F"
// --------------------- BLOCOE -
BlocoE001() // Abertura
BlocoE100() // Movimento
BlocoE110() // Apuracao ICMS
BlocoE990() // Encerramento
ENDIF
// --------------------- BlocoF - Demais Documentos e Operacoes
IF mTipoSped == "P"
BlocoF001() // Abertura
// BlocoF010() // Identificacao do Estabelecimento
// BlocoF100() // Demais Doc
// BlocoF111() // Processo Referenciado
// BlocoF120() // Bens Ativo Depreciacao
// BlocoF129() // Processo Referenciado
// BLocoF130() // Bens Ativo Aquisicao
// BlocoF139() // Processo Referenciado
// BlocoF150() // Credito Presumido sobre estoque
// BlocoF200() // Ativ.Imobiliaria Venda
// BlocoF205() // Ativ.Imobiliaria Custo
// BlocoF210() // Ativ.Imobiliaria Custo
// BlocoF211() // Processo Referenciado
// BlocoF500() // Consolidacao Regime de Caixa
// BlocoF509() // Processo Referenciado
// BlocoF510() // Consolidacao Regime de Caixa por unidade
// BlocoF519() // Processo Referenciado
// BlocoF525() // Composicao Receita Regime de Caixa
// BlocoF550() // Consolidacao Regime de Competencia
// BlocoF559() // Processo Referenciado
// BlocoF560() // Consolidacao Regime Competencia por Unidade
// BlocoF569() // Processo Referenciado
// BlocoF600() // Contribuicao Retida na fonte
// BlocoF700() // Deducoes Diversas
// BlocoF800() // Creditos Incorporacao,Fusao e Cisao
BlocoF990() // Encerramento
ENDIF
IF mTipoSped == "F"
// --------------------BlocoG - Controle de Credito de ICMS do Ativo Permanente - CIAP
BlocoG001()
BlocoG990()
// --------------------BlocoH - Inventario Fisico
BlocoH001()
BlocoH990()
ENDIF
// -------------------- BlocoI
IF mTipoSped == "P"
// -------------------- BlocoM - Apuracao da Contribuicao e Credito PIS e COFINS
BlocoM001() // Abertura
// BlocoM100() // Credito Pis Periodo
// BlocoM105() // Detalhamento Pis
// BlocoM110() // Ajustes de Credito
BlocoM200() // Consolidacao Pis
// BlocoM210()// Detalhamento Pis
// BlocoM211() // Cooperativas Pis
// BlocoM220() // Ajustes Pis
// BlocoM230() // Inf. Adicionais Pis
// BlocoM300() // Pis Anteriores
// BlocoM350() // Pis Folha de Salarios
BlocoM400() // Receitas Isentas
BlocoM410() // Detalhamento Isentas
// BlocoM500() // Credito Cofins
// BlocoM505() // Consolidacao Cofins
// BlocoM510() // Ajustes Cofins
BlocoM600() // Consolidacao Cofins
// BlocoM610() // Detalhamento Cofins
// BlocoM611() // Cooperativas Cofins
// BlocoM620() // Ajustes Cofins
// BlocoM630() // Inf.Adicionais Cofins
// BlocoM700() // Cofins Anteriores
BlocoM800() // Isentas Cofins
BlocoM810() // Detalhamento Isentas
BlocoM990() // Encerramento
ENDIF
// -------------------- BlocoP
// ------------------- Bloco1 - Complemento da Escrituracao
Bloco1001()
// Bloco1010()
// Bloco1020()
// Bloco1100()
// Bloco1101()
// Bloco1102()
// Bloco1200()
// Bloco1210()
// Bloco1220()
// Bloco1300()
// Bloco1500()
// Bloco1501()
// Bloco1502()
// Bloco1600()
// Bloco1610()
// Bloco1620()
// Bloco1700()
// Bloco1800()
// Bloco1809()
// Bloco1900()
Bloco1990()
// --------------------- Bloco9 - Encerramento
Bloco9001() // Abertura
Bloco9900() // Totalizacao dos blocos
Bloco9990() // Encerramento bloco
Bloco9999() // Encerramento Geral
SET CONSOLE ON
SET ALTERNATE OFF
SET ALTERNATE TO
fDelEof( mFileSped )
MsgExclamation( "Fim da Geracao" )
RETURN
@ Row()+1, 1 SAY "Pedido...........:" GET nIdPedido PICTURE "999999" VALID nIdPedido == 0 .OR. Encontra( StrZero( nIdPedido, 6 ), "jppedido", "pedido" )
@ Row()+1, 1 SAY "Pedido...........:" GET nIdPedido PICTURE "999999" VALID nIdPedido == 0 .OR. ADORecCount( "JPPEDIDO", "IDPEDIDO = " + NumberSQL( nIdPedido ) ) != 0
30/12/2019 21:50 163 cthisto.dbf
30/12/2019 21:50 259 jpbaauto.dbf
30/12/2019 21:52 291 jprefcta.dbf
30/12/2019 21:50 355 ctlotes.dbf
30/12/2019 21:50 387 ctlanca.dbf
30/12/2019 21:50 483 jpcontabil.dbf
03/03/2020 02:44 2.799 jpfiscal.DBF
30/12/2019 21:50 5.335 jpempresa.dbf
18/06/2020 14:10 5.923 jpnumero.dbf
30/12/2019 21:50 6.691 ctplano.dbf
30/12/2019 21:52 7.416 jpuf.dbf
30/12/2019 21:50 7.839 jpbagrup.dbf
18/06/2020 14:10 10.278 jpconfi.dbf
30/12/2019 21:52 118.525 jptabel.dbf
26/05/2020 10:07 273.170 jpsenha.dbf
30/12/2019 21:50 301.112 jpdolar.dbf
08/06/2020 17:11 478.728 jppreco.DBF
03/03/2020 02:33 1.254.539 jpcidade.dbf
29/05/2020 11:56 1.254.826 jppretab.DBF
18/06/2020 14:12 1.373.222 jpitem.DBF
30/03/2020 06:42 2.264.308 jpmdfcab.DBF
30/03/2020 06:41 5.929.799 jpmdfdet.DBF
16/06/2020 12:09 11.004.331 jpcadastro.DBF
08/06/2020 16:59 16.290.814 jpbancario.dbf
18/06/2020 14:12 163.474.850 JPPEDIDO.DBF
25 arquivo(s) 204.066.443 bytes
WITH OBJECT cnSQL
:ExecuteCmd( "DELETE FROM JPNOTFIS WHERE NFFILIAL = " + NumberSQL( nIdFilial ) + " AND NFNOTFIS = " + NumberSQL( nNumNotFis ) )
:cSQL := "SELECT JPPEDIDO.*" + ;
" FROM JPPEDIDO" + ;
" WHERE IDPEDIDO = " + NumberSQL( nIdPedido )
:Execute()
...
IF ! "SEMFIN" $ ReacaoJPTRANSA( :Number( "PDTRANSA" ) )
FOR nCont := 1 TO Len( oParcelas )
:QueryCreate()
...
:QueryAdd( "FIPORTADOR", StrZero( nIdPortador, 6 ) )
Encontra( StrZero( :Number( "PDCADASTRO" ), 6 ), "jpcadastro", "numlan" ) // Posiciona cliente
:QueryAdd( "FIVENDEDOR", StrZero( iif( :Number( "PDVENDEDOR" ) == 0, Val( jpcadastro->cdVendedor ), :Number( "PDVENDEDOR" ) ), 6 ) )
:QueryExecuteInsert( "JPFINAN" )
NEXT
ENDIF
:CloseRecordset()
ENDWITH
:cSQL := "SELECT JPPEDIDO.*, JPCADASTRO.CDVENDEDOR" + ;
" FROM JPPEDIDO" + ;
" LEFT JOIN JPCADASTRO ON JPCADASTRO.IDCADASTRO = JPPEDIDO.PDCADASTRO" + ;
" WHERE IDPEDIDO = " + NumberSQL( nIdPedido )
...
:QueryAdd( "FIVENDEDOR", StrZero( iif( :Number( "PDVENDEDOR" ) == 0, :Number( "CDVENDEDOR" ), :Number( "PDVENDEDOR" ) ), 6 ) )
:QueryExecuteInsert( "JPFINAN" )
deixar pra depois, afinal ninguém mais usa isso
Retornar para Contribuições, Dicas e Tutoriais
Usuários vendo este fórum: Nenhum usuário registrado online e 19 visitantes