git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES/trunk@4 3f40d355-893c-4141-8e64-b1d9be72e7e7
967 lines
26 KiB
ObjectPascal
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.
|