import { z } from 'zod';
import { OrderItemListItemSchema } from './order-item-list-item.schema';
import { OrderItemTypeSchema } from './order-item-type.schema';

/**
 * DBH Order Item List Item DTO schema
 * Extends OrderItemListItem with additional DBH-specific fields
 */
export const DBHOrderItemListItemSchema = OrderItemListItemSchema.extend({
  billingZipCode: z.string().describe('Rechnungs-PLZ').optional(),
  externalRepositories: z.string().describe('Externe Lager').optional(),
  fetchOnDeliveryNote: z
    .boolean()
    .describe('Auf Lieferschein holen')
    .optional(),
  invoiceId: z.number().describe('Rechnung ID').optional(),
  logisticianId: z.number().describe('Logistiker ID').optional(),
  logisticianName: z.string().describe('Logistiker Name').optional(),
  orderItemType: OrderItemTypeSchema.describe('Bestellposten-Typ').optional(),
  orderedAtSupplier: z
    .string()
    .describe('Beim Lieferanten bestellt am')
    .optional(),
  payerId: z.number().describe('Zahler ID').optional(),
  paymentReferenceNumber: z
    .string()
    .describe('Zahlungsreferenznummer')
    .optional(),
  shippingNoteId: z.number().describe('Versandschein ID').optional(),
});

export type DBHOrderItemListItem = z.infer<typeof DBHOrderItemListItemSchema>;
