XML ja Postita.fi

Started by mixakoo, 29.10.20 - klo:10:35

Previous topic - Next topic

mixakoo

Hei!

Verkkolaskujen lähetys pitäisi ottaa käyttöön.
MLInvoicen asetuksissa valitsin tulostusmallin Finvoice sekä Finvoice tyylillä käyttöön.
Napin painaminen aiheuttaa seuraavan sivun latautumisen:

Result XML validation failed:

Fatal 32(3) at 1:43: Unsupported encoding ISO-8859-15

Error 1872(2) at -1:0: The document has no document element.



XML:

1   <?xml version="1.0" encoding="ISO-8859-15"?>
2   <Finvoice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="2.01" xsi:noNamespaceSchemaLocation="Finvoice2.01.xsd">
3     <SellerPartyDetails>
4       <SellerPartyIdentifier>

Mitähän tälle asialle pitäisi tehdä? Olettaakseni siis tämän pitäisi tarjota ladattavaksi .XML tiedostoa?

Kun tämä saadaan toimimaan, mikä on kätevin tapa siirtää lasku verkkolaskuksi Postita.fi palveluun?
Nyt yritin kopioida tuosta sivulta nuo kaikki "oleelliset" kentät eli riviltä 1. alkaen poistaen rivinumerot ja tallentaen dokumentin lasku.xml nimellä, mutta postita.fi ei hyväksy sitä ladattavaksi palvelimelle.

Kiitos paljon neuvoista ja vinkeistä etukäteen!

Ere Maijala

Hei!

MLInvoice yrittää tarkistaa tuotetun XML-tiedoston, jotta se on varmasti Finvoice-määrityksen mukainen. Ongelmia voi tulla esim. puuttuvista tai liian pitkistä kentistä, joten tämä on tärkeä vaihe Finvoice-sanoman luonnissa. Ilmeisesti käytössä olevan järjestelmän libxml2-kirjasto ei tue Finvoicessa käytettävää ISO-8859-15 -merkistökoodausta. Mikähän käyttöjärjestelmä mahtaa olla? En nyt äkkiseltään keksi mitään tapaa kiertää ongelmaa. Validoinnin voi toki koodia muokkaamalla poistaa käytöstä, mutta sitä en suosittele. ISO-8859-15 on ainoa Finvoice-sanomissa sallittu merkistö, joten siihen ei pysty vaikuttamaan.

Sitten kun Finvoice toimii, niin ohje Postita.fi:n käyttöönottoon löytyy tuolta MLInvoicen ohjeista: https://www.labs.fi/mlinvoice_usage.php#postitafi

mixakoo

Kyselen siis asiaa tuolta palveluntoimittajan puolelta merkistön suhteen.

Olisiko Ere mahdollista laittaa tuo luotu virheellinen XML sähköpostilla, jos kykenisit tulkitsemaan siitä, missä kentässä teen virheen?

mixakoo

Voisin myös testimielessä koittaa tuota validoinnin poistamista, se voisi helpottaa virheenhakua.
Missä tämä tehdään?

Ere Maijala

Tarkennetaan vielä, ettei XML:ssä välttämättä ole mitään vikaa, vaan käyttöjärjestelmän XML-kirjasto ei vaan pysty tarkistamaan sitä, koska se ei tue ISO-8859-15 -merkistöä.

Saat validoinnin pois muuttamalla invoice_printer_finvoice.php:sta rivin 51, joka näyttää tältä:

        parent::transform('create_finvoice.xsl', 'Finvoice.xsd');

muotoon:

        parent::transform('create_finvoice.xsl');

Tuon jälkeen pitäisi Finvoice-xml:n luonnin onnistua.

mixakoo

No joo, ohitin tuon validoinnin, niin xml tulostui, ja sen sai siirrettyä postita.fi palveluun sellaisenaan. Oli täysin toimiva, mutta tosiaan ääkköset menivät sellaisina erikoisina kaksimerkkisinä palikkoina. Eli tämän kun onnistuisi nyt sitten vielä ratkaisemaan

Ere Maijala

Periaatteessa olisi mahdollista tehdä tuo niin, että MLInvoice muodostaa Finvoice-sanoman UTF-8 -merkistöllä, jonka pitäisi olla tuettuna kaikkialla, ja konvertoisi sitten lopputuloksen tuohon vaadittavaan ISO-8859-15 -muotoon. Konversio ei vaan ole ihan niin suoraviivainen, että haluaisin alkaa sitä tekemään ilman allaolevan PHP/XML-toteutuksen tarjoamaa tukea. Saatko mistään selville, tukeeko palvelu PHP:ssa iconv-moduulia? Jos et, niin voin tehdä pienen testiskriptin, jolla voidaan kokeilla toimivuutta.