#INCLUDE "PROTHEUS.CH"
#INCLUDE "RWMAKE.CH"
Static Function SchedDef()
// aReturn[1] - Tipo
// aReturn[2] - Pergunte
// aReturn[3] - Alias
// aReturn[4] - Array de ordem
// aReturn[5] - Titulo
Return { "P", "MTA410", "", {}, "tNewProc" }
/*/{Protheus.doc} tNewProc
Exemplo de implementação da classe tNewProcess com opção de processamento em segundo plano
@type Function
@author Bruno Pirolo
@since 26/04/2024
@return nil
/*/
Function tNewProc()
Local bProcess := {|oSelf| Executa(oSelf) }
Local cPerg := "MTA410"
Local aInfoCustom := {}
Local oProcess
//Adiciona opções customizadas
Aadd(aInfoCustom,{"Visualizar",{|oCenterPanel| visualiza(oCenterPanel)},"WATCH" })
Aadd(aInfoCustom,{"Relatorio" ,{|oCenterPanel| Relat(oCenterPanel) },"RELATORIO"})
//Instancia o objeto tNewProcess
oProcess := tNewProcess():New("tNewPro" /*cFunction*/ ,;
"Teste MsNewProcess" /*cTitle*/ ,;
bProcess /*bProcess*/ ,;
"Breve descrição da rotina" /*cDescription*/ ,;
cPerg /*cPerg*/ ,;
aInfoCustom /*aInfoCustom*/ ,;
.T. /*lPanelAux*/ ,;
5 /*nSizePanelAux*/,;
"Descrição do painel Auxiliar" /*cDescriAux*/ ,;
.T. /*lViewExecute*/ ,;
.F. /*lOneMeter*/ ,;
.T. /*lSchedAuto*/)
Return
/*/{Protheus.doc} Executa
Função de processamento
@type Static Function
@author Bruno Pirolo
@since 26/04/2024
@param oProcess, object, Objeto da classe TNewProcess
@return return_var, return_type, return_description
@example
(examples)
@see (links_or_references)
/*/
static Function Executa(oProcess)
Local nCountC5 as numeric
Local nCountC6 as numeric
DbSelectArea("SC5")
DbSetOrder(1)
//Calcula a quantidade de registros na tabela SC5
count to nCountC5
//Posiciona no topo da tabela
DbGotop()
/*Define a quantidade de registros que serão processados na régua 1 (deverá
corresponder exatamente a quantidade de chamadas do metodo IncRegua1)*/
oProcess:SetRegua1(nCountC5)
//Percorre os registros da tabela SC5
While SC5->(!Eof())
//Incrementa a régua de processamento 1
oProcess:IncRegua1("Lendo Pedido de Venda:" + SC5->C5_NUM)
DbSelectArea("SC6")
DbSetOrder(1) //C6_FILIAL, C6_NUM, C6_ITEM, C6_PRODUTO
//Elimina filtros criados na tabela SC6
DbClearFil()
//Filtra os registros da SC6
Set Filter to SC6->C6_FILIAL == xFilial("SC5") .And. SC6->C6_NUM == SC5->C5_NUM
//Calcula a quantidade de registros na tabela SC5
COUNT to nCountC6
//Posiciona no topo da tabela
DbGotop()
/*Define a quantidade de registros que serão processados na régua 2 (deverá
corresponder exatamente a quantidade de chamadas do metodo IncRegua2)*/
oProcess:SetRegua2(nCountC6)
While SC6->(!Eof())
//Incrementa a régua de processamento 2
oProcess:IncRegua2("Pedido: "+SC5->C5_NUM+" - Item: "+SC6->C6_ITEM)
//Grava log do processo (estes dados serão apresentados na opção Log de Processos do componente)
oProcess:SaveLog("Item: "+SC6->C6_ITEM)
Conout("Pedido: "+SC5->C5_NUM+" - Item: "+SC6->C6_ITEM)
SC6->(DbSkip())
End
SC5->(DbSkip())
End
Return
/*/{Protheus.doc} visualiza
Função de teste customizada
@type Static Function
@author Bruno Pirolo
@since 26/04/2024
@param oCenterPanel, object, Objeto do Painel
@return Nil
/*/
Static Function visualiza(oCenterPanel)
@ 65,10 Say "Visualiza" SIZE 80,10 OF oCenterPanel PIXEL
Return
/*/{Protheus.doc} Relat
Função de teste customizada
@type Static Function
@author Bruno Pirolo
@since 26/04/2024
@param oCenterPanel, object, Objeto do Painel
@return Nil
/*/
Static Function Relat(oCenterPanel)
@ 65,10 Say "Relatorio" SIZE 80,10 OF oCenterPanel PIXEL
Return
|