up
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/../vendor/autoload.php';
|
||||
|
||||
$app = require_once __DIR__ . '/../bootstrap/app.php';
|
||||
$app->make(\Illuminate\Contracts\Console\Kernel::class)->bootstrap();
|
||||
|
||||
echo "=== Diagnóstico de Confección #9 ===\n\n";
|
||||
|
||||
$confeccion = \App\Models\Confeccion::find(9);
|
||||
|
||||
if (!$confeccion) {
|
||||
echo "❌ No se encontró la confección con ID 9\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
echo "✅ Confección encontrada:\n";
|
||||
echo " ID: {$confeccion->id}\n";
|
||||
echo " Orden Producción ID: {$confeccion->orden_produccion_id}\n";
|
||||
echo " Cliente: {$confeccion->cliente->nombre}\n\n";
|
||||
|
||||
if (!$confeccion->orden_produccion_id) {
|
||||
echo "❌ La confección NO tiene orden_produccion_id asociada\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
echo "=== Buscando inventarios para orden_produccion_id = {$confeccion->orden_produccion_id} ===\n\n";
|
||||
|
||||
$inventarios = \App\Models\InventarioPrenda::where('orden_produccion_id', $confeccion->orden_produccion_id)->get();
|
||||
|
||||
echo "Total inventarios encontrados: {$inventarios->count()}\n\n";
|
||||
|
||||
if ($inventarios->isEmpty()) {
|
||||
echo "❌ NO HAY INVENTARIOS para esta orden de producción\n";
|
||||
echo " Esto explica el error\n\n";
|
||||
|
||||
// Verificar si existe la orden de producción
|
||||
$op = \App\Models\OrdenProduccion::find($confeccion->orden_produccion_id);
|
||||
if ($op) {
|
||||
echo "✅ La orden de producción #{$op->id} existe:\n";
|
||||
echo " Producto: " . ($op->producto->nombre ?? 'N/A') . "\n";
|
||||
echo " Cantidad: {$op->cantidad}\n";
|
||||
echo " Estado: {$op->estado}\n\n";
|
||||
echo "⚠️ Necesitas crear registros de inventario para esta orden\n";
|
||||
} else {
|
||||
echo "❌ La orden de producción no existe\n";
|
||||
}
|
||||
} else {
|
||||
echo "Detalles de inventarios:\n";
|
||||
foreach ($inventarios as $inv) {
|
||||
echo "---\n";
|
||||
echo "ID: {$inv->id}\n";
|
||||
echo "Cantidad terminada: {$inv->cantidad_terminada}\n";
|
||||
echo "Cantidad disponible: {$inv->cantidad_disponible}\n";
|
||||
echo "Estado: {$inv->estado}\n";
|
||||
echo "Producto ID: {$inv->producto_id}\n";
|
||||
}
|
||||
|
||||
$totalDisponible = $inventarios->sum('cantidad_disponible');
|
||||
echo "\n✅ Total disponible: {$totalDisponible} unidades\n";
|
||||
|
||||
if ($totalDisponible > 0) {
|
||||
echo "✅ Hay inventario suficiente para registrar cobros\n";
|
||||
} else {
|
||||
echo "❌ No hay inventario con cantidad_disponible > 0\n";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/../vendor/autoload.php';
|
||||
|
||||
$app = require_once __DIR__ . '/../bootstrap/app.php';
|
||||
$app->make(\Illuminate\Contracts\Console\Kernel::class)->bootstrap();
|
||||
|
||||
echo "=== Diagnóstico de Orden de Producción #9 ===\n\n";
|
||||
|
||||
$op = \App\Models\OrdenProduccion::find(9);
|
||||
|
||||
if (!$op) {
|
||||
echo "❌ No se encontró la orden de producción con ID 9\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
echo "✅ Orden de Producción encontrada:\n";
|
||||
echo " ID: {$op->id}\n";
|
||||
echo " Producto: " . ($op->producto->nombre ?? 'N/A') . " (ID: {$op->producto_id})\n";
|
||||
echo " Cantidad: {$op->cantidad}\n";
|
||||
echo " Estado: {$op->estado}\n\n";
|
||||
|
||||
// Buscar confecciones asociadas
|
||||
$confecciones = \App\Models\Confeccion::where('orden_produccion_id', 9)->get();
|
||||
echo "Confecciones asociadas a esta OP: {$confecciones->count()}\n";
|
||||
foreach ($confecciones as $conf) {
|
||||
$clienteNombre = $conf->cliente ? $conf->cliente->nombre : 'Sin cliente';
|
||||
echo " - Confección #{$conf->id} - Cliente: {$clienteNombre}\n";
|
||||
}
|
||||
echo "\n";
|
||||
|
||||
echo "=== Buscando inventarios para orden_produccion_id = 9 ===\n\n";
|
||||
|
||||
$inventarios = \App\Models\InventarioPrenda::where('orden_produccion_id', 9)->get();
|
||||
|
||||
echo "Total inventarios encontrados: {$inventarios->count()}\n\n";
|
||||
|
||||
if ($inventarios->isEmpty()) {
|
||||
echo "❌ NO HAY INVENTARIOS para esta orden de producción\n";
|
||||
echo " Esto explica el error al intentar registrar cobros\n\n";
|
||||
echo "⚠️ Necesitas crear registros de InventarioPrenda para esta orden\n";
|
||||
echo " Deberías ir a la sección de recepciones/inventario y registrar\n";
|
||||
echo " las {$op->cantidad} prendas producidas\n";
|
||||
} else {
|
||||
echo "Detalles de inventarios:\n";
|
||||
$totalTerminada = 0;
|
||||
$totalDisponible = 0;
|
||||
|
||||
foreach ($inventarios as $inv) {
|
||||
echo "---\n";
|
||||
echo "ID: {$inv->id}\n";
|
||||
echo "Cantidad terminada: {$inv->cantidad_terminada}\n";
|
||||
echo "Cantidad disponible: {$inv->cantidad_disponible}\n";
|
||||
echo "Estado: {$inv->estado}\n";
|
||||
echo "Producto ID: {$inv->producto_id}\n";
|
||||
echo "Fecha ingreso: {$inv->fecha_ingreso}\n";
|
||||
|
||||
$totalTerminada += $inv->cantidad_terminada;
|
||||
$totalDisponible += $inv->cantidad_disponible;
|
||||
}
|
||||
|
||||
echo "\n📊 Resumen:\n";
|
||||
echo " Total terminada: {$totalTerminada} unidades\n";
|
||||
echo " Total disponible: {$totalDisponible} unidades\n";
|
||||
|
||||
if ($totalDisponible > 0) {
|
||||
echo "\n✅ Hay inventario suficiente para registrar cobros\n";
|
||||
} else {
|
||||
echo "\n❌ No hay inventario con cantidad_disponible > 0\n";
|
||||
echo " Todas las prendas ya han sido cobradas/distribuidas\n";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/../vendor/autoload.php';
|
||||
|
||||
$app = require_once __DIR__ . '/../bootstrap/app.php';
|
||||
$app->make(\Illuminate\Contracts\Console\Kernel::class)->bootstrap();
|
||||
|
||||
echo "=== Sincronización de Inventarios desde Recepciones ===\n\n";
|
||||
|
||||
// Buscar todas las confecciones que tienen recepciones pero cuya OP no tiene inventario
|
||||
$confecciones = \App\Models\Confeccion::whereNotNull('orden_produccion_id')
|
||||
->whereHas('recepciones')
|
||||
->with(['ordenProduccion', 'recepciones'])
|
||||
->get();
|
||||
|
||||
echo "Total confecciones con recepciones: {$confecciones->count()}\n\n";
|
||||
|
||||
$creados = 0;
|
||||
$actualizados = 0;
|
||||
$sinCambios = 0;
|
||||
|
||||
foreach ($confecciones as $confeccion) {
|
||||
$op_id = $confeccion->orden_produccion_id;
|
||||
$op = $confeccion->ordenProduccion;
|
||||
|
||||
if (!$op) {
|
||||
echo "⚠️ Confección #{$confeccion->id} tiene orden_produccion_id={$op_id} pero la OP no existe\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
// Sumar recepciones efectivas (cantidad - defectuosas)
|
||||
$totalRecibido = $confeccion->recepciones->sum(function($rec) {
|
||||
return $rec->cantidad - ($rec->prendas_defectuosas ?? 0);
|
||||
});
|
||||
|
||||
if ($totalRecibido <= 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Buscar o crear inventario
|
||||
$inventario = \App\Models\InventarioPrenda::where('orden_produccion_id', $op_id)->first();
|
||||
|
||||
if (!$inventario) {
|
||||
// Crear inventario nuevo
|
||||
$inventario = \App\Models\InventarioPrenda::create([
|
||||
'orden_produccion_id' => $op_id,
|
||||
'cantidad_terminada' => $totalRecibido,
|
||||
'cantidad_disponible' => $totalRecibido,
|
||||
'fecha_ingreso' => $confeccion->recepciones->first()->fecha_recepcion ?? now(),
|
||||
'estado' => 'en_bodega',
|
||||
]);
|
||||
|
||||
echo "✅ Creado inventario para OP #{$op_id} con {$totalRecibido} prendas\n";
|
||||
echo " → Confección #{$confeccion->id}\n";
|
||||
$creados++;
|
||||
} else {
|
||||
// Verificar si necesita actualización
|
||||
if ($inventario->cantidad_terminada < $totalRecibido) {
|
||||
$diferencia = $totalRecibido - $inventario->cantidad_terminada;
|
||||
$inventario->cantidad_terminada = $totalRecibido;
|
||||
$inventario->cantidad_disponible += $diferencia;
|
||||
$inventario->save();
|
||||
|
||||
echo "✅ Actualizado inventario para OP #{$op_id}: +{$diferencia} prendas (total: {$totalRecibido})\n";
|
||||
$actualizados++;
|
||||
} else {
|
||||
$sinCambios++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo "\n📊 Resumen:\n";
|
||||
echo " Inventarios creados: {$creados}\n";
|
||||
echo " Inventarios actualizados: {$actualizados}\n";
|
||||
echo " Sin cambios: {$sinCambios}\n";
|
||||
Reference in New Issue
Block a user