evento ENTER no qo0310

Discussão em 'EMS , HCM e Totvs 11' iniciado por sidnei_mariano, Junho 6, 2023.

  1. sidnei_mariano

    sidnei_mariano Membro Participativo

    Preciso criar através de UPC um evento de ON RETURN no programa qo0310 que quando o usuário estiver preenchendo os campos do cabeçalho da cotação e pressionar "ENTER" em qualquer um desses campos ele chama a confirmação do cadastro do cabeçalho ou seja da Apply no botão "btSaveOrder", e quando o usuário estiver preenchendo qualquer campo dos itens da cotação e pressionar o "ENTER" seja dado o Apply no botão "btSaveItem".

    No PD4000 da Datasul esse evento do "ENTER" já funciona como mencionado acima por padrão, porém eles não habilitaram esse evento para o QO0310, porém eu preciso que as duas telas funcionem da mesma forma para o evento ENTER.

    Já fiz alguma tentativas, como por exemplo pegar o handle dos campos e atribuir o evento ON RETURN porém não funcinou.

    Já tentei criar um programa que chama o QO0310 através de um .p usando o ANYWHERE no evento do ON RETURN porém ao chamar o evento devido ao uso do ANYWHERE ele passa a aplicar o evento para qualquer tela aberta posteriormente.

    Alguém poderia me ajudar com essa situação, como eu poderia fazer isso?
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Tu tem que criar um programa auxiliar pra ser chamado no ENTER, passando o handle do botão por parâmetro. assim é possível fazer assim

    ON RETURN OF handleCampo PERSISTENT RUN pasta\programaAuxiliar.r(INPUT handleBotaoSave).

    Algo assim, precisa rever a sintaxe porque não estou lembrando de cabeça.
  3. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    A ideia do programa que chama o qo310 é boa, usando o anywhere funciona, dentro do anywhere vc teria que criar uma lista de ifs, if self:label = '.....' apply 'choose' to .....
    Dai vc monta uma lista de campos que faz o apply no btsave do pedido e outro pra btsave dos itens.
  4. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    pode tentar capturar o nome da frame do campo que recebeu o ENTER/RETURN, e dai fazer o apply 'choose' correto, assim vc escreve menos.
  5. sidnei_mariano

    sidnei_mariano Membro Participativo

    Olá pessoal,

    Agradeço pelas repostas de ajuda, eu já havia criado o evento conforme o exemplo do Rafael, e no evento eu havia colocado uma mensagem direto na UPC para testar se o evento estava sendo executado, porém não estava funcionando e a mensagem não era apresentada, mas quando coloquei o evento para chamar outro programa ".p" para executar os comandos ai coloquei a mensagem nesse ".p" e ai funcionou.

    Para funcionar, eu tratei o Evento ON "return" em cada campo das frames do qo0310.

    Porém agora estou com outro problema, quando o evento on "return" executa o apply no botão "btSaveItem", se o datasul retorna alguma mensagem de erro por que algum campo não foi preenchido ou por algum preenchimento errado a janela de erro sempre abre atrás da janela do qo0310, sabem como posso fazer para que ao apresentar o erro ele seja apresentando na frente da janela do QO0310 ?


    Agradeço novamente pela ajuda.
  6. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Essa janela de erro é customizada?
    Se sim tem 2 jeitos, recriando ela como DIALOG ou alterando o parâmetro ALWAYS-TOP = TRUE

Compartilhe esta Página