AbetoDesign_FactuGES2/Source/Modulos/Contactos/Data/uDataModuleContactos.pas
roberto 1f5e6ebcb9 Version 4.5.4
Cambio en los informes de Contratos de cliente de todas las entidades: Cambio fecha de entrega por fecha expedicion - Solicitado por Próspero
Cambio logo uecko y sellos cabecera en todos los informes de todas las entidades- Solicitado por Noelia
Arreglo para que permita introducir DNI y CIFs raros - Solicitado por Mónica
Las facturas proforma no se tendrán en cuenta en las facturas asociadas a los contratos, listado de contratos - Solicitado por Eva
Se añade comprobación de capitulos para que avise si existe un subtotal sin capitulo correspondiente, ayudará a controlar errores en presupuestos y contratos largos. - Solicitado por Miriam
En los detalles de presupuestos y contratos si eligen un articulo de la tarífa el programa no deja modificar las descripciones (Se ha detectado que lo hen hecho en ocasiones en las tiendas) - Solicitado por Miriam

git-svn-id: https://192.168.0.254/svn/Proyectos.AbetoDesign_FactuGES/trunk@186 93f398dd-4eb6-7a46-baf6-13f46f578da2
2024-02-05 10:15:29 +00:00

220 lines
6.4 KiB
ObjectPascal

unit uDataModuleContactos;
interface
uses
SysUtils, Classes, DB, DBClient, uIntegerListUtils,
uDADataTable, uDABINAdapter,
uDAScriptingProvider, uDACDSDataTable, uROWinInetHttpChannel,
uRORemoteService, uROClient, uROBinMessage,
uBizContactos, uBizContactosDatosBancarios,
uBizDireccionesContacto, uIDataModuleEtiquetasContactosReport,
uIDataModuleContactos, uDADesigntimeCall, uROTypes, uRODynamicRequest,
uDAInterfaces, uDADataStreamer, uDARemoteDataAdapter, uDABin2DataStreamer,
uDAMemDataTable, uDataModuleBase, uBizContactosPersonal, uBizContactosDirecciones;
type
TDataModuleContactos = class(TDataModuleBase, IDataModuleContactos, IDataModuleEtiquetasContactosReport)
RORemoteService: TRORemoteService;
rda_Contactos: TDARemoteDataAdapter;
Bin2DataStreamer: TDABin2DataStreamer;
tbl_Contactos: TDAMemDataTable;
ds_Contactos: TDADataSource;
tbl_DireccionesContacto: TDAMemDataTable;
ds_DireccionesContacto: TDADataSource;
tbl_DatosBancarios: TDAMemDataTable;
ds_DatosBancarios: TDADataSource;
tbl_PersonalContacto: TDAMemDataTable;
ds_PersonalContacto: TDADataSource;
tbl_ContactosDirecciones: TDAMemDataTable;
ds_ContactosDirecciones: TDADataSource;
procedure DAClientDataModuleCreate(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject);
public
function _GetDatosBancarios : IBizContactosDatosBancarios;
function _GetDirecciones: IBizDireccionesContacto;
function _GetPersonal: IBizContactoPersonal;
function _GetItems (IDCategoria : Integer): IBizContacto; virtual;
function NewDireccion : IBizDireccionesContacto;
function GetContactosDirecciones : IBizContactosDirecciones;
function GetContactoDirecciones(const IDContacto: Integer) : IBizContactosDirecciones;
// Report
function GetReport(const ListaID: TIntegerList): Binary;
end;
implementation
{$R *.DFM}
uses
uDataTableUtils, uDataModuleConexion, cxControls,
FactuGES_Intf, schContactosClient_Intf, Dialogs;
{ TdmContactos }
procedure TDataModuleContactos.DAClientDataModuleCreate(Sender: TObject);
begin
RORemoteService.Channel := dmConexion.Channel;
RORemoteService.Message := dmConexion.Message;
end;
procedure TDataModuleContactos.DataModuleDestroy(Sender: TObject);
begin
//
end;
function TDataModuleContactos.GetContactoDirecciones(const IDContacto: Integer): IBizContactosDirecciones;
begin
ShowHourglassCursor;
try
Result := Self.GetContactosDirecciones;
with Result.DataTable.DynamicWhere do
begin
Clear;
// (ID = :ID)
Expression := NewBinaryExpression(NewField('', fld_ContactosDireccionesID_CONTACTO), NewConstant(IDContacto, datInteger), dboEqual);
end;
finally
HideHourglassCursor;
end;
end;
function TDataModuleContactos.GetContactosDirecciones: IBizContactosDirecciones;
var
ADirecciones : TDAMemDataTable;
begin
ShowHourglassCursor;
try
ADirecciones := CloneDataTable(tbl_ContactosDirecciones);
ADirecciones.BusinessRulesID := BIZ_CLIENT_CONTACTOS_DIRECCIONES;
Result := (ADirecciones as IBizContactosDirecciones);
finally
HideHourglassCursor;
end;
end;
function TDataModuleContactos.GetReport(const ListaID: TIntegerList): Binary;
var
AParam : TIntegerArray;
begin
AParam := ListaID.ToIntegerArray;
try
Result := (RORemoteService as IsrvContactos).GenerarInformeEtiquetas(AParam);
finally
FreeANDNIL(AParam);
end;
end;
function TDataModuleContactos.NewDireccion: IBizDireccionesContacto;
var
Condicion: TDAWhereExpression;
begin
ShowHourglassCursor;
try
Result := Self._GetDirecciones;
with Result.DataTable.DynamicWhere do
begin
// (ID = :ID)
Condicion := NewBinaryExpression(NewField('', fld_DireccionesContactoID), NewConstant(ID_NULO, datInteger), dboEqual);
if IsEmpty then
Expression := Condicion
else
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
end;
finally
HideHourglassCursor;
end;
end;
function TDataModuleContactos._GetDatosBancarios: IBizContactosDatosBancarios;
var
ADatosBancarios : TDAMemDataTable;
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 : TDAMemDataTable;
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 : TDAMemDataTable;
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_VENDEDOR : BusinessRulesID := BIZ_CLIENT_VENDEDOR;
end;
with TBizContacto(AContacto.BusinessEventsObj) do
begin
DatosBancarios := _GetDatosBancarios;
Direcciones := _GetDirecciones;
Personal := _GetPersonal;
end;
Result := (AContacto as IBizContacto);
finally
HideHourglassCursor;
end;
end;
function TDataModuleContactos._GetPersonal: IBizContactoPersonal;
var
APersonal : TDAMemDataTable;
begin
ShowHourglassCursor;
try
APersonal := CloneDataTable(tbl_PersonalContacto);
with APersonal do
begin
BusinessRulesID := BIZ_CLIENT_CONTACTO_PERSONAL;
DetailOptions := DetailOptions -
[dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates];
end;
Result := (APersonal as IBizContactoPersonal);
finally
HideHourglassCursor;
end;
end;
end.