unit ufrmFechamentoDevedor; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, umstMaster, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.ComCtrls, DateUtils; type TStringDynArray = array of string; type TfrmFechamentoDevedor = class(TmstMaster) pnl_fundo: TPanel; lbl_ligacao: TLabel; cb_ligacao: TComboBox; lbl_situacao: TLabel; cb_situacao: TComboBox; lbl_acordo: TLabel; cb_acordo: TComboBox; btncontinuar: TButton; btncancel: TButton; procedure cb_ligacaoChange(Sender: TObject); procedure cb_situacaoChange(Sender: TObject); procedure btncontinuarClick(Sender: TObject); private function EscreveTitulos(): TStringDynArray; procedure WMMoving(var Msg: TWMMoving); message WM_MOVING; { Private declarations } public { Public declarations } end; var frmFechamento: TfrmFechamentoDevedor; implementation {$R *.dfm} uses udtmSystem, System.UITypes, ucadDevedores; procedure TfrmFechamentoDevedor.cb_ligacaoChange(Sender: TObject); begin inherited; if cb_ligacao.ItemIndex = 0 then begin cb_situacao.Enabled := true; end else begin cb_situacao.Enabled := false; cb_acordo.Enabled := false; end; if cb_ligacao.ItemIndex <> -1 then begin btncontinuar.Enabled := true; end; end; procedure TfrmFechamentoDevedor.cb_situacaoChange(Sender: TObject); begin inherited; if (cb_situacao.ItemIndex = 0) or (cb_situacao.ItemIndex = 2) then begin cb_acordo.Enabled := true; end else begin cb_acordo.Enabled := false; end; end; procedure TfrmFechamentoDevedor.btncontinuarClick(Sender: TObject); var titulos: array of string; k, i, verificador: Integer; h: Integer; begin inherited; // dtmSystem.tblProvidencias.Filter := 'ID_PROVIDENCIA > 1'; // dtmSystem.tblProvidencias.Filtered := true; if (cb_acordo.ItemIndex = 0) and (cadDevedores.cb_descpar.Checked) then begin verificador := MessageDlg ('Foi acordado quitar a dívida, mas descontos sobre parcelar estão ativados. Deseja continuar?', mtConfirmation, [mbYes, mbNo], 0); if verificador = 7 then begin ModalResult := mrCancel; Abort; end; end; if (cb_acordo.ItemIndex = 1) and (cadDevedores.cb_descquit.Checked) then begin verificador := MessageDlg ('Foi acordado parcelar a dívida, mas descontos sobre quitar estão ativados. Deseja continuar?', mtConfirmation, [mbYes, mbNo], 0); if verificador = 7 then begin ModalResult := mrCancel; Abort; end; end; // cadDevedores.dtp_diaagendamento.Enabled := false; // cadDevedores.dtp_horaagendamento.Enabled := false; // cadDevedores.dblucb_cobradoragendar.Enabled := false; // cadDevedores.dbgrd_providencias.Enabled := true; // if cadDevedores.btn_protocolo.Enabled then // begin // cadDevedores.edt_protocolo.Text := cadDevedores.gerar_protocolo // (dtmSystem.tblDevedoresID_DEVEDOR.AsString); // cadDevedores.edt_protocolo1.Text := cadDevedores.edt_protocolo.Text; // cadDevedores.btn_protocolo.Enabled := false; // end; cadDevedores.mb_fechamento.Clear; cadDevedores.mb_fechamento.Lines.Add('Cobrador: ' + dtmSystem.tx_usuario); cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add(DateToStr(Date) + ' - ' + TimeToStr(Time)); cadDevedores.mb_fechamento.Lines.Add(''); dtmSystem.tblTelefones.First; h := 1; while not dtmSystem.tblTelefones.Eof do begin if dtmSystem.tblTelefonesTP_ATIVO.AsString <> 'N' then begin cadDevedores.mb_fechamento.Lines.Add('Telefone nº' + inttostr(h) + ': ' + '(' + dtmSystem.tblTelefonesNR_DDD.AsString + ')' + dtmSystem.tblTelefonesNR_NUMERO.AsString + ' - Situação: '); Inc(h); end; dtmSystem.tblTelefones.Next; end; cadDevedores.mb_fechamento.Lines.Add(''); { 0 = Sim; 1 = Não } if cb_ligacao.ItemIndex = 1 then begin // cadDevedores.mb_fechamento.Lines.Add // ('O devedor ' + dtmSystem.tblDevedoresTX_NOME.AsString + // ' no(s) telefone(s) __________ não atendeu a(s) chamada(s).'); end else begin setlength(titulos, length(EscreveTitulos())); for k := 0 to length(titulos) - 1 do begin titulos[k] := EscreveTitulos()[k]; end; // cadDevedores.mb_fechamento.Lines.Add // ('A ligação para o telefone __________ foi atendia por __________.'); // cadDevedores.mb_fechamento.Lines.Add(''); { cadDevedores.dtp_diaagendamento.Date := cadDevedores.dtp_atrasorecalc.Date; cadDevedores.dtp_horaagendamento.Time := Time; } { 0 = Fechou; 1 = Não aceitou acordo; 2 = Acordo a ser considerado; 3 = Agendou atendente; 4 = Agendou outro cobrador } if cb_situacao.ItemIndex = 0 then begin if length(titulos) > 1 then begin cadDevedores.mb_fechamento.Lines.Add('Foram cobrados os títulos:'); cadDevedores.mb_fechamento.Lines.Add(''); end else begin cadDevedores.mb_fechamento.Lines.Add('Foi cobrado o título:'); cadDevedores.mb_fechamento.Lines.Add(''); end; for i := 0 to length(titulos) - 1 do begin cadDevedores.mb_fechamento.Lines.Add(titulos[i]); end; cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add('Foi fechado o seguinte acordo:'); cadDevedores.mb_fechamento.Lines.Add(''); { 0 = Quitação; 1 = Parcelamento } if cb_acordo.ItemIndex = 0 then begin cadDevedores.mb_fechamento.Lines.Add('Forma de pagamento: Quitação.'); cadDevedores.mb_fechamento.Lines.Add('Data para pagamento: ' + FormatDateTime('dd/mm/yyyy', cadDevedores.dtp_atrasorecalc.Date) + '.'); cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add('Valor total corrigido: ' + cadDevedores.edt_vlaquitar.Text + '.'); cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add('Valor total nominal: ' + cadDevedores.edt_somatitulos.Text + '.'); if cadDevedores.cbx_txextra.Checked then begin cadDevedores.mb_fechamento.Lines.Add('Valor de taxas extras: ' + cadDevedores.edt_txextra.Text + '.'); end; if cadDevedores.cb_nmulta.Checked then begin cadDevedores.mb_fechamento.Lines.Add('Não foi cobrado multa.'); end else begin cadDevedores.mb_fechamento.Lines.Add('Valor total da multa: ' + cadDevedores.edt_somamulta.Text + '.'); end; cadDevedores.mb_fechamento.Lines.Add('Valor total de juros: ' + cadDevedores.edt_somajuros.Text + '.'); cadDevedores.mb_fechamento.Lines.Add ('Valor total de indicador financeiro: ' + cadDevedores.edt_somaindicador.Text + '.'); if cadDevedores.cb_descquit.Checked then begin cadDevedores.mb_fechamento.Lines.Add ('Foi concedido descontos conforme a seguir:'); cadDevedores.mb_fechamento.Lines.Add('Porcentagem sobre principal: ' + cadDevedores.edt_principalquitar.Text + '%.'); cadDevedores.mb_fechamento.Lines.Add('Porcentagem sobre multa: ' + cadDevedores.edt_multasquitar.Text + '%.'); cadDevedores.mb_fechamento.Lines.Add('Porcentagem sobre juros: ' + cadDevedores.edt_jurosquitar.Text + '%.'); cadDevedores.mb_fechamento.Lines.Add ('Porcentagem sobre indicador financeiro: ' + cadDevedores.edt_indquitar.Text + '%.'); cadDevedores.mb_fechamento.Lines.Add('Porcentagem sobre corrigido: ' + cadDevedores.edt_corquitar.Text + '%.'); end; cadDevedores.mb_fechamento.Lines.Add('Forma de Pagamento sugerida: ' + cadDevedores.cb_formapag.Text); // cadDevedores.mb_fechamento.Lines.Add('Valor ajustado: '+ cadDevedores.edt_vlcorpag.Text); end; if cb_acordo.ItemIndex = 1 then begin cadDevedores.mb_fechamento.Lines.Add ('Forma de pagamento: Parcelamento.'); cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add('Valor total corrigido: ' + cadDevedores.edt_vlaquitar.Text + '.'); cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add('Valor total nominal: ' + cadDevedores.edt_somatitulos.Text + '.'); if cadDevedores.cbx_txextra.Checked then begin cadDevedores.mb_fechamento.Lines.Add('Valor de taxas extras: ' + cadDevedores.edt_txextra.Text + '.'); end; cadDevedores.mb_fechamento.Lines.Add('Quantidade de parcelas: ' + cadDevedores.edt_nrparcelas.Text + '.'); cadDevedores.copiar_conteudoClick(Sender); cadDevedores.mb_fechamento.Lines.Add(cadDevedores.clpbrd); if cadDevedores.cb_nmulta.Checked then begin cadDevedores.mb_fechamento.Lines.Add('Não foi cobrado multa.'); end else begin cadDevedores.mb_fechamento.Lines.Add('Valor total da multa: ' + cadDevedores.edt_somamulta.Text + '.'); end; cadDevedores.mb_fechamento.Lines.Add('Valor total de juros: ' + cadDevedores.edt_somajuros.Text + '.'); cadDevedores.mb_fechamento.Lines.Add ('Valor total de indicador financeiro: ' + cadDevedores.edt_somaindicador.Text + '.'); if cadDevedores.cb_descpar.Checked then begin cadDevedores.mb_fechamento.Lines.Add ('Foi concedido descontos conforme a seguir:'); cadDevedores.mb_fechamento.Lines.Add('Porcentagem sobre principal: ' + cadDevedores.edt_principalparcelas.Text + '%.'); cadDevedores.mb_fechamento.Lines.Add('Porcentagem sobre multa: ' + cadDevedores.edt_multasparcelas.Text + '%.'); cadDevedores.mb_fechamento.Lines.Add('Porcentagem sobre juros: ' + cadDevedores.edt_jurosparcelas.Text + '%.'); cadDevedores.mb_fechamento.Lines.Add ('Porcentagem sobre indicador financeiro: ' + cadDevedores.edt_indparcelas.Text + '%.'); cadDevedores.mb_fechamento.Lines.Add('Porcentagem sobre corrigido: ' + cadDevedores.edt_corpar.Text + '%.'); end; cadDevedores.mb_fechamento.Lines.Add('Forma de Pagamento sugerida: ' + cadDevedores.cb_formapag.Text); end; end; if cb_situacao.ItemIndex = 1 then begin if length(titulos) > 1 then begin cadDevedores.mb_fechamento.Lines.Add('Foram cobrados os títulos:'); cadDevedores.mb_fechamento.Lines.Add(''); end else begin cadDevedores.mb_fechamento.Lines.Add('Foi cobrado o título:'); cadDevedores.mb_fechamento.Lines.Add(''); end; for i := 0 to length(titulos) - 1 do begin cadDevedores.mb_fechamento.Lines.Add(titulos[i]); end; cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add('Nenhum acordo foi fechado.'); cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add ('O motivo do não fechamento foi: __________.'); end; if cb_situacao.ItemIndex = 2 then begin if length(titulos) > 1 then begin cadDevedores.mb_fechamento.Lines.Add('Foram cobrados os títulos:'); cadDevedores.mb_fechamento.Lines.Add(''); end else begin cadDevedores.mb_fechamento.Lines.Add('Foi cobrado o título:'); cadDevedores.mb_fechamento.Lines.Add(''); end; for i := 0 to length(titulos) - 1 do begin cadDevedores.mb_fechamento.Lines.Add(titulos[i]); end; cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add ('Foi oferecido ao devedor o seguinte acordo a ser considerado: '); cadDevedores.mb_fechamento.Lines.Add('Forma de pagamento: Quitação.'); cadDevedores.mb_fechamento.Lines.Add('Data para pagamento: ' + FormatDateTime('dd/mm/yyyy', cadDevedores.dtp_atrasorecalc.Date) + '.'); cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add('Valor total corrigido: ' + cadDevedores.edt_vlaquitar.Text + '.'); cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add('Valor total nominal: ' + cadDevedores.edt_somatitulos.Text + '.'); if cadDevedores.cbx_txextra.Checked then begin cadDevedores.mb_fechamento.Lines.Add('Valor de taxas extras: ' + cadDevedores.edt_txextra.Text + '.'); end; if cadDevedores.cb_nmulta.Checked then begin cadDevedores.mb_fechamento.Lines.Add('Não foi cobrado multa.'); end else begin cadDevedores.mb_fechamento.Lines.Add('Valor total da multa: ' + cadDevedores.edt_somamulta.Text + '.'); end; cadDevedores.mb_fechamento.Lines.Add('Valor total de juros: ' + cadDevedores.edt_somajuros.Text + '.'); cadDevedores.mb_fechamento.Lines.Add ('Valor total de indicador financeiro: ' + cadDevedores.edt_somaindicador.Text + '.'); if cadDevedores.cb_descquit.Checked then begin cadDevedores.mb_fechamento.Lines.Add ('Foi concedido descontos conforme a seguir:'); cadDevedores.mb_fechamento.Lines.Add('Porcentagem sobre principal: ' + cadDevedores.edt_principalquitar.Text + '%.'); cadDevedores.mb_fechamento.Lines.Add('Porcentagem sobre multa: ' + cadDevedores.edt_multasquitar.Text + '%.'); cadDevedores.mb_fechamento.Lines.Add('Porcentagem sobre juros: ' + cadDevedores.edt_jurosquitar.Text + '%.'); cadDevedores.mb_fechamento.Lines.Add ('Porcentagem sobre indicador financeiro: ' + cadDevedores.edt_indquitar.Text + '%.'); cadDevedores.mb_fechamento.Lines.Add('Porcentagem sobre corrigido: ' + cadDevedores.edt_corquitar.Text + '%.'); end; cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add('Forma de pagamento: Parcelamento.'); cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add('Valor total corrigido: ' + cadDevedores.edt_vlaquitar.Text + '.'); cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add('Valor total nominal: ' + cadDevedores.edt_somatitulos.Text + '.'); if cadDevedores.cbx_txextra.Checked then begin cadDevedores.mb_fechamento.Lines.Add('Valor de taxas extras: ' + cadDevedores.edt_txextra.Text + '.'); end; cadDevedores.mb_fechamento.Lines.Add('Quantidade de parcelas: ' + cadDevedores.edt_nrparcelas.Text + '.'); cadDevedores.copiar_conteudoClick(Sender); cadDevedores.mb_fechamento.Lines.Add(cadDevedores.clpbrd); if cadDevedores.cb_nmulta.Checked then begin cadDevedores.mb_fechamento.Lines.Add('Não foi cobrado multa.'); end else begin cadDevedores.mb_fechamento.Lines.Add('Valor total da multa: ' + cadDevedores.edt_somamulta.Text + '.'); end; cadDevedores.mb_fechamento.Lines.Add('Valor total de juros: ' + cadDevedores.edt_somajuros.Text + '.'); cadDevedores.mb_fechamento.Lines.Add ('Valor total de indicador financeiro: ' + cadDevedores.edt_somaindicador.Text + '.'); if cadDevedores.cb_descpar.Checked then begin cadDevedores.mb_fechamento.Lines.Add ('Foi concedido descontos conforme a seguir:'); cadDevedores.mb_fechamento.Lines.Add('Porcentagem sobre principal: ' + cadDevedores.edt_principalparcelas.Text + '%.'); cadDevedores.mb_fechamento.Lines.Add('Porcentagem sobre multa: ' + cadDevedores.edt_multasparcelas.Text + '%.'); cadDevedores.mb_fechamento.Lines.Add('Porcentagem sobre juros: ' + cadDevedores.edt_jurosparcelas.Text + '%.'); cadDevedores.mb_fechamento.Lines.Add ('Porcentagem sobre indicador financeiro: ' + cadDevedores.edt_indparcelas.Text + '%.'); cadDevedores.mb_fechamento.Lines.Add('Porcentagem sobre corrigido: ' + cadDevedores.edt_corpar.Text + '%.'); end; end; if cb_situacao.ItemIndex = 3 then begin // cadDevedores.dtp_diaagendamento.Enabled := true; // cadDevedores.dtp_horaagendamento.Enabled := true; cadDevedores.mb_fechamento.Lines.Add ('Foi agendado para o dia __/__/____ às __:__ .'); cadDevedores.mb_fechamento.Lines.Add(''); // if length(titulos) > 1 then // begin // cadDevedores.mb_fechamento.Lines.Add // ('Foram cobrados os títulos:'); // cadDevedores.mb_fechamento.Lines.Add(''); // end // else // begin // cadDevedores.mb_fechamento.Lines.Add('Foi cobrado o título:'); // cadDevedores.mb_fechamento.Lines.Add(''); // end; // for i := 0 to length(titulos) - 1 do // begin // cadDevedores.mb_fechamento.Lines.Add(titulos[i]); // end; // cadDevedores.mb_fechamento.Lines.Add(''); // cadDevedores.mb_fechamento.Lines.Add // ('Foi oferecido ao devedor o seguinte acordo: '); end; if (cadDevedores.cbx_txextra.Checked) and (StrToCurr(cadDevedores.edt_txextra.Text) > 0) then begin cadDevedores.mb_fechamento.Lines.Add(''); cadDevedores.mb_fechamento.Lines.Add ('Taxa extra cobrada: ' + (cadDevedores.edt_txextra.Text)); end; // if cb_situacao.ItemIndex = 4 then // begin /// / cadDevedores.dtp_diaagendamento.Enabled := true; /// / cadDevedores.dtp_horaagendamento.Enabled := true; /// / cadDevedores.dblucb_cobradoragendar.Enabled := true; // // dtmSystem.tblProvidencias.Filtered := false; // cadDevedores.mb_fechamento.Lines.Add // ('Foi agendado para o dia __/__/____ para o cobrador __________ no horário de atendimento __:__.'); // // dtmSystem.tblProvidencias.First; // cadDevedores.edt_prov.Text := // dtmSystem.tblProvidenciasTX_NOME.AsString; // cadDevedores.mb_fechamento.Lines.Add('Providência tomada: ' + // dtmSystem.tblProvidenciasTX_NOME.AsString + '.'); // // dtmSystem.tblProvidencias.DisableControls; // // cadDevedores.dbgrd_providencias.Enabled := false; // end; end; end; function TfrmFechamentoDevedor.EscreveTitulos(): TStringDynArray; var count, i, j: Integer; tx_titulo, vl_titulo, id_titulo, dt_venc: array of string; begin count := 0; with cadDevedores do begin for i := 0 to lv_titulos.Items.count - 1 do begin if lv_titulos.Items.Item[i].Checked then begin count := count + 1; setlength(tx_titulo, count); setlength(id_titulo, count); setlength(vl_titulo, count); setlength(dt_venc, 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); dt_venc[count - 1] := DateToStr(Dateof(queryListaTitulosDT_VENCIMENTO.AsDateTime)); end; end; 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] + ' com vencimento em ' + dt_venc[j] + '.'; end; end; end; procedure TfrmFechamentoDevedor.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.