{ =============================================================================== 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.2 Fecha versión actual: 04-10-2004 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- 07-04-2002 Se ha adaptado a una unica transacción. 04-10-2004 Se añade unidad cambiarEntidad para que pueda cambiar de color dependiendo del modulo desde el que se la llama =============================================================================== } unit HistoricoMovimiento; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Db, IBCustomDataSet, Mask, DBCtrls, Buttons, ToolEdit, IB, IBDatabase, RdxBarras, RdxBotones, RdxCampos, RdxMemo, RdxComboBox, RdxCheckBox, RdxTitulos, RdxPaneles, Colores, Mensajes, Tipos, RdxFrameHistoricoMovimientos; type TfrHistoricoMovimiento = class(TRdxFrameHistoricoMovimientos) brSalir: TRdxBarraInferior; bSalir: TRdxBoton; pnlScroll: TRdxScrollPanel; pnlDetalles: TRdxPanel; eCantidad: TLabel; eStockAnterior: TLabel; eStockNuevo: TLabel; eClienteAsociado: TLabel; eFecha: TLabel; eCausa: TLabel; cDetalles: TRdxCabecera; eHora: TLabel; pnlDatos: TRdxPanel; cDatos: TRdxCabecera; eTipoOperacion: TLabel; eTipoMovimiento: TLabel; eUsuario: TLabel; Codigo: TRdxDBEdit; eCodigo: TLabel; eUnidades: TLabel; Descripcion: TRdxDBEdit; eDescripcion: TLabel; eFamilia: TLabel; TipoOperacion: TRdxDBEdit; Hora: TRdxDBEdit; Cantidad: TRdxDBEdit; Fecha: TRdxDBEdit; StockAnterior: TRdxDBEdit; TipoMovimiento: TRdxDBEdit; StockNuevo: TRdxDBEdit; Cliente: TRdxDBEdit; Usuario: TRdxDBEdit; Familia: TRdxDBEdit; UnidadesMedida: TRdxDBEdit; pnlAlmacen: TRdxPanel; CArticulo: TRdxCabecera; eAlmacen: TLabel; dsMovimientos: TDataSource; brDoble: TRdxBarraInferior; bAceptar: TRdxBoton; bCancelar: TRdxBoton; Observaciones: TRdxDBMemo; cbxAlmacen: TRdxDBComboBox; Titulo: TRdxPanelTituloOperacion; procedure bAceptarClick(Sender: TObject); procedure bCancelarGuardarClick(Sender: TObject); procedure bSalirClick(Sender: TObject); protected procedure ActivarModoConsultar; override; procedure ActivarModoEliminar; override; function EliminarDatos : Boolean; override; function CancelarEliminar : Boolean; override; procedure BuscarAlmacen; override; procedure BuscarMovimiento; override; function ComprobarDatos: Boolean; override; function CambiarEntidad (EntidadAnterior, Entidad : TRdxEntidad): Boolean; override; public constructor Create(AOwner : TComponent); override; destructor Destroy; override; end; var frHistoricoMovimiento: TfrHistoricoMovimiento; implementation {$R *.DFM} uses BaseDatos, TablaHistoricoMovimientos, TablaAlmacenes, Excepciones, Configuracion, RdxEmpresaActiva, Literales; constructor TfrHistoricoMovimiento.Create(AOwner : TComponent); var i : integer; begin inherited Create(AOwner); Entidad := entMovimiento; ConfigurarFrame(Self, Self.Entidad); BaseDatos := dmBaseDatos.BD; Transaccion := dmBaseDatos.Transaccion; TablaMovimientos := TIBDataSet.Create(Self); dsMovimientos.DataSet := TablaMovimientos; with TablaMovimientos do begin Database := BaseDatos; Transaction := Transaccion; SelectSQL.Assign(dmTablaHistoricoMovimientos.sqlConsultar); DeleteSQL.Assign(dmTablaHistoricoMovimientos.sqlEliminar); RefreshSQL.Assign(dmTablaHistoricoMovimientos.sqlConsultar); end; {Carga todos los almacenes en el combox, como no habra posibilidad de cambio, da igual la entidad que sea} dmTablaAlmacenes.darAlmacenes(EmpresaActiva.Codigo, FListaAlmacenesCodigo,FListaCodigosAlmacen); for i:=0 to FListaAlmacenesCodigo.Count-1 do cbxAlmacen.Items.Add(FListaAlmacenesCodigo.Names[i]); end; destructor TfrHistoricoMovimiento.Destroy; begin TablaMovimientos.Close; TablaMovimientos.UnPrepare; TablaMovimientos.Free; inherited; end; procedure TfrHistoricoMovimiento.bSalirClick(Sender: TObject); begin try Rollback; CloseFrame; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrHistoricoMovimiento.ActivarModoConsultar; begin dsMovimientos.AutoEdit := False; try TablaMovimientos.Open; if TablaMovimientos.RecordCount = 0 then begin VerMensaje(msgMovNoExiste); CloseFrame; Exit; end; TablaMovimientos.Cancel; Visible := True; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrHistoricoMovimiento.ActivarModoEliminar; begin dsMovimientos.AutoEdit := False; try TablaMovimientos.Open; if TablaMovimientos.RecordCount = 0 then begin VerMensaje(msgMovNoExiste); CancelarEliminar; CloseFrame; Exit; end; TablaMovimientos.Cancel; Visible := True; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrHistoricoMovimiento.bAceptarClick(Sender: TObject); begin if (RealizarOperacion) then CloseFrame; end; procedure TfrHistoricoMovimiento.bCancelarGuardarClick(Sender: TObject); begin if (TratarCambios = IDOK) then CloseFrame; end; procedure TfrHistoricoMovimiento.BuscarAlmacen; begin cbxAlmacen.ItemIndex := cbxAlmacen.Items.IndexOf(FListaCodigosAlmacen.Values[CodigoAlmacen]); end; procedure TfrHistoricoMovimiento.BuscarMovimiento; begin if Transaccion = NIL then exit; try TablaMovimientos.Close; // Buscar la fila a tratar si es necesario if (not VarIsNull(CodigoMovimiento)) then TablaMovimientos.Params.ByName('CODIGO').AsString := CodigoMovimiento; TablaMovimientos.Prepare; TablaMovimientos.Open; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; function TfrHistoricoMovimiento.CancelarEliminar: Boolean; begin Result := False; try RollBack; TablaMovimientos.Close; Result := True; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; function TfrHistoricoMovimiento.ComprobarDatos: Boolean; begin Result := True; end; function TfrHistoricoMovimiento.EliminarDatos: Boolean; begin Result := False; try TablaMovimientos.Delete; Commit; TablaMovimientos.Close; Result := True; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; function TfrHistoricoMovimiento.CambiarEntidad(EntidadAnterior, Entidad: TRdxEntidad): Boolean; begin if not inherited CambiarEntidad(EntidadAnterior, Entidad) then Exit; ConfigurarFrame(Self, Self.Entidad); end; end.