Tecsitel_FactuGES2/Source/Modulos/Referencias/Controller/uReferenciasController.pas

155 lines
3.9 KiB
ObjectPascal
Raw Blame History

unit uReferenciasController;
interface
uses
Classes, SysUtils, uDADataTable, uControllerBase,
uIDataModuleReferencias, uBizReferencias;
type
IReferenciasController = interface(IObservador)
['{832E33B0-3228-4519-A740-F551DF3004DD}']
function BuscarTodos: IBizReferencia;
procedure VerTodos(AReferencias: IBizReferencia);
function Guardar(AReferencia : IBizReferencia): Boolean;
procedure DescartarCambios(AReferencia : IBizReferencia);
end;
TReferenciasController = class(TObservador, IReferenciasController)
protected
FDataModule : IDataModuleReferencias;
// procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override;
function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean;
function ValidarReferencia(AReferencia: IBizReferencia): Boolean;
procedure AsignarDataModule;
public
constructor Create; override;
destructor Destroy; override;
function Guardar(AReferencia : IBizReferencia): Boolean; virtual;
procedure DescartarCambios(AReferencia : IBizReferencia); virtual;
function BuscarTodos: IBizReferencia;
procedure VerTodos(AReferencias: IBizReferencia);
end;
implementation
uses
cxControls, DB, uEditorRegistryUtils, schReferenciasClient_Intf,
uIEditorReferencias, uDataModuleReferencias,
uDAInterfaces, uDataTableUtils, uDialogUtils,
uDateUtils, uROTypes, DateUtils, Controls, Windows;
{ TReferenciasController }
procedure TReferenciasController.AsignarDataModule;
begin
FDataModule := TDataModuleReferencias.Create(Nil);
end;
function TReferenciasController.BuscarTodos: IBizReferencia;
begin
Result := FDataModule.GetItems;
end;
constructor TReferenciasController.Create;
begin
inherited;
AsignarDataModule;
end;
function TReferenciasController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean;
begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end;
procedure TReferenciasController.DescartarCambios(AReferencia: IBizReferencia);
begin
if not Assigned(AReferencia) then
raise Exception.Create ('Forma de pago no asignada');
ShowHourglassCursor;
try
if (AReferencia.State in dsEditModes) then
AReferencia.Cancel;
AReferencia.DataTable.CancelUpdates;
finally
HideHourglassCursor;
end;
end;
destructor TReferenciasController.Destroy;
begin
FDataModule := NIL;
inherited;
end;
function TReferenciasController.ValidarReferencia(AReferencia: IBizReferencia): Boolean;
begin
Result := False;
if not Assigned(AReferencia) then
raise Exception.Create ('Referencia no asignada');
if (AReferencia.DataTable.State in dsEditModes) then
AReferencia.DataTable.Post;
// if Length(AReferencia.VALOR) = 0 then
// raise Exception.Create('Debe indicar un c<>digo para esta referencia.');
Result := True;
end;
procedure TReferenciasController.VerTodos(AReferencias: IBizReferencia);
var
AEditor : IEditorReferencias;
begin
AEditor := NIL;
ShowHourglassCursor;
try
CreateEditor('EditorReferencias', IEditorReferencias, AEditor);
if Assigned(AEditor) then
with AEditor do
begin
Referencias := AReferencias;
ShowModal;
Release;
end;
finally
AEditor := NIL;
HideHourglassCursor;
end;
end;
{
procedure TReferenciasController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable);
begin
inherited;
//
end;
}
function TReferenciasController.Guardar(AReferencia: IBizReferencia): Boolean;
var
NuevoID : Integer;
begin
Result := False;
if ValidarReferencia(AReferencia) then
begin
ShowHourglassCursor;
try
AReferencia.DataTable.ApplyUpdates;
Result := True;
finally
HideHourglassCursor;
end;
end;
end;
end.