diff --git a/cronjobs/auto_payout.php b/cronjobs/auto_payout.php
index c766232d..239afdc1 100755
--- a/cronjobs/auto_payout.php
+++ b/cronjobs/auto_payout.php
@@ -66,14 +66,14 @@ if (! empty($users)) {
// Send balance, fees are reduced later by RPC Server
try {
- $bitcoin->sendtoaddress($aUserData['coin_address'], $dBalance - $config['txfee']);
+ $txid = $bitcoin->sendtoaddress($aUserData['coin_address'], $dBalance - $config['txfee']);
} catch (BitcoinClientException $e) {
$log->logError('Failed to send requested balance to coin address, please check payout process');
continue;
}
// Create transaction record
- if ($transaction->addTransaction($aUserData['id'], $dBalance - $config['txfee'], 'Debit_AP', NULL, $aUserData['coin_address']) && $transaction->addTransaction($aUserData['id'], $config['txfee'], 'TXFee', NULL, $aUserData['coin_address'])) {
+ if ($transaction->addTransaction($aUserData['id'], $dBalance - $config['txfee'], 'Debit_AP', NULL, $aUserData['coin_address'], $txid) && $transaction->addTransaction($aUserData['id'], $config['txfee'], 'TXFee', NULL, $aUserData['coin_address'])) {
// Mark all older transactions as archived
if (!$transaction->setArchived($aUserData['id'], $transaction->insert_id))
$log->logError('Failed to mark transactions for user #' . $aUserData['id'] . ' prior to #' . $transaction->insert_id . ' as archived');
diff --git a/cronjobs/manual_payout.php b/cronjobs/manual_payout.php
index dd24f5b2..b0c909ea 100755
--- a/cronjobs/manual_payout.php
+++ b/cronjobs/manual_payout.php
@@ -64,13 +64,13 @@ if (count($aPayouts) > 0) {
continue;
}
try {
- $bitcoin->sendtoaddress($aData['coin_address'], $dBalance - $config['txfee']);
+ $txid = $bitcoin->sendtoaddress($aData['coin_address'], $dBalance - $config['txfee']);
} catch (BitcoinClientException $e) {
$log->logError('Failed to send requested balance to coin address, please check payout process');
continue;
}
- if ($transaction->addTransaction($aData['account_id'], $dBalance - $config['txfee'], 'Debit_MP', NULL, $aData['coin_address']) && $transaction->addTransaction($aData['account_id'], $config['txfee'], 'TXFee', NULL, $aData['coin_address'])) {
+ if ($transaction->addTransaction($aData['account_id'], $dBalance - $config['txfee'], 'Debit_MP', NULL, $aData['coin_address'], $txid) && $transaction->addTransaction($aData['account_id'], $config['txfee'], 'TXFee', NULL, $aData['coin_address'])) {
// Mark all older transactions as archived
if (!$transaction->setArchived($aData['account_id'], $transaction->insert_id))
$log->logError('Failed to mark transactions for #' . $aData['account_id'] . ' prior to #' . $transaction->insert_id . ' as archived');
@@ -82,7 +82,8 @@ if (count($aPayouts) > 0) {
if (!$notification->sendNotification($aData['account_id'], 'manual_payout', $aMailData))
$log->logError('Failed to send notification email to users address: ' . $aMailData['email']);
} else {
- $log->logError('Failed to add new Debit_MP transaction in database for user ' . $user->getUserName($aData['account_id']));
+ $log->logFatal('Failed to add new Debit_MP transaction in database for user ' . $user->getUserName($aData['account_id']));
+ $monitoring->endCronjob($cron_name, 'E0064', 1, true);
}
}
diff --git a/public/include/classes/transaction.class.php b/public/include/classes/transaction.class.php
index 7f5581c0..432dee46 100644
--- a/public/include/classes/transaction.class.php
+++ b/public/include/classes/transaction.class.php
@@ -18,9 +18,9 @@ class Transaction extends Base {
* @param coin_address string Coin address for this transaction [optional]
* @return bool
**/
- public function addTransaction($account_id, $amount, $type='Credit', $block_id=NULL, $coin_address=NULL) {
- $stmt = $this->mysqli->prepare("INSERT INTO $this->table (account_id, amount, block_id, type, coin_address) VALUES (?, ?, ?, ?, ?)");
- if ($this->checkStmt($stmt) && $stmt->bind_param("idiss", $account_id, $amount, $block_id, $type, $coin_address) && $stmt->execute()) {
+ public function addTransaction($account_id, $amount, $type='Credit', $block_id=NULL, $coin_address=NULL, $txid=NULL) {
+ $stmt = $this->mysqli->prepare("INSERT INTO $this->table (account_id, amount, block_id, type, coin_address, txid) VALUES (?, ?, ?, ?, ?, ?)");
+ if ($this->checkStmt($stmt) && $stmt->bind_param("idisss", $account_id, $amount, $block_id, $type, $coin_address, $txid) && $stmt->execute()) {
$this->insert_id = $stmt->insert_id;
return true;
}
@@ -109,6 +109,7 @@ class Transaction extends Base {
t.amount AS amount,
t.coin_address AS coin_address,
t.timestamp AS timestamp,
+ t.txid AS txid,
b.height AS height,
b.blockhash AS blockhash,
b.confirmations AS confirmations
diff --git a/public/include/config/error_codes.inc.php b/public/include/config/error_codes.inc.php
index 518bed00..514f9be2 100644
--- a/public/include/config/error_codes.inc.php
+++ b/public/include/config/error_codes.inc.php
@@ -67,4 +67,5 @@ $aErrorCodes['E0060'] = 'Failed to add new worker';
$aErrorCodes['E0061'] = 'Failed to delete worker';
$aErrorCodes['E0062'] = 'Block has no share_id, not running payouts';
$aErrorCodes['E0063'] = 'Upstream share already assigned to previous block';
+$aErrorCodes['E0064'] = 'Failed to create transaction record';
?>
diff --git a/public/templates/mpos/account/transactions/default.tpl b/public/templates/mpos/account/transactions/default.tpl
index a761f825..2b936780 100644
--- a/public/templates/mpos/account/transactions/default.tpl
+++ b/public/templates/mpos/account/transactions/default.tpl
@@ -68,14 +68,15 @@
- | TX # |
- Account |
- Date |
- TX Type |
+ ID |
+ Account |
+ Date |
+ TX Type |
Status |
- Payment Address |
- Block # |
- Amount |
+ Payment Address |
+ TX # |
+ Block # |
+ Amount |
@@ -97,7 +98,8 @@
{else if $TRANSACTIONS[transaction].confirmations == -1}Orphaned
{else}Unconfirmed{/if}
- {$TRANSACTIONS[transaction].coin_address} |
+ {$TRANSACTIONS[transaction].coin_address|truncate:20:"...":true:true} |
+ {$TRANSACTIONS[transaction].txid|truncate:20:"...":true:true} |
{if $TRANSACTIONS[transaction].height == 0}n/a{else}{$TRANSACTIONS[transaction].height}{/if} |
{$TRANSACTIONS[transaction].amount|number_format:"8"} |
diff --git a/public/templates/mpos/admin/transactions/default.tpl b/public/templates/mpos/admin/transactions/default.tpl
index 9a88324f..364fa511 100644
--- a/public/templates/mpos/admin/transactions/default.tpl
+++ b/public/templates/mpos/admin/transactions/default.tpl
@@ -75,14 +75,15 @@
- | TX # |
- Account |
- Date |
- TX Type |
+ ID |
+ Account |
+ Date |
+ TX Type |
Status |
- Payment Address |
- Block # |
- Amount |
+ Payment Address |
+ TX # |
+ Block # |
+ Amount |
@@ -104,7 +105,8 @@
{else if $TRANSACTIONS[transaction].confirmations == -1}Orphaned
{else}Unconfirmed{/if}
- {$TRANSACTIONS[transaction].coin_address} |
+ {$TRANSACTIONS[transaction].coin_address|truncate:20:"...":true:true} |
+ {$TRANSACTIONS[transaction].txid|truncate:20:"...":true:true} |
{if $TRANSACTIONS[transaction].height == 0}n/a{else}{/if}{$TRANSACTIONS[transaction].height} |
{$TRANSACTIONS[transaction].amount|number_format:"8"} |
diff --git a/sql/006_txid_transactions.sql b/sql/006_txid_transactions.sql
new file mode 100644
index 00000000..862b4d10
--- /dev/null
+++ b/sql/006_txid_transactions.sql
@@ -0,0 +1 @@
+ALTER TABLE `transactions` ADD `txid` VARCHAR( 256 ) NULL DEFAULT NULL AFTER `timestamp` ;