File: /var/www/dtw.bradford/app/Imports/TreasuryPatImport.php
<?php
namespace App\Imports;
class TreasuryPatImport extends AbstractChunksImport
{
protected function getExpectedHeaders(): array
{
return [
'fecha_pago',
'id_pago',
'id_servicio',
'monto_pago',
'fecha_venc',
'medio_pago',
'rut',
'suscriptor',
'estado',
'cod_autorizacion',
'fecha',
'monto',
'forma_pago',
];
}
protected function getTableName(): string
{
return 'treasury_pat';
}
protected function getSheetName()
{
return 0;
}
protected function normalizeRow(array $row, int $numRow): ?array
{
$validation_errors = 0;
$validation_messages = '';
try {
// Validación de data
if (!empty($row['fecha_pago'])) {
if (validateDate($row['fecha_pago'], 'd/m/Y')) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': fecha_pago inválida. ';
} else {
$fecha_pago = ordenar_fechaSlashServidor($row['fecha_pago']);
}
} else {
$fecha_pago = null;
}
if (!empty($row['id_pago'])) {
try {
$id_pago = intval($row['id_pago']);
} catch (\Throwable $th) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': id_pago inválido. ';
}
} else {
$id_pago = null;
}
if (!empty($row['monto_pago'])) {
try {
$monto_pago = floatval($row['monto_pago']);
} catch (\Throwable $th) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': monto_pago inválido. ';
}
} else {
$monto_pago = 0;
}
if (!empty($row['id_servicio'])) {
$id_servicio = $row['id_servicio'];
} else {
$id_servicio = null;
}
if (!empty($row['fecha_venc'])) {
if (validateDate($row['fecha_venc'], 'd/m/Y')) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': fecha_venc inválida. ';
} else {
$fecha_venc = ordenar_fechaSlashServidor($row['fecha_venc']);
}
} else {
$fecha_venc = null;
}
if (!empty($row['medio_pago'])) {
$medio_pago = $row['medio_pago'];
} else {
$medio_pago = null;
}
if (!empty($row['rut']) && $row['rut'] !== 'Sin Información') {
if (!validateRut(trim($row['rut']))) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': rut ' . '"' . $row['rut'] . '"' . ' inválido. ';
} else {
$rut = formateaRut($row['rut']);
}
} else {
$rut = null;
}
if (!empty($row['suscriptor'])) {
$suscriptor = $row['suscriptor'];
} else {
$suscriptor = null;
}
if (!empty($row['estado'])) {
$estado = $row['estado'];
} else {
$estado = null;
}
if (!empty($row['cod_autorizacion'])) {
$cod_autorizacion = $row['cod_autorizacion'];
} else {
$cod_autorizacion = null;
}
if (!empty($row['fecha'])) {
if (validateDate($row['fecha'], 'd/m/Y')) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': fecha inválida. ';
} else {
$fecha = ordenar_fechaSlashServidor($row['fecha']);
}
} else {
$fecha = 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['forma_pago'])) {
$forma_pago = $row['forma_pago'];
} else {
$forma_pago = null;
}
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 [
'payment_date' => $fecha_pago,
'payment_id' => $id_pago,
'service_id' => $id_servicio,
'payment_amount' => $monto_pago,
'expiration_date' => $fecha_venc,
'payment_method' => $medio_pago,
'rut' => $rut,
'subscriber' => $suscriptor,
'status' => $estado,
'authorization_code' => $cod_autorizacion,
'date' => $fecha,
'amount' => $monto,
'payment_form' => $forma_pago,
'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;
}
}
}