|
|
Mensagem do
CAUAN_2024
em 15/04/2024, 09:02 h
Local: SP Registro: 28/02/2024 Postagens: 34 |
Bom dia Devs, Poderiam me ajudar com uma função? o codigo tem a função de sugerir um numero melhor caso seja menor do q o esperado, essa parte deu certo, mas estou batendo cabeça pois quero q apenas apareça a mensagem quando o produto for balde, poderiam me ajudar?
Segue o codigo abaixo:
local aSCK := SCK->(GetArea())
local lRet := .T.
local aQtdes := {}
local cQtd := M->CK_QTDVEN
local ni
//if SUBSTR( nProduto, 13,TamSx3("CK_PRODUTO")[1]) == ‘4‘
if ("BL" $ SCK-> CK_UM)
aadd(aQtdes, {1,55,55})
aadd(aQtdes, {56,100,100})
aadd(aQtdes, {101,200,200})
aadd(aQtdes, {201,220,220})
aadd(aQtdes, {221,300,300})
aadd(aQtdes, {301,420,420})
aadd(aQtdes, {421,600,600})
ni := aScan(aQtdes, {|x| cQtd >= x[1] .and. cQtd <= x[2] })
if ni > 0 .and. aQtdes[ni][3] > cQtd
msgInfo("Melhor quantidade sugerida: "+AllTrim(Str(aQtdes[ni][3])) )
lRet := .F.
endif
ENDIF
restarea(aSCK)
return lRet
|
|
|
Mensagem do
ROBERTOMEN
em 15/04/2024, 10:11 h
Local: PR Registro: 04/07/2017 Postagens: 547 |
bom dia
M-> pega o valor em memória
SCK-> pega o valor do campo da tabela SCK no registro posicionado.
Se vc diz que funcionou a logica da melhor quantidade sugerida usando
local cQtd := M->CK_QTDVEN, porque você está conparando o seu
if ("BL" $ SCK-> CK_UM) com SCK->
já tentou if ("BL" $ M-> CK_UM) |
|
|
Mensagem do
CAUAN_2024
em 15/04/2024, 10:50 h
Local: SP Registro: 28/02/2024 Postagens: 34 |
Apresentou esse erro: type mismatch on $ |
|
|
Mensagem do
CAUAN_2024
em 16/04/2024, 10:59 h
Local: SP Registro: 28/02/2024 Postagens: 34 |
tentei fazer dessa forma, mas acabou não validando:
if SCK->CK_UM $ "BL"
aadd(aQtdes, {1,55,55})
aadd(aQtdes, {56,100,100})
aadd(aQtdes, {101,200,200})
aadd(aQtdes, {201,220,220})
aadd(aQtdes, {221,300,300})
aadd(aQtdes, {301,400,400})
aadd(aQtdes, {401,420,420})
aadd(aQtdes, {421,600,600})
ni := aScan(aQtdes, {|x| cQtd >= x[1] .and. cQtd <= x[2] })
if ni > 0 .and. aQtdes[ni][3] > cQtd
msgInfo("Melhor quantidade sugerida: "+AllTrim(Str(aQtdes[ni][3])) )
lRet := .F.
endif
endif
return lRet
restarea(aSCK)
|
|
|
Mensagem do
ROBERTOMEN
em 16/04/2024, 12:09 h
Local: PR Registro: 04/07/2017 Postagens: 547 |
bom dia
Vi que tinha um espaço a mais aqui --> if ("BL" $ M-> CK_UM)
tente
if ("BL" $ M->CK_UM) |
|
|
Mensagem do
CAUAN_2024
em 16/04/2024, 13:27 h
Local: SP Registro: 28/02/2024 Postagens: 34 |
Boa tarde
Deu o mesmo erro, eu anexei o print do erro para uma melhor visulização
|
|
|
Mensagem do
TCHULA
em 16/04/2024, 14:12 h
Local: SP Registro: 02/10/2014 Postagens: 53 |
Boa tarde.
Uma pergunta, esta sua embalagem esta cadastrada no sistema correto?
se Sim eu faria desta forma.
Criaria um parametro, Ex. (MV_XEMBAL) e dentro desse parametro eu colocaria o codigo do cadastro da embalagem no sistema.
Criaria meu if detsta forma.
Local cVLQTDEM := GetMV("MV_XEMBAL) -> A variavel vai receber o conteudo do seu parametro no caso o codigo da sua embalagem cadastrada em sistema
Seu if fivaria assim
if(M->CK_UM $ cVLQTDEM)
.
.
.
EndIf
Ve se te ajuda desta forma. |
|
|
Mensagem do
CAUAN_2024
em 16/04/2024, 14:21 h
Local: SP Registro: 28/02/2024 Postagens: 34 |
Boa tarde.
Sim, já esta cadastrado no sistema, o campo é CK_UM, o código só iria verificar se é SC que esta no campo e ai sim, viria as validações para as sugestões de números. |
|
|
Mensagem do
CAUAN_2024
em 16/04/2024, 14:21 h
Local: SP Registro: 28/02/2024 Postagens: 34 |
Em uma explicação mais detalhada seria assim:
se embalagem = saco .3
se cj_qtde < 55 entao
msg ‘sugerir melhor quantidade = 55
se cj_qtde < 100 entao
msg ‘sugerir melhor quantidade = 100 |
|
|
Mensagem do
ROBERTOMEN
em 17/04/2024, 08:45 h
Local: PR Registro: 04/07/2017 Postagens: 547 |
Bom dia.
Cauan, entendi agora que vc está desenvolvendo uma função para validaçao de campo.
Nos diga em que campo você incluiu a função e Anexe o fonte dela para entendermos o erro. |
|
|
Mensagem do
CAUAN_2024
em 17/04/2024, 09:30 h
Local: SP Registro: 28/02/2024 Postagens: 34 |
Bom dia.
Código anexado, eu inclui no campo CK_QTDVEN para quando o numero ser digitado, a função ira fazer as validações. |
|
|
Mensagem do
ROBERTOMEN
em 17/04/2024, 10:55 h
Local: PR Registro: 04/07/2017 Postagens: 547 |
segue correção:
#INCLUDE "PROTHEUS.CH"
#iNCLUDE "TBICONN.CH"
#include "rwmake.ch"
User function VldQtd()
local lRet := .T.
local aQtdes := {}
local cQtd := M->CK_QTDVEN
local ni
if (M->CK_UM $ "BL") // (M->nCK_UM $ "BL")
aadd(aQtdes, {1,55,55})
aadd(aQtdes, {56,100,100})
aadd(aQtdes, {101,200,200})
aadd(aQtdes, {201,220,220})
aadd(aQtdes, {221,300,300})
aadd(aQtdes, {301,400,400})
aadd(aQtdes, {401,420,420})
aadd(aQtdes, {421,600,600})
ni := aScan(aQtdes, {|x| cQtd >= x[1] .and. cQtd <= x[2] })
if ni > 0 .and. aQtdes[ni][3] > cQtd
msgInfo("Melhor quantidade sugerida: "+AllTrim(Str(aQtdes[ni][3])) )
lRet := .F.
endif
endif
return lRet |
|
|
Mensagem do
CAUAN_2024
em 17/04/2024, 11:33 h
Local: SP Registro: 28/02/2024 Postagens: 34 |
Ainda da o erro de typemismatch no $, eu estava pensando se não teria outra função que valida o valor de uma coluna? |
|
|
Mensagem do
ROBERTOMEN
em 17/04/2024, 14:12 h
Local: PR Registro: 04/07/2017 Postagens: 547 |
descobri que a ROTINA DE ORÇAMENTOS criar uma tabela temporária TMP1
#INCLUDE "PROTHEUS.CH"
#iNCLUDE "TBICONN.CH"
#include "rwmake.ch"
User function VldQtd()
local lRet := .T.
local aQtdes := {}
local cQtd := TMP1->CK_QTDVEN
local ni
if TMP1->CK_UM = "BL"
aadd(aQtdes, {1,55,55})
aadd(aQtdes, {56,100,100})
aadd(aQtdes, {101,200,200})
aadd(aQtdes, {201,220,220})
aadd(aQtdes, {221,300,300})
aadd(aQtdes, {301,400,400})
aadd(aQtdes, {401,420,420})
aadd(aQtdes, {421,600,600})
ni := aScan(aQtdes, {|x| cQtd >= x[1] .and. cQtd <= x[2] })
if ni > 0 .and. aQtdes[ni][3] > cQtd
msgInfo("Melhor quantidade sugerida: "+AllTrim(Str(aQtdes[ni][3])) )
lRet := .F.
endif
endif
return lRet
**********************************************************************
Se precisar analisar todas as linhas dos itens, ao salvar por exemplo:
**********************************************************************
While TMP1->(!EOF())
// análise
TMP1->(dbskip())
ENDDO |
|
|
Mensagem do
CAUAN_2024
em 17/04/2024, 14:45 h
Local: SP Registro: 28/02/2024 Postagens: 34 |
Muito obrigado, era isso mesmo!! |
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|