Delphi - Számla fejléc adatainak létrehozása

Internetes számlázó 7. rész

forráskód letöltése

Számla készítő alkalmazásunk most jutott el addig a pontig, hogy elkezdhetünk foglalkozni a számla tényleges létrehozási funkcióinak megvalósításával. Ezt a feladatot több lépésben oldjuk meg, mivel az eddigieknél sokkal összetettebb megvalósítást kíván. Első lépésként a számla fejléc adatainak beviteli lehetőségét és a számlák listázását valósítjuk meg. A mellékelt példa fordítása előtt szokás szerint ellenőrizze és szükség esetén javítsa a Constant.pas-ban lévő konstansok értékeit (TEMPLATEPATH, CONNECTIONSTRING, stb.).
Az előző cikkekben már létrehozott NetInvoice virtuális web könyvtár elérési útvonalát módosítsa úgy, hogy az a most mellékelt NetInvoice könyvtárra mutasson.

Az alkalmazásunk nyitó web oldalán bejelentkezés után már megjelenik a tools.dat tartalma. Ezt most kiegészítjük két további linkkel, melyek segítségével létrehozhatunk új számlát, vagy listázhatjuk a meglévőket.
<a href="/scripts/NetInvoice.exe?uid=<#uid>&command=11">Új számla</a><br>
<a href="/scripts/NetInvoice.exe?uid=<#uid>&command=12">Számlák listája</a><br>

Kezdjük most először a meglévő számlák listázásának elkészítésével. Ez a funkció nagyjából megegyezik az eddigiekben használt listázásokkal. Amikor tehát a Command paraméter 12-es értéket kap, akkor van szükség a lista elkészítésére.
procedure TWebModule1.Command;
…
    12: begin//számlák lista
      PageProducer1.HTMLFile:=TEMPLATEPATH+'invoicelist.dat';
      Response.Content:=PageProducer1.Content;
    end;
Ehhez létrehoztunk egy invoicelist.dat állományt, melyben egy Html táblázat kap helyet, amiben megtalálható a számlák táblájának fejléce, így programból nekünk csak a sorokat kell generálnunk attól függően, hogy rekord is található-e az invoice táblában. Elhelyezünk tehát egy invoicelistitems címkét a invoicelist.dat-ba, arra a helyre, ahová be kell szúrnunk az adatokat. Ezt a műveletet pedig rábízzuk a GetInvoiceListItems nevű függvényünkre.
procedure TWebModule1.PageProducer1HTMLTag(Sender: TObject; Tag: TTag; const TagString: String;
    TagParams: TStrings; var ReplaceText: String);
…
                  if TagString='invoicelistitems' then begin
                    ReplaceText:=GetInvoiceListItems;
                  end;
Ebben a függvényben szokás szerint meghatározzuk a használandó adatbázis típusát és megnyitjuk azt.
function TWebModule1.GetInvoiceListItems: string;
…
Ezt követően egy ciklus segítségével végigmegyünk az összes rekordon és legeneráljuk az adatokkal együtt a HTML táblázat sorait.
  while not ds.Eof do begin
    result:=result+'<tr>';
    result:=result+'<td>'+ds.Fields[0].AsString+'</td>';
…
    result:=result+'</tr>';
    ds.Next;
  end;
…

A listázás mellett a másik funkció a számla létrehozása.
procedure TWebModule1.Command;
    11: begin//Új számlafej
      PageProducer1.HTMLFile:=TEMPLATEPATH+'invoicenew1.dat';
      Response.Content:=PageProducer1.Content;
    end;
Ha a felhasználó ezt választja, akkor az invoicenew1.dat állomány kerül felhasználásra, melyben egy olyan HTML Form kap helyet, amelyben fel tudjuk venni a számla fejléc adatait. Ezek kerülnek majd az Invoice táblába. Amikor a felhasználó itt befejezi a műveletet és a Tovább gombra kattint, akkor az invoicenew1.dat-ban lévő rejtett command mező 13-es értéke fogja jelölni, hogy most kell megadni a számla tétel adatait. A következő részben ezzel folytatjuk alkalmazásunk fejlesztését.
<form method=get action="/scripts/NetInvoice.exe">
<input type=hidden name=command value=13>


Internetes számlázó cikksorozat