mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-05-27 21:54:54 +00:00
Public Invoice View fix
This commit is contained in:
@@ -21,12 +21,11 @@ class InvoicesController extends Controller
|
||||
{
|
||||
$this->authorize('viewAny', Invoice::class);
|
||||
|
||||
$limit = $request->has('limit') ? $request->limit : 10;
|
||||
$limit = $request->input('limit', 10);
|
||||
|
||||
$invoices = Invoice::whereCompany()
|
||||
->join('customers', 'customers.id', '=', 'invoices.customer_id')
|
||||
->applyFilters($request->all())
|
||||
->select('invoices.*', 'customers.name')
|
||||
->with('customer')
|
||||
->latest()
|
||||
->paginateData($limit);
|
||||
|
||||
|
||||
@@ -248,49 +248,34 @@ class Invoice extends Model implements HasMedia
|
||||
|
||||
public function scopeApplyFilters($query, array $filters)
|
||||
{
|
||||
$filters = collect($filters);
|
||||
$filters = collect($filters)->filter()->all();
|
||||
|
||||
$query->when($filters->get('search'), function ($query, $search) {
|
||||
return $query->when($filters['search'] ?? null, function ($query, $search) {
|
||||
$query->whereSearch($search);
|
||||
});
|
||||
|
||||
$query->when($filters->get('status'), function ($query, $status) {
|
||||
})->when($filters['status'] ?? null, function ($query, $status) {
|
||||
match ($status) {
|
||||
self::STATUS_UNPAID, self::STATUS_PARTIALLY_PAID, self::STATUS_PAID => $query->wherePaidStatus($status),
|
||||
'DUE' => $query->whereDueStatus($status),
|
||||
default => $query->whereStatus($status),
|
||||
};
|
||||
});
|
||||
|
||||
$query->when($filters->get('paid_status'), function ($query, $status) {
|
||||
$query->wherePaidStatus($status);
|
||||
});
|
||||
|
||||
$query->when($filters->get('invoice_id'), function ($query, $invoiceId) {
|
||||
})->when($filters['paid_status'] ?? null, function ($query, $paidStatus) {
|
||||
$query->wherePaidStatus($paidStatus);
|
||||
})->when($filters['invoice_id'] ?? null, function ($query, $invoiceId) {
|
||||
$query->whereInvoice($invoiceId);
|
||||
});
|
||||
|
||||
$query->when($filters->get('invoice_number'), function ($query, $invoiceNumber) {
|
||||
})->when($filters['invoice_number'] ?? null, function ($query, $invoiceNumber) {
|
||||
$query->whereInvoiceNumber($invoiceNumber);
|
||||
});
|
||||
|
||||
$query->when($filters->get('from_date') && $filters->get('to_date'), function ($query) use ($filters) {
|
||||
$start = Carbon::parse($filters->get('from_date'));
|
||||
$end = Carbon::parse($filters->get('to_date'));
|
||||
})->when(($filters['from_date'] ?? null) && ($filters['to_date'] ?? null), function ($query) use ($filters) {
|
||||
$start = Carbon::parse($filters['from_date']);
|
||||
$end = Carbon::parse($filters['to_date']);
|
||||
$query->invoicesBetween($start, $end);
|
||||
});
|
||||
|
||||
$query->when($filters->get('customer_id'), function ($query, $customerId) {
|
||||
})->when($filters['customer_id'] ?? null, function ($query, $customerId) {
|
||||
$query->where('customer_id', $customerId);
|
||||
})->when($filters['orderByField'] ?? null, function ($query, $orderByField) use ($filters) {
|
||||
$orderBy = $filters['orderBy'] ?? 'desc';
|
||||
$query->orderBy($orderByField, $orderBy);
|
||||
}, function ($query) {
|
||||
$query->orderBy('sequence_number', 'desc');
|
||||
});
|
||||
|
||||
$query->when($filters->get('orderByField') || $filters->get('orderBy'), function ($query) use ($filters) {
|
||||
$field = $filters->get('orderByField', 'sequence_number');
|
||||
$orderBy = $filters->get('orderBy', 'desc');
|
||||
$query->orderBy($field, $orderBy);
|
||||
});
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
public function scopeWhereInvoice($query, $invoice_id)
|
||||
|
||||
@@ -174,6 +174,7 @@
|
||||
:data="fetchData"
|
||||
:columns="estimateColumns"
|
||||
:placeholder-count="estimateStore.totalEstimateCount >= 20 ? 10 : 5"
|
||||
:key="tableKey"
|
||||
class="mt-10"
|
||||
>
|
||||
<template #header>
|
||||
@@ -256,6 +257,7 @@ const dialogStore = useDialogStore()
|
||||
const userStore = useUserStore()
|
||||
|
||||
const tableComponent = ref(null)
|
||||
const tableKey = ref(0)
|
||||
const { t } = useI18n()
|
||||
const showFilters = ref(false)
|
||||
const status = ref([
|
||||
@@ -408,6 +410,8 @@ function setFilters() {
|
||||
state.selectAllField = false
|
||||
})
|
||||
|
||||
tableKey.value += 1
|
||||
|
||||
refreshTable()
|
||||
}
|
||||
|
||||
|
||||
@@ -172,6 +172,7 @@
|
||||
:data="fetchData"
|
||||
:columns="invoiceColumns"
|
||||
:placeholder-count="invoiceStore.invoiceTotalCount >= 20 ? 10 : 5"
|
||||
:key="tableKey"
|
||||
class="mt-10"
|
||||
>
|
||||
<!-- Select All Checkbox -->
|
||||
@@ -288,6 +289,7 @@ const { t } = useI18n()
|
||||
// Local State
|
||||
const utils = inject('$utils')
|
||||
const table = ref(null)
|
||||
const tableKey = ref(0)
|
||||
const showFilters = ref(false)
|
||||
|
||||
const status = ref([
|
||||
@@ -416,9 +418,12 @@ async function fetchData({ page, filter, sort }) {
|
||||
page,
|
||||
}
|
||||
|
||||
console.log(data)
|
||||
|
||||
isRequestOngoing.value = true
|
||||
|
||||
let response = await invoiceStore.fetchInvoices(data)
|
||||
console.log('API response:', response.data.data)
|
||||
|
||||
isRequestOngoing.value = false
|
||||
|
||||
@@ -464,6 +469,8 @@ function setFilters() {
|
||||
state.selectAllField = false
|
||||
})
|
||||
|
||||
tableKey.value += 1
|
||||
|
||||
refreshTable()
|
||||
}
|
||||
|
||||
|
||||
@@ -188,7 +188,7 @@ const props = defineProps({
|
||||
},
|
||||
})
|
||||
|
||||
let rows = reactive([])
|
||||
const rows = ref([])
|
||||
let isLoading = ref(false)
|
||||
|
||||
let tableColumns = reactive(props.columns.map((column) => new Column(column)))
|
||||
@@ -339,14 +339,13 @@ function lodashGet(array, key) {
|
||||
return get(array, key)
|
||||
}
|
||||
|
||||
if (usesLocalData.value) {
|
||||
watch(
|
||||
() => props.data,
|
||||
() => {
|
||||
mapDataToRows()
|
||||
}
|
||||
)
|
||||
}
|
||||
watch(
|
||||
() => props.data,
|
||||
() => {
|
||||
mapDataToRows()
|
||||
},
|
||||
{ deep: true }
|
||||
)
|
||||
|
||||
onMounted(async () => {
|
||||
await mapDataToRows()
|
||||
|
||||
Reference in New Issue
Block a user