Árvore de páginas

Versões comparadas

Chave

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

...

Portuguese

Pagetitle
AVALREGR - Define para bloqueio de armazéns e produtos
AVALREGR - Define para bloqueio de armazéns e produtos

Ponto-de-Entrada: AVALREGR - Define para bloqueio de armazéns e produtos


Versões:Microsiga Protheus 10
Compatível Países:Brasil
Sistemas Operacionais:Todos
Compatível às Bases de Dados:Todos
Idiomas:Espanhol , Inglês


Descrição:

O

ponto

de

entrada

AVALREGR

e

utilizado

para

definir

regra

especifica

definida

pelo

cliente

para

a

realização

de

bloqueios

de

armazens

e

produtos.

Com

este

ponto

de

entrada

e

possivel

realizar

bloqueio

por

consumo,

produção

e

poder

de

terceiros.

Programa Fonte
.PRW
Sintaxe

AVALREGR - Define para bloqueio de armazéns e produtos ( [ cCodOrig ], [ cLocOrig ], [ cTesOrig ], [ lHelp ], [ cCodDest ], [ cLocDest ], [ cTesDest ], [ cFilOrig ], [ cFilDest ] ) --> lBloqueio

Parâmetros:



Nome

Tipo

Descrição

Default

Obrigatório

Referência

cCodOrig

Caracter

Codigo do Produto Origem










cLocOrig

Caracter

Armazem Origem










cTesOrig

Caracter

TES Origem










lHelp

Lógico

Indica se exibe Help na Tela










cCodDest

Caracter

Codigo do Produto Destino










cLocDest

Caracter

Armazem Destino










cTesDest

Caracter

TES Destino










cFilOrig

Caracter

Filial Origem










cFilDest

Caracter

Filial Destino










Retorno
lBloqueio
    (logico)
  • True = Bloqueio Movimento / False = Permite Movimento
Exemplos
//Abaixo segue um exemplo utilizando a regra padrão de bloqueio:



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

USER FUNCTION AVALREGR()

Local lBloqueio := .F.
Local cFilBkp   := 
cFilAntLocal
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 
OrigemLocal
Origem
Local cTesOrig  := PARAMIXB[3]	// Codigo da TES de 
OrigemLocal
Origem
Local lHelp     := PARAMIXB[4]	// Indica se deseja mostrar 
HelpLocal
Help
Local cCodDest  := PARAMIXB[5]	// Codigo do Produto 
DestinoLocal
Destino
Local cLocDest  := PARAMIXB[6]	// Codigo do Local 
DestinoLocal
Destino
Local cTesDest  := PARAMIXB[7]	// Codigo da TES de 
DestinoLocal
Destino
Local cFilOrig  := PARAMIXB[8]	// Codigo da Filial de 
OrigemLocal
Origem
Local cFilDest  := PARAMIXB[9]	// Codigo da Filial Destino

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

If SB2->(FieldPos("B2_TIPO")) > 0 .And. SB2->(FieldPos("B2_BLOQUEI")) > 0	
    Do Case
	// Analise de bloqueio para MOVIMENTOS INTERNOS		
Case !Empty(cCodOrig)

        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

                    If lHelp 
                        Help(" ",1,"
BLOQLOC2
BLOQLOC1")
EndIf lBloqueio := .T. EndIf EndIf // Analise de bloqueio para MOVIMENTOS INTERNOS (TRANSFERENCIAS) Case !Empty(cCodOrig) .And. !Empty(cCodDest

                    EndIf
                    lBloqueio := .T.
                ElseIf !Empty(cOp) .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("
SB2->B2_BLOQUEI $ '3|4'	//Bloqueia Producao
                    If lHelp
                     Help(" ",1,"BLOQLOC2")
EndIf

                    EndIf
                    lBloqueio := .T.
EndIf cTipoOrig := SB2->B2_TIPO EndIf

                EndIf
            EndIf		// Analise 
Analisa
de bloqueio 
Movimento
para 
de
MOVIMENTOS 
DESTINO
INTERNOS	
dbSelectArea("SB2") dbSetOrder(1) If !lBloqueio
(TRANSFERENCIAS)		
        
        Case !Empty(cCodOrig) .And. 
dbSeek(xFilial("SB2")+cCodDest+cLocDest) If
!Empty(cCodDest) .And. Empty(
cOp
cTesOrig) .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 := 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
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,"
BLOQLOC4") EndIf lBloqueio := .T. // Bloqueia Producao ElseIf !Empty(cOp) .And. SB2->B2_BLOQUEI $ '3|4' If lHelp Help(" ",1,"BLOQLOC2") EndIf
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
     EndIf
                cTipoOrig := SB2->B2_TIPO
            EndIf // Analisa Movimento de DESTINO
            
            dbSelectArea("SB2")
            dbSetOrder(1)
            If !lBloqueio .And. dbSeek(xFilial("SB2")+
cCodOrig
cCodDest+
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
cLocDest)
                If Empty(cOp) .And. 
(SF4
SB2-
>F4
>B2_
PODER3
BLOQUEI $ 
"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(
'2|4' //Bloqueia Consumo
                    If lHelp
                        Help(" ",1,"
BLOQLOC4") EndIf lBloqueio := .T. EndIf cTipoOrig := 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
BLOQLOC1")
                    EndIf 
                    lBloqueio := .T.
                ElseIf !Empty(cOp) .And. SB2->B2_BLOQUEI $ '3|4' //Bloqueia Producao
                    If lHelp 
                        Help(" ",1,"
BLOQLOC4") EndIf lBloqueio := .T. EndIf cTipoDest := SB2->B2_TIPO EndIf EndIf //-- Comparativo entre ORIGEM Versus DESTINO
BLOQLOC2") 
                    EndIf
                    lBloqueio := .T.
                EndIf
                cTipoDest := 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 := 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 := SB2->B2_TIPO
                EndIf
            EndIf //-- Comparativo entre ORIGEM Versus DESTINO 
            
            If !lBloqueio .And. (cTipoDest # cTipoOrig)

                Help(" ",1,"BLOQLOC5")
 
                lBloqueio := .T.
EndIf

            EndIf // Restaura Filial Origem

            cFilAnt:=cFilBkp	
EndCaseEndIfRestArea

    EndCase
EndIf
        
RestArea(aAreaSF4)
RestArea(aAreaSB2)
RestArea(aAreaAnt)

Return lBloqueio