Histórico da Página
...
Bloco de código | ||
---|---|---|
| ||
#INCLUDE "PROTHEUS.CH" //---------------------------------------------- /*/{Protheus.doc} Ponto de Entrada AT870NWMNU/*/ //---------------------------------------------- User Function AT870NWMNU() Local aRetMenu := {} Local nC := 0 Local nTam := 0 If ValType(PARAMIXB) == "A" nTam := Len(PARAMIXB) For nC := 1 To nTam aAdd(aRetMenu, aClone(PARAMIXB[nC])) Next nC EndIf aAdd( aRetMenu, {"Importar Agendas", {|| FwMsgRun(Nil,{|oSay| u_MoveAgenda(oSay)}, Nil, "Atualizando...")}, 2}) Return aRetMenu //------------------------------------------------- /*/{Protheus.doc} MoveAgenda - Atualzar Agebndas/*/ //------------------------------------------------- User Function MoveAgenda() 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ão foram encontrados agendas de atendentes em aberto para o Orçamento/Contrato/Posto/Recursos Humano 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 := TFJ->TFJ_CONTRT cConRev := TFJ->TFJ_CONREV cOriTFJ := TFJ->TFJ_XCODOR BeginSql Alias cAliasABQ 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 = %xFilial:TFJ% AND TFJ.TFJ_CODIGO = %Exp:cOriTFJ% AND TFJ.TFJ_STATUS = '1' 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 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ção das Agendas dos Atendentes do Orçamento " + cOriTFJ + " para o Orçamento " + cCodTFJ + "?") // Realiza atualizacao da agenda do atendente For nX := 1 To LEN(aInfo) cIn2 += " '" + aInfo[nX][1] + "' " If nX <> LEN(aInfo) cIn2 += "," 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_IDCFAL %Exp:cIn2% ORDER BY 1, 2, 3 EndSQL While (cAliasABB)->(!EOF()) // Reservar data inicial e final nPosTec := aScan(aCodTec, {|x| x[1] == (cAliasABB)->ABB_CODTEC}) If nPosTec == 0 aAdd(aCodTec,{(cAliasABB)->ABB_CODTEC, StoD((cAliasABB)->ABB_DTINI), StoD((cAliasABB)->ABB_DTINI)}) Else aCodTec[nPosTec, 3] := StoD((cAliasABB)->ABB_DTINI) EndIf // Encontrar registro substituido 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 (cAliasABB)->(DbSkip()) EndDo (cAliasABB)->(DbCloseArea()) 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 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 Next nI cSqlTFF += ")%" // Verificar as configuracoes dos efetivos BeginSql Alias cAliasTGY SELECT TGY.* FROM %table:TGY% TGY WHERE TGY.TGY_FILIAL = %xFilial:TGY% AND TGY.TGY_ULTALO <> ' ' AND TGY.%notDel% AND TGY.TGY_CODTFF IN %Exp:cSqlTFF% EndSQL If (cAliasTGY)->(!Eof()) aCampos := FWSX3Util():GetAllFields("TGY", .F.) If Len(aCampos) > 0 While (cAliasTGY)->(!Eof()) // Pesquisar datas Inicial e Final nPosTFF := aScan(aCodTFF, {|x| x[1] == (cAliasTGY)->TGY_CODTFF}) If nPosTFF > 0 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 dbSelectArea("TGY") 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) 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 TGY->&(cField) := (cAliasTGY)->&(cField) EndIf Next nX TGY->(MsUnlock()) EndIf (cAliasTGY)->(DbSkip()) EndDo (cAliasTGY)->(DbCloseArea()) EndIf EndIf EndIf If nTotal == 0 cMsg := "Não foram encontradas Agendas." Else cMsg := "Foram processados " + cValToChar(nTotal) + " Agendas." EndIf Else cMsg := "Não foi encontrado nenhum Orçamento/Contrato/Posto/Recursos Humano para este Contrato." EndIf EndIf END TRANSACTION MsgAlert(cMsg) Return Nil //----------------------------------------------------------------------------------------- /*/{Protheus.doc} At870CodTFF - retornar o codigo do recurso humano dentro do orcamento /*/ //----------------------------------------------------------------------------------------- Static Function At870CodTFF(cCodTFJ) Local aRet := {} Local cAliasTFJ := GetNextAlias() BeginSql Alias cAliasTFJ SELECT TFF.TFF_COD, TFF.TFF_XCODOR FROM %table:TFJ% TFJ 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_CODPAI = TFL.TFL_CODIGO AND TFF.%notDel% WHERE TFJ.TFJ_FILIAL = %xFilial:TFJ% AND TFJ.TFJ_CODIGO = %Exp:cCodTFJ% AND TFJ.%notDel% GROUP BY TFF.TFF_COD, TFF.TFF_XCODOR EndSql While (cAliasTFJ)->(!Eof()) aAdd(aRet,{(cAliasTFJ)->TFF_COD, (cAliasTFJ)->TFF_XCODOR}) (cAliasTFJ)->(DbSkip()) EndDo (cAliasTFJ)->(dbCloseArea()) Return(aRet) //------------------------------------------------------------- /*/{Protheus.doc} ConsLocOri - Consulta F3 campo TFL_XCODOR /*/ //------------------------------------------------------------- User Function ConsLocOri() Local cFiltro := "" Local oModel := FwModelActive() Local oMdlTFJ := oModel:GetModel("TFJ_REFER") Local oMdlTFL := oModel:GetModel("TFL_LOC") If oMdlTFL:Length() > 0 cFiltro := "TFL->TFL_LOCAL == '" + oMdlTFL:GetValue("TFL_LOCAL") + "' .AND. TFL->TFL_CONTRT <> ' ' .AND. TFL->TFL_CODPAI == '" + oMdlTFJ:GetValue("TFJ_XCODOR") + "'" cFiltro := "@#" + cFiltro + "@#" EndIf Return cFiltro //------------------------------------------------------------ /*/{Protheus.doc} ConsRHOri - Consulta F3 campo TFF_XCODOR /*/ //------------------------------------------------------------ User Function ConsRHOri() Local cFiltro := "" Local oModel := FwModelActive() Local oMdlTFL := oModel:GetModel("TFL_LOC") Local oMdlTFF := oModel:GetModel("TFF_RH") If oMdlTFF:Length() > 0 cFiltro := "TFF->TFF_PRODUT == '" + oMdlTFF:GetValue("TFF_PRODUT") + "' .AND. TFF->TFF_CONTRT <> ' ' .AND. TFF->TFF_CODPAI == '" + oMdlTFL:GetValue("TFL_XCODOR") + "'" cFiltro := "@#" + cFiltro + "@#" EndIf Return cFiltro //--------------------------------------------------------- /*/{Protheus.doc} ValLocOri - Valid do campo TFL_XCODOR /*/ //--------------------------------------------------------- User Function ValLocOri() Local lRet := .F. Local oModel := FwModelActive() Local oMdlTFJ := oModel:GetModel("TFJ_REFER") Local oMdlTFL := oModel:GetModel("TFL_LOC") Local cAlias := GetNextAlias() BeginSql Alias cAlias SELECT 1 FROM %table:TFL% TFL WHERE TFL.TFL_FILIAL = %xFilial:TFL% AND TFL.TFL_CODIGO = %Exp:oMdlTFL:GetValue("TFL_XCODOR")% AND TFL.TFL_CODPAI = %Exp:oMdlTFJ:GetValue("TFJ_XCODOR")% AND TFL.TFL_LOCAL = %Exp:oMdlTFL:GetValue("TFL_LOCAL")% AND TFL.TFL_CONTRT <> ' ' AND TFL.%notDel% EndSql If (cAlias)->(!Eof()) lRet := .T. EndIf (cAlias)->(dbCloseArea()) Return lRet //-------------------------------------------------------- /*/{Protheus.doc} ValRHOri - Valid do campo TFF_XCODOR /*/ //-------------------------------------------------------- User Function ValRHOri() Local lRet := .F. Local oModel := FwModelActive() Local oMdlTFL := oModel:GetModel("TFL_LOC") Local oMdlTFF := oModel:GetModel("TFF_RH") Local cAlias := GetNextAlias() BeginSql Alias cAlias SELECT 1 FROM %table:TFF% TFF WHERE TFF.TFF_FILIAL = %xFilial:TFF% AND TFF.TFF_COD = %Exp:oMdlTFF:GetValue("TFF_XCODOR")% AND TFF.TFF_PRODUT = %Exp:oMdlTFF:GetValue("TFF_PRODUT")% AND TFF.TFF_LOCAL = %Exp:oMdlTFL:GetValue("TFL_LOCAL")% AND TFF.TFF_CONTRT <> ' ' AND TFF.%notDel% EndSql If (cAlias)->(!Eof()) lRet := .T. EndIf (cAlias)->(dbCloseArea()) Return lRet |
04. DEMAIS INFORMAÇÕES
Aviso | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Esta funcionalidade depende da criação dos campos e consultas específicas usados no Cadastro de Orçamentos Simplif. para permitir relacionar os Postos/Recursos Humanos com Orçamentos;Contratos vigentes, conforme exemplos abaixo.
|
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas