import { Observable } from 'rxjs'; import { DataConfig } from './../models/config'; import { OrderConfig, FnbOrder, OrderDetail, Store, ProductVariant, CustomerDetail, SalesUser, OrderDetailResult } from './../models/pos.model'; export declare class SunoFnbService { private dataService; private helperService; private promotions; private companySettings; private cashier; constructor(config: DataConfig); initConfig(config: OrderConfig): Observable; updateToken(tenantId: string, accessToken: string): void; initOrder(store: Store): FnbOrder; createOrder(store: Store, orderType?: number, tableId?: string, tableName?: string, zoneId?: string, zoneName?: string): FnbOrder; selectOrder(orderId: string, orders: FnbOrder[]): FnbOrder; deleteOrder(orderId: string, orders: FnbOrder[]): FnbOrder[]; addOrder(order: FnbOrder, orders: FnbOrder[]): FnbOrder[]; updateOrder(order: FnbOrder, orders: FnbOrder[]): FnbOrder; isExistingOrder(order: FnbOrder, orders: FnbOrder[]): boolean; deleteOrderByTable(orders: FnbOrder[], storeId: string, tableId?: string): FnbOrder[]; deleteOrderByZone(orders: FnbOrder[], storeId: string, zoneId?: string): FnbOrder[]; calculateTotal(order: FnbOrder): FnbOrder; changeOrderDiscount(order: FnbOrder, isDiscountPercent: boolean, discount: number): FnbOrder; updateOrderPaid(order: FnbOrder, paid: number): FnbOrder; prepareOrder(order: FnbOrder): any; prepareOnlineOrder(order: FnbOrder): any; saveOrder(order: FnbOrder): Observable; saveOnlineOrder(order: FnbOrder): Observable; selectSaleUser(saleUser: SalesUser, order: FnbOrder): FnbOrder; updatePromotion(order: FnbOrder): void; generatePrinterOrder(order: FnbOrder, store: any): any; restoreOrder(order: FnbOrder): FnbOrder; updateOrderNote(order: FnbOrder, note: string): FnbOrder; updateOrderWaitingCode(order: FnbOrder, code: string): FnbOrder; updateOrderSubFee(order: FnbOrder, fee: number, isPercent?: boolean): FnbOrder; addCustomer(order: FnbOrder, customer: CustomerDetail): FnbOrder; removeCustomer(order: FnbOrder): FnbOrder; setCustomer(order: FnbOrder, customer: CustomerDetail): Observable; mergeOrder(sourceOrder: FnbOrder, destOrder: FnbOrder): FnbOrder; splitOrder(order: FnbOrder, items: any[]): { isSuccess: boolean; message: string; originalOrder: any; newOrder: any; }; generateOrder(store: Store, orderType?: number): FnbOrder; validateOrder(order: FnbOrder): string; private getGroupByCustomer; private getCustomerPoint; private calculateOrderDiscount; private validateOnlineOrder; toggleTopping(topping: any, item: OrderDetail, order: FnbOrder): OrderDetail; addTopping(topping: any, item: OrderDetail, order: FnbOrder): OrderDetail; changeQuantityOfTopping(toppingId: string, quantity: number, item: OrderDetail, order: FnbOrder): OrderDetail; removeTopping(toppingId: string, item: OrderDetail, order: FnbOrder): OrderDetail; private calculateToppings; private updateItemByTopping; mappingProductVariant(product: any, toppings: any[], storeId: string, companySetting: any, hasDefaultFirst?: boolean): ProductVariant; selectVariant(variant: any, orderDetail: OrderDetail, order: FnbOrder): OrderDetail; pickVariant(variant: ProductVariant, order: FnbOrder, quantity?: number): OrderDetail; mappingVariant(variant: ProductVariant, order: FnbOrder, quantity?: number): OrderDetailResult; changeItemQuantity(item: OrderDetail, quantity: number, order: FnbOrder): OrderDetail; changeItemDiscount(item: OrderDetail, isDiscountPercent: boolean, discount: number): OrderDetail; updateNewPriceOnItem(item: OrderDetail, newUnitPrice: number): OrderDetail; updateItemNote(item: OrderDetail, note: string): OrderDetail; pickItemNote(item: OrderDetail, note: any): OrderDetail; addItem(item: OrderDetail, order: FnbOrder): FnbOrder; updateItem(item: OrderDetail, order: FnbOrder): FnbOrder; removeItem(item: OrderDetail, order: FnbOrder): FnbOrder; insertItem(item: OrderDetail, order: FnbOrder): FnbOrder; calculateSubTotalOfItem(item: OrderDetail): OrderDetail; private calculateSellPrice; selectPolicy(policy: any, item: OrderDetail, order: FnbOrder): OrderDetail; applyPricePolicy(policy: any, item: OrderDetail): OrderDetail; cancelPolicy(item: OrderDetail): OrderDetail; getMaxPolicy(detail: OrderDetail, order: FnbOrder): any; getPoliciesByItem(item: OrderDetail, promotions: any[], order: FnbOrder): any[]; private getAvailablePolicesOnItem; private getAvailablePolicies; private filterAllStoresAndCustomersPolicies; private filterByStoresPolicies; private filterByCustomersPolicies; private filterByAllCustomersPolicies; private filterByAllProductsPolicies; private filterBySpecificProductsPolicies; private filterByCategoriesPolicies; applyPromotionOnOrder(order: FnbOrder): FnbOrder; selectPromotionOnOrder(promotion: any, order: FnbOrder): FnbOrder; getMaxPromotionByOrder(availablePromotions: any[]): any; getPromotionsByOrder(promotions: any[], order: FnbOrder): any[]; selectPromotionOnItem(promotion: any, item: OrderDetail): OrderDetail; applyPromotionOnItem(promotion: any, item: OrderDetail): OrderDetail; cancelPromotionOnItem(item: OrderDetail): OrderDetail; getMaxPromotionByItem(availablePromotions: any[]): any; getPromotionsByItem(item: OrderDetail, promotions: any[], order: FnbOrder): any[]; getPromotionList(): Observable; private resetPromotionOnOrder; private setPromotionOnOrder; private getAvailablePromotionsOnItem; private getAvailablePromotionsOnOrder; private getSubTotal; private getAvailablePromotions; private filterAllStoresAndCustomersPromotions; private filterByStoresPromotions; private filterByCustomersPromotions; private filterByAllCustomersPromotions; private filterByOrdersPromotions; private filterByAllProductsPromotions; private filterBySpecificProductsPromotions; private filterByCategoriesPromotions; private calculateEarningPoint; private calculateEarningMoney; private getCurrentlyPromotions; private getDiscountValue; private getMaxDiscountOfRule; private getMaxDiscount; private convertDateTime; private formatTime; private updateImMutableItemInList; private getRounding; private isValidQuantity; }