def _earnings_week_(_id): store_id = c.session['store'] cnt_weeks = {} cnt = 0 if c.is_GET(): with orm.session_scope() as ss: # type:c.typeof_Session lst = ss.query(orm.판매_품목) \ .filter_by(isdel='X') \ .filter(orm.판매_품목.d >= "2018-01-01") \ .filter(orm.판매_품목.d <= "2018-12-31") \ .all() for each in lst: d = each.d.strftime('%Y-%m-%d') if d not in cnt_weeks: cnt_weeks[d] = {'영업일자': d, '총거래액': 0, '총할인액': 0, '실거래액': 0, '세금': 0, '판매이익': 0, '영수건수' : 0 } cnt_weeks[d]['총거래액'] += each.단가 cnt_weeks[d]['총할인액'] += each.할인 cnt_weeks[d]['실거래액'] += each.합계 cnt_weeks[d]['세금'] += each.세 cnt_weeks[d]['판매이익'] += (each.공급가 + each.면세) cnt_weeks[d]['영수건수'] += 1 return c.jsonify(cnt_weeks) c.abort(404)
def _system_menu2(): store_id = c.session['store'] only = c.get_settings(orm, store_id) id = c.dict_item(orm, store_id) il = list(id.values()) # print(id, il) form_types[0]['l'] = il if c.is_GET(): if c.is_json(): with orm.session_scope() as ss: # type:c.typeof_Session menu2 = ss.query(orm.상품_품목) \ .filter_by(s=store_id) \ .filter_by(isdel=c.X) \ .all() menu2 = c.for_json_l(menu2) menu2 = {i['i']: i for i in menu2} menu2[0] = {'품목명': '미지정', '단가': 0} return c.jsonify(d=only.j['메뉴'], l=menu2) else: return c.render_template('system/menu2.html', item=None, form_types=form_types, MENUBORDER_WIDTH=c.MENUBORDER_WIDTH, MENUBORDER_HEIGHT=c.MENUBORDER_HEIGHT, ) elif c.is_POST(): with orm.session_scope() as ss: # type:c.typeof_Session next_one = c.newitem_web(orm.setting, c.session) next_one.j = only.j.copy() for each in c.data_POST(): next_one.j['메뉴'] = c.json.loads(each) ss.add(next_one) return 'modified'
def _system_printer(): store_id = c.session['store'] only = c.get_settings(orm, store_id) available_networks = [] networks = only.j['네트워크'] adjusted = only.j['프린터'] for each in networks: if each['enabled']: available_networks.append(each['기기명']) for each in adjusted: each['연결기기명'] = networks[each['network_id']]['기기명'] for each in form_types: if each['name'] == '연결기기명': each['l'] = available_networks if c.is_GET(): if c.is_json(): return c.jsonify(adjusted) else: return c.display(thead=thead, form_types=form_types, defnet=available_networks[0] if len(available_networks) > 0 else '') elif c.is_POST(): with orm.session_scope() as ss: # type:c.typeof_Session next_one = c.newitem_web(orm.settings, c.session) next_one.j = only.j.copy() for each in c.data_POST(): next_one.j['프린터'] = c.json.loads(each) for each in next_one.j['프린터']: for i in range(len(networks)): if each['연결기기명'] == networks[i]['기기명']: each['network_id'] = i ss.add(next_one) return 'modified'
def _system_table(group_id): sid = c.session['store'] if c.is_json(): if c.is_GET(): with orm.session_scope() as ss: # type:c.typeof_Session l = c.for_json_l(table_query(ss, sid, group_id).all()) return c.jsonify(l) elif c.is_PUT(): with orm.session_scope() as ss: # type:c.typeof_Session for k, v in c.data_POST().items(): ol = json.loads(k) for o in ol: r = c.newitem_web(orm.설정_테이블, c.session) c.merge_(o, r) r.group_id = group_id r.issync = None ss.merge(r) return 'modified' else: with orm.session_scope() as ss: # type:c.typeof_Session if c.is_GET(): gl = c.for_json_l(tablegroup_query(ss, sid).all()) return c.display(item=c.newitem_web(orm.설정_테이블그룹, c.session), form_types=form_types, gl=gl, selected=group_id, TABLEBORDER_WIDTH=c.TABLEBORDER_WIDTH, TABLEBORDER_HEIGHT=c.TABLEBORDER_HEIGHT, ) c.abort(404)
def _system_menugroup(): sid = c.session['store'] if c.is_GET(): if c.is_json(): with orm.session_scope() as ss: # type:c.typeof_Session l = c.for_json_l(menugroup_query(ss, sid).all()) return c.jsonify(l) return c.display(item=c.newitem_web(orm.설정_메뉴그룹, c.session), thead=thead, form_types=form_types, id=sid)
def _board_board_(_id): store_id = c.session['store'] if c.is_GET(): if True: # c.is_json() l = [] with orm.session_scope() as ss: # type:c.typeof_Session q1 = ss.query(orm.상품_품목) \ .filter_by(s=store_id) \ .filter_by(isdel='X') \ .all() for x in q1: dummy = x.__dict__.copy() del dummy['_sa_instance_state'] for k, v in dummy.items(): if v is None: dummy[k] = '' elif isinstance(v, date): dummy[k] = v.isoformat() elif isinstance(v, datetime): dummy[k] = v.isoformat(' ') l.append(dummy) return c.jsonify(l) elif c.is_POST(): with orm.session_scope() as ss: # type:c.typeof_Session if c.data_POST()['i'] == '신규': only = c.newitem_web(orm.상품_품목, c.session) for k, v in c.data_POST().items(): if hasattr(only, k) and k != 'i': if getattr(only, k) != v: setattr(only, k, v) ss.add(only) return 'modified' elif c.data_POST()['i'] != '신규': only = c.simple_query(ss, orm.상품_품목, s=c.session['store']) for x in only: if int(x.i) == int(c.data_POST()['i']): for k, v in c.data_POST().items(): if hasattr(x, k) and k != 'i': if getattr(x, k) != v: print(k, 'is changed') setattr(x, k, v) x.issync = None return 'modified' return 'modified'
def _goods_itemgroup(): store_id = c.session['store'] if c.is_GET(): if c.is_json(): with orm.session_scope() as ss: # type:c.typeof_Session lst = c.for_json_l(itemgroup_query(ss, store_id).all()) return c.jsonify(lst) return c.display(item=c.newitem_web(orm.상품_분류, c.session), thead=thead, form_types=form_types, no=store_id)
def _system_menu(group_id): sid = c.session['store'] id = c.dict_item(orm, sid) il = list(id.values()) # print(id, il) form_types[0]['l'] = il if c.is_json(): if c.is_GET(): with orm.session_scope() as ss: # type:c.typeof_Session l = c.for_json_l(menu_query(ss, sid, group_id).all()) for i in l: try: i['메뉴명'] = id[i['품목코드']] except: i['메뉴명'] = '미지정' return c.jsonify(l) elif c.is_PUT(): with orm.session_scope() as ss: # type:c.typeof_Session for k, v in c.data_POST().items(): ol = json.loads(k) for o in ol: r = c.newitem_web(orm.설정_메뉴, c.session) c.merge_(o, r) r.group_id = group_id try: r.품목코드 = c.fs2i(o['메뉴명'].split('|', 1)[0].strip()) except: r.품목코드 = 0 r.issync = None ss.merge(r) return 'modified' else: with orm.session_scope() as ss: # type:c.typeof_Session if c.is_GET(): gl = c.for_json_l(menugroup_query(ss, sid).all()) _g = [i for i in gl if i['id'] == group_id][0] return c.display( item=c.newitem_web(orm.설정_메뉴그룹, c.session), form_types=form_types, gl=gl, selected=group_id, 상하칸=_g['상하칸'], 좌우칸=_g['좌우칸'], MENUBORDER_WIDTH=c.MENUBORDER_WIDTH, MENUBORDER_HEIGHT=c.MENUBORDER_HEIGHT, ) c.abort(404)
def _info_store1_list(): if c.is_GET(): if True: # c.is_json() l = [] with orm.session_scope() as ss: # type:c.typeof_Session q1 = ss.query(orm.공통_출력물관리) \ .filter_by(s=c.session['store']) \ .all() for x in q1: dummy = x.__dict__.copy() del dummy['_sa_instance_state'] for k, v in dummy.items(): if v is None: dummy[k] = '' l.append(dummy) return c.jsonify(l)
def _info_account_(store_id): if c.is_GET(): if c.is_json(): return c.jsonify(_get_account(store_id).for_json()) else: return c.display() elif c.is_POST() or c.is_PUT(): with orm.session_scope() as ss: # type:c.typeof_Session only = ss.query(orm.account) \ .filter_by(s=store_id) \ .one() if only.패스워드 == c.pw_hash(c.data_POST('구패스워드')): only.패스워드 = c.pw_hash(c.data_POST('패스워드')) else: return 'diffrent' return 'modified'
def _system_network(): store_id = c.session['store'] only = c.get_settings(orm, store_id) if c.is_GET(): if c.is_json(): return c.jsonify(only.j['네트워크']) else: return c.display(thead=thead, form_types=form_types) elif c.is_POST(): with orm.session_scope() as ss: # type:c.typeof_Session next_one = c.newitem_web(orm.settings, c.session) next_one.j = only.j.copy() for each in c.data_POST(): next_one.j['네트워크'] = c.json.loads(each) ss.add(next_one) return 'modified'
def _goods_item_upload_(_id): store_id = c.session['store'] gd = c.dict_itemgroup(orm, store_id) if c.is_json(): if c.is_GET(): with orm.session_scope() as ss: # type:c.typeof_Session only = c.simple_query(ss, orm.상품_품목, no=_id) only.분류 = gd[only.분류no] return c.jsonify(c.for_json(only)) elif c.is_POST(): with orm.session_scope() as ss: # type:c.typeof_Session only = c.newitem_web(orm.상품_품목, c.session) for k, v in c.data_POST().items(): if hasattr(only, k) and k != 'no': if getattr(only, k) != v: setattr(only, k, v) only.분류no = c.fs2i(c.data_POST()['분류'].split('|', 1)[0].strip()) ss.add(only) return 'added' elif c.is_PUT(): with orm.session_scope() as ss: # type:c.typeof_Session only = c.simple_query(ss, orm.상품_품목, no=_id) if only.s == c.session['store']: for k, v in c.data_POST().items(): if hasattr(only, k) and k != 'no': if getattr(only, k) != v: print(k, 'is changed') setattr(only, k, v) only.분류no = c.fs2i(c.data_POST()['분류'].split('|', 1)[0].strip()) only.issync = None return 'modified' else: c.abort(403) elif c.is_DELETE(): with orm.session_scope() as ss: # type:c.typeof_Session only = c.simple_query(ss, orm.상품_품목, no=_id) if only.s == c.session['store']: only.isdel = c.O only.issync = None return 'deleted' else: c.abort(403) c.abort(404)
def _goods_itemgroup_(_id): store_id = c.session['store'] if c.is_GET(): if True: # c.is_json() l = [] with orm.session_scope() as ss: # type:c.typeof_Session q1 = ss.query(orm.상품_분류) \ .filter_by(s=c.session['store']) \ .filter_by(isdel='X') \ .all() for x in q1: dummy = x.__dict__.copy() del dummy['_sa_instance_state'] for k, v in dummy.items(): if v is None: dummy[k] = '' elif isinstance(v, date): dummy[k] = v.isoformat() elif isinstance(v, datetime): dummy[k] = v.isoformat(' ') l.append(dummy) return c.jsonify(l) elif c.is_PUT(): with orm.session_scope() as ss: # type:c.typeof_Session temp = [] for i in c.data_POST(): for j in c.json.loads(i): temp.append(j) only = c.simple_query(ss, orm.상품_분류, s=c.session['store']) for i in temp: if '코드' not in i: only1 = c.newitem_web(orm.상품_분류, c.session) only1.분류명 = i['대분류'] ss.add(only1) elif i['코드'] != None: for x in only: if x.i == i['코드']: x.분류명 = i['대분류'] x.isdel = i['isdel'] return 'modified'
def _system_menugroup_(_id): sid = c.session['store'] if c.is_json(): if c.is_GET(): with orm.session_scope() as ss: # type:c.typeof_Session r = c.simple_query(ss, orm.설정_메뉴그룹, id=_id) return c.jsonify(c.for_json(r)) elif c.is_POST(): with orm.session_scope() as ss: # type:c.typeof_Session r = c.newitem_web(orm.설정_메뉴그룹, c.session) cnt = menugroup_query(ss, sid).count() r.번호 = cnt + 1 for k, v in c.data_POST().items(): if hasattr(r, k) and k != 'id': if getattr(r, k) != v: setattr(r, k, v) ss.add(r) return 'added' elif c.is_PUT(): with orm.session_scope() as ss: # type:c.typeof_Session r = c.simple_query(ss, orm.설정_메뉴그룹, id=_id) if r.sid == c.session['store']: for k, v in c.data_POST().items(): if hasattr(r, k) and k != 'id': if getattr(r, k) != v: print(k, 'is changed') setattr(r, k, v) r.issync = None return 'modified' else: c.abort(403) elif c.is_DELETE(): with orm.session_scope() as ss: # type:c.typeof_Session r = c.simple_query(ss, orm.설정_메뉴그룹, id=_id) if r.sid == c.session['store']: r.isdel = c.O l = menugroup_query(ss, sid).all() for i in range(len(l)): l[i].번호 = i + 1 r.issync = None return 'deleted' else: c.abort(403) c.abort(404)
def _goods_itemgroup_(_id): store_id = c.session['store'] if c.is_json(): if c.is_GET(): with orm.session_scope() as ss: # type:c.typeof_Session only = c.simple_query(ss, orm.상품_분류, no=_id) return c.jsonify(c.for_json(only)) elif c.is_POST(): with orm.session_scope() as ss: # type:c.typeof_Session only = c.newitem_web(orm.상품_분류, c.session) cnt = itemgroup_query(ss, store_id).count() only.번호 = cnt + 1 for k, v in c.data_POST().items(): if hasattr(only, k) and k != 'no': if getattr(only, k) != v: setattr(only, k, v) ss.add(only) return 'added' elif c.is_PUT(): with orm.session_scope() as ss: # type:c.typeof_Session only = c.simple_query(ss, orm.상품_분류, no=_id) if only.s == c.session['store']: for k, v in c.data_POST().items(): if hasattr(only, k) and k != 'no': if getattr(only, k) != v: print(k, 'is changed') setattr(only, k, v) only.issync = None return 'modified' else: c.abort(403) elif c.is_DELETE(): with orm.session_scope() as ss: # type:c.typeof_Session only = c.simple_query(ss, orm.상품_분류, no=_id) if only.s == c.session['store']: only.isdel = c.O l = itemgroup_query(ss, store_id).all() for i in range(len(l)): l[i].번호 = i + 1 only.issync = None return 'deleted' else: c.abort(403) c.abort(404)
def _system_table2(): shop_id = c.session['store'] only = c.get_settings(orm, shop_id) if c.is_GET(): if c.is_json(): return c.jsonify(only.j['테이블']) else: return c.render_template('system/table2.html', item=None, form_types=form_types, TABLEBORDER_WIDTH=c.TABLEBORDER_WIDTH, TABLEBORDER_HEIGHT=c.TABLEBORDER_HEIGHT, ) elif c.is_POST(): with orm.session_scope() as ss: # type:c.typeof_Session next_one = c.newitem_web(orm.setting, c.session) next_one.j = only.j.copy() for each in c.data_POST(): next_one.j['테이블'] = c.json.loads(each) ss.add(next_one) return 'modified'
def _info_staff_list(): if c.is_GET(): if True: # c.is_json() l = [] with orm.session_scope() as ss: # type:c.typeof_Session q1 = ss.query(orm.정보_직원) \ .filter_by(s=c.session['store']) \ .all() for x in q1: dummy = x.__dict__.copy() del dummy['_sa_instance_state'] for k, v in dummy.items(): if v is None: dummy[k] = '' elif isinstance(v, date): dummy[k] = v.isoformat() elif isinstance(v, datetime): dummy[k] = v.isoformat(' ') l.append(dummy) return c.jsonify(l)
def _goods_item_modify(): store_id = c.session['store'] with orm.session_scope() as ss: # type:c.typeof_Session gd = c.dict_itemgroup(orm, store_id) gl = list(gd.values()) form_types[0]['l'] = gl # print(gd, gl) if c.is_GET(): if c.is_json(): l = c.for_json_l( c.simple_query(ss, orm.상품_품목, s=store_id, order_by_asc='no')) for i in l: i['분류'] = gd[i['분류no']] i['idx'] = i['no'] i['enabled'] = True return c.jsonify(l) return c.display(item=c.newitem_web(orm.상품_품목, c.session), thead=thead, form_types=form_types, no=store_id, gl=gl)
def _info_storepwd(store_id): if c.is_GET(): if c.is_json(): return c.jsonify(_get_store(store_id).for_json()) else: return c.display() elif c.is_POST() or c.is_PUT(): with orm.session_scope() as ss: # type:c.typeof_Session only = ss.query(orm.정보_가게) \ .filter_by(no=store_id) \ .one() for k, v in c.data_POST().items(): if getattr(only, k) != v: print(k, 'is changed') if k in ['개점일', '폐점일']: try: setattr(only, k, parser.parse(v)) except: setattr(only, k, None) else: setattr(only, k, v) only.issync = None return c.display()
def _system_config1_(store_id): if c.is_json(): if c.is_GET(): d = { k + c.SEP + v['k']: v['v'] for k, v in get_config1(store_id).items() } return c.jsonify(d) elif c.is_PUT(): with orm.session_scope() as ss: # type:c.typeof_Session only = c.get_settings(orm, store_id) next_one = c.newitem_web(orm.settings, c.session) next_one.j = only.j.copy() for k, v in c.data_POST().items(): if c.SEP in k and 'checkbox' not in k: _n = k.split(c.SEP, 1)[0] _k = k.split(c.SEP, 1)[1] _v = v next_one.j['설정'][_n] = {'k': _k, 'v': _v} ss.add(next_one) return 'modified' c.abort(404)
def _system_menugroup_(_id): store_id = c.session['store'] if c.is_json(): if c.is_GET(): with orm.session_scope() as ss: # type:c.typeof_Session q1 = ss.query(orm.상품_분류) \ .filter_by(s=store_id) \ .filter_by(isdel='X') \ .all() for x in q1: dummy = x.__dict__.copy() del dummy['_sa_instance_state'] for k, v in dummy.items(): if v is None: dummy[k] = '' elif isinstance(v, date): dummy[k] = v.isoformat() elif isinstance(v, datetime): dummy[k] = v.isoformat(' ') l.append(dummy) return c.jsonify(l) c.abort(404)
def _earnings_day_(_id, dates, datee): store_id = c.session['store'] cnt_days = {} cnt_days['상품목록'] = {} cnt_days['상품분류'] = {} cnt_days['일자별'] = {} cnt = 0 if c.is_GET(): with orm.session_scope() as ss: # type:c.typeof_Session lst = ss.query(orm.판매_품목) \ .filter_by(s=store_id) \ .filter_by(isdel='X') \ .filter(orm.판매_품목.d >= dates) \ .filter(orm.판매_품목.d <= datee) \ .all() for each in lst: d = each.d.strftime('%Y-%m-%d') if d not in cnt_days['일자별']: cnt_days['일자별'][d] = { '영업일자': d, '총거래액': 0, '총할인액': 0, '실거래액': 0, '세금': 0, '판매이익': 0, '영수건수': 0, '분류별': {}, '상품별': {}, '수단별': {}, '영수증별': {} } cnt_days['일자별'][d]['총거래액'] += each.단가 cnt_days['일자별'][d]['총할인액'] += each.할인 cnt_days['일자별'][d]['실거래액'] += each.합계 cnt_days['일자별'][d]['세금'] += each.세 cnt_days['일자별'][d]['판매이익'] += (each.공급가 + each.면세) cnt_days['일자별'][d]['영수건수'] += 1 p = str(each.품목pi) if p not in cnt_days['일자별'][d]['분류별']: cnt_days['일자별'][d]['분류별'][p] = { '총거래액': 0, '총할인액': 0, '실거래액': 0, '세금': 0, '판매이익': 0, '영수건수': 0 } cnt_days['일자별'][d]['분류별'][p]['총거래액'] += each.단가 cnt_days['일자별'][d]['분류별'][p]['총할인액'] += each.할인 cnt_days['일자별'][d]['분류별'][p]['실거래액'] += each.합계 cnt_days['일자별'][d]['분류별'][p]['세금'] += each.세 cnt_days['일자별'][d]['분류별'][p]['판매이익'] += (each.공급가 + each.면세) cnt_days['일자별'][d]['분류별'][p]['영수건수'] += 1 s = each.품목i if s not in cnt_days['일자별'][d]['상품별']: cnt_days['일자별'][d]['상품별'][s] = { 'ppi': {}, '총거래액': 0, '총할인액': 0, '실거래액': 0, '세금': 0, '판매이익': 0, '영수건수': 0 } cnt_days['일자별'][d]['상품별'][s]['ppi'] = each.품목pi cnt_days['일자별'][d]['상품별'][s]['총거래액'] += each.단가 cnt_days['일자별'][d]['상품별'][s]['총할인액'] += each.할인 cnt_days['일자별'][d]['상품별'][s]['실거래액'] += each.합계 cnt_days['일자별'][d]['상품별'][s]['세금'] += each.세 cnt_days['일자별'][d]['상품별'][s]['판매이익'] += (each.공급가 + each.면세) cnt_days['일자별'][d]['상품별'][s]['영수건수'] += 1 lst1 = ss.query(orm.상품_품목) \ .filter_by(s=store_id) \ .filter_by(isdel='X') \ .all() for each in lst1: cnt_days['상품목록'].update({each.i: each.품목명}) lst2 = ss.query(orm.상품_분류) \ .filter_by(s=store_id) \ .filter_by(isdel='X') \ .all() for each in lst2: cnt_days['상품분류'].update({each.i: each.분류명}) lst3 = ss.query(orm.결제) \ .filter_by(s=store_id) \ .filter_by(isdel='X') \ .filter(orm.결제.d >= dates) \ .filter(orm.결제.d <= datee) \ .all() for each in lst3: d = each.d.strftime('%Y-%m-%d') cashm = {'현금', '카드', '카드(임의)', '포인트'} for each1 in cashm: cnt_days['일자별'][d]['수단별'][each1] = { '판매i': 0, '실거래액': 0, '세금': 0, '판매이익': 0, '영수건수': 0 } for each in lst3: d = each.d.strftime('%Y-%m-%d') cash = each.결제수단 # if cash not in cnt_days['일자별'][d]['수단별']: # cnt_days['일자별'][d]['수단별'][cash] = {'판매i' : 0 , '실거래액': 0, '세금': 0, '판매이익': 0, '영수건수': 0} cnt_days['일자별'][d]['수단별'][cash]['실거래액'] += each.합계 cnt_days['일자별'][d]['수단별'][cash]['세금'] += each.세 cnt_days['일자별'][d]['수단별'][cash]['판매이익'] += (each.공급가 + each.면세) cnt_days['일자별'][d]['수단별'][cash]['영수건수'] += 1 lst4 = ss.query(orm.판매) \ .filter_by(s=store_id) \ .filter_by(isdel='X') \ .filter(orm.판매.d >= dates) \ .filter(orm.판매.d <= datee) \ .all() d = 0 d1 = 0 d2 = 0 d3 = 0 for each in lst4: d = each.d.strftime('%Y-%m-%d') d1 = each.주문일시.strftime('%H:%M:%S') if each.결제일시: d2 = each.결제일시.strftime('%H:%M:%S') if each.취소일시: d3 = each.취소일시.strftime('%H:%M:%S') r = each.i if r not in cnt_days['일자별'][d]['영수증별']: cnt_days['일자별'][d]['영수증별'][r] = { '총거래액': 0, '총할인액': 0, '실거래액': 0, '세금': 0, '판매이익': 0, '주문일시': d1, '결제일시': d2, '취소일시': d3, '테이블명': "", '상품': {} } cnt_days['일자별'][d]['영수증별'][r]['총거래액'] = each.총금액 cnt_days['일자별'][d]['영수증별'][r]['총할인액'] = each.총할인 cnt_days['일자별'][d]['영수증별'][r]['실거래액'] = each.합계 cnt_days['일자별'][d]['영수증별'][r]['세금'] = each.세 cnt_days['일자별'][d]['영수증별'][r]['판매이익'] = (each.공급가 + each.면세) cnt_days['일자별'][d]['영수증별'][r]['테이블명'] = each.table_idx + 1 for each2 in cashm: cnt_days['일자별'][d]['영수증별'][r][each2] = 0 for each1 in lst3: if each1.판매i == r: cash1 = each1.결제수단 cnt_days['일자별'][d]['영수증별'][r][cash1] += each1.합계 for each3 in lst: g = each3.품목i if each3.판매i == r: if g not in cnt_days['일자별'][d]['영수증별'][r]['상품']: cnt_days['일자별'][d]['영수증별'][r]['상품'][g] = { '총거래액': 0, '총할인액': 0, '실거래액': 0, '세금': 0, '판매이익': 0, '영수건수': 0 } cnt_days['일자별'][d]['영수증별'][r]['상품'][g][ '총거래액'] += each3.단가 cnt_days['일자별'][d]['영수증별'][r]['상품'][g][ '총할인액'] += each3.할인 cnt_days['일자별'][d]['영수증별'][r]['상품'][g][ '실거래액'] += each3.합계 cnt_days['일자별'][d]['영수증별'][r]['상품'][g]['세금'] += each3.세 cnt_days['일자별'][d]['영수증별'][r]['상품'][g]['판매이익'] += ( each3.공급가 + each3.면세) cnt_days['일자별'][d]['영수증별'][r]['상품'][g]['영수건수'] += 1 return c.jsonify(cnt_days) c.abort(404)
def _earnings_day_(_id, dates, datee): store_id = c.session['store'] cnt_days = {} cnt_days['상품목록'] = {} cnt_days['상품분류'] = {} cnt_days['일자별'] = {} cnt_days['테이블목록'] = {} cashm = {'현금', '카드', '카드(임의)', '포인트'} cnt = 0 if c.is_GET(): with orm.session_scope() as ss: # type:c.typeof_Session only = c.get_settings(orm, store_id) tbl = only.j['테이블'] cnt_days['테이블목록'] = tbl lst = ss.query(orm.판매_품목) \ .filter_by(s=store_id) \ .filter_by(isdel='X') \ .filter(orm.판매_품목.d >= dates) \ .filter(orm.판매_품목.d <= datee) \ .all() lst0 = ss.query(orm.판매) \ .filter_by(s=store_id) \ .filter_by(isdel='X') \ .filter(orm.판매.d >= dates) \ .filter(orm.판매.d <= datee) \ .all() for each0 in lst0: d = each0.d.strftime('%Y-%m-%d') if d not in cnt_days['일자별']: cnt_days['일자별'][d] = { '영업일자': d, '구분': { '판매': { '총거래액': 0, '총할인액': 0, '실거래액': 0, '세금': 0, '면세': 0, '판매이익': 0, '판매건수': 0, '영수건수': 0 }, '반품': { '총거래액': 0, '총할인액': 0, '실거래액': 0, '세금': 0, '면세': 0, '판매이익': 0, '판매건수': 0, '영수건수': 0 } }, '총거래액': 0, '총할인액': 0, '실거래액': 0, '세금': 0, '면세': 0, '판매이익': 0, '판매건수': 0, '영수건수': 0, '분류별': {}, '상품별': {}, '수단별': {}, '수단별매출': {}, '수단별반품': {}, '영수증별': {}, '테이블별': {} } if each0.유형 == 'A' or each0.유형 == 'B': cnt_days['일자별'][d]['구분']['판매']['총거래액'] += each0.총금액 cnt_days['일자별'][d]['구분']['판매']['총할인액'] += each0.총할인 cnt_days['일자별'][d]['구분']['판매']['실거래액'] += each0.합계 cnt_days['일자별'][d]['구분']['판매']['세금'] += each0.세 cnt_days['일자별'][d]['구분']['판매']['면세'] += each0.면세 cnt_days['일자별'][d]['구분']['판매']['판매이익'] += (each0.공급가 + each0.면세) cnt_days['일자별'][d]['구분']['판매']['판매건수'] += 1 if each0.유형 == 'C': cnt_days['일자별'][d]['구분']['반품']['총거래액'] += each0.총금액 cnt_days['일자별'][d]['구분']['반품']['총할인액'] += each0.총할인 cnt_days['일자별'][d]['구분']['반품']['실거래액'] += each0.합계 cnt_days['일자별'][d]['구분']['반품']['세금'] += each0.세 cnt_days['일자별'][d]['구분']['반품']['면세'] += each0.면세 cnt_days['일자별'][d]['구분']['반품']['판매이익'] += (each0.공급가 + each0.면세) cnt_days['일자별'][d]['구분']['반품']['판매건수'] += -1 for each in lst: if each0.i == each.판매i: cnt_days['일자별'][d]['총거래액'] += each.단가 cnt_days['일자별'][d]['총할인액'] += each.할인 cnt_days['일자별'][d]['실거래액'] += each.합계 cnt_days['일자별'][d]['세금'] += each.세 cnt_days['일자별'][d]['면세'] += each.면세 cnt_days['일자별'][d]['판매이익'] += (each.공급가 + each.면세) cnt_days['일자별'][d]['판매건수'] += 1 if each.유형 == 'C': cnt_days['일자별'][d]['총거래액'] += -each.단가 cnt_days['일자별'][d]['총할인액'] += -each.할인 cnt_days['일자별'][d]['실거래액'] += -each.합계 cnt_days['일자별'][d]['세금'] += -each.세 cnt_days['일자별'][d]['면세'] += -each.면세 cnt_days['일자별'][d]['판매이익'] += -(each.공급가 + each.면세) cnt_days['일자별'][d]['판매건수'] += -1 p = str(each.품목pi) if p not in cnt_days['일자별'][d]['분류별']: cnt_days['일자별'][d]['분류별'][p] = { '총거래액': 0, '총할인액': 0, '실거래액': 0, '세금': 0, '판매이익': 0, '영수건수': 0 } cnt_days['일자별'][d]['분류별'][p]['총거래액'] += each.단가 cnt_days['일자별'][d]['분류별'][p]['총할인액'] += each.할인 cnt_days['일자별'][d]['분류별'][p]['실거래액'] += each.합계 cnt_days['일자별'][d]['분류별'][p]['세금'] += each.세 cnt_days['일자별'][d]['분류별'][p]['판매이익'] += (each.공급가 + each.면세) cnt_days['일자별'][d]['분류별'][p]['영수건수'] += 1 if each.유형 == 'C': cnt_days['일자별'][d]['분류별'][p]['총거래액'] += -each.단가 cnt_days['일자별'][d]['분류별'][p]['총할인액'] += -each.할인 cnt_days['일자별'][d]['분류별'][p]['실거래액'] += -each.합계 cnt_days['일자별'][d]['분류별'][p]['세금'] += -each.세 cnt_days['일자별'][d]['분류별'][p]['판매이익'] += -( each.공급가 + each.면세) cnt_days['일자별'][d]['분류별'][p]['영수건수'] += -1 s = each.품목i if s not in cnt_days['일자별'][d]['상품별']: cnt_days['일자별'][d]['상품별'][s] = { 'ppi': {}, '총거래액': 0, '총할인액': 0, '실거래액': 0, '세금': 0, '판매이익': 0, '영수건수': 0 } cnt_days['일자별'][d]['상품별'][s]['ppi'] = each.품목pi cnt_days['일자별'][d]['상품별'][s]['총거래액'] += each.단가 cnt_days['일자별'][d]['상품별'][s]['총할인액'] += each.할인 cnt_days['일자별'][d]['상품별'][s]['실거래액'] += each.합계 cnt_days['일자별'][d]['상품별'][s]['세금'] += each.세 cnt_days['일자별'][d]['상품별'][s]['판매이익'] += (each.공급가 + each.면세) cnt_days['일자별'][d]['상품별'][s]['영수건수'] += 1 if each.유형 == 'C': cnt_days['일자별'][d]['상품별'][s]['총거래액'] += -each.단가 cnt_days['일자별'][d]['상품별'][s]['총할인액'] += -each.할인 cnt_days['일자별'][d]['상품별'][s]['실거래액'] += -each.합계 cnt_days['일자별'][d]['상품별'][s]['세금'] += -each.세 cnt_days['일자별'][d]['상품별'][s]['판매이익'] += -( each.공급가 + each.면세) cnt_days['일자별'][d]['상품별'][s]['영수건수'] += -1 lst1 = ss.query(orm.상품_품목) \ .filter_by(s=store_id) \ .filter_by(isdel='X') \ .all() for each in lst1: cnt_days['상품목록'].update({each.i: each.품목명}) lst2 = ss.query(orm.상품_분류) \ .filter_by(s=store_id) \ .filter_by(isdel='X') \ .all() for each in lst2: cnt_days['상품분류'].update({each.i: each.분류명}) lst3 = ss.query(orm.결제) \ .filter_by(s=store_id) \ .filter_by(isdel='X') \ .filter(orm.결제.d >= dates) \ .filter(orm.결제.d <= datee) \ .all() for each in lst3: d = each.d.strftime('%Y-%m-%d') for each1 in cashm: cnt_days['일자별'][d]['수단별'][each1] = { '판매i': 0, '실거래액': 0, '세금': 0, '면세': 0, '판매이익': 0, '영수건수': 0 } cnt_days['일자별'][d]['수단별반품'][each1] = { '판매i': 0, '실거래액': 0, '세금': 0, '면세': 0, '판매이익': 0, '영수건수': 0 } cnt_days['일자별'][d]['수단별매출'][each1] = { '판매i': 0, '실거래액': 0, '세금': 0, '면세': 0, '판매이익': 0, '영수건수': 0 } for each in lst3: d = each.d.strftime('%Y-%m-%d') cash = each.결제수단 # if cash not in cnt_days['일자별'][d]['수단별']: # cnt_days['일자별'][d]['수단별'][cash] = {'판매i' : 0 , '실거래액': 0, '세금': 0, '면세' : 0, '판매이익': 0, '영수건수': 0} if each.유형 == 'A' or each.유형 == 'B': cnt_days['일자별'][d]['수단별매출'][cash]['실거래액'] += each.합계 cnt_days['일자별'][d]['수단별매출'][cash]['세금'] += each.세 cnt_days['일자별'][d]['수단별매출'][cash]['면세'] += each.면세 cnt_days['일자별'][d]['수단별매출'][cash]['판매이익'] += (each.공급가 + each.면세) cnt_days['일자별'][d]['수단별매출'][cash]['영수건수'] += 1 cnt_days['일자별'][d]['수단별'][cash]['실거래액'] += each.합계 cnt_days['일자별'][d]['수단별'][cash]['세금'] += each.세 cnt_days['일자별'][d]['수단별'][cash]['면세'] += each.면세 cnt_days['일자별'][d]['수단별'][cash]['판매이익'] += (each.공급가 + each.면세) cnt_days['일자별'][d]['수단별'][cash]['영수건수'] += 1 else: cnt_days['일자별'][d]['수단별반품'][cash]['실거래액'] += each.합계 cnt_days['일자별'][d]['수단별반품'][cash]['세금'] += each.세 cnt_days['일자별'][d]['수단별반품'][cash]['면세'] += each.면세 cnt_days['일자별'][d]['수단별반품'][cash]['판매이익'] += (each.공급가 + each.면세) cnt_days['일자별'][d]['수단별반품'][cash]['영수건수'] += 1 cnt_days['일자별'][d]['수단별'][cash]['실거래액'] += each.합계 cnt_days['일자별'][d]['수단별'][cash]['세금'] += each.세 cnt_days['일자별'][d]['수단별'][cash]['면세'] += each.면세 cnt_days['일자별'][d]['수단별'][cash]['판매이익'] += (each.공급가 + each.면세) cnt_days['일자별'][d]['수단별'][cash]['영수건수'] += -1 lst4 = ss.query(orm.판매) \ .filter_by(s=store_id) \ .filter_by(isdel='X') \ .filter(orm.판매.d >= dates) \ .filter(orm.판매.d <= datee) \ .all() d = 0 d1 = 0 d2 = 0 d3 = 0 for each in lst4: d = each.d.strftime('%Y-%m-%d') d1 = each.주문일시.strftime('%H:%M:%S') if each.결제일시: d2 = each.결제일시.strftime('%H:%M:%S') if each.취소일시: d3 = each.취소일시.strftime('%H:%M:%S') t = each.table_idx g = each.group_idx gt = str(g) + '-' + str(t) if gt not in cnt_days['일자별'][d]['테이블별']: cnt_days['일자별'][d]['테이블별'][gt] = { '총거래액': 0, '총할인액': 0, '실거래액': 0, '세금': 0, '면세': 0, '판매이익': 0, '영수건수': 0 } cnt_days['일자별'][d]['테이블별'][gt]['총거래액'] += each.총금액 cnt_days['일자별'][d]['테이블별'][gt]['총할인액'] += each.총할인 cnt_days['일자별'][d]['테이블별'][gt]['실거래액'] += each.합계 cnt_days['일자별'][d]['테이블별'][gt]['세금'] += each.세 cnt_days['일자별'][d]['테이블별'][gt]['면세'] += each.면세 cnt_days['일자별'][d]['테이블별'][gt]['판매이익'] += (each.공급가 + each.면세) if each.유형 == 'A' or each.유형 == 'B': cnt_days['일자별'][d]['테이블별'][gt]['영수건수'] += 1 else: cnt_days['일자별'][d]['테이블별'][gt]['영수건수'] += -1 r = each.i if r not in cnt_days['일자별'][d]['영수증별']: cnt_days['일자별'][d]['영수증별'][r] = { '총거래액': 0, '총할인액': 0, '실거래액': 0, '세금': 0, '면세': 0, '판매이익': 0, '주문일시': d1, '결제일시': d2, '취소일시': d3, '테이블명': "", '상품': {}, '영수건수': 0 } cnt_days['일자별'][d]['영수증별'][r]['총거래액'] = each.총금액 cnt_days['일자별'][d]['영수증별'][r]['총할인액'] = each.총할인 cnt_days['일자별'][d]['영수증별'][r]['실거래액'] = each.합계 cnt_days['일자별'][d]['영수증별'][r]['세금'] = each.세 cnt_days['일자별'][d]['영수증별'][r]['면세'] = each.면세 cnt_days['일자별'][d]['영수증별'][r]['판매이익'] = (each.공급가 + each.면세) cnt_days['일자별'][d]['영수증별'][r]['테이블명'] = each.table_idx + 1 cnt_days['일자별'][d]['영수증별'][r]['구분'] = each.유형 cnt_days['일자별'][d]['영수건수'] += 1 for each2 in cashm: cnt_days['일자별'][d]['영수증별'][r][each2] = 0 for each1 in lst3: if each1.판매i == r or each1.판매i == each.ci: cash1 = each1.결제수단 if each1.유형 == each.유형: cnt_days['일자별'][d]['영수증별'][r][cash1] += each1.합계 for each3 in lst: g = each3.품목i if each3.판매i == r or each.ci == each3.판매i: if g not in cnt_days['일자별'][d]['영수증별'][r]['상품']: cnt_days['일자별'][d]['영수증별'][r]['상품'][g] = { '총거래액': 0, '총할인액': 0, '실거래액': 0, '세금': 0, '판매이익': 0, '영수건수': 0 } if each.ci == each3.판매i: cnt_days['일자별'][d]['영수증별'][r]['상품'][g][ '총거래액'] += -each3.단가 cnt_days['일자별'][d]['영수증별'][r]['상품'][g][ '총할인액'] += -each3.할인 cnt_days['일자별'][d]['영수증별'][r]['상품'][g][ '실거래액'] += -each3.합계 cnt_days['일자별'][d]['영수증별'][r]['상품'][g][ '세금'] += -each3.세 cnt_days['일자별'][d]['영수증별'][r]['상품'][g][ '판매이익'] += -(each3.공급가 + each3.면세) cnt_days['일자별'][d]['영수증별'][r]['상품'][g][ '영수건수'] += -1 else: cnt_days['일자별'][d]['영수증별'][r]['상품'][g][ '총거래액'] += each3.단가 cnt_days['일자별'][d]['영수증별'][r]['상품'][g][ '총할인액'] += each3.할인 cnt_days['일자별'][d]['영수증별'][r]['상품'][g][ '실거래액'] += each3.합계 cnt_days['일자별'][d]['영수증별'][r]['상품'][g][ '세금'] += each3.세 cnt_days['일자별'][d]['영수증별'][r]['상품'][g]['판매이익'] += ( each3.공급가 + each3.면세) cnt_days['일자별'][d]['영수증별'][r]['상품'][g]['영수건수'] += 1 return c.jsonify(cnt_days) c.abort(404)
def _goods_item_(_id): store_id = c.session['store'] if c.is_GET(): if True: # c.is_json() l = [] with orm.session_scope() as ss: # type:c.typeof_Session q1 = ss.query(orm.상품_품목) \ .filter_by(s=store_id) \ .filter_by(isdel='X') \ .all() for x in q1: dummy = x.__dict__.copy() del dummy['_sa_instance_state'] for k, v in dummy.items(): if v is None: dummy[k] = '' elif isinstance(v, date): dummy[k] = v.isoformat() elif isinstance(v, datetime): dummy[k] = v.isoformat(' ') l.append(dummy) return c.jsonify(l) elif c.is_POST(): with orm.session_scope() as ss: # type:c.typeof_Session if c.data_POST()['i'] == '신규': only = c.newitem_web(orm.상품_품목, c.session) for k, v in c.data_POST().items(): if hasattr(only, k) and k != 'i': if getattr(only, k) != v: if k == '프린터j': _lst = [] if v != '': for ch in v.split(','): _lst.append(int(ch.strip())) v = _lst setattr(only, k, v) ss.add(only) return 'modified' elif c.data_POST()['i'] != '신규': only = c.simple_query(ss, orm.상품_품목, s=c.session['store']) for x in only: if int(x.i) == int(c.data_POST()['i']): for k, v in c.data_POST().items(): if hasattr(x, k) and k != 'i': if getattr(x, k) != v: if k == '프린터j': _lst = [] if v != '': for ch in v.split(','): _lst.append(int(ch.strip())) v = _lst print(k, 'is changed') setattr(x, k, v) x.issync = None return 'modified' temp = [] # for i in c.data_POST(): # for j in c.json.loads(i): # temp.append(j) # print(temp) # only = c.simple_query(ss, orm.상품_품목, s=c.session['store']) # for i in temp: # if '코드' not in i: # only1 = c.newitem_web(orm.상품_품목, c.session) # only1.품목명 = i['명'] # ss.add(only1) # # elif i['코드'] != None: # # for x in only: # if x.i == i['코드']: # x.품목명 = i['명'] # x.isdel = i['isdel'] return 'modified'
def _info_storepwd(store_id): if c.is_GET(): if c.is_json(): return c.jsonify(_get_store(store_id).for_json()) else: return c.display()
def _earnings_dayall_(_id): store_id = c.session['store'] cnt_days = {} cnt_days['상품목록'] = {} cnt_days['상품분류'] = {} cnt_days['일자별'] = {} cnt = 0 if c.is_GET(): with orm.session_scope() as ss: # type:c.typeof_Session lst = ss.query(orm.판매_품목) \ .filter_by(s=store_id) \ .filter_by(isdel='X') \ .all() for each in lst: d = each.d.strftime('%Y-%m-%d') if d not in cnt_days['일자별']: cnt_days['일자별'][d] = { '영업일자': d, '총거래액': 0, '총할인액': 0, '실거래액': 0, '세금': 0, '판매이익': 0, '영수건수': 0, '분류별': {}, '상품별': {}, '수단별': {} } cnt_days['일자별'][d]['총거래액'] += each.단가 cnt_days['일자별'][d]['총할인액'] += each.할인 cnt_days['일자별'][d]['실거래액'] += each.합계 cnt_days['일자별'][d]['세금'] += each.세 cnt_days['일자별'][d]['판매이익'] += (each.공급가 + each.면세) cnt_days['일자별'][d]['영수건수'] += 1 p = str(each.품목pi) if p not in cnt_days['일자별'][d]['분류별']: cnt_days['일자별'][d]['분류별'][p] = { '총거래액': 0, '총할인액': 0, '실거래액': 0, '세금': 0, '판매이익': 0, '영수건수': 0 } cnt_days['일자별'][d]['분류별'][p]['총거래액'] += each.단가 cnt_days['일자별'][d]['분류별'][p]['총할인액'] += each.할인 cnt_days['일자별'][d]['분류별'][p]['실거래액'] += each.합계 cnt_days['일자별'][d]['분류별'][p]['세금'] += each.세 cnt_days['일자별'][d]['분류별'][p]['판매이익'] += (each.공급가 + each.면세) cnt_days['일자별'][d]['분류별'][p]['영수건수'] += 1 s = each.품목i if s not in cnt_days['일자별'][d]['상품별']: cnt_days['일자별'][d]['상품별'][s] = { 'ppi': {}, '총거래액': 0, '총할인액': 0, '실거래액': 0, '세금': 0, '판매이익': 0, '영수건수': 0 } cnt_days['일자별'][d]['상품별'][s]['ppi'] = each.품목pi cnt_days['일자별'][d]['상품별'][s]['총거래액'] += each.단가 cnt_days['일자별'][d]['상품별'][s]['총할인액'] += each.할인 cnt_days['일자별'][d]['상품별'][s]['실거래액'] += each.합계 cnt_days['일자별'][d]['상품별'][s]['세금'] += each.세 cnt_days['일자별'][d]['상품별'][s]['판매이익'] += (each.공급가 + each.면세) cnt_days['일자별'][d]['상품별'][s]['영수건수'] += 1 lst1 = ss.query(orm.상품_품목) \ .filter_by(s=store_id) \ .filter_by(isdel='X') \ .all() for each in lst1: cnt_days['상품목록'].update({each.i: each.품목명}) lst2 = ss.query(orm.상품_분류) \ .filter_by(s=store_id) \ .filter_by(isdel='X') \ .all() for each in lst2: cnt_days['상품분류'].update({each.i: each.분류명}) lst1 = ss.query(orm.결제) \ .filter_by(s=store_id) \ .filter_by(isdel='X') \ .all() for each in lst1: d = each.d.strftime('%Y-%m-%d') cash = str(each.결제수단) if cash not in cnt_days['일자별'][d]['수단별']: cnt_days['일자별'][d]['수단별'][cash] = { '판매i': 0, '실거래액': 0, '세금': 0, '판매이익': 0, '영수건수': 0 } cnt_days['일자별'][d]['수단별'][cash]['실거래액'] += each.합계 cnt_days['일자별'][d]['수단별'][cash]['세금'] += each.세 cnt_days['일자별'][d]['수단별'][cash]['판매이익'] += (each.공급가 + each.면세) cnt_days['일자별'][d]['수단별'][cash]['영수건수'] += 1 return c.jsonify(cnt_days) c.abort(404)