Tecsitel_FactuGES2/Source/Modulos/Contactos/Controller/uEmpleadosController.pas

257 lines
6.4 KiB
ObjectPascal

unit uEmpleadosController;
interface
uses
uCustomEditor,
uContactosController, uBizContactos,
uIEditorEmpleados, uIEditorEmpleado, uIDataModuleContactos, uIDataModuleEmpleados;
type
IEmpleadosController = interface(IContactosController)
['{A3841871-7EF6-4847-9758-EA2B1C521D4A}']
function EsEliminable(AEmpleado: IBizContacto): Boolean;
function Eliminar(AEmpleado: IBizContacto; AllItems: Boolean = false): Boolean; overload;
procedure Preview(AEmpleado : IBizEmpleado; AllItems: Boolean = false);
procedure Print(AEmpleado : IBizEmpleado; AllItems: Boolean = false);
end;
TEmpleadosController = class(TContactosController, IEmpleadosController)
public
constructor Create; override;
function Duplicar(AContacto: IBizContacto): IBizContacto; override;
function Buscar(const ID: Integer): IBizContacto; override;
function BuscarTodos: IBizContacto; override;
function Nuevo : IBizContacto; override;
procedure Ver(AContacto : IBizContacto); override;
procedure VerTodos(AContactos: IBizContacto); override;
function Eliminar(AEmpleado: IBizContacto; AllItems: Boolean = false): Boolean; overload;
function EsEliminable(AEmpleado: IBizContacto): Boolean;
procedure Preview(AEmpleado : IBizEmpleado; AllItems: Boolean = false);
procedure Print(AEmpleado : IBizEmpleado; AllItems: Boolean = false);
end;
implementation
uses
Classes, Windows, SysUtils, cxControls, Dialogs, uDataModuleEmpleados, uEditorRegistryUtils,
uDataTableUtils, uDADataTable, DB, schContactosClient_Intf, uFichasEmpleadoReportController,
uEditorGridBase;
{ TEmpleadoController }
function TEmpleadosController.Buscar(const ID: Integer): IBizContacto;
begin
Result := (FDataModule as IDataModuleEmpleados).GetItem(ID);
FiltrarEmpresa(Result);
end;
function TEmpleadosController.BuscarTodos: IBizContacto;
begin
Result := (FDataModule as IDataModuleEmpleados).GetItems;
FiltrarEmpresa(Result);
end;
constructor TEmpleadosController.Create;
begin
inherited;
FDataModule := TDataModuleEmpleados.Create(Nil);
end;
function TEmpleadosController.Duplicar(AContacto: IBizContacto): IBizContacto;
begin
Result := inherited Duplicar(AContacto);
end;
function TEmpleadosController.Eliminar(AEmpleado: IBizContacto; AllItems: Boolean = false): Boolean;
//En el caso de eliminar almenos un elemento del conjunto se devuelve true
var
bEliminado: Boolean;
begin
Result := False;
if not Assigned(AEmpleado) then
raise Exception.Create ('Contacto no asignado');
ShowHourglassCursor;
try
if not AEmpleado.DataTable.Active then
AEmpleado.DataTable.Active := True;
if (AEmpleado.State in dsEditModes) then
AEmpleado.Cancel;
//Siempre eliminaremos el seleccionado
if EsEliminable(AEmpleado) then
begin
AEmpleado.Delete;
bEliminado := True;
end;
//En el caso de querer eliminar todos los items del objeto AEmpleado
if AllItems then
begin
with AEmpleado.DataTable do
begin
First;
while not EOF do
begin
if EsEliminable(AEmpleado) then
begin
AEmpleado.Delete;
bEliminado := True
end
else Next;
end;
end;
end;
if bEliminado then
begin
AEmpleado.DataTable.ApplyUpdates;
Result := True;
end
else
Result := False;
finally
HideHourglassCursor;
end;
end;
function TEmpleadosController.EsEliminable(AEmpleado: IBizContacto): Boolean;
begin
if not Assigned(AEmpleado) then
raise Exception.Create ('Contacto no asignado: EsEliminable');
Result := True;
end;
function TEmpleadosController.Nuevo: IBizContacto;
var
AContacto : IBizEmpleado;
begin
AContacto := (FDataModule as IDataModuleEmpleados).NewItem;
FiltrarEmpresa(AContacto);
AContacto.DataTable.Active := True;
AContacto.Insert;
Result := AContacto;
end;
procedure TEmpleadosController.Preview(AEmpleado: IBizEmpleado; AllItems: Boolean);
var
AReportController : IFichasEmpleadoReportController;
ID_Fichas: TStringList;
begin
AReportController := TFichasEmpleadoReportController.Create;
try
ID_Fichas := TStringList.Create;
//Si deseamos previsualizar todos los items del objeto albaran
if AllItems then
begin
with AEmpleado.DataTable do
begin
First;
while not EOF do
begin
ID_Fichas.Add(IntToStr(AEmpleado.ID));
Next;
end;
end;
end
//Solo previsualizamos el item seleccionado
else
ID_Fichas.Add(IntToStr(AEmpleado.ID));
AReportController.Preview(ID_Fichas.CommaText);
finally
AReportController := NIL;
ID_Fichas.Free;
end;
end;
procedure TEmpleadosController.Print(AEmpleado: IBizEmpleado; AllItems: Boolean);
var
AReportController : IFichasEmpleadoReportController;
ID_Fichas: TStringList;
begin
AReportController := TFichasEmpleadoReportController.Create;
try
ID_Fichas := TStringList.Create;
//Si deseamos previsualizar todos los items del objeto albaran
if AllItems then
begin
with AEmpleado.DataTable do
begin
First;
while not EOF do
begin
ID_Fichas.Add(IntToStr(AEmpleado.ID));
Next;
end;
end;
end
//Solo previsualizamos el item seleccionado
else
ID_Fichas.Add(IntToStr(AEmpleado.ID));
AReportController.Print(ID_Fichas.CommaText);
finally
AReportController := NIL;
ID_Fichas.Free;
end;
end;
procedure TEmpleadosController.Ver(AContacto: IBizContacto);
var
AEditor : IEditorEmpleado;
begin
AEditor := NIL;
ShowHourglassCursor;
try
CreateEditor('EditorEmpleado', IEditorEmpleado, AEditor);
with AEditor do
begin
Contacto := AContacto;
Controller := Self;
end;
finally
HideHourglassCursor;
end;
if Assigned(AEditor) then
try
AEditor.ShowModal;
AEditor.Release;
finally
AEditor := NIL;
end;
end;
procedure TEmpleadosController.VerTodos(AContactos: IBizContacto);
var
AEditor : IEditorEmpleados;
begin
CreateEditor('EditorEmpleados', IEditorEmpleados, AEditor);
with AEditor do
begin
Contactos := AContactos;
Controller := Self;
MultiSelect := True;
ShowEmbedded;
end;
end;
end.