PHP code example of jamesmosq / moonshine-colombia-puc-ciiu

1. Go to this page and download the library: Download jamesmosq/moonshine-colombia-puc-ciiu library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

jamesmosq / moonshine-colombia-puc-ciiu example snippets


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')

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')

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'),
    ];
}

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'),
    ];
}

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(),
        ];
    }
}

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

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"

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"

CuentaPucField::make('Cuenta ESAL', 'cuenta')->filtroPorTipo('esal')
bash
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"
bash
php artisan db:seed --class="MoonshineColumbia\PucCiiu\Database\Seeders\PucEsalSeeder"
bash
php artisan test