# Sistema ng Voucher

Pinapayagan ka ng voucher system na pamahalaan ang mga koleksyon ng promotional codes na awtomatikong
ipinamamahagi sa mga manlalaro kapag sila ay nanalo ng premyo. Ang bawat code ay sinusubaybayan nang indibidwal — mula sa paglikha
hanggang sa claim.

## Ano ang Voucher Set?

Ang voucher set ay isang may pangalang koleksyon ng unique codes na inayos para sa campaign o promosyon:

- Holiday discount codes
- Gift card codes
- Product trial keys
- Event-specific offers

Kasama sa bawat set ang:

| Property    | Paglalarawan                                     | Required |
| ----------- | ----------------------------------------------- | -------- |
| Name        | Deskriptibong label (hal., "Summer Sale 20% Off") | Yes      |
| Description | Internal notes tungkol sa layunin ng set          | No       |
| Expiry Date | Kailan mag-e-expire ang lahat ng codes sa set                | No       |

Ang isang voucher set ay maaaring i-link sa **maraming laro** nang sabay-sabay — ipinapakita ng dashboard kung aling mga laro ang kasalukuyang gumagamit ng bawat set.

---

## Paglikha ng Voucher Set

1. Pumunta sa iyong **Organization** dashboard
2. I-click ang **Vouchers** sa sidebar
3. I-click ang **Create Set**
4. Maglagay ng pangalan, opsyonal na description, at opsyonal na expiry date
5. I-click ang **Create**

Handa na ang set para magdagdag ng codes.

<video autoplay loop muted playsinline preload="none">
  <source src="/vdo/prize/create-voucher.mp4" type="video/mp4" />
</video>

---

## Pagdaragdag ng Codes

Mayroon kang dalawang opsyon para punan ang voucher set:

### Upload CSV

Mag-upload ng `.csv` o `.txt` file na may isang code bawat linya:

1. I-click ang **Upload CSV** sa set
2. Piliin ang iyong file o i-paste ang codes sa text area
3. I-click ang **Upload**

**Tinatanggap na format** (plain text, isang code bawat linya):

```
SUMMER2024-001
SUMMER2024-002
SUMMER2024-003
```

Tinatanggap ang multi-column CSVs — ang unang column lang ang ginagamit. Awtomatikong kino-convert ang lahat ng codes sa **uppercase**, at tahimik na binabalewala ang mga duplicate.

Maaari mo ring i-paste ang codes nang direkta sa upload text area (isa bawat linya) nang hindi nangangailangan ng file.

<video autoplay loop muted playsinline preload="none">
  <source src="/vdo/prize/add-code-voucher.mp4" type="video/mp4" />
</video>

### Generate Codes

Auto-generate ng unique, human-readable codes:

1. I-click ang **Generate** sa set
2. I-configure ang settings:

| Setting           | Range       | Paglalarawan                            |
| ----------------- | ----------- | -------------------------------------- |
| Count             | 1–1,000     | Bilang ng codes na gagawin              |
| Prefix            | 0–10 chars  | Opsyonal na prefix (hal., `PROMO`)        |
| Random Length     | 4–16 chars  | Haba ng random portion            |

3. I-preview ang sample code
4. I-click ang **Generate**

**Halimbawang output** (prefix `PROMO`, length 8):

```
PROMO-A8K2M9X1
PROMO-B3N5P7Q2
PROMO-C1R4S6T8
```

<video autoplay loop muted playsinline preload="none">
  <source src="/vdo/prize/generate-code-voucher.mp4" type="video/mp4" />
</video>

:::tip[Readability]
Hindi kasama sa generated codes ang madaling magulong characters (I, O, 1, 0) — `ABCDEFGHJKLMNPQRSTUVWXYZ23456789` lang ang ginagamit para sa random portion.
:::

---

## Mga Status ng Voucher

Ang bawat code ay may isa sa apat na status:

| Status        | Kulay  | Paglalarawan                                        |
| ------------- | ------ | -------------------------------------------------- |
| **Available** | Green  | Handa nang manalo at ipamahagi                    |
| **Claimed**   | Amber  | Nanalo ng manlalaro — kasama ang player ID at timestamp |
| **Expired**   | Gray   | Lampas na sa expiry date, hindi na distributable      |
| **Disabled**  | Red    | Manwal na na-deactivate                               |

**Mga transition ng status:**

- `available` → `claimed` — Kapag nanalo ang manlalaro ng naka-link na premyo
- `available` → `expired` — Awtomatiko kapag lumipas ang expiry date
- Ang `available` vouchers lang ang maaaring tanggalin nang indibidwal

---

## Pamamahala ng Mga Voucher

### Dashboard View

Ipinapakita ng bawat voucher set ang:

- **Total / Available / Claimed** counts sa isang tingin
- **Linked games** — aling mga laro ang kasalukuyang gumagamit ng set na ito bilang premyo
- Expandable list ng lahat ng indibidwal na codes na may status badges

![Voucher dashboard](/img/prize/dashbaord-voucher.jpg)

### Copy Codes

I-click ang copy icon sa tabi ng anumang code para kopyahin ito sa iyong clipboard.

### Export

I-download ang lahat ng codes mula sa set bilang CSV:

1. I-click ang **Export** sa set
2. Magda-download ang file na pinangalanang `{set-name}-vouchers.csv`

**Format ng export:**

```csv
code,status
PROMO-A8K2M9X1,available
PROMO-B3N5P7Q2,claimed
PROMO-C1R4S6T8,expired
```

![Pag-export ng voucher codes](/img/prize/export-voucher.jpg)

### Pagtatanggal

- **Single code** — I-click ang delete icon (available lang para sa `available` codes; hindi matatanggal ang claimed codes)
- **Entire set** — I-click ang delete sa set header

![Pagtatanggal ng voucher codes](/img/prize/delete-voucher.jpg)

:::caution[Permanent Action]
Ang pagtanggal ng voucher set ay permanenteng nagtatanggal ng lahat ng codes — kabilang ang claimed codes at ang kanilang history. Hindi ito maaaring i-undo.
:::

---

## Expiration

Sumusuporta ang DailyPlay ng **dalawang antas** ng expiration:

| Antas         | Saklaw                    | Epekto                                           |
| ------------- | ------------------------ | ------------------------------------------------ |
| **Set-level** | Lahat ng codes sa set     | Itinatakda nang isang beses kapag ginagawa ang set                   |
| **Per-code**  | Indibidwal na voucher codes | Ino-override ang set-level expiry para sa partikular na codes |

Kapag nag-expire ang set o code:

- Nagiging `expired` ang status — hindi na distributable ang codes
- Kung susubukan ng manlalaro na i-claim ang premyo mula sa expired set, haharangin ng sistema ang claim
- Ipinapakita ang expired dates sa pula sa dashboard

---

## Pag-link sa Mga Laro

Kumokonekta ang voucher sets sa mga laro sa pamamagitan ng prize configuration:

1. Sa game editor, buksan ang seksyong **Prizes**
2. Magdagdag ng prize slot na may uri na **Voucher Set**
3. Piliin ang iyong voucher set mula sa dropdown
4. Itakda ang win probability (0–100%)
5. I-publish ang laro

**Pag-set up ng voucher set na may laro:**

<video autoplay loop muted playsinline preload="none">
  <source src="/vdo/prize/game-code-voucher.mp4" type="video/mp4" />
</video>

**Resulta sa voucher page:**

![Voucher na naka-link sa resulta ng laro](/img/prize/result-voucher.png)

### Flow ng Awtomatikong Pamamahagi

Kapag nanalo ang manlalaro ng voucher-set prize:

1. Kinukuha ng server ang susunod na available code mula sa set (FIFO order)
2. Status ng code → `claimed` kasama ang UUID at timestamp ng manlalaro
3. Nakikita ng manlalaro ang kanilang unique code sa result screen
4. Nagfa-fire ang connection integrations (Zapier, webhooks, atbp.)

Ang isang voucher set ay maaaring maglingkod sa maraming laro — kinukuha ang codes mula sa shared pool anuman ang larong nag-trigger ng panalo.

---

## Claim Tracking

Ang bawat claimed voucher ay nagrerecord ng:

| Field                | Paglalarawan                             |
| -------------------- | --------------------------------------- |
| Player UUID          | Anonymous browser-fingerprint player ID |
| Claimed At           | Exact timestamp ng panalo              |
| Play ID              | Aling game session ang nag-trigger ng claim  |

Available ang data na ito sa pamamagitan ng API at export — kapaki-pakinabang para sa reconciliation, fraud checks, at analytics.

---

## Mga Best Practice

### Naming Conventions

Gumamit ng malinaw, campaign-specific na mga pangalan:

- `Summer-Sale-2024-20%Off`
- `Launch-Event-Free-Trial-7d`
- `VIP-Early-Access`

Iwasan ang generic names tulad ng `Codes1` o `Test` — magkakaroon ka ng maraming sets sa paglipas ng panahon.

### Code Prefixes

Ginagawang madaling makilala ang codes ang prefixes sa isang tingin at nakakatulong sa external tracking:

| Prefix      | Campaign                |
| ----------- | ----------------------- |
| `SUMMER24-` | Summer promotion        |
| `LAUNCH-`   | Product launch          |
| `VIP-`      | Exclusive/loyalty codes |
| `GIFT-`     | Gift card codes         |

### Inventory Planning

| Laki ng Campaign            | Inirerekomendang Codes | Dahilan                             |
| ------------------------ | --------------- | ------------------------------------- |
| Small (< 500 plays)     | 150–250         | ~30% win rate + 20% buffer           |
| Medium (500–5,000 plays) | 500–1,500       | I-scale base sa expected traffic           |
| Large (5,000+ plays)    | 2,000+          | Subaybayan araw-araw at magdagdag kung kailangan    |

:::tip[Iwasan ang Stockouts]
Kapag naubos ang available codes ng voucher set, magiging inactive ang naka-link na prize slot. Maaaring landingin dito ang mga manlalaro at walang makuha. Palaging magpanatili ng buffer — subaybayan ang Available count at magdagdag ng higit pang codes bago umabot sa peak ang mga campaign.
:::

### Estratehiya sa Expiration

- Magtakda ng expiry dates **pagkatapos** ng end date ng iyong campaign (bigyan ang mga manlalaro ng oras para mag-redeem)
- Para sa ongoing promotions, iwanang walang laman ang expiry at pamahalaan nang manwal
- Mag-export ng codes bago magtanggal ng sets para mayroon kang record

---

## Troubleshooting

### "No vouchers available"

Walang laman ang set o lahat ng codes ay claimed/expired.

**Ayusin:** Mag-upload o gumawa ng higit pang codes sa set.

### Hindi lumalabas ang codes sa laro

1. Kumpirmahin na naka-link ang voucher set sa prize slot (suriin ang "Linked games" sa set)
2. Beripikahin na hindi pa nag-expire ang set
3. Siguraduhing may hindi bababa sa isang code na may status na `available`

### Hindi nakatanggap ang manlalaro ng code

1. I-expand ang voucher set at maghanap ng recently claimed codes
2. Suriin na natapos ang prize draw at claim (maaaring makagambala ang network issues)
3. Kung na-claim ang code, ipapakita nito ang player UUID at timestamp

### Binabalewala ang duplicate codes

Tahimik na nilalaktawan ng sistema ang duplicate codes sa panahon ng upload. Kung mas mababa ang import count kaysa inaasahan, mayroon nang umiiral na codes sa set.

---

## Mga Susunod na Hakbang

- [I-configure ang Prize Slots →](/fil/rewards/prizes)
- [Gumawa ng Laro](/fil/creating-games/overview) na may voucher prizes