MayaLabs Discussion Area

Suomeksi (Finnish only) => MLInvoiceen liittyvä keskustelu => Topic started by: taleman on 06.09.18 - klo:12:55

Title: Onko PaymentInstructionIdentifier mukana?
Post by: taleman on 06.09.18 - klo:12:55
Koitan tehdä laskuttajailmoitusta Finanssialan Keskusliiton webbisivulla. Siinä kysytään laskutusaiheen koodia, PaymentInstructionIdentifier. Katsoin ettei tähän asti MLInvoicella tekemissäni e-laskuissa ole tuota merkkijonoa. Myös greppasin
grep "PaymentInstruction" -r mlinvoice

Eikä löydy, on kyllä EpiPaymentInstructionId mutta se on kai toinen paikka jossa tuo sama koodi välitetään.

Pähkäilen tätä lisää, jos on neuvoja antaa niin hyvä juttu, kiitoksia.
Title: Re: Onko PaymentInstructionIdentifier mukana?
Post by: Ere Maijala on 07.09.18 - klo:19:52
Käsittääkseni EpiPaymentInstructionId on juurikin se kenttä, jossa PaymentInstructionIdentifier on laskutussanomassa. Finvoicessa ei ole erillistä PaymentInstructionIdentifier-kenttää ollenkaan.
Title: Re: Onko PaymentInstructionIdentifier mukana?
Post by: Ere Maijala on 07.09.18 - klo:19:52
Ja vielä tarkennuksena, että MLInvoice laittaa EpiPaymentInstructionId-kenttään viitenumeron.
Title: Re: Onko PaymentInstructionIdentifier mukana?
Post by: taleman on 12.09.18 - klo:12:32
Finanssialan keskusliiton lomake haluaa PaymentInstructionIdentifier kenttään ohjeen mukaan "laskuttajan määrittelemä laskutusaiheen yksilöivä numeerinen koodi".

http://www.finanssiala.fi/finvoice/dokumentit/Laskuttajailmoituksen_teko-ohjelma_ohje.pdf (http://www.finanssiala.fi/finvoice/dokumentit/Laskuttajailmoituksen_teko-ohjelma_ohje.pdf)

Lisäksi sanotaan "sen on oltava sama kuin laskusanomalla annettava vastaava tieto". Viitenumero on joka laskussa eri. Toisaalta en keksi mitä tuohon kuuluisi pistää, pitäisikö minulla olla yksi vai monta laskutusaihetta?
Title: Re: Onko PaymentInstructionIdentifier mukana?
Post by: taleman on 12.09.18 - klo:13:36
Koitin netistä löytää tietoa mikä laskutusaihe oikein on. Minulla on vuodelta 2011 laskuttajailmoitus, jossa se on Luontoelämys. Nyt ohje sanoo pitää olla numeerinen koodi.
Lukemani mukaan tunnistamiseen käytetään vastinparia suoraveloituksen palvelutunnus -- e-laskun laskutusaihe.
Ymmärrän tämän niin, että voin tehdä useita laskuttajailmoituksia eri laskutusaiheilla, jos vaikka haluan maksut eri pankkitiille tai muilla tavoin eri tavalla käsiteltävän. Mutta minulle riittää kun on yksi laskutusaihe, ja MLinvoicen pitäisi se osata pistää finvoicelaskuun kohtaan EpiPaymentInstructionID. Nyt siinä tosiaan on laskun numero, joka käsittääkseni ei kelpaa kun pitäisi olla joka kerta sama numero jonka olen ilmoittanut laskutusaiheen koodiksi.
Title: Re: Onko PaymentInstructionIdentifier mukana?
Post by: Ere Maijala on 19.09.18 - klo:15:33
Ok, täytyypä lisätä mahdollisuus tehdä laskutusaiheita MLInvoiceen.
Title: Re: Onko PaymentInstructionIdentifier mukana?
Post by: taleman on 21.09.18 - klo:11:35
Hienoa, sitten onnistuu kuluttaja-asiakkaille e-laskun lähetys.

Taisin olla väärässä siinä laskutusaiheen sisällössä, sen ei ehkä tarvitsekaan olla numerokoodi.
Title: Re: Onko PaymentInstructionIdentifier mukana?
Post by: Ere Maijala on 21.09.18 - klo:18:26
Kehitysversiossa olisi nyt laskun tyypille perustoteutus. Eli Järjestelmä-kohdassa voi määritellä tarpeelliset laskun tyypit ja laskulle sitten valita sopivan. Saapi testata. :)
Title: Re: Onko PaymentInstructionIdentifier mukana?
Post by: taleman on 10.10.18 - klo:13:29
Pahoittelen kun en ole ennättänyt kokeilemaan vielä.

Mutta sillä välin: laskuttajailmoituksen tein, joten pankista tulee nyt asiakkaiden lähettämiä e-laskupyyntöjä. Ne tulee XML-tiedostoina, varmaan on olemassa ohjelma joka osaa nuo tulostaa lukukelpoisemmassa muodossa?

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:eb="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd" xmlns:spy="http://www.spy.fi/vl/fv/finvoiceack.xsd">
<SOAP-ENV:Header>
<eb:MessageHeader SOAP-ENV:mustUnderstand="1" eb:id="" eb:version="2.0" xmlns:eb="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd">
<eb:From>
Title: Re: Onko PaymentInstructionIdentifier mukana?
Post by: taleman on 19.10.18 - klo:12:14
Asensin testiversion, eli sen MLInvoice_Master.zip tiedostosta puretun äsken. Testaan tuota PaymentInstructionIdentifieria, ja kysyisin onnistuuko kun otin tuotantoversiosta MLInvoicen tietokannan ja toin sen tähän testiasennukseen ennen kuin asensin MLinvoicen. Eli tietokannassa oli datat valmiina.

Tämä testversio ei toimi vielä, pitänee opetella Composer koska nyt valittaa [Fri Oct 19 12:06:46.611548 2018] [proxy_fcgi:error] [pid 7801] [client 192.168.250.42:58668] AH01071: Got error 'PHP message: PHP Warning:  require_once(vendor/autoload.php): failed to open stream: No such file or directory in /var/www/clients/client1/web1/web/MLInvoice-master/index.php on line 46\nPHP message: PHP Fatal error:  require_once(): Failed opening required 'vendor/autoload.php' (include_path='.:/usr/share/php') in /var/www/clients/client1/web1/web/MLInvoice-master/index.php on line 46\n'


Ruokatunti alkaa.
Title: Re: Onko PaymentInstructionIdentifier mukana?
Post by: taleman on 19.10.18 - klo:15:08
Composerin asennuksen ja käynnistyksen jälkeen alkoi toimimaan. Mutta tietokanta oli se perusaloitus, eli MLINvoicen asennin taitaa tyhjätä tietokannan eli ei kannata etukäteen tuoda tietokantaa paikalleen.

Mutta ohje sanoi komennetaan composer install, toimiva komento oli php composer.phar install

Tai siis toimii melkein. Uuden laskun tekeminen menee pieleen, ei pysty tallentamaan. Lokista näen virheen, se on "Unknown column 'delivery_address' in 'field list".

[Fri Oct 19 14:55:34.953862 2018] [proxy_fcgi:error] [pid 7801] [client 192.168.250.42:60360] AH01071: Got error 'PHP message: Query 'INSERT INTO mlinvoice_develop_invoice (uuid, base_id, name, company_id, reference, invoice_no, ref_number, invoice_date, due_date, interval_type, next_interval_date, state_id, payment_date, archived, type_id, delivery_time, delivery_terms_id, delivery_method_id, delivery_address, info, internal_info, foreword, afterword) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params array (\n  0 => 'c478e9a6-ff5d-4e11-bf55-6c9e542472b5',\n  1 => '1',\n  2 => '',\n  3 => '1',\n  4 => '',\n  5 => NULL,\n  6 => '',\n  7 => '20181019',\n  8 => '20181102',\n  9 => '0',\n  10 => NULL,\n  11 => '1',\n  12 => NULL,\n  13 => 0,\n  14 => NULL,\n  15 => '',\n  16 => NULL,\n  17 => NULL,\n  18 => '',\n  19 => '',\n  20 => '',\n  21 => '',\n  22 => '',\n) failed: (1054) Unknown column 'delivery_address' in 'field list'\n', referer: http://testi.taleman.fi/MLInvoice-master/index.php?func=invoices&form=invoice


Taulussa _invoice ei tosiaan ole tuon nimistä kenttää.

Menikö tämä pieleen kun toin 1.19.0 versiosta tietokannan, ja sitten vasta asensin MLInvoicen? Eli se ei tehnyt uusia kenttiä noihin tauluihin jotka jo oli olemassa?
Title: Re: Onko PaymentInstructionIdentifier mukana?
Post by: Ere Maijala on 19.10.18 - klo:20:32
Pahus, tietokannan luontiskriptissä oli virhe. Nyt korjattu uusimmassa masterissa.

Asennussysteemi tekee uuden tietokannan, jos annettu kanta on tyhjä. Muuten sen pitäisi kyllä käyttää olemassaolevaa ja päivittää se.
Title: Re: Onko PaymentInstructionIdentifier mukana?
Post by: taleman on 21.10.18 - klo:13:40
Otin uuden master.zip tiedoston, korjaus auttoi. Nyt mielestäni toimii. En vielä lähettänyt e-laskutiedostoa verkkomaksuvälittäjälle, mutta se mitä luen muodostunutta tiedostoa saa minut olemaan toiveikas että se toimisi.

Toimii sekin, että tuo tietokannan valmiiksi ja asentaa sitten MLInvoicen. Mutta asennusscripti lisää alaviivamerkin kirjoittamani tietokannan taulujen prefixin perään. Ekalla kerrallakin olisi toiminut valmis tietokanta, mutta typotin tuon prefixin.

Tällä testiasennuksella löytyi yksi bugi jonka Ere jo korjasi ja saatiin testattua EpiPaymentInstructionID tulee e-laskulle ja laskun tyypin saa lisättyä. En testannut kattavasti enkä tarkistanut mitä muutoksia GIT muutoslokissa on.

Vähän kikkailemalla saan tuon laskunkin tehtyä ja lähetettyä, ilmoittelen lisää jahka nähdään tuleeko virhepalaute verkkolaskuvälittäjältä.
Title: Re: Onko PaymentInstructionIdentifier mukana?
Post by: Ere Maijala on 26.10.18 - klo:21:23
Kiitos testauksesta. Täytyypä lisätä maininta alaviivasta tuohon asennuksen yhteyteen, niin vältytään epäselvyyksiltä jatkossa.
Title: Re: Onko PaymentInstructionIdentifier mukana?
Post by: taleman on 30.10.18 - klo:12:12
Mielestäni laskun muodostus toimi, ja lähti pankista mutta vastaanottajan pankki palautti virheilmoituksella ettei vastaanottajaa löydy. Tarkistin huolella OVT ja BIC on oikein. Valitin toiseen kertaan lähettävälle pankille, ne sanoi nyt että
QuoteE-laskuaineistossa näkyi olevan ylimääräinen tyhjä rivi, joka voi aiheuttaa tuollaisen virheherjan. Sinun tulisi nyt olla yhteydessä ohjelmistotoimittajaan, joka kanssasi tarkistaa aineiston ja auttaa poistamaan ylimääräisen tyhjän rivin.

Laskutiedostossa tosiaan on tyhjä rivi, </SOAP-ENV:Envelope>

<?xml version="1.0" encoding="ISO-8859-15"?>


Mutta niin on aiemmissakin MLInvoicen tekemissä e-laskuissa, ja ne on menneet perille.

Minusta jompi kumpi pankki nyt sählää. Tutkin lisää. Onko kenelläkään tietoa miksi kuluttaja-asiakkaalle lähetettävä e-laskun toimisi eri tavalla kuin yritysasiakkaalle lähetettävä?
Title: Re: Onko PaymentInstructionIdentifier mukana?
Post by: Ere Maijala on 31.10.18 - klo:09:54
Nuo sanomien käsittelyt saattavat olla todella tarkkoja siitä, että Finvoice on juuri niiden olettamassa muodossa, eikä siinä välttämättä riitä, että menee validaattorista läpi. Voisitko kokeilla tällä versiolla invoice_printer_finvoice_soap.php:sta:

https://raw.githubusercontent.com/emaijala/MLInvoice/1893a228792935270f7c93d0c3c2121c8c7507e2/invoice_printer_finvoice_soap.php

Ainoa muutos on siis se, että \n on poistettu tuolta riviltä: https://github.com/emaijala/MLInvoice/blob/1893a228792935270f7c93d0c3c2121c8c7507e2/invoice_printer_finvoice_soap.php#L69

t. Ere