Seguimos entrando en el código del cliente, que tiene los siguientes 3 eventos
Código Delphi
[-]
procedure TFXPAF.DBNCodigoClienteChange(Sender: TObject);
begin
if FXPAF.Active then
begin
if DBNCodigoCliente.Text <> '' then
begin
ActQuery(IBQClientes, 'Select * from Clientes where Upper(CODIGO)=Upper(' + QuotedStr (DBNCodigoCliente.Text) + ')');
end;
end;
end;
procedure TFXPAF.DBNCodigoClienteEnter(Sender: TObject);
begin
SBClientesClick(Sender);
end;
procedure TFXPAF.DBNCodigoClienteExit(Sender: TObject);
begin
if DBNCodigoCliente.Text = '' then
begin
ShowMessage('Este campo no puede quedar vacio, por favor rellene l campo [Código de cliente]');
DBNCodigoCliente.SetFocus;
end else
begin
if UpperCase(DBNCodigoCliente.Text)='B' then SBBuscarClienteClick(Sender) else
begin
if IBQClientes.IsEmpty then
begin
Case Application.MessageBox(pchar( 'El cliente búscado no se encuntra, ¿desea crearlo?'),
pchar('No se encuentra el cliente'),4+32+0) of
6:SBNuevoClienteClick(Sender); 7BNCodigoCliente.SetFocus; //No
end;
end else
begin
if DBNNombreCliente.Text='' then DBNNombreCliente.Field.Value:=IBQClientesNOMBRE.Value else
begin
if DBNNombreCliente.Text<>IBQClientesNOMBRE.AsString then
begin
Case Application.MessageBox( pchar( 'El nombre de este cliente y el que tiene puesto no coinciden, ¿desea cambiarlo por el nombre que tiene asignado este código?'),
pchar('Datos diferentes'),4+64+0) of
6BNNombreCliente.Field.Value:=IBQClientesNOMBRE.Value; //Si
end;
end;
end;
if DBNFormaPago.Text='' then DBNFormaPago.Field.Value:=IBQClientesFORMAPAGO.Value else
begin
if DBNFormaPago.Text<>IBQClientesFORMAPAGO.AsString then
begin
Case Application.MessageBox( pchar( 'La forma de pago de este cliente y el que tiene puesta no coinciden, ¿desea cambiarlo por la que tiene asignado este código?'),
pchar('Datos diferentes'),4+64+0) of
6BNFormaPago.Field.Value:=IBQClientesFORMAPAGO.Value; //Si
end;
end;
end;
end;
end;
end;
end;
En el 1º evento, comprobamos que el form este activo, para evitar errores y si el código del cliente no esta vació, creamos una búsqueda con un querry, esta nos permitirá tener otros datos a la vista del cliente, tanto en los siguientes campos, como en la pagecontrol de datos extendidos (PC3).
En el 2º evento, colocamos los datos visibles del cliente en el PC3.
y en el 3º evento, hacemos varias cosas, primero que no se quede vació, en caso contrario si hemos puesto una
B únicamente llamamos al módulo de búsqueda para el cliente, en caso contrario al de la búsqueda, comprobamos si existe, si no es asi nos avisa y posiciona nuevamente, en caso de que exista, comprueba si ya tenemos relleno uina descripción o forma de pago del cliente, si no existe la pone y si existe comprueba si cuadra con la que tiene el cliente, en caso de ser diferentes, nos da la opción de modificarla por la que tiene el cliente o mantener la que ya tiene.
Pasaríamos al Nombre del cliente, este campo ha de ser editable y guardado independiente al del la tabla clientes, imaginemos el siguiente caso, tenemos el cliente código 0 (contado) y en un día de reparto tenemos 3 clientes con este código, en cambio podríamos editar en cada documento con Contado, Juan, Contado limpiadora Hotel XXXxxx, etc.
De aquí pasamos a la forma de pago que pasa con lo mismo que con el nombre del cliente, el caso típico es un cliente que tiene una forma de pago x y quiere en una factura determinada pagarla de contado.
En cuanto alos botones de nuevos y búsqueda, ya los veremos más adelante.
Creo que ya es bastante por hoy.