USED DROM XML update - move light commercial types to special

This commit is contained in:
merelendor 2024-07-04 16:29:14 +03:00
parent 8662db0e5a
commit a2b2fbb599

View File

@ -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;
}
}
}