viilauksia

This commit is contained in:
Ville Rantanen
2024-03-16 18:05:02 +02:00
parent d26103c07c
commit d9b1b4944f

View File

@@ -9,12 +9,17 @@ BODY {
font-family: sans-serif; font-family: sans-serif;
background-color: #fafaff; background-color: #fafaff;
} }
TEXTAREA { font-family: sans-serif; width: 100%; TEXTAREA {
-webkit-border-radius: 5px; -webkit-border-radius: 5px;
-moz-border-radius: 5px; -moz-border-radius: 5px;
border-radius: 5px; border-radius: 5px;
padding: 5px; padding: 5px;
background: transparent; width: 100%;
}
INPUT {
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
} }
#block { #block {
margin-left: auto; margin-left: auto;
@@ -56,13 +61,14 @@ LABEL {
margin: 1em; margin: 1em;
opacity: 1; opacity: 1;
transition: opacity 0.2s; transition: opacity 0.2s;
display: grid;
} }
#barcodes.fade { #barcodes.fade {
opacity: 0; opacity: 0;
} }
/* Lasku */ /* Lasku */
#jaettu_lasku_nappi { width: 25%; }
#lasku { #lasku {
border: 1px solid; border: 1px solid;
border-collapse: collapse; border-collapse: collapse;
@@ -72,14 +78,12 @@ LABEL {
padding: 1ex; padding: 1ex;
vertical-align: top; vertical-align: top;
} }
#lasku .col1 { width: 10%; } #iban { width: 23ch; }
#lasku .col2 { width: 40%; } #viite { width: 100%; }
#lasku .col3 { width: 10%; } #laskun_tiedot { max-width: 80ch; }
#lasku .col4 { width: 20%; } #summa { max-width: 12ch; }
#lasku .col5 { width: 20%; } #lasku_summa, #summa {
#lasku_summa {
text-align: right; text-align: right;
} }
#lasku_summa::after { #lasku_summa::after {
content: " €"; content: " €";
@@ -153,7 +157,7 @@ let state = {
} }
function clear_barcode() { function clear_barcode() {
document.getElementById('barcodes').classList.add("fade"); document.getElementById('barcode').classList.add("fade");
setTimeout(function() { setTimeout(function() {
document.getElementById('barcode').innerHTML = ""; document.getElementById('barcode').innerHTML = "";
}, 200); }, 200);
@@ -226,13 +230,16 @@ function calculate_viite_tarkiste(ilman_tarkiste) {
} }
function validate_viite(viite) { function validate_viite(viite) {
if (! /^\d+$/.test(viite)) { if (! /^\d+$/.test(viite)) {
return Array(false, "Joukossa muutakin kun numeroita!"); return Array(false, "Viitteen joukossa muutakin kun numeroita!");
} }
let nurin = reversed(viite); let nurin = reversed(viite);
if (nurin.length < 3) return Array(false, "Liian lyhyt") if (nurin.length < 3) return Array(false, "Liian lyhyt viite")
if (nurin.length > 20) return Array(false, "Liian pitkä viite")
let ilman_tarkiste = nurin.substring(1).split(''); let ilman_tarkiste = nurin.substring(1).split('');
let tarkiste = calculate_viite_tarkiste(ilman_tarkiste); let tarkiste = calculate_viite_tarkiste(ilman_tarkiste);
if (tarkiste != parseInt(nurin.substring(0,1))) return Array(false, "Tarkiste ei täsmää, viite väärin, tai jos olet luomassa omaa, lisää tarkiste: " + calculate_viite_tarkiste(nurin.split('')).toString()); if (tarkiste != parseInt(nurin.substring(0,1))) {
return Array(false, "Viitteen tarkiste ei täsmää, viite väärin, tai jos olet luomassa omaa, lisää tarkiste: " + calculate_viite_tarkiste(nurin.split('')).toString());
}
return Array(true, String(viite).padStart(20,'0')); return Array(true, String(viite).padStart(20,'0'));
} }
@@ -240,32 +247,35 @@ function validate(final = true) {
clear_error(); clear_error();
// IBAN // IBAN
let iban = document.getElementById('iban').value.replaceAll(' ','').replace(/^FI/,""); let iban = document.getElementById('iban').value.replaceAll(' ','').toUpperCase().replace(/^FI/,"");
if (iban.length != 16) return make_error('iban_error',"Vaatii 16 numeroa ja pitää alkaa FI!"); if (iban.length != 16) return make_error('iban_error',"IBAN on 16 numeroa ja pitää alkaa FI!");
if (! /^\d+$/.test(iban)) return make_error('iban_error',"Joukossa muutakin kun numeroita!"); if (! /^\d+$/.test(iban)) return make_error('iban_error',"IBAN Joukossa muutakin kun numeroita!");
// SUMMA // SUMMA
let summa = parseFloat( let summa = parseFloat(
document.getElementById('summa').value.replaceAll(' ','').replace(',','.') document.getElementById('summa').value.replaceAll(' ','').replace(',','.')
); );
if (isNaN(summa)) { if (isNaN(summa)) {
return make_error('summa_error', "Ei numero"); return make_error('summa_error', "Summa Ei numero");
} }
if ( summa <= 0 ) { if ( summa <= 0 ) {
return make_error('summa_error', "Summan pitää olla positiivinen"); return make_error('summa_error', "Summan pitää olla positiivinen");
} }
if ( summa > 999999 ) {
return make_error('summa_error', "Summan pitää olla alle miljoona");
}
let sumsplit = summa.toFixed(2).split("."); let sumsplit = summa.toFixed(2).split(".");
let euro = String(sumsplit[0]).padStart(6,'0'); let euro = String(sumsplit[0]).padStart(6,'0');
let cents = String(sumsplit[1]).padStart(2,'0'); let cents = String(sumsplit[1]).padStart(2,'0');
// VIITE // VIITE
let viite = document.getElementById('viite').value.replaceAll(/[^\d]/g,'').replace(/^0+/,""); let viite = document.getElementById('viite').value.replaceAll(/\s/g,'').replace(/^0+/,"");
let viite_valid = validate_viite(viite); let viite_valid = validate_viite(viite);
if (! viite_valid[0]) return make_error("viite_error", viite_valid[1]); if (! viite_valid[0]) return make_error("viite_error", viite_valid[1]);
// PAIVA // PAIVA
if (! /^[\d-]+$/.test(document.getElementById('paiva').value)) { if (! /^[\d-]+$/.test(document.getElementById('paiva').value)) {
return make_error('paiva_error',"Joukossa muutakin kun numeroita ja - !"); return make_error('paiva_error',"Eräpäivän joukossa muutakin kun numeroita ja - !");
} }
let paiva_obj = new Date(Date.parse(document.getElementById('paiva').value)); let paiva_obj = new Date(Date.parse(document.getElementById('paiva').value));
if (isNaN(paiva_obj)) return make_error('paiva_error', "Eräpäivä muotoa VVVV-KK-PP"); if (isNaN(paiva_obj)) return make_error('paiva_error', "Eräpäivä muotoa VVVV-KK-PP");
@@ -289,7 +299,6 @@ function validate(final = true) {
modify_request(); modify_request();
} }
// Yhdistely // Yhdistely
let fin = '4'; let fin = '4';
let spare = '000'; let spare = '000';
@@ -314,8 +323,6 @@ function parse_virtual() {
let kuu = vkoodi.substring(50,52); let kuu = vkoodi.substring(50,52);
let paiva = vkoodi.substring(52,54); let paiva = vkoodi.substring(52,54);
let paivays = `${vuosisata}${vuosi}-${kuu}-${paiva}`; let paivays = `${vuosisata}${vuosi}-${kuu}-${paiva}`;
document.getElementById('iban').value = iban; document.getElementById('iban').value = iban;
document.getElementById('summa').value = summa; document.getElementById('summa').value = summa;
document.getElementById('viite').value = viite; document.getElementById('viite').value = viite;
@@ -355,7 +362,7 @@ function modify_lasku() {
print_help(); print_help();
} }
function clear_lasku() { function clear_lasku() {
let fields = ['iban','summa','viite','paiva']; let fields = ['iban','summa','viite','paiva','virtuaali'];
for (let i = 0; i < fields.length; i++) { for (let i = 0; i < fields.length; i++) {
try { try {
document.getElementById('lasku_' + fields[i]).innerHTML = ""; document.getElementById('lasku_' + fields[i]).innerHTML = "";
@@ -409,14 +416,11 @@ function show_shared() {
non_printables[i].classList.add("hidden"); non_printables[i].classList.add("hidden");
} }
document.getElementById('jaettu_lasku_nappi').classList.remove('hidden'); document.getElementById('jaettu_lasku_nappi').classList.remove('hidden');
} }
function init() { function init() {
const date = new Date(); const date = new Date();
document.getElementById('paiva').value = date.toISOString().substring(0,10); document.getElementById('paiva').value = date.toISOString().substring(0,10);
let request = window.location.search.substring(1); let request = window.location.search.substring(1);
let vars = request.split(','); let vars = request.split(',');
for (let i = 0; i < vars.length; i++) { for (let i = 0; i < vars.length; i++) {
@@ -446,37 +450,51 @@ function reversed(str) {
<div id=block> <div id=block>
<div class="no-print"> <div class="no-print">
<p>Maksun virtuaali viivakoodi / viivakoodi <small>Nothing ever leaves this page.</small></p> <p>Maksun virtuaali viivakoodi / viivakoodi <small>Nothing ever leaves this page.</small></p>
<span id="iban_error" class="error" ></span>
<label>IBAN: </label><br><input id="iban" size=18 value="FI12 3456 7890 1234 56" onblur="generate()" onkeyup="generate(false)" /><br> <span id="summa_error" class="error" ></span>
<label>&nbsp;</label><span id="iban_error" class="error" ></span><br> <span id="viite_error" class="error" ></span>
<label>Summa: </label><br><input type="number" id="summa" size=10 value=10 onblur="generate()" onkeyup="generate(false)" />&euro;<br> <span id="paiva_error" class="error" ></span>
<label>&nbsp;</label><span id="summa_error" class="error" ></span><br>
<label>Viite: </label><br><input pattern="[0-9 ]+" id="viite" size=20 value=1054 onblur="generate()" onkeyup="generate(false)" placeholder=1054/>&nbsp;Viite pakollinen.<br>
<label>&nbsp;</label><span id="viite_error" class="error" ></span><br>
<label>Eräpäivä: </label><br><input type="text" pattern="[0-9\-]+" id="paiva" size=10 onblur="generate()" onkeyup="generate(false)" placeholder="VVVV-KK-PP"/><br>
<label>&nbsp;</label><span id="paiva_error" class="error" ></span><br>
<input type="submit" onclick="flash_generate()" value="Generoi"/>
<br> <br>
<input type="submit" onclick="flash_generate()" value="Generoi"/>
</div> </div>
<div id="barcodes"> <div id="barcodes">
<input id=jaettu_lasku_nappi class=hidden type="submit" onclick="lasku_pdf()" value="Tallenna lasku PDF"/> <input id=jaettu_lasku_nappi class=hidden type="submit" onclick="lasku_pdf()" value="Tallenna lasku PDF"/>
<table id="lasku"> <table id="lasku">
<tbody> <tbody>
<tr> <tr>
<td class=col1>Saajan tilinumero</td><td class="col2, arvo" id="lasku_iban">[tilinro]</td><td colspan=3 rowspan=2><textarea class=kayttaja rows=10 id=laskun_tiedot placeholder="Laskun tiedot" onblur="print_help()" onkeyup="print_help()"></textarea><div class="print_help" id="print_laskun_tiedot"></div></td> <td class=col1>Saajan IBAN</td>
<td class="col2, arvo" id="">
<input id="iban" class="kayttaja" size=23 value="FI12 3456 7890 1234 56" onblur="generate()" onkeyup="generate(false)" />
<div class="print_help" id=lasku_iban>[tilinro]</div>
</td>
<td colspan=3 rowspan=2><textarea class=kayttaja rows=10 id=laskun_tiedot placeholder="Laskun tiedot" onblur="print_help()" onkeyup="print_help()"></textarea><div class="print_help" id="print_laskun_tiedot"></div></td>
</tr> </tr>
<tr> <tr>
<td class=col1>Saaja</td><td class=col2><textarea id=saaja class=kayttaja rows=3 placeholder="Saajan tiedot" onblur="print_help()" onkeyup="print_help()"></textarea><div class="print_help" id="print_saaja"></div></td> <td class=col1>Saaja</td>
<td class=col2>
<textarea id=saaja class=kayttaja rows=3 placeholder="Saajan tiedot" onblur="print_help()" onkeyup="print_help()"></textarea><div class="print_help" id="print_saaja"></div>
</td>
</tr> </tr>
<tr> <tr>
<td class=col1 rowspan=2>Maksaja</td><td class=col2 rowspan=2><textarea id=maksaja class=kayttaja rows=3 placeholder="Maksajan tiedot" onblur="print_help()" onkeyup="print_help()"></textarea><div class="print_help" id="print_maksaja"></div></td> <td class=col1 rowspan=2>Maksaja</td>
<td class=col3>Viite</td><td colspan=2 id="lasku_viite" class="arvo">[viite]</td> <td class=col2 rowspan=2>
<textarea id=maksaja class=kayttaja rows=3 placeholder="Maksajan tiedot" onblur="print_help()" onkeyup="print_help()"></textarea><div class="print_help" id="print_maksaja"></div>
</td>
<td class=col3>Viite</td>
<td colspan=2 class="arvo">
<input pattern="[0-9 ]+" class="kayttaja" id="viite" size=20 value=1054 onblur="generate()" onkeyup="generate(false)" placeholder="1054"/>
<div class="print_help" id="lasku_viite">[viite]</div>
</td>
</tr> </tr>
<tr> <tr>
<td class=col3>Eräpäivä</td><td class="col4, arvo" id="lasku_paiva">[paiva]</td><td class="col5, arvo" id="lasku_summa">[summa]</td> <td class=col3>Eräpäivä</td>
<td class="col4, arvo" >
<input type="text" pattern="[0-9\-]+" class="kayttaja" id="paiva" size=10 onblur="generate()" onkeyup="generate(false)" placeholder="VVVV-KK-PP" />
<div class="print_help" id="lasku_paiva">[paiva]</div></td>
<td class="col5, arvo">
<input type="number" class="kayttaja" id="summa" size=8 value=10 onblur="generate()" onkeyup="generate(false)" />
<div class="print_help" id="lasku_summa">[summa]</div>
</td>
</tr> </tr>
<tr> <tr>
<td colspan=5 id=lasku_barcode><svg id="barcode"></svg> <td colspan=5 id=lasku_barcode><svg id="barcode"></svg>