File: /var/www/dtw.bradford/app/Imports/ColegiumCpagosimport.php
<?php
namespace App\Imports;
use DateTime;
use Exception;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use PhpOffice\PhpSpreadsheet\Shared\Date;
class ColegiumCpagosimport extends AbstractChunksImport
{
protected function getExpectedHeaders(): array
{
return [
'fecha',
'orden_de_compra',
'cod_autorizacion',
'pagador',
'medio_de_pago',
'monto',
'fecha_de_abono',
'comision',
'iva',
'abono',
];
}
protected function getTableName(): string
{
return 'colegium_cpagos';
}
protected function getSheetName()
{
return 0;
}
protected int $headingRowIndex = 2;
protected function normalizeRow(array $row, int $numRow): ?array
{
// 👇 OMITIR FILAS DE TOTALES
if (empty($row['orden_de_compra']) && stripos($row['pagador'] ?? '', 'total') !== false) {
return null;
}
$validation_errors = 0;
$validation_messages = '';
try {
// Validación de data
if (!empty($row['fecha'])) {
try {
$fecha = ordenar_fechaSlashHoraServidor($row['fecha']);
} catch (Exception $e) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': fecha inválida. ';
}
} else {
$fecha = null;
}
if (!empty($row['orden_de_compra'])) {
$orden_de_compra = $row['orden_de_compra'];
} else {
$orden_de_compra = null;
}
if (!empty($row['cod_autorizacion'])) {
$cod_autorizacion = $row['cod_autorizacion'];
} else {
$cod_autorizacion = null;
}
if (!empty($row['pagador'])) {
$pagador = $row['pagador'];
} else {
$pagador = null;
}
if (!empty($row['medio_de_pago'])) {
$medio_de_pago = $row['medio_de_pago'];
} else {
$medio_de_pago = null;
}
if (!empty($row['monto'])) {
try {
$monto = floatval($row['monto']);
} catch (\Throwable $th) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': monto inválido. ';
}
} else {
$monto = 0;
}
if (!empty($row['fecha_de_abono'])) {
if (validateDate($row['fecha_de_abono'], 'd/m/Y')) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': fecha_de_abono inválida. ';
} else {
$fecha_de_abono = ordenar_fechaSlashServidor($row['fecha_de_abono']);
}
} else {
$fecha_de_abono = null;
}
if (!empty($row['comision'])) {
try {
$comision = floatval($row['comision']);
} catch (\Throwable $th) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': comision inválido. ';
}
} else {
$comision = 0;
}
if (!empty($row['iva'])) {
try {
$iva = floatval($row['iva']);
} catch (\Throwable $th) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': iva inválido. ';
}
} else {
$iva = 0;
}
if (!empty($row['abono'])) {
try {
$abono = floatval($row['abono']);
} catch (\Throwable $th) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': abono inválido. ';
}
} else {
$abono = 0;
}
if ($validation_errors > 0) {
$this->hasErrors = true;
$this->error_data[] = [
'numero_de_linea' => $numRow,
'errores' => $validation_messages,
'fecha_de_carga' => date('d-m-Y H:i'),
];
return null;
}
return [
'date' => $fecha,
'purchase_order' => $orden_de_compra,
'auth_code' => $cod_autorizacion,
'payer' => $pagador,
'payment_method' => $medio_de_pago,
'amount' => $monto,
'deposit_date' => $fecha_de_abono,
'commission' => $comision,
'iva' => $iva,
'deposit' => $abono,
'created_at' => ahoraServidor()
];
} catch (\Throwable $e) {
$this->error_data[] = [
'numero_de_linea' => $numRow,
'errores' => 'Excepción: ' . $e->getMessage(),
'fecha_de_carga' => date('d-m-Y H:i'),
];
return null;
}
}
}