Ajude o site desativando o bloqueador de anúncio
Cabeçalho

MATA120-MA120BUT – INCLUIR BOTÕES NA TELA DO PEDIDO DE COMPRAS

Autor: Eurai Criado: 01/01/2016 Atualizado: 29/11/2025 Ponto de Entrada
Postagem

🛒 Ponto de Entrada MA120BUT — Adicionando Botões no Pedido de Compras

 

Olá, seja bem-vindo!!! 👋

 

Hoje vou apresentar o ponto de entrada MA120BUT, utilizado no módulo de COMPRAS do Protheus. Esse PE permite adicionar botões personalizados diretamente na tela do Pedido de Compras, conforme o exemplo abaixo 👇:

ma120but-01-universoadvpl

Segue o código completo do Ponto de Entrada:

/*/{Protheus.doc} MA120BUT
Incluir Botões na Tela do Pedido de Compras

@author Eurai Rapelli
@since 16/09/2014

@return aButtons , Array , Novos Botões
/*/
User Function MA120BUT()
Local aButtons := {}

aAdd( aButtons, { 'COMPREL', {|| MyFunction() }, 'Meu Botão', 'Meu Botão' } )

Return( aButtons )

O botão foi configurado para chamar a função MyFunction(), mas você pode ajustar para qualquer outra função desejada conforme sua necessidade 🔧.

A função MyFunction() foi utilizada para manipular os dados do aCols do Pedido de Compra (GRID), preenchendo os campos automaticamente.

 

Diferente de outros pontos de entrada, o MA120BUT não disponibiliza o objeto do GRID em variável PRIVATE, impedindo o uso de oObjeto:Refresh(). Apesar de conseguir manipular o aCols, ao clicar em campos como Quantidade, Preço ou Total, o sistema limpava automaticamente os produtos e demais valores 😖.

Tentei várias alternativas sem sucesso:

Eval(bPIDRefresh)

GETDREFRESH()

SysRefresh()

Também tentei obter o objeto do GRID via aControls, porém o comportamento permaneceu o mesmo.

Quase desistindo 😅, finalmente encontrei uma solução funcional para atualizar o aCols do Pedido de Compra:

Pergunte("MTA120",.F.)
n := 01
A120Produto( aCols[ 01, GdFieldPos('C7_PRODUTO') ] )
A120Trigger("C7_PRODUTO")

Função completa utilizada no exemplo:

/*/{Protheus.doc} MyFunction
Minha Função

@author Eurai Rapelli
@since 16/09/2014
/*/
Static Function MyFunction()

Pergunte("MTA120",.F.)

n := 01

aCols[ 01, GdFieldPos('C7_PRODUTO') ] := '00000' // Código do produto fixo para testes
A120Produto( aCols[ 01, GdFieldPos('C7_PRODUTO') ] )
A120Trigger("C7_PRODUTO")

aCols[ 01, GdFieldPos('C7_QUANT') ] := 1
A120Trigger("C7_QUANT")

aCols[ 01, GdFieldPos('C7_PRECO') ] := 1
A120Trigger("C7_PRECO")

aCols[ 01, GdFieldPos('C7_TOTAL') ] := 1
A120Trigger("C7_TOTAL")

Return( Nil )

Se preferir criar várias linhas no GRID, basta usar um laço FOR e substituir o 01 pela variável do seu loop.

E esse foi o post explicando o Ponto de Entrada MA120BUT e como atualizar corretamente o aCols do Pedido de Compra.

 

Gostou? Compartilhe com seus amigos e deixe um comentário! 😎

Um abraço, e até a próxima! 👋

 

#protheus #advpl #ma120but #pedido de compras #ponto de entrada #totvsprotheus #grid protheus #acolumns #programacaoadvpl #customizacao protheus #compras protheus

ASSINE A NEWSLETTER

Cadastrando...

PIX uDesenv

PIX QR Code para depósito

Clique para doar

Parceiros

Tudo em ADVPL - Blog parceiro

Blog ADVPL