git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES/trunk@4 b68bf8ae-e977-074f-a058-3cfd71dd8f45
1707 lines
52 KiB
ObjectPascal
1707 lines
52 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: 01-10-2001
|
|
Versión actual: 1.2.5
|
|
Fecha versión actual: 12-10-2004
|
|
===============================================================================
|
|
Modificaciones:
|
|
|
|
Fecha Comentarios
|
|
---------------------------------------------------------------------------
|
|
06-10-2001 Se ha reestructurado la pantalla en pestañas.
|
|
|
|
08-10-2001 Se ha añadido en la entidad modal la entidad entAlmacen
|
|
en el botonClick de código de almacen de pedido de proveedor.
|
|
|
|
21-10-2001 Al pasar del modo Consultar/Eliminar a Añadir/Modificar no se
|
|
activaban algunos botones con lupa.
|
|
|
|
27-10-2001 Se ha arreglado un fallo que al añadir un concepto estando
|
|
en la última fila lo hacia por encima del registro, no por
|
|
debajo.
|
|
|
|
29-10-2001 Cuando se elimina un concepto con <CTRL+Supr> hay que
|
|
volver a recalcular el importe total del pedido.
|
|
|
|
30-10-2001 En el grid del contenido del pedido añadir una columna
|
|
para la unidad de medida. Si se introduce un material
|
|
que existe en la aplicación, esa columna se rellena con
|
|
la unidad de medida del material. Si se introduce un concepto
|
|
libre, el usuario puede meter lo que quiera.
|
|
|
|
04-11-2001 Es obligatorio introducir un código de almacén en el pedido.
|
|
|
|
08-11-2001 Se han pasado los detalles a una tabla de memoria.
|
|
|
|
12-11-2001 Cuando se crea un pedido, en 'Notas' debe aparecer por
|
|
defecto 'Fecha de entrega: inmediata'. Se guarda en la
|
|
constante 'msgNotaPorDefecto'.
|
|
|
|
08-01-2002 El literal de las notas se pasa a mayúsculas:
|
|
'FECHA DE ENTREGA: INMEDIATA.'
|
|
|
|
12-01-2002 Añadido el cliente final a los pedidos de proveedor.
|
|
|
|
18-01-2002 No se copia la persona de contacto del almacen/obra.
|
|
|
|
22-01-2002 Se permite modificar un pedido parcialmente recibido.
|
|
|
|
07-02-2002 Desactivada la opción de 'CancelOnExit' del grid.
|
|
|
|
24-02-2002 En la ventana modal de artículos seleccionar, si es posible,
|
|
la fila con el último material seleccionado.
|
|
|
|
02-03-2002 En el contenido se pueden añadir muchos materiales a la vez.
|
|
|
|
07-04-2002 Se ha adaptado para la transacción única.
|
|
|
|
04-05-2002 Adaptación al grid 'TdxDBGrid'.
|
|
|
|
05-05-2002 En el procedimiento 'SetCodigoArticulo' no se daba un mensaje
|
|
de error cuando el artículo no existía.
|
|
|
|
13-05-2002 Inclusión de linea de relleno del combo de instaladores.
|
|
|
|
19-08-2002 Se ha modificado la propiedad 'field' que apuntaba el
|
|
campo 'PersonaContactoAlmacen'.
|
|
|
|
21-08-2002 P237. Revisar los botones de 'Eliminar' y 'Eliminar todo'
|
|
para que al pulsar 'Esc' cancele la operación y no la
|
|
ejecute como ahora.
|
|
|
|
21-08-2002 P238. Revisar el grid de los detalles para que se pueda
|
|
borrar un código de artículo cuando ya se ha introducido.
|
|
|
|
23-08-2002 Se ha modificado el metodo buscarpedido para que cuando se lea
|
|
un pedido que posee una persona de contacto que no existe
|
|
en la lista de instaladores lo agrege a la lista del combo y
|
|
lo seleccione.
|
|
|
|
14-09-2002 Para la persona de contacto del almacén se permite escribir
|
|
texto libre aunque no esté en la lista desplegable.
|
|
|
|
14-09-2002 P242. Sacar una ventana modal para editar el
|
|
texto de un concepto.
|
|
|
|
24-09-2002 Se producía una excepción si el cursos estaba en el código
|
|
del pedido, se pulsaba la tecla 'Esc' y se elegía 'No'.
|
|
El frame estaba oculto pero saltaba el evento OnExit del
|
|
campo de código de factura.
|
|
|
|
08-03-2003 Se han puesto componentes con calendario.
|
|
|
|
07-03-2004 p272. Adaptación a multiempresa.
|
|
|
|
12-10-2004 p290. Precio coste de una obra
|
|
===============================================================================
|
|
}
|
|
|
|
unit PedidoProveedor;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
Db, RdxFramePedidosProveedor, RxMemDS, Configuracion,
|
|
dxCntner, dxTL, dxDBCtrl, dxDBGrid, dxDBTLCL, RdxBarras, RdxBotones,
|
|
ExtCtrls, RdxCampos, StdCtrls, RdxMemo, RdxComboBox, RdxTitulos,
|
|
ComCtrls, RdxPageControl, RdxPaneles, dxEditor, dxExEdtr, dxDBEdtr,
|
|
dxDBELib, dxEdLib, cxControls, cxContainer, cxEdit, cxTextEdit,
|
|
cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, cxButtonEdit;
|
|
|
|
|
|
type
|
|
TfrPedidoProveedor = class(TRdxFramePedidosProveedor)
|
|
pnlScroll: TRdxScrollPanel;
|
|
pnlPedido: TRdxPanel;
|
|
cDatosPedido: TRdxCabecera;
|
|
eCodPedido: TLabel;
|
|
Codigo: TRdxDBEdit;
|
|
eFechaAlta: TLabel;
|
|
eSituacion: TLabel;
|
|
Situacion: TRdxDBComboBox;
|
|
eFechaEmision: TLabel;
|
|
eRecepcion: TLabel;
|
|
eRealizadoPor: TLabel;
|
|
eDescripcion: TLabel;
|
|
Usuario: TRdxDBEdit;
|
|
dsDetallesPedidos: TDataSource;
|
|
Notas: TRdxDBMemo;
|
|
brDoble: TRdxBarraInferior;
|
|
bAceptar: TRdxBoton;
|
|
bCancelarGuardar: TRdxBoton;
|
|
brSimple: TRdxBarraInferior;
|
|
bSalir: TRdxBoton;
|
|
Titulo: TRdxPanelTituloOperacion;
|
|
dsPedido: TDataSource;
|
|
pnlPaginas: TRdxPanel;
|
|
Paginas: TRdxPagesControl;
|
|
pagProveedor: TTabSheet;
|
|
pagDestino: TTabSheet;
|
|
pagContenido: TTabSheet;
|
|
pnlProveedor: TRdxPanel;
|
|
eCodigo: TLabel;
|
|
eNIF: TLabel;
|
|
eNombre: TLabel;
|
|
ePersonaProveedor: TLabel;
|
|
eFax: TLabel;
|
|
eCodigoAsignado: TLabel;
|
|
NIF: TRdxDBEdit;
|
|
Nombre: TRdxDBEdit;
|
|
PersonaContacto: TRdxDBEdit;
|
|
Fax: TRdxDBEdit;
|
|
CodigoCliente: TRdxDBEdit;
|
|
pnlDestinoPedido: TRdxPanel;
|
|
eCodAlmacen: TLabel;
|
|
ePersona: TLabel;
|
|
eNombreAlmacen: TLabel;
|
|
eDireccion: TLabel;
|
|
eNumero: TLabel;
|
|
ePiso: TLabel;
|
|
eProvincia: TLabel;
|
|
eCodigoPostal: TLabel;
|
|
ePoblacion: TLabel;
|
|
NombreAlmacen: TRdxDBEdit;
|
|
CalleAlmacen: TRdxDBEdit;
|
|
NumeroAlmacen: TRdxDBEdit;
|
|
PisoAlmacen: TRdxDBEdit;
|
|
ProvinciaAlmacen: TRdxDBEdit;
|
|
CodigoPostalAlmacen: TRdxDBEdit;
|
|
PoblacionAlmacen: TRdxDBEdit;
|
|
eImporteTotal: TLabel;
|
|
ImporteTotal: TRdxDBEdit;
|
|
pnlGridArticulos: TPanel;
|
|
pnlBarraGrid: TRdxPanel;
|
|
bAnadir: TRdxBoton;
|
|
bEliminar: TRdxBoton;
|
|
bElminarTodo: TRdxBoton;
|
|
RdxPanel1: TRdxPanel;
|
|
RdxCabecera1: TRdxCabecera;
|
|
Label4: TLabel;
|
|
Label5: TLabel;
|
|
NombreClienteFinal: TRdxDBEdit;
|
|
RdxCabecera2: TRdxCabecera;
|
|
PersonaContactoAlmacen: TdxDBPickEdit;
|
|
FechaAlta: TcxDBDateEdit;
|
|
FechaEmision: TcxDBDateEdit;
|
|
Recepcion: TcxDBDateEdit;
|
|
CodProveedor: TcxDBButtonEdit;
|
|
CodAlmacen: TcxDBButtonEdit;
|
|
CodClienteFinal: TcxDBButtonEdit;
|
|
gridDetalles: TdxDBGrid;
|
|
procedure bAceptarClick(Sender: TObject);
|
|
procedure bSalirClick(Sender: TObject);
|
|
procedure bCancelarClick(Sender: TObject);
|
|
procedure bAnadirClick(Sender: TObject);
|
|
procedure CodigoExit(Sender: TObject);
|
|
procedure bEliminarClick(Sender: TObject);
|
|
procedure bElminarTodoClick(Sender: TObject);
|
|
procedure ProvinciaAlmacenButtonClick(Sender: TObject);
|
|
procedure PoblacionAlmacenButtonClick(Sender: TObject);
|
|
procedure ProvinciaAlmacenExit(Sender: TObject);
|
|
procedure CodigoButtonClick(Sender: TObject);
|
|
procedure CodProveedorPropertiesButtonClick(Sender: TObject;
|
|
AButtonIndex: Integer);
|
|
procedure CodProveedorPropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
procedure CodAlmacenPropertiesButtonClick(Sender: TObject;
|
|
AButtonIndex: Integer);
|
|
procedure CodAlmacenPropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
procedure CodClienteFinalPropertiesButtonClick(Sender: TObject;
|
|
AButtonIndex: Integer);
|
|
procedure CodClienteFinalPropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
procedure gridDetallesChangeNode(Sender: TObject; OldNode,
|
|
Node: TdxTreeListNode);
|
|
private
|
|
FImporteTotal : Double;
|
|
FCodigoProvincia : Variant;
|
|
FCodigoPoblacion : Variant;
|
|
FCodigoProveedor : Variant;
|
|
FCodigoAlmacenAux : Variant;
|
|
FCodigoAlmacen : Variant;
|
|
FCodigoObra : Variant;
|
|
FCodigoArticulo : Variant;
|
|
FTablaDetallesMem : TRxMemoryData;
|
|
procedure CalcularTotalDetalle;
|
|
procedure CalcularTotalPedido;
|
|
procedure ActivarEventosCampos;
|
|
procedure BorrarDetalles;
|
|
procedure BorrarDetallesIB;
|
|
procedure SalvarDetalles;
|
|
procedure CargarDetalles;
|
|
procedure DetalleAfterDelete (DataSet: TDataSet);
|
|
procedure DetalleAfterEdit (DataSet: TDataSet);
|
|
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 SetCodigoAlmacen (Value : Variant);
|
|
procedure SetCodigoObra (Value : Variant);
|
|
procedure SetCodigoProveedor (Value : Variant);
|
|
procedure SetCodigoArticulo (Value : Variant);
|
|
procedure FreeContenido; override;
|
|
procedure BuscarPedido; override;
|
|
public
|
|
property CodigoAlmacen : Variant read FCodigoAlmacen write SetCodigoAlmacen;
|
|
property CodigoObra : Variant read FCodigoObra write SetCodigoObra;
|
|
property CodigoProvincia : Variant read FCodigoProvincia write SetCodigoProvincia;
|
|
property CodigoPoblacion : Variant read FCodigoPoblacion write SetCodigoPoblacion;
|
|
property CodigoProveedor : Variant read FCodigoProveedor write SetCodigoProveedor;
|
|
property CodigoArticulo : Variant read FCodigoArticulo write SetCodigoArticulo;
|
|
constructor Create (AOwner : TComponent); override;
|
|
destructor Destroy; override;
|
|
published
|
|
property TablaPedidosProveedor;
|
|
property TablaDetallesPedidos;
|
|
property TablaDetallesMem : TRxMemoryData read FTablaDetallesMem write FTablaDetallesMem;
|
|
property CodigoPedido;
|
|
procedure GridBotonCodigoArticuloClick(Sender: TObject);
|
|
procedure CodigoArticuloDetalleSetText(Sender: TField; const Text: String);
|
|
procedure DtoDetalleSetText(Sender: TField; const Text: String);
|
|
procedure CantidadDetalleSetText(Sender: TField; const Text: String);
|
|
procedure PrecioDetalleSetText(Sender: TField; const Text: String);
|
|
procedure GridBotonDescripcionClick(Sender: TObject);
|
|
end;
|
|
|
|
var
|
|
frPedidoProveedor: TfrPedidoProveedor;
|
|
|
|
implementation
|
|
|
|
uses
|
|
PedidosProveedores, BaseDatos, TablaPedidosProveedor, Almacenes, IBDatabase,
|
|
Mensajes, Proveedores, RdxFrameProvincias, RdxFramePoblaciones,
|
|
TablaProvincias, Provincias, Poblaciones, TablaProveedores, RdxFrameProveedores,
|
|
IBCustomDataSet, IB, Articulos, TablaAlmacenes, RdxFrameAlmacenes,
|
|
RdxFrameArticulos, TablaArticulos, Tipos, StrFunc, EditorDescripcion,
|
|
TablaPoblaciones, Excepciones, IBErrorCodes, TablaInstaladores,
|
|
TablaClientes, RdxEmpresaActiva, Literales, NumFunc, ArticulosFabPro;
|
|
|
|
{$R *.DFM}
|
|
|
|
constructor TfrPedidoProveedor.Create(AOwner : TComponent);
|
|
begin
|
|
inherited Create(AOwner);
|
|
FCodigoProvincia := NULL;
|
|
FCodigoPoblacion := NULL;
|
|
FCodigoProveedor := NULL;
|
|
FCodigoAlmacen := NULL;
|
|
FCodigoObra := NULL;
|
|
FCodigoAlmacenAux := NULL;
|
|
FCodigoArticulo := NULL;
|
|
|
|
Entidad := entPedidoProveedor;
|
|
ConfigurarFrame(Self, Self.Entidad);
|
|
|
|
BaseDatos := dmBaseDatos.BD;
|
|
Transaccion := dmBaseDatos.Transaccion;
|
|
|
|
TablaPedidosProveedor := TIBDataSet.Create(Self);
|
|
TablaDetallesPedidos := TIBDataSet.Create(Self);
|
|
TablaDetallesMem := TRxMemoryData.Create(Self);
|
|
|
|
dsPedido.DataSet := TablaPedidosProveedor;
|
|
dsDetallesPedidos.DataSet := TablaDetallesMem;
|
|
|
|
with TablaPedidosProveedor do
|
|
begin
|
|
Database := BaseDatos;
|
|
Transaction := Transaccion;
|
|
SelectSQL.Assign(dmTablaPedidosProveedor.sqlConsultarPedido);
|
|
InsertSQL.Assign(dmTablaPedidosProveedor.sqlInsertarPedido);
|
|
ModifySQL.Assign(dmTablaPedidosProveedor.sqlModificarPedido);
|
|
DeleteSQL.Assign(dmTablaPedidosProveedor.sqlEliminarPedido);
|
|
end;
|
|
|
|
with TablaDetallesPedidos do
|
|
begin
|
|
Database := BaseDatos;
|
|
Transaction := Transaccion;
|
|
SelectSQL.Assign(dmTablaPedidosProveedor.sqlConsultarGridDetalles);
|
|
InsertSQL.Assign(dmTablaPedidosProveedor.sqlInsertarDetalles);
|
|
ModifySQL.Assign(dmTablaPedidosProveedor.sqlModificarDetalles);
|
|
DeleteSQL.Assign(dmTablaPedidosProveedor.sqlEliminarDetalles);
|
|
end;
|
|
|
|
try
|
|
TablaDetallesMem.CopyStructure(TablaDetallesPedidos);
|
|
TablaDetallesMem.FieldByName('CODIGOEMPRESA').Required := False;
|
|
TablaDetallesMem.FieldByName('CODIGOPEDIDO').Required := False;
|
|
TablaDetallesMem.FieldByName('NUMCONCEPTO').Required := False;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
|
|
dmTablaPedidosProveedor.InicializarGridDetalles(gridDetalles);
|
|
Situacion.Items := dmTablaPedidosProveedor.darSituaciones;
|
|
|
|
PersonaContactoAlmacen.Items := dmTablaInstaladores.darInstaladores;
|
|
Paginas.ActivePage := pagProveedor;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.ActivarModoAnadir;
|
|
var
|
|
CodNuevo : Variant;
|
|
begin
|
|
FImporteTotal := 0;
|
|
dsPedido.AutoEdit := True;
|
|
dsDetallesPedidos.AutoEdit := True;
|
|
Codigo.VerBoton := False;
|
|
Codigo.ReadOnly := False;
|
|
|
|
CodProveedor.Properties.Buttons[0].Visible := True;
|
|
CodProveedor.Properties.OnValidate := CodProveedorPropertiesValidate;
|
|
CodAlmacen.Properties.Buttons[0].Visible := True;
|
|
CodAlmacen.Properties.OnValidate := CodAlmacenPropertiesValidate;
|
|
ProvinciaAlmacen.VerBoton := True;
|
|
PoblacionAlmacen.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. }
|
|
TablaPedidosProveedor.DisableControls;
|
|
|
|
{ Inicializar la tabla de pedidos }
|
|
TablaPedidosProveedor.Close;
|
|
CodNuevo := dmTablaPedidosProveedor.darNuevoCodigo;
|
|
|
|
with TablaPedidosProveedor do
|
|
begin
|
|
CachedUpdates := True;
|
|
Prepare;
|
|
Open;
|
|
EnableControls;
|
|
Insert;
|
|
FieldByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
end;
|
|
|
|
|
|
Codigo.Field.asString := CodNuevo;
|
|
FechaAlta.DataBinding.Field.AsString := DateToStr(Date);
|
|
Situacion.Field.AsString := Situacion.Items.Strings[0];
|
|
Usuario.Field.AsString := dmBaseDatos.Usuario;
|
|
Notas.Field.AsString := msgPedProvNotaPorDef;
|
|
|
|
{ Inicializar la tabla de detalles }
|
|
with TablaDetallesPedidos do
|
|
begin
|
|
Close;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
Params.ByName('CODIGOPEDIDO').AsString := CodNuevo;
|
|
Prepare;
|
|
Open;
|
|
end;
|
|
|
|
with TablaDetallesMem do
|
|
begin
|
|
Close;
|
|
Open;
|
|
ActivarEventosCampos;
|
|
end;
|
|
|
|
dmTablaPedidosProveedor.InicializarTablaPedidos(@TablaPedidosProveedor);
|
|
dmTablaPedidosProveedor.InicializarTablaDetalles(@TablaDetallesMem);
|
|
Visible := True;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.ActivarModoConsultar;
|
|
begin
|
|
dsPedido.AutoEdit := False;
|
|
dsDetallesPedidos.AutoEdit := False;
|
|
Codigo.VerBoton := True;
|
|
CodProveedor.Properties.Buttons[0].Visible := False;
|
|
CodProveedor.Properties.OnValidate := nil;
|
|
CodAlmacen.Properties.Buttons[0].Visible := False;
|
|
CodAlmacen.Properties.OnValidate := nil;
|
|
ProvinciaAlmacen.VerBoton := False;
|
|
PoblacionAlmacen.VerBoton := False;
|
|
|
|
DesactivarEdicionGridDetalles(gridDetalles);
|
|
|
|
(gridDetalles.ColumnByFieldName('CODIGOARTICULO')
|
|
as TdxDBTreeListButtonColumn).OnEditButtonClick := NIL;
|
|
|
|
(gridDetalles.ColumnByFieldName('DESCRIPCION')
|
|
as TdxDBTreeListButtonColumn).OnEditButtonClick := NIL;
|
|
|
|
pnlBarraGrid.Visible := False;
|
|
|
|
try
|
|
TablaPedidosProveedor.Prepare;
|
|
TablaPedidosProveedor.Open;
|
|
|
|
if TablaPedidosProveedor.RecordCount = 0 then
|
|
begin
|
|
VerMensajeFmt(msgPedPedProvNoExiste, [CodigoPedido]);
|
|
CloseFrame;
|
|
Exit;
|
|
end;
|
|
|
|
TablaPedidosProveedor.Cancel;
|
|
|
|
with TablaDetallesPedidos do
|
|
begin
|
|
Close;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
Params.ByName('CODIGOPEDIDO').AsString := CodigoPedido;
|
|
Prepare;
|
|
Open;
|
|
Cancel;
|
|
end;
|
|
|
|
with TablaDetallesMem do
|
|
begin
|
|
Close;
|
|
Open;
|
|
Cancel;
|
|
CargarDetalles;
|
|
end;
|
|
|
|
dmTablaPedidosProveedor.InicializarTablaPedidos(@TablaPedidosProveedor);
|
|
dmTablaPedidosProveedor.InicializarTablaDetalles(@TablaDetallesMem);
|
|
Visible := True;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.ActivarModoEliminar;
|
|
begin
|
|
dsPedido.AutoEdit := False;
|
|
dsDetallesPedidos.AutoEdit := False;
|
|
Codigo.VerBoton := True;
|
|
CodProveedor.Properties.Buttons[0].Visible := False;
|
|
CodProveedor.Properties.OnValidate := nil;
|
|
CodAlmacen.Properties.Buttons[0].Visible := False;
|
|
CodAlmacen.Properties.OnValidate := nil;
|
|
ProvinciaAlmacen.VerBoton := False;
|
|
PoblacionAlmacen.VerBoton := False;
|
|
|
|
DesactivarEdicionGridDetalles(gridDetalles);
|
|
|
|
(gridDetalles.ColumnByFieldName('CODIGOARTICULO')
|
|
as TdxDBTreeListButtonColumn).OnEditButtonClick := NIL;
|
|
|
|
(gridDetalles.ColumnByFieldName('DESCRIPCION')
|
|
as TdxDBTreeListButtonColumn).OnEditButtonClick := NIL;
|
|
|
|
pnlBarraGrid.Visible := False;
|
|
|
|
try
|
|
TablaPedidosProveedor.Prepare;
|
|
TablaPedidosProveedor.Open;
|
|
|
|
if TablaPedidosProveedor.RecordCount = 0 then
|
|
begin
|
|
VerMensajeFmt(msgPedPedProvNoExiste, [CodigoPedido]);
|
|
CancelarEliminar;
|
|
CloseFrame;
|
|
Exit;
|
|
end;
|
|
|
|
TablaPedidosProveedor.Cancel;
|
|
|
|
with TablaDetallesPedidos do
|
|
begin
|
|
Close;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
Params.ByName('CODIGOPEDIDO').AsString := CodigoPedido;
|
|
Prepare;
|
|
Open;
|
|
end;
|
|
|
|
with TablaDetallesMem do
|
|
begin
|
|
Close;
|
|
Open;
|
|
Cancel;
|
|
CargarDetalles;
|
|
end;
|
|
|
|
dmTablaPedidosProveedor.InicializarTablaPedidos(@TablaPedidosProveedor);
|
|
dmTablaPedidosProveedor.InicializarTablaDetalles(@TablaDetallesMem);
|
|
Visible := True;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.ActivarModoModificar;
|
|
begin
|
|
dsPedido.AutoEdit := True;
|
|
dsDetallesPedidos.AutoEdit := True;
|
|
Codigo.VerBoton := True;
|
|
Codigo.ReadOnly := True;
|
|
CodProveedor.Properties.Buttons[0].Visible := True;
|
|
CodProveedor.Properties.OnValidate := CodProveedorPropertiesValidate;
|
|
CodAlmacen.Properties.Buttons[0].Visible := True;
|
|
CodAlmacen.Properties.OnValidate := CodAlmacenPropertiesValidate;
|
|
ProvinciaAlmacen.VerBoton := True;
|
|
PoblacionAlmacen.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. }
|
|
TablaPedidosProveedor.Prepare;
|
|
TablaPedidosProveedor.Open;
|
|
FImporteTotal := TablaPedidosProveedor.FieldByName('IMPORTETOTAL').AsFloat;
|
|
|
|
if TablaPedidosProveedor.RecordCount = 0 then
|
|
begin
|
|
VerMensajeFmt(msgPedPedProvNoExiste, [CodigoPedido]);
|
|
CancelarModificar;
|
|
CloseFrame;
|
|
Exit;
|
|
end;
|
|
|
|
TablaPedidosProveedor.Edit;
|
|
TablaPedidosProveedor.Post;
|
|
TablaPedidosProveedor.Edit;
|
|
|
|
with TablaDetallesPedidos do
|
|
begin
|
|
Close;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
Params.ByName('CODIGOPEDIDO').AsString := CodigoPedido;
|
|
Prepare;
|
|
Open;
|
|
end;
|
|
|
|
with TablaDetallesMem do
|
|
begin
|
|
Close;
|
|
Open;
|
|
CargarDetalles;
|
|
ActivarEventosCampos;
|
|
end;
|
|
|
|
dmTablaPedidosProveedor.InicializarTablaPedidos(@TablaPedidosProveedor);
|
|
dmTablaPedidosProveedor.InicializarTablaDetalles(@TablaDetallesMem);
|
|
Visible := True;
|
|
except
|
|
on E : EIBError do
|
|
begin
|
|
case E.IBErrorCode of
|
|
isc_lock_conflict : begin
|
|
VerMensajeFmt(msgPedProvBloqueado, [CodigoPedido]);
|
|
CancelarModificar;
|
|
CloseFrame;
|
|
Exit;
|
|
end
|
|
else
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
destructor TfrPedidoProveedor.Destroy;
|
|
begin
|
|
gridDetalles.DataSource := NIL;
|
|
|
|
TablaDetallesMem.Close;
|
|
TablaDetallesMem.Free;
|
|
|
|
TablaPedidosProveedor.Close;
|
|
TablaPedidosProveedor.UnPrepare;
|
|
TablaPedidosProveedor.Free;
|
|
|
|
TablaDetallesPedidos.Close;
|
|
TablaDetallesPedidos.Unprepare;
|
|
TablaDetallesPedidos.Free;
|
|
|
|
Transaccion := NIL;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.bAceptarClick(Sender: TObject);
|
|
begin
|
|
if (RealizarOperacion) then
|
|
CloseFrame;
|
|
end;
|
|
|
|
function TfrPedidoProveedor.AnadirDatos : boolean;
|
|
begin
|
|
Result := False;
|
|
try
|
|
CalcularTotalPedido;
|
|
TablaPedidosProveedor.Post;
|
|
TablaPedidosProveedor.ApplyUpdates;
|
|
|
|
BorrarDetallesIB;
|
|
SalvarDetalles;
|
|
|
|
dmTablaPedidosProveedor.incrementarCodigo;
|
|
FCodigoPedido := TablaPedidosProveedor.FieldByName('CODIGO').AsString;
|
|
|
|
Commit;
|
|
TablaPedidosProveedor.CachedUpdates := False;
|
|
Result := True;
|
|
except
|
|
on E : EIBError do begin
|
|
if E.IBErrorCode = isc_unique_key_violation then
|
|
begin
|
|
VerMensajeFmt(msgPedCodPedRepetido, [Codigo.Field.AsString]);
|
|
TablaPedidosProveedor.Edit;
|
|
end
|
|
else
|
|
TratarExcepcion(E);
|
|
end;
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
function TfrPedidoProveedor.EliminarDatos : boolean;
|
|
begin
|
|
Result := False;
|
|
try
|
|
TablaPedidosProveedor.Delete;
|
|
Commit;
|
|
BorrarDetalles;
|
|
Result := True;
|
|
except
|
|
on E : EIBError do
|
|
begin
|
|
case E.IBErrorCode of
|
|
isc_lock_conflict : VerMensajeFmt(msgPedProvBloqueado, [Codigo.Field.AsString]);
|
|
else
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
function TfrPedidoProveedor.ModificarDatos : boolean;
|
|
begin
|
|
Result := False;
|
|
try
|
|
CalcularTotalPedido;
|
|
TablaPedidosProveedor.Post;
|
|
BorrarDetallesIB;
|
|
SalvarDetalles;
|
|
Commit;
|
|
Result := True;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.bSalirClick(Sender: TObject);
|
|
begin
|
|
try
|
|
Rollback;
|
|
CloseFrame;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.bCancelarClick(Sender: TObject);
|
|
begin
|
|
if (TratarCambios = IDOK) then
|
|
CloseFrame;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.bAnadirClick(Sender: TObject);
|
|
begin
|
|
try
|
|
with TablaDetallesMem do
|
|
begin
|
|
DisableControls;
|
|
Next;
|
|
if EOF then
|
|
Append
|
|
else
|
|
Insert;
|
|
EnableControls;
|
|
end;
|
|
Paginas.ActivePage := pagContenido;
|
|
gridDetalles.SetFocus;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.CodigoExit(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
if (Modo <> Anadir) or (Visible = false) then
|
|
exit;
|
|
if (Length(Codigo.Text) = 0) then
|
|
Codigo.Field.AsString := dmTablaPedidosProveedor.darNuevoCodigo;
|
|
if (dmTablaPedidosProveedor.ValidarCodigo(Codigo.Text)) then
|
|
begin
|
|
Codigo.Field.asString := dmTablaPedidosProveedor.formatearCodigo(Codigo.Text);
|
|
if (dmTablaPedidosProveedor.ExisteCodigo(EmpresaActiva.Codigo, Codigo.Text)) then begin
|
|
VerMensajeFmt(msgPedCodPedRepetido, [Codigo.Text]);
|
|
Codigo.SetFocus;
|
|
end;
|
|
end
|
|
else begin
|
|
VerMensajeFmt(msgPedCodPedIncorrecto, [Codigo.Text]);
|
|
Codigo.SetFocus;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.BuscarPedido;
|
|
var
|
|
lsCampo : String;
|
|
liIndex : integer;
|
|
|
|
begin
|
|
if Transaccion = NIL then
|
|
exit;
|
|
try
|
|
TablaPedidosProveedor.DisableControls;
|
|
TablaDetallesMem.DisableControls;
|
|
|
|
TablaPedidosProveedor.Close;
|
|
TablaDetallesPedidos.Close;
|
|
|
|
// Buscar la fila a tratar si es necesario
|
|
if not VarIsNull(FCodigoPedido) then
|
|
begin
|
|
TablaPedidosProveedor.ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
TablaPedidosProveedor.Params.ByName('CODIGO').AsString := FCodigoPedido;
|
|
|
|
TablaDetallesPedidos.ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
TablaDetallesPedidos.Params.ByName('CODIGOPEDIDO').AsString := FCodigoPedido;
|
|
end;
|
|
TablaPedidosProveedor.Prepare;
|
|
TablaPedidosProveedor.Open;
|
|
|
|
TablaDetallesPedidos.Prepare;
|
|
TablaDetallesPedidos.Open;
|
|
|
|
TablaDetallesMem.Close;
|
|
TablaDetallesMem.Open;
|
|
|
|
BorrarDetalles;
|
|
CargarDetalles;
|
|
|
|
dmTablaPedidosProveedor.InicializarTablaPedidos(@TablaPedidosProveedor);
|
|
dmTablaPedidosProveedor.InicializarTablaDetalles(@TablaDetallesMem);
|
|
|
|
TablaPedidosProveedor.EnableControls;
|
|
TablaDetallesMem.EnableControls;
|
|
|
|
//Para que cuando se lea un pedido que posee una persona de contacto que no existe
|
|
//en la lista de instaladores lo agrege a la lista del combo y lo seleccione
|
|
lsCampo := TablaPedidosProveedor.FieldByName('PERSONACONTACTOALMACEN').AsString;
|
|
liIndex := PersonaContactoAlmacen.Items.IndexOf(lsCampo);
|
|
//Si no existe la persona de contacto la agrego
|
|
if (liIndex = -1) then PersonaContactoAlmacen.Items.Add(lsCampo);
|
|
//Hago que se seleccione
|
|
PersonaContactoAlmacen.ItemIndex := PersonaContactoAlmacen.Items.IndexOf(lsCampo);
|
|
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
function TfrPedidoProveedor.CancelarAnadir: Boolean;
|
|
begin
|
|
Result := False;
|
|
try
|
|
TablaDetallesMem.Close;
|
|
TablaPedidosProveedor.CancelUpdates;
|
|
RollBack;
|
|
TablaPedidosProveedor.CachedUpdates := False;
|
|
Result := True;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
function TfrPedidoProveedor.CancelarEliminar: Boolean;
|
|
begin
|
|
Result := False;
|
|
try
|
|
TablaDetallesMem.Close;
|
|
RollBack;
|
|
Result := True;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
function TfrPedidoProveedor.CancelarModificar: Boolean;
|
|
begin
|
|
Result := False;
|
|
try
|
|
TablaDetallesMem.Close;
|
|
TablaPedidosProveedor.Close;
|
|
TablaDetallesPedidos.Close;
|
|
RollBack;
|
|
Result := True;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.FreeContenido;
|
|
var
|
|
Contador : integer;
|
|
ListaCodigos : TStringList;
|
|
ListaCodProveedores : TStringList;
|
|
ListaCodFabricantes : TStringList;
|
|
ListaPrecios : TStringList;
|
|
begin
|
|
if (ContenidoModal is TRdxFramePedidosProveedor) then begin
|
|
CodigoPedido := (ContenidoModal as TRdxFramePedidosProveedor).CodigoPedido;
|
|
ActivarModo;
|
|
end;
|
|
|
|
if (ContenidoModal is TRdxFrameArticulos) then
|
|
begin
|
|
ListaCodigos := (ContenidoModal as TRdxFrameArticulos).ListaArticulos;
|
|
ListaPrecios := (ContenidoModal as TfrArticulosFabPro).ListaPrecios;
|
|
ListaCodProveedores := (ContenidoModal as TfrArticulosFabPro).ListaCodArtPro;
|
|
ListaCodFabricantes := (ContenidoModal as TfrArticulosFabPro).ListaCodArtFab;
|
|
|
|
for Contador := 0 to ListaCodigos.Count - 1 do
|
|
begin
|
|
CodigoArticulo := ListaCodigos.Strings[Contador];
|
|
|
|
// Añadimos el código de proveedor y precio del articulo seleccionado
|
|
TablaDetallesMem.Edit;
|
|
if esCadenaVacia(ListaCodProveedores.Strings[Contador])
|
|
then TablaDetallesMem.FieldByName('REFPROVEEDOR').AsString := '0'
|
|
else TablaDetallesMem.FieldByName('REFPROVEEDOR').AsString := ListaCodProveedores.Strings[Contador];
|
|
|
|
if esCadenaVacia(ListaCodFabricantes.Strings[Contador])
|
|
then TablaDetallesMem.FieldByName('REFFABRICANTE').AsString := '0'
|
|
else TablaDetallesMem.FieldByName('REFFABRICANTE').AsString := ListaCodFabricantes.Strings[Contador];
|
|
|
|
if esCadenaVacia(ListaPrecios.Strings[Contador])
|
|
then TablaDetallesMem.FieldByName('PRECIO').AsString := '0'
|
|
else TablaDetallesMem.FieldByName('PRECIO').AsString := ListaPrecios.Strings[Contador];
|
|
TablaDetallesMem.Post;
|
|
|
|
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 TRdxFrameAlmacenes) then
|
|
FCodigoAlmacenAux := (ContenidoModal as TRdxFrameAlmacenes).CodigoAlmacen;
|
|
if (ContenidoModal is TRdxFrameProveedores) then
|
|
CodigoProveedor := (ContenidoModal as TRdxFrameProveedores).CodigoProveedor;
|
|
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 TfrPedidoProveedor.SetCodigoPoblacion(Value: Variant);
|
|
begin
|
|
if (not VarIsNull(FCodigoPoblacion)) and (FCodigoPoblacion = Value) then
|
|
exit;
|
|
|
|
if (not VarIsNull(Value)) then
|
|
begin
|
|
FCodigoPoblacion := Value;
|
|
PoblacionAlmacen.Field.AsString := dmTablaPoblaciones.darNombrePoblacion(FCodigoProvincia, FCodigoPoblacion);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.SetCodigoProveedor(Value: Variant);
|
|
var
|
|
DatosProveedor : TDatosProveedor;
|
|
begin
|
|
if VarIsNull(Value) then
|
|
exit;
|
|
|
|
if FCodigoProveedor = Value then
|
|
exit;
|
|
|
|
FCodigoProveedor := Value;
|
|
DatosProveedor := TDatosProveedor.Create;
|
|
try
|
|
DatosProveedor.Codigo := FCodigoProveedor;
|
|
dmTablaProveedores.darDatosProveedor(DatosProveedor);
|
|
CodProveedor.DataBinding.Field.AsString := DatosProveedor.Codigo;
|
|
NIF.Field.AsString := DatosProveedor.Nifcif;
|
|
CodigoCliente.Field.AsString := dmTablaProveedores.darCodigoClienteProveedor(DatosProveedor.Codigo);
|
|
Nombre.Field.AsString := DatosProveedor.Nombre;
|
|
PersonaContacto.Field.AsString := DatosProveedor.PersonaContacto;
|
|
Fax.Field.AsString := DatosProveedor.Fax;
|
|
finally
|
|
DatosProveedor.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.SetCodigoProvincia(Value: Variant);
|
|
begin
|
|
if (not VarIsNull(FCodigoProvincia)) and (FCodigoProvincia = Value) then
|
|
exit;
|
|
|
|
if (not VarIsNull(Value)) then
|
|
begin
|
|
FCodigoProvincia := Value;
|
|
ProvinciaAlmacen.Field.AsString := dmTablaProvincias.darNombreProvincia(FCodigoProvincia);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.VerModal;
|
|
begin
|
|
if (ContenidoModal is TRdxFramePoblaciones) then
|
|
(ContenidoModal as TRdxFramePoblaciones).CodigoProvincia := CodigoProvincia;
|
|
if (ContenidoModal is TRdxFrameAlmacenes) then
|
|
(ContenidoModal as TRdxFrameAlmacenes).Visible := True;
|
|
if (ContenidoModal is TRdxFrameArticulos) then
|
|
(ContenidoModal as TRdxFrameArticulos).CodigoArticulo := CodigoArticulo;
|
|
if (ContenidoModal is TfrEditorDescripcion) then
|
|
(ContenidoModal as TfrEditorDescripcion).Texto := TablaDetallesMem.FieldByName('DESCRIPCION').AsString;
|
|
if (ContenidoModal is TfrArticulosFabPro) then
|
|
(ContenidoModal as TfrArticulosFabPro).NombreProveedor := TablaPedidosProveedor.FieldByName('NOMBRE').AsString;
|
|
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.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 TfrPedidoProveedor.bElminarTodoClick(Sender: TObject);
|
|
begin
|
|
if (VerMensajePregunta(msgDeseaBorrarTodo) <> IDYES) then
|
|
Exit;
|
|
BorrarDetalles;
|
|
CalcularTotalPedido;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.ProvinciaAlmacenButtonClick(Sender: TObject);
|
|
begin
|
|
CaptionModal := 'Lista de provincias';
|
|
WidthModal := 280;
|
|
HeightModal := 460;
|
|
ContenidoModal := TfrProvincias.Create(Self);
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.PoblacionAlmacenButtonClick(Sender: TObject);
|
|
begin
|
|
if (VarIsNull(CodigoProvincia)) then
|
|
begin
|
|
VerMensaje(msgSinProvincia);
|
|
Paginas.ActivePage := pagDestino;
|
|
ProvinciaAlmacen.SetFocus;
|
|
Exit;
|
|
end;
|
|
CaptionModal := Format(msgListaPoblaciones, [dmTablaProvincias.darNombreProvincia(CodigoProvincia)]);
|
|
WidthModal := 280;
|
|
HeightModal := 460;
|
|
ContenidoModal := TfrPoblaciones.Create(Self);
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.ProvinciaAlmacenExit(Sender: TObject);
|
|
begin
|
|
if not (Modo in [Anadir, Modificar]) then
|
|
Exit;
|
|
|
|
ProvinciaAlmacen.Field.AsString := UpperCase(ProvinciaAlmacen.Text);
|
|
FCodigoProvincia := dmTablaProvincias.darCodigoProvincia(ProvinciaAlmacen.Text);
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.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, FCodigoPedido es NULL y da error al activar modo porque
|
|
no se inicializa los parámetros de la sql. Lo hace BuscarPedido. }
|
|
if not TablaPedidosProveedor.Active then
|
|
BuscarPedido;
|
|
|
|
ContenidoModal := TfrPedidosProveedores.Create(Self);
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.GridBotonCodigoArticuloClick(Sender: TObject);
|
|
begin
|
|
if EsCadenaVacia(CodProveedor.DataBinding.Field.AsString) then
|
|
begin
|
|
VerMensaje(msgPedFaltaNombreProv);
|
|
Paginas.ActivePage := pagProveedor;
|
|
CodProveedor.SetFocus;
|
|
Exit;
|
|
end;
|
|
|
|
TablaDetallesMem.Edit;
|
|
WidthModal := 1000;
|
|
HeightModal := 700;
|
|
ContenidoModal := TfrArticulosFabPro.Create(Self);
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.CalcularTotalDetalle;
|
|
var
|
|
auxCantidad,
|
|
auxPrecio,
|
|
auxDto,
|
|
auxTotal : double;
|
|
begin
|
|
with TablaDetallesMem do
|
|
begin
|
|
FImporteTotal := FImporteTotal - FieldByName('TOTAL').AsFloat;
|
|
auxCantidad := FieldByName('CANTIDAD').AsFloat;
|
|
auxPrecio := FieldByName('PRECIO').AsFloat;
|
|
auxDto := FieldByName('DESCUENTO').AsFloat;
|
|
auxTotal := auxCantidad * auxPrecio;
|
|
auxTotal := auxTotal - (auxTotal * (auxDto / 100));
|
|
FieldByName('TOTAL').AsFloat := auxTotal;
|
|
FImporteTotal := FImporteTotal + FieldByName('TOTAL').AsFloat;
|
|
TablaPedidosProveedor.FieldByName('IMPORTETOTAL').AsFloat := FImporteTotal;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.CalcularTotalPedido;
|
|
var
|
|
ImporteTotal : Double;
|
|
CurBookmark: string;
|
|
begin
|
|
ImporteTotal := 0;
|
|
|
|
with TablaDetallesMem do
|
|
begin
|
|
DisableControls;
|
|
CurBookmark := Bookmark;
|
|
try
|
|
First;
|
|
while not EOF do begin
|
|
ImporteTotal := ImporteTotal + FieldByName('TOTAL').AsFloat;
|
|
Next;
|
|
end;
|
|
TablaPedidosProveedor.FieldByName('IMPORTETOTAL').AsFloat := ImporteTotal;
|
|
finally
|
|
Bookmark := CurBookmark;
|
|
EnableControls;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.DtoDetalleSetText(Sender: TField; const Text: String);
|
|
begin
|
|
try
|
|
if EsCadenaVacia(Text) then
|
|
Sender.AsString := '0'
|
|
else begin
|
|
ValidarDto(Text);
|
|
Sender.AsString := Text;
|
|
end;
|
|
CalcularTotalDetalle;
|
|
except
|
|
on E : EConvertError do
|
|
VerMensaje(msgDtoNoValido);
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.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;
|
|
|
|
procedure TfrPedidoProveedor.CantidadDetalleSetText(Sender: TField; const Text: String);
|
|
var
|
|
CantAnt, PendAnt : double;
|
|
CantNue, PendNue : double;
|
|
begin
|
|
CantAnt := TablaDetallesMem.FieldByName('CANTIDAD').AsFloat;
|
|
PendAnt := TablaDetallesMem.FieldByName('PENDIENTES').AsFloat;
|
|
|
|
try
|
|
if EsCadenaVacia(Text) then
|
|
begin
|
|
if CantAnt = 0 then
|
|
Sender.AsString := '1'
|
|
else
|
|
Sender.AsFloat := CantAnt;
|
|
end
|
|
else
|
|
Sender.AsString := Text;
|
|
|
|
CantNue := Sender.AsFloat;
|
|
PendNue := PendAnt - (CantAnt - CantNue);
|
|
if PendNue < 0 then
|
|
begin
|
|
VerMensajeFmt('Sobran %f unidades del material', [abs(PendNue)]);
|
|
PendNue := 0;
|
|
end;
|
|
TablaDetallesMem.FieldByName('PENDIENTES').AsFloat := PendNue;
|
|
|
|
CalcularTotalDetalle;
|
|
except
|
|
on E : EConvertError do
|
|
VerMensaje(msgCantidadNoValida);
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.PrecioDetalleSetText(Sender: TField; const Text: String);
|
|
begin
|
|
try
|
|
if EsCadenaVacia(Text) then
|
|
Sender.AsString := '0'
|
|
else
|
|
Sender.AsString := Text;
|
|
CalcularTotalDetalle;
|
|
except
|
|
on E : EConvertError do
|
|
VerMensaje(msgPrecioNoValido);
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.SetCodigoAlmacen(Value: Variant);
|
|
var
|
|
DatosAlmacen : TDatosAlmacen;
|
|
begin
|
|
if VarIsNull(Value) then
|
|
exit;
|
|
|
|
if FCodigoAlmacen = Value then
|
|
exit;
|
|
|
|
FCodigoAlmacen := Value;
|
|
DatosAlmacen := TDatosAlmacen.Create;
|
|
DatosAlmacen.CodigoEmpresa := EmpresaActiva.Codigo;
|
|
DatosAlmacen.Codigo := CodigoAlmacen;
|
|
try
|
|
dmTablaAlmacenes.darDatosAlmacen(DatosAlmacen);
|
|
CodAlmacen.DataBinding.Field.AsInteger := DatosAlmacen.Codigo;
|
|
NombreAlmacen.Field.AsString := DatosAlmacen.Nombre;
|
|
CalleAlmacen.Field.AsString := DatosAlmacen.Calle;
|
|
NumeroAlmacen.Field.AsString := DatosAlmacen.Numero;
|
|
PisoAlmacen.Field.AsString := DatosAlmacen.Piso;
|
|
CodigoPostalAlmacen.Field.AsString := DatosAlmacen.CodigoPostal;
|
|
PoblacionAlmacen.Field.AsString := DatosAlmacen.Poblacion;
|
|
ProvinciaAlmacen.Field.AsString := DatosAlmacen.Provincia;
|
|
FCodigoProvincia := dmTablaProvincias.darCodigoProvincia(DatosAlmacen.Provincia);
|
|
finally
|
|
DatosAlmacen.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.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 := '0';
|
|
FieldByName('UNIDADESMEDIDA').AsString := DatosArticulo.Unidadesmedida;
|
|
// El campo precio a partir de ahora lo utilizaremos para guardar el precio con el
|
|
// que se hace el pedido al proveedor, asi cuando se reciba en el almacen se almacenará
|
|
// este valor de compra junto con la fecha de recepción
|
|
// FieldByName('PRECIO').AsString := DatosArticulo.Precio;
|
|
// FieldByName('TOTAL').AsString := DatosArticulo.Precio;
|
|
FieldByName('PENDIENTES').AsString := '0';
|
|
Post;
|
|
end;
|
|
FCodigoArticulo := Value;
|
|
CalcularTotalPedido;
|
|
end
|
|
else
|
|
raise Exception.CreateFmt(msgArtCodArtNoExiste, [Value]);
|
|
finally
|
|
DatosArticulo.Free;
|
|
end;
|
|
end;
|
|
|
|
function TfrPedidoProveedor.ComprobarDatos: Boolean;
|
|
begin
|
|
Result := False;
|
|
|
|
if not (Modo in [Anadir, Modificar]) then
|
|
begin
|
|
Result := True;
|
|
Exit;
|
|
end;
|
|
|
|
if EsCadenaVacia(FechaAlta.DataBinding.Field.AsString) then
|
|
begin
|
|
VerMensaje(msgPedFaltaFecAlta);
|
|
FechaAlta.SetFocus;
|
|
Exit;
|
|
end;
|
|
|
|
if EsCadenaVacia(CodAlmacen.DataBinding.Field.AsString) then
|
|
begin
|
|
VerMensaje(msgPedFaltaAlmDes);
|
|
Paginas.ActivePage := pagDestino;
|
|
CodAlmacen.SetFocus;
|
|
Exit;
|
|
end;
|
|
|
|
if ((UpperCase(Situacion.Field.AsString) = 'EMITIDO') or
|
|
(UpperCase(Situacion.Field.AsString) = 'DEVUELTO') or
|
|
(UpperCase(Situacion.Field.AsString) = 'PARCIALMENTE RECIBIDO') or
|
|
(UpperCase(Situacion.Field.AsString) = 'TOTALMENTE RECIBIDO')) and
|
|
EsCadenaVacia(FechaEmision.DataBinding.Field.AsString) then
|
|
begin
|
|
VerMensaje(msgPedFaltaFecEmision);
|
|
FechaEmision.SetFocus;
|
|
Exit;
|
|
end;
|
|
|
|
if ((UpperCase(Situacion.Field.AsString) = 'DEVUELTO') or
|
|
(UpperCase(Situacion.Field.AsString) = 'PARCIALMENTE RECIBIDO') or
|
|
(UpperCase(Situacion.Field.AsString) = 'TOTALMENTE RECIBIDO')) and
|
|
EsCadenaVacia(Recepcion.DataBinding.Field.AsString) then
|
|
begin
|
|
VerMensaje(msgPedFaltaFecRecepcion);
|
|
Recepcion.SetFocus;
|
|
Exit;
|
|
end;
|
|
|
|
if EsCadenaVacia(Nombre.Field.AsString) then
|
|
begin
|
|
VerMensaje(msgPedFaltaNombreProv);
|
|
Paginas.ActivePage := pagProveedor;
|
|
Nombre.SetFocus;
|
|
Exit;
|
|
end;
|
|
|
|
if TablaDetallesMem.IsEmpty then
|
|
begin
|
|
VerMensaje(msgPedFaltaArticulos);
|
|
Paginas.ActivePage := pagContenido;
|
|
gridDetalles.SetFocus;
|
|
Exit
|
|
end;
|
|
|
|
Result := True;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.ActivarEventosCampos;
|
|
begin
|
|
with TablaDetallesMem do
|
|
begin
|
|
FieldByName('CODIGOARTICULO').OnSetText := CodigoArticuloDetalleSetText;
|
|
FieldByName('DESCUENTO').OnSetText := DtoDetalleSetText;
|
|
FieldByName('CANTIDAD').OnSetText := CantidadDetalleSetText;
|
|
FieldByName('PRECIO').OnSetText := PrecioDetalleSetText;
|
|
AfterDelete := DetalleAfterDelete;
|
|
AfterEdit := DetalleAfterEdit;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.DetalleAfterDelete(DataSet: TDataSet);
|
|
begin
|
|
CalcularTotalPedido;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.BorrarDetalles;
|
|
begin
|
|
with TablaDetallesMem do
|
|
begin
|
|
DisableControls;
|
|
EmptyTable;
|
|
EnableControls;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.BorrarDetallesIB;
|
|
begin
|
|
with TablaDetallesPedidos 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 TfrPedidoProveedor.CargarDetalles;
|
|
var
|
|
NumeroCampo : Integer;
|
|
begin
|
|
with TablaDetallesMem do
|
|
begin
|
|
if TablaDetallesPedidos.IsEmpty then
|
|
Exit;
|
|
DisableControls;
|
|
TablaDetallesPedidos.First;
|
|
while not TablaDetallesPedidos.EOF do
|
|
begin
|
|
Append;
|
|
for NumeroCampo := 0 to TablaDetallesPedidos.FieldCount-1 do
|
|
Fields[NumeroCampo].AsString := TablaDetallesPedidos.Fields[NumeroCampo].AsString;
|
|
Post;
|
|
TablaDetallesPedidos.Next;
|
|
end;
|
|
First;
|
|
EnableControls;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.SalvarDetalles;
|
|
var
|
|
NumeroCampo : Integer;
|
|
NumConcepto : Integer;
|
|
begin
|
|
with TablaDetallesMem do
|
|
begin
|
|
if IsEmpty then
|
|
Exit;
|
|
NumConcepto := 0;
|
|
DisableControls;
|
|
First;
|
|
while not EOF do
|
|
begin
|
|
TablaDetallesPedidos.Append;
|
|
for NumeroCampo := 0 to FieldCount-1 do
|
|
begin
|
|
if Fields[NumeroCampo].FieldName = 'CODIGOEMPRESA' then
|
|
TablaDetallesPedidos.Fields[NumeroCampo].AsInteger := EmpresaActiva.Codigo
|
|
else begin
|
|
if Fields[NumeroCampo].FieldName = 'CODIGOPEDIDO' then
|
|
TablaDetallesPedidos.Fields[NumeroCampo].AsString := Codigo.Field.AsString
|
|
else
|
|
if Fields[NumeroCampo].FieldName = 'NUMCONCEPTO' then
|
|
TablaDetallesPedidos.Fields[NumeroCampo].AsInteger := NumConcepto
|
|
else
|
|
TablaDetallesPedidos.Fields[NumeroCampo].AsString := Fields[NumeroCampo].AsString;
|
|
end;
|
|
end;
|
|
TablaDetallesPedidos.Post;
|
|
Next;
|
|
NumConcepto := NumConcepto + 1;
|
|
end;
|
|
EnableControls;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.SetCodigoObra(Value: Variant);
|
|
var
|
|
DatosAlmacen : TDatosAlmacen;
|
|
begin
|
|
if VarIsNull(Value) then
|
|
exit;
|
|
|
|
if FCodigoObra = Value then
|
|
exit;
|
|
|
|
FCodigoObra := Value;
|
|
DatosAlmacen := TDatosAlmacen.Create;
|
|
DatosAlmacen.CodigoEmpresa := EmpresaActiva.Codigo;
|
|
DatosAlmacen.Codigo := FCodigoObra;
|
|
try
|
|
dmTablaAlmacenes.darDatosAlmacen(DatosAlmacen);
|
|
CodClienteFinal.DataBinding.Field.AsInteger := DatosAlmacen.Codigo;
|
|
NombreClienteFinal.Field.AsString := DatosAlmacen.Nombre;
|
|
finally
|
|
DatosAlmacen.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.DetalleAfterEdit(DataSet: TDataSet);
|
|
begin
|
|
TablaDetallesPedidos.RecordModified(True);
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.GridBotonDescripcionClick(Sender: TObject);
|
|
begin
|
|
TablaDetallesMem.Edit;
|
|
WidthModal := 420;
|
|
HeightModal := 435;
|
|
ModoModal := Modo;
|
|
ContenidoModal := TfrEditorDescripcion.Create(Self);
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.CodProveedorPropertiesButtonClick(
|
|
Sender: TObject; AButtonIndex: Integer);
|
|
begin
|
|
ContenidoModal := TfrProveedores.Create(Self);
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.CodProveedorPropertiesValidate(
|
|
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
begin
|
|
if not (Modo in [Anadir, Modificar]) then
|
|
Exit;
|
|
|
|
if EsCadenaVacia(DisplayValue) then
|
|
exit;
|
|
|
|
if (dmTablaProveedores.validarCodigo(DisplayValue)) then begin
|
|
//Comprueba que le numero es lo sufucientemente pequeño para ser un entero
|
|
if not EsInteger(DisplayValue) then
|
|
begin
|
|
VerMensajeFmt(msgProCodProvIncorrecto,[DisplayValue]);
|
|
DisplayValue := '0';
|
|
CodProveedor.SetFocus;
|
|
end
|
|
else
|
|
begin
|
|
DisplayValue := dmTablaProveedores.formatearCodigo(DisplayValue);
|
|
if (dmTablaProveedores.existeCodigo(DisplayValue)) then
|
|
CodigoProveedor := DisplayValue
|
|
else begin
|
|
VerMensajeFmt(msgProCodProvNoExiste, [DisplayValue]);
|
|
Paginas.ActivePage := pagProveedor;
|
|
CodProveedor.SetFocus;
|
|
end;
|
|
end;
|
|
end
|
|
else begin
|
|
VerMensajeFmt(msgProCodProvIncorrecto, [DisplayValue]);
|
|
Paginas.ActivePage := pagProveedor;
|
|
CodProveedor.SetFocus;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.CodAlmacenPropertiesButtonClick(
|
|
Sender: TObject; AButtonIndex: Integer);
|
|
begin
|
|
EntidadModal := entAlmacen;
|
|
ContenidoModal := TfrAlmacenes.Create(Self);
|
|
CodigoAlmacen := FCodigoAlmacenAux;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.CodAlmacenPropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
|
|
begin
|
|
if not (Modo in [Anadir, Modificar]) then
|
|
Exit;
|
|
|
|
if (EsCadenaVacia(DisplayValue)) then
|
|
exit;
|
|
|
|
if (dmTablaAlmacenes.validarCodigo(DisplayValue)) then begin
|
|
//Comprueba que le numero es lo sufucientemente pequeño para ser un entero
|
|
if not EsSmallInt(DisplayValue) then
|
|
begin
|
|
VerMensajeFmt(msgAlmCodAlmIncorrecto,[DisplayValue]);
|
|
DisplayValue := '0';
|
|
CodAlmacen.SetFocus;
|
|
end
|
|
else
|
|
begin
|
|
if (dmTablaAlmacenes.ExisteAlmacen(EmpresaActiva.Codigo, DisplayValue)) then
|
|
CodigoAlmacen := DisplayValue
|
|
else begin
|
|
VerMensajeFmt(msgAlmCodAlmNoExiste, [DisplayValue]);
|
|
Paginas.ActivePage := pagDestino;
|
|
CodAlmacen.SetFocus;
|
|
end;
|
|
end;
|
|
end
|
|
else begin
|
|
VerMensajeFmt(msgAlmCodAlmIncorrecto, [DisplayValue]);
|
|
Paginas.ActivePage := pagDestino;
|
|
CodAlmacen.SetFocus;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.CodClienteFinalPropertiesButtonClick(
|
|
Sender: TObject; AButtonIndex: Integer);
|
|
begin
|
|
EntidadModal := entAlmacenObra;
|
|
ContenidoModal := TfrAlmacenes.Create(Self);
|
|
CodigoObra := FCodigoAlmacenAux;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.CodClienteFinalPropertiesValidate(
|
|
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
begin
|
|
if not (Modo in [Anadir, Modificar]) then
|
|
Exit;
|
|
|
|
if EsCadenaVacia(DisplayValue) then
|
|
exit;
|
|
|
|
if (dmTablaAlmacenes.validarCodigo(DisplayValue)) then begin
|
|
//Comprueba que le numero es lo sufucientemente pequeño para ser un entero
|
|
if not EsSmallInt(DisplayValue) then
|
|
begin
|
|
VerMensajeFmt(msgPedProvCodCliFinalIncorrecto,[DisplayValue]);
|
|
DisplayValue := '0';
|
|
CodClienteFinal.SetFocus;
|
|
end
|
|
else
|
|
begin
|
|
if (dmTablaAlmacenes.ExisteAlmacen(EmpresaActiva.Codigo, DisplayValue)) then
|
|
CodigoObra := DisplayValue
|
|
else begin
|
|
VerMensajeFmt(msgPedProvCodCliFinalNoExiste, [DisplayValue]);
|
|
Paginas.ActivePage := pagDestino;
|
|
CodClienteFinal.SetFocus;
|
|
end;
|
|
end;
|
|
end
|
|
else begin
|
|
VerMensajeFmt(msgPedProvCodCliFinalIncorrecto, [DisplayValue]);
|
|
Paginas.ActivePage := pagDestino;
|
|
CodClienteFinal.SetFocus;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPedidoProveedor.gridDetallesChangeNode(Sender: TObject;
|
|
OldNode, Node: TdxTreeListNode);
|
|
begin
|
|
//verMensaje('Click');
|
|
end;
|
|
|
|
end.
|
|
|