From e42fdc4c1526b59c5e527ee6b8d5bb6b8a5e5f85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Munsch?= Date: Tue, 23 May 2023 10:17:42 +0200 Subject: [PATCH] Fix tax calculation for order refund --- app/Lib/Helpers/ToolboxHelper.php | 7 +++++-- app/Models/Shop/Order.php | 18 +++++++++++++----- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/app/Lib/Helpers/ToolboxHelper.php b/app/Lib/Helpers/ToolboxHelper.php index 9644dbc..dca6f2a 100644 --- a/app/Lib/Helpers/ToolboxHelper.php +++ b/app/Lib/Helpers/ToolboxHelper.php @@ -592,8 +592,11 @@ class ToolboxHelper 'date' => $date, 'documentType' => $documentType, 'basket' => $invoiceBasketItems, - 'totalTtc' => $invoiceBasketItems->sum('subtotal'), - 'totalTaxes' => $invoiceBasketItems->sum('tax') + 'totalTtc' => \intval($invoiceBasketItems->sum('subtotal')), + 'totalTaxes' => \intval($invoiceBasketItems->sum(function (object $basketItem) { + return ($basketItem->subtotal / abs($basketItem->subtotal)) * + $basketItem->qty * $basketItem->tax; + })) ], [], [ diff --git a/app/Models/Shop/Order.php b/app/Models/Shop/Order.php index 5a6bf8b..e122603 100644 --- a/app/Models/Shop/Order.php +++ b/app/Models/Shop/Order.php @@ -425,10 +425,17 @@ class Order extends Model */ public function getItemForOrderCancelling(): Collection { - $remainingToRefund = \intval($this->transactions() - ->where('id', '!=', $this->id)->pluck('items')->sum(function ($items) { - return \collect($items)->sum('subtotal'); - })); + $itemsToRefund = $this->transactions()->where('id', '!=', $this->id)->pluck('items'); + $remainingToRefund = \intval($itemsToRefund->sum(function ($items) { + return \collect($items)->sum('subtotal'); + })); + $remainingTaxToRefund = \intval($itemsToRefund->sum(function ($items) { + return \collect($items)->sum(function ($basketItem) { + $basketItem = (object)$basketItem; + return ($basketItem->subtotal / abs($basketItem->subtotal)) * + $basketItem->qty * $basketItem->tax; + }); + })); // * Créer un dummy product pour représenter la transaction. $cartItemOptions = \array_merge(Controller::$cartItemOptionsSkel, [ @@ -441,7 +448,7 @@ class Order extends Model 'name' => trans('Remboursement complet'), 'price' => $remainingToRefund, 'weight' => 0, - 'options' => $cartItemOptions + 'options' => $cartItemOptions, ]); $cartItem->setQuantity(1); @@ -450,6 +457,7 @@ class Order extends Model $basketItem->price = $basketItem->price * -1; $basketItem->options->price_ttc = $basketItem->options->price_ttc * -1; $basketItem->subtotal = $basketItem->subtotal * -1; + $basketItem->tax = $remainingTaxToRefund * -1; return collect()->add($basketItem)->values(); }