1: #include "protheus.ch"
2: #include "poncalen.ch"
3:
4: /*/
5: Funcao: U_PNMTABC01
6: Data: 28/12/2011
7: Autor: Marinaldo de Jesus
8: Uso: Ponto de Entrada para edicao do array aTabCalend
9: */
10: User Function PNMTABC01()
11:
12: Local aAfasta := {}
13: Local aTabCalend := ParamIxb[1]
14:
15: Local lCriaCalOk := ParamIxb[2]
16: Local lAfastper := .F.
17:
18: Local cTipAfas
19:
20: Local dData:= ( dPerIni - 1 )
21: Local dIniAfas
22: Local dFimAfas
23:
24: Local nPosTabIni
25: Local nPosTabFim
26:
27: Local uRet
28:
29: BEGIN SEQUENCE
30:
31: IF !( StacksApon() )
32: BREAK
33: EndIF
34:
35: IF !( lCriaCalOk )
36: BREAK
37: EndIF
38:
39: lAfastper := SRA->(fAfastaPer(@aAfasta,dPerIni,dPerFim,RA_FILIAL,RA_MAT))
40: IF !( lAfastper )
41: BREAK
42: EndIF
43:
44: IF !( Type( "aTabPadrao" ) == "A" )
45: Private aTabPadrao := {}
46: EndIF
47:
48: While ( ( ++dData ) <= dPerFim )
49:
50: dIniAfas := Ctod("//")
51: dFimAfas := Ctod("//")
52: lAfast := SRA->(fAfasta(RA_FILIAL,RA_MAT,dData,@dIniAfas,@dFimAfas,@cTipAfas,aAfasta))
53:
54: IF (;
55: !( lAfast );
56: .or.;
57: !( cTipAfas == "Y" );
58: )
59: Loop
60: EndIF
61:
62: uRet := GetInfoPosTab(;
63: CALEND_POS_TIPO_DIA ,;//01:Posicao em aTabCalend para Obtencao da Informacao
64: "1E" ,;//02:Flag da Marcacao "1E,1S,..."
65: dData ,;//03:Data em aTabCalend
66: aTabCalend ,;//04:Calendario de Marcacoes
67: aTabPadrao ,;//05:Tabela de Horario Padrao
68: dPerIni ,;//06:Periodo Inicial de Apontamento
69: dPerFim ,;//07:Periodo Final de Apontamento
70: .T. ,;//08:Informacao Referente a Funcionario
71: SRA->RA_TNOTRAB ,;//09:Turno de Trabalho
72: SRA->RA_SEQTURN ,;//10:Sequencia
73: SRA->RA_FILIAL ,;//11:Filial
74: .T. ,;//12:Carrega Excecoes
75: NIL ,;//13:Bloco para Pesquisa em aTabCalend
76: @nPosTabIni ;//14:Retorno da Posicao do aTabCalend
77: )
78:
79: IF !( uRet == "N" )
80: Loop
81: EndIF
82:
83: uRet := GetInfoPosTab(;
84: CALEND_POS_TIPO_DIA ,;//01:Posicao em aTabCalend para Obtencao da Informacao
85: "__LASTMARC__" ,;//02:Flag da Marcacao "1E,1S,..."
86: dData ,;//03:Data em aTabCalend
87: aTabCalend ,;//04:Calendario de Marcacoes
88: aTabPadrao ,;//05:Tabela de Horario Padrao
89: dPerIni ,;//06:Periodo Inicial de Apontamento
90: dPerFim ,;//07:Periodo Final de Apontamento
91: .T. ,;//08:Informacao Referente a Funcionario
92: SRA->RA_TNOTRAB ,;//09:Turno de Trabalho
93: SRA->RA_SEQTURN ,;//10:Sequencia
94: SRA->RA_FILIAL ,;//11:Filial
95: .T. ,;//12:Carrega Excecoes
96: NIL ,;//13:Bloco para Pesquisa em aTabCalend
97: @nPosTabFim ;//14:Retorno da Posicao do aTabCalend
98: )
99:
100: nPosTabIni -= 1
101: While ( ( ++nPosTabIni ) <= nPosTabFim )
102: aTabCalend[ nPosTabIni ][ CALEND_POS_TIPO_DIA ] := "S"
103: aTabCalend[ nPosTabIni ][ CALEND_POS_AFAST ] := .F.
104: End While
105:
106: End While
107:
108: END SEQUENCE
109:
110: Return( aTabCalend )
111:
112: /*/
113: Funcao: StacksApon
114: Data: 28/12/2011
115: Autor: Marinaldo de Jesus
116: Uso: Verifica se esta nas Rotinas de Apontamento de Marcacoes
117: */
118: Static Function StacksApon()
119:
120: Local aStacks := {}
121:
122: Local lStack := .F.
123:
124: Local nStack
125: Local nStacks
126:
127: aAdd( aStacks , { "PONA040" , .F. } )
128: aAdd( aStacks , { "PONA280" , .F. } )
129: aAdd( aStacks , { "PONA230" , .F. } )
130: aAdd( aStacks , { "PONM010" , .F. } )
131:
132: nStacks := Len( aStacks )
133: For nStack := 1 To nStacks
134: lStack := IsInCallStack( aStacks[ nStack ][ 1 ] )
135: aStacks[ nStack ][ 2 ] := lStack
136: IF ( lStack )
137: Exit
138: EndIF
139: Next nStack
140:
141: Return( lStack )
Comentários
Postar um comentário