This repository has been archived on 2024-11-29. You can view files and clone it, but cannot push or open issues or pull requests.
Tecsitel_FactuGES/Obras/AlbaranInstalador.pas
2007-06-21 15:47:20 +00:00

1069 lines
29 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: 04-10-2004
Versión actual: 1.0.0
Fecha versión actual: 04-10-2004
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
===============================================================================
}
unit AlbaranInstalador;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
RdxFrameAlbaranes, Grids, DBGrids, RdxBotones, RdxTitulos, StdCtrls,
RdxMemo, RdxCampos, ExtCtrls, Tipos, RxMemDS,
RdxComboBox, RdxPaneles, RdxBarras, RXDBCtrl, ComCtrls, Configuracion,
dxCntner, dxEditor, dxExEdtr, dxEdLib, dxDBELib, Db, dxTL, dxDBCtrl,
dxDBGrid, RdxPageControl, cxControls, cxContainer, cxEdit, cxTextEdit,
cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, cxButtonEdit;
type
TfrAlbaranInstalador = class(TRdxFrameAlbaranes)
brSalir: TRdxBarraInferior;
bSalir: TRdxBoton;
brGuardar: TRdxBarraInferior;
bGuardar: TRdxBoton;
bCancelar: TRdxBoton;
pnlScroll: TRdxScrollPanel;
pnlAlbaran: TRdxPanel;
cDatosAlbaran: TRdxCabecera;
eCodigo: TLabel;
Codigo: TRdxDBEdit;
eFechaAlta: TLabel;
eUsuario: TLabel;
Usuario: TRdxDBEdit;
pnlTitulo: TRdxPanelTituloOperacion;
dsAlbaran: TDataSource;
dsDetallesAlbaran: TDataSource;
FechaAlta: TcxDBDateEdit;
eNombre: TLabel;
Nombre: TRdxDBEdit;
eTelefono1: TLabel;
Telefono: TRdxDBEdit;
CodInstalador: TcxDBButtonEdit;
pnlGridArticulos: TPanel;
pnlBarraGrid: TRdxPanel;
bAnadir: TRdxBoton;
bEliminar: TRdxBoton;
bEliminarTodo: TRdxBoton;
gridDetalles: TdxDBGrid;
pnlImporteAlbaran: TRdxPanel;
procedure CodigoButtonClick(Sender: TObject);
procedure CodigoExit(Sender: TObject);
procedure bAnadirClick(Sender: TObject);
procedure bEliminarClick(Sender: TObject);
procedure bEliminarTodoClick(Sender: TObject);
procedure bSalirClick(Sender: TObject);
procedure bGuardarClick(Sender: TObject);
procedure bCancelarClick(Sender: TObject);
procedure NombreButtonClick(Sender: TObject);
procedure NombreExit(Sender: TObject);
private
FCodigoInstalador : Variant;
FCodigoArticulo : Variant;
FTablaDetallesMem : TRxMemoryData;
procedure ActivarEventosCampos;
procedure BorrarDetalles;
procedure BorrarDetallesIB;
procedure SalvarDetalles;
procedure CargarDetalles;
protected
procedure ActivarModoAnadir; override;
procedure ActivarModoModificar; override;
procedure ActivarModoConsultar; override;
procedure ActivarModoEliminar; override;
function AnadirDatos : Boolean; override;
function ModificarDatos : Boolean; override;
function EliminarDatos : Boolean; override;
function CancelarAnadir : Boolean; override;
function CancelarModificar : Boolean; override;
function CancelarEliminar : Boolean; override;
function ComprobarDatos : Boolean; override;
procedure VerModal; override;
procedure SetCodigoInstalador (Value : Variant);
procedure SetCodigoArticulo (Value : Variant);
procedure FreeContenido; override;
procedure BuscarAlbaran; override;
public
property CodigoInstalador : Variant read FCodigoInstalador write SetCodigoInstalador;
property CodigoArticulo : Variant read FCodigoArticulo write SetCodigoArticulo;
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
published
property TablaAlbaranes;
property TablaDetallesAlbaranes;
property TablaDetallesMem : TRxMemoryData read FTablaDetallesMem write FTablaDetallesMem;
property CodigoAlbaran;
procedure GridBotonCodigoArticuloClick(Sender: TObject);
procedure CodigoArticuloDetalleSetText(Sender: TField; const Text: String);
procedure CantidadDetalleSetText(Sender: TField; const Text: String);
procedure GridBotonDescripcionClick(Sender: TObject);
end;
var
frAlbaranInstalador: TfrAlbaranInstalador;
implementation
{$R *.DFM}
uses
TablaAlbaranesInstalador, BaseDatos, IB, StrFunc, Mensajes, NumFunc,
TablaArticulos, TablaInstaladores, RdxFrameArticulos, RdxFrameInstaladores,
AlbaranesInstaladores, Articulos, IBCustomDataSet, Instaladores,
Excepciones, IBErrorCodes, dxDBTLCL, EditorDescripcion,
RdxEmpresaActiva, Literales, ArticulosFabPro;
{ TfrAlbaranCliente }
procedure TfrAlbaranInstalador.ActivarModoAnadir;
var
CodNuevo : Variant;
begin
dsAlbaran.AutoEdit := True;
dsDetallesAlbaran.AutoEdit := True;
Nombre.VerBoton := True;
ActivarEdicionGridDetalles(gridDetalles);
(gridDetalles.ColumnByFieldName('CODIGOARTICULO')
as TdxDBTreeListButtonColumn).OnEditButtonClick := GridBotonCodigoArticuloClick;
(gridDetalles.ColumnByFieldName('DESCRIPCION')
as TdxDBTreeListButtonColumn).OnEditButtonClick := GridBotonDescripcionClick;
pnlBarraGrid.Visible := True;
try
{ Antes de aplicar la caché hay que asegurarse de que la
tabla está cerrada. }
TablaAlbaranes.DisableControls;
{ Inicializar la tabla de albaranes }
TablaAlbaranes.Close;
CodNuevo := dmTablaAlbaranesInstalador.DarNuevoCodigo;
with TablaAlbaranes do
begin
CachedUpdates := True;
Prepare;
Open;
EnableControls;
Insert;
FieldByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
end;
Codigo.Field.asString := CodNuevo;
FechaAlta.DataBinding.Field.AsString := DateToStr(Date);
Usuario.Field.AsString := dmBaseDatos.Usuario;
{ Inicializar la tabla de detalles }
with TablaDetallesAlbaranes do
begin
Close;
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
ParamByName('CODIGOALBARAN').AsString := CodNuevo;
Prepare;
Open;
end;
with TablaDetallesMem do
begin
Close;
Open;
ActivarEventosCampos;
end;
dmTablaAlbaranesInstalador.InicializarTablaAlbaranes(@TablaAlbaranes);
Visible := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrAlbaranInstalador.ActivarModoConsultar;
begin
dsAlbaran.AutoEdit := False;
dsDetallesAlbaran.AutoEdit := False;
Nombre.VerBoton := False;
DesactivarEdicionGridDetalles(gridDetalles);
(gridDetalles.ColumnByFieldName('CODIGOARTICULO')
as TdxDBTreeListButtonColumn).OnEditButtonClick := NIL;
(gridDetalles.ColumnByFieldName('DESCRIPCION')
as TdxDBTreeListButtonColumn).OnEditButtonClick := NIL;
pnlBarraGrid.Visible := False;
try
TablaAlbaranes.Prepare;
TablaAlbaranes.Open;
if TablaAlbaranes.RecordCount = 0 then
begin
VerMensajeFmt(msgAlbNoExisteAlb, [CodigoAlbaran]);
CloseFrame;
Exit;
end;
TablaAlbaranes.Cancel;
with TablaDetallesAlbaranes do
begin
Close;
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Params.ByName('CODIGOALBARAN').AsString := CodigoAlbaran;
Prepare;
Open;
Cancel;
end;
with TablaDetallesMem do
begin
Close;
Open;
Cancel;
CargarDetalles;
end;
dmTablaAlbaranesInstalador.InicializarTablaAlbaranes(@TablaAlbaranes);
Visible := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrAlbaranInstalador.ActivarModoEliminar;
begin
dsAlbaran.AutoEdit := False;
dsDetallesAlbaran.AutoEdit := False;
Nombre.VerBoton := False;
DesactivarEdicionGridDetalles(gridDetalles);
(gridDetalles.ColumnByFieldName('CODIGOARTICULO')
as TdxDBTreeListButtonColumn).OnEditButtonClick := NIL;
(gridDetalles.ColumnByFieldName('DESCRIPCION')
as TdxDBTreeListButtonColumn).OnEditButtonClick := NIL;
pnlBarraGrid.Visible := False;
try
TablaAlbaranes.Prepare;
TablaAlbaranes.Open;
if TablaAlbaranes.RecordCount = 0 then
begin
VerMensajeFmt(msgAlbNoExisteAlb, [CodigoAlbaran]);
CancelarEliminar;
CloseFrame;
Exit;
end;
TablaAlbaranes.Cancel;
with TablaDetallesAlbaranes do
begin
Close;
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Params.ByName('CODIGOALBARAN').AsString := CodigoAlbaran;
Prepare;
Open;
Cancel;
end;
with TablaDetallesMem do
begin
Close;
Open;
Cancel;
CargarDetalles;
end;
dmTablaAlbaranesInstalador.InicializarTablaAlbaranes(@TablaAlbaranes);
Visible := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrAlbaranInstalador.ActivarModoModificar;
begin
dsAlbaran.AutoEdit := True;
dsDetallesAlbaran.AutoEdit := True;
Nombre.VerBoton := True;
ActivarEdicionGridDetalles(gridDetalles);
(gridDetalles.ColumnByFieldName('CODIGOARTICULO')
as TdxDBTreeListButtonColumn).OnEditButtonClick := GridBotonCodigoArticuloClick;
(gridDetalles.ColumnByFieldName('DESCRIPCION')
as TdxDBTreeListButtonColumn).OnEditButtonClick := GridBotonDescripcionClick;
pnlBarraGrid.Visible := True;
try
{ Antes de aplicar la caché hay que asegurarse de que la
tabla está cerrada. }
TablaAlbaranes.Prepare;
TablaAlbaranes.Open;
if TablaAlbaranes.RecordCount = 0 then
begin
VerMensajeFmt(msgAlbNoExisteAlb, [CodigoAlbaran]);
CancelarModificar;
CloseFrame;
Exit;
end;
TablaAlbaranes.Edit;
TablaAlbaranes.Post;
TablaAlbaranes.Edit;
with TablaDetallesAlbaranes do
begin
Close;
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Params.ByName('CODIGOALBARAN').AsString := CodigoAlbaran;
Prepare;
Open;
end;
with TablaDetallesMem do
begin
Close;
Open;
CargarDetalles;
ActivarEventosCampos;
end;
dmTablaAlbaranesInstalador.InicializarTablaAlbaranes(@TablaAlbaranes);
Visible := True;
except
on E : EIBError do
begin
case E.IBErrorCode of
isc_lock_conflict : begin
VerMensajeFmt(msgAlbBloqueado, [CodigoAlbaran]);
CancelarModificar;
CloseFrame;
Exit;
end
else
TratarExcepcion(E);
end;
end;
on E : Exception do
TratarExcepcion(E);
end;
end;
function TfrAlbaranInstalador.AnadirDatos: Boolean;
var
NumConcepto : Integer;
begin
Result := False;
try
NumConcepto := 0;
TablaAlbaranes.Post;
TablaAlbaranes.ApplyUpdates;
BorrarDetallesIB;
SalvarDetalles;
dmTablaAlbaranesInstalador.IncrementarCodigo;
FCodigoAlbaran := TablaAlbaranes.FieldByName('CODIGO').AsString;
Commit;
TablaAlbaranes.Close;
TablaDetallesAlbaranes.Close;
TablaDetallesMem.Close;
TablaAlbaranes.CachedUpdates := False;
Result := True;
except
on E : EIBError do begin
if E.IBErrorCode = isc_unique_key_violation then begin
VerMensajeFmt(msgAlbCodAlbRepetido, [Codigo.Field.AsString]);
TablaAlbaranes.Edit;
end
else
TratarExcepcion(E);
end;
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrAlbaranInstalador.BuscarAlbaran;
begin
if Transaccion = NIL then
exit;
try
TablaAlbaranes.DisableControls;
TablaDetallesMem.DisableControls;
TablaAlbaranes.Close;
TablaDetallesAlbaranes.Close;
// Buscar la fila a tratar si es necesario
if not VarIsNull(FCodigoAlbaran) then
begin
TablaAlbaranes.ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
TablaAlbaranes.ParamByName('CODIGO').AsString := FCodigoAlbaran;
TablaDetallesAlbaranes.ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
TablaDetallesAlbaranes.ParamByName('CODIGOALBARAN').AsString := FCodigoAlbaran;
end;
TablaAlbaranes.Prepare;
TablaAlbaranes.Open;
TablaDetallesAlbaranes.Prepare;
TablaDetallesAlbaranes.Open;
TablaDetallesMem.Close;
TablaDetallesMem.Open;
BorrarDetalles;
CargarDetalles;
dmTablaAlbaranesInstalador.InicializarTablaAlbaranes(@TablaAlbaranes);
TablaAlbaranes.EnableControls;
TablaDetallesMem.EnableControls;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
function TfrAlbaranInstalador.CancelarAnadir: Boolean;
begin
Result := False;
try
TablaDetallesMem.Close;
TablaAlbaranes.Close;
TablaDetallesAlbaranes.Close;
TablaAlbaranes.CancelUpdates;
RollBack;
TablaAlbaranes.CachedUpdates := False;
Result := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
function TfrAlbaranInstalador.CancelarEliminar: Boolean;
begin
Result := False;
try
TablaDetallesMem.Close;
TablaAlbaranes.Close;
TablaDetallesAlbaranes.Close;
RollBack;
Result := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
function TfrAlbaranInstalador.CancelarModificar: Boolean;
begin
Result := False;
try
TablaDetallesMem.Close;
TablaAlbaranes.Close;
TablaDetallesAlbaranes.Close;
RollBack;
Result := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrAlbaranInstalador.CantidadDetalleSetText(Sender: TField;
const Text: String);
begin
try
if EsCadenaVacia(Text) then
Sender.AsString := '1'
else
Sender.AsString := Text;
except
on E : EConvertError do
VerMensaje(msgCantidadNoValida);
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrAlbaranInstalador.CodigoArticuloDetalleSetText(Sender: TField;
const Text: String);
var
Codigo : String;
begin
if (EsCadenaVacia(Text)) then
begin
Sender.AsString := '';
exit;
end;
Codigo := Trim(Text);
if (dmTablaArticulos.validarCodigo(Codigo)) then
Codigo := dmTablaArticulos.formatearCodigo(Codigo)
else
raise Exception.CreateFmt(msgArtCodArtIncorrecto, [Codigo]);
Sender.AsString := Codigo;
CodigoArticulo := Codigo;
end;
function TfrAlbaranInstalador.ComprobarDatos: Boolean;
begin
Result := False;
if EsCadenaVacia(FechaAlta.DataBinding.Field.AsString) then
begin
VerMensaje(msgAlbFaltaFechaAlta);
FechaAlta.SetFocus;
Exit;
end;
if EsCadenaVacia(Nombre.Field.AsString) then
begin
VerMensaje(msgAlbFaltaNombreCli);
Nombre.SetFocus;
Exit;
end;
if TablaDetallesMem.IsEmpty then
begin
VerMensaje(msgAlbFaltaArticulos);
gridDetalles.SetFocus;
Exit
end;
Result := True;
end;
constructor TfrAlbaranInstalador.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FCodigoInstalador := NULL;
FCodigoArticulo := NULL;
Entidad := entAlbaranInstalador;
ConfigurarFrame(Self, Self.Entidad);
BaseDatos := dmBaseDatos.BD;
Transaccion := dmBaseDatos.Transaccion;
Transaccion.DefaultDatabase := BaseDatos;
TablaAlbaranes := TIBDataSet.Create(Self);
TablaDetallesAlbaranes := TIBDataSet.Create(Self);
TablaDetallesMem := TRxMemoryData.Create(Self);
dsAlbaran.DataSet := TablaAlbaranes;
dsDetallesAlbaran.DataSet := TablaDetallesMem;
with TablaAlbaranes do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaAlbaranesInstalador.sqlConsultarAlbaran);
InsertSQL.Assign(dmTablaAlbaranesInstalador.sqlInsertarAlbaran);
ModifySQL.Assign(dmTablaAlbaranesInstalador.sqlModificarAlbaran);
DeleteSQL.Assign(dmTablaAlbaranesInstalador.sqlEliminarAlbaran);
end;
with TablaDetallesAlbaranes do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaAlbaranesInstalador.sqlConsultarGridDetalles);
InsertSQL.Assign(dmTablaAlbaranesInstalador.sqlInsertarDetalles);
ModifySQL.Assign(dmTablaAlbaranesInstalador.sqlModificarDetalles);
DeleteSQL.Assign(dmTablaAlbaranesInstalador.sqlEliminarDetalles);
end;
try
TablaDetallesMem.CopyStructure(TablaDetallesAlbaranes);
TablaDetallesMem.FieldByName('CODIGOEMPRESA').Required := False;
TablaDetallesMem.FieldByName('CODIGOALBARAN').Required := False;
TablaDetallesMem.FieldByName('NUMCONCEPTO').Required := False;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
dmTablaAlbaranesInstalador.InicializarGridDetalles(gridDetalles);
end;
destructor TfrAlbaranInstalador.Destroy;
begin
gridDetalles.DataSource := NIL;
TablaDetallesMem.Close;
TablaDetallesMem.Free;
TablaAlbaranes.Close;
TablaAlbaranes.UnPrepare;
TablaAlbaranes.Free;
TablaDetallesAlbaranes.Close;
TablaDetallesAlbaranes.Unprepare;
TablaDetallesAlbaranes.Free;
inherited;
end;
function TfrAlbaranInstalador.EliminarDatos: Boolean;
begin
Result := False;
try
TablaAlbaranes.Delete;
Commit;
BorrarDetalles;
TablaAlbaranes.Close;
TablaDetallesAlbaranes.Close;
TablaDetallesMem.Close;
Result := True;
except
on E : EIBError do
begin
case E.IBErrorCode of
isc_lock_conflict : VerMensajeFmt(msgAlbBloqueado, [Codigo.Field.AsString]);
else
TratarExcepcion(E);
end;
end;
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrAlbaranInstalador.FreeContenido;
var
Contador : integer;
ListaCodigos : TStringList;
begin
if (ContenidoModal is TRdxFrameAlbaranes) then begin
CodigoAlbaran := (ContenidoModal as TRdxFrameAlbaranes).CodigoAlbaran;
ActivarModo;
end;
if (ContenidoModal is TRdxFrameArticulos) then
begin
ListaCodigos := (ContenidoModal as TRdxFrameArticulos).ListaArticulos;
for Contador := 0 to ListaCodigos.Count - 1 do
begin
CodigoArticulo := ListaCodigos.Strings[Contador];
bAnadirClick(Self);
end;
TablaDetallesMem.Cancel;
end;
if (ContenidoModal is TfrEditorDescripcion) then
begin
TablaDetallesMem.FieldByName('DESCRIPCION').AsString := (ContenidoModal as TfrEditorDescripcion).Texto;
TablaDetallesMem.Post;
TablaDetallesMem.Edit;
end;
if (ContenidoModal is TRdxFrameInstaladores) then
CodigoInstalador := (ContenidoModal as TRdxFrameInstaladores).CodigoInstalador;
inherited FreeContenido;
end;
procedure TfrAlbaranInstalador.GridBotonCodigoArticuloClick(Sender: TObject);
begin
TablaDetallesMem.Edit;
WidthModal := 1000;
HeightModal := 700;
ContenidoModal := TfrArticulosFabPro.Create(Self);
end;
function TfrAlbaranInstalador.ModificarDatos: Boolean;
begin
Result := False;
try
TablaAlbaranes.Post;
BorrarDetallesIB;
SalvarDetalles;
Commit;
TablaAlbaranes.Close;
TablaDetallesAlbaranes.Close;
TablaDetallesMem.Close;
Result := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrAlbaranInstalador.SetCodigoArticulo(Value: Variant);
var
DatosArticulo : TDatosArticulo;
begin
if VarIsNull(Value) then
exit;
if Value = '' then
exit;
DatosArticulo := TDatosArticulo.Create;
DatosArticulo.Codigo := Value;
try
if dmTablaArticulos.darDatosArticulo(DatosArticulo) then
begin
with TablaDetallesMem do
begin
Edit;
FieldByName('CODIGOARTICULO').AsString := DatosArticulo.Codigo;
FieldByName('DESCRIPCION').AsString := DatosArticulo.Descripcion;
FieldByName('CANTIDAD').AsString := '1';
FieldByName('UNIDADESMEDIDA').AsString := DatosArticulo.Unidadesmedida;
Post;
end;
FCodigoArticulo := Value;
end
else
raise Exception.CreateFmt(msgArtCodArtNoExiste, [Value]);
finally
DatosArticulo.Free;
end;
end;
procedure TfrAlbaranInstalador.SetCodigoInstalador(Value: Variant);
var
DatosInstalador : TDatosInstalador;
begin
if VarIsNull(Value) then
exit;
FCodigoInstalador := Value;
DatosInstalador := TDatosInstalador.Create;
try
DatosInstalador.Codigo := FCodigoInstalador;
dmTablaInstaladores.darDatosInstalador(DatosInstalador);
CodInstalador.DataBinding.Field.AsString := DatosInstalador.Codigo;
Nombre.Field.AsString := DatosInstalador.Nombre;
Telefono.Field.AsString := DatosInstalador.Telefono1;
finally
DatosInstalador.Free;
end;
end;
procedure TfrAlbaranInstalador.VerModal;
begin
if (ContenidoModal is TRdxFrameArticulos) then
(ContenidoModal as TRdxFrameArticulos).CodigoArticulo := CodigoArticulo;
if (ContenidoModal is TfrEditorDescripcion) then
(ContenidoModal as TfrEditorDescripcion).Texto := TablaDetallesMem.FieldByName('DESCRIPCION').AsString;
inherited;
end;
procedure TfrAlbaranInstalador.CodigoButtonClick(Sender: TObject);
begin
if (TratarCambios = IDCANCEL) then
exit;
{ Esto es porque en modo 'Modificar' hacemos un cambio y pulsamos
este botón se cierra la tabla y si en el frame hijo (el del grid) damos
a cancelar, FCodigoAlbaran es NULL y da error al activar modo porque
no se inicializa los parámetros de la sql. Lo hace BuscarAlbaran. }
if not TablaAlbaranes.Active then
BuscarAlbaran;
ContenidoModal := TfrAlbaranesInstaladores.Create(Self);
end;
procedure TfrAlbaranInstalador.CodigoExit(Sender: TObject);
begin
if (Modo <> Anadir) or (Visible = false) then
Exit;
if EsCadenaVacia(Codigo.Text) then
Codigo.Field.AsString := dmTablaAlbaranesInstalador.darNuevoCodigo;
if (dmTablaAlbaranesInstalador.validarCodigo(Codigo.Text)) then
begin
Codigo.Field.asString := dmTablaAlbaranesInstalador.formatearCodigo(Codigo.Text);
if (dmTablaAlbaranesInstalador.ExisteCodigo(EmpresaActiva.Codigo, Codigo.Text)) then begin
VerMensajeFmt(msgAlbCodAlbRepetido, [Codigo.Text]);
Codigo.SetFocus;
end;
end
else begin
VerMensajeFmt(msgAlbCodAlbIncorrecto, [Codigo.Text]);
Codigo.SetFocus;
end;
end;
procedure TfrAlbaranInstalador.bAnadirClick(Sender: TObject);
begin
try
with TablaDetallesMem do
begin
DisableControls;
Next;
if EOF then
Append
else
Insert;
EnableControls;
end;
gridDetalles.SetFocus;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrAlbaranInstalador.bEliminarClick(Sender: TObject);
begin
if (VerMensajePregunta(msgDeseaBorrar) <> IDYES) then
Exit;
if TablaDetallesMem.RecordCount = 0 then begin
{ Hacemos un cancel de la tabla por si el registro actual estuviera
recien creado }
TablaDetallesMem.Cancel;
Exit
end;
try
TablaDetallesMem.Delete;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrAlbaranInstalador.bEliminarTodoClick(Sender: TObject);
begin
if (VerMensajePregunta(msgDeseaBorrarTodo) <> IDYES) then
Exit;
BorrarDetalles;
end;
procedure TfrAlbaranInstalador.bSalirClick(Sender: TObject);
begin
try
Rollback;
CloseFrame;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrAlbaranInstalador.bGuardarClick(Sender: TObject);
begin
if (RealizarOperacion) then
CloseFrame;
end;
procedure TfrAlbaranInstalador.bCancelarClick(Sender: TObject);
begin
if (TratarCambios = IDOK) then
CloseFrame;
end;
procedure TfrAlbaranInstalador.ActivarEventosCampos;
begin
with TablaDetallesMem do
begin
FieldByName('CODIGOARTICULO').OnSetText := CodigoArticuloDetalleSetText;
FieldByName('CANTIDAD').OnSetText := CantidadDetalleSetText;
end;
end;
procedure TfrAlbaranInstalador.BorrarDetalles;
begin
with TablaDetallesMem do
begin
DisableControls;
EmptyTable;
EnableControls;
end;
end;
procedure TfrAlbaranInstalador.BorrarDetallesIB;
begin
with TablaDetallesAlbaranes do
begin
if IsEmpty then
Exit;
DisableControls;
Last;
while not BOF do
begin
Delete;
Prior;
end;
if not IsEmpty then
Delete;
EnableControls;
end;
end;
procedure TfrAlbaranInstalador.CargarDetalles;
var
NumeroCampo : Integer;
begin
with TablaDetallesMem do
begin
if TablaDetallesAlbaranes.IsEmpty then
Exit;
DisableControls;
TablaDetallesAlbaranes.First;
while not TablaDetallesAlbaranes.EOF do
begin
Append;
for NumeroCampo := 0 to TablaDetallesAlbaranes.FieldCount-1 do
Fields[NumeroCampo].AsString := TablaDetallesAlbaranes.Fields[NumeroCampo].AsString;
Post;
TablaDetallesAlbaranes.Next;
end;
EnableControls;
end;
end;
procedure TfrAlbaranInstalador.SalvarDetalles;
var
NumeroCampo : Integer;
NumConcepto : Integer;
begin
try
with TablaDetallesMem do
begin
if IsEmpty then
Exit;
NumConcepto := 0;
DisableControls;
First;
while not EOF do
begin
TablaDetallesAlbaranes.Append;
for NumeroCampo := 0 to FieldCount-1 do
begin
if Fields[NumeroCampo].FieldName = 'CODIGOEMPRESA' then
TablaDetallesAlbaranes.Fields[NumeroCampo].AsInteger := EmpresaActiva.Codigo
else begin
if Fields[NumeroCampo].FieldName = 'CODIGOALBARAN' then
TablaDetallesAlbaranes.Fields[NumeroCampo].AsString := Codigo.Field.AsString
else
if Fields[NumeroCampo].FieldName = 'NUMCONCEPTO' then
TablaDetallesAlbaranes.Fields[NumeroCampo].AsInteger := NumConcepto
else
TablaDetallesAlbaranes.Fields[NumeroCampo].AsString := Fields[NumeroCampo].AsString;
end;
end;
TablaDetallesAlbaranes.Post;
Next;
NumConcepto := NumConcepto + 1;
end;
EnableControls;
end;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrAlbaranInstalador.GridBotonDescripcionClick(Sender: TObject);
begin
TablaDetallesMem.Edit;
WidthModal := 420;
HeightModal := 435;
ModoModal := Modo;
ContenidoModal := TfrEditorDescripcion.Create(Self);
end;
procedure TfrAlbaranInstalador.NombreButtonClick(Sender: TObject);
begin
ContenidoModal := TfrInstaladores.Create(Self);
end;
procedure TfrAlbaranInstalador.NombreExit(Sender: TObject);
begin
if not (Modo in [Anadir, Modificar]) then
Exit;
// if EsCadenaVacia( ) then
// Exit;
{
if (dmTablaInstaladores.ValidarCodigo(DisplayValue)) then begin
//Comprueba que le numero es lo sufucientemente pequeño para ser un entero
if not EsInteger(DisplayValue) then
begin
VerMensajeFmt(msgInsCodInsIncorrecto,[DisplayValue]);
DisplayValue := '0';
CodInstalador.SetFocus;
end
else
begin
DisplayValue := dmTablaInstaladores.FormatearCodigo(DisplayValue);
if (dmTablaInstaladores.ExisteCodigo(DisplayValue)) then
CodigoInstalador := DisplayValue
else begin
VerMensajeFmt(msgProCodProvNoExiste, [DisplayValue]);
Paginas.ActivePageIndex := 0;
CodInstalador.SetFocus;
end;
end;
end
else begin
VerMensajeFmt(msgProCodProvIncorrecto, [CodInstalador.Text]);
Paginas.ActivePageIndex := 0;
CodInstalador.SetFocus;
end;
}
end;
end.