Recent posts

#31
Moi,

Toistuvien kohdalla muokattavaa laskua ei vielä ole ennen kuin se käsitellään. Muuten odottaville voisi koittaa tällaista suoraan tietokantaan (omalla vastuulla ja tietysti ensin varmuuskopio kannasta!):

UPDATE mlinvoice_invoice_row SET vat=25.5 WHERE vat=24 AND invoice_id IN (SELECT id FROM mlinvoice_invoice WHERE state_id IN (SELECT id FROM mlinvoice_invoice_state WHERE invoice_open=1));

Jos laskutetaan jälkikäteen ennen 1.9. toimitettuja toimitettuja tuotteita tai palveluita, pitää niihin edelleen soveltaa 24% verokantaa, joten menee käsitöiksi tai vaatii ainakin lisäehtoja, esim. laskurivin päiväyksen tarkistuksen. Jatkossa jos on tuotteita, joiden verokanta muuttuu esim. 10% => 14%, joutuu myös tekemään käsityötä tai kehittelemään fiksumpia kyselyitä.

Myös tuotteet pitää päivittää. Sen voi tehdä vaikka näin:

UPDATE mlinvoice_product SET vat_percent=25.5 WHERE vat_percent=24;
#32
MLInvoiceen liittyvä keskustelu / Re: Alv 25.5%
Last post by Ere Maijala - 27.06.24 - klo:21:24
Moi!

Ei pitäisi olla mikään ongelma. Yleisissä asetuksissa ja tuotteissa ne näkyvätkin yhden desimaalin tarkkuudella, ja näytetään laskulla myös desimaalin kanssa, jos on tarpeen.
#33
MLInvoiceen liittyvä keskustelu / Alv 25.5%
Last post by nasko - 27.06.24 - klo:11:11
Morientes, miten muuten mlinvoice pelittää syyskuun alusta alkaen? Luin äsken, että jossain laskutusohjelmissa voi tulla uusi alv 25,5% ongelmaksi.
#34
MLInvoiceen liittyvä keskustelu / alv muutos 1.9.2024
Last post by Kimi - 27.06.24 - klo:10:02
moikka,

mikä olisi tie alv muutokselle 24 > 25,5 1.9.2024?

saako skriptillä ajetua joka riville odottaville & toistuville laskuille?

terveisin, Kimi
#35
moi,

maventan connector toimii loistavasti :)
finvoicen tallennus sovittuun kansioon niin sieltä lähtee sukkana ulos > asiakkaalle
 
t/Kimi
#36
Harmillista, ettei Postita.fi toimi kunnolla.

Luultavasti esim. Maventa olisi toimiva vaihtoehto, mutta se on dokumentaation perusteella suunniteltu SaaS-ohjelmistoille, joissa yksi taho pyörittää softaa. Maventalla on kyllä myös Windows-softa, jolla voi lähettää laskutusohjelman tekemät Finvoice-laskut, mutta onhan se vähän kömpelö ratkaisu. Pitää vähän kaivella, josko löytyisi hyvä ratkaisu.
#37
Hei,

Postita.fi palvelu tuntuu hiipuvan ja sen kanssa on ollut haasteita. Palvelu käyttää taustajärjestelmänään Bizsearch verkkolaskuosoitteistoa, jota ei pidetä kunnolla yllä ja jossa on runsaasti vääriä tietoja, jotka eivät päivity.

Tämä aiheuttaa ongelmia, sillä laskut merkataan lähetetyiksi, mutta ne on toimitettu väärälle välittäjälle eivätkä ne tästä syystä reitity perille. Homma johtuu hyvin suurella todennäköisyydellä juuri tuosta Bizsearch osoitteistosta, jota ei ylläpidetä ja joka sisältää useita välittäjiä samoille yrityksille. Tällä hetkellä kaikki sähköisen laskutuksen järjestlemät tuntuvat sekä päivittävän tietonsa että käyttävän https://verkkolaskuosoite.fi/ palvelua laskutietojen ja välittäjätietojen hakuun.

Taannoiset muutokset, joissa otettiin välittäjätieto osaksi API-kutsua eivät näyttäisi auttavan ongelmaan.

Ongelmatilanteiden selvitys on haastavaa, sillä Postita.fi palveluun kytketty asiakaspalvelu ei tunnu juuri viesteihin vastailevan.

Sähköisen laskutuksen jatkuvuuden varmistamiseksi tarvitaan mahdollisuus käyttää jotakin vaihtoehtoista palvelua sähköisten laskujen lähettämiseen.

Valitettavasti minulla ei tähän hätään ole ehdottaa hyvää toimijaa, mutta toivon että Erellä tai yhteisöllä olisi ajatuksia tämän suhteen ja saataisin MLinvoice pidettyä relevanttina jatkossakin.
#38
Hei,

Vielä tuli semmoinen mieleen, että jos nuo html asiat pystyisi tuuttaamaan esim Twig templatella ulos niin kehityksessä pystyisi olemaan helposti ulkopuolinen mukana myös semmoinen joka ei osaa niinkään koodata. Nyt html:t on niin pahasti piilotettu että ainakin itsellä kestää selata oikeaa kohtaa kauan... (osaan kumminkin jotenkuten koodata, mutta en juurikaan nyky php:ta... php3 oli tuttu :))

Tarkoitan että kun html:t toisi jollain templatella ulos niin sivun kehittäjän ei tarvitsisi osata lukea php:tä vaan asiat hoituisivat {{muuttujien}} ja {% if muuttuja == muuttuja %} tyyppisesti.

Jos meinaa laittaa sivut templatella niin usein niissä on sitten varjopuolena(?) se että urlien kanssa voi olla erilaisempaa. Ei välttämättä toimi enää hakemistosta, mutta voi olla että toimii (voi olla vähän haaste - en tiedä). Tosin voi myös puntaroida että missä menee raja minkäkin suhteen. Templatessa taas voittaisi sen että siinä voisi helposti käyttää bootstrappia tai tailwindiä yms työkaluja ja eri listoista/taulukoista voisi tehdä komponentteja joita laittaa eri sivuilla ulos tyyliin {{ include "avoimet_laskut.html" data=table_data }}. Nuo esimerkit nyt on django / jinja2 tyyppistä mutta Twig lienee samankaltainen.

Kokeilin siis tuota dockerfileä ja tein sen mallilaskun ja homma toimi. Mitään syvällisempää benchmarkkia en tehny, mutta uskon että toimii. Lighttpd:n konffissa taitaa olla turha se mod_rewrite rivi. Jos tarve niin voin tuosta nginx versionki tehdä. Light tuli vaan kevyistä ekana mieleen :). Tuo palvelin nyt jääkin proxyn taakse jos meinaa julkisesti pyöritellä. Tässä tapauksessa on ihan sama onko se light, nginx vai apache. Riippuu miten paljon haluaa käyttää koneen resursseja tuohon, kaikki tekee saman tehtävän. Apache lienee raskain. Itse pyöritin pitkään nginx + php-fpm:n päällä. Uskon että pyörii vallan mainiosti raspberrypiilläkin. Tosin tietokantaa en ehkä laittaisi raspille jos haluaa luotettavuutta. Mysql palvelun voinee ostaa myös hostattuna ja jos homma pelittää niin mlinvoice:n "moottoria" voi heitellä koneesta toiseen jos tietokanta on hyvin hoidettu.

Jos meinaa tehdä enemmän tuosta "klikkaa ja laita toimimaan" (säätäen vain muutamaa ympäristömuuttujaa) niin vielä enemmän saa varmaan mennä asioita tietokantaan, kuten kaikki sähköpostiasetukset yms... oma taulu kaikille säädöt&settings_table (tuon niminen niin ulkomaalaiset käyttäjät saa tuskailla ääkkösten kanssa :))

Pikaisella silmäyksellä oot tehny ison työn koodin siistimisessä.

-Juho
#39
Moi,

Ja kiitoksia panostuksestasi tähän. Nyt tuli sellainen pläjäys painavaa asiaa, että vähän aikaa pitää sulatella. :)

Yksi puoli tuossa Dockerin pitämisessä mahdollisimman yksinkertaisena on ollut tavoite saada se toimimaan vähän jännemmissäkin ympäristöissä, esim. NAS:ssa. Mutta kun itselläni ei ole mahdollisuutta testailla kaikkia ympäristöjä, niin on jäänyt vähän tällaiseksi "toimii vissiin tarpeeksi hyvin" -tyyppiseksi ratkaisuksi.

Se on kuitenkin selvä, että olisi kivempi, jos config.php olisi paljon lyhyempi ja loput asetuksista olisi käyttöliittymän puolella. Ehkäpä joskus saan tätä parannettua.

--Ere
#40
MLInvoiceen liittyvä keskustelu / Docker ja kehitysehdotus
Last post by ioxo - 04.02.24 - klo:09:13
Hei pitkästä aikaa,

Käytin aikoinaan paljon mlinvoice ja sain sillä hyvin hoidettua firman laskut. Nykyään käytän muuta, mutta se ei vähennä arvostustani mlinvoicea kohtaan. Kiitos Erelle isosta ja kovasta panostuksesta. En usko että ohjelma olisi yhtä käyttökelpoinen ilman sinua.

Ajattelin hiukan auttaa, mikäli panoksestani on hyötyä. Kuukauden verran olen tykästynyt dockeriin ja huomannut sen erittäin käteväksi. Siispä tein uuden Dockerfilen, joka on hiukan pienempi. Huomasin että originaali on vajaa 900 Mt ja alpinella pääsin vajaa 200 Mt.

Liiteenä Dockerfile ja lighttpd.mlinvoice, joka sisältää konfin lighttpd:lle. Homman sai aika helposti ja nopeasti käyntiin, mutta hiukan harmaita hiuksia aiheutti puutteellinen dokumentointi, mutta samaan hengenvetoon en ole syyttämässä dokumentointia... itse en jaksaisi tuotakaan määrää tehdä dokumentointiin :).

- mbstring oli hyvä vinkki, ilman sitä homassa olisi mennyt vähän pitempään
- session oli se joka aiheutti murhetta...
- lopuksi ympäristömuuttujat, joihin esitän vaihtoehtoratkaisua

Sain omalla koneellani dockerin rakennettua, käynnnistettyä, ja asennettua. Se mitä tuohon jäin kaipaamaan on kyseiset ympäristömuuttujat  (tai vastaavilla nimittyksillä) ja config.php.sample kikkailun voisi siirtää unholaan... Mitä olen pienissä projekteissa nähnyt niin admin salasana ekaksi annetaan ja vasta ohjelmaan kirjautuneena voit muuttaa sen tietoja. Koko asennuksen voisi tehdä siten, että config.php tiedoston yläosaan syötetään halutut muuttujat ja sen jälkeen mennään "brute forcella" eteenpäin tai vaihtoehtoisesti config lukee tarvittavat ympäristömuuttujat jolloin systeemin tiedostoihin ei tarvitsisi koskea lainkaan. Lopuksi / dokumentoinnissa annetaan vinkki että admin salasana on nimda ja sen voi käydä vaihtamassa Menu -> sieltä -A täältä. Jos tuota haluaa käyttää webhotellista niin tuon filen voi käydä hyvin ekaksi läpi, jonka jälkeen tietää mitä tapahtuu ja odottaa vain sormet ristissä että milloin login ilmestyy ruudulle.

Dockerin puolesta tuohon config.php:hen voisi tehdä jotain seuraavaa


// ohje php:n sisälle kuinka muutat tietoja mikäli tarve...
// jos heittää dokkeriin niin php:tä ei koskaan nää ja osaa tuskin kiinnostaa
// onko php, ruby, javascript vai millä tehty jos homma toimii...
$run_in_docker = false / false  // onko tälle muuttujalle lopuksi edes tarvetta?
$db_server = $_ENV["DB_SERVER"] || 'localhost'
$db_user = $_ENV["DB_USER] || 'mlinvoice'

tai sitten jotain
$db_server = array($_ENV["DB_SERVER"], "localhost")

if ($run_in_docker) {
 $dbserver = $db_server[0];
}
jne...

Tällöin Dockerfilessä ei tarvitsisi luoda www-käyttäjää (ja muuttaa hakemiston oikeuksia) sitä varten että config.php.sample muutetaan config.php:ksi ja homman saisi toimimaan myös siten, että dockeria käytettäessä (tai muuten jossa halutaan syöttää tiedot ympäristömuuttujan kautta) asioihin pystyisi vaikuttamaan.

Config.php / setup.php voisi tehdä tietokantaan tarkistuksen tyyliin 'select * from mlinvoice.version; jos mätsää niin jatketaan käyttöä, muussa tapauksessa kerrotaan että ero on tai ei löydy koko ohjelmaa tietokannasta. Joko kyllä / ei jatketaanko tai sitten teksti että "ota yhteys järjestelmävalvojaan jne... :)"

Tämä mahdollistaisi myös hyvin sen, että jos tietokanta pysyy samana niin dockeria / ohjelmaa voi siirtää helposti koneelta toiselle tekemättä oikeastaan mitään muuta asetusta kuin muutaman ympäristömuuttujan säätäminen ja homma pelittää taas...

Jos joku miettii miten tuon dockerin saa käyntiin niin seuraavasta voinee olla vinkkiä:

tekee hakemiston, johon laittaa Dockerfilen ja lighttpd:mlinvoicen. Oletettuna docker asennettuna.
Dockerfile hakee automaattisesti labs.fi:n tietopalveluista vakaan jakelun. Ellei Ere muuta sijaintia :)

kontinkääntö:
$ docker build -t mli:1 .

verkon luonti
$ docker network create mli

Tässä ei ole tietokantaa mukana vaan se pyörii omana palveluna
docker pull mariadb:latest (veikkaus, run käynnistää pullauksen, jos ei löydy koneelta)

$ docker run -d --name db --network=mli mariadb:latest

mariadb:n ja mlinvoicen on oltava samassa verkossa. DB voi olla useammassakin verkossa.
DB:n porttia ei tarvi bindata hostille vaan sen voi pitää dockerin sisällä (turvallisempi).
Ainoastaan mlinvoicen portti otetaan ulos, tässä tapauksessa 8089 omalla koneella kun dockerin
sisällä se on 80.

Käynnistys esim. (tosin ympäristömuuttujilla ei tee vielä mitään :)
docker run -d -e DB_HOST=db -e DB_USERNAME=mlinvoice -e DB_PASSWORD=mlinvoice -e DB_NAME=mlinvoice -e SECRET_KEY_32=elitism-establish-sevenfold  --name mli --network=mli -p 8089:80 mli:1

Tuon dockerin voi laittaa sitten nginx tai apachen tai vastaavan proxyn taakse jos haluaa.

Sori jos tuli ylimääräisiä kirjaimia kun näppäimistö tekee kuolemaa ja tulee välistä tupla t yms juttuja :).

- Juho Vähäkangas

Edit:
Jäi liittämättä nuo litteet :). Olkaapa hyvät. Dokerin käyttö onistuu siis ilman noita environment asetuksia. Ne ovat käytännössä turhia, mutta tuossa on jonkinlainen aihio niiden käyttöön.
You cannot view this attachment.. You cannot view this attachment.