# Installation

## 1. Download Resource

Download the purchased resource from [**CFX Portal**](https://portal.cfx.re/assets/granted-assets) - the official site of FiveM with purchased resources.

***

## 2. Import Database Tables

This is a very important step - without it, the script will not work properly.\
**Paste the SQL code into your database**.

{% hint style="warning" %}

## Not sure how to do it?

No worries - we've prepared a short guide that shows you step by step how to import an SQL file into your database:\
👉 [**Click here to view the tutorial.**](https://docs.vames-store.com/helpful/basic-server-knowledge/how-to-import-sql-to-database)
{% endhint %}

<details>

<summary>Database</summary>

```sql
CREATE TABLE IF NOT EXISTS `vms_business` (
  `id` varchar(50) NOT NULL DEFAULT '',
  `type` varchar(50) NOT NULL DEFAULT '',
  `owner` mediumtext DEFAULT NULL,
  `employees` longtext DEFAULT '{}',
  `stock` longtext DEFAULT '{}',
  `data` longtext DEFAULT '{}',
  `announcements` longtext DEFAULT '{}',
  `orders` longtext DEFAULT '{}',
  `history` longtext DEFAULT '{}'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
```

</details>

***

## 3. Add Required Items

The script uses its own items.\
Depending on what inventory you are using, select the appropriate section and add these items to either your item file or database.

<details>

<summary>Items for esx inventory</summary>

```sql
INSERT INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES
    ("hair_clipper", "Hair Clipper", 10, 0, 1);
```

</details>

<details>

<summary>Items for ox_inventory</summary>

```lua
['hair_clipper'] = {
    label = 'Hair Clipper',
    weight = 1,
    stack = true
},
```

</details>

<details>

<summary>Items for qb-inventory / qs-inventory / origen_inventory</summary>

```lua
['hair_clipper'] = {
    ["name"] = 'hair_clipper',
    ["label"] = "Hair Clipper",
    ["weight"] = 10,
    ["type"] = "item",
    ["image"] = "hair_clipper.png",
    ["unique"] = false,
    ["useable"] = true,
    ["shouldClose"] = false,
    ["combinable"] = nil,
    ["description"] = ""
},
```

</details>

***

## 4. Register Jobs

Some functions work only if the player has a proper job.\
In this section, you will find ready-made job that you need to add in your framework (ESX/QB).

<details>

<summary>Jobs for ESX</summary>

```sql
INSERT INTO `jobs` (name, label) VALUES
    ('barber1', 'Barber (1)'),
    ('barber2', 'Barber (2)'),
    ('barber3', 'Barber (3)'),
    ('barber4', 'Barber (4)'),
    ('barber5', 'Barber (5)'),
    ('barber6', 'Barber (6)'),
    ('barber7', 'Barber (7)');

INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
    ('barber1', 0, 'trainee', 'Trainee', 150, '{}', '{}'),
    ('barber1', 1, 'employee', 'Employee', 200, '{}', '{}'),
    ('barber1', 2, 'manager', 'Manager', 300, '{}', '{}'),
    ('barber1', 3, 'boss', 'Boss', 350, '{}', '{}'),
    ('barber2', 0, 'trainee', 'Trainee', 150, '{}', '{}'),
    ('barber2', 1, 'employee', 'Employee', 200, '{}', '{}'),
    ('barber2', 2, 'manager', 'Manager', 300, '{}', '{}'),
    ('barber2', 3, 'boss', 'Boss', 350, '{}', '{}'),
    ('barber3', 0, 'trainee', 'Trainee', 150, '{}', '{}'),
    ('barber3', 1, 'employee', 'Employee', 200, '{}', '{}'),
    ('barber3', 2, 'manager', 'Manager', 300, '{}', '{}'),
    ('barber3', 3, 'boss', 'Boss', 350, '{}', '{}'),
    ('barber4', 0, 'trainee', 'Trainee', 150, '{}', '{}'),
    ('barber4', 1, 'employee', 'Employee', 200, '{}', '{}'),
    ('barber4', 2, 'manager', 'Manager', 300, '{}', '{}'),
    ('barber4', 3, 'boss', 'Boss', 350, '{}', '{}'),
    ('barber5', 0, 'trainee', 'Trainee', 150, '{}', '{}'),
    ('barber5', 1, 'employee', 'Employee', 200, '{}', '{}'),
    ('barber5', 2, 'manager', 'Manager', 300, '{}', '{}'),
    ('barber5', 3, 'boss', 'Boss', 350, '{}', '{}'),
    ('barber6', 0, 'trainee', 'Trainee', 150, '{}', '{}'),
    ('barber6', 1, 'employee', 'Employee', 200, '{}', '{}'),
    ('barber6', 2, 'manager', 'Manager', 300, '{}', '{}'),
    ('barber6', 3, 'boss', 'Boss', 350, '{}', '{}'),
    ('barber7', 0, 'trainee', 'Trainee', 150, '{}', '{}'),
    ('barber7', 1, 'employee', 'Employee', 200, '{}', '{}'),
    ('barber7', 2, 'manager', 'Manager', 300, '{}', '{}'),
    ('barber7', 3, 'boss', 'Boss', 350, '{}', '{}');
```

</details>

<details>

<summary>Jobs for QB-Core</summary>

```lua
['barber1'] = {
    label = 'Barber (1)',
    defaultDuty = true,
    offDutyPay = false,
    grades = {
        ['0'] = {name = 'recruit', payment = 50},
        ['1'] = {name = 'employee', payment = 250},
        ['2'] = {name = 'manager', payment = 250},
        ['3'] = {name = 'boss', payment = 250},
    },
},
['barber2'] = {
    label = 'Barber (2)',
    defaultDuty = true,
    offDutyPay = false,
    grades = {
        ['0'] = {name = 'recruit', payment = 50},
        ['1'] = {name = 'employee', payment = 250},
        ['2'] = {name = 'manager', payment = 250},
        ['3'] = {name = 'boss', payment = 250},
    },
},
['barber3'] = {
    label = 'Barber (3)',
    defaultDuty = true,
    offDutyPay = false,
    grades = {
        ['0'] = {name = 'recruit', payment = 50},
        ['1'] = {name = 'employee', payment = 250},
        ['2'] = {name = 'manager', payment = 250},
        ['3'] = {name = 'boss', payment = 250},
    },
},
['barber4'] = {
    label = 'Barber (4)',
    defaultDuty = true,
    offDutyPay = false,
    grades = {
        ['0'] = {name = 'recruit', payment = 50},
        ['1'] = {name = 'employee', payment = 250},
        ['2'] = {name = 'manager', payment = 250},
        ['3'] = {name = 'boss', payment = 250},
    },
},
['barber5'] = {
    label = 'Barber (5)',
    defaultDuty = true,
    offDutyPay = false,
    grades = {
        ['0'] = {name = 'recruit', payment = 50},
        ['1'] = {name = 'employee', payment = 250},
        ['2'] = {name = 'manager', payment = 250},
        ['3'] = {name = 'boss', payment = 250},
    },
},
['barber6'] = {
    label = 'Barber (6)',
    defaultDuty = true,
    offDutyPay = false,
    grades = {
        ['0'] = {name = 'recruit', payment = 50},
        ['1'] = {name = 'employee', payment = 250},
        ['2'] = {name = 'manager', payment = 250},
        ['3'] = {name = 'boss', payment = 250},
    },
},
['barber7'] = {
    label = 'Barber (7)',
    defaultDuty = true,
    offDutyPay = false,
    grades = {
        ['0'] = {name = 'recruit', payment = 50},
        ['1'] = {name = 'employee', payment = 250},
        ['2'] = {name = 'manager', payment = 250},
        ['3'] = {name = 'boss', payment = 250},
    },
},
```

</details>

***

## 5. Start Resource

To start a resource in your `server.cfg`, ensure that it begins after your framework has been initiated. For instance, if you are using a framework like `es_extended`, you should start resource after it, like so:

```python
start [core] # For example, here is your framework (esx/qb-core)

# Here you run your other resources like esx_policejob etc.

# VMS Resources
start vms_barber
```

Ensure there are no syntax errors or incorrect paths in your `server.cfg`.
