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 producto (FISA166) es una rutina disponible por el Configurador de tributos

...

O Cadastro de Perfil Tributário de Produto (FISA166) é uma rotina disponível pelo Configurador de Tributos (FISA170) para agrupar todos os produtos que compartilham de características semelhantes a serem enquadradas nas operações fiscais. los productos que comparten características semejantes que se encuadran en las operaciones fiscales.

Por medio del sistema, el usuario tiene la posibilidad de, al registrar un nuevo producto, utilizar el Através do sistema o usuário tem a possibilidade de ao cadastrar um novo produto utilizar do facilitador fiscal (MV_FACAUTO) para adicionar um novo produto a um agregar un nuevo producto a un Perfil de Produtoproducto 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 FISA166 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 gravaProd que grabará el nuevo producto en un perfil de producto 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 gravaProd se desarrolló en este ejemplo, de acuerdo con el concepto del MVC.

La gravaProd 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 producto.


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 gravaProd que fará a gravação do novo produto em um perfil de produto 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 gravaProd foi desenvolvida nesse exemplo conforme o conceito do MVC.

A gravaProd 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 produto.

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 // AlteraçãoModificación
    local cCodPerfil := "200001"
    local cTipoPerf := "04" // PERFIL DE PRODUTOPRODUCTO
    local cCodProd := "MP0000000000000000000000000002"
    local lOk := .F.

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

    // preparo oel ambienteentorno
    // prepare oel ambienteentorno dacomo maneiramejor quele achar melhorparezca
    // para este exemploejemplo abrireisolo apenasabriré aslas tabelastablas F20 ey F24
    PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "XIFIS26" MODULO "FIS" TABLES "F20", "F24"


        /*
            Lógica de cadastroregistro de producto produtopor viael execAuto dade la rotinarutina de
            cadastroregistro de produtoproducto.
        */


        // InclusãoInclusión de novonuevo produtoproducto emen umun perfil de produto jáproducto 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 produtoproducto
            if F20->(MsSeek(xFilial("F20") + cCodPerfil + cTipoPerf))
                // chamollamo ala funçãofunción para gravargrabar un novonuevo produtoproducto (F24)
                lOk := u_gravaProd(nOp, cCodPerfil, cTipoPerf, cCodProd)
                if !lOk
                    ConOut("MensagemMensaje : NãoNo foifue possívelposible ala inserçãoinclusión de novo produto noun nuevo producto en el perfil. Verificar Log.")
                else 
                    ConOut("MensagemMensaje : Se Incluídoincluyó produtoproducto " + cCodProd + " ao perfil " + cCodPerfil+".")
                endif
            else
                ConOut("MensagemMensaje : Perfil de Produtoproducto inexistente!")
            endIf
        endif
        ConOut("MensagemMensaje : FimFinal de dala Execuçãoejecución emen - "+Time())

    RESET ENVIRONMENT

Return


/*/{Protheus.doc} User Function gravaProd
    (GravaGraba produtoproducto emen perfil de produto jáproducto 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 del doperfil Perfilal aque serse vinculadovinculará oel participante
    @param cTipoPerf, character, Tipo dode Perfilperfil de participante: 1-OrigemOrigen Destinodestino; 2-Participante; 3-OperaçãoOperación. NoEn nossonuestro caso siempre será sempre 2
    @param cCodProd, character, Código dodel Produtoproducto que seráse inseridoincluirá aoal perfil
    @return lOk, logical, flag que identifica sesi aocurrió inserçãola ocorreuinclusión
/*/
User Function gravaProd(nOp, cCodPerfil, cTipoPerf, cCodProd)
    local oModel as object
    local lOk := .F.

    oModel := FwLoadModel("FISA166") // carregocargo oel modelo dade la rotinarutina

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

        // Por medio Atravésde dala operaçãooperación de update en noel modelo, consigo adicionaragregar umauna novanueva
        // línea linhaen nala GRID (F24).
        oModel:SetOperation(MODEL_OPERATION_UPDATE)
        oModel:Activate() // ativoactivo oel modelo

        //AdicionaAgrega una umanueva novalínea linhaen noel grid de produtoproducto
        oModel:GetModel("FISA166PRODUTO"):AddLine()
        oModel:SetValue("FISA166PRODUTO", "F24_CODIGO", cCodPerfil)
        oModel:SetValue("FISA166PRODUTO", "F24_CDPROD", cCodProd)
        oModel:SetValue("FISA166PRODUTO", "F24_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 de dala 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 del modelo de la rutina FISA164

Identificador

Descrição

Descripción

FISA166

Identificador

do

del modelo

FISA166

Identificador

do

del submodelo de

cabeçalho da rotina

encabezado de la rutina

FISA166PRODUTO

Identificador

do

del submodelo de grid de

produto da rotina

producto de la rutina

FISA166ORIGEM

Identificador

do

del submodelo de grid

de origem da rotina

de origen de la rutina

04.

...

TABLAS UTILIZADAS


Tabela

Tabla

Descrição

Descripción

F20

Perfis Tributários

Perfiles tributarios            

F24

Perfil

Tributário

tributario de

Produto

producto  

F25

Perfil

Produto x Origem

Producto vs. Origen