{
===============================================================================
  Copyright (©) 2001. Rodax Software.
===============================================================================
  Los contenidos de este fichero son propiedad de Rodax Software titular del
  copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado,
  en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
  acuerdo con los términos y condiciones establecidas en el acuerdo/contrato
  bajo el que se suministra.
  -----------------------------------------------------------------------------
  Web:  www.rodax-software.com
===============================================================================
  Fecha primera versión: 01-10-2001
  Versión actual: 1.0.2
  Fecha versión actual: 01-11-2001
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------
    30-10-2001    Añadir la opción de buscar por código de presupuesto o
                  de albarán.
    01-11-2001    Se puede realizar búsquedas por cliente final (código y
                  nombre).
===============================================================================
}

unit BuscarFacturaCliente;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  RdxFrameFacturasCliente, RdxBotones, ExtCtrls, StdCtrls, RdxCampos, RdxTitulos,
  RdxPaneles, RdxBarras;

type
  TfrBuscarFacturaCliente = class(TRdxFrameFacturasCliente)
    brBuscar: TRdxBarraInferior;
    bBuscar: TRdxBoton;
    bCerrar: TRdxBoton;
    pnlScroll: TRdxScrollPanel;
    cBuscarCliente: TRdxCabecera;
    Codigo: TRdxEdit;
    eNIF: TLabel;
    NIF: TRdxEdit;
    eNombre: TLabel;
    Nombre: TRdxEdit;
    eCodigoProveedor: TLabel;
    CodigoCliente: TRdxEdit;
    eCodigo: TLabel;
    eCodPreAlb: TLabel;
    CodPreAlb: TRdxEdit;
    eCodClienteFinal: TLabel;
    CodClienteFinal: TRdxEdit;
    eNombreClienteFinal: TLabel;
    NombreClienteFinal: TRdxEdit;
    procedure bCerrarClick(Sender: TObject);
    procedure bBuscarClick(Sender: TObject);
  private
    procedure RecogerDatos;
  protected
    procedure BuscarFactura; override;
    function CloseFrame : boolean; override;
  public
    constructor Create(AOwner : TComponent); override;
  end;

var
  frBuscarFacturaCliente: TfrBuscarFacturaCliente;

implementation
{$R *.DFM}

uses
  Tipos, StrFunc, Mensajes, DB, Configuracion, Literales;

var
  Campos : String;
  Valores : Variant;
  Contador : Integer;

procedure TfrBuscarFacturaCliente.bCerrarClick(Sender: TObject);
begin
  inherited;
  CloseFrame;
end;

function TfrBuscarFacturaCliente.CloseFrame: boolean;
begin
  FCodigoFactura := TablaFacturas.FieldByName('CODIGO').AsString;
  Result := inherited CloseFrame;
end;

constructor TfrBuscarFacturaCliente.Create(AOwner: TComponent);
begin
  if not (AOwner is TRdxFrameFacturasCliente) then
    exit;
  inherited Create(AOwner);
  Entidad := entFacturaCliente;
  ConfigurarFrame(Self, Self.Entidad);

  Contador := -1;
  Campos := '';
  Valores := VarArrayOf([null, null, null, null]);

  TablaFacturas := (AOwner as TRdxFrameFacturasCliente).TablaFacturas;
  with TablaFacturas do begin
    Codigo.MaxLength := FieldByName('CODIGO').Size;
    CodPreAlb.MaxLength := FieldByName('CODIGOPRESUPUESTOALBARAN').Size;    
    Nombre.MaxLength := FieldByName('NOMBRE').Size;
    CodigoCliente.MaxLength := FieldByName('CODIGOCLIENTE').Size;
    NIF.MaxLength := FieldByName('NIFCIF').Size;
    CodClienteFinal.MaxLength := FieldByName('CODIGOCLIENTEFINAL').Size;
    NombreClienteFinal.MaxLength := FieldByName('NOMBRECLIENTEFINAL').Size;
  end;
end;

procedure TfrBuscarFacturaCliente.RecogerDatos;
begin
  Campos := '';
  Contador := -1;

  if not EsCadenaVacia(Codigo.Text) then
  begin
    Contador := Contador + 1;
    Campos := Campos + 'CODIGO';
    Valores[Contador] := Trim(Codigo.Text);
  end;

  if not EsCadenaVacia(CodPreAlb.Text) then
  begin
    Contador := Contador + 1;
    Campos := Campos + 'CODIGOPRESUPUESTOALBARAN';
    Valores[Contador] := Trim(CodPreAlb.Text);
  end;

  if not EsCadenaVacia(CodigoCliente.Text) then
  begin
    Contador := Contador + 1;
    if Contador > 0 then
      Campos := Campos + ';';
    Campos := Campos + 'CODIGOCLIENTE';
    Valores[Contador] := Trim(CodigoCliente.Text);
  end;

  if not EsCadenaVacia(Nombre.Text) then
  begin
    Contador := Contador + 1;
    if Contador > 0 then
      Campos := Campos + ';';
    Campos := Campos + 'NOMBRE';
    Valores[Contador] := Trim(Nombre.Text);
  end;

  if not EsCadenaVacia(Nif.Text) then
  begin
    Contador := Contador + 1;
    if Contador > 0 then
      Campos := Campos + ';';
    Campos := Campos + 'NIFCIF';
    Valores[Contador] := Trim(Nif.Text);
  end;

  if not EsCadenaVacia(CodClienteFinal.Text) then
  begin
    Contador := Contador + 1;
    if Contador > 0 then
      Campos := Campos + ';';
    Campos := Campos + 'CODIGOCLIENTEFINAL';
    Valores[Contador] := Trim(CodClienteFinal.Text);
  end;

  if not EsCadenaVacia(NombreClienteFinal.Text) then
  begin
    Contador := Contador + 1;
    if Contador > 0 then
      Campos := Campos + ';';
    Campos := Campos + 'NOMBRECLIENTEFINAL';
    Valores[Contador] := Trim(NombreClienteFinal.Text);
  end;
end;

procedure TfrBuscarFacturaCliente.bBuscarClick(Sender: TObject);
begin
  RecogerDatos;
  if Contador <> -1 then
    BuscarFactura
  else
    VerMensaje(msgNoParametros);
end;

procedure TfrBuscarFacturaCliente.BuscarFactura;
var
  Respuesta : integer;
  Resultado : Boolean;
begin
  if Contador <> -1 then begin
    TablaFacturas.DisableControls;

    if Contador = 0 then
      Resultado := TablaFacturas.LocateNext(Campos, Valores[Contador], [loCaseInsensitive, loPartialKey])
    else
      Resultado := TablaFacturas.LocateNext(Campos, Valores, [loCaseInsensitive, loPartialKey]);
    if (Resultado = false) then
    begin
        Respuesta := VerMensajePregunta(msgIrInicio);
        case Respuesta of
          IDYES: TablaFacturas.First;
        end;
    end;
    TablaFacturas.EnableControls;
  end;
end;

end.
