|
|
|
@ -1,166 +1,8 @@
|
|
|
|
{% extends 'common/base.html' %}
|
|
|
|
{% extends 'common/base.html' %}
|
|
|
|
{% block content %}
|
|
|
|
{% load filters %}
|
|
|
|
|
|
|
|
{% load permission_tags %}
|
|
|
|
|
|
|
|
|
|
|
|
{# <div id="dashboardContent" class="tab-content active">#}
|
|
|
|
{% block content %}
|
|
|
|
{# <div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-6">#}
|
|
|
|
|
|
|
|
{# <div class="card bg-white rounded-lg shadow p-6">#}
|
|
|
|
|
|
|
|
{# <div class="flex items-center">#}
|
|
|
|
|
|
|
|
{# <div class="p-3 rounded-full bg-blue-100 text-blue-600">#}
|
|
|
|
|
|
|
|
{# <svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24" stroke="currentColor">#}
|
|
|
|
|
|
|
|
{# <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" />#}
|
|
|
|
|
|
|
|
{# </svg>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{# <div class="ml-4">#}
|
|
|
|
|
|
|
|
{# <h3 class="text-lg font-semibold text-gray-700">Active Containers</h3>#}
|
|
|
|
|
|
|
|
{# <p class="text-3xl font-bold text-gray-900">42</p>#}
|
|
|
|
|
|
|
|
{# <p class="text-sm text-green-600">+3 since last week</p>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{##}
|
|
|
|
|
|
|
|
{# <div class="card bg-white rounded-lg shadow p-6">#}
|
|
|
|
|
|
|
|
{# <div class="flex items-center">#}
|
|
|
|
|
|
|
|
{# <div class="p-3 rounded-full bg-green-100 text-green-600">#}
|
|
|
|
|
|
|
|
{# <svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24" stroke="currentColor">#}
|
|
|
|
|
|
|
|
{# <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />#}
|
|
|
|
|
|
|
|
{# </svg>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{# <div class="ml-4">#}
|
|
|
|
|
|
|
|
{# <h3 class="text-lg font-semibold text-gray-700">Preinfo Sent</h3>#}
|
|
|
|
|
|
|
|
{# <p class="text-3xl font-bold text-gray-900">18</p>#}
|
|
|
|
|
|
|
|
{# <p class="text-sm text-green-600">+5 since last week</p>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{##}
|
|
|
|
|
|
|
|
{# <div class="card bg-white rounded-lg shadow p-6">#}
|
|
|
|
|
|
|
|
{# <div class="flex items-center">#}
|
|
|
|
|
|
|
|
{# <div class="p-3 rounded-full bg-orange-100 text-orange-600">#}
|
|
|
|
|
|
|
|
{# <svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24" stroke="currentColor">#}
|
|
|
|
|
|
|
|
{# <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7h12m0 0l-4-4m4 4l-4 4m0 6H4m0 0l4 4m-4-4l4-4" />#}
|
|
|
|
|
|
|
|
{# </svg>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{# <div class="ml-4">#}
|
|
|
|
|
|
|
|
{# <h3 class="text-lg font-semibold text-gray-700">Bookings</h3>#}
|
|
|
|
|
|
|
|
{# <p class="text-3xl font-bold text-gray-900">7</p>#}
|
|
|
|
|
|
|
|
{# <p class="text-sm text-orange-600">2 require attention</p>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{##}
|
|
|
|
|
|
|
|
{# <div class="grid grid-cols-1 lg:grid-cols-2 gap-6">#}
|
|
|
|
|
|
|
|
{# <div class="bg-white rounded-lg shadow">#}
|
|
|
|
|
|
|
|
{# <div class="px-6 py-4 border-b border-gray-200">#}
|
|
|
|
|
|
|
|
{# <h3 class="text-lg font-semibold text-gray-800">Recent Container Activity</h3>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{# <div class="p-6">#}
|
|
|
|
|
|
|
|
{# <div class="overflow-x-auto">#}
|
|
|
|
|
|
|
|
{# <table class="min-w-full divide-y divide-gray-200">#}
|
|
|
|
|
|
|
|
{# <thead>#}
|
|
|
|
|
|
|
|
{# <tr>#}
|
|
|
|
|
|
|
|
{# <th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Container</th>#}
|
|
|
|
|
|
|
|
{# <th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Type</th>#}
|
|
|
|
|
|
|
|
{# <th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Status</th>#}
|
|
|
|
|
|
|
|
{# <th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Date</th>#}
|
|
|
|
|
|
|
|
{# </tr>#}
|
|
|
|
|
|
|
|
{# </thead>#}
|
|
|
|
|
|
|
|
{# <tbody class="divide-y divide-gray-200">#}
|
|
|
|
|
|
|
|
{# <tr>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">MSCU1234567</td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm text-gray-700">40HC</td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap">#}
|
|
|
|
|
|
|
|
{# <span class="px-2 py-1 text-xs font-semibold rounded-full bg-green-100 text-green-800">Received</span>#}
|
|
|
|
|
|
|
|
{# </td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm text-gray-700">2023-06-15</td>#}
|
|
|
|
|
|
|
|
{# </tr>#}
|
|
|
|
|
|
|
|
{# <tr>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">MSCU7654321</td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm text-gray-700">20DV</td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap">#}
|
|
|
|
|
|
|
|
{# <span class="px-2 py-1 text-xs font-semibold rounded-full bg-blue-100 text-blue-800">Preinfo</span>#}
|
|
|
|
|
|
|
|
{# </td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm text-gray-700">2023-06-14</td>#}
|
|
|
|
|
|
|
|
{# </tr>#}
|
|
|
|
|
|
|
|
{# <tr>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">MSCU2468135</td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm text-gray-700">40DV</td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap">#}
|
|
|
|
|
|
|
|
{# <span class="px-2 py-1 text-xs font-semibold rounded-full bg-orange-100 text-orange-800">Order</span>#}
|
|
|
|
|
|
|
|
{# </td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm text-gray-700">2023-06-13</td>#}
|
|
|
|
|
|
|
|
{# </tr>#}
|
|
|
|
|
|
|
|
{# <tr>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">MSCU1357924</td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm text-gray-700">20RF</td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap">#}
|
|
|
|
|
|
|
|
{# <span class="px-2 py-1 text-xs font-semibold rounded-full bg-red-100 text-red-800">Expedited</span>#}
|
|
|
|
|
|
|
|
{# </td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm text-gray-700">2023-06-12</td>#}
|
|
|
|
|
|
|
|
{# </tr>#}
|
|
|
|
|
|
|
|
{# </tbody>#}
|
|
|
|
|
|
|
|
{# </table>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{##}
|
|
|
|
|
|
|
|
{# <div class="bg-white rounded-lg shadow">#}
|
|
|
|
|
|
|
|
{# <div class="px-6 py-4 border-b border-gray-200">#}
|
|
|
|
|
|
|
|
{# <h3 class="text-lg font-semibold text-gray-800">Payment Status</h3>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{# <div class="p-6">#}
|
|
|
|
|
|
|
|
{# <div class="overflow-x-auto">#}
|
|
|
|
|
|
|
|
{# <table class="min-w-full divide-y divide-gray-200">#}
|
|
|
|
|
|
|
|
{# <thead>#}
|
|
|
|
|
|
|
|
{# <tr>#}
|
|
|
|
|
|
|
|
{# <th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Invoice</th>#}
|
|
|
|
|
|
|
|
{# <th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Amount</th>#}
|
|
|
|
|
|
|
|
{# <th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Status</th>#}
|
|
|
|
|
|
|
|
{# <th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Due Date</th>#}
|
|
|
|
|
|
|
|
{# </tr>#}
|
|
|
|
|
|
|
|
{# </thead>#}
|
|
|
|
|
|
|
|
{# <tbody class="divide-y divide-gray-200">#}
|
|
|
|
|
|
|
|
{# <tr>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">INV-2023-0042</td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm text-gray-700">$1,250.00</td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap">#}
|
|
|
|
|
|
|
|
{# <span class="px-2 py-1 text-xs font-semibold rounded-full bg-green-100 text-green-800">Paid</span>#}
|
|
|
|
|
|
|
|
{# </td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm text-gray-700">2023-06-10</td>#}
|
|
|
|
|
|
|
|
{# </tr>#}
|
|
|
|
|
|
|
|
{# <tr>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">INV-2023-0041</td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm text-gray-700">$875.50</td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap">#}
|
|
|
|
|
|
|
|
{# <span class="px-2 py-1 text-xs font-semibold rounded-full bg-yellow-100 text-yellow-800">Pending</span>#}
|
|
|
|
|
|
|
|
{# </td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm text-gray-700">2023-06-20</td>#}
|
|
|
|
|
|
|
|
{# </tr>#}
|
|
|
|
|
|
|
|
{# <tr>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">INV-2023-0040</td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm text-gray-700">$2,100.00</td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap">#}
|
|
|
|
|
|
|
|
{# <span class="px-2 py-1 text-xs font-semibold rounded-full bg-red-100 text-red-800">Overdue</span>#}
|
|
|
|
|
|
|
|
{# </td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm text-gray-700">2023-06-05</td>#}
|
|
|
|
|
|
|
|
{# </tr>#}
|
|
|
|
|
|
|
|
{# <tr>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">INV-2023-0039</td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm text-gray-700">$950.25</td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap">#}
|
|
|
|
|
|
|
|
{# <span class="px-2 py-1 text-xs font-semibold rounded-full bg-green-100 text-green-800">Paid</span>#}
|
|
|
|
|
|
|
|
{# </td>#}
|
|
|
|
|
|
|
|
{# <td class="px-4 py-3 whitespace-nowrap text-sm text-gray-700">2023-05-28</td>#}
|
|
|
|
|
|
|
|
{# </tr>#}
|
|
|
|
|
|
|
|
{# </tbody>#}
|
|
|
|
|
|
|
|
{# </table>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
{# </div>#}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="dashboard-wrapper">
|
|
|
|
<div class="dashboard-wrapper">
|
|
|
|
<div class="stats-grid">
|
|
|
|
<div class="stats-grid">
|
|
|
|
<div class="dashboard-card">
|
|
|
|
<div class="dashboard-card">
|
|
|
|
@ -172,8 +14,8 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="stat-info">
|
|
|
|
<div class="stat-info">
|
|
|
|
<h3>Active Containers</h3>
|
|
|
|
<h3>Active Containers</h3>
|
|
|
|
<p class="stat-number">42</p>
|
|
|
|
<p class="stat-number">{{ containers }}</p>
|
|
|
|
<p class="stat-change">+3 since last week</p>
|
|
|
|
<p class="stat-change">+{{ containers_week }} since last week</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
@ -186,8 +28,8 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="stat-info">
|
|
|
|
<div class="stat-info">
|
|
|
|
<h3>Preinfo sent</h3>
|
|
|
|
<h3>Preinfo sent</h3>
|
|
|
|
<p class="stat-number">17</p>
|
|
|
|
<p class="stat-number">{{ preinfos }}</p>
|
|
|
|
<p class="stat-change">+7 since last week</p>
|
|
|
|
<p class="stat-change">+{{ preinfos_week }} since last week</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
@ -200,13 +42,12 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="stat-info">
|
|
|
|
<div class="stat-info">
|
|
|
|
<h3>Bookings active</h3>
|
|
|
|
<h3>Bookings active</h3>
|
|
|
|
<p class="stat-number">4</p>
|
|
|
|
<p class="stat-number">{{ bookings }}</p>
|
|
|
|
<p class="stat-change">+8 since last week</p>
|
|
|
|
<p class="stat-change">+{{ bookings_week }} since last week</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Other two cards similar structure -->
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="tables-grid">
|
|
|
|
<div class="tables-grid">
|
|
|
|
@ -225,17 +66,28 @@
|
|
|
|
</tr>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
</thead>
|
|
|
|
<tbody>
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
|
|
|
{% for container in recent_containers %}
|
|
|
|
<td>MSCU1234567</td>
|
|
|
|
<tr>
|
|
|
|
<td>40HC</td>
|
|
|
|
<td>{{ container.number }}</td>
|
|
|
|
<td><span class="status-tag status-received">Received</span></td>
|
|
|
|
<td>{{ container.container_type.name }}</td>
|
|
|
|
<td>2023-06-15</td>
|
|
|
|
{% if container.expedited %}
|
|
|
|
</tr>
|
|
|
|
<td><span class="status-tag status-expedited">Expedited</span></td>
|
|
|
|
<!-- Other rows similar structure -->
|
|
|
|
<td>{{ container.expedited_on|bg_date }}</td>
|
|
|
|
|
|
|
|
{% else %}
|
|
|
|
|
|
|
|
<td><span class="status-tag status-received">Received</span></td>
|
|
|
|
|
|
|
|
<td>{{ container.received_on|bg_date }}</td>
|
|
|
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
{% empty %}
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
|
|
|
|
<td> No recent history</td>
|
|
|
|
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
{% endfor %}
|
|
|
|
</tbody>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
{% if request.user|has_company_perm:"can_view_payment" %}
|
|
|
|
|
|
|
|
|
|
|
|
<div class="dashboard-card">
|
|
|
|
<div class="dashboard-card">
|
|
|
|
<div class="card-header">
|
|
|
|
<div class="card-header">
|
|
|
|
@ -245,25 +97,31 @@
|
|
|
|
<table class="table">
|
|
|
|
<table class="table">
|
|
|
|
<thead>
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<tr>
|
|
|
|
<th>Container</th>
|
|
|
|
<th>Invoice №</th>
|
|
|
|
<th>Type</th>
|
|
|
|
<th>Company</th>
|
|
|
|
<th>Status</th>
|
|
|
|
<th>Amount</th>
|
|
|
|
<th>Date</th>
|
|
|
|
<th>Paid</th>
|
|
|
|
</tr>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
</thead>
|
|
|
|
<tbody>
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
|
|
|
{% for payment in recent_payments %}
|
|
|
|
<td>MSCU1234567</td>
|
|
|
|
<tr>
|
|
|
|
<td>40HC</td>
|
|
|
|
<td>{{ payment.invoice_number }}</td>
|
|
|
|
<td><span class="status-tag status-received">Received</span></td>
|
|
|
|
<td>{{ payment.company.name }}</td>
|
|
|
|
<td>2023-06-15</td>
|
|
|
|
<td>{{ payment.total_amount }}</td>
|
|
|
|
</tr>
|
|
|
|
<td><span class="status-tag status-received">{{ payment.paid }}</span></td>
|
|
|
|
<!-- Other rows similar structure -->
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
{% empty %}
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
|
|
|
|
<td> No recent history</td>
|
|
|
|
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
{% endfor %}
|
|
|
|
</tbody>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
{% endif %}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
{% endblock %}
|
|
|
|
{% endblock %}
|