Beispiel #1
0
class LeftPanel_view(wx.Panel):
    def __init__(self, parent, id):
        self.parent = parent	#obtiene el splitter del lado izquierdo
        self.GetParent = self.parent.GetParent()	#Obtiene el padre en este caso es la ventana de opening
        self.controller = Stock()
        self.controller.get_stock(self.GetParent.pos)
        self.controller_sale = Sale()
        self.helpers_sale = Sale_helper(self.GetParent)
        img_logo = Platform("/img/09_64x64.png")
        img_product = Platform("/img/product.png")
        
        wx.Panel.__init__(self, parent, id)
        self.p_info = wx.Panel(self, -1, style=wx.DOUBLE_BORDER|wx.TAB_TRAVERSAL)
        self.notebook = wx.Notebook(self, -1, style=0)
        self.notebook_panel = wx.Panel(self.notebook, -1)
        self.bm_logo = wx.StaticBitmap(self, -1, wx.Bitmap(img_logo.string, wx.BITMAP_TYPE_ANY))
        self.l_japos = wx.StaticText(self, -1, "JAPOS")
        self.tc_search = wx.TextCtrl(self.notebook_panel, -1, "", style=wx.TE_PROCESS_ENTER)
        self.l_search = wx.StaticText(self.notebook_panel, -1, "Search...")
        
        self.lc_products = wx.ListCtrl(self.notebook_panel, -1, style=wx.LC_REPORT|wx.SUNKEN_BORDER)
        self.lc_products.InsertColumn(0,'Nombre') 
        self.lc_products.InsertColumn(1,'Precio')
        self.lc_products.InsertColumn(2,'Disponible')
        self.lc_products.SetColumnWidth(0, 150)
        self.lc_products.SetColumnWidth(1, 50)
        self.lc_products.SetColumnWidth(2, 85)

        self.list_products()
            
        self.l_info = wx.StaticText(self, -1, "Informacion del producto:")
        self.bm_product = wx.StaticBitmap(self.p_info, -1, wx.Bitmap(img_product.string, wx.BITMAP_TYPE_ANY))
        self.l_name = wx.StaticText(self.p_info, -1, "Nombre")
        self.l_available = wx.StaticText(self.p_info, -1, "Disponible: ")
        self.l_barcode = wx.StaticText(self.p_info, -1, "codigo")
        self.l_stock = wx.StaticText(self.p_info, -1, "Existencia: 16")
        self.sl_1 = wx.StaticLine(self.p_info, -1)
        self.l_psale = wx.StaticText(self.p_info, -1, "Precio venta:")
        self.l_vsale = wx.StaticText(self.p_info, -1, "0")
        self.l_discount = wx.StaticText(self.p_info, -1, "Descuento:")
        self.l_vdiscount = wx.StaticText(self.p_info, -1, "0")
        self.l_pbuy = wx.StaticText(self.p_info, -1, "Precio compra:")
        self.l_vbuy = wx.StaticText(self.p_info, -1, "0")
        self.l_tax = wx.StaticText(self.p_info, -1, "Impuesto:")
        self.l_vtax = wx.StaticText(self.p_info, -1, "0")
        self.sl_2 = wx.StaticLine(self.p_info, -1)
        self.l_description = wx.StaticText(self.p_info, -1, "Descripcion del producto aqui")
        
        self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.get_product_info, self.lc_products)
        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.add_product_sale, self.lc_products)
        self.tc_search.Bind(wx.EVT_TEXT_ENTER, self.search)

        self.__set_properties()
        self.__do_layout()
        # end wxGlade

    def __set_properties(self):
        # begin wxGlade: LeftPanel_view.__set_properties
        self.l_japos.SetForegroundColour(wx.Colour(255, 255, 255))
        self.l_japos.SetFont(wx.Font(11, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Lucida Grande"))
        self.l_search.SetForegroundColour(wx.Colour(255, 255, 255))
        self.l_info.SetForegroundColour(wx.Colour(255, 255, 255))
        self.l_info.SetFont(wx.Font(15, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, ""))
        self.l_name.SetFont(wx.Font(11, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
        self.l_available.SetFont(wx.Font(11, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Lucida Grande"))
        self.l_barcode.SetFont(wx.Font(11, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Lucida Grande"))
        self.l_stock.SetFont(wx.Font(11, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Lucida Grande"))
        self.l_psale.SetFont(wx.Font(11, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Lucida Grande"))
        self.l_vsale.SetFont(wx.Font(11, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Lucida Grande"))
        self.l_discount.SetFont(wx.Font(11, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Lucida Grande"))
        self.l_vdiscount.SetFont(wx.Font(11, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Lucida Grande"))
        self.l_pbuy.SetFont(wx.Font(11, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Lucida Grande"))
        self.l_vbuy.SetFont(wx.Font(11, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Lucida Grande"))
        self.l_tax.SetFont(wx.Font(11, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Lucida Grande"))
        self.l_vtax.SetFont(wx.Font(11, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Lucida Grande"))
        self.p_info.SetBackgroundColour(wx.Colour(255, 255, 255))
        # end wxGlade

    def __do_layout(self):
        # begin wxGlade: LeftPanel_view.__do_layout
        s_left = wx.BoxSizer(wx.VERTICAL)
        s_info = wx.BoxSizer(wx.VERTICAL)
        gs_row2 = wx.FlexGridSizer(2, 4, 0, 0)
        s_info_nombre = wx.BoxSizer(wx.HORIZONTAL)
        gs_row1 = wx.FlexGridSizer(2, 2, 0, 0)
        s_products = wx.BoxSizer(wx.VERTICAL)
        s_left.Add(self.bm_logo, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5)
        s_left.Add(self.l_japos, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
        s_products.Add(self.tc_search, 0, wx.LEFT|wx.RIGHT|wx.EXPAND, 10)
        s_products.Add(self.l_search, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.EXPAND, 10)
        s_products.Add(self.lc_products, 1, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 10)
        self.notebook_panel.SetSizer(s_products)
        self.notebook.AddPage(self.notebook_panel, "Productos")
        s_left.Add(self.notebook, 2, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 10)
        s_left.Add(self.l_info, 0, wx.LEFT|wx.RIGHT|wx.EXPAND, 10)
        s_info_nombre.Add(self.bm_product, 0, wx.LEFT|wx.TOP|wx.BOTTOM|wx.ALIGN_CENTER_VERTICAL, 5)
        gs_row1.Add(self.l_name, 0, wx.RIGHT|wx.EXPAND, 10)
        gs_row1.Add(self.l_available, 0, wx.RIGHT|wx.ALIGN_RIGHT, 15)
        gs_row1.Add(self.l_barcode, 0, wx.RIGHT|wx.EXPAND, 15)
        gs_row1.Add(self.l_stock, 0, wx.RIGHT|wx.ALIGN_RIGHT, 15)
        gs_row1.AddGrowableCol(0)
        gs_row1.AddGrowableCol(2)
        s_info_nombre.Add(gs_row1, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 10)
        s_info.Add(s_info_nombre, 0, wx.EXPAND, 0)
        s_info.Add(self.sl_1, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.EXPAND, 10)
        gs_row2.Add(self.l_psale, 0, 0, 10)
        gs_row2.Add(self.l_vsale, 0, 0, 10)
        gs_row2.Add(self.l_discount, 0, 0, 10)
        gs_row2.Add(self.l_vdiscount, 0, wx.RIGHT|wx.ALIGN_RIGHT, 10)
        gs_row2.Add(self.l_pbuy, 0, 0, 0)
        gs_row2.Add(self.l_vbuy, 0, 0, 0)
        gs_row2.Add(self.l_tax, 0, 0, 0)
        gs_row2.Add(self.l_vtax, 0, 0, 0)
        gs_row2.AddGrowableCol(1)
        s_info.Add(gs_row2, 0, wx.LEFT|wx.RIGHT|wx.EXPAND, 10)
        s_info.Add(self.sl_2, 0, wx.ALL|wx.EXPAND, 10)
        s_info.Add(self.l_description, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.EXPAND, 10)
        self.p_info.SetSizer(s_info)
        s_left.Add(self.p_info, 0, wx.ALL|wx.EXPAND, 10)
        self.SetSizer(s_left)
        s_left.Fit(self)
        # end wxGlade

    def search(self, evt):
        self.lc_products.DeleteAllItems()
        name = self.tc_search.GetValue()
        self.controller.get_stock(self.GetParent.pos, name)
        self.list_products()

    def list_products(self):
        for data in self.controller.values:
            index = self.lc_products.InsertStringItem(0, data[0])
            self.lc_products.SetStringItem(index,1, data[1])
            self.lc_products.SetStringItem(index,2, data[2])
            
    def get_product_info(self, evt):
	    """
	    Selecciona un producto y muestra su informacion a detalle
	    """
	    self.currentItem = evt.m_itemIndex
	    name = self.lc_products.GetItemText(self.currentItem)
	    self.set_info_product(name)

    def add_product_sale(self, evt):
	    """
	    Agrega un producto a la venta, cuando presionan enter sobre el producto
	    o al dar doble click sobre el.
	    """
	    if self.GetParent.wp_right.statusSale or self.GetParent.wp_right.statusSalePending:
		    self.currentItem = evt.m_itemIndex
		    name = self.lc_products.GetItemText(self.currentItem)
		    price = self.helpers_sale.get_column_text(self.lc_products, self.currentItem,1)
		    stock = self.helpers_sale.get_column_text(self.lc_products, self.currentItem,2)
		    amount = self.helpers_sale.insert_product(self.currentItem, name, price)
		    print "Agregando el producto..."
	    else:
			print "Crear venta"

    def set_info_product(self, name):
        self.controller.get_info_product(name)
        self.p_info.Layout()
        self.l_name.SetLabel(self.controller.info_product.product.name)
        self.l_available.SetLabel(" Disponible "+str(self.controller.info_product.product.stock))
        self.l_barcode.SetLabel(str(self.controller.info_product.product.barcode))
        self.l_stock.SetLabel(" Existencia " + str(self.controller.info_product.stock))
        self.l_vsale.SetLabel(str(self.controller.info_product.price))
        self.l_vdiscount.SetLabel(str(self.controller.info_product.product.discount))
        self.l_vbuy.SetLabel(str(self.controller.info_product.product.purchase_price))
        self.l_vtax.SetLabel(str(self.controller.info_product.tax))
        self.l_description.SetLabel(str(self.controller.info_product.product.description))