git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES/trunk@4 3f40d355-893c-4141-8e64-b1d9be72e7e7
1295 lines
37 KiB
ObjectPascal
1295 lines
37 KiB
ObjectPascal
{
|
|
===============================================================================
|
|
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: 07-06-2003
|
|
===============================================================================
|
|
Modificaciones:
|
|
|
|
Fecha Comentarios
|
|
---------------------------------------------------------------------------
|
|
07-06-2003 Revisadas las sentencias SQL para que no meta valores directos
|
|
en el campo 'TIPOENTRADA'.
|
|
===============================================================================
|
|
}
|
|
|
|
unit TablaLibros;
|
|
|
|
interface
|
|
|
|
uses
|
|
//Generales
|
|
SysUtils, Classes, Controls, IBSQL, cxGridDBTableView, cxCustomData, DB,
|
|
//Particulares
|
|
IBCustomDataSet, cxImageComboBox, Variants, RdxFrame, TablaPagosProveedor,
|
|
|
|
cxDropDownEdit,
|
|
|
|
//Aplicacion
|
|
Framework, StrFunc, Entidades, Constantes, BaseDatos, RdxEmpresaActiva,
|
|
|
|
// Contador
|
|
Contadores, RdxGestorContadores, ImgList;
|
|
|
|
type
|
|
//TIPOSLIBRO
|
|
//Tipo enumerado correspondiente a los tipos de libro que manejara la aplicacion
|
|
TTiposLibro = (ttlCaja, ttlBanco);
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
//TListaLibros
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
TListaComboTiposLibro = (tltDefecto, tltTodos);
|
|
TDatosLibro = class(TPersistent)
|
|
public
|
|
Codigo : String;
|
|
Nombre : String;
|
|
Predeterminado : Boolean;
|
|
end;
|
|
|
|
TListaLibros = class(TListaObjetos)
|
|
private
|
|
FSQL : TStringList;
|
|
|
|
function GetDatosLibro(Index: Integer): TDatosLibro;
|
|
procedure inicializarSQL(TipoLista:TListaComboTiposLibro);
|
|
protected
|
|
procedure AssignTo(Dest: TPersistent); override;
|
|
procedure ObtenerListaBD; overload;
|
|
procedure ObtenerLista; overload; override;
|
|
public
|
|
property Items[Index: Integer] : TDatosLibro read GetDatosLibro;
|
|
constructor Create(TipoLista: TListaComboTiposLibro); overload;
|
|
destructor Destroy; override;
|
|
|
|
function cargarLista(Objcbx: TcxComboBox): Integer;
|
|
end;
|
|
|
|
TDatosDetalleLibro = class(TPersistent)
|
|
public
|
|
CodigoEmpresa : Integer;
|
|
TipoLibro : String;
|
|
NumEntrada : String;
|
|
TipoEntrada : String;
|
|
FechaAlta : String;
|
|
Usuario : String;
|
|
FechaEntrada : String;
|
|
Descripcion : String;
|
|
Cuantia : Double;
|
|
ImporteAnt : Double;
|
|
ImportePos : Double;
|
|
end;
|
|
|
|
type
|
|
TdmTablaLibros = class(TDataModule)
|
|
imgGridLibros: TImageList;
|
|
private
|
|
procedure IniciarSQL;
|
|
|
|
function darTipoLibro(TipoLibro: TTiposLibro): String;
|
|
function darDescripcionLibro(TipoLibro: TTiposLibro): String; overload;
|
|
function existenLibros(CodigoEmpresa: Variant): Boolean;
|
|
function insertarLibro(TipoLibro: TTiposLibro; CodigoEmpresa: Variant): Boolean;
|
|
function insertarLibros(CodigoEmpresa: Variant): Boolean;
|
|
|
|
public
|
|
//DETALLES LIBRO
|
|
sqlInsertarDetalleLibro : TStrings;
|
|
sqlModificarDetalleLibro : TStrings;
|
|
sqlConsultarDetalleLibro : TStrings;
|
|
sqlEliminarDetalleLibro : TStrings;
|
|
sqlGridDetallesLibro : TStrings;
|
|
sqlConsultarLibros : TStrings;
|
|
|
|
//Metodos que llamaran a contador de CAJA
|
|
function DarNuevoCodigoCaja : String;
|
|
function IncrementarCodigoCaja: boolean;
|
|
function InsertarContadorCaja : boolean;
|
|
function ValidarCodigoCaja(Codigo : String) : Boolean;
|
|
function FormatearCodigoCaja(Codigo : String) : String;
|
|
|
|
//Metodos que llamaran a contador de BANCO
|
|
function DarNuevoCodigoBanco : String;
|
|
function IncrementarCodigoBanco: boolean;
|
|
function InsertarContadorBanco : boolean;
|
|
function ValidarCodigoBanco(Codigo : String) : Boolean;
|
|
function FormatearCodigoBanco(Codigo : String) : String;
|
|
|
|
function darNumEntrada(psTipoLibro: String): Variant;
|
|
function incrementarNumEntrada(psTipoLibro: String): Boolean;
|
|
|
|
constructor Create (AOwner : TComponent); override;
|
|
destructor Destroy; override;
|
|
|
|
//LIBRO
|
|
function crearLibros(CodigoEmpresa: Variant): boolean;
|
|
// function darCodigoLibro(Descripcion : String) : String;
|
|
|
|
|
|
function darLibros: TStrings; overload;
|
|
procedure darLibros(var LibroTipo, TipoLibro: TStringList); overload;
|
|
procedure darLibros(var TipoLibro: TStringList); overload;
|
|
function darUltimoImportePos(TipoLibro: String): Double;
|
|
|
|
//DETALLES LIBRO
|
|
function existeDetalleLibro(TipoLibro, NumEntrada: String): Boolean;
|
|
function darDatosDetalleLibro(var Datos: TDatosDetalleLibro): Boolean;
|
|
function CerrarLibro(TipoLibro: String): Boolean;
|
|
function EliminarDetallesLibro(TipoLibro: String): Boolean;
|
|
function AnadirDetalleLibro(Datos: TDatosDetalleLibro): Boolean;
|
|
|
|
function anadirEntradaLibro(Entidad: TRdxEntidad; Modo: TRdxModo; Datos: TDatosPago) : Boolean;
|
|
function anularEntradaLibro(Entidad: TRdxEntidad; Modo: TRdxModo; Datos: TDatosPago) : Boolean;
|
|
|
|
procedure InicializarGridDetallesLibro(var vGrid: TcxGridDBTableView);
|
|
procedure InicializarTablaDetallesLibro(Tabla: TPTabla);
|
|
end;
|
|
|
|
var
|
|
dmTablaLibros: TdmTablaLibros;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
|
|
uses Mensajes, Literales, TablaEmpresas;
|
|
|
|
const
|
|
|
|
CaptionsTiposLibro : array [TTiposLibro] of string = (
|
|
('C'), //ttlCaja
|
|
('B') //ttlBanco
|
|
);
|
|
|
|
CaptionsDescripcionLibro : array [TTiposLibro] of string = (
|
|
('CAJA'), //ttlCaja
|
|
('BANCO') //ttlBanco
|
|
);
|
|
|
|
|
|
constructor TdmTablaLibros.Create (AOwner : TComponent);
|
|
begin
|
|
inherited;
|
|
//DETALLES LIBRO
|
|
sqlInsertarDetalleLibro := TStringList.Create;
|
|
sqlModificarDetalleLibro := TStringList.Create;
|
|
sqlConsultarDetalleLibro := TStringList.Create;
|
|
sqlEliminarDetalleLibro := TStringList.Create;
|
|
sqlGridDetallesLibro := TStringList.Create;
|
|
sqlConsultarLibros := TStringList.Create;
|
|
IniciarSQL;
|
|
end;
|
|
|
|
destructor TdmTablaLibros.Destroy;
|
|
begin
|
|
//DETALLES LIBRO
|
|
sqlInsertarDetalleLibro.Free;
|
|
sqlModificarDetalleLibro.Free;
|
|
sqlConsultarDetalleLibro.Free;
|
|
sqlEliminarDetalleLibro.Free;
|
|
sqlGridDetallesLibro.Free;
|
|
sqlConsultarLibros.Free;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TdmTablaLibros.IniciarSQL;
|
|
begin
|
|
with sqlInsertarDetalleLibro do
|
|
begin
|
|
Add('INSERT INTO DETALLESLIBROS (CODIGOEMPRESA, TIPOLIBRO, NUMENTRADA, TIPOENTRADA, FECHAALTA, USUARIO, ');
|
|
Add('FECHAENTRADA, DESCRIPCION, CUANTIA, IMPORTEANT, IMPORTEPOS) ');
|
|
Add('VALUES (:CODIGOEMPRESA, :TIPOLIBRO, :NUMENTRADA, :TIPOENTRADA, :FECHAALTA, :USUARIO, ');
|
|
Add(':FECHAENTRADA, :DESCRIPCION, :CUANTIA, :IMPORTEANT, :IMPORTEPOS) ');
|
|
end;
|
|
|
|
with sqlModificarDetalleLibro do
|
|
begin
|
|
Add('update DETALLESLIBROS set ');
|
|
Add('DESCRIPCION = :DESCRIPCION ');
|
|
Add('where (CODIGOEMPRESA = :CODIGOEMPRESA ');
|
|
Add('and TIPOLIBRO = :TIPOLIBRO ');
|
|
Add('and NUMENTRADA = :NUMENTRADA)');
|
|
end;
|
|
|
|
with sqlConsultarDetalleLibro do
|
|
begin
|
|
Add('SELECT * FROM DETALLESLIBROS ');
|
|
Add('where (CODIGOEMPRESA = :CODIGOEMPRESA ');
|
|
Add('and TIPOLIBRO = :TIPOLIBRO ');
|
|
Add('and NUMENTRADA = :NUMENTRADA)');
|
|
end;
|
|
|
|
with sqlEliminarDetalleLibro do
|
|
begin
|
|
Add('DELETE FROM DETALLESLIBROS ');
|
|
Add('where (CODIGOEMPRESA = :CODIGOEMPRESA ');
|
|
Add('and TIPOLIBRO = :TIPOLIBRO ');
|
|
Add('AND NUMENTRADA = :NUMENTRADA)');
|
|
end;
|
|
|
|
with sqlGridDetallesLibro do
|
|
begin
|
|
Add('SELECT CODIGOEMPRESA, TIPOLIBRO, NUMENTRADA, TIPOENTRADA, FECHAENTRADA, DESCRIPCION, ');
|
|
Add('CUANTIA, IMPORTEANT, IMPORTEPOS ');
|
|
Add('FROM DETALLESLIBROS ');
|
|
Add('WHERE CODIGOEMPRESA = :CODIGOEMPRESA ');
|
|
Add('AND TIPOLIBRO = :TIPOLIBRO ');
|
|
end;
|
|
|
|
with sqlConsultarLibros do
|
|
begin
|
|
Add('select TIPO, DESCRIPCION ');
|
|
Add('from LIBROS ');
|
|
Add('where CODIGOEMPRESA = :CODIGOEMPRESA ');
|
|
Add('order by TIPO');
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaLibros.DarNuevoCodigoCaja : String;
|
|
begin
|
|
Result := GestorContadores.darNuevoCodigo(contCaja);
|
|
end;
|
|
|
|
function TdmTablaLibros.DarNuevoCodigoBanco : String;
|
|
begin
|
|
Result := GestorContadores.darNuevoCodigo(contBanco);
|
|
end;
|
|
|
|
function TdmTablaLibros.IncrementarCodigoCaja : boolean;
|
|
begin
|
|
Result := GestorContadores.IncrementarValor(contCaja);
|
|
end;
|
|
|
|
function TdmTablaLibros.IncrementarCodigoBanco : boolean;
|
|
begin
|
|
Result := GestorContadores.IncrementarValor(contBanco);
|
|
end;
|
|
|
|
function TdmTablaLibros.FormatearCodigoCaja(Codigo : String) : String;
|
|
begin
|
|
Result := GestorContadores.formatearCodigo(contCaja, Codigo);
|
|
end;
|
|
|
|
function TdmTablaLibros.FormatearCodigoBanco(Codigo : String) : String;
|
|
begin
|
|
Result := GestorContadores.formatearCodigo(contBanco, Codigo);
|
|
end;
|
|
|
|
function TdmTablaLibros.ValidarCodigoCaja(Codigo: String): Boolean;
|
|
begin
|
|
Result := GestorContadores.validarCodigo(contCaja, Codigo);
|
|
end;
|
|
|
|
function TdmTablaLibros.ValidarCodigoBanco(Codigo: String): Boolean;
|
|
begin
|
|
Result := GestorContadores.validarCodigo(contBanco, Codigo);
|
|
end;
|
|
|
|
function TdmTablaLibros.InsertarContadorCaja: boolean;
|
|
begin
|
|
Result := GestorContadores.InsertarContador(contCaja);
|
|
end;
|
|
|
|
function TdmTablaLibros.InsertarContadorBanco: boolean;
|
|
begin
|
|
Result := GestorContadores.InsertarContador(contBanco);
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
//LIBRO
|
|
////////////////////////////////////////////////////////////////////
|
|
{
|
|
function TdmTablaLibros.darCodigoLibro(Descripcion: String): String;
|
|
var
|
|
oSQL : TIBSQL;
|
|
|
|
begin
|
|
Result := '';
|
|
|
|
if EsCadenaVacia(Descripcion) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select CODIGO ');
|
|
SQL.Add('from LIBROS ');
|
|
SQL.Add('where DESCRIPCION = :DESCRIPCION');
|
|
ParamByName('DESCRIPCION').AsString := Descripcion;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := Fields[0].AsString;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
}
|
|
function TdmTablaLibros.darLibros: TStrings;
|
|
var
|
|
oSQL : TIBSQL;
|
|
Lista : TStringList;
|
|
begin
|
|
oSQL := TIBSQL.Create(Self);
|
|
Lista := TStringList.Create;
|
|
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select DESCRIPCION from LIBROS');
|
|
SQL.Add(' where CODIGOEMPRESA = :CODIGOEMPRESA');
|
|
SQL.Add(' order by DESCRIPCION');
|
|
|
|
try
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
Prepare;
|
|
ExecQuery;
|
|
while not EOF do begin
|
|
Lista.Append(Fields[0].AsString);
|
|
Next;
|
|
end;
|
|
result := Lista;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TdmTablaLibros.darLibros(var LibroTipo, TipoLibro: TStringList);
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
if (LibroTipo = nil) or (TipoLibro = nil) then
|
|
Exit;
|
|
|
|
//Limpiamos los valores que tubieran antes (por si acaso)
|
|
LibroTipo.Clear;
|
|
TipoLibro.Clear;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
|
|
SQL.Add('select TIPO, DESCRIPCION from LIBROS ');
|
|
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA ');
|
|
SQL.Add('order by TIPO');
|
|
try
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
Prepare;
|
|
ExecQuery;
|
|
while not EOF do
|
|
begin
|
|
LibroTipo.Values[FieldByName('DESCRIPCION').AsString] := FieldByName('TIPO').AsString;
|
|
TipoLibro.Values[FieldByName('TIPO').AsString] := FieldByName('DESCRIPCION').AsString;
|
|
Next;
|
|
end;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TdmTablaLibros.darLibros(var TipoLibro: TStringList);
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
if (TipoLibro = nil) then
|
|
Exit;
|
|
|
|
//Limpiamos los valores que tubieran antes (por si acaso)
|
|
TipoLibro.Clear;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
|
|
SQL.Add('select TIPO, DESCRIPCION from LIBROS ');
|
|
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA ');
|
|
SQL.Add('order by TIPO');
|
|
try
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
Prepare;
|
|
ExecQuery;
|
|
while not EOF do
|
|
begin
|
|
TipoLibro.Values[FieldByName('TIPO').AsString] := FieldByName('DESCRIPCION').AsString;
|
|
Next;
|
|
end;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaLibros.darUltimoImportePos(TipoLibro: String): Double;
|
|
var
|
|
oSQL : TIBSQL;
|
|
|
|
begin
|
|
Result := -1;
|
|
|
|
if EsCadenaVacia(TipoLibro) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('SELECT IMPORTEPOS ');
|
|
SQL.Add('FROM DETALLESLIBROS ');
|
|
SQL.Add('WHERE CODIGOEMPRESA = :CODIGOEMPRESA ');
|
|
SQL.Add('AND TIPOLIBRO = :TIPOLIBRO ');
|
|
SQL.Add('AND NUMENTRADA = (SELECT MAX(NUMENTRADA) ');
|
|
SQL.Add('FROM DETALLESLIBROS ');
|
|
SQL.Add('WHERE CODIGOEMPRESA = :CODIGOEMPRESA');
|
|
SQL.Add('AND TIPOLIBRO = :TIPOLIBRO)');
|
|
|
|
try
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
ParamByName('TIPOLIBRO').AsString := TipoLibro;
|
|
Prepare;
|
|
ExecQuery;
|
|
if RecordCount <> 0 then
|
|
Result := Fields[0].AsDouble
|
|
else
|
|
Result := 0;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
//DETALLE LIBRO
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
function TdmTablaLibros.existeDetalleLibro(TipoLibro, NumEntrada: String): Boolean;
|
|
{Comprueba si existe un articulo en un determinado almacen, pasandole por
|
|
parametro el codigo de articulo y el del almacen, devuelve true o false
|
|
dependiendo si existe o no}
|
|
var
|
|
oSQL : TIBSQL;
|
|
Codigo : String;
|
|
begin
|
|
Result := False;
|
|
if (Length(Trim(TipoLibro)) = 0) or (Length(Trim(NumEntrada)) = 0) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select TIPOLIBRO ');
|
|
SQL.Add('from DETALLESLIBROS ');
|
|
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA ');
|
|
SQL.Add('and TIPOLIBRO = :TIPOLIBRO ');
|
|
SQL.Add('and NUMENTRADA = :NUMENTRADA ');
|
|
|
|
try
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
ParamByName('TIPOLIBRO').AsString := TipoLibro;
|
|
ParamByName('NUMENTRADA').AsString := NumEntrada;
|
|
Prepare;
|
|
ExecQuery;
|
|
|
|
Codigo := FieldByName('TIPOLIBRO').AsString;
|
|
Result := (TipoLibro = Codigo);
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaLibros.darDatosDetalleLibro(var Datos: TDatosDetalleLibro): Boolean;
|
|
{Devuelve los datos del articulo pasado por parametro si este existe en el
|
|
almacen correspondiente, en caso de no existir devuelve false y rellena
|
|
dichos datos con 0,0 y 1000 respectibamente}
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
if (length(Datos.TipoLibro)= 0) or (length(Datos.NumEntrada)= 0) then
|
|
begin
|
|
//Para que cuando un articulo libre que no encuentra las existencias en
|
|
//el almacen esten a cero
|
|
Datos.Cuantia := 0;
|
|
Exit;
|
|
end;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select * ');
|
|
SQL.Add('from DETALLESLIBROS ');
|
|
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA ');
|
|
SQL.Add('and TIPOLIBRO = :TIPOLIBRO ');
|
|
SQL.Add('and NUMENTRADA = :NUMENTRADA ');
|
|
|
|
try
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
ParamByName('TIPOLIBRO').AsString := Datos.TipoLibro;
|
|
ParamByName('NUMENTRADA').AsString := Datos.NumEntrada;
|
|
Prepare;
|
|
ExecQuery;
|
|
|
|
if (RecordCount > 0) then
|
|
begin
|
|
Datos.TipoEntrada := FieldByName('TIPOENTRADA').AsString;
|
|
Datos.FechaAlta := FieldByName('FECHAALTA').AsString;
|
|
Datos.Usuario := FieldByName('USUARIO').AsString;
|
|
Datos.FechaEntrada := FieldByName('FECHAENTRADA').AsString;
|
|
Datos.Descripcion := FieldByName('DESCRIPCION').AsString;
|
|
Datos.Cuantia := FieldByName('CUANTIA').AsDouble;
|
|
Datos.ImporteAnt := FieldByName('IMPORTEANT').AsDouble;
|
|
Datos.ImportePos := FieldByName('IMPORTEPOS').AsDouble;
|
|
Result := True;
|
|
end
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaLibros.EliminarDetallesLibro(TipoLibro: String): Boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('delete from DETALLESLIBRO ');
|
|
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA ');
|
|
SQL.Add('and TIPOLIBRO = :TIPOLIBRO ');
|
|
|
|
try
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
ParamByName('TIPOLIBRO').AsString := TipoLibro;
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := True;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TdmTablaLibros.InicializarGridDetallesLibro(var vGrid: TcxGridDBTableView);
|
|
var
|
|
Columna : TcxGridDBColumn;
|
|
ItemAux : TcxImageComboBoxItem;
|
|
begin
|
|
|
|
with vGrid do begin
|
|
OptionsView.Footer := True;
|
|
|
|
{Columna TIPOLIBRO}
|
|
Columna := CreateColumn;
|
|
Columna.DataBinding.FieldName := 'TIPOLIBRO';
|
|
Columna.Caption := 'Libro';
|
|
Columna.Width := tamColCodigo;
|
|
Columna.Options.Filtering := False;
|
|
Columna.Visible := False;
|
|
|
|
{Columna FECHAENTRADA}
|
|
Columna := CreateColumn;
|
|
Columna.DataBinding.FieldName := 'FECHAENTRADA';
|
|
Columna.Caption := 'Fecha entrada';
|
|
Columna.Width := tamColFechaEntrada;
|
|
Columna.Options.Filtering := False;
|
|
|
|
with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do
|
|
try
|
|
try
|
|
BeginUpdate;
|
|
Column := Columna;
|
|
FieldName := Columna.DataBinding.FieldName;
|
|
Format := 'Total: 0 entradas';
|
|
Kind := skCount;
|
|
finally
|
|
EndUpdate;
|
|
end;
|
|
except
|
|
DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1);
|
|
end;
|
|
|
|
{Columna NUMENTRADA}
|
|
Columna := CreateColumn;
|
|
Columna.DataBinding.FieldName := 'NUMENTRADA';
|
|
Columna.Caption := 'Nº entrada';
|
|
Columna.Width := tamColNumEntrada;
|
|
Columna.Options.Filtering := False;
|
|
Columna.SortOrder := soDescending;
|
|
|
|
{Columna TIPOENTRADA}
|
|
Columna := CreateColumn;
|
|
Columna.DataBinding.FieldName := 'TIPOENTRADA';
|
|
Columna.Caption := 'Tipo';
|
|
Columna.Width := tamColTipoEntrada;
|
|
Columna.Options.Filtering := False;
|
|
Columna.Visible := True;
|
|
Columna.PropertiesClassName := 'TcxImageComboBoxProperties';
|
|
with TcxImageComboBoxProperties(Columna.Properties) do
|
|
begin
|
|
DropDownRows := 2;
|
|
Images := imgGridLibros;
|
|
|
|
with TcxImageComboBoxItem(Items.Add) do
|
|
begin
|
|
ImageIndex := 0;
|
|
Value := CTE_ENT;
|
|
Description := 'Entrada';
|
|
end;
|
|
with TcxImageComboBoxItem(Items.Add) do
|
|
begin
|
|
ImageIndex := 1;
|
|
Value := CTE_SAL;
|
|
Description := 'Salida';
|
|
end;
|
|
with TcxImageComboBoxItem(Items.Add) do
|
|
begin
|
|
ImageIndex := 2;
|
|
Value := CTE_CIERRE;
|
|
Description := 'Cierre';
|
|
end;
|
|
end;
|
|
|
|
{Columna DESCRIPCION}
|
|
Columna := CreateColumn;
|
|
Columna.DataBinding.FieldName := 'DESCRIPCION';
|
|
Columna.Caption := 'Descripción';
|
|
Columna.Width := tamColDescripcion;
|
|
Columna.Options.Filtering := False;
|
|
|
|
{Columna CUANTIA}
|
|
Columna := CreateColumn;
|
|
Columna.DataBinding.FieldName := 'CUANTIA';
|
|
Columna.Caption := 'Cuantia';
|
|
Columna.Width := tamColImporte;
|
|
Columna.Options.Filtering := False;
|
|
{with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do
|
|
try
|
|
try
|
|
BeginUpdate;
|
|
Column := Columna;
|
|
FieldName := Columna.DataBinding.FieldName;
|
|
Format := '#,0.00# €';
|
|
Kind := skSum;
|
|
finally
|
|
EndUpdate;
|
|
end;
|
|
except
|
|
DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1);
|
|
end;}
|
|
|
|
{Columna IMPORTEANT}
|
|
Columna := CreateColumn;
|
|
Columna.DataBinding.FieldName := 'IMPORTEANT';
|
|
Columna.Caption := 'Importe anterior';
|
|
Columna.Width := tamColImporte;
|
|
Columna.Options.Filtering := False;
|
|
{with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do
|
|
try
|
|
try
|
|
BeginUpdate;
|
|
Column := Columna;
|
|
FieldName := Columna.DataBinding.FieldName;
|
|
Format := '#,0.00# €';
|
|
Kind := skSum;
|
|
finally
|
|
EndUpdate;
|
|
end;
|
|
except
|
|
DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1);
|
|
end;}
|
|
|
|
{Columna IMPORTEPOS}
|
|
Columna := CreateColumn;
|
|
Columna.DataBinding.FieldName := 'IMPORTEPOS';
|
|
Columna.Caption := 'Importe posterior';
|
|
Columna.Width := tamColImporte;
|
|
Columna.Options.Filtering := False;
|
|
{with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do
|
|
try
|
|
try
|
|
BeginUpdate;
|
|
Column := Columna;
|
|
FieldName := Columna.DataBinding.FieldName;
|
|
Format := '#,0.00# €';
|
|
Kind := skSum;
|
|
finally
|
|
EndUpdate;
|
|
end;
|
|
except
|
|
DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1);
|
|
end;}
|
|
|
|
end;
|
|
end;
|
|
|
|
procedure TdmTablaLibros.InicializarTablaDetallesLibro(Tabla: TPTabla);
|
|
begin
|
|
with Tabla^.Fields do
|
|
begin
|
|
if FindField('CUANTIA') <> NIL then
|
|
with (FieldByName('CUANTIA') as TIBBCDField) do begin
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|
EditFormat := EDIT_EUROS2;
|
|
end;
|
|
if FindField('IMPORTEANT') <> NIL then
|
|
with (FieldByName('IMPORTEANT') as TIBBCDField) do begin
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|
EditFormat := EDIT_EUROS2;
|
|
end;
|
|
if FindField('IMPORTEPOS') <> NIL then
|
|
with (FieldByName('IMPORTEPOS') as TIBBCDField) do begin
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|
EditFormat := EDIT_EUROS2;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaLibros.AnadirDetalleLibro(Datos: TDatosDetalleLibro): Boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('insert into DETALLESLIBROS (CODIGOEMPRESA, TIPOLIBRO, NUMENTRADA, TIPOENTRADA, FECHAALTA, ');
|
|
SQL.Add('USUARIO, FECHAENTRADA, DESCRIPCION, CUANTIA, IMPORTEANT, IMPORTEPOS) ');
|
|
SQL.Add('VALUES (:CODIGOEMPRESA, :TIPOLIBRO, :NUMENTRADA, :TIPOENTRADA, :FECHAALTA, :USUARIO, :FECHAENTRADA, ');
|
|
SQL.Add(':DESCRIPCION, :CUANTIA, :IMPORTEANT, :IMPORTEPOS)');
|
|
|
|
try
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
ParamByName('TIPOLIBRO').AsString := Datos.TipoLibro;
|
|
ParamByName('NUMENTRADA').AsString := Datos.NumEntrada;
|
|
ParamByName('TIPOENTRADA').AsString := Datos.TipoEntrada;
|
|
ParamByName('FECHAALTA').AsString := Datos.FechaAlta;
|
|
ParamByName('USUARIO').AsString := Datos.Usuario;
|
|
ParamByName('FECHAENTRADA').AsString := Datos.FechaEntrada;
|
|
ParamByName('DESCRIPCION').AsString := Datos.Descripcion;
|
|
ParamByName('CUANTIA').AsDouble := Datos.Cuantia;
|
|
ParamByName('IMPORTEANT').AsDouble := Datos.ImporteAnt;
|
|
ParamByName('IMPORTEPOS').AsDouble := Datos.ImportePos;
|
|
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := True;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaLibros.CerrarLibro(TipoLibro : String): Boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
|
|
if esCadenaVacia(TipoLibro) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('insert into DETALLESLIBROS (CODIGOEMPRESA, TIPOLIBRO, NUMENTRADA, TIPOENTRADA, FECHAALTA, ');
|
|
SQL.Add('USUARIO, FECHAENTRADA, DESCRIPCION, CUANTIA, IMPORTEANT, IMPORTEPOS) ');
|
|
SQL.Add('VALUES (:CODIGOEMPRESA, :TIPOLIBRO, :NUMENTRADA, :TIPOENTRADA, :FECHAALTA, :USUARIO, :FECHAENTRADA, ');
|
|
SQL.Add(':DESCRIPCION, :CUANTIA, :IMPORTEANT, :IMPORTEPOS)');
|
|
|
|
try
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
ParamByName('TIPOLIBRO').AsString := TipoLibro;
|
|
ParamByName('NUMENTRADA').AsString := darNumEntrada(TipoLibro);
|
|
ParamByName('TIPOENTRADA').AsString := CTE_CIERRE;
|
|
ParamByName('FECHAALTA').AsString := DateToStr(dmBaseDatos.darFecha);
|
|
ParamByName('USUARIO').AsString := dmBaseDatos.Usuario;
|
|
ParamByName('FECHAENTRADA').AsString := ParamByName('FECHAALTA').AsString;
|
|
ParamByName('DESCRIPCION').AsString := msgLibCierre;
|
|
ParamByName('CUANTIA').AsDouble := 0;
|
|
ParamByName('IMPORTEANT').AsDouble := darUltimoImportePos(TipoLibro);
|
|
ParamByName('IMPORTEPOS').AsDouble := darUltimoImportePos(TipoLibro);
|
|
|
|
Prepare;
|
|
ExecQuery;
|
|
|
|
if incrementarNumEntrada(TipoLibro)
|
|
then Result := True;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaLibros.darNumEntrada(psTipoLibro: String): Variant;
|
|
begin
|
|
if (psTipoLibro = 'C') then
|
|
Result := dmTablaLibros.DarNuevoCodigoCaja
|
|
else if (psTipoLibro = 'B') then
|
|
Result := dmTablaLibros.DarNuevoCodigoBanco
|
|
else begin
|
|
VerMensaje('Log: Error el codigo de libro no existe');
|
|
Result := Null;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaLibros.incrementarNumEntrada(psTipoLibro: String): Boolean;
|
|
begin
|
|
if (psTipoLibro = 'C') then dmTablaLibros.IncrementarCodigoCaja
|
|
else if (psTipoLibro = 'B') then dmTablaLibros.IncrementarCodigoBanco
|
|
else begin
|
|
VerMensaje('Log: Error el codigo de libro no existe');
|
|
Result := False;
|
|
end;
|
|
Result := True;
|
|
end;
|
|
{
|
|
function TdmTablaLibros.darDescripcionLibro(Codigo: String): String;
|
|
var
|
|
oSQL : TIBSQL;
|
|
|
|
begin
|
|
Result := '';
|
|
|
|
if EsCadenaVacia(Codigo) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select DESCRIPCION ');
|
|
SQL.Add('from LIBROS ');
|
|
SQL.Add('where CODIGO = :CODIGO');
|
|
ParamByName('CODIGO').AsString := Codigo;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := Fields[0].AsString;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
}
|
|
function TdmTablaLibros.anadirEntradaLibro(Entidad: TRdxEntidad;
|
|
Modo: TRdxModo; Datos: TDatosPago): Boolean;
|
|
|
|
var
|
|
lDatosDetalleLibro : TDatosDetalleLibro;
|
|
lsAux : String;
|
|
Importe : Double;
|
|
lsNumEntrada : Variant;
|
|
lsTipoEntrada : Variant;
|
|
|
|
begin
|
|
Result := False;
|
|
|
|
try
|
|
//Detalle libro
|
|
lDatosDetalleLibro := TDatosDetalleLibro.Create;
|
|
//Descripcion
|
|
lsAux := msgCliSep1;
|
|
lsAux := lsAux + Datos.TipoPago;
|
|
|
|
Importe := Datos.Importe;
|
|
case Entidad of
|
|
entPagoProveedor : begin
|
|
lsAux := lsAux + msgCliSep9;
|
|
lsTipoEntrada := CTE_SAL;
|
|
end;
|
|
entAbonoProveedor : begin
|
|
lsAux := lsAux + msgCliSep9;
|
|
lsTipoEntrada := CTE_ENT;
|
|
end;
|
|
entCobroCliente : begin
|
|
lsAux := lsAux + msgCliSep2;
|
|
lsTipoEntrada := CTE_ENT;
|
|
end;
|
|
entAbonoCliente : begin
|
|
lsAux := lsAux + msgCliSep2;
|
|
lsTipoEntrada := CTE_SAL;
|
|
end;
|
|
else begin
|
|
VerMensaje('Log: la entidad no se corresponde con ningun tipo de pago');
|
|
lDatosDetalleLibro.Free;
|
|
exit;
|
|
end;
|
|
end;
|
|
|
|
lDatosDetalleLibro.TipoLibro := Datos.TipoLibro;
|
|
lDatosDetalleLibro.NumEntrada := Datos.NumEntrada;
|
|
//Cabecera
|
|
lDatosDetalleLibro.FechaAlta := Datos.FechaAlta;
|
|
lDatosDetalleLibro.Usuario := Datos.Usuario;
|
|
lDatosDetalleLibro.FechaEntrada := Datos.FechaPago;
|
|
//Descripcion
|
|
lsAux := lsAux + Datos.Codigo;
|
|
lsAux := lsAux + msgCliSep3;
|
|
lsAux := lsAux + Datos.Nombre;
|
|
lsAux := lsAux + msgCliSep4;
|
|
lDatosDetalleLibro.Descripcion := lsAux + Datos.Descripcion;
|
|
|
|
lDatosDetalleLibro.TipoEntrada := lsTipoEntrada;
|
|
lDatosDetalleLibro.Cuantia := Importe;
|
|
lDatosDetalleLibro.ImporteAnt := darUltimoImportePos(lDatosDetalleLibro.TipoLibro);
|
|
lDatosDetalleLibro.ImportePos := lDatosDetalleLibro.ImporteAnt + Importe;
|
|
|
|
if AnadirDetalleLibro(lDatosDetalleLibro) then begin
|
|
if incrementarNumEntrada(lDatosDetalleLibro.TipoLibro)
|
|
then Result := True;
|
|
end;
|
|
|
|
finally
|
|
lDatosDetalleLibro.Free;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaLibros.anularEntradaLibro(Entidad: TRdxEntidad;
|
|
Modo: TRdxModo; Datos: TDatosPago): Boolean;
|
|
|
|
var
|
|
lDatosDetalleLibro : TDatosDetalleLibro;
|
|
lsAux : String;
|
|
Importe : Double;
|
|
lsNumEntrada : Variant;
|
|
lsTipoEntrada : Variant;
|
|
|
|
begin
|
|
Result := False;
|
|
|
|
try
|
|
//Detalle libro
|
|
lDatosDetalleLibro := TDatosDetalleLibro.Create;
|
|
lDatosDetalleLibro.TipoLibro := Datos.TipoLibro;
|
|
lsNumEntrada := dmTablaLibros.darNumEntrada(lDatosDetalleLibro.TipoLibro);
|
|
if (esCadenaVacia(lsNumEntrada)) then begin
|
|
VerMensaje('Log: A fallado el NumEntrada ');
|
|
lDatosDetalleLibro.Free;
|
|
exit;
|
|
end;
|
|
|
|
lDatosDetalleLibro.NumEntrada := lsNumEntrada;
|
|
//Cabecera
|
|
lDatosDetalleLibro.FechaAlta := DateToStr(dmBaseDatos.darFecha);
|
|
lDatosDetalleLibro.Usuario := dmBaseDatos.Usuario;
|
|
lDatosDetalleLibro.FechaEntrada := lDatosDetalleLibro.FechaAlta;
|
|
//Descripcion
|
|
lsAux := msgCliSep5;
|
|
lsAux := lsAux + Datos.NumEntrada;
|
|
case Modo of
|
|
Modificar : lsAux := lsAux + msgCliSep6;
|
|
Eliminar : lsAux := lsAux + msgCliSep7;
|
|
else begin
|
|
VerMensaje('Log: el modo no se corresponde con ningun tipo de pago');
|
|
lDatosDetalleLibro.Free;
|
|
exit;
|
|
end;
|
|
end;
|
|
lsAux := lsAux + Datos.TipoPago;
|
|
lsAux := lsAux + msgCliSep8;
|
|
lsAux := lsAux + Datos.Codigo;
|
|
lsAux := lsAux + msgCliSep4;
|
|
lsAux := lsAux + Datos.Descripcion;
|
|
lDatosDetalleLibro.Descripcion := lsAux;
|
|
|
|
Importe := (-1) * Datos.Importe;
|
|
case Entidad of
|
|
entPagoProveedor : lsTipoEntrada := CTE_ENT;
|
|
entAbonoProveedor : lsTipoEntrada := CTE_SAL;
|
|
entCobroCliente : lsTipoEntrada := CTE_SAL;
|
|
entAbonoCliente : lsTipoEntrada := CTE_ENT;
|
|
else begin
|
|
VerMensaje('Log: la entidad no se corresponde con ningun tipo de pago');
|
|
lDatosDetalleLibro.Free;
|
|
exit;
|
|
end;
|
|
end;
|
|
|
|
lDatosDetalleLibro.TipoEntrada := lsTipoEntrada;
|
|
lDatosDetalleLibro.Cuantia := Importe;
|
|
lDatosDetalleLibro.ImporteAnt := dmTablaLibros.darUltimoImportePos(lDatosDetalleLibro.TipoLibro);
|
|
lDatosDetalleLibro.ImportePos := lDatosDetalleLibro.ImporteAnt + Importe;
|
|
|
|
if dmTablaLibros.AnadirDetalleLibro(lDatosDetalleLibro) then begin
|
|
if dmTablaLibros.incrementarNumEntrada(lDatosDetalleLibro.TipoLibro)
|
|
then Result := True;
|
|
end;
|
|
|
|
finally
|
|
lDatosDetalleLibro.Free;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaLibros.crearLibros(CodigoEmpresa: Variant): boolean;
|
|
begin
|
|
Result := True;
|
|
|
|
if not existenLibros(CodigoEmpresa) then
|
|
Result := insertarLibros(CodigoEmpresa);
|
|
end;
|
|
|
|
function TdmTablaLibros.existenLibros(CodigoEmpresa: Variant): Boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
|
|
if VarIsNull(CodigoEmpresa) then
|
|
exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select count(CODIGOEMPRESA) as NUMLIBROS');
|
|
SQL.Add('from LIBROS');
|
|
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA');
|
|
try
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := (FieldByName('NUMLIBROS').AsInteger <> 0);
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaLibros.insertarLibro(TipoLibro: TTiposLibro; CodigoEmpresa: Variant): Boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
|
|
begin
|
|
Result := False;
|
|
|
|
if VarIsNull(CodigoEmpresa) then
|
|
exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('insert into LIBROS');
|
|
SQL.Add('(CODIGOEMPRESA, TIPO, DESCRIPCION) ');
|
|
SQL.Add('VALUES ');
|
|
SQL.Add('(:CODIGOEMPRESA, :TIPO, :DESCRIPCION)');
|
|
|
|
ParamByName('CODIGOEMPRESA').AsVariant := CodigoEmpresa;
|
|
ParamByName('TIPO').AsString := darTipoLibro(TipoLibro);
|
|
ParamByName('DESCRIPCION').AsString := darDescripcionLibro(TipoLibro);
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := True;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaLibros.insertarLibros(CodigoEmpresa: Variant): Boolean;
|
|
begin
|
|
Result := False;
|
|
|
|
if not insertarLibro(ttlCaja, CodigoEmpresa) then begin
|
|
exit;
|
|
end;
|
|
|
|
if not insertarLibro(ttlBanco, CodigoEmpresa) then begin
|
|
exit;
|
|
end;
|
|
|
|
Result := True;
|
|
end;
|
|
|
|
function TdmTablaLibros.darDescripcionLibro(TipoLibro: TTiposLibro): String;
|
|
begin
|
|
Result := StrCapitalize(CaptionsDescripcionLibro [TipoLibro]);
|
|
end;
|
|
|
|
function TdmTablaLibros.darTipoLibro(TipoLibro: TTiposLibro): String;
|
|
begin
|
|
Result := StrCapitalize(CaptionsTiposLibro [TipoLibro]);
|
|
end;
|
|
|
|
{ TListaLibros }
|
|
|
|
procedure TListaLibros.AssignTo(Dest: TPersistent);
|
|
begin
|
|
//
|
|
end;
|
|
|
|
function TListaLibros.cargarLista(Objcbx: TcxComboBox): Integer;
|
|
//Carga todos los libros en el combox y devuelve el elemento determinado por defecto
|
|
var i, j : integer;
|
|
begin
|
|
Result := 0;
|
|
//Recorremos lista
|
|
j := -1;
|
|
for i := 0 to FLista.Count - 1 do
|
|
begin
|
|
Objcbx.Properties.Items.Add(Self.Items[i].Nombre);
|
|
j := j + 1;
|
|
|
|
if Self.Items[i].Predeterminado then
|
|
Result := j;
|
|
end;
|
|
end;
|
|
|
|
constructor TListaLibros.Create(TipoLista: TListaComboTiposLibro);
|
|
begin
|
|
inherited Create;
|
|
FSQL := TStringList.Create;
|
|
|
|
case (TipoLista) of
|
|
tltDefecto: ObtenerLista;
|
|
tltTodos: begin
|
|
inicializarSQL(TipoLista);
|
|
ObtenerListaBD;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
destructor TListaLibros.Destroy;
|
|
begin
|
|
FSQL.Free;
|
|
FSQL := nil;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
function TListaLibros.GetDatosLibro(Index: Integer): TDatosLibro;
|
|
begin
|
|
Result := TDatosLibro(FLista.Items[Index]);
|
|
end;
|
|
|
|
procedure TListaLibros.inicializarSQL(TipoLista: TListaComboTiposLibro);
|
|
begin
|
|
case (TipoLista) of
|
|
tltTodos: begin
|
|
with FSQL do
|
|
begin
|
|
Add('select LI.CODIGOEMPRESA, LI.TIPO, LI.DESCRIPCION, EM.LIBRODEFECTO');
|
|
Add('from LIBROS LI, EMPRESAS EM');
|
|
Add('where LI.CODIGOEMPRESA = :CODIGOEMPRESA');
|
|
Add('and EM.CODIGO = LI.CODIGOEMPRESA');
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TListaLibros.ObtenerLista;
|
|
var
|
|
FLibro : TDatosLibro;
|
|
begin
|
|
FLibro := TDatosLibro.Create();
|
|
FLibro.Codigo := dmTablaLibros.darTipoLibro(ttlCaja);
|
|
FLibro.Nombre := dmTablaLibros.darDescripcionLibro(ttlCaja);
|
|
FLista.Add(FLibro);
|
|
|
|
FLibro := TDatosLibro.Create();
|
|
FLibro.Codigo := dmTablaLibros.darTipoLibro(ttlBanco);
|
|
FLibro.Nombre := dmTablaLibros.darDescripcionLibro(ttlBanco);
|
|
FLista.Add(FLibro);
|
|
end;
|
|
|
|
procedure TListaLibros.ObtenerListaBD;
|
|
var
|
|
oSQL : TIBSQL;
|
|
FLibro : TDatosLibro;
|
|
begin
|
|
oSQL := TIBSQL.Create(nil);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Text := FSQL.Text;
|
|
try
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
Prepare;
|
|
ExecQuery;
|
|
while not EOF do begin
|
|
FLibro := TDatosLibro.Create();
|
|
FLibro.Codigo := FieldByName('TIPO').AsString;
|
|
FLibro.Nombre := FieldByName('DESCRIPCION').AsString;
|
|
FLibro.Predeterminado := (FieldByName('LIBRODEFECTO').AsString = FLibro.Codigo);
|
|
FLista.Add(FLibro);
|
|
Next;
|
|
end;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
end.
|