Histórico da Página
...
Quando é utilizado a alocação Multi-filial e também o local de atendimento ter a integração com o Modulo de Medicina do trabalho, é necessário um ponto de entrada para que o cliente controle essas alocações da mesa operacional dentro do MDT.
03. SOLUÇÃO
Desenvolvido o ponto de entrada GsMDTFil que vai ser chamado na gravação das agendas do atendente na mesa operacional, o ponto de entrada só vai ser chamado caso o parâmetro de multi-filial esteja ativo(MV_GSMFILGSMSFIL) e a alocação do atendente ser em um contrato para uma filial diferente dele.
...
{"TN6_FILIAL",Filial da SRA do atendente}
aTN6, {"TN6_MAT",Matricula do Atendente}
aTN6, {"TN6_DTINIC",TGY->TGY_DTINI}
{"TN6_DTTERM",TGY->TGY_ULTALO}
04. DEMAIS INFORMAÇÕES
...
Quando já existe registro na TN6 para o atendente, é necessário só atualizar a data de inicio e termino da alocação, sem ter a necessidade de criar uma nova linha.
Bloco de código | ||
---|---|---|
| ||
#Include 'Protheus.ch'
User Function GsMDTFil()
Local aTN5 := PARAMIXB[01]
Local aTN6 := PARAMIXB[02]
Local nFilTN5 := aScan(aTN5,{|x| AllTrim(x[1])=="TN5_FILIAL"})
Local nNomTarTN5 := aScan(aTN5,{|x| AllTrim(x[1])=="TN5_NOMTAR"})
Local nLocalTN5 := aScan(aTN5,{|x| AllTrim(x[1])=="TN5_LOCAL"})
Local nPostoTN5 := aScan(aTN5,{|x| AllTrim(x[1])=="TN5_POSTO"})
Local nFilTN6 := aScan(aTN6,{|x| AllTrim(x[1])=="TN6_FILIAL"})
Local nMatTN6 := aScan(aTN6,{|x| AllTrim(x[1])=="TN6_MAT"})
Local nDtInic := aScan(aTN6,{|x| AllTrim(x[1])=="TN6_DTINIC"})
Local nDtTerm := aScan(aTN6,{|x| AllTrim(x[1])=="TN6_DTTERM"})
Local cProxTN5 := ""
Local cQueryTN5 := GetNextAlias()
Local cQueryNum := GetNextAlias()
Local lNewTN6 := .F.
Local lNewTN5 := .F.
Local nRecTN6 := 0
//Faz a Busca do codigo da Tarefa
BeginSql Alias cQueryNum
SELECT MAX(TN5_CODTAR) ULTTAREFA
FROM %Table:TN5% TN5
WHERE TN5.TN5_FILIAL = %exp:aTN5[nFilTN5][2]%
AND TN5.%NotDel%
EndSql
cProxTN5 := Soma1( (cQueryNum)->ULTTAREFA )
//Verifica se já existe tarefa criada na TN5
BeginSql Alias cQueryTN5
SELECT TN5.R_E_C_N_O_ TN5RECNO
FROM %Table:TN5% TN5
WHERE TN5.TN5_FILIAL = %exp:aTN5[nFilTN5][2]%
AND TN5.TN5_LOCAL = %exp:aTN5[nLocalTN5][2]%
AND TN5.TN5_POSTO = %exp:aTN5[nPostoTN5][2]%
AND TN5.%NotDel%
EndSql
If (cQueryTN5)->(EOF())
RecLock("TN5",.T.)
TN5->TN5_FILIAL := aTN5[nFilTN5][2]
TN5->TN5_CODTAR := cProxTN5
TN5->TN5_NOMTAR := aTN5[nNomTarTN5][2]
TN5->TN5_LOCAL := aTN5[nLocalTN5][2]
TN5->TN5_POSTO := aTN5[nPostoTN5][2]
TN5->(MsUnlock())
lNewTN5 := .T. //Indica que é um novo registro
RecLock("TN6",.T.)
TN6->TN6_FILIAL := aTN6[nFilTN6][2]
TN6->TN6_CODTAR := TN5->TN5_CODTAR
TN6->TN6_MAT := aTN6[nMatTN6][2]
TN6->TN6_DTINIC := aTN6[nDtInic][2]
TN6->TN6_DTTERM := aTN6[nDtTerm][2]
TN6->(MsUnLock())
Else
TN5->(DbGoTo((cQueryTN5)->TN5RECNO))
If !At190dTN6(aTN6[nFilTN6][2],TN5->TN5_CODTAR,aTN6[nMatTN6][2],dToS(aTN6[nDtInic][2]),@nRecTN6)
lNewTN6 := .T.
Else
If nRecTN6 > 0
TN6->(DbGoTo(nRecTN6))
EndIf
Endif
RecLock("TN6", lNewTN6)
If lNewTN6
TN6->TN6_FILIAL := aTN6[nFilTN6][2]
TN6->TN6_CODTAR := TN5->TN5_CODTAR
TN6->TN6_MAT := aTN6[nMatTN6][2]
Endif
TN6->TN6_DTINIC := aTN6[nDtInic][2]
TN6->TN6_DTTERM := aTN6[nDtTerm][2]
TN6->(MsUnLock())
EndIf
(cQueryTN5)->(dbCloseArea())
(cQueryNum)->(dbCloseArea())
Return |
04. DEMAIS INFORMAÇÕES
...
05. ASSUNTOS RELACIONADOS
...