def on_combobox_persona_giuridica_search_clicked(self, combobox):
        #richiama la ricerca clienti/fornitori

        def refresh_combobox_persona_giuridica(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
                if self._type == 'cliente':
                    res = leggiCliente(id)
                elif self._type == 'fornitore':
                    res = leggiFornitore(id)
                denominazione = res["ragioneSociale"]
                if denominazione == '':
                    denominazione = res["nome"] + ' ' + res["cognome"]
                combobox.refresh(id, denominazione, res)
            else:
                if self._type == 'cliente':
                    combobox.refresh(
                        None,
                        ('< %d clienti selezionati... >' % self._resultsCount),
                        None,
                        rowType='old_search')
                elif self._type == 'fornitore':
                    combobox.refresh(None, ('< %d fornitori 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:
                if self._type == 'cliente':
                    from promogest.ui.RicercaComplessaClienti import RicercaComplessaClienti
                    self._ricerca = RicercaComplessaClienti()
                elif self._type == 'fornitore':
                    from promogest.ui.RicercaComplessaFornitori import RicercaComplessaFornitori
                    self._ricerca = RicercaComplessaFornitori()
                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_persona_giuridica)
            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 = leggiCliente(id)
                    denominazione = res["ragioneSociale"]
                    if denominazione == '':
                        denominazione = res["nome"] + ' ' + res["cognome"]
                    self.set_text(denominazione)
                    self._id = id
                    #self.on_completion_match_main()

            from promogest.ui.RicercaComplessaClienti import RicercaComplessaClienti
            try:
                idCat = findIdFromCombobox(self.anaedit.
                id_categoria_clienti_customcombobox.combobox)
            except:
                idCat = None

            self._ricerca = RicercaComplessaClienti(idCategoria=idCat)
            #self._ricerca = RicercaClienti()

            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.clean_entry()
    def on_riferimento_combobox_entry_changed(self, combobox):
        stringContatti = 'Contatti..'
        stringClienti = 'Clienti..'
        stringFornitori = 'Fornitori..'


        def refresh_combobox(anagWindow, tipo):
            if anag.dao is None:
                id = None
            else:
                id = anag.dao.id
            if tipo == 'fornitore':
                res = leggiFornitore(id)
            elif tipo == 'cliente':
                res = leggiCliente(id)
            elif tipo == 'contatto':
                res = leggiContatto(id)

            if "ragioneSociale" in res and res["ragioneSociale"] != '':
                self.riferimento_combobox_entry.get_child().set_text(res["ragioneSociale"])
            else:
                self.riferimento_combobox_entry.get_child().set_text(res["cognome"] + ' ' + res["nome"])
            anag.on_ricerca_window_close(self)

        if combobox.get_child().get_text() == stringClienti:
            from promogest.ui.RicercaComplessaClienti import RicercaComplessaClienti
            anag = RicercaComplessaClienti()
            anag.setTreeViewSelectionType(GTK_SELECTIONMODE_SINGLE)
            anagWindow = anag.getTopLevel()
            anagWindow.connect("hide", refresh_combobox, 'cliente')
            returnWindow = combobox.get_toplevel()
            anagWindow.set_transient_for(returnWindow)
            anag.show_all()
        elif combobox.get_child().get_text() == stringFornitori:
            from promogest.ui.RicercaComplessaFornitori import RicercaComplessaFornitori
            anag = RicercaComplessaFornitori()
            anag.setTreeViewSelectionType(GTK_SELECTIONMODE_SINGLE)
            anagWindow = anag.getTopLevel()
            anagWindow.connect("hide", refresh_combobox, 'fornitore')
            returnWindow = combobox.get_toplevel()
            anagWindow.set_transient_for(returnWindow)
            anag.show_all()
        elif combobox.get_child().get_text() == stringContatti:
            if posso("CN"):
                from promogest.ui.Contatti.RicercaContatti import RicercaContatti
                anag = RicercaContatti()
                anagWindow = anag.getTopLevel()
                anagWindow.connect("hide", refresh_combobox, 'contatto')
                returnWindow = combobox.get_toplevel()
                anagWindow.set_transient_for(returnWindow)
                anag.show_all()
            else:
                fenceDialog()
class ClienteSearchWidget(CustomComboBoxSearch):
    """ Classe base per la ricerca clienti """
    __gtype_name__ = 'ClienteSearchWidget'

    def __init__(self):
        CustomComboBoxSearch.__init__(self)

        self.connect('changed',
                           self.on_entry_key_press_event)
        #self.connect("focus-out-event", self.on_focus_out_event)
        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 = leggiCliente(id)
                    denominazione = res["ragioneSociale"]
                    if denominazione == '':
                        denominazione = res["nome"] + ' ' + res["cognome"]
                    self.set_text(denominazione)
                    self._id = id
                    #self.on_completion_match_main()

            from promogest.ui.RicercaComplessaClienti import RicercaComplessaClienti
            try:
                idCat = findIdFromCombobox(self.anaedit.
                id_categoria_clienti_customcombobox.combobox)
            except:
                idCat = None

            self._ricerca = RicercaComplessaClienti(idCategoria=idCat)
            #self._ricerca = RicercaClienti()

            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.clean_entry()

    def ricercaDao(self, keyname):
        from promogest.dao.Cliente import Cliente
        try:
            idCat = findIdFromCombobox(self.anaedit.
            id_categoria_clienti_customcombobox.combobox)
        except:
            idCat = None
        cli = Cliente().select(ragioneSociale=keyname,
                            idCategoria=idCat, batchSize=40)
        model = self.completion.get_model()
        model.clear()
        for m in cli:
            rag = m.ragione_sociale or m.cognome + " " + m.nome
            model.append(('empty', m.id, rag, m))

    def setId(self, value):
        self.insertComboboxSearchCliente(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.idlist
        return self._id

    def getData(self):
        return self._container

    def insertComboboxSearchCliente(self, combobox, idCliente,
                                                    clear=False, filter=True):
        res = leggiCliente(idCliente)
        denominazione = res["ragioneSociale"]
        if denominazione == '':
            denominazione = res["nome"] + ' ' + res["cognome"]
        combobox.refresh(idCliente, denominazione, res, clear, filter)

    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

    def on_widget_destroy(self, widget, event):
        if self._ricerca is not None:
            anagWindow = self._ricerca.getTopLevel()
            anagWindow.destroy()
            del self._ricerca
            self._ricerca = None
Example #5
0
class ClienteSearchWidget(CustomComboBoxSearch):
    """ Classe base per la ricerca clienti """

    def __init__(self):
        CustomComboBoxSearch.__init__(self)

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

        self.connect("destroy-event", self.on_widget_destroy)

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


    def on_combobox_cliente_search_clicked(self, combobox):
        #richiama la ricerca dei clienti

        def refresh_combobox_cliente(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 = leggiCliente(id)
                denominazione = res["ragioneSociale"]
                if denominazione == '':
                    denominazione = res["nome"] + ' ' + res["cognome"]
                combobox.refresh(id, denominazione, res)
            else:
                combobox.refresh(None, ('< %d clienti 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.RicercaComplessaClienti import RicercaComplessaClienti
                self._ricerca = RicercaComplessaClienti()
                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_cliente)
            self._ricerca.getTopLevel().show_all()

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


    def setId(self, value):
        self.insertComboboxSearchCliente(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 insertComboboxSearchCliente(self, combobox, idCliente, clear=False, filter=True):
        res = leggiCliente(idCliente)
        denominazione = res["ragioneSociale"]
        if denominazione == '':
            denominazione = res["nome"] + ' ' + res["cognome"]
        combobox.refresh(idCliente, denominazione, res, clear, filter)


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


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


    def setSingleValue(self):
        self._filter = False


    def setMultipleValues(self):
        self._filter = True


    def on_widget_destroy(self, widget, event):
        if self._ricerca is not None:
            anagWindow = self._ricerca.getTopLevel()
            anagWindow.destroy()
            del self._ricerca
            self._ricerca = None