This repository has been archived on 2024-11-29. You can view files and clone it, but cannot push or open issues or pull requests.
Tecsitel_FactuGES/Clientes/Clientes.pas

396 lines
12 KiB
ObjectPascal
Raw Normal View History

{
===============================================================================
Copyright (<EFBFBD>) 2001. Rodax Software.
===============================================================================
Los contenidos de este fichero son propiedad de Rodax Software titular del
copyright. Este fichero s<EFBFBD>lo podr<EFBFBD> ser copiado, distribuido y utilizado,
en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
acuerdo con los t<EFBFBD>rminos y condiciones establecidas en el acuerdo/contrato
bajo el que se suministra.
-----------------------------------------------------------------------------
Web: www.rodax-software.com
===============================================================================
Fecha primera versi<EFBFBD>n: 01-10-2001
Versi<EFBFBD>n actual: 1.0.5
Fecha versi<EFBFBD>n actual: 23-11-2004
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
09-10-2001 Al pulsar la tecla ESC se activa el bot<EFBFBD>n 'Cancelar'. S<EFBFBD>lo
pasa cuando este frame est<EFBFBD> en una ventana modal.
07-04-2002 Se ha adaptado para la transacci<EFBFBD>n <EFBFBD>nica.
12-10-2002 P244. Se han a<EFBFBD>adido los listado de clientes.
06-03-2004 Al hacer doble click sobre el grid, se pasar<EFBFBD> a modificar el
registro o se seleccionar<EFBFBD>, 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.