Adeudos Directos SEPA en euros Esquema B2B

hmpaquito
Posts: 1200
Joined: Thu Oct 30, 2008 2:37 pm

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by hmpaquito »

Parece que en el formato texto 19.14 o 19.44, la referencia:

Campo 7: Identificación del fichero: referencia que asigna el presentador al fichero, para su envío a
la entidad receptora.

Esta referencia se estructurará de la siguiente manera, tomando los datos generados
por el ordenador del presentador en el momento de la creación del fichero:
• Indicador del tipo de mensaje (3 caracteres)
• AAAAMMDD (año, mes y día) = (8 caracteres)
• HHMMSSmmmmm (hora minuto segundo y 5 posiciones de milisegundos = 11
caracteres)
• Referencia identificativa que asigne el presentador (13 caracteres)

El indicador de tipo de mensaje tomará el valor:

PRE Fichero de presentación de adeudos

Un ejemplo de Identificación de un fichero de presentación:
PRE20101105223542122450159300491893
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Adeudos Directos SEPA en euros Esquema B2B

Post by Verhoven »

¿Está alguien usándolo ya de forma habitual para generar recibos domiciliados?. Parece que en general en los bancos se siguen aceptando los ficheros planos de texto con las normas antiguas pues los clientes de las empresas que generan estos recibos se resisten a firmar la orden de pago, por aquello de no poder devolver los recibos si no están de acuerdo, y antes que perder clientes prefieren seguir trabajando como hasta ahora.

¿Hay alguna recopilación de funciones para el asunto SEPA?.

Saludos.
User avatar
informaticaeloy
Posts: 118
Joined: Fri Dec 20, 2013 10:39 am
Location: Zaragoza, España
Contact:

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by informaticaeloy »

Hola. Precisamente, a mis clientes, hoy les han notificado desde Ibarcaja que el 17 de marzo funcionaría la norma 19 y el día 18 no, así que aquí estoy, preparando la 19.14
Windows 10 + FWH 20.08 + BCC 7.4 + Harbour 3.2.0 + PSPad 5.0.3
User avatar
mgsoft
Posts: 398
Joined: Mon Aug 17, 2009 12:18 pm
Location: España

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by mgsoft »

Hola,

Un cliente mío de Barcelona tiene problemas con el carácter ’, que es el chr(146) pero en ascii no me sale en el MED, pero sí que lo meten al programa, y no se admite por SEPA.

¿A alguien le ha sucedido?.

Muchas gracias!.
Saludos,

Eduardo
FiveWiDi
Posts: 910
Joined: Mon Oct 10, 2005 2:38 pm

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by FiveWiDi »

mgsoft wrote:Hola,

Un cliente mío de Barcelona tiene problemas con el carácter ’, que es el chr(146) pero en ascii no me sale en el MED, pero sí que lo meten al programa, y no se admite por SEPA.

¿A alguien le ha sucedido?.

Muchas gracias!.
SEPA dice que admite todos estos:

Local cCaracteresOK := "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

cCaracteresOk := cCaracteresOk + Lower( cCaracteresOk )
cCaracteresOk := cCaracteresOk + "1234567890"
cCaracteresOk := cCaracteresOk + "/-?:().,'+ "

y consigo meterle un literal (sacado del fichero TXT que le doy al banco) así (sin las doble comillas):

"...edelroser.COM 'Consulta rebut' Codi:..."

Saludos,
Un Saludo
Carlos G.

FiveWin 19.06 + Harbour 3.2, BCC 7 Windows 10
elvira
Posts: 462
Joined: Fri Jun 29, 2012 12:49 pm

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by elvira »

Hola,

Alguno tiene funcionando el xml?. El Banco dice que desde febrero de 2016 todo tiene que ser xml y no admitirán txt!!!!.

Muy agradecida.
hmpaquito
Posts: 1200
Joined: Thu Oct 30, 2008 2:37 pm

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by hmpaquito »

Muy estimados,

Se acerca la fatídica fecha del primero de febrero de 2016.

Ese día parece que nuestras remesas habrán de estar codificadas en formato xml. Los
usuarios ya empiezan a estar nerviosos porque los bancos ya les van dando "toquecitos"
de que tienen que pasarselas como archivos .xml.

Probando la clase de Joaquín Ferrer (gracias Joaquin) me encuentro que me da errores.
¿ Alguien la está usando en producción ?

gracias de antemano.

PD. Aquí los errores generados con el testSEPA.xml contra su schema:
  • ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}MsgId': [facet 'maxLength'] The value has a length of '36'; this exceeds the allowed maximum length of '35'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}MsgId': '
    PRE2015112518544068080REMESA001 ' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}Max35Text'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}CreDtTm': '
    2015-11-25T18:54:40' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}ISODateTime'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}NbOfTxs': [facet 'pattern'] The value '
    3' is not accepted by the pattern '[0-9]{1,15}'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}NbOfTxs': '
    3' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}Max15NumericText'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}BICOrBEI': [facet 'pattern'] The value '
    BSABESBBXXX' is not accepted by the pattern '[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}BICOrBEI': '
    BSABESBBXXX' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}AnyBICIdentifier'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}PmtInfId': [facet 'maxLength'] The value has a length of '37'; this exceeds the allowed maximum length of '35'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}PmtInfId': '
    PRE2015112518544068080REMESA001-0001' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}Max35Text'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}PmtMtd': [facet 'enumeration'] The value '
    DD' is not an element of the set {'DD'}.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}PmtMtd': '
    DD' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}PaymentMethod2Code'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}BtchBookg': '
    TRUE' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}BatchBookingIndicator'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}NbOfTxs': [facet 'pattern'] The value '
    1' is not accepted by the pattern '[0-9]{1,15}'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}NbOfTxs': '
    1' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}Max15NumericText'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}Cd': [facet 'maxLength'] The value has a length of '5'; this exceeds the allowed maximum length of '4'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}Cd': '
    SEPA' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}ExternalServiceLevel1Code'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}SeqTp': [facet 'enumeration'] The value '
    RCUR' is not an element of the set {'FRST', 'RCUR', 'FNAL', 'OOFF'}.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}SeqTp': '
    RCUR' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}SequenceType1Code'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}ReqdColltnDt': '
    2014-03-03' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}ISODate'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}ChrgBr': This element is not expected. Expected is ( {urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}CdtrAcct ).
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}PmtInfId': [facet 'maxLength'] The value has a length of '37'; this exceeds the allowed maximum length of '35'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}PmtInfId': '
    PRE2015112518544068080REMESA001-0001' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}Max35Text'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}PmtMtd': [facet 'enumeration'] The value '
    DD' is not an element of the set {'DD'}.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}PmtMtd': '
    DD' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}PaymentMethod2Code'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}BtchBookg': '
    TRUE' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}BatchBookingIndicator'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}NbOfTxs': [facet 'pattern'] The value '
    1' is not accepted by the pattern '[0-9]{1,15}'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}NbOfTxs': '
    1' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}Max15NumericText'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}Cd': [facet 'maxLength'] The value has a length of '5'; this exceeds the allowed maximum length of '4'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}Cd': '
    SEPA' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}ExternalServiceLevel1Code'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}SeqTp': [facet 'enumeration'] The value '
    RCUR' is not an element of the set {'FRST', 'RCUR', 'FNAL', 'OOFF'}.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}SeqTp': '
    RCUR' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}SequenceType1Code'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}ReqdColltnDt': '
    2014-03-13' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}ISODate'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}ChrgBr': This element is not expected. Expected is ( {urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}CdtrAcct ).
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}PmtInfId': [facet 'maxLength'] The value has a length of '37'; this exceeds the allowed maximum length of '35'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}PmtInfId': '
    PRE2015112518544068080REMESA001-0001' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}Max35Text'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}PmtMtd': [facet 'enumeration'] The value '
    DD' is not an element of the set {'DD'}.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}PmtMtd': '
    DD' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}PaymentMethod2Code'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}BtchBookg': '
    TRUE' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}BatchBookingIndicator'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}NbOfTxs': [facet 'pattern'] The value '
    1' is not accepted by the pattern '[0-9]{1,15}'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}NbOfTxs': '
    1' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}Max15NumericText'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}Cd': [facet 'maxLength'] The value has a length of '5'; this exceeds the allowed maximum length of '4'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}Cd': '
    SEPA' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}ExternalServiceLevel1Code'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}SeqTp': [facet 'enumeration'] The value '
    RCUR' is not an element of the set {'FRST', 'RCUR', 'FNAL', 'OOFF'}.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}SeqTp': '
    RCUR' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}SequenceType1Code'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}ReqdColltnDt': '
    2014-03-23' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}ISODate'.
    ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}ChrgBr': This element is not expected. Expected is ( {urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}CdtrAcct ).
andaretor
Posts: 2
Joined: Thu Nov 27, 2014 11:58 am

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by andaretor »

Hola:
Yo lo he hecho un poco rudimentario pero me lo ha aceptado el banco. Aquí os dejo cómo he elaborado el XML.
Espero que os sirva.

Ahora estoy con el tema de las devoluciones.

Un saludo.


fichero := "PRUEBA.xml"
nHandle:= FCreate( fichero )
// RAIZ DEL MENSAJE
cadena := "<?xml version=" + CHR(34) + "1.0" + CHR(34) + " encoding=" + CHR(34) + "utf-8" + CHR(34) + "?>"
FWriteLn( nHandle , cadena )
cadena := "<Document xmlns=" + CHR(34) + "urn:iso:std:iso:20022:tech:xsd:pain.008.001.02" + CHR(34) + " xmlns:xsi=" + CHR(34) + "http://www.w3.org/2001/XMLSchema-instance" + CHR(34) + ">"
FWriteLn( nHandle , cadena )
cadena := "<CstmrDrctDbtInitn>"
FWriteLn( nHandle , cadena )
// CABECERA
cadena := "<GrpHdr>"
FWriteLn( nHandle , cadena )
cadena := "<MsgId>" + "PRE" + Str( Year( date() ), 4 ) + Padl( Month( date() ), 2, "0" ) + Padl( Day( date() ), 2, "0" ) + Padr( cTime, 11, "0" ) + Padr( oDatos[ ( dbGesBanco )->( fieldpos( "Codigo" ) ) ], 13, "0" ) + "</MsgId>"
FWriteLn( nHandle , cadena )
cadena := "<CreDtTm>" + Str( Year( date() ), 4 ) + "-" + Padl( Month( date() ), 2, "0" ) + "-" + Padl( Day( date() ), 2, "0" ) + "T" + time() + "</CreDtTm>"
FWriteLn( nHandle , cadena )
cadena := "<NbOfTxs>" + AllTrim( Str( nCont ) ) + "</NbOfTxs>"
FWriteLn( nHandle , cadena )
cadena := "<CtrlSum>" + AllTrim( Transform( nTotImp, cPictImpSEPA(.F.) ) ) + "</CtrlSum>"
FWriteLn( nHandle , cadena )
cadena := "<InitgPty>"
FWriteLn( nHandle , cadena )
cadena := "<Nm>" + AllTrim( Padr( ArreglaNombre( oDatos[ ( dbGesBanco )->( fieldpos( "NOMBRE" ) ) ] ), 70, " " ) ) + "</Nm>"
FWriteLn( nHandle , cadena )
cadena := "<Id>"
FWriteLn( nHandle , cadena )
cadena := "<OrgId>"
FWriteLn( nHandle , cadena )
cadena := "<Othr>"
FWriteLn( nHandle , cadena )
cadena := "<Id>" + AllTrim( "ES" + cGetDigitIDSEPA( AllTrim( oDatos[ ( dbGesBanco )->( fieldpos( "NIF" ) ) ] ), "ES" ) + oDatos[ ( dbGesBanco )->( fieldpos( "Sufijo" ) ) ] + Padr( oDatos[ ( dbGesBanco )->( fieldpos( "NIF" ) ) ], 28, " " ) ) + "</Id>"
FWriteLn( nHandle , cadena )
cadena := "</Othr>"
FWriteLn( nHandle , cadena )
cadena := "</OrgId>"
FWriteLn( nHandle , cadena )
cadena := "</Id>"
FWriteLn( nHandle , cadena )
cadena := "</InitgPty>"
FWriteLn( nHandle , cadena )
cadena := "</GrpHdr>"
FWriteLn( nHandle , cadena )

// INFORMACION DEL PAGO
cadena := "<PmtInf>"
FWriteLn( nHandle , cadena )
cadena := "<PmtInfId>" + Str( Year( date() ), 4 ) + Padl( Month( date() ), 2, "0" ) + Padl( Day( date() ), 2, "0" ) + Padr( cTime, 11, "0" ) + Padr( oDatos[ ( dbGesBanco )->( fieldpos( "Codigo" ) ) ], 13, "0" ) + "</PmtInfId>"
FWriteLn( nHandle , cadena )
cadena := "<PmtMtd>DD</PmtMtd>"
FWriteLn( nHandle , cadena )
cadena := "<PmtTpInf>"
FWriteLn( nHandle , cadena )
cadena := "<SvcLvl>"
FWriteLn( nHandle , cadena )
cadena := "<Cd>SEPA</Cd>"
FWriteLn( nHandle , cadena )
cadena := "</SvcLvl>"
FWriteLn( nHandle , cadena )
cadena := "<LclInstrm>"
FWriteLn( nHandle , cadena )
cadena := "<Cd>CORE</Cd>"
FWriteLn( nHandle , cadena )
cadena := "</LclInstrm>"
FWriteLn( nHandle , cadena )
cadena := "<SeqTp>RCUR</SeqTp>"
FWriteLn( nHandle , cadena )
cadena := "</PmtTpInf>"
FWriteLn( nHandle , cadena )
cadena := "<ReqdColltnDt>" + Str( Year( dFecha ), 4 ) + "-" + Padl( Month( dFecha ), 2, "0" ) + "-" + Padl( Day( dFecha ), 2, "0" ) + "</ReqdColltnDt>"
FWriteLn( nHandle , cadena )
cadena := "<Cdtr>"
FWriteLn( nHandle , cadena )
cadena := "<Nm>" + AllTrim( Padr( ArreglaNombre( oDatos[ ( dbGesBanco )->( fieldpos( "NOMBRE" ) ) ] ), 70, " " ) ) + "</Nm>"
FWriteLn( nHandle , cadena )
cadena := "</Cdtr>"
FWriteLn( nHandle , cadena )
cadena := "<CdtrAcct>"
FWriteLn( nHandle , cadena )
cadena := "<Id>"
FWriteLn( nHandle , cadena )
cadena := "<IBAN>" + AllTrim( Padr( oDatos[ ( dbGesBanco )->( fieldpos( "CCCABONO" ) ) ], 34, " " ) ) + "</IBAN>"
FWriteLn( nHandle , cadena )
cadena := "</Id>"
FWriteLn( nHandle , cadena )
cadena := "</CdtrAcct>"
FWriteLn( nHandle , cadena )
cadena := "<CdtrAgt>"
FWriteLn( nHandle , cadena )
cadena := "<FinInstnId>"
FWriteLn( nHandle , cadena )
cadena := "</FinInstnId>"
FWriteLn( nHandle , cadena )
cadena := "</CdtrAgt>"
FWriteLn( nHandle , cadena )
cadena := "<CdtrSchmeId>"
FWriteLn( nHandle , cadena )
cadena := "<Id>"
FWriteLn( nHandle , cadena )
cadena := "<PrvtId>"
FWriteLn( nHandle , cadena )
cadena := "<Othr>"
FWriteLn( nHandle , cadena )
cadena := "<Id>" + AllTrim( "ES" + cGetDigitIDSEPA( AllTrim( oDatos[ ( dbGesBanco )->( fieldpos( "NIF" ) ) ] ), "ES" ) + oDatos[ ( dbGesBanco )->( fieldpos( "Sufijo" ) ) ] + Padr( oDatos[ ( dbGesBanco )->( fieldpos( "NIF" ) ) ], 28, " " ) ) + "</Id>"
FWriteLn( nHandle , cadena )
cadena := "<SchmeNm>"
FWriteLn( nHandle , cadena )
cadena := "<Prtry>SEPA</Prtry>"
FWriteLn( nHandle , cadena )
cadena := "</SchmeNm>"
FWriteLn( nHandle , cadena )
cadena := "</Othr>"
FWriteLn( nHandle , cadena )
cadena := "</PrvtId>"
FWriteLn( nHandle , cadena )
cadena := "</Id>"
FWriteLn( nHandle , cadena )
cadena := "</CdtrSchmeId>"
FWriteLn( nHandle , cadena )

// INFORMACION DEL ADEUDO DIRECTO
( cDbTmp )->( DbGoTop() )
nCont := 0
nTotImp := 0
nContReg := 0
While ( cDbTmp )->( !Eof() )
If ( cDbTmp )->LSELECT .and. ( cDBTmp )->IMPORTE > 0
nCont ++
nTotImp += ( cDbTmp )->IMPORTE

cadena := "<DrctDbtTxInf>"
FWriteLn( nHandle , cadena )
cadena := "<PmtId>"
FWriteLn( nHandle , cadena )
cadena := "<EndToEndId>" + Padr( "REMESA HERMANDAD REF. "+oDatos[ ( dbGesBanco )->( fieldpos( "Codigo" ) ) ]+( cDbTmp )->CODIGO, 35, " " ) + "</EndToEndId>"
FWriteLn( nHandle , cadena )
cadena := "</PmtId>"
FWriteLn( nHandle , cadena )
cadena := "<InstdAmt Ccy=" + CHR(34) + "EUR" + CHR(34) + ">" + AllTrim( Transform( ( cDbTmp )->IMPORTE, cPictImpSEPA(.F.) ) ) + "</InstdAmt>"
FWriteLn( nHandle , cadena )
cadena := "<DrctDbtTx>"
FWriteLn( nHandle , cadena )
cadena := "<MndtRltdInf>"
FWriteLn( nHandle , cadena )
cadena := "<MndtId>" + Padr( ( cDbTmp )->REFBANCO, 35, " " ) + "</MndtId>"
FWriteLn( nHandle , cadena )
cadena := "<DtOfSgntr>" + Str( Year( ( cDbTmp )->MANDATO ), 4 ) + "-" + Padl( Month( ( cDbTmp )->MANDATO ), 2, "0" ) + "-" + Padl( Day( ( cDbTmp )->MANDATO ), 2, "0" ) + "</DtOfSgntr>"
FWriteLn( nHandle , cadena )
cadena := "</MndtRltdInf>"
FWriteLn( nHandle , cadena )
cadena := "</DrctDbtTx>"
FWriteLn( nHandle , cadena )
cadena := "<DbtrAgt>"
FWriteLn( nHandle , cadena )
cadena := "<FinInstnId>"
FWriteLn( nHandle , cadena )
cadena := "</FinInstnId>"
FWriteLn( nHandle , cadena )
cadena := "</DbtrAgt>"
FWriteLn( nHandle , cadena )
cadena := "<Dbtr>"
FWriteLn( nHandle , cadena )
cadena := "<Nm>" + AllTrim( Padr( ArreglaNombre( AllTrim( ( cDbTmp )->NOMBRE ) + " " + AllTrim( ( cDbTmp )->APELLIDOS ) ), 70, " " ) ) + "</Nm>"
FWriteLn( nHandle , cadena )
cadena := "</Dbtr>"
FWriteLn( nHandle , cadena )
cadena := "<DbtrAcct>"
FWriteLn( nHandle , cadena )
cadena := "<Id>"
FWriteLn( nHandle , cadena )
cadena := "<IBAN>" + AllTrim( Padr( "ES" + DCIdentificador( ( cDbTmp )->CBANCO + ( cDbTmp )->COFICINA + ( cDbTmp )->CCUENTA + "ES00" ) + ( cDbTmp )->CBANCO + ( cDbTmp )->COFICINA + ( cDbTmp )->CCUENTA, 34, " " ) ) + "</IBAN>"
FWriteLn( nHandle , cadena )
cadena := "</Id>"
FWriteLn( nHandle , cadena )
cadena := "</DbtrAcct>"
FWriteLn( nHandle , cadena )
cadena := "<RmtInf>"
FWriteLn( nHandle , cadena )
cadena := "<Ustrd>" + AllTrim( Padr( ArreglaNombre( AllTrim( ( cDbTmp )->OBSERV ) ), 140, " " ) ) + "</Ustrd>"
FWriteLn( nHandle , cadena )
cadena := "</RmtInf>"
FWriteLn( nHandle , cadena )
cadena := "</DrctDbtTxInf>"
FWriteLn( nHandle , cadena )
end if
( cDbTmp )->( DbSkip() )
end while

cadena := "</PmtInf>"
FWriteLn( nHandle , cadena )

cadena := "</CstmrDrctDbtInitn>"
FWriteLn( nHandle , cadena )

cadena := "</Document>"
FWriteLn( nHandle , cadena )

FClose(nHandle)
hmpaquito
Posts: 1200
Joined: Thu Oct 30, 2008 2:37 pm

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by hmpaquito »

Hola Andaretor,

Muchas gracias por tu aporte. Voy a probarlo.

Saludos
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by Verhoven »

Hay funciones que no aparecen:

ArreglaNombre

DCIdentificador

cGetDigitIDSEPA

¿Podías ponernos el código?
Gracias de antemano.
elvira
Posts: 462
Joined: Fri Jun 29, 2012 12:49 pm

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by elvira »

Hola!,

¿Algún progreso?.

Yo probé también el código de Quimm y no funciona correctamente.

Muy agradecida ;).
User avatar
thefull
Posts: 720
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona
Contact:

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by thefull »

Buenas

Por lo que veo, los errores son de validación , no de estructura del XML, por poner un ejemplo ;
ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.008.001.02}PmtInfId': [facet 'maxLength'] The value has a length of '37'; this exceeds the allowed maximum length of '35'

Dicen bien claro que estas pasando un valor de longitud de 37, cuando el máx. es de 35.
Por lo tanto, la clase o funcion que crea el XML , debería tener en cuenta el XSD para que cumple el XML.

Saludos Cordiales
Saludos
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
elvira
Posts: 462
Joined: Fri Jun 29, 2012 12:49 pm

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by elvira »

Amig@s,

¿Se sabe algo?.

Que dios os bendiga y feliz 2016.
Post Reply