unit FPROVEEDOR;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DBCtrls, StdCtrls, Buttons, ExtCtrls, Menus, Mask, db,TIPOSDEFINIDOS,
  ActnList, ImgList, ComCtrls, ToolWin;

type
  TPROVEEDOR = class(TForm)
    Menu: TMainMenu;
    PROVEEDORES1: TMenuItem;
    PDatos: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label6: TLabel;
    Label5: TLabel;
    Label12: TLabel;
    Label9: TLabel;
    DSPROVEEDOR: TDataSource;
    ALTAS1: TMenuItem;
    BAJAS1: TMenuItem;
    CONSULTAS1: TMenuItem;
    MODIFICACIONES1: TMenuItem;
    LISTADO1: TMenuItem;
    N1: TMenuItem;
    SALIR1: TMenuItem;
    REGISTRO1: TMenuItem;
    PRIMERO1: TMenuItem;
    ANTERIOR1: TMenuItem;
    SIGUIENTE1: TMenuItem;
    DBEdit6: TDBEdit;
    DBEdit10: TDBEdit;
    DBEdit11: TDBEdit;
    DBEdit12: TDBEdit;
    DBEdit13: TDBEdit;
    DBEdit14: TDBEdit;
    VER1: TMenuItem;
    ODOS1: TMenuItem;
    NOBORRADOS1: TMenuItem;
    Label4: TLabel;
    ToolBar1: TToolBar;
    BALTAS: TToolButton;
    BBAJAS: TToolButton;
    BCONSULTAS: TToolButton;
    BMODIFICACIONES: TToolButton;
    BLISTADO: TToolButton;
    ToolButton6: TToolButton;
    DBNavigator2: TDBNavigator;
    ToolButton7: TToolButton;
    BSALIR: TToolButton;
    ActionList1: TActionList;
    AAltas: TAction;
    ABajas: TAction;
    AConsultas: TAction;
    AModificaciones: TAction;
    ASalir: TAction;
    ALISTADO: TAction;
    ImageList1: TImageList;
    Label7: TLabel;
    Label8: TLabel;
    Label10: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit7: TDBEdit;
    DBEdit9: TDBEdit;
    DBEdit15: TDBEdit;
    Label17: TLabel;
    DBEdit16: TDBEdit;
    BACREEDOR: TToolButton;
    BPROVEEDOR: TToolButton;
    AACREEDOR: TAction;
    APROVEEDOR: TAction;
    Panel6: TPanel;
    Panel7: TPanel;
    Label11: TLabel;
    Label13: TLabel;
    Label18: TLabel;
    Label21: TLabel;
    Panel1: TPanel;
    Panel2: TPanel;
    Label14: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    CheckBox1: TDBCheckBox;
    ToolButton1: TToolButton;
    Label22: TLabel;
    ToolButton2: TToolButton;
    DBEdit8: TDBEdit;
    DBCheckBox1: TDBCheckBox;
    Label23: TLabel;
    Label24: TLabel;
    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 DSPROVEEDORStateChange(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BListadoClick(Sender: TObject);
    procedure REGISTRO1Click(Sender: TObject);
    procedure PRIMERO1Click(Sender: TObject);
    procedure ANTERIOR1Click(Sender: TObject);
    procedure SIGUIENTE1Click(Sender: TObject);
    procedure PROVEEDORES1Click(Sender: TObject);
    procedure DBEdit6KeyPress(Sender: TObject; var Key: Char);
    procedure DBEdit6Exit(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure DSPROVEEDORDataChange(Sender: TObject; Field: TField);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
    procedure ODOS1Click(Sender: TObject);
    procedure NOBORRADOS1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure DBEdit1Enter(Sender: TObject);
    procedure BACREEDORClick(Sender: TObject);
    procedure BPROVEEDORClick(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure FormPaint(Sender: TObject);
  private
    { Private declarations }
    PAUX :STRING;
    ANCHO : INTEGER;
    procedure EstadoBotones;
    function GetPROVEEDOR:string;
    procedure comprobarsubcuenta;
  public
    { Public declarations }
     VER : STRING;
     property codigo:string read GetPROVEEDOR;// write SetCONDUCTOR;
  end;

var
  PROVEEDOR: TPROVEEDOR;

implementation

uses RUTINAS, UDMGS, fdlgPROVEEDOR, DLGSUBCUENTA, DBClient, fprevio,
  FLISTADOS;
 //FDLGPROVEEDOR, LIST_CONDUCTORES,UDMGS;

{$R *.DFM}


//********************    FALTA POR HACER EL LISTADO

procedure TPROVEEDOR.BListadoClick(Sender: TObject);
VAR PATH:STRING;
        bookmark:tbookmark;
begin
    bookmark:= dmgs.cdsq_proveedor_acreedor.GetBookmark ;
    while not dmgs.cdsq_proveedor_acreedor.eof do
    begin
      dmgs.cdsq_proveedor_acreedor.last;
      IF DMGS.CDSQ_PROVEEDOR_ACREEDOR.EOF  THEN
      try // para evitar el error de memoria bloqueada en el server.
         DMGS.CDSQ_PROVEEDOR_ACREEDOR.GetNextPacket;
      except
      end;
    end;


    DSPROVEEDOR.DataSet := NIL; // HACE FALTA
    LISTADOS := tLISTADOS.Create(nil);
    PREVIO := TPREVIO.Create(NIL);
    LISTADOS.FRDB.DataSet := DMGS.CDSQ_PROVEEDOR_ACREEDOR;
 //   Path := ExtractFilePath(ParamStr(0));
    LISTADOS.frReport1.LoadFromFile(dmgs.Path + 'LISTADOS\PROVEEDOR.frf');
    LISTADOS.frReport1.Preview := PREVIO.frPreview1;
    LISTADOS.frReport1.ShowReport;
    PREVIO.ShowModal;
    DSPROVEEDOR.DataSet := DMGS.CDSQ_PROVEEDOR_ACREEDOR;
    LISTADOS.Free;
    LISTADOS := NIL;
    PREVIO.FREE;
    PREVIO := NIL;
    dmgs.cdsq_proveedor_acreedor.GotoBookmark(bookmark);
    dmgs.cdsq_proveedor_acreedor.FreeBookmark (bookmark);

{     IF ((NOT DMGS.CDSQ_PROVEEDOR_ACREEDOR.Active) OR (DMST.CNBGRBORRADO='-1')) THEN
     BEGIN
      DMST.CDSQ_LISTADOCONDUCTORES.Close;
      DMST.CTBGRNIF :='%';
      DMST.CTBGRBORRADO :='0';
      DMST.CDSQ_LISTADOCONDUCTORES.Open;
     END
     ELSE
     BEGIN
      DMST.CDSQ_LISTADOCONDUCTORES.Close;
      DMST.CTBGRNIF :=DMST.CNBGRNOMBRE;
      DMST.CTBGRBORRADO :=DMST.CNBGRBORRADO;
      DMST.CDSQ_LISTADOCONDUCTORES.Open;
     END;
     listado_conductores:=TLISTADO_Conductores.create(nil);
     listado_conductores.preview;
     listado_conductores.Free;
     DMST.CDSQ_LISTADOConductores.Close;
}{     LISTADO_CONDUCTORES:=tlistado_conductores.create(nil);
     LISTADO_CONDUCTORES.Q_DATOS.CLOSE;
     LISTADO_CONDUCTORES.Q_CONDUCTORES.CLOSE;
     LISTADO_CONDUCTORES.Q_DATOS.OPEN;
     LISTADO_CONDUCTORES.Q_CONDUCTORES.OPEN;
     LISTADO_CONDUCTORES.PREVIEW;
}
end;


//***********************************************************
function TPROVEEDOR.GetPROVEEDOR:string;
begin
    result:=DMGS.CDSQ_PROVEEDOR_ACREEDORnif.asstring;
end;


procedure TPROVEEDOR.FormDestroy(Sender: TObject);
begin
 if DMGS.CDSQ_PROVEEDOR_ACREEDOR.active then
     DMGS.CDSQ_PROVEEDOR_ACREEDOR.close;
     
 DMGS.CDSQ_TIPOS.CLOSE;
// DMGS.CDSQ_MAXIMO.CLOSE;

end;
procedure TPROVEEDOR.FormCreate(Sender: TObject);
begin
// if DMGS.CDSQ_PROVEEDOR_ACREEDOR.active then
//     DMGS.CDSQ_PROVEEDOR_ACREEDOR.close;
  ANCHO := Width ;
  VER := '0';
  with DMGS.CDSQ_PROVEEDOR_ACREEDOR do
  BEGIN
    Close;
    DMGS.VPROVEEDORACREEDOR.ID :='%';
    DMGS.VPROVEEDORACREEDOR.TIPO := '1';
    DMGS.VPROVEEDORACREEDOR.BORRADO := VER;
    DMGS.VPROVEEDORACREEDOR.ORDEN := ORDENPROVEEDOR;
    Open;
  END;

end;
procedure TPROVEEDOR.FormShow(Sender: TObject);
begin
    EstadoBotones;
end;
procedure TPROVEEDOR.BConsultasClick(Sender: TObject);
begin
    dsPROVEEDOR.DataSet := nil;
    dlgPROVEEDOR:=tdlgPROVEEDOR.create(nil);
    dlgPROVEEDOR.CerrarDataset := false;
    DLGPROVEEDOR.VER := VER;
    DlgPROVEEDOR.Showmodal;
    dlgPROVEEDOR.Free;
    dlgPROVEEDOR := nil;
    IF NOT DMGS.CDSQ_PROVEEDOR_ACREEDOR.ACTIVE THEN
       ESTADOBOTONES;
    dsPROVEEDOR.dataset := DMGS.CDSQ_PROVEEDOR_ACREEDOR;
end;

procedure TPROVEEDOR.FormKeyPress(Sender: TObject; var Key: Char);
begin
    if (ActiveControl=nil) and (key=#13) then
    begin
        Perform(WM_NextDLGCtl, 0, 0);
        key:=#0;
    end;
   if (key = #13) and not (ActiveControl is TButton) then
    begin
        PAUX:='';
        if uppercase(activecontrol.name)='DBEDIT9'
          then
            DMGS.CDSQ_PROVEEDOR_ACREEDOR.post;
        IF  DMGS.CDSQ_PROVEEDOR_ACREEDOR.STATE IN [DSEDIT,DSINSERT] THEN
            PAUX:=Uppercase(activecontrol.name);
        Perform(WM_NextDLGCtl, 0, 0);
        key:=#0 ;
        IF PAUX='DBEDIT6' THEN
             DBEDIT8.SetFocus ;

    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 (DMGS.CDSQ_PROVEEDOR_ACREEDOR.state in [dsedit,dsinsert])
     then
       close;

    if (key = #27) and not (ActiveControl is TButton) then
        if DMGS.CDSQ_PROVEEDOR_ACREEDOR.state in [dsedit,dsinsert]
          then
            DMGS.CDSQ_PROVEEDOR_ACREEDOR.post;

end;

procedure TPROVEEDOR.BSalirClick(Sender: TObject);
begin
    close;
    modalresult := mrOk;
end;
procedure TPROVEEDOR.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 TPROVEEDOR.REGISTRO1Click(Sender: TObject);
begin
   if (DMGS.CDSQ_PROVEEDOR_ACREEDOR.state in [dsedit,dsinsert]) then
   begin
      primero1.enabled:=false;
      anterior1.enabled:=false;
      siguiente1.enabled:=false;
   end
   else
   begin
    primero1.enabled:=DMGS.CDSQ_PROVEEDOR_ACREEDOR.bof=false;
    anterior1.enabled:=primero1.enabled;
    siguiente1.enabled:=DMGS.CDSQ_PROVEEDOR_ACREEDOR.eof=false;
   end;
end;

procedure TPROVEEDOR.PRIMERO1Click(Sender: TObject);
begin
   DMGS.CDSQ_PROVEEDOR_ACREEDOR.first;
end;

procedure TPROVEEDOR.ANTERIOR1Click(Sender: TObject);
begin
    DMGS.CDSQ_PROVEEDOR_ACREEDOR.Prior;
end;

procedure TPROVEEDOR.SIGUIENTE1Click(Sender: TObject);
begin
    DMGS.CDSQ_PROVEEDOR_ACREEDOR.next;
end;

procedure TPROVEEDOR.EstadoBotones;
begin
    PDatos.enabled:=DMGS.CDSQ_PROVEEDOR_ACREEDOR.state in [dsedit,dsinsert];
    BAltas.enabled:=(DMGS.CDSQ_PROVEEDOR_ACREEDOR.state=dsbrowse) or (DMGS.CDSQ_PROVEEDOR_ACREEDOR.state=dsinactive);
    BListado.enabled:=(DMGS.CDSQ_PROVEEDOR_ACREEDOR.state=dsbrowse) and (DMGS.CDSQ_PROVEEDOR_ACREEDOR.RecordCount >0 ) AND (DMGS.CDSQ_PROVEEDOR_ACREEDORBORRADO.VALUE = 0);
    BConsultas.enabled:=(DMGS.CDSQ_PROVEEDOR_ACREEDOR.state=dsbrowse) or (DMGS.CDSQ_PROVEEDOR_ACREEDOR.state=dsinactive);
    BModificaciones.enabled:=(DMGS.CDSQ_PROVEEDOR_ACREEDOR.state=dsbrowse)  and (DMGS.CDSQ_PROVEEDOR_ACREEDOR.RecordCount >0 );//AND (DMGS.CDSQ_PROVEEDOR_ACREEDORBORRADO.VALUE = 0);
    BBajas.enabled:=(DMGS.CDSQ_PROVEEDOR_ACREEDOR.state=dsbrowse) and (DMGS.CDSQ_PROVEEDOR_ACREEDOR.RecordCount >0 ) AND (DMGS.CDSQ_PROVEEDOR_ACREEDORBORRADO.VALUE = 0);
    BPROVEEDOR.enabled:=(DMGS.CDSQ_PROVEEDOR_ACREEDOR.state=dsbrowse) and (DMGS.CDSQ_PROVEEDOR_ACREEDOR.RecordCount >0 ) AND (DMGS.CDSQ_PROVEEDOR_ACREEDORBORRADO.VALUE = 0);
    BACREEDOR.enabled:=(DMGS.CDSQ_PROVEEDOR_ACREEDOR.state=dsbrowse) and (DMGS.CDSQ_PROVEEDOR_ACREEDOR.RecordCount >0 ) AND (DMGS.CDSQ_PROVEEDOR_ACREEDORBORRADO.VALUE = 0);

    IF not DMGS.CDSQ_PROVEEDOR_ACREEDOR.active then
    begin
      label18.Caption := '';
      label20.caption := '';
    end;

end;

procedure TPROVEEDOR.BAltasClick(Sender: TObject);
begin
 WITH DMGS.CDSQ_PROVEEDOR_ACREEDOR DO
  BEGIN
    IF NOT DMGS.CDSQ_PROVEEDOR_ACREEDOR.ACTIVE THEN
    BEGIN
      CLOSE;
      DMGS.VPROVEEDORACREEDOR.ID :='-789456';
      DMGS.VPROVEEDORACREEDOR.TIPO := '1';
      DMGS.VPROVEEDORACREEDOR.BORRADO := '-1';
      DMGS.VPROVEEDORACREEDOR.ORDEN := ORDENPROVEEDOR;
      OPEN;
    END;
    APPEND;
  END;
  dbedit1.setfocus;
end;
procedure TPROVEEDOR.BBajasClick(Sender: TObject);
VAR AUX:STRING;
begin
    if (DMGS.CDSQ_PROVEEDOR_ACREEDOR.recordcount>0)// or (DMGS.CDSQ_PROVEEDOR_ACREEDOR.state in [dsedit,dsinsert])
      then
        begin
          case dmgs.PedirConfirmacion('¿Confirma que desea borrar este Proveedor?',true,true,false) of
               mrno:EXIT;
          end;
          WITH DMGS.CDSQ_PROVEEDOR_ACREEDOR DO
          BEGIN
           EDIT;
           DMGS.CDSQ_PROVEEDOR_ACREEDORBORRADO.Value := 1;
           dmgs.RPROVEEDORACAUX.PREGUNTA := FALSE;
           POST;
          END;
      end;

end;
procedure TPROVEEDOR.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if DMGS.CDSQ_PROVEEDOR_ACREEDOR.State in [dsedit,dsinsert] then
      DMGS.CDSQ_PROVEEDOR_ACREEDOR.post;
  ACTION := CAFREE;
end;
procedure TPROVEEDOR.BModificacionesClick(Sender: TObject);
begin
    if DMGS.CDSQ_PROVEEDOR_ACREEDOR.recordcount>0 then
    begin
        DMGS.CDSQ_PROVEEDOR_ACREEDOR.edit;
        IF DMGS.CDSQ_PROVEEDOR_ACREEDORBORRADO.VALUE = 1 THEN
           DMGS.CDSQ_PROVEEDOR_ACREEDORBORRADO.VALUE := 0;
        dbedit1.setfocus;
    end;
end;
procedure TPROVEEDOR.DSPROVEEDORStateChange(Sender: TObject);
begin
    IF NOT DBEDIT6.Enabled THEN
       DBEDIT6.Enabled := TRUE;
    EstadoBotones;
end;
procedure TPROVEEDOR.PROVEEDORES1Click(Sender: TObject);
begin
    altas1.enabled:=baltas.enabled;
    bajas1.enabled:=bbajas.enabled;
    consultas1.enabled:=bconsultas.enabled;
    modificaciones1.enabled:=bmodificaciones.enabled;
    listado1.enabled:=blistado.enabled;
end;
//******* PONERLO EN RUTINAS ES DIFERENTE DE LA FUNCION DE CLIENTES
//******* VER CON JJ PARA HACER UNA PARA LOS DOS.
procedure TPROVEEDOR.DBEdit6Exit(Sender: TObject);
VAR CIF:STRING;
    ultimo,valido:boolean;
begin

if (dbedit6.text = '') and (DMGS.CDSQ_PROVEEDOR_ACREEDOR.State in [dsedit,dsinsert]) then
 begin
  showmessage('El NIF introducido es erroneo, introduzcalo correctamente');
  valido:=false;
//  dbedit6.setfocus;
  PAUX:='';
  EXIT;
 end
 else
 if (DMGS.CDSQ_PROVEEDOR_ACREEDOR.State in [dsedit,dsinsert]) then
 begin
    ultimo:=false;
    valido:=true;
    CIF:=TRIM(DBEDIT6.Text);
    comprobarnifcif(cif,ultimo,valido);
    if not valido then
    begin
      showmessage('El NIF introducido es erroneo, introduzcalo correctamente');
      valido:=false;
//      dbedit6.setfocus;
      PAUX:='';
      EXIT;
    end
    ELSE
    BEGIN
      WITH DMGS.CDSQ_FPROVEEDOR DO // COMPRUEBO SI HAY ALGUN proveedor BORRADO CON ESE NIF
      BEGIN
         CLOSE;
         DMGS.FPBGRNIF := CIF;
         DMgs.FPBGRBORRADO :='1';
         OPEN;
         IF RECORDCOUNT > 0 THEN
         BEGIN
            SHOWMESSAGE('EL NIF CORRESPONDE CON UN PROVEEDOR YA BORRADO. SE MUESTRA EL REGISTRO');
            DMGS.CDSQ_PROVEEDOR_ACREEDOR.UndoLastChange(TRUE);
            DMGS.CDSQ_PROVEEDOR_ACREEDOR.CLOSE;
            DMGS.VPROVEEDORACREEDOR.ID := CIF;
            DMGS.VPROVEEDORACREEDOR.TIPO := '2';
            DMGS.VPROVEEDORACREEDOR.BORRADO := '1';
            DMGS.VPROVEEDORACREEDOR.ORDEN := ORDENPROVEEDOR;            
            DMGS.CDSQ_PROVEEDOR_ACREEDOR.OPEN;
            DMGS.CDSQ_PROVEEDOR_ACREEDOR.Edit;
            DMGS.CDSQ_PROVEEDOR_ACREEDORBORRADO.Value := 0;
            DBEDIT6.Enabled := FALSE;
          END;
         CLOSE;
      END;
    END;
 END;
//  DBEDIT8.SETFOCUS;
end;
procedure TPROVEEDOR.DBEdit6KeyPress(Sender: TObject; var Key: Char);
begin
IF   ((key>='0') and (key<='9')) or (key =#13) or ((key>='A') and (key<='Z')) and (key <>#8)  then
  begin
     if (key =#13) and not (Activecontrol is TButton) then
     begin
 //         Perform(WM_NEXTDLGCTL,0,0);
 //          key:=#0;
     end;
  end
  else key:=#0;

end;



procedure TPROVEEDOR.DSPROVEEDORDataChange(Sender: TObject;
  Field: TField);
begin
  IF (DMGS.CDSQ_PROVEEDOR_ACREEDOR.EOF) AND (NOT(DMGS.CDSQ_PROVEEDOR_ACREEDOR.STATE IN [DSEDIT,DSINSERT])) THEN
  try // para evitar el error de memoria bloqueada en el server.
    DMGS.CDSQ_PROVEEDOR_ACREEDOR.GetNextPacket;
  except
  end;
  IF DMGS.CDSQ_PROVEEDOR_ACREEDORBORRADO.Value = 1 THEN
     LABEL4.Visible := TRUE
  ELSE
     LABEL4.Visible := FALSE;
  ESTADOBOTONES;
  COMPROBARSUBCUENTA;

  LABEL23.Visible := FALSE;
  LABEL24.Visible := FALSE;

  DMGS.CDSQ_MAXIMO.CLOSE;
  DMGS.CDSQ_MAXIMO.CommandText := 'SELECT ID_TIPO AS MAXIMO FROM TIPOS WHERE ID_PROVEEDOR ='+DMGS.CDSQ_PROVEEDOR_ACREEDORID_PROVEEDOR.ASSTRING+' ';
  DMGS.CDSQ_MAXIMO.Open;

  IF DMGS.CDSQ_MAXIMO.LocatE('MAXIMO','ACREEDOR',[loCaseInsensitive]) then
     LABEL24.Visible := TRUE;

  IF DMGS.CDSQ_MAXIMO.LocatE('MAXIMO','PROVEEDOR',[loCaseInsensitive]) then
     LABEL23.Visible := TRUE;

  DMGS.CDSQ_MAXIMO.CLOSE;
end;

procedure TPROVEEDOR.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
  IF DMGS.CDSQ_PROVEEDOR_ACREEDOR.EOF  THEN
  try // para evitar el error de memoria bloqueada en el server.
    DMGS.CDSQ_PROVEEDOR_ACREEDOR.GetNextPacket;
  except
  end;
end;

procedure TPROVEEDOR.ODOS1Click(Sender: TObject);
begin
   ODOS1.Checked := TRUE;
   NOBORRADOS1.Checked := FALSE;
   if ver <> '%' then
   begin
      ver := '%';
      bconsultasclick(sender);
   end;
end;

procedure TPROVEEDOR.NOBORRADOS1Click(Sender: TObject);
begin
   ODOS1.Checked := FALSE;
   NOBORRADOS1.Checked := TRUE;
   if ver <> '0' then
   begin
     ver := '0';
     bconsultasclick(sender);
   end;
end;

procedure TPROVEEDOR.CheckBox1Click(Sender: TObject);
begin
  if (dmgs.cdsq_proveedor_acreedor.state in [dsedit,dsinsert]) then
  begin
   if checkbox1.Checked THEN
   BEGIN
    DMGS.CDSQ_PROVEEDOR_ACREEDORDIRECCION_POSTAL.ASSTRING := DMGS.CDSQ_PROVEEDOR_ACREEDORDIRECCION.ASSTRING ;
    DMGS.CDSQ_PROVEEDOR_ACREEDORPOBLACION_POSTAL.ASSTRING := DMGS.CDSQ_PROVEEDOR_ACREEDORPOBLACION.ASSTRING ;
    DMGS.CDSQ_PROVEEDOR_ACREEDORCOD_POSTAL_POSTAL.ASSTRING := DMGS.CDSQ_PROVEEDOR_ACREEDORCOD_POSTAL.ASSTRING ;
    DMGS.CDSQ_PROVEEDOR_ACREEDORPROVINCIA_POSTAL.ASSTRING :=DMGS.CDSQ_PROVEEDOR_ACREEDORPROVINCIA.ASSTRING;
    DBEDIT11.SetFOCUS;
   END
   ELSE
   BEGIN
    DMGS.CDSQ_PROVEEDOR_ACREEDORDIRECCION_POSTAL.Clear;
    DMGS.CDSQ_PROVEEDOR_ACREEDORPOBLACION_POSTAL.CLEAR;
    DMGS.CDSQ_PROVEEDOR_ACREEDORCOD_POSTAL_POSTAL.CLEAR;
    DMGS.CDSQ_PROVEEDOR_ACREEDORPROVINCIA_POSTAL.CLEAR;
    DBEDIT7.SetFocus;
   END
  end;
end;

procedure TPROVEEDOR.DBEdit1Enter(Sender: TObject);
begin
   IF DMGS.CDSQ_PROVEEDOR_ACREEDOR.State = DSINSERT THEN
   BEGIN
     DMGS.CDSQ_MAXIMO.CLOSE;
     DMGS.CDSQ_MAXIMO.CommandText := 'SELECT MAX(ID_PROVEEDOR) AS MAXIMO FROM PROVEEDOR_ACREEDOR';
     DMGS.CDSQ_MAXIMO.Open;
  IF DMGS.CDSQ_MAXIMO.Fields[0].ISNULL THEN
     DMGS.CDSQ_PROVEEDOR_ACREEDORID_PROVEEDOR.VALUE :=0
  ELSE
     DMGS.CDSQ_PROVEEDOR_ACREEDORID_PROVEEDOR.Value := DMGS.CDSQ_MAXIMO.Fields[0].Value +1 ;
     DMGS.CDSQ_MAXIMO.CLOSE;
   END;
end;

procedure TPROVEEDOR.BACREEDORClick(Sender: TObject);
begin
    WITH DMGS.CDSQ_TIPOS DO
    BEGIN
        CLOSE;
        DMGS.tibgrid_proveedor := DMGS.CDSQ_PROVEEDOR_ACREEDORID_PROVEEDOR.AsString;
        OPEN;

        IF LocatE('ID_TIPO','ACREEDOR',[loCaseInsensitive]) then
          edit
        else
        begin
          append;
          dmgs.CDSQ_TIPOSID_TIPO.AsString := 'ACREEDOR';
          DMGS.CDSQ_TIPOSID_PROVEEDOR.AsString :=DMGS.CDSQ_PROVEEDOR_ACREEDORID_PROVEEDOR.AsString;
        end;


        FDLGSUBCUENTA := TFDLGSUBCUENTA.CREATE (NIL);
        FDLGSUBCUENTA.SHOWMODAL;
        IF FDLGSUBCUENTA.borrar THEN
        BEGIN
          DMGS.CDSQ_TIPOS.Delete;
          DMGS.CDSQ_TIPOS.ApplyUpdates(0);
        END;
        FDLGSUBCUENTA.FREE;
        FDLGSUBCUENTA := NIL;
        CLOSE;
        // POR AQUI
//        DSPROVEEDORDataChange(SENDER,DMGS.CDSQ_PROVEEDOR_ACREEDORID_PROVEEDOR);
    END;
    comprobarsubcuenta;
    DSPROVEEDORDataChange(Sender,DMGS.CDSQ_TIPOSID_TIPO);
end;



procedure TPROVEEDOR.BPROVEEDORClick(Sender: TObject);
begin
    WITH DMGS.CDSQ_TIPOS DO
    BEGIN
        CLOSE;
        DMGS.tibgrid_proveedor := DMGS.CDSQ_PROVEEDOR_ACREEDORID_PROVEEDOR.AsString;
        OPEN;

        IF LocatE('ID_TIPO','PROVEEDOR',[loCaseInsensitive]) then
          edit
        else
        begin
          append;
          dmgs.CDSQ_TIPOSID_TIPO.AsString := 'PROVEEDOR';
          DMGS.CDSQ_TIPOSID_PROVEEDOR.AsString :=DMGS.CDSQ_PROVEEDOR_ACREEDORID_PROVEEDOR.AsString;
        end;


        FDLGSUBCUENTA := TFDLGSUBCUENTA.CREATE (NIL);
        FDLGSUBCUENTA.SHOWMODAL;
        IF FDLGSUBCUENTA.borrar THEN
        BEGIN
          DMGS.CDSQ_TIPOS.Delete;
          DMGS.CDSQ_TIPOS.ApplyUpdates(0);
        END;
        FDLGSUBCUENTA.FREE;
        FDLGSUBCUENTA := NIL;
        CLOSE;
        // POR AQUI
//        DSPROVEEDORDataChange(SENDER,DMGS.CDSQ_PROVEEDOR_ACREEDORID_PROVEEDOR);
    END;
    comprobarsubcuenta;
    DSPROVEEDORDataChange(Sender,DMGS.CDSQ_TIPOSID_TIPO);
end;
PROCEDURE tproveedor.COMPROBARsubcuenta;
VAR I:INTEGER;
BEGIN
   if ((not (DMgs.CDSQ_PROVEEDOR_ACREEDORID_PROVEEDOR.IsNull)) AND (TRIM(DMgs.CDSQ_PROVEEDOR_ACREEDORID_PROVEEDOR.ASSTRING)<>'')) then
     begin
        if (DMGS.CDSQ_TIPOS.active) then // LO HE UTILIZADO PARA
        // MODIFICAR O AÑADIR ID_PROVEEDOR EN TIPOS
           begin
           if (not(label21.Caption  = trim(DMgs.CDSQ_PROVEEDOR_ACREEDORID_PROVEEDOR.asstring)))
           then
             begin
               dmgs.cdsq_tipos.close;
               DMGS.tibgrid_proveedor := DMGS.CDSQ_PROVEEDOR_ACREEDORID_PROVEEDOR.AsString;
               DMGS.CDSQ_TIPOS.Open;
             end;
           end
           else
             begin
               dmgs.cdsq_tipos.close;
               DMGS.tibgrid_proveedor := DMGS.CDSQ_PROVEEDOR_ACREEDORID_PROVEEDOR.AsString;
               DMGS.CDSQ_TIPOS.Open;
             end;
    end
    else
       DMGS.CDSQ_TIPOS.close;

    IF DMGS.CDSQ_TIPOS.Active THEN
    BEGIN
      LABEL21.CAPTION := DMGS.CDSQ_TIPOSID_PROVEEDOR.AsString;
      DMGS.CDSQ_TIPOS.First;
      I:=0;
      WHILE ((I<=1) AND (NOT DMGS.CDSQ_TIPOS.EOF)) DO
      BEGIN
      IF TRIM(DMGS.CDSQ_TIPOSID_TIPO.ASSTRING) = 'PROVEEDOR' THEN
        LABEL18.Caption := DMGS.CDSQ_TIPOSSUBCUENTA.ASSTRING
      ELSE
        LABEL20.CAPTION := DMGS.CDSQ_TIPOSSUBCUENTA.AsString;
      I:=I+1;
      DMGS.CDSQ_TIPOS.NEXT;
      END
    END
    ELSE
    begin
      LABEL21.CAPTION := '';// LA UTILIZO PARA COMPROBAR SI LAS ETIQUETAS
      //ESTAN BIEN
      label18.Caption := '';
      label20.Caption := '';
     end;
END;

procedure TPROVEEDOR.FormResize(Sender: TObject);
begin
  PDATOS.Left := 10 + (ClientWidth - ancho ) div 2 ;
end;

procedure TPROVEEDOR.FormPaint(Sender: TObject);
begin
  PDATOS.Left := 10 + (ClientWidth - ancho ) div 2 ;
end;

end.
