No artigo de hoje vamos demonstrar em como atualizar a natureza na tela do Documento de Entrada via AdvPL.
Supondo que você tenha um cenário, que no pedido de compras, você já tenha uma Natureza vinculada, e ai precisa que ao selecionar o pedido de compras na tela de documento de entrada, seja usado essa que já foi definida no pedido.
Abaixo a lógica desenvolvida:
- Criação do ponto de entrada MT103IPC
- Dentro dessa função, vai validar se o campo de natureza no pedido foi preenchido (campo customizado C7_X_NATUR)
- Se tiver preenchido e for diferente da natureza atual
- Vai alterar a natureza através do acionado da MaFisAlt
- Por fim vai atualizar a tela com GetDRefresh
Abaixo o exemplo do código fonte:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function MT103IPC Ponto de Entrada acionado ao incluir uma linha no Doc De Entrada via seleção de Pedido de Compra (F5 ou F6) @type Function @author Atilio @since 04/09/2021 @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] Local cNatureza := MaFisRet(, "NF_NATUREZA") //Se tiver natureza no pedido If ! Empty(SC7->C7_X_NATUR) //Se estiver diferente da tela do Documento de Entrada, atualiza na tela If SC7->C7_X_NATUR != cNatureza cNatureza := SC7->C7_X_NATUR MaFisAlt("NF_NATUREZA", cNatureza) GetDRefresh() EndIf EndIf RestArea(aArea) Return
Bom pessoal , por hoje é só.
Abraços até a próxima.
Mas é se o pedido tiver vários itens com naturezas diferentes?
Bom dia Mauro, tudo joia?
É que essa customização foi feita para um cliente, que usava apenas 1 natureza, através do campo customizado C7_X_NATUR.
Inclusive ele usa o ponto de entrada, para deixar o campo no cabeçalho do pedido de compras, igual nesse exemplo: https://terminaldeinformacao.com/2018/03/20/como-adicionar-campos-cabecalho-pedido-de-compra/
Agora se sua necessidade for utilizar múltiplas naturezas, você vai ter que habilitar o parâmetro MV_MULNATP para T, e depois no ponto de entrada, vai ter que interceptar o aCols da grid da tabela SEV e popular as informações direto na grid.
Nesse link da TOTVS tem a documentação de como habilitar múltiplas naturezas no Documento de Entrada: https://centraldeatendimento.totvs.com/hc/pt-br/articles/235301587-Cross-Segmentos-Totvs-Backoffice-Protheus-SIGACOM-Procedimento-para-utilizar-m%C3%BAltiplas-naturezas-no-documento-de-entrada
Tenha uma ótima e abençoada terça feira.
Um forte abraço.