From dc42107668def0243c76378ebaabf543055c99fd Mon Sep 17 00:00:00 2001 From: Lorenz Hilpert Date: Tue, 17 Jan 2023 16:11:53 +0100 Subject: [PATCH] #3754 Lieferschein erneut drucken - CTA Fix --- apps/domain/oms/src/lib/receipt.service.ts | 11 +++++++--- ...ods-in-out-order-details-item.component.ts | 22 ++++++++++++++----- .../goods-in-out-order-details.component.ts | 18 +++++++++++++-- 3 files changed, 40 insertions(+), 11 deletions(-) diff --git a/apps/domain/oms/src/lib/receipt.service.ts b/apps/domain/oms/src/lib/receipt.service.ts index 3dedf4da0..d94fef488 100644 --- a/apps/domain/oms/src/lib/receipt.service.ts +++ b/apps/domain/oms/src/lib/receipt.service.ts @@ -1,5 +1,7 @@ import { Injectable } from '@angular/core'; import { ReceiptOrderItemSubsetReferenceValues, ReceiptService } from '@swagger/oms'; +import { memorize } from '@utils/common'; +import { shareReplay } from 'rxjs/operators'; @Injectable() export class DomainReceiptService { @@ -9,9 +11,12 @@ export class DomainReceiptService { return this.receiptService.ReceiptCreateShippingNote2(params); } + @memorize({ ttl: 1000 }) getReceipts(payload: ReceiptOrderItemSubsetReferenceValues) { - return this.receiptService.ReceiptGetReceiptsByOrderItemSubset({ - payload: payload, - }); + return this.receiptService + .ReceiptGetReceiptsByOrderItemSubset({ + payload: payload, + }) + .pipe(shareReplay(1)); } } diff --git a/apps/shared/goods-in-out/src/lib/goods-in-out-order-details/goods-in-out-order-details-item/goods-in-out-order-details-item.component.ts b/apps/shared/goods-in-out/src/lib/goods-in-out-order-details/goods-in-out-order-details-item/goods-in-out-order-details-item.component.ts index 56d807e3c..db678d7d1 100644 --- a/apps/shared/goods-in-out/src/lib/goods-in-out-order-details/goods-in-out-order-details-item/goods-in-out-order-details-item.component.ts +++ b/apps/shared/goods-in-out/src/lib/goods-in-out-order-details/goods-in-out-order-details-item/goods-in-out-order-details-item.component.ts @@ -18,6 +18,7 @@ import { OrderDTO, OrderItemListItemDTO, ReceiptDTO, ReceiptType } from '@swagge import { UiModalService } from '@ui/modal'; import { isEqual } from 'lodash'; import { combineLatest, NEVER } from 'rxjs'; +import { Observable } from 'rxjs/internal/Observable'; import { catchError, filter, first, map, switchMap, withLatestFrom } from 'rxjs/operators'; import { SharedGoodsInOutOrderDetailsStore } from '../goods-in-out-order-details.store'; @@ -159,11 +160,11 @@ export class SharedGoodsInOutOrderDetailsItemComponent extends ComponentStore - $.pipe( + loadReceipts = this.effect((done$: Observable<(receipts: ReceiptDTO[]) => void | undefined>) => + done$.pipe( withLatestFrom(this.orderItem$), filter(([_, orderItem]) => !!orderItem), - switchMap(([_, orderItem]) => + switchMap(([done, orderItem]) => this._domainReceiptService .getReceipts({ receiptType: 65 as ReceiptType, @@ -173,9 +174,18 @@ export class SharedGoodsInOutOrderDetailsItemComponent extends ComponentStore { - this.receipts = res.result.map((r) => r.item3?.data).filter((f) => !!f); + const receipts = res.result.map((r) => r.item3?.data).filter((f) => !!f); + this.receipts = receipts; + + if (typeof done === 'function') { + done?.(receipts); + } + }, + (err) => { + if (typeof done === 'function') { + done?.([]); + } }, - (err) => {}, () => {} ) ) @@ -204,7 +214,7 @@ export class SharedGoodsInOutOrderDetailsItemComponent extends ComponentStore + new Promise((resolve) => { + timeComponent.loadReceipts((r) => resolve(r)); + }) + ); + + receipts = await Promise.all(receiptsPromise).then((r) => r.flat()); + + receipts = unionBy(receipts, 'id'); + } // #2737 Bei Zubuchen kein Abholfachzettel ausdrucken let command = action.command; @@ -179,7 +193,7 @@ export class SharedGoodsInOutOrderDetailsComponent extends SharedGoodsInOutOrder compartmentCode: action.command.includes('PRINT_PRICEDIFFQRCODELABEL') && !compartmentCode ? this.orderItems[0]?.compartmentCode : compartmentCode, itemQuantity: this.getItemQuantityMap(), - receipts: this.receipts, + receipts, }; try { commandData = await this.commandService.handleCommand(command, commandData);