278 _log(ACCOUNT__TRACE,
"TranserFunds() - from: %u, to: %u, entry: %u, refID: %u, amount: %.2f, fKey: %u, tKey: %u", \
279 fromID, toID, entryTypeID, referenceID, amount, fromKey, toKey);
281 if (
IsAUR(fromKey)) {
287 double newBalanceFrom(0), newBalanceTo(0);
288 Client* pClientFrom(
nullptr);
290 pClientFrom =
sEntityList.FindClientByCharID(fromID);
291 if (pClientFrom ==
nullptr) {
296 pClientFrom->AddBalance(-amount, fromCurrency);
297 newBalanceFrom = pClientFrom->GetBalance(fromCurrency);
299 AccountDB::AddJournalEntry(fromID, entryTypeID, fromID, toID, fromCurrency, fromKey, -amount, newBalanceFrom, reason, referenceID);
302 if (pClient !=
nullptr)
304 HandleCorpTransaction(fromID, entryTypeID, userID?userID:fromID, toID, fromCurrency, fromKey, -amount, reason, referenceID);
314 Client* pClientTo(
nullptr);
317 if (pClientTo ==
nullptr) {
322 pClientTo->AddBalance(amount, toCurrency);
325 newBalanceTo = pClientTo->GetBalance(toCurrency);
330 if (pClient !=
nullptr)
332 HandleCorpTransaction(toID, entryTypeID, fromID, userID?userID:toID, toCurrency, toKey, amount, reason, referenceID);
335 _log(ACCOUNT__TRACE,
"TranserFunds() - toID: %s(%u) is neither player nor player corp. Not sending update.", \
336 sDataMgr.GetCorpName(toID).c_str(), toID);
340 if ((pClientTo !=
nullptr) and pClientTo->IsCharCreation())
352 if (
sConfig.server.BountyPayoutDelayed)
353 if (amount <
sConfig.rates.TaxedAmount)
357 if (pClientTo !=
nullptr) {
358 tax = pClientTo->GetCorpTaxRate() * amount;
359 corpID = pClientTo->GetCorporationID();
370 if (tax <
sConfig.rates.TaxAmount)
373 reason =
"DESC: Corporation Tax on pirate bounty";
374 switch (entryTypeID) {
#define sConfig
A macro for easier access to the singleton.
static float GetCorpTaxRate(uint32 charID)
#define _log(type, fmt,...)
static void AddJournalEntry(uint32 ownerID, int8 entryTypeID, uint32 ownerFromID, uint32 ownerToID, int8 currency, uint16 accountKey, double amount, double newBalance, std::string description, uint32 referenceID=0)
int32 GetCharacterID() const
#define is_log_enabled(type)
static void TranserFunds(uint32 fromID, uint32 toID, double amount, std::string reason="", uint8 entryTypeID=Journal::EntryType::Undefined, uint32 referenceID=0, uint16 fromKey=Account::KeyType::Cash, uint16 toKey=Account::KeyType::Cash, Client *pClient=nullptr)
static uint32 GetCorpID(uint32 charID)
#define IsPlayerCorp(itemID)
#define IsCharacterID(itemID)
static void HandleCorpTransaction(uint32 corpID, int8 entryTypeID, uint32 fromID, uint32 toID, int8 currency, uint16 accountKey, double amount, std::string description, uint32 referenceID=0)
static double OfflineFundXfer(uint32 charID, double amount, uint8 type=Account::CreditType::ISK)