realsoftgt / onneb-migration
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.
Requires
- php: ^8.3
- ext-mbstring: *
- illuminate/console: ^12.0 || ^13.0
- illuminate/contracts: ^12.0 || ^13.0
- illuminate/database: ^12.0 || ^13.0
- illuminate/filesystem: ^12.0 || ^13.0
- illuminate/support: ^12.0 || ^13.0
- maatwebsite/excel: ^4.0
- phpoffice/phpspreadsheet: ^5.9
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.18
- orchestra/testbench: ^10.0 || ^11.0
- pestphp/pest: ^3.8 || ^4.0
Suggests
- ext-pdo_sqlsrv: Necesaria solo para leer directamente de SQL Server o generar extracciones.
Provides
None
Conflicts
None
Replaces
None
README
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
- Orígenes de datos
- Formato de la extracción
- Reglas de mapeo
- Importador de destino
- Excel de revisión
- Seguridad y datos
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.