80 lines
2.2 KiB
PHP

<?php
namespace Modules\Admin\App\Imports;
use Carbon\Carbon;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\ToCollection;
class SATRegimenFiscalImport implements ToCollection
{
/**
* @param Collection $collection
*/
public function collection(Collection $collection)
{
$batchSize = 1000;
$batchData = [];
$processedRows = 0;
foreach ($collection as $key => $row) {
if ($key < 6 || !$row[1]) {
continue;
}
$requestArray = [
'c_regimen_fiscal' => $row[0],
'descripcion' => $row[1],
'fisica' => $row[2],
'moral' => $row[3],
'fecha_de_inicio_de_vigencia' => $row[4] ?
Carbon::instance(\PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($row[4])) :
null,
'fecha_de_fin_de_vigencia' => $row[5] ?
Carbon::instance(\PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($row[5])) :
null,
];
$batchData[] = $requestArray;
$processedRows++;
if (count($batchData) >= $batchSize) {
$this->insertBatch($batchData);
$batchData = [];
}
}
if (!empty($batchData)) {
$this->insertBatch($batchData);
}
echo "\n\033[32mImport completed: Processed $processedRows rows.\033[0m\n";
}
private function insertBatch(array $batchData)
{
try {
DB::table('sat_regimen_fiscal')->upsert(
$batchData,
[
'c_regimen_fiscal',
],
[
'descripcion',
'fisica',
'moral',
'fecha_de_inicio_de_vigencia',
'fecha_de_fin_de_vigencia'
]
);
} catch (\Exception $e) {
echo "Error in batch: " . $e->getMessage() . "\n";
foreach ($batchData as $row) {
echo "Row data: " . json_encode($row) . "\n";
}
}
}
}