{
===============================================================================
  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.1
  Fecha versión actual: 04-10-2004
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------
    04-10-2004    Se añade unidad cambiarEntidad para que pueda cambiar de color
                  dependiendo del modulo desde el que se la llama

===============================================================================
}

unit BuscarMovimiento;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, IBQuery, StdCtrls, DB, RdxBotones,  RdxBarras, RdxComboBox,
  RdxCampos,  RdxTitulos, RdxPaneles, Tipos, Mensajes,
  RdxFrame, RdxDBFrame, RdxFrameHistoricoMovimientos;

type
  TfrBuscarMovimiento = class(TRdxFrameHistoricoMovimientos)
    brBuscar: TRdxBarraInferior;
    bBuscar: TRdxBoton;
    bCerrar: TRdxBoton;
    RdxPanel1: TRdxPanel;
    RdxCabecera1: TRdxCabecera;
    cbxTipoMovimiento: TRdxComboBox;
    eTipoMovimiento: TLabel;
    eCodigo: TLabel;
    eDescripcion: TLabel;
    eFamilia: TLabel;
    Codigo: TRdxEdit;
    Descripcion: TRdxEdit;
    cbxFamilia: TRdxComboBox;
    procedure bCerrarClick(Sender: TObject);
    procedure bBuscarClick(Sender: TObject);
    procedure RecogerDatos;
  protected
    procedure BuscarMovimiento; override;
    procedure BuscarAlmacen; override;
    function CloseFrame : boolean; override;
    function CambiarEntidad (EntidadAnterior, Entidad : TRdxEntidad): Boolean; override;
  public
    constructor Create (AOwner : TComponent); override;
  published
    property TablaMovimientos;
    property CodigoMovimiento;
    property CodigoAlmacen;
  end;

var
  frBuscarMovimiento: TfrBuscarMovimiento;

implementation
{$R *.DFM}

uses
  BaseDatos, HistoricoMovimientos, TablaFamilias, TablaMovimientos,
  Configuracion, Literales;

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

constructor TfrBuscarMovimiento.Create (AOwner : TComponent);
begin
  if not (AOwner is TRdxFrameHistoricoMovimientos) then
    exit;
  inherited Create(AOwner);
  Entidad := entMovimiento;
  ConfigurarFrame(Self, Self.Entidad);

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

  cbxFamilia.Items := dmTablaFamilias.darFamilias;
  cbxTipoMovimiento.Items := dmTablaMovimientos.DarTiposMovimientos;
  TablaMovimientos := (AOwner as TRdxFrameHistoricoMovimientos).TablaMovimientos;
  with TablaMovimientos do begin
    Codigo.MaxLength := FieldByName('CODIGOARTICULO').Size;
    Descripcion.MaxLength := FieldByName('DESCRIPCIONARTICULO').Size;
  end;
end;

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

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

procedure TfrBuscarMovimiento.BuscarAlmacen;
begin
//
end;

procedure TfrBuscarMovimiento.BuscarMovimiento;
var
  Respuesta : integer;
  Resultado : Boolean;
begin
  if Contador <> -1 then begin
    TablaMovimientos.DisableControls;

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

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

  if Length(Trim(Codigo.Text)) > 0 then
  begin
    Contador := Contador + 1;
    Campos := Campos + 'CODIGOARTICULO';
    Valores[Contador] := Trim(Codigo.Text);
  end;

  if Length(Trim(Descripcion.Text)) > 0 then
  begin
    Contador := Contador + 1;
    if Contador > 0 then
      Campos := Campos + ';';
    Campos := Campos + 'DESCRIPCIONARTICULO';
    Valores[Contador] := Trim(Descripcion.Text);
  end;

  if Length(Trim(cbxFamilia.Text)) > 0 then
  begin
    Contador := Contador + 1;
    if Contador > 0 then
      Campos := Campos + ';';
    Campos := Campos + 'FAMILIA';
    Valores[Contador] := Trim(cbxFamilia.Text);
  end;

  if Length(Trim(cbxTipoMovimiento.Text)) > 0 then
  begin
    Contador := Contador + 1;
    if Contador > 0 then
      Campos := Campos + ';';
    Campos := Campos + 'TIPOMOVIMIENTO';
    Valores[Contador] := Trim(cbxTipoMovimiento.Text);
  end;
end;

function TfrBuscarMovimiento.CloseFrame: boolean;
begin
  FCodigoMovimiento := TablaMovimientos.FieldByName('CODIGO').AsString;
  Result := inherited CloseFrame;
end;

function TfrBuscarMovimiento.CambiarEntidad(EntidadAnterior,
  Entidad: TRdxEntidad): Boolean;
begin
  if not inherited CambiarEntidad(EntidadAnterior, Entidad) then
    Exit;

  ConfigurarFrame(Self, Self.Entidad);
end;

end.
