616 lines
26 KiB
HTML
616 lines
26 KiB
HTML
{% extends 'base.html' %}
|
|
{% load static %}
|
|
|
|
{% block title %}Insurance Claims Management{% endblock %}
|
|
|
|
{% block css %}
|
|
<link href="{% static 'plugins/datatables.net-bs5/css/dataTables.bootstrap5.min.css' %}" rel="stylesheet" />
|
|
<link href="{% static 'plugins/datatables.net-responsive-bs5/css/responsive.bootstrap5.min.css' %}" rel="stylesheet" />
|
|
<link href="{% static 'plugins/select2/dist/css/select2.min.css' %}" rel="stylesheet" />
|
|
<style>
|
|
.stats-card {
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
border: none;
|
|
color: white;
|
|
transition: transform 0.3s ease;
|
|
}
|
|
.stats-card:hover {
|
|
transform: translateY(-5px);
|
|
}
|
|
.stats-card .card-body {
|
|
padding: 1.5rem;
|
|
}
|
|
.stats-icon {
|
|
width: 60px;
|
|
height: 60px;
|
|
border-radius: 50%;
|
|
background: rgba(255, 255, 255, 0.2);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 24px;
|
|
}
|
|
.filter-card {
|
|
background: #f8f9fa;
|
|
border: 1px solid #e9ecef;
|
|
border-radius: 10px;
|
|
padding: 1.5rem;
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
.claim-status-badge {
|
|
font-size: 0.75rem;
|
|
padding: 0.375rem 0.75rem;
|
|
border-radius: 50px;
|
|
}
|
|
.priority-indicator {
|
|
width: 8px;
|
|
height: 8px;
|
|
border-radius: 50%;
|
|
display: inline-block;
|
|
margin-right: 5px;
|
|
}
|
|
.priority-low { background-color: #28a745; }
|
|
.priority-normal { background-color: #17a2b8; }
|
|
.priority-high { background-color: #ffc107; }
|
|
.priority-urgent { background-color: #fd7e14; }
|
|
.priority-emergency { background-color: #dc3545; }
|
|
.action-buttons .btn {
|
|
margin-right: 5px;
|
|
margin-bottom: 5px;
|
|
}
|
|
.table-responsive {
|
|
border-radius: 10px;
|
|
overflow: hidden;
|
|
box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);
|
|
}
|
|
.bulk-actions {
|
|
background: #fff;
|
|
padding: 1rem;
|
|
border-radius: 10px;
|
|
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
|
|
margin-bottom: 1rem;
|
|
display: none;
|
|
}
|
|
.bulk-actions.show {
|
|
display: block;
|
|
}
|
|
</style>
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
|
<div id="content" class="app-content">
|
|
<!-- Page Header -->
|
|
<div class="d-flex align-items-center mb-3">
|
|
<div>
|
|
<ol class="breadcrumb">
|
|
<li class="breadcrumb-item"><a href="{% url 'core:dashboard' %}">Dashboard</a></li>
|
|
<li class="breadcrumb-item"><a href="{% url 'patients:patient_list' %}">Patients</a></li>
|
|
<li class="breadcrumb-item active">Insurance Claims</li>
|
|
</ol>
|
|
<h1 class="page-header mb-0">Insurance Claims Management</h1>
|
|
</div>
|
|
<div class="ms-auto">
|
|
<div class="btn-group">
|
|
<a href="{% url 'patients:claims_dashboard' %}" class="btn btn-info">
|
|
<i class="fas fa-chart-bar me-2"></i>Dashboard
|
|
</a>
|
|
<a href="{% url 'patients:insurance_claim_create' %}" class="btn btn-primary">
|
|
<i class="fas fa-plus me-2"></i>New Claim
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Statistics Cards -->
|
|
<div class="row mb-4">
|
|
<div class="col-xl-3 col-md-6">
|
|
<div class="card stats-card">
|
|
<div class="card-body d-flex align-items-center">
|
|
<div class="stats-icon me-3">
|
|
<i class="fas fa-file-medical"></i>
|
|
</div>
|
|
<div>
|
|
<div class="fs-6 text-white-75">Total Claims</div>
|
|
<div class="fs-3 fw-bold">{{ stats.total_claims|default:0 }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-xl-3 col-md-6">
|
|
<div class="card stats-card">
|
|
<div class="card-body d-flex align-items-center">
|
|
<div class="stats-icon me-3">
|
|
<i class="fas fa-money-bill-wave"></i>
|
|
</div>
|
|
<div>
|
|
<div class="fs-6 text-white-75">Total Billed</div>
|
|
<div class="fs-3 fw-bold">{{ stats.total_billed|floatformat:0|default:0 }} SAR</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-xl-3 col-md-6">
|
|
<div class="card stats-card">
|
|
<div class="card-body d-flex align-items-center">
|
|
<div class="stats-icon me-3">
|
|
<i class="fas fa-check-circle"></i>
|
|
</div>
|
|
<div>
|
|
<div class="fs-6 text-white-75">Total Approved</div>
|
|
<div class="fs-3 fw-bold">{{ stats.total_approved|floatformat:0|default:0 }} SAR</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-xl-3 col-md-6">
|
|
<div class="card stats-card">
|
|
<div class="card-body d-flex align-items-center">
|
|
<div class="stats-icon me-3">
|
|
<i class="fas fa-calculator"></i>
|
|
</div>
|
|
<div>
|
|
<div class="fs-6 text-white-75">Average Claim</div>
|
|
<div class="fs-3 fw-bold">{{ stats.avg_amount|floatformat:0|default:0 }} SAR</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Filters -->
|
|
<div class="filter-card">
|
|
<form method="get" id="filterForm">
|
|
<div class="row g-3">
|
|
<div class="col-md-3">
|
|
<label class="form-label">Search Claims</label>
|
|
<input type="text" class="form-control" name="search" value="{{ search_query }}"
|
|
placeholder="Claim number, patient name, provider...">
|
|
</div>
|
|
<div class="col-md-2">
|
|
<label class="form-label">Status</label>
|
|
<select class="form-select" name="status">
|
|
<option value="">All Statuses</option>
|
|
{% for value, label in status_choices %}
|
|
<option value="{{ value }}" {% if status_filter == value %}selected{% endif %}>{{ label }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</div>
|
|
<div class="col-md-2">
|
|
<label class="form-label">Type</label>
|
|
<select class="form-select" name="type">
|
|
<option value="">All Types</option>
|
|
{% for value, label in type_choices %}
|
|
<option value="{{ value }}" {% if type_filter == value %}selected{% endif %}>{{ label }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</div>
|
|
<div class="col-md-2">
|
|
<label class="form-label">Priority</label>
|
|
<select class="form-select" name="priority">
|
|
<option value="">All Priorities</option>
|
|
{% for value, label in priority_choices %}
|
|
<option value="{{ value }}" {% if priority_filter == value %}selected{% endif %}>{{ label }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</div>
|
|
<div class="col-md-1">
|
|
<label class="form-label">From</label>
|
|
<input type="date" class="form-control" name="date_from" value="{{ date_from }}">
|
|
</div>
|
|
<div class="col-md-1">
|
|
<label class="form-label">To</label>
|
|
<input type="date" class="form-control" name="date_to" value="{{ date_to }}">
|
|
</div>
|
|
<div class="col-md-1 d-flex align-items-end">
|
|
<button type="submit" class="btn btn-primary me-2">
|
|
<i class="fas fa-search"></i>
|
|
</button>
|
|
<a href="{% url 'patients:insurance_claims_list' %}" class="btn btn-outline-secondary">
|
|
<i class="fas fa-times"></i>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
|
|
<!-- Bulk Actions -->
|
|
<div class="bulk-actions" id="bulkActions">
|
|
<div class="d-flex align-items-center justify-content-between">
|
|
<div>
|
|
<span class="fw-bold">Selected: <span id="selectedCount">0</span> claims</span>
|
|
</div>
|
|
<div class="btn-group">
|
|
<button type="button" class="btn btn-sm btn-outline-primary" onclick="updateBulkStatus('SUBMITTED')">
|
|
<i class="fas fa-paper-plane me-1"></i>Submit
|
|
</button>
|
|
<button type="button" class="btn btn-sm btn-outline-success" onclick="updateBulkStatus('APPROVED')">
|
|
<i class="fas fa-check me-1"></i>Approve
|
|
</button>
|
|
<button type="button" class="btn btn-sm btn-outline-danger" onclick="updateBulkStatus('DENIED')">
|
|
<i class="fas fa-times me-1"></i>Deny
|
|
</button>
|
|
<button type="button" class="btn btn-sm btn-outline-info" onclick="exportSelected()">
|
|
<i class="fas fa-download me-1"></i>Export
|
|
</button>
|
|
<button type="button" class="btn btn-sm btn-outline-secondary" onclick="clearSelection()">
|
|
<i class="fas fa-times me-1"></i>Clear
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Claims Table -->
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<div class="table-responsive">
|
|
<table class="table table-striped table-hover" id="claimsTable">
|
|
<thead class="table-dark">
|
|
<tr>
|
|
<th width="30">
|
|
<input type="checkbox" id="selectAll" class="form-check-input">
|
|
</th>
|
|
<th>Claim Number</th>
|
|
<th>Patient</th>
|
|
<th>Type</th>
|
|
<th>Status</th>
|
|
<th>Priority</th>
|
|
<th>Service Date</th>
|
|
<th>Provider</th>
|
|
<th>Billed Amount</th>
|
|
<th>Approved Amount</th>
|
|
<th>Actions</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for claim in claims %}
|
|
<tr>
|
|
<td>
|
|
<input type="checkbox" class="form-check-input claim-checkbox" value="{{ claim.id }}">
|
|
</td>
|
|
<td>
|
|
<a href="{% url 'patients:insurance_claim_detail' claim.id %}" class="text-decoration-none fw-bold">
|
|
{{ claim.claim_number }}
|
|
</a>
|
|
</td>
|
|
<td>
|
|
<div class="d-flex align-items-center">
|
|
<div class="avatar avatar-sm me-2">
|
|
<i class="fas fa-user-circle fa-2x text-muted"></i>
|
|
</div>
|
|
<div>
|
|
<div class="fw-bold">{{ claim.patient.get_full_name }}</div>
|
|
<small class="text-muted">{{ claim.patient.mrn }}</small>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<span class="badge bg-info">{{ claim.get_claim_type_display }}</span>
|
|
</td>
|
|
<td>
|
|
{% if claim.status == 'DRAFT' %}
|
|
<span class="badge bg-secondary claim-status-badge">{{ claim.get_status_display }}</span>
|
|
{% elif claim.status == 'SUBMITTED' %}
|
|
<span class="badge bg-primary claim-status-badge">{{ claim.get_status_display }}</span>
|
|
{% elif claim.status == 'UNDER_REVIEW' %}
|
|
<span class="badge bg-warning claim-status-badge">{{ claim.get_status_display }}</span>
|
|
{% elif claim.status == 'APPROVED' or claim.status == 'PARTIALLY_APPROVED' %}
|
|
<span class="badge bg-success claim-status-badge">{{ claim.get_status_display }}</span>
|
|
{% elif claim.status == 'DENIED' %}
|
|
<span class="badge bg-danger claim-status-badge">{{ claim.get_status_display }}</span>
|
|
{% elif claim.status == 'PAID' %}
|
|
<span class="badge bg-dark claim-status-badge">{{ claim.get_status_display }}</span>
|
|
{% else %}
|
|
<span class="badge bg-light text-dark claim-status-badge">{{ claim.get_status_display }}</span>
|
|
{% endif %}
|
|
</td>
|
|
<td>
|
|
<span class="priority-indicator priority-{{ claim.priority|lower }}"></span>
|
|
{{ claim.get_priority_display }}
|
|
</td>
|
|
<td>{{ claim.service_date|date:"M d, Y" }}</td>
|
|
<td>
|
|
<div>
|
|
<div class="fw-bold">{{ claim.service_provider|truncatechars:30 }}</div>
|
|
<small class="text-muted">{{ claim.facility_name|truncatechars:25 }}</small>
|
|
</div>
|
|
</td>
|
|
<td class="text-end">
|
|
<span class="fw-bold">{{ claim.billed_amount|floatformat:2 }} SAR</span>
|
|
</td>
|
|
<td class="text-end">
|
|
<span class="fw-bold text-success">{{ claim.approved_amount|floatformat:2 }} SAR</span>
|
|
</td>
|
|
<td>
|
|
<div class="action-buttons">
|
|
<a href="{% url 'patients:insurance_claim_detail' claim.id %}"
|
|
class="btn btn-sm btn-outline-primary" title="View Details">
|
|
<i class="fas fa-eye"></i>
|
|
</a>
|
|
<a href="{% url 'patients:insurance_claim_edit' claim.id %}"
|
|
class="btn btn-sm btn-outline-secondary" title="Edit">
|
|
<i class="fas fa-edit"></i>
|
|
</a>
|
|
<button type="button" class="btn btn-sm btn-outline-info"
|
|
onclick="showStatusModal({{ claim.id }}, '{{ claim.status }}')" title="Update Status">
|
|
<i class="fas fa-sync"></i>
|
|
</button>
|
|
<a href="{% url 'patients:insurance_claim_delete' claim.id %}"
|
|
class="btn btn-sm btn-outline-danger" title="Delete">
|
|
<i class="fas fa-trash"></i>
|
|
</a>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
{% empty %}
|
|
<tr>
|
|
<td colspan="11" class="text-center py-5">
|
|
<div class="text-muted">
|
|
<i class="fas fa-file-medical fa-3x mb-3"></i>
|
|
<h5>No claims found</h5>
|
|
<p>No insurance claims match your current filters.</p>
|
|
<a href="{% url 'patients:insurance_claim_create' %}" class="btn btn-primary">
|
|
<i class="fas fa-plus me-2"></i>Create First Claim
|
|
</a>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<!-- Pagination -->
|
|
{% if claims.has_other_pages %}
|
|
<nav aria-label="Claims pagination" class="mt-4">
|
|
<ul class="pagination justify-content-center">
|
|
{% if claims.has_previous %}
|
|
<li class="page-item">
|
|
<a class="page-link" href="?page={{ claims.previous_page_number }}{% if search_query %}&search={{ search_query }}{% endif %}{% if status_filter %}&status={{ status_filter }}{% endif %}{% if type_filter %}&type={{ type_filter }}{% endif %}{% if priority_filter %}&priority={{ priority_filter }}{% endif %}{% if date_from %}&date_from={{ date_from }}{% endif %}{% if date_to %}&date_to={{ date_to }}{% endif %}">
|
|
<i class="fas fa-chevron-left"></i>
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
|
|
{% for num in claims.paginator.page_range %}
|
|
{% if claims.number == num %}
|
|
<li class="page-item active">
|
|
<span class="page-link">{{ num }}</span>
|
|
</li>
|
|
{% elif num > claims.number|add:'-3' and num < claims.number|add:'3' %}
|
|
<li class="page-item">
|
|
<a class="page-link" href="?page={{ num }}{% if search_query %}&search={{ search_query }}{% endif %}{% if status_filter %}&status={{ status_filter }}{% endif %}{% if type_filter %}&type={{ type_filter }}{% endif %}{% if priority_filter %}&priority={{ priority_filter }}{% endif %}{% if date_from %}&date_from={{ date_from }}{% endif %}{% if date_to %}&date_to={{ date_to }}{% endif %}">{{ num }}</a>
|
|
</li>
|
|
{% endif %}
|
|
{% endfor %}
|
|
|
|
{% if claims.has_next %}
|
|
<li class="page-item">
|
|
<a class="page-link" href="?page={{ claims.next_page_number }}{% if search_query %}&search={{ search_query }}{% endif %}{% if status_filter %}&status={{ status_filter }}{% endif %}{% if type_filter %}&type={{ type_filter }}{% endif %}{% if priority_filter %}&priority={{ priority_filter }}{% endif %}{% if date_from %}&date_from={{ date_from }}{% endif %}{% if date_to %}&date_to={{ date_to }}{% endif %}">
|
|
<i class="fas fa-chevron-right"></i>
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
</ul>
|
|
</nav>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Status Update Modal -->
|
|
<div class="modal fade" id="statusModal" tabindex="-1">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title">Update Claim Status</h5>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<form id="statusForm">
|
|
<input type="hidden" id="claimId" name="claim_id">
|
|
<div class="mb-3">
|
|
<label class="form-label">New Status</label>
|
|
<select class="form-select" id="newStatus" name="status" required>
|
|
{% for value, label in status_choices %}
|
|
<option value="{{ value }}">{{ label }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label">Reason (Optional)</label>
|
|
<textarea class="form-control" name="reason" rows="3"
|
|
placeholder="Enter reason for status change..."></textarea>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
|
|
<button type="button" class="btn btn-primary" onclick="updateStatus()">Update Status</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|
|
|
|
{% block js %}
|
|
<script src="{% static 'plugins/datatables.net/js/dataTables.min.js' %}"></script>
|
|
<script src="{% static 'plugins/datatables.net-bs5/js/dataTables.bootstrap5.min.js' %}"></script>
|
|
<script src="{% static 'plugins/datatables.net-responsive/js/dataTables.responsive.min.js' %}"></script>
|
|
<script src="{% static 'plugins/datatables.net-responsive-bs5/js/responsive.bootstrap5.min.js' %}"></script>
|
|
<script src="{% static 'plugins/select2/dist/js/select2.min.js' %}"></script>
|
|
|
|
<script>
|
|
$(document).ready(function() {
|
|
// Initialize DataTable
|
|
$('#claimsTable').DataTable({
|
|
responsive: true,
|
|
pageLength: 20,
|
|
order: [[1, 'desc']],
|
|
columnDefs: [
|
|
{ orderable: false, targets: [0, 10] }
|
|
]
|
|
});
|
|
|
|
// Select all functionality
|
|
$('#selectAll').change(function() {
|
|
$('.claim-checkbox').prop('checked', this.checked);
|
|
updateBulkActions();
|
|
});
|
|
|
|
// Individual checkbox change
|
|
$('.claim-checkbox').change(function() {
|
|
updateBulkActions();
|
|
|
|
// Update select all checkbox
|
|
const totalCheckboxes = $('.claim-checkbox').length;
|
|
const checkedCheckboxes = $('.claim-checkbox:checked').length;
|
|
$('#selectAll').prop('checked', totalCheckboxes === checkedCheckboxes);
|
|
});
|
|
|
|
// Auto-submit filter form on change
|
|
$('#filterForm select, #filterForm input[type="date"]').change(function() {
|
|
$('#filterForm').submit();
|
|
});
|
|
});
|
|
|
|
function updateBulkActions() {
|
|
const selectedCount = $('.claim-checkbox:checked').length;
|
|
$('#selectedCount').text(selectedCount);
|
|
|
|
if (selectedCount > 0) {
|
|
$('#bulkActions').addClass('show');
|
|
} else {
|
|
$('#bulkActions').removeClass('show');
|
|
}
|
|
}
|
|
|
|
function showStatusModal(claimId, currentStatus) {
|
|
$('#claimId').val(claimId);
|
|
$('#newStatus').val(currentStatus);
|
|
$('#statusModal').modal('show');
|
|
}
|
|
|
|
function updateStatus() {
|
|
const claimId = $('#claimId').val();
|
|
const formData = new FormData($('#statusForm')[0]);
|
|
|
|
$.ajaxSetup({
|
|
beforeSend: function(xhr, settings) {
|
|
if (!this.crossDomain) {
|
|
xhr.setRequestHeader("X-CSRFToken", $('[name=csrfmiddlewaretoken]').val());
|
|
}
|
|
}
|
|
});
|
|
|
|
$.ajax({
|
|
url: `/patients/claims/${claimId}/update-status/`,
|
|
method: 'POST',
|
|
data: formData,
|
|
processData: false,
|
|
contentType: false,
|
|
success: function(response) {
|
|
if (response.success) {
|
|
$('#statusModal').modal('hide');
|
|
location.reload();
|
|
} else {
|
|
alert('Error: ' + response.error);
|
|
}
|
|
},
|
|
error: function() {
|
|
alert('Error updating status. Please try again.');
|
|
}
|
|
});
|
|
}
|
|
|
|
function updateBulkStatus(status) {
|
|
const selectedIds = $('.claim-checkbox:checked').map(function() {
|
|
return this.value;
|
|
}).get();
|
|
|
|
if (selectedIds.length === 0) {
|
|
alert('Please select claims to update.');
|
|
return;
|
|
}
|
|
|
|
if (!confirm(`Are you sure you want to update ${selectedIds.length} claims to ${status}?`)) {
|
|
return;
|
|
}
|
|
|
|
$.ajaxSetup({
|
|
beforeSend: function(xhr, settings) {
|
|
if (!this.crossDomain) {
|
|
xhr.setRequestHeader("X-CSRFToken", $('[name=csrfmiddlewaretoken]').val());
|
|
}
|
|
}
|
|
});
|
|
|
|
$.ajax({
|
|
url: '{% url "patients:bulk_claim_actions" %}',
|
|
method: 'POST',
|
|
data: {
|
|
action: 'update_status',
|
|
new_status: status,
|
|
claim_ids: selectedIds
|
|
},
|
|
success: function(response) {
|
|
if (response.success) {
|
|
location.reload();
|
|
} else {
|
|
alert('Error: ' + response.error);
|
|
}
|
|
},
|
|
error: function() {
|
|
alert('Error updating claims. Please try again.');
|
|
}
|
|
});
|
|
}
|
|
|
|
function exportSelected() {
|
|
const selectedIds = $('.claim-checkbox:checked').map(function() {
|
|
return this.value;
|
|
}).get();
|
|
|
|
if (selectedIds.length === 0) {
|
|
alert('Please select claims to export.');
|
|
return;
|
|
}
|
|
|
|
// Create form and submit
|
|
const form = $('<form>', {
|
|
method: 'POST',
|
|
action: '{% url "patients:bulk_claim_actions" %}'
|
|
});
|
|
|
|
form.append($('<input>', {
|
|
type: 'hidden',
|
|
name: 'csrfmiddlewaretoken',
|
|
value: $('[name=csrfmiddlewaretoken]').val()
|
|
}));
|
|
|
|
form.append($('<input>', {
|
|
type: 'hidden',
|
|
name: 'action',
|
|
value: 'export'
|
|
}));
|
|
|
|
selectedIds.forEach(function(id) {
|
|
form.append($('<input>', {
|
|
type: 'hidden',
|
|
name: 'claim_ids',
|
|
value: id
|
|
}));
|
|
});
|
|
|
|
$('body').append(form);
|
|
form.submit();
|
|
form.remove();
|
|
}
|
|
|
|
function clearSelection() {
|
|
$('.claim-checkbox, #selectAll').prop('checked', false);
|
|
updateBulkActions();
|
|
}
|
|
</script>
|
|
{% endblock %}
|
|
|