def setDao(self, dao): """ """ self.dao = dao if dao is None: # Crea un nuovo Dao vuoto self.dao = ListinoArticolo() if Environment.listinoFissato and self._anagrafica._idListino: Environment.listinoFissato = None self._refresh() return self.dao
def fillDaos(self): """fillDaos method fills all Dao related to daoArticolo """ if posso("PW") and self.tipoArticolo == "SON": self.daoArticolo.codice = self.articoloPadre.codice + self.gruppo_taglia[0:3] + self.taglia + self.colore self.daoArticolo.denominazione = self.articoloPadre.denominazione + ' ' + self.taglia + ' ' + self.colore self.codice_articolo = self.articoloPadre else: if self.codice_articolo is None or self.codice_articolo == "None": self.codice_articolo = promogest.dao.Articolo.getNuovoCodiceArticolo() self.daoArticolo.codice = str(self.codice_articolo) if self.denominazione_articolo: self.daoArticolo.denominazione = str(self.denominazione_articolo) else: if not self.daoArticolo.denominazione: messageInfo(msg= "ATTENZIONE DESCRIZIONE MANCANTE\nIN INSERIMENTO NUOVO ARTICOLO %s" %str(self.codice_barre_articolo)) # raise NameError("ERRORE DESCRIZIONE MANCANTE") return # print "STO PER SALVARE ", self.daoArticolo.denominazione #families id_famiglia = None if self.famiglia_articolo is None: self.famiglia_articolo_id = int(self.defaults['Famiglia']) self.famiglia_articolo = FamigliaArticolo().getRecord(id=self.famiglia_articolo_id) id_famiglia = self.famiglia_articolo.id else: self._families = FamigliaArticolo().select(batchSize=None) code_list = [] for f in self._families: code_list.append(f.codice) if self.famiglia_articolo in (f.denominazione_breve, f.denominazione, f.codice, f.id): id_famiglia = f.id break if id_famiglia is None: family_code = self.famiglia_articolo[:4] if len(self._families) > 0: ind = 0 for code in code_list: if family_code == code[:4]: ind +=1 family_code = family_code+'/'+str(ind) daoFamiglia = FamigliaArticolo() daoFamiglia.codice = family_code daoFamiglia.denominazione_breve = self.famiglia_articolo[:10] daoFamiglia.denominazione = self.famiglia_articolo daoFamiglia.id_padre = None daoFamiglia.persist() id_famiglia = daoFamiglia.id self._families.append(daoFamiglia) self.daoArticolo.id_famiglia_articolo = id_famiglia #categories id_categoria = None if self.categoria_articolo is None: self.categoria_articolo_id = self.defaults['Categoria'] self.categoria_articolo = CategoriaArticolo().getRecord(id=self.categoria_articolo_id) id_categoria = self.categoria_articolo.id else: self._categories = CategoriaArticolo().select(batchSize=None) category_list = [] for c in self._categories: category_list.append(c.denominazione_breve) if self.categoria_articolo in (c.denominazione, c.denominazione_breve): id_categoria = c.id break if id_categoria == None: category_short_name = self.categoria_articolo[:7] if len(self._categories) > 0: ind = 0 for category in category_list: if category_short_name == category[:7]: ind +=1 category_short_name = category_short_name+'/'+str(ind) daoCategoria = CategoriaArticolo() daoCategoria.denominazione_breve = category_short_name daoCategoria.denominazione = self.categoria_articolo daoCategoria.persist() id_categoria = daoCategoria.id self._categories.append(daoCategoria) self.daoArticolo.id_categoria_articolo = id_categoria #IVA id_aliquota_iva = None if self.aliquota_iva is None: self.aliquota_iva_id = self.defaults['Aliquota iva'] self.aliquota_iva = AliquotaIva().getRecord(id=self.aliquota_iva_id) id_aliquota_iva = self.aliquota_iva.id else: self._vats = AliquotaIva().select(batchSize=None) for v in self._vats: if self.aliquota_iva.lower() in (v.denominazione_breve.lower(), v.denominazione.lower()) or\ int(str(self.aliquota_iva).replace('%', '') or 20) == int(v.percentuale): id_aliquota_iva = v.id break if id_aliquota_iva is None: self.aliquota_iva = str(self.aliquota_iva).replace('%', '') daoAliquotaIva = AliquotaIva() daoAliquotaIva.denominazione = 'ALIQUOTA '+ self.aliquota_iva +'%' daoAliquotaIva.denominazione_breve = self.aliquota_iva + '%' daoAliquotaIva.id_tipo = 1 daoAliquotaIva.percentuale = Decimal(self.aliquota_iva) daoAliquotaIva.persist() id_aliquota_iva = daoAliquotaIva.id self._vats.append(daoAliquotaIva) self.daoArticolo.id_aliquota_iva = id_aliquota_iva #UNITA BASE id_unita_base = None if self.unita_base is None: self.unita_base_id = self.defaults['Unita base'] #FIXME: promogest2 ----proviamo # La storedProcedure UnitaBaseGet NON esiste e la chiamta Dao #qui sotto fallisce con un errore!!! self.unita_base = UnitaBase().getRecord(id=self.unita_base_id) id_unita_base = self.unita_base_id else: unis = UnitaBase().select(batchSize=None) for u in unis: if self.unita_base.lower() in (u.denominazione.lower(), u.denominazione_breve.lower()): id_unita_base = u.id break if id_unita_base is None: self.unita_base = UnitaBase().select(denominazione='Pezzi', batchSize=None)[0] id_unita_base = self.unita_base.id self.daoArticolo.id_unita_base = id_unita_base self.daoArticolo.produttore = self.produttore or '' self.daoArticolo.cancellato = False self.daoArticolo.sospeso = False # print "PTIMA DEL PERSIT", self.daoArticolo.__dict__ self.daoArticolo.persist() product_id = self.daoArticolo.id #barcode if self.codice_barre_articolo is not None: self.codice_barre_articolo = str(self.codice_barre_articolo).strip() try: oldCodeBar= CodiceABarreArticolo().select(idArticolo=product_id) if oldCodeBar: for codes in oldCodeBar: codes.primario = False codes.persist() except: pass barCode = CodiceABarreArticolo().\ select(codiceEM=self.codice_barre_articolo, batchSize=None) if len(barCode) > 0: daoBarCode = CodiceABarreArticolo().getRecord(id=barCode[0].id) daoBarCode.id_articolo = product_id daoBarCode.primario = True daoBarCode.persist() else: daoBarCode = CodiceABarreArticolo() daoBarCode.id_articolo = product_id daoBarCode.codice = self.codice_barre_articolo daoBarCode.primario = True daoBarCode.persist() #price-list--> product decimalSymbol = self.PLModel._decimalSymbol if (self.prezzo_vendita_non_ivato is not None or \ self.prezzo_acquisto_non_ivato is not None or \ self.prezzo_acquisto_ivato is not None or \ self.prezzo_vendita_ivato is not None): try: daoPriceListProduct = ListinoArticolo().\ select(idListino=self.price_list_id, idArticolo=product_id, batchSize=None)[0] except: daoPriceListProduct = ListinoArticolo() daoPriceListProduct.id_articolo = product_id daoPriceListProduct.id_listino = self.price_list_id daoPriceListProduct.data_listino_articolo = self.dataListino daoPriceListProduct.listino_attuale = True if self.prezzo_vendita_ivato is not None: prezzo = self.sanitizer(self.prezzo_vendita_ivato) daoPriceListProduct.prezzo_dettaglio = mN(prezzo) else: daoPriceListProduct.prezzo_dettaglio = 0 if self.prezzo_vendita_non_ivato is not None: prezzo = self.sanitizer(self.prezzo_vendita_non_ivato) daoPriceListProduct.prezzo_ingrosso = mN(prezzo) else: daoPriceListProduct.prezzo_ingrosso = 0 sconti_ingrosso = [ScontoVenditaIngrosso(), ] sconti_dettaglio = [ScontoVenditaDettaglio(), ] if self.sconto_vendita_ingrosso is not None \ and str(self.sconto_vendita_ingrosso).strip() != "0" \ and str(self.sconto_vendita_ingrosso).strip() !="": self.sconto_vendita_ingrosso = self.sanitizer(self.sconto_vendita_ingrosso) sconti_ingrosso[0].valore = mN(self.sconto_vendita_ingrosso) sconti_ingrosso[0].tipo_sconto = 'percentuale' daoPriceListProduct.sconto_vendita_ingrosso = sconti_ingrosso if self.sconto_vendita_dettaglio and \ str(self.sconto_vendita_dettaglio).strip() != "0" and \ str(self.sconto_vendita_dettaglio).strip() !="": self.sconto_vendita_dettaglio = self.sanitizer(self.sconto_vendita_dettaglio) sconti_dettaglio[0].valore = mN(self.sconto_vendita_dettaglio) sconti_dettaglio[0].tipo_sconto = 'percentuale' daoPriceListProduct.sconto_vendita_dettaglio = sconti_dettaglio if self.prezzo_acquisto_non_ivato is not None and \ str(self.prezzo_acquisto_non_ivato).strip() != "0" and \ str(self.prezzo_acquisto_non_ivato).strip() !="": prezzo = self.sanitizer(self.prezzo_acquisto_non_ivato) daoPriceListProduct.ultimo_costo = mN(prezzo) elif self.prezzo_acquisto_ivato is not None and \ str(self.prezzo_acquisto_ivato).strip() != "0" and \ str(self.prezzo_acquisto_ivato).strip() !="": prezzo = self.sanitizer(self.prezzo_acquisto_ivato) self.aliquota_iva.percentuale = self.sanitizer(self.aliquota_iva.percentuale) daoPriceListProduct.ultimo_costo = mN(calcolaPrezzoIva(mN(prezzo), -1 * (mN(self.aliquota_iva.percentuale)))) else: daoPriceListProduct.ultimo_costo = 0 # print " QUSTNO NON VA BEEN ", daoPriceListProduct.__dict__ daoPriceListProduct.persist() # Fornitura daoFornitura = Fornitura().select(idFornitore=self.fornitore, idArticolo=self.daoArticolo.id, daDataPrezzo=self.dataListino, aDataPrezzo=self.dataListino, batchSize=None) if len(daoFornitura) == 0: daoFornitura = Fornitura() daoFornitura.prezzo_netto = prezzo or 0 daoFornitura.prezzo_lordo = prezzo or 0 daoFornitura.id_fornitore = self.fornitore daoFornitura.id_articolo = self.daoArticolo.id try: daoFornitura.percentuale_iva = Decimal(str(self.aliquota_iva.percentuale)) except: daoFornitura.percentuale_iva = Decimal(str(self.aliquota_iva)) daoFornitura.data_prezzo = self.dataListino daoFornitura.codice_articolo_fornitore = self.codice_fornitore daoFornitura.fornitore_preferenziale = True daoFornitura.persist() self.product = None
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 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})
class AnagraficaListiniArticoliEdit(AnagraficaEdit): """ Modifica un record dell'anagrafica degli articoli dei listini """ def __init__(self, anagrafica): """ Gestione la modifica e l'editing dei listino articolo """ AnagraficaEdit.__init__(self, anagrafica, 'Dati articolo nel listino', root='anagrafica_listini_articoli_detail_table', path='_anagrafica_listini_articoli_elements.glade') self._widgetFirstFocus = self.id_articolo_customcombobox self._percentualeIva = 0 if not posso("PW"): self.taglia_colore_table.hide() self.taglia_colore_table.set_no_show_all(True) decimals = int(setconf(key="decimals", section="Numbers")) self.nformat = '%-14.' + str(decimals) + 'f' def on_sconti_dettaglio_widget_button_toggled(self, button): """ Gestione sconti dettaglio con custom Widget """ if button.get_property('active') is True: return _scontoDettaglio= self.sconti_dettaglio_widget.getSconti() def on_sconti_ingrosso_widget_button_toggled(self, button): """ Gestione sconti dettaglio con custom Widget """ if button.get_property('active') is True: return _scontoIngrosso= self.sconti_ingrosso_widget.getSconti() def on_calcola_costo_ultimo_da_dettaglio_button_clicked(self, button): #self.calcolaDettaglioDaRicarico() cu= calcolaCostoUltimodaDettaglio(dettaglio=self.prezzo_dettaglio_entry.get_text(), ricarico= self.percentuale_ricarico_dettaglio_entry.get_text(), iva= self._percentualeIva) self.ultimo_costo_entry.set_text('%-6.3f' % cu) def on_calcola_costo_ultimo_da_ingrosso_button_clicked(self, button): #self.calcolaDettaglioDaRicarico() cu= calcolaCostoUltimodaIngrosso(ingrosso=self.prezzo_ingrosso_entry.get_text(), ricarico= self.percentuale_ricarico_ingrosso_entry.get_text(), ) self.ultimo_costo_entry.set_text('%-6.3f' % cu) def calcolaPercentualiDettaglio(self, widget=None, event=None): """ calcolaPercentualiDettaglio """ self.percentuale_ricarico_dettaglio_entry.set_text('%-6.3f' % calcolaRicarico( self.ultimo_costo_entry.get_text(), self.prezzo_dettaglio_entry.get_text(), self._percentualeIva)) self.percentuale_margine_dettaglio_entry.set_text('%-6.3f' % calcolaMargine( self.ultimo_costo_entry.get_text(), self.prezzo_dettaglio_entry.get_text(), self._percentualeIva)) def confermaCalcolaPercentualiDettaglio(self, widget=None, event=None): """ confermaCalcolaPercentualiDettaglio """ keyname = gdk_keyval_name(event.keyval) if keyname == 'Return' or keyname == 'KP_Enter': self.calcolaPercentualiDettaglio() def calcolaPercentualiIngrosso(self, widget=None, event=None): """ calcolaPercentualiIngrosso """ self.percentuale_ricarico_ingrosso_entry.set_text('%-6.3f' % calcolaRicarico( self.ultimo_costo_entry.get_text(), self.prezzo_ingrosso_entry.get_text())) self.percentuale_margine_ingrosso_entry.set_text('%-6.3f' % calcolaMargine( self.ultimo_costo_entry.get_text(), self.prezzo_ingrosso_entry.get_text())) def confermaCalcolaPercentualiIngrosso(self, widget=None, event=None): """ """ keyname = gdk_keyval_name(event.keyval) if keyname == 'Return' or keyname == 'KP_Enter': self.calcolaPercentualiIngrosso() def aggiornaCostoIvato(self, widget=None, event=None): """ """ self.ultimo_costo_ivato_label.set_text(self.nformat % calcolaPrezzoIva( self.ultimo_costo_entry.get_text(), self._percentualeIva)) return False def aggiornaDaCosto(self, widget=None, event=None): """ """ self.aggiornaCostoIvato() def confermaAggiornaDaCosto(self, widget=None, event=None): """ """ keyname = gdk_keyval_name(event.keyval) if keyname == 'Return' or keyname == 'KP_Enter': self.aggiornaDaCosto() def calcolaDettaglioDaRicarico(self, widget=None, event=None): """ """ prezzoDettaglio=self.nformat % calcolaListinoDaRicarico( self.ultimo_costo_entry.get_text(), self.percentuale_ricarico_dettaglio_entry.get_text(), self._percentualeIva) self.prezzo_dettaglio_entry.set_text(prezzoDettaglio) self.prezzo_dettaglio_noiva_label.set_text(self.nformat % calcolaPrezzoIva( prezzoDettaglio, ((-1)*self._percentualeIva))) self.percentuale_margine_dettaglio_entry.set_text('%-6.3f' % calcolaMargine( self.ultimo_costo_entry.get_text(), prezzoDettaglio, self._percentualeIva)) def confermaCalcolaDettaglioDaRicarico(self, widget=None, event=None): """ """ keyname = gdk_keyval_name(event.keyval) if keyname == 'Return' or keyname == 'KP_Enter': self.calcolaDettaglioDaRicarico() def calcolaDettaglioDaMargine(self, widget=None, event=None): """ """ self.prezzo_dettaglio_entry.set_text(self.nformat % calcolaListinoDaMargine( self.ultimo_costo_entry.get_text(), self.percentuale_margine_dettaglio_entry.get_text(), self._percentualeIva)) self.prezzo_dettaglio_noiva_label.set_text(self.nformat % calcolaPrezzoIva( self.prezzo_dettaglio_entry.get_text(), ((-1)*self._percentualeIva))) self.percentuale_ricarico_dettaglio_entry.set_text('%-6.3f' % calcolaRicarico( self.ultimo_costo_entry.get_text(), self.prezzo_dettaglio_entry.get_text(), self._percentualeIva)) def confermaCalcolaDettaglioDaMargine(self, widget=None, event=None): """ """ keyname = gdk_keyval_name(event.keyval) if keyname == 'Return' or keyname == 'KP_Enter': self.calcolaDettaglioDaMargine() def aggiornaDaDettaglio(self, widget=None, event=None): """ """ self.prezzo_dettaglio_noiva_label.set_text(self.nformat % calcolaPrezzoIva( self.prezzo_dettaglio_entry.get_text(), ((-1)*self._percentualeIva))) przD = float(self.prezzo_dettaglio_noiva_label.get_text() or 0) przI = float(self.prezzo_ingrosso_entry.get_text() or 0) if przI == float(0): self.prezzo_ingrosso_entry.set_text(self.nformat % przD) self.prezzo_ingrosso_ivato_label.set_text(self.prezzo_dettaglio_entry.get_text()) else: if przD != przI: msg = 'Attenzione! Aggiornare anche il listino ingrosso ?' if YesNoDialog(msg=msg, transient=self.dialogTopLevel): self.prezzo_ingrosso_entry.set_text(self.nformat % przD) self.prezzo_ingrosso_ivato_label.set_text(self.prezzo_dettaglio_entry.get_text()) return False def calcolaIngrossoDaRicarico(self, widget=None, event=None): """ """ self.prezzo_ingrosso_entry.set_text(self.nformat % calcolaListinoDaRicarico( self.ultimo_costo_entry.get_text(), self.percentuale_ricarico_ingrosso_entry.get_text())) self.prezzo_ingrosso_ivato_label.set_text(self.nformat % calcolaPrezzoIva( self.prezzo_ingrosso_entry.get_text(), self._percentualeIva)) self.percentuale_margine_ingrosso_entry.set_text('%-6.3f' % calcolaMargine( self.ultimo_costo_entry.get_text(), self.prezzo_ingrosso_entry.get_text())) def confermaCalcolaIngrossoDaRicarico(self, widget=None, event=None): """ """ keyname = gdk_keyval_name(event.keyval) if keyname == 'Return' or keyname == 'KP_Enter': self.calcolaIngrossoDaRicarico() def calcolaIngrossoDaMargine(self, widget=None, event=None): """ """ self.prezzo_ingrosso_entry.set_text(self.nformat % calcolaListinoDaMargine( self.ultimo_costo_entry.get_text(), self.percentuale_margine_ingrosso_entry.get_text())) self.prezzo_ingrosso_ivato_label.set_text(self.nformat % calcolaPrezzoIva( self.prezzo_ingrosso_entry.get_text(), self._percentualeIva)) self.percentuale_ricarico_ingrosso_entry.set_text('%-6.3f' % calcolaRicarico( self.ultimo_costo_entry.get_text(), self.prezzo_ingrosso_entry.get_text())) def confermaCalcolaIngrossoDaMargine(self, widget=None, event=None): """ """ keyname = gdk_keyval_name(event.keyval) if keyname == 'Return' or keyname == 'KP_Enter': self.calcolaIngrossoDaMargine() def aggiornaDaIngrosso(self, widget=None, event=None): """ """ self.prezzo_ingrosso_ivato_label.set_text(self.nformat % calcolaPrezzoIva( self.prezzo_ingrosso_entry.get_text(), self._percentualeIva)) przI = float(self.prezzo_ingrosso_ivato_label.get_text() or 0) przD = float(self.prezzo_dettaglio_entry.get_text() or 0) if przD == float(0): self.prezzo_dettaglio_entry.set_text(self.nformat % przI) self.prezzo_dettaglio_noiva_label.set_text(self.prezzo_ingrosso_entry.get_text()) else: if przI != przD: msg = 'Attenzione! Aggiornare anche il listino dettaglio ?' if YesNoDialog(msg=msg, transient=self.dialogTopLevel): self.prezzo_dettaglio_entry.set_text(self.nformat % przI) self.prezzo_dettaglio_noiva_label.set_text(self.prezzo_ingrosso_entry.get_text()) return False def draw(self, cplx=False): """ """ self.id_articolo_customcombobox.setSingleValue() self.id_articolo_customcombobox.setOnChangedCall(self.on_id_articolo_customcombobox_changed) fillComboboxListini(self.id_listino_customcombobox.combobox) self.id_listino_customcombobox.connect('clicked', on_id_listino_customcombobox_clicked, None, None) if self._anagrafica._articoloFissato: self.id_articolo_customcombobox.setId(self._anagrafica._idArticolo) res = self.id_articolo_customcombobox.getData() self.id_articolo_customcombobox.set_sensitive(False) self.descrizione_breve_aliquota_iva_label.set_text(res["denominazioneBreveAliquotaIva"]) self._percentualeIva = res["percentualeAliquotaIva"] self.percentuale_aliquota_iva_label.set_text(str(mN(self._percentualeIva,0)) + ' %') if self._anagrafica._listinoFissato: findComboboxRowFromId(self.id_listino_customcombobox.combobox, self._anagrafica._idListino) self.id_listino_customcombobox.set_sensitive(False) self.id_articolo_customcombobox.giveAnag(self) self.sconti_dettaglio_widget.setValues() self.sconti_ingrosso_widget.setValues() def on_id_articolo_customcombobox_changed(self): """ """ re = self.id_articolo_customcombobox.getData() res = None if re: res = leggiArticolo(re.id) if res: self.descrizione_breve_aliquota_iva_label.set_text(res["denominazioneBreveAliquotaIva"]) self._percentualeIva = res["percentualeAliquotaIva"] self.percentuale_aliquota_iva_label.set_text(str(mN(self._percentualeIva,0)) + ' %') fornitura = leggiFornitura(self.id_articolo_customcombobox.getId()) self.ultimo_costo_entry.set_text(self.nformat % float(fornitura["prezzoNetto"])) self.aggiornaCostoIvato() self.calcolaDettaglioDaRicarico() self.calcolaIngrossoDaRicarico() def setDao(self, dao): """ """ self.dao = dao if dao is None: # Crea un nuovo Dao vuoto self.dao = ListinoArticolo() if Environment.listinoFissato and self._anagrafica._idListino: Environment.listinoFissato = None self._refresh() return self.dao def _refresh(self): """ """ self.id_articolo_customcombobox.refresh(clear=True, filter=False) self.id_articolo_customcombobox.set_sensitive(True) if self.dao.id_articolo is None: if self._anagrafica._articoloFissato: self.dao.id_articolo = self._anagrafica._idArticolo self.id_articolo_customcombobox.set_sensitive(False) else: self.id_articolo_customcombobox.set_sensitive(False) self.sconti_dettaglio_widget.setValues(sco=self.dao.sconto_vendita_dettaglio) self.sconti_ingrosso_widget.setValues(sco=self.dao.sconto_vendita_ingrosso) self.id_articolo_customcombobox.setId(self.dao.id_articolo) res = self.id_articolo_customcombobox.getData() if res: self.descrizione_breve_aliquota_iva_label.set_text(res["denominazioneBreveAliquotaIva"]) self._percentualeIva = res["percentualeAliquotaIva"] self.percentuale_aliquota_iva_label.set_text(str(self.nformat % self._percentualeIva) + ' %') self.id_listino_customcombobox.combobox.set_active(-1) self.id_listino_customcombobox.set_sensitive(True) if self.dao.id_listino is None: if self._anagrafica._listinoFissato: self.dao.id_listino = self._anagrafica._idListino self.id_listino_customcombobox.set_sensitive(False) else: self.id_listino_customcombobox.set_sensitive(False) findComboboxRowFromId(self.id_listino_customcombobox.combobox, self.dao.id_listino) if self.dao.ultimo_costo is None: fornitura = leggiFornitura(self.id_articolo_customcombobox.getId()) self.ultimo_costo_entry.set_text(self.nformat % float(fornitura["prezzoNetto"])) else: self.ultimo_costo_entry.set_text(self.nformat % float(self.dao.ultimo_costo or 0)) self.data_listino_articolo_label.set_text(dateToString(self.dao.data_listino_articolo)) self.prezzo_dettaglio_entry.set_text(self.nformat % float(self.dao.prezzo_dettaglio or 0)) self.prezzo_ingrosso_entry.set_text(self.nformat % float(self.dao.prezzo_ingrosso or 0)) self.percentuale_ricarico_dettaglio_entry.set_text('%-6.3f' % calcolaRicarico( self.dao.ultimo_costo, self.dao.prezzo_dettaglio, self._percentualeIva)) self.percentuale_margine_dettaglio_entry.set_text('%-6.3f' % calcolaMargine( self.dao.ultimo_costo, self.dao.prezzo_dettaglio, self._percentualeIva)) self.percentuale_ricarico_ingrosso_entry.set_text('%-6.3f' % calcolaRicarico( self.dao.ultimo_costo, self.dao.prezzo_ingrosso)) self.percentuale_margine_ingrosso_entry.set_text('%-6.3f' % calcolaMargine( self.dao.ultimo_costo, self.dao.prezzo_ingrosso)) self.ultimo_costo_ivato_label.set_text(self.nformat % calcolaPrezzoIva( self.dao.ultimo_costo, self._percentualeIva)) a = calcolaPrezzoIva(self.dao.prezzo_dettaglio,((-1)*self._percentualeIva)) self.prezzo_dettaglio_noiva_label.set_text(self.nformat % calcolaPrezzoIva( self.dao.prezzo_dettaglio, ((-1)*self._percentualeIva))) self.prezzo_ingrosso_ivato_label.set_text(self.nformat % calcolaPrezzoIva( self.dao.prezzo_ingrosso, self._percentualeIva)) self.sconti_dettaglio_widget.setValues(self.dao.sconto_vendita_dettaglio, self.dao.applicazione_sconti_dettaglio) self.sconti_ingrosso_widget.setValues(self.dao.sconto_vendita_ingrosso, self.dao.applicazione_sconti_ingrosso) if posso("PW"): self._refreshTagliaColore(self.dao.id_articolo) def _refreshTagliaColore(self, idArticolo): """ """ articoloTagliaColore = Articolo().getRecord(id=idArticolo) self.taglia_colore_table.hide() if articoloTagliaColore is not None: gruppoTaglia = articoloTagliaColore.denominazione_gruppo_taglia or '' taglia = articoloTagliaColore.denominazione_taglia or '' colore = articoloTagliaColore.denominazione_colore or '' anno = articoloTagliaColore.anno or '' stagione = articoloTagliaColore.stagione or '' genere = articoloTagliaColore.genere or '' self.taglia_label.set_markup('<span weight="bold">%s (%s) %s</span>' % (taglia, gruppoTaglia, genere)) self.colore_label.set_markup('<span weight="bold">%s</span>' % (colore)) self.stagione_label.set_markup('<span weight="bold">%s %s</span>' % (stagione, anno)) self.taglia_colore_table.show() 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})
def listino_articolo_table(soup=None, op=None, dao=None,rowLocale=None, row=None,all=False): d = None if soup and not all: record = soup.listino_articolo.get(loads(row.object)) else: record = row if op =="DELETE": if all: d = ListinoArticolo().getRecord(id=[row.id_articolo,row.id_listino,row.data_listino_articolo]) else: d = ListinoArticolo().getRecord(id=loads(row.object)) if d: d.delete() return True elif op == "INSERT": if all: d = ListinoArticolo() d.id_listino = record.id_listino d.id_articolo = record.id_articolo d.data_listino_articolo = record.data_listino_articolo else: d = ListinoArticolo().getRecord(id=loads(row.object)) elif op == "UPDATE": if all: #d = ListinoArticolo().getRecord(id=[row.id_articolo,row.id_listino,row.data_listino_articolo]) d = Environment.params["session"].query(ListinoArticolo).get((row.id_articolo,row.id_listino,row.data_listino_articolo)) else: d = ListinoArticolo().getRecord(id=loads(row.object)) print "DDDDDDDDD", d if not d: d = ListinoArticolo() d.id_listino = record.id_listino d.id_articolo = record.id_articolo d.data_listino_articolo = record.data_listino_articolo d.prezzo_dettaglio = record.prezzo_dettaglio d.prezzo_ingrosso = record.prezzo_ingrosso d.ultimo_costo= record.ultimo_costo d.listino_attuale = record.listino_attuale a = d.persist() if not a: #g = ListinoArticolo().select(codice=record.codice) #if g : #g=g[0] #g.codice = g.codice+"BIS" #b = g.persist() #if not b: print "PROPRIO NON SO COSA FARE HO ANCHE CAMBIATO IL CODICE" #listino_articolo_table(soup=soup, op=op, dao=dao, row=row, all=all) return True
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()
def on_aggiorna_button_clicked(self, button=None): if ((self.cambia_prezzo_dettaglio_radiobutton.get_active() and not(float(self.prezzo_dettaglio_entry.get_text()) > 0)) or (self.cambia_prezzo_ingrosso_radiobutton.get_active() and not(float(self.prezzo_ingrosso_entry.get_text()) > 0))): msg = 'Attenzione! Almeno uno dei prezzi e\' stato impostato a 0.\n Continuare ?' if not YesNoDialog(transient=self.getTopLevel(), msg=msg): return nuovoCosto = self._nuovoCosto vecchioCosto = 0 model = self.listini_treeview.get_model() for r in model: if r[1]: idListino = r[0].id_listino daoListinoArticolo = ListinoArticolo().select(idListino=r[0].id_listino, idArticolo= self._idArticolo, batchSize=None, orderBy=ListinoArticolo.id_listino)[0] vecchioCosto = daoListinoArticolo.ultimo_costo or 0 if nuovoCosto is not None: daoListinoArticolo.ultimo_costo = nuovoCosto else: nuovoCosto = vecchioCosto daoListinoArticolo.data_listino_articolo = None daoListinoArticolo.listino_attuale = True if self.mantieni_ricarico_dettaglio_radiobutton.get_active(): ricarico = calcolaRicarico(float(vecchioCosto), float(daoListinoArticolo.prezzo_dettaglio), float(self._percentualeIva)) daoListinoArticolo.prezzo_dettaglio = calcolaListinoDaRicarico(float(nuovoCosto), float(ricarico), float(self._percentualeIva)) elif self.mantieni_margine_dettaglio_radiobutton.get_active(): margine = calcolaMargine(float(vecchioCosto), float(daoListinoArticolo.prezzo_dettaglio), float(self._percentualeIva)) daoListinoArticolo.prezzo_dettaglio = calcolaListinoDaMargine(float(daoListinoArticolo.ultimo_costo), float(margine), float(self._percentualeIva)) elif self.cambia_prezzo_dettaglio_radiobutton.get_active(): daoListinoArticolo.prezzo_dettaglio = float(self.prezzo_dettaglio_entry.get_text()) if self.mantieni_ricarico_ingrosso_radiobutton.get_active(): ricarico = calcolaRicarico(float(vecchioCosto), float(daoListinoArticolo.prezzo_ingrosso)) daoListinoArticolo.prezzo_ingrosso = calcolaListinoDaRicarico(float(nuovoCosto), float(ricarico)) elif self.mantieni_margine_ingrosso_radiobutton.get_active(): margine = calcolaMargine(float(vecchioCosto), float(daoListinoArticolo.prezzo_ingrosso)) daoListinoArticolo.prezzo_ingrosso = calcolaListinoDaMargine(float(daoListinoArticolo.ultimo_costo), float(margine)) elif self.cambia_prezzo_ingrosso_radiobutton.get_active(): daoListinoArticolo.prezzo_ingrosso = float(self.prezzo_ingrosso_entry.get_text()) daoListinoArticolo.persist() self.refresh()