Remesa de cliente
git-svn-id: https://192.168.0.254/svn/Proyectos.Noviseda_FactuGES2/trunk@60 f33bb606-9f5c-448d-9c99-757f00063c96
This commit is contained in:
parent
16463b4ae6
commit
484128ca95
716
Source/Modulos/Banca electronica/Utiles/CVBNorma32CSB.pas
Normal file
716
Source/Modulos/Banca electronica/Utiles/CVBNorma32CSB.pas
Normal file
@ -0,0 +1,716 @@
|
||||
unit CVBNorma32CSB;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Messages, SysUtils, Classes, Dialogs, CVBUtils;
|
||||
|
||||
type
|
||||
|
||||
TProcedimiento = (prPrimero, prSegundo);
|
||||
TCVBParte = (CABECERA_GENERAL, CABECERA_REMESA,
|
||||
REGISTRO1, REGISTRO2, REGISTRO3, FIN_REMESA, FIN_GENERAL);
|
||||
|
||||
TCVBNorma32CSB = class(TComponent)
|
||||
private
|
||||
pReg: array[0..152] of char; // Un digito más por el /0
|
||||
_LL_: integer; // Longitud Línea. Aquí almacenamos el valor 164 para usarlo
|
||||
// en el resto del componente.
|
||||
_INDICA_: string;
|
||||
_CERO_, _SPCE_: char;
|
||||
_MSK_PT_, _MSK_EU_: string;
|
||||
|
||||
prProced: TProcedimiento;
|
||||
HayError: boolean;
|
||||
|
||||
FEuro: boolean;
|
||||
FDepura: boolean;
|
||||
|
||||
NFic: file;
|
||||
|
||||
fSumaImpRecibos: double; // Suma de los recibos dentro de una remesa
|
||||
fSumaImpRemesas: double; // Suma de las remesas dentro del fichero
|
||||
|
||||
iNumRecibos: integer; // Nº de recibos dentro de una remesa
|
||||
iNumRemesas: integer; // Nº de remesas dentro del fichero
|
||||
|
||||
iTotalLineas: integer; // Nº de líneas en el fichero
|
||||
iTotalRecibos : integer; // Nº de recibos dentro de un fichero
|
||||
|
||||
FEnCasoError: TNotifyEvent;
|
||||
sReg: string;
|
||||
|
||||
_19_, _58_, _32_: integer;
|
||||
protected
|
||||
procedure ChequearDatos(Parte: TCVBParte); overload;
|
||||
procedure Error(iErr: integer); dynamic;
|
||||
procedure CompRegistro1;
|
||||
procedure CompRegistro2;
|
||||
procedure CompRegistro3;
|
||||
public
|
||||
_NORMA_: integer;
|
||||
NrError: integer;
|
||||
CRLF: string;
|
||||
FNomFic: string; // Nombre del archivo en disco
|
||||
|
||||
// CABECERA FICHERO
|
||||
FechaFichero: TDateTime;
|
||||
EntReceptora: string; //4
|
||||
SucReceptora: string; //4
|
||||
|
||||
// CABECERA REMESA
|
||||
NumRemesa: string; //4
|
||||
IdCedente: string; //15
|
||||
|
||||
AboEnt: string; //4
|
||||
AboOfi: string; //4
|
||||
AboDC: string; //2
|
||||
AboCC: string; //10
|
||||
|
||||
AdeEnt: string; //4
|
||||
AdeOfi: string; //4
|
||||
AdeDC: string; //2
|
||||
AdeCC: string; //10
|
||||
|
||||
ImpEnt: string; //4
|
||||
ImpSuc: string; //4
|
||||
ImpDC: string; //2
|
||||
ImpCC: string; //10
|
||||
|
||||
// REGISTRO REMESA
|
||||
// (I)
|
||||
RegNumRecibo: string; // 7
|
||||
RegCodigoINE: string; // 9
|
||||
RegPlazaLibr: string; // 20
|
||||
RegImpEfecto: double; // 9
|
||||
RegVtoEfecto: TDateTime; // 6
|
||||
// (II)
|
||||
RegCodEnt: string; // 4
|
||||
RegCodOfi: string; // 4
|
||||
RegDC: string; // 2
|
||||
RegCC: string; // 10
|
||||
RegLibrador: string; // 34
|
||||
RegLibrado: string; // 34
|
||||
RegInfoAdic: string; // 30
|
||||
// (III)
|
||||
RegDomicilio: string; // 34
|
||||
RegCodPostal: string; // 5
|
||||
RegPoblacion: string; // 20
|
||||
RegNIF: string; // 9
|
||||
|
||||
|
||||
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
procedure Abrir;
|
||||
procedure Cerrar;
|
||||
procedure IniCabeceraFichero;
|
||||
procedure IniCabeceraRemesa;
|
||||
procedure IniRegistro;
|
||||
procedure CompCabeceraFichero;
|
||||
procedure CompCabeceraRemesa;
|
||||
procedure CompRegistro;
|
||||
procedure CompFinRemesa;
|
||||
published
|
||||
property NomFichero: string read FNomFic write FNomFic;
|
||||
property Procedimiento: TProcedimiento read prProced write prProced default prPrimero;
|
||||
property Euros: boolean read FEuro write FEuro default False;
|
||||
property Depura: boolean read FDepura write FDepura default False;
|
||||
property EnCasoError: TNotifyEvent read FEnCasoError write FEnCasoError;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
constructor TCVBNorma32CSB.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
{Asignar la propiedades por defecto}
|
||||
|
||||
_32_ := 32;
|
||||
_19_ := 19;
|
||||
_58_ := 58;
|
||||
|
||||
_LL_ := high(pReg);
|
||||
|
||||
_INDICA_ := '<--';
|
||||
_CERO_ := '0';
|
||||
_SPCE_ := ' ';
|
||||
|
||||
_MSK_PT_ := '0000000000';
|
||||
_MSK_EU_ := '00000000.00';
|
||||
|
||||
end;
|
||||
|
||||
//*******************************************************************************
|
||||
|
||||
procedure TCVBNorma32CSB.Abrir;
|
||||
begin
|
||||
HayError := False;
|
||||
|
||||
AssignFile(NFic, FNomFic);
|
||||
{$I+}
|
||||
rewrite(Nfic, _LL_);
|
||||
{$I-}
|
||||
if IOResult <> 0 then
|
||||
error(0);
|
||||
|
||||
fSumaImpRecibos := 0.0;
|
||||
fSumaImpRemesas := 0.0;
|
||||
|
||||
iNumRecibos := 0;
|
||||
iNumRemesas := 0;
|
||||
|
||||
iTotalLineas := 0;
|
||||
iTotalRecibos := 0;
|
||||
|
||||
IniCabeceraFichero;
|
||||
IniCabeceraRemesa;
|
||||
IniRegistro;
|
||||
|
||||
if CRLF = '' then
|
||||
CRLF := #13 + #10;
|
||||
end;
|
||||
|
||||
procedure TCVBNorma32CSB.IniCabeceraFichero;
|
||||
begin
|
||||
FechaFichero := 0;
|
||||
EntReceptora := '';
|
||||
SucReceptora := '';
|
||||
end;
|
||||
|
||||
procedure TCVBNorma32CSB.IniCabeceraRemesa;
|
||||
begin
|
||||
NumRemesa := '0001'; // <--------------------------------------------
|
||||
|
||||
AboEnt := '';
|
||||
AboOfi := '';
|
||||
AboDC := '';
|
||||
AboCC := '';
|
||||
|
||||
AdeEnt := '';
|
||||
AdeOfi := '';
|
||||
AdeDC := '';
|
||||
AdeCC := '';
|
||||
|
||||
ImpEnt := '';
|
||||
ImpSuc := '';
|
||||
ImpDC := '';
|
||||
ImpCC := '';
|
||||
end;
|
||||
|
||||
procedure TCVBNorma32CSB.IniRegistro;
|
||||
begin
|
||||
// (I)
|
||||
RegNumRecibo := '';
|
||||
RegCodigoINE := '';
|
||||
RegPlazaLibr := '';
|
||||
RegImpEfecto := 0.0;
|
||||
RegVtoEfecto := 0;
|
||||
// (II)
|
||||
RegCodEnt := '';
|
||||
RegCodOfi := '';
|
||||
RegDC := '';
|
||||
RegCC := '';
|
||||
RegLibrador := '';
|
||||
RegLibrado := '';
|
||||
RegInfoAdic := '';
|
||||
// (III)
|
||||
RegDomicilio := '';
|
||||
RegCodPostal := '';
|
||||
RegPoblacion := '';
|
||||
RegNIF := '';
|
||||
end;
|
||||
|
||||
procedure TCVBNorma32CSB.CompCabeceraFichero;
|
||||
begin
|
||||
HayError := False;
|
||||
sReg := '';
|
||||
ChequearDatos(CABECERA_GENERAL);
|
||||
|
||||
// A
|
||||
sReg := '02' + '65';
|
||||
sReg := sReg + Ajusta('', 'I', 2, _SPCE_); //2
|
||||
|
||||
// B
|
||||
sReg := sReg + Ajusta(FormatDateTime('ddmmyy', FechaFichero), 'I', 6, _SPCE_); //6
|
||||
sReg := sReg + Ajusta('1', 'I', 4, _CERO_); //4
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); //6
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); //6
|
||||
|
||||
// C
|
||||
sReg := sReg + Ajusta('', 'I', 15, _SPCE_); //15
|
||||
sReg := sReg + Ajusta('', 'I', 4, _SPCE_); //4
|
||||
sReg := sReg + Ajusta('', 'I', 4, _SPCE_); //4
|
||||
sReg := sReg + Ajusta(EntReceptora, 'I', 4, _CERO_); //4
|
||||
sReg := sReg + Ajusta(SucReceptora, 'I', 4, _CERO_); //4
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); //6
|
||||
|
||||
// D
|
||||
sReg := sReg + Ajusta('', 'I', 61, _SPCE_); //61
|
||||
|
||||
// E
|
||||
sReg := sReg + Ajusta('', 'I', 24, _SPCE_); //24
|
||||
|
||||
sReg := sReg + CRLF; //2
|
||||
|
||||
if not (length(sReg) = _LL_) then
|
||||
Error(_LL_);
|
||||
|
||||
StrPCopy(@pReg, sReg);
|
||||
Blockwrite(NFic, pReg, 1);
|
||||
|
||||
Inc(iTotalLineas);
|
||||
end;
|
||||
|
||||
procedure TCVBNorma32CSB.CompCabeceraRemesa;
|
||||
begin
|
||||
HayError := False;
|
||||
|
||||
sReg := '';
|
||||
|
||||
ChequearDatos(CABECERA_REMESA);
|
||||
Inc(iNumRemesas);
|
||||
|
||||
// A
|
||||
sReg := '11' + '65';
|
||||
sReg := sReg + Ajusta('', 'I', 2, _SPCE_); //2
|
||||
|
||||
// B
|
||||
sReg := sReg + Ajusta(FormatDateTime('ddmmyy', FechaFichero), 'I', 6, _SPCE_); //6
|
||||
sReg := sReg + Ajusta(IntToStr(iNumRemesas), 'I', 4, _CERO_); //4
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); //6
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); //6
|
||||
|
||||
// C
|
||||
sReg := sReg + Ajusta(IdCedente, 'D', 15, _SPCE_); //15
|
||||
sReg := sReg + '1';
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); //6
|
||||
sReg := sReg + Ajusta('', 'I', 5, _SPCE_); //5
|
||||
sReg := sReg + Ajusta('', 'I', 4, _SPCE_); //4
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); //6
|
||||
|
||||
// D
|
||||
sReg := sReg + Ajusta(AboEnt, 'I', 4, _CERO_); //4
|
||||
sReg := sReg + Ajusta(AboOfi, 'I', 4, _CERO_); //4
|
||||
sReg := sReg + Ajusta(AboDC, 'I', 2, _CERO_); //2
|
||||
sReg := sReg + Ajusta(AboCC, 'I', 10, _CERO_); //10
|
||||
|
||||
sReg := sReg + Ajusta(AdeEnt, 'I', 4, _CERO_); //4
|
||||
sReg := sReg + Ajusta(AdeOfi, 'I', 4, _CERO_); //4
|
||||
sReg := sReg + Ajusta(AdeDC, 'I', 2, _CERO_); //2
|
||||
sReg := sReg + Ajusta(AdeCC, 'I', 10, _CERO_); //10
|
||||
|
||||
sReg := sReg + Ajusta(ImpEnt, 'I', 4, _CERO_); //4
|
||||
sReg := sReg + Ajusta(ImpSuc, 'I', 4, _CERO_); //4
|
||||
sReg := sReg + Ajusta(ImpDC, 'I', 2, _CERO_); //2
|
||||
sReg := sReg + Ajusta(ImpCC, 'I', 10, _CERO_); //10
|
||||
|
||||
sReg := sReg + Ajusta('', 'I', 1, _SPCE_); //1
|
||||
|
||||
// E
|
||||
sReg := sReg + Ajusta('', 'I', 24, _SPCE_); //24
|
||||
|
||||
sReg := sReg + CRLF; //2
|
||||
|
||||
if not (length(sReg) = _LL_) then
|
||||
Error(_LL_);
|
||||
|
||||
StrPCopy(@pReg, sReg);
|
||||
Blockwrite(NFic, pReg, 1);
|
||||
|
||||
Inc(iTotalLineas);
|
||||
end;
|
||||
|
||||
procedure TCVBNorma32CSB.CompFinRemesa;
|
||||
var
|
||||
sTotImp, cIT : string;
|
||||
iP : integer;
|
||||
begin
|
||||
HayError := False;
|
||||
sReg := '';
|
||||
ChequearDatos(FIN_REMESA);
|
||||
|
||||
// A
|
||||
sReg := '71' + '65';
|
||||
sReg := sReg + Ajusta('', 'I', 2, _SPCE_); //2
|
||||
|
||||
// B
|
||||
sReg := sReg + Ajusta(FormatDateTime('ddmmyy', FechaFichero), 'I', 6, _SPCE_); //6
|
||||
sReg := sReg + Ajusta(NumRemesa, 'I', 4, _CERO_); //4
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); //6
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); //6
|
||||
|
||||
// C
|
||||
sReg := sReg + Ajusta('', 'I', 37, _SPCE_); //37
|
||||
|
||||
// D
|
||||
sReg := sReg + Ajusta('', 'I', 10, _SPCE_); //10
|
||||
|
||||
sTotImp := FormatFloat(_MSK_EU_, fSumaImpRecibos);
|
||||
iP := pos(',', sTotImp);
|
||||
if iP < 1 then
|
||||
iP := pos('.', sTotImp);
|
||||
cIT := copy(sTotImp, 1, iP - 1);
|
||||
sTotImp := cIT + copy(sTotImp, iP + 1, 2);
|
||||
sReg := sReg + Ajusta(sTotImp, 'I', 10, _CERO_); // 10
|
||||
|
||||
sReg := sReg + Ajusta('', 'I', 10, _SPCE_); //10
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); //6
|
||||
sReg := sReg + Ajusta('', 'I', 7, _SPCE_); //7
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); //6
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); //6
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); //6
|
||||
|
||||
// E
|
||||
sReg := sReg + Ajusta('', 'I', 5, _SPCE_); //5
|
||||
{ Nº de registros de la remesa incluidos la cabecera y éste mismo:
|
||||
Num.registros = 1 (cabecera) + (3 registros * Num.recibos) + 1 (este pie)
|
||||
}
|
||||
sReg := sReg + Ajusta(IntToStr(1 + (3*iNumRecibos) + 1), 'I', 7, _CERO_); //7
|
||||
sReg := sReg + Ajusta(IntToStr(iNumRecibos), 'I', 6, _CERO_); //6
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); //6
|
||||
|
||||
sReg := sReg + CRLF; //2
|
||||
|
||||
if not (length(sReg) = _LL_) then
|
||||
Error(_LL_);
|
||||
|
||||
StrPCopy(@pReg, sReg);
|
||||
Blockwrite(NFic, pReg, 1);
|
||||
|
||||
Inc(iTotalLineas);
|
||||
|
||||
// Acumular la suma de los importes de las remesas en el fichero
|
||||
fSumaImpRemesas := fSumaImpRemesas + fSumaImpRecibos;
|
||||
|
||||
// Poner a cero la suma de los recibos y el número de recibos
|
||||
fSumaImpRecibos := 0.0;
|
||||
iNumRecibos := 0;
|
||||
end;
|
||||
|
||||
procedure TCVBNorma32CSB.CompRegistro;
|
||||
begin
|
||||
CompRegistro1;
|
||||
CompRegistro2;
|
||||
CompRegistro3;
|
||||
|
||||
// Acumular la suma de los recibos en la remesa
|
||||
fSumaImpRecibos := fSumaImpRecibos + RegImpEfecto;
|
||||
|
||||
// Acumular el nº de recibos en la remesa
|
||||
Inc(iNumRecibos);
|
||||
Inc(iTotalRecibos);
|
||||
end;
|
||||
|
||||
procedure TCVBNorma32CSB.CompRegistro1;
|
||||
var
|
||||
sTotImp, cIT : string;
|
||||
iP: integer;
|
||||
begin
|
||||
HayError := False;
|
||||
|
||||
sReg := '';
|
||||
|
||||
ChequearDatos(REGISTRO1);
|
||||
|
||||
// A
|
||||
sReg := '25' + '65';
|
||||
sReg := sReg + Ajusta('', 'I', 2, _SPCE_); // 2
|
||||
|
||||
// B
|
||||
// Convertir referencia EL/0001 - 1 => EL00001-1
|
||||
RegNumRecibo := StringReplace(RegNumRecibo, '/', '0', []);
|
||||
RegNumRecibo := StringReplace(RegNumRecibo, ' - ', '-', []);
|
||||
sReg := sReg + Ajusta(RegNumRecibo, 'D', 15, _SPCE_); // 15
|
||||
sReg := sReg + Ajusta(FormatDateTime('ddmmyy', FechaFichero), 'I', 6, _SPCE_); // 6
|
||||
sReg := sReg + Ajusta(NumRemesa, 'I', 4, _CERO_); // 4
|
||||
|
||||
// C
|
||||
sReg := sReg + Ajusta(RegCodigoINE, 'D', 9, _SPCE_); // 9
|
||||
sReg := sReg + Ajusta('', 'I', 2, _SPCE_); // 2
|
||||
|
||||
// D
|
||||
sReg := sReg + Ajusta(RegPlazaLibr, 'D', 20, _SPCE_); // 20
|
||||
sReg := sReg + Ajusta('', 'I', 1, _SPCE_); // 1
|
||||
|
||||
// E
|
||||
sReg := sReg + Ajusta('', 'I', 15, _SPCE_); // 15
|
||||
sReg := sReg + Ajusta('', 'I', 9, _SPCE_); // 9
|
||||
|
||||
sTotImp := FormatFloat(_MSK_EU_, RegImpEfecto);
|
||||
iP := pos(',', sTotImp);
|
||||
if iP < 1 then
|
||||
iP := pos('.', sTotImp);
|
||||
cIT := copy(sTotImp, 1, iP - 1);
|
||||
sTotImp := cIT + copy(sTotImp, iP + 1, 2);
|
||||
sReg := sReg + Ajusta(sTotImp, 'I', 9, _CERO_); // 9
|
||||
|
||||
sReg := sReg + Ajusta('', 'I', 15, _SPCE_); // 15
|
||||
sReg := sReg + Ajusta(FormatDateTime('ddmmyy', RegVtoEfecto), 'I', 6, _SPCE_); // 6
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); // 6
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); // 6
|
||||
sReg := sReg + Ajusta('', 'I', 1, _SPCE_); // 1
|
||||
sReg := sReg + Ajusta('', 'I', 4, _SPCE_); // 4
|
||||
|
||||
// F
|
||||
sReg := sReg + Ajusta('', 'I', 16, _SPCE_); // 16
|
||||
|
||||
sReg := sReg + CRLF; //2
|
||||
|
||||
if not (length(sReg) = _LL_) then
|
||||
Error(_LL_);
|
||||
|
||||
StrPCopy(@pReg, sReg);
|
||||
Blockwrite(NFic, pReg, 1);
|
||||
|
||||
Inc(iTotalLineas);
|
||||
end;
|
||||
|
||||
procedure TCVBNorma32CSB.CompRegistro2;
|
||||
begin
|
||||
HayError := False;
|
||||
|
||||
sReg := '';
|
||||
|
||||
ChequearDatos(REGISTRO2);
|
||||
|
||||
// A
|
||||
sReg := '26' + '65';
|
||||
sReg := sReg + Ajusta('', 'I', 2, _SPCE_); // 2
|
||||
|
||||
// B
|
||||
sReg := sReg + Ajusta(RegNumRecibo, 'D', 15, _SPCE_); // 15
|
||||
sReg := sReg + Ajusta('', 'I', 2, _SPCE_); // 2
|
||||
sReg := sReg + Ajusta('2', 'I', 1, _SPCE_); // 1
|
||||
sReg := sReg + Ajusta('000000', 'I', 6, _CERO_); // 6
|
||||
sReg := sReg + Ajusta('2', 'I', 1, _SPCE_); // 1
|
||||
sReg := sReg + Ajusta('0', 'I', 1, _SPCE_); // 1
|
||||
|
||||
// C
|
||||
sReg := sReg + Ajusta(RegCodEnt, 'I', 4, _CERO_); //4
|
||||
sReg := sReg + Ajusta(RegCodOfi, 'I', 4, _CERO_); //4
|
||||
if Length(RegDC) = 0 then
|
||||
RegDC := '**';
|
||||
sReg := sReg + Ajusta(RegDC, 'I', 2, _CERO_); //2
|
||||
sReg := sReg + Ajusta(RegCC, 'I', 10, _CERO_); //10
|
||||
|
||||
// D
|
||||
sReg := sReg + Ajusta(RegLibrador, 'D', 34, _SPCE_); // 34
|
||||
sReg := sReg + Ajusta(RegLibrado, 'D', 34, _SPCE_); // 34
|
||||
sReg := sReg + Ajusta(RegInfoAdic, 'D', 30, _SPCE_); // 30
|
||||
|
||||
sReg := sReg + CRLF; //2
|
||||
|
||||
if not (length(sReg) = _LL_) then
|
||||
Error(_LL_);
|
||||
|
||||
StrPCopy(@pReg, sReg);
|
||||
Blockwrite(NFic, pReg, 1);
|
||||
|
||||
Inc(iTotalLineas);
|
||||
end;
|
||||
|
||||
procedure TCVBNorma32CSB.CompRegistro3;
|
||||
begin
|
||||
HayError := False;
|
||||
|
||||
sReg := '';
|
||||
|
||||
ChequearDatos(REGISTRO3);
|
||||
|
||||
// A
|
||||
sReg := '27' + '65';
|
||||
sReg := sReg + Ajusta('', 'I', 2, _SPCE_); // 2
|
||||
|
||||
// B
|
||||
sReg := sReg + Ajusta(RegNumRecibo, 'D', 15, _SPCE_); // 15
|
||||
sReg := sReg + Ajusta('', 'I', 2, _SPCE_); // 2
|
||||
sReg := sReg + Ajusta(RegDomicilio, 'D', 34, _SPCE_); // 34
|
||||
sReg := sReg + Ajusta(RegCodPostal, 'I', 5, _SPCE_); // 5
|
||||
sReg := sReg + Ajusta(RegPoblacion, 'D', 20, _SPCE_); // 20
|
||||
sReg := sReg + Ajusta(RegCodigoINE, 'I', 2, _SPCE_); // 2
|
||||
sReg := sReg + Ajusta('', 'I', 7, _SPCE_); // 7
|
||||
sReg := sReg + Ajusta(RegNIF, 'I', 9, _SPCE_); // 9
|
||||
sReg := sReg + Ajusta('', 'I', 50, _SPCE_); // 50
|
||||
|
||||
sReg := sReg + CRLF; //2
|
||||
|
||||
if not (length(sReg) = _LL_) then
|
||||
Error(_LL_);
|
||||
|
||||
StrPCopy(@pReg, sReg);
|
||||
Blockwrite(NFic, pReg, 1);
|
||||
|
||||
Inc(iTotalLineas);
|
||||
end;
|
||||
|
||||
procedure TCVBNorma32CSB.Cerrar;
|
||||
var
|
||||
sTotImp, cIT : string;
|
||||
iP: integer;
|
||||
begin
|
||||
HayError := False;
|
||||
sReg := '';
|
||||
|
||||
Inc(iTotalLineas);
|
||||
|
||||
// A
|
||||
sReg := '98' + '65';
|
||||
sReg := sReg + Ajusta('', 'I', 2, _SPCE_); // 2
|
||||
|
||||
// B
|
||||
sReg := sReg + Ajusta('', 'I', 22, _SPCE_); // 22
|
||||
|
||||
// C
|
||||
sReg := sReg + Ajusta('', 'I', 37, _SPCE_); // 37
|
||||
|
||||
// D
|
||||
sReg := sReg + Ajusta('', 'I', 10, _SPCE_); // 10
|
||||
|
||||
sTotImp := FormatFloat(_MSK_EU_, fSumaImpRemesas);
|
||||
iP := pos(',', sTotImp);
|
||||
if iP < 1 then
|
||||
iP := pos('.', sTotImp);
|
||||
cIT := copy(sTotImp, 1, iP - 1);
|
||||
sTotImp := cIT + copy(sTotImp, iP + 1, 2);
|
||||
sReg := sReg + Ajusta(sTotImp, 'I', 10, _CERO_); // 10
|
||||
|
||||
sReg := sReg + Ajusta('', 'I', 10, _SPCE_); // 10
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); // 6
|
||||
sReg := sReg + Ajusta('', 'I', 7, _SPCE_); // 7
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); // 6
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); // 6
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); // 6
|
||||
|
||||
// E
|
||||
sReg := sReg + Ajusta(IntToStr(iNumRemesas), 'I', 5, _CERO_); //5
|
||||
sReg := sReg + Ajusta(IntToStr(iTotalLineas), 'I', 7, _CERO_); //7
|
||||
sReg := sReg + Ajusta(IntToStr(iTotalRecibos), 'I', 6, _CERO_); //6
|
||||
sReg := sReg + Ajusta('', 'I', 6, _SPCE_); // 6
|
||||
|
||||
sReg := sReg + CRLF; //2
|
||||
|
||||
if not (length(sReg) = _LL_) then
|
||||
Error(_LL_);
|
||||
|
||||
StrPCopy(@pReg, sReg);
|
||||
Blockwrite(NFic, pReg, 1);
|
||||
|
||||
CloseFile(NFic);
|
||||
end;
|
||||
|
||||
|
||||
procedure TCVBNorma32CSB.ChequearDatos(Parte: TCVBParte);
|
||||
var
|
||||
bError: boolean;
|
||||
begin
|
||||
{ bError := False;
|
||||
|
||||
if Parte = CABECERA_GENERAL then
|
||||
begin
|
||||
if ((Presentador = '') or (NomCliPres = '') or
|
||||
(EntRecepPres = '') or (OfiRecepPres = '')) then
|
||||
begin
|
||||
if Presentador = '' then
|
||||
Presentador := _INDICA_;
|
||||
if NomCliPres = '' then
|
||||
NomCliPres := _INDICA_;
|
||||
if EntRecepPres = '' then
|
||||
EntRecepPres := _INDICA_;
|
||||
if OfiRecepPres = '' then
|
||||
OfiRecepPres := _INDICA_;
|
||||
bError := True;
|
||||
end;
|
||||
end
|
||||
else
|
||||
if iParte = 2 then
|
||||
begin
|
||||
if ((Ordenante = '') or (NomCliOrd = '') or
|
||||
(EntOrde = '') or (OfiOrde = '') or
|
||||
(CcOrde = '')) then
|
||||
begin
|
||||
if Ordenante = '' then
|
||||
Ordenante := _INDICA_;
|
||||
if NomCliOrd = '' then
|
||||
NomCliOrd := _INDICA_;
|
||||
if EntOrde = '' then
|
||||
EntOrde := _INDICA_;
|
||||
if OfiOrde = '' then
|
||||
OfiOrde := _INDICA_;
|
||||
if CcOrde = '' then
|
||||
CcOrde := _INDICA_;
|
||||
bError := True;
|
||||
end;
|
||||
end
|
||||
else
|
||||
if (iParte = 3) or (iParte = 4) then
|
||||
begin
|
||||
if ((Referencia = '') or (NomTitDom = '') or
|
||||
(EntTitDom = '') or (OfiTitDom = '') or
|
||||
(ccTitDom = '')) then
|
||||
begin
|
||||
if Referencia = '' then
|
||||
Referencia := _INDICA_;
|
||||
if NomTitDom = '' then
|
||||
NomTitDom := _INDICA_;
|
||||
if EntTitDom = '' then
|
||||
EntTitDom := _INDICA_;
|
||||
if OfiTitDom = '' then
|
||||
OfiTitDom := _INDICA_;
|
||||
if ccTitDom = '' then
|
||||
ccTitDom := _INDICA_;
|
||||
bError := True;
|
||||
end;
|
||||
end;
|
||||
|
||||
if bError then
|
||||
ShowMessage('' + CRLF +
|
||||
'Faltan datos al procesar el siguiente registro: ' + CRLF + CRLF +
|
||||
'Código Cli/Pro: ' + Referencia + CRLF +
|
||||
'Nombre Titular: ' + NomTitDom + CRLF +
|
||||
'Entidad Domiciliar: ' + EntTitDom + CRLF +
|
||||
'Oficina Domiciliar: ' + OfiTitDom + CRLF +
|
||||
'Cuenta Domiciliar: ' + ccTitDom + CRLF +
|
||||
'Presentador: ' + Presentador + CRLF +
|
||||
'Nombre Cliente Pres:' + NomCliPres + CRLF +
|
||||
'Entidad Receptora P:' + EntRecepPres + CRLF +
|
||||
'Oficina Receptora P:' + OfiRecepPres + CRLF +
|
||||
'Ordenante: ' + Ordenante + CRLF +
|
||||
'Nombre Cliente Ord.:' + NomCliOrd + CRLF +
|
||||
'Entidad Ordenante: ' + EntOrde + CRLF +
|
||||
'Oficina Ordenante: ' + OfiOrde + CRLF +
|
||||
'Cuenta Ordenante: ' + CcOrde
|
||||
);
|
||||
|
||||
if iParte = 3 then
|
||||
begin
|
||||
if bError then
|
||||
begin
|
||||
if ((fImportePts = 0) and (FEuro = False)) or
|
||||
((fImporteEu = 0) and (FEuro = True)) then
|
||||
begin
|
||||
ShowMessage('¡¡¡ El importe no puede ser cero !!!');
|
||||
Error(27);
|
||||
end;
|
||||
end;
|
||||
end;}
|
||||
end;
|
||||
|
||||
procedure TCVBNorma32CSB.Error(iErr: integer);
|
||||
begin
|
||||
NrError := iErr;
|
||||
HayError := True;
|
||||
if Assigned(FEnCasoError) then
|
||||
FEnCasoError(Self)
|
||||
else
|
||||
if FDepura = False then
|
||||
begin
|
||||
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;
|
||||
|
||||
|
||||
end.
|
||||
Reference in New Issue
Block a user