Como adicionar campos no rodapé do Pedido de Compras

Hoje iremos mostrar como criar uma aba no rodapé do pedido de compras e adicionar campos via ponto de entrada.

O exemplo dentro desse artigo foi disponibilizado pelo grande Douglas Eduardo ( LinkedIn ).

Basicamente, é necessário manipular 3 pontos de entrada:

  • MT120TEL: Cria uma nova aba no rodapé, nesse exemplo irá ser chamada de Observações
  • MT120FOL: Irá criar o componente na aba que foi criada no P.E. acima (o conteúdo dos Gets precisa ser Public)
  • MTA120G2: Realiza a gravação da informação na tabela SC7

Abaixo um print da aba:

Aba no Rodapé

E abaixo o código fonte desenvolvido para esse exemplo:

//Bibliotecas
#Include "Protheus.ch"

/*--------------------------------------------------------------------------------------------------------------*
 | P.E.:  MT120FOL                                                                                              |
 | Desc:  Se encontra dentro da rotina que monta a dialog do pedido de compras após  a criação do objeto        |
 |        oFolder e antes da montagem dos gets nos folders.              										|
 |        Esse ponto de entrada deve ser utilizado em conjunto com o ponto de entrada 'MT120TEL', onde deve     |
 |        ser adicionado no array aTitles o título do novo folder                                      			|
 | Link:  https://tdn.totvs.com/display/public/PROT/MT120FOL                                                    |
 *--------------------------------------------------------------------------------------------------------------*/

User Function MT120TEL( )

AAdd( aTitles, 'Observações' ) //Nome do folder que será adicionado

Return Nil

//--------------------------------------------------------------------------------------------

User Function MT120FOL( )

	Local aArea     := GetArea()
	Local nOpcx    := PARAMIXB[1]
	Local aPosGet := PARAMIXB[2]
	Local lEdit     := IIF(nOpcx == 3 .Or. nOpcx == 4 .Or. nOpcx ==  9, .T., .F.) //Somente será editável, na Inclusão, Alteração e Cópia
	Local oXObsAux
	Public cXObsAux := ""
	
	//Define o conteúdo para os campos
	If nOpcx == 3
		cXObsAux := CriaVar("C7_ZOBS",.F.)
	Else
		cXObsAux := SC7->C7_ZOBS
	EndIf

	//Criando na janela o campo OBS
	@ 006,aPosGet[3,1] SAY Alltrim(RetTitle("C7_ZOBS")) OF oFolder:aDialogs[7] PIXEL SIZE 070,009 
	oXObsAux := TMultiget():Create(oFolder:aDialogs[7],{|u|if(Pcount()>0,cXObsAux:=u,cXObsAux)},005,aPosGet[3,2]-100,150,050,,,,,,.T.)
    oXObsAux:bHelp := {|| ShowHelpCpo( "C7_ZOBS", {GetHlpSoluc("C7_ZOBS")[1]}, 5  )}

    //Se não houver edição, desabilita os gets
    If !lEdit
        oXObsAux:lActive := .F.
    EndIf
 
    RestArea(aArea)

Return Nil 
  
/*--------------------------------------------------------------------------------------------------------------*
 | P.E.:  MTA120G2                                                                                              |
 | Desc:  Ponto de Entrada para gravar informações no pedido de compra a cada item (usado junto com MT120TEL)   |
 | Link:  http://tdn.totvs.com/pages/releaseview.action?pageId=6085572                                          |
 *--------------------------------------------------------------------------------------------------------------*/
  
User Function MTA120G2()
    Local aArea := GetArea()
 
    //Atualiza a descrição, com a variável pública criada no ponto de entrada MT120TEL
    SC7->C7_ZOBS := cXObsAux
 
    RestArea(aArea)
Return

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta