<?php

	function get_WeClapp_undefined_kategorie()
	{
		global $con_i;
		$query="SELECT * FROM categories WHERE NAME='WeClapp_undefined'";
		$Q1=sIT_mysql_run_query($con_i, $query, true);
		if (sIT_mysql_num_rows($Q1)==0)
		{
			echo "Lege Default Weclapp Kategorie an: 'WeClapp_undefined'";
			$sql2="INSERT INTO categories SET NAME='WeClapp_undefined'";
			$Q2=sIT_mysql_run_query($con_i, $sql2, true);
			$weclapp_id=sIT_mysql_insert_id($Q2);
		}
		else
		{
			$row=sIT_mysql_get_row($Q1);
			$weclapp_id=$row['ID'];
		}
		return($weclapp_id);
	}
	
	function transfer_table_WeClapp($table_name, $kassa_id) 
	{
		if ($table_name=='categories')
		{
			$array=transfer_table_WeClapp_categories();
			$array=rename_array_key($array, 'id', 'ID');
			$array=rename_array_key($array, 'name', 'NAME');
			$array=rename_array_key($array, 'parentCategoryId', 'PARENTID');
			
			//var_dump($array);
			update_table_mit_array('categories', $array, 'ID');
		}
		else if ($table_name=='products')
		{
			//$array1=transfer_table_WeClapp_findSalestax();
			$array1['STANDARD']=0.2000;
			$array1['REDUCED']=0.1000;
			$array1['ZERO']=0.0000;
			$array1['SLIGHTLY_REDUCED']=0.1300;
			$array1['SUPER_REDUCED']=0.0500;
			$array=transfer_table_WeClapp_products();
			
			//var_dump($array1);
			
			// Für das Produkt die TAXCAT heraussuchen
			foreach ($array as $key => $value)
			{
				$tax_string=$array[$key]['taxRateType'];
				$Q1=mysql_query("SELECT ID from taxes WHERE RATE='".$array1[$tax_string]."'");
				if (!$Q1)
				{
					echo "Fehler :".mysql_error();
					exit;
				}
				if (mysql_num_rows($Q1)==0)
				{
					echo "Steuersatz ".$array1[$tax_string]." WeClapp $tax_string existiert in sITpos nicht";
					exit;
				}
				$row1=mysql_fetch_assoc($Q1);
				$tax_id=$row1['ID'];
				$array[$key]['taxRate']=$array1[$tax_string];
				$array[$key]['TAXCAT']=$tax_id;
				// In WeClapp muss keine Kategorie gesetzt werden, wenn das nicht ist, dann eine Kategorie mit Namen WeClapp_undefiniert anlegen
				if (!array_key_exists('articleCategoryId',$array[$key]))
				{
					//echo "Keine Kategorie gesetzt";
					if ($default_kategorie=get_WeClapp_undefined_kategorie())
					{
						$array[$key]['articleCategoryId']=$default_kategorie;
					}
				}
				//echo "<br><br><br>";
			}
			//var_dump($array);
			//echo "<br><br><br>";
			//exit;
			$array=rename_array_key($array, 'id', 'ID');
			$array=rename_array_key($array, 'name', 'NAME');
			$array=rename_array_key($array, 'ean', 'CODE');
			$array=rename_array_key($array, 'articleCategoryId', 'CATEGORY');
			//$array=rename_array_key($array, '', 'TAXCAT');
			$array=rename_array_key($array, 'articleNumber', 'REFERENCE');
			$array=rename_array_key_price($array, 'PRICESELL');
			
			update_table_mit_array('products', $array, 'ID');
		}
		else if ($table_name=='taxes')
		{
			$array=transfer_table_WeClapp_steuern();
			$array=rename_array_key($array, 'id', 'ID');
			$array=rename_array_key($array, 'name', 'NAME');
			$array=rename_array_key($array, 'ean', 'CODE');
			$array=rename_array_key($array, 'taxValue', 'RATE');
			foreach ($array as $key => $value)
			{
				if ($array[$key]['taxType']==='VALUE_ADDED_TAX' || $array[$key]['taxType']==='TAX_FREE')
				{
					$array[$key]['RATE']=$array[$key]['RATE']/100;
				}
				else unset($array[$key]);
				
			}			
			update_table_mit_array('taxes', $array, 'ID');
		}
		else if ($table_name=='warehouse')
		{
			
		}
	}
	
	function transfer_table_WeClapp_get_data($resource, $page=1)
	{
		$ch = curl_init();
		$url = FILIALSYSTEM_URL_ZENTRALSYSTEM;
		$url=$url.$resource."?pageSize=1000&page=".$page;
		//echo $url;
		$token=FILIALSYSTEM_TOKEN;
		
		curl_setopt($ch, CURLOPT_URL, $url);
		
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
		curl_setopt($ch, CURLOPT_HEADER, FALSE);

		//curl_setopt($ch, CURLOPT_POST, TRUE);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
		
		//curl_setopt($ch, CURLOPT_POSTFIELDS, $items_string);
		
		curl_setopt($ch, CURLOPT_HTTPHEADER, array(
		  "Content-Type: application/json",
		  "AuthenticationToken: $token"
		));

		$response = curl_exec($ch);
		if ($response === false) echo 'Curl-Fehler: ' . curl_error($ch);
		curl_close($ch);
		
		//var_dump($response);
		$resArr = json_decode($response, true);
		return($resArr['result']);
	}
	
	function transfer_table_WeClapp_put_data($resource, $items_string)
	{
		$ch = curl_init();
		$url = FILIALSYSTEM_URL_ZENTRALSYSTEM;
		$url=$url.$resource;
		//echo $url;
		$token=FILIALSYSTEM_TOKEN;
		
		curl_setopt($ch, CURLOPT_URL, $url);
		
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
		curl_setopt($ch, CURLOPT_HEADER, FALSE);

		curl_setopt($ch, CURLOPT_POST, TRUE);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
		
		curl_setopt($ch, CURLOPT_POSTFIELDS, $items_string);
		
		curl_setopt($ch, CURLOPT_HTTPHEADER, array(
		  "Content-Type: application/json",
		  "AuthenticationToken: $token"
		));

		$response = curl_exec($ch);
		if ($response === false) 
		{
			echo 'Curl-Fehler: ' . curl_error($ch);
			return (false);
		}
		curl_close($ch);
		
		//var_dump($response);
		$resArr = json_decode($response, true);
		return($resArr);
	}
	
	function transfer_table_WeClapp_categories()
	{
		$anzahl_produkte=transfer_table_WeClapp_get_data('articleCategory/count');
		$number_pages=ceil($anzahl_produkte/1000); // ceil=Aufrunden
		$page=1;
		$result_array_gesamt=array();
		while ($page <= $number_pages)
		{
			$result_arr=transfer_table_WeClapp_get_data('articleCategory', $page);
			$result_array_gesamt=array_merge($result_array_gesamt, $result_arr);
			$page++;
		}
		
		return($result_array_gesamt);
	}
	
	function transfer_table_WeClapp_products()
	{
		$anzahl_produkte=transfer_table_WeClapp_get_data('article/count');
		$number_pages=ceil($anzahl_produkte/1000); // ceil=Aufrunden
		$page=1;
		$result_array_gesamt=array();
		while ($page <= $number_pages)
		{
			$result_arr=transfer_table_WeClapp_get_data('article', $page);
			$result_array_gesamt=array_merge($result_array_gesamt, $result_arr);
			$page++;
		}
		
		return($result_array_gesamt);
	}
	
	function transfer_table_WeClapp_findSalestax()
	{
		$result_arr=transfer_table_WeClapp_get_data('tax/findSalesTax?dispatchCountryCode=AT');
		return($result_arr);
	}
	
	function transfer_table_WeClapp_steuern()
	{
		$result_arr=transfer_table_WeClapp_get_data('tax');
		return($result_arr);
	}
	
	function transfer_table_WeClapp_warehouse()
	{
		$result_arr=transfer_table_WeClapp_get_data('warehouse');
		return($result_arr);
	}
	
	function WeClapp_get_default_warehouse_level_id()
	{
		$array=transfer_table_WeClapp_warehouse();
		$default_warehouse_level=false;
		foreach ($array as $key => $value)
		{
			if ($array[$key]['warehouseType']==='STANDARD')
			{
				$default_warehouse_level=$array[$key]['defaultLevelId'];
			}
		}			
		//echo "Default Warehouse Level ".$default_warehouse_level;
		return ($default_warehouse_level);
	}
	
	// Bei WeClapp darf nie ein Full Sync gemacht werden, weil ansonsten die Artikel öfters ausgebucht werden!
	function WeClapp_warehouse_stock_movement($full_sync=false)
	{
		$warehouse_level=WeClapp_get_default_warehouse_level_id();	// Sucht die default_wherehouse_level_id von WeClapp heraus
		if ($full_sync) $where="";
		else $where=" WHERE filialsystem_sync_done=0 ";
		$sql="SELECT * from abgeschlossener_bon_produkte $where";
		$Q1=mysql_query($sql);
		if (!$Q1) echo "Fehler ".mysql_error();
		else
		{
			while ($row1=mysql_fetch_assoc($Q1))
			{
				//var_dump($row1);
				$abgeschlossener_bon_id=$row1['ID']; 
				 $articleId=$row1['produkt_id']; 
				 $quantity=$row1['stueck']; 
				 $sourceWarehouseLevelId=$warehouse_level;
				 $movementNote="abgeschlossern_bon_produkt_id:".$row1['produkt_id']; 
				 $batchNumber="kassa1";
				 
				 $data = array(
						'articleId' => $articleId,
						'quantity' => $quantity,
						'sourceWarehouseLevelId' => $sourceWarehouseLevelId,
						'movementNote' => $movementNote,
						'batchNumber' => $batchNumber
					);
				$items_string=json_encode($data);
				$result=transfer_table_WeClapp_put_data("warehouseStockMovement/bookOutgoingMovement", $items_string);
				if ($result!==false)
				{
					// Technisch hat es funktioniert, jetzt könnte es noch einen logischen Fehler geben
					//var_dump($result);
					$result_string=json_encode($result);
					log_to_file("Sync abgeschlossener_bon_produkte zu WeClapp:  abgeschlosserner_bon_produkt_id: ".$articleId." Name :".$row1['NAME']." WeClapp: ".$result_string, false, true);
					$sql2="UPDATE abgeschlossener_bon_produkte SET filialsystem_sync_done=1 WHERE ID=$abgeschlossener_bon_id";
					$Q2=mysql_query($sql2);
					if (!$Q2) echo "Fehler ".mysql_error();
				}
				
			}
		}
	}
	?>