This commit is contained in:
Iliyan Angelov
2025-11-20 21:06:30 +02:00
parent 44e11520c5
commit a38ab4fa82
77 changed files with 7169 additions and 360 deletions

View File

@@ -47,7 +47,8 @@ const InvoiceManagementPage: React.FC = () => {
invoiceList = invoiceList.filter((inv) =>
inv.invoice_number.toLowerCase().includes(filters.search.toLowerCase()) ||
inv.customer_name.toLowerCase().includes(filters.search.toLowerCase()) ||
inv.customer_email.toLowerCase().includes(filters.search.toLowerCase())
inv.customer_email.toLowerCase().includes(filters.search.toLowerCase()) ||
(inv.promotion_code && inv.promotion_code.toLowerCase().includes(filters.search.toLowerCase()))
);
}
@@ -130,11 +131,11 @@ const InvoiceManagementPage: React.FC = () => {
<p className="text-slate-600 mt-3 text-lg font-light">Manage and track all invoices</p>
</div>
<button
onClick={() => navigate('/admin/invoices/create')}
onClick={() => navigate('/admin/bookings')}
className="flex items-center gap-2 px-6 py-3 bg-gradient-to-r from-amber-500 to-amber-600 text-white rounded-xl font-semibold hover:from-amber-600 hover:to-amber-700 transition-all duration-200 shadow-lg hover:shadow-xl"
>
<Plus className="w-5 h-5" />
Create Invoice
Create Invoice from Booking
</button>
</div>
@@ -190,6 +191,9 @@ const InvoiceManagementPage: React.FC = () => {
<th className="px-8 py-5 text-left text-xs font-bold text-amber-100 uppercase tracking-wider border-b border-slate-700">
Amount
</th>
<th className="px-8 py-5 text-left text-xs font-bold text-amber-100 uppercase tracking-wider border-b border-slate-700">
Promotion
</th>
<th className="px-8 py-5 text-left text-xs font-bold text-amber-100 uppercase tracking-wider border-b border-slate-700">
Status
</th>
@@ -235,6 +239,25 @@ const InvoiceManagementPage: React.FC = () => {
Due: {formatCurrency(invoice.balance_due)}
</div>
)}
{invoice.discount_amount > 0 && (
<div className="text-xs text-green-600 font-medium mt-1">
Discount: -{formatCurrency(invoice.discount_amount)}
</div>
)}
</td>
<td className="px-8 py-5 whitespace-nowrap">
{invoice.promotion_code ? (
<span className="px-3 py-1 text-xs font-semibold rounded-full bg-gradient-to-r from-purple-50 to-pink-50 text-purple-700 border border-purple-200">
{invoice.promotion_code}
</span>
) : (
<span className="text-xs text-slate-400"></span>
)}
{invoice.is_proforma && (
<div className="text-xs text-blue-600 font-medium mt-1">
Proforma
</div>
)}
</td>
<td className="px-8 py-5 whitespace-nowrap">
<span className={`px-4 py-1.5 text-xs font-semibold rounded-full border shadow-sm ${statusBadge.bg} ${statusBadge.text} ${statusBadge.border || ''}`}>
@@ -274,7 +297,7 @@ const InvoiceManagementPage: React.FC = () => {
})
) : (
<tr>
<td colSpan={7} className="px-8 py-12 text-center">
<td colSpan={8} className="px-8 py-12 text-center">
<div className="text-slate-500">
<FileText className="w-16 h-16 mx-auto mb-4 text-slate-300" />
<p className="text-lg font-semibold">No invoices found</p>