unit udtmSystem; interface uses System.SysUtils, System.Classes, Data.DB, Vcl.Forms, Vcl.Dialogs, ZAbstractRODataset, ZAbstractDataset, ZAbstractTable, ZDataset, ZAbstractConnection, ZConnection, IniFiles, IdHashMessageDigest, ZSequence, ZSqlMonitor, ZSqlProcessor, StrUtils, DateUtils, Vcl.ExtCtrls, DBCtrls, Vcl.Controls, Vcl.Buttons, Vcl.Graphics, Variants, System.Json, Vcl.DBGrids, Vcl.CheckLst, rDBComponents, System.UITypes, windows, IBX.IBServices, Datasnap.DBClient, MidasLib, System.ImageList, Vcl.ImgList, Vcl.AppEvnts, ZIBEventAlerter; // Tentando "Hackear" o TDBNavigator type THackDBNavigator = class(TDBNavigator); type TdtmSystem = class(TDataModule) ZConnection: TZConnection; dtsUsuarios: TDataSource; dtsGrupos: TDataSource; dtsPermissoes: TDataSource; dtsGruposPermissoes: TDataSource; qryConsulta: TZQuery; dtsEmpresa: TDataSource; dtsCidades: TDataSource; dtsEstados: TDataSource; dtsPermDisponiveis: TDataSource; tblPermDisponiveis: TZReadOnlyQuery; tblPermDisponiveisID_PERMISSAO: TIntegerField; tblPermDisponiveisCD_PERMISSAO: TWideStringField; tblPermDisponiveisTX_DESCRICAO: TWideStringField; dtsLog: TDataSource; dtsCHGEmpresa: TDataSource; dtsPoliticas: TDataSource; dtsFaixas: TDataSource; dtsDevedores: TDataSource; dtsCHGEnderecos: TDataSource; dtsTelefones: TDataSource; dtsTitulos: TDataSource; ZSQLProcessor1: TZSQLProcessor; dtsProvidencias: TDataSource; tblInadimplencias: TZTable; dtsInadimplencias: TDataSource; tblInadimplenciasID_INADIMPLENCIA: TIntegerField; tblInadimplenciasTX_NOME: TWideStringField; dtsCampanhaCob: TDataSource; dtsCampanhaDevedores: TDataSource; dtsCobCampanha: TDataSource; dtsHistorico: TDataSource; ROQueryFaixa: TZReadOnlyQuery; dtsQueryFaixa: TDataSource; ROquerypesquisas: TZReadOnlyQuery; dtsROquerypesquisas: TDataSource; dtsAgenda: TDataSource; dtsLayout: TDataSource; dtsProtocolo: TDataSource; dtsIndices: TDataSource; dtsRecibo: TDataSource; dtsConteudo: TDataSource; dtsDuplicados: TDataSource; dtsRepasse: TDataSource; dtsLogins: TDataSource; dtsSessao: TDataSource; dtsDespesasTitulos: TDataSource; dtsIndicadorFinanceiro: TDataSource; dtsFiltros: TDataSource; cdsHist: TClientDataSet; cdsHisttx_nome: TStringField; cdsHistcd_documento: TStringField; cdsHistid_devedor: TIntegerField; tblProvidencias: TZQuery; tblProvidenciasID_PROVIDENCIA: TIntegerField; tblProvidenciasTX_NOME: TWideStringField; tblProvidenciasTX_DESCRICAO: TWideStringField; tblProvidenciasTP_PROVIDENCIA: TWideStringField; tblTitulos: TZQuery; tblTitulosID_TITULO: TIntegerField; tblTitulosID_DEVEDOR: TIntegerField; tblTitulosID_EMPRESA: TIntegerField; tblTitulosTX_PRODUTO: TWideStringField; tblTitulosVL_TITULO: TFloatField; tblTitulosDT_ENTRADA: TDateTimeField; tblTitulosDT_VENCIMENTO: TDateTimeField; tblTitulosTP_SITUACAO: TWideStringField; tblTitulosCD_DEVEDOR: TWideStringField; tblTitulosTP_CHEQUE: TWideStringField; tblTitulosID_BANCO: TIntegerField; tblTitulosTX_NRCHEQUE: TWideStringField; tblTitulosTP_MOTIVO: TWideStringField; tblTitulosVL_DESPESA: TFloatField; tblTitulosTP_DESPESA: TWideStringField; tblTitulosVL_MULTA: TFloatField; tblTitulosVL_JUROS: TFloatField; tblTitulosVL_ENCARGOS: TFloatField; tblTitulosVL_CORRIGIDO: TFloatField; tblTitulosDT_PAGAMENTO: TDateTimeField; tblTitulosTX_OBS: TWideMemoField; tblFiltros: TZQuery; tblFiltrosID_FILTRO: TIntegerField; tblFiltrosTX_NOME_FILTRO: TWideStringField; tblFiltrosTP_CREDOR: TWideStringField; tblFiltrosTX_CREDOR: TWideStringField; tblFiltrosTP_PROVIDENCIA: TWideStringField; tblFiltrosTX_PROVIDENCIA: TWideStringField; tblFiltrosCD_PROVIDENCIA: TWideStringField; tblFiltrosTP_VALOR: TWideStringField; tblFiltrosVL_VALORIN: TFloatField; tblFiltrosVL_VALORFIM: TFloatField; tblFiltrosTP_AGENDADO: TWideStringField; tblFiltrosTX_AGENDADO: TWideStringField; tblFiltrosTP_NOME: TWideStringField; tblFiltrosTX_NOME: TWideStringField; tblFiltrosTP_ATRASO: TWideStringField; tblFiltrosTX_ATRASOIN: TIntegerField; tblFiltrosTX_ATRASOFIM: TIntegerField; tblFiltrosTP_PESSOA: TWideStringField; tblFiltrosCD_PESSOA: TWideStringField; tblFiltrosTP_TITULO: TWideStringField; tblFiltrosCD_TITULO: TWideStringField; tblFiltrosCD_ORDEM: TWideStringField; tblAgenda: TZQuery; tblAgendaID_AGENDA: TIntegerField; tblAgendaID_COBRADOR: TIntegerField; tblAgendaID_DEVEDOR: TIntegerField; tblAgendaDT_AGENDADA: TDateField; tblAgendaHR_AGENDADA: TTimeField; tblAgendaTP_SITUACAO: TWideStringField; tblLayouts: TZQuery; tblLayoutsID_LAYOUT: TIntegerField; tblLayoutsTX_NOME: TWideStringField; tblLayoutsSTR_CAMPOS: TWideStringField; tblLayoutsNR_QNTCAMPOS: TFloatField; tblIndices: TZQuery; tblIndicesID_INDICE: TIntegerField; tblIndicesTX_NOME: TWideStringField; tblIndicesPR_INDICE: TFloatField; tblRecibo: TZQuery; tblReciboID_RECIBO: TIntegerField; tblReciboNR_RECIBO: TWideStringField; tblReciboTX_NOME: TWideStringField; tblReciboTX_CPF: TWideStringField; tblReciboTX_CNPJ: TWideStringField; tblReciboID_DEVEDOR: TIntegerField; tblReciboVL_TOTAL: TFloatField; tblReciboVL_PRINCIPAL: TFloatField; tblReciboVL_JUROS: TFloatField; tblReciboVL_MULTA: TFloatField; tblReciboVL_ENCARGOS: TFloatField; tblReciboVL_DESCONTOS: TFloatField; tblReciboVL_CORRIGIDO: TFloatField; tblReciboTP_RECEBIMENTO: TWideStringField; tblReciboNR_CHEQUE: TWideStringField; tblReciboID_BANCO: TIntegerField; tblReciboTX_PRACA: TWideStringField; tblReciboID_USUARIO: TIntegerField; tblReciboDT_IMPRESSAO: TDateTimeField; tblReciboTX_CAMINHO: TWideStringField; tblConteudoRecibo: TZQuery; tblConteudoReciboID_CONTEUDO: TIntegerField; tblConteudoReciboTX_NOME: TWideStringField; tblConteudoReciboDT_VENCIMENTO: TDateTimeField; tblConteudoReciboVL_PRINCIPAL: TFloatField; tblConteudoReciboVL_JUROS: TFloatField; tblConteudoReciboVL_MULTA: TFloatField; tblConteudoReciboVL_ENCARGOS: TFloatField; tblConteudoReciboVL_DESCONTOS: TFloatField; tblConteudoReciboVL_CORRIGIDO: TFloatField; tblConteudoReciboID_RECIBO: TIntegerField; tblConteudoReciboVL_DESPESA: TFloatField; tblConteudoReciboTX_DEPESA: TWideStringField; tblConteudoReciboVL_EXTRAS: TFloatField; tblDuplicados: TZQuery; tblDuplicadosID_DUPLICADO: TIntegerField; tblDuplicadosTX_NOMEDEVEDOR: TWideStringField; tblDuplicadosCD_CPF: TWideStringField; tblDuplicadosTX_NOMETITULO: TWideStringField; tblDuplicadosVL_TITULO: TFloatField; tblDuplicadosDT_VENCIMENTO: TDateTimeField; tblDuplicadosTP_ACAO: TWideStringField; tblDuplicadosCD_CNPJ: TWideStringField; tblLogins: TZQuery; tblLoginsID_LOGIN: TIntegerField; tblLoginsID_USUARIO: TIntegerField; tblLoginsDT_LOGIN: TDateField; tblLoginsHR_LOGIN: TTimeField; tblLoginsDT_LOGOFF: TDateField; tblLoginsHR_LOGOFF: TTimeField; tblEmpresa: TZQuery; tblEmpresaID_EMPRESA: TIntegerField; tblEmpresaTX_NOME: TWideStringField; tblEmpresaTX_FANTASIA: TWideStringField; tblEmpresaTX_ENDERECO: TWideStringField; tblEmpresaNR_NUMERO: TIntegerField; tblEmpresaTX_COMPLEMENTO: TWideStringField; tblEmpresaTX_BAIRRO: TWideStringField; tblEmpresaID_CIDADE: TIntegerField; tblEmpresaTX_CEP: TWideStringField; tblEmpresaTX_TELEFONE: TWideStringField; tblEmpresaTX_WEBSITE: TWideStringField; tblEmpresaTX_CNPJ: TWideStringField; tblEmpresaTX_IE: TWideStringField; tblEmpresaTX_IM: TWideStringField; tblEmpresaTL_OBSERVACOES: TWideMemoField; tblEmpresaTX_LOGOMARCA: TWideStringField; tblEmpresaTX_HONORARIOS: TWideStringField; tblEmpresaPR_DEBITO: TFloatField; tblEmpresaPR_CREDVISTA: TFloatField; tblEmpresaPR_CRED3: TFloatField; tblEmpresaPR_CRED6: TFloatField; tblEmpresaPR_CRED12: TFloatField; tblEmpresaIMG_LOGO: TBlobField; tblEmpresaPR_FINANCIAMENTO: TFloatField; tblEmpresaTX_TITULO: TWideStringField; tblEmpresaID_ESTADO: TIntegerField; tblEmpresaTX_EMAILNOME: TWideStringField; tblEmpresaTX_EMAIL: TWideStringField; tblEmpresaTX_SMTP: TWideStringField; tblEmpresaTX_PORTA: TWideStringField; tblEmpresaTX_USUARIO: TWideStringField; tblEmpresaTX_SENHA: TWideStringField; tblPermissoes: TZQuery; tblPermissoesID_PERMISSAO: TIntegerField; tblPermissoesCD_PERMISSAO: TWideStringField; tblPermissoesTX_DESCRICAO: TWideStringField; tblPermissoesID_PARENT: TIntegerField; tblPermissoesTP_ACESSO: TWideStringField; tblTitulosID_ULTIMO_USUARIO: TIntegerField; tblTitulosDT_HORA_ULTIMA_ATT: TDateTimeField; tblTitulosTX_ULTIMO_USUARIO: TStringField; tblRepasse: TZQuery; tblRepasseID_REPASSE: TIntegerField; tblRepassePR_PRINCIPAL: TFloatField; tblRepassePR_JUROS: TFloatField; tblRepassePR_MULTA: TFloatField; tblRepassePR_ENCARGOS: TFloatField; tblRepassePR_CORRIGIDO: TFloatField; tblRepasseTX_NOME: TWideStringField; tblSessao: TZQuery; tblSessaoID_SESSAO: TIntegerField; tblSessaoID_USUARIO: TIntegerField; tblSessaoTP_ATIVA: TWideStringField; tblCobCampanha: TZQuery; tblCobCampanhaID_CAMPANHA: TIntegerField; tblCobCampanhaTX_NOME: TWideStringField; tblCobCampanhaTP_ATIVA: TWideStringField; tblCobCampanhaTP_CONCLUIDA: TWideStringField; tblCobCampanhaTX_DESC: TWideStringField; tblCobCampanhaDT_CAD: TDateField; tblCHGEmpresa: TZQuery; tblCHGEmpresaID_EMPRESA: TIntegerField; tblCHGEmpresaTX_NOME: TWideStringField; tblCHGEmpresaTX_FANTASIA: TWideStringField; tblCHGEmpresaTX_CNPJ: TWideStringField; tblCHGEmpresaTX_IE: TWideStringField; tblCHGEmpresaTX_ENDERECO: TWideStringField; tblCHGEmpresaTX_COMPLEMENTO: TWideStringField; tblCHGEmpresaID_CIDADE: TIntegerField; tblCHGEmpresaTX_BAIRRO: TWideStringField; tblCHGEmpresaID_ESTADO: TIntegerField; tblCHGEmpresaTX_CEP: TWideStringField; tblCHGEmpresaTX_TELEFONE: TWideStringField; tblCHGEmpresaTX_EMAIL: TWideStringField; tblCHGEmpresaTX_WEBSITE: TWideStringField; tblCHGEmpresaNR_NUMERO: TIntegerField; tblCHGEmpresaTX_IM: TWideStringField; tblCHGEmpresaTL_OBSERVACOES: TWideMemoField; tblCHGEmpresaID_REPASSE: TIntegerField; tblCHGEmpresaPR_MULTA: TFloatField; tblCHGEmpresaPR_JUROS: TFloatField; tblCHGEmpresaNR_PARCELAS: TIntegerField; tblCHGEmpresaPR_DESC_QUIT_PRIN: TFloatField; tblCHGEmpresaPR_DESC_QUIT_JUROS: TFloatField; tblCHGEmpresaPR_DESC_QUIT_MULTA: TFloatField; tblCHGEmpresaPR_DESC_QUIT_IND_FIN: TFloatField; tblCHGEmpresaPR_DESC_QUIT_COR: TFloatField; tblCHGEmpresaPR_DESC_FINAN_PRIN: TFloatField; tblCHGEmpresaPR_DESC_FINAN_JUROS: TFloatField; tblCHGEmpresaPR_DESC_FINAN_MULTA: TFloatField; tblCHGEmpresaPR_DESC_FINAN_IND_FIN: TFloatField; tblCHGEmpresaPR_DESC_FINAN_COR: TFloatField; tblCHGEmpresaPR_INDICADOR_FINANCEIRO: TFloatField; tblCHGEmpresaPR_JUROS_PARCELAR: TFloatField; tblEstados: TZQuery; tblEstadosID_ESTADO: TIntegerField; tblEstadosTX_NOME: TWideStringField; tblEstadosCD_ESTADO: TWideStringField; tblEstadosTX_SIGLA: TWideStringField; tblUsuariosConsulta: TZQuery; tblUsuariosConsultaID_USUARIO: TIntegerField; tblUsuariosConsultaTX_NOME: TWideStringField; tblUsuariosConsultaTX_USUARIO: TWideStringField; tblUsuariosConsultaTX_SENHA: TWideStringField; tblUsuariosConsultaID_GRUPO: TIntegerField; tblUsuariosConsultaTP_ATIVO: TWideStringField; tblUsuariosConsultaTP_TROCAPASS: TWideStringField; tblUsuariosConsultaTX_EMAILNOME: TWideStringField; tblUsuariosConsultaTX_EMAIL: TWideStringField; tblUsuariosConsultaTX_SMTP: TWideStringField; tblUsuariosConsultaTX_PORTA: TWideStringField; tblUsuariosConsultaTX_USUARIOEMAIL: TWideStringField; tblUsuariosConsultaTX_SENHAEMAIL: TWideStringField; tblGrupos: TZQuery; tblGruposID_GRUPO: TIntegerField; tblGruposTX_NOME: TWideStringField; tblGruposTP_SU: TWideStringField; tblUsuarios: TZQuery; tblUsuariosID_USUARIO: TIntegerField; tblUsuariosTX_NOME: TWideStringField; tblUsuariosTX_USUARIO: TWideStringField; tblUsuariosTX_SENHA: TWideStringField; tblUsuariosID_GRUPO: TIntegerField; tblUsuariosTP_ATIVO: TWideStringField; tblUsuariosTP_TROCAPASS: TWideStringField; tblUsuariosTX_EMAILNOME: TWideStringField; tblUsuariosTX_EMAIL: TWideStringField; tblUsuariosTX_SMTP: TWideStringField; tblUsuariosTX_PORTA: TWideStringField; tblUsuariosTX_USUARIOEMAIL: TWideStringField; tblUsuariosTX_SENHAEMAIL: TWideStringField; tblGruposPermissoes: TZQuery; tblGruposPermissoesID_ITEM: TIntegerField; tblGruposPermissoesID_GRUPO: TIntegerField; tblGruposPermissoesID_PERMISSAO: TIntegerField; tblGruposPermissoesTP_ACESSO: TWideStringField; tblCampanhaCob: TZQuery; tblCampanhaCobID_ITEM: TIntegerField; tblCampanhaCobID_CAMPANHA: TIntegerField; tblCampanhaCobID_COBRADOR: TIntegerField; tblCampanhaDevedores: TZQuery; tblCampanhaDevedoresID_ITEM: TIntegerField; tblCampanhaDevedoresID_CAMPANHA: TIntegerField; tblCampanhaDevedoresID_DEVEDOR: TIntegerField; tblCampanhaDevedoresTX_DOCUMENTO: TWideStringField; tblCampanhaDevedoresTP_ESTADO: TWideStringField; tblCampanhaDevedoresTX_NOME: TStringField; tblHistorico: TZQuery; tblHistoricoID_HISTORICO: TIntegerField; tblHistoricoID_DEVEDOR: TIntegerField; tblHistoricoID_COBRADOR: TIntegerField; tblHistoricoID_TITULO: TIntegerField; tblHistoricoID_PROVIDENCIA: TIntegerField; tblHistoricoDT_CONTATO: TDateTimeField; tblHistoricoTP_AGENDAMENTO: TWideStringField; tblHistoricoCD_PROTOCOLO: TWideStringField; tblHistoricoTL_MEMO: TWideMemoField; tblHistoricoID_ULTIMO_USUARIO: TIntegerField; tblHistoricoDT_HORA_ULTIMA_ATT: TDateTimeField; tblHistoricoID_TITULOS: TWideStringField; tblHistoricoTX_ULTIMO_USUARIO: TStringField; tblHistoricoTX_MEMO: TStringField; tblProtocolo: TZQuery; tblProtocoloID_PROTOCOLO: TIntegerField; tblProtocoloCD_PROTOCOLO: TWideStringField; tblProtocoloQNT_TITULOS: TIntegerField; tblProtocoloID_TITULOS: TWideMemoField; tblProtocoloID_DEVEDOR: TIntegerField; tblProtocoloVL_ENTRADA: TFloatField; tblProtocoloVL_JUROS: TFloatField; tblProtocoloVL_MULTA: TFloatField; tblProtocoloVL_INDICADOR: TFloatField; tblProtocoloVL_ENCARGOS: TFloatField; tblProtocoloVL_CORRIGIDO: TFloatField; tblProtocoloTP_DESC_QUIT: TWideStringField; tblProtocoloPR_QUIT_JUROS: TFloatField; tblProtocoloPR_QUIT_MULTA: TFloatField; tblProtocoloPR_QUIT_INDICADOR: TFloatField; tblProtocoloPR_QUIT_PRINCIPAL: TFloatField; tblProtocoloTP_DESC_PAR: TWideStringField; tblProtocoloPR_PARCELAR_JUROS: TFloatField; tblProtocoloPR_PARCELAR_MULTA: TFloatField; tblProtocoloPR_PARCELAR_INDICADOR: TFloatField; tblProtocoloPR_PARCELAR_PRINCIPAL: TFloatField; tblProtocoloNR_PARCELAS: TIntegerField; tblProtocoloDT_PROTOCOLO: TDateTimeField; tblProtocoloPR_QUIT_COR: TFloatField; tblProtocoloPR_PARCELAR_COR: TFloatField; tblDespesasTitulos: TZQuery; tblDespesasTitulosID_DESPESA: TIntegerField; tblDespesasTitulosID_TITULO: TIntegerField; tblDespesasTitulosTX_DESCRICAO: TWideStringField; tblDespesasTitulosVL_DESPESA: TFloatField; tblDespesasTitulosTP_DESPESA: TWideStringField; tblIndicadorFinanceiro: TZQuery; tblIndicadorFinanceiroID_INDICADOR: TIntegerField; tblIndicadorFinanceiroID_CHG_EMPRESA: TIntegerField; tblIndicadorFinanceiroPR_INDICADOR: TFloatField; tblIndicadorFinanceiroVL_INDICADOR: TFloatField; tblIndicadorFinanceiroTP_INDICADOR: TWideStringField; tblIndicadorFinanceiroATRASO_MIN: TIntegerField; tblIndicadorFinanceiroATRASO_MAX: TIntegerField; tblAgendaTX_NOME: TStringField; tblTelefones: TZQuery; tblTelefonesID_TELEFONE: TIntegerField; tblTelefonesID_DEVEDOR: TIntegerField; tblTelefonesNR_NUMERO: TWideStringField; tblTelefonesTP_ATIVO: TWideStringField; tblTelefonesTP_TIPOTEL: TWideStringField; tblTelefonesTX_DESC: TWideStringField; tblTelefonesTX_OBS: TWideMemoField; tblTelefonesID_ULTIMO_USUARIO: TIntegerField; tblTelefonesDT_HORA_ULTIMA_ATT: TDateTimeField; tblTelefonesTX_ULTIMO_USUARIO: TStringField; tblEnderecos: TZQuery; tblEnderecosID_ENDERECO: TIntegerField; tblEnderecosID_DEVEDOR: TIntegerField; tblEnderecosTP_ENDERECO: TWideStringField; tblEnderecosTP_ATIVO: TWideStringField; tblEnderecosTX_LOGRADOURO: TWideStringField; tblEnderecosTX_BAIRRO: TWideStringField; tblEnderecosID_CIDADE: TIntegerField; tblEnderecosID_ESTADO: TIntegerField; tblEnderecosTX_CEP: TWideStringField; tblEnderecosTX_COMPLEMENTO: TWideStringField; tblEnderecosNR_NUMERO: TFloatField; tblEnderecosTP_REFERENCIA: TWideStringField; tblEnderecosID_HIGIENIZADORA: TIntegerField; tblEnderecosTP_CONFIRMADO: TWideStringField; tblEnderecosID_ULTIMO_USUARIO: TIntegerField; tblEnderecosDT_HORA_ULTIMA_ATT: TDateTimeField; tblEnderecosTX_ULTIMO_USUARIO: TStringField; tblEnderecosTX_ESTADO: TStringField; tblEnderecosTX_CIDADE: TStringField; tblFaixas: TZQuery; tblFaixasID_FAIXA: TIntegerField; tblFaixasID_POLITICA: TIntegerField; tblFaixasTX_DESCRICAO: TWideStringField; tblFaixasATRASO_MIN: TIntegerField; tblFaixasATRASO_MAX: TIntegerField; tblFaixasPR_JUROS: TFloatField; tblFaixasPR_MULTA: TFloatField; tblFaixasPR_DESC_QUIT_PRIN: TFloatField; tblFaixasPR_DESC_QUIT_JUROS: TFloatField; tblFaixasPR_DESC_QUIT_MULTA: TFloatField; tblFaixasPR_DESC_QUIT_IND_FIN: TFloatField; tblFaixasPR_DESC_QUIT_COR: TFloatField; tblFaixasPR_DESC_FINAN_PRIN: TFloatField; tblFaixasPR_DESC_FINAN_JUROS: TFloatField; tblFaixasPR_DESC_FINAN_MULTA: TFloatField; tblFaixasPR_DESC_FINAN_COR: TFloatField; tblFaixasPR_DESC_FINAN_IND_FIN: TFloatField; tblPoliticas: TZQuery; tblPoliticasID_POLITICA: TIntegerField; tblPoliticasID_EMPRESA: TIntegerField; tblPoliticasTX_DESCRICAO: TWideStringField; tblPoliticasDT_INICIO: TDateTimeField; tblPoliticasDT_FIM: TDateTimeField; tblCidades: TZQuery; tblCidadesID_CIDADE: TIntegerField; tblCidadesTX_NOME: TWideStringField; tblCidadesID_ESTADO: TIntegerField; tblCidadesCD_IBGE: TWideStringField; tblDevedores: TZQuery; tblDevedoresID_DEVEDOR: TIntegerField; tblDevedoresTP_CLIENTE: TWideStringField; tblDevedoresTX_PAI: TWideStringField; tblDevedoresTX_NOME: TWideStringField; tblDevedoresTX_MAE: TWideStringField; tblDevedoresDT_CADASTRO: TDateTimeField; tblDevedoresDT_NASC: TDateTimeField; tblDevedoresCD_CPF: TWideStringField; tblDevedoresCD_CNPJ: TWideStringField; tblDevedoresTL_MEMO: TWideMemoField; tblDevedoresID_COBRADOR: TIntegerField; tblDevedoresCD_RG: TWideStringField; tblDevedoresCD_DEVEDOR: TWideStringField; tblDevedoresTX_EMAIL: TWideStringField; tblDevedoresID_ULTIMO_USUARIO: TIntegerField; tblDevedoresDT_HORA_ULTIMA_ATT: TDateTimeField; tblDevedoresTX_ULTIMO_USUARIO: TStringField; tblTextoEmail: TZQuery; dtsTextoEmail: TDataSource; tblTextoEmailID_TEXTO: TIntegerField; tblTextoEmailTX_DESCRICAO: TWideStringField; tblTextoEmailTL_TEXTO: TWideMemoField; tblAgendaNOME_COBRADOR: TStringField; tblCampanhaDevedoresTP_COBRANDO: TIntegerField; tblTelefonesNR_DDD: TWideStringField; tblCHGEmpresaTP_ENTRADA: TWideStringField; tblProtocoloTP_DESC_QUIT_COR: TWideStringField; tblProtocoloTP_PAG: TWideStringField; tblProtocoloTP_DESC_PAR_COR: TWideStringField; tblProtocoloID_EMPRESA: TIntegerField; tblCHGEmpresaPR_ENTRADA_MIN: TFloatField; tblCHGEmpresaPR_ENTRADA_MAX: TFloatField; tblProtocoloPR_ENTRADA: TFloatField; tblCHGEmpresaTP_CHEQUE: TWideStringField; tblCHGEmpresaTP_CRED: TWideStringField; tblCHGEmpresaTP_DIN: TWideStringField; tblHistoricoTX_PROVIDENCIA: TStringField; tblAgendaDT_QUE_AGENDOU: TDateTimeField; tblAgendaQUEM_AGENDOU: TIntegerField; tblAgendaNOME_QUEM_AGENDOU: TStringField; tblEmpresaPR_BANCO_DEBITO: TFloatField; tblEmpresaPR_BANCO_CREDVISTA: TFloatField; tblEmpresaPR_BANCO_CRED3: TFloatField; tblEmpresaPR_BANCO_CRED6: TFloatField; tblEmpresaPR_BANCO_CRED12: TFloatField; tblReciboTX_CAIXA: TStringField; tblReciboTP_CANCELADO: TWideStringField; tblCobCampanhaQUEM_CAD: TIntegerField; tblCampanhaCobID_ULTIMO_USUARIO: TIntegerField; tblCampanhaCobDT_HORA_ULTIMA_ATT: TDateTimeField; tblCampanhaDevedoresID_ULTIMO_USUARIO: TIntegerField; tblCampanhaDevedoresDT_HORA_ULTIMA_ATT: TDateTimeField; tblCHGEmpresaID_ULTIMO_USUARIO: TIntegerField; tblCHGEmpresaDT_HORA_ULTIMA_ATT: TDateTimeField; tblPoliticasID_ULTIMO_USUARIO: TIntegerField; tblPoliticasDT_HORA_ULTIMA_ATT: TDateTimeField; tblFaixasID_ULTIMO_USUARIO: TIntegerField; tblFaixasDT_HORA_ULTIMA_ATT: TDateTimeField; tblEmail: TZQuery; dtsEmail: TDataSource; tblEmailID_DEVEDOR: TIntegerField; tblEmailTX_EMAIL: TWideStringField; tblEmailID_ULTIMO_USUARIO: TIntegerField; tblEmailDT_HORA_ULTIMA_ATT: TDateTimeField; tblEmailTX_ULTIMO_USUARIO: TStringField; dtsLogCampanhas: TDataSource; tblLogCampanhas: TZQuery; tblLogCampanhasID_ITEM: TIntegerField; tblLogCampanhasID_CAMPANHA: TIntegerField; tblLogCampanhasTX_NOME_CAMPANHA: TWideStringField; tblLogCampanhasID_DEVEDOR: TIntegerField; tblLogCampanhasID_USUARIO: TIntegerField; tblLogCampanhasDT_TRANSF: TDateTimeField; tblLogCampanhasTP_ACAO: TWideStringField; tblEmailID_EMAIL: TIntegerField; dtsAcordos: TDataSource; tblAcordos: TZQuery; tblAcordosID_ITEM: TIntegerField; tblAcordosID_ACORDO: TIntegerField; tblAcordosID_PARCELA: TIntegerField; tblAcordosID_ORIGINAL: TIntegerField; tblAcordosID_DEVEDOR: TIntegerField; tblEmpresaTP_TLS: TWideStringField; tblEmpresaTP_SSL: TWideStringField; tblUsuariosTP_SSL: TWideStringField; tblUsuariosConsultaTP_SSL: TWideStringField; tblCobCampanhaTL_DESC: TWideMemoField; tblUsuariosTP_TLS: TWideStringField; tblUsuariosConsultaTP_TLS: TWideStringField; tblFiltrosTL_CREDOR: TWideMemoField; tblFiltrosTL_PROV: TWideMemoField; tblTitulosID_IMPLANTACAO: TIntegerField; tblTitulosTX_IMPLANTADO: TStringField; tblTitulosDT_IMPLANTACAO: TDateTimeField; tblTitulosQTDE_PARCELAS: TIntegerField; tblTitulosVL_DESC_PRINCIPAL: TFloatField; zroQryAcordos: TZReadOnlyQuery; dtsQAcordos: TDataSource; zroQryAcordosID_ITEM: TIntegerField; zroQryAcordosID_ACORDO: TIntegerField; zroQryAcordosID_PARCELA: TIntegerField; zroQryAcordosID_ORIGINAL: TIntegerField; zroQryAcordosID_DEVEDOR: TIntegerField; zroQryAcordosTX_NOME: TStringField; zroQryAcordosVL_TITULO: TCurrencyField; zroQryAcordosDT_VENCIMENTO: TDateField; tblFaixasDT_MIN: TDateTimeField; tblFaixasDT_MAX: TDateTimeField; tblTitulosDT_EMISSAO_RECIBO: TDateTimeField; tblFaixasTP_FAIXA: TWideStringField; tblRepasseFase: TZQuery; tblRepasseFaseID_FASE: TIntegerField; tblRepasseFasePR_PRINCIPAL: TFloatField; tblRepasseFasePR_JUROS: TFloatField; tblRepasseFasePR_MULTA: TFloatField; tblRepasseFasePR_ENCARGOS: TFloatField; tblRepasseFasePR_CORRIGIDO: TFloatField; tblRepasseFaseMIN_ATRASO: TIntegerField; tblRepasseFaseMAX_ATRASO: TIntegerField; tblRepasseFaseID_REPASSE: TIntegerField; dtsRepasseFase: TDataSource; tblRepasseFaseID_ULTIMO_USUARIO: TIntegerField; tblRepasseFaseDT_HORA_ULTIMA_ATT: TDateTimeField; zroqryContatos: TZReadOnlyQuery; dtsContatos: TDataSource; zroqryContatosID_COBRADOR: TIntegerField; zroqryContatosNOME: TWideStringField; zroqryContatosQTDE_ACIONAMENTOS: TIntegerField; tblProvidenciasTP_FORCAAGENDA: TWideStringField; tblTelefonesTP_SMS: TWideStringField; tblCHGEmpresaID_DEPARTAMENTO: TIntegerField; dtsDepartamentos: TDataSource; tblDepartamentos: TZQuery; tblDepartamentosID_DEPARTAMENTOS: TIntegerField; tblDepartamentosTX_NOME: TWideStringField; dtsUsuariosConsulta: TDataSource; dtsEmpresaRepasse: TDataSource; tblEmpresaRepasse: TZQuery; tblEmpresaRepasseID_ITEM: TIntegerField; tblEmpresaRepasseID_EMPRESA: TIntegerField; tblEmpresaRepassePR_PRINCIPAL: TFloatField; tblEmpresaRepassePR_JUROS: TFloatField; tblEmpresaRepassePR_MULTA: TFloatField; tblEmpresaRepassePR_ENCARGOS: TFloatField; tblEmpresaRepassePR_CORRIGIDO: TFloatField; tblEmpresaRepasseTX_NOME: TWideStringField; tblEmpresaRepasseID_MES: TIntegerField; tblEmpresaRepasseID_ANO: TIntegerField; tblLog: TZQuery; tblLogID_LOG: TIntegerField; tblLogTX_TABELA: TWideStringField; tblLogID_REGISTRO: TIntegerField; tblLogTX_ACAO: TWideStringField; tblLogID_USUARIO: TIntegerField; tblLogDT_LOG: TDateTimeField; tblLogTL_ACAO: TWideMemoField; ZSQLProcessorAcordos: TZSQLProcessor; seqLogs: TZSequence; seqHistoricos: TZSequence; seqDevedores: TZSequence; seqRecibos: TZSequence; seqEnderecos: TZSequence; seqTelefones: TZSequence; tblCHGEmpresaTP_JUROS: TWideStringField; tblCHGEmpresaNR_JUROS: TFloatField; tblFaixasTP_JUROS: TWideStringField; tblFaixasNR_JUROS: TFloatField; tblTitulosVL_DESC_MULTA: TFloatField; tblTitulosVL_DESC_JUROS: TFloatField; tblTitulosVL_INDICADOR: TFloatField; tblTitulosVL_DESC_INDICADOR: TFloatField; tblTitulosVL_REPASSE_MULTA: TFloatField; tblTitulosVL_REPASSE_JUROS: TFloatField; tblTitulosVL_REPASSE_CORRIGIDO: TFloatField; tblTitulosVL_REPASSE_PRIN: TFloatField; tblTitulosTP_PRESTACAO: TWideStringField; tblTitulosVL_REPASSE_ENCARGOS: TFloatField; ImageList1: TImageList; tblBoletos: TZQuery; dtsBoletos: TDataSource; seqBoletos: TZSequence; seqBoletoTitulos: TZSequence; tblBoletoTitulos: TZQuery; dtsBoletoTitulos: TDataSource; tblBoletoTitulosID_ITEM: TIntegerField; tblBoletoTitulosID_DEVEDOR: TIntegerField; tblBoletoTitulosID_TITULO: TIntegerField; tblBoletoTitulosID_BOLETO: TIntegerField; tblEmpresaTX_CNPJ_BOLETO: TWideStringField; tblCidadesConsulta: TZReadOnlyQuery; tblCidadesConsultaID_CIDADE: TIntegerField; tblCidadesConsultaTX_NOME: TWideStringField; tblCidadesConsultaID_ESTADO: TIntegerField; tblCidadesConsultaCD_IBGE: TWideStringField; dtsContas: TDataSource; tblContas: TZQuery; tblContasID_CONTA: TIntegerField; tblContasTX_DESCRICAO: TWideStringField; tblContasCD_AGENCIA: TWideStringField; tblContasCD_AGENCIA_DV: TWideStringField; tblContasCD_CEDENTE: TWideStringField; tblContasCD_CEDENTE_DV: TWideStringField; tblContasCD_CONVENIO: TWideStringField; tblContasCD_CONVENIO_DV: TWideStringField; tblContasCD_CONTA: TWideStringField; tblContasCD_CONTA_DV: TWideStringField; tblContasID_BANCO: TIntegerField; tblContasTP_SITUACAO: TWideStringField; tblContasCD_MODALIDADE: TWideStringField; tblContasDT_REMESSA: TDateField; tblContasNR_REMESSA: TIntegerField; seqContas: TZSequence; tblEmpresaCD_BENEFICIARIO: TWideStringField; seqNrRecibo: TZSequence; dtsPrCartao: TDataSource; tblPrCartao: TZQuery; tblPrCartaoID_ITEM: TIntegerField; tblPrCartaoNR_PARCELA: TIntegerField; tblPrCartaoPR_JUROS: TFloatField; tblPrCartaoTX_DESCRICAO: TWideStringField; tblPrCartaoPR_REPASSE: TFloatField; tblEmpresaCLIENT_ID: TWideStringField; tblEmpresaCLIENT_SECRET: TWideStringField; tblEmpresaCONTA_CORRENTE: TWideStringField; tblDevedoresCD_DOCUMENTO: TStringField; tblEnderecosTX_UF: TStringField; tblEmpresaTX_CIDADE: TStringField; tblEmpresaTX_UF: TStringField; tblEnderecosTX_ENDERECO_COMPLETO: TWideStringField; tblDevedoresNR_DIA_VENCIMENTO: TIntegerField; tblDevedoresNR_DIAS_AGENDA: TIntegerField; tblDevedoresID_ENDERECO_BOLETO: TIntegerField; tblDevedoresID_TELEFONE_BOLETO: TIntegerField; tblDevedoresID_EMAIL_BOLETO: TIntegerField; tblDevedoresTX_MENSAGEM_BOLETO_1: TWideStringField; tblDevedoresTX_MENSAGEM_BOLETO_2: TWideStringField; tblDevedoresTX_MENSAGEM_BOLETO_3: TWideStringField; tblDevedoresTX_MENSAGEM_BOLETO_4: TWideStringField; tblDevedoresTX_MENSAGEM_BOLETO_5: TWideStringField; tblDevedoresVL_NOMINAL_BOLETO: TFloatField; tblDevedoresTP_DESC_BOLETO_1: TWideStringField; tblDevedoresTP_DESC_BOLETO_2: TWideStringField; tblDevedoresTP_DESC_BOLETO_3: TWideStringField; tblDevedoresNR_DIAS_DESC_BOLETO_1: TIntegerField; tblDevedoresNR_DIAS_DESC_BOLETO_2: TIntegerField; tblDevedoresNR_DIAS_DESC_BOLETO_3: TIntegerField; tblDevedoresPR_DESC_BOLETO_1: TFloatField; tblDevedoresPR_DESC_BOLETO_2: TFloatField; tblDevedoresPR_DESC_BOLETO_3: TFloatField; tblDevedoresVL_DESC_BOLETO_1: TFloatField; tblDevedoresVL_DESC_BOLETO_2: TFloatField; tblDevedoresVL_DESC_BOLETO_3: TFloatField; tblDevedoresTP_MULTA_BOLETO: TWideStringField; tblDevedoresNR_DIAS_MULTA_BOLETO: TIntegerField; tblDevedoresPR_MULTA_BOLETO: TFloatField; tblDevedoresVL_MULTA_BOLETO: TFloatField; tblDevedoresTP_MORA_BOLETO: TWideStringField; tblDevedoresNR_MORA_BOLETO: TIntegerField; tblDevedoresPR_MORA_BOLETO: TFloatField; tblDevedoresVL_MORA_BOLETO: TFloatField; tblTelefonesTX_TELEFONE_COMPLETO: TWideStringField; cdsDescBoleto: TClientDataSet; cdsDescBoletoID_STATUS: TIntegerField; cdsDescBoletoTX_VALOR: TStringField; cdsDescBoletoTX_DESCRICAO: TStringField; dtsDescBoleto: TDataSource; dtsMoraBoleto: TDataSource; cdsMoraBoleto: TClientDataSet; IntegerField1: TIntegerField; StringField1: TStringField; StringField2: TStringField; dtsMultaBoleto: TDataSource; cdsMultaBoleto: TClientDataSet; IntegerField2: TIntegerField; StringField3: TStringField; StringField4: TStringField; tblDevedoresTX_SUFIXO_SEU_NUMERO: TWideStringField; tblEmpresaPATH_CERT: TWideStringField; tblEmpresaPATH_KEY: TWideStringField; tblBoletosID_BOLETO: TIntegerField; tblBoletosID_DEVEDOR: TIntegerField; tblBoletosTX_NOSSO_NUMERO: TWideStringField; tblBoletosTX_SEU_NUMERO: TWideStringField; tblBoletosCD_BARRAS: TWideStringField; tblBoletosCD_LINHA_DIGITAVEL: TWideStringField; tblBoletosVL_NOMINAL: TFloatField; tblBoletosDT_VENCIMENTO: TDateField; tblBoletosNR_ADIAS_AGENDA: TIntegerField; tblBoletosTX_DOCUMENTO: TWideStringField; tblBoletosTP_PESSOA: TWideStringField; tblBoletosTX_NOME: TWideStringField; tblBoletosTX_ENDERECO: TWideStringField; tblBoletosNR_ENDERECO: TIntegerField; tblBoletosTX_COMPLEMENTO: TWideStringField; tblBoletosTX_BAIRRO: TWideStringField; tblBoletosTX_CIDADE: TWideStringField; tblBoletosTX_UF: TWideStringField; tblBoletosCD_CEP: TWideStringField; tblBoletosTX_EMAIL: TWideStringField; tblBoletosNR_DDD: TWideStringField; tblBoletosNR_TELEFONE: TWideStringField; tblBoletosTX_MENSAGEM_1: TWideStringField; tblBoletosTX_MENSAGEM_2: TWideStringField; tblBoletosTX_MENSAGEM_3: TWideStringField; tblBoletosTX_MENSAGEM_4: TWideStringField; tblBoletosTX_MENSAGEM_5: TWideStringField; tblBoletosTP_DESCONTO_1: TWideStringField; tblBoletosDT_DESCONTO_1: TDateField; tblBoletosPR_DESCONTO_1: TFloatField; tblBoletosVL_DESCONTO_1: TFloatField; tblBoletosTP_DESCONTO_2: TWideStringField; tblBoletosDT_DESCONTO_2: TDateField; tblBoletosPR_DESCONTO_2: TFloatField; tblBoletosVL_DESCONTO_2: TFloatField; tblBoletosTP_DESCONTO_3: TWideStringField; tblBoletosDT_DESCONTO_3: TDateField; tblBoletosPR_DESCONTO_3: TFloatField; tblBoletosVL_DESCONTO_3: TFloatField; tblBoletosTP_MULTA: TWideStringField; tblBoletosDT_MULTA: TDateField; tblBoletosPR_MULTA: TFloatField; tblBoletosVL_MULTA: TFloatField; tblBoletosTP_MORA: TWideStringField; tblBoletosDT_MORA: TDateField; tblBoletosPR_MORA: TFloatField; tblBoletosVL_MORA: TFloatField; tblBoletosTX_NOME_BENEFICIARIO: TWideStringField; tblBoletosTX_DOCUMENTO_BENEFICIARIO: TWideStringField; tblBoletosTP_PESSOA_BENEFICIARIO: TWideStringField; tblBoletosCD_CEP_BENEFICIARIO: TWideStringField; tblBoletosTX_ENDERECO_BENEFICIARIO: TWideStringField; tblBoletosTX_BAIRRO_BENEFICIARIO: TWideStringField; tblBoletosTX_CIDADE_BENEFICIARIO: TWideStringField; tblBoletosTX_UF_BENEFICIARIO: TWideStringField; tblBoletosTX_MOTIVO_CANCELAMENTO: TWideStringField; tblBoletosTX_SITUACAO: TWideStringField; tblBoletosDT_SITUACAO: TDateTimeField; tblBoletosVL_TOTAL_RECEBIDO: TFloatField; tblBoletosDT_EMISSAO: TDateTimeField; tblDevEmpBoletos: TZQuery; tblDevEmpBoletosID_ITEM: TIntegerField; tblDevEmpBoletosID_DEVEDOR: TIntegerField; tblDevEmpBoletosID_EMPRESA: TIntegerField; tblDevEmpBoletosTX_EMPRESA: TWideStringField; dtsDevEmpBoletos: TDataSource; seqDevEmpBoletos: TZSequence; procedure tblUsuariosAfterInsert(DataSet: TDataSet); procedure tblGruposAfterInsert(DataSet: TDataSet); procedure tblGruposPermissoesAfterInsert(DataSet: TDataSet); procedure DataModuleCreate(Sender: TObject); procedure tblCidadesAfterInsert(DataSet: TDataSet); procedure tblGruposPermissoesAfterPost(DataSet: TDataSet); procedure AtribuirChavePrimaria(DataSet: TDataSet); procedure RegistarLog(DataSet: TDataSet; table, action: string); procedure tblGruposBeforePost(DataSet: TDataSet); procedure tblLogBeforePost(DataSet: TDataSet); procedure tblCHGEmpresaBeforePost(DataSet: TDataSet); procedure tblPoliticasBeforePost(DataSet: TDataSet); procedure tblFaixasBeforePost(DataSet: TDataSet); procedure dtsGruposDataChange(Sender: TObject; Field: TField); procedure tblGruposBeforeDelete(DataSet: TDataSet); procedure tblEnderecosBeforePost(DataSet: TDataSet); procedure tblTelefonesBeforePost(DataSet: TDataSet); procedure tblTitulosBeforePost(DataSet: TDataSet); procedure tblCHGEmpresaAfterDelete(DataSet: TDataSet); procedure tblProvidenciasBeforePost(DataSet: TDataSet); procedure tblInadimplenciasBeforePost(DataSet: TDataSet); procedure tblCampanhaCobBeforePost(DataSet: TDataSet); procedure tblCampanhaDevedoresBeforePost(DataSet: TDataSet); procedure tblCobCampanhaBeforePost(DataSet: TDataSet); procedure tblFaixasAfterInsert(DataSet: TDataSet); procedure tblPoliticasAfterInsert(DataSet: TDataSet); procedure tblPoliticasAfterPost(DataSet: TDataSet); procedure tblHistoricoBeforePost(DataSet: TDataSet); procedure tblProvidenciasBeforeDelete(DataSet: TDataSet); procedure tblProvidenciasBeforeEdit(DataSet: TDataSet); procedure tblAgendaBeforePost(DataSet: TDataSet); procedure tblLayoutsBeforePost(DataSet: TDataSet); procedure tblProtocoloBeforePost(DataSet: TDataSet); procedure tblLogPostError(DataSet: TDataSet; E: EDatabaseError; var action: TDataAction); procedure tblLogEditError(DataSet: TDataSet; E: EDatabaseError; var action: TDataAction); procedure tblInadimplenciasDeleteError(DataSet: TDataSet; E: EDatabaseError; var action: TDataAction); procedure tblInadimplenciasEditError(DataSet: TDataSet; E: EDatabaseError; var action: TDataAction); procedure tblInadimplenciasPostError(DataSet: TDataSet; E: EDatabaseError; var action: TDataAction); procedure tblCHGEmpresaBeforeDelete(DataSet: TDataSet); procedure tblIndicesBeforePost(DataSet: TDataSet); procedure tblIndicesAfterPost(DataSet: TDataSet); procedure tblReciboBeforePost(DataSet: TDataSet); procedure tblConteudoReciboBeforePost(DataSet: TDataSet); procedure tblUsuariosBeforePost(DataSet: TDataSet); procedure tblDuplicadosBeforePost(DataSet: TDataSet); procedure tblRepasseBeforePost(DataSet: TDataSet); procedure tblRepasseBeforeDelete(DataSet: TDataSet); procedure tblRepasseBeforeEdit(DataSet: TDataSet); procedure tblLoginsBeforePost(DataSet: TDataSet); procedure tblSessaoBeforePost(DataSet: TDataSet); procedure tblDespesasTitulosBeforePost(DataSet: TDataSet); procedure tblIndicadorFinanceiroBeforePost(DataSet: TDataSet); procedure tblEmpresaBeforePost(DataSet: TDataSet); procedure tblFiltrosBeforePost(DataSet: TDataSet); procedure dtsDevedoresUpdateData(Sender: TObject); procedure dtsCHGEmpresaUpdateData(Sender: TObject); procedure dtsPoliticasUpdateData(Sender: TObject); procedure dtsFaixasUpdateData(Sender: TObject); procedure dtsCHGEnderecosUpdateData(Sender: TObject); procedure dtsTelefonesUpdateData(Sender: TObject); procedure dtsIndicadorFinanceiroUpdateData(Sender: TObject); procedure tblTitulosAfterPost(DataSet: TDataSet); procedure tblDevedoresAfterOpen(DataSet: TDataSet); procedure dtsDevedoresDataChange(Sender: TObject; Field: TField); procedure tblTitulosBeforeOpen(DataSet: TDataSet); procedure tblUsuariosBeforeOpen(DataSet: TDataSet); procedure tblGruposAfterOpen(DataSet: TDataSet); procedure tblGruposPermissoesBeforeOpen(DataSet: TDataSet); procedure tblCampanhaCobBeforeOpen(DataSet: TDataSet); procedure tblCobCampanhaAfterOpen(DataSet: TDataSet); procedure dtsCobCampanhaDataChange(Sender: TObject; Field: TField); procedure tblCampanhaDevedoresBeforeOpen(DataSet: TDataSet); procedure tblHistoricoBeforeOpen(DataSet: TDataSet); procedure tblProtocoloBeforeOpen(DataSet: TDataSet); procedure tblDespesasTitulosBeforeOpen(DataSet: TDataSet); procedure tblTitulosAfterOpen(DataSet: TDataSet); procedure dtsTitulosDataChange(Sender: TObject; Field: TField); procedure tblIndicadorFinanceiroBeforeOpen(DataSet: TDataSet); procedure tblCHGEmpresaAfterOpen(DataSet: TDataSet); procedure dtsCHGEmpresaDataChange(Sender: TObject; Field: TField); procedure tblTelefonesBeforeOpen(DataSet: TDataSet); procedure tblEnderecosBeforeOpen(DataSet: TDataSet); procedure tblDevedoresBeforePost(DataSet: TDataSet); procedure tblTextoEmailBeforePost(DataSet: TDataSet); procedure tblHistoricoPostError(DataSet: TDataSet; E: EDatabaseError; var action: TDataAction); procedure tblEstadosAfterOpen(DataSet: TDataSet); procedure tblCidadesAfterOpen(DataSet: TDataSet); procedure tblHistoricoAfterPost(DataSet: TDataSet); procedure tblHistoricoBeforeDelete(DataSet: TDataSet); procedure tblPermissoesBeforePost(DataSet: TDataSet); procedure tblGruposPermissoesBeforePost(DataSet: TDataSet); procedure tblDevedoresBeforeDelete(DataSet: TDataSet); procedure tblEmailBeforeOpen(DataSet: TDataSet); procedure tblEmailBeforePost(DataSet: TDataSet); procedure tblLogCampanhasBeforePost(DataSet: TDataSet); procedure tblAcordosBeforePost(DataSet: TDataSet); procedure ZConnectionAfterDisconnect(Sender: TObject); procedure tblRepasseFaseBeforePost(DataSet: TDataSet); procedure tblRepasseFaseAfterOpen(DataSet: TDataSet); procedure tblRepasseAfterOpen(DataSet: TDataSet); procedure dtsRepasseDataChange(Sender: TObject; Field: TField); procedure tblRepasseFaseBeforeOpen(DataSet: TDataSet); procedure tblTitulosBeforeEdit(DataSet: TDataSet); procedure tblTitulosBeforeDelete(DataSet: TDataSet); procedure dtsRepasseFaseDataChange(Sender: TObject; Field: TField); procedure tblDepartamentosBeforePost(DataSet: TDataSet); procedure tblDevedoresBeforeEdit(DataSet: TDataSet); procedure tblEmpresaBeforeDelete(DataSet: TDataSet); procedure tblEmpresaBeforeEdit(DataSet: TDataSet); procedure tblUsuariosBeforeDelete(DataSet: TDataSet); procedure tblUsuariosBeforeEdit(DataSet: TDataSet); procedure tblGruposBeforeEdit(DataSet: TDataSet); procedure tblPermissoesBeforeDelete(DataSet: TDataSet); procedure tblPermissoesBeforeEdit(DataSet: TDataSet); procedure tblGruposPermissoesBeforeDelete(DataSet: TDataSet); procedure tblGruposPermissoesBeforeEdit(DataSet: TDataSet); procedure tblCHGEmpresaBeforeEdit(DataSet: TDataSet); procedure tblPoliticasBeforeDelete(DataSet: TDataSet); procedure tblPoliticasBeforeEdit(DataSet: TDataSet); procedure tblFaixasBeforeDelete(DataSet: TDataSet); procedure tblFaixasBeforeEdit(DataSet: TDataSet); procedure tblHistoricoBeforeEdit(DataSet: TDataSet); procedure tblDepartamentosBeforeDelete(DataSet: TDataSet); procedure tblDepartamentosBeforeEdit(DataSet: TDataSet); procedure tblEnderecosBeforeDelete(DataSet: TDataSet); procedure tblEnderecosBeforeEdit(DataSet: TDataSet); procedure tblTelefonesBeforeDelete(DataSet: TDataSet); procedure tblTelefonesBeforeEdit(DataSet: TDataSet); procedure tblCobCampanhaBeforeDelete(DataSet: TDataSet); procedure tblCobCampanhaBeforeEdit(DataSet: TDataSet); procedure tblCampanhaCobBeforeDelete(DataSet: TDataSet); procedure tblCampanhaCobBeforeEdit(DataSet: TDataSet); procedure tblCampanhaDevedoresBeforeDelete(DataSet: TDataSet); procedure tblCampanhaDevedoresBeforeEdit(DataSet: TDataSet); procedure tblAgendaBeforeDelete(DataSet: TDataSet); procedure tblAgendaBeforeEdit(DataSet: TDataSet); procedure tblLayoutsBeforeDelete(DataSet: TDataSet); procedure tblLayoutsBeforeEdit(DataSet: TDataSet); procedure tblProtocoloBeforeDelete(DataSet: TDataSet); procedure tblProtocoloBeforeEdit(DataSet: TDataSet); procedure tblIndicesBeforeDelete(DataSet: TDataSet); procedure tblIndicesBeforeEdit(DataSet: TDataSet); procedure tblReciboBeforeDelete(DataSet: TDataSet); procedure tblReciboBeforeEdit(DataSet: TDataSet); procedure tblIndicadorFinanceiroBeforeDelete(DataSet: TDataSet); procedure tblIndicadorFinanceiroBeforeEdit(DataSet: TDataSet); procedure tblFiltrosBeforeDelete(DataSet: TDataSet); procedure tblFiltrosBeforeEdit(DataSet: TDataSet); procedure tblTextoEmailBeforeDelete(DataSet: TDataSet); procedure tblTextoEmailBeforeEdit(DataSet: TDataSet); procedure tblEmailBeforeDelete(DataSet: TDataSet); procedure tblEmailBeforeEdit(DataSet: TDataSet); procedure tblAcordosBeforeDelete(DataSet: TDataSet); procedure tblAcordosBeforeEdit(DataSet: TDataSet); procedure tblEmpresaRepasseBeforeDelete(DataSet: TDataSet); procedure tblEmpresaRepasseBeforeEdit(DataSet: TDataSet); procedure tblEmpresaRepasseBeforePost(DataSet: TDataSet); procedure tblEmpresaRepasseAfterOpen(DataSet: TDataSet); procedure dtsEmpresaRepasseDataChange(Sender: TObject; Field: TField); function MonthsBetween(dIni, dFim: TDate): integer; procedure tblEmpresaRepasseAfterPost(DataSet: TDataSet); procedure tblGrupoBoletosBeforeDelete(DataSet: TDataSet); procedure tblGrupoBoletoEmpresasBeforeDelete(DataSet: TDataSet); procedure tblGrupoBoletosBeforeEdit(DataSet: TDataSet); procedure tblGrupoBoletoEmpresasBeforeEdit(DataSet: TDataSet); procedure tblGrupoBoletosBeforePost(DataSet: TDataSet); procedure tblGrupoBoletoEmpresasBeforePost(DataSet: TDataSet); procedure tblGrupoBoletoEmpresasBeforeOpen(DataSet: TDataSet); procedure tblBoletosBeforeDelete(DataSet: TDataSet); procedure tblBoletoTitulosBeforeDelete(DataSet: TDataSet); procedure tblBoletosBeforeEdit(DataSet: TDataSet); procedure tblBoletoTitulosBeforeEdit(DataSet: TDataSet); procedure tblBoletosBeforePost(DataSet: TDataSet); procedure tblBoletoTitulosBeforePost(DataSet: TDataSet); procedure tblPrCartaoAfterInsert(DataSet: TDataSet); procedure tblDevedoresCalcFields(DataSet: TDataSet); procedure tblEnderecosCalcFields(DataSet: TDataSet); procedure tblTelefonesCalcFields(DataSet: TDataSet); procedure tblBoletosBeforeOpen(DataSet: TDataSet); procedure tblDevEmpBoletosBeforeOpen(DataSet: TDataSet); private { Private declarations } public // variáveis usadas fora desta form tx_formulario: String; tx_usuario: String; tx_caminho_versao: String; tx_grupo: String; fields_before: array of string; fieldsTituloBefore: array of string; // parametros das querys id_devedor: integer; id_grupoq: integer; id_campanha: integer; tx_campanha: string; id_tit: integer; id_credor: integer; id_repasse: integer; id_repasse_fase: integer; id_usuario: integer; id_grupo: integer; acesso_manager: boolean; add_user: boolean; mostrar_senha: boolean; att_banco: boolean; log: TextFile; CusFmt: TFormatSettings; id_empimport: integer; cod_liberapermissao: integer; tent_perm: integer; tit_state: string; dt_pag: TDateTime; dt_recibo: TDateTime; path_executavel, path_att, exe: string; version: string; // permissoes cd_value: TStringList; cd_parent: TStringList; perm_caddev: boolean; perm_cobtel: boolean; // certificados public_key: string; private_key: string; certificate_key: string; conta_corrente: string; function NovoCodigo(Tabela, Campo: String): integer; function MD5(Texto: String): String; function MD5FILE(const fileName: string): String; function VerificarPermissao(cd_permissao: string): boolean; procedure AlterReadOnly(objeto: TPanel; DataSet: TDataSet); procedure InserirPermissao(cd_permissao, tp_permissao, tx_descricao: string); procedure EscreveLog(acao: string; table: TZQuery); procedure LogaDC(txt: string); function VerificarVersao(): boolean; function ComputerName(): string; function GetAppVersionStr(): string; function FormatTelefone(telefone: string): string; procedure SetupHackedNavigator(const Navigator: TDBNavigator; const Glyphs: TImageList; S: string); procedure OrganizaPorColuna(Tabela: TObject; coluna: TColumn); procedure JsonBuilder(table: TZTable; model: string; pk: string); procedure JsonBuilderOnline(table: TZTable; model: string; pk: string; url: string); procedure MakePermissoes; function CheckDiffFields(DataSet: TDataSet; fields: array of string): boolean; procedure LogDiffFields(DataSet: TDataSet; fields: array of string; table: string; action: string); procedure LogDelete(DataSet: TDataSet; table: string; action: string); procedure LogPost(DataSet: TDataSet; table: string; action: string; sequence: TZSequence = nil); function gerarProtocolo(id_devedor: string): string; procedure OpenOrRefresh(table: TZQuery); procedure OpenOrRefreshRO(table: TZReadOnlyQuery); { Public declarations } end; var dtmSystem: TdtmSystem; implementation { %CLASSGROUP 'Vcl.Controls.TControl' } uses ucadUsuarios, ufrmAtendimento, ShellApi; {$R *.dfm} procedure TdtmSystem.DataModuleCreate(Sender: TObject); var path_banco, layoutHelper: string; banco, lista: TStringList; i: integer; begin Application.UpdateFormatSettings := false; CusFmt := TFormatSettings.Create(LOCALE_SYSTEM_DEFAULT); CusFmt.CurrencyFormat := 2; CusFmt.CurrencyString := 'R$'; ZConnection.Disconnect; // abre o arquivo ini with TMemIniFile.Create(ExtractFilePath(Application.ExeName) + 'sistema.ini', TEncoding.UTF8) do begin path_banco := ReadString('Dados', 'Dir', ''); path_executavel := ReadString('Dados', 'path', ExtractFilePath(Application.ExeName)); path_att := ReadString('Dados', 'att', path_executavel); exe := ReadString('Dados', 'exe', ''); try ZConnection.Database := ReadString('Dados', 'Dir', ''); ZConnection.Connect; except showmessage ('Não foi possível encontrar o banco de dados. O programa será fechado.'); Application.Terminate; end; end; with TMemIniFile.Create(path_executavel + '\version_control.ini', TEncoding.UTF8) do begin version := ReadString('Dados', 'version', ''); end; if not ZConnection.Connected then begin ZConnection.Connect; end; tblLog.Open; tblGrupos.Open; { Estou "removendo" partes desnecessárias do código para tentar otimizar o sistema as linhas comentadas assim sempre terão {* no início if tblGrupos.IsEmpty then // se não tem grupos, gera grupos predefinidos begin tblGrupos.Append; tblGruposID_GRUPO.AsInteger := 1; tblGruposTX_NOME.AsString := 'Administrador'; tblGruposTP_SU.AsString := 'S'; tblGrupos.Post; tblGrupos.Append; tblGruposID_GRUPO.AsInteger := 2; tblGruposTX_NOME.AsString := 'Cobrador'; tblGruposTP_SU.AsString := 'N'; tblGrupos.Post; tblGrupos.Append; tblGruposID_GRUPO.AsInteger := 3; tblGruposTX_NOME.AsString := 'Atendente'; tblGruposTP_SU.AsString := 'N'; tblGrupos.Post; end; } tblUsuarios.Open; { *if tblUsuarios.IsEmpty then // se não tiver usuários, gera um predefinido begin tblUsuarios.Append; tblUsuariosTX_NOME.AsString := 'Master'; tblUsuariosTX_USUARIO.AsString := 'master'; // tblUsuariosTX_SENHA.AsString := MD5('master'); tblUsuariosTX_SENHA.AsString := 'master'; tblUsuariosID_GRUPO.AsInteger := 1; tblUsuarios.Post; end; } tblGruposPermissoes.Open; tblPermDisponiveis.Open; // se descomentar o código a baixo tira esta linha { *cadUsuarios := TcadUsuarios.Create(self); with cadUsuarios do // gera e atualiza as permissões begin AcessoCobranca; AcessoFerramentas; AcessoCobrancaTel; AcessoAtendimento; AcessoCadastros; AcessoDevedores; AcessoCredores; AcessoUsuarios; AcessoRelatorios; AcessoOpcoes; // InserirIDnaPerm; AtualizarPermissoesGrupos; tblPermDisponiveis.Open; tblGruposPermissoes.First; tblGrupos.Open; while not tblGruposPermissoes.Eof do begin if tblGruposPermissoesID_GRUPO.AsInteger = 1 then begin tblGruposPermissoes.Edit; tblGruposPermissoesTP_ACESSO.AsString := 'S'; tblGruposPermissoes.Post; end; tblGruposPermissoes.Next; end; end; } tblProvidencias.Open; { if tblProvidencias.IsEmpty then // gera as providências padrões caso não tenha nenhuma begin tblProvidencias.Append; tblProvidenciasTX_NOME.AsString := 'Agend-Cob'; tblProvidenciasTX_DESCRICAO.AsString := 'Cobrança agendada para outro cobrador.'; tblProvidencias.Post; tblProvidencias.Append; tblProvidenciasTX_NOME.AsString := 'Quit-Local'; tblProvidenciasTX_DESCRICAO.AsString := 'Título quitado com a empresa de cobrança.'; tblProvidencias.Post; tblProvidencias.Append; tblProvidenciasTX_NOME.AsString := 'Acordo-Local'; tblProvidenciasTX_DESCRICAO.AsString := 'Título acordado com a empresa de cobrança.'; tblProvidencias.Post; tblProvidencias.Append; tblProvidenciasTX_NOME.AsString := 'Rel-M'; tblProvidenciasTX_DESCRICAO.AsString := 'Religar na manhã seguinte.'; tblProvidencias.Post; tblProvidencias.Append; tblProvidenciasTX_NOME.AsString := 'Rel-T'; tblProvidenciasTX_DESCRICAO.AsString := 'Religar na tarde seguinte.'; tblProvidencias.Post; tblProvidencias.Append; tblProvidenciasTX_NOME.AsString := 'Cob-Feita'; tblProvidenciasTX_DESCRICAO.AsString := 'Cobrança telefônica realizada com sucesso.'; tblProvidencias.Post; end; tblProvidencias.Close; } tblRepasse.Open; tblRepasseFase.Open; tblPrCartao.Open; { if tblRepasse.IsEmpty then // gera o repasse "padrão" caso não tenha begin tblRepasse.Append; tblRepasseID_REPASSE.AsInteger := 1; tblRepassePR_PRINCIPAL.AsFloat := 0; tblRepassePR_JUROS.AsFloat := 0; tblRepassePR_MULTA.AsFloat := 0; tblRepassePR_ENCARGOS.AsFloat := 0; tblRepassePR_CORRIGIDO.AsFloat := 100; tblRepasseTX_NOME.AsString := 'Sem Repasse'; tblRepasse.Post; end; tblRepasse.Close; } tent_perm := 0; perm_caddev := true; perm_cobtel := true; tblEstados.Open; tblCidades.Open; tblEmpresa.Open; SetLength(fieldsTituloBefore, tblTitulos.FieldCount); // tblLayouts.Open; // tblLayouts.First; // // try // lista := TStringList.Create; // while not tblLayouts.Eof do // begin // lista.Clear; // lista.Delimiter := ';'; // layoutHelper := tblLayoutsSTR_CAMPOS.AsString; // lista.DelimitedText := tblLayoutsSTR_CAMPOS.AsString; // while lista.Count <= 32 do // // menor ou igual pq o vazio depois do último ';' conta como uma posição também // begin // layoutHelper := layoutHelper + '0;'; // lista.DelimitedText := layoutHelper; // end; // if layoutHelper <> tblLayoutsSTR_CAMPOS.AsString then // begin // tblLayouts.Edit; // tblLayoutsSTR_CAMPOS.AsString := layoutHelper; // tblLayouts.Post; // end; // tblLayouts.Next; // end; // finally // lista.Free; // end; // tblLayouts.Close; // cdsHist.CreateDataSet; with cdsDescBoleto do begin CreateDataSet; AppendRecord([1, 'NAOTEMDESCONTO', 'Sem Desconto']); AppendRecord([2, 'VALORFIXODATAINFORMADA', 'Valor Fixo até Data Informada']); AppendRecord([3, 'PERCENTUALDATAINFORMADA', 'Percentual Descontado até Data Informada']); end; with cdsMultaBoleto do begin CreateDataSet; AppendRecord([1, 'NAOTEMMULTA', 'Sem Multa']); AppendRecord([2, 'VALORFIXO', 'Vaor Fixo']); AppendRecord([3, 'PERCENTUAL', 'Porcentagem']); end; with cdsMoraBoleto do begin CreateDataSet; AppendRecord([1, 'VALORDIA', 'Valor Por Dia']); AppendRecord([2, 'TAXAMENSAL', 'Taxa Mensal']); AppendRecord([3, 'ISENTO', 'Isento']); end; end; procedure TdtmSystem.dtsCHGEmpresaDataChange(Sender: TObject; Field: TField); begin if id_credor <> tblCHGEmpresaID_EMPRESA.AsInteger then begin id_credor := tblCHGEmpresaID_EMPRESA.AsInteger; if tblIndicadorFinanceiro.Active then begin tblIndicadorFinanceiro.SQL.Clear; tblIndicadorFinanceiro.SQL.Add ('select * from CHG_INDICADORES_FINANCEIROS where ID_CHG_EMPRESA =' + inttostr(id_credor)); tblIndicadorFinanceiro.Open; end; if tblEmpresaRepasse.Active then begin tblEmpresaRepasse.SQL.Clear; tblEmpresaRepasse.SQL.Add ('SELECT * FROM CHG_EMPRESA_REPASSE WHERE ID_EMPRESA =' + inttostr(id_credor) + ' order by ID_ANO, ID_MES'); tblEmpresaRepasse.Open; end; end; end; procedure TdtmSystem.dtsCHGEmpresaUpdateData(Sender: TObject); begin // try // JsonBuilder(tblCHGEmpresa, 'empresa', 'ID_EMPRESA'); // except // // end; end; procedure TdtmSystem.dtsCHGEnderecosUpdateData(Sender: TObject); begin // try // JsonBuilder(tblEnderecos, 'endereco', 'ID_ENDERECO'); // except // // end; end; procedure TdtmSystem.dtsCobCampanhaDataChange(Sender: TObject; Field: TField); begin if id_campanha <> tblCobCampanhaID_CAMPANHA.AsInteger then begin id_campanha := tblCobCampanhaID_CAMPANHA.AsInteger; tx_campanha := tblCobCampanhaTX_NOME.AsString; if tblCampanhaCob.Active then begin tblCampanhaCob.SQL.Clear; tblCampanhaCob.SQL.Add ('select * from CHG_CAMPANHAS_COBRADORES where id_campanha =' + inttostr(id_campanha)); tblCampanhaCob.Open; end; if tblCampanhaDevedores.Active then begin tblCampanhaDevedores.SQL.Clear; tblCampanhaDevedores.SQL.Add ('select * from CHG_CAMPANHAS_DEVEDORES where id_campanha =' + inttostr(id_campanha)); tblCampanhaDevedores.Open; end; end; end; procedure TdtmSystem.dtsDevedoresDataChange(Sender: TObject; Field: TField); begin if id_devedor <> tblDevedoresID_DEVEDOR.AsInteger then begin id_devedor := tblDevedoresID_DEVEDOR.AsInteger; if tblTitulos.Active then begin tblTitulos.SQL.Clear; tblTitulos.SQL.Add('select * from chg_titulos where id_devedor =' + inttostr(id_devedor)); tblTitulos.SQL.Add('order by DT_VENCIMENTO, VL_TITULO'); tblTitulos.Open; end; if tblHistorico.Active then begin tblHistorico.SQL.Clear; tblHistorico.SQL.Add('select * from CHG_HISTORICO where id_devedor =' + inttostr(id_devedor) + ' order by DT_CONTATO DESC'); tblHistorico.Open; end; if tblTelefones.Active then begin tblTelefones.SQL.Clear; tblTelefones.SQL.Add('select * from CHG_TELEFONES where id_devedor =' + inttostr(id_devedor)); tblTelefones.Open; end; if tblEnderecos.Active then begin tblEnderecos.SQL.Clear; tblEnderecos.SQL.Add('select * from CHG_ENDERECOS where id_devedor =' + inttostr(id_devedor)); tblEnderecos.Open; end; // if tblProtocolo.Active then // begin // tblProtocolo.SQL.Clear; // tblProtocolo.SQL.Add // ('select * from CHG_COBRANCA_TITULOS where id_devedor =' + // inttostr(id_devedor)); // tblProtocolo.Open; // end; if tblEmail.Active then begin tblEmail.SQL.Clear; tblEmail.SQL.Add('select * from CHG_EMAILS where id_devedor =' + inttostr(id_devedor)); tblEmail.Open; end; if tblBoletos.Active then begin tblBoletos.SQL.Clear; tblBoletos.SQL.Add('select * from CHG_BOLETOS where id_devedor =' + inttostr(id_devedor)); tblBoletos.Open; end; if not tblDevEmpBoletos.Active then begin tblDevEmpBoletos.SQL.Clear; tblDevEmpBoletos.SQL.Add ('select * from CHG_DEV_EMP_BOLETOS where id_devedor =' + inttostr(id_devedor));; tblDevEmpBoletos.Open; end; end; end; procedure TdtmSystem.dtsDevedoresUpdateData(Sender: TObject); begin // try // JsonBuilder(tblDevedores, 'devedor', 'ID_DEVEDOR'); // except // // end; end; procedure TdtmSystem.dtsEmpresaRepasseDataChange(Sender: TObject; Field: TField); begin if id_repasse <> tblEmpresaRepasseID_ITEM.AsInteger then begin id_repasse := tblEmpresaRepasseID_ITEM.AsInteger; end; if tblRepasseFase.Active then begin tblRepasseFase.SQL.Clear; tblRepasseFase.SQL.Add ('select * from sys_repasses_fases where id_repasse = ' + inttostr(id_repasse)); tblRepasseFase.Open; end; end; procedure TdtmSystem.dtsFaixasUpdateData(Sender: TObject); begin // JsonBuilder(tblFaixas, 'faixa', 'ID_FAIXA'); end; procedure TdtmSystem.dtsGruposDataChange(Sender: TObject; Field: TField); begin if dtmSystem.tblUsuarios.Active then begin dtmSystem.tblUsuarios.First; end; if id_grupoq <> tblGruposID_GRUPO.AsInteger then begin id_grupoq := tblGruposID_GRUPO.AsInteger; if tblUsuarios.Active then begin tblUsuarios.SQL.Clear; tblUsuarios.SQL.Add('select * from SYS_USUARIOS where id_grupo =' + inttostr(id_grupo)); tblUsuarios.Open; end; if tblGruposPermissoes.Active then begin tblGruposPermissoes.SQL.Clear; tblGruposPermissoes.SQL.Add ('select * from SYS_GRUPOS_PERMISSOES where id_grupo =' + inttostr(id_grupo)); tblGruposPermissoes.Open; end; end; end; procedure TdtmSystem.dtsIndicadorFinanceiroUpdateData(Sender: TObject); begin // try // JsonBuilder(tblIndicadorFinanceiro, 'indicadorfinanceiro', 'ID_INDICADOR'); // except // // end; end; procedure TdtmSystem.dtsPoliticasUpdateData(Sender: TObject); begin // try // JsonBuilder(tblPoliticas, 'politica', 'ID_POLITICA'); // except // // end; end; procedure TdtmSystem.dtsRepasseDataChange(Sender: TObject; Field: TField); begin // if id_repasse <> tblRepasseID_REPASSE.AsInteger then // begin // id_repasse := tblRepasseID_REPASSE.AsInteger; // if tblRepasseFase.Active then // begin // tblRepasseFase.SQL.Clear; // tblRepasseFase.SQL.Text := // 'select * from sys_repasses_fases where id_repasse = ' + // inttostr(id_repasse); // tblRepasseFase.Open; // end; // end; end; procedure TdtmSystem.dtsRepasseFaseDataChange(Sender: TObject; Field: TField); begin if id_repasse_fase <> tblRepasseFaseID_FASE.AsInteger then begin id_repasse_fase := tblRepasseFaseID_FASE.AsInteger; end; end; procedure TdtmSystem.dtsTelefonesUpdateData(Sender: TObject); begin // try // JsonBuilder(tblTelefones, 'telefone', 'ID_TELEFONE'); // except // // end; end; procedure TdtmSystem.dtsTitulosDataChange(Sender: TObject; Field: TField); begin if id_tit <> tblTitulosID_TITULO.AsInteger then begin id_tit := tblTitulosID_TITULO.AsInteger; if tblDespesasTitulos.Active then begin tblDespesasTitulos.SQL.Clear; tblDespesasTitulos.SQL.Add ('select * from CHG_DESPESAS_TITULOS where id_titulo =' + inttostr(id_tit)); tblDespesasTitulos.Open; end; if (dtsTitulos.State in [dsBrowse]) and (tblTitulosID_TITULO.AsString <> '') then begin zroQryAcordos.SQL.Clear; zroQryAcordos.SQL.Add('select * from sys_acordos where id_original = ' + tblTitulosID_TITULO.AsString); zroQryAcordosTX_NOME.KeyFields := 'ID_PARCELA'; zroQryAcordosVL_TITULO.KeyFields := 'ID_PARCELA'; zroQryAcordosDT_VENCIMENTO.KeyFields := 'ID_PARCELA'; zroQryAcordos.Open; if zroQryAcordos.RecordCount = 0 then begin zroQryAcordos.SQL.Clear; zroQryAcordos.SQL.Add('select * from sys_acordos where id_parcela = ' + tblTitulosID_TITULO.AsString); zroQryAcordosTX_NOME.KeyFields := 'ID_ORIGINAL'; zroQryAcordosVL_TITULO.KeyFields := 'ID_ORIGINAL'; zroQryAcordosDT_VENCIMENTO.KeyFields := 'ID_ORIGINAL'; zroQryAcordos.Open; end; end else begin zroQryAcordos.Close; end; end; end; procedure TdtmSystem.EscreveLog(acao: string; table: TZQuery); var path: string; begin path := ExtractFilePath(Application.ExeName); path := path + 'log'; if not DirectoryExists(path) then begin CreateDir(path); end; AssignFile(log, path + '\errorLog.txt'); if FileExists(path + '\errorLog.txt') then begin Append(log); Writeln(log, DateTimeToStr(Now)); Writeln(log, ''); Writeln(log, ''); Writeln(log, 'Erro na tabela: ' + table.Name + '. Ação que gerou o erro: ' + acao + '.'); Writeln(log, ''); Writeln(log, ''); end else begin Rewrite(log); Writeln(log, DateTimeToStr(Now)); Writeln(log, ''); Writeln(log, ''); Writeln(log, 'Erro na tabela: ' + table.Name + '. Ação que gerou o erro: ' + acao + '.'); Writeln(log, ''); Writeln(log, ''); end; CloseFile(log); end; function TdtmSystem.FormatTelefone(telefone: string): string; var digito: integer; erro: boolean; begin telefone := StringReplace(telefone, '(', '', [rfReplaceAll, rfIgnoreCase]); telefone := StringReplace(telefone, ')', '', [rfReplaceAll, rfIgnoreCase]); telefone := StringReplace(telefone, '-', '', [rfReplaceAll, rfIgnoreCase]); telefone := StringReplace(telefone, ' ', '', [rfReplaceAll, rfIgnoreCase]); erro := false; if Length(telefone) = 8 then begin digito := strtoint(copy(telefone, 1, 1)); case digito of 2, 3, 4, 5: begin telefone := copy(telefone, 1, 4) + '-' + copy(telefone, 5, 4); end; 6, 7, 8, 9: begin telefone := '9' + copy(telefone, 1, 4) + '-' + copy(telefone, 5, 4); end; 1: begin telefone := telefone; erro := true; end; end; end else begin if strtoint(copy(telefone, 1, 1)) = 9 then begin telefone := copy(telefone, 1, 5) + '-' + copy(telefone, 6, 4); end else begin telefone := telefone; erro := true; end; end; if not erro then begin Result := telefone; end else begin Result := telefone; raise Exception.Create('Número de telefone inválido.'); end; end; function TdtmSystem.gerarProtocolo(id_devedor: string): string; var tamanho, i: integer; cd_devedor, dia, tempo: string; begin tempo := FormatDateTime('hhmm', Time); dia := FormatDateTime('yyyymmdd', Date); cd_devedor := id_devedor; tamanho := Length(id_devedor); for i := 0 to 7 - tamanho do begin cd_devedor := '0' + cd_devedor; end; Result := tempo + dia + cd_devedor; end; function TdtmSystem.GetAppVersionStr: string; // pega a versão do aplicativo var exe: string; Size, Handle: DWORD; Buffer: TBytes; FixedPtr: PVSFixedFileInfo; begin exe := ParamStr(0); Size := GetFileVersionInfoSize(PChar(exe), Handle); if Size = 0 then RaiseLastOSError; SetLength(Buffer, Size); if not GetFileVersionInfo(PChar(exe), Handle, Size, Buffer) then RaiseLastOSError; if not VerQueryValue(Buffer, '\', Pointer(FixedPtr), Size) then RaiseLastOSError; Result := Format('%d.%d.%d.%d', [LongRec(FixedPtr.dwFileVersionMS).Hi, // major LongRec(FixedPtr.dwFileVersionMS).Lo, // minor LongRec(FixedPtr.dwFileVersionLS).Hi, // release LongRec(FixedPtr.dwFileVersionLS).Lo]) // build end; function TdtmSystem.NovoCodigo(Tabela, Campo: String): integer; begin // função criada para simular o auto increment que não existe no firebird with qryConsulta do begin SQL.Text := Format('SELECT MAX(%s) FROM %s', [Campo, Tabela]); Open; Result := FieldByName('MAX').AsInteger + 1; Close; end; end; procedure TdtmSystem.OpenOrRefresh(table: TZQuery); begin if not table.Active then begin table.Open; end else begin table.Refresh; end; end; procedure TdtmSystem.OpenOrRefreshRO(table: TZReadOnlyQuery); begin if not table.Active then begin table.Open; end else begin table.Refresh; end; end; procedure TdtmSystem.OrganizaPorColuna(Tabela: TObject; coluna: TColumn); begin if Tabela is TZTable then begin with (Tabela as TZTable) do begin if coluna.Title.Caption <> '' then begin if Pos(coluna.Field.FieldName, SortedFields) = 1 then begin if SortType = stAscending then begin SortType := stDescending; end else begin SortType := stAscending; end; end else begin SortedFields := coluna.Field.FieldName; if SortType = stAscending then begin SortType := stDescending; end else begin SortType := stAscending; end; end; end; First; end; end; if Tabela is TZQuery then begin with (Tabela as TZQuery) do begin if coluna.Title.Caption <> '' then begin if Pos(coluna.Field.FieldName, SortedFields) = 1 then begin if SortType = stAscending then begin SortType := stDescending; end else begin SortType := stAscending; end; end else begin SortedFields := coluna.Field.FieldName; if SortType = stAscending then begin SortType := stDescending; end else begin SortType := stAscending; end; end; end; First; end; end; if Tabela is TZReadOnlyQuery then begin with (Tabela as TZReadOnlyQuery) do begin if coluna.Title.Caption <> '' then begin if Pos(coluna.Field.FieldName, SortedFields) = 1 then begin if SortType = stAscending then begin SortType := stDescending; end else begin SortType := stAscending; end; end else begin SortedFields := coluna.Field.FieldName; if SortType = stAscending then begin SortType := stDescending; end else begin SortType := stAscending; end; end; end; First; end; end; end; procedure TdtmSystem.MakePermissoes; begin if cd_value <> nil then begin cd_value.Free; end; cd_value := TStringList.Create; if not tblGruposPermissoes.Active then begin tblGruposPermissoes.Open; end else begin tblGruposPermissoes.Refresh; end; if not tblPermissoes.Active then begin tblPermissoes.Open; end else begin tblPermissoes.Refresh; end; tblGruposPermissoes.Filtered := false; tblGruposPermissoes.Filter := 'ID_GRUPO = ' + inttostr(id_grupo); tblGruposPermissoes.Filtered := true; tblGruposPermissoes.First; while not tblGruposPermissoes.Eof do begin tblPermissoes.Locate('ID_PERMISSAO', tblGruposPermissoesID_PERMISSAO.AsInteger, []); cd_value.Values[tblPermissoesCD_PERMISSAO.AsString] := tblGruposPermissoesTP_ACESSO.AsString; tblGruposPermissoes.Next; end; tblGruposPermissoes.Filtered := false; if cd_parent <> nil then begin cd_parent.Free; end; cd_parent := TStringList.Create; tblPermissoes.First; while not tblPermissoes.Eof do begin cd_parent.Values[tblPermissoesCD_PERMISSAO.AsString] := tblPermissoesID_PARENT.AsString; tblPermissoes.Next; end; end; function TdtmSystem.MD5(Texto: String): String; begin with TIdHashMessageDigest5.Create do try Result := HashStringAsHex(Texto); finally Free; end; end; function TdtmSystem.MD5FILE(const fileName: string): String; var // idmd5: TIdHashMessageDigest5; fs: TFileStream; begin fs := TFileStream.Create(fileName, fmOpenRead OR fmShareDenyWrite); with TIdHashMessageDigest5.Create do try Result := HashStreamAsHex(fs); finally fs.Free; Free; end; end; function TdtmSystem.MonthsBetween(dIni, dFim: TDate): integer; var D1, M1, Y1: Word; D2, M2, Y2, DiasNoMes: Word; Temp: TDate; begin if dIni > dFim then begin Temp := dIni; dIni := dFim; dFim := Temp; end; DecodeDate(dIni, Y1, M1, D1); DecodeDate(dFim, Y2, M2, D2); DiasNoMes := MonthDays[IsLeapYear(Y1)][M1]; // qtde de dias no mês if (Y1 = Y2) and (M1 = M2) then // se entrou e saiu no mesmo mês begin if (D2 - D1 + 1) >= DiasNoMes / 2 then // se trabalhou ao menos metade do mês Result := 1 else Result := 0; end else begin if (DiasNoMes - D1 + 1) >= DiasNoMes / 2 then // se entrou metade do mês pra traz Result := 0 else Result := -1; DiasNoMes := MonthDays[IsLeapYear(Y2)][M2]; if D2 >= DiasNoMes / 2 then // se saiu metade do mes pra frente Inc(Result); Result := Result + 12 * (Y2 - Y1) + M2 - M1; end; end; procedure TdtmSystem.tblAcordosBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'SYS_ACORDOS', 'delete'); end; procedure TdtmSystem.tblAcordosBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblAcordosBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblAcordosID_ITEM.AsInteger := NovoCodigo('SYS_ACORDOS', 'ID_ITEM'); end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'SYS_ACORDOS', 'edit'); end else begin RegistarLog(DataSet, 'SYS_ACORDOS', 'post'); end; end else begin LogPost(DataSet, 'SYS_ACORDOS', 'insert'); end; end; procedure TdtmSystem.tblAgendaBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_AGENDA', 'delete'); end; procedure TdtmSystem.tblAgendaBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblAgendaBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblAgendaID_AGENDA.AsInteger := NovoCodigo('CHG_AGENDA', 'ID_AGENDA'); tblAgendaTP_SITUACAO.AsString := 'A'; // A = agendado; end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_AGENDA', 'edit'); end else begin RegistarLog(DataSet, 'CHG_AGENDA', 'post'); end; end else begin LogPost(DataSet, 'CHG_AGENDA', 'insert'); end; end; procedure TdtmSystem.tblBoletosBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_BOLETOS', 'delete'); end; procedure TdtmSystem.tblBoletosBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblBoletosBeforeOpen(DataSet: TDataSet); begin if not tblDevedores.Active then begin tblBoletos.SQL.Clear; tblBoletos.SQL.Add('select * from CHG_BOLETOS'); end else begin tblBoletos.SQL.Clear; tblBoletos.SQL.Add('select * from CHG_BOLETOS where id_devedor =' + inttostr(id_devedor)); end; end; procedure TdtmSystem.tblBoletosBeforePost(DataSet: TDataSet); begin if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_BOLETOS', 'edit'); end else begin RegistarLog(DataSet, 'CHG_BOLETOS', 'post'); end; end else begin LogPost(DataSet, 'CHG_BOLETOS', 'insert', seqBoletos); end; end; procedure TdtmSystem.tblBoletoTitulosBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_BOLETO_TITULOS', 'delete'); end; procedure TdtmSystem.tblBoletoTitulosBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblBoletoTitulosBeforePost(DataSet: TDataSet); begin if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_BOLETO_TITULOS', 'edit'); end else begin RegistarLog(DataSet, 'CHG_BOLETO_TITULOS', 'post'); end; end else begin LogPost(DataSet, 'CHG_BOLETO_TITULOS', 'insert', seqBoletoTitulos); end; end; procedure TdtmSystem.tblCampanhaCobBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_CAMPANHAS_COBRADORES', 'delete'); end; procedure TdtmSystem.tblCampanhaCobBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblCampanhaCobBeforeOpen(DataSet: TDataSet); begin if not tblCobCampanha.Active then begin tblCampanhaCob.SQL.Clear; tblCampanhaCob.SQL.Add('select * from CHG_CAMPANHAS_COBRADORES;'); end else begin tblCampanhaCob.SQL.Clear; tblCampanhaCob.SQL.Add ('select * from CHG_CAMPANHAS_COBRADORES where id_campanha =' + inttostr(id_campanha)); end; end; procedure TdtmSystem.tblCampanhaCobBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblCampanhaCobID_ITEM.AsInteger := NovoCodigo('CHG_CAMPANHAS_COBRADORES', 'ID_ITEM'); end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_CAMPANHAS_COBRADORES', 'edit'); end else begin RegistarLog(DataSet, 'CHG_CAMPANHAS_COBRADORES', 'post'); end; end else begin LogPost(DataSet, 'CHG_CAMPANHAS_COBRADORES', 'insert'); end; end; procedure TdtmSystem.tblCampanhaDevedoresBeforeDelete(DataSet: TDataSet); begin // LogDelete(DataSet, 'CHG_CAMPANHAS_DEVEDORES', 'delete'); end; procedure TdtmSystem.tblCampanhaDevedoresBeforeEdit(DataSet: TDataSet); begin // SetLength(fields_before, DataSet.FieldCount); // for i := 0 to DataSet.FieldCount - 1 do // begin // fields_before[i] := DataSet.fields[i].AsString; // end; end; procedure TdtmSystem.tblCampanhaDevedoresBeforeOpen(DataSet: TDataSet); begin if not tblCobCampanha.Active then begin tblCampanhaDevedores.SQL.Clear; tblCampanhaDevedores.SQL.Add('select * from CHG_CAMPANHAS_DEVEDORES;'); end else begin tblCampanhaDevedores.SQL.Clear; tblCampanhaDevedores.SQL.Add ('select * from CHG_CAMPANHAS_DEVEDORES where id_campanha =' + inttostr(id_campanha)); end; end; procedure TdtmSystem.tblCampanhaDevedoresBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblCampanhaDevedoresID_ITEM.AsInteger := NovoCodigo('CHG_CAMPANHAS_DEVEDORES', 'ID_ITEM'); end; tblCampanhaDevedoresID_ULTIMO_USUARIO.AsInteger := id_usuario; tblCampanhaDevedoresDT_HORA_ULTIMA_ATT.AsDateTime := Now; // if DataSet.State <> dsInsert then // begin // if CheckDiffFields(DataSet, fields_before) then // begin // LogDiffFields(DataSet, fields_before, 'CHG_CAMPANHAS_DEVEDORES', 'edit'); // end // else // begin // RegistarLog(DataSet, 'CHG_CAMPANHAS_DEVEDORES', 'post'); // end; // end // else // begin // LogPost(DataSet, 'CHG_CAMPANHAS_DEVEDORES', 'insert'); // end; end; procedure TdtmSystem.tblCHGEmpresaAfterDelete(DataSet: TDataSet); begin tblPoliticas.Refresh; tblFaixas.Refresh; end; procedure TdtmSystem.tblCHGEmpresaAfterOpen(DataSet: TDataSet); begin id_credor := tblCHGEmpresaID_EMPRESA.AsInteger; end; procedure TdtmSystem.tblCHGEmpresaBeforeDelete(DataSet: TDataSet); begin if (tblCHGEmpresaID_EMPRESA.AsInteger = 1) or (tblCHGEmpresaID_EMPRESA.AsInteger = 265) then begin MessageDlg('Esta empresa é utilizada pelo sistema e não pode ser apagada.', mtWarning, [mbOK], 0); Abort; end; LogDelete(DataSet, 'CHG_EMPRESAS', 'delete'); end; procedure TdtmSystem.tblCHGEmpresaBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblCHGEmpresaBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblCHGEmpresaID_EMPRESA.AsInteger := NovoCodigo('CHG_EMPRESAS', 'ID_EMPRESA'); qryConsulta.SQL.Clear; qryConsulta.SQL.Text := 'select tx_nome from chg_empresas where lower(tx_nome) = ' + QuotedStr(LowerCase(tblCHGEmpresaTX_NOME.AsString)); qryConsulta.Open; if qryConsulta.RecordCount <> 0 then begin MessageDlg('Já existe uma empresa com esta Razão Social.', mtWarning, [mbOK], 0); tblCHGEmpresaTX_NOME.AsString := ''; Abort; end; end; tblCHGEmpresaID_ULTIMO_USUARIO.AsInteger := id_usuario; tblCHGEmpresaDT_HORA_ULTIMA_ATT.AsDateTime := Now; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_EMPRESAS', 'edit'); end else begin RegistarLog(DataSet, 'CHG_EMPRESAS', 'post'); end; end else begin LogPost(DataSet, 'CHG_EMPRESAS', 'insert'); end; end; procedure TdtmSystem.tblCidadesAfterInsert(DataSet: TDataSet); begin tblCidadesID_ESTADO.AsInteger := tblEstadosID_ESTADO.AsInteger; end; procedure TdtmSystem.tblCidadesAfterOpen(DataSet: TDataSet); begin // tblCidades.DisableControls; end; procedure TdtmSystem.tblCobCampanhaAfterOpen(DataSet: TDataSet); begin id_campanha := tblCobCampanhaID_CAMPANHA.AsInteger; tx_campanha := tblCobCampanhaTX_NOME.AsString; end; procedure TdtmSystem.tblCobCampanhaBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_CAMPANHAS', 'delete'); end; procedure TdtmSystem.tblCobCampanhaBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblCobCampanhaBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblCobCampanhaID_CAMPANHA.AsInteger := NovoCodigo('CHG_CAMPANHAS', 'ID_CAMPANHA'); end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_CAMPANHAS', 'edit'); end else begin RegistarLog(DataSet, 'CHG_CAMPANHAS', 'post'); end; end else begin LogPost(DataSet, 'CHG_CAMPANHAS', 'insert'); end; end; procedure TdtmSystem.tblConteudoReciboBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblConteudoReciboID_CONTEUDO.AsInteger := NovoCodigo('SYS_CONTEUDO_RECIBO', 'ID_CONTEUDO'); end; end; procedure TdtmSystem.tblDepartamentosBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_DEPARTAMENTOS', 'delete'); end; procedure TdtmSystem.tblDepartamentosBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblDepartamentosBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblDepartamentosID_DEPARTAMENTOS.AsInteger := NovoCodigo('CHG_DEPARTAMENTOS', 'ID_DEPARTAMENTOS'); end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_DEPARTAMENTOS', 'edit'); end else begin RegistarLog(DataSet, 'CHG_DEPARTAMENTOS', 'post'); end; end else begin LogPost(DataSet, 'CHG_DEPARTAMENTOS', 'insert'); end; end; procedure TdtmSystem.tblDespesasTitulosBeforeOpen(DataSet: TDataSet); begin if not tblDevedores.Active then begin tblDespesasTitulos.SQL.Clear; tblDespesasTitulos.SQL.Add('select * from CHG_DESPESAS_TITULOS;'); end else begin tblDespesasTitulos.SQL.Clear; tblDespesasTitulos.SQL.Add ('select * from CHG_DESPESAS_TITULOS where id_titulo =' + inttostr(id_tit)); end; end; procedure TdtmSystem.tblDespesasTitulosBeforePost(DataSet: TDataSet); begin if tblDespesasTitulosTX_DESCRICAO.AsString = '' then begin MessageDlg('Por favor insira uma descrição para a despesa.', mtWarning, [mbOK], 0); Abort; end; if tblDespesasTitulosVL_DESPESA.AsString = '' then begin MessageDlg('Por favor insira um valor para a despesa.', mtWarning, [mbOK], 0); Abort; end; if tblDespesasTitulosTP_DESPESA.AsString = '' then begin MessageDlg('Por favor escolha o tipo da despesa.', mtWarning, [mbOK], 0); Abort; end; if DataSet.State = dsInsert then begin tblDespesasTitulosID_DESPESA.AsInteger := NovoCodigo('CHG_DESPESAS_TITULOS', 'ID_DESPESA'); tblDespesasTitulosID_TITULO.AsInteger := tblTitulosID_TITULO.AsInteger; end; end; procedure TdtmSystem.tblDevedoresAfterOpen(DataSet: TDataSet); begin id_devedor := tblDevedoresID_DEVEDOR.AsInteger; // tblTitulos.ParamByName('pIdDevedor').AsInteger := id_devedor; end; procedure TdtmSystem.tblDevedoresBeforeDelete(DataSet: TDataSet); begin // RegistarLog(DataSet, 'CHG_DEVEDORES', 'delete'); LogDelete(DataSet, 'CHG_DEVEDORES', 'delete'); ZSQLProcessor1.Script.Text := 'delete from chg_agenda where id_devedor = ' + tblDevedoresID_DEVEDOR.AsString; end; procedure TdtmSystem.tblDevedoresBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblDevedoresBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin // tblDevedoresID_DEVEDOR.AsInteger := NovoCodigo('CHG_DEVEDORES', // 'ID_DEVEDOR'); tblDevedoresID_ULTIMO_USUARIO.AsInteger := id_usuario; tblDevedoresDT_HORA_ULTIMA_ATT.AsDateTime := Now; end; if DataSet.State = dsEdit then begin tblDevedoresID_ULTIMO_USUARIO.AsInteger := id_usuario; tblDevedoresDT_HORA_ULTIMA_ATT.AsDateTime := Now; end; if tblDevedoresTP_CLIENTE.AsString = '' then begin MessageDlg('Por favor escolha o tipo de devedor.', mtWarning, [mbOK], 0); Abort; end; if tblDevedoresCD_CPF.AsString <> '' then begin if Length(tblDevedoresCD_CPF.AsString) < 14 then begin MessageDlg('Por favor insira o CPF com pontos e traços.', mtWarning, [mbOK], 0); Abort; end; qryConsulta.SQL.Clear; qryConsulta.SQL.Text := 'select CD_CPF from chg_devedores where CD_CPF = ' + QuotedStr(LowerCase(tblDevedoresCD_CPF.AsString)); qryConsulta.Open; if (qryConsulta.RecordCount <> 0) and not(dtsDevedores.State in [dsEdit]) then begin MessageDlg('Já existe um Devedor com este CPF.', mtWarning, [mbOK], 0); tblDevedoresTX_NOME.AsString := ''; Abort; end; end; if tblDevedoresCD_CNPJ.AsString <> '' then begin if Length(tblDevedoresCD_CNPJ.AsString) < 18 then begin MessageDlg('Por favor insira o CNPJ com pontos, barras e traços.', mtWarning, [mbOK], 0); Abort; end; qryConsulta.SQL.Clear; qryConsulta.SQL.Text := 'select CD_CNPJ from chg_devedores where CD_CNPJ = ' + QuotedStr(LowerCase(tblDevedoresCD_CNPJ.AsString)); qryConsulta.Open; if (qryConsulta.RecordCount <> 0) and not(dtsDevedores.State in [dsEdit]) then begin MessageDlg('Já existe um Devedor com este CNPJ.', mtWarning, [mbOK], 0); tblDevedoresTX_NOME.AsString := ''; Abort; end; end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_DEVEDORES', 'edit'); end else begin RegistarLog(DataSet, 'CHG_DEVEDORES', 'post'); end; end else begin LogPost(DataSet, 'CHG_DEVEDORES', 'insert', seqDevedores); end; end; procedure TdtmSystem.tblDevedoresCalcFields(DataSet: TDataSet); begin if tblDevedoresTP_CLIENTE.AsString = 'F' then begin tblDevedoresCD_DOCUMENTO.AsString := tblDevedoresCD_CPF.AsString; end else begin tblDevedoresCD_DOCUMENTO.AsString := tblDevedoresCD_CNPJ.AsString; end; end; procedure TdtmSystem.tblDevEmpBoletosBeforeOpen(DataSet: TDataSet); begin if not tblDevedores.Active then begin tblDevEmpBoletos.SQL.Clear; tblDevEmpBoletos.SQL.Add('select * from CHG_DEV_EMP_BOLETOS'); end else begin tblDevEmpBoletos.SQL.Clear; tblDevEmpBoletos.SQL.Add ('select * from CHG_DEV_EMP_BOLETOS where id_devedor =' + inttostr(id_devedor)); end; end; procedure TdtmSystem.tblDuplicadosBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblDuplicadosID_DUPLICADO.AsInteger := NovoCodigo('SYS_DUPLICADOS', 'ID_DUPLICADO'); end; end; procedure TdtmSystem.tblEmailBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_EMAILS', 'delete'); end; procedure TdtmSystem.tblEmailBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblEmailBeforeOpen(DataSet: TDataSet); begin if not tblDevedores.Active then begin tblEmail.SQL.Clear; tblEmail.SQL.Add('select * from CHG_EMAILS'); end else begin tblEmail.SQL.Clear; tblEmail.SQL.Add('select * from CHG_EMAILS where id_devedor = ' + inttostr(id_devedor)); end; end; procedure TdtmSystem.tblEmailBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblEmailID_EMAIL.AsInteger := NovoCodigo('CHG_EMAILS', 'ID_EMAIL'); tblEmailID_DEVEDOR.AsInteger := tblDevedoresID_DEVEDOR.AsInteger; tblEmailID_ULTIMO_USUARIO.AsInteger := id_usuario; tblEmailDT_HORA_ULTIMA_ATT.AsDateTime := Now; end; if DataSet.State = dsEdit then begin tblEmailID_ULTIMO_USUARIO.AsInteger := id_usuario; tblEmailDT_HORA_ULTIMA_ATT.AsDateTime := Now; end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_EMAILS', 'edit'); end else begin RegistarLog(DataSet, 'CHG_EMAILS', 'post'); end; end else begin LogPost(DataSet, 'CHG_EMAILS', 'insert'); end; end; procedure TdtmSystem.tblEmpresaBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'SYS_EMPRESA', 'delete'); end; procedure TdtmSystem.tblEmpresaBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblEmpresaBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblEmpresaID_EMPRESA.AsInteger := NovoCodigo('SYS_EMPRESA', 'ID_EMPRESA'); end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'SYS_EMPRESA', 'edit'); end else begin RegistarLog(DataSet, 'SYS_EMPRESA', 'post'); end; end else begin LogPost(DataSet, 'SYS_EMPRESA', 'insert'); end; end; procedure TdtmSystem.tblEmpresaRepasseAfterOpen(DataSet: TDataSet); begin id_repasse := tblEmpresaRepasseID_ITEM.AsInteger; end; procedure TdtmSystem.tblEmpresaRepasseAfterPost(DataSet: TDataSet); begin tblEmpresaRepasse.Refresh; end; procedure TdtmSystem.tblEmpresaRepasseBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_EMPRESA_REPASSE', 'delete'); end; procedure TdtmSystem.tblEmpresaRepasseBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblEmpresaRepasseBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblEmpresaRepasseID_ITEM.AsInteger := NovoCodigo('CHG_EMPRESA_REPASSE', 'ID_ITEM'); tblEmpresaRepasseID_EMPRESA.AsInteger := id_credor; end; // if tblProvidenciasTP_FORCAAGENDA.AsString = '' then // begin // tblProvidencias.Cancel; // end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_EMPRESA_REPASSE', 'edit'); end else begin RegistarLog(DataSet, 'CHG_EMPRESA_REPASSE', 'post'); end; end else begin LogPost(DataSet, 'CHG_EMPRESA_REPASSE', 'insert'); end; end; procedure TdtmSystem.tblEnderecosBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_ENDERECOS', 'delete'); end; procedure TdtmSystem.tblEnderecosBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblEnderecosBeforeOpen(DataSet: TDataSet); begin if not tblDevedores.Active then begin tblEnderecos.SQL.Clear; tblEnderecos.SQL.Add('select * from CHG_ENDERECOS;'); end else begin tblEnderecos.SQL.Clear; tblEnderecos.SQL.Add('select * from CHG_ENDERECOS where id_devedor =' + inttostr(id_devedor)); end; end; procedure TdtmSystem.tblEnderecosBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin // tblEnderecosID_ENDERECO.AsInteger := NovoCodigo('CHG_ENDERECOS', // 'ID_ENDERECO'); tblEnderecosID_DEVEDOR.AsInteger := tblDevedoresID_DEVEDOR.AsInteger; tblEnderecosID_ULTIMO_USUARIO.AsInteger := id_usuario; tblEnderecosDT_HORA_ULTIMA_ATT.AsDateTime := Now; end; if DataSet.State = dsEdit then begin tblEnderecosID_ULTIMO_USUARIO.AsInteger := id_usuario; tblEnderecosDT_HORA_ULTIMA_ATT.AsDateTime := Now; end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_ENDERECOS', 'edit'); end else begin RegistarLog(DataSet, 'CHG_ENDERECOS', 'post'); end; end else begin LogPost(DataSet, 'CHG_ENDERECOS', 'insert', seqEnderecos); end; end; procedure TdtmSystem.tblEnderecosCalcFields(DataSet: TDataSet); begin tblEnderecosTX_ENDERECO_COMPLETO.AsString := Format('%s, %s, %s, %s, %s/%s', [tblEnderecosTX_LOGRADOURO.AsString, tblEnderecosNR_NUMERO.AsString, tblEnderecosTX_COMPLEMENTO.AsString, tblEnderecosTX_BAIRRO.AsString, tblEnderecosTX_CIDADE.AsString, tblEnderecosTX_UF.AsString]); end; procedure TdtmSystem.tblEstadosAfterOpen(DataSet: TDataSet); begin // tblEstados.DisableControls; end; procedure TdtmSystem.tblFaixasAfterInsert(DataSet: TDataSet); begin tblFaixasID_POLITICA.AsInteger := tblPoliticasID_POLITICA.AsInteger; end; procedure TdtmSystem.tblFaixasBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_FAIXAS', 'delete'); end; procedure TdtmSystem.tblFaixasBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblFaixasBeforePost(DataSet: TDataSet); // var // inicio, fim: integer; begin if DataSet.State = dsInsert then begin tblFaixasID_FAIXA.AsInteger := NovoCodigo('CHG_FAIXAS', 'ID_FAIXA'); end; tblFaixasID_ULTIMO_USUARIO.AsInteger := id_usuario; tblFaixasDT_HORA_ULTIMA_ATT.AsDateTime := Now; if tblFaixasTP_FAIXA.AsString = 'D' then begin tblFaixasATRASO_MIN.Clear; tblFaixasATRASO_MAX.Clear; end; if tblFaixasTP_FAIXA.AsString = 'A' then begin tblFaixasDT_MIN.Clear; tblFaixasDT_MAX.Clear; end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_FAIXAS', 'edit'); end else begin RegistarLog(DataSet, 'CHG_FAIXAS', 'post'); end; end else begin LogPost(DataSet, 'CHG_FAIXAS', 'insert'); end; end; procedure TdtmSystem.tblFiltrosBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_FILTRO', 'delete'); end; procedure TdtmSystem.tblFiltrosBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblFiltrosBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblFiltrosID_FILTRO.AsInteger := NovoCodigo('CHG_FILTRO', 'ID_FILTRO'); end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_FILTRO', 'edit'); end else begin RegistarLog(DataSet, 'CHG_FILTRO', 'post'); end; end else begin LogPost(DataSet, 'CHG_FILTRO', 'insert'); end; end; procedure TdtmSystem.tblGrupoBoletoEmpresasBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_GRUPO_BOLETO_EMPRESAS', 'delete'); end; procedure TdtmSystem.tblGrupoBoletoEmpresasBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblGrupoBoletoEmpresasBeforeOpen(DataSet: TDataSet); begin // if not tblGrupoBoletos.Active then // begin // tblGrupoBoletoEmpresas.SQL.Clear; // tblGrupoBoletoEmpresas.SQL.Add('select * from chg_grupo_boleto_empresas;'); // end // else // begin // tblGrupoBoletoEmpresas.SQL.Clear; // tblGrupoBoletoEmpresas.SQL.Add('select * from chg_grupo_boleto_empresas where ID_GRUPO_BOLETO =' + // tblGrupoBoletosID_GRUPO.AsString); // end; end; procedure TdtmSystem.tblGrupoBoletoEmpresasBeforePost(DataSet: TDataSet); begin if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_GRUPO_BOLETO_EMPRESAS', 'edit'); end else begin RegistarLog(DataSet, 'CHG_GRUPO_BOLETO_EMPRESAS', 'post'); end; end else begin LogPost(DataSet, 'CHG_GRUPO_BOLETO_EMPRESAS', 'insert'); end; end; procedure TdtmSystem.tblGrupoBoletosBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_GRUPO_BOLETOS', 'delete'); end; procedure TdtmSystem.tblGrupoBoletosBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblGrupoBoletosBeforePost(DataSet: TDataSet); begin if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_GRUPO_BOLETOS', 'edit'); end else begin RegistarLog(DataSet, 'CHG_GRUPO_BOLETOS', 'post'); end; end else begin LogPost(DataSet, 'CHG_GRUPO_BOLETOS', 'insert'); end; end; procedure TdtmSystem.tblGruposAfterInsert(DataSet: TDataSet); begin tblGruposTP_SU.AsString := 'N'; end; procedure TdtmSystem.tblGruposAfterOpen(DataSet: TDataSet); begin id_grupoq := tblGruposID_GRUPO.AsInteger; end; procedure TdtmSystem.tblGruposBeforeDelete(DataSet: TDataSet); begin if not tblUsuarios.IsEmpty then begin MessageDlg('Não é possível remover um grupo que contenha usuários.', mtWarning, [mbOK], 0); Abort; end else begin LogDelete(DataSet, 'SYS_GRUPOS', 'delete'); while tblGruposPermissoes.RecordCount > 0 do begin tblGruposPermissoes.Delete; end; end; end; procedure TdtmSystem.tblGruposBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblGruposBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblGruposID_GRUPO.AsInteger := NovoCodigo('SYS_GRUPOS', 'ID_GRUPO'); end; qryConsulta.SQL.Text := 'Select * from SYS_GRUPOS WHERE TX_NOME = ' + QuotedStr(tblGruposTX_NOME.AsString); qryConsulta.Open; if qryConsulta.RecordCount <> 0 then begin tblGrupos.Cancel; MessageDlg('Já existe um grupo com esse nome.', mtWarning, [mbOK], 0); Abort; end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'SYS_GRUPOS', 'edit'); end else begin RegistarLog(DataSet, 'SYS_GRUPOS', 'post'); end; end else begin LogPost(DataSet, 'SYS_GRUPOS', 'insert'); end; end; procedure TdtmSystem.tblGruposPermissoesAfterInsert(DataSet: TDataSet); begin tblGruposPermissoesID_GRUPO.AsInteger := tblGruposID_GRUPO.AsInteger; tblGruposPermissoesID_PERMISSAO.AsInteger := tblPermDisponiveisID_PERMISSAO.AsInteger; end; procedure TdtmSystem.tblGruposPermissoesAfterPost(DataSet: TDataSet); begin tblPermDisponiveis.Refresh; end; procedure TdtmSystem.tblGruposPermissoesBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'SYS_GRUPOS_PERMISSOES', 'delete'); end; procedure TdtmSystem.tblGruposPermissoesBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblGruposPermissoesBeforeOpen(DataSet: TDataSet); begin if not tblGrupos.Active then begin tblGruposPermissoes.SQL.Clear; tblGruposPermissoes.SQL.Add('select * from SYS_GRUPOS_PERMISSOES;'); end else begin tblGruposPermissoes.SQL.Clear; tblGruposPermissoes.SQL.Add ('select * from SYS_GRUPOS_PERMISSOES where id_grupo =' + inttostr(id_grupoq)); end; end; procedure TdtmSystem.tblGruposPermissoesBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblGruposPermissoesID_ITEM.AsInteger := NovoCodigo('SYS_GRUPOS_PERMISSOES', 'ID_ITEM'); end; end; procedure TdtmSystem.tblHistoricoAfterPost(DataSet: TDataSet); begin zroqryContatos.Refresh; end; procedure TdtmSystem.tblHistoricoBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_HISTORICO', 'delete'); end; procedure TdtmSystem.tblHistoricoBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblHistoricoBeforeOpen(DataSet: TDataSet); begin if not tblProvidencias.Active then begin tblProvidencias.Open; end; if not tblDevedores.Active then begin tblHistorico.SQL.Clear; tblHistorico.SQL.Add ('select * from CHG_HISTORICO order by DT_CONTATO DESC;'); end else begin tblHistorico.SQL.Clear; tblHistorico.SQL.Add('select * from CHG_HISTORICO where id_devedor =' + inttostr(id_devedor) + ' order by DT_CONTATO DESC'); end; end; procedure TdtmSystem.tblHistoricoBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin // tblHistoricoID_HISTORICO.AsInteger := NovoCodigo('CHG_HISTORICO', // 'ID_HISTORICO'); tblHistoricoID_COBRADOR.AsInteger := id_usuario; tblHistoricoID_ULTIMO_USUARIO.AsInteger := id_usuario; tblHistoricoDT_HORA_ULTIMA_ATT.AsDateTime := Now; // if tblHistoricoCD_PROTOCOLO.AsString = '' then // begin // tblHistoricoCD_PROTOCOLO.AsString := // gerarProtocolo(tblHistoricoID_DEVEDOR.AsString); // end; end; if DataSet.State = dsEdit then begin tblHistoricoID_ULTIMO_USUARIO.AsInteger := id_usuario; tblHistoricoDT_HORA_ULTIMA_ATT.AsDateTime := Now; end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_HISTORICO', 'edit'); end else begin RegistarLog(DataSet, 'CHG_HISTORICO', 'post'); end; end else begin LogPost(DataSet, 'CHG_HISTORICO', 'insert', seqHistoricos); end; end; procedure TdtmSystem.tblHistoricoPostError(DataSet: TDataSet; E: EDatabaseError; var action: TDataAction); begin if Pos(E.Message, 'PRYMARY OR UNIQUE') > 0 then begin DataSet.Post; end; try seqHistoricos.GetNextValue; DataSet.Post; finally end; end; procedure TdtmSystem.tblInadimplenciasBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblInadimplenciasID_INADIMPLENCIA.AsInteger := NovoCodigo('CHG_INADIMPLENCIAS', 'ID_INADIMPLENCIA'); end; end; procedure TdtmSystem.tblInadimplenciasDeleteError(DataSet: TDataSet; E: EDatabaseError; var action: TDataAction); begin // EscreveLog('deletar', tblInadimplencias); end; procedure TdtmSystem.tblInadimplenciasEditError(DataSet: TDataSet; E: EDatabaseError; var action: TDataAction); begin // EscreveLog('editar', tblInadimplencias); end; procedure TdtmSystem.tblInadimplenciasPostError(DataSet: TDataSet; E: EDatabaseError; var action: TDataAction); begin // EscreveLog('postar', tblInadimplencias); end; procedure TdtmSystem.tblIndicadorFinanceiroBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_INDICADORES_FINANCEIROS', 'delete'); end; procedure TdtmSystem.tblIndicadorFinanceiroBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblIndicadorFinanceiroBeforeOpen(DataSet: TDataSet); begin if not tblCHGEmpresa.Active then begin tblIndicadorFinanceiro.SQL.Clear; tblIndicadorFinanceiro.SQL.Add ('select * from CHG_INDICADORES_FINANCEIROS;'); end else begin tblIndicadorFinanceiro.SQL.Clear; tblIndicadorFinanceiro.SQL.Add ('select * from CHG_INDICADORES_FINANCEIROS where ID_CHG_EMPRESA =' + inttostr(id_credor)); end; end; procedure TdtmSystem.tblIndicadorFinanceiroBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblIndicadorFinanceiroID_INDICADOR.AsInteger := NovoCodigo('CHG_INDICADORES_FINANCEIROS', 'ID_INDICADOR'); tblIndicadorFinanceiroID_CHG_EMPRESA.AsInteger := tblCHGEmpresaID_EMPRESA.AsInteger; end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_INDICADORES_FINANCEIROS', 'edit'); end else begin RegistarLog(DataSet, 'CHG_INDICADORES_FINANCEIROS', 'post'); end; end else begin LogPost(DataSet, 'CHG_INDICADORES_FINANCEIROS', 'insert'); end; end; procedure TdtmSystem.tblIndicesAfterPost(DataSet: TDataSet); begin if Assigned(frmAtendimento) then begin with frmAtendimento do begin clb_indices.Clear; tblIndices.First; while not tblIndices.Eof do begin clb_indices.Items.Add(tblIndicesTX_NOME.AsString); tblIndices.Next; end; end; end; // RegistarLog(DataSet); end; procedure TdtmSystem.tblIndicesBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'SYS_INDICES', 'delete'); end; procedure TdtmSystem.tblIndicesBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblIndicesBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblIndicesID_INDICE.AsInteger := NovoCodigo('SYS_INDICES', 'ID_INDICE'); end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'SYS_INDICES', 'edit'); end else begin RegistarLog(DataSet, 'SYS_INDICES', 'post'); end; end else begin LogPost(DataSet, 'SYS_INDICES', 'insert'); end; end; procedure TdtmSystem.tblLayoutsBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'SYS_LAYOUTS', 'delete'); end; procedure TdtmSystem.tblLayoutsBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblLayoutsBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblLayoutsID_LAYOUT.AsInteger := NovoCodigo('SYS_LAYOUTS', 'ID_LAYOUT'); end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'SYS_LAYOUTS', 'edit'); end else begin RegistarLog(DataSet, 'SYS_LAYOUTS', 'post'); end; end else begin LogPost(DataSet, 'SYS_LAYOUTS', 'insert'); end; end; procedure TdtmSystem.tblLogBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin // tblLogID_LOG.AsInteger := NovoCodigo('SYS_LOG', 'ID_LOG'); tblLogID_USUARIO.AsInteger := id_usuario; tblLogDT_LOG.AsDateTime := Now; end; end; procedure TdtmSystem.tblLogCampanhasBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblLogCampanhasID_ITEM.AsInteger := NovoCodigo('SYS_CAMPANHAS_OLD', 'ID_ITEM'); end; end; procedure TdtmSystem.tblLoginsBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblLoginsID_LOGIN.AsInteger := NovoCodigo('SYS_LOGINS', 'ID_LOGIN'); end; end; procedure TdtmSystem.tblLogPostError(DataSet: TDataSet; E: EDatabaseError; var action: TDataAction); begin if Pos(E.Message, 'PRYMARY OR UNIQUE') > 0 then begin if DataSet.State = dsInsert then begin tblLogID_LOG.AsInteger := tblLogID_LOG.AsInteger + 1; tblLogID_USUARIO.AsInteger := id_usuario; end; DataSet.Post; end; end; procedure TdtmSystem.tblLogEditError(DataSet: TDataSet; E: EDatabaseError; var action: TDataAction); begin if Pos(E.Message, 'PRYMARY OR UNIQUE') > 0 then begin DataSet.Post; end; end; procedure TdtmSystem.tblPermissoesBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'SYS_PERMISSOES', 'delete'); end; procedure TdtmSystem.tblPermissoesBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblPermissoesBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblPermissoesID_PERMISSAO.AsInteger := NovoCodigo('SYS_PERMISSOES', 'ID_PERMISSAO'); end; end; procedure TdtmSystem.tblPoliticasAfterInsert(DataSet: TDataSet); begin // tblPoliticasTP_PARCELA.AsString := '2'; // tblPoliticasTP_JUROS.AsString := 'S'; // tblPoliticasDT_INICIO.AsDateTime := Date; // tblPoliticasNR_PARCELA_MAXIMO.AsInteger := 1; end; procedure TdtmSystem.tblPoliticasAfterPost(DataSet: TDataSet); begin { with ROQueryFaixa.SQL do begin Clear; Add('select * from chg_faixas where id_politica in ('); Add('select id_politica from chg_politicas where id_empresa = ' + tblCHGEmpresaID_EMPRESA.AsString + ')'); end; ROQueryFaixa.Open; if ROQueryFaixa.IsEmpty = true then begin tblFaixas.Append; tblFaixasID_POLITICA.AsInteger := tblPoliticasID_POLITICA.AsInteger; tblFaixasTX_DESCRICAO.AsString := 'Títulos a vencer'; tblFaixasDT_INICIO.AsInteger := -9999; tblFaixasDT_FINAL.AsInteger := 0; tblFaixas.Post; end; } // RegistarLog(DataSet); end; procedure TdtmSystem.tblPoliticasBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_POLITICAS', 'delete'); end; procedure TdtmSystem.tblPoliticasBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblPoliticasBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblPoliticasID_POLITICA.AsInteger := NovoCodigo('CHG_POLITICAS', 'ID_POLITICA'); with ROquerypesquisas do begin SQL.Clear; SQL.Text := 'select * from chg_politicas where id_empresa = ' + tblCHGEmpresaID_EMPRESA.AsString + ' and lower(tx_descricao) = ' + QuotedStr(LowerCase(tblPoliticasTX_DESCRICAO.AsString)) + ''; end; ROquerypesquisas.Open; if ROquerypesquisas.RecordCount <> 0 then begin MessageDlg('Já existe uma política com esse nome.', mtWarning, [mbOK], 0); tblPoliticasTX_DESCRICAO.AsString := ''; Abort; end; end; if DataSet.State = dsEdit then begin qryConsulta.SQL.Clear; qryConsulta.SQL.Add ('select * from chg_politicas where lower(tx_descricao) not in (select lower(tx_descricao) from chg_politicas where lower(tx_descricao) = ' + QuotedStr(LowerCase(tblPoliticasTX_DESCRICAO.AsString)) + ') and id_empresa = ' + tblCHGEmpresaID_EMPRESA.AsString + ''); qryConsulta.Open; qryConsulta.First; while not qryConsulta.Eof do begin if LowerCase(qryConsulta.FieldByName('TX_DESCRICAO').AsString) = LowerCase(tblPoliticasTX_DESCRICAO.AsString) then begin MessageDlg('Já existe uma política com esse nome.', mtWarning, [mbOK], 0); tblPoliticasTX_DESCRICAO.AsString := ''; Abort; end; qryConsulta.Next; end; end; tblPoliticasID_ULTIMO_USUARIO.AsInteger := id_usuario; tblPoliticasDT_HORA_ULTIMA_ATT.AsDateTime := Now; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_POLITICAS', 'edit'); end else begin RegistarLog(DataSet, 'CHG_POLITICAS', 'post'); end; end else begin LogPost(DataSet, 'CHG_POLITICAS', 'insert'); end; end; procedure TdtmSystem.tblPrCartaoAfterInsert(DataSet: TDataSet); begin tblPrCartaoID_ITEM.AsInteger := NovoCodigo('SYS_PORCENTAGENS_CARTOES', 'ID_ITEM'); end; procedure TdtmSystem.tblProtocoloBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_COBRANCA_TITULOS', 'delete'); end; procedure TdtmSystem.tblProtocoloBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblProtocoloBeforeOpen(DataSet: TDataSet); begin if not tblDevedores.Active then begin tblProtocolo.SQL.Clear; tblProtocolo.SQL.Add('select * from CHG_COBRANCA_TITULOS;'); end else begin tblProtocolo.SQL.Clear; tblProtocolo.SQL.Add('select * from CHG_COBRANCA_TITULOS where id_devedor =' + inttostr(id_devedor)); end; end; procedure TdtmSystem.tblProtocoloBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblProtocoloID_PROTOCOLO.AsInteger := NovoCodigo('CHG_COBRANCA_TITULOS', 'ID_PROTOCOLO'); end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_COBRANCA_TITULOS', 'edit'); end else begin RegistarLog(DataSet, 'CHG_COBRANCA_TITULOS', 'post'); end; end else begin LogPost(DataSet, 'CHG_COBRANCA_TITULOS', 'insert'); end; end; procedure TdtmSystem.tblProvidenciasBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_PROVIDENCIAS', 'delete'); end; procedure TdtmSystem.tblProvidenciasBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblProvidenciasBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblProvidenciasID_PROVIDENCIA.AsInteger := NovoCodigo('CHG_PROVIDENCIAS', 'ID_PROVIDENCIA'); end; if tblProvidenciasTP_FORCAAGENDA.AsString = '' then begin tblProvidencias.Cancel; end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_PROVIDENCIAS', 'edit'); end else begin RegistarLog(DataSet, 'CHG_PROVIDENCIAS', 'post'); end; end else begin LogPost(DataSet, 'CHG_PROVIDENCIAS', 'insert'); end; end; procedure TdtmSystem.tblReciboBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'SYS_RECIBOS', 'delete'); end; procedure TdtmSystem.tblReciboBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblReciboBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin // tblReciboID_RECIBO.AsInteger := NovoCodigo('SYS_RECIBOS', 'ID_RECIBO'); tblReciboTP_CANCELADO.AsString := 'N'; end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'SYS_RECIBOS', 'edit'); end else begin RegistarLog(DataSet, 'SYS_RECIBOS', 'post'); end; end else begin LogPost(DataSet, 'SYS_RECIBOS', 'insert', seqRecibos); end; end; procedure TdtmSystem.tblRepasseAfterOpen(DataSet: TDataSet); begin // id_repasse := tblRepasseID_REPASSE.AsInteger; end; procedure TdtmSystem.tblRepasseBeforeDelete(DataSet: TDataSet); begin if tblRepasseID_REPASSE.AsInteger = 1 then begin Abort; end; LogDelete(DataSet, 'SYS_REPASSES', 'delete'); end; procedure TdtmSystem.tblRepasseBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; if tblRepasseID_REPASSE.AsInteger = 1 then begin MessageDlg('Este modelo é utilizado pelo sistema e não pode ser editado.', mtWarning, [mbOK], 0); Abort; end; end; procedure TdtmSystem.tblRepasseBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblRepasseID_REPASSE.AsInteger := NovoCodigo('SYS_REPASSES', 'ID_REPASSE'); end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'SYS_REPASSES', 'edit'); end else begin RegistarLog(DataSet, 'SYS_REPASSES', 'post'); end; end else begin LogPost(DataSet, 'SYS_REPASSES', 'insert'); end; end; procedure TdtmSystem.tblRepasseFaseAfterOpen(DataSet: TDataSet); begin id_repasse_fase := tblRepasseFaseID_FASE.AsInteger; end; procedure TdtmSystem.tblRepasseFaseBeforeOpen(DataSet: TDataSet); begin if tblRepasse.Active then begin tblRepasseFase.SQL.Clear; tblRepasseFase.SQL.Text := 'select * from sys_repasses_fases where id_repasse = ' + inttostr(id_repasse); end else begin tblRepasseFase.SQL.Clear; tblRepasseFase.SQL.Text := 'select * from sys_repasses_fases'; end; end; procedure TdtmSystem.tblRepasseFaseBeforePost(DataSet: TDataSet); begin if tblRepasseFase.RecordCount > 1 then begin ROQueryFaixa.SQL.Clear; with ROQueryFaixa.SQL do begin Add('select MIN_ATRASO, MAX_ATRASO from sys_repasses_fases where id_repasse = ' + inttostr(id_repasse)); Add('and ('); Add('((MIN_ATRASO <= ' + tblRepasseFaseMIN_ATRASO.AsString + ') and (MAX_ATRASO >= ' + tblRepasseFaseMIN_ATRASO.AsString + ')) or ((MIN_ATRASO <= ' + tblRepasseFaseMAX_ATRASO.AsString + ') and (MAX_ATRASO >= ' + tblRepasseFaseMAX_ATRASO.AsString + '))'); Add(') and ID_FASE <> ' + inttostr(id_repasse_fase)); end; ROQueryFaixa.Open; if not ROQueryFaixa.IsEmpty then begin MessageDlg ('Já existe uma faixa com esse período de atraso dentro das políticas desta empresa.', mtWarning, [mbOK], 0); tblRepasseFaseMIN_ATRASO.AsString := ''; tblRepasseFaseMAX_ATRASO.AsString := ''; Abort; end; end; if DataSet.State = dsInsert then begin tblRepasseFaseID_FASE.AsInteger := NovoCodigo('SYS_REPASSES_FASES', 'ID_FASE'); tblRepasseFaseID_REPASSE.AsInteger := id_repasse; tblRepasseFaseID_ULTIMO_USUARIO.AsInteger := id_usuario; tblRepasseFaseDT_HORA_ULTIMA_ATT.AsDateTime := Now; end; if DataSet.State = dsEdit then begin tblRepasseFaseID_ULTIMO_USUARIO.AsInteger := id_usuario; tblRepasseFaseDT_HORA_ULTIMA_ATT.AsDateTime := Now; end; end; procedure TdtmSystem.tblSessaoBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblSessaoID_SESSAO.AsInteger := NovoCodigo('SYS_SESSAO', 'ID_SESSAO'); end; end; procedure TdtmSystem.tblTelefonesBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'CHG_TELEFONES', 'delete'); end; procedure TdtmSystem.tblTelefonesBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblTelefonesBeforeOpen(DataSet: TDataSet); begin if not tblDevedores.Active then begin tblTelefones.SQL.Clear; tblTelefones.SQL.Add('select * from CHG_TELEFONES;'); end else begin tblTelefones.SQL.Clear; tblTelefones.SQL.Add('select * from CHG_TELEFONES where id_devedor =' + inttostr(id_devedor)); end; end; procedure TdtmSystem.tblTelefonesBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin // tblTelefonesID_TELEFONE.AsInteger := NovoCodigo('CHG_TELEFONES', // 'ID_TELEFONE'); tblTelefonesID_DEVEDOR.AsInteger := tblDevedoresID_DEVEDOR.AsInteger; tblTelefonesID_ULTIMO_USUARIO.AsInteger := id_usuario; tblTelefonesDT_HORA_ULTIMA_ATT.AsDateTime := Now; end; if DataSet.State = dsEdit then begin tblTelefonesID_ULTIMO_USUARIO.AsInteger := id_usuario; tblTelefonesDT_HORA_ULTIMA_ATT.AsDateTime := Now; end; qryConsulta.SQL.Clear; qryConsulta.SQL.Text := 'select nr_numero from chg_telefones where nr_numero = ' + QuotedStr(tblTelefonesNR_NUMERO.AsString) + 'and id_devedor = ' + inttostr(id_devedor) + 'and nr_ddd = ' + QuotedStr(tblTelefonesNR_DDD.AsString); qryConsulta.Open; if (qryConsulta.RecordCount <> 0) and not(dtsTelefones.State in [dsEdit]) then begin MessageDlg('Esse número já está cadastrado.', mtWarning, [mbOK], 0); tblTelefonesNR_NUMERO.AsString := ''; Abort; end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'CHG_TELEFONES', 'edit'); end else begin RegistarLog(DataSet, 'CHG_TELEFONES', 'post'); end; end else begin LogPost(DataSet, 'CHG_TELEFONES', 'insert', seqTelefones); end; end; procedure TdtmSystem.tblTelefonesCalcFields(DataSet: TDataSet); begin tblTelefonesTX_TELEFONE_COMPLETO.AsString := Format('(%s) %s', [tblTelefonesNR_DDD.AsString, tblTelefonesNR_NUMERO.AsString]); end; procedure TdtmSystem.tblTextoEmailBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'SYS_TEXTO_EMAIL', 'delete'); end; procedure TdtmSystem.tblTextoEmailBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblTextoEmailBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblTextoEmailID_TEXTO.AsInteger := NovoCodigo('SYS_TEXTO_EMAIL', 'ID_TEXTO'); end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'SYS_TEXTO_EMAIL', 'edit'); end else begin RegistarLog(DataSet, 'SYS_TEXTO_EMAIL', 'post'); end; end else begin LogPost(DataSet, 'SYS_TEXTO_EMAIL', 'insert'); end; end; procedure TdtmSystem.tblTitulosAfterOpen(DataSet: TDataSet); begin id_tit := tblTitulosID_TITULO.AsInteger; end; procedure TdtmSystem.tblTitulosAfterPost(DataSet: TDataSet); begin // RegistarLog(tblTitulos); // if tit_state = 'dsInsert' then // begin // if not(tblHistorico.Active) then // begin // tblHistorico.Open; // end; // tblHistorico.Append; // tblHistoricoID_DEVEDOR.AsInteger := tblDevedoresID_DEVEDOR.AsInteger; // tblHistoricoID_COBRADOR.AsInteger := id_usuario; // tblHistoricoID_TITULOS.AsString := tblTitulosID_TITULO.AsString; // tblHistoricoID_PROVIDENCIA.AsInteger := 52; // tblHistoricoDT_CONTATO.AsDateTime := Date; // tblHistorico.Post; // if (tblHistorico.Active) then // begin // tblHistorico.Close; // end; // end; end; procedure TdtmSystem.tblTitulosBeforeDelete(DataSet: TDataSet); begin // RegistarLog(DataSet, 'CHG_TITULOS', 'apagou' + tblTitulosID_DEVEDOR.AsString + // '-' + tblTitulosID_EMPRESA.AsString + '-' + tblTitulosVL_TITULO.AsString + // '-' + tblTitulosDT_VENCIMENTO.AsString + '-' + // tblTitulosTP_SITUACAO.AsString); with ROquerypesquisas.SQL do begin Clear; Add('select * from sys_acordos where id_original = ' + // tblTitulosID_TITULO.AsString); inttostr(id_tit)); end; if not tblAcordos.Active then begin tblAcordos.Open; end; ROquerypesquisas.Open; if ROquerypesquisas.RecordCount > 0 then begin ROquerypesquisas.First; while not ROquerypesquisas.Eof do begin tblAcordos.Locate('ID_ITEM', ROquerypesquisas.FieldByName('ID_ITEM') .AsInteger, []); tblAcordos.Delete; ROquerypesquisas.Next; end; end; with ROquerypesquisas.SQL do begin Clear; Add('select * from sys_acordos where id_parcela = ' + // tblTitulosID_TITULO.AsString); inttostr(id_tit)); end; ROquerypesquisas.Open; if ROquerypesquisas.RecordCount > 0 then begin ROquerypesquisas.First; while not ROquerypesquisas.Eof do begin tblAcordos.Locate('ID_ITEM', ROquerypesquisas.FieldByName('ID_ITEM') .AsInteger, []); tblAcordos.Delete; ROquerypesquisas.Next; end; end; LogDelete(DataSet, 'CHG_TITULOS', 'delete'); end; procedure TdtmSystem.tblTitulosBeforeEdit(DataSet: TDataSet); var i: integer; begin // SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin // fields_before[i] := DataSet.fields[i].AsString; fieldsTituloBefore[i] := DataSet.fields[i].AsString; end; dt_pag := tblTitulosDT_PAGAMENTO.AsDateTime; dt_recibo := tblTitulosDT_EMISSAO_RECIBO.AsDateTime; end; procedure TdtmSystem.tblTitulosBeforeOpen(DataSet: TDataSet); begin if not tblDevedores.Active then begin tblTitulos.SQL.Clear; tblTitulos.SQL.Add('select * from chg_titulos'); tblTitulos.SQL.Add('order by DT_VENCIMENTO, VL_TITULO'); end else begin tblTitulos.SQL.Clear; tblTitulos.SQL.Add('select * from chg_titulos where id_devedor =' + inttostr(id_devedor)); tblTitulos.SQL.Add('order by DT_VENCIMENTO, VL_TITULO'); end; end; procedure TdtmSystem.tblTitulosBeforePost(DataSet: TDataSet); var acao: string; begin if tblTitulosDT_VENCIMENTO.AsDateTime < StrToDateTime('01/01/1900 0') then begin showmessage('Data inválida para vencimento.'); Abort; end; if DataSet.State = dsInsert then begin tblTitulosID_TITULO.AsInteger := NovoCodigo('CHG_TITULOS', 'ID_TITULO'); tblTitulosID_DEVEDOR.AsInteger := tblDevedoresID_DEVEDOR.AsInteger; if tblTitulosDT_ENTRADA.AsString = '' then begin tblTitulosDT_ENTRADA.AsDateTime := Date; end; if tblTitulosTP_SITUACAO.AsString = '' then begin tblTitulosTP_SITUACAO.AsString := 'A'; end; tblTitulosID_ULTIMO_USUARIO.AsInteger := id_usuario; tblTitulosDT_HORA_ULTIMA_ATT.AsDateTime := Now; tblTitulosID_IMPLANTACAO.AsInteger := id_usuario; tblTitulosDT_IMPLANTACAO.AsDateTime := Now; tit_state := 'dsInsert'; if (tblTitulosDT_PAGAMENTO.AsString = '') and ((tblTitulosTP_SITUACAO.AsString = 'B') or (tblTitulosTP_SITUACAO.AsString = 'QC')) then begin tblTitulosDT_PAGAMENTO.AsDateTime := Date; end; // RegistarLog(DataSet, 'CHG_TITULOS', 'inserir'); end; if DataSet.State = dsEdit then begin acao := ''; if tblTitulosTP_SITUACAO.AsString = 'A' then begin if MessageDlg ('Você está prestes a abrir um título. Deseja zerar multa, juros, encargos e repasses?', mtWarning, [mbyes, mbno], 0) = mrYes then begin tblTitulosVL_MULTA.Clear; tblTitulosVL_JUROS.Clear; tblTitulosVL_ENCARGOS.Clear; tblTitulosVL_INDICADOR.Clear; tblTitulosVL_CORRIGIDO.Clear; tblTitulosVL_DESC_PRINCIPAL.Clear; tblTitulosVL_DESC_MULTA.Clear; tblTitulosVL_DESC_JUROS.Clear; tblTitulosVL_DESC_INDICADOR.Clear; tblTitulosVL_REPASSE_MULTA.Clear; tblTitulosVL_REPASSE_JUROS.Clear; tblTitulosVL_REPASSE_CORRIGIDO.Clear; tblTitulosVL_REPASSE_PRIN.Clear; tblTitulosVL_REPASSE_ENCARGOS.Clear; end; end; tblTitulosID_ULTIMO_USUARIO.AsInteger := id_usuario; tblTitulosDT_HORA_ULTIMA_ATT.AsDateTime := Now; tit_state := 'dsEdit'; if (tblTitulosDT_PAGAMENTO.AsString = '') and ((tblTitulosTP_SITUACAO.AsString = 'B') or (tblTitulosTP_SITUACAO.AsString = 'QC')) then begin tblTitulosDT_PAGAMENTO.AsDateTime := Date; end; if (tblTitulosTP_SITUACAO.AsString = 'A') or (tblTitulosTP_SITUACAO.AsString = 'AC') then begin tblTitulosDT_PAGAMENTO.Clear; tblTitulosDT_EMISSAO_RECIBO.Clear; end; if tblTitulosDT_PAGAMENTO.AsDateTime <> dt_pag then begin acao := acao + 'P:' + tblTitulosDT_PAGAMENTO.AsString + '-' + DateToStr(dt_pag); end; if tblTitulosDT_EMISSAO_RECIBO.AsDateTime <> dt_recibo then begin acao := acao + 'R: ' + tblTitulosDT_EMISSAO_RECIBO.AsString + '-' + DateToStr(dt_recibo); end; // RegistarLog(DataSet, 'CHG_TITULOS', 'editou ' + acao); end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fieldsTituloBefore) then begin LogDiffFields(DataSet, fieldsTituloBefore, 'CHG_TITULOS', 'edit'); end else begin RegistarLog(DataSet, 'CHG_TITULOS', 'post'); end; end else begin LogPost(DataSet, 'CHG_TITULOS', 'insert'); end; end; procedure TdtmSystem.tblUsuariosAfterInsert(DataSet: TDataSet); begin tblUsuariosTP_ATIVO.AsString := 'S'; tblUsuariosTP_TROCAPASS.AsString := 'N'; end; procedure TdtmSystem.tblUsuariosBeforeDelete(DataSet: TDataSet); begin LogDelete(DataSet, 'SYS_USUARIOS', 'delete'); end; procedure TdtmSystem.tblUsuariosBeforeEdit(DataSet: TDataSet); var i: integer; begin SetLength(fields_before, DataSet.FieldCount); for i := 0 to DataSet.FieldCount - 1 do begin fields_before[i] := DataSet.fields[i].AsString; end; end; procedure TdtmSystem.tblUsuariosBeforeOpen(DataSet: TDataSet); begin if not tblGrupos.Active then begin tblUsuarios.SQL.Clear; tblUsuarios.SQL.Add('select * from SYS_USUARIOS;'); end else begin tblUsuarios.SQL.Clear; tblUsuarios.SQL.Add('select * from SYS_USUARIOS where id_grupo =' + inttostr(id_grupoq)); end; end; procedure TdtmSystem.tblUsuariosBeforePost(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin tblUsuariosID_USUARIO.AsInteger := NovoCodigo('SYS_USUARIOS', 'ID_USUARIO'); end; qryConsulta.SQL.Clear; qryConsulta.SQL.Text := 'select tx_nome from sys_usuarios where lower(tx_nome) = ' + QuotedStr(LowerCase(tblUsuariosTX_NOME.AsString)); qryConsulta.Open; if (qryConsulta.RecordCount <> 0) and not(dtsUsuarios.State in [dsEdit]) then begin MessageDlg('Já existe um Usuário com este nome.', mtWarning, [mbOK], 0); tblUsuariosTX_NOME.AsString := ''; Abort; end; if DataSet.State <> dsInsert then begin if CheckDiffFields(DataSet, fields_before) then begin LogDiffFields(DataSet, fields_before, 'SYS_USUARIOS', 'edit'); end else begin RegistarLog(DataSet, 'SYS_USUARIOS', 'post'); end; end else begin LogPost(DataSet, 'SYS_USUARIOS', 'insert'); end; end; procedure TdtmSystem.AtribuirChavePrimaria(DataSet: TDataSet); begin if DataSet.State = dsInsert then begin DataSet.fields[0].AsInteger := NovoCodigo((DataSet as TZTable).TableName, DataSet.fields[0].FieldName); end; end; function TdtmSystem.CheckDiffFields(DataSet: TDataSet; fields: array of string): boolean; var i: integer; diff: boolean; begin diff := false; for i := 0 to DataSet.FieldCount - 1 do begin if fields[i] <> DataSet.fields[i].AsString then begin diff := true; break end; end; Result := diff; end; function TdtmSystem.ComputerName: string; var Buffer: array [0 .. MAX_COMPUTERNAME_LENGTH + 1] of Char; Size: DWORD; begin Size := MAX_COMPUTERNAME_LENGTH + 1; if GetComputerName(@Buffer, Size) then begin Result := StrPas(Buffer); end else begin Result := ''; end; end; procedure TdtmSystem.RegistarLog(DataSet: TDataSet; table, action: string); begin tblLog.Append; tblLogTX_TABELA.AsString := table; tblLogID_REGISTRO.AsInteger := DataSet.fields[0].AsInteger; tblLogTX_ACAO.AsString := action; tblLog.Post; end; procedure TdtmSystem.SetupHackedNavigator(const Navigator: TDBNavigator; const Glyphs: TImageList; S: string); const Captions: array [TNavigateBtn] of string = ('Primeiro', 'Anterior', 'Próximo', 'Último', 'Adicionar', 'Excluir', 'Alterar', 'Confirmar', 'Cancelar', 'Atualizar', 'Aplicar Atualizações', 'Cancelar Atualizãções'); (* Captions : array[TNavigateBtn] of string = ('First', 'Prior', 'Next', 'Last', 'Insert', 'Delete', 'Edit', 'Post', 'Cancel', 'Refresh'); *) Hints: array [TNavigateBtn] of string = ('Primeiro', 'Anterior', 'Próximo', 'Último', 'Adicionar', 'Apagar', 'Modificar', 'Confirmar', 'Cancelar', 'Atualizar', 'Aplicar Atualizações', 'Cancelar Atualizãções'); var btn: TNavigateBtn; begin // função propriamente dita para "hackear" o navigator for btn := Low(TNavigateBtn) to High(TNavigateBtn) do with THackDBNavigator(Navigator).Buttons[btn] do begin // from the Captions const array Hint := Hints[btn]; if LowerCase(S) = 's' then begin Caption := Captions[btn]; end; // the number of images in the Glyph property NumGlyphs := 1; // Remove the old glyph. Glyph := nil; // Assign the custom one Glyphs.GetBitmap(integer(btn), Glyph); // gylph above text Layout := blGlyphTop; Font.Style := Font.Style - [fsbold]; end; end; // procedimento para adicionar uma permissão a tabela de permissões procedure TdtmSystem.InserirPermissao(cd_permissao, tp_permissao, tx_descricao: string); var id_parent: integer; begin with dtmSystem do // com as tabelas do dtmSystem... begin // Procura se a entrada possui um pai if tblPermissoes.Locate('CD_PERMISSAO', copy(cd_permissao, 1, Length(cd_permissao) - 3), []) then begin id_parent := tblPermissoesID_PERMISSAO.AsInteger; end else begin id_parent := 0; // se não ela é um pai end; // procura se a entrada existe ou não if not tblPermissoes.Locate('CD_PERMISSAO', cd_permissao, []) then begin tblPermissoes.Append; // se não, adiciona end else begin tblPermissoes.Edit; // se sim, edita end; // atualiza os dados da permissão tblPermissoesID_PARENT.AsInteger := id_parent; tblPermissoesCD_PERMISSAO.AsString := cd_permissao; tblPermissoesTP_ACESSO.AsString := tp_permissao; tblPermissoesTX_DESCRICAO.AsString := tx_descricao; tblPermissoes.Post; Application.ProcessMessages; end; end; procedure TdtmSystem.JsonBuilder(table: TZTable; model: string; pk: string); var i: integer; str_helper: string; str_list: TStringList; begin str_helper := ''; with table do begin str_list := TStringList.Create; str_list.Add('model=' + 'cobranca.' + model); str_list.Add('pk=' + FieldByName(pk).AsString); str_list.Add('fields='); for i := 0 to FieldCount - 1 do begin if fields[i].FieldName <> pk then begin str_list.Add(fields[i].FieldName + '=' + fields[i].AsString); end; end; end; // indyHTTP.Post('http://192.168.0.154:8000/api/cobranca/devedores', str_list); end; procedure TdtmSystem.JsonBuilderOnline(table: TZTable; model, pk: string; url: string); var Modelo: TJSONObject; dados, dadoshelp: TJSONObject; modarray { , dadosarray } : TJSONArray; estava_aberta: boolean; recno: integer; jsondatehelper: TDateTime; jsonfloathelper: double; jsoninthelper: integer; i: integer; begin if not(table.Active) then begin table.Open; estava_aberta := false; end else begin estava_aberta := true; recno := table.recno; end; table.First; Modelo := TJSONObject.Create; try modarray := TJSONArray.Create; while not table.Eof do begin try dados := TJSONObject.Create; with dados do begin AddPair('model', TJSONString.Create(model)); AddPair('pk', TJSONNumber.Create(table.FieldByName(pk).AsInteger)); // dadosarray := TJSONArray.Create; dadoshelp := TJSONObject.Create; with dadoshelp do begin for i := 0 to table.FieldCount - 1 do begin if table.fields[i].FieldName <> table.FieldByName(pk).FieldName then begin if table.fields[i].IsNull then begin AddPair(TJSONString.Create(table.fields[i].FieldName), TJSONNull.Create); end else begin if TryStrToDateTime(table.fields[i].AsString, jsondatehelper) = true then begin AddPair(TJSONString.Create(table.fields[i].FieldName), TJSONString.Create(FormatDateTime('YYYY-MM-DD', table.fields[i].AsDateTime))); end else if (TryStrToInt(table.fields[i].AsString, jsoninthelper) = true) or (TryStrToFloat(table.fields[i].AsString, jsonfloathelper) = true) then begin AddPair(TJSONString.Create(table.fields[i].FieldName), TJSONNumber.Create(table.fields[i].AsInteger)); end else begin AddPair(TJSONString.Create(table.fields[i].FieldName), TJSONString.Create(table.fields[i].AsString)); end; end; end; end; end; AddPair('fields', dadoshelp); end; modarray.AddElement(dados); finally table.Next; Application.ProcessMessages; end; end; Modelo.AddPair(model + '-title', modarray); if estava_aberta = true then begin table.recno := recno; end else begin table.Close; end; finally // indyHTTP.Post(url, Modelo.ToString); Modelo.Free; Screen.Cursor := crDefault; end; end; procedure TdtmSystem.LogaDC(txt: string); var path: string; begin path := ExtractFilePath(Application.ExeName); path := path + 'log'; if not DirectoryExists(path) then begin CreateDir(path); end; AssignFile(log, path + '\errorLog.txt'); if FileExists(path + '\errorLog.txt') then begin Append(log); Writeln(log, DateTimeToStr(Now)); Writeln(log, ''); Writeln(log, ''); Writeln(log, txt); Writeln(log, ''); Writeln(log, ''); end else begin Rewrite(log); Writeln(log, DateTimeToStr(Now)); Writeln(log, ''); Writeln(log, ''); Writeln(log, txt); Writeln(log, ''); Writeln(log, ''); end; CloseFile(log); end; procedure TdtmSystem.LogDelete(DataSet: TDataSet; table, action: string); var i: integer; str_help: string; fields: array of string; begin // SetLength(fields, DataSet.FieldCount); // for i := 0 to DataSet.FieldCount - 1 do // begin // fields[i] := DataSet.fields[i].AsString; // end; str_help := 'Antes de deletar:' + sLineBreak; for i := 0 to DataSet.FieldCount - 1 do begin str_help := str_help + DataSet.fields[i].FieldName + ': ' + DataSet.fields [i].AsString + sLineBreak; end; tblLog.Append; tblLogTX_TABELA.AsString := table; tblLogID_REGISTRO.AsInteger := DataSet.fields[0].AsInteger; tblLogTX_ACAO.AsString := action; tblLogTL_ACAO.AsString := str_help; tblLog.Post; end; procedure TdtmSystem.LogDiffFields(DataSet: TDataSet; fields: array of string; table: string; action: string); var i: integer; str_help: string; strAntes, strDepois: string; begin // str_help := 'Antes de editar:' + sLineBreak; strAntes := Format('%s%s', ['Antes de editar:', sLineBreak]); strDepois := Format('%s%s', ['Depois de editar:', sLineBreak]); for i := 0 to Length(fields) - 1 do begin // str_help := str_help + DataSet.fields[i].FieldName + ': ' + fields[i] + // sLineBreak; if DataSet.fields[i].AsString <> fields[i] then begin strAntes := Format('%s%s: %s%s', [strAntes, DataSet.fields[i].FieldName, fields[i], sLineBreak]); strDepois := Format('%s%s: %s%s', [strDepois, DataSet.fields[i].FieldName, DataSet.fields[i].AsString, sLineBreak]); end; end; str_help := strAntes + sLineBreak + strDepois; // str_help := str_help + sLineBreak + 'Depois de editar:' + sLineBreak; // for i := 0 to DataSet.FieldCount - 1 do // begin // str_help := str_help + DataSet.fields[i].FieldName + ': ' + DataSet.fields // [i].AsString + sLineBreak; // end; tblLog.Append; tblLogTX_TABELA.AsString := table; tblLogID_REGISTRO.AsInteger := DataSet.fields[0].AsInteger; tblLogTX_ACAO.AsString := action; tblLogTL_ACAO.AsString := str_help; tblLog.Post; end; procedure TdtmSystem.LogPost(DataSet: TDataSet; table, action: string; sequence: TZSequence = nil); var i: integer; str_help: string; // fields: array of string; begin str_help := 'Valores Iniciais:' + sLineBreak; for i := 0 to DataSet.FieldCount - 1 do begin str_help := str_help + DataSet.fields[i].FieldName + ': ' + DataSet.fields [i].AsString + sLineBreak; end; tblLog.Append; tblLogTX_TABELA.AsString := table; if Assigned(sequence) then begin // tblLogID_REGISTRO.AsInteger := DataSet.fields[i].AsInteger; tblLogID_REGISTRO.AsInteger := sequence.GetCurrentValue + 1; end else begin tblLogID_REGISTRO.AsInteger := DataSet.fields[0].AsInteger; end; tblLogTX_ACAO.AsString := action; tblLogTL_ACAO.AsString := str_help; tblLog.Post; end; function TdtmSystem.VerificarPermissao(cd_permissao: string): boolean; begin { if not tblGrupos.Active then begin tblGrupos.Open; end; Result := true; // posiciona no grupo ativo tblGrupos.Locate('ID_GRUPO', dtmSystem.id_grupo, []); // procura a opção if not(tblPermissoes.Active) then begin tblPermissoes.Open; end; if not(tblGruposPermissoes.Active) then begin tblGruposPermissoes.Open; end; if tblPermissoes.Locate('CD_PERMISSAO', cd_permissao, []) then begin // Retorna o acesso if tblGruposPermissoes.Locate('ID_PERMISSAO', tblPermissoesID_PERMISSAO.AsString, []) then begin if tblGruposPermissoesTP_ACESSO.Value = 'S' then begin Result := true; while tblPermissoesID_PARENT.AsString <> '0' do begin tblPermissoes.Locate('ID_PERMISSAO', tblPermissoesID_PARENT.AsString, []); tblGruposPermissoes.Locate('ID_PERMISSAO', tblPermissoesID_PERMISSAO.AsString, []); if tblGruposPermissoesTP_ACESSO.Value = 'S' then begin Result := true; end else begin Result := false; Break; end; end; end else begin Result := false; end; end; end else begin Result := false; end; } if cd_value.Values[cd_permissao] = 'S' then begin Result := true; while cd_parent.Values[cd_permissao] <> '0' do begin cd_permissao := cd_parent.Names [strtoint(cd_parent.Values[cd_permissao]) - 1]; if cd_value.Values[cd_permissao] = 'S' then begin Result := true; end else begin Result := false; break; end; end; end else begin Result := false; end; end; function TdtmSystem.VerificarVersao: boolean; var prog_version, update_version: TStringList; res: boolean; begin // DELPHI_DEV-PC // showmessage(dtmSystem.GetAppVersionStr + ' - ' + dtmSystem.version); res := false; prog_version := TStringList.Create; try prog_version.Clear; prog_version.Delimiter := '.'; prog_version.DelimitedText := dtmSystem.GetAppVersionStr; finally end; update_version := TStringList.Create; try update_version.Clear; update_version.Delimiter := '.'; update_version.DelimitedText := version; finally end; if prog_version[0] <> update_version[0] then begin res := true; end else if prog_version[1] <> update_version[1] then begin res := true; end else if prog_version[2] <> update_version[2] then begin res := true; end else if prog_version[3] <> update_version[3] then begin res := true; end; Result := res; end; procedure TdtmSystem.ZConnectionAfterDisconnect(Sender: TObject); begin // LogaDC('desconectou' + inttostr(dtmSystem.id_usuario)) end; procedure TdtmSystem.AlterReadOnly; var i: integer; begin if DataSet.State in [dsBrowse] then begin for i := 0 to objeto.ControlCount - 1 do begin if objeto.Controls[i] is TDBEdit then begin (objeto.Controls[i] as TDBEdit).ReadOnly := true; end; if objeto.Controls[i] is TDBGrid then begin (objeto.Controls[i] as TDBGrid).ReadOnly := true; end; if objeto.Controls[i] is TPanel then begin (objeto.Controls[i] as TPanel).Enabled := false; end; if objeto.Controls[i] is TCheckListBox then begin (objeto.Controls[i] as TCheckListBox).Enabled := false; end; if objeto.Controls[i] is TDBLookupComboBox then begin (objeto.Controls[i] as TDBLookupComboBox).ReadOnly := true; end; if objeto.Controls[i] is TDBLookupComboBox then begin (objeto.Controls[i] as TDBLookupComboBox).ReadOnly := true; end; if objeto.Controls[i] is TrDBDateTimePicker then begin (objeto.Controls[i] as TrDBDateTimePicker).ReadOnly := true; end; end; end else begin for i := 0 to objeto.ControlCount - 1 do begin if objeto.Controls[i] is TDBEdit then begin (objeto.Controls[i] as TDBEdit).ReadOnly := false; end; if objeto.Controls[i] is TDBGrid then begin (objeto.Controls[i] as TDBGrid).ReadOnly := false; end; if objeto.Controls[i] is TPanel then begin (objeto.Controls[i] as TPanel).Enabled := true; end; if objeto.Controls[i] is TCheckListBox then begin (objeto.Controls[i] as TCheckListBox).Enabled := true; end; if objeto.Controls[i] is TDBLookupComboBox then begin (objeto.Controls[i] as TDBLookupComboBox).ReadOnly := false; end; if objeto.Controls[i] is TrDBDateTimePicker then begin (objeto.Controls[i] as TrDBDateTimePicker).ReadOnly := false; end; end; end; end; end.