# tier-pricing-table/2.3.4/src/Integrations/Plugins/WooCommerceProductAddons.php

Tiered Pricing Table for WooCommerce, version 2.3.4. 72 lines.

- Page: https://pluginprobe.com/plugins/tier-pricing-table/2.3.4/code/src/Integrations/Plugins/WooCommerceProductAddons.php
- Raw: https://pluginprobe.com/plugins/tier-pricing-table/2.3.4/raw/src/Integrations/Plugins/WooCommerceProductAddons.php
- Modified: 2020-02-08T17:01:28+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/tier-pricing-table/2.3.4/code/src/Integrations/Plugins/WooCommerceProductAddons.php#L10-L20`.

```php
<?php namespace TierPricingTable\Integrations\Plugins;

class WooCommerceProductAddons {

	/**
	 * WooCommerceProductAddons constructor.
	 */
	public function __construct() {
		include_once ABSPATH . 'wp-admin/includes/plugin.php';

		if ( is_plugin_active( 'woocommerce-product-addons/woocommerce-product-addons.php' ) ) {

			add_action( 'wp_head', array( $this, 'addCompatibilityScript' ) );

			add_action( 'tier_pricing_table/cart/product_cart_price', array( $this, 'addAddonsPrice' ), 10, 2 );
			add_action( 'tier_pricing_table/cart/product_cart_price/item', array( $this, 'addAddonsPrice' ), 10, 2 );
		}
	}

	/**
	 * Add extra addons costs to product price in cart.
	 *
	 * @param float $price
	 * @param array $cart_item
	 *
	 * @return int|mixed
	 */
	public function addAddonsPrice( $price, $cart_item ) {

		$extra_cost = 0;

		if ( isset( $cart_item['addons'] ) && false != $price ) {
			foreach ( $cart_item['addons'] as $addon ) {
				$price_type  = $addon['price_type'];
				$addon_price = $addon['price'];

				switch ( $price_type ) {
					case 'percentage_based':
						$extra_cost += (float) ( $cart_item['data']->get_price( 'edit' ) * ( $addon_price / 100 ) );
						break;
					case 'flat_fee':
						$extra_cost += (float) ( $addon_price / $cart_item['quantity'] );
						break;
					default:
						$extra_cost += (float) $addon_price;
						break;
				}
			}

			return $price + $extra_cost;
		}

		return $price;

	}

	/**
	 * Render compatibility script
	 */
	public function addCompatibilityScript() {
		?>
		<script>
			(function ($) {
				$(document).on('tiered_price_update', function (event, data) {
					$('#product-addons-total').data('price', data.price);
				});
			})(jQuery);
		</script>
		<?php
	}
}

```
