Tecsitel_FactuGES2/Source/Modulos/Contactos/Data/uDataModuleContactos.pas

194 lines
6.0 KiB
ObjectPascal

unit uDataModuleContactos;
interface
uses
SysUtils, Classes, DB, DBClient,
uDAClientDataModule, uDADataTable, uDABINAdapter,
uDAScriptingProvider, uDACDSDataTable, uROWinInetHttpChannel,
uROServiceComponent, uRORemoteService, uROClient, uROBinMessage,
uBizContactos, uBizContactosDatosBancarios, uBizCategoriasContacto,
uBizDireccionesContacto, uIDataModuleEtiquetasContactosReport,
uIDataModuleContactos, uDADesigntimeCall, uROTypes, uRODynamicRequest,
uDAInterfaces, uDADataStreamer, uDARemoteDataAdapter;
type
TDataModuleContactos = class(TDAClientDataModule, IDataModuleContactos, IDataModuleEtiquetasContactosReport)
RORemoteService: TRORemoteService;
tbl_Contactos: TDACDSDataTable;
ds_Contactos: TDADataSource;
tbl_ContactosCategorias: TDACDSDataTable;
ds_ContactosCategorias: TDADataSource;
tbl_DatosBancarios: TDACDSDataTable;
ds_DatosBancarios: TDADataSource;
DADesigntimeCall1: TDADesigntimeCall;
LoginRemoteService: TRORemoteService;
ROWinInetHTTPChannel1: TROWinInetHTTPChannel;
ROBinMessage1: TROBinMessage;
tbl_DireccionesContacto: TDACDSDataTable;
ds_DireccionesContacto: TDADataSource;
DataStreamer: TDABinDataStreamer;
rda_Contactos: TDARemoteDataAdapter;
rda_ContactosCategorias: TDARemoteDataAdapter;
rda_DatosBancarios: TDARemoteDataAdapter;
rda_DireccionesContacto: TDARemoteDataAdapter;
procedure DAClientDataModuleCreate(Sender: TObject);
protected
function _InternalGetNextID(const AGeneratorName : String) : Integer;
public
function _CloneDataTable (const ADataTable : TDACDSDataTable): TDACDSDataTable; overload;
function _GetDatosBancarios : IBizContactosDatosBancarios;
function _GetDirecciones: IBizDireccionesContacto;
function _GetCategorias : IBizCategoriasContacto;
function _GetItems (IDCategoria : Integer): IBizContacto; virtual;
function GetNextID(const DataSetName : String) : Integer; virtual;
// Report
function GetReport(const AContactosID: String): Binary;
end;
implementation
{$R *.DFM}
uses
uDataTableUtils, uDataModuleConexion, cxControls,
FactuGES_Intf, uDataModuleUsuarios, schContactosClient_Intf, Dialogs;
{ TdmContactos }
procedure TDataModuleContactos.DAClientDataModuleCreate(Sender: TObject);
begin
RORemoteService.Channel := dmConexion.Channel;
RORemoteService.Message := dmConexion.Message;
end;
function TDataModuleContactos.GetNextID(const DataSetName: String): Integer;
var
aGeneratorName : String;
begin
if DataSetName = nme_Contactos then
aGeneratorName := 'GEN_CONTACTOS_ID';
if DataSetName = nme_DatosBancarios then
aGeneratorName := 'GEN_CONTACTOS_DATOS_BANCO_ID';
if DataSetName = nme_DireccionesContacto then
aGeneratorName := 'GEN_CONTACTOS_DIR_ID';
if DataSetName = nme_DireccionesContacto then
aGeneratorName := 'GEN_CONTACTOS_DIR_ID';
Result := _InternalGetNextID(aGeneratorName);
end;
function TDataModuleContactos.GetReport(const AContactosID: String): Binary;
begin
Result := (RORemoteService as IsrvContactos).GenerateEtiquetasReport(AContactosID);
end;
function TDataModuleContactos._CloneDataTable(
const ADataTable : TDACDSDataTable): TDACDSDataTable;
begin
Result := NIL;
if not Assigned(ADataTable) then
raise Exception.Create ('No se ha asignado la tabla de origen (CloneDataTable)');
Result := TDACDSDataTable.Create(NIL);
CloneDataTable(ADataTable, Result);
end;
function TDataModuleContactos._GetCategorias: IBizCategoriasContacto;
var
ACategorias : TDACDSDataTable;
begin
ShowHourglassCursor;
try
ACategorias := _CloneDataTable(tbl_ContactosCategorias);
with ACategorias do
begin
BusinessRulesID := BIZ_CLIENT_CATEGORIAS_CONTACTO;
DetailOptions := DetailOptions -
[dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates];
end;
Result := (ACategorias as IBizCategoriasContacto);
finally
HideHourglassCursor;
end;
end;
function TDataModuleContactos._GetDatosBancarios: IBizContactosDatosBancarios;
var
ADatosBancarios : TDACDSDataTable;
begin
ShowHourglassCursor;
try
ADatosBancarios := _CloneDataTable(tbl_DatosBancarios);
with ADatosBancarios do
begin
BusinessRulesID := BIZ_CLIENT_CONTACTOS_DATOS_BANCARIOS;
DetailOptions := DetailOptions -
[dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates];
end;
Result := (ADatosBancarios as IBizContactosDatosBancarios);
finally
HideHourglassCursor;
end;
end;
function TDataModuleContactos._GetDirecciones: IBizDireccionesContacto;
var
ADirecciones : TDACDSDataTable;
begin
ShowHourglassCursor;
try
ADirecciones := _CloneDataTable(tbl_DireccionesContacto);
with ADirecciones do
begin
BusinessRulesID := BIZ_CLIENT_DIRECCIONES_CONTACTO;
DetailOptions := DetailOptions -
[dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates];
end;
Result := (ADirecciones as IBizDireccionesContacto);
finally
HideHourglassCursor;
end;
end;
function TDataModuleContactos._GetItems(IDCategoria: Integer): IBizContacto;
var
AContacto : TDACDSDataTable;
begin
ShowHourglassCursor;
try
AContacto := _CloneDataTable(tbl_Contactos);
with AContacto do
case IDCategoria of
CATEGORIA_CLIENTE : BusinessRulesID := BIZ_CLIENT_CLIENTE;
CATEGORIA_PROVEEDOR : BusinessRulesID := BIZ_CLIENT_PROVEEDOR;
CATEGORIA_EMPLEADO : BusinessRulesID := BIZ_CLIENT_EMPLEADO;
end;
with TBizContacto(AContacto.BusinessEventsObj) do
begin
DatosBancarios := _GetDatosBancarios;
Direcciones := _GetDirecciones;
_Categorias := _GetCategorias;
end;
Result := (AContacto as IBizContacto);
finally
HideHourglassCursor;
end;
end;
function TDataModuleContactos._InternalGetNextID(
const AGeneratorName: String): Integer;
begin
Result := (RORemoteService as IsrvContactos).GetNextAutoInc(AGeneratorName)
end;
end.