diff --git a/addon/components/modals/recurring-order-schedule-form.hbs b/addon/components/modals/recurring-order-schedule-form.hbs new file mode 100644 index 000000000..febdf3fac --- /dev/null +++ b/addon/components/modals/recurring-order-schedule-form.hbs @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/addon/components/modals/recurring-order-schedules-manager.hbs b/addon/components/modals/recurring-order-schedules-manager.hbs new file mode 100644 index 000000000..3b2f5f24d --- /dev/null +++ b/addon/components/modals/recurring-order-schedules-manager.hbs @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/addon/components/order/details/detail.hbs b/addon/components/order/details/detail.hbs index 0312d0dc2..def12ee0d 100644 --- a/addon/components/order/details/detail.hbs +++ b/addon/components/order/details/detail.hbs @@ -7,6 +7,9 @@ {{#if @resource.adhoc}} {{t "order.fields.ad-hoc"}} {{/if}} + {{#if @resource.meta.is_recurring_generated}} + Recurring + {{/if}} <:default> @@ -111,6 +114,12 @@
{{t "common.type"}}
{{n-a (humanize @resource.type)}}
+ {{#if @resource.meta.is_recurring_generated}} +
+
Recurring Schedule
+
{{n-a @resource.meta.recurring_order_schedule_public_id @resource.meta.recurring_order_schedule_uuid}}
+
+ {{/if}} {{#if @resource.pod_required}}
{{t "order.fields.proof-of-delivery"}}
diff --git a/addon/components/order/panel-header.hbs b/addon/components/order/panel-header.hbs index 21940ee15..44ae0d1df 100644 --- a/addon/components/order/panel-header.hbs +++ b/addon/components/order/panel-header.hbs @@ -10,6 +10,9 @@
{{@resource.tracking}}
+ {{#if @resource.meta.is_recurring_generated}} + Recurring + {{/if}} {{#if @resource.dispatched_at}} {{concat "Dispatched at " @resource.dispatchedAt}} {{/if}} diff --git a/addon/components/recurring-order-schedule/details.hbs b/addon/components/recurring-order-schedule/details.hbs new file mode 100644 index 000000000..484177fa7 --- /dev/null +++ b/addon/components/recurring-order-schedule/details.hbs @@ -0,0 +1,82 @@ +
+ +
+
+
ID
+
{{n-a @resource.public_id}}
+
+
+
Status
+
{{smart-humanize @resource.status}}
+
+
+
Timezone
+
{{n-a @resource.timezone}}
+
+
+
Next Occurrence
+
{{n-a @resource.next_occurrence_at}}
+
+
+
Customer
+
{{n-a @resource.customer.name}}
+
+
+
Order Type
+
{{n-a @resource.order_config.name}}
+
+
+
Service Rate
+
{{n-a @resource.service_rate.service_name "No default service rate"}}
+
+
+
Starts At
+
{{n-a @resource.starts_at}}
+
+
+
Ends At
+
{{n-a @resource.ends_at}}
+
+
+
Recurrence Rule
+
{{n-a @resource.rrule}}
+
+
+
+ + + {{#if this.upcomingOccurrences.length}} +
+ {{#each this.upcomingOccurrences as |occurrence|}} +
+
+
{{n-a occurrence.occurrence_at_local occurrence.occurrence_at}}
+
Status: {{smart-humanize occurrence.status}}
+ {{#if occurrence.order}} +
Order: {{occurrence.order.public_id}}
+ {{/if}} +
+
+ {{#if occurrence.order}} +
+
+ {{/each}} +
+ {{else}} +
No upcoming occurrences found for this recurring schedule.
+ {{/if}} +
+ + {{#if @resource.description}} + +
{{@resource.description}}
+
+ {{/if}} + + +
\ No newline at end of file diff --git a/addon/components/recurring-order-schedule/details.js b/addon/components/recurring-order-schedule/details.js new file mode 100644 index 000000000..4d5f85d54 --- /dev/null +++ b/addon/components/recurring-order-schedule/details.js @@ -0,0 +1,28 @@ +import Component from '@glimmer/component'; +import { inject as service } from '@ember/service'; +import { action } from '@ember/object'; + +export default class RecurringOrderScheduleDetailsComponent extends Component { + @service recurringOrderScheduleActions; + @service hostRouter; + + get upcomingOccurrences() { + return this.args.resource?.upcoming_occurrences ?? this.args.resource?.meta?.upcoming_occurrences ?? []; + } + + @action skipOccurrence(occurrence) { + return this.recurringOrderScheduleActions.skipOccurrence(this.args.resource, occurrence.occurrence_at).then(async () => { + if (typeof this.args.resource?.reload === 'function') { + await this.args.resource.reload(); + } + }); + } + + @action viewOrder(order) { + if (!order?.public_id) { + return; + } + + return this.hostRouter.transitionTo('console.fleet-ops.operations.orders.index.details', order.public_id); + } +} diff --git a/addon/components/recurring-order-schedule/form.hbs b/addon/components/recurring-order-schedule/form.hbs new file mode 100644 index 000000000..87231bbdf --- /dev/null +++ b/addon/components/recurring-order-schedule/form.hbs @@ -0,0 +1,136 @@ +
+ +
+ + + + + +