Page 8 of 8

Re: Adeudos Directos SEPA en euros Esquema B2B

PostPosted: Wed Jan 29, 2014 8:54 am
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

Adeudos Directos SEPA en euros Esquema B2B

PostPosted: Mon Mar 17, 2014 9:01 pm
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.

Re: Adeudos Directos SEPA en euros Esquema B2B

PostPosted: Mon Mar 17, 2014 10:38 pm
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

Re: Adeudos Directos SEPA en euros Esquema B2B

PostPosted: Thu Oct 02, 2014 4:47 pm
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!.

Re: Adeudos Directos SEPA en euros Esquema B2B

PostPosted: Tue Oct 07, 2014 4:43 pm
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,

Re: Adeudos Directos SEPA en euros Esquema B2B

PostPosted: Sat Nov 07, 2015 5:30 pm
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.

Re: Adeudos Directos SEPA en euros Esquema B2B

PostPosted: Wed Nov 25, 2015 6:39 pm
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 ).


Re: Adeudos Directos SEPA en euros Esquema B2B

PostPosted: Wed Dec 02, 2015 11:19 am
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)

Re: Adeudos Directos SEPA en euros Esquema B2B

PostPosted: Wed Dec 02, 2015 11:30 am
by hmpaquito
Hola Andaretor,

Muchas gracias por tu aporte. Voy a probarlo.

Saludos

Re: Adeudos Directos SEPA en euros Esquema B2B

PostPosted: Thu Dec 03, 2015 8:09 pm
by Verhoven
Hay funciones que no aparecen:

ArreglaNombre

DCIdentificador

cGetDigitIDSEPA

¿Podías ponernos el código?
Gracias de antemano.

Re: Adeudos Directos SEPA en euros Esquema B2B

PostPosted: Mon Dec 14, 2015 3:40 pm
by elvira
Hola!,

¿Algún progreso?.

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

Muy agradecida ;).

Re: Adeudos Directos SEPA en euros Esquema B2B

PostPosted: Tue Dec 15, 2015 6:50 pm
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

Re: Adeudos Directos SEPA en euros Esquema B2B

PostPosted: Wed Dec 30, 2015 7:58 pm
by elvira
Amig@s,

¿Se sabe algo?.

Que dios os bendiga y feliz 2016.