PHPackages                             jamesmosq/moonshine-colombia-puc-ciiu - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. jamesmosq/moonshine-colombia-puc-ciiu

ActiveLibrary[Admin Panels](/categories/admin)

jamesmosq/moonshine-colombia-puc-ciiu
=====================================

PUC (Plan Único de Cuentas) y CIIU colombianos para MoonShine 4.x — campos, árboles y filtros

1.0.0(1mo ago)20MITPHPPHP ^8.3

Since May 30Pushed 1mo agoCompare

[ Source](https://github.com/jamesmosq/moonshine-colombia-puc-ciiu)[ Packagist](https://packagist.org/packages/jamesmosq/moonshine-colombia-puc-ciiu)[ Docs](https://github.com/jamesmosq/moonshine-colombia-puc-ciiu)[ RSS](/packages/jamesmosq-moonshine-colombia-puc-ciiu/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (4)Versions (2)Used By (0)

moonshine-colombia/puc-ciiu
===========================

[](#moonshine-colombiapuc-ciiu)

[![Packagist Version](https://camo.githubusercontent.com/821b9292cfcad815d3602b62c5f05c8d65bcf147489a268916a5e760ff425b2a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6a616d65736d6f73712f6d6f6f6e7368696e652d636f6c6f6d6269612d7075632d636969752e737667)](https://packagist.org/packages/jamesmosq/moonshine-colombia-puc-ciiu)[![GitHub](https://camo.githubusercontent.com/688c0ad440d717385123d517f6c67ad3d38ff2cad5cbe63055cb498a93d27909/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4769744875622d6a616d65736d6f73712d3138313731373f6c6f676f3d676974687562)](https://github.com/jamesmosq/moonshine-colombia-puc-ciiu)[![PHP](https://camo.githubusercontent.com/c8d8dad6beb757a2b8acba331d16140813699543b88a37af0a81f20bd35f61de/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e332532422d626c7565)](https://php.net)[![Laravel](https://camo.githubusercontent.com/0171c541f6433dcec81b1736e87bba993ce6d1b126d0954ece853c872cc659f7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31312532422d726564)](https://laravel.com)[![MoonShine](https://camo.githubusercontent.com/7ab10a289ec6a72ff3d42ffab5be4c314416204457ae733f96fd27d3210290ae/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6f6f6e5368696e652d342e782d707572706c65)](https://moonshine-laravel.com)[![Licencia: MIT](https://camo.githubusercontent.com/2adc14e0e011753025acdc088689ba6e559c10401a2785ea2896609bb6c3cae8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e6369612d4d49542d677265656e2e737667)](LICENSE)[![Tests](https://camo.githubusercontent.com/601467a1e3d2654b9e334bc34ae5c57bc9fb07377a97df1d3ca2a5326c7a2ab1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f74657374732d3931253230706173616e646f2d627269676874677265656e)](#pruebas)

**PUC** (Plan Único de Cuentas) y **CIIU** (Clasificación Industrial Uniforme) colombianos para [MoonShine](https://moonshine-laravel.com) 4.x.

Campos de búsqueda con autocompletado AJAX, árboles navegables jerárquicos y filtros para Resources de MoonShine. Datos oficiales del Decreto 2649/93 (PUC) y el DANE (CIIU).

---

Contenido
---------

[](#contenido)

- [Requisitos](#requisitos)
- [Instalación](#instalaci%C3%B3n)
- [Campos de búsqueda](#campos-de-b%C3%BAsqueda)
    - [CuentaPucField](#cuentapucfield)
    - [ActividadCiiuField](#actividadciiufield)
- [Componentes árbol](#componentes-%C3%A1rbol)
    - [PucTreeComponent](#puctreecomponent)
    - [CiiuTreeComponent](#ciiutreecomponent)
- [Filtros para Resources](#filtros-para-resources)
- [Modelos Eloquent](#modelos-eloquent)
- [PUC Comercial vs ESAL](#puc-comercial-vs-esal)
- [Información de los datos](#informaci%C3%B3n-de-los-datos)
- [Pruebas](#pruebas)
- [Licencia](#licencia)

---

Requisitos
----------

[](#requisitos)

DependenciaVersión mínimaPHP8.3+Laravel11, 12 ó 13MoonShine4.x---

Instalación
-----------

[](#instalación)

```
composer require jamesmosq/moonshine-colombia-puc-ciiu
```

Ejecutar migraciones y seeders:

```
php artisan migrate

# PUC oficial — 2.596 cuentas (Decreto 2649/93)
php artisan db:seed --class="MoonshineColumbia\PucCiiu\Database\Seeders\PucComercialSeeder"

# CIIU Colombia — 865 registros generados (DANE Rev. 4)
php artisan db:seed --class="MoonshineColumbia\PucCiiu\Database\Seeders\CiiuSeeder"
```

> Los seeders son **idempotentes**: se pueden ejecutar varias veces sin duplicar datos.

---

Campos de búsqueda
------------------

[](#campos-de-búsqueda)

### CuentaPucField

[](#cuentapucfield)

Campo AJAX para seleccionar una cuenta del PUC. Muestra `[código] nombre` en el campo y guarda el código como string.

```
use MoonshineColumbia\PucCiiu\Fields\CuentaPucField;

// Uso básico — solo cuentas contabilizables (nivel ≥ 3, sin hijos)
CuentaPucField::make('Cuenta PUC', 'cuenta_puc')

// Permitir cualquier nivel (grupos, clases, subcuentas)
CuentaPucField::make('Cuenta', 'cuenta')->permitirTodosLosNiveles()

// Solo gastos e ingresos (clases 4 y 5)
CuentaPucField::make('Cuenta', 'cuenta')->filtroPorClase([4, 5])

// Plan ESAL (entidades sin ánimo de lucro)
CuentaPucField::make('Cuenta', 'cuenta')->filtroPorTipo('esal')
```

**Muestra:** `[1105] Caja`
**Guarda:** `"1105"` (string)
**Evento Alpine al seleccionar:** `puc-selected` → `{ value, label, node }`

---

### ActividadCiiuField

[](#actividadciiufield)

Campo AJAX para seleccionar una actividad económica CIIU. Por defecto solo permite seleccionar clases (4 dígitos).

```
use MoonshineColumbia\PucCiiu\Fields\ActividadCiiuField;

// Uso básico — solo clases de 4 dígitos
ActividadCiiuField::make('Actividad económica', 'actividad_ciiu')

// Permitir secciones, divisiones y grupos también
ActividadCiiuField::make('Actividad', 'actividad')->permitirTodosLosNiveles()

// Restringir a una sección (ej: C = Industrias manufactureras)
ActividadCiiuField::make('Actividad', 'actividad')->filtroPorSeccion('C')
```

**Muestra:** `[0111] Cultivo de cereales`
**Evento Alpine:** `ciiu-selected` → `{ value, label, node }`

---

Componentes árbol
-----------------

[](#componentes-árbol)

Los árboles cargan cada nivel de forma **lazy** al expandir, lo que los hace eficientes incluso con el PUC completo.

### PucTreeComponent

[](#puctreecomponent)

```
use MoonshineColumbia\PucCiiu\Components\PucTreeComponent;

// En un IndexPage o CustomPage de MoonShine
protected function components(): array
{
    return [
        // Árbol completo PUC comercial
        PucTreeComponent::make(),

        // Plan ESAL con título personalizado
        PucTreeComponent::make(
            tipo: 'esal',
            titulo: 'Plan de Cuentas ESAL'
        ),

        // Conectado a un campo — el botón "Seleccionar" rellena el campo
        PucTreeComponent::make(targetField: 'cuenta_puc'),
    ];
}
```

**Características:**

- Íconos **D** (débito) y **C** (crédito) en cada nodo
- Filtro rápido sobre nodos ya expandidos
- Botón "Seleccionar" al pasar el mouse, solo en cuentas hoja
- Emite evento Alpine `puc-selected` (o `puc-selected:{targetField}`)
- Soporte dark mode

---

### CiiuTreeComponent

[](#ciiutreecomponent)

```
use MoonshineColumbia\PucCiiu\Components\CiiuTreeComponent;

protected function components(): array
{
    return [
        // Árbol CIIU completo (22 secciones)
        CiiuTreeComponent::make(),

        // Solo la sección C — Industrias manufactureras
        CiiuTreeComponent::make(seccion: 'C'),

        // Conectado a un campo
        CiiuTreeComponent::make(targetField: 'actividad_ciiu'),
    ];
}
```

**Jerarquía CIIU:**

```
Sección A — Agricultura, ganadería…
  └─ División 01
       └─ Grupo 011
            ├─ Clase 0111 — Cultivo de cereales    [Seleccionar]
            └─ Clase 0112 — Cultivo de arroz        [Seleccionar]

```

---

Filtros para Resources
----------------------

[](#filtros-para-resources)

Usar en el método `filters()` de cualquier Resource de MoonShine.

```
use MoonshineColumbia\PucCiiu\Filters\ClasePucFilter;
use MoonshineColumbia\PucCiiu\Filters\NaturalezaFilter;
use MoonshineColumbia\PucCiiu\Filters\SeccionCiiuFilter;

// Resource de movimientos contables
class MovimientoResource extends ModelResource
{
    protected function filters(): array
    {
        return [
            ClasePucFilter::make('Clase de cuenta'),
            NaturalezaFilter::make('Naturaleza'),
        ];
    }
}

// Resource de empresas
class EmpresaResource extends ModelResource
{
    protected function filters(): array
    {
        return [
            // Opciones fijas (21 secciones A–U, sin consulta a BD)
            SeccionCiiuFilter::make('Sección CIIU'),

            // Opciones dinámicas desde la tabla actividades_ciiu
            SeccionCiiuFilter::make('Sección CIIU')->fromDb(),
        ];
    }
}
```

FiltroColumna por defectoOpciones`ClasePucFilter``clase`1–9 con nombre de cada clase`NaturalezaFilter``naturaleza``debito` / `credito``SeccionCiiuFilter``seccion`A–U (21 secciones CIIU)Todos los filtros son **nullable** (incluyen opción "Todos") y aceptan columna personalizada:

```
ClasePucFilter::make('Clase', 'cuenta_clase')
NaturalezaFilter::make('Naturaleza', 'cuenta_naturaleza')
```

---

Modelos Eloquent
----------------

[](#modelos-eloquent)

### CuentaPuc

[](#cuentapuc)

```
use MoonshineColumbia\PucCiiu\Models\CuentaPuc;

// Scopes disponibles
CuentaPuc::comercial()          // tipo = 'comercial'
CuentaPuc::esal()               // tipo = 'esal'
CuentaPuc::byClase(5)           // clase = 5 (Gastos)
CuentaPuc::byClase([4, 5])      // clase IN (4, 5)
CuentaPuc::byNivel(3)           // nivel = 3 (Cuentas)
CuentaPuc::hojas()              // sin hijos, nivel >= 3
CuentaPuc::activas()            // activa = true

// Relaciones
$cuenta->padre               // CuentaPuc padre
$cuenta->hijos               // Collection de cuentas hijas

// Atributo calculado
$cuenta->path                // "Activo > Disponible > Caja"
```

**Jerarquía PUC:**

NivelNombreDígitosEjemplo1Clase1`1` — Activos2Grupo2`11` — Disponible3Cuenta4`1105` — Caja4Subcuenta6`110505` — Caja General5Auxiliar8+`11050501`**Naturaleza:** clases 1, 5, 6, 7 → débito · clases 2, 3, 4, 8, 9 → crédito

---

### ActividadCiiu

[](#actividadciiu)

```
use MoonshineColumbia\PucCiiu\Models\ActividadCiiu;

// Scopes disponibles
ActividadCiiu::bySeccion('A')       // sección A — Agricultura
ActividadCiiu::byNivel('clase')     // nivel = 'clase' (4 dígitos)
ActividadCiiu::hojas()              // solo clases (nivel = 'clase')
ActividadCiiu::activas()            // activa = true

// Relaciones
$actividad->padre            // ActividadCiiu padre
$actividad->hijos            // Collection de hijos

// Atributo calculado
$actividad->path             // "Agricultura… > División 01 > Grupo 011 > Cultivo de cereales"
```

---

PUC Comercial vs ESAL
---------------------

[](#puc-comercial-vs-esal)

### PUC Comercial (Decreto 2649 de 1993)

[](#puc-comercial-decreto-2649-de-1993)

Plan estándar para empresas con ánimo de lucro. Cargado por defecto con `PucComercialSeeder`. Cubre 9 clases, 52 grupos, 356 cuentas y 2.179 subcuentas.

### PUC ESAL (Decreto 4400 de 2004)

[](#puc-esal-decreto-4400-de-2004)

Plan para **Entidades Sin Ánimo de Lucro**: fundaciones, asociaciones, corporaciones y cooperativas. Adapta el PUC comercial para:

- Fondos sociales y patrimoniales (clase 3 ampliada)
- Ingresos no constitutivos de renta
- Cuentas de excedentes y déficit del ejercicio
- Vigencias fiscales especiales

**Para activar el PUC ESAL:**

1. Crea el archivo `puc_esal.json` con el mismo formato que `puc_colombia.json`
2. Cópialo a `packages/moonshine-colombia-puc/database/seeders/data/puc_esal.json`
3. Ejecuta el seeder:

```
php artisan db:seed --class="MoonshineColumbia\PucCiiu\Database\Seeders\PucEsalSeeder"
```

4. Usa el campo con el tipo ESAL:

```
CuentaPucField::make('Cuenta ESAL', 'cuenta')->filtroPorTipo('esal')
```

---

Información de los datos
------------------------

[](#información-de-los-datos)

### PUC Colombia

[](#puc-colombia)

CampoDetalleBase legalDecreto 2649 de 1993 y sus modificacionesRegistros incluidos2.596 (niveles 1 a 4)ActualizaciónManual — conforme al decreto vigenteLicencia de los datosDominio público (norma oficial colombiana)### CIIU Colombia

[](#ciiu-colombia)

CampoDetalleFuenteDANE — Clasificación Industrial Uniforme Rev. 4Registros generados~865 (22 secciones + 89 divisiones + 250 grupos + 504 clases)Licencia de los datosDominio público (estadística oficial del DANE)---

Pruebas
-------

[](#pruebas)

```
php artisan test
```

La suite incluye **91 tests / 150 assertions** sobre SQLite en memoria:

GrupoTestsQué cubrePUC Feature23Seeder, modelo, scopes, relaciones, endpointsCIIU Feature19Seeder, modelo, scopes, relaciones, endpointsComponentes árbol11Instanciación, `make()`, propiedadesFiltros y Campos22Instanciación MoonShine, columnas, nullableOpciones estáticas (Unit)15Arrays de filtros sin depender de MoonShineBase Laravel2Ejemplo incluido por defecto---

Licencia
--------

[](#licencia)

MIT — ver [LICENSE](LICENSE).

Los datos del PUC y el CIIU son de dominio público por ser normas y estadísticas oficiales de la República de Colombia.

---

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance89

Actively maintained with recent releases

Popularity3

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

56d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/161092898?v=4)[JAMES MOSQUERA RENTERIA](/maintainers/jamesmosq)[@jamesmosq](https://github.com/jamesmosq)

---

Top Contributors

[![jamesmosquera](https://avatars.githubusercontent.com/u/9124363?v=4)](https://github.com/jamesmosquera "jamesmosquera (2 commits)")

---

Tags

laravelmoonshinechart of accountscolombiapucciiucontabilidadplan-unico-de-cuentasclasificacion-industrial

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/jamesmosq-moonshine-colombia-puc-ciiu/health.svg)

```
[![Health](https://phpackages.com/badges/jamesmosq-moonshine-colombia-puc-ciiu/health.svg)](https://phpackages.com/packages/jamesmosq-moonshine-colombia-puc-ciiu)
```

###  Alternatives

[backpack/crud

Quickly build admin interfaces using Laravel, Bootstrap and JavaScript.

3.4k3.7M223](/packages/backpack-crud)[dcat-plus/laravel-admin

dcat-plus admin

1474.1k10](/packages/dcat-plus-laravel-admin)[api-platform/laravel

API Platform support for Laravel

58174.6k17](/packages/api-platform-laravel)[printnow/laravel-admin

Dcat admin 永久分叉版 / 支持 Laravel 10-13, PHP 版本限制 &gt;= 8.1（支持 PHP 8.5）

462.6k](/packages/printnow-laravel-admin)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
