Árvore de páginas

Versões comparadas

Chave

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

...

Objetivo desse documento é exemplificar a utilização do ExecAuto da nova rotina de Documentos(CNTA171). 

02.

...

Inclusão de um novo documento

Bloco de código
titleExemplo medição inclusão de um contrato fixo com itensnovo documento
linenumberstrue
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"  

/*Exemplo de inclusão de um novo documento*/
User Function CNT121_002Exemplo001()	
	    Local oModel	    := NIL
    Local oMdlCNK   := Nil
    Local oMdlCXR   := Nil
	Local cCodCTR	    Local cContra   := "CNTA121EXEMP002TREINAMENTO1954"
	Local cNumMed	    Local cChave    := xFilial("CN9"
	Local aMsgDeErro) + cContra
    Local aErro     := {}
	Local lRet		    Local cNumero   := .F.	
	
	""

    CN9->(DbSetOrder(1))
		
	If    if CN9->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão
		cChave))
        oModel := FWLoadModelFwLoadModel("CNTA121CNTA171")
		
		        oModel:SetOperation(MODEL_OPERATION_INSERT)
		If(
        if oModel:CanActivateActivate())			
			oModel:Activate()
			oModel
            oMdlCNK := oModel:GetModel("CNKMASTER")

            oMdlCNK:SetValue("CNDMASTERCNK_DESCRI"	,"CND "DOC 001 - INCLUSAO")
            oMdlCNK:SetValue("CNK_CONTRA"	, CN9->CN9_NUMERO)
            oMdlCNK:SetValue("CNK_TPDOC"	, "001")
            oMdlCNK:SetValue("CNK_DTEMIS"	, dDatabase)
            oMdlCNK:SetValue("CNK_DTVALI"	, dDatabase+30)
            oMdlCNK:SetValue("CNK_OBS"	    , "Exemplo inclusão")

            if AliasInDic('CXR')
                oMdlCXR := oModel:GetModel("CXRDETAIL")
                cNumero := StrZero(oMdlCXR:Length(), GetSx3Cache('CXR_ITEM','X3_TAMANHO'))
                oMdlCXR:SetValue("CNDMASTERCXR_ITEM"	, cNumero)
                oMdlCXR:SetValue("CXR_NOME"	, "Responsavel XPTO")
                oMdlCXR:SetValue("CXR_EMAIL", "[email protected]")

                oMdlCXR:AddLine()
                oMdlCXR:SetValue("CXR_ITEM"	, Soma1(cNumero))
                oMdlCXR:SetValue("CXR_NOME"	, "Auxiliar XPTO")
                oMdlCXR:SetValue("CXR_EMAIL", "[email protected]")

            endif
            
            If oModel:VldData()
                oModel:CommitData()
            EndIf

        endif

        if oModel:HasErrorMessage()
            aErro := aClone(oModel:GetErrorMessage())
        endif

        If oModel:IsActive()
            oModel:DeActivate()
        EndIf
        FreeObj(oModel)

        If !Empty(aErro)
            VarInfo('Erro apresentado:', aErro)            
        EndIf
    endif

Return

03. Alteração de um documento

Bloco de código
firstline1
titleAlteração de um documento
linenumberstrue
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"  

/*Exemplo de alteração de um documento*/ 
User Function Exemplo002()
    Local oModel    := NIL
    Local oMdlCNK   := Nil
    Local oMdlCXR   := Nil
    Local cContra   := "TREINAMENTO1954"
    Local cChave    := xFilial("CNK") + cContra
    Local aErro     := {}

    CNK->(DbSetOrder(3))//CNK_FILIAL+CNK_CONTRA+CNK_TPDOC
    if CNK->(DbSeek(cChave))
        oModel := FwLoadModel("CNTA171")
        oModel:SetOperation(MODEL_OPERATION_UPDATE)

        if oModel:Activate()
            oMdlCNK := oModel:GetModel("CNKMASTER")
            
            oMdlCNK:SetValue("CNK_OBS"	    , "Exemplo Modificação")
            if AliasInDic('CXR')
                oMdlCXR := oModel:GetModel("CXRDETAIL")
                oMdlCXR:GoLine(2)                
                oMdlCXR:SetValue("CXR_NOME"	, "Operacao de Atualização")
            endif
            
            If oModel:VldData()
                oModel:CommitData()
            EndIf

        endif

        if oModel:HasErrorMessage()
            aErro := aClone(oModel:GetErrorMessage())
        endif

        If oModel:IsActive()
            oModel:DeActivate()
        EndIf
        FreeObj(oModel)

        If !Empty(aErro)
            VarInfo('Erro apresentado:', aErro)            
        EndIf
    endif

Return

04. Exclusão de um documento

Bloco de código
firstline1
titleExclusão de um documento
linenumberstrue
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"  

/*Exemplo de exclusão de um documento*/  
User Function Exemplo003()
    Local oModel    := NIL
    Local cContra   := "TREINAMENTO1954"
    Local cChave    := xFilial("CNK") + cContra
    Local aErro     := {}

    CNK->(DbSetOrder(3))//CNK_FILIAL+CNK_CONTRA+CNK_TPDOC
    if CNK->(DbSeek(cChave))
        oModel := FwLoadModel("CNTA171")
        oModel:SetOperation(MODEL_OPERATION_DELETE)

        if oModel:Activate()            
            
            If oModel:VldData()
                oModel:CommitData()
            EndIf

        endif

        if oModel:HasErrorMessage()
            aErro := aClone(oModel:GetErrorMessage())
        endif

        If oModel:IsActive()
            oModel:DeActivate()
        EndIf
        FreeObj(oModel)

        If !Empty(aErro)
            VarInfo('Erro apresentado:', aErro)            
        EndIf
    endif

Return

04. Integração com o Totvs Assinatura Eletrônica(TAE)

Aviso
titleAutenticação

Antes de realizar a integração sem interface gráfica, é necessário que o usuário realize a autenticação em tela ao menos uma vez, para que o usuário/senha do TAE fique gravado no profile do usuário do Protheus. 

Bloco de código
firstline1
titleIntegração com TAE
linenumberstrue
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"  

/*Exemplo de integração com o TAE*/   
User Function Exemplo004()
    Local oModel    := NIL    
    Local cContra   := "TREINAMENTO1954"
    Local cChave    := xFilial("CNK") + cContra
    Local aErro     := {}

    CNK->(DbSetOrder(3))//CNK_FILIAL+CNK_CONTRA+CNK_TPDOC
    if CNK->(DbSeek(cChave))
        /*
            ATENÇÃO: 
            É NECESSÁRIO REALIZAR A OPERAÇÃO UMA VEZ EM TELA PARA QUE O USUÁRIO/SENHA FIQUE ARMAZENADA NO PROFILE DO USUÁRIO,
        DEPOIS DISSO SERÁ POSSÍVEL REALIZAR A OPERAÇÃO SEM INTERFACE GRÁFICA.    
        
        */
        CN171SOpSg(1)//1- Envia/publica documento; 2- Republica documento; 3- Atualiza situação da assinatura
        oModel := FwLoadModel("CNTA171")
        oModel:SetOperation(MODEL_OPERATION_UPDATE)

        if oModel:Activate()            
            
            If oModel:VldData()
                oModel:CommitData()
            EndIf

        endif

        if oModel:HasErrorMessage()
            aErro := aClone(oModel:GetErrorMessage())
        endif

        If oModel:IsActive()
            oModel:DeActivate()
        EndIf
        FreeObj(oModel)

        If !Empty(aErro)
            VarInfo('Erro apresentado:', aErro)            
        EndIf

        CN171SOpSg(0)//Restaura operação
    endif

Return"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
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>