Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

  1. Visão Geral
  2. Medição com itens
  3. Medição sem Itens
  4. Medição com Rateio pré-configurado
  5. Medição com Rateio
  6. Medição configurado para ignorar produtos bloqueados
  7. Obtendo a lista de competências
  8. Estorno de uma medição

01. VISÃO GERAL

Objetivo desse documento é exemplificar a utilização do ExecAuto da nova rotina de Medições(CNTA121). 

...

Bloco de código
titleObtendo a lista de competências de um contrato
linenumberstrue
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

		/* <CtrCompets> retorna a lista de competências possíveis para o contrato, deve-se estar posicionado no contrato(CN9).
			O array é composto pelas competências no formato MM/AAAA, exemplo:
			{
				'05/2020',
				'06/2020',
				'07/2020'
			}
			O campo <CND_RCCOMP> recebe o índice desse vetor correspondente a competência à ser medida, porém o índice deve ser convertido para caractere.
			No exemplo acima, caso se deseje medir a competência '05/2020', cujo índice no vetor é um(1), deve-se passar o valor '1'(caractere) para o campo <CND_RCCOMP>.
		*/
		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

08. Estorno de uma medição

Bloco de código
titleEstornando uma medição
linenumberstrue
Static Function CNT121_007()
    Local cCodCTR   := "CNTA121EXEMP007"
    Local cMedErro  := ""
    Local lRet      := .F. 
     
    CND->(DbSetOrder(1))
         
    If CND->(DbSeek(xFilial("CND") + cCodCTR))//Posicionar na CND para realizar o estorno
        CN121Estorn(.T.,/*lAprRev*/, @cMedErro)
        lRet := Empty(cMedErro) //Vazio caso nao ocorra nenhum erro
    EndIf  
Return lRet
HTML
<!-- esconder o menu --> 


<style>
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}
</style>