Você está na página 1de 73

MATXFIS Guia de Utilizao

1. INTRODUO ................................................................................................................................. Pag. 03


2. FUNES ........................................................................................................................................ Pag. 04
2.1 MaFisFound() ......................................................................................................................... Pag. 05
2.2 MaFisSave() ............................................................................................................................ Pag. 07
2.3 MaFisRestore() ....................................................................................................................... Pag. 09
2.4 MaFisClear() ........................................................................................................................... Pag. 11
2.5 MaFisEnd() ............................................................................................................................. Pag. 13
2.6 MaFisNFCab() ......................................................................................................................... Pag. 15
2.7 MaFisIni() ............................................................................................................................... Pag. 17
2.8 MaFisIniLoad() ........................................................................................................................ Pag. 22
2.9 MaFisAdd() ............................................................................................................................. Pag. 27
2.10 MaFisLoad() ........................................................................................................................... Pag. 30
2.11 MaFisEndLoad() ..................................................................................................................... Pag. 33
2.12 MaFisRet() .............................................................................................................................. Pag. 35
2.13 MaFisSXRef() .......................................................................................................................... Pag. 38
2.14 MaFisRelImp() ........................................................................................................................ Pag. 41
2.15 MaFisRef() .............................................................................................................................. Pag. 43
2.16 MaFisAlt() .............................................................................................................................. Pag. 46
2.17 MaFisDel() .............................................................................................................................. Pag. 49
2.18 MaColsToFis() ........................................................................................................................ Pag. 51
2.19 MaFisToCols() ........................................................................................................................ Pag. 55
2.20 MaFisRecal() .......................................................................................................................... Pag. 57
2.21 MaFisWrite() .......................................................................................................................... Pag. 59
2.22 MaFisAtuSF3() ........................................................................................................................ Pag. 62
2.23 MaFisIniNF() ........................................................................................................................... Pag. 64
2.24 MaFisBrwLivro() ..................................................................................................................... Pag. 67
2.25 MaFisRodape() ....................................................................................................................... Pag. 69

MATXFIS Guia de Utilizao - TOTVS - 2013


2
MATXFIS Guia de Utilizao

1. INTRODUO

A MATXFIS.PRX um programa que possui um conjunto de funes que administram um conjunto de arrays
STATICS para calcular todos os impostos do ERP Protheus.

importante para o Protheus que todos os impostos j existentes e novos impostos que venham a ser
criados pela legislao do pas, sejam administrados e calculados por este programa, desta forma possvel
que as manutenes constantes na legislao sejam realizadas de forma mais rpida e eficiente, por ser feita
em um nico ponto do sistema, com isso evita-se erros ao atualizar a legislao de um imposto (ICMS) , em
um ponto do sistema e deixando de atualizar, e ou atualizar de forma diferente em outro ponto do sistema,
isto ocorria quando os impostos eram calculados diretamente nos programas de documentos fiscais,
relatrios e outros. Com a centralizao foi possvel atualizar a legislao dos impostos de todo o sistema em
apenas um ponto, para isso foram criados alguns recursos a fim de facilitar a forma com que os programas
que utilizem a MATXFIS possam interagir com ela, um destes recursos mencionado neste guia como
REFERNCIA FISCAL, chamado de referncia fiscal uma DEFINE contida numa lista de DEFINES do fonte
MATXDEF.CH, a ideia que cada referncia fiscal leve um nome com um prefixo e um sufixo que possam
facilitar a identificao do seu contedo, exemplo: NF_DESCONTO valor do desconto no cabealho da
nota, IT_BASEIPI valor do IPI no item da nota, LF_VALCONT Valor Contbil da nota que ser gravado
no Livro Fiscal, cada referncia fiscal um DEFINE do MATXDEF.CH com um numero que corresponde a sua
posio nos arrays STATICS da MATXFIS e podem ser utilizados na passagem de parmetros de todas as
funes disponveis para a integrao das aplicaes x MATXFIS e dicionrio de dados.

Este guia tem a inteno de explicar como desenvolver e dar manuteno em aplicaes que utilizem o
motor de impostos MATXFIS de forma a garantir que o desenvolvimento seja realizado de forma correta e
com melhor desempenho possvel, pois como o uso das funes so muito flexveis, natural que o mesmo
resultado seja obtido de inmeras formas diferentes, onde a escolha da melhor forma crucial para o
desempenho da aplicao.

O guia apresenta uma lista com 25 funes que cobrem todas as formas de integrao da aplicao x
MATXFIS, cada uma das funes apresentada com uma descrio resumida, lista de parmetros, retorno,
como e onde utilizar e exemplos de uso.

MATXFIS Guia de Utilizao - TOTVS - 2013


3
MATXFIS Guia de Utilizao

2. FUNES

Abaixo ser descrito em detalhe todas as caractersticas e funcionamento das principais funes que
compe a rotina MATXFIS contendo:

Descrio da funo;
Uma breve descrio da funo para que seja entendido o contexto da mesma.

Parmetros;
Tabela contendo todas as Informaes necessrias sobre os parmetros recebidos da funo.

Retorno;
Tabela contendo as Informaes do retorno da funo.

Como e onde usar;


Um texto explicativo informando e exemplificando como e onde poder ser utilizado a funo em questo.

Exemplo prtico da funo.


Trecho de cdigos em ADVPL exemplificando a utilizao da funo e at mesmo exemplos
prticos/cenrios utilizados dentro do ERP.

MATXFIS Guia de Utilizao - TOTVS - 2013


4
MATXFIS Guia de Utilizao

2.1 MaFisFound (cReferencia , nItem)

Descrio da funo:

Verifica a existncia de elementos nos arrays aNFCab e aNFItem da MATXFIS. O aNFCab um array esttico
da MATXFIS responsvel por armazenar os dados do cabealho do documento fiscal e o aNFItem o array
responsvel por armazenar todos os itens do documento fiscal, conforme a passagem do parmetro
cReferencia NF ou IT a funo retorna .T. ou .F. se houver elementos nos Arrays.

Parmetros:

Ordem Parmetro Tipo Descrio


NF Pesquisa a existncia de elementos no array aNFCab
Cabealho do Documento Fiscal
01 cReferencia Caracter
IT Pesquisa a existncia de elementos no array aNFItem
Itens do Documento Fiscal
Verifica se o item passado no parmetro existe no array
02 nItem Numrico
aNFItem caso o parmetro cReferencia for passado como IT

Retorno:

Ordem Retorno Tipo Descrio


.T. Se for encontrado elemento no cabealho ou nos itens do
01 lFound Lgico documento fiscal
.F. Caso no for encontrado elemento no cabealho ou nos
itens do documento fiscal

Como e onde Usar:

Utilizar em programas que utilizam MATXFIS ou novos programas que pretendem fazer uso das funes
fiscais da matxfis para calcular impostos. Deve ser utilizada ANTES de iniciar a carga dos dados do
documento fiscal para a MATXFIS atravs das funes MaFisINI, MaFisAdd e MaFisIniLoad com o propsito
de verificar se os dados do cabealho e ou dos itens j foram carregados para a MATXFIS, evitando assim que
um mesmo item seja carregado mais de uma vez ou at mesmo que o mesmo documento fiscal seja
carregado novamente. Tambm deve ser utilizada ANTES da chamada de qualquer funo MATXFIS quando
em um contexto que no se tem certeza se os dados j foram ou no carregados para a MATXFIS. NUNCA
utilizar dentro de contextos onde mais de uma verificao seja necessria, como verificar se o documento
fiscal existe MaFisFound(NF) dentro de laos nos itens Whiles, For/Next, aEval(), at mesmo a consulta
por itens dentro dos laos MaFisFound(IT, N ) deve ser realizada somente quando NO se tem certeza da
existncia do item, em contexto onde a existncia do item lgica, no utilizar.

MATXFIS Guia de Utilizao - TOTVS - 2013


5
MATXFIS Guia de Utilizao

Exemplos de Uso:

If ! MaFisFound("NF")

MaFisIni( cFornecedor , cLoja , "F" , "N" , Nil , aRelImp , , .T. )

EndIf

If MaFisFound("IT",N) Validando a alterao de um item da MsGetDados()


atravs de funo acionada por valid ou gatilho

MaFisAlt("IT_PRCUNI",aCols[n][nPPreco],n)

EndIf

MATXFIS Guia de Utilizao - TOTVS - 2013


6
MATXFIS Guia de Utilizao

2.2 MaFisSave()

Descrio da funo:

Salva o estado atual (todos os dados do documento fiscal carregado na MATXFIS) para uma rea temporria
com o propsito de liberar os arrays internos do mecanismo para utilizao de um outro processo e ou
documento fiscal e aps o uso ser restaurado o estado atual novamente. importante ressaltar que a
MATXFIS trabalha com apenas um documento fiscal por vez e quando por algum motivo necessrio
carregar um outro documento fiscal para o mecanismo se faz necessrio alternar entre eles, e para isso o
uso desta funo.

Parmetros:

Ordem Parmetro Tipo Descrio


No so necessrios parmetros para essa funo.

Retorno:

Ordem Retorno Tipo Descrio


No h retorno para essa funo.

Como e onde Usar:

Utilizar em programas que utilizam MATXFIS e necessitam em algum momento carregar um novo documento
fiscal por um instante e ou realizar um calculo fiscal a parte do documento fiscal atual e em seguida retornar
ao documento fiscal original. O uso se faz comum em situaes como na consulta do histrico de produtos
ao incluir um pedido de compras onde possvel consultar os ltimos pedidos do produto consultado, para
realizar esta consulta necessrio salvar os dados do pedido atual em uma rea temporria, para que aps a
consulta os dados possam ser restaurados e dar continuidade a edio do pedido, outro exemplo na nota
fiscal de entrada (Documento de Entrada) onde possvel consultar todos os pedidos de compras vinculados
aquela nota fiscal de entrada.

MATXFIS Guia de Utilizao - TOTVS - 2013


7
MATXFIS Guia de Utilizao

Exemplos de Uso:

Funo utilizada no pedido de compras para consultar os ltimos pedidos de compras


para o produto.

Function A120ComView()

Local nPosCod := aScan(aHeader,{|x| AllTrim(x[2]) == "C7_PRODUTO"})

MaFisSave() SALVA TODOS OS ARRAYS INTERNOS DA MATXFIS EM UMA AREA


TEMPORRIA

MaFisEnd()

If !AtIsRotina("MACOMVIEW")

If !Empty(aCols[n][nPosCod])

MaComView(aCols[n][nPosCod]) funo que consultar outros


pedidos de compras e abrir novamente a MATXFIS

EndIf

EndIf

MaFisRestore() RESTAURA OS DADOS ARMAZENADOS DO PEDIDO ATUAL DA


AREA TEMPORRIA PARA OS ARRAYS INTERNOS

Return

MATXFIS Guia de Utilizao - TOTVS - 2013


8
MATXFIS Guia de Utilizao

2.3 MaFisRestore()

Descrio da funo:

Restaura os arrays internos da MATXFIS contendo todos os dados do estado atual armazenado pela funo
MaFisSave() da rea temporria, vide a funo MaFisSave(). importante ressaltar que a MATXFIS trabalha
com apenas um documento fiscal por vez e quando por algum motivo necessrio carregar um outro
documento fiscal para o mecanismo se faz necessrio alternar entre eles, e para isso o uso desta funo em
conjunto com a funo MaFisSave().

Parmetros:

Ordem Parmetro Tipo Descrio


No so necessrios parmetros para essa funo.

Retorno:

Ordem Retorno Tipo Descrio


No h retorno para essa funo.

Como e onde Usar:

Utilizar em programas que utilizam MATXFIS e necessitam em algum momento carregar um novo documento
fiscal por um instante e ou realizar um calculo fiscal a parte do documento fiscal atual e em seguida retornar
ao documento fiscal original. O uso se faz comum em situaes como na consulta do histrico de produtos
ao incluir um pedido de compras onde possvel consultar os ltimos pedidos do produto consultado, para
realizar esta consulta necessrio salvar os dados do pedido atual em uma rea temporria, para que aps a
consulta os dados possam ser restaurados e dar continuidade a edio do pedido, outro exemplo na nota
fiscal de entrada (Documento de Entrada) onde possvel consultar todos os pedidos de compras vinculados
aquela nota fiscal de entrada.

MATXFIS Guia de Utilizao - TOTVS - 2013


9
MATXFIS Guia de Utilizao

Exemplos de Uso:

Funo utilizada no pedido de compras para consultar os ltimos pedidos de compras para
o produto.

Function A120ComView()

Local nPosCod := aScan(aHeader,{|x| AllTrim(x[2]) == "C7_PRODUTO"})

MaFisSave() SALVA TODOS OS ARRAYS INTERNOS DA MATXFIS EM UMA AREA


TEMPORRIA

MaFisEnd()

If !AtIsRotina("MACOMVIEW")

If !Empty(aCols[n][nPosCod])

MaComView(aCols[n][nPosCod]) funo que consultar outros


pedidos de compras e abrir novamente a MATXFIS

EndIf

EndIf

MaFisRestore() RESTAURA OS DADOS ARMAZENADOS DO PEDIDO ATUAL DA


AREA TEMPORRIA PARA OS ARRAYS INTERNOS

Return

MATXFIS Guia de Utilizao - TOTVS - 2013


10
MATXFIS Guia de Utilizao

2.4 MaFisClear()

Descrio da funo:

Limpa todos os itens e zera todos totalizadores do cabealho dos arrays internos da MATXFIS. O aNFCab
um array esttico da MATXFIS responsvel por armazenar os dados do cabealho do documento fiscal e o
aNFItem o array responsvel por armazenar todos os itens do documento fiscal, a funo MaFisClear() exclui
todos os itens do array aNFItem e zera todos os elementos com valores totais no array aNFCab preservando
todos os demais dados do cabealho, como Cliente, Loja, Tipo da NF, UF, etc.

Parmetros:

Ordem Parmetro Tipo Descrio


No so necessrios parmetros para essa funo.

Retorno:

Ordem Retorno Tipo Descrio


No h retorno para essa funo.

Como e onde Usar:

Usar em momentos quando se faz necessrio recomear a incluir itens no mesmo documento fiscal, ou seja,
se NO for necessrio reiniciar todo o procedimento de carga de todo o documento fiscal. Se os dados do
cabealho do documento fiscal forem os mesmos, no h necessidade de finalizar toda a MATXFIS para
carrega-la novamente, com esta funo possvel ganhar tempo neste processo, um exemplo de uso a
carga do pedido de compras para o documento de entrada (MATA103.PRW), onde a cada carga de pedidos,
os itens do documento de entrada (aCols) so LIMPOS, preservando todos os demais dados da NFE j
digitados, ou seja, cada vez que se ativa a funo para carregar pedidos de compras no documento de
entrada os itens so descartados do aCols para uma nova carga de novos pedidos, outro uso comum tambm
na rotina MAT103.PRW quando o usurio est digitando uma nota fiscal de entrada e num dado momento
vai ao cabealho da nota e altera o Tipo da Nota de Normal para Nota de Complemento neste caso por
exemplo, como uma nota de complemento tem caractersticas prprias deste modelo como ter apenas 1
item que seja amarrado em um outro documento original, se faz necessrio limpar todo contedo digitado
antes da alterao do tipo da nota para reiniciar uma nova digitao compatvel com o modelo de
complemento.

MATXFIS Guia de Utilizao - TOTVS - 2013


11
MATXFIS Guia de Utilizao

Exemplos de Uso:

Function NfeTipo(cTipo,cFornece,cLoja,oSay,oFornece,oLoja)

If MaFisFound("NF") .And. cTipo <> MafisRet(,"NF_TIPONF") // Verifica se o tipo da NF


foi Alterado

MaFisAlt("NF_CLIFOR",IIf(cTipo$"DB","C","F"))

MaFisAlt("NF_TIPONF",cTipo)

aCols := {} // Limpa os itens no Documento de Entrada MATA103

MaFisClear() // Limpa os itens no array aNFItem na MATXFIS e atualiza os


totais no array aNFCab

Eval(bRefresh)

EndIf

Return

MATXFIS Guia de Utilizao - TOTVS - 2013


12
MATXFIS Guia de Utilizao

2.5 MaFisEnd()

Descrio da funo:

Diferente da funo MaFisClear() esta funo finaliza todo o uso da MATXFIS limpando TODOS os seus arrays
internos

Parmetros:

Ordem Parmetro Tipo Descrio


No so necessrios parmetros para essa funo.

Retorno:

Ordem Retorno Tipo Descrio


No h retorno para essa funo.

Como e onde Usar:

Usar sempre que todo o processo de calculo, incluso, alterao, excluso, visualizao e gerao de
impostos for finalizado, independente de se aps a finalizao destes processos for iniciar um novo processo
ou no. Para o caso de iniciar um novo processo o uso essencial, pois necessrio que os arrays internos e
mecanismos de refresh() sejam finalizados para no conflitar com os dados novo processo, para
simplesmente finalizar o processo o uso deve ser praticado para liberar a memria utilizada pelos arrays
internos que no tem mais utilidade, seu uso praticamente obrigatrio para finalizar todos os processos.

MATXFIS Guia de Utilizao - TOTVS - 2013


13
MATXFIS Guia de Utilizao

Exemplos de Uso:

Trecho de cdigo para obter o valor total do item com a incidncia de impostos

MaFisIni(cFORNECE,cLOJA,"F","N","R",aRefImp) // Inicia a Matxfis

MaFisIniLoad(1) // Carrega o item 1 vazio

For nX := 1 To Len(aRefImp)

MaFisLoad(aRefImp[nX][3],FieldGet(FieldPos(aRefImp[nX][2])),1) // Carrega os dados fiscais


do item a partir de uma tabela

Next nX

MaFisEndLoad(1) // Finaliza a carga do item e atualiza os totalizadores do cabealho na MATXFIS

nTotItem := MaFisRet(1,"IT_TOTAL") // obtm o valor total do item calculado pela matxfis com a
incidncia dos impostos

MaFisEnd() // FINALIZA A OPERAO E LIMPA TODOS OS ARRAYS INTERNOS DA MATXFIS

MATXFIS Guia de Utilizao - TOTVS - 2013


14
MATXFIS Guia de Utilizao

2.6 MaFisNFCab()

Descrio da funo:

Retorna um array contendo todos os impostos calculados na MATXFIS no momento da chamada da funo
com quebra por impostos + alquotas

Parmetros:

Ordem Parmetro Tipo Descrio


No so necessrios parmetros para essa funo.

Retorno:

Ordem Retorno Tipo Descrio

01 aImpostosCalculados array Array contendo TODOS os impostos calculados pela


MATXFIS at o momento da chamada da funo.

Como e onde Usar:

Pode ser utilizado em casos onde a aplicao necessite em determinado ponto apresentar e ou utilizar como
referencia para clculos no cdigo, valores totalizados dos impostos calculados na operao pela MATXFIS, o
comum para esta situaes utilizarmos a funo MaFisRet( ,'NF_VALICM') passando como parmetro a
referncia do Imposto que necessite no momento, contudo, em situaes onde o uso do MaFisRet no seja
possvel e ou no seja vivel, pode se utilizar esta funo como recurso.

MATXFIS Guia de Utilizao - TOTVS - 2013


15
MATXFIS Guia de Utilizao

Exemplos de Uso:

Funo para obter todos os impostos calculados pela MATXFIS at o momento

Function ImpostosdaNF()

Local aImpostos := {}

If MaFisFound("NF")

aTodosImpostos := MaFisNFCab()

EndIf

Return ( aTodosImpostos )

MATXFIS Guia de Utilizao - TOTVS - 2013


16
MATXFIS Guia de Utilizao

2.7 MaFisIni(cCodCliFor,cLoja,cCliFor,cTipoNF,cTpCliFor,aRelImp,cTpComp,lInsere,
cAliasP,cRotina,cTipoDoc,cEspecie,cCodProsp,cGrpCliFor,cRecolheISS,cCliEnt,cLo
jEnt,aTransp,lEmiteNF,lCalcIPI,cPedido,cCliFat,cLojcFat)

Descrio da funo:

A funo MaFisIni() responsvel por iniciar todo o processo da MATXFIS, ela a funo que forma o array
aNFCab (Cabealho do Documento Fiscal) atravs dos dados informados nos parmetros passados pela
funo, parmetros SX6, dados da tabela de Cliente (SA1) e ou Fornecedor (SA2) e Natureza Financeira (SED),
com isso dando forma ao documento que ser gerado

Parmetros:

Ordem Parmetro Tipo Descrio


01 cCodCliFor Caracter Cdigo Cliente/Fornecedor
02 cLoja Caracter Loja do Cliente/Fornecedor
03 cCliFor Caracter C:Cliente , F:Fornecedor
04 cTipoNF Caracter Tipo da NF( "N","D","B","C","P","I" )
05 cTpCliFor Caracter Tipo do Cliente/Fornecedor
06 aRelImp Array Relao de Impostos que suportados no arquivo
07 cTpComp Caracter Tipo de complemento
08 lInsere Lgico Permite Incluir Impostos no Rodap .T./.F.
09 cAliasP Caracter Alias do Cadastro de Produtos - ("SBI" P/ Front Loja)
10 cRotina Caracter Nome da rotina que esta utilizando a funo
11 cTipoDoc Caracter Tipo de documento
12 cEspecie Caracter Espcie do documento
13 cCodProsp Caracter Cdigo e Loja do Prospect
14 cGrpCliFor Caracter Grupo Cliente
15 cRecolheISS Caracter Recolhe ISS
16 cCliEnt Caracter Cdigo do cliente de entrega na nota fiscal de sada
17 cLojEnt Caracter Loja do cliente de entrega na nota fiscal de sada
18 aTransp Array Informaes do transportador [01]-UF,[02]-TPTRANS
19 lEmiteNF Lgico Se esta emitindo nota fiscal ou cupom fiscal (Sigaloja)
20 lCalcIPI Lgico Define se calcula IPI (SIGALOJA)
21 cPedido Caracter Pedido de Venda
22 cCliFat Caracter Cliente do Faturamento
23 cLojcFat Caracter Loja do Cliente do Faturamento

Novos parmetros podem ser acrescentados a esta funo, verificar o cdigo fonte.

Retorno:

Ordem Retorno Tipo Descrio


No h retorno para essa funo.

MATXFIS Guia de Utilizao - TOTVS - 2013


17
MATXFIS Guia de Utilizao

Como e onde Usar:

A funo MaFisIni() tem que ser usada obrigatoriamente em qualquer operao que envolva a MATXFIS,
sempre deve ser utilizada ANTES da carga de qualquer Item, pois ela monta o cabealho (aNFCab) com dados
que interferem diretamente nos clculos dos itens, e a arquitetura do cdigo exige que o cabealho seja
formado antes da incluso dos itens. Deve ser chamada apenas uma vez para cada documento fiscal. Quando
em alguns casos, h necessidade e ou possibilidade que dados do cabealho sejam alterados, como o caso
de interfaces de incluso de notas fiscais, necessrio chamar a funo MaFisAlt() com a referencia do
cabealho que necessite ser alterada, MaFisAlt("NF_UFORIGEM", cNovoUF ) para refazer o array interno
(aNFCab) com a nova informao e conforme a referencia refazer os clculos de todos os itens.

MATXFIS Guia de Utilizao - TOTVS - 2013


18
MATXFIS Guia de Utilizao

Exemplos de Uso:

1 ) Gerao de nota fiscal de sada pelo faturamento SIGAFAT MATA461.PRX

dbSelectArea("SC5")

If nItem == 1

MaFisIni(cCliEnt,SC5->C5_LOJAENT,If(SC5->C5_TIPO$'DB',"F","C"),SC5->C5_TIPO
,SC5->C5_TIPOCLI,aRelImp,, ,,'MATA461',,,,cGrpCliTrb,,,,aTransp,,,SC6->C6_NUM
,SC5->C5_CLIENTE,SC5->C5_LOJACLI)

EndIf

MaFisLoad( "NF_ESPECIE" , SF2->F2_ESPECIE ) // Carrega a espcie da NF para o array cabealho


aNFCab

// Inclui um novo item no aNFItem

MaFisIniLoad(nItem,{ SC6->C6_PRODUTO,; //IT_PRODUTO


SC6->C6_TES,; //IT_TES
If(SF4->F4_ISS=="S", SC6->C6_CODISS , " " ) ,; //IT_CODISS
aPvlNfs[nItem][4],; //IT_QUANT
SC6->C6_NFORI,; //IT_NFORI
SC6->C6_SERIORI,; //IT_SERIORI
SB1->(RecNo()),; //IT_RECNOSB1
SF4->(RecNo()),; //IT_RECNOSF4
nRecOri ,; //IT_RECORI
SC6->C6_LOTECTL,; //IT_LOTECTL
SC6->C6_NUMLOTE }) //IT_NUMLOTE

MaFisTes(SC6->C6_TES,SF4->(RecNo()),nItem) // Carrega a TES para a MATXFIS

MaFisLoad("IT_VALMERC",aRateio[RT_PRECOIT][3]+aRateio[RT_PRECOIT][4],nItem)

MaFisLoad("IT_PRCUNI",aRateio[RT_PRECOIT][1],nItem)

MaFisLoad("IT_VLR_FRT",aRateio[RT_VLR_FRT],nItem)

MaFisRecal("",nItem) // Dispara o calculo do item

MaFisEndLoad(nItem,2) // Fecha o calculo do item e atualiza os totalizadores do cabealho

MATXFIS Guia de Utilizao - TOTVS - 2013


19
MATXFIS Guia de Utilizao

2 ) Visualizao de um pedido de compras SIGACOM MATA120.PRX

// Carrega o cabealho do documento fiscal no aNFCab MATXFIS

MaFisIni(ca120Forn,ca120Loj,"F","N",Nil,aRefImpos,,.T.,,,,,,,)

// Lao para carregar todos os itens do pedido a partir do ACOLS formado pela tabela SC7 de
pedido de compras

For nX := 1 to Len(aCols)

MaFisIniLoad(nX,,.T.)

For nY := 1 To Len(aHeader)

cValid := AllTrim(UPPER(aHeader[nY][6]))

cRefCols := MaFisGetRf(cValid)[1]

If !Empty(cRefCols) .AND. MaFisFound("IT",nX)

MaFisLoad(cRefCols,aCols[nX][nY],nX)

EndIf

Next nY

MaFisEndLoad(nX,2)

Next nX

MATXFIS Guia de Utilizao - TOTVS - 2013


20
MATXFIS Guia de Utilizao

3 ) Documento de entrada SIGACOM - MATA103.PRW

// Trecho de cdigo para validar a digitao dos dados no cabealho do documento de entrada na
Incluso.

If !MaFisFound("NF")

MaFisIni(cA100For,cLoja,IIf(cTipo$'DB',"C","F"),cTipo,Nil,MaFisRelImp("MT100",{"SF1","SD1
"}),,!lVisual,NIL,NIL,NIL)

If !Empty(cUfOrig)

MaFisAlt("NF_UFORIGEM",cUfOrig)

Endif

Else

If !Empty(cUfOrig)

MaFisAlt("NF_UFORIGEM",cUfOrig)

Endif

EndIf

// Trecho de cdigo para iniciar a MAXTFIS ao visualizar um documento de entrada

MaFisIni(SF1->F1_FORNECE,SF1->F1_LOJA,IIf(cTipo$'DB',"C","F"),
,cTipo,Nil,MaFisRelImp("MT100",{"SF1","SD1"}),,!l103Visual)

...

DEFINE MSDIALOG oDlg

// .... cdigos de construo da Dialog

ACTIVATE MSDIALOG oDlg

MATXFIS Guia de Utilizao - TOTVS - 2013


21
MATXFIS Guia de Utilizao

2.8 MaFisIniLoad(nItem , aItemLoad , lEstorno)

Descrio da funo:

A Funo MaFisIniLoad acrescenta um NOVO item no array interno de itens da MATXFIS ( aNFItem ). Este
item pode ser acrescentado com todos os elementos em branco ou se informado os dados bsicos na
passagem do parmetro aItemLoad estes dados sero carregados no novo item, Exemplo: Cdigo do
Produto, TES ou Quantidade. Pode-se utilizar a funo tambm para estornar os valores do item dos
totalizadores do cabealho (aNFCab) conforme necessidade da aplicao a ser desenvolvida, se o item
informado no parmetro nItem j existir e o parmetro lEstorno for passado como .T., os valores deste item
sero estornados dos elementos totalizadores do cabealho do documento fiscal (aNFCab).

Parmetros:

Ordem Parmetro Tipo Descrio


01 nItem Numrico Item do Array ANFItem que deve ser inicializado
aItemLoad Array Array de otimizao (Dados que podem ser carregados j na
criao do Item
[01] Caracter Cdigo do produto
[02] Caracter Cdigo da TES
[03] Numrico Valor do ISS do item
[04] Numrico Quantidade do Item
02 [05] Caracter Numero da NF Original
[06] Caracter Serie da NF Original
[07] Numrico RecNo do SB1
[08] Numrico RecNo do SF4
[09] Numrico RecNo da NF Original (SD1/SD2)
[10] Caracter Lote do Produto
[11] Caracter Sub-Lote Produto
03 lEstorno Lgico Se o Item j existir, se deve ou no estornar o valor dos
totalizadores do aNFCab

Retorno:

Ordem Retorno Tipo Descrio


No h retorno para essa funo.

MATXFIS Guia de Utilizao - TOTVS - 2013


22
MATXFIS Guia de Utilizao

Como e onde Usar:

A Funo MaFisIniLoad() a melhor forma de acrescentar um item ao utilizar a MATXFIS e deve sempre ser
priorizada em relao ao uso da funo MaFisAdd() por ser mais rpida, pois no executa o recalculo do item
a cada item carregado. Deve ser utilizada dentro dos laos dos itens da aplicao de forma que a cada item
lido no lao seja chamada a funo passando o item atual como parmetro do parmetro nItem. Se
aplicao utiliza MsGetDados() e aCols para manipulao dos itens, os itens gerados pela MaFisIniLoad()
devem sempre estar na mesma ordem em que os itens do aCols foram formados, pois aCols e aNFItem tem
obrigatoriamente de estar sincronizados em qualquer situao.

MATXFIS Guia de Utilizao - TOTVS - 2013


23
MATXFIS Guia de Utilizao

Exemplos de Uso:

1 ) Visualizao de um pedido de compras SIGACOM MATA120.PRX

MaFisIni(ca120Forn,ca120Loj,"F","N",Nil,aRefImpos,,.T.,,,,,,,) // Carrega o cabealho do documento


fiscal no aNFCab MATXFIS

// Lao para carregar todos os itens do pedido a partir do acols formado pela tabela SC7 de pedido
de compras

For nX := 1 to Len(aCols) // Roda todos os Itens do Pedido de Compras

MaFisIniLoad(nX,,.T.) // nX representa o Item do aCols lido dentro do lao e acrescenta o


item em branco no aNFItem MATXFIS.

For nY := 1 To Len(aHeader) // Roda todos os campos do aCols atravs do aHeader para


carregar cada um para o aNFItem

cValid := AllTrim(UPPER(aHeader[nY][6]))

cRefCols := MaFisGetRf(cValid)[1] // Armazena a referencia fiscal do campo na


variavel cRefCols

If !Empty(cRefCols) .And. MaFisFound("IT",nX) // Verifica a existncia do Item no


aNFItem da MATXFIS

MaFisLoad(cRefCols,aCols[nX][nY],nX) // Carrega o valor do campo do aCols


para a referencia no aNfItem da MATXFIS

EndIf

Next nY

MaFisEndLoad( nX , 2 ) // Encerra a carga do Item

Next nX

MATXFIS Guia de Utilizao - TOTVS - 2013


24
MATXFIS Guia de Utilizao

2 ) Carregando um item para a MATXFIS a partir dos dados de um registro da tabela SD2.

Local aRefImpos := MaFisRelImp('MT100',{"SD2"})

MaFisIniLoad(Len(aCols)) // a cada linha includa do aCols carrega um novo item no aNFItem e a


seguir carrega os dados da tabela SD2

For nX := 1 To Len(aRefImpos)

MaFisLoad(aRefImpos[nX][3],SD2->(FieldGet(FieldPos(aRefImpos[nX][2]))),Len(aColsX))

Next nX

MaFisEndLoad(Len(aCols),2)

MATXFIS Guia de Utilizao - TOTVS - 2013


25
MATXFIS Guia de Utilizao

3 ) Gerao da Nota Fiscal de Sada pelo Faturamento SIGAFAT MATA461.PRX

dbSelectArea("SC5")
If nItem == 1

MaFisIni(cCliEnt,SC5->C5_LOJAENT,If(SC5->C5_TIPO$'DB',"F","C"),SC5->C5_TIPO
,SC5->C5_TIPOCLI,aRelImp,, ,,'MATA461',,,,cGrpCliTrb,,,,aTransp,,,SC6->C6_NUM
,SC5->C5_CLIENTE,SC5->C5_LOJACLI) //Carrega o Cabealho apenas 1 Vez

EndIf

// Carrega o Item para o aNFItem da MATXFIS passando como parmetro (aItemLoad), os dados das
variveis do MATA461 e das tabelas SC6, SB1 e SF4.

MaFisIniLoad(nItem,{ SC6->C6_PRODUTO,; //IT_PRODUTO


SC6->C6_TES,; //IT_TES
If(SF4->F4_ISS=="S", SC6->C6_CODISS , " " ) ,; //IT_CODISS
aPvlNfs[nItem][4],; //IT_QUANT
SC6->C6_NFORI,; //IT_NFORI
SC6->C6_SERIORI,; //IT_SERIORI
SB1->(RecNo()),; //IT_RECNOSB1
SF4->(RecNo()),; //IT_RECNOSF4
nRecOri ,; //IT_RECORI
SC6->C6_LOTECTL,; //IT_LOTECTL
SC6->C6_NUMLOTE }) //IT_NUMLOTE

MaFisTes(SC6->C6_TES,SF4->(RecNo()),nItem)

If (SuperGetMV("MV_ISSPRG",,"N") == "S")

MaFisLoad("IT_VALMERC",SC6->C6_VALOR,nItem)

EndIf

MaFisLoad("IT_VALMERC",aRateio[RT_PRECOIT][3]+aRateio[RT_PRECOIT][4],nItem)
MaFisLoad("IT_PRCUNI",aRateio[RT_PRECOIT][1],nItem)
MaFisLoad("IT_VLR_FRT",aRateio[RT_VLR_FRT],nItem)
MaFisLoad("IT_FRETE",aRateio[RT_FRETE],nItem)
MaFisLoad("IT_SEGURO",aRateio[RT_SEGURO],nItem)
MaFisLoad("IT_DESPESA",aRateio[RT_DESPESA],nItem)
MaFisLoad("IT_AUTONOMO",aRateio[RT_FRETAUT],nItem)
MaFisLoad("IT_DESCONTO",aRateio[RT_PRECOIT][4],nItem)
MaFisLoad("IT_PESO",SB1->B1_PESO,nItem)
MaFisRecal("",nItem)
....

MATXFIS Guia de Utilizao - TOTVS - 2013


26
MATXFIS Guia de Utilizao

2.9 MaFisAdd(cProduto, cTes, nQtd, nPrcUnit, nDesconto, cNFOri, cSEROri, nRecOri,


nFrete, nDespesa, nSeguro, nFretAut, nValMerc, nValEmb, nRecSB1, nRecSF4,
cNItem, nDesNTrb, nTara, cCfo, aNfOri, cConcept, nBaseVeic, nPLote, nPSubLot,
nAbatIss)

Descrio da funo:

Assim como a funo MaFisIniLoad(), a funo MaFisAdd() inclui um novo item no array aNFItem da
MATXFIS, contudo ela no somente inclui o novo item mas tambm dispara o calculo de TODOS os impostos,
atualiza os valores do cabealho e dos folders livro fiscal e Impostos a cada chamada da funo, devido a
estas caractersticas ela leva mais tempo do que a funo MaFisIniLoad() e deve ser usada somente em
contextos onde a atualizao de todos os demais dados fora do item (Cabealho, Folders do Rodap dos
documentos Fiscais, Refreshs, etc) devam ocorrer obrigatoriamente item a item, sendo indicada a principio
para processos onde o documento a ser gerado possua apenas um item, ou seja, se NO necessitar que
todas esta operaes sejam realizadas item a item na aplicao, utilizar MaFisIniLoad(). Para que estas
operaes ocorram o maior numero de dados devem ser passados como parmetros, alguns, inclusive
obrigatrios, caso contrario os clculos no tero efeito.

Parmetros:

Ordem Parmetro Tipo Descrio


01 cProduto Caracter Cdigo do Produto ( Obrigatrio )
02 cTes Caracter Cdigo do TES ( Opcional )
03 nQtd Numrico Quantidade ( Obrigatrio )
04 nPrcUnit Numrico Preo Unitrio ( Obrigatrio )
05 nDesconto Numrico Valor do Desconto ( Opcional )
06 cNFOri Caracter Numero da NF Original ( Devoluo/Benef )
07 cSEROri Caracter Serie da NF Original ( Devoluo/Benef )
08 nRecOri Numrico RecNo da NF Original no arq SD1/SD2
09 nFrete Numrico Valor do Frete do Item ( Opcional )
10 nDespesa Numrico Valor da Despesa do item ( Opcional )
11 nSeguro Numrico Valor do Seguro do item ( Opcional )
12 nFretAut Numrico Valor do Frete Autnomo ( Opcional )
13 nValMerc Numrico Valor da Mercadoria ( Obrigatrio )
14 nValEmb Numrico Valor da Embalagem ( Opcional )
15 nRecSB1 Numrico RecNo do SB1
16 nRecSF4 Numrico RecNo do SF4
17 cNItem Caracter Numero do item Exemplo 01
18 nDesNTrb Numrico Despesas no tributadas (Portugal)
19 nTara Numrico Tara (Portugal)

MATXFIS Guia de Utilizao - TOTVS - 2013


27
MATXFIS Guia de Utilizao

20 cCfo Caracter CFOP


21 aNfOri Array Array para o calculo do IVA Ajustado (opcional)
22 cConcept Caracter Concepto
23 nBaseVeic Numrico Base Veiculo
24 nPLote Numrico Lote Produto
25 nPSubLot Numrico Sub-Lote Produto
26 nAbatIss Numrico Valor do Abatimento ISS

Retorno:

Ordem Retorno Tipo Descrio

01 nItem Numrico Numero do Item includo no aNFItem da MATXFIS

Como e onde Usar:

Deve ser utilizado preferencialmente em situaes onde apenas um item necessrio no documento fiscal,
como Notas de Complemento de ICMS, IPI, Notas de Frete, Resumos de despesas, e ou situaes onde a
cada item includo seja necessrio realizar o calculo de todos os impostos e atualizaes do cabealho,
evitar, de todas as formas utilizar dentro dos laos de itens que NO possuam esta exigncias, pois o tempo
consumido para suas operaes muito superior a da funo MaFisIniLoad() e aumenta exponencialmente
a cada item includo conforme as caractersticas do documento a ser gerado e os impostos configurados.

MATXFIS Guia de Utilizao - TOTVS - 2013


28
MATXFIS Guia de Utilizao

Exemplos de Uso:

Trecho de cdigo do programa PMSA203.PRW para obter os impostos calculados de um produto da tarefa.

SA1->( MsSeek(xFilial("SA1")+AF8->AF8_CLIENT+AF8->AF8_LOJA) )

If SB1->(MsSeek(xFilial("SB1")+cCodProd))

cTESProd := SB1->(B1_TS)
nQtdPeso := nQtdVend*SB1->B1_PESO

Endif

//Inicia a MATXFIS criando o cabealho array aNFCab

MaFisIni( AF8->AF8_CLIENT,; // 1-Cdigo Cliente/Fornecedor


AF8->AF8_LOJA,; // 2-Loja do Cliente/Fornecedor
"C",; // 3-C:Cliente , F:Fornecedor
"N",; // 4-Tipo da NF
SA1->A1_TIPO,; // 5-Tipo do Cliente/Fornecedor
Nil, Nil, Nil, Nil, "MATA461")

// Carrega o item com todos dados necessrios e roda o calculo de todos os impostos do documento

MaFisAdd( cCodProd,; // 1-Cdigo do Produto ( Obrigatrio )


cTESProd,; // 2-Cdigo do TES ( Opcional )
nQtdVend,; // 3-Quantidade ( Obrigatrio )
nPrecoUnit,; // 4-Preo Unitrio ( Obrigatrio )
0,; // 5-Valor do Desconto ( Opcional )
"",; // 6-Numero da NF Original ( Devoluo/Benef )
"",; // 7-Serie da NF Original ( Devoluo/Benef )
0,; // 8-RecNo da NF Original no arq SD1/SD2
0,; // 9-Valor do Frete do Item ( Opcional )
0,; // 10-Valor da Despesa do item ( Opcional )
0,; // 11-Valor do Seguro do item ( Opcional )
0,; // 12-Valor do Frete Autnomo ( Opcional )
nValTotItem,; // 13-Valor da Mercadoria ( Obrigatrio )
0) // 14-Valor da Embalagem ( Opcional )

MaFisAlt("IT_PESO", nQtdPeso , nItem) // Altera dado que no pode ser carregado no MaFisAdd

nValICM := MaFisRet(nItem, "IT_VALICM") //Retorno dos Impostos calculados ICMS e IPI.

nValIPI := MaFisRet(nItem, "IT_VALIPI")

MaFisEnd() // Finaliza a MATXFIS

MATXFIS Guia de Utilizao - TOTVS - 2013


29
MATXFIS Guia de Utilizao

2.10 MaFisLoad(cCampo , xValor , nItem)

Descrio da funo:

Carrega valores de impostos e demais contedos para os arrays internos da MATXFIS. Para que o contedo
seja armazenado nos elementos dos arrays necessrio informar na passagem do parmetro cCampo a
referncia fiscal a qual quer atualizar, a lista completa das referncias a serem utilizadas constam no fonte
MATXDEF.CH, as referncias com nomes iniciados por NF_ dizem respeito ao array aNFCab, array esttico
responsvel pelos dados do cabealho e as referencias iniciadas por IT_ ao array aNFItem, array esttico
responsvel pelos dados dos itens do documento fiscal.

Parmetros:

Ordem Parmetro Tipo Descrio


01 cCampo Caracter Referncia do campo, exemplo IT_VALMERC, NF_NATUREZA
02 xValor Todos Contedo da referncia fiscal a ser atualizada, o tipo do dado depende
do elemento nos arrays a ser atualizado
03 nItem Numrico Numero do item do documento, obrigatrio somente quando informar
no parmetro cCampo referencias IT_

Retorno:

Ordem Retorno Tipo Descrio


No h retorno para essa funo.

Como e onde Usar:

A funo deve ser utilizada para alimentar os arrays internos de cabealho e itens do documento fiscal na
MATXFIS em todas as situaes onde a atualizao for necessria, importante ressaltar que a funo NO
realiza nenhum calculo com os valores e ou contedos passados, somente atualiza os valores nos arrays,
muito til em interfaces de visualizao de documentos onde pode-se ler os dados da tabela e alimentar as
referncias fiscais da MATXFIS a partir desta tabela, muito utilizada tambm para carregar demais dados que
no constam na lista de parmetros das funes MaFisIni(), MaFisIniLoad() e MaFisAdd(). Em alguns casos
pode ser utilizada para Forar algum valor que possa divergir do calculo realizado pela MATXFIS, contudo,
o contexto deve ser muito bem estudado, pois qualquer outra funo que disparar um novo calculo da
MATXFIS APS a sua chamada poder em algumas situaes descartar o contedo passado e fazer
prevalecer o contedo calculado pela MATXFIS.

MATXFIS Guia de Utilizao - TOTVS - 2013


30
MATXFIS Guia de Utilizao

Exemplos de Uso:

1 ) Gerao de nota fiscal de sada pelo faturamento SIGAFAT MATA461.PRX

dbSelectArea("SC5")
If nItem == 1

MaFisIni(cCliEnt,SC5->C5_LOJAENT,If(SC5->C5_TIPO$'DB',"F","C"),SC5->C5_TIPO,
SC5->C5_TIPOCLI,aRelImp,,,,'MATA461',,,,cGrpCliTrb,,,,aTransp,,,SC6->C6_NUM,
SC5->C5_CLIENTE,SC5->C5_LOJACLI)
// Aps a MaFisIni() carrega a espcie da NF para o array cabealho aNFCab complementando o
que NO foi carregado acima
MaFisLoad( "NF_ESPECIE" , SF2->F2_ESPECIE )

EndIf
// Inclui um novo item no aNFItem

MaFisIniLoad(nItem,{ SC6->C6_PRODUTO,; //IT_PRODUTO


SC6->C6_TES,; //IT_TES
If(SF4->F4_ISS=="S", SC6->C6_CODISS , " " ) ,; //IT_CODISS
aPvlNfs[nItem][4],; //IT_QUANT
SC6->C6_NFORI,; //IT_NFORI
SC6->C6_SERIORI,; //IT_SERIORI
SB1->(RecNo()),; //IT_RECNOSB1
SF4->(RecNo()),; //IT_RECNOSF4
nRecOri ,; //IT_RECORI
SC6->C6_LOTECTL,; //IT_LOTECTL
SC6->C6_NUMLOTE }) //IT_NUMLOTE

MaFisTes(SC6->C6_TES,SF4->(RecNo()),nItem) // Carrega a TES para a Matxfis


// Funo do MATA461 que retorna um array com valores calculados conforme sua necessidade
para alimentar a MATXFIS
aRateio[RT_PRECOIT]:= MaPvPrcIt(aPvlNfs,nItem,lReajuste,aRateio,nValNeg,nAliqIss)
// Carrega para a MATXFIS os valores calculados pela funo MaPvPrcIt()
MaFisLoad("IT_VALMERC",aRateio[RT_PRECOIT][3]+aRateio[RT_PRECOIT][4],nItem)
MaFisLoad("IT_PRCUNI",aRateio[RT_PRECOIT][1],nItem)
MaFisLoad("IT_VLR_FRT",aRateio[RT_VLR_FRT],nItem)
MaFisRecal("",nItem) // Neste caso o calculo dos impostos disparado a partir dos valores carregados
acima
// Neste caso, APS o Recalculo disparado um PONTO DE ENTRADA que FORA um novo valor de ISS
If ( aEntry[EP_M460VISS] )

MaFisLoad("IT_VALISS",ExecBlock("M460VISS",.F.,.F.,MaFisRet(nItem,"IT_VALISS")),nItem)
EndIf

MaFisEndLoad(nItem,2) // Fecha o calculo do item e atualiza os totalizadores do cabealho

MATXFIS Guia de Utilizao - TOTVS - 2013


31
MATXFIS Guia de Utilizao

2 ) Carregando um item para a MATXFIS a partir dos dados de um registro da tabela SD2.

// Este array possui TODAS as referencias fiscais encontradas no X3_VALID da tabela SD2
Local aRefImpos := MaFisRelImp('MT100',{"SD2"})
// a cada linha includa do aCols carrega um novo item no aNFItem e a seguir carrega os dados da
tabela SD2
MaFisIniLoad(Len(aCols))
For nX := 1 To Len(aRefImpos) // Roda TODAS as referencia do array para carga

// Carrega o contedo da tabela SD2 para a referencia fiscal no array interno da MATXFIS
MaFisLoad( aRefImpos[nX][3] , SD2->( FieldGet( FieldPos( aRefImpos[nX][2] ) ) ) ,
Len(aColsX) )

Next nX
MaFisEndLoad(Len(aCols),2)

3 ) Visualizao de um pedido de compras SIGACOM MATA120.PRX

For nX := 1 to Len(aCols) // Roda todos os Itens do Pedido de Compras

MaFisIniLoad(nX,,.T.) // nX representa o Item do aCols lido dentro do lao e acrescenta o


item em branco no aNFItem MATXFIS.
For nY := 1 To Len(aHeader) // Roda todos os campos do aCols atravs do aHeader para
carregar cada um para o aNFItem

cValid := AllTrim(UPPER(aHeader[nY][6]))
cRefCols := MaFisGetRf(cValid)[1] // Busca na MATXFIS e armazena a referencia fiscal
do campo na varivel cRefCols
If !Empty(cRefCols) .And. MaFisFound("IT",nX) // Verifica a existncia do Item no
aNFItem da MATXFIS

MaFisLoad(cRefCols,aCols[nX][nY],nX) // Carrega o valor do campo do aCols


para a referencia no aNfItem da MATXFIS

EndIf

Next nY
MaFisEndLoad( nX , 2 ) // Encerra a carga do Item

Next nX

MATXFIS Guia de Utilizao - TOTVS - 2013


32
MATXFIS Guia de Utilizao

2.11 MaFisEndLoad(nItem , nTipo)

Descrio da funo:

Finaliza a carga do item do documento fiscal na MATXFIS e atualiza os totalizadores do cabealho do


documento fiscal, a atualizao dos totalizadores do cabealho ocorre conforme o tipo informado no
parmetro nTipo da funo.

Parmetros:

Ordem Parmetro Tipo Descrio


01 nItem Numrico Numero do Item a ser finalizado
Tipo da atualizao do item:
1 (DEFAULT) Limpa os totalizadores do cabealho, refaz a soma de
todos os itens do ANFItem e atualiza novamente o cabealho com esta
02 nTipo Numrico soma.
2 Executa apenas a soma do item passado no parmetro nItem para
atualizao do cabealho.
3 No executa a atualizao do cabealho.

Retorno:

Ordem Retorno Tipo Descrio


No h retorno para essa funo.

Como e onde Usar:

Usar dentro do lao dos itens da aplicao sempre que o item for carregado pela funo MaFisIniLoad(),
fechando a carga do item por esta funo. Extremamente importante ressaltar que para este caso a opo
indicada do parmetro nTipo deve ser igual a 2, pois como a opo nTipo igual a 1 ou sem a passagem do
nTipo a funo ASSUME o DEFAULT 1, a aplicao perder a performance de forma Exponencial em razo
desta opo ( nTipo = 1 ), limpar os valores do cabealho e varrer o aNFItem para somar TODOS os itens para
recompor novamente os valores do cabealho no aNFCab, por isso, muito cuidado ao utilizar esta opo e
us-la somente em contextos onde seja absolutamente necessrio.

MATXFIS Guia de Utilizao - TOTVS - 2013


33
MATXFIS Guia de Utilizao

Exemplos de Uso:

For nX := 1 to Len(aCols) // Roda todos os Itens do Pedido de Compras

MaFisIniLoad(nX,,.T.) // nX representa Item do aCols lido dentro do lao e acrescenta o item


em branco no aNFItem MATXFIS.

For nY := 1 To Len(aHeader) // Roda todos os campos do aCols atravs do aHeader para


carregar cada um para o aNFItem

cValid := AllTrim(UPPER(aHeader[nY][6]))

cRefCols := MaFisGetRf(cValid)[1] // Busca na MATXFIS e armazena a referencia fiscal


do campo na varivel cRefCols

If !Empty(cRefCols) .And. MaFisFound("IT",nX) // Verifica a existncia do Item no


aNFItem da MATXFIS

MaFisLoad(cRefCols,aCols[nX][nY],nX) // Carrega o valor do campo do aCols


para a referencia no aNfItem da MATXFIS

EndIF

Next nY

MaFisEndLoad( nX , 2 ) // Fecha o calculo do item e atualiza os totalizadores do cabealho

Next nX

MATXFIS Guia de Utilizao - TOTVS - 2013


34
MATXFIS Guia de Utilizao

2.12 MaFisRet(nItem , cCampo)

Descrio da funo:

Retorna o contedo (no caso de valores de impostos, os valores j calculados) da referncia fiscal informada
no parmetro cCampo, ao informar referncias IT_ e LF_ os valores retornados sero do item informado
no parmetro nItem, array interno aNFItem, e referncias NF_ retornaro contedos do array interno
aNFCab e dispensam a passagem do nItem. Consulte o fonte MATXDEF.CH para encontrar as referencias
fiscais possveis para o uso.

Parmetros:

Ordem Parmetro Tipo Descrio


01 nItem Numrico Numero do item do array aNfItem Obrigatrio para referncias
IT_ e LF em cCampo
02 cCampo Caracter Referencia do campo que deseja obter o valor ou contedo dos
array aNFCab e aNFItem, informar NF_?????? para referncias
do cabealho e IT_?????? e LF_?????? para referncias dos
itens.

Retorno:

Ordem Retorno Tipo Descrio

01 xContedo Todos Contedo da referncia Fiscal nos array internos aNFCab e


da conforme aNFItem no momento da chamada da funo
referncia referncia
pesquisada

Como e onde Usar:

Utilizada praticamente em todos os tipos de aplicao serve para obter o valor de impostos calculados pela
MATXFIS no momento da chamada da funo e ou qualquer outro contedo dos array de cabealho e item
internos da MATXFIS, pode ser utilizado tambm para obter valores do livro fiscal, referncia fiscal LF_, til
para obter valores como o Valor Contbil e demais valores que no so prprios do item.

MATXFIS Guia de Utilizao - TOTVS - 2013


35
MATXFIS Guia de Utilizao

Exemplos de Uso:

1 ) Trecho de cdigo para obter os impostos calculados do item

If MaFisFound("IT",nItem)

nValICM := MaFisRet(nItem, "IT_VALICM")


nValSOL := MaFisRet(nItem, "IT_VALSOL")
nValCMP := MaFisRet(nItem, "IT_VALCMP")
nValIPI := MaFisRet(nItem, "IT_VALIPI")
nValISS := MaFisRet(nItem, "IT_VALISS")
nValIRR := MaFisRet(nItem, "IT_VALIRR")
nValINSS := MaFisRet(nItem, "IT_VALINS")
nVlCofins := MaFisRet(nItem, "IT_VALCOF")
nValCSL := MaFisRet(nItem, "IT_VALCSL")
nValPIS := MaFisRet(nItem, "IT_VALPIS")
nValPS2 := MaFisRet(nItem, "IT_VALPS2")
nValCF2 := MaFisRet(nItem, "IT_VALCF2")

EndIf

2) Trecho de cdigo par obter os valores totais do documento Fiscal

@ 070,050 MSGET MaFisRet(,"NF_FRETE") PICTURE PesqPict("SF2","F2_FRETE",16,2) SIZE


50,07 OF oFolder:aDlg

@ 070,150 MSGET MaFisRet(,"NF_SEGURO") PICTURE PesqPict("SF2","F2_SEGURO",16,2) SIZE


50,07 OF oFolder:aDlg

@ 070,250 MSGET MaFisRet(,"NF_DESCONTO") PICTURE PesqPict("SF2","F2_DESCONTO",16,2)


SIZE 50,07 OF oFolder:aDlg

@ 085,050 MSGET MaFisRet(,"NF_AUTONOMO") PICTURE PesqPict("SF2","F2_FRETAUT",16,2) SIZE


50,07 OF oFolder:aDlg

@ 085,150 MSGET MaFisRet(,"NF_DESPESA") PICTURE PesqPict("SF2","F2_DESPESA",16,2) SIZE


50,07 OF oFolder:aDlg

MATXFIS Guia de Utilizao - TOTVS - 2013


36
MATXFIS Guia de Utilizao

3) Trecho de funo para Refresh no Folder de Despesas acessrias do Pedido de Compras

Function A120Refresh(aValores)

Local aArea := GetArea()

aValores[VALMERC] := MaFisRet(,"NF_VALMERC")

aValores[VALDESC] := MaFisRet(,"NF_DESCONTO")

aValores[FRETE] := MaFisRet(,"NF_FRETE")

aValores[TOTPED] := MaFisRet(,"NF_TOTAL")

aValores[SEGURO] := MaFisRet(,"NF_SEGURO")

aValores[VALDESP] := MaFisRet(,"NF_DESPESA")

aValores[TOTF1] := aValores[VALDESP]+aValores[SEGURO]

aValores[IMPOSTOS] := aClone( MaFisRet(,"NF_IMPOSTOS") )

RestArea(aArea)

Return .T.

MATXFIS Guia de Utilizao - TOTVS - 2013


37
MATXFIS Guia de Utilizao

2.13 MaFisSXRef(cAlias)

Descrio da funo:

Esta funo pesquisa a (Tabela) informada em cAlias no dicionrio de dados SX3 buscando no X3_VALID de
TODOS os campos desta tabela a expresso MaFisRef para obter a referncia fiscal NF_, IT_ ligada ao
campo e retornar um array contendo o nome do campo e a referncia fiscal ligada a ele, promovendo assim
uma espcie de homnimo, ou seja, para a aplicao desenvolvida (programa que utilizar a MATXFIS), em
muitos momentos vai se referir diretamente aos campos da tabela, Exemplo: D1_BASEICM, D2_VALIPI,
C6_TOTAL, contudo a MATXFIS sempre olhar para a referncia fiscal ligada a este campo e NUNCA ao
campo propriamente dito, o retorno desta funo lista no primeiro elemento o campo da tabela e em
seguida a referncia fiscal a qual ele ser processado na MATXFIS.

Parmetros:

Ordem Parmetro Tipo Descrio


01 cAlias Caracter Tabela do dicionrio de dados

Retorno:

Ordem Retorno Tipo Descrio

01 aReferencias array Array contendo TODAS a referncias fiscais da tabela informada em


cAlias
aReferencias[nX][1] = Campo da Tabela Exemplo D1_COD
aReferencias[nX][2] = Referncia Fiscal Exemplo IT_PRODUTO

Como e onde Usar:

Utilizado principalmente em conjunto com as funes MaFisIniLoad() e MaFisLoad() para promover uma
carga rpida de todas as referncias fiscais de uma tabela para a MATXFIS, usada tambm em muitos outros
contextos onde se faz necessrio um lista com todas as referncias fiscais possveis da tabela em uso na
aplicao.

MATXFIS Guia de Utilizao - TOTVS - 2013


38
MATXFIS Guia de Utilizao

Exemplos de Uso:

1) Trecho de cdigo do programa MATA103.PRW para a visualizao do Documento Fiscal

Static Function MontaaCols(...)

// Carrega para o array aAuxRefSD1 TODAS as Referencias fiscais da tabela SD1

Local aAuxRefSD1 := MaFisSXRef("SD1")

MaFisIniLoad(Len(aCols)) // Inicia a carga do item para MATXFIS a partir da tabela SD1

// A instruo a seguir varre todas as referncias fiscais do array aAuxRefSD1 para carregar a
MATXFIS pela MaFisLoad()

For nX := 1 To Len(aAuxRefSD1)

// aAuxRefSD1[nX][2] contem o nome da referncia fiscal Ex.: IT_PRODUTO e


aAuxRefSD1[nX][1] contem o nome do campo da tabela Ex.: D1_COD, logo a MaFisload() a
seguir carregar para a referncia IT_PRODUTO dentro do aNFItem da MATXFIS o
contedo do campo D1_COD

MaFisLoad( aAuxRefSD1[nX][2] , (cAliasSD1)->( FieldGet( FieldPos( aAuxRefSD1[nX][1] ) ) ) ,


Len(aCols) )

Next nX

MaFisEndLoad(Len(aCols),2)

....

MATXFIS Guia de Utilizao - TOTVS - 2013


39
MATXFIS Guia de Utilizao

2) Trecho de cdigo do programa MATA103x.prx para carregar os pedidos de compras para Nota Fiscal de
Entrada

Function FePC2Acol(nRecSC7,nItem,nSalPed,cItem,lPreNota,aRateio,aHeadSDE,aColsSDE,nPrUPreNf)

Local aRefSC7 := MaFisSXRef("SC7")

If MaFisFound()

MaFisIniLoad(nItem)

For nX := 1 To Len(aRefSc7)

Do Case

Case aRefSC7[nX][2] == "IT_QUANT"

MaFisLoad( aRefSc7[nX][2] , nSalPed , nItem )

Case aRefSc7[nX][2] == "IT_PRCUNI"

MaFisLoad( aRefSc7[nX][2] , NfePcReaj(SC7->C7_REAJUST,lReajuste)


, nItem )

OtherWise

MaFisLoad( aRefSc7[nX][2] , SC7->( FieldGet ( FieldPos (


aRefSc7[nX][1] ) ) ) , nItem )

EndCase

Next nX

MaFisEndLoad(nItem)

EndIf

MATXFIS Guia de Utilizao - TOTVS - 2013


40
MATXFIS Guia de Utilizao

2.14 MaFisRelImp(cProg,aAlias)

Descrio da funo:

Aplicao idntica a funo MaFisSXRef() (Vide a funo), porm pode ser usada para mais de um Alias ao
mesmo tempo , retornando um array com a referencias fiscais separadas para cada Alias informado no
parmetro aAlias.

Parmetros:

Ordem Parmetro Tipo Descrio


01 cProg Caracter Reservado sem uso no momento, NO necessita ser informado
02 aAlias Array Array contendo os alias dos arquivos Exemplo: {SF1,SD1}

Retorno:

Ordem Retorno Tipo Descrio

01 aReferencias array Array contendo TODAS a referncias fiscais da tabela informada em


aAlias separados por Tabela
aReferencias[nX][1] = Alias da referncia Exemplo SD1
aReferencias[nX][2] = Campo da Tabela Exemplo D1_COD
aReferencias[nX][3] = Referncia Fiscal Exemplo IT_PRODUTO

Como e onde Usar:

Aplicao idntica a funo MaFisSXRef(), porm d preferncia ao uso desta funo quando for tratar mais
de uma tabela como o caso de tabelas que possuem cabealho e item, como o caso das tabelas SF1/SD1
e SF2/SD2.

MATXFIS Guia de Utilizao - TOTVS - 2013


41
MATXFIS Guia de Utilizao

Exemplos de Uso:

If aRelImp == Nil

aRelImp := MaFisRelImp("MT100",{"SF2","SD2"})

EndIf

dbSelectArea("SF2")

For nY := 1 To Len(aRelImp)

If aRelImp[nY][1] == "SF2"

MaFisLoad( aRelImp[nY][3] , SF2->(FieldGet(FieldPos( aRelImp[nY][2] ) ) ) )

EndIf

Next nY

MaFisIniLoad(nItemNf2,Nil,.T.)

For nZ := 1 To Len(aRelImp)

If aRelImp[nZ][1] == "SD2"

MaFisLoad( aRelImp[nZ][3],SD2->(FieldGet(FieldPos( aRelImp[nZ][2] ) ) ) , nItemNF2 )

EndIf

Next nZ

MaFisEndLoad(nItemNf2,2)

MATXFIS Guia de Utilizao - TOTVS - 2013


42
MATXFIS Guia de Utilizao

2.15 MaFisRef(cReferencia , cProg , xValor)

Descrio da funo:

A Funo MaFisRef() foi desenvolvida para integrar a MATXFIS com programas que possuam interface para
manipulao de dados do documento fiscal, (Incluso, Alterao, Excluso e Visualizao). A funo tem a
responsabilidade de localizar a referncia fiscal nos arrays internos da MATXFIS, comparar o valor passado
pelo parmetro xValor com o valor constante nos arrays internos (aNFCab e ou aNFItem) e havendo
divergncia entre os contedos, realizar a alterao para o novo contedo de xValor, disparar o recalculo de
todos impostos ligados a referncia informada e atualizar os novos contedos na varivel PRIVATE aCols da
aplicao sincronizando assim o contedo dos arrays internos da MATXFIS com as variveis da aplicao, ou
seja, para utilizar esta funo obrigatrio que haja uma interface onde exista uma MsGetDados() para os
itens da aplicao com as variveis aHeader e aCols disponveis. O uso convencional desta funo se d no
X3_VALID dos campos do dicionrio de dados SX3, Exemplo: X3_VALID do campo D1_VALIPI com MaFisRef(
"IT_VALIPI" , "MT100" , M->D1_VALIPI ) , contudo, nada impede que esta funo seja chamada diretamente
da prpria aplicao em um contexto adequado ao seu funcionamento.

Parmetros:

Ordem Parmetro Tipo Descrio


01 cReferencia Caracter Referncia Fiscal NF_ ou IT_ que conste no
arquivo MATXDEF.CH, exemplo:
IT_PRODUTO, NF_ESPECIE
02 cProg Caracter MT100
03 xValor Caracter/Numrico/Array/Lgico Contedo a ser carregado para a referncia
fiscal na MATXIFS, Exemplo: Get no aCols com o
valor do campo em memria:
M->D1_PRODUTO

Retorno:

Ordem Retorno Tipo Descrio

01 lOk Lgico .T. = Se a referncia fiscal foi encontrada e pode ser atualizada.
.F. = Se a referncia fiscal NO foi encontrada e ou atualizada.

MATXFIS Guia de Utilizao - TOTVS - 2013


43
MATXFIS Guia de Utilizao

Como e onde Usar:

Usar preferencialmente no X3_VALID dos campos das tabelas de cabealho e itens da aplicao que
resultaro no documento fiscal que ser processado, Exemplos em tabelas existentes: SF1/SD1 Nota Fiscal
de Entrada, SF2/SD2 Nota Fiscal de Sada, SC8 Cotaes de Compras, SC7 Pedido de Compras. Deve ser
chamada em TODOS os campos de impostos da tabela e demais campos que tenham uma referncia fiscal
NF_ ou IT_ compatvel na lista do fonte MATXDEF.CH. importante ressaltar que NENHUM imposto
deve ser calculado dentro da prpria aplicao, TODOS os impostos devem obrigatoriamente serem
calculados dentro da MATXFIS, por inmeras razes, dentre as quais, o fato de que as legislaes fiscais
esto em constante evoluo e a equipe fiscal deve concentrar a manuteno destas legislaes em um s
ponto, se impostos forem calculados nas aplicaes POR FORA, os clculos apresentaro distores em
relao a legislao atualizada. Toda vez que um NOVO imposto, regra, alquota, Margem, for implementado
em uma tabela, deve-se OBRIGATRIAMENTE criar o campo na tabela com o X3_VALID contendo a
MaFisRef e a referncia fiscal equivalente a nova implementao, caso a referncia NO EXISTA, a mesma
deve ser criada pela equipe FISCAL, da mesma forma se o tratamento NO existir na MATXFIS para atender a
legislao, tambm deve ser solicitado o tratamento para a equipe Fiscal.

Exemplos de Uso:

Como a MaFisref() funciona, exemplo do MATA103.PRW Documento de Entrada

1) Chamadas de MaFisRef no X3_VALID da tabela SD1 Itens do documento de entrada.

Ao alterar o valor do campo D1_TOTAL no aCols da MsGetDados, o X3_VALID disparado com a funo
MaFisRef(), internamente na MATXFIS so chamadas as 3 funes principais em sequncia:

MaFisRef() Verifica se a alterao possvel e se o item existe, chama a MaFisAlt() que chama a
MaFisrecal() e aps, atualiza todas as colunas do aCols que possuem MaFisRef no X3_VALID com os
valores recalculados pela MATXFIS a partir da alterao deste campo D1_TOTAL

MaFisAlt() Verifica se o contedo da referncia fiscal na MATXFIS diferente do contedo digitado no


aCols, se sim, atualiza o contedo na MATXFIS e chama a MaFisRecal() para calcular TODOS os impostos e
referncias ligadas a referncia alterada.

MATXFIS Guia de Utilizao - TOTVS - 2013


44
MATXFIS Guia de Utilizao

MaFisRecal() Recalcula TODOS Impostos e referncias ligadas a referncia alterada.

Aps clicar ENTER neste campo, estas 3 funes sero executadas, todas as colunas do aCols sero
atualizadas e tambm os demais objetos controlados pela MATXFIS, como o caso dos folders Livros
Fiscais e Impostos

MATXFIS Guia de Utilizao - TOTVS - 2013


45
MATXFIS Guia de Utilizao

2.16 MaFisAlt(cCampo,nValor,nItem,lNoCabec,nItemNao,lDupl,cRotina,lRecal)

Descrio da funo:

A funo MaFisAlt() altera o contedo da referncia fiscal informada em cCampo nos arrays internos aNFCab
e aNFItem da MATXFIS e dispara o recalculo de todos os impostos promovendo assim a atualizao de todas
as demais referncias fiscais relacionadas a ela, o recalculo dos impostos podem ocorrer ou no dependendo
do parmetro lRecal.

Parmetros:

Ordem Parmetro Tipo Descrio


01 cCampo Caracter Referncia Fiscal a ser alterada
02 nValor Numrico Conteudo
03 nItem Numrico Numero do item, s passado quando cCampo = IT_
04 lNoCabec Lgico Refaz o cabealho aNFCab. Se .T. limpa os totalizadores do aNFCab,
varre TODOS os itens e refaz a soma dos itens no cabealho, (Usar
somente em casos de EXTREMA necessidade, se .F. ou NO Informado
(DEFAULT), apenas soma o valor do item nos totalizadores do
cabealho aNFCab.
05 nItemNao Numrico Reservado MATXFIS
06 lDupl Lgico Se .T. fora recalculo e a alterao para contedo de nValor mesmo que
o contedo dos arrays internos seja o mesmo, apenas para a referncia
fiscal informada em cCampo igual a NF_
07 cRotina Caracter Nome da rotina
08 lRecal Lgico Executa o Recalculo dos impostos .T. ou .F. ( DEFAULT = .T.)

Retorno:

Ordem Retorno Tipo Descrio


No h retorno para essa funo.

MATXFIS Guia de Utilizao - TOTVS - 2013


46
MATXFIS Guia de Utilizao

Como e onde Usar:

Embora deva ser usada para todas as situaes onde seja necessrio alterar o contedo de uma referencia
fiscal mais a execuo do recalculo de todas as referencias fiscais ligadas a este contedo e atualizar as
somas do cabealho, importante ressaltar que esta operao exige muito mais tempo que APENAS alterar
o contedo de uma referencia fiscal utilizando MaFisLoad() , no caso do uso, o ideal ficar atento ao
desenhar uma aplicao para minimizar o uso da funo ao mximo afim de evitar o uso desnecessrio da
funo e com isso comprometer a performance da aplicao, principalmente em rotinas onde sejam
processados ou gerados vrios documentos fiscais de uma vez. Muita ATENO ao utilizar os parmetros
lNoCabec e lRecal, pois estes parmetros se .T., aumentam o tempo de execuo consideravelmente,
principalmente o lNoCabec que se aplicado dentro de laos de processamento de itens pode exponenciar o
tempo conforme a quantidade de itens por VARRER TODOS OS ITENS desde o primeiro no importando qual
o item esteja sendo alterado no momento.

Exemplos de Uso:

1) Uso comum para alterar as referencias fiscais de Frete, Despesa e Seguro no cabealho ou rodap do
documento fiscal, a chamada da funo alem de alterar o total das referencias no cabealho tambm far
o rateio do valor entre os itens do documento;

MaFisAlt("NF_FRETE",avalores[FRETE])

MaFisAlt("NF_DESPESA",avalores[VALDESP])

MaFisAlt("NF_SEGURO",avalores[SEGURO])

2) Alterando valores calculados na MATXFIS dos itens do documento fiscal com base nos valores gravados
de uma tabela

If (cAliasSD1)->D1_BASEICM > 0

MaFisAlt("IT_BASEICM",(cAliasSD1)->D1_BASEICM,Len(aCols))

MaFisAlt("IT_ALIQICM",(cAliasSD1)->D1_PICM,Len(aCols))

MaFisAlt("IT_VALICM",(cAliasSD1)->D1_VALICM,Len(aCols))

EndIf

MATXFIS Guia de Utilizao - TOTVS - 2013


47
MATXFIS Guia de Utilizao

3) Uso de um Ponto de Entrada do MATA461.PRX (Gerao de Notas Fiscais de Sada pra alterar o valor do
IPI, observar que o uso da funo FORA uma nova soma no cabealho do Documento Fiscal APS alterar a
referncia.

If ( aEntry[EP_M460IPT] )

VALORIPI := MaFisRet(nItem,"IT_VALIPI")

BASEIPI := MaFisRet(nItem,"IT_BASEIPI")

QUANTIDADE := MaFisRet(nItem,"IT_QUANT")

ALIQIPI := MaFisRet(nItem,"IT_ALIQIPI")

BASEIPIFRETE:= MaFisRet(nItem,"IT_FRETE")

// Fora a reconstruo dos totalizadores do aNFCab atravs do parmetro lNoCabec = .T.

MaFisAlt( "IT_VALIPI" , ExecTemplate("M460IPI",.F.,.F., {SC9->(RecNo()),nItem}) , nItem ,


.T. )

//Aps FORAR um novo valor de IPI pelo P.E., recarrega novamente os valores de base e
alquota para a MATXFIS

MaFisLoad("IT_BASEIPI",BASEIPI,nItem)

MaFisLoad("IT_ALIQIPI",ALIQIPI,nItem)

MaFisLoad("IT_FRETE",BASEIPIFRETE,nItem,"11")

EndIf

MATXFIS Guia de Utilizao - TOTVS - 2013


48
MATXFIS Guia de Utilizao

2.17 MaFisDel( nItem , lDelete)

Descrio da funo:

A funo MaFisDel() marca ou desmarca como deletado, o item no array interno aNFItem da MATXFIS,
utilizado para SINCRONIZAR o array aCols de interfaces de digitao de documentos fiscais com o array
statico aNFItem da MATXFIS, quando o item marcado como deletado no aCols da interface necessrio
que na MATXFIS o aNFItem tambm seja deletado, e se a tecla Delete for acionada novamente para
recuperar o item deletado no aCols, o ANFItem tambm deve ser restaurado.

Parmetros:

Ordem Parmetro Tipo Descrio


01 nItem Numrico Numero do item no aCols e no array aNfItem
02 lDelete Lgico .T. -> Deleta o item / .F. -> Ativa o item (desmarca a deleo)
normalmente este contedo clonado da ultima posio do array aCols
controlado pela MsGetDados()

Retorno:

Ordem Retorno Tipo Descrio


No h retorno para essa funo.

Como e onde Usar:

Usar em TODAS as aplicaes desenvolvidas para a digitao de documentos fiscais, normalmente as


aplicaes desenvolvidas para este fim utilizam MsGetDados() para controle dos itens e por consequncia
utilizam uma varivel para armazenamento destes itens, normalmente batizada como aCols, a chamada da
funo MaFisdel() deve ser colocada na funo que trata a deleo do item passada no parmetro para este
fim na MsGetdados(), com isso o controle de deleo da MsGetDados(), sempre acionar a MaFisDel()
mantendo o SINCRONISMO entre aCols e aNFItem.

MATXFIS Guia de Utilizao - TOTVS - 2013


49
MATXFIS Guia de Utilizao

Exemplos de Uso:

1) Exemplo do programa de digitao de documentos fiscais de sada manual MATA920.PRW

// Trecho do cdigo que monta a MsGetdados com a passagem do parmetro da funo de deleo

oGetDados:=MSGetDados():New(aPosObj[2,1],aPosObj[2,2],aPosObj[2,3],aPosObj[2,4],nOpcx,'A920Li
nOk','A920TudOk','+D2_ITEM', (!l920Visual) ,,,,300,'A920FieldOk',,, 'A920Del' )

// Funo que chama a MaFisDel para o sincronismo

Function A920Del()

MaFisDel( n ,aCols[n][Len(aCols[n]) ] )

// N a linha editada no momento, e aCols[n][Len(aCols[n]) ] posio J marcada pela


MsGetdados() neste momento, .T. /.F.

Eval(bRefresh)

Return .T.

MATXFIS Guia de Utilizao - TOTVS - 2013


50
MATXFIS Guia de Utilizao

2.18 MaColsToFis( aHeader , aCols , nItem , cProg , lRecalc , lVisual , lDel , lSOItem)

Descrio da funo:

A funo MaColsToFis bem flexvel, pode ser utilizada para carregar TODOS os dados do aCols para o
aNFItem, esta carga pode ser de apenas um item ou de todos os itens, esta carga pode ser sem realizar
nenhuma outra atualizao (Totalizadores do cabealho e recalculo) ou realizando todo o recalculo e aps
atualizando todo o aCols com os novos valores calculados, deve ser utilizada com cautela para NO
comprometer a performance da aplicao.

Parmetros:

Ordem Parmetro Tipo Descrio


01 aHeader Array Varivel com a estrutura dos campos da tabela aHeader
02 aCols Array Varivel com a estrutura de contedo dos campos aCols
03 nItem Numrico Numero do item a ser carregado (CUIDADO! Se no for informado
carregar TODOS os itens do aCols.) - DEFAULT TODOS OS ITENS DO
ACOLS
04 cProg Caracter Nome da rotina / programa - Exemplo MT100
05 lRecalc Lgico Indica se o recalculo dos impostos deve ser executado - DEFAULT .F.
06 lVisual Lgico Indica se apenas visual - DEFAULT .F.
07 lDel Lgico Indicia se o processo da funo ir considerar os itens deletados, ou
seja, com .T., e no aCols houver algum item deletado ele tambm ser
carregado para o aNFitem. - DEFAULT .F.
08 lSoItem Lgico Indica nTipo=2 na chamada da funo MaFisEndLoad(), ou seja, se .T.
chama a funo MaFisSomaIt() que atualiza as variveis de cabealho
(totalizadores) de acordo com as informaes nos itens. - DEFAULT .F.

Retorno:

Ordem Retorno Tipo Descrio


No h retorno para essa funo.

MATXFIS Guia de Utilizao - TOTVS - 2013


51
MATXFIS Guia de Utilizao

Como e onde Usar:

Deve ser utilizada toda vez que se quer carregar todas as referencias fiscais do aCols para a MATXFIS de uma
vez, por exemplo, ao invs de chamar repetidamente MaFisLoad() para cada referencia, isto tambm pode
ser feito para apenas um item ou TODOS os itens do aCols, Ateno! Deve-se ter extremo cuidado neste
caso, pois se esta funo estiver dentro de um For / Next do aCols e NO for informado o nItem no
parmetro da funo, o DEFAULT da funo ser carregar TODOS os itens do acols, fazendo com que se
dentro de um lao, a cada item lido no For / Next, TODO o acols ser rodado a cada item, aumentando o
TEMPO de forma EXPONENCIAL, por isso esteja atento para utilizar a funo SEM informar o nitem, apenas
FORA dos laos do aCols, outro parmetro da funo que tambm merece ateno o lRecalc, utilizar
somente quando for necessrio o recalculo pois o tempo aumentado significativamente quando ativado e
nem sempre necessrio, principalmente quando dentro de laos do aCols, mais 2 parmetros que podem
afetar o tempo de execuo da funo, lVisual e lSoItem, o lVisual se ativado (.T.), no far a atualizao dos
totalizadores do cabealho na MATXFIS atravs do array aNFCab, com isso, a execuo ser mais rpida,
quando porm estiver .F. ou NO for informado, DEFAULT .F., o parmetro lSoItem ser consultado, se .F.
(DEFAULT) a funo somar o item ou os itens que estiverem sendo processados e atualizar o cabealho
(aNFCab) somando TODOS os itens, se .T. somente o item informado em nItem ser somado ao cabealho.
Logo, devido a sua FLEXIBILIDADE de uso, muito importante utilizar esta funo no contexto correto, pois o
TEMPO de execuo pode variar muito dependendo da forma que for configurada.

Exemplos de Uso:

1) Exemplo CORRETO de uso para carregar um item para MATXFIS

//A cada item carregar para a MATXFIS o (nItem) para a MATXFIS e executar o Recalculo e soma do
cabealho.

For nItem := 1 to Len(aCols)

MaColsToFis(aHeader,aCols,nItem,"MT100", .T. , .F. , , . T. )

Next nItem

MATXFIS Guia de Utilizao - TOTVS - 2013


52
MATXFIS Guia de Utilizao

2) Exemplo ERRADO de uso para carregar os itens do aCols para MATXFIS, ao chamar a funo dentro do
Lao SEM informar o nItem.

// Se o item NO for informado em uma carga de 100 itens por exemplo, a cada item a funo
RODAR os 100 itens novamente dentro da matxfis para realizar sua tarefa. Resultando 100x100 =
10000 + 100, ou seja, 10100 Vezes

For nItem := 1 to Len(aCols)

MaColsToFis( aHeader , aCols , , "MT100" , .T. , .F. , , .T. )

Next nItem

// Se o Item NO For informado e o lVisual for .F. e o lSoItem tambm for .F. , isso resultar que
em uma carga de 100 Itens, o aCols ser rodado 100 Vezes no For/Next, rodar mais 100 Vezes a
cada item dentro da funo MaColsToFis(), por esta entender que dever processar TODOS os itens
do aCols por NO ter sido Informado o item em nItem e Rodar mais 100 Vezes por item pelo fato
de lSoItem ter sido informado como .F. indicando que a soma do cabealho dever
obrigatoriamente ser refeita a CADA item com base no aNFItem que ser acrescido a cada rodado
do For/Next, o que resultar em algo aproximado a este calculo 100 ( For/Next) + 100 x 100 = 10000
(MaColstoFis) x 100 (Soma do aNFCab) = 100 + 100x100x100 = 1000100. Por isso importante ter
cuidado, pois possvel que ao desenvolver a aplicao POUCOS itens sejam usados e NO se
PERCEBA o prejuzo de PERFORMANCE.

For nItem := 1 to Len(aCols)

MaColsToFis( aHeader , aCols , , "MT100" , .T. , .F. , , .F. )

Next nItem

MATXFIS Guia de Utilizao - TOTVS - 2013


53
MATXFIS Guia de Utilizao

3) Se executado FORA do lao para se carregar TODOS os itens do aCols o uso ser CORRETO, porm no
to eficiente, pois se desperdiar o fato de a aplicao j ter rodado os itens no FOR/NEXT, o melhor uso
depender da necessidade de configurao dos demais parmetros (lRecalc,lVisual,lDel,lSoItem)

For nItem := 1 to Len(aCols)

... Processos da Aplicao

Next nItem

// Executando a carga de TODOS os Itens do aCols.

MaColsToFis( aHeader , aCols , , "MT100" , .T. )

Ficar atento quanto aos DEFAULTs dos parmetros da funo

MATXFIS Guia de Utilizao - TOTVS - 2013


54
MATXFIS Guia de Utilizao

2.19 MaFisToCols( aHeader , aCols , nItem , cProg )

Descrio da funo:

Essa funo atualiza as informaes do aCols com os dados das referencias fiscais j calculadas no array
interno aNFItem da MATXFIS

Parmetros:

Ordem Parmetro Tipo Descrio


01 aHeader Array Varivel com a estrutura dos campos da tabela aHeader
02 aCols Array Varivel com a estrutura de contedo dos campos aCols
03 nItem Numrico Numero do item a ser atualizado no aCols se NO informado o
DEFAULT ser atualizar TODOS os itens do aCols.
04 cProg Caracter Nome da rotina / programa Exemplo MT100

Retorno:

Ordem Retorno Tipo Descrio


No h retorno para essa funo.

Como e onde Usar:

Usar quando necessitar atualizar o contedo do aCols com o contedo j calculado da MATXFIS, o nico
cuidado a ser tomado neste caso quanto a passagem do parmetro nItem que se NO for passado a funo
assumir que TODO o aCols deve ser atualizado e no somente o item, por isso deve ser observado o
contexto em que se aplicar a chamada da funo.

MATXFIS Guia de Utilizao - TOTVS - 2013


55
MATXFIS Guia de Utilizao

Exemplos de Uso:

1) Trecho de cdigo onde aps os clculos terem sido realizados pela MATXFIS ao carregar um item do
pedido de compras para o documento de entrada, o item (aCols) do documento de entrada atualizado
com os clculos da MATXFIS

// Len(aCols) o item atual aps os clculos realizados anteriormente no cdigo. O Item atual ser
atualizado com o contedo da MATXFIS

MaFisToCols( aHeader , aCols , Len(aCols) , "MT100" )

2) Trecho de cdigo que atualiza TODOS os itens do aCols APS ser alterada a UF de Origem no cabealho
do documento Fiscal de Entrada, e com isso, o calculo de TODOS os itens da nota so afetados e devem ser
atualizados.

If (MaFisFound("NF") .And. !(MaFisRet(,cReferencia)==xValor)) .Or. lPedPre

MaFisAlt(cReferencia,xValor) // Alterando uma referencia Fiscal do cabealho aNFCab

If cReferencia == "NF_NATUREZA"

MaFisAlt("NF_UFORIGEM",cUfOri) // Altera a UF de Origem do Documento Fiscal

Endif

// O parmetro nItem NO sendo passado atualiza TODOS os itens do aCols

MaFisToCols(aHeader,aCols, ,"MT100")

EndIf

Eval(bGDRefresh)

Eval(bRefresh)

MATXFIS Guia de Utilizao - TOTVS - 2013


56
MATXFIS Guia de Utilizao

2.20 MaFisRecal( cCampo , nItem)

Descrio da funo:

A funo MaFisRecal() executa a pilha de funes do calculo de impostos, item a item. Ela utilizada
internamente pela MATXFIS para calcular todos os impostos atravs da chamada de outras funes que
devem estar na aplicao desenvolvida ou no dicionrio de dados SX3 (X3_VALID). Estas funes so:
MaFisRef(), MaFisAlt(), MaFisAdd() e MaColsToFis(), Contudo, ela pode ser utilizada fora da MATXFIS
(aplicao desenvolvida) em situaes muito especificas.

Parmetros:

Ordem Parmetro Tipo Descrio


01 cCampo Caracter Referncia do campo, ou (vazio) para que o recalculo seja feito para
todos os impostos.
02 nItem Numrico Numero do item do documento.

Retorno:

Ordem Retorno Tipo Descrio


No h retorno para essa funo.

Como e onde Usar:

Procurar conter o uso o mximo possvel, pois a funo de uso interno da MATXFIS e chamada pelas
funes de uso externo MaFisRef(), MaFisAlt(), MaFisAdd() e MaColsToFis(), contudo h casos onde o uso
dela pode ser a nica soluo para executar o calculo de TODOS impostos em uma ordem especifica e para
se obter os resultados dos clculos ANTES do termino do processo, como o caso do programa
MATA461.PRX (Gerao das Notas Fiscais de Sada) onde os valores calculados pela sua chamada interferem
diretamente nos valores que ainda sero usados na operao, como o caso de valores passados, avaliados
e ou validados em pontos de entrada num determinado ponto da rotina, em resumo, o seu uso deve ser
restringido ao mximo em situaes onde a chamada das demais funes mencionadas acima, podem
proporcionar a soluo sem o seu uso.

MATXFIS Guia de Utilizao - TOTVS - 2013


57
MATXFIS Guia de Utilizao

Exemplos de Uso:

1) Trecho de cdigo do programa MATA461.PRX onde necessrio o calculo de TODOS os impostos do item
ANTES da chamada de demais funes e pontos de entrada.

MaFisIniLoad(nItem,{ SC6->C6_PRODUTO,; //IT_PRODUTO


SC6->C6_TES,; //IT_TES
If(SF4->F4_ISS=="S", SC6->C6_CODISS , " " ) ,; //IT_CODISS
aPvlNfs[nItem][4],; //IT_QUANT
SC6->C6_NFORI,; //IT_NFORI
SC6->C6_SERIORI,; //IT_SERIORI
SB1->(RecNo()),; //IT_RECNOSB1
SF4->(RecNo()),; //IT_RECNOSF4
nRecOri ,; //IT_RECORI
SC6->C6_LOTECTL,; //IT_LOTECTL
SC6->C6_NUMLOTE }) //IT_NUMLOTE

MaFisLoad("IT_ABVLISS",SC6->C6_ABATISS,nItem)
MaFisTes(SC6->C6_TES,SF4->(RecNo()),nItem)
MaFisLoad("IT_VALMERC",aRateio[RT_PRECOIT][3]+aRateio[RT_PRECOIT][4],nItem)
MaFisLoad("IT_PRCUNI",aRateio[RT_PRECOIT][1],nItem)
MaFisLoad("IT_VLR_FRT",aRateio[RT_VLR_FRT],nItem)
MaFisLoad("IT_FRETE",aRateio[RT_FRETE],nItem)
MaFisLoad("IT_SEGURO",aRateio[RT_SEGURO],nItem)
MaFisLoad("IT_DESPESA",aRateio[RT_DESPESA],nItem)
MaFisRecal("",nItem) // Realiza o calculo de TODOS os impostos do Item

dbSelectArea("SC6")
For nY := 1 to Len(aFisGet)

If !Empty( SC6->(FieldGet(FieldPos(aFisGet[ny][2])))

MaFisAlt(aFisGet[ny][1] , SC6->(FieldGet(FieldPos(aFisGet[ny][2]))) ,nItem,.T.)

EndIf

Next nY
MaFisAlt("IT_ALIQISS",aRateio[RT_PRECOIT][5],nItem,.T.) // Alterada a Alquota do ISS depois do
calculo do Item
If ( aEntry[EP_M460VISS] ) // Ponto de Entrada para ALTERAR o valor calculado do ISS pela
MATXFIS

MaFisLoad("IT_VALISS",ExecBlock("M460VISS",.F.,.F.,MaFisRet(nItem,"IT_VALISS")),nItem)

EndIf

MATXFIS Guia de Utilizao - TOTVS - 2013


58
MATXFIS Guia de Utilizao

2.21 MaFisWrite( nOpc , cArea , nItem , lImpostos , lRemito)

Descrio da funo:

Funo utilizada para gravar os campos das tabelas do documento fiscal processado com o contedo das
referencias fiscais ( calculadas pela MATXFIS) referente aos campo da tabela, pode ser usada tambm para
ajustar todos os arredondamentos ANTES de iniciar a gravao dos campos.

Parmetros:

Ordem Parmetro Tipo Descrio

1 Efetua o ajuste de arredondamento de TODAS as referncias Fiscais


dos itens (aNFItem) e do cabealho (aNFCab)

2 Efetua a gravao nos campos da tabela informada em cArea, ou


01 nOpc Numrico se NO informado em cArea, do dbselectarea() aberto no momento da
chamada da funo de TODAS as referncias fiscais de Impostos
calculados na MATXFIS. Entende-se como TODAS as referencias Fiscais
neste contexto, as referencias encontradas no SX3 (X3_VALID) da
tabela carregada pela MaFisSXRef() ou MaFisRelImp()

02 cArea Caracter Alias- Tabela


Numero do Item caso o primeiro parmetro nOpc seja = 2, NO deve
03 nItem Numrico
ser passado quando a gravao for do cabealho, exemplo: SF1 / SF2

Parmetro valido somente para nOpc = 2

.F. (DEFAULT) Grava TODAS as referencias Fiscais dos campos da


04 lImpostos Lgico
tabela

.T. Grava apenas as referencias fiscais que contenham (BASIMP ,


ALQIMP, VALIMP)

Parmetro valido somente para nOpc = 2

.F. (DEFAULT) Grava TODAS as referencias Fiscais dos campos da


05 lRemito Lgico
tabela

.T. Grava apenas as referencias fiscais diferentes de (BASIMP ,


ALQIMP, VALIMP)

MATXFIS Guia de Utilizao - TOTVS - 2013


59
MATXFIS Guia de Utilizao

Retorno:

Ordem Retorno Tipo Descrio


No h retorno para essa funo.

Como e onde Usar:

Deve ser utilizada ao iniciar o processo de gravao do documento fiscal (Editado via interface de digitao
ou rotina de gerao de notas) para ajustar os arredondamentos de todas as referencias fiscais calculadas e
aps este passo gravar efetivamente todos os dados das referencias fiscais calculadas pela MATXFIS (aNFCab
e aNFItem) nos campos correspondentes das tabelas do documento fiscal, cabealho e itens, exemplo:
SF1/SD1, SF2/SD2.

MATXFIS Guia de Utilizao - TOTVS - 2013


60
MATXFIS Guia de Utilizao

Exemplos de Uso:

1) Trecho de cdigo do MATA103.PRW (Documento de Entrada) aps confirmar a incluso

ACTIVATE MSDIALOG ...

If nOpc == 1

MaFisWrite(1) // Ajusta o arredondamento de todos os valores das referencias fiscais


calculadas na MATXFIS
Begin Transaction

a103Grava( Params....

End Transaction

EndIf
Function a103Grava( ....

// gravando o cabealho da tabela SF1


SF1->F1_FILIAL := xFilial("SF1") // Gravando os campos da SF1 que NO sero tratados pela
MATXFIS
SF1->F1_DOC := cNFiscal
SF1->F1_STATUS := "A"
SF1->F1_SERIE := cSerie
SF1->F1_FORNECE := cA100For
SF1->F1_LOJA := cLoja
...

SF4->( MaFisWrite( 2 , "SF1" ) ) // Grava nos campos da tabela SF1 os contedos das
referencias Fiscais calculadas na MATXFIS
// Gravando os itens na tabela SD1
For nX := 1 to Len(aCols)

SD1->D1_FILIAL := xFilial("SD1")
SD1->D1_FORNECE := cA100For
SD1->D1_LOJA := cLoja
SD1->D1_DOC := cNFiscal
.
SF4->( MaFisWrite( 2 , "SD1" , nX ) ) // Grava nos campos da tabela SD1 as referencias
Fiscais do item calculado pela MATXFIS

Next nX
Return

MATXFIS Guia de Utilizao - TOTVS - 2013


61
MATXFIS Guia de Utilizao

2.22 MaFisAtuSF3(nCaso , cTpOper , nRecNF , cAlias , cPDV , Ccnae , cFunOrig ,nCD2)

Descrio da funo:

Embora o nome da funo seja MaFisAtuSF3(), hoje a funo grava alem da tabela SF3, as tabelas SFT e CD2,
utilizada sempre APS a gravao do documento fiscal para gravar todas as informaes geradas pelo
documento fiscal nas tabelas SF3 Livro Fiscal, SFT Livro Fiscal por Item da NF e CD2 Livro Digital de
Impostos SPED Fiscal. Deve ser utilizada tambm ao Excluir os documentos fiscais.

Parmetros:

Ordem Parmetro Tipo Descrio


01 nCaso Numerico Tipo da operao -> 1-Incluso / 2-Excluso
02 cTPOper Caracter Tipo de movimentao -> E-Entrada / S-Sada
03 nRecNF Numrico Recno do cabealho da nota fiscal
04 cAlias Caracter Alias da tabela principal
05 cPDV Caracter Para uso exclusivo dos mdulos LOJA Identificao do PDV que ser
gravado no campo SF3->F3_PDV
06 cCNAE Caracter Cdigo CNAE que ser gravado no campo SF3->F3_CNAE
07 cFunOrig Caracter Nome da rotina original que chamou a funo.
08 nCD2 Numrico DEFAULT = 0 - Aps gravar as tabelas SF3 e SFT grava a tabela CD2

Se igual a 1 atualiza SOMENTE a tabela CD2 - RELACAO DE IMP. DO


DOC.FISCAL SPEDFISCAL

Retorno:

Ordem Retorno Tipo Descrio


No h retorno para essa funo.

Como e onde Usar:

Utilizar na rotina de gravao do documento fiscal (editado ou gerado), logo aps a gravao do cabealho e
dos itens, tanto quando for INCLUIR o documento, como EXCLUIR,

NUNCA GRAVE AS TABELAS SF3, SFT E CD2 NA ROTINA DE GRAVAO DA APLICAO, USE SEMPRE A
MaFisAtuSF3()

MATXFIS Guia de Utilizao - TOTVS - 2013


62
MATXFIS Guia de Utilizao

Exemplos de Uso:

1) Trecho de cdigo do MATA103.PRW (Documento de Entrada) aps confirmar a incluso

Function a103Grava( ....

If INCLUI

// gravando o cabealho da tabela SF1


SF1->F1_FILIAL := xFilial("SF1") // Gravando os campos da SF1 que NO sero tratados
pela MATXFIS

SF1->F1_DOC := cNFiscal
SF1->F1_STATUS := "A"
SF1->F1_SERIE := cSerie
SF1->F1_FORNECE := cA100For
SF1->F1_LOJA := cLoja
...
SF4->( MaFisWrite( 2 , "SF1" ) ) // Grava nos campos da tabela SF1 os contedos das
referencias Fiscais calculadas na MATXFIS

// Gravando os itens na tabela SD1


For nX := 1 to Len(aCols)

SD1->D1_FILIAL := xFilial("SD1")
SD1->D1_FORNECE := cA100For
SD1->D1_LOJA := cLoja
SD1->D1_DOC := cNFiscal
.
SF4->( MaFisWrite( 2 , "SD1" , nX ) ) // Grava nos campos da tabela SD1 as referencias
Fiscais do item calculado pela MATXFIS

Next nX

.
MaFisAtuSF3( 1 , "E" , 0 , "SF1" ) // Na Incluso gravando as tabelas SF3, SFT e CD2

Else // Excluso do Documento de Entrada

.... Cdigo para a Excluso


MaFisAtuSF3( 2 , "E" , SF1->( RecNo() ) ) // Na excluso do Documento de entrada
EXCLUI as tabelas SF3, SFT e CD2

EndIf

Return

MATXFIS Guia de Utilizao - TOTVS - 2013


63
MATXFIS Guia de Utilizao

2.23 MaFisIniNF(nTipoNF,nRecSF,aOtimizacao,cAlias,lReprocess,cFunOrig)

Descrio da funo:

A funo carrega as notas fiscais de entrada e sada para a MATXFIS a partir das tabelas SF2/SD2
(Documentos de Sada) e SF1/SD1 (Documentos de Entrada), as referncias fiscais so lidas do dicionrio de
dados SX3 (X3_VALID) destas tabelas para efetuar a carga.

Parmetros:

Ordem Parmetro Tipo Descrio


01 nTipoNF Numrico Tipo de nota fiscal -> 1-Nota Fiscal de Entrada / 2-Nota Fiscal de Sada
02 nRecSF Numrico Recno do registro de cabealho da nota fiscal (SF1/SF2)
03 aOtimizacao Array Array de uso interno da Matxfis para cachear o uso da funo
MaFisSXRef()
04 cAlias Caracter Alias da tabela de cabealho Exemplo: SF1 SF2
05 lReprocess Lgico Indica se recalcula base dos impostos fiscais.
06 cFunOrig Caracter Nome da rotina original que chamou a funo.

Retorno:

Ordem Retorno Tipo Descrio


No h retorno para essa funo.

Como e onde Usar:

Deve ser utilizada para facilitar a leitura de documentos fiscais gravados de entrada e sada das tabelas
SF1/SD1 ou SF2/SD2, obter referencias fiscais destes documentos calculadas pela MATXFIS atravs da funo
MaFisRet(). O uso principal da funo est diretamente ligado ao programa MATA930.PRX
(Reprocessamento dos Livros Fiscais) onde o seu uso se d atravs do parmetro lReprocess que estando .T.
usa os dados gravados das tabelas SF1/SD1, SF2/SD2 como base para um NOVO CALCULO, quando este
novo calculo realizado a MATXFIS utiliza a situao ATUAL de TODOS os cadastros envolvidos na gerao
das notas fiscais, como TES, Cliente/Fornecedor, Exceo Fiscal, parmetros SX6, com isso possvel
reconstruir os Livros Fiscais (Tabelas SF3/SFT) com as novas configuraes dos cadastros.

MATXFIS Guia de Utilizao - TOTVS - 2013


64
MATXFIS Guia de Utilizao

Exemplos de Uso:

1) Exemplo de uma Funo para obter valores calculados pela MATXFIS de um determinado item de uma
nota fiscal

Function xMagValFis (nEntSai, nRecSF, cAliasSf, nItem, cReferencia)

Local nRet := 0
Default nRecSF := 0

MaFisIniNf ( nEntSai , nRecSf , , cAliasSf , .F. )

nRet := MaFisRet (nItem, cReferencia)


MaFisEnd ()

Return (nRet)

MATXFIS Guia de Utilizao - TOTVS - 2013


65
MATXFIS Guia de Utilizao

2) Trecho de Reprocessamento do cdigo usado no MATA930.PRX (Reprocessamento dos Livros Fiscais)

//Carrega a Nota Fiscal SF3 referente a Notas Fiscais de Entrada

MaFisIniNF( 1 ,IIf( lQuery , (cAlias)->SF1RECNO , SF1->(RecNo())) , @aOtimizacao , cAlias , ((cAlias)-


>F1_IMPORT<>"S") )

Begin Transaction

//Efetua a excluso dos registros referente a Nota Fiscal no SF3/SFT para serem gravados com os
NOVOS clculos

dbSelectArea("SF3")
dbSetOrder(1)
MsSeek(xFilial("SF3")+Dtos((cAlias)->F1_DTDIGIT)+(cAlias)->F1_DOC+(cAlias)->F1_SERIE+(cAlias)-
>F1_FORNECE+(cAlias)->F1_LOJA)
...
RecLock('SF3',.F.,.T.)
dbDelete()
MsUnlock()
FkCommit()

dbSelectArea("SFT")
dbSetOrder(3)
MsSeek(xFilial("SFT")+"E"+SF3->F3_CLIEFOR+SF3->F3_LOJA+SF3->F3_SERIE+SF3->F3_NFISCAL+SF3-
>F3_IDENTFT)
.
RecLock('SFT',.F.,.T.)
dbDelete()
MsUnlock()
FkCommit()
MaFisWrite()
MaFisAtuSF3(1,"E",IIf(lQuery,(cAlias)->SF1RECNO,SF1->(RecNo())),"","",cCNAE)
MAFISCDA(,,.T.,(cAlias)-
>("E"+F1_ESPECIE+F1_FORMUL+F1_DOC+F1_SERIE+F1_FORNECE+F1_LOJA),(cAlias)-
>F1_FORMUL,cAlias)

MAFISCDA(,2,,(cAlias)-
>("E"+F1_ESPECIE+F1_FORMUL+F1_DOC+F1_SERIE+F1_FORNECE+F1_LOJA),(cAlias)-
>F1_FORMUL,cAlias)

MATXFIS Guia de Utilizao - TOTVS - 2013


66
MATXFIS Guia de Utilizao

2.24 MaFisBrwLivro(oWnd,aPosWnd,lVisual,aRecSF3,lOpcVisual)

Descrio da funo:

Essa funo cria um objeto de browse para exibio dos demonstrativos de livros fiscais, este objeto pode
estar disponvel na dialog de digitao do documento fiscal em um Folder ou panel onde ser possvel
acompanhar os valores calculados ao digitar ou visualizar o documento.

Parmetros:

Ordem Parmetro Tipo Descrio


01 oWnd Objeto Objeto Listbox que ser montado
02 aPosWnd Array Array com as coordenadas do objeto
03 lVisual Lgico Define a edio do livro -> .F. Editavel / .T. No Editavel
04 aRecSF3 Array Array contendo os registros da tabela SF3 - Livro Fiscal
05 lOpcVisual Lgico Default .F. Uso reservado da MATXFIS

Retorno:

Ordem Retorno Tipo Descrio

01 oLivro Objeto Objeto browse com os dados do Livro Fiscal que ser gravado na
tabela SF3.

Como e onde Usar:

Usar em interfaces de digitao de documentos fiscais de entrada e sada, em todas as operaes, Inclui,
Alterar, Visualizar e excluir, necessrio que o ambiente da aplicao j tenha iniciado a MATXFIS.

MATXFIS Guia de Utilizao - TOTVS - 2013


67
MATXFIS Guia de Utilizao

Exemplos de Uso:

1) Trecho de cdigo do programa MATA103.PRW (documento de entrada) para criao do FOLDER Livros
Fiscais

DEFINE MSDIALOG oDlg FROM aSizeAut[7],0 TO aSizeAut[6],aSizeAut[5] TITLE STR0009 Of oMainWnd


PIXEL

oGetDados:=MSGetDados():New(aPosObj[2,1],aPosObj[2,2],aPosObj[2,3],aPosObj[2,4],nOpcx,'A103Lin
Ok','A103TudOk','+D1_ITEM',!l103Visual,,,,IIf(l103Class,Len(aCols),999),,,,IIf(l103Class,'AllwaysFalse()',"
NfeDelItem"))

oFolder:aDialogs[4]:oFont := oDlg:oFont

oLivro:=MaFisBrwLivro( oFolder:aDialogs[4] , {5,4,( aPosObj[3,4]-aPosObj[3,2] ) -


10,53},.T.,IIf(!l103Class,aRecSF3,Nil), IIf(!lWhenGet , IIf( l103Class , .T. , l103Visual ) , .T. ) )

aFldCBAtu[4] := {|| oLivro:Refresh()}

ACTIVATE MSDIALOG oDlg ON INIT (IIf(lWhenGet,oGetDados:oBrowse:Refresh(),Nil),; ..

O Objeto foi criado no Folder LIVROS FISCAIS do Documento de Entrada

MATXFIS Guia de Utilizao - TOTVS - 2013


68
MATXFIS Guia de Utilizao

2.25 MaFisRodap( nTipo, oJanela , aImpostos , apos , bValidPrg , lVisual , cFornIss ,


cLojaIss , aRecSE2 , cDirf , cCodRet , oCodRet , nCombo , oCombo , dVencIss ,
aCodR , cRecIss , oRecIss)

Descrio da funo:

Essa funo cria um objeto com o demonstrativo dos impostos calculados (Base, Alquota e Valor), este
objeto pode estar disponvel na dialog de digitao do documento fiscal em um Folder ou panel onde ser
possvel acompanhar os valores calculados ao digitar ou visualizar o documento fiscal. O Objeto tambm
permite que os impostos sejam editados no prprio browse clicando-se na Base e Valor do Imposto quando o
parmetro lVisual = .F. , tambm com esta configurao possvel incluir novos impostos atravs de uma
lista apresentada em uma nova dialog disparada ao clicar 2 vezes (DoubleClick) na primeira linha do Browse
na coluna Cdigo onde so apresentado trs pontos (...).

Parmetros:

Ordem Parmetro Tipo Descrio


01 nTipo Numrico Quebra: 1-Imposto+Alquota / 2-Imposto
02 oJanela Objeto Tela aonde ser montado o rodap.
03 aImpostos Array Relao dos impostos que devero ser apresentados (Este array deve
ser passado com os cdigos dos impostos.) OPCIONAL
04 aPos Array Array deve conter posio e tamanho da tela
05 bValidPrg B. Cd. Bloco de cdigo com a validao que dever ser executada na edio
dos campos. USAR para executar Refresh da MsGetdados() e outros
06 lVisual Lgico .T. caso seja apenas para visualizao. .F. para editar os impostos
07 cFornIss Caracter Cdigo do Fornecedor (para ISS) Fornecedor diferente do fornecedor
da Nota
08 cLojaIss Caracter Cdigo da Loja do Fornecedor (para ISS) Idem acima
09 aRecSE2 Array Array contendo informaes de Recno do SE2 (Ttulos a Pagar). Este
Recno() utilizado para posicionar no titulo no momento da
visualizao.
10 cDirf Caracter Gera DIRF para o ttulo. SE2->E2_DIRF
11 cCodRet Caracter Cdigo da reteno para gerao da DIRF. SE2->E2_CODRET
12 oCodRet Objeto Objeto oCodRet para refresh
13 nCombo Numero Varivel recebe o contedo de aOpcoes de oCombo
14 oCombo Objeto Objeto de combo para opes de Gera DIRF = 1-SIM/2-NO
15 dVencIss Data Vencimento do ISS
16 aCodR Array Contem todos os cdigos de retenes relacionados na nota
17 cRecIss Caracter Default = 1 Informa se recolhe o ISS 1-NAO/2-SIM
18 oRecIss Objeto Objeto de Recolhimento de ISS

MATXFIS Guia de Utilizao - TOTVS - 2013


69
MATXFIS Guia de Utilizao

Retorno:

Ordem Retorno Tipo Descrio

01 oImpostos Objeto Objeto com todos os impostos calculados no documento fiscal


editado e ou visualizado.

Como e onde Usar:

Muito til para visualizar os valores dos clculos dos impostos no ato da digitao ou visualizao de forma
resumida, possvel at editar os valores totais (Base e Valor) de cada imposto e a MATXFIS aps a edio
rateia os valores editados entre os itens, tambm possvel acrescentar impostos que NO foram calculados
automaticamente no documento. Recomendamos que toda aplicao a ser desenvolvida e ou aplicaes que
j existam SEM o uso desta funo, implementar a mesma.

MATXFIS Guia de Utilizao - TOTVS - 2013


70
MATXFIS Guia de Utilizao

Exemplos de Uso:

1) Trecho de cdigo do programa MATA103.PRW (documento de entrada) para criao do FOLDER


Impostos

DEFINE MSDIALOG oDlg FROM aSizeAut[7],0 TO aSizeAut[6],aSizeAut[5] TITLE STR0009 Of oMainWnd


PIXEL
.
oGetDados:=MSGetDados():New(aPosObj[2,1],aPosObj[2,2],aPosObj[2,3],aPosObj[2,4],nOpcx,'A103Li
nOk','A103TudOk','+D1_ITEM',!l103Visual,,,,IIf(l103Class,Len(aCols),999),,,,IIf(l103Class,'AllwaysFalse(
)',"NfeDelItem"))

oFolder:aDialogs[4]:oFont := oDlg:oFont

If l103Visual .And. Empty(SF1->F1_RECBMTO)

oFisRod := A103Rodape(oFolder:aDialogs[5])

ElseIf (SF1->(FieldPos("F1_FIMP"))>0 .And. SF1->F1_FIMP$'ST'.And. SF1->F1_STATUS='C' .And.


l103Class)

//Tratamento para bloqueio de alteraes na classificao de uma nota bloqueada e j


transmitida.

l103Visual := .T.

oFisRod :=MaFisRodape(nTpRodape,oFolder:aDialogs[5],,{5,4,( aPosObj[3,4]-aPosObj[3,2] )-


10,53} , @bIPRefresh , l103Visual , @cFornIss , @cLojaIss , aRecSE2 , @cDirf , @cCodRet ,
@oCodRet , @nCombo , @oCombo , @dVencIss , @aCodR , @cRecIss , @oRecIss )

Else

oFisRod := MaFisRodape(nTpRodape,oFolder:aDialogs[5],,{5,4,( aPosObj[3,4]-aPosObj[3,2] )-


10,53} , @bIPRefresh , l103Visual , @cFornIss , @cLojaIss , aRecSE2 , @cDirf , @cCodRet ,
@oCodRet , @nCombo , @oCombo , @dVencIss , @aCodR , @cRecIss , @oRecIss )

EndIf

aFldCBAtu[4] := {|| oLivro:Refresh()}

ACTIVATE MSDIALOG oDlg ON INIT (IIf(lWhenGet,oGetDados:oBrowse:Refresh(),Nil),; ..

MATXFIS Guia de Utilizao - TOTVS - 2013


71
MATXFIS Guia de Utilizao

Folder Impostos do programa MATA103.PRW controlado pela MaFisRodaPe()

Editando a base do Imposto ICMS

Incluindo um Novo imposto ao clicar (doubleClick) na primeira linha do browse.

MATXFIS Guia de Utilizao - TOTVS - 2013


72
MATXFIS Guia de Utilizao

Informaes de Verso
Rotina/Fonte Data/Hora ChangeSet
MatxFis.prw 24/01/2013 17:01:51 136306
MatxDef.ch 17/12/2012 11:40:00 130348

Elaborado por:

Alexandre Inacio Lemes


Demetrio Fontes De Los Rios

MATXFIS Guia de Utilizao - TOTVS - 2013


73

Você também pode gostar