Java saját szoftver készítése 1. rész

Ahogy írtam, elértem a StudiCore Java SE képzésének a végére, aminek része egy saját nagy program, önálló szoftver elkészítése. Itt egy grafikus felületű, adatbázist használó programról van szó, és úgy döntöttem, hogy teljesen részletesen bemutatom a feladatot.

A saját vállalkozásaimhoz írok egy megrendeléseket rögzítő szoftvert. Mi alapvetően tartalomfejlesztéssel foglalkozunk, így a vállalkozásainktól szövegírást rendelnek, melyeket karakterben számolunk el. Vannak saját íróink, akiket ki kell fizetnünk, és vannak megrendelőink. Ezeket mind felvesszük egy rendszerbe, és végre akkor átláthatóbban megjeleníthetjük, milyen feladatokkal is kell foglalkoznunk.

Miért kell erre saját program?

Aki most ezeket a sorokat olvassa, abban felvetődhet a kérdés, miért kell erre saját program? Egyrészt azért, mert mindenképpen el kell készíteni egy szoftvert a tanfolyam befejezéséhez. Először arra gondoltam, hogy a kamrában lévő élelmiszerek regiszterét készítem el, amiben tároljuk a lejárati időt, így lenne egy lista arról, hogy mi romlik meg, mit kell beszerezni. Aztán a vállalkozásinak fejlődésével annyi megrendelés érkezett, hogy már nehézséget okozott ezek adminisztrálása. Így a saját nyilvántartó program elkészítése pont segíthet a feladaton.

Másrészt tudom, hogy a piacon kismillió CRM szoftver van. Ezek képesek az ügyfelek, megrendelések, dolgozók stb. nyilvántartására, sokan online felületen, esetleg számlázóprogram regisztrációval. Ezekkel csak egy bajom van, hogy már túlságosan is agyon vannak bonyolítva. A minimum, hogy mindegyiknél meg kell tanulni a funkciókat, de a használatuk sem kényelmes.

Mire van szükségem? Jön egy megrendelés, felviszem az adatbázisba, ha kész, akkor számlázom. Legyen egy rész, ahol látom a hátralévő feladatokat, és le tudjam kérdezni az engem érdeklő dolgokat. Na most ehhez képest megnyitva egy CMR rendszert, az agyam eldobom a túlzott részletességétől. Ezek lehet, hogy nagyon jók több ezer ügyfélhez, de a mi méretünkben inkább egy egyszerűbb változatra szavazok.

Az adatbázis felépítése

A programban felvitt adatokat adatbázisba mentem. Ezekhez a következő adattáblákat hozom létre:

vallalkozas

  • vallalkozas_id : auto_increment
  • indulas : date
  • nev : varchar
  • iranyitoszam : int
  • telepules : varchar
  • utcanev : varchar
  • hazszam : varchar
  • adoszam : varchar
  • cegjegyzekszam : varchar
  • ugyvezeto : varchar
  • email_cim : varchar
  • weboldal : varchar

Itt a vallalkozas a mi vállalkozásainkat tartalmazza, ahol azért ennyire részletesek az adatok, mert esetlegesen felhasználhatók lesznek majd a számlázáshoz később. Nem azt mondom, hogy lesz számlázó része a programnak, de mibe telik felvinni a vállalkozás részletes adatait, ha mégis kellene?

Az indulas dátum például KATÁ-s vállalkozásoknál lehet fontos, ha az adott éven belüli, akkor ugye módosulnak az alanyi adómentesen kiszámlázható keretösszegek. De amúgy minden mezőnév adja magát, nem szükséges túl sok magyarázat hozzájuk.

vevo

  • vevo_id : auto_increment
  • nev : varchar
  • iranyitoszam : varchar
  • telepules : varchar
  • utcanev : varchar
  • hazszam : varchar
  • adoszam : varchar
  • kapcsolattarto : varchar
  • email_cim : varchar
  • weboldal : varchar

A vevo adattábla tartalmazza az ügyfelek adatait, így az egyes megrendeléseket hozzájuk lehet társítani.

megrendeles

  • megrendeles_id : auto_increment
  • megrendelo : vevo_id a vevo-ből
  • tetel_neve : varchar
  • mennyiseg : int
  • mennyisegi_egyseg : varchar
  • nettó_egysegar : int
  • afa_kulcs : afa_id az afa-ból
  • netto_ar : int
  • rogzites : date
  • allapot: int (0 megrendelve, 1 elkészítve, 2 elküldve ügyfélnek ellenőrzésre, 3 kiszamlazva, 4 kifizetve)
  • kifizetve : date (az a dátum, amikor a megrendelés értéke megjelent a vállalkozás számláján)
  • munkatars : munkatars_id a munkatarsak-ból
  • munkatars_ar: double

A megrendeles adattábla tartalmazza a megrendeléseket. Itt már láthatók, hogyan kerülnek felhasználásra a külső kulcsok, és mi, mivel lesz összekötve. A megrendelés automatikus ID-t kap, a megrendelőnél egy vevőazonosító kerül megadásra. A tétel neve bármilyen megnevezést kaphat, a mennyiségnél és a mennyiségi egységnél kell megadni, hogy mekkora mennyiségre van szükség, pl. 25000 karakter. A nettó egységár adja meg a mennyiségi egyég árát, pl X Ft/karakter, a nettó árat pedig a rendszer ebből kiszámolja már (nettó ár = mennyiség x nettó egységár). Az áfa kulcs a bruttó összeghez kell, amit nem tárolunk, mert bármikor lekérdezhető a nettó ár x áfa kulcs képlettel.

Az állapot a különféle lekérdezésekhez szükséges, itt jelöljük, hogy egy adott megrendelés még csak megvan-e rendelve, vagy már el is készült, elküldtük az ügyfélnek, kiszámláztuk és ki is fizettük. A kifizetés dátuma azért fontos, mert például a KATÁ-s vállalkozásoknál a számla értékét akkor kell beleszámolni a különféle keretekbe, amikor megjelent a vállalkozás számláján. A munkatárs azonosítója pedig a munkatársak felé történő elszámoláshoz kell, a munkatars_ar a munkatárs aktuális vállalási árát rögzíti, mivel ez változhat.

afa

  • afa_id : auto_increment
  • rovidites : varchar (AAM, EU, EUK)
  • afa_tartalom : int (0, 12, 27)
  • belfoldi : boolean

Áfa adattábla, nem különösebbem bonyolult. Itt lehet felvinni az Áfa értékeket, mellyel a program a bruttó összegeknél számol. A belfoldi logikai változó szintén a különféle könyvelési folyamatokhoz kell, pl. a belfoldi értékesítés beleszámít a KATÁ-sok alanyi adómentes keretébe, a külföldi nem. De van még kismillió szabály, amiből csak a mi vállalkozásainkra is érvényes szabályokat használom fel. (Nem célom egy univerzális könyvelőszoftver elkészítése.)

munkatarsak

  • munkatars_id : auto_increment
  • nev : varchar
  • email_cim : varchar
  • vallalasi_ar (Ft/karakter) : double

A munkatarsak adattábla tárolja a munkatársainkat, hogy mennyiért dolgoznak aktuálisan. Ez tehát az adatbázis, a következő bejegyzésben bemutatom, hogyan tervezem a StudiCore záró feladatául szolgáló szoftver működését.