-
Notifications
You must be signed in to change notification settings - Fork 0
/
client.lua
154 lines (143 loc) · 4.51 KB
/
client.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
ESX = nil
PlayerData = {}
Citizen.CreateThread(function()
while ESX == nil do
TriggerEvent("esx:getSharedObject", function(obj) ESX = obj end)
Citizen.Wait(0)
end
while ESX.GetPlayerData().job == nil do
Citizen.Wait(10)
end
PlayerData = ESX.GetPlayerData()
end)
RegisterNetEvent("esx:playerLoaded")
AddEventHandler("esx:playerLoaded", function(xPlayer)
PlayerData = xPlayer
end)
RegisterNetEvent("esx:setJob")
AddEventHandler("esx:setJob", function(job)
PlayerData.job = job
end)
function MyInvoices()
ESX.TriggerServerCallback("wcukBilling:GetInvoices", function(invoices)
SetNuiFocus(true, true)
SendNUIMessage({
action = 'myinvoices',
invoices = invoices,
VAT = Config.VATPercentage
})
end)
end
function SocietyInvoices(society)
ESX.TriggerServerCallback("wcukBilling:GetSocietyInvoices", function(cb, totalInvoices, totalIncome, totalUnpaid, awaitedIncome)
if json.encode(cb) ~= '[]' then
SetNuiFocus(true, true)
SendNUIMessage({
action = 'societyinvoices',
invoices = cb,
totalInvoices = totalInvoices,
totalIncome = totalIncome,
totalUnpaid = totalUnpaid,
awaitedIncome = awaitedIncome,
VAT = Config.VATPercentage
})
else
exports['wcukNotify']:Alert("BILLING", "Your society doesn't have invoices.", 10000, 'info')
SetNuiFocus(false, false)
end
end, society)
end
function CreateInvoice(society)
SetNuiFocus(true, true)
SendNUIMessage({
action = 'createinvoice',
society = society
})
end
RegisterCommand(Config.InvoicesCommand, function()
local isAllowed = false
local jobName = ""
for k, v in pairs(Config.AllowedSocieties) do
if v == PlayerData.job.name then
jobName = v
isAllowed = true
end
end
if Config.OnlyBossCanAccessSocietyInvoices and PlayerData.job.grade_name == "boss" and isAllowed then
SetNuiFocus(true, true)
SendNUIMessage({
action = 'mainmenu',
society = true,
create = true
})
elseif Config.OnlyBossCanAccessSocietyInvoices and PlayerData.job.grade_name ~= "boss" and isAllowed then
SetNuiFocus(true, true)
SendNUIMessage({
action = 'mainmenu',
society = false,
create = true
})
elseif not Config.OnlyBossCanAccessSocietyInvoices and isAllowed then
SetNuiFocus(true, true)
SendNUIMessage({
action = 'mainmenu',
society = true,
create = true
})
elseif not isAllowed then
SetNuiFocus(true, true)
SendNUIMessage({
action = 'mainmenu',
society = false,
create = false
})
end
end, false)
RegisterNUICallback("action", function(data, cb)
if data.action == "close" then
SetNuiFocus(false, false)
elseif data.action == "payInvoice" then
TriggerServerEvent("wcukBilling:PayInvoice", data.invoice_id)
SetNuiFocus(false, false)
elseif data.action == "cancelInvoice" then
TriggerServerEvent("wcukBilling:CancelInvoice", data.invoice_id)
SetNuiFocus(false, false)
elseif data.action == "createInvoice" then
local closestPlayer, playerDistance = ESX.Game.GetClosestPlayer()
target = GetPlayerServerId(closestPlayer)
data.target = target
data.society = "society_"..PlayerData.job.name
data.society_name = PlayerData.job.label
if closestPlayer == -1 or playerDistance > 3.0 then
exports['wcukNotify']:Alert("BILLING", "Error sending the invoice! There's nobody near you.", 10000, 'error')
else
TriggerServerEvent("wcukBilling:CreateInvoice", data)
exports['wcukNotify']:Alert("BILLING", "Invoice successfully sent!", 10000, 'success')
end
SetNuiFocus(false, false)
elseif data.action == "missingInfo" then
exports['wcukNotify']:Alert("BILLING", "Fill in all fields before sending an invoice!", 10000, 'error')
elseif data.action == "negativeAmount" then
exports['wcukNotify']:Alert("BILLING", "You need to set a positive amount!", 10000, 'error')
elseif data.action == "mainMenuOpenMyInvoices" then
MyInvoices()
elseif data.action == "mainMenuOpenSocietyInvoices" then
for k, v in pairs(Config.AllowedSocieties) do
if v == PlayerData.job.name then
if Config.OnlyBossCanAccessSocietyInvoices and PlayerData.job.grade_name == "boss" then
SocietyInvoices(PlayerData.job.label)
elseif not Config.OnlyBossCanAccessSocietyInvoices then
SocietyInvoices(PlayerData.job.label)
elseif Config.OnlyBossCanAccessSocietyInvoices then
exports['wcukNotify']:Alert("BILLING", "Only the boss can access the society invoices.", 10000, 'error')
end
end
end
elseif data.action == "mainMenuOpenCreateInvoice" then
for k, v in pairs(Config.AllowedSocieties) do
if v == PlayerData.job.name then
CreateInvoice(PlayerData.job.label)
end
end
end
end)