itemFacade = $itemFacade; $this->itemCategoryRepository = $itemCategoryRepository; } /** * Run the database seeds. * * @return void */ public function run(WarehouseFacade $warehouseFacade) { ImportSeeder::import('items', function ($items, $a, $service) use ($warehouseFacade) { foreach ($items as $item) { $category = $this->itemCategoryRepository->findByName($item->type); $saleInfo = null; $purchaseInfo = null; if ($item->sales) { if ($coa = ChartOfAccount::whereImportId($item->sales->coa_id, $service->id)->first()) { $saleInfo = (new ItemSaleInfoAttr) ->setPrice($item->sales->selling_price) ->setChartOfAccountId($coa->id) ->setDescription($item->sales->description); } } if ($item->purchase) { if ($coa = ChartOfAccount::whereImportId($item->purchase->coa_id, $service->id)->first()) { $purchaseInfo = (new ItemPurchaseInfoAttr()) ->setPrice($item->purchase->cost_price) ->setChartOfAccountId($coa->id) ->setDescription($item->purchase->description); } } $this->itemFacade->handleSaveItem( (new ItemAttr) ->setImportId($item->id) ->setItemCategoryId($category->id ?? $item->type) ->setName($item->name) ->setItemSaleInfoAttr($saleInfo) ->setItemPurchaseInfoAttr($purchaseInfo) ->setSku($item->sku) ->setUnit($item->unit) ->setItemWarehouses( [ (new ItemWarehouseAttr) ->setInitialStock(0) ->setWarehouseId( $warehouseFacade->findByNameOrCreate('Jakarta')->id ) ] ) ); } }); } }