This repository has been archived on 2024-12-02. You can view files and clone it, but cannot push or open issues or pull requests.
FactuGES/BaseDatos/TablaEmpresas.pas

548 lines
15 KiB
ObjectPascal
Raw Permalink Normal View History

{
===============================================================================
Copyright (<EFBFBD>) 2002. Rodax Software.
===============================================================================
Los contenidos de este fichero son propiedad de Rodax Software titular del
copyright. Este fichero s<EFBFBD>lo podr<EFBFBD> ser copiado, distribuido y utilizado,
en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
acuerdo con los t<EFBFBD>rminos y condiciones establecidas en el acuerdo/contrato
bajo el que se suministra.
-----------------------------------------------------------------------------
Web: www.rodax-software.com
===============================================================================
Fecha primera versi<EFBFBD>n: 03-11-2002
Versi<EFBFBD>n actual: 1.0.0
Fecha versi<EFBFBD>n actual: 03-11-2002
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
===============================================================================
}
unit TablaEmpresas;
interface
uses
//Generales
SysUtils, Classes, Controls, IBSQL, cxGridDBTableView, cxCustomData, DB,
//Particulares
IBCustomDataSet, Graphics, IBQuery,
//Aplicacion
Framework, StrFunc, Entidades, Constantes, BaseDatos;
type
TDatosDireccionEmpresa = class(TObjeto)
protected
procedure ObtenerDatos; override;
public
CodigoEmpresa : Integer;
CodigoDireccion : Integer;
Calle : String;
Numero : String;
CodigoPostal : String;
Poblacion : String;
Provincia : String;
Telefono : String;
Fax : String;
procedure SalvarDatos;
procedure Eliminar;
end;
TListaDireccionesEmpresa = class(TListaObjetos)
private
FCodigoEmpresa : Integer;
function GetDireccion(Index: Integer): TDatosDireccionEmpresa;
protected
procedure ObtenerLista; override;
public
property Items[Index: Integer] : TDatosDireccionEmpresa read GetDireccion;
constructor Create(CodigoEmpresa : Integer);
destructor Destroy; override;
end;
TDatosEmpresa = class(TObjeto)
private
FDirecciones : TListaDireccionesEmpresa;
protected
procedure ObtenerDatos; override;
public
Codigo : Integer;
FechaAlta : String;
Usuario : String;
Nombre : String;
NifCif : String;
Correo : String;
Web : String;
NombreComercial : String;
CodigoTrimestre : String;
IvaDefecto : String;
ValidezDefecto : Variant;
IntervaloPagosCli : Real;
LibroDefecto : String;
Logotipo : TPicture;
property Direcciones : TListaDireccionesEmpresa read FDirecciones;
constructor Create; overload;
constructor Create(CodigoEmpresa : Integer); overload;
destructor Destroy; override;
end;
TdmTablaEmpresas = class(TDataModule)
private
procedure IniciarSQL;
public
sqlInsertar : TStrings;
sqlModificar : TStrings;
sqlConsultar : TStrings;
sqlEliminar : TStrings;
sqlGrid : TStrings;
function DarNuevoCodigo : String;
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
procedure InicializarGridEmpresas(var vGrid: TcxGridDBTableView);
end;
var
dmTablaEmpresas: TdmTablaEmpresas;
implementation
{$R *.DFM}
uses
Literales;
constructor TdmTablaEmpresas.Create (AOwner : TComponent);
begin
inherited;
sqlInsertar := TStringList.Create;
sqlModificar := TStringList.Create;
sqlConsultar := TStringList.Create;
sqlEliminar := TStringList.Create;
sqlGrid := TStringList.Create;
IniciarSQL;
end;
destructor TdmTablaEmpresas.Destroy;
begin
sqlInsertar.Free;
sqlModificar.Free;
sqlConsultar.Free;
sqlEliminar.Free;
sqlGrid.Free;
inherited;
end;
procedure TdmTablaEmpresas.IniciarSQL;
begin
with sqlInsertar do
begin
Add('INSERT INTO EMPRESAS (CODIGO, FECHAALTA, USUARIO, NOMBRE, NIFCIF, ');
Add('CORREO, WEB, LOGOTIPO, NOMBRECOMERCIAL, CODIGOTRIMESTRE, IVADEFECTO, ');
Add('VALIDEZDEFECTO, INTERVALOPAGOSCLI, LIBRODEFECTO) ');
Add('VALUES (:CODIGO, :FECHAALTA, :USUARIO, :NOMBRE, :NIFCIF, ');
Add(':CORREO, :WEB, :LOGOTIPO, :NOMBRECOMERCIAL, :CODIGOTRIMESTRE, :IVADEFECTO, ');
Add(':VALIDEZDEFECTO, :INTERVALOPAGOSCLI, :LIBRODEFECTO)');
end;
with sqlModificar do
begin
Add('UPDATE EMPRESAS SET');
Add('NOMBRE = :NOMBRE, ');
Add('NIFCIF = :NIFCIF, ');
{ Add('CALLE = :CALLE, ');
Add('NUMERO = :NUMERO, ');
Add('CODIGOPOSTAL = :CODIGOPOSTAL, ');
Add('POBLACION = :POBLACION, ');
Add('PROVINCIA = :PROVINCIA, ');
Add('TELEFONO = :TELEFONO, ');
Add('FAX = :FAX, ');}
Add('CORREO = :CORREO, ');
Add('WEB = :WEB, ');
Add('LOGOTIPO = :LOGOTIPO, ');
Add('NOMBRECOMERCIAL = :NOMBRECOMERCIAL, ');
Add('CODIGOTRIMESTRE = :CODIGOTRIMESTRE, ');
Add('IVADEFECTO = :IVADEFECTO, ');
Add('VALIDEZDEFECTO = :VALIDEZDEFECTO, ');
Add('INTERVALOPAGOSCLI = :INTERVALOPAGOSCLI, ');
Add('LIBRODEFECTO = :LIBRODEFECTO ');
Add('WHERE (CODIGO = :CODIGO)');
end;
with sqlEliminar do
begin
Add('delete from EMPRESAS ');
Add('where CODIGO = :CODIGO');
end;
with sqlConsultar do
begin
Add('select * from EMPRESAS ');
Add('where CODIGO = :CODIGO');
end;
with sqlGrid do
begin
Add('select CODIGO, NIFCIF, LOGOTIPO, NOMBRECOMERCIAL');
Add('from EMPRESAS ');
end;
end;
function TdmTablaEmpresas.DarNuevoCodigo : String;
var
oSQL : TIBSQL;
begin
Result := '0';
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select max(CODIGO) + 1 ');
SQL.Add('from EMPRESAS ');
try
Prepare;
ExecQuery;
if not esCadenaVacia(Fields[0].AsString) then
Result := Fields[0].AsString;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
procedure TdmTablaEmpresas.InicializarGridEmpresas (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.Visible := False;
{Columna NIFCIF}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'NIFCIF';
Columna.Caption := 'NIF/CIF';
Columna.Width := tamColNIFCIF;
Columna.Options.Filtering := False;
with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do
try
try
BeginUpdate;
Column := Columna;
FieldName := Columna.DataBinding.FieldName;
Format := 'Total: 0 empresas';
Kind := skCount;
finally
EndUpdate;
end;
except
DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1);
end;
{Columna NOMBRECOMERCIAL}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'NOMBRECOMERCIAL';
Columna.Caption := 'Nombre comercial';
Columna.Width := tamColNombre;
Columna.Options.Filtering := False;
Columna.SortOrder := soAscending;
end;
end;
{ TDatosEmpresa }
constructor TDatosEmpresa.Create(CodigoEmpresa: Integer);
begin
inherited Create;
Codigo := CodigoEmpresa;
// Recuperar los datos de la empresa
ObtenerDatos;
end;
constructor TDatosEmpresa.Create;
begin
inherited Create;
FDirecciones := TListaDireccionesEmpresa.Create(Codigo);
end;
destructor TDatosEmpresa.Destroy;
begin
if Assigned(FDirecciones) then
begin
FDirecciones.Free;
FDirecciones := NIL;
end;
inherited;
end;
procedure TDatosEmpresa.ObtenerDatos;
var
oSQL : TIBQuery;
Stream : TIBDSBlobStream;
begin
if EsCadenaVacia(Codigo) then
raise Exception.Create(msgCliFaltaCli);
oSQL := TIBQuery.Create(dmTablaEmpresas);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select * ');
SQL.Add('from EMPRESAS ');
SQL.Add('where CODIGO = :CODIGO');
ParamByName('CODIGO').AsInteger := Codigo;
try
Prepare;
Open;
// Compruebo si se han recuperado datos
if (RecordCount > 0) then
begin
Codigo := FieldByName('CODIGO').AsInteger;
FechaAlta := FieldByName('FECHAALTA').AsString;
Usuario := FieldByName('USUARIO').AsString;
Nombre := FieldByName('NOMBRE').AsString;
NifCif := FieldByName('NIFCIF').AsString;
Correo := FieldByName('CORREO').AsString;
Web := FieldByName('WEB').AsString;
NombreComercial := FieldByName('NOMBRECOMERCIAL').AsString;
CodigoTrimestre := FieldByName('CODIGOTRIMESTRE').AsString;
IvaDefecto := FieldByName('IVADEFECTO').AsString;
LibroDefecto := FieldByName('LIBRODEFECTO').AsString;
ValidezDefecto := FieldByName('VALIDEZDEFECTO').AsString;
IntervaloPagosCli := FieldByName('INTERVALOPAGOSCLI').AsFloat;
//En el caso de que tenga logotipo asociado
if not esCadenaVacia(FieldByName('LOGOTIPO').AsVariant) then
begin
Stream := (oSQL.CreateBlobStream(FieldByName('LOGOTIPO'), bmReadWrite) as TIBDSBlobStream);
Logotipo := TPicture.Create;
Logotipo.Bitmap.LoadFromStream(Stream);
Stream.Free;
end;
FDirecciones := TListaDireccionesEmpresa.Create(Codigo);
end;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
{ TDatosDireccionEmpresa }
procedure TDatosDireccionEmpresa.Eliminar;
var
oSQL : TIBQuery;
bEsInsercion : Boolean;
begin
if (EsCadenaVacia(CodigoEmpresa)) or (EsCadenaVacia(CodigoDireccion)) then
raise Exception.CreateFmt(msgEmpFaltaAlgo, ['el c<>digo']);
bEsInsercion := True;
oSQL := TIBQuery.Create(nil);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
with SQL do
begin
Add('delete from SUCURSALESEMPRESA ');
Add('where CODIGOEMPRESA = :CODIGOEMPRESA and ');
Add('CODIGO = :CODIGO ');
end;
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
ParamByName('CODIGO').AsInteger := CodigoDireccion;
try
Prepare;
ExecSQL;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
procedure TDatosDireccionEmpresa.ObtenerDatos;
begin
inherited;
//
end;
procedure TDatosDireccionEmpresa.SalvarDatos;
var
oSQL : TIBQuery;
bEsInsercion : Boolean;
begin
if (EsCadenaVacia(CodigoEmpresa)) or (EsCadenaVacia(CodigoDireccion)) then
raise Exception.CreateFmt(msgEmpFaltaAlgo, ['el c<>digo']);
bEsInsercion := True;
oSQL := TIBQuery.Create(nil);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
with SQL do
begin
Add('select CODIGO from SUCURSALESEMPRESA ');
Add('where CODIGOEMPRESA = :CODIGOEMPRESA and ');
Add('CODIGO = :CODIGO ');
end;
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
ParamByName('CODIGO').AsInteger := CodigoDireccion;
try
Prepare;
Open;
// Compruebo si se han recuperado datos
if (RecordCount > 0) then
bEsInsercion := False
else
bEsInsercion := True;
finally
Close;
end;
with SQL do
begin
Clear;
if bEsInsercion then begin
Add('insert into SUCURSALESEMPRESA ( ');
Add('CODIGOEMPRESA, CODIGO, FECHAALTA, USUARIO, ');
Add('CALLE, NUMERO, CODIGOPOSTAL, POBLACION, ');
Add('PROVINCIA, TELEFONO, FAX) ');
Add('values ( ');
Add(':CODIGOEMPRESA, :CODIGO, CURRENT_DATE, ');
Add('CURRENT_USER, :CALLE, :NUMERO, ');
Add(':CODIGOPOSTAL, :POBLACION, :PROVINCIA, ');
Add(':TELEFONO, :FAX) ');
end
else begin
Add('update SUCURSALESEMPRESA set ');
Add('CALLE = :CALLE, ');
Add('NUMERO = :NUMERO, ');
Add('CODIGOPOSTAL = :CODIGOPOSTAL, ');
Add('POBLACION = :POBLACION, ');
Add('PROVINCIA = :PROVINCIA, ');
Add('TELEFONO = :TELEFONO, ');
Add('FAX = :FAX ');
Add('WHERE (CODIGOEMPRESA = :CODIGOEMPRESA) AND (CODIGO = :CODIGO) ');
end;
end;
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
ParamByName('CODIGO').AsInteger := CodigoDireccion;
ParamByName('CALLE').AsString := Calle;
ParamByName('NUMERO').AsString := Numero;
ParamByName('CODIGOPOSTAL').AsString := CodigoPostal;
ParamByName('POBLACION').AsString := Poblacion;
ParamByName('PROVINCIA').AsString := Provincia;
ParamByName('TELEFONO').AsString := Telefono;
ParamByName('FAX').AsString := Fax;
try
Prepare;
ExecSQL;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
{ TListaDireccionesEmpresa }
constructor TListaDireccionesEmpresa.Create(CodigoEmpresa: Integer);
begin
inherited Create;
FCodigoEmpresa := CodigoEmpresa;
ObtenerLista;
end;
destructor TListaDireccionesEmpresa.Destroy;
begin
inherited;
end;
function TListaDireccionesEmpresa.GetDireccion(
Index: Integer): TDatosDireccionEmpresa;
begin
Result := TDatosDireccionEmpresa(FLista.Items[Index]);
end;
procedure TListaDireccionesEmpresa.ObtenerLista;
var
oSQL : TIBQuery;
FDireccion : TDatosDireccionEmpresa;
begin
if EsCadenaVacia(FCodigoEmpresa) then
raise Exception.CreateFmt(msgEmpFaltaAlgo, ['el c<>digo']);
oSQL := TIBQuery.Create(nil);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select CODIGO, CALLE, NUMERO, CODIGOPOSTAL, POBLACION, ');
SQL.Add('PROVINCIA, TELEFONO, FAX ');
SQL.Add('from SUCURSALESEMPRESA ');
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA ');
SQL.Add('order by CODIGO');
ParamByName('CODIGOEMPRESA').AsInteger := FCodigoEmpresa;
try
Prepare;
Open;
// Compruebo si se han recuperado datos
while not EOF do
begin
FDireccion := TDatosDireccionEmpresa.Create;
with FDireccion do
begin
CodigoEmpresa := FCodigoEmpresa;
CodigoDireccion := FieldByName('CODIGO').AsInteger;
Calle := FieldByName('CALLE').AsString;
Numero := FieldByName('NUMERO').AsString;
CodigoPostal := FieldByName('CODIGOPOSTAL').AsString;
Poblacion := FieldByName('POBLACION').AsString;
Provincia := FieldByName('PROVINCIA').AsString;
Telefono := FieldByName('TELEFONO').AsString;
Fax := FieldByName('FAX').AsString;
end;
Add(FDireccion);
Next;
end;
finally
Close;
Free;
end;
end;
end;
end.