def duplicaListini(self): """ Duplica i listini relativi ad un articolo scelto su un nuovo articolo """ if self._duplicatedDaoId is None: return from promogest.dao.ListinoArticolo import ListinoArticolo listini = ListinoArticolo().select(idArticolo = self._duplicatedDaoId) for listino in listini: daoLA = ListinoArticolo() daoLA.id_listino = listino.id_listino daoLA.id_articolo = self.dao.id daoLA.prezzo_dettaglio = listino.prezzo_dettaglio daoLA.prezzo_ingrosso = listino.prezzo_ingrosso daoLA.ultimo_costo = listino.ultimo_costo daoLA.data_listino_articolo = listino.data_listino_articolo sconti_ingrosso = [] sconti_dettaglio = [] if listino.sconto_vendita_dettaglio: daoLA.applicazione_sconti = "scalare" for s in listino.sconto_vendita_dettaglio: daoScontod = ScontoVenditaDettaglio() daoScontod.valore = s.valore daoScontod.tipo_sconto = s.tipo_sconto sconti_dettaglio.append(daoScontod) if listino.sconto_vendita_dettaglio: daoLA.applicazione_sconti = "scalare" for s in listino.sconto_vendita_ingrosso: daoScontoi = ScontoVenditaIngrosso() daoScontoi.valore = s.valore daoScontoi.tipo_sconto = s.tipo_sconto sconti_ingrosso.append(daoScontoi) daoLA.persist(sconti={"dettaglio":sconti_dettaglio,"ingrosso":sconti_ingrosso}) self._duplicatedDaoId = None
def on_ok_ml_button_clicked(self, button): daos = self._filterClosure(None, None) valore = Decimal(self.valore_ml_entry.get_text() or 0) #if not valore: #return if self.aggiungi_ml_radio.get_active(): segno = "+" else: segno = "-" if self.valore_ml_radio.get_active(): tipo_sconto = "valore" else: tipo_sconto = "percentuale" if self.aggiungi_sconto_dettaglio: for d in daos: sconti_ingrosso = [] sconti_dettaglio = [] if valore > 0: g = ScontoVenditaDettaglio() g.valore = valore g.tipo_sconto = tipo_sconto sconti_dettaglio.append(g) if d.sconto_vendita_ingrosso: h = ScontoVenditaIngrosso() h.valore = d.sconto_vendita_ingrosso[0].valore h.tipo_sconto = d.sconto_vendita_ingrosso[0].tipo_sconto sconti_ingrosso.append(h) d.persist(sconti={"dettaglio":sconti_dettaglio,"ingrosso":sconti_ingrosso}) elif self.aggiungi_sconto_ingrosso: for d in daos: sconti_ingrosso = [] sconti_dettaglio = [] if valore > 0: g = ScontoVenditaIngrosso() g.valore = valore g.tipo_sconto = tipo_sconto sconti_ingrosso.append(g) if d.sconto_vendita_dettaglio: h = ScontoVenditaDettaglio() h.valore = d.sconto_vendita_dettaglio[0].valore h.tipo_sconto = d.sconto_vendita_dettaglio[0].tipo_sconto sconti_ingrosso.append(h) d.persist(sconti={"dettaglio":sconti_dettaglio,"ingrosso":sconti_ingrosso}) elif self.variazione_dettaglio: if not valore: return for d in daos: if d.prezzo_dettaglio is None: d.prezzo_dettaglio = Decimal(0) if segno == "+" and tipo_sconto == "valore": d.prezzo_dettaglio = d.prezzo_dettaglio + valore elif segno == "-" and tipo_sconto == "valore": d.prezzo_dettaglio = d.prezzo_dettaglio - valore elif segno == "+" and tipo_sconto == "percentuale": d.prezzo_dettaglio = d.prezzo_dettaglio * (1 + valore / 100) elif segno == "-" and tipo_sconto == "percentuale": d.prezzo_dettaglio = d.prezzo_dettaglio * ( 1 - valore / 100) Environment.session.add(d) elif self.variazione_ingrosso: if not valore: return for d in daos: if d.prezzo_ingrosso is None: d.prezzo_ingrosso = Decimal(0) if segno == "+" and tipo_sconto == "valore": d.prezzo_ingrosso = d.prezzo_ingrosso + valore elif segno == "-" and tipo_sconto == "valore": d.prezzo_ingrosso = d.prezzo_ingrosso - valore elif segno == "+" and tipo_sconto == "percentuale": d.prezzo_ingrosso = d.prezzo_ingrosso * (1 + valore / 100) elif segno == "-" and tipo_sconto == "percentuale": d.prezzo_ingrosso = d.prezzo_ingrosso * (1 - valore / 100) Environment.session.add(d) Environment.session.commit() messageInfo(msg="Operazione effettuata") self.modifiche_listino.hide() self.refresh()
def saveDao(self, tipo=None): """ """ creaentryvarianti = False articolo = None if findIdFromCombobox(self.id_listino_customcombobox.combobox) is None: obligatoryField(self.dialogTopLevel, self.id_listino_customcombobox.combobox) if self.id_articolo_customcombobox.getId() is None: obligatoryField(self.dialogTopLevel, self.id_articolo_customcombobox) listin = findIdFromCombobox(self.id_listino_customcombobox.combobox) self.dao.id_listino = listin self.dao.id_articolo = self.id_articolo_customcombobox.getId() if posso("PW"): articolo = Articolo().getRecord(id=self.dao.id_articolo) if articleType(articolo) == "father": msg = 'Attenzione! Si sta aggiungengo un Articolo Padre, creare le voci listino anche delle varianti?' if YesNoDialog(msg=msg, transient=self.dialogTopLevel): Environment.pg2log.info("CREO LE ENTRY DELLE VARIANTI DI LISTINO PERCHE' SI STA INSERENDO UN PADRE") for art in articolo.articoliVarianti: daoVariante = ListinoArticolo().select(idListino=listin, idArticolo=art.id) if daoVariante: #daoVariante[0].delete() daoVariante =daoVariante[0] else: daoVariante = ListinoArticolo() if Environment.listinoFissato and self._anagrafica._idListino: Environment.listinoFissato = None daoVariante.id_articolo = art.id daoVariante.id_listino = findIdFromCombobox(self.id_listino_customcombobox.combobox) daoVariante.listino_attuale = True daoVariante.ultimo_costo = float(self.ultimo_costo_entry.get_text()) daoVariante.prezzo_dettaglio = float(self.prezzo_dettaglio_entry.get_text()) daoVariante.prezzo_ingrosso = float(self.prezzo_ingrosso_entry.get_text()) daoVariante.data_listino_articolo = datetime.datetime.today() sconti_dettaglio = [] daoVariante.applicazione_sconti = "scalare" for s in self.sconti_dettaglio_widget.getSconti(): daoSconto = ScontoVenditaDettaglio() daoSconto.valore = s["valore"] daoSconto.tipo_sconto = s["tipo"] sconti_dettaglio.append(daoSconto) sconti_ingrosso = [] daoVariante.applicazione_sconti = "scalare" for s in self.sconti_ingrosso_widget.getSconti(): daoSconto = ScontoVenditaIngrosso() daoSconto.valore = s["valore"] daoSconto.tipo_sconto = s["tipo"] sconti_ingrosso.append(daoSconto) daoVariante.persist(sconti={"dettaglio":sconti_dettaglio,"ingrosso":sconti_ingrosso}) #self.articolo_padre = articolo #creaentryvarianti = True self.dao.listino_attuale = True self.dao.ultimo_costo = float(self.ultimo_costo_entry.get_text()) self.dao.prezzo_dettaglio = float(self.prezzo_dettaglio_entry.get_text()) self.dao.prezzo_ingrosso = float(self.prezzo_ingrosso_entry.get_text()) self.dao.data_listino_articolo = datetime.datetime.today() sconti_dettaglio = [] self.dao.applicazione_sconti = "scalare" for s in self.sconti_dettaglio_widget.getSconti(): daoSconto = ScontoVenditaDettaglio() daoSconto.valore = s["valore"] daoSconto.tipo_sconto = s["tipo"] sconti_dettaglio.append(daoSconto) sconti_ingrosso = [] self.dao.applicazione_sconti = "scalare" for s in self.sconti_ingrosso_widget.getSconti(): daoSconto = ScontoVenditaIngrosso() daoSconto.valore = s["valore"] daoSconto.tipo_sconto = s["tipo"] sconti_ingrosso.append(daoSconto) #TODO :riportarlo alle property , risulta molto più pulito self.dao.persist(sconti={"dettaglio":sconti_dettaglio,"ingrosso":sconti_ingrosso})