{
===============================================================================
  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: 12-10-2002
  Versión actual: 1.0.1
  Fecha versión actual: 23-11-2004
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------

    19-11-2003    p268. Cambiar funcion ImprimirListadoPro y bImprimirClick
                  para hacerlo alfabeticamente.

    23-11-2004    p297. Solo sacar etiquetas de los clientes/proveedores etiquetados
===============================================================================
}

unit GenerarEtiquetasProveedores;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  RdxFrame, RdxBotones, ExtCtrls, RdxPaneles, RdxBarras, RdxCheckBox,
  StdCtrls, RdxCampos, Tipos, RdxDialogos,

  DB, IBCustomDataSet, IBSQL, BaseDatos, IBDatabase, IBQuery,
  FR_Class, FR_DSet, FR_DBSet, FR_View, FR_PTabl, RdxRadioButton;

type
  TfrGenerarEtiquetasProveedores = class(TRdxFrame)
    brOperacion: TRdxBarraInferior;
    bCancelar: TRdxBoton;
    bImprimir: TRdxBoton;
    NombreProveedorIni: TRdxEdit;
    CodProvIni: TRdxEdit;
    CodProvFin: TRdxEdit;
    NombreProveedorFin: TRdxEdit;
    eFechaIni: TLabel;
    eFechaFin: TLabel;
    frReport1: TfrReport;
    frDBDataSet1: TfrDBDataSet;
    IBQuery1: TIBQuery;
    eInfoCriterios: TLabel;
    rbTodos: TRdxRadioButton;
    rbCodigo: TRdxRadioButton;
    procedure bCancelarClick(Sender: TObject);
    procedure CodProvIniButtonClick(Sender: TObject);
    procedure CodProvIniExit(Sender: TObject);
    procedure bImprimirClick(Sender: TObject);
    procedure CodProvFinButtonClick(Sender: TObject);
    procedure CodProvFinExit(Sender: TObject);
    procedure rbTodosClick(Sender: TObject);
    procedure rbCodigoClick(Sender: TObject);
  private
    FCodProvIni : variant;
    FCodProvFin : variant;
    FCodigoProveedorAux : variant;
    procedure SetCodigoProveedor (Index : Integer; Value : Variant);
    procedure ImprimirListadoProv;
  protected
    procedure FreeContenido; override;
    procedure VerModal; override;
  public
    constructor Create (AOwner : TComponent); override;
  published
    property CodProveedorIni : Variant index 0 read FCodProvIni write SetCodigoProveedor;
    property CodProveedorFin : Variant index 1 read FCodProvFin write SetCodigoProveedor;
  end;

var
  frGenerarEtiquetasProveedores: TfrGenerarEtiquetasProveedores;

implementation

{$R *.DFM}

uses
  StrFunc, TablaProveedores,
  RdxFrameProveedores, Mensajes, Proveedores, Configuracion, Literales;

{ TfrGenerarEtiquetasProveedores }

procedure TfrGenerarEtiquetasProveedores.bCancelarClick(Sender: TObject);
begin
  CloseFrame;
end;

constructor TfrGenerarEtiquetasProveedores.Create(AOwner: TComponent);
begin
  inherited;
//  CodProveedorIni := dmTablaProveedores.DarProveedorMin;
//  CodProveedorFin := dmTablaProveedores.DarProveedorMax;
  rbTodosClick(Self);
end;

procedure TfrGenerarEtiquetasProveedores.CodProvIniButtonClick(
  Sender: TObject);
begin
  ContenidoModal := TfrProveedores.Create(Self);
  CodProveedorIni := FCodigoProveedorAux;
end;

procedure TfrGenerarEtiquetasProveedores.ImprimirListadoProv;
begin
  IBQuery1.Database := dmBaseDatos.BD;
  IBQuery1.Transaction := dmBaseDatos.Transaccion;
  IBQuery1.SQL.Add('select * from PROVEEDORES ');
  IBQuery1.SQL.Add('where ETIQUETADO = 1 ');
  if not rbTodos.Checked then
     IBQuery1.SQL.Add('and upper(NOMBRE) between upper(:NOMBREINI) and upper(:NOMBREFIN)');
  IBQuery1.SQL.Add('order by NOMBRE');

  if not rbTodos.Checked then
  begin
    IBQuery1.ParamByName('NOMBREINI').AsString := NombreProveedorIni.Text;
    IBQuery1.ParamByName('NOMBREFIN').AsString := NombreProveedorFin.Text;
  end;

  IBQuery1.Active := True;

  frReport1.LoadFromFile(ExtractFileDir(ParamStr(0))+ '\informes\' + Configuracion.ListaInformes.Values['LISTADOETIQUETASPROVEEDORES']);
  frReport1.PrepareReport;
  frReport1.PrintPreparedReportDlg;
end;

procedure TfrGenerarEtiquetasProveedores.SetCodigoProveedor (Index : Integer; Value : Variant);
var
  DatosProveedor : TDatosProveedor;
begin
  if VarIsNull(Value) then
    exit;

  FCodigoProveedorAux := Value;
  DatosProveedor := TDatosProveedor.Create;
  try
    DatosProveedor.Codigo := FCodigoProveedorAux;
    dmTablaProveedores.DarDatosProveedor(DatosProveedor);
    case Index of
      0 : begin
            CodProvIni.Text := FCodigoProveedorAux;
            NombreProveedorIni.Text := DatosProveedor.Nombre;
          end;
      1 : begin
            CodProvFin.Text := FCodigoProveedorAux;
            NombreProveedorFin.Text := DatosProveedor.Nombre;
          end;
    end;
  finally
    DatosProveedor.Free;
  end;
end;

procedure TfrGenerarEtiquetasProveedores.FreeContenido;
begin
  if (ContenidoModal is TRdxFrameProveedores) then
    FCodigoProveedorAux := (ContenidoModal as TRdxFrameProveedores).CodigoProveedor;
  inherited;    
end;

procedure TfrGenerarEtiquetasProveedores.CodProvIniExit(Sender: TObject);
begin
  if EsCadenaVacia(CodProvIni.Text) then
  begin
    VerMensaje(msgProFaltaCodigo);
    CodProvIni.SetFocus;
    Exit;
  end;

  if (dmTablaProveedores.ValidarCodigo(CodProvIni.Text)) then begin
    CodProvIni.Text := dmTablaProveedores.FormatearCodigo(CodProvIni.Text);
    if (dmTablaProveedores.ExisteCodigo(CodProvIni.Text)) then
      CodProveedorIni := CodProvIni.Text
    else
    begin
      VerMensajeFmt(msgProCodProvNoExiste, [CodProvIni.Text]);
      CodProvIni.SetFocus;
    end;
  end
  else begin
    VerMensajeFmt(msgProCodProvIncorrecto, [CodProvIni.Text]);
    CodProvIni.SetFocus;
  end;
end;

procedure TfrGenerarEtiquetasProveedores.bImprimirClick(Sender: TObject);
begin
  if not rbTodos.Checked then
  begin
    if (esCadenaVacia(CodProvIni.Text) OR esCadenaVacia(CodProvFin.Text)) then
    begin
        VerMensaje(msgIntervaloObligatorio);
        exit;
    end;

    if AnsiCompareText(NombreProveedorIni.text, NombreProveedorFin.Text) > 0 then
    begin
        VerMensaje(msgIntervaloIniMenor);
        exit;
    end;
  end;
  
  ImprimirListadoProv;
  CloseFrame;
end;

procedure TfrGenerarEtiquetasProveedores.CodProvFinButtonClick(Sender: TObject);
begin
  ContenidoModal := TfrProveedores.Create(Self);
  CodProveedorFin := FCodigoProveedorAux;
end;

procedure TfrGenerarEtiquetasProveedores.CodProvFinExit(Sender: TObject);
begin
  if EsCadenaVacia(CodProvFin.Text) then
  begin
    VerMensaje(msgProFaltaCodigo);
    CodProvFin.SetFocus;
    Exit;
  end;

  if (dmTablaProveedores.ValidarCodigo(CodProvFin.Text)) then begin
    CodProvFin.Text := dmTablaProveedores.FormatearCodigo(CodProvFin.Text);
    if (dmTablaProveedores.ExisteCodigo(CodProvFin.Text)) then
      CodProveedorFin := CodProvFin.Text
    else
    begin
      VerMensajeFmt(msgProCodProvNoExiste, [CodProvFin.Text]);
      CodProvFin.SetFocus;
    end;
  end
  else begin
    VerMensajeFmt(msgProCodProvIncorrecto, [CodProvFin.Text]);
    CodProvFin.SetFocus;
  end;
end;

procedure TfrGenerarEtiquetasProveedores.VerModal;
begin
 if (ContenidoModal is TfrProveedores) then
    (ContenidoModal as TfrProveedores).SoloEtiquetados := true;

  inherited;
end;

procedure TfrGenerarEtiquetasProveedores.rbTodosClick(Sender: TObject);
begin
  CodProvIni.Enabled := False;
  NombreProveedorIni.Enabled := False;
  CodProvFin.Enabled := False;
  NombreProveedorFin.Enabled := False;
end;

procedure TfrGenerarEtiquetasProveedores.rbCodigoClick(Sender: TObject);
begin
  CodProvIni.Enabled := True;
  NombreProveedorIni.Enabled := True;
  CodProvFin.Enabled := True;
  NombreProveedorFin.Enabled := True;
end;

end.
