def listino_table(soup=None, op=None, dao=None, row=None, all=False): d = None if soup and not all: record = soup.listino.get(loads(row.object)) else: record = row if op =="DELETE": if all: d = Listino().getRecord(id=[row.denominazione,row.data_listino]) else: d = Listino().getRecord(id=loads(row.object)) if d: d.delete() return True elif op == "INSERT": if all: d = Listino() d.id = record.id else: d = Listino().getRecord(id=loads(row.object)) elif op == "UPDATE": if all: d = Listino().select(id=row.id) if d: d = d[0] else: d = Listino().getRecord(id=loads(row.object)) d.denominazione = record.denominazione d.descrizione = record.descrizione d.data_listino= record.data_listino d.listino_attuale = record.listino_attuale d.visible= record.visible d.persist() return True
def setDao(self, dao): self.dao = dao if dao is None: self.dao = Listino() self._refresh() return self.dao
def on_confirms_button_clicked(self, button): if self.data_listino_duplicato_entry.get_text() == '': obligatoryField(self.getTopLevel(), self.data_listino_duplicato_entry) if (self.nome_listino_entry.get_text() == ''): obligatoryField(self.getTopLevel(), self.nome_listino_entry) if (self.descrizione_listino_entry.get_text() == ''): obligatoryField(self.getTopLevel(), self.descrizione_listino_entry) tutto = self.tutto_duplicato_check.get_active() tieni_data = self.tieni_data_check.get_active() sconto = self.duplica_listini_scontowidget.get_text() tiposconto = self.duplica_listini_scontowidget.tipoSconto plus = self.plus_radio.get_active() # Controllo eventuali listini con stessa coppia denominazione e data _denominazione = self.nome_listino_entry.get_text() _data = stringToDate(self.data_listino_duplicato_entry.get_text()) _dataOra = stringToDateTime(self.data_listino_duplicato_entry.get_text()) if _denominazione and _data: check = Listino().select(denominazione=_denominazione, dataListino=_dataOra, batchSize=None) if check: if len(check) > 0: messageWarning(msg='Il listino è già presente.') return newDao = Listino() newDao.data_listino = _data newDao.denominazione = _denominazione newDao.descrizione = self.descrizione_listino_entry.get_text() if tutto: newDao.listino_attuale = True newDao.visible = True newDao.visible = True newDao.persist() lcc = ListinoCategoriaCliente().select(idListino=self.dao.id, batchSize=None) if lcc: for l in lcc: lccdao = ListinoCategoriaCliente() lccdao.id_listino = newDao.id lccdao.id_categoria_cliente = l.id_categoria_cliente lccdao.persist() lcl = ListinoComplessoListino().select(idListino=self.dao.id, batchSize=None) if lcl: for l in lcl: lcldao = ListinoComplessoListino() lcldao.id_listino = newDao.id lcldao.id_listino_complesso = l.id_listino_complesso lcldao.persist() lm = ListinoMagazzino().select(idListino=self.dao.id, batchSize=None) if lm: for l in lm: lmdao = ListinoMagazzino() lmdao.id_listino = newDao.id lmdao.id_magazzino = l.id_magazzino lmdao.persist() la = ListinoArticolo().select(idListino= self.dao.id, batchSize=None) if la: for l in la: ladao = ListinoArticolo() ladao.id_listino = newDao.id ladao.id_articolo = l.id_articolo if not l.prezzo_dettaglio: l.prezzo_dettaglio = Decimal('0.00') if not l.prezzo_ingrosso: l.prezzo_ingrosso = Decimal('0.00') if sconto: if tiposconto == "percentuale": if plus: ladao.prezzo_dettaglio = l.prezzo_dettaglio + (l.prezzo_dettaglio * Decimal(sconto) / 100) ladao.prezzo_ingrosso = l.prezzo_ingrosso +(l.prezzo_ingrosso * Decimal(sconto) / 100) # ladao.ultimo_costo = l.ultimo_costo + (l.ultimo_costo * Decimal(sconto) / 100) else: ladao.prezzo_dettaglio = l.prezzo_dettaglio - (l.prezzo_dettaglio * Decimal(sconto) / 100) ladao.prezzo_ingrosso = l.prezzo_ingrosso -(l.prezzo_ingrosso * Decimal(sconto) / 100) # ladao.ultimo_costo = l.ultimo_costo -(l.ultimo_costo * Decimal(sconto) / 100) else: if plus: ladao.prezzo_dettaglio = l.prezzo_dettaglio + Decimal(sconto) ladao.prezzo_ingrosso = l.prezzo_ingrosso + Decimal(sconto) # ladao.ultimo_costo = l.ultimo_costo + Decimal(sconto) else: ladao.prezzo_dettaglio = l.prezzo_dettaglio - Decimal(sconto) ladao.prezzo_ingrosso = l.prezzo_ingrosso - Decimal(sconto) # ladao.ultimo_costo = l.ultimo_costo - Decimal(sconto) else: ladao.prezzo_dettaglio = l.prezzo_dettaglio ladao.prezzo_ingrosso = l.prezzo_ingrosso ladao.ultimo_costo = l.ultimo_costo if tieni_data: ladao.data_listino_articolo = l.data_listino_articolo else: ladao.data_listino_articolo = datetime.datetime.now() ladao.listino_attuale = True ladao.visible = True Environment.session.add(ladao) Environment.session.commit() messageInfo(msg="Nuovo Listino creato") self.destroy()
class AnagraficaListiniEdit(AnagraficaEdit): """ Modifica un record dell'anagrafica dei listini """ def __init__(self, anagrafica): AnagraficaEdit.__init__(self, anagrafica, 'Dati pagamento', root='anagrafica_listini_detail_table', path='_anagrafica_listini_elements.glade') self._widgetFirstFocus = self.denominazione_entry add_image =self.add_image.get_stock() self.addpix = self.add_image.render_icon(add_image[0],add_image[1], None) remove_image =self.remove_image.get_stock() self.removepix = self.remove_image.render_icon(remove_image[0],remove_image[1], None) def draw(self, cplx=False): #Elenco categorie fillComboboxCategorieClienti(self.id_categoria_cliente_customcombobox.combobox) self.id_categoria_cliente_customcombobox.connect('clicked', on_id_categoria_cliente_customcombobox_clicked) fillComboboxMagazzini(self.id_magazzino_customcombobox.combobox) self.id_magazzino_customcombobox.connect('clicked', on_id_magazzino_customcombobox_clicked) fillComboboxListini(self.id_listino_customcombobox.combobox) self.id_listino_customcombobox.connect('clicked', on_id_listino_customcombobox_clicked) def setDao(self, dao): self.dao = dao if dao is None: self.dao = Listino() self._refresh() return self.dao def _refresh(self): self.denominazione_entry.set_text(self.dao.denominazione or '') self.descrizione_entry.set_text(self.dao.descrizione or '') self.data_listino_entry.set_text(dateToString(self.dao.data_listino)) if self.dao.visible is None: self.visible_check.set_active(True) else: self.visible_check.set_active(self.dao.visible) self._refreshCategorieClienti() self._refreshMagazzini() self._refreshListiniComplessi() def _refreshCategorieClienti(self): self.id_categoria_cliente_customcombobox.combobox.set_active(-1) model = self.categorie_treeview.get_model() model.clear() if not self.dao.id: return categorie = self.dao.categorieCliente for c in categorie: model.append((c.id_categoria_cliente, c.categoria_cliente, None, None)) def _refreshMagazzini(self): self.id_magazzino_customcombobox.combobox.set_active(-1) model = self.magazzini_treeview.get_model() model.clear() if not self.dao.id: return magazzini = self.dao.magazzini for m in magazzini: model.append((m.id_magazzino, m.magazzino, None, None)) def _refreshListiniComplessi(self): self.id_listino_customcombobox.combobox.set_active(-1) model = self.listino_complesso_treeview.get_model() model.clear() if not self.dao.id: return listini = self.dao.listiniComplessi for m in listini: model.append((m.id_listino, m.listino_denominazione, None, None)) def saveDao(self, tipo=None): if (self.denominazione_entry.get_text() == ''): obligatoryField(self.dialogTopLevel, self.denominazione_entry) if (self.descrizione_entry.get_text() == ''): obligatoryField(self.dialogTopLevel, self.descrizione_entry) if (self.data_listino_entry.get_text() == ''): obligatoryField(self.dialogTopLevel, self.data_listino_entry) self.dao.denominazione = self.denominazione_entry.get_text() listinoAtt = Listino().select(denominazione=self.dao.denominazione) if not listinoAtt: self.dao.listino_attuale = True else: for l in listinoAtt: l.listino_attuale = False l.persist() self.dao.listino_attuale = True self.dao.descrizione = self.descrizione_entry.get_text() self.dao.data_listino = stringToDate(self.data_listino_entry.get_text()) self.dao.visible = self.visible_check.get_active() self.dao.persist() cleanListinoCategoriaCliente = ListinoCategoriaCliente()\ .select(idListino=self.dao.id, batchSize=None) for lcc in cleanListinoCategoriaCliente: lcc.delete() for c in self.categorie_listore: if c[3] == 'deleted': pass else: daoListinoCategoriaCliente = ListinoCategoriaCliente() daoListinoCategoriaCliente.id_listino = self.dao.id daoListinoCategoriaCliente.id_categoria_cliente = c[0] daoListinoCategoriaCliente.persist() cleanMagazzini = ListinoMagazzino()\ .select(idListino=self.dao.id, batchSize=None) for mag in cleanMagazzini: mag.delete() for m in self.magazzino_listore: if m[3] != 'deleted': daoListinoMagazzino = ListinoMagazzino() daoListinoMagazzino.id_listino = self.dao.id daoListinoMagazzino.id_magazzino = m[0] daoListinoMagazzino.persist() cleanListini = ListinoComplessoListino().select(idListinoComplesso=self.dao.id, batchSize=None) #print "CLEAN LISTINI", cleanListini for lis in cleanListini: Environment.session.delete(lis) Environment.session.commit() for l in self.listino_complesso_listore: if l[3] != 'deleted': daoListinoComplessoListino = ListinoComplessoListino() daoListinoComplessoListino.id_listino_complesso = self.dao.id daoListinoComplessoListino.id_listino = l[0] daoListinoComplessoListino.persist() #self.dao.persist() self._refreshCategorieClienti() self._refreshMagazzini() self._refreshListiniComplessi() def on_add_row_categoria_button_clicked(self, widget): id = findIdFromCombobox(self.id_categoria_cliente_customcombobox.combobox) if id is not None: categoria = findStrFromCombobox(self.id_categoria_cliente_customcombobox.combobox, 2) for c in self.categorie_listore: if c[0] == id: return self.categorie_listore.append((id, categoria, self.addpix, 'added')) self.categorie_treeview.get_selection().unselect_all() def on_add_row_magazzino_button_clicked(self, widget): id = findIdFromCombobox(self.id_magazzino_customcombobox.combobox) if id: magazzino = findStrFromCombobox(self.id_magazzino_customcombobox.combobox, 2) for m in self.magazzino_listore: if m[0] == id: return self.magazzino_listore.append((id, magazzino, self.addpix, 'added')) self.magazzini_treeview.get_selection().unselect_all() def on_add_row_listino_complesso_button_clicked(self, widget): id = findIdFromCombobox(self.id_listino_customcombobox.combobox) if id: listino = findStrFromCombobox(self.id_listino_customcombobox.combobox, 2) for m in self.listino_complesso_listore: if m[0] == id: return self.listino_complesso_listore.append((id, listino, self.addpix, 'added')) self.listino_complesso_treeview.get_selection().unselect_all() def on_delete_row_categoria_button_clicked(self, widget): id = findIdFromCombobox( self.id_categoria_cliente_customcombobox.combobox) if id: for c in self.categorie_listore: if c[0] == id: if c[2] is None: c[2] = self.removepix c[3] = 'deleted' else: self.categorie_listore.remove(c.iter) self.categorie_treeview.get_selection().unselect_all() def on_delete_row_magazzino_button_clicked(self, widget): id = findIdFromCombobox(self.id_magazzino_customcombobox.combobox) if id: for m in self.magazzino_listore: if m[0] == id: if m[2] is None: m[2] = self.removepix m[3] = 'deleted' else: self.magazzini_listore.remove(m.iter) self.magazzini_treeview.get_selection().unselect_all() def on_delete_row_listino_complesso_button_clicked(self, widget): id = findIdFromCombobox(self.id_listino_customcombobox.combobox) if id: for m in self.listino_complesso_listore: if m[0] == id: if m[2] is None: m[2] = self.removepix m[3] = 'deleted' else: self.listino_complesso_listore.remove(m.iter) self.listino_complesso_treeview.get_selection().unselect_all() def on_undelete_row_categoria_button_clicked(self, widget): id = findIdFromCombobox( self.id_categoria_cliente_customcombobox.combobox) if id: for c in self.categorie_listore: if c[0] == id: if c[3] == 'deleted': c[2] = None c[3] = None self.categorie_treeview.get_selection().unselect_all() def on_undelete_row_magazzino_button_clicked(self, widget): id = findIdFromCombobox(self.id_magazzino_customcombobox.combobox) if id: for m in self.magazzini_listore: if m[0] == id: if m[3] == 'deleted': m[2] = None m[3] = None self.magazzini_treeview.get_selection().unselect_all() def on_undelete_row_listino_complesso_button_clicked(self, widget): id = findIdFromCombobox(self.id_listino_customcombobox.combobox) if id: for m in self.listino_complesso_listore: if m[0] == id: if m[3] == 'deleted': m[2] = None m[3] = None self.listino_complesso_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: idCategoriaCliente = model.get_value(iterator, 0) findComboboxRowFromId( self.id_categoria_cliente_customcombobox.combobox, idCategoriaCliente) status = model.get_value(iterator, 3) self.delete_row_categoria_button.set_sensitive(status != 'deleted') self.undelete_row_categoria_button.set_sensitive( status == 'deleted') def on_magazzini_treeview_cursor_changed(self, treeview): sel = treeview.get_selection() (model, iterator) = sel.get_selected() if iterator is not None: idMagazzino = model.get_value(iterator, 0) findComboboxRowFromId(self.id_magazzino_customcombobox.combobox, idMagazzino) status = model.get_value(iterator, 3) self.delete_row_magazzino_button.set_sensitive(status != 'deleted') self.undelete_row_magazzino_button.set_sensitive( status == 'deleted') def on_listino_complesso_treeview_cursor_changed(self, treeview): sel = treeview.get_selection() (model, iterator) = sel.get_selected() if iterator is not None: idListino = model.get_value(iterator, 0) findComboboxRowFromId(self.id_listino_customcombobox.combobox, idListino) status = model.get_value(iterator, 3) self.delete_listino_button.set_sensitive(status != 'deleted') self.undelete_listino_button.set_sensitive(status == 'deleted') def on_listini_articoli_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 gli articoli occorre salvare il listino.\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 AnagraficaListiniArticoli import AnagraficaListiniArticoli anag = AnagraficaListiniArticoli(idListino=self.dao.id) anagWindow = anag.getTopLevel() showAnagraficaRichiamata(self.dialogTopLevel, anagWindow, toggleButton) def on_variazioni_togglebutton_toggled(self, toggleButton): if toggleButton.get_active(): anag = AnagraficaVariazioniListini(idListino=self.dao.id) anagWindow = anag.getTopLevel() showAnagraficaRichiamata(self.dialogTopLevel, anagWindow, toggleButton) else: toggleButton.set_active(False) def on_check_pricelist_togglebutton_toggled(self, toggleButton): if not(toggleButton.get_active()): toggleButton.set_active(False) return if self.dao.id is None: msg = 'Prima di poter filtrare gli articoli occorre salvare il listino.\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 CrossFilterPriceList import CrossFilterPriceList anag = CrossFilterPriceList(listino=self.dao) anagWindow = anag.getTopLevel() showAnagraficaRichiamata(self.dialogTopLevel, anagWindow, toggleButton)