Eli olen tässä tehnyt PyQt:lla laskutusohjelmaa jolla pystyy tallentamaan laskuja PDF-muodossa ja mitä kaikkea nyt laskutusohjelmalla pystyykin tehdä, ja nyt olen siinä vaiheessa että viivakoodiin tarvittaisiin sisältöä, eli kaiken muun olen saanut itse toimimaan ja suomalaisen viitenumeronkin olen saanut tehtyä täältä Putkasta löytyneen koodinvinkin avulla. Mutta nyt tarvitsen neuvoa että miten kansainvälisen viitenumeron voi muodostaa. Voinko jotenkin muokata tätä koodia: https://www.ohjelmointiputka.net/koodivinkit/
Kansainvälinen viitenumero muodostetaan samalla tavalla kuin kansainväliset (IBAN) tilinumerot.
Alkutunniste RF, cc = tarkiste, aaaaaa = numero
RFcc aaaa aaaa ...
Eli esim. 1234 56 =>
Ota numero-osa (ilman välilöyntejä). Lisää loppuun RF:ää vastaavat numerot 2715 sekä 00 ja laske saadusta luvusta jakojäännös 97 => 123456271500 % 97 => 1. Vähennä saatu tulosta 98:sta => 97 => Viitenumeroksi tulee RF97 1234 56
Ylläoleva menisi pythonilla suunnilleen näin:
def kvViite(viitenumero): jakojaannos = int(viitenumero + "271500") % 97 tarkiste = "%02d" % (98 - jakojaannos, ) #Jos tarkiste on < 10, lisätään etunolla return "RF" + str(tarkiste) + str(viitenumero) print(kvViite("123456")) #Tulostaa RF97123456
Lisäys:
Grez kirjoitti:
(08.11.2015 16:01:16): Kansainvälinen viitenumero muodostetaan...
Eikö tuohon pidä lisätä vielä tuon 2715 jälkeen 00, eli 271500?
Kansainvälisen viitteen rakenneohje
Nollat puuttuu perästä kuten Shamppa mainitsi. Lisäksi kansainvälinen viitenumero lasketaan suomalaisesta viitenumerosta tarkisteen kanssa eli Grezin esimerkki numero pitäisi olla muodossa 1234561.
shampan linkkaama pdf kirjoitti:
Laskuttaja muodostaa RF-viitteen siten, että sen pohjana on suomalaisen viitenumeron rakenteen mukainen viite.
...
Esimerkki RF-viitteen tarkisteen laskennasta
- Suomalainen viitenumero on 2348236, jossa viimeinen numero on tarkiste
- Lisätään loppuun ”2715” ja ”00”, saadaan 2348236271500
- Jakojäännös jaettaessa 97:llä on 65
- Vähennettäessä jakojäännös 98:sta saadaan tarkiste 33
- Kirjaimet RF ja tarkiste lisätään viitteen perusosan eteen ja saadaan RF-viite
RF332348236 (konekielinen muoto) tai
RF33 2348 236 (paperimuoto).
Joo totta nollat unohtui :o
Ja tosiaan jos haluaa viitenumeron joka voidaan "konvertoida" suomalaiseksi viitenumeroksi niin sitten täytyy olla se suomalainenkin tarkenne mukana. Käsittääkseni IBAN-standardissa ei ole mitään puhetta tuosta, joten pakollinen se ei voi olla. Pankkiviivakoodia käytteässä ehkä pakollinen jos pankkiviivakoodistandardissa niin sanotaan.
Toisaalta onhan suomalaisissa tilinumeroissakin tuplatarkiste ja Dansken tileissä jopa tripltarkiste. (kansainvälinen IBAN-tarkiste, viitteen kaltainen 731-tarkiste ja vielä suomalaisten pankkien yhteinen 21 tarkiste)
Tein koodivinkin kansainvälisen viitenumeron laskemisesta. Tietoa on helppo löytää hakukoneella; asiaa koskee standardi ISO 11649.
Pessi kirjoitti:
Lisäksi kansainvälinen viitenumero lasketaan suomalaisesta viitenumerosta tarkisteen kanssa – –
Onko tietoa, miten pankit asiaa käsittelevät? Kansainvälisestä näkökulmasta nimittäin suomalainen tarkiste on vain viitteen valinnaista osaa, ja kansainvälisessä viitteessä saa olla myös kirjaimia.
Kiitos Metabolix koodivinkistäsi ja kiitos myös Shamppalle. Vaikuttaa siltä että tulen käyttämään tuota Metabolixin koodaamaa reference_iso_11649.py-moduulia ohjelmassani koska sen avulla tosiaan pystyi tekemään oikeassa muodossa olevia kansainvälisiä viitenumeroita kuten tällä sivulla on esitetty.
Metabolix kirjoitti:
Onko tietoa, miten pankit asiaa käsittelevät?
Ensikäden tietoa asiasta minulla ei ole. Ainakin Aktian, Nordean ja S-pankin viitelaskimet eivät hyväksy kirjaimia ja laskevat kotimaisen tarkisteen RF-viitteeseen. Seuraavanlaista löytyi Finanssialan keskusliiton sivuilta.
Kansainvälisen viitteen käyttöönottosuomalaisessa yrityksessä kirjoitti:
4. Maksajan pankin toimenpiteet viitteiden rinnakkaiskäytön aikana
Pankit hyväksyvät ja tarkistavat sekä RF-viitteet että suomalaiset viitteet kaikissa maksukanavissa, joissa maksaja tai pankin toimihenkilö voi manuaalisesti tallentaa maksuja. Tällöin on mahdollista heti korjata mahdolliset syöttövirheet.
...
Jos maksu välitetään pankkien välillä kotimaan maksujärjestelmässä, RF- viitteestä poistetaan neljä ensimmäistä merkkiä ja vain viitteen kotimainen perusosa välitetään maksulla. Jos viitteen tarkistusnumero ei täsmää, viite välitetään kotimaan maksujärjestelmässä viestikentässä. Jos maksu välitetään ulkomaan maksuna eli SWIFT -järjestelmässä MT103 -sanomalla, RF- viite välitetään kentässä 70 sellaisenaan.
Nordean verkkopankissa testasin erilaisia RF-viitenumeroita. Silloin kun oli kotimainen IBAN maksun saajana, niin ainoastaan kotimaisen viitenumeron pohjalta generoitu RF-viite kelpasi. IBANin ollessa saksalainen kelpasi kaikki RF-viitteet, oli niissä sitten numeroita tai kirjaimia.
Grez kirjoitti:
Pankkiviivakoodia käytteässä ehkä pakollinen jos pankkiviivakoodistandardissa niin sanotaan.
Pankkiviivakoodi-oppaassa ei mainita suoraan, että pitäisi olla kotimainen viite. Esimerkissä kuitenkin käytetään kotimaista viitettä. Oppaassa on seuraavanlaiset maininnat.
Pankkiviivakoodi-opas kirjoitti:
Pankkiviivakoodin saa tulostaa vain FI-alkuisille IBAN-tilinumeroille.
...
Jos RF-viite kirjaimien ’RF’ jälkeen sisältää aakkosmerkkejä (ISO 11649), pankkiviiva-koodia joko ei lainkaan muodosteta tai viitekenttään tulostetaan nollat. Pankkiviivakoodissa esitetään vain numeerista tietoa.
Ylläolevan testauksen perusteella viivakoodissa käytettävä RF-viitenumero pitää generoida käyttäen kotimaista viitenumeroa. Näin ainakin Nordean kohdalla. Miten muissa pankeissa toimii, niin siitä minulla ei ole tietoa.
Mitä aloittajan ohjelmaan tulee, niin kannattaa RF-viite generoida käyttäen suomalaista viitenumeroa FKL:n suosituksen mukaan. Tällöin ei pitäisi tulla ongelmia maksujen kanssa.
Pessi kirjoitti:
Nordean verkkopankissa testasin erilaisia RF-viitenumeroita. Silloin kun oli kotimainen IBAN maksun saajana, niin ainoastaan kotimaisen viitenumeron pohjalta generoitu RF-viite kelpasi. IBANin ollessa saksalainen kelpasi kaikki RF-viitteet, oli niissä sitten numeroita tai kirjaimia.
No tässähän on sitten ensi käden tietoa ja voidaan päätellä että suomessa on pakko käyttää tuplatarkistusta. Nimittäin kukaan laskuttaja tuskin haluaa että maksua ei saa maksettua sen takia että joku pankki ei hyväksy sitä. Eli yksikin pankki joka ei hyväksy KV-muodossa olevaa aiheuttaa sen että sitä ei voi käyttää, eikä Nordea edes ole kovin pieni markkinaosuudeltaan.
Pessi kirjoitti:
Mitä aloittajan ohjelmaan tulee, niin kannattaa RF-viite generoida käyttäen suomalaista viitenumeroa FKL:n suosituksen mukaan.
Joo siis tämä on juurikin tarkoituksena, eli ohjelmalla tosiaan tehdään ensin suomalainen viitenumero ja sitten siitä generoidaan RF-viite.
Aihe on jo aika vanha, joten et voi enää vastata siihen.