'Lager 1 - Standardlager', 3 => 'Lager 3 - DLX', 5 => 'Lager 5 - Verkaufsfilale', 8 => 'Lager 8 - Standardlager', 10 => 'Lager 10 - OJ EF', ); /** * @param ProductRepository $productRepository * @param WarehouseRepository $warehouseRepository * @param StockRepository $stockRepository * @param LoggerInterface $logger * @param string $rootPath */ public function __construct( ProductRepository $productRepository, WarehouseRepository $warehouseRepository, StockRepository $stockRepository, LoggerInterface $logger, string $rootPath) { $this->productRepository = $productRepository; $this->warehouseRepository = $warehouseRepository; $this->stockRepository = $stockRepository; $this->logger = $logger; $this->rootPath = $rootPath; } /** * Holt alle Produkte und deren Lagerbestände * @param array $warehousesName * @return array */ public function getProducts(array $warehousesName): array { $data = array(); $products = $this->productRepository->findAll(); foreach ($warehousesName as $wn) { $warehouse = $this->warehouseRepository->findByWarehouseByName($wn); } if ($warehouse) { foreach ($warehouse as $w) { $stock = $this->stockRepository->findBy(['warehouse' => $w]); if ($stock) { foreach ($stock as $s) { $warehouse = $s->getWarehouse(); $warehouseName = $warehouse->getName(); $data[$s->getProductId() . $warehouseName] = [ 'gtin' => $products[$s->getProductId()]->getGtin(), 'stock' => $s->getInstock(), 'warehouse' => $this->arrLager[$warehouseName] ?? 'Lager ' . $warehouseName ]; } } else { //Wenn Product nicht gefunden werden kann, dann setzte Bestand auf Null // $data[] = [ // 'gtin' => $products[$s->getProductId()]->getGtin(), // 'stock' => 0, // 'warehouse' => 0 // ]; // $this->logger->info('No stock for product ' . s->getProductId()->getId()); } } } // foreach ($r as $product) { // // $stock = $this->stockRepository->findBy(['product_id' => $product->getId()]); // // if ($stock) { // foreach ($stock as $s) { // $warehouse = $s->getWarehouse(); // $warehouseName = $warehouse->getName(); // // $data[$product->getId() . $warehouseName] = [ // 'gtin' => $product->getGtin(), // 'stock' => $s->getInstock(), // 'warehouse' => $this->arrLager[$warehouseName] ?? 'Lager ' . $warehouseName // ]; // // } // } else { // $data[$product->getId()] = [ // 'gtin' => $product->getGtin(), // 'stock' => 0, // 'warehouse' => 0 // ]; // // $this->logger->info('No stock for product ' . $product->getId()); // } // } return $data; } /** * @param array $data * @param string $warehouse * @return void */ public function createExportFile(array $data, string $warehouse): void { try { $file = $this->rootPath . '/jtl/' . $warehouse . '.csv'; dump($file); $writer = Writer::createFromPath($file, 'w+'); $bytes = $writer->insertAll(new ArrayIterator($data)); if ($bytes) { $this->logger->info('Exported ' . $bytes . ' bytes'); $FTP = new Ftp(); $FTP->uploadFile($file, $warehouse); } } catch (Exception $e) { $this->logger->error($e->getMessage()); } } }