01. VISÃO GERAL
A função PcoVldLan tem como finalidade validar se o lançamento de origem tem verba orçamentária disponível, efetuando um pseudo-lançamento na movimentação orçamentária e conforme parametrização, no tipo de bloqueio, compara os valores orçados ou previstos com os realizados efetivamente, e sendo o valor orçado maior ou igual ao do realizado, libera o lançamento, caso contrário bloqueia.
Sintaxe:
PCOVLDLAN - Validação de Lançamentos ( cProcesso, cItem, cPrograma, lUsaLote, lDeleta , lVldLinGrade ) --> lRet
Retorno: lRet (logico) .T. - Não Bloqueia .F. - Bloqueia
Observações:
A finalidade desta função é validar se o lançamento de origem tem verba orçamentária disponível, efetuando um pseudo-lançamento na movimentação orçamentária e, conforme parametrização no tipo de bloqueio, compara os valores orçados ou previsto com os realizados efetivamente, e seno o valor orçado maior ou igual ao do realizado, libera o lançamento, caso contrário bloqueia.
No cadastro de Bloqueios por Processo as regras (expressões ADVPL) para geração do pseudo-lançamento devem fazer referência às variáveis de memória no caso de interface do tipo enchoice ou conteúdo de acols quando interface do tipo grade, pois o lançamento de origem na maioria dos caso ainda não existem, isto é, não foram gravados ainda no banco de dados.
No caso de bloqueio a chave de sincronismo deve ser a composição de variáveis de memória que formam a chave de índice do processo envolvido, por exemplo:
Processo 000002 - Contas a Pagar Item 01 --> Chave:
xFilial('SE2')+M->E2_PREFIXO+M->E2_NUM+M->E2_PARCELA+M->E2_TIPO+M->E2_FORNECE+M->E2_LOJA
que é equivalente ao indice 1 da tabela SE2 - Contas a Pagar, portanto se não for bloqueado este lançamento, ao ser gerado o lançamento definitivo, este irá sobrepor o de bloqueio.
Para cada item (ponto de bloqueio) neste cadastro além das regras deve ser estipulado um ou mais tipos de bloqueio que contêm a regra do valor orçado versus o realizado a ser aplicada ao processo envolvido.
Tanto a chamada da função da PcoVldLan(...) como da PcoDetLan(...) deve estar entre a chamada da função PcoIniLan() e a PcoFinLan().
02. EXEMPLO DE UTILIZAÇÃO
Function F050PcoLan() Local lRet := .T.//se nao bloquear grava os lançamentos com a chamada a função PcoDetLan If !PcoVldLan("000002",IIF(M->E2_TIPO$MVPAGANT,"02","01"),"FINA050") lRet := .F. //=========================================================== //Grava os lancamentos nas contas orcamentarias SIGAPCO //=========================================================== If SE2->E2_TIPO $ MVPAGANT PcoDetLan("000002","02","FINA050") Else PcoDetLan("000002","01","FINA050") EndIf Endif Return lRet
03. PARÂMETROS
Nome | Tipo | Descrição | Default | Obrigatório |
cProcesso | Caracter | Código do Processo de Lançamento de Bloqueio do PCO | X | |
cItem | Caracter | Item do Processo de Lançamento do Bloqueio do PCO | X | |
cPrograma | Caracter | Programa Origem do Lançamento de Bloqueio | X | |
lUsaLote | Lógico | Indica se utilizou numero de lote na Ggeraçao do lançamento | .F. | |
lDeleta | Lógico | Indica se é Exclusão do Lançamento de Bloqueio do PCO | .F. | |
lVldLinGrade | Lógico | Indica se a Validação é por Grade | .F. |
04. ASSUNTOS RELACIONADOS
PCOINILAN-Lançamentos_de_Integração
PCODETLAN-Movimentos_lançamentos_orçamentários
PCOFINLAN-Finalização_de_Movimentos_Lançamentos