git-svn-id: https://192.168.0.254/svn/Proyectos.AlonsoYSal_FactuGES/trunk@5 9a1d36f3-7752-2d40-8ccb-50eb49674c68
214 lines
7.0 KiB
ObjectPascal
214 lines
7.0 KiB
ObjectPascal
unit uViewArticulosAlmacen;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
Dialogs, uViewGrid, uViewPreview, frxClass, frxPreview, cxStyles,
|
|
cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB,
|
|
cxDBData, ActnList, uDADataTable, cxGridLevel, cxClasses, cxControls,
|
|
cxGridCustomView, cxGridCustomTableView, cxGridTableView,
|
|
cxGridDBTableView, cxGrid, StdCtrls, ExtCtrls, cxLabel, dxPSGlbl, dxPSUtl,
|
|
dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns,
|
|
dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk, cxImage,
|
|
cxImageComboBox, ImgList, PngImageList, cxTextEdit, Grids, DBGrids, uBizArticulos,
|
|
cxDBLookupComboBox, cxButtonEdit, uViewFiltroBase;
|
|
|
|
type
|
|
IViewArticulosAlmacen = interface(IViewGrid)
|
|
['{DDB60E80-F34F-42D7-AD44-10AEF3068078}']
|
|
function GetArticulosAlmacen: IBizArticulosAlmacen;
|
|
procedure SetArticulosAlmacen(const Value: IBizArticulosAlmacen);
|
|
property ArticulosAlmacen: IBizArticulosAlmacen read GetArticulosAlmacen write
|
|
SetArticulosAlmacen;
|
|
end;
|
|
|
|
TfrViewArticulosAlmacen = class(TfrViewGrid, IViewArticulosAlmacen)
|
|
cxGridDBTableView1: TcxGridDBTableView;
|
|
cxGridViewCODIGO: TcxGridDBColumn;
|
|
cxGridViewCODIGOALMACEN: TcxGridDBColumn;
|
|
cxGridViewDESCRIPCION: TcxGridDBColumn;
|
|
cxGridViewCODIGOMONTAJE: TcxGridDBColumn;
|
|
cxGridViewCODIGOPEDIDO: TcxGridDBColumn;
|
|
PngImageList: TPngImageList;
|
|
cxGridViewREFERENCIAMONTAJE: TcxGridDBColumn;
|
|
cxGridViewALMACEN: TcxGridDBColumn;
|
|
cxGridViewICONO: TcxGridDBColumn;
|
|
cxStyleArticuloReservado: TcxStyle;
|
|
cxGridViewCLIENTE: TcxGridDBColumn;
|
|
procedure SelectionChanged(Sender: TcxCustomGridTableView); override;
|
|
procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel:
|
|
TcxGridLevel);
|
|
procedure cxGridViewCODIGOCustomDrawCell(Sender: TcxCustomGridTableView;
|
|
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var
|
|
ADone: Boolean);
|
|
procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView;
|
|
ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out
|
|
AStyle: TcxStyle);
|
|
|
|
private
|
|
//Filtros relativos a la vista
|
|
procedure AnadirFiltroAlmacen;
|
|
|
|
protected
|
|
FNivelFiltrado : TcxFilterCriteriaItemList;
|
|
FArticulosAlmacen: IBizArticulosAlmacen;
|
|
function GetArticulosAlmacen: IBizArticulosAlmacen;
|
|
procedure SetArticulosAlmacen(const Value: IBizArticulosAlmacen);
|
|
procedure AnadirOtrosFiltros; override;
|
|
|
|
public
|
|
property ArticulosAlmacen: IBizArticulosAlmacen read GetArticulosAlmacen write
|
|
SetArticulosAlmacen;
|
|
constructor Create(AOwner: TComponent); override;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
var
|
|
frViewArticulosAlmacen: TfrViewArticulosAlmacen;
|
|
|
|
implementation
|
|
|
|
uses uDataModuleArticulos, schArticulosClient_Intf, uDBSelectionList,
|
|
uBizAlmacenes, uDataModuleAlmacenes;
|
|
|
|
{$R *.dfm}
|
|
|
|
constructor TfrViewArticulosAlmacen.Create(AOwner: TComponent);
|
|
begin
|
|
inherited;
|
|
Self.MultiSelection := True;
|
|
end;
|
|
|
|
procedure TfrViewArticulosAlmacen.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel);
|
|
begin
|
|
inherited;
|
|
RefrescarFiltro;
|
|
end;
|
|
|
|
procedure TfrViewArticulosAlmacen.cxGridViewCODIGOCustomDrawCell(Sender:
|
|
TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo:
|
|
TcxGridTableDataCellViewInfo; var ADone: Boolean);
|
|
var
|
|
R: TRect;
|
|
begin
|
|
inherited;
|
|
R := AViewInfo.ContentBounds;
|
|
ACanvas.FillRect(R);
|
|
if Length(AViewInfo.Text) = 0 then
|
|
ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0)
|
|
else
|
|
ACanvas.DrawImage(PngImageList, R.Left, R.Top, 1);
|
|
ADone := True;
|
|
end;
|
|
|
|
procedure TfrViewArticulosAlmacen.cxGridViewStylesGetContentStyle(Sender:
|
|
TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem:
|
|
TcxCustomGridTableItem; out AStyle: TcxStyle);
|
|
var
|
|
IndiceCol: Integer;
|
|
AMontaje: string;
|
|
begin
|
|
inherited;
|
|
if Assigned(ARecord) then
|
|
begin
|
|
IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_ARTICULOSREFERENCIAMONTAJE).Index;
|
|
AMontaje := VarToStr(ARecord.DisplayTexts[IndiceCol]);
|
|
if (Length(AMontaje) > 0) then
|
|
AStyle := cxStyleArticuloReservado;
|
|
end;
|
|
end;
|
|
|
|
destructor TfrViewArticulosAlmacen.Destroy;
|
|
begin
|
|
inherited;
|
|
end;
|
|
|
|
function TfrViewArticulosAlmacen.GetArticulosAlmacen: IBizArticulosAlmacen;
|
|
begin
|
|
Result := FArticulosAlmacen;
|
|
end;
|
|
|
|
procedure TfrViewArticulosAlmacen.SetArticulosAlmacen(const Value: IBizArticulosAlmacen);
|
|
var
|
|
Nivel: TcxGridLevel;
|
|
i: Integer;
|
|
AAlmacenes: IBizAlmacen;
|
|
|
|
begin
|
|
FArticulosAlmacen := Value;
|
|
if Assigned(FArticulosAlmacen) then
|
|
begin
|
|
DADataSource.DataTable := FArticulosAlmacen.DataTable;
|
|
|
|
try
|
|
AAlmacenes := dmAlmacenes.GetItems;
|
|
AAlmacenes.DataTable.Active := True;
|
|
AAlmacenes.First;
|
|
while not AAlmacenes.EOF do
|
|
begin
|
|
Nivel := cxGrid.Levels.Add;
|
|
Nivel.Caption := AAlmacenes.NOMBRE;
|
|
Nivel.Tag := AAlmacenes.CODIGO;
|
|
AAlmacenes.Next;
|
|
end;
|
|
finally
|
|
AAlmacenes := Nil;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewArticulosAlmacen.SelectionChanged(Sender: TcxCustomGridTableView);
|
|
var
|
|
ABookmark : Pointer;
|
|
i, pos: Integer;
|
|
|
|
begin
|
|
inherited;
|
|
|
|
pos := (Sender as TcxGridDBTableView).GetColumnByFieldName('CODIGO').Index;
|
|
if FArticulosAlmacen <> NIL then
|
|
begin
|
|
FArticulosAlmacen.DataTable.DisableControls;
|
|
ABookmark := FArticulosAlmacen.DataTable.GetBookMark;
|
|
(FArticulosAlmacen as ISelectedRowList).SelectedRows.Clear;
|
|
for i:=0 to Sender.Controller.SelectedRecordCount-1 do
|
|
begin
|
|
FArticulosAlmacen.DataTable.Locate('CODIGO', Sender.Controller.SelectedRecords[i].Values[pos],[]);
|
|
(FArticulosAlmacen as ISelectedRowList).SelectedRows.CurrentRowSelected := True;
|
|
end;
|
|
(FArticulosAlmacen as ISelectedRowList).SelectedRows.Count;
|
|
FArticulosAlmacen.DataTable.GotoBookmark(ABookmark);
|
|
FArticulosAlmacen.DataTable.FreeBookmark(ABookmark);
|
|
FArticulosAlmacen.DataTable.EnableControls;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewArticulosAlmacen.AnadirFiltroAlmacen;
|
|
var
|
|
CodigoAlmacen: String;
|
|
FFiltro : TcxFilterCriteriaItemList;
|
|
begin
|
|
cxGridView.DataController.Filter.Options := [fcoCaseInsensitive, fcoSoftCompare];
|
|
FFiltro := AddFilterGrid(fboAnd);
|
|
|
|
CodigoAlmacen := IntToStr(cxGrid.Levels.Items[cxGrid.ActiveLevel.Index].Tag);
|
|
if CodigoAlmacen <> '-1' then
|
|
FFiltro.AddItem(cxGridViewCODIGOALMACEN, foEqual, CodigoAlmacen, CodigoAlmacen);
|
|
end;
|
|
|
|
procedure TfrViewArticulosAlmacen.AnadirOtrosFiltros;
|
|
begin
|
|
inherited;
|
|
|
|
AnadirFiltroAlmacen;
|
|
|
|
//Finalmente activamos el filtro si tenemos algo
|
|
if cxGridView.DataController.Filter.IsEmpty
|
|
then cxGridView.DataController.Filter.Active := False
|
|
else cxGridView.DataController.Filter.Active := True;
|
|
cxGrid.ActiveLevel.GridView := cxGridView;
|
|
end;
|
|
|
|
end.
|