Починил аналоги и поиск

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2022-03-05 13:44:11 +10:00
parent 856d4f1995
commit c5e24d7838
3 changed files with 23 additions and 6 deletions

View File

@ -1052,11 +1052,11 @@ class ProfileController extends Controller
foreach (Supply::searchByImport($import->readId(), limit: 9999) as $supply) { foreach (Supply::searchByImport($import->readId(), limit: 9999) as $supply) {
// Перебор найденных поставок // Перебор найденных поставок
if (ImportEdgeSupply::searchBySupply($supply, limit: 1)?->delete() === 1) { if (ImportEdgeSupply::searchBySupply($supply)?->delete()) {
// Удалено ребро: ИНСТАНЦИЯ ПОСТАВКИ -> ПОСТАВКА // Удалено ребро: ИНСТАНЦИЯ ПОСТАВКИ -> ПОСТАВКА
// Удаление поставки // Удаление поставки
if ($supply->delete() === 1) ++$deleted; if ($supply->delete()) ++$deleted;
} }
} }

View File

@ -52,4 +52,9 @@ class ImportEdgeSupply extends Edge
] ]
); );
} }
public static function searchBySupply(Supply $supply): static
{
return static::find()->where(['_to' => $supply->readId()])->one();
}
} }

View File

@ -173,7 +173,17 @@ class Supply extends Product implements ProductInterface, OfferInterface
*/ */
public static function searchByImport(string|null $id = null, int|null $limit = 10): array public static function searchByImport(string|null $id = null, int|null $limit = 10): array
{ {
return static::find()->where(['_from' => $id])->limit($limit)->all(); // Инициализация буфера вывода
$supplies = [];
foreach (ImportEdgeSupply::find()->where(['_from' => $id])->limit($limit)->all() as $edge) {
// Перебор найденных рёбер
// Поиск поставки и запись в буфер вывода
$supplies[] = static::searchById($edge->_to);
}
return $supplies;
} }
/** /**
@ -456,13 +466,16 @@ class Supply extends Product implements ProductInterface, OfferInterface
$amount = $row['Количество'] ?? $row['количество'] ?? $row['Amount'] ?? $row['amount'] ?? $row['amnt'] ?? 1; $amount = $row['Количество'] ?? $row['количество'] ?? $row['Amount'] ?? $row['amount'] ?? $row['amnt'] ?? 1;
// Поиск аналогов // Поиск аналогов
$analogs = explode(',', $row['Артикул'] ?? $row['артикул'] ?? $row['Article'] ?? $row['article'] ?? $row['catn'], 50); $analogs = explode(',', (string) ($row['Аналоги'] ?? $row['аналоги'] ?? $row['Analogs'] ?? $row['analogs'] ?? $row['ОЕМ'] ?? $row['eom'] ?? ''), 50);
// Инициализация функции создания поставки // Инициализация функции создания поставки
$create = function (string $_supply) use ($row, $analogs, &$created, &$updated, &$imported, $amount, $account): bool { $create = function (string $_supply) use ($row, $analogs, &$created, &$updated, &$imported, $amount, $account): bool {
// Очистка // Очистка
$_supply = trim($_supply); $_supply = trim($_supply);
// Проверка на то, что передано пустое поле "Аналоги" (подразумевается)
if (empty($_supply)) return false;
// Инициализация буфера документов // Инициализация буфера документов
$_row = []; $_row = [];
@ -473,7 +486,7 @@ class Supply extends Product implements ProductInterface, OfferInterface
$_row['catn'] = $_supply; $_row['catn'] = $_supply;
$_row['cost'] = (float) preg_replace('/[^\d\.]+/', '', preg_replace('/\,+/', ' ', $row['Стоимость'] ?? $row['стоимость'] ?? $row['Цена'] ?? $row['цена'] ?? $row['Cost'] ?? $row['cost'] ?? $row['Price'] ?? $row['price'])); $_row['cost'] = (float) preg_replace('/[^\d\.]+/', '', preg_replace('/\,+/', ' ', $row['Стоимость'] ?? $row['стоимость'] ?? $row['Цена'] ?? $row['цена'] ?? $row['Cost'] ?? $row['cost'] ?? $row['Price'] ?? $row['price']));
$_row['prod'] = $row['Производитель'] ?? $row['производитель'] ?? $row['Production'] ?? $row['production'] ?? $row['prod']; $_row['prod'] = $row['Производитель'] ?? $row['производитель'] ?? $row['Production'] ?? $row['production'] ?? $row['prod'];
$_row['oemn'] = $analogs; $_row['oemn'] = array_walk($analogs, 'trim');
// Инициализация буфера поставки // Инициализация буфера поставки
$supply = new static($_row); $supply = new static($_row);
@ -616,7 +629,6 @@ class Supply extends Product implements ProductInterface, OfferInterface
// if (isset($product->prod) && $product->prod === $supply->prod) { // if (isset($product->prod) && $product->prod === $supply->prod) {
// // Производитель совпадает с тем, что указан в товаре // // Производитель совпадает с тем, что указан в товаре
for ($i = 0; $i++ < $amount;) { for ($i = 0; $i++ < $amount;) {
// Перебор создаваемых рёбер (так работает обозначение количества товаров в наличии) // Перебор создаваемых рёбер (так работает обозначение количества товаров в наличии)