Skip to content

Commit e52e2d3

Browse files
Tax rate import completed
1 parent deca70e commit e52e2d3

File tree

4 files changed

+37
-37
lines changed

4 files changed

+37
-37
lines changed

packages/Webkul/Admin/src/Http/Controllers/Settings/DataTransfer/ImportController.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public function store()
101101

102102
session()->flash('success', trans('admin::app.settings.data-transfer.imports.create-success'));
103103

104-
return redirect()->route('admin.settings.data_transfer.imports.index');
104+
return redirect()->route('admin.settings.data_transfer.imports.import', $import->id);
105105
}
106106

107107
/**
@@ -181,7 +181,7 @@ public function update(int $id)
181181

182182
session()->flash('success', trans('admin::app.settings.data-transfer.imports.update-success'));
183183

184-
return redirect()->route('admin.settings.data_transfer.imports.index');
184+
return redirect()->route('admin.settings.data_transfer.imports.import', $import->id);
185185
}
186186

187187
/**

packages/Webkul/DataTransfer/src/Helpers/Importers/TaxRate/Importer.php

+31-35
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use Webkul\DataTransfer\Repositories\ImportBatchRepository;
1212
use Webkul\Tax\Repositories\TaxRateRepository;
1313

14-
class TaxRate extends AbstractImporter
14+
class Importer extends AbstractImporter
1515
{
1616
/**
1717
* Error code for non existing identifier
@@ -28,7 +28,7 @@ class TaxRate extends AbstractImporter
2828
*/
2929
protected array $validColumnNames = [
3030
'identifier',
31-
'is_zip',
31+
'is_zip_range',
3232
'zip_code',
3333
'zip_from',
3434
'zip_to',
@@ -128,13 +128,13 @@ public function validateRow(array $rowData, int $rowNumber): bool
128128
* Validate product attributes
129129
*/
130130
$validator = Validator::make($rowData, [
131-
'identifier' => 'required|string',
132-
'is_zip' => 'sometimes',
133-
'zip_code' => 'nullable',
134-
'zip_from' => 'nullable|required_with:is_zip',
135-
'zip_to' => 'nullable|required_with:is_zip,zip_from',
136-
'country' => 'required|string',
137-
'tax_rate' => 'required|numeric|min:0.0001',
131+
'identifier' => 'required|string',
132+
'is_zip_range' => 'sometimes|boolean',
133+
'zip_code' => 'nullable|required_if:is_zip_range,0',
134+
'zip_from' => 'nullable|required_if:is_zip_range,1',
135+
'zip_to' => 'nullable|required_if:is_zip_range,1',
136+
'country' => 'required|string',
137+
'tax_rate' => 'required|numeric|min:0.0001',
138138
]);
139139

140140
if ($validator->fails()) {
@@ -240,34 +240,16 @@ protected function saveTaxRatesData(ImportBatchContract $batch): bool
240240
/**
241241
* Prepare tax rates for import
242242
*/
243-
$this->prepareTaxRates($rowData, $taxRates);
244-
}
245-
246-
$this->saveTaxRates($taxRates);
247-
248-
return true;
249-
}
250-
251-
/**
252-
* Prepare tax rates from current batch
253-
*/
254-
public function prepareTaxRates(array $rowData, array &$taxRates): void
255-
{
256-
if ($this->isIdentifierExist($rowData['identifier'])) {
257-
$taxRates['update'][$rowData['identifier']] = $rowData;
258-
} else {
259-
$taxRates['insert'][$rowData['identifier']] = array_merge($rowData, [
260-
'created_at' => $rowData['created_at'] ?? now(),
261-
'updated_at' => $rowData['updated_at'] ?? now(),
262-
]);
243+
if ($this->isIdentifierExist($rowData['identifier'])) {
244+
$taxRates['update'][$rowData['identifier']] = $rowData;
245+
} else {
246+
$taxRates['insert'][$rowData['identifier']] = array_merge($rowData, [
247+
'created_at' => $rowData['created_at'] ?? now(),
248+
'updated_at' => $rowData['updated_at'] ?? now(),
249+
]);
250+
}
263251
}
264-
}
265252

266-
/**
267-
* Save tax rates from current batch
268-
*/
269-
public function saveTaxRates(array $taxRates): void
270-
{
271253
if (! empty($taxRates['update'])) {
272254
$this->updatedItemsCount += count($taxRates['update']);
273255

@@ -282,6 +264,8 @@ public function saveTaxRates(array $taxRates): void
282264

283265
$this->taxRateRepository->insert($taxRates['insert']);
284266
}
267+
268+
return true;
285269
}
286270

287271
/**
@@ -291,4 +275,16 @@ public function isIdentifierExist(string $identifier): bool
291275
{
292276
return $this->taxRateStorage->has($identifier);
293277
}
278+
279+
/**
280+
* Prepare row data to save into the database
281+
*/
282+
protected function prepareRowForDb(array $rowData): array
283+
{
284+
$rowData = parent::prepareRowForDb($rowData);
285+
286+
$rowData['is_zip'] = $rowData['is_zip_range'] ?? 0;
287+
288+
return Arr::except($rowData, 'is_zip_range');
289+
}
294290
}
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
!customers.csv
22
!products.csv
3+
!tax-rates.csv
34
!.gitignore
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
identifier,is_zip_range,zip_code,zip_from,zip_to,state,country,tax_rate
2+
US-CA-*-RATE-1,0,*,"","",CA,US,18.00
3+
US-CO-*-RATE-2,0,*,"","",CO,US,18.00

0 commit comments

Comments
 (0)