This repository has been archived on 2024-12-02. You can view files and clone it, but cannot push or open issues or pull requests.
FactuGES/Proveedores/Proveedor.pas
2007-06-26 08:08:27 +00:00

967 lines
26 KiB
ObjectPascal

{
===============================================================================
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: 16-11-2002
Versión actual: 1.0.1
Fecha versión actual: 16-04-2003
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
16-04-2003 p6. Añadir gestión de representantes.
===============================================================================
}
unit Proveedor;
interface
uses
Windows, Db, StdCtrls, RdxMemo, RdxCampos, RdxTitulos, Forms, RdxPaneles,
RdxBotones, Controls, ExtCtrls, RdxBarras, Classes, RdxFrameProveedores,
RdxFrame, RXDBCtrl, ComCtrls, AdvPanel, cxSpinEdit, cxDBEdit, cxControls,
cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxButtonEdit, Configuracion,
cxMemo, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDBData,
cxGridLevel, cxClasses, cxGridCustomView, cxGridCustomTableView,
cxGridCardView, cxGridDBCardView, cxGrid, RdxPageControl, RXMemDS,
cxDataStorage;
type
TfrProveedor = class(TRdxFrameProveedores)
brDoble: TRdxBarraInferior;
bAceptar: TRdxBoton;
bCancelar: TRdxBoton;
brSimple: TRdxBarraInferior;
bSalir: TRdxBoton;
pnlCuerpo: TPanel;
dsProveedor: TDataSource;
Titulo: TRdxPanelTituloOperacion;
pnlProveedor: TAdvPanel;
eCodigo: TLabel;
eNIFCIF: TLabel;
eDescuento: TLabel;
eNombre: TLabel;
eObservaciones: TLabel;
Codigo: TcxDBButtonEdit;
NIF: TcxDBTextEdit;
Nombre: TcxDBTextEdit;
Observaciones: TcxDBMemo;
Descuento: TcxDBTextEdit;
Label1: TLabel;
Distribucion: TcxDBTextEdit;
PanelDirecciones: TRdxPanel;
Paginas: TRdxPagesControl;
pagDireccion: TTabSheet;
pagRepresentantes: TTabSheet;
pnlGridArticulos: TPanel;
pnlBarraGrid: TRdxPanel;
bAnadir: TRdxBoton;
bEliminar: TRdxBoton;
bEliminarTodo: TRdxBoton;
gridRepresentantes: TcxGrid;
gridRepresentantesDBCardView: TcxGridDBCardView;
gridRepresentantesLevel: TcxGridLevel;
eDireccion: TLabel;
Calle: TcxDBTextEdit;
eProvincia: TLabel;
Provincia: TcxDBButtonEdit;
ePoblacion: TLabel;
Poblacion: TcxDBButtonEdit;
eNumero: TLabel;
Numero: TcxDBTextEdit;
ePiso: TLabel;
Piso: TcxDBTextEdit;
eCodigoPostal: TLabel;
CodigoPostal: TcxDBTextEdit;
eFax: TLabel;
Fax: TcxDBTextEdit;
eTelefono2: TLabel;
Telefono2: TcxDBTextEdit;
eTelefono1: TLabel;
Telefono1: TcxDBTextEdit;
Label2: TLabel;
Movil1: TcxDBTextEdit;
Label3: TLabel;
Movil2: TcxDBTextEdit;
eCorreo: TLabel;
PersonaContacto: TcxDBTextEdit;
Label4: TLabel;
Correo: TcxDBTextEdit;
dsRepresentantes: TDataSource;
procedure bSalirClick(Sender: TObject);
procedure bCancelarClick(Sender: TObject);
procedure CodigoExit(Sender: TObject);
procedure bAceptarClick(Sender: TObject);
procedure DescuentoExit(Sender: TObject);
procedure CodigoPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure ProvinciaPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure PoblacionPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure bAnadirClick(Sender: TObject);
procedure bEliminarClick(Sender: TObject);
procedure bEliminarTodoClick(Sender: TObject);
procedure gridRepresentantesResize(Sender: TObject);
procedure gridRepresentantesDBCardViewKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
private
FCodigoProvincia : Variant;
FCodigoPoblacion : Variant;
FTablaRepresentantesMem: TRxMemoryData;
procedure ProvinciaSetText(Sender: TField; const Text: String);
procedure dsRepresentantesStateChange(Sender: TObject);
procedure RepresentantesMemAfterInsert(DataSet: TDataSet);
procedure CargarDatosRepresentantes;
procedure SalvarDatosRepresentantes;
procedure BorrarDatosRepresentantesIB;
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 SetCodigoProvincia (Value : Variant); virtual;
procedure SetCodigoPoblacion (Value : Variant); virtual;
procedure FreeContenido; override;
procedure BuscarProveedor; override;
public
property CodigoProvincia : Variant read FCodigoProvincia write SetCodigoProvincia;
property CodigoPoblacion : Variant read FCodigoPoblacion write SetCodigoPoblacion;
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
published
property TablaProveedores;
property CodigoProveedor;
property TablaRepresentantesMem : TRxMemoryData read FTablaRepresentantesMem write FTablaRepresentantesMem;
end;
var
frProveedor: TfrProveedor;
implementation
{$R *.DFM}
uses
TablaProveedores, Mensajes, IB, Colores, IBDatabase, Proveedores,
Provincias, RdxFrameProvincias, Poblaciones, RdxFramePoblaciones,
TablaProvincias, BaseDatos, IBCustomDataSet, Sysutils, StrFunc,
TablaPoblaciones, Excepciones, IBErrorCodes, Variants, Entidades, NumFunc,
Literales, TablaRepresentantesProveedor;
constructor TfrProveedor.Create (AOwner : TComponent);
begin
inherited Create(AOwner);
Entidad := entProveedor;
FCodigoProvincia := NULL;
FCodigoPoblacion := NULL;
BaseDatos := dmBaseDatos.BD;
Transaccion := dmBaseDatos.Transaccion;
TablaRepresentantesMem := TRxMemoryData.Create(Self);
TablaProveedores := TIBDataSet.Create(Self);
TablaRepresentantes := TIBDataSet.Create(Self);
dsProveedor.DataSet := TablaProveedores;
dsRepresentantes.DataSet := TablaRepresentantesMem;
dsRepresentantes.OnStateChange := dsRepresentantesStateChange;
with TablaProveedores do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaProveedores.sqlConsultar);
InsertSQL.Assign(dmTablaProveedores.sqlInsertar);
ModifySQL.Assign(dmTablaProveedores.sqlModificar);
DeleteSQL.Assign(dmTablaProveedores.sqlEliminar);
RefreshSQL.Assign(dmTablaProveedores.sqlConsultar);
end;
with TablaRepresentantes do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaRepresentantesProveedor.sqlGrid);
InsertSQL.Assign(dmTablaRepresentantesProveedor.sqlInsertar);
ModifySQL.Assign(dmTablaRepresentantesProveedor.sqlModificar);
DeleteSQL.Assign(dmTablaRepresentantesProveedor.sqlEliminar);
RefreshSQL.Assign(dmTablaRepresentantesProveedor.sqlConsultar);
end;
TablaRepresentantesMem.CopyStructure(TablaRepresentantes);
dmTablaRepresentantesProveedor.InicializarGridRepresentantes(gridRepresentantesDBCardView);
Paginas.ActivePageIndex := 0;
bCancelar.Cancel := True;
bSalir.Cancel := True;
end;
procedure TfrProveedor.SetCodigoProvincia(Value: Variant);
begin
if (not EsCadenaVacia(Value)) then
begin
FCodigoProvincia := Value;
Provincia.DataBinding.Field.AsString := dmTablaProvincias.DarNombreProvincia(FCodigoProvincia);
end;
end;
procedure TfrProveedor.SetCodigoPoblacion(Value: Variant);
begin
if (not EsCadenaVacia(Value)) then
begin
FCodigoPoblacion := Value;
Poblacion.DataBinding.Field.AsString := dmTablaPoblaciones.darNombrePoblacion(FCodigoProvincia, FCodigoPoblacion);
end;
end;
procedure TfrProveedor.bSalirClick(Sender: TObject);
begin
try
Rollback;
CloseFrame;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrProveedor.bCancelarClick(Sender: TObject);
begin
if (TratarCambios = IDOK) then
CloseFrame;
end;
function TfrProveedor.AnadirDatos : Boolean;
begin
Result := False;
try
TablaProveedores.Post;
BorrarDatosRepresentantesIB;
SalvarDatosRepresentantes;
CodigoProveedor := TablaProveedores.FieldByName('CODIGO').AsString;
dmTablaProveedores.IncrementarCodigo;
Commit;
TablaProveedores.Close;
TablaRepresentantes.Close;
TablaRepresentantesMem.Close;
Result := True;
except
on E : EIBError do begin
if E.IBErrorCode = isc_unique_key_violation then
begin
VerMensajeFmt(msgProvCodProvRepetido, [Codigo.DataBinding.Field.AsString]);
TablaProveedores.Edit;
end
else
TratarExcepcion(E);
end;
on E : Exception do
TratarExcepcion(E);
end;
end;
function TfrProveedor.ModificarDatos : Boolean;
begin
Result := False;
try
TablaProveedores.Post;
BorrarDatosRepresentantesIB;
SalvarDatosRepresentantes;
Commit;
TablaProveedores.Close;
TablaRepresentantes.Close;
TablaRepresentantesMem.Close;
Result := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
function TfrProveedor.EliminarDatos : Boolean;
begin
Result := False;
try
TablaProveedores.Delete;
Commit;
TablaProveedores.Close;
TablaRepresentantes.Close;
TablaRepresentantesMem.Close;
Result := True;
except
on E : EIBError do
begin
case E.IBErrorCode of
isc_lock_conflict : VerMensajeFmt(msgProvProvBloqueado, [Codigo.DataBinding.Field.AsString]);
isc_foreign_key : VerMensajeFmt(msgProvProvNoElim, [Codigo.DataBinding.Field.AsString]);
else
TratarExcepcion(E);
end;
end;
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrProveedor.ActivarModoAnadir;
var
CodNuevo : Variant;
begin
dsProveedor.AutoEdit := True;
dsRepresentantes.AutoEdit := True;
pnlBarraGrid.Visible := True;
ActivarEdicionGridDetalles(gridRepresentantes);
Codigo.Properties.Buttons[0].Visible := False;
Provincia.Properties.Buttons[0].Visible := True;
Poblacion.Properties.Buttons[0].Visible := True;
Codigo.Properties.ReadOnly := False;
try
with TablaProveedores do
begin
Close;
Prepare;
Open;
FieldByName('PROVINCIA').OnSetText := ProvinciaSetText;
Insert;
FieldByName('FECHAALTA').AsDateTime := dmBaseDatos.DarFecha;
FieldByName('USUARIO').AsString := dmBaseDatos.Usuario;
end;
with TablaRepresentantes do
begin
Close;
Prepare;
Params.ByName('CODIGOPROVEEDOR').AsString := CodNuevo;
Open;
end;
with TablaRepresentantesMem do
begin
Close;
AfterInsert := RepresentantesMemAfterInsert;
Open;
end;
CodNuevo := dmTablaProveedores.DarNuevoCodigo;
Codigo.DataBinding.Field.asString := CodNuevo;
Visible := True;
NIF.SetFocus;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrProveedor.ActivarModoModificar;
begin
dsProveedor.AutoEdit := True;
dsRepresentantes.AutoEdit := True;
pnlBarraGrid.Visible := True;
Codigo.Properties.Buttons[0].Visible := True;
Provincia.Properties.Buttons[0].Visible := True;
Poblacion.Properties.Buttons[0].Visible := True;
Codigo.Properties.ReadOnly := True;
ActivarEdicionGridDetalles(gridRepresentantes);
// Para que no haga dos accesos a la tabla cuando es consulta
FCodigoProvincia := dmTablaProvincias.DarCodigoProvincia(Provincia.Text);
try
with TablaProveedores do
begin
Open;
FieldByName('PROVINCIA').OnSetText := ProvinciaSetText;
if RecordCount = 0 then
begin
VerMensajeFmt(msgProvNoExisteProv, [CodigoProveedor]);
CancelarModificar;
CloseFrame;
Exit;
end;
Edit;
Post;
Edit;
end;
with TablaRepresentantes do
begin
Close;
Params.ByName('CODIGOPROVEEDOR').AsString := Codigo.DataBinding.Field.AsString;
Prepare;
Open;
end;
with TablaRepresentantesMem do
begin
Close;
Open;
CargarDatosRepresentantes;
AfterInsert := RepresentantesMemAfterInsert;
if not IsEmpty then
Edit;
end;
// Bloquear las sucursales
with TablaRepresentantes do
begin
if RecordCount > 0 then
begin
Edit;
Post;
Edit;
end;
end;
Visible := True;
NIF.SetFocus;
except
on E : EIBError do
begin
case E.IBErrorCode of
isc_lock_conflict : begin
VerMensajeFmt(msgProvProvBloqueado, [CodigoProveedor]);
CancelarModificar;
CloseFrame;
Exit;
end
else
TratarExcepcion(E);
end;
end;
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrProveedor.ActivarModoConsultar;
begin
dsProveedor.AutoEdit := False;
dsRepresentantes.AutoEdit := False;
pnlBarraGrid.Visible := False;
Codigo.Properties.Buttons[0].Visible := True;
Provincia.Properties.Buttons[0].Visible := False;
Poblacion.Properties.Buttons[0].Visible := False;
try
with TablaProveedores do
begin
Open;
if RecordCount = 0 then
begin
VerMensajeFmt(msgProvNoExisteProv, [CodigoProveedor]);
CloseFrame;
Exit;
end;
Cancel;
end;
with TablaRepresentantes do
begin
Close;
Params.ByName('CODIGOPROVEEDOR').AsString := Codigo.DataBinding.Field.AsString;
Prepare;
Open;
end;
with TablaRepresentantesMem do
begin
Close;
Open;
CargarDatosRepresentantes;
end;
Visible := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrProveedor.ActivarModoEliminar;
begin
dsProveedor.AutoEdit := False;
dsRepresentantes.AutoEdit := False;
pnlBarraGrid.Visible := False;
Codigo.Properties.Buttons[0].Visible := True;
Provincia.Properties.Buttons[0].Visible := False;
Poblacion.Properties.Buttons[0].Visible := False;
try
with TablaProveedores do
begin
Open;
if RecordCount = 0 then
begin
VerMensajeFmt(msgProvNoExisteProv, [CodigoProveedor]);
CancelarEliminar;
CloseFrame;
Exit;
end;
Cancel;
end;
with TablaRepresentantes do
begin
Close;
Params.ByName('CODIGOPROVEEDOR').AsString := Codigo.DataBinding.Field.AsString;
Prepare;
Open;
end;
with TablaRepresentantesMem do
begin
Close;
Open;
CargarDatosRepresentantes;
end;
Visible := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrProveedor.CodigoExit(Sender: TObject);
begin
if (Modo <> Anadir) or (Visible = false) then
exit;
if not esCadenaVacia(Codigo.Text) then
begin
if (dmTablaProveedores.validarCodigo(Codigo.Text)) then begin
Codigo.DataBinding.Field.AsString := dmTablaProveedores.formatearCodigo(Codigo.Text);
if (dmTablaProveedores.existeCodigo(Codigo.Text)) then begin
VerMensajeFmt(msgProvCodProvRepetido, [Codigo.Text]);
Codigo.SetFocus;
end;
end
else begin
VerMensajeFmt(msgProvCodProvIncorrecto, [Codigo.Text]);
Codigo.SetFocus;
end;
end
else
Codigo.DataBinding.Field.AsString := dmTablaProveedores.darNuevoCodigo;
end;
destructor TfrProveedor.Destroy;
begin
gridRepresentantesDBCardView.DataController.DataSource := NIL;
TablaRepresentantesMem.Close;
TablaRepresentantesMem.Free;
TablaRepresentantes.Close;
TablaRepresentantes.UnPrepare;
TablaRepresentantes.Free;
TablaProveedores.Close;
TablaProveedores.UnPrepare;
TablaProveedores.Free;
inherited;
end;
procedure TfrProveedor.bAceptarClick(Sender: TObject);
begin
if (RealizarOperacion) then
CloseFrame;
end;
procedure TfrProveedor.FreeContenido;
begin
if (ContenidoModal is TRdxFrameProveedores) then
begin
CodigoProveedor := (ContenidoModal as TRdxFrameProveedores).CodigoProveedor;
ActivarModo;
end;
if (ContenidoModal is TRdxFrameProvincias) then
CodigoProvincia := (ContenidoModal as TRdxFrameProvincias).CodigoProvincia;
if (ContenidoModal is TRdxFramePoblaciones) then begin
CodigoProvincia := (ContenidoModal as TRdxFramePoblaciones).CodigoProvincia;
CodigoPoblacion := (ContenidoModal as TRdxFramePoblaciones).CodigoPoblacion;
end;
inherited FreeContenido;
end;
procedure TfrProveedor.VerModal;
begin
if (ContenidoModal is TRdxFramePoblaciones) then
(ContenidoModal as TRdxFramePoblaciones).CodigoProvincia := FCodigoProvincia;
inherited;
end;
procedure TfrProveedor.BuscarProveedor;
begin
if Transaccion = NIL then
Exit;
try
TablaProveedores.Close;
// Buscar la fila a tratar si es necesario
if not EsCadenaVacia(CodigoProveedor) then
begin
TablaProveedores.Params.ByName('CODIGO').AsString := CodigoProveedor;
TablaRepresentantes.Params.ByName('CODIGOPROVEEDOR').AsString := CodigoProveedor;
end;
TablaProveedores.Prepare;
TablaRepresentantes.Prepare;
TablaProveedores.Open;
TablaRepresentantes.Open;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
function TfrProveedor.CancelarAnadir: Boolean;
begin
Result := False;
try
RollBack;
TablaProveedores.Close;
TablaRepresentantes.Close;
TablaRepresentantesMem.Close;
Result := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
function TfrProveedor.CancelarEliminar: Boolean;
begin
Result := False;
try
RollBack;
TablaProveedores.Close;
TablaRepresentantes.Close;
TablaRepresentantesMem.Close;
Result := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
function TfrProveedor.CancelarModificar: Boolean;
begin
Result := False;
try
RollBack;
TablaProveedores.Close;
TablaRepresentantes.Close;
TablaRepresentantesMem.Close;
Result := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
function TfrProveedor.ComprobarDatos: Boolean;
begin
Result := False;
if EsCadenaVacia(Nombre.Text) then
begin
VerMensaje(msgProvFaltaNombreProv);
Nombre.SetFocus;
Exit;
end;
Result := True;
end;
procedure TfrProveedor.DescuentoExit(Sender: TObject);
begin
if not (Modo in [Anadir, Modificar]) then
Exit;
try
ValidarDto(Descuento.Text);
except
on E : Exception do begin
Descuento.SetFocus;
VerMensaje(E.Message);
end;
end;
end;
procedure TfrProveedor.ProvinciaSetText(Sender: TField;
const Text: String);
begin
FCodigoProvincia := dmTablaProvincias.darCodigoProvincia(Text);
Sender.AsString := Text;
end;
procedure TfrProveedor.CodigoPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
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, FCodigoProveedor es NULL y da error al activar modo porque
no se inicializa los parámetros de la sql. Lo hace BuscarProveedor. }
if not TablaProveedores.Active then
BuscarProveedor;
ContenidoModal := TfrProveedores.Create(Self);
end;
procedure TfrProveedor.ProvinciaPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
begin
CaptionModal := msgListaProvincias;
WidthModal := 280;
HeightModal := 460;
ContenidoModal := TfrProvincias.Create(Self);
end;
procedure TfrProveedor.PoblacionPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
begin
if (EsCadenaVacia(CodigoProvincia)) then begin
VerMensaje(msgSinProvincia);
Provincia.SetFocus;
Exit;
end;
CaptionModal := Format(msgListaPoblaciones, [dmTablaProvincias.DarNombreProvincia(CodigoProvincia)]);
WidthModal := 280;
HeightModal := 460;
ContenidoModal := TfrPoblaciones.Create(Self);
end;
procedure TfrProveedor.dsRepresentantesStateChange(Sender: TObject);
begin
if not (Modo in [Anadir, Modificar]) then
Exit;
bEliminar.Enabled := not (TablaRepresentantesMem.RecordCount = 0);
bEliminarTodo.Enabled := not (TablaRepresentantesMem.RecordCount = 0);
end;
procedure TfrProveedor.RepresentantesMemAfterInsert(DataSet: TDataSet);
begin
with DataSet do
begin
FieldByName('CODIGOPROVEEDOR').AsString := Codigo.DataBinding.Field.AsString;
FieldByName('CODIGO').AsString := '-';
end;
end;
procedure TfrProveedor.BorrarDatosRepresentantesIB;
begin
with TablaRepresentantes do
begin
if IsEmpty then
Exit;
Last;
while not BOF do
begin
Delete;
Prior;
end;
if not IsEmpty then
Delete;
end;
end;
procedure TfrProveedor.CargarDatosRepresentantes;
var
iContador : Integer;
begin
with TablaRepresentantesMem do
begin
if TablaRepresentantes.IsEmpty then
exit;
DisableControls;
TablaRepresentantes.First;
while not TablaRepresentantes.EOF do
begin
Append;
for iContador := 0 to TablaRepresentantes.FieldCount-1 do
Fields[iContador].Value := TablaRepresentantes.Fields[iContador].Value;
Post;
TablaRepresentantes.Next;
end;
First;
EnableControls;
end;
end;
procedure TfrProveedor.SalvarDatosRepresentantes;
var
NumeroCampo : Integer;
NumeroRepresentante : Integer;
Valor : Variant;
begin
NumeroRepresentante := 1;
try
with TablaRepresentantesMem do
begin
if IsEmpty then
Exit;
DisableControls;
First;
TablaRepresentantes.First;
while not EOF do
begin
TablaRepresentantes.Insert;
for NumeroCampo := 0 to FieldCount-1 do
begin
Valor := Fields[NumeroCampo].AsVariant;
if (TablaRepresentantes.Fields[NumeroCampo].FieldName = 'FECHAALTA') and
(EsCadenaVacia(Valor)) then
Valor := dmBaseDatos.DarFecha;
if (TablaRepresentantes.Fields[NumeroCampo].FieldName = 'USUARIO') and
(EsCadenaVacia(Valor)) then
Valor := dmBaseDatos.Usuario;
if TablaRepresentantes.Fields[NumeroCampo].FieldName = 'CODIGOPROVEEDOR' then
Valor := TablaProveedores.FieldByName('CODIGO').AsString;
if TablaRepresentantes.Fields[NumeroCampo].FieldName = 'CODIGO' then
Valor := NumeroRepresentante;
TablaRepresentantes.Fields[NumeroCampo].AsVariant := Valor;
end;
TablaRepresentantes.Post;
Inc(NumeroRepresentante);
Next;
end;
EnableControls;
end;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrProveedor.bAnadirClick(Sender: TObject);
begin
try
Paginas.ActivePageIndex := 1;
gridRepresentantes.SetFocus;
with TablaRepresentantesMem do
begin
Append;
Post;
Edit;
FieldByName('NOMBRE').FocusControl;
end;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrProveedor.bEliminarClick(Sender: TObject);
begin
if TablaRepresentantesMem.RecordCount = 0 then begin
{ Hacemos un cancel de la tabla por si el registro actual estuviera
recien creado }
TablaRepresentantesMem.Cancel;
exit;
end;
try
if (VerMensajePregunta(msgProvBorrarRepresentante) <> IDYES) then
Exit;
TablaRepresentantesMem.Delete;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrProveedor.bEliminarTodoClick(Sender: TObject);
begin
if (VerMensajePregunta(msgProvBorrarRepresentantes) <> IDYES) then
Exit;
try
with TablaRepresentantesMem do
begin
DisableControls;
Last;
while RecordCount > 0 do begin
Delete;
Prior;
end;
EnableControls;
end;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrProveedor.gridRepresentantesResize(Sender: TObject);
begin
gridRepresentantesDBCardView.OptionsView.CardWidth := (gridRepresentantes.Width - 40) div 2;
end;
procedure TfrProveedor.gridRepresentantesDBCardViewKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if (ssCtrl in Shift) and (Key = VK_DELETE) and
(Modo in [Anadir, Modificar]) then
bEliminar.Click;
end;
end.