unit CadContasReceber;

interface

uses
  Windows, system.UItypes, dateutils, IB_Access,  Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ModeloCadastro, UCBase, ImgList, AppEvnts, IB_Components,
  ExtCtrls, StdCtrls, jpeg, Grids, IB_Grid, Buttons, ComCtrls, IB_Controls,
  Mask, Rotinas, IB_EditButton, System.ImageList, cxGraphics, cxLookAndFeels,
  cxLookAndFeelPainters, Vcl.Menus, dxSkinsCore, dxSkinOffice2010Blue, cxButtons;

type
  TfrmCadContasReceber = class(TFrModeloCadastro)
    qrUsuarioCad: TIB_Query;
    dsrUsuario: TIB_DataSource;
    qrTipoConta: TIB_Query;
    dsrTipoConta: TIB_DataSource;
    qrFormaPgto: TIB_Query;
    dsrFormaPgto: TIB_DataSource;
    GroupBox2: TGroupBox;
    dbCodigo: TIB_Text;
    edtDataCad: TIB_Edit;
    edtVenc: TIB_Date;
    edtDescricao: TIB_Edit;
    edtUsuario: TIB_Edit;
    edtTipoConta: TIB_LookupCombo;
    btnPesquisaTipoConta: TBitBtn;
    BitBtn1: TBitBtn;
    btnReabrir: TBitBtn;
    btnPagar: TBitBtn;
    grpReferencia: TGroupBox;
    IB_Edit1: TIB_Edit;
    IB_Edit2: TIB_Edit;
    IB_Edit3: TIB_Edit;
    qryHistorico: TIB_Query;
    dtHistorico: TIB_DataSource;
    PaginasManutencao: TPageControl;
    Outros: TTabSheet;
    Historico: TTabSheet;
    Panel5: TPanel;
    IB_Grid1: TIB_Grid;
    Panel8: TPanel;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    IB_Memo1: TIB_Memo;
    pnlPgto: TGroupBox;
    Label3: TLabel;
    IB_Date1: TIB_Date;
    IB_Currency1: TIB_Currency;
    IB_Currency2: TIB_Currency;
    IB_Currency3: TIB_Currency;
    IB_Currency4: TIB_Currency;
    IB_Currency5: TIB_Currency;
    qryConvenio_Cobranca: TIB_Query;
    IB_Text2: TIB_Text;
    IB_Text3: TIB_Text;
    Label4: TLabel;
    IB_Text4: TIB_Text;
    imgPago: TImage;
    imgLogoBanco: TImage;
    qryRemessa: TIB_Query;
    pnlCancelado: TPanel;
    Label5: TLabel;
    IB_Memo5: TIB_Memo;
    edtValor: TIB_Currency;
    qrPlanoConta: TIB_Query;
    dsrPlanoConta: TIB_DataSource;
    edtCodPlanoConta: TEdit;
    edtPlanoConta: TIB_LookupCombo;
    cxButton1: TcxButton;
    cxButton2: TcxButton;
    btnPesquisaPedido: TcxButton;
    btnRepetir: TBitBtn;
    dbDataPrevisao: TIB_Date;
    procedure FormCreate(Sender: TObject);
    procedure btnPesquisaTipoContaClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure btnPagarClick(Sender: TObject);
    procedure btnReabrirClick(Sender: TObject);
    procedure BtGravarClick(Sender: TObject);
    procedure BtInserirClick(Sender: TObject);
    procedure BtEditarClick(Sender: TObject);
    procedure BtExcluirClick(Sender: TObject);
    procedure BtCancelarClick(Sender: TObject);
    procedure BtAnteriorClick(Sender: TObject);
    procedure BtProximoClick(Sender: TObject);
    procedure btnEditar2Click(Sender: TObject);
    procedure btnPesquisaPedidoClick(Sender: TObject);
    procedure imgLogoBancoClick(Sender: TObject);
    procedure imgPagoClick(Sender: TObject);
    procedure cxButton1Click(Sender: TObject);
    procedure cxButton2Click(Sender: TObject);
    procedure edtCodPlanoContaExit(Sender: TObject);
    procedure edtPlanoContaChange(Sender: TObject);
    procedure btnRepetirClick(Sender: TObject);
    procedure edtVencExit(Sender: TObject);
  private
    procedure AtualizaTela;
    procedure GravaHistorico(Historico: String);
    procedure ZerarBordero;
    procedure Carrega_Logo_Banco;
    { Private declarations }
  public
    { Public declarations }
    obs : string;
    Consulta:Boolean;
  end;

var
  frmCadContasReceber: TfrmCadContasReceber;
  TirandoBaixa:Boolean;

implementation

uses ModeloPesquisa, CadTipoConta, Pagamento, DataModulo,
  CadRemessa, CadBordero, GeraBoletas, LancamentoParcelas, Pedidos;

{$R *.dfm}

procedure TfrmCadContasReceber.FormCreate(Sender: TObject);
begin
  Gera_Codigo := True;
  inherited;
  TirandoBaixa:=False;
  InicioDaTabela(qrUsuarioCad);
  InicioDaTabela(qrTipoConta);
  InicioDaTabela(qrFormaPgto);
  InicioDaTabela(qryConvenio_Cobranca);
  InicioDaTabela(qrPlanoConta);

end;

procedure TfrmCadContasReceber.btnPesquisaTipoContaClick(Sender: TObject);
begin
  inherited;
   frmModeloPesquisa        := TfrmModeloPesquisa.Create(Application);
   frmModeloPesquisa.Tabela := qrTipoConta;
   frmModeloPesquisa.lblTitulo.Caption := 'Pesquisa Tipos de Contas';
   if frmModeloPesquisa.ShowModal = mrOk then
      qrTipoConta.Locate('COD_TIPO_CONTA' , frmModeloPesquisa.TbPrincipal.FieldByName('COD_TIPO_CONTA').Value , []);
   frmModeloPesquisa.Destroy;

   Screen.OnActiveControlChange := TrocaCor;


end;

procedure TfrmCadContasReceber.BitBtn1Click(Sender: TObject);
var codigo : Integer;
begin
  inherited;
   frmCadTipoConta := TfrmCadTipoConta.Create(Application);
   frmCadTipoConta.OutraTela := True;
   frmCadTipoConta.BtInserir.Click;
   frmCadTipoConta.TbPrincipal.FieldByName('TIPO').Value := 'C';
   frmCadTipoConta.ShowModal;
   codigo := frmCadTipoConta.TbPrincipal.FieldByName('COD_TIPO_CONTA').AsInteger;
   frmCadTipoConta.Destroy;
   qrTipoConta.Close;
   qrTipoConta.Open;
   if not qrTipoConta.Locate('COD_TIPO_CONTA' , codigo, [] ) then
   begin
      if not qrTipoConta.Bof then
      begin
        qrTipoConta.First;
        qrTipoConta.Prior;
      end;
   end;
   Screen.OnActiveControlChange := TrocaCor;
end;

procedure TfrmCadContasReceber.btnPagarClick(Sender: TObject);
var codigo : integer;
begin
  inherited;
   if qryConvenio_Cobranca.IsEmpty then
   begin
     MessageDlg('Cadastrar o Caixa Interno para realizar baixas manuais', mtWarning, [mbOK], 0);
     Exit;
   end;

   frmPgamento := TfrmPgamento.Create(Application);
   frmPgamento.valorDoc := TbPrincipal.FieldByName('VALOR_A_PAGAR').AsCurrency;

   frmPgamento.edtDataPgto.Value := Date;

   frmPgamento.edtMulta.Value     := 0;
   frmPgamento.edtJuros.Value     := 0;
   frmPgamento.edtOutros.Value    := 0;
   frmPgamento.edtDesconto.Value  := 0;
   frmPgamento.edtValorTotal.Value:= 0;
   frmPgamento.edtDataPgto.Value  := Date;
   frmPgamento.ObsCheque  := TbPrincipal.FieldByName('COD_CONTA_RECEBER').AsString + ' - ' +
                             TbPrincipal.FieldByName('DESCRICAO').AsString + ' No valor de ' + edtValor.Text + ' Com vencimento em ' + edtVenc.Text +
                             '  Pedido nº'+TbPrincipal.FieldByName('COD_PEDIDO').AsString;

   frmPgamento.Tabela_relacionada := 'CONTAS_RECEBER';
   frmPgamento.cod_tabela_relacionada := TbPrincipal.FieldByName('COD_CONTA_RECEBER').AsString;

   if frmPgamento.ShowModal = MROK then
   begin
      btnEditar2.Click;

      //TbPrincipal.FieldByName('BAIXA_COD_BANCO').Value    := '000';
      TbPrincipal.FieldByName('BAIXA_COD_BANCO').Value    := frmPgamento.qrContaBancaria.fieldbyname('COD_BANCO').Value;

      TbPrincipal.FieldByName('MULTA').Value              := frmPgamento.edtMulta.Value;
      TbPrincipal.FieldByName('JUROS').Value              := frmPgamento.edtJuros.Value;
      TbPrincipal.FieldByName('OUTROS').Value             := frmPgamento.edtOutros.Value;
      TbPrincipal.FieldByName('DESCONTO').Value           := frmPgamento.edtDesconto.Value;
      TbPrincipal.FieldByName('VALOR_PAGAMENTO').Value    := frmPgamento.edtValorTotal.Value;
      TbPrincipal.FieldByName('DATA_REALIZADO').Value     := frmPgamento.edtDataPgto.Value;
      TbPrincipal.FieldByName('DATA_PAGAMENTO').Value     := frmPgamento.edtDataPgto.Value;


      TbPrincipal.FieldByName('COD_USUARIO_BAIXA').Value  := DADOS.qrusuario.FieldByName('COD_USUARIO').Value;
      TbPrincipal.FieldByName('COD_FORMA_PAGAMENTO').Value:= frmPgamento.qrFormaPgto.FieldByName('COD_FORMA_PAGAMENTO').Value;
      TbPrincipal.FieldByName('COD_CONTA_BANCARIA').Value := frmPgamento.qrContaBancaria.FieldByName('COD_CONTA_BANCARIA').Value;

      if TbPrincipal.FieldByName('DATA_PREVISAO').IsNull  then
         TbPrincipal.FieldByName('DATA_PREVISAO').Value := frmPgamento.edtDataPgto.Value;

      if frmPgamento.qrFormaPgto.FieldByName('PGTO_A_VISTA').asstring = 'T' then
      begin
       TbPrincipal.FieldByName('DATA_CREDITO').Value    := frmPgamento.edtDataPgto.Value;
       TbPrincipal.FieldByName('VALOR_CREDITADO').Value := frmPgamento.edtValorTotal.Value;
      end;


      BtGravar.Click;
   end;

   frmPgamento.Destroy;
   Screen.OnActiveControlChange := TrocaCor;

   codigo  := TbPrincipal.FieldByName('COD_CONTA_RECEBER').AsInteger;

   TbPrincipal.RefreshRows;
//   TbPrincipal.Close;
//   TbPrincipal.Locate('COD_CONTA_RECEBER' ,  codigo , []);
//   TbPrincipal.Open();

   AtualizaTela;
end;

procedure TfrmCadContasReceber.Carrega_Logo_Banco ;
var logo : string;
begin
  //=========== carrega a logomarca do banco
  logo := CaminhoEXE + 'logos_Bancos\'+ qryRemessa.FieldByName('cod_banco').AsString + '.bmp';

  if FileExists(logo) then
  begin
    imgLogoBanco.Picture.Bitmap.LoadFromFile(logo);
    imgLogoBanco.Visible := true;
  end
  else
  begin
    imgLogoBanco.Picture := nil;
    imgLogoBanco.Visible := False;
  end;

end;
procedure TfrmCadContasReceber.AtualizaTela;
begin
   //===================== Atualiza a visualizacao dos dados =====================

   qryHistorico.Close;
   qryHistorico.ParamByName('NUMERO').Value:=tbPrincipal.FIeldbyName('COD_CONTA_RECEBER').Value;
   qryHistorico.ParamByName('FILIAL').Value:=tbPrincipal.FIeldbyName('COD_FILIAL').Value;
   qryHistorico.open;

   qryRemessa.Close;
   qryRemessa.ParamByName('NUMERO').Value:=tbPrincipal.FIeldbyName('COD_CONTA_RECEBER').Value;
   qryRemessa.open;

   Carrega_Logo_Banco;

   if not qrUsuarioCad.Locate('COD_USUARIO', TbPrincipal.FieldByName('COD_USUARIO_CAD').Value , []) then
     InicioDaTabela(qrUsuarioCad);

   if not qrTipoConta.Locate('COD_TIPO_CONTA' , TbPrincipal.FieldByName('COD_TIPO_CONTA').Value  ,  [] ) then
      InicioDaTabela(qrTipoConta);

   if not qrFormaPgto.Locate('COD_FORMA_PAGAMENTO', TbPrincipal.FieldByName('COD_FORMA_PAGAMENTO').Value , [] ) then
      InicioDaTabela(qrFormaPgto);

   if not  qrPlanoConta.Locate('COD_PLANO_CONTA' , TbPrincipal.FieldByName('COD_PLANO_CONTA').Value  ,  [] ) then
      InicioDaTabela(qrPlanoConta);


   if TbPrincipal.FieldByName('DATA_PAGAMENTO').AsDate <> 0 then
   begin
      pnlPgto.Visible := True;
      imgPago.Visible:=pnlPgto.Visible;
      btnPagar.Visible := False;
      btnReabrir.Visible := True;
   end
   else
   begin
      pnlPgto.Visible := False;
      imgPago.Visible:=pnlPgto.Visible;
      btnPagar.Visible := True;
      btnReabrir.Visible := False;
   end;

   if ((TbPrincipal.State in [DssInsert]) or (TbPrincipal.State in [DssEdit])) and (TbPrincipal.Modified) then
   begin
      pnlPgto.Visible     := False;
      imgPago.Visible     := pnlPgto.Visible;
      btnPagar.Visible    := False;
      btnReabrir.Visible  := False;
   end;

   if TbPrincipal.State in [DssInsert] then
     grpReferencia.Visible:=False
   else
     grpReferencia.Visible:=True;

   if TbPrincipal.FieldByName('CANCELADA').AsString = 'T' then
      pnlCancelado.Visible := true
   else
      pnlCancelado.Visible := False;
end;

procedure TfrmCadContasReceber.btnReabrirClick(Sender: TObject);
begin
  inherited;

  if ((TbPrincipal.FieldByName('BAIXA_COD_BANCO').AsString <> '000') and
      (TbPrincipal.FieldByName('BAIXA_COD_BANCO').IsNotNull)) then
  begin
    MessageDlg('A baixa foi bancária não pode ser retirada manualmente, consulte o SUPORTE SYSTEMS', mtError, [mbOK], 0);
    TirandoBaixa:=False;
    Exit;
  end;

   if (MessageDlg('Deseja realmente cancelar o recebimento?', mtWarning, [mbYes, mbNo], 0) = mrNo) then
   begin
     TirandoBaixa:=False;
     Exit;
   end;
   TirandoBaixa:=True;
   btnEditar2.Click;
   GravaHistorico('BAIXA REMOVIDA DE R$ '+TbPrincipal.FieldByName('VALOR_PAGAMENTO').AsString+' DO DIA '+TbPrincipal.FieldByName('DATA_PAGAMENTO').AsString);

   TbPrincipal.FieldByName('MULTA').Value            := Null ;
   TbPrincipal.FieldByName('JUROS').Value            := Null ;
   TbPrincipal.FieldByName('OUTROS').Value           := Null ;
   TbPrincipal.FieldByName('DESCONTO').Value         := Null ;
   TbPrincipal.FieldByName('VALOR_PAGAMENTO').Value  := Null ;
   TbPrincipal.FieldByName('DATA_PAGAMENTO').Value   := Null ;
   TbPrincipal.FieldByName('COD_USUARIO_BAIXA').Value:= Null ;
   ZerarBordero;
   TbPrincipal.FieldByName('COD_BORDERO').Value       := Null ;
   BtGravar.Click;
   AtualizaTela;

end;

procedure TfrmCadContasReceber.btnRepetirClick(Sender: TObject);
var codigo
  , cod_plano_conta
  , COD_TIPO_CONTA
  , COD_PEDIDO
  , COD_FILIAL : Integer;

     descricao : string;

   Descricao_parcela : string;

   Data_Previsao : Tdatetime;

   final_de_Semana : Boolean;

begin
  inherited;
   if TbPrincipal.FieldByName('DATA_PAGAMENTO').IsNotNull then
   begin
      MessageDlg('Não é possível gerar parcelas de '+#13+#10+'uma conta já recebida', mtWarning, [mbOK], 0);
      Exit;
   end;

   {================================
      Salva os dados da conta para depois inserir os mesmos dados variando a data de
      vencimento, valor e codigo de barras
   =================================}

   frmLancamentoParcelas := TfrmLancamentoParcelas.Create(Application);
   frmLancamentoParcelas.edtValor.Value := TbPrincipal.FieldByName('VALOR_A_PAGAR').AsCurrency;
   frmLancamentoParcelas.edtDataInicio.Value := IncMonth(TbPrincipal.FieldByName('DATA_VENCIMENTO').AsDate , 1 );

   if frmLancamentoParcelas.ShowModal <> mrok then
   begin
      frmLancamentoParcelas.Destroy;
      Exit;
   end;

   codigo             := ProximoCodigoChave('CONTAS_RECEBER' , 'COD_CONTA_RECEBER' , '');
   descricao          := TbPrincipal.FieldByName('DESCRICAO').AsString;

   cod_plano_conta    := TbPrincipal.FieldByName('COD_PLANO_CONTA').AsInteger;
   COD_TIPO_CONTA     := TbPrincipal.FieldByName('COD_TIPO_CONTA').AsInteger;
   COD_PEDIDO         := TbPrincipal.FieldByName('COD_PEDIDO').AsInteger;
   COD_FILIAL         := TbPrincipal.FieldByName('COD_FILIAL').AsInteger;

   //   cod_centro_custo   := TbPrincipal.FieldByName('COD_CENTRO_CUSTO').AsInteger;
   //   cod_grupo          := TbPrincipal.FieldByName('COD_CONTAS_FINANCEIRO_GRUPO').AsInteger;

   if not frmLancamentoParcelas.cdsParcelas.Bof then
      frmLancamentoParcelas.cdsParcelas.First;

   TbPrincipal.ReadOnly := False;
   while not frmLancamentoParcelas.cdsParcelas.Eof do
   begin
      CODIGO := codigo + 1;

      if frmLancamentoParcelas.chkIncluir_descricao_Parcela.Checked then
      begin
         Descricao_parcela := ' - Parc ' + inttostr( frmLancamentoParcelas.edtNumero_Descricao_Parcela.Value);
         frmLancamentoParcelas.edtNumero_Descricao_Parcela.Value := frmLancamentoParcelas.edtNumero_Descricao_Parcela.Value + 1;
      end
      else
         Descricao_parcela := '';

      TbPrincipal.Insert;
      TbPrincipal.FieldByName('COD_CONTA_RECEBER').Value    := codigo;
      TbPrincipal.FieldByName('DATA_CAD').Value             := Date;
      TbPrincipal.FieldByName('COD_FILIAL').Value           := COD_FILIAL;
      TbPrincipal.FieldByName('COD_USUARIO_CAD').Value      := Dados.qrUsuario.FieldByName('COD_USUARIO').Value;
      TbPrincipal.FieldByName('COD_PLANO_CONTA').Value      := cod_plano_conta;

      if COD_TIPO_CONTA > 0 then
         TbPrincipal.FieldByName('COD_TIPO_CONTA').Value  := COD_TIPO_CONTA;

      if COD_PEDIDO > 0 then
         TbPrincipal.FieldByName('COD_PEDIDO').AsInteger := COD_PEDIDO;

      TbPrincipal.FieldByName('DESCRICAO').Value          := descricao + Descricao_parcela;
      TbPrincipal.FieldByName('DATA_VENCIMENTO').Value    := frmLancamentoParcelas.cdsParcelas.FieldByName('DATA_VENC').Value;

      Data_Previsao := frmLancamentoParcelas.cdsParcelas.FieldByName('DATA_VENC').AsDateTime;

      if Dados.tbConfig.FieldByName('CR_PREVISAO_DIA_SEGUINTE').AsString = 'T' then
      begin
         Data_Previsao := IncDay( Data_Previsao , 1 );

       //========== verifica se a data de vencimento é um final de semana. se for a data de previsao tem q ser o proximo dia util + 1
       //           Exemplo a data de vencimento cai em um sabado.. provavel do pagamento ser realizado na seg e o valor creditado na terca


         final_de_Semana :=  E_final_de_semana(frmLancamentoParcelas.cdsParcelas.FieldByName('DATA_VENC').AsDateTime);

         Data_Previsao := ProximoDiaUtil(Data_Previsao);

         if final_de_Semana then
            Data_Previsao := IncDay( Data_Previsao , 1 );

         TbPrincipal.FieldByName('DATA_PREVISAO').Value  := Data_Previsao

      end
      else
         TbPrincipal.FieldByName('DATA_PREVISAO').Value  := ProximoDiaUtil(Data_Previsao);

      TbPrincipal.FieldByName('VALOR_A_PAGAR').Value  := frmLancamentoParcelas.cdsParcelas.FieldByName('VALOR').Value;


      TbPrincipal.Post;

      frmLancamentoParcelas.cdsParcelas.Next;
   end;

   frmLancamentoParcelas.Destroy;

   TbPrincipal.ReadOnly := True;
   Screen.OnActiveControlChange := TrocaCor;
end;
procedure TfrmCadContasReceber.BtGravarClick(Sender: TObject);
begin
   if Trim(edtDescricao.Text ) = '' then
   begin
      MessageDlg('Informe a descrição', mtWarning, [mbOK], 0);
      edtDescricao.SetFocus;
      Exit;
   end;

   if edtTipoConta.Text = '' then
   begin
      MessageDlg('Informe o tipo de conta', mtWarning, [mbOK], 0);
      edtTipoConta.SetFocus;
      Exit;
   end;

   if edtValor.Value = 0 then
   begin
      MessageDlg('Informe o valor', mtWarning, [mbOK], 0);
      edtValor.SetFocus;
      Exit;
   end;

   if edtVenc.Value = 0 then
   begin
      MessageDlg('Informe a data de Vencimento', mtWarning, [mbOK], 0);
      edtVenc.SetFocus;
      Exit;
   end;

   if edtVenc.Value < Date then
   begin
      if (MessageDlg('A data de vencimento é menor que a data atual.'+#13+#10+'Deseja continuar?', mtConfirmation, [mbYes, mbNo], 0) = mrNo) then
         Exit;
   end;

   if edtTipoConta.Text  <> '' then
      TbPrincipal.FieldByName('COD_TIPO_CONTA').Value := qrTipoConta.FieldByName('COD_TIPO_CONTA').Value;

   if edtPlanoConta.Text  <> '' then
      TbPrincipal.FieldByName('COD_PLANO_CONTA').Value := qrPlanoConta.FieldByName('COD_PLANO_CONTA').Value;

  inherited;
  AtualizaTela;
  btnRepetir.Visible := true;

end;

procedure TfrmCadContasReceber.BtInserirClick(Sender: TObject);
begin
  inherited;
   TbPrincipal.FieldByName('COD_USUARIO_CAD').Value :=  Dados.qrUsuario.FieldByName('COD_USUARIO').Value;
   TbPrincipal.FieldByName('COD_FILIAL').Value :=  Dados.qrFilial.FieldByName('COD_FILIAL').Value;
   TbPrincipal.FieldByName('HORA_CAD').Value :=  Time;
   TbPrincipal.FieldByName('DATA_CAD').Value :=  Date;
   TbPrincipal.FieldByName('CANCELADA').Value :=  'F';
   AtualizaTela;

   if obs <> '' then
      TbPrincipal.FieldByName('OBS').Value :=  obs;

   btnRepetir.Visible := False;
end;

procedure TfrmCadContasReceber.BtEditarClick(Sender: TObject);
begin
  inherited;
   AtualizaTela;
   btnRepetir.Visible := true;
end;

procedure TfrmCadContasReceber.BtExcluirClick(Sender: TObject);
begin
  inherited;
   AtualizaTela;
end;

procedure TfrmCadContasReceber.BtCancelarClick(Sender: TObject);
begin
  inherited;
   AtualizaTela;
   btnRepetir.Visible := true;
end;

procedure TfrmCadContasReceber.BtAnteriorClick(Sender: TObject);
begin
  inherited;
AtualizaTela;
end;

procedure TfrmCadContasReceber.BtProximoClick(Sender: TObject);
begin
  inherited;
AtualizaTela
end;

procedure TfrmCadContasReceber.cxButton1Click(Sender: TObject);
begin
  inherited;
   frmModeloPesquisa        := TfrmModeloPesquisa.Create(Application);
   frmModeloPesquisa.Tabela := qrPlanoConta;
   frmModeloPesquisa.lblTitulo.Caption := 'Pesquisa Plano de Contas';
   if frmModeloPesquisa.ShowModal = mrOk then
      qrPlanoConta.Locate('COD_PLANO_CONTA' , frmModeloPesquisa.TbPrincipal.FieldByName('COD_PLANO_CONTA').Value , []);
   frmModeloPesquisa.Destroy;

   Screen.OnActiveControlChange := TrocaCor;

end;

procedure TfrmCadContasReceber.cxButton2Click(Sender: TObject);
var codigo : Integer;
begin
  inherited;
  codigo := SelecionarPlanoConta('S');
  qrPlanoConta.Locate('cod_plano_conta', codigo , []);

end;

procedure TfrmCadContasReceber.edtCodPlanoContaExit(Sender: TObject);
begin
  inherited;
   if trim(edtCodPlanoConta.text) = '' then
      exit;

   if TbPrincipal.State in [dssBrowse] then
      exit;

  if NOT qrPlanoConta.Locate('COD_PLANO_CONTA' , edtCodPlanoConta.Text , []) then
  begin
     InicioDaTabela(qrPlanoConta);

     MessageDlg('Código não encontrado', mtWarning, [mbOK], 0);
     edtCodPlanoConta.SetFocus;
     edtCodPlanoConta.SelectAll;
     Exit;
  end;

end;

procedure TfrmCadContasReceber.edtPlanoContaChange(Sender: TObject);
begin
  inherited;
   if edtPlanoConta.Text = '' then
      edtCodPlanoConta.Clear
   else
     edtCodPlanoConta.Text := qrPlanoConta.FieldByName('COD_PLANO_CONTA').AsString;

end;

procedure TfrmCadContasReceber.edtVencExit(Sender: TObject);
VAR Data_Previsao : Tdatetime;
    final_de_Semana : Boolean;
begin
  inherited;

  if TbPrincipal.State in [dssBrowse] then
     exit;

  Data_Previsao := TbPrincipal.FieldByName('DATA_VENCIMENTO').AsDate;

    if Dados.tbConfig.FieldByName('CR_PREVISAO_DIA_SEGUINTE').AsString = 'T' then
    begin
       Data_Previsao := IncDay( Data_Previsao , 1 );

       //========== verifica se a data de vencimento é um final de semana. se for a data de previsao tem q ser o proximo dia util + 1
       //           Exemplo a data de vencimento cai em um sabado.. provavel do pagamento ser realizado na seg e o valor creditado na terca


       final_de_Semana :=  E_final_de_semana(TbPrincipal.FieldByName('DATA_VENCIMENTO').AsDate);

       Data_Previsao := ProximoDiaUtil(Data_Previsao);

       if final_de_Semana then
          Data_Previsao := IncDay( Data_Previsao , 1 );

       TbPrincipal.FieldByName('DATA_PREVISAO').Value  := Data_Previsao

    end
    else
       TbPrincipal.FieldByName('DATA_PREVISAO').Value  := ProximoDiaUtil(Data_Previsao);

  TbPrincipal.FieldByName('DATA_PREVISAO').Value := ProximoDiaUtil(Data_Previsao);
end;

procedure TfrmCadContasReceber.btnEditar2Click(Sender: TObject);
begin
  if TirandoBaixa then
  begin
    inherited;
    btnPagar.Visible:=btnEditar2.Visible;
  end
  else
  begin
    if NOT TbPrincipal.FieldByName('DATA_PAGAMENTO').IsNull then
      begin
        MessageDlg('Já baixado não pode ser alterado', mtError, [mbOK], 0);
        Exit;
      end;

    if NOT qryRemessa.IsEmpty then
      if (MessageDlg('Foi enviado ao Banco'+#13+#10+'Deseja realmente alterar?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
        begin
         inherited;
         btnPagar.Visible:=btnEditar2.Visible;
        end
      else Exit
    else
      begin
         inherited;
         btnPagar.Visible:=btnEditar2.Visible;
      end;
  end;

   btnRepetir.Visible := False;
end;

procedure TfrmCadContasReceber.btnPesquisaPedidoClick(Sender: TObject);
begin
  inherited;
   if tbPrincipal.FieldByName('COD_PEDIDO').AsInteger = 0 then
   begin
      MessageDlg('Não existem Pedidos a serem detalhados', mtWarning, [mbOK], 0);
      Exit;
   end;

   frmPedidos := TfrmPedidos.Create(Application);
   frmPedidos.OutraTela := True;
   frmPedidos.Consulta  := True;
   frmPedidos.TbPrincipal.Locate('COD_PEDIDO',tbPrincipal.FieldByName('COD_PEDIDO').Value,[]);
   frmPedidos.BtEditar.Click;
   frmPedidos.ShowModal;
   frmPedidos.Destroy;
   Screen.OnActiveControlChange := TrocaCor;
end;

procedure TfrmCadContasReceber.GravaHistorico(Historico:String);
begin
  qryHistorico.ReadOnly:=False;
  qryHistorico.Insert;
  qryHistorico.FieldByName('DATA_EVENTO').Value        :=  Date;
  qryHistorico.FieldByName('HORA_EVENTO').Value        :=  time;
  qryHistorico.FieldByName('COD_EVENTO').Value         :=  0;
  qryHistorico.FieldByName('COD_DESTINO').Value        :=  0;
  qryHistorico.FieldByName('COD_USUARIO').Value        :=  dados.qrUsuario.FieldBYName('COD_USUARIO').AsInteger;
  qryHistorico.FieldByName('COD_CONTAS_RECEBER').Value :=  tbPrincipal.FieldByName('COD_CONTA_RECEBER').AsInteger;
  qryHistorico.FieldByName('COD_FILIAL').Value         :=  dados.qrFilial.FieldBYName('COD_FILIAL').AsInteger;
  qryHistorico.FieldByName('OBSERVACAO').Value         :=  Historico;
  qryHistorico.FieldByName('ARQUIVO').Value            :=  '';
  qryHistorico.FieldByName('COD_CONVENIO').Value       :=  qryConvenio_Cobranca.FieldByName('COD_CONVENIO').Value;
  qryHistorico.Post;
  qryHistorico.ReadOnly:=True;
end;

procedure TfrmCadContasReceber.imgLogoBancoClick(Sender: TObject);
begin
  inherited;
   frmCadRemessa := TfrmCadRemessa.Create(Application);
   frmCadRemessa.OutraTela := True;
   frmCadRemessa.Consulta  := True;
   frmCadRemessa.TbPrincipal.Locate('COD_REMESSA',qryRemessa.FieldByName('COD_REMESSA').Value,[]);
   frmCadRemessa.BtEditar.Click;
   frmCadRemessa.ShowModal;
   frmCadRemessa.Destroy;
   Screen.OnActiveControlChange := TrocaCor;
end;

procedure TfrmCadContasReceber.imgPagoClick(Sender: TObject);
begin
  inherited;
  
  if TbPrincipal.FieldByName('FORMA_PAGOU').AsString = 'BORDERÔ' then
  begin
   frmCadBordero := TfrmCadBordero.Create(Application);
   frmCadBordero.Tabela:='CONTAS_RECEBER';
   frmCadBordero.OutraTela := True;
   frmCadBordero.Consultando:=True;
   if frmCadBordero.ExisteBordero(tbPrincipal.FieldByName('COD_CONTA_RECEBER').AsInteger) then
     frmCadBordero.BtEditarClick(Self);
   frmCadBordero.ShowModal;
   frmCadBordero.Destroy;
   Screen.OnActiveControlChange := TrocaCor;
 end;
end;

procedure TfrmCadContasReceber.ZerarBordero;
begin
  Dados.script.SQL.Clear;
  Dados.script.SQL.Add('DELETE FROM BORDERO WHERE bordero.cod_bordero ='+IntToStr(tbPrincipal.FieldbyName('COD_BORDERO').AsInteger));
  try
    Dados.script.Execute;
  except
  end;  
end;

end.
