140 #include <irrxml/irrXML.hpp>
148 void OTCheque::UpdateContents()
150 OTString ASSET_TYPE_ID(GetAssetID()), SERVER_ID(GetServerID()),
151 SENDER_ACCT_ID(GetSenderAcctID()), SENDER_USER_ID(GetSenderUserID()),
152 RECIPIENT_USER_ID(GetRecipientUserID()),
153 REMITTER_USER_ID(GetRemitterUserID()),
154 REMITTER_ACCT_ID(GetRemitterAcctID());
160 m_xmlUnsigned.Release();
162 m_xmlUnsigned.Concatenate(
"<?xml version=\"%s\"?>\n\n",
"1.0");
164 m_xmlUnsigned.Concatenate(
165 "<cheque\n version=\"%s\"\n"
167 " assetTypeID=\"%s\"\n"
168 " transactionNum=\"%lld\"\n"
170 " senderAcctID=\"%s\"\n"
171 " senderUserID=\"%s\"\n"
172 " hasRecipient=\"%s\"\n"
173 " recipientUserID=\"%s\"\n"
174 " hasRemitter=\"%s\"\n"
175 " remitterUserID=\"%s\"\n"
176 " remitterAcctID=\"%s\"\n"
177 " validFrom=\"%" PRId64
"\"\n"
178 " validTo=\"%" PRId64
"\""
180 m_strVersion.Get(), m_lAmount, ASSET_TYPE_ID.Get(), GetTransactionNum(),
181 SERVER_ID.Get(), SENDER_ACCT_ID.Get(), SENDER_USER_ID.Get(),
182 (m_bHasRecipient ?
"true" :
"false"),
183 (m_bHasRecipient ? RECIPIENT_USER_ID.Get() :
""),
184 (m_bHasRemitter ?
"true" :
"false"),
185 (m_bHasRemitter ? REMITTER_USER_ID.Get() :
""),
186 (m_bHasRemitter ? REMITTER_ACCT_ID.
Get() :
""), lFrom, lTo);
188 if (m_strMemo.Exists() && m_strMemo.GetLength() > 2) {
190 m_xmlUnsigned.Concatenate(
"<memo>\n%s</memo>\n\n", ascMemo.
Get());
193 m_xmlUnsigned.Concatenate(
"</cheque>\n");
199 int32_t nReturnVal = 0;
212 if (!strcmp(
"cheque", xml->getNodeName())) {
213 OTString strHasRecipient = xml->getAttributeValue(
"hasRecipient");
214 m_bHasRecipient = strHasRecipient.
Compare(
"true");
216 OTString strHasRemitter = xml->getAttributeValue(
"hasRemitter");
217 m_bHasRemitter = strHasRemitter.
Compare(
"true");
219 m_strVersion = xml->getAttributeValue(
"version");
220 m_lAmount = atol(xml->getAttributeValue(
"amount"));
222 SetTransactionNum(atol(xml->getAttributeValue(
"transactionNum")));
224 const OTString str_valid_from = xml->getAttributeValue(
"validFrom");
225 const OTString str_valid_to = xml->getAttributeValue(
"validTo");
230 OTString strAssetTypeID(xml->getAttributeValue(
"assetTypeID")),
231 strServerID(xml->getAttributeValue(
"serverID")),
232 strSenderAcctID(xml->getAttributeValue(
"senderAcctID")),
233 strSenderUserID(xml->getAttributeValue(
"senderUserID")),
234 strRecipientUserID(xml->getAttributeValue(
"recipientUserID")),
235 strRemitterUserID(xml->getAttributeValue(
"remitterUserID")),
236 strRemitterAcctID(xml->getAttributeValue(
"remitterAcctID"));
238 OTIdentifier ASSET_ID(strAssetTypeID), SERVER_ID(strServerID),
239 SENDER_ACCT_ID(strSenderAcctID), SENDER_USER_ID(strSenderUserID);
241 SetAssetID(ASSET_ID);
242 SetServerID(SERVER_ID);
243 SetSenderAcctID(SENDER_ACCT_ID);
244 SetSenderUserID(SENDER_USER_ID);
248 m_RECIPIENT_USER_ID.SetString(strRecipientUserID);
250 m_RECIPIENT_USER_ID.Release();
253 if (m_bHasRemitter) {
254 m_REMITTER_USER_ID.SetString(strRemitterUserID);
255 m_REMITTER_ACCT_ID.SetString(strRemitterAcctID);
258 m_REMITTER_USER_ID.Release();
259 m_REMITTER_ACCT_ID.Release();
262 otInfo <<
"\n\nCheque Amount: " << m_lAmount
263 <<
". Transaction Number: " << m_lTransactionNum
264 <<
"\n Valid From: " << str_valid_from.
ToLong()
265 <<
"\n Valid To: " << str_valid_to.
ToLong()
266 <<
"\n AssetTypeID: " << strAssetTypeID
267 <<
"\n ServerID: " << strServerID
269 " senderAcctID: " << strSenderAcctID
270 <<
"\n senderUserID: " << strSenderUserID <<
"\n "
272 << (m_bHasRecipient ?
"Yes" :
"No")
273 <<
". If yes, UserID of Recipient: " << strRecipientUserID
275 " Has Remitter? " << (m_bHasRemitter ?
"Yes" :
"No")
276 <<
". If yes, UserID/Acct of Remitter: " << strRemitterUserID
277 <<
" / " << strRemitterAcctID <<
"\n";
281 else if (!strcmp(
"memo", xml->getNodeName())) {
282 if (!OTContract::LoadEncodedTextField(xml, m_strMemo)) {
283 otErr <<
"Error in OTCheque::ProcessXMLNode: memo field without "
295 void OTCheque::CancelCheque()
322 bool OTCheque::IssueCheque(
323 const int64_t& lAmount,
const int64_t& lTransactionNum,
340 SetValidFrom(VALID_FROM);
341 SetValidTo(VALID_TO);
343 SetTransactionNum(lTransactionNum);
345 SetSenderAcctID(SENDER_ACCT_ID);
346 SetSenderUserID(SENDER_USER_ID);
348 if (
nullptr == pRECIPIENT_USER_ID) {
349 m_bHasRecipient =
false;
350 m_RECIPIENT_USER_ID.Release();
353 m_bHasRecipient =
true;
354 m_RECIPIENT_USER_ID = *pRECIPIENT_USER_ID;
357 m_bHasRemitter =
false;
359 if (m_lAmount < 0) m_strContractType.Set(
"INVOICE");
364 void OTCheque::InitCheque()
366 m_strContractType.Set(
"CHEQUE");
369 m_bHasRecipient =
false;
370 m_bHasRemitter =
false;
376 , m_bHasRecipient(false)
377 , m_bHasRemitter(false)
385 , m_bHasRecipient(false)
386 , m_bHasRemitter(false)
virtual bool SaveContractWallet(std::ofstream &ofs) const
EXPORT int64_t ToLong() const
time64_t OTTimeGetTimeFromSeconds(int64_t seconds)
EXPORT bool Compare(const char *compare) const
OTLOG_IMPORT OTLogStream otInfo
EXPORT const char * Get() const
OTLOG_IMPORT OTLogStream otErr
OTIdentifier m_RECIPIENT_USER_ID
int64_t OTTimeGetSecondsFromTime(time64_t time)
virtual EXPORT void Release()
virtual EXPORT void Release()
virtual EXPORT ~OTCheque()