Tecsitel_FactuGES2/Source/Modulos/Inventario/Views/uViewDetalleReservas.pas

284 lines
8.3 KiB
ObjectPascal
Raw Blame History

unit uViewDetalleReservas;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, 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, dxPScxGrid6Lnk, cxImage,
cxImageComboBox, ImgList, PngImageList, cxTextEdit, Grids, DBGrids, cxDBLookupComboBox,
cxButtonEdit, cxGridCustomPopupMenu, cxGridPopupMenu, uViewGrid,
uBizInventario, uBizAlmacenes, cxSpinEdit, uViewFiltroBase, TB2Item, TBX,
TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, cxCurrencyEdit, uAlmacenesController,
uDAInterfaces, cxContainer, cxMaskEdit, cxDropDownEdit;
type
IViewDetalleReservas = interface(IViewGrid)
['{4417F53A-5BB1-4B99-8760-4C0E1D449582}']
function GetDetalleReservas: IBizDetalleReservas;
procedure SetDetalleReservas(const Value: IBizDetalleReservas);
property DetalleReservas: IBizDetalleReservas read GetDetalleReservas write SetDetalleReservas;
function GetAlmacenes: TStringList;
procedure SetAlmacenes(const Value: TStringList);
property Almacenes: TStringList read GetAlmacenes write SetAlmacenes;
function GetObras: TStringList;
procedure SetObras(const Value: TStringList);
property Obras: TStringList read GetObras write SetObras;
function DarIDAlmacenObraSeleccionada: Variant;
function ListaAlmacenesObrasVacia: Boolean;
end;
TfrViewDetalleReservas = class(TfrViewGrid, IViewDetalleReservas)
cxGridDBTableView1: TcxGridDBTableView;
PngImageList: TPngImageList;
cxStyleArticuloSinStock: TcxStyle;
cxGridViewRecID: TcxGridDBColumn;
cxGridViewFECHA_RESERVA: TcxGridDBColumn;
cxGridViewCAUSA_RESERVA: TcxGridDBColumn;
cxGridViewID_ALMACEN: TcxGridDBColumn;
cxGridViewALMACEN: TcxGridDBColumn;
cxGridViewID_ARTICULO: TcxGridDBColumn;
cxGridViewFAMILIA: TcxGridDBColumn;
cxGridViewREFERENCIA: TcxGridDBColumn;
cxGridViewDESCRIPCION: TcxGridDBColumn;
cxGridViewCANTIDAD: TcxGridDBColumn;
cxGridViewUNIDAD_MEDIDA: TcxGridDBColumn;
cxGridViewFABRICANTE: TcxGridDBColumn;
cxGridViewREFERENCIA_FABR: TcxGridDBColumn;
cxGridViewID_ALMACEN_RESERVA: TcxGridDBColumn;
cxGridViewALMACEN_RESERVA: TcxGridDBColumn;
pnlAlmacenes: TPanel;
eAlmacen: TLabel;
cxListaAlmacenesObras: TcxComboBox;
procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView;
ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out
AStyle: TcxStyle);
procedure cxListaAlmacenesObrasPropertiesEditValueChanged(Sender: TObject);
procedure CustomViewShow(Sender: TObject);
private
//Filtros relativos a la vista
procedure AnadirFiltroAlmacenesObras;
protected
FAlmacenes: TStringList;
FObras: TStringList;
FDetalleReservas: IBizDetalleReservas;
function GetAlmacenes: TStringList;
procedure SetAlmacenes(const Value: TStringList);
function GetObras: TStringList;
procedure SetObras(const Value: TStringList);
function GetDetalleReservas: IBizDetalleReservas;
procedure SetDetalleReservas(const Value: IBizDetalleReservas);
// FAlmacenesController: IAlmacenesController;
// function GetAlmacenes: IBizAlmacen;
// procedure SetAlmacenes(const Value: IBizAlmacen);
public
property DetalleReservas: IBizDetalleReservas read GetDetalleReservas write SetDetalleReservas;
procedure AnadirOtrosFiltros; override;
// property Almacenes: IBizAlmacen read GetAlmacenes write SetAlmacenes;
destructor Destroy; override;
function DarIDAlmacenObraSeleccionada: Variant;
function ListaAlmacenesObrasVacia: Boolean;
end;
implementation
{$R *.dfm}
uses uDataModuleInventario, schInventarioClient_Intf;
procedure TfrViewDetalleReservas.AnadirFiltroAlmacenesObras;
var
FFiltro : TcxFilterCriteriaItemList;
CodigoAlmacen: Variant;
begin
FFiltro := AddFilterGrid(fboAnd);
CodigoAlmacen := DarIDAlmacenObraSeleccionada;
if not VarIsNull(CodigoAlmacen) then
begin
FFiltro.AddItem(cxGridViewID_ALMACEN, foEqual, CodigoAlmacen, CodigoAlmacen);
cxGridViewALMACEN.Visible := False;
end
else
cxGridViewALMACEN.Visible := True;
end;
procedure TfrViewDetalleReservas.AnadirOtrosFiltros;
begin
inherited;
AnadirFiltroAlmacenesObras;
//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;
procedure TfrViewDetalleReservas.CustomViewShow(Sender: TObject);
begin
inherited;
if Assigned(FAlmacenes) or Assigned(FObras) then
cxListaAlmacenesObras.ItemIndex := 0
//En el caso de ser la vista para la selecci<63>n de articulos de un determinado almac<61>n
else
pnlAlmacenes.Visible:= False;
end;
procedure TfrViewDetalleReservas.cxGridViewStylesGetContentStyle(Sender:
TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem:
TcxCustomGridTableItem; out AStyle: TcxStyle);
{var
IndiceCol: Integer;
AStock: Variant;}
begin
inherited;
{
if Assigned(ARecord) then
begin
IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_DetalleReservasSTOCK).Index;
AStock := ARecord.DisplayTexts[IndiceCol];
if (AStock < 0) then
AStyle := cxStyleArticuloSinStock;
end;
}
end;
procedure TfrViewDetalleReservas.cxListaAlmacenesObrasPropertiesEditValueChanged(Sender: TObject);
begin
inherited;
RefrescarFiltro;
end;
function TfrViewDetalleReservas.DarIDAlmacenObraSeleccionada: Variant;
begin
//INV_ALMACENES
if Assigned(FAlmacenes) then
Result := FAlmacenes.Values[cxListaAlmacenesObras.EditValue]
//INV_OBRAS
else if Assigned(FObras) then
Result := FObras.Values[cxListaAlmacenesObras.EditValue]
else
Raise Exception.Create('No se ha asignado ninguna lista de ALMACENES');
end;
destructor TfrViewDetalleReservas.Destroy;
begin
FAlmacenes := Nil;
FObras := Nil;
FDetalleReservas := Nil;
inherited;
end;
function TfrViewDetalleReservas.GetAlmacenes: TStringList;
begin
Result := FAlmacenes;
end;
function TfrViewDetalleReservas.GetDetalleReservas: IBizDetalleReservas;
begin
Result := FDetalleReservas;
end;
function TfrViewDetalleReservas.GetObras: TStringList;
begin
Result := FObras;
end;
function TfrViewDetalleReservas.ListaAlmacenesObrasVacia: Boolean;
begin
Result := (cxListaAlmacenesObras.Properties.Items.Count = 0);
end;
procedure TfrViewDetalleReservas.SetAlmacenes(const Value: TStringList);
var
Nivel: TcxGridLevel;
i: integer;
begin
FAlmacenes := Value;
eAlmacen.Caption := 'Almac<61>n';
if Assigned(FAlmacenes) then
begin
cxGrid.BeginUpdate;
try
with cxListaAlmacenesObras.Properties.Items do
begin
BeginUpdate;
try
Clear;
for i := 0 to FAlmacenes.Count - 1 do
Add(FAlmacenes.Names[i]);
finally
EndUpdate;
end;
end;
finally
cxGrid.EndUpdate;
end;
end;
end;
procedure TfrViewDetalleReservas.SetDetalleReservas(const Value: IBizDetalleReservas);
begin
FDetalleReservas := Value;
if Assigned(FDetalleReservas) then
dsDataSource.DataTable := FDetalleReservas.DataTable
else
dsDataSource.DataTable := Nil;
end;
procedure TfrViewDetalleReservas.SetObras(const Value: TStringList);
var
Nivel: TcxGridLevel;
i: integer;
begin
FObras := Value;
eAlmacen.Caption := 'Obra';
if Assigned(FObras) then
begin
cxGrid.BeginUpdate;
try
with cxListaAlmacenesObras.Properties.Items do
begin
BeginUpdate;
try
Clear;
for i := 0 to FObras.Count - 1 do
Add(FObras.Names[i]);
finally
EndUpdate;
end;
end;
finally
cxGrid.EndUpdate;
end;
end;
end;
end.