From 0740eca0ab4083334db4270740578d3ead834057 Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Thu, 5 Dec 2013 18:12:40 +0100 Subject: [PATCH] [IMPROVED] Added balance checks post payouts Fixes #904 once merged. --- cronjobs/auto_payout.php | 9 ++++++++- cronjobs/manual_payout.php | 6 ++++++ public/include/config/error_codes.inc.php | 1 + 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/cronjobs/auto_payout.php b/cronjobs/auto_payout.php index 239afdc1..88411934 100755 --- a/cronjobs/auto_payout.php +++ b/cronjobs/auto_payout.php @@ -83,8 +83,15 @@ if (! empty($users)) { $aMailData['amount'] = $dBalance; if (!$notification->sendNotification($aUserData['id'], 'auto_payout', $aMailData)) $log->logError('Failed to send notification email to users address: ' . $aMailData['email']); + // Recheck the users balance to make sure it is now 0 + $aBalance = $transaction->getBalance($aUserData['id']); + if ($aBalance['confirmed'] > 0) { + $log->logFatal('User has a remaining balance of ' . $aBalance['confirmed'] . ' after a successful payout!'); + $monitoring->endCronjob($cron_name, 'E0065', 1, true); + } } else { - $log->logError('Failed to add new Debit_AP transaction in database for user ' . $user->getUserName($aUserData['id'])); + $log->logFatal('Failed to add new Debit_AP transaction in database for user ' . $user->getUserName($aUserData['id'])); + $monitoring->endCronjob($cron_name, 'E0064', 1, true); } } } diff --git a/cronjobs/manual_payout.php b/cronjobs/manual_payout.php index b0c909ea..83e289b5 100755 --- a/cronjobs/manual_payout.php +++ b/cronjobs/manual_payout.php @@ -81,6 +81,12 @@ if (count($aPayouts) > 0) { $aMailData['payout_id'] = $aData['id']; if (!$notification->sendNotification($aData['account_id'], 'manual_payout', $aMailData)) $log->logError('Failed to send notification email to users address: ' . $aMailData['email']); + // Recheck the users balance to make sure it is now 0 + $aBalance = $transaction->getBalance($aUserData['id']); + if ($aBalance['confirmed'] > 0) { + $log->logFatal('User has a remaining balance of ' . $aBalance['confirmed'] . ' after a successful payout!'); + $monitoring->endCronjob($cron_name, 'E0065', 1, true); + } } else { $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/config/error_codes.inc.php b/public/include/config/error_codes.inc.php index 514f9be2..80078f3d 100644 --- a/public/include/config/error_codes.inc.php +++ b/public/include/config/error_codes.inc.php @@ -68,4 +68,5 @@ $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'; +$aErrorCodes['E0065'] = 'Remaining balance is greater than 0'; ?>