MAES.Fiskal2 je C# biblioteka za rad s Hrvatskim fiskalnim posrednicima. Cilj projekta je izraditi zajednički sloj za sve posrednike koji podržavaju razmjenu ulaznih i izlaznih e-računa u C#.
Projekt definira zajedničku abstraktnu klasu Posrednik koja opisuje osnovne operacije za posrednike fiskalizacije:
- dohvat ulaznih i izlaznih e-računa
- dohvat UBL i PDF sadržaja računa
- evidentiranje UBL dokumenta
- evidentiranje uplate
- odbijanje računa
Modeli UlazniERacun i IzlazniERacun predstavljaju minimalne informacije o računu, uključujući OIB partnera, adresu, datum i status.
U Posrednici/ direktoriju nalaze se konkretne implementacije
| Značajka / posrednik | Super |
EPoslovanje |
Fina |
Moj eRačun |
Redok |
Parra |
|---|---|---|---|---|---|---|
| Dohvat ulaznih e-računa | ✅ | ✅ | ❌* | ❌ | ❌ | ❌ |
| Dohvat izlaznih e-računa | ✅ | ✅ | ❌* | ❌ | ❌ | ❌ |
| Dohvat UBL sadržaja | ✅ | ✅ | ❌* | ✅ | ❌ | ❌ |
| Dohvat PDF sadržaja | ✅ | ✅ | ❌* | ❌** | ❌ | ❌ |
| Evidentiranje UBL dokumenta | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Evidentiranje uplate | ✅ | ✅ | ❌* | ❌ | ❌ | ❌ |
| Odbijanje računa | ✅ | ✅ | ❌* | ❌ | ❌ | ❌ |
* Fina nema pola ovih api callova ili su na nekom drugom endpointu treba vidit
** MER ne podržava dohvat PDF byte[]
Instalirajte paket iz NuGeta:
dotnet add package MAES.Fiskal2Ili direktno u datoteku .csproj:
<ItemGroup>
<PackageReference Include="MAES.Fiskal2" Version="*" />
</ItemGroup>using MAES.Fiskal2.Posrednici;
// Super.hr
var posrednik = new Super
{
IsDev = true,
BusinessGuid = "...",
Username = "...",
Password = "..."
};
// ePoslovanje
var posrednik = new EPoslovanje
{
IsDev = true,
OIB = "...",
Username = "...",
Password = "..."
};
// Fina
var posrednik = new Fina
{
IsDev = true,
OIB = "...",
Certificate = ...
};
// Moj eRačun
var posrednik = new MER
{
IsDev = true,
Username = "...",
Password = "...",
OIB = "..."
};// dohvat računa u razdoblju zadnjih mj. dana ili dohvati paginacijom zavisi sto posrednik podržava
var racuni = posrednik.UlazniListAsync(DateTime.Now.AddMonths(-1), DateTime.Now);
var racuni = posrednik.UlazniListAsync(1, 20);
var racun = racuni.FirstOrDefault();
if(racun != null)
{
// dohvat ubl stringa i pdf byteova
string ubl = await posrednik.UlazniUBLAsync(racun.Id);
byte[] pdf = await posrednik.UlazniPdfAsync(racun.Id);
}
// evidentiranje računa
posrednik.EvidentirajUBLAsync(ubl);Neki posrednici nemaju podržane sve metode, neki nemaju sve fieldove u modelima tipa UlazniERacun i sl. Mora se voditi računa o tome...
Svaka metoda ima na kraju CancellationToken kojeg je poželjno postaviti, ali se može izostaviti
Abstraktna klasa Posrednik nudi sljedeće metode:
-
Task<IEnumerable<UlazniERacun>> UlazniListAsync(DateTime from, DateTime to)Dohvaća popis ulaznih računa u vremenskom rasponu
-
Task<IEnumerable<UlazniERacun>> UlazniListAsync(int page, int pageSize)Dohvaća popis ulaznih računa (pagination)
-
Task<string> UlazniUBLAsync(string id)Dohvaća XML/UBL sadržaj ulaznog računa
-
Task<byte[]> UlazniPdfAsync(string id)Dohvaća PDF sadržaj ulaznog računa
-
Task<IEnumerable<IzlazniERacun>> IzlazniListAsync(DateTime from, DateTime to)Dohvaća popis izlaznih računa u vremenskom rasponu
-
Task<IEnumerable<IzlazniERacun>> IzlazniListAsync(int page, int pageSize)Dohvaća popis izlaznih računa (pagination)
-
Task<string> IzlazniUBLAsync(string id)Dohvaća XML/UBL sadržaj izlaznog računa
-
Task<byte[]> IzlazniPdfAsync(string id)Dohvaća PDF sadržaj izlaznog računa
-
Task EvidentirajUBLAsync(string ubl)Evidentira UBL dokument
-
Task EvidentirajUplatuAsync(string id, DateTime datum, double iznos, NacinPlacanja nacinPlacanja)Evidentira uplatu za račun
-
Task OdbijRacunAsync(string id, RazlogOdbijana razlog, string opis)Odbija račun
Za izgradnju upotrijebite:
dotnet build MAES.Fiskal2.csproj --configuration ReleaseAko želite napraviti NuGet paket:
dotnet pack MAES.Fiskal2.csproj --configuration Release- Projekt je u razvoju.
- Neke metode još nisu implementirane.
- Trenutna sučelja i model podataka mogu se mijenjati dok se dovršava podrška za različite posrednike.