Árvore de páginas

01. DADOS GERAIS

Linha de Produto:Microsiga Protheus®
Segmento:Serviços
Módulo:Fiscal

02. DESCRIÇÃO

Ponto de entrada para inclusão dos registros referentes ao Bloco D350 e registros filhos no SPEDFISCAL, respeitando a hierarquia dos registros conforme Guia pratico.

Abaixo os registros contemplados pelo ponto de entrada:

Importante

Este ponto de Entrada não tem utilidade sobre outros registros de complemento do SPEDFISCAL. 

Caso necessite realizar tratamento em algum registro que seja de complemento de documento fiscal recomendamos o ponto de entrada MATUCOMP em: PE - MATUCOMP - Alterações automáticas de Complemento de Documentos Fiscais

03. ESPECIFICAÇÃO

Parâmetros do ponto de entrada:

Nome

Tipo

Descrição

PARAMIXB[1]Array of RecordcAlias = Alias
PARAMIXB[2]Array of RecordaFiliais = Contendo todas as Filiais selecionadas e não selecionadas da geração do arquivo


Retorno:

NomeTipoDescrição
NIlNulo

O retorno deve retornar valor Nulo.


04. EXEMPLO DE UTILIZAÇÃO

SPEDREGD
#include "rwmake.ch"
#include "Topconn.ch"
#include "protheus.ch"
 
User Function SPEDREGD()
Local cAlias    :=  PARAMIXB[1]
Local aFiliais  :=  PARAMIXB[2] // Contem todas as filiais do arquivo

Local nPos      :=  0
Local nPos350   :=  0
Local nPos355   :=  0
Local nPos365   :=  0

Local aRegD350  :=  {}
Local aRegD355  :=  {}
Local aRegD360  :=  {}
Local aRegD365  :=  {}
Local aRegD370  :=  {}
Local aRegD390  :=  {}
 
// REGISTRO D350 EQUIPAMENTO ECF (CÓDIGOS 2E, 13, 14, 15 e 16)
aAdd(aRegD350, {})
nPos := 1
aAdd(aRegD350[nPos], "D350"                    )       //00 - REG       //Tipo do Registro
aAdd(aRegD350[nPos], "2E"                      )       //02 - COD_MOD
aAdd(aRegD350[nPos], "BM MP20"                 )       //03 - ECF_MOD
aAdd(aRegD350[nPos], "BE050975610000050056"    )       //04 - ECF_FAB
aAdd(aRegD350[nPos], Right("013",3)            )       //05 - ECF_CX
 
nPos350 := nPos
 
//Preenchimento do registro 355
 
aAdd(aRegD355, {})
nPos := 1
aAdd(aRegD355[nPos], nPos350       )       //01 - REG
aAdd(aRegD355[nPos], "D355"        )       //01 - REG
aAdd(aRegD355[nPos], '01102010'    )       //02 - DT_DOC
aAdd(aRegD355[nPos], '001'         )       //03 - CRO
aAdd(aRegD355[nPos], '00303'       )       //04 - CRZ
aAdd(aRegD355[nPos], '008056'      )       //05 - NUM_COO_FIN
aAdd(aRegD355[nPos], 0             )       //06 - GT_FIN
aAdd(aRegD355[nPos], 515.68        )       //07 - VL_BRT
 
nPos355:= nPos
 
// Preenchimento do registro 365
 
aAdd(aRegD365, {})
nPos := Len (aRegD365)
aAdd(aRegD365[nPos], nPos355)      //01 - REG
aAdd(aRegD365[nPos], "D365")       //01 - REG
aAdd(aRegD365[nPos], 'I1'  )       //02 - COD_TOT_PAR
aAdd(aRegD365[nPos], 14.40 )       //03 - VLR_ACUM_TOT
aAdd(aRegD365[nPos], '00')         //04 - NR_TOT
aAdd(aRegD365[nPos], "")           //05 - DESCR_NR_TOT
 
nPos365:= nPos
 
//REGISTRO D370: COMPLEMENTO DOS DOCUMENTOS INFORMADOS (CÓDIGOS 13,14, 15 e 16 e 2E)
aAdd(aRegD370, {})
nPos    :=  Len (aRegD370)
aAdd(aRegD370[nPos], nPos365   )   //01 - REG
aAdd(aRegD370[nPos], "D370"    )   //01 - REG
aAdd(aRegD370[nPos], '5201108' )   //02 - COD_MUN
aAdd(aRegD370[nPos], 14.40     )   //03 - VLR PREST SERV
aAdd(aRegD370[nPos], '1'       )   //04 - QTD_BILH
aAdd(aRegD370[nPos], 0         )   //05 - VLR BASE ICMS
aAdd(aRegD370[nPos], 0         )   //06 - VLR ICMS 
 
// Preenchimento do registro 365
aAdd(aRegD365, {})
nPos := Len (aRegD365)
aAdd(aRegD365[nPos], nPos355   )   //01 - REG
aAdd(aRegD365[nPos], "D365"    )   //01 - REG
aAdd(aRegD365[nPos], 'T1700'   )   //02 - COD_TOT_PAR
aAdd(aRegD365[nPos], 501.28    )   //03 - VLR_ACUM_TOT
aAdd(aRegD365[nPos], '00'      )   //04 - NR_TOT
aAdd(aRegD365[nPos], ""        )   //05 - DESCR_NR_TOT
 
nPos365:= nPos
 
//REGISTRO D370: COMPLEMENTO DOS DOCUMENTOS INFORMADOS (CÓDIGOS 13,14, 15 e 16 e 2E)
 
aAdd(aRegD370, {})
nPos    :=  Len (aRegD370)
aAdd(aRegD370[nPos], nPos365   )   //01 - REG
aAdd(aRegD370[nPos], "D370"    )   //01 - REG
aAdd(aRegD370[nPos], '5201108' )   //02 - COD_MUN
aAdd(aRegD370[nPos], 501.28    )   //03 - VLR PREST SERV
aAdd(aRegD370[nPos], '1'       )   //04 - QTD_BILH
aAdd(aRegD370[nPos], 501.28    )   //05 - VLR BASE ICMS
aAdd(aRegD370[nPos], 85.27     )   //06 - VLR ICMS
 
//REGISTRO D390: REGISTRO ANALÍTICO DO MOVIMENTO DIÁRIO (CÓDIGOS 13, 14,15, 16 E 2E).
 
aAdd(aRegD390, {})
nPos :=1
aAdd(aRegD390[nPos], nPos355   )
aAdd(aRegD390[nPos], "D390"    )           //01 - REG
aAdd(aRegD390[nPos], '000'     )           //02 - CST_ITEM
aAdd(aRegD390[nPos], '5357'    )           //03 - CFOP
aAdd(aRegD390[nPos], '17,00'   )           //04 - ALIQ_ICMS
aAdd(aRegD390[nPos], 501.28    )           //05 - VL_OPR
aAdd(aRegD390[nPos], 0         )           //06 - VL_BC_ISSQN
aAdd(aRegD390[nPos], 0         )           //07 - ALIQ_ISSQN
aAdd(aRegD390[nPos], 0         )           //08 - VL_ISSQN
aAdd(aRegD390[nPos], 501.28    )           //09 - VL_BC_ICMS
aAdd(aRegD390[nPos], 85.27     )           //10 - VL_ICMS
aAdd(aRegD390[nPos], ""        )           //11 - COD_OBS
 
//>>>>> segundo dia <<<<<
 
//Preenchimento do registro 355
aAdd(aRegD355, {})
nPos := 2
aAdd(aRegD355[nPos], nPos350       )       //01 - REG
aAdd(aRegD355[nPos], "D355"        )       //01 - REG
aAdd(aRegD355[nPos], '02102010'    )       //02 - DT_DOC
aAdd(aRegD355[nPos], '002'         )       //03 - CRO
aAdd(aRegD355[nPos], '00304'       )       //04 - CRZ
aAdd(aRegD355[nPos], '008888'      )       //05 - NUM_COO_FIN
aAdd(aRegD355[nPos], 0             )       //06 - GT_FIN
aAdd(aRegD355[nPos], 120.00        )       //07 - VL_BRT
 
nPos355:= nPos
 
aAdd(aRegD365, {})
nPos := Len (aRegD365)
aAdd(aRegD365[nPos], nPos355   )   //01 - REG
aAdd(aRegD365[nPos], "D365"    )   //01 - REG
aAdd(aRegD365[nPos], 'I1'      )   //02 - COD_TOT_PAR
aAdd(aRegD365[nPos], 20.00     )   //03 - VLR_ACUM_TOT
aAdd(aRegD365[nPos], '00'      )   //04 - NR_TOT
aAdd(aRegD365[nPos], ""        )   //05 - DESCR_NR_TOT
 
nPos365:= nPos
 
//REGISTRO D370: COMPLEMENTO DOS DOCUMENTOS INFORMADOS (CÓDIGOS 13,14, 15 e 16 e 2E)
aAdd(aRegD370, {})
nPos    :=  Len (aRegD370)
aAdd(aRegD370[nPos], nPos365   )   //01 - REG
aAdd(aRegD370[nPos], "D370"    )   //01 - REG
aAdd(aRegD370[nPos], '5201108' )   //02 - COD_MUN
aAdd(aRegD370[nPos], 20.00     )   //03 - VLR PREST SERV
aAdd(aRegD370[nPos], '1'       )   //04 - QTD_BILH
aAdd(aRegD370[nPos], 0         )   //05 - VLR BASE ICMS
aAdd(aRegD370[nPos], 0         )   //06 - VLR ICMS 
 
//Preenchimento do registro 365
aAdd(aRegD365, {})
nPos := Len (aRegD365)
aAdd(aRegD365[nPos], nPos355   )   //01 - REG
aAdd(aRegD365[nPos], "D365"    )   //01 - REG
aAdd(aRegD365[nPos], 'T1700'   )   //02 - COD_TOT_PAR
aAdd(aRegD365[nPos], 100.00    )   //03 - VLR_ACUM_TOT
aAdd(aRegD365[nPos], '00'      )   //04 - NR_TOT
aAdd(aRegD365[nPos], ""        )   //05 - DESCR_NR_TOT
 
nPos365:= nPos                           
 
//REGISTRO D370: COMPLEMENTO DOS DOCUMENTOS INFORMADOS (CÓDIGOS 13,14, 15 e 16 e 2E)
aAdd(aRegD370, {})
nPos    :=  Len (aRegD370)
aAdd(aRegD370[nPos], nPos365   )   //01 - REG
aAdd(aRegD370[nPos], "D370"    )   //01 - REG
aAdd(aRegD370[nPos], '5201108' )   //02 - COD_MUN
aAdd(aRegD370[nPos], 100.00    )   //03 - VLR PREST SERV
aAdd(aRegD370[nPos], '1'       )   //04 - QTD_BILH
aAdd(aRegD370[nPos], 100.00    )   //05 - VLR BASE ICMS
aAdd(aRegD370[nPos], 17.00     )   //06 - VLR ICMS
 
//REGISTRO D390: REGISTRO ANALÍTICO DO MOVIMENTO DIÁRIO (CÓDIGOS 13, 14,15, 16 E 2E).
aAdd(aRegD390, {})
nPos := Len (aRegD390)
aAdd(aRegD390[nPos], nPos355   )
aAdd(aRegD390[nPos], "D390"    )           //01 - REG
aAdd(aRegD390[nPos], '000'     )           //02 - CST_ITEM
aAdd(aRegD390[nPos], '8888'    )           //03 - CFOP
aAdd(aRegD390[nPos], '17,00'   )           //04 - ALIQ_ICMS
aAdd(aRegD390[nPos], 100.00    )           //05 - VL_OPR
aAdd(aRegD390[nPos], 0         )           //06 - VL_BC_ISSQN
aAdd(aRegD390[nPos], 0         )           //07 - ALIQ_ISSQN
aAdd(aRegD390[nPos], 0         )           //08 - VL_ISSQN
aAdd(aRegD390[nPos], 100.00    )           //09 - VL_BC_ICMS
aAdd(aRegD390[nPos], 17.00     )           //10 - VL_ICMS
aAdd(aRegD390[nPos], ""        )           //11 - COD_OBS
 
//Gravação dos registros na tabela temporária.
SPEDRegs(cAlias,{aRegD350,aRegD355,aRegD360,{aRegD365,2},{aRegD390,2},{aRegD370,4}})
 
Return 

// Documentação da Function SPEDRegs

/*
Observação: Suponhamos o cabecalho e os itens do documento fiscal, onde o cabecalho é o pai e os itens são os filhos, portanto tenho   
varios itens para um pai. Para que esta função interprete este caso, a primeira posição do registro filho indica a posição do registro pai,    
ou seja, leio a primeira posição do array pai e procuro todos os registros itens que possuem na primeira posição a posição lida do registro   pai.
*/

/* Function SPEDRegs(cAlias,aRegs)

Parâmetros:		cAlias    -> Alias do TRB em processamento para gravar as informacoes
aRegs     -> Array com as informacoes dos registros a serem gravados

Observação: 

1) Os array a serem passados devem seguir a ordem hierarquica de gravação
2) Para os registros que estiverem na sequencia mais nao corresponderem a hierarquia informada, deve ser passado no seguinte formato,Ex: (aReg,2}							
a) O primeiro nivel corresponde ao registro; 							
b) O segundo corresponde ao pai deste registro que nao é o antecessor 

Documentacao da tabela temporaria			
TRB_TPREG",	"C", 	004,		0	//Tipo do Registro	TRB_RELAC",	"C", 	015,		0
//Codigo de relacionamento entre um registro e outro. 
Ex: Para cada C320 tenho um C321, portanto para estes dois registros este codigo deve ser igual e unico.	TRB_FLAG",	"C", 	001,		0	
//Campo utilizado internamente pelo SPED Fiscal, deve ser deixado em branco	TRB_CONT",	"C", 	999,		0	
//Campo com a linha de todo o registro.	TRB_ITEM",	"N", 	005,		0	
//Nao utilizado	Indice desta tabela temporaria	"TRB_TPREG+TRB_RELAC+StrZero (TRB_ITEM, 5, 0)"
*/


O exemplo acima resultará na seguinte saída para o Bloco D:

05. DEMAIS INFORMAÇÕES

Sem mais informações.