{ =============================================================================== Copyright (©) 2005. Rodax Software. =============================================================================== Los contenidos de este fichero son propiedad de Rodax Software titular del copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, en su totalidad o en parte, con el permiso escrito de Rodax Software, o de acuerdo con los términos y condiciones establecidas en el acuerdo/contrato bajo el que se suministra. ----------------------------------------------------------------------------- Web: www.rodax-software.com =============================================================================== Fecha primera versión: 30-10-2005 Versión actual: 1.0.0 Fecha versión actual: 30-10-2005 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit TablaAlbaranesCliente; interface uses //Generales SysUtils, Classes, Controls, IBSQL, cxGridDBTableView, cxCustomData, DB, //Particulares IBCustomDataSet, cxGrid, StdCtrls, cxButtonEdit, cxEdit, cxMemo, //Aplicacion Framework, StrFunc, Entidades, Constantes, BaseDatos, RdxEmpresaActiva, //Contador Contadores, RdxGestorContadores; type TDatosAlbaranCliente = class(TObjeto) private // protected procedure ObtenerDatos; override; procedure AssignTo(Dest: TPersistent); override; public Codigo : String; FechaAlta : TDateTime; Usuario : String; FechaAlbaran : TDateTime; CodigoCliente : String; NIFCIF : String; Nombre : String; Calle : String; Numero : String; Piso : String; CodigoPostal : String; Poblacion : String; Provincia : String; Telefono1 : String; Telefono2 : String; Movil1 : String; Movil2 : String; Fax : String; PersonaContacto : String; BaseImponible : double; Descuento : integer; ImporteDescuento : double; Iva : integer; ImporteIva : double; ImporteTotal : double; Observaciones : String; constructor Create(CodigoAlbaran : String); overload; constructor Create; overload; override; destructor Destroy; override; end; TListaAlbaranesCliente = class(TListaObjetos) private FSQL : String; function GetAlbaran(Index: Integer): TDatosAlbaranCliente; protected procedure AssignTo(Dest: TPersistent); override; procedure ObtenerLista; override; public constructor Create(oSQL : String); overload; constructor Create; overload; override; property Items[Index: Integer] : TDatosAlbaranCliente read GetAlbaran; end; ///////////////////////////////////////////////////////////////////////////////// TdmTablaAlbaranesCliente = class(TDataModule) private procedure IniciarSQLAlbaran; procedure IniciarSQLDetalles; procedure IniciarSQLGrids; public sqlInsertar : TStrings; sqlModificar : TStrings; sqlConsultar : TStrings; sqlEliminar : TStrings; sqlConsultarGrid : TStrings; sqlInsertarDetalles : TStrings; sqlModificarDetalles : TStrings; sqlConsultarDetalles : TStrings; sqlEliminarDetalles : TStrings; sqlConsultarGridDetalles : TStrings; //Metodos que llamaran a contador function DarNuevoCodigo : String; function IncrementarCodigo : boolean; function DecrementarCodigo : boolean; function InsertarContador : boolean; function ValidarCodigo(Codigo : String) : Boolean; function FormatearCodigo(Codigo : String) : String; function FormatearNumConcepto(NumConcepto : String) : String; function ExisteCodigo(Codigo : String) : Boolean; procedure InicializarGridDetalles(var Grid: TcxGrid); procedure InicializarGrid(var Grid: TcxGrid); procedure InicializarTabla(Tabla: TPTabla); procedure InicializarTablaDetalles(Tabla: TPTabla); constructor Create (AOwner : TComponent); override; destructor Destroy; override; function EsUltima(Codigo : String): Boolean; end; var dmTablaAlbaranesCliente: TdmTablaAlbaranesCliente; implementation {$R *.DFM} uses TablaEmpresas; { TdmTablaAlbaranesCliente } constructor TdmTablaAlbaranesCliente.Create(AOwner: TComponent); begin inherited; { Cabecera } sqlInsertar := TStringList.Create; sqlModificar := TStringList.Create; sqlConsultar := TStringList.Create; sqlEliminar := TStringList.Create; { Detalles } sqlInsertarDetalles := TStringList.Create; sqlModificarDetalles := TStringList.Create; sqlConsultarDetalles := TStringList.Create; sqlEliminarDetalles := TStringList.Create; { Grids } sqlConsultarGrid := TStringList.Create; sqlConsultarGridDetalles := TStringList.Create; IniciarSQLAlbaran; IniciarSQLDetalles; IniciarSQLGrids; end; function TdmTablaAlbaranesCliente.DarNuevoCodigo: String; begin Result := GestorContadores.darNuevoCodigo(contAlbaranesCliente); end; destructor TdmTablaAlbaranesCliente.Destroy; begin { Cabecera } sqlInsertar.Free; sqlModificar.Free; sqlConsultar.Free; sqlEliminar.Free; { Detalles } sqlInsertarDetalles.Free; sqlModificarDetalles.Free; sqlConsultarDetalles.Free; sqlEliminarDetalles.Free; { Grids } sqlConsultarGrid.Free; sqlConsultarGridDetalles.Free; inherited; end; function TdmTablaAlbaranesCliente.ExisteCodigo(Codigo: String): Boolean; var oSQL : TIBSQL; Contador : String; begin Result := False; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select CODIGO '); SQL.Add('from ALBARANESCLIENTE '); SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA'); SQL.Add(' and CODIGO = :CODIGO'); try ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo; ParamByName('CODIGO').AsString := Codigo; Prepare; ExecQuery; Contador := Fields[0].AsString; Result := (Codigo = Contador); finally Close; Transaction := NIL; Free; end; end; end; function TdmTablaAlbaranesCliente.FormatearCodigo(Codigo: String): String; begin Result := GestorContadores.formatearCodigo(contAlbaranesCliente, Codigo); end; function TdmTablaAlbaranesCliente.FormatearNumConcepto( NumConcepto: String): String; var Concepto : Integer; begin Concepto := StrToInt(NumConcepto); Result := format('%.10d', [Concepto]); end; function TdmTablaAlbaranesCliente.IncrementarCodigo: boolean; begin Result := GestorContadores.IncrementarValor(contAlbaranesCliente); end; procedure TdmTablaAlbaranesCliente.InicializarGridDetalles(var Grid: TcxGrid); var Columna : TcxGridDBColumn; begin with (Grid.ActiveView as TcxGridDBTableView) do begin OptionsView.Footer := True; {Columna CODIGOEMPRESA} Columna := CreateColumn; Columna.DataBinding.FieldName := 'CODIGOEMPRESA'; Columna.Visible := False; Columna.Options.Filtering := False; Columna.Options.Sorting := False; {Columna CODIGOALBARAN} Columna := CreateColumn; Columna.DataBinding.FieldName := 'CODIGOALBARAN'; Columna.Visible := False; Columna.Options.Filtering := False; Columna.Options.Sorting := False; {Columna NUMCONCEPTO} Columna := CreateColumn; Columna.DataBinding.FieldName := 'NUMCONCEPTO'; Columna.Visible := False; Columna.Options.Filtering := False; Columna.Options.Sorting := False; {Columna CODIGOARTICULO} Columna := CreateColumn; Columna.DataBinding.FieldName := 'CODIGOARTICULO'; Columna.Caption := 'Cód. artículo'; Columna.Width := tamColCodigo; Columna.Options.Filtering := False; Columna.Options.Sorting := False; Columna.Visible := False; Columna.PropertiesClassName := 'TcxButtonEditProperties'; with TcxButtonEditProperties(Columna.Properties) do begin Buttons[0].Kind := bkEllipsis; end; {Columna REFERENCIA} Columna := CreateColumn; Columna.DataBinding.FieldName := 'REFERENCIA'; Columna.Caption := 'Referencia'; Columna.Width := tamColReferencia; Columna.Options.Filtering := False; Columna.Options.Sorting := False; Columna.PropertiesClassName := 'TcxButtonEditProperties'; with TcxButtonEditProperties(Columna.Properties) do begin Buttons[0].Kind := bkEllipsis; end; {Columna DESCRIPCION} Columna := CreateColumn; Columna.DataBinding.FieldName := 'DESCRIPCION'; Columna.Caption := 'Descripción servicio/artículo'; Columna.Width := tamColDescripcion; Columna.Options.Filtering := False; Columna.Options.Sorting := False; Columna.PropertiesClassName := 'TcxMemoProperties'; with TcxMemoProperties(Columna.Properties) do ScrollBars := ssVertical; with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do try try BeginUpdate; Column := Columna; FieldName := Columna.DataBinding.FieldName; Format := 'Total: #,0 conceptos'; Kind := skCount; finally EndUpdate; end; except DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1); end; {Columna CANTIDAD} Columna := CreateColumn; Columna.DataBinding.FieldName := 'CANTIDAD'; Columna.Caption := 'Cantidad'; Columna.Width := tamColCantidad; Columna.Options.Filtering := False; Columna.Options.Sorting := False; Columna.PropertiesClassName := 'TcxCalcEditProperties'; {Columna IMPORTEUNIDAD} Columna := CreateColumn; Columna.DataBinding.FieldName := 'IMPORTEUNIDAD'; Columna.Caption := 'Importe unidad'; Columna.Width := tamColImporte; Columna.Options.Filtering := False; Columna.Options.Sorting := False; Columna.PropertiesClassName := 'TcxCalcEditProperties'; {Columna IMPORTETOTAL} Columna := CreateColumn; Columna.DataBinding.FieldName := 'IMPORTETOTAL'; Columna.Caption := 'Importe total'; Columna.Width := tamColImporte; Columna.Options.Filtering := False; Columna.Options.Sorting := False; Columna.Options.Editing := False; with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do try try BeginUpdate; Column := Columna; FieldName := Columna.DataBinding.FieldName; Format := DISPLAY_EUROS2; Kind := skSum; finally EndUpdate; end; except DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1); end; end; end; procedure TdmTablaAlbaranesCliente.InicializarGrid(var Grid: TcxGrid); var Columna : TcxGridDBColumn; begin with (Grid.ActiveView as TcxGridDBTableView) do begin OptionsView.Footer := True; {Columna CODIGO} Columna := CreateColumn; Columna.DataBinding.FieldName := 'CODIGO'; Columna.Caption := 'Código'; Columna.Width := tamColCodigo; Columna.Options.Filtering := False; with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do try try BeginUpdate; Column := Columna; FieldName := Columna.DataBinding.FieldName; Format := 'Total: 0 albaranes'; Kind := skCount; finally EndUpdate; end; except DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1); end; {Columna FECHAALBARAN} Columna := CreateColumn; Columna.DataBinding.FieldName := 'FECHAALBARAN'; Columna.Caption := 'Fecha'; Columna.Width := tamColFecha; Columna.Options.Filtering := False; Columna.SortOrder := soDescending; {Columna CODIGOCLIENTE} Columna := CreateColumn; Columna.DataBinding.FieldName := 'CODIGOCLIENTE'; Columna.Caption := 'Cód. cliente'; Columna.Width := tamColCodigo; Columna.Options.Filtering := False; {Columna NIFCIF} Columna := CreateColumn; Columna.DataBinding.FieldName := 'NIFCIF'; Columna.Caption := 'NIF/CIF'; Columna.Width := tamColNIFCIF; Columna.Options.Filtering := False; {Columna NOMBRE} Columna := CreateColumn; Columna.DataBinding.FieldName := 'NOMBRE'; Columna.Caption := 'Nombre'; Columna.Width := tamColNombre; Columna.Options.Filtering := False; {Columna IMPORTETOTAL} Columna := CreateColumn; Columna.DataBinding.FieldName := 'IMPORTETOTAL'; Columna.Caption := 'Importe total'; Columna.HeaderAlignmentHorz := taRightJustify; Columna.Width := tamColImporte; Columna.Options.Filtering := False; end; end; procedure TdmTablaAlbaranesCliente.InicializarTablaDetalles(Tabla: TPTabla); begin with Tabla^.Fields do begin if FindField('CANTIDAD') <> NIL then with (FieldByName('CANTIDAD') as TNumericField) do begin DisplayFormat := DISPLAY_CANTIDAD; EditFormat := EDIT_CANTIDAD; end; if FindField('IMPORTEUNIDAD') <> NIL then with (FieldByName('IMPORTEUNIDAD') as TFloatField) do begin DisplayFormat := DISPLAY_EUROS4; EditFormat := EDIT_EUROS4; end; if FindField('IMPORTETOTAL') <> NIL then with (FieldByName('IMPORTETOTAL') as TFloatField) do begin DisplayFormat := DISPLAY_EUROS2; EditFormat := EDIT_EUROS2; end; end; end; procedure TdmTablaAlbaranesCliente.InicializarTabla( Tabla: TPTabla); begin with Tabla^.Fields do begin if FindField('BASEIMPONIBLE') <> NIL then with (FieldByName('BASEIMPONIBLE') as TIBBCDField) do begin DisplayFormat := DISPLAY_EUROS2; EditFormat := EDIT_EUROS2; end; if FindField('DESCUENTO') <> NIL then with (FieldByName('DESCUENTO') as TFloatField) do begin DisplayFormat := DISPLAY_DTO; EditFormat := EDIT_DTO; end; if FindField('IMPORTEDESCUENTO') <> NIL then with (FieldByName('IMPORTEDESCUENTO') as TIBBCDField) do begin DisplayFormat := DISPLAY_EUROS2; EditFormat := EDIT_EUROS2; end; if FindField('IVA') <> NIL then with (FieldByName('IVA') as TFloatField) do begin DisplayFormat := DISPLAY_DTO; EditFormat := EDIT_DTO; end; if FindField('IMPORTEIVA') <> NIL then with (FieldByName('IMPORTEIVA') as TIBBCDField) do begin DisplayFormat := DISPLAY_EUROS2; EditFormat := EDIT_EUROS2; end; if FindField('IMPORTETOTAL') <> NIL then with (FieldByName('IMPORTETOTAL') as TNumericField) do begin DisplayFormat := DISPLAY_EUROS2; EditFormat := EDIT_EUROS2; end; end; end; procedure TdmTablaAlbaranesCliente.IniciarSQLDetalles; begin with sqlInsertarDetalles do begin Add('INSERT INTO DETALLESALBARANESCLIENTE ( '); Add('CODIGOEMPRESA, CODIGOALBARAN, NUMCONCEPTO, '); Add('CODIGOARTICULO, REFERENCIA, DESCRIPCION, CANTIDAD, '); Add('IMPORTEUNIDAD, IMPORTETOTAL) '); Add('VALUES ( '); Add(':CODIGOEMPRESA, :CODIGOALBARAN, :NUMCONCEPTO, '); Add(':CODIGOARTICULO, :REFERENCIA, :DESCRIPCION, :CANTIDAD, '); Add(':IMPORTEUNIDAD, :IMPORTETOTAL) '); end; with sqlModificarDetalles do begin Add('UPDATE DETALLESALBARANESCLIENTE SET '); Add('CODIGOARTICULO = :CODIGOARTICULO, '); Add('REFERENCIA = :REFERENCIA, '); Add('DESCRIPCION = :DESCRIPCION, '); Add('CANTIDAD = :CANTIDAD, '); Add('IMPORTEUNIDAD = :IMPORTEUNIDAD, '); Add('IMPORTETOTAL = :IMPORTETOTAL '); Add('WHERE (CODIGOEMPRESA = :CODIGOEMPRESA) AND '); Add('(CODIGOALBARAN = :CODIGOALBARAN) AND '); Add('(NUMCONCEPTO = :NUMCONCEPTO) '); end; with sqlEliminarDetalles do begin Add('delete from DETALLESALBARANESCLIENTE '); Add('WHERE (CODIGOEMPRESA = :CODIGOEMPRESA) AND '); Add('(CODIGOALBARAN = :CODIGOALBARAN) AND '); Add('(NUMCONCEPTO = :NUMCONCEPTO) '); end; with sqlConsultarDetalles do begin Add('select CODIGOALBARAN, NUMCONCEPTO, CODIGOARTICULO, REFERENCIA, '); Add('DESCRIPCION, CANTIDAD, IMPORTEUNIDAD, IMPORTETOTAL '); Add('from DETALLESALBARANESCLIENTE '); Add('WHERE (CODIGOEMPRESA = :CODIGOEMPRESA) AND '); Add('(CODIGOALBARAN = :CODIGOALBARAN) AND '); Add('(NUMCONCEPTO = :NUMCONCEPTO) '); end; end; procedure TdmTablaAlbaranesCliente.IniciarSQLGrids; begin with sqlConsultarGrid do begin Add('select CODIGO, FECHAALTA, FECHAALBARAN,'); Add('CODIGOCLIENTE, NIFCIF, NOMBRE, IMPORTETOTAL '); Add('from ALBARANESCLIENTE '); Add('WHERE (CODIGOEMPRESA = :CODIGOEMPRESA)'); end; with sqlConsultarGridDetalles do begin Add('select CODIGOEMPRESA, CODIGOALBARAN, NUMCONCEPTO, CODIGOARTICULO, REFERENCIA, '); Add('DESCRIPCION, CANTIDAD, IMPORTEUNIDAD, IMPORTETOTAL '); Add('from DETALLESALBARANESCLIENTE '); Add('WHERE (CODIGOEMPRESA = :CODIGOEMPRESA)'); Add('AND (CODIGOALBARAN = :CODIGOALBARAN)'); Add('order by CODIGOALBARAN, NUMCONCEPTO'); end; end; procedure TdmTablaAlbaranesCliente.IniciarSQLAlbaran; begin with sqlInsertar do begin Add('INSERT INTO ALBARANESCLIENTE '); Add('(CODIGOEMPRESA, CODIGO, FECHAALTA, FECHAALBARAN, '); Add('CODIGOCLIENTE, NIFCIF, NOMBRE, '); Add('CALLE, NUMERO, PISO, '); Add('CODIGOPOSTAL, POBLACION, PROVINCIA, '); Add('TELEFONO1, TELEFONO2, MOVIL1, '); Add('MOVIL2, FAX, PERSONACONTACTO, '); Add('BASEIMPONIBLE, DESCUENTO, IMPORTEDESCUENTO, '); Add('IVA, IMPORTEIVA, IMPORTETOTAL, OBSERVACIONES,'); Add('USUARIO) VALUES '); Add('(:CODIGOEMPRESA, :CODIGO, :FECHAALTA, '); Add(':FECHAALBARAN, '); Add(':CODIGOCLIENTE, :NIFCIF, '); Add(':NOMBRE, :CALLE, :NUMERO, '); Add(':PISO, :CODIGOPOSTAL, '); Add(':POBLACION, :PROVINCIA, '); Add(':TELEFONO1, :TELEFONO2, '); Add(':MOVIL1, :MOVIL2, '); Add(':FAX, :PERSONACONTACTO, '); Add(':BASEIMPONIBLE, :DESCUENTO, '); Add(':IMPORTEDESCUENTO, :IVA, '); Add(':IMPORTEIVA, :IMPORTETOTAL, '); Add(':OBSERVACIONES, :USUARIO)'); end; with sqlModificar do begin Add('UPDATE ALBARANESCLIENTE SET '); Add('FECHAALBARAN = :FECHAALBARAN, '); Add('CODIGOCLIENTE = :CODIGOCLIENTE, '); Add('NIFCIF = :NIFCIF, '); Add('NOMBRE = :NOMBRE, '); Add('CALLE = :CALLE, '); Add('NUMERO = :NUMERO, '); Add('PISO = :PISO, '); Add('CODIGOPOSTAL = :CODIGOPOSTAL, '); Add('POBLACION = :POBLACION, '); Add('PROVINCIA = :PROVINCIA, '); Add('TELEFONO1 = :TELEFONO1, '); Add('TELEFONO2 = :TELEFONO2, '); Add('MOVIL1 = :MOVIL1, '); Add('MOVIL2 = :MOVIL2, '); Add('FAX = :FAX, '); Add('PERSONACONTACTO = :PERSONACONTACTO, '); Add('BASEIMPONIBLE = :BASEIMPONIBLE, '); Add('DESCUENTO = :DESCUENTO, '); Add('IMPORTEDESCUENTO = :IMPORTEDESCUENTO, '); Add('IVA = :IVA, '); Add('IMPORTEIVA = :IMPORTEIVA, '); Add('IMPORTETOTAL = :IMPORTETOTAL, '); Add('OBSERVACIONES = :OBSERVACIONES '); Add('WHERE (CODIGOEMPRESA = :CODIGOEMPRESA)'); Add(' AND (CODIGO = :CODIGO)'); end; with sqlEliminar do begin Add('delete from ALBARANESCLIENTE '); Add('WHERE (CODIGOEMPRESA = :CODIGOEMPRESA)'); Add(' AND (CODIGO = :CODIGO)'); end; with sqlConsultar do begin Add('SELECT * FROM ALBARANESCLIENTE '); Add('WHERE (CODIGOEMPRESA = :CODIGOEMPRESA)'); Add(' AND (CODIGO = :CODIGO)'); end; end; function TdmTablaAlbaranesCliente.InsertarContador: boolean; begin Result := GestorContadores.InsertarContador(contAlbaranesCliente); end; function TdmTablaAlbaranesCliente.ValidarCodigo(Codigo: String): Boolean; begin Result := GestorContadores.validarCodigo(contAlbaranesCliente, Codigo); end; function TdmTablaAlbaranesCliente.DecrementarCodigo: boolean; begin Result := GestorContadores.decrementarValor(contAlbaranesCliente); end; function TdmTablaAlbaranesCliente.EsUltima(Codigo: String): Boolean; var oSQL : TIBSQL; begin Result := False; if EsCadenaVacia(Codigo) then Exit; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select count(*) '); SQL.Add('from ALBARANESCLIENTE '); SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA '); SQL.Add('and CODIGO > :CODIGO '); try ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo; ParamByName('CODIGO').AsString := Codigo; Prepare; ExecQuery; if Fields[0].AsInteger = 0 then Result := True; finally Close; Transaction := NIL; Free; end; end; end; { TDatosAlbaranCliente } procedure TDatosAlbaranCliente.AssignTo(Dest: TPersistent); begin inherited; // end; constructor TDatosAlbaranCliente.Create(CodigoAlbaran: String); begin inherited Create; Codigo := CodigoAlbaran; ObtenerDatos; end; constructor TDatosAlbaranCliente.Create; begin inherited Create; end; destructor TDatosAlbaranCliente.Destroy; begin inherited; end; procedure TDatosAlbaranCliente.ObtenerDatos; var oSQL : TIBSQL; begin if EsCadenaVacia(Codigo) then Exit; oSQL := TIBSQL.Create(nil); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select * from ALBARANESCLIENTE '); SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA'); SQL.Add(' and CODIGO = :CODIGO'); try ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo; ParamByName('CODIGO').AsString := Codigo; Prepare; ExecQuery; if (RecordCount > 0) then begin FechaAlta := FieldByName('FECHAALTA').AsDateTime; Usuario := FieldByName('USUARIO').AsString; FechaAlbaran := FieldByName('FECHAALBARAN').AsDateTime; CodigoCliente := FieldByName('CODIGOCLIENTE').AsString; NifCif := FieldByName('NIFCIF').AsString; Nombre := FieldByName('NOMBRE').AsString; Calle := FieldByName('CALLE').AsString; Numero := FieldByName('NUMERO').AsString; Piso := FieldByName('PISO').AsString; CodigoPostal := FieldByName('CODIGOPOSTAL').AsString; Poblacion := FieldByName('POBLACION').AsString; Provincia := FieldByName('PROVINCIA').AsString; Telefono1 := FieldByName('TELEFONO1').AsString; Telefono2 := FieldByName('TELEFONO2').AsString; Movil1 := FieldByName('MOVIL1').AsString; Movil2 := FieldByName('MOVIL2').AsString; Fax := FieldByName('FAX').AsString; PersonaContacto := FieldByName('PERSONACONTACTO').AsString; BaseImponible := FieldByName('BASEIMPONIBLE').AsFloat; Descuento := FieldByName('DESCUENTO').AsInteger; Iva := FieldByName('IVA').AsInteger; ImporteDescuento := FieldByName('IMPORTEDESCUENTO').AsFloat; ImporteIva := FieldByName('IMPORTEIVA').AsFloat; ImporteTotal := FieldByName('IMPORTETOTAL').AsFloat; end; finally Close; Transaction := NIL; Free; end; end; end; { TListaAlbaranesCliente } procedure TListaAlbaranesCliente.AssignTo(Dest: TPersistent); begin inherited; // end; constructor TListaAlbaranesCliente.Create(oSQL: String); begin inherited Create; FSQL := oSQL; ObtenerLista; end; constructor TListaAlbaranesCliente.Create; begin inherited Create; FSQL := 'select CODIGO from ALBARANESCLIENTE'; FSQL := FSQL + ' where CODIGOEMPRESA = :CODIGOEMPRESA'; ObtenerLista; end; function TListaAlbaranesCliente.GetAlbaran(Index: Integer): TDatosAlbaranCliente; begin Result := TDatosAlbaranCliente(FLista.Items[Index]); end; procedure TListaAlbaranesCliente.ObtenerLista; var oSQL : TIBSQL; Albaran : TDatosAlbaranCliente; begin oSQL := TIBSQL.Create(nil); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Text := FSQL; try ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo; Prepare; ExecQuery; while not EOF do begin Albaran := TDatosAlbaranCliente.Create(FieldByName('CODIGO').AsString); FLista.Add(Albaran); Next; end; finally Close; Transaction := NIL; Free; end; end; end; end.