From 7c2a1ebc7a5ad2033469cfd0e0458aec6b7b0bd8 Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Thu, 9 Oct 2025 13:01:37 +0330 Subject: [PATCH] fix reset to final invoice when add or delete special item --- db.sqlite3 | Bin 4251648 -> 4349952 bytes invoices/views.py | 95 ++++++++++++++++++++++++++++++++++------------ 2 files changed, 71 insertions(+), 24 deletions(-) diff --git a/db.sqlite3 b/db.sqlite3 index ec04a213d68986aa1573d6a493091fc942c27b50..53afd6e3f590fdd72907d18c047dbdb84a9061d6 100644 GIT binary patch delta 70476 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 diff --git a/invoices/views.py b/invoices/views.py index 4651dba..19e988f 100644 --- a/invoices/views.py +++ b/invoices/views.py @@ -885,6 +885,8 @@ def add_special_charge(request, instance_id, step_id): """افزودن هزینه ویژه تعمیر/تعویض به فاکتور نهایی به‌صورت آیتم جداگانه""" instance = get_scoped_instance_or_404(request, instance_id) invoice = get_object_or_404(Invoice, process_instance=instance) + step = get_object_or_404(instance.process.steps, id=step_id) + # only MANAGER can add special charges try: if not (hasattr(request.user, 'profile') and request.user.profile.has_role(UserRoles.MANAGER)): @@ -914,29 +916,50 @@ def add_special_charge(request, instance_id, step_id): unit_price=amount_dec, ) invoice.calculate_totals() - # If the next step was completed, reopen it (set to in_progress) due to invoice change + + + # After modifying payments, set step back to in_progress try: - step = get_object_or_404(instance.process.steps, id=step_id) - next_step = instance.process.steps.filter(order__gt=step.order).first() - if next_step: - si, _ = StepInstance.objects.get_or_create(process_instance=instance, step=next_step) - if si.status in ['completed', 'approved']: - si.status = 'in_progress' - si.completed_at = None - si.save(update_fields=['status', 'completed_at']) - # Clear prior approvals/rejections as the underlying totals changed + si, _ = StepInstance.objects.get_or_create(process_instance=instance, step=step) + si.status = 'in_progress' + si.completed_at = None + si.save() + except Exception: + pass + + # Reset ALL subsequent completed steps to in_progress + try: + subsequent_steps = instance.process.steps.filter(order__gt=step.order) + for subsequent_step in subsequent_steps: + subsequent_step_instance = instance.step_instances.filter(step=subsequent_step).first() + if subsequent_step_instance: + # Bypass validation by using update() instead of save() + instance.step_instances.filter(step=subsequent_step).update( + status='in_progress', + completed_at=None + ) + # Clear prior approvals/rejections as the underlying totals changed try: - for appr in list(si.approvals.all()): + for appr in list(subsequent_step_instance.approvals.all()): appr.delete() except Exception: pass try: - for rej in list(si.rejections.all()): + for rej in list(subsequent_step_instance.rejections.all()): rej.delete() except Exception: pass except Exception: pass + + # If current step is ahead of this step, reset it back to this step + try: + if instance.current_step and instance.current_step.order > step.order: + instance.current_step = step + instance.save(update_fields=['current_step']) + except Exception: + pass + return JsonResponse({'success': True, 'redirect': reverse('invoices:final_invoice_step', args=[instance.id, step_id])}) @@ -945,6 +968,8 @@ def add_special_charge(request, instance_id, step_id): def delete_special_charge(request, instance_id, step_id, item_id): instance = get_scoped_instance_or_404(request, instance_id) invoice = get_object_or_404(Invoice, process_instance=instance) + step = get_object_or_404(instance.process.steps, id=step_id) + # only MANAGER can delete special charges try: if not (hasattr(request.user, 'profile') and request.user.profile.has_role(UserRoles.MANAGER)): @@ -960,29 +985,51 @@ def delete_special_charge(request, instance_id, step_id, item_id): return JsonResponse({'success': False, 'message': 'امکان حذف این مورد وجود ندارد'}) inv_item.hard_delete() invoice.calculate_totals() - # If the next step was completed, reopen it (set to in_progress) due to invoice change + + + # After modifying payments, set step back to in_progress try: - step = get_object_or_404(instance.process.steps, id=step_id) - next_step = instance.process.steps.filter(order__gt=step.order).first() - if next_step: - si, _ = StepInstance.objects.get_or_create(process_instance=instance, step=next_step) - if si.status in ['completed', 'approved']: - si.status = 'in_progress' - si.completed_at = None - si.save(update_fields=['status', 'completed_at']) - # Clear prior approvals/rejections as the underlying totals changed + si, _ = StepInstance.objects.get_or_create(process_instance=instance, step=step) + si.status = 'in_progress' + si.completed_at = None + si.save() + except Exception: + pass + + # Reset ALL subsequent completed steps to in_progress + try: + subsequent_steps = instance.process.steps.filter(order__gt=step.order) + for subsequent_step in subsequent_steps: + subsequent_step_instance = instance.step_instances.filter(step=subsequent_step).first() + if subsequent_step_instance: + # Bypass validation by using update() instead of save() + instance.step_instances.filter(step=subsequent_step).update( + status='in_progress', + completed_at=None + ) + # Clear prior approvals/rejections as the underlying totals changed try: - for appr in list(si.approvals.all()): + for appr in list(subsequent_step_instance.approvals.all()): appr.delete() except Exception: pass try: - for rej in list(si.rejections.all()): + for rej in list(subsequent_step_instance.rejections.all()): rej.delete() except Exception: pass except Exception: pass + + # If current step is ahead of this step, reset it back to this step + try: + if instance.current_step and instance.current_step.order > step.order: + instance.current_step = step + instance.save(update_fields=['current_step']) + except Exception: + pass + + return JsonResponse({'success': True, 'redirect': reverse('invoices:final_invoice_step', args=[instance.id, step_id])})