Majetek — Articles¶
Správa hmotného majetku (artikly). Obsahuje CRUD operace, vyhledávání podle různých kritérií a správu lokací majetku.
Base path: /api/articles
Endpointy¶
POST /api/articles — Vytvoření majetku¶
Request body — objekt Article:
{
"code": "NTB-001",
"name": "Notebook Dell XPS 15",
"categoryId": 1,
"typeId": 2,
"stateId": 1,
"price": 35000.00,
"serialNumber": "SN123456",
"rfId": null,
"userId": 5,
"responsibleUserId": 3,
"isDisposal": false
}
Response 201 Created — vytvořený Article s přiděleným OID.
PUT /api/articles/{id} — Aktualizace majetku¶
Request body — stejná struktura jako POST, OID musí odpovídat {id}.
Response: 200 OK | 400 Bad Request (neshodná ID) | 404 Not Found
GET /api/articles — Seznam všech majetků¶
Response 200 OK — pole objektů Article.
Výkon
Endpoint vrací kompletní seznam. Pro velké databáze zvažte filtrované endpointy níže.
GET /api/articles/{id} — Detail majetku¶
Response 200 OK:
{
"oid": 42,
"code": "NTB-001",
"name": "Notebook Dell XPS 15",
"category": { "oid": 1, "name": "Výpočetní technika" },
"type": { "oid": 2, "name": "Notebook" },
"state": { "oid": 1, "name": "V provozu" },
"price": 35000.00,
"serialNumber": "SN123456",
"rfId": null,
"userId": 5,
"responsibleUserId": 3,
"isDisposal": false,
"disposalDT": null
}
Response 404 pokud majetek neexistuje.
GET /api/articles/getbycode — Vyhledání dle kódu¶
Vrátí majetek s přesně odpovídajícím kódem.
GET /api/articles/{id}/locations — Lokace majetku¶
Response 200 OK — seznam ArticleLocation objektů:
[
{
"oid": 10,
"articleId": 42,
"locationId": 5,
"location": { "oid": 5, "name": "Kancelář 201", "code": "K201" },
"quantity": 1
}
]
PWA endpointy¶
Endpointy volané z Eva.Mobile.Pwa (a sdíleně z Eva.Mobile MAUI), vracející data pro přihlášeného uživatele.
GET /api/articles/my-assets/{userId}¶
Majetek, kde je uživatel evidován jako Přiřazená nebo Odpovědná osoba.
GET /api/articles/my-stats/{userId}¶
Souhrnné statistiky pro domovskou stránku PWA — počet a hodnota přiřazeného majetku, počet otevřených převodek a čekajících vyřazení, v jednom DB dotazu.
GET /api/articles/my-transfers/{userId}¶
Otevřené převodky, které uživatel vytvořil a které ještě nejsou potvrzené ani zamítnuté (!IsConfirmed && !IsRejected && !Deleted). Vrací název, datum vytvoření a cílové umístění.
GET /api/articles/my-disposals/{userId}¶
Návrhy na vyřazení majetku vytvořené uživatelem, čekající na schválení (!IsDisposal). Vrací název a kód artiklu, důvod vyřazení a datum návrhu.
POST /api/articles/pwa-request — Návrh nového majetku¶
Uloží nový Article bez inventárního kódu (Code), se stavem „Navrženo" (globální stav, TenantID == null) — nově navržený majetek tak automaticky vstupuje do schvalovacího workflow.
Request body:
{
"name": "Monitor Dell 27\"",
"note": "Zakoupeno z osobního rozpočtu oddělení",
"serialNo": "SN998877",
"articleCategoryID": 3,
"articleTypeID": 8,
"price": 6500.00,
"currencyTypeID": 1,
"invoiceNo": "F2026-00123",
"dtBuy": "2026-08-01",
"userID": 12
}
serialNo (od v1.0.43) — volitelné sériové číslo majetku, ukládá se do Article.SerialNo.
Endpoint respektuje licenční limit MaxAssets — po dosažení limitu vrací 403 Forbidden.
Response: 201 Created — { "oid": 123 }
Filtrované vyhledávání¶
Všechny find* endpointy přijímají parametr filterOp (viz Filtrační operátory).
GET /api/articles/findById¶
GET /api/articles/findByCode¶
GET /api/articles/findBySerialNo¶
GET /api/articles/findByRFID¶
GET /api/articles/findByName¶
Datový model Article¶
| Pole | Typ | Popis |
|---|---|---|
OID |
long | Primární klíč |
Code |
string | Inventární číslo / kód |
Name |
string | Název majetku |
CategoryId |
long | FK → ArticleCategory |
TypeId |
long | FK → ArticleType |
StateId |
long | FK → ArticleState |
Price |
decimal | Pořizovací cena |
SerialNumber |
string? | Výrobní číslo |
RfId |
string? | RFID tag |
UserId |
long? | FK → User (přiřazený uživatel) |
ResponsibleUserId |
long? | FK → User (odpovědná osoba) |
IsDisposal |
bool | Příznak navržení k vyřazení |
DisposalDT |
DateTime? | Datum vyřazení |
DisposalMethodId |
long? | FK → ArticleDisposalMethod |
DisposalReasonId |
long? | FK → ArticleDisposalReason |
Deleted |
bool | Soft delete |
CreatedDT / ModifiedDT |
DateTime | Audit timestamps |
CreatedBy / ModifiedBy |
string | Audit uživatel |