Perguntas MTA650POK
- Neythan
- Autor do Tópico
- Desconectado
- Membro Iniciado
- Postagens: 5
- Obrigados Recebidos: 0
Pessoal, estou tentando criar uma condição nesse ponto de entrada "MTA650POK" para
validar se os itens filtrados que aparecem no BROWSE e que estão marcados para gerar OP tem data de entraga preenchido na "C6_ENTREG", caso não tenham então bloqueia a geração da OP.
Na documentação diz o seguinte:
"A tabela SC6 - Itens do Pedido de Venda - já está filtrada conforme apresentado na MarkBrowse. É necessário efetuar um laço (loop) na tabela SC6, verificando, no campo C6_OK, se cada um dos registros está com o conteúdo igual à Marca".
O meu problema é que quando tento fazer o loop na tabela SC6, está verificando todos os registros da tabela SC6 e não somente os que estão filtrados no BROWSE e então fica uma eternidade rodando...
Sou novato em advpl ainda, poderiam me ajudar na criação da sintaxe correta desse ponto de entrada?
tdn.totvs.com/display/public/mp/MTA650PO...+do+Pedido+de+Vendas
Ex de como eu estava fazendo:
USER FUNCTION MTA650POK()
LOCAL aArea := GetArea()
LOCAL lRet := .T.
LOCAL dData := ""
Local ny := 0
IF EMPTY(Len(aArea))
RestArea(aArea)
lRet := .F.
Return(lRet)
ENDIF
dbGoTop()
For ny := 1 To Len(aArea)
IF !EMPTY(SC6->C6_OK)
dData := SC6->C6_ENTREG
IF EMPTY(dData)
Alert("Não foi possível Gerar a(s) OP(s), pois o Pedido '" +SC6->C6_NUM+ "' não passou pela Fila")
RestArea(aArea)
lRet := .F.
Return(lRet)
ENDIF
END IF
dbSkip()
Next ny
RestArea(aArea)
Return(lRet)
Por favor Acessar ou Registrar para participar da conversa.
- admin
- Desconectado
- Administrador
- Postagens: 297
- Obrigados Recebidos: 21
- Neythan
- Autor do Tópico
- Desconectado
- Membro Iniciado
- Postagens: 5
- Obrigados Recebidos: 0
Infelizmente esse não daria certo, pois o usuário precisará saber de alguma forma que não pode gerar OP para aquele pedido porque não passou na fila.
Eu tentei até esse outro ponto de de entrada que altera a cor da legenda pra bloqueado, mas daí eu precisaria pelo menos modificar a descrição da legenda para informar a ele o motivo do bloqueio e também não consegui achar um outro P.E para isso...
User Function A650LGVEN()
Local cVermelha := ""
cVermelha := "If(Empty(C6_ENTREG), 'X', ' ')"
Return(cVermelha)
Por favor Acessar ou Registrar para participar da conversa.
- Neythan
- Autor do Tópico
- Desconectado
- Membro Iniciado
- Postagens: 5
- Obrigados Recebidos: 0
USER FUNCTION MTA650POK()
Local lRet := .T.
Local cMarca := PARAMIXB[2]
Local cQuery := ""
LOCAL dData := ""
Local cAliasQry := GetNextAlias()
cQuery := " SELECT C6_NUM, C6_OK, C6_ENTREG "
cQuery += " FROM "
cQuery += " "+ RetSQLName("SC6")+ " SC6 "
cQuery += " WHERE "
cQuery += " SC6.D_E_L_E_T_ = ' ' "
IF !empty(cMarca)
cQuery += " AND SC6.C6_OK = '" +cMarca+ "' "
ELSE
cQuery += " AND 1 = 2 "
ENDIF
cQuery := ChangeQuery(cQuery)
DbUseArea(.T.,"TOPCONN",TCGENQRY(,,cQuery),cAliasQry,.F.,.T.)
//Executando a consulta acima
IF (cAliasQry)->(EoF())
Alert("Nenhum registro foi marcado!")
(cAliasQry)->(DbCloseArea())
lRet := .F.
Return(lRet)
ENDIF
While !(cAliasQry)->(EoF())
dData := (cAliasQry)->C6_ENTREG
IF EMPTY(dData)
Alert("Não foi possível Gerar a(s) OP(s), pois o Pedido '" +(cAliasQry)->C6_NUM+ "' não passou pela Fila")
(cAliasQry)->(DbCloseArea())
lRet := .F.
Return(lRet)
ENDIF
(cAliasQry)->(DbSkip())
EndDo
(cAliasQry)->(DbCloseArea())
Return(lRet)
Por favor Acessar ou Registrar para participar da conversa.
- admin
- Desconectado
- Administrador
- Postagens: 297
- Obrigados Recebidos: 21
- Neythan
- Autor do Tópico
- Desconectado
- Membro Iniciado
- Postagens: 5
- Obrigados Recebidos: 0
A forma como eu fiz acredito que não seja a sintaxe correta para esse ponto de entrada, deu certo e não deu certo. As vezes funciona, as vezes faz a verificação de um outro pedido que nem foi selecionado.
Vou ter que ver realmente se consigo fazer da forma correta. Mas, nossa é bem complexo, sem falar que no exemplo na documentação não ajuda em nada haha
Por favor Acessar ou Registrar para participar da conversa.