ExecAuto – CTBA020 (MVC)

Rotina Automática para criação de dados nas Contas Contábeis

Exemplo da Rotina:

oModelCtb := FWLoadModel('CTBA020')
EndIf

oModelCtb:SetOperation(4)
oModelCtb:Activate()

oCVD := oModelCtb:GetModel('CVDDETAIL')
oCVD:SetValue('CVD_FILIAL', FWxFilial('CVD'))
...

If oModelCtb:VldData()
	oModelCtb:CommitData()
EndIf

Exemplo 1- Alterando e incluindo dados na CVD:

cPasta := "C:\TOTVS\log_CVD\"

//Se for nulo, carrega o modelo de dados
If oModelCtb == Nil
	oModelCtb := FWLoadModel('CTBA020')
EndIf

//Posiciona no Plano de Contas
DBSelectArea("CT1")
CT1->(DbGoTo(QRY_CONTA->CT1REC))

//Seta a operação de Alteração no modelo, e ativa ele 
oModelCtb:SetOperation(nOpcAuto)
oModelCtb:Activate()

//Pega o modelo (grid) da CVD, e define os campos
oCVD := oModelCtb:GetModel('CVDDETAIL')
oCVD:SetValue('CVD_FILIAL', FWxFilial('CVD'))
oCVD:SetValue('CVD_ENTREF', cEntidade )
oCVD:SetValue('CVD_CODPLA', cPlanoRef )
oCVD:SetValue('CVD_VERSAO', cVersao   )
oCVD:SetValue('CVD_CTAREF', cContaRef )
oCVD:SetValue('CVD_CUSTO' , cCenCusto )
oCVD:SetValue('CVD_CLASSE', cClaConta )
oCVD:SetValue('CVD_TPUTIL', cTpUtil   )
oCVD:SetValue('CVD_NATCTA', cNatConta )
oCVD:SetValue('CVD_CTASUP', cEntSuper )

//Valida os dados preenchidos, se deu certo
If oModelCtb:VldData()
	
	//Grava a informação no banco
	oModelCtb:CommitData()
	cIncluido += "- " + QRY_CONTA->CT1_CONTA + " (Cta.Ref.: " + cContaRef + ");" + CRLF
	
Else
	
	//Recupera o erro e joga no array de log
	aLog := oModelCtb:GetErrorMessage()
	cLog := ""
	
	//Percorre as linhas do log
	For nX := 1 to Len(aLog)
		
		//Se tiver conteúdo na linha do log, adiciona na variável de log
		If ! Empty(aLog[nX])
			cLog += Alltrim(aLog[nX]) + CRLF
		EndIf
	Next
	
	//Monta o nome do arquivo, e grava o log nele
	cArquivo := QRY_CONTA->CT1_CONTA + " - log - " + dToS(Date()) + " - " + StrTran(Time(), ':', '-')+".txt"
	MemoWrite(cPasta + cArquivo, cLog)
	
	cErros += "- " + QRY_CONTA->CT1_CONTA + " (Log em '" + cPasta + cArquivo + "');" + CRLF
EndIf

//Desativa o modelo de dados
oModelCtb:DeActivate()

Exemplo 2- Incluindo registro na CT1:

//Carrega o model
    oModelCtb := FWLoadModel('CTBA020')
    
    //Seta a operação de Inclusão
    oModelCtb:SetOperation(3)
    oModelCtb:Activate()
    
    //Pega o modelo da CT1 e define os campos
    oModelCT1 := oModelCtb:GetModel('CT1MASTER')
    oModelCT1:SetValue('CT1_CONTA',  "CONTA000000000000002")
    oModelCT1:SetValue('CT1_DESC01', "CONTA DE TESTES 2" )
    oModelCT1:SetValue('CT1_CLASSE', "1" )
    oModelCT1:SetValue('CT1_NORMAL', "1" )

    /* Se quiser, aqui você pode colocar para criar os outros details, como o da linha 17 a 27 do exemplo acima */
    
    //Valida os dados preenchidos, se deu certo
    If oModelCtb:VldData() .And. oModelCtb:CommitData()
        FWAlertSuccess("Registro incluido na tabela CT1.", "Sucesso!")
        
    Else
        
        //Busca o Erro do Modelo de Dados
		aErro := oModelCtb:GetErrorMessage()

		//Monta o Texto que será mostrado na tela
		AutoGrLog("Id do formulário de origem:"  + ' [' + AllToChar(aErro[01]) + ']')
		AutoGrLog("Id do campo de origem: "      + ' [' + AllToChar(aErro[02]) + ']')
		AutoGrLog("Id do formulário de erro: "   + ' [' + AllToChar(aErro[03]) + ']')
		AutoGrLog("Id do campo de erro: "        + ' [' + AllToChar(aErro[04]) + ']')
		AutoGrLog("Id do erro: "                 + ' [' + AllToChar(aErro[05]) + ']')
		AutoGrLog("Mensagem do erro: "           + ' [' + AllToChar(aErro[06]) + ']')
		AutoGrLog("Mensagem da solução: "        + ' [' + AllToChar(aErro[07]) + ']')
		AutoGrLog("Valor atribuído: "            + ' [' + AllToChar(aErro[08]) + ']')
		AutoGrLog("Valor anterior: "             + ' [' + AllToChar(aErro[09]) + ']')

		//Mostra a mensagem de Erro
		MostraErro()
    EndIf
    
    //Desativa o modelo de dados
    oModelCtb:DeActivate()

Observações:

– Caso tenha dúvidas ou problemas com os exemplos, entre em contato;

– Se tiver sugestões de rotinas, pode entrar em contato;