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

240 lines
6.8 KiB
ObjectPascal
Raw Blame History

unit uEditorArticulo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uEditorDBItem, ToolWin, ComCtrls, JvExControls, JvComponent,
uViewArticulo, uBizArticulos, JvNavigationPane, ActnList,
uEditorBase, StdActns, TB2Dock, TB2Toolbar, TBX, ImgList, PngImageList,
TB2Item, uEditorItem, DB, uDADataTable, uEditorDBBase, JvFormAutoSize,
uDAScriptingProvider, uDACDSDataTable, StdCtrls, pngimage, ExtCtrls,
TBXDkPanels, JvButton, AppEvnts, uCustomView, uViewBase,
JvAppStorage, JvAppRegistryStorage, JvFormPlacement, JvComponentBase,
uViewArticulos, uIEditorArticulo, uArticulosController, JvExComCtrls,
JvStatusBar, dxLayoutLookAndFeels, uDAInterfaces, uViewDetallesGenerico,
uViewProveedoresArticulo;
type
TfEditorArticulo = class(TfEditorDBItem, IEditorArticulo)
dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList;
dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel;
TBXItem33: TTBXItem;
actFamilias: TAction;
TBXSeparatorItem6: TTBXSeparatorItem;
actSubFamilias: TAction;
TBXItem7: TTBXItem;
pagPrecios: TTabSheet;
frViewProveedoresArticulo1: TfrViewProveedoresArticulo;
procedure FormShow(Sender: TObject);
procedure dsDataTableDataChange(Sender: TObject; Field: TField);
procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction);
procedure actFamiliasExecute(Sender: TObject);
procedure actSubFamiliasExecute(Sender: TObject);
protected
FController : IArticulosController;
FArticulo: IBizArticulo;
FViewArticulo : IViewArticulo;
function GetController : IArticulosController;
procedure SetController (const Value : IArticulosController); virtual;
function GetArticulo: IBizArticulo; virtual;
procedure SetArticulo(const Value: IBizArticulo); virtual;
function GetViewArticulo: IViewArticulo;
procedure SetViewArticulo(const Value: IViewArticulo);
property ViewArticulo: IViewArticulo read GetViewArticulo write SetViewArticulo;
procedure GuardarInterno; override;
procedure EliminarInterno; override;
//Si queremos crear otra vista para el editor heredado solo tendriamos que
//sobreescribir este metodo
procedure AsignarVista; virtual;
procedure PonerTitulos(const ATitulo: string = ''); override;
public
property Articulo: IBizArticulo read GetArticulo write SetArticulo;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
{$R *.dfm}
uses
uCustomEditor, uDataModuleArticulos, uDataModuleBase,
uBizFamilias, uFamiliasController, uBizSubFamilias, uSubFamiliasController;
{
******************************* TfEditorArticulo *******************************
}
function TfEditorArticulo.GetArticulo: IBizArticulo;
begin
Result := FArticulo;
end;
function TfEditorArticulo.GetController: IArticulosController;
begin
Result := FController;
end;
function TfEditorArticulo.GetViewArticulo: IViewArticulo;
begin
Result := FViewArticulo;
end;
procedure TfEditorArticulo.GuardarInterno;
begin
inherited;
FController.Guardar(FArticulo);
Modified := False;
end;
procedure TfEditorArticulo.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
if Assigned(Articulo) then
begin
if Articulo.EsNuevo then
FTitulo := 'Nuevo art<72>culo'
else
FTitulo := 'Art<72>culo';
end;
inherited PonerTitulos(FTitulo);
end;
procedure TfEditorArticulo.SetArticulo(const Value: IBizArticulo);
begin
FArticulo := Value;
dsDataTable.DataTable := FArticulo.DataTable;
if Assigned(FViewArticulo) and Assigned(Articulo) then
begin
FViewArticulo.Articulo := Articulo;
frViewProveedoresArticulo1.Articulo := Articulo;
end;
end;
procedure TfEditorArticulo.SetController(const Value: IArticulosController);
begin
FController := Value;
if Assigned(FController) then
begin
(ViewArticulo as IViewArticulo).Controller := (FController as IArticulosController);
frViewProveedoresArticulo1.Controller := (FController as IArticulosController);
end;
end;
procedure TfEditorArticulo.SetViewArticulo(const Value: IViewArticulo);
begin
FViewArticulo := Value;
if Assigned(FViewArticulo) and Assigned(Articulo) then
FViewArticulo.Articulo := Articulo;
end;
procedure TfEditorArticulo.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(FViewArticulo) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Articulo) then
raise Exception.Create('No hay ning<6E>n almac<61>n asignado');
Articulo.DataTable.Active := True;
end;
destructor TfEditorArticulo.Destroy;
begin
// Utilizar mejor OnClose;
inherited;
end;
procedure TfEditorArticulo.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 TfEditorArticulo.actSubFamiliasExecute(Sender: TObject);
var
ASubFamiliasController : ISubFamiliasController;
ASubFamilias : IBizSubFamilia;
begin
ASubFamiliasController := TSubFamiliasController.Create;
try
ASubFamilias := (ASubFamiliasController.BuscarTodos as IBizSubFamilia);
ASubFamiliasController.VerTodos(ASubFamilias);
finally
ASubFamilias := NIL;
ASubFamiliasController := NIL;
end;
end;
procedure TfEditorArticulo.AsignarVista;
var
AViewArticulo: TfrViewArticulo;
begin
AViewArticulo := TfrViewArticulo.create(Self);
with AViewArticulo do
begin
Parent := pagGeneral;
Align := alClient;
dxLayoutControlArticulo.LookAndFeel := dxLayoutOfficeLookAndFeel1;
end;
ViewArticulo := AViewArticulo;
end;
constructor TfEditorArticulo.Create(AOwner: TComponent);
begin
inherited;
pgPaginas.ActivePageIndex := 0;
AsignarVista;
end;
procedure TfEditorArticulo.CustomEditorClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
dsDataTable.DataTable := NIL;
FViewArticulo := NIL;
FArticulo := NIL;
end;
procedure TfEditorArticulo.dsDataTableDataChange(Sender: TObject;
Field: TField);
begin
inherited;
if Assigned(FArticulo) and (not (FArticulo.DataTable.Fetching) or
not (FArticulo.DataTable.Opening) or not (FArticulo.DataTable.Closing)) then
PonerTitulos;
end;
procedure TfEditorArticulo.EliminarInterno;
begin
if (Application.MessageBox('<27>Desea borrar este articulo?', 'Atenci<63>n', MB_YESNO) = IDYES) then
begin
inherited;
if not FController.Eliminar(FArticulo) then
actRefrescar.Execute;
end;
end;
end.