git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES/trunk@4 b68bf8ae-e977-074f-a058-3cfd71dd8f45
270 lines
7.6 KiB
ObjectPascal
270 lines
7.6 KiB
ObjectPascal
{
|
|
===============================================================================
|
|
Copyright (©) 2001. 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: 01-10-2001
|
|
Versión actual: 1.0.3
|
|
Fecha versión actual: 28-12-2002
|
|
===============================================================================
|
|
Modificaciones:
|
|
|
|
Fecha Comentarios
|
|
---------------------------------------------------------------------------
|
|
03-10-2001 Quitar refresco del grid, ordenación por click en titulo
|
|
|
|
05-11-2001 Quitar la cacheUpdates, y hacer bloqueo para los demás usuarios
|
|
|
|
07-04-2002 Se ha adaptado a una unica transacción.
|
|
|
|
09-05-2002 Cambio de grid en lugar de utilizar UltimDBGrid, utilizaremos dxDBGrid.
|
|
|
|
28-12-2002 Se establece el campo DESCRIPCION como clave primaria y se captura la
|
|
excepcion (no se permitirán formas de pago con misma descripcion), arreglo de
|
|
el boton cancelar de el mensaje "esta seguro que desea eliminar"
|
|
|
|
===============================================================================
|
|
}
|
|
|
|
unit Fabricantes;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
RDXDBFRAME, RdxBotones, ExtCtrls, RdxPaneles, RdxBarras, RdxTitulos,
|
|
RXDBCtrl, IBCustomDataSet, Db, StdCtrls, DBTables, dxCntner, dxTL,
|
|
dxDBCtrl, dxDBGrid, IBTable, IBDatabase;
|
|
|
|
type
|
|
TfrFabricantes = class(TRdxDBFrame)
|
|
BarraProveedores: TRdxBarraSuperior;
|
|
dsFabricantes: TDataSource;
|
|
brDoble: TRdxBarraInferior;
|
|
bAceptar: TRdxBoton;
|
|
bCancelar: TRdxBoton;
|
|
RdxPanel1: TRdxPanel;
|
|
RdxPanel4: TRdxPanel;
|
|
RdxPanel3: TRdxPanel;
|
|
bAnadir: TRdxBoton;
|
|
bEliminar: TRdxBoton;
|
|
gridFabricantes: TdxDBGrid;
|
|
procedure bAnadirClick(Sender: TObject);
|
|
procedure bEliminarClick(Sender: TObject);
|
|
procedure bAceptarClick(Sender: TObject);
|
|
procedure bCancelarClick(Sender: TObject);
|
|
private
|
|
TablaFabricantes : TIBDataSet;
|
|
procedure ActualizarBotones;
|
|
protected
|
|
procedure ActivarModoAnadir; override;
|
|
public
|
|
constructor Create (AOwner : TComponent); override;
|
|
destructor Destroy; override;
|
|
published
|
|
procedure AppException(Sender: TObject; E: Exception);
|
|
procedure FormasPagoAfterInsert(DataSet: TDataSet);
|
|
property BaseDatos;
|
|
property Transaccion;
|
|
end;
|
|
|
|
var
|
|
frFabricantes: TfrFabricantes;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
|
|
{ TfrFormasPago }
|
|
|
|
uses
|
|
Tipos, BaseDatos, TablaFabricantes, IB, Mensajes, StrFunc,
|
|
Excepciones, IBErrorCodes, Configuracion, Literales;
|
|
|
|
constructor TfrFabricantes.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create(AOwner);
|
|
Application.OnException := AppException;
|
|
Entidad := entFormasPago;
|
|
ConfigurarFrame(Self, Self.Entidad);
|
|
|
|
BaseDatos := dmBaseDatos.BD;
|
|
Transaccion := dmBaseDatos.Transaccion;
|
|
TablaFabricantes := TIBDataSet.Create(Self);
|
|
TablaFabricantes.AfterInsert := FormasPagoAfterInsert;
|
|
|
|
dsFabricantes.DataSet := TablaFabricantes;
|
|
|
|
with TablaFabricantes do
|
|
begin
|
|
Database := BaseDatos;
|
|
Transaction := Transaccion;
|
|
InsertSQL.Assign(dmTablaFabricantes.sqlInsertar);
|
|
ModifySQL.Assign(dmTablaFabricantes.sqlModificar);
|
|
DeleteSQL.Assign(dmTablaFabricantes.sqlEliminar);
|
|
SelectSQL.Assign(dmTablaFabricantes.sqlConsultar);
|
|
end;
|
|
end;
|
|
|
|
destructor TfrFabricantes.Destroy;
|
|
begin
|
|
Application.OnException := NIL;
|
|
TablaFabricantes.Close;
|
|
TablaFabricantes.UnPrepare;
|
|
TablaFabricantes.Free;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrFabricantes.bAnadirClick(Sender: TObject);
|
|
begin
|
|
if esCadenaVacia(TablaFabricantes.FieldByName('NOMBRE').AsString) then
|
|
begin
|
|
VerMensaje(msgFabPagFaltaDes);
|
|
Exit;
|
|
end;
|
|
|
|
TablaFabricantes.Append;
|
|
TablaFabricantes.FieldByName('CODIGO').AsString := dmTablaFabricantes.DarNuevoCodigo;
|
|
dmTablaFabricantes.IncrementarCodigo;
|
|
gridFabricantes.SetFocus;
|
|
end;
|
|
|
|
procedure TfrFabricantes.bEliminarClick(Sender: TObject);
|
|
begin
|
|
if (VerMensajePregunta(msgDeseaBorrar) <> IDYES) then
|
|
Exit;
|
|
|
|
try
|
|
if TablaFabricantes.RecordCount = 0
|
|
{ Hacemos un cancel de la tabla por si el registro actual estuviera
|
|
recien creado }
|
|
then TablaFabricantes.Cancel
|
|
else TablaFabricantes.Delete;
|
|
except
|
|
on E : EIBError do
|
|
case E.IBErrorCode of
|
|
isc_foreign_key : VerMensaje(msgFabExisteenArt);
|
|
else
|
|
TratarExcepcion(E);
|
|
end;
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrFabricantes.bAceptarClick(Sender: TObject);
|
|
begin
|
|
if TablaFabricantes.State in [dsEdit, dsInsert] then
|
|
TablaFabricantes.Post;
|
|
|
|
dmTablaFabricantes.limpiarBlancos;
|
|
|
|
Commit;
|
|
CloseFrame;
|
|
end;
|
|
|
|
procedure TfrFabricantes.bCancelarClick(Sender: TObject);
|
|
begin
|
|
try
|
|
Rollback;
|
|
CloseFrame;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrFabricantes.FormasPagoAfterInsert(DataSet: TDataSet);
|
|
begin
|
|
// DataSet.FieldByName('DB_KEY').AsString := '-';
|
|
end;
|
|
|
|
procedure TfrFabricantes.AppException(Sender: TObject; E: Exception);
|
|
begin
|
|
{
|
|
if E.Message = 'Field ''DESCRIPCION'' must have a value' then begin
|
|
VerMensaje(msgForPagFaltaDes);
|
|
TablaFabricantes.Edit;
|
|
end
|
|
else if E.Message = 'violation of PRIMARY or UNIQUE KEY constraint "PK_FORMASPAGO" on table "FORMASPAGO"' then begin
|
|
VerMensajeFmt(msgForPagRepetida, [UpperCase(TablaFabricantes.FieldByName('DESCRIPCION').AsString)]);
|
|
TablaFabricantes.Edit;
|
|
end
|
|
else
|
|
VerMensaje(E.Message);
|
|
}
|
|
end;
|
|
|
|
procedure TfrFabricantes.ActualizarBotones;
|
|
begin
|
|
if BaseDatos.IsReadOnly then
|
|
begin
|
|
bAnadir.Enabled := False;
|
|
bEliminar.Enabled := False;
|
|
gridFabricantes.Enabled := False;
|
|
end
|
|
else begin
|
|
bAnadir.Enabled := True;
|
|
bEliminar.Enabled := True;
|
|
gridFabricantes.Enabled := True;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrFabricantes.ActivarModoAnadir;
|
|
begin
|
|
try
|
|
with TablaFabricantes do
|
|
begin
|
|
Prepare;
|
|
Open;
|
|
ActualizarBotones;
|
|
|
|
if RecordCount = 0 then
|
|
begin
|
|
Edit;
|
|
FieldByName('CODIGO').AsString := dmTablaFabricantes.DarNuevoCodigo;
|
|
dmTablaFabricantes.IncrementarCodigo;
|
|
FieldByName('NOMBRE').AsString := '';
|
|
Post;
|
|
Edit;
|
|
end
|
|
else
|
|
begin
|
|
Edit;
|
|
Post;
|
|
end;
|
|
end;
|
|
dmTablaFabricantes.InicializarGridFabricantes(gridFabricantes);
|
|
except
|
|
on E : EIBError do
|
|
begin
|
|
case E.IBErrorCode of
|
|
isc_lock_conflict : begin
|
|
Rollback;
|
|
VerMensaje(msgFabPagTablaBloq);
|
|
CloseFrame;
|
|
end
|
|
else begin
|
|
Rollback;
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
end;
|
|
on E : Exception do begin
|
|
Rollback;
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
end.
|