class AnagraficaFornitoriEdit(AnagraficaEdit, AnagraficaPGEdit): """ Modifica un record dell'anagrafica dei fornitori """ def __init__(self, anagrafica): AnagraficaEdit.__init__(self, anagrafica, 'Dati fornitore', root='anagrafica_fornitori_detail_notebook', path='_anagrafica_fornitori_elements.glade') AnagraficaPGEdit.__init__(self, "fornitore") self._widgetFirstFocus = self.codice_entry def draw(self,cplx=False): fillComboBoxNazione(self.nazione_combobox, default="Italia") fillComboboxCategorieFornitori(self.id_categoria_fornitore_customcombobox.combobox) self.id_categoria_fornitore_customcombobox.connect('clicked', on_id_categoria_fornitore_customcombobox_clicked) fillComboboxPagamenti(self.id_pagamento_customcombobox.combobox) self.id_pagamento_customcombobox.connect('clicked', on_id_pagamento_customcombobox_clicked) fillComboboxMagazzini(self.id_magazzino_customcombobox.combobox) self.id_magazzino_customcombobox.connect('clicked', on_id_magazzino_customcombobox_clicked) self.fornitore_insegna = setconf("Fornitori", "fornitore_insegna") if not self.fornitore_insegna: self.insegna_entry.destroy() self.insegna_label.destroy() self.nome_entry.destroy() self.cognome_entry.destroy() self.cognome_label.destroy() self.nome_label.destroy() def setDao(self, dao): self.dao = dao if dao is None: # Crea un nuovo Dao vuoto self.dao = Fornitore() self.dao.codice = promogest.dao.Fornitore.getNuovoCodiceFornitore() if dao is None: self.dao_contatto = ContattoFornitore() else: self.dao_contatto = ContattoFornitore().select(idFornitore=self.dao.id) if self.dao_contatto: self.dao_contatto = self.dao_contatto[0] else: self.dao_contatto = ContattoFornitore() self._refresh() return self.dao def showTotaliDareAvere(self): if self.dao.id: #Calcoliamo il totale annuale: totaleAvereAnnuale = TotaleAnnualeFornitore(id_fornitore=self.dao.id) self.totale_annuale_avere_entry.set_text('%.2f' % totaleAvereAnnuale) #Calcoliamo il totale sospeso: totaleAvereSospeso = TotaleFornitoreAperto(id_fornitore=self.dao.id) self.totale_avere_entry.set_text('%.2f' % totaleAvereSospeso) self.anagrafica_fornitori_detail_notebook.set_current_page(0) def saveDao(self, tipo=None): if (self.ragione_sociale_entry.get_text() == ''): obligatoryField(self.dialogTopLevel, self.ragione_sociale_entry, campo="Ragione sociale") cod = Fornitore().select(codicesatto=self.codice_entry.get_text().upper().strip()) if len(cod) >1 or (cod and cod[0].id != self.dao.id): obligatoryField(self.dialogTopLevel, self.ragione_sociale_entry, msg='CODICE GIÀ PRESENTE') self.dao.codice = self.codice_entry.get_text().upper() self.dao.codice = omogeneousCode(section="Fornitori", string=self.dao.codice ) self.dao.ragione_sociale = self.ragione_sociale_entry.get_text() if self.fornitore_insegna: self.dao.insegna = self.insegna_entry.get_text() # self.dao.cognome= self.cognome_entry.get_text() # self.dao.nome = self.nome_entry.get_text() if (self.dao.codice and (self.dao.ragione_sociale or self.dao.insegna or self.dao.cognome or self.dao.nome)) =='': msg="""Il codice è obbligatorio. Inserire almeno un campo a scelta tra: ragione sociale, insegna, cognome o nome """ messageInfo(msg=msg) raise Exception, 'Operation aborted: Codice Fornitore obbligatorio' self.dao.sede_operativa_indirizzo = self.indirizzo_sede_operativa_entry.get_text() self.dao.sede_operativa_cap = self.cap_sede_operativa_entry.get_text() self.dao.sede_operativa_localita = self.localita_sede_operativa_entry.get_text() self.dao.sede_operativa_provincia = self.provincia_sede_operativa_entry.get_text() self.dao.sede_legale_indirizzo = self.indirizzo_sede_legale_entry.get_text() self.dao.sede_legale_cap = self.cap_sede_legale_entry.get_text() self.dao.sede_legale_localita = self.localita_sede_legale_entry.get_text() self.dao.sede_legale_provincia = self.provincia_sede_legale_entry.get_text() self.dao.codice_fiscale = self.codice_fiscale_entry.get_text() self.dao.note = textview_get_text(self.note_textview) #if self.dao.codice_fiscale != '': #codfis = checkCodFisc(self.dao.codice_fiscale) #if not codfis: #raise Exception, 'Operation aborted: Codice fiscale errato' self.dao.partita_iva = self.partita_iva_entry.get_text() #if self.dao.partita_iva != '': #partiva = checkPartIva(self.dao.partita_iva) #if not partiva: #raise Exception, 'Operation aborted: Partita iva errata' self.dao.id_categoria_fornitore = findIdFromCombobox(self.id_categoria_fornitore_customcombobox.combobox) self.dao.id_pagamento = findIdFromCombobox(self.id_pagamento_customcombobox.combobox) self.dao.id_magazzino = findIdFromCombobox(self.id_magazzino_customcombobox.combobox) self.dao.nazione = findStrFromCombobox(self.nazione_combobox,0) self.dao.persist() self.aggiungi_contatto_pg(self, "fornitore") self.save_contatto_cellulare_principale(self, self.dao_contatto) self.save_contatto_telefono_principale(self, self.dao_contatto) self.save_contatto_fax_principale(self, self.dao_contatto) self.save_contatto_email_principale(self, self.dao_contatto) self.save_contatto_sito_principale(self, self.dao_contatto) def on_scheda_contabile_togglebutton_clicked(self, toggleButton): """ Apre la finestra di registrazione documenti, ricercando solo i documenti del fornitore """ if not(toggleButton.get_active()): toggleButton.set_active(False) return if self.dao.id is None: msg = 'Prima di poter visualizzare la registrazione documenti occorre salvare il fornitore.\n Salvare? ' if YesNoDialog(msg=msg, transient=self.dialogTopLevel): self.on_anagrafica_complessa_detail_dialog_response( self.dialogTopLevel, GTK_RESPONSE_APPLY) else: toggleButton.set_active(False) return from promogest.ui.anagDocumenti.AnagraficaDocumenti import AnagraficaDocumenti anag = AnagraficaDocumenti() anagWindow = anag.getTopLevel() showAnagraficaRichiamata(self.dialogTopLevel, anagWindow, toggleButton) anag.filter.id_fornitore_filter_customcombobox.setId(self.dao.id) anag.filter.solo_contabili_check.set_active(True) anag.filter.refresh() def on_icon_press_primary(self,entry,position,event): if position.value_nick == "primary": codice = promogest.dao.Fornitore.getNuovoCodiceFornitore() self.codice_entry.set_text(codice) def on_contatti_togglebutton_clicked(self, toggleButton): if posso("CN"): if not(toggleButton.get_active()): toggleButton.set_active(False) return if self.dao.id is None: msg = 'Prima di poter inserire i contatti occorre salvare il fornitore.\n Salvare ?' if YesNoDialog(msg=msg, transient=self.dialogTopLevel): self.on_anagrafica_complessa_detail_dialog_response(self.dialogTopLevel, GTK_RESPONSE_APPLY) else: toggleButton.set_active(False) return from promogest.ui.Contatti.AnagraficaContatti import AnagraficaContatti anag = AnagraficaContatti(self.dao.id, 'fornitore') anagWindow = anag.getTopLevel() showAnagraficaRichiamata(self.dialogTopLevel, anagWindow, toggleButton) else: fenceDialog() toggleButton.set_active(False) def on_forniture_togglebutton_clicked(self, toggleButton): if not(toggleButton.get_active()): toggleButton.set_active(False) return if self.dao.id is None: msg = 'Prima di poter inserire delle forniture occorre salvare il fornitore.\n Salvare ?' if YesNoDialog(msg=msg, transient=self.dialogTopLevel): self.on_anagrafica_complessa_detail_dialog_response(self.dialogTopLevel, GTK_RESPONSE_APPLY) else: toggleButton.set_active(False) return from promogest.ui.anagForniture.AnagraficaForniture import AnagraficaForniture anag = AnagraficaForniture(None, self.dao.id) anagWindow = anag.getTopLevel() showAnagraficaRichiamata(self.dialogTopLevel, anagWindow, toggleButton)
def on_duplica_in_fornitore_activate_item(self, widget): dao = self.filter.getSelectedDao() if not dao: messageInfo(msg="SELEZIONARE UN CLIENTE") return import promogest.dao.Fornitore from promogest.dao.Fornitore import Fornitore from promogest.dao.daoContatti.ContattoFornitore import ContattoFornitore from promogest.dao.daoContatti.RecapitoContatto import RecapitoContatto from promogest.dao.daoContatti.Contatto import Contatto d = Fornitore() d.codice = promogest.dao.Fornitore.getNuovoCodiceFornitore() d.ragione_sociale = dao.ragione_sociale d.insegna = dao.insegna d.cognome = dao.cognome d.nome = dao.nome d.sede_operativa_indirizzo = dao.sede_operativa_indirizzo d.sede_operativa_cap = dao.sede_operativa_cap d.sede_operativa_localita = dao.sede_operativa_localita d.sede_operativa_provincia = dao.sede_operativa_provincia d.sede_legale_indirizzo = dao.sede_legale_indirizzo d.sede_legale_cap = dao.sede_legale_cap d.sede_legale_localita = dao.sede_legale_localita d.sede_legale_provincia = dao.sede_legale_provincia d.codice_fiscale = dao.codice_fiscale d.note = dao.note d.partita_iva = dao.partita_iva # dao.id_categoria_fornitore d.id_pagamento = dao.id_pagamento d.id_magazzino = dao.id_magazzino d.nazione = dao.nazione d.persist() # SEzione dedicata ai contatti/recapiti principali dao_contatto = ContattoFornitore() if Environment.tipo_eng == "sqlite": forMaxId = Contatto().select(batchSize=None) if not forMaxId: dao_contatto.id = 1 else: idss = [] for l in forMaxId: idss.append(l.id) dao_contatto.id = (max(idss)) + 1 appa = "" if d.ragione_sociale: appa = appa + " " + d.ragione_sociale if d.cognome: appa = appa + " " + d.cognome dao_contatto.cognome = appa if d.nome: dao_contatto.nome = d.nome dao_contatto.tipo_contatto = "fornitore" dao_contatto.id_fornitore = d.id dao_contatto.persist() from promogest.dao.DaoUtils import getRecapitiCliente contatti = getRecapitiCliente(dao.id) for c in contatti: reco = RecapitoContatto() reco.id_contatto = dao_contatto.id reco.tipo_recapito = c.tipo_recapito reco.recapito = c.recapito reco.persist() messageInfo(msg="CLIENTE DUPLICATO IN FORNITORE")