- En proveedores, la descripción (tipo de material que sirve) se ha cambiado a un combobox para que sea más fácil. git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@240 0c75b7a4-871f-7646-8a2f-f78d34cc349f
269 lines
6.8 KiB
ObjectPascal
269 lines
6.8 KiB
ObjectPascal
unit uEmpleadosController;
|
|
|
|
interface
|
|
|
|
uses
|
|
uCustomEditor, Classes,
|
|
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);
|
|
function DarListaContratosEmpleado: TStringList;
|
|
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;
|
|
|
|
function DarListaContratosEmpleado: TStringList;
|
|
|
|
procedure Preview(AEmpleado : IBizEmpleado; AllItems: Boolean = false);
|
|
procedure Print(AEmpleado : IBizEmpleado; AllItems: Boolean = false);
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
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.DarListaContratosEmpleado: TStringList;
|
|
begin
|
|
Result := (FDataModule as IDataModuleEmpleados).DarListaContratosEmpleado;
|
|
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);
|
|
if Assigned(AEditor) then
|
|
with AEditor do
|
|
begin
|
|
Contacto := AContacto;
|
|
Controller := Self;
|
|
ShowModal;
|
|
Release;
|
|
end;
|
|
finally
|
|
AEditor := NIL;
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
procedure TEmpleadosController.VerTodos(AContactos: IBizContacto);
|
|
var
|
|
AEditor : IEditorEmpleados;
|
|
begin
|
|
AEditor := NIL;
|
|
ShowHourglassCursor;
|
|
try
|
|
CreateEditor('EditorEmpleados', IEditorEmpleados, AEditor);
|
|
if Assigned(AEditor) then
|
|
with AEditor do
|
|
begin
|
|
Contactos := AContactos;
|
|
Controller := Self;
|
|
MultiSelect := True;
|
|
ShowEmbedded;
|
|
end;
|
|
finally
|
|
AEditor := NIL;
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
end.
|