diff --git a/.npmrc b/.npmrc
index 0a2eaf75b..17ec3e118 100644
--- a/.npmrc
+++ b/.npmrc
@@ -1,13 +1,3 @@
-registry=https://pkgs.dev.azure.com/hugendubel/_packaging/hugendubel%40Local/npm/registry/
-
-always-auth=true
-; Treat this auth token like a password. Do not share it with anyone, including Microsoft support. This token expires on or before 25.08.2020.
-; begin auth token
-//pkgs.dev.azure.com/hugendubel/_packaging/hugendubel%40Local/npm/registry/:username=hugendubel
-//pkgs.dev.azure.com/hugendubel/_packaging/hugendubel%40Local/npm/registry/:_password=M2JkaDdwNjIzbWVoZGlmeDU3N2Ficjc3M252NXBkaWg1M2VtaW94dXp5amwyejNkaW5yYQ==
-//pkgs.dev.azure.com/hugendubel/_packaging/hugendubel%40Local/npm/registry/:email=npm requires email to be set but doesn't use the value
-//pkgs.dev.azure.com/hugendubel/_packaging/hugendubel%40Local/npm/:username=hugendubel
-//pkgs.dev.azure.com/hugendubel/_packaging/hugendubel%40Local/npm/:_password=M2JkaDdwNjIzbWVoZGlmeDU3N2Ficjc3M252NXBkaWg1M2VtaW94dXp5amwyejNkaW5yYQ==
-//pkgs.dev.azure.com/hugendubel/_packaging/hugendubel%40Local/npm/:email=npm requires email to be set but doesn't use the value
-; end auth token
-
+@isa:registry=https://pkgs.dev.azure.com/hugendubel/_packaging/hugendubel%40Local/npm/registry/
+@cmf:registry=https://pkgs.dev.azure.com/hugendubel/_packaging/hugendubel%40Local/npm/registry/
+always-auth=true
diff --git a/apps/sales/src/app/core/error/component/error.component.ts b/apps/sales/src/app/core/error/component/error.component.ts
index 204382081..8031917c7 100644
--- a/apps/sales/src/app/core/error/component/error.component.ts
+++ b/apps/sales/src/app/core/error/component/error.component.ts
@@ -10,7 +10,7 @@ import { ErrorService } from './error.service';
@Component({
selector: 'app-error',
templateUrl: './error.component.html',
- styleUrls: ['./error.component.scss']
+ styleUrls: ['./error.component.scss'],
})
export class ErrorComponent implements OnInit, OnDestroy {
id = 'error-modal';
@@ -42,7 +42,7 @@ export class ErrorComponent implements OnInit, OnDestroy {
this.formatInvalidProperties(invalidProperties);
}
this.title = logout ? 'Willkommen zurück!' : 'Irgendwas hat nicht funktioniert…';
- this.message = logout ? 'Sie waren seit 5 Stunden nicht in der ISA.
Bitte melden Sie sich erneut an.' : '';
+ this.message = logout ? 'Sie waren zu lange nicht in der ISA aktiv.
Bitte melden Sie sich erneut an.' : '';
if (this.validMessageCodes.includes(code) && !isNullOrUndefined(message)) {
this.message = message;
}
@@ -76,13 +76,9 @@ export class ErrorComponent implements OnInit, OnDestroy {
}
formatInvalidProperties(invalidProperties: string) {
- const properties = invalidProperties
- .replace('{', '')
- .replace('}', '')
- .replace(/"/g, '')
- .split(',');
+ const properties = invalidProperties.replace('{', '').replace('}', '').replace(/"/g, '').split(',');
if (properties && properties.length > 0) {
- this.invalidAttributes = properties.map(propertie => {
+ this.invalidAttributes = properties.map((propertie) => {
const keyValuePropertie = propertie.split(':');
return { key: keyValuePropertie[0], value: keyValuePropertie[1] };
});
diff --git a/apps/sales/src/app/core/services/collecting-shelf.service.ts b/apps/sales/src/app/core/services/collecting-shelf.service.ts
index 9a3ca1ffc..58a218943 100644
--- a/apps/sales/src/app/core/services/collecting-shelf.service.ts
+++ b/apps/sales/src/app/core/services/collecting-shelf.service.ts
@@ -31,6 +31,7 @@ import { CollectingShelfSelectors } from '../store/selectors/collecting-shelf.se
})
export class CollectingShelfService {
constructor(
+ private abholfachService: AbholfachService,
private omsService: OrderService,
private abholfach: AbholfachService,
private mapper: ShelfMapping,
@@ -60,7 +61,11 @@ export class CollectingShelfService {
throw new Error(response.message);
}
return {
- result: this.mapper.fromOrderItemListItemDTOArrayToCollectingShelfOrder(response.result, this, skip === 0),
+ result: this.mapper.fromOrderItemListItemDTOArrayToCollectingShelfOrder(
+ response.result,
+ this,
+ skip === 0
+ ),
hits: response.hits,
};
})
@@ -68,7 +73,9 @@ export class CollectingShelfService {
}
searchShelfCached() {
- return this.store.select(CollectingShelfSelectors.getCachedResults).pipe(filter((data) => !isNullOrUndefined(data)));
+ return this.store
+ .select(CollectingShelfSelectors.getCachedResults)
+ .pipe(filter((data) => !isNullOrUndefined(data)));
}
searchShelfHasResults(input: string, branchNumber: string): Observable {
@@ -146,7 +153,9 @@ export class CollectingShelfService {
);
}
- getOrderItemSubsetByOrderItemSubsetId(orderItemSubsetId: number): Observable {
+ getOrderItemSubsetByOrderItemSubsetId(
+ orderItemSubsetId: number
+ ): Observable {
return this.omsService.OrderGetOrderItemSubset(orderItemSubsetId).pipe(
map((response) => {
if (response.error) {
@@ -157,13 +166,18 @@ export class CollectingShelfService {
);
}
- getOrdersByCompartmentNumber(compartmentNumbers: string[], orderId: number): Observable {
+ getOrdersByCompartmentNumber(
+ compartmentNumbers: string[],
+ orderId: number
+ ): Observable {
return this.omsService.OrderGetOrdersByCompartment(compartmentNumbers).pipe(
map((response) => {
if (response.error) {
throw new Error(response.message);
}
- return response.result ? response.result.find((o) => +o.id === +orderId) : null;
+ return response.result
+ ? response.result.find((o) => +o.id === +orderId)
+ : null;
})
);
}
@@ -222,8 +236,16 @@ export class CollectingShelfService {
);
}
- extendPickUpPeriod(orderId: number, orderItemId: number, orderItemSubsetId: number, date: Date): Observable {
- const compartmentStop = this.datepipe.transform(date, BACKEND_API_TIMESTAMP_FORMAT);
+ extendPickUpPeriod(
+ orderId: number,
+ orderItemId: number,
+ orderItemSubsetId: number,
+ date: Date
+ ): Observable {
+ const compartmentStop = this.datepipe.transform(
+ date,
+ BACKEND_API_TIMESTAMP_FORMAT
+ );
const params = {
orderId,
orderItemId,
@@ -242,8 +264,16 @@ export class CollectingShelfService {
);
}
- updateEstimatedShippingDate(orderId: number, orderItemId: number, orderItemSubsetId: number, date: Date): Observable {
- const estimatedShippingDate = this.datepipe.transform(date, BACKEND_API_TIMESTAMP_FORMAT);
+ updateEstimatedShippingDate(
+ orderId: number,
+ orderItemId: number,
+ orderItemSubsetId: number,
+ date: Date
+ ): Observable {
+ const estimatedShippingDate = this.datepipe.transform(
+ date,
+ BACKEND_API_TIMESTAMP_FORMAT
+ );
const params = {
orderId,
orderItemId,
@@ -262,7 +292,11 @@ export class CollectingShelfService {
);
}
- patchOrderItem(orderId: number, orderItemId: number, orderItem: OrderItemDTO) {
+ patchOrderItem(
+ orderId: number,
+ orderItemId: number,
+ orderItem: OrderItemDTO
+ ) {
const params = {
orderId,
orderItemId,
@@ -347,7 +381,9 @@ export class CollectingShelfService {
if (response.error) {
throw new Error(response.message);
}
- return response.result && response.result[0] ? response.result[0].supplierDescription : null;
+ return response.result && response.result[0]
+ ? response.result[0].supplierDescription
+ : null;
})
);
}
@@ -374,14 +410,23 @@ export class CollectingShelfService {
);
}
- processOrderCompartmentNumber(orders: OrderItemListItemDTO[], order: OrderItemListItemDTO, index: number, firstBatch: boolean) {
+ processOrderCompartmentNumber(
+ orders: OrderItemListItemDTO[],
+ order: OrderItemListItemDTO,
+ index: number,
+ firstBatch: boolean
+ ) {
const tempOrders = [...orders];
const prevOrders = tempOrders.slice(0, index);
let hideCompartmentNumber = false;
if (index === 0 && !firstBatch) {
- const olderOrders = this.store.selectSnapshot(CollectingShelfSelectors.getShelfOrders);
+ const olderOrders = this.store.selectSnapshot(
+ CollectingShelfSelectors.getShelfOrders
+ );
if (olderOrders && olderOrders.length > 0) {
- const filteredOrders = olderOrders.filter((t) => t.orderId === order.orderId);
+ const filteredOrders = olderOrders.filter(
+ (t) => t.orderId === order.orderId
+ );
if (
order.compartmentCode &&
order.processingStatus &&
@@ -390,8 +435,10 @@ export class CollectingShelfService {
filteredOrders[filteredOrders.length - 1] &&
filteredOrders[filteredOrders.length - 1].compartmentCode &&
filteredOrders[filteredOrders.length - 1].processingStatus &&
- filteredOrders[filteredOrders.length - 1].compartmentCode === order.compartmentCode &&
- filteredOrders[filteredOrders.length - 1].processingStatus === order.processingStatus
+ filteredOrders[filteredOrders.length - 1].compartmentCode ===
+ order.compartmentCode &&
+ filteredOrders[filteredOrders.length - 1].processingStatus ===
+ order.processingStatus
) {
hideCompartmentNumber = true;
}
@@ -404,8 +451,10 @@ export class CollectingShelfService {
prevOrders[prevOrders.length - 1] &&
prevOrders[prevOrders.length - 1].compartmentCode &&
prevOrders[prevOrders.length - 1].processingStatus &&
- prevOrders[prevOrders.length - 1].compartmentCode === order.compartmentCode &&
- prevOrders[prevOrders.length - 1].processingStatus === order.processingStatus
+ prevOrders[prevOrders.length - 1].compartmentCode ===
+ order.compartmentCode &&
+ prevOrders[prevOrders.length - 1].processingStatus ===
+ order.processingStatus
) {
hideCompartmentNumber = true;
}
diff --git a/apps/sales/src/app/core/store/state/cart-entry.state.ts b/apps/sales/src/app/core/store/state/cart-entry.state.ts
index 973d2a7e0..85cdef126 100644
--- a/apps/sales/src/app/core/store/state/cart-entry.state.ts
+++ b/apps/sales/src/app/core/store/state/cart-entry.state.ts
@@ -3,7 +3,10 @@ import * as actions from '../actions/cart-entry.actions';
import { CartEntry } from '../../models/cart-entry.model';
import { SetCartData } from '../actions/cart.actions';
import { BranchSelectors } from '../selectors/branch.selector';
-import { DeliveryOption, DeliveryType } from '../../models/delivery-option.model';
+import {
+ DeliveryOption,
+ DeliveryType,
+} from '../../models/delivery-option.model';
import {
ShippingTarget,
BranchDTO,
@@ -43,16 +46,29 @@ export class CartEntryStateModel {
},
})
export class CartEntryState {
- constructor(private store: Store, private checkoutService: CheckoutService, private customerMapping: CustomerMapping) {}
+ constructor(
+ private store: Store,
+ private checkoutService: CheckoutService,
+ private customerMapping: CustomerMapping
+ ) {}
@Action(actions.SetCartEntry)
setCartEntryData(
ctx: StateContext,
- { quantity, deliveryType, bookId, availability, branch, promoPoints }: actions.SetCartEntry
+ {
+ quantity,
+ deliveryType,
+ bookId,
+ availability,
+ branch,
+ promoPoints,
+ }: actions.SetCartEntry
) {
const products = this.store.selectSnapshot(ProductSelectors.getProducts);
const branches = this.store.selectSnapshot(BranchSelectors.getBranches);
- const currentProcess = this.store.selectSnapshot(ProcessSelectors.getCurrentProcess);
+ const currentProcess = this.store.selectSnapshot(
+ ProcessSelectors.getCurrentProcess
+ );
const state = ctx.getState();
if (!currentProcess || !currentProcess.cartId) {
@@ -60,11 +76,22 @@ export class CartEntryState {
}
const cartId = currentProcess.cartId;
- const existingItemId = this.itemExistInCart(state.cartEntries, bookId, deliveryType, branch, cartId);
+ const existingItemId = this.itemExistInCart(
+ state.cartEntries,
+ bookId,
+ deliveryType,
+ branch,
+ cartId
+ );
if (existingItemId) {
this.store.dispatch(
- new actions.UpdateCartEntryQuantity(state.cartEntries[existingItemId].quantity + quantity, existingItemId, availability, '')
+ new actions.UpdateCartEntryQuantity(
+ state.cartEntries[existingItemId].quantity + quantity,
+ existingItemId,
+ availability,
+ ''
+ )
);
} else {
return this.addItemToCart$(
@@ -83,21 +110,43 @@ export class CartEntryState {
@Action(actions.UpdateCartEntryType)
updateCartEntryData(
ctx: StateContext,
- { deliveryType, bookId, availability, branch, oldDeliveryType, oldBranch }: actions.UpdateCartEntryType
+ {
+ deliveryType,
+ bookId,
+ availability,
+ branch,
+ oldDeliveryType,
+ oldBranch,
+ }: actions.UpdateCartEntryType
) {
const branches = this.store.selectSnapshot(BranchSelectors.getBranches);
- const currentProcess = this.store.selectSnapshot(ProcessSelectors.getCurrentProcess);
+ const currentProcess = this.store.selectSnapshot(
+ ProcessSelectors.getCurrentProcess
+ );
if (!currentProcess) {
return;
}
const state = ctx.getState();
- const existingItemId = this.itemExistInCart(state.cartEntries, bookId, oldDeliveryType, oldBranch, currentProcess.cartId);
+ const existingItemId = this.itemExistInCart(
+ state.cartEntries,
+ bookId,
+ oldDeliveryType,
+ oldBranch,
+ currentProcess.cartId
+ );
const newBranch = branches[branch];
const itemToUpdate = { ...state.cartEntries[existingItemId] };
const cartEntries = { ...state.cartEntries };
- const destination = this.createDestinationObject(deliveryType, newBranch, availability as any);
- const ava: UpdateDestinationAvailability = this.availibilityObjectForUpdate(availability as any, deliveryType);
+ const destination = this.createDestinationObject(
+ deliveryType,
+ newBranch,
+ availability as any
+ );
+ const ava: UpdateDestinationAvailability = this.availibilityObjectForUpdate(
+ availability as any,
+ deliveryType
+ );
itemToUpdate.quantity = itemToUpdate.quantity;
itemToUpdate.deliveryType = deliveryType;
@@ -129,20 +178,33 @@ export class CartEntryState {
: undefined;
cartEntries[existingItemId] = itemToUpdate;
- return this.checkoutService.updateItemInCart(currentProcess.cartId, existingItemId, destination, itemToUpdate.quantity, ava).pipe(
- tap(() => {
- ctx.patchState({
- cartEntries,
- });
- this.syncApiState(cartEntries);
- })
- );
+ return this.checkoutService
+ .updateItemInCart(
+ currentProcess.cartId,
+ existingItemId,
+ destination,
+ itemToUpdate.quantity,
+ ava
+ )
+ .pipe(
+ tap(() => {
+ ctx.patchState({
+ cartEntries,
+ });
+ this.syncApiState(cartEntries);
+ })
+ );
}
@Action(actions.SetShippingForDownloadCart)
- setShippingForDownloadCart(ctx: StateContext, { address, cartEntriesIds }: actions.SetShippingForDownloadCart) {
+ setShippingForDownloadCart(
+ ctx: StateContext,
+ { address, cartEntriesIds }: actions.SetShippingForDownloadCart
+ ) {
const state = ctx.getState();
- const currentProcess = this.store.selectSnapshot(ProcessSelectors.getCurrentProcess);
+ const currentProcess = this.store.selectSnapshot(
+ ProcessSelectors.getCurrentProcess
+ );
if (currentProcess) {
const cartEntries = { ...state.cartEntries };
@@ -150,12 +212,19 @@ export class CartEntryState {
return from(cartEntriesIds).pipe(
concatMap((cartEntryId) =>
this.checkoutService
- .updateDestinationForItemInCart(currentProcess.cartId, cartEntryId, {
- data: { shippingAddress: address },
- })
+ .updateDestinationForItemInCart(
+ currentProcess.cartId,
+ cartEntryId,
+ {
+ data: { shippingAddress: address },
+ }
+ )
.pipe(
tap(() => {
- const cartEntry = { ...cartEntries[cartEntryId], shippingAddress: address };
+ const cartEntry = {
+ ...cartEntries[cartEntryId],
+ shippingAddress: address,
+ };
cartEntries[cartEntryId] = cartEntry;
ctx.patchState({
@@ -174,10 +243,17 @@ export class CartEntryState {
@Action(actions.UpdateCartEntryQuantity)
updateCartEntryQuantity(
ctx: StateContext,
- { quantity, cartEntryId, availabilityMsg, availability }: actions.UpdateCartEntryQuantity
+ {
+ quantity,
+ cartEntryId,
+ availabilityMsg,
+ availability,
+ }: actions.UpdateCartEntryQuantity
) {
const state = ctx.getState();
- const currentProcess = this.store.selectSnapshot(ProcessSelectors.getCurrentProcess);
+ const currentProcess = this.store.selectSnapshot(
+ ProcessSelectors.getCurrentProcess
+ );
const cartEntries = { ...state.cartEntries };
const updateEntry = { ...cartEntries[cartEntryId] };
@@ -201,10 +277,18 @@ export class CartEntryState {
products[updateEntry.bookId],
quantity,
branches[updateEntry.branch],
- (updateEntry.availability ? updateEntry.availability : products[updateEntry.bookId].catalogAvailability) as any, // TODO: Typisierung
+ (updateEntry.availability
+ ? updateEntry.availability
+ : products[updateEntry.bookId].catalogAvailability) as any, // TODO: Typisierung
products[updateEntry.bookId].promoPoints
).pipe(
- switchMap((updatedItem) => this.checkoutService.updateQuantityForItemInCart(currentProcess.cartId, cartEntryId, updatedItem)),
+ switchMap((updatedItem) =>
+ this.checkoutService.updateQuantityForItemInCart(
+ currentProcess.cartId,
+ cartEntryId,
+ updatedItem
+ )
+ ),
tap(() => {
this.syncApiState(cartEntries);
})
@@ -212,9 +296,14 @@ export class CartEntryState {
}
@Action(actions.DeleteCartEntry)
- deleteCartItem(ctx: StateContext, { cartEntryId, hardDelete }: actions.DeleteCartEntry) {
+ deleteCartItem(
+ ctx: StateContext,
+ { cartEntryId, hardDelete }: actions.DeleteCartEntry
+ ) {
const state = ctx.getState();
- const currentProcess = this.store.selectSnapshot(ProcessSelectors.getCurrentProcess);
+ const currentProcess = this.store.selectSnapshot(
+ ProcessSelectors.getCurrentProcess
+ );
const cartEntries = { ...state.cartEntries };
const cartEntry = cartEntries[cartEntryId];
@@ -226,10 +315,18 @@ export class CartEntryState {
products[cartEntry.bookId],
0,
branches[cartEntry.branch],
- (cartEntry.availability ? cartEntry.availability : products[cartEntry.bookId].catalogAvailability) as any, // TODO: Typisierung
+ (cartEntry.availability
+ ? cartEntry.availability
+ : products[cartEntry.bookId].catalogAvailability) as any, // TODO: Typisierung
products[cartEntry.bookId].promoPoints
).pipe(
- switchMap((updatedItem) => this.checkoutService.updateQuantityForItemInCart(currentProcess.cartId, cartEntryId, updatedItem)),
+ switchMap((updatedItem) =>
+ this.checkoutService.updateQuantityForItemInCart(
+ currentProcess.cartId,
+ cartEntryId,
+ updatedItem
+ )
+ ),
tap(() => {
delete cartEntries[cartEntryId];
@@ -243,11 +340,17 @@ export class CartEntryState {
}
@Action(actions.ReloadCartEntryData)
- reloadCartEntries(ctx: StateContext, { cartEntries }: actions.ReloadCartEntryData) {
+ reloadCartEntries(
+ ctx: StateContext,
+ { cartEntries }: actions.ReloadCartEntryData
+ ) {
ctx.setState({ cartEntries: { ...cartEntries } });
}
- private availibilityObjectForUpdate(ava: AvailabilityDTO, deliveryType: string): UpdateDestinationAvailability {
+ private availibilityObjectForUpdate(
+ ava: AvailabilityDTO,
+ deliveryType: string
+ ): UpdateDestinationAvailability {
let data: UpdateDestinationAvailability = { availabilityType: ava.status };
if (deliveryType === DeliveryOption.DELIVERY) {
@@ -300,10 +403,15 @@ export class CartEntryState {
branch: number,
cartId: number
): null | number {
- const existingCartEntriesIds = this.store.selectSnapshot(CartState.getCartEntries)(cartId);
+ const existingCartEntriesIds = this.store.selectSnapshot(
+ CartState.getCartEntries
+ )(cartId);
const existingEntries = existingCartEntriesIds.map((id) => cartEntries[id]);
const updateItem = existingEntries.find(
- (cartitem: CartEntry) => cartitem.bookId === bookId && cartitem.deliveryType === deliveryType && cartitem.branch === branch
+ (cartitem: CartEntry) =>
+ cartitem.bookId === bookId &&
+ cartitem.deliveryType === deliveryType &&
+ cartitem.branch === branch
);
if (updateItem) {
@@ -311,7 +419,11 @@ export class CartEntryState {
for (const key of existingCartEntriesIds) {
const currentItem = cartEntries[key];
- if (currentItem.bookId === bookId && currentItem.deliveryType === deliveryType && currentItem.branch === branch) {
+ if (
+ currentItem.bookId === bookId &&
+ currentItem.deliveryType === deliveryType &&
+ currentItem.branch === branch
+ ) {
itemId = key;
break;
}
@@ -338,7 +450,12 @@ export class CartEntryState {
if (deliveryType === DeliveryOption.TAKE_NOW) {
getBranchSupplierId$ = this.checkoutService
.getSuppliers()
- .pipe(map((suppliers) => suppliers.find((supplier) => supplier.supplierNumber === 'F').id));
+ .pipe(
+ map(
+ (suppliers) =>
+ suppliers.find((supplier) => supplier.supplierNumber === 'F').id
+ )
+ );
}
const addItemToCart$ = (item: AddToShoppingCartDTO) =>
@@ -346,8 +463,10 @@ export class CartEntryState {
tap((shoppingCart: ShoppingCartDTO) => {
const newItemIndex = Object.keys(shoppingCart.items).length - 1;
const newItemId = shoppingCart.items[newItemIndex].id;
- const deliveryDate = shoppingCart.items[newItemIndex].data.availability.estimatedShippingDate
- ? shoppingCart.items[newItemIndex].data.availability.estimatedShippingDate
+ const deliveryDate = shoppingCart.items[newItemIndex].data
+ .availability.estimatedShippingDate
+ ? shoppingCart.items[newItemIndex].data.availability
+ .estimatedShippingDate
: null;
const pickUpDate = availability.at ? availability.at : null;
@@ -403,9 +522,13 @@ export class CartEntryState {
);
if (deliveryType === DeliveryOption.DOWNLOAD) {
- const customer = this.store.selectSnapshot(CustomerSelectors.getCurrentProcessActiveUser);
+ const customer = this.store.selectSnapshot(
+ CustomerSelectors.getCurrentProcessActiveUser
+ );
return this.checkoutService.getSuppliers().pipe(
- map((suppliers) => suppliers.find((supplier) => supplier.supplierNumber === 'DIG')),
+ map((suppliers) =>
+ suppliers.find((supplier) => supplier.supplierNumber === 'DIG')
+ ),
map((supplier) =>
this.createObjectForDonwload(
deliveryType,
@@ -422,7 +545,17 @@ export class CartEntryState {
);
} else {
return getBranchSupplierId$.pipe(
- map((supplierId) => this.createObjectForAPI(deliveryType, book, quantity, availability, supplierId, branch, promoPoints)),
+ map((supplierId) =>
+ this.createObjectForAPI(
+ deliveryType,
+ book,
+ quantity,
+ availability,
+ supplierId,
+ branch,
+ promoPoints
+ )
+ ),
flatMap((item) => addItemToCart$(item))
);
}
@@ -437,7 +570,11 @@ export class CartEntryState {
branch: BranchDTO,
promoPoints: number
): AddToShoppingCartDTO {
- const destination: EntityDTOContainerOfDestinationDTO = this.createDestinationObject(deliveryType, branch, availability);
+ const destination: EntityDTOContainerOfDestinationDTO = this.createDestinationObject(
+ deliveryType,
+ branch,
+ availability
+ );
const item: AddToShoppingCartDTO = {
product: {
@@ -453,7 +590,9 @@ export class CartEntryState {
ssc: availability.ssc ? availability.ssc : null,
sscText: availability.sscText ? availability.sscText : null,
estimatedShippingDate: availability.at ? availability.at : null,
- supplierProductNumber: availability.supplierProductNumber ? availability.supplierProductNumber : null,
+ supplierProductNumber: availability.supplierProductNumber
+ ? availability.supplierProductNumber
+ : null,
isPrebooked: availability.isPrebooked,
},
promotion: { points: promoPoints },
@@ -472,7 +611,12 @@ export class CartEntryState {
promoPoints: number,
customer?: User
): AddToShoppingCartDTO {
- const destination: EntityDTOContainerOfDestinationDTO = this.createDestinationObject(deliveryType, branch, availability, customer);
+ const destination: EntityDTOContainerOfDestinationDTO = this.createDestinationObject(
+ deliveryType,
+ branch,
+ availability,
+ customer
+ );
const item: AddToShoppingCartDTO = {
product: {
@@ -488,7 +632,9 @@ export class CartEntryState {
ssc: availability.ssc ? availability.ssc : null,
sscText: availability.sscText ? availability.sscText : null,
estimatedShippingDate: availability.at ? availability.at : null,
- supplierProductNumber: availability.supplierProductNumber ? availability.supplierProductNumber : null,
+ supplierProductNumber: availability.supplierProductNumber
+ ? availability.supplierProductNumber
+ : null,
isPrebooked: availability.isPrebooked,
},
promotion: { points: promoPoints },
@@ -522,8 +668,14 @@ export class CartEntryState {
},
};
} else if (targetType === DeliveryType['Download']) {
- const address = customer ? (customer.delivery_addres ? customer.delivery_addres : customer.invoice_address) : null;
- const addressDto: AddressDTO = address ? this.customerMapping.fromAddressToAddressDTO(address) : null;
+ const address = customer
+ ? customer.delivery_addres
+ ? customer.delivery_addres
+ : customer.invoice_address
+ : null;
+ const addressDto: AddressDTO = address
+ ? this.customerMapping.fromAddressToAddressDTO(address)
+ : null;
destination = {
data: {
target: targetType,
@@ -561,9 +713,13 @@ export class CartEntryState {
let item$: Observable;
if (deliveryType === DeliveryOption.DOWNLOAD) {
item$ = this.checkoutService.getSuppliers().pipe(
- map((suppliers) => suppliers.find((supplier) => supplier.supplierNumber === 'DIG')),
+ map((suppliers) =>
+ suppliers.find((supplier) => supplier.supplierNumber === 'DIG')
+ ),
flatMap((supplier) => {
- const customer = this.store.selectSnapshot(CustomerSelectors.getCurrentProcessActiveUser);
+ const customer = this.store.selectSnapshot(
+ CustomerSelectors.getCurrentProcessActiveUser
+ );
return of(
this.createObjectForDonwload(
deliveryType,
@@ -580,13 +736,36 @@ export class CartEntryState {
);
} else if (deliveryType === DeliveryOption.TAKE_NOW) {
item$ = this.checkoutService.getSuppliers().pipe(
- map((suppliers) => suppliers.find((supplier) => supplier.supplierNumber === 'F').id),
+ map(
+ (suppliers) =>
+ suppliers.find((supplier) => supplier.supplierNumber === 'F').id
+ ),
flatMap((supplierId) => {
- return of(this.createObjectForAPI(deliveryType, book, quantity, availability, supplierId, branch, promoPoints));
+ return of(
+ this.createObjectForAPI(
+ deliveryType,
+ book,
+ quantity,
+ availability,
+ supplierId,
+ branch,
+ promoPoints
+ )
+ );
})
);
} else {
- return of(this.createObjectForAPI(deliveryType, book, quantity, availability, availability.supplierId, branch, promoPoints));
+ return of(
+ this.createObjectForAPI(
+ deliveryType,
+ book,
+ quantity,
+ availability,
+ availability.supplierId,
+ branch,
+ promoPoints
+ )
+ );
}
return item$.pipe(
map((it) => {
diff --git a/apps/sales/src/app/modules/goods-in/pages/goods-in-search-results/goods-in-search-results.datasource.ts b/apps/sales/src/app/modules/goods-in/pages/goods-in-search-results/goods-in-search-results.datasource.ts
index aa458dcd1..4c462526f 100644
--- a/apps/sales/src/app/modules/goods-in/pages/goods-in-search-results/goods-in-search-results.datasource.ts
+++ b/apps/sales/src/app/modules/goods-in/pages/goods-in-search-results/goods-in-search-results.datasource.ts
@@ -7,35 +7,50 @@ import { GoodsInService } from 'apps/sales/src/app/core/services/goods-in.servic
import { GoodsInSearch } from 'apps/sales/src/app/core/models/GoodsInSearch.model';
import { SetGoodsInOrders } from 'apps/sales/src/app/core/store/actions/goods-in.actions';
-export class GoodsInSearchResultsDataSource extends DataSource {
+export class GoodsInSearchResultsDataSource extends DataSource<
+ OrderItemListItemDTO | undefined
+> {
private pageSize = 10;
private fetchedPages = new Set();
private cachedData = Array.from({ length: 10 });
- private dataStream = new BehaviorSubject<(OrderItemListItemDTO | undefined)[]>(this.cachedData);
+ private dataStream = new BehaviorSubject<
+ (OrderItemListItemDTO | undefined)[]
+ >(this.cachedData);
destroy$ = new Subject();
public loading = true;
public results = false;
public allHits = 0;
public firstLoad = true;
- constructor(private search: GoodsInSearch, private store: Store, private goodsInService: GoodsInService, private useCache: Boolean) {
+ constructor(
+ private search: GoodsInSearch,
+ private store: Store,
+ private goodsInService: GoodsInService,
+ private useCache: Boolean
+ ) {
super();
}
- connect(collectionViewer: CollectionViewer): Observable<(OrderItemListItemDTO | undefined)[]> {
- collectionViewer.viewChange.pipe(takeUntil(this.destroy$)).subscribe((range) => {
- const startPage = this.getPageForIndex(range.start);
- const endPage = this.getPageForIndex(range.end);
- for (let i = startPage; i <= endPage; i++) {
- if (this.firstLoad && i === 0) {
- return;
+ connect(
+ collectionViewer: CollectionViewer
+ ): Observable<(OrderItemListItemDTO | undefined)[]> {
+ collectionViewer.viewChange
+ .pipe(takeUntil(this.destroy$))
+ .subscribe((range) => {
+ const startPage = this.getPageForIndex(range.start);
+ const endPage = this.getPageForIndex(range.end);
+ for (let i = startPage; i <= endPage; i++) {
+ if (this.firstLoad && i === 0) {
+ return;
+ }
+ this.fetchPage(i);
}
- this.fetchPage(i);
- }
- });
+ });
- this.dataStream.pipe(takeUntil(this.destroy$), debounceTime(1000)).subscribe((i) => {
- this.store.dispatch(new SetGoodsInOrders([...i]));
- });
+ this.dataStream
+ .pipe(takeUntil(this.destroy$), debounceTime(1000))
+ .subscribe((i) => {
+ this.store.dispatch(new SetGoodsInOrders([...i]));
+ });
this.fetchPage(0);
return this.dataStream;
@@ -82,25 +97,45 @@ export class GoodsInSearchResultsDataSource extends DataSource {
- this.loading = false;
- this.results = true;
+ shelfSearch$
+ .pipe(take(1))
+ .subscribe(
+ ({
+ results,
+ hits,
+ }: {
+ results: OrderItemListItemDTO[];
+ hits: number;
+ }) => {
+ this.loading = false;
+ this.results = true;
- if (page === 0) {
- this.cachedData = Array.from({ length: hits });
- this.allHits = hits;
- }
+ if (page === 0) {
+ this.cachedData = Array.from({
+ length: hits,
+ });
+ this.allHits = hits;
+ }
- this.cachedData.splice(page * this.pageSize, this.pageSize, ...results);
- this.dataStream.next(this.cachedData);
+ this.cachedData.splice(
+ page * this.pageSize,
+ this.pageSize,
+ ...results
+ );
+ this.dataStream.next(this.cachedData);
- if (page === 0) {
- // dispatch immediately on first page load
- this.firstLoad = false;
- this.store.dispatch(new SetGoodsInOrders(this.cachedData));
- }
- });
+ if (page === 0) {
+ // dispatch immediately on first page load
+ this.firstLoad = false;
+ this.store.dispatch(new SetGoodsInOrders(this.cachedData));
+ }
+ }
+ );
}
}
diff --git a/apps/sales/src/app/modules/goods-in/pages/goods-in-search/goods-in-search.component.ts b/apps/sales/src/app/modules/goods-in/pages/goods-in-search/goods-in-search.component.ts
index 24ad5720b..5732c4d7e 100644
--- a/apps/sales/src/app/modules/goods-in/pages/goods-in-search/goods-in-search.component.ts
+++ b/apps/sales/src/app/modules/goods-in/pages/goods-in-search/goods-in-search.component.ts
@@ -23,9 +23,14 @@ import { GOODS_IN_SCROLL_INDEX } from 'apps/sales/src/app/core/utils/app.constan
styleUrls: ['./goods-in-search.component.scss'],
})
export class GoodsInSearchComponent implements OnInit {
- @ViewChild('searchInput', { static: false }) searchInput: SearchInputComponent;
+ @ViewChild('searchInput', { static: false })
+ searchInput: SearchInputComponent;
error: string;
- constructor(private store: Store, private goodsInService: GoodsInService, private router: Router) { }
+ constructor(
+ private store: Store,
+ private goodsInService: GoodsInService,
+ private router: Router
+ ) {}
ngOnInit() {
this.initialize();
@@ -34,7 +39,7 @@ export class GoodsInSearchComponent implements OnInit {
search(input: string) {
const branchNo = this.store.selectSnapshot(BranchSelectors.getUserBranch);
this.goodsInService
- .search(input, branchNo, 0, 10)
+ .search(input, 0, 10)
.pipe(take(1))
.subscribe((data) => this.searchResultHandler(data, input, branchNo));
}
@@ -43,18 +48,29 @@ export class GoodsInSearchComponent implements OnInit {
this.store.dispatch(new ClearGoodsInCachedOrders());
}
- searchResultHandler(data: { results: OrderItemListItemDTO[]; hits: number }, input: string, branchNo: string) {
+ searchResultHandler(
+ data: { results: OrderItemListItemDTO[]; hits: number },
+ input: string,
+ branchNo: string
+ ) {
if (data && data.results && data.results.length > 0) {
this.error = null;
this.searchInput.stopLoading();
this.store.dispatch(new SetGoodsInOrders(data.results));
- this.store.dispatch(new SetGoodsInCachedOrders({ results: data.results, hits: data.hits }));
- this.store.dispatch(new SetGoodsInSearch({ input: input, branchnumber: branchNo }));
+ this.store.dispatch(
+ new SetGoodsInCachedOrders({ results: data.results, hits: data.hits })
+ );
+ this.store.dispatch(
+ new SetGoodsInSearch({ input: input, branchnumber: branchNo })
+ );
this.store.dispatch(new SetGoodsInUseCache(true));
sessionStorage.removeItem(GOODS_IN_SCROLL_INDEX);
if (data.results.length === 1) {
const item = data.results[0];
- this.navigate(`/goodsin/details/${item.orderId}/${item.orderItemId}/${item.processingStatus}`, item.product.name);
+ this.navigate(
+ `/goodsin/details/${item.orderId}/${item.orderItemId}/${item.processingStatus}`,
+ item.product.name
+ );
} else {
this.navigate('/goodsin/results', `${input} (${data.hits} Ergebnisse)`);
}
diff --git a/apps/sales/src/polyfills.ts b/apps/sales/src/polyfills.ts
index 7aa88cf6e..5e19fd245 100644
--- a/apps/sales/src/polyfills.ts
+++ b/apps/sales/src/polyfills.ts
@@ -18,6 +18,9 @@
* BROWSER POLYFILLS
*/
+/** Intersection Observer Polyfil for iOS < 12.2 */
+import 'intersection-observer';
+
/** IE9, IE10, IE11, and Chrome <55 requires all of the following polyfills.
* This also includes Android Emulators with older versions of Chrome and Google Search/Googlebot
*/
diff --git a/ng-swagger-gen/cat.json b/ng-swagger-gen/cat.json
index 67897d7a6..8725351e3 100644
--- a/ng-swagger-gen/cat.json
+++ b/ng-swagger-gen/cat.json
@@ -11,5 +11,6 @@
"serviceIndex": true,
"apiModule": true,
"enumModule": true,
- "generateExamples": false
-}
\ No newline at end of file
+ "generateExamples": false,
+ "ignoreUnusedModels": false
+}
diff --git a/ng-swagger-gen/oms.json b/ng-swagger-gen/oms.json
index 8a8ef8160..c87658068 100644
--- a/ng-swagger-gen/oms.json
+++ b/ng-swagger-gen/oms.json
@@ -11,5 +11,6 @@
"serviceIndex": true,
"apiModule": true,
"enumModule": true,
- "generateExamples": false
-}
\ No newline at end of file
+ "generateExamples": false,
+ "ignoreUnusedModels": false
+}
diff --git a/package-lock.json b/package-lock.json
index a9aa7a453..6a4f0c52e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8589,6 +8589,11 @@
"ipaddr.js": "^1.9.0"
}
},
+ "intersection-observer": {
+ "version": "0.11.0",
+ "resolved": "https://pkgs.dev.azure.com/hugendubel/_packaging/hugendubel/npm/registry/intersection-observer/-/intersection-observer-0.11.0.tgz",
+ "integrity": "sha1-9OoGcHAyb2g5PuFhzAospMAEDG8="
+ },
"invariant": {
"version": "2.2.4",
"resolved": "https://pkgs.dev.azure.com/hugendubel/_packaging/hugendubel/npm/registry/invariant/-/invariant-2.2.4.tgz",
diff --git a/package.json b/package.json
index c1f24767f..961e4dde0 100644
--- a/package.json
+++ b/package.json
@@ -75,6 +75,7 @@
"core-js": "^2.6.5",
"faker": "^4.1.0",
"hammerjs": "^2.0.8",
+ "intersection-observer": "^0.11.0",
"ng-circle-progress": "^1.4.0",
"ng-connection-service": "^1.0.4",
"ngx-infinite-scroll": "^7.2.0",