Skip to content

Commit 2d47895

Browse files
feat: Allow admin to see any user's invoice (#5247)
1 parent 9b346b3 commit 2d47895

File tree

4 files changed

+64
-28
lines changed

4 files changed

+64
-28
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<a href="{{href-to 'account.billing.invoices.list' 'all' (query-params user_id=@record.id)}}" target="_blank" rel="noopener nofollow" data-tooltip="View user's invoices">{{ @record.email }}</a>

app/controllers/account/billing/invoices/list.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,38 @@ import Controller from '@ember/controller';
22
import EmberTableControllerMixin from 'open-event-frontend/mixins/ember-table-controller';
33

44
export default class extends Controller.extend(EmberTableControllerMixin) {
5+
queryParams = [...this.queryParams, 'user_id']
6+
57
get columns() {
68
return [
79
{
810
name : 'Invoice ID',
11+
headerComponent : 'tables/headers/sort',
12+
isSortable : true,
913
valuePath : 'identifier',
1014
extraValuePaths : ['invoicePdfUrl'],
1115
cellComponent : 'ui-table/cell/events/cell-download-invoice'
1216
},
1317
{
14-
name : 'Event Name',
15-
valuePath : 'event.name'
18+
name : 'Event Name',
19+
valuePath : 'event.name',
20+
isSortable : true,
21+
headerComponent : 'tables/headers/sort'
1622
},
1723
{
18-
name : 'Invoice Date',
19-
valuePath : 'issuedAt',
20-
isSortable : true,
21-
cellComponent : 'ui-table/cell/cell-date',
22-
options : {
24+
name : 'Invoice Date',
25+
valuePath : 'issuedAt',
26+
isSortable : true,
27+
headerComponent : 'tables/headers/sort',
28+
cellComponent : 'ui-table/cell/cell-date',
29+
options : {
2330
timezone : 'UTC',
2431
dateFormat : 'MMMM DD, YYYY'
2532
}
2633
},
2734
{
2835
name : 'Due Date',
2936
valuePath : 'dueAt',
30-
isSortable : true,
3137
cellComponent : 'ui-table/cell/cell-date',
3238
options : {
3339
timezone : 'UTC',

app/controllers/admin/sales/invoices.js

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,40 +9,61 @@ export default class extends Controller.extend(EmberTableControllerMixin) {
99
name : 'Invoice #',
1010
headerComponent : 'tables/headers/sort',
1111
isSortable : true,
12-
valuePath : 'identifier'
12+
valuePath : 'identifier',
13+
extraValuePaths : ['invoicePdfUrl'],
14+
cellComponent : 'ui-table/cell/events/cell-download-invoice'
1315
},
1416
{
15-
name : 'Event',
16-
valuePath : 'event.name'
17+
name : 'Event',
18+
valuePath : 'event.name',
19+
isSortable : true,
20+
headerComponent : 'tables/headers/sort'
1721
},
1822
{
1923
name : 'Invoice Date',
20-
valuePath : 'createdAt',
21-
headerComponent : 'tables/headers/sort',
24+
valuePath : 'issuedAt',
2225
isSortable : true,
23-
cellComponent : 'ui-table/cell/cell-simple-date',
26+
headerComponent : 'tables/headers/sort',
27+
cellComponent : 'ui-table/cell/cell-date',
2428
options : {
25-
dateFormat: 'MMMM DD, YYYY - HH:mm A'
29+
timezone : 'UTC',
30+
dateFormat : 'MMMM DD, YYYY'
31+
}
32+
},
33+
{
34+
name : 'Due Date',
35+
valuePath : 'dueAt',
36+
cellComponent : 'ui-table/cell/cell-date',
37+
options : {
38+
timezone : 'UTC',
39+
dateFormat : 'MMMM DD, YYYY'
2640
}
2741
},
2842
{
29-
name : 'Amount',
30-
valuePath : 'amount',
31-
cellComponent : 'ui-table/cell/admin/sales/status/cell-amount'
43+
name : 'Amount',
44+
valuePath : 'amount',
45+
extraValuePaths : ['event'],
46+
cellComponent : 'ui-table/cell/events/cell-amount',
47+
isSortable : true,
48+
headerComponent : 'tables/headers/sort'
3249
},
3350
{
34-
name : 'Sent To',
35-
valuePath : 'user.email'
51+
name : 'Sent To',
52+
valuePath : 'user',
53+
cellComponent : 'ui-table/cell/admin/sales/invoice-user'
54+
},
55+
{
56+
name : 'Status',
57+
valuePath : 'status',
58+
isSortable : true,
59+
headerComponent : 'tables/headers/sort'
3660
},
3761
{
38-
name : 'Status',
39-
valuePath : 'status'
62+
name : 'Action',
63+
valuePath : 'identifier',
64+
extraValuePaths : ['status'],
65+
cellComponent : 'ui-table/cell/events/cell-action'
4066
}
41-
// {
42-
// name : 'Action',
43-
// valuePath : 'identifier',
44-
// cellComponent : 'ui-table/cell/admin/sales/cell-action'
45-
// }
4667
];
4768
}
4869
}

app/routes/account/billing/invoices/list.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ import { action } from '@ember/object';
44
import { capitalize } from 'lodash-es';
55

66
export default class extends Route.extend(EmberTableRouteMixin) {
7+
queryParams = {
8+
...this.queryParams,
9+
user_id: {
10+
refreshModel: true
11+
}
12+
}
13+
714
titleToken() {
815
if (['paid', 'due', 'refunding', 'refunded'].includes(this.params.invoice_status)) {
916
return this.l10n.t(capitalize(this.params.invoice_status));
@@ -37,8 +44,9 @@ export default class extends Route.extend(EmberTableRouteMixin) {
3744
};
3845

3946
queryString = this.applySortFilters(queryString, params);
47+
const user = params.user_id ? await this.store.findRecord('user', params.user_id) : this.authManager.currentUser;
4048
return {
41-
eventInvoices: await this.asArray(this.authManager.currentUser.query('eventInvoices', queryString)),
49+
eventInvoices: await this.asArray(user.query('eventInvoices', queryString)),
4250
params
4351

4452
};

0 commit comments

Comments
 (0)