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

322 lines
9.5 KiB
ObjectPascal
Raw Normal View 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, uCustomView, uViewBase;
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;
function GetIdAlmacenObra: Integer;
procedure SetAlmacenObra(const Value: Integer);
property IdAlmacenObra: Integer read GetIdAlmacenObra write SetAlmacenObra;
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
FIdAlmacenObra: Integer;
FAlmacenes: TStringList;
FObras: TStringList;
FDetalleReservas: IBizDetalleReservas;
function GetIdAlmacenObra: Integer;
procedure SetAlmacenObra(const Value: Integer);
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 IdAlmacenObra: Integer read GetIdAlmacenObra write SetAlmacenObra;
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);
var
i: Integer;
begin
inherited;
//INV_ALMACENES
if Assigned(FAlmacenes) then
begin
i := 0;
while (i < FAlmacenes.Count) and (FAlmacenes.ValueFromIndex[i] <> IntToStr(IdAlmacenObra)) do
Inc(i);
if (FAlmacenes.ValueFromIndex[i] = IntToStr(IdAlmacenObra)) then
cxListaAlmacenesObras.ItemIndex := i
end
//INV_OBRAS
else if Assigned(FObras) then
begin
i := 0;
while (i < FObras.Count) and (FObras.ValueFromIndex[i] <> IntToStr(IdAlmacenObra)) do
Inc(i);
if (FObras.ValueFromIndex[i] = IntToStr(IdAlmacenObra)) then
cxListaAlmacenesObras.ItemIndex := i
end
else
//En el caso de ser la vista para la selecci<63>n de articulos de un determinado almac<61>n
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
Result := Null;
if VarIsNull(cxListaAlmacenesObras.EditValue) then
Exit;
//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.GetIdAlmacenObra: Integer;
begin
Result := FIDAlmacenObra;
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.SetAlmacenObra(const Value: Integer);
begin
FIDAlmacenObra := Value;
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.