Á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
11
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 armazéns e produtos. Com este ponto de entrada e possivel possível realizar bloqueio por consumo, produção e poder de terceiros.

Programa Fonte: AVALREGR.PRW

Sintaxe:

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


Parâmetros:


Nome
Tipo
Descrição
Default
Obrigatório
Referência
cCodOrig
Caracter
Codigo

Código do Produto Origem





cLocOrig
Caracter
Armazem

Armazém Origem





cTesOrig
Caracter
TES Origem





lHelp
Lógico
Indica se exibe Help na Tela





cCodDest
Caracter
Codigo

Código do Produto Destino





cLocDest
Caracter
Armazem

Armazém Destino





cTesDest
Caracter
TES Destino





cFilOrig
Caracter
Filial Origem





cFilDest
Caracter
Filial Destino





cOP
Caracter
Código da ordem de produção






Retorno: 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
Local cOP       := PARAMIXB[10] // Codigo da ordem de produção

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³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

        Case !Empty(cCodOrig) .And. Empty(cCodDest) .And. Empty(cTesOrig) .And. Empty(cTesDest)		

            dbSelectArea("SB2")
 
            dbSetOrder(1)
 
            If dbSeek(xFilial("SB2")+cCodOrig+cLocOrig)
If
 
                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(" ",1,"BLOQLOC2") EndIf lBloqueio := .T. EndIf cTipoOrig := 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 := 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)
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)
dbSelectArea('SF4') dbSetOrder(1) If dbSeek(xFilial("SF4")+cTesOrig)

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

                    EndIf
                    lBloqueio := .T.
EndIf EndIf

     
EndIf //
 
Analise
 
de
 
bloqueio
 
para
 
DOCUMENTO
 
ENTRADA/SAIDA (TRANSFERENCIAS) Case !Empty(cCodOrig) .And.
     ElseIf !Empty(
cCodDest
cOp) .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
 SB2->B2_BLOQUEI $ '3|4' //Bloqueia Producao
                    If lHelp
                        Help(" ",1,"BLOQLOC2")
                    EndIf 
                    lBloqueio := .T.
// Caso seja movimentacao no armazem terceiros NAO permitir TES sem controle de PODER3 ElseIf

                EndIf
                cTipoOrig := If(Empty(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)
),"1",SB2->B2_TIPO)             
			EndIf // Analisa Movimento de DESTINO
            
            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

                If Empty(cOp) .And. SB2->B2_BLOQUEI $ '2|4' //Bloqueia Consumo
                    If lHelp
                        Help(" ",1,"
BLOQLOC4") EndIf lBloqueio := .T. EndIf cTipoDest := SB2->B2_TIPO EndIf EndIf //-- Comparativo entre ORIGEM Versus DESTINO
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

            EndIf // Restaura Filial Origem

            cFilAnt:=cFilBkp	
EndCaseEndIfRestArea

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

Return lBloqueio