Merged PR 1021: #2504 AHF Remissionsvorschau

#2504 AHF Remissionsvorschau
This commit is contained in:
Nino Righi
2022-01-13 15:21:07 +00:00
committed by Lorenz Hilpert
parent f220dde3b2
commit 2ab1599fa3
25 changed files with 580 additions and 87 deletions

View File

@@ -0,0 +1,20 @@
import { Injectable } from '@angular/core';
import { DomainOmsService } from '../oms.service';
import { OrderItemListItemDTO, StatusValues } from '@swagger/oms';
import { ChangeOrderItemStatusBaseActionHandler } from './change-order-item-status-base.action-handler';
import { OrderItemsContext } from './order-items.context';
@Injectable()
export class CreateReturnItemActionHandler extends ChangeOrderItemStatusBaseActionHandler {
constructor(domainOmsService: DomainOmsService) {
super(domainOmsService, 'CREATE_RETURNITEM');
}
getStatusValues(orderItem: OrderItemListItemDTO, context: OrderItemsContext): StatusValues {
return {
processingStatus: 262144,
shippingDelayComment: context?.shippingDelayComment,
quantity: context.itemQuantity?.get(orderItem.orderItemSubsetId),
};
}
}

View File

@@ -35,4 +35,5 @@ export * from './returned-by-buyer.action-handler';
export * from './shipping-note.action-handler';
export * from './supplier-temporarily-out-of-stock.action-handler copy';
export * from './collect-on-deliverynote.action-handler';
export * from './create-returnitem.action-handler';
// end:ng42.barrel

View File

@@ -75,4 +75,12 @@ export class DomainGoodsService {
goodsInReservationList(queryToken: QueryTokenDTO) {
return this.abholfachService.AbholfachReservierungen(queryToken);
}
goodsInRemissionPreviewList() {
return this.abholfachService.AbholfachAbholfachremissionsvorschau();
}
createGoodsInRemissionFromPreviewList() {
return this.abholfachService.AbholfachCreateAbholfachremission();
}
}

View File

@@ -7,6 +7,8 @@ import { GoodsInEditModule } from './goods-in-edit';
import { GoodsInEditComponent } from './goods-in-edit/goods-in-edit.component';
import { GoodsInListComponent } from './goods-in-list/goods-in-list.component';
import { GoodsInListModule } from './goods-in-list/goods-in-list.module';
import { GoodsInRemissionPreviewComponent } from './goods-in-remission-preview/goods-in-remission-preview.component';
import { GoodsInRemissionPreviewModule } from './goods-in-remission-preview/goods-in-remission-preview.module';
import { GoodsInReservationComponent } from './goods-in-reservation/goods-in-reservation.component';
import { GoodsInReservationModule } from './goods-in-reservation/goods-in-reservation.module';
import { GoodsInSearchComponent, GoodsInSearchModule } from './goods-in-search';
@@ -33,6 +35,7 @@ const routes: Routes = [
{ path: 'list', component: GoodsInListComponent },
{ path: 'reservation', component: GoodsInReservationComponent },
{ path: 'cleanup', component: GoodsInCleanupListComponent },
{ path: 'preview', component: GoodsInRemissionPreviewComponent },
],
},
];
@@ -46,6 +49,7 @@ const routes: Routes = [
GoodsInListModule,
GoodsInCleanupListModule,
GoodsInReservationModule,
GoodsInRemissionPreviewModule,
],
exports: [RouterModule],
})

View File

@@ -1,7 +1,7 @@
<div class="header">
<div class="cleanup-headline">
<h1 class="cleanup-title">
Abholfachbereinigungsliste
Abholfachbereinigung
</h1>
<p class="cleanup-paragraph">
Bitte nehmen Sie die<br />

View File

@@ -93,7 +93,7 @@ export class GoodsInCleanupListComponent implements OnInit, OnDestroy {
async createBreadcrumb() {
await this._breadcrumb.addOrUpdateBreadcrumbIfNotExists({
key: 'goods-in',
name: 'Abholfachbereinigungsliste',
name: 'Abholfachbereinigung',
path: '/goods/in/cleanup',
section: 'branch',
tags: ['goods-in', 'cleanup'],

View File

@@ -50,15 +50,6 @@ export class GoodsInCleanupListStore extends ComponentStore<GoodsInCleanupListSt
});
}
clearResults() {
this.patchState({
fetching: false,
hits: 0,
message: undefined,
results: [],
});
}
searchRequest() {
return this._domainGoodsInService.goodsInCleanupList();
}

View File

@@ -0,0 +1,60 @@
<div class="header">
<div class="preview-headline">
<h1 class="preview-title">
Abholfachremissionsvorschau
</h1>
<p class="preview-paragraph">
Diese Artikel sind aus<br />
dem Abholfach zu remittieren
</p>
</div>
<div class="hits">{{ hits$ | async }} Titel</div>
</div>
<ui-scroll-container
*ngIf="!(listEmpty$ | async); else emptyMessage"
[loading]="loading$ | async"
[deltaEnd]="150"
[itemLength]="itemLength$ | async"
>
<shared-goods-in-out-order-group *ngFor="let bueryNumberGroup of items$ | async | groupBy: byBuyerNumberFn">
<ng-container *ngFor="let orderNumberGroup of bueryNumberGroup.items | groupBy: byOrderNumberFn; let lastOrderNumber = last">
<ng-container
*ngFor="let processingStatusGroup of orderNumberGroup.items | groupBy: byProcessingStatusFn; let lastProcessingStatus = last"
>
<ng-container
*ngFor="let compartmentCodeGroup of processingStatusGroup.items | groupBy: byCompartmentCodeFn; let lastCompartmentCode = last"
>
<shared-goods-in-out-order-group-item
*ngFor="let item of compartmentCodeGroup.items; let firstItem = first"
[item]="item"
[showCompartmentCode]="firstItem"
[showSupplier]="true"
></shared-goods-in-out-order-group-item>
<div class="divider" *ngIf="!lastCompartmentCode"></div>
</ng-container>
<div class="divider" *ngIf="!lastProcessingStatus"></div>
</ng-container>
<div class="divider" *ngIf="!lastOrderNumber"></div>
</ng-container>
</shared-goods-in-out-order-group>
</ui-scroll-container>
<ng-template #emptyMessage>
<div class="empty-message">
Es sind im Moment keine Artikel vorhanden
</div>
</ng-template>
<div class="actions">
<ng-container *ngIf="actions$ | async; let actions">
<button
[disabled]="(changeActionLoader$ | async) || (loading$ | async)"
class="cta-action cta-action-primary"
*ngFor="let action of actions"
(click)="handleAction(action)"
>
<ui-spinner [show]="(changeActionLoader$ | async) || (loading$ | async)">{{ action.label }}</ui-spinner>
</button>
</ng-container>
</div>

View File

@@ -0,0 +1,50 @@
:host {
@apply block relative;
}
.header {
@apply text-right;
.preview-headline {
@apply text-center;
margin-bottom: -16px;
.preview-title {
@apply text-2xl font-bold m-0;
}
.preview-paragraph {
@apply text-2xl m-0 mt-1;
}
}
.hits {
@apply text-active-branch mb-3 font-semibold text-base;
}
}
.empty-message {
@apply bg-white text-center font-semibold text-inactive-branch py-10 rounded-card;
}
.divider {
@apply h-px-2;
}
.actions {
@apply fixed bottom-28 inline-grid grid-flow-col gap-7;
left: 50%;
transform: translateX(-50%);
.cta-action {
@apply border-2 border-solid border-brand rounded-full py-3 px-6 font-bold text-lg outline-none self-end whitespace-nowrap no-underline;
&:disabled {
@apply bg-inactive-branch border-inactive-branch text-white;
}
}
.cta-action-primary {
@apply bg-brand text-white;
}
}

View File

@@ -0,0 +1,152 @@
import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { Breadcrumb, BreadcrumbService } from '@core/breadcrumb';
import { CommandService } from '@core/command';
import { OrderItemsContext } from '@domain/oms';
import { KeyValueDTOOfStringAndString, OrderItemListItemDTO } from '@swagger/oms';
import { UiErrorModalComponent, UiModalService } from '@ui/modal';
import { UiScrollContainerComponent } from '@ui/scroll-container';
import { BehaviorSubject, combineLatest, Subject } from 'rxjs';
import { first, map, shareReplay, takeUntil } from 'rxjs/operators';
import { GoodsInRemissionPreviewStore } from './goods-in-remission-preview.store';
import { Store } from '@ngxs/store';
import { InitRemissionState } from 'apps/sales/src/app/core/store/actions/remission.actions';
import { ResetBreadcrumbsTo } from 'apps/sales/src/app/core/store/actions/breadcrumb.actions';
@Component({
selector: 'page-goods-in-remission-preview',
templateUrl: 'goods-in-remission-preview.component.html',
styleUrls: ['goods-in-remission-preview.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
providers: [GoodsInRemissionPreviewStore],
})
export class GoodsInRemissionPreviewComponent implements OnInit, OnDestroy {
@ViewChild(UiScrollContainerComponent) scrollContainer: UiScrollContainerComponent;
private _scrollPosition: number;
items$ = this._store.results$;
itemLength$ = this.items$.pipe(map((items) => items?.length));
hits$ = this._store.hits$;
loading$ = this._store.fetching$.pipe(shareReplay());
changeActionLoader$ = new BehaviorSubject<boolean>(false);
listEmpty$ = combineLatest([this.loading$, this.hits$]).pipe(
map(([loading, hits]) => !loading && hits === 0),
shareReplay()
);
actions$ = this.items$.pipe(map((items) => items[0]?.actions));
private _onDestroy$ = new Subject<void>();
byBuyerNumberFn = (item: OrderItemListItemDTO) => item.buyerNumber;
byOrderNumberFn = (item: OrderItemListItemDTO) => item.orderNumber;
byProcessingStatusFn = (item: OrderItemListItemDTO) => item.processingStatus;
byCompartmentCodeFn = (item: OrderItemListItemDTO) => item.compartmentCode;
constructor(
private _breadcrumb: BreadcrumbService,
private _store: GoodsInRemissionPreviewStore,
private _route: ActivatedRoute,
private _router: Router,
private _commandService: CommandService,
private _modal: UiModalService,
private _ngxsStore: Store
) {}
ngOnInit(): void {
this.initInitialSearch();
this.createBreadcrumb();
}
ngOnDestroy(): void {
this._onDestroy$.next();
this._onDestroy$.complete();
this.updateBreadcrumb();
}
async createBreadcrumb() {
await this._breadcrumb.addOrUpdateBreadcrumbIfNotExists({
key: 'goods-in',
name: 'Abholfachremissionsvorschau',
path: '/goods/in/preview',
section: 'branch',
tags: ['goods-in', 'preview'],
});
}
async updateBreadcrumb() {
const crumbs = await this._breadcrumb.getBreadcrumbsByKeyAndTags$('goods-in', ['goods-in', 'preview']).pipe(first()).toPromise();
for (const crumb of crumbs) {
this._breadcrumb.patchBreadcrumb(crumb.id, {
name: crumb.name,
params: { scroll_position: this.scrollContainer?.scrollPos },
});
}
}
initInitialSearch() {
if (this._store.hits === 0) {
this._store.searchResult$.pipe(takeUntil(this._onDestroy$)).subscribe(async (result) => {
await this.createBreadcrumb();
if (this._scrollPosition) {
this.scrollContainer?.scrollTo(Number(this._scrollPosition ?? 0));
this._scrollPosition = undefined;
}
});
}
this._scrollPosition = this._route.snapshot.queryParams?.scroll_position;
this._store.search();
}
async navigateToRemission() {
this._ngxsStore.dispatch(
new ResetBreadcrumbsTo(
<Breadcrumb>{
name: 'Remission',
path: '/remission/create',
},
'remission',
true
)
);
this._ngxsStore.dispatch(new InitRemissionState());
// TODO:
// In der Remission Filter Abholfach setzen
await this._router.navigate(['/remission/create']);
}
async handleAction(action: KeyValueDTOOfStringAndString) {
this.changeActionLoader$.next(true);
const items = await this.items$.pipe(first()).toPromise();
const itemQuantity = new Map(items.map((item) => [item.orderItemSubsetId, item.quantity]));
const data: OrderItemsContext = { items, shippingDelayComment: `Aktion: ${action.label}`, itemQuantity };
try {
await this._commandService.handleCommand(action.command, data);
await this._store.createRemissionFromPreview().pipe(first()).toPromise();
await this.navigateToRemission();
} catch (error) {
this._modal.open({
content: UiErrorModalComponent,
data: error,
});
console.error(error);
}
this.changeActionLoader$.next(false);
}
}

View File

@@ -0,0 +1,16 @@
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { GoodsInOutOrderGroupModule } from '@shared/goods-in-out';
import { UiCommonModule } from '@ui/common';
import { UiScrollContainerModule } from '@ui/scroll-container';
import { UiSpinnerModule } from 'apps/ui/spinner/src/lib/ui-spinner.module';
import { GoodsInRemissionPreviewComponent } from './goods-in-remission-preview.component';
@NgModule({
imports: [CommonModule, UiCommonModule, UiScrollContainerModule, UiSpinnerModule, GoodsInOutOrderGroupModule],
exports: [GoodsInRemissionPreviewComponent],
declarations: [GoodsInRemissionPreviewComponent],
providers: [],
})
export class GoodsInRemissionPreviewModule {}

View File

@@ -0,0 +1,87 @@
import { HttpErrorResponse } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { DomainGoodsService } from '@domain/oms';
import { ComponentStore, tapResponse } from '@ngrx/component-store';
import { ListResponseArgsOfOrderItemListItemDTO, OrderItemListItemDTO } from '@swagger/oms';
import { isResponseArgs } from '@utils/object';
import { Subject } from 'rxjs';
import { switchMap, tap, withLatestFrom } from 'rxjs/operators';
export interface GoodsInRemissionPreviewState {
message?: string;
fetching: boolean;
hits: number;
results: OrderItemListItemDTO[];
}
@Injectable()
export class GoodsInRemissionPreviewStore extends ComponentStore<GoodsInRemissionPreviewState> {
get results() {
return this.get((s) => s.results);
}
readonly results$ = this.select((s) => s.results);
get hits() {
return this.get((s) => s.hits);
}
readonly hits$ = this.select((s) => s.hits);
get fetching() {
return this.get((s) => s.fetching);
}
readonly fetching$ = this.select((s) => s.fetching);
private _searchResultSubject = new Subject<ListResponseArgsOfOrderItemListItemDTO>();
readonly searchResult$ = this._searchResultSubject.asObservable();
constructor(private _domainGoodsInService: DomainGoodsService) {
super({
fetching: false,
hits: 0,
results: [],
});
}
createRemissionFromPreview() {
return this._domainGoodsInService.createGoodsInRemissionFromPreviewList();
}
searchRequest() {
return this._domainGoodsInService.goodsInRemissionPreviewList();
}
search = this.effect(($) =>
$.pipe(
tap((_) => this.patchState({ fetching: true })),
withLatestFrom(this.results$),
switchMap(([_, _results]) =>
this.searchRequest().pipe(
tapResponse(
(res) => {
this.patchState({
hits: res.hits,
results: res.result ?? [],
fetching: false,
});
this._searchResultSubject.next(res);
},
(err: Error) => {
if (err instanceof HttpErrorResponse && isResponseArgs(err.error)) {
this._searchResultSubject.next(err.error);
} else {
this._searchResultSubject.next({
error: true,
message: err.message,
});
}
this.patchState({ fetching: false });
console.error('GoodsInRemissionPreview.search()', err);
}
)
)
)
)
);
}

View File

@@ -1,8 +1,11 @@
<a class="goods-in-list-navigation" [routerLink]="['/goods/in', 'list']">
Wareneingangsliste
</a>
<a class="goods-in-list-remission-preview" [routerLink]="['/goods/in', 'preview']">
Abholfachremissionsvorschau
</a>
<a class="goods-in-list-cleanup" [routerLink]="['/goods/in', 'cleanup']">
Abholfachbereinigungsliste
Abholfachbereinigung
</a>
<a class="goods-in-list-reservation" [routerLink]="['/goods/in', 'reservation']">
Reservierungen

View File

@@ -4,12 +4,14 @@
.goods-in-list-navigation,
.goods-in-list-reservation,
.goods-in-list-cleanup {
.goods-in-list-cleanup,
.goods-in-list-remission-preview {
@apply text-center text-xl text-inactive-branch block bg-white rounded-t-card font-bold no-underline py-4;
}
.goods-in-list-reservation,
.goods-in-list-cleanup {
.goods-in-list-cleanup,
.goods-in-list-remission-preview {
@apply shadow-card;
}

View File

@@ -55,6 +55,7 @@ export class GoodsInSearchMainComponent implements OnInit, OnDestroy {
.toPromise();
const cleanupCrumbs = await this._breadcrumb.getBreadcrumbsByKeyAndTags$('goods-in', ['goods-in', 'cleanup']).pipe(first()).toPromise();
const previewCrumbs = await this._breadcrumb.getBreadcrumbsByKeyAndTags$('goods-in', ['goods-in', 'preview']).pipe(first()).toPromise();
resultCrumbs.forEach((crumb) => {
this._breadcrumb.removeBreadcrumb(crumb.id, true);
@@ -79,6 +80,10 @@ export class GoodsInSearchMainComponent implements OnInit, OnDestroy {
cleanupCrumbs.forEach((crumb) => {
this._breadcrumb.removeBreadcrumb(crumb.id, true);
});
previewCrumbs.forEach((crumb) => {
this._breadcrumb.removeBreadcrumb(crumb.id, true);
});
}
async search() {

View File

@@ -39,6 +39,7 @@ import {
SupplierTemporarilyOutOfStockActionHandler,
ReOrderedActionHandler,
CollectOnDeliveryNoteActionHandler,
CreateReturnItemActionHandler,
} from '@domain/oms';
@NgModule({
declarations: [GoodsInComponent],
@@ -81,6 +82,7 @@ import {
ShippingNoteActionHandler,
SupplierTemporarilyOutOfStockActionHandler,
CollectOnDeliveryNoteActionHandler,
CreateReturnItemActionHandler,
]),
],
exports: [GoodsInComponent],

View File

@@ -7,6 +7,10 @@ export { InputOptionsDTO } from './models/input-options-dto';
export { OptionDTO } from './models/option-dto';
export { OrderByDTO } from './models/order-by-dto';
export { ResponseArgs } from './models/response-args';
export { DialogOfString } from './models/dialog-of-string';
export { DialogSettings } from './models/dialog-settings';
export { DialogContentType } from './models/dialog-content-type';
export { KeyValueDTOOfStringAndString } from './models/key-value-dtoof-string-and-string';
export { IPublicUserInfo } from './models/ipublic-user-info';
export { ProblemDetails } from './models/problem-details';
export { ResponseArgsOfIEnumerableOfAutocompleteDTO } from './models/response-args-of-ienumerable-of-autocomplete-dto';
@@ -29,9 +33,9 @@ export { VATType } from './models/vattype';
export { Gender } from './models/gender';
export { PaymentType } from './models/payment-type';
export { PaymentStatus } from './models/payment-status';
export { KeyValueDTOOfStringAndString } from './models/key-value-dtoof-string-and-string';
export { QueryTokenDTO } from './models/query-token-dto';
export { ResponseArgsOfIEnumerableOfInputDTO } from './models/response-args-of-ienumerable-of-input-dto';
export { ResponseArgsOfInteger } from './models/response-args-of-integer';
export { ResponseArgsOfIEnumerableOfDisplayOrderDTO } from './models/response-args-of-ienumerable-of-display-order-dto';
export { DisplayOrderDTO } from './models/display-order-dto';
export { DisplayBranchDTO } from './models/display-branch-dto';
@@ -194,12 +198,12 @@ export { ReadOnlyEntityDTOOfShopItemDTOAndIShopItem } from './models/read-only-e
export { ResponseArgsOfSupplierOrderResult } from './models/response-args-of-supplier-order-result';
export { SupplierOrderResult } from './models/supplier-order-result';
export { AvailabilityDTO2 } from './models/availability-dto2';
export { RangeDTO } from './models/range-dto';
export { ResponseArgsOfIEnumerableOfOrderDTO } from './models/response-args-of-ienumerable-of-order-dto';
export { ResponseArgsOfOrderDTO } from './models/response-args-of-order-dto';
export { ListResponseArgsOfOrderListItemDTO } from './models/list-response-args-of-order-list-item-dto';
export { ResponseArgsOfIEnumerableOfOrderListItemDTO } from './models/response-args-of-ienumerable-of-order-list-item-dto';
export { OrderListItemDTO } from './models/order-list-item-dto';
export { ResponseArgsOfInteger } from './models/response-args-of-integer';
export { ResponseArgsOfBoolean } from './models/response-args-of-boolean';
export { ResponseArgsOfOrderItemDTO } from './models/response-args-of-order-item-dto';
export { ResponseArgsOfIEnumerableOfOrderItemDTO } from './models/response-args-of-ienumerable-of-order-item-dto';

View File

@@ -1,10 +1,12 @@
/* tslint:disable */
import { RangeDTO } from './range-dto';
import { PriceDTO } from './price-dto';
import { AvailabilityType } from './availability-type';
export interface AvailabilityDTO2 {
altAt?: string;
at?: string;
ean?: string;
estimatedDelivery?: RangeDTO;
isPrebooked?: boolean;
itemId?: number;
logistician?: string;

View File

@@ -0,0 +1,2 @@
/* tslint:disable */
export type DialogContentType = 0 | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128;

View File

@@ -0,0 +1,16 @@
/* tslint:disable */
import { KeyValueDTOOfStringAndString } from './key-value-dtoof-string-and-string';
import { DialogContentType } from './dialog-content-type';
import { DialogSettings } from './dialog-settings';
export interface DialogOfString {
actions?: Array<KeyValueDTOOfStringAndString>;
actionsRequired?: number;
area?: string;
content?: string;
contentType: DialogContentType;
description?: string;
displayTimeout?: number;
settings: DialogSettings;
subtitle?: string;
title?: string;
}

View File

@@ -0,0 +1,2 @@
/* tslint:disable */
export type DialogSettings = 0 | 1 | 2 | 4;

View File

@@ -0,0 +1,5 @@
/* tslint:disable */
export interface RangeDTO {
start?: string;
stop?: string;
}

View File

@@ -1,6 +1,8 @@
/* tslint:disable */
import { DialogOfString } from './dialog-of-string';
import { IPublicUserInfo } from './ipublic-user-info';
export interface ResponseArgs {
dialog?: DialogOfString;
error: boolean;
invalidProperties?: {[key: string]: string};
message?: string;

View File

@@ -13,6 +13,7 @@ import { AutocompleteTokenDTO } from '../models/autocomplete-token-dto';
import { ListResponseArgsOfOrderItemListItemDTO } from '../models/list-response-args-of-order-item-list-item-dto';
import { QueryTokenDTO } from '../models/query-token-dto';
import { ResponseArgsOfIEnumerableOfInputDTO } from '../models/response-args-of-ienumerable-of-input-dto';
import { ResponseArgsOfInteger } from '../models/response-args-of-integer';
@Injectable({
providedIn: 'root',
})
@@ -27,6 +28,8 @@ class AbholfachService extends __BaseService {
static readonly AbholfachWarenausgabeAutocompletePath = '/warenausgabe/s/complete';
static readonly AbholfachWarenausgabePath = '/warenausgabe/s';
static readonly AbholfachAbholfachbereinigungslistePath = '/abholfach/abholfachbereinigungsliste';
static readonly AbholfachAbholfachremissionsvorschauPath = '/abholfach/abholfachremissionsvorschau';
static readonly AbholfachCreateAbholfachremissionPath = '/abholfach/abholfachremission';
static readonly AbholfachReservierungenPath = '/abholfach/reservierungen';
constructor(
@@ -73,7 +76,7 @@ class AbholfachService extends __BaseService {
* Autocomplete für Wareneingang
* @param payload Suchkriterien
*/
AbholfachWareneingangAutocompleteResponse(payload: AutocompleteTokenDTO): __Observable<__StrictHttpResponse<ResponseArgsOfIEnumerableOfAutocompleteDTO>> {
AbholfachWareneingangAutocompleteResponse(payload?: AutocompleteTokenDTO): __Observable<__StrictHttpResponse<ResponseArgsOfIEnumerableOfAutocompleteDTO>> {
let __params = this.newParams();
let __headers = new HttpHeaders();
let __body: any = null;
@@ -99,7 +102,7 @@ class AbholfachService extends __BaseService {
* Autocomplete für Wareneingang
* @param payload Suchkriterien
*/
AbholfachWareneingangAutocomplete(payload: AutocompleteTokenDTO): __Observable<ResponseArgsOfIEnumerableOfAutocompleteDTO> {
AbholfachWareneingangAutocomplete(payload?: AutocompleteTokenDTO): __Observable<ResponseArgsOfIEnumerableOfAutocompleteDTO> {
return this.AbholfachWareneingangAutocompleteResponse(payload).pipe(
__map(_r => _r.body as ResponseArgsOfIEnumerableOfAutocompleteDTO)
);
@@ -109,7 +112,7 @@ class AbholfachService extends __BaseService {
* Suche nach Bestellposten für Wareneingang
* @param payload Suchkriterien
*/
AbholfachWareneingangResponse(payload: QueryTokenDTO): __Observable<__StrictHttpResponse<ListResponseArgsOfOrderItemListItemDTO>> {
AbholfachWareneingangResponse(payload?: QueryTokenDTO): __Observable<__StrictHttpResponse<ListResponseArgsOfOrderItemListItemDTO>> {
let __params = this.newParams();
let __headers = new HttpHeaders();
let __body: any = null;
@@ -135,7 +138,7 @@ class AbholfachService extends __BaseService {
* Suche nach Bestellposten für Wareneingang
* @param payload Suchkriterien
*/
AbholfachWareneingang(payload: QueryTokenDTO): __Observable<ListResponseArgsOfOrderItemListItemDTO> {
AbholfachWareneingang(payload?: QueryTokenDTO): __Observable<ListResponseArgsOfOrderItemListItemDTO> {
return this.AbholfachWareneingangResponse(payload).pipe(
__map(_r => _r.body as ListResponseArgsOfOrderItemListItemDTO)
);
@@ -280,7 +283,7 @@ class AbholfachService extends __BaseService {
* Autocomplete für Warenausgabe
* @param payload Suchkriterien
*/
AbholfachWarenausgabeAutocompleteResponse(payload: AutocompleteTokenDTO): __Observable<__StrictHttpResponse<ResponseArgsOfIEnumerableOfAutocompleteDTO>> {
AbholfachWarenausgabeAutocompleteResponse(payload?: AutocompleteTokenDTO): __Observable<__StrictHttpResponse<ResponseArgsOfIEnumerableOfAutocompleteDTO>> {
let __params = this.newParams();
let __headers = new HttpHeaders();
let __body: any = null;
@@ -306,7 +309,7 @@ class AbholfachService extends __BaseService {
* Autocomplete für Warenausgabe
* @param payload Suchkriterien
*/
AbholfachWarenausgabeAutocomplete(payload: AutocompleteTokenDTO): __Observable<ResponseArgsOfIEnumerableOfAutocompleteDTO> {
AbholfachWarenausgabeAutocomplete(payload?: AutocompleteTokenDTO): __Observable<ResponseArgsOfIEnumerableOfAutocompleteDTO> {
return this.AbholfachWarenausgabeAutocompleteResponse(payload).pipe(
__map(_r => _r.body as ResponseArgsOfIEnumerableOfAutocompleteDTO)
);
@@ -316,7 +319,7 @@ class AbholfachService extends __BaseService {
* Suche nach Bestellposten für die Warenausgabe
* @param payload Suchkriterien
*/
AbholfachWarenausgabeResponse(payload: QueryTokenDTO): __Observable<__StrictHttpResponse<ListResponseArgsOfOrderItemListItemDTO>> {
AbholfachWarenausgabeResponse(payload?: QueryTokenDTO): __Observable<__StrictHttpResponse<ListResponseArgsOfOrderItemListItemDTO>> {
let __params = this.newParams();
let __headers = new HttpHeaders();
let __body: any = null;
@@ -342,7 +345,7 @@ class AbholfachService extends __BaseService {
* Suche nach Bestellposten für die Warenausgabe
* @param payload Suchkriterien
*/
AbholfachWarenausgabe(payload: QueryTokenDTO): __Observable<ListResponseArgsOfOrderItemListItemDTO> {
AbholfachWarenausgabe(payload?: QueryTokenDTO): __Observable<ListResponseArgsOfOrderItemListItemDTO> {
return this.AbholfachWarenausgabeResponse(payload).pipe(
__map(_r => _r.body as ListResponseArgsOfOrderItemListItemDTO)
);
@@ -381,6 +384,72 @@ class AbholfachService extends __BaseService {
);
}
/**
* Abholfachremissionsvorschau
*/
AbholfachAbholfachremissionsvorschauResponse(): __Observable<__StrictHttpResponse<ListResponseArgsOfOrderItemListItemDTO>> {
let __params = this.newParams();
let __headers = new HttpHeaders();
let __body: any = null;
let req = new HttpRequest<any>(
'POST',
this.rootUrl + `/abholfach/abholfachremissionsvorschau`,
__body,
{
headers: __headers,
params: __params,
responseType: 'json'
});
return this.http.request<any>(req).pipe(
__filter(_r => _r instanceof HttpResponse),
__map((_r) => {
return _r as __StrictHttpResponse<ListResponseArgsOfOrderItemListItemDTO>;
})
);
}
/**
* Abholfachremissionsvorschau
*/
AbholfachAbholfachremissionsvorschau(): __Observable<ListResponseArgsOfOrderItemListItemDTO> {
return this.AbholfachAbholfachremissionsvorschauResponse().pipe(
__map(_r => _r.body as ListResponseArgsOfOrderItemListItemDTO)
);
}
/**
* Abholfachremittenden erzeugen
*/
AbholfachCreateAbholfachremissionResponse(): __Observable<__StrictHttpResponse<ResponseArgsOfInteger>> {
let __params = this.newParams();
let __headers = new HttpHeaders();
let __body: any = null;
let req = new HttpRequest<any>(
'POST',
this.rootUrl + `/abholfach/abholfachremission`,
__body,
{
headers: __headers,
params: __params,
responseType: 'json'
});
return this.http.request<any>(req).pipe(
__filter(_r => _r instanceof HttpResponse),
__map((_r) => {
return _r as __StrictHttpResponse<ResponseArgsOfInteger>;
})
);
}
/**
* Abholfachremittenden erzeugen
*/
AbholfachCreateAbholfachremission(): __Observable<ResponseArgsOfInteger> {
return this.AbholfachCreateAbholfachremissionResponse().pipe(
__map(_r => _r.body as ResponseArgsOfInteger)
);
}
/**
* Reservierungen
* @param payload undefined

View File

@@ -16,7 +16,6 @@ import { ResponseArgsOfOrderItemSubsetDTO } from '../models/response-args-of-ord
import { ResponseArgsOfIEnumerableOfOrderDTO } from '../models/response-args-of-ienumerable-of-order-dto';
import { ListResponseArgsOfOrderListItemDTO } from '../models/list-response-args-of-order-list-item-dto';
import { QueryTokenDTO } from '../models/query-token-dto';
import { ResponseArgsOfInteger } from '../models/response-args-of-integer';
import { ListResponseArgsOfOrderItemListItemDTO } from '../models/list-response-args-of-order-item-list-item-dto';
import { ResponseArgsOfIEnumerableOfOrderItemDTO } from '../models/response-args-of-ienumerable-of-order-item-dto';
import { OrderItemDTO } from '../models/order-item-dto';
@@ -27,6 +26,7 @@ import { ResponseArgsOfIEnumerableOfValueTupleOfOrderItemSubsetDTOAndOrderItemSu
import { ChangeStockStatusCodeValues } from '../models/change-stock-status-code-values';
import { ResponseArgsOfIEnumerableOfEntityDTOContainerOfReceiptDTO } from '../models/response-args-of-ienumerable-of-entity-dtocontainer-of-receipt-dto';
import { ListResponseArgsOfOrderItemSubsetTaskListItemDTO } from '../models/list-response-args-of-order-item-subset-task-list-item-dto';
import { ResponseArgsOfInteger } from '../models/response-args-of-integer';
import { ResponseArgsOfPayerDTO } from '../models/response-args-of-payer-dto';
import { PayerDTO } from '../models/payer-dto';
import { ResponseArgsOfShippingAddressDTO } from '../models/response-args-of-shipping-address-dto';
@@ -52,7 +52,6 @@ class OrderService extends __BaseService {
static readonly OrderGetOrdersByCompartmentPath = '/order/compartment';
static readonly OrderGetOrdersByBuyerNumberPath = '/buyer/order';
static readonly OrderQueryOrdersPath = '/order/s';
static readonly OrderRegenerateOrderItemStatusTasksPath = '/order/{orderId}/orderItem/orderItemSubset/task/regenerate';
static readonly OrderQueryOrderItemPath = '/order/item/s';
static readonly OrderGetOrderItemPath = '/order/orderitem/{orderItemId}';
static readonly OrderGetOrderItemsPath = '/order/orderitem';
@@ -66,6 +65,7 @@ class OrderService extends __BaseService {
static readonly OrderCollectOnDeliveryNotePath = '/order/orderitem/orderitemsubset/collectondeliverynote';
static readonly OrderQueryOrderItemSubsetTasksPath = '/order/item/subset/task/s';
static readonly OrderGetOrderItemSubsetTasksPath = '/order/{orderId}/item/{orderItemId}/subset/{orderItemSubsetId}/task';
static readonly OrderRegenerateOrderItemStatusTasksPath = '/order/{orderId}/orderItem/orderItemSubset/task/regenerate';
static readonly OrderGetPayerPath = '/order/payer/{payerId}';
static readonly OrderUpdatePayerPath = '/order/{orderId}/payer/{payerId}';
static readonly OrderGetShippingAddressPath = '/order/shippingaddress/{shippingAddressId}';
@@ -476,51 +476,6 @@ class OrderService extends __BaseService {
);
}
/**
* Letzte Aufgaben erneut erzeugen
* @param params The `OrderService.OrderRegenerateOrderItemStatusTasksParams` containing the following parameters:
*
* - `orderId`: Bestellung PK
*
* - `taskTypes`: Aufgaben-Arten
*/
OrderRegenerateOrderItemStatusTasksResponse(params: OrderService.OrderRegenerateOrderItemStatusTasksParams): __Observable<__StrictHttpResponse<ResponseArgsOfInteger>> {
let __params = this.newParams();
let __headers = new HttpHeaders();
let __body: any = null;
__body = params.taskTypes;
let req = new HttpRequest<any>(
'POST',
this.rootUrl + `/order/${encodeURIComponent(String(params.orderId))}/orderItem/orderItemSubset/task/regenerate`,
__body,
{
headers: __headers,
params: __params,
responseType: 'json'
});
return this.http.request<any>(req).pipe(
__filter(_r => _r instanceof HttpResponse),
__map((_r) => {
return _r as __StrictHttpResponse<ResponseArgsOfInteger>;
})
);
}
/**
* Letzte Aufgaben erneut erzeugen
* @param params The `OrderService.OrderRegenerateOrderItemStatusTasksParams` containing the following parameters:
*
* - `orderId`: Bestellung PK
*
* - `taskTypes`: Aufgaben-Arten
*/
OrderRegenerateOrderItemStatusTasks(params: OrderService.OrderRegenerateOrderItemStatusTasksParams): __Observable<ResponseArgsOfInteger> {
return this.OrderRegenerateOrderItemStatusTasksResponse(params).pipe(
__map(_r => _r.body as ResponseArgsOfInteger)
);
}
/**
* @param queryToken undefined
*/
@@ -1066,6 +1021,49 @@ class OrderService extends __BaseService {
);
}
/**
* @param params The `OrderService.OrderRegenerateOrderItemStatusTasksParams` containing the following parameters:
*
* - `orderId`:
*
* - `taskTypes`:
*/
OrderRegenerateOrderItemStatusTasksResponse(params: OrderService.OrderRegenerateOrderItemStatusTasksParams): __Observable<__StrictHttpResponse<ResponseArgsOfInteger>> {
let __params = this.newParams();
let __headers = new HttpHeaders();
let __body: any = null;
__body = params.taskTypes;
let req = new HttpRequest<any>(
'POST',
this.rootUrl + `/order/${encodeURIComponent(String(params.orderId))}/orderItem/orderItemSubset/task/regenerate`,
__body,
{
headers: __headers,
params: __params,
responseType: 'json'
});
return this.http.request<any>(req).pipe(
__filter(_r => _r instanceof HttpResponse),
__map((_r) => {
return _r as __StrictHttpResponse<ResponseArgsOfInteger>;
})
);
}
/**
* @param params The `OrderService.OrderRegenerateOrderItemStatusTasksParams` containing the following parameters:
*
* - `orderId`:
*
* - `taskTypes`:
*/
OrderRegenerateOrderItemStatusTasks(params: OrderService.OrderRegenerateOrderItemStatusTasksParams): __Observable<ResponseArgsOfInteger> {
return this.OrderRegenerateOrderItemStatusTasksResponse(params).pipe(
__map(_r => _r.body as ResponseArgsOfInteger)
);
}
/**
* @param payerId undefined
*/
@@ -1619,22 +1617,6 @@ module OrderService {
buyerNumber?: null | string;
}
/**
* Parameters for OrderRegenerateOrderItemStatusTasks
*/
export interface OrderRegenerateOrderItemStatusTasksParams {
/**
* Bestellung PK
*/
orderId: number;
/**
* Aufgaben-Arten
*/
taskTypes?: Array<string>;
}
/**
* Parameters for OrderUpdateOrderItem
*/
@@ -1699,6 +1681,14 @@ module OrderService {
completed?: null | string;
}
/**
* Parameters for OrderRegenerateOrderItemStatusTasks
*/
export interface OrderRegenerateOrderItemStatusTasksParams {
orderId: number;
taskTypes?: Array<string>;
}
/**
* Parameters for OrderUpdatePayer
*/