SEPA DD -> CODA

Converter from SEPA DD to CODA

by flexin

HTML

<script src="http://www.flexin.be/xml2json.js"></script>
<table id="placeholder">
    <tr>
       <td>
           <h1>Instructies</h1>
           <ul>
               <li>1. Plak het XML bestand in onderstaande box, en verlaat de box</li>
               <li>2. Selecteer rechts de gewenste opties</li>
               <li>3. Klik op de knop <strong>Genereer CODA</strong>
               </ul>      
<h1>Weigeringsparameters</h1>   
<table>
    <tr>
    <td>Type weigering</td>
    <td><select id="refusaltype">
        <option value="1">Technisch probleem</option>
        <option value="2">Reden niet bepaald</option>
        <option value="3">Schuldenaar niet akkoord</option>
        <option value="4">Probleem met rekening schuldenaar</option>
        </select>
    </td>
 </tr>
<tr>
    <td>Reden van weigering</td>
    <td><select id="refusalreason">
        <option value="1">Onuitvoerbaar (reject)</option>
        <option value="2">Onbbetaalde (return)</option>
        <option value="3">Terugbetaling (refund)</option>
        <option value="4">Rechtzetting (reversal)</option>
        <option value="5">Annulatie (cancellation)</option>
        </select>
    </td>
 </tr>
    <tr>
    <td>Reden van weigering</td>
    <td><select id="isoreason">
    <option value="AC01">AC01 - Het formaat van het rekeningnummer is niet correct</option>
<option value="AC04">AC04 - De rekening werd afgesloten</option>
<option value="AC06">AC06 - De rekening werd geblokkeerd</option>
<option value="AG01">AG01 - De transactie is niet toegelaten</option>
<option value="AG02">AG02 - De operatiecode is niet geldig</option>
<option value="AM02">AM02 - Het ingevorderde bedrag is groter dan het toegestane maximum</option>
<option value="AM03">AM03 - De munteenheid is niet toegelaten</option>
<option value="AM05">AM05 - Duplicatie</option>
<option value="BE01">BE01 - Identificatie van de eindklant is niet consistent met het rekeningnummer</option>
<option value="BE04">BE04 - Adres van de crediteur...

CSS

body {
    font-size: 12px;
    font-family: Arial;
    color: #444:
}
h1 {
    font-size: 125%;
    width: 100%;
    font-weight: bold;
    border-bottom: 2px solid darkred;
    margin: 5px 0px;
}      
#placeholder {
    width: 100%;
    
}
#placeholder>tr>td,
#placeholder>tbody>tr>td{
    vertical-align: top;
    padding: 10px;
}
#placeholder>tr>td:nth-child(0)
#placeholder>tbody>tr>td:nth-child(0) {
    width=300px;
}
textarea {
    width: 100%;
}
table.fx-common td,
table.fx-common th {
    padding: 4px;
}
table.fx-common tr:nth-child(odd) td {
    background-color: #efefef;
}
table.fx-common tr th {
    background-color: #003;
    color: white;
    font-weight: bold;
}
table {
    width: 100%;
}
#code_input {
    font-family:monospace;
}

JavaScript

$('#generateCoda').click(function() {
    var afschriftNummer = 123;
    var checksum_count = 0;
    var checksum_debet = 0;
    var checksum_credit = 0;
       
    
    // Output leegmaken...
    $('#coda_input').val('');
    
    // record 0
    var record0 = '';
    record0 += '00000';
    
    var today = new Date();
    var day = today.getDate();
    if(day < 10) record0 += 0;
    record0 += day;
    var month = (today.getMonth() + 1);
    if(month < 10) record0 += 0;
    record0 += month;
    record0 += (today.getFullYear() - 2000);
    record0 += '00005 ';
    record0 += '                 ';
    var addressedTo =  $('#metaData tr').eq(3).children('td').eq(1).html().substring(0, 26);

    record0 += addressedTo ;
    var fillCount = 26 - addressedTo.length;
    for(i = 0; i < fillCount; i++) {
        record0 += ' ';
    }
    record0 += 'BICDUMMY   ';
    var temp=  $('#metaData tr').eq(4).children('td').eq(1).html().substring(0, 11);
    record0 += temp;
    var fillCount = 11 - temp.length;
    for(i = 0; i < fillCount; i++) {
        record0 += ' ';
    }
    record0 += ' ';
    record0 += '00000';
    record0 += '                ';
    record0 += '                ';
    record0 += '       ';    
    record0 += '2';
    $('#coda_input').val(record0);
    
    // Loopen voor elk lot...
    console.log($('#sddGroups tr').slice(1));
    var balance = 0;
    $('#sddGroups tr').slice(1).each(function() {
        afschriftNummer++;
        
        var record1 = '1';
        record1 += '2';
        record1 += afschriftNummer;
        
        record1 += 'BE89733029580885                  EUR';
        // vorig saldo = 0 EUR
        var balancetext = balance + '';
        for (i = balancetext.length; i < 16; i++) {
            record1 += '0';
                }
        record1 += balancetext;
        var today = new Date();
        var day = (today.getDate() - 1);
        if(day < 10) record1 += 0;
        record1 += day;
        var month = (today.getMonth()...