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
#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
#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
#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)
#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