Producto: | Microsiga Protheus |
Versiones: | A partir da Versão 12 |
Ocurrencia: | Rutina automática - MATA094 |
Entorno: | SIGACOM - Compras |
Descripción: | Rutina automática en el modelo MVC |
Paso a paso: | Ejemplo de rutina automática MATA094 #INCLUDE 'RWMAKE.CH' #INCLUDE 'TBICONN.CH' #INCLUDE 'PROTHEUS.CH' #INCLUDE 'FWMVCDEF.CH' User Function MyExec094() Local oModel094 := Nil //-- Objeto que recibirá el modelo de la MATA094 Local cNum := "PMSA02" //-- Recibe el número del documento que se evaluará Local cTipo := "PC" //-- Recibe el tipo del documento que se evaluará Local cAprov := "000003" //-- Recibe el código del aprobador del documento Local nLenSCR := 0 //-- Control de tamaño de campo del documento Local lOk := .T. //-- Control de validación y commit Local aErro := {} //-- Recibe msg de error de procesamiento //-- Inicia el entorno PREPARE ENVIRONMENT EMPRESA "01" FILIAL "01" USER "Administrador" PASSWORD "*" MODULO "COM" nLenSCR := TamSX3("CR_NUM")[1] //-- Obtiene tamaño del campo CR_NUM DbSelectArea("SCR") SCR->(DbSetOrder(3)) //-- CR_FILIAL+CR_TIPO+CR_NUM+CR_APROV If SCR->(DbSeek(xFilial("SCR") + cTipo + Padr(cNum, nLenSCR) + cAprov)) //-- Códigos de operaciones posibles: //-- "001" // Liberado //-- "002" // Revertir //-- "003" // Superior //-- "004" // Transferir Superior //-- "005" // Rechazado //-- "006" // Bloqueo //-- "007" // Visualización //-- Selecciona la operación de aprobación de documentos A094SetOp('001') //-- Carga el modelo de datos y selecciona la operación de aprobación (UPDATE) oModel094 := FWLoadModel('MATA094') oModel094:SetOperation( MODEL_OPERATION_UPDATE ) oModel094:Activate() //-- Valida el formulario lOk := oModel094:VldData() If lOk //-- Si validó, graba el formulario lOk := oModel094:CommitData() EndIf //-- Evalua errores If !lOk //-- Busca el Error del Modelo de Datos aErro := oModel094:GetErrorMessage() //-- Elabora el texto que se mostrará en la pantalla AutoGrLog("Id del formulario de origen:" + ' [' + AllToChar(aErro[01]) + ']') AutoGrLog("Id del campo de origen: " + ' [' + AllToChar(aErro[02]) + ']') AutoGrLog("Id del formulario de error: " + ' [' + AllToChar(aErro[03]) + ']') AutoGrLog("Id del campo de error: " + ' [' + AllToChar(aErro[04]) + ']') AutoGrLog("Id del error: " + ' [' + AllToChar(aErro[05]) + ']') AutoGrLog("Mensaje del error: " + ' [' + AllToChar(aErro[06]) + ']') AutoGrLog("Mensaje de la solución:" + ' [' + AllToChar(aErro[07]) + ']') AutoGrLog("Valor atribuido: " + ' [' + AllToChar(aErro[08]) + ']') AutoGrLog("Valor anterior: " + ' [' + AllToChar(aErro[09]) + ']') //-- Muestra el mensaje de error MostraErro() EndIf //-- Desactiva el modelo de datos oModel094:DeActivate() Else MsgInfo("Documento no encontrado!", "MyExec094") EndIf //-- Finaliza el entorno RESET ENVIRONMENT Return Nil Ejemplo de reversión para la rutina MATA094 #INCLUDE 'RWMAKE.CH' #INCLUDE 'TBICONN.CH' #INCLUDE 'PROTHEUS.CH' User Function MyExec094() Local cNum := "PMSA02" //-- Recibe el número del documento que se evaluará Local cTipo := "PC" //-- Recibe el tipo del documento que se evaluará Local cAprov := "000003" //-- Recibe el código del aprobador del documento Local nLenSCR := 0 //-- Control de tamaño del campo del documento Local lOk := .T. //-- Control de validación y commit //-- Inicia el entorno PREPARE ENVIRONMENT EMPRESA "01" FILIAL "01" USER "Administrador" PASSWORD "*" MODULO "COM" nLenSCR := TamSX3("CR_NUM")[1] //-- Obtiene tamaño del campo CR_NUM DbSelectArea("SCR") SCR->(DbSetOrder(3)) //-- CR_FILIAL+CR_TIPO+CR_NUM+CR_APROV If SCR->(DbSeek(xFilial("SCR") + cTipo + Padr(cNum, nLenSCR) + cAprov)) lOk := A094VldEst() If lOk MsgInfo("El documento "+cNum+" se revertió con éxito.") Else MsgInfo("Ocurrió un error al revertir el documento "+cNum) EndIf Else MsgInfo("¡Documento no encontrado!", "MyExec094") EndIf //-- Finaliza el entorno RESET ENVIRONMENT Return Nil Ejemplo de rechazo para la rutina MATA094 #INCLUDE 'TBICONN.CH' #INCLUDE 'PROTHEUS.CH' #INCLUDE 'FWMVCDEF.CH' User Function MyExec094() Local oModel094 := Nil //-- Objeto que recibirá el modelo de la MATA094 Local cNum := "000000000000001" //-- Recibe el número del documento que se evaluará Local cTipo := "CT" //-- Recibe el tipo del documento que se evaluará Local cAprov := "000003" //-- Recibe el código del aprobador del documento Local cJustif := "Rechazo de contrato" //-- Recibe la justificación para rechazo Local nLenSCR := 0 //-- Control de tamaño del campo del documento Local lOk := .T. //-- Control de validación y commit Local aErro := {} //-- Recibe msg de error de procesamiento //-- Inicia el entorno PREPARE ENVIRONMENT EMPRESA "01" FILIAL "01" USER "Administrador" PASSWORD "*" MODULO "COM" nLenSCR := TamSX3("CR_NUM")[1] //-- Obtiene tamaño del campo CR_NUM DbSelectArea("SCR") SCR->(DbSetOrder(3)) //-- CR_FILIAL+CR_TIPO+CR_NUM+CR_APROV If SCR->(DbSeek(xFilial("SCR") + cTipo + Padr(cNum, nLenSCR) + cAprov)) //-- Códigos de operaciones posibles: //-- "001" // Liberado //-- "002" // Revertir //-- "003" // Superior //-- "004" // Transferir Superior //-- "005" // Rechazado //-- "006" // Bloqueo //-- "007" // Visualización //-- Selecciona la operación de rechazo de documentos A094SetOp('005') //-- Carga el modelo de datos y selecciona la operación de aprobación (UPDATE) oModel094 := FWLoadModel('MATA094') oModel094:SetOperation( MODEL_OPERATION_UPDATE ) oModel094:Activate() //-- Informa la justificación oModel094:GetModel('FieldSCR'):SetValue('CR_OBS', cJustif) //-- Valida el formulario lOk := oModel094:VldData() If lOk //-- Si validó, graba el formulario lOk := oModel094:CommitData() EndIf //-- Evalua errores If !lOk //-- Busca el Error del Modelo de Datos aErro := oModel094:GetErrorMessage() //-- Elabora el texto que se mostrará en la pantalla AutoGrLog("Id del formulario de origen:" + ' [' + AllToChar(aErro[01]) + ']') AutoGrLog("Id del campo de origen: " + ' [' + AllToChar(aErro[02]) + ']') AutoGrLog("Id del formulario de error: " + ' [' + AllToChar(aErro[03]) + ']') AutoGrLog("Id del campo de error: " + ' [' + AllToChar(aErro[04]) + ']') AutoGrLog("Id del error: " + ' [' + AllToChar(aErro[05]) + ']') AutoGrLog("Mensaje del error: " + ' [' + AllToChar(aErro[06]) + ']') AutoGrLog("Mensaje de la solución:" + ' [' + AllToChar(aErro[07]) + ']') AutoGrLog("Valor atribuido: " + ' [' + AllToChar(aErro[08]) + ']') AutoGrLog("Valor anterior: " + ' [' + AllToChar(aErro[09]) + ']') //-- Muestra el mensaje de error MostraErro() EndIf //-- Desactiva el modelo de datos oModel094:DeActivate() Else MsgInfo("Documento no encontrado!", "MyExec094") EndIf //-- Finaliza el entorno RESET ENVIRONMENT Return Nil Ejemplo de transferencia superior para la rutina MATA094 #INCLUDE 'RWMAKE.CH' #INCLUDE 'TBICONN.CH' #INCLUDE 'PROTHEUS.CH' #INCLUDE 'FWMVCDEF.CH' User Function MyExec094() Local oModel094 := Nil //-- Objeto que recibirá el modelo de la MATA094 Local cNum := "PMSAM7" //-- Recibe el número del documento que se evaluará Local cTipo := "PC" //-- Recibe el tipo del documento que se evaluará Local cAprov := "SALC14" //-- Recibe el código del aprobador del documento Local cProxApr := "000451" //superior Local cGrupoAp := "ROM049" Local cJustif := "Teste" Local nLenSCR := 0 //-- Control de tamaño del campo del documento Local lOk := .T. //-- Control de validación del commit Local aErro := {} //-- Recibe msg de error de procesamiento //-- Inicia el entorno PREPARE ENVIRONMENT EMPRESA "01" FILIAL "01" USER "Administrador" PASSWORD "*" MODULO "COM" nLenSCR := TamSX3("CR_NUM")[1] //-- Obtiene el tamaño del campo CR_NUM DbSelectArea("SCR") SCR->(DbSetOrder(3)) //-- CR_FILIAL+CR_TIPO+CR_NUM+CR_APROV If SCR->(DbSeek(xFilial("SCR") + cTipo + Padr(cNum, nLenSCR) + cAprov)) //-- Códigos de operaciones posibles: //-- "001" // Liberado //-- "002" // Revertir //-- "003" // Superior //-- "004" // Transferir Superior //-- "005" // Rechazado //-- "006" // Bloqueo //-- "007" // Visualización //-- Selecciona la operación de aprobación de documentos A094SetOp('004') //-- Carga el modelo de datos y selecciona la operación de aprobación (UPDATE) oModel094 := FWLoadModel('MATA094') oModel094:SetOperation( MODEL_OPERATION_UPDATE ) oModel094:Activate() oModel094:GetModel("FieldSCR"):SetValue( 'CR_OBS' , cJustif ) //-- Valida el formulario lOk := oModel094:VldData() If lOk //-- Si validó, graba el formulario lOk := oModel094:CommitData() EndIf //-- Evalúa errores If !lOk //-- Busca el Error del Modelo de Datos aErro := oModel094:GetErrorMessage() //-- Elabora el texto que se mostrará en la pantalla AutoGrLog("Id de formulario de origen:" + ' [' + AllToChar(aErro[01]) + ']') AutoGrLog("Id del campo de origen: " + ' [' + AllToChar(aErro[02]) + ']') AutoGrLog("Id del formulario de error: " + ' [' + AllToChar(aErro[03]) + ']') AutoGrLog("Id del campo de error: " + ' [' + AllToChar(aErro[04]) + ']') AutoGrLog("Id de error: " + ' [' + AllToChar(aErro[05]) + ']') AutoGrLog("Mensaje del error: " + ' [' + AllToChar(aErro[06]) + ']') AutoGrLog("Mensaje de la solución:" + ' [' + AllToChar(aErro[07]) + ']') AutoGrLog("Valor atribuido: " + ' [' + AllToChar(aErro[08]) + ']') AutoGrLog("Valor anterior: " + ' [' + AllToChar(aErro[09]) + ']') //-- Muestra el mensaje de error MostraErro() EndIf //-- Desactiva el modelo de datos oModel094:DeActivate() Else MsgInfo("¡Documento no encontrado!", "MyExec094") EndIf //-- Finaliza el entorno RESET ENVIRONMENT Return Nil |
Observación: | Para más información consulte en el documento "ADVPL utilizando MVC" |