MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização...

73

Transcript of MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização...

Page 1: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.
Page 2: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

2

1. INTRODUÇÃO ................................................................................................................................. Pag. 03

2. FUNÇÕES ........................................................................................................................................ 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

Page 3: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

3

1. INTRODUÇÃO

A MATXFIS.PRX é um programa que possui um conjunto de funções 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 legislação do país, sejam administrados e calculados por este programa, desta forma é possível

que as manutenções constantes na legislação sejam realizadas de forma mais rápida e eficiente, por ser feita

em um único ponto do sistema, com isso evita-se erros ao atualizar a legislação 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,

relatórios e outros. Com a centralização foi possível atualizar a legislação 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

REFERÊNCIA FISCAL, é chamado de referência fiscal uma DEFINE contida numa lista de DEFINES do fonte

MATXDEF.CH, a ideia é que cada referência fiscal leve um nome com um prefixo e um sufixo que possam

facilitar a identificação do seu conteúdo, exemplo: “NF_DESCONTO” – valor do desconto no cabeçalho da

nota, “IT_BASEIPI” – valor do IPI no item da nota, “LF_VALCONT” – Valor Contábil da nota que será gravado

no Livro Fiscal, cada referência fiscal é um DEFINE do MATXDEF.CH com um numero que corresponde a sua

posição nos arrays STATICS da MATXFIS e podem ser utilizados na passagem de parâmetros de todas as

funções disponíveis para a integração das aplicações x MATXFIS e dicionário de dados.

Este guia tem a intenção de explicar como desenvolver e dar manutenção em aplicações que utilizem o

motor de impostos MATXFIS de forma a garantir que o desenvolvimento seja realizado de forma correta e

com melhor desempenho possível, pois como o uso das funções são muito flexíveis, é natural que o mesmo

resultado seja obtido de inúmeras formas diferentes, onde a escolha da melhor forma é crucial para o

desempenho da aplicação.

O guia apresenta uma lista com 25 funções que cobrem todas as formas de integração da aplicação x

MATXFIS, cada uma das funções é apresentada com uma descrição resumida, lista de parâmetros, retorno,

como e onde utilizar e exemplos de uso.

Page 4: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

4

2. FUNÇÕES

Abaixo será descrito em detalhe todas as características e funcionamento das principais funções que

compõe a rotina MATXFIS contendo:

Descrição da função;

Uma breve descrição da função para que seja entendido o contexto da mesma.

Parâmetros;

Tabela contendo todas as Informações necessárias sobre os parâmetros recebidos da função.

Retorno;

Tabela contendo as Informações do retorno da função.

Como e onde usar;

Um texto explicativo informando e exemplificando como e onde poderá ser utilizado a função em questão.

Exemplo prático da função.

Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos

práticos/cenários utilizados dentro do ERP.

Page 5: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

5

2.1 MaFisFound (cReferencia , nItem)

Descrição da função:

Verifica a existência de elementos nos arrays aNFCab e aNFItem da MATXFIS. O aNFCab é um array estático

da MATXFIS responsável por armazenar os dados do cabeçalho do documento fiscal e o aNFItem o array

responsável por armazenar todos os itens do documento fiscal, conforme a passagem do parâmetro

cReferencia “NF” ou “IT” a função retorna .T. ou .F. se houver elementos nos Arrays.

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 cReferencia Caracter

“NF” – Pesquisa a existência de elementos no array aNFCab – Cabeçalho do Documento Fiscal

“IT” – Pesquisa a existência de elementos no array aNFItem – Itens do Documento Fiscal

02 nItem Numérico Verifica se o item passado no parâmetro existe no array

aNFItem caso o parâmetro cReferencia for passado como “IT”

Retorno:

Ordem Retorno Tipo Descrição

01

lFound

Lógico

.T. – Se for encontrado elemento no cabeçalho ou nos itens do documento fiscal

.F. – Caso não for encontrado elemento no cabeçalho ou nos itens do documento fiscal

Como e onde Usar:

Utilizar em programas que utilizam MATXFIS ou novos programas que pretendem fazer uso das funções

fiscais da matxfis para calcular impostos. Deve ser utilizada ANTES de iniciar a carga dos dados do

documento fiscal para a MATXFIS através das funções MaFisINI, MaFisAdd e MaFisIniLoad com o propósito

de verificar se os dados do cabeçalho 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. Também deve ser utilizada ANTES da chamada de qualquer função MATXFIS quando

em um contexto que não se tem certeza se os dados já foram ou não carregados para a MATXFIS. NUNCA

utilizar dentro de contextos onde mais de uma verificação seja necessária, como verificar se o documento

fiscal existe MaFisFound(“NF”) dentro de laços nos itens Whiles, For/Next, aEval(), até mesmo a consulta

por itens dentro dos laços MaFisFound(“IT”, N ) deve ser realizada somente quando NÃO se tem certeza da

existência do item, em contexto onde a existência do item é lógica, não utilizar.

Page 6: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

6

Exemplos de Uso:

If ! MaFisFound("NF")

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

EndIf

If MaFisFound("IT",N) – Validando a alteração de um item da MsGetDados()

através de função acionada por valid ou gatilho

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

EndIf

Page 7: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

7

2.2 MaFisSave()

Descrição da função:

Salva o estado atual (todos os dados do documento fiscal carregado na MATXFIS) para uma área temporária

com o propósito de liberar os arrays internos do mecanismo para utilização de um outro processo e ou

documento fiscal e após 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 é necessário

carregar um outro documento fiscal para o mecanismo se faz necessário alternar entre eles, e para isso o

uso desta função.

Parâmetros:

Ordem Parâmetro Tipo Descrição

Não são necessários parâmetros para essa função.

Retorno:

Ordem Retorno Tipo Descrição

Não há retorno para essa função.

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 situações como na consulta do histórico de produtos

ao incluir um pedido de compras onde é possível consultar os últimos pedidos do produto consultado, para

realizar esta consulta é necessário salvar os dados do pedido atual em uma área temporária, para que após a

consulta os dados possam ser restaurados e dar continuidade a edição do pedido, outro exemplo é na nota

fiscal de entrada (Documento de Entrada) onde é possível consultar todos os pedidos de compras vinculados

aquela nota fiscal de entrada.

Page 8: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

8

Exemplos de Uso:

Função 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

TEMPORÁRIA

MaFisEnd()

If !AtIsRotina("MACOMVIEW")

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

MaComView(aCols[n][nPosCod]) – função que consultará outros

pedidos de compras e abrirá novamente a MATXFIS

EndIf

EndIf

MaFisRestore() – RESTAURA OS DADOS ARMAZENADOS DO PEDIDO ATUAL DA

AREA TEMPORÁRIA PARA OS ARRAYS INTERNOS

Return

Page 9: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

9

2.3 MaFisRestore()

Descrição da função:

Restaura os arrays internos da MATXFIS contendo todos os dados do estado atual armazenado pela função

MaFisSave() da área temporária, vide a função MaFisSave(). É importante ressaltar que a MATXFIS trabalha

com apenas um documento fiscal por vez e quando por algum motivo é necessário carregar um outro

documento fiscal para o mecanismo se faz necessário alternar entre eles, e para isso o uso desta função em

conjunto com a função MaFisSave().

Parâmetros:

Ordem Parâmetro Tipo Descrição

Não são necessários parâmetros para essa função.

Retorno:

Ordem Retorno Tipo Descrição

Não há retorno para essa função.

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 situações como na consulta do histórico de produtos

ao incluir um pedido de compras onde é possível consultar os últimos pedidos do produto consultado, para

realizar esta consulta é necessário salvar os dados do pedido atual em uma área temporária, para que após a

consulta os dados possam ser restaurados e dar continuidade a edição do pedido, outro exemplo é na nota

fiscal de entrada (Documento de Entrada) onde é possível consultar todos os pedidos de compras vinculados

aquela nota fiscal de entrada.

Page 10: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

10

Exemplos de Uso:

Função 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

TEMPORÁRIA

MaFisEnd()

If !AtIsRotina("MACOMVIEW")

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

MaComView(aCols[n][nPosCod]) – função que consultará outros

pedidos de compras e abrirá novamente a MATXFIS

EndIf

EndIf

MaFisRestore() – RESTAURA OS DADOS ARMAZENADOS DO PEDIDO ATUAL DA

AREA TEMPORÁRIA PARA OS ARRAYS INTERNOS

Return

Page 11: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

11

2.4 MaFisClear()

Descrição da função:

Limpa todos os itens e zera todos totalizadores do cabeçalho dos arrays internos da MATXFIS. O aNFCab é

um array estático da MATXFIS responsável por armazenar os dados do cabeçalho do documento fiscal e o

aNFItem o array responsável por armazenar todos os itens do documento fiscal, a função 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 cabeçalho, como Cliente, Loja, Tipo da NF, UF, etc.

Parâmetros:

Ordem Parâmetro Tipo Descrição

Não são necessários parâmetros para essa função.

Retorno:

Ordem Retorno Tipo Descrição

Não há retorno para essa função.

Como e onde Usar:

Usar em momentos quando se faz necessário recomeçar a incluir itens no mesmo documento fiscal, ou seja,

se NÃO for necessário reiniciar todo o procedimento de carga de todo o documento fiscal. Se os dados do

cabeçalho do documento fiscal forem os mesmos, não há necessidade de finalizar toda a MATXFIS para

carrega-la novamente, com esta função é possível 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) são LIMPOS, preservando todos os demais dados da NFE já

digitados, ou seja, cada vez que se ativa a função para carregar pedidos de compras no documento de

entrada os itens são descartados do aCols para uma nova carga de novos pedidos, outro uso comum também

na rotina MAT103.PRW é quando o usuário está digitando uma nota fiscal de entrada e num dado momento

vai ao cabeçalho da nota e altera o Tipo da Nota de ’Normal’ para ‘Nota de Complemento’ neste caso por

exemplo, como uma nota de complemento tem características próprias deste modelo como ter apenas 1

item que seja amarrado em um outro documento original, se faz necessário limpar todo conteúdo digitado

antes da alteração do tipo da nota para reiniciar uma nova digitação compatível com o modelo de

complemento.

Page 12: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

12

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

Page 13: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

13

2.5 MaFisEnd()

Descrição da função:

Diferente da função MaFisClear() esta função finaliza todo o uso da MATXFIS limpando TODOS os seus arrays

internos

Parâmetros:

Ordem Parâmetro Tipo Descrição

Não são necessários parâmetros para essa função.

Retorno:

Ordem Retorno Tipo Descrição

Não há retorno para essa função.

Como e onde Usar:

Usar sempre que todo o processo de calculo, inclusão, alteração, exclusão, visualização e geração de

impostos for finalizado, independente de se após a finalização destes processos for iniciar um novo processo

ou não. Para o caso de iniciar um novo processo o uso é essencial, pois é necessário que os arrays internos e

mecanismos de refresh() sejam finalizados para não conflitar com os dados novo processo, para

simplesmente finalizar o processo o uso deve ser praticado para liberar a memória utilizada pelos arrays

internos que não tem mais utilidade, seu uso é praticamente obrigatório para finalizar todos os processos.

Page 14: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

14

Exemplos de Uso:

Trecho de código para obter o valor total do item com a incidência 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 cabeçalho na MATXFIS

nTotItem := MaFisRet(1,"IT_TOTAL") // obtém o valor total do item calculado pela matxfis com a

incidência dos impostos

MaFisEnd() // FINALIZA A OPERAÇÃO E LIMPA TODOS OS ARRAYS INTERNOS DA MATXFIS

Page 15: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

15

2.6 MaFisNFCab()

Descrição da função:

Retorna um array contendo todos os impostos calculados na MATXFIS no momento da chamada da função

com quebra por impostos + alíquotas

Parâmetros:

Ordem Parâmetro Tipo Descrição

Não são necessários parâmetros para essa função.

Retorno:

Ordem Retorno Tipo Descrição

01

aImpostosCalculados

array

Array contendo TODOS os impostos calculados pela MATXFIS até o momento da chamada da função.

Como e onde Usar:

Pode ser utilizado em casos onde a aplicação necessite em determinado ponto apresentar e ou utilizar como

referencia para cálculos no código, valores totalizados dos impostos calculados na operação pela MATXFIS, o

comum para esta situações é utilizarmos a função MaFisRet( ,'NF_VALICM') passando como parâmetro a

referência do Imposto que necessite no momento, contudo, em situações onde o uso do MaFisRet não seja

possível e ou não seja viável, pode se utilizar esta função como recurso.

Page 16: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

16

Exemplos de Uso:

Função para obter todos os impostos calculados pela MATXFIS até o momento

Function ImpostosdaNF()

Local aImpostos := {}

If MaFisFound("NF")

aTodosImpostos := MaFisNFCab()

EndIf

Return ( aTodosImpostos )

Page 17: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

17

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)

Descrição da função:

A função MaFisIni() é responsável por iniciar todo o processo da MATXFIS, ela é a função que forma o array

aNFCab (Cabeçalho do Documento Fiscal) através dos dados informados nos parâmetros passados pela

função, parâmetros SX6, dados da tabela de Cliente (SA1) e ou Fornecedor (SA2) e Natureza Financeira (SED),

com isso dando forma ao documento que será gerado

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 cCodCliFor Caracter Código 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 Relação de Impostos que suportados no arquivo

07 cTpComp Caracter Tipo de complemento

08 lInsere Lógico 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 função

11 cTipoDoc Caracter Tipo de documento

12 cEspecie Caracter Espécie do documento

13 cCodProsp Caracter Código e Loja do Prospect

14 cGrpCliFor Caracter Grupo Cliente

15 cRecolheISS Caracter Recolhe ISS

16 cCliEnt Caracter Código do cliente de entrega na nota fiscal de saída

17 cLojEnt Caracter Loja do cliente de entrega na nota fiscal de saída

18 aTransp Array Informações do transportador [01]-UF,[02]-TPTRANS

19 lEmiteNF Lógico Se esta emitindo nota fiscal ou cupom fiscal (Sigaloja)

20 lCalcIPI Lógico 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 parâmetros podem ser acrescentados a esta função, verificar o código fonte.

Retorno:

Ordem Retorno Tipo Descrição

Não há retorno para essa função.

Page 18: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

18

Como e onde Usar:

A função MaFisIni() tem que ser usada obrigatoriamente em qualquer operação que envolva a MATXFIS,

sempre deve ser utilizada ANTES da carga de qualquer Item, pois ela monta o cabeçalho (aNFCab) com dados

que interferem diretamente nos cálculos dos itens, e a arquitetura do código exige que o cabeçalho seja

formado antes da inclusão dos itens. Deve ser chamada apenas uma vez para cada documento fiscal. Quando

em alguns casos, há necessidade e ou possibilidade que dados do cabeçalho sejam alterados, como é o caso

de interfaces de inclusão de notas fiscais, é necessário chamar a função MaFisAlt() com a referencia do

cabeçalho que necessite ser alterada, MaFisAlt("NF_UFORIGEM", cNovoUF ) para refazer o array interno

(aNFCab) com a nova informação e conforme a referencia refazer os cálculos de todos os itens.

Page 19: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

19

Exemplos de Uso:

1 ) Geração de nota fiscal de saída 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 espécie da NF para o array cabeçalho

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 cabeçalho

Page 20: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

20

2 ) Visualização de um pedido de compras – SIGACOM – MATA120.PRX

// Carrega o cabeçalho do documento fiscal no aNFCab MATXFIS

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

// Laço 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

Page 21: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

21

3 ) Documento de entrada – SIGACOM - MATA103.PRW

// Trecho de código para validar a digitação dos dados no cabeçalho do documento de entrada na

Inclusão.

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 código 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

// .... códigos de construção da Dialog

ACTIVATE MSDIALOG oDlg

Page 22: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

22

2.8 MaFisIniLoad(nItem , aItemLoad , lEstorno)

Descrição da função:

A Função 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 básicos na

passagem do parâmetro aItemLoad estes dados serão carregados no novo item, Exemplo: Código do

Produto, TES ou Quantidade. Pode-se utilizar a função também para estornar os valores do item dos

totalizadores do cabeçalho (aNFCab) conforme necessidade da aplicação a ser desenvolvida, se o item

informado no parâmetro nItem já existir e o parâmetro lEstorno for passado como .T., os valores deste item

serão estornados dos elementos totalizadores do cabeçalho do documento fiscal (aNFCab).

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 nItem Numérico Item do Array ANFItem que deve ser inicializado

02

aItemLoad Array Array de otimização (Dados que podem ser carregados já na

criação do Item

[01] Caracter Código do produto

[02] Caracter Código da TES

[03] Numérico Valor do ISS do item

[04] Numérico Quantidade do Item

[05] Caracter Numero da NF Original

[06] Caracter Serie da NF Original

[07] Numérico RecNo do SB1

[08] Numérico RecNo do SF4

[09] Numérico RecNo da NF Original (SD1/SD2)

[10] Caracter Lote do Produto

[11] Caracter Sub-Lote Produto

03 lEstorno Lógico Se o Item já existir, se deve ou não estornar o valor dos

totalizadores do aNFCab

Retorno:

Ordem Retorno Tipo Descrição

Não há retorno para essa função.

Page 23: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

23

Como e onde Usar:

A Função MaFisIniLoad() é a melhor forma de acrescentar um item ao utilizar a MATXFIS e deve sempre ser

priorizada em relação ao uso da função MaFisAdd() por ser mais rápida, pois não executa o recalculo do item

a cada item carregado. Deve ser utilizada dentro dos laços dos itens da aplicação de forma que a cada item

lido no laço seja chamada a função passando o item atual como parâmetro do parâmetro nItem. Se

aplicação utiliza MsGetDados() e aCols para manipulação 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 situação.

Page 24: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

24

Exemplos de Uso:

1 ) Visualização de um pedido de compras – SIGACOM – MATA120.PRX

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

fiscal no aNFCab MATXFIS

// Laço 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 laço e acrescenta o

item em branco no aNFItem MATXFIS.

For nY := 1 To Len(aHeader) // Roda todos os campos do aCols através 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 existência 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

Page 25: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

25

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 incluída 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)

Page 26: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

26

3 ) Geração da Nota Fiscal de Saída 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 Cabeçalho apenas 1 Vez

EndIf

// Carrega o Item para o aNFItem da MATXFIS passando como parâmetro (aItemLoad), os dados das

variáveis 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)

....

Page 27: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

27

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)

Descrição da função:

Assim como a função MaFisIniLoad(), a função MaFisAdd() inclui um novo item no array aNFItem da

MATXFIS, contudo ela não somente inclui o novo item mas também dispara o calculo de TODOS os impostos,

atualiza os valores do cabeçalho e dos folders livro fiscal e Impostos a cada chamada da função, devido a

estas características ela leva mais tempo do que a função MaFisIniLoad() e deve ser usada somente em

contextos onde a atualização de todos os demais dados fora do item (Cabeçalho, 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 NÃO necessitar que

todas esta operações sejam realizadas item a item na aplicação, utilizar MaFisIniLoad(). Para que estas

operações ocorram o maior numero de dados devem ser passados como parâmetros, alguns, inclusive

obrigatórios, caso contrario os cálculos não terão efeito.

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 cProduto Caracter Código do Produto ( Obrigatório )

02 cTes Caracter Código do TES ( Opcional )

03 nQtd Numérico Quantidade ( Obrigatório )

04 nPrcUnit Numérico Preço Unitário ( Obrigatório )

05 nDesconto Numérico Valor do Desconto ( Opcional )

06 cNFOri Caracter Numero da NF Original ( Devolução/Benef )

07 cSEROri Caracter Serie da NF Original ( Devolução/Benef )

08 nRecOri Numérico RecNo da NF Original no arq SD1/SD2

09 nFrete Numérico Valor do Frete do Item ( Opcional )

10 nDespesa Numérico Valor da Despesa do item ( Opcional )

11 nSeguro Numérico Valor do Seguro do item ( Opcional )

12 nFretAut Numérico Valor do Frete Autônomo ( Opcional )

13 nValMerc Numérico Valor da Mercadoria ( Obrigatório )

14 nValEmb Numérico Valor da Embalagem ( Opcional )

15 nRecSB1 Numérico RecNo do SB1

16 nRecSF4 Numérico RecNo do SF4

17 cNItem Caracter Numero do item – Exemplo “01”

18 nDesNTrb Numérico Despesas não tributadas (Portugal)

19 nTara Numérico Tara (Portugal)

Page 28: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

28

20 cCfo Caracter CFOP

21 aNfOri Array Array para o calculo do IVA Ajustado (opcional)

22 cConcept Caracter Concepto

23 nBaseVeic Numérico Base Veiculo

24 nPLote Numérico Lote Produto

25 nPSubLot Numérico Sub-Lote Produto

26 nAbatIss Numérico Valor do Abatimento ISS

Retorno:

Ordem Retorno Tipo Descrição

01

nItem

Numérico

Numero do Item incluído no aNFItem da MATXFIS

Como e onde Usar:

Deve ser utilizado preferencialmente em situações onde apenas um item é necessário no documento fiscal,

como Notas de Complemento de ICMS, IPI, Notas de Frete, Resumos de despesas, e ou situações onde a

cada item incluído seja necessário realizar o calculo de todos os impostos e atualizações do cabeçalho,

evitar, de todas as formas utilizar dentro dos laços de itens que NÃO possuam esta exigências, pois o tempo

consumido para suas operações é muito superior a da função MaFisIniLoad() e aumenta exponencialmente

a cada item incluído conforme as características do documento a ser gerado e os impostos configurados.

Page 29: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

29

Exemplos de Uso:

Trecho de código 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 cabeçalho array aNFCab

MaFisIni( AF8->AF8_CLIENT,; // 1-Código 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 necessários e roda o calculo de todos os impostos do documento

MaFisAdd( cCodProd,; // 1-Código do Produto ( Obrigatório )

cTESProd,; // 2-Código do TES ( Opcional )

nQtdVend,; // 3-Quantidade ( Obrigatório )

nPrecoUnit,; // 4-Preço Unitário ( Obrigatório )

0,; // 5-Valor do Desconto ( Opcional )

"",; // 6-Numero da NF Original ( Devolução/Benef )

"",; // 7-Serie da NF Original ( Devolução/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 Autônomo ( Opcional )

nValTotItem,; // 13-Valor da Mercadoria ( Obrigatório )

0) // 14-Valor da Embalagem ( Opcional )

MaFisAlt("IT_PESO", nQtdPeso , nItem) // Altera dado que não 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

Page 30: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

30

2.10 MaFisLoad(cCampo , xValor , nItem)

Descrição da função:

Carrega valores de impostos e demais conteúdos para os arrays internos da MATXFIS. Para que o conteúdo

seja armazenado nos elementos dos arrays é necessário informar na passagem do parâmetro cCampo a

referência fiscal a qual quer atualizar, a lista completa das referências a serem utilizadas constam no fonte

MATXDEF.CH, as referências com nomes iniciados por “NF_” dizem respeito ao array aNFCab, array estático

responsável pelos dados do cabeçalho e as referencias iniciadas por “IT_” ao array aNFItem, array estático

responsável pelos dados dos itens do documento fiscal.

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 cCampo Caracter Referência do campo, exemplo “IT_VALMERC”, “NF_NATUREZA”

02 xValor Todos Conteúdo da referência fiscal a ser atualizada, o tipo do dado depende

do elemento nos arrays a ser atualizado

03 nItem Numérico Numero do item do documento, obrigatório somente quando informar

no parâmetro cCampo referencias “IT_”

Retorno:

Ordem Retorno Tipo Descrição

Não há retorno para essa função.

Como e onde Usar:

A função deve ser utilizada para alimentar os arrays internos de cabeçalho e itens do documento fiscal na

MATXFIS em todas as situações onde a atualização for necessária, é importante ressaltar que a função NÃO

realiza nenhum calculo com os valores e ou conteúdos passados, somente atualiza os valores nos arrays,

muito útil em interfaces de visualização de documentos onde pode-se ler os dados da tabela e alimentar as

referências fiscais da MATXFIS a partir desta tabela, muito utilizada também para carregar demais dados que

não constam na lista de parâmetros das funções MaFisIni(), MaFisIniLoad() e MaFisAdd(). Em alguns casos

pode ser utilizada para “Forçar” algum valor que possa divergir do calculo realizado pela MATXFIS, contudo,

o contexto deve ser muito bem estudado, pois qualquer outra função que disparar um novo calculo da

MATXFIS APÓS a sua chamada poderá em algumas situações descartar o conteúdo passado e fazer

prevalecer o conteúdo calculado pela MATXFIS.

Page 31: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

31

Exemplos de Uso:

1 ) Geração de nota fiscal de saída 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)

// Após a MaFisIni() carrega a espécie da NF para o array cabeçalho aNFCab complementando o

que NÃO 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

// Função 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 função 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, APÓS o Recalculo é disparado um PONTO DE ENTRADA que FORÇA 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 cabeçalho

Page 32: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

32

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

3 ) Visualização de um pedido de compras – SIGACOM – MATA120.PRX

// Este array possui TODAS as referencias fiscais encontradas no X3_VALID da tabela “SD2”

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

// a cada linha incluída 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 conteúdo 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)

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 laço e acrescenta o

item em branco no aNFItem MATXFIS.

For nY := 1 To Len(aHeader) // Roda todos os campos do aCols através 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 variável cRefCols

If !Empty(cRefCols) .And. MaFisFound("IT",nX) // Verifica a existência 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

Page 33: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

33

2.11 MaFisEndLoad(nItem , nTipo)

Descrição da função:

Finaliza a carga do item do documento fiscal na MATXFIS e atualiza os totalizadores do cabeçalho do

documento fiscal, a atualização dos totalizadores do cabeçalho ocorre conforme o tipo informado no

parâmetro nTipo da função.

Parâmetros:

Retorno:

Ordem Retorno Tipo Descrição

Não há retorno para essa função.

Como e onde Usar:

Usar dentro do laço dos itens da aplicação sempre que o item for carregado pela função MaFisIniLoad(),

fechando a carga do item por esta função. Extremamente importante ressaltar que para este caso a opção

indicada do parâmetro nTipo deve ser igual a 2, pois como a opção nTipo igual a 1 ou sem a passagem do

nTipo a função ASSUME o DEFAULT 1, a aplicação perderá a performance de forma Exponencial em razão

desta opção ( nTipo = 1 ), limpar os valores do cabeçalho e varrer o aNFItem para somar TODOS os itens para

recompor novamente os valores do cabeçalho no aNFCab, por isso, muito cuidado ao utilizar esta opção e

usá-la somente em contextos onde seja absolutamente necessário.

Ordem Parâmetro Tipo Descrição

01 nItem Numérico Numero do Item a ser finalizado

02 nTipo Numérico

Tipo da atualização do item: 1 – (DEFAULT) Limpa os totalizadores do cabeçalho, refaz a soma de todos os itens do ANFItem e atualiza novamente o cabeçalho com esta soma. 2 – Executa apenas a soma do item passado no parâmetro nItem para atualização do cabeçalho. 3 – Não executa a atualização do cabeçalho.

Page 34: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

34

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 laço e acrescenta o item

em branco no aNFItem MATXFIS.

For nY := 1 To Len(aHeader) // Roda todos os campos do aCols através 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 variável cRefCols

If !Empty(cRefCols) .And. MaFisFound("IT",nX) // Verifica a existência 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 cabeçalho

Next nX

Page 35: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

35

2.12 MaFisRet(nItem , cCampo)

Descrição da função:

Retorna o conteúdo (no caso de valores de impostos, os valores já calculados) da referência fiscal informada

no parâmetro cCampo, ao informar referências “IT_” e “LF_” os valores retornados serão do item informado

no parâmetro nItem, array interno aNFItem, e referências “NF_” retornarão conteúdos do array interno

aNFCab e dispensam a passagem do nItem. Consulte o fonte MATXDEF.CH para encontrar as referencias

fiscais possíveis para o uso.

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 nItem Numérico Numero do item do array aNfItem Obrigatório para referências “IT_” e “LF” em cCampo

02 cCampo Caracter Referencia do campo que deseja obter o valor ou conteúdo dos array aNFCab e aNFItem, informar “NF_??????” para referências do cabeçalho e “IT_??????” e “LF_??????” para referências dos itens.

Retorno:

Ordem Retorno Tipo Descrição

01

xConteúdo da referência pesquisada

Todos conforme referência

Conteúdo da referência Fiscal nos array internos aNFCab e aNFItem no momento da chamada da função

Como e onde Usar:

Utilizada praticamente em todos os tipos de aplicação serve para obter o valor de impostos calculados pela

MATXFIS no momento da chamada da função e ou qualquer outro conteúdo dos array de cabeçalho e item

internos da MATXFIS, pode ser utilizado também para obter valores do livro fiscal, referência fiscal “LF_”, útil

para obter valores como o ‘Valor Contábil” e demais valores que não são próprios do item.

Page 36: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

36

Exemplos de Uso:

1 ) Trecho de código para obter os impostos calculados do item

2) Trecho de código par obter os valores totais do documento Fiscal

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

@ 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

Page 37: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

37

3) Trecho de função para Refresh no Folder de Despesas acessórias 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.

Page 38: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

38

2.13 MaFisSXRef(cAlias)

Descrição da função:

Esta função pesquisa a (Tabela) informada em cAlias no dicionário de dados SX3 buscando no X3_VALID de

TODOS os campos desta tabela a expressão “MaFisRef” para obter a referência fiscal “NF_”, “IT_” ligada ao

campo e retornar um array contendo o nome do campo e a referência fiscal ligada a ele, promovendo assim

uma espécie de homônimo, ou seja, para a aplicação 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 referência fiscal ligada a este campo e NUNCA ao

campo propriamente dito, o retorno desta função lista no primeiro elemento o campo da tabela e em

seguida a referência fiscal a qual ele será processado na MATXFIS.

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 cAlias Caracter Tabela do dicionário de dados

Retorno:

Ordem Retorno Tipo Descrição

01

aReferencias

array

Array contendo TODAS a referências fiscais da tabela informada em cAlias aReferencias[nX][1] = Campo da Tabela Exemplo D1_COD aReferencias[nX][2] = Referência Fiscal Exemplo IT_PRODUTO

Como e onde Usar:

Utilizado principalmente em conjunto com as funções MaFisIniLoad() e MaFisLoad() para promover uma

carga rápida de todas as referências fiscais de uma tabela para a MATXFIS, usada também em muitos outros

contextos onde se faz necessário um lista com todas as referências fiscais possíveis da tabela em uso na

aplicação.

Page 39: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

39

Exemplos de Uso:

1) Trecho de código do programa MATA103.PRW para a visualização 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 instrução a seguir varre todas as referências fiscais do array aAuxRefSD1 para carregar a

MATXFIS pela MaFisLoad()

For nX := 1 To Len(aAuxRefSD1)

// aAuxRefSD1[nX][2] contem o nome da referência 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 referência “IT_PRODUTO” dentro do aNFItem da MATXFIS o

conteúdo do campo D1_COD

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

Len(aCols) )

Next nX

MaFisEndLoad(Len(aCols),2)

....

Page 40: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

40

2) Trecho de código 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

Page 41: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

41

2.14 MaFisRelImp(cProg,aAlias)

Descrição da função:

Aplicação idêntica a função MaFisSXRef() (Vide a função), porém pode ser usada para mais de um Alias ao

mesmo tempo , retornando um array com a referencias fiscais separadas para cada Alias informado no

parâmetro aAlias.

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 cProg Caracter Reservado sem uso no momento, NÃO necessita ser informado

02 aAlias Array Array contendo os alias dos arquivos Exemplo: {SF1,SD1}

Retorno:

Ordem Retorno Tipo Descrição

01

aReferencias

array

Array contendo TODAS a referências fiscais da tabela informada em aAlias separados por Tabela aReferencias[nX][1] = Alias da referência Exemplo SD1 aReferencias[nX][2] = Campo da Tabela Exemplo D1_COD aReferencias[nX][3] = Referência Fiscal Exemplo IT_PRODUTO

Como e onde Usar:

Aplicação idêntica a função MaFisSXRef(), porém dê preferência ao uso desta função quando for tratar mais

de uma tabela como é o caso de tabelas que possuem cabeçalho e item, como é o caso das tabelas SF1/SD1

e SF2/SD2.

Page 42: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

42

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)

Page 43: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

43

2.15 MaFisRef(cReferencia , cProg , xValor)

Descrição da função:

A Função MaFisRef() foi desenvolvida para integrar a MATXFIS com programas que possuam interface para

manipulação de dados do documento fiscal, (Inclusão, Alteração, Exclusão e Visualização). A função tem a

responsabilidade de localizar a referência fiscal nos arrays internos da MATXFIS, comparar o valor passado

pelo parâmetro xValor com o valor constante nos arrays internos (aNFCab e ou aNFItem) e havendo

divergência entre os conteúdos, realizar a alteração para o novo conteúdo de xValor, disparar o recalculo de

todos impostos ligados a referência informada e atualizar os novos conteúdos na variável PRIVATE aCols da

aplicação sincronizando assim o conteúdo dos arrays internos da MATXFIS com as variáveis da aplicação, ou

seja, para utilizar esta função é obrigatório que haja uma interface onde exista uma MsGetDados() para os

itens da aplicação com as variáveis aHeader e aCols disponíveis. O uso convencional desta função se dá no

X3_VALID dos campos do dicionário de dados SX3, Exemplo: X3_VALID do campo D1_VALIPI com MaFisRef(

"IT_VALIPI" , "MT100" , M->D1_VALIPI ) , contudo, nada impede que esta função seja chamada diretamente

da própria aplicação em um contexto adequado ao seu funcionamento.

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 cReferencia Caracter Referência Fiscal “NF_” ou “IT_” que conste no arquivo MATXDEF.CH, exemplo: “IT_PRODUTO”, “NF_ESPECIE”

02 cProg Caracter “MT100”

03 xValor Caracter/Numérico/Array/Lógico Conteúdo a ser carregado para a referência fiscal na MATXIFS, Exemplo: Get no aCols com o valor do campo em memória: M->D1_PRODUTO

Retorno:

Ordem Retorno Tipo Descrição

01

lOk

Lógico

.T. = Se a referência fiscal foi encontrada e pode ser atualizada. .F. = Se a referência fiscal NÃO foi encontrada e ou atualizada.

Page 44: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

44

Como e onde Usar:

Usar preferencialmente no X3_VALID dos campos das tabelas de cabeçalho e itens da aplicação que

resultarão no documento fiscal que será processado, Exemplos em tabelas existentes: SF1/SD1 – Nota Fiscal

de Entrada, SF2/SD2 – Nota Fiscal de Saída, SC8 – Cotações de Compras, SC7 – Pedido de Compras. Deve ser

chamada em TODOS os campos de impostos da tabela e demais campos que tenham uma referência fiscal

“NF_” ou “IT_” compatível na lista do fonte MATXDEF.CH. É importante ressaltar que NENHUM imposto

deve ser calculado dentro da própria aplicação, TODOS os impostos devem obrigatoriamente serem

calculados dentro da MATXFIS, por inúmeras razões, dentre as quais, o fato de que as legislações fiscais

estão em constante evolução e a equipe fiscal deve concentrar a manutenção destas legislações em um só

ponto, se impostos forem calculados nas aplicações “POR FORA”, os cálculos apresentarão distorções em

relação a legislação atualizada. Toda vez que um NOVO imposto, regra, alíquota, Margem, for implementado

em uma tabela, deve-se OBRIGATÓRIAMENTE criar o campo na tabela com o X3_VALID contendo a

MaFisRef e a referência fiscal equivalente a nova implementação, caso a referência NÃO EXISTA, a mesma

deve ser criada pela equipe FISCAL, da mesma forma se o tratamento NÃO existir na MATXFIS para atender a

legislação, também 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 função

MaFisRef(), internamente na MATXFIS são chamadas as 3 funções principais em sequência:

MaFisRef() – Verifica se a alteração é possível e se o item existe, chama a MaFisAlt() que chama a

MaFisrecal() e após, atualiza todas as colunas do aCols que possuem MaFisRef no X3_VALID com os

valores recalculados pela MATXFIS a partir da alteração deste campo D1_TOTAL

MaFisAlt() – Verifica se o conteúdo da referência fiscal na MATXFIS é diferente do conteúdo digitado no

aCols, se sim, atualiza o conteúdo na MATXFIS e chama a MaFisRecal() para calcular TODOS os impostos e

referências ligadas a referência alterada.

Page 45: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

45

MaFisRecal() – Recalcula TODOS Impostos e referências ligadas a referência alterada.

Após clicar ENTER neste campo, estas 3 funções serão executadas, todas as colunas do aCols serão

atualizadas e também os demais objetos controlados pela MATXFIS, como é o caso dos folders “Livros

Fiscais” e “Impostos”

Page 46: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

46

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

Descrição da função:

A função MaFisAlt() altera o conteúdo da referência fiscal informada em cCampo nos arrays internos aNFCab

e aNFItem da MATXFIS e dispara o recalculo de todos os impostos promovendo assim a atualização de todas

as demais referências fiscais relacionadas a ela, o recalculo dos impostos podem ocorrer ou não dependendo

do parâmetro lRecal.

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 cCampo Caracter Referência Fiscal a ser alterada

02 nValor Numérico Conteudo

03 nItem Numérico Numero do item, só passado quando cCampo = “IT_”

04 lNoCabec Lógico Refaz o cabeçalho aNFCab. Se .T. limpa os totalizadores do aNFCab, varre TODOS os itens e refaz a soma dos itens no cabeçalho, (Usar somente em casos de EXTREMA necessidade, se .F. ou NÃO Informado (DEFAULT), apenas soma o valor do item nos totalizadores do cabeçalho aNFCab.

05 nItemNao Numérico Reservado MATXFIS

06 lDupl Lógico Se .T. força recalculo e a alteração para conteúdo de nValor mesmo que o conteúdo dos arrays internos seja o mesmo, apenas para a referência fiscal informada em cCampo igual a “NF_”

07 cRotina Caracter Nome da rotina

08 lRecal Lógico Executa o Recalculo dos impostos .T. ou .F. ( DEFAULT = .T.)

Retorno:

Ordem Retorno Tipo Descrição

Não há retorno para essa função.

Page 47: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

47

Como e onde Usar:

Embora deva ser usada para todas as situações onde seja necessário alterar o conteúdo de uma referencia

fiscal mais a execução do recalculo de todas as referencias fiscais ligadas a este conteúdo e atualizar as

somas do cabeçalho, é importante ressaltar que esta operação exige muito mais tempo que APENAS alterar

o conteúdo de uma referencia fiscal utilizando MaFisLoad() , no caso do uso, o ideal é ficar atento ao

desenhar uma aplicação para minimizar o uso da função ao máximo afim de evitar o uso desnecessário da

função e com isso comprometer a performance da aplicação, principalmente em rotinas onde sejam

processados ou gerados vários documentos fiscais de uma vez. Muita ATENÇÃO ao utilizar os parâmetros

lNoCabec e lRecal, pois estes parâmetros se .T., aumentam o tempo de execução consideravelmente,

principalmente o lNoCabec que se aplicado dentro de laços de processamento de itens pode exponenciar o

tempo conforme a quantidade de itens por VARRER TODOS OS ITENS desde o primeiro não 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 cabeçalho ou rodapé do

documento fiscal, a chamada da função alem de alterar o total das referencias no cabeçalho também fará

o rateio do valor entre os itens do documento;

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

de uma tabela

MaFisAlt("NF_FRETE",avalores[FRETE])

MaFisAlt("NF_DESPESA",avalores[VALDESP])

MaFisAlt("NF_SEGURO",avalores[SEGURO])

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

Page 48: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

48

3) Uso de um Ponto de Entrada do MATA461.PRX (Geração de Notas Fiscais de Saída pra alterar o valor do

IPI, observar que o uso da função FORÇA uma nova soma no cabeçalho do Documento Fiscal APÓS alterar a

referência.

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")

// Força a reconstrução dos totalizadores do aNFCab através do parâmetro lNoCabec = .T.

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

.T. )

//Após FORÇAR um novo valor de IPI pelo P.E., recarrega novamente os valores de base e

alíquota para a MATXFIS

MaFisLoad("IT_BASEIPI",BASEIPI,nItem)

MaFisLoad("IT_ALIQIPI",ALIQIPI,nItem)

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

EndIf

Page 49: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

49

2.17 MaFisDel( nItem , lDelete)

Descrição da função:

A função MaFisDel() marca ou desmarca como deletado, o item no array interno aNFItem da MATXFIS, é

utilizado para SINCRONIZAR o array aCols de interfaces de digitação de documentos fiscais com o array

statico aNFItem da MATXFIS, quando o item é marcado como deletado no aCols da interface é necessário

que na MATXFIS o aNFItem também seja deletado, e se a tecla “Delete” for acionada novamente para

recuperar o item deletado no aCols, o ANFItem também deve ser restaurado.

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 nItem Numérico Numero do item no aCols e no array aNfItem

02 lDelete Lógico .T. -> Deleta o item / .F. -> Ativa o item (desmarca a deleção) normalmente este conteúdo é clonado da ultima posição do array aCols controlado pela MsGetDados()

Retorno:

Ordem Retorno Tipo Descrição

Não há retorno para essa função.

Como e onde Usar:

Usar em TODAS as aplicações desenvolvidas para a digitação de documentos fiscais, normalmente as

aplicações desenvolvidas para este fim utilizam MsGetDados() para controle dos itens e por consequência

utilizam uma variável para armazenamento destes itens, normalmente batizada como “aCols”, a chamada da

função MaFisdel() deve ser colocada na função que trata a deleção do item passada no parâmetro para este

fim na MsGetdados(), com isso o controle de deleção da MsGetDados(), sempre acionará a MaFisDel()

mantendo o SINCRONISMO entre aCols e aNFItem.

Page 50: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

50

Exemplos de Uso:

1) Exemplo do programa de digitação de documentos fiscais de saída manual – MATA920.PRW

// Trecho do código que monta a MsGetdados com a passagem do parâmetro da função de deleção

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' )

// Função 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]) ] é posição JÁ marcada pela

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

Eval(bRefresh)

Return .T.

Page 51: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

51

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

Descrição da função:

A função MaColsToFis é bem flexível, 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 atualização (Totalizadores do cabeçalho e recalculo) ou realizando todo o recalculo e após

atualizando todo o aCols com os novos valores calculados, deve ser utilizada com cautela para NÃO

comprometer a performance da aplicação.

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 aHeader Array Variável com a estrutura dos campos da tabela aHeader

02 aCols Array Variável com a estrutura de conteúdo dos campos aCols

03 nItem Numérico Numero do item a ser carregado (CUIDADO! Se não 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 Lógico Indica se o recalculo dos impostos deve ser executado - DEFAULT .F.

06 lVisual Lógico Indica se é apenas visual - DEFAULT .F.

07 lDel Lógico Indicia se o processo da função irá considerar os itens deletados, ou seja, com .T., e no aCols houver algum item deletado ele também será carregado para o aNFitem. - DEFAULT .F.

08 lSoItem Lógico Indica nTipo=2 na chamada da função MaFisEndLoad(), ou seja, se .T. chama a função MaFisSomaIt() que atualiza as variáveis de cabeçalho (totalizadores) de acordo com as informações nos itens. - DEFAULT .F.

Retorno:

Ordem Retorno Tipo Descrição

Não há retorno para essa função.

Page 52: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

52

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 invés de chamar repetidamente MaFisLoad() para cada referencia, isto também pode

ser feito para apenas um item ou TODOS os itens do aCols, Atenção! Deve-se ter extremo cuidado neste

caso, pois se esta função estiver dentro de um For / Next do aCols e NÃO for informado o nItem no

parâmetro da função, o DEFAULT da função será carregar TODOS os itens do acols, fazendo com que se

dentro de um laço, 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 função SEM informar o nitem, apenas

FORA dos laços do aCols, outro parâmetro da função que também merece atenção é o lRecalc, utilizar

somente quando for necessário o recalculo pois o tempo é aumentado significativamente quando ativado e

nem sempre é necessário, principalmente quando dentro de laços do aCols, mais 2 parâmetros que podem

afetar o tempo de execução da função, lVisual e lSoItem, o lVisual se ativado (.T.), não fará a atualização dos

totalizadores do cabeçalho na MATXFIS através do array aNFCab, com isso, a execução será mais rápida,

quando porém estiver .F. ou NÃO for informado, DEFAULT .F., o parâmetro lSoItem será consultado, se .F.

(DEFAULT) a função somará o item ou os itens que estiverem sendo processados e atualizará o cabeçalho

(aNFCab) somando TODOS os itens, se .T. somente o item informado em nItem será somado ao cabeçalho.

Logo, devido a sua FLEXIBILIDADE de uso, é muito importante utilizar esta função no contexto correto, pois o

TEMPO de execução 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

cabeçalho.

For nItem := 1 to Len(aCols)

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

Next nItem

Page 53: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

53

2) Exemplo ERRADO de uso para carregar os itens do aCols para MATXFIS, ao chamar a função dentro do

Laço SEM informar o nItem.

// Se o item NÃO for informado em uma carga de 100 itens por exemplo, a cada item a função

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 NÃO For informado e o lVisual for .F. e o lSoItem também 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 função MaColsToFis(), por esta entender que deverá processar TODOS os itens

do aCols por NÃO 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 cabeçalho 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 é possível que ao desenvolver a aplicação POUCOS itens sejam usados e NÃO se

PERCEBA o prejuízo de PERFORMANCE.

For nItem := 1 to Len(aCols)

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

Next nItem

Page 54: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

54

3) Se executado FORA do laço para se carregar TODOS os itens do aCols o uso será CORRETO, porém não

tão eficiente, pois se desperdiçará o fato de a aplicação já ter rodado os itens no FOR/NEXT, o melhor uso

dependerá da necessidade de configuração dos demais parâmetros (lRecalc,lVisual,lDel,lSoItem)

For nItem := 1 to Len(aCols)

... Processos da Aplicação

Next nItem

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

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

Ficar atento quanto aos DEFAULTs dos parâmetros da função

Page 55: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

55

2.19 MaFisToCols( aHeader , aCols , nItem , cProg )

Descrição da função:

Essa função atualiza as informações do aCols com os dados das referencias fiscais já calculadas no array

interno aNFItem da MATXFIS

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 aHeader Array Variável com a estrutura dos campos da tabela aHeader

02 aCols Array Variável com a estrutura de conteúdo dos campos aCols

03 nItem Numérico Numero do item a ser atualizado no aCols – se NÃO informado o DEFAULT será atualizar TODOS os itens do aCols.

04 cProg Caracter Nome da rotina / programa Exemplo “MT100”

Retorno:

Ordem Retorno Tipo Descrição

Não há retorno para essa função.

Como e onde Usar:

Usar quando necessitar atualizar o conteúdo do aCols com o conteúdo já calculado da MATXFIS, o único

cuidado a ser tomado neste caso é quanto a passagem do parâmetro nItem que se NÃO for passado a função

assumirá que TODO o aCols deve ser atualizado e não somente o item, por isso deve ser observado o

contexto em que se aplicará a chamada da função.

Page 56: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

56

Exemplos de Uso:

1) Trecho de código onde após os cálculos 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 cálculos da MATXFIS

2) Trecho de código que atualiza TODOS os itens do aCols APÓS ser alterada a UF de Origem no cabeçalho

do documento Fiscal de Entrada, e com isso, o calculo de TODOS os itens da nota são afetados e devem ser

atualizados.

// Len(aCols) é o item atual após os cálculos realizados anteriormente no código. O Item atual será

atualizado com o conteúdo da MATXFIS

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

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

MaFisAlt(cReferencia,xValor) // Alterando uma referencia Fiscal do cabeçalho aNFCab

If cReferencia == "NF_NATUREZA"

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

Endif

// O parâmetro nItem NÃO sendo passado atualiza TODOS os itens do aCols

MaFisToCols(aHeader,aCols, ,"MT100")

EndIf

Eval(bGDRefresh)

Eval(bRefresh)

Page 57: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

57

2.20 MaFisRecal( cCampo , nItem)

Descrição da função:

A função MaFisRecal() executa a pilha de funções do calculo de impostos, item a item. Ela é utilizada

internamente pela MATXFIS para calcular todos os impostos através da chamada de outras funções que

devem estar na aplicação desenvolvida ou no dicionário de dados SX3 (X3_VALID). Estas funções são:

MaFisRef(), MaFisAlt(), MaFisAdd() e MaColsToFis(), Contudo, ela pode ser utilizada fora da MATXFIS

(aplicação desenvolvida) em situações muito especificas.

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 cCampo Caracter Referência do campo, ou “ ” (vazio) para que o recalculo seja feito para todos os impostos.

02 nItem Numérico Numero do item do documento.

Retorno:

Ordem Retorno Tipo Descrição

Não há retorno para essa função.

Como e onde Usar:

Procurar conter o uso o máximo possível, pois a função é de uso interno da MATXFIS e é chamada pelas

funções de uso externo MaFisRef(), MaFisAlt(), MaFisAdd() e MaColsToFis(), contudo há casos onde o uso

dela pode ser a única solução para executar o calculo de TODOS impostos em uma ordem especifica e para

se obter os resultados dos cálculos ANTES do termino do processo, como é o caso do programa

MATA461.PRX (Geração das Notas Fiscais de Saída) onde os valores calculados pela sua chamada interferem

diretamente nos valores que ainda serão usados na operação, 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 máximo em situações onde a chamada das demais funções mencionadas acima, podem

proporcionar a solução sem o seu uso.

Page 58: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

58

Exemplos de Uso:

1) Trecho de código do programa MATA461.PRX onde é necessário o calculo de TODOS os impostos do item

ANTES da chamada de demais funções 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 Alíquota 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

Page 59: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

59

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

Descrição da função:

Função utilizada para gravar os campos das tabelas do documento fiscal processado com o conteúdo das

referencias fiscais ( calculadas pela MATXFIS) referente aos campo da tabela, pode ser usada também para

ajustar todos os arredondamentos ANTES de iniciar a gravação dos campos.

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 nOpc Numérico

1 – Efetua o ajuste de arredondamento de TODAS as referências Fiscais dos itens (aNFItem) e do cabeçalho (aNFCab) 2 – Efetua a gravação nos campos da tabela informada em cArea, ou se NÃO informado em cArea, do dbselectarea() aberto no momento da chamada da função de TODAS as referências 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

03 nItem Numérico Numero do Item caso o primeiro parâmetro nOpc seja = 2, NÃO deve ser passado quando a gravação for do cabeçalho, exemplo: SF1 / SF2

04 lImpostos Lógico

Parâmetro valido somente para nOpc = 2 .F. (DEFAULT) – Grava TODAS as referencias Fiscais dos campos da tabela .T. – Grava apenas as referencias fiscais que contenham (BASIMP , ALQIMP, VALIMP)

05 lRemito Lógico

Parâmetro valido somente para nOpc = 2 .F. (DEFAULT) – Grava TODAS as referencias Fiscais dos campos da tabela .T. – Grava apenas as referencias fiscais diferentes de (BASIMP , ALQIMP, VALIMP)

Page 60: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

60

Retorno:

Ordem Retorno Tipo Descrição

Não há retorno para essa função.

Como e onde Usar:

Deve ser utilizada ao iniciar o processo de gravação do documento fiscal (Editado via interface de digitação

ou rotina de geração de notas) para ajustar os arredondamentos de todas as referencias fiscais calculadas e

após este passo gravar efetivamente todos os dados das referencias fiscais calculadas pela MATXFIS (aNFCab

e aNFItem) nos campos correspondentes das tabelas do documento fiscal, cabeçalho e itens, exemplo:

SF1/SD1, SF2/SD2.

Page 61: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

61

Exemplos de Uso:

1) Trecho de código do MATA103.PRW (Documento de Entrada) após confirmar a inclusão

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 cabeçalho da tabela SF1

SF1->F1_FILIAL := xFilial("SF1") // Gravando os campos da SF1 que NÃO serão 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 conteúdos 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

Page 62: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

62

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

Descrição da função:

Embora o nome da função seja MaFisAtuSF3(), hoje a função grava alem da tabela SF3, as tabelas SFT e CD2,

utilizada sempre APÓS a gravação do documento fiscal para gravar todas as informações 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 também ao Excluir os documentos fiscais.

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 nCaso Numerico Tipo da operação -> 1-Inclusão / 2-Exclusão

02 cTPOper Caracter Tipo de movimentação -> E-Entrada / S-Saída

03 nRecNF Numérico Recno do cabeçalho da nota fiscal

04 cAlias Caracter Alias da tabela principal

05 cPDV Caracter Para uso exclusivo dos módulos LOJA – Identificação do PDV que será gravado no campo SF3->F3_PDV

06 cCNAE Caracter Código CNAE que será gravado no campo SF3->F3_CNAE

07 cFunOrig Caracter Nome da rotina original que chamou a função.

08 nCD2 Numérico DEFAULT = 0 - Após 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 Descrição

Não há retorno para essa função.

Como e onde Usar:

Utilizar na rotina de gravação do documento fiscal (editado ou gerado), logo após a gravação do cabeçalho e

dos itens, tanto quando for INCLUIR o documento, como EXCLUIR,

NUNCA GRAVE AS TABELAS SF3, SFT E CD2 NA ROTINA DE GRAVAÇÃO DA APLICAÇÃO, USE SEMPRE A

MaFisAtuSF3()

Page 63: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

63

Exemplos de Uso:

1) Trecho de código do MATA103.PRW (Documento de Entrada) após confirmar a inclusão

Function a103Grava( ....

If INCLUI

// gravando o cabeçalho da tabela SF1

SF1->F1_FILIAL := xFilial("SF1") // Gravando os campos da SF1 que NÃO serão 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 conteúdos 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 Inclusão gravando as tabelas SF3, SFT e CD2

Else // Exclusão do Documento de Entrada

.... Código para a Exclusão

MaFisAtuSF3( 2 , "E" , SF1->( RecNo() ) ) // Na exclusão do Documento de entrada

EXCLUI as tabelas SF3, SFT e CD2

EndIf

Return

Page 64: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

64

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

Descrição da função:

A função carrega as notas fiscais de entrada e saída para a MATXFIS a partir das tabelas SF2/SD2

(Documentos de Saída) e SF1/SD1 (Documentos de Entrada), as referências fiscais são lidas do dicionário de

dados SX3 (X3_VALID) destas tabelas para efetuar a carga.

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 nTipoNF Numérico Tipo de nota fiscal -> 1-Nota Fiscal de Entrada / 2-Nota Fiscal de Saída

02 nRecSF Numérico Recno do registro de cabeçalho da nota fiscal (SF1/SF2)

03 aOtimizacao Array Array de uso interno da Matxfis para cachear o uso da função MaFisSXRef()

04 cAlias Caracter Alias da tabela de cabeçalho Exemplo: “SF1” “SF2”

05 lReprocess Lógico Indica se recalcula base dos impostos fiscais.

06 cFunOrig Caracter Nome da rotina original que chamou a função.

Retorno:

Ordem Retorno Tipo Descrição

Não há retorno para essa função.

Como e onde Usar:

Deve ser utilizada para facilitar a leitura de documentos fiscais gravados de entrada e saída das tabelas

SF1/SD1 ou SF2/SD2, obter referencias fiscais destes documentos calculadas pela MATXFIS através da função

MaFisRet(). O uso principal da função está diretamente ligado ao programa MATA930.PRX

(Reprocessamento dos Livros Fiscais) onde o seu uso se dá através do parâmetro 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 situação ATUAL de TODOS os cadastros envolvidos na geração

das notas fiscais, como TES, Cliente/Fornecedor, Exceção Fiscal, parâmetros SX6, com isso é possível

reconstruir os Livros Fiscais (Tabelas SF3/SFT) com as novas configurações dos cadastros.

Page 65: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

65

Exemplos de Uso:

1) Exemplo de uma Função 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)

Page 66: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

66

2) Trecho de Reprocessamento do código 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 exclusão dos registros referente a Nota Fiscal no SF3/SFT para serem gravados com os

NOVOS cálculos

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)

Page 67: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

67

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

Descrição da função:

Essa função cria um objeto de browse para exibição dos demonstrativos de livros fiscais, este objeto pode

estar disponível na dialog de digitação do documento fiscal em um Folder ou panel onde será possível

acompanhar os valores calculados ao digitar ou visualizar o documento.

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 oWnd Objeto Objeto Listbox que será montado

02 aPosWnd Array Array com as coordenadas do objeto

03 lVisual Lógico Define a edição do livro -> .F. – Editavel / .T. – Não Editavel

04 aRecSF3 Array Array contendo os registros da tabela SF3 - Livro Fiscal

05 lOpcVisual Lógico Default .F. – Uso reservado da MATXFIS

Retorno:

Ordem Retorno Tipo Descrição

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 digitação de documentos fiscais de entrada e saída, em todas as operações, Inclui,

Alterar, Visualizar e excluir, é necessário que o ambiente da aplicação já tenha iniciado a MATXFIS.

Page 68: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

68

Exemplos de Uso:

1) Trecho de código do programa MATA103.PRW (documento de entrada) para criação do FOLDER – Livros

Fiscais

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

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),; …..

Page 69: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

69

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

cLojaIss , aRecSE2 , cDirf , cCodRet , oCodRet , nCombo , oCombo , dVencIss ,

aCodR , cRecIss , oRecIss)

Descrição da função:

Essa função cria um objeto com o demonstrativo dos impostos calculados (Base, Alíquota e Valor), este

objeto pode estar disponível na dialog de digitação do documento fiscal em um Folder ou panel onde será

possível acompanhar os valores calculados ao digitar ou visualizar o documento fiscal. O Objeto também

permite que os impostos sejam editados no próprio browse clicando-se na Base e Valor do Imposto quando o

parâmetro lVisual = .F. , também com esta configuração é possível incluir novos impostos através de uma

lista apresentada em uma nova dialog disparada ao clicar 2 vezes (DoubleClick) na primeira linha do Browse

na coluna Código onde são apresentado três pontos (...).

Parâmetros:

Ordem Parâmetro Tipo Descrição

01 nTipo Numérico Quebra: 1-Imposto+Alíquota / 2-Imposto

02 oJanela Objeto Tela aonde será montado o rodapé.

03 aImpostos Array Relação dos impostos que deverão ser apresentados (Este array deve ser passado com os códigos dos impostos.) OPCIONAL

04 aPos Array Array deve conter posição e tamanho da tela

05 bValidPrg B. Cód. Bloco de código com a validação que deverá ser executada na edição dos campos. USAR para executar Refresh da MsGetdados() e outros

06 lVisual Lógico .T. caso seja apenas para visualização. .F. – para editar os impostos

07 cFornIss Caracter Código do Fornecedor (para ISS) – Fornecedor diferente do fornecedor da Nota

08 cLojaIss Caracter Código da Loja do Fornecedor (para ISS) – Idem acima

09 aRecSE2 Array Array contendo informações de Recno do SE2 (Títulos a Pagar). Este Recno() é utilizado para posicionar no titulo no momento da visualização.

10 cDirf Caracter Gera DIRF para o título. SE2->E2_DIRF

11 cCodRet Caracter Código da retenção para geração da DIRF. SE2->E2_CODRET

12 oCodRet Objeto Objeto oCodRet para refresh

13 nCombo Numero Variável recebe o conteúdo de aOpcoes de oCombo

14 oCombo Objeto Objeto de combo para opções de Gera DIRF = 1-SIM/2-NÃO

15 dVencIss Data Vencimento do ISS

16 aCodR Array Contem todos os códigos de retenções 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

Page 70: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

70

Retorno:

Ordem Retorno Tipo Descrição

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 cálculos dos impostos no ato da digitação ou visualização de forma

resumida, é possível até editar os valores totais (Base e Valor) de cada imposto e a MATXFIS após a edição

rateia os valores editados entre os itens, também é possível acrescentar impostos que NÃO foram calculados

automaticamente no documento. Recomendamos que toda aplicação a ser desenvolvida e ou aplicações que

já existam SEM o uso desta função, implementar a mesma.

Page 71: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

71

Exemplos de Uso:

1) Trecho de código do programa MATA103.PRW (documento de entrada) para criação 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 alterações na classificação 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),; …..

Page 72: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

72

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.

Page 73: MATXFIS - Smart Siga - TI Inteligente · Trecho de códigos em ADVPL exemplificando a utilização da função e até mesmo exemplos práticos/cenários utilizados dentro do ERP.

MATXFIS – Guia de Utilização

MATXFIS – Guia de Utilização - TOTVS - 2013

73

Informações de Versão

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