Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Normativa SEPA XML ISO 20022
Ir a página Anterior  1, 2
 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Responder citando

Pues yo lo he hecho lo más fácil que he podido, y para generar el XML uso el componente XMLDocument, con el que usando nodos, igual que si fuera una treeview, montas el documento sin problemas.

Para leer y extraer campos no se si será sencillo, porque como uso una base de datos de almacén, sólo necesito crear el documento.

Solo hay un inconveniente que solucionar y es que no permite incluir dos cabeceras, y la inicial que determina el tipo de documento, la tengo que incluir de forma manual por medio de un StringList.

Un ejemplo

Código:
     //RAIZ DEL MENSAJE
     XMLDocument1->DocumentElement = XMLDocument1->CreateElement("CstmrDrctDbtInitn", "");
      //INICIO CABECERA
      iNode = XMLDocument1->DocumentElement->AddChild(WideString("GrpHdr"));
       iNodeLevel = iNode->AddChild(WideString("MsgId"));                              //++identificación mensaje
       //iNodeLevel->SetAttribute("value", " ");
       String valor;
       valor = EditCifOrdenante->Text + "-" + FormatDateTime("yymmdd-hh:nn",Now());
       iNodeLevel->SetNodeValue(valor);                                            //35
       iNodeLevel = iNode->AddChild(WideString("CreDtTm"));                            //++Fecha hora creacion
       valor = FormatDateTime("yyyy-mm-dd hh:nn:ss",Now());
       iNodeLevel->SetNodeValue(StringReplace(valor, " ", "T", TReplaceFlags() << rfReplaceAll));


y al final de la creación de documento añado

Código:

   TStringList *ArchivoFinal;
   ArchivoFinal = new TStringList();
   ArchivoFinal->Assign(XMLDocument1->XML);

   //añadir el root del mensaje XML, que no se puede hacer directo debido a las limitaciones del componente XMLDocument
   ArchivoFinal->Insert(0,"<Document xmlns=\"urn:iso:std:iso:20022:tech:xsd:pain.008.001.02\" xmlns:xsi=\"http:?//www.w3.org/2001/XMLSchema-instance\">") ;
   ArchivoFinal->Insert(0,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>") ;

   ArchivoFinal->SaveToFile(NomFicheroXML) ;
Volver arriba
Ver perfil de usuario Enviar mensaje privado Dirección AIM
Mensaje    Asunto: Re: xml SEPA Responder citando

SumSum escribió:
Yo lo he enfocado con el XMLMapper generando una estructura de lectura que llamo Norma19ToDp.xtr y escritura que llamo Norma19ToXml.xtr.


Asum,

Estoy probando lo que dices y aparentemente va bien, pero cuando modifico un registro ademas de darme error el fichero XML como que se queda vacio.

Creo que el problema lo tengo en el XMLMapper al generar las estructuras de lectura y escritura.

Podrías decirme como las generas? que pasos das en el XMLMapper?

Un abrazo.

Carlos
_________________
Carlos J. Fernandez
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

frios escribió:
Código:

   TStringList *ArchivoFinal;
   ArchivoFinal = new TStringList();
   ArchivoFinal->Assign(XMLDocument1->XML);

   //añadir el root del mensaje XML, que no se puede hacer directo debido a las limitaciones del componente XMLDocument
   ArchivoFinal->Insert(0,"<Document xmlns=\"urn:iso:std:iso:20022:tech:xsd:pain.008.001.02\" xmlns:xsi=\"http:?//www.w3.org/2001/XMLSchema-instance\">") ;
   ArchivoFinal->Insert(0,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>") ;

   ArchivoFinal->SaveToFile(NomFicheroXML) ;

Pues a mi para añadir la línea Document xmlns... me funciona bien así:
Código:
XMLDocument1->DocumentElement = XMLDocument1->CreateElement("Document","urn:iso:std:iso:20022:tech:xsd:pain.008.001.02");

La que no logro meter es la otra (<?xml version="1.0" encoding="UTF-8"?>)
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

aunque no se refiere al SEPA XML, tengo un problema con los SEPA's normales y pregunto para ver si es problema mio o de los bancos

Hace unos días (casi 10 meses después del cambio) han empezado algunos clientes míos a quejarse por que les devuelven los recibos con motivos como mandato caducado, cuenta bloqueada, recibo fuera de rango.... etc

Puesto en contacto con algunos de estos bancos me han informado que el tipo de adeudo lo tengo mal. Este puede ser pago único o pago recurrente. Yo usaba pago único porque muchos de los recibos son únicos, aunque al mismo cliente se le giren 1 o 2 al año, o 1 en toda la vida, cosa que de momento no podemos saber
El "encargado" de los ficheros del banco santander me ha dicho que los ficheros deben ser TODOS recurrentes y hacer el primero tipo FRST y el resto RCUR y dejar FNAL para anular el mandato.

Mi pregunta ¿lo estáis haciendo así?

Gracias y saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

A mi me ocurrió lo mismo, y es que los manuales de la AEB en ese sentido son bastante oscuros. Te cuento lo que me dijeron a mi.

Busca los dos manuales en la web de la AEB:

- Folleto 19-44. versión febrero 2014 (Formato normal)
- Órdenes en formato ISO 20022 para emisión de adeudos directos SEPA-Esquema básico versión febrero 2014 (Formato XML)

Hay cuatro tipos de adeudos:
    - FRST: Si es la primera vez que a ese deudor se le gira un recibo.
    - FNAL: Si es el último recibo que se pasa a un deudor.
    - OOFF: (¡Ojo! Dos oes y no dos ceros) Si sólo se le pasa ese recibo y no se le va a pasar ninguno más
    - RCUR: Si es un recibo que se va a pasar periódicamente.

Explicándolo un poco mejor:
    - FRST: Uno se da de alta en cualquier sitio (compañía de seguros, Telefónica, Asociación. etc.). El primer recibo que se le pase al cobro debe ir con esa marca.
    - RCUR: Cada uno de los recibos sucesivos que se pasen, independientemente del importe, si proceden del mismo acreedor (antes se llamaba ordenante).

Además de esto, en todos los recibos hay un campo llamado Fecha de firma del mandato, campo AT-25 (en el folleto en formato normal aparece por primera vez en la página 20 y en el formato XML en la página 35 y es el apartado 2.49 como DtOfSgntr, dentro de la etiqueta Información del mandato - MndtRltdInf). Este campo indica la fecha en la que el deudor dio el visto bueno al pago de esas órdenes; si ANTES de que se genere el primer fichero en formato SEPA ya estaba pagando los recibos en ese campo hay que poner como fecha el 31/10/2009, en el formato que nos indiquen (AAAMMDD si no es XML y AAAA-MM-DD en caso contrario); en caso contrario, aquella en la que firmó la autorización. En mi caso, en la Asociación de Internautas para los nuevos socios pongo como fecha el día en que proceso el alta.

Si tienes dudas, no dejes de decírmelo.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Muchas gracias Angel
Solo quería saber si se tenía que usar recurrente en todos y veo que así es

Yo entendía que recurrente era cuando un cliente paga su factura en varios plazos y no cuando es un recibo por factura.

Muchísimas gracias Angel

saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Te pasó lo mismo que a mi, y me devolvieron entera la segunda remesa que pasé.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola,
Angel, la línea que intentas meter en el Xml no creo que sea posible, ya que no contempla duplicar cabezeras. La solución que yo busqué fue:
Código:
   TStringList *ArchivoFinal;
   ArchivoFinal = new TStringList();
   ArchivoFinal->Assign(XMLDocument1->XML);

   //añadir el root del mensaje XML, que no se puede hacer directo debido a las limitaciones del componente XMLDocument
   ArchivoFinal->Insert(0,"<Document>") ;
   ArchivoFinal->Insert(0,"<xml>") ;
   ArchivoFinal->Append("</Document>");


   ArchivoFinal->SaveToFile(NomFicheroXML) ;


Por otra parte, yo siempre he puesto los recibos recurrentes, y nunca he usado el FIRST, y hasta ahora no he tenido problemas con eso.

Cuidado con la fecha del mandato, según que bancos no la consultan, pero otros ni siquiera me han dejado usar fechas anteriores al dos de enero del 2012.

Mis clientes usan bancos muy diferentes, y lo que en unos vale en otros no. Poco a poco se van estandarizando, pero aún tengo algunos que no me admiten el XML, solo en 19.14 SEPA. Y si nos pasamos al 19.15 o COR1, ya se complica que da gusto. Remesas que en la oficina no pasan por errores (que por cierto el operario no te sabe decir cual es nunca), en el mismo banco, a través de la banca electrónica pasan sin problemas.
En fin, un desastre!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Dirección AIM
Mensaje    Asunto: Responder citando

frios escribió:
Por otra parte, yo siempre he puesto los recibos recurrentes, y nunca he usado el FIRST, y hasta ahora no he tenido problemas con eso.

Pues a mi ya me han rechazado una operación de un nuevo socio por no haber puesto FIRST. Como dices, depende de los bancos.
frios escribió:
Cuidado con la fecha del mandato, según que bancos no la consultan, pero otros ni siquiera me han dejado usar fechas anteriores al dos de enero del 2012.

Eso si que no tiene sentido pues esa fecha de 31/10/2009 viene en los dos cuadernos de carga y se usa sólo para distinguir quien estaba pagando ya antes de la entarda en vigor de la normativa SEPA.
frios escribió:
Mis clientes usan bancos muy diferentes, y lo que en unos vale en otros no. Poco a poco se van estandarizando, pero aún tengo algunos que no me admiten el XML, solo en 19.14 SEPA. Y si nos pasamos al 19.15 o COR1, ya se complica que da gusto. Remesas que en la oficina no pasan por errores (que por cierto el operario no te sabe decir cual es nunca), en el mismo banco, a través de la banca electrónica pasan sin problemas.

¡Uy! Y sé de alguno que todavía NO acepta ningún formato SEPA y se siguen presentando con la norma antigua.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.