Perguntas MTA650POK

Mais
2 anos 11 meses atrás #33042 por Neythan
MTA650POK foi criado por Neythan
Boa tarde a todos!

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.

Mais
2 anos 11 meses atrás #33043 por admin
Respondido por admin no tópico MTA650POK
Porque não usa este ponto de entrada, ele já vai filtrar a sc6 e mostrar apenas as que tem o campo c6 entreg preenchido, conforme montei abaixo.
User Function MA650FIL()       
Local cFil650 := ""

cFil650 := " !Empty(C6_ENTREG) " 

Return cFil650
Os seguintes usuário(s) disseram Obrigado: Neythan

Por favor Acessar ou Registrar para participar da conversa.

Mais
2 anos 11 meses atrás #33044 por Neythan
Respondido por Neythan no tópico MTA650POK
Bom dia!

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.

Mais
2 anos 11 meses atrás #33045 por Neythan
Respondido por Neythan no tópico MTA650POK
Bom, eu consegui fazer naquele primeiro ponto de entrada, não sei se é a sintaxe correta da documentação, mas nos diversos testes que fiz aqui funcionou:

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.

Mais
2 anos 11 meses atrás #33046 por admin
Respondido por admin no tópico MTA650POK
Cara estou num projeto que esta me comendo horas, vou ver se consigo te ajudar entre hoje e amanhã ok, guenta ae.

abraços.
Os seguintes usuário(s) disseram Obrigado: Neythan

Por favor Acessar ou Registrar para participar da conversa.

Mais
2 anos 11 meses atrás #33050 por Neythan
Respondido por Neythan no tópico MTA650POK
Imagino, tranquilo!

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.

Tempo para a criação da página:0.120 segundos
Joomla templates by a4joomla