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()...