feature-libs/order/components/amend-order/cancellations/order-cancellation.service.ts
Properties |
Methods |
|
constructor(orderDetailsService: OrderDetailsService, userOrderService: OrderFacade, routing: RoutingService, globalMessageService: GlobalMessageService)
|
|||||||||||||||
Parameters :
|
Private afterSave | ||||||
afterSave(orderCode: string)
|
||||||
Parameters :
Returns :
void
|
getEntries |
getEntries()
|
Inherited from
OrderAmendService
|
Defined in
OrderAmendService:33
|
Return cancellable order entries.
Returns :
Observable<OrderEntry[]>
|
save |
save()
|
Inherited from
OrderAmendService
|
Defined in
OrderAmendService:48
|
Returns :
void
|
Private buildForm | ||||||
buildForm(order: Order)
|
||||||
Inherited from
OrderAmendService
|
||||||
Defined in
OrderAmendService:78
|
||||||
Parameters :
Returns :
void
|
getAmendedEntries |
getAmendedEntries()
|
Inherited from
OrderAmendService
|
Defined in
OrderAmendService:41
|
Returns entries with an amended quantity.
Returns :
Observable<OrderEntry[]>
|
getAmendedPrice | ||||||
getAmendedPrice(entry: OrderEntry)
|
||||||
Inherited from
OrderAmendService
|
||||||
Defined in
OrderAmendService:112
|
||||||
As discussed, this calculation is moved to SPA side. The calculation and validation should be in backend facade layer.
Parameters :
Returns :
Price
|
getForm |
getForm()
|
Inherited from
OrderAmendService
|
Defined in
OrderAmendService:67
|
returns the form with form data at runtime
Returns :
Observable<FormGroup>
|
Protected getFormControl | |||||||||
getFormControl(form: FormGroup, entry: OrderEntry)
|
|||||||||
Inherited from
OrderAmendService
|
|||||||||
Defined in
OrderAmendService:102
|
|||||||||
Parameters :
Returns :
FormControl
|
getMaxAmendQuantity | ||||||
getMaxAmendQuantity(entry: OrderEntry)
|
||||||
Inherited from
OrderAmendService
|
||||||
Defined in
OrderAmendService:129
|
||||||
Parameters :
Returns :
number
|
getOrder |
getOrder()
|
Inherited from
OrderAmendService
|
Defined in
OrderAmendService:60
|
Returns :
Observable<Order>
|
isCancellation |
isCancellation()
|
Inherited from
OrderAmendService
|
Defined in
OrderAmendService:139
|
Returns :
boolean
|
amendType |
Default value : AmendOrderType.CANCEL
|
Inherited from
OrderAmendService
|
Defined in
OrderAmendService:20
|
Protected form |
Type : FormGroup
|
Inherited from
OrderAmendService
|
Defined in
OrderAmendService:29
|
import { Injectable } from '@angular/core';
import {
CancelOrReturnRequestEntryInput,
GlobalMessageService,
GlobalMessageType,
OrderEntry,
RoutingService,
} from '@spartacus/core';
import { OrderFacade } from '@spartacus/order/root';
import { Observable } from 'rxjs';
import { filter, first, map } from 'rxjs/operators';
import { OrderDetailsService } from '../../order-details/order-details.service';
import { AmendOrderType } from '../amend-order.model';
import { OrderAmendService } from '../amend-order.service';
@Injectable({
providedIn: 'root',
})
export class OrderCancellationService extends OrderAmendService {
amendType = AmendOrderType.CANCEL;
constructor(
protected orderDetailsService: OrderDetailsService,
protected userOrderService: OrderFacade,
protected routing: RoutingService,
protected globalMessageService: GlobalMessageService
) {
super(orderDetailsService);
}
/**
* Return cancellable order entries.
*/
getEntries(): Observable<OrderEntry[]> {
return this.getOrder().pipe(
filter((order) => !!order?.entries),
map(
(order) =>
order.entries?.filter(
(entry) =>
entry.entryNumber !== -1 &&
entry.cancellableQuantity &&
entry.cancellableQuantity > 0
) ?? []
)
);
}
save(): void {
const orderCode = this.form.value.orderCode;
const entries = this.form.value.entries;
const inputs: CancelOrReturnRequestEntryInput[] = Object.keys(entries)
.filter((entryNumber) => <number>entries[entryNumber] > 0)
.map(
(entryNumber) =>
({
orderEntryNumber: Number(entryNumber),
quantity: <number>entries[entryNumber],
} as CancelOrReturnRequestEntryInput)
);
this.form.reset();
this.userOrderService.cancelOrder(orderCode, {
cancellationRequestEntryInputs: inputs,
});
this.userOrderService
.getCancelOrderSuccess()
.pipe(first(Boolean))
.subscribe(() => this.afterSave(orderCode));
}
private afterSave(orderCode: string): void {
this.userOrderService.resetCancelOrderProcessState();
this.globalMessageService.add(
{
key: 'orderDetails.cancellationAndReturn.cancelSuccess',
params: { orderCode },
},
GlobalMessageType.MSG_TYPE_CONFIRMATION
);
this.routing.go({
cxRoute: 'orders',
});
}
}