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