Rotina Automática para criação de dados nas Contas Contábeis
Exemplo da Rotina:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | //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;