Neoficiální implementace API pro komunikaci s účetním systémem MRP-K/S pomocí autonomního režimu s podporou šifrování a komprese. https://www.mrp.cz/software/ucetnictvi/ks/autonomni-rezim.asp
Knihovna není dostatečně otestována v reálném nasazení a chybí serializace pro některé příkazy viz tabulka:
Příkaz | Stav |
---|---|
EXPEO0 | |
EXPEO1 | |
IMPEO0 | |
CENEO0 | |
ADREO0 | |
EXPFV0 | |
EXPFV1 | |
EXPFV2 | |
EXPFVPDF | |
EXPFP0 | |
EXPFP1 | |
EXPOP0 |
Tyto instrukce popisují použití knihovny pouze pro klientské aplikace. Pro nastavení autonomního režimu na serveru navštivte prosím oficiální dokumentaci.
Install-Package MRP –IncludePrerelease
Doporučené základní nastavení s kompresí a šifrováním:
var mrpApi = new MrpApi("http://xxx.xxx.xxx.xxx:ppppp") // Jediný povinný parametr, url serveru včetně portu kam se mají zasílat požadavky
.WithEncryption("xxxXXXxXxXxxXXxXXxxxXXxXXxXXxXXxxXXxXXXxXXX=") // Přepne komunikaci na šifrovaný režim, klíč nutno vygenerovat na serveru
.WithCompression() // Zapne zlib kompresi
.WithTimeout(TimeSpan.FromSeconds(10)); // Jak dlouho počkat na odpověď požadavku
// Zašleme příkaz EXPEO0 a použijeme přídavné filtrování výsledků (viz oficiální dokumentace)
var response = await this.MrpApi.EXPEO0(x => x
.Filter("cisloSkladu", "1")
.Filter("SKKAR.CISLO", "1..1000")
);
// Něco se nezdařilo, můžeme to vyhodit jako aplikační chybu
if (result.HasError)
{
throw new Exception(result.ErrorMessage);
}
// Vypíšeme výsledky do konzole
Console.WriteLine($"Zvoleným filtrům odpovídá {result.Products.Count} produktů a {result.Categories.Count} kategorií.");
var produktySkladem = result.Products.Where(x => x.PocetMJ > 0);
Console.WriteLine($"Z toho je {produktySkladem.Count()} produktů skladem.");
Console.WriteLine($"V celkové hodnotě {produktySkladem.Sum(x => x.CenaSDPH)} {produktySkladem.First().Mena} s DPH.");
Příklad úspěšného výstupu:
Zvoleným filtrům odpovídá 183 produktů a 29 kategorií.
Z toho je 125 produktů skladem.
V celkové hodnotě 44793 CZK s DPH.
Testy API vyžadují tajné parametry, které se načítají z UserSecrets nebo EnvironmentVariables.
PM> dotnet user-secrets set SecretKey xxxXXXxXxXxxXXxXXxxxXXxXXxXXxXXxxXXxXXXxXXX= --project MRP.Tests
PM> dotnet user-secrets set ApiUrl http://xxx.xxx.xxx.xxx:ppppp --project MRP.Tests
SecretKey = xxxXXXxXxXxxXXxXXxxxXXxXXxXXxXXxxXXxXXXxXXX=
ApiUrl = http://xxx.xxx.xxx.xxx:ppppp
*Testy ověřují pouze zda byla úspěšná komunikace se serverem a zda byl vrácen alespoň nějaký výsledek. **Testy jsou dynamicky označeny jako přeskočené pokud server vrátí chybu, že daný příkaz nemá povoleno obsloužení.
- Portable.BouncyCastle - Šifrování
- SharpCompress - Komprese
- xUnit.net - Testování
- Shouldly - Assertion framework pro testování
Tato knihovna používá SemVer 2.0.0 pro číslování verzí.