Recent posts

#71
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. 
#72
Tervehdys!

Pitkästä aikaa alkaa uusi versio olla loppusuoralla, mutta kaipaisi toki laajempaakin testausta. Versiossa 2.2.0 merkittävimmät muutokset ovat uusi hakutoiminto ja aloitussivun muokkaus. Tarkemmat tiedot ja linkit lyhyisiin ohjeisiin löytyvät muutoslokista. Ja asennuspaketti on automaattipäivitettävissä beta-kanavalta (jos asetettu config.php:ssa) ja ladattavissa Asennus-sivulta.

t. Ere
#73
No niinpä olikin, kiitos!
#74
Moi,

Helpoiten tuo onnistuu vaihtamalla tekstin käännös tyhjäksi. Eli tee lang-hakemistoon esim. suomea varten invoice_fi-FI.local.ini ja lisää siihen rivi:

FormInvoiceNumber = ''
#75
Moi, onko mahdollista saada viitenumero-kohdasta laskun numero pois (eli paikasta missä sanotaan "Viitenumero on aina mainittava maksettaessa" ja sen yläpuolella olevan laskun numero pois, koska se on jo laskun otsikkotiedoissa)? Voin tarvittaessa muokata suoran lähdekoodejakin. Kiitos.
#76
Kaivelin tätä sen verran, että Firefoxissa voi vääntää päälle tuon asetuksen, että käytetään käyttiksen päiväys- ym. asetuksia, seuraavasti:

  • Siirry osoitteeseen about:config
  • Etsi asetus intl.regional_prefs.use_os_locales
  • Säädä asetus true:ksi esim. tuplaklikkaamalla sitä

Aiheesta on kolme vuotta vanha tiketti: https://bugzilla.mozilla.org/show_bug.cgi?id=1684602
#77
Olet oikeassa, kyllä se toimii. Nyt tajusin kun kokeilin lisää. Minua hämää, kun siinä on kaksi kalenteria, ja ne järjestelmä pitää ne peräkkäisinä kuukausina.

Esimerkiksi kun valitsen 1. 1. 2023 -- 15. 6. 2023, valittuani tammikuu vasemmanpuoleiseen kalenteriin vaihtuu oikeanpuoleiseen helmikuu. Kun vaihdan oikeanpuoleiseen kesäkuu, katoaa näkyvistä vasemmanpuoleiseen valitsemani 1. tammikuuta. Tämä sai minut luulemaan välin aloituspäivää ei ole valittuna.

Mikäli minä olen ainoa jolle tämä oli liian vaikeaa, ei tarvitse tehdä mitään.
#78
Ei siinä mitään sen ihmeempää pitäisi olla kuin että klikkaa alkupäivää, sitten loppupäivää ja lopuksi Valmis-nappulaa. Jos ei toimi, niin tarvitsisin ainakin tiedon käytetystä selaimesta.

--Ere
#79
Moi!

Tällä hetkellä ei onnistu ilman koodin puukotusta, mutta laitetaan toivelistalle.

--Ere
#80
moi & kiitos hyvästä ohjelmasta!

meillä suurin osa laskuista lähdössä Finvoicena Maventan Connectorin kautta
onko miten mahdollista saada tiedostot tallentumaan suoraan \out kansioon palvelimella?

nyt tallentuu paikallisesti > Download kansioon

t/Kimi