Esempio n. 1
0
 def get_price(self):
     import util
     return util.money_to_str(self.price)
Esempio n. 2
0
 def add_item(self, **kwargs):
     try:
         if 'transaction_key' not in self.session:
             trans = Transaction2()
             trans.owner = self.users.get_current_user()
             trans.put()
             self.session['transaction_key'] = str(trans.key())
         else:
             trans = Transaction2.get(Key(encoded=self.session['transaction_key']))    
         t = self.request.get('data')
         if t.startswith('$'):
             #misc processing
             l = t.split()
             price, color_inp = l[0], l[1]
             #if '.' in price:
             #    z = price.split('.')
             #    dollars, cents = z[0], z[1]
             #    price = int(dollars) + int(cents)*100
             price = str_to_money(price[1:])
             item = LineItem2()
             item.category = "MISC"
             item.category_code = "$$$"
             item.price = price
             item.quantity = 1
             color = ColorCode.all().filter('code =', color_inp).get()
             if color == None:
                 raise "Bad color"
             item.color = color.color
             item.color_code = color.code
             item.discount = color.discount
             item.put()
             trans.items.append(str(item.key()))
             if len(trans.items) % 2 == 0:
                 class_val = 'even'
             else:
                 class_val = 'odd'
             html = """<tr class="%(class)s" id="%(key)s"><td>%(item_id)s</td><td>%(description)s</td><td>$%(price)s</td><td>%(quantity)s</td><td>%(discount)s%%</td><td>$%(total)s</td><td><a class="delete_button" onclick="void_item('%(key)s')">void</a></td></tr>""" % {'key': str(item.key()), 'item_id': str(item.category_code), 'description': str(item.category), 'price': money_to_str(price), 'quantity': str(1), 'discount':str(item.get_discount()), 'total': item.total_str(), "class":class_val}
         elif t.startswith(':'):
             #gift certificate processing
             price = str_to_money(t[1:])
             item = LineItem2()
             item.category = 'Gift Card Use'
             item.category_code = ":::"
             item.price = -price
             item.quantity = 1
             item.color = 'Special'
             item.color_code = ':::'
             item.discount = 0
             item.put()
             trans.items.append(str(item.key()))
             if len(trans.items) % 2 == 0:
                 class_val = 'even'
             else:
                 class_val = 'odd'
             html = """<tr class="%(class)s" id="%(key)s"><td>%(item_id)s</td><td>%(description)s</td><td>$%(price)s</td><td>%(quantity)s</td><td>%(discount)s%%</td><td>$%(total)s</td><td><a class="delete_button" onclick="void_item('%(key)s')">void</a></td></tr>""" % {'key': str(item.key()), 'item_id': str(item.category_code), 'description': str(item.category), 'price': money_to_str(price), 'quantity': str(1), 'discount':str(item.get_discount()), 'total': item.total_str(), "class":class_val}
         else:
             item = LineItem2()
             l = t.split()
             if len(l) == 2:
                 quantity, cat_code, color = 1, l[0], l[1]
             else:
                 quantity, cat_code, color = l[0], l[1], l[2]
             item.quantity = int(quantity)
             if color.startswith('%'):
                 #custom precentage handler
                 item.discount = int(color[1:])
                 item.color = 'CUSTOM'
                 item.color_code = '%%%'
             else:                
                 color = ColorCode.all().filter('code =', color).filter('display =', True).fetch(1)[0]
             category = ItemCategory.all().filter('code =', cat_code).filter('display =', True).fetch(1)[0]
             item.set_color(color)
             item.set_category(category)
             item.put()
             trans.items.append(str(item.key()))
             if len(trans.items) % 2 == 0:
                 class_val = 'even'
             else:
                 class_val = 'odd'
             total = item.total()
             html = """<tr class="%(class)s" id="%(key)s"><td>%(item_id)s</td><td>%(description)s</td><td>%(price)s</td><td>%(quantity)s</td><td>%(discount)s%%</td><td>$%(total)#.2f</td><td><a class="delete_button" onclick="void_item('%(key)s')">void</a></td></tr>""" % {'key': str(item.key()), 'item_id': str(cat_code), 'description': str(category.description), 'price': money_to_str(category.price), 'quantity': str(quantity), 'discount':str(item.get_discount()), 'total': total, "class":class_val}
         trans.put()
         return {'valid':True, 'html':html, 'total_row':str(trans.total_str()), 'sess':repr(self.session)}
     except:
         return {'valid':False, 'payload':traceback.format_exc()}