unit GESTISHOP;

interface

uses
  Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,
  DBClient, GESTISHOP_TLB, StdVcl, Provider, Db, DBTables, DBXpress, FMTBcd,
  SqlExpr,dialogs, drintf,VARIANTS, DBLocal, STRUTILS,math;

type
  TMIRECORD = RECORD
    NUMERO,VECES:INTEGER;
    TIPO,ORDEN,ORDENLINEA,BORRADO,EMPRESA,ANYO,ANYO1,ID,ID1,TIPOEMPRESA,GRUPO,ID_SERIE:STRING;
  END;

   FicheroConfiguracion=packed record
      user_name,password:STRING[254];
   end;



    TAGESTISHOP = class(TRemoteDataModule, IGESTISHOP3)
    SQLConnection1: TSQLConnection;
    Q_ACTUALIZAR: TSQLDataSet;
    DSPQ_ACTUALIZAR: TDataSetProvider;
    Q_AUX: TSQLDataSet;
    Q_FACTURAS: TSQLDataSet;
    DSPQ_FACTURAS: TDataSetProvider;
    Q_FACTURASNUM_FACT: TIntegerField;
    Q_FACTURASBASE_FACT: TFloatField;
    Q_FACTURASNIF: TStringField;
    Q_FACTURASFECHA_FACTURA: TDateField;
    Q_FACTURASCOBRADO: TIntegerField;
    Q_FACTURASIMPORTEIVA: TFloatField;
    Q_FACTURASIVA: TFloatField;
    Q_PROVEEDOR_ACREEDOR: TSQLDataSet;
    DSPQ_PROVEEDOR_ACREEDOR: TDataSetProvider;
    Q_FPROVEEDOR: TSQLDataSet;
    DSPQ_FPROVEEDOR: TDataSetProvider;
    Q_MAXIMO: TSQLDataSet;
    DSPQ_MAXIMO: TDataSetProvider;
    Q_TIPOS: TSQLDataSet;
    DSPQ_TIPOS: TDataSetProvider;
    QMD_TIPOS: TSQLDataSet;
    DSMD_PROVEEDOR: TDataSource;
    QMD_PROVEEDOR: TSQLDataSet;
    DSPQ_MDPROVEEDOR: TDataSetProvider;
    Q_FAMILIAS: TSQLDataSet;
    DSPQ_FAMILIAS: TDataSetProvider;
    Q_FAMILIASAUX: TSQLDataSet;
    DSPQ_FAMILIASAUX: TDataSetProvider;
    Q_ARTICULOS: TSQLDataSet;
    DSPQ_ARTICULOS: TDataSetProvider;
    Q_COLORES: TSQLDataSet;
    DSPQ_COLORES: TDataSetProvider;
    Q_COLORESAUX: TSQLDataSet;
    DSPQ_COLORESAUX: TDataSetProvider;
    Q_EAN: TSQLDataSet;
    DSPQ_EAN: TDataSetProvider;
    Q_CLIENTES: TSQLDataSet;
    DSPQ_CLIENTES: TDataSetProvider;
    Q_FCLIENTE: TSQLDataSet;
    DSPQ_FCLIENTE: TDataSetProvider;
    Q_CLIENTEAUX: TSQLDataSet;
    DSPQ_CLIENTEAUX: TDataSetProvider;
    Q_SERIES: TSQLDataSet;
    DSPQ_SERIES: TDataSetProvider;
    Q_SERIESAUX: TSQLDataSet;
    DSPQ_SERIESAUX: TDataSetProvider;
    Q_EMPRESA: TSQLDataSet;
    DSPQ_EMPRESA: TDataSetProvider;
    Q_EMPRESAAUX: TSQLDataSet;
    DSPQ_EMPRESAAUX: TDataSetProvider;
    QMD_LINPRESUPUESTO: TSQLDataSet;
    DSPRESUPUESTO: TDataSource;
    QMD_PRESUPUESTO: TSQLDataSet;
    DSPQ_MDPRESUPUESTO: TDataSetProvider;
    Q_ARTICULOSAUX: TSQLDataSet;
    DSPQ_ARTICULOSAUX: TDataSetProvider;
    Q_PROCEDURE: TSQLDataSet;
    DSPQ_PROCEDURE: TDataSetProvider;
    Q_ARTICULOEAN: TSQLDataSet;
    DSPQ_ARTICULOEAN: TDataSetProvider;
    QMD_LINEAENTRADA: TSQLDataSet;
    DSENTRADAS: TDataSource;
    QMD_ENTRADAS: TSQLDataSet;
    DSPQ_MDENTRADAS: TDataSetProvider;
    q_proveedor_acreedoraux: TSQLDataSet;
    dspq_proveedor_acreedoraux: TDataSetProvider;
    Q_MDLINEAALBARAN: TSQLDataSet;
    DSALBARAN: TDataSource;
    Q_MDALBARAN: TSQLDataSet;
    DSPQ_MDALBARAN: TDataSetProvider;
    Q_MDLINPRESUPUESTOAUX: TSQLDataSet;
    DSPRESUPUESTOAUX: TDataSource;
    Q_MDPRESUPUESTOAUX: TSQLDataSet;
    DSPQ_MDPRESUPUESTOAUX: TDataSetProvider;
    Q_MDLINEAFACTURA: TSQLDataSet;
    DSFACTURA: TDataSource;
    Q_MDFACTURA: TSQLDataSet;
    DSPQ_MDFACTURA: TDataSetProvider;
    Q_MDLINEAALBARANAUX: TSQLDataSet;
    DSALBARANAUX: TDataSource;
    Q_MDALBARANAUX: TSQLDataSet;
    DSPQ_MDALBARANAUX: TDataSetProvider;
    Q_FORMAPAGO: TSQLDataSet;
    DSPQ_FORMAPAGO: TDataSetProvider;
    Q_FORMAPAGOAUX: TSQLDataSet;
    DSPQ_FORMAPAGOAUX: TDataSetProvider;
    Q_MDLINEACOBRO: TSQLDataSet;
    DSCOBRO: TDataSource;
    Q_MDCOBRO: TSQLDataSet;
    DSPQ_MDCOBRO: TDataSetProvider;
    Q_MDLINEAFACTURAAUX: TSQLDataSet;
    DSFACTURAAUX: TDataSource;
    Q_MDFACTURAAUX: TSQLDataSet;
    DSPQ_MDFACTURAAUX: TDataSetProvider;
    Q_MDLINEACOBROAUX: TSQLDataSet;
    DSCOBROAUX: TDataSource;
    Q_MDCOBROAUX: TSQLDataSet;
    DSPQ_MDCOBROAUX: TDataSetProvider;
    Q_MDFACTURAAUXNOMBRECLIENTE: TStringField;
    Q_MDCOBROAUXNOMBRECLIENTE: TStringField;
    Q_MDALBARANAUXNOMBRECLIENTE: TStringField;
    Q_MDPRESUPUESTOAUXNOMBRECLIENTE: TStringField;
    QMD_PRESUPUESTONOMBRECLIENTE: TStringField;
    Q_MDALBARANNOMBRECLIENTE: TStringField;
    Q_MDFACTURANOMBRECLIENTE: TStringField;
    Q_MDCOBRONOMBRECLIENTE: TStringField;
    Q_TARIFAS: TSQLDataSet;
    DSPQ_TARIFAS: TDataSetProvider;
    Q_TARIFASnombreproveedor: TStringField;
    Q_TARIFASAUX: TSQLDataSet;
    DSPQ_TARIFASAUX: TDataSetProvider;
    Q_TARIFASAUXNOMBREPROVEEDOR: TStringField;
    Q_ALMACEN: TSQLDataSet;
    DSPQ_ALMACEN: TDataSetProvider;
    Q_ALMACENAUX: TSQLDataSet;
    DSPQ_ALMACENAUX: TDataSetProvider;
    QMD_LINEASALIDA: TSQLDataSet;
    DSSALIDA: TDataSource;
    QMD_SALIDA: TSQLDataSet;
    DSPQ_MDSALIDA: TDataSetProvider;
    Q_AVISO: TSQLDataSet;
    DSPQ_AVISO: TDataSetProvider;
    Q_AVISOAUX: TSQLDataSet;
    DSPQ_AVISOAUX: TDataSetProvider;
    Q_PEDIDOSPENDIENTES: TSQLDataSet;
    DSPQ_PEDIDOSPENDIENTES: TDataSetProvider;
    Q_PEDIDOSPENDIENTESAUX: TSQLDataSet;
    DSPQ_PEDIDOSPENDIENTESAUX: TDataSetProvider;
    Q_MDLINEATICKET: TSQLDataSet;
    DSTICKET: TDataSource;
    Q_MDTICKET: TSQLDataSet;
    DSPQ_MDTICKET: TDataSetProvider;
    Q_MDALBARANAUXNOMBRE: TStringField;
    Q_OPCIONESNUMERICAS: TSQLDataSet;
    DSPQ_OPCIONESNUMERICAS: TDataSetProvider;
    Q_OPCIONESNUMERICASID_EMPRESA: TSmallintField;
    Q_OPCIONESNUMERICASANYO: TSmallintField;
    Q_OPCIONESNUMERICASID_COBRO: TIntegerField;
    Q_OPCIONESNUMERICASID_ENTRADA: TIntegerField;
    Q_OPCIONESNUMERICASID_PRESUPUESTO: TIntegerField;
    Q_OPCIONESNUMERICASID_SALIDA: TSmallintField;
    Q_OPCIONESNUMERICASID_AVISO: TIntegerField;
    Q_OPCIONESNUMERICASNOMBREEMPRESA: TStringField;
    Q_LISTADOENTRADA: TSQLDataSet;
    DSPQ_LISTADOENTRADA: TDataSetProvider;
    Q_LISTADOENTRADATOTAL: TSQLDataSet;
    DSPQ_LISTADOENTRADATOTAL: TDataSetProvider;
    Q_MDALBARANAUXID_ALBARAN: TIntegerField;
    Q_MDALBARANAUXANYO: TSmallintField;
    Q_MDALBARANAUXID_EMPRESA: TSmallintField;
    Q_MDALBARANAUXID_SERIE: TStringField;
    Q_MDALBARANAUXFECHA: TDateField;
    Q_MDALBARANAUXID_CLIENTE: TIntegerField;
    Q_MDALBARANAUXOBSERVACIONES: TStringField;
    Q_MDALBARANAUXID_PRESUPUESTO: TIntegerField;
    Q_MDALBARANAUXANULADO: TSmallintField;
    Q_MDALBARANAUXCOBRADO: TSmallintField;
    Q_MDALBARANAUXID_FORMA: TStringField;
    Q_TARIFASID_PROVEEDOR: TIntegerField;
    Q_TARIFASART_PROVEEDOR: TStringField;
    Q_TARIFASID_ARTICULO: TStringField;
    Q_TARIFASGRUPO: TStringField;
    Q_TARIFASGDESCRIPCION: TStringField;
    Q_TARIFASNOMBRE: TStringField;
    Q_TARIFASOBSERVACIONES: TStringField;
    Q_TARIFASFECHA: TDateField;
    Q_TARIFASDIAS_SUMINISTRO: TSmallintField;
    Q_TARIFASEAN_FABRICANTE: TStringField;
    Q_TARIFASMARCA: TStringField;
    Q_TARIFASBRAZOS: TSmallintField;
    Q_TARIFASID_COLOR: TStringField;
    Q_TARIFASAUXID_PROVEEDOR: TIntegerField;
    Q_TARIFASAUXART_PROVEEDOR: TStringField;
    Q_TARIFASAUXID_ARTICULO: TStringField;
    Q_TARIFASAUXGRUPO: TStringField;
    Q_TARIFASAUXGDESCRIPCION: TStringField;
    Q_TARIFASAUXNOMBRE: TStringField;
    Q_TARIFASAUXOBSERVACIONES: TStringField;
    Q_TARIFASAUXFECHA: TDateField;
    Q_TARIFASAUXDIAS_SUMINISTRO: TSmallintField;
    Q_TARIFASAUXEAN_FABRICANTE: TStringField;
    Q_TARIFASAUXMARCA: TStringField;
    Q_TARIFASAUXBRAZOS: TSmallintField;
    Q_TARIFASAUXID_COLOR: TStringField;
    Q_MDTICKETNOMBRECLIENTE: TStringField;
    Q_MDTICKETID_TICKET: TIntegerField;
    Q_MDTICKETID_EMPRESA: TSmallintField;
    Q_MDTICKETANYO: TSmallintField;
    Q_MDTICKETID_SERIE: TStringField;
    Q_MDTICKETIMPRESO: TSmallintField;
    Q_MDTICKETID_CLIENTE: TIntegerField;
    Q_MDTICKETCOBRADO: TSmallintField;
    Q_TICKETAUX: TSQLDataSet;
    DSPQ_TICKETAUX: TDataSetProvider;
    Q_TICKETAUXID_TICKET: TIntegerField;
    Q_TICKETAUXID_EMPRESA: TSmallintField;
    Q_TICKETAUXNOMBRECLIENTE: TStringField;
    Q_TICKETAUXANYO: TSmallintField;
    Q_TICKETAUXID_SERIE: TStringField;
    Q_TICKETAUXIMPRESO: TSmallintField;
    Q_TICKETAUXID_CLIENTE: TIntegerField;
    Q_TICKETAUXCOBRADO: TSmallintField;
    Q_LARTICULOS: TSQLDataSet;
    DSPQ_LARTICULOS: TDataSetProvider;
    Q_MDLINEATICKETAUX: TSQLDataSet;
    Q_MDTICKETAUX: TSQLDataSet;
    DSPQ_MDTICKETAUX: TDataSetProvider;
    DSTICKETAUX: TDataSource;
    Q_MDTICKETAUXNOMBRECLIENTE: TStringField;
    Q_MDTICKETAUXID_TICKET: TIntegerField;
    Q_MDTICKETAUXID_EMPRESA: TSmallintField;
    Q_MDTICKETAUXANYO: TSmallintField;
    Q_MDTICKETAUXID_SERIE: TStringField;
    Q_MDTICKETAUXIMPRESO: TSmallintField;
    Q_MDTICKETAUXID_CLIENTE: TIntegerField;
    Q_MDTICKETAUXCOBRADO: TSmallintField;
    Q_MDTICKETAUXNOMBRE: TStringField;
    Q_FACTURASALBARANES: TSQLDataSet;
    DSPQ_FACTURASALBARANES: TDataSetProvider;
    Q_FALBARANESAUX: TSQLDataSet;
    DSPQ_FALBARANESAUX: TDataSetProvider;
    Q_MDTICKETAUXFORMAPAGO: TStringField;
    Q_MDTICKETFORMAPAGO: TStringField;
    Q_TICKETAUXFORMAPAGO: TStringField;
    Q_MDTICKETFORMAPAGODESCRIPCION: TStringField;
    Q_ARQUEDECAJA: TSQLDataSet;
    DSPQ_ARQUEODECAJA: TDataSetProvider;
    Q_MDALBARANAUXFECHACOBRO: TDateField;
    Q_MDALBARANAUXHORACOBRO: TTimeField;
    Q_TICKETAUXHORACOBRO: TTimeField;
    Q_TICKETAUXFECHACOBRO: TDateField;
    Q_MDTICKETHORACOBRO: TTimeField;
    Q_MDTICKETFECHACOBRO: TDateField;
    Q_MDTICKETAUXHORACOBRO: TTimeField;
    Q_MDTICKETAUXFECHACOBRO: TDateField;
    Q_TICKETAUXHORA: TTimeField;
    Q_MDTICKETAUXHORA: TTimeField;
    Q_MDTICKETHORA: TTimeField;
    Q_MDTICKETAUXFECHA: TDateField;
    Q_MDTICKETFECHA: TDateField;
    Q_TICKETAUXFECHA: TDateField;
    Q_MDALBARANID_ALBARAN: TIntegerField;
    Q_MDALBARANANYO: TSmallintField;
    Q_MDALBARANID_EMPRESA: TSmallintField;
    Q_MDALBARANID_SERIE: TStringField;
    Q_MDALBARANFECHA: TDateField;
    Q_MDALBARANID_CLIENTE: TIntegerField;
    Q_MDALBARANOBSERVACIONES: TStringField;
    Q_MDALBARANID_PRESUPUESTO: TIntegerField;
    Q_MDALBARANANULADO: TSmallintField;
    Q_MDALBARANCOBRADO: TSmallintField;
    Q_MDALBARANID_FORMA: TStringField;
    Q_MDALBARANHORACOBRO: TTimeField;
    Q_MDALBARANFECHACOBRO: TDateField;
    Q_MDFACTURAID_FACTURA: TIntegerField;
    Q_MDFACTURAANYO: TSmallintField;
    Q_MDFACTURAID_EMPRESA: TSmallintField;
    Q_MDFACTURAID_SERIE: TStringField;
    Q_MDFACTURAFECHA: TDateField;
    Q_MDFACTURAID_CLIENTE: TIntegerField;
    Q_MDFACTURAOBSERVACIONES: TStringField;
    Q_MDFACTURAID_PRESUPUESTO: TIntegerField;
    Q_MDFACTURAID_ALBARAN: TIntegerField;
    Q_MDFACTURAANULADO: TSmallintField;
    Q_MDFACTURACOBRADO: TSmallintField;
    Q_MDFACTURAASIENTO: TIntegerField;
    Q_MDFACTURAID_FORMA: TStringField;
    Q_MDFACTURAALBANYO: TSmallintField;
    Q_MDFACTURAALBID_SERIE: TStringField;
    Q_MDFACTURATICANYO: TSmallintField;
    Q_MDFACTURATICID_SERIE: TStringField;
    Q_MDFACTURAID_TICKET: TIntegerField;
    Q_MDFACTURAIMPRESO: TSmallintField;
    Q_MDFACTURAHORACOBRO: TTimeField;
    Q_MDFACTURAFECHACOBRO: TDateField;
    Q_MDFACTURAAUXFECHACOBRO: TDateField;
    Q_MDFACTURAAUXHORACOBRO: TTimeField;
    Q_MDFACTURAAUXID_TICKET: TIntegerField;
    Q_MDFACTURAAUXID_FACTURA: TIntegerField;
    Q_MDFACTURAAUXANYO: TSmallintField;
    Q_MDFACTURAAUXID_EMPRESA: TSmallintField;
    Q_MDFACTURAAUXID_SERIE: TStringField;
    Q_MDFACTURAAUXFECHA: TDateField;
    Q_MDFACTURAAUXID_CLIENTE: TIntegerField;
    Q_MDFACTURAAUXOBSERVACIONES: TStringField;
    Q_MDFACTURAAUXID_PRESUPUESTO: TIntegerField;
    Q_MDFACTURAAUXID_ALBARAN: TIntegerField;
    Q_MDFACTURAAUXANULADO: TSmallintField;
    Q_MDFACTURAAUXCOBRADO: TSmallintField;
    Q_MDFACTURAAUXASIENTO: TIntegerField;
    Q_MDFACTURAAUXID_FORMA: TStringField;
    Q_MDFACTURAAUXTICANYO: TSmallintField;
    Q_MDFACTURAAUXTICID_SERIE: TStringField;
    Q_MDFACTURAAUXNOMBRE: TStringField;
    Q_MDFACTURAAUXIMPRESO: TSmallintField;
    Q_ARTICULOSCOD_ARTICULO: TIntegerField;
    Q_ARTICULOSCOD_FAMILIA: TStringField;
    Q_ARTICULOSPROFUNDIDAD: TSmallintField;
    Q_ARTICULOSID_ARTICULO: TStringField;
    Q_ARTICULOSDESCRIPCION: TStringField;
    Q_ARTICULOSDESCRIPCIONTICKET: TStringField;
    Q_ARTICULOSBENEFICIO: TFloatField;
    Q_ARTICULOSPRECIO_COSTE: TFloatField;
    Q_ARTICULOSPRECIO_MAX_COSTE: TFloatField;
    Q_ARTICULOSPRECIO_MIN_COSTE: TFloatField;
    Q_ARTICULOSPRECIO_MED_COSTE: TFloatField;
    Q_ARTICULOSPRECIO_VENTA: TFloatField;
    Q_ARTICULOSIVA: TFloatField;
    Q_ARTICULOSBRAZOS: TIntegerField;
    Q_ARTICULOSID_COLOR: TStringField;
    Q_ARTICULOSPVPCAT: TFloatField;
    Q_ARTICULOSDESCUENTO: TFloatField;
    Q_ARTICULOSMARCA: TStringField;
    Q_ARTICULOSIMAGEN: TBlobField;
    Q_ARTICULOSTRANS: TFloatField;
    Q_ARTICULOSART_PROVEEDOR: TStringField;
    Q_ARTICULOSID_PROVEEDOR: TIntegerField;
    Q_ARTICULOSOBSERVACIONES: TStringField;
    Q_ARTICULOSOLDART_PROVEEDOR: TStringField;
    Q_ARTICULOSOLDID_PROVEEDOR: TIntegerField;
    Q_ARTICULOSMOSTRARIMAGEN: TSmallintField;
    Q_ARTICULOSMOSTRARDESCRIPCION: TSmallintField;
    Q_ARTICULOSPOSICION: TSmallintField;
    Q_ARTICULOSPOSICIONUSO: TSmallintField;
    Q_ARTICULOSDESCRIPCIONBOTON: TStringField;
    Q_ARTICULOSMOSTRARPOSICION: TSmallintField;
    Q_ARTICULOSMOSTRARPOSICIONUSO: TSmallintField;
    Q_ARTICULOSBORRADO: TSmallintField;
    Q_ARTICULOSAUXCOD_ARTICULO: TIntegerField;
    Q_ARTICULOSAUXCOD_FAMILIA: TStringField;
    Q_ARTICULOSAUXPROFUNDIDAD: TSmallintField;
    Q_ARTICULOSAUXID_ARTICULO: TStringField;
    Q_ARTICULOSAUXDESCRIPCION: TStringField;
    Q_ARTICULOSAUXDESCRIPCIONTICKET: TStringField;
    Q_ARTICULOSAUXBENEFICIO: TFloatField;
    Q_ARTICULOSAUXPRECIO_COSTE: TFloatField;
    Q_ARTICULOSAUXPRECIO_MAX_COSTE: TFloatField;
    Q_ARTICULOSAUXPRECIO_MIN_COSTE: TFloatField;
    Q_ARTICULOSAUXPRECIO_MED_COSTE: TFloatField;
    Q_ARTICULOSAUXPRECIO_VENTA: TFloatField;
    Q_ARTICULOSAUXIVA: TFloatField;
    Q_ARTICULOSAUXBRAZOS: TIntegerField;
    Q_ARTICULOSAUXID_COLOR: TStringField;
    Q_ARTICULOSAUXPVPCAT: TFloatField;
    Q_ARTICULOSAUXDESCUENTO: TFloatField;
    Q_ARTICULOSAUXMARCA: TStringField;
    Q_ARTICULOSAUXIMAGEN: TBlobField;
    Q_ARTICULOSAUXTRANS: TFloatField;
    Q_ARTICULOSAUXART_PROVEEDOR: TStringField;
    Q_ARTICULOSAUXID_PROVEEDOR: TIntegerField;
    Q_ARTICULOSAUXOBSERVACIONES: TStringField;
    Q_ARTICULOSAUXOLDART_PROVEEDOR: TStringField;
    Q_ARTICULOSAUXOLDID_PROVEEDOR: TIntegerField;
    Q_ARTICULOSAUXMOSTRARIMAGEN: TSmallintField;
    Q_ARTICULOSAUXMOSTRARDESCRIPCION: TSmallintField;
    Q_ARTICULOSAUXPOSICION: TSmallintField;
    Q_ARTICULOSAUXPOSICIONUSO: TSmallintField;
    Q_ARTICULOSAUXDESCRIPCIONBOTON: TStringField;
    Q_ARTICULOSAUXMOSTRARPOSICION: TSmallintField;
    Q_ARTICULOSAUXMOSTRARPOSICIONUSO: TSmallintField;
    Q_ARTICULOSAUXBORRADO: TSmallintField;
    Q_ARTICULOSAUXnombreproveedor: TStringField;
    Q_MDCOBROID_SERIE: TStringField;
    Q_MDCOBROID_COBRO: TIntegerField;
    Q_MDCOBROANYO: TSmallintField;
    Q_MDCOBROTIPO: TStringField;
    Q_MDCOBROID_EMPRESA: TSmallintField;
    Q_MDCOBROID: TIntegerField;
    Q_MDCOBROOBSERVACIONES: TStringField;
    Q_MDCOBROBASE: TFloatField;
    Q_MDCOBROESTADO: TStringField;
    Q_MDCOBROID_CLIENTE: TIntegerField;
    Q_MDCOBROTOTAL_COBRADO: TFloatField;
    Q_MDCOBROANYOSERIE: TSmallintField;
    Q_MDCOBROAUXID_COBRO: TIntegerField;
    Q_MDCOBROAUXANYO: TSmallintField;
    Q_MDCOBROAUXID_EMPRESA: TSmallintField;
    Q_MDCOBROAUXTIPO: TStringField;
    Q_MDCOBROAUXID: TIntegerField;
    Q_MDCOBROAUXID_SERIE: TStringField;
    Q_MDCOBROAUXANYOSERIE: TSmallintField;
    Q_MDCOBROAUXOBSERVACIONES: TStringField;
    Q_MDCOBROAUXBASE: TFloatField;
    Q_MDCOBROAUXESTADO: TStringField;
    Q_MDCOBROAUXID_CLIENTE: TIntegerField;
    Q_MDCOBROAUXTOTAL_COBRADO: TFloatField;
    Q_TARIFASPRECIO: TFloatField;
    Q_TARIFASDESCUENTO: TFloatField;
    Q_TARIFASNETO: TFloatField;
    Q_TARIFASIVA: TFloatField;
    Q_TARIFASPVPCAT: TFloatField;
    Q_TARIFASAUXPRECIO: TFloatField;
    Q_TARIFASAUXDESCUENTO: TFloatField;
    Q_TARIFASAUXNETO: TFloatField;
    Q_TARIFASAUXIVA: TFloatField;
    Q_TARIFASAUXPVPCAT: TFloatField;
    Q_MDALBARANAUXDESCUENTOEURO: TFloatField;
    Q_MDALBARANAUXENTREGA: TFloatField;
    Q_MDALBARANAUXDEVOLUCION: TFloatField;
    Q_MDALBARANAUXTOTALCOBRADO: TFloatField;
    Q_MDALBARANAUXTOTALDESCUENTO: TFloatField;
    Q_MDALBARANAUXBASE_ALBARANSINIVA: TFloatField;
    Q_MDALBARANAUXIVA: TFloatField;
    Q_MDALBARANAUXBASE_ALBARAN: TFloatField;
    Q_MDALBARANAUXDESCUENTO: TFloatField;
    Q_MDALBARANAUXRE: TFloatField;
    Q_MDALBARANAUXTOTAL_COBRADO: TFloatField;
    Q_MDALBARANIVA: TFloatField;
    Q_MDALBARANBASE_ALBARAN: TFloatField;
    Q_MDALBARANBASE_ALBARANSINIVA: TFloatField;
    Q_MDALBARANDESCUENTO: TFloatField;
    Q_MDALBARANRE: TFloatField;
    Q_MDALBARANTOTAL_COBRADO: TFloatField;
    Q_MDALBARANDESCUENTOEURO: TFloatField;
    Q_MDALBARANENTREGA: TFloatField;
    Q_MDALBARANDEVOLUCION: TFloatField;
    Q_MDALBARANTOTALCOBRADO: TFloatField;
    Q_MDALBARANTOTALDESCUENTO: TFloatField;
    Q_MDFACTURAIVA: TFloatField;
    Q_MDFACTURABASE_FACTURA: TFloatField;
    Q_MDFACTURADESCUENTO: TFloatField;
    Q_MDFACTURARE: TFloatField;
    Q_MDFACTURATOTAL_COBRADO: TFloatField;
    Q_MDFACTURADESCUENTOEURO: TFloatField;
    Q_MDFACTURAENTREGA: TFloatField;
    Q_MDFACTURADEVOLUCION: TFloatField;
    Q_MDFACTURATOTALCOBRADO: TFloatField;
    Q_MDFACTURATOTALDESCUENTO: TFloatField;
    Q_MDFACTURAAUXENTREGA: TFloatField;
    Q_MDFACTURAAUXDEVOLUCION: TFloatField;
    Q_MDFACTURAAUXTOTALCOBRADO: TFloatField;
    Q_MDFACTURAAUXTOTALDESCUENTO: TFloatField;
    Q_MDFACTURAAUXDESCUENTOEURO: TFloatField;
    Q_MDFACTURAAUXIVA: TFloatField;
    Q_MDFACTURAAUXBASE_FACTURA: TFloatField;
    Q_MDFACTURAAUXDESCUENTO: TFloatField;
    Q_MDFACTURAAUXRE: TFloatField;
    Q_MDFACTURAAUXTOTAL_COBRADO: TFloatField;
    Q_MDPRESUPUESTOAUXID_PRESUPUESTO: TIntegerField;
    Q_MDPRESUPUESTOAUXID_EMPRESA: TSmallintField;
    Q_MDPRESUPUESTOAUXID_CLIENTE: TIntegerField;
    Q_MDPRESUPUESTOAUXBASE_PRESUPUESTO: TFloatField;
    Q_MDPRESUPUESTOAUXFECHA: TDateField;
    Q_MDPRESUPUESTOAUXBASE_PRESUPUESTOSINIVA: TFloatField;
    Q_MDPRESUPUESTOAUXDESCUENTO: TFloatField;
    Q_MDPRESUPUESTOAUXOBSERVACIONES: TStringField;
    Q_MDPRESUPUESTOAUXVALIDEZ: TDateField;
    Q_MDPRESUPUESTOAUXANYO: TSmallintField;
    Q_MDPRESUPUESTOAUXNOMBRE: TStringField;
    QMD_PRESUPUESTOID_PRESUPUESTO: TIntegerField;
    QMD_PRESUPUESTOID_EMPRESA: TSmallintField;
    QMD_PRESUPUESTOANYO: TSmallintField;
    QMD_PRESUPUESTOID_CLIENTE: TIntegerField;
    QMD_PRESUPUESTOBASE_PRESUPUESTO: TFloatField;
    QMD_PRESUPUESTOBASE_PRESUPUESTOSINIVA: TFloatField;
    QMD_PRESUPUESTOFECHA: TDateField;
    QMD_PRESUPUESTODESCUENTO: TFloatField;
    QMD_PRESUPUESTOIVA: TFloatField;
    QMD_PRESUPUESTOVALIDEZ: TDateField;
    QMD_PRESUPUESTOOBSERVACIONES: TStringField;
    QMD_PRESUPUESTORE: TFloatField;
    Q_MDPRESUPUESTOAUXRE: TFloatField;
    Q_MDPRESUPUESTOAUXIVA: TFloatField;
    Q_MDTICKETAUXDESCUENTO: TFloatField;
    Q_MDTICKETAUXDESCUENTOEURO: TFloatField;
    Q_MDTICKETAUXBASE_TICKET: TFloatField;
    Q_MDTICKETAUXBASE_TICKETSINIVA: TFloatField;
    Q_MDTICKETAUXIVA: TFloatField;
    Q_MDTICKETAUXENTREGA: TFloatField;
    Q_MDTICKETAUXDEVOLUCION: TFloatField;
    Q_MDTICKETAUXTOTALCOBRADO: TFloatField;
    Q_MDTICKETAUXTOTALDESCUENTO: TFloatField;
    Q_MDTICKETDESCUENTO: TFloatField;
    Q_MDTICKETDESCUENTOEURO: TFloatField;
    Q_MDTICKETBASE_TICKET: TFloatField;
    Q_MDTICKETBASE_TICKETSINIVA: TFloatField;
    Q_MDTICKETIVA: TFloatField;
    Q_MDTICKETENTREGA: TFloatField;
    Q_MDTICKETDEVOLUCION: TFloatField;
    Q_MDTICKETTOTALCOBRADO: TFloatField;
    Q_MDTICKETTOTALDESCUENTO: TFloatField;
    Q_TICKETAUXDESCUENTO: TFloatField;
    Q_TICKETAUXDESCUENTOEURO: TFloatField;
    Q_TICKETAUXBASE_TICKET: TFloatField;
    Q_TICKETAUXBASE_TICKETSINIVA: TFloatField;
    Q_TICKETAUXIVA: TFloatField;
    Q_TICKETAUXENTREGA: TFloatField;
    Q_TICKETAUXDEVOLUCION: TFloatField;
    Q_TICKETAUXTOTALCOBRADO: TFloatField;
    Q_TICKETAUXTOTALDESCUENTO: TFloatField;
    Q_ARTICULOSAUXALMACENABLE: TSmallintField;
    Q_ARTICULOSAUXTRANSPORTES: TSmallintField;
    Q_ARTICULOSAUXFINANCIEROS: TSmallintField;
    Q_ARTICULOSAUXOTROSCOSTES: TSmallintField;
    Q_ARTICULOSALMACENABLEBORRAR: TFloatField;
    Q_ARTICULOScolordescripcion: TStringField;
    Q_ARTICULOSfamiliadescripcion: TStringField;
    Q_ARTICULOSnombreproveedor: TStringField;
    Q_ARTICULOSALMACENABLE: TSmallintField;
    Q_ARTICULOSTRANSPORTES: TSmallintField;
    Q_ARTICULOSFINANCIEROS: TSmallintField;
    Q_ARTICULOSOTROSCOSTES: TSmallintField;
    Q_AUX1: TSQLDataSet;
    Q_ARTICULOSPVPPROV: TFloatField;
    Q_ARTICULOSPVP2: TFloatField;
    Q_ARTICULOSAUXALMACENABLEBORRAR: TFloatField;
    Q_ARTICULOSAUXPVPPROV: TFloatField;
    Q_ARTICULOSAUXPVP2: TFloatField;
    Q_ARTICULOSFMODIFICACION: TDateField;
    Q_ARTICULOSAUXFMODIFICACION: TDateField;
    Q_MDALBARANAUXHORA: TTimeField;
    Q_MDALBARANHORA: TTimeField;
    Q_MDFACTURAAUXHORA: TTimeField;
    Q_MDFACTURAHORA: TTimeField;
    Q_MDALBARANFECHAFIN: TDateField;
    Q_MDALBARANAUXFECHAFIN: TDateField;
    Q_TIPOSIVA: TSQLDataSet;
    DSPQ_TIPOSIVA: TDataSetProvider;
    Q_ALMACENDETALLE2: TSQLDataSet;
    DSPQ_ALMACENDETALLE2: TDataSetProvider;
    Q_ARTICULOSCONTADOR: TIntegerField;
    Q_ARTICULOSAUXCONTADOR: TIntegerField;
    Q_MDFACTURAAUXNIFCLIENTE: TStringField;
    procedure DSPQ_ACTUALIZARAfterExecute(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_ACTUALIZARBeforeExecute(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_ACTUALIZARUpdateError(Sender: TObject;
      DataSet: TCustomClientDataSet; E: EUpdateError;
      UpdateKind: TUpdateKind; var Response: TResolverResponse);
    procedure DSPQT_CLIENTESBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQT_CLIENTESAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_LARTICULOSBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_ARQUEODECAJAAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_ARQUEODECAJABeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);

    procedure DSPQ_LARTICULOSAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQT_CLIENTESGetData(Sender: TObject;
      DataSet: TCustomClientDataSet);
    procedure DSPQT_CLIENTESUpdateData(Sender: TObject;
      DataSet: TCustomClientDataSet);
    procedure DSPQ_CLIENTESBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_CLIENTESAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_CLIENTESGetData(Sender: TObject;
      DataSet: TCustomClientDataSet);
    procedure DSPQ_FDLGPLANTASGetData(Sender: TObject;
      DataSet: TCustomClientDataSet);


    procedure DSPQ_MAXPLANTAAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_FORMAPAGOUpdateError(Sender: TObject;
      DataSet: TCustomClientDataSet; E: EUpdateError;
      UpdateKind: TUpdateKind; var Response: TResolverResponse);
    procedure DSPQ_EMPRESASUpdateError(Sender: TObject;
      DataSet: TCustomClientDataSet; E: EUpdateError;
      UpdateKind: TUpdateKind; var Response: TResolverResponse);
    procedure DSPQ_SERVICIOSUpdateError(Sender: TObject;
      DataSet: TCustomClientDataSet; E: EUpdateError;
      UpdateKind: TUpdateKind; var Response: TResolverResponse);
    procedure DSPQ_SERVICIOSAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_FACTURASBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure Q_VALORARALBARANESAfterScroll(DataSet: TDataSet);
    procedure Q_TICKETAUXAfterScroll(DataSet: TDataSet);
    procedure DSPQ_FACTURASAfterUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind);
    procedure DSPQ_FACTURASBeforeUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind; var Applied: Boolean);
    procedure DSPQ_FACTURASAfterApplyUpdates(Sender: TObject;
      var OwnerData: OleVariant);
    procedure Q_PREVIO_FACTURASAfterScroll(DataSet: TDataSet);
    procedure Q_INFFACTURASAfterScroll(DataSet: TDataSet);
    procedure DSPQ_PROVEEDOR_ACREEDORAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_PROVEEDOR_ACREEDORBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_FPROVEEDORAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_FPROVEEDORBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MAXIMOAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MAXIMOBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_TIPOSAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_TIPOSBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDPROVEEDORBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDPROVEEDORAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_FAMILIASAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_FAMILIASBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_FAMILIASAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_FAMILIASAUXBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_ARTICULOSAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_ARTICULOSBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_ARTICULOSBeforeUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind; var Applied: Boolean);
    procedure DSPQ_ARTICULOSAfterUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind);
    procedure DSPQ_ARTICULOSAfterApplyUpdates(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_COLORESAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_COLORESBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_COLORESAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_COLORESAUXBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_EANAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_EANBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_PROVEEDOR_ACREEDORUpdateError(Sender: TObject;
      DataSet: TCustomClientDataSet; E: EUpdateError;
      UpdateKind: TUpdateKind; var Response: TResolverResponse);
    procedure DSPQ_COLORESAUXUpdateError(Sender: TObject;
      DataSet: TCustomClientDataSet; E: EUpdateError;
      UpdateKind: TUpdateKind; var Response: TResolverResponse);
    procedure DSPQ_FCLIENTEAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_FCLIENTEBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_CLIENTEAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_CLIENTEAUXBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_SERIESAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_SERIESBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_SERIESAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_SERIESAUXBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_EMPRESAAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_EMPRESABeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_EMPRESAAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_EMPRESAAUXBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDPRESUPUESTOAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDPRESUPUESTOBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDPRESUPUESTOBeforeUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind; var Applied: Boolean);
    procedure DSPQ_ARTICULOSAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_ARTICULOSAUXBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDPRESUPUESTOAfterUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind);
    procedure DSPQ_ARTICULOEANAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_ARTICULOEANBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDPRESUPUESTOAfterApplyUpdates(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_EANUpdateError(Sender: TObject;
      DataSet: TCustomClientDataSet; E: EUpdateError;
      UpdateKind: TUpdateKind; var Response: TResolverResponse);
    procedure DSPQ_EANGetData(Sender: TObject;
      DataSet: TCustomClientDataSet);
    procedure DSPQ_MDENTRADASAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDENTRADASBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDENTRADASAfterUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind);
    procedure dspq_proveedor_acreedorauxAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure dspq_proveedor_acreedorauxBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDALBARANAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDALBARANBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDALBARANAfterUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind);
    procedure DSPQ_MDPRESUPUESTOAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDPRESUPUESTOAUXBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDFACTURAAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDFACTURAAfterUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind);
    procedure DSPQ_MDFACTURABeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDALBARANAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDALBARANAUXBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDTICKETAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDTICKETAUXBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_FORMAPAGOAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_FORMAPAGOBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_FORMAPAGOAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_FORMAPAGOAUXBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDCOBROAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDCOBROBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDCOBROAfterUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind);
    procedure DSPQ_MDFACTURAAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDFACTURAAUXBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDCOBROAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDCOBROAUXBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure Q_MDFACTURAAUXAfterScroll(DataSet: TDataSet);
    procedure Q_MDTICKETAUXAfterScroll(DataSet: TDataSet);
    procedure Q_MDCOBROAUXAfterScroll(DataSet: TDataSet);
    procedure Q_MDALBARANAUXAfterScroll(DataSet: TDataSet);
    procedure Q_MDPRESUPUESTOAUXAfterScroll(DataSet: TDataSet);
    procedure QMD_PRESUPUESTOAfterScroll(DataSet: TDataSet);
    procedure Q_MDALBARANAfterScroll(DataSet: TDataSet);
    procedure Q_MDFACTURAAfterScroll(DataSet: TDataSet);
    procedure Q_MDCOBROAfterScroll(DataSet: TDataSet);
    procedure DSPQ_MDPRESUPUESTOGetData(Sender: TObject;
      DataSet: TCustomClientDataSet);
    procedure DSPQ_TARIFASAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_TARIFASBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure Q_TARIFASAfterScroll(DataSet: TDataSet);
    procedure DSPQ_TARIFASAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_TARIFASAUXBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure Q_TARIFASAUXAfterScroll(DataSet: TDataSet);
    procedure DSPQ_ALMACENBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_ALMACENAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDENTRADASAfterApplyUpdates(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_ALMACENAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_ALMACENAUXBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDSALIDAAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDSALIDABeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDSALIDAAfterApplyUpdates(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDSALIDAAfterUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind);
    procedure DSPQ_MDALBARANAfterApplyUpdates(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDFACTURAAfterApplyUpdates(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_AVISOAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_AVISOBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_AVISOAfterUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind);
    procedure DSPQ_AVISOAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_AVISOAUXBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_PEDIDOSPENDIENTESAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_PEDIDOSPENDIENTESBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_PEDIDOSPENDIENTESAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_PEDIDOSPENDIENTESAUXBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDTICKETAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDTICKETBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDTICKETAfterApplyUpdates(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDTICKETAfterUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind);
    procedure Q_ARTICULOSAfterScroll(DataSet: TDataSet);
    procedure SQLConnection1BeforeConnect(Sender: TObject);
    procedure DSPQ_MDENTRADASBeforeApplyUpdates(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDALBARANBeforeApplyUpdates(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDFACTURABeforeApplyUpdates(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDSALIDABeforeApplyUpdates(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_MDTICKETBeforeApplyUpdates(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_OPCIONESNUMERICASAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_OPCIONESNUMERICASBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure Q_OPCIONESNUMERICASAfterScroll(DataSet: TDataSet);
    procedure DSPQ_LISTADOENTRADAAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_LISTADOENTRADABeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure Q_LISTADOENTRADAAfterScroll(DataSet: TDataSet);
    procedure DSPQ_LISTADOENTRADATOTALAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_LISTADOENTRADATOTALBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure Q_MDTICKETAfterScroll(DataSet: TDataSet);
    procedure DSPQ_FAMILIASAUXGetData(Sender: TObject;
      DataSet: TCustomClientDataSet);
    procedure DSPQ_FACTURASALBARANESAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_FACTURASALBARANESBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_TICKETAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_TICKETAUXBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_FALBARANESAUXBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_FALBARANESAUXAFTERGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure Q_ARTICULOSAUXAfterScroll(DataSet: TDataSet);
    procedure SQLConnection1Login(Database: TSQLConnection;
      LoginParams: TStrings);
    procedure RemoteDataModuleCreate(Sender: TObject);
    procedure DataSetProvider1AfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DataSetProvider1BeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_TIPOSIVAAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_TIPOSIVABeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_ALMACENDETALLE2AfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure DSPQ_ALMACENDETALLE2BeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);

//    procedure DSPQ_MDALBARANBeforeUpdateRecord(Sender: TObject;
//      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
//      UpdateKind: TUpdateKind; var Applied: Boolean);

//    procedure DSPQ_MDALBARANAUXAfterApplyUpdates(Sender: TObject;
//      var OwnerData: OleVariant);
//    procedure RemoteDataModuleCreate(Sender: TObject);
  private
    { Private declarations }
    num_fact,num_abono:integer;
    DARAVISO,DARAVISOSALIDA,daravisoalbaran,DARAVISOFACTURA,DARAVISOTICKET:INTEGER;
    ID_ARTICULO:STRING;
    ID_PRESUPUESTO:INTEGER;

    PROCEDURE OBTENERPARAMETROS(VAR RESULTADO:TMIRECORD;AUX:OLEVARIANT);
    FUNCTION ENALBARAN:BOOLEAN;
    // AUX -> LO PONGO PARA DIFERENCIAR CUANDO SON ENTRADAS Y SALIDAS
    PROCEDURE ACTUALIZARALMACEN(DELTADS:TDATASET;UpdateKind: TUpdateKind;AUX:INTEGER);
    PROCEDURE ACTUALIZARALMACENDETALLE(CODIGO_BARRAS:STRING;SIGNO1,SIGNO2:STRING;CANTIDAD,CANTIDAD2:STRING;TIPO:SMALLINT);
    PROCEDURE ACTUALIZARALMACENDETALLE2(CODIGO_BARRAS:STRING;SIGNO1,SIGNO2:STRING;CANTIDAD,CANTIDAD2:STRING;TIPO:SMALLINT);



  protected
    class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
  public

  TD,TDBORRAR,TDA: TTransactionDesc ;
  PROCEDURE inicializar;



    { Public declarations }
  end;

implementation


CONST
   FILTRO ='-***#';
   LONGFILTRO = 4;// ES LA LONGITUD DEL  LONGITUD DEL FILTRO - 1.
   ARTICULOSCAMPOS =' SELECT * FROM ARTICULOS ';
   EMPRESASCAMPOS = ' SELECT * FROM EMPRESAS ';
   FAMILIASCAMPOS = 'SELECT * FROM FAMILIAS ';
   PRESUPUESTOSCAMPOS = 'SELECT RE,IVA,ID_PRESUPUESTO,ID_EMPRESA,ID_CLIENTE, BASE_PRESUPUESTO, FECHA, DESCUENTO,pr.OBSERVACIONES,VALIDEZ,ANYO,BASE_PRESUPUESTOSINIVA FROM PRESUPUESTOS PR ';
   PRESUPUESTOSAUXCAMPOS = 'SELECT RE,IVA,ID_PRESUPUESTO,ID_EMPRESA,PR.ID_CLIENTE, BASE_PRESUPUESTO, FECHA, DESCUENTO,pr.OBSERVACIONES,VALIDEZ,ANYO,CL.NOMBRE,BASE_PRESUPUESTOSINIVA FROM PRESUPUESTOS PR,CLIENTES CL '+
   ' WHERE PR.ID_CLIENTE=CL.ID_CLIENTE ';
   LINEAPRESUPUESTOSCAMPOS = 'SELECT MARCA,IVA,DESCRIPCION,ID_PRESUPUESTO,ID_EMPRESA,ID_ARTICULO,CANTIDAD, DESCUENTO, PRECIO,IMPORTE,IMPORTE_FACT,BASE_LINEA,ESTADO,LINEA,ART_PROVEEDOR,ID_PROVEEDOR,PRECIO_COSTE,ANYO FROM LINEAS_PRESUPUESTO L ';
   TARIFASCAMPOS = 'SELECT ID_PROVEEDOR,ART_PROVEEDOR,ID_ARTICULO,GRUPO,GDESCRIPCION,NOMBRE,OBSERVACIONES,PRECIO,FECHA,DIAS_SUMINISTRO,DESCUENTO,NETO,IVA,EAN_FABRICANTE,MARCA,BRAZOS,ID_COLOR,PVPCAT FROM TARIFAS_PROVEEDORES ';
   PROVEEDORACREEDORCAMPOS = 'SELECT * FROM PROVEEDOR_ACREEDOR ';
   CLIENTECAMPOS = 'SELECT * FROM CLIENTES ';
   FACTURASCAMPOS = 'SELECT * FROM FACTURAS FA';
   FACTURASAUXCAMPOS = 'SELECT entrega,devolucion,totalcobrado,totaldescuento,DESCUENTOEURO,FECHACOBRO,HORACOBRO,ID_TICKET,TICANYO,TICID_SERIE,ID_FACTURA,ANYO,FA.ID_EMPRESA,ID_SERIE,FECHA,FA.ID_CLIENTE,IVA, '+
   ' fa.OBSERVACIONES,BASE_FACTURA,DESCUENTO,RE,ID_PRESUPUESTO,ID_ALBARAN,ANULADO,COBRADO, '+
   ' ASIENTO,ID_FORMA,TOTAL_COBRADO,CL.NIF,CL.NOMBRE,IMPRESO,fa.hora FROM FACTURAS FA,CLIENTES CL WHERE FA.ID_CLIENTE = CL.ID_CLIENTE ';
   LINEAFACTURACAMPOS = ' SELECT * FROM LINEAS_FACTURA L';
   ALBARANESCAMPOS='SELECT * FROM ALBARANES AL';
   LINEAALBARANESCAMPOS='SELECT * FROM LIN_ALBARAN L';
   TICKETCAMPOS='SELECT * FROM TICKET AL';
   LINEATICKETCAMPOS='SELECT * FROM LINEA_TICKET L';
   TICKETAUXCAMPOS ='SELECT HORACOBRO,FECHACOBRO,ID_TICKET,ID_EMPRESA,ANYO,ID_SERIE,FECHA,DESCUENTO,DESCUENTOEURO,HORA,IMPRESO,BASE_TICKET,BASE_TICKETSINIVA,IVA,TI.ID_CLIENTE,ENTREGA,DEVOLUCION,COBRADO,TOTALCOBRADO,TOTALDESCUENTO,FORMAPAGO'+
   ' ,CL.NOMBRE FROM TICKET TI, CLIENTES CL WHERE CL.ID_CLIENTE = TI.ID_CLIENTE ';

   ALBARANESAUXCAMPOS ='SELECT DESCUENTOEURO,ENTREGA,DEVOLUCION,TOTALCOBRADO,TOTALDESCUENTO,ID_ALBARAN,ANYO,ID_EMPRESA,ID_SERIE,FECHA,AL.ID_CLIENTE,IVA,al.OBSERVACIONES,' +
   ' BASE_ALBARAN,DESCUENTO,RE,ID_PRESUPUESTO,ANULADO,COBRADO,ID_FORMA,TOTAL_COBRADO,CL.NOMBRE,fechacobro,horacobro,base_albaransiniva,al.hora,al.fechafin FROM ALBARANES AL, CLIENTES CL'+
   ' WHERE CL.ID_CLIENTE = AL.ID_CLIENTE ';
   COBROCAMPOS = 'SELECT ID_SERIE,ID_COBRO,ANYO,TIPO,ID_EMPRESA,ID,cr.OBSERVACIONES,BASE,ESTADO,ID_CLIENTE,TOTAL_COBRADO,ANYOSERIE FROM COBRO CR';
   LINEACOBROCAMPOS = 'SELECT * FROM LINEAS_COBRO L';
   COBROAUXCAMPOS = 'SELECT ID_SERIE,ID_COBRO,ANYO,TIPO,ID_EMPRESA,ID,cr.OBSERVACIONES,BASE,ESTADO,CR.ID_CLIENTE,TOTAL_COBRADO,ANYOSERIE,CL.NOMBRE FROM COBRO CR,CLIENTES CL'+
   ' WHERE CR.ID_CLIENTE=CL.ID_CLIENTE ';
   FORMAPAGOCAMPOS = 'SELECT ID_FORMA,DESCRIPCION FROM FORMAPAGO ';
   SALIDACAMPOS = 'SELECT * FROM SALIDA ';
   LINEASALIDACAMPOS = 'SELECT *  FROM LINEA_SALIDA L ';
   SERIESCAMPOS ='SELECT * FROM SERIES ';
   ONUMERICASCAMPOS =' SELECT ID_EMPRESA,ANYO,ID_COBRO,ID_ENTRADA,ID_PRESUPUESTO,ID_SALIDA,ID_AVISO FROM OPCIONESNUMERICAS ';
   ENTRADASCAMPOS = 'SELECT * FROM E_PROVEEDOR_ACREEDOR ';
   LINEASENTRADASCAMPOS = 'SELECT * FROM LIN_E_PROVEEDOR_ACREEDOR L ';
   AVISOCAMPOS = 'SELECT ID_AVISO,FECHA_AVISO,HORA,COMENTARIOS,FECHA_PARA_VISITA,HORA_PARA_VISITA,NOMBRE_CONTACTO,DIRECCION,POBLACION,MOTIVO_AVISO,TELEFONO,MOVIL,ESTADO,OBSERVACIONES,ID_EMPRESA,REALIZADO,ANYO FROM AVISOS ';

   LISTADOENTRADACAMPOS = ' SELECT ID_ENTRADA,FECHA,E.ID_PROVEEDOR,(SELECT NOMBRE FROM PROVEEDOR_ACREEDOR PA WHERE E.ID_PROVEEDOR=PA.ID_PROVEEDOR) AS NOMBREPROVEEDOR, '+
   ' BASE_ENTRADA,DESCUENTO,(BASE_ENTRADA*DESCUENTO/100) AS TOTALDESCUENTO,(BASE_ENTRADA*(1-(DESCUENTO/100))*(IVA/100)) AS TOTALIVA,(BASE_ENTRADA *(1 - (DESCUENTO/100))*(1 +(IVA/100))) AS TOTAL FROM E_PROVEEDOR_ACREEDOR E';

   LISTADOENTRADATOTALCAMPOS = ' SELECT  SUM(BASE_ENTRADA) AS BASE_ENTRADA,SUM((BASE_ENTRADA*DESCUENTO/100)) AS TOTALDESCUENTO,SUM((BASE_ENTRADA*(1-(DESCUENTO/100))*(IVA/100))) AS TOTALIVA,SUM((BASE_ENTRADA *(1 - (DESCUENTO/100))*(1 +(IVA/100)))) AS TOTAL FROM E_PROVEEDOR_ACREEDOR E';
   FACTURASALBARANESCAMPOS = ' SELECT * FROM FACTURASALBARANES';
   ARQUEODECAJACAMPOS = 'SELECT * FROM ARQUEODECAJA';





{$R *.DFM}

class procedure TAGESTISHOP.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string);
begin
  if Register then
  begin
    inherited UpdateRegistry(Register, ClassID, ProgID);
    EnableSocketTransport(ClassID);
    EnableWebTransport(ClassID);
  end else
  begin
    DisableSocketTransport(ClassID);
    DisableWebTransport(ClassID);
    inherited UpdateRegistry(Register, ClassID, ProgID);
  end;
end;

procedure TAGESTISHOP.DSPQ_ACTUALIZARAfterExecute(Sender: TObject;
  var OwnerData: OleVariant);
begin
 Q_ACTUALIZAR.PREPARED:= FALSE;
 TRY
 SQLCONNECTION1.Commit(TD);
 OWNERDATA:=TD.TransactionID ;
 EXCEPT
 sqlconnection1.Rollback(td);
 END;
end;

procedure TAGESTISHOP.DSPQ_ACTUALIZARBeforeExecute(Sender: TObject;
  var OwnerData: OleVariant);
begin
 IF OWNERDATA=-1 THEN
     SQLCONNECTION1.Rollback(TD);
 TD.TransactionID := OWNERDATA;
 SQLCONNECTION1.STARTTRANSACTION (TD);
 Q_ACTUALIZAR.Prepared := TRUE;
end;


procedure TAGESTISHOP.DSPQ_ACTUALIZARUpdateError(Sender: TObject;
  DataSet: TCustomClientDataSet; E: EUpdateError; UpdateKind: TUpdateKind;
  var Response: TResolverResponse);
begin
//  When a user deletes a record that has already been deleted by another user, this error is reported back to the client.  The following example shows how to suppress this client-side error in an OnUpdateError event handler.
//procedure TDBClientTest.ProviderUpdateError(Sender: TObject, DataSet: TCustomClientDataSet; E: EUpdateError; UpdateKind: TUpdateKind; var Response: TResolverResponse);
//begin
//  if (UpdateKind = ukDelete) and
//     (E.ErrorCode = DBIERR_OPTRECLOCKFAILED) then
//     Response := rrIgnore else
//     Response := rrSkip;
//end;
 SQLCONNECTION1.Rollback(TD);
end;

PROCEDURE TAGESTISHOP.OBTENERPARAMETROS(VAR RESULTADO:TMIRECORD;AUX:OLEVARIANT);
VAR BORRADO,orden,anyo,ANYO1,TIPO,EMPRESA,ID,ID1,ORDENLINEA,TIPOEMPRESA,GRUPO,SERIE:STRING;
     NUMRECORDS,VECES,LONG:INTEGER;
begin
  veces:=0;numrecords:=0;
  //AUX := VARTOSTR(OWNERDATA);
  BORRADO:='-1';
  EMPRESA := '1';
  ANYO := '1990';
  LONG := LENGTH(AUX);
  ID := 'ASD';TIPOEMPRESA:='-1';
  if long >0 then
  begin
     VECES := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     NUMRECORDS := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     EMPRESA := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     ANYO := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     ANYO1 := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     TIPOEMPRESA := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     ID := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     TIPO := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     ORDEN := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     ORDENLINEA := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     BORRADO := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     ID1 := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     GRUPO := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     SERIE := COPY(AUX,1,POS(FILTRO,AUX)-1);
  end;
  RESULTADO.NUMERO := NUMRECORDS;
  RESULTADO.VECES := VECES;
  RESULTADO.TIPO := TIPO;
  RESULTADO.ORDEN := ORDEN;
  RESULTADO.ORDENLINEA := ORDENLINEA;
  RESULTADO.EMPRESA := EMPRESA;
  RESULTADO.ANYO   := ANYO;
  RESULTADO.ANYO1  := ANYO1;
  RESULTADO.ID     := ID;
  RESULTADO.ID1     := ID1;
  RESULTADO.BORRADO := BORRADO;
  RESULTADO.TIPOEMPRESA := TIPOEMPRESA;
  RESULTADO.GRUPO := GRUPO;
  RESULTADO.ID_SERIE := SERIE;
END;



procedure TAGESTISHOP.DSPQT_CLIENTESBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
   with sender as tdatasetprovider do
   with dataset as tsqldataset do
    begin
//       COMMANDTEXT := 'SELECT C.NIF,S.NIF, NOMBRE, DIRECCION, POBLACION, PROVINCIA, COD_POST, ID_FORMA_PAGO, TELEFONO_1, TELEFONO_2, IVA, FECHA_ALTA, BLOQUEADO,SUBCUENTA,MOSTRAR,ID_COMERCIAL FROM CLIENTES C LEFT OUTER JOIN ';
//       COMMANDTEXT := COMMANDTEXT + 'SUBCUENTAS S ON C.NIF=S.NIF WHERE C.NIF>='''+OWNERDATA+''' ORDER BY C.NIF';
      commandtext:= 'SELECT NIF, NOMBRE, DIRECCION, POBLACION, PROVINCIA, COD_POST, ID_FORMA_PAGO, TELEFONO_1, TELEFONO_2, IVA, FECHA_ALTA, BLOQUEADO FROM CLIENTES WHERE NIF >= '''+vartostr(OWNERDATA)+''' ORDER BY NOMBRE,NIF';
      open;
    end

end;

procedure TAGESTISHOP.DSPQT_CLIENTESAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin

  with sender as tdatasetprovider do
   with dataset as tsqldataset do
    begin
      ownerdata := fieldvalues['NIF'];
      CLOSE;// SI LO DEJO ABIERTO PODRIA PONER REFRESH, LO PROBARE DESPUES
    end

end;

procedure TAGESTISHOP.DSPQT_CLIENTESGetData(Sender: TObject;
  DataSet: TCustomClientDataSet);
begin


  DATASET.RecordCount;
  DATASET.RecNo;
  DATASET.LAST;
  DATASET.RecNo;
  DATASET.RecordCount;


end;

procedure TAGESTISHOP.DSPQT_CLIENTESUpdateData(Sender: TObject;
  DataSet: TCustomClientDataSet);
begin

   with DataSet do
    while not EOF do
    begin
      if UpdateStatus = usinserted then
        showmessage('hola');
//        LogDelete(DataSet, UserName, Date, Time);
      Next;
    end;
end;


//***************************************   SATRANSFOR    *****************************************//
//****************************************************************************************************//
//****************************************************************************************************//
//****************************************************************************************************//

procedure TAGESTISHOP.DSPQ_FORMAPAGOUpdateError(Sender: TObject;
  DataSet: TCustomClientDataSet; E: EUpdateError; UpdateKind: TUpdateKind;
  var Response: TResolverResponse);
begin
 if e.errorcode = 1 then // record not found or changed by another user.
 begin
  if (UpdateKind = ukDelete)
    then
    Response := rrIgnore;
  if (updatekind = ukmodify) then
    RESPONSE := RRSKIP;
  end;
end;


procedure TAGESTISHOP.DSPQ_FDLGPLANTASGetData(Sender: TObject;
  DataSet: TCustomClientDataSet);
begin
  DATASET.RecordCount;
  DATASET.RecNo;
  DATASET.LAST;
  DATASET.RecNo;
  DATASET.RecordCount
end;




////*****************************************************************************/////
///******************************************************************************////


procedure TAGESTISHOP.DSPQ_CLIENTESGetData(Sender: TObject;
  DataSet: TCustomClientDataSet);
begin
  DATASET.RecordCount;
  DATASET.RecNo;
  DATASET.LAST;
  DATASET.RecNo;
  DATASET.RecordCount
end;

procedure TAGESTISHOP.DSPQ_EMPRESASUpdateError(Sender: TObject;
  DataSet: TCustomClientDataSet; E: EUpdateError; UpdateKind: TUpdateKind;
  var Response: TResolverResponse);
begin
 if e.errorcode = 1 then // record not found or changed by another user.
 begin
  if (UpdateKind = ukDelete)
    then
    Response := rrIgnore;
  if (updatekind = ukmodify) then
    RESPONSE := RRSKIP;
  end;
end;

procedure TAGESTISHOP.DSPQ_MAXPLANTAAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
       CLOSE;
end;


procedure TAGESTISHOP.DSPQ_SERVICIOSUpdateError(Sender: TObject;
  DataSet: TCustomClientDataSet; E: EUpdateError; UpdateKind: TUpdateKind;
  var Response: TResolverResponse);
begin
 if e.errorcode = 1 then // record not found or changed by another user.
 begin
  if (UpdateKind = ukDelete)
    then
    Response := rrIgnore;
  if (updatekind = ukmodify) then
    RESPONSE := RRSKIP;
  end;
end;

procedure TAGESTISHOP.DSPQ_SERVICIOSAUXAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
;
end;

procedure TAGESTISHOP.DSPQ_FACTURASBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
 VAR NUMRECORDS,VECES,LONG:INTEGER;
  AUX,NUM_FACT,NIF,FECHA_FACTURA,EMPRESA:STRING;
begin
  veces:=0;numrecords:=0;NIF:='*/*/*/';
  NUM_FACT:='';NIF:='';FECHA_FACTURA:='';
  AUX := VARTOSTR(OWNERDATA);
  LONG := LENGTH(AUX);
  if long >0 then
  begin
     VECES := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     NUMRECORDS := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     NUM_FACT := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     NIF := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     EMPRESA := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     FECHA_FACTURA := COPY(AUX,1,POS(FILTRO,AUX)-1);
  end;
  AUX :='' ;
  IF TRIM(NUM_FACT) <> '' THEN
    AUX := ' NUM_FACT = '+NUM_FACT ;

  IF TRIM(NIF) <> '' THEN
     IF AUX <> '' THEN
       AUX := AUX + ' AND NIF='''+NIF+''' '
     ELSE
       AUX := ' NIF='''+ NIF + ''' ';

  IF TRIM(EMPRESA) <> '' THEN
     IF AUX <> '' THEN
       AUX := AUX + ' AND EMPRESA='+EMPRESA
     ELSE
       AUX := ' EMPRESA='+ EMPRESA  ;

  IF TRIM(FECHA_FACTURA)<> '' THEN
     IF AUX <> '' THEN
       AUX := AUX + ' AND FECHA_FACTURA='''+FECHA_FACTURA+''' '
     ELSE
       AUX := ' FECHA_FACTURA='''+ FECHA_FACTURA + ''' ';

  IF TRIM(AUX) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := ' SELECT NUM_FACT,BASE_FACT,EMPRESA,NIF,FECHA_FACTURA,COBRADO,IMPORTEIVA,IVA FROM FACTURAS ';
      COMMANDTEXT :=  COMMANDTEXT +' WHERE '+ AUX +' ORDER BY FECHA_FACTURA DESC,EMPRESA,NIF,NUM_FACT';
      OPEN;
      MOVEBY(VECES*NUMRECORDS);
    END;
   END;
end;

procedure TAGESTISHOP.Q_VALORARALBARANESAfterScroll(DataSet: TDataSet);
begin
{  IF Q_VALORARALBARANESNIF.AsString <> '' THEN
  BEGIN
    WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE FROM CLIENTES WHERE NIF = '''+Q_VALORARALBARANESNIF.AsString+ ''' ';
      OPEN;
      Q_VALORARALBARANESNOMCLIENTE.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END;
 IF ((Q_VALORARALBARANESNIF.ASSTRING <>'') AND ( Q_VALORARALBARANESID_PLANTA.AsString <> '')) THEN
  BEGIN
    WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE FROM PLANTAS WHERE ID_PLANTA='+Q_VALORARALBARANESID_PLANTA.AsString+' AND NIF = '''+Q_VALORARALBARANESNIF.AsString+ ''' ';
      OPEN;
      Q_VALORARALBARANESNOMPLANTA.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END;
  IF Q_VALORARALBARANESCODIGO.AsString <> '' THEN
  BEGIN
    WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT DESCRIPCION FROM SERVICIOS WHERE CODIGO = '''+Q_VALORARALBARANESCODIGO.AsString+ ''' ';
      OPEN;
      Q_VALORARALBARANESDESSERVICIO.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END;

}
end;

procedure TAGESTISHOP.DSPQ_FACTURASAfterUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind);
  var EMPRESA,NUM_FACTURA,ULT_FACTURA,FACTURABORRADA:integer;
begin

  if updatekind = ukinsert then
  begin
{    WITH DELTADS  DO
    BEGIN
       EMPRESA := FieldByname('EMPRESA').AsInteger;
       Q_AUX.CLOSE;
       Q_AUX.CommandText := 'SELECT ULT_FACTURA FROM  EMPRESAS WHERE EMPRESA =' +INTTOSTR(EMPRESA);
       Q_AUX.OPEN;
       ULT_FACTURA := Q_AUX.Fields.Fields [0].AsInteger;
       IF (ULT_FACTURA <> NUM_FACT) AND (ULT_FACTURA <> 0) THEN
       BEGIN
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'UPDATE EMPRESAS SET SIG_FACTURA = ULT_FACTURA WHERE EMPRESA =' +INTTOSTR(EMPRESA);
          Q_AUX.ExecSQL(TRUE);
          Q_AUX.CLOSE;
//         NUM_FACT := ULT_FACTURA;
       END
       ELSE
       BEGIN
         Q_AUX.CLOSE;
         Q_AUX.CommandText := 'UPDATE EMPRESAS SET ULT_FACTURA = SIG_FACTURA + 1,SIG_FACTURA = SIG_FACTURA + 1 WHERE EMPRESA =' +INTTOSTR(EMPRESA);
         Q_AUX.ExecSQL(TRUE);
         Q_AUX.CLOSE;
       END;
    END;
}
  END;

  if updatekind = ukDELETE then
  begin
{    WITH DELTADS  DO
    BEGIN
       EMPRESA := FieldByname('EMPRESA').AsInteger;
       Q_AUX.CLOSE;
       Q_AUX.CommandText := 'SELECT ULT_FACTURA FROM  EMPRESAS WHERE EMPRESA =' +INTTOSTR(EMPRESA);
       Q_AUX.OPEN;
       ULT_FACTURA := Q_AUX.Fields.Fields [0].AsInteger;
       Q_AUX.CLOSE;
       FACTURABORRADA := FieldByname('NUM_FACT').AsInteger;
       IF (ULT_FACTURA -1) = FACTURABORRADA  THEN
       BEGIN
         Q_AUX.CLOSE;
         Q_AUX.CommandText := 'UPDATE EMPRESAS SET ULT_FACTURA = SIG_FACTURA - 1,SIG_FACTURA = SIG_FACTURA - 1 WHERE EMPRESA =' +INTTOSTR(EMPRESA);
         Q_AUX.ExecSQL(TRUE);
         Q_AUX.CLOSE;
       END
       ELSE
         Q_AUX.CLOSE;
         Q_AUX.CommandText := 'UPDATE EMPRESAS SET SIG_FACTURA = '+INTTOSTR(FACTURABORRADA)+'  WHERE EMPRESA =' +INTTOSTR(EMPRESA);
         Q_AUX.ExecSQL(TRUE);
         Q_AUX.CLOSE;
       BEGIN
       END;
    END;
}
  END;

end;

procedure TAGESTISHOP.DSPQ_FACTURASBeforeUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind; var Applied: Boolean);
  VAR EMPRESA:INTEGER;
begin
  if updatekind = ukinsert then
  begin
    WITH DELTADS  DO
    BEGIN
       Empresa := FieldByname('EMPRESA').AsInteger;
       Q_AUX.CLOSE;
       Q_AUX.CommandText := 'SELECT NUM_FACT FROM  FACTURASBORRADAS WHERE NUEVA=0 AND EMPRESA='+INTTOSTR(EMPRESA);
       Q_AUX.OPEN;
       IF Q_AUX.RecordCount>0 THEN
          NUM_FACT :=Q_AUX.Fields.Fields [0].AsInteger
       ELSE
       BEGIN
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'SELECT SIG_FACTURA FROM  EMPRESAS WHERE EMPRESA =' +INTTOSTR(EMPRESA);
          Q_AUX.OPEN;
          num_fact := Q_AUX.Fields.Fields [0].AsInteger;
       END;
       Q_AUX.CLOSE;
       EDIT;
       FIELDBYNAME('NUM_FACT').AsInteger := num_fact;
       POST;
    END;
 END;
end;

procedure TAGESTISHOP.DSPQ_FACTURASAfterApplyUpdates(Sender: TObject;
  var OwnerData: OleVariant);
begin
       OWNERDATA := num_fact ;
end;

procedure TAGESTISHOP.Q_PREVIO_FACTURASAfterScroll(DataSet: TDataSet);
begin
{  IF Q_PREVIO_FACTURASEMPRESA.AsString <> '' THEN
  BEGIN
    WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE,DIRECCION,COD_POSTAL,POBLACION,PROVINCIA,TELEFONO,TELEFONO2,NIF FROM EMPRESAS WHERE EMPRESA = '+Q_PREVIO_FACTURASEMPRESA.AsString;
      OPEN;
      Q_PREVIO_FACTURASEMPNOMBRE.AsString := Q_AUX.Fields.Fields [0].AsString;
      Q_PREVIO_FACTURASEMPDIRECCION.AsString := Q_AUX.Fields.Fields [1].AsString;
      Q_PREVIO_FACTURASEMPCOD_POSTAL.AsString := Q_AUX.Fields.Fields [2].AsString;
      Q_PREVIO_FACTURASEMPPOBLACION.AsString := Q_AUX.Fields.Fields [3].AsString;
      Q_PREVIO_FACTURASEMPPROVINCIA.AsString := Q_AUX.Fields.Fields [4].AsString;
      Q_PREVIO_FACTURASEMPTELEFONO.AsString := Q_AUX.Fields.Fields [5].AsString;
      Q_PREVIO_FACTURASEMPTELEFONO2.AsString := Q_AUX.Fields.Fields [6].AsString;
      Q_PREVIO_FACTURASEMPNIF.AsString := Q_AUX.Fields.Fields [7].AsString;
      CLOSE;
    END;
  END;
  IF Q_PREVIO_FACTURASNIF.AsString <> '' THEN
  BEGIN
    WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE,DIRECCION,COD_POST,POBLACION,PROVINCIA,NIF FROM CLIENTES WHERE NIF = '''+Q_PREVIO_FACTURASNIF.AsString+''' ';
      OPEN;
      Q_PREVIO_FACTURASCLINOMBRE.AsString := Q_AUX.Fields.Fields [0].AsString;
      Q_PREVIO_FACTURASCLIDIRECCION.AsString := Q_AUX.Fields.Fields [1].AsString;
      Q_PREVIO_FACTURASCLICOD_POSTAL.AsString := Q_AUX.Fields.Fields [2].AsString;
      Q_PREVIO_FACTURASCLIPOBLACION.AsString := Q_AUX.Fields.Fields [3].AsString;
      Q_PREVIO_FACTURASCLIPROVINCIA.AsString := Q_AUX.Fields.Fields [4].AsString;
      Q_PREVIO_FACTURASCLINIF.AsString := Q_AUX.Fields.Fields [5].AsString;
      CLOSE;
    END;
  END;
  IF ((Q_PREVIO_FACTURASNUM_FACT.AsString <> '') AND
      (Q_PREVIO_FACTURASFECHA_FACTURA.AsString <> '') AND
      (Q_PREVIO_FACTURASEMPRESA.AsString <> ''))
  THEN
  BEGIN
    WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT BASE_FACT  FROM FACTURAS WHERE NUM_FACT  = '+Q_PREVIO_FACTURASNUM_FACT.AsString+' AND FECHA_FACTURA = '''+Q_PREVIO_FACTURASFECHA_FACTURA.AsString+''' AND EMPRESA='+Q_PREVIO_FACTURASEMPRESA.AsString+' ';
      OPEN;
      Q_PREVIO_FACTURASBASE_FACT.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END;
}
end;

procedure TAGESTISHOP.Q_INFFACTURASAfterScroll(DataSet: TDataSet);
VAR ID_FORMA_PAGO:STRING;
begin
{  IF Q_INFFACTURASNIF.AsString <> '' THEN
  BEGIN
    WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE,DIRECCION,COD_POST,POBLACION,PROVINCIA,NIF,ID_FORMA_PAGO FROM CLIENTES WHERE NIF = '''+Q_INFFACTURASNIF.AsString+''' ';
      OPEN;
      Q_INFFACTURASCLINOMBRE.AsString := Q_AUX.Fields.Fields [0].AsString;
      Q_INFFACTURASCLIDIRECCION.AsString := Q_AUX.Fields.Fields [1].AsString;
      Q_INFFACTURASCLICOD_P0ST.AsString := Q_AUX.Fields.Fields [2].AsString;
      Q_INFFACTURASCLIPOBLACION.AsString := Q_AUX.Fields.Fields [3].AsString;
      Q_INFFACTURASCLIPROVINCIA.AsString := Q_AUX.Fields.Fields [4].AsString;
      Q_INFFACTURASCLINIF.AsString := Q_AUX.Fields.Fields [5].AsString;
      ID_FORMA_PAGO := Q_AUX.Fields.Fields [6].AsString;
      CLOSE;
      COMMANDTEXT := ' SELECT  DESCRIPCION FROM FORMAS_PAGO WHERE ID_FORMA_PAGO='''+ID_FORMA_PAGO+''' ';
      OPEN;
      Q_INFFACTURASCLIFORMASPAGO.ASSTRING :=Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END;
  IF ((Q_INFFACTURASNUM_FACT.AsString <> '') AND
      (Q_INFFACTURASFECHA_FACTURA.AsString <> '') AND
      (Q_INFFACTURASEMPRESA.AsString <> ''))
  THEN
  BEGIN
    WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT BASE_FACT,IVA  FROM FACTURAS WHERE NUM_FACT  = '+Q_INFFACTURASNUM_FACT.AsString+' AND FECHA_FACTURA = '''+Q_INFFACTURASFECHA_FACTURA.AsString+''' AND EMPRESA='+Q_INFFACTURASEMPRESA.AsString+' ';
      OPEN;
      Q_INFFACTURASBASE_FACTU.AsString := Q_AUX.Fields.Fields [0].AsString;
      Q_INFFACTURASIVA.AsString := Q_AUX.Fields.Fields [1].AsString;
      CLOSE;
    END;
  END;
}
end;

//**************************************************************************//
//**************************************************************************//
//********************        GESTISHOP                   ******************//
//**************************************************************************//
//**************************************************************************//


procedure TAGESTISHOP.DSPQ_PROVEEDOR_ACREEDORAfterGetRecords(
  Sender: TObject; var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_PROVEEDOR_ACREEDORBeforeGetRecords(
  Sender: TObject; var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
        COMMANDTEXT := PROVEEDORACREEDORCAMPOS ;
        IF REGISTRO.TIPO = '1' THEN
           COMMANDTEXT := COMMANDTEXT + ' WHERE (NIF LIKE ('''+REGISTRO.ID+'%'') OR CHAR(ID_PROVEEDOR) LIKE ('''+REGISTRO.ID+'%'') OR NOMBRE LIKE ('''+REGISTRO.ID+'%'')) AND CHAR(BORRADO) LIKE ('''+REGISTRO.BORRADO+'%'') '+REGISTRO.ORDEN;
        IF REGISTRO.TIPO = '2' THEN
           COMMANDTEXT := COMMANDTEXT + ' WHERE NIF='''+REGISTRO.ID+''' AND BORRADO='+REGISTRO.BORRADO+' '+REGISTRO.ORDEN;
        OPEN;
        MOVEBY(REGISTRO.VECES * REGISTRO.NUMERO);
    END;
  END;
end;


procedure TAGESTISHOP.DSPQ_FPROVEEDORAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_FPROVEEDORBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
 VAR LONG:INTEGER;
  AUX,Nif,BORRADO:STRING;
begin
  AUX := VARTOSTR(OWNERDATA);
  LONG := LENGTH(AUX);
  NIF:='ASDF';
  if long >0 then
  begin
     nif := COPY(AUX,1,POS(FILTRO,AUX)-1);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     borrado := COPY(AUX,1,POS(FILTRO,AUX)-1);
  end;
  IF TRIM(NIF) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
        COMMANDTEXT := 'SELECT NIF,NOMBRE FROM PROVEEDOR_ACREEDOR ';
        commandtext := commandtext + 'WHERE NIF='''+nif+''' and CHAR(BORRADO) LIKE ('''+BORRADO+'%'') ';
        OPEN;
    END;
  END;
END;
procedure TAGESTISHOP.DSPQ_MAXIMOAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_MAXIMOBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      OPEN;
end;

procedure TAGESTISHOP.DSPQ_TIPOSAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_TIPOSBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
VAR LONG:INTEGER;
  AUX,ID_PROVEEDOR:STRING;
begin
  AUX := VARTOSTR(OWNERDATA);
  LONG := LENGTH(AUX);
  ID_PROVEEDOR:='-99';
  if long >0 then
     ID_PROVEEDOR := COPY(AUX,1,POS(FILTRO,AUX)-1);
  IF TRIM(ID_PROVEEDOR) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
        COMMANDTEXT := 'SELECT ID_TIPO,ID_PROVEEDOR,SUBCUENTA FROM TIPOS ';
        commandtext := commandtext + 'WHERE ID_PROVEEDOR='+ID_PROVEEDOR;
        OPEN;
    END;
  END;
END;

procedure TAGESTISHOP.DSPQ_MDPROVEEDORBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR AUX,BUSCAR,BORRADO:STRING;
     NUMRECORDS,VECES,LONG:INTEGER;
begin
  veces:=0;numrecords:=0;
  AUX := VARTOSTR(OWNERDATA); BORRADO:='-1';
  LONG := LENGTH(AUX);
  BUSCAR := 'ASD';
  if long >0 then
  begin
     VECES := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     NUMRECORDS := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     BUSCAR := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     BORRADO := COPY(AUX,1,POS(FILTRO,AUX)-1);
  end;
  IF TRIM(BUSCAR) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
        COMMANDTEXT := 'SELECT BORRADO,ID_PROVEEDOR,NOMBRE,NIF,DIRECCION,DIRECCION_POSTAL,POBLACION,POBLACION_POSTAL,COD_POSTAL,COD_POSTAL_POSTAL,PROVINCIA,PROVINCIA_POSTAL,EMAIL,HTTP,OBSERVACIONES,MISMA_DIRECCION,TELEFONO,FAX FROM PROVEEDOR_ACREEDOR ';
        COMMANDTEXT := COMMANDTEXT + ' WHERE (NIF LIKE ('''+BUSCAR+'%'') OR CHAR(ID_PROVEEDOR) LIKE ('''+BUSCAR+'%'') OR NOMBRE LIKE ('''+BUSCAR+'%'')) AND CHAR(BORRADO) LIKE ('''+BORRADO+'%'') ';
        OPEN;
        MOVEBY(VECES*NUMRECORDS);
    END;

    WITH QMD_TIPOS DO // PARA HACER EL MASTER-DETAIL LE PASO LOS CAMPOS CLAVE COMO PARAMETROS
    BEGIN
        COMMANDTEXT := 'SELECT ID_TIPO,ID_PROVEEDOR,SUBCUENTA FROM TIPOS T ';
        COMMANDTEXT := COMMANDTEXT + ' WHERE T.ID_PROVEEDOR=:ID_PROVEEDOR ';
     END;
   END;
end;

procedure TAGESTISHOP.DSPQ_MDPROVEEDORAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_FAMILIASAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_FAMILIASBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
        COMMANDTEXT := FAMILIASCAMPOS;
        if registro.TIPO = '4' then
           commandtext := commandtext + registro.id +' '+registro.orden
        else
           COMMANDTEXT := COMMANDTEXT + ' WHERE COD_FAMILIA LIKE ('''+REGISTRO.ID+'%'')  or descripcion like ('''+registro.id+'%'') '+ registro.orden;
        registro.id := commandtext;
        OPEN;
        MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO);
    END;
  END;
end;

procedure TAGESTISHOP.DSPQ_FAMILIASAUXAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_FAMILIASAUXBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
 OBTENERPARAMETROS(registro,vartostr(ownerdata));
 IF (TRIM(registro.id) <> '')
 OR (TRIM(REGISTRO.TIPO) = '4')
 THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
        COMMANDTEXT := FAMILIASCAMPOS;
       IF REGISTRO.TIPO='1' THEN
        COMMANDTEXT := COMMANDTEXT + ' WHERE COD_FAMILIA LIKE (''%'+REGISTRO.ID+'%'') or descripcion like (''%'+registro.id+'%'') '+registro.orden;
       IF REGISTRO.TIPO='2' THEN
        COMMANDTEXT := COMMANDTEXT + ' WHERE COD_FAMILIA  = '''+REGISTRO.ID+''' AND PROFUNDIDAD='+REGISTRO.ID1+' '+registro.orden;
       IF REGISTRO.TIPO='3' THEN
        COMMANDTEXT := COMMANDTEXT + ' WHERE COD_FAMILIA  = '''+trim(REGISTRO.ID)+''' '+registro.orden;
       IF REGISTRO.TIPO = '4' THEN
        COMMANDTEXT := COMMANDTEXT + REGISTRO.ID+ ' ' + REGISTRO.ORDEN;
        REGISTRO.ID := COMMANDTEXT;
        OPEN;
        MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO );
    END;
  END;
end;

procedure TAGESTISHOP.DSPQ_ARTICULOSAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
    with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_ARTICULOSBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR registro:tmirecord;
    AUX:STRING;
BEgin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF (TRIM(REGISTRO.ID) <> '') THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset
    as tsqldataset do
    BEGIN
        COMMANDTEXT := ARTICULOSCAMPOS;
        if REGISTRO.tipo='1' then
         COMMANDTEXT := COMMANDTEXT + ' WHERE (ID_ARTICULO LIKE ('''+REGISTRO.ID+'%'')  OR DESCRIPCION LIKE ('''+REGISTRO.ID+'%'') OR ART_PROVEEDOR LIKE ('''+REGISTRO.ID+'%'')) AND CHAR(BORRADO) LIKE ('''+REGISTRO.BORRADO+'%'') '+REGISTRO.ORDEN;
        if REGISTRO.tipo='2' then
        // FALTA PONER ORDEN Y ANYO CUANDO LO PONGA EN LA TABLA.
         commandtext := commandtext + REGISTRO.id + ' ' + REGISTRO.ORDEN;
        if registro.tipo = '3' then
         commandtext := commandtext +  ' WHERE (ID_ARTICULO LIKE ('''+REGISTRO.ID+'%'')  OR DESCRIPCION LIKE ('''+REGISTRO.ID+'%'') OR ART_PROVEEDOR LIKE ('''+REGISTRO.ID+'%'') ) and cod_familia='''+registro.id1+''' AND CHAR(BORRADO) LIKE ('''+REGISTRO.BORRADO+'%'') '+REGISTRO.ORDEN;
        AUX := COMMANDTEXT;
        OPEN;
        MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO);
    END;
  END;
end;

procedure TAGESTISHOP.DSPQ_ARTICULOSBeforeUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind; var Applied: Boolean);
  VAR CODFAMILIA,OLDCODFAMILIA,OLDPROFUNDIDAD,PROFUNDIDAD,COD_ARTICULO,OLDBRAZOS,OLDID_COLOR,BRAZOS,ID_COLOR,AUX:STRING;
      AB:INTEGER;
BEGIN

 AUX := DELTADS.FIELDBYNAME('ID_ARTICULO').OLDVALUE;
 ID_ARTICULO := AUX;

end;

procedure TAGESTISHOP.DSPQ_ARTICULOSAfterUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind);
  VAR CODFAMILIA,PROFUNDIDAD,ID_ARTICULO,MARCA,DESCRIPCION:STRING;
begin
// PASARLO A TRIGGERS
 {
 
// lo quito por el cambio de nombre de familias

  if updatekind = ukinsert then
  begin
    WITH DELTADS  DO
    BEGIN
      CODFAMILIA := FieldByname('COD_FAMILIA').ASSTRING;
      PROFUNDIDAD := FIELDBYNAME('PROFUNDIDAD').ASSTRING;
      Q_AUX.CLOSE;
      Q_AUX.CommandText := 'UPDATE FAMILIAS SET COD_ARTICULO = COD_ARTICULO + 1 WHERE COD_FAMILIA ='''+ CODFAMILIA + ''' AND PROFUNDIDAD='+PROFUNDIDAD+' ';
      Q_AUX.ExecSQL(TRUE);
      Q_AUX.CLOSE;
    END;
  END;
  //*************************************//

  if updatekind = ukmodify then
  begin
  WITH DELTADS  DO
  BEGIN
   IF (FieldByname('COD_FAMILIA').ASSTRING <> '') OR
      (FieldByname('PROFUNDIDAD').ASSTRING <> '')
   THEN
   BEGIN
       CODFAMILIA := FieldByname('COD_FAMILIA').ASSTRING;
       IF CODFAMILIA = '' THEN
          CODFAMILIA := FieldByname('COD_FAMILIA').OLDVALUE;
       PROFUNDIDAD := FIELDBYNAME('PROFUNDIDAD').ASSTRING;
       IF PROFUNDIDAD = '' THEN
          PROFUNDIDAD := FIELDBYNAME('PROFUNDIDAD').OLDVALUE;

      IF ( FieldByname('COD_FAMILIA').OLDVALUE <>
           FIELDBYNAME('COD_FAMILIA').ASSTRING) OR
          (FieldByname('PROFUNDIDAD').OLDVALUE <>
           FieldByname('PROFUNDIDAD').ASSTRING) THEN
      BEGIN
         Q_AUX.CLOSE;
         Q_AUX.CommandText := 'UPDATE FAMILIAS SET COD_ARTICULO = COD_ARTICULO + 1 WHERE COD_FAMILIA ='''+ CODFAMILIA + ''' AND PROFUNDIDAD='+PROFUNDIDAD+' ';
         Q_AUX.ExecSQL(TRUE);
         Q_AUX.CLOSE;
      END;
   END;
   IF (FieldByname('MARCA').ASSTRING <>
       FIELDBYNAME('MARCA').OLDVALUE ) OR
      (FieldByname('DESCRIPCION').ASSTRING <>
       FIELDBYNAME('DESCRIPCION').OLDVALUE )
   THEN
     IF TRIM(FIELDBYNAME('ID_ARTICULO').AsString) <> ''
     THEN
        ID_ARTICULO := FIELDBYNAME('ID_ARTICULO').AsStrinG
     ELSE
        ID_ARTICULO := FIELDBYNAME('ID_ARTICULO').OldValue;
     IF TRIM(FIELDBYNAME('MARCA').AsString) <> ''
     THEN
        MARCA := FIELDBYNAME('MARCA').AsStrinG
     ELSE
        IF  FIELDBYNAME('MARCA').OldValue=NULL THEN
            MARCA := ''
        ELSE
            MARCA := FIELDBYNAME('MARCA').OldValue;
     IF TRIM(FIELDBYNAME('DESCRIPCION').AsString) <> ''
     THEN
        DESCRIPCION := FIELDBYNAME('DESCRIPCION').AsStrinG
     ELSE
        IF  FIELDBYNAME('DESCRIPCION').OldValue=NULL THEN
            DESCRIPCION := ''
        ELSE
            DESCRIPCION := FIELDBYNAME('DESCRIPCION').OldValue;
   BEGIN
      BEGIN
         Q_AUX.CLOSE;
         Q_AUX.CommandText := 'UPDATE ALMACEN SET MARCA = '''+MARCA+''', DESCRIPCION='''+DESCRIPCION+''' WHERE ID_ARTICULO ='''+ID_ARTICULO + ''' ';
         CODFAMILIA := Q_AUX.COMMANDTEXT;
         Q_AUX.ExecSQL(TRUE);
         Q_AUX.CLOSE;
      END;
   END;

  END;
 END;
 }
END;

procedure TAGESTISHOP.DSPQ_ARTICULOSAfterApplyUpdates(Sender: TObject;
  var OwnerData: OleVariant);
begin
  OWNERDATA := ID_ARTICULO;
end;

procedure TAGESTISHOP.DSPQ_COLORESAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_COLORESBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
 VAR NUMRECORDS,VECES,LONG:INTEGER;
  AUX,IDCOLOR:STRING;
begin
  veces:=0;numrecords:=0;
  AUX := VARTOSTR(OWNERDATA);
  LONG := LENGTH(AUX);
  IDCOLOR:='P';
  if long >0 then
  begin
     VECES := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));// PQ EL FILTRO ES DE 3 CARACTERES
     NUMRECORDS := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));// PQ EL FILTRO ES DE 3 CARACTERES
     IDCOLOR := COPY(AUX,1,POS(FILTRO,AUX)-1);
 END;
 IF TRIM(IDCOLOR) <> '' THEN
  BEGIN
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
    BEGIN
       COMMANDTEXT := 'SELECT ID_COLOR,DESCRIPCION FROM COLORES WHERE ID_COLOR LIKE ('''+IDCOLOR+'%'') OR DESCRIPCION LIKE ('''+IDCOLOR+'%'') ';
        OPEN;
        MOVEBY(VECES*NUMRECORDS);
    END;
  END;
END;

procedure TAGESTISHOP.DSPQ_COLORESAUXAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_COLORESAUXBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
 VAR NUMRECORDS,VECES,LONG:INTEGER;
  AUX,IDCOLOR,TIPO:STRING;
begin
  veces:=0;numrecords:=0;
  AUX := VARTOSTR(OWNERDATA);
  LONG := LENGTH(AUX);
  IDCOLOR:='P';
  if long >0 then
  begin
     VECES := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));// PQ EL FILTRO ES DE 3 CARACTERES
     NUMRECORDS := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));// PQ EL FILTRO ES DE 3 CARACTERES
     IDCOLOR := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));// PQ EL FILTRO ES DE 3 CARACTERES
     TIPO := COPY(AUX,1,POS(FILTRO,AUX)-1);
 END;
 IF TRIM(IDCOLOR) <> '' THEN
  BEGIN
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
    BEGIN
       COMMANDTEXT := 'SELECT ID_COLOR,DESCRIPCION FROM COLORES ';
       IF TIPO='1' THEN
          COMMANDTEXT := COMMANDTEXT + ' WHERE ID_COLOR LIKE ('''+IDCOLOR+'%'') OR DESCRIPCION LIKE ('''+IDCOLOR+'%'') ';
       IF TIPO='2' THEN
          COMMANDTEXT := COMMANDTEXT + ' WHERE ID_COLOR = '''+IDCOLOR+''' ';
        OPEN;
        MOVEBY(VECES*NUMRECORDS);
    END;
  END;
END;

procedure TAGESTISHOP.DSPQ_EANAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_EANBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
 VAR NUMRECORDS,VECES,LONG:INTEGER;
  AUX,IDARTICULO:STRING;
begin
  veces:=0;numrecords:=0;
  AUX := VARTOSTR(OWNERDATA);
  LONG := LENGTH(AUX);
  IDARTICULO:='P';
  if long >0 then
  begin
     VECES := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));// PQ EL FILTRO ES DE 3 CARACTERES
     NUMRECORDS := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));// PQ EL FILTRO ES DE 3 CARACTERES
     IDARTICULO := COPY(AUX,1,POS(FILTRO,AUX)-1);
 END;
 IF TRIM(IDARTICULO) <> '' THEN
  BEGIN
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
    BEGIN
//       COMMANDTEXT := 'SELECT ID_ARTICULO,EAN FROM EAN WHERE ID_ARTICULO LIKE ('''+IDARTICULO+'%'')  ';
// lo cambio por el = , porque salen mas codigos de barra de los que debian
// por ej 4001-1/1 salen tambien 4001-1/11 , -1/12 ...
       COMMANDTEXT := 'SELECT ID_ARTICULO,EAN FROM EAN WHERE ID_ARTICULO ='''+IDARTICULO+'''  ';
        OPEN;
        MOVEBY(VECES*NUMRECORDS);
    END;
  END;
END;

procedure TAGESTISHOP.DSPQ_PROVEEDOR_ACREEDORUpdateError(Sender: TObject;
  DataSet: TCustomClientDataSet; E: EUpdateError; UpdateKind: TUpdateKind;
  var Response: TResolverResponse);
begin
 if e.errorcode = 1 then // record not found or changed by another user.
 begin
  if (UpdateKind = ukDelete)
    then
    Response := rrIgnore;
  if (updatekind = ukmodify) then
    RESPONSE := RRSKIP;
  end;
end;

procedure TAGESTISHOP.DSPQ_COLORESAUXUpdateError(Sender: TObject;
  DataSet: TCustomClientDataSet; E: EUpdateError; UpdateKind: TUpdateKind;
  var Response: TResolverResponse);
begin
 if e.errorcode = 1 then // record not found or changed by another user.
 begin
  if (UpdateKind = ukDelete)
    then
    Response := rrIgnore;
  if (updatekind = ukmodify) then
    RESPONSE := RRSKIP;
  end;
end;
procedure TAGESTISHOP.DSPQ_CLIENTESAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;
procedure TAGESTISHOP.DSPQ_CLIENTESBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF (TRIM(REGISTRO.ID) <> '') THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := CLIENTECAMPOS;
      IF REGISTRO.TIPO='1' THEN
         COMMANDTEXT := COMMANDTEXT + ' WHERE (NIF LIKE ('''+REGISTRO.ID+'%'') OR CHAR(ID_CLIENTE) LIKE ('''+REGISTRO.ID+'%'') OR NOMBRE LIKE ('''+REGISTRO.ID +'%'')) AND CHAR(BORRADO) LIKE ('''+REGISTRO.BORRADO+'%'') '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='2' THEN
         COMMANDTEXT := COMMANDTEXT + ' WHERE NIF='''+REGISTRO.ID+''' AND BORRADO='+REGISTRO.BORRADO+' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='3' THEN
         COMMANDTEXT := COMMANDTEXT + registro.id+ ' ' + registro.orden;
      registro.id := commandtext;
      OPEN;
        MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO );
    END;
  END;
end;




procedure TAGESTISHOP.DSPQ_FCLIENTEAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_FCLIENTEBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
 VAR LONG:INTEGER;
  AUX,Nif,BORRADO:STRING;
begin
  AUX := VARTOSTR(OWNERDATA);
  LONG := LENGTH(AUX);
  NIF:='ASDF';
  if long >0 then
  begin
     nif := COPY(AUX,1,POS(FILTRO,AUX)-1);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     borrado := COPY(AUX,1,POS(FILTRO,AUX)-1);
  end;
  IF TRIM(NIF) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
        COMMANDTEXT := 'SELECT NIF,NOMBRE FROM CLIENTES';
        commandtext := commandtext + ' WHERE NIF='''+nif+''' and CHAR(BORRADO) LIKE ('''+BORRADO+'%'')  ORDER BY NOMBRE';
        OPEN;
    END;
  END;
END;

procedure TAGESTISHOP.DSPQ_CLIENTEAUXAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_CLIENTEAUXBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR AUX,BUSCAR,BORRADO,TIPO:STRING;
     NUMRECORDS,VECES,LONG:INTEGER;
begin
  veces:=0;numrecords:=0;
  AUX := VARTOSTR(OWNERDATA); BORRADO:='-1';
  LONG := LENGTH(AUX);
  BUSCAR := 'ASD';
  if long >0 then
  begin
     VECES := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     NUMRECORDS := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     BUSCAR := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     BORRADO := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     TIPO := COPY(AUX,1,POS(FILTRO,AUX)-1);
  end;
  IF TRIM(BUSCAR) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
        COMMANDTEXT := CLIENTECAMPOS;
        IF TIPO='1' THEN
           COMMANDTEXT := COMMANDTEXT + ' WHERE (NIF LIKE ('''+BUSCAR+'%'') OR CHAR(ID_CLIENTE) LIKE ('''+BUSCAR+'%'') OR NOMBRE LIKE ('''+BUSCAR+'%'')) AND CHAR(BORRADO) LIKE ('''+BORRADO+'%'') ORDER BY NOMBRE';
        IF TIPO='2' THEN
           COMMANDTEXT := COMMANDTEXT + ' WHERE ID_CLIENTE = '+BUSCAR+' AND BORRADO=0 ORDER BY NOMBRE';
        OPEN;
        MOVEBY(VECES*NUMRECORDS);
    END;
  END;
end;

procedure TAGESTISHOP.DSPQ_SERIESAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_SERIESBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
 OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
 IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
    BEGIN
       COMMANDTEXT := SERIESCAMPOS;
       COMMANDTEXT := COMMANDTEXT + ' WHERE (ID_SERIE LIKE ('''+REGISTRO.ID+'%'') OR CHAR(ID_EMPRESA) LIKE ('''+REGISTRO.ID+'%'')) AND ID_EMPRESA='+REGISTRO.EMPRESA+' AND ANYO='+REGISTRO.ANYO+' '+ REGISTRO.ORDEN;
       REGISTRO.ID := COMMANDTEXT;
       OPEN;
       MOVEBY(REGISTRO.VECES *REGISTRO.NUMERO);
    END;
  END;
END;
procedure TAGESTISHOP.DSPQ_SERIESAUXAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_SERIESAUXBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
 OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
 IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
    BEGIN
       COMMANDTEXT := SERIESCAMPOS;
       IF REGISTRO.TIPO='1' THEN
          COMMANDTEXT := COMMANDTEXT + ' WHERE ID_SERIE LIKE ('''+REGISTRO.ID+'%'') OR CHAR(ID_EMPRESA) LIKE ('''+REGISTRO.ID+'%'') ';
       IF REGISTRO.TIPO='2' THEN
          COMMANDTEXT := COMMANDTEXT + ' WHERE ID_EMPRESA='+REGISTRO.ID +' AND ANYO='+REGISTRO.ANYO;
       IF REGISTRO.TIPO='3' THEN
          COMMANDTEXT := COMMANDTEXT + ' WHERE ID_EMPRESA='+REGISTRO.ID+' AND ID_SERIE='''+REGISTRO.ID1+''' AND ANYO='+REGISTRO.ANYO1;
        OPEN;
        MOVEBY(REGISTRO.VECES * REGISTRO.NUMERO );
    END;
  END;
END;

procedure TAGESTISHOP.DSPQ_EMPRESAAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_EMPRESABeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
 OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
 IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
    BEGIN
       COMMANDTEXT := EMPRESASCAMPOS;
//        'SELECT ID_EMPRESA,CIF_EMPRESA,NOMBRE,DIRECCION,DIRECCION_POSTAL,POBLACION,POBLACION_POSTAL,COD_POSTAL,COD_POSTAL_POSTAL,PROVINCIA,PROVINCIA_POSTAL,EMAIL,HTTP,OBSERVACIONES,MISMA_DIRECCION,TELEFONO,FAX,DESGLOSAR_IVA, ';
//       COMMANDTEXT := COMMANDTEXT + ' V_PRECIO_MAX_COSTE, V_LINEAS_FACT, BENEFICIO_MIN,COPIAS_FACTURAS,COPIAS_REPARACIONES,COPIAS_AVISOS,LOGO,ID_ENTRADA,ID_PRESUPUESTO,ID_SERIE,MOVIL,ID_COBRO,PRESUPUESTOVALIDO,TIPO,BENEFICIO,AVISAR,ID_SALIDA,ID_AVISO,DAR_AVISO,TICKET FROM EMPRESAS ';
       COMMANDTEXT := COMMANDTEXT + ' WHERE (CHAR(ID_EMPRESA) LIKE ('''+REGISTRO.ID+'%'') OR CIF_EMPRESA LIKE ('''+REGISTRO.ID+'%'')) AND TIPO='+REGISTRO.TIPOEMPRESA+' ';
//       AUX := COMMANDTEXT;
       OPEN;
       MOVEBY(REGISTRO.VECES *REGISTRO.NUMERO);
    END;
  END;
END;

procedure TAGESTISHOP.DSPQ_EMPRESAAUXAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_EMPRESAAUXBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
VAR REGISTRO:TMIRECORD;
begin
 OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
 IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
    BEGIN
       COMMANDTEXT := EMPRESASCAMPOS;
//        'SELECT ID_EMPRESA,CIF_EMPRESA,NOMBRE,DIRECCION,DIRECCION_POSTAL,POBLACION,POBLACION_POSTAL,COD_POSTAL,COD_POSTAL_POSTAL,PROVINCIA,PROVINCIA_POSTAL,EMAIL,HTTP,OBSERVACIONES,MISMA_DIRECCION,TELEFONO,FAX,DESGLOSAR_IVA, ';
//       COMMANDTEXT := COMMANDTEXT + ' V_PRECIO_MAX_COSTE, V_LINEAS_FACT, BENEFICIO_MIN,COPIAS_FACTURAS,COPIAS_REPARACIONES,COPIAS_AVISOS,LOGO,ID_ENTRADA,ID_PRESUPUESTO,ID_SERIE,MOVIL,ID_COBRO,PRESUPUESTOVALIDO,TIPO,BENEFICIO,AVISAR,ID_SALIDA,ID_AVISO,TICKET,DAR_AVISO FROM EMPRESAS ';
       IF REGISTRO.TIPO='1' THEN
          COMMANDTEXT := COMMANDTEXT + ' WHERE (CHAR(ID_EMPRESA) LIKE ('''+REGISTRO.ID+'%'') OR CIF_EMPRESA LIKE ('''+REGISTRO.ID+'%'')) AND TIPO='+REGISTRO.TIPOEMPRESA+' ';
       IF REGISTRO.TIPO='2' THEN
          COMMANDTEXT := COMMANDTEXT + ' WHERE ID_EMPRESA ='+REGISTRO.ID+' AND TIPO='+REGISTRO.TIPOEMPRESA+' ';
       REGISTRO.ID:=COMMANDTEXT;
       OPEN;
       MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO);
    END;
  END;
END;
procedure TAGESTISHOP.DSPQ_MDPRESUPUESTOAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
 with sender as tdatasetprovider do
   with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_MDPRESUPUESTOBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := PRESUPUESTOSCAMPOS;
      IF REGISTRO.TIPO='1' THEN
         COMMANDTEXT := COMMANDTEXT + ' WHERE (CHAR(ID_PRESUPUESTO) LIKE ('''+REGISTRO.ID+'%'')) AND ID_EMPRESA='+REGISTRO.EMPRESA+' AND ANYO='+REGISTRO.ANYO+' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='2' THEN
         COMMANDTEXT := COMMANDTEXT + REGISTRO.ID ;//+ ' AND ID_EMPRESA='+REGISTRO.EMPRESA+' ' + REGISTRO.ORDEN;
      IF REGISTRO.TIPO='6' THEN
         COMMANDTEXT := COMMANDTEXT + REGISTRO.ID + ' AND PR.ID_EMPRESA='+REGISTRO.EMPRESA+' AND PR.ANYO='+REGISTRO.ANYO+' '+ REGISTRO.ORDEN;
      REGISTRO.ID:= COMMANDTEXT;
      OPEN;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO );
      WITH QMD_LINPRESUPUESTO DO // PARA HACER EL MASTER-DETAIL LE PASO LOS CAMPOS CLAVE COMO PARAMETROS
      BEGIN
          COMMANDTEXT := LINEAPRESUPUESTOSCAMPOS;
          COMMANDTEXT := COMMANDTEXT + ' WHERE L.ID_PRESUPUESTO=:ID_PRESUPUESTO AND L.ID_EMPRESA=:ID_EMPRESA AND L.ANYO=:ANYO'+REGISTRO.ORDENLINEA+' ';
      END;
    END;
  END;
end;
procedure TAGESTISHOP.DSPQ_MDPRESUPUESTOBeforeUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind; var Applied: Boolean);
  VAR AUX:INTEGER;
begin
{ AUX:=-1;
 IF SOURCEDS.Name = 'QMD_PRESUPUESTO' THEN
 BEGIN
  if updatekind = ukinsert then
   begin
     WITH Q_AUX DO
     BEGIN
           CLOSE;
           IF (TRIM(DELTADS.FIELDBYNAME('ID_CLIENTE').AsString) <>'' ) THEN
           BEGIN
              COMMANDTEXT := ' SELECT ID_CLIENTE FROM CLIENTES WHERE ID_CLIENTE='+DELTADS.FIELDBYNAME('ID_CLIENTE').ASSTRING;
              OPEN;
              IF (NOT Fields[0].IsNull) THEN
              BEGIN
                CLOSE;
                COMMANDTEXT :='SELECT R FROM RETID_PRESUPUESTO';
                OPEN;
                AUX:=Fields[0].Value;
              END ;
              CLOSE;
           END
           ELSE
           BEGIN
              CLOSE;
              COMMANDTEXT :='SELECT R FROM RETID_PRESUPUESTO';
              OPEN;
              AUX:=Fields[0].Value;
              CLOSE;
           END;
    END;
    WITH DELTADS  DO
    BEGIN
           EDIT;
           // ME ASEGURO DE QUE SI HA METIDO ALGUN
           // VALOR Y LO HA BORRADO LO PONGA A NULL -> CON EL CLEAR <- PARA QUE
           // NO DE ERROR EN LA CLAVE AJENA

// AL SER ID_CLIENTE INTEGER, NO ME DA ERROR SI LE METO NULOS

//           IF (FieldByname('ID_CLIENTE').CURVALUE = NULL) AND ((FieldByname('ID_CLIENTE').OLDVALUE)<>'')
//           THEN
//               FIELDBYNAME('ID_CLIENTE').CLEAR;
           IF AUX <> -1 THEN
             FIELDBYNAME('ID_PRESUPUESTO').VALUE := AUX;
           POST;
    END;
  END;
//*************************************//

  if updatekind = ukmodify then
  begin
    WITH DELTADS  DO
    BEGIN
           EDIT;
           // ME ASEGURO DE QUE SI HA METIDO ALGUN
           // VALOR Y LO HA BORRADO LO PONGA A NULL -> CON EL CLEAR <- PARA QUE
           // NO DE ERROR EN LA CLAVE AJENA

// AL SER ID_CLIENTE NULO NO DA ERROR SI LE METO NULOS.

//            IF (FieldByname('ID_CLIENTE').CURVALUE = NULL) AND ((FieldByname('ID_CLIENTE').OLDVALUE)<>'')
//            THEN
//               FIELDBYNAME('ID_CLIENTE').CLEAR;
            IF FIELDBYNAME('ID_PRESUPUESTO').ASSTRING = '' THEN
               FIELDBYNAME('ID_PRESUPUESTO').AsString := FIELDBYNAME('ID_PRESUPUESTO').OLDVALUE;
            IF FIELDBYNAME('ID_EMPRESA').ASSTRING = '' THEN
               FIELDBYNAME('ID_EMPRESA').AsString := FIELDBYNAME('ID_EMPRESA').OLDVALUE;
            POST;
    END;
  END;
 END;
 ID_PRESUPUESTO:= AUX;
}
end;

procedure TAGESTISHOP.DSPQ_ARTICULOSAUXAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
 with sender as tdatasetprovider do
   with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_ARTICULOSAUXBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF (TRIM(REGISTRO.ID) <> '') OR
     (TRIM(REGISTRO.TIPO) = '4')
  THEN
  BEGIN
   with sender as tdatasetprovider do
  with dataset as tsqldataset do
    BEGIN
        COMMANDTEXT := ARTICULOSCAMPOS;
      IF REGISTRO.TIPO='1' THEN
        COMMANDTEXT := COMMANDTEXT + ' WHERE (ID_ARTICULO LIKE ('''+REGISTRO.ID+'%'')  OR DESCRIPCION LIKE ('''+REGISTRO.ID+'%'')  OR ART_PROVEEDOR LIKE ('''+REGISTRO.ID+'%'')) AND CHAR(BORRADO) LIKE ('''+REGISTRO.BORRADO+'%'') '+ REGISTRO.ORDEN;
      IF REGISTRO.TIPO='2' THEN // DE MOMMENTO NO LO USO
      // FALTA PONER ORDEN Y ANYO, ESTE CAMPO CUANDO LO PONGA EN LA TABLA
        COMMANDTEXT := COMMANDTEXT + ' WHERE ID_ARTICULO ='''+REGISTRO.ID+''' ' ;
      if registro.tipo = '3' then
         commandtext := commandtext +  ' WHERE (ID_ARTICULO LIKE ('''+REGISTRO.ID+'%'')  OR DESCRIPCION LIKE ('''+REGISTRO.ID+'%'') OR ART_PROVEEDOR LIKE ('''+REGISTRO.ID+'%'')) and cod_familia='''+registro.id1+''' AND CHAR(BORRADO) LIKE ('''+REGISTRO.BORRADO+'%'')  '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO = '4' THEN
         COMMANDTEXT := COMMANDTEXT + REGISTRO.ID + ' '+ REGISTRO.ORDEN;
      registro.id := commandtext;
      OPEN;
        MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO );
    END;
  END;
end;
procedure TAGESTISHOP.DSPQ_MDPRESUPUESTOAfterUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind);
  VAR AUX,AUX1:STRING;
    VAR EMPRESA:STRING;
begin
// PASARLO A TRIGGERS
if ( SOURCEDS.NAME  = 'QMD_PRESUPUESTO') THEN
  if updatekind = ukinsert then
  begin
    WITH DELTADS  DO
    BEGIN
      EMPRESA := FieldByname('ID_EMPRESA').ASSTRING;

      Q_AUX.CLOSE;
      Q_AUX.CommandText := 'UPDATE OPCIONESNUMERICAS SET ID_PRESUPUESTO = ID_PRESUPUESTO + 1 WHERE ID_EMPRESA ='+ EMPRESA +' AND ANYO='+FieldByname('ANYO').ASSTRING;
      
      Q_AUX.ExecSQL(TRUE);
      Q_AUX.CLOSE;

    END;
  END;
{  IF SOURCEDS.Name = 'QMD_LINPRESUPUESTO' THEN
  BEGIN
     Q_AUX.CLOSE;
     AUX := DELTADS.FIELDBYNAME ('ID_PRESUPUESTO').OLDVALUE;
     AUX1 :=DELTADS.FIELDBYNAME ('ID_EMPRESA').OLDVALUE;
     Q_AUX.COMMANDTEXT := ' UPDATE PRESUPUESTOS SET BASE_PRESUPUESTO = (SELECT SUM(IMPORTE) FROM LINEAS_PRESUPUESTO WHERE ID_PRESUPUESTO='+AUX+' AND ID_EMPRESA='+AUX1+') WHERE ID_PRESUPUESTO='+AUX+' AND ID_EMPRESA='+AUX1;
     Q_AUX.ExecSQL(TRUE);

  END;
}
end;

procedure TAGESTISHOP.DSPQ_ARTICULOEANAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
 with sender as tdatasetprovider do
   with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_ARTICULOEANBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR AUX,ID_ARTICULO:STRING;
     LONG:INTEGER;
   REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
//  IF (TRIM(OWNERDATA) <> '') THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
        COMMANDTEXT := 'SELECT * FROM ARTICULOS ';
        IF REGISTRO.ANYO <> '' THEN
           COMMANDTEXT := COMMANDTEXT + ' WHERE (ID_ARTICULO IN (SELECT ID_ARTICULO FROM EAN WHERE EAN='''+REGISTRO.EMPRESA+''') OR ID_ARTICULO ='''+REGISTRO.EMPRESA+''') AND ID_PROVEEDOR='+ REGISTRO.ANYO+' '
        ELSE
           COMMANDTEXT := COMMANDTEXT + ' WHERE ID_ARTICULO IN (SELECT ID_ARTICULO FROM EAN WHERE EAN='''+REGISTRO.EMPRESA+''') OR ID_ARTICULO ='''+REGISTRO.EMPRESA+''' ';
        AUX := COMMANDTEXT;                                                                           //OWNERDATA
        OPEN;
    END;
  END;
end;

procedure TAGESTISHOP.DSPQ_MDPRESUPUESTOAfterApplyUpdates(Sender: TObject;
  var OwnerData: OleVariant);
begin
// OWNERDATA := ID_PRESUPUESTO;
end;

procedure TAGESTISHOP.DSPQ_EANUpdateError(Sender: TObject;
  DataSet: TCustomClientDataSet; E: EUpdateError; UpdateKind: TUpdateKind;
  var Response: TResolverResponse);
begin
 if e.errorcode = 1 then // record not found or changed by another user.
 begin
  if (UpdateKind = ukDelete)
    then
    Response := rrIgnore;
  if (updatekind = ukmodify) then
    RESPONSE := RRSKIP;
  end;
end;

procedure TAGESTISHOP.DSPQ_EANGetData(Sender: TObject;
  DataSet: TCustomClientDataSet);
begin
  DATASET.RecordCount;
  DATASET.RecNo;
  DATASET.LAST;
  DATASET.RecNo;
  DATASET.RecordCount
end;

procedure TAGESTISHOP.DSPQ_MDENTRADASAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_MDENTRADASBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF (TRIM(REGISTRO.ID) <> '') THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := ENTRADASCAMPOS;
      IF REGISTRO.TIPO='1' THEN
           COMMANDTEXT := COMMANDTEXT + ' WHERE (CHAR(ID_ENTRADA) LIKE ('''+REGISTRO.ID+'%'')) AND ID_EMPRESA='+REGISTRO.EMPRESA+'  AND ANYO='+REGISTRO.ANYO+' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='2' THEN
             COMMANDTEXT := COMMANDTEXT + REGISTRO.ID;
      OPEN;
        MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO );
      WITH QMD_LINEAENTRADA DO // PARA HACER EL MASTER-DETAIL LE PASO LOS CAMPOS CLAVE COMO PARAMETROS
        BEGIN
          COMMANDTEXT := LINEASENTRADASCAMPOS;
          COMMANDTEXT := COMMANDTEXT + ' WHERE L.ID_ENTRADA=:ID_ENTRADA AND L.ID_EMPRESA=:ID_EMPRESA AND L.ANYO=:ANYO '+REGISTRO.ORDENLINEA ;
        END;
    END;
  END;
end;
procedure TAGESTISHOP.DSPQ_MDENTRADASAfterUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind);
  VAR EMPRESA,AVISAR,IDARTICULO,VALORANTERIOR,CANTIDAD,CANTIDADACT,CANTIDADANT,MARCA,DESCRIPCION:STRING;
begin
// PASARLO A TRIGGERS
 DARAVISO:=0;
{ if ( SOURCEDS.NAME  = 'QMD_ENTRADAS') THEN
  if updatekind = ukinsert then
  begin
    WITH DELTADS  DO
    BEGIN
      EMPRESA := FieldByname('ID_EMPRESA').ASSTRING;
      Q_AUX.CLOSE;
      Q_AUX.CommandText := 'UPDATE OPCIONESNUMERICAS SET ID_ENTRADA = ID_ENTRADA + 1 WHERE ID_EMPRESA ='+ EMPRESA +' AND ANYO='+FieldByname('ANYO').ASSTRING;
      Q_AUX.ExecSQL(TRUE);
      Q_AUX.CLOSE;
    END;
  END;
}
 IF (SOURCEDS.NAME = 'QMD_LINEAENTRADA')
 AND (QMD_ENTRADAS.TAG=0) THEN
 BEGIN
  WITH DELTADS DO
  BEGIN
    IF (UPDATEKIND = UKINSERT)
    and (FieldByname('ID_ARTICULO').asstring <> '')
    THEN
    BEGIN

      Q_AUX1.CLOSE;
      Q_AUX1.CommandText := 'SELECT ALMACENABLE FROM ARTICULOS WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' ';
      Q_AUX1.OPEN;
      IF ( Q_AUX1.Fields.Fields [0].AsString  = '1') THEN
      BEGIN
        Q_AUX.CLOSE;
        Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
        Q_AUX.ExecSQL(TRUE);
        IF Q_AUX.RECORDCOUNT > 0 THEN
        BEGIN
          Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD + '+STRINGREPLACE(FIELDBYNAME('CANTIDAD').ASSTRING,',','.',[RFREPLACEALL,rfIgnoreCase])+' WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
          Q_AUX.ExecSQL(TRUE);
        END
        ELSE
        BEGIN
          Q_AUX.CLOSE;
          Q_AUX.COMMANDTEXT := ' SELECT AVISAR as cuenta FROM EMPRESAS WHERE ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING+' ';
          q_aux.open;
          AVISAR := '0';
          IF Q_AUX.RECORDCOUNT > 0 THEN
            IF Q_AUX.Fields.Fields [0].AsString <> '' THEN
               AVISAR := Q_AUX.Fields.Fields [0].AsString;
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'INSERT INTO ALMACEN(ID_ARTICULO,ID_EMPRESA,AVISAR,MARCA,DESCRIPCION,CANTIDAD)  VALUES ('''+FIELDBYNAME('ID_ARTICULO').ASSTRING+''','+FIELDBYNAME('ID_EMPRESA').ASSTRING+','+AVISAR+','''+FIELDBYNAME('MARCA').ASSTRING+''','''+FIELDBYNAME('DESCRIPCION').ASSTRING+''','+STRINGREPLACE(FIELDBYNAME('CANTIDAD').ASSTRING,',','.',[RFREPLACEALL,rfIgnoreCase])+' ) ';
// PRUEBAS CON LOS TRIGGERS v. 3.0
          Q_AUX.ExecSQL(TRUE);
        END;
        Q_AUX.CLOSE;
      END;
      Q_AUX1.CLOSE;
    END;

    IF UPDATEKIND = UKMODIFY THEN
    BEGIN
        Q_AUX.CLOSE;

        CANTIDADACT:='0';CANTIDADANT:='0';
        IF FIELDBYNAME('CANTIDAD').OLDVALUE <> NULL THEN
           CANTIDADANT :=FIELDBYNAME('CANTIDAD').OLDVALUE ;
        IF FIELDBYNAME('CANTIDAD').ISNULL THEN
           CANTIDADACT := CANTIDADANT
        ELSE
           CANTIDADACT :=FIELDBYNAME('CANTIDAD').ASSTRING ;

        EMPRESA := FIELDBYNAME('ID_EMPRESA').OLDVALUE;
        IF NOT FIELDBYNAME('ID_ARTICULO').IsNull THEN
          IF FIELDBYNAME('ID_ARTICULO').OLDVALUE = NULL THEN
             IDARTICULO := ''
          ELSE
             IDARTICULO := FIELDBYNAME('ID_ARTICULO').OLDVALUE
        ELSE
           IDARTICULO := '';


        IF ((FieldByname('ID_ARTICULO').NEWVALUE = UNASSIGNED)
        and (FieldByname('ID_ARTICULO').oldvalue <> null))

        THEN
        // NO SE HA CAMBIADO EL ID_ARTICULO
        BEGIN
         IDARTICULO := '';
         IF FIELDBYNAME('ID_ARTICULO').OLDVALUE <> '' THEN
            IDARTICULO := FIELDBYNAME('ID_ARTICULO').OLDVALUE;
         Q_AUX.CLOSE;
         Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+IDARTICULO+''' AND ID_EMPRESA='+EMPRESA;
         Q_AUX.OPEN;
         IF (Q_AUX.RECORDCOUNT > 0)
         AND (CANTIDADACT <> '0')
         THEN
         BEGIN
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD - '+STRINGREPLACE(CANTIDADANT,',','.',[RFREPLACEALL,rfIgnoreCase])+'+'+STRINGREPLACE(CANTIDADACT,',','.',[RFREPLACEALL,rfIgnoreCase])+' WHERE ID_ARTICULO='''+IDARTICULO+''' AND ID_EMPRESA='+EMPRESA;
           Q_AUX.ExecSQL(TRUE);
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'SELECT AVISAR FROM ALMACEN WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').OLDVALUE+''' AND CANTIDAD <= AVISAR AND ID_EMPRESA='+EMPRESA;
           Q_AUX.OPEN;
           IF Q_AUX.RECORDCOUNT > 0 THEN
              DARAVISO := 1;
           Q_AUX.CLOSE;

          END;
         END
         ELSE
        // EL ARTICULO HA CAMBIADO
         BEGIN
         IF FIELDBYNAME('ID_ARTICULO').OLDVALUE <> NULL THEN
         BEGIN
          IDARTICULO := FIELDBYNAME('ID_ARTICULO').OLDVALUE;
          EMPRESA := FIELDBYNAME('ID_EMPRESA').OLDVALUE;
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+IDARTICULO+''' AND ID_EMPRESA='+EMPRESA;
          Q_AUX.OPEN;
          IF (Q_AUX.RECORDCOUNT > 0)
          THEN
          BEGIN
            Q_AUX.CLOSE;
            Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD - '+STRINGREPLACE(CANTIDADANT,',','.',[RFREPLACEALL,rfIgnoreCase]) +'  WHERE ID_ARTICULO='''+IDARTICULO+''' AND ID_EMPRESA='+EMPRESA;
            Q_AUX.ExecSQL(TRUE);
            Q_AUX.CLOSE;
            Q_AUX.CommandText := 'SELECT AVISAR FROM ALMACEN WHERE ID_ARTICULO='''+IDARTICULO+''' AND CANTIDAD <= AVISAR AND ID_EMPRESA='+EMPRESA;
            Q_AUX.OPEN;
            IF Q_AUX.RECORDCOUNT > 0 THEN
               DARAVISO := 1;
            Q_AUX.CLOSE;
          END;
         END;
         if trim(FieldByname('ID_ARTICULO').ASSTRING) <> '' then
         begin
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+EMPRESA;
          Q_AUX.OPEN;
          IF (Q_AUX.RECORDCOUNT > 0)
          THEN
          BEGIN
            Q_AUX.CLOSE;
            Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD + '+STRINGREPLACE(CANTIDADACT,',','.',[RFREPLACEALL,rfIgnoreCase]) +'  WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+EMPRESA;
            Q_AUX.ExecSQL(TRUE);
          END
          ELSE
          BEGIN
           Q_AUX.CLOSE;
           Q_AUX.COMMANDTEXT := ' SELECT AVISAR as cuenta FROM EMPRESAS WHERE ID_EMPRESA='+EMPRESA+' ';
           q_aux.open;
           AVISAR := '0';
           IF Q_AUX.RECORDCOUNT > 0 THEN
             IF Q_AUX.FIELDS.FIELDS[0].ASSTRING <> '' THEN
                AVISAR := Q_AUX.Fields.Fields [0].AsString;

           IF FIELDBYNAME('CANTIDAD').ASSTRING <> '' THEN
              CANTIDAD := FieldByName('CANTIDAD').AsString
           ELSE
              IF FIELDBYNAME('CANTIDAD').OldValue = NULL THEN
               CANTIDAD := '0'
             ELSE
              CANTIDAD := FIELDBYNAME('CANTIDAD').OLDVALUE;
          IF FIELDBYNAME('MARCA').ASSTRING <> '' THEN
             MARCA := FIELDBYNAME('MARCA').ASSTRING
          ELSE
             IF FIELDBYNAME('MARCA').OldValue = NULL THEN
                 MARCA:=''
             ELSE
                 MARCA := FIELDBYNAME('MARCA').OLDVALUE;
          IF FIELDBYNAME('DESCRIPCION').ASSTRING <> '' THEN
             DESCRIPCION := FIELDBYNAME('DESCRIPCION').ASSTRING
          ELSE
             IF FIELDBYNAME('DESCRIPCION').OldValue = NULL THEN
                 DESCRIPCION:=''
             ELSE
                 DESCRIPCION := FIELDBYNAME('DESCRIPCION').OLDVALUE;

          Q_AUX1.CLOSE;
          Q_AUX1.CommandText := 'SELECT ALMACENABLE FROM ARTICULOS WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' ';
          Q_AUX1.OPEN;
          IF ( Q_AUX1.Fields.Fields [0].AsString = '1') THEN
          BEGIN
               Q_AUX.CLOSE;
               Q_AUX.CommandText := 'INSERT INTO ALMACEN(ID_ARTICULO,ID_EMPRESA,AVISAR,MARCA,DESCRIPCION,CANTIDAD) VALUES ('''+FIELDBYNAME('ID_ARTICULO').ASSTRING+''','+EMPRESA+','+AVISAR+','''+MARCA+''','''+DESCRIPCION+''','+STRINGREPLACE(CANTIDAD,',','.',[RFREPLACEALL,rfIgnoreCase])+') ';
               AVISAR := Q_AUX.COMMANDTEXT;
         // PRUEBAS CON LOS TRIGGERS v. 3.0
               Q_AUX.ExecSQL(TRUE);
           END;
           Q_AUX1.CLOSE;
          END;
        end;

      END;
      Q_AUX.CLOSE;
    END;



    IF UPDATEKIND = UKdelete THEN
    BEGIN

        CANTIDADANT:='0';
        IF FIELDBYNAME('CANTIDAD').OLDVALUE <> NULL THEN
           CANTIDADANT :=FIELDBYNAME('CANTIDAD').OLDVALUE ;

        Q_AUX.CLOSE;
        Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
        Q_AUX.ExecSQL(TRUE);
        IF Q_AUX.RECORDCOUNT > 0 THEN
        BEGIN
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD - '+STRINGREPLACE(CANTIDADANT,',','.',[RFREPLACEALL,rfIgnoreCase])+' WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
          Q_AUX.ExecSQL(TRUE);
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'SELECT AVISAR FROM ALMACEN WHERE ID_ARTICULO='''+STRINGREPLACE(CANTIDADANT,',','.',[RFREPLACEALL,rfIgnoreCase])+''' AND CANTIDAD <= AVISAR AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
          Q_AUX.OPEN;
          IF Q_AUX.RECORDCOUNT > 0 THEN
             DARAVISO := 1;
          Q_AUX.CLOSE;

        END;
        Q_AUX.CLOSE;
    END
  END
END;

end;

procedure TAGESTISHOP.dspq_proveedor_acreedorauxAfterGetRecords(
  Sender: TObject; var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.dspq_proveedor_acreedorauxBeforeGetRecords(
  Sender: TObject; var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF (TRIM(REGISTRO.ID) <> '') THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := PROVEEDORACREEDORCAMPOS;
      IF REGISTRO.TIPO='1' THEN
           COMMANDTEXT := COMMANDTEXT + ' WHERE (NIF LIKE ('''+REGISTRO.ID+'%'') OR CHAR(ID_PROVEEDOR) LIKE ('''+REGISTRO.ID+'%'') OR NOMBRE LIKE ('''+REGISTRO.ID+'%'')) AND CHAR(BORRADO) LIKE ('''+REGISTRO.BORRADO+'%'') '+' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='2' THEN
           COMMANDTEXT := COMMANDTEXT + ' WHERE ID_PROVEEDOR = '+REGISTRO.ID+' AND BORRADO=0 '+' '+REGISTRO.ORDEN;
      OPEN;
        MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO );
    END;
  END;
end;

procedure TAGESTISHOP.DSPQ_MDALBARANAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_MDALBARANBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := ALBARANESCAMPOS;
      IF REGISTRO.TIPO='1' THEN
         COMMANDTEXT := COMMANDTEXT + ' WHERE (CHAR(AL.ID_ALBARAN) LIKE ('''+REGISTRO.ID+'%'')) AND AL.ID_EMPRESA='+REGISTRO.EMPRESA+' AND AL.ANYO='+REGISTRO.ANYO+' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='2' THEN
         COMMANDTEXT := COMMANDTEXT + REGISTRO.ID ;//+ ' AND AL.ID_EMPRESA='+REGISTRO.EMPRESA+' ' + REGISTRO.ORDEN;
      IF REGISTRO.TIPO='6' THEN
         COMMANDTEXT := COMMANDTEXT + REGISTRO.ID + ' AND AL.ID_EMPRESA='+REGISTRO.EMPRESA+' AND AL.ANYO='+REGISTRO.ANYO+' '+ REGISTRO.ORDEN;
      IF REGISTRO.TIPO='7' THEN
      begin
          COMMANDTEXT := ALBARANESauxCAMPOS;
          COMMANDTEXT := COMMANDTEXT + REGISTRO.ID+ ' AND AL.ID_EMPRESA='+REGISTRO.EMPRESA+' AND AL.ANYO='+REGISTRO.ANYO+' '+ REGISTRO.ORDEN; //+' AND ID_EMPRESA='+REGISTRO.EMPRESA+' '+REGISTRO.ORDEN;
      end;
      REGISTRO.ID:=COMMANDTEXT;
      OPEN;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO );
      WITH Q_MDLINEAALBARAN DO // PARA HACER EL MASTER-DETAIL LE PASO LOS CAMPOS CLAVE COMO PARAMETROS
        BEGIN
          COMMANDTEXT := LINEAALBARANESCAMPOS;
          COMMANDTEXT := COMMANDTEXT + ' WHERE L.ID_ALBARAN=:ID_ALBARAN AND L.ID_EMPRESA=:ID_EMPRESA AND L.ID_SERIE=:ID_SERIE AND L.ANYO=:ANYO '+REGISTRO.ORDENLINEA+' ';
        END;
    END;
  END;
end;

procedure TAGESTISHOP.DSPQ_MDALBARANAfterUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind);
   VAR EMPRESA,ID_SERIE,ANYO:STRING;
       AVISAR,IDARTICULO,VALORANTERIOR,CANTIDAD,MARCA,DESCRIPCION:STRING;
begin
// PASARLO A TRIGGERS
 daravisoalbaran:=0;
{ if ( SOURCEDS.NAME  = 'Q_MDALBARAN') THEN
 BEGIN
 // ver 3.0

  if updatekind = ukinsert then
  begin
    WITH DELTADS  DO
    BEGIN
      EMPRESA := FieldByname('ID_EMPRESA').ASSTRING;
      ID_SERIE := FieldByname('ID_SERIE').ASSTRING;
      ANYO := FieldByname('ANYO').ASSTRING;

      Q_AUX.CLOSE;
      Q_AUX.CommandText := 'UPDATE SERIES SET SIG_ALBARAN = SIG_ALBARAN + 1 WHERE ID_EMPRESA ='+ EMPRESA + ' AND ID_SERIE='''+ID_SERIE+''' AND ANYO='+ANYO;
      Q_AUX.ExecSQL(TRUE);
      Q_AUX.CLOSE;

    END;
  END;
 END;
 }

 IF (SOURCEDS.NAME = 'Q_MDLINEAALBARAN')
 AND (Q_MDALBARAN.TAG=0)
 THEN
 BEGIN
// PRUEBAS CON LOS TRIGGERS v. 3.0
   ACTUALIZARALMACEN(DELTADS,UPDATEKIND,0);
{
  IF (SOURCEDS.NAME = 'Q_MDLINEAALBARAN') THEN
  BEGIN
  WITH DELTADS DO
  BEGIN
    IF UPDATEKIND = UKINSERT THEN
    BEGIN
        Q_AUX.CLOSE;
        Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
        Q_AUX.ExecSQL(TRUE);
        IF Q_AUX.RECORDCOUNT > 0 THEN
        BEGIN
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD - '+FIELDBYNAME('CANTIDAD').ASSTRING+' WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
          Q_AUX.ExecSQL(TRUE);
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'SELECT AVISAR FROM ALMACEN WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').ASSTRING+''' AND CANTIDAD <= AVISAR AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
          Q_AUX.OPEN;
          IF Q_AUX.RECORDCOUNT > 0 THEN
             DARAVISOALBARAN := 1;
          Q_AUX.CLOSE;
        END;
    END;
    IF UPDATEKIND = UKMODIFY THEN
    BEGIN
        Q_AUX.CLOSE;
        EMPRESA := FIELDBYNAME('ID_EMPRESA').OLDVALUE;

        IF NOT FIELDBYNAME('ID_ARTICULO').IsNull THEN
           IDARTICULO := FIELDBYNAME('ID_ARTICULO').OLDVALUE
        ELSE
           IDARTICULO := '';
             IF FIELDBYNAME('CANTIDAD').OldValue = NULL THEN
                 VALORANTERIOR :=''
             ELSE
                 VALORANTERIOR := FIELDBYNAME('CANTIDAD').OLDVALUE;
        IF FieldByname('ID_ARTICULO').ASSTRING = ''
        THEN
        // NO SE HA CAMBIADO EL ID_ARTICULO
        BEGIN
         Q_AUX.CLOSE;
         Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').OLDVALUE+''' AND ID_EMPRESA='+EMPRESA;
         Q_AUX.OPEN;
         IF (Q_AUX.RECORDCOUNT > 0)
         AND (fieldbyname('cantidad').asstring <> '')
//         AND (FIELDBYNAME('CANTIDAD').AsString <>
//              FIELDBYNAME('CANTIDAD').OldValue )
         THEN
         BEGIN
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD + '+VALORANTERIOR +' - '+FIELDBYNAME('CANTIDAD').ASSTRING+' WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').OLDVALUE+''' AND ID_EMPRESA='+EMPRESA;
           Q_AUX.ExecSQL(TRUE);
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'SELECT AVISAR FROM ALMACEN WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').OLDVALUE+''' AND CANTIDAD <= AVISAR AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
           Q_AUX.OPEN;
           IF Q_AUX.RECORDCOUNT > 0 THEN
              DARAVISOALBARAN := 1;
           Q_AUX.CLOSE;

         END;
        END
        ELSE
        // EL ARTICULO HA CAMBIADO
        BEGIN
         Q_AUX.CLOSE;
         Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+IDARTICULO+''' AND ID_EMPRESA='+EMPRESA;
         Q_AUX.OPEN;
         IF (Q_AUX.RECORDCOUNT > 0)
         THEN
         BEGIN
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD + '+VALORANTERIOR +'  WHERE ID_ARTICULO='''+IDARTICULO+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
           Q_AUX.ExecSQL(TRUE);
         END;
         Q_AUX.CLOSE;
         Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+EMPRESA;
         Q_AUX.OPEN;
         IF (Q_AUX.RECORDCOUNT > 0)
         THEN
         BEGIN
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD - '+FIELDBYNAME('CANTIDAD').ASSTRING +'  WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+EMPRESA;
           Q_AUX.ExecSQL(TRUE);
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'SELECT AVISAR FROM ALMACEN WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').ASSTRING+''' AND CANTIDAD <= AVISAR AND ID_EMPRESA='+EMPRESA;
           Q_AUX.OPEN;
           IF Q_AUX.RECORDCOUNT > 0 THEN
              DARAVISOALBARAN := 1;
           Q_AUX.CLOSE;

         END;
        END;
    END;
    IF UPDATEKIND = UKdelete THEN
    BEGIN
        Q_AUX.CLOSE;
        Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
        Q_AUX.ExecSQL(TRUE);
        IF Q_AUX.RECORDCOUNT > 0 THEN
        BEGIN
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD + '+FIELDBYNAME('CANTIDAD').ASSTRING+' WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
          Q_AUX.ExecSQL(TRUE);
        END;
        Q_AUX.CLOSE;
    END
}
 END;

end;

procedure TAGESTISHOP.DSPQ_MDPRESUPUESTOAUXAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
 with sender as tdatasetprovider do
   with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_MDPRESUPUESTOAUXBeforeGetRecords(
  Sender: TObject; var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := PRESUPUESTOSAUXCAMPOS;
      IF REGISTRO.TIPO='1' THEN
          COMMANDTEXT := COMMANDTEXT + ' AND (CHAR(ID_PRESUPUESTO) LIKE ('''+REGISTRO.ID+'%'')) AND ID_EMPRESA='+REGISTRO.EMPRESA+' AND ANYO'+REGISTRO.ANYO+' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='2' THEN
          COMMANDTEXT := COMMANDTEXT + REGISTRO.ID+ ' AND PR.ID_EMPRESA='+REGISTRO.EMPRESA+' AND PR.ANYO='+REGISTRO.ANYO+' '+ REGISTRO.ORDEN;; //+' AND ID_EMPRESA='+REGISTRO.EMPRESA+' '+REGISTRO.ORDEN;
      OPEN;
      REGISTRO.ID := COMMANDTEXT;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO);
      WITH Q_MDLINPRESUPUESTOAUX DO // PARA HACER EL MASTER-DETAIL LE PASO LOS CAMPOS CLAVE COMO PARAMETROS
        BEGIN
          COMMANDTEXT := LINEAPRESUPUESTOSCAMPOS;
          COMMANDTEXT := COMMANDTEXT + ' WHERE L.ID_PRESUPUESTO=:ID_PRESUPUESTO AND L.ID_EMPRESA=:ID_EMPRESA AND L.ANYO=:ANYO '+REGISTRO.ORDENLINEA+' ';
        END;
    END;
  END;
end;

procedure TAGESTISHOP.DSPQ_MDFACTURAAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_MDFACTURAAfterUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind);
   VAR EMPRESA,ID_SERIE,ANYO:STRING;
       AVISAR,IDARTICULO,VALORANTERIOR,CANTIDAD,MARCA,DESCRIPCION:STRING;
begin
// PASARLO A TRIGGERS
 DARAVISOFACTURA:=0;
 // VER 3.0 PASADO A TRIGGERS
{ if ( SOURCEDS.NAME  = 'Q_MDFACTURA') THEN
 BEGIN
  if updatekind = ukinsert then
  begin
    WITH DELTADS  DO
    BEGIN
      EMPRESA := FieldByname('ID_EMPRESA').ASSTRING;
      ID_SERIE := FieldByname('ID_SERIE').ASSTRING;
      ANYO :=FieldByname('ANYO').ASSTRING;

      Q_AUX.CLOSE;
      Q_AUX.CommandText := 'UPDATE SERIES SET SIG_FACTURA = SIG_FACTURA + 1 WHERE ID_EMPRESA ='+ EMPRESA + ' AND ID_SERIE='''+ID_SERIE+'''  AND ANYO='+ANYO;
      Q_AUX.ExecSQL(TRUE);
      Q_AUX.CLOSE;

    END;
  END;
 END;
}
 IF (SOURCEDS.NAME = 'Q_MDLINEAFACTURA')
 AND (Q_MDFACTURA.Tag =0)
 THEN
 IF NOT ENALBARAN THEN
 BEGIN
   ACTUALIZARALMACEN(DELTADS,UPDATEKIND,0);
{  WITH DELTADS DO
  BEGIN
    IF UPDATEKIND = UKINSERT THEN
    BEGIN
        Q_AUX.CLOSE;
        Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
        Q_AUX.ExecSQL(TRUE);
        IF Q_AUX.RECORDCOUNT > 0 THEN
        BEGIN
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD - '+FIELDBYNAME('CANTIDAD').ASSTRING+' WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
          Q_AUX.ExecSQL(TRUE);
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'SELECT AVISAR FROM ALMACEN WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').ASSTRING+''' AND CANTIDAD <= AVISAR AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
          Q_AUX.OPEN;
          IF Q_AUX.RECORDCOUNT > 0 THEN
             DARAVISOFACTURA := 1;
          Q_AUX.CLOSE;
        END;
    END;
    IF UPDATEKIND = UKMODIFY THEN
    BEGIN
        Q_AUX.CLOSE;
        EMPRESA := FIELDBYNAME('ID_EMPRESA').OLDVALUE;
        IF NOT FIELDBYNAME('ID_ARTICULO').IsNull THEN
        // SE HA CAMBIADO EL ARTICULO
           IDARTICULO := FIELDBYNAME('ID_ARTICULO').OLDVALUE
        ELSE
        // NO SE HA CAMBIADO EL ARTICULO
           IDARTICULO := '';
             IF FIELDBYNAME('CANTIDAD').OldValue = NULL THEN
                 VALORANTERIOR:=''
             ELSE
                 VALORANTERIOR := FIELDBYNAME('CANTIDAD').OLDVALUE;
        IF FieldByname('ID_ARTICULO').ASSTRING = ''
        THEN
        // NO SE HA CAMBIADO EL ID_ARTICULO
        BEGIN
         Q_AUX.CLOSE;
         Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').OLDVALUE+''' AND ID_EMPRESA='+EMPRESA;
         Q_AUX.OPEN;
         IF (Q_AUX.RECORDCOUNT > 0)
         AND (fieldbyname('cantidad').asstring <> '')
//        AND (FIELDBYNAME('CANTIDAD').AsString <>
//              FIELDBYNAME('CANTIDAD').OldValue )

         THEN
         BEGIN
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD + '+VALORANTERIOR +' - '+FIELDBYNAME('CANTIDAD').ASSTRING+' WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').OLDVALUE+''' AND ID_EMPRESA='+EMPRESA;
           Q_AUX.ExecSQL(TRUE);
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'SELECT AVISAR FROM ALMACEN WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').OLDVALUE+''' AND CANTIDAD <= AVISAR AND ID_EMPRESA='+EMPRESA;
           Q_AUX.OPEN;
           IF Q_AUX.RECORDCOUNT > 0 THEN
              DARAVISOFACTURA := 1;
           Q_AUX.CLOSE;

         END;
        END
        ELSE
        // EL ARTICULO HA CAMBIADO
        BEGIN
         Q_AUX.CLOSE;
         Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+IDARTICULO+''' AND ID_EMPRESA='+EMPRESA;
         Q_AUX.OPEN;
         IF (Q_AUX.RECORDCOUNT > 0)
         THEN
         BEGIN
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD + '+VALORANTERIOR +'  WHERE ID_ARTICULO='''+IDARTICULO+''' AND ID_EMPRESA='+EMPRESA;
           Q_AUX.ExecSQL(TRUE);
         END;
         Q_AUX.CLOSE;
         Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+EMPRESA;
         Q_AUX.OPEN;
         IF (Q_AUX.RECORDCOUNT > 0)
         THEN
         BEGIN
         // FALTA POR TENER EN CUENTA QUE HAYA CAMBIADO EL ARTICULO
         // PERO QUE NO CAMBIE LA CANTIDAD.
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD - '+FIELDBYNAME('CANTIDAD').ASSTRING +'  WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+EMPRESA;
           Q_AUX.ExecSQL(TRUE);
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'SELECT AVISAR FROM ALMACEN WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').ASSTRING+''' AND CANTIDAD <= AVISAR AND ID_EMPRESA='+EMPRESA;
           Q_AUX.OPEN;
           IF Q_AUX.RECORDCOUNT > 0 THEN
              DARAVISOFACTURA := 1;
           Q_AUX.CLOSE;

         END;
        END;
    END;
    IF UPDATEKIND = UKdelete THEN
    BEGIN
        Q_AUX.CLOSE;
        Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
        Q_AUX.ExecSQL(TRUE);
        IF Q_AUX.RECORDCOUNT > 0 THEN
        BEGIN
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD + '+FIELDBYNAME('CANTIDAD').ASSTRING+' WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
          Q_AUX.ExecSQL(TRUE);
        END;
        Q_AUX.CLOSE;
    END
 END;
}
END
end;

procedure TAGESTISHOP.DSPQ_MDFACTURABeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := FACTURASCAMPOS;
      IF REGISTRO.TIPO='1' THEN
         COMMANDTEXT := COMMANDTEXT + ' WHERE (CHAR(ID_FACTURA) LIKE ('''+REGISTRO.ID+'%'')) AND ID_EMPRESA='+REGISTRO.EMPRESA+' AND ANYO='+REGISTRO.ANYO+' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='2' THEN
         COMMANDTEXT := COMMANDTEXT + REGISTRO.ID + REGISTRO.ORDEN; //+ ' AND ID_EMPRESA='+REGISTRO.EMPRESA+' ' + REGISTRO.ORDEN;
      IF REGISTRO.TIPO='6' THEN
         COMMANDTEXT := COMMANDTEXT + REGISTRO.ID + ' AND FA.ID_EMPRESA='+REGISTRO.EMPRESA+' AND FA.ANYO='+REGISTRO.ANYO+' '+ REGISTRO.ORDEN;
      OPEN;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO );
      WITH Q_MDLINEAFACTURA DO // PARA HACER EL MASTER-DETAIL LE PASO LOS CAMPOS CLAVE COMO PARAMETROS
        BEGIN
          COMMANDTEXT := LINEAFACTURACAMPOS;
          COMMANDTEXT := COMMANDTEXT + ' WHERE L.ID_FACTURA=:ID_FACTURA AND L.ID_EMPRESA=:ID_EMPRESA AND L.ID_SERIE=:ID_SERIE AND L.ANYO=:ANYO '+REGISTRO.ORDENLINEA;
        END;
    END;
  END;
end;

procedure TAGESTISHOP.DSPQ_MDALBARANAUXAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_MDALBARANAUXBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := ALBARANESAUXCAMPOS;
      IF REGISTRO.TIPO='1' THEN
          COMMANDTEXT := COMMANDTEXT + ' AND (CHAR(ID_ALBARAN) LIKE ('''+REGISTRO.ID+'%'')) AND ID_EMPRESA='+REGISTRO.EMPRESA+' AND ANYO='+REGISTRO.ANYO+ ' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='2' THEN
          COMMANDTEXT := COMMANDTEXT + REGISTRO.ID+ ' AND AL.ID_EMPRESA='+REGISTRO.EMPRESA+' AND AL.ANYO='+REGISTRO.ANYO+' '+ REGISTRO.ORDEN;; //+' AND ID_EMPRESA='+REGISTRO.EMPRESA+' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='3' THEN
          COMMANDTEXT := COMMANDTEXT + REGISTRO.ID+ ' AND AL.ID_EMPRESA='+REGISTRO.EMPRESA+' '+ REGISTRO.ORDEN;; //+' AND ID_EMPRESA='+REGISTRO.EMPRESA+' '+REGISTRO.ORDEN;
          // QUITO EL ANYO PORQUE HAGO UNA CONSULTA CON FECHAS.
      REGISTRO.ID := COMMANDTEXT;
      OPEN;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO);
      WITH Q_MDLINEAALBARANAUX DO // PARA HACER EL MASTER-DETAIL LE PASO LOS CAMPOS CLAVE COMO PARAMETROS
        BEGIN
          COMMANDTEXT := LINEAALBARANESCAMPOS;
          COMMANDTEXT := COMMANDTEXT + ' WHERE L.ID_ALBARAN=:ID_ALBARAN AND L.ID_EMPRESA=:ID_EMPRESA AND L.ID_SERIE=:ID_SERIE AND L.ANYO=:ANYO '+REGISTRO.ORDENLINEA+' ';
        END;
    END;
  END;
end;
procedure TAGESTISHOP.DSPQ_FORMAPAGOAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_FORMAPAGOBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := FORMAPAGOCAMPOS;
//      IF REGISTRO.TIPO='1' THEN
      COMMANDTEXT := COMMANDTEXT + ' WHERE ID_FORMA LIKE ('''+REGISTRO.ID+'%'') OR DESCRIPCION LIKE ('''+REGISTRO.ID+'%'') ';
      OPEN;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO);
    END;
  END;
end;


procedure TAGESTISHOP.DSPQ_FORMAPAGOAUXAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_FORMAPAGOAUXBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := FORMAPAGOCAMPOS;
//      IF REGISTRO.TIPO='1' THEN
      COMMANDTEXT := COMMANDTEXT + ' WHERE ID_FORMA LIKE ('''+REGISTRO.ID+'%'') OR DESCRIPCION LIKE ('''+REGISTRO.ID+'%'') ';
      OPEN;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO);
    END;
  END;
end;

procedure TAGESTISHOP.DSPQ_MDCOBROAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_MDCOBROBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := COBROCAMPOS;
      IF REGISTRO.TIPO='1' THEN
         COMMANDTEXT := COMMANDTEXT + ' WHERE (CHAR(CR.ID_COBRO) LIKE ('''+REGISTRO.ID+'%'')) AND CR.ID_EMPRESA='+REGISTRO.EMPRESA+' AND ANYO='+REGISTRO.ANYO+' '+REGISTRO.ID1+ ' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='2' THEN
         COMMANDTEXT := COMMANDTEXT + REGISTRO.ID ;// + ' AND CR.ID_EMPRESA='+REGISTRO.EMPRESA+' ' + REGISTRO.ORDEN;
      IF REGISTRO.TIPO='6' THEN
         COMMANDTEXT := COMMANDTEXT + REGISTRO.ID + ' AND CR.ID_EMPRESA='+REGISTRO.EMPRESA+' AND CR.ANYO='+REGISTRO.ANYO+' '+ REGISTRO.ORDEN;
      REGISTRO.ID:=COMMANDTEXT;
      OPEN;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO );
      WITH Q_MDLINEACOBRO DO // PARA HACER EL MASTER-DETAIL LE PASO LOS CAMPOS CLAVE COMO PARAMETROS
        BEGIN
          COMMANDTEXT := LINEACOBROCAMPOS;
          COMMANDTEXT := COMMANDTEXT + ' WHERE L.ID_COBRO=:ID_COBRO AND L.ANYO=:ANYO ';
        END;
    END;
  END;
end;

procedure TAGESTISHOP.DSPQ_MDCOBROAfterUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind);
begin
 if ( SOURCEDS.NAME  = 'Q_MDCOBRO') THEN
 BEGIN
  if updatekind = ukinsert then
  begin
    WITH DELTADS  DO
    BEGIN
      Q_AUX.CLOSE;
      Q_AUX.CommandText := 'UPDATE OPCIONESNUMERICAS SET ID_COBRO = ID_COBRO + 1 WHERE ID_EMPRESA ='+ FieldByname('ID_EMPRESA').ASSTRING +' AND ANYO='+FieldByname('ANYO').ASSTRING;
      Q_AUX.ExecSQL(TRUE);
      Q_AUX.CLOSE;

    END;
  END;
 END;
end;

procedure TAGESTISHOP.DSPQ_MDFACTURAAUXAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_MDFACTURAAUXBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := FACTURASAUXCAMPOS;
      IF REGISTRO.TIPO='1' THEN
         COMMANDTEXT := COMMANDTEXT + ' and (CHAR(ID_FACTURA) LIKE ('''+REGISTRO.ID+'%'')) AND ID_EMPRESA='+REGISTRO.EMPRESA+' AND ANYO='+REGISTRO.ANYO+' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='2' THEN
         COMMANDTEXT := COMMANDTEXT + REGISTRO.ID + ' AND FA.ID_EMPRESA='+REGISTRO.EMPRESA+' AND FA.ANYO='+REGISTRO.ANYO+' '+ REGISTRO.ORDEN;
      IF REGISTRO.TIPO='3' THEN
         COMMANDTEXT := COMMANDTEXT + REGISTRO.ID + ' AND FA.ID_EMPRESA='+REGISTRO.EMPRESA+' '+ REGISTRO.ORDEN;
         // QUITO ANYO PORQUE VIENE RESTRINGIDO POR FECHAS
      REGISTRO.ID:=COMMANDTEXT;
      OPEN;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO );
      WITH Q_MDLINEAFACTURAAUX DO // PARA HACER EL MASTER-DETAIL LE PASO LOS CAMPOS CLAVE COMO PARAMETROS
        BEGIN
          COMMANDTEXT := LINEAFACTURACAMPOS;
          COMMANDTEXT := COMMANDTEXT + ' WHERE L.ID_FACTURA=:ID_FACTURA AND L.ID_EMPRESA=:ID_EMPRESA AND L.ID_SERIE=:ID_SERIE AND L.ANYO=:ANYO '+REGISTRO.ORDENLINEA;
        END;
    END;
  END;
end;


procedure TAGESTISHOP.DSPQ_MDCOBROAUXAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_MDCOBROAUXBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF (TRIM(REGISTRO.ID) <> '' ) OR
  (TRIM(REGISTRO.TIPO) = '3')
  THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := COBROAUXCAMPOS;
      IF REGISTRO.TIPO='1' THEN
         COMMANDTEXT := COMMANDTEXT + ' AND (CHAR(CR.ID_COBRO) LIKE ('''+REGISTRO.ID+'%'')) AND CR.ID_EMPRESA='+REGISTRO.EMPRESA+' '+REGISTRO.ID1+ '  AND ANYO='+REGISTRO.ANYO+ ' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='2' THEN
         COMMANDTEXT := COMMANDTEXT + REGISTRO.ID + ' AND CR.ID_EMPRESA='+REGISTRO.EMPRESA+' ' + REGISTRO.ORDEN;
      IF REGISTRO.TIPO='3' THEN
         COMMANDTEXT := COMMANDTEXT + REGISTRO.ID + ' AND CR.ID_EMPRESA='+REGISTRO.EMPRESA+' ' + REGISTRO.ORDEN;
   // quito el anyo porque lo trae la cadena
      REGISTRO.ID:=COMMANDTEXT;
      OPEN;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO );
      WITH Q_MDLINEACOBROAUX DO // PARA HACER EL MASTER-DETAIL LE PASO LOS CAMPOS CLAVE COMO PARAMETROS
        BEGIN
          COMMANDTEXT := LINEACOBROCAMPOS;
          COMMANDTEXT := COMMANDTEXT + ' WHERE L.ID_COBRO=:ID_COBRO AND L.ANYO=:ANYO AND L.ID_EMPRESA=:ID_EMPRESA ';
        END;
    END;
  END;
end;
procedure TAGESTISHOP.Q_MDFACTURAAUXAfterScroll(DataSet: TDataSet);
begin
  if Q_MDFACTURAAUX.FieldByName('ID_CLIENTE').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE,NIF FROM CLIENTES WHERE ID_CLIENTE = '+Q_MDFACTURAAUX.FieldByName('ID_CLIENTE').AsString;
      OPEN;
      Q_MDFACTURAAUXNOMBRECLIENTE.AsString := Q_AUX.Fields.Fields [0].AsString;
      Q_MDFACTURAAUXNIFCLIENTE.AsString := Q_AUX.Fields.Fields [1].AsString;
      CLOSE;
    END;
  END
  ELSE
     BEGIN
         Q_MDFACTURAAUXNOMBRECLIENTE.ASSTRING := '';
         Q_MDFACTURAAUXNIFCLIENTE.ASSTRING := '';
     END;

{  IF Q_VALORARALBARANESNIF.AsString <> '' THEN
  BEGIN
    WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE FROM CLIENTES WHERE NIF = '''+Q_VALORARALBARANESNIF.AsString+ ''' ';
      OPEN;
      Q_VALORARALBARANESNOMCLIENTE.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END;
 IF ((Q_VALORARALBARANESNIF.ASSTRING <>'') AND ( Q_VALORARALBARANESID_PLANTA.AsString <> '')) THEN
  BEGIN
    WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE FROM PLANTAS WHERE ID_PLANTA='+Q_VALORARALBARANESID_PLANTA.AsString+' AND NIF = '''+Q_VALORARALBARANESNIF.AsString+ ''' ';
      OPEN;
      Q_VALORARALBARANESNOMPLANTA.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END;
  IF Q_VALORARALBARANESCODIGO.AsString <> '' THEN
  BEGIN
    WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT DESCRIPCION FROM SERVICIOS WHERE CODIGO = '''+Q_VALORARALBARANESCODIGO.AsString+ ''' ';
      OPEN;
      Q_VALORARALBARANESDESSERVICIO.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END;

}

end;

procedure TAGESTISHOP.Q_MDCOBROAUXAfterScroll(DataSet: TDataSet);
begin
  if Q_MDCOBROAUX.FieldByName('ID_CLIENTE').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE FROM CLIENTES WHERE ID_CLIENTE = '+Q_MDCOBROAUX.FieldByName('ID_CLIENTE').AsString;
      OPEN;
      Q_MDCOBROAUXNOMBRECLIENTE.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END
  ELSE
     Q_MDCOBROAUXNOMBRECLIENTE.ASSTRING :='';

end;

procedure TAGESTISHOP.Q_MDALBARANAUXAfterScroll(DataSet: TDataSet);
begin
  if Q_MDALBARANAUX.FieldByName('ID_CLIENTE').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE FROM CLIENTES WHERE ID_CLIENTE = '+Q_MDALBARANAUX.FieldByName('ID_CLIENTE').AsString;
      OPEN;
      Q_MDALBARANAUXNOMBRECLIENTE.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END
  ELSE
     Q_MDALBARANAUXNOMBRECLIENTE.AsString := '';
end;

procedure TAGESTISHOP.Q_MDPRESUPUESTOAUXAfterScroll(DataSet: TDataSet);
begin
  if Q_MDPRESUPUESTOAUX.FieldByName('ID_CLIENTE').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE FROM CLIENTES WHERE ID_CLIENTE ='+Q_MDPRESUPUESTOAUX.FieldByName('ID_CLIENTE').AsString;
      OPEN;
      Q_MDPRESUPUESTOAUXNOMBRECLIENTE.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END
  ELSE
     Q_MDPRESUPUESTOAUXNOMBRECLIENTE.AsString := '';
end;

procedure TAGESTISHOP.QMD_PRESUPUESTOAfterScroll(DataSet: TDataSet);
begin
  if QMD_PRESUPUESTO.FieldByName('ID_CLIENTE').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE FROM CLIENTES WHERE ID_CLIENTE = '+QMD_PRESUPUESTO.FieldByName('ID_CLIENTE').AsString;
      OPEN;
      QMD_PRESUPUESTONOMBRECLIENTE.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END
  ELSE
      QMD_PRESUPUESTONOMBRECLIENTE.AsString := '';

end;

procedure TAGESTISHOP.Q_MDALBARANAfterScroll(DataSet: TDataSet);
begin
  if Q_MDALBARAN.FieldByName('ID_CLIENTE').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE FROM CLIENTES WHERE ID_CLIENTE = '+Q_MDALBARAN.FieldByName('ID_CLIENTE').AsString;
      OPEN;
      Q_MDALBARANNOMBRECLIENTE.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END
  ELSE
      Q_MDALBARANNOMBRECLIENTE.AsString := '';
end;

procedure TAGESTISHOP.Q_MDFACTURAAfterScroll(DataSet: TDataSet);
begin
  if Q_MDFACTURA.FieldByName('ID_CLIENTE').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE FROM CLIENTES WHERE ID_CLIENTE = '+Q_MDFACTURA.FieldByName('ID_CLIENTE').AsString;
      OPEN;
      Q_MDFACTURANOMBRECLIENTE.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END
  ELSE
      Q_MDFACTURANOMBRECLIENTE.AsString := '';
end;

procedure TAGESTISHOP.Q_MDCOBROAfterScroll(DataSet: TDataSet);
begin
  if Q_MDCOBRO.FieldByName('ID_CLIENTE').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE FROM CLIENTES WHERE ID_CLIENTE = '+Q_MDCOBRO.FieldByName('ID_CLIENTE').AsString;
      OPEN;
      Q_MDCOBRONOMBRECLIENTE.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END
  ELSE
      Q_MDCOBRONOMBRECLIENTE.AsString := '';
end;

procedure TAGESTISHOP.DSPQ_MDPRESUPUESTOGetData(Sender: TObject;
  DataSet: TCustomClientDataSet);
  VAR AUX:INTEGER;
begin


end;

procedure TAGESTISHOP.DSPQ_TARIFASAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_TARIFASBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF (TRIM(REGISTRO.ID ) <> '') THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
        COMMANDTEXT := TARIFASCAMPOS;
        if REGISTRO.tipo='1' then
         COMMANDTEXT := COMMANDTEXT + ' WHERE CHAR(ID_PROVEEDOR) LIKE ('''+REGISTRO.ID+'%'')  OR ART_PROVEEDOR LIKE ('''+REGISTRO.ID+'%'') OR NOMBRE LIKE ('''+REGISTRO.ID+'%'') '+REGISTRO.ORDEN;
        if REGISTRO.tipo='2' then
         commandtext := commandtext + REGISTRO.id + ' ' + REGISTRO.ORDEN;
        OPEN;
        MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO);
    END;
  END;
end;


procedure TAGESTISHOP.Q_TARIFASAfterScroll(DataSet: TDataSet);
begin
  if Q_tarifas.FieldByName('id_proveedor').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE FROM proveedor_acreedor WHERE id_proveedor = '+Q_tarifas.FieldByName('id_proveedor').AsString;
      OPEN;
      Q_tarifasNOMBREproveedor.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END
  ELSE
      Q_tarifasNOMBREproveedor.AsString := '';
end;

procedure TAGESTISHOP.DSPQ_TARIFASAUXAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_TARIFASAUXBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF (TRIM(REGISTRO.ID) <> '') THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
        COMMANDTEXT := TARIFASCAMPOS;
        if REGISTRO.Tipo='1' then
         COMMANDTEXT := COMMANDTEXT + ' WHERE CHAR(ID_PROVEEDOR) LIKE ('''+REGISTRO.ID+'%'')  OR ART_PROVEEDOR LIKE ('''+REGISTRO.ID+'%'') '+REGISTRO.ORDEN;
        if REGISTRO.tipo='2' then
         commandtext := commandtext + REGISTRO.ID+' ' + REGISTRO.ORDEN;
        OPEN;
        MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO);
    END;
  END;
end;

procedure TAGESTISHOP.Q_TARIFASAUXAfterScroll(DataSet: TDataSet);
begin
  if Q_tarifasAUX.FieldByName('id_proveedor').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE FROM proveedor_acreedor WHERE id_proveedor = '+Q_tarifasAUX.FieldByName('id_proveedor').AsString;
      OPEN;
      Q_tarifasAUXNOMBREproveedor.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END
  ELSE
      Q_tarifasAUXNOMBREproveedor.AsString := '';
end;

procedure TAGESTISHOP.DSPQ_ALMACENBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);

  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF (TRIM(registro.id) <> '') THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset
    as tsqldataset do
    BEGIN
        COMMANDTEXT := 'SELECT * FROM ALMACEN ';
        if registro.tipo='1' then
         COMMANDTEXT := COMMANDTEXT + ' WHERE ((ID_ARTICULO LIKE (''%'+registro.id+'%'') OR DESCRIPCION LIKE ('''+registro.id+'%'')) AND ID_EMPRESA='+registro.EMPRESA +') '+registro.ORDEN;
        if registro.tipo='2' then
         commandtext := commandtext + registro.id;
        registro.id := COMMANDTEXT;
        OPEN;
        MOVEBY(registro.VECES*registro.NUMERO );
    END;
  END;
END;

procedure TAGESTISHOP.DSPQ_ALMACENAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_MDENTRADASAfterApplyUpdates(Sender: TObject;
  var OwnerData: OleVariant);
begin
  QMD_ENTRADAS.Tag := 0;
  OWNERDATA := DARAVISO;
end;

procedure TAGESTISHOP.DSPQ_ALMACENAUXAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_ALMACENAUXBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR AUX,ID_ARTICULO,ID_EMPRESA,TIPO,ORDEN:STRING;
     NUMRECORDS,VECES,LONG:INTEGER;
begin

  veces:=0;numrecords:=0;
  AUX := VARTOSTR(OWNERDATA);
  LONG := LENGTH(AUX);
  ID_ARTICULO := 'ASD'; TIPO:='1';ID_EMPRESA:='0';ORDEN:='';
  if long >0 then
  begin
     VECES := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     NUMRECORDS := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     ID_ARTICULO := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     ID_EMPRESA := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     tipo := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     ORDEN := COPY(AUX,1,POS(FILTRO,AUX)-1);
  end;

  IF (TRIM(ID_ARTICULO) <> '') THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset
    as tsqldataset do
    BEGIN
        COMMANDTEXT := 'SELECT * FROM ALMACEN ';
        if tipo='1' then
         COMMANDTEXT := COMMANDTEXT + ' WHERE (ID_ARTICULO LIKE ('''+ID_ARTICULO+'%'') OR DESCRIPCION LIKE ('''+ID_ARTICULO+'%''))  AND ID_EMPRESA='+ID_EMPRESA+' '+ORDEN;
        if tipo='2' then
         commandtext := commandtext + id_articulo;
        AUX := COMMANDTEXT;
        OPEN;
        MOVEBY(VECES*NUMRECORDS);
    END;
  END;
END;


procedure TAGESTISHOP.DSPQ_MDSALIDAAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_MDSALIDABeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := SALIDACAMPOS;
      IF REGISTRO.TIPO='1' THEN
          COMMANDTEXT := COMMANDTEXT + ' WHERE (CHAR(ID_SALIDA) LIKE ('''+REGISTRO.ID+'%'')) AND ID_EMPRESA='+REGISTRO.EMPRESA+' AND ANYO='+REGISTRO.ANYO+' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='2' THEN
          COMMANDTEXT := COMMANDTEXT + REGISTRO.ID;//+ ' AND PR.ID_EMPRESA='+REGISTRO.EMPRESA+' AND PR.ANYO='+REGISTRO.ANYO+' '+ REGISTRO.ORDEN;; //+' AND ID_EMPRESA='+REGISTRO.EMPRESA+' '+REGISTRO.ORDEN;
      OPEN;
      REGISTRO.ID := COMMANDTEXT;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO);
      WITH QMD_LINEASALIDA DO // PARA HACER EL MASTER-DETAIL LE PASO LOS CAMPOS CLAVE COMO PARAMETROS
        BEGIN
          COMMANDTEXT := LINEASALIDACAMPOS;
          COMMANDTEXT := COMMANDTEXT + ' WHERE L.ID_SALIDA=:ID_SALIDA AND L.ID_EMPRESA=:ID_EMPRESA AND L.ANYO=:ANYO '+REGISTRO.ORDENLINEA;
        END;
    END;
  END;
end;

procedure TAGESTISHOP.DSPQ_MDSALIDAAfterApplyUpdates(Sender: TObject;
  var OwnerData: OleVariant);
begin
  QMD_SALIDA.TAG := 0;
  OWNERDATA := DARAVISOSALIDA;
end;

procedure TAGESTISHOP.DSPQ_MDSALIDAAfterUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind);
  VAR EMPRESA,AVISAR,IDARTICULO,VALORANTERIOR,CANTIDAD,MARCA,DESCRIPCION:STRING;
begin
// PASARLO A TRIGGERS
 DARAVISOSALIDA:=0;
// VER 3.0
{ if ( SOURCEDS.NAME  = 'QMD_SALIDA') THEN
  if updatekind = ukinsert then
  begin
    WITH DELTADS  DO
    BEGIN
      EMPRESA := FieldByname('ID_EMPRESA').ASSTRING;
      Q_AUX.CLOSE;
      Q_AUX.CommandText := 'UPDATE OPCIONESNUMERICAS SET ID_SALIDA = ID_SALIDA + 1 WHERE ID_EMPRESA ='+ EMPRESA +' AND ANYO='+FieldByname('ANYO').ASSTRING;
      Q_AUX.ExecSQL(TRUE);
      Q_AUX.CLOSE;
    END;
  END;
}
 IF (SOURCEDS.NAME = 'QMD_LINEASALIDA')
 AND (QMD_SALIDA.Tag =0)
 THEN
 BEGIN
   ACTUALIZARALMACEN(DELTADS,UPDATEKIND,0);
{  WITH DELTADS DO
  BEGIN
    IF UPDATEKIND = UKINSERT THEN
    BEGIN
        Q_AUX.CLOSE;
        Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
        Q_AUX.ExecSQL(TRUE);
        IF Q_AUX.RECORDCOUNT > 0 THEN
        BEGIN
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD - '+FIELDBYNAME('CANTIDAD').ASSTRING+' WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
          Q_AUX.ExecSQL(TRUE);
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'SELECT AVISAR FROM ALMACEN WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').ASSTRING+''' AND CANTIDAD <= AVISAR AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
          Q_AUX.OPEN;
          IF Q_AUX.RECORDCOUNT > 0 THEN
             DARAVISOSALIDA := 1;
          Q_AUX.CLOSE;
        END;
    END;
    IF UPDATEKIND = UKMODIFY THEN
    BEGIN
        Q_AUX.CLOSE;
        EMPRESA := FIELDBYNAME('ID_EMPRESA').OLDVALUE;
        IF NOT FIELDBYNAME('ID_ARTICULO').IsNull THEN
           IDARTICULO := FIELDBYNAME('ID_ARTICULO').OLDVALUE
        ELSE
           IDARTICULO := '';

        IF FIELDBYNAME('CANTIDAD').OldValue = NULL THEN
           VALORANTERIOR:=''
        ELSE
           VALORANTERIOR := FIELDBYNAME('CANTIDAD').OLDVALUE;

        IF FieldByname('ID_ARTICULO').ASSTRING = ''
        THEN
        // NO SE HA CAMBIADO EL ID_ARTICULO
        BEGIN
         IDARTICULO := '';
         IF FIELDBYNAME('ID_ARTICULO').OLDVALUE <> '' THEN
            IDARTICULO := FIELDBYNAME('ID_ARTICULO').OLDVALUE;
         Q_AUX.CLOSE;
         Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+IDARTICULO+''' AND ID_EMPRESA='+EMPRESA;
         Q_AUX.OPEN;
         IF (Q_AUX.RECORDCOUNT > 0)
         AND (fieldbyname('cantidad').asstring <> '')
//         AND (FIELDBYNAME('CANTIDAD').AsString <>
//              FIELDBYNAME('CANTIDAD').OldValue )

         THEN
         BEGIN
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD + '+VALORANTERIOR +' - '+FIELDBYNAME('CANTIDAD').ASSTRING+' WHERE ID_ARTICULO='''+IDARTICULO+''' AND ID_EMPRESA='+EMPRESA;
           Q_AUX.ExecSQL(TRUE);
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'SELECT AVISAR FROM ALMACEN WHERE ID_ARTICULO='''+IDARTICULO+''' AND CANTIDAD <= AVISAR AND ID_EMPRESA='+EMPRESA;
           Q_AUX.OPEN;
           IF Q_AUX.RECORDCOUNT > 0 THEN
              DARAVISOSALIDA := 1;
           Q_AUX.CLOSE;

         END;
        END
        ELSE
        // EL ARTICULO HA CAMBIADO
        BEGIN
         Q_AUX.CLOSE;
         Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').OLDVALUE+''' AND ID_EMPRESA='+EMPRESA;
         Q_AUX.OPEN;
         IF (Q_AUX.RECORDCOUNT > 0)
         THEN
         BEGIN
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD + '+VALORANTERIOR +'  WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').OLDVALUE+''' AND ID_EMPRESA='+EMPRESA;
           Q_AUX.ExecSQL(TRUE);
         END;
         Q_AUX.CLOSE;
         Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+EMPRESA;
         Q_AUX.OPEN;
         IF (Q_AUX.RECORDCOUNT > 0)
         THEN
         BEGIN
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD - '+FIELDBYNAME('CANTIDAD').ASSTRING +'  WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+EMPRESA;
           Q_AUX.ExecSQL(TRUE);
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'SELECT AVISAR FROM ALMACEN WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').ASSTRING+''' AND CANTIDAD <= AVISAR AND ID_EMPRESA='+EMPRESA;
           Q_AUX.OPEN;
           IF Q_AUX.RECORDCOUNT > 0 THEN
              DARAVISOSALIDA := 1;
           Q_AUX.CLOSE;

         END;
        END;
    END;
    IF UPDATEKIND = UKdelete THEN
    BEGIN
        Q_AUX.CLOSE;
        Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
        Q_AUX.ExecSQL(TRUE);
        IF Q_AUX.RECORDCOUNT > 0 THEN
        BEGIN
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD + '+FIELDBYNAME('CANTIDAD').ASSTRING+' WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
          Q_AUX.ExecSQL(TRUE);
        END;
        Q_AUX.CLOSE;
    END
 END;
}
END
end;

procedure TAGESTISHOP.DSPQ_MDALBARANAfterApplyUpdates(Sender: TObject;
  var OwnerData: OleVariant);
begin
  Q_MDALBARAN.TAG := 0;
  OWNERDATA := DARAVISOALBARAN;
end;

procedure TAGESTISHOP.DSPQ_MDFACTURAAfterApplyUpdates(Sender: TObject;
  var OwnerData: OleVariant);
begin
  Q_MDFACTURA.TAG := 0;
  OWNERDATA:=DARAVISOFACTURA;
end;

procedure TAGESTISHOP.DSPQ_AVISOAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_AVISOBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := AVISOCAMPOS;
      IF REGISTRO.TIPO='1' THEN
         COMMANDTEXT := COMMANDTEXT + ' WHERE (CHAR(ID_AVISO) LIKE ('''+REGISTRO.ID+'%'') OR NOMBRE_CONTACTO LIKE ('''+REGISTRO.ID+'%''))  AND ID_EMPRESA='+REGISTRO.EMPRESA+' AND ANYO='+REGISTRO.ANYO+' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='2' THEN
          COMMANDTEXT := COMMANDTEXT + REGISTRO.ID;//+ ' AND PR.ID_EMPRESA='+REGISTRO.EMPRESA+' AND PR.ANYO='+REGISTRO.ANYO+' '+ REGISTRO.ORDEN;; //+' AND ID_EMPRESA='+REGISTRO.EMPRESA+' '+REGISTRO.ORDEN;
      OPEN;
      REGISTRO.ID := COMMANDTEXT;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO);
    END;
  END;
end;


procedure TAGESTISHOP.DSPQ_AVISOAfterUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind);
  VAR EMPRESA:STRING;
begin
  if updatekind = ukinsert then
  begin
    WITH DELTADS  DO
    BEGIN
      EMPRESA := FieldByname('ID_EMPRESA').ASSTRING;
      Q_AUX.CLOSE;
      Q_AUX.CommandText := 'UPDATE OPCIONESNUMERICAS SET ID_AVISO = ID_AVISO + 1 WHERE ID_EMPRESA ='+ EMPRESA+' AND ANYO='+ FieldByname('ANYO').ASSTRING;
      Q_AUX.ExecSQL(TRUE);
      Q_AUX.CLOSE;
    END;
  END;

end;

procedure TAGESTISHOP.DSPQ_AVISOAUXAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_AVISOAUXBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := AVISOCAMPOS;
      IF REGISTRO.TIPO='1' THEN
         COMMANDTEXT := COMMANDTEXT + ' WHERE (CHAR(ID_AVISO) LIKE ('''+REGISTRO.ID+'%'') OR NOMBRE_CONTACTO LIKE ('''+REGISTRO.ID+'%''))  AND ID_EMPRESA='+REGISTRO.EMPRESA+' AND ANYO='+REGISTRO.ANYO+' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='2' THEN
          COMMANDTEXT := COMMANDTEXT + REGISTRO.ID;//+ ' AND PR.ID_EMPRESA='+REGISTRO.EMPRESA+' AND PR.ANYO='+REGISTRO.ANYO+' '+ REGISTRO.ORDEN;; //+' AND ID_EMPRESA='+REGISTRO.EMPRESA+' '+REGISTRO.ORDEN;
      OPEN;
      REGISTRO.ID := COMMANDTEXT;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO);
    END;
  END;
end;

procedure TAGESTISHOP.DSPQ_PEDIDOSPENDIENTESAfterGetRecords(
  Sender: TObject; var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_PEDIDOSPENDIENTESBeforeGetRecords(
  Sender: TObject; var OwnerData: OleVariant);
  VAR AUX,BUSCAR,ID_EMPRESA,TIPO,ORDEN:STRING;
     NUMRECORDS,VECES,LONG:INTEGER;
begin
  veces:=0;numrecords:=0;
  AUX := VARTOSTR(OWNERDATA);
  LONG := LENGTH(AUX);
  BUSCAR := '-888'; ID_EMPRESA:='0';ORDEN:='';TIPO:='0';
  if long >0 then
  begin
     VECES := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     NUMRECORDS := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     BUSCAR := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     ID_EMPRESA := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     TIPO := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     ORDEN := COPY(AUX,1,POS(FILTRO,AUX)-1);
  end;

  IF (TRIM(BUSCAR) <> '') THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset
    as tsqldataset do
    BEGIN
        COMMANDTEXT := 'SELECT LINEA,ID_EMPRESA,FECHA_NOTA,FECHA_PEDIDO,ID_PROVEEDOR,ART_PROVEEDOR,ID_ARTICULO,MARCA,DESCRIPCION,BRAZOS,ID_COLOR,CANTIDAD,PEDIDO,NOMBRE_CONTACTO,ID_CLIENTE,COMENTARIOS FROM PEDIDOSPENDIENTES ';
        if tipo='1' then
         COMMANDTEXT := COMMANDTEXT + ' WHERE (ID_ARTICULO LIKE ('''+BUSCAR+'%'') OR NOMBRE_CONTACTO LIKE ('''+BUSCAR+'%'') OR DESCRIPCION LIKE ('''+BUSCAR+'%''))  AND ID_EMPRESA='+ID_EMPRESA+' '+ORDEN;
        if tipo='2' then
         commandtext := commandtext + BUSCAR;
        AUX := COMMANDTEXT;
        OPEN;
        MOVEBY(VECES*NUMRECORDS);
    END;
  END;
END;

procedure TAGESTISHOP.DSPQ_PEDIDOSPENDIENTESAUXAfterGetRecords(
  Sender: TObject; var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_PEDIDOSPENDIENTESAUXBeforeGetRecords(
  Sender: TObject; var OwnerData: OleVariant);
  VAR AUX,BUSCAR,ID_EMPRESA,TIPO,ORDEN:STRING;
     NUMRECORDS,VECES,LONG:INTEGER;
begin
  veces:=0;numrecords:=0;
  AUX := VARTOSTR(OWNERDATA);
  LONG := LENGTH(AUX);
  BUSCAR := '-888'; ID_EMPRESA:='0';ORDEN:='';TIPO:='0';
  if long >0 then
  begin
     VECES := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     NUMRECORDS := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     BUSCAR := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     ID_EMPRESA := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     TIPO := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     ORDEN := COPY(AUX,1,POS(FILTRO,AUX)-1);
  end;

  IF (TRIM(BUSCAR) <> '') THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset
    as tsqldataset do
    BEGIN
        COMMANDTEXT := 'SELECT LINEA,ID_EMPRESA,FECHA_NOTA,FECHA_PEDIDO,ID_PROVEEDOR,ART_PROVEEDOR,ID_ARTICULO,MARCA,DESCRIPCION,BRAZOS,ID_COLOR,CANTIDAD,PEDIDO,NOMBRE_CONTACTO,ID_CLIENTE,COMENTARIOS FROM PEDIDOSPENDIENTES ';
        if tipo='1' then
         COMMANDTEXT := COMMANDTEXT + ' WHERE (ID_ARTICULO LIKE ('''+BUSCAR+'%'') OR NOMBRE_CONTACTO LIKE ('''+BUSCAR+'%'') OR DESCRIPCION LIKE ('''+BUSCAR+'%''))  AND ID_EMPRESA='+ID_EMPRESA+' '+ORDEN;
        if tipo='2' then
         commandtext := commandtext + BUSCAR;
        AUX := COMMANDTEXT;
        OPEN;
        MOVEBY(VECES*NUMRECORDS);
    END;
  END;
END;

procedure TAGESTISHOP.DSPQ_MDTICKETAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_MDTICKETBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR AUX,BUSCAR,TIPO,ID_EMPRESA,ORDEN,ORDENLINEA:STRING;
     NUMRECORDS,VECES,LONG:INTEGER;
begin
  veces:=0;numrecords:=0;
  AUX := VARTOSTR(OWNERDATA);
  LONG := LENGTH(AUX);
  BUSCAR := 'ASD';
  TIPO :='0';
  if long >0 then
  begin
     VECES := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     NUMRECORDS := STRTOINT(COPY(AUX,1,POS(FILTRO,AUX)-1));
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     BUSCAR := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     TIPO := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     ID_EMPRESA := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     ORDEN := COPY(AUX,1,POS(FILTRO,AUX)-1);
     LONG := LENGTH(AUX);
     AUX := RIGHTSTR(AUX,(LONG-POS(FILTRO,AUX)-LONGFILTRO));
     ORDENLINEA := COPY(AUX,1,POS(FILTRO,AUX)-1);
  end;
  IF TRIM(BUSCAR) <> '' THEN
  BEGIN

   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := 'SELECT * FROM TICKET ';
      IF TIPO='1' THEN
            COMMANDTEXT := COMMANDTEXT + ' WHERE (CHAR(ID_TICKET) LIKE ('''+BUSCAR+'%'')) AND ID_EMPRESA='+ID_EMPRESA+' '+ ORDEN;
      IF TIPO='2' THEN
            COMMANDTEXT := COMMANDTEXT + BUSCAR;

      AUX := COMMANDTEXT;
      OPEN;

      MOVEBY(VECES*NUMRECORDS);
      WITH Q_MDLINEATICKET DO // PARA HACER EL MASTER-DETAIL LE PASO LOS CAMPOS CLAVE COMO PARAMETROS
        BEGIN
          COMMANDTEXT := 'SELECT * FROM LINEA_TICKET L';
          COMMANDTEXT := COMMANDTEXT + ' WHERE L.ID_TICKET=:ID_TICKET AND L.ID_EMPRESA=:ID_EMPRESA AND L.ANYO=:ANYO AND L.ID_SERIE=:ID_SERIE '+ORDENLINEA+' ';
        END;
    END;
  END;
end;

procedure TAGESTISHOP.DSPQ_MDTICKETAfterApplyUpdates(Sender: TObject;
  var OwnerData: OleVariant);
begin
  Q_MDTICKET.Tag := 0;
  OWNERDATA := DARAVISOTICKET;
end;

procedure TAGESTISHOP.DSPQ_MDTICKETAfterUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind);
   VAR EMPRESA,ID_SERIE,ANYO:STRING;
       AVISAR,IDARTICULO,VALORANTERIOR,CANTIDAD,MARCA,DESCRIPCION:STRING;
begin

  daravisoTICKET:=0;

// VER 3.0
{ if ( SOURCEDS.NAME  = 'Q_MDTICKET') THEN
 BEGIN
  if updatekind = ukinsert then
  begin
    WITH DELTADS  DO
    BEGIN
      EMPRESA := FieldByname('ID_EMPRESA').ASSTRING;
      Q_AUX.CLOSE;
      Q_AUX.CommandText := 'UPDATE SERIES SET TICKET = TICKET + 1 WHERE ID_EMPRESA ='+ EMPRESA + ' AND ID_SERIE='''+FieldByname('ID_SERIE').ASSTRING+''' AND ANYO='+FieldByname('ANYO').ASSTRING;
      Q_AUX.ExecSQL(TRUE);
      Q_AUX.CLOSE;
    END;
  END;
 END;
}

 IF (SOURCEDS.NAME = 'Q_MDLINEATICKET')
 AND (Q_MDTICKET.TAG =0)
 THEN
   ACTUALIZARALMACEN(DELTADS,UPDATEKIND,0);

end;
procedure TAGESTISHOP.Q_ARTICULOSAfterScroll(DataSet: TDataSet);
begin
  if q_articulos.FieldByName('ID_COLOR').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT DESCRIPCION FROM COLORES WHERE ID_COLOR = '''+q_articulos.FieldByName('ID_COLOR').AsString+ ''' ';
      OPEN;
      q_articulosCOLORDESCRIPCION.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END
  ELSE
      q_articulosCOLORDESCRIPCION.AsString := '';

  if q_articulos.FieldByName('COD_FAMILIA').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT DESCRIPCION FROM FAMILIAS WHERE COD_FAMILIA = '''+q_articulos.FieldByName('COD_FAMILIA').AsString+ ''' ';
      OPEN;
      q_articulosFAMILIADESCRIPCION.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END
  ELSE
      q_articulosFAMILIADESCRIPCION.AsString := '';

  if q_articulos.FieldByName('id_proveedor').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE FROM proveedor_acreedor WHERE id_proveedor = '+q_articulos.FieldByName('id_proveedor').AsString+ ' ';
      OPEN;
      q_articulosNOMBREproveedor.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END
  ELSE
      q_articulosNOMBREproveedor.AsString := '';
end;

procedure TAGESTISHOP.SQLConnection1BeforeConnect(Sender: TObject);
var configuracion:textfile;
    buffer:string;
    user_name,password,database:STRING;
begin
 ASSIGNFILE (CONFIGURACION,'c:\Gconfiguracion.txt');
 try
    Reset(CONFIGURACION); //abre un fichero existente
    try
     READln(CONFIGURACION,buffer);
     User_name := buffer;
     READln(CONFIGURACION,buffer);
     Password := buffer;
     READln(CONFIGURACION,buffer);
     Database := buffer;
     sqlconnection1.Params.Values ['User_name'] := user_name;
     sqlconnection1.Params.Values ['Password'] := password;
     sqlconnection1.Params.Values ['Database'] := Database;
    except on exception do
    begin
     sqlconnection1.Params.Values ['User_name'] := 'a';
     sqlconnection1.Params.Values ['Password'] := 'a';
     sqlconnection1.Params.Values ['Database'] := 'GESTISHO';
    end
    end
  except ON EXCEPTION DO
  TRY
     REWRITE(CONFIGURACION); // crea un nuevo fichero y lo abre
     user_name:='a';
     password:='a';
     Database := 'GESTISHO';
     sqlconnection1.Params.Values ['User_name'] := user_name;
     sqlconnection1.Params.Values ['Password'] := password;
     sqlconnection1.Params.Values ['Database'] := Database;     
  except ON EXCEPTION DO
 end;
 end;

 TRY
     rewrite(configuracion);
     writeln(CONFIGURACION,user_name);
     writeln(CONFIGURACION,password);
     writeln(CONFIGURACION,DATABASE);
     CLOSEFILE(CONFIGURACION);
  EXCEPT ON EXCEPTION DO
  BEGIN
     SHOWMESSAGE('FALLO EN LA ESCRITURA DEL ARCHIVO DE CONFIGURACIONES');
     CLOSEFILE(CONFIGURACION);
  END;
 end;


end;
FUNCTION  TAGESTISHOP.ENALBARAN:BOOLEAN;
BEGIN
RESULT:= FALSE;
       Q_AUX.CLOSE;
       Q_MDFACTURA.OPEN;
       IF  (TRIM(Q_MDFACTURA.FieldByName('ID_EMPRESA').AsString) <> '') AND
          (TRIM(Q_MDFACTURA.FieldByName('ID_SERIE').AsString) <> '') AND
          (TRIM(Q_MDFACTURA.FieldByName('ANYO').AsString) <> '') AND
          (TRIM(Q_MDFACTURA.FieldByName('ID_ALBARAN').AsString) <> '')
       THEN
       BEGIN
          Q_AUX.COMMANDTEXT := ' SELECT COUNT(*) FROM albaranes WHERE ID_ALBARAN='+Q_MDFACTURA.FieldByName('ID_ALBARAN').AsString +' AND ID_EMPRESA= ' + Q_MDFACTURA.FieldByName('ID_EMPRESA').AsString  +' AND ANYO='+Q_MDFACTURA.FieldByName('ANYO').AsString +'  AND ID_SERIE='''+Q_MDFACTURA.FieldByName('ID_SERIE').AsString +''' ';
          Q_AUX.OPEN;
          IF Q_AUX.Fields[0].AsInteger > 0 THEN
             RESULT := TRUE;
          Q_AUX.CLOSE;
       END;
       Q_MDFACTURA.CLOSE;
END;

PROCEDURE TAGESTISHOP.ACTUALIZARALMACEN(DELTADS:TDATASET;UpdateKind: TUpdateKind;AUX:INTEGER);
VAR EMPRESA,ID_SERIE,ANYO,PRUEBA:STRING;
    AVISAR,IDARTICULO,VALORANTERIOR,CANTIDAD,MARCA,DESCRIPCION,CANTIDADACT,CANTIDADANT:STRING;
    SIGNO1,SIGNO2:STRING;
    CANT:DOUBLE;
BEGIN
 IF AUX = 0 THEN
 BEGIN
    SIGNO1 := ' - ';
    SIGNO2 := ' + ';
 END
 ELSE
 BEGIN
    SIGNO1 := ' + ';
    SIGNO2 := ' - ';
 END;
 BEGIN
  WITH DELTADS DO
  BEGIN
    IF (UPDATEKIND = UKINSERT)
    and (FIELDBYNAME('ID_ARTICULO').OLDVALUE <> NULL)
    THEN
    BEGIN
        Q_AUX.CLOSE;
        Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
        Q_AUX.ExecSQL(TRUE);
        IF Q_AUX.RECORDCOUNT > 0 THEN
        BEGIN
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD '+SIGNO1+STRINGREPLACE(FIELDBYNAME('CANTIDAD').ASSTRING,',','.',[RFREPLACEALL,rfIgnoreCase])+' WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
          Q_AUX.ExecSQL(TRUE);
          // SI EL CODIGO DE BARRAS ESTA, HAY QUE PASAR LA CANTIDAD, CODIGO_BARRAS Y SIGNO.
          ACTUALIZARALMACENDETALLE(FIELDBYNAME('CODIGO_BARRAS').ASSTRING,SIGNO1,SIGNO2,FIELDBYNAME('CANTIDAD').ASSTRING,'0',0);
          ACTUALIZARALMACENDETALLE2(FIELDBYNAME('CODIGO_BARRAS').ASSTRING,SIGNO1,SIGNO2,FIELDBYNAME('CANTIDAD').ASSTRING,'0',0);
          //***********************
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'SELECT AVISAR FROM ALMACEN WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').ASSTRING+''' AND CANTIDAD <= AVISAR AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
          Q_AUX.OPEN;
          IF Q_AUX.RECORDCOUNT > 0 THEN
          BEGIN
             DARAVISO:=1;DARAVISOSALIDA:=1;daravisoalbaran:=1;
             DARAVISOFACTURA:=1;DARAVISOTICKET:=1;
          END;
          Q_AUX.CLOSE;
        END
        ELSE
        // AUNQUE NO TENGA NINGUNA ENTRADA LO INSERTO EN EL ALMACEN
        BEGIN
          Q_AUX.CLOSE;
          Q_AUX.COMMANDTEXT := ' SELECT AVISAR as cuenta FROM EMPRESAS WHERE ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING+' ';
          q_aux.open;
          AVISAR := '0';
          IF Q_AUX.RECORDCOUNT > 0 THEN
            IF Q_AUX.Fields.Fields [0].AsString <> '' THEN
               AVISAR := Q_AUX.Fields.Fields [0].AsString;
          Q_AUX.CLOSE;
          Q_AUX1.CLOSE;
          Q_AUX1.CommandText := 'SELECT ALMACENABLE FROM ARTICULOS WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' ';
          Q_AUX1.OPEN;
          IF ( Q_AUX1.Fields.Fields [0].AsString = '1') THEN
          BEGIN
              CANT :=  -(STRTOFLOAT(STRINGREPLACE(FIELDBYNAME('CANTIDAD').ASSTRING,',','.',[RFREPLACEALL,rfIgnoreCase])));
              Q_AUX.CommandText := 'INSERT INTO ALMACEN(ID_ARTICULO,ID_EMPRESA,AVISAR,MARCA,DESCRIPCION,CANTIDAD)  VALUES ('''+FIELDBYNAME('ID_ARTICULO').ASSTRING+''','+FIELDBYNAME('ID_EMPRESA').ASSTRING+','+AVISAR+','''+FIELDBYNAME('MARCA').ASSTRING+''','''+FIELDBYNAME('DESCRIPCION').ASSTRING+''','+FLOATTOSTR(CANT)+' ) ';
   // PRUEBAS CON LOS TRIGGERS v. 3.0
              Q_AUX.ExecSQL(TRUE);
          END;
          Q_AUX1.CLOSE;
        END;
        Q_AUX.CLOSE;
    END;


    IF (UPDATEKIND = UKMODIFY)
    THEN
    BEGIN
        Q_AUX.CLOSE;

        CANTIDADACT:='0';CANTIDADANT:='0';
        IF FIELDBYNAME('CANTIDAD').OLDVALUE <> NULL THEN
           CANTIDADANT :=FIELDBYNAME('CANTIDAD').OLDVALUE ;
        IF FIELDBYNAME('CANTIDAD').ISNULL THEN
           CANTIDADACT := CANTIDADANT
        ELSE
           CANTIDADACT :=FIELDBYNAME('CANTIDAD').ASSTRING ;


        EMPRESA := FIELDBYNAME('ID_EMPRESA').OLDVALUE;
        IF NOT FIELDBYNAME('ID_ARTICULO').IsNull THEN
        // SE HA CAMBIADO EL ARTICULO
           IF FIELDBYNAME('ID_ARTICULO').OLDVALUE = NULL THEN
              IDARTICULO := ''
           ELSE
              IDARTICULO := FIELDBYNAME('ID_ARTICULO').OLDVALUE
        ELSE
        // NO SE HA CAMBIADO EL ARTICULO
           IDARTICULO := '';
//             IF FIELDBYNAME('CANTIDAD').OldValue = NULL THEN
//                 VALORANTERIOR:=''
//             ELSE
//                 VALORANTERIOR := FIELDBYNAME('CANTIDAD').OLDVALUE;



        IF (FieldByname('ID_ARTICULO').NEWVALUE = UNASSIGNED) AND
        (FIELDBYNAME('ID_ARTICULO').OldValue <> NULL)
        THEN
        // no SE HA CAMBIADO EL ID_ARTICULO
        BEGIN
         Q_AUX.CLOSE;
         Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').OLDVALUE+''' AND ID_EMPRESA='+EMPRESA;
         Q_AUX.OPEN;
         IF (Q_AUX.RECORDCOUNT > 0)
//         AND (fieldbyname('cantidad').VALUE <> 0)
         AND (CANTIDADACT <> '0' )
{         AND (FIELDBYNAME('CANTIDAD').AsString <>
              FIELDBYNAME('CANTIDAD').OldValue )
}
         THEN
         BEGIN
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD '+SIGNO2+STRINGREPLACE(CANTIDADANT,',','.',[RFREPLACEALL,rfIgnoreCase]) +SIGNO1+STRINGREPLACE(CANTIDADACT,',','.',[RFREPLACEALL,rfIgnoreCase])+' WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').OLDVALUE+''' AND ID_EMPRESA='+EMPRESA;
           Q_AUX.ExecSQL(TRUE);
           Q_AUX.CLOSE;
           //***********
           ACTUALIZARALMACENDETALLE(FIELDBYNAME('CODIGO_BARRAS').ASSTRING,SIGNO1,SIGNO2,CANTIDADANT,CANTIDADACT,1);
           ACTUALIZARALMACENDETALLE2(FIELDBYNAME('CODIGO_BARRAS').ASSTRING,SIGNO1,SIGNO2,CANTIDADANT,CANTIDADACT,1);
           //***********
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'SELECT AVISAR FROM ALMACEN WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').OLDVALUE+''' AND CANTIDAD <= AVISAR AND ID_EMPRESA='+EMPRESA;
           Q_AUX.OPEN;
          IF Q_AUX.RECORDCOUNT > 0 THEN
          BEGIN
             DARAVISO:=1;DARAVISOSALIDA:=1;daravisoalbaran:=1;
             DARAVISOFACTURA:=1;DARAVISOTICKET:=1;
          END;
           Q_AUX.CLOSE;
         END;
        END
        ELSE
        // EL ARTICULO HA CAMBIADO

//        IF IDARTICULO <> '' THEN
        IF FIELDBYNAME('ID_ARTICULO').OLDVALUE <> NULL THEN
        BEGIN
         Q_AUX.CLOSE;
         Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').OLDVALUE+''' AND ID_EMPRESA='+EMPRESA;
         Q_AUX.OPEN;
         IF (Q_AUX.RECORDCOUNT > 0)
         THEN
         BEGIN
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD '+SIGNO2+ STRINGREPLACE(CANTIDADACT,',','.',[RFREPLACEALL,rfIgnoreCase]) +'  WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').OLDVALUE+''' AND ID_EMPRESA='+EMPRESA;
           Q_AUX.ExecSQL(TRUE);
         END;
         // SI EL NUEVO ARTICULO no ES VACIO
         IF TRIM(FIELDBYNAME('ID_ARTICULO').ASSTRING) <> '' THEN
         BEGIN
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+EMPRESA;
           Q_AUX.OPEN;
           IF (Q_AUX.RECORDCOUNT > 0)
           THEN
           BEGIN
         // FALTA POR TENER EN CUENTA QUE HAYA CAMBIADO EL ARTICULO
         // PERO QUE NO CAMBIE LA CANTIDAD.

           IF (FIELDBYNAME('CANTIDAD').ASSTRING = '') // LA CANTIDAD NO HA CAMBIADO
           THEN
             VALORANTERIOR := STRINGREPLACE(FIELDBYNAME('CANTIDAD').OLDVALUE,',','.',[RFREPLACEALL,rfIgnoreCase])
           ELSE
             VALORANTERIOR := STRINGREPLACE(FIELDBYNAME('CANTIDAD').ASSTRING,',','.',[RFREPLACEALL,rfIgnoreCase]); // LA CANTIDAD HA CAMBIADO

           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD '+SIGNO1+VALORANTERIOR +'  WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+EMPRESA;
           Q_AUX.ExecSQL(TRUE);
           ACTUALIZARALMACENDETALLE(FIELDBYNAME('CODIGO_BARRAS').ASSTRING,SIGNO1,SIGNO2,valoranterior,'0',0);
           ACTUALIZARALMACENDETALLE2(FIELDBYNAME('CODIGO_BARRAS').ASSTRING,SIGNO1,SIGNO2,valoranterior,'0',0);
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'SELECT AVISAR FROM ALMACEN WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').ASSTRING+''' AND CANTIDAD <= AVISAR AND ID_EMPRESA='+EMPRESA;
           Q_AUX.OPEN;
           IF Q_AUX.RECORDCOUNT > 0 THEN
           BEGIN
              DARAVISO:=1;DARAVISOSALIDA:=1;daravisoalbaran:=1;
              DARAVISOFACTURA:=1;DARAVISOTICKET:=1;
           END;
           Q_AUX.CLOSE;
         END
         ELSE
         // CUANDO EN EL ALMACEN NO EXISTE LO CREO CON NUMEROS ¿NEGATIVOS?
         BEGIN

           IF (FIELDBYNAME('CANTIDAD').ASSTRING = '') // LA CANTIDAD NO HA CAMBIADO
           THEN
             VALORANTERIOR := STRINGREPLACE(FIELDBYNAME('CANTIDAD').OLDVALUE,',','.',[RFREPLACEALL,rfIgnoreCase])
           ELSE
             VALORANTERIOR := STRINGREPLACE(FIELDBYNAME('CANTIDAD').ASSTRING,',','.',[RFREPLACEALL,rfIgnoreCase]); // LA CANTIDAD HA CAMBIADO

          Q_AUX.CLOSE;
          Q_AUX.COMMANDTEXT := ' SELECT AVISAR as cuenta FROM EMPRESAS WHERE ID_EMPRESA='+INTTOSTR(FIELDBYNAME('ID_EMPRESA').OLDVALUE)+' ';
          q_aux.open;
          AVISAR := '0';
          IF Q_AUX.RECORDCOUNT > 0 THEN
            IF Q_AUX.Fields.Fields [0].AsString <> '' THEN
               AVISAR := Q_AUX.Fields.Fields [0].AsString;
          Q_AUX.CLOSE;
          Q_AUX1.CLOSE;
          Q_AUX1.CommandText := 'SELECT ALMACENABLE FROM ARTICULOS WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' ';
          Q_AUX1.OPEN;
          IF ( Q_AUX1.Fields.Fields [0].AsString = '1') THEN
          BEGIN
              Q_AUX.CommandText := 'INSERT INTO ALMACEN(ID_ARTICULO,ID_EMPRESA,AVISAR,MARCA,DESCRIPCION,CANTIDAD)  VALUES ('''+FIELDBYNAME('ID_ARTICULO').ASSTRING+''','+INTTOSTR(FIELDBYNAME('ID_EMPRESA').OLDVALUE)+','+AVISAR+','''+FIELDBYNAME('MARCA').ASSTRING+''','''+FIELDBYNAME('DESCRIPCION').ASSTRING+''','+SIGNO1+VALORANTERIOR+' ) ';
// PRUEBAS CON LOS TRIGGERS v. 3.0
              Q_AUX.ExecSQL(TRUE);
          END;
          Q_AUX1.CLOSE;
         END
        END
        END
         ELSE
        // EL ARTICULO HA CAMBIADO
//****  Y EL ANTERIOR ERA VACIO, PROBAR CUANDO EL NUEVO ES VACIO
        IF FieldByname('ID_ARTICULO').ASSTRING <> '' THEN
        BEGIN
         Q_AUX.CLOSE;
         // SUMO(RESTO) EL NUEVO AL ALMACEN
         Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+EMPRESA;
         Q_AUX.OPEN;
         IF (Q_AUX.RECORDCOUNT > 0)
         THEN
         BEGIN
         // FALTA POR TENER EN CUENTA QUE HAYA CAMBIADO EL ARTICULO
         // PERO QUE NO CAMBIE LA CANTIDAD.

           IF (FIELDBYNAME('CANTIDAD').ASSTRING = '') // LA CANTIDAD NO HA CAMBIADO
           THEN
             VALORANTERIOR := STRINGREPLACE(FIELDBYNAME('CANTIDAD').OLDVALUE,',','.',[RFREPLACEALL,rfIgnoreCase])
           ELSE
             VALORANTERIOR := STRINGREPLACE(FIELDBYNAME('CANTIDAD').ASSTRING,',','.',[RFREPLACEALL,rfIgnoreCase]); // LA CANTIDAD HA CAMBIADO

           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD '+SIGNO1+VALORANTERIOR +'  WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+EMPRESA;
           Q_AUX.ExecSQL(TRUE);
           ACTUALIZARALMACENDETALLE(FIELDBYNAME('CODIGO_BARRAS').ASSTRING,SIGNO1,SIGNO2,VALORANTERIOR,'0',0);
           ACTUALIZARALMACENDETALLE2(FIELDBYNAME('CODIGO_BARRAS').ASSTRING,SIGNO1,SIGNO2,VALORANTERIOR,'0',0);
           Q_AUX.CLOSE;
           Q_AUX.CommandText := 'SELECT AVISAR FROM ALMACEN WHERE ID_ARTICULO='''+FIELDBYNAME('ID_ARTICULO').ASSTRING+''' AND CANTIDAD <= AVISAR AND ID_EMPRESA='+EMPRESA;
           Q_AUX.OPEN;
          IF Q_AUX.RECORDCOUNT > 0 THEN
          BEGIN
             DARAVISO:=1;DARAVISOSALIDA:=1;daravisoalbaran:=1;
             DARAVISOFACTURA:=1;DARAVISOTICKET:=1;
          END;
           Q_AUX.CLOSE;
         END
//******************
        END;
    END;
    IF (UPDATEKIND = UKdelete)
    THEN
    BEGIN
        Q_AUX.CLOSE;
        Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACEN WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
        Q_AUX.ExecSQL(TRUE);
        IF Q_AUX.RECORDCOUNT > 0 THEN
        BEGIN
          Q_AUX.CLOSE;
          Q_AUX.CommandText := 'UPDATE ALMACEN SET CANTIDAD= CANTIDAD '+SIGNO2+STRINGREPLACE(FIELDBYNAME('CANTIDAD').ASSTRING,',','.',[RFREPLACEALL,rfIgnoreCase])+' WHERE ID_ARTICULO='''+FieldByname('ID_ARTICULO').ASSTRING+''' AND ID_EMPRESA='+FIELDBYNAME('ID_EMPRESA').ASSTRING;
          Q_AUX.ExecSQL(TRUE);
          ACTUALIZARALMACENDETALLE(FIELDBYNAME('CODIGO_BARRAS').ASSTRING,SIGNO2,SIGNO2,FIELDBYNAME('CANTIDAD').ASSTRING,'0',0);
          ACTUALIZARALMACENDETALLE2(FIELDBYNAME('CODIGO_BARRAS').ASSTRING,SIGNO2,SIGNO2,FIELDBYNAME('CANTIDAD').ASSTRING,'0',0);
         END;
        Q_AUX.CLOSE;
    END
 END;
END;
Q_AUX.CLOSE;
END;




procedure TAGESTISHOP.DSPQ_MDENTRADASBeforeApplyUpdates(Sender: TObject;
  var OwnerData: OleVariant);
begin
  QMD_ENTRADAS.TAG:=0;
  IF VARTOSTR(OWNERDATA)='1' THEN
     QMD_ENTRADAS.Tag := 1;
end;

procedure TAGESTISHOP.DSPQ_MDALBARANBeforeApplyUpdates(Sender: TObject;
  var OwnerData: OleVariant);
begin
  Q_MDALBARAN.Tag := 0;
  IF VARTOSTR(OWNERDATA)='1' THEN
     Q_MDALBARAN.Tag := 1;
end;

procedure TAGESTISHOP.DSPQ_MDFACTURABeforeApplyUpdates(Sender: TObject;
  var OwnerData: OleVariant);
begin
  Q_MDFACTURA.Tag := 0;
  IF VARTOSTR(OWNERDATA)='1' THEN
     Q_MDFACTURA.Tag := 1;
end;

procedure TAGESTISHOP.DSPQ_MDSALIDABeforeApplyUpdates(Sender: TObject;
  var OwnerData: OleVariant);
begin
  QMD_SALIDA.Tag := 0;
  IF VARTOSTR(OWNERDATA)='1' THEN
     QMD_SALIDA.Tag := 1;
end;

procedure TAGESTISHOP.DSPQ_MDTICKETBeforeApplyUpdates(Sender: TObject;
  var OwnerData: OleVariant);
begin
  Q_MDTICKET.Tag := 0;
  IF VARTOSTR(OWNERDATA)='1' THEN
     Q_MDTICKET.Tag := 1;
end;

procedure TAGESTISHOP.DSPQ_OPCIONESNUMERICASAfterGetRecords(
  Sender: TObject; var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_OPCIONESNUMERICASBeforeGetRecords(
  Sender: TObject; var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
 OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
 IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
    BEGIN
       COMMANDTEXT := ONUMERICASCAMPOS;
       COMMANDTEXT := COMMANDTEXT + ' WHERE ( CHAR(ID_EMPRESA) LIKE ('''+REGISTRO.ID+'%'')) AND ID_EMPRESA='+REGISTRO.EMPRESA+' AND ANYO='+REGISTRO.ANYO+' '+ REGISTRO.ORDEN;
       REGISTRO.ID := COMMANDTEXT;
       OPEN;
       MOVEBY(REGISTRO.VECES *REGISTRO.NUMERO);
    END;
  END;
END;
procedure TAGESTISHOP.Q_OPCIONESNUMERICASAfterScroll(DataSet: TDataSet);
begin
  if Q_OPCIONESNUMERICAS.FieldByName('ID_EMPRESA').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE FROM EMPRESAS WHERE ID_EMPRESA = '+Q_OPCIONESNUMERICAS.FieldByName('ID_EMPRESA').AsString;
      OPEN;
      Q_OPCIONESNUMERICASNOMBREEMPRESA.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END
  ELSE
     Q_OPCIONESNUMERICASNOMBREEMPRESA.ASSTRING :='';
end;

procedure TAGESTISHOP.DSPQ_LISTADOENTRADAAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_LISTADOENTRADABeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
 OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
 IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
    BEGIN
    // CAMBIARLO CUANDO HAYA MAS DE UN LISTADO
      COMMANDTEXT := LISTADOENTRADACAMPOS;
      IF REGISTRO.TIPO ='1' THEN
         COMMANDTEXT := COMMANDTEXT + REGISTRO.ID+' '+ REGISTRO.ORDEN;
       REGISTRO.ID := COMMANDTEXT;
       OPEN;
       MOVEBY(REGISTRO.VECES *REGISTRO.NUMERO);
    END;
  END;
END;

procedure TAGESTISHOP.Q_LISTADOENTRADAAfterScroll(DataSet: TDataSet);
VAR I:SMALLINT;
begin
end;

procedure TAGESTISHOP.DSPQ_LISTADOENTRADATOTALAfterGetRecords(
  Sender: TObject; var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_LISTADOENTRADATOTALBeforeGetRecords(
  Sender: TObject; var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
 OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
 IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
    BEGIN
    // CAMBIARLO CUANDO HAYA MAS DE UN LISTADO
      COMMANDTEXT := LISTADOENTRADATOTALCAMPOS;
      IF REGISTRO.TIPO ='1' THEN
         COMMANDTEXT := COMMANDTEXT + REGISTRO.ID+' '+ REGISTRO.ORDEN;
       REGISTRO.ID := COMMANDTEXT;
       OPEN;
       MOVEBY(REGISTRO.VECES *REGISTRO.NUMERO);
    END;
  END;
END;

procedure TAGESTISHOP.Q_MDTICKETAfterScroll(DataSet: TDataSet);
begin
 IF (DATASET.Name = 'Q_MDTICKET') THEN
 BEGIN
  if Q_MDTICKET.FieldByName('ID_CLIENTE').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT  NOMBRE_COMERCIAL FROM CLIENTES WHERE ID_CLIENTE='+Q_MDTICKET.FieldByName('ID_CLIENTE').AsString;
      OPEN;
      Q_MDTICKETNOMBRECLIENTE.AsString := TRIM(Q_AUX.Fields.Fields [0].AsString);
      CLOSE;
    END;
  END
  ELSE
     Q_MDTICKETNOMBRECLIENTE.ASSTRING := '';

  if Q_MDTICKET.FieldByName('FORMAPAGO').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT  DESCRIPCION FROM FORMAPAGO WHERE ID_FORMA='''+Q_MDTICKET.FieldByName('FORMAPAGO').AsString+''' ';
      OPEN;
      Q_MDTICKETFORMAPAGODESCRIPCION.AsString := TRIM(Q_AUX.Fields.Fields [0].AsString);
      CLOSE;
    END;
  END
  ELSE
     Q_MDTICKETFORMAPAGODESCRIPCION.AsString := '';

 END
end;

procedure TAGESTISHOP.DSPQ_FAMILIASAUXGetData(Sender: TObject;
  DataSet: TCustomClientDataSet);
begin
  DATASET.RecordCount;
  DATASET.RecNo;
  DATASET.LAST;
  DATASET.RecNo;
  DATASET.RecordCount
end;
procedure TAGESTISHOP.DSPQ_TICKETAUXAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
BEGIN
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
END;
procedure TAGESTISHOP.DSPQ_TICKETAUXBeforeGetRecords (Sender: TObject;
      var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := TICKETCAMPOS; // PARA CUANDO TIPO <> DE 1 Y 2
      IF REGISTRO.TIPO='1' THEN
      BEGIN
         COMMANDTEXT := TICKETCAMPOS;
         COMMANDTEXT := COMMANDTEXT + ' WHERE CHAR(ID_TICKET) LIKE ('''+REGISTRO.ID+'%'') AND ID_EMPRESA='+REGISTRO.EMPRESA+' AND ANYO='+REGISTRO.ANYO+' AND ID_SERIE='''+REGISTRO.ID_SERIE+''' '+ REGISTRO.ORDEN;
      END;
      IF REGISTRO.TIPO ='2' THEN
      BEGIN
         COMMANDTEXT := REGISTRO.ID1;
         COMMANDTEXT := COMMANDTEXT +  REGISTRO.ID + ' '+REGISTRO.GRUPO+' ' +REGISTRO.ORDEN;
      END;
      OPEN;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO);
    END;
  END;

  END;
PROCEDURE TAGESTISHOP.Q_TICKETAUXAfterScroll(DataSet: TDataSet);
BEGIN
 IF (DATASET.Name = 'Q_TICKETAUX') THEN
  if Q_TICKETAUX.FieldByName('ID_CLIENTE').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT  NOMBRE_COMERCIAL FROM CLIENTES WHERE ID_CLIENTE='+Q_TICKETAUX.FieldByName('ID_CLIENTE').AsString;
      OPEN;
      Q_TICKETAUXNOMBRECLIENTE.AsString := TRIM(Q_AUX.Fields.Fields [0].AsString);
      CLOSE;
    END;
  END
  ELSE
     Q_TICKETAUXNOMBRECLIENTE.ASSTRING := '';
END;
procedure TAGESTISHOP.DSPQ_LARTICULOSBeforeGetRecords (Sender: TObject;
      var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      IF REGISTRO.TIPO ='2' THEN
      BEGIN
         COMMANDTEXT := REGISTRO.ID1;
         COMMANDTEXT := COMMANDTEXT +  REGISTRO.ID + ' '+REGISTRO.GRUPO+' ' +REGISTRO.ORDEN;
      END;
      REGISTRO.ID := COMMANDTEXT;
      OPEN;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO);
    END;
  END;

END;
procedure TAGESTISHOP.DSPQ_LARTICULOSAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
BEGIN
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
END;
procedure TAGESTISHOP.DSPQ_MDTICKETAUXAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
   with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_MDTICKETAUXBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := TICKETAUXCAMPOS;
      IF REGISTRO.TIPO='1' THEN
          COMMANDTEXT := COMMANDTEXT + ' AND (CHAR(ID_TICKET) LIKE ('''+REGISTRO.ID+'%'')) AND ID_EMPRESA='+REGISTRO.EMPRESA+' AND ANYO='+REGISTRO.ANYO+ ' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='2' THEN
          COMMANDTEXT := COMMANDTEXT + REGISTRO.ID+ ' AND TI.ID_EMPRESA='+REGISTRO.EMPRESA+' AND TI.ANYO='+REGISTRO.ANYO+' '+ REGISTRO.ORDEN;; //+' AND ID_EMPRESA='+REGISTRO.EMPRESA+' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='3' THEN
          COMMANDTEXT := COMMANDTEXT + REGISTRO.ID+ ' AND TI.ID_EMPRESA='+REGISTRO.EMPRESA+' '+ REGISTRO.ORDEN;; //+' AND ID_EMPRESA='+REGISTRO.EMPRESA+' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='4' THEN
          COMMANDTEXT := COMMANDTEXT + REGISTRO.ID + ' ' + REGISTRO.ORDEN;
          // QUITO EL ANYO PORQUE HAGO UNA CONSULTA CON FECHAS.
      REGISTRO.ID := COMMANDTEXT;
      OPEN;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO);
      WITH Q_MDLINEATICKETAUX DO // PARA HACER EL MASTER-DETAIL LE PASO LOS CAMPOS CLAVE COMO PARAMETROS
        BEGIN
          COMMANDTEXT := LINEATICKETCAMPOS;
          COMMANDTEXT := COMMANDTEXT + ' WHERE L.ID_TICKET=:ID_TICKET AND L.ID_EMPRESA=:ID_EMPRESA AND L.ID_SERIE=:ID_SERIE AND L.ANYO=:ANYO '+REGISTRO.ORDENLINEA+' ';
        END;
    END;
  END;
end;

procedure TAGESTISHOP.Q_MDTICKETAUXAfterScroll(DataSet: TDataSet);
begin
  if Q_MDTICKETAUX.FieldByName('ID_CLIENTE').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE FROM CLIENTES WHERE ID_CLIENTE = '+Q_MDTICKETAUX.FieldByName('ID_CLIENTE').AsString;
      OPEN;
      Q_MDTICKETAUXNOMBRECLIENTE.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END
  ELSE
     Q_MDTICKETAUXNOMBRECLIENTE.ASSTRING := '';
end;
procedure TAGESTISHOP.DSPQ_FACTURASALBARANESAfterGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
BEGIN
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
END;
procedure TAGESTISHOP.DSPQ_FACTURASALBARANESBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := FACTURASALBARANESCAMPOS;
      IF REGISTRO.TIPO='1' THEN
          COMMANDTEXT := COMMANDTEXT + ' AND ID_FACTURA = '+REGISTRO.ID+' AND ID_SERIE='''+REGISTRO.ID_SERIE+''' AND ID_EMPRESA='+REGISTRO.EMPRESA+' AND ANYO='+REGISTRO.ANYO+ ' '+REGISTRO.ORDEN;
      REGISTRO.ID := COMMANDTEXT;
      OPEN;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO);
    END;
  END;
end;
procedure TAGESTISHOP.DSPQ_FALBARANESAUXAfterGetRecords(Sender: TObject;
 var OwnerData: OleVariant);
BEGIN
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
END;

PROCEDURE TAGESTISHOP.DSPQ_FALBARANESAUXBeforeGetRecords(Sender: TObject;
 var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := FACTURASALBARANESCAMPOS;
      IF REGISTRO.TIPO='1' THEN
          COMMANDTEXT := COMMANDTEXT + ' AND ID_FACTURA = '+REGISTRO.ID+' AND ID_SERIE='''+REGISTRO.ID_SERIE+''' AND ID_EMPRESA='+REGISTRO.EMPRESA+' AND ANYO='+REGISTRO.ANYO+ ' '+REGISTRO.ORDEN;
      REGISTRO.ID := COMMANDTEXT;
      OPEN;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO);
    END;
  END;
end;
procedure TAGESTISHOP.Q_ARTICULOSAUXAfterScroll(DataSet: TDataSet);
begin
  if Q_ARTICULOSAUX.FieldByName('ID_PROVEEDOR').AsString <> '' THEN
  BEGIN
   WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT NOMBRE FROM PROVEEDOR_ACREEDOR WHERE ID_PROVEEDOR = '+Q_ARTICULOSAUX.FieldByName('ID_PROVEEDOR').AsString;
      OPEN;
      Q_ARTICULOSAUXNOMBREPROVEEDOR.AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
  END
  ELSE
     Q_ARTICULOSAUXNOMBREPROVEEDOR.ASSTRING := '';
END;

procedure TAGESTISHOP.DSPQ_ARQUEODECAJAAfterGetRecords(Sender: TObject;
var OwnerData: OleVariant);
BEGIN
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
END;
procedure TAGESTISHOP.DSPQ_ARQUEODECAJABeforeGetRecords(Sender: TObject;
var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
      COMMANDTEXT := ARQUEODECAJACAMPOS;
      IF REGISTRO.TIPO='1' THEN
          COMMANDTEXT := COMMANDTEXT + ' WHERE char(AFECHA) LIKE ('''+REGISTRO.ID+'%'') AND ID_EMPRESA='+REGISTRO.EMPRESA+' AND ANYO='+REGISTRO.ANYO+ ' '+REGISTRO.ORDEN;
      IF REGISTRO.TIPO='2' THEN
          COMMANDTEXT := COMMANDTEXT + REGISTRO.ID+' AND ID_EMPRESA='+REGISTRO.EMPRESA+' AND ANYO='+REGISTRO.ANYO+ ' '+REGISTRO.ORDEN;
      REGISTRO.ID := COMMANDTEXT;
      OPEN;
      MOVEBY(REGISTRO.VECES*REGISTRO.NUMERO);
    END;
  END;
end;

{procedure TAGESTISHOP.DSPQ_MDALBARANBeforeUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind; var Applied: Boolean);
BEGIN
 IF (SOURCEDS.NAME = 'Q_MDLINEAALBARAN')
 THEN
 BEGIN
    WITH Q_AUX DO
    BEGIN
      CLOSE;
      COMMANDTEXT := 'SELECT PRECIO_COSTE FROM ARTICULOS WHERE ID_ARTICULO = '''+DELTADS.FieldByName('ID_ARTICULO').AsString+ ''' ';
      OPEN;
      SOURCEDS.OPEN;
      SOURCEDS.EDIT;
      SOURCEDS.FieldByName('PRECIO_COSTE').AsString := Q_AUX.Fields.Fields [0].AsString;
      CLOSE;
    END;
    aPPLIED := TRUE;
 END;
END;
}

procedure TAGESTISHOP.SQLConnection1Login(Database: TSQLConnection;
  LoginParams: TStrings);
var configuracion:textfile;
    buffer:string;
    user_name,password,AUXDATA:STRING;
begin
 ASSIGNFILE (CONFIGURACION,'Gconfiguracion.txt');
 try
    Reset(CONFIGURACION); //abre un fichero existente
    try
     READln(CONFIGURACION,buffer);
     User_name := buffer;
     READln(CONFIGURACION,buffer);
     Password := buffer;
     READln(CONFIGURACION,buffer);
     AUXDATA := buffer;
     sqlconnection1.Params.Values ['User_name'] := user_name;
     sqlconnection1.Params.Values ['Password'] := password;
     sqlconnection1.Params.Values ['Database'] := AUXDATA;
    except on exception do
    begin
     sqlconnection1.Params.Values ['User_name'] := 'a';
     sqlconnection1.Params.Values ['Password'] := 'a';
     sqlconnection1.Params.Values ['Database'] := 'GESTISHO';
    end
    end
  except ON EXCEPTION DO
  TRY
     REWRITE(CONFIGURACION); // crea un nuevo fichero y lo abre
     user_name:='a';
     password:='a';
     AUXDATA := 'GESTISHO';
     sqlconnection1.Params.Values ['User_name'] := user_name;
     sqlconnection1.Params.Values ['Password'] := password;
     sqlconnection1.Params.Values ['Database'] := AUXDATA;
  except ON EXCEPTION DO
 end;
 end;

 TRY
     rewrite(configuracion);
     writeln(CONFIGURACION,user_name);
     writeln(CONFIGURACION,password);
     writeln(CONFIGURACION,AUXDATA);     
     CLOSEFILE(CONFIGURACION);
  EXCEPT ON EXCEPTION DO
  BEGIN
     SHOWMESSAGE('FALLO EN LA ESCRITURA DEL ARCHIVO DE CONFIGURACIONES');
     CLOSEFILE(CONFIGURACION);
  END;
 end;
end;

procedure TAGESTISHOP.RemoteDataModuleCreate(Sender: TObject);

var configuracion:textfile;
    buffer:string;
    user_name,password,AUXDATA:STRING;
begin
 ASSIGNFILE (CONFIGURACION,'Gconfiguracion.txt');
 try
    Reset(CONFIGURACION); //abre un fichero existente
    try
     READln(CONFIGURACION,buffer);
     User_name := buffer;
     READln(CONFIGURACION,buffer);
     Password := buffer;
     READln(CONFIGURACION,buffer);
     AUXDATA := buffer;
     sqlconnection1.Params.Values ['User_name'] := user_name;
     sqlconnection1.Params.Values ['Password'] := password;
     sqlconnection1.Params.Values ['Database'] := AUXDATA;
    except on exception do
    begin
     sqlconnection1.Params.Values ['User_name'] := 'a';
     sqlconnection1.Params.Values ['Password'] := 'a';
     sqlconnection1.Params.Values ['Database'] := 'GESTISHO';
    end
    end
  except ON EXCEPTION DO
  TRY
     REWRITE(CONFIGURACION); // crea un nuevo fichero y lo abre
     user_name:='a';
     password:='a';
     sqlconnection1.Params.Values ['User_name'] := user_name;
     sqlconnection1.Params.Values ['Password'] := password;
     sqlconnection1.Params.Values ['Database'] := AUXDATA;
  except ON EXCEPTION DO
 end;
 end;

 TRY
     rewrite(configuracion);
     writeln(CONFIGURACION,user_name);
     writeln(CONFIGURACION,password);
     writeln(CONFIGURACION,AUXDATA);
     CLOSEFILE(CONFIGURACION);
  EXCEPT ON EXCEPTION DO
  BEGIN
     SHOWMESSAGE('FALLO EN LA ESCRITURA DEL ARCHIVO DE CONFIGURACIONES');
     CLOSEFILE(CONFIGURACION);
  END;
 end;
end;

procedure TAGESTISHOP.inicializar;
var configuracion:textfile;
    buffer:string;
    user_name,password,AUXDATA:STRING;
begin
 ASSIGNFILE (CONFIGURACION,'Gconfiguracion.txt');
 try
    Reset(CONFIGURACION); //abre un fichero existente
    try
     READln(CONFIGURACION,buffer);
     User_name := buffer;
     READln(CONFIGURACION,buffer);
     Password := buffer;
     READln(CONFIGURACION,buffer);
     AUXDATA := buffer;
     sqlconnection1.Params.Values ['User_name'] := user_name;
     sqlconnection1.Params.Values ['Password'] := password;
     sqlconnection1.Params.Values ['Database'] := auxdata;
    except on exception do
    begin
     sqlconnection1.Params.Values ['User_name'] := 'a';
     sqlconnection1.Params.Values ['Password'] := 'a';
     sqlconnection1.Params.Values ['Database'] := 'GESTISHO';
    end
    end
  except ON EXCEPTION DO
  TRY
     REWRITE(CONFIGURACION); // crea un nuevo fichero y lo abre
     user_name:='a';
     password:='a';
     sqlconnection1.Params.Values ['User_name'] := user_name;
     sqlconnection1.Params.Values ['Password'] := password;
     sqlconnection1.Params.Values ['Database'] := auxdata;
  except ON EXCEPTION DO
 end;
 end;

 TRY
     rewrite(configuracion);
     writeln(CONFIGURACION,user_name);
     writeln(CONFIGURACION,password);
     writeln(CONFIGURACION,auxdata);
     CLOSEFILE(CONFIGURACION);
  EXCEPT ON EXCEPTION DO
  BEGIN
     SHOWMESSAGE('FALLO EN LA ESCRITURA DEL ARCHIVO DE CONFIGURACIONES');
     CLOSEFILE(CONFIGURACION);
  END;
 end;
end;




procedure TAGESTISHOP.DataSetProvider1AfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DataSetProvider1BeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
        COMMANDTEXT := 'SELECT * FROM ARTICULOS' ;
        if REGISTRO.tipo='1' then
         COMMANDTEXT := COMMANDTEXT + ' WHERE (ID_ARTICULO LIKE ('''+REGISTRO.ID+'%'')  OR DESCRIPCION LIKE ('''+REGISTRO.ID+'%'') OR ART_PROVEEDOR LIKE ('''+REGISTRO.ID+'%'')) AND CHAR(BORRADO) LIKE ('''+REGISTRO.BORRADO+'%'') '+REGISTRO.ORDEN;
        if REGISTRO.tipo='2' then
        // FALTA PONER ORDEN Y ANYO CUANDO LO PONGA EN LA TABLA.
         commandtext := commandtext + REGISTRO.id + ' ' + REGISTRO.ORDEN;
        if registro.tipo = '3' then
         commandtext := commandtext +  ' WHERE (ID_ARTICULO LIKE ('''+REGISTRO.ID+'%'')  OR DESCRIPCION LIKE ('''+REGISTRO.ID+'%'') OR ART_PROVEEDOR LIKE ('''+REGISTRO.ID+'%'') ) and cod_familia='''+registro.id1+''' AND CHAR(BORRADO) LIKE ('''+REGISTRO.BORRADO+'%'') '+REGISTRO.ORDEN;
        registro.id := commandtext;
        OPEN;
        MOVEBY(REGISTRO.VECES * REGISTRO.NUMERO);
    END;
  END;
end;



procedure TAGESTISHOP.DSPQ_TIPOSIVAAfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_TIPOSIVABeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
        COMMANDTEXT := ' SELECT * FROM TIPOSIVA ' ;
        IF REGISTRO.TIPO = '1' THEN
           COMMANDTEXT := COMMANDTEXT + ' WHERE (CHAR(TIPO) LIKE ('''+REGISTRO.ID+'%'')) '+REGISTRO.ORDEN;
        IF REGISTRO.TIPO = '2' THEN
           COMMANDTEXT := COMMANDTEXT + REGISTRO.ID+' '+REGISTRO.ORDEN;
        REGISTRO.ID := COMMANDTEXT;
        OPEN;
        MOVEBY(REGISTRO.VECES * REGISTRO.NUMERO);
    END;
  END;
end;

procedure TAGESTISHOP.DSPQ_ALMACENDETALLE2AfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with sender as tdatasetprovider do
    with dataset as tsqldataset do
      CLOSE;
end;

procedure TAGESTISHOP.DSPQ_ALMACENDETALLE2BeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
  VAR REGISTRO:TMIRECORD;
begin
  OBTENERPARAMETROS(REGISTRO,VARTOSTR(OWNERDATA));
  IF TRIM(REGISTRO.ID) <> '' THEN
  BEGIN
   with sender as tdatasetprovider do
    with dataset as tsqldataset do
    BEGIN
        COMMANDTEXT := ' SELECT * FROM ALMACENDETALLE2 ' ;
        IF REGISTRO.TIPO = '1' THEN
           COMMANDTEXT := COMMANDTEXT + ' WHERE (CODIGO_BARRAS='''+REGISTRO.ID+''') OR NUMERO1='+REGISTRO.ID+' '+REGISTRO.ORDEN;
        IF REGISTRO.TIPO = '2' THEN
           COMMANDTEXT := COMMANDTEXT + REGISTRO.ID+' '+REGISTRO.ORDEN;
        REGISTRO.ID := COMMANDTEXT;
        OPEN;
        MOVEBY(REGISTRO.VECES * REGISTRO.NUMERO);
    END;
  END;
end;

procedure TAGESTISHOP.ACTUALIZARALMACENDETALLE(CODIGO_BARRAS, SIGNO1,SIGNO2,
  CANTIDAD,CANTIDAD2: STRING;TIPO:SMALLINT);
begin
 Q_AUX.CLOSE;
 Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACENDETALLE WHERE CODIGO_BARRAS='''+ CODIGO_BARRAS +''' ';
 Q_AUX.ExecSQL(TRUE);
 IF Q_AUX.RECORDCOUNT > 0 THEN
 BEGIN
   IF TIPO=0 THEN
   BEGIN
      Q_AUX.CLOSE;
      Q_AUX.CommandText := 'UPDATE ALMACENDETALLE SET CANTIDAD= CANTIDAD '+SIGNO1+STRINGREPLACE(CANTIDAD,',','.',[RFREPLACEALL,rfIgnoreCase])+' WHERE CODIGO_BARRAS='''+CODIGO_BARRAS+''' ' ;
      Q_AUX.ExecSQL(TRUE);
   END;
   IF TIPO=1 THEN
   BEGIN
     Q_AUX.CLOSE;
     Q_AUX.CommandText := 'UPDATE ALMACENDETALLE SET CANTIDAD= CANTIDAD '+SIGNO2+STRINGREPLACE(CANTIDAD,',','.',[RFREPLACEALL,rfIgnoreCase]) +SIGNO1+STRINGREPLACE(CANTIDAD2,',','.',[RFREPLACEALL,rfIgnoreCase])+' WHERE CODIGO_BARRAS='''+CODIGO_BARRAS+''' ' ;
   END;
 END;
// COMPROBAR SI ESTA Y OPERAR. HABRA QUE PASARLE UNA VARIABLE MAS QUE SEA OPERACION
end;

procedure TAGESTISHOP.ACTUALIZARALMACENDETALLE2(CODIGO_BARRAS, SIGNO1,SIGNO2,
  CANTIDAD,CANTIDAD2: STRING;TIPO:SMALLINT);
begin
 Q_AUX.CLOSE;
 Q_AUX.CommandText := 'SELECT COUNT(*) FROM ALMACENDETALLE2 WHERE CODIGO_BARRAS='''+ CODIGO_BARRAS +''' ';
 Q_AUX.ExecSQL(TRUE);
 IF Q_AUX.RECORDCOUNT > 0 THEN
 BEGIN
   IF TIPO=0 THEN
   BEGIN
      Q_AUX.CLOSE;
      Q_AUX.CommandText := 'UPDATE ALMACENDETALLE2 SET CANTIDAD= CANTIDAD '+SIGNO1+STRINGREPLACE(CANTIDAD,',','.',[RFREPLACEALL,rfIgnoreCase])+' WHERE CODIGO_BARRAS='''+CODIGO_BARRAS+''' ' ;
      Q_AUX.ExecSQL(TRUE);
   END;
   IF TIPO=1 THEN
   BEGIN
     Q_AUX.CLOSE;
     Q_AUX.CommandText := 'UPDATE ALMACENDETALLE2 SET CANTIDAD= CANTIDAD '+SIGNO2+STRINGREPLACE(CANTIDAD,',','.',[RFREPLACEALL,rfIgnoreCase]) +SIGNO1+STRINGREPLACE(CANTIDAD2,',','.',[RFREPLACEALL,rfIgnoreCase])+' WHERE CODIGO_BARRAS='''+CODIGO_BARRAS+''' ' ;
   END;
 END;
// COMPROBAR SI ESTA Y OPERAR. HABRA QUE PASARLE UNA VARIABLE MAS QUE SEA OPERACION
end;

iNItialization
  TComponentFactory.Create(ComServer, TAGESTISHOP,
    Class_AGESTISHOP, ciMultiInstance, tmApartment);
end.






