Histórico da Página
...
Portuguese | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ponto-de-Entrada: AVALREGR - Define para bloqueio de armazéns e produtos
Descrição: O ponto de entrada AVALREGR e utilizado para definir regra especifica definida pelo cliente para a realização de bloqueios de armazéns e produtos. Com este ponto de entrada e 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:
Retorno: lBloqueio RetornolBloqueio (logico) True = Bloqueio Movimento / False = Permite Movimento Exemplos //Abaixo segue um exemplo utilizando a regra padrão de bloqueio |
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#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 |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas