Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Bloco de código
languagejava
themeMidnight
titleSPEDREGD
#include "rwmake.ch"
#include "Topconn.ch"
#INCLUDE#include "PROTHEUSprotheus.CHch"

User Function SPEDREGD()
Local cAlias	:=	PARAMIXB[1]
Local aFiliais  :=  PARAMIXB[2] // Contem todas as filiais do arquivo
Local aAreaSM0	:=	SM0->(GetArea ())
Local nPos		:=  0
Local cAliasSFT	:=	"SFT"
Local nPos350	:=	0
Local aRegD350	:=	{}
Local nPos355	:=	0
Local aRegD355	:=	{}
Local aRegD365	:=	{}
Local nPos365   :=	0
Local aRegD370  :=	{}
Local aRegD390  :=	{}
Local aRegD360  :=	{}

// REGISTRO D350 EQUIPAMENTO ECF (CÓDIGOS 2E, 13, 14, 15 e 16)
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 
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)"
*/

...