mirror of
https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend
synced 2025-12-28 22:42:11 +01:00
Merged PR 1369: #3332 AHFFrist DisplayOrderItemSubsetDTO verwendet
#3332 AHFFrist DisplayOrderItemSubsetDTO verwendet Related work items: #3332
This commit is contained in:
committed by
Lorenz Hilpert
parent
cc1e210799
commit
cb2bc8d65b
@@ -22,7 +22,7 @@ import {
|
||||
InputDTO,
|
||||
ItemPayload,
|
||||
} from '@swagger/checkout';
|
||||
import { DisplayOrderDTO, OrderCheckoutService, ReorderValues } from '@swagger/oms';
|
||||
import { DisplayOrderDTO, DisplayOrderItemDTO, OrderCheckoutService, ReorderValues } from '@swagger/oms';
|
||||
import { isNullOrUndefined, memorize } from '@utils/common';
|
||||
import { combineLatest, Observable, of, concat, isObservable, throwError } from 'rxjs';
|
||||
import { bufferCount, catchError, filter, first, map, mergeMap, shareReplay, switchMap, tap, withLatestFrom } from 'rxjs/operators';
|
||||
@@ -877,6 +877,10 @@ export class DomainCheckoutService {
|
||||
return this.store.select(DomainCheckoutSelectors.selectOrders);
|
||||
}
|
||||
|
||||
updateOrderItem(item: DisplayOrderItemDTO) {
|
||||
this.store.dispatch(DomainCheckoutActions.updateOrderItem({ item }));
|
||||
}
|
||||
|
||||
removeAllOrders() {
|
||||
this.store.dispatch(DomainCheckoutActions.removeAllOrders());
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
BuyerDTO,
|
||||
PayerDTO,
|
||||
} from '@swagger/checkout';
|
||||
import { DisplayOrderDTO } from '@swagger/oms';
|
||||
import { DisplayOrderDTO, DisplayOrderItemDTO } from '@swagger/oms';
|
||||
|
||||
const prefix = '[DOMAIN-CHECKOUT]';
|
||||
|
||||
@@ -52,6 +52,8 @@ export const removeProcess = createAction(`${prefix} Remove Process`, props<{ pr
|
||||
|
||||
export const setOrders = createAction(`${prefix} Add Orders`, props<{ orders: DisplayOrderDTO[] }>());
|
||||
|
||||
export const updateOrderItem = createAction(`${prefix} Update Orders`, props<{ item: DisplayOrderItemDTO }>());
|
||||
|
||||
export const removeAllOrders = createAction(`${prefix} Remove All Orders`);
|
||||
|
||||
export const setBuyer = createAction(`${prefix} Set Buyer`, props<{ processId: number; buyer: BuyerDTO }>());
|
||||
|
||||
@@ -73,6 +73,25 @@ const _domainCheckoutReducer = createReducer(
|
||||
}),
|
||||
on(DomainCheckoutActions.removeProcess, (s, { processId }) => storeCheckoutAdapter.removeOne(processId, s)),
|
||||
on(DomainCheckoutActions.setOrders, (s, { orders }) => ({ ...s, orders: [...s.orders, ...orders] })),
|
||||
on(DomainCheckoutActions.updateOrderItem, (s, { item }) => {
|
||||
const orders = [...s.orders];
|
||||
|
||||
const orderToUpdate = orders?.find((order) => order.items?.find((i) => i.id === item?.id));
|
||||
const orderToUpdateIndex = orders?.indexOf(orderToUpdate);
|
||||
|
||||
const orderItemToUpdate = orderToUpdate?.items?.find((i) => i.id === item?.id);
|
||||
const orderItemToUpdateIndex = orderToUpdate?.items?.indexOf(orderItemToUpdate);
|
||||
|
||||
const items = [...orderToUpdate?.items];
|
||||
items[orderItemToUpdateIndex] = item;
|
||||
|
||||
orders[orderToUpdateIndex] = {
|
||||
...orderToUpdate,
|
||||
items: [...items],
|
||||
};
|
||||
|
||||
return { ...s, orders: [...orders] };
|
||||
}),
|
||||
on(DomainCheckoutActions.removeAllOrders, (s) => ({
|
||||
...s,
|
||||
orders: [],
|
||||
|
||||
@@ -151,15 +151,10 @@
|
||||
|
||||
<ng-template #abholfrist let-order="order">
|
||||
<div *ngIf="!(changeDateLoader$ | async)" class="inline-flex">
|
||||
<button
|
||||
[uiOverlayTrigger]="deadlineDatepicker"
|
||||
#deadlineDatepickerTrigger="uiOverlayTrigger"
|
||||
[disabled]="!!orderItem?.features?.paid || (changeDateDisabled$ | async)"
|
||||
class="cta-pickup-deadline"
|
||||
>
|
||||
<button [uiOverlayTrigger]="deadlineDatepicker" #deadlineDatepickerTrigger="uiOverlayTrigger" class="cta-pickup-deadline">
|
||||
<span class="mx-2">bis</span>
|
||||
<strong>
|
||||
{{ ((preferredPickUpDates | async)[order.id] | date: 'dd.MM.yy') || 'Auswählen' }}
|
||||
{{ ((order?.subsetItems)[0]?.preferredPickUpDate | date: 'dd.MM.yy') || 'Auswählen' }}
|
||||
</strong>
|
||||
<ui-icon class="ml-2" [rotate]="deadlineDatepickerTrigger.opened ? '270deg' : '90deg'" icon="arrow_head"></ui-icon>
|
||||
</button>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Component, ChangeDetectionStrategy, OnDestroy, ChangeDetectorRef } from '@angular/core';
|
||||
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';
|
||||
import { DomainCheckoutService } from '@domain/checkout';
|
||||
import { UiModalService } from '@ui/modal';
|
||||
import { PrintModalComponent, PrintModalData } from '@modal/printer';
|
||||
@@ -11,7 +11,7 @@ import { DisplayOrderDTO, DisplayOrderItemDTO } from '@swagger/oms';
|
||||
import { BreadcrumbService } from '@core/breadcrumb';
|
||||
import { ApplicationService } from '@core/application';
|
||||
import { DomainPrinterService } from '@domain/printer';
|
||||
import { BehaviorSubject, combineLatest, NEVER } from 'rxjs';
|
||||
import { combineLatest, NEVER, Subject } from 'rxjs';
|
||||
import { DateAdapter } from '@ui/common';
|
||||
|
||||
@Component({
|
||||
@@ -21,12 +21,11 @@ import { DateAdapter } from '@ui/common';
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class CheckoutSummaryComponent implements OnDestroy {
|
||||
private _onDestroy$ = new Subject();
|
||||
processId = Date.now();
|
||||
today = this.dateAdapter.today();
|
||||
minDateDatepicker = this.dateAdapter.addCalendarDays(this.dateAdapter.today(), -1);
|
||||
|
||||
preferredPickUpDates = new BehaviorSubject<{ [key: string]: string }>({});
|
||||
|
||||
displayOrders$ = combineLatest([this.domainCheckoutService.getOrders(), this._route.params]).pipe(
|
||||
map(([orders, params]) => {
|
||||
let filteredOrders: DisplayOrderDTO[] = [];
|
||||
@@ -150,6 +149,9 @@ export class CheckoutSummaryComponent implements OnDestroy {
|
||||
if (!checkoutProcess) {
|
||||
this.domainCheckoutService.removeAllOrders();
|
||||
}
|
||||
|
||||
this._onDestroy$.next();
|
||||
this._onDestroy$.complete();
|
||||
}
|
||||
|
||||
openPrintModal(id: number) {
|
||||
@@ -173,14 +175,24 @@ export class CheckoutSummaryComponent implements OnDestroy {
|
||||
item.subsetItems?.map((subsetItem) => subsetItem.id).forEach((id) => (data[`${id}`] = date?.toISOString()));
|
||||
await this.omsService.setPreferredPickUpDate({ data }).toPromise();
|
||||
|
||||
const dates = this.preferredPickUpDates.value;
|
||||
dates[item.id] = date.toISOString();
|
||||
this.preferredPickUpDates.next(dates);
|
||||
this.updateDisplayOrderItem({
|
||||
...item,
|
||||
subsetItems: item.subsetItems.map((subsetItem) => {
|
||||
return {
|
||||
...subsetItem,
|
||||
preferredPickUpDate: date.toISOString(),
|
||||
};
|
||||
}),
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
|
||||
async updateDisplayOrderItem(item: DisplayOrderItemDTO) {
|
||||
this.domainCheckoutService.updateOrderItem(item);
|
||||
}
|
||||
|
||||
async navigateToGoodsOut() {
|
||||
let takeNowOrders = await this.takeNowOrders$.pipe(first()).toPromise();
|
||||
if (takeNowOrders.length != 1) return;
|
||||
|
||||
@@ -13,6 +13,7 @@ export interface DisplayOrderItemSubsetDTO extends EntityDTOBaseOfDisplayOrderIt
|
||||
estimatedShippingDate?: string;
|
||||
orderItem?: DisplayOrderItemDTO;
|
||||
orderItemSubsetNumber?: string;
|
||||
preferredPickUpDate?: string;
|
||||
processingStatus: OrderItemProcessingStatusValue;
|
||||
processingStatusDate?: string;
|
||||
quantity?: number;
|
||||
|
||||
Reference in New Issue
Block a user