Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?
- require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
- CModule::IncludeModule("iblock");
- CModule::IncludeModule('sale');
- CModule::IncludeModule("catalog");
- setlocale(LC_CTYPE, "ru_RU.CP1251");
- $password = '123456';
- $passw = isset($_GET['password']) ? trim($_GET['password']) : null;
- $action = isset($_GET['action']) ? trim($_GET['action']) : null;
- if ($passw != $password) die('wrong password');
- switch ($action) {
- case 'import_products':
- import_products();
- break;
- case 'export_products':
- export_products();
- break;
- case 'import_orders':
- import_orders();
- break;
- case 'export_orders':
- export_orders();
- break;
- default:
- echo "unknown action";
- }
- function import_products($add_new = true) {
- //Типы цен в виде: код => ID
- $price_types = array(
- 'Prih' => 4,
- 'K1' => 2,
- 'K2' => 3,
- 'K3' => 6,
- 'Internet' => 1,
- 'Special' => 5
- );
- $iblock_id = 6; //ID инфоблока товара
- $import_columns = array(
- "XML_ID",
- "NAME",
- "PREVIEW_TEXT"
- );
- foreach ($price_types as $type_id) {
- $import_columns[] = "CATALOG_PRICE_".$type_id;
- }
- $import_columns[] = "CATALOG_QUANTITY";
- $columns_values = array_flip($import_columns);
- $file = '1c_exchange/tovar.csv';
- $updated = 0;
- $added = 0;
- if (($handle = fopen($file, "r")) !== FALSE) {
- $el = new CIBlockElement;
- while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
- array_walk($data, function(&$val){
- if (is_string($val))
- $val = iconv('cp1251', 'UTF-8', $val);
- });
- $errors = 0;
- $arFilter = Array( "IBLOCK_ID"=> $iblock_id, "XML_ID"=> $data[ $columns_values["XML_ID"] ] );
- $arSelect = Array("XML_ID");
- $res = CIBlockElement::GetList(Array("ID" => "DESC"), $arFilter, false, false, $arSelect);
- $exist = false;
- if ($product = $res->Fetch()) {
- $exist = true;
- $productID = $product['ID'];
- }
- //если товар найден
- if ($exist) {
- $arLoadProductArray = Array(
- "NAME" => $data[ $columns_values["NAME"] ],
- "PREVIEW_TEXT" => $data[ $columns_values["PREVIEW_TEXT"] ]
- );
- //обновляем товар
- $res = $el->Update($productID, $arLoadProductArray);
- //обновляем количество товара
- $upd_temp = CCatalogProduct::Update(
- $productID,
- array("QUANTITY" => $data[ $columns_values["CATALOG_QUANTITY"] ])
- );
- if (!$upd_temp) $errors++;
- //обновляем цены
- foreach ($price_types as $type_id) {
- $db_res = CPrice::GetList(
- array(),
- array(
- "PRODUCT_ID" => $productID,
- "CATALOG_GROUP_ID" => $type_id
- )
- );
- if ($ar_res = $db_res->Fetch())
- {
- $arFields = Array(
- "PRODUCT_ID" => $productID,
- "PRICE" => $data[ $columns_values["CATALOG_PRICE_".$type_id] ],
- "CATALOG_GROUP_ID" => $type_id,
- "CURRENCY" => "UAH",
- );
- $result = CPrice::Update($ar_res['ID'], $arFields);
- if (!$result) $errors++;
- }
- }
- if ($errors == 0) $updated++;
- //если не найден и разрешено добавление новых товаров
- } elseif ($add_new) {
- $arFields["IBLOCK_ID"] = $iblock_id;
- $arFields["IBLOCK_SECTION_ID"] = false; //создаем товар в корневом разделе
- $arFields["XML_ID"] = $data[ $columns_values["XML_ID"] ];
- $arFields["NAME"] = $data[ $columns_values["NAME"] ];
- $arFields["PREVIEW_TEXT"] = $data[ $columns_values["PREVIEW_TEXT"] ];
- $arParams = array("replace_space"=>"-","replace_other"=>"-");
- $trans = Cutil::translit($arFields["NAME"],"ru",$arParams);
- $arFields["CODE"] = $trans;
- $productID = $el->Add($arFields);
- $add_temp = CCatalogProduct::Add(
- array(
- "ID" => $productID,
- "QUANTITY" => $data[ $columns_values["CATALOG_QUANTITY"] ]
- )
- );
- if (!$add_temp) $errors++;
- foreach ($price_types as $type_id) {
- $arFields = Array(
- "PRODUCT_ID" => $productID,
- "CATALOG_GROUP_ID" => $type_id,
- "PRICE" => $data[ $columns_values["CATALOG_PRICE_".$type_id] ],
- "CURRENCY" => "UAH"
- );
- $result = CPrice::Add($arFields);
- if (!$result) $errors++;
- }
- if ($errors == 0) $added++;
- }
- }
- fclose($handle);
- echo 'Updated products: '. $updated . '<br> Added products: ' . $added;
- } else {
- echo 'Error opening file: ' . $file;
- }
- }
- function export_products() {
- //Типы цен в виде: код => ID
- $price_types = array(
- 'K2' => 1,
- 'special' => 2
- );
- $iblock_id = 6; //ID инфоблока товара
- $file = '1c_exchange/tovar_export_site2.csv';
- $fp = fopen($file, 'w');
- if ($fp) {
- $arSelect = Array("XML_ID", "NAME", "PREVIEW_TEXT");
- foreach ($price_types as $type_id) {
- $arSelect[] = "CATALOG_GROUP_".$type_id;
- }
- $arFilter = Array( "IBLOCK_ID"=> $iblock_id );
- $res = CIBlockElement::GetList(Array("ID" => "DESC"), $arFilter, false, false, $arSelect);
- $exported = 0;
- while($ar_ob = $res->Fetch())
- {
- $fields = array(
- $ar_ob['XML_ID'],
- $ar_ob['NAME'],
- $ar_ob['PREVIEW_TEXT']
- );
- foreach ($price_types as $type_id) {
- $fields[] = $ar_ob["CATALOG_PRICE_".$type_id];
- }
- $fields[] = $ar_ob["CATALOG_QUANTITY"];
- array_walk_recursive($fields, function(&$var){
- if (is_string($var))
- $var = iconv('UTF-8', 'cp1251', $var);
- });
- fputcsv($fp, $fields, ';');
- $exported++;
- }
- echo 'Exported products: '. $exported;
- } else {
- echo 'Error creating file: ' . $file;
- }
- }
- function import_orders() {
- $import_columns = array(
- "ID",
- "PAYED",
- "STATUS_ID",
- "DATE_STATUS"
- );
- $import_columns = array_flip($import_columns);
- $errors = array();
- $file = '1c_exchange/orders_site2.csv';
- $updated = 0;
- if (($handle = fopen($file, "r")) !== FALSE) {
- while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
- array_walk_recursive($data, function(&$var){
- if (is_string($var))
- $var = iconv('cp1251', 'UTF-8', $var);
- });
- $result = false;
- $arFields = array(
- "PAYED" => $data[ $import_columns["PAYED"] ],
- "STATUS_ID" => $data[ $import_columns["STATUS_ID"] ],
- "DATE_STATUS" => $data[ $import_columns["DATE_STATUS"] ],
- );
- $ID = $data[ $import_columns["ID"] ];
- $arOrder = CSaleOrder::GetByID($ID);
- if ($arOrder) {
- $result = CSaleOrder::Update($ID, $arFields);
- }
- if (!$result) {
- $errors[] = 'Error updating order #' . $ID;
- } else {
- $updated++;
- }
- }
- fclose($handle);
- echo 'Updated orders: '. $updated . '<br>';
- echo implode("<br>", $errors);
- } else {
- echo 'Error opening file: ' . $file;
- }
- }
- function export_orders() {
- $file = '1c_exchange/orders_export_site2.csv';
- $fp = fopen($file, 'w');
- if ($fp) {
- $db_sales = CSaleOrder::GetList();
- $exported = 0;
- while ($ar_sales = $db_sales->Fetch())
- {
- $username = $ar_sales['USER_LAST_NAME'] . ' ' . $ar_sales['USER_NAME'];
- $dbBasket = CSaleBasket::GetList(Array("ID"=>"ASC"), Array("ORDER_ID"=>$ar_sales["ID"]));
- while ($ar_products = $dbBasket->Fetch())
- {
- $summ = $ar_products['PRICE'] * (int)$ar_products['QUANTITY'];
- $fields = array(
- $ar_sales['ID'],
- $ar_sales['DATE_INSERT'],
- $ar_sales['USER_LOGIN'],
- $username,
- $ar_products['PRODUCT_XML_ID'],
- (int)$ar_products['QUANTITY'],
- $ar_products['NOTES'],
- $ar_products['PRICE'],
- $summ
- );
- array_walk_recursive($fields, function(&$var){
- if (is_string($var))
- $var = iconv('UTF-8', 'cp1251', $var);
- });
- fputcsv($fp, $fields, ';');
- }
- $exported++;
- }
- echo 'Exported orders: ' . $exported;
- } else {
- echo 'Error creating file: ' . $file;
- }
- }
- ?>
- <?
- require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement