{ =============================================================================== 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: 04-12-2002 Versión actual: 1.0.0 Fecha versión actual: 04-12-2002 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit FormasPago; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, RDXDBFRAME, RdxBotones, ExtCtrls, RdxPaneles, RdxBarras, RdxTitulos, RXDBCtrl, IBCustomDataSet, Db, StdCtrls, DBTables, Configuracion, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxEdit, cxDBData, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, Grids, DBGrids, Entidades, cxDataStorage; type TfrFormasPago = class(TRdxDBFrame) BarraSuperior: TRdxBarraSuperior; dsFormasPago: TDataSource; brDoble: TRdxBarraInferior; bAceptar: TRdxBoton; bCancelar: TRdxBoton; RdxPanel1: TRdxPanel; RdxPanel3: TRdxPanel; bAnadir: TRdxBoton; bEliminar: TRdxBoton; gridFormasPago: TcxGrid; gridFormasPagoDBTableView1: TcxGridDBTableView; gridFormasPagoLevel1: TcxGridLevel; imgSombra: TImage; procedure bAnadirClick(Sender: TObject); procedure bEliminarClick(Sender: TObject); procedure bAceptarClick(Sender: TObject); procedure bCancelarClick(Sender: TObject); procedure RdxDBFrameShow(Sender: TObject); private TablaFormasPago : TIBDataSet; procedure ActualizarBotones; protected procedure ActivarModoAnadir; override; function CambiarEntidad(EntidadAnterior, Entidad : TRdxEntidad): Boolean; 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 frFormasPago: TfrFormasPago; implementation {$R *.DFM} { TfrFormasPago } uses BaseDatos, TablaFormasPago, IB, Mensajes, Excepciones, IBErrorCodes, Literales; constructor TfrFormasPago.Create(AOwner: TComponent); begin inherited Create(AOwner); Entidad := entFormasPago; ConfigurarFrame(Self, Entidad); Application.OnException := AppException; BaseDatos := dmBaseDatos.BD; Transaccion := dmBaseDatos.Transaccion; TablaFormasPago := TIBDataSet.Create(Self); TablaFormasPago.AfterInsert := FormasPagoAfterInsert; dsFormasPago.DataSet := TablaFormasPago; with TablaFormasPago do begin Database := BaseDatos; Transaction := Transaccion; InsertSQL.Assign(dmTablaFormasPago.sqlInsertar); ModifySQL.Assign(dmTablaFormasPago.sqlModificar); DeleteSQL.Assign(dmTablaFormasPago.sqlEliminar); SelectSQL.Assign(dmTablaFormasPago.sqlConsultar); end; bCancelar.Cancel := True; end; destructor TfrFormasPago.Destroy; begin Application.OnException := NIL; TablaFormasPago.Close; TablaFormasPago.UnPrepare; TablaFormasPago.Free; inherited; end; procedure TfrFormasPago.bAnadirClick(Sender: TObject); begin TablaFormasPago.Append; gridFormasPago.SetFocus; end; procedure TfrFormasPago.bEliminarClick(Sender: TObject); begin if (VerMensajePregunta(msgDeseaBorrar) = IDNO) then Exit; try if TablaFormasPago.RecordCount = 0 { Hacemos un cancel de la tabla por si el registro actual estuviera recien creado } then TablaFormasPago.Cancel else TablaFormasPago.Delete; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrFormasPago.bAceptarClick(Sender: TObject); begin if TablaFormasPago.State in [dsEdit, dsInsert] then TablaFormasPago.Post; Commit; CloseFrame; end; procedure TfrFormasPago.bCancelarClick(Sender: TObject); begin try Rollback; CloseFrame; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrFormasPago.FormasPagoAfterInsert(DataSet: TDataSet); begin DataSet.FieldByName('DB_KEY').AsString := '-'; end; procedure TfrFormasPago.AppException(Sender: TObject; E: Exception); begin if E.Message = 'Field ''DESCRIPCION'' must have a value' then begin VerMensaje(msgDatosFaltaDescripcionFpago); TablaFormasPago.Edit; end else if E.Message = 'violation of PRIMARY or UNIQUE KEY constraint "PK_FORMASPAGO" on table "FORMASPAGO"' then begin VerMensajeFmt(msgDatosFormaPagoRepetida, [UpperCase(TablaFormasPago.FieldByName('DESCRIPCION').AsString)]); TablaFormasPago.Edit; end else VerMensaje(E.Message); end; procedure TfrFormasPago.ActualizarBotones; begin if BaseDatos.IsReadOnly then begin bAnadir.Enabled := False; bEliminar.Enabled := False; gridFormasPago.Enabled := False; end else begin bAnadir.Enabled := True; bEliminar.Enabled := True; gridFormasPago.Enabled := True; end; end; procedure TfrFormasPago.ActivarModoAnadir; begin try with TablaFormasPago do begin Prepare; Open; ActualizarBotones; if RecordCount = 0 then begin Edit; FieldByName('DESCRIPCION').AsString := ' '; Post; Delete end else begin Edit; Post; end; end; dmTablaFormasPago.InicializarGridFormasPago(gridFormasPagoDBTableView1); ActivarEdicionGridDetalles(gridFormasPago); except on E : EIBError do begin case E.IBErrorCode of isc_lock_conflict : begin Rollback; VerMensaje(msgDatosTablaFpagoBloqueada); CloseFrame; end else begin Rollback; TratarExcepcion(E); end; end; end; on E : Exception do begin Rollback; TratarExcepcion(E); end; end; end; procedure TfrFormasPago.RdxDBFrameShow(Sender: TObject); begin bCancelar.SetFocus; end; function TfrFormasPago.CambiarEntidad(EntidadAnterior, Entidad: TRdxEntidad): Boolean; begin inherited CambiarEntidad(EntidadAnterior, Entidad); ConfigurarFrame(Self, Self.Entidad); end; end.