-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathTINI.prw
90 lines (67 loc) · 2.99 KB
/
TINI.prw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#Include 'Protheus.ch'
//====================================================================================================================\\
/*/{Protheus.doc}TINI
====================================================================================================================
@description
Função auxiliar para inicializadores padrão.
@author Thiago Mota
@author <[email protected]>
@author <[email protected]>
@version 1.0
@since 23 de set de 2016
@param cCpoDes, Caracatere, Campo que será inicializado
@param cChave , Caracatere, Chave de pesquisa
@param cCpoRet, Caracatere, Campo a retornar
@param xPadrao, Caracatere, Valor padrão no caso de inclusão - Padrão: campo em branco conforme tipo.
@param lPadrao, Lógico, Retorna o valor padrão. Utilizado em inicializador de Browse e operações de inclusão- Padrão: variável INCLUI, disponível como private nas telas padrão.
@param xIndice, Indefinido, Índice (se numérico) ou Nickname (se caractere ) - Padrão: Índice 1
@param lAddFil, Lógico, Indica se deve adicionar xFilial à cChave - Padrão: .T.
@param cTabela, Caracatere, Alias da tabela (se não for informado, será buscado o Alias do cCpoRet no SX3)
@obs
Função criada para poder executar inicializadores padrão passando menos dados.
O obetivo é ter um inicializador padrão facilmente nos campos virtuais.
retor
Utiliza a função auxilizar U_TPOS para buscar os dados via posicione.
@example U_TINI("C5_ZNOMCLI", SC5->(A1_CLIENTE+M->A1_LOJA), "A1_NOME") // Inicializador padrão
// Retorna o mesmo que:
IF( INCLUI, SPACE(30), POSICIONE("SA1", 1, SC5->(A1_CLIENTE+M->A1_LOJA), "A1_NOME") )
@example U_TINI("C5_ZNOMCLI", SC5->(A1_CLIENTE+M->A1_LOJA), "A1_NOME", .F.) // Inicializador de Browse
/*/
//===================================================================================================================\\
User Function TINI(cCpoDes, cChave, cCpoRet, xPadrao, lInclui, xIndice, lAddFil, cTabela)
Local xRet:= Nil
Local nPos
Static aPadrao:= {}
Default lInclui:= INCLUI
// Se não foi determinado um padrão, busca pelo
If lInclui .And. xPadrao == Nil
If ( nPos:= aScan(aPadrao, {|x| x[1] == cCpoDes }) ) > 0
xPadrao:= aPadrao[nPos][3]
Else
aBkpSx3:= SX3->( GetArea() )
SX3->( DbSetOrder( 2 ) )
If SX3->( MsSeek( cCpoDes ) )
Do Case
Case (SX3->X3_TIPO == "C")
xPadrao:= Space(SX3->X3_TAMANHO)
Case (SX3->X3_TIPO == "M")
xPadrao:= Space(500)
Case (SX3->X3_TIPO == "N")
xPadrao:= 0
Case (SX3->X3_TIPO == "D")
xPadrao:= cTod(" / / ")
Case (SX3->X3_TIPO == "L")
xPadrao:= .F.
EndCase
aAdd(aPadrao, {cCpoDes, SX3->X3_TIPO, xPadrao})
EndIf
SX3->(RestArea(aBkpSx3))
EndIf
EndIf
xRet:= Iif( lInclui, xPadrao, U_TPOS(cChave, cCpoRet, xIndice, lAddFil, cTabela) )
If xRet == Nil .And. xPadrao != Nil
xRet:= xPadrao
EndIf
Return ( xRet )
// FIM da Funcao TINI
//======================================================================================================================