Pular para o conteúdo principal

Conout com mensagem padrão e retorno da string formatada - ADVPL



/*/{Protheus.doc}
xMPad

@author TSC679 - CHARLES REITZ
@since 26/09/2013
@version 1.0

@return cMsg, Mensagem padrão formatada

@description

Funcao que monta uma mensagem padrao para ser apresentanda em error log
e no conout. Automaticamente ira ser apresentada em console.
O retorno dela sera a mensagem apresentada no conout.

O Parametro _cMsg1 e _cMFunc possui cache, ou seja se você deseja continuar
com a mensagem 1 sempre igual, apenas envie na primeira chamada
após isso ele irá continuar a levar a mensagem que você informou pela
primeira vez. Para trocar a mensagem pasta enviar o parametro.

@example
xMPad("Funcao teste",1,"Mensagem 1","Mensagem 2")
xMPad(nil,2,nil,"Mensagem 2")
xMPad(nil,3,nil,"Mensagem 2")
xMPad(nil,4,nil,"Mensagem 2")

Visualizaçao:
(09/26/13 20:20:23)[Funcao teste] Ini - Mensagem 1 - Mensagem 2
(09/26/13 20:20:23)[Funcao teste] Info - Mensagem 1 - Mensagem 2
(09/26/13 20:20:23)[Funcao teste] Err - Mensagem 1 - Mensagem 2
(09/26/13 20:20:23)[Funcao teste] Fim - Mensagem 1 - Mensagem 2

@param _cMFunc, Primeira mensagem. Determina o nome da funcao
@param _nTipM, Determina a mensagem padrao interna
@param _cMsg1, Determina a primeira mensagem da linha.
@param _cMsg2, Determina a Segunda mensagem da linha

/*/

Static FUnction xMPad(_cMFunc,_nTipM,_cMsg1,_cMsg2)
Local aMsg := { "Ini ",;//tipo 1
"Info",; //tipo 2
"Erro",; //tipo 3
"Fim ";//tipo 4
}
Local cMsg := ""
//Private _cCachMSG1
Default _nTipM := 2
Default _cMsg1 := ""
Default _cMsg2 := ""
Default _cMFunc := ""
Public _cCachMSGLog1
Public _cMFuncCache

/*
Armazena cache a mensagem01 na variavel
para nao precisar passar sempre dessa forma
pode utilizar a mensagem1 padrao
*/

If _cCachMSGLog1 = Nil
If Empty(_cMsg1)
_cCachMSGLog1 := ""
Else
_cCachMSGLog1 := _cMsg1
EndIf
ElseIf !Empty(_cMsg1)
_cCachMSGLog1 := _cMsg1
EndIf

//Trata o paraemtro _cMFunc - para colocar em cache
If _cMFuncCache = Nil
If Empty(_cMFunc)
_cMFuncCache := ""
Else
_cMFuncCache := _cMFunc
EndIf
ElseIf !Empty(_cMFunc)
_cMFuncCache := _cMFunc
EndIf

//Monta a Data na Linha
cMsg := "("+DTOC(DATE())+" "+TIME()+")"
//Funcao que esta sendo rodada
cMsg += "["+_cMFuncCache+"] "
//Mensagem - Inicial - Final - Informativa ou Erro
cMsg += aMsg[_nTipM]+If(Empty(_cCachMSGLog1),""," - ")
//Mensagem 1
cMsg += _cCachMSGLog1+If(Empty(_cMsg2),""," - ")
//Mensagem 2
cMsg += _cMsg2
//Apresenta a mensagem no console
conout(cMsg)

Return cMsg


Postagens mais visitadas deste blog

Recursividade Minha Linda! Estrutura Produtos Protheus SG1

Fato! Depois que você conhece recursividade em sua vida tudo fica mais leve (rss... ) a recursividade pode ser infinita (pode não ta!) se for infinita vai dar problema, não pode. Mas a recursividade nos ajuda a deixar nosso sistema mais flexível e dinâmico para montar uma série de regras de negócio. Hoje vou falar exatamente da SG1, tabela TOTVS Microsiga Protheus que é utilizada para montar a estrutura de um produto dentro PCP (Planejamento e Controle de Produção). Isso séria algo que a recursividade iria ajudar. Na SG1 temos o campos G1_COD (Pai) e G1_COMP (Filho). G1_COD->G1_COMP->G1_COD->G1_COMP->G1_COD->G1_COMP Seria assim o fluxo da informação. Sem mais delongas, abaixo vou deixar o script para MSSQL para apresentar esses dados. Inté! WITH ESTRUT( CODIGO, COD_PAI, COD_COMP, QTD, PERDA, DT_INI, DT_FIM ,TRT ,RECNO, NIVEL ) AS ( SELECT G1_COD PAI, G1_COD, G1_COMP, G1_QUANT, G1_PERDA, G1_INI, G1_FIM,G1_TRT,SG1.R_E_C_N_O_, 1 AS NIVEL FR...

REST Protheus Converter charset CP1252 para UTF8 com Header Accept UTF-8

O Protheus possui um tag que pode ser utilizada para conversão para UTF8 de forma transparente, basta enviar no header da requisição a TAG ACCEPT com charset=UTF-8, também pode-se adicionar o appllication/json. Accept : application/json; charset=UTF-8 ou Accept : charset=UTF-8 Isso ajuda pois não precisa mais utilizar as funções DecodeUTF8 e EncodeUT8 pois o próprio rest já vai fazer isso.

Cadastro de funções ADVPL

FWDirRemove( cDir, nType, lComplete, lKillFiles ) Função para remover diretórios, com a vantagem de remover somente o ultimo nível ou todo o caminho. cDir                   Diretório a ser removido lComplete          Remove todo o caminho (.T.) ou apenas o ultimo nível (.F.) lKillFiles             Remove os arquivos antes de tentar remover o diretório FWMakeDir( cDir, lShowMsg ) Função para criar diretório com seus subdiretórios, com a vantagem de criar todo o caminho. cDir                    Diretório a ser criado lShowMsg          Exibe ou não mensagem caso não consiga criar o diretório FwNoAccent( cString ) Retira acentos de uma string cString ...