diff --git a/db.sqlite3 b/db.sqlite3 index 5a406d6..79d4607 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ diff --git a/invoices/views.py b/invoices/views.py index 04ea85c..4651dba 100644 --- a/invoices/views.py +++ b/invoices/views.py @@ -422,13 +422,29 @@ def quote_payment_step(request, instance_id, step_id): step_instance.status = 'completed' step_instance.completed_at = timezone.now() step_instance.save() - # move to next step - redirect_url = 'processes:request_list' + + # Auto-complete next step if it exists if next_step: - instance.current_step = next_step - instance.save() - return redirect('processes:step_detail', instance_id=instance.id, step_id=next_step.id) - return redirect(redirect_url) + next_step_instance, _ = StepInstance.objects.get_or_create( + process_instance=instance, + step=next_step, + defaults={'status': 'in_progress'} + ) + next_step_instance.status = 'completed' + next_step_instance.completed_at = timezone.now() + next_step_instance.save() + + # Move to the step after next + step_after_next = instance.process.steps.filter(order__gt=next_step.order).first() + if step_after_next: + instance.current_step = step_after_next + instance.save() + return redirect('processes:step_detail', instance_id=instance.id, step_id=step_after_next.id) + else: + # No more steps, go to request list + return redirect('processes:request_list') + + return redirect('processes:request_list') messages.success(request, 'تایید شما ثبت شد. منتظر تایید سایر نقش‌ها.') return redirect('invoices:quote_payment_step', instance_id=instance.id, step_id=step.id)