mirror of
https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend
synced 2025-12-28 22:42:11 +01:00
Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop
This commit is contained in:
@@ -2,6 +2,7 @@ export * from './lib/return-details-data/return-details-data.component';
|
||||
export * from './lib/return-details-header/return-details-header.component';
|
||||
export * from './lib/return-details-order-group/return-details-order-group.component';
|
||||
export * from './lib/return-details-order-group-item/return-details-order-group-item.component';
|
||||
export * from './lib/return-details-order-group-data/return-details-order-group-data.component';
|
||||
export * from './lib/return-results-item-list/';
|
||||
export * from './lib/return-order-by-list/';
|
||||
export * from './lib/return-results-filter-list/';
|
||||
|
||||
@@ -13,7 +13,3 @@
|
||||
gap: 1rem;
|
||||
align-self: stretch;
|
||||
}
|
||||
|
||||
ui-item-row-data-label {
|
||||
width: 14.5rem;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
<ui-item-row-data>
|
||||
<ui-item-row-data-row>
|
||||
<ui-item-row-data-label>Belegdatum:</ui-item-row-data-label>
|
||||
<ui-item-row-data-value> </ui-item-row-data-value>
|
||||
<ui-item-row-data-value>
|
||||
{{ receipt().printedDate | date }}
|
||||
</ui-item-row-data-value>
|
||||
</ui-item-row-data-row>
|
||||
<ui-item-row-data-row>
|
||||
<ui-item-row-data-label>Belegart:</ui-item-row-data-label>
|
||||
@@ -11,18 +13,35 @@
|
||||
</ui-item-row-data-row>
|
||||
<ui-item-row-data-row>
|
||||
<ui-item-row-data-label>Vorgangs-ID:</ui-item-row-data-label>
|
||||
<ui-item-row-data-value> </ui-item-row-data-value>
|
||||
<ui-item-row-data-value>
|
||||
{{ receipt().order?.data?.orderNumber }}
|
||||
</ui-item-row-data-value>
|
||||
</ui-item-row-data-row>
|
||||
<ui-item-row-data-row>
|
||||
<ui-item-row-data-label>Bestelldatum:</ui-item-row-data-label>
|
||||
<ui-item-row-data-value> </ui-item-row-data-value>
|
||||
</ui-item-row-data-row>
|
||||
<ui-item-row-data-row>
|
||||
<ui-item-row-data-label>Anschrift:</ui-item-row-data-label>
|
||||
<ui-item-row-data-value> </ui-item-row-data-value>
|
||||
</ui-item-row-data-row>
|
||||
<ui-item-row-data-row>
|
||||
<ui-item-row-data-label>Lieferanschrift:</ui-item-row-data-label>
|
||||
<ui-item-row-data-value> </ui-item-row-data-value>
|
||||
<ui-item-row-data-value>
|
||||
{{ receipt().order?.data?.orderDate | date }}
|
||||
</ui-item-row-data-value>
|
||||
</ui-item-row-data-row>
|
||||
@if (receipt().buyer?.address; as address) {
|
||||
<ui-item-row-data-row>
|
||||
<ui-item-row-data-label>Anschrift:</ui-item-row-data-label>
|
||||
<ui-item-row-data-value>
|
||||
<div>{{ buyerName() }}</div>
|
||||
<div>{{ address.street }} {{ address.streetNumber }}</div>
|
||||
<div>{{ address.zipCode }} {{ address.city }}</div>
|
||||
</ui-item-row-data-value>
|
||||
</ui-item-row-data-row>
|
||||
}
|
||||
|
||||
@if (receipt().shipping.address; as address) {
|
||||
<ui-item-row-data-row>
|
||||
<ui-item-row-data-label>Lieferanschrift:</ui-item-row-data-label>
|
||||
<ui-item-row-data-value>
|
||||
<div>{{ shippingName() }}</div>
|
||||
<div>{{ address.street }} {{ address.streetNumber }}</div>
|
||||
<div>{{ address.zipCode }} {{ address.city }}</div>
|
||||
</ui-item-row-data-value>
|
||||
</ui-item-row-data-row>
|
||||
}
|
||||
</ui-item-row-data>
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
ui-item-row-data-label {
|
||||
width: 14.5rem;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { ChangeDetectionStrategy, Component, input } from '@angular/core';
|
||||
import { DatePipe } from '@angular/common';
|
||||
import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
|
||||
import { Receipt } from '@feature/return/services';
|
||||
import { ReceiptTypeTranslationPipe } from '@isa/oms/utils/translation';
|
||||
import { ItemRowDataImports } from '@isa/ui/item-rows';
|
||||
@@ -9,8 +10,20 @@ import { ItemRowDataImports } from '@isa/ui/item-rows';
|
||||
styleUrls: ['./return-details-order-group-data.component.scss'],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
standalone: true,
|
||||
imports: [ItemRowDataImports, ReceiptTypeTranslationPipe],
|
||||
imports: [ItemRowDataImports, ReceiptTypeTranslationPipe, DatePipe],
|
||||
})
|
||||
export class ReturnDetailsOrderGroupDataComponent {
|
||||
receipt = input.required<Receipt>();
|
||||
|
||||
buyerName = computed(() => {
|
||||
const receipt = this.receipt();
|
||||
return [receipt.buyer?.firstName, receipt.buyer?.lastName].filter(Boolean).join(' ');
|
||||
});
|
||||
|
||||
shippingName = computed(() => {
|
||||
const receipt = this.receipt();
|
||||
return [receipt.shipping?.person?.firstName, receipt.shipping?.person?.lastName]
|
||||
.filter(Boolean)
|
||||
.join(' ');
|
||||
});
|
||||
}
|
||||
|
||||
@@ -2,7 +2,39 @@
|
||||
|
||||
@if (receipt) {
|
||||
<lib-return-details-header [buyer]="receipt.buyer"></lib-return-details-header>
|
||||
<lib-return-details-data [receipt]="receipt"></lib-return-details-data>
|
||||
|
||||
<div class="flex flex-col gap-3 justify-start items-start w-full">
|
||||
<lib-return-details-data [receipt]="receipt"></lib-return-details-data>
|
||||
@if (showMore()) {
|
||||
<lib-return-details-order-group-data
|
||||
[receipt]="receipt"
|
||||
></lib-return-details-order-group-data>
|
||||
<button
|
||||
class="-ml-3"
|
||||
uiTextButton
|
||||
type="button"
|
||||
color="strong"
|
||||
size="small"
|
||||
(click)="showMore.set(false)"
|
||||
>
|
||||
<ng-icon name="isaActionMinus"></ng-icon>
|
||||
Weniger anzeigen
|
||||
</button>
|
||||
} @else {
|
||||
<button
|
||||
class="-ml-3"
|
||||
uiTextButton
|
||||
type="button"
|
||||
color="strong"
|
||||
size="small"
|
||||
(click)="showMore.set(true)"
|
||||
>
|
||||
<ng-icon name="isaActionPlus"></ng-icon>
|
||||
Mehr anzeigen
|
||||
</button>
|
||||
}
|
||||
</div>
|
||||
|
||||
<lib-return-details-order-group [items]="receipt.items"></lib-return-details-order-group>
|
||||
@for (item of receipt.items; track item.id) {
|
||||
<lib-return-details-order-group-item [item]="item.data"></lib-return-details-order-group-item>
|
||||
|
||||
@@ -4,6 +4,7 @@ import {
|
||||
computed,
|
||||
effect,
|
||||
inject,
|
||||
signal,
|
||||
untracked,
|
||||
} from '@angular/core';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
@@ -12,11 +13,14 @@ import {
|
||||
ReturnDetailsDataComponent,
|
||||
ReturnDetailsHeaderComponent,
|
||||
ReturnDetailsOrderGroupComponent,
|
||||
ReturnDetailsOrderGroupDataComponent,
|
||||
ReturnDetailsOrderGroupItemComponent,
|
||||
} from '@feature/return/containers';
|
||||
import { z } from 'zod';
|
||||
import { ReceiptItem, ReturnDetailsStore } from '@feature/return/services';
|
||||
import { Dictionary, groupBy } from 'lodash';
|
||||
import { ReturnDetailsStore } from '@feature/return/services';
|
||||
import { NgIconComponent, provideIcons } from '@ng-icons/core';
|
||||
import { isaActionPlus, isaActionMinus } from '@isa/icons';
|
||||
import { TextButtonComponent } from '@isa/ui/buttons';
|
||||
|
||||
@Component({
|
||||
selector: 'lib-return-details-page',
|
||||
@@ -25,15 +29,21 @@ import { Dictionary, groupBy } from 'lodash';
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
standalone: true,
|
||||
imports: [
|
||||
NgIconComponent,
|
||||
TextButtonComponent,
|
||||
ReturnDetailsHeaderComponent,
|
||||
ReturnDetailsDataComponent,
|
||||
ReturnDetailsOrderGroupComponent,
|
||||
ReturnDetailsOrderGroupItemComponent,
|
||||
ReturnDetailsOrderGroupDataComponent,
|
||||
],
|
||||
providers: [provideIcons({ isaActionPlus, isaActionMinus })],
|
||||
})
|
||||
export class DetailsPageComponent {
|
||||
private _params = toSignal(inject(ActivatedRoute).params);
|
||||
|
||||
showMore = signal(false);
|
||||
|
||||
#returnDetailsStore = inject(ReturnDetailsStore);
|
||||
|
||||
itemId = computed<number>(() => {
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
import { z } from 'zod';
|
||||
import { AddressSchema } from './address.schema';
|
||||
import { CommunicationDetailsSchema } from './communication-details.schemas';
|
||||
import { OrganisationSchema } from './receipt-list-item.schema';
|
||||
import { GenderSchema } from './gender.schema';
|
||||
|
||||
export const AddresseeSchema = z.object({
|
||||
address: AddressSchema.optional(),
|
||||
communicationDetails: CommunicationDetailsSchema.optional(),
|
||||
firstName: z.string().optional(),
|
||||
lastName: z.string().optional(),
|
||||
locale: z.string().optional(),
|
||||
organisation: OrganisationSchema.optional(),
|
||||
title: z.string().optional(),
|
||||
gender: GenderSchema.optional(),
|
||||
});
|
||||
@@ -1,10 +1,6 @@
|
||||
import { z } from 'zod';
|
||||
import { CommunicationDetailsSchema } from './communication-details.schemas';
|
||||
import { AddresseeSchema } from './addressee.schema';
|
||||
|
||||
export const BuyerSchema = z.object({
|
||||
firstName: z.string(),
|
||||
lastName: z.string(),
|
||||
communicationDetails: CommunicationDetailsSchema,
|
||||
});
|
||||
export const BuyerSchema = AddresseeSchema.extend({});
|
||||
|
||||
export type Buyer = z.infer<typeof BuyerSchema>;
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
export enum Gender {
|
||||
NotSet = 0,
|
||||
Neutrum = 1,
|
||||
Male = 2,
|
||||
Female = 4,
|
||||
}
|
||||
|
||||
export const GenderSchema = z.nativeEnum(Gender);
|
||||
@@ -1,3 +1,7 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
export const OrderSchema = z.object({});
|
||||
export const OrderSchema = z.object({
|
||||
id: z.number(),
|
||||
orderNumber: z.string(),
|
||||
orderDate: z.coerce.date(),
|
||||
});
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
import { z } from 'zod';
|
||||
import { AddresseeSchema } from './addressee.schema';
|
||||
|
||||
export const Payer2Schema = z.object({});
|
||||
export const Payer2Schema = AddresseeSchema.extend({});
|
||||
|
||||
@@ -3,12 +3,20 @@ import { BuyerSchema } from './buyer.schema';
|
||||
import { EntityContainer } from '@isa/common/result';
|
||||
import { ReceiptItemSchema } from './receipt-item.schema';
|
||||
import { ReceiptTypeSchema } from './receipt-type.schema';
|
||||
import { OrderSchema } from './order.schema';
|
||||
import { Payer2Schema } from './payer-2.schema';
|
||||
import { ShippingAddress2Schema } from './shipping-address-2.schema';
|
||||
|
||||
export const ReceiptSchema = z.object({
|
||||
id: z.number(),
|
||||
receiptType: ReceiptTypeSchema,
|
||||
buyer: BuyerSchema,
|
||||
items: EntityContainer(ReceiptItemSchema).array(),
|
||||
printedDate: z.coerce.date(),
|
||||
receiptNumber: z.string(),
|
||||
order: EntityContainer(OrderSchema),
|
||||
billing: Payer2Schema,
|
||||
shipping: ShippingAddress2Schema,
|
||||
});
|
||||
|
||||
export type Receipt = z.infer<typeof ReceiptSchema>;
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
import { z } from 'zod';
|
||||
import { AddresseeSchema } from './receipt-list-item.schema';
|
||||
|
||||
export const ShippingAddress2Schema = z.object({});
|
||||
export const ShippingAddress2Schema = AddresseeSchema.extend({});
|
||||
|
||||
Reference in New Issue
Block a user