This repository has been archived on 2024-12-02. You can view files and clone it, but cannot push or open issues or pull requests.
FactuGES/Datos/Articulos.pas
2007-06-26 08:08:27 +00:00

240 lines
6.9 KiB
ObjectPascal

{
===============================================================================
Copyright (©) 2003. 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: 10-05-2003
Versión actual: 1.0.0
Fecha versión actual: 10-05-2003
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
===============================================================================
}
unit Articulos;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
cxEdit, DB, cxDBData, ActnList, Menus, am2000menuitem, am2000popupmenu,
am2000, StdCtrls,
AdvPanel, cxGridLevel, cxClasses, cxControls, cxGridCustomView,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid,
ExtCtrls, RdxBotones, RdxBarras, RdxPaneles, RdxFrame, ArticulosModelo,
cxContainer, cxTextEdit, cxMaskEdit, cxDropDownEdit, Configuracion,
am2000utils, cxDataStorage;
type
TfrArticulos = class(TfrArticulosModelo)
pnlExtra: TRdxBarraSuperior;
eFamilia: TLabel;
cbxFamilia: TcxComboBox;
Panel1: TPanel;
eNombre: TLabel;
Buscar: TcxTextEdit;
bLimpiar: TRdxBoton;
//Habra que llamar a ArticuloModelo en lugar de artículo
procedure actAnadirExecute(Sender: TObject); override;
procedure actModificarExecute(Sender: TObject); override;
procedure actEliminarExecute(Sender: TObject); override;
procedure actConsultarExecute(Sender: TObject); override;
procedure cbxFamiliaPropertiesEditValueChanged(Sender: TObject);
procedure bLimpiarClick(Sender: TObject);
procedure BuscarPropertiesChange(Sender: TObject);
procedure actSeleccionarExecute(Sender: TObject);
private
FFamilia: String;
procedure SetFamilia(const Value: String);
protected
procedure BuscarArticulo; override;
procedure InicializarTablas; override;
public
//Solo cambiariamos las sql a las que referencia la tabla
constructor Create (AOwner : TComponent); override;
property Familia : String read FFamilia write SetFamilia;
destructor Destroy; override;
end;
var
frArticulos: TfrArticulos;
implementation
{$R *.dfm}
uses
TablaArticulos, Articulo, Entidades, BaseDatos, IBCustomDataSet, TablaFamilias,
Mensajes, Literales;
{ TfrArticulosModelo }
procedure TfrArticulos.actAnadirExecute(Sender: TObject);
begin
Contenido := TfrArticulo.Create(Self);
Contenido.Modo := Anadir;
end;
procedure TfrArticulos.actConsultarExecute(Sender: TObject);
begin
Contenido := TfrArticulo.Create(Self);
Contenido.Modo := Consultar;
end;
procedure TfrArticulos.actEliminarExecute(Sender: TObject);
begin
Contenido := TfrArticulo.Create(Self);
Contenido.Modo := Eliminar;
end;
procedure TfrArticulos.actModificarExecute(Sender: TObject);
begin
Contenido := TfrArticulo.Create(Self);
Contenido.Modo := Modificar;
end;
constructor TfrArticulos.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
cbxFamilia.Properties.Items.Add('Todas');
cbxFamilia.Properties.Items.AddStrings(dmTablaFamilias.DarFamilias);
cbxFamilia.ItemIndex := 0;
end;
procedure TfrArticulos.InicializarTablas;
begin
Entidad := entArticulo;
with TablaArticulos do
begin
DisableControls;
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaArticulos.sqlGrid);
Prepare;
Open;
ActualizarBotones;
EnableControls;
end;
end;
procedure TfrArticulos.SetFamilia(const Value: String);
var
FamiliaAux : String;
Columna : TcxGridDBColumn;
begin
FamiliaAux := Value;
with gridArticulos.ActiveView.DataController.Filter do
begin
BeginUpdate;
try
Columna := (gridArticulos.ActiveView as TcxGridDBTableView).GetColumnByFieldName('FAMILIA');
if UpperCase(FamiliaAux) = 'TODAS' then
begin
Columna.Visible := True;
Clear;
end
else begin
Columna.Visible := False;
Root.Clear;
Root.AddItem(Columna, foEqual, FamiliaAux, 'Familia');
Active := True;
end;
cbxFamilia.Text := Value;
finally
EndUpdate;
gridArticulos.ActiveView.DataController.GotoFirst;
end;
end;
end;
procedure TfrArticulos.cbxFamiliaPropertiesEditValueChanged(
Sender: TObject);
begin
Familia := cbxFamilia.Text;
end;
procedure TfrArticulos.BuscarArticulo;
begin
// inherited; <- No llamar al padre
with TablaArticulos do
begin
DisableControls;
Close;
Open;
dmTablaArticulos.InicializarTablaArticulos(@TablaArticulos);
ActualizarBotones;
EnableControls;
if not Locate('CODIGO', CodigoArticulo, []) then
gridArticulosDBTableView1.Controller.GoToFirst
else
gridArticulosDBTableView1.Controller.TopRowIndex := gridArticulosDBTableView1.Controller.FocusedRowIndex;
end;
end;
procedure TfrArticulos.bLimpiarClick(Sender: TObject);
begin
Buscar.Text := '';
end;
procedure TfrArticulos.BuscarPropertiesChange(Sender: TObject);
begin
FiltrarGrid(gridArticulos, Buscar.Text);
end;
destructor TfrArticulos.Destroy;
begin
inherited;
end;
procedure TfrArticulos.actSeleccionarExecute(Sender: TObject);
var
i : integer;
AIndex : Integer;
begin
// inherited; <- No llamar al padre
if TablaArticulos.RecordCount = 0 then
begin
VerMensaje(msgArtNoHayArt);
exit;
end;
if gridArticulosDBTableView1.VisibleItemCount = 0 then
begin
VerMensaje(msgArtNoHayArt);
exit;
end;
{ CodigoArticulo := TablaArticulos.FieldByName('CODIGO').AsString;
CloseFrame;}
FListaArticulos.Clear;
if gridArticulosDBTableView1.Controller.SelectedRecordCount <= 1 then
FListaArticulos.Add(TablaArticulos.FieldByName('CODIGO').AsString)
else begin
// Buscar el índice de la columna que tiene el código del artículo.
AIndex := gridArticulosDBTableView1.GetColumnByFieldName('CODIGO').Index;
for i := 0 to gridArticulosDBTableView1.Controller.SelectedRecordCount - 1 do
FListaArticulos.Add(gridArticulosDBTableView1.Controller.SelectedRecords[i].DisplayTexts[AIndex]);
end;
CloseFrame;
end;
end.