Á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 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
.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   := 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

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³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 := 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) 
            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 // Restaura Filial Origem
            cFilAnt:=cFilBkp	
    EndCase
EndIf
        
RestArea(aAreaSF4)
RestArea(aAreaSB2)
RestArea(aAreaAnt)

Return lBloqueio