main flow checked
This commit is contained in:
parent
b5bf3a5dbe
commit
f853ad9784
21 changed files with 365 additions and 89 deletions
|
|
@ -99,9 +99,9 @@
|
|||
<p class="text-nowrap mb-2"><i class="bx bx-map-pin bx-sm me-2"></i>UTM Y: {{ report.utm_y|default:'-' }}</p>
|
||||
<p class="text-nowrap mb-2"><i class="bx bx-category bx-sm me-2"></i>نوع مصرف: {{ report.get_usage_type_display|default:'-' }}</p>
|
||||
<p class="text-nowrap mb-2"><i class="bx bx-id-card bx-sm me-2"></i>شماره پروانه بهرهبرداری: {{ report.exploitation_license_number|default:'-' }}</p>
|
||||
<p class="text-nowrap mb-2"><i class="bx bx-bolt-circle bx-sm me-2"></i>(کیلووات ساعت)قدرت موتور: {{ report.motor_power|default:'-' }}</p>
|
||||
<p class="text-nowrap mb-2"><i class="bx bx-water bx-sm me-2"></i>(لیتر/ثانیه) دبی قبل کالیبراسیون: {{ report.pre_calibration_flow_rate|default:'-' }}</p>
|
||||
<p class="text-nowrap mb-2"><i class="bx bx-water bx-sm me-2"></i>(لیتر/ثانیه) دبی بعد کالیبراسیون: {{ report.post_calibration_flow_rate|default:'-' }}</p>
|
||||
<p class="text-nowrap mb-2"><i class="bx bx-bolt-circle bx-sm me-2"></i>قدرت موتور(کیلووات ساعت): {{ report.motor_power|default:'-' }}</p>
|
||||
<p class="text-nowrap mb-2"><i class="bx bx-water bx-sm me-2"></i>دبی قبل کالیبراسیون(لیتر/ثانیه): {{ report.pre_calibration_flow_rate|default:'-' }}</p>
|
||||
<p class="text-nowrap mb-2"><i class="bx bx-water bx-sm me-2"></i>دبی بعد کالیبراسیون(لیتر/ثانیه): {{ report.post_calibration_flow_rate|default:'-' }}</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -157,7 +157,7 @@
|
|||
<tr><td colspan="5" class="text-center text-muted">تغییری ثبت نشده است</td></tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</table>nvoices/instance/69/step/3/payments/
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -320,15 +320,29 @@ def installation_report_step(request, instance_id, step_id):
|
|||
can_approve_reject = False
|
||||
user_can_approve = can_approve_reject
|
||||
approvals_list = list(step_instance.approvals.select_related('role', 'approved_by').filter(is_deleted=False))
|
||||
rejections_list = list(step_instance.rejections.select_related('role', 'rejected_by').filter(is_deleted=False))
|
||||
approvals_by_role = {a.role_id: a for a in approvals_list}
|
||||
approver_statuses = [
|
||||
{
|
||||
rejections_by_role = {r.role_id: r for r in rejections_list}
|
||||
approver_statuses = []
|
||||
for r in reqs:
|
||||
appr = approvals_by_role.get(r.role_id)
|
||||
rejection = rejections_by_role.get(r.role_id)
|
||||
|
||||
if appr:
|
||||
status = 'approved'
|
||||
reason = appr.reason
|
||||
elif rejection:
|
||||
status = 'rejected'
|
||||
reason = rejection.reason
|
||||
else:
|
||||
status = None
|
||||
reason = ''
|
||||
|
||||
approver_statuses.append({
|
||||
'role': r.role,
|
||||
'status': (approvals_by_role.get(r.role_id).decision if approvals_by_role.get(r.role_id) else None),
|
||||
'reason': (approvals_by_role.get(r.role_id).reason if approvals_by_role.get(r.role_id) else ''),
|
||||
}
|
||||
for r in reqs
|
||||
]
|
||||
'status': status,
|
||||
'reason': reason,
|
||||
})
|
||||
|
||||
# Determine if current user has already approved/rejected (to disable buttons)
|
||||
current_user_has_decided = False
|
||||
|
|
@ -356,10 +370,11 @@ def installation_report_step(request, instance_id, step_id):
|
|||
|
||||
if action == 'approve':
|
||||
# Record this user's approval for their role
|
||||
StepApproval.objects.update_or_create(
|
||||
StepApproval.objects.create(
|
||||
step_instance=step_instance,
|
||||
role=matching_role,
|
||||
defaults={'approved_by': request.user, 'decision': 'approved', 'reason': ''}
|
||||
approved_by=request.user,
|
||||
reason=''
|
||||
)
|
||||
# Only mark report approved when ALL required roles have approved
|
||||
if step_instance.is_fully_approved():
|
||||
|
|
@ -386,12 +401,8 @@ def installation_report_step(request, instance_id, step_id):
|
|||
if not reason:
|
||||
messages.error(request, 'لطفاً علت رد شدن را وارد کنید.')
|
||||
return redirect('processes:step_detail', instance_id=instance.id, step_id=step.id)
|
||||
StepApproval.objects.update_or_create(
|
||||
step_instance=step_instance,
|
||||
role=matching_role,
|
||||
defaults={'approved_by': request.user, 'decision': 'rejected', 'reason': reason}
|
||||
)
|
||||
StepRejection.objects.create(step_instance=step_instance, rejected_by=request.user, reason=reason)
|
||||
# Only create StepRejection for rejections, not StepApproval
|
||||
StepRejection.objects.create(step_instance=step_instance, role=matching_role, rejected_by=request.user, reason=reason)
|
||||
existing_report.approved = False
|
||||
existing_report.save()
|
||||
# If current step moved ahead of this step, reset it back for correction (align with invoices)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue