unit ufrmFechamento; 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 TfrmFechamento = 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: TfrmFechamento; implementation {$R *.dfm} uses ufrmEfetuarCobranca, udtmSystem, System.UITypes; procedure TfrmFechamento.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 TfrmFechamento.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 TfrmFechamento.btncontinuarClick(Sender: TObject); var titulos: array of string; k, i: Integer; h: Integer; begin inherited; // dtmSystem.tblProvidencias.Filter := 'ID_PROVIDENCIA > 1'; // dtmSystem.tblProvidencias.Filtered := true; if (cb_ligacao.ItemIndex = 0) and (cb_situacao.ItemIndex < 0) then begin MessageDlg('Por favor selecione o tipo de situação ocorrida.', mtConfirmation, [mbok], 0); ModalResult := mrCancel; Abort; end; if (cb_acordo.ItemIndex = 0) and (frmEfetuarCobranca.cb_descpar.Checked) then begin if MessageDlg ('Foi acordado quitar a dívida, mas descontos sobre parcelar estão ativados. Deseja continuar?', mtConfirmation, [mbYes, mbNo], 0) = mrno then begin ModalResult := mrCancel; Abort; end; end; if (cb_acordo.ItemIndex = 1) and (frmEfetuarCobranca.cb_descquit.Checked) then begin if MessageDlg ('Foi acordado parcelar a dívida, mas descontos sobre quitar estão ativados. Deseja continuar?', mtConfirmation, [mbok], 0) = mrno then begin ModalResult := mrCancel; Abort; end; end; if (cb_acordo.Enabled) and (cb_acordo.ItemIndex < 0) then begin MessageDlg('Por favor selecione o tipo de acordo a ser fechado.', mtConfirmation, [mbok], 0); ModalResult := mrCancel; Abort; end; // frmEfetuarCobranca.dtp_diaagendamento.Enabled := false; // frmEfetuarCobranca.dtp_horaagendamento.Enabled := false; // frmEfetuarCobranca.dblucb_cobradoragendar.Enabled := false; // frmEfetuarCobranca.dbgrd_providencias.Enabled := true; // if frmEfetuarCobranca.btn_protocolo.Enabled then // begin // frmEfetuarCobranca.edt_protocolo.Text := frmEfetuarCobranca.gerar_protocolo // (dtmSystem.tblDevedoresID_DEVEDOR.AsString); // frmEfetuarCobranca.edt_protocolo1.Text := // frmEfetuarCobranca.edt_protocolo.Text; // frmEfetuarCobranca.btn_protocolo.Enabled := false; // end; frmEfetuarCobranca.mb_fechamento.Clear; frmEfetuarCobranca.mb_fechamento.Lines.Add ('Cobrador: ' + dtmSystem.tx_usuario); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add(DateToStr(Date) + ' - ' + TimeToStr(Time)); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); dtmSystem.tblTelefones.First; h := 1; while not dtmSystem.tblTelefones.Eof do begin if dtmSystem.tblTelefonesTP_ATIVO.AsString <> 'N' then begin frmEfetuarCobranca.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; frmEfetuarCobranca.mb_fechamento.Lines.Add(''); { 0 = Sim; 1 = Não } if cb_ligacao.ItemIndex = 1 then begin // frmEfetuarCobranca.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; // frmEfetuarCobranca.mb_fechamento.Lines.Add // ('A ligação para o telefone __________ foi atendia por __________.'); // frmEfetuarCobranca.mb_fechamento.Lines.Add(''); { frmEfetuarCobranca.dtp_diaagendamento.Date := frmEfetuarCobranca.dtp_atrasorecalc.Date; frmEfetuarCobranca.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 frmEfetuarCobranca.mb_fechamento.Lines.Add ('Foram cobrados os títulos:'); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); end else begin frmEfetuarCobranca.mb_fechamento.Lines.Add('Foi cobrado o título:'); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); end; for i := 0 to length(titulos) - 1 do begin frmEfetuarCobranca.mb_fechamento.Lines.Add(titulos[i]); end; frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Foi fechado o seguinte acordo:'); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); { 0 = Quitação; 1 = Parcelamento } if cb_acordo.ItemIndex = 0 then begin frmEfetuarCobranca.mb_fechamento.Lines.Add ('Forma de pagamento: Quitação.'); frmEfetuarCobranca.mb_fechamento.Lines.Add('Data para pagamento: ' + FormatDateTime('dd/mm/yyyy', frmEfetuarCobranca.dtp_atrasorecalc.Date) + '.'); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor total corrigido: ' + frmEfetuarCobranca.edt_vlaquitar.Text + '.'); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor total nominal: ' + frmEfetuarCobranca.edt_somatitulos.Text + '.'); if frmEfetuarCobranca.cbx_txextra.Checked then begin frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor de taxas extras: ' + frmEfetuarCobranca.edt_txextra.Text + '.'); end; if frmEfetuarCobranca.cb_nmulta.Checked then begin frmEfetuarCobranca.mb_fechamento.Lines.Add('Não foi cobrado multa.'); end else begin frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor total da multa: ' + frmEfetuarCobranca.edt_somamulta.Text + '.'); end; frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor total de juros: ' + frmEfetuarCobranca.edt_somajuros.Text + '.'); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Valor total de indicador financeiro: ' + frmEfetuarCobranca.edt_somaindicador.Text + '.'); if frmEfetuarCobranca.cb_descquit.Checked then begin frmEfetuarCobranca.mb_fechamento.Lines.Add ('Foi concedido descontos conforme a seguir:'); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Porcentagem sobre principal: ' + frmEfetuarCobranca.edt_principalquitar.Text + '%.'); frmEfetuarCobranca.mb_fechamento.Lines.Add('Porcentagem sobre multa: ' + frmEfetuarCobranca.edt_multasquitar.Text + '%.'); frmEfetuarCobranca.mb_fechamento.Lines.Add('Porcentagem sobre juros: ' + frmEfetuarCobranca.edt_jurosquitar.Text + '%.'); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Porcentagem sobre indicador financeiro: ' + frmEfetuarCobranca.edt_indquitar.Text + '%.'); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Porcentagem sobre corrigido: ' + frmEfetuarCobranca.edt_corquitar.Text + '%.'); end; frmEfetuarCobranca.mb_fechamento.Lines.Add ('Forma de Pagamento sugerida: ' + frmEfetuarCobranca.cb_formapag.Text); // frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor ajustado: '+ frmEfetuarCobranca.edt_vlcorpag.Text); end; if cb_acordo.ItemIndex = 1 then begin frmEfetuarCobranca.mb_fechamento.Lines.Add ('Forma de pagamento: Parcelamento.'); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor total corrigido: ' + frmEfetuarCobranca.edt_vlaquitar.Text + '.'); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor total nominal: ' + frmEfetuarCobranca.edt_somatitulos.Text + '.'); if frmEfetuarCobranca.cbx_txextra.Checked then begin frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor de taxas extras: ' + frmEfetuarCobranca.edt_txextra.Text + '.'); end; frmEfetuarCobranca.mb_fechamento.Lines.Add('Quantidade de parcelas: ' + frmEfetuarCobranca.edt_nrparcelas.Text + '.'); frmEfetuarCobranca.copiar_conteudoClick(Sender); frmEfetuarCobranca.mb_fechamento.Lines.Add(frmEfetuarCobranca.clpbrd); if frmEfetuarCobranca.cb_nmulta.Checked then begin frmEfetuarCobranca.mb_fechamento.Lines.Add('Não foi cobrado multa.'); end else begin frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor total da multa: ' + frmEfetuarCobranca.edt_somamulta.Text + '.'); end; frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor total de juros: ' + frmEfetuarCobranca.edt_somajuros.Text + '.'); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Valor total de indicador financeiro: ' + frmEfetuarCobranca.edt_somaindicador.Text + '.'); if frmEfetuarCobranca.cb_descpar.Checked then begin frmEfetuarCobranca.mb_fechamento.Lines.Add ('Foi concedido descontos conforme a seguir:'); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Porcentagem sobre principal: ' + frmEfetuarCobranca.edt_principalparcelas.Text + '%.'); frmEfetuarCobranca.mb_fechamento.Lines.Add('Porcentagem sobre multa: ' + frmEfetuarCobranca.edt_multasparcelas.Text + '%.'); frmEfetuarCobranca.mb_fechamento.Lines.Add('Porcentagem sobre juros: ' + frmEfetuarCobranca.edt_jurosparcelas.Text + '%.'); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Porcentagem sobre indicador financeiro: ' + frmEfetuarCobranca.edt_indparcelas.Text + '%.'); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Porcentagem sobre corrigido: ' + frmEfetuarCobranca.edt_corpar.Text + '%.'); end; frmEfetuarCobranca.mb_fechamento.Lines.Add ('Forma de Pagamento sugerida: ' + frmEfetuarCobranca.cb_formapag.Text); end; end; if cb_situacao.ItemIndex = 1 then begin if length(titulos) > 1 then begin frmEfetuarCobranca.mb_fechamento.Lines.Add ('Foram cobrados os títulos:'); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); end else begin frmEfetuarCobranca.mb_fechamento.Lines.Add('Foi cobrado o título:'); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); end; for i := 0 to length(titulos) - 1 do begin frmEfetuarCobranca.mb_fechamento.Lines.Add(titulos[i]); end; frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add('Nenhum acordo foi fechado.'); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.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 frmEfetuarCobranca.mb_fechamento.Lines.Add ('Foram cobrados os títulos:'); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); end else begin frmEfetuarCobranca.mb_fechamento.Lines.Add('Foi cobrado o título:'); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); end; for i := 0 to length(titulos) - 1 do begin frmEfetuarCobranca.mb_fechamento.Lines.Add(titulos[i]); end; frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Foi oferecido ao devedor o seguinte acordo a ser considerado: '); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Forma de pagamento: Quitação.'); frmEfetuarCobranca.mb_fechamento.Lines.Add('Data para pagamento: ' + FormatDateTime('dd/mm/yyyy', frmEfetuarCobranca.dtp_atrasorecalc.Date) + '.'); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor total corrigido: ' + frmEfetuarCobranca.edt_vlaquitar.Text + '.'); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor total nominal: ' + frmEfetuarCobranca.edt_somatitulos.Text + '.'); if frmEfetuarCobranca.cbx_txextra.Checked then begin frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor de taxas extras: ' + frmEfetuarCobranca.edt_txextra.Text + '.'); end; if frmEfetuarCobranca.cb_nmulta.Checked then begin frmEfetuarCobranca.mb_fechamento.Lines.Add('Não foi cobrado multa.'); end else begin frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor total da multa: ' + frmEfetuarCobranca.edt_somamulta.Text + '.'); end; frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor total de juros: ' + frmEfetuarCobranca.edt_somajuros.Text + '.'); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Valor total de indicador financeiro: ' + frmEfetuarCobranca.edt_somaindicador.Text + '.'); if frmEfetuarCobranca.cb_descquit.Checked then begin frmEfetuarCobranca.mb_fechamento.Lines.Add ('Foi concedido descontos conforme a seguir:'); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Porcentagem sobre principal: ' + frmEfetuarCobranca.edt_principalquitar.Text + '%.'); frmEfetuarCobranca.mb_fechamento.Lines.Add('Porcentagem sobre multa: ' + frmEfetuarCobranca.edt_multasquitar.Text + '%.'); frmEfetuarCobranca.mb_fechamento.Lines.Add('Porcentagem sobre juros: ' + frmEfetuarCobranca.edt_jurosquitar.Text + '%.'); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Porcentagem sobre indicador financeiro: ' + frmEfetuarCobranca.edt_indquitar.Text + '%.'); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Porcentagem sobre corrigido: ' + frmEfetuarCobranca.edt_corquitar. Text + '%.'); end; frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Forma de pagamento: Parcelamento.'); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor total corrigido: ' + frmEfetuarCobranca.edt_vlaquitar.Text + '.'); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor total nominal: ' + frmEfetuarCobranca.edt_somatitulos.Text + '.'); if frmEfetuarCobranca.cbx_txextra.Checked then begin frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor de taxas extras: ' + frmEfetuarCobranca.edt_txextra.Text + '.'); end; frmEfetuarCobranca.mb_fechamento.Lines.Add('Quantidade de parcelas: ' + frmEfetuarCobranca.edt_nrparcelas.Text + '.'); frmEfetuarCobranca.copiar_conteudoClick(Sender); frmEfetuarCobranca.mb_fechamento.Lines.Add(frmEfetuarCobranca.clpbrd); if frmEfetuarCobranca.cb_nmulta.Checked then begin frmEfetuarCobranca.mb_fechamento.Lines.Add('Não foi cobrado multa.'); end else begin frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor total da multa: ' + frmEfetuarCobranca.edt_somamulta.Text + '.'); end; frmEfetuarCobranca.mb_fechamento.Lines.Add('Valor total de juros: ' + frmEfetuarCobranca.edt_somajuros.Text + '.'); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Valor total de indicador financeiro: ' + frmEfetuarCobranca.edt_somaindicador.Text + '.'); if frmEfetuarCobranca.cb_descpar.Checked then begin frmEfetuarCobranca.mb_fechamento.Lines.Add ('Foi concedido descontos conforme a seguir:'); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Porcentagem sobre principal: ' + frmEfetuarCobranca.edt_principalparcelas.Text + '%.'); frmEfetuarCobranca.mb_fechamento.Lines.Add('Porcentagem sobre multa: ' + frmEfetuarCobranca.edt_multasparcelas.Text + '%.'); frmEfetuarCobranca.mb_fechamento.Lines.Add('Porcentagem sobre juros: ' + frmEfetuarCobranca.edt_jurosparcelas.Text + '%.'); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Porcentagem sobre indicador financeiro: ' + frmEfetuarCobranca.edt_indparcelas.Text + '%.'); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Porcentagem sobre corrigido: ' + frmEfetuarCobranca.edt_corpar.Text + '%.'); end; end; if cb_situacao.ItemIndex = 3 then begin frmEfetuarCobranca.mb_fechamento.Lines.Add ('Foi agendado para o dia __/__/____ às __:__ .'); frmEfetuarCobranca.mb_fechamento.Lines.Add(''); end; if (frmEfetuarCobranca.cbx_txextra.Checked) and (StrToCurr(frmEfetuarCobranca.edt_txextra.Text) > 0) then begin frmEfetuarCobranca.mb_fechamento.Lines.Add(''); frmEfetuarCobranca.mb_fechamento.Lines.Add ('Taxa extra cobrada: ' + (frmEfetuarCobranca.edt_txextra.Text)); end; end; end; function TfrmFechamento.EscreveTitulos(): TStringDynArray; var count, i, j: Integer; tx_titulo, vl_titulo, id_titulo, dt_venc: array of string; begin count := 0; with frmEfetuarCobranca 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 TfrmFechamento.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.