2012. augusztus 29., szerda

VirtueMart és számlázó

A minap kaptam egy érdekes feladatot, amely arról szólt, hogy a népszerű Joomla! és VirtueMart alapokon nyugvó webshopot kellett egy számlázó-készletnyilvántartó programmal egybe gyúrni. A számlázó programot direkt nem említem név szerint, ugyanis ez nem a reklám helye.

A feladat kezdetben egyszerűnek tűnt, ugyanis a számlázó elméletileg tud kommunikálni webshoppal, olyan módon, hogy egy megadott URL-re HTTP POST metódussal feltölt egy XML file-t. Ezt a tulajdonságot kihasználva elkészült a termék feltöltés és frissítés első változata, ami tökéletesen működött is az én teszt programomban lévő 18 darab termékkel. De élesben több mint 3000 terméket kellett feltölteni, amivel a számlázó program sajnos nem boldogult. Egyszerűen megjelent a homokóra (valójában karika, mert win7-ről beszélünk) és nem történt semmi, majd ezt kb 30 perc múlva meguntam, szíves elnézését kértem az ügyfélnek, és elvonultam újra dolgozni.

Gyanakodtam a webszerver nem megfelelő beállítására, de amint a logokból kiderült, a kérés hozzá már el sem jutott, valószínűleg már a számlázó program nem tudott mit kezdeni egy kb 5 MB-os HTTP POST összerakásával.

Szerencsére a számlázóban nem csak ilyen formán van lehetőség az adatokat kinyerni, hanem lementhetjük helyi lemezre is XML formában. Ez volt a következő megoldás alapja. A webszerveren el kellett készítenem a bedolgozó automatizmus SOAP webservice változatát, amely a terméket létrehozza a VirtueMart adatbázisában, illetve ha már létezik, akkor frissíti az adatait, pl árat vagy raktárkészletet, ugyanis a számlázó programból állíthatnak ki számlát a webshoptól függetlenül is, ami ugyanúgy fogyasztja a készletet, illetve lehet egy áremelés, aminek szintén meg kell jelennie a webshopban.

Ezután el kellett készítenem egy windows programot, amely beolvassa az XML-t és elküldi a webservice-nak. Így sajnos a termékek kommunikációja egy lépéssel több lett az eredetileg tervezettnél, de még mindig lényegesen kényelmesebb, mint kézzel létrehozni minden egyes terméket a VirtueMart-ban is.

Ezzel a technikával a termékek kb 30-40 másodperc alatt felkerültek a webshopba és szépen meg is jelentek.

A vissza felé irányuló kommunikáció már nem volt ennyire macerás, elvégre nincs több ezer megrendelés két kommunikáció között, és így a számlázó a hagyományos módon be tudja olvasni a megrendeléseket, vagyis egy URL-ről, ami XML formában a kimenetre küldi azokat.
Ennek ellenére nem tartom ezt egy jó megoldásnak, hiszen a webszerveren kell megoldani, hogy azokat a megrendeléseket amiket már a számlázó beolvasott ne jelenítsük meg neki a következő kommunikációkor.
Így amit a kimenetre küldtünk egyszer azt már még egyszer nem szabad, ezzel csak annyi a gond, hogy nem ellenőrizhető, hogy azt a számlázó valóban feldolgozta, csak remélhetjük. Bár eddig nem volt hiba, reméljük nem is lesz, de jobban örülnék, ha ezt is meg lehetne oldani webservice alapon.

Az írással arra akartam rámutatni, hogy nem feltétlen kell drága szoftvereket és eszközöket venni ahhoz, hogy az embernek legyen egy integrált rendszere, ahol nincs felesleges dupla vagy akár tripla adminisztráció.
Megfelelő körültekintéssel viszonylag kis költséggel is megoldható az amit mondjuk egy SAP tud.

Éljen a Joomla!, VirtueMart és számlázó együttműködés! :)


5 megjegyzés:

  1. Hello!

    Kérnék egy elérhetőséget, szükségem lenne egy hasonló programra!

    Mail cimem: orikiru@hotmail.com

    Várom válaszod!
    Köszi,
    Jennifer

    VálaszTörlés
  2. Szia !

    Ez a megoldás érdekelne engem is.

    prob[kukac]beropex.hu-ra írj kérlek ha ilyet még vállasz .

    Várom válaszod !
    Prob

    VálaszTörlés
  3. Szia!

    Érdekelne engem is ez a megoldás! többek között hogy melyik számlázó és maga trükk is!

    follow@freemail.hu

    Köszi
    Tamás

    VálaszTörlés
  4. Most nekem is szükségem lenne egy ilyen programra, megoldásra.
    köszönettel Bakos Ildikó bakos.ildiko11@gmail.com

    VálaszTörlés
  5. Most nekem is szükségem lenne egy ilyen programra, megoldásra.
    köszönettel Bakos Ildikó bakos.ildiko11@gmail.com

    VálaszTörlés