unit FDLGARTICULOSaux;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ExtCtrls, Grids, DBGrids, Db, DBCtrls, ImgList,
  ComCtrls, ToolWin,tiposdefinidos,MATH,RUTINAS;

type
  Tdlgarticulosaux = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    bcancelar: TBitBtn;
    bok: TBitBtn;
    DBGrid1: TDBGrid;
    DSARTICULOS: TDataSource;
    DBNavigator1: TDBNavigator;
    Panel3: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: 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 DSARTICULOSDataChange(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 Edit2DblClick(Sender: TObject);
    procedure Edit2Exit(Sender: TObject);
    procedure Edit2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure DBGrid1TitleClick(Column: TColumn);
  private
    { Private declarations }
    ANTERIOR:STRING;
    f1entra:boolean;
    function GetFAMILIA:string;
    procedure SetFAMILIA(nif:string);
    function getnombre:string;
    FUNCTION GETDESCRIPCION:STRING;
    FUNCTION GETPRECIO:STRING;
    FUNCTION GETIVA:STRING;
    FUNCTION GETMARCA:STRING;
    procedure familia;
    function GETPRECIO2: STRING;
  public
    { Public declarations }
     CerrarDataset:boolean;
     ORDEN: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.
     Vid_proveedor:string;
     Es_entrada:boolean;

    property codigo:string read GetFAMILIA write SetFAMILIA;
    property nombre:string read GetNombre;
    PROPERTY DESCRIPCION:STRING READ GETDESCRIPCIOn;
    PROPERTY PRECIO:STRING READ GETPRECIO;
    PROPERTY PRECIO2:STRING READ GETPRECIO2;
    PROPERTY IVA:STRING READ GETIVA;
    PROPERTY MARCA:STRING READ GETMARCA;    
  end;

var
  dlgarticulosaux: Tdlgarticulosaux;


implementation

uses UDMGS, FARTICULOS, FDLGFAMILIASAUX, menu;

{$R *.DFM}
function Tdlgarticulosaux.GetNombre:string;
begin
  result := DMGS.cdsq_ARTICULOSAUXID_ARTICULO.AsString;
end;
function Tdlgarticulosaux.GETDESCRIPCION:string;
begin
  result := DMGS.cdsq_ARTICULOSAUXDESCRIPCION.AsString;
end;
function Tdlgarticulosaux.GETPRECIO:STRING;
begin
  result := floattostr(ROUNDTO(DMGS.CDSQ_ARTICULOSAUXPRECIO_VENTA.AsFloat,DMGS.DECIMALES));
end;
function Tdlgarticulosaux.GETIVA:STRING;
begin
  result := DMGS.CDSQ_ARTICULOSAUXIVA.ASSTRING;
end;
function TdlgarticulosaUX.GETMARCA:STRING;
begin
  result := DMGS.CDSQ_ARTICULOSAUXMARCA.ASSTRING;
end;





procedure Tdlgarticulosaux.FormCreate(Sender: TObject);
begin

  Vid_proveedor := '';
  Es_entrada := false;

  try
    dbgrid1.Columns.loadfromfile(FMENU.PATHDBGRID +'\'+SELF.Name);
  except
  end;


  if DMGS.cdsq_ARTICULOSAUX.active then
     DMGS.cdsq_ARTICULOSAUX.close;
  dsARTICULOS.DataSet := DMGS.cdsq_ARTICULOSAUX;
  BOK.Enabled:=false;
//  son_datosexteriores:=false;
  CerrarDataset := true;
  ORDEN:=''; // SOLO MUESTRA LOS NO BORRADOS.
  label3.Caption := '';
  f1entra:=false;

end;

procedure Tdlgarticulosaux.FormDestroy(Sender: TObject);
begin

  try
    dbgrid1.Columns.SAVETOfile(FMENU.PATHDBGRID +'\'+SELF.Name);
  except
  end;


// 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
 dsARTICULOS.DataSet := nil;
// si lo llamo de fconductor hay que poner esta variable a false
 if CerrarDataset then
    DMGS.cdsq_ARTICULOSAUX.close;

end;


procedure Tdlgarticulosaux.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
IF DMGS.cdsq_ARTICULOSAUX.EOF  THEN
try // para evitar el error de memoria bloqueada en el server.
    DMGS.cdsq_ARTICULOSAUX.GetNextPacket;
except
end;
end;

procedure Tdlgarticulosaux.DSARTICULOSDataChange(Sender: TObject;
  Field: TField);
begin
if ((DMGS.cdsq_ARTICULOSAUX.Eof)AND (NOT (DMGS.cdsq_ARTICULOSAUX.STATE IN [DSEDIT,DSINSERT]))) then
try // para evitar el error de memoria bloqueada en el server.
    DMGS.cdsq_ARTICULOSAUX.GetNextPacket;
except
end;
end;
procedure Tdlgarticulosaux.DBGrid1DblClick(Sender: TObject);
begin
    bok.click;
end;

procedure Tdlgarticulosaux.Edit1Exit(Sender: TObject);
begin
      with DMGS.cdsq_ARTICULOSAUX do
       IF NOT(TRIM(EDIT1.Text)='')
//       AND (ANTERIOR<>TRIM(EDIT1.Text))
       THEN
       BEGIN
{        if trim(edit2.text) <> '' then
        begin
           dmgs.VARTICULOSAUX.TIPO := '3';
           dmgs.VARTICULOSAUX.ID1 := edit2.Text;
        end
        else



}
        Close;
        DMGS.VARTICULOSAUX.ORDEN :=  ORDEN;//' ORDER BY ID_ARTICULO ';
        DMGS.VARTICULOSAUX.BORRADO := '0';
        if Es_entrada then
        begin
         IF TRIM(EDIT1.TEXT) = '' THEN
         BEGIN
          DMGS.VARTICULOSAUX.ID   :=' where id_proveedor='+Vid_proveedor+' AND CHAR(BORRADO) LIKE ('''+DMGS.VARTICULOSAUX.borrado+'%'')  ';
//' WHERE (ID_ARTICULO LIKE ('''+REGISTRO.ID+'%'')  OR DESCRIPCION LIKE ('''+REGISTRO.ID+'%'')  OR ART_PROVEEDOR LIKE ('''+REGISTRO.ID+'%'')) AND CHAR(BORRADO) LIKE ('''+REGISTRO.BORRADO+'%'') '
          dmgs.VARTICULOSAUX.TIPO := '4';
          ANTERIOR:=' where id_proveedor='+Vid_proveedor+' ';
         END
         ELSE
         BEGIN
          DMGS.VARTICULOSAUX.ID   :=' where (id_proveedor='+Vid_proveedor+' or almacenable<>1) AND CHAR(BORRADO) LIKE ('''+DMGS.VARTICULOSAUX.borrado+'%'') AND (ID_ARTICULO LIKE ('''+TRIM(EDIT1.TEXT)+'%'')  OR DESCRIPCION LIKE ('''+TRIM(EDIT1.TEXT)+'%'')) ';
//' WHERE (ID_ARTICULO LIKE ('''+REGISTRO.ID+'%'')  OR DESCRIPCION LIKE ('''+REGISTRO.ID+'%'')  OR ART_PROVEEDOR LIKE ('''+REGISTRO.ID+'%'')) AND CHAR(BORRADO) LIKE ('''+REGISTRO.BORRADO+'%'') '
          dmgs.VARTICULOSAUX.TIPO := '4';
          ANTERIOR:=' where id_proveedor='+Vid_proveedor+' ';
         END
        end
        else
        begin
          DMGS.VARTICULOSAUX.ID   :=TRIM(EDIT1.Text);
          dmgs.VARTICULOSAUX.TIPO := '1';
          ANTERIOR:=TRIM(EDIT1.Text);
        end;
         Open;
       END
       ELSE
          CLOSE;
     BOK.Enabled := TRUE;

end;

procedure Tdlgarticulosaux.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
    BEGIN
        Perform(WM_NextDLGCtl, 0, 0);
        key:=#0;
    END;
end;
procedure Tdlgarticulosaux.FormShow(Sender: TObject);
begin
//   EDIT2.SetFocus;
   EDIT1.SetFocus;
   IF ORDEN = '' THEN
//     ORDEN := ' ORDER BY DESCRIPCION';
      orden:= ordenarticulos;

  with DMGS.cdsq_ARTICULOSAUX do
  BEGIN
        Close;
        DMGS.VARTICULOSAUX.ORDEN :=  ORDEN;//' ORDER BY ID_ARTICULO ';
        DMGS.VARTICULOSAUX.BORRADO := '0';
        if Es_entrada then
        begin
          DMGS.VARTICULOSAUX.ID   :=' where (ID_ARTICULO LIKE (''%%'')  OR DESCRIPCION LIKE (''%%'')  OR ART_PROVEEDOR LIKE (''%%'')) and (id_proveedor='+Vid_proveedor+' or almacenable<>1) AND CHAR(BORRADO) LIKE ('''+DMGS.VARTICULOSAUX.BORRADO+'%'')  ';
//' WHERE (ID_ARTICULO LIKE ('''+REGISTRO.ID+'%'')  OR DESCRIPCION LIKE ('''+REGISTRO.ID+'%'')  OR ART_PROVEEDOR LIKE ('''+REGISTRO.ID+'%'')) AND CHAR(BORRADO) LIKE ('''+REGISTRO.BORRADO+'%'') '
          dmgs.VARTICULOSAUX.TIPO := '4';
          ANTERIOR:=' where id_proveedor='+Vid_proveedor+' ';
        end
        else
        begin
          DMGS.VARTICULOSAUX.ID   :='%';
          dmgs.VARTICULOSAUX.TIPO := '1';
          ANTERIOR:=TRIM(EDIT1.Text);
        end;
        Open;
  END;
  ANTERIOR:='';

end;

procedure Tdlgarticulosaux.Edit1Enter(Sender: TObject);
begin
  BOK.Enabled := FALSE;
end;

procedure Tdlgarticulosaux.bcancelarClick(Sender: TObject);
begin
  if DMGS.cdsq_ARTICULOSAUX.active then
     DMGS.cdsq_ARTICULOSAUX.Close;
//  SI CONDUCTORES USA ALGUN CDSDATASET, CERRARLO AQUI.
  modalresult:= mrCancel;
end;
function Tdlgarticulosaux.GetFAMILIA:string;
begin
    result:=DMGS.cdsq_ARTICULOSAUXID_ARTICULO.asstring;
end;

//***********************************************************
//***********************************************************
procedure Tdlgarticulosaux.SetFAMILIA(nif:string);
begin
end;
procedure Tdlgarticulosaux.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
end;
//************************************************************************


procedure Tdlgarticulosaux.ToolButton1Click(Sender: TObject);
begin
{      with DMGS.cdsq_ARTICULOSAUX 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 Tdlgarticulosaux.ToolButton2Click(Sender: TObject);
begin
{      with DMGS.cdsq_ARTICULOSAUX 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 Tdlgarticulosaux.ToolButton3Click(Sender: TObject);
begin
{      with DMGS.cdsq_ARTICULOSAUX 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 Tdlgarticulosaux.Edit2DblClick(Sender: TObject);
begin
  f1entra:=true;
  familia;
end;

procedure Tdlgarticulosaux.Edit2Exit(Sender: TObject);
begin
 if (trim(edit2.text) <> '')
 and (not f1entra)
 then
  with dmgs.cdsq_nombre do
  begin
    close;
    dmgs.cdsq_nombre.CommandText := ' select descripcion as nombre from familias where cod_familia='''+edit2.text+''' ';
    open;
    label3.Caption := dmgs.cdsq_nombrenombre.AsString;
    close;
  end
 else
  if trim(edit2.text) = '' then
   label3.caption := '';
 f1entra:= false;
end;

procedure Tdlgarticulosaux.Edit2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=112 then
  begin
    f1entra:= true;
    familia;
  end
  else
    f1entra := false;

end;
procedure tdlgarticulosaux.familia;
begin
    DLGFAMILIASAUX:=tDLGFAMILIASAUX.create(nil);
    IF DLGFAMILIASAUX.Showmodal= MROK THEN
    BEGIN
       IF DMGS.CDSQ_FAMILIASAUX.RecordCount > 0 THEN
       begin
          edit2.Text  := DMGS.CDSQ_FAMILIASAUXCOD_FAMILIA.ASSTRING ;
          label3.Caption := dmgs.cdsq_familiasauxdescripcion.AsString;
          Perform(WM_NextDLGCtl, 0, 0);
       END;
    END
    else
       label3.Caption := '';
    DLGFAMILIASAUX.Free;
    DLGFAMILIASAUX := nil;
end;

procedure Tdlgarticulosaux.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
    BEGIN
        Perform(WM_NextDLGCtl, 0, 0);
        key:=#0;
    END;
end;

procedure Tdlgarticulosaux.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if key=38 then
      IF DMGS.CDSQ_ARTICULOSAUX.RecNo = 1 THEN
         EDIT1.SetFocus; 
end;

procedure Tdlgarticulosaux.DBGrid1MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
VAR
  PT :TGRIDCOORD;
begin
  PT := DBGRID1.MouseCoord(X,Y);
  IF PT.Y=0 THEN
     DBGRID1.Cursor := CRHANDPOINT
  ELSE
     DBGRID1.Cursor := CRDEFAULT;
END;

procedure Tdlgarticulosaux.DBGrid1TitleClick(Column: TColumn);
var aux:string;
begin
// CON ESTA FUNCION ORDENO ASCENDENTE Y DESCENDENTE LAS COLUMNAS
// AL PULSAR SOBRE EL TITULO
 aux := uppercase(column.Field.Name);
 IF AUX = 'CDSQ_ARTICULOSAUXID_ARTICULO' THEN
    IF dmgs.CDSQ_ARTICULOSAUX.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_ARTICULOSAUX.IndexFIELDNameS := 'ID_ARTICULO' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_ARTICULOSAUX.IndexName := 'ID_ARTICULOINDEX'; // ORDENA DESCENDENTE

 IF AUX = 'CDSQ_ARTICULOSAUXMARCA' THEN
    IF dmgs.CDSQ_ARTICULOSAUX.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_ARTICULOSAUX.IndexFIELDNameS := 'MARCA' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_ARTICULOSAUX.IndexName := 'MARCAINDEX'; // ORDENA DESCENDENTE

 IF AUX = 'CDSQ_ARTICULOSAUXDESCRIPCION' THEN
    IF dmgs.CDSQ_ARTICULOSAUX.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_ARTICULOSAUX.IndexFIELDNameS := 'DESCRIPCION' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_ARTICULOSAUX.IndexName := 'DESCRIPCIONINDEX'; // ORDENA DESCENDENTE

 IF AUX = 'CDSQ_ARTICULOSAUXPRECIO_VENTA' THEN
    IF dmgs.CDSQ_ARTICULOSAUX.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_ARTICULOSAUX.IndexFIELDNameS := 'PRECIO_VENTA' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_ARTICULOSAUX.IndexName := 'PRECIO_VENTAINDEX'; // ORDENA DESCENDENTE

       
 IF AUX = 'CDSQ_ARTICULOSAUXNOMBREPROVEEDOR' THEN
    IF dmgs.CDSQ_ARTICULOSAUX.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_ARTICULOSAUX.IndexFIELDNameS := 'NOMBREPROVEEDOR' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_ARTICULOSAUX.IndexName := 'NOMBREPROVEEDORINDEX'; // ORDENA DESCENDENTE

 IF AUX = 'CDSQ_ARTICULOSAUXART_PROVEEDOR' THEN
    IF dmgs.CDSQ_ARTICULOSAUX.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_ARTICULOSAUX.IndexFIELDNameS := 'ART_PROVEEDOR' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_ARTICULOSAUX.IndexName := 'ART_PROVEEDORINDEX'; // ORDENA DESCENDENTE

 IF AUX = 'CDSQ_ARTICULOSAUXOBSERVACIONES' THEN
    IF dmgs.CDSQ_ARTICULOSAUX.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_ARTICULOSAUX.IndexFIELDNameS := 'OBSERVACIONES' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_ARTICULOSAUX.IndexName := 'OBSERVACIONESINDEX'; // ORDENA DESCENDENTE


END;

function Tdlgarticulosaux.GETPRECIO2: STRING;
begin
  result := floattostr(ROUNDTO(DMGS.CDSQ_ARTICULOSAUXPVP2.AsFloat,DMGS.DECIMALES));
end;

end.


