unit ANTFDLGALBARANAUX;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ExtCtrls, Grids, DBGrids, Db, DBCtrls, ImgList,
  ComCtrls, ToolWin, Menus,TIPOSDEFINIDOS;

type
  TDLGALBARANAUX = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    bcancelar: TBitBtn;
    bok: TBitBtn;
    DBGrid1: TDBGrid;
    DSALBARAN: TDataSource;
    DBNavigator1: TDBNavigator;
    Panel3: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    ToolBar1: TToolBar;
    MainMenu1: TMainMenu;
    VER1: TMenuItem;
    TODOS1: TMenuItem;
    NOCOBRADOS1: TMenuItem;
    COBRADOS1: TMenuItem;
    Label2: TLabel;
    procedure DBGrid1DblClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
    procedure DSALBARANDataChange(Sender: TObject; Field: TField);
    procedure Edit1Exit(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit1Enter(Sender: TObject);
    procedure bcancelarClick(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure TODOS1Click(Sender: TObject);
    procedure NOCOBRADOS1Click(Sender: TObject);
    procedure COBRADOS1Click(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DSALBARANStateChange(Sender: TObject);
  private
    { Private declarations }
    CADENA :STRING;
    ANTERIOR:STRING;
    function GetFAMILIA:string;
    procedure SetFAMILIA(nif:string);
    function getnombre:string;
  public
    { Public declarations }
     CerrarDataset:boolean;
     ORDEN:STRING;
     VER:STRING;
    // la uso para cerrar fdlconductoes, pq esto lo utilizo en otros que
    // no son fdlconductores, y se queda abierto.
    // lo cierro por defecto, al menos que desde fdlgconductores le diga que
    // no.

    property codigo:string read GetFAMILIA write SetFAMILIA;
    property nombre:string read GetNombre;
  end;

var
  DLGALBARANAUX: TDLGALBARANAUX;


implementation

uses UDMGS, menu;

{$R *.DFM}
function TDLGALBARANAUX.GetNombre:string;
begin
  result := DMGS.CDSQ_MDALBARANAUXID_ALBARAN.AsString;
end;

procedure TDLGALBARANAUX.FormCreate(Sender: TObject);
begin
  if DMGS.CDSQ_MDALBARANAUX.active then
     DMGS.CDSQ_MDALBARANAUX.close;
  DSALBARAN.DataSet := DMGS.CDSQ_MDALBARANAUX;
  BOK.Enabled:=false;
//  son_datosexteriores:=false;
  CerrarDataset := true;
  ORDEN:=''; // SOLO MUESTRA LOS NO BORRADOS.
  VER:='';
  CADENA:='';
      with DMGS.CDSQ_MDALBARANAUX do
      BEGIN
        Close;
        DMGS.ALABGRID := ' WHERE (ID_ALBARAN LIKE (''%'')) and id_empresa='+fmenu.id_empresa+' '+VER ;
        DMGS.ALABGRTIPO := '2';
        DMGS.ALABGRORDENLINEA := ORDENLINEAALBARAN;
        Open;
       END;
       ANTERIOR:='%';

end;
procedure TDLGALBARANAUX.FormDestroy(Sender: TObject);
begin
// esto hace falta pq uso cdsq_fdlgconductores en fconductores
// y si dsfdlgconductores apunta a cdsq_fdlgconductores cuando cambia
// de datos llama a la funcion que hay en el formulario fdlgconductor
 dsALBARAN.DataSet := nil;
// si lo llamo de fconductor hay que poner esta variable a false
 if CerrarDataset then
    DMGS.CDSQ_MDALBARANAUX.close;

end;


procedure TDLGALBARANAUX.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
IF DMGS.CDSQ_MDALBARANAUX.EOF  THEN
try // para evitar el error de memoria bloqueada en el server.
    DMGS.CDSQ_MDALBARANAUX.GetNextPacket;
except
end;
end;

procedure TDLGALBARANAUX.DSALBARANDataChange(Sender: TObject;
  Field: TField);
begin
if ((DMGS.CDSQ_MDALBARANAUX.Eof)AND (NOT (DMGS.CDSQ_MDALBARANAUX.STATE IN [DSEDIT,DSINSERT]))) then
try // para evitar el error de memoria bloqueada en el server.    DMGS.CDSQ_MDALBARANAUX.GetNextPacket;
except
end;
end;
procedure TDLGALBARANAUX.DBGrid1DblClick(Sender: TObject);
begin
    bok.click;
end;

procedure TDLGALBARANAUX.Edit1Exit(Sender: TObject);
begin
// OJO QUE NO FUNCIONA BIEN LA CONSULTA SI LE PONGO %
//      IF (TRIM(EDIT1.TEXT)='%') THEN
//         EDIT1.TEXT :='';
      with DMGS.CDSQ_MDALBARANAUX do
       IF NOT(TRIM(EDIT1.Text)='') 
       AND (ANTERIOR <> TRIM(EDIT1.TEXT))
       THEN
       BEGIN
        Close;
        DMGS.ALABGRID := ' WHERE (ID_ALBARAN LIKE ('''+TRIM(EDIT1.Text)+'%'')) and id_empresa='+fmenu.id_empresa+' ' +VER ;
        DMGS.ALABGRTIPO := '2';
        DMGS.ALABGRORDENLINEA := ORDENLINEAALBARAN;

//        DMGS.PRBGRORDEN := ORDEN;
        Open;
 //       DMGS.CDSQ_MDLINPRESUPUESTO.Open;
       END;
     ANTERIOR:=TRIM(EDIT1.Text);
     BOK.Enabled := TRUE;
end;

procedure TDLGALBARANAUX.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
    BEGIN
        Perform(WM_NextDLGCtl, 0, 0);
        key:=#0;
    END;
end;
procedure TDLGALBARANAUX.FormShow(Sender: TObject);
begin
   EDIT1.SetFocus;
end;

procedure TDLGALBARANAUX.Edit1Enter(Sender: TObject);
begin
    //BOK.Enabled := FALSE;
end;

procedure TDLGALBARANAUX.bcancelarClick(Sender: TObject);
begin
  if DMGS.CDSQ_MDALBARANAUX.active then
     DMGS.CDSQ_MDALBARANAUX.Close;
//  SI CONDUCTORES USA ALGUN CDSDATASET, CERRARLO AQUI.
  modalresult:= mrCancel;
end;
function TDLGALBARANAUX.GetFAMILIA:string;
begin
    result:=DMGS.CDSQ_MDALBARANAUXID_ALBARAN.asstring;
end;

//***********************************************************
//***********************************************************
procedure TDLGALBARANAUX.SetFAMILIA(nif:string);
begin
end;
procedure TDLGALBARANAUX.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
end;
//************************************************************************


procedure TDLGALBARANAUX.ToolButton1Click(Sender: TObject);
begin
{      with DMGS.CDSQ_MDALBARANAUX do
       IF NOT(TRIM(EDIT1.Text)='') THEN
       BEGIN
        Close;
        DMGS.ARBGRIDARTICULO  :=TRIM(EDIT1.Text);
        DMGS.ARBGRORDEN := ' ORDER BY COD_FAMILIA,COD_ARTICULO,ID_ARTICULO ';
        dmgs.arbgrtipo := '1';
        Open;
       END;
     BOK.Enabled := TRUE;
}
end;

procedure TDLGALBARANAUX.ToolButton2Click(Sender: TObject);
begin
{      with DMGS.CDSQ_MDALBARANAUX do
       IF NOT(TRIM(EDIT1.Text)='') THEN
       BEGIN
        Close;
        DMGS.ARBGRIDARTICULO  :=TRIM(EDIT1.Text);
        DMGS.ARBGRORDEN := ' ORDER BY COD_ARTICULO,COD_FAMILIA,ID_ARTICULO ';
        dmgs.arbgrtipo := '1';
        Open;
       END;
     BOK.Enabled := TRUE;
}
end;

procedure TDLGALBARANAUX.ToolButton3Click(Sender: TObject);
begin
{      with DMGS.CDSQ_MDALBARANAUX do
       IF NOT(TRIM(EDIT1.Text)='') THEN
       BEGIN
        Close;
        DMGS.ARBGRIDARTICULO  :=TRIM(EDIT1.Text);
        DMGS.ARBGRORDEN := ' ORDER BY descripcion ';
        dmgs.arbgrtipo := '1';
        Open;
       END;
     BOK.Enabled := TRUE;
}
end;



procedure TDLGALBARANAUX.TODOS1Click(Sender: TObject);
begin
   TODOS1.Checked := TRUE;
   NOCOBRADOS1.Checked := FALSE;
   COBRADOS1.Checked := FALSE;
   if ver <> '' then
   BEGIN
      ver := '';
      EDIT1EXIT(SENDER);
   END;
end;

procedure TDLGALBARANAUX.NOCOBRADOS1Click(Sender: TObject);
begin
   TODOS1.Checked := FALSE;
   NOCOBRADOS1.Checked := TRUE;
   COBRADOS1.Checked := FALSE;
   if ver <> ' AND TOTAL_COBRADO<BASE_ALBARAN ' THEN // AND TOTAL_COBRADO<>0 ' then
   BEGIN
      ver := ' AND TOTAL_COBRADO<BASE_ALBARAN ';// AND TOTAL_COBRADO<>0 ';
      EDIT1EXIT(SENDER);
   END
end;

procedure TDLGALBARANAUX.COBRADOS1Click(Sender: TObject);
begin
   TODOS1.Checked := FALSE;
   NOCOBRADOS1.Checked := FALSE;
   COBRADOS1.Checked := TRUE;
   if ver <> ' AND BASE_ALBARAN<=TOTAL_COBRADO AND TOTAL_COBRADO<>0 ' then
   BEGIN
      ver := ' AND BASE_ALBARAN<=TOTAL_COBRADO AND TOTAL_COBRADO<>0 ';
      EDIT1EXIT(SENDER);
   END;
end;

procedure TDLGALBARANAUX.FormKeyPress(Sender: TObject; var Key: Char);
begin
   IF ((NOT (DMGS.CDSQ_MDALBARANAUX.State IN [DSEDIT,DSINSERT]))
   AND (DMGS.CDSQ_MDALBARANAUX.ACTIVE)) THEN
   BEGIN
//       AUXI := ORD(KEY);
       IF (ORD(KEY)) > 20 THEN
          CADENA := CADENA + KEY;
       LABEL2.Caption := CADENA;
       IF CADENA <> '' THEN
       BEGIN
        WHILE (NOT (DMGS.CDSQ_MDALBARANAUX.Locate('NOMBRECLIENTE',CADENA,[loPartialKey])))
           AND (NOT(DMGS.CDSQ_MDALBARANAUX.EOF))
        DO
        BEGIN
         DMGS.CDSQ_MDALBARANAUX.LAST;
         IF DMGS.CDSQ_MDALBARANAUX.Eof THEN
          try // para evitar el error de memoria bloqueada en el server.
            DMGS.CDSQ_MDALBARANAUX.GetNextPacket ;
          except
          end;
        END;
       END;
       BOK.Enabled := TRUE;
    END
    ELSE
      CADENA:= '';
end;

procedure TDLGALBARANAUX.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    IF NOT ( DMGS.CDSQ_MDALBARANAUX.STATE IN [DSEDIT,DSINSERT]) THEN
       IF (KEY = 8) THEN
        BEGIN
           IF LENGTH(CADENA) > 0 THEN
             CADENA := COPY(CADENA,1,LENGTH(CADENA)-1);
           LABEL2.Caption := CADENA;
        END;
end;

procedure TDLGALBARANAUX.DSALBARANStateChange(Sender: TObject);
begin
   CADENA:='';
end;

end.


