class VentaAdmin( wx.Dialog ): def __init__(self, parent, id, title): wx.Dialog.__init__(self, parent, id, title) self.SetSize((800,600)) self.SetMinSize((800,600)) self.rows = list() self.list_ctrl = wx.ListCtrl(self, style=wx.LC_REPORT) image2 = wx.Image('images/add.png', wx.BITMAP_TYPE_ANY).ConvertToBitmap() self.btn_add = wx.BitmapButton(self, id = -1, bitmap = image2, size = (24,24)) image3 = wx.Image('images/red.gif', wx.BITMAP_TYPE_ANY).ConvertToBitmap() self.btn_prt = wx.BitmapButton(self, id = -1, bitmap = image3, size = (24,24)) image5 = wx.Image('images/delete.png', wx.BITMAP_TYPE_ANY).ConvertToBitmap() self.btn_del = wx.BitmapButton(self, id = -1, bitmap = image5, size = (24,24)) self.DBM = DBManager() self.__generateContent() Publisher().subscribe(self.__redefine, ("producto_seleccionado_sin_cancha")) def __generateContent( self, myfilter=None ): rows = self.rows self.list_ctrl.InsertColumn(0, "Codigo") self.list_ctrl.InsertColumn(1, "Marca") self.list_ctrl.InsertColumn(2, "Descripcion") self.list_ctrl.InsertColumn(3, "Cantidad") self.list_ctrl.InsertColumn(4, "Precio") total = 0 index = 0 for row in rows: if row[0] != '1000': self.list_ctrl.InsertStringItem(index, row[0]) self.list_ctrl.SetStringItem(index, 1, row[1]) self.list_ctrl.SetStringItem(index, 2, row[2]) self.list_ctrl.SetStringItem(index, 3, row[4]) self.list_ctrl.SetStringItem(index, 4, "$ %.2f" % float(row[3])) total += float( row[3] ) if index % 2: self.list_ctrl.SetItemBackgroundColour(index, "white") else: self.list_ctrl.SetItemBackgroundColour(index, "gray") index += 1 self.list_ctrl.InsertStringItem(index, 'TOTAL') self.list_ctrl.SetStringItem(index, 1, '') self.list_ctrl.SetStringItem(index, 2, '') self.list_ctrl.SetStringItem(index, 3, '') self.list_ctrl.SetStringItem(index, 4, '$ %.2f' % float(total)) self.list_ctrl.SetItemBackgroundColour(index, "red") self.list_ctrl.SetItemTextColour(index, "yellow") self.Bind(wx.EVT_BUTTON, self.onAdd, self.btn_add) self.Bind(wx.EVT_BUTTON, self.onClose, self.btn_prt) sizer = wx.BoxSizer(wx.VERTICAL) sizer2 = wx.BoxSizer(wx.HORIZONTAL) sizer2.Add(self.btn_add, 0, wx.ALL, 1) sizer2.Add(self.btn_del, 0, wx.ALL, 1) sizer2.Add(self.btn_prt, 0, wx.ALL, 1) sizer.Add(sizer2, 0, wx.ALL, 1) sizer.Add(self.list_ctrl, 1, wx.EXPAND) self.SetSizer(sizer) self.Show(True) Publisher().subscribe(self.onSearch, ("producto_buscado")) Publisher().subscribe(self.refreshAfterAdd, ("producto_agregado")) def __redefine( self, evt ): self.list_ctrl.ClearAll() producto = evt.data['producto'] cantidad = evt.data['cantidad'] self.rows.append( (producto[1], producto[3], producto[2], str(producto[4]), cantidad, producto[0] ) ) self.__generateContent() def onSearch( self, evt ): self.list_ctrl.ClearAll() search_stock = SearchStock(self, -1, "Buscar") self.__generateContent(evt.data) def onAdd( self, evt ): seleccionar = SeleccionarProducto(self, -1, "Agregar un producto a la compra") def onClose( self, evt ): dlg = wx.MessageDialog(self, 'Seguro que desea cerrar la venta?', 'Cerrar Venta?', wx.YES_NO | wx.ICON_QUESTION) result = dlg.ShowModal() == wx.ID_YES if result: dlg.Destroy() self.Destroy() for producto in self.rows: stock = int( self.DBM.getCantidadByCodigo( str( producto[0] ) )[0] ) nueva_cantidad = stock - int(producto[4]) self.DBM.reduceStockById( producto[5], nueva_cantidad ) self.DBM.addProductTrans( datetime.datetime.now().strftime("%m/%d/%y %H:%M:%S").__str__(), producto[4], 1, producto[3], producto[5], 1, 1, 0, 0 ) def refreshAfterAdd( self, evt ): self.list_ctrl.ClearAll() self.__generateContent()
from DBManager import DBManager db = DBManager() #print db.userLogin("gaccardo", "pepe1234") #print db.countCanchas() #print db.getCanchaStatus('01/07/2013 00:00:00', 1, '14') #print db.getProductos() #print db.getCanchasNames() #print db.getCanchaPrecio(1) #print db.getCuentas() #print db.productosPedido() #print db.addProduct( '1102', 'Calculo', 'Esta', '459.94', '10', '45') #print db.changeUserStatus('gaccardo', 1) #print db.getClienteReservado('01/26/2013 00:00:00', 2, '14') #print db.getCanchaStatus('01/26/2013 00:00:00', 2, '14') print db.getCantidadByCodigo('1002')