From 08e4fbe1345854810d99287f03421847bd3fdb79 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Thu, 29 Jan 2026 21:32:09 -0500 Subject: [PATCH] up --- app/Filament/Resources/TintoreriaResource.php | 32 +++++++++++++++++-- app/Models/Tintoreria.php | 15 +++++++++ ..._prenda_and_total_pagar_to_tintorerias.php | 29 +++++++++++++++++ 3 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 database/migrations/2026_01_30_022836_add_valor_por_prenda_and_total_pagar_to_tintorerias.php diff --git a/app/Filament/Resources/TintoreriaResource.php b/app/Filament/Resources/TintoreriaResource.php index 1658c47..2559bcd 100644 --- a/app/Filament/Resources/TintoreriaResource.php +++ b/app/Filament/Resources/TintoreriaResource.php @@ -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) diff --git a/app/Models/Tintoreria.php b/app/Models/Tintoreria.php index e6a9428..4f1e4a1 100644 --- a/app/Models/Tintoreria.php +++ b/app/Models/Tintoreria.php @@ -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 diff --git a/database/migrations/2026_01_30_022836_add_valor_por_prenda_and_total_pagar_to_tintorerias.php b/database/migrations/2026_01_30_022836_add_valor_por_prenda_and_total_pagar_to_tintorerias.php new file mode 100644 index 0000000..3a81dfc --- /dev/null +++ b/database/migrations/2026_01_30_022836_add_valor_por_prenda_and_total_pagar_to_tintorerias.php @@ -0,0 +1,29 @@ +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']); + }); + } +};