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 -->