From the reference libraryRedM

Pricing <BadgeShared/>

jo_libs/modules/pricing/shared.md

Pricing <BadgeShared/>

Pricing is a shared module to normalize and manipulate prices in your scripts.

:::tip You can use the Price Generator to build price tables and paste the generated Lua code into your config files. :::

Quick usage

-- Create a price with $5 and 1 acid item.
local price = jo.pricing.new({
  money = 5,
  item = "acid"
})

-- Add 1 gold to the existing price.
price:add({ gold = 1 })

-- Create a group where the player can pay either $10 or 1 gold.
local group = jo.pricing.newGroup({
  { money = 10 },
  { gold = 1 }
})

Prices are normalized into canonical cost tables:

log(price:getCosts())
-- Expected output:
-- {
--   { money = 5 },
--   { gold = 1 },
--   { item = "acid", quantity = 1, keep = false }
-- }

print(group.operator)
-- Expected output: "or"

Mathematical Operations > Addition

Use the + operator to combine two prices into a new PriceClass.

local priceA = jo.pricing.new({ money = 10 })
local priceB = jo.pricing.new({ money = 5, item = "water" })

local total = priceA + priceB

log(total:getCosts())
-- Expected output:
-- {
--   { money = 15 },
--   { item = "water", quantity = 1, keep = false }
-- }

log(priceA:getCosts())
-- Expected output: { { money = 10 } }

Mathematical Operations > Multiplication

Use the * operator to multiply a price into a new PriceClass. Currencies keep their multiplied value, while item quantities are rounded to the nearest integer.

local price = jo.pricing.new({
  money = 10,
  item = "water",
  quantity = 3
})

local multiplied = price * 1.5

log(multiplied:getCosts())
-- Expected output:
-- {
--   { money = 15 },
--   { item = "water", quantity = 5, keep = false }
-- }

log(price:getCosts())
-- Expected output:
-- {
--   { money = 10 },
--   { item = "water", quantity = 3, keep = false }
-- }

The reversed order also works:

local multiplied = 2 * jo.pricing.new({ money = 5 })

log(multiplied:getCosts())
-- Expected output: { { money = 10 } }

Mathematical Operations > Multiplication > PriceGroupClass

The * operator can also multiply every price in a PriceGroupClass. It returns a new group, preserves the original operator and does not modify the source group.

local group = jo.pricing.newGroup({
  { money = 10 },
  { gold = 2 }
})

local multipliedGroup = group * 3

print(multipliedGroup.operator)
-- Expected output: "or"

log(multipliedGroup:get(1):getCosts())
-- Expected output: { { money = 30 } }

log(multipliedGroup:get(2):getCosts())
-- Expected output: { { gold = 6 } }

log(group:get(1):getCosts())
-- Expected output: { { money = 10 } }

The reversed order is supported too:

local multipliedGroup = 3 * group

Mathematical Operations > Division

Use the / operator to divide a price by a number into a new PriceClass. It reuses the multiplication behavior internally, so currencies keep their divided value and item quantities are rounded to the nearest integer.

local price = jo.pricing.new({
  money = 15,
  item = "water",
  quantity = 5
})

local divided = price / 2

log(divided:getCosts())
-- Expected output:
-- {
--   { money = 7.5 },
--   { item = "water", quantity = 3, keep = false }
-- }

log(price:getCosts())
-- Expected output:
-- {
--   { money = 15 },
--   { item = "water", quantity = 5, keep = false }
-- }

Only price / number is supported. Division by zero raises an error.

Mathematical Operations > Length

Use the # operator to count canonical entries. For a PriceClass, it returns the number of costs. For a PriceGroupClass, it returns the number of prices in the group.

local price = jo.pricing.new({ money = 10, item = "water" })
local group = jo.pricing.newGroup({
  { money = 10 },
  { gold = 2 }
})

print(#price)
-- Expected output: 2

print(#group)
-- Expected output: 2

Mathematical Operations > Equality

Use the == operator to compare two prices by value. Cost order does not matter.

local priceA = jo.pricing.new({ money = 10, item = "water" })
local priceB = jo.pricing.new({
  { item = "water", quantity = 1, keep = false },
  { money = 10 }
})

print(priceA == priceB)
-- Expected output: true

Constructor > jo.pricing.new()

<!-- @include: ./slots/headers.md#shared|jo.pricing.new -->

Creates a canonical PriceClass. <br>

<!-- @include: ./slots/descriptions.md#shared|jo.pricing.new -->

Constructor > jo.pricing.new() > Syntax

jo.pricing.new(data, reuseExisting)

Constructor > jo.pricing.new() > Parameters

data : PriceInput|PriceClass <BadgeOptional />

Price input to normalize <br> default:nil

reuseExisting : boolean <BadgeOptional />

Reuse existing PriceClass if already created <br> default:false

Constructor > jo.pricing.new() > Return Value

Type : PriceClass

<!-- @include: ./slots/examples.md#shared|jo.pricing.new -->

<!-- @include: ./slots/footers.md#shared|jo.pricing.new -->


Constructor > jo.pricing.newGroup()

<!-- @include: ./slots/headers.md#shared|jo.pricing.newGroup -->

Creates a canonical PriceGroupClass. <br>

<!-- @include: ./slots/descriptions.md#shared|jo.pricing.newGroup -->

Constructor > jo.pricing.newGroup() > Syntax

jo.pricing.newGroup(data, reuseExisting)

Constructor > jo.pricing.newGroup() > Parameters

data : PriceGroupInput <BadgeOptional />

Price group input to normalize <br> default:nil

reuseExisting : boolean <BadgeOptional />

Reuse existing PriceGroupClass if already created <br> default:false

Constructor > jo.pricing.newGroup() > Return Value

Type : PriceGroupClass

<!-- @include: ./slots/examples.md#shared|jo.pricing.newGroup -->

<!-- @include: ./slots/footers.md#shared|jo.pricing.newGroup -->

JO Functions > jo.pricing.getCosts()

<!-- @include: ./slots/headers.md#shared|jo.pricing.getCosts -->

Returns the canonical costs list for a price input. <br>

<!-- @include: ./slots/descriptions.md#shared|jo.pricing.getCosts -->

JO Functions > jo.pricing.getCosts() > Syntax

jo.pricing.getCosts(price)

JO Functions > jo.pricing.getCosts() > Parameters

price : PriceInput

Price input

JO Functions > jo.pricing.getCosts() > Return Value

Type : Cost[]

<!-- @include: ./slots/examples.md#shared|jo.pricing.getCosts -->

<!-- @include: ./slots/footers.md#shared|jo.pricing.getCosts -->


JO Functions > jo.pricing.isPrice()

<!-- @include: ./slots/headers.md#shared|jo.pricing.isPrice -->

Returns true when a value is a PriceClass instance. <br>

<!-- @include: ./slots/descriptions.md#shared|jo.pricing.isPrice -->

JO Functions > jo.pricing.isPrice() > Syntax

jo.pricing.isPrice(value)

JO Functions > jo.pricing.isPrice() > Parameters

value : any

Value to test

JO Functions > jo.pricing.isPrice() > Return Value

Type : boolean

<!-- @include: ./slots/examples.md#shared|jo.pricing.isPrice -->

<!-- @include: ./slots/footers.md#shared|jo.pricing.isPrice -->


JO Functions > jo.pricing.isPriceGroup()

<!-- @include: ./slots/headers.md#shared|jo.pricing.isPriceGroup -->

Returns true when a value is a PriceGroupClass instance. <br>

<!-- @include: ./slots/descriptions.md#shared|jo.pricing.isPriceGroup -->

JO Functions > jo.pricing.isPriceGroup() > Syntax

jo.pricing.isPriceGroup(value)

JO Functions > jo.pricing.isPriceGroup() > Parameters

value : any

Value to test

JO Functions > jo.pricing.isPriceGroup() > Return Value

Type : boolean

<!-- @include: ./slots/examples.md#shared|jo.pricing.isPriceGroup -->

<!-- @include: ./slots/footers.md#shared|jo.pricing.isPriceGroup -->


JO Functions > jo.pricing.tax()

<!-- @include: ./slots/headers.md#shared|jo.pricing.tax -->

Returns the canonical costs list for a price input. <br> Splits a price into tax and remaining prices. <br>

<!-- @include: ./slots/descriptions.md#shared|jo.pricing.tax -->

JO Functions > jo.pricing.tax() > Syntax

jo.pricing.tax(price, percentage, roundUpItems)

JO Functions > jo.pricing.tax() > Parameters

price : PriceInput

Price input to split

percentage : number <BadgeOptional />

Tax multiplier applied to the input price <br> default:0

roundUpItems : boolean <BadgeOptional />

Round item quantities up instead of down <br> default:false

JO Functions > jo.pricing.tax() > Return Value

Type : PriceClass,PriceClass

<!-- @include: ./slots/examples.md#shared|jo.pricing.tax -->

<!-- @include: ./slots/footers.md#shared|jo.pricing.tax -->

PriceClass Methods > PriceClass:add()

<!-- @include: ./slots/headers.md#shared|PriceClass:add -->

Adds a price to the current PriceClass. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceClass:add -->

PriceClass Methods > PriceClass:add() > Syntax

PriceClass:add(price)

PriceClass Methods > PriceClass:add() > Parameters

price : PriceInput

Price input to add to the current price

PriceClass Methods > PriceClass:add() > Return Value

Type : PriceClass

<!-- @include: ./slots/examples.md#shared|PriceClass:add -->

<!-- @include: ./slots/footers.md#shared|PriceClass:add -->


PriceClass Methods > PriceClass:clear()

<!-- @include: ./slots/headers.md#shared|PriceClass:clear -->

Removes every cost from the current PriceClass. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceClass:clear -->

PriceClass Methods > PriceClass:clear() > Syntax

PriceClass:clear()

PriceClass Methods > PriceClass:clear() > Return Value

Type : PriceClass

<!-- @include: ./slots/examples.md#shared|PriceClass:clear -->

<!-- @include: ./slots/footers.md#shared|PriceClass:clear -->


PriceClass Methods > PriceClass:copy()

<!-- @include: ./slots/headers.md#shared|PriceClass:copy -->

Creates a new independent copy of the current PriceClass. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceClass:copy -->

PriceClass Methods > PriceClass:copy() > Syntax

PriceClass:copy()

PriceClass Methods > PriceClass:copy() > Return Value

Type : PriceClass

<!-- @include: ./slots/examples.md#shared|PriceClass:copy -->

<!-- @include: ./slots/footers.md#shared|PriceClass:copy -->


PriceClass Methods > PriceClass:equals()

<!-- @include: ./slots/headers.md#shared|PriceClass:equals -->

Returns true when another price has the same costs. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceClass:equals -->

PriceClass Methods > PriceClass:equals() > Syntax

PriceClass:equals(other)

PriceClass Methods > PriceClass:equals() > Parameters

other : PriceInput

Price input to compare with the current price

PriceClass Methods > PriceClass:equals() > Return Value

Type : boolean

<!-- @include: ./slots/examples.md#shared|PriceClass:equals -->

<!-- @include: ./slots/footers.md#shared|PriceClass:equals -->


PriceClass Methods > PriceClass:getCosts()

<!-- @include: ./slots/headers.md#shared|PriceClass:getCosts -->

Returns the canonical costs list. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceClass:getCosts -->

PriceClass Methods > PriceClass:getCosts() > Syntax

PriceClass:getCosts()

PriceClass Methods > PriceClass:getCosts() > Return Value

Type : Cost[]

<!-- @include: ./slots/examples.md#shared|PriceClass:getCosts -->

<!-- @include: ./slots/footers.md#shared|PriceClass:getCosts -->


PriceClass Methods > PriceClass:getGold()

<!-- @include: ./slots/headers.md#shared|PriceClass:getGold -->

Returns the gold amount. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceClass:getGold -->

PriceClass Methods > PriceClass:getGold() > Syntax

PriceClass:getGold()

PriceClass Methods > PriceClass:getGold() > Return Value

Type : number|nil

<!-- @include: ./slots/examples.md#shared|PriceClass:getGold -->

<!-- @include: ./slots/footers.md#shared|PriceClass:getGold -->


PriceClass Methods > PriceClass:getItem()

<!-- @include: ./slots/headers.md#shared|PriceClass:getItem -->

Returns an ItemCost by item name and keep flag. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceClass:getItem -->

PriceClass Methods > PriceClass:getItem() > Syntax

PriceClass:getItem(item, keep)

PriceClass Methods > PriceClass:getItem() > Parameters

item : string

Item name

keep : boolean

Item keep flag - false: consumed cost, true: required but kept

PriceClass Methods > PriceClass:getItem() > Return Value

Type : ItemCost|nil

<!-- @include: ./slots/examples.md#shared|PriceClass:getItem -->

<!-- @include: ./slots/footers.md#shared|PriceClass:getItem -->


PriceClass Methods > PriceClass:getItems()

<!-- @include: ./slots/headers.md#shared|PriceClass:getItems -->

Returns all ItemCost entries. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceClass:getItems -->

PriceClass Methods > PriceClass:getItems() > Syntax

PriceClass:getItems()

PriceClass Methods > PriceClass:getItems() > Return Value

Type : ItemCost[]

<!-- @include: ./slots/examples.md#shared|PriceClass:getItems -->

<!-- @include: ./slots/footers.md#shared|PriceClass:getItems -->


PriceClass Methods > PriceClass:getMoney()

<!-- @include: ./slots/headers.md#shared|PriceClass:getMoney -->

Returns the money amount. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceClass:getMoney -->

PriceClass Methods > PriceClass:getMoney() > Syntax

PriceClass:getMoney()

PriceClass Methods > PriceClass:getMoney() > Return Value

Type : number|nil

<!-- @include: ./slots/examples.md#shared|PriceClass:getMoney -->

<!-- @include: ./slots/footers.md#shared|PriceClass:getMoney -->


PriceClass Methods > PriceClass:getRol()

<!-- @include: ./slots/headers.md#shared|PriceClass:getRol -->

Returns the rol amount. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceClass:getRol -->

PriceClass Methods > PriceClass:getRol() > Syntax

PriceClass:getRol()

PriceClass Methods > PriceClass:getRol() > Return Value

Type : number|nil

<!-- @include: ./slots/examples.md#shared|PriceClass:getRol -->

<!-- @include: ./slots/footers.md#shared|PriceClass:getRol -->


PriceClass Methods > PriceClass:hasCurrency()

<!-- @include: ./slots/headers.md#shared|PriceClass:hasCurrency -->

Returns true when a currency cost exists. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceClass:hasCurrency -->

PriceClass Methods > PriceClass:hasCurrency() > Syntax

PriceClass:hasCurrency(key)

PriceClass Methods > PriceClass:hasCurrency() > Parameters

key : "money"|"gold"|"rol"

Currency cost key

PriceClass Methods > PriceClass:hasCurrency() > Return Value

Type : boolean

<!-- @include: ./slots/examples.md#shared|PriceClass:hasCurrency -->

<!-- @include: ./slots/footers.md#shared|PriceClass:hasCurrency -->


PriceClass Methods > PriceClass:hasItem()

<!-- @include: ./slots/headers.md#shared|PriceClass:hasItem -->

Returns true when an ItemCost exists for an item name and keep flag. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceClass:hasItem -->

PriceClass Methods > PriceClass:hasItem() > Syntax

PriceClass:hasItem(item, keep)

PriceClass Methods > PriceClass:hasItem() > Parameters

item : string

Item name

keep : boolean

Item keep flag - false: consumed cost, true: required but kept

PriceClass Methods > PriceClass:hasItem() > Return Value

Type : boolean

<!-- @include: ./slots/examples.md#shared|PriceClass:hasItem -->

<!-- @include: ./slots/footers.md#shared|PriceClass:hasItem -->


PriceClass Methods > PriceClass:isCurrencyOnly()

<!-- @include: ./slots/headers.md#shared|PriceClass:isCurrencyOnly -->

Returns true when the PriceClass contains only currency costs. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceClass:isCurrencyOnly -->

PriceClass Methods > PriceClass:isCurrencyOnly() > Syntax

PriceClass:isCurrencyOnly()

PriceClass Methods > PriceClass:isCurrencyOnly() > Return Value

Type : boolean

<!-- @include: ./slots/examples.md#shared|PriceClass:isCurrencyOnly -->

<!-- @include: ./slots/footers.md#shared|PriceClass:isCurrencyOnly -->


PriceClass Methods > PriceClass:isFree()

<!-- @include: ./slots/headers.md#shared|PriceClass:isFree -->

Returns true when the PriceClass has no payable costs. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceClass:isFree -->

PriceClass Methods > PriceClass:isFree() > Syntax

PriceClass:isFree()

PriceClass Methods > PriceClass:isFree() > Return Value

Type : boolean

<!-- @include: ./slots/examples.md#shared|PriceClass:isFree -->

<!-- @include: ./slots/footers.md#shared|PriceClass:isFree -->


PriceClass Methods > PriceClass:isItemOnly()

<!-- @include: ./slots/headers.md#shared|PriceClass:isItemOnly -->

Returns true when the PriceClass contains only item costs. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceClass:isItemOnly -->

PriceClass Methods > PriceClass:isItemOnly() > Syntax

PriceClass:isItemOnly()

PriceClass Methods > PriceClass:isItemOnly() > Return Value

Type : boolean

<!-- @include: ./slots/examples.md#shared|PriceClass:isItemOnly -->

<!-- @include: ./slots/footers.md#shared|PriceClass:isItemOnly -->


PriceClass Methods > PriceClass:removeCurrency()

<!-- @include: ./slots/headers.md#shared|PriceClass:removeCurrency -->

Removes a currency cost from the current PriceClass. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceClass:removeCurrency -->

PriceClass Methods > PriceClass:removeCurrency() > Syntax

PriceClass:removeCurrency(key)

PriceClass Methods > PriceClass:removeCurrency() > Parameters

key : "money"|"gold"|"rol"

Currency cost key to remove

PriceClass Methods > PriceClass:removeCurrency() > Return Value

Type : PriceClass

<!-- @include: ./slots/examples.md#shared|PriceClass:removeCurrency -->

<!-- @include: ./slots/footers.md#shared|PriceClass:removeCurrency -->


PriceClass Methods > PriceClass:removeItem()

<!-- @include: ./slots/headers.md#shared|PriceClass:removeItem -->

Removes an ItemCost from the current PriceClass. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceClass:removeItem -->

PriceClass Methods > PriceClass:removeItem() > Syntax

PriceClass:removeItem(item, keep)

PriceClass Methods > PriceClass:removeItem() > Parameters

item : string

Item name

keep : boolean

Item keep flag - false: consumed cost, true: required but kept

PriceClass Methods > PriceClass:removeItem() > Return Value

Type : PriceClass

<!-- @include: ./slots/examples.md#shared|PriceClass:removeItem -->

<!-- @include: ./slots/footers.md#shared|PriceClass:removeItem -->

PriceGroupClass Methods > PriceGroupClass:clear()

<!-- @include: ./slots/headers.md#shared|PriceGroupClass:clear -->

Removes every price from the group. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceGroupClass:clear -->

PriceGroupClass Methods > PriceGroupClass:clear() > Syntax

PriceGroupClass:clear()

PriceGroupClass Methods > PriceGroupClass:clear() > Return Value

Type : PriceGroupClass

<!-- @include: ./slots/examples.md#shared|PriceGroupClass:clear -->

<!-- @include: ./slots/footers.md#shared|PriceGroupClass:clear -->


PriceGroupClass Methods > PriceGroupClass:compact()

<!-- @include: ./slots/headers.md#shared|PriceGroupClass:compact -->

Compacts an "and" PriceGroupClass into a new PriceClass. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceGroupClass:compact -->

PriceGroupClass Methods > PriceGroupClass:compact() > Syntax

PriceGroupClass:compact()

PriceGroupClass Methods > PriceGroupClass:compact() > Return Value

Type : PriceClass

<!-- @include: ./slots/examples.md#shared|PriceGroupClass:compact -->

<!-- @include: ./slots/footers.md#shared|PriceGroupClass:compact -->


PriceGroupClass Methods > PriceGroupClass:copy()

<!-- @include: ./slots/headers.md#shared|PriceGroupClass:copy -->

Creates a new independent copy of the current PriceGroupClass. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceGroupClass:copy -->

PriceGroupClass Methods > PriceGroupClass:copy() > Syntax

PriceGroupClass:copy()

PriceGroupClass Methods > PriceGroupClass:copy() > Return Value

Type : PriceGroupClass

<!-- @include: ./slots/examples.md#shared|PriceGroupClass:copy -->

<!-- @include: ./slots/footers.md#shared|PriceGroupClass:copy -->


PriceGroupClass Methods > PriceGroupClass:count()

<!-- @include: ./slots/headers.md#shared|PriceGroupClass:count -->

Returns the number of prices in the group. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceGroupClass:count -->

PriceGroupClass Methods > PriceGroupClass:count() > Syntax

PriceGroupClass:count()

PriceGroupClass Methods > PriceGroupClass:count() > Return Value

Type : number

<!-- @include: ./slots/examples.md#shared|PriceGroupClass:count -->

<!-- @include: ./slots/footers.md#shared|PriceGroupClass:count -->


PriceGroupClass Methods > PriceGroupClass:get()

<!-- @include: ./slots/headers.md#shared|PriceGroupClass:get -->

Returns a PriceClass by index. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceGroupClass:get -->

PriceGroupClass Methods > PriceGroupClass:get() > Syntax

PriceGroupClass:get(index)

PriceGroupClass Methods > PriceGroupClass:get() > Parameters

index : number

Price index

PriceGroupClass Methods > PriceGroupClass:get() > Return Value

Type : PriceClass|nil

<!-- @include: ./slots/examples.md#shared|PriceGroupClass:get -->

<!-- @include: ./slots/footers.md#shared|PriceGroupClass:get -->


PriceGroupClass Methods > PriceGroupClass:getCosts()

<!-- @include: ./slots/headers.md#shared|PriceGroupClass:getCosts -->

Returns the costs of a price by index. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceGroupClass:getCosts -->

PriceGroupClass Methods > PriceGroupClass:getCosts() > Syntax

PriceGroupClass:getCosts(index)

PriceGroupClass Methods > PriceGroupClass:getCosts() > Parameters

index : number

Price index

PriceGroupClass Methods > PriceGroupClass:getCosts() > Return Value

Type : Cost[]|nil

<!-- @include: ./slots/examples.md#shared|PriceGroupClass:getCosts -->

<!-- @include: ./slots/footers.md#shared|PriceGroupClass:getCosts -->


PriceGroupClass Methods > PriceGroupClass:insert()

<!-- @include: ./slots/headers.md#shared|PriceGroupClass:insert -->

Inserts a PriceClass into the group. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceGroupClass:insert -->

PriceGroupClass Methods > PriceGroupClass:insert() > Syntax

PriceGroupClass:insert(price, index)

PriceGroupClass Methods > PriceGroupClass:insert() > Parameters

price : PriceInput

Price input to insert

index : number <BadgeOptional />

Insertion index <br> default: append at the end

PriceGroupClass Methods > PriceGroupClass:insert() > Return Value

Type : PriceGroupClass

<!-- @include: ./slots/examples.md#shared|PriceGroupClass:insert -->

<!-- @include: ./slots/footers.md#shared|PriceGroupClass:insert -->


PriceGroupClass Methods > PriceGroupClass:isEmpty()

<!-- @include: ./slots/headers.md#shared|PriceGroupClass:isEmpty -->

Returns true when the group contains no prices. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceGroupClass:isEmpty -->

PriceGroupClass Methods > PriceGroupClass:isEmpty() > Syntax

PriceGroupClass:isEmpty()

PriceGroupClass Methods > PriceGroupClass:isEmpty() > Return Value

Type : boolean

<!-- @include: ./slots/examples.md#shared|PriceGroupClass:isEmpty -->

<!-- @include: ./slots/footers.md#shared|PriceGroupClass:isEmpty -->


PriceGroupClass Methods > PriceGroupClass:remove()

<!-- @include: ./slots/headers.md#shared|PriceGroupClass:remove -->

Removes a PriceClass from the group by index. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceGroupClass:remove -->

PriceGroupClass Methods > PriceGroupClass:remove() > Syntax

PriceGroupClass:remove(index)

PriceGroupClass Methods > PriceGroupClass:remove() > Parameters

index : number

Price index to remove

PriceGroupClass Methods > PriceGroupClass:remove() > Return Value

Type : PriceClass|nil

<!-- @include: ./slots/examples.md#shared|PriceGroupClass:remove -->

<!-- @include: ./slots/footers.md#shared|PriceGroupClass:remove -->


PriceGroupClass Methods > PriceGroupClass:set()

<!-- @include: ./slots/headers.md#shared|PriceGroupClass:set -->

Replaces an existing PriceClass by index. <br>

<!-- @include: ./slots/descriptions.md#shared|PriceGroupClass:set -->

PriceGroupClass Methods > PriceGroupClass:set() > Syntax

PriceGroupClass:set(index, price)

PriceGroupClass Methods > PriceGroupClass:set() > Parameters

index : number

Existing price index to replace

price : PriceInput

Replacement price input

PriceGroupClass Methods > PriceGroupClass:set() > Return Value

Type : PriceGroupClass

<!-- @include: ./slots/examples.md#shared|PriceGroupClass:set -->

<!-- @include: ./slots/footers.md#shared|PriceGroupClass:set -->

Back to documentation