<?php
/**
 * Система управления сайтом HostCMS v. 5.xx
 * Copyright © 2005-2010 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
 *
 * Обработчик экспорта данных о товарах в CML.
 *
 * Файл: /admin/shop/action/export_data_cml.php
 *
 * @author Hostmake LLC
 * @version 5.x
 */

$shop = & singleton('shop');

$kernel = & singleton('kernel');

$DataBase = & singleton('DataBase');

// Начинаем отправлять заголовки
header("Pragma: public");

header("Content-Description: File Transfer");

// Указываем уже определенный Content-Type
header("Content-Type: application/force-download");

// Force the download
header("Content-Disposition: attachment; filename = " . 'CommerceML_' .date("Y_m_d_H_i_s").'.xml'. ";");
header("Content-Transfer-Encoding: binary");

$shop = & singleton('shop');

$warehouse = & singleton('warehouse');

$kernel = & singleton('kernel');

$DataBase = & singleton('DataBase');

// Получаем идентификатор родительской групы с которой необходимо начинать экспорт
$shop_groups_parent_id = to_int($_REQUEST['shop_groups_parent_id']);

$shop_shops_id = to_int($_REQUEST['shop_shops_id']);

// Получаем информацию о магазине
$shop_row = $shop->GetShop($shop_shops_id);

// Получаем информацию о компании, которой принадлежит магазин
$company_row = $shop->GetCompany($shop_row['shop_company_id']);

// Массив для хранения идентификаторов групп товаров для которых необходимо получить список товаров
$group_id_array = array();
 
// Содержание будущего XML-документа
echo '<?xml version="1.0" encoding="UTF-8"?>'."\r\n";
echo '<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="'.date("Y-m-d").'T'.date("H:i:s").'">';
echo '<ПакетПредложений СодержитТолькоИзменения="false">';

// Значимость символа "#" в конце строки неизвестна
echo '<Ид>' . $shop_row['shop_shops_guid'] . '#</Ид>';
echo '<Наименование>Пакет предложений</Наименование>';
echo '<ИдКаталога>' . $shop_row['shop_shops_guid'] . '</ИдКаталога>';
echo '<ИдКлассификатора>' . $shop_row['shop_shops_guid'] . '</ИдКлассификатора>';

// Группа "Владелец" повторяет оную из import.xml
echo '<Владелец>';
echo '<Ид>' . $company_row['shop_company_guid'] . '</Ид>';
echo '<Наименование>' . htmlspecialchars($company_row['shop_company_name']) . '</Наименование>';
echo '<ОфициальноеНаименование>' . $company_row['shop_company_name'] . '</ОфициальноеНаименование>';
echo '<ИНН>' . $company_row['shop_company_inn'] . '</ИНН>';
echo '<КПП>' . $company_row['shop_company_kpp'] . '</КПП>';
echo '<РасчетныеСчета>';
echo '<РасчетныйСчет>';
echo '<НомерСчета>' . $company_row['shop_company_account'] . '</НомерСчета>';
echo '<Банк>';
echo '<СчетКорреспондентский>' . $company_row['shop_company_corr_account'] . '</СчетКорреспондентский>';
echo '<Наименование>' . htmlspecialchars($company_row['shop_company_bank_name']) . '</Наименование>';
echo '<Адрес>';
echo '<Представление>' . $company_row['shop_company_bank_address'] . '</Представление>';
echo '</Адрес>';
echo '<БИК>' . $company_row['shop_company_bik'] . '</БИК>';
echo '</Банк>';
echo '</РасчетныйСчет>';
echo '</РасчетныеСчета>';
echo '</Владелец>';

// Необходимо получить все типы цен из справочника цен и экспортировать их
$shop_prices_res = $shop->GetAllPricesForShop($shop_shops_id);

$rozn_price_guid = $kernel->Guid();

if($shop_prices_res)
{
	echo '<ТипыЦен>';

	echo '<ТипЦены>';
	
	// Всегда есть онсновная цена под названием "Розничная", генерируем GUID для нее отдельно
	echo '<Ид>' . $rozn_price_guid . '</Ид>';
	
	echo '<Наименование>Розничная</Наименование>';
	
	echo '</ТипЦены>';
	
	while($shop_prices_row = mysql_fetch_assoc($shop_prices_res))
	{
		echo '<ТипЦены>';
		
		echo '<Ид>';
		
		echo $shop_prices_row['shop_list_of_prices_cml_id'];
		
		echo '</Ид>';
		
		echo '<Наименование>';
		
		echo htmlspecialchars($shop_prices_row['shop_list_of_prices_name']);
		
		echo '</Наименование>';
		
		echo '</ТипЦены>';
	}

	echo '</ТипыЦен>';
}

// Получаем список групп товаров, чьи товары мы должны получить
showDirTree($shop_groups_parent_id, $shop_shops_id, $group_id_array);


/* // Получаем все товары, кроме электронных
$items_res = $shop->GetItemByParam(array(
'shop_shops_id' => $shop_shops_id,
'shop_items_catalog_type' => 0
));
 */
 
// Получаем список товаров подлежащих экспорту, исключая ярлыки, исключая модификации
$sql = "SELECT * FROM `shop_items_catalog_table` 
WHERE `shop_shops_id` = '$shop_shops_id' 
AND `shop_items_catalog_shortcut_id`='0'";

if(count($group_id_array) > 0)
{
	$group_id_array = implode(",", $group_id_array);
	
	 
	$sql_ext = " AND `shop_groups_id` IN ($group_id_array)";
}

$sql .= $sql_ext;

$items_res = $DataBase->query($sql);




if(mysql_num_rows($items_res) > 0)
{
	echo '<Предложения>';
	
	while($items_row = mysql_fetch_assoc($items_res))
	{
		echo '<Предложение>';
		
		echo '<Ид>';
		
		if(to_int($items_row['shop_items_catalog_modification_id']) != 0)
		{
			// Товар - модификация, получаем CML_ID основного товара
			$base_item_row = $shop->GetItem($items_row['shop_items_catalog_modification_id']);
			
			echo $base_item_row['shop_items_cml_id'] . "#" . $items_row['shop_items_cml_id'];
		}
		else
		{
			echo $items_row['shop_items_cml_id'];
		}
		
		
		echo '</Ид>';
		
		echo '<Артикул>';
		
		echo $items_row['shop_items_catalog_marking'];
		
		echo '</Артикул>';
		
		echo '<Наименование>';
		
		echo htmlspecialchars($items_row['shop_items_catalog_name']);
		
		echo '</Наименование>';
		
		// Получаем единицу измерения для товара
		$mesures_row = $shop->GetMesure($items_row['shop_mesures_id']);
		
		if(to_int($items_row['shop_mesures_id']))
		{
			if($mesures_row)
			{
				echo '<БазоваяЕдиница Код="'.$mesures_row['shop_mesures_id'].'" НаименованиеПолное="'.$mesures_row['shop_mesures_description'].'">';
				
				echo $mesures_row['shop_mesures_name'];
				
				echo '</БазоваяЕдиница>';
			}
		}
		
		echo '<Цены>';
		
		// Экспортируем основную цену
		echo '<Цена>';
		
		// Получаем валюту товара
		$item_currency_row = $shop->GetCurrency($items_row['shop_currency_id']);
		
		if($item_currency_row)
		{
			$currency_str = $item_currency_row['shop_currency_name'];
		}
		else
		{
			$currency_str = '';
		}
		
		echo '<ИдТипаЦены>' . $rozn_price_guid . '</ИдТипаЦены>';
		
		echo '<Представление>';
		
		echo $items_row['shop_items_catalog_price'] . ' ' . $currency_str . ' за ' . $mesures_row['shop_mesures_name'];
		
		echo '</Представление>';
		
		// У основной цены нет поля <ИдТипаЦены>
		
		echo '<ЦенаЗаЕдиницу>';
		
		echo $items_row['shop_items_catalog_price'];
		
		echo '</ЦенаЗаЕдиницу>';
		
		// Валюта основной цены равна валюте товара
		echo "<Валюта>";
		
		echo $currency_str;
		
		echo "</Валюта>";
		
		
		echo '<Единица>';
		
		echo $mesures_row['shop_mesures_name'];
		
		echo '</Единица>';
		
		
		echo '</Цена>';
		
		// Необходимо проверить наличие дополнительных цен
		$item_prices_row = $shop->GetAllPricesForItem($items_row['shop_items_catalog_item_id']);
		
		if($item_prices_row)
		{
			foreach($item_prices_row as $additional_price_id => $additional_price_data)
			{
				echo '<Цена>';
				
				echo '<ИдТипаЦены>'.$additional_price_data['shop_list_of_prices_cml_id'].'</ИдТипаЦены>';
				
				echo '<Представление>';
				
				echo $additional_price_data['shop_prices_to_item_value'] . ' ' . $currency_str . ' за ' . $mesures_row['shop_mesures_name'];
				
				echo '</Представление>';
				
				echo '<ЦенаЗаЕдиницу>';
			
				echo $additional_price_data['shop_prices_to_item_value'];
				
				echo '</ЦенаЗаЕдиницу>';
				
				echo "<Валюта>";
			
				echo $currency_str;
				
				echo "</Валюта>";
				
				
				echo '<Единица>';
				
				echo $mesures_row['shop_mesures_name'];
				
				echo '</Единица>';
				
				echo '</Цена>';
			}	
		}
		
		
		echo '</Цены>';
		
		echo '<Количество>';
		
		echo $warehouse->GetItemCountForAllWarehouses($items_row['shop_items_catalog_item_id']);
		
		echo '</Количество>';
		
		echo '</Предложение>';
	}
	
	echo '</Предложения>';
}
 
echo '</ПакетПредложений>';
echo '</КоммерческаяИнформация>';
exit();


function showDirTree($shop_groups_parent_id, $shop_shops_id, &$group_id_array)
{
	$shop = & singleton('shop');
	
	$group_id_array[] = $shop_groups_parent_id;
	
	// Получаем всех потомков текущей группы
	$groups_res = $shop->GetGroups($shop_shops_id, $shop_groups_parent_id);
	
	if($groups_res)
	{
		while($groups_row = mysql_fetch_assoc($groups_res))
		{
			showDirTree($groups_row['shop_groups_id'], $shop_shops_id, $group_id_array);
		}
	}
}
?>