unit FDLGTARIFASAUX;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ExtCtrls, Grids, DBGrids, Db, DBCtrls, ImgList,
  ComCtrls, ToolWin,tiposdefinidos;

type
  TDLGTARIFASAUX = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    bcancelar: TBitBtn;
    bok: TBitBtn;
    DBGrid1: TDBGrid;
    DSTARIFASAUX: TDataSource;
    DBNavigator1: TDBNavigator;
    Panel3: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    ToolBar1: TToolBar;
    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 DSTARIFASAUXDataChange(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);
  private
    { Private declarations }
    ANTERIOR:STRING;
    artic:boolean;
    beneficio_min:boolean;
    function getarticulo:string;
    procedure SETarticulo(articulo:string);
    function getnombre:string;
  public
    { Public declarations }
     CerrarDataset:boolean;
     ORDEN:STRING;
     BENEFICIO : DOUBLE;
     beneficioempresa,transporte : double;
    // 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 articulo:string read getarticulo write setarticulo;
    property nombre:string read GetNombre;
  end;

var
  DLGTARIFASAUX: TDLGTARIFASAUX;


implementation

uses UDMGS, FTARIFAS, menu;

{$R *.DFM}
function TDLGTARIFASAUX.GetNombre:string;
begin
  result := DMGS.CDSQ_TARIFASAUXID_ARTICULO.AsString;
end;

procedure TDLGTARIFASAUX.FormCreate(Sender: TObject);
begin
  artic:=false;
  if DMGS.CDSQ_TARIFASAUX.active then
     DMGS.CDSQ_TARIFASAUX.close;
  dsTARIFASAUX.DataSet := DMGS.CDSQ_TARIFASAUX;
//  BOK.Enabled:=false;
//  son_datosexteriores:=false;
  CerrarDataset := true;
  ORDEN:=''; // SOLO MUESTRA LOS NO BORRADOS.
  beneficio_min:=false;
  beneficio:= 0;
  beneficioempresa := 0;
  WITH DMGS.CDSQ_EMPRESAAUX DO
  BEGIN
    Close;
    DMGS.VEMPRESASAUX.ID:= FMENU.ID_EMPRESA ;
    DMGS.VEMPRESASAUX.TIPO :='2';
    OPEN;
  END;
  IF DMGS.CDSQ_EMPRESAAUXBENEFICIO_MIN.Value = 1 THEN
  begin
     beneficioempresa :=DMGS.CDSQ_EMPRESAAUXBENEFICIO.ASFLOAT;
     beneficio_min:= true;
  end;
  if dmgs.CDSQ_EMPRESAAUXANYADIR_TRANS.Value = 1 then
     TRANSPORTE :=DMGS.CDSQ_EMPRESAAUXTRANS.ASFLOAT;

  DMGS.CDSQ_EMPRESAAUX.CLOSE;
  dmgs.RTARIFASAUX.beneficio := beneficio;
  dmgs.rtarifasaux.beneficioempresa := beneficioempresa;
  dmgs.RTARIFASaux.transporte := transporte;
  dmgs.RTARIFASaux.beneficio_min := beneficio_min;

end;

procedure TDLGTARIFASAUX.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
 dsTARIFASAUX.DataSet := nil;
// si lo llamo de fconductor hay que poner esta variable a false
 if CerrarDataset then
    DMGS.CDSQ_TARIFASAUX.close;

end;


procedure TDLGTARIFASAUX.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
IF DMGS.CDSQ_TARIFASAUX.EOF  THEN
try // para evitar el error de memoria bloqueada en el server.
    DMGS.CDSQ_TARIFASAUX.GetNextPacket;
except
end;
end;

procedure TDLGTARIFASAUX.DSTARIFASAUXDataChange(Sender: TObject;
  Field: TField);
begin
if ((DMGS.CDSQ_TARIFASAUX.Eof)AND (NOT (DMGS.CDSQ_TARIFASAUX.STATE IN [DSEDIT,DSINSERT]))) then
try // para evitar el error de memoria bloqueada en el server.
    DMGS.CDSQ_TARIFASAUX.GetNextPacket;
except
end;
end;
procedure TDLGTARIFASAUX.DBGrid1DblClick(Sender: TObject);
begin
    bok.click;
end;

procedure TDLGTARIFASAUX.Edit1Exit(Sender: TObject);
begin
      with DMGS.CDSQ_TARIFASAUX do
       IF NOT(TRIM(EDIT1.Text)='')
       AND (ANTERIOR <> TRIM(EDIT1.TEXT))
       THEN
       BEGIN
        Close;
        DMGS.VTARIFASAUX.ID  :=' WHERE NOMBRE LIKE ('''+TRIM(EDIT1.Text)+'%'') OR ART_PROVEEDOR LIKE ('''+TRIM(EDIT1.Text)+'%'')  '+ ORDEN;
        // EN EL CREATE IF ORDEN='' ENTONCE ORDEN=ORDENTARIFAS
//        DMGS.TABGRORDEN :=  ORDEN;//' ORDER BY ID_ARTICULO ';
        dmgs.VTARIFASAUX.TIPO := '2';
        Open;
       END;
       ANTERIOR := TRIM(EDIT1.TEXT);
//     BOK.Enabled := TRUE;
end;

procedure TDLGTARIFASAUX.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
    BEGIN
        Perform(WM_NextDLGCtl, 0, 0);
        key:=#0;
    END;
end;
procedure TDLGTARIFASAUX.FormShow(Sender: TObject);
begin
   if not artic then
   begin
     IF ORDEN = '' THEN
        orden:= ordenTARIFAS;
     with DMGS.CDSQ_TARIFASAUX do
     BEGIN
        Close;
        DMGS.VTARIFASAUX.ID  :=' WHERE NOMBRE LIKE (''%'') '+ ORDEN;
        dmgs.VTARIFASAUX.TIPO := '2';
        Open;
     END;
     ANTERIOR := '%';
     DBGRID1.SetFocus;
   end
   else
   begin
     edit1.enabled := false;
     dbgrid1.setfocus;
   end;
End;

procedure TDLGTARIFASAUX.Edit1Enter(Sender: TObject);
begin
    BOK.Enabled := FALSE;
end;

procedure TDLGTARIFASAUX.bcancelarClick(Sender: TObject);
begin
  if DMGS.CDSQ_TARIFASAUX.active then
     DMGS.CDSQ_TARIFASAUX.Close;
//  SI CONDUCTORES USA ALGUN CDSDATASET, CERRARLO AQUI.
  modalresult:= mrCancel;
end;
function TDLGTARIFASAUX.GetARTICULO:string;
begin
    result:=DMGS.CDSQ_TARIFASAUXID_ARTICULO.asstring;
end;

//***********************************************************
//***********************************************************
procedure TDLGTARIFASAUX.SETARTICULO(ARTICULO:string);
begin
      with DMGS.CDSQ_TARIFASAUX do
       BEGIN
        Close;
        DMGS.VTARIFASAUX.ID  :=' WHERE ID_ARTICULO='''+ ARTICULO+''' ORDER BY ID_PROVEEDOR ';
//        DMGS.TABGRORDEN :=  ORDEN;//' ORDER BY ID_ARTICULO ';
        dmgs.VTARIFASAUX.TIPO := '2';
        Open;
       END;
       ARTIC:= TRUE;
end;
procedure TDLGTARIFASAUX.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
end;
//************************************************************************


procedure TDLGTARIFASAUX.ToolButton1Click(Sender: TObject);
begin
{      with DMGS.CDSQ_TARIFASAUX 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 TDLGTARIFASAUX.ToolButton2Click(Sender: TObject);
begin
{      with DMGS.CDSQ_TARIFASAUX 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 TDLGTARIFASAUX.ToolButton3Click(Sender: TObject);
begin
{      with DMGS.CDSQ_TARIFASAUX 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;



end.


