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;