15 Commits

Author SHA1 Message Date
jimathy
f9029f0951 Commission update 2022-04-11 18:59:47 +01:00
jimathy
65f51520fb Update Readme with new phone event and info 2022-04-11 18:58:55 +01:00
jimathy
7e92b852cf fix bank popups and popup job tickets 2022-04-06 22:30:26 +01:00
jimathy
a63b40c11f fix pay popups for shops with no logo 2022-04-06 22:18:38 +01:00
jimathy
644294546e qb-management export update 2022-04-03 20:52:10 +01:00
jimathy
4dbe600680 qb-management export update 2022-04-03 20:51:34 +01:00
jimathy
9d5086e5d5 qb-management export update 2022-04-03 20:41:07 +01:00
jimathy
b06cb05266 Merge pull request #3 from stacheboi/main
Fix for Player Receiving Cash From Self
2022-03-26 17:50:06 +00:00
jimathy
f16a0b0d1f Removed loops, it was being too strict 2022-03-17 10:57:14 +00:00
jimathy
48003e09a6 Fix for everyone being able to access boss account 2022-03-17 10:43:04 +00:00
stacheboi
95459f63a8 Fix for Player Receiving Cash From Self
When you give someone cash it shows they received money from themself. This show show the sending players name instead.
2022-03-16 21:17:10 -04:00
jimathy
0065af7c9d Notify on accepted payment 2022-03-15 21:32:49 +00:00
jimathy
74990226a9 fix for fix. I need a rest 2022-03-13 13:15:57 +00:00
jimathy
2e5bcc4d86 Fix for bank popup payments 2022-03-13 13:03:09 +00:00
jimathy
185c641f60 fix for tickets with new popup 2022-03-12 12:56:30 +00:00
7 changed files with 137 additions and 75 deletions

View File

@@ -46,12 +46,7 @@ Go to [qb] > qb-phone > client > main.lua
- Add this line:
```TriggerServerEvent('jim-payments:Tickets:Give', amount, society)```
--------------
NOTE: If you are converting from my older job scripts, I recommend removing the previous triggers from qb-phone
```TriggerServerEvent('jim-payments:Tickets:Give', data)```
--------------
@@ -61,3 +56,15 @@ simply look in the atms.lua and change the config options at the top
Choose wether to use atm's, choose wether to use banking locations
Choose wether to add bank blips (if you want to disable qb-banking)
Choose wether to add ATM blips (if you like $ signs)
--------------
New Commission system added
This brings more config options to find tune the script
Choose wether people get commission from every sale
Choose if EVERY worker gets Commission that is on duty
Choose if Commission is limited by MinAmountForTicket
Choose if the worker charging the customer gets double commission

View File

@@ -3,7 +3,6 @@ local QBCore = exports['qb-core']:GetCoreObject()
-- This script is a simple replacement for QB-Banking and QB-ATMs
-- It uses QB-Input and server callbacks to retreive info about accounts and cash
-- This requires QB-Target and has the location of every ATM, ATM prop and bank window
-- If Config.useATM = false, then none of this load
Config.ATMModels = {"prop_atm_01", "prop_atm_02", "prop_atm_03", "prop_fleeca_atm" }
@@ -88,7 +87,6 @@ Config.BankLocations = {
--vector3(252.41, 221.41, 106.29)
}
local function cv(amount)
local formatted = amount
while true do
@@ -136,20 +134,20 @@ AddEventHandler('onResourceStart', function(resource) if GetCurrentResourceName(
RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function() createBlips() end)
local bossroles = {}
local gangroles = {}
Citizen.CreateThread(function()
if Config.useATM or Config.useBanks then
local bossroles = {}
for k, v in pairs(QBCore.Shared.Jobs) do
for l, b in pairs(QBCore.Shared.Jobs[tostring(k)].grades) do
if QBCore.Shared.Jobs[tostring(k)].grades[l].isboss == true then
if bossroles[tostring(k)] ~= nil then
if bossroles[tostring(k)] > tonumber(l) then bossroles[tostring(k)] = tonumber(l) end
for k, v in pairs(QBCore.Shared.Jobs) do ---Grabs the list of jobs
for l, b in pairs(QBCore.Shared.Jobs[tostring(k)].grades) do -- Grabs the list of grades
if QBCore.Shared.Jobs[tostring(k)].grades[l].isboss == true then -- Checks the grade if is boss
if bossroles[tostring(k)] ~= nil then -- checks if the line exists
if bossroles[tostring(k)] > tonumber(l) then bossroles[tostring(k)] = tonumber(l) end -- the
else bossroles[tostring(k)] = tonumber(l)
end
end
end
end
local gangroles = {}
for k, v in pairs(QBCore.Shared.Gangs) do
for l, b in pairs(QBCore.Shared.Gangs[tostring(k)].grades) do
if tostring(k) ~= "none" then
@@ -159,17 +157,17 @@ Citizen.CreateThread(function()
else gangroles[tostring(k)] = tonumber(l)
end
end
end
end
end
end
end
if Config.useATM then
exports['qb-target']:AddTargetModel(Config.ATMModels, { options = { { event = "jim-payments:Client:ATM:use", icon = "fas fa-money-check-alt", label = "Use ATM", id = "atm" },}, distance = 1.5, })
for k,v in pairs(Config.ATMLocations) do
exports['qb-target']:AddCircleZone("jimatm"..k, vector3(tonumber(v.x), tonumber(v.y), tonumber(v.z)+0.2), 0.5, { name="jimatm"..k, debugPoly=false, useZ=true, },
{ options = { { event = "jim-payments:Client:ATM:use", icon = "fas fa-money-check-alt", label = "Use ATM", id = "atm" },
--[[{ event = "jim-payments:Client:ATM:use", icon = "fas fa-arrow-right-arrow-left", label = "Transfer Money", id = "transfer" },]] }, distance = 1.5 })
--[[{ event = "jim-payments:Client:ATM:use", icon = "fas fa-arrow-right-arrow-left", label = "Transfer Money", id = "transfer" },]]
}, distance = 1.5 })
end
end
if Config.useBanks then
@@ -199,26 +197,29 @@ local function PlayATMAnimation(animation)
end
end
local function GrabAccount(type, job)
local p = promise.new()
QBCore.Functions.TriggerCallback('jim-payments:ManageWrapper', function(cb) p:resolve(cb) end, type, job)
return Citizen.Await(p)
end
RegisterNetEvent('jim-payments:Client:ATM:use', function(data)
--this grabs all the info from names to savings account numbers in the databases
while name == nil do
QBCore.Functions.TriggerCallback('jim-payments:ATM:Find', function(cb1, cb2, cb3, cb4, cb5, cb6, cb7) name = cb1 cash = cb2 bank = cb3 account = cb4 cid = cb5 savbal = cb6 aid = cb7 end)
Citizen.Wait(100)
end
while society == nil do
QBCore.Functions.TriggerCallback('qb-bossmenu:server:GetAccount', function(cb) society = cb end, PlayerJob.name)
Citizen.Wait(100)
end
while gsociety == nil do
QBCore.Functions.TriggerCallback('qb-gangmenu:server:GetAccount', function(cb) gsociety = cb end, PlayerGang.name)
Citizen.Wait(100)
end
society = GrabAccount("GetAccount", PlayerJob.name)
Wait(200)
gsociety = GrabAccount("GetGangAccount", PlayerGang.name)
local atmbartime = 2500
local setoptions = {}
if data.id == "atm" then
setoptions = { { value = "withdraw", text = "Withdrawl" }, }
setview = "Welcome back, "..name.."<br><br>- Citizen ID -<br>"..cid.."<br><br>- Balances -<br>🏦Bank - $"..cv(bank).."<br>💵Cash - $"..cv(cash)..'<br><br>- Options -'
setview = "<center><img src=https://static.wikia.nocookie.net/gtawiki/images/b/bd/Fleeca-GTAV-Logo.png width=200px></center><br>Welcome back, "..name.."<br><br>- Citizen ID -<br>"..cid.."<br><br>- Balances -<br>🏦Bank - $"..cv(bank).."<br>💵Cash - $"..cv(cash)..'<br><br>- Options -'
setheader = "💵 ATM Banking 💵"
setinputs = { { type = 'radio', name = 'billtype', text = setview, options = setoptions },
{ type = 'number', isRequired = true, name = 'amount', text = '💵 Amount to transfer' }, }
@@ -373,4 +374,4 @@ RegisterNetEvent('jim-payments:client:ATM:give', function()
TriggerServerEvent('jim-payments:server:ATM:give', dialog.citizen, dialog.price)
end
end)
end)
end)

View File

@@ -13,6 +13,13 @@ end
---- BANK STUFF
QBCore.Functions.CreateCallback('jim-payments:ManageWrapper', function(source, cb, type, account)
local result = nil
if type == "GetAccount" then result = exports["qb-management"]:GetAccount(account) end
if type == "GetGangAccount" then result = exports["qb-management"]:GetGangAccount(account) end
cb(result)
end)
RegisterServerEvent('jim-payments:server:ATM:use', function(amount, billtype, baccount, account, society, gsociety)
local src = source
local Player = QBCore.Functions.GetPlayer(src)
@@ -72,12 +79,14 @@ RegisterServerEvent('jim-payments:server:ATM:use', function(amount, billtype, ba
elseif tonumber(society) >= amount then
TriggerClientEvent("QBCore:Notify", src, "Withdrew $"..cv(amount).." from the "..Player.PlayerData.job.label.." account", "success")
Player.Functions.AddMoney('bank', amount)
TriggerEvent("qb-bossmenu:server:removeAccountMoney", tostring(Player.PlayerData.job.name), amount)
exports["qb-management"]:RemoveMoney(tostring(Player.PlayerData.job.name), amount)
--TriggerEvent("qb-bossmenu:server:removeAccountMoney", tostring(Player.PlayerData.job.name), amount)
end
elseif billtype == "deposit" then
if bankB < amount then TriggerClientEvent("QBCore:Notify", src, "Not enough money in your bank", "error")
elseif bankB >= amount then
TriggerEvent("qb-bossmenu:server:addAccountMoney", tostring(Player.PlayerData.job.name), amount)
exports["qb-management"]:AddMoney(tostring(Player.PlayerData.job.name), amount)
--TriggerEvent("qb-bossmenu:server:addAccountMoney", tostring(Player.PlayerData.job.name), amount)
Player.Functions.RemoveMoney('bank', amount) Wait(1500)
TriggerClientEvent("QBCore:Notify", src, "Deposited $"..cv(amount).." into the "..Player.PlayerData.job.label.." account", "success")
end
@@ -100,7 +109,8 @@ RegisterServerEvent('jim-payments:server:ATM:use', function(amount, billtype, ba
local result = MySQL.Sync.fetchAll('SELECT * FROM players WHERE charinfo LIKE ?', {query})
if result[1] ~= nil then
local Reciever = QBCore.Functions.GetPlayerByCitizenId(result[1].citizenid)
TriggerEvent("qb-bossmenu:server:removeAccountMoney", tostring(Player.PlayerData.job.name), amount)
exports["qb-management"]:RemoveMoney(tostring(Player.PlayerData.job.name), amount)
--TriggerEvent("qb-bossmenu:server:removeAccountMoney", tostring(Player.PlayerData.job.name), amount)
if Reciever ~= nil then
Reciever.Functions.AddMoney('bank', amount)
TriggerClientEvent("QBCore:Notify", src, "Sent $"..amount.." to "..Reciever.PlayerData.charinfo.firstname.." "..Reciever.PlayerData.charinfo.lastname, "success")
@@ -121,12 +131,14 @@ RegisterServerEvent('jim-payments:server:ATM:use', function(amount, billtype, ba
elseif tonumber(gsociety) >= amount then
TriggerClientEvent("QBCore:Notify", src, "Withdrew $"..cv(amount).." from the "..Player.PlayerData.gang.label.." account", "success")
Player.Functions.AddMoney('bank', amount)
TriggerEvent("qb-gangmenu:server:removeAccountMoney", tostring(Player.PlayerData.gang.name), amount)
exports["qb-management"]:RemoveGangMoney(tostring(Player.PlayerData.gang.name), amount)
--TriggerEvent("qb-gangmenu:server:removeAccountMoney", tostring(Player.PlayerData.gang.name), amount)
end
elseif billtype == "deposit" then
if bankB < amount then TriggerClientEvent("QBCore:Notify", src, "Not enough money in your bank", "error")
elseif bankB >= amount then
TriggerEvent("qb-gangmenu:server:addAccountMoney", tostring(Player.PlayerData.gang.name), amount)
exports["qb-management"]:AddGangMoney(tostring(Player.PlayerData.gang.name), amount)
--TriggerEvent("qb-gangmenu:server:addAccountMoney", tostring(Player.PlayerData.gang.name), amount)
Player.Functions.RemoveMoney('bank', amount) Wait(1500)
TriggerClientEvent("QBCore:Notify", src, "Deposited $"..cv(amount).." into the "..Player.PlayerData.gang.label.." account", "success")
end
@@ -149,7 +161,8 @@ RegisterServerEvent('jim-payments:server:ATM:use', function(amount, billtype, ba
local result = MySQL.Sync.fetchAll('SELECT * FROM players WHERE charinfo LIKE ?', {query})
if result[1] ~= nil then
local Reciever = QBCore.Functions.GetPlayerByCitizenId(result[1].citizenid)
TriggerEvent("qb-bossmenu:server:removeAccountMoney", tostring(Player.PlayerData.gang.name), amount)
exports["qb-management"]:RemoveGangMoney(tostring(Player.PlayerData.gang.name), amount)
--TriggerEvent("qb-bossmenu:server:removeAccountMoney", tostring(Player.PlayerData.gang.name), amount)
if Reciever ~= nil then
Reciever.Functions.AddMoney('bank', amount)
TriggerClientEvent("QBCore:Notify", src, "Sent $"..amount.." to "..Reciever.PlayerData.charinfo.firstname.." "..Reciever.PlayerData.charinfo.lastname, "success")
@@ -233,7 +246,7 @@ RegisterServerEvent("jim-payments:server:ATM:give", function(citizen, price)
Player.Functions.RemoveMoney('cash', amount)
TriggerClientEvent("QBCore:Notify", source, "You gave "..Reciever.PlayerData.charinfo.firstname.." $"..cv(amount), "success")
Reciever.Functions.AddMoney('cash', amount)
TriggerClientEvent("QBCore:Notify", tonumber(citizen), "You got $"..cv(amount).." from "..Reciever.PlayerData.charinfo.firstname, "success")
TriggerClientEvent("QBCore:Notify", tonumber(citizen), "You got $"..cv(amount).." from "..Player.PlayerData.charinfo.firstname, "success")
elseif balance < amount then
TriggerClientEvent("QBCore:Notify", source, "You don't have enough cash to give", "error")
end

View File

@@ -38,20 +38,20 @@ RegisterNetEvent('jim-payments:client:Charge', function(data)
if nearbyList[#nearbyList] == nil then TriggerEvent("QBCore:Notify", "No one near by to charge", "error") return end
local dialog = exports['qb-input']:ShowInput({ header = img..PlayerJob.label.." Cash Register", submitText = "Send",
inputs = {
{ text = " ", name = "citizen", type = "select", options = nearbyList },
{ type = 'radio', name = 'billtype', text = 'Payment Type', options = { { value = "cash", text = "Cash" }, { value = "card", text = "Card" } } },
{ text = " ", name = "citizen", type = "select", options = nearbyList },
{ type = 'radio', name = 'billtype', text = 'Payment Type', options = { { value = "cash", text = "Cash" }, { value = "bank", text = "Card" } } },
{ type = 'number', isRequired = true, name = 'price', text = '💵 Amount to Charge' },}
})
if dialog then
if not dialog.citizen or not dialog.price then return end
TriggerServerEvent('jim-payments:server:Charge', dialog.citizen, dialog.price, dialog.billtype)
TriggerServerEvent('jim-payments:server:Charge', dialog.citizen, dialog.price, dialog.billtype, data.img)
end
end)
end)
RegisterNetEvent('jim-payments:Tickets:Menu', function()
local amount = nil
while amount == nil do QBCore.Functions.TriggerCallback('jim-payments:Ticket:Count', function(cb) amount = cb end) Citizen.Wait(1) end
local p = promise.new() QBCore.Functions.TriggerCallback('jim-payments:Ticket:Count', function(cb) p:resolve(cb) end) amount = Citizen.Await(p)
for k, v in pairs(Config.Jobs) do if k ~= PlayerJob.name then
else exports['qb-menu']:openMenu({
{ isMenuHeader = true, header = "🧾 "..PlayerJob.label.." Receipts 🧾", txt = "Do you want trade your receipts for payment?" },
@@ -62,9 +62,10 @@ RegisterNetEvent('jim-payments:Tickets:Menu', function()
end
end)
RegisterNetEvent("jim-payments:client:PayPopup", function(amount, biller, billtype)
RegisterNetEvent("jim-payments:client:PayPopup", function(amount, biller, billtype, img)
if img == nil then img = "" end
exports['qb-menu']:openMenu({
{ isMenuHeader = true, header = "🧾 "..PlayerJob.label.." Payment 🧾", txt = "Do you want accept the payment?" },
{ isMenuHeader = true, header = img.."🧾 "..PlayerJob.label.." Payment 🧾", txt = "Do you want accept the payment?" },
{ isMenuHeader = true, header = "", txt = billtype:gsub("^%l", string.upper).." Payment: $"..amount },
{ header = "✅ Yes", txt = "", params = { isServer = true, event = "jim-payments:server:PayPopup", args = { accept = true, amount = amount, biller = biller, billtype = billtype } } },
{ header = "❌ No", txt = "", params = { isServer = true, event = "jim-payments:server:PayPopup", args = { accept = false, amount = amount, biller = biller, billtype = billtype } } }, })

View File

@@ -1,4 +1,4 @@
print("Jim-Payments v2.1 - Payments Script by Jimathy")
print("Jim-Payments v2.2 - Payments Script by Jimathy")
-- If you need support I now have a discord available, it helps me keep track of issues and give better support.
@@ -18,17 +18,24 @@ Config.ATMBlips = false -- Enable this if you are a pyscho and need every ATM to
Config.PhoneBank = true -- Set this to false to use the popup payment system FOR CARD/BANK PAYMENTS instead of using phone invoices
-- This doesn't affect Cash payments as they by default use confirmation now
-- This is helpful for phones that don't support invoices well
Config.Commission = false -- Set this to true to enable Commissions and give the person charging a percentage of the total
Config.CommissionAll = false -- Set this to true to give commission to workers clocked in
Config.CommissionDouble = false -- Set this to true if you want the person charging to get double Commission
Config.CommissionLimit = false -- If true, this limits the Commission to only be given if over the "MinAmountForTicket". If false, Commission will be given for any amount
-- MinAmountforTicket should be your cheapest item
-- PayPerTicket should never be higher than MinAmountforTicket
-- Commission is a percentage eg "0.10" becomes 10%
Config.Jobs = {
['beanmachine'] = { MinAmountforTicket = 50, PayPerTicket = 50 },
['burgershot'] = { MinAmountforTicket = 50, PayPerTicket = 50 },
['catcafe'] = { MinAmountforTicket = 50, PayPerTicket = 50 },
['henhouse'] = { MinAmountforTicket = 50, PayPerTicket = 50 },
['pizzathis'] = { MinAmountforTicket = 50, PayPerTicket = 50 },
['popsdiner'] = { MinAmountforTicket = 50, PayPerTicket = 50 },
['tequilala'] = { MinAmountforTicket = 50, PayPerTicket = 50 },
['vanilla'] = { MinAmountforTicket = 50, PayPerTicket = 50 },
['mechanic'] = { MinAmountforTicket = 1000, PayPerTicket = 500 },
}
['beanmachine'] = { MinAmountforTicket = 50, PayPerTicket = 50, Commission = 0.10, },
['burgershot'] = { MinAmountforTicket = 50, PayPerTicket = 50 , Commission = 0.10,},
['catcafe'] = { MinAmountforTicket = 50, PayPerTicket = 50, Commission = 0.10, },
['henhouse'] = { MinAmountforTicket = 50, PayPerTicket = 50, Commission = 0.10, },
['pizzathis'] = { MinAmountforTicket = 50, PayPerTicket = 50, Commission = 0.10, },
['popsdiner'] = { MinAmountforTicket = 50, PayPerTicket = 50, Commission = 0.10, },
['tequilala'] = { MinAmountforTicket = 50, PayPerTicket = 50, Commission = 0.10, },
['vanilla'] = { MinAmountforTicket = 50, PayPerTicket = 50, Commission = 0.10, },
['mechanic'] = { MinAmountforTicket = 1000, PayPerTicket = 500, Commission = 0.10, },
}

View File

@@ -1,13 +1,14 @@
name "Jim-Payments"
author "Jimathy"
version "v2"
version "v2.2"
description "Payment Script By Jimathy"
fx_version "cerulean"
game "gta5"
dependencies {
'qb-input',
'qb-target'
'qb-target',
'qb-management'
}
client_scripts {

View File

@@ -13,18 +13,45 @@ end
--QBCore.Commands.Add("cashregister", "Use mobile cash register", {}, false, function(source) TriggerClientEvent("jim-payments:client:Charge", source, true) end)
RegisterServerEvent('jim-payments:Tickets:Give', function(amount, job)
if Config.TicketSystem then
RegisterServerEvent('jim-payments:Tickets:Give', function(data, biller)
--Find the biller from their citizenid
if biller == nil then
for k, v in pairs(QBCore.Functions.GetPlayers()) do
local Player = QBCore.Functions.GetPlayer(v)
if Player ~= nil then
if Player.PlayerData.job.name == job and Player.PlayerData.job.onduty then
if amount >= Config.Jobs[job].MinAmountforTicket then
local Player = QBCore.Functions.GetPlayer(v)
if Player.PlayerData.citizenid == data.senderCitizenId then biller = Player end
end
end
if Config.TicketSystem then
if data.amount >= Config.Jobs[data.society].MinAmountforTicket then
for k, v in pairs(QBCore.Functions.GetPlayers()) do
local Player = QBCore.Functions.GetPlayer(v)
if Player ~= nil then
if Player.PlayerData.job.name == data.society and Player.PlayerData.job.onduty then
Player.Functions.AddItem('payticket', 1, false, {["quality"] = nil})
TriggerClientEvent('QBCore:Notify', Player.PlayerData.source, 'Receipt received', 'success')
TriggerClientEvent('inventory:client:ItemBox', Player.PlayerData.source, QBCore.Shared.Items['payticket'], "add", 1)
elseif amount < Config.Jobs[job].MinAmountforTicket then
TriggerClientEvent("QBCore:Notify", Player.PlayerData.source, "Amount too low, didn't receive a receipt", "error")
end
end
end
end
end
-- Commission section, does each config option separately
local comm = tonumber(Config.Jobs[data.society].Commission)
if Config.Commission and comm ~= 0 then
if Config.CommissionLimit and data.amount < Config.Jobs[data.society].MinAmountforTicket then return end
if Config.CommissionDouble then
biller.Functions.AddMoney("bank", math.floor(tonumber(data.amount) * (comm *2)))
TriggerClientEvent("QBCore:Notify", biller.PlayerData.source, "Recieved $"..math.floor(tonumber(data.amount) * (comm *2)).." in Commission", "success")
else biller.Functions.AddMoney("bank", math.floor(tonumber(data.amount) *comm))
TriggerClientEvent("QBCore:Notify", biller.PlayerData.source, "Recieved $"..math.floor(tonumber(data.amount) * comm).." in Commission", "success")
end
if Config.CommissionAll then
for k, v in pairs(QBCore.Functions.GetPlayers()) do
local Player = QBCore.Functions.GetPlayer(v)
if Player ~= nil and Player ~= biller then
if Player.PlayerData.job.name == data.society and Player.PlayerData.job.onduty then
Player.Functions.AddMoney("bank", math.floor(tonumber(data.amount) * comm))
TriggerClientEvent("QBCore:Notify", Player.PlayerData.source, "Recieved $"..math.floor(tonumber(data.amount) * comm).." in Commission", "success")
end
end
end
@@ -51,22 +78,23 @@ QBCore.Functions.CreateCallback('jim-payments:Ticket:Count', function(source, cb
cb(amount)
end)
RegisterServerEvent("jim-payments:server:Charge", function(citizen, price, billtype)
RegisterServerEvent("jim-payments:server:Charge", function(citizen, price, billtype, img)
local src = source
local biller = QBCore.Functions.GetPlayer(src)
local billed = QBCore.Functions.GetPlayer(tonumber(citizen))
local amount = tonumber(price)
local balance = billed.Functions.GetMoney(billtype)
if amount and amount > 0 then
if billtype == "cash" then balance = billed.Functions.GetMoney(billtype)
if balance >= amount then
TriggerClientEvent("jim-payments:client:PayPopup", billed.PlayerData.source, amount, src, billtype)
elseif balance < amount then
TriggerClientEvent("QBCore:Notify", src, "Customer doesn't have enough cash to pay", "error")
TriggerClientEvent("QBCore:Notify", tonumber(citizen), "You don't have enough cash to pay", "error")
end
elseif billtype == "card" then
if balance < amount then
TriggerClientEvent("QBCore:Notify", src, "Customer doesn't have enough cash to pay", "error")
TriggerClientEvent("QBCore:Notify", tonumber(citizen), "You don't have enough cash to pay", "error")
return
end
if billtype == "cash" then
TriggerClientEvent("jim-payments:client:PayPopup", billed.PlayerData.source, amount, src, billtype, img)
elseif billtype == "bank" then
if Config.PhoneBank == false then
TriggerClientEvent("jim-payments:client:PayPopup", billed.PlayerData.source, amount, src, billtype)
TriggerClientEvent("jim-payments:client:PayPopup", billed.PlayerData.source, amount, src, billtype, img)
else
MySQL.Async.insert(
'INSERT INTO phone_invoices (citizenid, amount, society, sender, sendercitizenid) VALUES (?, ?, ?, ?, ?)',
@@ -83,9 +111,13 @@ RegisterServerEvent("jim-payments:server:PayPopup", function(data)
local src = source
local billed = QBCore.Functions.GetPlayer(src)
local biller = QBCore.Functions.GetPlayer(tonumber(data.biller))
local newdata = { senderCitizenId = biller.PlayerData.citizenid, society = biller.PlayerData.job.name, amount = data.amount }
if data.accept == true then
billed.Functions.RemoveMoney(tostring(data.billtype), data.amount) TriggerEvent("qb-bossmenu:server:addAccountMoney", tostring(biller.PlayerData.job.name), data.amount)
TriggerEvent('jim-payments:Tickets:Give', data.amount, tostring(billed.PlayerData.job.name))
billed.Functions.RemoveMoney(tostring(data.billtype), data.amount)
exports["qb-management"]:AddMoney(tostring(biller.PlayerData.job.name), data.amount)
--TriggerEvent("qb-bossmenu:server:addAccountMoney", tostring(biller.PlayerData.job.name), data.amount)
TriggerEvent('jim-payments:Tickets:Give', newdata, biller)
TriggerClientEvent("QBCore:Notify", data.biller, billed.PlayerData.charinfo.firstname.." accepted the payment", "success")
elseif data.accept == false then
TriggerClientEvent("QBCore:Notify", src, "You declined the payment")
TriggerClientEvent("QBCore:Notify", data.biller, billed.PlayerData.charinfo.firstname.." declined the payment", "error")