Árvore de páginas

01. DADOS GERAIS

Linha de Produto:Microsiga Protheus®
Segmento:BackOffice
Módulo:Gestão de Contratos 
Função:

CNTA121/CNTA120 - Medições

Ticket:8604688
Issue:DMANMAT02-27379


02. SITUAÇÃO/REQUISITO

Desenvolvida uma função que retorna as competências de determinado contrato, de forma que possa escolher qual competência irá medir no modelo MVC do CNTA121.

03. SOLUÇÃO

Disponibilizamos a função CtrCompets, que retorna um vetor contendo todas as competências passíveis de medição de determinado contrato.

O vetor contêm as competências no formato MM/AAAA, exemplo: {  '11/2020', '12/2020', '01/2021' }. Veja Utilizando o modelo do CNTA121 para mais detalhes.

Exemplo prático:

Obtendo a lista de competências de um contrato
Static Function CNT121_006()
    Local oModel    := Nil
    Local cCodCTR   := "CNTA121EXEMP006"
	Local aCompets	:= {}
	Local nCompet	:= 0
    Local cNumMed   := ""
    Local aMsgDeErro:= {}
    Local lRet      := .F.
     
    CN9->(DbSetOrder(1))
         
    If CN9->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão

		aCompets := CtrCompets()

		nCompet := aScan(aCompets, {|x| AllTrim(x) == '05/2020' })		

        oModel := FWLoadModel("CNTA121")
         
        oModel:SetOperation(MODEL_OPERATION_INSERT)
        If(oModel:CanActivate())           
            oModel:Activate()
            oModel:SetValue("CNDMASTER","CND_CONTRA"    ,CN9->CN9_NUMERO)

			
            oModel:SetValue("CNDMASTER","CND_RCCOMP"    , cValToChar(nCompet))//Selecionar competência
            
            oModel:SetValue("CXNDETAIL","CXN_CHECK" , .T.)//Marcar a planilha(nesse caso apenas uma)
             
            If (oModel:VldData()) /*Valida o modelo como um todo*/
                oModel:CommitData()
            EndIf
        EndIf
         
        If(oModel:HasErrorMessage())
            aMsgDeErro := oModel:GetErrorMessage()
        Else
            cNumMed := CND->CND_NUMMED          
            oModel:DeActivate()        
            lRet := CN121Encerr(.T.) //Realiza o encerramento da medição			
        EndIf
    EndIf  
Return lRet


04. DEMAIS INFORMAÇÕES

O campo CND_RCCOMP é um campo criado pelo modelo do programa. Não faz parte do dicionário de dados, desta forma, não há necessidade de criá-lo.

05. ASSUNTOS RELACIONADOS