...
Índice | ||||
---|---|---|---|---|
|
...
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 Produto já producto 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.
...
...
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#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 |
...
Identificadores do modelo da rotina del modelo de la rutina FISA164
Identificador | Descrição Descripción |
---|---|
FISA166 | Identificador dodel modelo |
FISA166 | Identificador dodel submodelo de cabeçalho da rotinaencabezado de la rutina |
FISA166PRODUTO | Identificador dodel submodelo de grid de produto da rotinaproducto de la rutina |
FISA166ORIGEM | Identificador dodel submodelo de grid de origem da rotinade origen de la rutina |
...
Tabela Tabla | Descrição Descripción |
---|---|
F20 | Perfis Tributários Perfiles tributarios |
F24 | Perfil Tributáriotributario de Produtoproducto |
F25 | Perfil Produto x OrigemProducto vs. Origen |