diff --git a/app/Export/CSV/ExpenseExport.php b/app/Export/CSV/ExpenseExport.php index 76f49d997b5b..0af4d3faf74d 100644 --- a/app/Export/CSV/ExpenseExport.php +++ b/app/Export/CSV/ExpenseExport.php @@ -259,10 +259,17 @@ class ExpenseExport extends BaseExport { $precision = $expense->currency->precision ?? 2; - $entity['expense.net_amount'] = round($expense->amount, $precision); - if($expense->calculate_tax_by_amount) { + $total_tax_amount = round($expense->tax_amount1 + $expense->tax_amount2 + $expense->tax_amount3, $precision); + + if($expense->uses_inclusive_taxes) { + $entity['expense.net_amount'] = round($expense->amount, $precision) - $total_tax_amount; + } + else { + $entity['expense.net_amount'] = round($expense->amount, $precision); + } + } else { if($expense->uses_inclusive_taxes) { diff --git a/app/Repositories/TaskRepository.php b/app/Repositories/TaskRepository.php index 9f880c92026e..5269ca541e69 100644 --- a/app/Repositories/TaskRepository.php +++ b/app/Repositories/TaskRepository.php @@ -261,7 +261,7 @@ class TaskRepository extends BaseRepository public function roundTimeLog(int $start_time, int $end_time): int { - if($this->task_round_to_nearest == 1 || $end_time == 0) { + if(in_array($this->task_round_to_nearest, [0,1]) || $end_time == 0) { return $end_time; } diff --git a/tests/Feature/TaskApiTest.php b/tests/Feature/TaskApiTest.php index 5a82a3b63781..801201b5876a 100644 --- a/tests/Feature/TaskApiTest.php +++ b/tests/Feature/TaskApiTest.php @@ -189,6 +189,22 @@ class TaskApiTest extends TestCase } + public function testTaskDivisionByZero() + { + $data = [ + "rate" => 0, + "time_log" => '[[1719350900,1719352700,"",true]]', + ]; + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->postJson("/api/v1/tasks", $data); + + $response->assertStatus(200); + + } + public function testRequestRuleParsing() {