Ejemplo n.º 1
0
 def setDao(self, dao):
     if dao is None:
         if self._anagrafica.filter.cliente_filter_radiobutton.get_active():
             self.cliente_radiobutton.set_active(True)
         elif self._anagrafica.filter.fornitore_filter_radiobutton.get_active():
             self.fornitore_radiobutton.set_active(True)
         elif self._anagrafica.filter.magazzino_filter_radiobutton.get_active():
             self.magazzino_radiobutton.set_active(True)
         elif self._anagrafica.filter.azienda_filter_radiobutton.get_active():
             self.azienda_radiobutton.set_active(True)
         else:
             self.generico_radiobutton.set_active(True)
         # Crea un nuovo Dao vuoto
         if self.cliente_radiobutton.get_active():
             self.dao = ContattoCliente()
             self.dao.tipo_contatto = 'cliente'
             self.dao.id_cliente = self._anagrafica._ownerKey
         elif self.fornitore_radiobutton.get_active():
             self.dao = ContattoFornitore()
             self.dao.tipo_contatto = 'fornitore'
             self.dao.id_fornitore = self._anagrafica._ownerKey
         elif self.magazzino_radiobutton.get_active():
             self.dao = ContattoMagazzino()
             self.dao.tipo_contatto = 'magazzino'
             self.dao.id_magazzino = self._anagrafica._ownerKey
         elif self.azienda_radiobutton.get_active():
             self.dao = ContattoAzienda()
             self.dao.tipo_contatto = 'azienda'
             self.dao.schema_azienda = self._anagrafica._ownerKey
         elif self.generico_radiobutton.get_active():
             self.dao = Contatto()
             self.dao.tipo_contatto = 'generico'
     else:
         # Ricrea il Dao con una connessione al DBMS SQL
         if dao.tipo_contatto == 'cliente':
             self.dao = ContattoCliente().getRecord(id=(dao.id,'cliente'))
         elif dao.tipo_contatto == 'fornitore':
             self.dao = ContattoFornitore().getRecord(id=(dao.id,'fornitore'))
         elif dao.tipo_contatto == 'magazzino':
             self.dao = ContattoMagazzino().getRecord(id=(dao.id,'magazzino'))
         elif dao.tipo_contatto == 'azienda':
             self.dao = ContattoAzienda().getRecord(id=(dao.id,'azienda'))
         elif dao.tipo_contatto == 'generico':
             self.dao = Contatto().getRecord(id=(dao.id,'generico'))
     #self.appartenenza_customcombobox.setChangedHandler(self.dao.tipo_contatto)
     self._refresh()
Ejemplo n.º 2
0
 def __init__(self, anagrafica):
     AnagraficaEdit.__init__(self,
                               anagrafica,
                             'Dati contatto',
                               root='anagrafica_contatti_detail_table',
                               path='Contatti/_anagrafica_contatti_elements.glade',
                                )
     self._widgetFirstFocus = self.cognome_entry
     self.dao = Contatto()
     self._tabPressed = False
Ejemplo n.º 3
0
    def saveDao(self, tipo=None):
        if not self.generico_radiobutton.get_active():
            if self.appartenenza_customcombobox._id is None:
                obligatoryField(self.dialogTopLevel, self.appartenenza_customcombobox)
        if self.cliente_radiobutton.get_active():
            if self.dao.id is None:
                self.dao = ContattoCliente()
            self.dao.id_cliente = self.appartenenza_customcombobox._id
            self.dao.tipo_contatto ="cliente"
        elif self.fornitore_radiobutton.get_active():
            if self.dao.id is None:
                self.dao = ContattoFornitore()
            self.dao.id_fornitore = self.appartenenza_customcombobox._id
            self.dao.tipo_contatto ="fornitore"
        elif self.magazzino_radiobutton.get_active():
            if self.dao.id is None:
                self.dao = ContattoMagazzino()
            self.dao.id_magazzino = self.appartenenza_customcombobox._id
            self.dao.tipo_contatto ="magazzino"
        elif self.azienda_radiobutton.get_active():
            if self.dao.id is None:
                self.dao = ContattoAzienda()
            self.dao.schema_azienda = self.appartenenza_customcombobox._id
            self.dao.tipo_contatto ="azienda"
        elif self.generico_radiobutton.get_active():
            if self.dao.id is None:
                self.dao = Contatto()
            self.dao.tipo_contatto ="generico"


        self.dao.cognome = self.cognome_entry.get_text()
        self.dao.nome = self.nome_entry.get_text()
        self.dao.ruolo = self.ruolo_comboboxentry.get_child().get_text()
        self.dao.descrizione = self.descrizione_comboboxentry.child.get_text()
        textBuffer = self.note_textview.get_buffer()
        self.dao.note = textBuffer.get_text(textBuffer.get_start_iter(), textBuffer.get_end_iter(),True)
        if Environment.tipo_eng =="sqlite" and not self.dao.id:
            forMaxId = Contatto().select(batchSize=None)
            if not forMaxId:
                self.dao.id = 1
            else:
                idss = []
                for l in forMaxId:
                    idss.append(l.id)
                self.dao.id = (max(idss)) +1
        #self.daoid=self.dao.id
        self.dao.persist()
        # Salvo categorie contatti
        model = self.categorie_treeview.get_model()

        cleanContattoCategoriaContatto = ContattoCategoriaContatto()\
                                                    .select(idContatto=self.dao.id,
                                                    batchSize=None)
        for contatto in cleanContattoCategoriaContatto:
            contatto.delete()
        for c in model:
            if c[3] == 'deleted':
                pass
            else:
                daoContattoCategoriaContatto = ContattoCategoriaContatto()
                daoContattoCategoriaContatto.id_contatto = self.dao.id
                daoContattoCategoriaContatto.id_categoria_contatto = c[0]
                daoContattoCategoriaContatto.persist()

        ## Salvo recapiti
        model = self.recapiti_treeview.get_model()
        recapiti = []
        cleanRecapitoContatto = RecapitoContatto().select(idContatto=self.dao.id)
        for recapito in cleanRecapitoContatto:
            recapito.delete()

        for r in model:
            if r[4] == 'deleted':
                pass
            else:
                if r[1] == '' or r[2] == '':
                    continue
                daoRecapitoContatto = RecapitoContatto()
                daoRecapitoContatto.id_contatto = self.dao.id
                daoRecapitoContatto.tipo_recapito = r[1]
                daoRecapitoContatto.recapito = r[2]
                daoRecapitoContatto.persist()


        self._refreshCategorie()
        self._refreshRecapiti()
Ejemplo n.º 4
0
class AnagraficaContattiEdit(AnagraficaEdit):
    """ Modifica un record dell'anagrafica dei contatti """

    def __init__(self, anagrafica):
        AnagraficaEdit.__init__(self,
                                  anagrafica,
                                'Dati contatto',
                                  root='anagrafica_contatti_detail_table',
                                  path='Contatti/_anagrafica_contatti_elements.glade',
                                   )
        self._widgetFirstFocus = self.cognome_entry
        self.dao = Contatto()
        self._tabPressed = False

    def draw(self, cplx=False):
        #Popola combobox categorie contatti
        fillComboboxCategorieContatti(self.id_categoria_contatto_customcombobox.combobox)
        self.id_categoria_contatto_customcombobox.connect('clicked',
                      on_id_categoria_contatto_customcombobox_clicked)

        #Elenco categorie
        model = self.categorie_liststore
        self.categorie_treeview.set_model(model)

        rendererText = gtk.CellRendererText()
        column = gtk.TreeViewColumn('Categoria', rendererText, text=1)
        column.set_sizing(GTK_COLUMN_GROWN_ONLY)
        column.set_clickable(False)
        column.set_resizable(True)
        column.set_expand(True)
        self.categorie_treeview.append_column(column)

        rendererPixbuf = gtk.CellRendererPixbuf()
        column = gtk.TreeViewColumn('', rendererPixbuf, pixbuf=2)
        column.set_sizing(GTK_COLUMN_GROWN_ONLY)
        column.set_clickable(False)
        column.set_resizable(False)
        column.set_expand(False)
        column.set_min_width(20)
        self.categorie_treeview.append_column(column)

        #Elenco recapiti
        model = self.recapiti_liststore
        self.recapiti_treeview.set_model(model)

        rendererCombo = gtk.CellRendererCombo()
        rendererCombo.set_property('editable', True)
        rendererCombo.connect('edited', self.on_tipo_recapito_edited, self.recapiti_treeview.get_model())
        rendererCombo.set_property('text-column', 0)
        rendererCombo.set_property('has_entry', False)
        rendererCombo.set_property('model', fillModelTipiRecapito())
        rendererCombo.set_property('width', 200)
        rendererCombo.set_data('column', 0)
        column = gtk.TreeViewColumn('Tipo', rendererCombo, text=1)
        column.set_clickable(False)
        column.set_sizing(GTK_COLUMN_GROWN_ONLY)
        column.set_resizable(True)
        column.set_expand(False)
        column.set_min_width(200)
        self.recapiti_treeview.append_column(column)

        rendererText = gtk.CellRendererText()
        rendererText.set_property('editable', True)
        rendererText.connect('edited', self.on_recapito_edited, self.recapiti_treeview.get_model())
        rendererText.set_data('column', 1)
        column = gtk.TreeViewColumn('Recapito', rendererText, text=2)
        column.set_clickable(False)
        column.set_sizing(GTK_COLUMN_GROWN_ONLY)
        column.set_resizable(True)
        column.set_expand(True)
        self.recapiti_treeview.append_column(column)

        rendererPixbuf = gtk.CellRendererPixbuf()
        column = gtk.TreeViewColumn('', rendererPixbuf, pixbuf=3)
        column.set_sizing(GTK_COLUMN_GROWN_ONLY)
        column.set_clickable(False)
        column.set_resizable(False)
        column.set_expand(False)
        column.set_min_width(20)
        self.recapiti_treeview.append_column(column)

        self.recapiti_treeview.set_search_column(2)

        #idHandler = self.appartenenza_customcombobox.connect('changed',
                                                             #self.on_appartenenza_customcombobox_changed)
        #if self.dao:
            #self.appartenenza_customcombobox.setChangedHandler(self.dao.tipo_contatto)
        #self.appartenenza_customcombobox.refresh(clear=True, filter=False)

        #self.cliente_radiobutton.connect('toggled',
                                         #self.on_radiobutton_toggled)
        #self.fornitore_radiobutton.connect('toggled',
                                           #self.on_radiobutton_toggled)
        #self.magazzino_radiobutton.connect('toggled',
                                           #self.on_radiobutton_toggled)
        #self.azienda_radiobutton.connect('toggled',
                                         #self.on_radiobutton_toggled)
        #self.generico_radiobutton.connect('toggled',
                                          #self.on_radiobutton_toggled)
        self.generico_radiobutton.set_active(True)
        self.on_radiobutton_toggled()

        self.categorie_contatti_add_row_button.set_sensitive(True)
        self.categorie_contatti_delete_row_button.set_sensitive(False)
        self.categorie_contatti_undelete_row_button.set_sensitive(False)
        self.categorie_treeview.get_selection().unselect_all()

        self.recapiti_add_row_button.set_sensitive(True)
        self.recapiti_delete_row_button.set_sensitive(False)
        self.recapiti_undelete_row_button.set_sensitive(False)
        self.recapiti_treeview.get_selection().unselect_all()
        if self._anagrafica._ownerKey:
            self.pg_toggle_hbox.set_sensitive(False)


    def on_categorie_contatti_add_row_button_clicked(self, widget):
        id = findIdFromCombobox(self.id_categoria_contatto_customcombobox.combobox)
        if id is not None:
            categoria = findStrFromCombobox(self.id_categoria_contatto_customcombobox.combobox, 2)
            model = self.categorie_treeview.get_model()
            for c in model:
                if c[0] == id:
                    return
            image = gtk.Image()
            anagPixbuf = image.render_icon(gtk.STOCK_ADD,
                                           GTK_ICON_SIZE_BUTTON)
            model.append((id, categoria, anagPixbuf, 'added'))
        self.categorie_treeview.get_selection().unselect_all()


    def on_categorie_contatti_delete_row_button_clicked(self, widget):
        id = findIdFromCombobox(self.id_categoria_contatto_customcombobox.combobox)
        if id is not None:
            image = gtk.Image()
            anagPixbuf = image.render_icon(gtk.STOCK_REMOVE,
                                           GTK_ICON_SIZE_BUTTON)
            model = self.categorie_treeview.get_model()
            for c in model:
                if c[0] == id:
                    if c[2] is None:
                        c[2] = anagPixbuf
                        c[3] = 'deleted'
                    else:
                        model.remove(c.iter)
        self.categorie_treeview.get_selection().unselect_all()


    def on_categorie_contatti_undelete_row_button_clicked(self, widget):
        id = findIdFromCombobox(self.id_categoria_contatto_customcombobox.combobox)
        if id is not None:
            model = self.categorie_treeview.get_model()
            for c in model:
                if c[0] == id:
                    if c[3] == 'deleted':
                        c[2] = None
                        c[3] = None
        self.categorie_treeview.get_selection().unselect_all()


    def on_categorie_treeview_cursor_changed(self, treeview):
        sel = treeview.get_selection()
        (model, iterator) = sel.get_selected()
        if iterator is not None:
            idCategoriaContatto = model.get_value(iterator, 0)
            findComboboxRowFromId(self.id_categoria_contatto_customcombobox.combobox, idCategoriaContatto)
            status = model.get_value(iterator, 3)
            self.categorie_contatti_delete_row_button.set_sensitive(status != 'deleted')
            self.categorie_contatti_undelete_row_button.set_sensitive(status == 'deleted')


    def on_recapiti_treeview_keypress_event(self, treeview, event):
        if event.keyval == 65289:
            self._tabPressed = True


    def on_tipo_recapito_edited(self, cell, path, value, model):
        iterator = model.get_iter(path)
        column = cell.get_data('column')
        model.set_value(iterator, column+1, value)
        if self._tabPressed:
            self._tabPressed = False
        gobject.timeout_add(1, self.recapiti_treeview.set_cursor, path, self.recapiti_treeview.get_column(column+1), True)


    def on_recapito_edited(self, cell, path, value, model):
        iterator = model.get_iter(path)
        column = cell.get_data('column')
        row = model[iterator]
        new = model.get_value(iterator, 0) == 0
        anagPixbuf = None
        operation = None
        if new:
            recapito = model.get_value(iterator, 2)
            tipoRecapito = model.get_value(iterator, 1)
            if recapito == '' and tipoRecapito == '':
                model.remove(iterator)
                self.recapiti_treeview_focus_out()
                return

            image = gtk.Image()
            anagPixbuf = image.render_icon(gtk.STOCK_ADD,
                                           GTK_ICON_SIZE_BUTTON)
        model.set_value(iterator, column+1, value)
        model.set_value(iterator, 3, anagPixbuf)
        model.set_value(iterator, 4, operation)
        if self._tabPressed:
            self._tabPressed = False
        self.recapiti_treeview_focus_out()


    def recapiti_treeview_focus_out(self):
        self.recapiti_treeview.get_selection().unselect_all()
        self.recapiti_delete_row_button.set_sensitive(False)
        self.recapiti_undelete_row_button.set_sensitive(False)
        self.recapiti_add_row_button.grab_focus()


    def on_recapiti_add_row_button_clicked(self, widget):
        model = self.recapiti_treeview.get_model()
        iterator = model.append((0, '', '', None, None))
        column = self.recapiti_treeview.get_column(0)
        row = model[iterator]
        self.recapiti_treeview.set_cursor(row.path, column, True)


    def on_recapiti_delete_row_button_clicked(self, widget):
        sel = self.recapiti_treeview.get_selection()
        (model, iterator) = sel.get_selected()
        if iterator is not None:
            new = model.get_value(iterator, 0) == 0
            if not new:
                image = gtk.Image()
                anagPixbuf = image.render_icon(gtk.STOCK_REMOVE,
                                               GTK_ICON_SIZE_BUTTON)
                operation = 'deleted'
                model.set_value(iterator, 3, anagPixbuf)
                model.set_value(iterator, 4, operation)
            else:
                model.remove(iterator)
        self.recapiti_treeview.get_selection().unselect_all()


    def on_recapiti_undelete_row_button_clicked(self, widget):
        sel = self.recapiti_treeview.get_selection()
        (model, iterator) = sel.get_selected()
        if iterator is not None:
            operation = model.get_value(iterator, 4)
            if operation == 'deleted':
                anagPixbuf = None
                operation = None
                model.set_value(iterator, 3, anagPixbuf)
                model.set_value(iterator, 4, operation)
        self.recapiti_treeview.get_selection().unselect_all()


    def on_recapiti_treeview_cursor_changed(self, treeview):
        sel = treeview.get_selection()
        (model, iterator) = sel.get_selected()
        if iterator is not None:
            status = model.get_value(iterator, 4)
            self.recapiti_delete_row_button.set_sensitive(status != 'deleted')
            self.recapiti_undelete_row_button.set_sensitive(status == 'deleted')


    def on_appartenenza_customcombobox_changed(self, combobox):
        """ Funzioni generiche messe in utils"""
        if self.cliente_radiobutton.get_active():
            on_combobox_cliente_search_clicked(combobox)
        elif self.fornitore_radiobutton.get_active():
            on_combobox_fornitore_search_clicked(combobox)
        elif self.magazzino_radiobutton.get_active():
            on_combobox_magazzino_search_clicked(combobox)
        elif self.azienda_radiobutton.get_active():
            on_combobox_azienda_search_clicked(combobox)


    def setDao(self, dao):
        if dao is None:
            if self._anagrafica.filter.cliente_filter_radiobutton.get_active():
                self.cliente_radiobutton.set_active(True)
            elif self._anagrafica.filter.fornitore_filter_radiobutton.get_active():
                self.fornitore_radiobutton.set_active(True)
            elif self._anagrafica.filter.magazzino_filter_radiobutton.get_active():
                self.magazzino_radiobutton.set_active(True)
            elif self._anagrafica.filter.azienda_filter_radiobutton.get_active():
                self.azienda_radiobutton.set_active(True)
            else:
                self.generico_radiobutton.set_active(True)
            # Crea un nuovo Dao vuoto
            if self.cliente_radiobutton.get_active():
                self.dao = ContattoCliente()
                self.dao.tipo_contatto = 'cliente'
                self.dao.id_cliente = self._anagrafica._ownerKey
            elif self.fornitore_radiobutton.get_active():
                self.dao = ContattoFornitore()
                self.dao.tipo_contatto = 'fornitore'
                self.dao.id_fornitore = self._anagrafica._ownerKey
            elif self.magazzino_radiobutton.get_active():
                self.dao = ContattoMagazzino()
                self.dao.tipo_contatto = 'magazzino'
                self.dao.id_magazzino = self._anagrafica._ownerKey
            elif self.azienda_radiobutton.get_active():
                self.dao = ContattoAzienda()
                self.dao.tipo_contatto = 'azienda'
                self.dao.schema_azienda = self._anagrafica._ownerKey
            elif self.generico_radiobutton.get_active():
                self.dao = Contatto()
                self.dao.tipo_contatto = 'generico'
        else:
            # Ricrea il Dao con una connessione al DBMS SQL
            if dao.tipo_contatto == 'cliente':
                self.dao = ContattoCliente().getRecord(id=(dao.id,'cliente'))
            elif dao.tipo_contatto == 'fornitore':
                self.dao = ContattoFornitore().getRecord(id=(dao.id,'fornitore'))
            elif dao.tipo_contatto == 'magazzino':
                self.dao = ContattoMagazzino().getRecord(id=(dao.id,'magazzino'))
            elif dao.tipo_contatto == 'azienda':
                self.dao = ContattoAzienda().getRecord(id=(dao.id,'azienda'))
            elif dao.tipo_contatto == 'generico':
                self.dao = Contatto().getRecord(id=(dao.id,'generico'))
        #self.appartenenza_customcombobox.setChangedHandler(self.dao.tipo_contatto)
        self._refresh()


    def _refresh(self):
        self.on_radiobutton_toggled()

        if self.dao.tipo_contatto == 'cliente':
            #self.appartenenza_customcombobox.refresh(clear=True, filter=False)
            self.cliente_radiobutton.set_active(True)
            insertComboboxSearchCliente(self.appartenenza_customcombobox,
                                        self.dao.id_cliente)
            if self._anagrafica._ownerKey:
                self.appartenenza_customcombobox.set_sensitive(False)
        elif self.dao.tipo_contatto == 'fornitore':
            #self.appartenenza_customcombobox.refresh(clear=True, filter=False)
            self.fornitore_radiobutton.set_active(True)
            self.appartenenza_customcombobox.setId(self.dao.id_fornitore)
            insertComboboxSearchFornitore(self.appartenenza_customcombobox,
                                          self.dao.id_fornitore)
            if self._anagrafica._ownerKey:
                self.appartenenza_customcombobox.set_sensitive(False)
        elif self.dao.tipo_contatto == 'magazzino':
            self.appartenenza_customcombobox.refresh(clear=True, filter=False)
            self.magazzino_radiobutton.set_active(True)
            insertComboboxSearchMagazzino(self.appartenenza_customcombobox,
                                          self.dao.id_magazzino)
        elif self.dao.tipo_contatto == 'azienda':
            self.appartenenza_customcombobox.refresh(clear=True, filter=False, idType='str')
            self.azienda_radiobutton.set_active(True)
            insertComboboxSearchAzienda(self.appartenenza_customcombobox,
                                        self.dao.schema_azienda)
        self.cognome_entry.set_text(self.dao.cognome or '')
        self.nome_entry.set_text(self.dao.nome or '')
        self.ruolo_comboboxentry.get_child().set_text(self.dao.ruolo or '')
        self.descrizione_comboboxentry.get_child().set_text(self.dao.descrizione or '')
        textBuffer = self.note_textview.get_buffer()
        if self.dao.note is not None:
            textBuffer.set_text(self.dao.note)
        else:
            textBuffer.set_text('')
        self.note_textview.set_buffer(textBuffer)

        self._refreshRecapiti()

        self._refreshCategorie()


    def _refreshRecapiti(self, widget=None, orderBy=None):
        model = self.recapiti_treeview.get_model()
        model.clear()
        if not self.dao.id:
            return
        else:
            recapiti = self.dao.recapiti
            for r in recapiti:
                model.append((r.id, r.tipo_recapito, r.recapito, None, None))


    def _refreshCategorie(self, widget=None, orderBy=None):
        model = self.categorie_treeview.get_model()
        model.clear()
        if not self.dao.id:
            return
        else:
            categorie = self.dao.categorieContatto
            for c in categorie:
                model.append((c.id_categoria_contatto, c.categoria_contatto, None, None))


    def on_radiobutton_toggled(self, widget=None):
        print " TOGGLEEEEEEEEEEEEEEEEEEEEEEEEED"
        if self.dao.id is not None:
            if self.dao.tipo_contatto == 'cliente':
                self.cliente_radiobutton.set_active(True)
                self.cliente_radiobutton.set_sensitive(True)
                self.fornitore_radiobutton.set_sensitive(False)
                self.magazzino_radiobutton.set_sensitive(False)
                self.azienda_radiobutton.set_sensitive(False)
                self.generico_radiobutton.set_sensitive(False)
            if self.dao.tipo_contatto == 'fornitore':
                self.fornitore_radiobutton.set_active(True)
                self.fornitore_radiobutton.set_sensitive(True)
                self.cliente_radiobutton.set_sensitive(False)
                self.magazzino_radiobutton.set_sensitive(False)
                self.azienda_radiobutton.set_sensitive(False)
                self.generico_radiobutton.set_sensitive(False)
            if self.dao.tipo_contatto == 'magazzino':
                self.magazzino_radiobutton.set_active(True)
                self.magazzino_radiobutton.set_sensitive(True)
                self.cliente_radiobutton.set_sensitive(False)
                self.fornitore_radiobutton.set_sensitive(False)
                self.azienda_radiobutton.set_sensitive(False)
                self.generico_radiobutton.set_sensitive(False)
            if self.dao.tipo_contatto == 'azienda':
                self.azienda_radiobutton.set_active(True)
                self.azienda_radiobutton.set_sensitive(True)
                self.cliente_radiobutton.set_sensitive(False)
                self.fornitore_radiobutton.set_sensitive(False)
                self.magazzino_radiobutton.set_sensitive(False)
                self.generico_radiobutton.set_sensitive(False)
            if self.dao.tipo_contatto == 'generico':
                self.generico_radiobutton.set_active(True)
                self.generico_radiobutton.set_sensitive(True)
                self.cliente_radiobutton.set_sensitive(False)
                self.fornitore_radiobutton.set_sensitive(False)
                self.magazzino_radiobutton.set_sensitive(False)
                self.azienda_radiobutton.set_sensitive(False)
        else:
            self.cliente_radiobutton.set_sensitive(True)
            self.fornitore_radiobutton.set_sensitive(True)
            self.magazzino_radiobutton.set_sensitive(True)
            self.azienda_radiobutton.set_sensitive(True)
            self.generico_radiobutton.set_sensitive(True)
            if self.azienda_radiobutton.get_active():
                self.appartenenza_customcombobox.refresh(clear=True, filter=False, idType='str')
            else:
                self.appartenenza_customcombobox.refresh(clear=True, filter=False)
            self.appartenenza_customcombobox.set_active(0)

        if self.generico_radiobutton.get_active():
            self.appartenenza_customcombobox.set_active(0)
            self.appartenenza_customcombobox.set_sensitive(False)
            self.appartenenza_label.set_text('-')
        else:
            if self.dao.id is None:
                self.appartenenza_customcombobox.set_sensitive(True)
                self.appartenenza_customcombobox.grab_focus()
                self.appartenenza_customcombobox.set_property("secondary_icon_stock", "gtk-clear")
                self.appartenenza_customcombobox.set_property("secondary-icon-activatable", True)
                self.appartenenza_customcombobox.set_property("secondary-icon-sensitive", True)
                self.appartenenza_customcombobox.set_property("primary_icon_stock", "gtk-find")
                self.appartenenza_customcombobox.set_property("primary-icon-activatable", True)
                self.appartenenza_customcombobox.set_property("primary-icon-sensitive", True)
            else:
                self.appartenenza_customcombobox.set_sensitive(False)
                self.cognome_entry.grab_focus()
            if self.cliente_radiobutton.get_active():
                self.appartenenza_label.set_text('Cliente')
                self.appartenenza_customcombobox.setChangedHandler("cliente")
            elif self.fornitore_radiobutton.get_active():
                self.appartenenza_label.set_text('Fornitore')
                self.appartenenza_customcombobox.setChangedHandler("fornitore")
            elif self.magazzino_radiobutton.get_active():
                self.appartenenza_label.set_text('Magazzino')
                self.appartenenza_customcombobox.setChangedHandler("magazzino")
            elif self.azienda_radiobutton.get_active():
                self.appartenenza_label.set_text('Azienda')
                self.appartenenza_customcombobox.setChangedHandler("azienda")



    def saveDao(self, tipo=None):
        if not self.generico_radiobutton.get_active():
            if self.appartenenza_customcombobox._id is None:
                obligatoryField(self.dialogTopLevel, self.appartenenza_customcombobox)
        if self.cliente_radiobutton.get_active():
            if self.dao.id is None:
                self.dao = ContattoCliente()
            self.dao.id_cliente = self.appartenenza_customcombobox._id
            self.dao.tipo_contatto ="cliente"
        elif self.fornitore_radiobutton.get_active():
            if self.dao.id is None:
                self.dao = ContattoFornitore()
            self.dao.id_fornitore = self.appartenenza_customcombobox._id
            self.dao.tipo_contatto ="fornitore"
        elif self.magazzino_radiobutton.get_active():
            if self.dao.id is None:
                self.dao = ContattoMagazzino()
            self.dao.id_magazzino = self.appartenenza_customcombobox._id
            self.dao.tipo_contatto ="magazzino"
        elif self.azienda_radiobutton.get_active():
            if self.dao.id is None:
                self.dao = ContattoAzienda()
            self.dao.schema_azienda = self.appartenenza_customcombobox._id
            self.dao.tipo_contatto ="azienda"
        elif self.generico_radiobutton.get_active():
            if self.dao.id is None:
                self.dao = Contatto()
            self.dao.tipo_contatto ="generico"


        self.dao.cognome = self.cognome_entry.get_text()
        self.dao.nome = self.nome_entry.get_text()
        self.dao.ruolo = self.ruolo_comboboxentry.get_child().get_text()
        self.dao.descrizione = self.descrizione_comboboxentry.child.get_text()
        textBuffer = self.note_textview.get_buffer()
        self.dao.note = textBuffer.get_text(textBuffer.get_start_iter(), textBuffer.get_end_iter(),True)
        if Environment.tipo_eng =="sqlite" and not self.dao.id:
            forMaxId = Contatto().select(batchSize=None)
            if not forMaxId:
                self.dao.id = 1
            else:
                idss = []
                for l in forMaxId:
                    idss.append(l.id)
                self.dao.id = (max(idss)) +1
        #self.daoid=self.dao.id
        self.dao.persist()
        # Salvo categorie contatti
        model = self.categorie_treeview.get_model()

        cleanContattoCategoriaContatto = ContattoCategoriaContatto()\
                                                    .select(idContatto=self.dao.id,
                                                    batchSize=None)
        for contatto in cleanContattoCategoriaContatto:
            contatto.delete()
        for c in model:
            if c[3] == 'deleted':
                pass
            else:
                daoContattoCategoriaContatto = ContattoCategoriaContatto()
                daoContattoCategoriaContatto.id_contatto = self.dao.id
                daoContattoCategoriaContatto.id_categoria_contatto = c[0]
                daoContattoCategoriaContatto.persist()

        ## Salvo recapiti
        model = self.recapiti_treeview.get_model()
        recapiti = []
        cleanRecapitoContatto = RecapitoContatto().select(idContatto=self.dao.id)
        for recapito in cleanRecapitoContatto:
            recapito.delete()

        for r in model:
            if r[4] == 'deleted':
                pass
            else:
                if r[1] == '' or r[2] == '':
                    continue
                daoRecapitoContatto = RecapitoContatto()
                daoRecapitoContatto.id_contatto = self.dao.id
                daoRecapitoContatto.tipo_recapito = r[1]
                daoRecapitoContatto.recapito = r[2]
                daoRecapitoContatto.persist()


        self._refreshCategorie()
        self._refreshRecapiti()