Preciso por favor fazer uma validação/crítica quando for endereçar produto apresentar se já existe no endereço
Exemplo:
Mensagem - Este produto já existe no endereço X ...
e/ou
Este endereço já está sendo utilizado pelo produto X...
Desde já agradeço
Att.
Alan, dependerá muito de qual rotina está sendo utilizada para endereçar. Suponho que seja a MATA265 (Endereçamento): MA265TDOK - Validações adicionais na inclusão do produto - Linha Microsiga Protheus - TDN
Todos os campos e cabeçalhos estarão disponíveis nas variáveis aCols e aHeader.
Se sua intenção for uma validação em tela, adicione pelo dicionário de dados a validação abaixo no campo desejado (desenvolvi a função agora pelo Bloco de Notas, portanto, não cheguei a testar):
Alan, dependerá muito de qual rotina está sendo utilizada para endereçar. Suponho que seja a MATA265 (Endereçamento): https://tdn.totvs.com/pages/releaseview.action?pageId=6087623
Todos os campos e cabeçalhos estarão disponíveis nas variáveis aCols e aHeader.
Se sua intenção for uma validação em tela, adicione pelo dicionário de dados a validação abaixo no campo desejado (desenvolvi a função agora pelo Bloco de Notas, portanto, não cheguei a testar):
User Function vldProd()
Local lReturn := .F.
Local aArea := GetArea()
Local cEndereco := IIF( AllTrim(Upper(ReadVar())) == "M->DB_LOCALIZ", &(ReadVar()), GdFieldGet("DB_LOCALIZ") ) // Descubro se a funcao foi chamada via interface, ou se devo buscar o produto na linha do Grid
Local cSeek
dbSelectArea("SBF")
SBF->( dbSetOrder(1) )
cSeek:=xFilial("SBF")+ cEndereco+SDA->DA_LOCAL+SDA->DA_PRODUTO
If SBF->( dbSeek(cSeek) )
Alert("Produto " + SDA->DA_PRODUTO + " encontrado no endereço " + cEndereco)
Else
EndIf
RestArea(aArea)
Return (lReturn
Olá Murilo. Irei testar. Desde já agradeço. Abs. Att.
Neste meio tempo localizei 2 exemplos abaixo:
User Function MA265TDOK
Local lRet := .T.
Local aAreas := {SBF->(GetArea()), GetArea()}
cFiltro := “@ (BF_FILIAL =='” + xFilial(“SBF”) + "’ AND "
cFiltro += "R_E_C_D_E_L_ = 0 AND "
cFiltro += “BF_QUANT > 0”
DbSelectArea(“SBF”)
SBF ->(dbSetFilter( {|| &cFiltro }, ))
SBF ->(DbGotop())
if !SBF ->(eOF())
MsgInfo(“Aviso”, “OK”)
Endif
SBF ->(dbSetFilter())
aEval(aArea,{|z,y| RestArea(x)}) // Restaura areas de trabalho
Return(lRet)
User Function fMta265I()
Local aCab := {}
Local aItem:= {}
lMsErroAuto := .F.
aCab := { {“DA_PRODUTO”,“000000000000001”,NIL},;
{“DA_LOCAL”,“01”,NIL}}
aAdd(aItem, { {“DB_ITEM”,“001”,NIL},;
{“DB_LOCALIZ”,“TESTE”,NIL},;
{“DB_DATA”,dDataBase,NIL},;
{“DB_QUANT”,25,NIL}})
MSExecAuto({|x,y,z| mata265(x,y,z)},aCab,aItem,3) //Distribui
If lMsErroAuto
MostraErro()
Else
Alert(“Ok”)
Endif
Return