import { AptlyOrderStatus } from '../enums/index.js'; import { AptlyAddress } from './address.js'; import { AptlyAllowanceChargeSchema, AptlyLegalMonetaryTotal } from './algorithm.js'; import { AptlyAppImplementationSetting, AptlyAppSchema } from './app.js'; import { AptlyCompanySchema } from './company.js'; import { AptlyCustomerDataSchema } from './customer.js'; import { AptlyDocumentSchema } from './document.js'; import { AptlyEmailSchema } from './email.js'; import { AptlyOfferSchema } from './offer.js'; import { AptlyOrganizationAppConfigSchema, AptlyOrganizationSchema } from './organization.js'; import { AptlyPaymentSchema } from './payment.js'; import { AptlyPickConfirmedSchema } from './pick.js'; import { AptlyProductSchema } from './product.js'; import { AptlyProject, AptlyProjectPeriodSchema, AptlyProjectSchema } from './project.js'; import { AptlyUnit, AptlyUnitItemParamSchema, AptlyUnitSchema } from './unit.js'; import { AptlyBaseSchema } from './extends.js'; import { AptlyUser, AptlyUserSchema } from './user.js'; import { Populated } from '../core'; export declare enum AptlyOrderPaymentStatus { Pending = "PENDING", Authorized = "AUTHORIZED", OnHold = "ON_HOLD", Captured = "CAPTURED", Expired = "EXPIRED" } export type AptlyOrder = AptlyOrderSchema; export interface AptlyOrderSchema extends AptlyBaseSchema { number: number; orderNumber: string; invoiceNumber?: number; organization: ID | AptlyOrganizationSchema; project: ID | AptlyProjectSchema | null; unit: ID | AptlyUnitSchema | null; period?: ID | AptlyProjectPeriodSchema; offer: ID | AptlyOfferSchema | null; company: ID | AptlyCompanySchema | null; signers: (ID | AptlyUserSchema)[]; status: AptlyOrderStatus; receipt: ID | AptlyDocumentSchema | null; signedReceipt?: ID | AptlyDocumentSchema | null; reportDocument?: ID | AptlyDocumentSchema | null; termsDocument?: ID | AptlyDocumentSchema | null; attachments: ID[]; signage: AptlyOrderSignageSchema; items: AptlyOrderItemSchema[]; picks: (ID | AptlyPickConfirmedSchema)[]; documents: (ID | AptlyDocumentSchema)[]; amount?: number; vatAmount?: number; totalVat?: number; totalCost: number; total?: AptlyLegalMonetaryTotal | null; allowanceCharges: AptlyAllowanceChargeSchema[]; customer?: AptlyCustomerDataSchema; shipping?: AptlyAddress; billing?: AptlyAddress; pricePipeline: AptlyOrderPricePipelineItemSchema[]; signees: AptlyOrderSigneeSchema[]; emailText?: string; approved?: { action?: AptlyOrderAction; user?: ID | AptlyUserSchema; at?: DATE; } | null; paymentSession?: AptlyOrderPaymentSessionSchema | null; payment?: ID | AptlyPaymentSchema | null; shippingDate?: DATE; shippingDescription?: string; signedAt?: DATE | null; completedAt?: DATE | null; ourContact: Populated> | null; createdBy?: Populated> | null; createdByAdmin?: boolean; created: DATE; } export type AptlyOrderPaymentSession = AptlyOrderPaymentSessionSchema; export interface AptlyOrderPaymentSessionSchema { app?: ID | AptlyAppSchema; status?: AptlyOrderPaymentStatus; user?: ID | null; id?: string; at?: DATE | null; url?: string; notifiedAt?: DATE | null; expiresAt?: DATE | null; paidAt?: DATE | null; capturedAt?: DATE | null; } export type AptlyOrderSignee = AptlyOrderSigneeSchema; export interface AptlyOrderSigneeSchema { _id: ID; user: ID | AptlyUserSchema; type: AptlyOrderSigneeType; url: string; signedAt?: DATE; } export declare enum AptlyOrderSigneeType { Unit = 0, Admin = 1 } export type AptlyOrderPricePipelineItem = AptlyOrderPricePipelineItemSchema; export interface AptlyOrderPricePipelineItemSchema { _id: ID; label: string; value: number; } export type AptlyOrderSignage = AptlyOrderSignageSchema; export interface AptlyOrderSignageSchema { signed: boolean; app?: ID | AptlyAppSchema; createdAt?: DATE | null; expiresAt?: DATE | null; signedAt?: DATE | null; notifiedAt?: DATE | null; document?: ID | AptlyDocumentSchema; hasReceivedFile?: boolean; signedFile?: ID | AptlyDocumentSchema; documentId?: ID; documentCreationDate?: DATE; expireDate?: DATE; customerSignerId?: string; organizationSignerId?: string; organizationSignedAt?: DATE; customerSignedAt?: DATE; } export type AptlyOrderItem = AptlyOrderItemSchema; export interface AptlyOrderItemSchema { _id: ID; text?: string; product: ID | AptlyProductSchema; variant: ID; producer: ID; params: AptlyUnitItemParamSchema[]; quantity: number; baseCost?: number; unitCost: number; unitVat?: number; vat?: number; pricePipeline: AptlyOrderItemPricePipelineSchema[]; } export type AptlyOrderItemPricePipeline = AptlyOrderItemPricePipelineSchema; export interface AptlyOrderItemPricePipelineSchema { _id: ID; label: string; value: number; } export declare enum AptlyOrderAction { Complete = "complete", Delivery = "delivery", Payment = "payment", SignManually = "sign-manually", Sign = "sign" } export interface AptlyOrderActionPostBody { action: AptlyOrderAction | null; document?: string | null; app?: string; emailSubject: string; emailText: string; emailMarkdown: string; users: AptlyOrderActionPostBodyUser[]; deadlineInDays?: number; shippingDate?: string | null; shippingDescription?: string | null; } export interface AptlyOrderActionPostBodyUser { user: string; signMethod?: string; isAdmin?: boolean; } export type AptlyOrderActionItem = AptlyOrderActionItemSchema; export interface AptlyOrderActionItemSchema { action: AptlyOrderAction; path: string; app?: Pick, '_id' | 'name' | 'sign' | 'logo' | 'settings'>; appSettings?: AptlyOrganizationAppConfigSchema['settings']; email?: AptlyEmailSchema; } export interface AptlyOrderActionItemSignSettings { [AptlyAppImplementationSetting.SignCostPer]: number; [AptlyAppImplementationSetting.SignMethod]: string; } export interface AptlyOrderActionSignData { project: Pick & { theme: Pick; }; unit: Pick; order: Pick; user: AptlyUser; signees: AptlyOrderActionSignDataSignee[]; deadlineInDays?: number; } export interface AptlyOrderActionSignDataSignee { user: AptlyUser; signMethod?: string; isAdmin?: boolean; } export interface AptlyOrderDeliveryBody { shippingDate: string; shippingDescription?: string; } export interface AptlyOrderCompleteBody { emailSubject?: string; emailText?: string; emailMarkdown?: string; skipEmail?: boolean; }