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

176 lines
4.8 KiB
ObjectPascal
Raw Blame History

unit uReferenciasController;
interface
uses
Classes, SysUtils, uDADataTable, uControllerBase,
uIDataModuleReferencias, uBizReferencias;
type
IReferenciasController = interface(IControllerBase)
['{832E33B0-3228-4519-A740-F551DF3004DD}']
function BuscarTodos: IBizReferencia;
procedure VerTodos(AReferencias: IBizReferencia);
function Guardar(AReferencia : IBizReferencia): Boolean;
procedure DescartarCambios(AReferencia : IBizReferencia);
end;
TReferenciasController = class(TControllerBase, 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;
procedure FiltrarEmpresa(AReferencias: IBizReferencia);
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, uFactuGES_App,
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;
FiltrarEmpresa(Result);
end;
procedure TReferenciasController.FiltrarEmpresa(AReferencias: IBizReferencia);
var
Condicion: TDAWhereExpression;
Condicion1: TDAWhereExpression;
Condicion2: TDAWhereExpression;
begin
if AReferencias.DataTable.Active then
AReferencias.DataTable.Active := False;
// Filtrar las facturas actuales por empresa
with AReferencias.DataTable.DynamicWhere do
begin
// (ID_EMPRESA = ID)
Condicion1 := NewBinaryExpression(NewField('', fld_ReferenciasID_EMPRESA),
NewConstant(AppFactuGES.EmpresaActiva.ID, datInteger), dboEqual);
// (ID_EMPRESA = NULL)
Condicion2 := NewBinaryExpression(NewField('', 'ID_EMPRESA'), NewConstant(ID_NULO, datInteger), dboEqual);
Condicion := NewBinaryExpression(Condicion1, Condicion2, dboOr);
if IsEmpty then
Expression := Condicion
else
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
end;
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
CreateEditor('EditorReferencias', IEditorReferencias, AEditor);
if Assigned(AEditor) then
try
AEditor.Referencias := AReferencias;
AEditor.ShowModal;
finally
AEditor.Release;
AEditor := NIL;
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.