A nova rotina de Registro de Pendências, permite o gerenciamento das pendências de forma automática, selecionando-se a operação desejada e também os campos que devem ser complementados no registro.
Realizar processamento da rotina de gerenciamento das pendências de forma automática.
O conteúdo das variáveis deverão ser enviados no instante da execução da rotina. Vide exemplo abaixo:
Variáveis estáticas que devem ser carregadas via função TMSAF89Set:
#INCLUDE "PROTHEUS.CH" /*{Protheus.doc} AutoPend Exemplo de Rotina Automática da Pendência @type Static Function @author Totvs @since 31/01/2025 @version P12 R12.1.29 @param nOpcao @return return, return_type, return_description @example EncPende() (examples) @see (links_or_references) */ User Function AutoPend(cFilPnd,cNumPnd,aDados,nOpcao) Local aDadosDUU := {} Local aAreas := {DUU->(GetArea()),GetArea()} Local aCamposDUU := {} Local lRet := .T. Local nCntFor1 := 0 Local oMdlPnd Local oMdlFldDUU Local oStruDUU Default cFilPnd := "M SP 01 " Default cNumPnd := "000044" Default aDados := {{"DUU_MOTIVO","TESTE"},{"DUU_OBSENC","TESTE"},{"DUU_CODMTC","0001"}} Default nOpcao := 4 If !Empty(cNumPnd) .And. nOpcao != 0 DUU->(DbSetOrder(1)) If DUU->(DbSeek(xFilial("DUU") + cFilPnd + cNumPnd)) Aadd(aDadosDUU,{"DUU_FILPND",cFilPnd}) Aadd(aDadosDUU,{"DUU_NUMPND",cNumPnd}) For nCntFor1 := 1 To Len(aDados) Aadd(aDadosDUU,{aDados[nCntFor1,1],aDados[nCntFor1,2]}) Next nCntFor1 //-- Carrega Rotina Extra TMSAF89Set("nRotExt",11) //-- Encerrar //-- Carrega Opção no Encerramento da Pendência TMSAF89Set("nRadio",1) //-- Somente Encerra //-- Carrega Fechamento Automático da Conciliação TMSAF89Set("lConAut",.T.) //-- Fecha Automaticamente //-- Exibe Perguntas ao Usuário TMSAF89Set("lPergUsu",.F.) //-- Não Exibe Perguntas // Permite mudar o informe da Identificação Produto na Conciliação Sobras/Faltas 0=Não Utiliza,1=Obrigatório,2=Não Obrigatório TMSAF89Set("cTMSCOSB","0") //-- Carrega o Model da Pendência oMdlPnd := FWLoadModel("TMSAF89") oMdlPnd:SetOperation(nOpcao) //-- Ativa o Model da Pendência oMdlPnd:Activate() //-- Carrega o Modelo da Pendência oMdlFldDUU := oMdlPnd:GetModel("MdFieldDUU") oStruDUU := oMdlFldDUU:GetStruct() aCamposDUU := oStruDUU:GetFields() oMdlFldDUU:Activate() //-- Registro de Pendências For nCntFor1 := 1 To Len(aDadosDUU) If AScan(aCamposDUU,{|x| AllTrim(x[3]) == AllTrim(aDadosDUU[nCntFor1,1])}) > 0 If !oMdlFldDUU:SetValue(aDadosDUU[nCntFor1,1],aDadosDUU[nCntFor1,2]) lRet := .F. Exit EndIf EndIf Next nCntFor1 //-- Grava os Dados If lRet If (lRet := oMdlPnd:VldData()) oMdlPnd:CommitData() EndIf EndIf //-- Se Ocorreu Algum Erro Exibe Mensagem If !lRet MostraErro() EndIf //-- Desativa o Model do Planejamento oMdlPnd:DeActivate() EndIf EndIf AEval(aAreas,{|x,y| RestArea(x),FwFreeArray(x)}) FwFreeArray(aAreas) Return lRet |
DUU - Registro de Pendências
<!-- esconder o menu --> <style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } </style> |