Árvore de páginas

Versões comparadas

Chave

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

...

Bloco de código
languagedelphi
themeMidnight
firstline1
linenumberstrue
#INCLUDE "RWMAKE.CH"

USER FUNCTION AVALREGR()

Local lBloqueio := .F.
Local cFilBkp   := cFilAnt
Local aAreaAnt  := GetArea()
Local aAreaSB2  := SB2->(GetArea())
Local aAreaSF4  := SF4->(GetArea())
Local cTpBlqPro := '2'
Local cTpBlqTer := '3|4|5'
Local cTipoOrig := ''
Local cTipoDest := ''
Local cCodOrig  := PARAMIXB[1]	// Codigo do Produto Origem 
Local cLocOrig  := PARAMIXB[2]	// Codigo do Armazem de Origem
Local cTesOrig  := PARAMIXB[3]	// Codigo da TES de Origem
Local lHelp     := PARAMIXB[4]	// Indica se deseja mostrar Help
Local cCodDest  := PARAMIXB[5]	// Codigo do Produto Destino
Local cLocDest  := PARAMIXB[6]	// Codigo do Local Destino
Local cTesDest  := PARAMIXB[7]	// Codigo da TES de Destino
Local cFilOrig  := PARAMIXB[8]	// Codigo da Filial de Origem
Local cFilDest  := PARAMIXB[9]	// Codigo da Filial Destino
Local cOP       := PARAMIXB[10] // Codigo da ordem de produção

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Validacao padrao de bloqueio de produtos/armazens                      ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

If SB2->(FieldPos("B2_TIPO")) > 0 .And. SB2->(FieldPos("B2_BLOQUEI")) > 0	
    Do Case	// Analise de bloqueio para MOVIMENTOS INTERNOS		
        Case !Empty(cCodOrig) .And. Empty(cCodDest) .And. Empty(cTesOrig) .And. Empty(cTesDest)		
            dbSelectArea("SB2") 
            dbSetOrder(1) 
            If dbSeek(xFilial("SB2")+cCodOrig+cLocOrig) 
                If Empty(cOp) .And. SB2->B2_BLOQUEI $ '2|4' //Bloqueia Consumo	
                    If lHelp 
                        Help(" ",1,"BLOQLOC1")
                    EndIf
                    lBloqueio := .T.
                ElseIf !Empty(cOp) .And. SB2->B2_BLOQUEI $ '3|4'	//Bloqueia Producao
                    If lHelp
                     Help(" ",1,"BLOQLOC2")
                    EndIf
                    lBloqueio := .T.
                EndIf
            EndIf		// Analise de bloqueio para MOVIMENTOS INTERNOS	(TRANSFERENCIAS)		
        
        Case !Empty(cCodOrig) .And. !Empty(cCodDest) .And. Empty(cTesOrig) .And. Empty(cTesDest) // Analisa Movimento de ORIGEM
            dbSelectArea("SB2")
            dbSetOrder(1)
            If dbSeek(xFilial("SB2")+cCodOrig+cLocOrig)
                If Empty(cOp) .And. SB2->B2_BLOQUEI $ '2|4' //Bloqueia Consumo
                    If lHelp 
                        Help(" ",1,"BLOQLOC1")
                    EndIf
                    lBloqueio := .T.
                ElseIf !Empty(cOp) .And. SB2->B2_BLOQUEI $ '3|4' //Bloqueia Producao
                    If lHelp
                        Help(" ",1,"BLOQLOC2")
                    EndIf 
                    lBloqueio := .T.
                EndIf
                cTipoOrig := If(Empty(SB2->B2_TIPO),"1",SB2->B2_TIPO)             
			EndIf // Analisa Movimento de DESTINO
            
            dbSelectArea("SB2")
            dbSetOrder(1)
            If !lBloqueio .And. dbSeek(xFilial("SB2")+cCodDest+cLocDest)
                If Empty(cOp) .And. SB2->B2_BLOQUEI $ '2|4' //Bloqueia Consumo
                    If lHelp
                        Help(" ",1,"BLOQLOC1")
                    EndIf 
                    lBloqueio := .T.
                ElseIf !Empty(cOp) .And. SB2->B2_BLOQUEI $ '3|4' //Bloqueia Producao
                    If lHelp 
                        Help(" ",1,"BLOQLOC2") 
                    EndIf
                    lBloqueio := .T.
                EndIf
                cTipoDest := If(Empty(SB2->B2_TIPO),"1",SB2->B2_TIPO)
             EndIf //-- Comparativo entre ORIGEM Versus DESTINO
            
            If !lBloqueio .And. (cTipoDest # cTipoOrig)
                Help(" ",1,"BLOQLOC5")
                lBloqueio := .T.
            EndIf // Analise de bloqueio para DOCUMENTO ENTRADA/SAIDA
            
        Case !Empty(cCodOrig) .And. Empty(cCodDest) .And. !Empty(cTesOrig) .And. Empty(cTesDest) 
            dbSelectArea("SB2") 
            dbSetOrder(1) 
            If dbSeek(xFilial("SB2")+cCodOrig+cLocOrig)
                dbSelectArea('SF4')
                dbSetOrder(1)
                If dbSeek(xFilial("SF4")+cTesOrig) .And. SF4->F4_ESTOQUE == "S" // Caso seja movimentacao no armazem proprio NAO permitir PODER3
                    If (SB2->B2_TIPO $ cTpBlqPro) .And. (SF4->F4_PODER3 $ "R|D")
                        If lHelp
                            Help(" ",1,"BLOQLOC3")
                        EndIf
                        lBloqueio := .T. // Caso seja movimentacao no armazem terceiros NAO permitir TES sem controle de PODER3
                    ElseIf (SB2->B2_TIPO $ cTpBlqTer) .And. !(SF4->F4_PODER3 $ "R|D")
                        If lHelp
                            Help(" ",1,"BLOQLOC4")
                        EndIf
                        lBloqueio := .T. // Bloqueia Producao
                    ElseIf !Empty(cOp) .And. SB2->B2_BLOQUEI $ '3|4'
                        If lHelp
                            Help(" ",1,"BLOQLOC2")
                        EndIf
                        lBloqueio := .T.
                    EndIf
                EndIf
            EndIf // Analise de bloqueio para DOCUMENTO ENTRADA/SAIDA (TRANSFERENCIAS)
            
        Case !Empty(cCodOrig) .And. !Empty(cCodDest) .And. !Empty(cTesOrig) .And. !Empty(cTesDest) //-- Analise da filial ORIGEM
            cFilAnt := cFilOrig
            dbSelectArea("SB2")
            dbSetOrder(1)
            If dbSeek(xFilial("SB2")+cCodOrig+cLocOrig)
                dbSelectArea('SF4')
                dbSetOrder(1)
                If dbSeek(xFilial("SF4")+cTesOrig) .And. SF4->F4_ESTOQUE == "S" // Caso seja movimentacao no armazem proprio NAO permitir PODER3
                    If (SB2->B2_TIPO $ cTpBlqPro) .And. (SF4->F4_PODER3 $ "R|D")
                        If lHelp
                            Help(" ",1,"BLOQLOC3")
                        EndIf
                        lBloqueio := .T. // Caso seja movimentacao no armazem terceiros NAO permitir TES sem controle de PODER3
                    ElseIf (SB2->B2_TIPO $ cTpBlqTer) .And. !(SF4->F4_PODER3 $ "R|D")
                        If lHelp
                            Help(" ",1,"BLOQLOC4")
                        EndIf
                        lBloqueio := .T.
                    EndIf
                    cTipoOrig := If(Empty(SB2->B2_TIPO),"1",SB2->B2_TIPO)
                 EndIf
            EndIf //-- Analise da filial DESTINO 
            
            cFilAnt := cFilDest
            dbSelectArea("SB2")
            dbSetOrder(1)
            If !lBloqueio .And. dbSeek(xFilial("SB2")+cCodDest+cLocDest)
                dbSelectArea('SF4')
                dbSetOrder(1)
                If dbSeek(xFilial("SF4")+cTesDest) // Caso seja movimentacao no armazem proprio NAO permitir PODER3
                    If (SB2->B2_TIPO $ cTpBlqPro) .And. (SF4->F4_PODER3 $ "R|D") 
                        If lHelp
                            Help(" ",1,"BLOQLOC3") 
                        EndIf 
                        lBloqueio := .T. // Caso seja movimentacao no armazem terceiros NAO permitir TES sem controle de PODER3
                    ElseIf (SB2->B2_TIPO $ cTpBlqTer) .And. !(SF4->F4_PODER3 $ "R|D")
                        If lHelp 
                            Help(" ",1,"BLOQLOC4")
                        EndIf 
                        lBloqueio := .T. 
                    EndIf
                    cTipoDest := If(Empty(SB2->B2_TIPO),"1",SB2->B2_TIPO)
                 EndIf
            EndIf //-- Comparativo entre ORIGEM Versus DESTINO 
            
            If !lBloqueio .And. (cTipoDest # cTipoOrig)
                Help(" ",1,"BLOQLOC5") 
                lBloqueio := .T.
            EndIf // Restaura Filial Origem
            cFilAnt:=cFilBkp	
    EndCase
EndIf
        
RestArea(aAreaSF4)
RestArea(aAreaSB2)
RestArea(aAreaAnt)

Return lBloqueio