Files
horux-strategy-platform/backend/app/Models/ReglaMapeo.php
Torch2196 4c3dc94ff2 Initial commit: Horux Strategy Platform
- 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>
2026-01-31 22:24:00 -06:00

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);
}
}