Versões comparadas

Chave

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


...

ÍNDICE

Índice
excludeCONTEÚDOÍNDICE
styleNone


01. 

...

VISIÓN GENERAL

El Registro de perfil tributario de participantes (FISA164) es una rutina disponible por el Configurador de tributos

...

O Cadastro de Perfil Tributário de Participantes (FISA164) é uma rotina disponível pelo Configurador de Tributos (FISA170) para agrupar todos os los participantes que compartilham de características semelhantes a serem enquadradas nas operações fiscais. Os participantes podem ser fornecedores ou clientes cadastrados no sistema.comparten características semejantes que se encuadran en las operaciones fiscales. Los participantes pueden ser proveedores o clientes registrados en el sistema.

Por medio del sistema, el usuario tiene la posibilidad de, al registrar un nuevo cliente/proveedor, utilizar el Através do sistema o usuário tem a possibilidade de ao cadastrar um novo cliente/fornecedor utilizar do facilitador fiscal (MV_FACAUTO) para adicionar um novo agregar un nuevo participante a um un Perfil de Participanteparticipante existente na base quando o parâmetro en la base cuando esté activado el parámetro MV_FACAUTO está ativado.

Esse documento visa exemplificar como utilizar da rotina Este documento busca ejemplificar cómo utilizar la rutina FISA164 como ExecAuto (execução ejecución automática) para efetuar o mesmorealizarlo.

02. 

...

EJEMPLO DE

...

UTILIZACIÓN

El siguiente ejemplo de utilización se inicia con una función principal que prepararía todo el entorno y  ejecutaría todo el procesamiento de registro de proveedor/cliente por medio de las ejecuciones automáticas disponibles para estos registros. El enfoque de este ejemplo no es esta función, si no la función gravaPart que grabará el nuevo producto en un perfil de participante existente en la base como un ExecAuto.

Cuando una aplicación se desarrolla utilizando el concepto de MVC y sus clases, puede hacerse uso de su modelo de datos en otras aplicaciones, similarmente a lo que sería una rutina automática en el desarrollo tradicional. Ya no existe uso de la función MSExecAuto. La idea básica es instanciar el modelo de datos (Model) que se desea, atribuir los valores a este y hacer la validación. Por lo tanto, la función gravaPart se desarrolló en este ejemplo, de acuerdo con el concepto del MVC.

La gravaPart solo se llamará si el parámetro MV_FACAUTO estuviera activado y si fuera posible encontrar en la tabla F20 (Perfiles tributarios) el perfil al cual quiero vincular mi nuevo participante (cliente/proveedor).

A continuación, un ejemplo de cómo utilizar la rutina en ejecución automática después de haber registrado un cliente/proveedor

...

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 como um ExecAuto

Quando uma aplicação é desenvolvida utilizando-se o conceito de MVC e suas classes, pode-se fazer uso de seu modelo de dados em outras aplicações, similarmente ao que seria uma rotina automática no desenvolvimento tradicional. Não existe mais o uso da função MSExecAuto. A ideia básica é instanciar o modelo de dados (Model) que se deseja, atribuir os valores a ele e fazer a validação. Portanto, a função gravaPart foi desenvolvida nesse exemplo conforme o conceito do MVC.

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:

Bloco de código
languagejava
themeMidnight
firstline1
titleexExecAuto.prw
linenumberstrue
#INCLUDE "TBICONN.CH"
#INCLUDE "TOPCONN.ch"
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"


/*/{Protheus.doc} User Function exExecAuto
    (FunçãoFunción que inicializainicia oel processamentoprocesamiento.)
    @type  Function
    @author user
    @since 04/09/2023
    @version 12.1.2210
    @return Nil, Nil, semsin retornodevolución
/*/
User Function exExecAuto()
    local lMVFACAUTO := .F.
    local nOp := 4
    local cCodPerfil := "200001"
    local cTipoPart := "1"
    local cCliFor := "SP0003"
    local cLoja := "01"
    local cTipoPerf := "02"
    local lOk := .F.

    ConOut(Repl("-",80))
    ConOut(PadC("MensagemMensaje : InicíoInicio dodel processamentoprocesamiento " + Time(), 80))

    // preparo oel ambienteentorno
    // prepare oel entorno ambientede dala maneiramanera que acharle melhorparezca
    // para este exemploejemplo abrireisolo apenasabriré aslas tabelastablas F20 ey F22
    PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "XIFIS26" MODULO "FIS" TABLES "F20", "F22"


        /*
            Lógica de cadastroregistro de cliente/fornecedorproveedor por viael execAuto de daslas rotinasrutinas de
            cadastroregistro de cliente ey fornecedorproveedor.
        */


        // InclusãoInclusión de novonuevo fornecedorproveedor/cliente emen umun perfil de participante existente
        lMVFACAUTO := GetNewPar("MV_FACAUTO", lMVFACAUTO)
        if lMVFACAUTO // sesi oel facilitador estiverestuviera ativadoactivado
            dbSelectArea("F20")
            F20->(dbSetOrder(1))
            // posicionovoy noal perfil en aoel qualcual queroquiero incluir oel novonuevo cliente/fornecedorproveedor
            if F20->(MsSeek(xFilial("F20") + cCodPerfil + cTipoPerf))
                // chamollamo ala funçãofunción para grabar gravaruna novanueva linhalínea de participante (F22)
                lOk := u_gravaPart(nOp, cCodPerfil, cTipoPart, cCliFor, cLoja, cTipoPerf)
                if !lOk
                    ConOut("MensagemMensaje : NãoNo foifue possívelposible aincluir inserçãoun denuevo novoparticipante participanteen noel perfil. Verificar Log.")
                else 
                    ConOut("MensagemMensaje : Se incluyó Incluídoel participante " + cCliFor + " ao perfil " + cCodPerfil+".")
                endif
            else
                ConOut("MensagemMensaje : Perfil de Participanteparticipante inexistente!")
            endIf
        endif
        ConOut("MensagemMensaje : Final Fimde dala Execuçãoejecución emen - "+Time())

    RESET ENVIRONMENT

Return


/*/{Protheus.doc} User Function gravaPart
    (GravaGraba cliente/fornecedorproveedor emen perfil de participante existente)
    @type  Function
    @author user
    @since 05/09/2023
    @version version
    @param nOp, numeric, OpçãoOpción aque serse aplicadaaplicará
    @param cCodPerfil, character, Código dodel perfil Perfilal aque serse vinculadovinculará oel participante
    @param cTipoPart, character, Tipo dode Participanteparticipante - FornecedorProveedor (1) Cliente (2)
    @param cCliFor, character, Código dodel cliente/fornecedorproveedor
    @param cLoja, character, LojaTienda dodel cliente/fornecedorproveedor
    @param cTipoPerf, character, Tipo dode Perfilperfil de participante: 1-OrigemOrigen Destinodestino; 2-Participante; 3-OperaçãoOperación. NoEn nossonuestro caso siempre será sempre 2
    @return lOk, logical, flag que identifica sesi aocurrió inserçãola ocorreuinclusión
/*/
User Function gravaPart(nOp, cCodPerfil, cTipoPart, cCliFor, cLoja, cTipoPerf)
    local oModel as object
    local lOk := .F.

    oModel := FwLoadModel("FISA164") // carregocargo oel modelo de dala rotinarutina

    if nOp == MODEL_OPERATION_UPDATE // verifico sesi ées alteraçãomodificación

        // Através da operaçãoPor medio de la operación de update en noel modelo, consigo adicionaragregar umauna novanueva
        // línea linhaen nala GRID (F22).
        oModel:SetOperation(MODEL_OPERATION_UPDATE)
        oModel:Activate() // ativoactivo oel modelo

        //AdicionaAgrega una umanueva novalínea linhaen noel 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("MensagemMensaje : OpçãoOpción de operaçãooperación diferente dade la esperada: ")
        ConOut("MensagemMensaje : OperaçãoOperación esperada: 4")
        ConOut("MensagemMensaje : OperaçãoOperación recebidarecibida: " + str(nOp))
    endif
Return lOk
   



03.

...

INFORMACIONES TÉCNICAS

Identificadores do modelo da rotina FISA164

Identificador

Descrição

Descripción

FISA164

Identificador

do

del modelo

FISA164

Identificador

do

del submodelo

de cabeçalho da rotina

de encabezado de la rutina

FISA164PARTICIPANTE

Identificador

do

del submodelo de grid

da rotina

de la rutina

04.

...

TABLAS UTILIZADAS


Tabela

Tabla

Descrição

Descripción

F20

Perfis Tributários

Perfiles tributarios            

F22

Perfil Trib.

de

del Participante