01. DADOS GERAIS
Produto: | |
---|
Linha de Produto: | |
---|
Segmento: | |
---|
Módulo: | Prestadores de Serviços Terceirização |
---|
Função: | TECA190D.PRW |
---|
País: | Brasil |
---|
Ticket: | Não há |
---|
Requisito/Story/Issue (informe o requisito relacionado) : | DSERSGS-10341 |
---|
02. SITUAÇÃO/REQUISITO
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 dentro do MDT.
03. SOLUÇÃO
Desenvolvido o ponto de entrada GsMDTFil que vai ser chamado na gravação das agendas do atendente, o ponto de entrada só vai ser chamado caso o parâmetro de multi-filial esteja ativo(MV_GSMFIL) e a alocação do atendente ser em um contrato para uma filial diferente dele.
Ao ser chamado, alguns parâmetros para a criação da TN5 e TN6 dentro do modulo do MDT serão passados, assim o cliente vai conseguir incluir e atualizar os registros.
Serão passados 2 arrays contendo informações para a TN5 e a TN6, os 2 arrays terão 2 posições onde vai constar o nome do campo e o conteúdo.
No array da TN5 estará contido as seguintes informações para atualizar os seguintes campos:
{"TN5_FILIAL",Filial da SRA do atendente}
aTN5,{"TN5_NOMTAR",TFF->TFF_LOCAL + " - " + TFF->TFF_FUNCAO}
aTN5,{"TN5_LOCAL",TFF->TFF_LOCAL}
aTN5,{"TN5_POSTO",TFF→TFF_FUNCAO}
O campo TN5_CODTAR deve ser criado dentro do ponto de entrada, ele corresponde ao código da tarefa.
No array da TN6 estará contido as seguintes informações para atualizar os seguintes campos:
{"TN6_FILIAL",Filial da SRA do atendente}
{"TN6_MAT",Matricula do Atendente}
{"TN6_DTINIC",TGY->TGY_DTINI}
{"TN6_DTTERM",TGY->TGY_ULTALO}
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.
Exemplo de utilização
#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 dDtIniMdt := sTod("") Local lNewTN6 := .F. Local lNewTN5 := .F.
//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 Else TN5->(DbGoTo((cQueryTN5)->TN5RECNO)) //Verifica se há registros na TN6 DbSelectArea("TN6") If !TN6->(dbSeek(aTN6[nFilTN6][2]+TN5->TN5_CODTAR+aTN6[nMatTN6][2])) lNewTN6 := .T. Else dDtIniMdt := TN6->TN6_DTINIC Endif EndIf
If !lNewTN5 If lNewTN6 .And. !TN6->(dbSeek(aTN6[nFilTN6][2]+TN5->TN5_CODTAR+aTN6[nMatTN6][2]+Dtos(dDtIniMdt))) 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 RecLock("TN6",.F.) TN6->TN6_DTINIC := aTN6[nDtInic][2] TN6->TN6_DTTERM := aTN6[nDtTerm][2] TN6->(MsUnLock()) Endif else RecLock("TN6",.T.) TN6->TN6_FILIAL := aTN6[nFilTN6][2] TN6->TN6_CODTAR := cProxTN5 TN6->TN6_MAT := aTN6[nMatTN6][2] TN6->TN6_DTINIC := aTN6[nDtInic][2] TN6->TN6_DTTERM := aTN6[nDtTerm][2] TN6->(MsUnLock()) EndIf
(cQueryTN5)->(dbCloseArea()) (cQueryNum)->(dbCloseArea())
Return
|
04. DEMAIS INFORMAÇÕES
Outras ações/ações relacionadas
05. ASSUNTOS RELACIONADOS
- Coloque links com páginas de assuntos relacionados.

<style>
div.theme-default .ia-splitter #main {
margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
display: none;
}
#main {
padding-left: 10px;
padding-right: 10px;
overflow-x: hidden;
}
.aui-header-primary .aui-nav, .aui-page-panel {
margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
margin-left: 0px !important;
}
.aui-tabs.horizontal-tabs>.tabs-menu>.menu-item.active-tab a::after {
background: #FF9900; !important
}
.menu-item.active-tab {
border-bottom: none !important;
}
</style>
|