Bom dia, Estou desenvolvendo uma UPC para o PD4000 e até certo ponto esta funcionando, acontece que coloquei um botão de salvar que faz algumas validações na hora de salvar o pedido, mas o mesmo não acontece quando o usuário salva o item do pedido dando um enter no item, sem clicar no botão (utlizando o metodo choose do botão salvar). Gostaria de ver o seguinte, tenho como colocar uma validação na upc que ocorra antes do metodo choose ser acionado no botão? ou se tenho como desativar a posibilidade do usuário dar enter nesse campo? Obrigado desde já.
Bom dia, O que deve estar acontecendo é que ao pressionar o Enter esta executando o botão default. Já tive situações parecidas, o que fiz foi último evento eu pego a handle do botão original e atribuo a uma variável shared global, coloco um tab-order = no e hidden = true, crio um novo botão com as mesmas características (posição, tamanho, label, tab-order...) e ainda atribuo o default a este novo botão. No evento on choose do novo botão, executo minhas funções específicas e depois aplico um choose do botão original. []'s.
Olá, consegui resolver criando a validação em upc no bodi154 que é a bo de manutenção de itens do pedido. Para o evento "AfterValidateRecord". Funcionou, realiza a validação antes de salvar o item no pedido. Se alguem precisar do código que foi uitlizado me avise que posto aí.
Ola , Pode me colocar o codigo do PD4000 que criou, pois, tentei varias vezes usar conceito das Bos, mas nao consigo, podem me orientar como usa-las, que devo fazer para incluir/alterar pedidos usando Bo´s
Opa, criei uma UPC padrão para o programa bodi154. Ficou mais ou menos assim. Código: {include/i-epc200.i1} def input param pIndEvent as char no-undo. def input-output param table for tt-epc. DEFINE TEMP-TABLE tt-ped-item NO-UNDO LIKE ped-item FIELD r-Rowid AS ROWID. DEFINE VARIABLE bo-ped-item AS HANDLE NO-UNDO. DEFINE VARIABLE bo-ped-venda-cal AS HANDLE NO-UNDO. DEFINE VARIABLE bo-ped-item-cal AS HANDLE NO-UNDO. DEF NEW GLOBAL SHARED VAR whVlPreFim AS WIDGET-HANDLE NO-UNDO. DEF VAR vValorFinal AS DEC FORMAT "->>>>>9.999999999" NO-UNDO. DEF VAR vValorInicial AS DEC FORMAT "->>>>>9.999999999" NO-UNDO. DEF VAR pErro AS CHAR NO-UNDO. DEF TEMP-TABLE rowerrors NO-UNDO /* Temp-table dos erros */ FIELD errorsequence AS INT FIELD errornumber AS INT FIELD errordescription AS CHAR FORMAT "x(150)" FIELD errorparameters AS CHAR FIELD errortype AS CHAR FIELD errorhelp AS CHAR FORMAT "x(150)" FIELD errorsubtype AS CHAR. def shared var c-seg-usuario as char no-undo. def var h-bodi154 as handle no-undo. /*** Variaveis Locais ***/ def var i-nivel as integer initial 1 no-undo. def var i-programa as integer initial 0 no-undo. def var l-legal as log no-undo. DEF TEMP-TABLE tt-raw-digita FIELD raw-digita AS RAW. repeat while program-name(i-nivel) <> ?. if (trim( program-name(i-nivel) ) = "USER-INTERFACE-TRIGGER pdp/pd4000.w" or trim( program-name(i-nivel) ) = "USER-INTERFACE-TRIGGER pdp\pd4000.w") then assign i-programa = 4000. assign i-nivel = i-nivel + 1. end. if pIndEvent = "AfterValidateRecord" and i-programa = 4000 then do: IF pindevent = "AfterValidateRecord" THEN DO: FIND FIRST tt-epc WHERE tt-epc.cod-event = "AfterValidateRecord" AND tt-epc.cod-param = "Object-Handle" NO-LOCK. IF AVAIL tt-epc THEN DO: ASSIGN h-bodi154 = widget-handle(tt-epc.val-parameter). FIND FIRST tt-epc WHERE tt-epc.cod-event = "AfterValidateRecord" AND tt-epc.cod-param = "Table-Rowid" NO-LOCK. if valid-handle( h-bodi154 ) THEN DO: RUN GetRecord IN h-bodi154 (OUTPUT TABLE tt-ped-item). FIND FIRST tt-ped-item. FIND FIRST ped-venda WHERE ped-venda.nome-abrev = tt-ped-item.nome-abrev AND ped-venda.nr-pedcli = tt-ped-item.nr-pedcli NO-LOCK NO-ERROR. if avail ped-venda then do: find first esp-usuar-natoper where esp-usuar-natoper.cod-usuar = c-seg-usuario AND esp-usuar-natoper.cod-estabel = ped-venda.cod-estabel AND esp-usuar-natoper.nat-operacao = tt-ped-item.nat-oper no-lock no-error. if not avail esp-usuar-natoper then do: run _InsertErrorManual in h-bodi154 (input 0, input "EMS":U, input "ERROR":U, input "Natureza de opera‡Æo para O ITEM nÆo pode ser usada por este usu rio, neste estabelecimento...", input "Utilize o programa ESCD0017 para criar este relacionamento.", input "":U). END. END. IF AVAIL ped-venda THEN DO: FIND FIRST ITEM WHERE ITEM.it-codigo = tt-ped-item.it-codigo NO-LOCK NO-ERROR. IF AVAIL ITEM THEN DO: FIND FIRST esp-usuar-natoper WHERE esp-usuar-natoper.cod-usuar = c-seg-usuario AND esp-usuar-natoper.cod-estabel = ped-venda.cod-estabel AND esp-usuar-natoper.nat-operacao = tt-ped-item.nat-oper AND esp-usuar-natoper.fm-codigo = ITEM.fm-codigo NO-LOCK NO-ERROR. IF NOT AVAIL esp-usuar-natoper THEN DO: run _InsertErrorManual in h-bodi154 (input 0, input "EMS":U, input "ERROR":U, input "Nat Operacao X Fam¡lia Faturamento.", input "Contactar o setor fiscal / faturamento informando " + "Nome de Usu rio (" + c-seg-usuario + ")" + ", Item (" + ITEM.it-codigo + ")," + "Natureza de Opera‡Æo (" + tt-ped-item.nat-oper + "),"+ "Estabelecimento (" + ped-venda.cod-estabel + ") e " + "Fam¡lia (" + ITEM.fm-codigo + ") para maiores informa‡äes!", input "":U). END. END. END. END. END. END. END.