Árvore de páginas

ALCVLDPOST - Validar informações na manutenção do empenho pelo APP Minha Produção

Linha de Produto:

Protheus

Segmento:

Manufatura

Módulo:

SIGAPCP - Planejamento e Controle da Produção

Parâmetro(s):

NomeTipoDescriçãoDefaultObrigatórioReferência
PARAMIXB[1]Array

Array formatado para ser enviado a rotina automática do programa MATA381 ( Manutenção de Empenhos ).




PARAMIXB[2]InteiroNúmero que identifica a operação que será executada para o empenho.
3 - Inclusão / 4 - Alteração / 5 - Exclusão



Idiomas:

Todos

País(es):

Todos

Banco(s) de Dados:

Todos

Sistema(s) Operacional(is):

Todos

Ponto de Entrada

Descrição:
O ponto de entrada ALCVLDPOST é executado nas requisições de manutenção do empenho.
Com este ponto de entrada, é possível validar as informações que estão sendo enviadas para incluir, alterar ou excluir um empenho e retornar uma mensagem personalizada informando a inconsistência identificada, impedindo a inclusão, alteração ou exclusão do empenho, caso retorne conteúdo de erro.
Este ponto de entrada é executado depois do ponto de entrada ALCMNTPOST, responsável pela manipulação dos dados para manutenção do empenho.
Localização:

API PCPAllocations, método POST ALLOCATION - Responsável por enviar os dados à rotina automática de manutenção de empenhos.

Eventos:

Não se aplica.

Programa Fonte:PCPAllocations.PRW

Sintaxe:

ALCVLDPost( ) --> cErro

Retorno:
NomeTipoDescriçãoObrigatório
cErroCaracter

Caso seja identificado que o conteúdo é inválido, deverá retornar a mensagem de erro que será retornada no aplicativo. Caso contrário, apenas retornar uma string em branco.

Sim
Observações:

Não é permitida a utilização de qualquer componente de interface gráfica nesse ponto de entrada, visto que a função será executada durante uma requisição REST.

Exemplo
#INCLUDE "TOTVS.CH"
 
User Function ALCVLDPOST()
    Local aItems    := PARAMIXB[1]
    Local nOperacao := PARAMIXB[2] //3-inclusão;4-alteração;5-exclusão
    Local nPosPrd   := aScan(aItems[1],{|x| AllTrim(x[1]) == "D4_COD"})
    Local nPosLoc   := aScan(aItems[1],{|x| AllTrim(x[1]) == "D4_LOCAL"})
    Local cErro     := ""
    

    If nOperacao == 4
        If nPosPrd > 0
            If AllTrim(aItems[1][nPosPrd][2]) == "PRODUTO"
                If nPosLoc > 0 .And. AllTrim(aItems[1][nPosLoc][2]) == "01"
                     cErro := "O produto " + AllTrim(aItems[1][nPosPrd][2]) + " nao deve ser consumido do armazem " + AllTrim(aItems[1][nPosLoc][2]) + ". "
                EndIf
            EndIf
        EndIf
    EndIf

Return cErro