From 3cfef9358013cd7a048634ec3922c4c1ea33b264 Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Wed, 17 Jul 2013 11:21:20 +0200 Subject: [PATCH] WiP to disable fees for specific accounts * added new account table column: `no_fee` * honor `no_fee` flag during payout process * added upgrade SQL file for this feature Address #260 --- cronjobs/pplns_payout.php | 2 +- cronjobs/pps_payout.php | 2 +- cronjobs/proportional_payout.php | 2 +- public/include/classes/share.class.php | 2 ++ sql/005_accounts_nofees.sql | 1 + 5 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 sql/005_accounts_nofees.sql diff --git a/cronjobs/pplns_payout.php b/cronjobs/pplns_payout.php index f7cdb6b2..66d714d3 100755 --- a/cronjobs/pplns_payout.php +++ b/cronjobs/pplns_payout.php @@ -130,7 +130,7 @@ foreach ($aAllBlocks as $iIndex => $aBlock) { $aData['fee' ] = 0; $aData['donation'] = 0; - if ($config['fees'] > 0) + if ($config['fees'] > 0 && $aData['no_fees'] == 0) $aData['fee'] = number_format(round($config['fees'] / 100 * $aData['payout'], 8), 8); // Calculate donation amount, fees not included $aData['donation'] = number_format(round($user->getDonatePercent($user->getUserId($aData['username'])) / 100 * ( $aData['payout'] - $aData['fee']), 8), 8); diff --git a/cronjobs/pps_payout.php b/cronjobs/pps_payout.php index 5e6f673a..fc66ecff 100755 --- a/cronjobs/pps_payout.php +++ b/cronjobs/pps_payout.php @@ -72,7 +72,7 @@ foreach ($aAccountShares as $aData) { $aData['donation'] = 0; // Calculate block fees - if ($config['fees'] > 0) + if ($config['fees'] > 0 && $aData['no_fees'] == 0) $aData['fee'] = number_format(round($config['fees'] / 100 * $aData['payout'], 8), 8); // Calculate donation amount $aData['donation'] = number_format(round($user->getDonatePercent($user->getUserId($aData['username'])) / 100 * ( $aData['payout'] - $aData['fee']), 8), 8); diff --git a/cronjobs/proportional_payout.php b/cronjobs/proportional_payout.php index 36a9a1fe..47e55dc3 100755 --- a/cronjobs/proportional_payout.php +++ b/cronjobs/proportional_payout.php @@ -66,7 +66,7 @@ foreach ($aAllBlocks as $iIndex => $aBlock) { $aData['fee' ] = 0; $aData['donation'] = 0; - if ($config['fees'] > 0) + if ($config['fees'] > 0 && $aData['no_fees'] == 0) $aData['fee'] = number_format(round($config['fees'] / 100 * $aData['payout'], 8), 8); // Calculate donation amount, fees not included $aData['donation'] = number_format(round($user->getDonatePercent($user->getUserId($aData['username'])) / 100 * ( $aData['payout'] - $aData['fee']), 8), 8); diff --git a/public/include/classes/share.class.php b/public/include/classes/share.class.php index 7bcc6d14..9fe1ff16 100644 --- a/public/include/classes/share.class.php +++ b/public/include/classes/share.class.php @@ -97,6 +97,7 @@ class Share { SELECT a.id, SUBSTRING_INDEX( s.username , '.', 1 ) as username, + a.no_fees AS no_fees, IFNULL(SUM(IF(our_result='Y', 1, 0)), 0) AS valid, IFNULL(SUM(IF(our_result='N', 1, 0)), 0) AS invalid FROM $this->table AS s @@ -135,6 +136,7 @@ class Share { SELECT a.id, SUBSTRING_INDEX( s.username , '.', 1 ) as account, + a.no_fees AS no_fees, IFNULL(SUM(IF(our_result='Y', 1, 0)), 0) AS valid, IFNULL(SUM(IF(our_result='N', 1, 0)), 0) AS invalid FROM $this->tableArchive AS s diff --git a/sql/005_accounts_nofees.sql b/sql/005_accounts_nofees.sql new file mode 100644 index 00000000..19d52e7e --- /dev/null +++ b/sql/005_accounts_nofees.sql @@ -0,0 +1 @@ +ALTER TABLE `accounts` ADD `no_fees` BOOLEAN NOT NULL DEFAULT FALSE AFTER `is_anonymous` ;