Árvore de páginas

Versões comparadas

Chave

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

...

Bloco de código
titleExemplo de uso
#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 dDtIniMdtlNewTN6       := sTod("").F.
	Local lNewTN6lNewTN5       := .F.
	Local lNewTN5       nRecTN6		:= .F.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
	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
			If !isInCallStack("AT550GrvABB")
				dDtIniMdt := TN6->TN6_DTINIC
			Else 
				dDtIniMdt :=  aTN6[nDtInic][2]
				lNewTN6 := .T.
			EndIf 	
		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 := TN5->(DbGoTo((cQueryTN5)->TN5RECNO))

		If !At190dTN6(aTN6[nFilTN6][2],TN5->TN5_CODTAR,aTN6[nMatTN6][2],dToS(aTN6[nDtInic][2]),@nRecTN6)
			TN6->TN6_DTTERMlNewTN6 := aTN6[nDtTerm][2].T.		
		Else 
			If nRecTN6 > 0
				TN6->(MsUnLockDbGoTo(nRecTN6))
			EndIf
		Endif
	else
		RecLock("TN6",.T.)
 lNewTN6)
		If lNewTN6
			TN6->TN6_FILIAL 	:= aTN6[nFilTN6][2]
			TN6->TN6_CODTAR 	:= cProxTN5TN5->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

...