up
This commit is contained in:
@@ -47,9 +47,9 @@ class InventarioPrendaResource extends Resource
|
||||
$remaining = 0;
|
||||
|
||||
if ($state) {
|
||||
// Total recibido hacia bodega desde acabados/traslados
|
||||
$total = \App\Models\TrasladoPrenda::where('orden_produccion_id', $state)
|
||||
->where('destino', 'bodega')
|
||||
// Total recibido desde procesos de acabados completados
|
||||
$total = \App\Models\ProcesoAcabado::where('orden_produccion_id', $state)
|
||||
->whereNotNull('fecha_recepcion')
|
||||
->sum('cantidad_recibida');
|
||||
|
||||
// Ya asignado en otros inventarios
|
||||
@@ -73,7 +73,7 @@ class InventarioPrendaResource extends Resource
|
||||
->numeric()
|
||||
->required()
|
||||
->disabled()
|
||||
->helperText('Se calcula automáticamente desde los traslados a bodega asociados a la Orden de Producción.'),
|
||||
->helperText('Se calcula automáticamente desde los procesos de acabados completados asociados a la Orden de Producción.'),
|
||||
|
||||
Select::make('producto_id')
|
||||
->label('Producto (opcional)')
|
||||
|
||||
@@ -53,8 +53,9 @@ class InventarioPrenda extends Model
|
||||
|
||||
// Validación y auto-filling: la cantidad terminada se calcula automáticamente desde lo recibido para esta OP (traslados a bodega)
|
||||
if ($inventario->orden_produccion_id) {
|
||||
$totalRecibido = \App\Models\TrasladoPrenda::where('orden_produccion_id', $inventario->orden_produccion_id)
|
||||
->where('destino', 'bodega')
|
||||
// Total recibido considerando procesos de acabados que se han recibido
|
||||
$totalRecibido = \App\Models\ProcesoAcabado::where('orden_produccion_id', $inventario->orden_produccion_id)
|
||||
->whereNotNull('fecha_recepcion')
|
||||
->sum('cantidad_recibida');
|
||||
|
||||
$assigned = \App\Models\InventarioPrenda::where('orden_produccion_id', $inventario->orden_produccion_id)->sum('cantidad_terminada');
|
||||
|
||||
@@ -77,9 +77,9 @@ class OrdenProduccion extends Model
|
||||
|
||||
// Si la orden llega a finalizada, crear entrada en inventario con lo que haya ingresado
|
||||
if ($this->estado === 'finalizada') {
|
||||
// Sumar traslados cuyo destino sea 'bodega'
|
||||
$cantidad = \App\Models\TrasladoPrenda::where('orden_produccion_id', $this->id)
|
||||
->where('destino', 'bodega')
|
||||
// Sumar procesos de acabados recibidos para determinar cantidad terminada
|
||||
$cantidad = \App\Models\ProcesoAcabado::where('orden_produccion_id', $this->id)
|
||||
->whereNotNull('fecha_recepcion')
|
||||
->sum('cantidad_recibida');
|
||||
|
||||
// Crear inventario solo si hay traslados a bodega con cantidad
|
||||
|
||||
@@ -16,9 +16,9 @@ class InventarioPrendaAutoCantidadTest extends TestCase
|
||||
{
|
||||
$op = OrdenProduccion::create(['numero_orden' => 'OP-500', 'prenda_modelo' => 'AutoCantidad', 'cantidad_total' => 100, 'metros_requeridos' => 0, 'fecha_inicio' => now(), 'fecha_entrega_estimada' => now()->addDays(7)]);
|
||||
|
||||
// Crear dos traslados hacia bodega (simulando recibidos)
|
||||
TrasladoPrenda::create(['orden_produccion_id' => $op->id, 'origen' => 'acabados', 'destino' => 'bodega', 'cantidad_enviada' => 0, 'cantidad_recibida' => 20, 'fecha_recepcion' => now()]);
|
||||
TrasladoPrenda::create(['orden_produccion_id' => $op->id, 'origen' => 'acabados', 'destino' => 'bodega', 'cantidad_enviada' => 0, 'cantidad_recibida' => 10, 'fecha_recepcion' => now()]);
|
||||
// Crear dos procesos de acabados (simulando recibidos)
|
||||
\App\Models\ProcesoAcabado::create(['orden_produccion_id' => $op->id, 'tipo_proceso' => 'Acabado', 'proveedor_id' => \App\Models\Proveedor::factory()->create(['categoria' => 'proveedor'])->id, 'cantidad_enviada' => 0, 'cantidad_recibida' => 20, 'fecha_envio' => now(), 'fecha_recepcion' => now()]);
|
||||
\App\Models\ProcesoAcabado::create(['orden_produccion_id' => $op->id, 'tipo_proceso' => 'Acabado', 'proveedor_id' => \App\Models\Proveedor::factory()->create(['categoria' => 'proveedor'])->id, 'cantidad_enviada' => 0, 'cantidad_recibida' => 10, 'fecha_envio' => now(), 'fecha_recepcion' => now()]);
|
||||
|
||||
// Crear un inventario sin especificar cantidad_terminada
|
||||
$inv = InventarioPrenda::create(['orden_produccion_id' => $op->id, 'cantidad_terminada' => null, 'fecha_ingreso' => now(), 'estado' => 'en_bodega']);
|
||||
|
||||
Reference in New Issue
Block a user