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
示例#2
0
    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})
示例#6
0
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()
示例#8
0
    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()