/** * @test */ public function actual_gp() { $currentMonthDespatch = DespatchLogEntry::currentMonth()->get(); $gpCalculator = new GpIndicatorsCalculator(); $this->assertInstanceOf(GpIndicatorsCalculator::class, $gpCalculator, "GP Calculator Object"); $globalTarget = GlobalVariable::first()->monthly_gp_target; $gpTarget = $gpCalculator->target(); $actualGpCalc = 0; $actualTurnOverCalc = 0; foreach ($currentMonthDespatch as $entry) { $this->assertInstanceOf(DespatchLogEntry::class, $entry); $actualGpCalc += $entry->gp_contribution; $this->assertInternalType('float', $entry->gp_contribution); $actualTurnOverCalc += $entry->selling_price * $entry->net_weight; $this->assertInternalType('float', $entry->selling_price); } $this->assertEquals(round($actualGpCalc), $gpCalculator->monthActualGp(), "Current Month Actual"); $this->assertEquals(round($actualTurnOverCalc), $gpCalculator->monthActualTurnOver(), "Current Month Actual Turn Over"); $this->assertEquals(round($actualGpCalc / $gpTarget * 100), round($gpCalculator->monthActualPercentage()), "Current Month Actual Percentage"); $this->assertEquals(round($actualGpCalc / $globalTarget * 100), round($gpCalculator->monthProductionAchievedPercentage()), "Current Month Production Target Percentage"); }