diff options
| author | Cozz Lovan <[email protected]> | 2014-07-23 14:34:36 +0200 |
|---|---|---|
| committer | Wladimir J. van der Laan <[email protected]> | 2015-03-13 11:04:18 +0100 |
| commit | 292623adf59edea52b2927b3d67fd2ff7f997882 (patch) | |
| tree | afec21b4e7ff1c2b551b060f5f435895d43d15d6 /src/qt/walletmodeltransaction.cpp | |
| parent | [Qt] Code-movement-only: Format confirmation message in sendcoinsdialog (diff) | |
| download | discoin-292623adf59edea52b2927b3d67fd2ff7f997882.tar.xz discoin-292623adf59edea52b2927b3d67fd2ff7f997882.zip | |
Subtract fee from amount
Fixes #2724 and #1570.
Adds the
automatically-subtract-the-fee-from-the-amount-and-send-whats-left
feature to the GUI and RPC (sendtoaddress,sendmany).
Diffstat (limited to 'src/qt/walletmodeltransaction.cpp')
| -rw-r--r-- | src/qt/walletmodeltransaction.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/qt/walletmodeltransaction.cpp b/src/qt/walletmodeltransaction.cpp index 8f32e4614..c97add6be 100644 --- a/src/qt/walletmodeltransaction.cpp +++ b/src/qt/walletmodeltransaction.cpp @@ -46,6 +46,38 @@ void WalletModelTransaction::setTransactionFee(const CAmount& newFee) fee = newFee; } +void WalletModelTransaction::reassignAmounts(int nChangePosRet) +{ + int i = 0; + for (QList<SendCoinsRecipient>::iterator it = recipients.begin(); it != recipients.end(); ++it) + { + SendCoinsRecipient& rcp = (*it); + + if (rcp.paymentRequest.IsInitialized()) + { + CAmount subtotal = 0; + const payments::PaymentDetails& details = rcp.paymentRequest.getDetails(); + for (int j = 0; j < details.outputs_size(); j++) + { + const payments::Output& out = details.outputs(j); + if (out.amount() <= 0) continue; + if (i == nChangePosRet) + i++; + subtotal += walletTransaction->vout[i].nValue; + i++; + } + rcp.amount = subtotal; + } + else // normal recipient (no payment request) + { + if (i == nChangePosRet) + i++; + rcp.amount = walletTransaction->vout[i].nValue; + i++; + } + } +} + CAmount WalletModelTransaction::getTotalTransactionAmount() { CAmount totalTransactionAmount = 0; |