Árvore de páginas

01. CN300RST - Modificar verificação de propriedade do contrato

Produto:

TOTVS Backoffice

Linha de Produto:

Linha Protheus

Segmento:

Backoffice

Módulo:Gestão de Contratos
Função:CNTA300 - Contratos
Ponto de Entrada:CN300RST

Impacto na performance

Esse ponto de entrada é chamado em muitos pontos do módulo de gestão de contratos, por isso sua implementação deve ser cuidadosa pois pode haver considerável impacto na performance do sistema.

02. DETALHES


Descrição:

Possibilita que o desenvolvedor modifique o comportamento da função responsável por verificar propriedades do contrato com base no tipo do contrato e tipo da planilha

Eventos:

Executado em diversos pontos do módulo, por exemplo durante a inclusão e revisão de contratos, além da inclusão e encerramento da medição

Programa Fonte:

CNTA300.PRW

Função:

CN300RetSt

Parâmetros:
PosiçãoTipoDescrição
PARAMIXB[1]indefinidovalor atual da propriedade
PARAMIXB[2]caractereTipo do Contrato(campo CN9_TPCTO, referente a tabela CN1)
PARAMIXB[3]caractere

Código da propriedade. Possíveis valores:

CódigoTipo
FISICOLógico
FIXO
EVENTUAL
MEDEVE
PREVFINANC
CONTABIL
SEMIFIXO
SEMIPROD
SEMIAGRUP
RECORRENTE
SERVIÇO
COMPRA
VENDA
REVREAJU
REVREALI
LMTFISICO
LMTFINANCEIRO
MEDAUTO
ALCMDDOC
ALCMDEC
ALCCTDOC
ALCCTEC
INTPIMS
ESPECIECaractere
TPMULT
MULMAN
LMTMEDNumérico
LMTMEDCONTRA
PARAMIXB[4]caractereNúmero da planilha.
PARAMIXB[5]numérico

Modo de busca:

  • 0=Posicionada
  • 1=Todas 
  • 2=Ao menos uma
PARAMIXB[6]lógico

Se a propriedade deve ser buscada do modelo.

Só utilizar o modelo para cenários dentro do CNTA300, por exemplo durante a inclusão do contrato.

Retorno:
ValorTipoDescrição
xRetindefinido

Varia de acordo com a propriedade requisitada

Exemplo
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"

User Function CN300RST()
    Local xRet      := ParamIxb[1]//Valor atual da propriedade
    Local cTipoCtr  := ParamIxb[2]//Tipo do Contrato(campo CN9_TPCTO, referente a tabela CN1)
    Local cProp     := ParamIxb[3]//Código da propridade(Exemplo: COMPRA, SERVIÇO, EVENTUAL)
    Local cPlan     := AllTrim(ParamIxb[4])//Número da planilha
    Local nModo     := ParamIxb[5]//Modo de busca(0=Posicionada | 1=Todas | 2=Ao menos uma)
    Local lModel    := ParamIxb[6]//Se a propriedade deve ser buscada do modelo(só utilizar p/ cenários dentro do CNTA300)
    Local cChaveZNA := ""
    Local cFilCTR   := CN9->CN9_FILCTR
    Local cTpsCustom:= "001"//Informar o tipo customizado desejado

    if !lModel .And.;//Se não for chamada via CNTA300
        cTipoCtr $ cTpsCustom //Se o contrato for do tipo customizado        

        cChaveZNA := CN9->(xFilial("ZNA", CN9_FILCTR) + CN9_NUMERO + CN9_REVISA)
        ZNA->(DbSetOrder(1))//ZNA_FILIAL+ZNA_CONTRA+ZNA_REVISA+ZNA_NUMERO

        If ZNA->(DbSeek(cChaveZNA + cPlan)) //Nesse exemplo se usa uma tabela customizada ao invés do padrão CNA
            If nModo == 0
                xRet := CN300PlaSt( cProp, cTipoCtr, ZNA->ZNA_TIPO, cFilCTR )
            Else
                While ZNA->( !Eof()  .And. ZNA_FILIAL+ZNA_CONTRA+ZNA_REVISA == cChaveZNA )
                    xRet := CN300PlaSt( cProp, cTipoCtr, ZNA->ZNA_TIPO, cFilCTR )
                    If (!xRet .And. nModo == 1) .Or. (xRet .And. nModo == 2)
                        Exit
                    Endif
                    ZNA->( dbSkip() )
                EndDo
            Endif
        EndIf

    endif

Return xRet



03. ASSUNTOS RELACIONADOS

  • Não há