- Laravel 11 backend with API REST - React 18 + TypeScript + Vite frontend - Multi-parser architecture for accounting systems (CONTPAQi, Aspel, SAP) - 27+ financial metrics calculation - PDF report generation with Browsershot - Complete documentation (10 documents) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
74 lines
1.8 KiB
PHP
74 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
|
|
class ReglaMapeo extends Model
|
|
{
|
|
use HasFactory;
|
|
|
|
protected $table = 'reglas_mapeo';
|
|
|
|
protected $fillable = [
|
|
'sistema_origen',
|
|
'cuenta_padre_codigo',
|
|
'rango_inicio',
|
|
'rango_fin',
|
|
'patron_regex',
|
|
'reporte_contable_id',
|
|
'categoria_contable_id',
|
|
'prioridad',
|
|
'activo',
|
|
];
|
|
|
|
protected function casts(): array
|
|
{
|
|
return [
|
|
'activo' => 'boolean',
|
|
];
|
|
}
|
|
|
|
public function reporteContable(): BelongsTo
|
|
{
|
|
return $this->belongsTo(ReporteContable::class);
|
|
}
|
|
|
|
public function categoriaContable(): BelongsTo
|
|
{
|
|
return $this->belongsTo(CategoriaContable::class);
|
|
}
|
|
|
|
/**
|
|
* Verifica si un código de cuenta coincide con esta regla
|
|
*/
|
|
public function coincideCon(string $codigo): bool
|
|
{
|
|
// Si tiene patrón regex, usarlo
|
|
if ($this->patron_regex) {
|
|
return (bool) preg_match($this->patron_regex, $codigo);
|
|
}
|
|
|
|
// Si tiene rango, verificar
|
|
if ($this->rango_inicio && $this->rango_fin) {
|
|
$codigoNumerico = $this->codigoANumero($codigo);
|
|
$inicioNumerico = $this->codigoANumero($this->rango_inicio);
|
|
$finNumerico = $this->codigoANumero($this->rango_fin);
|
|
|
|
return $codigoNumerico >= $inicioNumerico && $codigoNumerico <= $finNumerico;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Convierte código tipo "001-100-000" a número para comparación
|
|
*/
|
|
private function codigoANumero(string $codigo): int
|
|
{
|
|
return (int) str_replace(['-', '.', ' '], '', $codigo);
|
|
}
|
|
}
|