Skip to content

Commit

Permalink
feat/CXSPA-7571: SAP OMF Integration - pass GUID in request header of…
Browse files Browse the repository at this point in the history
… Order API (#19116)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
  • Loading branch information
anjana-bl and github-actions[bot] authored Aug 20, 2024
1 parent 94ebcd4 commit 219b75e
Show file tree
Hide file tree
Showing 96 changed files with 2,285 additions and 20 deletions.
4 changes: 4 additions & 0 deletions .env-cmdrc
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@
"CX_REQUESTED_DELIVERY_DATE": "true",
"CX_PDF_INVOICES": "true"
},
"omf":{
"CX_BASE_URL": "https://api.cg79x9wuu9-eccommerc1-s9-public.model-t.myhybris.cloud",
"CX_OMF": "true"
},
"requested-delivery-date": {
"CX_BASE_URL": "https://api.cg79x9wuu9-eccommerc1-s8-public.model-t.myhybris.cloud",
"CX_REQUESTED_DELIVERY_DATE": "true"
Expand Down
3 changes: 3 additions & 0 deletions core-libs/setup/tsconfig.spec.json
Original file line number Diff line number Diff line change
Expand Up @@ -575,6 +575,9 @@
"@spartacus/epd-visualization/root": [
"../../integration-libs/epd-visualization/root/public_api"
],
"@spartacus/omf": ["../../integration-libs/omf/public_api"],
"@spartacus/omf/order": ["../../integration-libs/omf/order/public_api"],
"@spartacus/omf/root": ["../../integration-libs/omf/root/public_api"],
"@spartacus/opps": ["../../integration-libs/opps/public_api"],
"@spartacus/opps/root": ["../../integration-libs/opps/root/public_api"],
"@spartacus/s4-service/assets": [
Expand Down
1 change: 1 addition & 0 deletions extra-webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ module.exports = {
),
'@spartacus/s4om': path.join(__dirname, 'integration-libs/s4om'),
'@spartacus/s4-service': path.join(__dirname, 'integration-libs/s4-service'),
'@spartacus/omf': path.join(__dirname, 'integration-libs/omf'),
},
},
};
3 changes: 3 additions & 0 deletions feature-libs/asm/tsconfig.schematics.json
Original file line number Diff line number Diff line change
Expand Up @@ -572,6 +572,9 @@
"@spartacus/epd-visualization/root": [
"../../integration-libs/epd-visualization/root/public_api"
],
"@spartacus/omf": ["../../integration-libs/omf/public_api"],
"@spartacus/omf/order": ["../../integration-libs/omf/order/public_api"],
"@spartacus/omf/root": ["../../integration-libs/omf/root/public_api"],
"@spartacus/opps": ["../../integration-libs/opps/public_api"],
"@spartacus/opps/root": ["../../integration-libs/opps/root/public_api"],
"@spartacus/s4-service/assets": [
Expand Down
3 changes: 3 additions & 0 deletions feature-libs/cart/tsconfig.schematics.json
Original file line number Diff line number Diff line change
Expand Up @@ -582,6 +582,9 @@
"@spartacus/epd-visualization/root": [
"../../integration-libs/epd-visualization/root/public_api"
],
"@spartacus/omf": ["../../integration-libs/omf/public_api"],
"@spartacus/omf/order": ["../../integration-libs/omf/order/public_api"],
"@spartacus/omf/root": ["../../integration-libs/omf/root/public_api"],
"@spartacus/opps": ["../../integration-libs/opps/public_api"],
"@spartacus/opps/root": ["../../integration-libs/opps/root/public_api"],
"@spartacus/s4-service/assets": [
Expand Down
3 changes: 3 additions & 0 deletions feature-libs/checkout/tsconfig.schematics.json
Original file line number Diff line number Diff line change
Expand Up @@ -582,6 +582,9 @@
"@spartacus/epd-visualization/root": [
"../../integration-libs/epd-visualization/root/public_api"
],
"@spartacus/omf": ["../../integration-libs/omf/public_api"],
"@spartacus/omf/order": ["../../integration-libs/omf/order/public_api"],
"@spartacus/omf/root": ["../../integration-libs/omf/root/public_api"],
"@spartacus/opps": ["../../integration-libs/opps/public_api"],
"@spartacus/opps/root": ["../../integration-libs/opps/root/public_api"],
"@spartacus/s4-service/assets": [
Expand Down
3 changes: 3 additions & 0 deletions feature-libs/customer-ticketing/tsconfig.schematics.json
Original file line number Diff line number Diff line change
Expand Up @@ -595,6 +595,9 @@
"@spartacus/epd-visualization/root": [
"../../integration-libs/epd-visualization/root/public_api"
],
"@spartacus/omf": ["../../integration-libs/omf/public_api"],
"@spartacus/omf/order": ["../../integration-libs/omf/order/public_api"],
"@spartacus/omf/root": ["../../integration-libs/omf/root/public_api"],
"@spartacus/opps": ["../../integration-libs/opps/public_api"],
"@spartacus/opps/root": ["../../integration-libs/opps/root/public_api"],
"@spartacus/s4-service/assets": [
Expand Down
3 changes: 3 additions & 0 deletions feature-libs/estimated-delivery-date/tsconfig.schematics.json
Original file line number Diff line number Diff line change
Expand Up @@ -595,6 +595,9 @@
"@spartacus/epd-visualization/root": [
"../../integration-libs/epd-visualization/root/public_api"
],
"@spartacus/omf": ["../../integration-libs/omf/public_api"],
"@spartacus/omf/order": ["../../integration-libs/omf/order/public_api"],
"@spartacus/omf/root": ["../../integration-libs/omf/root/public_api"],
"@spartacus/opps": ["../../integration-libs/opps/public_api"],
"@spartacus/opps/root": ["../../integration-libs/opps/root/public_api"],
"@spartacus/s4-service/assets": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ <h2>
params: order
} | cxUrl
"
[queryParams]="getQueryParams(order)"
>
{{ 'orderHistory.orderId' | cxTranslate }} {{ order?.code }}</a
>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,14 @@ import {
TranslationService,
} from '@spartacus/core';
import { MyAccountV2OrderHistoryService } from '@spartacus/order/core';
import { EMPTY, Observable, of } from 'rxjs';
import { ReplenishmentOrderHistoryFacade } from '../../../root/facade';
import { OrderHistoryList, OrderHistoryView } from '../../../root/model';
import { BehaviorSubject, EMPTY, Observable, of } from 'rxjs';
import {
OrderHistoryFacade,
ReplenishmentOrderHistoryFacade,
} from '../../../root/facade';
import { Order, OrderHistoryList, OrderHistoryView } from '../../../root/model';
import { MyAccountV2OrderHistoryComponent } from './my-account-v2-order-history.component';
import { Params } from '@angular/router';

const mockOrders: OrderHistoryList = {
orders: [
Expand Down Expand Up @@ -60,6 +64,24 @@ class MockUrlPipe implements PipeTransform {
transform() {}
}

class MockOrderHistoryFacade implements Partial<OrderHistoryFacade> {
getOrderHistoryList(): Observable<OrderHistoryList> {
return new BehaviorSubject<OrderHistoryList>(mockOrders);
}
getOrderHistoryListLoaded(): Observable<boolean> {
return of(true);
}
getQueryParams(_order: Order): Params | null {
return null;
}
loadOrderList(
_pageSize: number,
_currentPage?: number,
_sort?: string
): void {}
clearOrderList() {}
}

class MockMyAccountV2OrderHistoryService
implements Partial<MyAccountV2OrderHistoryService>
{
Expand Down Expand Up @@ -119,6 +141,7 @@ describe('MyAccountV2OrderHistoryComponent', () => {
],
providers: [
{ provide: RoutingService, useClass: MockRoutingService },
{ provide: OrderHistoryFacade, useClass: MockOrderHistoryFacade },
{
provide: MyAccountV2OrderHistoryService,
useClass: MockMyAccountV2OrderHistoryService,
Expand Down Expand Up @@ -164,10 +187,15 @@ describe('MyAccountV2OrderHistoryComponent', () => {
By.css('.cx-my-account-v2-order-history-code')
);
codes[1].triggerEventHandler('click');
expect(routingService.go).toHaveBeenCalledWith({
cxRoute: 'orderDetails',
params: mockOrders.orders?.[1],
});
expect(routingService.go).toHaveBeenCalledWith(
{
cxRoute: 'orderDetails',
params: mockOrders.orders?.[1],
},
{
queryParams: null,
}
);
});

it('should display pagination', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ <h2 *ngIf="!type.replenishmentOrder">
params: order
} | cxUrl
"
[queryParams]="getQueryParams(order)"
class="cx-order-history-value"
>
{{ order?.code }}</a
Expand All @@ -124,6 +125,7 @@ <h2 *ngIf="!type.replenishmentOrder">
params: order
} | cxUrl
"
[queryParams]="getQueryParams(order)"
class="cx-order-history-value"
>
{{ order.purchaseOrderNumber }}</a
Expand All @@ -141,6 +143,7 @@ <h2 *ngIf="!type.replenishmentOrder">
params: order
} | cxUrl
"
[queryParams]="getQueryParams(order)"
class="cx-order-history-value"
>
{{ order.costCenter?.name }}</a
Expand All @@ -159,6 +162,7 @@ <h2 *ngIf="!type.replenishmentOrder">
params: order
} | cxUrl
"
[queryParams]="getQueryParams(order)"
class="cx-order-history-value"
>{{ order?.placed | cxDate: 'longDate' }}</a
>
Expand All @@ -174,6 +178,7 @@ <h2 *ngIf="!type.replenishmentOrder">
params: order
} | cxUrl
"
[queryParams]="getQueryParams(order)"
class="cx-order-history-value"
>
{{
Expand All @@ -193,6 +198,7 @@ <h2 *ngIf="!type.replenishmentOrder">
params: order
} | cxUrl
"
[queryParams]="getQueryParams(order)"
class="cx-order-history-value"
>
{{ order?.total.formattedValue }}</a
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,15 @@ import {
TranslationService,
} from '@spartacus/core';
import {
Order,
OrderHistoryFacade,
OrderHistoryList,
ReplenishmentOrder,
ReplenishmentOrderHistoryFacade,
} from '@spartacus/order/root';
import { BehaviorSubject, EMPTY, Observable, of } from 'rxjs';
import { OrderHistoryComponent } from './order-history.component';
import { Params } from '@angular/router';

const mockOrders: OrderHistoryList = {
orders: [
Expand Down Expand Up @@ -119,6 +121,9 @@ class MockOrderHistoryFacade implements Partial<OrderHistoryFacade> {
getOrderHistoryListLoaded(): Observable<boolean> {
return of(true);
}
getQueryParams(_order: Order): Params | null {
return null;
}
loadOrderList(
_pageSize: number,
_currentPage?: number,
Expand Down Expand Up @@ -210,10 +215,15 @@ describe('OrderHistoryComponent', () => {
);
rows[1].triggerEventHandler('click', null);

expect(routingService.go).toHaveBeenCalledWith({
cxRoute: 'orderDetails',
params: mockOrders.orders[1],
});
expect(routingService.go).toHaveBeenCalledWith(
{
cxRoute: 'orderDetails',
params: mockOrders.orders[1],
},
{
queryParams: null,
}
);
});

it('should set correctly sort code', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
*/

import { ChangeDetectionStrategy, Component, OnDestroy } from '@angular/core';
import { Params } from '@angular/router';
import {
isNotUndefined,
RoutingService,
Expand Down Expand Up @@ -91,10 +92,19 @@ export class OrderHistoryComponent implements OnDestroy {
}

goToOrderDetail(order: Order): void {
this.routing.go({
cxRoute: 'orderDetails',
params: order,
});
this.routing.go(
{
cxRoute: 'orderDetails',
params: order,
},
{
queryParams: this.getQueryParams(order),
}
);
}

getQueryParams(order: Order): Params | null {
return this.orderHistoryFacade.getQueryParams(order);
}

getSortLabels(): Observable<{ byDate: string; byOrderNumber: string }> {
Expand Down
10 changes: 10 additions & 0 deletions feature-libs/order/core/facade/order-history.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -270,4 +270,14 @@ describe('OrderHistoryService', () => {
.subscribe((data) => expect(data).toEqual(true))
.unsubscribe();
});
describe('getQueryParams', () => {
it('should always return null even if guid is present', () => {
const param = userOrderService.getQueryParams({ guid: '123' });
expect(param).toEqual(null);
});
it('should always return if no guid exists', () => {
const param = userOrderService.getQueryParams({ code: '123' });
expect(param).toEqual(null);
});
});
});
5 changes: 5 additions & 0 deletions feature-libs/order/core/facade/order-history.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import { map, take, tap } from 'rxjs/operators';
import { OrderActions } from '../store/actions/index';
import { CANCEL_ORDER_PROCESS_ID, StateWithOrder } from '../store/order-state';
import { OrderSelectors } from '../store/selectors/index';
import { Params } from '@angular/router';

@Injectable()
export class OrderHistoryService implements OrderHistoryFacade {
Expand Down Expand Up @@ -215,4 +216,8 @@ export class OrderHistoryService implements OrderHistoryFacade {
getOrderDetailsLoading(): Observable<boolean> {
return this.store.pipe(select(OrderSelectors.getOrderDetailsLoading));
}

getQueryParams(_order: Order): Params | null {
return null;
}
}
7 changes: 7 additions & 0 deletions feature-libs/order/root/facade/order-history.facade.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {
Order,
OrderHistoryList,
} from '../model/order.model';
import { Params } from '@angular/router';

export function orderHistoryFacadeFactory() {
return facadeFactory({
Expand All @@ -35,6 +36,7 @@ export function orderHistoryFacadeFactory() {
'getCancelOrderSuccess',
'resetCancelOrderProcessState',
'getOrderDetailsLoading',
'getQueryParams',
],
async: true,
});
Expand Down Expand Up @@ -138,4 +140,9 @@ export abstract class OrderHistoryFacade {
* Returns an order details loading flag
*/
abstract getOrderDetailsLoading(): Observable<boolean>;

/**
* Returns query parameters needed for order details route
*/
abstract getQueryParams(order: Order): Params | null;
}
3 changes: 3 additions & 0 deletions feature-libs/order/tsconfig.schematics.json
Original file line number Diff line number Diff line change
Expand Up @@ -582,6 +582,9 @@
"@spartacus/epd-visualization/root": [
"../../integration-libs/epd-visualization/root/public_api"
],
"@spartacus/omf": ["../../integration-libs/omf/public_api"],
"@spartacus/omf/order": ["../../integration-libs/omf/order/public_api"],
"@spartacus/omf/root": ["../../integration-libs/omf/root/public_api"],
"@spartacus/opps": ["../../integration-libs/opps/public_api"],
"@spartacus/opps/root": ["../../integration-libs/opps/root/public_api"],
"@spartacus/s4-service/assets": [
Expand Down
3 changes: 3 additions & 0 deletions feature-libs/organization/tsconfig.schematics.json
Original file line number Diff line number Diff line change
Expand Up @@ -582,6 +582,9 @@
"@spartacus/epd-visualization/root": [
"../../integration-libs/epd-visualization/root/public_api"
],
"@spartacus/omf": ["../../integration-libs/omf/public_api"],
"@spartacus/omf/order": ["../../integration-libs/omf/order/public_api"],
"@spartacus/omf/root": ["../../integration-libs/omf/root/public_api"],
"@spartacus/opps": ["../../integration-libs/opps/public_api"],
"@spartacus/opps/root": ["../../integration-libs/opps/root/public_api"],
"@spartacus/s4-service/assets": [
Expand Down
3 changes: 3 additions & 0 deletions feature-libs/pdf-invoices/tsconfig.schematics.json
Original file line number Diff line number Diff line change
Expand Up @@ -595,6 +595,9 @@
"@spartacus/epd-visualization/root": [
"../../integration-libs/epd-visualization/root/public_api"
],
"@spartacus/omf": ["../../integration-libs/omf/public_api"],
"@spartacus/omf/order": ["../../integration-libs/omf/order/public_api"],
"@spartacus/omf/root": ["../../integration-libs/omf/root/public_api"],
"@spartacus/opps": ["../../integration-libs/opps/public_api"],
"@spartacus/opps/root": ["../../integration-libs/opps/root/public_api"],
"@spartacus/s4-service/assets": [
Expand Down
3 changes: 3 additions & 0 deletions feature-libs/pickup-in-store/tsconfig.schematics.json
Original file line number Diff line number Diff line change
Expand Up @@ -598,6 +598,9 @@
"@spartacus/epd-visualization/root": [
"../../integration-libs/epd-visualization/root/public_api"
],
"@spartacus/omf": ["../../integration-libs/omf/public_api"],
"@spartacus/omf/order": ["../../integration-libs/omf/order/public_api"],
"@spartacus/omf/root": ["../../integration-libs/omf/root/public_api"],
"@spartacus/opps": ["../../integration-libs/opps/public_api"],
"@spartacus/opps/root": ["../../integration-libs/opps/root/public_api"],
"@spartacus/s4-service/assets": [
Expand Down
3 changes: 3 additions & 0 deletions feature-libs/product-configurator/tsconfig.schematics.json
Original file line number Diff line number Diff line change
Expand Up @@ -582,6 +582,9 @@
"@spartacus/epd-visualization/root": [
"../../integration-libs/epd-visualization/root/public_api"
],
"@spartacus/omf": ["../../integration-libs/omf/public_api"],
"@spartacus/omf/order": ["../../integration-libs/omf/order/public_api"],
"@spartacus/omf/root": ["../../integration-libs/omf/root/public_api"],
"@spartacus/opps": ["../../integration-libs/opps/public_api"],
"@spartacus/opps/root": ["../../integration-libs/opps/root/public_api"],
"@spartacus/s4-service/assets": [
Expand Down
Loading

0 comments on commit 219b75e

Please sign in to comment.