@aptly-as/types
Version:
Aptly types and enums
75 lines (74 loc) • 3.24 kB
TypeScript
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';
export type AptlyOption = AptlyOptionSchema<string, string>;
export interface AptlyOptionSchema<ID, DATE> extends AptlyBaseSchema<ID, DATE> {
organization: ID | AptlyOrganizationSchema<ID, DATE>;
project: ID | AptlyProjectSchema<ID, DATE>;
unit: ID | AptlyUnitSchema<ID, DATE> | null;
product: ID | AptlyProductSchema<ID, DATE> | null;
producer: ID | AptlyProducerSchema<ID, DATE> | null;
offer: ID | AptlyOfferSchema<ID, DATE> | null;
category: ID | null;
option: ID | AptlyOptionSchema<ID, DATE> | null;
offerItem: ID | null;
period: ID | AptlyPeriodSchema<ID, DATE> | null;
algorithm: ID | null;
thumbnail: AptlyMediaSrcSchema<ID, DATE> | null;
variants: (ID | AptlyOptionSchema<ID, DATE>)[];
lines: AptlyOptionLineSchema<ID, DATE>[];
documents: (ID | AptlyDocumentSchema<ID, DATE>)[];
title: string;
description: string;
identification: string;
note: string;
index: number;
type: AptlyItemType;
quantity?: number;
quantityUnitCode: AptlyQuantityUnitCode;
quantityCategory: ID | AptlyCategorySchema<ID, DATE> | null;
quantityCategoryKey?: string;
amount: number;
amountCategory: ID | AptlyCategorySchema<ID, DATE> | null;
amountCategoryKey?: string;
isTotalSum: boolean;
allowance?: AptlyAllowance | null;
allowanceCharge: AptlyAllowanceChargeItemSchema<ID, boolean>[];
}
export type AptlyOptionLine = AptlyOptionLineSchema<string, string>;
export interface AptlyOptionLineSchema<ID, DATE> {
_id: ID;
option: ID | AptlyOptionSchema<ID, DATE>;
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;
}