'products_sku.id', 'Год' => 'products_sku.year', 'Округ' => 'districts.shortname', 'Район' => 'areas.name', 'Адрес площадки' => 'orders.object_address', '№ заказа МАФ' => 'maf_orders.order_number', 'Статус' => 'products_sku.status', 'RFID' => 'products_sku.rfid', 'Номер фабрики' => 'products_sku.factory_number', 'Дата производства' => 'products_sku.manufacture_date', 'Номер ведомости' => 'products_sku.statement_number', 'Дата ведомости' => 'products_sku.statement_date', 'Номер УПД' => 'products_sku.upd_number', 'Номер номенклатуры' => 'products.nomenclature_number', 'Артикул' => 'products.article', 'Наименование по ТЗ' => 'products.name_tz', 'Тип по ТЗ' => 'products.type_tz', 'Тип' => 'products.type', 'Наименование производителя' => 'products.manufacturer_name', 'Примечания' => 'products_sku.comment', // заголовки из файла для проверки и маппинга ]; public function __construct(Import $import) { parent::__construct($import); $this->headers = self::HEADERS; } public function handle(): bool { if(!$this->prepare()) { return false; } $strNumber = 0; $result = [ 'mafsUpdated' => 0, ]; foreach($this->rowIterator as $row){ $strNumber++; $r = $this->rowToArray($row); if($strNumber === 1) { echo $this->import->log('Skip headers Row: ' . $strNumber); continue; } try { $logMessage = "Row $strNumber: " . $r['orders.object_address'] . '. '; $id = (int) $r['products_sku.id']; $data = [ 'rfid' => (string) $r['products_sku.rfid'], 'factory_number' => (string) $r['products_sku.factory_number'], 'manufacture_date' => (!is_null($r['products_sku.manufacture_date']) && DateHelper::isDate($r['products_sku.manufacture_date'])) ? DateHelper::getDateForDB($r['products_sku.manufacture_date']) : null, 'statement_number' => (string) $r['products_sku.statement_number'], 'statement_date' => (!is_null($r['products_sku.statement_date']) && DateHelper::isDate($r['products_sku.statement_date'])) ? DateHelper::getDateForDB((int)$r['products_sku.statement_date']) : null, 'upd_number' => (string) $r['products_sku.upd_number'], 'comment' => (string) $r['products_sku.comment'], ]; $logMessage .= $r['products_sku.statement_date'] . ' ' . $r['products_sku.manufacture_date'] .' '; $productSKU = ProductSKU::query() ->where('id', $id) ->first(); if ($productSKU) { $logMessage .= 'Found and updated product with id: ' . $productSKU->id; $productSKU->update($data); $productSKU->save(); } else { echo $this->import->log('Product sku with id ' . $id . ' NOT FOUND!', 'WARNING'); } echo $this->import->log($logMessage); } catch (\Exception $e) { echo $this->import->log($e->getMessage(), 'WARNING'); } } echo $this->import->log(print_r($result, true)); $this->import->status = 'DONE'; $this->import->save(); return true; } }