2025-08-12 13:33:25 +03:00

291 lines
16 KiB
HTML

{% extends "base.html" %}
{% load static %}
{% block title %}Billing Dashboard - {{ block.super }}{% endblock %}
{% block content %}
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="d-flex justify-content-between align-items-center mb-4">
<h1 class="h3 mb-0">Billing Dashboard</h1>
<div class="btn-group">
<a href="{% url 'billing:bill_list' %}" class="btn btn-outline-primary">
<i class="fas fa-file-invoice"></i> View Bills
</a>
<a href="{% url 'billing:payment_list' %}" class="btn btn-outline-success">
<i class="fas fa-credit-card"></i> View Payments
</a>
<a href="{% url 'billing:claim_list' %}" class="btn btn-outline-info">
<i class="fas fa-file-medical"></i> View Claims
</a>
</div>
</div>
<!-- Statistics Cards -->
<div class="row mb-4" hx-get="{% url 'billing:billing_stats' %}" hx-trigger="load, every 30s">
{% include 'billing/partials/billing_stats.html' %}
</div>
<div class="row">
<!-- Recent Bills -->
<div class="col-lg-6 mb-4">
<div class="card h-100">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="mb-0">
<i class="fas fa-file-invoice me-2"></i>Recent Medical Bills
</h5>
<a href="{% url 'billing:bill_list' %}" class="btn btn-sm btn-outline-primary">View All</a>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-sm">
<thead>
<tr>
<th>Bill #</th>
<th>Patient</th>
<th>Amount</th>
<th>Status</th>
<th>Date</th>
</tr>
</thead>
<tbody>
{% for bill in recent_bills %}
<tr>
<td>
<a href="{% url 'billing:bill_detail' bill.bill_id %}" class="text-decoration-none">
{{ bill.bill_number }}
</a>
</td>
<td>
<strong>{{ bill.patient.get_full_name }}</strong><br>
<small class="text-muted">{{ bill.patient.mrn }}</small>
</td>
<td>${{ bill.total_amount|floatformat:2 }}</td>
<td>
{% if bill.status == 'DRAFT' %}
<span class="badge bg-secondary">Draft</span>
{% elif bill.status == 'PENDING' %}
<span class="badge bg-warning">Pending</span>
{% elif bill.status == 'SUBMITTED' %}
<span class="badge bg-info">Submitted</span>
{% elif bill.status == 'PARTIAL_PAID' %}
<span class="badge bg-primary">Partially Paid</span>
{% elif bill.status == 'PAID' %}
<span class="badge bg-success">Paid</span>
{% elif bill.status == 'OVERDUE' %}
<span class="badge bg-danger">Overdue</span>
{% elif bill.status == 'COLLECTIONS' %}
<span class="badge bg-dark">Collections</span>
{% elif bill.status == 'WRITTEN_OFF' %}
<span class="badge bg-secondary">Written Off</span>
{% elif bill.status == 'CANCELLED' %}
<span class="badge bg-secondary">Cancelled</span>
{% endif %}
</td>
<td>{{ bill.bill_date|date:"M d" }}</td>
</tr>
{% empty %}
<tr>
<td colspan="5" class="text-center text-muted">No recent bills</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- Recent Payments -->
<div class="col-lg-6 mb-4">
<div class="card h-100">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="mb-0">
<i class="fas fa-credit-card me-2"></i>Recent Payments
</h5>
<a href="{% url 'billing:payment_list' %}" class="btn btn-sm btn-outline-success">View All</a>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-sm">
<thead>
<tr>
<th>Payment #</th>
<th>Patient</th>
<th>Amount</th>
<th>Method</th>
<th>Date</th>
</tr>
</thead>
<tbody>
{% for payment in recent_payments %}
<tr>
<td>{{ payment.payment_number }}</td>
<td>
<strong>{{ payment.medical_bill.patient.get_full_name }}</strong><br>
<small class="text-muted">{{ payment.medical_bill.patient.mrn }}</small>
</td>
<td>${{ payment.payment_amount|floatformat:2 }}</td>
<td>{{ payment.get_payment_method_display }}</td>
<td>{{ payment.payment_date|date:"M d" }}</td>
</tr>
{% empty %}
<tr>
<td colspan="5" class="text-center text-muted">No recent payments</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<!-- Overdue Bills -->
<div class="col-lg-6 mb-4">
<div class="card h-100">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="mb-0 text-danger">
<i class="fas fa-exclamation-triangle me-2"></i>Overdue Bills
</h5>
<span class="badge bg-danger">{{ overdue_bills.count }}</span>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-sm">
<thead>
<tr>
<th>Bill #</th>
<th>Patient</th>
<th>Amount</th>
<th>Days Overdue</th>
</tr>
</thead>
<tbody>
{% for bill in overdue_bills %}
<tr>
<td>
<a href="{% url 'billing:bill_detail' bill.bill_id %}" class="text-decoration-none">
{{ bill.bill_number }}
</a>
</td>
<td>
<strong>{{ bill.patient.get_full_name }}</strong><br>
<small class="text-muted">{{ bill.patient.mrn }}</small>
</td>
<td>${{ bill.balance_amount|floatformat:2 }}</td>
<td>
<span class="text-danger">{{ bill.days_outstanding }} days</span>
</td>
</tr>
{% empty %}
<tr>
<td colspan="4" class="text-center text-muted">No overdue bills</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- Pending Claims -->
<div class="col-lg-6 mb-4">
<div class="card h-100">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="mb-0 text-warning">
<i class="fas fa-file-medical me-2"></i>Pending Claims
</h5>
<span class="badge bg-warning">{{ pending_claims.count }}</span>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-sm">
<thead>
<tr>
<th>Claim #</th>
<th>Patient</th>
<th>Insurance</th>
<th>Amount</th>
<th>Days Pending</th>
</tr>
</thead>
<tbody>
{% for claim in pending_claims %}
<tr>
<td>{{ claim.claim_number }}</td>
<td>
<strong>{{ claim.medical_bill.patient.get_full_name }}</strong><br>
<small class="text-muted">{{ claim.medical_bill.patient.mrn }}</small>
</td>
<td>{{ claim.insurance_info.insurance_company }}</td>
<td>${{ claim.billed_amount|floatformat:2 }}</td>
<td>
<span class="{% if claim.days_pending > 30 %}text-warning{% elif claim.days_pending > 60 %}text-danger{% endif %}">
{{ claim.days_pending }} days
</span>
</td>
</tr>
{% empty %}
<tr>
<td colspan="5" class="text-center text-muted">No pending claims</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- Quick Actions -->
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h5 class="mb-0">
<i class="fas fa-bolt me-2"></i>Quick Actions
</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-3 mb-3">
<a href="{% url 'billing:bill_create' %}" class="btn btn-outline-primary w-100 py-3">
<i class="fas fa-plus-circle fa-2x mb-2 d-block"></i>
Create Bill
</a>
</div>
<div class="col-md-3 mb-3">
<a href="{% url 'billing:payment_list' %}" class="btn btn-outline-success w-100 py-3">
<i class="fas fa-credit-card fa-2x mb-2 d-block"></i>
Record Payment
</a>
</div>
<div class="col-md-3 mb-3">
<a href="{% url 'billing:claim_list' %}" class="btn btn-outline-info w-100 py-3">
<i class="fas fa-file-medical fa-2x mb-2 d-block"></i>
Submit Claim
</a>
</div>
<div class="col-md-3 mb-3">
<a href="{% url 'billing:export_bills' %}" class="btn btn-outline-secondary w-100 py-3">
<i class="fas fa-chart-bar fa-2x mb-2 d-block"></i>
Export Reports
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}