Árvore de páginas


01. Visão Geral

Esta rotina foi construída nos mesmo moldes do MATA103. Portanto todas as observações também valem para este item também.

Podemos consultar o exemplo MA920AUT.PRW.

02. Exemplo de Utilização

Para utilização desta rotina, necessitamos somente dos arrays de capa e item, conforme descrito anteriormente.

Porém vale uma observação importante para eles sobre os valores dos impostos.

A rotina possui duas formas de tratamento dos valores de impostos.

0201. Automática,

A forma mais aconselhada pela Totvs para a maioria dos casos

Para utilizar os cálculos automatizados de impostos do sistema, basta NÃO utilizar NENHUMA referência de impostos nos arrays (capa e itens) criados na rotina; além também de informar, no último nível do array do item, na última posição, o respectivo TES da operação.


MA920AUT - Impostos automáticos
#INCLUDE "TBICONN.CH"

USER Function MA920AUT()

Local aCabec := {}
Local aItens := {}
Local aLinha := {}
Local cDoc   := "000058"

PRIVATE lMsErroAuto := .F.

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Abertura do ambiente                                         |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "XIFIS26" MODULO "FIS" TABLES "SF2","SD2","SA1","SA2","SB1","SB2","SF4","SED","SE1"	

//Montagem da capa do documento fiscal		
aadd(aCabec,{"F2_TIPO"   ,"N"})	
aadd(aCabec,{"F2_FORMUL" ,"S"})	
aadd(aCabec,{"F2_DOC"    ,cDoc})	
aadd(aCabec,{"F2_SERIE"  ,"AUT"})	
aadd(aCabec,{"F2_EMISSAO",dDataBase})	
aadd(aCabec,{"F2_CLIENTE","SP0001"})	
aadd(aCabec,{"F2_LOJA"   ,"01"})	
aadd(aCabec,{"F2_ESPECIE","NF"})	
aadd(aCabec,{"F2_COND","001"})	
aadd(aCabec,{"F2_DESCONT",0})	
aadd(aCabec,{"F2_FRETE",0})	
aadd(aCabec,{"F2_SEGURO",0})	
aadd(aCabec,{"F2_DESPESA",0})		

//Montagem dos itens do documento fiscal	
aLinha := {}			
aadd(aLinha,{"D2_COD"  ,"PA0000000000000000000000000001",Nil})	
aadd(aLinha,{"D2_QUANT",1,Nil})	
aadd(aLinha,{"D2_PRCVEN",100,Nil})	
aadd(aLinha,{"D2_TOTAL",100,Nil})
aadd(aLinha,{"D2_TES","515",Nil})		

aadd(aItens,aLinha)	

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿	
//| Teste de Inclusao                                            |	
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ	

MSExecAuto ({|x,y| MATA920(aCabec,aItens)}, aCabec, aItens, 3)	

If !lMsErroAuto		
	ConOut("Incluido com sucesso! "+cDoc)		
Else		
	ConOut("Erro na inclusao!")	
EndIf	

ConOut("Fim  : "+Time())

RESET ENVIRONMENT

Return .T.


0202. Manual

Esta forma é muito utilizada nas integrações com outros sistemas onde os cálculos dos tributos já foram efetuados na origem, e na importação para o Protheus eles não devem ser recalculados e alterados. Para que esses valores sejam respeitados na importação, basta fazer o procedimento contrário ao item comentado anteriormente Automático, ou seja, informar as referência dos impostos e enviar, na primeira posição do array do item a referência do TES do respectivo item.


MA920AUT - Impostos Manuais
#INCLUDE "TBICONN.CH"

USER Function MA920AUT()

Local aCabec := {}
Local aItens := {}
Local aLinha := {}
Local cDoc   := "000059"

PRIVATE lMsErroAuto := .F.

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Abertura do ambiente                                         |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "XIFIS26" MODULO "FIS" TABLES "SF2","SD2","SA1","SA2","SB1","SB2","SF4","SED","SE1"	

//Montagem da capa do documento fiscal		
aadd(aCabec,{"F2_TIPO"   ,"N"})	
aadd(aCabec,{"F2_FORMUL" ,"S"})	
aadd(aCabec,{"F2_DOC"    ,cDoc})	
aadd(aCabec,{"F2_SERIE"  ,"AUT"})	
aadd(aCabec,{"F2_EMISSAO",dDataBase})	
aadd(aCabec,{"F2_CLIENTE","SP0001"})	
aadd(aCabec,{"F2_LOJA"   ,"01"})	
aadd(aCabec,{"F2_ESPECIE","NF"})	
aadd(aCabec,{"F2_COND","001"})	
aadd(aCabec,{"F2_DESCONT",0})	
aadd(aCabec,{"F2_FRETE",0})	
aadd(aCabec,{"F2_SEGURO",0})	
aadd(aCabec,{"F2_DESPESA",0})		

//Os valores de impostos somente devem ser informados caso NAO deva ser efetuado o calculo 	
//	automatico pelas rotinas fiscais do sistema.	
//Normalmente as referencias de impostos sao passadas quando a importacao automatica vem	
//	de uma integracao com outro sistema, onde todos os valores jah foram calculados e 	
//	NAO podem ser alterados.	

aAdd(aCabec,{'F2_BASEICM',100,})
//Base

aAdd(aCabec,{'F2_BASEIPI',40,})	
//Base	

aAdd(aCabec,{'F2_VALICM',10,})		
//Valor imposto	

aAdd(aCabec,{'F2_VALIPI',4,})		
//Valor imposto	

//Montagem dos itens do documento fiscal	
aLinha := {}			
aadd(aLinha,{"D2_COD"  ,"PA0000000000000000000000000001",Nil})	
aadd(aLinha,{"D2_QUANT",1,Nil})	
aadd(aLinha,{"D2_PRCVEN",100,Nil})	
aadd(aLinha,{"D2_TOTAL",100,Nil})
aadd(aLinha,{"D2_TES","515",Nil})	

//O mesmo tratamento para os impostos comentados acima, vale para os itens tambem. Portanto soh 	
//	deve ser utilizado quando NAO houver necessidade que o sistema calcule automaticamente.	

aAdd(aLinha, {'D2_IPI    ',2,})		
//Aliquota	

aAdd(aLinha, {'D2_PICM   ',2,})		
//Aliquota	

aAdd(aLinha, {'D2_BASEIPI',40,})		
//Base	

aAdd(aLinha, {'D2_BASEICM',100,})		
//Base	

aAdd(aLinha, {'D2_VALIPI ',4,})		
//Valor imposto	

aAdd(aLinha, {'D2_VALICM ',10,})		
//Valor imposto	

aadd(aItens,aLinha)	

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿	
//| Teste de Inclusao                                            |	
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ	

MSExecAuto ({|x,y| MATA920(aCabec,aItens)}, aCabec, aItens, 3)	

If !lMsErroAuto		
	ConOut("Incluido com sucesso! "+cDoc)		
Else		
	ConOut("Erro na inclusao!")	
EndIf	

ConOut("Fim  : "+Time())

RESET ENVIRONMENT

Return .T.

Importante!

Quando se utiliza as referências de impostos, para que os valores sejam respeitados, é muito importante que uma ordem de estruturação do array seja seguida, tanto para o array de capa quanto para o de itens.

Primeiramente, devem ser declarados todos os valores de alíquotas, depois os valores de base e por último os valores dos tributos, uma exceção é o array de capa, que não pode conter nenhuma referência de alíquota, somente os de base e valor do tributo.