{ =============================================================================== Copyright (©) 2002. 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: 26-01-2003 Versión actual: 1.0.1 Fecha versión actual: 16-04-2003 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- 16-04-2003 En el grid de pagos a proveedor se ha puesto visible la columna de tipo de pago. =============================================================================== } unit TablaPagosProveedor; interface uses //Generales SysUtils, Classes, Controls, IBSQL, cxGridDBTableView, cxCustomData, DB, //Particulares IBCustomDataSet, //Aplicacion Framework, StrFunc, Entidades, Constantes, BaseDatos, RdxEmpresaActiva, // Contador Contadores, RdxGestorContadores; type {Es el tipo padre de pagos de cliente y proveedor que solo difieren codigoCliente o codigoProveedor} TDatosPago = class(TPersistent) public Codigo : String; FechaAlta : String; Usuario : String; FechaPago : String; TipoLibro : String; NumEntrada : String; TipoPago : String; Importe : Double; FormaPago : String; Descripcion : 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; Correo : String; end; type TDatosPagoProveedor = class(TDatosPago) public CodigoProveedor : String; end; type TdmTablaPagosProveedor = class(TDataModule) private procedure IniciarSQL; protected public sqlInsertar : TStrings; sqlModificar : TStrings; sqlConsultar : TStrings; sqlEliminar : TStrings; sqlGrid : TStrings; //Metodos que llamaran a contador function DarNuevoCodigo : String; function IncrementarCodigo: boolean; function InsertarContador : boolean; function ValidarCodigo(Codigo : String) : Boolean; function FormatearCodigo(Codigo : String) : String; constructor Create (AOwner : TComponent); override; destructor Destroy; override; function DarDatosPagoProveedor(PagoProveedor : TDatosPagoProveedor) : Boolean; function DarPagoProveedorMax : String; function DarPagoProveedorMin : String; procedure InicializarGridPagosProveedores(var vGrid: TcxGridDBTableView); procedure InicializarTablaPagosProveedores(Tabla: TPTabla); end; var dmTablaPagosProveedor: TdmTablaPagosProveedor; implementation {$R *.DFM} uses TablaEmpresas; //////////////////////////////////////////////////////////////////////////////// // PRIVATE //////////////////////////////////////////////////////////////////////////////// procedure TdmTablaPagosProveedor.IniciarSQL; begin with sqlInsertar do begin Add('INSERT INTO PAGOSPROVEEDOR (CODIGOEMPRESA, CODIGO, FECHAALTA, USUARIO, FECHAPAGO, '); Add('TIPOLIBRO, NUMENTRADA, TIPOPAGO, FORMAPAGO, DESCRIPCION, IMPORTE, CODIGOPROVEEDOR, NIFCIF, NOMBRE, CALLE, '); Add('NUMERO, PISO, CODIGOPOSTAL, POBLACION, PROVINCIA, TELEFONO1, TELEFONO2, '); Add('MOVIL1, MOVIL2, FAX, CORREO) '); Add('VALUES (:CODIGOEMPRESA, :CODIGO, :FECHAALTA, :USUARIO, :FECHAPAGO, '); Add(':TIPOLIBRO, :NUMENTRADA, :TIPOPAGO, :FORMAPAGO, :DESCRIPCION, :IMPORTE, :CODIGOPROVEEDOR, :NIFCIF, :NOMBRE, :CALLE, '); Add(':NUMERO, :PISO, :CODIGOPOSTAL, :POBLACION, :PROVINCIA, :TELEFONO1, :TELEFONO2, '); Add(':MOVIL1, :MOVIL2, :FAX, :CORREO) '); end; with sqlModificar do begin Add('update PAGOSPROVEEDOR set '); Add('FECHAPAGO = :FECHAPAGO, '); Add('TIPOLIBRO = :TIPOLIBRO, '); Add('NUMENTRADA = :NUMENTRADA, '); Add('TIPOPAGO = :TIPOPAGO, '); Add('FORMAPAGO = :FORMAPAGO, '); Add('DESCRIPCION = :DESCRIPCION, '); Add('IMPORTE = :IMPORTE, '); Add('CODIGOPROVEEDOR = :CODIGOPROVEEDOR, '); 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('CORREO = :CORREO '); Add('where (CODIGOEMPRESA = :CODIGOEMPRESA'); Add('and CODIGO = :CODIGO)'); end; with sqlEliminar do begin Add('DELETE FROM PAGOSPROVEEDOR '); Add('where (CODIGOEMPRESA = :CODIGOEMPRESA'); Add('and CODIGO = :CODIGO)'); end; with sqlConsultar do begin Add('SELECT * FROM PAGOSPROVEEDOR '); Add('where (CODIGOEMPRESA = :CODIGOEMPRESA'); Add('and CODIGO = :CODIGO)'); end; with sqlGrid do begin Add('SELECT CODIGO, TIPOPAGO, CODIGOPROVEEDOR, NOMBRE, TELEFONO1, FECHAPAGO, FORMAPAGO, IMPORTE '); Add('FROM PAGOSPROVEEDOR '); Add('where (CODIGOEMPRESA = :CODIGOEMPRESA)'); end; end; //////////////////////////////////////////////////////////////////////////////// // PUBLIC //////////////////////////////////////////////////////////////////////////////// constructor TdmTablaPagosProveedor.Create (AOwner : TComponent); begin inherited; sqlInsertar := TStringList.Create; sqlModificar := TStringList.Create; sqlConsultar := TStringList.Create; sqlEliminar := TStringList.Create; sqlGrid := TStringList.Create; IniciarSQL; end; destructor TdmTablaPagosProveedor.Destroy; begin sqlInsertar.Free; sqlModificar.Free; sqlConsultar.Free; sqlEliminar.Free; sqlGrid.Free; inherited; end; function TdmTablaPagosProveedor.DarDatosPagoProveedor(PagoProveedor: TDatosPagoProveedor): Boolean; var oSQL : TIBSQL; begin Result := False; if EsCadenaVacia(PagoProveedor.Codigo) then Exit; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select * '); SQL.Add('from PAGOSPROVEEDOR '); SQL.Add('where (CODIGOEMPRESA = :CODIGOEMPRESA'); SQL.Add('and CODIGO = :CODIGO)'); try ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo; ParamByName('CODIGO').AsString := PagoProveedor.Codigo; Prepare; ExecQuery; // Compruebo si se han recuperado datos if (RecordCount > 0) then begin with PagoProveedor do begin FechaAlta := FieldByName('FECHAALTA').AsString; Usuario := FieldByName('USUARIO').AsString; FechaPago := FieldByName('FECHAPAGO').AsString; TipoLibro := FieldByName('TIPOLIBRO').AsString; NumEntrada := FieldByName('NUMENTRADA').AsString; TipoPago := FieldByName('TIPOPAGO').AsString; Importe := FieldByName('IMPORTE').AsDouble; FormaPago := FieldByName('FORMAPAGO').AsString; Descripcion := FieldByName('DESCRIPCION').AsString; CodigoProveedor := FieldByName('CODIGOPROVEEDOR').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('MOVIL1').AsString; Correo := FieldByName('MOVIL2').AsString; Result := True; end; end; finally Close; Transaction := NIL; Free; end; end; end; function TdmTablaPagosProveedor.DarPagoProveedorMax: String; var oSQL : TIBSQL; begin Result := ''; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select max(CODIGO) '); SQL.Add('from PAGOSPROVEEDOR '); SQL.Add('where (CODIGOEMPRESA = :CODIGOEMPRESA)'); try ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo; Prepare; ExecQuery; Result := Fields[0].AsString; finally Close; Transaction := NIL; Free; end; end; end; function TdmTablaPagosProveedor.DarPagoProveedorMin: String; var oSQL : TIBSQL; begin Result := ''; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select min(CODIGO) '); SQL.Add('from PAGOSPROVEEDOR '); SQL.Add('where (CODIGOEMPRESA = :CODIGOEMPRESA)'); try ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo; Prepare; ExecQuery; Result := Fields[0].AsString; finally Close; Transaction := NIL; Free; end; end; end; procedure TdmTablaPagosProveedor.InicializarGridPagosProveedores (var vGrid: TcxGridDBTableView); var Columna : TcxGridDBColumn; begin with vGrid do begin OptionsView.Footer := True; {Columna CODIGO} Columna := CreateColumn; Columna.DataBinding.FieldName := 'CODIGO'; Columna.Caption := 'Código'; Columna.Width := tamColCodigo; Columna.Options.Filtering := False; Columna.SortOrder := soDescending; with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do try try BeginUpdate; Column := Columna; FieldName := Columna.DataBinding.FieldName; Format := 'Total: 0 pagos'; Kind := skCount; finally EndUpdate; end; except DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1); end; {Columna TIPOPAGO} Columna := CreateColumn; Columna.DataBinding.FieldName := 'TIPOPAGO'; Columna.Caption := 'Tipo pago'; Columna.Width := tamColCodigo; Columna.Options.Filtering := False; Columna.Visible := True; {Columna FECHAPAGO} Columna := CreateColumn; Columna.DataBinding.FieldName := 'FECHAPAGO'; Columna.Caption := 'Fecha pago'; Columna.Width := tamColFecha; Columna.Options.Filtering := False; {Columna FORMAPAGO} Columna := CreateColumn; Columna.DataBinding.FieldName := 'FORMAPAGO'; Columna.Caption := 'Forma de pago'; Columna.Width := tamColFormaPago; Columna.Options.Filtering := False; {Columna NOMBRE} Columna := CreateColumn; Columna.DataBinding.FieldName := 'NOMBRE'; Columna.Caption := 'Nombre de cliente'; Columna.Width := tamColNombre; Columna.Options.Filtering := False; {Columna TELEFONO1} Columna := CreateColumn; Columna.DataBinding.FieldName := 'TELEFONO1'; Columna.Caption := 'Telefono'; Columna.Width := tamColTelefono; Columna.Options.Filtering := False; {Columna IMPORTE} Columna := CreateColumn; Columna.DataBinding.FieldName := 'IMPORTE'; Columna.Caption := 'Importe'; Columna.Width := tamColImporte; Columna.Options.Filtering := False; end; end; procedure TdmTablaPagosProveedor.InicializarTablaPagosProveedores(Tabla: TPTabla); begin with Tabla^.Fields do begin if FindField('IMPORTE') <> NIL then with (FieldByName('IMPORTE') as TIBBCDField) do begin DisplayFormat := DISPLAY_EUROS2; EditFormat := EDIT_EUROS2; end; end; end; function TdmTablaPagosProveedor.DarNuevoCodigo: String; begin Result := GestorContadores.darNuevoCodigo(contPagosProveedor); end; function TdmTablaPagosProveedor.FormatearCodigo(Codigo: String): String; begin Result := GestorContadores.formatearCodigo(contPagosProveedor, Codigo); end; function TdmTablaPagosProveedor.IncrementarCodigo: boolean; begin Result := GestorContadores.IncrementarValor(contPagosProveedor); end; function TdmTablaPagosProveedor.InsertarContador: boolean; begin Result := GestorContadores.InsertarContador(contPagosProveedor); end; function TdmTablaPagosProveedor.ValidarCodigo(Codigo: String): Boolean; begin Result := GestorContadores.validarCodigo(contPagosProveedor, Codigo); end; end.