fix final step
This commit is contained in:
parent
9592c00565
commit
394546dc67
9 changed files with 137 additions and 82 deletions
|
@ -33,13 +33,14 @@ def _render_template(template: CertificateTemplate, instance: ProcessInstance):
|
|||
'company_name': (template.company.name if template.company else '') or '',
|
||||
'customer_full_name': rep.get_full_name() if rep else '',
|
||||
'water_subscription_number': getattr(well, 'water_subscription_number', '') or '',
|
||||
'address': getattr(well, 'address', '') or '',
|
||||
'address': getattr(well, 'county', '') or '',
|
||||
'visit_date_jalali': _to_jalali(getattr(latest_report, 'visited_date', None)) if latest_report else '',
|
||||
}
|
||||
title = (template.title or '').format(**ctx)
|
||||
body = (template.body or '')
|
||||
# Render body placeholders with bold values
|
||||
for k, v in ctx.items():
|
||||
body = body.replace(f"{{{{ {k} }}}}", str(v))
|
||||
body = body.replace(f"{{{{ {k} }}}}", f"<strong>{str(v)}</strong>")
|
||||
return title, body
|
||||
|
||||
|
||||
|
@ -50,6 +51,7 @@ def certificate_step(request, instance_id, step_id):
|
|||
# Ensure all previous steps are completed and invoice settled
|
||||
prior_steps = instance.process.steps.filter(order__lt=instance.current_step.order if instance.current_step else 9999)
|
||||
incomplete = StepInstance.objects.filter(process_instance=instance, step__in=prior_steps).exclude(status='completed').exists()
|
||||
|
||||
if incomplete:
|
||||
messages.error(request, 'ابتدا همه مراحل قبلی را تکمیل کنید')
|
||||
return redirect('processes:request_list')
|
||||
|
@ -87,6 +89,17 @@ def certificate_step(request, instance_id, step_id):
|
|||
except Exception:
|
||||
messages.error(request, 'شما مجوز تایید این مرحله را ندارید')
|
||||
return redirect('processes:step_detail', instance_id=instance.id, step_id=step.id)
|
||||
# Safety check: ensure ALL previous steps are completed before approval
|
||||
try:
|
||||
prev_steps_qs = instance.process.steps.filter(order__lt=step.order)
|
||||
has_incomplete = StepInstance.objects.filter(process_instance=instance, step__in=prev_steps_qs).exclude(status='completed').exists()
|
||||
if has_incomplete:
|
||||
messages.error(request, 'ابتدا همه مراحل قبلی را تکمیل کنید')
|
||||
return redirect('processes:step_detail', instance_id=instance.id, step_id=step.id)
|
||||
except Exception:
|
||||
messages.error(request, 'خطا در بررسی مراحل قبلی')
|
||||
return redirect('processes:step_detail', instance_id=instance.id, step_id=step.id)
|
||||
|
||||
cert.approved = True
|
||||
cert.approved_at = timezone.now()
|
||||
cert.save()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue