This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
Noviseda_FactuGES2/Source/Modulos/Articulos/Views/uViewArticulosPorProveedor.pas
2009-12-18 18:16:01 +00:00

307 lines
9.9 KiB
ObjectPascal

unit uViewArticulosPorProveedor;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel,
cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView,
cxGridTableView, cxGridDBTableView, cxGrid, uBizArticulos, ActnList, Menus,
cxGridBandedTableView, cxGridDBBandedTableView, JvComponent,
JvFormAutoSize, PngImageList, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn,
dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns,
dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGrid6Lnk,
cxGridCustomPopupMenu, cxGridPopupMenu, cxCurrencyEdit, cxSpinEdit, cxCheckBox,
cxCheckComboBox, cxImageComboBox, TB2Item, TBX, TB2Toolbar, TBXDkPanels,
TB2Dock, uViewFiltroBase, dxPgsDlg, uDAInterfaces,
uArticulosController, uViewArticulos, uCustomView, uViewBase;
type
TfrViewArticulosPorProveedor = class(TfrViewGrid, IViewArticulos)
cxGridViewREFERENCIA: TcxGridDBColumn;
cxGridViewDESCRIPCION: TcxGridDBColumn;
cxGridViewFAMILIA: TcxGridDBColumn;
cxGridViewNOMBRE_PROVEEDOR: TcxGridDBColumn;
actFamilia: TAction;
actProveedor: TAction;
TBXItem2: TTBXItem;
TBXItem3: TTBXItem;
TBXSeparatorItem1: TTBXSeparatorItem;
TBXSeparatorItem2: TTBXSeparatorItem;
cxGridViewINVENTARIABLE: TcxGridDBColumn;
cxGridViewUNIDAD_MEDIDA: TcxGridDBColumn;
cxGridViewFABRICANTE: TcxGridDBColumn;
TBXItem4: TTBXItem;
TBXSeparatorItem3: TTBXSeparatorItem;
actFabricante: TAction;
cxGridViewREFERENCIA_FABR: TcxGridDBColumn;
cxGridViewPRECIO_PVP_VENTA: TcxGridDBColumn;
cxGridViewID_PROVEEDOR: TcxGridDBColumn;
cxGridViewMARGEN: TcxGridDBColumn;
cxGridViewPRECIO_PVP_TOTAL: TcxGridDBColumn;
cxGridViewTIEMPO: TcxGridDBColumn;
cxGridViewPARAM_TIEMPO: TcxGridDBColumn;
cxGridViewMANO_OBRA: TcxGridDBColumn;
procedure actProveedorExecute(Sender: TObject);
procedure actProveedorUpdate(Sender: TObject);
procedure actFamiliaExecute(Sender: TObject);
procedure actFamiliaUpdate(Sender: TObject);
procedure actFabricanteExecute(Sender: TObject);
procedure actFabricanteUpdate(Sender: TObject);
procedure cxGridView2DataControllerCompare(ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
procedure OnFiltroBaseListaPropertiesChange(Sender: TObject);
procedure CustomViewCreate(Sender: TObject);
procedure CustomViewDestroy(Sender: TObject);
procedure frViewFiltroBase1actQuitarFiltroExecute(Sender: TObject);
procedure CustomViewShow(Sender: TObject);
procedure cxGridViewDataControllerCompare(
ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
private
FListaProveedores: TStringList;
//Filtros relativos a la vista
procedure AnadirFiltroProveedores;
protected
FArticulos: IBizArticulo;
FController: IArticulosController;
function GetArticulos: IBizArticulo; virtual;
procedure SetArticulos(const Value: IBizArticulo); virtual;
function GetController : IArticulosController;
procedure SetController (const Value : IArticulosController);
public
property Articulos: IBizArticulo read GetArticulos write SetArticulos;
property Controller : IArticulosController read GetController write SetController;
procedure AnadirOtrosFiltros; override;
end;
implementation
{$R *.dfm}
uses
schArticulosClient_Intf, uReferenciasUtils, cxVariants;
{ TfrViewArticulos }
{
******************************* TfrViewArticulos *******************************
}
function TfrViewArticulosPorProveedor.GetArticulos: IBizArticulo;
begin
Result := FArticulos;
end;
function TfrViewArticulosPorProveedor.GetController: IArticulosController;
begin
Result := FController;
end;
procedure TfrViewArticulosPorProveedor.SetArticulos(const Value: IBizArticulo);
begin
FArticulos := Value;
if Assigned(FArticulos) then
dsDataSource.DataTable := FArticulos.DataTable;
end;
procedure TfrViewArticulosPorProveedor.SetController(const Value: IArticulosController);
var
i: Integer;
begin
FController := Value;
//Rellenamos la lista de proveedores con articulos
if Assigned(FController) then
begin
FListaProveedores := FController.DarListaProveedoresConArticulos;
with frViewFiltroBase1.eLista.Properties.Items do
begin
BeginUpdate;
try
Clear;
Add('Todos');
for i := 0 to FListaProveedores.Count - 1 do
Add(FListaProveedores.Names[i]);
frViewFiltroBase1.eLista.ItemIndex := 0;
finally
EndUpdate;
end;
end;
end;
end;
procedure TfrViewArticulosPorProveedor.actFabricanteExecute(Sender: TObject);
begin
if (cxGridViewFABRICANTE.GroupIndex < 0) then
begin
cxGridViewFABRICANTE.GroupIndex := cxGridView.GroupedColumnCount;
cxGridViewFABRICANTE.Visible := False;
end
else
begin
cxGridViewFABRICANTE.GroupIndex := -1;
cxGridViewFABRICANTE.Visible := True;
end;
end;
procedure TfrViewArticulosPorProveedor.actFabricanteUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Checked := not (cxGridViewFABRICANTE.GroupIndex < 0);
end;
procedure TfrViewArticulosPorProveedor.actFamiliaExecute(Sender: TObject);
begin
if (cxGridViewFAMILIA.GroupIndex < 0) then
begin
cxGridViewFAMILIA.GroupIndex := cxGridView.GroupedColumnCount;
cxGridViewFAMILIA.Visible := False;
end
else
begin
cxGridViewFAMILIA.GroupIndex := -1;
cxGridViewFAMILIA.Visible := True;
end;
end;
procedure TfrViewArticulosPorProveedor.actFamiliaUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Checked := not (cxGridViewFAMILIA.GroupIndex < 0);
end;
procedure TfrViewArticulosPorProveedor.actProveedorExecute(Sender: TObject);
begin
inherited;
if (cxGrid.ActiveLevel.Tag = 1) then
if (cxGridViewNOMBRE_PROVEEDOR.GroupIndex < 0) then
begin
cxGridViewNOMBRE_PROVEEDOR.GroupIndex := cxGridView.GroupedColumnCount;
cxGridViewNOMBRE_PROVEEDOR.Visible := False;
end
else
begin
cxGridViewNOMBRE_PROVEEDOR.GroupIndex := -1;
cxGridViewNOMBRE_PROVEEDOR.Visible := True;
end;
end;
procedure TfrViewArticulosPorProveedor.actProveedorUpdate(Sender: TObject);
begin
inherited;
if (cxGrid.ActiveLevel.Tag = 1) then
begin
(Sender as TAction).Enabled := True;
(Sender as TAction).Checked := not (cxGridViewNOMBRE_PROVEEDOR.GroupIndex < 0);
end
else
(Sender as TAction).Enabled := False;
end;
procedure TfrViewArticulosPorProveedor.AnadirFiltroProveedores;
var
FFiltro : TcxFilterCriteriaItemList;
CodigoProveedor: Variant;
Index: Integer;
begin
//Solo se aplica este filtro en el caso de tener activo el panel de detalle de filtro
//y sobre la lista de articulos detallada por proveedor
if frViewFiltroBase1.Visible then
begin
if VarIsNull(frViewFiltroBase1.eLista.EditValue) then
CodigoProveedor := frViewFiltroBase1.eLista.EditValue
else
CodigoProveedor := FListaProveedores.Values[frViewFiltroBase1.eLista.EditValue];
if not VarIsNull(CodigoProveedor)
and (VarToStr(CodigoProveedor) <> '') then
begin
FFiltro := AddFilterGrid(fboAnd);
FFiltro.AddItem(cxGridViewID_PROVEEDOR, foEqual, CodigoProveedor, CodigoProveedor);
cxGridViewNOMBRE_PROVEEDOR.Visible := False;
end
else
cxGridViewNOMBRE_PROVEEDOR.Visible := True;
end;
end;
procedure TfrViewArticulosPorProveedor.AnadirOtrosFiltros;
begin
inherited;
AnadirFiltroProveedores;
//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 TfrViewArticulosPorProveedor.CustomViewCreate(Sender: TObject);
begin
inherited;
FListaProveedores := Nil;
Controller := TArticulosController.Create;
end;
procedure TfrViewArticulosPorProveedor.CustomViewDestroy(Sender: TObject);
begin
inherited;
frViewFiltroBase1.eLista.Properties.OnChange := Nil;
FreeAndNil(FListaProveedores);
end;
procedure TfrViewArticulosPorProveedor.CustomViewShow(Sender: TObject);
begin
inherited;
AjustarAncho;
frViewFiltroBase1.eLista.Properties.OnChange := OnFiltroBaseListaPropertiesChange;
end;
procedure TfrViewArticulosPorProveedor.cxGridView2DataControllerCompare(
ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
begin
inherited;
if ((AItemIndex = cxGridViewREFERENCIA.Index)) and
(VarType(V1) = VarType(V2)) and (VarType(V1) = varString) then
Compare := CompararReferencias(V1, V2)
else
Compare := VarCompare(V1, V2);
end;
procedure TfrViewArticulosPorProveedor.cxGridViewDataControllerCompare(
ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
begin
inherited;
if (AItemIndex = cxGridViewREFERENCIA.Index) and
(VarType(V1) = VarType(V2)) and (VarType(V1) = varString) then
Compare := CompararReferencias(V1, V2)
else
Compare := VarCompare(V1, V2);
end;
procedure TfrViewArticulosPorProveedor.frViewFiltroBase1actQuitarFiltroExecute(Sender: TObject);
begin
frViewFiltroBase1.txtFiltroTodo.Clear;
frViewFiltroBase1.eLista.Clear;
end;
procedure TfrViewArticulosPorProveedor.OnFiltroBaseListaPropertiesChange(Sender: TObject);
begin
inherited;
RefrescarFiltro;
end;
end.