def codice_a_barre_articolo_table(soup=None, op=None, dao=None, row=None, all=False): d = None if soup and not all: record = soup.codice_a_barre_articolo.get(loads(row.object)) else: record = row if op =="DELETE": if all: d = CodiceABarreArticolo().getRecord(id=row.id) else: d = CodiceABarreArticolo().getRecord(id=loads(row.object)) if d: d.delete() return True elif op == "INSERT": if all: d = CodiceABarreArticolo() d.id = record.id else: d = CodiceABarreArticolo().getRecord(id=loads(row.object)) elif op == "UPDATE": if all: d = CodiceABarreArticolo().getRecord(id=row.id) else: d = CodiceABarreArticolo().getRecord(id=loads(row.object)) if not d: d = CodiceABarreArticolo() d.id = record.id d.codice = record.codice d.id_articolo = record.id_articolo d.primario = record.primario d.persist() return True
class AnagraficaCodiciABarreArticoliDetail(AnagraficaDetail): """ Dettaglio dell'anagrafica dei codici a barre """ def __init__(self, anagrafica): AnagraficaDetail.__init__(self, anagrafica, path='_anagrafica_codici_a_barre_articoli_elements.glade') def setDao(self, dao, codice=None): self.dao = dao if dao is None: self.dao = CodiceABarreArticolo() self.dao.id_articolo = self._anagrafica._idArticolo if codice: self.dao.codice = codice self._anagrafica._newRow((self.dao, codice, False)) else: self._anagrafica._newRow((self.dao, '', False)) #self._refresh() return self.dao def updateDao(self): if self.dao: self.dao = CodiceABarreArticolo().getRecord(id=self.dao.id) self._refresh() def _refresh(self): sel = self._anagrafica.anagrafica_treeview.get_selection() (model, iterator) = sel.get_selected() if iterator and self.dao: model.set_value(iterator, 0, self.dao) model.set_value(iterator, 1, self.dao.codice) model.set_value(iterator, 2, self.dao.primario or False) def saveDao(self): sel = self._anagrafica.anagrafica_treeview.get_selection() (model, iterator) = sel.get_selected() codice = model.get_value(iterator, 1) or '' if (codice == ''): obligatoryField(self._anagrafica.getTopLevel(), self._anagrafica.anagrafica_treeview) self.verifica(codice) primario = model.get_value(iterator, 2) self.dao.id_articolo = self._anagrafica._idArticolo self.dao.codice = codice self.dao.primario = primario self.dao.persist() def deleteDao(self): self.dao.delete() def verifica(self, codice): bars = CodiceABarreArticolo().select(idArticolo=None, codice=codice, offset=None, batchSize=None) if len(bars) > 0: # FIXME: la select non esegue una ricerca esatta !! if bars[0].codice != codice: return if bars[0].id_articolo != self._anagrafica._idArticolo: articolo = leggiArticolo(bars[0].id_articolo) msg = "Codice gia' assegnato all'articolo: \n\nCod. " \ + articolo["codice"] + " (" + articolo["denominazione"] + ")" messageInfo(msg=msg, transient=self._anagrafica.getTopLevel()) raise Exception('Operation aborted: Cod Barre già assegnato')