CONTEÚDO

  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

01. VISÃO GERAL

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

02. Medição com itens


Static Function CNT121_002()	
	Local oModel	:= Nil
	Local cCodCTR	:= "CNTA121EXEMP002"
	Local cNumMed	:= ""
	Local aMsgDeErro:= {}
	Local lRet		:= .F.	
	
	CN9->(DbSetOrder(1))
		
	If CN9->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão
		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"	,"1")//Selecionar competência
			
			oModel:SetValue("CXNDETAIL","CXN_CHECK"	, .T.)//Marcar a planilha(nesse caso apenas uma)			
			oModel:GetModel('CNEDETAIL'):GoLine(1)
			oModel:SetValue( 'CNEDETAIL' , 'CNE_QUANT' 	, 1)			
			
			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

03. Medição sem itens

Static Function CNT121_001()	
	Local oModel	:= Nil
	Local cCodCTR	:= "CNTA121EXEMP001"
	Local cNumMed	:= ""
	Local aMsgDeErro:= {}
	Local lRet		:= .F.	
	
	CN9->(DbSetOrder(1))
		
	If CN9->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão
		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"	,"1")//Selecionar competência
			
			oModel:SetValue("CXNDETAIL","CXN_CHECK"	, .T.)//Marcar a planilha(nesse caso apenas uma)
			
			oModel:GetModel('CNEDETAIL'):LoadValue('CNE_ITEM', PadL("1", CNE->(Len(CNE_ITEM)), "0"))//Adiciona um item a planilha			
			oModel:SetValue( 'CNEDETAIL' , 'CNE_PRODUT'	, 'GCT000000000000000000000000002')
			oModel:SetValue( 'CNEDETAIL' , 'CNE_QUANT' 	, 1000)
			oModel:SetValue( 'CNEDETAIL' , 'CNE_VLUNIT' , 1 )
			
			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. Medição com rateio pré-configurado


Static Function CNT121_003()	
	Local oModel	:= Nil
	Local cCodCTR	:= "CNTA121EXEMP003"
	Local cNumMed	:= ""
	Local aMsgDeErro:= {}
	Local lRet		:= .F.
	Local aRatPreCfg:= {}
	
	CN9->(DbSetOrder(1))
		
	If CN9->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão
		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"	,"1")//Selecionar competência
			
			oModel:SetValue("CXNDETAIL","CXN_CHECK"	, .T.)//Marcar a planilha(nesse caso apenas uma)			
			oModel:GetModel('CNEDETAIL'):GoLine(1)
			oModel:SetValue( 'CNEDETAIL' , 'CNE_QUANT' 	, 1)
			
			aAdd(aRatPreCfg,{'CTJ_FILIAL', xFilial("CTJ")})
			aAdd(aRatPreCfg,{'CTJ_RATEIO', 'GCT001'})
		
			CN121RatP(oModel, Nil, aRatPreCfg)//Importa rateio pre-configurado
			
			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


05. Medição com rateio


Static Function CNT121_004()	
	Local oModel	:= Nil
	Local cCodCTR	:= "CNTA121EXEMP004"
	Local cNumMed	:= ""
	Local aMsgDeErro:= {}
	Local lRet		:= .F.
	
	CN9->(DbSetOrder(1))
		
	If CN9->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão
		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"	,"1")//Selecionar competência
			
			oModel:SetValue("CXNDETAIL","CXN_CHECK"	, .T.)//Marcar a planilha(nesse caso apenas uma)			
			
			oModel:GetModel('CNEDETAIL'):GoLine(1)
			oModel:SetValue( 'CNEDETAIL' , 'CNE_QUANT' 	, 1)

			/*Os rateios abaixo serao incluidos pra corrente do modelo da CNE*/
			oModel:SetValue("CNZDETAIL","CNZ_PERC"	, 50)
			oModel:SetValue("CNZDETAIL","CNZ_CC"		, '000000001')
			oModel:SetValue("CNZDETAIL","CNZ_CONTA"	, '01234')
			oModel:SetValue("CNZDETAIL","CNZ_ITEMCT"	, '0000000')
			oModel:SetValue("CNZDETAIL","CNZ_CLVL"	, '000001')
		
			oModel:AddLine('CNZDETAIL')
			oModel:SetValue("CNZDETAIL","CNZ_ITEM"	, '02')
			oModel:SetValue("CNZDETAIL","CNZ_PERC"	, 50)
			oModel:SetValue("CNZDETAIL","CNZ_CC"	, '000000002')
			oModel:SetValue("CNZDETAIL","CNZ_CONTA"	, '01235')
			oModel:SetValue("CNZDETAIL","CNZ_ITEMCT", '00001')
			oModel:SetValue("CNZDETAIL","CNZ_CLVL"	, '000002')
			
			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

06. Medição configurada para ignorar produtos bloqueados

Static Function CNT121_005()
	Local oModel	:= Nil
	Local cCodCTR	:= "CNTA121EXEMP005"
	Local cNumMed	:= ""
	Local aMsgDeErro:= {}
	Local lRet		:= .F.
	
	CN9->(DbSetOrder(1))
		
	If CN9->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão
		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"	,"1")//Selecionar competência
			
			oModel:SetValue("CXNDETAIL","CXN_IGITEM", .T.)//Configura para ignorar produtos bloqueados
			oModel:SetValue("CXNDETAIL","CXN_CHECK"	, .T.)//Marcar a planilha(nesse caso apenas uma)			
			
			oModel:GetModel('CNEDETAIL'):GoLine(1)
			oModel:SetValue( 'CNEDETAIL' , 'CNE_QUANT' 	, 1)
			
			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


07. Obtendo a lista de competências

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
<!-- 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>