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 ==  6, .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

Terminal de Informação