21 $headers = new \Magento\Framework\DataObject(
24 'country_name' =>
__(
'Country'),
25 'region_name' =>
__(
'State'),
26 'tax_postcode' =>
__(
'Zip/Post Code'),
28 'zip_is_range' =>
__(
'Zip/Post is Range'),
29 'zip_from' =>
__(
'Range From'),
30 'zip_to' =>
__(
'Range To'),
33 $template =
'"{{code}}","{{country_name}}","{{region_name}}","{{tax_postcode}}","{{rate}}"' .
34 ',"{{zip_is_range}}","{{zip_from}}","{{zip_to}}"';
37 $storeTaxTitleTemplate = [];
38 $taxCalculationRateTitleDict = [];
40 foreach ($this->_objectManager->create(
41 \
Magento\Store\Model\Store::class
42 )->getCollection()->setLoadDefault(
45 $storeTitle =
'title_' .
$store->getId();
47 $template .=
',"{{' . $storeTitle .
'}}"';
48 $storeTaxTitleTemplate[$storeTitle] =
null;
54 foreach ($this->_objectManager->create(
56 )->getCollection() as
$title) {
57 $rateId =
$title->getTaxCalculationRateId();
59 if (!array_key_exists($rateId, $taxCalculationRateTitleDict)) {
60 $taxCalculationRateTitleDict[$rateId] = $storeTaxTitleTemplate;
63 $taxCalculationRateTitleDict[$rateId][
'title_' .
$title->getStoreId()] =
$title->getValue();
69 )->joinCountryTable()->joinRegionTable();
72 if (
$rate->getTaxRegionId() == 0) {
73 $rate->setRegionName(
'*');
76 if (array_key_exists(
$rate->getId(), $taxCalculationRateTitleDict)) {
77 $rate->addData($taxCalculationRateTitleDict[
$rate->getId()]);
79 $rate->addData($storeTaxTitleTemplate);
84 return $this->fileFactory->create(
'tax_rates.csv',
$content, DirectoryList::VAR_DIR);
92 return $this->_authorization->isAllowed(
93 'Magento_Tax::manage_tax' 94 ) || $this->_authorization->isAllowed(
95 'Magento_TaxImportExport::import_export'