Árvore de páginas

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
  8. Estorno de uma medição
  9. Exclusão de uma medição
  10. Inclusão medição com multa/bonificação por planilha
  11. Inclusão medição com multa/bonificação por item da planilha
  12. Inclusão medição marcando todas as planilhas
  13. Inclusão medição marcando planilhas específicas
  14. Inclusão medição com TES informada no item
  15. Inclusão de medição com múltiplas naturezas
  16. Inclusão de autorização de fornecimento
  17. Inclusão de medição com desconto

01. VISÃO GERAL

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

Alternativas para pontos de entrada

Para alternativas para os pontos de entrada, acessar a página CNTA121 - Exemplos pontos de entrada_MVC

Para uma lista com o De/Para dos pontos de entrada do CNTA120 para o CNTA121, acessar a página GCT0084_Nova_Medição_CNTA121


02. Medição com itens


Exemplo medição de um contrato fixo com itens
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"

User 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

Exemplo medição sem itens
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"

User 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


Medição com rateio pré-configurado
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"

User 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


Medição com rateio manual
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"

User 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:GetModel('CNZDETAIL'):AddLine()
			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

Ignorando os produtos bloqueados da planilha
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"

User 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

Obtendo a lista de competências de um contrato
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"

User 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

Estornando uma medição
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"

User 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

09. Exclusão de uma medição

Excluindo uma medição
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"

User Function CNT121_008()
    Local oModel    := Nil
    Local cCodCTR   := "CNTA121EXEMP008"
    Local aMsgDeErro:= {}
    Local lRet      := .F.
     
    CND->(DbSetOrder(1))
         
    If CND->(DbSeek(xFilial("CND") + cCodCTR))//Posicionar na CND para realizar a exclusão
        oModel := FWLoadModel("CNTA121")
         
        oModel:SetOperation(MODEL_OPERATION_DELETE)
        If(oModel:CanActivate())           
            oModel:Activate()
            If (oModel:VldData()) /*Valida o modelo como um todo*/
                oModel:CommitData()
            EndIf
        EndIf
        
        lRet := !(oModel:HasErrorMessage())
        If(!lRet)
            aMsgDeErro := oModel:GetErrorMessage()
        EndIf
    EndIf  
Return lRet

10. Inclusão medição com multa/bonificação por planilha

Inclusão medição com multa/bonificação por planilha
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"

User Function CNT121_009()
    Local oModel    := Nil
    Local cCodCTR   := "CNTA121EXEMP009"
    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('CNRDETAIL1'):GoLine(1)//<CNRDETAIL1> é o submodelo das multas da planilha(CXN)
            oModel:SetValue("CNRDETAIL1","CNR_TIPO"     , '1')//1=Multa/2=Bonificação
            oModel:SetValue("CNRDETAIL1","CNR_DESCRI"   , 'TESTE MULTA')
            oModel:SetValue("CNRDETAIL1","CNR_VALOR"    , 100)
            
            oModel:GetModel('CNRDETAIL1'):AddLine()            
            oModel:SetValue("CNRDETAIL1","CNR_TIPO"     , '2')//1=Multa/2=Bonificação
            oModel:SetValue("CNRDETAIL1","CNR_DESCRI"   , 'TESTE BONIFICACAO')
            oModel:SetValue("CNRDETAIL1","CNR_VALOR"    , 101)
             
            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

11. Inclusão medição com multa/bonificação por item da planilha

Inclusão medição com multa/bonificação por item da planilha
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"

User Function CNT121_010()
    Local oModel    := Nil
    Local cCodCTR   := "CNTA121EXEMP010"
    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)//Posiciona no item da medicao desejada

            oModel:GetModel('CNRDETAIL2'):GoLine(1)//<CNRDETAIL2> é o submodelo das multas dos itens da planilha(CNE)
            oModel:SetValue("CNRDETAIL2","CNR_TIPO"     , '1')//1=Multa/2=Bonificação
            oModel:SetValue("CNRDETAIL2","CNR_DESCRI"   , 'TESTE MULTA')
            oModel:SetValue("CNRDETAIL2","CNR_VALOR"    , 100)
            
            oModel:GetModel('CNRDETAIL2'):AddLine()            
            oModel:SetValue("CNRDETAIL2","CNR_TIPO"     , '2')//1=Multa/2=Bonificação
            oModel:SetValue("CNRDETAIL2","CNR_DESCRI"   , 'TESTE BONIFICACAO')
            oModel:SetValue("CNRDETAIL2","CNR_VALOR"    , 101)
             
            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

12. Inclusão medição marcando todas as planilhas

Inclusão medição marcando todas as planilhas
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"

User Function CNT121_011()
    Local oModel    := Nil
    Local cCodCTR   := "CNTA121EXEMP011"
    Local cNumMed   := ""
    Local aMsgDeErro:= {}
    Local lRet      := .F. 
	Local nX		:= 0
     
    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
            
			For nX := 1 To oModel:GetModel("CXNDETAIL"):Length() //Marca todas as planilhas
				oModel:GetModel("CXNDETAIL"):GoLine(nX)
            	oModel:SetValue("CXNDETAIL","CXN_CHECK" , .T.)
			Next nX
                       
            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

13. Inclusão medição marcando planilhas específicas

Inclusão medição marcando planilhas específicas
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"

User Function CNT121_012()
    Local oModel    := Nil
    Local cCodCTR   := "CNTA121EXEMP012"
    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
			
			//Marca planilha de acordo com a linha informada
			oModel:GetModel("CXNDETAIL"):GoLine(1) //Marca planilha 000001
            oModel:SetValue("CXNDETAIL","CXN_CHECK" , .T.)
			oModel:GetModel("CXNDETAIL"):GoLine(2) //Marca planilha 000002
            oModel:SetValue("CXNDETAIL","CXN_CHECK" , .T.)

            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

14. Inclusão medição com TES informada no item

Exemplo Inclusão medição com TES informada no item
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"

User Function CNT121_013()	
	Local oModel	:= Nil
	Local cCodCTR	:= "CNTA121EXEMP013"
	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) //Posiciona na linha desejada
			oModel:SetValue('CNEDETAIL', 'CNE_TES', '001')//Preenche TES - Este campo aceita tipo de entrada e saída.
			
			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


15. Inclusão de medição com múltiplas naturezas

Exemplo inclusão de medição com múltiplas naturezas
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"

User Function CNT121_014() 
    Local oModel    := Nil
    Local cCodCTR   := "CNTA121EXEMP014"
    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)          
            
 			/*CXO=Múltiplas naturezas | CXP = Distribuição das naturezas em CC*/
            oModel:SetValue("CXODETAIL","CXO_ITEM", StrZero(1, Len(CXO->CXO_ITEM) ))
            oModel:SetValue("CXODETAIL","CXO_NATURE", 'GCT0000001')
            oModel:SetValue("CXODETAIL","CXO_PERC"  , 50)

            oModel:SetValue("CXPDETAIL","CXP_ITEM"  , StrZero(1, Len(CXP->CXP_ITEM) ))
            oModel:SetValue("CXPDETAIL","CXP_CC"    , "GCT000001")
            oModel:SetValue("CXPDETAIL","CXP_CONTA" , "GCT00000000000000001")
            oModel:SetValue("CXPDETAIL","CXP_PERC"  , 50)
            
            oModel:GetModel('CXPDETAIL'):AddLine()
            oModel:SetValue("CXPDETAIL","CXP_ITEM"  , StrZero(2, Len(CXP->CXP_ITEM) ))
            oModel:SetValue("CXPDETAIL","CXP_CC"    , "GCT000002")
            oModel:SetValue("CXPDETAIL","CXP_CONTA" , "GCT00000000000000002")
            oModel:SetValue("CXPDETAIL","CXP_PERC"  , 50)
            
            oModel:GetModel('CXODETAIL'):AddLine()
            oModel:SetValue("CXODETAIL","CXO_ITEM"  , StrZero(2, Len(CXO->CXO_ITEM) ))
            oModel:SetValue("CXODETAIL","CXO_NATURE", 'FIN0000001')
            oModel:SetValue("CXODETAIL","CXO_PERC"  , 50)

            oModel:SetValue("CXPDETAIL","CXP_ITEM"  , StrZero(1, Len(CXP->CXP_ITEM) ))
            oModel:SetValue("CXPDETAIL","CXP_CC"    , "GCT000003")
            oModel:SetValue("CXPDETAIL","CXP_CONTA" , "GCT00000000000000003")
            oModel:SetValue("CXPDETAIL","CXP_ITEMCT", "GCT000001")
            oModel:SetValue("CXPDETAIL","CXP_CLVL"  , "GCT000001")
            oModel:SetValue("CXPDETAIL","CXP_PERC"  , 50)
            
            oModel:GetModel('CXPDETAIL'):AddLine()
            oModel:SetValue("CXPDETAIL","CXP_ITEM"  , StrZero(2, Len(CXP->CXP_ITEM) ))
            oModel:SetValue("CXPDETAIL","CXP_CC"    , "GCT000004")            
            oModel:SetValue("CXPDETAIL","CXP_PERC"  , 50)
             
            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


16. Inclusão de autorização de fornecimento

Exemplo Autorização de Fornecimento
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"

User Function CNT121_015()
    Local oModel    := Nil
    Local cCodCTR   := "CNTA121EXEMP015"
    Local cNumMed   := ""
    Local aMsgDeErro:= {}
    Local lRet      := .F.
      
    CN9->(DbSetOrder(1))
          
    If CN9->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão

        Cn121GAutF(.T., .T.) // Ativa o modo Autorização de Fornecimento(precisa ser antes do FwLoadModel)

        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         
            
            oModel:GetModel('CXNDETAIL'):GoLine(2)
            oModel:SetValue("CXNDETAIL","CXN_CHECK" , .T.) //Marca segunda planilha
           
              
            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

        Cn121GAutF(.F., .T.)//Restaura propriedade do CNTA121
    EndIf 
Return lRet

17. Inclusão de medição com desconto

Exemplo Medição com Desconto
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"  User Function CNT121_016()
    Local oModel    := Nil
    Local cCodCTR   := "CNTA121EXEMP016"
    Local cNumMed   := ""
    Local aMsgDeErro:= {}
    Local lRet      := .F.
    Local oDescontos    := Nil    
      
    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
            
            oDescontos := oModel:GetModel("CNQDETAIL")

            oDescontos:SetValue("CNQ_TPDESC","0001")//Adiciona um desconto
            oDescontos:SetValue("CNQ_VALOR" ,100)
            
            oDescontos:AddLine()
            oDescontos:SetValue("CNQ_TPDESC","0002")//Adiciona um desconto
            oDescontos:SetValue("CNQ_VALOR" ,51)           
              
            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