git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES/trunk@4 b68bf8ae-e977-074f-a058-3cfd71dd8f45
396 lines
12 KiB
ObjectPascal
396 lines
12 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.0.5
|
|
Fecha versión actual: 23-11-2004
|
|
===============================================================================
|
|
Modificaciones:
|
|
|
|
Fecha Comentarios
|
|
---------------------------------------------------------------------------
|
|
09-10-2001 Al pulsar la tecla ESC se activa el botón 'Cancelar'. Sólo
|
|
pasa cuando este frame está en una ventana modal.
|
|
|
|
07-04-2002 Se ha adaptado para la transacción única.
|
|
|
|
12-10-2002 P244. Se han añadido los listado de clientes.
|
|
|
|
06-03-2004 Al hacer doble click sobre el grid, se pasará a modificar el
|
|
registro o se seleccionará, dependiendo del modo en el que
|
|
se encuentre la pantalla.
|
|
|
|
23-11-2004 p297. Solo sacar etiquetas de los clientes/proveedores etiquetados.
|
|
===============================================================================
|
|
}
|
|
|
|
unit Clientes;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
Grids, DBGrids, ComCtrls, RdxBotones, ToolWin, ExtCtrls,
|
|
Tipos, Menus, am2000menuitem, am2000popupmenu, am2000, Db, DBTables,
|
|
RXDBCtrl, RdxPaneles, RdxBarras, TablaClientes,
|
|
RdxDBFrame, RdxFrameClientes, dxCntner, dxTL, dxDBCtrl,
|
|
dxDBGrid, am2000utils, pngimage, ImgList, dxDBTLCl, dxGrClms;
|
|
|
|
type
|
|
TfrClientes = class(TRdxFrameClientes)
|
|
menuDocumentos: TPopupMenu2000;
|
|
Presupuestos1: TMenuItem2000;
|
|
Albaranes1: TMenuItem2000;
|
|
Facturas1: TMenuItem2000;
|
|
N1: TMenuItem2000;
|
|
N2: TMenuItem2000;
|
|
dsClientes: TDataSource;
|
|
pnlSuperior: TRdxBarraSuperior;
|
|
bAnadir: TRdxBotonSuperior;
|
|
bModificar: TRdxBotonSuperior;
|
|
bEliminar: TRdxBotonSuperior;
|
|
bConsultar: TRdxBotonSuperior;
|
|
bBuscar: TRdxBotonSuperior;
|
|
bDocumentos: TRdxBotonMenu;
|
|
bListar: TRdxBotonMenu;
|
|
menuListar: TPopupMenu2000;
|
|
bListadoEtiquetas: TMenuItem2000;
|
|
Listadodeclientes1: TMenuItem2000;
|
|
imgSombra: TImage;
|
|
pnlContenido: TRdxPanel;
|
|
pnlExtra: TRdxBarraSuperior;
|
|
bEtiquetar: TRdxBoton;
|
|
pnlGrid: TPanel;
|
|
gridClientes: TdxDBGrid;
|
|
brSeleccion: TRdxBarraInferior;
|
|
bSeleccionar: TRdxBoton;
|
|
bCancelarGuardar: TRdxBoton;
|
|
procedure bAnadirClick(Sender: TObject);
|
|
procedure bModificarClick(Sender: TObject);
|
|
procedure bConsultarClick(Sender: TObject);
|
|
procedure bBuscarClick(Sender: TObject);
|
|
procedure bEliminarClick(Sender: TObject);
|
|
procedure bSeleccionarClick(Sender: TObject);
|
|
procedure bCancelarGuardarClick(Sender: TObject);
|
|
procedure Presupuestos1Click(Sender: TObject);
|
|
procedure Albaranes1Click(Sender: TObject);
|
|
procedure Facturas1Click(Sender: TObject);
|
|
procedure gridClientesRefreshButton(Sender: TObject);
|
|
procedure Listadodeclientes1Click(Sender: TObject);
|
|
procedure bListadoEtiquetasClick(Sender: TObject);
|
|
procedure gridClientesDblClick(Sender: TObject);
|
|
procedure bEtiquetarClick(Sender: TObject);
|
|
procedure gridClientesCustomDrawCell(Sender: TObject; ACanvas: TCanvas;
|
|
ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxTreeListColumn;
|
|
ASelected, AFocused, ANewItemRow: Boolean; var AText: String;
|
|
var AColor: TColor; AFont: TFont; var AAlignment: TAlignment;
|
|
var ADone: Boolean);
|
|
private
|
|
FEtiquetados: Boolean;
|
|
procedure ActualizarBotones;
|
|
procedure SetEtiquetados(const Value: Boolean);
|
|
protected
|
|
procedure BuscarCliente; override;
|
|
procedure FreeContenido; override;
|
|
procedure VerModal; override;
|
|
public
|
|
property SoloEtiquetados : Boolean read FEtiquetados write SetEtiquetados;
|
|
constructor Create (AOwner : TComponent); override;
|
|
destructor Destroy; override;
|
|
published
|
|
property TablaClientes;
|
|
property Entidad;
|
|
end;
|
|
|
|
var
|
|
frClientes: TfrClientes;
|
|
|
|
implementation
|
|
{$R *.DFM}
|
|
uses
|
|
IBCustomDataSet, Cliente, BuscarCliente, BaseDatos, PresupuestosClientes,
|
|
AlbaranesClientes, FacturasClientes, ListarClientes, GenerarEtiquetasClientes,
|
|
Configuracion, mensajes, StrFunc, Constantes;
|
|
|
|
constructor TfrClientes.Create (AOwner : TComponent);
|
|
begin
|
|
inherited Create(AOwner);
|
|
Entidad := entCliente;
|
|
ConfigurarFrame(Self, Self.Entidad);
|
|
|
|
BaseDatos := dmBaseDatos.BD;
|
|
Transaccion := dmBaseDatos.Transaccion;
|
|
TablaClientes := TIBDataSet.Create(Self);
|
|
dsClientes.DataSet := TablaClientes;
|
|
|
|
with TablaClientes do
|
|
begin
|
|
Database := BaseDatos;
|
|
Transaction := Transaccion;
|
|
SelectSQL.Assign(dmTablaClientes.sqlGrid);
|
|
Prepare;
|
|
Open;
|
|
ActualizarBotones;
|
|
end;
|
|
|
|
dmTablaClientes.InicializarGridClientes(gridClientes);
|
|
with (gridClientes.ColumnByFieldName('ETIQUETADO') as TdxDBGridImageColumn) do
|
|
begin
|
|
Images := dmConfiguracion.ilEtiquetado;
|
|
ImageIndexes.Add('0');
|
|
ImageIndexes.Add('1');
|
|
Values.Add('1');
|
|
Values.Add('0');
|
|
end;
|
|
end;
|
|
|
|
procedure TfrClientes.bAnadirClick(Sender: TObject);
|
|
begin
|
|
Contenido := TfrCliente.Create(Self);
|
|
Contenido.Modo := Anadir;
|
|
end;
|
|
|
|
procedure TfrClientes.bModificarClick(Sender: TObject);
|
|
begin
|
|
CodigoCliente := TablaClientes.FieldByName('CODIGO').AsString;
|
|
Contenido := TfrCliente.Create(Self);
|
|
Contenido.Modo := Modificar;
|
|
end;
|
|
|
|
procedure TfrClientes.bConsultarClick(Sender: TObject);
|
|
begin
|
|
CodigoCliente := TablaClientes.FieldByName('CODIGO').AsString;
|
|
Contenido := TfrCliente.Create(Self);
|
|
Contenido.Modo := Consultar;
|
|
end;
|
|
|
|
procedure TfrClientes.bBuscarClick(Sender: TObject);
|
|
begin
|
|
CodigoCliente := TablaClientes.FieldByName('CODIGO').AsString;
|
|
Contenido := TfrBuscarCliente.Create(Self);
|
|
end;
|
|
|
|
procedure TfrClientes.bEliminarClick(Sender: TObject);
|
|
begin
|
|
CodigoCliente := TablaClientes.FieldByName('CODIGO').AsString;
|
|
Contenido := TfrCliente.Create(Self);
|
|
Contenido.Modo := Eliminar;
|
|
end;
|
|
|
|
procedure TfrClientes.bSeleccionarClick(Sender: TObject);
|
|
begin
|
|
CodigoCliente := TablaClientes.FieldByName('CODIGO').AsString;
|
|
CloseFrame;
|
|
end;
|
|
|
|
procedure TfrClientes.bCancelarGuardarClick(Sender: TObject);
|
|
begin
|
|
FCodigoCliente := NULL;
|
|
CloseFrame;
|
|
end;
|
|
|
|
procedure TfrClientes.BuscarCliente;
|
|
begin
|
|
with TablaClientes do
|
|
begin
|
|
DisableControls;
|
|
Close;
|
|
Open;
|
|
ActualizarBotones;
|
|
EnableControls;
|
|
Locate('CODIGO', CodigoCliente, []);
|
|
end;
|
|
end;
|
|
|
|
destructor TfrClientes.Destroy;
|
|
begin
|
|
TablaClientes.Close;
|
|
TablaClientes.Unprepare;
|
|
TablaClientes.Free;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrClientes.FreeContenido;
|
|
begin
|
|
if (Contenido is TRdxFrameClientes) then
|
|
CodigoCliente := (Contenido as TRdxFrameClientes).CodigoCliente;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrClientes.Presupuestos1Click(Sender: TObject);
|
|
begin
|
|
CodigoCliente := TablaClientes.FieldByName('CODIGO').AsString;
|
|
CaptionModal := Format('Lista de presupuestos del cliente %s', [TablaClientes.FieldByName('NOMBRE').AsString]);
|
|
WidthModal := 815;
|
|
HeightModal := 600;
|
|
ModoModal := Consultar;
|
|
ContenidoModal := TfrPresupuestosClientes.Create(Self);
|
|
end;
|
|
|
|
procedure TfrClientes.VerModal;
|
|
begin
|
|
FCodigoCliente := TablaClientes.FieldByName('CODIGO').AsString;
|
|
if (ContenidoModal is TfrPresupuestosClientes) then
|
|
(ContenidoModal as TfrPresupuestosClientes).CodigoCliente := FCodigoCliente;
|
|
if (ContenidoModal is TfrAlbaranesClientes) then
|
|
(ContenidoModal as TfrAlbaranesClientes).CodigoCliente := FCodigoCliente;
|
|
if (ContenidoModal is TfrFacturasClientes) then
|
|
(ContenidoModal as TfrFacturasClientes).CodigoCliente := FCodigoCliente;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrClientes.Facturas1Click(Sender: TObject);
|
|
begin
|
|
CodigoCliente := TablaClientes.FieldByName('CODIGO').AsString;
|
|
CaptionModal := Format('Lista de facturas del cliente %s', [TablaClientes.FieldByName('NOMBRE').AsString]);
|
|
WidthModal := 815;
|
|
HeightModal := 600;
|
|
ModoModal := Consultar;
|
|
ContenidoModal := TfrFacturasClientes.Create(Self);
|
|
end;
|
|
|
|
procedure TfrClientes.ActualizarBotones;
|
|
begin
|
|
if BaseDatos.IsReadOnly then
|
|
begin
|
|
bAnadir.Enabled := False;
|
|
bModificar.Enabled := False;
|
|
bEliminar.Enabled := False;
|
|
bConsultar.Enabled := True;
|
|
bDocumentos.Enabled := True;
|
|
bBuscar.Enabled := True;
|
|
Exit;
|
|
end;
|
|
|
|
if TablaClientes.RecordCount = 0 then
|
|
begin
|
|
bAnadir.Enabled := True;
|
|
bModificar.Enabled := False;
|
|
bEliminar.Enabled := False;
|
|
bConsultar.Enabled := False;
|
|
bDocumentos.Enabled := False;
|
|
bBuscar.Enabled := False;
|
|
end
|
|
else begin
|
|
bAnadir.Enabled := True;
|
|
bModificar.Enabled := True;
|
|
bEliminar.Enabled := True;
|
|
bConsultar.Enabled := True;
|
|
bDocumentos.Enabled := True;
|
|
bBuscar.Enabled := True;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrClientes.gridClientesRefreshButton(Sender: TObject);
|
|
begin
|
|
BuscarCliente;
|
|
end;
|
|
|
|
procedure TfrClientes.Albaranes1Click(Sender: TObject);
|
|
begin
|
|
CodigoCliente := TablaClientes.FieldByName('CODIGO').AsString;
|
|
CaptionModal := Format('Lista de albaranes del cliente %s', [TablaClientes.FieldByName('NOMBRE').AsString]);
|
|
WidthModal := 815;
|
|
HeightModal := 600;
|
|
ModoModal := Consultar;
|
|
ContenidoModal := TfrAlbaranesClientes.Create(Self);
|
|
end;
|
|
|
|
procedure TfrClientes.Listadodeclientes1Click(Sender: TObject);
|
|
begin
|
|
Contenido := TfrListarClientes.Create(Self);
|
|
Contenido.Modo := Listar;
|
|
end;
|
|
|
|
procedure TfrClientes.bListadoEtiquetasClick(Sender: TObject);
|
|
begin
|
|
CaptionModal := 'Generar etiquetas de cliente';
|
|
WidthModal := 505;
|
|
HeightModal := 200;
|
|
ModoModal := Listar;
|
|
EntidadModal := entCliente;
|
|
ContenidoModal := TfrGenerarEtiquetasClientes.Create(Self);
|
|
end;
|
|
|
|
procedure TfrClientes.gridClientesDblClick(Sender: TObject);
|
|
begin
|
|
if Modo = Seleccionar then
|
|
bSeleccionar.Click
|
|
else
|
|
bModificar.Click;
|
|
end;
|
|
|
|
procedure TfrClientes.bEtiquetarClick(Sender: TObject);
|
|
var
|
|
IndiceCol1 : Integer;
|
|
IndiceCol2 : Integer;
|
|
IndiceSel : Integer;
|
|
CodClientes0 : TStringList;
|
|
CodClientes1 : TStringList;
|
|
|
|
begin
|
|
IndiceCol1 := gridClientes.ColumnByFieldName('CODIGO').Index;
|
|
IndiceCol2 := gridClientes.ColumnByFieldName('ETIQUETADO').Index;
|
|
|
|
CodClientes0 := TStringList.Create;
|
|
CodClientes1 := TStringList.Create;
|
|
|
|
for IndiceSel:=0 to gridClientes.SelectedCount-1 do
|
|
begin
|
|
if StrToInt(gridClientes.SelectedNodes[IndiceSel].Strings[IndiceCol2]) = CTE_NOETIQUETAR then
|
|
CodClientes0.Append(gridClientes.SelectedNodes[IndiceSel].Strings[IndiceCol1])
|
|
else
|
|
CodClientes1.Append(gridClientes.SelectedNodes[IndiceSel].Strings[IndiceCol1]);
|
|
end;
|
|
|
|
//Asignamos su nuevo valor a los clientes elegidos
|
|
dmTablaClientes.EtiquetarClientes(codClientes0, CTE_NOETIQUETAR);
|
|
dmTablaClientes.EtiquetarClientes(codClientes1, CTE_ETIQUETAR);
|
|
Commit;
|
|
|
|
codClientes0.Free;
|
|
codClientes1.Free;
|
|
|
|
//Refrescamos
|
|
CodigoCliente := gridClientes.FocusedNode.Strings[IndiceCol1];
|
|
end;
|
|
|
|
procedure TfrClientes.gridClientesCustomDrawCell(Sender: TObject;
|
|
ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode;
|
|
AColumn: TdxTreeListColumn; ASelected, AFocused, ANewItemRow: Boolean;
|
|
var AText: String; var AColor: TColor; AFont: TFont;
|
|
var AAlignment: TAlignment; var ADone: Boolean);
|
|
var
|
|
IndiceCol : Integer;
|
|
begin
|
|
{ if not ASelected then
|
|
begin
|
|
IndiceCol := (Sender as TdxDBGrid).ColumnByFieldName('ETIQUETADO').Index;
|
|
if StrToInt(ANode.Strings[IndiceCol]) = CTE_ETIQUETAR then
|
|
AFont.Color := COLOR_ETIQUETADO
|
|
else
|
|
AFont.Color := COLOR_NOETIQUETADO;
|
|
end;}
|
|
end;
|
|
|
|
procedure TfrClientes.SetEtiquetados(const Value: Boolean);
|
|
var
|
|
valor : variant;
|
|
begin
|
|
valor := 1;
|
|
FEtiquetados := Value;
|
|
if FEtiquetados then
|
|
gridClientes.Filter.Add(gridClientes.FindColumnByFieldName('ETIQUETADO'), valor, valor);
|
|
end;
|
|
|
|
end.
|