CONTEÚDO

  1. Visão Geral
  2. Exemplo de utilização
  3. Tela XXX
    1. Outras Ações / Ações relacionadas
  4. Tela XXX
    1. Principais Campos e Parâmetros
  5. Tabelas utilizadas


01. VISÃO GERAL

O Cadastro de Perfil Tributário de Participantes (FISA164) é uma rotina disponível pelo Configurador de Tributos (FISA170) para agrupar todos os participantes que compartilham de características semelhantes a serem enquadradas nas operações fiscais. Os participantes podem ser fornecedores ou clientes cadastrados no sistema.

Através do sistema o usuário tem a possibilidade de ao cadastrar um novo cliente/fornecedor utilizar do facilitador fiscal para adicionar um novo participante a um Perfil de Participante já existente na base quando o parâmetro MV_FACAUTO está ativado.

Esse documento visa exemplificar como utilizar da rotina FISA164 como ExecAuto (execução automática) para efetuar o mesmo.

02. EXEMPLO DE UTILIZAÇÃO

O exemplo de utilização abaixo inicia com uma função principal que prepararia todo o ambiente e executaria todo o processamento de cadastro de fornecedor/cliente através das execuções automáticas disponíveis para esses cadastros. O foco desse exemplo não é essa função mas sim a função gravaPart que fará a gravação do novo cliente/fornecedor em um perfil de participante já existente na base.

A gravaPart só será chamada se o parâmetro MV_FACAUTO estiver ativado e se for possível encontrar na tabela F20 (Perfis Tributários) o perfil ao qual eu quero vincular meu novo participante (cliente/fornecedor).


Abaixo um exemplo de como utilizar a rotina em execução automática após ter cadastrado um cliente/fornecedor:

#INCLUDE "TBICONN.CH"
#INCLUDE "TOPCONN.ch"
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"


/*/{Protheus.doc} User Function exExecAuto
    (Função que inicializa o processamento.)
    @type  Function
    @author user
    @since 04/09/2023
    @version 12.1.2210
    @return Nil, Nil, sem retorno
/*/
User Function exExecAuto()
    local lMVFACAUTO := .F.
    local nOp := 3
    local cCodPerfil := "200001"
    local cTipoPart := "1"
    local cCliFor := "SP0003"
    local cLoja := "01"
    local cTipoPerf := "02"
    local lOk := .F.

    ConOut(Repl("-",80))
    ConOut(PadC("Mensagem : Inicío do processamento " + Time(), 80))

    // preparo o ambiente
    // prepare o ambiente da maneira que achar melhor
    // para este exemplo abrirei apenas as tabelas F20 e F22
    PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "XIFIS26" MODULO "FIS" TABLES "F20", "F22"


        /*
            Lógica de cadastro de cliente/fornecedor via execAuto das rotinas de
            cadastro de cliente e fornecedor.
        */


        // Inclusão de novo fornecedor/cliente em um perfil de participante já existente
        lMVFACAUTO := GetNewPar("MV_FACAUTO", lMVFACAUTO)
        if lMVFACAUTO // se o facilitador estiver ativado
            dbSelectArea("F20")
            F20->(dbSetOrder(1))
            // posiciono no perfil ao qual quero incluir o novo cliente/fornecedor
            if F20->(MsSeek(xFilial("F20") + cCodPerfil + cTipoPerf))
                // chamo a função para gravar nova linha de participante (F22)
                lOk := u_gravaF22(nOp, cCodPerfil, cTipoPart, cCliFor, cLoja, cTipoPerf)
                if !lOk
                    ConOut("Mensagem : Não foi possível a inserção de novo participante no perfil. Verificar Log.")
                else 
                    ConOut("Mensagem : Incluído participante " + cCliFor + " ao perfil " + cCodPerfil+".")
                endif
            else
                ConOut("Mensagem : Perfil de Participante inexistente!")
            endIf
        endif
        ConOut("Mensagem : Fim da Execução em - "+Time())

    RESET ENVIRONMENT

Return


/*/{Protheus.doc} User Function gravaPart
    (Grava cliente/fornecedor em perfil de participante já existente)
    @type  Function
    @author user
    @since 05/09/2023
    @version version
    @param nOp, numeric, Opção a ser aplicada
    @param cCodPerfil, character, Código do Perfil a ser vinculado o participante
    @param cTipoPart, character, Tipo do Participante - Fornecedor (1) Cliente (2)
    @param cCliFor, character, Código do cliente/fornecedor
    @param cLoja, character, Loja do cliente/fornecedor
    @param cTipoPerf, character, Tipo do Perfil de participante: 1-Origem Destino; 2-Participante; 3-Operação. No nosso caso será sempre 2
    @return lOk, logical, flag que identifica se a inserção ocorreu
/*/
User Function gravaPart(nOp, cCodPerfil, cTipoPart, cCliFor, cLoja, cTipoPerf)
    local oModel as object
    local lOk := .F.

    oModel := FwLoadModel("FISA164") // carrego o modelo da rotina

    if nOp == MODEL_OPERATION_UPDATE // verifico se é alteração

        // Através da operação de update no modelo, consigo adicionar uma nova
        // linha na GRID (F22).
        oModel:SetOperation(MODEL_OPERATION_UPDATE)
        oModel:Activate() // ativo o modelo

        //Adiciona uma nova linha no grid
        oModel:GetModel("FISA164PARTICIPANTE"):AddLine()
        oModel:SetValue("FISA164PARTICIPANTE", "F22_CODIGO", cCodPerfil)
        oModel:SetValue("FISA164PARTICIPANTE", "F22_TPPART", cTipoPart)
        oModel:SetValue("FISA164PARTICIPANTE", "F22_CLIFOR", cCliFor)
        oModel:SetValue("FISA164PARTICIPANTE", "F22_LOJA", cLoja)
        oModel:SetValue("FISA164PARTICIPANTE", "F22_TIPOPF", cTipoPerf)

        If oModel:VldData()
            oModel:CommitData()
            lOk := .T.
        Else
            VarInfo("",oModel:GetErrorMessage())
        EndIf

        oModel:DeActivate()
    else
        ConOut("Mensagem : Opção de operação diferente da esperada: ")
        ConOut("Mensagem : Operação esperada: 4")
        ConOut("Mensagem : Operação recebida: " + str(nOp))
    endif
Return lOk
 


03. TELA XXXXX

Outras Ações / Ações relacionadas

AçãoDescrição
Inclua a ação Inclua a descrição relacionada
Inclua a ação Inclua a descrição relacionada
Inclua a ação Inclua a descrição relacionada

04. TELA XXXXX

Principais Campos e Parâmetros

CampoDescrição
Inclua o campo Inclua a descrição relacionada
Inclua o campo Inclua a descrição relacionada
Inclua o campo Inclua a descrição relacionada



05. TABELAS UTILIZADAS