#include "transactionrecord.h"
-#include "headers.h"
+#include "wallet.h"
/* Return positive answer if transaction should be shown in list.
*/
QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet *wallet, const CWalletTx &wtx)
{
QList<TransactionRecord> parts;
- int64 nTime = wtx.nTimeDisplayed = wtx.GetTxTime();
+ int64 nTime = wtx.GetTxTime();
int64 nCredit = wtx.GetCredit(true);
int64 nDebit = wtx.GetDebit();
int64 nNet = nCredit - nDebit;
if (showTransaction(wtx))
{
- if (nNet > 0 || wtx.IsCoinBase())
+ if (wtx.IsCoinStake()) // ppcoin: coinstake transaction
+ {
+ parts.append(TransactionRecord(hash, nTime, TransactionRecord::StakeMint, "", -nDebit, wtx.GetValueOut()));
+ }
+ else if (nNet > 0 || wtx.IsCoinBase())
{
//
// Credit
// Generated
sub.type = TransactionRecord::Generated;
}
- else if (ExtractAddress(txout.scriptPubKey, wallet, address))
+ else if (ExtractAddress(txout.scriptPubKey, address) && wallet->HaveKey(address))
{
// Received by Bitcoin Address
sub.type = TransactionRecord::RecvWithAddress;
}
CBitcoinAddress address;
- if (ExtractAddress(txout.scriptPubKey, 0, address))
+ if (ExtractAddress(txout.scriptPubKey, address))
{
// Sent to Bitcoin Address
sub.type = TransactionRecord::SendToAddress;
//
// Mixed debit transaction, can't break down payees
//
- bool fAllMine = true;
- BOOST_FOREACH(const CTxOut& txout, wtx.vout)
- fAllMine = fAllMine && wallet->IsMine(txout);
- BOOST_FOREACH(const CTxIn& txin, wtx.vin)
- fAllMine = fAllMine && wallet->IsMine(txin);
-
parts.append(TransactionRecord(hash, nTime, TransactionRecord::Other, "", nNet, 0));
}
}
// Sort order, unrecorded transactions sort to the top
status.sortKey = strprintf("%010d-%01d-%010u-%03d",
- (pindex ? pindex->nHeight : INT_MAX),
+ (pindex ? pindex->nHeight : std::numeric_limits<int>::max()),
(wtx.IsCoinBase() ? 1 : 0),
wtx.nTimeReceived,
idx);
}
// For generated transactions, determine maturity
- if(type == TransactionRecord::Generated)
+ if(type == TransactionRecord::Generated || type == TransactionRecord::StakeMint)
{
int64 nCredit = wtx.GetCredit(true);
if (nCredit == 0)