unit ufrmAtendimento; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, DateUtils, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, ZAbstractRODataset, ZAbstractDataset, ZDataset, Vcl.StdCtrls, Vcl.Grids, Vcl.DBGrids, Vcl.Mask, Vcl.DBCtrls, Vcl.ComCtrls, Vcl.ExtCtrls, rDBComponents, Vcl.CheckLst, StrUtils, ClipBrd, System.MaskUtils, System.UITypes, System.Math, Vcl.Menus, Vcl.Buttons, System.ImageList, Vcl.ImgList; type THackDBNavigator = class(TDBNavigator); type TfrmAtendimento = class(TForm) gb_pesquisar: TGroupBox; lbl_pesquisar: TLabel; edt_campop: TEdit; btn_pesquisar: TButton; dbgrd_pesquisar: TDBGrid; cbx_tiponome: TComboBox; qryPesquisa: TZQuery; dtsPesquisa: TDataSource; gb_cabecalho: TGroupBox; lbl_nomec: TLabel; dbedt_nomec: TDBEdit; dtsDevedor: TDataSource; lbl_cpfcnpjc: TLabel; dbedt_cpfcnpjc: TDBEdit; gb_dados: TGroupBox; pcDevedor: TPageControl; tabCadastro: TTabSheet; navdevedor: TDBNavigator; dbedt_nome: TDBEdit; dbedt_nomepai: TDBEdit; lbl_nomepai: TLabel; dbedt_nomemae: TDBEdit; lbl_nomemae: TLabel; lbl_nome: TLabel; lbl_cpfcnpj: TLabel; dbedt_cpfcnpj: TDBEdit; lbl_rg: TLabel; dbedt_rg: TDBEdit; lbl_coddev: TLabel; dbedt_coddev: TDBEdit; lbl_datanasc: TLabel; rdbdtp_datanasc: TrDBDateTimePicker; lbl_datacad: TLabel; rdbdtp_datacad: TrDBDateTimePicker; Panel1: TPanel; dbrgrp_tpdevedor: TDBRadioGroup; lbl_tppessoa: TLabel; pnl_cadastro: TPanel; tabEnderecos: TTabSheet; pnl_enderecos: TPanel; dbgrd_enderecos: TDBGrid; DBMemo1: TDBMemo; lbl_obs: TLabel; lbl_rua: TLabel; dbedt_rua: TDBEdit; dtsEnderecos: TDataSource; lbl_num: TLabel; dbedt_num: TDBEdit; lbl_comp: TLabel; dbedt_comp: TDBEdit; lbl_cep: TLabel; dbedt_cep: TDBEdit; lbl_bairro: TLabel; dbedt_bairro: TDBEdit; lbl_uf: TLabel; dblucmbox_uf: TDBLookupComboBox; lbl_cidade: TLabel; dblucmbox_cidade: TDBLookupComboBox; Panel2: TPanel; dbrg_situacao: TDBRadioGroup; Panel6: TPanel; dbrg_ref: TDBRadioGroup; Panel7: TPanel; dbrg_tpend: TDBRadioGroup; lbl_tpend: TLabel; lbl_situacao: TLabel; lbl_ref: TLabel; navenderecos: TDBNavigator; tabTelefones: TTabSheet; pnl_telefones: TPanel; dbgrd_tel: TDBGrid; lbl_tel: TLabel; dbedt_tel: TDBEdit; lbl_desctel: TLabel; dbedt_desctel: TDBEdit; lbl_obstel: TLabel; btn_clearmemo: TButton; dbmem_tel: TDBMemo; lbl_tipo: TLabel; lbl_sittel: TLabel; Panel3: TPanel; dbrg_sittel: TDBRadioGroup; Panel4: TPanel; dbrg_tipotel: TDBRadioGroup; navtelefones: TDBNavigator; tabTitulos: TTabSheet; pnl_titulos: TPanel; dtsTelefones: TDataSource; clb_empresas: TCheckListBox; dbedit_produto: TDBEdit; dbedt_codemp: TDBEdit; dbedt_vltit: TDBEdit; Label2: TLabel; lbl_dataent: TLabel; lbl_datavenc: TLabel; lbl_empresas: TLabel; lbl_sittit: TLabel; lbl_tit: TLabel; lbl_vltit: TLabel; Panel5: TPanel; dbrg_tit: TDBRadioGroup; pnl_cor1: TPanel; pnl_color2: TPanel; pnl_color3: TPanel; pnl_color4: TPanel; pnl_color5: TPanel; pnl_color6: TPanel; pnl_color7: TPanel; rDBDateTimePicker1: TrDBDateTimePicker; rdbdt_entrada: TrDBDateTimePicker; dbgrd_tit: TDBGrid; tabHistorico: TTabSheet; pnl_hist: TPanel; dbgrd_historico: TDBGrid; dbmemo_box: TDBMemo; navtitulos: TDBNavigator; navhistorico: TDBNavigator; tabCalc: TTabSheet; lv_titulos: TListView; dtsListaTitulos: TDataSource; 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; queryListaTitulosPR_ENTRADA: TFloatField; 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; dbgrd_listtitulos: TDBGrid; lbl_somatitulos: TLabel; lbl_parcelamento: TLabel; lbl_somaentrada: TLabel; lbl_vlaquitar: TLabel; lbl_extras: TLabel; lbl_somajuros: TLabel; lbl_somamulta: TLabel; lbl_somaindicador: TLabel; lbl_desctot: TLabel; lbl_datapgmnto: TLabel; edt_somatitulos: TEdit; edt_nrparcelas: TEdit; up_nrparcelas: TUpDown; edt_somaentrada: TEdit; edt_vlaquitar: TEdit; edt_extras: TEdit; edt_somajuros: TEdit; edt_somamulta: TEdit; edt_somaindicador: TEdit; cb_nmulta: TCheckBox; edt_desctot: TEdit; dtp_atrasorecalc: TDateTimePicker; lv_parcelas: TListView; 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; btn_fechamento: TButton; ppmnu_copiar: TPopupMenu; copiar_conteudo: TMenuItem; B1: TMenuItem; C1: TMenuItem; btn_close: TButton; dtsProtocolos: TDataSource; dbgrd_protocolos: TDBGrid; btn_verprotocolo: TButton; tabFechamento: TTabSheet; lv_prevtitulos: TListView; btn_concluir: TButton; lv_fechamento: TListView; lbl_prevtitulos: TLabel; lbl_vltotal: TLabel; edt_vltotal: TEdit; lbl_apagamento: TLabel; lbl_dpagamento: TLabel; cbx_excentrada: TCheckBox; edt_excentrada: TEdit; queryListaTitulosTP_DESPESA: TWideStringField; queryListaTitulosVL_DESPESA: TCurrencyField; dtsTitulos: TDataSource; pnl_cheque: TPanel; lbl_banco: TLabel; lbl_nrcheque: TLabel; lbl_motivo: TLabel; dbedt_banco: TDBEdit; dbedt_nrcheque: TDBEdit; dbedt_motivo: TDBEdit; dbcbx_tpcheque: TDBCheckBox; pnl_despesa: TPanel; dbrg_despesa: TDBRadioGroup; lbl_tpdespesa: TLabel; lbl_depesa: TLabel; dbedt_despesa: TDBEdit; dtsqryConsulta: TDataSource; qryConsulta: TZQuery; clb_beneficiarioscalculo: TCheckListBox; lbl_beneficiarioscalculo: TLabel; clb_indices: TCheckListBox; lbl_indices: TLabel; queryListaTitulosVL_INDICES: TCurrencyField; Label1: TLabel; edt_indices: TEdit; btn_verrecibos: TButton; queryConteudoRecibo: TZQuery; lbl_formarecebimento: TLabel; edt_formarecebimento: TEdit; ImageList1: TImageList; Label3: TLabel; Label4: TLabel; Label5: TLabel; edt_nrchequerecibo: TEdit; edt_bancorecibo: TEdit; edt_pracarecibo: TEdit; lbl_obsrecibo: TLabel; re_obsrecibo: TRichEdit; procedure btn_pesquisarClick(Sender: TObject); procedure dbgrd_pesquisarDblClick(Sender: TObject); procedure dtsDevedorDataChange(Sender: TObject; Field: TField); procedure clb_empresasClickCheck(Sender: TObject); procedure dbgrd_titCellClick(Column: TColumn); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure queryListaTitulosCalcFields(DataSet: TDataSet); procedure edt_campopKeyPress(Sender: TObject; var Key: Char); procedure lv_titulosChange(Sender: TObject; Item: TListItem; Change: TItemChange); procedure edt_nrparcelasChange(Sender: TObject); procedure cb_nmultaClick(Sender: TObject); procedure cb_descquitClick(Sender: TObject); procedure cb_descparClick(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 copiar_conteudoClick(Sender: TObject); procedure btn_closeClick(Sender: TObject); procedure dtp_atrasorecalcChange(Sender: TObject); procedure btn_verprotocoloClick(Sender: TObject); procedure cbx_descfixoClick(Sender: TObject); procedure cbx_acrfixoClick(Sender: TObject); procedure pcDevedorChanging(Sender: TObject; var AllowChange: Boolean); procedure pcDevedorChange(Sender: TObject); procedure btn_fechamentoClick(Sender: TObject); procedure btn_concluirClick(Sender: TObject); procedure cbx_excentradaClick(Sender: TObject); procedure edt_acrfixoKeyPress(Sender: TObject; var Key: Char); procedure edt_excentradaKeyPress(Sender: TObject; var Key: Char); procedure edt_descfixoKeyPress(Sender: TObject; var Key: Char); procedure edt_descfixoChange(Sender: TObject); procedure edt_acrfixoChange(Sender: TObject); procedure edt_excentradaChange(Sender: TObject); procedure dtsTitulosDataChange(Sender: TObject; Field: TField); procedure dtsTitulosStateChange(Sender: TObject); procedure clb_beneficiarioscalculoClickCheck(Sender: TObject); procedure clb_indicesClickCheck(Sender: TObject); procedure btn_verrecibosClick(Sender: TObject); private FListViewOldWndProc: TWndMethod; FlistViewOldWndProc2: TWndMethod; atendimento: string; pagina: integer; procedure ListViewNewWndProc(var Msg: TMessage); procedure ListViewNewWndProc2(var Msg: TMessage); procedure CriarLista; procedure CalcValorParcelas; procedure Att_campos; procedure CarregaProtocolo; procedure SetupHackedNavigator(const Navigator: TDBNavigator; const Glyphs: TImageList; S: string); { Private declarations } public data_parcelas: array of TDate; old_id: integer; index_pagamento: integer; clpbrd: string; forma_pagamento: string; tipo_pagamento: string; nome_titulos: string; parcelamento: array of currency; { Public declarations } end; var frmAtendimento: TfrmAtendimento; implementation {$R *.dfm} uses udtmSystem, CommCtrl, ufrmFechamentoAtendimento, urelRecibo, uExtenso; procedure TfrmAtendimento.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: integer; begin 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; parc_ind := 0; parc_prin := 0; parc_multa := 0; parc_juros := 0; 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 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 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; end; end; edt_somatitulos.Text := CurrToStrF(soma_nominal, ffCurrency, 2); edt_indices.Text := CurrToStrF(soma_indices, ffCurrency, 2); edt_extras.Text := CurrToStrF(soma_encargos, ffCurrency, 2); edt_vlaquitar.Text := CurrToStrF(soma_corrigido, ffCurrency, 2); if cbx_excentrada.Checked then begin edt_somaentrada.Text := CurrToStrF(StrToCurr(edt_excentrada.Text), ffCurrency, 2); end else begin edt_somaentrada.Text := CurrToStrF(soma_entrada, ffCurrency, 2); end; edt_somaindicador.Text := CurrToStrF(soma_indicador, ffCurrency, 2); edt_somamulta.Text := CurrToStrF(soma_multas, ffCurrency, 2); edt_somajuros.Text := CurrToStrF(soma_juros, ffCurrency, 2); up_nrparcelas.Max := n_parcelas; up_encquitar.Max := quit_ind; up_principalquitar.Max := quit_prin; up_multasquitar.Max := quit_multa; up_jurosquitar.Max := quit_juros; up_encparcelas.Max := parc_ind; up_principalparcelas.Max := parc_prin; up_multasparcelas.Max := parc_multa; up_jurosparcelas.Max := parc_juros; end; procedure TfrmAtendimento.btn_fechamentoClick(Sender: TObject); var i, j, k: integer; parcela, valor, juros, dividendo, somatotal, a: currency; begin with TfrmFechamentoAtendimento.Create(self) do begin ShowModal; if ModalResult = mrOk then begin atendimento := 'fechamento'; pcDevedor.TabIndex := 6; lv_prevtitulos.Clear; lv_fechamento.Clear; dtmSystem.tblConteudoRecibo.Open; if dtmSystem.tblConteudoRecibo.RecordCount <> 0 then begin dtmSystem.tblConteudoRecibo.Close; queryConteudoRecibo.Close; queryConteudoRecibo.SQL.Text := 'delete from SYS_CONTEUDO_RECIBO'; queryConteudoRecibo.ExecSQL; end; dtmSystem.tblConteudoRecibo.Open; for i := 0 to lv_titulos.Items.Count - 1 do begin if lv_titulos.Items[i].Checked then begin queryListaTitulos.RecNo := i + 1; with lv_prevtitulos.Items.Add do begin Caption := queryListaTitulos.FieldByName('TX_PRODUTO').AsString; SubItems.Add(CurrToStrF(queryListaTitulos.FieldByName('VL_TITULO') .AsCurrency, ffCurrency, 2)); SubItems.Add (CurrToStrF(queryListaTitulos.FieldByName('VL_CORRIGIDO') .AsCurrency, ffCurrency, 2)); end; if forma_pagamento = 'Q' then begin dtmSystem.tblConteudoRecibo.Append; dtmSystem.tblConteudoReciboTX_NOME.AsString := queryListaTitulosTX_PRODUTO.AsString; dtmSystem.tblConteudoReciboVL_PRINCIPAL.AsCurrency := StrToCurr(formatfloat('0.##', queryListaTitulosVL_TITULO.AsCurrency)); dtmSystem.tblConteudoReciboVL_JUROS.AsCurrency := StrToCurr(formatfloat('0.##', queryListaTitulosVL_JUROS.AsCurrency)); dtmSystem.tblConteudoReciboVL_MULTA.AsCurrency := StrToCurr(formatfloat('0.##', queryListaTitulosVL_MULTA.AsCurrency)); dtmSystem.tblConteudoReciboVL_ENCARGOS.AsCurrency := StrToCurr(formatfloat('0.##', queryListaTitulosVL_ENCARGOS.AsCurrency)); dtmSystem.tblConteudoReciboVL_DESCONTOS.AsCurrency := StrToCurr(formatfloat('0.##', queryListaTitulosVL_DESC_QUIT_IND.AsCurrency)) + StrToCurr(formatfloat('0.##', queryListaTitulosVL_DESC_QUIT_PRIN.AsCurrency)) + StrToCurr(formatfloat('0.##', queryListaTitulosVL_DESC_QUIT_MULTA.AsCurrency)) + StrToCurr(formatfloat('0.##', queryListaTitulosVL_DESC_QUIT_JUROS.AsCurrency)); dtmSystem.tblConteudoReciboVL_CORRIGIDO.AsCurrency := StrToCurr(formatfloat('0.##', queryListaTitulosVL_CORRIGIDO.AsCurrency)); dtmSystem.tblConteudoReciboDT_VENCIMENTO.AsDateTime := queryListaTitulosDT_VENCIMENTO.AsDateTime; dtmSystem.tblConteudoRecibo.Post; end; end; end; lv_prevtitulos.Columns[1].Alignment := taRightJustify; lv_prevtitulos.Columns[2].Alignment := taRightJustify; if forma_pagamento = 'Q' then begin lv_fechamento.Visible := False; lbl_dpagamento.Visible := False; somatotal := 0; for k := 0 to lv_prevtitulos.Items.Count - 1 do begin with lv_prevtitulos.Items[k] do begin case index_pagamento of // 0=Dinheiro;1=Débito;2=Crédito;3=Cheque; 1: begin a := (StrToCurr(stringreplace(copy(lv_prevtitulos.Items[k] .SubItems[1], 4, length(lv_prevtitulos.Items[k].SubItems[1]) - 3), '.', '', [rfReplaceAll, rfIgnoreCase])) * (dtmSystem.tblEmpresaPR_DEBITO.AsFloat / 100)); SubItems[1] := CurrToStrF (StrToCurr(stringreplace(copy(lv_prevtitulos.Items[k] .SubItems[1], 4, length(lv_prevtitulos.Items[k].SubItems[1]) - 3), '.', '', [rfReplaceAll, rfIgnoreCase])) + a, ffCurrency, 2); somatotal := somatotal + (StrToCurr(stringreplace(copy(SubItems[1], 4, length(SubItems[1]) - 3), '.', '', [rfReplaceAll, rfIgnoreCase]))); end; 2: begin a := (StrToCurr(stringreplace(copy(lv_prevtitulos.Items[k] .SubItems[1], 4, length(lv_prevtitulos.Items[k].SubItems[1]) - 3), '.', '', [rfReplaceAll, rfIgnoreCase])) * (dtmSystem.tblEmpresaPR_CREDVISTA.AsFloat / 100)); SubItems[1] := CurrToStrF (StrToCurr(stringreplace(copy(lv_prevtitulos.Items[k] .SubItems[1], 4, length(lv_prevtitulos.Items[k].SubItems[1]) - 3), '.', '', [rfReplaceAll, rfIgnoreCase])) + a, ffCurrency, 2); somatotal := somatotal + (StrToCurr(stringreplace(copy(SubItems[1], 4, length(SubItems[1]) - 3), '.', '', [rfReplaceAll, rfIgnoreCase]))); end; end; end; end; if somatotal <> 0 then begin edt_vltotal.Text := CurrToStrF(somatotal, ffCurrency, 2); end else begin edt_vltotal.Text := edt_vlaquitar.Text; end; end; if forma_pagamento = 'P' then begin // dtmSystem.tblConteudoRecibo.Append; // dtmSystem.tblConteudoReciboTX_NOME.AsString := 'Entrada'; // dtmSystem.tblConteudoReciboVL_CORRIGIDO.AsCurrency := // StrToCurr(copy(edt_somaentrada.Text, 3, // length(edt_somaentrada.Text) - 3)); // dtmSystem.tblConteudoReciboDT_VENCIMENTO.AsDateTime := // StrToDate(FormatDateTime('dd/mm/yyyy', data_parcelas[0])); // dtmSystem.tblConteudoRecibo.Post; lv_fechamento.Visible := True; lbl_dpagamento.Visible := True; somatotal := 0; for j := 0 to strtoint(edt_nrparcelas.Text) do begin with lv_fechamento.Items.Add do begin if j = 0 then begin Caption := 'Entrada'; SubItems.Add(edt_somaentrada.Text); SubItems.Add(DateToStr(data_parcelas[0])); end else begin Caption := 'Parcela nº ' + inttostr(j) + '/' + edt_nrparcelas.Text; // 0=Dinheiro;1=Débito;2=Crédito;3=Cheque; case index_pagamento of 0, 1, 3: begin SubItems.Add(CurrToStrF(parcelamento[j - 1], ffCurrency, 2)); SubItems.Add(DateToStr(data_parcelas[j])); end; 2: begin valor := (StrToCurr(stringreplace(copy(edt_vlaquitar.Text, 4, length(edt_vlaquitar.Text) - 3), '.', '', [rfReplaceAll, rfIgnoreCase]))) - (StrToCurr(stringreplace(copy(edt_somaentrada.Text, 4, length(edt_somaentrada.Text) - 3), '.', '', [rfReplaceAll, rfIgnoreCase]))); juros := (dtmSystem.tblEmpresaPR_FINANCIAMENTO. AsFloat / 100); dividendo := (1 - (1 / (power(1 + (dtmSystem.tblEmpresaPR_FINANCIAMENTO.AsFloat / 100), strtoint(edt_nrparcelas.Text))))); parcela := (valor * juros) / dividendo; case strtoint(edt_nrparcelas.Text) of 1: begin parcela := RoundTo(parcela + (parcela * (dtmSystem.tblEmpresaPR_CREDVISTA.AsFloat / 100)), -2); end; 2, 3: begin parcela := RoundTo(parcela + (parcela * (dtmSystem.tblEmpresaPR_CRED3.AsFloat / 100)), -2); end; 4, 5, 6: begin parcela := RoundTo(parcela + (parcela * (dtmSystem.tblEmpresaPR_CRED6.AsFloat / 100)), -2); end; 7, 8, 9, 10, 11, 12: begin parcela := RoundTo(parcela + (parcela * (dtmSystem.tblEmpresaPR_CRED12.AsFloat / 100)), -2); end; end; SubItems.Add(CurrToStrF(parcela, ffCurrency, 2)); SubItems.Add(DateToStr(data_parcelas[j])); somatotal := somatotal + parcela; end; end; end; end; if j = 0 then begin dtmSystem.tblConteudoRecibo.Append; dtmSystem.tblConteudoReciboTX_NOME.AsString := 'Entrada'; dtmSystem.tblConteudoReciboVL_CORRIGIDO.AsCurrency := StrToCurr(copy(edt_somaentrada.Text, 3, length(edt_somaentrada.Text) - 3)); dtmSystem.tblConteudoReciboDT_VENCIMENTO.AsDateTime := StrToDate(FormatDateTime('dd/mm/yyyy', data_parcelas[0])); dtmSystem.tblConteudoRecibo.Post; end else begin dtmSystem.tblConteudoRecibo.Append; dtmSystem.tblConteudoReciboTX_NOME.AsString := 'Parcela nº ' + inttostr(j); dtmSystem.tblConteudoReciboVL_CORRIGIDO.AsCurrency := (StrToCurr(stringreplace(copy(lv_fechamento.Items[j].SubItems[0], 4, length(lv_fechamento.Items[j].SubItems[0]) - 3), '.', '', [rfReplaceAll, rfIgnoreCase]))); dtmSystem.tblConteudoReciboDT_VENCIMENTO.AsDateTime := StrToDate(FormatDateTime('dd/mm/yyyy', data_parcelas[j])); dtmSystem.tblConteudoRecibo.Post; end; end; if somatotal <> 0 then begin edt_vltotal.Text := CurrToStrF(somatotal + StrToCurr(stringreplace(copy(edt_somaentrada.Text, 4, length(edt_somaentrada.Text) - 3), '.', '', [rfReplaceAll, rfIgnoreCase])), ffCurrency, 2); end else begin edt_vltotal.Text := edt_vlaquitar.Text; end; end; end; end; // edt_formarecebimento.Text := ''; end; procedure TfrmAtendimento.btn_pesquisarClick(Sender: TObject); var string_query, tx_pesquisa, help_cpfcnpj: string; begin if edt_campop.Text <> '' then begin tx_pesquisa := UpperCase(stringreplace(edt_campop.Text, ' ', '%', [rfReplaceAll])); string_query := 'select tx_nome, tx_pai, tx_mae from chg_devedores where '; case cbx_tiponome.ItemIndex of 0: begin string_query := string_query + 'upper(TX_NOME) LIKE ' + QuotedStr('%' + tx_pesquisa + '%') + ' ORDER BY TX_NOME '; end; 1: begin string_query := string_query + 'upper(TX_PAI) LIKE ' + QuotedStr('%' + tx_pesquisa + '%') + ' ORDER BY TX_NOME '; end; 2: begin string_query := string_query + 'upper(TX_MAE) LIKE ' + QuotedStr('%' + tx_pesquisa + '%') + ' ORDER BY TX_NOME '; end; 3: begin tx_pesquisa := stringreplace(tx_pesquisa, '.', '', [rfReplaceAll]); tx_pesquisa := stringreplace(tx_pesquisa, '-', '', [rfReplaceAll]); tx_pesquisa := stringreplace(tx_pesquisa, '/', '', [rfReplaceAll]); if length(tx_pesquisa) < 14 then begin help_cpfcnpj := copy(tx_pesquisa, 1, 3) + '.' + copy(tx_pesquisa, 4, 3) + '.' + copy(tx_pesquisa, 7, 3) + '-' + RightStr(tx_pesquisa, 2); string_query := string_query + 'CD_CPF like ' + QuotedStr(help_cpfcnpj) + ' order by tx_nome '; end else if length(tx_pesquisa) >= 14 then begin help_cpfcnpj := copy(tx_pesquisa, 1, 2) + '.' + copy(tx_pesquisa, 3, 3) + '.' + copy(tx_pesquisa, 6, 3) + '/' + copy(tx_pesquisa, 9, 4) + '-' + RightStr(tx_pesquisa, 2); string_query := string_query + 'CD_CNPJ like ' + QuotedStr(help_cpfcnpj) + ' order by tx_nome '; end; end; 4: begin string_query := string_query + 'ID_DEVEDOR in (select id_devedor from chg_titulos where cd_devedor like ' + QuotedStr('%' + tx_pesquisa + '%') + ')'; end; 5: begin if copy(tx_pesquisa, 1, 1) <> '(' then begin tx_pesquisa := '(' + tx_pesquisa; end; if copy(tx_pesquisa, 4, 1) <> ')' then begin tx_pesquisa := copy(tx_pesquisa, 1, 3) + ')' + copy(tx_pesquisa, 4, 15); end; if copy(tx_pesquisa, 9, 1) <> '-' then begin tx_pesquisa := copy(tx_pesquisa, 1, 8) + '-' + copy(tx_pesquisa, 9, 15); end; if (length(tx_pesquisa) < 13) or (length(tx_pesquisa) > 14) then begin MessageDlg('Número de telefone inválido.', mtWarning, [mbOK], 0); exit; end; string_query := string_query + 'ID_DEVEDOR in (SELECT ID_DEVEDOR FROM CHG_TELEFONES WHERE NR_NUMERO like ' + QuotedStr(tx_pesquisa) + ')'; end; end; end; with qryPesquisa do begin Close; SQL.Text := string_query; Open; end; dbgrd_pesquisar.Columns[0].FieldName := 'tx_nome'; dbgrd_pesquisar.Columns[0].Title.Caption := 'Nome do Devedor'; dbgrd_pesquisar.Columns[1].FieldName := 'tx_pai'; dbgrd_pesquisar.Columns[1].Title.Caption := 'Nome do Pai'; dbgrd_pesquisar.Columns[2].FieldName := 'tx_mae'; dbgrd_pesquisar.Columns[2].Title.Caption := 'Nome da Mãe'; end; procedure TfrmAtendimento.btn_verprotocoloClick(Sender: TObject); begin CarregaProtocolo; end; procedure TfrmAtendimento.btn_verrecibosClick(Sender: TObject); var old_nr: string; k, l: integer; // i: integer; begin with dtmSystem do begin tblRecibo.Open; tblConteudoRecibo.Open; tblConteudoRecibo.RecNo := 1; if tblRecibo.RecordCount = 0 then begin tblRecibo.Append; tblReciboNR_RECIBO.AsString := '000001'; // tblReciboTX_NOME.AsString := 'temp'; tblRecibo.Post; end; tblRecibo.RecNo := tblRecibo.RecordCount; old_nr := tblReciboNR_RECIBO.AsString; if forma_pagamento = 'Q' then begin if tblReciboTX_NOME.AsString <> 'temp' then begin tblRecibo.Append; tblReciboNR_RECIBO.AsString := Format('%.*d', [6, strtoint(old_nr) + 1]); // tblReciboTX_NOME.AsString := 'temp'; tblRecibo.Post; end; tblRecibo.Filtered := true; tblRecibo.Filter := 'ID_RECIBO = ' + inttostr(tblRecibo.RecNo); relRecibo := TrelRecibo.Create(self); with relRecibo do begin frdblbl_nome.left := frlbl_recebemos.left + frlbl_recebemos.Width + 5; frdblbl_nome2v.left := frdblbl_nome.left; frdblbl_cpf.left := frdblbl_nome.left + frdblbl_nome.Width + 10; frdblbl_cpf2v.left := frdblbl_cpf.left; frlbl_valortot.Caption := frlbl_valortot.Caption + edt_vltotal.Text; frlbl_valortot2v.Caption := frlbl_valortot.Caption; frlbl_vlextenso.left := frlbl_valortot.Width + 5; frlbl_vlextenso2v.left := frlbl_vlextenso.left; frlbl_vlextenso.Caption := '(' + valorPorExtenso (strtofloat(copy(stringreplace(edt_vltotal.Text, '.', '', []), 4, length(edt_vltotal.Text) - 3))) + ')'; frlbl_vlextenso2v.Caption := frlbl_vlextenso.Caption; frlbl_formarecebimento.Caption := frlbl_formarecebimento.Caption + edt_formarecebimento.Text; frlbl_formarecebimento2v.Caption := frlbl_formarecebimento.Caption; for k := 0 to re_obsrecibo.Lines.Count - 1 do begin fr_membobs.Lines.Add(re_obsrecibo.Lines[k]); fr_membobs2v.Lines.Add(re_obsrecibo.Lines[k]); end; if index_pagamento = 3 then begin frpnl_cheque.Visible := True; frlbl_obscheque.Visible := True; if edt_nrchequerecibo.Text <> '' then begin frlbl_nrcheque.Caption := frlbl_nrcheque.Caption + edt_nrchequerecibo.Text; frlbl_nrcheque2v.Caption := frlbl_nrcheque.Caption; end; if edt_bancorecibo.Text <> '' then begin frlbl_banco.Caption := frlbl_banco.Caption + edt_bancorecibo.Text; frlbl_banco2v.Caption := frlbl_banco.Caption; end; if edt_pracarecibo.Text <> '' then begin frlbl_praca.Caption := frlbl_praca.Caption + edt_pracarecibo.Text; frlbl_praca2v.Caption := frlbl_praca.Caption; end; end; dtmSystem.tblCidades.Locate('ID_CIDADE', dtmSystem.tblEmpresaID_CIDADE.AsString, []); dtmSystem.tblEstados.Locate('ID_ESTADO', dtmSystem.tblEmpresaID_ESTADO.AsString, []); frlbl_headerbot.Caption := UpperCase(dtmSystem.tblEmpresaTX_ENDERECO.AsString + ' ' + dtmSystem.tblEmpresaNR_NUMERO.AsString + ' ' + dtmSystem.tblEmpresaTX_COMPLEMENTO.AsString + ' - ' + dtmSystem.tblEmpresaTX_BAIRRO.AsString + ' - ' + dtmSystem.tblCidadesTX_NOME.AsString + ' - ' + dtmSystem.tblEstadosTX_SIGLA.AsString + ' - TEL: ' + dtmSystem.tblEmpresaTX_TELEFONE.AsString); frlbl_headerbot2v.Caption := frlbl_headerbot.Caption; frlbl_headertop.Caption := UpperCase(dtmSystem.tblEmpresaTX_TITULO.AsString + ' - CNPJ: ' + dtmSystem.tblEmpresaTX_CNPJ.AsString); frlbl_headertop2v.Caption := frlbl_headertop.Caption; if frdbimg_logo.Picture.Height > frdbimg_logo.Picture.Width then begin frdbimg_logo.Height := 170; frdbimg_logo.Width := 133; end; if frdbimg_logo.Picture.Height < frdbimg_logo.Picture.Width then begin frdbimg_logo.Height := 133; frdbimg_logo.Width := 170; end; if frdbimg_logo.Picture.Height = frdbimg_logo.Picture.Width then begin frdbimg_logo.Height := 133; frdbimg_logo.Width := 133; end; frRecibo.PreviewModal; end; end else begin for l := 0 to strtoint(edt_nrparcelas.Text) do begin if StrToCurr(edt_excentrada.Text) = 0 then begin continue; end else begin end; end; if tblReciboTX_NOME.AsString <> '' then begin tblRecibo.Append; tblReciboNR_RECIBO.AsString := Format('%.*d', [6, strtoint(old_nr) + 1]); tblRecibo.Post; end; relRecibo := TrelRecibo.Create(self); dtmSystem.tblConteudoRecibo.RecNo := 1; with relRecibo do begin frdblbl_nome.left := frlbl_recebemos.left + frlbl_recebemos.Width + 5; frdblbl_nome2v.left := frdblbl_nome.left; frdblbl_cpf.left := frdblbl_nome.left + frdblbl_nome.Width + 10; frdblbl_cpf2v.left := frdblbl_cpf.left; frlbl_valortot.Caption := frlbl_valortot.Caption + CurrToStrF(dtmSystem.tblConteudoReciboVL_CORRIGIDO.AsCurrency, ffCurrency, 2); frlbl_valortot2v.Caption := frlbl_valortot.Caption; frlbl_vlextenso.left := frlbl_valortot.Width + 5; frlbl_vlextenso2v.left := frlbl_vlextenso.left; frlbl_vlextenso.Caption := '(' + valorPorExtenso (dtmSystem.tblConteudoReciboVL_CORRIGIDO.AsCurrency) + ')'; frlbl_vlextenso2v.Caption := frlbl_vlextenso.Caption; frlbl_formarecebimento.Caption := frlbl_formarecebimento.Caption + edt_formarecebimento.Text; frlbl_formarecebimento2v.Caption := frlbl_formarecebimento.Caption; for k := 0 to re_obsrecibo.Lines.Count - 1 do begin fr_membobs.Lines.Add(re_obsrecibo.Lines[k]); fr_membobs2v.Lines.Add(re_obsrecibo.Lines[k]); end; if index_pagamento = 3 then begin frpnl_cheque.Visible := True; frlbl_obscheque.Visible := True; frpnl_cheque2v.Visible := True; frlbl_obscheque2v.Visible := True; if edt_nrchequerecibo.Text <> '' then begin frlbl_nrcheque.Caption := frlbl_nrcheque.Caption + edt_nrchequerecibo.Text; frlbl_nrcheque2v.Caption := frlbl_nrcheque.Caption; end; if edt_bancorecibo.Text <> '' then begin frlbl_banco.Caption := frlbl_banco.Caption + edt_bancorecibo.Text; frlbl_banco2v.Caption := frlbl_banco.Caption; end; if edt_pracarecibo.Text <> '' then begin frlbl_praca.Caption := frlbl_praca.Caption + edt_pracarecibo.Text; frlbl_praca2v.Caption := frlbl_praca.Caption; end; end; dtmSystem.tblCidades.Locate('ID_CIDADE', dtmSystem.tblEmpresaID_CIDADE.AsString, []); dtmSystem.tblEstados.Locate('ID_ESTADO', dtmSystem.tblEmpresaID_ESTADO.AsString, []); frlbl_headerbot.Caption := UpperCase(dtmSystem.tblEmpresaTX_ENDERECO.AsString + ' ' + dtmSystem.tblEmpresaNR_NUMERO.AsString + ' ' + dtmSystem.tblEmpresaTX_COMPLEMENTO.AsString + ' - ' + dtmSystem.tblEmpresaTX_BAIRRO.AsString + ' - ' + dtmSystem.tblCidadesTX_NOME.AsString + ' - ' + dtmSystem.tblEstadosTX_SIGLA.AsString + ' - TEL: ' + dtmSystem.tblEmpresaTX_TELEFONE.AsString); frlbl_headerbot2v.Caption := frlbl_headerbot.Caption; frlbl_headertop.Caption := UpperCase(dtmSystem.tblEmpresaTX_TITULO.AsString + ' - CNPJ: ' + dtmSystem.tblEmpresaTX_CNPJ.AsString); frlbl_headertop2v.Caption := frlbl_headertop.Caption; if frdbimg_logo.Picture.Height > frdbimg_logo.Picture.Width then begin frdbimg_logo.Height := 170; frdbimg_logo.Width := 133; end; if frdbimg_logo.Picture.Height < frdbimg_logo.Picture.Width then begin frdbimg_logo.Height := 133; frdbimg_logo.Width := 170; end; if frdbimg_logo.Picture.Height = frdbimg_logo.Picture.Width then begin frdbimg_logo.Height := 133; frdbimg_logo.Width := 133; end; frRecibo.PreviewModal; end; end; tblRecibo.Close; end; end; procedure TfrmAtendimento.btn_closeClick(Sender: TObject); begin Close; end; procedure TfrmAtendimento.btn_concluirClick(Sender: TObject); var i, j: integer; begin // atendimento := 'atendendo'; // pcDevedor.TabIndex := 5; dtmSystem.tblTitulos.RecNo := 1; if forma_pagamento = 'Q' then begin for i := 0 to lv_titulos.Items.Count - 1 do begin if lv_titulos.Items[i].Checked then begin queryListaTitulos.RecNo := i + 1; with dtmSystem do begin tblTitulos.Locate('ID_TITULO', queryListaTitulosID_TITULO.AsInteger, []); tblTitulos.Edit; tblTitulosTP_SITUACAO.AsString := 'QC'; tblTitulosVL_MULTA.AsCurrency := queryListaTitulosVL_MULTA.AsCurrency; tblTitulosVL_JUROS.AsCurrency := queryListaTitulosVL_JUROS.AsCurrency; tblTitulosVL_ENCARGOS.AsCurrency := queryListaTitulosVL_ENCARGOS.AsCurrency; tblTitulosVL_CORRIGIDO.AsCurrency := queryListaTitulosVL_CORRIGIDO.AsCurrency; tblTitulosDT_PAGAMENTO.AsDateTime := Date; tblTitulos.Post; tblHistorico.Append; tblHistoricoID_DEVEDOR.AsInteger := tblDevedoresID_DEVEDOR.AsInteger; tblHistoricoID_TITULO.AsInteger := tblTitulosID_TITULO.AsInteger; tblHistoricoID_PROVIDENCIA.AsInteger := 2; // 2 = quitado com a empresa de cobrança tblHistoricoDT_CONTATO.AsDateTime := Date; tblHistoricoTL_MEMO.AsString := 'O título ' + tblTitulosTX_PRODUTO.AsString + ' - ' + tblTitulosCD_DEVEDOR.AsString + ', pertencente ao devedor ' + tblDevedoresTX_NOME.AsString + ' foi quitado no dia ' + DateToStr(Date) + ' na empresa ' + tblEmpresaTX_NOME.AsString + '.'; tblHistorico.Post; end; end; end; end; if forma_pagamento = 'P' then begin for i := 0 to lv_titulos.Items.Count - 1 do begin if lv_titulos.Items[i].Checked then begin queryListaTitulos.RecNo := i + 1; with dtmSystem do begin tblTitulos.Locate('ID_TITULO', queryListaTitulosID_TITULO.AsInteger, []); tblTitulos.Edit; tblTitulosTP_SITUACAO.AsString := 'AC'; tblTitulosVL_MULTA.AsCurrency := queryListaTitulosVL_MULTA.AsCurrency; tblTitulosVL_JUROS.AsCurrency := queryListaTitulosVL_JUROS.AsCurrency; tblTitulosVL_ENCARGOS.AsCurrency := queryListaTitulosVL_ENCARGOS.AsCurrency; tblTitulosVL_CORRIGIDO.AsCurrency := queryListaTitulosVL_CORRIGIDO.AsCurrency; tblTitulos.Post; tblHistorico.Append; tblHistoricoID_DEVEDOR.AsInteger := tblDevedoresID_DEVEDOR.AsInteger; tblHistoricoID_TITULO.AsInteger := tblTitulosID_TITULO.AsInteger; tblHistoricoID_PROVIDENCIA.AsInteger := 3; // 3 = acordado com a empresa de cobrança tblHistoricoDT_CONTATO.AsDateTime := Date; tblHistoricoTL_MEMO.AsString := 'O título ' + tblTitulosTX_PRODUTO.AsString + ' - ' + tblTitulosCD_DEVEDOR.AsString + ', pertencente ao devedor ' + tblDevedoresTX_NOME.AsString + ' foi acordado no dia ' + DateToStr(Date) + ' na empresa ' + tblEmpresaTX_NOME.AsString + ' para ser parcelado.'; tblHistorico.Post; end; end; end; if dtmSystem.tblCHGEmpresaTP_CONFIANCA.AsString = 'S' then begin if index_pagamento = 1 then begin for j := 0 to lv_fechamento.Items.Count - 1 do begin with dtmSystem do begin tblTitulos.Append; if j = 0 then begin tblTitulosTX_PRODUTO.AsString := 'Entrada'; tblTitulosID_EMPRESA.AsInteger := 1; tblTitulosDT_VENCIMENTO.AsDateTime := Date; tblTitulosDT_ENTRADA.AsDateTime := Date; tblTitulosVL_TITULO.AsCurrency := StrToCurr(copy(edt_somaentrada.Text, 3, length(edt_somaentrada.Text) - 3)); tblTitulosTP_SITUACAO.AsString := 'QC'; // tblTitulosCD_DEVEDOR.AsString := tblDevedoresCD_DEVEDOR.AsString; end else begin tblTitulosTX_PRODUTO.AsString := 'Parcela nº ' + inttostr(j); tblTitulosID_EMPRESA.AsInteger := 1; // if j = 1 then // begin // tblTitulosDT_VENCIMENTO.AsDateTime := Date; // tblTitulosDT_ENTRADA.AsDateTime := Date; // tblTitulosVL_TITULO.AsCurrency := // StrToCurr(copy(lv_fechamento.Items[1].SubItems[0], 3, // length(lv_fechamento.Items[1].SubItems[0]) - 3)); // tblTitulosTP_SITUACAO.AsString := 'QC'; // //tblTitulosCD_DEVEDOR.AsString := tblDevedoresCD_DEVEDOR.AsString; // end // else // begin tblTitulosDT_VENCIMENTO.AsDateTime := StrToDate(lv_fechamento.Items[j].SubItems[1]); tblTitulosDT_ENTRADA.AsDateTime := Date; tblTitulosVL_TITULO.AsCurrency := StrToCurr(copy(lv_fechamento.Items[j].SubItems[0], 3, length(lv_fechamento.Items[j].SubItems[1]) - 3)); tblTitulosTP_SITUACAO.AsString := 'A'; // tblTitulosCD_DEVEDOR.AsString := tblDevedoresCD_DEVEDOR.AsString; // end; end; tblTitulos.Post; end; end; end; end; end; atendimento := 'atendendo'; btn_concluir.Enabled := False; Close; end; procedure TfrmAtendimento.CalcValorParcelas; var i, j, k, Y: integer; valor_parcela, valor_entrada: currency; data_helper: TDate; dia_antes, dia_depois, mes, ano: Word; begin setlength(parcelamento, 0); lv_parcelas.Clear; valor_entrada := 0; if strtoint(edt_nrparcelas.Text) >= 1 then begin setlength(parcelamento, strtoint(edt_nrparcelas.Text)); for i := 0 to lv_titulos.Items.Count - 1 do begin if lv_titulos.Items[i].Checked then begin queryListaTitulos.RecNo := i + 1; if strtoint(edt_nrparcelas.Text) <= queryListaTitulosNR_PARCELAS.AsInteger then begin if cb_nmulta.Checked then begin valor_parcela := (queryListaTitulosVL_CORRIGIDO.AsCurrency - queryListaTitulosVL_ENTRADA.AsCurrency - queryListaTitulosVL_MULTA.AsCurrency) / strtofloat(edt_nrparcelas.Text); valor_entrada := valor_entrada + (queryListaTitulosVL_ENTRADA.AsCurrency); end else begin valor_parcela := (queryListaTitulosVL_CORRIGIDO.AsCurrency - queryListaTitulosVL_ENTRADA.AsCurrency) / strtofloat(edt_nrparcelas.Text); end; for j := 0 to strtoint(edt_nrparcelas.Text) - 1 do begin parcelamento[j] := parcelamento[j] + valor_parcela; end; end else begin if cb_nmulta.Checked then begin valor_parcela := (queryListaTitulosVL_CORRIGIDO.AsCurrency - queryListaTitulosVL_ENTRADA.AsCurrency - queryListaTitulosVL_MULTA.AsCurrency) / queryListaTitulosNR_PARCELAS.AsInteger; valor_entrada := valor_entrada + (queryListaTitulosVL_ENTRADA.AsCurrency); end else begin valor_parcela := (queryListaTitulosVL_CORRIGIDO.AsCurrency - queryListaTitulosVL_ENTRADA.AsCurrency) / queryListaTitulosNR_PARCELAS.AsInteger; end; for j := 0 to strtoint(lv_titulos.Items[i].SubItems[4]) - 1 do begin parcelamento[j] := parcelamento[j] + valor_parcela; end; end; end; end; // if cbx_excentrada.Checked then // begin // valor_entrada := StrToCurr(edt_excentrada.Text); // end; // if cbx_descfixo.Checked then // begin // valor_entrada := valor_entrada - StrToCurr(edt_descfixo.Text); // end; // if cbx_acrfixo.Checked then // begin // valor_entrada := valor_entrada + StrToCurr(edt_acrfixo.Text); // end; 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)); 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)); 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 TfrmAtendimento.CarregaProtocolo; var qnt_titulos: integer; i: integer; list_titulos: TStringList; h: integer; begin list_titulos := TStringList.Create; list_titulos.Clear; list_titulos.Delimiter := ';'; qnt_titulos := dtmSystem.tblProtocoloQNT_TITULOS.AsInteger; list_titulos.DelimitedText := dtmSystem.tblProtocoloID_TITULOS.AsString; queryListaTitulos.First; dtmSystem.tblCHGEmpresa.Locate('ID_EMPRESA', queryListaTitulosID_EMPRESA.AsInteger, []); for h := 0 to clb_beneficiarioscalculo.Items.Count - 1 do begin if clb_beneficiarioscalculo.Items[h] = dtmSystem.tblCHGEmpresaTX_NOME.AsString then begin clb_beneficiarioscalculo.Checked[h] := True; end; end; for i := 0 to qnt_titulos - 1 do begin while not queryListaTitulos.Eof do begin if list_titulos[i] = queryListaTitulosID_TITULO.AsString then begin lv_titulos.Items[queryListaTitulos.RecNo - 1].Checked := True; end; queryListaTitulos.Next; end; end; if dtmSystem.tblProtocoloTP_DESC_QUIT.AsString = 'S' then begin cb_descquit.Checked; cb_descquitClick(self); edt_indquitar.Text := dtmSystem.tblProtocoloPR_QUIT_INDICADOR.AsString; edt_jurosquitar.Text := dtmSystem.tblProtocoloPR_QUIT_JUROS.AsString; edt_multasquitar.Text := dtmSystem.tblProtocoloPR_QUIT_MULTA.AsString; edt_principalquitar.Text := dtmSystem.tblProtocoloPR_QUIT_PRINCIPAL.AsString; end; if dtmSystem.tblProtocoloTP_DESC_PAR.AsString = 'S' then begin cb_descpar.Checked; cb_descparClick(self); edt_indparcelas.Text := dtmSystem.tblProtocoloPR_PARCELAR_INDICADOR.AsString; edt_jurosparcelas.Text := dtmSystem.tblProtocoloPR_PARCELAR_JUROS.AsString; edt_multasparcelas.Text := dtmSystem.tblProtocoloPR_PARCELAR_MULTA.AsString; edt_principalparcelas.Text := dtmSystem.tblProtocoloPR_PARCELAR_PRINCIPAL.AsString; end; CalcValorParcelas; Att_campos; end; procedure TfrmAtendimento.cbx_acrfixoClick(Sender: TObject); begin Att_campos; CalcValorParcelas; end; procedure TfrmAtendimento.cbx_descfixoClick(Sender: TObject); begin Att_campos; CalcValorParcelas; end; procedure TfrmAtendimento.cbx_excentradaClick(Sender: TObject); begin edt_excentrada.Enabled := cbx_excentrada.Enabled; Att_campos; CalcValorParcelas; end; procedure TfrmAtendimento.cb_descparClick(Sender: TObject); begin if cb_descpar.Checked then begin cb_descquit.Checked := False; gb_descontospar.Enabled := True; gb_descontosquit.Enabled := 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'; end; end; procedure TfrmAtendimento.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'; 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'; end; end; procedure TfrmAtendimento.cb_nmultaClick(Sender: TObject); begin Att_campos; CalcValorParcelas; end; procedure TfrmAtendimento.clb_beneficiarioscalculoClickCheck(Sender: TObject); var i: integer; begin with TCheckListBox(Sender) do begin if Checked[ItemIndex] then begin Items.beginupdate; for i := 0 to Items.Count - 1 do if i = ItemIndex then begin continue; end else begin Checked[i] := False; end; Items.EndUpdate; end; end; CriarLista; end; procedure TfrmAtendimento.clb_empresasClickCheck(Sender: TObject); var i: integer; begin inherited; with TCheckListBox(Sender) do begin if Checked[ItemIndex] then begin Items.beginupdate; for i := 0 to Items.Count - 1 do if i = ItemIndex then begin continue end else begin Checked[i] := False; end; Items.EndUpdate; end; end; end; procedure TfrmAtendimento.clb_indicesClickCheck(Sender: TObject); begin queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; procedure TfrmAtendimento.copiar_conteudoClick(Sender: TObject); var nomes, valores: array of string; spaces: string; i, j, tam, Count: integer; k: integer; begin clpbrd := ''; 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 clpbrd := clpbrd + nomes[j] + spaces + valores[j] + ' para ser pago até dia: ' + FormatDateTime('dd/mm/yyyy', data_parcelas[j]) + sLineBreak; end; end; if Sender is TMenuItem then begin Clipboard.AsText := clpbrd; end; end; procedure TfrmAtendimento.CriarLista; var h: integer; begin if queryListaTitulos.Connection = nil then // BACALHAU, NÃO TEM EXPLICAÇÃO. SÓ FUNCIONA. begin exit; end; dtmSystem.tblCHGEmpresa.Open; for h := 0 to clb_beneficiarioscalculo.Items.Count - 1 do begin if clb_beneficiarioscalculo.Checked[h] then begin dtmSystem.tblCHGEmpresa.Locate('TX_NOME', clb_beneficiarioscalculo.Items[h], []); end; end; queryListaTitulos.SQL.Clear; queryListaTitulos.SQL.Text := 'select * from (select * from chg_titulos where id_devedor = ' + dtmSystem.tblDevedoresID_DEVEDOR.AsString + ') where (tp_situacao = ''A'') and' + '(id_empresa = ' + dtmSystem.tblCHGEmpresaID_EMPRESA.AsString + ')'; queryListaTitulos.Open; queryListaTitulos.First; lv_titulos.Clear; 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(CurrToStrF(queryListaTitulos.FieldByName('VL_TITULO') .AsCurrency, ffCurrency, 2)); SubItems.Add(queryListaTitulos.FieldByName('CD_DEVEDOR').AsString); SubItems.Add(queryListaTitulos.FieldByName('NR_PARCELAS').AsString); SubItems.Add(queryListaTitulos.FieldByName('DT_VENCIMENTO').AsString); SubItems.Add(queryListaTitulos.FieldByName('DT_ENTRADA').AsString); end; lv_titulos.Column[0].Alignment := taCenter; dtmSystem.tblFaixas.Filtered := False; queryListaTitulos.Next; end; end; procedure TfrmAtendimento.dbgrd_pesquisarDblClick(Sender: TObject); begin dtmSystem.tblDevedores.Locate('TX_NOME', qryPesquisa.FieldByName('TX_NOME') .AsString, []); end; procedure TfrmAtendimento.dbgrd_titCellClick(Column: TColumn); var i: integer; begin inherited; 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; end else begin clb_empresas.Checked[i] := False; end; end; end; procedure TfrmAtendimento.dtp_atrasorecalcChange(Sender: TObject); begin queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; procedure TfrmAtendimento.dtsDevedorDataChange(Sender: TObject; Field: TField); var new_id: integer; begin if qryConsulta.Connection = nil then begin exit; end; if dtsDevedor.DataSet.FieldByName('TP_CLIENTE').AsString = 'F' then begin dbedt_cpfcnpj.DataField := 'CD_CPF'; dbedt_cpfcnpjc.DataField := 'CD_CPF'; end else begin dbedt_cpfcnpj.DataField := 'CD_CNPJ'; dbedt_cpfcnpjc.DataField := 'CD_CNPJ'; end; new_id := dtmSystem.tblDevedoresID_DEVEDOR.AsInteger; if old_id <> new_id then begin old_id := new_id; clb_beneficiarioscalculo.Clear; qryConsulta.SQL.Text := 'select * from chg_empresas where id_empresa in ' + '(select id_empresa from chg_titulos' + ' where (tp_situacao = ''A'') and (id_devedor = ' + dtmSystem.tblDevedoresID_DEVEDOR.AsString + '))'; qryConsulta.Open; qryConsulta.First; while not qryConsulta.Eof do begin clb_beneficiarioscalculo.Items.Add(qryConsulta.FieldByName('TX_NOME') .AsString); qryConsulta.Next; end; CriarLista; // clb_beneficiarioscalculo.Checked[0] := True; end; end; procedure TfrmAtendimento.dtsTitulosDataChange(Sender: TObject; Field: TField); begin if (Field = dtmSystem.tblTitulosVL_DESPESA) or (Field = dtmSystem.tblTitulosTP_DESPESA) then begin queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; end; procedure TfrmAtendimento.dtsTitulosStateChange(Sender: TObject); begin dtmSystem.AlterReadOnly(pnl_titulos, dtsTitulos.DataSet); dtmSystem.AlterReadOnly(pnl_cheque, dtsTitulos.DataSet); end; procedure TfrmAtendimento.edt_descfixoChange(Sender: TObject); begin // if length(edt_descfixo.Text) < 1 then // begin // edt_descfixo.Text := '0'; // end; // Att_campos; // CalcValorParcelas; end; procedure TfrmAtendimento.edt_descfixoKeyPress(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_descfixo.Text) > 0) then // begin // Key := #0; // end; end; procedure TfrmAtendimento.edt_excentradaChange(Sender: TObject); begin if length(edt_excentrada.Text) < 1 then begin edt_excentrada.Text := '0'; end; Att_campos; CalcValorParcelas; end; procedure TfrmAtendimento.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 TfrmAtendimento.edt_acrfixoChange(Sender: TObject); begin // if length(edt_acrfixo.Text) < 1 then // begin // edt_acrfixo.Text := '0'; // end; // Att_campos; // CalcValorParcelas; end; procedure TfrmAtendimento.edt_acrfixoKeyPress(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_acrfixo.Text) > 0) then // begin // Key := #0; // end; end; procedure TfrmAtendimento.edt_campopKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin if edt_campop.Text <> '' then begin btn_pesquisar.Click; end; end; end; procedure TfrmAtendimento.edt_indparcelasChange(Sender: TObject); begin if edt_indparcelas.Text <> '' then begin queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; if up_encparcelas.Max = 0 then begin edt_indparcelas.Text := '0'; exit; end; end; procedure TfrmAtendimento.edt_indquitarChange(Sender: TObject); begin if edt_indquitar.Text <> '' then begin queryListaTitulos.Refresh; Att_campos; end; if up_encquitar.Max = 0 then begin edt_indquitar.Text := '0'; exit; end; end; procedure TfrmAtendimento.edt_jurosparcelasChange(Sender: TObject); begin if edt_jurosparcelas.Text <> '' then begin queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; if up_jurosparcelas.Max = 0 then begin edt_jurosparcelas.Text := '0'; exit; end; end; procedure TfrmAtendimento.edt_jurosquitarChange(Sender: TObject); begin if edt_jurosquitar.Text <> '' then begin queryListaTitulos.Refresh; Att_campos; end; if up_jurosquitar.Max = 0 then begin edt_jurosquitar.Text := '0'; exit; end; end; procedure TfrmAtendimento.edt_multasparcelasChange(Sender: TObject); begin if edt_multasparcelas.Text <> '' then begin queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; if up_multasparcelas.Max = 0 then begin edt_multasparcelas.Text := '0'; exit; end; end; procedure TfrmAtendimento.edt_multasquitarChange(Sender: TObject); begin if edt_multasquitar.Text <> '' then begin queryListaTitulos.Refresh; Att_campos; end; if up_multasquitar.Max = 0 then begin edt_multasquitar.Text := '0'; exit; end; end; procedure TfrmAtendimento.edt_nrparcelasChange(Sender: TObject); begin if cb_descquit.Checked then begin edt_nrparcelas.Text := '0'; end; Att_campos; CalcValorParcelas; end; procedure TfrmAtendimento.edt_principalparcelasChange(Sender: TObject); begin if edt_principalparcelas.Text <> '' then begin queryListaTitulos.Refresh; Att_campos; CalcValorParcelas; end; if up_principalparcelas.Max = 0 then begin edt_principalparcelas.Text := '0'; exit; end; end; procedure TfrmAtendimento.edt_principalquitarChange(Sender: TObject); begin if edt_principalquitar.Text <> '' then begin queryListaTitulos.Refresh; Att_campos; end; if up_principalquitar.Max = 0 then begin edt_principalquitar.Text := '0'; exit; end; end; procedure TfrmAtendimento.FormCreate(Sender: TObject); var Pos: integer; begin Pos := 0; old_id := -1; atendimento := 'atendendo'; dtp_atrasorecalc.Date := Date; with dtmSystem do begin if not tblDevedores.Active then begin tblDevedores.Open; end; tblEnderecos.Open; tblTelefones.Open; tblTitulos.Open; tblProtocolo.Open; tblEmpresa.Open; tblEmpresa.First; tblCHGEmpresa.Open; tblCHGEmpresa.First; // 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; end; tblCHGEmpresa.Next; Pos := Pos + 1; // setlength(cbl_hints,pos+1); end; tblIndices.Open; tblIndices.First; while not tblIndices.Eof do begin clb_indices.Items.Add(tblIndicesTX_NOME.AsString); // cbl_hints[pos] := tblCHGEmpresaTX_CNPJ.AsString; tblIndices.Next; // setlength(cbl_hints,pos+1); end; tblHistorico.Open; end; dbgrd_enderecos.DataSource.DataSet.First; gb_descontosquit.Enabled := cb_descquit.Checked; gb_descontospar.Enabled := cb_descpar.Checked; FListViewOldWndProc := lv_titulos.WindowProc; lv_titulos.WindowProc := ListViewNewWndProc; FlistViewOldWndProc2 := lv_parcelas.WindowProc; lv_parcelas.WindowProc := ListViewNewWndProc2; // FListViewOldWndProc3 := lv_prevtitulos.WindowProc; // lv_prevtitulos.WindowProc := ListViewNewWndProc3; // FlistViewOldWndProc4 := lv_fechamento.WindowProc; // lv_fechamento.WindowProc := ListViewNewWndProc4; SetupHackedNavigator(navdevedor, ImageList1, 's'); SetupHackedNavigator(navenderecos, ImageList1, 's'); SetupHackedNavigator(navtelefones, ImageList1, 's'); SetupHackedNavigator(navtitulos, ImageList1, 's'); SetupHackedNavigator(navhistorico, ImageList1, 's'); pcDevedor.ActivePageIndex := 0; dtsDevedor.DataSet.Refresh; CriarLista; end; procedure TfrmAtendimento.FormDestroy(Sender: TObject); begin lv_titulos.WindowProc := FListViewOldWndProc; FListViewOldWndProc := nil; end; procedure TfrmAtendimento.ListViewNewWndProc(var Msg: TMessage); var hdn: ^THDNotify; begin if Msg.Msg = WM_NOTIFY then begin hdn := Pointer(Msg.lParam); if (hdn.hdr.code = HDN_BeginTrackW) or (hdn.hdr.code = HDN_BeginTrackA) then begin Msg.result := 1 end else begin FListViewOldWndProc(Msg); end; end else begin FListViewOldWndProc(Msg); end; end; procedure TfrmAtendimento.ListViewNewWndProc2(var Msg: TMessage); var hdn: ^THDNotify; begin if Msg.Msg = WM_NOTIFY then begin hdn := Pointer(Msg.lParam); if (hdn.hdr.code = HDN_BeginTrackW) or (hdn.hdr.code = HDN_BeginTrackA) then begin Msg.result := 1 end else begin FlistViewOldWndProc2(Msg); end; end else begin FlistViewOldWndProc2(Msg); end; end; procedure TfrmAtendimento.lv_titulosChange(Sender: TObject; Item: TListItem; Change: TItemChange); begin Att_campos; CalcValorParcelas; end; procedure TfrmAtendimento.pcDevedorChange(Sender: TObject); begin if pcDevedor.TabIndex = 6 then begin if atendimento = 'atendendo' then begin pcDevedor.TabIndex := pagina; end; if (atendimento = 'fechamento') and (pcDevedor.TabIndex <> 6) then begin pcDevedor.TabIndex := 6; end; end; end; procedure TfrmAtendimento.pcDevedorChanging(Sender: TObject; var AllowChange: Boolean); begin pagina := pcDevedor.TabIndex; end; procedure TfrmAtendimento.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: currency; g: integer; begin // quant de dias de atraso dtmSystem.tblCHGEmpresa.Locate('ID_EMPRESA', queryListaTitulosID_EMPRESA.AsString, []); queryListaTitulosDT_ATRASO.AsInteger := DaysBetween(dtp_atrasorecalc.Date, queryListaTitulosDT_VENCIMENTO.AsDateTime); vl_nominal := queryListaTitulosVL_TITULO.AsCurrency; with dtmSystem do begin if ROQueryFaixa.Connection = nil then // BACALHAU, NÃO TEM EXPLICAÇÃO. SÓ FUNCIONA. begin exit; end; ROQueryFaixa.SQL.Clear; ROQueryFaixa.SQL.Add('select pr_faixa from chg_faixas where DT_INICIO < ' + queryListaTitulosDT_ATRASO.AsString + ' and DT_FINAL > ' + queryListaTitulosDT_ATRASO.AsString); ROQueryFaixa.Open; // valor da parcela do indicador queryListaTitulosPR_INDICADOR.AsFloat := ROQueryFaixa.FieldByName('PR_FAIXA').AsFloat; pl_indicador := vl_nominal * (queryListaTitulosPR_INDICADOR.AsFloat / 100); queryListaTitulosVL_INDICADOR.AsCurrency := pl_indicador; ROQueryFaixa.SQL.Clear; ROQueryFaixa.SQL.Add ('select * from chg_politicas where id_politica in (select id_politica from chg_faixas where DT_INICIO < ' + queryListaTitulosDT_ATRASO.AsString + ' and DT_FINAL > ' + queryListaTitulosDT_ATRASO.AsString + ')'); ROQueryFaixa.Open; // número máx de parcelamento queryListaTitulosNR_PARCELAS.AsInteger := ROQueryFaixa.FieldByName('NR_PARCELA_MAXIMO').AsInteger; // parcela do juros queryListaTitulosPR_JUROS.AsFloat := ROQueryFaixa.FieldByName ('PR_JUROS').AsFloat; pl_juros := vl_nominal * ((queryListaTitulosPR_JUROS.AsFloat / 30) / 100) * queryListaTitulosDT_ATRASO.AsInteger; queryListaTitulosVL_JUROS.AsCurrency := pl_juros; // parcela da multa queryListaTitulosPR_MULTA.AsFloat := ROQueryFaixa.FieldByName ('PR_MULTA').AsFloat; pl_multa := (queryListaTitulosPR_MULTA.AsFloat / 100) * vl_nominal; queryListaTitulosVL_MULTA.AsCurrency := pl_multa; vl_indices := 0; for g := 0 to clb_indices.Items.Count - 1 do begin if clb_indices.Checked[g] then begin dtmSystem.tblIndices.RecNo := g + 1; vl_indices := vl_indices + (vl_nominal * (((dtmSystem.tblIndicesPR_INDICE.AsFloat / 30) / 100) * queryListaTitulosDT_ATRASO.AsInteger)); end; end; // valor dos índices queryListaTitulosVL_INDICES.AsCurrency := vl_indices; pl_encargos := pl_multa + pl_juros + pl_indicador + vl_indices; 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; // parcela da entrada queryListaTitulosPR_ENTRADA.AsFloat := ROQueryFaixa.FieldByName('PR_ENTRADA').AsFloat; if cbx_excentrada.Checked then begin pl_entrada := StrToCurr(edt_excentrada.Text); queryListaTitulosVL_ENTRADA.AsCurrency := pl_entrada; end else begin pl_entrada := vl_corrigido * (queryListaTitulosPR_ENTRADA.AsFloat / 100); queryListaTitulosVL_ENTRADA.AsCurrency := pl_entrada; end; // % descontos queryListaTitulosPR_QUITACAO_INDICADOR.AsFloat := ROQueryFaixa.FieldByName('PR_QUITACAO_INDICADOR').AsFloat; queryListaTitulosPR_QUITACAO_PRINCIPAL.AsFloat := ROQueryFaixa.FieldByName('PR_QUITACAO_PRINCIPAL').AsFloat; queryListaTitulosPR_QUITACAO_MULTA.AsFloat := ROQueryFaixa.FieldByName('PR_QUITACAO_MULTA').AsFloat; queryListaTitulosPR_QUITACAO_JUROS.AsFloat := ROQueryFaixa.FieldByName('PR_QUITACAO_JUROS').AsFloat; queryListaTitulosPR_PARCELA_INDICADOR.AsFloat := ROQueryFaixa.FieldByName('PR_PARCELA_INDICADOR').AsFloat; queryListaTitulosPR_PARCELA_PRINCIPAL.AsFloat := ROQueryFaixa.FieldByName('PR_PARCELA_PRINCIPAL').AsFloat; queryListaTitulosPR_PARCELA_MULTA.AsFloat := ROQueryFaixa.FieldByName('PR_PARCELA_MULTA').AsFloat; queryListaTitulosPR_PARCELA_JUROS.AsFloat := ROQueryFaixa.FieldByName('PR_PARCELA_JUROS').AsFloat; tblFaixas.Filtered := False; end; // Descontos sobre Quitar if strtoint(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 * (strtoint(edt_indquitar.Text) / 100); end; if strtoint(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 * (strtoint(edt_principalquitar.Text) / 100); end; if strtoint(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 * (strtoint(edt_multasquitar.Text) / 100); end; if strtoint(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 * (strtoint(edt_jurosquitar.Text) / 100); end; // Descontos sobre Parcelar if strtoint(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 * (strtoint(edt_indparcelas.Text) / 100); end; if strtoint(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 * (strtoint(edt_principalparcelas.Text) / 100); end; if strtoint(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 * (strtoint(edt_multasparcelas.Text) / 100); end; if strtoint(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 * (strtoint(edt_jurosparcelas.Text) / 100); end; if (cb_descquit.Checked) then begin queryListaTitulosVL_INDICADOR.AsCurrency := pl_indicador - queryListaTitulosVL_DESC_QUIT_IND.AsCurrency; queryListaTitulosVL_TITULO.AsCurrency := vl_nominal - queryListaTitulosVL_DESC_QUIT_PRIN.AsCurrency; queryListaTitulosVL_JUROS.AsCurrency := pl_juros - queryListaTitulosVL_DESC_QUIT_JUROS.AsCurrency; queryListaTitulosVL_MULTA.AsCurrency := pl_multa - queryListaTitulosVL_DESC_QUIT_MULTA.AsCurrency; if cb_nmulta.Checked then begin queryListaTitulosVL_ENCARGOS.AsCurrency := queryListaTitulosVL_JUROS.AsCurrency + queryListaTitulosVL_INDICADOR.AsCurrency; queryListaTitulosVL_CORRIGIDO.AsCurrency := queryListaTitulosVL_TITULO.AsCurrency + queryListaTitulosVL_ENCARGOS.AsCurrency; if cbx_excentrada.Checked then begin queryListaTitulosVL_ENTRADA.AsCurrency := StrToCurr(edt_excentrada.Text) end else begin queryListaTitulosVL_ENTRADA.AsCurrency := queryListaTitulosVL_CORRIGIDO.AsCurrency * (queryListaTitulosPR_ENTRADA.AsFloat / 100); end; end else begin queryListaTitulosVL_ENCARGOS.AsCurrency := queryListaTitulosVL_JUROS.AsCurrency + queryListaTitulosVL_INDICADOR.AsCurrency + queryListaTitulosVL_MULTA.AsCurrency; queryListaTitulosVL_CORRIGIDO.AsCurrency := queryListaTitulosVL_TITULO.AsCurrency + queryListaTitulosVL_ENCARGOS.AsCurrency; if cbx_excentrada.Checked then begin queryListaTitulosVL_ENTRADA.AsCurrency := StrToCurr(edt_excentrada.Text) end else begin queryListaTitulosVL_ENTRADA.AsCurrency := queryListaTitulosVL_CORRIGIDO.AsCurrency * (queryListaTitulosPR_ENTRADA.AsFloat / 100); end; end; end; if (cb_descpar.Checked) and (strtoint(edt_nrparcelas.Text) >= 1) then begin queryListaTitulosVL_INDICADOR.AsCurrency := pl_indicador - queryListaTitulosVL_DESC_PAR_IND.AsCurrency; queryListaTitulosVL_TITULO.AsCurrency := vl_nominal - queryListaTitulosVL_DESC_PAR_PRIN.AsCurrency; queryListaTitulosVL_JUROS.AsCurrency := pl_juros - queryListaTitulosVL_DESC_PAR_JUROS.AsCurrency; queryListaTitulosVL_MULTA.AsCurrency := pl_multa - queryListaTitulosVL_DESC_PAR_MULTA.AsCurrency; if cb_nmulta.Checked then begin queryListaTitulosVL_ENCARGOS.AsCurrency := queryListaTitulosVL_JUROS.AsCurrency + queryListaTitulosVL_INDICADOR.AsCurrency; queryListaTitulosVL_CORRIGIDO.AsCurrency := queryListaTitulosVL_TITULO.AsCurrency + queryListaTitulosVL_ENCARGOS.AsCurrency; if cbx_excentrada.Checked then begin queryListaTitulosVL_ENTRADA.AsCurrency := StrToCurr(edt_excentrada.Text) end else begin queryListaTitulosVL_ENTRADA.AsCurrency := queryListaTitulosVL_CORRIGIDO.AsCurrency * (queryListaTitulosPR_ENTRADA.AsFloat / 100); end; end else begin queryListaTitulosVL_ENCARGOS.AsCurrency := queryListaTitulosVL_JUROS.AsCurrency + queryListaTitulosVL_INDICADOR.AsCurrency + queryListaTitulosVL_MULTA.AsCurrency; queryListaTitulosVL_CORRIGIDO.AsCurrency := queryListaTitulosVL_TITULO.AsCurrency + queryListaTitulosVL_ENCARGOS.AsCurrency; if cbx_excentrada.Checked then begin queryListaTitulosVL_ENTRADA.AsCurrency := StrToCurr(edt_excentrada.Text) end else begin queryListaTitulosVL_ENTRADA.AsCurrency := queryListaTitulosVL_CORRIGIDO.AsCurrency * (queryListaTitulosPR_ENTRADA.AsFloat / 100); end; end; end; 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 queryListaTitulosVL_DESPESA.AsCurrency <> 0 then begin if queryListaTitulosTP_DESPESA.AsString = 'A' then begin queryListaTitulosVL_CORRIGIDO.AsCurrency := queryListaTitulosVL_CORRIGIDO.AsCurrency + queryListaTitulosVL_DESPESA.AsCurrency; if cbx_excentrada.Checked then begin queryListaTitulosVL_ENTRADA.AsCurrency := StrToCurr(edt_excentrada.Text) end else begin queryListaTitulosVL_ENTRADA.AsCurrency := queryListaTitulosVL_CORRIGIDO.AsCurrency * (queryListaTitulosPR_ENTRADA.AsFloat / 100); end; end; if queryListaTitulosTP_DESPESA.AsString = 'D' then begin queryListaTitulosVL_CORRIGIDO.AsCurrency := queryListaTitulosVL_CORRIGIDO.AsCurrency - queryListaTitulosVL_DESPESA.AsCurrency; if cbx_excentrada.Checked then begin queryListaTitulosVL_ENTRADA.AsCurrency := StrToCurr(edt_excentrada.Text) end else begin queryListaTitulosVL_ENTRADA.AsCurrency := queryListaTitulosVL_CORRIGIDO.AsCurrency * (queryListaTitulosPR_ENTRADA.AsFloat / 100); end; end; end; end; { procedure TfrmAtendimento.rg_tipopagamentoClick(Sender: TObject); begin // 0=dinheiro;1=débito;2=crédito;3=cheque; if tipo_pagamento = 'Q' then begin case rg_tipopagamento.ItemIndex of 0: end; end; if tipo_pagamento = 'P' then begin end; end; } procedure TfrmAtendimento.SetupHackedNavigator(const Navigator: TDBNavigator; const Glyphs: TImageList; S: string); const Captions: array [TNavigateBtn] of string = ('Primeiro', 'Anterior', 'Próximo', 'Último', 'Adicionar', 'Apagar', 'Modificar', 'Confirmar', 'Cancelar', 'Atualizar', 'Aplicar Atualizações', 'Cancelar Atualizãções'); (* Captions : array[TNavigateBtn] of string = ('First', 'Prior', 'Next', 'Last', 'Insert', 'Delete', 'Edit', 'Post', 'Cancel', 'Refresh'); *) Hints: array [TNavigateBtn] of string = ('Primeiro', 'Anterior', 'Próximo', 'Último', 'Adicionar', 'Apagar', 'Modificar', 'Confirmar', 'Cancelar', 'Atualizar', 'Aplicar Atualizações', 'Cancelar Atualizãções'); var btn: TNavigateBtn; begin // função propriamente dita para "hackear" o navigator for btn := Low(TNavigateBtn) to High(TNavigateBtn) do with THackDBNavigator(Navigator).Buttons[btn] do begin // from the Captions const array Hint := Hints[btn]; if LowerCase(S) = 's' then begin Caption := Captions[btn]; end; // the number of images in the Glyph property NumGlyphs := 1; // Remove the old glyph. Glyph := nil; // Assign the custom one Glyphs.GetBitmap(integer(btn), Glyph); // gylph above text Layout := blGlyphTop; Font.Style := Font.Style - [fsbold]; end; end; end.