Mostrando a descrição do produto na SD1 | Ti Responde 0206

No vídeo de hoje, vamos demonstrar em como usar criar um campo de descrição do produto no Documento de Entrada e atualizar ele via gatilho e via ponto de entrada.

A dúvida de hoje, nos perguntaram, como seria possível incluir um campo nos itens do Documento de Entrada (SD1), que irá armazenar a descrição do produto, porém esse campo ele poderá ser alterável, e deverá ser atualizado sozinho via gatilho na SB1, ou via ponto de entrada ao selecionar o item da SC7.

 

Pensando nisso, montamos um exemplo, onde vamos mostrar como fazer isso, sendo que:

  1. Primeiro é necessário criar o campo D1_X_DESCR com o contexto real, sendo alterável e com o mesmo tamanho do B1_DESC e do C7_DESCRI (é que o usuário pode alterar a descrição direto no pedido de compras)
  2. Depois, crie um gatilho do campo D1_COD para o D1_X_DESCR, com as seguintes parametrizações:

 Tipo: Primário

 Regra: SB1->B1_DESC

 Posiciona: Sim

 Alias: SB1

 Índice: 1

 Chave: FWxFilial(“SB1”) + M->D1_COD

  1. Agora que já foi cercado do produto, precisamos cercar do pedido, e para isso vamos usar o ponto de entrada MT103IPC, onde pegamos o SC7->C7_DESCRI e jogamos para o D1_X_DESCR

 

Segue abaixo o vídeo exemplificando:

 

E abaixo o código fonte desenvolvido:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function MT103IPC
Atualiza os itens do Documento de Entrada conforme o Pedido de Compras
@type  Function
@author Atilio
@since 02/09/2024
@see https://tdn.totvs.com/display/public/PROT/MT103IPC+-+Atualiza+campos+customizados+no+Documento+de+Entrada
/*/

User Function MT103IPC()
    Local aArea     := GetArea()
    Local nLinha    := ParamIXB[1]
    
    //Aciona nossa customização para preencher a descrição do produto
    u_zVid0206(nLinha)

    FWRestArea(aArea)
Return

/*/{Protheus.doc} User Function zVid0206
Preenche a descrição do produto, conforme o que estava no pedido de compras
@type  Function
@author Atilio
@since 02/09/2024
/*/

User Function zVid0206(nLinha)
    Local aArea     := FWGetArea()
    Local nPosDesc  := GDFieldPos("D1_X_DESCR")

    //Atualiza a descrição do produto, conforme o pedido de compra
    If ! Empty(SC7->C7_DESCRI)
        aCols[nLinha][nPosDesc] := SC7->C7_DESCRI
    EndIf

    FWRestArea(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