Árvore de páginas

01. VISÃO GERAL

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

02. Inclusão de um novo documento

Exemplo inclusão de um novo documento
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"  

/*Exemplo de inclusão de um novo documento*/
User Function Exemplo001()
    Local oModel    := NIL
    Local oMdlCNK   := Nil
    Local oMdlCXR   := Nil
    Local cContra   := "TREINAMENTO1954"
    Local cChave    := xFilial("CN9") + cContra
    Local aErro     := {}
    Local cNumero   := ""

    CN9->(DbSetOrder(1))
    if CN9->(DbSeek(cChave))
        oModel := FwLoadModel("CNTA171")
        oModel:SetOperation(MODEL_OPERATION_INSERT)

        if oModel:Activate()
            oMdlCNK := oModel:GetModel("CNKMASTER")

            oMdlCNK:SetValue("CNK_DESCRI"	, "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("CXR_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

Alteração de um documento
#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

Exclusão de um documento
#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)

Autenticaçã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. 

Integração com TAE
#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