diff --git a/guides/Configuration.md b/guides/Configuration.md new file mode 100644 index 0000000..bc53935 --- /dev/null +++ b/guides/Configuration.md @@ -0,0 +1,19 @@ +# Configuration + +## Component Settings + +| Setting | Default | Description | +|---|---|---| +| Loan period (days) | 14 | Default checkout duration | +| Max renewals | 2 | Times an item can be renewed | +| Grace period (days) | 1 | Days after due before fines start | +| Fine per day | $0.25 | Daily overdue fine rate | +| Max items per patron | 10 | Borrowing limit | +| Reservation hold (days) | 3 | Days a held item waits for pickup | + +## Patron Setup + +1. Patrons are CRM contacts with library card assigned +2. Create patron from Components > MokoSuite Library > Patrons > New +3. Link to existing CRM contact or create new +4. Assign borrowing limit and card number (auto-generated or manual) diff --git a/guides/Installation.md b/guides/Installation.md new file mode 100644 index 0000000..e4ccbfe --- /dev/null +++ b/guides/Installation.md @@ -0,0 +1,27 @@ +# Installation + +## Prerequisites + +| Requirement | Version | +|---|---| +| PHP | 8.3+ | +| Joomla | 6.x | +| MokoSuiteClient | Layer 0 (base) | +| MokoSuiteCRM | Layer 1 (contacts as patrons) | + +## Install Steps + +1. Download `pkg_mokosuitelibrary-*.zip` from [Releases](https://git.mokoconsulting.tech/MokoConsulting/MokoSuiteLibrary/releases) +2. Install via System > Install > Upload Package File +3. Enable plugin: Extensions > Plugins > search "mokosuitelibrary" > Enable +4. Component appears under Components > MokoSuite Library + +## Database Tables Created + +- `#__mokosuitelibrary_items` — catalog items +- `#__mokosuitelibrary_item_copies` — physical copies per item +- `#__mokosuitelibrary_patrons` — library card holders +- `#__mokosuitelibrary_checkouts` — checkout/return transactions +- `#__mokosuitelibrary_reservations` — holds +- `#__mokosuitelibrary_fines` — overdue fines +- `#__mokosuitelibrary_fine_payments` — fine payments diff --git a/reference/Helpers.md b/reference/Helpers.md new file mode 100644 index 0000000..4e89388 --- /dev/null +++ b/reference/Helpers.md @@ -0,0 +1,43 @@ +# Helper Reference + +## CatalogHelper + +| Method | Description | +|---|---| +| `search(filters, limit, offset)` | Full-text catalog search with availability filter | +| `getItem(itemId)` | Item with all copies and availability status | +| `getAvailableCopies(itemId)` | Copies currently on shelf | + +## CheckoutHelper + +| Method | Description | +|---|---| +| `checkout(copyId, patronId)` | Check out a copy to a patron | +| `checkin(copyId)` | Return a copy, calculate fines | +| `renew(checkoutId)` | Extend due date if allowed | +| `getOverdue()` | All overdue checkouts | + +## ReservationHelper + +| Method | Description | +|---|---| +| `reserve(itemId, patronId)` | Place hold on an item | +| `fulfillNext(itemId)` | Notify next patron when copy returned | +| `getQueue(itemId)` | Hold queue for an item | + +## FineHelper + +| Method | Description | +|---|---| +| `calculate(checkoutId)` | Calculate fine for overdue checkout | +| `getPatronBalance(patronId)` | Total outstanding fines | +| `recordPayment(fineId, amount)` | Record fine payment | +| `waive(fineId, reason)` | Waive a fine with reason | + +## BarcodeHelper + +| Method | Description | +|---|---| +| `generateItemBarcode(itemId)` | Code128 barcode for item | +| `generatePatronQR(patronId)` | QR code for patron card | +| `scanLookup(barcode)` | Identify item or patron from scan |