# Osztályok: RCP_Discount, RCP_Discounts és RCP_Registration

> A kedvezménykód objektuma, az elavult kedvezménytábla-osztály és a regisztráció összegeit kezelő osztály.

## RCP_Discount: egy kedvezménykód

Az objektum egyetlen kedvezmény adatait tartalmazza, és segédmetódusokat ad hozzá.

### Lekérés

| Függvény | Mit csinál |
| --- | --- |
| `rcp_get_discount( $id )` | A kedvezményt az azonosítója alapján adja. |
| `rcp_get_discount_by( $mezo, $ertek )` | Egy tetszőleges mező szerint keres, például névre vagy kódra. |
| `rcp_get_discounts()` | Több kedvezményt ad `RCP_Discount` objektumokként. |

```php
$discount = rcp_get_discount( 123 );
$discount = rcp_get_discount_by( 'code', 'beta_tester' );
```

Az objektumot ne példányosítsd kézzel.

### Adatok lekérdezése

| Metódus | Mit ad vissza |
| --- | --- |
| `get_id()` | A kedvezmény azonosítóját. |
| `get_name()` | A nevét. |
| `get_description()` | A leírását. |
| `get_amount()` | A kedvezmény összegét. |
| `get_unit()` | Az egységét: `%` vagy `flat` (fix összeg). |
| `get_code()` | A kedvezménykódot. |
| `get_use_count()` | Hányszor használták fel. |
| `get_max_uses()` | A legtöbb felhasználást, 0, ha nincs korlát. |
| `get_status()` | Az állapotot: `active` vagy `disabled`. |
| `get_expiration()` | A lejárat dátumát, vagy üres szöveget, ha nincs. |
| `get_membership_level_ids()` | Azon szintek azonosítóit, amelyeken a kód használható. Üres tömb, ha bármelyiken. |
| `is_one_time()` | Igaz, ha egyszeri kedvezmény, hamis, ha ismétlődő. |
| `is_valid( $szint_id )` | Igaz, ha a kód felhasználható a megadott szinten. |

Az `is_valid()` akkor ad igazat, ha mind teljesül: az állapot `active`, a lejárat nincs beállítva vagy a jövőben van, a felhasználások száma nem érte el a korlátot, és a szint szerepel az engedélyezettek között (vagy a kód bármely szinten használható).

### Segédmetódusok

| Metódus | Mit csinál |
| --- | --- |
| `increment_use_count()` | Eggyel növeli a felhasználások számát. |
| `decrement_use_count()` | Eggyel csökkenti. |
| `is_expired()` | Igaz, ha van lejárat, és az a múltban van. |
| `is_maxed_out()` | Igaz, ha van felhasználási korlát, és elérték. |
| `has_membership_level_ids()` | Igaz, ha a kedvezmény egy vagy több szinthez van kötve. |
| `store_for_user( $user_id )` | A kódot a felhasználó előzményei közé menti (`rcp_user_discounts` meta). |
| `remove_from_user( $user_id )` | Törli a kódot a felhasználó előzményeiből. |

## RCP_Discounts: az elavult osztály

Az osztály elavult, új kódban az `rcp_get_discounts()` függvényt használd. A kedvezménytáblával dolgozik közvetlenül.

| Metódus | Mit csinál |
| --- | --- |
| `get_discounts( $args )` | Kedvezményeket kérdez le, például az `status` argumentum szerint szűrve. |
| `get_discount( $id )` | Egy kedvezményt ad az azonosítója alapján adatbázisobjektumként. |
| `get_by( $mezo, $ertek )` | Mező szerint keres, alapból a `code` mezőben. |
| `insert( $args )` | Új kedvezményt ment. |
| `update( $id, $args )` | Meglévőt módosít, az argumentumai az `insert()` argumentumai. |
| `get_status( $id )` | Az állapota. |
| `get_amount( $id )` | Az összege. |
| `get_uses( $id )` | A felhasználások száma. |
| `get_max_uses( $id )` | A legtöbb felhasználás. |
| `get_subscription_id( $id )` | A hozzákapcsolt tagsági szint. |
| `has_subscription_id( $id )` | Van-e hozzákapcsolt szint. |
| `increase_uses( $id )` | Eggyel növeli a felhasználások számát. |
| `get_expiration( $id )` | A lejárat. |
| `get_type( $id )` | `flat` vagy `%`. |
| `delete( $id )` | Törli a kedvezményt. |
| `is_maxed_out( $id )` | Elérték-e a felhasználási korlátot. |
| `is_expired( $id )` | Lejárt-e. |
| `add_to_user( $user_id, $kod )` | Hozzáadja a kódot a felhasználó előzményeihez. |
| `user_has_used( $user_id, $kod )` | Használta-e már a felhasználó a kódot. |
| `format_discount( $osszeg, $tipus )` | Százaléknál `%` jelet, fix összegnél pénznemjelet tesz az érték mellé. |
| `calc_discounted_price( $alapar, $osszeg, $tipus )` | Kiszámítja a kedvezményes árat. |

Az `insert()` és az `update()` argumentumai:

| Argumentum | Típus | Jelentése |
| --- | --- | --- |
| `name` | szöveg | A kedvezmény neve. |
| `description` | szöveg | Leírás. |
| `amount` | szám | A kedvezmény összege. |
| `status` | szöveg | `active` vagy `inactive`, alapból `inactive`. |
| `unit` | szöveg | `flat` vagy `%`, alapból `%`. |
| `code` | szöveg | A kedvezménykód. |
| `expiration` | szöveg | A lejárat `Y-m-d` formátumban, alapból üres (nincs lejárat). |
| `max_uses` | egész | A legtöbb felhasználás, 0 = korlátlan. |
| `use_count` | egész | A felhasználások száma, alapból 0. |
| `subscription_id` | egész | A hozzákapcsolt szint azonosítója, alapból 0 (nincs). |

```php
$discounts_db = new RCP_Discounts();
$discounts    = $discounts_db->get_discounts( array( 'status' => 'active' ) );
$discount     = $discounts_db->get_by( 'code', 'half_off' );
```

## RCP_Registration: a regisztráció összegei

A regisztrációs oldalon ez az osztály állítja össze a regisztrációt: kezeli a szintet, a kedvezményeket és a díjakat, és kiszámolja a végösszeget. A jelenlegi, fő példányt általában az `rcp_get_registration()` függvénnyel kapod meg.

```php
$registration = new RCP_Registration( $level_id, $discount_code );
```

| Metódus | Mit csinál |
| --- | --- |
| `set_subscription( $szint_id )` | Beállítja a regisztráció tagsági szintjét. Ha a szinten van beiratkozási díj, azt magától hozzáadja. |
| `get_membership_level_id()` | A regisztráció szintjének azonosítóját adja. |
| `get_registration_type()` | A regisztráció típusát adja: `new` (új feliratkozás), `renewal` (megújítás), `upgrade` (drágább szintre váltás) vagy `downgrade` (olcsóbbra váltás). |
| `get_membership()` | A megújított vagy átváltott `RCP_Membership` objektumot adja, új regisztrációnál hamisat. |
| `is_trial()` | Igaz, ha a szinten van ingyenes próba, és a felhasználó jogosult rá. |
| `add_discount( $kod, $ismetlodo )` | Kedvezményt ad a regisztrációhoz. A második paraméter dönti el, hogy a jövőbeli fizetésekre is vonatkozik-e, vagy csak az elsőre. |
| `get_discounts()` | Az alkalmazott kedvezménykódok tömbje, vagy hamis. |
| `add_fee( $osszeg, $leiras, $ismetlodo, $aranyos )` | Díjat ad a regisztrációhoz. |
| `get_fees()` | Az alkalmazott díjak tömbje, vagy hamis. |
| `get_total_fees( $osszeg, $csak_ismetlodo )` | Az alkalmazott díjak összege. |
| `get_signup_fees()` | A beiratkozási díjak összege, az időarányos jóváírások és ismétlődő díjak nélkül. |
| `get_proration_credits()` | A regisztrációra beszámított időarányos jóváírások összege. |
| `get_total_discounts( $osszeg, $csak_ismetlodo )` | A kedvezmények összege. |
| `get_total( $kedvezmeny, $dij )` | A kezdő végösszeg, a paraméterek szerint kedvezménnyel és díjjal vagy nélkülük. |
| `get_recurring_total( $kedvezmeny, $dij )` | Az ismétlődő végösszeg, ugyanígy. |

Az `add_fee()` paraméterei: az összeg, a leírás (például „Beiratkozási díj”), hogy ismétlődő-e a díj, és hogy időarányos jóváírás-e.

```php
$registration = rcp_get_registration();
$registration->add_fee( 50, __( 'Extra beiratkozási díj', 'rcp' ) );
```
