import { BaseEntity } from './common.js'; declare enum GENDER { MALE = "MALE", FEMALE = "FEMALE" } declare enum QUOTE_INVOICE_CATEGORY { QUOTE = "QUOTE", INVOICE = "INVOICE" } declare enum QUOTE_INVOICE_MODE { COMPANY = "COMPANY", CUSTOMER = "CUSTOMER" } declare enum DISCOUNT_UNIT { FIXED_VALUE = "FIXED_VALUE", PERCENTAGE_VALUE = "PERCENTAGE_VALUE" } declare enum INVOICE_STATUS { UNPAID = "UNPAID", PAID = "PAID" } declare enum QUOTE_STATUS { DRAFT = "DRAFT", PENDING = "PENDING", SENT = "SENT", ACCEPTED = "ACCEPTED", DECLINED = "DECLINED" } declare enum PAYMENT_TYPE { FULL_AMOUNT = "FULL_AMOUNT", PARTIAL_AMOUNT = "PARTIAL_AMOUNT" } declare enum LEAD_SOURCE { WEBSITE = "WEBSITE", SOCIAL_MEDIA = "SOCIAL_MEDIA", LINKEDIN = "LINKEDIN", PROFESSIONAL_NETWORK = "PROFESSIONAL_NETWORK", CUSTOMER_REFERRAL = "CUSTOMER_REFERRAL", SALES = "SALES", ADVERTISING = "ADVERTISING", FRIEND = "FRIEND", OTHER = "OTHER" } declare enum LEAD_TYPE { COMPANY = "COMPANY", CONTACT = "CONTACT" } declare enum LEAD_STATUS { NEW = "NEW", ASSIGNED = "ASSIGNED", IN_NEGOTIATION = "IN_NEGOTIATION", ON_HOLD = "ON_HOLD", WON = "WON", LOOSE = "LOOSE", CANCELLED = "CANCELLED", DRAFT = "DRAFT", WAITING = "WAITING" } /** * Profile model type */ interface ProfileBE extends BaseEntity { avatar?: string; dob?: Date; email: string; firstName: string; gender: GENDER; language?: string; lastName: string; location?: string; phone: string; skill?: string; userId: string; } /** * Product model type */ interface ProductBE extends BaseEntity { currency: string; description?: string; images: string[]; name: string; productCategoryId: string; quantity: number; ref?: string; price: number; } /** * ProductCategory model type */ interface ProductCategoryBE extends BaseEntity { description?: string; name: string; } /** * Company model type */ interface CompanyBE extends BaseEntity { country: string; email: string; name: string; phone: string; website?: string; } /** * Contact model type */ interface ContactBE extends BaseEntity { companyId: string; country: string; email: string; firstName: string; lastName: string; phone: string; } /** * ExpenseCategory model type */ interface ExpenseCategoryBE extends BaseEntity { description?: string; name: string; } /** * Expense model type */ interface ExpenseBE extends BaseEntity { currency: string; description: string; expenseCategoryId: string; name: string; ref?: string; total: number; } /** * QuoteInvoice model type */ interface QuoteInvoiceBE extends BaseEntity { category: QUOTE_INVOICE_CATEGORY; companyId?: string; currency: string; customerId?: string; date: Date; discount: number; discountUnit: DISCOUNT_UNIT; expiryDate: Date; invoiceStatus: INVOICE_STATUS; note?: string; quoteStatus: QUOTE_STATUS; ref?: string; subTotal: number; taxRate: number; total: number; } /** * Service model type */ interface ServiceBE extends BaseEntity { description?: string; name: string; price: number; quantity: number; quoteInvoiceId?: string; } /** * Payment model type */ interface PaymentBE extends BaseEntity { amount: number; attachment?: string; balance: number; currency: string; date: Date; description?: string; paymentModeId: string; paymentType: PAYMENT_TYPE; quoteInvoiceId: string; ref?: string; } /** * Preference model type */ interface PreferenceBE extends BaseEntity { onboarding: boolean; } /** * AppUser model type */ interface AppUserBE extends BaseEntity { email: string; firstName: string; lastName: string; } /** * MenuOrder model type */ interface MenuOrderBE extends BaseEntity { label: string; order: number; preferenceId: string; } /** * PaymentMode model type */ interface PaymentModeBE extends BaseEntity { enabled: boolean; isDefault: boolean; label: string; preferenceId: string; } /** * Bank model type */ interface BankBE extends BaseEntity { accountNumber: string; accountTitle: string; bankAddress?: string; bankName: string; enabled: boolean; iban?: string; isDefault: boolean; preferenceId: string; swiftCode?: string; } /** * Tax model type */ interface TaxBE extends BaseEntity { description?: string; enabled: boolean; isDefault: boolean; preferenceId: string; taxName: string; taxRate: number; } /** * Branch model type */ interface BranchBE extends BaseEntity { branchAddress: string; branchName: string; enabled: boolean; isDefault: boolean; personEmail: string; personName: string; personPhone: string; preferenceId: string; } /** * Currency model type */ interface CurrencyBE extends BaseEntity { code: string; enabled: boolean; isDefault: boolean; label: string; preferenceId: string; } /** * Customer model type */ interface CustomerBE extends BaseEntity { address?: string; city: string; country: string; email?: string; firstName: string; lastName: string; phone: string; } /** * RequestForm model type */ interface RequestFormBE extends BaseEntity { businessType: string; companyName: string; companySize?: string; designation: string; firstName: string; headOffice?: string; lastName: string; phoneNumber: string; website?: string; workEmail: string; } /** * Lead model type */ interface LeadBE extends BaseEntity { notes?: string; source: LEAD_SOURCE; status: LEAD_STATUS; type: LEAD_TYPE; } /** * Join table for QuoteInvoice and Product many-to-many relationship */ interface QuotesInvoicesOnStellarProducts { meta?: any; productId: string; quantity: number; quoteInvoiceId: string; } export { type AppUserBE, type BankBE, type BranchBE, type CompanyBE, type ContactBE, type CurrencyBE, type CustomerBE, DISCOUNT_UNIT, type ExpenseBE, type ExpenseCategoryBE, GENDER, INVOICE_STATUS, LEAD_SOURCE, LEAD_STATUS, LEAD_TYPE, type LeadBE, type MenuOrderBE, PAYMENT_TYPE, type PaymentBE, type PaymentModeBE, type PreferenceBE, type ProductBE, type ProductCategoryBE, type ProfileBE, QUOTE_INVOICE_CATEGORY, QUOTE_INVOICE_MODE, QUOTE_STATUS, type QuoteInvoiceBE, type QuotesInvoicesOnStellarProducts, type RequestFormBE, type ServiceBE, type TaxBE };