RegisterServerEvent('esx_billing:sendBill') AddEventHandler('esx_billing:sendBill', function(playerId, sharedAccountName, label, amount) local xPlayer = ESX.GetPlayerFromId(source) local xTarget = ESX.GetPlayerFromId(playerId) amount = ESX.Math.Round(amount) if amount > 0 and xTarget then TriggerEvent('esx_addonaccount:getSharedAccount', sharedAccountName, function(account) if account then MySQL.Async.execute('INSERT INTO billing (identifier, sender, target_type, target, label, amount) VALUES (@identifier, @sender, @target_type, @target, @label, @amount)', { ['@identifier'] = xTarget.identifier, ['@sender'] = xPlayer.identifier, ['@target_type'] = 'society', ['@target'] = sharedAccountName, ['@label'] = label, ['@amount'] = amount }, function(rowsChanged) xTarget.showNotification(_U('received_invoice')) end) else MySQL.Async.execute('INSERT INTO billing (identifier, sender, target_type, target, label, amount) VALUES (@identifier, @sender, @target_type, @target, @label, @amount)', { ['@identifier'] = xTarget.identifier, ['@sender'] = xPlayer.identifier, ['@target_type'] = 'player', ['@target'] = xPlayer.identifier, ['@label'] = label, ['@amount'] = amount }, function(rowsChanged) xTarget.showNotification(_U('received_invoice')) end) end end) end end) ESX.RegisterServerCallback('esx_billing:getBills', function(source, cb) local xPlayer = ESX.GetPlayerFromId(source) MySQL.Async.fetchAll('SELECT amount, id, label FROM billing WHERE identifier = @identifier', { ['@identifier'] = xPlayer.identifier }, function(result) cb(result) end) end) ESX.RegisterServerCallback('esx_billing:getTargetBills', function(source, cb, target) local xPlayer = ESX.GetPlayerFromId(target) if xPlayer then MySQL.Async.fetchAll('SELECT amount, id, label FROM billing WHERE identifier = @identifier', { ['@identifier'] = xPlayer.identifier }, function(result) cb(result) end) else cb({}) end end) exports('addMoney', function(amount,job,source,money_type,e) return addMoney(amount,job,source,money_type,e) end) ESX.RegisterServerCallback('esx_billing:payBill', function(source, cb, billId) local xPlayer = ESX.GetPlayerFromId(source) MySQL.Async.fetchAll('SELECT sender, target_type, target, amount FROM billing WHERE id = @id', { ['@id'] = billId }, function(result) if result[1] then local amount = result[1].amount local xTarget = ESX.GetPlayerFromIdentifier(result[1].sender) if result[1].target_type == 'player' then if xTarget then if xPlayer.getMoney() >= amount then MySQL.Async.execute('DELETE FROM billing WHERE id = @id', { ['@id'] = billId }, function(rowsChanged) if rowsChanged == 1 then xPlayer.removeMoney(amount) xTarget.addMoney(amount) exports.renzu_jobs:addMoney(tonumber(amount),xTarget.job.name,source,'money',true) xPlayer.showNotification(_U('paid_invoice', ESX.Math.GroupDigits(amount))) xTarget.showNotification(_U('received_payment', ESX.Math.GroupDigits(amount))) end cb() end) elseif xPlayer.getAccount('bank').money >= amount then MySQL.Async.execute('DELETE FROM billing WHERE id = @id', { ['@id'] = billId }, function(rowsChanged) if rowsChanged == 1 then xPlayer.removeAccountMoney('bank', amount) xTarget.addAccountMoney('bank', amount) --addMoney(tonumber(amount),xTarget.job.name,source,money_type) exports.renzu_jobs:addMoney(tonumber(amount),xTarget.job.name,source,'bank',true) xPlayer.showNotification(_U('paid_invoice', ESX.Math.GroupDigits(amount))) xTarget.showNotification(_U('received_payment', ESX.Math.GroupDigits(amount))) end cb() end) else xTarget.showNotification(_U('target_no_money')) xPlayer.showNotification(_U('no_money')) cb() end else xPlayer.showNotification(_U('player_not_online')) cb() end else TriggerEvent('esx_addonaccount:getSharedAccount', result[1].target, function(account) if xPlayer.getMoney() >= amount then MySQL.Async.execute('DELETE FROM billing WHERE id = @id', { ['@id'] = billId }, function(rowsChanged) if rowsChanged == 1 then xPlayer.removeMoney(amount) account.addMoney(amount) xPlayer.showNotification(_U('paid_invoice', ESX.Math.GroupDigits(amount))) if xTarget then xTarget.showNotification(_U('received_payment', ESX.Math.GroupDigits(amount))) end end cb() end) elseif xPlayer.getAccount('bank').money >= amount then MySQL.Async.execute('DELETE FROM billing WHERE id = @id', { ['@id'] = billId }, function(rowsChanged) if rowsChanged == 1 then xPlayer.removeAccountMoney('bank', amount) account.addMoney(amount) xPlayer.showNotification(_U('paid_invoice', ESX.Math.GroupDigits(amount))) if xTarget then xTarget.showNotification(_U('received_payment', ESX.Math.GroupDigits(amount))) end end cb() end) else if xTarget then xTarget.showNotification(_U('target_no_money')) end xPlayer.showNotification(_U('no_money')) cb() end end) end end end) end)