unit ucadDevedores; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, umstCadastro, Data.DB, Vcl.ExtCtrls, Vcl.DBCtrls, Vcl.StdCtrls, Vcl.Mask, Vcl.ComCtrls, Vcl.Grids, Vcl.DBGrids, ACBrBase, ACBrSocket, ACBrCEP, rDBComponents, System.ImageList, Vcl.ImgList, Vcl.Buttons, Clipbrd, Vcl.CheckLst, System.UITypes, Vcl.Menus, StrUtils, DBDateTimePicker, ZAbstractRODataset, ZAbstractDataset, ZDataset, DateUtils, System.Math, RLReport; type THackDBNavigator = class(TDBNavigator) end; type TStringDynArray = array of string; type TcadDevedores = class(TmstCadastro) tabEndereco: TTabSheet; tabTel: TTabSheet; dbedt_nome: TDBEdit; dbedt_cpfcnpj: TDBEdit; lbl_nome: TLabel; lbl_cpfcnpj: TLabel; lbl_datacad: TLabel; dbgrd_enderecos: TDBGrid; dbedt_logradouro: TDBEdit; dbedt_num: TDBEdit; lbl_logradouro: TLabel; lbl_num: TLabel; dbrg_situacao: TDBRadioGroup; dtsEnderecos: TDataSource; dtsTelefones: TDataSource; tabTitulos: TTabSheet; Panel1: TPanel; dbrgrp_tpdevedor: TDBRadioGroup; dbmem_obs: TDBMemo; lbl_obs: TLabel; dbedt_comp: TDBEdit; lbl_comp: TLabel; Panel2: TPanel; lbl_tpend: TLabel; lbl_situacao: TLabel; lbl_cep: TLabel; dbedt_cep: TDBEdit; lbl_bairro: TLabel; dbedt_bairro: TDBEdit; lbl_cidade: TLabel; lbl_uf: TLabel; dblucmbox_uf: TDBLookupComboBox; dbedt_tel: TDBEdit; lbl_tel: TLabel; Panel3: TPanel; dbrg_sittel: TDBRadioGroup; lbl_sittel: TLabel; Panel4: TPanel; dbrg_tipotel: TDBRadioGroup; lbl_tipo: TLabel; dbgrd_tel: TDBGrid; dbmem_tel: TDBMemo; lbl_obstel: TLabel; lbl_desctel: TLabel; dbedt_desctel: TDBEdit; lbl_tit: TLabel; dbedit_produto: TDBEdit; lbl_dataent: TLabel; lbl_datavenc: TLabel; lbl_vltit: TLabel; dbedt_vltit: TDBEdit; Panel5: TPanel; dbrg_tit: TDBRadioGroup; lbl_sittit: TLabel; tabHist: TTabSheet; dbgrd_historico: TDBGrid; lbl_tppessoa: TLabel; ImageList1: TImageList; lbl_ref: TLabel; Panel6: TPanel; dbrg_ref: TDBRadioGroup; Panel7: TPanel; dbrg_tpend: TDBRadioGroup; Panel8: TPanel; Panel9: TPanel; btn_clearmemo: TButton; Panel10: TPanel; rdbdt_entrada: TrDBDateTimePicker; rDBDateTimePicker1: TrDBDateTimePicker; dbedt_codemp: TDBEdit; lbl_cddevedor: TLabel; pnl_cor1: TPanel; pnl_color2: TPanel; pnl_color3: TPanel; pnl_color4: TPanel; pnl_color5: TPanel; pnl_color6: TPanel; pnl_color7: TPanel; GroupBox1: TGroupBox; navenderecos: TDBNavigator; dblucmbox_cidade: TDBLookupComboBox; navtelefones: TDBNavigator; dtsTitulos: TDataSource; dtsCidades: TDataSource; dtsUF: TDataSource; MainMenu1: TMainMenu; Cadastro1: TMenuItem; Importao1: TMenuItem; lbl_coddev: TLabel; dbedt_coddev: TDBEdit; lbl_nomepai: TLabel; dbedt_nomepai: TDBEdit; dbedt_nomemae: TDBEdit; lbl_nomemae: TLabel; dbedt_rg: TDBEdit; lbl_rg: TLabel; lbl_dtnasc: TLabel; lbl_idade: TLabel; dbcbx_tpcheque: TDBCheckBox; lbl_banco: TLabel; dbedt_banco: TDBEdit; pnl_cheque: TPanel; lbl_nrcheque: TLabel; dbedt_nrcheque: TDBEdit; lbl_motivo: TLabel; dbedt_motivo: TDBEdit; lbl_tpdespesa: TLabel; PopupMenu1: TPopupMenu; Copiar1: TMenuItem; lbl_email: TLabel; dbedt_email: TDBEdit; Panel11: TPanel; dbrg_confirmado: TDBRadioGroup; lbl_confirmado: TLabel; navHistorico: TDBNavigator; dtsHistorico: TDataSource; tabCalculos: TTabSheet; lbl_beneficiarioscalculo: TLabel; clb_beneficiarioscalculo: TCheckListBox; dtsqryConsulta: TDataSource; qryConsulta: TZQuery; dtsListaTitulos: TDataSource; lv_titulos: TListView; dtp_atrasorecalc: TDateTimePicker; lbl_datapgmnto: TLabel; dbgrd_listtitulos: TDBGrid; lbl_somatitulos: TLabel; edt_somatitulos: TEdit; lbl_vlaquitar: TLabel; edt_vlaquitar: TEdit; lbl_somajuros: TLabel; edt_somajuros: TEdit; lbl_somaentrada: TLabel; edt_somaentrada: TEdit; lbl_somamulta: TLabel; edt_somamulta: TEdit; lbl_parcelamento: TLabel; edt_nrparcelas: TEdit; up_nrparcelas: TUpDown; lbl_somaindicador: TLabel; edt_somaindicador: TEdit; lbl_extras: TLabel; edt_extras: TEdit; cb_nmulta: TCheckBox; lbl_desctot: TLabel; edt_desctot: TEdit; lbl_protocolo1: TLabel; edt_protocolo1: TEdit; lv_parcelas: TListView; pcDescontos: TPageControl; tabQuitar: TTabSheet; tabParcelar: TTabSheet; gb_descontosquit: TGroupBox; lbl_indquitar: TLabel; lbl_principalquitar: TLabel; lbl_multasquitar: TLabel; lbl_jurosquitar: TLabel; edt_indquitar: TEdit; edt_principalquitar: TEdit; edt_multasquitar: TEdit; up_encquitar: TUpDown; up_principalquitar: TUpDown; up_multasquitar: TUpDown; edt_jurosquitar: TEdit; up_jurosquitar: TUpDown; cb_descquit: TCheckBox; gb_descontospar: TGroupBox; lbl_indparcelas: TLabel; lbl_jurosparcelas: TLabel; lbl_multasparcelas: TLabel; lbl_principalparcelas: TLabel; edt_indparcelas: TEdit; edt_jurosparcelas: TEdit; edt_multasparcelas: TEdit; edt_principalparcelas: TEdit; up_encparcelas: TUpDown; up_jurosparcelas: TUpDown; up_multasparcelas: TUpDown; up_principalparcelas: TUpDown; cb_descpar: TCheckBox; Label4: TLabel; cb_formapag: TComboBox; btn_protocolo: TButton; btn_fechamento: TButton; queryListaTitulos: TZQuery; queryListaTitulosID_TITULO: TIntegerField; queryListaTitulosID_DEVEDOR: TIntegerField; queryListaTitulosID_EMPRESA: TIntegerField; queryListaTitulosTX_PRODUTO: TWideStringField; queryListaTitulosVL_TITULO: TCurrencyField; queryListaTitulosDT_ENTRADA: TDateTimeField; queryListaTitulosDT_VENCIMENTO: TDateTimeField; queryListaTitulosDT_ATRASO: TIntegerField; queryListaTitulosTP_SITUACAO: TWideStringField; queryListaTitulosCD_DEVEDOR: TWideStringField; queryListaTitulosNOME_EMPRESA: TStringField; queryListaTitulosVL_ENTRADA: TCurrencyField; queryListaTitulosPR_JUROS: TFloatField; queryListaTitulosVL_JUROS: TCurrencyField; queryListaTitulosPR_MULTA: TFloatField; queryListaTitulosVL_MULTA: TCurrencyField; queryListaTitulosVL_ENCARGOS: TCurrencyField; queryListaTitulosVL_CORRIGIDO: TCurrencyField; queryListaTitulosPR_INDICADOR: TFloatField; queryListaTitulosVL_INDICADOR: TCurrencyField; queryListaTitulosPR_QUITACAO_INDICADOR: TFloatField; queryListaTitulosVL_DESC_QUIT_IND: TCurrencyField; queryListaTitulosPR_QUITACAO_PRINCIPAL: TFloatField; queryListaTitulosVL_DESC_QUIT_PRIN: TCurrencyField; queryListaTitulosPR_QUITACAO_MULTA: TFloatField; queryListaTitulosVL_DESC_QUIT_MULTA: TCurrencyField; queryListaTitulosPR_QUITACAO_JUROS: TFloatField; queryListaTitulosVL_DESC_QUIT_JUROS: TCurrencyField; queryListaTitulosPR_PARCELA_INDICADOR: TFloatField; queryListaTitulosVL_DESC_PAR_IND: TCurrencyField; queryListaTitulosPR_PARCELA_PRINCIPAL: TFloatField; queryListaTitulosVL_DESC_PAR_PRIN: TCurrencyField; queryListaTitulosPR_PARCELA_MULTA: TFloatField; queryListaTitulosVL_DESC_PAR_MULTA: TCurrencyField; queryListaTitulosPR_PARCELA_JUROS: TFloatField; queryListaTitulosVL_DESC_PAR_JUROS: TCurrencyField; queryListaTitulosNR_PARCELAS: TIntegerField; queryListaTitulosVL_DESPESA: TCurrencyField; queryListaTitulosTP_DESPESA: TWideStringField; queryListaTitulosVL_INDICES: TCurrencyField; tabFechamento: TTabSheet; lbl_dtcobranca: TLabel; dtp_diaagendamento: TDateTimePicker; lbl_horacobranca: TLabel; dtp_horaagendamento: TDateTimePicker; lbl_protocolo: TLabel; edt_protocolo: TEdit; lbl_cobradoragendado: TLabel; dblucb_cobradoragendar: TDBLookupComboBox; btn_recalc: TButton; lbl_tfonte: TLabel; edt_fontememo: TEdit; up_fontememo: TUpDown; cb_negritomemo: TCheckBox; mb_fechamento: TMemo; lbl_providencias: TLabel; dbgrd_providencias: TDBGrid; lbl_prov: TLabel; edt_prov: TEdit; btn_concluir: TButton; dbgrd_resumohist: TDBGrid; copiar_conteudo: TMenuItem; dtsCobrador: TDataSource; queryCobradores: TZQuery; queryCobradoresID_USUARIO: TIntegerField; queryCobradoresTX_NOME: TWideStringField; dtsProvidencias: TDataSource; queryHelper: TZQuery; dtsHelper: TDataSource; dtsHistAgenda: TDataSource; ROqryHistAgenda: TZReadOnlyQuery; queryListaTitulosVL_PARCELA: TCurrencyField; queryListaTitulosPR_JUROS_CHEQUE: TFloatField; dbgrd_devedoreslist: TDBGrid; queryListaTitulosVL_EXTRAS: TCurrencyField; dtsCHGEmpresa: TDataSource; dtsIndicadorFinanceiro: TDataSource; dtsEmpresa: TDataSource; lbl_maxindquit: TLabel; lbl_maxprinquit: TLabel; lbl_maxmultaquit: TLabel; lbl_maxjurosquit: TLabel; lbl_maxindpar: TLabel; lbl_maxprinpar: TLabel; lbl_maxmultapar: TLabel; lbl_maxjurospar: TLabel; lbl_maxpar: TLabel; popmnu_incluir: TPopupMenu; mnu_incluir: TMenuItem; mnuretirar: TMenuItem; queryListaTitulosPR_QUITACAO_COR: TFloatField; queryListaTitulosPR_PARCELA_COR: TFloatField; cb_desc_par_cor: TCheckBox; cb_desc_quit_cor: TCheckBox; edt_corquitar: TEdit; ud_corquitar: TUpDown; edt_corpar: TEdit; ud_corpar: TUpDown; lbl_maxparcor: TLabel; lbl_maxquitcor: TLabel; cb_agendar: TCheckBox; DBEdit2: TDBEdit; Label1: TLabel; DBEdit3: TDBEdit; Label2: TLabel; lbl_ddd: TLabel; dbedt_ddd: TDBEdit; dblucb_providencia: TDBLookupComboBox; Label3: TLabel; edt_excentrada: TEdit; cbx_excentrada: TCheckBox; edt_prentrada: TEdit; Label5: TLabel; ud_entrada: TUpDown; lbl_minentrada: TLabel; lbl_maxentrada: TLabel; queryListaTitulosPR_ENTRADA_MIN: TFloatField; queryListaTitulosPR_ENTRADA_MAX: TFloatField; queryListaTitulosPR_ENTRADA: TFloatField; Label6: TLabel; dtp_agendadatahist: TDateTimePicker; Label7: TLabel; dtp_agendahorahist: TDateTimePicker; Label8: TLabel; dblucb_agendacobhist: TDBLookupComboBox; cb_agendahist: TCheckBox; dbmemo_box: TDBMemo; queryListaTitulosVL_PRINCIPAL: TCurrencyField; dbmem_titobs: TDBMemo; Label9: TLabel; mnuFichatitulos: TMenuItem; btn_relacaodivida: TButton; mnu_fichahist: TMenuItem; cbx_txextra: TCheckBox; edt_txextra: TEdit; btntelefones: TButton; rdbdt_pag: TrDBDateTimePicker; lbl_dtpag: TLabel; navEmail: TDBNavigator; dtsEmail: TDataSource; dbgrd_email: TDBGrid; DBEdit4: TDBEdit; pnl_devedores: TPanel; pnl_email: TPanel; qryCampanha: TZReadOnlyQuery; btn_cancelar: TButton; dbgrd_tit: TDBGrid; navtitulos: TDBNavigator; cbx_exjurosparcelar: TCheckBox; edt_excjurosparcela: TEdit; dbdtp_dtcad: TDBDateTimePicker; dbdtp_dtnasc: TDBDateTimePicker; ACBrCEP1: TACBrCEP; DBGrid1: TDBGrid; Label16: TLabel; lbl_dtrecibo: TLabel; queryListaTitulosVL_DESC_IND: TCurrencyField; queryListaTitulosVL_DESC_PRIN: TCurrencyField; queryListaTitulosVL_DESC_MULTA: TCurrencyField; queryListaTitulosVL_DESC_JUROS: TCurrencyField; pnl_contatos: TPanel; Label15: TLabel; dblbl_contatos: TDBText; zroqryProvAgend: TZReadOnlyQuery; Panel12: TPanel; DBRadioGroup1: TDBRadioGroup; Label10: TLabel; rdbdt_recibo: TrDBDateTimePicker; ppmnuQuebraAcordo: TPopupMenu; mnuQuebraAcordo: TMenuItem; ZReadOnlyQuery1: TZReadOnlyQuery; ZReadOnlyQuery1ID_ITEM: TIntegerField; ZReadOnlyQuery1ID_ACORDO: TIntegerField; ZReadOnlyQuery1ID_PARCELA: TIntegerField; ZReadOnlyQuery1ID_ORIGINAL: TIntegerField; ZReadOnlyQuery1ID_DEVEDOR: TIntegerField; queryListaTitulosNR_JUROS: TCurrencyField; queryListaTitulosTP_JUROS: TStringField; dbedt_protocolo: TDBEdit; Label11: TLabel; cp_telddd: TMenuItem; cp_tel: TMenuItem; Label12: TLabel; DBLookupComboBox1: TDBLookupComboBox; tabBoletos: TTabSheet; DBLookupComboBox2: TDBLookupComboBox; Label13: TLabel; Label14: TLabel; DBLookupComboBox3: TDBLookupComboBox; DBLookupComboBox4: TDBLookupComboBox; Label17: TLabel; gbMensagemBoleto: TGroupBox; Label49: TLabel; Label50: TLabel; Label51: TLabel; Label52: TLabel; Label57: TLabel; dbEdtLinha1Boleto: TDBEdit; dbEdtLinha2Boleto: TDBEdit; dbEdtLinha3Boleto: TDBEdit; dbEdtLinha4Boleto: TDBEdit; dbEdtLinha5Boleto: TDBEdit; GroupBox3: TGroupBox; Label34: TLabel; Label35: TLabel; GroupBox4: TGroupBox; Label37: TLabel; Label38: TLabel; GroupBox5: TGroupBox; Label40: TLabel; Label41: TLabel; GroupBox7: TGroupBox; Label45: TLabel; Label46: TLabel; DBLookupComboBox5: TDBLookupComboBox; DBEdit5: TDBEdit; DBEdit6: TDBEdit; DBEdit7: TDBEdit; Label18: TLabel; GroupBox6: TGroupBox; Label19: TLabel; Label20: TLabel; Label21: TLabel; DBLookupComboBox6: TDBLookupComboBox; DBEdit8: TDBEdit; DBEdit9: TDBEdit; DBEdit10: TDBEdit; DBLookupComboBox7: TDBLookupComboBox; DBLookupComboBox8: TDBLookupComboBox; DBLookupComboBox9: TDBLookupComboBox; DBEdit11: TDBEdit; DBEdit12: TDBEdit; DBEdit13: TDBEdit; DBEdit14: TDBEdit; DBEdit15: TDBEdit; DBEdit16: TDBEdit; Label22: TLabel; DBEdit17: TDBEdit; DBEdit18: TDBEdit; Label23: TLabel; DBEdit19: TDBEdit; Label24: TLabel; Label25: TLabel; DBEdit20: TDBEdit; Label26: TLabel; DBEdit21: TDBEdit; Label27: TLabel; DBEdit22: TDBEdit; Label28: TLabel; DBEdit23: TDBEdit; GroupBox8: TGroupBox; DBLookupComboBox10: TDBLookupComboBox; DBGrid2: TDBGrid; DBNavigator1: TDBNavigator; procedure dbedt_cepKeyPress(Sender: TObject; var Key: Char); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure dtsDBDataChange(Sender: TObject; Field: TField); procedure btn_clearmemoClick(Sender: TObject); procedure navPrincipalBeforeAction(Sender: TObject; Button: TNavigateBtn); procedure ACBrCEP1BuscaEfetuada(Sender: TObject); procedure clb_empresasClickCheck(Sender: TObject); procedure dbgrd_titCellClick(Column: TColumn); procedure dbgrd_titDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); procedure Copiar1Click(Sender: TObject); procedure clb_empresasMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure dbgrd_titMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure dbgrd_historicoDblClick(Sender: TObject); procedure dtsEnderecosDataChange(Sender: TObject; Field: TField); procedure dtsTitulosDataChange(Sender: TObject; Field: TField); procedure navtitulosBeforeAction(Sender: TObject; Button: TNavigateBtn); procedure dtsUFDataChange(Sender: TObject; Field: TField); procedure dtsCidadesDataChange(Sender: TObject; Field: TField); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Importao1Click(Sender: TObject); procedure dbcbx_tpchequeClick(Sender: TObject); procedure dtsDBStateChange(Sender: TObject); procedure dtsEnderecosStateChange(Sender: TObject); procedure dtsTelefonesStateChange(Sender: TObject); procedure dtsTitulosStateChange(Sender: TObject); procedure PopupMenu1Popup(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure dtsHistoricoStateChange(Sender: TObject); procedure clb_beneficiarioscalculoClickCheck(Sender: TObject); procedure queryListaTitulosCalcFields(DataSet: TDataSet); procedure pcClientesChange(Sender: TObject); procedure cb_nmultaClick(Sender: TObject); procedure edt_nrparcelasChange(Sender: TObject); procedure dtp_atrasorecalcChange(Sender: TObject); procedure cb_descquitClick(Sender: TObject); procedure cb_descparClick(Sender: TObject); procedure cb_formapagChange(Sender: TObject); procedure edt_indquitarChange(Sender: TObject); procedure edt_principalquitarChange(Sender: TObject); procedure edt_multasquitarChange(Sender: TObject); procedure edt_jurosquitarChange(Sender: TObject); procedure edt_indparcelasChange(Sender: TObject); procedure edt_principalparcelasChange(Sender: TObject); procedure edt_multasparcelasChange(Sender: TObject); procedure edt_jurosparcelasChange(Sender: TObject); procedure lv_titulosChange(Sender: TObject; Item: TListItem; Change: TItemChange); procedure dtp_diaagendamentoChange(Sender: TObject); procedure pcClientesChanging(Sender: TObject; var AllowChange: Boolean); procedure btn_protocoloClick(Sender: TObject); procedure btn_fechamentoClick(Sender: TObject); procedure copiar_conteudoClick(Sender: TObject); procedure btn_recalcClick(Sender: TObject); procedure dtp_horaagendamentoChange(Sender: TObject); procedure dtsCobradorDataChange(Sender: TObject; Field: TField); procedure edt_fontememoExit(Sender: TObject); procedure edt_fontememoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure up_fontememoClick(Sender: TObject; Button: TUDBtnType); procedure cb_negritomemoClick(Sender: TObject); procedure dbgrd_providenciasDblClick(Sender: TObject); procedure btn_concluirClick(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure navenderecosBeforeAction(Sender: TObject; Button: TNavigateBtn); procedure navtelefonesBeforeAction(Sender: TObject; Button: TNavigateBtn); procedure mnuretirarClick(Sender: TObject); procedure mnu_incluirClick(Sender: TObject); procedure edt_nrparcelasExit(Sender: TObject); procedure lv_titulosItemChecked(Sender: TObject; Item: TListItem); procedure dbgrd_telDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); procedure dbgrd_enderecosDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); procedure dbgrd_titTitleClick(Column: TColumn); procedure dbgrd_enderecosTitleClick(Column: TColumn); procedure dbgrd_telTitleClick(Column: TColumn); procedure dbgrd_historicoTitleClick(Column: TColumn); procedure dbgrd_listtitulosTitleClick(Column: TColumn); procedure dbgrd_resumohistTitleClick(Column: TColumn); procedure cb_desc_quit_corClick(Sender: TObject); procedure edt_corquitarChange(Sender: TObject); procedure cb_desc_par_corClick(Sender: TObject); procedure edt_corparChange(Sender: TObject); procedure cb_agendarClick(Sender: TObject); procedure navHistoricoBeforeAction(Sender: TObject; Button: TNavigateBtn); procedure cbx_excentradaClick(Sender: TObject); procedure edt_excentradaChange(Sender: TObject); procedure edt_excentradaKeyPress(Sender: TObject; var Key: Char); procedure edt_prentradaChange(Sender: TObject); procedure cb_agendahistClick(Sender: TObject); procedure lv_titulosColumnClick(Sender: TObject; Column: TListColumn); procedure lv_titulosCompare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); procedure edt_indparcelasKeyPress(Sender: TObject; var Key: Char); procedure edt_principalparcelasKeyPress(Sender: TObject; var Key: Char); procedure edt_multasparcelasKeyPress(Sender: TObject; var Key: Char); procedure edt_jurosparcelasKeyPress(Sender: TObject; var Key: Char); procedure edt_corparKeyPress(Sender: TObject; var Key: Char); procedure edt_indquitarKeyPress(Sender: TObject; var Key: Char); procedure edt_principalquitarKeyPress(Sender: TObject; var Key: Char); procedure edt_multasquitarKeyPress(Sender: TObject; var Key: Char); procedure edt_jurosquitarKeyPress(Sender: TObject; var Key: Char); procedure edt_corquitarKeyPress(Sender: TObject; var Key: Char); procedure mnuFichatitulosClick(Sender: TObject); procedure btn_relacaodividaClick(Sender: TObject); procedure mnu_fichahistClick(Sender: TObject); procedure cbx_txextraClick(Sender: TObject); procedure edt_txextraChange(Sender: TObject); procedure edt_txextraKeyPress(Sender: TObject; var Key: Char); procedure btntelefonesClick(Sender: TObject); procedure dtsEmailStateChange(Sender: TObject); procedure btn_cancelarClick(Sender: TObject); procedure edt_excjurosparcelaChange(Sender: TObject); procedure edt_excjurosparcelaKeyPress(Sender: TObject; var Key: Char); procedure cbx_exjurosparcelarClick(Sender: TObject); procedure Panel1Enter(Sender: TObject); procedure dbedt_cpfcnpjKeyPress(Sender: TObject; var Key: Char); procedure dbrg_tipotelClick(Sender: TObject); procedure dtsTelefonesDataChange(Sender: TObject; Field: TField); procedure mnuQuebraAcordoClick(Sender: TObject); procedure cp_teldddClick(Sender: TObject); procedure cp_telClick(Sender: TObject); procedure DBEdit5KeyPress(Sender: TObject; var Key: Char); procedure DBEdit6KeyPress(Sender: TObject; var Key: Char); procedure DBEdit9KeyPress(Sender: TObject; var Key: Char); procedure DBEdit11KeyPress(Sender: TObject; var Key: Char); procedure DBEdit12KeyPress(Sender: TObject; var Key: Char); procedure DBEdit13KeyPress(Sender: TObject; var Key: Char); procedure DBEdit7KeyPress(Sender: TObject; var Key: Char); procedure DBEdit10KeyPress(Sender: TObject; var Key: Char); procedure DBEdit17KeyPress(Sender: TObject; var Key: Char); procedure DBEdit18KeyPress(Sender: TObject; var Key: Char); procedure DBEdit19KeyPress(Sender: TObject; var Key: Char); procedure DBEdit20KeyPress(Sender: TObject; var Key: Char); procedure DBEdit21KeyPress(Sender: TObject; var Key: Char); procedure DBEdit22KeyPress(Sender: TObject; var Key: Char); procedure DBEdit23KeyPress(Sender: TObject; var Key: Char); procedure DBNavigator1BeforeAction(Sender: TObject; Button: TNavigateBtn); private old_id: Integer; old_id_tit: Integer; ColumnToSort: Integer; ficha_dev: Boolean; id_emps_dev: array of Integer; procedure SetupHackedNavigator(const Navigator: TDBNavigator; const Glyphs: TImageList; S: string; size: Integer); procedure CriarLista; procedure Att_campos; procedure CalcValorParcelas; procedure AdjustCheckListBox; procedure WMMoving(var Msg: TWMMoving); message WM_MOVING; procedure CalcPrice; procedure ChecaPermissoes; function CalculaIdade(Birthday, CurrentDate: TDate): Integer; function FindSubcontrolAtPos(AControl: TControl; AScreenPos, AClientPos: TPoint): TControl; function FindControlAtPos(AScreenPos: TPoint): TControl; // function EscreveTitulos(): TStringDynArray; { Private declarations } public posi: TPoint; parcelamento: array of currency; data_parcelas: array of TDate; nome_cobrador: string; dia_agendado: string; hora_agendado: string; clpbrd: string; pagina: Integer; pesquisa: Integer; estado_db: Boolean; importou: Boolean; fechamento: string; antes: TTime; qtde_titulos: Integer; id_emp: Integer; str_titulos: string; selected_id_chg_empresa: Integer; str_tit: array of Integer; id_emp_calc: Integer; ids_tits_calc: array of Boolean; imp: Boolean; // cbl_hints : array of string; // prevIndex : integer; { Public declarations } function gerar_protocolo(id_devedor: string): string; end; var cadDevedores: TcadDevedores; implementation {$R *.dfm} uses udtmSystem, ufrmMemoBox, uimpDevedores, ufrmCobranca, ufrmEfetuarCobranca, ufrmFechamentoDevedor, ufrmLiberaPermissao, urelDados, ufrmFichaTitulos, urelFichaDivida, urelHistorico, uconfFichaHistorico; // no form show eu monto o checklistbox com as empresas que o devedor tem titulos em aberto // que fica na aba cálculos. Lá, ao selecionar a empresa eu filtro os títulos e mostro no listview // usando esses títulos (querylistatitulos) eu faço todos os cálculos para juros, multa, etc // dentro do oncalc da query e em algumas funções como Att_campos e CalcValorParcelas // o mesmo processo ocorre nas janelas da frmEfetuarCobranca e frmAtendimento, com pequenas diferenças procedure TcadDevedores.AdjustCheckListBox; var i, nMaxWidth, nItemWidth: Integer; begin // ajusta o checklistbox pra ter scroll horizontal // nMaxWidth := clb_empresas.ClientWidth; // for i := 0 to clb_empresas.Items.Count - 1 do // begin // nItemWidth := clb_empresas.Canvas.TextWidth(clb_empresas.Items[i]) + 20; // if (nItemWidth > nMaxWidth) then // nMaxWidth := nItemWidth; // end; // if (nMaxWidth > clb_empresas.ClientWidth) then // begin // clb_empresas.ScrollWidth := nMaxWidth; // end; end; procedure TcadDevedores.Att_campos; var soma_nominal, soma_encargos, soma_corrigido, soma_entrada, soma_juros, soma_multas, soma_indicador { desc_fixo, acr_fixo, soma_indices } : currency; i, n_parcelas, quit_ind, quit_prin, quit_multa, quit_juros, parc_ind, parc_prin, parc_multa, parc_juros, quit_cor, par_cor, minentrada, maxentrada: Integer; begin // atualiza os valores a serem mostrados nos edits soma_nominal := 0.00; soma_encargos := 0.00; soma_corrigido := 0.00; soma_entrada := 0.00; soma_juros := 0.00; soma_multas := 0.00; soma_indicador := 0.00; // soma_indices := 0.00; n_parcelas := 0; quit_ind := 0; quit_prin := 0; quit_multa := 0; quit_juros := 0; quit_cor := 0; minentrada := 0; maxentrada := 0; parc_ind := 0; parc_prin := 0; parc_multa := 0; parc_juros := 0; par_cor := 0; queryListaTitulos.DisableControls; for i := 0 to lv_titulos.Items.Count - 1 do begin if lv_titulos.Items.Item[i].Checked then begin queryListaTitulos.RecNo := i + 1; soma_nominal := soma_nominal + queryListaTitulosVL_TITULO.AsCurrency; soma_encargos := soma_encargos + queryListaTitulosVL_ENCARGOS.AsCurrency; soma_corrigido := soma_corrigido + queryListaTitulosVL_CORRIGIDO. AsCurrency; soma_entrada := soma_entrada + queryListaTitulosVL_ENTRADA.AsCurrency; soma_juros := soma_juros + queryListaTitulosVL_JUROS.AsCurrency; soma_multas := soma_multas + queryListaTitulosVL_MULTA.AsCurrency; soma_indicador := soma_indicador + queryListaTitulosVL_INDICADOR. AsCurrency; // soma_indices := soma_indices + queryListaTitulosVL_INDICES.AsCurrency; if n_parcelas < (queryListaTitulosNR_PARCELAS.AsInteger) then begin n_parcelas := queryListaTitulosNR_PARCELAS.AsInteger; end; if minentrada < (queryListaTitulosPR_ENTRADA_MIN.AsInteger) then begin minentrada := queryListaTitulosPR_ENTRADA_MIN.AsInteger; end; // edt_prentrada.Text := inttostr(minentrada); if maxentrada < (queryListaTitulosPR_ENTRADA_MAX.AsInteger) then begin maxentrada := queryListaTitulosPR_ENTRADA_MAX.AsInteger; end; if quit_ind < (queryListaTitulosPR_QUITACAO_INDICADOR.AsInteger) then begin quit_ind := queryListaTitulosPR_QUITACAO_INDICADOR.AsInteger; end; if quit_prin < (queryListaTitulosPR_QUITACAO_PRINCIPAL.AsInteger) then begin quit_prin := queryListaTitulosPR_QUITACAO_PRINCIPAL.AsInteger; end; if quit_multa < (queryListaTitulosPR_QUITACAO_MULTA.AsInteger) then begin quit_multa := queryListaTitulosPR_QUITACAO_MULTA.AsInteger; end; if quit_juros < (queryListaTitulosPR_QUITACAO_JUROS.AsInteger) then begin quit_juros := queryListaTitulosPR_QUITACAO_JUROS.AsInteger; end; if quit_cor < (queryListaTitulosPR_QUITACAO_COR.AsInteger) then begin quit_cor := queryListaTitulosPR_QUITACAO_COR.AsInteger; end; if parc_ind < (queryListaTitulosPR_PARCELA_INDICADOR.AsInteger) then begin parc_ind := queryListaTitulosPR_PARCELA_INDICADOR.AsInteger; end; if parc_prin < (queryListaTitulosPR_PARCELA_PRINCIPAL.AsInteger) then begin parc_prin := queryListaTitulosPR_PARCELA_PRINCIPAL.AsInteger; end; if parc_multa < (queryListaTitulosPR_PARCELA_MULTA.AsInteger) then begin parc_multa := queryListaTitulosPR_PARCELA_MULTA.AsInteger; end; if parc_juros < (queryListaTitulosPR_PARCELA_JUROS.AsInteger) then begin parc_juros := queryListaTitulosPR_PARCELA_JUROS.AsInteger; end; if par_cor < (queryListaTitulosPR_PARCELA_COR.AsInteger) then begin par_cor := queryListaTitulosPR_PARCELA_COR.AsInteger; end; end; end; // queryListaTitulos.First; queryListaTitulos.EnableControls; edt_somatitulos.Text := CurrToStrF(soma_nominal, ffCurrency, 2, dtmSystem.CusFmt); // edt_indices.Text := CurrToStrF(soma_indices, ffCurrency, 2, dtmSystem.CusFmt); edt_extras.Text := CurrToStrF(soma_encargos, ffCurrency, 2, dtmSystem.CusFmt); // if cbx_txextra.Checked then // begin // soma_corrigido := soma_corrigido + StrToCurr(edt_txextra.Text); // end; edt_vlaquitar.Text := CurrToStrF(soma_corrigido, ffCurrency, 2, dtmSystem.CusFmt); if cbx_excentrada.Checked then begin edt_somaentrada.Text := CurrToStrF(StrToCurr(edt_excentrada.Text), ffCurrency, 2, dtmSystem.CusFmt); end else begin edt_somaentrada.Text := CurrToStrF(soma_entrada, ffCurrency, 2, dtmSystem.CusFmt); end; { end; } edt_somaindicador.Text := CurrToStrF(soma_indicador, ffCurrency, 2, dtmSystem.CusFmt); edt_somamulta.Text := CurrToStrF(soma_multas, ffCurrency, 2, dtmSystem.CusFmt); edt_somajuros.Text := CurrToStrF(soma_juros, ffCurrency, 2, dtmSystem.CusFmt); up_nrparcelas.Max := n_parcelas; lbl_maxpar.Caption := 'Máx: ' + inttostr(n_parcelas); ud_entrada.Min := minentrada; ud_entrada.Max := maxentrada; lbl_minentrada.Caption := 'Min: ' + inttostr(minentrada) + '%'; lbl_maxentrada.Caption := 'Máx: ' + inttostr(maxentrada) + '%'; up_encquitar.Max := quit_ind; lbl_maxindquit.Caption := 'Máx: ' + inttostr(quit_ind) + '%'; up_principalquitar.Max := quit_prin; lbl_maxprinquit.Caption := 'Máx: ' + inttostr(quit_prin) + '%'; up_multasquitar.Max := quit_multa; lbl_maxmultaquit.Caption := 'Máx: ' + inttostr(quit_multa) + '%'; up_jurosquitar.Max := quit_juros; lbl_maxjurosquit.Caption := 'Máx: ' + inttostr(quit_juros) + '%'; ud_corquitar.Max := quit_cor; lbl_maxquitcor.Caption := 'Máx: ' + inttostr(quit_cor) + '%'; up_encparcelas.Max := parc_ind; lbl_maxindpar.Caption := 'Máx: ' + inttostr(parc_ind) + '%'; up_principalparcelas.Max := parc_prin; lbl_maxprinpar.Caption := 'Máx: ' + inttostr(parc_prin) + '%'; up_multasparcelas.Max := parc_multa; lbl_maxmultapar.Caption := 'Máx: ' + inttostr(parc_multa) + '%'; up_jurosparcelas.Max := parc_juros; lbl_maxjurospar.Caption := 'Máx: ' + inttostr(parc_juros) + '%'; ud_corpar.Max := par_cor; lbl_maxparcor.Caption := 'Máx: ' + inttostr(par_cor) + '%'; end; procedure TcadDevedores.btntelefonesClick(Sender: TObject); var i: Integer; begin dtsTelefones.DataSet.First; i := 1; while not dtsTelefones.DataSet.Eof do begin if dtsTelefones.DataSet.FieldByName('TP_ATIVO').AsString <> 'N' then begin dbmemo_box.lines.Add('Telefone nº' + inttostr(i) + ': (' + dtsTelefones.DataSet.FieldByName('nr_ddd').AsString + ')' + dtsTelefones.DataSet.FieldByName('nr_numero').AsString); Inc(i, 1); end; dtsTelefones.DataSet.Next; end; end; procedure TcadDevedores.btn_cancelarClick(Sender: TObject); begin cb_formapag.ItemIndex := 0; edt_prov.Text := ''; edt_protocolo1.Text := ''; edt_protocolo1.Text := ''; edt_nrparcelas.Text := '0'; edt_nrparcelas.OnChange(self); cb_agendar.Checked := false; btn_protocolo.Enabled := True; clb_beneficiarioscalculo.Enabled := True; lv_titulos.Enabled := True; edt_nrparcelas.Enabled := True; up_nrparcelas.Enabled := True; cb_nmulta.Enabled := True; dtp_atrasorecalc.Enabled := True; cb_descquit.Enabled := True; cb_descpar.Enabled := True; pcClientes.TabIndex := 0; fechamento := 'olhando'; end; procedure TcadDevedores.btn_clearmemoClick(Sender: TObject); begin dbmem_tel.lines.Clear; end; procedure TcadDevedores.btn_concluirClick(Sender: TObject); // var // nao_marcou: Boolean; // i{, id_emp}: Integer; // count_titulos: Integer; // str_titulos: string; begin if not dtmSystem.tblProvidencias.Active then begin dtmSystem.tblProvidencias.Open; end; if edt_prov.Text = '' then begin MessageDlg('Por favor selecione uma providência.', mtWarning, [mbOK], 0); abort; end; with zroqryProvAgend do begin SQL.Clear; SQL.Add('select * from chg_providencias where tp_forcaagenda = ' + QuotedStr('Sim') + ' and id_providencia = ' + dtmSystem.tblProvidenciasID_PROVIDENCIA.AsString); Open; end; if (zroqryProvAgend.RecordCount = 1) and (cb_agendar.Checked = false) then begin MessageDlg ('Esta providência exige que você agende o devedor. Por favor agende-o.', mtWarning, [mbOK], 0); abort; end; if (dblucb_cobradoragendar.keyvalue < 0) and (cb_agendar.Checked = True) then begin MessageDlg ('Por favor selecione um cobrador para qual será agendada a cobrança.', mtWarning, [mbOK], 0); abort; end else begin if (cb_agendar.Checked = True) then begin if MessageDlg('Este acionamento possui um agendamento. Deseja continuar?', mtWarning, mbYesNo, 0) = mrNo then begin abort; end; if (dtp_horaagendamento.Time < Timeof(Now)) and (dtp_diaagendamento.Date <= dateof(Now)) then begin MessageDlg ('Você está selecionando um horário para agendamento menor que a hora atual. Por favor verifique o horário do agendamento.', mtWarning, [mbOK], 0); abort; end; end; // queryListaDevedores.RecNo := recno_devedor; if not dtmSystem.tblHistorico.Active then begin dtmSystem.tblHistorico.Open; end; if not dtmSystem.tblAgenda.Active then begin dtmSystem.tblAgenda.Open; end; if not dtmSystem.tblProtocolo.Active then begin dtmSystem.tblProtocolo.Open; end; if dtmSystem.tblProvidencias.ControlsDisabled then begin dtmSystem.tblProvidencias.EnableControls; end; cb_formapag.ItemIndex := 0; // count_titulos := 0; edt_nrparcelas.Text := '0'; edt_nrparcelas.OnChange(self); // nao_marcou := true; dtmSystem.tblProvidencias.Locate('TX_NOME', edt_prov.Text, []); edt_prov.Text := ''; // verifica se o cara cobrado era de uma agenda dtmSystem.tblAgenda.Refresh; while dtmSystem.tblAgenda.Locate('ID_DEVEDOR;TP_SITUACAO', VarArrayOf([dtsDB.DataSet.FieldByName('ID_DEVEDOR').AsInteger, 'A']), [] ) = True do begin dtmSystem.tblAgenda.Edit; dtmSystem.tblAgendaTP_SITUACAO.AsString := 'B'; dtmSystem.tblAgenda.Post; end; // for i := 0 to lv_titulos.Items.Count - 1 do // begin // if lv_titulos.Items[i].Checked then // begin // queryListaTitulos.RecNo := i + 1; // // nao_marcou := false; // // end; // str_titulos := str_titulos + queryListaTitulosID_TITULO.AsString + ';'; // id_emp := queryListaTitulosID_EMPRESA.AsInteger; // Inc(count_titulos); // end; // end; // with dtmSystem do // begin // tblCampanhaDevedores.Filtered := false; // while tblCampanhaDevedores.Locate('ID_DEVEDOR', // dtsDevedores.DataSet.FieldByName('ID_DEVEDOR').AsInteger, []) do // begin // // dtmSystem.tblCampanhaDevedores.Edit; // // dtmSystem.tblCampanhaDevedoresTP_ESTADO.AsString := 'C'; // // // Saiu da campanha por agendamento // // dtmSystem.tblCampanhaDevedoresTP_COBRANDO.AsInteger := -1; // // dtmSystem.tblCampanhaDevedores.Post; // dtmSystem.tblCampanhaDevedores.Delete; // end; // end; dtmSystem.ZSQLProcessor1.Script.Text := 'delete from chg_campanhas_devedores where id_devedor = ' + QuotedStr(dtmSystem.dtsDevedores.DataSet.FieldByName('ID_DEVEDOR') .AsString); dtmSystem.ZSQLProcessor1.Execute; // abre um novo histórico com a providencia selecionada e o texto montado dtmSystem.tblHistorico.Append; dtmSystem.tblHistoricoID_DEVEDOR.AsString := dtmSystem.tblDevedoresID_DEVEDOR.AsString; dtmSystem.tblHistoricoID_TITULOS.AsString := str_titulos; dtmSystem.tblHistoricoID_PROVIDENCIA.AsString := dtmSystem.tblProvidenciasID_PROVIDENCIA.AsString; dtmSystem.tblHistoricoDT_CONTATO.AsDateTime := Now; dtmSystem.tblHistoricoCD_PROTOCOLO.AsString := edt_protocolo.Text; dtmSystem.tblHistoricoTL_MEMO.AsString := mb_fechamento.Text; dtmSystem.tblHistorico.Post; if cb_agendar.Checked then // agenda pra outro cobrador begin dtp_diaagendamentoChange(self); dtp_horaagendamentoChange(self); // dtsCobradorDataChange(self,queryCobradores.FieldByName('TX_NOME')); with dtmSystem do begin tblAgenda.Append; tblAgendaID_COBRADOR.AsInteger := dblucb_cobradoragendar.keyvalue; tblAgendaID_DEVEDOR.AsInteger := dtmSystem.tblDevedoresID_DEVEDOR.AsInteger; tblAgendaDT_AGENDADA.AsDateTime := dtp_diaagendamento.Date; tblAgendaHR_AGENDADA.AsDateTime := dtp_horaagendamento.Time; tblAgendaDT_QUE_AGENDOU.AsDateTime := Now; tblAgendaQUEM_AGENDOU.AsInteger := dtmSystem.id_usuario; tblAgenda.Post; end; end; { dtmSystem.tblProtocolo.Append; // preciso revisar protocolo pra usar no atendimento // não preciso mais dtmSystem.tblProtocoloCD_PROTOCOLO.AsString := edt_protocolo.Text; // guardava aqui o que cobrador selecionou na tela dtmSystem.tblProtocoloQNT_TITULOS.AsInteger := qtde_titulos; // pra agilizar no atendimento dtmSystem.tblProtocoloID_EMPRESA.AsInteger := id_emp; dtmSystem.tblProtocoloID_TITULOS.AsString := str_titulos; dtmSystem.tblProtocoloID_DEVEDOR.AsString := dtmSystem.tblDevedoresID_DEVEDOR.AsString; dtmSystem.tblProtocoloVL_ENTRADA.AsCurrency := StrToCurr(StringReplace(copy(edt_somaentrada.Text, 4, Length(edt_somaentrada.Text) - 3), '.', '', [rfReplaceAll, rfIgnoreCase])); dtmSystem.tblProtocoloPR_ENTRADA.AsFloat := strtofloat(edt_prentrada.Text); dtmSystem.tblProtocoloVL_JUROS.AsCurrency := StrToCurr(StringReplace(copy(edt_somajuros.Text, 4, Length(edt_somajuros.Text) - 3), '.', '', [rfReplaceAll, rfIgnoreCase])); // if cb_nmulta.Checked then // begin // dtmSystem.tblProtocoloVL_MULTA.AsCurrency := 0; // end // else // begin dtmSystem.tblProtocoloVL_MULTA.AsCurrency := StrToCurr(StringReplace(copy(edt_somamulta.Text, 4, Length(edt_somamulta.Text) - 3), '.', '', [rfReplaceAll, rfIgnoreCase])); // end; dtmSystem.tblProtocoloVL_INDICADOR.AsCurrency := StrToCurr(StringReplace(copy(edt_somaindicador.Text, 4, Length(edt_somaindicador.Text) - 3), '.', '', [rfReplaceAll, rfIgnoreCase])); dtmSystem.tblProtocoloVL_CORRIGIDO.AsCurrency := StrToCurr(StringReplace(copy(edt_vlaquitar.Text, 4, Length(edt_vlaquitar.Text) - 3), '.', '', [rfReplaceAll, rfIgnoreCase])); if cb_descquit.Checked then begin dtmSystem.tblProtocoloTP_DESC_QUIT.AsString := 'S'; end else begin dtmSystem.tblProtocoloTP_DESC_QUIT.AsString := 'N'; end; if cb_desc_quit_cor.Enabled then begin dtmSystem.tblProtocoloTP_DESC_QUIT_COR.AsString := 'S'; end else begin dtmSystem.tblProtocoloTP_DESC_QUIT_COR.AsString := 'N'; end; dtmSystem.tblProtocoloPR_QUIT_JUROS.AsFloat := strtofloat(edt_jurosquitar.Text); dtmSystem.tblProtocoloPR_QUIT_MULTA.AsFloat := strtofloat(edt_multasquitar.Text); dtmSystem.tblProtocoloPR_QUIT_INDICADOR.AsFloat := strtofloat(edt_indquitar.Text); dtmSystem.tblProtocoloPR_QUIT_PRINCIPAL.AsFloat := strtofloat(edt_principalquitar.Text); dtmSystem.tblProtocoloPR_QUIT_COR.AsFloat := strtofloat(edt_corquitar.Text); if cb_descpar.Checked then begin dtmSystem.tblProtocoloTP_DESC_PAR.AsString := 'S'; end else begin dtmSystem.tblProtocoloTP_DESC_PAR.AsString := 'N'; end; if cb_desc_par_cor.Enabled then begin dtmSystem.tblProtocoloTP_DESC_PAR_COR.AsString := 'S'; end else begin dtmSystem.tblProtocoloTP_DESC_PAR_COR.AsString := 'N'; end; dtmSystem.tblProtocoloPR_PARCELAR_JUROS.AsFloat := strtofloat(edt_jurosparcelas.Text); dtmSystem.tblProtocoloPR_PARCELAR_MULTA.AsFloat := strtofloat(edt_multasparcelas.Text); dtmSystem.tblProtocoloPR_PARCELAR_INDICADOR.AsFloat := strtofloat(edt_indparcelas.Text); dtmSystem.tblProtocoloPR_PARCELAR_PRINCIPAL.AsFloat := strtofloat(edt_principalparcelas.Text); dtmSystem.tblProtocoloPR_PARCELAR_COR.AsFloat := strtofloat(edt_corpar.Text); dtmSystem.tblProtocoloNR_PARCELAS.AsInteger := strtoint(edt_nrparcelas.Text); dtmSystem.tblProtocoloDT_PROTOCOLO.AsDateTime := dtp_atrasorecalc.Date; if cb_formapag.Text = 'Dinheiro' then begin dtmSystem.tblProtocoloTP_PAG.AsString := 'DI'; end; if cb_formapag.Text = 'Cheque' then begin dtmSystem.tblProtocoloTP_PAG.AsString := 'CQ'; end; if cb_formapag.Text = 'Débito' then begin dtmSystem.tblProtocoloTP_PAG.AsString := 'DB'; end; if cb_formapag.Text = 'Crédito' then begin dtmSystem.tblProtocoloTP_PAG.AsString := 'CR'; end; dtmSystem.tblProtocolo.Post; } // if nao_marcou then // begin // dtmSystem.tblHistorico.Edit; // dtmSystem.tblHistoricoID_PROVIDENCIA.AsString := // dtmSystem.tblProvidenciasID_PROVIDENCIA.AsString; // dtmSystem.tblHistoricoDT_CONTATO.AsDateTime := Now; // dtmSystem.tblHistoricoCD_PROTOCOLO.AsString := edt_protocolo.Text; // dtmSystem.tblHistoricoTL_MEMO.AsString := mb_fechamento.Text; // // dtmSystem.tblHistorico.Post; // end; dtp_agendadatahist.Date := Date; dtp_agendahorahist.Time := Timeof(Now); dtp_diaagendamento.Date := Date; dtp_horaagendamento.Date := Timeof(Now); cb_agendar.Checked := false; btn_protocolo.Enabled := True; clb_beneficiarioscalculo.Enabled := True; lv_titulos.Enabled := True; edt_nrparcelas.Enabled := True; up_nrparcelas.Enabled := True; cb_nmulta.Enabled := True; dtp_atrasorecalc.Enabled := True; cb_descquit.Enabled := True; cb_descpar.Enabled := True; pcClientes.TabIndex := 0; fechamento := 'olhando'; end; end; procedure TcadDevedores.btn_fechamentoClick(Sender: TObject); var selecionado: Boolean; i { , h, k } : Integer; // titulos: array of string; begin selecionado := false; for i := 0 to lv_titulos.Items.Count - 1 do begin if lv_titulos.Items[i].Checked = True then begin selecionado := True; end; end; if selecionado = True then begin dtmSystem.tblProvidencias.Open; // clb_beneficiarioscalculo.Enabled := false; // lv_titulos.Enabled := false; // edt_nrparcelas.Enabled := false; // up_nrparcelas.Enabled := false; // cb_nmulta.Enabled := false; // dtp_atrasorecalc.Enabled := false; // cb_descquit.Enabled := false; // cb_descpar.Enabled := false; // // if btn_protocolo.Enabled then // begin // edt_protocolo.Text := // gerar_protocolo(dtmSystem.tblDevedoresID_DEVEDOR.AsString); // edt_protocolo1.Text := edt_protocolo.Text; // btn_protocolo.Enabled := false; // end; // // fechamento := 'fechamento'; // pcClientes.TabIndex := 6; // mb_fechamento.SetFocus; // // mb_fechamento.Clear; // // mb_fechamento.Lines.Add('Cobrador: ' + dtmSystem.tx_usuario); // mb_fechamento.Lines.Add(''); // mb_fechamento.Lines.Add(DateToStr(Date) + ' - ' + TimeToStr(Time)); // mb_fechamento.Lines.Add(''); // // if not dtmSystem.tblTelefones.Active then // begin // dtmSystem.tblTelefones.Open; // end; // dtmSystem.tblTelefones.First; // h := 1; // while not dtmSystem.tblTelefones.Eof do // begin // mb_fechamento.Lines.Add('Telefone nº' + inttostr(h) + ': ' + // dtmSystem.tblTelefonesNR_NUMERO.AsString + ' - Situação: '); // dtmSystem.tblTelefones.Next; // Inc(h); // end; // // dtmSystem.tblTelefones.Close; // // mb_fechamento.Lines.Add(''); // // mb_fechamento.Lines.Add(dtmSystem.tblDevedoresTX_NOME.AsString + // // ' retornou a ligação.'); // // mb_fechamento.Lines.Add(''); // // setlength(titulos, Length(EscreveTitulos())); // for k := 0 to Length(titulos) - 1 do // begin // titulos[k] := EscreveTitulos()[k]; // end; // if Length(titulos) > 1 then // begin // mb_fechamento.Lines.Add('Foram cobrados os títulos:'); // mb_fechamento.Lines.Add(''); // end // else // begin // mb_fechamento.Lines.Add('Foi cobrado o título:'); // mb_fechamento.Lines.Add(''); // end; // for i := 0 to Length(titulos) - 1 do // begin // mb_fechamento.Lines.Add(titulos[i]); // end; // mb_fechamento.Lines.Add(''); // mb_fechamento.Lines.Add(''); // mb_fechamento.Lines.Add('ADICIONAR TIPO DE NEGOCIAÇÃO MANUALMENTE.'); // mb_fechamento.Lines.Add(''); // mb_fechamento.Lines.Add(''); // // mb_fechamento.Lines.Add('Forma de pagamento:'); // // mb_fechamento.Lines.Add('Data para pagamento: ' + // // DateToStr(dtp_atrasorecalc.Date)); // // mb_fechamento.Lines.Add('Valor total corrigido: ' + // // edt_vlaquitar.Text + '.'); // // mb_fechamento.Lines.Add('Valor total nominal: ' + // // edt_somatitulos.Text + '.'); // // if cb_nmulta.Checked then // // begin // // mb_fechamento.Lines.Add('Não foi cobrado multa.'); // // end // // else // // begin // // mb_fechamento.Lines.Add('Valor total da multa: ' + // // edt_somamulta.Text + '.'); // // end; // // mb_fechamento.Lines.Add('Valor total de juros: ' + // // edt_somajuros.Text + '.'); // // mb_fechamento.Lines.Add('Valor total de encargos: ' + // // edt_somaindicador.Text + '.'); // // if cb_descquit.Checked then // // begin // // mb_fechamento.Lines.Add // // ('Foi concedido descontos conforme a seguir: (QUITAÇÃO)'); // // mb_fechamento.Lines.Add('Porcentagem sobre principal: ' + // // edt_principalquitar.Text + '%.'); // // mb_fechamento.Lines.Add('Porcentagem sobre multa: ' + // // edt_multasquitar.Text + '%.'); // // mb_fechamento.Lines.Add('Porcentagem sobre juros: ' + // // edt_jurosquitar.Text + '%.'); // // mb_fechamento.Lines.Add('Porcentagem sobre encargos: ' + // // edt_indquitar.Text + '%.'); // // mb_fechamento.Lines.Add('Porcentagem sobre encargos: ' + // // edt_corquitar.Text + '%.') // // end; // // mb_fechamento.Lines.Add('Forma de Pagamento sugerida: ' + cb_formapag.Text); // // mb_fechamento.Lines.Add(''); // // mb_fechamento.Lines.Add('Quantidade de parcelas: ' + // // edt_nrparcelas.Text + '.'); // // copiar_conteudoClick(Copiar1); // // mb_fechamento.Lines.Add(clpbrd); // // if cb_descpar.Checked then // // begin // // mb_fechamento.Lines.Add // // ('Foi concedido descontos conforme a seguir: (PARCELAMENTO)'); // // mb_fechamento.Lines.Add('Porcentagem sobre principal: ' + // // edt_principalparcelas.Text + '%.'); // // mb_fechamento.Lines.Add('Porcentagem sobre multa: ' + // // edt_multasparcelas.Text + '%.'); // // mb_fechamento.Lines.Add('Porcentagem sobre juros: ' + // // edt_jurosparcelas.Text + '%.'); // // mb_fechamento.Lines.Add('Porcentagem sobre encargos: ' + // // edt_indparcelas.Text + '%.'); // // mb_fechamento.Lines.Add('Porcentagem sobre encargos: ' + // // edt_corpar.Text + '%.'); // // end; // // mb_fechamento.Lines.Add('Forma de Pagamento sugerida: ' + cb_formapag.Text); with TfrmFechamentoDevedor.Create(self) do begin ShowModal; if ModalResult = mrOk then begin fechamento := 'fechamento'; pcClientes.TabIndex := 6; btn_protocoloClick(self); mb_fechamento.SetFocus; end; end; end else begin MessageDlg ('Por favor selecione um título primeiro para realizar o fechamento.', mtWarning, [mbOK], 0); end; end; procedure TcadDevedores.btn_protocoloClick(Sender: TObject); begin if edt_protocolo.Text = '' then begin edt_protocolo.Text := gerar_protocolo (dtmSystem.tblDevedoresID_DEVEDOR.AsString); edt_protocolo1.Text := edt_protocolo.Text; btn_protocolo.Enabled := false; end; end; procedure TcadDevedores.btn_recalcClick(Sender: TObject); begin // zera algumas variáveis e coisas usadas no cálculo e no fechamento dia_agendado := '__/__/____'; hora_agendado := '__:__'; nome_cobrador := '__________'; pcClientes.TabIndex := 5; clb_beneficiarioscalculo.Enabled := True; lv_titulos.Enabled := True; edt_nrparcelas.Enabled := True; up_nrparcelas.Enabled := True; cb_nmulta.Enabled := True; dtp_atrasorecalc.Enabled := True; cb_descquit.Enabled := True; cb_descpar.Enabled := True; cb_agendar.Checked := false; end; procedure TcadDevedores.btn_relacaodividaClick(Sender: TObject); var i, j: Integer; str_filter: string; begin if queryListaTitulos.IsEmpty then begin MessageDlg('Por favor selecione uma empresa.', mtWarning, [mbOK], 0); abort; end else begin ficha_dev := True; str_filter := ''; queryListaTitulos.DisableControls; for j := 0 to Length(str_tit) - 1 do begin // queryListaTitulos.RecNo := str_tit[j]; str_filter := str_filter + 'ID_TITULO = ' + inttostr(str_tit[j]) + ' OR '; end; queryListaTitulos.EnableControls; if Length(str_tit) > 0 then begin setlength(str_filter, Length(str_filter) - 3); queryListaTitulos.Filtered := false; queryListaTitulos.Filter := str_filter; queryListaTitulos.Filtered := True; end; relFichaDivida := TrelFichaDivida.Create(self); with relFichaDivida do begin form := 'devedor'; RLLabel7.Caption := RLLabel7.Caption + DateToStr(dtp_atrasorecalc.Date); RLLabel7.left := floor(frbnd_dados.Width / 2) - floor(RLLabel7.Width / 2); if cb_descquit.Checked then begin frlbl_tipodesc.Caption := 'Desconto concedido ao quitar.'; RLBand4.Visible := false; if cb_nmulta.Checked then begin frlbl_descmulta.Caption := 'Desc. Multa: 100%'; end else begin frlbl_descmulta.Caption := 'Desc. Multa: ' + edt_multasquitar.Text + '%'; end; frlbl_descind.Caption := 'Desc. Ind. Fin.: ' + edt_indquitar.Text + '%'; frlbl_descprin.Caption := 'Desc. Principal: ' + edt_principalquitar.Text + '%'; frlbl_descjuros.Caption := 'Desc. Juros: ' + edt_jurosquitar.Text + '%'; if cb_desc_quit_cor.Checked then begin frlbl_desccorrigido.Caption := 'Desc. Corrigido: ' + edt_corquitar.Text + '%'; end else begin frlbl_desccorrigido.Caption := ''; end; end; if cb_descpar.Checked then begin frlbl_tipodesc.Caption := 'Desconto concedido ao parcelar.'; RLBand1.Visible := false; RLBand2.Visible := false; RLBand3.Visible := false; if cb_nmulta.Checked then begin frlbl_descmulta.Caption := 'Desc. Multa: 100%'; end else begin frlbl_descmulta.Caption := 'Desc. Multa: ' + edt_multasparcelas.Text + '%'; end; frlbl_descind.Caption := 'Desc. Ind. Fin.: ' + edt_indparcelas.Text + '%'; frlbl_descprin.Caption := 'Desc. Principal: ' + edt_principalparcelas.Text + '%'; frlbl_descjuros.Caption := 'Desc. Juros: ' + edt_jurosparcelas.Text + '%'; if cb_desc_par_cor.Checked then begin frlbl_desccorrigido.Caption := 'Desc. Corrigido: ' + edt_corpar.Text + '%'; end else begin frlbl_desccorrigido.Caption := ''; end; end; if not(cb_descquit.Checked) and not(cb_descpar.Checked) then begin RLBand5.Visible := false; frlbl_tipodesc.Caption := ''; end; j := 0; if Length(str_tit) = 0 then begin mnu_incluir.OnClick(self); end; queryListaTitulos.Refresh; Att_campos; setlength(lbl_parcelas, strtoint(copy(lbl_maxpar.Caption, 6, Length(lbl_maxpar.Caption) - 5))); for i := 0 to strtoint(copy(lbl_maxpar.Caption, 6, Length(lbl_maxpar.Caption) - 5)) - 1 do begin edt_nrparcelas.Text := inttostr(i + 1); queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; lbl_parcelas[i] := TRLLabel.Create(relFichaDivida); RLBand4.Height := 60 + (22 * (i div 4)); lbl_parcelas[i].Top := 44 + (22 * (i div 4)); lbl_parcelas[i].Caption := inttostr(i + 1) + 'x ' + CurrToStrF(parcelamento[0], ffCurrency, 2, dtmSystem.CusFmt); lbl_parcelas[i].Parent := RLBand4; lbl_parcelas[i].left := j * 200; Inc(j, 1); if j = 4 then begin j := 0; end; end; if cbx_excentrada.Checked then begin frlbl_entrada.Caption := frlbl_entrada.Caption + edt_somaentrada.Text; end else begin if dtmSystem.tblCHGEmpresaTP_ENTRADA.AsString = 'PA' then begin frlbl_entrada.Caption := frlbl_entrada.Caption + 'Mesmo valor da parcela'; end else begin frlbl_entrada.Caption := frlbl_entrada.Caption + edt_somaentrada.Text; end; end; edt_nrparcelas.Text := inttostr(0); queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; RLReport1.Preview(); queryListaTitulos.Filtered := false; mnuretirar.OnClick(self); setlength(str_tit, 0); end; ficha_dev := false; end; end; procedure TcadDevedores.CalcPrice; var valor, juros, parcela, par_extra: currency; dividendo: double; qtd: Integer; begin qtd := strtoint(edt_nrparcelas.Text); if dtmSystem.tblPrCartao.Locate('NR_PARCELA', qtd, []) then begin if cbx_excentrada.Checked then begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblPrCartaoPR_JUROS.AsFloat / 100); end; dividendo := (1 - (1 / (power(1 + (dtmSystem.tblPrCartaoPR_JUROS.AsFloat / 100), qtd)))); parcela := ((valor * juros) / dividendo); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / qtd; parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; end else begin if dtsCHGEmpresa.DataSet.FieldByName('TP_ENTRADA').AsString = 'PO' then begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblPrCartaoPR_JUROS.AsFloat / 100); end; dividendo := (1 - (1 / (power(1 + (dtmSystem.tblPrCartaoPR_JUROS.AsFloat / 100), qtd)))); parcela := ((valor * juros) / dividendo); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / qtd; parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; end else begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblPrCartaoPR_JUROS.AsFloat / 100); end; dividendo := (1 - (1 / (power(1 + (dtmSystem.tblPrCartaoPR_JUROS.AsFloat / 100), qtd + 1)))); parcela := ((valor * juros) / dividendo); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / (qtd + 1); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; queryListaTitulosVL_ENTRADA.AsCurrency := parcela; end; end; end else begin queryListaTitulosVL_PARCELA.AsCurrency := 0; raise Exception.Create ('Não existe % de juros para quantidade de parcelas selecionada. Por favor contate o administrador.'); end; { if cbx_excentrada.Checked then begin case strtoint(edt_nrparcelas.Text) of 1: begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblEmpresaPR_CREDVISTA.AsFloat / 100); end; dividendo := (1 - (1 / (power(1 + (dtmSystem.tblEmpresaPR_CREDVISTA.AsFloat / 100), strtoint(edt_nrparcelas.Text))))); parcela := ((valor * juros) / dividendo); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / strtoint(edt_nrparcelas.Text); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; end; 2, 3: begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblEmpresaPR_CRED3.AsFloat / 100); end; dividendo := (1 - (1 / (power(1 + (dtmSystem.tblEmpresaPR_CRED3.AsFloat / 100), strtoint(edt_nrparcelas.Text))))); parcela := ((valor * juros) / dividendo); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / strtoint(edt_nrparcelas.Text); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; end; 4, 5, 6: begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblEmpresaPR_CRED6.AsFloat / 100); end; dividendo := (1 - (1 / (power(1 + (dtmSystem.tblEmpresaPR_CRED6.AsFloat / 100), strtoint(edt_nrparcelas.Text))))); parcela := ((valor * juros) / dividendo); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / strtoint(edt_nrparcelas.Text); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; end; 7, 8, 9, 10, 11, 12: begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblEmpresaPR_CRED12.AsFloat / 100); end; dividendo := (1 - (1 / (power(1 + (dtmSystem.tblEmpresaPR_CRED12.AsFloat / 100), strtoint(edt_nrparcelas.Text))))); parcela := ((valor * juros) / dividendo); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / strtoint(edt_nrparcelas.Text); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; end; end; end else begin if dtsCHGEmpresa.DataSet.FieldByName('TP_ENTRADA').AsString = 'PO' then begin case strtoint(edt_nrparcelas.Text) of 1: begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblEmpresaPR_CREDVISTA.AsFloat / 100); end; dividendo := (1 - (1 / (power(1 + (dtmSystem.tblEmpresaPR_CREDVISTA.AsFloat / 100), strtoint(edt_nrparcelas.Text))))); parcela := ((valor * juros) / dividendo); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / strtoint(edt_nrparcelas.Text); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; end; 2, 3: begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblEmpresaPR_CRED3.AsFloat / 100); end; dividendo := (1 - (1 / (power(1 + (dtmSystem.tblEmpresaPR_CRED3.AsFloat / 100), strtoint(edt_nrparcelas.Text))))); parcela := ((valor * juros) / dividendo); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / strtoint(edt_nrparcelas.Text); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; end; 4, 5, 6: begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblEmpresaPR_CRED6.AsFloat / 100); end; dividendo := (1 - (1 / (power(1 + (dtmSystem.tblEmpresaPR_CRED6.AsFloat / 100), strtoint(edt_nrparcelas.Text))))); parcela := ((valor * juros) / dividendo); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / strtoint(edt_nrparcelas.Text); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; end; 7, 8, 9, 10, 11, 12: begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblEmpresaPR_CRED12.AsFloat / 100); end; dividendo := (1 - (1 / (power(1 + (dtmSystem.tblEmpresaPR_CRED12.AsFloat / 100), strtoint(edt_nrparcelas.Text))))); parcela := ((valor * juros) / dividendo); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / strtoint(edt_nrparcelas.Text); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; end; end; end else begin case strtoint(edt_nrparcelas.Text) of 1: begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblEmpresaPR_CREDVISTA.AsFloat / 100); end; dividendo := (1 - (1 / (power(1 + (dtmSystem.tblEmpresaPR_CREDVISTA.AsFloat / 100), strtoint(edt_nrparcelas.Text) + 1)))); parcela := ((valor * juros) / dividendo); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / (strtoint(edt_nrparcelas.Text) + 1); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; queryListaTitulosVL_ENTRADA.AsCurrency := parcela; end; 2, 3: begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblEmpresaPR_CRED3.AsFloat / 100); end; dividendo := (1 - (1 / (power(1 + (dtmSystem.tblEmpresaPR_CRED3.AsFloat / 100), strtoint(edt_nrparcelas.Text) + 1)))); parcela := ((valor * juros) / dividendo); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / (strtoint(edt_nrparcelas.Text) + 1); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; queryListaTitulosVL_ENTRADA.AsCurrency := parcela; end; 4, 5, 6: begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblEmpresaPR_CRED6.AsFloat / 100); end; dividendo := (1 - (1 / (power(1 + (dtmSystem.tblEmpresaPR_CRED6.AsFloat / 100), strtoint(edt_nrparcelas.Text) + 1)))); parcela := ((valor * juros) / dividendo); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / (strtoint(edt_nrparcelas.Text) + 1); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; queryListaTitulosVL_ENTRADA.AsCurrency := parcela; end; 7, 8, 9, 10, 11, 12: begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblEmpresaPR_CRED12.AsFloat / 100); end; dividendo := (1 - (1 / (power(1 + (dtmSystem.tblEmpresaPR_CRED12.AsFloat / 100), strtoint(edt_nrparcelas.Text) + 1)))); parcela := ((valor * juros) / dividendo); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / (strtoint(edt_nrparcelas.Text) + 1); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; queryListaTitulosVL_ENTRADA.AsCurrency := parcela; end; end; end; end; } end; function TcadDevedores.CalculaIdade(Birthday, CurrentDate: TDate): Integer; var Month, Day, Year, CurrentYear, CurrentMonth, CurrentDay: Word; begin DecodeDate(Birthday, Year, Month, Day); DecodeDate(CurrentDate, CurrentYear, CurrentMonth, CurrentDay); if (Year = CurrentYear) and (Month = CurrentMonth) and (Day = CurrentDay) then begin Result := 0; end else begin Result := CurrentYear - Year; if (Month > CurrentMonth) then Dec(Result) else begin if Month = CurrentMonth then if (Day > CurrentDay) then Dec(Result); end; end; end; procedure TcadDevedores.CalcValorParcelas; var i, j, k, Y: Integer; data_helper: TDate; dia_antes, dia_depois, mes, ano: Word; begin // Cálculo do valor de cada parcela e seu respectivo vencimento setlength(parcelamento, 0); lv_parcelas.Clear; if strtoint(edt_nrparcelas.Text) >= 1 then begin setlength(parcelamento, strtoint(edt_nrparcelas.Text)); // queryListaTitulos.DisableControls; for i := 0 to lv_titulos.Items.Count - 1 do begin if lv_titulos.Items[i].Checked then begin queryListaTitulos.RecNo := i + 1; for j := 0 to strtoint(edt_nrparcelas.Text) - 1 do begin parcelamento[j] := parcelamento[j] + queryListaTitulosVL_PARCELA.AsCurrency; end; end; end; // queryListaTitulos.EnableControls; lv_parcelas.Items.Add; lv_parcelas.Items[0].Caption := 'Entrada'; { if cb_nmulta.Checked then begin lv_parcelas.Items[0].SubItems.Add(CurrToStrF(valor_entrada, ffCurrency, 2, dtmSystem.CusFmt)); end else begin } lv_parcelas.Items[0].SubItems.Add(edt_somaentrada.Text); // end; for k := 0 to Length(parcelamento) - 1 do begin lv_parcelas.Items.Add; lv_parcelas.Items[k + 1].Caption := 'Parcela nº ' + inttostr(k + 1); lv_parcelas.Items[k + 1].SubItems.Add(CurrToStrF(parcelamento[k], ffCurrency, 2, dtmSystem.CusFmt)); end; setlength(data_parcelas, strtoint(edt_nrparcelas.Text) + 1); data_helper := dtp_atrasorecalc.Date; DecodeDate(dtp_atrasorecalc.Date, ano, mes, dia_antes); for Y := 0 to strtoint(edt_nrparcelas.Text) do begin data_parcelas[Y] := data_helper; data_helper := IncMonth(data_helper); DecodeDate(data_helper, ano, mes, dia_depois); if (mes = 3) and (dia_antes = 29) and (dia_depois = 28) then begin data_helper := IncDay(data_helper); end; if (mes = 3) and (dia_antes = 30) and (dia_depois = 28) then begin data_helper := IncDay(data_helper, 2); end; if (mes = 3) and (dia_antes = 31) and (dia_depois = 28) then begin data_helper := IncDay(data_helper, 3); end; end; end else begin lv_parcelas.Clear; end; end; procedure TcadDevedores.cbx_excentradaClick(Sender: TObject); begin edt_excentrada.Enabled := cbx_excentrada.Enabled; queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; procedure TcadDevedores.cbx_exjurosparcelarClick(Sender: TObject); begin edt_excjurosparcela.Enabled := cbx_exjurosparcelar.Enabled; queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; procedure TcadDevedores.cbx_txextraClick(Sender: TObject); begin edt_txextra.Enabled := cbx_txextra.Checked; if not cbx_txextra.Checked then begin edt_txextra.Text := '0,00'; end; end; procedure TcadDevedores.cb_agendahistClick(Sender: TObject); begin dtp_agendadatahist.Enabled := cb_agendahist.Checked; dtp_agendahorahist.Enabled := cb_agendahist.Checked; dblucb_agendacobhist.Enabled := cb_agendahist.Checked; end; procedure TcadDevedores.cb_agendarClick(Sender: TObject); var i: Integer; begin dtp_diaagendamento.Enabled := cb_agendar.Checked; dtp_horaagendamento.Enabled := cb_agendar.Checked; dblucb_cobradoragendar.Enabled := cb_agendar.Checked; if cb_agendar.Checked then begin mb_fechamento.lines.Add ('Foi agendado para o dia __/__/____ para o cobrador __________ no horário de atendimento __:__.'); for i := 0 to mb_fechamento.lines.Count - 1 do if AnsiContainsStr(mb_fechamento.lines[i], 'Foi agendado para o dia') then begin mb_fechamento.lines[i] := StringReplace(mb_fechamento.lines[i], dia_agendado, FormatDateTime('dd/mm/yyyy', dtp_diaagendamento.Date), [rfReplaceAll, rfIgnoreCase]); end; dia_agendado := FormatDateTime('dd/mm/yyyy', dtp_diaagendamento.Date); for i := 0 to mb_fechamento.lines.Count - 1 do if AnsiContainsStr(mb_fechamento.lines[i], hora_agendado) then begin mb_fechamento.lines[i] := StringReplace(mb_fechamento.lines[i], hora_agendado, FormatDateTime('t', dtp_horaagendamento.Date), [rfReplaceAll, rfIgnoreCase]); end; hora_agendado := FormatDateTime('t', dtp_horaagendamento.Date); end else begin for i := 0 to mb_fechamento.lines.Count - 1 do if AnsiContainsStr(mb_fechamento.lines[i], 'Foi agendado para o dia') then begin dia_agendado := '__/__/____'; hora_agendado := '__:__'; nome_cobrador := '__________'; mb_fechamento.lines.Delete(i); end; end; end; procedure TcadDevedores.cb_descparClick(Sender: TObject); begin if cb_descpar.Checked then begin cb_descquit.Checked := false; gb_descontospar.Enabled := True; gb_descontosquit.Enabled := false; cb_desc_quit_cor.Checked := false; end else begin gb_descontospar.Enabled := false; end; if not gb_descontospar.Enabled then begin edt_indparcelas.Text := '0'; edt_principalparcelas.Text := '0'; edt_multasparcelas.Text := '0'; edt_jurosparcelas.Text := '0'; edt_corpar.Text := '0'; end; end; procedure TcadDevedores.cb_descquitClick(Sender: TObject); begin if cb_descquit.Checked then begin cb_descpar.Checked := false; gb_descontosquit.Enabled := True; gb_descontospar.Enabled := false; edt_nrparcelas.Text := '0'; cb_desc_par_cor.Checked := false; end else begin gb_descontosquit.Enabled := false; end; if not gb_descontosquit.Enabled then begin edt_indquitar.Text := '0'; edt_principalquitar.Text := '0'; edt_multasquitar.Text := '0'; edt_jurosquitar.Text := '0'; edt_corquitar.Text := '0'; end; end; procedure TcadDevedores.cb_desc_par_corClick(Sender: TObject); begin if cb_desc_par_cor.Checked then begin edt_indparcelas.Text := '0'; edt_principalparcelas.Text := '0'; edt_multasparcelas.Text := '0'; edt_jurosparcelas.Text := '0'; edt_corquitar.Text := '0'; end; queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; procedure TcadDevedores.cb_desc_quit_corClick(Sender: TObject); begin if cb_descquit.Checked then begin edt_indquitar.Text := '0'; edt_principalquitar.Text := '0'; edt_multasquitar.Text := '0'; edt_jurosquitar.Text := '0'; end; queryListaTitulos.Refresh; Att_campos; end; procedure TcadDevedores.cb_formapagChange(Sender: TObject); begin { if { (cb_formapag.ItemIndex = 0) or (cb_formapag.ItemIndex = 1) then begin edt_nrparcelas.Text := '0'; // edt_nrparcelas.OnChange; end; } queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; procedure TcadDevedores.cb_negritomemoClick(Sender: TObject); begin if cb_negritomemo.Checked then begin mb_fechamento.Font.Style := mb_fechamento.Font.Style + [fsbold]; end else begin mb_fechamento.Font.Style := mb_fechamento.Font.Style - [fsbold]; end; end; procedure TcadDevedores.cb_nmultaClick(Sender: TObject); begin Att_campos; CalcValorParcelas; end; procedure TcadDevedores.ChecaPermissoes; begin with dtmSystem do begin // if perm_caddev then // begin navPrincipal.Enabled := VerificarPermissao('CBR.02.01.01.01'); if VerificarPermissao('CBR.02.01.01.01.01') then begin navPrincipal.VisibleButtons := navPrincipal.VisibleButtons + [nbDelete]; end else begin navPrincipal.VisibleButtons := navPrincipal.VisibleButtons - [nbDelete]; end; navEmail.Enabled := VerificarPermissao('CBR.02.01.01.06'); if not VerificarPermissao('CBR.02.01.01.06.01') then navEmail.VisibleButtons := navEmail.VisibleButtons - [nbInsert]; if not VerificarPermissao('CBR.02.01.01.06.02') then navEmail.VisibleButtons := navEmail.VisibleButtons - [nbEdit]; if not VerificarPermissao('CBR.02.01.01.06.03') then navEmail.VisibleButtons := navEmail.VisibleButtons - [nbDelete]; navenderecos.Enabled := VerificarPermissao('CBR.02.01.01.02'); if not VerificarPermissao('CBR.02.01.01.02.01') then navenderecos.VisibleButtons := navenderecos.VisibleButtons - [nbInsert]; if not VerificarPermissao('CBR.02.01.01.02.02') then navenderecos.VisibleButtons := navenderecos.VisibleButtons - [nbEdit]; if not VerificarPermissao('CBR.02.01.01.02.03') then navenderecos.VisibleButtons := navenderecos.VisibleButtons - [nbDelete]; navtelefones.Enabled := VerificarPermissao('CBR.02.01.01.03'); if not VerificarPermissao('CBR.02.01.01.03.01') then navtelefones.VisibleButtons := navtelefones.VisibleButtons - [nbInsert]; if not VerificarPermissao('CBR.02.01.01.03.02') then navtelefones.VisibleButtons := navtelefones.VisibleButtons - [nbEdit]; if not VerificarPermissao('CBR.02.01.01.03.03') then navtelefones.VisibleButtons := navtelefones.VisibleButtons - [nbDelete]; navtitulos.Enabled := VerificarPermissao('CBR.02.01.01.04'); if not VerificarPermissao('CBR.02.01.01.04.01') then navtitulos.VisibleButtons := navtitulos.VisibleButtons - [nbInsert]; if not VerificarPermissao('CBR.02.01.01.04.02') then navtitulos.VisibleButtons := navtitulos.VisibleButtons - [nbEdit]; if not VerificarPermissao('CBR.02.01.01.04.03') then navtitulos.VisibleButtons := navtitulos.VisibleButtons - [nbDelete]; navHistorico.Enabled := VerificarPermissao('CBR.02.01.01.05'); if not VerificarPermissao('CBR.02.01.01.05.01') then navHistorico.VisibleButtons := navHistorico.VisibleButtons - [nbInsert]; if not VerificarPermissao('CBR.02.01.01.05.02') then navHistorico.VisibleButtons := navHistorico.VisibleButtons - [nbEdit]; if not VerificarPermissao('CBR.02.01.01.05.03') then navHistorico.VisibleButtons := navHistorico.VisibleButtons - [nbDelete]; tabQuitar.Enabled := VerificarPermissao('CBR.02.01.02.01.01'); tabParcelar.Enabled := VerificarPermissao('CBR.02.01.02.01.02'); cb_nmulta.Enabled := VerificarPermissao('CBR.02.01.02.02'); cbx_txextra.Enabled := VerificarPermissao('CBR.02.01.02.03'); cbx_excentrada.Enabled := VerificarPermissao('CBR.02.01.02.04'); perm_caddev := false; // end; end; end; procedure TcadDevedores.clb_beneficiarioscalculoClickCheck(Sender: TObject); var i: Integer; n_marcou: Boolean; begin // sempre só poder ter uma empresa marcada e cria a lista de títulos dela que o devedor tem n_marcou := True; with TCheckListBox(Sender) do begin if Checked[ItemIndex] then begin n_marcou := false; Items.beginupdate; id_emp_calc := ItemIndex; for i := 0 to Items.Count - 1 do if i = ItemIndex then begin continue; end else begin Checked[i] := false; end; Items.EndUpdate; // lv_titulos.PopupMenu := popmnu_incluir; end else begin for i := 0 to Items.Count - 1 do if Checked[i] = True then begin n_marcou := false; id_emp_calc := i; end; // lv_titulos.PopupMenu := nil; end; end; if n_marcou then begin lv_titulos.Clear; id_emp_calc := -1; setlength(ids_tits_calc, 0); end else begin CriarLista; end; end; procedure TcadDevedores.clb_empresasClickCheck(Sender: TObject); var i: Integer; begin // if clb_empresas.Checked[clb_empresas.ItemIndex] then // begin // clb_empresas.Items.beginupdate; // for i := 0 to clb_empresas.Items.Count - 1 do // begin // if i = clb_empresas.ItemIndex then // begin // dtmSystem.tblCHGEmpresa.Locate('TX_NOME', clb_empresas.Items[i], []); // // clb_empresas.Selected[i] := True; // selected_id_chg_empresa := dtmSystem.tblCHGEmpresaID_EMPRESA.AsInteger; // continue; // end // else // begin // clb_empresas.Checked[i] := false; // // clb_empresas.Selected[i] := false; // end; // end; // clb_empresas.Items.EndUpdate; // end; end; procedure TcadDevedores.clb_empresasMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); // var // index: integer; begin // pega as hints na array de hints e mostra a do item que o mouse está em cima { index := clb_empresas.ItemAtPos(point(X, Y), true); if index <> -1 then begin clb_empresas.Hint := cbl_hints[index]; end else begin clb_empresas.Hint := ''; end; if index <> prevIndex then begin Application.CancelHint; end; prevIndex := index; } end; procedure TcadDevedores.Copiar1Click(Sender: TObject); var Control: TControl; begin // usa duas funções que achei na net pra pegar o controle na pos do mouse pra poder copiar o conteúdo dele mesmo desabilitado Control := FindControlAtPos(posi); if Control is TDBEdit then begin Clipboard.AsText := (Control as TDBEdit).Text; end; if Control is TDBLookupComboBox then begin Clipboard.AsText := (Control as TDBLookupComboBox).Text; end; if Control is TrDBDateTimePicker then begin Clipboard.AsText := FormatDateTime('dd/mm/yyyy', (Control as TrDBDateTimePicker).Date); end; if Control is TDBMemo then begin (Control as TDBMemo).SelectAll; (Control as TDBMemo).CopyToClipboard; end; if Control is TListView then begin if Control.Name = 'lv_parcelas' then begin copiar_conteudoClick(Copiar1); end; end; end; procedure TcadDevedores.copiar_conteudoClick(Sender: TObject); var nomes, valores: array of string; spaces: string; i, j, tam, Count: Integer; k: Integer; begin clpbrd := ''; // copia o conteúdo do listview que contém os dados de parcelamento if lv_parcelas.Items.Count > 0 then begin setlength(nomes, lv_parcelas.Items.Count); setlength(valores, lv_parcelas.Items.Count); for i := 0 to lv_parcelas.Items.Count - 1 do begin nomes[i] := lv_parcelas.Items.Item[i].Caption + ':'; valores[i] := lv_parcelas.Items.Item[i].SubItems[0]; end; end; for j := 0 to lv_parcelas.Items.Count - 1 do begin tam := Length(nomes[j]) + Length(valores[j]); Count := 32 - tam; spaces := ''; for k := 0 to Count - 1 do begin spaces := spaces + ' '; end; if j = 0 then begin clpbrd := clpbrd + nomes[j] + spaces + valores[j] + ' para ser pago até dia: ' + FormatDateTime('dd/mm/yyyy', data_parcelas[0]) + sLineBreak; end else begin if copy(valores[0], 4, Length(valores[0]) - 3) = '0,00' then begin clpbrd := clpbrd + nomes[j] + spaces + valores[j] + ' para ser pago até dia: ' + FormatDateTime('dd/mm/yyyy', data_parcelas[j - 1]) + sLineBreak; end else begin clpbrd := clpbrd + nomes[j] + spaces + valores[j] + ' para ser pago até dia: ' + FormatDateTime('dd/mm/yyyy', data_parcelas[j { - 1 } ]) + sLineBreak; end; end; end; if Sender is TMenuItem then begin Clipboard.AsText := clpbrd; end; end; procedure TcadDevedores.cp_telClick(Sender: TObject); begin Clipboard.AsText := dbedt_tel.Text; end; procedure TcadDevedores.cp_teldddClick(Sender: TObject); begin Clipboard.AsText := dbedt_ddd.Text + ' ' + dbedt_tel.Text; end; procedure TcadDevedores.CriarLista; var h: Integer; nMaxWidth: Integer; i: Integer; nItemWidth: Integer; marcou: Boolean; begin { if queryListaTitulos.Connection = nil then // BACALHAU, NÃO TEM EXPLICAÇÃO. SÓ FUNCIONA. begin exit; end; } // qtde_titulos := 0; dtmSystem.tblCHGEmpresa.Open; marcou := false; // clb_beneficiarioscalculo.Clear; for h := 0 to clb_beneficiarioscalculo.Items.Count - 1 do begin if clb_beneficiarioscalculo.Checked[h] then begin dtmSystem.tblCHGEmpresa.Locate('ID_EMPRESA', id_emps_dev[h], []); marcou := True; end; end; nMaxWidth := clb_beneficiarioscalculo.ClientWidth; for i := 0 to clb_beneficiarioscalculo.Items.Count - 1 do begin nItemWidth := clb_beneficiarioscalculo.Canvas.TextWidth (clb_beneficiarioscalculo.Items[i]) + 20; if (nItemWidth > nMaxWidth) then nMaxWidth := nItemWidth; end; if (nMaxWidth > clb_beneficiarioscalculo.ClientWidth) then begin clb_beneficiarioscalculo.ScrollWidth := nMaxWidth; end; if marcou then begin queryListaTitulos.SQL.Clear; queryListaTitulos.SQL.Text := 'select * from (select * from chg_titulos where id_devedor = ' + dtmSystem.tblDevedoresID_DEVEDOR.AsString + ') where (tp_situacao = ''A'' or tp_situacao = ''AC'') and' + '(id_empresa = ' + dtmSystem.tblCHGEmpresaID_EMPRESA.AsString + ')' + ' order by DT_VENCIMENTO, VL_TITULO'; queryListaTitulos.Open; queryListaTitulos.First; lv_titulos.Clear; // queryListaTitulos.DisableControls; while not queryListaTitulos.Eof do begin dtmSystem.tblFaixas.Filter := '(DT_INICIO < ' + queryListaTitulosDT_ATRASO.AsString + ')and(DT_FINAL > ' + queryListaTitulosDT_ATRASO.AsString + ')'; dtmSystem.tblFaixas.Filtered := True; dtmSystem.tblFaixas.Open; dtmSystem.tblPoliticas.Open; dtmSystem.tblPoliticas.Locate('ID_POLITICA', dtmSystem.tblFaixasID_POLITICA.AsString, []); with lv_titulos.Items.Add do begin SubItems.Add(queryListaTitulos.FieldByName('NOME_EMPRESA').AsString); SubItems.Add(queryListaTitulos.FieldByName('TX_PRODUTO').AsString); SubItems.Add(queryListaTitulos.FieldByName('DT_VENCIMENTO').AsString); SubItems.Add(CurrToStrF(queryListaTitulos.FieldByName('VL_TITULO') .AsCurrency, ffCurrency, 2, dtmSystem.CusFmt)); SubItems.Add(queryListaTitulos.FieldByName('CD_DEVEDOR').AsString); SubItems.Add(queryListaTitulos.FieldByName('NR_PARCELAS').AsString); SubItems.Add(queryListaTitulos.FieldByName('DT_ENTRADA').AsString); end; lv_titulos.Column[0].Alignment := TAlignment.taCenter; dtmSystem.tblFaixas.Filtered := false; queryListaTitulos.Next; end; end; // queryListaTitulos.First; // queryListaTitulos.EnableControls; edt_nrparcelas.Text := '0'; end; procedure TcadDevedores.ACBrCEP1BuscaEfetuada(Sender: TObject); var i: Integer; begin // resultado da busca de CEP for i := 0 to ACBrCEP1.Enderecos.Count - 1 do begin dbedt_logradouro.Text := ACBrCEP1.Enderecos[i].Tipo_Logradouro + ' ' + ACBrCEP1.Enderecos[i].Logradouro; dbedt_comp.Text := ACBrCEP1.Enderecos[i].Complemento; dbedt_bairro.Text := ACBrCEP1.Enderecos[i].Bairro; end; end; procedure TcadDevedores.dbcbx_tpchequeClick(Sender: TObject); begin pnl_cheque.Enabled := dbcbx_tpcheque.Checked; end; procedure TcadDevedores.DBEdit10KeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end; end; procedure TcadDevedores.DBEdit11KeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, (Sender as TDBEdit).Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.DBEdit12KeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, (Sender as TDBEdit).Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.DBEdit13KeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, (Sender as TDBEdit).Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.DBEdit17KeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end; end; procedure TcadDevedores.DBEdit18KeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end; end; procedure TcadDevedores.DBEdit19KeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end; end; procedure TcadDevedores.DBEdit20KeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end; end; procedure TcadDevedores.DBEdit21KeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end; end; procedure TcadDevedores.DBEdit22KeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, (Sender as TDBEdit).Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.DBEdit23KeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end; end; procedure TcadDevedores.DBEdit5KeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, (Sender as TDBEdit).Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.DBEdit6KeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, (Sender as TDBEdit).Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.DBEdit7KeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end; end; procedure TcadDevedores.DBEdit9KeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, (Sender as TDBEdit).Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.dbedt_cepKeyPress(Sender: TObject; var Key: Char); begin // faz a busca por CEP de pressionar enter no edit de CEP if (Key = #13) then begin ACBrCEP1.BuscarPorCEP(dbedt_cep.Text); end; end; procedure TcadDevedores.dbedt_cpfcnpjKeyPress(Sender: TObject; var Key: Char); begin inherited; if dtmSystem.tblDevedoresTP_CLIENTE.AsString = '' then begin MessageDlg('Por favor escolha o tipo de devedor.', mtWarning, [mbOK], 0); Key := #0; end; if (dtmSystem.tblDevedoresTP_CLIENTE.AsString = 'F') then begin if not(Key in [#8, '0' .. '9', '.', '-']) then begin Key := #0; end; end; if (dtmSystem.tblDevedoresTP_CLIENTE.AsString = 'J') then begin if not(Key in [#8, '0' .. '9', '.', '-', '/']) then begin Key := #0; end; end; end; procedure TcadDevedores.dbgrd_enderecosDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin case AnsiIndexStr(dtmSystem.tblEnderecos.FieldByName('TP_ATIVO').AsString, ['S', 'N']) of 0: dbgrd_enderecos.Canvas.Brush.Color := clGreen; 1: dbgrd_enderecos.Canvas.Brush.Color := $0000FF; end; // end; dbgrd_enderecos.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; procedure TcadDevedores.dbgrd_enderecosTitleClick(Column: TColumn); begin dtmSystem.OrganizaPorColuna(dtmSystem.tblEnderecos, Column); end; procedure TcadDevedores.dbgrd_historicoDblClick(Sender: TObject); begin // if dbgrd_historico.SelectedIndex = 2 then // begin // with TfrmMemoBox.Create(self) do // begin // Show; // end; // end; end; procedure TcadDevedores.dbgrd_historicoTitleClick(Column: TColumn); begin dtmSystem.OrganizaPorColuna(dtmSystem.tblHistorico, Column); end; procedure TcadDevedores.dbgrd_listtitulosTitleClick(Column: TColumn); begin dtmSystem.OrganizaPorColuna(queryListaTitulos, Column); end; procedure TcadDevedores.dbgrd_providenciasDblClick(Sender: TObject); var pt: TPoint; coord: TGridCoord; clickheader: Integer; begin pt := dbgrd_providencias.ScreenToClient(Mouse.CursorPos); coord := dbgrd_providencias.MouseCoord(pt.X, pt.Y); clickheader := coord.Y; if clickheader > 0 then begin if LeftStr(mb_fechamento.lines[mb_fechamento.lines.Count - 1], 3) = 'Pro' then begin mb_fechamento.lines[mb_fechamento.lines.Count - 1] := 'Providência tomada: ' + dtmSystem.tblProvidenciasTX_NOME. AsString + '.'; end else begin mb_fechamento.lines.Add('Providência tomada: ' + dtmSystem.tblProvidenciasTX_NOME.AsString + '.'); end; edt_prov.Text := dtmSystem.tblProvidenciasTX_NOME.AsString; // if dtmSystem.tblProvidenciasID_PROVIDENCIA.AsInteger = 1 then // begin // dtp_diaagendamento.Enabled := true; // dtp_horaagendamento.Enabled := true; // dblucb_cobradoragendar.Enabled := true; // end // else // begin // dtp_diaagendamento.Enabled := false; // dtp_horaagendamento.Enabled := false; // dblucb_cobradoragendar.Enabled := false; // end; end; end; procedure TcadDevedores.dbgrd_resumohistTitleClick(Column: TColumn); begin dtmSystem.OrganizaPorColuna(dtmSystem.tblHistorico, Column); end; procedure TcadDevedores.dbgrd_telDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin case AnsiIndexStr(dtmSystem.tblTelefones.FieldByName('TP_ATIVO').AsString, ['S', 'N']) of 0: dbgrd_tel.Canvas.Brush.Color := clGreen; 1: dbgrd_tel.Canvas.Brush.Color := $0000FF; end; // end; dbgrd_tel.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; procedure TcadDevedores.dbgrd_telTitleClick(Column: TColumn); begin dtmSystem.OrganizaPorColuna(dtmSystem.tblTelefones, Column); end; procedure TcadDevedores.dbgrd_titCellClick(Column: TColumn); var i: Integer; begin // for i := 0 to clb_empresas.Items.Count - 1 do // begin // dtmSystem.tblCHGEmpresa.Locate('TX_NOME', clb_empresas.Items[i], []); // if dtmSystem.tblTitulosID_EMPRESA.AsString = dtmSystem. // tblCHGEmpresaID_EMPRESA.AsString then // begin // clb_empresas.Checked[i] := True; // // clb_empresas.Selected[i] := True; // end // else // begin // clb_empresas.Checked[i] := false; // // clb_empresas.Selected[i] := false; // end; // end; end; procedure TcadDevedores.dbgrd_titDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin case AnsiIndexStr(dtmSystem.tblTitulos.FieldByName('TP_SITUACAO').AsString, ['A', 'AC', 'AB', 'AJ', 'B', 'QC', 'QB']) of 0: dbgrd_tit.Canvas.Brush.Color := clWhite; 1: dbgrd_tit.Canvas.Brush.Color := $0000D7FF; 2: dbgrd_tit.Canvas.Brush.Color := $002FFFAD; 3: dbgrd_tit.Canvas.Brush.Color := clMoneyGreen; 4: dbgrd_tit.Canvas.Brush.Color := clRed; 5: dbgrd_tit.Canvas.Brush.Color := $00EBCE87; 6: dbgrd_tit.Canvas.Brush.Color := $00E16941; end; // end; dbgrd_tit.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; procedure TcadDevedores.dbgrd_titMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var Cell: TGridCoord; begin Cell := dbgrd_tit.MouseCoord(X, Y); // if cell.Y > 0 then // begin // dbgrd_tit.Hint := 'AAAAAAA'; // end else // begin // dbgrd_tit.Hint := ''; // end; end; procedure TcadDevedores.dbgrd_titTitleClick(Column: TColumn); begin inherited; dtmSystem.OrganizaPorColuna(dtmSystem.tblTitulos, Column); end; procedure TcadDevedores.DBNavigator1BeforeAction(Sender: TObject; Button: TNavigateBtn); begin inherited; if Button = nbPost then begin dtmSystem.tblDevEmpBoletosID_DEVEDOR.AsInteger := dtmSystem.id_devedor; end; end; procedure TcadDevedores.dbrg_tipotelClick(Sender: TObject); begin inherited; if dbrg_tipotel.ItemIndex = 1 then begin DBRadioGroup1.Enabled := True; end else begin DBRadioGroup1.Enabled := false; DBRadioGroup1.ItemIndex := -1; end; end; procedure TcadDevedores.dtp_atrasorecalcChange(Sender: TObject); begin queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; procedure TcadDevedores.dtp_diaagendamentoChange(Sender: TObject); var i: Integer; begin if pcClientes.ActivePageIndex = 6 then begin for i := 0 to mb_fechamento.lines.Count - 1 do if AnsiContainsStr(mb_fechamento.lines[i], 'Foi agendado para o dia') then begin mb_fechamento.lines[i] := StringReplace(mb_fechamento.lines[i], dia_agendado, FormatDateTime('dd/mm/yyyy', dtp_diaagendamento.Date), [rfReplaceAll, rfIgnoreCase]); end; dia_agendado := FormatDateTime('dd/mm/yyyy', dtp_diaagendamento.Date); end; end; procedure TcadDevedores.dtp_horaagendamentoChange(Sender: TObject); var i: Integer; begin if pcClientes.ActivePageIndex = 6 then begin for i := 0 to mb_fechamento.lines.Count - 1 do if AnsiContainsStr(mb_fechamento.lines[i], hora_agendado) then begin mb_fechamento.lines[i] := StringReplace(mb_fechamento.lines[i], hora_agendado, FormatDateTime('t', dtp_horaagendamento.Date), [rfReplaceAll, rfIgnoreCase]); end; hora_agendado := FormatDateTime('t', dtp_horaagendamento.Date); end; end; procedure TcadDevedores.dtsCidadesDataChange(Sender: TObject; Field: TField); begin if (dtmSystem.tblEnderecosID_CIDADE.AsVariant >= 0) then begin dblucmbox_cidade.keyvalue := dtmSystem.tblEnderecosID_CIDADE.AsVariant; end; end; procedure TcadDevedores.dtsCobradorDataChange(Sender: TObject; Field: TField); var i: Integer; begin if pcClientes.ActivePageIndex = 6 then begin for i := 0 to mb_fechamento.lines.Count - 1 do if AnsiContainsStr(mb_fechamento.lines[i], 'para o cobrador') then begin mb_fechamento.lines[i] := StringReplace(mb_fechamento.lines[i], nome_cobrador, queryCobradoresTX_NOME.AsString, [rfReplaceAll, rfIgnoreCase]); nome_cobrador := queryCobradoresTX_NOME.AsString; end; end; end; procedure TcadDevedores.dtsDBDataChange(Sender: TObject; Field: TField); var new_id: Integer; i: Integer; begin // seta que valor vai ser mostrado no edit with dtmSystem do begin if tblDevedoresTP_CLIENTE.AsString = 'F' then begin dbedt_cpfcnpj.DataField := 'CD_CPF'; end; if tblDevedoresTP_CLIENTE.AsString = 'J' then begin dbedt_cpfcnpj.DataField := 'CD_CNPJ'; end; end; // stbStatus.Panels[0].Text := 'Entradas: ' + // inttostr(dtsDB.DataSet.RecordCount) + '.'; if dtmSystem.tblDevedoresDT_NASC.AsString <> '' then begin lbl_idade.Caption := 'Idade: ' + inttostr(CalculaIdade(dtmSystem.tblDevedoresDT_NASC.AsDateTime, Date)); end else begin lbl_idade.Caption := 'Idade: '; end; new_id := dtmSystem.tblDevedoresID_DEVEDOR.AsInteger; if (old_id <> new_id) and ((self.Active) or (importou)) and not(dtsDB.State in [dsInsert]) then begin id_emp_calc := -1; for i := 0 to Length(ids_tits_calc) - 1 do begin ids_tits_calc[i] := false; end; btn_protocolo.Enabled := True; edt_protocolo.Text := ''; edt_protocolo1.Text := ''; // cb_agendahist.Checked := false; dtp_agendadatahist.Enabled := false; // dtp_agendadatahist.Date := Date; dtp_agendahorahist.Enabled := false; // dtp_agendahorahist.Time := Timeof(Now); dblucb_agendacobhist.Enabled := false; cb_agendar.Checked := false; importou := false; dia_agendado := '__/__/____'; hora_agendado := '__:__'; nome_cobrador := '__________'; old_id := new_id; if qryConsulta.Connection = nil then // BACALHAU, NÃO TEM EXPLICAÇÃO. SÓ FUNCIONA. begin exit; end; old_id_tit := -1; clb_beneficiarioscalculo.Clear; if (dtmSystem.tblDevedores.RecordCount > 0) and (not(dtsDB.State in [dsInsert])) then begin qryConsulta.SQL.Clear; qryConsulta.SQL.Text := 'select * from chg_empresas where id_empresa in ' + '(select id_empresa from chg_titulos' + ' where (tp_situacao = ''A'' or tp_situacao = ''AC'') and (id_devedor = ' + dtmSystem.tblDevedoresID_DEVEDOR.AsString + '))'; if not(qryConsulta.Active) then begin qryConsulta.Open; end; qryConsulta.First; setlength(id_emps_dev, qryConsulta.RecordCount); while not qryConsulta.Eof do begin clb_beneficiarioscalculo.Items.Add(qryConsulta.FieldByName('TX_NOME') .AsString); id_emps_dev[qryConsulta.RecNo - 1] := qryConsulta.FieldByName('ID_EMPRESA').AsInteger; qryConsulta.Next; end; end; pcDescontos.TabIndex := 0; end; end; procedure TcadDevedores.dtsDBStateChange(Sender: TObject); begin pnl_devedores.Enabled := (dtsDB.State in [dsEdit, dsInsert]); tabBoletos.Enabled := (dtsDB.State in [dsEdit, dsInsert]); navEmail.Enabled := not(dtsDB.State in [dsEdit, dsInsert]); navenderecos.Enabled := not(dtsDB.State in [dsEdit, dsInsert]); navtelefones.Enabled := not(dtsDB.State in [dsEdit, dsInsert]); navtitulos.Enabled := not(dtsDB.State in [dsEdit, dsInsert]); navHistorico.Enabled := not(dtsDB.State in [dsEdit, dsInsert]); tabCalculos.Enabled := not(dtsDB.State in [dsEdit, dsInsert]); end; procedure TcadDevedores.dtsEmailStateChange(Sender: TObject); begin pnl_email.Enabled := (dtsEmail.State in [dsInsert, dsEdit]); navPrincipal.Enabled := not(dtsEmail.State in [dsInsert, dsEdit]); navenderecos.Enabled := not(dtsEmail.State in [dsInsert, dsEdit]); navtelefones.Enabled := not(dtsEmail.State in [dsInsert, dsEdit]); navtitulos.Enabled := not(dtsEmail.State in [dsInsert, dsEdit]); navHistorico.Enabled := not(dtsEmail.State in [dsInsert, dsEdit]); end; procedure TcadDevedores.dtsEnderecosDataChange(Sender: TObject; Field: TField); begin if (dtmSystem.tblEnderecosID_ESTADO.AsVariant >= 0) then begin dblucmbox_uf.keyvalue := dtmSystem.tblEstadosID_ESTADO.AsVariant; end; if (dtmSystem.tblEnderecosID_CIDADE.AsVariant >= 0) then begin dblucmbox_cidade.keyvalue := dtmSystem.tblCidadesID_CIDADE.AsVariant; end; end; procedure TcadDevedores.dtsEnderecosStateChange(Sender: TObject); begin inherited; Panel8.Enabled := dtsEnderecos.State in [dsEdit, dsInsert]; navEmail.Enabled := not(dtsEnderecos.State in [dsEdit, dsInsert]); navPrincipal.Enabled := not(dtsEnderecos.State in [dsEdit, dsInsert]); navtelefones.Enabled := not(dtsEnderecos.State in [dsEdit, dsInsert]); navtitulos.Enabled := not(dtsEnderecos.State in [dsEdit, dsInsert]); navHistorico.Enabled := not(dtsEnderecos.State in [dsEdit, dsInsert]); tabCalculos.Enabled := not(dtsEnderecos.State in [dsEdit, dsInsert]); end; procedure TcadDevedores.dtsHistoricoStateChange(Sender: TObject); begin inherited; dbgrd_historico.ReadOnly := dtsHistorico.State in [dsEdit, dsInsert]; btntelefones.Enabled := dtsHistorico.State in [dsEdit, dsInsert]; dbmemo_box.ReadOnly := not(dtsHistorico.State in [dsInsert, dsEdit]); dblucb_providencia.Enabled := dtsHistorico.State in [dsEdit, dsInsert]; navPrincipal.Enabled := not(dtsHistorico.State in [dsEdit, dsInsert]); navEmail.Enabled := not(dtsHistorico.State in [dsEdit, dsInsert]); navenderecos.Enabled := not(dtsHistorico.State in [dsEdit, dsInsert]); navtelefones.Enabled := not(dtsHistorico.State in [dsEdit, dsInsert]); navtitulos.Enabled := not(dtsHistorico.State in [dsEdit, dsInsert]); tabCalculos.Enabled := not(dtsHistorico.State in [dsEdit, dsInsert]); if dtsHistorico.State in [dsInsert] then begin dtsHistorico.DataSet.FieldByName('CD_PROTOCOLO').AsString := dtmSystem.gerarProtocolo(dtsDB.DataSet.FieldByName('ID_DEVEDOR') .AsString); edt_protocolo.Text := gerar_protocolo (dtmSystem.tblDevedoresID_DEVEDOR.AsString); edt_protocolo1.Text := edt_protocolo.Text; btn_protocolo.Enabled := false; end; end; procedure TcadDevedores.dtsTelefonesDataChange(Sender: TObject; Field: TField); begin inherited; if dbrg_tipotel.ItemIndex = 1 then begin DBRadioGroup1.Enabled := True; end else begin DBRadioGroup1.Enabled := false; DBRadioGroup1.ItemIndex := -1; end; end; procedure TcadDevedores.dtsTelefonesStateChange(Sender: TObject); begin inherited; Panel9.Enabled := dtsTelefones.State in [dsEdit, dsInsert]; navPrincipal.Enabled := not(dtsTelefones.State in [dsEdit, dsInsert]); navEmail.Enabled := not(dtsTelefones.State in [dsEdit, dsInsert]); navenderecos.Enabled := not(dtsTelefones.State in [dsEdit, dsInsert]); navtitulos.Enabled := not(dtsTelefones.State in [dsEdit, dsInsert]); navHistorico.Enabled := not(dtsTelefones.State in [dsEdit, dsInsert]); tabCalculos.Enabled := not(dtsTelefones.State in [dsEdit, dsInsert]); end; procedure TcadDevedores.dtsTitulosDataChange(Sender: TObject; Field: TField); var i, new_id_tit: Integer; begin pnl_cheque.Enabled := dbcbx_tpcheque.Checked; new_id_tit := dtmSystem.tblTitulosID_TITULO.AsInteger; if old_id_tit <> new_id_tit then begin old_id_tit := new_id_tit; // clb_empresas.Items.beginupdate; // for i := 0 to clb_empresas.Items.Count - 1 do // begin // clb_empresas.Checked[i] := false; // // clb_empresas.Selected[i] := false; // end; // clb_empresas.Items.EndUpdate; // if dtmSystem.tblTitulosID_EMPRESA.AsString = '' then // begin // selected_id_chg_empresa := -1; // end // else // begin // dtmSystem.tblCHGEmpresa.Locate('ID_EMPRESA', // dtmSystem.tblTitulosID_EMPRESA.AsInteger, []); // selected_id_chg_empresa := dtmSystem.tblCHGEmpresaID_EMPRESA.AsInteger; // if clb_empresas.Items.IndexOf(dtmSystem.tblCHGEmpresaTX_NOME.AsString) > -1 // then // begin // clb_empresas.Checked // [clb_empresas.Items.IndexOf // (dtmSystem.tblCHGEmpresaTX_NOME.AsString)] := True; // // clb_empresas.Selected // // [clb_empresas.Items.IndexOf(dtmSystem.tblCHGEmpresaTX_NOME. // // AsString)] := True; // end; // end; // // if dtsTitulos.DataSet.State in [dsBrowse] then // begin // // zroQueryAcordos.SQL.Text := // // 'select * from sys_acordos where id_original = ' + // // dtsTitulos.DataSet.FieldByName('id_titulo').AsString; // // zroQueryAcordos.Open; // end; end; // if not(dtsTitulos.DataSet.State in [dsEdit, dsInsert]) then // begin // for i := 0 to clb_empresas.Items.Count - 1 do // begin // clb_empresas.ItemEnabled[i] := false; // end; // end // else // begin // for i := 0 to clb_empresas.Items.Count - 1 do // begin // clb_empresas.ItemEnabled[i] := True; // end; // end; end; procedure TcadDevedores.dtsTitulosStateChange(Sender: TObject); begin inherited; Panel10.Enabled := dtsTitulos.State in [dsEdit, dsInsert]; // dbmem_titobs.Enabled := dtsTitulos.State in [dsEdit, dsInsert]; dbmem_titobs.ReadOnly := not(dtsTitulos.State in [dsEdit, dsInsert]); navPrincipal.Enabled := not(dtsTitulos.State in [dsEdit, dsInsert]); navEmail.Enabled := not(dtsTitulos.State in [dsEdit, dsInsert]); navenderecos.Enabled := not(dtsTitulos.State in [dsEdit, dsInsert]); navtelefones.Enabled := not(dtsTitulos.State in [dsEdit, dsInsert]); navHistorico.Enabled := not(dtsTitulos.State in [dsEdit, dsInsert]); tabCalculos.Enabled := not(dtsTitulos.State in [dsEdit, dsInsert]); end; procedure TcadDevedores.dtsUFDataChange(Sender: TObject; Field: TField); begin if (dtmSystem.tblEnderecosID_ESTADO.AsVariant >= 0) then begin dblucmbox_uf.keyvalue := dtmSystem.tblEstadosID_ESTADO.AsVariant; end; if (dtmSystem.tblEnderecosID_CIDADE.AsVariant >= 0) then begin dblucmbox_cidade.keyvalue := dtmSystem.tblCidadesID_CIDADE.AsVariant; end; end; procedure TcadDevedores.edt_excjurosparcelaChange(Sender: TObject); begin if Length(edt_excjurosparcela.Text) < 1 then begin edt_excjurosparcela.Text := '0'; end; queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; procedure TcadDevedores.edt_excjurosparcelaKeyPress(Sender: TObject; var Key: Char); begin if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, edt_excjurosparcela.Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.edt_corparChange(Sender: TObject); begin inherited; try if (strtofloat(edt_corpar.Text) > -1) and (queryListaTitulos.Active) and (edt_corpar.Text <> '') then begin if strtofloat(edt_corpar.Text) > strtoint(copy(lbl_maxparcor.Caption, 6, Length(lbl_maxparcor.Caption) - 1 - 5)) then begin edt_corpar.Text := copy(lbl_maxparcor.Caption, 6, Length(lbl_maxparcor.Caption) - 1 - 5); end; queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; if ud_corpar.Max = 0 then begin edt_corpar.Text := '0'; exit; end; except end; end; procedure TcadDevedores.edt_corparKeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, edt_corpar.Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.edt_corquitarChange(Sender: TObject); begin inherited; try if (strtofloat(edt_corquitar.Text) > -1) and (queryListaTitulos.Active) and (edt_corquitar.Text <> '') then begin if strtofloat(edt_corquitar.Text) > strtoint(copy(lbl_maxquitcor.Caption, 6, Length(lbl_maxquitcor.Caption) - 1 - 5)) then begin edt_corquitar.Text := copy(lbl_maxquitcor.Caption, 6, Length(lbl_maxquitcor.Caption) - 1 - 5); end; queryListaTitulos.Refresh; Att_campos; end; if ud_corquitar.Max = 0 then begin edt_corquitar.Text := '0'; exit; end; except end; end; procedure TcadDevedores.edt_corquitarKeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, edt_corquitar.Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.edt_excentradaChange(Sender: TObject); begin if Length(edt_excentrada.Text) < 1 then begin edt_excentrada.Text := '0'; end; queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; procedure TcadDevedores.edt_excentradaKeyPress(Sender: TObject; var Key: Char); begin if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, edt_excentrada.Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.edt_fontememoExit(Sender: TObject); begin if strtoint(edt_fontememo.Text) < 8 then begin edt_fontememo.Text := '8'; mb_fechamento.Font.size := 8; end; if strtoint(edt_fontememo.Text) > 72 then begin edt_fontememo.Text := '72'; mb_fechamento.Font.size := 72; end; mb_fechamento.Font.size := strtoint(edt_fontememo.Text); end; procedure TcadDevedores.edt_fontememoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = vkReturn then begin mb_fechamento.SetFocus; end; end; procedure TcadDevedores.edt_indparcelasChange(Sender: TObject); begin try if (strtofloat(edt_indparcelas.Text) > -1) and (queryListaTitulos.Active) and (edt_indparcelas.Text <> '') then begin if strtofloat(edt_indparcelas.Text) > strtoint(copy(lbl_maxindpar.Caption, 6, Length(lbl_maxindpar.Caption) - 1 - 5)) then begin edt_indparcelas.Text := copy(lbl_maxindpar.Caption, 6, Length(lbl_maxindpar.Caption) - 1 - 5); end; queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; if up_encparcelas.Max = 0 then begin edt_indparcelas.Text := '0'; exit; end; except end; end; procedure TcadDevedores.edt_indparcelasKeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, edt_indparcelas.Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.edt_indquitarChange(Sender: TObject); begin try if (strtofloat(edt_indquitar.Text) > -1) and (queryListaTitulos.Active) and (edt_indquitar.Text <> '') then begin if strtofloat(edt_indquitar.Text) > strtoint(copy(lbl_maxindquit.Caption, 6, Length(lbl_maxindquit.Caption) - 1 - 5)) then begin edt_indquitar.Text := copy(lbl_maxindquit.Caption, 6, Length(lbl_maxindquit.Caption) - 1 - 5); end; queryListaTitulos.Refresh; Att_campos; end; if up_encquitar.Max = 0 then begin edt_indquitar.Text := '0'; exit; end; except end; end; procedure TcadDevedores.edt_indquitarKeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, edt_indquitar.Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.edt_jurosparcelasChange(Sender: TObject); begin try if (strtofloat(edt_jurosparcelas.Text) > -1) and (queryListaTitulos.Active) and (edt_jurosparcelas.Text <> '') then begin if strtofloat(edt_jurosparcelas.Text) > strtoint(copy(lbl_maxjurospar.Caption, 6, Length(lbl_maxjurospar.Caption) - 1 - 5)) then begin edt_jurosparcelas.Text := copy(lbl_maxjurospar.Caption, 6, Length(lbl_maxjurospar.Caption) - 1 - 5); end; queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; if up_jurosparcelas.Max = 0 then begin edt_jurosparcelas.Text := '0'; exit; end; except end; end; procedure TcadDevedores.edt_jurosparcelasKeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, edt_jurosparcelas.Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.edt_jurosquitarChange(Sender: TObject); begin try if (strtofloat(edt_jurosquitar.Text) > -1) and (queryListaTitulos.Active) and (edt_jurosquitar.Text <> '') then begin if strtofloat(edt_jurosquitar.Text) > strtoint(copy(lbl_maxjurosquit.Caption, 6, Length(lbl_maxjurosquit.Caption) - 1 - 5)) then begin edt_jurosquitar.Text := copy(lbl_maxjurosquit.Caption, 6, Length(lbl_maxjurosquit.Caption) - 1 - 5); end; queryListaTitulos.Refresh; Att_campos; end; if up_jurosquitar.Max = 0 then begin edt_jurosquitar.Text := '0'; exit; end; except end; end; procedure TcadDevedores.edt_jurosquitarKeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, edt_jurosquitar.Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.edt_multasparcelasChange(Sender: TObject); begin try if (strtofloat(edt_multasparcelas.Text) > -1) and (queryListaTitulos.Active) and (edt_multasparcelas.Text <> '') then begin if strtofloat(edt_multasparcelas.Text) > strtoint(copy(lbl_maxmultapar.Caption, 6, Length(lbl_maxmultapar.Caption) - 1 - 5)) then begin edt_multasparcelas.Text := copy(lbl_maxmultapar.Caption, 6, Length(lbl_maxmultapar.Caption) - 1 - 5); end; queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; if up_multasparcelas.Max = 0 then begin edt_multasparcelas.Text := '0'; exit; end; except end; end; procedure TcadDevedores.edt_multasparcelasKeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, edt_multasparcelas.Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.edt_multasquitarChange(Sender: TObject); begin try if (strtofloat(edt_multasquitar.Text) > -1) and (queryListaTitulos.Active) and (edt_multasquitar.Text <> '') then begin if strtofloat(edt_multasquitar.Text) > strtoint(copy(lbl_maxmultaquit.Caption, 6, Length(lbl_maxmultaquit.Caption) - 1 - 5)) then begin edt_multasquitar.Text := copy(lbl_maxmultaquit.Caption, 6, Length(lbl_maxmultaquit.Caption) - 1 - 5); end; queryListaTitulos.Refresh; Att_campos; end; if up_multasquitar.Max = 0 then begin edt_multasquitar.Text := '0'; exit; end; except end; end; procedure TcadDevedores.edt_multasquitarKeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, edt_multasquitar.Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.edt_nrparcelasChange(Sender: TObject); begin try if (strtoint(edt_nrparcelas.Text) > -1) and (queryListaTitulos.Active) and (edt_nrparcelas.Text <> '') then begin if strtoint(edt_nrparcelas.Text) > up_nrparcelas.Max then begin edt_nrparcelas.Text := inttostr(up_nrparcelas.Max); end; if strtoint(edt_nrparcelas.Text) < 0 then begin edt_nrparcelas.Text := '0'; end; queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; if (cb_descquit.Checked) and not(ficha_dev) then begin edt_nrparcelas.Text := '0'; end; { if cb_formapag.ItemIndex = 1 then begin edt_nrparcelas.Text := '0'; end; } // Att_campos; // CalcValorParcelas; except end; end; procedure TcadDevedores.edt_nrparcelasExit(Sender: TObject); begin if edt_nrparcelas.Text = '' then begin edt_nrparcelas.Text := '0'; queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; end; procedure TcadDevedores.edt_prentradaChange(Sender: TObject); begin try if (strtoint(edt_prentrada.Text) > -1) and (queryListaTitulos.Active) and (edt_prentrada.Text <> '') then begin if strtoint(edt_prentrada.Text) > strtoint(copy(lbl_maxentrada.Caption, 6, Length(lbl_maxentrada.Caption) - 1 - 5)) then begin edt_prentrada.Text := copy(lbl_maxentrada.Caption, 6, Length(lbl_maxentrada.Caption) - 1 - 5); end; if strtoint(edt_prentrada.Text) < strtoint(copy(lbl_minentrada.Caption, 6, Length(lbl_minentrada.Caption) - 1 - 5)) then begin edt_prentrada.Text := copy(lbl_minentrada.Caption, 6, Length(lbl_minentrada.Caption) - 1 - 5); end; queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; if ud_entrada.Max = 0 then begin edt_prentrada.Text := '0'; exit; end; except end; end; procedure TcadDevedores.edt_principalparcelasChange(Sender: TObject); begin try if (strtofloat(edt_principalparcelas.Text) > -1) and (queryListaTitulos.Active) and (edt_principalparcelas.Text <> '') then begin if strtofloat(edt_principalparcelas.Text) > strtoint(copy(lbl_maxprinpar.Caption, 6, Length(lbl_maxprinpar.Caption) - 1 - 5)) then begin edt_principalparcelas.Text := copy(lbl_maxprinpar.Caption, 6, Length(lbl_maxprinpar.Caption) - 1 - 5); end; queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; if up_principalparcelas.Max = 0 then begin edt_principalparcelas.Text := '0'; exit; end; except end; end; procedure TcadDevedores.edt_principalparcelasKeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, edt_principalparcelas.Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.edt_principalquitarChange(Sender: TObject); begin try if (strtofloat(edt_principalquitar.Text) > -1) and (queryListaTitulos.Active) and (edt_principalquitar.Text <> '') then begin if strtofloat(edt_principalquitar.Text) > strtoint(copy(lbl_maxprinquit.Caption, 6, Length(lbl_maxprinquit.Caption) - 1 - 5)) then begin edt_principalquitar.Text := copy(lbl_maxprinquit.Caption, 6, Length(lbl_maxprinquit.Caption) - 1 - 5); end; queryListaTitulos.Refresh; Att_campos; end; if up_principalquitar.Max = 0 then begin edt_principalquitar.Text := '0'; exit; end; except end; end; procedure TcadDevedores.edt_principalquitarKeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, edt_principalquitar.Text) > 0) then begin Key := #0; end; end; procedure TcadDevedores.edt_txextraChange(Sender: TObject); begin inherited; if Length(edt_txextra.Text) < 1 then begin edt_txextra.Text := '0'; end; Att_campos; CalcValorParcelas; end; procedure TcadDevedores.edt_txextraKeyPress(Sender: TObject; var Key: Char); begin inherited; if not(Key in [#8, '0' .. '9', System.SysUtils.FormatSettings.DecimalSeparator]) then begin Key := #0; end else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and (Pos(Key, edt_txextra.Text) > 0) then begin Key := #0; end; end; // function TcadDevedores.EscreveTitulos: TStringDynArray; // var // Count, i, j: Integer; // tx_titulo, vl_titulo, id_titulo: array of string; // begin // Count := 0; // // queryListaTitulos.DisableControls; // for i := 0 to lv_titulos.Items.Count - 1 do // begin // if lv_titulos.Items.Item[i].Checked then // begin // Count := Count + 1; // dtmSystem.tblTitulos.Locate('ID_TITULO', // queryListaTitulosID_TITULO.AsString, []); // setlength(tx_titulo, Count); // setlength(id_titulo, Count); // setlength(vl_titulo, Count); // queryListaTitulos.RecNo := i + 1; // tx_titulo[Count - 1] := queryListaTitulosTX_PRODUTO.AsString; // id_titulo[Count - 1] := queryListaTitulosID_TITULO.AsString; // vl_titulo[Count - 1] := CurrToStrF(queryListaTitulosVL_TITULO.AsCurrency, // ffCurrency, 2, dtmSystem.CusFmt); // // end; // end; // // queryListaTitulos.EnableControls; // setlength(Result, Count); // for j := 0 to Count - 1 do // begin // Result[j] := tx_titulo[j] + ' (ID:' + id_titulo[j] + // ') no valor nominal de ' + vl_titulo[j] + '.'; // end; // end; function TcadDevedores.FindControlAtPos(AScreenPos: TPoint): TControl; var i: Integer; f, m: TForm; p: TPoint; r: TRect; begin Result := nil; for i := Screen.FormCount - 1 downto 0 do begin f := Screen.Forms[i]; if f.Visible and (f.Parent = nil) and (f.FormStyle <> fsMDIChild) and TRect.Create(f.left, f.Top, f.left + f.Width, f.Top + f.Height) .Contains(AScreenPos) then Result := f; end; Result := FindSubcontrolAtPos(Result, AScreenPos, AScreenPos); if (Result is TForm) and (TForm(Result).ClientHandle <> 0) then begin Winapi.Windows.GetWindowRect(TForm(Result).ClientHandle, r); p := TPoint.Create(AScreenPos.X - r.left, AScreenPos.Y - r.Top); m := nil; for i := TForm(Result).MDIChildCount - 1 downto 0 do begin f := TForm(Result).MDIChildren[i]; if TRect.Create(f.left, f.Top, f.left + f.Width, f.Top + f.Height) .Contains(p) then m := f; end; if m <> nil then Result := FindSubcontrolAtPos(m, AScreenPos, p); end; end; function TcadDevedores.FindSubcontrolAtPos(AControl: TControl; AScreenPos, AClientPos: TPoint): TControl; var i: Integer; C: TControl; begin Result := nil; C := AControl; if (C = nil) or not C.Visible or not TRect.Create(C.left, C.Top, C.left + C.Width, C.Top + C.Height).Contains(AClientPos) then exit; Result := AControl; if AControl is TWinControl then for i := 0 to TWinControl(AControl).ControlCount - 1 do begin C := FindSubcontrolAtPos(TWinControl(AControl).Controls[i], AScreenPos, AControl.ScreenToClient(AScreenPos)); if C <> nil then Result := C; end; end; procedure TcadDevedores.FormClose(Sender: TObject; var Action: TCloseAction); // var // i: Word; // Result: Boolean; begin // inherited; // if MessageDlg // ('Você está prestes a fechar um acionamento em andamento. Alterações neste devedor podem não ser salvas. Deseja continuar?', // mtWarning, mbYesNo, 0) = mrNo then // begin // abort; // end; queryCobradores.Close; { with dtmSystem do begin Result := false; for i := 0 to Screen.FormCount - 1 do if Screen.Forms[i] = frmEfetuarCobranca then begin Result := True; with dtmSystem do begin if not tblDevedores.Active then begin tblDevedores.Open; end; if not tblEnderecos.Active then begin tblEnderecos.Open; end; if not tblTelefones.Active then begin tblTelefones.Open; end; if not tblTitulos.Active then begin tblTitulos.Open; end; if not tblProvidencias.Active then begin tblProvidencias.Open; end; if not tblHistorico.Active then begin tblHistorico.Open; end; if not tblCobCampanha.Active then begin tblCobCampanha.Open; end; if not tblCampanhaDevedores.Active then begin tblCampanhaDevedores.Open; end; if not tblAgenda.Active then begin tblAgenda.Open; end; if not tblEmpresa.Active then begin tblEmpresa.Open; end; if not tblCHGEmpresa.Active then begin tblCHGEmpresa.Open; end; if not tblIndicadorFinanceiro.Active then begin tblIndicadorFinanceiro.Open; end; break; end; end; if Result = false then begin tblDevedores.Close; tblEnderecos.Close; tblTelefones.Close; tblTitulos.Close; tblCHGEmpresa.Close; tblHistorico.Close; tblProvidencias.Close; end; end; } if imp then begin frmCobranca.importar := True; end else begin frmCobranca.importar := false; end; Screen.Cursor := crDefault; Action := caFree; cadDevedores := nil; end; procedure TcadDevedores.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin inherited; if navEmail.DataSource <> nil then if navEmail.DataSource.State in [dsInsert, dsEdit] then begin MessageDlg ('Existem alterações pendentes, clique em CONFIRMAR ou CANCELAR.', mtConfirmation, [mbOK], 0); CanClose := false; end; if navtelefones.DataSource <> nil then if navtelefones.DataSource.State in [dsInsert, dsEdit] then begin MessageDlg ('Existem alterações pendentes, clique em CONFIRMAR ou CANCELAR.', mtConfirmation, [mbOK], 0); CanClose := false; end; if navenderecos.DataSource <> nil then if navenderecos.DataSource.State in [dsInsert, dsEdit] then begin MessageDlg ('Existem alterações pendentes, clique em CONFIRMAR ou CANCELAR.', mtConfirmation, [mbOK], 0); CanClose := false; end; if navtitulos.DataSource <> nil then if navtitulos.DataSource.State in [dsInsert, dsEdit] then begin MessageDlg ('Existem alterações pendentes, clique em CONFIRMAR ou CANCELAR.', mtConfirmation, [mbOK], 0); CanClose := false; end; if navHistorico.DataSource <> nil then if navHistorico.DataSource.State in [dsInsert, dsEdit] then begin MessageDlg ('Existem alterações pendentes, clique em CONFIRMAR ou CANCELAR.', mtConfirmation, [mbOK], 0); CanClose := false; end; end; procedure TcadDevedores.FormCreate(Sender: TObject); var Pos, i: Integer; // antes: TTime; begin inherited; Screen.Cursor := crHourGlass; Pos := 0; old_id := -1; ficha_dev := false; setlength(ids_tits_calc, 0); importou := false; estado_db := True; dtp_agendadatahist.Date := Date; dtp_agendadatahist.MinDate := Date; dtp_agendahorahist.Time := Timeof(Now); id_emp_calc := -1; imp := false; if dtmSystem.id_grupo <> 1 then begin dbgrd_tit.Columns[8].Visible := false; dbgrd_tit.Columns[9].Visible := false; lbl_dtpag.Visible := false; lbl_dtrecibo.Visible := false; rdbdt_pag.Enabled := false; rdbdt_pag.Visible := false; rdbdt_recibo.Enabled := false; rdbdt_recibo.Visible := false; DBGrid1.PopupMenu := nil; end; with dtmSystem do begin OpenOrRefresh(tblDevedores); OpenOrRefresh(tblEmail); OpenOrRefresh(tblHistorico); OpenOrRefresh(tblEstados); OpenOrRefresh(tblCidades); OpenOrRefresh(tblEnderecos); OpenOrRefresh(tblTelefones); OpenOrRefresh(tblTitulos); OpenOrRefresh(tblProvidencias); OpenOrRefresh(tblCHGEmpresa); OpenOrRefresh(tblPoliticas); OpenOrRefresh(tblFaixas); tblCHGEmpresa.First; OpenOrRefresh(tblIndicadorFinanceiro); OpenOrRefresh(tblLogCampanhas); OpenOrRefresh(tblDevEmpBoletos); // setlength(cbl_hints,pos+1); pegar do banco texto para jogar nas hints // while not tblCHGEmpresa.Eof do // begin // clb_empresas.Items.Add(tblCHGEmpresaTX_NOME.AsString); // // cbl_hints[pos] := tblCHGEmpresaTX_CNPJ.AsString; // if tblTitulosID_EMPRESA.AsString = tblCHGEmpresaID_EMPRESA.AsString then // begin // clb_empresas.Checked[Pos] := True; // // clb_empresas.Selected[Pos] := True; // end; // tblCHGEmpresa.Next; // Pos := Pos + 1; // // setlength(cbl_hints,pos+1); // end; // for i := 0 to clb_empresas.Items.Count - 1 do // begin // clb_empresas.ItemEnabled[i] := false; // end; // if not(tblHistorico.Active) then // begin // tblHistorico.Open; // end; end; SetupHackedNavigator(navPrincipal, ImageList1, 's', 2); SetupHackedNavigator(navEmail, ImageList1, 's', 2); SetupHackedNavigator(navenderecos, ImageList1, 's', 8); SetupHackedNavigator(navtelefones, ImageList1, 's', 8); SetupHackedNavigator(navtitulos, ImageList1, 's', 8); SetupHackedNavigator(navHistorico, ImageList1, 's', 8); SetupHackedNavigator(DBNavigator1, ImageList1, 'n', 2); pnl_devedores.Enabled := false; pnl_email.Enabled := false; Panel8.Enabled := false; Panel9.Enabled := false; Panel10.Enabled := false; ChecaPermissoes; dtp_atrasorecalc.Date := Date; clb_beneficiarioscalculo.Clear; pcDescontos.TabIndex := 0; if dtsDB.DataSet.IsEmpty then begin dbgrd_devedoreslist.Enabled := false; end else begin dbgrd_devedoreslist.Enabled := True; end; AdjustCheckListBox; end; procedure TcadDevedores.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin inherited; if Key = VK_ESCAPE then begin if MessageDlg ('Você está prestes a fechar um acionamento em andamento. Alterações neste devedor podem não ser salvas. Deseja continuar?', mtWarning, mbYesNo, 0) = mrNo then begin abort; end; Key := 0; Close; end; if (Key = 75) and (Shift = [ssCtrl]) then begin // ShowMessage('Ctrl+k is pressed!'); frmLiberaPermissao := TfrmLiberaPermissao.Create(self); with frmLiberaPermissao do begin level := 3; string_permissoes.Add('CBR.02.01.01.01'); string_permissoes.Add('CBR.02.01.01.01.01'); string_permissoes.Add('CBR.02.01.01.06'); string_permissoes.Add('CBR.02.01.01.06.01'); string_permissoes.Add('CBR.02.01.01.06.02'); string_permissoes.Add('CBR.02.01.01.06.03'); string_permissoes.Add('CBR.02.01.01.02'); string_permissoes.Add('CBR.02.01.01.02.01'); string_permissoes.Add('CBR.02.01.01.02.02'); string_permissoes.Add('CBR.02.01.01.02.03'); string_permissoes.Add('CBR.02.01.01.03'); string_permissoes.Add('CBR.02.01.01.03.01'); string_permissoes.Add('CBR.02.01.01.03.02'); string_permissoes.Add('CBR.02.01.01.03.03'); string_permissoes.Add('CBR.02.01.01.04'); string_permissoes.Add('CBR.02.01.01.04.01'); string_permissoes.Add('CBR.02.01.01.04.02'); string_permissoes.Add('CBR.02.01.01.04.03'); string_permissoes.Add('CBR.02.01.01.05'); string_permissoes.Add('CBR.02.01.01.05.01'); string_permissoes.Add('CBR.02.01.01.05.02'); string_permissoes.Add('CBR.02.01.01.05.03'); string_permissoes.Add('CBR.02.01.02.01.01'); string_permissoes.Add('CBR.02.01.02.01.02'); string_permissoes.Add('CBR.02.01.02.02'); string_permissoes.Add('CBR.02.01.02.03'); string_permissoes.Add('CBR.02.01.02.04'); ShowModal; if ModalResult = mrOk then begin case dtmSystem.cod_liberapermissao of 0: navPrincipal.Enabled := True; 1: navPrincipal.VisibleButtons := navPrincipal.VisibleButtons + [nbDelete]; 2: navEmail.Enabled := True; 3: navEmail.VisibleButtons := navEmail.VisibleButtons + [nbInsert]; 4: navEmail.VisibleButtons := navEmail.VisibleButtons + [nbEdit]; 5: navEmail.VisibleButtons := navEmail.VisibleButtons + [nbDelete]; 6: navenderecos.Enabled := True; 7: navenderecos.VisibleButtons := navenderecos.VisibleButtons + [nbInsert]; 8: navenderecos.VisibleButtons := navenderecos.VisibleButtons + [nbEdit]; 9: navenderecos.VisibleButtons := navenderecos.VisibleButtons + [nbDelete]; 10: navtelefones.Enabled := True; 11: navtelefones.VisibleButtons := navtelefones.VisibleButtons + [nbInsert]; 12: navtelefones.VisibleButtons := navtelefones.VisibleButtons + [nbEdit]; 13: navtelefones.VisibleButtons := navtelefones.VisibleButtons + [nbDelete]; 14: navtitulos.Enabled := True; 15: navtitulos.VisibleButtons := navtitulos.VisibleButtons + [nbInsert]; 16: navtitulos.VisibleButtons := navtitulos.VisibleButtons + [nbEdit]; 17: navtitulos.VisibleButtons := navtitulos.VisibleButtons + [nbDelete]; 18: navHistorico.Enabled := True; 19: navHistorico.VisibleButtons := navHistorico.VisibleButtons + [nbInsert]; 20: navHistorico.VisibleButtons := navHistorico.VisibleButtons + [nbEdit]; 21: navHistorico.VisibleButtons := navHistorico.VisibleButtons + [nbDelete]; 22: tabQuitar.Enabled := True; 23: tabParcelar.Enabled := True; 24: cb_nmulta.Enabled := True; 25: cbx_txextra.Enabled := True; 26: cbx_excentrada.Enabled := True; end; end; end; end; // if (Key = VK_RETURN) and not(mb_fechamento.Focused) then // begin // Perform(WM_NEXTDLGCTL, 0, 0); // Key := 0; // end; end; procedure TcadDevedores.FormShow(Sender: TObject); begin dtp_diaagendamento.Date := Date; with dtmSystem do begin if tblDevedoresTP_CLIENTE.AsString = 'F' then begin dbedt_cpfcnpj.DataField := 'CD_CPF'; end; if tblDevedoresTP_CLIENTE.AsString = 'J' then begin dbedt_cpfcnpj.DataField := 'CD_CNPJ'; end; end; // if pesquisa <> 0 then // begin // dtmSystem.tblDevedores.RecNo := pesquisa; // end; if dtmSystem.tblDevedores.RecordCount > 0 then begin qryConsulta.SQL.Text := 'select * from chg_empresas where id_empresa in ' + '(select id_empresa from chg_titulos' + ' where (tp_situacao = ''A'' or tp_situacao = ''AC'') and (id_devedor = ' + dtmSystem.tblDevedoresID_DEVEDOR.AsString + '))'; qryConsulta.Open; qryConsulta.First; clb_beneficiarioscalculo.Clear; setlength(id_emps_dev, qryConsulta.RecordCount); while not qryConsulta.Eof do begin clb_beneficiarioscalculo.Items.Add(qryConsulta.FieldByName('TX_NOME') .AsString); id_emps_dev[qryConsulta.RecNo - 1] := qryConsulta.FieldByName('ID_EMPRESA').AsInteger; qryConsulta.Next; end; // clb_beneficiarioscalculo.Checked[0] := true; // CriarLista; queryListaTitulos.SQL.Clear; queryListaTitulos.SQL.Text := 'select * from (select * from chg_titulos where id_devedor = ' + dtmSystem.tblDevedoresID_DEVEDOR.AsString + ') where ((tp_situacao = ''A'' or tp_situacao = ''AC''))'; queryListaTitulos.Open; dia_agendado := '__/__/____'; hora_agendado := '__:__'; nome_cobrador := '__________'; end; if dtmSystem.tblUsuarios.RecordCount > 0 then begin queryCobradores.SQL.Text := 'select id_usuario, tx_nome from sys_usuarios where tp_ativo = ' + QuotedStr('S') + ' order by tx_nome'; queryCobradores.Open; end; Screen.Cursor := crDefault; end; function TcadDevedores.gerar_protocolo(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; procedure TcadDevedores.Importao1Click(Sender: TObject); begin // with TimpDevedores.Create(self) do // begin // ShowModal; // // with dtmSystem do // // begin // // if (pcClientes.ActivePage = tabEndereco) then // // begin // // tblEnderecos.Open; // // tblCidades.Open; // // tblEstados.Open; // // end; // // if (pcClientes.ActivePage = tabTel) then // // begin // // tblTelefones.Open; // // end; // // if (pcClientes.ActivePage = tabTitulos) then // // begin // // tblCHGEmpresa.Open; // // tblTitulos.Open; // // end; // // end; // end; imp := True; Close; end; procedure TcadDevedores.lv_titulosChange(Sender: TObject; Item: TListItem; Change: TItemChange); begin // Att_campos; // CalcValorParcelas; end; procedure TcadDevedores.lv_titulosColumnClick(Sender: TObject; Column: TListColumn); begin // ColumnToSort := Column.Index; // (Sender as TCustomListView).AlphaSort; end; procedure TcadDevedores.lv_titulosCompare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); begin // case ColumnToSort of // 2: Compare := CompareText(Item1.SubItems[ColumnToSort-1], Item2.SubItems[ColumnToSort-1]); // 3: Compare := CompareDateTime(strtodate(Item1.SubItems[ColumnToSort-1]), strtodate(Item2.SubItems[ColumnToSort-1])); // 4: Compare := CompareValue(strtofloat(Item1.SubItems[ColumnToSort-1]), strtofloat(Item2.SubItems[ColumnToSort-1])); // 5: Compare := CompareText(Item1.SubItems[ColumnToSort-1], Item2.SubItems[ColumnToSort-1]); // end; end; procedure TcadDevedores.lv_titulosItemChecked(Sender: TObject; Item: TListItem); var i, k: Integer; Checked: Boolean; begin qtde_titulos := 0; Checked := false; k := 0; if lv_titulos.Items.Count > 0 then begin queryListaTitulos.DisableControls; for i := 0 to lv_titulos.Items.Count - 1 do begin if lv_titulos.Items.Item[i].Checked then begin queryListaTitulos.RecNo := i + 1; qtde_titulos := qtde_titulos + 1; str_titulos := str_titulos + queryListaTitulosID_TITULO.AsString + ';'; id_emp := queryListaTitulosID_EMPRESA.AsInteger; Checked := True; setlength(str_tit, k + 1); str_tit[k] := queryListaTitulosID_TITULO.AsInteger; Inc(k, 1); end; end; queryListaTitulos.EnableControls; end; if not Checked then begin str_titulos := 'S/T'; end; edt_indparcelas.Text := '0'; edt_principalparcelas.Text := '0'; edt_multasparcelas.Text := '0'; edt_jurosparcelas.Text := '0'; edt_corquitar.Text := '0'; edt_indquitar.Text := '0'; edt_principalquitar.Text := '0'; edt_multasquitar.Text := '0'; edt_jurosquitar.Text := '0'; edt_corpar.Text := '0'; Att_campos; CalcValorParcelas; end; procedure TcadDevedores.mnuFichatitulosClick(Sender: TObject); begin with TfrmFichaTitulos.Create(self) do begin with zroqryCredores.SQL do begin Clear; Add('select * from chg_empresas where id_empresa in ('); Add('select id_empresa from chg_titulos where id_devedor = ' + dtmSystem.tblDevedoresID_DEVEDOR.AsString + ' )'); end; zroqryCredores.Open; ShowModal; if ModalResult = mrOk then begin if zroqryCredores.IsEmpty then begin MessageDlg('Não há titulos em aberto para constatar.', mtWarning, [mbOK], 0); abort; end; relDados := TrelDados.Create(self); with relDados do begin zROqry.SQL.Clear; zROqry.SQL.Add('select'); zROqry.SQL.Add('*'); zROqry.SQL.Add('from chg_titulos'); zROqry.SQL.Add('where'); zROqry.SQL.Add('id_empresa = ' + dtmSystem.tblCHGEmpresaID_EMPRESA.AsString); zROqry.SQL.Add('and id_devedor = ' + dtmSystem.tblDevedoresID_DEVEDOR.AsString); if not inc_baixados then begin zROqry.SQL.Add('and (tp_situacao = ' + QuotedStr('A') + ' or tp_situacao = ' + QuotedStr('AC') + ')'); end; // zROqry.SQL.Add('and id_titulo in (' + id_titulos + ')'); zROqry.SQL.Add('order by dt_vencimento, vl_titulo'); zROqry.Open; // RLLabel1.Caption := RLLabel1.Caption + DateToStr(dtp_atrasorecalc.Date); // RLLabel1.Left := floor(frbnd_dados.Width / 2) - // floor(RLLabel1.Width / 2); end; relDados.RLReport1.Preview(); end; end; end; procedure TcadDevedores.mnuQuebraAcordoClick(Sender: TObject); var str_help: string; i: Integer; begin inherited; if MessageDlg('Deseja realmente quebrar o acordo selecionado?' + ' Esta opção ira apenas desvincular os títulos originais aos parcelamentos.', mtWarning, [mbYes, mbNo], 0) = mrYes then begin ZReadOnlyQuery1.SQL.Text := 'SELECT * FROM SYS_ACORDOS WHERE ID_ACORDO = ' + dtmSystem.zroQryAcordosID_ACORDO.AsString; ZReadOnlyQuery1.Open; ZReadOnlyQuery1.First; str_help := 'Antes de deletar:' + sLineBreak; while not ZReadOnlyQuery1.Eof do begin for i := 0 to ZReadOnlyQuery1.Fields.Count - 1 do begin str_help := str_help + ZReadOnlyQuery1.Fields[i].FieldName + ': ' + ZReadOnlyQuery1.Fields[i].AsString + sLineBreak; end; ZReadOnlyQuery1.Next; end; dtmSystem.tblLog.Append; dtmSystem.tblLogTX_TABELA.AsString := 'SYS_ACORDOS'; dtmSystem.tblLogID_REGISTRO.AsInteger := dtmSystem.zroQryAcordosID_ITEM.AsInteger; dtmSystem.tblLogTX_ACAO.AsString := 'delete'; dtmSystem.tblLogTL_ACAO.AsString := str_help; dtmSystem.tblLog.Post; dtmSystem.ZSQLProcessorAcordos.Script.Text := 'DELETE FROM SYS_ACORDOS WHERE ID_ACORDO = ' + dtmSystem.zroQryAcordosID_ACORDO.AsString; dtmSystem.ZSQLProcessorAcordos.Execute; dtmSystem.zroQryAcordos.Refresh; end; end; procedure TcadDevedores.mnuretirarClick(Sender: TObject); var i: Integer; begin for i := 0 to lv_titulos.Items.Count - 1 do begin lv_titulos.Items[i].Checked := false; end; qtde_titulos := 0; Att_campos; CalcValorParcelas; end; procedure TcadDevedores.mnu_fichahistClick(Sender: TObject); begin with TconfFichaHistorico.Create(self) do begin id_devedor := dtsDB.DataSet.FieldByName('id_devedor').AsString; ShowModal; end; end; procedure TcadDevedores.mnu_incluirClick(Sender: TObject); var i: Integer; begin for i := 0 to lv_titulos.Items.Count - 1 do begin lv_titulos.Items[i].Checked := True; end; qtde_titulos := lv_titulos.Items.Count; Att_campos; CalcValorParcelas; end; procedure TcadDevedores.navenderecosBeforeAction(Sender: TObject; Button: TNavigateBtn); begin // acontece sempre antes de qualquer ação do navigator // primeiro o meu código, depois o obtido pela herança case Button of nbFirst, nbPrior, nbNext, nbLast, nbInsert, nbRefresh: if navenderecos.DataSource.State in [dsInsert, dsEdit] then begin MessageDlg ('Existem alterações pendentes, clique em CONFIRMAR ou CANCELAR.', mtConfirmation, [mbOK], 0); abort; end; nbPost: begin if dbedt_logradouro.Text = '' then begin MessageDlg('Por favor preencha o nome da rua.', mtWarning, [mbOK], 0); abort; end; if dbedt_num.Text = '' then begin MessageDlg('Por favor preencha um número para o endereço.', mtWarning, [mbOK], 0); abort; end; if dblucmbox_uf.Text = '' then begin MessageDlg('Por favor indique o Estado do enderço.', mtWarning, [mbOK], 0); abort; end; if dblucmbox_cidade.Text = '' then begin MessageDlg('Por favor indique a Cidade do endereço.', mtWarning, [mbOK], 0); abort; end; // SelectNext(ActiveControl as TWinControl, True, True); end; nbDelete: begin if navenderecos.DataSource.State in [dsInsert, dsEdit] then begin MessageDlg ('Existem alterações pendentes, clique em CONFIRMAR ou CANCELAR.', mtConfirmation, [mbOK], 0); abort; end; if MessageDlg('Deseja apagar este registro?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then abort; try dtsEnderecos.DataSet.Delete; except showmessage ('Este registro está sendo utilizado pelo sistema ou contém dependências e não pode ser apagado'); end; abort; end; nbCancel: if MessageDlg('Deseja cancelar as modificações?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then abort; end; end; procedure TcadDevedores.navHistoricoBeforeAction(Sender: TObject; Button: TNavigateBtn); var string_helper: string; begin // inherited; if Button = nbPost then begin if dblucb_providencia.keyvalue < 0 then begin MessageDlg('Por favor escolha uma providência a ser lançada.', mtWarning, [mbOK], 0); abort; end else begin if dtsHistorico.State in [dsInsert] then begin if MessageDlg ('Esta inclusão de histórico irá retirar este devedor de qualquer agendamento previamente realizado.' + ' Deseja continuar?', mtWarning, mbYesNo, 0) = mrNo then begin abort; end; with zroqryProvAgend do begin SQL.Clear; SQL.Add('select * from chg_providencias where tp_forcaagenda = ' + QuotedStr('Sim') + ' and id_providencia = ' + dtmSystem.tblProvidenciasID_PROVIDENCIA.AsString); Open; end; if (zroqryProvAgend.RecordCount = 1) and (cb_agendahist.Checked = false) then begin MessageDlg ('Esta providência exige que você agende o devedor. Por favor agende-o.', mtWarning, [mbOK], 0); abort; end; if cb_agendahist.Checked then begin if dblucb_agendacobhist.keyvalue < 0 then begin MessageDlg('Por favor escolha o cobrador ao qual será agendado.', mtWarning, [mbOK], 0); abort; end else begin // if MessageDlg // ('Você está selecionando um horário para agendamento menor que a hora atual. Por favor verifique o horário do agendamento.', // mtWarning, mbYesNo, 0) = mrNo then // begin // abort; // end; if (dtp_agendahorahist.Time < Timeof(Now)) and (dtp_agendadatahist.Date <= dateof(Now)) then begin MessageDlg ('Você está selecionando um horário para agendamento menor que a hora atual.', mtWarning, mbYesNo, 0); abort; end; end; end; with dtmSystem do begin if not(tblAgenda.Active) then begin tblAgenda.Open; end; tblAgenda.Refresh; while tblAgenda.Locate('ID_DEVEDOR;TP_SITUACAO', VarArrayOf([dtsDevedores.DataSet.FieldByName('ID_DEVEDOR') .AsInteger, 'A']), []) do begin tblAgenda.Edit; tblAgendaTP_SITUACAO.AsString := 'B'; tblAgenda.Post; end; end; if cb_agendahist.Checked then begin with dtmSystem do begin tblAgenda.Append; tblAgendaID_COBRADOR.AsInteger := dblucb_agendacobhist.keyvalue; tblAgendaID_DEVEDOR.AsInteger := dtsDB.DataSet.FieldByName('ID_DEVEDOR').AsInteger; tblAgendaDT_AGENDADA.AsDateTime := dtp_agendadatahist.Date; tblAgendaHR_AGENDADA.AsDateTime := dtp_agendahorahist.Time; tblAgendaDT_QUE_AGENDOU.AsDateTime := Now; tblAgendaQUEM_AGENDOU.AsInteger := dtmSystem.id_usuario; tblAgenda.Post; end; string_helper := 'Agendado para o dia ' + DateToStr(dtp_agendadatahist.Date) + ' no horário ' + timetostr(dtp_agendahorahist.Time) + ' para o cobrador ' + dblucb_agendacobhist.Text; dtp_agendadatahist.Date := dateof(Now); dtp_agendahorahist.Time := Timeof(Now); // end; end; with dtmSystem do begin if not tblCampanhaDevedores.Active then begin tblCampanhaDevedores.Open; end; qryCampanha.SQL.Clear; qryCampanha.SQL.Text := 'select cd.*, c.tx_nome from chg_campanhas_devedores cd left join chg_campanhas c on cd.id_campanha = c.id_campanha where id_devedor = ' + dtmSystem.tblDevedoresID_DEVEDOR.AsString; qryCampanha.Open; qryCampanha.First; while not qryCampanha.Eof do begin tblLogCampanhas.Append; dtmSystem.tblLogCampanhasID_CAMPANHA.AsInteger := qryCampanha.FieldByName('id_campanha').AsInteger; dtmSystem.tblLogCampanhasTX_NOME_CAMPANHA.AsString := qryCampanha.FieldByName('tx_nome').AsString; tblLogCampanhasID_DEVEDOR.AsInteger := qryCampanha.FieldByName('id_devedor').AsInteger; tblLogCampanhasID_USUARIO.AsInteger := id_usuario; tblLogCampanhasDT_TRANSF.AsDateTime := Now; tblLogCampanhasTP_ACAO.AsString := 'apagou p/ agenda'; tblLogCampanhas.Post; qryCampanha.Next; end; qryCampanha.Close; dtmSystem.ZSQLProcessor1.Script.Text := 'delete from chg_campanhas_devedores where id_devedor = ' + QuotedStr(dtsDevedores.DataSet.FieldByName('ID_DEVEDOR').AsString); dtmSystem.ZSQLProcessor1.Execute; if cb_agendahist.Checked then begin dbmemo_box.lines.Add(string_helper); cb_agendahist.Checked := false; end; tblHistoricoID_DEVEDOR.AsInteger := dtsDB.DataSet.FieldByName('ID_DEVEDOR').AsInteger; tblHistoricoDT_CONTATO.AsDateTime := Now; dtp_agendadatahist.Date := Date; dtp_agendahorahist.Time := Timeof(Now); dtp_diaagendamento.Date := Date; dtp_horaagendamento.Date := Timeof(Now); end; end; end; end; if Button = nbCancel then begin if MessageDlg('Deseja realmente cancelar este histórico?', mtWarning, [mbYes, mbNo], 0) = mrNo then begin abort; end; end; end; procedure TcadDevedores.navPrincipalBeforeAction(Sender: TObject; Button: TNavigateBtn); var resp: Integer; begin // verifica se o usuário realmente deseja remover um devedor if Button = nbDelete then begin resp := MessageDlg ('Ao remover um devedor todos os dados relacionados a ele serão apagados.' + ' Deseja realmente realizar esta ação:', mtWarning, mbYesNo, 0); if resp = mrNo then begin abort; end else begin resp := MessageDlg('Você tem certeza absoluta disso?', mtWarning, mbYesNo, 0); if resp = mrNo then begin abort; end else begin dtmSystem.tblDevedores.Delete; abort; end; end; end; if Button = nbPost then begin if dbrgrp_tpdevedor.Value = 'F' then begin dtmSystem.tblDevedoresCD_CNPJ.Clear; end; if dbrgrp_tpdevedor.Value = 'J' then begin dtmSystem.tblDevedoresCD_CPF.Clear; end; if dbedt_cpfcnpj.Text = '' then begin MessageDlg ('Por favor insira o CPF/CNPJ antes de finalizar o cadastro do Devedor.', mtWarning, [mbOK], 0); abort; end; // dtmSystem.tblDevedoresID_COBRADOR.AsString := 'teste'; //teste de erro end; inherited; end; procedure TcadDevedores.navtelefonesBeforeAction(Sender: TObject; Button: TNavigateBtn); begin // acontece sempre antes de qualquer ação do navigator // primeiro o meu código, depois o obtido pela herança case Button of nbFirst, nbPrior, nbNext, nbLast, nbInsert, nbRefresh: if navtelefones.DataSource.State in [dsInsert, dsEdit] then begin MessageDlg ('Existem alterações pendentes, clique em CONFIRMAR ou CANCELAR.', mtConfirmation, [mbOK], 0); abort; end; nbPost: begin if dbedt_tel.Text = '' then begin MessageDlg('Por favor preencha um número para o telefone.', mtWarning, [mbOK], 0); abort; end; try dbedt_tel.Text := dtmSystem.FormatTelefone(dbedt_tel.Text); except on E: Exception do begin MessageDlg(E.Message, mtWarning, [mbOK], 0); abort; end; end; if dbrg_tipotel.ItemIndex = -1 then begin MessageDlg('Por favor escolha o tipo de telefone.', mtWarning, [mbOK], 0); abort; end; if (Length(dbedt_tel.Text) = 10) then begin dbrg_tipotel.ItemIndex := 1; end; if (Length(dbedt_tel.Text) = 9) then begin dbrg_tipotel.ItemIndex := 0; end; // SelectNext(ActiveControl as TWinControl, True, True); end; nbDelete: begin if navtelefones.DataSource.State in [dsInsert, dsEdit] then begin MessageDlg ('Existem alterações pendentes, clique em CONFIRMAR ou CANCELAR.', mtConfirmation, [mbOK], 0); abort; end; if MessageDlg('Deseja apagar este registro?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then abort; try dtsTelefones.DataSet.Delete; except showmessage ('Este registro está sendo utilizado pelo sistema ou contém dependências e não pode ser apagado'); end; abort; end; nbCancel: if MessageDlg('Deseja cancelar as modificações?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then abort; end; end; procedure TcadDevedores.navtitulosBeforeAction(Sender: TObject; Button: TNavigateBtn); begin case Button of nbFirst, nbPrior, nbNext, nbLast, nbInsert, nbRefresh: if navtitulos.DataSource.State in [dsInsert, dsEdit] then begin MessageDlg ('Existem alterações pendentes, clique em CONFIRMAR ou CANCELAR.', mtConfirmation, [mbOK], 0); abort; end; nbPost: begin if dbedit_produto.Text = '' then begin MessageDlg('Por favor insira um nome para o título.', mtWarning, [mbOK], 0); abort; end; if dbedt_vltit.Text = '' then begin MessageDlg('Por favor insira um valor para o título.', mtWarning, [mbOK], 0); abort; end; // for i := 0 to clb_empresas.Items.Count - 1 do // begin // if clb_empresas.Checked[i] then // begin // dtmSystem.tblCHGEmpresa.Locate('TX_NOME', // clb_empresas.Items[i], []); // if selected_id_chg_empresa <> -1 then // begin // dtmSystem.tblTitulosID_EMPRESA.AsInteger := selected_id_chg_empresa; // end; // dtmSystem.tblCHGEmpresaID_EMPRESA.AsString; // end; // end; if DateToStr(rDBDateTimePicker1.Date) = '30/12/1899' then begin MessageDlg ('Por favor selecione uma data de vencimento para o título.', mtWarning, [mbOK], 0); abort; end; if dtmSystem.tblTitulosID_EMPRESA.AsString = '' then begin MessageDlg('Por favor indique um Credor para o título.', mtWarning, [mbOK], 0); abort; end; // SelectNext(ActiveControl as TWinControl, True, True); end; nbDelete: begin if navtitulos.DataSource.State in [dsInsert, dsEdit] then begin MessageDlg ('Existem alterações pendentes, clique em CONFIRMAR ou CANCELAR.', mtConfirmation, [mbOK], 0); abort; end; if MessageDlg('Deseja apagar este registro?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then abort; try dtsTitulos.DataSet.Delete; except showmessage ('Este registro está sendo utilizado pelo sistema ou contém dependências e não pode ser apagado'); end; abort; end; nbCancel: begin if MessageDlg('Deseja cancelar as modificações?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then begin abort; end; // if clb_empresas.Items.IndexOf // (dtmSystem.tblCHGEmpresaTX_NOME.AsString) > -1 then // begin // clb_empresas.Checked // [clb_empresas.Items.IndexOf(dtmSystem.tblCHGEmpresaTX_NOME.AsString) // ] := false; // // clb_empresas.Selected // // [clb_empresas.Items.IndexOf(dtmSystem.tblCHGEmpresaTX_NOME.AsString) // // ] := false; // end; // dtmSystem.tblCHGEmpresa.Locate('ID_EMPRESA', // dtmSystem.tblTitulosID_EMPRESA.AsInteger, []); // if clb_empresas.Items.IndexOf // (dtmSystem.tblCHGEmpresaTX_NOME.AsString) > -1 then // begin // clb_empresas.Checked // [clb_empresas.Items.IndexOf // (dtmSystem.tblCHGEmpresaTX_NOME.AsString)] := True; // // clb_empresas.Selected // // [clb_empresas.Items.IndexOf(dtmSystem.tblCHGEmpresaTX_NOME.AsString) // // ] := false; // end; end; end; end; procedure TcadDevedores.Panel1Enter(Sender: TObject); begin // dbrgrp_tpdevedor.SetFocus; // dbrgrp_tpdevedor.ItemIndex := 0; end; procedure TcadDevedores.pcClientesChange(Sender: TObject); var // antes: TTime; // estado_db1, estado_db2, estado_db3, estado_db4, estado_db5: Boolean; i: Integer; begin // Screen.Cursor := crHourGlass; // if (pagina <> 5) and (pagina <> 6) then // begin // estado_db := navPrincipal.Enabled; // estado_db1 := navenderecos.Enabled; // estado_db2 := navtelefones.Enabled; // estado_db3 := navtitulos.Enabled; // estado_db5 := navHistorico.Enabled; // end; if fechamento = 'fechamento' then begin pcClientes.TabIndex := pagina; abort; end; if pcClientes.ActivePage = tabTitulos then begin dtmSystem.tblTitulos.SortType := stDescending; end else begin dtmSystem.tblTitulos.SortType := stAscending; end; if pcClientes.TabIndex = 6 then begin pcClientes.TabIndex := pagina; abort; end; if (pagina = 5) then begin setlength(ids_tits_calc, queryListaTitulos.RecordCount); for i := 0 to lv_titulos.Items.Count - 1 do begin if lv_titulos.Items[i].Checked then begin ids_tits_calc[i] := True; end else begin ids_tits_calc[i] := false; end; end; end; if (pcClientes.TabIndex = 5) or (pcClientes.TabIndex = 6) then begin if (dtsDB.DataSet.State in [dsInsert, dsEdit]) or (dtsEnderecos.DataSet.State in [dsInsert, dsEdit]) or (dtsTelefones.DataSet.State in [dsInsert, dsEdit]) or (dtsTitulos.DataSet.State in [dsInsert, dsEdit]) or (dtsHistorico.DataSet.State in [dsInsert, dsEdit]) or (dtsEmail.DataSet.State in [dsInsert, dsEdit]) then begin MessageDlg ('Existem alterações pendentes, clique em CONFIRMAR ou CANCELAR.', mtWarning, [mbOK], 0); pcClientes.TabIndex := pagina; abort; end else begin // navPrincipal.Enabled := false; // navenderecos.Enabled := false; // navtelefones.Enabled := false; // navtitulos.Enabled := false; // navHistorico.Enabled := false; // GroupBox1.Enabled := false; clb_beneficiarioscalculo.Clear; qryConsulta.SQL.Text := 'select * from chg_empresas where id_empresa in ' + '(select id_empresa from chg_titulos' + ' where (tp_situacao = ''A'' or tp_situacao = ''AC'') and (id_devedor = ' + dtmSystem.tblDevedoresID_DEVEDOR.AsString + '))'; qryConsulta.Open; qryConsulta.First; setlength(id_emps_dev, qryConsulta.RecordCount); while not qryConsulta.Eof do begin clb_beneficiarioscalculo.Items.Add(qryConsulta.FieldByName('TX_NOME') .AsString); id_emps_dev[qryConsulta.RecNo - 1] := qryConsulta.FieldByName('ID_EMPRESA').AsInteger; qryConsulta.Next; end; if id_emp_calc <> -1 then begin clb_beneficiarioscalculo.Checked[id_emp_calc] := True; end; CriarLista; if pagina <> 5 then begin if Length(ids_tits_calc) > 0 then begin for i := 0 to Length(ids_tits_calc) - 1 do begin lv_titulos.Items[i].Checked := ids_tits_calc[i]; end; end; end; end; // estado_db := navPrincipal.Enabled; // navPrincipal.Enabled := false; // GroupBox1.Enabled := false; // if (dtmSystem.tblDevedores.RecordCount > 0) { and // (not(dtsTitulos.State in [dsInsert])) } then // begin // qryConsulta.SQL.Clear; // qryConsulta.SQL.Text := 'select * from chg_empresas where id_empresa in ' // + '(select id_empresa from chg_titulos' + // ' where (tp_situacao = ''A'' or tp_situacao = ''AC'') and (id_devedor = ' // + dtmSystem.tblDevedoresID_DEVEDOR.AsString + '))'; // // if not(qryConsulta.Active) then // begin // qryConsulta.Open; // end; // qryConsulta.First; // clb_beneficiarioscalculo.Clear; // while not qryConsulta.Eof do // begin // clb_beneficiarioscalculo.Items.Add(qryConsulta.FieldByName('TX_NOME') // .AsString); // qryConsulta.Next; // end; // end; end else begin // if dtmSystem.VerificarPermissao('DEVCBR.01') then // begin // navPrincipal.Enabled := estado_db; // navenderecos.Enabled := estado_db; // navtelefones.Enabled := estado_db; // navtitulos.Enabled := estado_db; // navHistorico.Enabled := estado_db; // // end; // GroupBox1.Enabled := estado_db; end; if pcClientes.TabIndex = 5 then begin end; pcDescontos.TabIndex := 0; // if (pcClientes.TabIndex <> 5) and (pcClientes.TabIndex <> 6) then // begin // navPrincipal.Enabled := true; // navenderecos.Enabled := true; // navtelefones.Enabled := true; // navtitulos.Enabled := true; // navHistorico.Enabled := true; // // end; // GroupBox1.Enabled := true; // end; // navPrincipal.Enabled := dtmSystem.VerificarPermissao('DEVCBR.01'); // navenderecos.Enabled := dtmSystem.VerificarPermissao('DEVCBR.02'); // navtelefones.Enabled := dtmSystem.VerificarPermissao('DEVCBR.03'); // navtitulos.Enabled := dtmSystem.VerificarPermissao('DEVCBR.04'); // navHistorico.Enabled := dtmSystem.VerificarPermissao('DEVCBR.06'); // Screen.Cursor := crDefault; end; procedure TcadDevedores.pcClientesChanging(Sender: TObject; var AllowChange: Boolean); begin pagina := pcClientes.TabIndex; end; procedure TcadDevedores.PopupMenu1Popup(Sender: TObject); var Control: TControl; begin posi := Mouse.CursorPos; Control := FindControlAtPos(posi); cp_tel.Visible := false; cp_telddd.Visible := false; if Control is TDBEdit then begin if ((Control as TDBEdit).DataSource = dtsTelefones) and (((Control as TDBEdit).DataField = 'NR_DDD') or ((Control as TDBEdit).DataField = 'NR_NUMERO')) then begin cp_tel.Visible := True; cp_telddd.Visible := True; end; end; if (Control is TDBGrid) then begin if (Control as TDBGrid).DataSource = dtsTelefones then begin cp_tel.Visible := True; cp_telddd.Visible := True; end; end; end; procedure TcadDevedores.queryListaTitulosCalcFields(DataSet: TDataSet); var vl_corrigido, vl_cor_antes_desc, vl_nominal, vl_indices, pl_juros, pl_multa, pl_indicador, pl_entrada, pl_encargos, regra_3, valor, juros, parcela, par_extra, helper_indice, cred_fin, vl_cor_depois_desc: currency; dividendo: double; g: Integer; begin // inicialização de variáveis juros := 0.00; dividendo := 0.00; // quantidade de dias de atraso dtsCHGEmpresa.DataSet.Locate('ID_EMPRESA', queryListaTitulosID_EMPRESA.AsString, []); if not(dtsEmpresa.DataSet.Active) then begin dtsEmpresa.DataSet.Open; end; dtsEmpresa.DataSet.First; if dateof(dtp_atrasorecalc.Date) > dateof(queryListaTitulosDT_VENCIMENTO.AsDateTime) then begin queryListaTitulosDT_ATRASO.AsInteger := DaysBetween(dtp_atrasorecalc.Date, queryListaTitulosDT_VENCIMENTO.AsDateTime); end else begin queryListaTitulosDT_ATRASO.AsInteger := 0; end; vl_nominal := queryListaTitulosVL_TITULO.AsCurrency; queryListaTitulosVL_PRINCIPAL.AsCurrency := vl_nominal; with dtmSystem do begin // verifica se o título pertence a algum atraso dtsIndicadorFinanceiro.DataSet.Refresh; dtsIndicadorFinanceiro.DataSet.Filter := 'ATRASO_MIN <=' + inttostr(queryListaTitulosDT_ATRASO.AsInteger) + ' and ATRASO_MAX >= ' + inttostr(queryListaTitulosDT_ATRASO.AsInteger) + ' and ID_CHG_EMPRESA = ' + dtsCHGEmpresa.DataSet.FieldByName('ID_EMPRESA').AsString; dtsIndicadorFinanceiro.DataSet.Filtered := True; if dtsIndicadorFinanceiro.DataSet.IsEmpty then begin queryListaTitulosPR_INDICADOR.AsFloat := dtsCHGEmpresa.DataSet.FieldByName ('PR_INDICADOR_FINANCEIRO').AsFloat; // queryListaTitulosPR_INDICADOR.AsFloat := 0; end else begin queryListaTitulosPR_INDICADOR.AsFloat := dtsIndicadorFinanceiro.DataSet.FieldByName('PR_INDICADOR').AsFloat; end; dtsFaixas.DataSet.Filtered := false; dtsPoliticas.DataSet.Refresh; dtsPoliticas.DataSet.Filter := 'DT_INICIO <= ' + QuotedStr(FormatDateTime('YYYY-mm-dd', Date)) + ' and DT_FIM >= ' + QuotedStr(FormatDateTime('YYYY-mm-dd', Date)) + ' and ID_EMPRESA = ' + dtsCHGEmpresa.DataSet.FieldByName('ID_EMPRESA').AsString; // número máx de parcelamento queryListaTitulosNR_PARCELAS.AsInteger := dtsCHGEmpresa.DataSet.FieldByName ('NR_PARCELAS').AsInteger; dtsFaixas.DataSet.Refresh; if tblPoliticasID_POLITICA.AsString <> '' then begin dtsFaixas.DataSet.Filter := 'ATRASO_MIN <=' + inttostr(queryListaTitulosDT_ATRASO.AsInteger) + ' and ATRASO_MAX >= ' + inttostr(queryListaTitulosDT_ATRASO.AsInteger) + ' and ID_POLITICA = ' + tblPoliticasID_POLITICA.AsString; dtsFaixas.DataSet.Filtered := True; if dtsFaixas.DataSet.IsEmpty then begin dtsFaixas.DataSet.Filtered := false; dtsFaixas.DataSet.Filter := 'DT_MIN <=' + QuotedStr(FormatDateTime('YYYY-mm-dd', queryListaTitulosDT_VENCIMENTO.AsDateTime)) + ' and DT_MAX >= ' + QuotedStr(FormatDateTime('YYYY-mm-dd', queryListaTitulosDT_VENCIMENTO.AsDateTime)) + ' and ID_POLITICA = ' + tblPoliticasID_POLITICA.AsString; end; end else begin dtsFaixas.DataSet.Filter := 'DT_MIN <= ' + QuotedStr(FormatDateTime('YYYY-mm-dd', queryListaTitulosDT_VENCIMENTO.AsDateTime)) + ' and DT_MAX >= ' + QuotedStr(FormatDateTime('YYYY-mm-dd', queryListaTitulosDT_VENCIMENTO.AsDateTime)) + ' and ID_POLITICA = 999999999'; end; dtsFaixas.DataSet.Filtered := True; // porcentagens de cobrança e descontos if dtsFaixas.DataSet.IsEmpty then begin queryListaTitulosPR_MULTA.AsFloat := dtsCHGEmpresa.DataSet.FieldByName ('PR_MULTA').AsFloat; queryListaTitulosPR_JUROS.AsFloat := dtsCHGEmpresa.DataSet.FieldByName ('PR_JUROS').AsFloat; queryListaTitulosNR_JUROS.AsFloat := dtsCHGEmpresa.DataSet.FieldByName ('NR_JUROS').AsFloat; queryListaTitulosTP_JUROS.AsString := dtsCHGEmpresa.DataSet.FieldByName ('TP_JUROS').AsString; queryListaTitulosPR_QUITACAO_INDICADOR.AsFloat := dtsCHGEmpresa.DataSet.FieldByName('PR_DESC_QUIT_IND_FIN').AsFloat; queryListaTitulosPR_QUITACAO_PRINCIPAL.AsFloat := dtsCHGEmpresa.DataSet.FieldByName('PR_DESC_QUIT_PRIN').AsFloat; queryListaTitulosPR_QUITACAO_MULTA.AsFloat := dtsCHGEmpresa.DataSet.FieldByName('PR_DESC_QUIT_MULTA').AsFloat; queryListaTitulosPR_QUITACAO_JUROS.AsFloat := dtsCHGEmpresa.DataSet.FieldByName('PR_DESC_QUIT_JUROS').AsFloat; queryListaTitulosPR_QUITACAO_COR.AsFloat := dtsCHGEmpresa.DataSet.FieldByName('PR_DESC_QUIT_COR').AsFloat; queryListaTitulosPR_PARCELA_INDICADOR.AsFloat := dtsCHGEmpresa.DataSet.FieldByName('PR_DESC_FINAN_IND_FIN').AsFloat; queryListaTitulosPR_PARCELA_PRINCIPAL.AsFloat := dtsCHGEmpresa.DataSet.FieldByName('PR_DESC_FINAN_PRIN').AsFloat; queryListaTitulosPR_PARCELA_MULTA.AsFloat := dtsCHGEmpresa.DataSet.FieldByName('PR_DESC_FINAN_MULTA').AsFloat; queryListaTitulosPR_PARCELA_JUROS.AsFloat := dtsCHGEmpresa.DataSet.FieldByName('PR_DESC_FINAN_JUROS').AsFloat; queryListaTitulosPR_PARCELA_COR.AsFloat := dtsCHGEmpresa.DataSet.FieldByName('PR_DESC_FINAN_COR').AsFloat; end else begin queryListaTitulosPR_MULTA.AsFloat := dtsFaixas.DataSet.FieldByName ('PR_MULTA').AsFloat; queryListaTitulosPR_JUROS.AsFloat := dtsFaixas.DataSet.FieldByName ('PR_JUROS').AsFloat; queryListaTitulosNR_JUROS.AsFloat := dtsFaixas.DataSet.FieldByName ('NR_JUROS').AsFloat; queryListaTitulosTP_JUROS.AsString := dtsFaixas.DataSet.FieldByName ('TP_JUROS').AsString; queryListaTitulosPR_QUITACAO_INDICADOR.AsFloat := dtsFaixas.DataSet.FieldByName('PR_DESC_QUIT_IND_FIN').AsFloat; queryListaTitulosPR_QUITACAO_PRINCIPAL.AsFloat := dtsFaixas.DataSet.FieldByName('PR_DESC_QUIT_PRIN').AsFloat; queryListaTitulosPR_QUITACAO_MULTA.AsFloat := dtsFaixas.DataSet.FieldByName('PR_DESC_QUIT_MULTA').AsFloat; queryListaTitulosPR_QUITACAO_JUROS.AsFloat := dtsFaixas.DataSet.FieldByName('PR_DESC_QUIT_JUROS').AsFloat; queryListaTitulosPR_QUITACAO_COR.AsFloat := dtsFaixas.DataSet.FieldByName ('PR_DESC_QUIT_COR').AsFloat; queryListaTitulosPR_PARCELA_INDICADOR.AsFloat := dtsFaixas.DataSet.FieldByName('PR_DESC_FINAN_IND_FIN').AsFloat; queryListaTitulosPR_PARCELA_PRINCIPAL.AsFloat := dtsFaixas.DataSet.FieldByName('PR_DESC_FINAN_PRIN').AsFloat; queryListaTitulosPR_PARCELA_MULTA.AsFloat := dtsFaixas.DataSet.FieldByName ('PR_DESC_FINAN_MULTA').AsFloat; queryListaTitulosPR_PARCELA_JUROS.AsFloat := dtsFaixas.DataSet.FieldByName ('PR_DESC_FINAN_JUROS').AsFloat; queryListaTitulosPR_PARCELA_COR.AsFloat := dtsFaixas.DataSet.FieldByName ('PR_DESC_FINAN_COR').AsFloat; end; // valor das parcelas dos encargos if dateof(dtp_atrasorecalc.Date) > dateof(queryListaTitulosDT_VENCIMENTO.AsDateTime) then begin pl_indicador := vl_nominal * (queryListaTitulosPR_INDICADOR.AsFloat / 100); end else begin pl_indicador := 0; end; queryListaTitulosVL_INDICADOR.AsCurrency := pl_indicador; if queryListaTitulosTP_JUROS.AsString = 'P' then begin pl_juros := vl_nominal * ((queryListaTitulosPR_JUROS.AsFloat / 30) / 100) * queryListaTitulosDT_ATRASO.AsInteger; end else begin pl_juros := queryListaTitulosNR_JUROS.AsFloat * queryListaTitulosDT_ATRASO.AsInteger; end; queryListaTitulosVL_JUROS.AsCurrency := pl_juros; if dateof(dtp_atrasorecalc.Date) > dateof(queryListaTitulosDT_VENCIMENTO.AsDateTime) then begin pl_multa := vl_nominal * (queryListaTitulosPR_MULTA.AsFloat / 100); end { else begin pl_multa := 0; end }; if ((dtp_atrasorecalc.Date) <= (queryListaTitulosDT_VENCIMENTO.AsDateTime)) or (cb_nmulta.Checked) then begin pl_multa := 0; end; queryListaTitulosVL_MULTA.AsCurrency := pl_multa; pl_encargos := pl_multa + pl_juros + pl_indicador + vl_indices; // valor encargos queryListaTitulosVL_ENCARGOS.AsCurrency := pl_encargos; vl_corrigido := vl_nominal + pl_encargos; queryListaTitulosVL_CORRIGIDO.AsCurrency := vl_corrigido; vl_cor_antes_desc := vl_corrigido; // if cb_nmulta.Checked then // begin // pl_encargos := pl_encargos - pl_multa; // vl_corrigido := vl_nominal + pl_encargos; // queryListaTitulosVL_CORRIGIDO.AsCurrency := vl_corrigido; // end; // // valor encargos // queryListaTitulosVL_ENCARGOS.AsCurrency := pl_encargos; // porcentagem da entrada queryListaTitulosPR_ENTRADA_MIN.AsFloat := dtsCHGEmpresa.DataSet.FieldByName ('PR_ENTRADA_MIN').AsFloat; queryListaTitulosPR_ENTRADA_MAX.AsFloat := dtsCHGEmpresa.DataSet.FieldByName ('PR_ENTRADA_MAX').AsFloat; if cbx_excentrada.Checked then begin pl_entrada := StrToCurr(edt_excentrada.Text); if qtde_titulos <> 0 then begin queryListaTitulosVL_ENTRADA.AsCurrency := pl_entrada / qtde_titulos; end; end else begin if dtsCHGEmpresa.DataSet.FieldByName('TP_ENTRADA').AsString = 'PO' then // entrada em porcentagem begin // queryListaTitulosPR_ENTRADA.AsFloat := dtsCHGEmpresa.DataSet.FieldByName // ('PR_ENTRADA').AsFloat; queryListaTitulosPR_ENTRADA.AsFloat := strtofloat(edt_prentrada.Text); pl_entrada := vl_corrigido * (queryListaTitulosPR_ENTRADA.AsFloat / 100); queryListaTitulosVL_ENTRADA.AsCurrency := pl_entrada; end; if dtsCHGEmpresa.DataSet.FieldByName('TP_ENTRADA').AsString = 'PA' then // entrada = parcela begin pl_entrada := 0; queryListaTitulosVL_ENTRADA.AsCurrency := pl_entrada; end; end; dtsIndicadorFinanceiro.DataSet.Filtered := false; dtsPoliticas.DataSet.Filtered := false; dtsFaixas.DataSet.Filtered := false; end; // Descontos sobre Quitar if strtofloat(edt_indquitar.Text) > queryListaTitulosPR_QUITACAO_INDICADOR.AsFloat then begin queryListaTitulosVL_DESC_QUIT_IND.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency * (queryListaTitulosPR_QUITACAO_INDICADOR.AsFloat / 100); end else begin queryListaTitulosVL_DESC_QUIT_IND.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency * (strtofloat(edt_indquitar.Text) / 100); end; if strtofloat(edt_principalquitar.Text) > queryListaTitulosPR_QUITACAO_PRINCIPAL.AsFloat then begin queryListaTitulosVL_DESC_QUIT_PRIN.AsCurrency := queryListaTitulosVL_TITULO.AsCurrency * (queryListaTitulosPR_QUITACAO_PRINCIPAL.AsFloat / 100); end else begin queryListaTitulosVL_DESC_QUIT_PRIN.AsCurrency := queryListaTitulosVL_TITULO.AsCurrency * (strtofloat(edt_principalquitar.Text) / 100); end; if strtofloat(edt_multasquitar.Text) > queryListaTitulosPR_QUITACAO_MULTA.AsFloat then begin queryListaTitulosVL_DESC_QUIT_MULTA.AsCurrency := queryListaTitulosVL_MULTA.AsCurrency * (queryListaTitulosPR_QUITACAO_MULTA.AsFloat / 100); end else begin queryListaTitulosVL_DESC_QUIT_MULTA.AsCurrency := queryListaTitulosVL_MULTA.AsCurrency * (strtofloat(edt_multasquitar.Text) / 100); end; if strtofloat(edt_jurosquitar.Text) > queryListaTitulosPR_QUITACAO_JUROS.AsFloat then begin queryListaTitulosVL_DESC_QUIT_JUROS.AsCurrency := queryListaTitulosVL_JUROS.AsCurrency * (queryListaTitulosPR_QUITACAO_JUROS.AsFloat / 100); end else begin queryListaTitulosVL_DESC_QUIT_JUROS.AsCurrency := queryListaTitulosVL_JUROS.AsCurrency * (strtofloat(edt_jurosquitar.Text) / 100); end; // Descontos sobre Parcelar if strtofloat(edt_indparcelas.Text) > queryListaTitulosPR_PARCELA_INDICADOR.AsFloat then begin queryListaTitulosVL_DESC_PAR_IND.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency * (queryListaTitulosPR_PARCELA_INDICADOR.AsFloat / 100); end else begin queryListaTitulosVL_DESC_PAR_IND.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency * (strtofloat(edt_indparcelas.Text) / 100); end; if strtofloat(edt_principalparcelas.Text) > queryListaTitulosPR_PARCELA_PRINCIPAL.AsFloat then begin queryListaTitulosVL_DESC_PAR_PRIN.AsCurrency := queryListaTitulosVL_TITULO.AsCurrency * (queryListaTitulosPR_PARCELA_PRINCIPAL.AsFloat / 100); end else begin queryListaTitulosVL_DESC_PAR_PRIN.AsCurrency := queryListaTitulosVL_TITULO.AsCurrency * (strtofloat(edt_principalparcelas.Text) / 100); end; if strtofloat(edt_multasparcelas.Text) > queryListaTitulosPR_PARCELA_MULTA.AsFloat then begin queryListaTitulosVL_DESC_PAR_MULTA.AsCurrency := queryListaTitulosVL_MULTA.AsCurrency * (queryListaTitulosPR_PARCELA_MULTA.AsFloat / 100); end else begin queryListaTitulosVL_DESC_PAR_MULTA.AsCurrency := queryListaTitulosVL_MULTA.AsCurrency * (strtofloat(edt_multasparcelas.Text) / 100); end; if strtofloat(edt_jurosparcelas.Text) > queryListaTitulosPR_PARCELA_JUROS.AsFloat then begin queryListaTitulosVL_DESC_PAR_JUROS.AsCurrency := queryListaTitulosVL_JUROS.AsCurrency * (queryListaTitulosPR_PARCELA_JUROS.AsFloat / 100); end else begin queryListaTitulosVL_DESC_PAR_JUROS.AsCurrency := queryListaTitulosVL_JUROS.AsCurrency * (strtofloat(edt_jurosparcelas.Text) / 100); end; queryListaTitulosVL_DESC_IND.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency; queryListaTitulosVL_DESC_PRIN.AsCurrency := queryListaTitulosVL_PRINCIPAL.AsCurrency; queryListaTitulosVL_DESC_MULTA.AsCurrency := queryListaTitulosVL_MULTA.AsCurrency; queryListaTitulosVL_DESC_JUROS.AsCurrency := queryListaTitulosVL_JUROS.AsCurrency; // valores depois dos descontos aplicados if (cb_descquit.Checked) then begin queryListaTitulosVL_DESC_IND.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency - queryListaTitulosVL_DESC_QUIT_IND.AsCurrency; queryListaTitulosVL_DESC_PRIN.AsCurrency := queryListaTitulosVL_PRINCIPAL.AsCurrency - queryListaTitulosVL_DESC_QUIT_PRIN.AsCurrency; queryListaTitulosVL_DESC_MULTA.AsCurrency := queryListaTitulosVL_MULTA.AsCurrency - queryListaTitulosVL_DESC_QUIT_MULTA.AsCurrency; queryListaTitulosVL_DESC_JUROS.AsCurrency := queryListaTitulosVL_JUROS.AsCurrency - queryListaTitulosVL_DESC_QUIT_JUROS.AsCurrency; queryListaTitulosVL_CORRIGIDO.AsCurrency := queryListaTitulosVL_PRINCIPAL.AsCurrency + queryListaTitulosVL_ENCARGOS.AsCurrency - (queryListaTitulosVL_DESC_QUIT_IND.AsCurrency + queryListaTitulosVL_DESC_QUIT_PRIN.AsCurrency + queryListaTitulosVL_DESC_QUIT_JUROS.AsCurrency + queryListaTitulosVL_DESC_QUIT_MULTA.AsCurrency); if cbx_excentrada.Checked then begin if qtde_titulos <> 0 then begin queryListaTitulosVL_ENTRADA.AsCurrency := StrToCurr(edt_excentrada.Text) / qtde_titulos; end; end else begin if dtsCHGEmpresa.DataSet.FieldByName('TP_ENTRADA').AsString = 'PO' then begin queryListaTitulosVL_ENTRADA.AsCurrency := queryListaTitulosVL_CORRIGIDO.AsCurrency * (queryListaTitulosPR_ENTRADA.AsFloat / 100); end; if dtsCHGEmpresa.DataSet.FieldByName('TP_ENTRADA').AsString = 'PA' then begin queryListaTitulosVL_ENTRADA.AsCurrency := 0; end; end; // end; end; if (cb_descpar.Checked) and (strtoint(edt_nrparcelas.Text) >= 1) then begin queryListaTitulosVL_DESC_IND.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency - queryListaTitulosVL_DESC_PAR_IND.AsCurrency; queryListaTitulosVL_DESC_PRIN.AsCurrency := queryListaTitulosVL_PRINCIPAL.AsCurrency - queryListaTitulosVL_DESC_PAR_PRIN.AsCurrency; queryListaTitulosVL_DESC_MULTA.AsCurrency := queryListaTitulosVL_MULTA.AsCurrency - queryListaTitulosVL_DESC_PAR_MULTA. AsCurrency; queryListaTitulosVL_DESC_JUROS.AsCurrency := queryListaTitulosVL_JUROS.AsCurrency - queryListaTitulosVL_DESC_PAR_JUROS. AsCurrency; queryListaTitulosVL_CORRIGIDO.AsCurrency := queryListaTitulosVL_PRINCIPAL.AsCurrency + queryListaTitulosVL_ENCARGOS.AsCurrency - (queryListaTitulosVL_DESC_PAR_IND.AsCurrency + queryListaTitulosVL_DESC_PAR_PRIN.AsCurrency + queryListaTitulosVL_DESC_PAR_JUROS.AsCurrency + queryListaTitulosVL_DESC_PAR_MULTA.AsCurrency); if cbx_excentrada.Checked then begin if qtde_titulos <> 0 then begin queryListaTitulosVL_ENTRADA.AsCurrency := StrToCurr(edt_excentrada.Text) / qtde_titulos; end; end else begin if dtsCHGEmpresa.DataSet.FieldByName('TP_ENTRADA').AsString = 'PO' then begin queryListaTitulosVL_ENTRADA.AsCurrency := queryListaTitulosVL_CORRIGIDO.AsCurrency * (queryListaTitulosPR_ENTRADA.AsFloat / 100); end; if dtsCHGEmpresa.DataSet.FieldByName('TP_ENTRADA').AsString = 'PA' then begin queryListaTitulosVL_ENTRADA.AsCurrency := 0; end; end; // end; end; // regra de 3 para ver o valor do desconto total dado if vl_cor_antes_desc <> queryListaTitulosVL_CORRIGIDO.AsCurrency then begin regra_3 := vl_cor_antes_desc - queryListaTitulosVL_CORRIGIDO.AsCurrency; edt_desctot.Text := formatfloat('0.##', ((regra_3 * 100) / vl_cor_antes_desc)); end else begin edt_desctot.Text := '0'; end; if cb_desc_quit_cor.Checked and (strtofloat(edt_corquitar.Text) > 0) then begin vl_cor_depois_desc := queryListaTitulosVL_CORRIGIDO.AsCurrency - (queryListaTitulosVL_CORRIGIDO.AsCurrency * (strtofloat(edt_corquitar.Text) / 100)); queryListaTitulosVL_CORRIGIDO.AsCurrency := vl_cor_depois_desc; end; if cb_desc_par_cor.Checked and (strtofloat(edt_corpar.Text) > 0) then begin vl_cor_depois_desc := queryListaTitulosVL_CORRIGIDO.AsCurrency - (queryListaTitulosVL_CORRIGIDO.AsCurrency * (strtofloat(edt_corpar.Text) / 100)); queryListaTitulosVL_CORRIGIDO.AsCurrency := vl_cor_depois_desc; end; if cbx_excentrada.Checked then begin if qtde_titulos <> 0 then begin queryListaTitulosVL_ENTRADA.AsCurrency := StrToCurr(edt_excentrada.Text) / qtde_titulos; end; end else begin if dtsCHGEmpresa.DataSet.FieldByName('TP_ENTRADA').AsString = 'PO' then begin queryListaTitulosVL_ENTRADA.AsCurrency := queryListaTitulosVL_CORRIGIDO.AsCurrency * (queryListaTitulosPR_ENTRADA.AsFloat / 100); end; if dtsCHGEmpresa.DataSet.FieldByName('TP_ENTRADA').AsString = 'PA' then begin queryListaTitulosVL_ENTRADA.AsCurrency := 0; end; end; if (strtoint(edt_nrparcelas.Text) = 0) and (cb_formapag.ItemIndex = 1) then begin queryListaTitulosVL_EXTRAS.AsCurrency := (queryListaTitulosVL_CORRIGIDO.AsCurrency * (dtmSystem.tblEmpresaPR_DEBITO.AsFloat / 100)); queryListaTitulosVL_ENCARGOS.AsCurrency := queryListaTitulosVL_ENCARGOS.AsCurrency + (queryListaTitulosVL_CORRIGIDO.AsCurrency * (dtmSystem.tblEmpresaPR_DEBITO.AsFloat / 100)); queryListaTitulosVL_CORRIGIDO.AsCurrency := queryListaTitulosVL_CORRIGIDO.AsCurrency + (queryListaTitulosVL_CORRIGIDO.AsCurrency * (dtmSystem.tblEmpresaPR_DEBITO.AsFloat / 100)); end; if (cbx_txextra.Checked) and (strtoint(edt_nrparcelas.Text) = 0) and (StrToCurr(edt_txextra.Text) > 0) then begin queryListaTitulosVL_CORRIGIDO.AsCurrency := queryListaTitulosVL_CORRIGIDO.AsCurrency + StrToCurr(edt_txextra.Text); queryListaTitulosVL_ENCARGOS.AsCurrency := queryListaTitulosVL_ENCARGOS.AsCurrency + StrToCurr(edt_txextra.Text); queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + StrToCurr(edt_txextra.Text); end; // calcula valor das parcelas conforme tipo de pagamento if (strtoint(edt_nrparcelas.Text) > 0) then begin if cbx_excentrada.Checked then begin case cb_formapag.ItemIndex of 0: begin if dtmSystem.tblCHGEmpresaTP_DIN.AsString = 'P' then begin CalcPrice; end else begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); // parcela := valor / (strtoint(edt_nrparcelas.Text)); parcela := valor / (strtoint(edt_nrparcelas.Text)); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblCHGEmpresaPR_JUROS_PARCELAR. AsFloat / 100); end; parcela := parcela + (parcela * juros); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / strtoint(edt_nrparcelas.Text); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; end; end; 2: begin if dtmSystem.tblCHGEmpresaTP_CRED.AsString = 'P' then begin CalcPrice; end else begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); parcela := valor / (strtoint(edt_nrparcelas.Text)); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblCHGEmpresaPR_JUROS_PARCELAR. AsFloat / 100); end; parcela := parcela + (parcela * juros); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / strtoint(edt_nrparcelas.Text); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; end; end; 3: begin if dtmSystem.tblCHGEmpresaTP_CHEQUE.AsString = 'P' then begin CalcPrice; end else begin // valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - // RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); // parcela := valor / (strtoint(edt_nrparcelas.Text)); // juros := (dtmSystem.tblCHGEmpresaPR_JUROS_PARCELAR.AsFloat / 100); // parcela := parcela + (parcela * juros); // queryListaTitulosVL_PARCELA.AsCurrency := parcela; valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); parcela := valor / (strtoint(edt_nrparcelas.Text)); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblCHGEmpresaPR_JUROS_PARCELAR. AsFloat / 100); end; dividendo := (1 - (1 / (power(1 + (dtmSystem.tblEmpresaPR_CREDVISTA.AsFloat / 100), strtoint(edt_nrparcelas.Text))))); // parcela := ((valor * juros) / dividendo); parcela := parcela + (parcela * juros); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / strtoint(edt_nrparcelas.Text); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; end; end; end; // if dtmSystem.tblCHGEmpresaPR_JUROS_PARCELAR.AsFloat > 0 then // begin // valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - // RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); // // juros := (dtmSystem.tblCHGEmpresaPR_JUROS_PARCELAR.AsFloat / 100); // // dividendo := // (1 - (1 / (power(1 + (dtmSystem.tblCHGEmpresaPR_JUROS_PARCELAR.AsFloat // / 100), strtoint(edt_nrparcelas.Text))))); // // parcela := ((valor * juros) / dividendo); // queryListaTitulosVL_PARCELA.AsCurrency := parcela; // end // else // begin // valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - // RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); // parcela := valor / (strtoint(edt_nrparcelas.Text)); // queryListaTitulosVL_PARCELA.AsCurrency := parcela; // end; // if cb_formapag.ItemIndex = 2 then // begin // parcela := queryListaTitulosVL_PARCELA.AsCurrency; // case strtoint(edt_nrparcelas.Text) of // 1: // begin // juros := (dtmSystem.tblEmpresaPR_CREDVISTA.AsFloat / 100); // parcela := parcela + (parcela * juros); // end; // 2, 3: // begin // juros := (dtmSystem.tblEmpresaPR_CRED3.AsFloat / 100); // parcela := parcela + (parcela * juros); // end; // 4, 5, 6: // begin // juros := (dtmSystem.tblEmpresaPR_CRED6.AsFloat / 100); // parcela := parcela + (parcela * juros); // end; // 7, 8, 9, 10, 11, 12: // begin // juros := (dtmSystem.tblEmpresaPR_CRED12.AsFloat / 100); // parcela := parcela + (parcela * juros); // end; // end; // queryListaTitulosVL_PARCELA.AsCurrency := parcela; // end; queryListaTitulosVL_EXTRAS.AsCurrency := ((RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2) + (strtoint(edt_nrparcelas.Text) * queryListaTitulosVL_PARCELA.AsCurrency) ) - queryListaTitulosVL_CORRIGIDO.AsCurrency); queryListaTitulosVL_ENCARGOS.AsCurrency := queryListaTitulosVL_ENCARGOS.AsCurrency + queryListaTitulosVL_EXTRAS.AsCurrency; queryListaTitulosVL_CORRIGIDO.AsCurrency := RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2) + (strtoint(edt_nrparcelas.Text) * queryListaTitulosVL_PARCELA.AsCurrency); end else begin case cb_formapag.ItemIndex of 0: begin if dtmSystem.tblCHGEmpresaTP_DIN.AsString = 'P' then begin CalcPrice; end else begin if dtmSystem.tblCHGEmpresaTP_ENTRADA.AsString = 'PO' then begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); parcela := valor / (strtoint(edt_nrparcelas.Text)); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblCHGEmpresaPR_JUROS_PARCELAR. AsFloat / 100); end; parcela := parcela + (parcela * juros); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / strtoint(edt_nrparcelas.Text); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; end; if dtmSystem.tblCHGEmpresaTP_ENTRADA.AsString = 'PA' then begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); parcela := valor / (strtoint(edt_nrparcelas.Text) + 1); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblCHGEmpresaPR_JUROS_PARCELAR. AsFloat / 100); end; parcela := parcela + (parcela * juros); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / (strtoint(edt_nrparcelas.Text) + 1); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_ENTRADA.AsCurrency := parcela; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; end; end; 2: begin if dtmSystem.tblCHGEmpresaTP_CRED.AsString = 'P' then begin CalcPrice; end else begin if dtmSystem.tblCHGEmpresaTP_ENTRADA.AsString = 'PO' then begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); parcela := valor / (strtoint(edt_nrparcelas.Text)); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblCHGEmpresaPR_JUROS_PARCELAR. AsFloat / 100); end; parcela := parcela + (parcela * juros); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / (strtoint(edt_nrparcelas.Text)); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; end; if dtmSystem.tblCHGEmpresaTP_ENTRADA.AsString = 'PA' then begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); parcela := valor / (strtoint(edt_nrparcelas.Text) + 1); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblCHGEmpresaPR_JUROS_PARCELAR. AsFloat / 100); end; parcela := parcela + (parcela * juros); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / (strtoint(edt_nrparcelas.Text) + 1); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_ENTRADA.AsCurrency := parcela; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; end; end; 3: begin if dtmSystem.tblCHGEmpresaTP_CHEQUE.AsString = 'P' then begin CalcPrice; end else begin if dtsCHGEmpresa.DataSet.FieldByName('TP_ENTRADA').AsString = 'PO' then begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); parcela := valor / (strtoint(edt_nrparcelas.Text)); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblCHGEmpresaPR_JUROS_PARCELAR. AsFloat / 100); end; dividendo := (1 - (1 / (power(1 + (dtmSystem.tblEmpresaPR_CREDVISTA.AsFloat / 100), strtoint(edt_nrparcelas.Text))))); // parcela := ((valor * juros) / dividendo); parcela := parcela + (parcela * juros); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / (strtoint(edt_nrparcelas.Text)); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; end else begin valor := RoundTo(queryListaTitulosVL_CORRIGIDO.AsCurrency, -2) - RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2); parcela := valor / (strtoint(edt_nrparcelas.Text) + 1); if cbx_exjurosparcelar.Checked then begin juros := (strtofloat(edt_excjurosparcela.Text) / 100); end else begin juros := (dtmSystem.tblCHGEmpresaPR_JUROS_PARCELAR. AsFloat / 100); end; dividendo := (1 - (1 / (power(1 + (dtmSystem.tblEmpresaPR_CREDVISTA.AsFloat / 100), strtoint(edt_nrparcelas.Text) + 1)))); // parcela := ((valor * juros) / dividendo); parcela := parcela + (parcela * juros); if (cbx_txextra.Checked) and (StrToCurr(edt_txextra.Text) > 0) then begin par_extra := StrToCurr(edt_txextra.Text) / (strtoint(edt_nrparcelas.Text) + 1); parcela := parcela + par_extra; queryListaTitulosVL_INDICADOR.AsCurrency := queryListaTitulosVL_INDICADOR.AsCurrency + par_extra; end; queryListaTitulosVL_PARCELA.AsCurrency := parcela; queryListaTitulosVL_ENTRADA.AsCurrency := parcela; end; end; end; end; queryListaTitulosVL_EXTRAS.AsCurrency := ((RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2) + (strtoint(edt_nrparcelas.Text) * queryListaTitulosVL_PARCELA.AsCurrency) ) - queryListaTitulosVL_CORRIGIDO.AsCurrency); queryListaTitulosVL_ENCARGOS.AsCurrency := queryListaTitulosVL_ENCARGOS.AsCurrency + queryListaTitulosVL_EXTRAS.AsCurrency; queryListaTitulosVL_CORRIGIDO.AsCurrency := RoundTo(queryListaTitulosVL_ENTRADA.AsCurrency, -2) + (strtoint(edt_nrparcelas.Text) * queryListaTitulosVL_PARCELA.AsCurrency); end; end; end; procedure TcadDevedores.SetupHackedNavigator(const Navigator: TDBNavigator; const Glyphs: TImageList; S: string; size: Integer); 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.size := size; Font.Style := Font.Style - [fsbold]; end; end; procedure TcadDevedores.up_fontememoClick(Sender: TObject; Button: TUDBtnType); begin mb_fechamento.Font.size := strtoint(edt_fontememo.Text); end; procedure TcadDevedores.WMMoving(var Msg: TWMMoving); var workArea: TRect; begin workArea := Screen.WorkareaRect; with Msg.DragRect^ do begin if left < workArea.left then OffsetRect(Msg.DragRect^, workArea.left - left, 0); if Top < workArea.Top then OffsetRect(Msg.DragRect^, 0, workArea.Top - Top); if Right > workArea.Right then OffsetRect(Msg.DragRect^, workArea.Right - Right, 0); if Bottom > workArea.Bottom then OffsetRect(Msg.DragRect^, 0, workArea.Bottom - Bottom); end; end; end.