public function recalculate(): self 	{ 		$products = $this->products()->with('product.item')->get();  		$totalPrice = $products->sum(static fn (OrderProduct $orderProduct): float => $orderProduct->quantity * $orderProduct->price);  		$totalWeight = $products->sum(static fn (OrderProduct $orderProduct): float => $orderProduct->quantity * ($orderProduct->product?->getWeight() ?? 0));  		$deliveryPricelist = DeliveryPricelist::whereJsonContains('countries', $this->delivery_country)->first() ?? DeliveryPricelist::whereNull('countries')->first();  		$deliveryPrice = $deliveryPricelist?->getPriceForWeight($totalWeight) ?? 0;  		$this->update([ 			'total_price' => round($totalPrice + $deliveryPrice, 2), 			'tax' => round($totalPrice - ($totalPrice / ((setting('tax') / 100) + 1)), 2), 			'tax_percent' => setting('tax'), 			'total_weight' => $totalWeight, 			'delivery_price' => round($deliveryPrice, 2), 			'delivery_pricelist_id' => $deliveryPricelist?->getKey(), 		]);  		return $this; 	}