AbetoDesign_FactuGES2/Source/Modulos/Articulos/Views/uEditorArticulos.pas

345 lines
9.9 KiB
ObjectPascal
Raw Blame History

unit uEditorArticulos;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uEditorBase, ToolWin, ComCtrls, JvExControls, JvComponent,
JvNavigationPane, uViewArticulos, uBizArticulos, ActnList, DBActns, uViewGrid,
Menus, uDataModuleBase, ImgList, PngImageList, TB2Dock, TB2Toolbar, TBX,
TB2Item, StdActns, TB2ExtItems, TBXExtItems, TB2MRU, DB, uDADataTable,
JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, JvAppStorage,
JvAppRegistryStorage, JvFormPlacement, ExtCtrls, uCustomView, uViewBase,
uViewBarraSeleccion, pngimage, uIEditorArticulos, uEditorGridBase,
JvComponentBase, uViewGridBase, uArticulosController, JvExComCtrls,
JvStatusBar, uDAInterfaces;
type
TfEditorArticulos = class(TfEditorGridBase, IEditorArticulos)
actFamilias: TAction;
actAsignarTarifa: TAction;
TBXItem38: TTBXItem;
actNoComisionable: TAction;
TBXSeparatorItem17: TTBXSeparatorItem;
TBXItem39: TTBXItem;
actComisionable: TAction;
TBXSeparatorItem18: TTBXSeparatorItem;
TBXItem40: TTBXItem;
procedure FormShow(Sender: TObject);
procedure actFamiliasExecute(Sender: TObject);
procedure actAsignarTarifaExecute(Sender: TObject);
procedure actAsignarTarifaUpdate(Sender: TObject);
procedure actEliminarUpdate(Sender: TObject);
procedure actNoComisionableExecute(Sender: TObject);
procedure actNoComisionableUpdate(Sender: TObject);
procedure actComisionableExecute(Sender: TObject);
procedure actComisionableUpdate(Sender: TObject);
procedure OnListaTarifasChange(Sender: TObject; const Text: string);
private
FArticulos: IBizArticulo;
FController : IArticulosController;
protected
function GetArticulos: IBizArticulo;
procedure SetArticulos(const Value: IBizArticulo);
function GetController : IArticulosController; virtual;
procedure SetController (const Value : IArticulosController); virtual;
procedure NuevoInterno; override;
procedure EliminarInterno; override;
procedure ModificarInterno; override;
procedure ImprimirInterno; override;
procedure PrevisualizarInterno; override;
procedure DuplicarInterno; override;
procedure RefrescarInterno; override;
//Si queremos crear otra vista para el editor heredado solo tendriamos que
//sobreescribir este metodo
procedure AsignarVista; virtual;
public
procedure PonerTitulos(const ATitulo: string = ''); override;
property Articulos: IBizArticulo read GetArticulos write SetArticulos;
property Controller : IArticulosController read GetController write SetController;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
uses
uCustomEditor, uDataModuleArticulos, uDataModuleUsuarios, uFactuGES_App,
uEditorArticulo, uEditorDBBase, uBizFamilias, uFamiliasController,
cxGrid, cxGridCustomTableView, uGridUtils, uDBSelectionListUtils; //, uListaArticulos;
{$R *.dfm}
{
****************************** TfEditorArticulos *******************************
}
procedure TfEditorArticulos.FormShow(Sender: TObject);
begin
cbxListaAnos.OnChange := OnListaTarifasChange; //OJO SIEMPRE ANTES DEL INHERITED
inherited;
if not Assigned(ViewGrid) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Articulos) then
raise Exception.Create('No hay ning<6E>n articulo asignado');
Articulos.DataTable.Active := True;
ViewGrid.GotoFirst;
//Para que coja el ancho autom<6F>tico
actAnchoAuto.Execute;
end;
function TfEditorArticulos.GetArticulos: IBizArticulo;
begin
Result := FArticulos;
end;
function TfEditorArticulos.GetController: IArticulosController;
begin
Result := FController;
end;
procedure TfEditorArticulos.ImprimirInterno;
begin
inherited;
end;
procedure TfEditorArticulos.ModificarInterno;
begin
inherited;
FController.Ver(Articulos);
end;
procedure TfEditorArticulos.NuevoInterno;
begin
inherited;
FController.Anadir(Articulos);
FController.Ver(Articulos);
end;
procedure TfEditorArticulos.OnListaTarifasChange(Sender: TObject;
const Text: string);
begin
Controller.FiltrarTarifa(Articulos, DynWhereDataTable, Text);
if Articulos.DataTable.Active then
RefrescarInterno;
end;
procedure TfEditorArticulos.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
FTitulo := 'Lista de art<72>culos - ' + AppFactuGES.EmpresaActiva.NOMBRE;
inherited PonerTitulos(FTitulo);
end;
procedure TfEditorArticulos.PrevisualizarInterno;
begin
inherited;
end;
procedure TfEditorArticulos.RefrescarInterno;
begin
//Volvemos a cargar las tarifas de los presupuestos
if Assigned(FController) then
ListaAnos := FController.DarListaTarifasArticulos;
inherited;
end;
procedure TfEditorArticulos.SetArticulos(const Value: IBizArticulo);
begin
FArticulos := Value;
if Assigned(FArticulos) then
begin
//Se guarda el where de la sentencia origen, por si el editor tiene filtros que
//afecten a este where y en un futuro se desea volver al where origen (filtro de tarifa))
DynWhereDataTable := FArticulos.DataTable.DynamicWhere.Xml;
dsDataTable.DataTable := FArticulos.DataTable;
if Assigned(ViewGrid) then
(ViewGrid as IViewArticulos).Articulos := Articulos;
end;
end;
procedure TfEditorArticulos.SetController(const Value: IArticulosController);
begin
FController := Value;
if Assigned(FController) then
ListaAnos := FController.DarListaTarifasArticulos;
end;
destructor TfEditorArticulos.Destroy;
begin
FArticulos := NIL;
FController := NIl;
inherited;
end;
procedure TfEditorArticulos.DuplicarInterno;
var
AArticulo : IBizArticulo;
begin
inherited;
AArticulo := FController.Duplicar(Articulos);
try
FController.Ver(AArticulo);
finally
actRefrescar.Execute;
end;
end;
procedure TfEditorArticulos.EliminarInterno;
begin
if (Application.MessageBox('<27>Desea borrar este art<72>culo?', 'Atenci<63>n', MB_YESNO) = IDYES) then
begin
inherited;
//Para que en el caso de no poderse realizar la operaci<63>n se refresquen
//los datos y no nos permita eliminar un registro a la segunda
if not FController.Eliminar(Articulos) then
actRefrescar.Execute;
end;
end;
procedure TfEditorArticulos.actAsignarTarifaExecute(Sender: TObject);
var
AArticulos: IBizArticulo;
i: integer;
begin
inherited;
ViewGrid.SaveGridStatus;
try
SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Articulos as ISeleccionable).SelectedRecords);
AArticulos := (Controller as IArticulosController).ExtraerSeleccionados(Articulos) as IBizArticulo;
finally
ViewGrid.RestoreGridStatus;
end;
Controller.AsignarTarifa(AArticulos);
if (AArticulos.DataTable.RecordCount > 0) then
RefrescarInterno;
end;
procedure TfEditorArticulos.actAsignarTarifaUpdate(Sender: TObject);
begin
inherited;
if HayDatos and Assigned(ViewGrid) then
(Sender as TAction).Enabled := not (dsDataTable.DataTable.State in dsEditModes)
and ViewGrid.esSeleccionCeldaDatos
and (ViewGrid.NumSeleccionados > 0)
else
(Sender as TAction).Enabled := False;
end;
procedure TfEditorArticulos.actComisionableExecute(Sender: TObject);
var
AArticulos: IBizArticulo;
i: integer;
begin
inherited;
ViewGrid.SaveGridStatus;
try
SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Articulos as ISeleccionable).SelectedRecords);
AArticulos := (Controller as IArticulosController).ExtraerSeleccionados(Articulos) as IBizArticulo;
Controller.Comisionable(AArticulos, 1);
finally
ViewGrid.RestoreGridStatus;
end;
if (AArticulos.DataTable.RecordCount > 0) then
RefrescarInterno;
end;
procedure TfEditorArticulos.actComisionableUpdate(Sender: TObject);
begin
inherited;
if HayDatos and Assigned(ViewGrid) then
(Sender as TAction).Enabled := not (dsDataTable.DataTable.State in dsEditModes)
and ViewGrid.esSeleccionCeldaDatos
and (ViewGrid.NumSeleccionados > 0)
else
(Sender as TAction).Enabled := False;
end;
procedure TfEditorArticulos.actEliminarUpdate(Sender: TObject);
begin
inherited;
if (ViewGrid.NumSeleccionados <> 1) then
(Sender as TAction).Enabled := False;
end;
procedure TfEditorArticulos.actFamiliasExecute(Sender: TObject);
var
AFamiliasController : IFamiliasController;
AFamilias : IBizFamilia;
begin
AFamiliasController := TFamiliasController.Create;
try
AFamilias := (AFamiliasController.BuscarTodos as IBizFamilia);
AFamiliasController.VerTodos(AFamilias);
finally
AFamilias := NIL;
AFamiliasController := NIL;
end;
end;
procedure TfEditorArticulos.actNoComisionableExecute(Sender: TObject);
var
AArticulos: IBizArticulo;
i: integer;
begin
inherited;
ViewGrid.SaveGridStatus;
try
SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Articulos as ISeleccionable).SelectedRecords);
AArticulos := (Controller as IArticulosController).ExtraerSeleccionados(Articulos) as IBizArticulo;
Controller.Comisionable(AArticulos, 0);
finally
ViewGrid.RestoreGridStatus;
end;
if (AArticulos.DataTable.RecordCount > 0) then
RefrescarInterno;
end;
procedure TfEditorArticulos.actNoComisionableUpdate(Sender: TObject);
begin
inherited;
if HayDatos and Assigned(ViewGrid) then
(Sender as TAction).Enabled := not (dsDataTable.DataTable.State in dsEditModes)
and ViewGrid.esSeleccionCeldaDatos
and (ViewGrid.NumSeleccionados > 0)
else
(Sender as TAction).Enabled := False;
end;
procedure TfEditorArticulos.AsignarVista;
begin
ViewGrid := CreateView(TfrViewArticulos) as IViewArticulos;
end;
constructor TfEditorArticulos.Create(AOwner: TComponent);
begin
inherited;
AsignarVista;
end;
end.