git-svn-id: https://192.168.0.254/svn/Proyectos.AlonsoYSal_FactuGES2/trunk@6 40301925-124e-1c4e-b97d-170ad7a8785b
300 lines
7.8 KiB
ObjectPascal
300 lines
7.8 KiB
ObjectPascal
unit uBalancesController;
|
|
|
|
interface
|
|
|
|
|
|
uses
|
|
Classes, SysUtils, uDADataTable, uControllerBase,
|
|
uBizBalances, uIDataModuleContabilidad;
|
|
type
|
|
IBalancesController = interface(IControllerBase)
|
|
['{94E5F2B6-64C8-4331-B9CB-3ED730478529}']
|
|
function BuscarTodos: IBizBalance;
|
|
function Buscar(ID: Integer): IBizBalance;
|
|
procedure VerTodos(ABalances: IBizBalance);
|
|
procedure Ver(ABalance: IBizBalance);
|
|
procedure Anadir(ABalance : IBizBalance);
|
|
function Eliminar(ABalance : IBizBalance): Boolean;
|
|
function Guardar(ABalance : IBizBalance): Boolean;
|
|
procedure DescartarCambios(ABalance : IBizBalance);
|
|
function Localizar(ABalances: IBizBalance; ADescripcion:String): Boolean;
|
|
function DarListaBalances: TStringList;
|
|
|
|
function ExtraerSeleccionados(ABalances: IBizBalance) : IBizBalance;
|
|
function ElegirBalance(ABalances : IBizBalance; AMensaje: String; AMultiSelect: Boolean): IBizBalance;
|
|
end;
|
|
|
|
TBalancesController = class(TControllerBase, IBalancesController)
|
|
protected
|
|
FDataModule : IDataModuleContabilidad;
|
|
|
|
procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override;
|
|
function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean;
|
|
|
|
function ValidarBalance(ABalance: IBizBalance): Boolean;
|
|
procedure AsignarDataModule;
|
|
|
|
public
|
|
constructor Create; override;
|
|
destructor Destroy; override;
|
|
|
|
function Eliminar(ABalance : IBizBalance): Boolean;
|
|
function Guardar(ABalance : IBizBalance): Boolean; virtual;
|
|
procedure DescartarCambios(ABalance : IBizBalance); virtual;
|
|
procedure Anadir(ABalance : IBizBalance);
|
|
function BuscarTodos: IBizBalance;
|
|
function Buscar(ID: Integer): IBizBalance;
|
|
procedure VerTodos(ABalances: IBizBalance);
|
|
procedure Ver(ABalance: IBizBalance);
|
|
function Localizar(ABalances: IBizBalance; ADescripcion:String): Boolean;
|
|
function DarListaBalances: TStringList;
|
|
|
|
function ExtraerSeleccionados(ABalances: IBizBalance) : IBizBalance;
|
|
function ElegirBalance(ABalances : IBizBalance; AMensaje: String; AMultiSelect: Boolean): IBizBalance;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
cxControls, DB, uEditorRegistryUtils, schContabilidadClient_Intf,
|
|
uIEditorBalances, uIEditorBalance, uIEditorElegirBalances, uDataModuleContabilidad,
|
|
uDAInterfaces, uDataTableUtils, uDialogUtils,
|
|
uDateUtils, uROTypes, DateUtils, Controls, Windows;
|
|
|
|
{ TBalancesController }
|
|
|
|
procedure TBalancesController.Anadir(ABalance: IBizBalance);
|
|
begin
|
|
ABalance.Insert;
|
|
end;
|
|
|
|
procedure TBalancesController.AsignarDataModule;
|
|
begin
|
|
FDataModule := TDataModuleContabilidad.Create(Nil);
|
|
end;
|
|
|
|
function TBalancesController.Buscar(ID: Integer): IBizBalance;
|
|
var
|
|
Condicion: TDAWhereExpression;
|
|
begin
|
|
ShowHourglassCursor;
|
|
try
|
|
Result := BuscarTodos;
|
|
|
|
with Result.DataTable.DynamicWhere do
|
|
begin
|
|
// (ID = :ID)
|
|
Condicion := NewBinaryExpression(NewField('', fld_BalancesID), NewConstant(ID, datInteger), dboEqual);
|
|
|
|
if IsEmpty then
|
|
Expression := Condicion
|
|
else
|
|
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
|
|
end;
|
|
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
function TBalancesController.BuscarTodos: IBizBalance;
|
|
begin
|
|
Result := FDataModule.GetBalanceItems;
|
|
end;
|
|
|
|
constructor TBalancesController.Create;
|
|
begin
|
|
inherited;
|
|
AsignarDataModule;
|
|
end;
|
|
|
|
function TBalancesController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean;
|
|
begin
|
|
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
|
|
end;
|
|
|
|
function TBalancesController.DarListaBalances: TStringList;
|
|
var
|
|
ABalances: IBizBalance;
|
|
begin
|
|
ABalances := BuscarTodos;
|
|
ABalances.DataTable.Active := True;
|
|
Result := TStringList.Create;
|
|
try
|
|
with Result do
|
|
begin
|
|
ABalances.DataTable.First;
|
|
while not ABalances.DataTable.EOF do
|
|
begin
|
|
Add(ABalances.REF_BALANCE);
|
|
ABalances.DataTable.Next;
|
|
end;
|
|
end;
|
|
finally
|
|
ABalances := NIL;
|
|
end;
|
|
end;
|
|
|
|
procedure TBalancesController.DescartarCambios(ABalance: IBizBalance);
|
|
begin
|
|
if not Assigned(ABalance) then
|
|
raise Exception.Create ('Balance no asignado');
|
|
|
|
ShowHourglassCursor;
|
|
try
|
|
if (ABalance.State in dsEditModes) then
|
|
ABalance.Cancel;
|
|
|
|
ABalance.DataTable.CancelUpdates;
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
destructor TBalancesController.Destroy;
|
|
begin
|
|
FDataModule:= NIL;
|
|
inherited;
|
|
end;
|
|
|
|
function TBalancesController.ValidarBalance(ABalance: IBizBalance): Boolean;
|
|
begin
|
|
Result := False;
|
|
|
|
if not Assigned(ABalance) then
|
|
raise Exception.Create ('Balance no asignado');
|
|
|
|
if (ABalance.DataTable.State in dsEditModes) then
|
|
ABalance.DataTable.Post;
|
|
|
|
if Length(ABalance.REF_BALANCE) = 0 then
|
|
raise Exception.Create('Debe indicar un nombre para este Balance.');
|
|
|
|
Result := True;
|
|
end;
|
|
|
|
procedure TBalancesController.Ver(ABalance: IBizBalance);
|
|
var
|
|
AEditor : IEditorBalance;
|
|
begin
|
|
AEditor := NIL;
|
|
|
|
CreateEditor('EditorBalance', IEditorBalance, AEditor);
|
|
if Assigned(AEditor) then
|
|
try
|
|
AEditor.Balance := ABalance;
|
|
AEditor.ShowModal;
|
|
finally
|
|
AEditor.Release;
|
|
AEditor := NIL;
|
|
end;
|
|
end;
|
|
|
|
procedure TBalancesController.VerTodos(ABalances: IBizBalance);
|
|
var
|
|
AEditor : IEditorBalances;
|
|
begin
|
|
AEditor := NIL;
|
|
|
|
CreateEditor('EditorBalances', IEditorBalances, AEditor);
|
|
if Assigned(AEditor) then
|
|
try
|
|
AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE
|
|
AEditor.Balances := ABalances;
|
|
AEditor.ShowModal;
|
|
finally
|
|
AEditor.Release;
|
|
AEditor := NIL;
|
|
end;
|
|
end;
|
|
|
|
function TBalancesController.ElegirBalance(ABalances: IBizBalance; AMensaje: String; AMultiSelect: Boolean): IBizBalance;
|
|
var
|
|
AEditor : IEditorElegirBalances;
|
|
begin
|
|
Result := NIL;
|
|
|
|
CreateEditor('EditorElegirBalances', IEditorElegirBalances, AEditor);
|
|
if Assigned(AEditor) then
|
|
try
|
|
AEditor.Balances := ABalances;
|
|
AEditor.Controller := Self;
|
|
AEditor.Mensaje := AMensaje;
|
|
if IsPositiveResult(AEditor.ShowModal) then
|
|
Result := AEditor.BalancesSeleccionados;
|
|
finally
|
|
AEditor.Release;
|
|
AEditor := NIL;
|
|
end;
|
|
end;
|
|
|
|
function TBalancesController.Eliminar(ABalance: IBizBalance): Boolean;
|
|
begin
|
|
if not Assigned(ABalance) then
|
|
raise Exception.Create ('Balance no asignado');
|
|
|
|
ShowHourglassCursor;
|
|
try
|
|
if (ABalance.State in dsEditModes) then
|
|
ABalance.Cancel;
|
|
|
|
ABalance.Delete;
|
|
ABalance.DataTable.ApplyUpdates;
|
|
HideHourglassCursor;
|
|
Result := True;
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
function TBalancesController.ExtraerSeleccionados(ABalances: IBizBalance): IBizBalance;
|
|
var
|
|
ASeleccionados : IBizBalance;
|
|
begin
|
|
ASeleccionados := Self.Buscar(ID_NULO);
|
|
CopyDataTableDA5(ABalances.DataTable, ASeleccionados.DataTable, True);
|
|
Result := ASeleccionados;
|
|
end;
|
|
|
|
procedure TBalancesController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable);
|
|
begin
|
|
inherited;
|
|
//
|
|
end;
|
|
|
|
function TBalancesController.Guardar(ABalance: IBizBalance): Boolean;
|
|
begin
|
|
Result := False;
|
|
|
|
if ValidarBalance(ABalance) then
|
|
begin
|
|
ShowHourglassCursor;
|
|
try
|
|
ABalance.DataTable.ApplyUpdates;
|
|
Result := True;
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TBalancesController.Localizar(ABalances: IBizBalance; ADescripcion: String): Boolean;
|
|
begin
|
|
Result := True;
|
|
ShowHourglassCursor;
|
|
try
|
|
with ABalances.DataTable do
|
|
begin
|
|
DisableControls;
|
|
First;
|
|
if not Locate(fld_BalancesREF_BALANCE, ADescripcion, []) then
|
|
Result := False;
|
|
EnableControls;
|
|
end;
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
end.
|