default vat = ".$default_vat_value; echo "
order items value = ".$order_items_value; echo "
customer group = ".$customer_group_id; exit();*/ $helperjoins = PaymentHelper::get_helper_joins(); $nametoid = PaymentHelper::get_name_to_id_array(); $shipping_area_id = CountryHelper::get_shipping_area_by_country_id($country_id); $db = Registry::get('base')->db; $sql = "SELECT * FROM shipping_area WHERE id=".$shipping_area_id; $result = $db->query($sql); if ($result->num_rows > 0 && $helperjoins) { $return = array(); while ($obj = $result->fetch_object()) { foreach ($helperjoins as $name => $short) { $active = 'active_'.$short; $type = 'account_type_'.$short; $add = 'add_'.$short; if ($obj->$active) { $return[] = array('name' => $name, 'id' => $nametoid[$name]); } } } return $return; } return false; } public static function getPaymentDataByIdAndCountry($method_id, $country_id, $default_vat_value, $order_items_value, $customer_group_id = false) { /*echo "
";
		print_r($method_id);
		exit();*/

		$paymentObject = new stdClass();

		$paymentObject->methodId = $method_id;

		$db = Registry::get('base')->db;

		// Helper join key
		$helperjoinkey = $db->query("
			SELECT
				helperjoinkey
			FROM
				payment_methods
			WHERE
				id = '".$db->real_escape_string($method_id)."'
		")->fetch_object()->helperjoinkey;

		// Area
		$area_id = $db->query("
			SELECT
				shipping_area_id
			FROM
				countries
			WHERE
				id = '".$db->real_escape_string($country_id)."'
		")->fetch_object()->shipping_area_id;

		if ($customer_group_id) {
			$sql = "SELECT * FROM country_customergroup_shippingarea
				WHERE country_id = ".$country_id." AND customer_group_id = $customer_group_id";
			$result2 = $db->query($sql);
			if ($result2->num_rows > 0) {
				$area_id = $result2->fetch_object()->shipping_area_id;
			}
		}

		$paymentObject->areaId = $area_id;

		// Costs
		$sql = "
			SELECT
				add_".$helperjoinkey." AS num,
				account_type_".$helperjoinkey." AS type
			FROM
				shipping_area
			WHERE
				id = '".$db->real_escape_string($area_id)."'";

		$PM = $db->query($sql)->fetch_object();

		if ($PM->type == '0') {
			$price = $PM->num;
			$paymentObject->priceGross = $price;
			$paymentObject->priceNet = round($price / (100 + $default_vat_value) * 100, 2);
			$paymentObject->priceVat = $paymentObject->priceGross - $paymentObject->priceNet;
			$paymentObject->vatRate = $default_vat_value;
		} else if ($PM->type == '1') {
			$price = $PM->num;
			$paymentObject->priceGross = $price;
			$paymentObject->priceNet = round($price / (100 + $default_vat_value) * 100, 2);
			$paymentObject->priceVat = $paymentObject->priceGross - $paymentObject->priceNet;
			$paymentObject->vatRate = $default_vat_value;

			$paymentObject->priceGross = -$paymentObject->priceGross;
			$paymentObject->priceNet = -$paymentObject->priceNet;
			$paymentObject->priceVat = -$paymentObject->priceVat;
		} else if ($PM->type == '2') {
			$price = $PM->num / 100 * $order_items_value;
			$paymentObject->priceGross = $price;
			$paymentObject->priceNet = round($price / (100 + $default_vat_value) * 100, 2);
			$paymentObject->priceVat = $paymentObject->priceGross - $paymentObject->priceNet;
			$paymentObject->vatRate = $default_vat_value;
		} else if ($PM->type == '3') {
			$price = $PM->num / 100 * $order_items_value;
			$paymentObject->priceGross = $price;
			$paymentObject->priceNet = round($price / (100 + $default_vat_value) * 100, 2);
			$paymentObject->priceVat = $paymentObject->priceGross - $paymentObject->priceNet;
			$paymentObject->vatRate = $default_vat_value;

			$paymentObject->priceGross = -$paymentObject->priceGross;
			$paymentObject->priceNet = -$paymentObject->priceNet;
			$paymentObject->priceVat = -$paymentObject->priceVat;
		}

		return $paymentObject;
	}

	public static function get_payment_methods_by_shipping_area_array() {
		$db = Registry::get('base')->db;

		$helperjoins = PaymentHelper::get_helper_joins();

		$sql = "SELECT * FROM shipping_area";

		$result = $db->query($sql);

		if ($result->num_rows > 0 && $helperjoins) {
			while ($obj = $result->fetch_object()) {
				foreach ($helperjoins as $name => $short) {
					$active = 'active_'.$short;
					$type = 'account_type_'.$short;
					$add = 'add_'.$short;

					$data[$obj->id][] = array('name' => $name, 'active' => $obj->$active, 'type' => $obj->$type, 'add' => $obj->$add);
				}
			}

			return $data;
		}

		return false;
	}

	//=========================================
	//
	//	THE PRIVATE INTERFACE
	//
	//=========================================

	private static function get_helper_joins() {
		$db = Registry::get('base')->db;

		$sql = "SELECT * FROM payment_methods";

		$result = $db->query($sql);

		if ($result->num_rows > 0) {
			while ($obj = $result->fetch_object()) {
				$data[$obj->name] = $obj->helperjoinkey;
			}

			return $data;
		}

		return false;
	}



	private static function get_name_to_id_array() {
		$db = Registry::get('base')->db;

		$sql = "SELECT * FROM payment_methods";

		$result = $db->query($sql);

		if ($result->num_rows > 0) {
			while ($obj = $result->fetch_object()) {
				$data[$obj->name] = $obj->id;
			}

			return $data;
		}

		return false;
	}
}