git-svn-id: https://192.168.0.254/svn/Proyectos.EstudioCarnicero_ProGestion/trunk@4 1b8572a8-2d6b-b84e-8c90-20ed86fa4eca
407 lines
12 KiB
ObjectPascal
407 lines
12 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 uBizContacto;
|
|
|
|
interface
|
|
|
|
uses
|
|
uDAInterfaces, uDADataTable, Classes, uDBSelectionList, schContactosClient_Intf,
|
|
uExceptions, Controls;
|
|
|
|
const
|
|
BIZ_CATEGORIA = 'Client.Categoria';
|
|
BIZ_CONTACTO = 'Client.Contacto';
|
|
BIZ_CATEGORIACONTACTO = 'Client.CategoriaContacto';
|
|
BIZ_CONTACTOASOCIADO = 'Client.ContactoAsociado';
|
|
BIZ_NOMBRECONTACTO = 'Client.Field.NombreContacto';
|
|
|
|
|
|
type
|
|
IBizContacto = Interface; //Se declara después
|
|
|
|
IBizNombre = interface(IDAStronglyTypedDataTable)
|
|
['{6A9117D2-5C90-4AAA-ADA3-022519BCAB4D}']
|
|
end;
|
|
|
|
IBizCategoria = interface(ICATEGORIAS)
|
|
['{8713CDAC-1CDD-479E-82F6-ACA58232C19E}']
|
|
procedure Show;
|
|
end;
|
|
|
|
IBizCategoriaContacto = interface(ICONTACTOSCATEGORIAS)
|
|
['{1EF7B91A-4513-4057-BD6A-613CB1A4CBB8}']
|
|
function GetListaCategorias: String;
|
|
property ListaCategorias: String read GetListaCategorias;
|
|
procedure Show;
|
|
end;
|
|
|
|
IBizContactoAsociado = interface(ICONTACTOSASOCIADOS)
|
|
['{7424E52D-C4C6-407B-92E9-C2AE53842D9F}']
|
|
procedure AppendContactos(CodigoContacto: Variant; AContactos: IBizContacto);
|
|
procedure UpdateContactoAsociado(AContacto: IBizContacto);
|
|
end;
|
|
|
|
IBizContacto = interface(ICONTACTOS)
|
|
['{800A68B8-8C95-4CEB-B12A-C3D039ACDC14}']
|
|
function GetCategorias: IBizCategoriaContacto;
|
|
procedure SetCategorias(const Value: IBizCategoriaContacto);
|
|
property Categorias: IBizCategoriaContacto read GetCategorias write SetCategorias;
|
|
|
|
function GetAsociados: IBizContactoAsociado;
|
|
procedure SetAsociados(const Value: IBizContactoAsociado);
|
|
property Asociados : IBizContactoAsociado read GetAsociados write SetAsociados;
|
|
|
|
procedure Show;
|
|
procedure ShowAll;
|
|
procedure Preview;
|
|
function ShowForSelect : TModalResult;
|
|
function ShowForMultiSelect: TModalResult;
|
|
end;
|
|
|
|
TBizNombreFieldRules = class(TDAFieldRules)
|
|
protected
|
|
procedure OnChange(Sender: TDACustomField); override;
|
|
end;
|
|
|
|
TBizContactoAsociadoDataTableRules = class(TCONTACTOSASOCIADOSDataTableRules,
|
|
IBizContactoAsociado)
|
|
protected
|
|
procedure BeforeInsert(Sender: TDADataTable); override;
|
|
public
|
|
procedure AppendContactos(CodigoContacto: Variant; AContactos: IBizContacto);
|
|
procedure UpdateContactoAsociado(AContacto: IBizContacto);
|
|
end;
|
|
|
|
|
|
TBizCategoriaDataTableRules = class(TCATEGORIASDataTableRules, IBizCategoria)
|
|
public
|
|
procedure Show;
|
|
end;
|
|
|
|
TBizContactoDataTableRules = class(TCONTACTOSDataTableRules, IBizContacto,
|
|
IApplyUpdateFailedException,
|
|
ISelectedRowList)
|
|
private
|
|
FCategorias: IBizCategoriaContacto;
|
|
FCategoriasLink: TDADataSource;
|
|
FAsociados: IBizContactoAsociado;
|
|
FAsociadosLink: TDADataSource;
|
|
FSelectedRows : TSelectedRowList;
|
|
|
|
protected
|
|
procedure OnNewRecord(Sender: TDADataTable); override;
|
|
procedure BeforeApplyUpdates(DataTable: TDADataTable; const Delta: IDADelta);
|
|
function GetSelectedRows : TSelectedRowList; virtual;
|
|
procedure ShowApplyUpdateFailed (const Error: EDAApplyUpdateFailed); virtual;
|
|
|
|
function GetCategorias: IBizCategoriaContacto;
|
|
procedure SetCategorias(const Value: IBizCategoriaContacto);
|
|
|
|
function GetAsociados: IBizContactoAsociado;
|
|
procedure SetAsociados(const Value: IBizContactoAsociado);
|
|
|
|
public
|
|
property Asociados : IBizContactoAsociado read GetAsociados write SetAsociados;
|
|
property Categorias: IBizCategoriaContacto read GetCategorias write SetCategorias;
|
|
property SelectedRows : TSelectedRowList read GetSelectedRows;
|
|
function ShowForMultiSelect: TModalResult; virtual;
|
|
function ShowForSelect: TModalResult;
|
|
procedure Show; virtual;
|
|
procedure ShowAll; virtual;
|
|
procedure Preview; virtual;
|
|
constructor Create(aDataTable: TDADataTable); override;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
TBizCategoriaContacto = class(TCONTACTOSCATEGORIASDataTableRules, IBizCategoriaContacto)
|
|
private
|
|
FListaCategorias: String;
|
|
function GetListaCategorias: String;
|
|
protected
|
|
procedure BeforeInsert(Sender: TDADataTable); override;
|
|
public
|
|
property ListaCategorias: String read GetListaCategorias;
|
|
procedure Show;
|
|
end;
|
|
|
|
procedure ValidarContacto (const AObj : IBizContacto);
|
|
|
|
implementation
|
|
|
|
uses
|
|
DB, Variants, uDACDSDataTable, SysUtils, uEditorUtils, uDataModuleContactos,
|
|
Dialogs, Windows, LiteralesContactos, uDataModuleBase, uUtils;
|
|
|
|
|
|
procedure ValidarContacto (const AObj : IBizContacto);
|
|
begin
|
|
//
|
|
end;
|
|
|
|
|
|
{ TBizContactoDataTableRules }
|
|
|
|
{
|
|
************************** TBizContactoDataTableRules **************************
|
|
}
|
|
|
|
constructor TBizContactoDataTableRules.Create(aDataTable: TDADataTable);
|
|
begin
|
|
inherited;
|
|
FAsociadosLink := TDADataSource.Create(NIL);
|
|
FCategoriasLink := TDADataSource.Create(NIL);
|
|
FSelectedRows := TSelectedRowList.Create(aDataTable);
|
|
aDataTable.OnBeforeApplyUpdates := BeforeApplyUpdates;
|
|
end;
|
|
|
|
destructor TBizContactoDataTableRules.Destroy;
|
|
begin
|
|
FCategorias := Nil;
|
|
FCategoriasLink.Free;
|
|
|
|
FAsociados := Nil;
|
|
FAsociadosLink.Free;
|
|
|
|
FSelectedRows.Free;
|
|
FSelectedRows := Nil;
|
|
inherited;
|
|
end;
|
|
|
|
function TBizContactoDataTableRules.GetCategorias: IBizCategoriaContacto;
|
|
begin
|
|
Result := FCategorias;
|
|
end;
|
|
|
|
procedure TBizContactoDataTableRules.OnNewRecord(Sender: TDADataTable);
|
|
begin
|
|
inherited;
|
|
CODIGOEMPRESA := dmBase.CodigoEmpresa;
|
|
CODIGO := dmContactos.getCodigo;
|
|
USUARIO := dmBase.Usuario;
|
|
FECHAALTA := dmBase.Fecha;
|
|
NOMBRE := msgLitNombre;
|
|
end;
|
|
|
|
procedure TBizContactoDataTableRules.SetCategorias(const Value: IBizCategoriaContacto);
|
|
begin
|
|
FCategorias := Value;
|
|
FCategoriasLink.DataTable := Self.DataTable;
|
|
FCategorias.DataTable.MasterSource := FCategoriasLink;
|
|
end;
|
|
|
|
procedure TBizContactoDataTableRules.Show;
|
|
begin
|
|
ShowEditor(IBizContacto, Self, etItem);
|
|
end;
|
|
|
|
procedure TBizContactoDataTableRules.Preview;
|
|
begin
|
|
dmContactos.Preview;
|
|
end;
|
|
|
|
procedure TBizContactoDataTableRules.ShowAll;
|
|
begin
|
|
ShowEditor(IBizContacto, Self, etItems);
|
|
end;
|
|
|
|
|
|
{ TBizCategoriaDataTableRules }
|
|
|
|
{
|
|
************************** TBizCategoriaDataTableRules ************************
|
|
}
|
|
|
|
procedure TBizCategoriaDataTableRules.Show;
|
|
begin
|
|
ShowEditor(IBizCategoria, Self, etItems);
|
|
end;
|
|
|
|
{ TBizCategoriaContacto }
|
|
|
|
{
|
|
************************** TBizCategoriaContacto ******************************
|
|
}
|
|
|
|
procedure TBizCategoriaContacto.BeforeInsert(Sender: TDADataTable);
|
|
begin
|
|
inherited;
|
|
|
|
if Assigned(DataTable.MasterSource)
|
|
and (DataTable.MasterSource.DataTable.State in dsEditModes) then
|
|
DataTable.MasterSource.DataTable.Post;
|
|
end;
|
|
|
|
function TBizCategoriaContacto.GetListaCategorias: String;
|
|
begin
|
|
FListaCategorias := '';
|
|
|
|
if not DataTable.Active then
|
|
DataTable.Active := True;
|
|
|
|
First;
|
|
while not DataTable.EOF do
|
|
begin
|
|
if FListaCategorias <> '' then
|
|
FListaCategorias := FListaCategorias + '; ';
|
|
FListaCategorias := FListaCategorias + DESCRIPCION;
|
|
Next;
|
|
end;
|
|
|
|
Result := FListaCategorias;
|
|
end;
|
|
|
|
procedure TBizCategoriaContacto.Show;
|
|
begin
|
|
ShowEditor(IBizCategoriaContacto, Self, etItems);
|
|
end;
|
|
|
|
function TBizContactoDataTableRules.GetSelectedRows: TSelectedRowList;
|
|
begin
|
|
Result := FSelectedRows;
|
|
end;
|
|
|
|
function TBizContactoDataTableRules.ShowForSelect : TModalResult;
|
|
begin
|
|
Result := ShowEditor(IBizContacto, Self, etSelectItem);
|
|
end;
|
|
|
|
function TBizContactoDataTableRules.ShowForMultiSelect: TModalResult;
|
|
begin
|
|
Result := ShowEditor(IBizContacto, Self, etSelectItems);
|
|
end;
|
|
|
|
procedure TBizContactoDataTableRules.ShowApplyUpdateFailed(const Error: EDAApplyUpdateFailed);
|
|
begin
|
|
if (Pos(AUF_FKVIOLATION, Error.Message) > 0) then
|
|
MessageBox(0, PChar(msgErrorContactoAsociado), PChar(msgAtencion), MB_ICONWARNING or MB_OK);
|
|
end;
|
|
|
|
procedure TBizContactoDataTableRules.BeforeApplyUpdates(DataTable: TDADataTable; const Delta: IDADelta);
|
|
begin
|
|
ValidarContacto(Self);
|
|
end;
|
|
|
|
{ TBizNombreFieldRules }
|
|
|
|
procedure TBizNombreFieldRules.OnChange(Sender: TDACustomField);
|
|
begin
|
|
inherited;
|
|
if Length(Sender.Value) = 0 then
|
|
begin
|
|
Showmessage(msgLitNombreObligatorio);
|
|
Sender.Value := msgLitNombre;
|
|
Sender.FocusControl;
|
|
end;
|
|
end;
|
|
|
|
function TBizContactoDataTableRules.GetAsociados: IBizContactoAsociado;
|
|
begin
|
|
Result := FAsociados;
|
|
end;
|
|
|
|
procedure TBizContactoDataTableRules.SetAsociados(
|
|
const Value: IBizContactoAsociado);
|
|
begin
|
|
FAsociados := Value;
|
|
FAsociadosLink.DataTable := Self.DataTable;
|
|
FAsociados.DataTable.MasterSource := FAsociadosLink;
|
|
end;
|
|
|
|
{ TBizContactoAsociadoDataTableRules }
|
|
|
|
procedure TBizContactoAsociadoDataTableRules.AppendContactos(CodigoContacto: Variant; AContactos: IBizContacto);
|
|
var
|
|
CadenaClaves: String;
|
|
ListaValoresClave: TStringList;
|
|
|
|
begin
|
|
if not AContactos.DataTable.Active then
|
|
AContactos.DataTable.Active := True;
|
|
|
|
CadenaClaves := fld_ContactosAsociadosCODIGOCONTACTO;
|
|
CadenaClaves := CadenaClaves + ';' + fld_ContactosAsociadosCODIGOASOCIADO;
|
|
ListaValoresClave := TStringList.Create;
|
|
Self.DataTable.DisableControls;
|
|
|
|
with AContactos do
|
|
begin
|
|
DataTable.First;
|
|
while not DataTable.EOF do
|
|
begin
|
|
//Por cada elemento a añadir lo buscamos por si ya estuviese añadido
|
|
Self.DataTable.First;
|
|
|
|
ListaValoresClave.Clear;
|
|
ListaValoresClave.Add(VarToStr(CodigoContacto));
|
|
ListaValoresClave.Add(IntToStr(CODIGO));
|
|
if Self.DataTable.Locate(CadenaClaves, getArrList(ListaValoresClave), []) then
|
|
// MessageBox(0, PChar(NOMBRE + msgLitContactoObraAnadido), 'Atención', MB_ICONWARNING or MB_OK)
|
|
else
|
|
begin
|
|
Self.DataTable.Append;
|
|
Self.CODIGOCONTACTO := CodigoContacto;
|
|
Self.CODIGOASOCIADO := CODIGO;
|
|
Self.NOMBRE := NOMBRE;
|
|
Self.DataTable.Post;
|
|
end;
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
FreeAndNil(ListaValoresClave);
|
|
Self.DataTable.EnableControls;
|
|
end;
|
|
|
|
procedure TBizContactoAsociadoDataTableRules.BeforeInsert(Sender: TDADataTable);
|
|
begin
|
|
inherited;
|
|
|
|
if Assigned(DataTable.MasterSource)
|
|
and (DataTable.MasterSource.DataTable.State in dsEditModes) then
|
|
DataTable.MasterSource.DataTable.Post;
|
|
end;
|
|
|
|
procedure TBizContactoAsociadoDataTableRules.UpdateContactoAsociado(AContacto: IBizContacto);
|
|
begin
|
|
if not (Self.DataTable.State in dsEditModes) then
|
|
Self.DataTable.Edit;
|
|
|
|
Self.NOMBRE := AContacto.NOMBRE;
|
|
|
|
if (Self.DataTable.State in dsEditModes) then
|
|
Self.DataTable.Post;
|
|
end;
|
|
|
|
initialization
|
|
RegisterDataTableRules(BIZ_CATEGORIA, TBizCategoriaDataTableRules);
|
|
RegisterDataTableRules(BIZ_CONTACTO, TBizContactoDataTableRules);
|
|
RegisterDataTableRules(BIZ_CATEGORIACONTACTO, TBizCategoriaContacto);
|
|
RegisterDataTableRules(BIZ_CONTACTOASOCIADO, TBizContactoAsociadoDataTableRules);
|
|
|
|
RegisterFieldRules(BIZ_NOMBRECONTACTO, TBizNombreFieldRules);
|
|
|
|
finalization
|
|
|
|
end.
|