unit fclientes;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DBCtrls, StdCtrls, Buttons, ExtCtrls, Menus, Mask, db,TIPOSDEFINIDOS,
  ActnList, ImgList, ComCtrls, ToolWin,DBCLIENT, DC, NIF,forden,dateutils;

type
  Tclientes = class(TForm)
    Menu: TMainMenu;
    CLIENTES1: TMenuItem;
    PDatos: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label6: TLabel;
    Label5: TLabel;
    Label12: TLabel;
    DSCLIENTE: 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;
    DBEdit8: 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;
    Label11: TLabel;
    DBEdit17: TDBEdit;
    CheckBox1: TDBCheckBox;
    Label13: TLabel;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    Label14: TLabel;
    DBEdit18: TDBEdit;
    DBEdit20: TDBEdit;
    Label9: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    DBEdit21: TDBEdit;
    DBEdit31: TDBEdit;
    DBEdit33: TDBEdit;
    DBEdit32: TDBEdit;
    DBCheckBox1: TDBCheckBox;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    abusqueda: TAction;
    aorden: TAction;
    NIF1: TNIF;
    DC1: TDC;
    Label18: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    DBEdit19: TDBEdit;
    DBEdit22: 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 DSCLIENTEStateChange(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 CLIENTES1Click(Sender: TObject);
    procedure DBEdit6KeyPress(Sender: TObject; var Key: Char);
    procedure DBEdit6Exit(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure DSCLIENTEDataChange(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 DBEdit8Exit(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure abusquedaExecute(Sender: TObject);
    procedure aordenExecute(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure DBEdit33Exit(Sender: TObject);
    procedure DBEdit21Exit(Sender: TObject);
  private
    { Private declarations }
    PAUX :STRING;
    ancho : integer;
    procedure EstadoBotones;
    function GetCLIENTE:string;
  public
    { Public declarations }
     VER : STRING;
     ARORDEN:TORDEN;
     property codigo:string read GetCLIENTE;// write SetCONDUCTOR;
     procedure buscar;
  end;

var
  clientes: Tclientes;

implementation

uses RUTINAS, UDMGS, fdlgCLIENTE,  fprevio,
  FLISTADOS, FDLGEMPRESAAUX, menu;

{$R *.DFM}


//********************    FALTA POR HACER EL LISTADO

procedure Tclientes.BListadoClick(Sender: TObject);
VAR PATH:STRING;
    bookmark:tbookmark;
begin
    bookmark:= dmgs.cdsq_cliente.GetBookmark ;
    DSCLIENTE.DataSet := NIL; // HACE FALTA
    LISTADOS := tLISTADOS.Create(nil);
    PREVIO := TPREVIO.Create(NIL);
    LISTADOS.FRDB.DataSet := DMGS.CDSQ_CLIENTE;
 //   Path := ExtractFilePath(ParamStr(0));
    LISTADOS.frReport1.LoadFromFile(dmgs.Path + 'LISTADOS\CLIENTE.frf');
    LISTADOS.frReport1.Preview := PREVIO.frPreview1;
    LISTADOS.frReport1.ShowReport;
    PREVIO.ShowModal;
    DSCLIENTE.DataSet := DMGS.CDSQ_CLIENTE;
    LISTADOS.Free;
    LISTADOS := NIL;
    PREVIO.FREE;
    PREVIO := NIL;
    dmgs.cdsq_cliente.GotoBookmark(bookmark);
    dmgs.cdsq_cliente.FreeBookmark (bookmark);
end;


//***********************************************************
function Tclientes.GetCLIENTE:string;
begin
    result:=DMGS.CDSQ_CLIENTEnif.asstring;
end;


procedure Tclientes.FormDestroy(Sender: TObject);
begin
 if DMGS.CDSQ_CLIENTE.active then
     DMGS.CDSQ_CLIENTE.close;

 DMGS.CDSQ_MAXIMO.CLOSE;
 ARORDEN.FREE;
 ARORDEN := NIL;

end;
procedure Tclientes.FormCreate(Sender: TObject);
begin
 if DMGS.CDSQ_CLIENTE.active then
     DMGS.CDSQ_CLIENTE.close;
 VER := '0';
 ancho := Width ;
 ARORDEN := TORDEN.Create(NIL);
 ARORDEN.CDS := DMGS.cdsq_CLIENTE;
 ARORDEN.nombre  := 'CDSQ_CLIENTE';
 dmgs.RCLIENTE.BUSCANDO := false;
 IF arorden.sORDEN = '' THEN
     arorden.SORDEN := ORDENCLIENTE;



 with DMGS.CDSQ_CLIENTE do
  BEGIN
    Close;
        DMGS.VCLIENTE.ID :='%';
        DMGS.VCLIENTE.BORRADO := VER;
        DMGS.VCLIENTE.TIPO := '1';
        DMGS.VCLIENTE.EMPRESA := FMENU.ID_EMPRESA;
        DMGS.VCLIENTE.ORDEN := ARORDEN.SORDEN;
    Open;
  END;
end;
procedure Tclientes.FormShow(Sender: TObject);
begin
    EstadoBotones;
end;
procedure Tclientes.BConsultasClick(Sender: TObject);
begin
    dsCLIENTE.DataSet := nil;
    dlgCLIENTE:=tdlgCLIENTE.create(nil);

    IF TRIM(ARORDEN.SORDEN) = '' THEN
        DLGCLIENTE.ORDEN:=ORDENCLIENTE
    ELSE
        DLGCLIENTE.ORDEN :=  ARORDEN.SORDEN;

    dlgCLIENTE.CerrarDataset := false;
    dlgCLIENTE.VER := VER;
    dlgCLIENTE.Showmodal;
    dlgCLIENTE.Free;
    dlgCLIENTE := nil;
    IF NOT DMGS.CDSQ_CLIENTE.ACTIVE THEN
       ESTADOBOTONES;
    dsCLIENTE.dataset := DMGS.CDSQ_CLIENTE;
end;

procedure Tclientes.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
           if dmgs.rcliente.BUSCANDO then
            buscar
           else
            DMGS.CDSQ_CLIENTE.post;
        IF  DMGS.CDSQ_CLIENTE.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_CLIENTE.state in [dsedit,dsinsert])
     then
      if not dmgs.rcliente.BUSCANDO then
        close
      else
        dmgs.rcliente.buscando := false;

    if (key = #27) and not (ActiveControl is TButton) then
        if DMGS.CDSQ_CLIENTE.state in [dsedit,dsinsert]
          then
           if dmgs.RCLIENTE.buscando then
            buscar
           else
            DMGS.CDSQ_CLIENTE.post;

end;

procedure Tclientes.BSalirClick(Sender: TObject);
begin
    close;
    modalresult := mrOk;
end;
procedure Tclientes.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 Tclientes.REGISTRO1Click(Sender: TObject);
begin
   if (DMGS.CDSQ_CLIENTE.state in [dsedit,dsinsert]) then
   begin
      primero1.enabled:=false;
      anterior1.enabled:=false;
      siguiente1.enabled:=false;
   end
   else
   begin
    primero1.enabled:=DMGS.CDSQ_CLIENTE.bof=false;
    anterior1.enabled:=primero1.enabled;
    siguiente1.enabled:=DMGS.CDSQ_CLIENTE.eof=false;
   end;
end;

procedure Tclientes.PRIMERO1Click(Sender: TObject);
begin
   DMGS.CDSQ_CLIENTE.first;
end;

procedure Tclientes.ANTERIOR1Click(Sender: TObject);
begin
    DMGS.CDSQ_CLIENTE.Prior;
end;

procedure Tclientes.SIGUIENTE1Click(Sender: TObject);
begin
    DMGS.CDSQ_CLIENTE.next;
end;

procedure Tclientes.EstadoBotones;
begin
    PDatos.enabled:=DMGS.CDSQ_CLIENTE.state in [dsedit,dsinsert];
    BAltas.enabled:=(DMGS.CDSQ_CLIENTE.state=dsbrowse) or (DMGS.CDSQ_CLIENTE.state=dsinactive);
    BListado.enabled:=(DMGS.CDSQ_CLIENTE.state=dsbrowse) and (DMGS.CDSQ_CLIENTE.RecordCount >0 ) AND (DMGS.CDSQ_CLIENTEBORRADO.VALUE = 0);
    BConsultas.enabled:=(DMGS.CDSQ_CLIENTE.state=dsbrowse) or (DMGS.CDSQ_CLIENTE.state=dsinactive);
    BModificaciones.enabled:=(DMGS.CDSQ_CLIENTE.state=dsbrowse)  and (DMGS.CDSQ_CLIENTE.RecordCount >0 );//AND (DMGS.CDSQ_CLIENTEBORRADO.VALUE = 0);
    BBajas.enabled:=(DMGS.CDSQ_CLIENTE.state=dsbrowse) and (DMGS.CDSQ_CLIENTE.RecordCount >0 ) AND (DMGS.CDSQ_CLIENTEBORRADO.VALUE = 0);
end;

procedure Tclientes.BAltasClick(Sender: TObject);
begin
 WITH DMGS.CDSQ_CLIENTE DO
  BEGIN
    IF NOT DMGS.CDSQ_CLIENTE.ACTIVE THEN
    BEGIN
    DMGS.VCLIENTE.ID :='-125478';
    DMGS.VCLIENTE.BORRADO := '-1';
    DMGS.VCLIENTE.TIPO := '1';
        DMGS.VCLIENTE.ORDEN := ARORDEN.SORDEN;
     OPEN;
    END;
     APPEND;
  END;
  ESTADOBOTONES;
  dbedit1.setfocus;
end;
procedure Tclientes.BBajasClick(Sender: TObject);
VAR AUX:STRING;
begin
    if (DMGS.CDSQ_CLIENTE.recordcount>0)// or (DMGS.CDSQ_CLIENTE.state in [dsedit,dsinsert])
      then
        begin
          case dmgs.PedirConfirmacion('¿Confirma que desea borrar este Cliente?',true,true,false) of
               mrno:EXIT;
          end;
          WITH DMGS.CDSQ_CLIENTE DO
          BEGIN
           EDIT;
           DMGS.CDSQ_CLIENTEBORRADO.Value := 1;
           dmgs.RCLIENTE.PREGUNTA  := FALSE;
           POST;
          END;
      end;

end;
procedure Tclientes.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if (dMGS.CDSQ_CLIENTE.State in [dsedit,dsinsert])
  and (not dmgs.rcliente.BUSCANDO) then
      DMGS.CDSQ_CLIENTE.post;
  ACTION := CAFREE;
end;
procedure Tclientes.BModificacionesClick(Sender: TObject);
begin
    if DMGS.CDSQ_CLIENTE.recordcount>0 then
    begin
        DMGS.CDSQ_CLIENTE.edit;
        IF DMGS.CDSQ_CLIENTEBORRADO.VALUE = 1 THEN
           DMGS.CDSQ_CLIENTEBORRADO.VALUE := 0;
        dbedit1.setfocus;
    end;
end;
procedure Tclientes.DSCLIENTEStateChange(Sender: TObject);
begin
    IF NOT DBEDIT6.Enabled THEN
       DBEDIT6.Enabled := TRUE;
    EstadoBotones;
end;
procedure Tclientes.CLIENTES1Click(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 Tclientes.DBEdit6Exit(Sender: TObject);
VAR CIF:STRING;
    ultimo,valido:boolean;
begin

if (dbedit6.text = '') and (DMGS.CDSQ_CLIENTE.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_CLIENTE.State in [dsedit,dsinsert]) then
 begin
    nif1.CADENA := dbedit6.Text;
    if not nif1.VALIDO then
    begin
      valido:=false;
//      dbedit6.setfocus;
      PAUX:='';
      EXIT;
    end
    ELSE
    BEGIN
      WITH DMGS.CDSQ_FCLIENTE DO // COMPRUEBO SI HAY ALGUN proveedor BORRADO CON ESE NIF
      BEGIN
         CLOSE;
         DMGS.FCBGRNIF := NIF1.CADENA;
         DMgs.FCBGRBORRADO :='1';
         OPEN;
         IF RECORDCOUNT > 0 THEN
         BEGIN
            SHOWMESSAGE('EL NIF CORRESPONDE CON UN CLIENTE YA BORRADO. SE MUESTRA EL REGISTRO');
            DMGS.CDSQ_CLIENTE.UndoLastChange(TRUE);
            DMGS.CDSQ_CLIENTE.CLOSE;
            DMGS.VCLIENTE.ID :=NIF1.CADENA;
            DMGS.VCLIENTE.BORRADO := '1';
            DMGS.VCLIENTE.TIPO := '2';
            DMGS.VCLIENTE.ORDEN := ORDENCLIENTE;
            DMGS.CDSQ_CLIENTE.OPEN;
            DMGS.CDSQ_CLIENTE.Edit;
            DMGS.CDSQ_CLIENTEBORRADO.Value := 0;
            DBEDIT6.Enabled := FALSE;
          END;
         CLOSE;
      END;
    END;
 END;
//  DBEDIT8.SETFOCUS;
end;
procedure Tclientes.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 Tclientes.DSCLIENTEDataChange(Sender: TObject;
  Field: TField);
begin
  IF (DMGS.CDSQ_CLIENTE.EOF) AND (NOT(DMGS.CDSQ_CLIENTE.STATE IN [DSEDIT,DSINSERT])) THEN
  try // para evitar el error de memoria bloqueada en el server.
    DMGS.CDSQ_CLIENTE.GetNextPacket;
  except
  end;
  IF DMGS.CDSQ_CLIENTEBORRADO.Value = 1 THEN
     LABEL4.Visible := TRUE
  ELSE
     LABEL4.Visible := FALSE;
  ESTADOBOTONES;
end;

procedure Tclientes.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
  IF DMGS.CDSQ_CLIENTE.EOF  THEN
  try // para evitar el error de memoria bloqueada en el server.
    DMGS.CDSQ_CLIENTE.GetNextPacket;
  except
  end;
end;

procedure Tclientes.ODOS1Click(Sender: TObject);
begin
   ODOS1.Checked := TRUE;
   NOBORRADOS1.Checked := FALSE;
   if ver <> '%' then
   begin
      ver := '%';
      bconsultasclick(sender);
   end;
end;

procedure Tclientes.NOBORRADOS1Click(Sender: TObject);
begin
   ODOS1.Checked := FALSE;
   NOBORRADOS1.Checked := TRUE;
   if ver <> '0' then
   begin
     ver := '0';
     bconsultasclick(sender);
   end;
end;

procedure Tclientes.CheckBox1Click(Sender: TObject);
begin
  if (dmgs.cdsq_cliente.state in [dsedit,dsinsert]) then
  begin
   if checkbox1.Checked THEN
   BEGIN
    DMGS.CDSQ_CLIENTEDIRECCION_POSTAL.ASSTRING := DMGS.CDSQ_CLIENTEDIRECCION.ASSTRING ;
    DMGS.CDSQ_CLIENTEPOBLACION_POSTAL.ASSTRING := DMGS.CDSQ_CLIENTEPOBLACION.ASSTRING ;
    DMGS.CDSQ_CLIENTECOD_POSTAL_POSTAL.ASSTRING := DMGS.CDSQ_CLIENTECOD_POSTAL.ASSTRING ;
    DMGS.CDSQ_CLIENTEPROVINCIA_POSTAL.ASSTRING :=DMGS.CDSQ_CLIENTEPROVINCIA.ASSTRING;
    DBEDIT11.SetFOCUS;
   END
   ELSE
   BEGIN
    DMGS.CDSQ_CLIENTEDIRECCION_POSTAL.Clear;
    DMGS.CDSQ_CLIENTEPOBLACION_POSTAL.CLEAR;
    DMGS.CDSQ_CLIENTECOD_POSTAL_POSTAL.CLEAR;
    DMGS.CDSQ_CLIENTEPROVINCIA_POSTAL.CLEAR;
    DBEDIT7.SetFocus;
   END
  end;
end;

procedure Tclientes.DBEdit1Enter(Sender: TObject);
begin
 {  IF DMGS.CDSQ_CLIENTE.STATE = DSINSERT THEN
   BEGIN
     DMGS.CDSQ_MAXIMO.CLOSE;
     DMGS.CDSQ_MAXIMO.CommandText := 'SELECT MAX(ID_CLIENTE) AS MAXIMO FROM CLIENTES WHERE ID_EMPRESA='+FMENU.ID_EMPRESA;
     DMGS.CDSQ_MAXIMO.Open;
     DMGS.CDSQ_CLIENTEID_CLIENTE.Value := DMGS.CDSQ_MAXIMOMAXIMO.Value +1 ;
     DMGS.CDSQ_MAXIMO.CLOSE;
   END;
 }
end;



procedure Tclientes.DBEdit8Exit(Sender: TObject);
begin
  IF DMGS.CDSQ_CLIENTE.State = DSINSERT THEN
   DMGS.CDSQ_CLIENTENOMBRE_COMERCIAL.ASSTRING  := DMGS.CDSQ_CLIENTENOMBRE.AsString;
end;


procedure Tclientes.FormResize(Sender: TObject);
begin
   pdatos.Left := 10 + (ClientWidth - ancho ) div 2 ;
end;

procedure Tclientes.abusquedaExecute(Sender: TObject);
begin
  WITH dmgs.cdsq_cliente DO
  BEGIN
     CLOSE;
     dmgs.vcliente.ID :='-1897456';
     dmgs.vcliente.BORRADO := '-1';
     dmgs.vcliente.ORDEN := ARORDEN.SORDEN;
     dmgs.vcliente.TIPO :='1';
     DMGS.VCLIENTE.EMPRESA := FMENU.ID_EMPRESA;
     dmgs.rcliente.BUSCANDO  := TRUE;
     OPEN;
     APPEND;
  END;
  dmgs.cdsq_clienteid_cliente.FocusControl
end;

procedure Tclientes.aordenExecute(Sender: TObject);
begin
   ARORDEN.ShowModal;
end;

procedure tclientes.buscar;
var aux,AUX1,fecha:STRING;
    i,AUX2,AUX3,J:integer;
    auxfecha:tdatetime;
begin
  i:= 0;
  aux := '';
  WHILE I < SELF.ComponentCount DO
  begin
    IF (SELF.Components[I] IS TDBEDIT) THEN
    BEGIN
      AUX1:=(SELF.Components[I] AS TDBEDIT).DataField ;
      if (NOT (TRIM(dmgs.cdsq_cliente.FieldByName(AUX1).ASSTRING) ='')) AND
         (NOT ( dmgs.cdsq_cliente.FieldByName(AUX1).FieldKIND IN  [fkCalculated,fkInternalCalc]))
      then
      BEGIN
//         if pos('FECHA',uppercase(aux1)) <> 0 then
         IF ((dmgs.cdsq_cliente.FieldByName(AUX1).DataType IN [FTDATE,ftTimeStamp]) OR
         (dmgs.cdsq_cliente.FieldByName(AUX1).DataType = FTDATE)) AND
         ( POS(':',UPPERCASE(AUX1)) = 0)
         THEN
         begin
            auxfecha :=dmgs.cdsq_cliente.FieldByName(AUX1).AsDateTime ;
            fecha := inttostr(yearof(auxfecha))+'-'+inttostr(monthof(auxfecha))+'-'+inttostr(dayof(auxfecha));
            if aux <> '' then
               aux := aux + ' AND ' + AUX1  +' = '''+ fecha+''' '
            else
               aux := AUX1 +' = '''+ fecha+''' ';
         end
         else
         begin
            if aux <> '' then                         // LIKE
               aux := aux + ' AND char(' + AUX1  +') = ('''+ dmgs.cdsq_cliente.FieldByName(AUX1).ASSTRING+''') ' // VER 3.0 %
            else
               aux := 'char('+AUX1 +') = ('''+ TRIM(dmgs.cdsq_cliente.FieldByName(AUX1).ASSTRING)+''') '; // VER 3.0 %
         end;                           // LIKE
      END;
      end;
      IF (SELF.Components[I] IS TDBCHECKBOX) THEN
      begin
            AUX1:=(SELF.Components[I] AS TDBCHECKBOX).DataField ;
            IF (TRIM(AUX1)<>'MISMA_DIRECCION')
            // EXCLUYO EL DBCHECKBOX MISMA_DIRECCION
            THEN
            BEGIN
             J:=0;
             IF (SELF.Components[I] AS TDBCHECKBOX).Checked THEN
                 J:=1;
             if aux <> '' then
                aux := aux + ' AND ' + AUX1  +'= '+INTTOSTR(J)
             else
                aux := AUX1  +'= '+INTTOSTR(J);
            END;
      end;
      i:= i+1;
    END;
  dmgs.cdsq_cliente.close;
  dmgs.rcliente.BUSCANDO :=false;
  if aux <> '' then
  begin
//     dmgs.vcliente.EMPRESA  := '';
     dmgs.vcliente.ANYO := '';
     IF TRIM(ARORDEN.SORDEN)<> '' THEN
        dmgs.vcliente.ORDEN := ARORDEN.SORDEN
     ELSE
        dmgs.vcliente.ORDEN := ordencliente;
     dmgs.vcliente.ID  :=' where '+ aux;
     dmgs.vcliente.borrado := ver;
     dmgs.vcliente.TIPO := '3';
     dmgs.cdsq_cliente.Open ;
  end;
end;

procedure Tclientes.FormPaint(Sender: TObject);
begin
 pdatos.Left := 10 + (ClientWidth - ancho ) div 2 ;
end;


procedure Tclientes.DBEdit33Exit(Sender: TObject);
begin
    DBEDIT21EXIT(SENDER);
    dc1.ENTIDAD := DMGS.cdsq_cLIENTECC_BANCO.AsString;
    dc1.OFICINA := DMGS.cdsq_cLIENTECC_oficina.AsString;
    dc1.CCC := DMGS.cdsq_cLIENTECC_CC.AsString;
    IF DMGS.CDSQ_CLIENTECC_DC.AsString <> inttostr(dc1.DC1) + inttostr(dc1.DC2) THEN
    BEGIN
      SHOWMESSAGE('LA CUENTA BANCARIA NO ES CORRECTA');
      DBEDIT21.SetFocus ;
    END;
end;

procedure Tclientes.DBEdit21Exit(Sender: TObject);
VAR I,J:SMALLINT;
    AUX:STRING;
    RESULTADO:STRING;
begin
 // RELLENA LA CUENTA DE CEROS A LA IZQUIERDA
 IF ((SENDER AS TDBEDIT).DataSource.State IN [DSEDIT,DSINSERT]) THEN
 BEGIN
    RESULTADO :='0';
 FOR I:=2 TO (SENDER AS TDBEDIT).Field.Size  DO
    RESULTADO := RESULTADO + '0';
 IF TRIM((SENDER AS TDBEDIT).Field.AsString) <> '' THEN
 BEGIN
    AUX :=TRIM((SENDER AS TDBEDIT).Field.AsString);
    I := 1;
    WHILE I <= LENGTH(TRIM((SENDER AS TDBEDIT).Field.AsString)) DO
    BEGIN
      J:= I + ( ((SENDER AS TDBEDIT).FIELD.SIZE) - LENGTH(TRIM((SENDER AS TDBEDIT).Field.AsString)));
      RESULTADO[J] := AUX[I];
      I:= I+1;
    END;
 END;
 (SENDER AS TDBEDIT).Field.AsString := RESULTADO;
 END;
end;


end.
