unit FLISTADOOOPCIONESTICKET;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, Buttons,dateutils, Grids;

type
  TLISTADOOPCIONESTICKET = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Label2: TLabel;
    MaskEdit1: TMaskEdit;
    Label3: TLabel;
    MaskEdit2: TMaskEdit;
    Label1: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label9: TLabel;
    Edit3: TEdit;
    Label10: TLabel;
    Label11: TLabel;
    Edit4: TEdit;
    Label12: TLabel;
    Edit5: TEdit;
    TITICKET: TGroupBox;
    TITODOS: TRadioButton;
    TIIMPRESO: TRadioButton;
    TINOIMPRESO: TRadioButton;
    TCTICKET: TGroupBox;
    TCTODOS: TRadioButton;
    TCCOBRADO: TRadioButton;
    TCNOCOBRADO: TRadioButton;
    Label4: TLabel;
    Label5: TLabel;
    Edit6: TEdit;
    Label6: TLabel;
    Edit7: TEdit;
    GroupBox1: TGroupBox;
    DTOTAL: TRadioButton;
    DDETALLE: TRadioButton;
    SGORDEN1: TStringGrid;
    BitBtn5: TBitBtn;
    BitBtn6: TBitBtn;
    ORDEN: TLabel;
    Edit8: TEdit;
    Label13: TLabel;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure MaskEdit1Exit(Sender: TObject);
    procedure MaskEdit2Exit(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Edit1DblClick(Sender: TObject);
    procedure Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit3DblClick(Sender: TObject);
    procedure Edit4DblClick(Sender: TObject);
    procedure Edit3KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit4KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit5DblClick(Sender: TObject);
    procedure Edit5KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit1Exit(Sender: TObject);
    procedure Edit2Exit(Sender: TObject);
    procedure Edit3Exit(Sender: TObject);
    procedure Edit4Exit(Sender: TObject);
    procedure Edit5Exit(Sender: TObject);
    procedure Edit6Exit(Sender: TObject);
    procedure Edit7Exit(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
  private
    { Private declarations }
    procedure cliente;
    FUNCTION TICKET:STRING;
    PROCEDURE EMPRESA;
    FUNCTION ESENTERO(AUX:STRING):BOOLEAN;
    FUNCTION ESFLOAT(AUX:STRING):BOOLEAN;
  public
    { Public declarations }
    FECHAINICIO,FECHAFINAL: tdatetime;
    FECHAINICIOA,FECHAFINALA: tdatetime;
    sfechainicio,sfechafinal:string;
    sfechainicioA,sfechafinalA:string;
    cadena :string;
    IMPRESO,COBRADO,TItodo,TCTODO,TOTAL,DETALLE :boolean;
  end;

var
  LISTADOOPCIONESTICKET: TLISTADOOPCIONESTICKET;

implementation

uses UDMGS, FDLGCLIENTEAUX, FDLGTICKETAUX, FDLGEMPRESAAUX, menu;

{$R *.dfm}

procedure TLISTADOOPCIONESTICKET.BitBtn1Click(Sender: TObject);
VAR EMPRESA,ANYO,CLIENTE,ORDEN,GRUPO,CAMPOS:STRING;
    I:SMALLINT;
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;
  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;

    cadena := '';

    if sfechainicio <> '' then
      cadena := ' fecha >= '''+sfechainicio+''' ';
    if sfechafinal <> '' then
     if cadena <> '' then
      cadena := cadena + ' and fecha <= '''+sfechafinal+''' '
     else
      cadena := ' fecha <= '''+sfechafinal+''' ';

    TItodo := true;
    if TIIMPRESO.Checked then
    begin
       IMPRESO := true;
       TItodo := false;
    end;
    if TINOIMPRESO.Checked then
    begin
       IMPRESO := false;
       TItodo := false;
    end;

    TCtodo := true;
    if TCCOBRADO.Checked then
    begin
       COBRADO := true;
       TCtodo := false;
    end;
    if TCNOCOBRADO.Checked then
    begin
       COBRADO := false;
       TCtodo := false;
    end;

    if DTOTAL.Checked then
    begin
       TOTAL := true;
       DETALLE := false;
    end;
    if DDETALLE.Checked then
    begin
       TOTAL := false;
       DETALLE := TRUE;
    end;

    IF TRIM(EDIT1.Text) <> '' THEN
       IF TRIM(CADENA)<>'' THEN
          CADENA := CADENA+' AND ID_CLIENTE='+EDIT1.TEXT
       ELSE
          CADENA := ' ID_CLIENTE='+EDIT1.TEXT  ;

    IF TRIM(EDIT2.Text) <> '' THEN
       IF TRIM(CADENA)<>'' THEN
          CADENA := CADENA+' AND ANYO='+EDIT2.TEXT
       ELSE
          CADENA := ' ANYO='+EDIT2.TEXT;

    IF TRIM(EDIT3.Text) <> '' THEN
       IF TRIM(CADENA)<>'' THEN
          CADENA := CADENA+' AND ID_TICKET=>'+EDIT3.TEXT
       ELSE
          CADENA := ' ID_TICKET=>'+EDIT3.TEXT;

    IF TRIM(EDIT4.Text) <> '' THEN
       IF TRIM(CADENA)<>'' THEN
          CADENA := CADENA+' AND ID_TICKET<='+EDIT4.TEXT
       ELSE
          CADENA := ' ID_TICKET<='+EDIT4.TEXT;


    IF TRIM(EDIT5.Text) <> '' THEN
       IF TRIM(CADENA)<>'' THEN
          CADENA := CADENA+' AND ID_EMPRESA='+EDIT5.TEXT
       ELSE
          CADENA := ' ID_EMPRESA='+EDIT5.TEXT;

    IF TRIM(EDIT6.Text) <> '' THEN
       IF TRIM(CADENA)<>'' THEN
          CADENA := CADENA+' AND TOTALCOBRADO=>'+EDIT6.TEXT
       ELSE
          CADENA := ' TOTALCOBRADO=>'+EDIT6.TEXT;


    IF TRIM(EDIT7.Text) <> '' THEN
       IF TRIM(CADENA)<>'' THEN
          CADENA := CADENA+' AND TOTALCOBRADO<='+EDIT7.TEXT
       ELSE
          CADENA := ' TOTALCOBRADO<='+EDIT7.TEXT;

    IF TRIM(EDIT8.Text) <> '' THEN
       IF TRIM(CADENA)<>'' THEN
          CADENA := CADENA+' AND ID_SERIE='''+EDIT8.TEXT+''' '
       ELSE
          CADENA := ' ID_SERIE='''+EDIT8.TEXT+''' ';


    IF NOT TITODO THEN
      IF IMPRESO THEN
      BEGIN
        IF TRIM(CADENA) <> '' THEN
           CADENA := CADENA + ' AND IMPRESO=1 '
        ELSE
           CADENA := ' IMPRESO=1 ' ;
      END
      ELSE
      BEGIN
        IF TRIM(CADENA) <> '' THEN
           CADENA := CADENA + ' AND IMPRESO=0 '
        ELSE
           CADENA := ' IMPRESO=0 ' ;
      END;

    IF NOT TCTODO THEN
      IF COBRADO THEN
      BEGIN
        IF TRIM(CADENA) <> '' THEN
           CADENA := CADENA + ' AND COBRADO=1 '
        ELSE
           CADENA := ' COBRADO=1 ' ;
      END
      ELSE
      BEGIN
        IF TRIM(CADENA) <> '' THEN
           CADENA := CADENA + ' AND COBRADO=0 '
        ELSE
           CADENA := ' COBRADO=0 ' ;
      END;

    ORDEN :='';
    FOR I:=0 TO 3 DO
    BEGIN
       IF SGORDEN1.CELLS[0,I] ='AŅO' THEN
         ORDEN := ORDEN + 'ANYO,'
       ELSE
         ORDEN := ORDEN + SGORDEN1.CELLS[0,I]+',';
    END;
    IF SGORDEN1.CELLS[0,4] ='AŅO' THEN
       ORDEN:= ' ORDER BY ' + ORDEN + 'ANYO'
    ELSE
       ORDEN:= ' ORDER BY ' + ORDEN + SGORDEN1.CELLS[0,4] ;

    IF TOTAL THEN
    BEGIN
     IF TRIM(CADENA) <> '' THEN
     BEGIN
     END
     ELSE
     BEGIN
     END
    END
    ELSE
     IF TRIM(CADENA) <> '' THEN
     BEGIN
       DMGS.CDSQ_TICKETAUX.CLOSE;
       DMGS.VTICKETAUX.ID := ' WHERE '+CADENA;
       DMGS.VTICKETAUX.ID1 := ' SELECT * FROM TICKET ';
       DMGS.VTICKETAUX.ORDEN := ORDEN;
       DMGS.VTICKETAUX.TIPO := '2';
       DMGS.CDSQ_TICKETAUX.Open;
       WHILE not dmgs.cdsq_TICKETAUX.eof do
       begin
         dmgs.cdsq_TICKETAUX.Last;
         if dmgs.cdsq_TICKETaux.Eof then
         try // para evitar el error de memoria bloqueada en el server.
           DMGS.CDSQ_TICKETaux.GetNextPacket ;
         except
         end;
       end;
       dmgs.cdsq_TICKETAUX.First;
     END;

    modalresult:=mrok;
end;

procedure TLISTADOOPCIONESTICKET.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 TLISTADOOPCIONESTICKET.FormShow(Sender: TObject);
begin
 MASKEDIT1.TEXT := '';
 MASKEDIT2.TEXT := '';
 EDIT1.SETFOCUS;
end;

procedure TLISTADOOPCIONESTICKET.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 TLISTADOOPCIONESTICKET.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 TLISTADOOPCIONESTICKET.FormCreate(Sender: TObject);
begin
 cadena := '';
 cobrado := false;
 IMPRESO:=FALSE;
 TCtodo := true;
 TITODO := TRUE;
 DETALLE := TRUE;
 TOTAL := FALSE;
 sfechainicio:='';
 sfechafinal:='';
 SGORDEN1.CELLS[0,0] := 'ID_CLIENTE';
 SGORDEN1.CELLS[0,1] := 'AŅO';
 SGORDEN1.CELLS[0,2] := 'FECHA';
 SGORDEN1.CELLS[0,3] := 'ID_TICKET';
 SGORDEN1.CELLS[0,4] := 'TOTALCOBRADO';
 EDIT2.TEXT := FMENU.ANYO;
 EDIT5.TEXT := FMENU.ID_EMPRESA;
 EDIT8.TEXT := FMENU.ID_SERIE;
end;



procedure TLISTADOOPCIONESTICKET.Edit1DblClick(Sender: TObject);
begin
    CLIENTE;
end;
procedure TLISTADOOPCIONESTICKET.cliente;
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 TLISTADOOPCIONESTICKET.Edit1KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
   if key=112 then
      cliente;
end;
FUNCTION TLISTADOOPCIONESTICKET.TICKET:STRING;
BEGIN
        RESULT := '';
        DMGS.cdsq_TICKETaux.Close;
        dlgTICKETAUX := tdlgTICKETAUX.Create(NIL);
        if dlgTICKETAUX.Showmodal=mrok then
        begin
            RESULT := DMGS.CDSQ_TICKETAUXID_TICKET.ASSTRING;
            Perform(WM_NextDLGCtl, 0, 0);
        end;
        dlgTICKETaux.Free;
        dlgTICKETaux := nil;
END;

procedure TLISTADOOPCIONESTICKET.Edit3DblClick(Sender: TObject);
begin
   EDIT3.Text := TICKET;
end;

procedure TLISTADOOPCIONESTICKET.Edit4DblClick(Sender: TObject);
begin
   EDIT4.TEXT := TICKET;
end;

procedure TLISTADOOPCIONESTICKET.Edit3KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  IF KEY=112 THEN
    EDIT3.TEXT := TICKET;
end;

procedure TLISTADOOPCIONESTICKET.Edit4KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  IF KEY=112 THEN
   EDIT4.TEXT := TICKET;
end;

procedure TLISTADOOPCIONESTICKET.Edit5DblClick(Sender: TObject);
begin
   EMPRESA;
end;

procedure TLISTADOOPCIONESTICKET.Edit5KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  IF KEY=112 THEN
     EMPRESA;
end;

PROCEDURE TLISTADOOPCIONESTICKET.EMPRESA;
BEGIN
        DLGEMPRESAAUX := TDLGEMPRESAAUX.Create(NIL);
        if DLGEMPRESAAUX.Showmodal=mrok then
        begin
            EDIT5.Text := DLGEMPRESAAUX.codigo;
            Perform(WM_NextDLGCtl, 0, 0);
        end;
        DLGEMPRESAAUX.Free;
        DLGEMPRESAAUX := nil;
END;
FUNCTION TLISTADOOPCIONESTICKET.ESENTERO(AUX:STRING):BOOLEAN;
VAR IAUX:INTEGER;
BEGIN
 RESULT := TRUE;
 IF TRIM(AUX)<>'' THEN
  TRY
    IAUX := STRTOINT(AUX);
  EXCEPT
    SHOWMESSAGE('EL NUMERO INTRODUCIDO NO ES CORRECTO ');
    RESULT := FALSE;
  END;
END;
FUNCTION TLISTADOOPCIONESTICKET.ESFLOAT(AUX:STRING):BOOLEAN;
VAR DAUX:DOUBLE;
BEGIN
 RESULT := TRUE;
 IF TRIM(AUX)<>'' THEN
  TRY
    DAUX := STRTOFLOAT(AUX);
  EXCEPT
    SHOWMESSAGE('EL NUMERO INTRODUCIDO NO ES CORRECTO ');
    RESULT := FALSE;    
  END;
END;


procedure TLISTADOOPCIONESTICKET.Edit1Exit(Sender: TObject);
begin
 IF  NOT ESENTERO(EDIT1.Text) THEN
    EDIT1.SetFocus;
end;

procedure TLISTADOOPCIONESTICKET.Edit2Exit(Sender: TObject);
begin
 IF  NOT ESENTERO(EDIT2.Text) THEN
    EDIT2.SetFocus;
end;

procedure TLISTADOOPCIONESTICKET.Edit3Exit(Sender: TObject);
begin
 IF  NOT ESENTERO(EDIT3.Text) THEN
    EDIT3.SetFocus;
End;

procedure TLISTADOOPCIONESTICKET.Edit4Exit(Sender: TObject);
begin
 IF  NOT ESENTERO(EDIT4.Text) THEN
    EDIT4.SetFocus;
end;

procedure TLISTADOOPCIONESTICKET.Edit5Exit(Sender: TObject);
begin
 IF  NOT ESENTERO(EDIT5.Text) THEN
    EDIT5.SetFocus;
end;

procedure TLISTADOOPCIONESTICKET.Edit6Exit(Sender: TObject);
begin
 IF  NOT ESFLOAT(EDIT6.Text) THEN
    EDIT6.SetFocus;
end;

procedure TLISTADOOPCIONESTICKET.Edit7Exit(Sender: TObject);
begin
 IF  NOT ESFLOAT(EDIT7.Text) THEN
    EDIT7.SetFocus;
end;

procedure TLISTADOOPCIONESTICKET.BitBtn5Click(Sender: TObject);
VAR AUX,AUX1:STRING;
begin
   IF  SGORDEN1.Row <> 0 THEN
   BEGIN
      AUX1 := SGORDEN1.Cells[0,SGORDEN1.Row];
      AUX  := SGORDEN1.Cells[0,SGORDEN1.Row-1];
      SGORDEN1.Cells[0,SGORDEN1.Row]:= AUX;
      SGORDEN1.Cells[0,SGORDEN1.Row-1] := AUX1;
      SGORDEN1.Row := SGORDEN1.ROW - 1;
   END;
end;
procedure TLISTADOOPCIONESTICKET.BitBtn6Click(Sender: TObject);
VAR AUX,AUX1:STRING;
begin
   IF SGORDEN1.Row <> (SGORDEN1.RowCount -1) THEN
   BEGIN
      AUX1 := SGORDEN1.Cells[0,SGORDEN1.Row];
      AUX  := SGORDEN1.Cells[0,SGORDEN1.Row+1];
      SGORDEN1.Cells[0,SGORDEN1.Row]:= AUX;
      SGORDEN1.Cells[0,SGORDEN1.Row+1] := AUX1;
      SGORDEN1.Row := SGORDEN1.ROW + 1;
   END;
end;
end.
