export interface OrderContract { orderId?: Number; businessId: Number; cashRegistersId: Number; status: 'preparing' | 'pending' | 'in_process' | 'ready' | 'delivered'; totalAmount: Number; notes: String; items?: OrderContractItem[]; } export interface OrderContractItem { itemType: 'item' | 'combo' | 'combo-subitem'; itemId: String; quantiry: Number; price: Number; itenTitle: String; flavor?: OrderContractFlavor[]; comboCustomSelections?: OrderComboCustomSelection[]; itemCustomizerSellection?: ItemCustomizerSellection[]; } export interface OrderComboCustomSelection { quantity: Number; subitemsSelection?: OrderContractSubItem[]; } export interface OrderContractSubItem { itemType: 'combo-subitem'; subItemId: Number; comboId: Number; quantiry: Number; price: Number; subItemTitle: string; flavors?: OrderContractFlavor[]; itemCustomizerSellection?: ItemCustomizerSellection[]; } export interface OrderContractFlavor { flavorTitle: String; flavorId: Number; quantity: Number; } export interface ItemCustomizer { id: number; title: string; type: 'remove' | 'extra'; quantitySelected: number; price_per_unit: number; max_quantity: number; stock: boolean; image_url: string | null; quantitySelectedAsDefault: number; } export interface SellectionCustomizer extends ItemCustomizer { selected: boolean; quantitySelected: number; } export interface SubItemsCustomizers extends ItemCustomizer { subItemId: string; subItemCustomizers: SellectionCustomizer[]; } export interface ItemCustomizerSellection { itemId: String; index: number; type: 'item' | 'combo'; customizers: SellectionCustomizer[]; }