{ =============================================================================== 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: 11-08-2002 Versión actual: 1.0.2 Fecha versión actual: 04-10-2004 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- 27-11-2001 Cambio de los titulos respectivos a obra y almacenes en el procedimiento CambiarEntidad. 07-04-2002 Se ha adaptado a una unica transacción. 14-04-2004 p272. Adaptación a multiempresa. 04-10-2004 Cambio CambiarEntidad para que soporte otro color. =============================================================================== } unit ArticuloObraHistorica; 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, RdxFrameArticulosObraHistorica; type TfrArticuloObraHistorica = class(TRdxFrameArticulosObraHistorica) pnlScroll: TRdxScrollPanel; brSimple: TRdxBarraInferior; bSalir: TRdxBoton; pnlAlmacen: TRdxPanel; eAlmacen: TLabel; cAlmacen: TRdxCabecera; RdxPanel1: TRdxPanel; RdxCabecera1: TRdxCabecera; Codigo: TRdxDBEdit; eCodigo: TLabel; cbxFamilia: TRdxDBComboBox; eFamilia: TLabel; Precio: TRdxDBEdit; cbxUnidadesMedida: TRdxDBComboBox; eUnidades: TLabel; eDescripcion: TLabel; Descripcion: TRdxDBEdit; eObservaciones: TLabel; Observaciones: TRdxDBMemo; dsArticulosObraHistorica: TDataSource; Titulo: TRdxPanelTituloOperacion; cbxAlmacen: TRdxDBComboBox; brDoble: TRdxBarraInferior; bAceptar: TRdxBoton; bCancelar: TRdxBoton; eStockActual: TLabel; procedure bAceptarClick(Sender: TObject); procedure bCancelarGuardarClick(Sender: TObject); procedure bSalirClick(Sender: TObject); procedure CodigoButtonClick(Sender: TObject); private FListaAlmacenesCodigo : TStringList; protected procedure ActivarModoConsultar; override; procedure ActivarModoEliminar; override; function EliminarDatos : Boolean; override; function CancelarEliminar : Boolean; override; procedure VerModal; override; procedure FreeContenido; override; procedure BuscarAlmacen; override; procedure BuscarArticulo; override; function ComprobarDatos: Boolean; override; public constructor Create(AOwner : TComponent); override; destructor Destroy; override; published property TablaArticulosObraHistorica; property CodigoAlmacen; property CodigoArticulo; end; var frArticuloObraHistorica: TfrArticuloObraHistorica; implementation {$R *.DFM} uses BaseDatos, TablaArticulosObraHistorica, ArticulosObraHistorica, Excepciones, StrFunc, Configuracion, RdxEmpresaActiva, Literales; constructor TfrArticuloObraHistorica.Create(AOwner : TComponent); var i : Integer; liIndex : Integer; begin inherited Create(AOwner); Entidad := entArticuloAlmacenObra; ConfigurarFrame(Self, Self.Entidad); BaseDatos := dmBaseDatos.BD; Transaccion := dmBaseDatos.Transaccion; TablaArticulosObraHistorica := TIBDataSet.Create(Self); dsArticulosObraHistorica.DataSet := TablaArticulosObraHistorica; with TablaArticulosObraHistorica do begin Database := BaseDatos; Transaction := Transaccion; SelectSQL.Assign(dmTablaArticulosObraHistorica.sqlConsultar); DeleteSQL.Assign(dmTablaArticulosObraHistorica.sqlEliminar); RefreshSQL.Assign(dmTablaArticulosObraHistorica.sqlConsultar); end; {Carga todos los almacenes en el combox, como no habra posibilidad de cambio, da igual la entidad que sea} FListaAlmacenesCodigo := dmTablaArticulosObraHistorica.DarObras(EmpresaActiva.Codigo); for i:=0 to FListaAlmacenesCodigo.Count-1 do cbxAlmacen.Items.Add(FListaAlmacenesCodigo.Strings[i]); // Carga el primer almacen cbxAlmacen.ItemIndex := 0; liIndex := FListaAlmacenesCodigo.IndexOf(cbxAlmacen.Text); //Asigno el objeto codigo de almacen (CodigoObra, Nombre, FechaCierre) if (liIndex <> -1) then CodigoAlmacen := TTipoCodigoFecha(FListaAlmacenesCodigo.Objects[liIndex]); end; destructor TfrArticuloObraHistorica.Destroy; begin TablaArticulosObraHistorica.Close; TablaArticulosObraHistorica.UnPrepare; TablaArticulosObraHistorica.Free; inherited; end; procedure TfrArticuloObraHistorica.bAceptarClick(Sender: TObject); begin if (RealizarOperacion) then CloseFrame; end; procedure TfrArticuloObraHistorica.BuscarAlmacen; var i: integer; begin cbxAlmacen.ItemIndex := FListaAlmacenesCodigo.IndexOf(CodigoAlmacen.darDescripcion); end; procedure TfrArticuloObraHistorica.BuscarArticulo; begin if Transaccion = NIL then exit; try with TablaArticulosObraHistorica do begin Close; // Buscar la fila a tratar si es necesario if (CodigoAlmacen <> Nil) and (not VarIsNull(CodigoArticulo)) then begin Params.ByName('CODIGOOBRA').AsInteger := CodigoAlmacen.Codigo; Params.ByName('FECHACIERRE').AsDate := StrToDate(CodigoAlmacen.Fecha); Params.ByName('CODIGOARTICULO').AsString := CodigoArticulo; end; Params.ByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo; Prepare; Open; end; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrArticuloObraHistorica.ActivarModoConsultar; begin dsArticulosObraHistorica.AutoEdit := False; Codigo.VerBoton := True; try TablaArticulosObraHistorica.Open; if TablaArticulosObraHistorica.RecordCount = 0 then begin VerMensajeFmt(msgArtNoExisteArtAlm, [CodigoArticulo]); CloseFrame; Exit; end; TablaArticulosObraHistorica.Cancel; Visible := True; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrArticuloObraHistorica.ActivarModoEliminar; begin dsArticulosObraHistorica.AutoEdit := False; Codigo.VerBoton := True; try TablaArticulosObraHistorica.Open; if TablaArticulosObraHistorica.RecordCount = 0 then begin VerMensajeFmt(msgArtNoExisteArtAlm, [CodigoArticulo]); CancelarEliminar; CloseFrame; Exit; end; TablaArticulosObraHistorica.Cancel; Visible := True; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrArticuloObraHistorica.FreeContenido; begin if (ContenidoModal is TRdxFrameArticulosObraHistorica) then begin CodigoAlmacen := (ContenidoModal as TRdxFrameArticulosObraHistorica).CodigoAlmacen; CodigoArticulo := (ContenidoModal as TRdxFrameArticulosObraHistorica).CodigoArticulo; end; inherited FreeContenido; end; procedure TfrArticuloObraHistorica.CodigoButtonClick(Sender: TObject); begin inherited; if (TratarCambios = IDCANCEL) then exit; ContenidoModal := TfrArticulosObraHistorica.Create(Self); end; procedure TfrArticuloObraHistorica.VerModal; begin if (ContenidoModal is TRdxFrameArticulosObraHistorica) then (ContenidoModal as TRdxFrameArticulosObraHistorica).CodigoAlmacen := FCodigoAlmacen; inherited VerModal; end; function TfrArticuloObraHistorica.EliminarDatos: Boolean; begin Result := False; try TablaArticulosObraHistorica.Delete; Commit; TablaArticulosObraHistorica.Close; Result := True; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; function TfrArticuloObraHistorica.CancelarEliminar: Boolean; begin Result := False; try RollBack; TablaArticulosObraHistorica.Close; Result := True; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrArticuloObraHistorica.bCancelarGuardarClick(Sender: TObject); begin if (TratarCambios = IDOK) then CloseFrame; end; procedure TfrArticuloObraHistorica.bSalirClick(Sender: TObject); begin try Rollback; CloseFrame; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; function TfrArticuloObraHistorica.ComprobarDatos: Boolean; begin Result := False; Case Modo of Eliminar : {if dmTablaArticulosObraHistorica.ArticuloAlmacenTieneExistencias(CodigoAlmacen,CodigoArticulo) then begin VerMensaje(msgArtTieneExistencias); Exit; end;} end; Result := True; end; end.