121 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
--[[
 | 
						|
    FREE SCRIPT
 | 
						|
    DOWNLOAD @ https://store.rxscripts.xyz/
 | 
						|
    SUPPORT @ https://discord.gg/rxscripts
 | 
						|
    BY RX Scripts © rxscripts.xyz
 | 
						|
--]]
 | 
						|
 | 
						|
Config.DiscordWebhooks = {
 | 
						|
    invoiceSent = '',
 | 
						|
    invoicePaid = '',
 | 
						|
    invoiceRevoked = '',
 | 
						|
    invoiceDeclined = '',
 | 
						|
}
 | 
						|
 | 
						|
--[[
 | 
						|
    We have integrated RxBanking by default, to work with societies.
 | 
						|
    If you use any other banking or society accounting system, you can modify the functions below.
 | 
						|
    We HIGHLY recommend using RxBanking together with this billing script to ensure the best experience.
 | 
						|
 | 
						|
    We love that you are using our script, so here is a little easter egg gift for you:
 | 
						|
    15% DISCOUNT OFF: Advanced Banking - RxBanking
 | 
						|
    CODE: 'FROMBILLING15'
 | 
						|
 | 
						|
    If you want to use RxBanking, you can find it here:
 | 
						|
    https://store.rxscripts.xyz/scripts/advanced-banking
 | 
						|
--]]
 | 
						|
function RemoveMoneyFromSociety(society, amount)
 | 
						|
    if RX_BANKING then
 | 
						|
        return RX_BANKING:RemoveSocietyMoney(society, amount, 'payment', 'Invoice Paid')
 | 
						|
    end
 | 
						|
 | 
						|
    Error('RxBanking not found, unable to remove money from society')
 | 
						|
    Error('Modify RemoveMoneyFromSociety function in RxBilling/server/opensource.lua to use your own banking system')
 | 
						|
 | 
						|
    return 0
 | 
						|
end
 | 
						|
 | 
						|
function GetSocietyMoney(society)
 | 
						|
    if RX_BANKING then
 | 
						|
        local acc = RX_BANKING:GetSocietyAccount(society)
 | 
						|
        if acc then return acc.balance end
 | 
						|
    end
 | 
						|
 | 
						|
    Error('RxBanking not found, unable to get money from society')
 | 
						|
    Error('Modify GetSocietyMoney function in RxBilling/server/opensource.lua to use your own banking system')
 | 
						|
 | 
						|
    return 0
 | 
						|
end
 | 
						|
 | 
						|
function AddMoneyToSociety(society, amount)
 | 
						|
    if RX_BANKING then
 | 
						|
        return RX_BANKING:AddSocietyMoney(society, amount, 'payment', 'Invoice Payment')
 | 
						|
    end
 | 
						|
 | 
						|
    Error('RxBanking not found, unable to add money to society')
 | 
						|
    Error('Modify AddMoneyToSociety function in RxBilling/server/opensource.lua to use your own banking system')
 | 
						|
 | 
						|
    return 0
 | 
						|
end
 | 
						|
 | 
						|
function RemoveMoneyFromBank(identifier, amount)
 | 
						|
    if RX_BANKING then
 | 
						|
        local personalAcc = RX_BANKING:GetPlayerPersonalAccount(identifier)
 | 
						|
        if personalAcc then
 | 
						|
            return RX_BANKING:RemoveAccountMoney(personalAcc.iban, amount, 'payment', 'Invoice Paid')
 | 
						|
        end
 | 
						|
    end
 | 
						|
 | 
						|
    local table = GetResourceState('es_extended') == 'started' and 'users' or 'players'
 | 
						|
    local accountsColumn = GetResourceState('es_extended') == 'started' and 'accounts' or 'money'
 | 
						|
    local identifierColumn = GetResourceState('es_extended') == 'started' and 'identifier' or 'citizenid'
 | 
						|
 | 
						|
    return MySQL.update.await(
 | 
						|
        string.format(
 | 
						|
            'UPDATE %s SET %s = JSON_SET(%s, "$.bank", JSON_EXTRACT(%s, "$.bank") - @amount) WHERE %s = @identifier',
 | 
						|
            table, accountsColumn, accountsColumn, accountsColumn, identifierColumn),
 | 
						|
        {
 | 
						|
            ['@amount'] = amount,
 | 
						|
            ['@identifier'] = identifier,
 | 
						|
        }
 | 
						|
    )
 | 
						|
end
 | 
						|
 | 
						|
function AddMoneyToBank(identifier, amount)
 | 
						|
    if RX_BANKING then
 | 
						|
        local personalAcc = RX_BANKING:GetPlayerPersonalAccount(identifier)
 | 
						|
        if personalAcc then
 | 
						|
            return RX_BANKING:AddAccountMoney(personalAcc.iban, amount, 'payment', 'Invoice Payment')
 | 
						|
        end
 | 
						|
    end
 | 
						|
 | 
						|
    local table = GetResourceState('es_extended') == 'started' and 'users' or 'players'
 | 
						|
    local accountsColumn = GetResourceState('es_extended') == 'started' and 'accounts' or 'money'
 | 
						|
    local identifierColumn = GetResourceState('es_extended') == 'started' and 'identifier' or 'citizenid'
 | 
						|
 | 
						|
    return MySQL.update.await(
 | 
						|
        string.format(
 | 
						|
            'UPDATE %s SET %s = JSON_SET(%s, "$.bank", JSON_EXTRACT(%s, "$.bank") + @amount) WHERE %s = @identifier',
 | 
						|
            table, accountsColumn, accountsColumn, accountsColumn, identifierColumn),
 | 
						|
        {
 | 
						|
            ['@amount'] = amount,
 | 
						|
            ['@identifier'] = identifier,
 | 
						|
        }
 | 
						|
    )
 | 
						|
end
 | 
						|
 | 
						|
RegisterNetEvent('rxbilling:onInvoiceSent', function(invoice)
 | 
						|
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('rxbilling:onInvoicePaid', function(payerId, invoice)
 | 
						|
    -- If playerId is nil, it means the invoice was paid automatically
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('rxbilling:onInvoiceDeclined', function(declinerId, invoice)
 | 
						|
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('rxbilling:onInvoiceRevoked', function(revokerId, invoice)
 | 
						|
 | 
						|
end)
 |