From a2b2fbb599ea4c92508d04d6126c2ee41666b359 Mon Sep 17 00:00:00 2001 From: merelendor Date: Thu, 4 Jul 2024 16:29:14 +0300 Subject: [PATCH] USED DROM XML update - move light commercial types to special --- .../classes/drom/DromXMLGenerator.php | 197 ++++++++++-------- 1 file changed, 105 insertions(+), 92 deletions(-) diff --git a/bitrix/php_interface/classes/drom/DromXMLGenerator.php b/bitrix/php_interface/classes/drom/DromXMLGenerator.php index a07a1f4..a78516d 100644 --- a/bitrix/php_interface/classes/drom/DromXMLGenerator.php +++ b/bitrix/php_interface/classes/drom/DromXMLGenerator.php @@ -202,102 +202,111 @@ class DromXMLGenerator { $this->total++; - $type = $entry['PROPERTIES']['VEHICLE_SUBTYPE']['VALUE']; - //print $type."\n"; + $type = $entry['PROPERTIES']['VEHICLE_TYPE']['VALUE']; + $subtype = $entry['PROPERTIES']['VEHICLE_SUBTYPE']['VALUE']; + //print $type." ".$subtype."\n"; - if($type === "Легковой автомобиль") + if($type === "Лёгкий коммерческий") { - $this->found_cars++; - $this->buildOffer(false, [ 'group' => 'car' ], $entry); - - /* - $idMark = $this->getDictionaryRecordId($this->dictionaries['car']['brands'], mb_strtoupper($entry['PROPERTIES']['BRAND']['RELATED']['NAME'])); - //print $entry['CODE']." - ".$entry['PROPERTIES']['BRAND']['RELATED']['NAME']." - ".$entry['PROPERTIES']['MODEL']['RELATED']['NAME']." - [".$idMark."] - [".$idModel."]\n"; - //if(is_null($idMark)) { $this->errors .= "Не найдена марка ".$entry['PROPERTIES']['BRAND']['RELATED']['NAME']."\n"; continue; } - - if($idMark !== null) - { - //* id марки авто (см. файл-справочник); если не можете указать id, то укажите название марки текстом в поле sMark - $offer['idMark'] = $idMark; - } - else - { - //* название марки авто (Toyota, Honda, BMW и т.п.); указывать обязательно только в том случае, если не можете указать idMark - $offer['sMark'] = $entry['PROPERTIES']['BRAND']['RELATED']['NAME']; - } - - $idModel = $this->getDictionaryRecordId($this->dictionaries['car']['models'], mb_strtoupper($entry['PROPERTIES']['MODEL']['RELATED']['NAME'])); - //if(is_null($idModel)) { $this->errors .= "Не найдена модель ".$entry['PROPERTIES']['MODEL']['RELATED']['NAME']." для ".".$entry['PROPERTIES']['BRAND']['RELATED']['NAME']."."\n"; continue; } - if($idModel !== null) - { - //* id модели авто (см. файл-справочник); если не можете указать id, то укажите название модели текстом в поле sModel - $offer['idModel'] = $idModel; - } - else - { - //* название модели авто (Land Cruiser, Accord, X5 и т.п.); указывать обязательно только в том случае, если не можете указать idModel - $offer['sModel'] = $entry['PROPERTIES']['MODEL']['RELATED']['NAME']; - } - */ - - /* - $payload = [ - "idOffer" => $entry['CODE'], //* уникальный id объявления в вашей базе данных - "idMark" => "", //* id марки авто (см. файл-справочник); если не можете указать id, то укажите название марки текстом в поле sMark - "idModel" => "", //* id модели авто (см. файл-справочник); если не можете указать id, то укажите название модели текстом в поле sModel - "sMark" => "", //* название марки авто (Toyota, Honda, BMW и т.п.); указывать обязательно только в том случае, если не можете указать idMark - "sModel" => "", //* название модели авто (Land Cruiser, Accord, X5 и т.п.); указывать обязательно только в том случае, если не можете указать idModel - "idCountry" => "", //id страны, где находится авто (см. файл-справочник, по умолчанию — 0) - "idCity" => "", //id города, в котором находится авто (см. файл-справочник) - "sCity" => "", //название города, в котором находится авто (см. файл-справочник) - "YearOfMade" => "", //год выпуска ТС (только год, 4 цифры: 1995, 2003, 2018 и т.п.) - "VIN" => $entry['PROPERTIES']['VIN']['VALUE'], //* VIN или номер кузова, если VIN отсутствует - "Price" => $entry['PROPERTIES']['PRICE']['VALUE'], //цена в рублях - "NewType" => 0, //признак, что автомобиль новый; 1 — новый, 0 — не новый (с пробегом) - "Volume" => $entry['PROPERTIES']['ENGINE_VOLUME']['VALUE'], //объем двигателя в куб.см (пример: 599, 1300, 2631 и т.п.) - "FrameType" => "???", //тип кузова (см. файл-справочник) - "Color" => "???", //цвет кузова (см. файл-справочник) - "idTransmission" => "???", //id типа трансмиссии (см. файл-справочник) - "sTransmission" => "???", //название типа трансмиссии - "idEngineType" => "", //id типа двигателя (см. файл-справочник) - "sEngineType" => "", //название типа двигателя - "idHybridType" => "", //гибрид (см. файл-справочник) - "sHybridType" => "", //гибрид (да, нет) - "idGbo" => "", //ГБО (см. файл-справочник) - "sGbo" => "", //ГБО (да, нет) - "idDriveType" => "???", //id типа двигателя (см. файл-справочник) - "sDriveType" => "", //название типа двигателя - "sWheelType" => "", //положение руля (левый, правый) - "Haul" => "", //пробег (показания одометра в километрах) - "sComplectation" => "", //название комплектации (в соответствии с каталогом) - "idComplectation" => "", //id комплектации на Дроме (в соответствии с каталогом) - "Additional" => "", //текстовое описание ТС (комплектация, оснащение, тюнинг и т.п.), здесь можно указать сссылку на видео, размещенное на YouTube - "Photos" => "", //секция со списком фотографий (ниже есть подробное описание секции) - "Phone" => "", //номер телефона (поле не должно быть больше 20 символов) - "Whereabouts" => "", //авто в наличии или под заказ (см. файл-справочник) - "Power" => $entry['PROPERTIES']['ENGINE_POWER']['VALUE'], //мощность автомобиля в лошадиных силах - "idCertProgram" => "", //программа сертификации (см. файл-справочник) - "DamagedType" => "", //признак для поврежденных автомобилей (0 - небитые, 1 - битые или не на ходу) - "SOR" => "", //номер свидетельства о регистрации ТС для авто с пробегом (10 символов) - ]; - */ + $this->found_special++; + $this->buildOffer(true, [ 'group' => 'truck', 'id' => 27 ], $entry); } else { - $this->found_special++; - - $frame = $this->getFrameType(mb_strtoupper($type), mb_strtoupper($entry['PROPERTIES']['MODEL']['RELATED']['NAME'])); - - if(!is_null($frame)) + if($subtype === "Легковой автомобиль") { - $this->buildOffer(true, $frame, $entry); + $this->found_cars++; + $this->buildOffer(false, [ 'group' => 'car' ], $entry); + + /* + $idMark = $this->getDictionaryRecordId($this->dictionaries['car']['brands'], mb_strtoupper($entry['PROPERTIES']['BRAND']['RELATED']['NAME'])); + //print $entry['CODE']." - ".$entry['PROPERTIES']['BRAND']['RELATED']['NAME']." - ".$entry['PROPERTIES']['MODEL']['RELATED']['NAME']." - [".$idMark."] - [".$idModel."]\n"; + //if(is_null($idMark)) { $this->errors .= "Не найдена марка ".$entry['PROPERTIES']['BRAND']['RELATED']['NAME']."\n"; continue; } + + if($idMark !== null) + { + //* id марки авто (см. файл-справочник); если не можете указать id, то укажите название марки текстом в поле sMark + $offer['idMark'] = $idMark; + } + else + { + //* название марки авто (Toyota, Honda, BMW и т.п.); указывать обязательно только в том случае, если не можете указать idMark + $offer['sMark'] = $entry['PROPERTIES']['BRAND']['RELATED']['NAME']; + } + + $idModel = $this->getDictionaryRecordId($this->dictionaries['car']['models'], mb_strtoupper($entry['PROPERTIES']['MODEL']['RELATED']['NAME'])); + //if(is_null($idModel)) { $this->errors .= "Не найдена модель ".$entry['PROPERTIES']['MODEL']['RELATED']['NAME']." для ".".$entry['PROPERTIES']['BRAND']['RELATED']['NAME']."."\n"; continue; } + if($idModel !== null) + { + //* id модели авто (см. файл-справочник); если не можете указать id, то укажите название модели текстом в поле sModel + $offer['idModel'] = $idModel; + } + else + { + //* название модели авто (Land Cruiser, Accord, X5 и т.п.); указывать обязательно только в том случае, если не можете указать idModel + $offer['sModel'] = $entry['PROPERTIES']['MODEL']['RELATED']['NAME']; + } + */ + + /* + $payload = [ + "idOffer" => $entry['CODE'], //* уникальный id объявления в вашей базе данных + "idMark" => "", //* id марки авто (см. файл-справочник); если не можете указать id, то укажите название марки текстом в поле sMark + "idModel" => "", //* id модели авто (см. файл-справочник); если не можете указать id, то укажите название модели текстом в поле sModel + "sMark" => "", //* название марки авто (Toyota, Honda, BMW и т.п.); указывать обязательно только в том случае, если не можете указать idMark + "sModel" => "", //* название модели авто (Land Cruiser, Accord, X5 и т.п.); указывать обязательно только в том случае, если не можете указать idModel + "idCountry" => "", //id страны, где находится авто (см. файл-справочник, по умолчанию — 0) + "idCity" => "", //id города, в котором находится авто (см. файл-справочник) + "sCity" => "", //название города, в котором находится авто (см. файл-справочник) + "YearOfMade" => "", //год выпуска ТС (только год, 4 цифры: 1995, 2003, 2018 и т.п.) + "VIN" => $entry['PROPERTIES']['VIN']['VALUE'], //* VIN или номер кузова, если VIN отсутствует + "Price" => $entry['PROPERTIES']['PRICE']['VALUE'], //цена в рублях + "NewType" => 0, //признак, что автомобиль новый; 1 — новый, 0 — не новый (с пробегом) + "Volume" => $entry['PROPERTIES']['ENGINE_VOLUME']['VALUE'], //объем двигателя в куб.см (пример: 599, 1300, 2631 и т.п.) + "FrameType" => "???", //тип кузова (см. файл-справочник) + "Color" => "???", //цвет кузова (см. файл-справочник) + "idTransmission" => "???", //id типа трансмиссии (см. файл-справочник) + "sTransmission" => "???", //название типа трансмиссии + "idEngineType" => "", //id типа двигателя (см. файл-справочник) + "sEngineType" => "", //название типа двигателя + "idHybridType" => "", //гибрид (см. файл-справочник) + "sHybridType" => "", //гибрид (да, нет) + "idGbo" => "", //ГБО (см. файл-справочник) + "sGbo" => "", //ГБО (да, нет) + "idDriveType" => "???", //id типа двигателя (см. файл-справочник) + "sDriveType" => "", //название типа двигателя + "sWheelType" => "", //положение руля (левый, правый) + "Haul" => "", //пробег (показания одометра в километрах) + "sComplectation" => "", //название комплектации (в соответствии с каталогом) + "idComplectation" => "", //id комплектации на Дроме (в соответствии с каталогом) + "Additional" => "", //текстовое описание ТС (комплектация, оснащение, тюнинг и т.п.), здесь можно указать сссылку на видео, размещенное на YouTube + "Photos" => "", //секция со списком фотографий (ниже есть подробное описание секции) + "Phone" => "", //номер телефона (поле не должно быть больше 20 символов) + "Whereabouts" => "", //авто в наличии или под заказ (см. файл-справочник) + "Power" => $entry['PROPERTIES']['ENGINE_POWER']['VALUE'], //мощность автомобиля в лошадиных силах + "idCertProgram" => "", //программа сертификации (см. файл-справочник) + "DamagedType" => "", //признак для поврежденных автомобилей (0 - небитые, 1 - битые или не на ходу) + "SOR" => "", //номер свидетельства о регистрации ТС для авто с пробегом (10 символов) + ]; + */ } else { - $this->invalid_special++; - print $this->invalid_special." НЕ УДАЛОСЬ ОПРЕДЕЛИТЬ ТИП: ".mb_strtoupper($type)." \t\t[ ".$entry['CODE']." ][ ".$entry['PROPERTIES']['BRAND']['RELATED']['NAME']." ][ ".$entry['PROPERTIES']['MODEL']['RELATED']['NAME']." ]\n"; + $this->found_special++; + + $frame = $this->getFrameType(mb_strtoupper($subtype), mb_strtoupper($entry['PROPERTIES']['MODEL']['RELATED']['NAME'])); - //$this->not_found_special++; + if(!is_null($frame)) + { + $this->buildOffer(true, $frame, $entry); + } + else + { + $this->invalid_special++; + print $this->invalid_special." НЕ УДАЛОСЬ ОПРЕДЕЛИТЬ ТИП: ".mb_strtoupper($subtype)." \t\t[ ".$entry['CODE']." ][ ".$entry['PROPERTIES']['BRAND']['RELATED']['NAME']." ][ ".$entry['PROPERTIES']['MODEL']['RELATED']['NAME']." ]\n"; + + //$this->not_found_special++; + } } } } @@ -321,9 +330,6 @@ class DromXMLGenerator $payload["Haul"] = $entry['PROPERTIES']['MILEAGE']['VALUE']; } - print_r($entry['PROPERTIES']['AFTER_ACCIDENT']); - print "\n"; - if(!empty($entry['PROPERTIES']['AFTER_ACCIDENT']['VALUE'])) { $payload[ $special ? "idDamagedType" : "DamagedType" ] = $entry['PROPERTIES']['AFTER_ACCIDENT']['VALUE_XML_ID'] == "YES" ? 1 : 0; @@ -360,9 +366,16 @@ class DromXMLGenerator } else { - $this->invalid_special++; - print $this->invalid_special." НЕТ КОЛЕСНОЙ ФОРМУЛЫ: ".$entry['CODE']." - ".$item_name." [".$wheel_type_matches[0]."]\n"; - return; + if(stripos($item_name, "КАБИНЕТ") !== false || stripos($item_name, "ФУРГОН") !== false || stripos($item_name, "БОРТОВОЙ") !== false || stripos($item_name, "СОБОЛЬ") !== false) + { + $payload['idWheelFormulaType'] = $this->getDictionaryRecordId($this->dictionaries[ $frame['group'] ]['wheels'], "4X2"); + } + else + { + $this->invalid_special++; + print $this->invalid_special." НЕТ КОЛЕСНОЙ ФОРМУЛЫ: ".$entry['CODE']." - ".$item_name." [".$wheel_type_matches[0]."]\n"; + return; + } } }