🛒 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 👇:

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