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.