Árvore de páginas

01. DADOS GERAIS

Linha do ProdutoMicrosiga Protheus®
SegmentoServiços
MóduloFiscal

02. DESCRIÇÃO

Ponto de Entrada para tratamento do Registro Tipo 70 - Conhecimento de Transporte, para ser gerado em conjunto com o ponto de entrada MTATIP71 (Ponto de Entrada para tratamento do Registro Tipo 71 - Complemento Conhecimento de Transporte), para não haver divergências entre as informações.

03. ESPECIFICAÇÃO

Parâmetros do ponto de entrada

NomeTipoDescrição
PARAMIXBArray of Record

Array com as informações da SF3 - Livros Fiscais:

[1] - Informações da SF3

[1][1] - F3_NFISCAL    
[1][2] - F3_SERIE    
[1][3] - F3_CLIEFOR    
[1][4] - F3_LOJA    
[1][5] - F3_CFO        
[1][6] - F3_TIPO    
[1][7] - F3_ESPECIE    
[1][8] - F3_ALIQICM    
[1][9] - F3_PDV        
[1][10] - F3_ENTRADA
[1][11] - F3_ICMSRET
[1][12] - F3_ISENICM
[1][13] - F3_DTCANC    
[1][14] - F3_CODISS    
[1][15] - F3_OUTRICM
[1][16] - F3_VALICM    
[1][17] - F3_VALCONT
[1][18] - F3_EMISSAO
[1][19] - F3_BASEICM
[1][20] - F3_OBSERV    
[1][21] - F3_FORMUL    
[1][22] - F3_ESTADO    
[1][23] - F3_DESPESA
[1][24] - F3_FORMULA
[1][25] - F3_VALIPI    
[1][26] - F3_ISENIPI
[1][27] - F3_OUTRIPI
[1][28] - F3_BASEIPI
[1][29] - F3_BASERET
[1][30] - F3_IPIOBS    
[1][31] - F3_NRLIVRO
[1][32] - F3_FILIAL    
[1][33] - F3_CREDST 
[1][34] - F3_ANTICMS
[1][35] - F3_ICMSCOM
[1][36] - F3_ICMSDIF
[1][37] - F3_OBSSOL
[1][38] - F3_OBSICM
[1][39] - SintSitDoc((cAliasSF3)->F3_CODRSEF,(cAliasSF3)->F3_DTCANC,(cAliasSF3)→F3_NFISCAL,(cAliasSF3)→F3_SERIE,(cAliasSF3)→F3_CLIEFOR,(cAliasSF3)→F3_LOJA) // Situação do documento
[1][40] - (cAliasSF3)->F3_VALANTI
[1][41] - Iif( lSintMg , (cAliasSF3)->F3_NFEMP, "") // Implementacao do Sintegra MG - Registro 88A - Nota de Empenho
[1][42] - SerieNfId(cAliasSF3,2,"F3_SERIE") // Série Anterior ao projeto Chave unica
[1][43] - F3_CREDST
[1][44] - F3_CHVNFE

Retorno:

Nome

Tipo

Descrição


NilRetorno Nulo

04. EXEMPLO DE UTILIZAÇÃO

MTATIP70
#Include 'Protheus.ch'

User Function MtaTip70
	Local aArray70   := PARAMIXB[1]
	Local cCfopPR    := GetNewPar('MV_CFOPPR','')
	Local cTranspCGC := ''
	Local cTranspIns := ''
	Local cTranspEst := ''
	Local cTranspOri := ''
	Local cTpFrete   := ''

	If AModNot(aArray70[1][7])<>'01' .Or.;
			(AModNot(aArray70[1][7])=='01' .And. Alltrim(aArray70[1][5])$cCfopPR)

		//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
		//³ Verifica o cliente/fornecedor                                          ³
		//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

		If (SubStr(aArray70[1][5],1,1)>='5' .And. aArray70[1][6]$'BD') .Or.;
			(SubStr(aArray70[1][5],1,1)<'5' .And. !aArray70[1][6]$'BD')   //Verificando CFOP # TIPO

			dbSelectArea('SA2')
			dbSetOrder(1)
			SA2->(MsSeek(xFilial('SA2')+aArray70[1][3]+aArray70[1][4]))     //F3_CLIEFOR
			cTranspCGC := AFISFILL (Num2Chr (Val (SA2->A2_CGC), 14, 0), 14) //F3_LOJA
			cTranspIns := ARETDIG(SA2->A2_INSCR,.T.,aArray70[1][22])        //F3_ESTADO
			cTranspEst := SA2->A2_EST
			cTranspOri := SA2->A2_CGC
		Else
			dbSelectArea('SA1')
			dbSetOrder(1)
			SA1->(MsSeek(xFilial('SA1')+aArray70[1][3]+aArray70[1][4]))     //F3_CLIEFOR
			cTranspCGC := AFISFILL (Num2Chr (Val (SA1->A1_CGC), 14, 0), 14) //F3_LOJA
			cTranspIns := ARETDIG(SA1->A1_INSCR,.T.,aArray70[1][22])        //F3_ESTADO
			cTranspEst := SA1->A1_EST
			cTranspOri := SA1->A1_CGC
		EndIf

		//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
		//³Checando se frete CIF ou FOB         ³
		//³- com valor de frete na NF = 1 - CIF ³
		//³- sem valor de frete na NF = 2 - FOB ³
		//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
		cTpFrete := '1'
		If substr(aArray70[1][5],1,1)<'5' //F3_CFO
			SF1->( dbSetOrder(1) )
			SF1->( MsSeek(xFilial('SF1')+aArray70[1][1]+aArray70[1][2]+aArray70[1][3]+aArray70[1][4]))
			If SF1->F1_FRETE = 0
				cTpFrete := '1'
			Endif
			If SF1->F1_FRETE = 0 .And. SF1->F1_ORIGLAN=='F ' .And. SF1->F1_TIPO=='C' //NF Conhecimento Frete
				cTpFrete := '2'
			Endif
		Else
			SF2->( dbSetOrder(1) )
			SF2->( MsSeek(xFilial('SF2')+aArray70[1][1]+aArray70[1][2]+aArray70[1][3]+aArray70[1][4]))
			If SF2->F2_FRETE = 0
				cTpFrete := '1'
			Endif
		Endif

		RecLock('R70',.T.)
		R70->A70_CNPJ   := cTranspCGC
		R70->A70_IE     := cTranspIns
		R70->A70_EMISS  := aArray70[1][10]
		R70->A70_UF     := cTranspEst
		R70->A70_MODELO := AModNot(aArray70[1][7])
		R70->A70_SERIE  := Substr(aArray70[1][2],1,1)
		R70->A70_SUBSER := Substr(aArray70[1][2],2,2)
		R70->A70_NFISC  := aArray70[1][1]
		R70->A70_CFOP   := aArray70[1][5]
		R70->A70_CIFFOB := cTpFrete
		R70->A70_SITUAC := Iif(('CANCELAD'$aArray70[1][20] .Or. !Empty(aArray70[1][13])),'S','N')
		R70->A70_CNORI  := cTranspOri
		R70->A70_CFOMOV := aArray70[1][5]
		R70->A70_VALTOT += aArray70[1][17]
		R70->A70_BSICM  += aArray70[1][19]
		R70->A70_VALICM += aArray70[1][16]
		R70->A70_ISENTA += aArray70[1][12]
		R70->A70_OUTRAS += aArray70[1][15]
		MsUnlock()
        
	Endif

Return


05. DEMAIS INFORMAÇÕES

  • Não há.