Skip to content

Commit 243ac0c

Browse files
committed
Merge #8137: Improve CWallet API with new AccountMove function.
9dfaa1c Improve CWallet API with new AccountMove function. (Patrick Strateman)
2 parents e6b141a + 9dfaa1c commit 243ac0c

File tree

3 files changed

+36
-27
lines changed

3 files changed

+36
-27
lines changed

src/wallet/rpcwallet.cpp

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -804,33 +804,7 @@ UniValue movecmd(const UniValue& params, bool fHelp)
804804
if (params.size() > 4)
805805
strComment = params[4].get_str();
806806

807-
CWalletDB walletdb(pwalletMain->strWalletFile);
808-
if (!walletdb.TxnBegin())
809-
throw JSONRPCError(RPC_DATABASE_ERROR, "database error");
810-
811-
int64_t nNow = GetAdjustedTime();
812-
813-
// Debit
814-
CAccountingEntry debit;
815-
debit.nOrderPos = pwalletMain->IncOrderPosNext(&walletdb);
816-
debit.strAccount = strFrom;
817-
debit.nCreditDebit = -nAmount;
818-
debit.nTime = nNow;
819-
debit.strOtherAccount = strTo;
820-
debit.strComment = strComment;
821-
pwalletMain->AddAccountingEntry(debit, walletdb);
822-
823-
// Credit
824-
CAccountingEntry credit;
825-
credit.nOrderPos = pwalletMain->IncOrderPosNext(&walletdb);
826-
credit.strAccount = strTo;
827-
credit.nCreditDebit = nAmount;
828-
credit.nTime = nNow;
829-
credit.strOtherAccount = strFrom;
830-
credit.strComment = strComment;
831-
pwalletMain->AddAccountingEntry(credit, walletdb);
832-
833-
if (!walletdb.TxnCommit())
807+
if (!pwalletMain->AccountMove(strFrom, strTo, nAmount, strComment))
834808
throw JSONRPCError(RPC_DATABASE_ERROR, "database error");
835809

836810
return true;

src/wallet/wallet.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -606,6 +606,40 @@ int64_t CWallet::IncOrderPosNext(CWalletDB *pwalletdb)
606606
return nRet;
607607
}
608608

609+
bool CWallet::AccountMove(std::string strFrom, std::string strTo, CAmount nAmount, std::string strComment)
610+
{
611+
CWalletDB walletdb(strWalletFile);
612+
if (!walletdb.TxnBegin())
613+
return false;
614+
615+
int64_t nNow = GetAdjustedTime();
616+
617+
// Debit
618+
CAccountingEntry debit;
619+
debit.nOrderPos = IncOrderPosNext(&walletdb);
620+
debit.strAccount = strFrom;
621+
debit.nCreditDebit = -nAmount;
622+
debit.nTime = nNow;
623+
debit.strOtherAccount = strTo;
624+
debit.strComment = strComment;
625+
AddAccountingEntry(debit, walletdb);
626+
627+
// Credit
628+
CAccountingEntry credit;
629+
credit.nOrderPos = IncOrderPosNext(&walletdb);
630+
credit.strAccount = strTo;
631+
credit.nCreditDebit = nAmount;
632+
credit.nTime = nNow;
633+
credit.strOtherAccount = strFrom;
634+
credit.strComment = strComment;
635+
AddAccountingEntry(credit, walletdb);
636+
637+
if (!walletdb.TxnCommit())
638+
return false;
639+
640+
return true;
641+
}
642+
609643
void CWallet::MarkDirty()
610644
{
611645
{

src/wallet/wallet.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -718,6 +718,7 @@ class CWallet : public CCryptoKeyStore, public CValidationInterface
718718
* @return next transaction order id
719719
*/
720720
int64_t IncOrderPosNext(CWalletDB *pwalletdb = NULL);
721+
bool AccountMove(std::string strFrom, std::string strTo, CAmount nAmount, std::string strComment = "");
721722

722723
void MarkDirty();
723724
bool AddToWallet(const CWalletTx& wtxIn, bool fFromLoadWallet, CWalletDB* pwalletdb);

0 commit comments

Comments
 (0)