Beispiel #1
0
    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)
Beispiel #2
0
 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)
Beispiel #3
0
    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)
Beispiel #4
0
    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)
Beispiel #5
0
    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)
Beispiel #6
0
 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)
Beispiel #7
0
    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]
Beispiel #8
0
    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
Beispiel #9
0
    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)
Beispiel #10
0
 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
Beispiel #11
0
    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)
Beispiel #12
0
    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
Beispiel #13
0
    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
Beispiel #14
0
    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
Beispiel #15
0
    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
Beispiel #16
0
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()
Beispiel #17
0
        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"])