Adeudos Directos SEPA en euros Esquema B2B

User avatar
Joaquim Ferrer
Posts: 58
Joined: Sat Jan 14, 2012 3:46 pm
Location: Barcelona

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by Joaquim Ferrer »

@lucasdebeltran, gracias por el aporte, creo que esta funcion podria simplificarse de este modo :

Code: Select all

//----------------------------------------------------------------//
FUNCTION GetBic(cEntidad)
//----------------------------------------------------------------//

local BIC:= {=>}
local cDevuelve

BIC["0030"]='ESPCESMMXXX'
...

/* Esto ya no es necesario 
nEnt     := val(cEntidad)
cEntidad := alltrim(str(nEnt))
*/

TRY
   cDevuelve := BIC[cEntidad]
CATCH
   cDevuelve := space(10)
END

Return cDevuelve
 
Las entidades bancarias en el hash tienen que ser TODAS de 4 dígitos, las menores a 1000 truncando con 0.
Por ejemplo Banesto 30 tiene que pasar a ser 0030.
A la funcion GetBic() se le pasará directamente el codigo de la entidad financiera, en este ejemplo, GetBic("0030")
Que os parece ?
Saludos
Fivewinner desde 1.9, programador PHP y Javascript, HTML5 evangelista
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by mastintin »

Joaquim Ferrer wrote:@lucasdebeltran, gracias por el aporte, creo que esta funcion podria simplificarse de este modo :


Las entidades bancarias en el hash tienen que ser TODAS de 4 dígitos, las menores a 1000 truncando con 0.
Por ejemplo Banesto 30 tiene que pasar a ser 0030.
A la funcion GetBic() se le pasará directamente el codigo de la entidad financiera, en este ejemplo, GetBic("0030")
Que os parece ?
Saludos
Joaquim , totalmente de acuerdo . Lo acabo de ver al revisar la funcion y ya esta posteado :-)
Por otro lado , parece que las funciones de harbour para crear xml no van como se esperaba , posteo el xml generado con tu codigo :

Code: Select all

<?xml version="1.0" encoding="utf-8"?><CstmrDrctDbtInitn><GrpHdr><MsgId /><CreDtTm /><NbOfTxs /><CtrlSum /><InitgPty><Nm /><Id><OrgId><BICOrBEI /><Othr><Id /><SchmeNm><Cd /><Prtry /></SchmeNm><Issr /></Othr></OrgId><PrvtId><DtAndPlcOfBirth><BirthDt /><PrvcOfBirth /><CityOfBirth /><CtryOfBirth /></DtAndPlcOfBirth><Othr><Id /><SchmeNm><Cd /><Prtry /></SchmeNm><Issr /></Othr></PrvtId></Id></InitgPty></GrpHdr></CstmrDrctDbtInitn>

 
User avatar
Joaquim Ferrer
Posts: 58
Joined: Sat Jan 14, 2012 3:46 pm
Location: Barcelona

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by Joaquim Ferrer »

mastintin wrote: Joaquim , totalmente de acuerdo . Lo acabo de ver al revisar la funcion y ya esta posteado :-)
Por otro lado , parece que las funciones de harbour para crear xml no van como se esperaba , posteo el xml generado con tu codigo :
No entiendo que quieres decir con que 'no se esperaba'. El XML está bien formado, aunque no lo veas con el 'sangrado' característico.
Intenta abrir ese XML en un navegador web y verás el arbol de nodos correctamente.
Saludos
Fivewinner desde 1.9, programador PHP y Javascript, HTML5 evangelista
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by mastintin »

Joaquim Ferrer wrote:
No entiendo que quieres decir con que 'no se esperaba'. El XML está bien formado, aunque no lo veas con el 'sangrado' característico.
Intenta abrir ese XML en un navegador web y verás el arbol de nodos correctamente.
Saludos
El arbol si esta bien formado pero las etiquetas no son iguales , me explico,
el archivo tendria que ser :
<NbOfTxs>1</NbOfTxs>
pero figura como :
<NbOfTxs />

Cuando no asignamos un valor al elemento no genera <etiqueta> valor <etiqueta> sino <etiqueta />
User avatar
fgondi
Posts: 636
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España
Contact:

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by fgondi »

Os paso el link desde donde se puede descargar una excel con todas las entidades y sus correspondientes bic. A parte de muchos mas datos.

http://www.bde.es/bde/es/secciones/serv ... fd821.html
Un saludo
Fernando González Diez
ALSIS GHE Sistemas Informáticos
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by mastintin »

mastintin wrote:
Joaquim Ferrer wrote:
No entiendo que quieres decir con que 'no se esperaba'. El XML está bien formado, aunque no lo veas con el 'sangrado' característico.
Intenta abrir ese XML en un navegador web y verás el arbol de nodos correctamente.
Saludos
El arbol si esta bien formado pero las etiquetas no son iguales , me explico,
el archivo tendria que ser :
<NbOfTxs>1</NbOfTxs>
pero figura como :
<NbOfTxs />

Cuando no asignamos un valor al elemento no genera <etiqueta> valor <etiqueta> sino <etiqueta />
Me contesto a mi mismo , solucionado , colocando un valor la etiqueta queda perfectamente:

Code: Select all


 NbOfTxs:= mxmlNewElement( GrpHdr, "NbOfTxs" )
    
   mxmlNewText(NbOfTxs, 0, "valor de la etiqueta")

 
tambien :

Code: Select all


local oDoc := mxmlNewXML()
 
   mxmlElementSetAttr( oDoc, "Document xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance" )
   mxmlElementSetAttr( oDoc, "xmlns","urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" )
 ....
 
User avatar
Joaquim Ferrer
Posts: 58
Joined: Sat Jan 14, 2012 3:46 pm
Location: Barcelona

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by Joaquim Ferrer »

@mastintin OK tu mismo te has contestado. Si no existe valor, la misma etiqueta es de apertura y cierre
El par <label></label> queda como <label/>

Bien por !

Code: Select all

 mxmlElementSetAttr( oDoc, "Document xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance" )
 mxmlElementSetAttr( oDoc, "xmlns","urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" )
 
:D
Fivewinner desde 1.9, programador PHP y Javascript, HTML5 evangelista
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by mastintin »

Joaquim Ferrer wrote: Bien por !

Code: Select all

 mxmlElementSetAttr( oDoc, "Document xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance" )
 mxmlElementSetAttr( oDoc, "xmlns","urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" )
 
:D
Pues no, mas bien Mal :-) , nos rompe el archivo :-( . Me devuelve error en el navegador .
La manera correcta es con este cambio :

Code: Select all


local oXml := mxmlNewXML()
   oDoc  := mxmlNewElement( oXml, "Document" ) 
   mxmlElementSetAttr( oDoc, "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance" )
   mxmlElementSetAttr( oDoc, "xmlns","urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" )
 ....
 mxmlSaveFile( oXml, "b2b.xml", MXML_NO_CALLBACK )

 
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by mastintin »

la funcion Getbic con _ y el hash ordenado para facilitar la inclusion de nuevos registros . Una opción buena seria crear una dbf ( otro el tipo de database que usemos ) con todos estos datos de entidades y sus bic , de esa forma añadir nuevos bic seria muy facil .

Code: Select all

//----------------------------------------------------------------//
FUNCTION GetBic(cEntidad)
//----------------------------------------------------------------//

local BIC:= {=>}
local nEnt
local cDevuelve

BIC["0003"]='BDEPESM1XXX'
BIC["0030"]='ESPCESMMXXX'
BIC["0031"]='ETCHES2GXXX'
BIC["0036"]='SABNESMMXXX'
BIC["0046"]='GALEES2GXXX'
BIC["0049"]='BSCHESMMXXX'
BIC["0057"]='BVADESMMXXX'
BIC["0058"]='BNPAESMMXXX'
BIC["0059"]='MADRESMMXXX'
BIC["0061"]='BMARES2MXXX'
BIC["0065"]='BARCESMMXXX'
BIC["0072"]='PSTRESMMXXX'
BIC["0073"]='OPENESMMXXX'
BIC["0075"]='POPUESMMXXX'
BIC["0078"]='BAPUES22XXX'
BIC["0081"]='BSABESBBXXX'
BIC["0083"]='RENBESMMXXX'
BIC["0086"]='NORTESMMXXX'
BIC["0093"]='VALEESVVXXX'
BIC["0094"]='BVALESMMXXX'
BIC["0099"]='AHCRESVVXXX'
BIC["0122"]='CITIES2XXXX'
BIC["0125"]='BAOFESM1XXX'
BIC["0128"]='BKBKESMMXXX'
BIC["0130"]='CGDIESMMXXX'
BIC["0133"]='MIKBESB1XXX'
BIC["0138"]='BKOAES22XXX'
BIC["0136"]='AREBESMMXXX'
BIC["0149"]='BNPAESMSXXX'
BIC["0160"]='BOTKESMXXXX'
BIC["0182"]='BBVAESMMXXX'
BIC["0184"]='BEDFESM1XXX'
BIC["0186"]='BFIVESBBXXX'
BIC["0188"]='ALCLESMMXXX'
BIC["0196"]='WELAESMMXXX'
BIC["0198"]='BCOEESMMXXX'
BIC["0200"]='PRVBESB1XXX'
BIC["0211"]='PROAESMMXXX'
BIC["0216"]='POHIESMMXXX'
BIC["0219"]='BMCEESMMXXX'
BIC["0220"]='FIOFESM1XXX'
BIC["0224"]='SCFBESMMXXX'
BIC["0227"]='UNOEESM1XXX'
BIC["0229"]='POPLESMMXXX'
BIC["0231"]='DSBLESMMXXX'
BIC["0232"]='INVLESMMXXX'
BIC["0233"]='POPIESMMXXX'
BIC["0234"]='CCOCESMMXXX'
BIC["0235"]='PICHESMMXXX'
BIC["0236"]='LOYIESMMXXX'
BIC["0237"]='CSURES2CXXX'
BIC["0487"]='GBMNESMMXXX'
BIC["1459"]='PRABESMMXXX'
BIC["1460"]='CRESESMMXXX'
BIC["1465"]='INGDESMMXXX'
BIC["1474"]='CITIESMXXXX'
BIC["1475"]='CCSEESM1XXX'
BIC["1480"]='VOWAES21XXX'
BIC["1490"]='SELFESMMXXX'
BIC["1491"]='TRIOESMMXXX'
BIC["1534"]='KBLXESMMXXX'
BIC["1544"]='BACAESMMXXX'
BIC["1545"]='AGRIESMMXXX'
BIC["2000"]='CECAESMMXXX'
BIC["2010"]='CECAESMM010'
BIC["2013"]='CESCESBBXXX'
BIC["2017"]='CECAESMM017'
BIC["2031"]='CECAESMM031'
BIC["2038"]='CAHMESMMXXX'
BIC["2043"]='CECAESMM043'
BIC["2045"]='CECAESMM045'
BIC["2048"]='CECAESMM048'
BIC["2051"]='CECAESMM051'
BIC["2056"]='CECAESMM056'
BIC["2066"]='CECAESMM066'
BIC["2080"]='CAGLESMMXXX'
BIC["2081"]='CECAESMM081'
BIC["2085"]='CAZRES2ZXXX'
BIC["2086"]='CECAESMM086'
BIC["2095"]='BASKES2BXXX'
BIC["2096"]='CSPAES2LXXX'
BIC["2099"]='CECAESMM099'
BIC["2100"]='CAIXESBBXXX'
BIC["2103"]='UCJAES2MXXX'
BIC["2104"]='CSSOES2SXXX'
BIC["2105"]='CECAESMM105'
BIC["2107"]='BBVAESMM107'
BIC["3001"]='BCOEESMM001'
BIC["3005"]='BCOEESMM005'
BIC["3007"]='BCOEESMM007'
BIC["3008"]='BCOEESMM008'
BIC["3009"]='BCOEESMM009'
BIC["3016"]='BCOEESMM016'
BIC["3017"]='BCOEESMM017'
BIC["3018"]='BCOEESMM018'
BIC["3020"]='BCOEESMM020'
BIC["3023"]='BCOEESMM023'
BIC["3025"]='CDENESBBXXX'
BIC["3029"]='CCRIES2A029'
BIC["3035"]='CLPEES2MXXX'
BIC["3045"]='CCRIES2A045'
BIC["3058"]='CCRIES2AXXX'
BIC["3059"]='BCOEESMM059'
BIC["3060"]='BCOEESMM060'
BIC["3063"]='BCOEESMM063'
BIC["3067"]='BCOEESMM067'
BIC["3070"]='BCOEESMM070'
BIC["3076"]='BCOEESMM076'
BIC["3080"]='BCOEESMM080'
BIC["3081"]='BCOEESMM081'
BIC["3084"]='CVRVES2BXXX'
BIC["3085"]='BCOEESMM085'
BIC["3089"]='BCOEESMM089'
BIC["3095"]='CCRIES2A095'
BIC["3096"]='BCOEESMM096'
BIC["3098"]='BCOEESMM098'
BIC["3102"]='BCOEESMM102'
BIC["3104"]='BCOEESMM104'
BIC["3105"]='CCRIES2A105'
BIC["3110"]='BCOEESMM110'
BIC["3111"]='BCOEESMM111'
BIC["3112"]='CCRIES2A112'
BIC["3113"]='BCOEESMM113'
BIC["3115"]='BCOEESMM115'
BIC["3116"]='BCOEESMM116'
BIC["3117"]='BCOEESMM117'
BIC["3118"]='CCRIES2A118'
BIC["3119"]='CCRIES2A119'
BIC["3121"]='CCRIES2A121'
BIC["3123"]='CCRIES2A123'
BIC["3127"]='BCOEESMM127'
BIC["3130"]='BCOEESMM130'
BIC["3134"]='BCOEESMM134'
BIC["3135"]='CCRIES2A135'
BIC["3137"]='CCRIES2A137'
BIC["3138"]='BCOEESMM138'
BIC["3140"]='BCOEESMM140'
BIC["3144"]='BCOEESMM144'
BIC["3146"]='CCCVESM1XXX'
BIC["3150"]='BCOEESMM150'
BIC["3152"]='CCRIES2A152'
BIC["3157"]='CCRIES2A157'
BIC["3159"]='BCOEESMM159'
BIC["3160"]='CCRIES2A160'
BIC["3162"]='BCOEESMM162'
BIC["3165"]='CCRIES2A165'
BIC["3166"]='BCOEESMM166'
BIC["3174"]='BCOEESMM174'
BIC["3177"]='BCOEESMM177'
BIC["3179"]='CCRIES2A179'
BIC["3183"]='CASDESBBXXX'
BIC["3186"]='CCRIES2A186'
BIC["3187"]='BCOEESMM187'
BIC["3188"]='CCRIES2A188'
BIC["3190"]='BCOEESMM190'
BIC["3191"]='BCOEESMM191'
BIC["9000"]='ESPBESMMXXX'

TRY
   cDevuelve := BIC[cEntidad]
CATCH
   cDevuelve := space(10)
END

Return cDevuelve
//----------------------------------------------------------------//

 
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by mastintin »

Intentando imitar el 1ºcodigo ejemplo que se puso . Parece que la cabecera ya se genera .Los datos están puestos como variables locales asignadas como primer paso .

Code: Select all

function main() 

 local cTipoDocumento := "pain.001.001.03"
 local cTransferID := "13/00001"
 local cFechaCreaDocu := CreaIsoDateTime()
 local cTotalImportes:="11111.11"
 local cOperaciones:="1" 
 local cNif := "B333333333"
    
 local etiRaizMensaje, GrpHdr ,oDoc 
 local xEtiqueta
  
 local oXml := mxmlNewXML()
 
   oDoc := mxmlNewElement( oXml, "Document" )
 
   mxmlElementSetAttr( oDoc, "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance" )
   mxmlElementSetAttr( oDoc, "xmlns","urn:iso:std:iso:20022:tech:xsd:"+cTipoDocumento )
   
   xEtiqueta := mxmlNewElement( oDoc, "CstmrDrctDbtInitn" )
   
   //------------------------- Añadimos Grupo Cabecera (unica y obligatoria ) ---------------------
   
    GrpHdr := mxmlNewElement( xEtiqueta , "GrpHdr" )
    
    xEtiqueta := mxmlNewElement( GrpHdr, "MsgId" )  // Identificacion del mensaje 35 caracteres maximo ( similar a codigo de remesa )
       mxmlNewText(xEtiqueta, 0, cTransferID ) // asignamos el cTransferID
      
    xEtiqueta := mxmlNewElement( GrpHdr, "CreDtTm" ) // fecha creacion formato ISO
       mxmlNewText( xEtiqueta, 0, cFechaCreaDocu ) // asignamos el cFechaCreaDocu
       
    xEtiqueta:= mxmlNewElement( GrpHdr, "NbOfTxs" ) // numero de operaciones individuales (para control )
       mxmlNewText(xEtiqueta, 0, cOperaciones)
       
     xEtiqueta:= mxmlNewElement( GrpHdr, "CtrlSum" )  //Suma de importes imcluidos ( para control)
       mxmlNewText(xEtiqueta, 0, cTotalImportes)
       
     xEtiqueta := mxmlNewElement( GrpHdr, "InitgPty" ) // iniciador del pago ( identifica al pagador)
      xEtiqueta :=  mxmlNewElement( xEtiqueta, "Nm" )
        mxmlNewText(xEtiqueta, 0, cNif )  //  el NIF-Sufijo (12 caracteres) cuyo uso tenga acordado con su entidad financiera

    // --------------------- fin cabecera ------------------


     mxmlSaveFile( oXML, "b2b.xml", MXML_NO_CALLBACK ) 

   
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by mastintin »

Un poco mas avanzado , por hoy aqui lo dejo :

---------------- editado -------------------------------
Mas completo . He terminado con el ejemplo . ahora necesitamos un documento "real" de cada una de las normas para poder ajustarlo a las distintas variante.
Creo que lo suyo es empezar por nominas de un solo pagador que es lo mas comun y facil .¿ Alguien puede conseguir un archivo correcto y generados ?

Code: Select all


function main() 

 local cTipoDocumento := "pain.001.001.03"
 local cTransferID := "13/00001"
 local cFechaCreaDocu := CreaIsoDateTime()
 local cTotalImportes := 0
 local cOperaciones,cFechaPago
 local cNif := "B333333333"
  local aRecibos:= { "Recibo1" ,"TRF", 11111.11 , Date()+3 ,;
                                     "ORDENANTE","CODIGO_IBAN_ORDENANTE","BIC_ORDENANTE","SLEV" ,{ "n_recibo","id_extremo" ,"BIC_destino"   } }
 local i
    
 local etiRaizMensaje, GrpHdr ,oDoc , GrpPAgos , GrpTrasf
 local xEtiqueta,xEtiqueta1
  
 local oXml := mxmlNewXML()
 
//   cOperaciones := len(aRecibos)
   
cOperaciones := 1

   for i= 1 to cOperaciones 
      cTotalImportes:= cTotalImportes + aRecibos[3]
   next
   
   cTotalImportes := alltrim( str( cTotalImportes , 10, 2))
 
   oDoc := mxmlNewElement( oXml, "Document" )
 
   mxmlElementSetAttr( oDoc, "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance" )
   mxmlElementSetAttr( oDoc, "xmlns","urn:iso:std:iso:20022:tech:xsd:"+cTipoDocumento )
   
   etiRaizMensaje := mxmlNewElement( oDoc, "CstmrDrctDbtInitn" )
   
   //------------------------- Añadimos Grupo Cabecera (unica y obligatoria ) ---------------------
   
    GrpHdr := mxmlNewElement( etiRaizMensaje , "GrpHdr" )
    
    xEtiqueta := mxmlNewElement( GrpHdr, "MsgId" )  // Identificacion del mensaje 35 caracteres maximo ( similar a codigo de remesa )
       mxmlNewText(xEtiqueta, 0, cTransferID ) // asignamos el cTransferID
      
    xEtiqueta := mxmlNewElement( GrpHdr, "CreDtTm" ) // fecha creacion formato ISO
       mxmlNewText( xEtiqueta, 0, cFechaCreaDocu ) // asignamos el cFechaCreaDocu
       
    xEtiqueta:= mxmlNewElement( GrpHdr, "NbOfTxs" ) // numero de operaciones individuales (para control )
       mxmlNewText(xEtiqueta, 0, cOperaciones)
       
     xEtiqueta:= mxmlNewElement( GrpHdr, "CtrlSum" )  //Suma de importes imcluidos ( para control)
       mxmlNewText(xEtiqueta, 0, cTotalImportes)
       
     xEtiqueta := mxmlNewElement( GrpHdr, "InitgPty" ) // iniciador del pago ( identifica al pagador)
      xEtiqueta :=  mxmlNewElement( xEtiqueta, "Nm" )
        mxmlNewText(xEtiqueta, 0, cNif )  //  el NIF-Sufijo (12 caracteres) cuyo uso tenga acordado con su entidad financiera
        
   //------------------------- Añadimos Grupo Informacion de pagos --------------------- 
   
    GrpPAgos := mxmlNewElement( etiRaizMensaje , "PmtInf" )    // inicio bloque de informacion de pagos
    
       xEtiqueta := mxmlNewElement( GrpPAgos , "PmtInfId" )   // codigo de "recibo"
        mxmlNewText(xEtiqueta, 0, aRecibos[1] ) 
        
       xEtiqueta := mxmlNewElement( GrpPAgos , "PmtMtd" ) //metodo de pago (TRF/CHK) trasferencia o cheque
        mxmlNewText(xEtiqueta, 0, aRecibos[2] ) 
     
       xEtiqueta := mxmlNewElement( GrpPAgos , "NbOfTxs" ) // numero de operaciones individuales (para control )
        mxmlNewText(xEtiqueta, 0, cOperaciones ) 
        
       xEtiqueta := mxmlNewElement( GrpPAgos , "CtrlSum" ) //Suma de importes imcluidos ( para control)
        mxmlNewText(xEtiqueta, 0, cTotalImportes ) 
         
       xEtiqueta := mxmlNewElement( GrpPAgos , "PmtTpInf" )  // etiqueta de inicio bloque tipo de pago
          xEtiqueta := mxmlNewElement( xEtiqueta , "SvcLvl" ) // etiqueta de inicio bloque nivel de servicio
            xEtiqueta := mxmlNewElement( xEtiqueta , "Cd" ) // codigo de servicio fijo SEPA
                     mxmlNewText(xEtiqueta, 0, "SEPA" ) 
                     
       xEtiqueta := mxmlNewElement( GrpPAgos , "ReqdExctnDt" ) //Fecha de ejecución solicitada
        cFechapago:= CreateIsoDate(aRecibos[4])
        mxmlNewText(xEtiqueta, 0, cFechaPago )
        
       xEtiqueta := mxmlNewElement( GrpPAgos , "Dbtr" )   // etiquet inicio identificacion ordenante
         xEtiqueta := mxmlNewElement( xEtiqueta , "Nm" )  // nombre del ordenante
         mxmlNewText(xEtiqueta, 0, aRecibos[5] )
         
       xEtiqueta := mxmlNewElement( GrpPAgos , "DbtrAcct" )   // inicio etiqueta cuenta iban ordenante
         xEtiqueta1 := mxmlNewElement( xEtiqueta , "Id" )  
            xEtiqueta1 := mxmlNewElement( xEtiqueta1 , "IBAN" )  
            mxmlNewText(xEtiqueta1, 0, aRecibos[6] )
                 xEtiqueta1 := mxmlNewElement( xEtiqueta , "Ccy" ) // divisa
             mxmlNewText(xEtiqueta1, 0, "EUR" )
             
      xEtiqueta := mxmlNewElement( GrpPAgos , "DbtrAgt" )   // etiqueta entidad ordenante      
        xEtiqueta1 := mxmlNewElement( xEtiqueta , "FinInstnId" )  // etiqueta identificacion entidad ordenanate
          xEtiqueta1 := mxmlNewElement( xEtiqueta1 , "BIC" )   // BIC entidad ordenante
            mxmlNewText(xEtiqueta1, 0, aRecibos[7] )  
      
      xEtiqueta := mxmlNewElement( GrpPAgos , "ChrgBr" ) // clausula de gastos (CRED/DEBT/SHAR/SLEV) benefici/ordenante /compartidos/ acordados
      mxmlNewText(xEtiqueta, 0, aRecibos[8] )        
   
   
   //---------------------------- inicio subBloque  informacion trasferencia 
   
          GrpTrasf := mxmlNewElement( GrpPAgos , "CdtTrfTxInf" )  // bloque de informacion trasferencia

       xEtiqueta := mxmlNewElement( GrpTrasf  , "PmtId" ) // bloque instrucciones de pago
         xEtiqueta1 := mxmlNewElement( xEtiqueta  , "InstrId" )  // numero de recibo max 35caracteres
           mxmlNewText(xEtiqueta1, 0, aRecibos[9,1] )           
         xEtiqueta1 := mxmlNewElement( xEtiqueta  , "EndToEndId" ) // identificador de extremo a extremo ¿?
                   mxmlNewText(xEtiqueta1, 0, aRecibos[9,2] )
                   
             xEtiqueta := mxmlNewElement( GrpTrasf  , "Amt" )    // bloque de importe
               xEtiqueta1 := mxmlNewElement( xEtiqueta  , "InstdAmt" )
                mxmlElementSetAttr( xEtiqueta1, "Ccy","EUR" )     // importe dos decimales 11 digitos total usar "."
                mxmlNewText(xEtiqueta1, 0, alltrim(str(aRecibos[3]) )  )
                
            xEtiqueta := mxmlNewElement( GrpTrasf  , "CdtrAgt" )      // entidad del beneficiario 
                xEtiqueta1 := mxmlNewElement( xEtiqueta  , "FinInstnId" )   
            xEtiqueta1 := mxmlNewElement( xEtiqueta1 , "BIC" )   // bic beneficiario 
             mxmlNewText(xEtiqueta1, 0, aRecibos[9,3] )  
             
        xEtiqueta := mxmlNewElement( GrpTrasf  , "Cdtr" )    // beneficiario     
        xEtiqueta1 := mxmlNewElement( xEtiqueta  , "Nm" )    
         mxmlNewText(xEtiqueta1, 0, "Nombre_beneficiario" )  
         
     xEtiqueta := mxmlNewElement( GrpTrasf  , "CdtrAcct" )       
       xEtiqueta1 := mxmlNewElement( xEtiqueta  , "Id" )          
          xEtiqueta1 := mxmlNewElement( xEtiqueta1  , "IBAN" )      //iban beneficiario       
           mxmlNewText(xEtiqueta1, 0, "iban_beneficiario" )  
      
     xEtiqueta := mxmlNewElement( GrpTrasf  , "RmtInf" )     // informacion transacion
       xEtiqueta1 := mxmlNewElement( xEtiqueta  , "Ustrd" )      // descripcion maximo 140caracteres
        mxmlNewText(xEtiqueta1, 0, "Texto descriptivo de la transaccion" )   
             

//-------------   fin subbloque  informacion trasferencia 
   
   mxmlSaveFile( oXML, "b2b.xml", MXML_NO_CALLBACK )
    
    
return NIL

FUNCTION CreaIsoDateTime()
   LOCAL cFecha:= Dtos(Date())
RETURN CreateIsoDate()+"T"+Time()

Function CreateIsoDate(dDate)
 LOCAL cFecha
DEFAULT dDate:= Date()
    cFecha:= Dtos(dDate)
RETURN Left(cfecha,4)+"-"+SubStr(cFecha,5,2)+"-"+SubStr(cFecha,7,2)




 
User avatar
Joaquim Ferrer
Posts: 58
Joined: Sat Jan 14, 2012 3:46 pm
Location: Barcelona

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by Joaquim Ferrer »

En https://secure.sepaeditor.com/ previo registro es posible acceder a un editor SEPA, ya que la utilidad que ofrece Banco Sabadell solamente genera las normas en formato texto.
No he podido probar -no soy cliente- el GUS http://empresa.lacaixa.es/transferencia ... us_es.html, veo si puedo conseguirlo de algún cliente y a ver si genera formatos XML.
De momento, con la utilidad online de sepaeditor he conseguido generar el siguiente formato :

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
 <CstmrCdtTrfInitn>
  <GrpHdr>
   <MsgId>SCT REMITT 20/10/2013 18 46 16</MsgId>
   <CreDtTm>2013-10-20T18:50:15.3197840+02:00</CreDtTm>
   <NbOfTxs>1</NbOfTxs>
   <CtrlSum>1234.56</CtrlSum>
   <InitgPty>
    <Nm>Empresa acreedora</Nm>
   </InitgPty>
  </GrpHdr>
  <PmtInf>
   <PmtInfId>20102013185015</PmtInfId>
   <PmtMtd>TRF</PmtMtd>
   <BtchBookg>false</BtchBookg>
   <NbOfTxs>1</NbOfTxs>
   <CtrlSum>1234.56</CtrlSum>
   <PmtTpInf>
    <SvcLvl>
     <Cd>SEPA</Cd>
    </SvcLvl>
   </PmtTpInf>
   <ReqdExctnDt>2013-10-21</ReqdExctnDt>
   <Dbtr>
    <Nm>Empresa acreedora</Nm>
    <PstlAdr>
     <PstCd>08014</PstCd>
     <TwnNm>barcelona</TwnNm>
     <Ctry>ES</Ctry>
     <AdrLine>calle tres, 45</AdrLine>
    </PstlAdr>
    <CtryOfRes>ES</CtryOfRes>
   </Dbtr>
   <DbtrAcct>
    <Id>
     <IBAN>ES0700120345030000067890</IBAN>
    </Id>
    <Ccy>EUR</Ccy>
   </DbtrAcct>
   <DbtrAgt>
    <FinInstnId>
     <BIC>SOGEESPA000</BIC>
    </FinInstnId>
   </DbtrAgt>
   <ChrgBr>SLEV</ChrgBr>
   <CdtTrfTxInf>
    <PmtId>
     <InstrId>end id</InstrId>
     <EndToEndId>instruction id</EndToEndId>
    </PmtId>
    <Amt>
     <InstdAmt Ccy="EUR">1234.56</InstdAmt>
    </Amt>
    <CdtrAgt>
     <FinInstnId>
      <BIC>SOGEESPP000</BIC>
     </FinInstnId>
    </CdtrAgt>
    <Cdtr>
     <Nm>pepeillo el deudor</Nm>
     <PstlAdr>
      <PstCd>08028</PstCd>
      <TwnNm>city</TwnNm>
      <Ctry>ES</Ctry>
      <AdrLine>adr1 adr2</AdrLine>
      <AdrLine>adr3</AdrLine>
     </PstlAdr>
     <Id>
      <OrgId>
       <Othr>
        <Id>B3333445566</Id>
        <SchmeNm>
         <Cd>SRET</Cd>
        </SchmeNm>
       </Othr>
      </OrgId>
     </Id>
     <CtryOfRes>ES</CtryOfRes>
    </Cdtr>
    <CdtrAcct>
     <Id>
      <IBAN>ES0700120345030000067890</IBAN>
     </Id>
    </CdtrAcct>
    <RmtInf>
     <Ustrd>comunications</Ustrd>
    </RmtInf>
   </CdtTrfTxInf>
  </PmtInf>
 </CstmrCdtTrfInitn>
</Document>
 
Fivewinner desde 1.9, programador PHP y Javascript, HTML5 evangelista
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by mastintin »

Pongo un enlace del documento que tienen que firmar los clientes para autorizar _ . Es para el modelo b2b .
http://img820.imageshack.us/img820/7162/bp.pdf
User avatar
Manuel Aranda
Posts: 561
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by Manuel Aranda »

Un pequeño aporte: El documento PDF de domiciliación que ha facilitado Manuel para fusionarlo con nuestros datos. Espero os sea de utilidad.
http://www.ge.tt/21mzjFw/v/0?c
Un saludo,
Manuel

xH 1.2.3, FWH 14.09, BC++ 5.8.2, xVerce CW 1.0, PellesC
User avatar
fgondi
Posts: 636
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España
Contact:

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by fgondi »

Manuel,

Muy bueno. Muchas gracias
Un saludo
Fernando González Diez
ALSIS GHE Sistemas Informáticos
Post Reply