Moi,
Olisko mahdollista saada ominaisuutta, joka automaattisesti päivittäisi laskujen statuksen maksetuksi vaikkapa lataamalla ohjelmaan pankista sähköisen viitemaksuluettelon? Ainakin Nordean verkkopankista saa ladattua Konekielinen tiliotteen, jonka voisi uploadata systeemiin. Oman yrityksen laskutus perustuu voluumiin ja jatkossa voi olla että on tuhat laskutettavaa yritystä, joiden laskujen statusta on kohtuu vaikea manuaalisesti päivittää.
Moi,
Toki, ja on ollut jo suunnittelussa. Tosin täysin automaattista siitä ei voi tehdä, koska pankkien käyttöehdot kieltävät verkkopankin käytön ohjelmallisesti. Rajapintoja on kyllä tarjolla, mutta sen pohjalta, mitä olen niihin tutustunut, ei niitä ole selvästikään suunniteltu tällaiseen käyttöön, vaan vaativat aika järeitä ratkaisuja (VPN:ää ja muuta hauskaa). Ajatuksena olisi, että pitäisi siis ladata ensin tiliote verkkopankista ja lähettää se sitten MLInvoiceen. Pystyn toteuttamaan tämän Osuuspankin tiliotteelle, mutta minulla ei ole pääsyä Nordean vastaavaan. Sitä varten tarvitsisisin siis jonkinlaisen mallin (ei tarvitse sisältää oikeata sisältöä). Jos pystyisit sellaisen toimittamaan minulle vaikka sähköpostilla (ere at labs.fi), niin siitä olisi toki apua.
--Ere
Moro,
Tää ois hyvä ominaisuus. OP:n verkkopankissa tää kannattaa tehdä "Lataa pelkät tilitapahtumat tiedostona (xls)" -toiminnon kautta. Sieltä tulee cvs-tiedosto joka kelpaa sellaisenaan esim. Asteri-kirjanpitoon. Samalla kun tiedot tulee haettua kirjanpitoon ne voisi tuoda myös laskutukseen. Suorituksia tuotaessa kannattaa varmaan merkata todelliset maksupäivät kantaan ja tehdä vertailua onko koko suoritustus maksettu?
Eilen tuli tämä toteutettua loppuun. Löytyy GitHubista (https://github.com/emaijala/MLInvoice/archive/master.zip), jos huvittaa kokeilla, ja mielelläni ottaisinkin vastaan tietoa toimivuudesta. Toiminto löytyy Laskutus-sivulta Tiliotteen tuonti -nappulan takaa.
Toteutus käyttää jo aiemmin tehtyä tuontitoimintoa, jossa voi itse määritellä käytettävät sarakkeet (myös sen, käytetäänkö kirjaus- vai arvopäivää) ja tiedoston muut ominaisuudet. Valmiit asetukset löytyvät Osuuspankin ja Nordean tilitapahtumille. Toiminto sisältää vertailun siitä, onko maksun määrä oikein. Jos ei täsmää, niin maksua ei kirjata (toistaiseksi tukea osasuorituksille ei ole) ja ongelma raportoidaan.
Jos on muille pankeille toimivien asetusten tietoja, niin nekin otan mielelläni mukaan.
--Ere
Nopeasti tätä testasin Osuuspankin aineistolla. Muuten toimii ok mutta laskujen viitenumeroon pitää laittaa "etu nollat", jotta maksut kohdetuvat oikein. Osuuspankin aineistossa viitenumero tulee muodossa 00000000000000012959 ja kun laskulla on viitenumero muodossa 12959 niin ei maksut eivät kohdistu laskuille.
Totta, kiitos huomiosta. Lisäsin tuontiin etunollien trimmauksen. Jokohan nyt toimisi oikein?
--Ere
Nyt toimii OP:llä hienosti, kiitos :)
Hieno ominaisuus, kiitos. OP:sta helmikuun lopussa hakemassani aineistossa kentissä ei ollut lainausmerkkejä, mutta nyt oli. Lisäsin import_statement.php:hen vaihtoehdon jossa 'enclosure_char' => 0. Nyt ongelmaksi tulee, että eurosummassa ei ole lainausmerkkejä, jolloin tulee virheilmoitus:
"" Rivi 25: Viitenumerolla '4268' löytyneen laskun summa 640,82 ei vastaa tilitapahtuman summaa 640,82 ""
En keksinyt koodista missä vertailu menee pieleen..
Entä olisiko noita viitteettömiä tuonteja mahdollista raportoida vähän laveammin? Nyt tulee vain ilmoitus: "Rivi 8: Maksupäivää, maksettua määrää tai viitenumeroa ei löytynyt". Jos vaikka ton koko rivin 8 sais tulostettua, niin se antais vähän osviittaa mistä on kysymys.
Kätevintä noiden lainausmerkkien poistaminen on varmaan tyyliin: $refnr = str_replace('"', '', $refnr); just ennen etunollien poistoa, mutten vieläkään tajua miksi toi summien vertailu ei onnistu. Helmi- ja maalikuun aineistoissa ei ole mun mielestä rahasummien esittämisen osalta mitään eroa.
Tosta laajemmasta raportoinnista sais ihan hyvän tulostamalla vaikka $row-taulukon tiedot, eli viite, summa ja päivä. Maksajatieto tietty täydentäisi listaa..
Kiitos kommenteista. Täytyy tutkia, miltä tuo uusi OP:n tiliote näyttää ja muokata tarpeen mukaan. Systeemin pitäisi selvitä siitä, että numeroilla ei ole enclosure charia, mutta saattaa olla jotain vikaa.
--Ere
Tässä saattaakin olla pyöristysongelma, kun verrattiin viidellä desimaalilla. Voisitko kokeilla muuttaa import_statement.php:n rivin 126 tällaiseksi:
if (miscRound2Decim($rowTotal['total_price']) != miscRound2Decim($amount)) {
--Ere
Nyt toimii, hienoa!
Hyvä hyvä. Lisätään myös tietoja tuohon raportointiin jatkossa.
--Ere
Pyöristysongelmat jatkuvat, nyt vissiin ton alv:n pyöristystavan muutoksen takia. Laskuilla olevissa kokonaissummissa ja import_statement.php:n kyselyn tuloksissa voi olla ainakin sentin heittoja ja tällöin lasku ei kirjaudu maksetuksi. Helpoin korjaus taitaa olla muuttaa import_statement.php:n vertailu muotoon
if (abs(miscRound2Decim($rowTotal['total_price']) - miscRound2Decim($amount)) > 0.01) {
Vai voiko summissa olla useamman sentin heittoja?
Toinen vaihtoehto on tietenkin korjata tuokin laskenta niin, että pyöristys on aina yhtenevä kaikkialla... Laitan korjaukseen.
--Ere
Minulla on sellainen ongelma että laskutan toisen osapuolen puolesta (lukumääräisesti yli 1000 laskua, kerran vuodessa), joka valvoo saatavansa sen jälkeen itse saamansa laskutusraportin mukaisesti. Nyt kaikki laskut jäävät tilaan "avoin". Olen miettinyt miten saisin muutettua aina esim. yhden laskuttajan saatavat maksetuiksi yhdellä kertaa. Helpottaa mm. hakuja tehdessä.
Yksi keino on tehdä phpMyAdminissa komento tietokannalle, jossa muuttujina olisi laskuttajan ID ja laskun tila. Onko muita keinoja?
Tällä hetkellä mitään parempaa tapaa ei ole. Jos vaan ehdin joskus tekemään noita useamman laskun käsittelytoimintoja, niin tuollainen joukkomuutos kuuluisi siihen joukkoon.
--Ere