Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Bloco de código
languagetext
#INCLUDE "PROTHEUS.CH"

//--------------------------------------------------------------------------------------------------------------------
/*/{Protheus.doc} Ponto de Entrada AT870NWMNU
/*/
//--------------------------------------------------------------------------------------------------------------------
User 
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", {||u_MoveAgenda( FwMsgRun(Nil,{|| u_MoveAgenda()}, Nil, "Atualizando...")}, 2})

Return aRetMenu

//-------------------------------------------------------------------
/*/{Protheus.doc} MoveAgenda - Atualzar Agebndas/*/
//-------------------------------------------------
/*/{Protheus.doc} MoveAgenda - Atualzar Agebndas
/*/
//--------------------------------------------------------------------------------------------------------------------
User Function MoveAgenda(User Function MoveAgenda()

Local aInfo     := {}
Local aAux      := {}
Local aCodTFF   := {}
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 cMsg      := "Não foram encotrados agendas de atendentes em aberto para oOrçamento/Contrato/Posto/Recursos Humano informado."
Local cSqlTFFnPosTFF   := ""0
Local nPosTFFnTotal    := 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 CODORI
	BeginSql Alias cAliasABQ
		SELECT
			TFF.TFF_COD,
			TFF.TFF_XCODORCODORI,
			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.TFJ_XCODOR <> ' ' AND 	TFJ.%notdel%
		INNER JOIN %table:TFL% TFL ON
			TFL.TFL_FILIAL = %xFilial:TFL%  AND
			TFL.TFL_CODPAI = TFJ.TFJ_CODIGO AND
			TFL.TFL_XCODOR <> ' ' 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.TFF_XCODOR <> ' ' 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 configuraçãoconfiguracao original
		aAdd(aInfo, aAux)
		(cAliasABQ)->(DbSkip())
	EndDo

	(cAliasABQ)->(DbCloseArea())

	If Len(aInfo) > 0
		// Realiza atuaçãoatuacao 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.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%
		EndSQL
		While (cAliasABB)->(!EOF())
			nPos := aScan(aInfo, {|x| x[1] == (cAliasABB)->ABB_IDCFAL}) // Encontrar registro substituido
			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 configuraçãoconfiguracao anterior
					MsUnlock()
				EndIf
			Next nI
		EndIf

		// Atualizar informaçãoinformacao da gestãogestao de escalas
		aCodTFF := At870CodTFF(cOriTFJ)
		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 configuraçõesconfiguracoes dos efetivos
			BeginSql Alias cAliasTGY
				SELECT
					TGY.TGY_FILIAL, TGY.TGY_ESCALA, TGY.TGY_CODTDX,
					TGY.TGY_CODTFF, TGY.TGY_ITEM
				FROM
					%table:TGY% TGY
				WHERE
					TGY.TGY_FILIAL = %xFilial:TGY% AND TGY.%notDel% AND
					TGY.TGY_CODTFF IN %Exp:cSqlTFF%
			EndSql
			// Realiza a atualizaçãoatualizacao das configuraçõesconfiguracoes do efetivo TGY
			dbSelectArea("TGY")
			TGY->(DbSetOrder(1)) //TGY_FILIAL+TGY_ESCALA+TGY_CODTDX+TGY_CODTFF+TGY_ITEM
			While (cAliasTGY)->(!Eof())
				If TGY->(DbSeek(xFilial("TGY")+(cAliasTGY)->TGY_ESCALA+(cAliasTGY)->TGY_CODTDX+(cAliasTGY)->TGY_CODTFF+(cAliasTGY)->TGY_ITEM))
					nPosTFF := aScan(aCodTFF, {|x| x[1] == (cAliasTGY)->TGY_CODTFF})
					If nPosTFF > 0
						RecLock("TGY", .F.)
						TGY->TGY_CODTFF := aCodTFF[nPosTFF, 2]
						TGY->(MsUnlock())
					EndIf
				EndIf
				(cAliasTGY)->(DbSkip())
			EndDo
			(cAliasTGY)->(DbCloseArea())
				EndIf
			EndIf
			(cAliasTGY)->(DbSkip())
		EndDo
		(cAliasTGY)->(DbCloseArea())
	EndIf


		EndIf
		If nTotal == 0
			cMsg := "Não foram encontradas Agendas."
		Else
			cMsg := "Foram processados " + cValToChar(nTotal) + " Agendas."
		EndIf
	Else
		cMsg := "Não foi informado 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 orçamento
orcamento /*/
//---------------------------
//-----------------------------------------------------------------------------------------
Static Function At870CodTFF(cCodTFJ)
Local aRet      := {}
Local cAliasTFJ := GetNextAlias()

BeginSql Alias cAliasTFJ
	SELECT
		TFF.TFF_COD, TFF.TFF_XCODOR  FROMCODORI
	FROM
		%table:TFJ% TFJ
	JOIN %table:TFL% TFL ON
		TFL.TFL_FILIAL = %xFilial:TFL%  AND
		TFL.TFL_CODPAI = TFJ.TFJ_CODIGO AND TFL.%notDel%
	JOIN %table:TFF% TFF ON
		TFF.TFF_FILIAL = %xFilial:TFF%  AND
		TFF.TFF_CODPAI = TFL.TFL_CODIGO AND
		TFF.TFF_XCODORCODORI <> ' ' 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 CODORI
EndSql

While (cAliasTFJ)->(!Eof())
	aAdd(aRet,{(cAliasTFJ)->TFF_COD, (cAliasTFJ)->TFF_XCODORCODORI})
	(cAliasTFJ)->(DbSkip())
EndDo

(cAliasTFJ)->(dbCloseArea())
Return(aRet)

//-----------------------------------------------------//---------------------------------------------------------------
/*/{Protheus.doc} ConsLocOri - Consulta F3 campo TFL_XCODOR /*/
//------------------------------------------------------- - Consulta F3 campo TFL_CODORI /*/
//-------------------------------------------------------------
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_XCODORCODORI") + "'"
	cFiltro := "@#" + cFiltro + "@#"
EndIf

Return cFiltro

//--------------------------------------------------------

Return cFiltro

//------------------------------------------------------------
/*/{Protheus.doc} ConsRHOri - Consulta F3 campo TFF_XCODOR /*/
//------------------------------------------------CODORI /*/
//--------------------------------------------------------------------
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_XCODORCODORI") + "'"
	cFiltro := "@#" + cFiltro + "@#"
EndIf

Return cFiltro

//---------------------------------------------------

Return cFiltro

//-----------------------------------------------------------------
/*/{Protheus.doc} ValLocOri - Valid do campo TFL_XCODOR /*/
//----------------------------------------------------CODORI /*/
//----------------------------------------------------------------
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_XCODORCODORI")% AND
		TFL.TFL_CODPAI = %Exp:oMdlTFJ:GetValue("TFJ_CODIGOCODORI")% 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_XCODORCODORI /*/
//--------------------------------------------------------------------------------------------------------------------
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_XCODORCODORI")% 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
titleObservação

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.


Toggle Cloak
idupddistr
Clique aqui para exibir ou esconder as alterações de dicionário.

Cloak
idupddistr

Criação dos campos específicos:

CampoTipoTamanhoTítuloDescriçãoMascaraValidaçãoConsulta F3ContextoModo
TFJ_XCODORC11Orç. Orig. Orçamento Origem@!
TFJRealAlterar
TFL_XCODORC6Local Orig,   Local Origem@!U_ValLocOri()TFLORIRealAlterar
TFF_XCODORC6Posto Orig. Posto Origem@!U_ValRHOri()TFFORIRealAlterar

Criação das Consultas específicas:

ConsultaTipoSeq.ColunaDescriçãoConteúdo
TFLORI101DBLocais OrigemTFL
TFLORI20101Codigo
TFLORI40101CodigoTFL_CODIGO
TFLORI40102Local Atend.TFL_LOCAL
TFLORI40103Nr. ContratoTFL_CONTRT
TFLORI501

TFL->TFL_CODIGO
TFLORI601

@#U_ConsLocOri()
ConsultaTipoSeq.ColunaDescriçãoConteúdo
TFFORI101DBPostos OrigemTFF
TFFORI20101Codigo
TFFORI40101CodigoTFF_COD
TFFORI40102ProdutoTFF_PRODUT
TFFORI40103Local Atend.TFF_LOCAL
TFFORI40104Nr. ContratoTFF_CONTRT
TFFORI501

TFF->TFF_COD
TFFORI601

@#U_ConsRHOri()

...