unit TARIFAS;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DBCtrls, StdCtrls, Buttons, ExtCtrls, Menus, Mask, db, DBTables,
  OleCtrls, Grids, DBGrids;

type
  TFTARIFAS = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    BSalir: TBitBtn;
    Menu: TMainMenu;
    TARIFAS1: TMenuItem;
    PDatos: TPanel;
    DSTARIFAS: TDataSource;
    ALTAS1: TMenuItem;
    BAJAS1: TMenuItem;
    CONSULTAS1: TMenuItem;
    LISTADO1: TMenuItem;
    N1: TMenuItem;
    SALIR1: TMenuItem;
    REGISTRO1: TMenuItem;
    PRIMERO1: TMenuItem;
    ANTERIOR1: TMenuItem;
    SIGUIENTE1: TMenuItem;
    ULTIMO1: TMenuItem;
    DBNavigator1: TDBNavigator;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    Label4: TLabel;
    DBEdit4: TDBEdit;
    Label12: TLabel;
    DBEdit12: TDBEdit;
    MASCLIENTES: TTable;
    MASCLIENTESNIF: TStringField;
    MASCLIENTESNOMBRE: TStringField;
    MASCLIENTESID_FORMA_PAGO: TStringField;
    MASCLIENTESTELEFONO_1: TStringField;
    MASCLIENTESTELEFONO_2: TStringField;
    MASCLIENTESPOBLACION: TStringField;
    MASCLIENTESPROVINCIA: TStringField;
    MASCLIENTESCOD_POST: TStringField;
    DSMASCLIENTES: TDataSource;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
    DBText1: TDBText;
    DBText2: TDBText;
    DBText3: TDBText;
    DBText4: TDBText;
    DBText5: TDBText;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    Label29: TLabel;
    MASOBRAS: TTable;
    Label30: TLabel;
    Label31: TLabel;
    DBText6: TDBText;
    DBText7: TDBText;
    Label32: TLabel;
    N4: TMenuItem;
    IMPRIMIR1: TMenuItem;
    Panel9: TPanel;
    Panel10: TPanel;
    Label11: TLabel;
    DBText10: TDBText;
    Label5: TLabel;
    DBEdit5: TDBEdit;
    Label7: TLabel;
    DBText9: TDBText;
    BAltas: TButton;
    BConsultas: TButton;
    BListado: TButton;
    BBajas: TButton;
    BModificaciones: TButton;
    MASCLIENTESDIRECCION: TStringField;
    MASCLIENTESFECHA_ALTA: TDateField;
    DBEdit7: TDBEdit;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure BAltasClick(Sender: TObject);
    procedure BConsultasClick(Sender: TObject);
    procedure BBajasClick(Sender: TObject);
    procedure BModificacionesClick(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure BSalirClick(Sender: TObject);
    procedure DSTARIFASStateChange(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure REGISTRO1Click(Sender: TObject);
    procedure PRIMERO1Click(Sender: TObject);
    procedure ANTERIOR1Click(Sender: TObject);
    procedure SIGUIENTE1Click(Sender: TObject);
    procedure ULTIMO1Click(Sender: TObject);
    procedure TARIFAS1Click(Sender: TObject);
    procedure DBEdit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBEdit4KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ESPECIFICAS1Click(Sender: TObject);
    procedure DESCUENTO1Click(Sender: TObject);
    procedure TODAS1Click(Sender: TObject);
    procedure BListadoClick(Sender: TObject);
    procedure BimprimirClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure DBEdit2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Button1Click(Sender: TObject);
    procedure DBEdit7KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure GENERICAS1Click(Sender: TObject);

  private
    { Private declarations }
    procedure EstadoBotones;

  public
    { Public declarations }
  end;

var
  FTARIFAS: TFTARIFAS;

implementation

uses DATOS, FDLGCLIENTE, RUTINAS, FDLGOBRAS,
  FDLGFORMULAS, FDLGPLANTAS, FDLGTARIFAS;

{$R *.DFM}

procedure TFTARIFAS.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//    dlgformulas.free;
    dm.tarifas.filter:='';
    dm.tarifas.filtered:=false;
    dm.dbh.closedatasets;
end;

procedure TFTARIFAS.FormShow(Sender: TObject);
begin
dlgplantas:=TDLGPLANTAS.Create(nil);
dlgtarifas:=TDLGTARIFAS.create(nil);
dlgobras:=TDLGOBRAS.create(nil);
dlgcliente:=TDlgCliente.create(nil);
dlgformulas:=TDLGFORMULAS.create(nil);
    dm.plantas.open;
    masclientes.open;
    masobras.open;
    dm.obras.open;
    dm.clientes.open;
    dm.plantas.open;
    dm.lkplantas.open; // Para las consultas.
    dm.dosificaciones.open;
    dm.tarifas.open;
    dm.tarifas.filtered:=true;
    todas1click(self);
    EstadoBotones;

    //Para la Consulta.
    dm.lkplantas.open;
    dm.lkclientes.open;
    dlgtarifas.masobras.open;
    dlgtarifas.mastarifas.open;

end;

procedure TFTARIFAS.BAltasClick(Sender: TObject);
begin
    dm.tarifas.append;
    dbedit2.setfocus;
end;

procedure TFTARIFAS.BConsultasClick(Sender: TObject);
var posaux:TBookmark;
    codigo:tcodigotar;
begin
    posaux:=dm.tarifas.getbookmark;
    codigo.id_planta:=dm.tarifasid_planta.asstring;
    codigo.id_area:=dm.tarifasid_area.asstring;
    codigo.id_sociedad:=dm.tarifasid_sociedad.asstring;
    codigo.nif:=dm.tarifasnif.asstring;
    codigo.id_obra:=dm.tarifasid_obra.asstring;
    codigo.id_formula:=dm.tarifasid_formula.asstring;
    codigo.designacion:=dm.tarifasdesignacion.asstring;
    DlgTarifas.codigotar:=codigo;
    if DlgTarifas.Showmodal<> mrok then dm.tarifas.gotobookmark(posaux)
        else
        begin
             codigo:=dlgtarifas.codigotar;
             dm.tarifas.locate('id_planta;id_area;id_sociedad;nif;id_obra;id_formula;designacion',vararrayof([codigo.id_planta,codigo.id_area,codigo.id_sociedad,codigo.nif,codigo.id_obra,codigo.id_formula,codigo.designacion]),[locaseinsensitive]);
        end;
    dm.tarifas.freebookmark(posaux);
end;

procedure TFTARIFAS.BBajasClick(Sender: TObject);
begin
    if ((dm.tarifas.recordcount>0) or (dm.tarifas.state in [dsedit,dsinsert])) then
    begin
       dm.tarifas.delete;
    end;
end;

procedure TFTARIFAS.BModificacionesClick(Sender: TObject);
begin
    if dm.tarifas.recordcount>0 then
    begin
        dm.tarifas.edit;
        dbedit2.setfocus;
    end;
end;

procedure TFTARIFAS.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
        if (uppercase(activecontrol.name)='DBEDIT12')   then dm.tarifas.post;
        Perform(WM_NextDLGCtl, 0, 0);
        key:=#0;
    end;

    if not (activeControl is TDBEdit) then
    begin
       if uppercase(key)='A' then if BAltas.enabled then BAltas.click;
       if uppercase(key)='B' then if BBajas.enabled then BBajas.click;
       if uppercase(key)='C' then if BConsultas.enabled then BConsultas.click;
       if uppercase(key)='M' then if BModificaciones.enabled then BModificaciones.click;
       if uppercase(key)='L' then if BListado.enabled then BListado.click;
    end;

    if (key = #27) and not (dm.tarifas.state in [dsedit,dsinsert]) then close;

    if (key = #27) and not (ActiveControl is TButton) then
        if dm.tarifas.state in [dsedit,dsinsert] then dm.tarifas.post;

end;

procedure TFTARIFAS.BSalirClick(Sender: TObject);
begin
    close;
end;

procedure TFTARIFAS.DSTARIFASStateChange(Sender: TObject);
 begin
    PDatos.enabled:=dm.tarifas.state in [dsedit,dsinsert];
    EstadoBotones;
end;

procedure TFTARIFAS.EstadoBotones;
begin
    BAltas.enabled:=dm.tarifas.state=dsbrowse;
    BListado.enabled:=dm.tarifas.state=dsbrowse;
    BConsultas.enabled:=dm.tarifas.state=dsbrowse;
    BBajas.enabled:=dm.tarifas.state=dsbrowse;
    BModificaciones.enabled:=dm.tarifas.state=dsbrowse;
end;

procedure TFTARIFAS.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if key=38 then CambiarControl(self,false);
    if key=40 then CambiarControl(self,true);
end;

procedure TFTARIFAS.REGISTRO1Click(Sender: TObject);
begin
    primero1.enabled:=dm.tarifas.bof=false;
    anterior1.enabled:=primero1.enabled;
    siguiente1.enabled:=dm.tarifas.eof=false;
    ultimo1.enabled:=siguiente1.enabled;
end;

procedure TFTARIFAS.PRIMERO1Click(Sender: TObject);
begin
   dm.tarifas.first;
end;

procedure TFTARIFAS.ANTERIOR1Click(Sender: TObject);
begin
    dm.tarifas.Prior;
end;

procedure TFTARIFAS.SIGUIENTE1Click(Sender: TObject);
begin
    dm.tarifas.next;
end;

procedure TFTARIFAS.ULTIMO1Click(Sender: TObject);
begin
    dm.tarifas.last;
end;

procedure TFTARIFAS.TARIFAS1Click(Sender: TObject);
begin
    altas1.enabled:=baltas.enabled;
    bajas1.enabled:=bbajas.enabled;
    consultas1.enabled:=bconsultas.enabled;
//    modificaciones1.enabled:=bmodificaciones.enabled;
    listado1.enabled:=blistado.enabled;

    // ¿Se ha hecho la carga?
end;

procedure TFTARIFAS.DBEdit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if key=112 then
    begin
        dlgcliente.cliente:=dm.tarifasnif.asstring;
        if DlgCliente.Showmodal=mrok then
        begin
            dm.tarifasnif.asstring:=DlgCliente.cliente;
            perform(wm_nextdlgctl,0,0);
        end;
    end;
end;

procedure TFTARIFAS.DBEdit4KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if key=112 then
    begin
        if not(dm.tarifasnif.isnull) then
        begin
           dm.obras.filter:='nif='+''''+dm.tarifasnif.asstring+'''';
           dm.obras.filtered:=true;
           if dm.obras.recordcount>0 then
           begin
               dlgobras.codigo:=dm.tarifasid_obra.asstring;
               if DlgObras.Showmodal=mrok then
               begin
                   dm.tarifasid_obra.asstring:=Dlgobras.codigo;
                   perform(wm_nextdlgctl,0,0);
               end;
           end
           else showmessage('No hay obras de este Cliente');
           dm.obras.filter:='';
           dm.obras.filtered:=false;
        end
        else showmessage('Debe elegir antes un Cliente');
    end;
end;

procedure TFTARIFAS.ESPECIFICAS1Click(Sender: TObject);
begin
    dm.tarifas.filter:='TIPO='+''''+'ESPECIFICO'+'''';
    especificas1.checked:=true;
end;

procedure TFTARIFAS.DESCUENTO1Click(Sender: TObject);
begin
    dm.tarifas.filter:='TIPO='+''''+'DESCUENTO EN OBRA'+'''';
    descuento1.checked:=true;
end;

procedure TFTARIFAS.TODAS1Click(Sender: TObject);
begin
    dm.tarifas.filter:='';
    TODAS1.checked:=true;
end;

procedure TFTARIFAS.BListadoClick(Sender: TObject);
begin
  { LISTADO }
end;

procedure TFTARIFAS.BimprimirClick(Sender: TObject);
begin
    { IMPRIMIR}
end;

procedure TFTARIFAS.Button2Click(Sender: TObject);
begin
    dm.tarifas.delete;
end;

procedure TFTARIFAS.DBEdit2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var auxcodigo:t_planta;
  begin
    if key=112 then
    begin
        auxcodigo.planta:=dm.tarifasid_planta.asstring;
        auxcodigo.area:=dm.tarifasid_area.asstring;
        auxcodigo.sociedad:=dm.tarifasid_sociedad.asstring;
        dlgplantas.codigo:=auxcodigo;
        if (DlgPlantas.Showmodal=mrok) and not(dm.plantasid_planta.isnull) then
        begin
            dm.tarifasid_planta.asstring:=dlgplantas.codigo.planta;
            dm.tarifasid_area.asstring:=dlgplantas.codigo.area;
            dm.tarifasid_sociedad.asstring:=dlgplantas.codigo.sociedad;
            dbedit1.setfocus;
        end
        else perform(wm_nextdlgctl,0,0);
    end;
end;

procedure TFTARIFAS.Button1Click(Sender: TObject);
begin
   dm.tarifas.edit;
end;

procedure TFTARIFAS.DBEdit7KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var formula:t_codigoformula;
begin
    if key=112 then
    begin
        formula.codigo:=dm.tarifasid_formula.asstring;
        formula.designacion:=dm.tarifasdesignacion.asstring;
        dlgformulas.codigo:=formula;
        if Dlgformulas.Showmodal=mrok then
        begin
            dm.tarifasid_formula.asstring:=DlgFormulas.codigo.codigo;
            dm.tarifasdesignacion.asstring:=DlgFormulas.codigo.designacion;
            perform(wm_nextdlgctl,0,0);
        end;
    end;

end;

procedure TFTARIFAS.GENERICAS1Click(Sender: TObject);
begin
    dm.tarifas.filter:='TIPO='+''''+'GENERICO'+'''';
    genericas1.checked:=true;
end;


end.

