AbetoDesign_FactuGES2/Source/Modulos/Formas de pago/Controller/uFormasPagoController.pas

299 lines
7.7 KiB
ObjectPascal
Raw Normal View History

unit uFormasPagoController;
interface
uses
Classes, SysUtils, uDADataTable, uControllerBase,
uBizFormasPago, uFormasPagoPlazosController, uIDataModuleFormasPago;
type
IFormasPagoController = interface(IControllerBase)
['{94E5F2B6-64C8-4331-B9CB-3ED730478529}']
function BuscarTodos: IBizFormaPago;
function Buscar(ID: Integer): IBizFormaPago;
function BuscarID(ADescripcion: String): Integer;
procedure VerTodos(AFormasPago: IBizFormaPago);
procedure Ver(AFormaPago: IBizFormaPago);
procedure Anadir(AFormaPago : IBizFormaPago);
function Eliminar(AFormaPago : IBizFormaPago): Boolean;
function Guardar(AFormaPago : IBizFormaPago): Boolean;
procedure DescartarCambios(AFormaPago : IBizFormaPago);
function Localizar(AFormasPago: IBizFormaPago; ADescripcion:String): Boolean;
function DarListaFormasPago: TStringList;
end;
TFormasPagoController = class(TControllerBase, IFormasPagoController)
protected
FDataModule : IDataModuleFormasPago;
FPlazosController : IFormasPagoPlazosController;
procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override;
function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean;
function ValidarFormaPago(AFormaPago: IBizFormaPago): Boolean;
procedure AsignarDataModule;
public
constructor Create; override;
destructor Destroy; override;
function Eliminar(AFormaPago : IBizFormaPago): Boolean;
function Guardar(AFormaPago : IBizFormaPago): Boolean; virtual;
procedure DescartarCambios(AFormaPago : IBizFormaPago); virtual;
procedure Anadir(AFormaPago : IBizFormaPago);
function BuscarTodos: IBizFormaPago;
function Buscar(ID: Integer): IBizFormaPago;
function BuscarID(ADescripcion: String): Integer;
procedure VerTodos(AFormasPago: IBizFormaPago);
procedure Ver(AFormaPago: IBizFormaPago);
function Localizar(AFormasPago: IBizFormaPago; ADescripcion:String): Boolean;
function DarListaFormasPago: TStringList;
end;
implementation
uses
cxControls, DB, uEditorRegistryUtils, schFormasPagoClient_Intf,
uIEditorFormasPago, uIEditorFormaPago, uDataModuleFormasPago,
uDAInterfaces, uDataTableUtils, uDialogUtils,
uDateUtils, uROTypes, DateUtils, Controls, Windows;
{ TFormasPagoController }
procedure TFormasPagoController.Anadir(AFormaPago: IBizFormaPago);
begin
AFormaPago.Insert;
end;
procedure TFormasPagoController.AsignarDataModule;
begin
FDataModule := TDataModuleFormasPago.Create(Nil);
end;
function TFormasPagoController.BuscarID(ADescripcion: String): Integer;
var
AFormaPago : IBizFormaPago;
begin
Result := -1;
ShowHourglassCursor;
AFormaPago := BuscarTodos;
try
AFormaPago.Open;
if Localizar(AFormaPago, ADescripcion) then
Result := AFormaPago.ID;
finally
AFormaPago := NIL;
HideHourglassCursor;
end;
end;
function TFormasPagoController.Buscar(ID: Integer): IBizFormaPago;
var
Condicion: TDAWhereExpression;
begin
ShowHourglassCursor;
try
Result := BuscarTodos;
with Result.DataTable.DynamicWhere do
begin
// (ID = :ID)
Condicion := NewBinaryExpression(NewField('', fld_FormasPagoID), NewConstant(ID, datInteger), dboEqual);
if IsEmpty then
Expression := Condicion
else
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
end;
finally
HideHourglassCursor;
end;
end;
function TFormasPagoController.BuscarTodos: IBizFormaPago;
begin
Result := FDataModule.GetItems;
end;
constructor TFormasPagoController.Create;
begin
inherited;
AsignarDataModule;
FPlazosController := TFormasPagoPlazosController.Create;
end;
function TFormasPagoController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean;
begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end;
function TFormasPagoController.DarListaFormasPago: TStringList;
var
AFormasPago: IBizFormaPago;
begin
AFormasPago := BuscarTodos;
AFormasPago.DataTable.Active := True;
Result := TStringList.Create;
try
with Result do
begin
AFormasPago.DataTable.First;
while not AFormasPago.DataTable.EOF do
begin
Add(AFormasPago.REFERENCIA);
AFormasPago.DataTable.Next;
end;
end;
finally
AFormasPago := NIL;
end;
end;
procedure TFormasPagoController.DescartarCambios(AFormaPago: IBizFormaPago);
begin
if not Assigned(AFormaPago) then
raise Exception.Create ('Forma de pago no asignada');
ShowHourglassCursor;
try
if (AFormaPago.State in dsEditModes) then
AFormaPago.Cancel;
AFormaPago.DataTable.CancelUpdates;
finally
HideHourglassCursor;
end;
end;
destructor TFormasPagoController.Destroy;
begin
FDataModule:= NIL;
FPlazosController := NIL;
inherited;
end;
function TFormasPagoController.ValidarFormaPago(AFormaPago: IBizFormaPago): Boolean;
begin
Result := False;
if not Assigned(AFormaPago) then
raise Exception.Create ('Forma de pago no asignada');
if (AFormaPago.DataTable.State in dsEditModes) then
AFormaPago.DataTable.Post;
if Length(AFormaPago.REFERENCIA) = 0 then
raise Exception.Create('Debe indicar una referencia para esta forma de pago.');
if Length(AFormaPago.DESCRIPCION) = 0 then
raise Exception.Create('Debe indicar una descripci<63>n para esta forma de pago.');
Result := True;
end;
procedure TFormasPagoController.Ver(AFormaPago: IBizFormaPago);
var
AEditor : IEditorFormaPago;
begin
AEditor := NIL;
CreateEditor('EditorFormaPago', IEditorFormaPago, AEditor);
if Assigned(AEditor) then
begin
try
AEditor.FormaPago := AFormaPago;
AEditor.ShowModal;
finally
AEditor.Release;
AEditor := NIL;
end;
end;
end;
procedure TFormasPagoController.VerTodos(AFormasPago: IBizFormaPago);
var
AEditor : IEditorFormasPago;
begin
AEditor := NIL;
CreateEditor('EditorFormasPago', IEditorFormasPago, AEditor);
if Assigned(AEditor) then
try
AEditor.FormasPago := AFormasPago;
AEditor.ShowModal;
finally
AEditor.Release;
AEditor := NIL;
end;
end;
function TFormasPagoController.Eliminar(AFormaPago: IBizFormaPago): Boolean;
begin
if not Assigned(AFormaPago) then
raise Exception.Create ('Forma de pago no asignada');
ShowHourglassCursor;
try
if (AFormaPago.State in dsEditModes) then
AFormaPago.Cancel;
AFormaPago.Delete;
AFormaPago.DataTable.ApplyUpdates;
HideHourglassCursor;
Result := True;
finally
HideHourglassCursor;
end;
end;
procedure TFormasPagoController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable);
begin
inherited;
//
end;
function TFormasPagoController.Guardar(AFormaPago: IBizFormaPago): Boolean;
begin
Result := False;
if ValidarFormaPago(AFormaPago) then
begin
ShowHourglassCursor;
try
AFormaPago.DataTable.ApplyUpdates;
Result := True;
finally
HideHourglassCursor;
end;
end;
end;
function TFormasPagoController.Localizar(AFormasPago: IBizFormaPago; ADescripcion: String): Boolean;
begin
Result := True;
ShowHourglassCursor;
try
with AFormasPago.DataTable do
begin
if not Active then
Open;
DisableControls;
try
First;
if not Locate(fld_FormasPagoDESCRIPCION, ADescripcion, []) then
Result := False;
finally
EnableControls;
end;
end;
finally
HideHourglassCursor;
end;
end;
end.