reimburse/docs/user-guide.md

123 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# User Guide — Reimbursement Form
This guide is for staff submitting expense reimbursement claims.
---
> Copyright 2026 Kristian Benestad. Licensed under the Apache License, Version 2.0. See LICENSE for more information.
>
> This is a custom build of kbenestad/reimburse for Boat People SOS and People Serving People Foundation.
---
## Overview
The reimbursement form runs in your browser. You fill in your expenses, attach receipts, and click one button to download a PDF. No account, login, or internet upload is needed — the PDF is generated entirely on your device.
---
## Step-by-step
### 1. Open the form
Navigate to the URL your administrator has given you (e.g. `https://app.example.org/reimbursement/`). The form loads in a few seconds. If you see an error, check your internet connection — the form needs to reach CDN servers to load its libraries.
### 2. Fill in the header fields
At the top of the form you will see four fields:
| Field | What to enter |
|---|---|
| **Staff** | Your full name. This is saved in your browser and pre-filled next time. |
| **Period from** | Start date of the expense period (defaults to the first day of last month). |
| **to** | End date of the expense period (defaults to the last day of last month). |
| **Base currency** | The currency your reimbursement will be paid in. Select from the dropdown. |
> **Period default logic:** On the last day of the current month, the period defaults to the current month instead of the previous one.
### 3. Add items
An "item" groups related expenses — for example, a trip, a project, or a category. Click **+ Add item / project / travel** to create one. Give the item a descriptive name (e.g. "Field visit to Chiang Rai, March 2026").
You can add as many items as you need and remove any item with the **✕ Remove** button.
### 4. Add expense lines
Each item contains one or more expense lines. A line represents a single purchase or payment. Click **+ Add line** inside an item to add a line.
Each line has the following fields:
#### Date
The date the expense was incurred. Use the date picker or type `YYYY-MM-DD`.
#### Vendor
The name of the shop, service provider, or payee. Example: "Bangkok Airways", "Office Depot".
#### Currency
The currency in which you paid. Select from the dropdown. Each option shows the currency code (e.g. `THB`) and the full name (e.g. "Thai baht").
#### FX rate
How many units of the line currency equal one unit of the base currency.
- Example: if base currency is USD and you paid in THB, enter the number of Thai baht per 1 US dollar (e.g. `34.25000`).
- If the line currency is the same as the base currency, this field is locked at `1.00000` and you cannot change it.
- The form remembers FX rates you have entered for each currency during the session.
> **FX rate direction:** `line_amount ÷ fx_rate = base_amount`. Always use the rate as "how many [line currency] per 1 [base currency]".
#### Description
A brief description of what was purchased or paid for. Example: "Taxi from airport to hotel".
#### Receipt
Select **Yes** if you have a receipt, **No** if you do not.
- **Yes:** Upload one or more receipt files (PDF, JPG, or PNG). Each file will be embedded at the end of the PDF output. You can remove an uploaded file and re-upload.
- **No:** A text box appears. You must explain why no receipt is available (e.g. "Toll fees — no receipt issued"). This explanation will appear on the PDF.
#### Amount
The amount paid, in the line currency (not converted). Enter a positive number. Example: `1850.00`.
#### Account
Select the accounting code that this expense belongs to. The options are configured by your administrator.
#### Program
Select the program or project this expense relates to. If you select **Other**, a text field appears where you must type the program name.
### 5. Review totals
Each item shows a **Subtotal** in the base currency. The bottom of the form shows the **Total reimbursement claim**. These update as you type.
### 6. Generate the PDF
Click **Generate Reimbursement Form**. The form validates all fields first. If anything is missing or incorrect, a red box at the top lists the problems — fix them and click again.
When validation passes, the PDF is generated in your browser and downloaded automatically. The filename is:
```
reimbursement_[Your_Name]_[from-date]_[to-date].pdf
```
### 7. Submit the PDF
Send the downloaded PDF to whoever handles reimbursements at your organisation. No further action is needed in the browser.
---
## Tips
- **Your name is remembered.** It is stored in your browser's local storage so you do not need to retype it next visit.
- **FX rates are remembered within a session.** If you enter a rate for THB and then switch to USD and back, the THB rate is restored.
- **Large receipt files slow PDF generation.** If the browser appears frozen after clicking "Generate", wait — it is processing the files.
- **Password-protected PDFs cannot be merged.** If a receipt PDF is password-protected, the output will contain an error page in its place. Use a non-protected version.
---
## Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Form shows "Loading configuration…" indefinitely | Network issue or server misconfiguration | Check internet connection; contact your administrator |
| "Failed to load: Cannot load config.yml" | Server is not serving the config file | Contact your administrator |
| PDF download starts but contains error text | A receipt PDF is password-protected or corrupt | Replace the file with an unprotected version |
| Amounts show as "" in the PDF | Amount field left blank or non-numeric | Enter a valid number in the amount field |
| FX rate field is greyed out | Line currency equals the base currency | No action needed; rate is 1.00000 by definition |