fix auto complete final invoice
This commit is contained in:
parent
23f50aacd4
commit
6367d34f0c
7 changed files with 160 additions and 39 deletions
|
|
@ -94,6 +94,17 @@ def request_list(request):
|
|||
reports_map[pid] = row['visited_date']
|
||||
except Exception:
|
||||
reports_map = {}
|
||||
|
||||
# Build a map to check if installation reports exist (for approval status logic)
|
||||
has_installation_report_map = {}
|
||||
if instance_ids:
|
||||
try:
|
||||
report_exists_qs = InstallationReport.objects.filter(
|
||||
assignment__process_instance_id__in=instance_ids
|
||||
).values_list('assignment__process_instance_id', flat=True).distinct()
|
||||
has_installation_report_map = {pid: True for pid in report_exists_qs}
|
||||
except Exception:
|
||||
has_installation_report_map = {}
|
||||
|
||||
# Calculate progress for each instance and attach install schedule info
|
||||
instances_with_progress = []
|
||||
|
|
@ -140,43 +151,51 @@ def request_list(request):
|
|||
try:
|
||||
current_step_instance = instance.step_instances.filter(step=instance.current_step).first()
|
||||
if current_step_instance:
|
||||
# Check if this step requires approvals
|
||||
required_roles = current_step_instance.required_roles()
|
||||
if required_roles:
|
||||
# Get approvals by role
|
||||
approvals_by_role = current_step_instance.approvals_by_role()
|
||||
|
||||
# Check for rejections
|
||||
latest_rejection = current_step_instance.get_latest_rejection()
|
||||
if latest_rejection and current_step_instance.status == 'rejected':
|
||||
role_name = latest_rejection.role.name if latest_rejection.role else 'نامشخص'
|
||||
current_step_approval_status = {
|
||||
'status': 'rejected',
|
||||
'role': role_name,
|
||||
'display': f'رد شده توسط {role_name}'
|
||||
}
|
||||
else:
|
||||
# Check approval status
|
||||
pending_roles = []
|
||||
approved_roles = []
|
||||
for role in required_roles:
|
||||
if approvals_by_role.get(role.id) == 'approved':
|
||||
approved_roles.append(role.name)
|
||||
else:
|
||||
pending_roles.append(role.name)
|
||||
# Special check: For installation report step (order=6), only show approval status if report exists
|
||||
should_show_approval_status = True
|
||||
if instance.current_step.order == 6:
|
||||
# Check if installation report exists
|
||||
if not has_installation_report_map.get(instance.id, False):
|
||||
should_show_approval_status = False
|
||||
|
||||
if should_show_approval_status:
|
||||
# Check if this step requires approvals
|
||||
required_roles = current_step_instance.required_roles()
|
||||
if required_roles:
|
||||
# Get approvals by role
|
||||
approvals_by_role = current_step_instance.approvals_by_role()
|
||||
|
||||
if pending_roles:
|
||||
# Check for rejections
|
||||
latest_rejection = current_step_instance.get_latest_rejection()
|
||||
if latest_rejection and current_step_instance.status == 'rejected':
|
||||
role_name = latest_rejection.role.name if latest_rejection.role else 'نامشخص'
|
||||
current_step_approval_status = {
|
||||
'status': 'pending',
|
||||
'roles': pending_roles,
|
||||
'display': f'در انتظار تایید {" و ".join(pending_roles)}'
|
||||
}
|
||||
elif approved_roles and not pending_roles:
|
||||
current_step_approval_status = {
|
||||
'status': 'approved',
|
||||
'roles': approved_roles,
|
||||
'display': f'تایید شده توسط {" و ".join(approved_roles)}'
|
||||
'status': 'rejected',
|
||||
'role': role_name,
|
||||
'display': f'رد شده توسط {role_name}'
|
||||
}
|
||||
else:
|
||||
# Check approval status
|
||||
pending_roles = []
|
||||
approved_roles = []
|
||||
for role in required_roles:
|
||||
if approvals_by_role.get(role.id) == 'approved':
|
||||
approved_roles.append(role.name)
|
||||
else:
|
||||
pending_roles.append(role.name)
|
||||
|
||||
if pending_roles:
|
||||
current_step_approval_status = {
|
||||
'status': 'pending',
|
||||
'roles': pending_roles,
|
||||
'display': f'در انتظار تایید {" و ".join(pending_roles)}'
|
||||
}
|
||||
elif approved_roles and not pending_roles:
|
||||
current_step_approval_status = {
|
||||
'status': 'approved',
|
||||
'roles': approved_roles,
|
||||
'display': f'تایید شده توسط {" و ".join(approved_roles)}'
|
||||
}
|
||||
except Exception:
|
||||
current_step_approval_status = None
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue