git-svn-id: https://192.168.0.254/svn/Proyectos.AbetoDesign_FactuGES/trunk@70 93f398dd-4eb6-7a46-baf6-13f46f578da2
717 lines
19 KiB
ObjectPascal
717 lines
19 KiB
ObjectPascal
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.
|