Kirjoittaja Aihe: Itella Item Tracking - apuohjelma postin lähetysseurannan käyttöön  (Luettu 4417 kertaa)

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Tein jo kauan sitten itselleni pienen skriptin jonka avulla pystyin tarkistamaan postilähetysten seurantatiedot suoraan komentoriviltä. Kun huomasin lähetyksen saapuneen niin ohjasin skriptin tulostuksen tulostimelle ja marssin hakemaan lähetystä.

Minun alkoi kuitenkin käydä sääliksi postin työntekijöitä jotka joutuivat aina käsin naputtelemaan pitkän lähetystunnuksen koneelle. Siksi päätin parantaa käyttämääni skriptiä lisäämällä siihen tuen viivakoodille. Samalla päätin tehdä skriptistäni kokonaan uuden version ja hioa sen sellaiseen kuntoon että sitä kehtaa tarjota muillekin.

Näin syntyi ohjelma nimeltä "iit" (Itella Item Tracking).

Ominaisuudet:
  • Toimii kokonaisuudessaan komentoriviltä.
  • Yksinkertainen tietokanta lähetystunnusten tallentamiseen jotta toistuvat seurantakyselyt on helppo tehdä ilman että koko tunnus tarvitsee kirjoittaa aina uudelleen.
  • Hakutulokset on mahdollista tulostaa PostScript-muodossa jolloin paperille tulostaminen on helppoa.
  • PostScript-tulosteissa on lähetystunnus viivakoodina.

Riippuvuudet (suluissa tarpeellisuus, paketin nimi, ohjelmavarasto ja mahdollisia lisätietoja):
  • Tcl >=8.4 (pakollinen,  tcl8.4 tai tcl8.5, universe)
  • lynx (pakollinen, lynx, main)
  • tempfile (pakollinen, debianutils, main, ubuntussa valmiiksi asennettu)
  • enscript (pakollinen, enscript, main)
  • barcode (valinnainen, barcode, universe, tarvitaan viivakoodin luomiseen)

Ohjelma tarkistaa riippuvuudet ajettaessa ja ilmoittaa mahdollisesti puuttuvista apuohjelmista. Toimivan viivakoodin tulostaminen ei välttämättä onnistu mustesuihkutulostimilla. Lasertulostimilla ei pitäisi olla ongelmia.


OHJELMAN KÄYTTÖ TAPAHTUU TÄYSIN KÄYTTÄJÄN OMALLA VASTUULLA. MINÄ EN VASTAA MISTÄÄN.


Lataus ja asentaminen onnistuu alla olevilla komennoilla.
Koodia: [Valitse]
$ wget 'http://verdmonto.dyndns.org/~marco/iit/iit-1.1.bz2'
$ bunzip2 iit-1.1.bz2
(Ennen jatkamista koodi luetaan ja varmistetaan että sen suorittaminen on turvallista.)
$ chmod +x iit-1.1
$ sudo mv iit-1.1 /usr/local/bin/iit
$ iit --help


Itse yleensä tallennan aluksi lähetystunnuksen tietokantaan ja annan sille jonkin sopivan kuvauksen.
Koodia: [Valitse]
$ iit -a JJFI12345678901234567 "Tilaus kuvitteellisesta Linux-kauppa.com:sta"

Tämän jälkeen lähetyksen seuraaminen on helppoa viittaamalla suoraan tietokannan viimeisinpään tietueeseen (parametri -q on vapaaehtoinen).
Koodia: [Valitse]
$ iit -q -1
[...lähetysseurannan tiedot...]

Kun näen että lähetys on saapunut perille niin valitsen PostScript-tulostuksen ja ohjaan sen suoraan tulostimelle.
Koodia: [Valitse]
$ iit -q -1 -p | lpr

Alla esimerkki paperille tulostetusta seurantaraportista. Kuvan alla on linkit suurempaan kuvaan ja alkuperäiseen PostScript-tiedostoon.

PNG (150 dpi), PostScript


Edit: Muutettu asennusohjeita hakemaan versio 1.1 ja päivitetty riippuvuuksia. Uusi versio toimii Tcl 8.5:n lisäksi myös vanhemmalla Tcl 8.4:llä.
« Viimeksi muokattu: 21.06.08 - klo:18.36 kirjoittanut mgronber »

peran

  • Vieras
Hieno saattaisi olla, mutta jotenkin se ei vaan minulla toimi. Varmaankin puuttuu jotain riippuvuuksia, vaikka mielestäni ne mainitsemasi olenkin jo laittanut:

Lisäyksessä tulee tällainen herja:

Koodia: [Valitse]
iit -a JJFIxxxxx "oma kokeilu"
bad option "-index": must be -all, -ascii, -decreasing, -dictionary, -exact, -glob, -increasing, -inline, -integer, -not, -real, -regexp, -sorted, or -start
    while executing
"lsearch -exact -index 0 $codes $code"
    (procedure "dbAddCode" line 3)
    invoked from within
"dbAddCode codes $args(code) $args(description)"
    ("add" arm line 2)
    invoked from within
"switch -- $args(action) {
        query {
            if { [info exists args(index)] } {
                set args(code) [dbGetCodeAt $codes $args(ind..."
    (procedure "main" line 31)
    invoked from within
"main"
    (file "/usr/local/bin/iit" line 349)

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Hieno saattaisi olla, mutta jotenkin se ei vaan minulla toimi. Varmaankin puuttuu jotain riippuvuuksia, vaikka mielestäni ne mainitsemasi olenkin jo laittanut:

Sinulla on käytössä vanha Tcl. Jos 8.5 on asennettu niin sitten se pitää asettaa vielä oletukseksi.

Koodia: [Valitse]
$ update-alternatives --config tclsh

Todennäköisesti tulen poistamaan tuosta riippuvuudet jotka vaativat versiota 8.5 ja sen jälkeen 8.4 riittää. Tcl 8.5 julkaistiin keväällä ja tästä syystä se on varsin rajoitetusti saatavilla eri jakeluiden pakettivarastoissa. Itsellänikin taitaa olla vain yksi kone johon sen saa suoraan paketinhallinnasta.

Ainakin Tcl 8.4:n avulla onnistuu seurantatietojen haku jos hakee suoraan lähetystunnuksen avulla. Riippuvuudet 8.5-versioon liittyvät lähetystunnusten tallentamiseen.

Koodia: [Valitse]
$ iit -q JJFI12345678901234567
(tai)
$ iit -q JJFI12345678901234567


Edit: Uusi versio 1.1 on saatavilla ja sen pitäisi toimia myös Tcl 8.4:n alla.
« Viimeksi muokattu: 21.06.08 - klo:18.36 kirjoittanut mgronber »

peran

  • Vieras
Joops, 8.4:nen oli, ja universesta löytyi toi 8.5:nen. Ohjeessasi taitaa lukea kyllä, että 8.4:llakin toimii. Ainakin niin ymmärsin.

Nyt todellakin toimii. Kiitos.  :D :D

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Joops, 8.4:nen oli, ja universesta löytyi toi 8.5:nen. Ohjeessasi taitaa lukea kyllä, että 8.4:llakin toimii. Ainakin niin ymmärsin.

Ei lukenut vielä silloin. Tein tuon jälkeen tarvittavat muutokset jotta skripti on yhteensopiva Tcl 8.4:n kanssa ja päivitin aloitusviestiä sen mukaisesti. Versio 1.1 toimii siis tuon vanhemmankin kanssa.
« Viimeksi muokattu: 21.06.08 - klo:22.44 kirjoittanut mgronber »