- C# 94.5%
- PowerShell 5.5%
| ILLink | ||
| Merged | ||
| Properties | ||
| .gitattributes | ||
| .gitignore | ||
| App.config | ||
| fisknap.csproj | ||
| fisknap.sln | ||
| merge.ps1 | ||
| packages.config | ||
| Program.cs | ||
| README.md | ||
fisknap – Fiskalizacija Napojnica
Konzolna aplikacija za fiskalizaciju napojnica prema hrvatskom sustavu fiskalizacije (CIS – Porezna uprava RH).
Aplikacija dohvaća podatke o napojnici iz MySQL baze podataka, gradi i potpisuje XML poruku prema shemi f73, te je šalje na CIS servis. Rezultat (odgovor servisa) sprema se u bazu u tablicu fiskal_log, a uspješno fiskalizirana napojnica označava se u tablici napojnica.
Zahtjevi
- .NET Framework 4.7.2
- MySQL baza podataka
- Digitalni certifikat (
.pfx/.p12) za potpisivanje XML poruke (izdan od strane FINA-e)
Parametri pokretanja
Aplikacija se pokreće iz komandne linije i prima sljedeće obavezne parametre u obliku ključ=vrijednost:
| Parametar | Opis | Primjer |
|---|---|---|
id |
ID napojnice u bazi podataka (integer) | id=42 |
server |
Adresa MySQL poslužitelja | server=localhost |
user |
Korisničko ime za bazu podataka | user=root |
pass |
Lozinka za bazu podataka | pass=tajna |
db |
Naziv baze podataka | db=moja_baza |
cert |
Putanja do certifikata (.pfx / .p12) |
cert=C:\certs\firma.pfx |
certpass |
Lozinka certifikata | certpass=lozinkacerta |
Opcionalni parametar:
| Parametar | Opis | Zadana vrijednost |
|---|---|---|
port |
Port MySQL poslužitelja | 3306 |
Primjer pokretanja
fisknap.exe id=42 server=localhost user=root pass=tajna db=moja_baza cert=C:\certs\firma.pfx certpass=lozinkacerta
Struktura baze podataka
Aplikacija koristi sljedeće tablice:
| Tablica | Opis |
|---|---|
napojnica |
Podaci o napojnici (iznos, sredstvo plaćanja, status) |
zag_skla |
Zaglavlje skladišnog računa |
kartice |
Stavke računa s poreznim podacima |
blagajna |
Podaci o načinu plaćanja |
sifarnik |
Šifarnik artikala |
tarifna_porezi |
Porezne stope po tarifama |
odjel |
Odjeli (sadrži oznaku uređaja) |
poslovna |
Poslovne jedinice (sadrži oznaku prostora) |
podgod |
Poslovne godine |
partner |
Podaci o poduzećima (OIB, PDV status) |
zaposlenik |
Zaposlenici (OIB operatera) |
sredstvo_placanja |
Šifarnik sredstava plaćanja |
fiskal_log |
Log fiskalizacijskih zahtjeva i odgovora |
Tablica fiskal_log treba sadržavati stupce: id, datum, vrijeme, uuid, poslano, odgovor.
Tablica napojnica treba sadržavati stupac fiskalizirana koji se postavlja na 'da' nakon uspješne fiskalizacije.
Tijek rada
- Aplikacija čita parametre iz komandne linije.
- Dohvaća podatke o napojnici i vezanom računu iz baze.
- Gradi XML poruku prema shemi
NapojnicaZahtjev(namespace:http://www.apis-it.hr/fin/2012/types/f73). - Potpisuje XML poruku RSA algoritmom koristeći priloženi certifikat.
- Omata poruku u SOAP envelope i šalje je na CIS servis.
- Sprema zahtjev i odgovor u tablicu
fiskal_log. - Ako je odgovor HTTP 200, označava napojnicu kao fiskaliziranu (
fiskalizirana = 'da').
CIS servis
| Okolina | URL |
|---|---|
| Test | https://cistest.apis-it.hr:8449/FiskalizacijaServiceTest |
| Produkcija | https://cis.porezna-uprava.hr:8449/FiskalizacijaService |
Napomena: U kodu je trenutno aktivan testni URL. Za produkciju zamijenite URL u
Program.cs.
Logiranje
Aplikacija zapisuje log u datoteku fisknap.log u istom direktoriju kao i izvršna datoteka. Bilježe se:
- Parametri pokretanja
- Greške pri dohvatu podataka iz baze
- Greške pri potpisivanju XML-a
- Greške pri upisu u
fiskal_log
Ovisnosti (NuGet paketi)
MySql.Data– konektor za MySQL bazu podataka
Napomene
- Certifikat mora biti izdan od strane FINA-e i registriran u sustavu fiskalizacije Porezne uprave.
- Aplikacija koristi
OznakaSlijednosti = "N"(nije slijedni broj) za sve napojnice. - XML potpis koristi RSA-SHA1 i Exclusive C14N kanonizaciju sukladno zahtjevima CIS servisa.