def minus_dishes(self): cur_order_item = self.di_order_item[self.cur_order_num] if self.cur_dishes_key in cur_order_item.di_order_dishes_items: if cur_order_item.di_order_dishes_items[self.cur_dishes_key].dishes_count <= 1: del cur_order_item.di_order_dishes_items[self.cur_dishes_key] self.cur_dishes_key = None else: cur_order_item.di_order_dishes_items[self.cur_dishes_key].dishes_count -= 1 order_id = 0 table_num = CtrlTableInfo.get_instance().get_selected_item_id() if table_num is not None: table_item = CtrlTableInfo.get_instance().get_table_item(table_num) order_id = table_item.order_id if self.cur_dishes_key in cur_order_item.di_place_dishes_items: dishes_item = cur_order_item.di_place_dishes_items[self.cur_dishes_key] if len(dishes_item.li_dishes_log_id) > 0: HttpService.get_instance().del_dishes(order_id, dishes_item.li_dishes_log_id[0], dishes_item.dishes_code, 1, "") del dishes_item.li_dishes_log_id[0] if cur_order_item.di_place_dishes_items[self.cur_dishes_key].dishes_count <= 1: del cur_order_item.di_place_dishes_items[self.cur_dishes_key] self.cur_dishes_key = None else: cur_order_item.di_place_dishes_items[self.cur_dishes_key].dishes_retreat_count += 1 cur_order_item.di_place_dishes_items[self.cur_dishes_key].dishes_count -= 1 EvtManager.dispatch_event(EnumEvent.EVT_ORDER_DISHES_ITEMS_REFRESH)
def prev_print(self, table_id, order_id, order_code, all_discount, free_price, cash, coupon, membership, pos, group, credit, boss_sign): order_item = CtrlOrderInfo.get_instance().get_order_item(order_code) if order_item is not None: '''send request to remote service''' HttpService.get_instance().prev_print(table_id, order_id, all_discount, free_price, CtrlFrontLogin.get_instance().get_user(), 1, cash, coupon, membership, pos, group, credit, boss_sign)
def open_table(self, data): if isinstance(data, DataTableItem): table_item = None for item in self.li_table_items: if item.table_id == data.table_id: table_item = item table_item.waiter = data.waiter table_item.customer_num = int(data.customer_num) table_item.deposit = data.deposit table_item.memo = data.memo if CONFIG.useTemp: table_item.table_status = 1 table_item.order_num = time.strftime('B%Y%m%d') + str(self.order_seq) self.order_seq += 1 else: result = HttpService.get_instance().open_table(data.table_id, data.customer_num, CtrlFrontLogin.get_instance().get_user(), CtrlFrontLogin.get_instance().get_password()) if result is not None: table_item.table_status = 1 table_item.order_id = result table_item.order_num = str(result) table_order_tmp = {table_item.table_id: table_item.order_num} self.di_table_order.update(table_order_tmp) EvtManager.dispatch_event(EnumEvent.EVT_FRONT_PAGE_REFRESH)
def change_table(self, src_table_num, dst_table_num): src_order_num = None if int(src_table_num) in self.di_table_order: src_order_num = self.di_table_order[int(src_table_num)] src_order_id = None table_item = CtrlTableInfo.get_instance().get_table_item(src_table_num) if table_item is not None: src_order_id = table_item.order_id result = HttpService.get_instance().change_table(src_table_num, dst_table_num, src_order_id) if result is not None: for item in self.li_table_items: if item.table_num == src_table_num: item.table_num = dst_table_num elif item.table_num == dst_table_num: item.table_num = src_table_num if src_order_num is not None: self.di_table_order[int(dst_table_num)] = src_order_num del self.di_table_order[int(src_table_num)] self.li_table_items.sort(lambda x, y: cmp(int(x.table_num), int(y.table_num))) EvtManager.dispatch_event(EnumEvent.EVT_FRONT_PAGE_REFRESH)
def create_order(self, order_num, order_status): self.cur_order_num = order_num if order_num not in self.di_order_item: item = DataOrderItem() item.order_num = order_num if order_status == 2 or order_status == 3: result = HttpService.get_instance().get_order_info(order_num) if result is not None: for info in result: dishes_item = DataOrderDishesItem() dishes_item.dishes_code = info["vch_dish_code"] dishes_details = CtrlDishesInfo.get_instance().get_dishes_item(dishes_item.dishes_code) spec_id = info["num_spec_id"] style_id = info["num_style_id"] if dishes_details is not None: for spec in dishes_details.dishes_spec: if spec["id"] == spec_id: dishes_item.dishes_spec = spec dishes_item.dishes_price = spec['num_price'] if dishes_details.dishes_style is not None: for style in dishes_details.dishes_style: if style["id"] == style_id: dishes_item.dishes_style = style if dishes_item['ch_mountadd'] == 1: dishes_item.dishes_price += style['num_priceadd'] if info["num_dish_withdraw_id"] is None or info["num_dish_withdraw_id"] == 0: dishes_item.dishes_count = info["num_dish_num"] else: dishes_item.dishes_retreat_count = 1 dishes_item.dishes_spec_discount = info["num_special_discount"] dishes_item.dishes_demand = info["vch_customized_style"] dishes_key = str(dishes_item.dishes_code) + str(spec_id) + str(style_id) if dishes_key in item.di_place_dishes_items: item.di_place_dishes_items[dishes_key].dishes_count = \ item.di_place_dishes_items[dishes_key].dishes_count + dishes_item.dishes_count item.di_place_dishes_items[dishes_key].dishes_retreat_count = \ item.di_place_dishes_items[dishes_key].dishes_retreat_count + \ dishes_item.dishes_retreat_count if info["num_dish_withdraw_id"] is None or info["num_dish_withdraw_id"] == 0: item.di_place_dishes_items[dishes_key].li_dishes_log_id.append(info["dishId"]) else: if info["num_dish_withdraw_id"] is None or info["num_dish_withdraw_id"] == 0: dishes_item.li_dishes_log_id.append(info["dishId"]) order_dishes_item_tmp = {dishes_key: dishes_item} item.di_place_dishes_items.update(order_dishes_item_tmp) for (dishes_key, dishes_item) in item.di_place_dishes_items.items(): if dishes_item.dishes_count == 0: del item.di_place_dishes_items[dishes_key] order_item_tmp = {order_num: item} self.di_order_item.update(order_item_tmp)
def close_table(self, table_num): if CONFIG.useTemp: pass else: result = HttpService.get_instance().close_table(table_num) if result: for item in self.li_table_items: if item.table_id == table_num: item.table_status = 0 EvtManager.dispatch_event(EnumEvent.EVT_FRONT_PAGE_REFRESH)
def update_order(self): for order_num, order_item in self.di_order_item.items(): # print order_num result = HttpService.get_instance().get_order_info(order_num) if result is not None: di_place_dishes_items = dict() #order_item.di_place_dishes_items.clear() for info in result: dishes_item = DataOrderDishesItem() dishes_item.dishes_code = info["vch_dish_code"] dishes_details = CtrlDishesInfo.get_instance().get_dishes_item(dishes_item.dishes_code) spec_id = info["num_spec_id"] style_id = info["num_style_id"] if dishes_details is not None: for spec in dishes_details.dishes_spec: if spec["id"] == spec_id: dishes_item.dishes_spec = spec dishes_item.dishes_price = spec['num_price'] if dishes_details.dishes_style is not None: for style in dishes_details.dishes_style: if style["id"] == style_id: dishes_item.dishes_style = style if dishes_item['ch_mountadd'] == 1: dishes_item.dishes_price += style['num_priceadd'] if info["num_dish_withdraw_id"] is None or info["num_dish_withdraw_id"] == 0: dishes_item.dishes_count = info["num_dish_num"] else: dishes_item.dishes_retreat_count = 1 # dishes_item.dishes_spec_discount = info["num_special_discount"] dishes_item.dishes_demand = info["vch_customized_style"] dishes_key = str(dishes_item.dishes_code) + str(spec_id) + str(style_id) if dishes_key in order_item.di_place_dishes_items: di_place_dishes_items[dishes_key].dishes_spec_discount = \ order_item.di_place_dishes_items[dishes_key].dishes_spec_discount if dishes_key in di_place_dishes_items: di_place_dishes_items[dishes_key].dishes_count = \ di_place_dishes_items[dishes_key].dishes_count + dishes_item.dishes_count di_place_dishes_items[dishes_key].dishes_retreat_count = \ di_place_dishes_items[dishes_key].dishes_retreat_count + \ dishes_item.dishes_retreat_count if info["num_dish_withdraw_id"] is None or info["num_dish_withdraw_id"] == 0: di_place_dishes_items[dishes_key].li_dishes_log_id.append(info["dishId"]) else: if info["num_dish_withdraw_id"] is None or info["num_dish_withdraw_id"] == 0: dishes_item.li_dishes_log_id.append(info["dishId"]) order_dishes_item_tmp = {dishes_key: dishes_item} di_place_dishes_items.update(order_dishes_item_tmp) order_item.di_place_dishes_items = di_place_dishes_items for (dishes_key, dishes_item) in order_item.di_place_dishes_items.items(): if dishes_item.dishes_count == 0: del order_item.di_place_dishes_items[dishes_key]
def add_dishes_in_place_order(self, table_id, order_id, order_item, dishes_count=1): item = self.get_add_dishes_item(order_item) json_str = "[{\"code\":" + item.dishes_code + ",\"spec\":" + str(item.dishes_spec_id) + ",\"style\":"\ + str(item.dishes_style_id) + ",\"num\":" + str(dishes_count) + ",\"customizedStyle\":\"" \ + item.customer_demand + "\"}]" result = HttpService.get_instance().add_dishes(table_id, order_id, json_str) if result is not None: return True return False
def delete_dishes(self, del_reason=""): cur_order_item = self.di_order_item[self.cur_order_num] if self.cur_dishes_key in cur_order_item.di_order_dishes_items: del cur_order_item.di_order_dishes_items[self.cur_dishes_key] order_id = 0 table_num = CtrlTableInfo.get_instance().get_selected_item_id() if table_num is not None: table_item = CtrlTableInfo.get_instance().get_table_item(table_num) order_id = table_item.order_id if self.cur_dishes_key in cur_order_item.di_place_dishes_items: dishes_item = cur_order_item.di_place_dishes_items[self.cur_dishes_key] for dishes_log_id in dishes_item.li_dishes_log_id: HttpService.get_instance().del_dishes(order_id, dishes_log_id, dishes_item.dishes_code, 1, del_reason) cur_order_item.di_place_dishes_items[self.cur_dishes_key].dishes_retreat_count += 1 del cur_order_item.di_place_dishes_items[self.cur_dishes_key] self.cur_dishes_key = None EvtManager.dispatch_event(EnumEvent.EVT_ORDER_DISHES_ITEMS_REFRESH)
def login(self, user, password): try: if user == '0000' and password == '0000': self.check_result = True else: self.check_result = HttpService.get_instance().login(user, password) if self.check_result: self.user = user self.password = password except Exception, ex: print Exception, ":", ex self.check_result = False
def check_out(self, table_id, order_id, order_code, bill_num): order_item = CtrlOrderInfo.get_instance().get_order_item(order_code) if order_item is not None: li_dishes_discount = list() di_place_dishes_items = order_item.di_place_dishes_items for (key, item) in di_place_dishes_items.items(): dishes_id = CtrlDishesInfo.get_instance().get_id_by_code(item.dishes_code) dishes_discount = DataDishesDiscount(dishes_id, item.dishes_code, item.dishes_spec_discount) li_dishes_discount.append(dishes_discount) order_item.bill_num = bill_num '''calculate the real pay of bill''' order_item.order_money = (order_item.real_money * order_item.all_discount) - order_item.free_price '''send request to remote service''' HttpService.get_instance().check_out(table_id, order_id, order_item.all_discount, order_item.free_price, CtrlFrontLogin.get_instance().get_user(), 1, order_item.cashier_cash, order_item.cashier_coupon, order_item.cashier_membership, order_item.cashier_pos, order_item.cashier_group, order_item.cashier_credit, order_item.cashier_boss_sign, order_item.bill_num, order_item.change_num, li_dishes_discount) '''change table status to waiting clean state''' CtrlTableInfo.get_instance().change_table_status(table_id, 3)
def get_waiter_items(self): if len(self.li_waiter_items) == 0: if CONFIG.useTemp: for i in range(5): item = DataWaiterItem() item.waiter_id = i item.waiter_name = u"服务员" + str(i + 1) self.li_waiter_items.append(item) else: result = HttpService.get_instance().get_waiter_items() if result is not None: for info in result: item = DataWaiterItem() item.waiter_id = info["id"] item.waiter_name = info["name"] self.li_waiter_items.append(item) return self.li_waiter_items
def get_type_items(self): if len(self.li_type_items) == 0: if CONFIG.useTemp: for i in range(10): item = DataTypeItem() item.type_id = i + 10000 item.type_name = u"菜品" + str(i) self.li_type_items.append(item) else: result = HttpService.get_instance().get_dishes_type_items() if result is not None: for info in result: item = DataTypeItem() item.type_id = info['id'] item.type_name = info['vch_name'] self.li_type_items.append(item) return self.li_type_items
def get_table_items(self): if len(self.li_table_items) == 0: if CONFIG.useTemp: for i in range(20): item = DataTableItem() item.table_id = i item.table_num = str(i) item.table_name = u"餐桌" + str(i + 1) item.table_type = u"餐桌" if random.randint(4, 6) == 6 else u"麻将桌" item.table_area = u"大厅" if random.randint(4, 6) == 6 else u"二楼" item.table_status = 0 item.people_num = random.randint(4, 10) if item.table_status != 0: item.amount = round(random.random() * 123, 2) self.li_table_items.append(item) else: result = HttpService.get_instance().get_table_items() if result is not None: for info in result: item = DataTableItem() item.table_id = info['num_table_id'] item.table_num = str(info['num_table_id']) item.table_name = info['vch_name'] item.open_time = info['dt_checkin_start'] item.table_type = info['vch_table_type'] item.table_area = info['vch_table_area'] item.table_status = int(info['ch_openflag']) item.people_num = info['num_people_amount'] item.customer_num = info['num_consumers'] item.order_id = info['num_order_id'] item.order_num = info['vch_code'] if item.table_status != 0: table_order_tmp = {item.table_id: item.order_num} self.di_table_order.update(table_order_tmp) #if item.table_status == 2: # CtrlOrderInfo.get_instance().create_order(item.order_num, 2) # item.amount = round(random.random() * 123, 2) self.li_table_items.append(item) return self.li_table_items
def get_dishes_items(self): if len(self.li_dishes_items) == 0: if CONFIG.useTemp: brevity_dict = {0: 'HUG', 1: 'TDS', 2: 'YXRS', 3: 'JTB', 4: 'YJR', 5: 'XJDMG'} for i in range(100): item = DataDishesItem() item.dishes_id = i item.dishes_code = str(i + 1) item.dishes_name = u"测试菜" + str(i) item.dishes_type = random.randint(10000, 10009) index_ = random.randint(0, 5) item.dishes_brevity = brevity_dict[index_] self.li_dishes_items.append(item) else: result = HttpService.get_instance().get_dishes_items() if result is not None: for info in result: item = DataDishesItem() item.dishes_id = info['id'] item.dishes_code = info['vch_code'] item.dishes_name = info['vch_name'] item.dishes_type = info['num_category']['id'] item.dishes_brevity = info['vch_spell'] item.dishes_spec = info['num_spec_id'] item.dishes_unit = info['num_unit'] item.dishes_style = info['num_style_id'] item.dishes_discount = info['num_discount'] self.li_dishes_items.append(item) else: if self.cur_dishes_type is not None: li_dishes_items = list() for dishes in self.li_dishes_items: if dishes.dishes_type == self.cur_dishes_type or self.cur_dishes_type == 10000: li_dishes_items.append(dishes) return li_dishes_items return self.li_dishes_items
from app.app_manager import AppManager from app.front.config import CONFIG from service.http_json.http_service import HttpService from framework.core import Log import wx import sys import json CONFIG.useTemp = False app = wx.App() if not CONFIG.useTemp: config = open(sys.path[0] + "\\..\\front_config.json", "r") content = config.read() config_json = json.loads(content) HttpService.get_instance().initialize(config_json['svr_address'], config_json['svr_port']) try: CtrlTableInfo.get_instance().get_table_items() CtrlDishesInfo.get_instance().get_dishes_items() CtrlWorker.get_instance().start() except Exception, ex: print Exception, ":", ex Log.initialize("manager.log") AppManager.get_instance().initialize('front') AppManager.get_instance().switch_to_application('Login', 'front') app.MainLoop()
try: for item in cur_order_item: if len(li_json_str) > 5: li_json_str = li_json_str + "," di_json_str = "{\"code\":" + item.dishes_code + ",\"spec\":" + str(item.dishes_spec_id) + ",\"style\":"\ + str(item.dishes_style_id) + ",\"num\":" + str(item.dishes_count) + ",\"customizedStyle\":\"" \ + item.customer_demand + "\"}" li_json_str = li_json_str + di_json_str except Exception, ex: print Exception, ":", ex li_json_str = li_json_str + "]" if CONFIG.useTemp: pass else: if is_place_order: result = HttpService.get_instance().place_order(table_id, order_id, li_json_str) else: result = HttpService.get_instance().add_dishes(table_id, order_id, li_json_str) if result is not None: cur_order_item = self.di_order_item[self.cur_order_num] for (key, item) in cur_order_item.di_order_dishes_items.items(): if key in cur_order_item.di_place_dishes_items: cur_order_item.di_place_dishes_items[key].dishes_count += item.dishes_count else: cur_place_item_tmp = {key: item} cur_order_item.di_place_dishes_items.update(cur_place_item_tmp) cur_order_item.di_order_dishes_items.clear() for info in result: dishes_key = str(info["code"]) + str(info["spec"]) + str(info["style"])