diff --git a/Source/ApplicationBase/Empresas/Controller/uDatosBancariosEmpresaController.pas b/Source/ApplicationBase/Empresas/Controller/uDatosBancariosEmpresaController.pas
index 6af352d..411aba1 100644
--- a/Source/ApplicationBase/Empresas/Controller/uDatosBancariosEmpresaController.pas
+++ b/Source/ApplicationBase/Empresas/Controller/uDatosBancariosEmpresaController.pas
@@ -16,7 +16,9 @@ type
TDatosBancariosEmpresaController = class(TControllerBase, IDatosBancariosEmpresaController)
private
FDataModule : IDataModuleEmpresas;
+ protected
public
+ function ValidarDatosBancarios(ADatosBancarios : IBizEmpresasDatosBancarios; AEmpresa : IBizEmpresa): Boolean; virtual;
procedure Ver(ADatosBancarios : IBizEmpresasDatosBancarios);
constructor Create; override;
destructor Destroy; override;
@@ -42,6 +44,36 @@ begin
inherited;
end;
+function TDatosBancariosEmpresaController.ValidarDatosBancarios(
+ ADatosBancarios: IBizEmpresasDatosBancarios; AEmpresa : IBizEmpresa): Boolean;
+begin
+ ADatosBancarios.DataTable.Edit;
+
+ try
+ if not ADatosBancarios.IBANIsNull then
+ ADatosBancarios.IBAN := StringReplace(ADatosBancarios.IBAN, ' ', '', [rfReplaceAll]); // Quitar espacios
+
+ if ADatosBancarios.SUFIJO_PRESENTADORIsNull then
+ ADatosBancarios.SUFIJO_PRESENTADOR := ADatosBancarios.SUFIJO_ACREEDOR;
+
+ if ADatosBancarios.ENTIDAD_PRESENTADORIsNull then
+ ADatosBancarios.ENTIDAD_PRESENTADOR := ADatosBancarios.ENTIDAD;
+
+ if ADatosBancarios.SUCURSAL_PRESENTADORIsNull then
+ ADatosBancarios.SUCURSAL_PRESENTADOR := ADatosBancarios.SUCURSAL;
+
+ if ADatosBancarios.NIF_CIF_PRESENTADORIsNull then
+ ADatosBancarios.NIF_CIF_PRESENTADOR := AEmpresa.NIF_CIF;
+
+ if ADatosBancarios.NOMBRE_PRESENTADORIsNull then
+ ADatosBancarios.NOMBRE_PRESENTADOR := AEmpresa.NOMBRE;
+
+ finally
+ ADatosBancarios.DataTable.Post;
+ Result := True;
+ end;
+end;
+
procedure TDatosBancariosEmpresaController.Ver(ADatosBancarios : IBizEmpresasDatosBancarios);
var
AEditor : IEditorDatosBancariosEmpresa;
diff --git a/Source/ApplicationBase/Empresas/Controller/uEmpresasController.pas b/Source/ApplicationBase/Empresas/Controller/uEmpresasController.pas
index 502df52..d4be8a7 100644
--- a/Source/ApplicationBase/Empresas/Controller/uEmpresasController.pas
+++ b/Source/ApplicationBase/Empresas/Controller/uEmpresasController.pas
@@ -71,7 +71,8 @@ implementation
uses
uDAInterfaces, uEditorRegistryUtils, cxControls, DB, uFactuGES_App, uStringsUtils,
- uDataModuleEmpresas, uIEditorEmpresa, uBizEmpresasDatosBancarios, schEmpresasClient_Intf;
+ uDataModuleEmpresas, uIEditorEmpresa, uBizEmpresasDatosBancarios, schEmpresasClient_Intf,
+ uDatosBancariosEmpresaController;
{ TEmpresasController }
@@ -368,6 +369,8 @@ begin
end;
function TEmpresasController.ValidarEmpresa(AEmpresa: IBizEmpresa): Boolean;
+var
+ ADatosBancarios : IBizEmpresasDatosBancarios;
begin
if not Assigned(AEmpresa) then
raise Exception.Create ('Empresa no asignada');
@@ -382,7 +385,23 @@ begin
AEmpresa.Edit;
AEmpresa.USUARIO := AppFactuGES.UsuarioActivo.UserName;
AEmpresa.Post;
-
+
+ ADatosBancarios := AEmpresa.DatosBancarios;
+ ADatosBancarios.DataTable.Active := True;
+
+ with TDatosBancariosEmpresaController.Create do
+ try
+ ADatosBancarios.DataTable.First;
+ while not ADatosBancarios.DataTable.EOF do
+ begin
+ if not ValidarDatosBancarios(ADatosBancarios, AEmpresa) then
+ Break;
+ ADatosBancarios.DataTable.Next;
+ end;
+ finally
+ Free;
+ end;
+
Result := True;
end;
diff --git a/Source/ApplicationBase/Empresas/Data/uDataModuleEmpresas.dfm b/Source/ApplicationBase/Empresas/Data/uDataModuleEmpresas.dfm
index 2dbfb1d..6d0538b 100644
--- a/Source/ApplicationBase/Empresas/Data/uDataModuleEmpresas.dfm
+++ b/Source/ApplicationBase/Empresas/Data/uDataModuleEmpresas.dfm
@@ -297,11 +297,57 @@ inherited DataModuleEmpresas: TDataModuleEmpresas
Name = 'IBAN'
DataType = datString
Size = 255
+ DisplayLabel = 'EmpresasDatosBanco_IBAN'
+ DictionaryEntry = 'EmpresasDatosBanco_IBAN'
end
item
Name = 'SWIFT'
DataType = datString
Size = 255
+ DisplayLabel = 'BIC'
+ DictionaryEntry = 'EmpresasDatosBanco_SWIFT'
+ end
+ item
+ Name = 'SUFIJO_ACREEDOR'
+ DataType = datString
+ Size = 3
+ DisplayLabel = 'Sufijo acreedor'
+ DictionaryEntry = 'EmpresasDatosBanco_SUFIJO_ACREEDOR'
+ end
+ item
+ Name = 'NOMBRE_PRESENTADOR'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'Presentador'
+ DictionaryEntry = 'EmpresasDatosBanco_NOMBRE_PRESENTADOR'
+ end
+ item
+ Name = 'SUFIJO_PRESENTADOR'
+ DataType = datString
+ Size = 3
+ DisplayLabel = 'Sufijo presentador'
+ DictionaryEntry = 'EmpresasDatosBanco_SUFIJO_PRESENTADOR'
+ end
+ item
+ Name = 'NIF_CIF_PRESENTADOR'
+ DataType = datString
+ Size = 15
+ DisplayLabel = 'NIF/CIF presentador'
+ DictionaryEntry = 'EmpresasDatosBanco_NIF_CIF_PRESENTADOR'
+ end
+ item
+ Name = 'ENTIDAD_PRESENTADOR'
+ DataType = datString
+ Size = 15
+ DisplayLabel = 'C'#243'd. Entidad presentador'
+ DictionaryEntry = 'EmpresasDatosBanco_ENTIDAD_PRESENTADOR'
+ end
+ item
+ Name = 'SUCURSAL_PRESENTADOR'
+ DataType = datString
+ Size = 15
+ DisplayLabel = 'C'#243'd. sucursal presentador'
+ DictionaryEntry = 'EmpresasDatosBanco_SUCURSAL_PRESENTADOR'
end>
Params = <>
MasterMappingMode = mmWhere
diff --git a/Source/ApplicationBase/Empresas/Model/schEmpresasClient_Intf.pas b/Source/ApplicationBase/Empresas/Model/schEmpresasClient_Intf.pas
index b02d645..c9e24d4 100644
--- a/Source/ApplicationBase/Empresas/Model/schEmpresasClient_Intf.pas
+++ b/Source/ApplicationBase/Empresas/Model/schEmpresasClient_Intf.pas
@@ -9,8 +9,8 @@ const
{ Data table rules ids
Feel free to change them to something more human readable
but make sure they are unique in the context of your application }
- RID_Empresas = '{293CB9A8-A5CC-4A9C-80D0-74E9DC888BD8}';
- RID_EmpresasDatosBanco = '{DA3363E9-7834-447F-8266-B7410A41CEDB}';
+ RID_Empresas = '{62467EEF-21A5-4B49-89AB-35AE73A15515}';
+ RID_EmpresasDatosBanco = '{EA93C21F-6570-4108-B25C-512F72920134}';
{ Data table names }
nme_Empresas = 'Empresas';
@@ -88,6 +88,12 @@ const
fld_EmpresasDatosBancoSUFIJO_N58 = 'SUFIJO_N58';
fld_EmpresasDatosBancoIBAN = 'IBAN';
fld_EmpresasDatosBancoSWIFT = 'SWIFT';
+ fld_EmpresasDatosBancoSUFIJO_ACREEDOR = 'SUFIJO_ACREEDOR';
+ fld_EmpresasDatosBancoNOMBRE_PRESENTADOR = 'NOMBRE_PRESENTADOR';
+ fld_EmpresasDatosBancoSUFIJO_PRESENTADOR = 'SUFIJO_PRESENTADOR';
+ fld_EmpresasDatosBancoNIF_CIF_PRESENTADOR = 'NIF_CIF_PRESENTADOR';
+ fld_EmpresasDatosBancoENTIDAD_PRESENTADOR = 'ENTIDAD_PRESENTADOR';
+ fld_EmpresasDatosBancoSUCURSAL_PRESENTADOR = 'SUCURSAL_PRESENTADOR';
{ EmpresasDatosBanco field indexes }
idx_EmpresasDatosBancoID = 0;
@@ -101,11 +107,17 @@ const
idx_EmpresasDatosBancoSUFIJO_N58 = 8;
idx_EmpresasDatosBancoIBAN = 9;
idx_EmpresasDatosBancoSWIFT = 10;
+ idx_EmpresasDatosBancoSUFIJO_ACREEDOR = 11;
+ idx_EmpresasDatosBancoNOMBRE_PRESENTADOR = 12;
+ idx_EmpresasDatosBancoSUFIJO_PRESENTADOR = 13;
+ idx_EmpresasDatosBancoNIF_CIF_PRESENTADOR = 14;
+ idx_EmpresasDatosBancoENTIDAD_PRESENTADOR = 15;
+ idx_EmpresasDatosBancoSUCURSAL_PRESENTADOR = 16;
type
{ IEmpresas }
IEmpresas = interface(IDAStronglyTypedDataTable)
- ['{A0B6BA3C-6931-4E7C-94B1-4E916B0F6E1D}']
+ ['{81B08C9A-BF70-4385-BDA7-302F3F2075B3}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -464,7 +476,7 @@ type
{ IEmpresasDatosBanco }
IEmpresasDatosBanco = interface(IDAStronglyTypedDataTable)
- ['{AB33F3C2-E3BB-41C1-AC47-543080C0A67B}']
+ ['{75E6F351-83DD-4C64-A708-CBED48F69C95}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -510,6 +522,30 @@ type
procedure SetSWIFTValue(const aValue: String);
function GetSWIFTIsNull: Boolean;
procedure SetSWIFTIsNull(const aValue: Boolean);
+ function GetSUFIJO_ACREEDORValue: String;
+ procedure SetSUFIJO_ACREEDORValue(const aValue: String);
+ function GetSUFIJO_ACREEDORIsNull: Boolean;
+ procedure SetSUFIJO_ACREEDORIsNull(const aValue: Boolean);
+ function GetNOMBRE_PRESENTADORValue: String;
+ procedure SetNOMBRE_PRESENTADORValue(const aValue: String);
+ function GetNOMBRE_PRESENTADORIsNull: Boolean;
+ procedure SetNOMBRE_PRESENTADORIsNull(const aValue: Boolean);
+ function GetSUFIJO_PRESENTADORValue: String;
+ procedure SetSUFIJO_PRESENTADORValue(const aValue: String);
+ function GetSUFIJO_PRESENTADORIsNull: Boolean;
+ procedure SetSUFIJO_PRESENTADORIsNull(const aValue: Boolean);
+ function GetNIF_CIF_PRESENTADORValue: String;
+ procedure SetNIF_CIF_PRESENTADORValue(const aValue: String);
+ function GetNIF_CIF_PRESENTADORIsNull: Boolean;
+ procedure SetNIF_CIF_PRESENTADORIsNull(const aValue: Boolean);
+ function GetENTIDAD_PRESENTADORValue: String;
+ procedure SetENTIDAD_PRESENTADORValue(const aValue: String);
+ function GetENTIDAD_PRESENTADORIsNull: Boolean;
+ procedure SetENTIDAD_PRESENTADORIsNull(const aValue: Boolean);
+ function GetSUCURSAL_PRESENTADORValue: String;
+ procedure SetSUCURSAL_PRESENTADORValue(const aValue: String);
+ function GetSUCURSAL_PRESENTADORIsNull: Boolean;
+ procedure SetSUCURSAL_PRESENTADORIsNull(const aValue: Boolean);
{ Properties }
@@ -535,6 +571,18 @@ type
property IBANIsNull: Boolean read GetIBANIsNull write SetIBANIsNull;
property SWIFT: String read GetSWIFTValue write SetSWIFTValue;
property SWIFTIsNull: Boolean read GetSWIFTIsNull write SetSWIFTIsNull;
+ property SUFIJO_ACREEDOR: String read GetSUFIJO_ACREEDORValue write SetSUFIJO_ACREEDORValue;
+ property SUFIJO_ACREEDORIsNull: Boolean read GetSUFIJO_ACREEDORIsNull write SetSUFIJO_ACREEDORIsNull;
+ property NOMBRE_PRESENTADOR: String read GetNOMBRE_PRESENTADORValue write SetNOMBRE_PRESENTADORValue;
+ property NOMBRE_PRESENTADORIsNull: Boolean read GetNOMBRE_PRESENTADORIsNull write SetNOMBRE_PRESENTADORIsNull;
+ property SUFIJO_PRESENTADOR: String read GetSUFIJO_PRESENTADORValue write SetSUFIJO_PRESENTADORValue;
+ property SUFIJO_PRESENTADORIsNull: Boolean read GetSUFIJO_PRESENTADORIsNull write SetSUFIJO_PRESENTADORIsNull;
+ property NIF_CIF_PRESENTADOR: String read GetNIF_CIF_PRESENTADORValue write SetNIF_CIF_PRESENTADORValue;
+ property NIF_CIF_PRESENTADORIsNull: Boolean read GetNIF_CIF_PRESENTADORIsNull write SetNIF_CIF_PRESENTADORIsNull;
+ property ENTIDAD_PRESENTADOR: String read GetENTIDAD_PRESENTADORValue write SetENTIDAD_PRESENTADORValue;
+ property ENTIDAD_PRESENTADORIsNull: Boolean read GetENTIDAD_PRESENTADORIsNull write SetENTIDAD_PRESENTADORIsNull;
+ property SUCURSAL_PRESENTADOR: String read GetSUCURSAL_PRESENTADORValue write SetSUCURSAL_PRESENTADORValue;
+ property SUCURSAL_PRESENTADORIsNull: Boolean read GetSUCURSAL_PRESENTADORIsNull write SetSUCURSAL_PRESENTADORIsNull;
end;
{ TEmpresasDatosBancoDataTableRules }
@@ -586,6 +634,30 @@ type
procedure SetSWIFTValue(const aValue: String); virtual;
function GetSWIFTIsNull: Boolean; virtual;
procedure SetSWIFTIsNull(const aValue: Boolean); virtual;
+ function GetSUFIJO_ACREEDORValue: String; virtual;
+ procedure SetSUFIJO_ACREEDORValue(const aValue: String); virtual;
+ function GetSUFIJO_ACREEDORIsNull: Boolean; virtual;
+ procedure SetSUFIJO_ACREEDORIsNull(const aValue: Boolean); virtual;
+ function GetNOMBRE_PRESENTADORValue: String; virtual;
+ procedure SetNOMBRE_PRESENTADORValue(const aValue: String); virtual;
+ function GetNOMBRE_PRESENTADORIsNull: Boolean; virtual;
+ procedure SetNOMBRE_PRESENTADORIsNull(const aValue: Boolean); virtual;
+ function GetSUFIJO_PRESENTADORValue: String; virtual;
+ procedure SetSUFIJO_PRESENTADORValue(const aValue: String); virtual;
+ function GetSUFIJO_PRESENTADORIsNull: Boolean; virtual;
+ procedure SetSUFIJO_PRESENTADORIsNull(const aValue: Boolean); virtual;
+ function GetNIF_CIF_PRESENTADORValue: String; virtual;
+ procedure SetNIF_CIF_PRESENTADORValue(const aValue: String); virtual;
+ function GetNIF_CIF_PRESENTADORIsNull: Boolean; virtual;
+ procedure SetNIF_CIF_PRESENTADORIsNull(const aValue: Boolean); virtual;
+ function GetENTIDAD_PRESENTADORValue: String; virtual;
+ procedure SetENTIDAD_PRESENTADORValue(const aValue: String); virtual;
+ function GetENTIDAD_PRESENTADORIsNull: Boolean; virtual;
+ procedure SetENTIDAD_PRESENTADORIsNull(const aValue: Boolean); virtual;
+ function GetSUCURSAL_PRESENTADORValue: String; virtual;
+ procedure SetSUCURSAL_PRESENTADORValue(const aValue: String); virtual;
+ function GetSUCURSAL_PRESENTADORIsNull: Boolean; virtual;
+ procedure SetSUCURSAL_PRESENTADORIsNull(const aValue: Boolean); virtual;
{ Properties }
property ID: Integer read GetIDValue write SetIDValue;
@@ -610,6 +682,18 @@ type
property IBANIsNull: Boolean read GetIBANIsNull write SetIBANIsNull;
property SWIFT: String read GetSWIFTValue write SetSWIFTValue;
property SWIFTIsNull: Boolean read GetSWIFTIsNull write SetSWIFTIsNull;
+ property SUFIJO_ACREEDOR: String read GetSUFIJO_ACREEDORValue write SetSUFIJO_ACREEDORValue;
+ property SUFIJO_ACREEDORIsNull: Boolean read GetSUFIJO_ACREEDORIsNull write SetSUFIJO_ACREEDORIsNull;
+ property NOMBRE_PRESENTADOR: String read GetNOMBRE_PRESENTADORValue write SetNOMBRE_PRESENTADORValue;
+ property NOMBRE_PRESENTADORIsNull: Boolean read GetNOMBRE_PRESENTADORIsNull write SetNOMBRE_PRESENTADORIsNull;
+ property SUFIJO_PRESENTADOR: String read GetSUFIJO_PRESENTADORValue write SetSUFIJO_PRESENTADORValue;
+ property SUFIJO_PRESENTADORIsNull: Boolean read GetSUFIJO_PRESENTADORIsNull write SetSUFIJO_PRESENTADORIsNull;
+ property NIF_CIF_PRESENTADOR: String read GetNIF_CIF_PRESENTADORValue write SetNIF_CIF_PRESENTADORValue;
+ property NIF_CIF_PRESENTADORIsNull: Boolean read GetNIF_CIF_PRESENTADORIsNull write SetNIF_CIF_PRESENTADORIsNull;
+ property ENTIDAD_PRESENTADOR: String read GetENTIDAD_PRESENTADORValue write SetENTIDAD_PRESENTADORValue;
+ property ENTIDAD_PRESENTADORIsNull: Boolean read GetENTIDAD_PRESENTADORIsNull write SetENTIDAD_PRESENTADORIsNull;
+ property SUCURSAL_PRESENTADOR: String read GetSUCURSAL_PRESENTADORValue write SetSUCURSAL_PRESENTADORValue;
+ property SUCURSAL_PRESENTADORIsNull: Boolean read GetSUCURSAL_PRESENTADORIsNull write SetSUCURSAL_PRESENTADORIsNull;
public
constructor Create(aDataTable: TDADataTable); override;
@@ -1480,6 +1564,132 @@ begin
DataTable.Fields[idx_EmpresasDatosBancoSWIFT].AsVariant := Null;
end;
+function TEmpresasDatosBancoDataTableRules.GetSUFIJO_ACREEDORValue: String;
+begin
+ result := DataTable.Fields[idx_EmpresasDatosBancoSUFIJO_ACREEDOR].AsString;
+end;
+
+procedure TEmpresasDatosBancoDataTableRules.SetSUFIJO_ACREEDORValue(const aValue: String);
+begin
+ DataTable.Fields[idx_EmpresasDatosBancoSUFIJO_ACREEDOR].AsString := aValue;
+end;
+
+function TEmpresasDatosBancoDataTableRules.GetSUFIJO_ACREEDORIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_EmpresasDatosBancoSUFIJO_ACREEDOR].IsNull;
+end;
+
+procedure TEmpresasDatosBancoDataTableRules.SetSUFIJO_ACREEDORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_EmpresasDatosBancoSUFIJO_ACREEDOR].AsVariant := Null;
+end;
+
+function TEmpresasDatosBancoDataTableRules.GetNOMBRE_PRESENTADORValue: String;
+begin
+ result := DataTable.Fields[idx_EmpresasDatosBancoNOMBRE_PRESENTADOR].AsString;
+end;
+
+procedure TEmpresasDatosBancoDataTableRules.SetNOMBRE_PRESENTADORValue(const aValue: String);
+begin
+ DataTable.Fields[idx_EmpresasDatosBancoNOMBRE_PRESENTADOR].AsString := aValue;
+end;
+
+function TEmpresasDatosBancoDataTableRules.GetNOMBRE_PRESENTADORIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_EmpresasDatosBancoNOMBRE_PRESENTADOR].IsNull;
+end;
+
+procedure TEmpresasDatosBancoDataTableRules.SetNOMBRE_PRESENTADORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_EmpresasDatosBancoNOMBRE_PRESENTADOR].AsVariant := Null;
+end;
+
+function TEmpresasDatosBancoDataTableRules.GetSUFIJO_PRESENTADORValue: String;
+begin
+ result := DataTable.Fields[idx_EmpresasDatosBancoSUFIJO_PRESENTADOR].AsString;
+end;
+
+procedure TEmpresasDatosBancoDataTableRules.SetSUFIJO_PRESENTADORValue(const aValue: String);
+begin
+ DataTable.Fields[idx_EmpresasDatosBancoSUFIJO_PRESENTADOR].AsString := aValue;
+end;
+
+function TEmpresasDatosBancoDataTableRules.GetSUFIJO_PRESENTADORIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_EmpresasDatosBancoSUFIJO_PRESENTADOR].IsNull;
+end;
+
+procedure TEmpresasDatosBancoDataTableRules.SetSUFIJO_PRESENTADORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_EmpresasDatosBancoSUFIJO_PRESENTADOR].AsVariant := Null;
+end;
+
+function TEmpresasDatosBancoDataTableRules.GetNIF_CIF_PRESENTADORValue: String;
+begin
+ result := DataTable.Fields[idx_EmpresasDatosBancoNIF_CIF_PRESENTADOR].AsString;
+end;
+
+procedure TEmpresasDatosBancoDataTableRules.SetNIF_CIF_PRESENTADORValue(const aValue: String);
+begin
+ DataTable.Fields[idx_EmpresasDatosBancoNIF_CIF_PRESENTADOR].AsString := aValue;
+end;
+
+function TEmpresasDatosBancoDataTableRules.GetNIF_CIF_PRESENTADORIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_EmpresasDatosBancoNIF_CIF_PRESENTADOR].IsNull;
+end;
+
+procedure TEmpresasDatosBancoDataTableRules.SetNIF_CIF_PRESENTADORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_EmpresasDatosBancoNIF_CIF_PRESENTADOR].AsVariant := Null;
+end;
+
+function TEmpresasDatosBancoDataTableRules.GetENTIDAD_PRESENTADORValue: String;
+begin
+ result := DataTable.Fields[idx_EmpresasDatosBancoENTIDAD_PRESENTADOR].AsString;
+end;
+
+procedure TEmpresasDatosBancoDataTableRules.SetENTIDAD_PRESENTADORValue(const aValue: String);
+begin
+ DataTable.Fields[idx_EmpresasDatosBancoENTIDAD_PRESENTADOR].AsString := aValue;
+end;
+
+function TEmpresasDatosBancoDataTableRules.GetENTIDAD_PRESENTADORIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_EmpresasDatosBancoENTIDAD_PRESENTADOR].IsNull;
+end;
+
+procedure TEmpresasDatosBancoDataTableRules.SetENTIDAD_PRESENTADORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_EmpresasDatosBancoENTIDAD_PRESENTADOR].AsVariant := Null;
+end;
+
+function TEmpresasDatosBancoDataTableRules.GetSUCURSAL_PRESENTADORValue: String;
+begin
+ result := DataTable.Fields[idx_EmpresasDatosBancoSUCURSAL_PRESENTADOR].AsString;
+end;
+
+procedure TEmpresasDatosBancoDataTableRules.SetSUCURSAL_PRESENTADORValue(const aValue: String);
+begin
+ DataTable.Fields[idx_EmpresasDatosBancoSUCURSAL_PRESENTADOR].AsString := aValue;
+end;
+
+function TEmpresasDatosBancoDataTableRules.GetSUCURSAL_PRESENTADORIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_EmpresasDatosBancoSUCURSAL_PRESENTADOR].IsNull;
+end;
+
+procedure TEmpresasDatosBancoDataTableRules.SetSUCURSAL_PRESENTADORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_EmpresasDatosBancoSUCURSAL_PRESENTADOR].AsVariant := Null;
+end;
+
initialization
RegisterDataTableRules(RID_Empresas, TEmpresasDataTableRules);
diff --git a/Source/ApplicationBase/Empresas/Model/schEmpresasServer_Intf.pas b/Source/ApplicationBase/Empresas/Model/schEmpresasServer_Intf.pas
index 0f31fa1..8049918 100644
--- a/Source/ApplicationBase/Empresas/Model/schEmpresasServer_Intf.pas
+++ b/Source/ApplicationBase/Empresas/Model/schEmpresasServer_Intf.pas
@@ -9,13 +9,13 @@ const
{ Delta rules ids
Feel free to change them to something more human readable
but make sure they are unique in the context of your application }
- RID_EmpresasDelta = '{78465C96-13EC-4CAE-806F-50EFEE766C85}';
- RID_EmpresasDatosBancoDelta = '{E4194A47-772D-40BC-8DF0-9D4C7AFDEC77}';
+ RID_EmpresasDelta = '{415F9B21-75FF-4944-BC51-36EE7893F213}';
+ RID_EmpresasDatosBancoDelta = '{89191BEE-980B-4F20-BC43-492662CF8779}';
type
{ IEmpresasDelta }
IEmpresasDelta = interface(IEmpresas)
- ['{78465C96-13EC-4CAE-806F-50EFEE766C85}']
+ ['{415F9B21-75FF-4944-BC51-36EE7893F213}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldNIF_CIFValue : String;
@@ -375,7 +375,7 @@ type
{ IEmpresasDatosBancoDelta }
IEmpresasDatosBancoDelta = interface(IEmpresasDatosBanco)
- ['{E4194A47-772D-40BC-8DF0-9D4C7AFDEC77}']
+ ['{89191BEE-980B-4F20-BC43-492662CF8779}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer;
@@ -388,6 +388,12 @@ type
function GetOldSUFIJO_N58Value : String;
function GetOldIBANValue : String;
function GetOldSWIFTValue : String;
+ function GetOldSUFIJO_ACREEDORValue : String;
+ function GetOldNOMBRE_PRESENTADORValue : String;
+ function GetOldSUFIJO_PRESENTADORValue : String;
+ function GetOldNIF_CIF_PRESENTADORValue : String;
+ function GetOldENTIDAD_PRESENTADORValue : String;
+ function GetOldSUCURSAL_PRESENTADORValue : String;
{ Properties }
property OldID : Integer read GetOldIDValue;
@@ -401,6 +407,12 @@ type
property OldSUFIJO_N58 : String read GetOldSUFIJO_N58Value;
property OldIBAN : String read GetOldIBANValue;
property OldSWIFT : String read GetOldSWIFTValue;
+ property OldSUFIJO_ACREEDOR : String read GetOldSUFIJO_ACREEDORValue;
+ property OldNOMBRE_PRESENTADOR : String read GetOldNOMBRE_PRESENTADORValue;
+ property OldSUFIJO_PRESENTADOR : String read GetOldSUFIJO_PRESENTADORValue;
+ property OldNIF_CIF_PRESENTADOR : String read GetOldNIF_CIF_PRESENTADORValue;
+ property OldENTIDAD_PRESENTADOR : String read GetOldENTIDAD_PRESENTADORValue;
+ property OldSUCURSAL_PRESENTADOR : String read GetOldSUCURSAL_PRESENTADORValue;
end;
{ TEmpresasDatosBancoBusinessProcessorRules }
@@ -474,6 +486,42 @@ type
function GetOldSWIFTIsNull: Boolean; virtual;
procedure SetSWIFTValue(const aValue: String); virtual;
procedure SetSWIFTIsNull(const aValue: Boolean); virtual;
+ function GetSUFIJO_ACREEDORValue: String; virtual;
+ function GetSUFIJO_ACREEDORIsNull: Boolean; virtual;
+ function GetOldSUFIJO_ACREEDORValue: String; virtual;
+ function GetOldSUFIJO_ACREEDORIsNull: Boolean; virtual;
+ procedure SetSUFIJO_ACREEDORValue(const aValue: String); virtual;
+ procedure SetSUFIJO_ACREEDORIsNull(const aValue: Boolean); virtual;
+ function GetNOMBRE_PRESENTADORValue: String; virtual;
+ function GetNOMBRE_PRESENTADORIsNull: Boolean; virtual;
+ function GetOldNOMBRE_PRESENTADORValue: String; virtual;
+ function GetOldNOMBRE_PRESENTADORIsNull: Boolean; virtual;
+ procedure SetNOMBRE_PRESENTADORValue(const aValue: String); virtual;
+ procedure SetNOMBRE_PRESENTADORIsNull(const aValue: Boolean); virtual;
+ function GetSUFIJO_PRESENTADORValue: String; virtual;
+ function GetSUFIJO_PRESENTADORIsNull: Boolean; virtual;
+ function GetOldSUFIJO_PRESENTADORValue: String; virtual;
+ function GetOldSUFIJO_PRESENTADORIsNull: Boolean; virtual;
+ procedure SetSUFIJO_PRESENTADORValue(const aValue: String); virtual;
+ procedure SetSUFIJO_PRESENTADORIsNull(const aValue: Boolean); virtual;
+ function GetNIF_CIF_PRESENTADORValue: String; virtual;
+ function GetNIF_CIF_PRESENTADORIsNull: Boolean; virtual;
+ function GetOldNIF_CIF_PRESENTADORValue: String; virtual;
+ function GetOldNIF_CIF_PRESENTADORIsNull: Boolean; virtual;
+ procedure SetNIF_CIF_PRESENTADORValue(const aValue: String); virtual;
+ procedure SetNIF_CIF_PRESENTADORIsNull(const aValue: Boolean); virtual;
+ function GetENTIDAD_PRESENTADORValue: String; virtual;
+ function GetENTIDAD_PRESENTADORIsNull: Boolean; virtual;
+ function GetOldENTIDAD_PRESENTADORValue: String; virtual;
+ function GetOldENTIDAD_PRESENTADORIsNull: Boolean; virtual;
+ procedure SetENTIDAD_PRESENTADORValue(const aValue: String); virtual;
+ procedure SetENTIDAD_PRESENTADORIsNull(const aValue: Boolean); virtual;
+ function GetSUCURSAL_PRESENTADORValue: String; virtual;
+ function GetSUCURSAL_PRESENTADORIsNull: Boolean; virtual;
+ function GetOldSUCURSAL_PRESENTADORValue: String; virtual;
+ function GetOldSUCURSAL_PRESENTADORIsNull: Boolean; virtual;
+ procedure SetSUCURSAL_PRESENTADORValue(const aValue: String); virtual;
+ procedure SetSUCURSAL_PRESENTADORIsNull(const aValue: Boolean); virtual;
{ Properties }
property ID : Integer read GetIDValue write SetIDValue;
@@ -520,6 +568,30 @@ type
property SWIFTIsNull : Boolean read GetSWIFTIsNull write SetSWIFTIsNull;
property OldSWIFT : String read GetOldSWIFTValue;
property OldSWIFTIsNull : Boolean read GetOldSWIFTIsNull;
+ property SUFIJO_ACREEDOR : String read GetSUFIJO_ACREEDORValue write SetSUFIJO_ACREEDORValue;
+ property SUFIJO_ACREEDORIsNull : Boolean read GetSUFIJO_ACREEDORIsNull write SetSUFIJO_ACREEDORIsNull;
+ property OldSUFIJO_ACREEDOR : String read GetOldSUFIJO_ACREEDORValue;
+ property OldSUFIJO_ACREEDORIsNull : Boolean read GetOldSUFIJO_ACREEDORIsNull;
+ property NOMBRE_PRESENTADOR : String read GetNOMBRE_PRESENTADORValue write SetNOMBRE_PRESENTADORValue;
+ property NOMBRE_PRESENTADORIsNull : Boolean read GetNOMBRE_PRESENTADORIsNull write SetNOMBRE_PRESENTADORIsNull;
+ property OldNOMBRE_PRESENTADOR : String read GetOldNOMBRE_PRESENTADORValue;
+ property OldNOMBRE_PRESENTADORIsNull : Boolean read GetOldNOMBRE_PRESENTADORIsNull;
+ property SUFIJO_PRESENTADOR : String read GetSUFIJO_PRESENTADORValue write SetSUFIJO_PRESENTADORValue;
+ property SUFIJO_PRESENTADORIsNull : Boolean read GetSUFIJO_PRESENTADORIsNull write SetSUFIJO_PRESENTADORIsNull;
+ property OldSUFIJO_PRESENTADOR : String read GetOldSUFIJO_PRESENTADORValue;
+ property OldSUFIJO_PRESENTADORIsNull : Boolean read GetOldSUFIJO_PRESENTADORIsNull;
+ property NIF_CIF_PRESENTADOR : String read GetNIF_CIF_PRESENTADORValue write SetNIF_CIF_PRESENTADORValue;
+ property NIF_CIF_PRESENTADORIsNull : Boolean read GetNIF_CIF_PRESENTADORIsNull write SetNIF_CIF_PRESENTADORIsNull;
+ property OldNIF_CIF_PRESENTADOR : String read GetOldNIF_CIF_PRESENTADORValue;
+ property OldNIF_CIF_PRESENTADORIsNull : Boolean read GetOldNIF_CIF_PRESENTADORIsNull;
+ property ENTIDAD_PRESENTADOR : String read GetENTIDAD_PRESENTADORValue write SetENTIDAD_PRESENTADORValue;
+ property ENTIDAD_PRESENTADORIsNull : Boolean read GetENTIDAD_PRESENTADORIsNull write SetENTIDAD_PRESENTADORIsNull;
+ property OldENTIDAD_PRESENTADOR : String read GetOldENTIDAD_PRESENTADORValue;
+ property OldENTIDAD_PRESENTADORIsNull : Boolean read GetOldENTIDAD_PRESENTADORIsNull;
+ property SUCURSAL_PRESENTADOR : String read GetSUCURSAL_PRESENTADORValue write SetSUCURSAL_PRESENTADORValue;
+ property SUCURSAL_PRESENTADORIsNull : Boolean read GetSUCURSAL_PRESENTADORIsNull write SetSUCURSAL_PRESENTADORIsNull;
+ property OldSUCURSAL_PRESENTADOR : String read GetOldSUCURSAL_PRESENTADORValue;
+ property OldSUCURSAL_PRESENTADORIsNull : Boolean read GetOldSUCURSAL_PRESENTADORIsNull;
public
constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
@@ -1783,6 +1855,192 @@ begin
BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSWIFT] := Null;
end;
+function TEmpresasDatosBancoBusinessProcessorRules.GetSUFIJO_ACREEDORValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSUFIJO_ACREEDOR];
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetSUFIJO_ACREEDORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSUFIJO_ACREEDOR]);
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetOldSUFIJO_ACREEDORValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoSUFIJO_ACREEDOR];
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetOldSUFIJO_ACREEDORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoSUFIJO_ACREEDOR]);
+end;
+
+procedure TEmpresasDatosBancoBusinessProcessorRules.SetSUFIJO_ACREEDORValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSUFIJO_ACREEDOR] := aValue;
+end;
+
+procedure TEmpresasDatosBancoBusinessProcessorRules.SetSUFIJO_ACREEDORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSUFIJO_ACREEDOR] := Null;
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetNOMBRE_PRESENTADORValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoNOMBRE_PRESENTADOR];
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetNOMBRE_PRESENTADORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoNOMBRE_PRESENTADOR]);
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetOldNOMBRE_PRESENTADORValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoNOMBRE_PRESENTADOR];
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetOldNOMBRE_PRESENTADORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoNOMBRE_PRESENTADOR]);
+end;
+
+procedure TEmpresasDatosBancoBusinessProcessorRules.SetNOMBRE_PRESENTADORValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoNOMBRE_PRESENTADOR] := aValue;
+end;
+
+procedure TEmpresasDatosBancoBusinessProcessorRules.SetNOMBRE_PRESENTADORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoNOMBRE_PRESENTADOR] := Null;
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetSUFIJO_PRESENTADORValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSUFIJO_PRESENTADOR];
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetSUFIJO_PRESENTADORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSUFIJO_PRESENTADOR]);
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetOldSUFIJO_PRESENTADORValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoSUFIJO_PRESENTADOR];
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetOldSUFIJO_PRESENTADORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoSUFIJO_PRESENTADOR]);
+end;
+
+procedure TEmpresasDatosBancoBusinessProcessorRules.SetSUFIJO_PRESENTADORValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSUFIJO_PRESENTADOR] := aValue;
+end;
+
+procedure TEmpresasDatosBancoBusinessProcessorRules.SetSUFIJO_PRESENTADORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSUFIJO_PRESENTADOR] := Null;
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetNIF_CIF_PRESENTADORValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoNIF_CIF_PRESENTADOR];
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetNIF_CIF_PRESENTADORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoNIF_CIF_PRESENTADOR]);
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetOldNIF_CIF_PRESENTADORValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoNIF_CIF_PRESENTADOR];
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetOldNIF_CIF_PRESENTADORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoNIF_CIF_PRESENTADOR]);
+end;
+
+procedure TEmpresasDatosBancoBusinessProcessorRules.SetNIF_CIF_PRESENTADORValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoNIF_CIF_PRESENTADOR] := aValue;
+end;
+
+procedure TEmpresasDatosBancoBusinessProcessorRules.SetNIF_CIF_PRESENTADORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoNIF_CIF_PRESENTADOR] := Null;
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetENTIDAD_PRESENTADORValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoENTIDAD_PRESENTADOR];
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetENTIDAD_PRESENTADORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoENTIDAD_PRESENTADOR]);
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetOldENTIDAD_PRESENTADORValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoENTIDAD_PRESENTADOR];
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetOldENTIDAD_PRESENTADORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoENTIDAD_PRESENTADOR]);
+end;
+
+procedure TEmpresasDatosBancoBusinessProcessorRules.SetENTIDAD_PRESENTADORValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoENTIDAD_PRESENTADOR] := aValue;
+end;
+
+procedure TEmpresasDatosBancoBusinessProcessorRules.SetENTIDAD_PRESENTADORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoENTIDAD_PRESENTADOR] := Null;
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetSUCURSAL_PRESENTADORValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSUCURSAL_PRESENTADOR];
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetSUCURSAL_PRESENTADORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSUCURSAL_PRESENTADOR]);
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetOldSUCURSAL_PRESENTADORValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoSUCURSAL_PRESENTADOR];
+end;
+
+function TEmpresasDatosBancoBusinessProcessorRules.GetOldSUCURSAL_PRESENTADORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoSUCURSAL_PRESENTADOR]);
+end;
+
+procedure TEmpresasDatosBancoBusinessProcessorRules.SetSUCURSAL_PRESENTADORValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSUCURSAL_PRESENTADOR] := aValue;
+end;
+
+procedure TEmpresasDatosBancoBusinessProcessorRules.SetSUCURSAL_PRESENTADORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSUCURSAL_PRESENTADOR] := Null;
+end;
+
initialization
RegisterBusinessProcessorRules(RID_EmpresasDelta, TEmpresasBusinessProcessorRules);
diff --git a/Source/ApplicationBase/Empresas/Servidor/srvEmpresas_Impl.dfm b/Source/ApplicationBase/Empresas/Servidor/srvEmpresas_Impl.dfm
index 901715d..20367d2 100644
--- a/Source/ApplicationBase/Empresas/Servidor/srvEmpresas_Impl.dfm
+++ b/Source/ApplicationBase/Empresas/Servidor/srvEmpresas_Impl.dfm
@@ -354,6 +354,30 @@ object srvEmpresas: TsrvEmpresas
item
DatasetField = 'SWIFT'
TableField = 'SWIFT'
+ end
+ item
+ DatasetField = 'SUFIJO_ACREEDOR'
+ TableField = 'SUFIJO_ACREEDOR'
+ end
+ item
+ DatasetField = 'NOMBRE_PRESENTADOR'
+ TableField = 'NOMBRE_PRESENTADOR'
+ end
+ item
+ DatasetField = 'SUFIJO_PRESENTADOR'
+ TableField = 'SUFIJO_PRESENTADOR'
+ end
+ item
+ DatasetField = 'NIF_CIF_PRESENTADOR'
+ TableField = 'NIF_CIF_PRESENTADOR'
+ end
+ item
+ DatasetField = 'ENTIDAD_PRESENTADOR'
+ TableField = 'ENTIDAD_PRESENTADOR'
+ end
+ item
+ DatasetField = 'SUCURSAL_PRESENTADOR'
+ TableField = 'SUCURSAL_PRESENTADOR'
end>
end>
Name = 'EmpresasDatosBanco'
@@ -417,11 +441,49 @@ object srvEmpresas: TsrvEmpresas
Name = 'IBAN'
DataType = datString
Size = 255
+ DictionaryEntry = 'EmpresasDatosBanco_IBAN'
end
item
Name = 'SWIFT'
DataType = datString
Size = 255
+ DictionaryEntry = 'EmpresasDatosBanco_SWIFT'
+ end
+ item
+ Name = 'SUFIJO_ACREEDOR'
+ DataType = datString
+ Size = 3
+ DictionaryEntry = 'EmpresasDatosBanco_SUFIJO_ACREEDOR'
+ end
+ item
+ Name = 'NOMBRE_PRESENTADOR'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'EmpresasDatosBanco_NOMBRE_PRESENTADOR'
+ end
+ item
+ Name = 'SUFIJO_PRESENTADOR'
+ DataType = datString
+ Size = 3
+ DictionaryEntry = 'EmpresasDatosBanco_SUFIJO_PRESENTADOR'
+ end
+ item
+ Name = 'NIF_CIF_PRESENTADOR'
+ DataType = datString
+ Size = 15
+ DictionaryEntry = 'EmpresasDatosBanco_NIF_CIF_PRESENTADOR'
+ end
+ item
+ Name = 'ENTIDAD_PRESENTADOR'
+ DataType = datString
+ Size = 15
+ DictionaryEntry = 'EmpresasDatosBanco_ENTIDAD_PRESENTADOR'
+ end
+ item
+ Name = 'SUCURSAL_PRESENTADOR'
+ DataType = datString
+ Size = 15
+ DictionaryEntry = 'EmpresasDatosBanco_SUCURSAL_PRESENTADOR'
end>
end>
JoinDataTables = <>
@@ -1114,6 +1176,53 @@ object srvEmpresas: TsrvEmpresas
item
Name = 'Empresas_ID_ALMACEN'
DataType = datSmallInt
+ end
+ item
+ Name = 'EmpresasDatosBanco_SUFIJO_ACREEDOR'
+ DataType = datString
+ Size = 3
+ DisplayLabel = 'Sufijo acreedor'
+ end
+ item
+ Name = 'EmpresasDatosBanco_IBAN'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'EmpresasDatosBanco_SWIFT'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'BIC'
+ end
+ item
+ Name = 'EmpresasDatosBanco_NOMBRE_PRESENTADOR'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'Presentador'
+ end
+ item
+ Name = 'EmpresasDatosBanco_SUFIJO_PRESENTADOR'
+ DataType = datString
+ Size = 3
+ DisplayLabel = 'Sufijo presentador'
+ end
+ item
+ Name = 'EmpresasDatosBanco_NIF_CIF_PRESENTADOR'
+ DataType = datString
+ Size = 15
+ DisplayLabel = 'NIF/CIF presentador'
+ end
+ item
+ Name = 'EmpresasDatosBanco_ENTIDAD_PRESENTADOR'
+ DataType = datString
+ Size = 15
+ DisplayLabel = 'C'#243'd. Entidad presentador'
+ end
+ item
+ Name = 'EmpresasDatosBanco_SUCURSAL_PRESENTADOR'
+ DataType = datString
+ Size = 15
+ DisplayLabel = 'C'#243'd. sucursal presentador'
end>
Left = 158
Top = 22
@@ -1123,9 +1232,9 @@ object srvEmpresas: TsrvEmpresas
Top = 90
DiagramData =
''#13#10' '#13#10' '#13#10' '#13#10' '#13#10''#13#10
+ 'idth="400" Height="300">'#13#10' '#13#10' '#13#10' '#13#10''#13#10
end
object DABin2DataStreamer: TDABin2DataStreamer
Left = 48
diff --git a/Source/ApplicationBase/Empresas/Views/uEditorDatosBancariosEmpresa.dfm b/Source/ApplicationBase/Empresas/Views/uEditorDatosBancariosEmpresa.dfm
index 2aa9e1d..75c60fa 100644
--- a/Source/ApplicationBase/Empresas/Views/uEditorDatosBancariosEmpresa.dfm
+++ b/Source/ApplicationBase/Empresas/Views/uEditorDatosBancariosEmpresa.dfm
@@ -3,7 +3,7 @@ object fEditorDatosBancariosEmpresa: TfEditorDatosBancariosEmpresa
Top = 108
BorderStyle = bsDialog
Caption = 'Cambio de datos bancarios'
- ClientHeight = 414
+ ClientHeight = 469
ClientWidth = 449
Color = clBtnFace
ParentFont = True
@@ -11,7 +11,7 @@ object fEditorDatosBancariosEmpresa: TfEditorDatosBancariosEmpresa
Position = poOwnerFormCenter
DesignSize = (
449
- 414)
+ 469)
PixelsPerInch = 96
TextHeight = 13
object OKBtn: TButton
@@ -44,11 +44,11 @@ object fEditorDatosBancariosEmpresa: TfEditorDatosBancariosEmpresa
TabOrder = 2
object Label5: TLabel
Left = 12
- Top = 31
- Width = 77
- Height = 13
+ Top = 30
+ Width = 91
+ Height = 14
AutoSize = False
- Caption = 'Banco:'
+ Caption = 'Nombre del banco:'
end
object Label2: TLabel
Left = 12
@@ -69,10 +69,10 @@ object fEditorDatosBancariosEmpresa: TfEditorDatosBancariosEmpresa
object Label4: TLabel
Left = 12
Top = 120
- Width = 77
+ Width = 91
Height = 13
AutoSize = False
- Caption = 'DC:'
+ Caption = 'D'#237'gito de control:'
end
object Label6: TLabel
Left = 11
@@ -96,12 +96,12 @@ object fEditorDatosBancariosEmpresa: TfEditorDatosBancariosEmpresa
Width = 78
Height = 13
AutoSize = False
- Caption = 'SWIFT:'
+ Caption = 'BIC:'
end
object eNombre: TDBEdit
- Left = 95
+ Left = 109
Top = 28
- Width = 223
+ Width = 204
Height = 21
Color = clInfoBk
DataField = 'NOMBRE'
@@ -109,7 +109,7 @@ object fEditorDatosBancariosEmpresa: TfEditorDatosBancariosEmpresa
TabOrder = 0
end
object eCodEntidad: TDBEdit
- Left = 95
+ Left = 109
Top = 64
Width = 74
Height = 21
@@ -119,7 +119,7 @@ object fEditorDatosBancariosEmpresa: TfEditorDatosBancariosEmpresa
TabOrder = 1
end
object eCodSucursal: TDBEdit
- Left = 95
+ Left = 109
Top = 90
Width = 74
Height = 21
@@ -129,7 +129,7 @@ object fEditorDatosBancariosEmpresa: TfEditorDatosBancariosEmpresa
TabOrder = 2
end
object eDC: TDBEdit
- Left = 95
+ Left = 109
Top = 116
Width = 74
Height = 21
@@ -139,77 +139,178 @@ object fEditorDatosBancariosEmpresa: TfEditorDatosBancariosEmpresa
TabOrder = 3
end
object eCuenta: TDBEdit
- Left = 95
- Top = 142
- Width = 223
+ Left = 109
+ Top = 143
+ Width = 204
Height = 21
DataField = 'CUENTA'
DataSource = dsDatosBancarios
TabOrder = 4
end
object eSWIFT: TDBEdit
- Left = 95
+ Left = 109
Top = 196
- Width = 223
+ Width = 204
Height = 21
DataField = 'SWIFT'
DataSource = dsDatosBancarios
TabOrder = 5
end
end
- object GroupBox2: TGroupBox
+ object eIBAN: TDBEdit
+ Left = 117
+ Top = 178
+ Width = 204
+ Height = 21
+ DataField = 'IBAN'
+ DataSource = dsDatosBancarios
+ TabOrder = 3
+ end
+ object GroupBox3: TGroupBox
Left = 8
Top = 242
- Width = 329
- Height = 83
- Caption = 'Sufijos para normas CSB'
- TabOrder = 3
- Visible = False
- object Label7: TLabel
+ Width = 433
+ Height = 215
+ Caption = 'Configuraci'#243'n de norma SEPA'
+ TabOrder = 4
+ object Label10: TLabel
Left = 12
Top = 28
- Width = 77
+ Width = 102
Height = 13
AutoSize = False
- Caption = 'Norma 19:'
+ Caption = 'Sufijo del acreedor:'
end
- object Label1: TLabel
+ object Bevel4: TBevel
+ Left = 135
+ Top = 67
+ Width = 285
+ Height = 10
+ Shape = bsBottomLine
+ end
+ object Label12: TLabel
Left = 12
- Top = 55
+ Top = 68
+ Width = 117
+ Height = 13
+ AutoSize = False
+ Caption = 'Datos del presentador:'
+ end
+ object Label13: TLabel
+ Left = 200
+ Top = 28
+ Width = 221
+ Height = 13
+ AutoSize = False
+ Caption = 'N'#250'mero proporcionado por el banco.'
+ end
+ object Label11: TLabel
+ Left = 12
+ Top = 158
+ Width = 102
+ Height = 13
+ AutoSize = False
+ Caption = 'NIF/CIF:'
+ end
+ object Label14: TLabel
+ Left = 12
+ Top = 131
+ Width = 102
+ Height = 13
+ AutoSize = False
+ Caption = 'Sufijo:'
+ end
+ object Label15: TLabel
+ Left = 216
+ Top = 131
+ Width = 185
+ Height = 13
+ AutoSize = False
+ Caption = 'N'#250'mero proporcionado por el banco.'
+ end
+ object Label16: TLabel
+ Left = 12
+ Top = 102
+ Width = 91
+ Height = 14
+ AutoSize = False
+ Caption = 'Nombre:'
+ end
+ object Label17: TLabel
+ Left = 12
+ Top = 185
Width = 77
Height = 13
AutoSize = False
- Caption = 'Norma 58:'
+ Caption = 'C'#243'd. entidad:'
end
- object eNorma19: TDBEdit
- Left = 95
+ object Label18: TLabel
+ Left = 225
+ Top = 185
+ Width = 77
+ Height = 13
+ AutoSize = False
+ Caption = 'C'#243'd. sucursal:'
+ end
+ object eSufijoAcreedor: TDBEdit
+ Left = 109
Top = 24
Width = 74
Height = 21
- DataField = 'SUFIJO_N19'
+ DataField = 'SUFIJO_ACREEDOR'
DataSource = dsDatosBancarios
MaxLength = 3
TabOrder = 0
end
- object eNorma58: TDBEdit
- Left = 95
- Top = 51
- Width = 74
+ object eNIFCIFPresentador: TDBEdit
+ Left = 109
+ Top = 154
+ Width = 101
Height = 21
- DataField = 'SUFIJO_N58'
+ DataField = 'NIF_CIF_PRESENTADOR'
+ DataSource = dsDatosBancarios
+ MaxLength = 15
+ TabOrder = 3
+ end
+ object eSufijoPresentador: TDBEdit
+ Left = 109
+ Top = 127
+ Width = 101
+ Height = 21
+ DataField = 'SUFIJO_PRESENTADOR'
DataSource = dsDatosBancarios
MaxLength = 3
+ TabOrder = 2
+ end
+ object eNombrePresentador: TDBEdit
+ Left = 109
+ Top = 100
+ Width = 292
+ Height = 21
+ DataField = 'NOMBRE_PRESENTADOR'
+ DataSource = dsDatosBancarios
TabOrder = 1
end
- end
- object eIBAN: TDBEdit
- Left = 103
- Top = 177
- Width = 223
- Height = 21
- DataField = 'IBAN'
- DataSource = dsDatosBancarios
- TabOrder = 4
+ object eCodEntidadPresentador: TDBEdit
+ Left = 109
+ Top = 182
+ Width = 101
+ Height = 21
+ DataField = 'ENTIDAD_PRESENTADOR'
+ DataSource = dsDatosBancarios
+ MaxLength = 4
+ TabOrder = 4
+ end
+ object eCodSucursalPresentador: TDBEdit
+ Left = 299
+ Top = 182
+ Width = 102
+ Height = 21
+ DataField = 'SUCURSAL_PRESENTADOR'
+ DataSource = dsDatosBancarios
+ MaxLength = 4
+ TabOrder = 5
+ end
end
object dsDatosBancarios: TDADataSource
Left = 352
diff --git a/Source/ApplicationBase/Empresas/Views/uEditorDatosBancariosEmpresa.pas b/Source/ApplicationBase/Empresas/Views/uEditorDatosBancariosEmpresa.pas
index 60cac84..35e006f 100644
--- a/Source/ApplicationBase/Empresas/Views/uEditorDatosBancariosEmpresa.pas
+++ b/Source/ApplicationBase/Empresas/Views/uEditorDatosBancariosEmpresa.pas
@@ -24,15 +24,27 @@ type
eDC: TDBEdit;
Label6: TLabel;
eCuenta: TDBEdit;
- GroupBox2: TGroupBox;
- Label7: TLabel;
- eNorma19: TDBEdit;
- Label1: TLabel;
- eNorma58: TDBEdit;
eIBAN: TDBEdit;
Label8: TLabel;
eSWIFT: TDBEdit;
Label9: TLabel;
+ GroupBox3: TGroupBox;
+ Label10: TLabel;
+ eSufijoAcreedor: TDBEdit;
+ Bevel4: TBevel;
+ Label12: TLabel;
+ Label13: TLabel;
+ Label11: TLabel;
+ eNIFCIFPresentador: TDBEdit;
+ Label14: TLabel;
+ eSufijoPresentador: TDBEdit;
+ Label15: TLabel;
+ Label16: TLabel;
+ eNombrePresentador: TDBEdit;
+ Label17: TLabel;
+ eCodEntidadPresentador: TDBEdit;
+ Label18: TLabel;
+ eCodSucursalPresentador: TDBEdit;
protected
FController : IDatosBancariosEmpresaController;
FDatosBancarios: IBizEmpresasDatosBancarios;
diff --git a/Source/ApplicationBase/Empresas/Views/uEditorEmpresa.dfm b/Source/ApplicationBase/Empresas/Views/uEditorEmpresa.dfm
index a452754..913ec6e 100644
--- a/Source/ApplicationBase/Empresas/Views/uEditorEmpresa.dfm
+++ b/Source/ApplicationBase/Empresas/Views/uEditorEmpresa.dfm
@@ -22,6 +22,8 @@ inherited fEditorEmpresa: TfEditorEmpresa
inherited lblDesbloquear: TcxLabel
Left = 576
ExplicitLeft = 576
+ AnchorX = 621
+ AnchorY = 14
end
end
inherited TBXDock: TTBXDock
@@ -111,34 +113,34 @@ inherited fEditorEmpresa: TfEditorEmpresa
ExplicitWidth = 660
ExplicitHeight = 425
inherited PngSpeedButton1: TPngSpeedButton
- Left = 615
+ Left = 598
Top = 295
- ExplicitLeft = 615
+ ExplicitLeft = 598
ExplicitTop = 295
end
inherited PngSpeedButton2: TPngSpeedButton
- Left = 615
+ Left = 598
Top = 267
- ExplicitLeft = 615
+ ExplicitLeft = 598
ExplicitTop = 267
end
inherited eCalle: TcxDBTextEdit
- Top = 267
- Style.LookAndFeel.SkinName = ''
- StyleDisabled.LookAndFeel.SkinName = ''
- StyleFocused.LookAndFeel.SkinName = ''
- StyleHot.LookAndFeel.SkinName = ''
- ExplicitTop = 267
- ExplicitWidth = 234
- Width = 234
- end
- inherited eCodigoPostal: TcxDBTextEdit
Top = 294
Style.LookAndFeel.SkinName = ''
StyleDisabled.LookAndFeel.SkinName = ''
StyleFocused.LookAndFeel.SkinName = ''
StyleHot.LookAndFeel.SkinName = ''
ExplicitTop = 294
+ ExplicitWidth = 234
+ Width = 234
+ end
+ inherited eCodigoPostal: TcxDBTextEdit
+ Top = 321
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitTop = 321
end
inherited ePaginaWeb: TcxDBTextEdit
Left = 508
@@ -177,12 +179,12 @@ inherited fEditorEmpresa: TfEditorEmpresa
Width = 164
end
inherited cxDBMemo1: TcxDBMemo
- Top = 372
+ Top = 399
Style.LookAndFeel.SkinName = ''
StyleDisabled.LookAndFeel.SkinName = ''
StyleFocused.LookAndFeel.SkinName = ''
StyleHot.LookAndFeel.SkinName = ''
- ExplicitTop = 372
+ ExplicitTop = 399
ExplicitWidth = 329
ExplicitHeight = 64
Height = 64
@@ -281,39 +283,39 @@ inherited fEditorEmpresa: TfEditorEmpresa
Width = 230
end
inherited eParamMargen: TcxDBSpinEdit
- Top = 216
+ Top = 243
Style.LookAndFeel.SkinName = ''
StyleDisabled.LookAndFeel.SkinName = ''
StyleFocused.LookAndFeel.SkinName = ''
StyleHot.LookAndFeel.SkinName = ''
- ExplicitTop = 216
+ ExplicitTop = 243
end
inherited eParamTiempo: TcxDBCurrencyEdit
- Top = 216
+ Top = 243
Style.LookAndFeel.SkinName = ''
StyleDisabled.LookAndFeel.SkinName = ''
StyleFocused.LookAndFeel.SkinName = ''
StyleHot.LookAndFeel.SkinName = ''
- ExplicitTop = 216
+ ExplicitTop = 243
end
inherited cbProvincia: TcxDBComboBox
- Top = 294
- Style.LookAndFeel.SkinName = ''
- StyleDisabled.LookAndFeel.SkinName = ''
- StyleFocused.LookAndFeel.SkinName = ''
- StyleHot.LookAndFeel.SkinName = ''
- ExplicitTop = 294
- ExplicitWidth = 91
- Width = 91
- end
- inherited cbPoblacion: TcxDBComboBox
Top = 321
- Properties.OnInitPopup = nil
Style.LookAndFeel.SkinName = ''
StyleDisabled.LookAndFeel.SkinName = ''
StyleFocused.LookAndFeel.SkinName = ''
StyleHot.LookAndFeel.SkinName = ''
ExplicitTop = 321
+ ExplicitWidth = 91
+ Width = 91
+ end
+ inherited cbPoblacion: TcxDBComboBox
+ Top = 348
+ Properties.OnInitPopup = nil
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitTop = 348
ExplicitWidth = 234
Width = 234
end
@@ -337,6 +339,14 @@ inherited fEditorEmpresa: TfEditorEmpresa
ExplicitWidth = 202
Width = 202
end
+ inherited cbAlmacen: TcxComboBox
+ Top = 192
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitTop = 192
+ end
end
end
end
diff --git a/Source/Modulos/Banca electronica/Controller/BancaElectronica_controller.dpk b/Source/Modulos/Banca electronica/Controller/BancaElectronica_controller.dpk
index 4630911..dec9a44 100644
Binary files a/Source/Modulos/Banca electronica/Controller/BancaElectronica_controller.dpk and b/Source/Modulos/Banca electronica/Controller/BancaElectronica_controller.dpk differ
diff --git a/Source/Modulos/Banca electronica/Controller/BancaElectronica_controller.dproj b/Source/Modulos/Banca electronica/Controller/BancaElectronica_controller.dproj
index 1dde002..d19a7ce 100644
--- a/Source/Modulos/Banca electronica/Controller/BancaElectronica_controller.dproj
+++ b/Source/Modulos/Banca electronica/Controller/BancaElectronica_controller.dproj
@@ -53,6 +53,7 @@
+
@@ -63,6 +64,7 @@
+
diff --git a/Source/Modulos/Banca electronica/Controller/View/uIEditorExportacionNorma19SEPA.pas b/Source/Modulos/Banca electronica/Controller/View/uIEditorExportacionNorma19SEPA.pas
new file mode 100644
index 0000000..1bcd099
--- /dev/null
+++ b/Source/Modulos/Banca electronica/Controller/View/uIEditorExportacionNorma19SEPA.pas
@@ -0,0 +1,32 @@
+unit uIEditorExportacionNorma19SEPA;
+
+interface
+
+type
+ IEditorExportacionNorma19SEPA = interface
+ ['{AE5B7884-D54E-4384-821E-72A96891CC8C}']
+
+ procedure SetCodigoEntidad(const AValue: String);
+ function GetCodigoEntidad : String;
+ property CodigoEntidad : String read GetCodigoEntidad write SetCodigoEntidad;
+
+ procedure SetCodigoAgencia(const AValue: String);
+ function GetCodigoAgencia : String;
+ property CodigoAgencia : String read GetCodigoAgencia write SetCodigoAgencia;
+
+ procedure SetFechaCargo(const AValue: TDateTime);
+ function GetFechaCargo : TDateTime;
+ property FechaCargo : TDateTime read GetFechaCargo write SetFechaCargo;
+
+ procedure SetFichero(const AValue: String);
+ function GetFichero : String;
+ property Fichero : String read GetFichero write SetFichero;
+
+ function ShowModal : Integer;
+ procedure Release;
+ end;
+
+
+implementation
+
+end.
diff --git a/Source/Modulos/Banca electronica/Controller/uBancaElectronicaController.pas b/Source/Modulos/Banca electronica/Controller/uBancaElectronicaController.pas
index acbe292..18d02e8 100644
--- a/Source/Modulos/Banca electronica/Controller/uBancaElectronicaController.pas
+++ b/Source/Modulos/Banca electronica/Controller/uBancaElectronicaController.pas
@@ -26,12 +26,14 @@ unit uBancaElectronicaController;
interface
uses
- Classes, SysUtils, uDADataTable;
+ Classes, SysUtils, uDADataTable, uBizEmpresas,
+ uBizRemesasCliente;
type
IBancaElectronicaController = interface
- ['{9E37DF46-D02C-47C4-BCBE-414FB97A7751}']
+ ['{8C646A34-AFDF-4F09-A8BA-D6D40B5A91B8}']
procedure GenerarFicheroNorma19 (const IDRemesa : Integer);
+ procedure GenerarFicheroNorma19SEPA (const IDRemesa : Integer);
procedure GenerarFicheroNorma32 (const IDRemesa : Integer);
end;
@@ -39,12 +41,16 @@ type
private
function VerEditorNorma19(var Entidad : String; var Oficina : String;
var AFechaCargo : TDateTime; var AFileName : String): Boolean;
-
+ function VerEditorNorma19SEPA(var Entidad : String; var Oficina : String;
+ var AFechaCargo : TDateTime; var AFileName : String): Boolean;
function VerEditorNorma32(var Identificador : String;
var ACodigoINE : String; var Entidad : String; var Oficina : String;
var AFileName : String): Boolean;
+ function ValidarRemesaParaSEPA(ARemesa : IBizRemesaCliente): Boolean;
+ function ValidarEmpresaParaSEPA(AEmpresa : IBizEmpresa) : Boolean;
public
procedure GenerarFicheroNorma19 (const IDRemesa : Integer);
+ procedure GenerarFicheroNorma19SEPA (const IDRemesa : Integer);
procedure GenerarFicheroNorma32 (const IDRemesa : Integer);
end;
@@ -53,14 +59,15 @@ implementation
uses
Forms, cxControls, Controls, Windows,
CVBNorma1958CSB, CVBNorma32CSB,
- uEditorRegistryUtils,
+ uEditorRegistryUtils, uStringsUtils,
- uBizEmpresas, uEmpresasController,
+ uEmpresasController, schRemesasClienteClient_Intf,
uBizContactos, uClientesController,
- uBizRemesasCliente, uRemesasClienteController, schRemesasClienteClient_Intf,
+ uRemesasClienteController,
schRecibosClienteClient_Intf, Dialogs,
uIEditorExportacionNorma19, uIEditorExportacionNorma32, uBizRecibosCliente,
- schContactosClient_Intf, schEmpresasClient_Intf;
+ schContactosClient_Intf, schEmpresasClient_Intf,
+ uIEditorExportacionNorma19SEPA, CVBNorma19SEPA;
{ TBancaElectronicaController }
@@ -194,6 +201,155 @@ begin
end;
end;
+procedure TBancaElectronicaController.GenerarFicheroNorma19SEPA(
+ const IDRemesa: Integer);
+var
+ ARemesasController : IRemesasClienteController;
+ AEmpresasController : IEmpresasController;
+ AClientesController : IClientesController;
+
+ ARemesa : IBizRemesaCliente;
+ AEmpresa : IBizEmpresa;
+ ACliente : IBizCliente;
+
+ ANorma19 : TCVBNorma19SEPA;
+ I: integer;
+ AEntidad : String;
+ AOficina : String;
+begin
+ ARemesasController := TRemesasClienteController.Create;
+ AEmpresasController := TEmpresasController.Create;
+ AClientesController := TClientesController.Create;
+
+ try
+ ARemesa := ARemesasController.Buscar(IDRemesa);
+ ARemesa.DataTable.Active := True;
+ ARemesasController.RecuperarRecibos(ARemesa);
+
+ if ARemesa.ID <> IDRemesa then
+ raise Exception.CreateFmt('No existe la remesa con ID %d', [IDRemesa]);
+
+ AEmpresa := AEmpresasController.Buscar(ARemesa.ID_EMPRESA);
+ AEmpresa.DataTable.Active := True;
+
+ if AEmpresa.ID <> ARemesa.ID_EMPRESA then
+ raise Exception.CreateFmt('No existe la empresa con ID %d', [ARemesa.ID_EMPRESA]);
+
+ ANorma19 := TCVBNorma19SEPA.Create(NIL);
+
+ ANorma19.FNomFic := 'REM' + ARemesa.REFERENCIA + '.C19';
+ ANorma19.Fichero.Fecha := Date;
+ ANorma19.Fichero.Identificador := AEmpresa.NIF_CIF + ARemesa.REFERENCIA;
+ ANorma19.FechaCobro := Date;
+
+ // Buscar los datos bancarios
+ with AEmpresa.DatosBancarios do
+ begin
+ First;
+ if Locate('ID', ARemesa.ID_DATOS_BANCO, []) then
+ begin
+ AEntidad := ENTIDAD;
+ AOficina := SUCURSAL;
+ end;
+ end;
+
+ ValidarEmpresaParaSEPA(AEmpresa);
+
+ ValidarRemesaParaSEPA(ARemesa);
+
+ if not VerEditorNorma19(AEntidad, AOficina, ANorma19.FechaCobro, ANorma19.FNomFic) then
+ Exit;
+
+ ShowHourglassCursor;
+
+ ANorma19.Receptor.Entidad := AEntidad;
+ ANorma19.Receptor.Oficina := AOficina;
+
+ with ANorma19 do
+ begin
+ Depura := True;
+
+ Abrir;
+
+ // PRESENTADOR
+ if AEmpresa.DatosBancarios.NIF_CIF_PRESENTADORIsNull then
+ Presentador.NIFCIF := AEmpresa.NIF_CIF
+ else
+ Presentador.NIFCIF := AEmpresa.DatosBancarios.NIF_CIF_PRESENTADOR;
+
+ if AEmpresa.DatosBancarios.SUFIJO_PRESENTADORIsNull then
+ Presentador.Sufijo := AEmpresa.DatosBancarios.SUFIJO_ACREEDOR
+ else
+ Presentador.Sufijo := AEmpresa.DatosBancarios.SUFIJO_PRESENTADOR;
+
+ if AEmpresa.DatosBancarios.NOMBRE_PRESENTADORIsNull then
+ Presentador.Nombre := AEmpresa.NOMBRE
+ else
+ Presentador.Nombre := AEmpresa.DatosBancarios.NOMBRE_PRESENTADOR;
+
+ GenerarCabeceraPresentador;
+
+
+ // ACREEDOR
+ Acreedor.NIFCIF := AEmpresa.NIF_CIF;
+ Acreedor.Nombre := AEmpresa.NOMBRE;
+ Acreedor.Direccion1 := AEmpresa.CALLE;
+
+ if not AEmpresa.CODIGO_POSTALIsNull then
+ Acreedor.Direccion2 := AEmpresa.CODIGO_POSTAL + ' ';
+
+ Acreedor.Direccion2 := Acreedor.Direccion2 + AEmpresa.POBLACION;
+ Acreedor.Direccion3 := AEmpresa.PROVINCIA;
+ Acreedor.Pais := 'ES';
+ Acreedor.Sufijo := AEmpresa.DatosBancarios.SUFIJO_ACREEDOR;
+ Acreedor.CuentaIBAN := AEmpresa.DatosBancarios.IBAN;
+
+ GenerarCabeceraAcreedor;
+
+ ARemesa.Recibos.DataTable.First;
+ for I := 0 to (ARemesa.Recibos.DataTable.RecordCount - 1) do
+ begin
+ //ACliente := (AClientesController.Buscar(ARemesa.Recibos.ID_CLIENTE) as IBizCliente);
+ //ACliente.Open;
+
+ // DEUDOR
+ Deudor.Nombre := ARemesa.Recibos.NOMBRE_CLIENTE;
+ Deudor.Direccion1 := ARemesa.Recibos.CALLE_CLIENTE;
+
+ if not ARemesa.Recibos.CODIGO_POSTAL_CLIENTEIsNull then
+ Deudor.Direccion2 := ARemesa.Recibos.CODIGO_POSTAL_CLIENTE + ' ';
+
+ Deudor.Direccion2 := Deudor.Direccion2 + ARemesa.Recibos.POBLACION_CLIENTE;
+ Deudor.Direccion3 := ARemesa.Recibos.PROVINCIA_CLIENTE;
+ Deudor.Pais := 'ES';
+ Deudor.CuentaIBAN := ARemesa.Recibos.IBAN_CLIENTE;
+ Deudor.CodigoBIC := ARemesa.Recibos.SWIFT_CLIENTE;
+
+ Adeudo.Referencia := ARemesa.Recibos.REFERENCIA;
+ Adeudo.Importe := ARemesa.Recibos.IMPORTE_TOTAL;
+
+ GenerarRegistroAdeudo;
+
+ ARemesa.Recibos.DataTable.Next;
+ end;
+
+ GenerarTotalAcreedor;
+ Cerrar;
+
+ ShowMessage('Se ha generado el fichero');
+ end;
+ finally
+ HideHourglassCursor;
+ ARemesasController := NIL;
+ AEmpresasController := NIL;
+ AClientesController := NIL;
+
+ AEmpresa := NIL;
+
+ FreeAndNil(ANorma19);
+ end;
+end;
+
procedure TBancaElectronicaController.GenerarFicheroNorma32(
const IDRemesa: Integer);
var
@@ -330,6 +486,79 @@ begin
end;
end;
+function TBancaElectronicaController.ValidarEmpresaParaSEPA(
+ AEmpresa: IBizEmpresa): Boolean;
+var
+ AMensaje : string;
+begin
+ Result := False;
+
+ AMensaje := '';
+
+ if AEmpresa.DatosBancarios.IBANIsNull then
+ AMensaje := AMensaje + '- Falta el código IBAN' + #13 + #10;
+
+ if AEmpresa.DatosBancarios.SWIFTIsNull then
+ AMensaje := AMensaje + '- Falta el código BIC/SWIFT' + #13 + #10;
+
+ if AEmpresa.DatosBancarios.SUFIJO_ACREEDORIsNull then
+ AMensaje := AMensaje + '- Falta el sufijo del acreedor' + #13 + #10;
+
+ if not EsCadenaVacia(AMensaje) then
+ begin
+ AMensaje := 'No se puede generar el fichero SEPA. Se han encontrado los siguientes problemas ' + #13 + #10 +
+ 'en los datos bancarios (' + AEmpresa.DatosBancarios.NOMBRE + ')' + #13 + #10 +
+ 'de la empresa (' + AEmpresa.NOMBRE + '):' + #13 + #10 + #13 + #10 + AMensaje;
+ raise Exception.Create (AMensaje)
+ end
+ else
+ Result := True;
+
+end;
+
+function TBancaElectronicaController.ValidarRemesaParaSEPA(
+ ARemesa: IBizRemesaCliente): Boolean;
+var
+ AClienteController : TClientesController;
+ ACliente : IBizCliente;
+ ARecibo : IBizRecibosCliente;
+ i : integer;
+ AMensaje : string;
+begin
+ Result := False;
+ AMensaje := '';
+ AClienteController := TClientesController.Create;
+
+ try
+ ARemesa.Recibos.First;
+ for i := 0 to ARemesa.Recibos.RecordCount - 1 do
+ begin
+ ACliente := (AClienteController.Buscar(ARemesa.Recibos.ID_CLIENTE) as IBizCliente);
+ ACliente.Open;
+
+ if ACliente.DatosBancarios.IBANIsNull then
+ AMensaje := AMensaje + '- Cliente ' + ACliente.NOMBRE + ': falta el código IBAN' + #13 + #10;
+
+ if ACliente.DatosBancarios.SWIFTIsNull then
+ AMensaje := AMensaje + '- Cliente ' + ACliente.NOMBRE + ': falta el código BIC/SWIFT' + #13 + #10;
+
+ ACliente := NIL;
+ ARemesa.Recibos.Next;
+ end;
+ finally
+ FreeAndNil(AClienteController);
+ end;
+
+ if not EsCadenaVacia(AMensaje) then
+ begin
+ AMensaje := 'No se puede generar el fichero SEPA. Se han encontrado los siguientes problemas en los recibos de la remesa:' +
+ #13 + #10 + #13 + #10 + AMensaje;
+ raise Exception.Create (AMensaje)
+ end
+ else
+ Result := True;
+end;
+
function TBancaElectronicaController.VerEditorNorma19 (
var Entidad : String; var Oficina : String; var AFechaCargo : TDateTime;
var AFileName : String): Boolean;
@@ -337,7 +566,7 @@ var
AEditor : IEditorExportacionNorma19;
begin
Result := False;
- AEditor := NIL;
+ AEditor := NIL;
ShowHourglassCursor;
try
CreateEditor('EditorExportacionNorma19', IEditorExportacionNorma19, AEditor);
@@ -365,7 +594,45 @@ begin
AEditor.Release;
finally
AEditor := NIL;
- end;
+ end;
+end;
+
+
+function TBancaElectronicaController.VerEditorNorma19SEPA(var Entidad,
+ Oficina: String; var AFechaCargo: TDateTime; var AFileName: String): Boolean;
+var
+ AEditor : IEditorExportacionNorma19SEPA;
+begin
+ Result := False;
+ AEditor := NIL;
+ ShowHourglassCursor;
+ try
+ CreateEditor('EditorExportacionNorma19SEPA', IEditorExportacionNorma19SEPA, AEditor);
+ with AEditor do
+ begin
+ CodigoEntidad := Entidad;
+ CodigoAgencia := Oficina;
+ FechaCargo := AFechaCargo;
+ Fichero := AFileName;
+ end;
+ finally
+ HideHourglassCursor;
+ end;
+
+ if Assigned(AEditor) then
+ try
+ if (AEditor.ShowModal = mrOk) then
+ begin
+ Entidad := AEditor.CodigoEntidad;
+ Oficina := AEditor.CodigoAgencia;
+ AFechaCargo := AEditor.FechaCargo;
+ AFileName := AEditor.Fichero;
+ Result := True;
+ end;
+ AEditor.Release;
+ finally
+ AEditor := NIL;
+ end;
end;
diff --git a/Source/Modulos/Banca electronica/Utiles/CVBNorma19SEPA.pas b/Source/Modulos/Banca electronica/Utiles/CVBNorma19SEPA.pas
new file mode 100644
index 0000000..ec6688d
--- /dev/null
+++ b/Source/Modulos/Banca electronica/Utiles/CVBNorma19SEPA.pas
@@ -0,0 +1,718 @@
+unit CVBNorma19SEPA;
+
+interface
+
+uses
+ Messages, SysUtils, Classes, Dialogs;
+
+type
+ TSEPAPresentador = record
+ Nombre : string;
+ NIFCIF : string;
+ Sufijo : string;
+ end;
+
+ TSEPAFichero = record
+ Fecha : TDateTime;
+ Identificador : string;
+ end;
+
+ TSEPAReceptor = record
+ Oficina : string;
+ Entidad : string;
+ end;
+
+ TSEPAAcreedor = record
+ Nombre : string;
+ Direccion1 : string;
+ Direccion2 : string;
+ Direccion3 : string;
+ Pais : string;
+ CuentaIBAN : string;
+ Sufijo : string;
+ NIFCIF : string;
+ end;
+
+ TSEPADeudor = record
+ Nombre : string;
+ Direccion1 : string;
+ Direccion2 : string;
+ Direccion3 : string;
+ Pais : string;
+ CuentaIBAN : string;
+ CodigoBIC : string;
+ end;
+
+ TSEPAAdeudo = record
+ Referencia : string;
+ Importe : Currency;
+ end;
+
+
+
+ TCVBNorma19SEPA = class(TComponent)
+ private
+ pReg: array[0..602] of char; // 2 digitos más por el #13 #10
+
+ _LL_: integer; // Longitud Línea. Aquí almacenamos el valor 164 para usarlo
+ // en el resto del componente.
+
+ _INDICA_: string;
+
+ _CERO_, _SPCE_: char;
+
+ _MSK_EU_: string;
+
+ _PAIS_DEFECTO_ : string;
+
+ HayError: boolean;
+
+ FDepura: boolean;
+
+
+ NFic: file;
+
+ FEnCasoError: TNotifyEvent;
+ sReg: string;
+ CRLF: string;
+ sPrimerosDigitos: string;
+
+
+ cSumaImportesTotalesAdeudos : Currency; // Suma de los importes (campo 8) en los registros 003 (adeudos)
+ iNumeroRegistrosAdeudos: integer; // Número de registros individuales '003', adeudos
+ iNumeroRegistrosAcreedor : integer; // Número de registros de un bloque de acreedor (002, 003 y 004)
+
+ iNumeroRegistros: integer; // Nº de registros individuales (tipo '003')
+ iTotalRegistros: integer; // Total de registros del fichero incluida el registro cabecera y el registro de totales generales
+
+ procedure ComprobarDatos(sParte: string);
+
+
+
+ protected
+ procedure Error(iErr: integer); dynamic;
+ public
+ NrError: integer;
+ FNomFic: string; // Nombre del archivo en disco
+
+ Presentador : TSEPAPresentador;
+ Fichero : TSEPAFichero;
+ Receptor : TSEPAReceptor;
+ Acreedor : TSEPAAcreedor;
+ Deudor : TSEPADeudor;
+ Adeudo : TSEPAAdeudo;
+
+ FecAbono: TDateTime;
+
+ FechaCobro : TDateTime;
+
+ constructor Create(AOwner: TComponent); override;
+ procedure Abrir;
+ procedure GenerarCabeceraPresentador;
+ procedure GenerarCabeceraAcreedor;
+ procedure GenerarRegistroAdeudo;
+ procedure GenerarTotalAcreedor;
+ procedure Cerrar;
+ published
+ property NomFichero: string Read FNomFic Write FNomFic;
+ property Depura: boolean Read FDepura Write FDepura default False;
+ property EnCasoError: TNotifyEvent Read FEnCasoError Write FEnCasoError;
+ { Published declarations }
+ end;
+
+implementation
+
+uses
+ Windows, uStringsUtils, CVBUtils;
+
+constructor TCVBNorma19SEPA.Create(AOwner: TComponent);
+begin
+ inherited Create(AOwner);
+ {Asignar la propiedades por defecto}
+
+ _LL_ := high(pReg);
+
+ _INDICA_ := '<--';
+ _CERO_ := '0';
+ _SPCE_ := ' ';
+
+ _MSK_EU_ := '00000000.00';
+
+ _PAIS_DEFECTO_ := 'ES';
+
+end;
+
+//*******************************************************************************
+
+procedure TCVBNorma19SEPA.Abrir;
+begin
+ HayError := False;
+
+ AssignFile(NFic, FNomFic);
+{$I+}
+ rewrite(Nfic, _LL_);
+{$I-}
+ if IOResult <> 0 then
+ Error(0);
+
+ iNumeroRegistros := 0;
+ iTotalRegistros := 0;
+
+ {fTotImpOrdEu := 0;
+ iTotImpOrdPts := 0;
+ iTotDomOrd := 0;
+ iTotRegOrd := 0;
+
+ fTotImpCinEu := 0;
+ iTotImpCinPts := 0;
+ iTotDomCin := 0;
+
+
+ IniOrdenan;
+ IniRegistro;}
+
+ CRLF := #13 + #10;
+end;
+
+
+procedure TCVBNorma19SEPA.GenerarCabeceraPresentador;
+var
+ auxDC : integer;
+ auxIdentificador : string;
+begin
+ HayError := False;
+ sReg := '';
+
+ ComprobarDatos('01');
+
+ // Código de registro (2)
+ sReg := '01';
+
+ // Versión del cuaderno (5)
+ sReg := sReg + '19143';
+
+ // Número del dato (3)
+ sReg := sReg + '001'; // Adeudo directo
+
+ // Identificador del presentador (35)
+ auxIdentificador := Presentador.NIFCIF + _PAIS_DEFECTO_ + '00';
+ auxDC := Modulo9710(auxIdentificador);
+ sReg := sReg + _PAIS_DEFECTO_;
+ sReg := sReg + Ajusta(IntToStr(auxDC), 'I', 2, _CERO_);
+ sReg := sReg + Ajusta(Presentador.Sufijo, 'I', 3, _CERO_);
+ sReg := sReg + Ajusta(Presentador.NIFCIF, 'D', 28, _SPCE_);
+
+ // Nombre del presentador (70)
+ sReg := sReg + Ajusta(Presentador.Nombre, 'D', 70, _SPCE_);
+
+ // Fecha de creación del fichero (8)
+ sReg := sReg + Ajusta(FormatDateTime('yyyymmdd', Fichero.Fecha), 'I', 8, _SPCE_);
+
+ // Identificación del fichero (35)
+ auxIdentificador := 'PRE' + FormatDateTime('yyyymmddhhnnsszzz', Now);
+ auxIdentificador := auxIdentificador + Fichero.Identificador;
+ auxIdentificador := UpperCase(ReplaceAccents(auxIdentificador));
+ auxIdentificador := StringReplace(auxIdentificador, ' ' , '', [rfReplaceAll]);
+ sReg := sReg + Ajusta(auxIdentificador, 'D', 35, _SPCE_);
+
+ // Entidad receptora (4)
+ sReg := sReg + Ajusta(Receptor.Entidad, 'I', 4, _CERO_);
+
+ // Oficina receptora (4)
+ sReg := sReg + Ajusta(Receptor.Oficina, 'I', 4, _CERO_);
+
+ // Libre (434)
+ sReg := sReg + Ajusta('', 'D', 434, _SPCE_);
+
+ // Fin
+ sReg := sReg + CRLF;
+
+ StrPCopy(@pReg, sReg);
+ BlockWrite(NFic, pReg, 1);
+
+ if not (length(sReg) = _LL_) then
+ Error(_LL_);
+
+ Inc(iTotalRegistros);
+end;
+
+procedure TCVBNorma19SEPA.GenerarRegistroAdeudo;
+var
+ auxDC : integer;
+ auxCadena : string;
+begin
+ HayError := False;
+ sReg := '';
+
+ ComprobarDatos('03');
+
+ // Código de registro (2)
+ sReg := '03';
+
+ // Versión del cuaderno (5)
+ sReg := sReg + '19143';
+
+ // Número de dato (3)
+ sReg := sReg + '003';
+
+ // Referencia del adeudo (AT-10) (35)
+ auxCadena := Adeudo.Referencia;
+ auxCadena := auxCadena + FormatDateTime('yyyymmddhhnnsszzz', Now);
+ sReg := sReg + Ajusta(auxCadena, 'D', 35, _SPCE_);
+
+ // Referencia única del mandato (AT-01) (35)
+ sReg := sReg + Ajusta(Adeudo.Referencia, 'D', 35, _SPCE_);
+
+ // Tipo de adeudo (AT-21) (4)
+ sReg := sReg + 'OOFF';
+
+ // Categoría del propósito (AT-59) (4)
+ sReg := sReg + Ajusta('', 'D', 4, _SPCE_);
+
+ // Importe del adeudo (AT-06) (11)
+ auxCadena := FormatFloat(_MSK_EU_, Adeudo.Importe);
+ auxCadena := StringReplace(auxCadena, DecimalSeparator, '', [rfReplaceAll]);
+ sReg := sReg + Ajusta(auxCadena, 'I', 11, _CERO_);
+
+ // Fecha de firma del mandato (AT-25) (8)
+ sReg := sReg + Ajusta(FormatDateTime('yyyymmdd', Now), 'D', 8, _CERO_);
+
+ // Entidad del deudor (AT-13) (11)
+ sReg := sReg + Ajusta(Deudor.CodigoBIC, 'D', 11, _SPCE_);
+
+ // Nombre del deudor (AT-14) (70)
+ sReg := sReg + Ajusta(Deudor.Nombre, 'D', 70, _SPCE_);
+
+ // Dirección del deudor D1 (AT-09) (50)
+ sReg := sReg + Ajusta(Deudor.Direccion1, 'D', 50, _SPCE_);
+
+ // Dirección del deudor D2 (AT-09) (50)
+ sReg := sReg + Ajusta(Deudor.Direccion2, 'D', 50, _SPCE_);
+
+ // Dirección del deudor D3 (AT-09) (40)
+ sReg := sReg + Ajusta(Deudor.Direccion3, 'D', 40, _SPCE_);
+
+ // País del deudor (AT-09) (2)
+ sReg := sReg + _PAIS_DEFECTO_;
+
+ // Tipo de identificación del deudor (1)
+ sReg := sReg + ' '; // optativo
+
+ // Identificación del deudor (código) (AT-27) (36)
+ sReg := sReg + Ajusta('', 'D', 36, _SPCE_);
+
+ // Identificación del deudor emisor código (otro) (AT-27) (35)
+ sReg := sReg + Ajusta('', 'D', 35, _SPCE_);
+
+ // Identificador de la cuenta del deudor (1)
+ sReg := sReg + 'A'; // A -> IBAN
+
+ // Cuenta del deudor (AT-07) (34)
+ sReg := sReg + Ajusta(Deudor.CuentaIBAN, 'D', 34, _SPCE_);
+
+ // Propósito del adeudo (AT-58) (4)
+ sReg := sReg + Ajusta('', 'D', 4, _SPCE_);
+
+ // Concepto (AT-22) (140)
+ sReg := sReg + Ajusta('', 'D', 140, _SPCE_);
+
+ // Libre (19)
+ sReg := sReg + Ajusta('', 'D', 19, _SPCE_);
+
+ // Fin
+ sReg := sReg + CRLF;
+
+ StrPCopy(@pReg, sReg);
+ BlockWrite(NFic, pReg, 1);
+
+ if not (length(sReg) = _LL_) then
+ Error(_LL_);
+
+ cSumaImportesTotalesAdeudos := cSumaImportesTotalesAdeudos + Adeudo.Importe;
+
+ Inc(iNumeroRegistrosAcreedor);
+ Inc(iNumeroRegistrosAdeudos);
+
+ Inc(iTotalRegistros);
+ Inc(iNumeroRegistros);
+end;
+
+procedure TCVBNorma19SEPA.GenerarTotalAcreedor;
+var
+ auxDC : integer;
+ auxIdentificador, auxCadena : string;
+begin
+ HayError := False;
+ sReg := '';
+
+ Inc(iNumeroRegistrosAcreedor);
+
+ // Código de registro (2)
+ sReg := '04';
+
+ // Identificador del acreedor (AT-02) (35)
+ auxIdentificador := Acreedor.NIFCIF + _PAIS_DEFECTO_ + '00';
+ auxDC := Modulo9710(auxIdentificador);
+ sReg := sReg + _PAIS_DEFECTO_;
+ sReg := sReg + Ajusta(IntToStr(auxDC), 'I', 2, _CERO_);
+ sReg := sReg + Ajusta(Acreedor.Sufijo, 'I', 3, _CERO_);
+ sReg := sReg + Ajusta(Acreedor.NIFCIF, 'D', 28, _SPCE_);
+
+ // Fecha de cobro (AT-11) (8)
+ sReg := sReg + Ajusta(FormatDateTime('yyyymmdd', FechaCobro), 'I', 8, _SPCE_);
+
+ // Total de importes (17)
+ auxCadena := FormatFloat(_MSK_EU_, cSumaImportesTotalesAdeudos);
+ auxCadena := StringReplace(auxCadena, DecimalSeparator, '', [rfReplaceAll]);
+ sReg := sReg + Ajusta(auxCadena, 'I', 17, _CERO_);
+
+ // Número de adeudos (8)
+ sReg := sReg + Ajusta(IntToStr(iNumeroRegistrosAdeudos), 'I', 8, _CERO_);
+
+ // Total de registros (10)
+ sReg := sReg + Ajusta(IntToStr(iNumeroRegistrosAcreedor), 'I', 10, _CERO_);
+
+ // Libre (520)
+ sReg := sReg + Ajusta('', 'D', 520, _SPCE_);
+
+ // Fin
+ sReg := sReg + CRLF;
+
+ StrPCopy(@pReg, sReg);
+ BlockWrite(NFic, pReg, 1);
+
+ if not (length(sReg) = _LL_) then
+ Error(_LL_);
+
+ Inc(iTotalRegistros);
+
+ Inc(iNumeroRegistrosAcreedor);
+
+ // Código de registro (2)
+ sReg := '05';
+
+ // Identificador del acreedor (AT-02) (35)
+ auxIdentificador := Acreedor.NIFCIF + _PAIS_DEFECTO_ + '00';
+ auxDC := Modulo9710(auxIdentificador);
+ sReg := sReg + _PAIS_DEFECTO_;
+ sReg := sReg + Ajusta(IntToStr(auxDC), 'I', 2, _CERO_);
+ sReg := sReg + Ajusta(Acreedor.Sufijo, 'I', 3, _CERO_);
+ sReg := sReg + Ajusta(Acreedor.NIFCIF, 'D', 28, _SPCE_);
+
+ // Total de importes (17)
+ auxCadena := FormatFloat(_MSK_EU_, cSumaImportesTotalesAdeudos);
+ auxCadena := StringReplace(auxCadena, DecimalSeparator, '', [rfReplaceAll]);
+ sReg := sReg + Ajusta(auxCadena, 'I', 17, _CERO_);
+
+ // Número de adeudos (8)
+ sReg := sReg + Ajusta(IntToStr(iNumeroRegistrosAdeudos), 'I', 8, _CERO_);
+
+ // Total de registros (10)
+ sReg := sReg + Ajusta(IntToStr(iNumeroRegistrosAcreedor), 'I', 10, _CERO_);
+
+ // Libre (528)
+ sReg := sReg + Ajusta('', 'D', 528, _SPCE_);
+
+ // Fin
+ sReg := sReg + CRLF;
+
+ StrPCopy(@pReg, sReg);
+ BlockWrite(NFic, pReg, 1);
+
+ if not (length(sReg) = _LL_) then
+ Error(_LL_);
+
+ Inc(iTotalRegistros);
+end;
+
+procedure TCVBNorma19SEPA.GenerarCabeceraAcreedor;
+var
+ auxDC : integer;
+ auxIdentificador : string;
+begin
+ HayError := False;
+ sReg := '';
+
+ iNumeroRegistrosAdeudos := 0;
+ iNumeroRegistrosAcreedor := 0;
+ cSumaImportesTotalesAdeudos := 0;
+
+ ComprobarDatos('02');
+
+ // Código de registro (2)
+ sReg := '02';
+
+ // Versión del cuaderno (5)
+ sReg := sReg + '19143';
+
+ // Número de dato (3)
+ sReg := sReg + '002';
+
+ // Identificador del acreedor (AT-02) (35)
+ auxIdentificador := Acreedor.NIFCIF + _PAIS_DEFECTO_ + '00';
+ auxDC := Modulo9710(auxIdentificador);
+ sReg := sReg + _PAIS_DEFECTO_;
+ sReg := sReg + Ajusta(IntToStr(auxDC), 'I', 2, _CERO_);
+ sReg := sReg + Ajusta(Acreedor.Sufijo, 'I', 3, _CERO_);
+ sReg := sReg + Ajusta(Acreedor.NIFCIF, 'D', 28, _SPCE_);
+
+ // Fecha de cobro (AT-11) (8)
+ sReg := sReg + Ajusta(FormatDateTime('yyyymmdd', FechaCobro), 'I', 8, _SPCE_);
+
+ // Nombre del acreedor (AT-03) (70)
+ sReg := sReg + Ajusta(Acreedor.Nombre, 'D', 70, _SPCE_);
+
+ // Dirección del acreedor D1 (AT-05) (50)
+ sReg := sReg + Ajusta(Acreedor.Direccion1, 'D', 50, _SPCE_);
+
+ // Dirección del acreedor D2 (AT-05) (50)
+ sReg := sReg + Ajusta(Acreedor.Direccion2, 'D', 50, _SPCE_);
+
+ // Dirección del acreedor D3 (AT-05) (40)
+ sReg := sReg + Ajusta(Acreedor.Direccion3, 'D', 40, _SPCE_);
+
+ // País del acreedor (AT-05) (2)
+ sReg := sReg + _PAIS_DEFECTO_;
+
+ // Cuenta del acreedor (AT-04) (34)
+ sReg := sReg + Ajusta(Acreedor.CuentaIBAN, 'D', 34, _SPCE_);
+
+ // Libre (301)
+ sReg := sReg + Ajusta('', 'D', 301, _SPCE_);
+
+ // Fin
+ sReg := sReg + CRLF;
+
+ StrPCopy(@pReg, sReg);
+ BlockWrite(NFic, pReg, 1);
+
+ if not (length(sReg) = _LL_) then
+ Error(_LL_);
+
+ Inc(iNumeroRegistrosAcreedor);
+ Inc(iTotalRegistros);
+end;
+
+
+
+procedure TCVBNorma19SEPA.ComprobarDatos(sParte: string);
+var
+ bError: boolean;
+begin
+ bError := False;
+
+ if sParte = '01' then // cabecera / presentador
+ begin
+ if EsCadenaVacia(Presentador.NIFCIF) then
+ begin
+ Presentador.NIFCIF := _INDICA_;
+ bError := True;
+ end
+ else
+ Presentador.NIFCIF := UpperCase(Presentador.NIFCIF);
+
+ if EsCadenaVacia(Presentador.Sufijo) then
+ begin
+ Presentador.Sufijo := _INDICA_;
+ bError := True;
+ end;
+
+ if EsCadenaVacia(Presentador.Nombre) then
+ begin
+ Presentador.Nombre := _INDICA_;
+ bError := True;
+ end
+ else
+ Presentador.Nombre := UpperCase(ReplaceAccents(Presentador.Nombre));
+
+ if EsCadenaVacia(Fichero.Identificador) then
+ begin
+ Fichero.Identificador := _INDICA_;
+ bError := True;
+ end;
+
+ if EsCadenaVacia(Receptor.Entidad) then
+ begin
+ Receptor.Entidad := _INDICA_;
+ bError := True;
+ end;
+
+ if EsCadenaVacia(Receptor.Oficina) then
+ begin
+ Receptor.Oficina := _INDICA_;
+ bError := True;
+ end;
+
+ if bError then
+ ShowMessage('Faltan datos al procesar el registro 01: ' + CRLF + CRLF +
+ 'NIF/CIF del presentador: ' + Presentador.NIFCIF + CRLF +
+ 'Sufijo del presentador: ' + Presentador.Sufijo + CRLF +
+ 'Nombre del presentador: ' + Presentador.Nombre + CRLF +
+ 'Identificador del fichero: ' + Fichero.Identificador + CRLF +
+ 'Cód. entidad del receptor: ' + Receptor.Entidad + CRLF +
+ 'Cód. oficina del receptor: ' + Receptor.Oficina + CRLF
+ );
+ end;
+
+ if sParte = '02' then // acreedor
+ begin
+ if EsCadenaVacia(Acreedor.NIFCIF) then
+ begin
+ Acreedor.NIFCIF := _INDICA_;
+ bError := True;
+ end
+ else
+ Acreedor.NIFCIF := UpperCase(Acreedor.NIFCIF);
+
+ if EsCadenaVacia(Acreedor.Nombre) then
+ begin
+ Acreedor.Nombre := _INDICA_;
+ bError := True;
+ end
+ else
+ Acreedor.Nombre := UpperCase(ReplaceAccents(Acreedor.Nombre));
+
+ if EsCadenaVacia(Acreedor.Direccion1) then
+ begin
+ Acreedor.Direccion1 := _INDICA_;
+ bError := True;
+ end
+ else
+ Acreedor.Direccion1 := UpperCase(ReplaceAccents(Acreedor.Direccion1));
+
+ Acreedor.Direccion2 := UpperCase(ReplaceAccents(Acreedor.Direccion2));
+ Acreedor.Direccion3 := UpperCase(ReplaceAccents(Acreedor.Direccion3));
+ Acreedor.Pais := UpperCase(ReplaceAccents(Acreedor.Pais));
+
+ if EsCadenaVacia(Acreedor.CuentaIBAN) then
+ begin
+ Acreedor.CuentaIBAN := _INDICA_;
+ bError := True;
+ end;
+
+ if EsCadenaVacia(Acreedor.Sufijo) then
+ begin
+ Acreedor.Sufijo := _INDICA_;
+ bError := True;
+ end;
+
+ if bError then
+ ShowMessage('Faltan datos al procesar el registro 02: ' + CRLF + CRLF +
+ 'NIF/CIF del acreedor: ' + Acreedor.NIFCIF + CRLF +
+ 'Sufijo del acreedor: ' + Acreedor.Sufijo + CRLF +
+ 'Nombre del acreedor: ' + Acreedor.Nombre + CRLF +
+ 'Cuenta IBAN del acreedor: ' + Acreedor.CuentaIBAN + CRLF +
+ 'Dirección 1 del acreedor: ' + Acreedor.Direccion1 + CRLF
+ );
+ end;
+
+
+ if sParte = '03' then // deudor
+ begin
+ // Quitar espacios y caracteres no estándar
+ Adeudo.Referencia := StringReplace(UpperCase(ReplaceAccents(Adeudo.Referencia)), ' ', '', [rfReplaceAll]);
+
+ if EsCadenaVacia(Deudor.Nombre) then
+ begin
+ Deudor.Nombre := _INDICA_;
+ bError := True;
+ end
+ else
+ Deudor.Nombre := UpperCase(ReplaceAccents(Deudor.Nombre));
+
+ if EsCadenaVacia(Deudor.Direccion1) then
+ begin
+ Deudor.Direccion1 := _INDICA_;
+ bError := True;
+ end
+ else
+ Deudor.Direccion1 := UpperCase(ReplaceAccents(Deudor.Direccion1));
+
+ Deudor.Direccion2 := UpperCase(ReplaceAccents(Deudor.Direccion2));
+ Deudor.Direccion3 := UpperCase(ReplaceAccents(Deudor.Direccion3));
+ Deudor.Pais := UpperCase(ReplaceAccents(Deudor.Pais));
+
+ if EsCadenaVacia(Deudor.CuentaIBAN) then
+ begin
+ Deudor.CuentaIBAN := _INDICA_;
+ bError := True;
+ end;
+
+ if EsCadenaVacia(Deudor.CodigoBIC) then
+ begin
+ Deudor.CodigoBIC := _INDICA_;
+ bError := True;
+ end;
+
+
+ if bError then
+ ShowMessage('Faltan datos al procesar el registro 03: ' + CRLF + CRLF +
+ 'Nombre del deudor: ' + Deudor.Nombre + CRLF +
+ 'Dirección 1 del deudor: ' + Deudor.Direccion1 + CRLF +
+ 'Cuenta IBAN del deudor: ' + Deudor.CuentaIBAN + CRLF +
+ 'Código BIC del deudor: ' + Deudor.CodigoBIC
+ );
+ end;
+
+end;
+
+
+procedure TCVBNorma19SEPA.Cerrar;
+var
+ auxCadena : string;
+begin
+ HayError := False;
+ sReg := '';
+
+ Inc(iTotalRegistros);
+
+
+ // Código de registro
+ sReg := '99';
+
+ // Total de importes general (17)
+ auxCadena := FormatFloat(_MSK_EU_, cSumaImportesTotalesAdeudos);
+ auxCadena := StringReplace(auxCadena, DecimalSeparator, '', [rfReplaceAll]);
+ sReg := sReg + Ajusta(auxCadena, 'I', 17, _CERO_);
+
+ // Número de registros (8)
+ sReg := sReg + Ajusta(IntToStr(iNumeroRegistros), 'I', 8, _CERO_);
+
+ // Total de registros (10)
+ sReg := sReg + Ajusta(IntToStr(iTotalRegistros), 'I', 10, _CERO_);
+
+ // Libre (563)
+ sReg := sReg + Ajusta('', 'D', 563, _SPCE_);
+
+ // Fin
+ sReg := sReg + CRLF;
+
+ StrPCopy(@pReg, sReg);
+ BlockWrite(NFic, pReg, 1);
+
+ if not (length(sReg) = _LL_) then
+ Error(_LL_);
+
+ CloseFile(NFic);
+end;
+
+
+procedure TCVBNorma19SEPA.Error(iErr: integer);
+begin
+ NrError := iErr;
+ HayError := True;
+
+ if Assigned(FEnCasoError) then
+ FEnCasoError(Self)
+ else
+ CloseFile(NFic);
+ if NrError = _LL_ then
+ raise Exception.Create('Error en la longitud de la línea')
+ else
+ raise Exception.Create('Error en la generación del fichero');
+end;
+
+
+
+
+end.
diff --git a/Source/Modulos/Banca electronica/Utiles/CVBUtils.pas b/Source/Modulos/Banca electronica/Utiles/CVBUtils.pas
index f2b87e8..23ca799 100644
--- a/Source/Modulos/Banca electronica/Utiles/CVBUtils.pas
+++ b/Source/Modulos/Banca electronica/Utiles/CVBUtils.pas
@@ -8,12 +8,44 @@ uses SysUtils;
function Trim(const cString: string): string;
function Replicate(c: char; nLen: integer): string;
function Ajusta(sCampo, sOrientacion: string; iLongitud: integer; sRelleno: char): string;
+function Modulo9710(const ANumber : string) : Integer;
function AjustaCIF(sCampo: string): string;
-
+function ReplaceAccents(AText : String) : string;
implementation
+uses
+ Dialogs;
+
+const
+ SansAccents : array[#0..#255] of Char
+ = #0#1#2#3#4#5#6#7#8#9#10#11#12#13#14#15#16#17#18#19#20#21#22#23#24#25#26#27#28#29#30#31 +
+ ' !"#$%&''()*+,-./0123456789:;<=>?' +
+ '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_'+
+ '`abcdefghijklmnopqrstuvwxyz{|}~'#127 +
+ '€'#129'‚ƒ„…†‡ˆ‰S‹Œ'#141'Ž'#143#144'‘’“”•–—˜™s›œ'#157'zY' +
+ #160'¡¢£¤¥¦§¨©ª«¬*®¯°±²³´µ¶·¸¹º»¼½¾¿' +
+ 'AAAAAAÆCEEEEIIIIDNOOOOO×OUUUUYÞß' +
+ 'aaaaaaæceeeeiiiidnooooo÷ouuuuyþy';
+
+function ReplaceAccents(AText : String) : string;
+var
+ i : integer;
+ p : pchar;
+begin
+ Result := AText;
+ if Result='' then
+ exit;
+ p := @Result[1];
+ for i:=1 to Length(Result) do
+ begin
+ p^ := SansAccents[p^];
+ inc(p);
+ end;
+end;
+
+
function AjustaCIF(sCampo: string): string;
// Quita cualquier carácter no válido del cif,nif
var
@@ -55,4 +87,31 @@ begin
Result := copy(Result, 1, iLongitud);
end;
+
+function Modulo9710(const ANumber : string) : Integer;
+const
+ m36:string = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+var
+ i, p : Integer;
+begin
+ Result := 0;
+
+ for i := 1 to Length(ANumber) do
+ begin
+ p := Pos(ANumber[i], m36) ;
+ if p = 0 then
+ raise Exception.CreateFmt('Modulo97(%s): invalid data', [ANumber]);
+ Dec(p);
+ if p > 9 then
+ begin
+ Result := Result * 10 + (p div 10);
+ p := p mod 10;
+ end;
+ Result := Result * 10 + p;
+ Result := Result mod 97;
+ end;
+
+ Result := 98 - Result;
+end;
+
end.
diff --git a/Source/Modulos/Banca electronica/Views/BancaElectronica_view.dpk b/Source/Modulos/Banca electronica/Views/BancaElectronica_view.dpk
index 779d51c..9a48a0c 100644
Binary files a/Source/Modulos/Banca electronica/Views/BancaElectronica_view.dpk and b/Source/Modulos/Banca electronica/Views/BancaElectronica_view.dpk differ
diff --git a/Source/Modulos/Banca electronica/Views/BancaElectronica_view.dproj b/Source/Modulos/Banca electronica/Views/BancaElectronica_view.dproj
index afdbce8..a24f16b 100644
--- a/Source/Modulos/Banca electronica/Views/BancaElectronica_view.dproj
+++ b/Source/Modulos/Banca electronica/Views/BancaElectronica_view.dproj
@@ -47,36 +47,39 @@
MainSource
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
-
-
-
-