HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux Bradford-Sitios 6.14.0-1017-azure #17~24.04.1-Ubuntu SMP Mon Dec 1 20:10:50 UTC 2025 x86_64
User: www-data (33)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
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;
        }
    }
}