예제 #1
0
    def ricercaArticolo(self, isNode= False):

        def on_ricerca_articolo_hide(anagWindow, anag, isNode=False):
            if anag.dao is None:
                anagWindow.destroy()
                return

            anagWindow.destroy()
            if isNode:
                print "SEI PADRE"
                self.mostraArticoloPadre(anag.dao)
            else:
                print "SEI FIGLIO"
                self.mostraArticoloFiglio(anag.dao)

        codice = None
        codiceABarre = None
        denominazione = None
        codiceArticoloFornitore = None

        from promogest.ui.RicercaComplessaArticoli import RicercaComplessaArticoli
        anag = RicercaComplessaArticoli(denominazione=denominazione,
                                        codice=codice,
                                        codiceABarre=codiceABarre,
                                        codiceArticoloFornitore=codiceArticoloFornitore)
        anag.setTreeViewSelectionType(GTK_SELECTIONMODE_SINGLE)

        anagWindow = anag.getTopLevel()
        anagWindow.connect("hide",
                           on_ricerca_articolo_hide,
                           anag, isNode)
        anagWindow.set_transient_for(self.dialogTopLevel)
        anagWindow.show_all()
예제 #2
0
    def on_combobox_articolo_search_clicked(self, combobox):
        #richiama la ricerca degli articoli

        def refresh_combobox_articolo(anagWindow):
            self._resultsCount = self._ricerca.getResultsCount()
            resultsElement = self._ricerca.getResultsElement()
            if not (self._resultsCount > 0):
                self.set_active(0)
                return

            if self._resultsCount == 1:
                id = resultsElement.id
                res = leggiArticolo(id)
                combobox.refresh(id, res["denominazione"], res)
            else:
                combobox.refresh(
                    None,
                    ('< %d articoli selezionati... >' % self._resultsCount),
                    None,
                    rowType='old_search')
            if self._callName is not None:
                self._callName()

        if combobox.on_selection_changed():
            if self._ricerca is None:
                from promogest.ui.RicercaComplessaArticoli import RicercaComplessaArticoli
                self._ricerca = RicercaComplessaArticoli()
                if not self._filter:
                    self._ricerca.setTreeViewSelectionType(
                        gtk.SELECTION_SINGLE)
            else:
                self._ricerca.refresh()
            anagWindow = self._ricerca.getTopLevel()
            returnWindow = combobox.get_toplevel()
            anagWindow.set_transient_for(returnWindow)
            anagWindow.connect("hide", refresh_combobox_articolo)
            self._ricerca.getTopLevel().show_all()

        elif self._callName is not None:
            self._callName()
    def on_icon_press(self,entry,position,event):
        """
        scopettina agganciata ad un segnale generico
        """
        if position.value_nick == "primary":

            def refresh_entry(anagWindow):
                self._resultsCount = self._ricerca.getResultsCount()
                resultsElement = self._ricerca.getResultsElement()
                if not(self._resultsCount > 0):
                    self.set_active(0)
                    return

                if self._resultsCount == 1:
                    id = resultsElement.id
                    res = leggiArticolo(id)
                    denominazione = res["denominazione"]
                    self.set_text(denominazione)
                    self._id = id
                    self._container = res["daoArticolo"]
                    try:
                        self.anaedit.on_id_articolo_customcombobox_changed()
                    except:
                        pass

            from promogest.ui.RicercaComplessaArticoli import RicercaComplessaArticoli
            self._ricerca = RicercaComplessaArticoli()
            if not self._filter:
                self._ricerca.setTreeViewSelectionType(GTK_SELECTIONMODE_SINGLE)
            else:
                self._ricerca.refresh()
            anagWindow = self._ricerca.getTopLevel()
            returnWindow = self.get_toplevel()
            anagWindow.set_transient_for(returnWindow)
            anagWindow.connect("hide",
                               refresh_entry)
            self._ricerca.show_all()
        else:                            #secondary
            self.set_text("")
            self._id = None
            self.grab_focus()
class ArticoloSearchWidget(CustomComboBoxSearch):
    """ Classe base per la ricerca articoli """
    __gtype_name__ = 'ArticoloSearchWidget'
    def __init__(self):
        CustomComboBoxSearch.__init__(self)

        self.connect('changed',
                           self.on_entry_key_press_event)
        #self.setChangedHandler(idHandler)

        #self.connect("destroy-event", self.on_widget_destroy)
        self.connect("icon-press", self.on_icon_press)
        self._callName = None
        self._ricerca = None
        self._filter = True
        self._resultsCount = 0
        self.clear()


    def on_icon_press(self,entry,position,event):
        """
        scopettina agganciata ad un segnale generico
        """
        if position.value_nick == "primary":

            def refresh_entry(anagWindow):
                self._resultsCount = self._ricerca.getResultsCount()
                resultsElement = self._ricerca.getResultsElement()
                if not(self._resultsCount > 0):
                    self.set_active(0)
                    return

                if self._resultsCount == 1:
                    id = resultsElement.id
                    res = leggiArticolo(id)
                    denominazione = res["denominazione"]
                    self.set_text(denominazione)
                    self._id = id
                    self._container = res["daoArticolo"]
                    try:
                        self.anaedit.on_id_articolo_customcombobox_changed()
                    except:
                        pass

            from promogest.ui.RicercaComplessaArticoli import RicercaComplessaArticoli
            self._ricerca = RicercaComplessaArticoli()
            if not self._filter:
                self._ricerca.setTreeViewSelectionType(GTK_SELECTIONMODE_SINGLE)
            else:
                self._ricerca.refresh()
            anagWindow = self._ricerca.getTopLevel()
            returnWindow = self.get_toplevel()
            anagWindow.set_transient_for(returnWindow)
            anagWindow.connect("hide",
                               refresh_entry)
            self._ricerca.show_all()
        else:                            #secondary
            self.set_text("")
            self._id = None
            self.grab_focus()

    def ricercaDao(self, keyname):
        from promogest.dao.Articolo import Articolo
        cli = Articolo().select(denominazione=keyname, cancellato=True, batchSize=40)
        model = self.completion.get_model()
        model.clear()
        for m in cli:
            model.append(('empty', m.id, m.denominazione, m))

    def setId(self, value):
        self.insertComboboxSearchArticolo(self, value)


    def getId(self):
        """
            funziona modificata per passare una lista di id necessari alla ricerca
            prima veniva creata una tabella con i risultati della ricerca
            e la si usava per le ricerche successive, adesso si devono far passare i dati via codice
        """
        if self.isEmpty():
            self.clear()
        elif (self._resultsCount > 1) and (self._ricerca is not None):
            self._ricerca.refresh()
            return self.idlist
        return self._id

    def getData(self):
        return self._container


    def insertComboboxSearchArticolo(self, combobox, idArticolo, clear=False, filter=True):
        res = leggiArticolo(idArticolo)
        combobox.refresh(idArticolo, res["denominazione"], res, clear, filter)
        self._container = res

    def clear(self):
        self.set_active(0)

    def setOnChangedCall(self, callName=None):
        self._callName = callName

    def setSingleValue(self):
        self._filter = False

    def setMultipleValues(self):
        self._filter = True
예제 #5
0
class ArticoloSearchWidget(CustomComboBoxSearch):
    """ Classe base per la ricerca articoli """
    def __init__(self):
        CustomComboBoxSearch.__init__(self)

        idHandler = self.connect('changed',
                                 self.on_combobox_articolo_search_clicked)
        self.setChangedHandler(idHandler)

        self._callName = None
        self._ricerca = None
        self._filter = True
        self._resultsCount = 0
        self.clear()

    def on_combobox_articolo_search_clicked(self, combobox):
        #richiama la ricerca degli articoli

        def refresh_combobox_articolo(anagWindow):
            self._resultsCount = self._ricerca.getResultsCount()
            resultsElement = self._ricerca.getResultsElement()
            if not (self._resultsCount > 0):
                self.set_active(0)
                return

            if self._resultsCount == 1:
                id = resultsElement.id
                res = leggiArticolo(id)
                combobox.refresh(id, res["denominazione"], res)
            else:
                combobox.refresh(
                    None,
                    ('< %d articoli selezionati... >' % self._resultsCount),
                    None,
                    rowType='old_search')
            if self._callName is not None:
                self._callName()

        if combobox.on_selection_changed():
            if self._ricerca is None:
                from promogest.ui.RicercaComplessaArticoli import RicercaComplessaArticoli
                self._ricerca = RicercaComplessaArticoli()
                if not self._filter:
                    self._ricerca.setTreeViewSelectionType(
                        gtk.SELECTION_SINGLE)
            else:
                self._ricerca.refresh()
            anagWindow = self._ricerca.getTopLevel()
            returnWindow = combobox.get_toplevel()
            anagWindow.set_transient_for(returnWindow)
            anagWindow.connect("hide", refresh_combobox_articolo)
            self._ricerca.getTopLevel().show_all()

        elif self._callName is not None:
            self._callName()

    def setId(self, value):
        self.insertComboboxSearchArticolo(self, value)

    def getId(self):
        if self.isEmpty():
            self.clear()
        elif (self._resultsCount > 1) and (self._ricerca is not None):
            self._ricerca.refresh()

        return self._id

    def getData(self):
        return self._container

    def insertComboboxSearchArticolo(self,
                                     combobox,
                                     idArticolo,
                                     clear=False,
                                     filter=True):
        res = leggiArticolo(idArticolo)
        combobox.refresh(idArticolo, res["denominazione"], res, clear, filter)

    def clear(self):
        Environment.connection.execStoredProcedure('ArticoloFilteredDestroy',
                                                   ())
        self.set_active(0)

    def setOnChangedCall(self, callName=None):
        self._callName = callName

    def setSingleValue(self):
        self._filter = False

    def setMultipleValues(self):
        self._filter = True