Olá, Seja Bem-vindo!!!
Hoje vou mostrar o ponto de entrada MA120BUT do modulo de COMPRAS.
Esse PE é usado para adicionar botão na tela do pedido de venda. Como mostra imagem abaixo:
Segue o código dele
/*/{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 )
Esse botão coloquei para chamara função MyFunction(). Você pode alterar para a função que desejar.
Usei essa função MyFunction() para manipular os dados do aCols do Pedido de Compra.
Nesse caso em especifico, precisei criar um botão no menu 'MA120BUT' onde chama uma função 'MyFunction()' para preencher os dados aCols do pedido de compra (GRID).
Diferente de outros PE, esse não disponibiliza o objeto do GRID em variável PRIVATE, assim não possibilitando utilizar o oObjeto:Refresh().
Era possível carregar os dados com aCols, porém após clicar em alguns campos (Quantidade,Preço,Total) o mesmo limpava os campos de Produtos e outros.
Realizei tentativa das seguintes formas para contornar o problema:
Eval( bPIDRefresh ) e GETDREFRESH() e SysRefresh(), sem sucesso.
Tentei obter o objeto do GRID pelo aControls, porém continue sem sucesso.
Quase desistindo, encontrei uma maneira de atualizar o aCols do Pedido de Compra, segue abaixo.
Pergunte("MTA120",.F.) n := 01 A120Produto( aCols[ 01, GdFieldPos('C7_PRODUTO') ] ) A120Trigger("C7_PRODUTO")
Segue função Completa:
/*/{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 no meu cadastro de produto. Fixo para teste. 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 )
No caso, você pode utilizar um Laço/For e criar as linhas do aCols/GRID; basta trocar o 01 pela variável do seu Laço/For.
Esse foi o POST sobre o PE MA120BUT e atualização do aCols do pedido de Compra.
Gostou? Compartilhe com seus amigos e deixe um comentário! 😎
Um abraço, e até a próxima