import { INVOICE_PRODUCT } from '@hyper.software/common-helpers/lib/services/bookingService/bookingInvoiceService'; import { DateOrString, IBookingService, ITimestamps, SERVICE_TAX_TYPE } from '.'; import { ICompany } from './company'; import { ICustomer } from './customer'; import { IRoomBooking } from './roomBooking'; import { IUser } from './user'; import { IRoomBookingBookingService } from './roomBookingServices'; export declare enum BOOKING_SOURCE { BOOKING = "BOOKING", AIRBNB = "AIRBNB", EXPEDIA = "EXPEDIA", AGODA = "AGODA", HOSTEL_WORLD = "HOSTEL_WORLD", WEBSITE = "WEBSITE", PHONE_CALL = "PHONE_CALL", MANUAL = "MANUAL", IMPORT = "IMPORT", CLASSIFIEDS = "CLASSIFIEDS", FEWO_DIREKT = "FEWO_DIREKT", VRBO = "VRBO", HRS = "HRS", FERATEL = "FERATEL", GOOGLE_HOTEL_ADS = "GOOGLE_HOTEL_ADS" } export declare enum BOOKING_STATUS { ACTIVE = "ACTIVE", CANCELLED = "CANCELLED" } export declare const ALL_BOOKING_SOURCE: BOOKING_SOURCE[]; export declare enum PAYMENT_METHOD { CASH = "CASH", CREDIT_CARD_VISA = "CREDIT_CARD_VISA", CREDIT_CARD_MASTERCARD = "CREDIT_CARD_MASTERCARD", EC_CARD = "EC_CARD", DIRECT_DEBIT = "DIRECT_DEBIT", BANK_TRANSFER = "BANK_TRANSFER", STRIPE_ONLINE_PAYMENT = "STRIPE_ONLINE_PAYMENT", CREDIT_CARD = "CREDIT_CARD", BOOKING_COM = "BOOKING_COM" } export declare const ALL_PAYMENT_METHOD: PAYMENT_METHOD[]; export declare enum DELETED_REASON { DELETED_BY_ADMIN = "DELETED_BY_ADMIN", DELETED_BY_BACKUP_SYSTEM = "DELETED_BY_BACKUP_SYSTEM" } export declare enum OFFER_STATUS { PENDING = "PENDING", ACCEPTED = "ACCEPTED", REJECTED = "REJECTED", EXPIRED = "EXPIRED" } export interface IBooking extends ITimestamps { id?: string; companyId?: string; customerId?: string; checkinDate?: DateOrString; checkoutDate?: DateOrString; code?: string; details?: string; personalMessage?: string; totalCost?: number; isConfirmed?: boolean; isCheckedIn?: boolean; isCheckedOut?: boolean; city?: string; bookingSource?: BOOKING_SOURCE; notificationStatuses?: IBookingNotificationStatuses; roomBookings?: IRoomBooking[]; customer?: ICustomer; admin?: IUser; company?: ICompany; extra?: IBookingExtraInformation; checkinInformation?: IBookingCheckinInformation; bookingServices?: IBookingService[]; invoices?: IBookingInvoices; roomBookingBookingServices?: IRoomBookingBookingService[]; } export interface IBookingNotificationStatuses { sentCustomerReviewRequest?: boolean; sentCustomerReviewRequestAfter2Days?: boolean; sentCustomerReviewRequestAfter10Days?: boolean; sentCustomerPrecheckinMessage?: boolean; sentCustomerPrecheckoutMessage?: boolean; shouldNotifyCustomerByEmail?: boolean; forceShouldNotifyCustomerByEmail?: boolean; sendInvoiceToEmail?: boolean; } export interface IBookingExtraInformation { legalAcceptance?: { accepted?: boolean; acceptedAt?: DateOrString; termsAndConditionsText?: string; termsAndConditionsUrl?: string; privacyPolicyUrl?: string; }; cancellationPolicies?: Array<{ roomTypeName?: string; ratePlanName?: string; description?: string; }>; otaBookingId?: string; arrivalTime?: string; code?: string; externalServices?: Array<{ bookingRoomId?: string; name?: string; type?: string; priceMode?: string; pricePerUnit?: number; totalPrice?: number; percentage?: number; }>; payment?: { isPaid?: boolean; paymentMethod?: PAYMENT_METHOD; advancedPayment?: { type?: string; amountDue?: number; amountPaid?: number; }; otaComission?: number; }; excludedFees?: number; deletedReason?: DELETED_REASON; sendAsOffer?: boolean; offerStatus?: OFFER_STATUS; offerExpiresAt?: DateOrString; } export interface IBookingCheckinInformation { additionalGuests?: Array<{ firstName?: string; lastName?: string; phoneNumber?: string; email?: string; nationality?: string; birthDate?: DateOrString; }>; } export interface IBookingCompanyInformation { address?: { fullAddress?: string; zipCodeCity?: string; streetInformation?: string; }; companyLegalName?: string; registrationNumber?: string; vatNumber?: string; ownerName?: string; responsibleName?: string; name?: string; email?: string; phoneNumber?: string; bankName?: string; iban?: string; swift?: string; } export interface IInvoiceCustomerInformation { fullName?: string; address?: { zipCodeCity?: string; streetInformation?: string; country?: string; }; customerCompanyName?: string; company?: string; customerGroup?: { name?: string; address?: { fullAddress?: string; }; }; } export interface IBookingInvoice { currentInvoiceId?: string; paymentMethod?: PAYMENT_METHOD; paymentMethodText?: string; lastUpdated?: string; invoiceDate?: DateOrString; dueDate?: DateOrString; notes?: string; company?: IBookingCompanyInformation; products?: IProduct[]; customer?: IInvoiceCustomerInformation; } export type IBookingInvoices = IBookingInvoice[]; export interface IProduct { serviceId?: string; isTourismTax?: boolean; type: INVOICE_PRODUCT; description: string; quantity: number; taxType: SERVICE_TAX_TYPE; rate: number; tax: number; total: number; roomTypeId?: string; }