Á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
  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). 

Informações
titleAlternativas 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


Bloco de código
titleExemplo medição de um contrato fixo com itens
linenumberstrue
#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

...

Bloco de código
titleMedição com rateio manual
linenumberstrue
#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:AddLineGetModel('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

...

Bloco de código
titleInclusão medição marcando planilhas específicas
linenumberstrue
#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

Bloco de código
titleExemplo Inclusão medição com TES informada no item
linenumberstrue
#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

Bloco de código
titleExemplo inclusão de medição com múltiplas naturezas
linenumberstrue
#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

Bloco de código
firstline1
titleExemplo Autorização de Fornecimento
linenumberstrue
#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

Bloco de código
firstline1
titleExemplo Medição com Desconto
linenumberstrue
#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
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>