Árvore de páginas


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

NomeTipoDescriçãoDefaultObrigatório
cProcessoCaracterCódigo do Processo de Lançamento de Bloqueio do PCO
X
cItemCaracterItem do Processo de Lançamento do Bloqueio do PCO
X
cProgramaCaracterPrograma Origem do Lançamento de Bloqueio
X
lUsaLoteLógicoIndica se utilizou numero de lote na Ggeraçao do lançamento.F.
lDeletaLógicoIndica se é Exclusão do Lançamento de Bloqueio do PCO.F.
lVldLinGradeLógicoIndica 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