ProGestion/Modulos/Contactos/Cliente/uDataModuleContactos.pas
2007-06-21 16:12:43 +00:00

251 lines
7.3 KiB
ObjectPascal

{
===============================================================================
Copyright (©) 2006. Rodax Software.
===============================================================================
Los contenidos de este fichero son propiedad de Rodax Software titular del
copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado,
en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
acuerdo con los términos y condiciones establecidas en el acuerdo/contrato
bajo el que se suministra.
-----------------------------------------------------------------------------
Web: www.rodax-software.com
===============================================================================
Fecha primera versión: 22-05-2006
Versión actual: 1.0.0
Fecha versión actual: 22-05-2006
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
===============================================================================
}
unit uDataModuleContactos;
interface
uses {vcl:} SysUtils, Classes, DB, DBClient,
{RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter,
uROServiceComponent, uRORemoteService, uROClient, uROBinMessage,
uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable,
uBizContacto;
type
TdmContactos = class(TDAClientDataModule)
DABINAdapter: TDABINAdapter;
ds_Categorias: TDADataSource;
ds_Contactos: TDADataSource;
RORemoteService: TRORemoteService;
tbl_Categorias: TDACDSDataTable;
tbl_Contactos: TDACDSDataTable;
tbl_ContactosCategorias: TDACDSDataTable;
ds_ContactosCategorias: TDADataSource;
tbl_ContactosAsociados: TDACDSDataTable;
ds_ContactosAsociados: TDADataSource;
procedure DAClientDataModuleCreate(Sender: TObject);
private
function GetContactosTable: TDACDSDataTable;
function GetCategoriasTable: TDACDSDataTable;
public
function getCodigo: Integer;
function GetContacto(Codigo : Integer): IBizContacto; overload;
procedure GetContacto(AContacto : IBizContacto; const Codigo : Integer); overload;
function GetContactos: IBizContacto;
function GetCategorias: IBizCategoria;
procedure Preview;
function GetItemsSeleccionados(ASource : IBizContacto): IBizContacto;
end;
var
dmContactos: TdmContactos;
implementation
{$R *.DFM}
uses
Controls, Forms, uDAInterfaces, DataAbstract_Intf, FactuGES_Intf,
uDataTableUtils, uROTypes, uEditorPreview,
Dialogs, schContactosClient_Intf, uDataModuleBase, uDBSelectionList,
cxControls;
{
********************************* TdmContactos *********************************
}
procedure TdmContactos.DAClientDataModuleCreate(Sender: TObject);
begin
RORemoteService.Channel := dmBase.Channel;
RORemoteService.Message := dmBase.Message;
end;
function TdmContactos.GetContactosTable: TDACDSDataTable;
var
dtContactos: TDACDSDataTable;
dtCategorias: TDACDSDataTable;
dtAsociados: TDACDSDataTable;
begin
ShowHourglassCursor;
try
dtContactos := TDACDSDataTable.Create(NIL);
CloneDataTable(tbl_Contactos, dtContactos);
dtContactos.BusinessRulesID := BIZ_CONTACTO;
dtContactos.FieldByName(fld_ContactosNOMBRE).BusinessRulesID := BIZ_NOMBRECONTACTO;
dtCategorias := TDACDSDataTable.Create(NIL);
CloneDataTable(tbl_ContactosCategorias, dtCategorias);
dtCategorias.BusinessRulesID := BIZ_CATEGORIACONTACTO;
(dtContactos as IBizContacto).Categorias := (dtCategorias as IBizCategoriaContacto);
dtAsociados := TDACDSDataTable.Create(NIL);
CloneDataTable(tbl_ContactosAsociados, dtAsociados);
dtAsociados.BusinessRulesID := BIZ_CONTACTOASOCIADO;
(dtContactos as IBizContacto).Asociados := (dtAsociados as IBizContactoAsociado);
Result := dtContactos;
finally
HideHourglassCursor;
end;
end;
procedure TdmContactos.Preview;
var
AStream: TMemoryStream;
AEditorPreview : TfEditorPreview;
begin
AStream := Binary.Create;
AEditorPreview := TfEditorPreview.Create(Application);
try
AStream := (RemoteService as ISrvContactos).GenerateReport;
AEditorPreview.Report.PreviewPages.LoadFromStream(AStream);
AEditorPreview.ShowModal;
finally
AEditorPreview.Release;
AStream.Free;
end;
end;
function TdmContactos.GetContactos: IBizContacto;
var
AContacto: IBizContacto;
begin
AContacto := (GetContactosTable as IBizContacto);
Result := AContacto;
end;
function TdmContactos.GetCategoriasTable: TDACDSDataTable;
var
dtCategorias: TDACDSDataTable;
begin
ShowHourglassCursor;
try
dtCategorias := TDACDSDataTable.Create(NIL);
CloneDataTable(tbl_Categorias, dtCategorias);
dtCategorias.BusinessRulesID := BIZ_CATEGORIA;
Result := dtCategorias;
finally
HideHourglassCursor;
end;
end;
function TdmContactos.GetCategorias: IBizCategoria;
var
ACategoria: IBizCategoria;
begin
ACategoria := (GetCategoriasTable as IBizCategoria);
Result := ACategoria;
end;
function TdmContactos.GetContacto(Codigo: Integer): IBizContacto;
var
AContacto: IBizContacto;
begin
AContacto := GetContactos;
ShowHourglassCursor;
try
with AContacto.DataTable do
begin
if Active then
Active := False;
Where.Clear;
Where.AddCondition(fld_ContactosCODIGO, cEqual, Codigo);
Active := True;
end;
Result := AContacto;
finally
HideHourglassCursor;
end;
end;
function TdmContactos.GetItemsSeleccionados(ASource: IBizContacto): IBizContacto;
var
aObj : ISelectedRowList;
dtContacto : IBizContacto;
i : integer;
Cadena: Variant;
begin
if Supports(ASource, ISelectedRowList, aObj) then
begin
if (aObj.SelectedRows.Count = 1) then
begin
ASource.DataTable.GotoBookmark(aObj.SelectedRows[0]);
Result := GetContacto(ASource.CODIGO);
Exit;
end
else
dtContacto := GetContactos;
end
else
raise Exception.Create('Interface no soportada (GetItemsSeleccionados)');
ShowHourglassCursor;
try
//Si esta abierta cerramos para poner el where
if dtContacto.DataTable.Active then
dtContacto.DataTable.Active := False;
with dtContacto.DataTable.Where do
begin
Cadena := '';
for i := 0 to aObj.SelectedRows.Count - 1 do
begin
ASource.DataTable.GotoBookmark(aObj.SelectedRows[i]);
if Cadena <> '' then Cadena:= Cadena + ', ';
Cadena:= Cadena + IntToStr(ASource.CODIGO);
end;
Clear;
Cadena := '(' + Cadena + ')';
AddCondition(fld_ContactosCODIGO, cIn, Cadena);
end;
Result := dtContacto;
finally
HideHourglassCursor;
end;
end;
procedure TdmContactos.GetContacto(AContacto: IBizContacto; const Codigo: Integer);
begin
with AContacto.DataTable do
begin
if Active then
Active := False;
Where.Clear;
Where.AddCondition(fld_ContactosCODIGO, cEqual, Codigo);
end;
end;
function TdmContactos.getCodigo: Integer;
begin
Result := (RORemoteService as IsrvContactos).GetCodigo('GEN_CONTACTOS');
end;
initialization
dmContactos := TdmContactos.Create(nil);
finalization
FreeAndNil(dmContactos);
end.