From cc667c13bb204547b1a034849780e8fe44cff252 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Thu, 17 Sep 2020 21:07:52 +0200 Subject: [PATCH] #913 Hide Deleted Shipping Documents + Update Logic On Which Shipping Document to Display for a Given Remission --- .../rest/rest-remission-products.service.ts | 2 +- .../lib/services/rest-remission.service.ts | 40 ++++--- .../remissions-overview-card.component.html | 19 ++- .../remissions-overview-card.component.ts | 35 ++++-- .../remission-details.component.html | 112 +++++++++++------- .../remission-details.component.ts | 21 ++++ .../remissions-overview.component.html | 6 +- .../remissions-overview.component.ts | 16 ++- .../app/pipes/package-number-parser.pipe.ts | 3 + ...shipping-document-number-formatter.pipe.ts | 3 + 10 files changed, 184 insertions(+), 73 deletions(-) diff --git a/apps/isa/remission/src/lib/rest/rest-remission-products.service.ts b/apps/isa/remission/src/lib/rest/rest-remission-products.service.ts index 1ff2d17b4..3416dc43f 100644 --- a/apps/isa/remission/src/lib/rest/rest-remission-products.service.ts +++ b/apps/isa/remission/src/lib/rest/rest-remission-products.service.ts @@ -203,7 +203,7 @@ export class RestRemissionProductsService { ) ); - allProducts$ = combineLatest(regularProducts$, priorityItems$).pipe( + allProducts$ = combineLatest([regularProducts$, priorityItems$]).pipe( map(([regular, priority]) => ({ skip: regular.skip, take: regular.take, diff --git a/apps/isa/remission/src/lib/services/rest-remission.service.ts b/apps/isa/remission/src/lib/services/rest-remission.service.ts index a4303871e..6be671199 100644 --- a/apps/isa/remission/src/lib/services/rest-remission.service.ts +++ b/apps/isa/remission/src/lib/services/rest-remission.service.ts @@ -1382,7 +1382,19 @@ export class RestRemissionService extends RemissionService { stockId: stock.id, queryToken: queryTokenOpen, }) - .pipe(map((response) => response.result)); + .pipe( + map((response) => response.result), + map((returns) => + returns.filter( + (r) => + !r.receipts.every( + (receipt) => + (receipt.data && receipt.data.status === 4) || + receipt.data.completed + ) + ) + ) + ); const completedReturns$: Observable = this.returnApi .queryReturns({ stockId: stock.id, @@ -1399,21 +1411,17 @@ export class RestRemissionService extends RemissionService { } return forkJoin([openReturns$, completedReturns$]).pipe( - map(([openReturns, completedReturns]: [ReturnDTO[], ReturnDTO[]]) => [ - ...openReturns, - ...completedReturns, - ]) + map(([openReturns, completedReturns]: [ReturnDTO[], ReturnDTO[]]) => { + const openReturnIds = openReturns.map((r) => r.id); + return [ + ...openReturns, + ...completedReturns.filter( + (completedReturn) => !openReturnIds.includes(completedReturn.id) + ), + ]; + }) ); }), - map((returns) => - returns.reduce( - (acc: ReturnDTO[], curr: ReturnDTO) => - acc.find((r) => r.returnNumber === curr.returnNumber) - ? [...acc] - : [...acc, curr], - [] - ) - ), withLatestFrom(this.stock$, this.targets$), mergeMap(([result, stock, targets]) => { if (!result.length) { @@ -1488,8 +1496,8 @@ export class RestRemissionService extends RemissionService { remissions.filter( (remission) => !!remission.id && - !!remission.shippingDocuments[0] && - !remission.shippingDocuments[0].isDeleted + !!remission.shippingDocuments && + !remission.shippingDocuments.every((document) => document.isDeleted) ) ), tap((remissions: RemissionProcess[]) => diff --git a/apps/sales/src/app/modules/remission/components/remissions-overview-card/remissions-overview-card.component.html b/apps/sales/src/app/modules/remission/components/remissions-overview-card/remissions-overview-card.component.html index bc93e096a..e9cc2aecc 100644 --- a/apps/sales/src/app/modules/remission/components/remissions-overview-card/remissions-overview-card.component.html +++ b/apps/sales/src/app/modules/remission/components/remissions-overview-card/remissions-overview-card.component.html @@ -1,8 +1,21 @@ -
+
- -
#{{ shippingDocumentNumber | shippingDocumentNumberFormatter | packageNumberParser }}
+ +
+ #{{ + shippingDocumentNumber + | shippingDocumentNumberFormatter + | packageNumberParser + }} +
(); + get shippingDocument(): ShippingDocument { + return ( + (this.remissionProcess.shippingDocuments && + this.remissionProcess.shippingDocuments.find( + (sd) => !sd.isCompleted + )) || + this.remissionProcess.shippingDocuments[0] + ); + } + constructor() {} ngOnInit() {} @@ -26,7 +43,7 @@ export class RemissionsOverviewCardComponent implements OnInit { } private shippingDocumentExists(remissionProcess: RemissionProcess): boolean { - return !!remissionProcess.shippingDocuments && !!remissionProcess.shippingDocuments[0]; + return !!remissionProcess.shippingDocuments && !!this.shippingDocument; } get shippingDocumentId() { @@ -34,7 +51,7 @@ export class RemissionsOverviewCardComponent implements OnInit { return null; } - return this.remissionProcess.shippingDocuments[0].id; + return this.shippingDocument.id; } get shippingDocumentIsCompleted() { @@ -42,7 +59,7 @@ export class RemissionsOverviewCardComponent implements OnInit { return false; } - return this.remissionProcess.shippingDocuments[0].isCompleted; + return this.shippingDocument.isCompleted; } get numberOfShippingDocumentProducts() { @@ -50,7 +67,9 @@ export class RemissionsOverviewCardComponent implements OnInit { return 0; } - return this.remissionProcess.shippingDocuments[0].products.length; + return this.shippingDocument.products + ? this.shippingDocument.products.length + : 0; } get shippingDocumentNumber() { @@ -58,7 +77,7 @@ export class RemissionsOverviewCardComponent implements OnInit { return null; } - return this.remissionProcess.shippingDocuments[0].shippingDocumentNumber; + return this.shippingDocument.shippingDocumentNumber; } get packageNumber() { @@ -66,6 +85,6 @@ export class RemissionsOverviewCardComponent implements OnInit { return null; } - return this.remissionProcess.shippingDocuments[0].packageNumber; + return this.shippingDocument.packageNumber; } } diff --git a/apps/sales/src/app/modules/remission/pages/remission-details/remission-details.component.html b/apps/sales/src/app/modules/remission/pages/remission-details/remission-details.component.html index 15b0f55a7..dc3876f9f 100644 --- a/apps/sales/src/app/modules/remission/pages/remission-details/remission-details.component.html +++ b/apps/sales/src/app/modules/remission/pages/remission-details/remission-details.component.html @@ -1,53 +1,85 @@ -
-
-
- -
- Löschen +
+ +
+
+ +
+ Löschen +
+ +
+ Drucken +
+
+ +
+
Warenbegleitschein
+
+ #{{ + remissionProcess.shippingDocuments[0].shippingDocumentNumber + | shippingDocumentNumberFormatter + | packageNumberParser + }} +
-
- Drucken -
- - -
-
Warenbegleitschein
-
- #{{ remissionProcess.shippingDocuments[0].shippingDocumentNumber | shippingDocumentNumberFormatter | packageNumberParser }} -
+
- -
-
-
-
- +
+
+ +
-
- + +
- + { + return this.getShippingDocumentId().pipe( + switchMap((id) => + this.getRemissionProcess().pipe( + map((remission) => { + return remission.shippingDocuments.find( + (document) => document.id === id + ); + }) + ) + ) + ); + } + + get shippingDocumentCompleted$(): Observable { + return this.shippingDocument$.pipe( + map((document) => document.isCompleted || document.isDeleted) + ); + } + constructor( private activatedRoute: ActivatedRoute, private store: Store, diff --git a/apps/sales/src/app/modules/remission/pages/remissions-overview/remissions-overview.component.html b/apps/sales/src/app/modules/remission/pages/remissions-overview/remissions-overview.component.html index 7d668a1f7..42fd25115 100644 --- a/apps/sales/src/app/modules/remission/pages/remissions-overview/remissions-overview.component.html +++ b/apps/sales/src/app/modules/remission/pages/remissions-overview/remissions-overview.component.html @@ -1,6 +1,10 @@
- +
Warenbegleitscheine
diff --git a/apps/sales/src/app/modules/remission/pages/remissions-overview/remissions-overview.component.ts b/apps/sales/src/app/modules/remission/pages/remissions-overview/remissions-overview.component.ts index 2565969cb..d8898b48f 100644 --- a/apps/sales/src/app/modules/remission/pages/remissions-overview/remissions-overview.component.ts +++ b/apps/sales/src/app/modules/remission/pages/remissions-overview/remissions-overview.component.ts @@ -61,6 +61,14 @@ export class RemissionsOverviewComponent implements OnInit, OnDestroy { .subscribe(this.openDetailsPage); } + private getShippingDocument(remission: RemissionProcess) { + return ( + (remission.shippingDocuments && + remission.shippingDocuments.find((sd) => !sd.isCompleted)) || + remission.shippingDocuments[0] + ); + } + private openDetailsPage = (remissionProcess: RemissionProcess) => { const shippingDocumentId = this.getShippingDocumentId(remissionProcess); const shippingDocumentNumber = this.getShippingDocumentNumber( @@ -121,19 +129,19 @@ export class RemissionsOverviewComponent implements OnInit, OnDestroy { }; private getShippingDocumentId = (remissionProcess: RemissionProcess) => { - if (!remissionProcess.shippingDocuments[0]) { + if (!this.getShippingDocument(remissionProcess)) { return null; } - return remissionProcess.shippingDocuments[0].id; + return this.getShippingDocument(remissionProcess).id; }; private getShippingDocumentNumber = (remissionProcess: RemissionProcess) => { - if (!remissionProcess.shippingDocuments[0]) { + if (this.getShippingDocument(remissionProcess)) { return null; } - return remissionProcess.shippingDocuments[0].shippingDocumentNumber; + return this.getShippingDocument(remissionProcess).shippingDocumentNumber; }; private getFormattedShippingDocumentNumber( diff --git a/apps/sales/src/app/pipes/package-number-parser.pipe.ts b/apps/sales/src/app/pipes/package-number-parser.pipe.ts index 92c6725b2..d98d6f810 100644 --- a/apps/sales/src/app/pipes/package-number-parser.pipe.ts +++ b/apps/sales/src/app/pipes/package-number-parser.pipe.ts @@ -5,6 +5,9 @@ import { Pipe, PipeTransform } from '@angular/core'; }) export class PackageNumberParserPipe implements PipeTransform { transform(packageNumber: string): string { + if (!packageNumber) { + return ''; + } if (packageNumber.length !== 18) { return packageNumber; } diff --git a/apps/sales/src/app/pipes/shipping-document-number-formatter.pipe.ts b/apps/sales/src/app/pipes/shipping-document-number-formatter.pipe.ts index f8aea2ac4..d1dd267d8 100644 --- a/apps/sales/src/app/pipes/shipping-document-number-formatter.pipe.ts +++ b/apps/sales/src/app/pipes/shipping-document-number-formatter.pipe.ts @@ -5,6 +5,9 @@ import { Pipe, PipeTransform } from '@angular/core'; }) export class ShippingDocumentNumberFormatterPipe implements PipeTransform { transform(shippingDocumentNumber: string): string { + if (!shippingDocumentNumber) { + return ''; + } if (shippingDocumentNumber.length <= 18) { return shippingDocumentNumber; }