import { AptlyQuantityUnitCode } from '../enums/index.js'; import { AptlyAllowance, AptlyExtensionAmount, AptlyPrice, AptlyAllowanceChargeItemSchema } from './algorithm.js'; import { AptlyBaseSchema } from './extends.js'; import { AptlyItemSchema, AptlyItemType } from './item.js'; import { AptlyMediaSrcSchema } from './media.js'; import { AptlyOfferSchema } from './offer.js'; import { AptlyOrganizationSchema } from './organization.js'; import { AptlyPeriodSchema } from './period.js'; import { AptlyProducerSchema } from './producer.js'; import { AptlyProductSchema } from './product.js'; import { AptlyProjectSchema } from './project.js'; import { AptlyCategorySchema } from './category.js'; import { AptlyUnitSchema } from './unit.js'; import { AptlyDocumentSchema } from './document'; import { AptlyDatabase } from '../enums'; import { AptlyWholesalerSchema } from './wholesaler.js'; export type AptlyOption = AptlyOptionSchema; export interface AptlyOptionSchema extends AptlyBaseSchema { organization: ID | AptlyOrganizationSchema | null; project: ID | AptlyProjectSchema | null; unit: ID | AptlyUnitSchema | null; product: ID | AptlyProductSchema | null; offer: ID | AptlyOfferSchema | null; category: ID | AptlyCategorySchema | null; package: ID | null; option: ID | AptlyOptionSchema | null; period: ID | AptlyPeriodSchema | null; thumbnail: AptlyMediaSrcSchema | null; variants: (ID | AptlyOptionSchema)[]; products: (ID | AptlyProductSchema)[]; lines: AptlyOptionLineSchema[]; documents: (ID | AptlyDocumentSchema)[]; producer: ID | AptlyProducerSchema | null; tags: string[]; title: string; description: string; database: AptlyDatabase; identification: string; note: string; index: number; type: AptlyItemType; baseQuantity?: number; quantity?: number; quantityUnitCode: AptlyQuantityUnitCode; quantityCategory: ID | AptlyCategorySchema | null; quantityCategoryKey?: string; wholesaler: ID | AptlyWholesalerSchema | null; amount: number; priceAmount?: number | null; algorithm: ID | null; isTotalSum: boolean; amountCategory: ID | AptlyCategorySchema | null; amountCategoryKey?: string; allowance?: AptlyAllowance | null; allowanceCharge: AptlyAllowanceChargeItemSchema[]; } export declare enum AptlyOptionIdentificationSource { Unknown = "", EFO = "efo", NRF = "nrf", Nobb = "nobb", Producer = "producer" } export type AptlyOptionLine = AptlyOptionLineSchema; export interface AptlyOptionLineSchema { _id: ID; option: ID | AptlyOptionSchema | null; product: ID | AptlyProductSchema | null; quantity: number; } export type AptlyOptionPopulated = AptlyOptionPopulatedSchema; export interface AptlyOptionPopulatedSchema extends Omit, 'product'>, AptlyExtensionAmount { invoicedQuantity: number; item: AptlyItemSchema; price: AptlyPrice; quantityCategory: AptlyCategorySchema | null; amountCategory: AptlyCategorySchema | null; period: AptlyPeriodSchema | null; product: AptlyProductSchema | null; } export interface AptlyOptionImportBody { action: 'add' | 'edit'; noErrorOnDuplicate?: boolean; noErrorOnProductNotFound?: boolean; options?: Partial[]; } export interface AptlyOptionPostBody extends AptlyOptionSchema { __amount?: string; productNumber?: string | null; }