55 lines
1.9 KiB
Lua
55 lines
1.9 KiB
Lua
-- ------------------------------------------------------------------------------ --
|
|
-- TradeSkillMaster --
|
|
-- https://tradeskillmaster.com --
|
|
-- All Rights Reserved - Detailed license information included with addon. --
|
|
-- ------------------------------------------------------------------------------ --
|
|
|
|
local _, TSM = ...
|
|
local Accounting = TSM:NewPackage("Accounting")
|
|
local Math = TSM.Include("Util.Math")
|
|
local private = {
|
|
characterGuildTemp = {},
|
|
}
|
|
local SECONDS_PER_DAY = 24 * 60 * 60
|
|
|
|
|
|
|
|
-- ============================================================================
|
|
-- Module Functions
|
|
-- ============================================================================
|
|
|
|
function Accounting.GetSummaryQuery(timeFilterStart, timeFilterEnd, ignoredCharacters)
|
|
local query = TSM.Accounting.Transactions.CreateQuery()
|
|
:Select("type", "itemString", "price", "quantity", "time")
|
|
if timeFilterStart then
|
|
query:GreaterThan("time", timeFilterStart)
|
|
end
|
|
if timeFilterEnd then
|
|
query:LessThan("time", timeFilterEnd)
|
|
end
|
|
if ignoredCharacters then
|
|
wipe(private.characterGuildTemp)
|
|
for characterGuild in pairs(ignoredCharacters) do
|
|
local character, realm = strmatch(characterGuild, "^(.+) %- .+ %- (.+)$")
|
|
if character and realm == GetRealmName() then
|
|
private.characterGuildTemp[character] = true
|
|
end
|
|
end
|
|
query:NotInTable("player", private.characterGuildTemp)
|
|
end
|
|
return query
|
|
end
|
|
|
|
function Accounting.GetSaleRate(itemString)
|
|
-- since auction data only goes back 180 days, limit the sales to that same time range
|
|
local _, totalSaleNum = TSM.Accounting.Transactions.GetSaleStats(itemString, 180 * SECONDS_PER_DAY)
|
|
if not totalSaleNum then
|
|
return nil
|
|
end
|
|
local _, _, totalFailed = TSM.Accounting.Auctions.GetStats(itemString)
|
|
if not totalFailed then
|
|
return nil
|
|
end
|
|
return Math.Round(totalSaleNum / (totalSaleNum + totalFailed), 0.01)
|
|
end
|