Skip to content

Instantly share code, notes, and snippets.

Created June 27, 2017 02:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/e00354ed337a8009a0577cf193ed659b to your computer and use it in GitHub Desktop.
Save anonymous/e00354ed337a8009a0577cf193ed659b to your computer and use it in GitHub Desktop.
<?php
error_reporting(E_ERROR | E_PARSE);
class WageReportPage extends Page
{
}
class WageReportPage_Controller extends Page_Controller
{
static $allowed_actions = array("GenerateWageReports");
public function GenerateWageReports()
{
if ($_SERVER['REMOTE_ADDR'] == "127.0.0.1") {
$month = Date("m", Page_Controller::StrToTimeFix("-1 Months"));
$year = Date("Y", Page_Controller::StrToTimeFix("-1 Months"));
$day = Date("t", Page_Controller::StrToTimeFix("-1 Months"));
//TODO: Remove Me
echo "Running Report for DATE: ".$day. "/".$month."/".$year."\n";
foreach (Team::get()->exclude(array("Name" => "Company Team 1"))->exclude(array("Name" => "WoW Team 1")) as $team) {
foreach ($team->Reps() as $rep) {
//only generate wage reports for non managers non exited reps
if (!$rep->Member()->Exited() && Manager::get()->Filter(array("MemberID" => $rep->MemberID))->Count() == 0 && $rep->Member()->DummyAccount == 0) {
$member = $rep->Member();
//Check to see if there is a wage report for this date already. If so, remove it.
if ($wr = WageReport::get()->Filter(array(
"MemberID" => $member->ID,
"Year" => $year,
"Month" => $month
))->First()
) {
$wr->delete();
}
//If there is no wage report for this member lets make a new one.
if (WageReport::get()->Filter(array(
"MemberID" => $member->ID,
"Year" => $year,
"Month" => $month
))->Count() == 0
) {
$wr = WageReport::create();
SalesFiguresPage_Controller::GetStatistics($member, $year, $month, $day, null, 8);
$wr->TargetBonus = $member->tb > 0 ? $member->tb : 0;
$wr->TargetBonusPayed = $member->MonthTargetPercent >= 100 || $member->YTDPercent >= 100 ? $month : 0;
$wr->BountyBonus = $member->BountyBonus;
$conv = 0;
$mo = ManageObject::get()->Filter(array(
"ObjectID" => $rep->ID,
"ManagementType" => "Rep"
))->First();
if ($sf = DW_SalesFigures::get()->Filter(array(
"ManageObjectID" => $mo->ID,
"Year" => $year,
"Month" => $month
))->Sort(array("Day" => "Desc"))->First()
) {
if ($sf->MTDTurnover < 15000) {
$conv = 0;
} elseif ($sf->MTDTurnover < 20000) {
$conv = 0.35;
} elseif ($sf->MTDTurnover < 25000) {
$conv = 0.45;
} elseif ($sf->MTDTurnover < 30000) {
$conv = 0.55;
} elseif ($sf->MTDTurnover < 35000) {
$conv = 0.65;
} elseif ($sf->MTDTurnover < 40000) {
$conv = 0.75;
} elseif ($sf->MTDTurnover < 45000) {
$conv = 1;
} elseif ($sf->MTDTurnover < 50000) {
$conv = 1.1;
} elseif ($sf->MTDTurnover >= 50000) {
$conv = 1.2;
}
}
$wr->Commission = $member->Commission * $conv;
$wr->CommissionPool = $member->Commission;
$wr->StatusBonus = $member->StatusBonus;
$wr->Turnover = 1;
//set up payment
$payment = 0;
if ($member->MonthTargetPercent >= 100) {//if made mtd target
$payment += $wr->TargetBonus;
$wr->TargetBonusPayment += $wr->TargetBonus;
};
if ($member->MonthTargetPercent < 100 && $member->YTDPercent >= 100) {//if not made mtd target but made ytd target
$payment += $wr->TargetBonus;
$wr->CatchupBonusPayment += $wr->TargetBonus;//add target bonus to catchup bonus
};
/* if ($member->YTDPercent >= 100) {
//catch up on any lost target bonuses
if ($member->WageReports()->Count() > 0) {
foreach ($member->WageReports()->Filter(array("Year" => $year)) as $wri) {
if ($wri->Month <= $month && $wri->Year == $year && ($wri->TargetBonusPayed == 0 || $wri->TargetBonusPayed == $month)) {
$payment += $wri->TargetBonus;
$wr->CatchupBonusPayment += $wri->TargetBonus;
$wri->TargetBonusPayed = $month;
$wri->write();
}
}
}
}*/
$wr->Month = $month;
$wr->Year = $year;
$wr->MemberID = $member->ID;
$wr->Test="Hello, World!";
$wr->write();
}
}
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment