diff --git a/CHANGELOG.md b/CHANGELOG.md index 555854c..543aadd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,16 @@ O formato segue [Keep a Changelog](https://keepachangelog.com/pt-BR/). Este projeto adota [Versionamento Semântico](https://semver.org/pt-BR/). +## [1.43.18] - 2025-12-16 + +### Changed +- **Hard Delete de Templates Recorrentes** + - Exclusão agora remove permanentemente template e TODAS as instâncias do banco de dados + - Backend: `forceDelete()` em vez de soft delete ou desativação + - Remove todas as instâncias (futuras, pagas, canceladas, etc.) + - Modal de confirmação atualizado com avisos claros sobre exclusão permanente + - Ação irreversível - dados não podem ser recuperados + ## [1.43.17] - 2025-12-16 ### Changed diff --git a/VERSION b/VERSION index 68125e0..3890156 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.43.17 +1.43.18 diff --git a/backend/app/Http/Controllers/Api/RecurringTemplateController.php b/backend/app/Http/Controllers/Api/RecurringTemplateController.php index 122e28a..fd02906 100644 --- a/backend/app/Http/Controllers/Api/RecurringTemplateController.php +++ b/backend/app/Http/Controllers/Api/RecurringTemplateController.php @@ -179,22 +179,20 @@ public function update(Request $request, RecurringTemplate $recurringTemplate): } /** - * Remove um template e suas instâncias pendentes + * Remove permanentemente um template e TODAS as suas instâncias (hard delete) */ public function destroy(RecurringTemplate $recurringTemplate): JsonResponse { $this->authorize('delete', $recurringTemplate); - // Remover instâncias pendentes (manter as pagas para histórico) - $recurringTemplate->instances() - ->where('status', RecurringInstance::STATUS_PENDING) - ->delete(); + // HARD DELETE: Remover TODAS as instâncias (pagas, pendentes, canceladas, etc) + $recurringTemplate->instances()->forceDelete(); - // Desativar o template em vez de deletar (soft delete) - $recurringTemplate->update(['is_active' => false]); + // HARD DELETE: Remover o template permanentemente + $recurringTemplate->forceDelete(); return response()->json([ - 'message' => __('Recurring template deleted successfully'), + 'message' => __('Recurring template permanently deleted'), ]); } diff --git a/frontend/src/pages/RecurringTransactions.jsx b/frontend/src/pages/RecurringTransactions.jsx index d1212d9..6ac269a 100644 --- a/frontend/src/pages/RecurringTransactions.jsx +++ b/frontend/src/pages/RecurringTransactions.jsx @@ -1464,11 +1464,11 @@ const DeleteTemplateConfirmModal = ({ show, onClose, onConfirm, template, t }) =