import { Amount } from '../../../commonStateTypes/amount'; import { ID } from '../../../commonStateTypes/common'; import { ZeniDate } from '../../../zeniDayJS'; import { InvoicingBillingPeriodUnit, InvoicingSubscriptionStatus } from './invoicingSubscriptionTypes'; export interface InvoicingSubscriptionItem { amount?: Amount; billingCycles?: number; catalogItemID?: ID; itemName?: string; itemPriceCode?: string; itemPriceID?: ID; itemType?: string; quantity?: number; unitPrice?: Amount; } export interface InvoicingSubscriptionCoupon { couponID: ID; appliedCount?: number; applyTill?: ZeniDate; couponCode?: string; } export interface InvoicingContractTerm { id: ID; actionAtTermEnd?: string; autoRenew?: boolean; billingCycle?: number; cancellationNoticeDays?: number; contractEnd?: ZeniDate; contractStart?: ZeniDate; status?: string; totalContractValue?: Amount; } export interface InvoicingSubscription { customerID: ID; id: ID; status: InvoicingSubscriptionStatus; activatedAt?: ZeniDate; autoCollection?: 'on' | 'off'; autoCollectionCount?: number; billingPeriod?: number; billingPeriodUnit?: InvoicingBillingPeriodUnit; cancelledAt?: ZeniDate; cancelReason?: string; cancelReasonCode?: string; catalogItemID?: ID; contractTerm?: InvoicingContractTerm; coupons?: InvoicingSubscriptionCoupon[]; createdAt?: ZeniDate; currencyCode?: string; currentTermEnd?: ZeniDate; currentTermStart?: ZeniDate; customerName?: string; dueInvoicesCount?: number; dueSince?: ZeniDate; hasScheduledChanges?: boolean; mrr?: Amount; nextBillingAt?: ZeniDate; pauseDate?: ZeniDate; planAmount?: Amount; planID?: ID; planName?: string; poNumber?: string; remainingBillingCycles?: number; resumeDate?: ZeniDate; setupFee?: Amount; shippingAddressId?: ID; startedAt?: ZeniDate; subscriptionItems?: InvoicingSubscriptionItem[]; subscriptionNumber?: string; totalDues?: Amount; trialEnd?: ZeniDate; trialStart?: ZeniDate; updatedAt?: ZeniDate; } export interface InvoicingSubscriptionState { invoicingSubscriptionByID: Record; }