Ver Mensaje Individual
  #129  
Antiguo 18-07-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Reputación: 22
José Luis Garcí Va camino a la fama
Seguimos entrando en el código del cliente, que tiene los siguientes 3 eventos

Código Delphi [-]
procedure TFXPAF.DBNCodigoClienteChange(Sender: TObject);
// ------------------------------------------------------------------------------
// ********************************************************[ Change Cod Cli ]****
// Para posicionar en el cliente
// ------------------------------------------------------------------------------
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);
// ------------------------------------------------------------------------------
// ****************************************************[ entrar en clientes ]****
// ------------------------------------------------------------------------------
begin
   SBClientesClick(Sender);
end;


procedure TFXPAF.DBNCodigoClienteExit(Sender: TObject);
// ------------------------------------------------------------------------------
// *************************************************[ Salir de cód. cliente ]****
// ------------------------------------------------------------------------------
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);       //Si
           7BNCodigoCliente.SetFocus;       //No
          end;
       end else
       begin
          //Descripción del cliente
          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;
          //Forma de pago
          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.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita