Adeudos Directos SEPA en euros Esquema B2B

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 »

Esta es la función que uso para calcular el iban:
Hay que pasar 2 parametros: el pais y la cuenta bancaria.

Code: Select all

func Iban( cPais, cCCC)
*--- Calcular c¢digo Iban de una cuenta
local i, cAux := cCCC

cPais := Upper( cPais)
i := asc( substr( cPais, 1, 1)) - 55   // A := 10, B := 11, E := 14, ...
cAux := cCcc + Str( i, 2)
i := asc( substr( cPais, 2, 1)) - 55
cAux += Str( i, 2)+'00'
i := 98 - RestoDiv( cAux, 97)
return cPais+Padl( i, 2, '0')+cCCC
 
En cuanto a los Swift/Bic os dejo un pdf con los codigos de cada entidad
http://www.bde.es/f/webbde/SPA/sispago/ ... BE_BIC.pdf
Con esto _ todo, quedaría si alguna sucursal tiene su propio código (usan los 3 ultimos signos, "XXX", para identificarse)

¿Alguien tiene un fichero xml que nos sirva a modo de ejemplo para poder construir los soportes magnéticos?
Por ahora no consigo dar con ninguno, y las aplicaciones de los bancos o bien son On-line o lo que generan es un archivo de texto plano.
Un saludo
Fernando González Diez
ALSIS GHE Sistemas Informáticos
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 »

Buenas

Recuperando funciones que pueden servir
https://github.com/QuimFerrer/sepa

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 »

codigo javscript para el bic .... un array con los bancos ( sustituible por un Hash ) y una funcion que se puede pasar a harbour ...

Code: Select all

var BIC = new Array()
BIC[30]='ESPCESMMXXX';
BIC[73]='OPENESMMXXX';
BIC[83]='RENBESMMXXX';
BIC[122]='CITIES2XXXX';
BIC[186]='BFIVESBBXXX';
BIC[200]='PRVBESB1XXX';
BIC[224]='SCFBESMMXXX';
BIC[1545]='AGRIESMMXXX';
BIC[49]='BSCHESMMXXX';
BIC[36]='SABNESMMXXX';
BIC[86]='NORTESMMXXX';
BIC[61]='BMARES2MXXX';
BIC[65]='BARCESMMXXX';
BIC[75]='POPUESMMXXX';
BIC[3]='BDEPESM1XXX';
BIC[72]='PSTRESMMXXX';
BIC[216]='POHIESMMXXX';
BIC[229]='POPLESMMXXX';
BIC[233]='POPIESMMXXX';
BIC[1459]='PRABESMMXXX';
BIC[81]='BSABESBBXXX';
BIC[231]='DSBLESMMXXX';
BIC[93]='VALEESVVXXX';
BIC[128]='BKBKESMMXXX';
BIC[182]='BBVAESMMXXX';
BIC[57]='BVADESMMXXX';
BIC[58]='BNPAESMMXXX';
BIC[130]='CGDIESMMXXX';
BIC[136]='AREBESMMXXX';
BIC[149]='BNPAESMSXXX';
BIC[196]='WELAESMMXXX';
BIC[219]='BMCEESMMXXX';
BIC[220]='FIOFESM1XXX';
BIC[227]='UNOEESM1XXX';
BIC[236]='LOYIESMMXXX';
BIC[1460]='CRESESMMXXX';
BIC[1534]='KBLXESMMXXX';
BIC[1544]='BACAESMMXXX';
BIC[2107]='BBVAESMM107';
BIC[198]='BCOEESMMXXX';
BIC[94]='BVALESMMXXX';
BIC[184]='BEDFESM1XXX';
BIC[188]='ALCLESMMXXX';
BIC[235]='PICHESMMXXX';
BIC[1490]='SELFESMMXXX';
BIC[1491]='TRIOESMMXXX';
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[3059]='BCOEESMM059';
BIC[3060]='BCOEESMM060';
BIC[3063]='BCOEESMM063';
BIC[3067]='BCOEESMM067';
BIC[3070]='BCOEESMM070';
BIC[3076]='BCOEESMM076';
BIC[3080]='BCOEESMM080';
BIC[3081]='BCOEESMM081';
BIC[3085]='BCOEESMM085';
BIC[3089]='BCOEESMM089';
BIC[3096]='BCOEESMM096';
BIC[3098]='BCOEESMM098';
BIC[3104]='BCOEESMM104';
BIC[3111]='BCOEESMM111';
BIC[3113]='BCOEESMM113';
BIC[3115]='BCOEESMM115';
BIC[3116]='BCOEESMM116';
BIC[3117]='BCOEESMM117';
BIC[3127]='BCOEESMM127';
BIC[3130]='BCOEESMM130';
BIC[3134]='BCOEESMM134';
BIC[3138]='BCOEESMM138';
BIC[3144]='BCOEESMM144';
BIC[3146]='CCCVESM1XXX';
BIC[3150]='BCOEESMM150';
BIC[3159]='BCOEESMM159';
BIC[3162]='BCOEESMM162';
BIC[3166]='BCOEESMM166';
BIC[3174]='BCOEESMM174';
BIC[3187]='BCOEESMM187';
BIC[3190]='BCOEESMM190';
BIC[3191]='BCOEESMM191';
BIC[2000]='CECAESMMXXX';
BIC[125]='BAOFESM1XXX';
BIC[138]='BKOAES22XXX';
BIC[211]='PROAESMMXXX';
BIC[487]='GBMNESMMXXX';
BIC[1474]='CITIESMXXXX';
BIC[1480]='VOWAES21XXX';
BIC[2010]='CECAESMM010';
BIC[2017]='CECAESMM017';
BIC[2031]='CECAESMM031';
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[2086]='CECAESMM086';
BIC[2096]='CSPAES2LXXX';
BIC[2099]='CECAESMM099';
BIC[2103]='UCJAES2MXXX';
BIC[2104]='CSSOES2SXXX';
BIC[2105]='CECAESMM105';
BIC[2013]='CESCESBBXXX';
BIC[2038]='CAHMESMMXXX';
BIC[99]='AHCRESVVXXX';
BIC[232]='INVLESMMXXX';
BIC[2085]='CAZRES2ZXXX';
BIC[2095]='BASKES2BXXX';
BIC[59]='MADRESMMXXX';
BIC[237]='CSURES2CXXX';
BIC[2100]='CAIXESBBXXX';
BIC[133]='MIKBESB1XXX';
BIC[3058]='CCRIES2AXXX';
BIC[46]='GALEES2GXXX';
BIC[31]='ETCHES2GXXX';
BIC[78]='BAPUES22XXX';
BIC[160]='BOTKESMXXXX';
BIC[234]='CCOCESMMXXX';
BIC[1465]='INGDESMMXXX';
BIC[1475]='CCSEESM1XXX';
BIC[3025]='CDENESBBXXX';
BIC[3029]='CCRIES2A029';
BIC[3035]='CLPEES2MXXX';
BIC[3045]='CCRIES2A045';
BIC[3084]='CVRVES2BXXX';
BIC[3095]='CCRIES2A095';
BIC[3102]='BCOEESMM102';
BIC[3105]='CCRIES2A105';
BIC[3110]='BCOEESMM110';
BIC[3112]='CCRIES2A112';
BIC[3118]='CCRIES2A118';
BIC[3119]='CCRIES2A119';
BIC[3121]='CCRIES2A121';
BIC[3123]='CCRIES2A123';
BIC[3135]='CCRIES2A135';
BIC[3137]='CCRIES2A137';
BIC[3140]='BCOEESMM140';
BIC[3152]='CCRIES2A152';
BIC[3157]='CCRIES2A157';
BIC[3160]='CCRIES2A160';
BIC[3165]='CCRIES2A165';
BIC[3177]='BCOEESMM177';
BIC[3179]='CCRIES2A179';
BIC[3183]='CASDESBBXXX';
BIC[3186]='CCRIES2A186';
BIC[3188]='CCRIES2A188';
BIC[9000]='ESPBESMMXXX';

function getBIC(form, lang)
{
    if (lang == "en") {
        alert('This conversion tool is provided for information purposes only. The authors reserve the right to remove or cancel its diffusion, either partially or in whole, as well as to modify its structure or contents without previous notice. Access to the information supplied by this tool can be restricted or forbidden anytime.\n\n Though every attempt has been made to ensure that the information contained in this tool is reliable and up-to-date in order to try to avoid and minimize potential mistakes, the authors are not responsible for any errors, omissions or even for the interruption of the service. Hence, all information in this site is provided "as is", with no guarantee of completeness, accuracy, timeliness or of the results obtained from the use of this information.\n\n In no event will the authors be liable to provide compensation to anyone for any decisions made or actions taken in reliance of the information obtained from the use of this tool or for any consequential, special or similar damages including those on the user software or hardware, even if advised of the possibility of such damages. \n\nBy using this conversion tool, you acknowledge you have read, understood and accepted the above provisions and agreed with the terms of the service.');
    } else {
        alert('La presente herramienta de conversión se facilita únicamente a título informativo, reservándose los autores el derecho de eliminar o suspender su difusión, total o parcialmente, y de modificar la estructura y contenido de esta herramienta sin aviso previo, pudiendo incluso limitar o no permitir el acceso a la información que suministra dicha herramienta.\n\n El propósito de los autores es mantener la calidad y actualización de su información y evitar y minimizar posibles errores causados por fallos. Sin embargo, no garantiza que este servicio no sea interrumpido o afectado por eventuales fallos. \n\nComo consecuencia de lo anterior, los autores no responderán de los daños o _ por decisiones tomadas en base a la información obtenida de esta herramienta; ni de posibles inexactitudes, omisiones o errores contenidos en dicha información, ni de los problemas que se originen por el uso de esta herramienta, ni de los daños y/o perjuicios en el software o hardware del usuario que se deriven su utilización. \n\nLos usuarios de esta herramienta, al acceder a la misma, aceptan la presente cláusula, estando de acuerdo con su contenido.');
    }
    var a=form.entitat.value;
    if (!validarCC(form)) {
            document.getElementById("ibanprintxt").innerHTML="";
        if (lang == "en") {
                alert('The account number is incorrect.');
            } else {
                alert('El numero de cuenta introducido es incorrecto.');
            
            }
        }
    else {
        while (a.substr(0,1)=="0") a=a.substr(1);
        document.getElementById("bictxt").innerHTML = BIC[a]; 
    }
}

 
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 »

@fgondi este puede ser un XML básico, tengo identificados _

Code: Select all

<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>transferID</MsgId>
            <CreDtTm>2013-07-17T17:07:12</CreDtTm>
            <NbOfTxs>1</NbOfTxs>
            <CtrlSum>0.02</CtrlSum>
            <InitgPty>
                <Nm>Me</Nm>
            </InitgPty>
        </GrpHdr>
        <PmtInf>
            <PmtInfId>Payment Info ID</PmtInfId>
            <PmtMtd>TRF</PmtMtd>
            <NbOfTxs>1</NbOfTxs>
            <CtrlSum>0.02</CtrlSum>
            <PmtTpInf>
                <SvcLvl>
                    <Cd>SEPA</Cd>
                </SvcLvl>
            </PmtTpInf>
            <ReqdExctnDt>2013-07-17</ReqdExctnDt>
            <Dbtr>
                <Nm>My Corp</Nm>
            </Dbtr>
            <DbtrAcct>
                <Id>
                    <IBAN>MY_ACCOUNT_IBAN</IBAN>
                </Id>
                <Ccy>EUR</Ccy>
            </DbtrAcct>
            <DbtrAgt>
                <FinInstnId>
                    <BIC>MY_BANK_BIC</BIC>
                </FinInstnId>
            </DbtrAgt>
            <ChrgBr>SLEV</ChrgBr>
            <CdtTrfTxInf>
                <PmtId>
                    <InstrId>Id shown in bank statement</InstrId>
                    <EndToEndId>transferID/0</EndToEndId>
                </PmtId>
                <Amt>
                    <InstdAmt Ccy="EUR">0.02</InstdAmt>
                </Amt>
                <CdtrAgt>
                    <FinInstnId>
                        <BIC>THEIR_BANK_BIC</BIC>
                    </FinInstnId>
                </CdtrAgt>
                <Cdtr>
                    <Nm>THEIR_NAME</Nm>
                </Cdtr>
                <CdtrAcct>
                    <Id>
                        <IBAN>THEIR_IBAN</IBAN>
                    </Id>
                </CdtrAcct>
                <RmtInf>
                    <Ustrd>Transaction description</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 »

en esta direcion viene que son cada campo y un ejemplo de archivo ... http://docs.oracle.com/cd/E39564_01/doc ... e_appx.htm
tambien a modo de lectura el libro de formatos iso 20022 para dummies que tiene ejemplos de archivos: http://www.iso20022.ch/resources/iso_dummies.pdf
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 »

Muchas gracias
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 »

La funcion GetBic de antes pasada de javascript a harbour :

Code: Select all

Function GetBic(cEntidad)

local Bic:= {=>}
local nEnt

BIC["30"]='ESPCESMMXXX';
BIC["73"]='OPENESMMXXX';
BIC["83"]='RENBESMMXXX';
BIC["122"]='CITIES2XXXX';
BIC["186"]='BFIVESBBXXX';
BIC["200"]='PRVBESB1XXX';
BIC["224"]='SCFBESMMXXX';
BIC["1545"]='AGRIESMMXXX';
BIC["49"]='BSCHESMMXXX';
BIC["36"]='SABNESMMXXX';
BIC["86"]='NORTESMMXXX';
BIC["61"]='BMARES2MXXX';
BIC["65"]='BARCESMMXXX';
BIC["75"]='POPUESMMXXX';
BIC["3"]='BDEPESM1XXX';
BIC["72"]='PSTRESMMXXX';
BIC["216"]='POHIESMMXXX';
BIC["229"]='POPLESMMXXX';
BIC["233"]='POPIESMMXXX';
BIC["1459"]='PRABESMMXXX';
BIC["81"]='BSABESBBXXX';
BIC["231"]='DSBLESMMXXX';
BIC["93"]='VALEESVVXXX';
BIC["128"]='BKBKESMMXXX';
BIC["182"]='BBVAESMMXXX';
BIC["57"]='BVADESMMXXX';
BIC["58"]='BNPAESMMXXX';
BIC["130"]='CGDIESMMXXX';
BIC["136"]='AREBESMMXXX';
BIC["149"]='BNPAESMSXXX';
BIC["196"]='WELAESMMXXX';
BIC["219"]='BMCEESMMXXX';
BIC["220"]='FIOFESM1XXX';
BIC["227"]='UNOEESM1XXX';
BIC["236"]='LOYIESMMXXX';
BIC["1460"]='CRESESMMXXX';
BIC["1534"]='KBLXESMMXXX';
BIC["1544"]='BACAESMMXXX';
BIC["2107"]='BBVAESMM107';
BIC["198"]='BCOEESMMXXX';
BIC["94"]='BVALESMMXXX';
BIC["184"]='BEDFESM1XXX';
BIC["188"]='ALCLESMMXXX';
BIC["235"]='PICHESMMXXX';
BIC["1490"]='SELFESMMXXX';
BIC["1491"]='TRIOESMMXXX';
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["3059"]='BCOEESMM059';
BIC["3060"]='BCOEESMM060';
BIC["3063"]='BCOEESMM063';
BIC["3067"]='BCOEESMM067';
BIC["3070"]='BCOEESMM070';
BIC["3076"]='BCOEESMM076';
BIC["3080"]='BCOEESMM080';
BIC["3081"]='BCOEESMM081';
BIC["3085"]='BCOEESMM085';
BIC["3089"]='BCOEESMM089';
BIC["3096"]='BCOEESMM096';
BIC["3098"]='BCOEESMM098';
BIC["3104"]='BCOEESMM104';
BIC["3111"]='BCOEESMM111';
BIC["3113"]='BCOEESMM113';
BIC["3115"]='BCOEESMM115';
BIC["3116"]='BCOEESMM116';
BIC["3117"]='BCOEESMM117';
BIC["3127"]='BCOEESMM127';
BIC["3130"]='BCOEESMM130';
BIC["3134"]='BCOEESMM134';
BIC["3138"]='BCOEESMM138';
BIC["3144"]='BCOEESMM144';
BIC["3146"]='CCCVESM1XXX';
BIC["3150"]='BCOEESMM150';
BIC["3159"]='BCOEESMM159';
BIC["3162"]='BCOEESMM162';
BIC["3166"]='BCOEESMM166';
BIC["3174"]='BCOEESMM174';
BIC["3187"]='BCOEESMM187';
BIC["3190"]='BCOEESMM190';
BIC["3191"]='BCOEESMM191';
BIC["2000"]='CECAESMMXXX';
BIC["125"]='BAOFESM1XXX';
BIC["138"]='BKOAES22XXX';
BIC["211"]='PROAESMMXXX';
BIC["487"]='GBMNESMMXXX';
BIC["1474"]='CITIESMXXXX';
BIC["1480"]='VOWAES21XXX';
BIC["2010"]='CECAESMM010';
BIC["2017"]='CECAESMM017';
BIC["2031"]='CECAESMM031';
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["2086"]='CECAESMM086';
BIC["2096"]='CSPAES2LXXX';
BIC["2099"]='CECAESMM099';
BIC["2103"]='UCJAES2MXXX';
BIC["2104"]='CSSOES2SXXX';
BIC["2105"]='CECAESMM105';
BIC["2013"]='CESCESBBXXX';
BIC["2038"]='CAHMESMMXXX';
BIC["99"]='AHCRESVVXXX';
BIC["232"]='INVLESMMXXX';
BIC["2085"]='CAZRES2ZXXX';
BIC["2095"]='BASKES2BXXX';
BIC["59"]='MADRESMMXXX';
BIC["237"]='CSURES2CXXX';
BIC["2100"]='CAIXESBBXXX';
BIC["133"]='MIKBESB1XXX';
BIC["3058"]='CCRIES2AXXX';
BIC["46"]='GALEES2GXXX';
BIC["31"]='ETCHES2GXXX';
BIC["78"]='BAPUES22XXX';
BIC["160"]='BOTKESMXXXX';
BIC["234"]='CCOCESMMXXX';
BIC["1465"]='INGDESMMXXX';
BIC["1475"]='CCSEESM1XXX';
BIC["3025"]='CDENESBBXXX';
BIC["3029"]='CCRIES2A029';
BIC["3035"]='CLPEES2MXXX';
BIC["3045"]='CCRIES2A045';
BIC["3084"]='CVRVES2BXXX';
BIC["3095"]='CCRIES2A095';
BIC["3102"]='BCOEESMM102';
BIC["3105"]='CCRIES2A105';
BIC["3110"]='BCOEESMM110';
BIC["3112"]='CCRIES2A112';
BIC["3118"]='CCRIES2A118';
BIC["3119"]='CCRIES2A119';
BIC["3121"]='CCRIES2A121';
BIC["3123"]='CCRIES2A123';
BIC["3135"]='CCRIES2A135';
BIC["3137"]='CCRIES2A137';
BIC["3140"]='BCOEESMM140';
BIC["3152"]='CCRIES2A152';
BIC["3157"]='CCRIES2A157';
BIC["3160"]='CCRIES2A160';
BIC["3165"]='CCRIES2A165';
BIC["3177"]='BCOEESMM177';
BIC["3179"]='CCRIES2A179';
BIC["3183"]='CASDESBBXXX';
BIC["3186"]='CCRIES2A186';
BIC["3188"]='CCRIES2A188';
BIC["9000"]='ESPBESMMXXX';

nEnt:= val(cEntidad)
cEntidad:=alltrim(str(nEnt))

Return BIC[cEntidad] 

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

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by FiveWiDi »

Este foro es una maravilla. No he empezado a mirar el asunto y ya hay mucha información aquí.
Muchas gracias a todos por compartir toda esta información.
Un Saludo
Carlos G.

FiveWin 19.06 + Harbour 3.2, BCC 7 Windows 10
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by mastintin »

Otra funcion necesaria :

1.2 Fecha y hora de creación - CreationDateTime
• Definición: Fecha y hora cuando la parte iniciadora ha creado un (grupo de) instrucciones de pago.
• Etiqueta XML: <CreDtTm>
• Ocurrencias: [1..1]
• Formato: ISODateTime YYYY-MM-DDThh:mm:ss (Año-mes-día)
Ejemplo: 10 de junio de 2010, a las 08:35 horas y 30 segundos.
<CreDtTm>2010-06-10T08:35:30</CreDtTm>

Se ha dividido en dos funciones pues CreateisoDate() se usa tambien para :

2.17 Fecha de ejecución solicitada - RequestedExecutionDate
• Definición: Fecha en la que la parte iniciadora solicita a la entidad del ordenante que procese el pago. Es la fecha en la que se adeudarán las transferencias en la cuenta del ordenante.
• Etiqueta XML: <ReqdExctnDt>
• Ocurrencias: [1..1]
• Formato: ISODate: YYYY-MM-DD (Año-Mes-Día)

Code: Select all


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


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

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

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by mastintin »

Siguiendo el archivo puesto por Joaquim Ferrer he ido identificando _ y los he comentado . Pongo de momento solo la cabecera del archivo para no hacer un "taco" de mensaje.

Code: Select all


<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"> // inicio de documento 
    <CstmrCdtTrfInitn>  // etiqueta raiz del mensaje (unica y obligatoria )

        <GrpHdr>  // etiqueta de cabecera de grupo (unica y obligatoria )
            <MsgId>transferID</MsgId>  // Identificacion del mensaje 35 caracteres maximo ( similar a codigo de remesa )
            <CreDtTm>2013-07-17T17:07:12</CreDtTm> // fecha creacion formato ISO
            <NbOfTxs>1</NbOfTxs>   // numero de operaciones individuales (para control )
            <CtrlSum>0.02</CtrlSum> //Suma de importes imcluidos ( para control)
            <InitgPty> // iniciador del pago ( identifica al pagador)
                <Nm>Me</Nm> // el NIF-Sufijo (12 caracteres) cuyo uso tenga acordado con su entidad financiera
            </InitgPty>
        </GrpHdr> // fin de grupo cabecera

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

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by mastintin »

Creo que lo suyo sería empezar por una cosa simple como es la creación del sustituto a csb34 para pago de nominas , algo simple , para luego ir añadiendo las otras figuras de pago .
Creo que para esto ya casi tenemos toda la imformacion necesaria.
La parte de la informacion del pago :

Code: Select all


    <PmtInf>  // inicio bloque de informacion de pagos
            <PmtInfId>Payment Info ID</PmtInfId>  // codigo de "recibo"
            <PmtMtd>TRF</PmtMtd> // metodo de pago (TRF/CHK) trasferencia o cheque
            <NbOfTxs>1</NbOfTxs>
            <CtrlSum>0.02</CtrlSum>
            <PmtTpInf>  // etiqueta de inicio bloque tipo de pago
                <SvcLvl>  // etiqueta de inicio bloque nivel de servicio
                    <Cd>SEPA</Cd> // codigo de servicio fijo SEPA
                </SvcLvl>
            </PmtTpInf>
            <ReqdExctnDt>2013-07-17</ReqdExctnDt> //Fecha de ejecución solicitada
            <Dbtr>  // etiquet inicio identificacion ordenante
                <Nm>My Corp</Nm>  // nombre del ordenante
            </Dbtr>
            <DbtrAcct> // inicio etiqueta cuenta iban ordenante
                <Id>
                    <IBAN>MY_ACCOUNT_IBAN</IBAN>
                </Id>
                <Ccy>EUR</Ccy> // divisa
            </DbtrAcct>
            <DbtrAgt>    // etiqueta entidad ordenante
                <FinInstnId> // etiqueta identificacion entidad ordenanate
                    <BIC>MY_BANK_BIC</BIC>   // BIC entidad ordenante
                </FinInstnId>
            </DbtrAgt>
            <ChrgBr>SLEV</ChrgBr>  // clausula de gastos (CRED/DEBT/SHAR/SLEV) benefici/ordenante /compartidos/ acordados
            <CdtTrfTxInf> // bloque de informacion trasferencia
                <PmtId>  // bloque instrucciones de pago
                    <InstrId>Id shown in bank statement</InstrId> // numero de recibo max 35caracteres
                    <EndToEndId>transferID/0</EndToEndId>  // identificador de extremo a extremo ¿?
                </PmtId>
                <Amt>  // bloque de importe
                    <InstdAmt Ccy="EUR">0.02</InstdAmt> // importe dos decimales 11 digitos total usar "."
                </Amt>
                <CdtrAgt> // entidad del beneficiario
                    <FinInstnId>
                        <BIC>THEIR_BANK_BIC</BIC> bic beneficiario
                    </FinInstnId>
                </CdtrAgt>
                <Cdtr>   // beneficiario
                    <Nm>THEIR_NAME</Nm>  // nombre beneficiario
                </Cdtr>
                <CdtrAcct>  // cuenta beneficiario
                    <Id>
                        <IBAN>THEIR_IBAN</IBAN>  //iban beneficiario
                    </Id>
                </CdtrAcct>
                <RmtInf> // informacion transacion
                    <Ustrd>Transaction description</Ustrd> /7 descripcion maximo 140caracteres
                </RmtInf>
            </CdtTrfTxInf>
        </PmtInf>

 
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, una primera aproximacion en codigo

Code: Select all

*
 * MENSAJE DE PRESENTACIÓN DE ADEUDOS DIRECTOS SEPA ESQUEMA B2B (pain.008.001.02)
 */

#include "hbmxml.ch"

function main() 

 local oDoc := mxmlNewXML( "1.0" )
   
 /* Header */
    CstmrDrctDbtInitn := mxmlNewElement( oDoc, "CstmrDrctDbtInitn" )
    
    GrpHdr  := mxmlNewElement( CstmrDrctDbtInitn, "GrpHdr" )
    mxmlNewElement( GrpHdr, "MsgId" )
    mxmlNewElement( GrpHdr, "CreDtTm" )
    mxmlNewElement( GrpHdr, "NbOfTxs" )
    mxmlNewElement( GrpHdr, "CtrlSum" )
    
    InitgPty := mxmlNewElement( GrpHdr, "InitgPty" )
    mxmlNewElement( InitgPty, "Nm" )
    Id      := mxmlNewElement( InitgPty, "Id" )
    OrgId   := mxmlNewElement( Id, "OrgId" )
    mxmlNewElement( OrgId, "BICOrBEI" ) 
    
    Othr    := mxmlNewElement( OrgId, "Othr" ) 
    mxmlNewElement( Othr, "Id" )
    
    SchmeNm :=  mxmlNewElement( Othr, "SchmeNm" )
    mxmlNewElement( SchmeNm, "Cd" )
    mxmlNewElement( SchmeNm, "Prtry" )
    
    mxmlNewElement( Othr, "Issr" )

    PrvtId  := mxmlNewElement( Id, "PrvtId" )
    DtAndPlcOfBirth := mxmlNewElement( PrvtId, "DtAndPlcOfBirth" )
    mxmlNewElement( DtAndPlcOfBirth, "BirthDt" )
    mxmlNewElement( DtAndPlcOfBirth, "PrvcOfBirth" )
    mxmlNewElement( DtAndPlcOfBirth, "CityOfBirth" )
    mxmlNewElement( DtAndPlcOfBirth, "CtryOfBirth" )
    
    Othr := mxmlNewElement( PrvtId, "Othr" )
    mxmlNewElement( Othr, "Id" )
    
    SchmeNm := mxmlNewElement( Othr, "SchmeNm" )
    mxmlNewElement( SchmeNm, "Cd" )
    mxmlNewElement( SchmeNm, "Prtry" )
    
    mxmlNewElement( Othr, "Issr" )

/* Informacion del pago */
....

    mxmlSaveFile( oDoc, "b2b.xml", MXML_NO_CALLBACK )
return NIL
 
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 , me falta mxmlNewXML,etc ¿ que libreria me falta por enlazar ?
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 esas funciones pertenecen a la LIB de Harbour hbmxml. Estoy utilizando la version 3.0 de Harbour
mi entorno es :

Code: Select all

PATH=%PATH%;c:\borland\bcc65\bin;c:\hb30\bin
set compiler=bcc
 
Saludos
Fivewinner desde 1.9, programador PHP y Javascript, HTML5 evangelista
User avatar
lucasdebeltran
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am
Contact:

Re: Adeudos Directos SEPA en euros Esquema B2B

Post by lucasdebeltran »

Compañeros,

Muchas gracias por vuestras contribuciones.

Os paso la función GetBIC de Manuel mejorada un pelín y sin los ; de cada elemento del hash:

Code: Select all

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

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

BIC["30"]='ESPCESMMXXX'
BIC["2100"]='CAIXESBBXXX'
BIC["73"]='OPENESMMXXX'
BIC["83"]='RENBESMMXXX'
BIC["122"]='CITIES2XXXX'
BIC["186"]='BFIVESBBXXX'
BIC["200"]='PRVBESB1XXX'
BIC["224"]='SCFBESMMXXX'
BIC["1545"]='AGRIESMMXXX'
BIC["49"]='BSCHESMMXXX'
BIC["36"]='SABNESMMXXX'
BIC["86"]='NORTESMMXXX'
BIC["61"]='BMARES2MXXX'
BIC["65"]='BARCESMMXXX'
BIC["75"]='POPUESMMXXX'
BIC["3"]='BDEPESM1XXX'
BIC["72"]='PSTRESMMXXX'
BIC["216"]='POHIESMMXXX'
BIC["229"]='POPLESMMXXX'
BIC["233"]='POPIESMMXXX'
BIC["1459"]='PRABESMMXXX'
BIC["81"]='BSABESBBXXX'
BIC["231"]='DSBLESMMXXX'
BIC["93"]='VALEESVVXXX'
BIC["128"]='BKBKESMMXXX'
BIC["182"]='BBVAESMMXXX'
BIC["57"]='BVADESMMXXX'
BIC["58"]='BNPAESMMXXX'
BIC["130"]='CGDIESMMXXX'
BIC["136"]='AREBESMMXXX'
BIC["149"]='BNPAESMSXXX'
BIC["196"]='WELAESMMXXX'
BIC["219"]='BMCEESMMXXX'
BIC["220"]='FIOFESM1XXX'
BIC["227"]='UNOEESM1XXX'
BIC["236"]='LOYIESMMXXX'
BIC["1460"]='CRESESMMXXX'
BIC["1534"]='KBLXESMMXXX'
BIC["1544"]='BACAESMMXXX'
BIC["2107"]='BBVAESMM107'
BIC["198"]='BCOEESMMXXX'
BIC["94"]='BVALESMMXXX'
BIC["184"]='BEDFESM1XXX'
BIC["188"]='ALCLESMMXXX'
BIC["235"]='PICHESMMXXX'
BIC["1490"]='SELFESMMXXX'
BIC["1491"]='TRIOESMMXXX'
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["3059"]='BCOEESMM059'
BIC["3060"]='BCOEESMM060'
BIC["3063"]='BCOEESMM063'
BIC["3067"]='BCOEESMM067'
BIC["3070"]='BCOEESMM070'
BIC["3076"]='BCOEESMM076'
BIC["3080"]='BCOEESMM080'
BIC["3081"]='BCOEESMM081'
BIC["3085"]='BCOEESMM085'
BIC["3089"]='BCOEESMM089'
BIC["3096"]='BCOEESMM096'
BIC["3098"]='BCOEESMM098'
BIC["3104"]='BCOEESMM104'
BIC["3111"]='BCOEESMM111'
BIC["3113"]='BCOEESMM113'
BIC["3115"]='BCOEESMM115'
BIC["3116"]='BCOEESMM116'
BIC["3117"]='BCOEESMM117'
BIC["3127"]='BCOEESMM127'
BIC["3130"]='BCOEESMM130'
BIC["3134"]='BCOEESMM134'
BIC["3138"]='BCOEESMM138'
BIC["3144"]='BCOEESMM144'
BIC["3146"]='CCCVESM1XXX'
BIC["3150"]='BCOEESMM150'
BIC["3159"]='BCOEESMM159'
BIC["3162"]='BCOEESMM162'
BIC["3166"]='BCOEESMM166'
BIC["3174"]='BCOEESMM174'
BIC["3187"]='BCOEESMM187'
BIC["3190"]='BCOEESMM190'
BIC["3191"]='BCOEESMM191'
BIC["2000"]='CECAESMMXXX'
BIC["125"]='BAOFESM1XXX'
BIC["138"]='BKOAES22XXX'
BIC["211"]='PROAESMMXXX'
BIC["487"]='GBMNESMMXXX'
BIC["1474"]='CITIESMXXXX'
BIC["1480"]='VOWAES21XXX'
BIC["2010"]='CECAESMM010'
BIC["2017"]='CECAESMM017'
BIC["2031"]='CECAESMM031'
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["2086"]='CECAESMM086'
BIC["2096"]='CSPAES2LXXX'
BIC["2099"]='CECAESMM099'
BIC["2103"]='UCJAES2MXXX'
BIC["2104"]='CSSOES2SXXX'
BIC["2105"]='CECAESMM105'
BIC["2013"]='CESCESBBXXX'
BIC["2038"]='CAHMESMMXXX'
BIC["99"]='AHCRESVVXXX'
BIC["232"]='INVLESMMXXX'
BIC["2085"]='CAZRES2ZXXX'
BIC["2095"]='BASKES2BXXX'
BIC["59"]='MADRESMMXXX'
BIC["237"]='CSURES2CXXX'
BIC["133"]='MIKBESB1XXX'
BIC["3058"]='CCRIES2AXXX'
BIC["46"]='GALEES2GXXX'
BIC["31"]='ETCHES2GXXX'
BIC["78"]='BAPUES22XXX'
BIC["160"]='BOTKESMXXXX'
BIC["234"]='CCOCESMMXXX'
BIC["1465"]='INGDESMMXXX'
BIC["1475"]='CCSEESM1XXX'
BIC["3025"]='CDENESBBXXX'
BIC["3029"]='CCRIES2A029'
BIC["3035"]='CLPEES2MXXX'
BIC["3045"]='CCRIES2A045'
BIC["3084"]='CVRVES2BXXX'
BIC["3095"]='CCRIES2A095'
BIC["3102"]='BCOEESMM102'
BIC["3105"]='CCRIES2A105'
BIC["3110"]='BCOEESMM110'
BIC["3112"]='CCRIES2A112'
BIC["3118"]='CCRIES2A118'
BIC["3119"]='CCRIES2A119'
BIC["3121"]='CCRIES2A121'
BIC["3123"]='CCRIES2A123'
BIC["3135"]='CCRIES2A135'
BIC["3137"]='CCRIES2A137'
BIC["3140"]='BCOEESMM140'
BIC["3152"]='CCRIES2A152'
BIC["3157"]='CCRIES2A157'
BIC["3160"]='CCRIES2A160'
BIC["3165"]='CCRIES2A165'
BIC["3177"]='BCOEESMM177'
BIC["3179"]='CCRIES2A179'
BIC["3183"]='CASDESBBXXX'
BIC["3186"]='CCRIES2A186'
BIC["3188"]='CCRIES2A188'
BIC["9000"]='ESPBESMMXXX'


nEnt     := val(cEntidad)
cEntidad := alltrim(str(nEnt))


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

Return cDevuelve
//----------------------------------------------------------------//
 
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
Post Reply