Á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
linenumberstrue
#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 aAreaSM0	:=	SM0->(GetArea ())
Local nPos		nPos      :=  0
Local nPos350   :=  0
Local nPos355 cAliasSFT	  :=	"SFT"  0
Local nPos350	nPos365   :=	  0

Local aRegD350	  :=	  {}
Local nPos355	aRegD355  :=	0
Local aRegD355	:=	  {}
Local aRegD360 aRegD365	 :=	  {}
Local nPos365aRegD365   :=	0  {}//
Local aRegD370  :=	  {}
Local aRegD390  :=	{}
Local aRegD360  :=	{}
 
// 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"					)	 	, "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		) 	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'	  	)	 	 '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	  		)	 	], 0         )           	//06 - VL_BC_ISSQN
aAdd (aRegD390[nPos], 0	         		)	 	)           	//07 - ALIQ_ISSQN
aAdd (aRegD390[nPos], 0			)			         )           //08 - VL_ISSQN
aAdd (aRegD390[nPos], 501.28	)	 	, 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'		) 	 '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'	  	)	 	, '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	  		)	 	], 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}})
 
returnReturn 

// 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:

Image Added

05. DEMAIS INFORMAÇÕES

Sem mais informações.

...