unit FLISTADOOPCIONES;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, Buttons,dateutils;

type
  TLISTADOOPCIONES = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    GBCLIENTE: TGroupBox;
    RBTODOS: TRadioButton;
    RBCOBRADOS: TRadioButton;
    RBNOCOBRADOS: TRadioButton;
    Label2: TLabel;
    MaskEdit1: TMaskEdit;
    Label3: TLabel;
    MaskEdit2: TMaskEdit;
    Edit1: TEdit;
    Label1: TLabel;
    GBENTRADA: TGroupBox;
    RBTOTAL: TRadioButton;
    RBDETALLE: TRadioButton;
    Label4: TLabel;
    Edit2: TEdit;
    RBCCF: TRadioButton;
    Label5: TLabel;
    Edit3: TEdit;
    CHBPROVEEDOR: TCheckBox;
    CHBACREEDOR: TCheckBox;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure MaskEdit1Exit(Sender: TObject);
    procedure MaskEdit2Exit(Sender: TObject);
    procedure Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit1DblClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Edit2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit2DblClick(Sender: TObject);
    procedure Edit3KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit3DblClick(Sender: TObject);
  private
    { Private declarations }
    procedure ver;
    procedure clientes;
    procedure proveedores;
    PROCEDURE SERIES;
  public
    { Public declarations }
    FECHAINICIO,FECHAFINAL: tdatetime;
    sfechainicio,sfechafinal:string;
    cadena :string;
    cobrado,todo :boolean;
    total,detalle,CONFACTURA:boolean;
    opcion:smallint; // cliente -> 1
    // entrada -> 2
  end;

var
  LISTADOOPCIONES: TLISTADOOPCIONES;

implementation

uses UDMGS, FDLGCLIENTEAUX, fdlgPROVEEDORaux, DLGSERIESAUX, menu;

{$R *.dfm}

procedure TLISTADOOPCIONES.BitBtn1Click(Sender: TObject);
begin
  if trim(maskedit1.Text) <> '/  /' then
  begin
    try
        fechainicio:=strtodate(maskedit1.text);
    except
        on e:exception do
        begin
            messagedlg('LA FECHA INICIAL NO ES CORRECTA. INTRODUZCA dd/mm/aaaa.',mterror,[mbok],0);
            maskedit1.setfocus;
            abort;
        end;
    end;
    sfechaINiCIO := inttostr(yearof(FECHAINICIO))+'-'+inttostr(monthof(FECHAINICIO))+'-'+inttostr(dayof(FECHAINICIO));
  end
  ELSE
  BEGIN
    SHOWMESSAGE('DEBE INTRODUCIR UNA FECHA INICIAL.');
    ModalResult := MRNONE;
    ABORT;
  END;
  if trim(maskedit2.Text) <> '/  /' then
  begin
    try
        fechafinal:=strtodate(maskedit2.text);
    except
        on e:exception do
        begin
            messagedlg('LA FECHA FINAL NO ES CORRECTA. INTRODUZCA dd/mm/aaaa.',mterror,[mbok],0);
            maskedit2.setfocus;
            abort;
        end;
    end;
    sfechafinal := inttostr(yearof(fechafinal))+'-'+inttostr(monthof(fechafinal))+'-'+inttostr(dayof(fechafinal));
  end
  ELSE
  BEGIN
    SHOWMESSAGE('DEBE INTRODUCIR UNA FECHA FINAL.');
    ModalResult := MRNONE;
    ABORT;
  END;



    cadena := '';
    if sfechainicio <> '' then
      cadena := ' fecha >= '''+sfechainicio+''' ';
    if sfechafinal <> '' then
     if cadena <> '' then
      cadena := cadena + ' and fecha <= '''+sfechafinal+''' '
     else
      cadena := ' fecha <= '''+sfechafinal+''' ';
    if trim(edit1.text) <> '' then
     if cadena <> '' then
      cadena := cadena + ' and cl.id_cliente = '+trim(edit1.text)+' '
     else
      cadena := ' cl.id_cliente = '+trim(edit1.text)+' ';

    if trim(edit2.text) <> '' then
     if cadena <> '' then
      cadena := cadena + ' and id_proveedor = '+trim(edit2.text)+' '
     else
      cadena := ' id_proveedor = '+trim(edit2.text)+' ';

    if trim(edit3.text) <> '' then
     if cadena <> '' then
      cadena := cadena + ' and id_serie = '''+trim(edit3.text)+''' '
     else
      cadena := ''' id_serie = '''+trim(edit3.text)+''' ';

    if NOT (CHBACREEDOR.Checked AND
       CHBPROVEEDOR.Checked)
    then
    BEGIN

      IF CHBACREEDOR.Checked THEN
      BEGIN
         if cadena <> '' then
           cadena := cadena + ' and ID_PROVEEDOR IN (SELECT ID_PROVEEDOR FROM TIPOS WHERE ID_TIPO=''ACREEDOR'') '
         else
           cadena := ' ID_PROVEEDOR IN (SELECT ID_PROVEEDOR FROM TIPOS WHERE ID_TIPO=''ACREEDOR'') ';
      END;

      IF CHBPROVEEDOR.Checked THEN
      BEGIN
         if cadena <> '' then
           cadena := cadena + ' and ID_PROVEEDOR IN (SELECT ID_PROVEEDOR FROM TIPOS WHERE ID_TIPO=''PROVEEDOR'') '
         else
           cadena := ' ID_PROVEEDOR IN (SELECT ID_PROVEEDOR FROM TIPOS WHERE ID_TIPO=''PROVEEDOR'') ';
      END;

    END;


    todo := true;
    if RBCOBRADOS.Checked then
    begin
       cobrado := true;
       todo := false;
       CONFACTURA := FALSE;
    end;
    if RBNOCOBRADOS.Checked then
    begin
       cobrado := false;
       todo := false;
       CONFACTURA := FALSE;
    end;
    if RBCCF.Checked then
    begin
       cobrado := false;
       todo := false;
       CONFACTURA := TRUE;
    end;


    if RBDETALLE.Checked then
    begin
       DETALLE := true;
       TOTAL := false;
    end;
    if RBTOTAL.Checked then
    begin
       DETALLE := false;
       TOTAL := TRUE;
    end;
    modalresult:=mrok;
end;

procedure TLISTADOOPCIONES.FormKeyPress(Sender: TObject; var Key: Char);
begin
    if ActiveControl=nil then
    begin
        Perform(WM_NextDLGCtl, 0, 0);
        key:=#0;
    end;

    if (key = #13) and not (activecontrol is tbutton) then
    begin
        Perform(WM_NextDLGCtl, 0, 0);
        key:=#0;
    end;
end;

procedure TLISTADOOPCIONES.FormShow(Sender: TObject);
begin
 ver;
 MASKEDIT1.TEXT := '';
 MASKEDIT2.TEXT := '';
 maskedit1.setfocus;
end;

procedure TLISTADOOPCIONES.MaskEdit1Exit(Sender: TObject);
begin
  if trim(maskedit1.Text) <> '/  /' then
  begin
    try
        fechainicio:=strtodate(maskedit1.text);
    except
        on e:exception do
        begin
            messagedlg('LA FECHA INICIAL NO ES CORRECTA. INTRODUZCA dd/mm/aaaa.',mterror,[mbok],0);
            maskedit1.setfocus;
            abort;
        end;
    end;
    sfechaINiCIO := inttostr(yearof(FECHAINICIO))+'-'+inttostr(monthof(FECHAINICIO))+'-'+inttostr(dayof(FECHAINICIO));
  end;

end;

procedure TLISTADOOPCIONES.MaskEdit2Exit(Sender: TObject);
begin
  if trim(maskedit2.Text) <> '/  /' then
  begin
    try
        fechafinal:=strtodate(maskedit2.text);
    except
        on e:exception do
        begin
            messagedlg('LA FECHA FINAL NO ES CORRECTA. INTRODUZCA dd/mm/aaaa.',mterror,[mbok],0);
            maskedit2.setfocus;
            abort;
        end;
    end;
        sfechafinal := inttostr(yearof(fechafinal))+'-'+inttostr(monthof(fechafinal))+'-'+inttostr(dayof(fechafinal));
  end;
end;

procedure TLISTADOOPCIONES.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if key=112 then
      clientes;
end;

procedure TLISTADOOPCIONES.Edit1DblClick(Sender: TObject);
begin
 clientes;
end;

procedure TLISTADOOPCIONES.FormCreate(Sender: TObject);
begin
 opcion := 1;
 cadena := '';
 cobrado := false;
 todo := true;
 sfechainicio:='';
 sfechafinal:=''; 
end;
procedure TLISTADOOPCIONES.ver;
begin
 case opcion of
   2:begin//entrada
        label1.Visible := false;
        edit1.visIble := false;
        label4.Visible := true;
        edit2.Visible := true;
        gbcliente.Visible := false;
        gbentrada.Visible := true;
        LABEL5.VISIBLE := FALSE;
        EDIT3.VISIBLE := FALSE;
        CHBPROVEEDOR.Visible := FALSE;
        CHBACREEDOR.Visible := FALSE;
     end;
 end;
end;
procedure TLISTADOOPCIONES.clientes ;
begin
        DMGS.cdsq_clienteaux.Close;
        dlgclienteAUX := tdlgclienteAUX.Create(NIL);
        if dlgclienteAUX.Showmodal=mrok then
        begin
            EDIT1.TEXT := dlgclienteaux.codigo;
            Perform(WM_NextDLGCtl, 0, 0);
        end;
        dlgclienteaux.Free;
        dlgclienteaux := nil;
end;

procedure TLISTADOOPCIONES.Edit2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=112 then
     proveedores;
end;

procedure TLISTADOOPCIONES.Edit2DblClick(Sender: TObject);
begin
  proveedores;
end;

procedure TLISTADOOPCIONES.proveedores ;
begin
        dlgproveedorAUX := tdlgproveedorAUX.Create(NIL);
        if dlgproveedorAUX.Showmodal=mrok then
        begin
            EDIT2.TEXT := dlgproveedoraux.codigo;
            Perform(WM_NextDLGCtl, 0, 0);
        end;
        dlgproveedoraux.Free;
        dlgproveedoraux := nil;
end;

procedure TLISTADOOPCIONES.Edit3KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if key=112 then
      SERIES;
end;

procedure TLISTADOOPCIONES.Edit3DblClick(Sender: TObject);
begin
SERIES;
end;

procedure TLISTADOOPCIONES.SERIES;
BEGIN
        DMGS.CDSQ_SERIESAUX.Close;
        fdlgseriesAUX := tfdlgseriesAUX.Create(NIL);
        FDLGSERIESAUX.SERIE := FMENU.ID_EMPRESA ;
        FDLGSERIESAUX.ANYO := STRTOINT(FMENU.ANYO);
        if fdlgseriesAUX.Showmodal=mrok then
        begin
            EDIT3.TEXT := fdlgseriesaux.serie;
            Perform(WM_NextDLGCtl, 0, 0);
        end;
        fdlgseriesaux.Free;
        fdlgseriesaux := nil;
END;
end.
