{ =============================================================================== 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. 06-05-2002 Adaptación al grid 'TdxDBGrid'. 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 Proveedores; interface uses Dialogs, Menus, am2000menuitem, am2000popupmenu, am2000, Db, RdxBarras, Grids, DBGrids, RXDBCtrl, ExtCtrls, RdxBotones, Classes, Graphics, Controls, RdxPaneles, RdxFrameProveedores, IBEvents, dxCntner, dxTL, dxDBCtrl, dxDBGrid, am2000utils, Windows, dxGrClms; type TfrProveedores = class(TRdxFrameProveedores) BarraProveedores: TRdxBarraSuperior; bAnadir: TRdxBotonSuperior; bModificar: TRdxBotonSuperior; bEliminar: TRdxBotonSuperior; bConsultar: TRdxBotonSuperior; bBuscar: TRdxBotonSuperior; bDocumentos: TRdxBotonMenu; dsProveedores: TDataSource; menuDocumentos: TPopupMenu2000; Presupuestos1: TMenuItem2000; N1: TMenuItem2000; Facturas1: TMenuItem2000; menuListar: TPopupMenu2000; bListadoEtiquetas: TMenuItem2000; bListar: TRdxBotonMenu; MenuItem1: TMenuItem2000; imgSombra: TImage; pnlContenido: TRdxPanel; PanelPrincipal: TPanel; gridProveedores: TdxDBGrid; brSeleccion: TRdxBarraInferior; bSeleccionar: TRdxBoton; bCancelarGuardar: TRdxBoton; pnlExtra: TRdxBarraSuperior; bEtiquetar: TRdxBoton; procedure bAnadirClick(Sender: TObject); procedure bModificarClick(Sender: TObject); procedure bEliminarClick(Sender: TObject); procedure bConsultarClick(Sender: TObject); procedure bBuscarClick(Sender: TObject); procedure bSeleccionarClick(Sender: TObject); procedure bCancelarGuardarClick(Sender: TObject); procedure Presupuestos1Click(Sender: TObject); procedure Facturas1Click(Sender: TObject); procedure gridProveedoresRefreshButton(Sender: TObject); procedure bListadoEtiquetasClick(Sender: TObject); procedure MenuItem1Click(Sender: TObject); procedure gridProveedoresDblClick(Sender: TObject); procedure bEtiquetarClick(Sender: TObject); procedure gridProveedoresCustomDrawCell(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 BuscarProveedor; 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 TablaProveedores; property Entidad; end; var frProveedores: TfrProveedores; implementation {$R *.DFM} uses Proveedor, IBDatabase, Configuracion, BuscarProveedor, Tipos, TablaProveedores, PedidosProveedores, BaseDatos, IBCustomDataSet, Sysutils, FacturasProveedores, GenerarEtiquetasProveedores, ListarProveedores, Constantes, strFunc; constructor TfrProveedores.Create (AOwner : TComponent); begin inherited Create(AOwner); Entidad := entProveedor; ConfigurarFrame(Self, Self.Entidad); BaseDatos := dmBaseDatos.BD; Transaccion := dmBaseDatos.Transaccion; TablaProveedores := TIBDataSet.Create(Self); dsProveedores.DataSet := TablaProveedores; with TablaProveedores do begin DisableControls; Database := BaseDatos; Transaction := Transaccion; SelectSQL.Assign(dmTablaProveedores.sqlGrid); Prepare; Open; EnableControls; ActualizarBotones; end; dmTablaProveedores.InicializarGridProveedores(gridProveedores); with (gridProveedores.ColumnByFieldName('ETIQUETADO') as TdxDBGridImageColumn) do begin Images := dmConfiguracion.ilEtiquetado; ImageIndexes.Add('0'); ImageIndexes.Add('1'); Values.Add('1'); Values.Add('0'); end; end; destructor TfrProveedores.Destroy; begin with TablaProveedores do begin Close; UnPrepare; Free; end; inherited; end; procedure TfrProveedores.bAnadirClick(Sender: TObject); begin Contenido := TfrProveedor.Create(Self); Contenido.Modo := Anadir; end; procedure TfrProveedores.bModificarClick(Sender: TObject); begin CodigoProveedor := TablaProveedores.FieldByName('CODIGO').AsString; Contenido := TfrProveedor.Create(Self); Contenido.Modo := Modificar; end; procedure TfrProveedores.bEliminarClick(Sender: TObject); begin CodigoProveedor := TablaProveedores.FieldByName('CODIGO').AsString; Contenido := TfrProveedor.Create(Self); Contenido.Modo := Eliminar; end; procedure TfrProveedores.bConsultarClick(Sender: TObject); begin CodigoProveedor := TablaProveedores.FieldByName('CODIGO').AsString; Contenido := TfrProveedor.Create(Self); Contenido.Modo := Consultar; end; procedure TfrProveedores.bBuscarClick(Sender: TObject); begin CodigoProveedor := TablaProveedores.FieldByName('CODIGO').AsString; Contenido := TfrBuscarProveedor.Create(Self); end; procedure TfrProveedores.bSeleccionarClick(Sender: TObject); begin CodigoProveedor := TablaProveedores.FieldByName('CODIGO').AsString; CloseFrame; end; procedure TfrProveedores.bCancelarGuardarClick(Sender: TObject); begin inherited; CodigoProveedor := NULL; CloseFrame; end; procedure TfrProveedores.BuscarProveedor; begin with TablaProveedores do begin DisableControls; Close; Open; ActualizarBotones; EnableControls; Locate('CODIGO', CodigoProveedor, []); end; end; procedure TfrProveedores.FreeContenido; begin if (Contenido is TRdxFrameProveedores) then CodigoProveedor := (Contenido as TRdxFrameProveedores).CodigoProveedor; inherited; end; procedure TfrProveedores.Presupuestos1Click(Sender: TObject); begin CodigoProveedor := TablaProveedores.FieldByName('CODIGO').AsString; CaptionModal := Format('Lista de pedidos al proveedor %s', [TablaProveedores.FieldByName('NOMBRE').AsString]); WidthModal := 815; HeightModal := 600; ModoModal := Consultar; ContenidoModal := TfrPedidosProveedores.Create(Self); end; procedure TfrProveedores.VerModal; begin CodigoProveedor := TablaProveedores.FieldByName('CODIGO').AsString; if (ContenidoModal is TfrPedidosProveedores) then (ContenidoModal as TfrPedidosProveedores).CodigoProveedor := CodigoProveedor; if (ContenidoModal is TfrFacturasProveedores) then (ContenidoModal as TfrFacturasProveedores).CodigoProveedor := CodigoProveedor; inherited; end; procedure TfrProveedores.Facturas1Click(Sender: TObject); begin CodigoProveedor := TablaProveedores.FieldByName('CODIGO').AsString; CaptionModal := Format('Lista de facturas del proveedor %s', [TablaProveedores.FieldByName('NOMBRE').AsString]); WidthModal := 815; HeightModal := 600; ModoModal := Consultar; ContenidoModal := TfrFacturasProveedores.Create(Self); end; procedure TfrProveedores.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 TablaProveedores.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 TfrProveedores.gridProveedoresRefreshButton(Sender: TObject); begin BuscarProveedor; end; procedure TfrProveedores.bListadoEtiquetasClick(Sender: TObject); begin CaptionModal := 'Generar etiquetas de proveedor'; WidthModal := 515; HeightModal := 200; ModoModal := Listar; EntidadModal := entProveedor; ContenidoModal := TfrGenerarEtiquetasProveedores.Create(Self); end; procedure TfrProveedores.MenuItem1Click(Sender: TObject); begin Contenido := TfrListarProveedores.Create(Self); Contenido.Modo := Listar; end; procedure TfrProveedores.gridProveedoresDblClick(Sender: TObject); begin if Modo = Seleccionar then bSeleccionar.Click else bModificar.Click; end; procedure TfrProveedores.bEtiquetarClick(Sender: TObject); var IndiceCol1 : Integer; IndiceCol2 : Integer; IndiceSel : Integer; CodProveedores0 : TStringList; CodProveedores1 : TStringList; begin IndiceCol1 := gridProveedores.ColumnByFieldName('CODIGO').Index; IndiceCol2 := gridProveedores.ColumnByFieldName('ETIQUETADO').Index; CodProveedores0 := TStringList.Create; CodProveedores1 := TStringList.Create; for IndiceSel:=0 to gridProveedores.SelectedCount-1 do begin if StrToInt(gridProveedores.SelectedNodes[IndiceSel].Strings[IndiceCol2]) = CTE_NOETIQUETAR then CodProveedores0.Append(gridProveedores.SelectedNodes[IndiceSel].Strings[IndiceCol1]) else CodProveedores1.Append(gridProveedores.SelectedNodes[IndiceSel].Strings[IndiceCol1]); end; //Asignamos su nuevo valor a los proveedores elegidos dmTablaProveedores.etiquetarProveedores(codProveedores0, CTE_NOETIQUETAR); dmTablaProveedores.etiquetarProveedores(codProveedores1, CTE_ETIQUETAR); commit; codProveedores0.Free; codProveedores1.Free; //Refrescamos CodigoProveedor := gridProveedores.FocusedNode.Strings[IndiceCol1]; end; procedure TfrProveedores.gridProveedoresCustomDrawCell(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 TfrProveedores.SetEtiquetados(const Value: Boolean); var valor : variant; begin valor := 1; FEtiquetados := Value; if FEtiquetados then gridProveedores.Filter.Add(gridProveedores.FindColumnByFieldName('ETIQUETADO'), valor, valor); end; end.