You can get the source by using the repository \Magento\InventoryApi\Api\SourceRepositoryInterface
and filter source name by using \Magento\Framework\Api\SearchCriteriaBuilder
Magento has default source with name “Default Source”. You can’t delete this source.
You can get the source by its name, code, description, latitude, longitude and postcode
Here is the example of retrieving the source data
<?php namespace Mageprince\Testing\Model; class SourceModel { private $searchCriteriaBuilder; private $sourceRepository; public function __construct( ... \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder, \Magento\InventoryApi\Api\SourceRepositoryInterface $sourceRepository ... ) { $this->searchCriteriaBuilder = $searchCriteriaBuilder; $this->sourceRepository = $sourceRepository; } public function getSources($sourceName) { $searchCriteria = $this->searchCriteriaBuilder ->addFilter('name', $sourceName) //->addFilter('source_code', $souceCode) // Filter by source code //->addFilter('enabled', $enabled) // Filter by enable //->addFilter('description', $description) // Filter by description //->addFilter('latitude', $lat) // Filter by latitude //->addFilter('longitude', $lag) // Filter by longitude //->addFilter('postcode', $postcode) // Filter by postcode ->create(); $sourceData = $this->sourceRepository->getList($searchCriteria); return $sourceData->getItems(); } }
Now you can use getSources() function to get the source data by sources name.
$sourceName = 'My Store'; $sourceData = $this->getSources($sourceName) foreach ($sourceData as $source) { echo $sourceName->getName() // My Store echo $sourceName->getEnabled() // 1 echo $sourceName->getDescription() // Test Description echo $sourceName->getLatitude() // 0.000000 echo $sourceName->getLongitude() // 0.000000 echo $sourceName->getPostcode() // 382415 }
You can also use other filters as described in code.
Hope this will help you. Fill free to comment below if you have any queries.
Thank you for reading. Keep sharing 🙂