This commit is contained in:
Lizandro Guarnizo
2026-01-29 21:32:09 -05:00
parent 7b68ddb430
commit 08e4fbe134
3 changed files with 74 additions and 2 deletions
+30 -2
View File
@@ -107,6 +107,22 @@ class TintoreriaResource extends Resource
->required()
->reactive()
->helperText(fn ($get) => 'Sugerido: ' . (\App\Models\Confeccion::where('orden_produccion_id', $get('orden_produccion_id'))->sum('cantidad_recibida') ?: 0)),
TextInput::make('valor_por_prenda')
->label('Valor por prenda')
->numeric()
->prefix('$')
->default(0)
->required()
->helperText('Valor a pagar por cada prenda procesada'),
TextInput::make('total_pagar')
->label('Total a pagar')
->numeric()
->prefix('$')
->readOnly()
->default(0)
->helperText('Se calcula automáticamente: (cantidad recibida × valor por prenda) - descuentos por cobros'),
])
->columns(2),
@@ -132,6 +148,11 @@ class TintoreriaResource extends Resource
$totalContabilizado = $recibidoNeto + $cobros;
$faltantes = max(0, $enviada - $totalContabilizado);
$valorPorPrenda = (float) ($tintoreria->valor_por_prenda ?? 0);
$cantidadBase = $tintoreria->cantidad_recibida ?? $enviada;
$valorTotal = $cantidadBase * $valorPorPrenda;
$valorAPagar = max(0, $valorTotal - $cobrosValor);
return "━━━ PRENDAS ━━━
📦 Enviadas: {$enviada}
@@ -142,8 +163,10 @@ class TintoreriaResource extends Resource
💰 Cobradas: {$cobros} prendas
⚠️ Pendientes: {$faltantes}
━━━ COBROS ━━━
💸 Total cobros: $" . number_format($cobrosValor, 2);
━━━ PAGO ━━━
💵 Valor total: $" . number_format($valorTotal, 2) . "
💸 Descuento cobros: $" . number_format($cobrosValor, 2) . "
A pagar: $" . number_format($valorAPagar, 2);
}),
Forms\Components\Placeholder::make('instrucciones')
@@ -196,6 +219,11 @@ class TintoreriaResource extends Resource
TextColumn::make('perdidas')
->label('Pérdidas'),
TextColumn::make('total_pagar')
->label('Total a pagar')
->money('COP')
->sortable(),
TextColumn::make('ultima_recepcion')
->label('Fecha recepción')
->getStateUsing(fn($record) => optional($record->recepciones()->latest('fecha_recepcion')->first())->fecha_recepcion)
+15
View File
@@ -12,10 +12,13 @@ class Tintoreria extends Model
'tipo_proceso',
'fecha_envio',
'cantidad_enviada',
'valor_por_prenda',
'fecha_recepcion',
'cantidad_recibida',
'perdidas',
'observaciones',
'descuentos_cobros',
'total_pagar',
];
/* Relaciones */
@@ -53,6 +56,18 @@ class Tintoreria extends Model
$tintoreria->cantidad_enviada - $tintoreria->cantidad_recibida;
if ($tintoreria->perdidas < 0) $tintoreria->perdidas = 0;
}
// Total a pagar: usa cantidad_recibida si existe, sino cantidad_enviada
$cantidadBase = $tintoreria->cantidad_recibida ?? $tintoreria->cantidad_enviada ?? 0;
$valorUnitario = $tintoreria->valor_por_prenda ?? 0;
// Aplicar descuentos de cobros si existen
$descuentos = (float) ($tintoreria->getCobrosTotalAttribute() ?? 0);
$tintoreria->total_pagar = max(0, ($cantidadBase * $valorUnitario) - $descuentos);
// Mantener campo redundante 'descuentos_cobros' sincronizado
$tintoreria->descuentos_cobros = $descuentos;
});
// Avanzar OP al cerrar el paso o cuando se complete
@@ -0,0 +1,29 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('tintorerias', function (Blueprint $table) {
$table->decimal('valor_por_prenda', 10, 2)->default(0)->after('cantidad_enviada');
$table->decimal('total_pagar', 12, 2)->default(0)->after('descuentos_cobros');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('tintorerias', function (Blueprint $table) {
$table->dropColumn(['valor_por_prenda', 'total_pagar']);
});
}
};