Muchas Gracias.
- Code: Select all Expand view RUN
- static function GenFile(nHandle)
local a
local nTotImporte := 0
local nRegistros := 0
Norma := '19143'
Sufijo := "000" // Facilitado por el Banco, codifica sus productos internos
pres_Entidad := ventidad
pres_Oficina := vsucursal
pres_Referencia := vreferencia // Texto libre para referencia del presentador
pres_Nombre := vempresa
pres_Pais := "ES"
pres_Nif := vcif
acre_Nombre := vempresa
acre_Direcc := vdirreccion
acre_Ciudad := vcp+provincia
acre_Provin := provincia
acre_Pais := "ES"
acre_Nif := vcif
acre_Cta := viban+ventidad+vsucursal+vdc+vcta
// FNAL Último adeudo de varios FRST Primer adeudo de varios
// deudor debe comunicar al deudor cuando adeude la cuenta de su cliente.
/*
---------------------------------------------------
CABECERA DE PRESENTADOR
---------------------------------------------------
*/
a := array(10)
// N.Descipcion OB=Obligatorio OP=Opcional Tipo Len Posiciones
a[ 1] = padR('01', 2) // 1 Código de Registro OB Numérico Len=2 Pos:01-02
a[ 2] = padR(Norma, 5) // 2 Versión del Cuaderno OB Numérico Len=5 Pos:03-07
a[ 3] = padR('001', 3) // 3 Número de Dato OB Numérico Len=3 Pos:08-10
a[ 4] = Id_Name(pres_Pais, Sufijo, pres_Nif) // 4 Identificador del Presentador OB Alfanumérico Len=35 Pos:11-45
a[ 5] = padR(pres_Nombre, 70) // 5 Nombre del Presentador OB Alfanumérico Len=70 Pos:46-115
a[ 6] = padR(fDate(), 8) // 6 Fecha de creación del fichero OB Numérico Len=8 Pos:116-123
a[ 7] = Id_File(pres_Referencia) // 7 Id. del fichero OB Alfanumérico Len=35 Pos:124-158
a[ 8] = padR(pres_Entidad, 4) // 8 Entidad receptora OB Numérico Len=4 Pos:159-162
a[ 9] = padR(pres_Oficina, 4) // 9 Oficina receptora OB Numérico Len=4 Pos:163-166
a[ 10] = padR('', 434) // 10 Libre OB Alfanumérico Len=434 Pos:167-600
* fwrite(nHandle, strRec + chr(13)+chr(10))
OutFile(nHandle, a)
/*
---------------------------------------------------
REGISTRO DE CABECERA DE ACREEDOR POR FECHA DE COBRO
---------------------------------------------------
*/
/* --> bucle para multiples ordenes */
deut_Plazo := vfcargo
a := array(12)
a[ 1] = padR('02', 2) // 1 Código de Registro OB Numérico Len=2 Pos:01-02
a[ 2] = padR(Norma, 5) // 2 Versión del Cuaderno OB Numérico Len=5 Pos:03-07
a[ 3] = padR('002', 3) // 3 Número de Dato OB Numérico Len=3 Pos:08-10
a[ 4] = Id_Name(acre_Pais, Sufijo, acre_Nif) // 4 Identificador del Acreedor OB Alfanumérico Len=35 Pos:11-45
a[ 5] = padR(fDate(deut_Plazo), 8) // 5 Fecha de cobro OB Numérico Len=8 Pos:46-53
a[ 6] = padR(acre_Nombre, 70) // 6 Nombre del Acreedor OB Alfanumérico Len=70 Pos:54-123
a[ 7] = padR(acre_Direcc, 50) // 7 Dirección Acreedor OP Alfanumérico Len=50 Pos:124-173
a[ 8] = padR(acre_Ciudad, 50) // 8 CP + Ciudad del Acreedor OP Alfanumérico Len=50 Pos:174-223
a[ 9] = padR(acre_Provin, 40) // 9 Provincia del Acreedor OP Alfanumérico Len=40 Pos:224-263
a[ 10] = padR(acre_Pais, 2) // 10 Código ISO 3166 pais Acreedor OP Alfanumérico Len=2 Pos:264-265
a[ 11] = padR(acre_Cta, 34) // 11 Cuenta del Acreedor OB Alfanumérico Len=34 Pos:266-299
a[ 12] = padR('', 301) // 12 Libre OB Alfanumérico Len=301 Pos:300-600
OutFile(nHandle, a)
/*
-------------------------------------------------------------
REGISTRO 1º INDIVIDUAL OBLIGATORIO
-------------------------------------------------------------
*/
select(acremesa)
(cremesa)->(DbSetOrder(2))
(cremesa)->(dbgotop())
do while !eof()
if (cremesa)->slc ="X"
vnif := alltrim(upper((cremesa)->nif))
vnif:=strtran(vnif,".","")
vnif:=strtran(vnif,"-","")
vnif:=strtran(vnif," ","")
vnif:=strtran(vnif,",","")
deut_Adeudo := 'RCUR' // OOFF Unico pago RCUR Adeudo de varios que no es FNAL ni FRST
deut_Categoria := '' // Opcional segun tabla de categorias de proposito
deut_Referencia := vreferencia // Referencia unica para identificacion del recibo
deut_RMandato := hb_md5(vnif) // Ref.unica orden domiciliación. Utilizar hash, p.e., codigo cliente
* deut_DMandato := ctod(vfcreacion) // Fecha orden domiciliación o mandato
deut_DMandato := (vfcreacion) // Fecha orden domiciliación o mandato
deut_Nombre := alltrim((cremesa)->nombre)
deut_Direcc := alltrim((cremesa)->direccion)
deut_Ciudad := alltrim((cremesa)->cp)+ +alltrim((cremesa)->poblacion)
deut_Provin := alltrim((cremesa)->provincia)
deut_Pais := "ES"
deut_Nif := vnif // Regla de uso en la comunidad española: figurará NIF o NIE del deudor
deut_Cta := (cremesa)->cta
deut_BIC := (cremesa)->bic
deut_Importe := round((cremesa)->total,2)
deut_Plazo := vfcargo
deut_Tipo := '' // Opcional, tipo de persona 1=Juridica 2=Fisica
deut_Emisor := '' // Opcional, solo si se usa deut_Tipo
deut_IdCta := 'A' // A=IBAN B=CCC
deut_Proposito := '' // Opcional, 4 digitos segun tabla ISO 20022 UNIFI
deut_Concepto := (cremesa)->concepto // Opcional, Información definida por el acreedor y que la entidad del
a := array(23)
a[ 1] = padR('03', 2) // 1 Código de Registro OB Numérico Len=2 Pos:01-02
a[ 2] = padR(Norma, 5) // 2 Versión del Cuaderno OB Numérico Len=5 Pos:03-07
a[ 3] = padR('003', 3) // 3 Número de Dato OB Numérico Len=3 Pos:08-10
a[ 4] = padR(deut_Referencia, 35) // 4 Referencia del adeudo OB Alfanumérico Len=35 Pos:11-45
a[ 5] = padR(deut_RMandato, 35) // 5 Referencia única del mandato OB Alfanumérico Len=35 Pos:46-80
a[ 6] = padR(deut_Adeudo, 4) // 6 Tipo de adeudo OB Alfanumérico Len=4 Pos:81-84
a[ 7] = padR(deut_Categoria, 4) // 7 CategorÃa de propósito OP Alfanumérico Len=4 Pos:85-88
a[ 8] = Dec2Str(deut_Importe, 11) // 8 Importe del adeudo OB Numérico Len=11 Pos:89-99
a[ 9] = padR(fDate(deut_DMandato), 8) // 9 Fecha de firma del mandato OB Numérico Len=8 Pos:100-107
a[ 10] = padR(deut_BIC, 11) // 10 Entidad del Deudor OB Alfanumérico Len=11 Pos:108-118
a[ 11] = padR(deut_Nombre, 70) // 11 Nombre del Deudor OB Alfanumérico Len=70 Pos:119-188
a[ 12] = padR(deut_Direcc, 50) // 12 Dirección Deudor OP Alfanumérico Len=50 Pos:189-238
a[ 13] = padR(deut_Ciudad, 50) // 13 CP + Ciudad del Deudor OP Alfanumérico Len=50 Pos:239-288
a[ 14] = padR(deut_Provin, 40) // 14 Provincia del Deudor OP Alfanumérico Len=40 Pos:289-328
a[ 15] = padR(deut_Pais, 2) // 15 Codigo ISO 3166 pais Deudor OP Alfanumérico Len=2 Pos:329-330
a[ 16] = padR(deut_Tipo, 1) // 16 Tipo Identificación Deudor OP Numérico Len=1 Pos:331
a[ 17] = padR(deut_Nif, 36) // 17 Identificación del Deudor OP Alfanumérico Len=36 Pos:332-367
a[ 18] = padR(deut_Emisor, 35) // 18 Id.del Deudor Emisor Código OP Alfanumérico Len=35 Pos:368-402
a[ 19] = padR(deut_IdCta, 1) // 19 Id.de la cuenta del Deudor OB Alfanumérico Len=1 Pos:403
a[ 20] = padR(deut_Cta, 34) // 20 Cuenta del Deudor OB Alfanumérico Len=34 Pos:404-437
a[ 21] = padR('', 4) // 21 Propósito del adeudo OP Alfanumérico Len=4 Pos:438-441
a[ 22] = padR(deut_Concepto, 140) // 22 Concepto OP Alfanumérico Len=140 Pos:442-581
a[ 23] = padR('', 19) // 23 Libre OB Alfanumérico Len=19 Pos:582-600
OutFile(nHandle, a)
nTotImporte += deut_Importe
nRegistros += 1
endif
dbskip()
enddo
/*
---------------------------------------------------
REGISTROS DE TOTALES DE ACREEDOR POR FECHA DE COBRO
---------------------------------------------------
*/
a := array(7)
a[ 1] = padR('04', 2) // 1 Código de Registro OB Numérico Len=2 Pos:01-02
a[ 2] = Id_Name(acre_Pais, Sufijo, acre_Nif) // 2 Identificador del Acreedor OB Alfanumérico Len=35 Pos:03-37
a[ 3] = padR(fDate(deut_Plazo), 8) // 3 Fecha de cobro OB Numérico Len=8 Pos:38-45
a[ 4] = Dec2Str(nTotImporte, 17) // 4 Total de Importes OB Numérico Len=17 Pos:46-62
a[ 5] = strzero(nRegistros, 8) // 5 Número de Adeudos OB Numérico Len=8 Pos:63-70
a[ 6] = strzero(nRegistros +2, 10) // 6 Total de Registros OB Numérico Len=10 Pos:71-80
a[ 7] = padR('', 520) // 7 Libre OB Alfanumérico Len=520 Pos:81-600
OutFile(nHandle, a)
/* <-- bucle para multiples ordenes */
/*
---------------------------------------------------
REGISTROS DE TOTALES DE ACREEDOR
---------------------------------------------------
*/
a := array(6)
a[ 1] = padR('05', 2) // 1 Código de Registro OB Numérico Len=2 Pos:01-02
a[ 2] = Id_Name(acre_Pais, Sufijo, acre_Nif) // 2 Identificador del Acreedor OB Alfanumérico Len=35 Pos:03-37
a[ 3] = Dec2Str(nTotImporte, 17) // 3 Total de Importes OB Numérico Len=17 Pos:38-54
a[ 4] = strzero(nRegistros, 8) // 4 Número de Adeudos OB Numérico Len=8 Pos:55-62
a[ 5] = strzero(nRegistros +3, 10) // 5 Total de Registros OB Numérico Len=10 Pos:63-72
a[ 6] = padR('', 528) // 6 Libre OB Alfanumérico Len=528 Pos:73-600
OutFile(nHandle, a)
/*
---------------------------------------------------
REGISTRO DE TOTALES GENERAL
---------------------------------------------------
*/
a := array(5)
a[ 1] = padR('99', 2) // 1 Código de Registro OB Numérico Len=2 Pos:01-02
a[ 2] = Dec2Str(nTotImporte, 17) // 2 Total de Importes OB Numérico Len=17 Pos:03-19
a[ 3] = strzero(nRegistros, 8) // 3 Número de Adeudos OB Numérico Len=8 Pos:20-27
a[ 4] = strzero(nRegistros +5, 10) // 4 Total de Registros OB Numérico Len=10 Pos:28-37
a[ 5] = padR('', 563) // 5 Libre OB Alfanumérico Len=563 Pos:38-600
OutFile(nHandle, a)
return NIL