Árvore de páginas

Versões comparadas

Chave

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

...

Parâmetros do ponto de entrada:

Nome

Tipo

Descrição

ParamIXB[1]NuméricoPosição do registro de gravação
ParamIXB[2]StringString do registro que será gravado
ParamIXB[3]StringAlias do SFT de processamento
ParamIXB[4]ArrayArray de campos da SFT previamente carregados
Aviso
titleImportante

É importante lembrar que este ponto de entrada permite apenas a manipulação do alias do livro fiscal por item (SFT). Desse modo, não é possível ou recomendado enviar dados de movimentos diferentes daqueles presentes no alias.

...

Aviso
titleImportante

É importante se atentar para validações pertinentes a cada registro do bloco, conforme exigências do GUIA PRÁTICO DA ESCRITURAÇÃO FISCAL DIGITAL – EFD-ICMS/IPI. Por exemplo, o registro D100 para o modelo de documento 63 deve apresentar o campo 04 - COD_PART em branco. O ponto de entrada é o meio adequado para atender a esta exigência (vide abaixo, na seção 4, exemplo de tratamento desta exigência com o PE SPEDRTMS).

...

Bloco de código
languagejava
themeRDark
titleSPEDRTMS
linenumberstrue
#INCLUDE "PROTHEUS.CH"

User Function SPEDRTMS()
  
    
	Local vLinha     := {}
	//    Local nPos       := ParamIXB[1]
    	Local cReg       := ParamIXB[2]
   	// Local cAlias     := ParamIXB[3]
    	Local aCmpAntSFT := ParamIXB[4]
    	Local aRet       := {}
    	Local vValServ   := "0"
    	Local vValDoc    := "0"
    	Local vValICMS   := "0"
	Local vValBSICM   Local vValBSICM  := "0"
    	Local cCod_Part  := ""
    	Local cCodMunOri := ""
    	Local cCodMunDes := ""
    	Local cInd_Oper  := ""
    	Local cInd_Emit  := ""
	Local cModelo   Local cModelo := AModNot(aCmpAntSFT[42])
    
	//Campos contidos no array aCmpAntSFT:
    	//01 - Doc. Fiscal
    	//02 - Serie NF
    	//03 - Cliente/Fornecedor
    	//04 - Código Loja
    	//05 - Data Docto
    	//06 - Data Emissão
    	//07 - Data Cancelamento
    	//08 - Formulário Próprio
    	//09 - CFOP
    	//10 -
    	//11 - Alíq. ICMS
    	//12 - Nro. PDV
    	//13 - Base  ICMS
    	//14 - Alíq. ICMS
    	//15 - Valor ICMS
    	//16 - Valor Isento ICMS
    	//17 - Outros ICMS
    //18 	//18 - ICMS Retido ST
    	//19 - Conta Contábil
    	//20 - Tipo Lançamento
    	//21 - Tipo Frete
    	//22 - Filial
    	//23 - Estado
    	//24 - Observação
    	//25 - Chave NFE
    	//26 - Tipo Emissão
    	//27 - Prefixo
    	//28 - Duplicata
    	//29 - Cupom Fiscal
    	//30 - Transportadora
    	//31 - Peso Bruto
    	//32 - Peso Liquido
    	//33 - Veiculo1
    	//34 - Veiculo2
    	//35 - Veiculo3
    	//36 - Optante Simples Nacional
    	//37 - Regime Paraíba
    	//38 - Nota Fiscal Original
    	//39 - Serie da Nota fiscal original
    	//40 - Flag de tipo de CTE na entrada
    	//41 - Data de Recebimento para Lançamento extemporâneo de documento fiscal.
    	//42 - Espécie do Documento
    	//43 - Tipo Mov.
    	//44 - Mensagem da Nota Fiscal
    	//45 - Produto
    	//46 - Item
    	//47 - Formula
    	//48 - Código da TES
    	//49 - UF de Origem do Transporte
    	//50 - Município de Origem do Transporte
    	//51 - UF de Destino do Transporte
    	//52 - Município de Destino do Transporte
    	//53 - Sub Série da nota fiscal de entrada
    	//54 - UF de Origem do Transporte
    	//55 - Município de Origem do Transporte
    	//56 - UF de Destino do Transporte
    //57 	//57 - Município de Destino do Transporte
    	//58 - Município de Destino Complemento
    	//59 - Chave de Acesso SEFAZ/CTe
    	//60 - Documento de Transporte
    	//61 - Tipo Frete
    	//62 - Quantidade de registros encontrados na GZH
    	//63 - Código do Produto na SB1
    	//64 - Conta Contábil do Produto na SB1
  
    
	If aCmpAntSFT[43] == "S"
          
        DbSelectArea(
		DbSelectArea("SA1")
        		SA1->(DBSetOrder(1))
        		SA1->(DBSeek(XFilial("SA1") + aCmpAntSFT[3] + aCmpAntSFT[4]))
  
        
		cCod_Part   := "SA1"
        		cCodMunOri  := SM0->M0_CODMUN
        		cCodMunDes  := UfCodIBGE(SA1->A1_EST) + AllTrim(SA1->A1_COD_MUN)
  
        DbSelectArea(
		DbSelectArea("SF2")
        		SF2->(DBSetOrder(1))
        		SF2->(DBSeek(XFilial("SF2") + aCmpAntSFT[1] + aCmpAntSFT[2] + aCmpAntSFT[3] + aCmpAntSFT[4]))
          
        
		cCod_Part += SF2->(F2_FILIAL+F2_CLIENTE+F2_LOJA)
    	Else
        		DbSelectArea("SA2")
        SA2		SA2->(DBSetOrder(1))
        		SA2->(DBSeek(XFilial("SA2") + aCmpAntSFT[3] + aCmpAntSFT[4]))
  
        
		cCod_Part   := "SA2"
        		cCodMunOri  := UfCodIBGE(SA2->A2_EST) + AllTrim(SA2->A2_COD_MUN)
        		cCodMunDes  := SM0->M0_CODMUN
 
        
		DbSelectArea("SF1")
        SF1-		SF1->(DBSetOrder(1))
        		SF1->(DBSeek(XFilial("SF1") + aCmpAntSFT[1] + aCmpAntSFT[2] + aCmpAntSFT[3] + aCmpAntSFT[4]))
  
        
		cCod_Part += SF1->(F1_FILIAL+F1_FORNECE+F1_LOJA)
    	EndIf
  
    
	If cReg == "D140D100"

		If  aCmpAntSFT[43] == "S"

			cInd_Oper := "1"
			cInd_Emit    
        AAdd(vLinha,    "D140")         // 01 - REG
        AAdd(vLinha,    cCod_Part )     // 02 - COD_PART_CONSG
        AAdd(vLinha,    cCodMunOri)     // 03 - COD_MUN_ORIG
        AAdd(vLinha,    cCodMunDes)     // 04 - COD_MUN_DEST
        := "0"

			vValServ  := LTrim(Transform(F2_VALMERC + F2_FRETE + F2_VALICM, "@E 99999999.99"))
			vValDoc   := LTrim(Transform(F2_VALBRUT, "@E 99999999.99"))
			vValICMS  := LTrim(Transform(F2_VALICM , "@E 99999999.99"))

		Else

			cInd_Oper := "0"
			cInd_Emit := "1"

			vValServ := LTrim(Transform(F1_VALMERC + F1_FRETE + F1_VALICM, "@E 99999999.99"))
			vValDoc  := LTrim(Transform(F1_VALBRUT, "@E 99999999.99"))
			vValICMS := LTrim(Transform(F1_VALICM , "@E 99999999.99"))

		EndIf

		DbSelectArea("SF3")
		SF3->(DBSetOrder(1))
		SF3->(DBSeek(XFilial("SF3") + DtoS(aCmpAntSFT[6]) + aCmpAntSFT[1] + aCmpAntSFT[2] + aCmpAntSFT[3] + aCmpAntSFT[4]))

		vValBSICM := LTrim(Transform(F3_VALCONT, "@E 99999999.99"))

		AAdd(vLinha,    "1D100")            // 05 - IND_VEIC
  01 REG
		AAdd(vLinha,    cInd_Oper)      AAdd//02 IND_OPER
		AAdd(vLinha,    "")   cInd_Emit)          //03 06 - VEIC_ID
        IND_EMIT
		AAdd(vLinha,    IIf(cModelo$"063"),      "", cCod_Part))      //04 07 - IND_NAV
COD_PART
		AAdd(vLinha,    AModNot(aCmpAntSFT[42]))    //05 COD_MOD
		AAdd(vLinha,    "00")             // 08 - VIAGEM
06 COD_SIT
		AAdd(vLinha,    aCmpAntSFT[2])    //07 SER
		AAdd(vLinha,    "")  LTrim(Transform(SF2->F2_VALMERC, "@E 99999999.99"))) // 09 - VL_FRT_LIQ
       //08 SUB
		AAdd(vLinha,    ""aCmpAntSFT[1])  //09 NUM_DOC
		AAdd(vLinha,         aCmpAntSFT[25]) // 10 - VL_DESP_PORT
CHV_CTE
		AAdd(vLinha,    aCmpAntSFT[5])  //11 DT_DOC
		AAdd(vLinha,    aCmpAntSFT[5])    //12 DT_A_P
		AAdd(vLinha,    "0")             // 11 - VL_DESP_CAR_DESC
13 TP_CTe
		AAdd(vLinha,    "")             //14 CHV_CTe_REF
		AAdd(vLinha,    ""vValDoc)        //15 VL_DOC
		AAdd(vLinha,    //0) 12 - VL_OUT
        AAdd(vLinha,    LTrim(Transform(SF2->F2_VALBRUT, "@E 99999999.99")//16 VL_DESC
		AAdd(vLinha,    IIf(cModelo$"63", "", aCmpAntSFT[21])) //17 13 - VLIND_FRT_BRT

		AAdd(vLinha,    vValServ)       //18 VL_SERV
		AAdd(vLinha,     LTrim(Transform(0.00, "@E 99999999.99")))vValBSICM)      //19 14 - VL_FRTBC_MM
ICMS
		AAdd(vLinha,        AAdd(aRet, vLinha)
vValICMS)  
   ElseIf cReg == "D120"
//20 VL_ICMS
		AAdd(vLinha,    0)      
        //21 VL_NT
		AAdd(vLinha,    "D120")             // 01 - REG
22 COD_INF
		AAdd(vLinha,    "")             //23 COD_CTA
		AAdd(vLinha,    cCodMunOri)     //24 02 - COD_MUN_ORIG
        		AAdd(vLinha,    cCodMunDes)     //25 03 - CODCOD_MUN_DEST
		AAdd(aRet, vLinha)

	ElseIf cReg      == "D120"

		AAdd(vLinha,    "D120")             // 0401 - VEIC_ID
        REG
		AAdd(vLinha,    "")        cCodMunOri)     // 0502 - UFCOD_ID
        AAdd(aRet, vLinha)
  
 MUN_ORIG
		AAdd(vLinha,    cCodMunDes)   ElseIf cReg == "D100"
  
// 03 - COD_MUN_DEST
		AAdd(vLinha,    "")    If  aCmpAntSFT[43] == "S"
 
     // 04 - VEIC_ID
		AAdd(vLinha,    cInd_Oper := "1"
"")             // 05 - cInd_Emit :UF_ID
		AAdd(aRet, vLinha)

	ElseIf cReg == "0D130"
 

		aAdd(vLinha,	"D130")	    // 01       vValServ  := LTrim(Transform(F2_VALMERC + F2_FRETE + F2_VALICM, "@E 99999999.99"))
            vValDoc   := LTrim(Transform(F2_VALBRUT, "@E 99999999.99"))
            vValICMS  := LTrim(Transform(F2_VALICM , "@E 99999999.99"))
  
- REG
		aAdd(vLinha,	cCod_Part )	// 02 - COD_PART_CONSG
		aAdd(vLinha,	cCod_Part )	// 03 - COD_PART_RED
		aAdd(vLinha,	"0")		// 04 - IND_FRT_RED
		aAdd(vLinha,	cCodMunOri)	// 05 - COD_MUN_ORIG
		aAdd(vLinha,	cCodMunDes)	// 06 - COD_MUN_DEST
		aAdd(vLinha,	"")	        // 07 Else
              
            cInd_Oper := "0"
            cInd_Emit := "1"
 
- VEIC_ID
		aAdd(vLinha,	LTrim(Transform(SF2->F2_VALMERC, "@E 99999999.99")))			// 08 - VL_LIQ_FRT
		aAdd(vLinha,	0)			// 09 - VL_SEC_CAT
		aAdd(vLinha,	0)			// 10 - VL_DESP
		aAdd(vLinha,	0)			// 11 - VL_PEDG
		aAdd(vLinha,	0)			// 12 - VL_OUT
		aAdd(vLinha,	LTrim(Transform(SF2->F2_VALBRUT, "@E 99999999.99")))			// 13 - VL_FRT
		aAdd(vLinha,	"")         // 14 -  vValServ := LTrim(Transform(F1_VALMERC + F1_FRETE + F1_VALICM, "@E 99999999.99"))
UF_ID
		AAdd(aRet, vLinha)

	ElseIf cReg == "D140"

		AAdd(vLinha,    "D140")         // 01  vValDoc- REG
		AAdd(vLinha,  := LTrim(Transform(F1_VALBRUT, "@E 99999999.99"))
  cCod_Part )     // 02      vValICMS := LTrim(Transform(F1_VALICM , "@E 99999999.99"))
  
- COD_PART_CONSG
		AAdd(vLinha,    cCodMunOri)     // 03 - EndIf
  
COD_MUN_ORIG
		AAdd(vLinha,    cCodMunDes)     // 04  DbSelectArea("SF3")
- COD_MUN_DEST
		AAdd(vLinha,    "1")        SF3->(DBSetOrder(1))
    // 05   SF3->(DBSeek(XFilial("SF3") + DtoS(aCmpAntSFT[6]) + aCmpAntSFT[1] + aCmpAntSFT[2] + aCmpAntSFT[3] + aCmpAntSFT[4]))
  
  - IND_VEIC
		AAdd(vLinha,    "")             // 06 - VEIC_ID
		AAdd(vLinha,    "0")      vValBSICM := LTrim(Transform(F3_VALCONT, "@E 99999999.99"))
  
// 07       - IND_NAV
		AAdd(vLinha,    "D100")         //01 REG
   // 08    - VIAGEM
		AAdd(vLinha,    cInd_Oper)      //02 IND_OPER
        LTrim(Transform(SF2->F2_VALMERC, "@E 99999999.99"))) // 09 - VL_FRT_LIQ
		AAdd(vLinha,    cInd_Emit"")       //03 IND_EMIT
     // 10 - VL_DESP_PORT
		AAdd(vLinha,    IIf(cModelo$"63",)  "", cModelo))      //04 COD_PART
   // 11    AAdd(vLinha,    AModNot(aCmpAntSFT[42])) //05 COD_MOD
        - VL_DESP_CAR_DESC
		AAdd(vLinha,    "00")             //06 COD_SIT
 12 - VL_OUT
		AAdd(vLinha,        AAdd(vLinha,    aCmpAntSFT[2])  //07 SER
        LTrim(Transform(SF2->F2_VALBRUT, "@E 99999999.99"))) // 13 - VL_FRT_BRT
		AAdd(vLinha,    LTrim(Transform(0.00, "@E 99999999.99"))) // 14           //08 SUB
        AAdd(vLinha,    aCmpAntSFT[1])  //09 NUM_DOC
        AAdd(vLinha,    aCmpAntSFT[25]) //10 CHV_CTE
        AAdd(vLinha,    aCmpAntSFT[5])  //11 DT_DOC
        AAdd(vLinha,    aCmpAntSFT[5])  //12 DT_A_P
        AAdd(vLinha,    0)              //13 TP_CTe
        AAdd(vLinha,    "")             //14 CHV_CTe_REF
        AAdd(vLinha,    vValDoc)        //15 VL_DOC
        AAdd(vLinha,    0)              //16 VL_DESC
        AAdd(vLinha,    IIf(cModelo$"63", "", aCmpAntSFT[21])) //17 IND_FRT
        AAdd(vLinha,    vValServ)       //18 VL_SERV
        AAdd(vLinha,    vValBSICM)      //19 VL_BC_ICMS
        AAdd(vLinha,    vValICMS)       //20 VL_ICMS
        AAdd(vLinha,    0)              //21 VL_NT
        AAdd(vLinha,    "")             //22 COD_INF
        AAdd(vLinha,    "")             //23 COD_CTA
        AAdd(vLinha,    cCodMunOri)     //24 COD_MUN_ORIG
        AAdd(vLinha,    cCodMunDes)     //25 COD_MUN_DEST
        AAdd(aRet, vLinha)
      
    EndIf
  
Return(aRet)

05. INFORMAÇÕES ADICIONAIS

...

- VL_FRT_MM
		AAdd(aRet, vLinha)

	EndIf

Return aRet


05. INFORMAÇÕES ADICIONAIS

       O retorno do ponto de entrada deverá ser obrigatoriamente um array.



Aviso
titleImportante

Ao utilizar este ponto de entrada, é altamente recomendado que toda a estrutura do D100 e filhos sejam gerados a partir dele. Este ponto de entrada uma vez ativado, é chamado em cada ponto dos registros D100, D110, D120, D130, D140, D150, D160, D161, D162 e D190. A utilização de forma parcial poderá acarretar em erros imprevistos.