Configuring Your SelfServ SCO

In 
JSM

Welcome to customization heaven.


Your default configuration module, found under JSM | SelfCheckout V3 -> SystemConfig, is structured as follows:

--[[ 
	           _______ __  ___
	          / / ___//  |/  /
	     __  / /\__ \/ /|_/ / 
	    / /_/ /___/ / /  / /  
	    \____//____/_/  /_/
 	      Self Checkout v3
 	      © Whitehill Group
 	      
System Wide Configuration

Configure lane specific settings within each terminal.
Configure accounts in the "Accounts" script.

]]--
local Settings = { 
	-----------------------------------------------------------------
	["UITheme"] = "Default", 
	["CustomThemeLogo"] = nil,
	-----------------------------------------------------------------
	["Currency"] = "£",
	["JSMATMLocation"] = workspace["JSM | ATM V3"],
	["ContactlessLimit"] = 100,
	["InsertCardProximityPrompt"] = false, 
	["PromptForBags"] = true,
	["CarrierBagCharge"] = 0.05,
	-----------------------------------------------------------------
	["OperatorID"] = {
		["Enabled"] = false,
		["ShowPlayerWhenLoggedIn"] = true,
	},
	-----------------------------------------------------------------
	["Maintenance"] = { -- 
		["MaintenanceHatch-Users"] = { 
			112672616, -- Example (AlexG_1337)
			199830788, -- Example (Coco_Beagle)
			9109291923, -- Example (roaxcean)
		},
		["MaintenanceHatch-Groups"] = {
			["5150453"] = {255, 254, 253}, -- Example (Whitehill)
		},
		["DisableMaintenanceHatchWhitelist"] = false,
	},
	-----------------------------------------------------------------
	["ReceiptCustomisation"] = {
		["Enabled"] = true,
		["Heading"] = "JSM Self Checkout",
		["Subheading"] = "Customer Receipt",
		["Footer"] = "Thank you for shopping with us!",
		["PaperConsumption"] = 100,
	},
	-----------------------------------------------------------------
	["AutomaticIntegrations"] = {
		["Whitehill_RankCache"] = nil,
		["Applegate_VoCoVo"] = false,
		["Kybo_Walvo"] = true,
		
		["AllowPayWithPhoneAPI"] = false,
	},
	-----------------------------------------------------------------
	["InGameStaff"] = {
		["Enabled"] = false,
		["StaffUsers"] = { 
			112672616, -- Example (AlexG_1337)
			199830788, -- Example (Coco_Beagle)
			9109291923, -- Example (roaxcean)
		},
		["StaffGroups"] = { 
			["5150453"] = {255, 254, 253}, -- Example (Whitehill)
		},
		["StaffThreshold"] = 3,
	},
	-----------------------------------------------------------------
	["TransactionCompletion"] = {
		["DisableEAS"] = true,
		["AdditionalRemoval"] = { 
			"RandomEventTest",
		},
	},
	-----------------------------------------------------------------
	["MiscUISettings"] = {
		["StartCardOnlyMessage"] = "<b>Card Only</b>  No Coins/Notes Accepted",
		["StartCashOnlyMessage"] = "<b>Cash Only</b>  No Debit/Credit Cards Accepted",
		["StartNormMessage"] = "<b>Card</b> and <b>Cash</b> Payments Accepted",
		["TakeItemsMessage"] = "Please take your items",
		["RememberMessage"] = "Don't forget your receipt",
		["RememberMessageCash"] = "Don't forget your change & receipt",
		["FinishMessage"] = "Thanks for using this JSM Self Checkout",
		["PayButtonTotal"] = false,
		["DefaultUIAnimations"] = true,
	},
	-----------------------------------------------------------------
	["RemoteAttendantSettings"] = {
		-- Not Functional
	},
	-----------------------------------------------------------------
	["Scan&ShopSettings"] = {
		["TerminalSettings"] = {
			["IdleMessage"] = "Welcome to JSM Scan & Shop.",
			["WelcomeMessage"] = "Welcome to JSM Scan & Shop.",
			["AutoRelease"] = true,
			["ReleaseTimeout"] = 10,
			["LowHandsetWarning"] = 5,
			["ShowBoot"] = false, 
		},
		["HandsetSettings"] = {
			["WelcomeScreen"] = true,
			["ShowCurrency"] = true, 
			["ItemLimit"] = 200,
			["FinishMessage"] = "Thanks for using JSM Scan & Shop.", 
		},
		["CheckoutSettings"] = {
			["BarcodeType"] = 2,
		},
		["AutoReturn"] = true, 		
		["AllowExternal"] = false,
	},
	-----------------------------------------------------------------
	["HotkeySettings"] = {
		-- Not Functional
	},
	-----------------------------------------------------------------
}
return Settings

General Settings

UITheme

UI Preset to load. Set to Default for JSM v3 UI, any other value will load UI from JSM | UI Template if found in ServerStorage.


Example:

["UITheme"] = "SomeCustomUI"

If set to nil, loads default ui associated with theme, either JSM or the theme creator, or loads the image id provided.


Example:

["CustomThemeLogo"] = "123456789"

Currency

The specified character will be used as a prefix to all monetary values wherever a price is indicated.


Example:

["Currency"] = "€"

JSMATMLocation

Where the JSM ATM v3 Folder is located. Set to nil if not using.


Example:

["JSMATMLocation"] = workspace["JSM | ATM V3"]

ContactlessLimit

Contactless payment upper limit. Transactions worth more than the set value won't be able to be paid via contactless.


Example:

["ContactlessLimit"] = 250

InsertCardProximityPrompt

Whether to insert a Proximity Prompt into the card reader instead of a Click Detector.


Example:

["InsertCardProximityPrompt"] = true

PromptForBags

Whether to prompt for shopping bags before going to the payment screen.


Example:

["PromptForBags"] = true

CarrierBagCharge

Price per one shopping bag. (If enabled.)


Example:

["CarrierBagCharge"] = 0.01

OperatorID

Enabled

Whether pins should be enabled.


Example:

["Enabled"] = false

ShowPlayerWhenLoggedIn

Whether to show the player name instead of account name. If logged in with operator barcode player will be shown instead of account name, in all other situations account name is shown.


Example:

["ShowPlayerWhenLoggedIn"] = true

Example Section:

["OperatorID"] = {
	["Enabled"] = false,
	["ShowPlayerWhenLoggedIn"] = true,
}

Maintenance

MaintenanceHatch-Users

A table of Roblox User IDs that are whitelisted to open the Maintenance Hatch.


Example:

["MaintenanceHatch-Users"] = { 
	112672616, -- Example (AlexG_1337)
	199830788, -- Example (Coco_Beagle)
	9109291923, -- Example (roaxcean)
}

MaintenanceHatch-Groups

A dictionary of Roblox Community IDs holding Rank IDs that are whitelisted to open the Maintenance Hatch.


Example:

["MaintenanceHatch-Groups"] = {
	["5150453"] = {255, 254, 253}, -- Example (Whitehill)
}

DisableMaintenanceHatchWhitelist

Whether to disable the Maintenance Hatch whitelist.


Example:

["DisableMaintenanceHatchWhitelist"] = false

Example Section:

["Maintenance"] = {
	["MaintenanceHatch-Users"] = { 
		112672616, -- Example (AlexG_1337)
		199830788, -- Example (Coco_Beagle)
		9109291923, -- Example (roaxcean)
	},
	["MaintenanceHatch-Groups"] = {
		["5150453"] = {255, 254, 253}, -- Example (Whitehill)
	},
	["DisableMaintenanceHatchWhitelist"] = false,
}

ReceiptCustomisation

Enabled

Whether to enable receipt printing or not.


Example:

["Enabled"] = true

Heading

Top text on the receipt.


Example:

["Heading"] = "JSM Self Checkout"

Subheading

Subtitle below the heading text.


Example:

["Subheading"] = "Customer Receipt"

The bottom-most text.


Example:

["Footer"] = "Thank you for shopping with us!"

PaperConsumption

Consumption of printer paper.

  • 0 - No consumption.
  • >0 - How many receipts per roll.

Example:

["PaperConsumption"] = 100

Example Section:

["ReceiptCustomisation"] = {
	["Enabled"] = true,
	["Heading"] = "JSM Self Checkout",
    ["Subheading"] = "Customer Receipt",
	["Footer"] = "Thank you for shopping with us!",
	["PaperConsumption"] = 100,
}

AutomaticIntegrations

Whitehill_RankCache

Location of the Whitehill RankCache library (if installed), set to nil if not being used.


Example:

["Whitehill_RankCache"] = nil

Applegate_VoCoVo

Whether using the Applegate VoCoVo for Self Checkout notifications.


Example:

["Applegate_VoCoVo"] = false

Kybo_Walvo

Whether using the Kybo Walvo for Self Checkout notifications.


Example:

["Kybo_Walvo"] = true

AllowPayWithPhoneAPI

Integration with external payment devices.


Example:

["AllowPayWithPhoneAPI"] = false

Example Section:

["AutomaticIntegrations"] = {
	["Whitehill_RankCache"] = nil,
	["Applegate_VoCoVo"] = false,
	["Kybo_Walvo"] = true,
	
	["AllowPayWithPhoneAPI"] = false,
}

InGameStaff

Enabled

Whether the in-game staff availability system is active.


Example:

["Enabled"] = false

StaffUsers

A table of Roblox User IDs considered as staff for intervention handling.


Example:

["StaffUsers"] = {
	112672616, -- Example (AlexG_1337)
	199830788, -- Example (Coco_Beagle)
	9109291923, -- Example (roaxcean)
}

StaffGroups

A dictionary mapping group IDs to one or more staff ranks.


Example:

["StaffGroups"] = {
    ["5150453"] = {255, 254, 253}, -- Example (Whitehill)
}

StaffThreshold

Minimum number of staff members required in-game to support intervention workflows.


Example:

["StaffThreshold"] = 3

Example Section:

["InGameStaff"] = {
	["Enabled"] = false,
	["StaffUsers"] = { 
		112672616, -- Example (AlexG_1337)
		199830788, -- Example (Coco_Beagle)
		9109291923, -- Example (roaxcean)
	},
	["StaffGroups"] = { 
    	["5150453"] = {255, 254, 253}, -- Example (Whitehill)
	},
	["StaffThreshold"] = 3,
}

TransactionCompletion

DisableEAS

Determines whether EAS tags should be automatically deactivated on tools when a transaction is completed.


Example:

["DisableEAS"] = true

AdditionalRemoval

A list of instance names to remove from the tool's Handle upon transaction finalization.


Example:

["AdditionalRemoval"] = {
    "RandomEventTest",
}

Example Section:

["TransactionCompletion"] = {
	["DisableEAS"] = true,
	["AdditionalRemoval"] = {
		"RandomEventTest",
	},
}

MiscUISettings

StartCardOnlyMessage

Displayed on the welcome screen when the lane is configured for card-only transactions.


StartCashOnlyMessage

Displayed when the lane only accepts cash.


StartNormMessage

Displayed in standard operation (cash + card).


TakeItemsMessage

Message shown on the final screen reminding customers to take their items.


RememberMessage

Reminder to take receipts in card-only and mixed-payment modes.


RememberMessageCash

Reminder to take both change and receipt when cash was used.


FinishMessage

Finish message displayed when the transaction completes.


PayButtonTotal

If true, the Pay button shows the total transaction price. If false, it displays "Finish & Pay".


DefaultUIAnimations

When enabled, some parts of the UI will be animated.

Example Section:

["MiscUISettings"] = {
	["StartCardOnlyMessage"] = "<b>Card Only</b>  No Coins/Notes Accepted",
	["StartCashOnlyMessage"] = "<b>Cash Only</b>  No Debit/Credit Cards Accepted",
	["StartNormMessage"] = "<b>Card</b> and <b>Cash</b> Payments Accepted",
	["TakeItemsMessage"] = "Please take your items",
	["RememberMessage"] = "Don't forget your receipt",
	["RememberMessageCash"] = "Don't forget your change & receipt",
	["FinishMessage"] = "Thanks for using this JSM Self Checkout",
	["PayButtonTotal"] = false,
	["DefaultUIAnimations"] = true,
}

RemoteAttendantSettings


Scan&ShopSettings

IdleMessage

Shown when the terminal is idle.


WelcomeMessage

Displayed when a customer begins a Scan & Shop session.


AutoRelease

If true, handsets are dispensed automatically. If false, the customer must manually remove one.


ReleaseTimeout

Time (seconds) the system waits before retracting the handset if not taken.


LowHandsetWarning

Threshold of remaining handsets before a low-inventory warning is triggered.


ShowBoot

If true, the terminal displays a boot animation on startup.


WelcomeScreen

Determines whether a welcome screen appears when the handset initializes.


ShowCurrency

Shows or hides the currency symbol on handset UI.


ItemLimit

Maximum number of scannable items before the handset automatically clears excess entries.


FinishMessage

Displayed when the handset transfers the transaction to the checkout.


BarcodeType

Controls how barcodes are handled at checkout:

  • 0 — No barcode; S&S disabled
  • 1 — Physical barcode
  • 2 — Physical barcode + UI message
  • 3 — Physical barcode + UI message (S&S only)
  • 4 — Digital barcode
  • 5 — Digital barcode (S&S only)

AutoReturn

If enabled, handsets automatically return to the terminal after transfer.

AllowExternal

Whether third-party handsets may connect. Disabled by default for security.


Example Section:

["Scan&ShopSettings"] = {
	["TerminalSettings"] = {
		["IdleMessage"] = "Welcome to JSM Scan & Shop.",
		["WelcomeMessage"] = "Welcome to JSM Scan & Shop.",
		["AutoRelease"] = true,
		["ReleaseTimeout"] = 10,
		["LowHandsetWarning"] = 5,
		["ShowBoot"] = false, 
	},
	["HandsetSettings"] = {
		["WelcomeScreen"] = true,
		["ShowCurrency"] = true, 
		["ItemLimit"] = 200,
		["FinishMessage"] = "Thanks for using JSM Scan & Shop.", 
	},
	["CheckoutSettings"] = {
		["BarcodeType"] = 2,
	},
	["AutoReturn"] = true, 		
	["AllowExternal"] = false,
}

HotkeySettings