Source of file CheckMemberRewardPoints.php
Size: 5,765 Bytes - Last Modified: 2021-12-23T10:41:13+00:00
/var/www/docs.ssmods.com/process/src/code/tasks/CheckMemberRewardPoints.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 | <?php class CheckMemberRewardPoints extends BuildTask { public function getTitle() { return 'Check points for all members'; } public function getDescription() { return 'Goes through all customers and checks their orders and the points gained / points used.'; } public function run($request) { if ($request->Param("ID") =="reset") { $reset = true; echo "<h1 style=\"color: red\">RESETTING MEMBER POINTS!</h1>"; } else { $reset = false; echo "<h1>MORE OPTIONS</h1>"; echo "<a href=\"reset/\">Reset points for all members</a>"; } $members = DataObject::get("Member", "", "Member.Email", "INNER JOIN \"Order\" ON \"Order\".\"MemberID\" = \"Member\".\"ID\""); foreach ($members as $member) { echo " <h3>$member->FirstName $member->Surname, $member->Email: $member->PointsBalance</h3> <style> td {text-align: right; font-size: 10px;} th {font-size: 10px} </style> <table border=\"1\"> <thead> <tr> <th scope=\"col\" style=\"width: 20em\">ORDER</th> <th scope=\"col\" style=\"width: 5em;\">GAINED</th> <th scope=\"col\" style=\"width: 5em;\">USED</th> <th scope=\"col\" style=\"width: 5em;\">CHANGE</th> <th scope=\"col\" style=\"width: 5em;\">RUNNING TOTAL</th> <th scope=\"col\" style=\"width: 60em;\">NOTES</th> </tr> </thead> <tbody>"; $orders = DataObject::get( "Order", "\"MemberID\" = ".$member->ID." AND \"CancelledByID\" = 0 OR \"CancelledByID\" IS NULL", " OrderStatusLog_Submitted.ID ASC", " INNER JOIN OrderStatusLog ON OrderStatusLog.OrderID = \"Order\".\"ID\" INNER JOIN OrderStatusLog_Submitted` ON OrderStatusLog.ID = OrderStatusLog_Submitted.ID " ); $memberTotal = 0; $sumPointsTotal = 0; $sumRewardsTotal = 0; if ($reset) { $member->PointsBalance = 0; $member->write(); } if ($orders) { foreach ($orders as $order) { if ($order->IsSubmitted()) { $note = " "; if (round($order->PointsTotal, 2) != round($order->CalculatePointsTotal(), 2)) { $note .= " <span style=\"color: red\">ERROR, CALCULATED POINTS ADDED: ".$order->CalculatePointsTotal().", difference: ".($order->PointsTotal - $order->CalculatePointsTotal())."</span>"; if ($order->PointsTotal == 0 && $order->CalculatePointsTotal() > 0) { $order->PointsTotal = $order->CalculatePointsTotal(); //DB::query("UPDATE \"Order\" SET \"PointsTotal\" = ".$order->CalculateRewardsTotal(). " WHERE \"Order\".\"ID\" = ".$order->ID); //$order->write(); } } if (round($order->RewardsTotal, 2) != round($order->CalculateRewardsTotal(), 2)) { $note .= " <span style=\"color: red\">ERROR, CALCULATED POINTS USED: ".$order->CalculateRewardsTotal().", difference: ".($order->RewardsTotal - $order->CalculateRewardsTotal())."</span>"; if ($order->RewardsTotal == 0 && $order->CalculateRewardsTotal() > 0) { $order->RewardsTotal = $order->CalculateRewardsTotal(); //DB::query("UPDATE \"Order\" SET \"RewardsTotal\" = ".$order->CalculateRewardsTotal(). " WHERE \"Order\".\"ID\" = ".$order->ID); //$order->write(); } } $change = $order->PointsTotal - $order->RewardsTotal; $sumPointsTotal += $order->PointsTotal; $sumRewardsTotal += $order->RewardsTotal; $memberTotal += $change; echo " <tr> <td>#".$order->ID." ".$order->LastEdited."</td> <td>".$order->PointsTotal."</td> <td>".$order->RewardsTotal."</td> <td>".$change."</td> <td>".$memberTotal."</td> <td>".$note."</td> </tr>"; } } $note = " "; $difference = 0; if ($member->PointsBalance != $memberTotal) { $difference = $member->PointsBalance - $memberTotal; $note = "<span style=\"color: red\">ERROR IN POINTS RECORDED (".$member->PointsBalance.") AND CALCULATED (".$memberTotal."), difference ".$difference."</span>"; } echo " <tr> <th scope=\"col\">TODAY:</th> <td><strong>$sumPointsTotal</strong></td> <td><strong>$sumRewardsTotal</strong></td> <td><strong>".($sumPointsTotal - $sumRewardsTotal)."</strong></td> <td><strong>$memberTotal</strong></td> <td><strong>$note</strong></td> </tr>"; } echo "</tbody></table>"; if ($reset) { $member->PointsBalance = $memberTotal; $member->write(); } } } } class CheckMemberRewardPoints_AdminEXT extends Extension { public static $allowed_actions = array('checkmemberrewardpoints' => true); public function updateEcommerceDevMenuRegularMaintenance($tasks) { $tasks[] = 'checkmemberrewardpoints'; return $tasks; } public function checkmemberrewardpoints($request) { $this->owner->runTask("CheckMemberRewardPoints", $request); } } |