UNPKG

@aptly-as/types

Version:
91 lines (90 loc) 3.83 kB
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<string, string>; export interface AptlyOptionSchema<ID, DATE> extends AptlyBaseSchema<ID, DATE> { organization: ID | AptlyOrganizationSchema<ID, DATE> | null; project: ID | AptlyProjectSchema<ID, DATE> | null; unit: ID | AptlyUnitSchema<ID, DATE> | null; product: ID | AptlyProductSchema<ID, DATE> | null; offer: ID | AptlyOfferSchema<ID, DATE> | null; category: ID | AptlyCategorySchema<ID, DATE> | null; package: ID | null; option: ID | AptlyOptionSchema<ID, DATE> | null; period: ID | AptlyPeriodSchema<ID, DATE> | null; thumbnail: AptlyMediaSrcSchema<ID, DATE> | null; variants: (ID | AptlyOptionSchema<ID, DATE>)[]; products: (ID | AptlyProductSchema<ID, DATE>)[]; lines: AptlyOptionLineSchema<ID, DATE>[]; documents: (ID | AptlyDocumentSchema<ID, DATE>)[]; producer: ID | AptlyProducerSchema<ID, DATE> | 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<ID, DATE> | null; quantityCategoryKey?: string; wholesaler: ID | AptlyWholesalerSchema<ID, DATE> | null; amount: number; priceAmount?: number | null; algorithm: ID | null; isTotalSum: boolean; amountCategory: ID | AptlyCategorySchema<ID, DATE> | null; amountCategoryKey?: string; allowance?: AptlyAllowance | null; allowanceCharge: AptlyAllowanceChargeItemSchema<ID, boolean>[]; } export declare enum AptlyOptionIdentificationSource { Unknown = "", EFO = "efo", NRF = "nrf", Nobb = "nobb", Producer = "producer" } export type AptlyOptionLine = AptlyOptionLineSchema<string, string>; export interface AptlyOptionLineSchema<ID, DATE> { _id: ID; option: ID | AptlyOptionSchema<ID, DATE> | null; product: ID | AptlyProductSchema<ID, DATE> | null; quantity: number; } export type AptlyOptionPopulated = AptlyOptionPopulatedSchema<string, string>; export interface AptlyOptionPopulatedSchema<ID, DATE> extends Omit<AptlyOptionSchema<ID, DATE>, 'product'>, AptlyExtensionAmount { invoicedQuantity: number; item: AptlyItemSchema<ID, DATE>; price: AptlyPrice; quantityCategory: AptlyCategorySchema<ID, DATE> | null; amountCategory: AptlyCategorySchema<ID, DATE> | null; period: AptlyPeriodSchema<ID, DATE> | null; product: AptlyProductSchema<ID, DATE> | null; } export interface AptlyOptionImportBody { action: 'add' | 'edit'; noErrorOnDuplicate?: boolean; noErrorOnProductNotFound?: boolean; options?: Partial<AptlyOptionPostBody>[]; } export interface AptlyOptionPostBody extends AptlyOptionSchema<string, string> { __amount?: string; productNumber?: string | null; }