# packeta/1.4/src/Packetery/Module/Calculator.php

Packeta, version 1.4. 65 lines.

- Page: https://pluginprobe.com/plugins/packeta/1.4/code/src/Packetery/Module/Calculator.php
- Raw: https://pluginprobe.com/plugins/packeta/1.4/raw/src/Packetery/Module/Calculator.php
- Modified: 2022-05-04T14:45:32+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/packeta/1.4/code/src/Packetery/Module/Calculator.php#L10-L20`.

```php
<?php
/**
 * Class Calculator
 *
 * @package Packetery\Module\Weight
 */

declare( strict_types=1 );


namespace Packetery\Module;

use Packetery\Module\Options;

/**
 * Class Calculator
 *
 * @package Packetery\Module\Order
 */
class Calculator {

	/**
	 * Options provider.
	 *
	 * @var Options\Provider
	 */
	private $optionsProvider;

	/**
	 * Constructor.
	 *
	 * @param Options\Provider $optionsProvider Options provider.
	 */
	public function __construct( Options\Provider $optionsProvider ) {
		$this->optionsProvider = $optionsProvider;
	}

	/**
	 * Calculates order weight ignoring user specified weight.
	 *
	 * @param \WC_Order $order Order.
	 *
	 * @return float
	 */
	public function calculateOrderWeight( \WC_Order $order ): float {
		$weight = 0;
		foreach ( $order->get_items() as $item ) {
			$quantity = $item->get_quantity();
			$product  = $item->get_product();

			if ( is_object( $product ) && method_exists( $product, 'get_weight' ) ) {
				$productWeight = (float) $product->get_weight();
				$weight       += ( $productWeight * $quantity );
			}
		}

		$weightKg = \wc_get_weight( $weight, 'kg' );
		if ( $weightKg ) {
			$weightKg += $this->optionsProvider->getPackagingWeight();
		}

		return $weightKg;
	}
}

```
