Histórico da Página
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:
Aviso | ||
---|---|---|
| ||
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
...
Outras Ações / Ações relacionadas
...
04. EXEMPLO DE UTILIZAÇÃO
Principais Campos e Parâmetros
Parâmetros do ponto de entrada:
Nome | Tipo | Descrição |
---|---|---|
PARAMIXB[1] | Array of Record | cAlias = Alias |
PARAMIXB[2] | Array of Record | aFiliais = Contendo todas as Filiais selecionadas e não selecionadas da geração do arquivo |
Retorno:
Nome | Tipo | Descrição |
---|---|---|
NIl | Nulo | O retorno deve retornar valor Nulo. |
04. EXEMPLO DE UTILIZAÇÃO
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#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.