Search by

realsoftgt / onneb-migration

@realsoft

Migra el catálogo de OnneB (SQL Server) a aplicaciones Laravel, con extracción verificable a JSON, mapeo de presentaciones y revisión en Excel.

v1.1.0 2026-11-05 20:33 UTC

This package is auto-updated.

Last update: 2026-11-05 20:33:56 UTC


README

Tests Packagist Licencia

Migra el catálogo de OnneB (SQL Server) a una aplicación Laravel: productos, presentaciones, precios, marcas e impuestos, con un Excel que explica cada decisión dudosa para que una persona la corrija.

  • Dos orígenes de datos con el mismo resultado: conexión directa a SQL Server o archivos JSON sin ninguna conexión externa.
  • Extracción verificable: cada archivo se valida contra un manifiesto con filas, columnas y SHA-256.
  • Solo lectura sobre OnneB: el paquete únicamente ejecuta SELECT, siempre filtrado por empresa.
  • Mapeo de presentaciones: resuelve la unidad base, factores, costos, códigos de barras y nombres.
  • Nada se descarta en silencio: cada decisión queda como incidencia con prioridad y acción.
  • Destino libre: usted conecta sus propios modelos con un contrato de un método.
  • Simulación por defecto: nada se escribe hasta pedirlo de forma explícita.

Requisitos

Requisito Versión
PHP 8.3 o superior
Laravel 12 o 13
Extensiones mbstring, zip, gd
pdo_sqlsrv Solo para leer de SQL Server o generar extracciones

Instalación

composer require realsoftgt/onneb-migration
php artisan vendor:publish --tag=onneb-config

Inicio rápido

Opción A: desde archivos, sin conectarse a SQL Server

En un equipo con acceso a OnneB:

ONNEB_EMPNIT=MIEMPRESA
ONNEB_DB_HOST=192.0.2.10
ONNEB_DB_DATABASE=ONNE
ONNEB_DB_USERNAME=lectura
ONNEB_DB_PASSWORD=
php artisan onneb:export

Copie la carpeta database/data/onneb a la aplicación de destino y ejecute:

php artisan onneb:verify
php artisan onneb:review

Opción B: directo desde SQL Server

ONNEB_SOURCE=database
php artisan onneb:review

En ambos casos obtiene un Excel en storage/app/private/onneb. Para importar a sus modelos, implemente CatalogImporter:

use RealsoftGt\OnneB\Contracts\CatalogImporter;
use RealsoftGt\OnneB\Data\ImportResult;
use RealsoftGt\OnneB\Data\MappedCatalog;

class ProductImporter implements CatalogImporter
{
    public function import(MappedCatalog $catalog, bool $dryRun): ImportResult
    {
        if (! $dryRun) {
            // Crear sus productos con $catalog->products dentro de una transacción.
        }

        return new ImportResult(['Productos' => count($catalog->products)], $catalog->issues);
    }
}

Regístrelo en un service provider y ejecute la migración:

$this->app->bind(CatalogImporter::class, ProductImporter::class);
php artisan onneb:migrate            # simula
php artisan onneb:migrate --execute  # escribe

Comandos

Comando Qué hace
onneb:export {path?} {--empnit=} Extrae SQL Server a JSON verificable
onneb:verify {path?} Valida una extracción sin usarla
onneb:review {--source=} Genera el Excel sin escribir en ningún destino
onneb:migrate {--source=} {--execute} {--force} Importa al CatalogImporter registrado

Documentación

Seguridad de los datos

Una extracción contiene costos, precios y saldos de su empresa. Nunca la incluya en un repositorio público. Lea Seguridad y datos antes de usar el paquete en producción.

Desarrollo

composer test
composer analyse
composer format

Consulte CONTRIBUTING.md y CHANGELOG.md. Para reportar una vulnerabilidad, siga SECURITY.md.

Aviso

Paquete independiente, sin relación con los creadores de OnneB. OnneB es propiedad de sus respectivos titulares.

Licencia

MIT. Consulte LICENSE.md.