Árvore de páginas

Versões comparadas

Chave

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

...

Bloco de código
languagephp
themeRDark
titleMA910AUT - Impostos automáticos
#include 'totvs.ch'
#include 'rwmake.ch'

     /*
     {Protheus.doc} ExecMta910
     ExecAuto Mata910
     @type  Function
    */

User Function MA910AUT()

	Local aCabM910 := {}
	Local aItemM910 := {}
	Local aLinha := {}
	Private lMsErroAuto := .F.

	aadd(aCabM910,{"F1_TIPO","N"})
	aadd(aCabM910,{"F1_DOC","000000003"})
	aadd(aCabM910,{"F1_SERIE","001"})
	aadd(aCabM910,{"F1_EMISSAO",dDatabase})
	aadd(aCabM910,{"F1_FORNECE","COM003"})
	aadd(aCabM910,{"F1_LOJA","01"})
	aadd(aCabM910,{"F1_ESPECIE","SPED"})

	
	aadd(aLinha,{"D1_ITEM" ,"0001",Nil})
	aadd(aLinha,{"D1_COD" ,"000000000000000000000000000010",Nil})
	aadd(aLinha,{"D1_QUANT",1,Nil})
	aadd(aLinha,{"D1_VUNIT",100,Nil})
	aadd(aLinha,{"D1_TOTAL",100,Nil})
	aadd(aLinha,{"D1_TES","10A",Nil})

	aadd(aItemM910,aLinha)

	MSExecAuto({|x,y,z| mata910(x,y,z)},aCabM910,aItemM910,3)

	if lMsErroAuto
		MostraErro()
	else
		FwAlertInfo("Nota Incluida Com Sucesso","TOTVS")
	endif

Return 

...

Bloco de código
languagephp
themeRDark
titleMA910AUT - 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"   #include 'totvs.ch'
#include 'rwmake.ch'

     /*
     {Protheus.doc} ExecMta910
     ExecAuto Mata910
     @type  Function
    */

User Function ExecMta910()

	Local aCabM910 := {}
	Local aItemM910 := {}
	Local aLinha := {}
	Private lMsErroAuto := .F.

	aadd(aCabM910,{"F1_TIPO","N"})	
    aadd(aCabecaCabM910,{"F2F1_FORMUL" ,"SN"})
	
aadd(aCabecaCabM910,{"F2F1_DOC"    ,cDoc,"000000004"})
	
aadd(aCabecaCabM910,{"F2F1_SERIE"  ,"AUT001"})
	
aadd(aCabecaCabM910,{"F2F1_EMISSAO",dDataBasedDatabase})
	
aadd(aCabecaCabM910,{"F2F1_CLIENTEFORNECE","SP0001COM003"})
	
aadd(aCabecaCabM910,{"F2F1_LOJA"   ,"01"})
	
aadd(aCabecaCabM910,{"F2F1_ESPECIE","NFSPED"})
	
aadd(aCabecaCabM910,{"F2F1_COND","001"})
	
aadd(aCabecaCabM910,{"F2F1_DESCONT",0})
	
aadd(aCabecaCabM910,{"F2F1_FRETE",0})
	
aadd(aCabecaCabM910,{"F2F1_SEGURO",0})
	
aadd(aCabecaCabM910,{"F2F1_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(aCabM910,{"F1_BASEICM",100})
	aadd(aCabM910,{"F1_BASEIPI",40})
	aadd(aCabM910,{"F1_VALICM",10})
	aadd(aCabM910,{"F1_VALIPI",4})	


	aadd(aLinha,{"D1_ITEM" ,"0001",Nil})
	aadd(aLinha,{"D2D1_COD"  ,"PA0000000000000000000000000001000000000000000000000000000010",Nil})
	
aadd(aLinha,{"D2D1_QUANT",1,Nil})
	
aadd(aLinha,{"D2D1_PRCVENVUNIT",100,Nil})
	
aadd(aLinha,{"D2D1_TOTAL",100,Nil})
	aadd(aLinha,{"D2D1_TES","51510A",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	aadd(aLinha, {'D2"D1_IPI    '",2,Nil})		
//Aliquota	

aAdd	aadd(aLinha, {'D2"D1_PICM   '",2,Nil})		
//Aliquota	

aAdd	aadd(aLinha, {'D2"D1_BASEIPI'",40,Nil})		
//Base	

aAdd	aadd(aLinha, {'D2"D1_BASEICM'",100,Nil})		
//Base	

aAdd	aadd(aLinha, {'D2"D1_VALIPI '",4,Nil})		
//Valor imposto	

aAdd	aadd(aLinha, {'D2"D1_VALICM '",10,Nil})		
//Valor imposto	



	aadd(aItensaItemM910,aLinha)	

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

MSExecAuto ({|x,y,z| MATA920mata910(aCabecx,y,aItensz)}, aCabecaCabM910, aItensaItemM910, 3)	 //Inclusao

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

ConOut("Fim  : "+Time())

RESET ENVIRONMENT

Return .T.

MostraErro()
	else
		FwAlertInfo("Nota Incluida Com Sucesso","TOTVS")
	endif

return
  
Informações
titleImportante!

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.

...