133 #include "../core/stdafx.hpp"
141 #include "../ext/OTPayment.hpp"
143 #include "../core/recurring/OTPaymentPlan.hpp"
144 #include "../core/OTLedger.hpp"
145 #include "../core/OTLog.hpp"
155 if (m_str_amount.empty() ||
156 m_str_asset_id.empty())
165 return (!str_output.empty());
172 str_output =
"(empty subject)";
176 if (str_temp_contents.compare(0, 8,
"Subject:") == 0) {
178 str_temp_contents.replace(0, 8,
"");
185 std::string::size_type pos_start = 0;
186 std::string::size_type pos = str_contents.find(
"\r\n", pos_start);
188 if (std::string::npos == pos)
189 pos = str_contents.find(
"\n", pos_start);
190 if (std::string::npos != pos)
191 str_contents.erase(pos, std::string::npos);
196 return (!str_output.empty());
204 strDescription.
Set(
"(empty message)");
209 if (str_contents.compare(0, 8,
"Subject:") == 0) {
211 str_contents.replace(0, 8,
"");
213 bool bTruncated =
false;
215 if (str_contents.size() > 30) {
216 str_contents.erase(30, std::string::npos);
221 std::replace(str_contents.begin(), str_contents.end(),
'\r',
' ');
222 std::replace(str_contents.begin(), str_contents.end(),
'\n',
' ');
229 bTruncated ?
"..." :
"");
232 str_output = strDescription.
Get();
233 return (!str_output.empty());
237 OTString strDescription, strStatus, strKind;
241 strStatus =
"(EXPIRED)";
247 strStatus =
"(payment sent)";
260 strStatus =
"(EXPIRED)";
262 strStatus =
"(unpaid)";
264 strStatus =
"(pending)";
267 strStatus =
"(CANCELED)";
286 strDescription.
Format(
"%s%s%s %s", strKind.
Get(),
"transfer",
287 strTransNumForDisplay.
Get(), strStatus.
Get());
289 strDescription.
Format(
"%s%s%s %s", strKind.
Get(),
"payment",
290 strTransNumForDisplay.
Get(), strStatus.
Get());
292 std::string str_instrument_type;
295 str_instrument_type =
"transfer";
297 str_instrument_type =
"final receipt (closed)";
299 const int64_t lAmount =
306 str_instrument_type =
"failed trade";
308 str_instrument_type =
"market trade (receipt)";
312 const int64_t lAmount =
319 str_instrument_type =
"cheque";
324 str_instrument_type =
"invoice";
326 str_instrument_type =
"invoice (payment received)";
330 str_instrument_type =
"payment";
333 const int64_t lAmount =
336 if (!
IsCanceled() && (lAmount > 0)) strKind.
Set(
"received ");
338 str_instrument_type =
"recurring payment";
341 strDescription.
Format(
"%s%s%s %s", strKind.
Get(),
342 str_instrument_type.c_str(),
343 strTransNumForDisplay.
Get(), strStatus.
Get());
346 strDescription.
Format(
"%s%s%s %s", strKind.
Get(),
348 strTransNumForDisplay.
Get(), strStatus.
Get());
352 strDescription.
Format(
"%s %s%s%s", strStatus.
Get(), strKind.
Get(),
353 "transfer", strTransNumForDisplay.
Get());
355 strDescription.
Format(
"%s %s%s%s", strStatus.
Get(), strKind.
Get(),
356 "payment", strTransNumForDisplay.
Get());
359 std::string str_instrument_type;
363 str_instrument_type =
"transfer";
365 str_instrument_type =
"transfer (receipt)";
368 str_instrument_type =
"final receipt";
370 const int64_t lAmount =
376 str_instrument_type =
"failed trade";
378 str_instrument_type =
"market trade (receipt)";
381 const int64_t lAmount =
390 str_instrument_type =
"cheque";
392 str_instrument_type =
"cheque (receipt)";
398 str_instrument_type =
"invoice";
400 str_instrument_type =
401 "sent invoice (receipt: payment received)";
406 str_instrument_type =
"payment";
408 str_instrument_type =
"payment (receipt)";
411 const int64_t lAmount =
414 if (!
IsCanceled() && (lAmount > 0)) strKind.
Set(
"received ");
416 str_instrument_type =
"recurring payment (receipt)";
419 strDescription.
Format(
"%s %s%s%s", strStatus.
Get(), strKind.
Get(),
420 str_instrument_type.c_str(),
421 strTransNumForDisplay.
Get());
424 strDescription.
Format(
"%s %s%s%s", strStatus.
Get(), strKind.
Get(),
426 strTransNumForDisplay.
Get());
428 str_output = strDescription.
Get();
429 return (!str_output.empty());
534 if (
IsMail())
return true;
584 if (
IsMail())
return false;
610 if (!
IsCash())
return false;
627 if (
IsMail())
return false;
658 if (!m_bIsSpecialMail &&
659 (m_str_server_id.empty() || m_str_nym_id.empty())) {
660 otErr << __FUNCTION__ <<
": Error: missing server id ("
661 << m_str_server_id <<
") or nym id (" << m_str_nym_id <<
")\n";
664 std::string str_using_account;
668 if (m_str_account_id.empty()) {
669 otErr << __FUNCTION__
670 <<
": Error: missing account id for transfer or receipt.\n";
674 str_using_account = m_str_account_id;
677 str_using_account = m_str_nym_id;
688 if (!m_bIsSpecialMail) {
692 for (int32_t nIndex = 0; nIndex < nCount; ++nIndex) {
693 const std::string str_contents(
697 if (str_contents == m_str_contents)
700 m_str_nym_id, nIndex);
707 for (int32_t nIndex = 0; nIndex < nCount; ++nIndex) {
708 const std::string str_contents(
712 if (str_contents == m_str_contents)
737 if (0 == m_lTransactionNum) {
738 otErr << __FUNCTION__
739 <<
": Error: Transaction number is 0, in recordbox for "
740 "server id (" << m_str_server_id <<
"), nym id ("
741 << m_str_nym_id <<
"), acct id (" << str_using_account <<
")\n";
744 const OTIdentifier theServerID(m_str_server_id), theNymID(m_str_nym_id),
745 theAcctID(str_using_account);
750 std::unique_ptr<OTLedger> theRecordBoxAngel(pRecordbox);
751 if (
nullptr == pRecordbox) {
752 otErr << __FUNCTION__ <<
": Failed loading record box for server ID ("
753 << m_str_server_id <<
") nymID "
754 "(" << m_str_nym_id <<
") accountID ("
755 << str_using_account <<
")\n";
762 if ((-1) == nIndex) {
763 otErr << __FUNCTION__ <<
": Error: Unable to find transaction "
764 << m_lTransactionNum <<
" in recordbox "
765 "for server id (" << m_str_server_id
766 <<
"), nym id (" << m_str_nym_id <<
"), acct id ("
767 << str_using_account <<
")\n";
773 m_str_server_id, m_str_nym_id, str_using_account, nIndex,
778 return AcceptIncomingTransferOrReceipt();
782 return AcceptIncomingTransferOrReceipt();
784 bool OTRecord::AcceptIncomingTransferOrReceipt()
const
793 if (m_str_server_id.empty() || m_str_nym_id.empty() ||
794 m_str_account_id.empty()) {
795 otErr << __FUNCTION__ <<
": Error: missing server id ("
796 << m_str_server_id <<
") or nym id (" << m_str_nym_id
798 "acct id (" << m_str_account_id <<
")\n";
801 if (0 == m_lTransactionNum) {
802 otErr << __FUNCTION__
803 <<
": Error: Transaction number is 0, in asset "
804 "account inbox for server id (" << m_str_server_id
805 <<
"), nym id (" << m_str_nym_id <<
")\n";
808 const OTIdentifier theServerID(m_str_server_id), theNymID(m_str_nym_id),
809 theAcctID(m_str_account_id);
814 std::unique_ptr<OTLedger> theInboxAngel(pInbox);
815 if (
nullptr == pInbox) {
816 otErr << __FUNCTION__
817 <<
": Error: Unable to load asset account inbox for "
818 "server id (" << m_str_server_id <<
"), nym id ("
819 << m_str_nym_id <<
")\n";
824 int nIndex = pInbox->GetTransactionIndex(m_lTransactionNum);
826 if ((-1) == nIndex) {
827 otErr << __FUNCTION__ <<
": Error: Unable to find transaction "
828 << m_lTransactionNum <<
" in payment inbox "
829 "for server id (" << m_str_server_id
830 <<
"), nym id (" << m_str_nym_id <<
"), acct id ("
831 << m_str_account_id <<
")\n";
837 strIndices.Format(
"%d", nIndex);
838 const std::string str_indices(strIndices.Get());
842 return madeEasy.accept_inbox_items(m_str_account_id, 0, str_indices);
862 if (m_str_server_id.empty() || m_str_nym_id.empty()) {
863 otErr << __FUNCTION__ <<
": Error: missing server id ("
864 << m_str_server_id <<
") or nym id (" << m_str_nym_id
868 if (0 == m_lTransactionNum) {
869 otErr << __FUNCTION__
870 <<
": Error: Transaction number is 0, in payment "
871 "inbox for server id (" << m_str_server_id <<
"), nym id ("
872 << m_str_nym_id <<
")\n";
875 const OTIdentifier theServerID(m_str_server_id), theNymID(m_str_nym_id);
880 std::unique_ptr<OTLedger> theInboxAngel(pInbox);
881 if (
nullptr == pInbox) {
882 otErr << __FUNCTION__
883 <<
": Error: Unable to load payment inbox for server "
884 "id (" << m_str_server_id <<
"), nym id (" << m_str_nym_id
892 if ((-1) == nIndex) {
893 otErr << __FUNCTION__ <<
": Error: Unable to find transaction "
894 << m_lTransactionNum <<
" in "
895 "payment inbox for server id ("
896 << m_str_server_id <<
"), nym id (" << m_str_nym_id <<
")\n";
902 strIndices.
Format(
"%d", nIndex);
903 const std::string str_indices(strIndices.
Get());
906 if (!madeEasy.accept_from_paymentbox(str_into_acct, str_indices,
908 otErr << __FUNCTION__
909 <<
": Error while trying to accept this instrument.\n";
930 if (m_str_server_id.empty() || m_str_nym_id.empty()) {
931 otErr << __FUNCTION__ <<
": Error: missing server id ("
932 << m_str_server_id <<
") or nym id (" << m_str_nym_id
936 if (0 == m_lTransactionNum) {
937 otErr << __FUNCTION__ <<
": Error: Transaction number is 0, in "
938 "payment inbox for server id ("
939 << m_str_server_id <<
"), nym id (" << m_str_nym_id <<
")\n";
942 const OTIdentifier theServerID(m_str_server_id), theNymID(m_str_nym_id);
947 std::unique_ptr<OTLedger> theInboxAngel(pInbox);
948 if (
nullptr == pInbox) {
949 otErr << __FUNCTION__
950 <<
": Error: Unable to load payment inbox for server id ("
951 << m_str_server_id <<
"), nym id (" << m_str_nym_id <<
")\n";
958 if ((-1) == nIndex) {
959 otErr << __FUNCTION__ <<
": Error: Unable to find transaction "
960 << m_lTransactionNum <<
" in "
961 "payment inbox for server id ("
962 << m_str_server_id <<
"), nym id (" << m_str_nym_id <<
")\n";
968 strIndices.
Format(
"%d", nIndex);
969 const std::string str_indices(strIndices.
Get());
1004 return m_bIsVoucher;
1008 return m_bIsSmartContract;
1012 return m_bIsPaymentPlan;
1021 if (!CanCancelOutgoing())
return false;
1023 switch (GetRecordType()) {
1025 if (m_str_nym_id.empty()) {
1026 otErr << __FUNCTION__ <<
": Error: missing nym id (" << m_str_nym_id
1032 std::string str_using_acct;
1035 str_using_acct = m_str_account_id;
1038 str_using_acct = str_via_acct;
1040 if (str_using_acct.empty()) {
1041 otErr << __FUNCTION__ <<
": Error: Missing account ID (FAILURE)\n";
1044 if (0 == m_lTransactionNum) {
1047 std::string strOutpayment(
1049 m_str_nym_id, GetBoxIndex()));
1051 if (strOutpayment.empty()) {
1052 int32_t lIndex = GetBoxIndex();
1053 otErr << __FUNCTION__
1054 <<
": Error: Blank outpayment at index " << lIndex
1058 OTString strPayment(strOutpayment);
1062 int32_t lIndex = GetBoxIndex();
1063 otErr << __FUNCTION__
1064 <<
": Error: Invalid outpayment at index " << lIndex
1068 int64_t lTransNum = 0;
1072 int32_t lIndex = GetBoxIndex();
1074 strIndices.
Format(
"%d", lIndex);
1075 const std::string str_indices(strIndices.
Get());
1079 m_str_nym_id, str_using_acct, str_indices);
1082 otErr << __FUNCTION__
1083 <<
": Error: Transaction number is non-zero ("
1085 <<
"), for cash outgoing payment for nym id ("
1086 << m_str_nym_id <<
")\n";
1091 otErr << __FUNCTION__ <<
": Error: Transaction number is 0, "
1092 "for non-cash outgoing payment for "
1093 "nym id (" << m_str_nym_id <<
")\n";
1102 for (int32_t nIndex = 0; nIndex < nCount; ++nIndex) {
1103 std::string strOutpayment(
1107 if (strOutpayment.empty()) {
1108 otErr << __FUNCTION__ <<
": Error: Blank outpayment at index "
1112 OTString strPayment(strOutpayment);
1116 otErr << __FUNCTION__ <<
": Error: Invalid outpayment at index "
1120 int64_t lTransNum = 0;
1122 if (lTransNum == m_lTransactionNum)
1125 strIndices.
Format(
"%d", nIndex);
1126 const std::string str_indices(strIndices.
Get());
1130 m_str_nym_id, str_using_acct, str_indices);
1135 otErr << __FUNCTION__ <<
": Unexpected type: " << GetInstrumentType()
1144 return m_lTransactionNum;
1149 m_lTransactionNum = lTransNum;
1153 if (m_lTransNumForDisplay > 0)
return m_lTransNumForDisplay;
1155 return m_lTransactionNum;
1159 m_lTransNumForDisplay = lTransNum;
1163 m_bIsExpired =
true;
1167 m_bIsCanceled =
true;
1175 return m_bIsPending;
1179 return m_bIsOutgoing;
1187 return m_bIsReceipt;
1191 return !m_str_contents.empty();
1195 return !m_str_memo.empty();
1199 return m_bIsExpired;
1203 return m_bIsCanceled;
1207 return m_str_server_id;
1211 return m_str_asset_id;
1215 return m_str_currency_tla;
1219 return m_str_nym_id;
1223 return m_str_account_id;
1227 return m_str_other_nym_id;
1231 return m_str_other_account_id;
1243 return m_str_amount;
1255 return m_str_contents;
1259 return m_bIsSpecialMail;
1267 return m_str_my_address;
1271 return m_str_other_address;
1275 return m_str_msg_id;
1279 return m_str_msg_type;
1283 return m_str_msg_type_display;
1287 m_bIsSpecialMail = bIsSpecial;
1291 m_nMethodID = nMethodID;
1295 m_str_my_address = str_Address;
1299 m_str_other_address = str_Address;
1303 m_str_msg_id = str_id;
1307 m_str_msg_type = str_type;
1311 m_str_msg_type_display = str_type;
1319 m_nBoxIndex = nBoxIndex;
1323 m_str_memo = str_memo;
1327 m_str_other_nym_id = str_ID;
1331 m_str_other_account_id = str_ID;
1335 m_str_contents = str_contents;
1338 OTString strPayment(m_str_contents);
1342 switch (thePayment.
GetType()) {
1350 m_bIsVoucher =
true;
1353 m_bIsInvoice =
true;
1356 m_bIsPaymentPlan =
true;
1359 m_bIsSmartContract =
true;
1378 m_ValidFrom = tValidFrom;
1379 m_ValidTo = tValidTo;
1387 return m_ValidFrom < rhs.m_ValidFrom;
1390 const std::string& str_asset_id,
1391 const std::string& str_currency_tla,
1392 const std::string& str_nym_id,
1393 const std::string& str_account_id,
1394 const std::string& str_name,
const std::string& str_date,
1395 const std::string& str_amount,
const std::string& str_type,
1396 bool bIsPending,
bool bIsOutgoing,
bool bIsRecord,
1401 , m_str_server_id(str_server_id)
1402 , m_str_asset_id(str_asset_id)
1403 , m_str_currency_tla(str_currency_tla)
1404 , m_str_nym_id(str_nym_id)
1405 , m_str_account_id(str_account_id)
1406 , m_str_name(str_name)
1407 , m_str_date(str_date)
1408 , m_str_amount(str_amount)
1409 , m_str_type(str_type)
1410 , m_bIsSpecialMail(false)
1412 , m_lTransactionNum(0)
1413 , m_lTransNumForDisplay(0)
1414 , m_bIsPending(bIsPending)
1415 , m_bIsOutgoing(bIsOutgoing)
1416 , m_bIsRecord(bIsRecord)
1417 , m_bIsReceipt(bIsReceipt)
1418 , m_bIsPaymentPlan(false)
1419 , m_bIsSmartContract(false)
1420 , m_bIsVoucher(false)
1421 , m_bIsCheque(false)
1422 , m_bIsInvoice(false)
1424 , m_bIsExpired(false)
1425 , m_bIsCanceled(false)
1426 , m_RecordType(eRecordType)
int32_t GetMaximumNoPayments() const
EXPORT bool HasPaymentPlan() const
const time64_t & GetTimeBetweenPayments() const
EXPORT const std::string & GetMsgType() const
EXPORT int64_t GetPaymentPlanAmount() const
bool HasPaymentPlan() const
EXPORT OTLedger * LoadRecordBox(const OTIdentifier &SERVER_ID, const OTIdentifier &USER_ID, const OTIdentifier &ACCOUNT_ID) const
EXPORT bool IsCheque() const
EXPORT const std::string & GetCurrencyTLA() const
EXPORT time64_t GetValidFrom() const
EXPORT int32_t GetMaximumNoPayments() const
const time64_t & GetInitialPaymentDate() const
EXPORT bool CanAcceptIncoming() const
EXPORT time64_t GetTimeBetweenPayments() const
EXPORT int64_t GetInitialPaymentAmount() const
EXPORT OTLedger * LoadInbox(const OTIdentifier &SERVER_ID, const OTIdentifier &USER_ID, const OTIdentifier &ACCOUNT_ID) const
EXPORT bool CanDeleteRecord() const
EXPORT bool discard_incoming_payments(const std::string &SERVER_ID, const std::string &NYM_ID, const std::string &INDICES) const
static EXPORT std::string GetNym_OutmailContentsByIndex(const std::string &NYM_ID, const int32_t &nIndex)
EXPORT void SetContents(const std::string &str_contents)
EXPORT int64_t GetTransactionNum() const
EXPORT void SetTransactionNum(int64_t lTransNum)
EXPORT bool IsSpecialMail() const
const int64_t & GetInitialPaymentAmount() const
EXPORT const std::string & GetOtherAddress() const
static EXPORT OTAPI_Exec * It()
EXPORT bool DiscardOutgoingCash() const
EXPORT void SetSpecialMail(bool bIsSpecial=true)
static EXPORT time64_t GetTime()
EXPORT bool IsMail() const
static EXPORT bool ClearRecord(const std::string &SERVER_ID, const std::string &USER_ID, const std::string &ACCOUNT_ID, const int32_t &nIndex, const bool &bClearAll)
static EXPORT std::string GetNym_MailContentsByIndex(const std::string &NYM_ID, const int32_t &nIndex)
EXPORT OTLedger * LoadPaymentInbox(const OTIdentifier &SERVER_ID, const OTIdentifier &USER_ID) const
EXPORT bool IsOutgoing() const
EXPORT int64_t StringToLong(const std::string &strNumber) const
EXPORT bool GetOpeningNum(int64_t &lOutput, const OTIdentifier &theNymID) const
EXPORT const std::string & GetMsgTypeDisplay() const
EXPORT void SetDateRange(time64_t tValidFrom, time64_t tValidTo)
EXPORT const std::string & GetAccountID() const
EXPORT time64_t GetInitialPaymentDate() const
EXPORT bool IsCash() const
bool HasInitialPayment() const
EXPORT int32_t GetBoxIndex() const
EXPORT void SetMsgTypeDisplay(const std::string &str_type)
EXPORT bool FormatDescription(std::string &str_output) const
static EXPORT int32_t GetNym_OutpaymentsCount(const std::string &NYM_ID)
EXPORT void Format(const char *fmt,...)
EXPORT time64_t GetValidTo() const
EXPORT void SetTransNumForDisplay(int64_t lTransNum)
EXPORT bool HasMemo() const
EXPORT int32_t GetTransactionIndex(int64_t lTransactionNum)
EXPORT void SetOtherAddress(const std::string &str_Address)
EXPORT const std::string & GetOtherAccountID() const
EXPORT void Set(const char *data, uint32_t enforcedMaxLength=0)
EXPORT OTRecordType GetRecordType() const
static EXPORT bool Nym_RemoveOutpaymentsByIndex(const std::string &NYM_ID, const int32_t &nIndex)
EXPORT bool FormatMailSubject(std::string &str_output) const
EXPORT bool FormatShortMailDescription(std::string &str_output) const
const time64_t & GetPaymentPlanStartDate() const
EXPORT bool IsTransfer() const
EXPORT void SetMemo(const std::string &str_memo)
EXPORT bool HasInitialPayment() const
static EXPORT bool Nym_RemoveOutmailByIndex(const std::string &NYM_ID, const int32_t &nIndex)
EXPORT void SetMsgID(const std::string &str_id)
EXPORT bool IsRecord() const
EXPORT const std::string & GetAmount() const
EXPORT bool IsCanceled() const
EXPORT bool SetTempValues()
static EXPORT int32_t GetNym_OutmailCount(const std::string &NYM_ID)
EXPORT time64_t GetPaymentPlanStartDate() const
EXPORT const std::string & GetMemo() const
const int64_t & GetPaymentPlanAmount() const
EXPORT const char * Get() const
EXPORT void SetOtherNymID(const std::string &str_ID)
OTLOG_IMPORT OTLogStream otErr
EXPORT const std::string & GetAssetID() const
EXPORT const std::string & GetDate() const
EXPORT bool IsInvoice() const
EXPORT bool IsExpired() const
EXPORT void SetBoxIndex(int32_t nBoxIndex)
bool operator<(const OTRecord &rhs)
EXPORT bool FormatAmount(std::string &str_output) const
EXPORT bool IsValid() const
EXPORT const std::string & GetMsgID() const
EXPORT bool CanCancelOutgoing() const
EXPORT bool IsPaymentPlan() const
EXPORT bool AcceptIncomingInstrument(const std::string &str_into_acct) const
EXPORT std::string FormatAmount(const std::string &ASSET_TYPE_ID, const int64_t &THE_AMOUNT) const
EXPORT const std::string & GetContents() const
EXPORT bool HasContents() const
EXPORT const std::string & GetInstrumentType() const
EXPORT bool CanDiscardIncoming() const
EXPORT bool IsPending() const
EXPORT bool CanDiscardOutgoingCash() const
EXPORT bool IsReceipt() const
EXPORT bool AcceptIncomingTransfer() const
static EXPORT OT_API * OTAPI()
EXPORT int32_t GetMethodID() const
static EXPORT std::string & trim(std::string &str)
EXPORT bool DiscardIncoming() const
EXPORT void SetCanceled()
static EXPORT std::string GetNym_OutpaymentsContentsByIndex(const std::string &NYM_ID, const int32_t &nIndex)
EXPORT bool LoadContractFromString(const OTString &theStr)
EXPORT void SetMethodID(int32_t nMethodID)
EXPORT void SetAddress(const std::string &str_Address)
EXPORT const std::string & GetOtherNymID() const
EXPORT paymentType GetType() const
EXPORT bool AcceptIncomingReceipt() const
static EXPORT int32_t GetNym_MailCount(const std::string &NYM_ID)
EXPORT bool DeleteRecord() const
EXPORT int64_t GetTransNumForDisplay() const
EXPORT const std::string & GetAddress() const
EXPORT const std::string & GetName() const
EXPORT const std::string & GetNymID() const
EXPORT bool CancelOutgoing(std::string str_via_acct) const
EXPORT bool IsVoucher() const
static EXPORT bool Nym_RemoveMailByIndex(const std::string &NYM_ID, const int32_t &nIndex)
EXPORT bool cancel_outgoing_payments(const std::string &NYM_ID, const std::string &ACCOUNT_ID, const std::string &INDICES) const
EXPORT const std::string & GetServerID() const
EXPORT void SetMsgType(const std::string &str_type)
OTRecord(const std::string &str_server_id, const std::string &str_asset_id, const std::string &str_currency_tla, const std::string &str_nym_id, const std::string &str_account_id, const std::string &str_name, const std::string &str_date, const std::string &str_amount, const std::string &str_type, bool bIsPending, bool bIsOutgoing, bool bIsRecord, bool bIsReceipt, OTRecordType eRecordType)
EXPORT void SetOtherAccountID(const std::string &str_ID)
EXPORT bool IsContract() const