<?php

	/**
	 * Modul "Mindestbestellmenge"
	 * @author Daschmi 
	 */
	class wpsg_mod_minquantity extends wpsg_mod_basic
	{
		
		var $lizenz = 1;
		var $id = 3080; 
		var $hilfeURL = 'http://wpshopgermany.maennchen1.de/?p=661018';
		var $version = "9.9.9";
		
		public function __construct()
		{
				
			parent::__construct();
		
			$this->name = __('Mindestbestellmenge', 'wpsg');
			$this->group = __('Produkte', 'wpsg');
			$this->desc = __('Erlaubt das festlegen einer Mindestbestellmenge je Produkt.', 'wpsg');
				
		} // public function __construct()
		
		public function install()
		{
			
			require_once(WPSG_PATH_WP.'/wp-admin/includes/upgrade.php');
				
			/*
			 * Produkt Tabelle erweitern
			*/
			$sql = "CREATE TABLE ".WPSG_TBL_PRODUCTS." (
		   		wpsg_mod_minquantity_value INT(11) NOT NULL,
				wpsg_mod_minquantity_valuemax INT(11) NOT NULL
		   	) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";
			 
			dbDelta($sql);
						
		} // public function install()
		
		public function settings_edit()
		{
			
			$this->shop->render(WPSG_PATH_VIEW.'/mods/mod_minquantity/settings_edit.phtml');
			
		} // public function settings_edit()
		
		public function settings_save()
		{
			 
		} // public function settings_save()
		
		public function produkt_edit_allgemein(&$produkt_data) 
		{ 
	 
			$this->shop->view['wpsg_mod_minquantity']['value'] = $produkt_data['wpsg_mod_minquantity_value'];
			$this->shop->view['wpsg_mod_minquantity']['valuemax'] = $produkt_data['wpsg_mod_minquantity_valuemax'];
			
			$this->shop->render(WPSG_PATH_VIEW.'/mods/mod_minquantity/produkt_edit_allgemein.phtml');
			
		} // public function produkt_edit_allgemein(&$produkt_data)
		
		public function produkt_save_before(&$produkt_data)
		{
				
			$produkt_data['wpsg_mod_minquantity_value'] = wpsg_tf($_REQUEST['wpsg_mod_minquantity']['value']);
			$produkt_data['wpsg_mod_minquantity_valuemax'] = wpsg_tf($_REQUEST['wpsg_mod_minquantity']['valuemax']);
 
		} // public function produkt_save_before(&$produkt_data)
		
		public function basket_toArray(&$produkt, $backend = false, $noMwSt = false) 
		{ 
			
			$product_id = $this->shop->getProduktId($produkt['id']);
			
			$min_quantity = $this->getMinQuantity($product_id);
			$max_quantity = $this->getMaxQuantity($product_id);
			
			if (wpsg_isSizedInt($min_quantity))
			{
				
				if ($produkt['menge'] < $min_quantity)
				{
					
					$oProduct = $this->shop->cache->loadProductObject($product_id);
					 
					$this->shop->addFrontendError(wpsg_translate(
						__('Die Mindestbestellmenge von Produkt #1# beträgt #2# und wurde korrigiert.', 'wpsg'),
						$oProduct->getProductName(),
						$min_quantity
					));
					
					$produkt['menge'] = $min_quantity;
					
					// In Session korrigieren
					// Sollte eigentlich anders gebaut werden, aber will den Kern momentan nicht anpassen
					foreach ($_SESSION['wpsg']['basket'] as $k => $p)
					{
						
						if ($p['id'] == $produkt['id']) $_SESSION['wpsg']['basket'][$k]['menge'] = $min_quantity;
						
					}
					
				}
				
			} 
			
			if (wpsg_isSizedInt($max_quantity))
			{
				
				if ($produkt['menge'] > $max_quantity)
				{
						
					$oProduct = $this->shop->cache->loadProductObject($product_id);
				
					$this->shop->addFrontendError(wpsg_translate(
						__('Die Maximalbestellmenge von Produkt #1# beträgt #2# und wurde korrigiert.', 'wpsg'),
						$oProduct->getProductName(),
						$max_quantity
					));
						
					$produkt['menge'] = $max_quantity;
						
					// In Session korrigieren
					// Sollte eigentlich anders gebaut werden, aber will den Kern momentan nicht anpassen
					foreach ($_SESSION['wpsg']['basket'] as $k => $p)
					{
				
						if ($p['id'] == $produkt['id']) $_SESSION['wpsg']['basket'][$k]['menge'] = $max_quantity;
				
					}
						
				}
				
			}
			
		} // public function basket_toArray(&$produkt, $backend = false, $noMwSt = false)
		 		
		public function checkBasket(&$error)
		{
		
			$arBasket = $this->shop->cache->getShopBasketArray();
			
			foreach ((array)$arBasket['produkte'] as $p)
			{
				
				$product_id = $this->shop->getProduktId($p['id']);
				
				$min_quantity = $this->getMinQuantity($product_id);
				$max_quantity = $this->getMaxQuantity($product_id);

				if (wpsg_isSizedInt($min_quantity))
				{

					if ($p['menge'] < $min_quantity)
					{

						$oProduct = $this->shop->cache->loadProductObject($product_id);
						
						$this->shop->addFrontendError(wpsg_translate(
							__('Die Mindestbestellmenge von Produkt #1# beträgt #2# und wurde nicht erreicht.', 'wpsg'),
							$oProduct->getProductName(),
							$min_quantity
						));
						
						$error = false; 
						
					}
										
				}
				
				if (wpsg_isSizedInt($max_quantity))
				{
				
					if ($p['menge'] > $max_quantity)
					{
					
						$oProduct = $this->shop->cache->loadProductObject($product_id);
					
						$this->shop->addFrontendError(wpsg_translate(
							__('Die Maximalbestellmenge von Produkt #1# beträgt #2# und wurde überschritten.', 'wpsg'),
							$oProduct->getProductName(),
							$max_quantity
						));
					
						$error = false;
					 
					}
					
				}
				
			} 
				
		} // public function checkBasket(&$error, &$arBasket)
		
		/* Modulfunktionen */
		
		/**
		 * Gibt den Mindestbestellwert anhand der ProduktID zurück
		 * @param int $product_id
		 * @return boolean
		 */
		public function getMinQuantity($product_id)
		{
			
			$product_data = $this->shop->cache->loadProduct($product_id);
			
			return $product_data['wpsg_mod_minquantity_value'];
			
		} // public function getMinQuantity($product_id)
		
		/**
		 * Gibt den Maximalbestellwert anhand der ProduktID zurück
		 * @param int $product_id
		 * @return boolean
		 */
		public function getMaxQuantity($product_id)
		{
			
			$product_data = $this->shop->cache->loadProduct($product_id);
				
			return $product_data['wpsg_mod_minquantity_valuemax'];
			
		} // public function getMaxQuantity($product_id)
		
	} // class wpsg_mod_minquantity extends wpsg_mod_basic

?>