// MoveAgenda - Atualzar Agebndas/*/
//-------------------------------------------------
Atualizar Agendas
User Function MoveAgenda(oSay)
Local aInfo := {}
Local aAux := {}
Local aCodTFF := {}
Local aCodTec := {}
Local aCampos := {}
Local cAliasABQ := GetNextAlias()
Local cAliasABB := GetNextAlias()
Local cAliasTGY := GetNextAlias()
Local cAliasP := "MNTPRO"
Local cCodTFJ := (cAliasP)->TFJ_CODIGO
Local cContrt := ""
Local cConRev := ""
Local cOriTFJ := ""
Local cIn2 := ""
Local cSqlTFF := ""
Local cField := ""
Local cMsg := "NãoNao foram encontrados agendas de atendentes em aberto para o OrçamentoOrcamento/Contrato/Posto/Recursos HumanoHumanos informado."
Local dDtIni := Stod("")
Local dDtFin := Stod("")
Local lFound := .F.
Local nPosTFF := 0
Local nPosTec := 0
Local nTotal := 0
Local nPos := 0
Local nI := 0
Local nX := 0
BEGIN TRANSACTION
TFJ->(DbSetOrder(1)) //TFJ_FILIAL+TFJ_CODIGO
If TFJ->(DbSeek(xFilial("TFJ")+cCodTFJ))
// Pesquisar Orcamento/Contrato Origem
cContrt := cContrt := TFJ->TFJ_CONTRT
cConRev := TFJ->TFJ_CONREV
cOriTFJ := TFJ->TFJ_XCODOR
BeginSql Alias cAliasABQ
SELECT
SELECT
TFF.TFF_COD,
TFF.TFF_XCODOR,
ABQ.ABQ_CONTRT,
ABQ.ABQ_ITEM,
ABQ.ABQ_ORIGEM,
ABQ.ABQ_TOTAL,
ABQ.ABQ_SALDO
FROM %table:ABQ% ABQ
INNER JOIN %table:TFJ% TFJ ON
TFJ.TFJ_FILIAL TFJ.TFJ_FILIAL = %xFilial:TFJ% AND
TFJ.TFJ_CODIGO = %Exp:cOriTFJ% AND
TFJ.TFJ_STATUS = '1' AND AND
TFJ.%notdel%
INNER JOIN %table:TFL% TFL ON
TFL.TFL_FILIAL = %xFilial:TFL% AND
TFL.TFL_CODPAI = TFJ.TFJ_CODIGO AND
TFL.%notdel%
INNER JOIN %table:TFF% TFF ON
TFF.TFF_FILIAL = %xFilial:TFF% AND
TFF.TFF_FILIAL = ABQ.ABQ_FILTFF AND
TFF.TFF_COD = ABQ.ABQ_CODTFF AND
TFF.TFF_CODPAI = TFL.TFL_CODIGO AND
TFF.%notdel%
WHERE
WHERE
ABQ.ABQ_FILIAL = %xFilial:ABQ% AND ABQ.%notdel%
EndSql
While (cAliasABQ)->(!EOF())
aAux := Array(3)
aAux[1] := (cAliasABQ)->ABQ_CONTRT+(cAliasABQ)->ABQ_ITEM+(cAliasABQ)->ABQ_ORIGEM // Contrato Origem
aAux[2] := cContrt+(cAliasABQ)->ABQ_ITEM+(cAliasABQ)->ABQ_ORIGEM // Contrato Destino
aAux[3] := (cAliasABQ)->ABQ_TOTAL -(cAliasABQ)->ABQ_SALDO // Consumido da configuracao original
aAdd(aInfo, aAux)
(cAliasABQ)->(DbSkip())
EndDo
(cAliasABQ)->(DbCloseArea())
If Len(aInfo) > 0 .And. MsgYesNo("Confirma a importaçãoimportacao das Agendas dos Atendentes do OrçamentoOrcamento " + cOriTFJ + " para o OrçamentoOrcamento " + cCodTFJ + "?")
// Realiza atualizacao da agenda do atendente
For nX := 1 To LEN(aInfo)
cIn2 += " '" + aInfo[nX][1] + "' "
If nX <> LEN(aInfo)
cIn2 += ","
EndIf
EndIf
Next nX
cIn2 := "% IN ( " + cIn2 + ") %"
BeginSQL Alias cAliasABB
SELECT ABB_IDCFAL, ABB_CODTEC, ABB_DTINI, ABB_HRINI, ABB_DTFIM, ABB.R_E_C_N_O_ AS REGISTRO
FROM %Table:ABB% ABB
WHERE ABB.ABB_FILIAL = %xFilial:ABB%
AND (ABB.ABB_CHEGOU <> "S" AND ABB.ABB_ATENDE <> "1")
AND ABB.%NotDel%
AND ABB.ABB AND ABB.ABB_IDCFAL %Exp:cIn2%
ORDER BY 1, 2, 3
EndSQL
EndSQL
While (cAliasABB)->(!EOF())
// Reservar data inicial e final
nPosTec oSay:= aScan(aCodTec, {|x| x[1] == SetText("Agenda - Atendente: "+(cAliasABB)->ABB_CODTEC})
If +" - Data: "+(cAliasABB)->ABB_DTINI)
ProcessMessages()
// Controle data inicial final
nPosTec := aScan(aCodTec)
If nPosTec == 0
aAdd(aCodTec,{(cAliasABB)->ABB_CODTEC, StoDSToD((cAliasABB)->ABB_DTINI), StoDSToD((cAliasABB)->ABB_DTINI)})
Else
Else
aCodTec[nPosTec, 3] := StoD((cAliasABB)->ABB_DTINI)
EndIf
EndIf
// Encontrar registro substituido
substit
nPos := aScan(aInfo, {|x| x[1] == (cAliasABB)->ABB_IDCFAL})
If nPos > 0
ABB->(DbGoTo((cAliasABB)->REGISTRO))
RecLock("ABB", .F.)
ABB->ABB_IDCFAL := aInfo[nPos][2] // Atualizar IDCFAL
ABB->(MsUnlock())
nTotal++
EndIf
EndIf
(cAliasABB)->(DbSkip())
EndDo
(cAliasABB)->(DbCloseArea())
If Empty(cContrt) EndDo
If Empty(cContrt) .OR. At740Recor(cContrt)
For nI := 1 To Len(aInfo)
// Atualizar Saldos
ABQ->(DbSetOrder(1))
//ABQ_FILIAL + ABQ_CONTRT + ABQ_ITEM + ABQ_ORIGEM
If ABQ->(DbSeek(xFilial("ABQ")+aInfo[nI][2]))
RecLock("ABQ", .F.)
ABQ->ABQ_SALDO := ABQ->ABQ_TOTAL - aInfo[nI][3] // Desconta o que ja foi consumido na configuracao anterior
MsUnlock()
EndIf
Next nI
EndIf
// Atualizar informacao da gestao de escalas
consumido na config anterior
MsUnlock()
EndIf
Next nI
EndIf
// Atualizar gestao de escalas
aCodTFF := At870CodTFF(cCodTFJ)
If Len(aCodTFF) > 0
cSqlTFF := "%("
For nI:=1 To Len(aCodTFF)
cSqlTFF += "'" + aCodTFF[ nI, 1 ] + "'"
If (nI+1) <= Len(aCodTFF)
cSqlTFF += ","
EndIf
EndIf
Next nI
cSqlTFF += ")%"
// Verificar as configuracoes dos efetivos
BeginSql Alias cAliasTGY
SELECT
SELECT TGY.*
FROM
FROM %table:TGY% TGY
WHERE
WHERE
TGY.TGY_FILIAL = %xFilial:TGY% AND
TGY.TGY_ULTALO <> ' ' AND TGY.%notDel% AND
TGY.TGY_CODTFF IN %Exp:cSqlTFF%
EndSQL
EndSQL
If (cAliasTGY)->(!Eof())
aCampos := FWSX3Util():GetAllFields("TGY", .F.)
If Len(aCampos) > 0
While (cAliasTGY)->(!Eof())
// Pesquisar datas Inicial e Final
// Pesquisar datas Inicial e Final
nPosTFF := aScan(aCodTFF, {|x| x[1] == (cAliasTGY)->TGY_CODTFF})
If nPosTFF > 0
nPosTec := aScan(aCodTec, {|x| x[1] == nPosTec := aScan(aCodTec, {|x|x[1]==(cAliasTGY)->TGY_ATEND})
dDtIni := StoD("")
dDtFin := StoD("")
If nPosTec > 0
dDtIni := aCodTec[nPosTec, 2]
dDtFin := aCodTec[nPosTec, 3]
EndIf
// Realiza a atualizacao das configuracoes do efetivo TGY
EndIf
// Atualizacao configuracoes
dbSelectArea("TGY")
lFound := TGY->( TGY->(DbSetOrder(1))
lFound := TGY->(DbSeek(xFilial("TGY")+(cAliasTGY)->TGY_ESCALA+(cAliasTGY)->TGY_CODTDX+aCodTFF[nPosTFF, 2]+(cAliasTGY)->TGY_ITEM))
RecLock("TGY", !lFound)
For nX := 1 to Len(aCampos)
For nX := 1 to Len(aCampos)
cField := AllTrim(aCampos[nX])
If cField == "TGY_CODTFF"
TGY->TGY_CODTFF := aCodTFF[nPosTFF, 2]
ElseIf cField == "TGY_DTINI" .And. !Empty(dDtIni)
TGY->TGY_DTINI := dDtIni
ElseIf cField == "TGY_DTFIM" .And. !Empty(dDtFin)
TGY->TGY_DTFIM := dDtFin
ElseIf cField == "TGY_ULTALO" .And. !Empty(dDtFin)
TGY->TGY_ULTALO := dDtFin
ElseIf FWSX3Util():GetFieldType(cField) == "D"
TGY->&(cField) := SToD((cAliasTGY)->&(cField))
Else
Else
TGY->&(cField) := (cAliasTGY)->&(cField)
EndIf
Next nX
EndIf
Next nX
TGY->(MsUnlock())
EndIf
EndIf
(cAliasTGY)->(DbSkip())
EndDo
EndDo
(cAliasTGY)->(DbCloseArea())
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
If nTotal == 0
cMsg := "NãoNao foram encontradas Agendas."
Else
Else
cMsg := "Foram processados " + cValToChar(nTotal) + " Agendas."
EndIf
Else
cMsg := "NãoNao foi encontradoinformado nenhum OrçamentoOrcamento/Contrato/Posto/Recursos Humano para este Contrato."
EndIf
EndIf
END TRANSACTION
MsgAlert(cMsg)
Return Nil |