forked from Simnation/Main
230 lines
8.3 KiB
Lua
230 lines
8.3 KiB
Lua
QBCore.Functions.CreateCallback('roadphone:getCodeMBilling2', function(source, cb)
|
|
|
|
local billings = exports[Config.codemBilling2Folder]:GetPlayerUnpaidBillings(source)
|
|
|
|
cb(billings)
|
|
|
|
end)
|
|
|
|
|
|
RegisterServerEvent("roadphone:server:codem:payBill")
|
|
AddEventHandler("roadphone:server:codem:payBill", function(id)
|
|
|
|
local _source = source
|
|
|
|
exports[Config.codemBilling2Folder]:PayBilling(_source, id)
|
|
|
|
|
|
end)
|
|
|
|
if Config.bcsCompanyManager then
|
|
|
|
QBCore.Functions.CreateCallback('roadphone:getbilling', function(source, cb)
|
|
local e = QBCore.Functions.GetPlayer(source)
|
|
MySQL.Async.fetchAll('SELECT * FROM billings WHERE identifier = @identifier AND `status` = "unpaid"', {
|
|
["@identifier"] = e.PlayerData.citizenid
|
|
}, function(result)
|
|
local billingg = {}
|
|
for i = 1, #result, 1 do
|
|
local jobName = "None"
|
|
jobName = result[i].company
|
|
table.insert(billingg, {
|
|
id = result[i].id,
|
|
label = result[i].description,
|
|
sender = jobName,
|
|
target = result[i].biller_id,
|
|
amount = result[i].price
|
|
})
|
|
end
|
|
cb(billingg)
|
|
end)
|
|
end)
|
|
elseif Config.JaksamBilling then
|
|
QBCore.Functions.CreateCallback('roadphone:getbilling', function(source, cb)
|
|
local e = QBCore.Functions.GetPlayer(source)
|
|
MySQL.Async.fetchAll('SELECT * FROM billing WHERE identifier = @identifier', {
|
|
["@identifier"] = e.PlayerData.citizenid
|
|
}, function(result)
|
|
local billing = {}
|
|
for i = 1, #result do
|
|
local jobName = "None"
|
|
if result[i].target_type == "society" then
|
|
jobName = result[i].target:gsub("society_", "")
|
|
else
|
|
jobName = getNameFromIdentifier(result[i].sender)
|
|
if jobName == nil then
|
|
jobName = "Unkown"
|
|
end
|
|
end
|
|
table.insert(billing, {
|
|
id = result[i].id,
|
|
label = result[i].label,
|
|
sender = jobName,
|
|
target = result[i].target,
|
|
amount = result[i].amount
|
|
})
|
|
end
|
|
cb(billing)
|
|
end)
|
|
end)
|
|
|
|
else
|
|
|
|
QBCore.Functions.CreateCallback('roadphone:getbilling', function(source, cb)
|
|
local e = QBCore.Functions.GetPlayer(source)
|
|
MySQL.Async.fetchAll('SELECT * FROM phone_invoices WHERE citizenid = @identifier', {
|
|
["@identifier"] = e.PlayerData.citizenid
|
|
}, function(result)
|
|
local billing = {}
|
|
for i = 1, #result, 1 do
|
|
|
|
local sender = getNameFromIdentifier(result[i].sendercitizenid)
|
|
if sender == nil then
|
|
sender = "Unkown"
|
|
end
|
|
table.insert(billing, {
|
|
id = result[i].id,
|
|
label = "Bill",
|
|
sender = sender,
|
|
target = result[i].citizenid,
|
|
amount = result[i].amount
|
|
})
|
|
end
|
|
cb(billing)
|
|
end)
|
|
end)
|
|
end
|
|
|
|
QBCore.Functions.CreateCallback('roadphone:server:getbillingdata', function(source, cb, id)
|
|
MySQL.Async.fetchAll('SELECT * FROM billing WHERE id = @id', {
|
|
['@id'] = id
|
|
}, function(data)
|
|
cb(data[1])
|
|
end)
|
|
end)
|
|
|
|
if not Config.bcsCompanyManager then
|
|
RegisterServerEvent("roadphone:server:payBill")
|
|
AddEventHandler("roadphone:server:payBill", function(id)
|
|
local src = source
|
|
local xPlayer = QBCore.Functions.GetPlayer(src)
|
|
|
|
MySQL.Async.fetchAll('SELECT * FROM phone_invoices WHERE id = @id', {
|
|
['@id'] = id
|
|
}, function(data)
|
|
|
|
local SenderPly = QBCore.Functions.GetPlayerByCitizenId(data[1].sendercitizenid)
|
|
|
|
xPlayer.Functions.RemoveMoney('bank', data[1].amount, "paid-invoice")
|
|
exports['qb-management']:AddMoney(data[1].society, data[1].amount)
|
|
MySQL.Async.execute('DELETE FROM phone_invoices WHERE id = @id', {
|
|
['@id'] = id
|
|
})
|
|
|
|
TriggerClientEvent('roadphone:sendNotification', src, {
|
|
apptitle = 'APP_BILLING_NAME',
|
|
title = Lang:t('info.info.billing_paid') .. data[1].amount,
|
|
img = '/public/img/Apps/light_mode/billing.webp'
|
|
})
|
|
|
|
if SenderPly then
|
|
TriggerClientEvent('roadphone:sendNotification', SenderPly.PlayerData.source, {
|
|
apptitle = 'APP_BILLING_NAME',
|
|
title = Lang:t('info.info.billing_paid') .. data[1].amount,
|
|
img = '/public/img/Apps/light_mode/billing.webp'
|
|
})
|
|
end
|
|
end)
|
|
|
|
TriggerClientEvent('roadphone:updatebilling', src)
|
|
end)
|
|
|
|
elseif Config.bcsCompanyManager then
|
|
RegisterServerEvent("roadphone:server:payBill")
|
|
AddEventHandler("roadphone:server:payBill", function(id)
|
|
local src = source
|
|
local xPlayer = QBCore.Functions.GetPlayer(src)
|
|
|
|
MySQL.Async.fetchAll('SELECT * FROM billing WHERE id = @id', {
|
|
['@id'] = id
|
|
}, function(data)
|
|
|
|
local xTarget = QBCore.Functions.GetPlayerByCitizenId(data[1].sender)
|
|
local target = data[1].biller_id
|
|
local amount = data[1].price
|
|
|
|
if xTarget then
|
|
if amount then
|
|
if xPlayer.Functions.GetMoney('bank') >= amount then
|
|
|
|
MySQL.Async.execute('UPDATE billings SET `status`="paid" WHERE id = @id', {
|
|
['@id'] = id
|
|
}, function(rowsChanged)
|
|
xTarget.Functions.AddMoney('bank', amount, 'bill received')
|
|
xPlayer.Functions.RemoveMoney('bank', amount, 'bill paid')
|
|
|
|
TriggerClientEvent('roadphone:sendNotification', src, {
|
|
apptitle = 'APP_BILLING_NAME',
|
|
title = Lang:t('info.billing_paid') .. amount,
|
|
img = '/public/img/Apps/light_mode/billing.webp'
|
|
})
|
|
TriggerClientEvent('roadphone:sendNotification', xTarget.PlayerData.source, {
|
|
apptitle = 'APP_BILLING_NAME',
|
|
title = Lang:t('info.billing_paid') .. amount,
|
|
img = '/public/img/Apps/light_mode/billing.webp'
|
|
})
|
|
|
|
TriggerClientEvent('roadphone:updatebilling', xPlayer.PlayerData.source)
|
|
TriggerClientEvent('roadphone:updatebilling', xTarget.PlayerData.source)
|
|
|
|
end)
|
|
|
|
else
|
|
|
|
TriggerClientEvent('roadphone:sendNotification', src, {
|
|
apptitle = 'APP_BILLING_NAME',
|
|
title = Lang:t('info.billing_nomoney') .. amount,
|
|
img = '/public/img/Apps/light_mode/billing.webp'
|
|
})
|
|
|
|
end
|
|
|
|
else
|
|
|
|
TriggerClientEvent('roadphone:sendNotification', src, {
|
|
apptitle = 'APP_BILLING_NAME',
|
|
title = Lang:t('info.billing_nomoney') .. amount,
|
|
img = '/public/img/Apps/light_mode/billing.webp'
|
|
})
|
|
end
|
|
|
|
end
|
|
end)
|
|
end)
|
|
end
|
|
|
|
QBCore.Functions.CreateCallback('roadphone:server:getBillingIDS', function(source, cb)
|
|
|
|
local xPlayer = QBCore.Functions.GetPlayer(source)
|
|
|
|
if not xPlayer then
|
|
return
|
|
end
|
|
|
|
MySQL.Async.fetchAll('SELECT id FROM billing WHERE identifier = @identifier', {
|
|
['@identifier'] = xPlayer.PlayerData.citizenid
|
|
}, function(result)
|
|
cb(result)
|
|
end)
|
|
|
|
end)
|
|
|
|
if Config.JaksamBilling then
|
|
AddEventHandler("billing_ui:onBillCreated",
|
|
function(billId, senderIdentfier, targetIdentifier, amount, date, unixDate)
|
|
local xPlayer = QBCore.Functions.GetPlayerByCitizenId(targetIdentifier)
|
|
if xPlayer then
|
|
TriggerClientEvent('roadphone:updatebilling', xPlayer.PlayerData.source)
|
|
end
|
|
end)
|
|
end
|