示例#1
0
    def duplicaListini(self):
        """ Duplica i listini relativi ad un articolo scelto su un nuovo articolo """
        if self._duplicatedDaoId is None:
            return

        from promogest.dao.ListinoArticolo import ListinoArticolo
        listini = ListinoArticolo().select(idArticolo = self._duplicatedDaoId)
        for listino in listini:
            daoLA = ListinoArticolo()
            daoLA.id_listino = listino.id_listino
            daoLA.id_articolo = self.dao.id
            daoLA.prezzo_dettaglio = listino.prezzo_dettaglio
            daoLA.prezzo_ingrosso = listino.prezzo_ingrosso
            daoLA.ultimo_costo = listino.ultimo_costo
            daoLA.data_listino_articolo = listino.data_listino_articolo
            sconti_ingrosso = []
            sconti_dettaglio = []
            if listino.sconto_vendita_dettaglio:
                daoLA.applicazione_sconti = "scalare"
                for s in listino.sconto_vendita_dettaglio:
                    daoScontod = ScontoVenditaDettaglio()
                    daoScontod.valore = s.valore
                    daoScontod.tipo_sconto = s.tipo_sconto
                    sconti_dettaglio.append(daoScontod)
            if listino.sconto_vendita_dettaglio:

                daoLA.applicazione_sconti = "scalare"
                for s in listino.sconto_vendita_ingrosso:
                    daoScontoi = ScontoVenditaIngrosso()
                    daoScontoi.valore = s.valore
                    daoScontoi.tipo_sconto = s.tipo_sconto
                    sconti_ingrosso.append(daoScontoi)
            daoLA.persist(sconti={"dettaglio":sconti_dettaglio,"ingrosso":sconti_ingrosso})

        self._duplicatedDaoId = None
    def on_ok_ml_button_clicked(self, button):
        daos = self._filterClosure(None, None)
        valore = Decimal(self.valore_ml_entry.get_text() or 0)
        #if not valore:
            #return
        if self.aggiungi_ml_radio.get_active():
            segno = "+"
        else:
            segno = "-"
        if self.valore_ml_radio.get_active():
            tipo_sconto = "valore"
        else:
            tipo_sconto = "percentuale"

        if self.aggiungi_sconto_dettaglio:
            for d in daos:
                sconti_ingrosso = []
                sconti_dettaglio = []
                if valore > 0:
                    g = ScontoVenditaDettaglio()
                    g.valore = valore
                    g.tipo_sconto = tipo_sconto
                    sconti_dettaglio.append(g)
                if d.sconto_vendita_ingrosso:
                    h = ScontoVenditaIngrosso()
                    h.valore = d.sconto_vendita_ingrosso[0].valore
                    h.tipo_sconto = d.sconto_vendita_ingrosso[0].tipo_sconto
                    sconti_ingrosso.append(h)
                d.persist(sconti={"dettaglio":sconti_dettaglio,"ingrosso":sconti_ingrosso})

        elif self.aggiungi_sconto_ingrosso:
            for d in daos:
                sconti_ingrosso = []
                sconti_dettaglio = []
                if valore > 0:
                    g = ScontoVenditaIngrosso()
                    g.valore = valore
                    g.tipo_sconto = tipo_sconto
                    sconti_ingrosso.append(g)
                if d.sconto_vendita_dettaglio:
                    h = ScontoVenditaDettaglio()
                    h.valore = d.sconto_vendita_dettaglio[0].valore
                    h.tipo_sconto = d.sconto_vendita_dettaglio[0].tipo_sconto
                    sconti_ingrosso.append(h)
                d.persist(sconti={"dettaglio":sconti_dettaglio,"ingrosso":sconti_ingrosso})

        elif self.variazione_dettaglio:
            if not valore:
                return
            for d in daos:
                if d.prezzo_dettaglio is None:
                    d.prezzo_dettaglio = Decimal(0)
                if segno == "+" and tipo_sconto == "valore":
                    d.prezzo_dettaglio = d.prezzo_dettaglio + valore
                elif segno == "-" and tipo_sconto == "valore":
                    d.prezzo_dettaglio = d.prezzo_dettaglio - valore
                elif segno == "+" and tipo_sconto == "percentuale":
                    d.prezzo_dettaglio = d.prezzo_dettaglio * (1 + valore / 100)
                elif segno == "-" and tipo_sconto == "percentuale":
                    d.prezzo_dettaglio = d.prezzo_dettaglio * ( 1 - valore / 100)
                Environment.session.add(d)
        elif self.variazione_ingrosso:
            if not valore:
                return
            for d in daos:
                if d.prezzo_ingrosso is None:
                    d.prezzo_ingrosso = Decimal(0)
                if segno == "+" and tipo_sconto == "valore":
                    d.prezzo_ingrosso = d.prezzo_ingrosso + valore
                elif segno == "-" and tipo_sconto == "valore":
                    d.prezzo_ingrosso = d.prezzo_ingrosso - valore
                elif segno == "+" and tipo_sconto == "percentuale":
                    d.prezzo_ingrosso = d.prezzo_ingrosso * (1 + valore / 100)
                elif segno == "-" and tipo_sconto == "percentuale":
                    d.prezzo_ingrosso = d.prezzo_ingrosso * (1 - valore / 100)
                Environment.session.add(d)

        Environment.session.commit()
        messageInfo(msg="Operazione effettuata")
        self.modifiche_listino.hide()
        self.refresh()
    def saveDao(self, tipo=None):
        """        """
        creaentryvarianti = False
        articolo = None
        if findIdFromCombobox(self.id_listino_customcombobox.combobox) is None:
            obligatoryField(self.dialogTopLevel, self.id_listino_customcombobox.combobox)

        if self.id_articolo_customcombobox.getId() is None:
            obligatoryField(self.dialogTopLevel, self.id_articolo_customcombobox)

        listin = findIdFromCombobox(self.id_listino_customcombobox.combobox)

        self.dao.id_listino = listin
        self.dao.id_articolo = self.id_articolo_customcombobox.getId()

        if posso("PW"):
            articolo = Articolo().getRecord(id=self.dao.id_articolo)
            if articleType(articolo) == "father":
                msg = 'Attenzione! Si sta aggiungengo un Articolo Padre, creare le voci listino anche delle varianti?'
                if YesNoDialog(msg=msg, transient=self.dialogTopLevel):
                    Environment.pg2log.info("CREO LE ENTRY DELLE VARIANTI DI LISTINO PERCHE' SI STA INSERENDO UN PADRE")
                    for art in articolo.articoliVarianti:
                        daoVariante = ListinoArticolo().select(idListino=listin,
                                                        idArticolo=art.id)
                        if daoVariante:
                            #daoVariante[0].delete()
                            daoVariante =daoVariante[0]
                        else:
                            daoVariante = ListinoArticolo()
                        if Environment.listinoFissato and self._anagrafica._idListino:
                            Environment.listinoFissato = None
                        daoVariante.id_articolo = art.id

                        daoVariante.id_listino = findIdFromCombobox(self.id_listino_customcombobox.combobox)
                        daoVariante.listino_attuale = True
                        daoVariante.ultimo_costo = float(self.ultimo_costo_entry.get_text())
                        daoVariante.prezzo_dettaglio = float(self.prezzo_dettaglio_entry.get_text())
                        daoVariante.prezzo_ingrosso = float(self.prezzo_ingrosso_entry.get_text())
                        daoVariante.data_listino_articolo = datetime.datetime.today()


                        sconti_dettaglio = []
                        daoVariante.applicazione_sconti = "scalare"
                        for s in self.sconti_dettaglio_widget.getSconti():
                            daoSconto = ScontoVenditaDettaglio()
                            daoSconto.valore = s["valore"]
                            daoSconto.tipo_sconto = s["tipo"]
                            sconti_dettaglio.append(daoSconto)

                        sconti_ingrosso = []
                        daoVariante.applicazione_sconti = "scalare"
                        for s in self.sconti_ingrosso_widget.getSconti():
                            daoSconto = ScontoVenditaIngrosso()
                            daoSconto.valore = s["valore"]
                            daoSconto.tipo_sconto = s["tipo"]
                            sconti_ingrosso.append(daoSconto)
                        daoVariante.persist(sconti={"dettaglio":sconti_dettaglio,"ingrosso":sconti_ingrosso})
                            #self.articolo_padre = articolo
                            #creaentryvarianti = True

        self.dao.listino_attuale = True
        self.dao.ultimo_costo = float(self.ultimo_costo_entry.get_text())
        self.dao.prezzo_dettaglio = float(self.prezzo_dettaglio_entry.get_text())
        self.dao.prezzo_ingrosso = float(self.prezzo_ingrosso_entry.get_text())
        self.dao.data_listino_articolo = datetime.datetime.today()

        sconti_dettaglio = []
        self.dao.applicazione_sconti = "scalare"
        for s in self.sconti_dettaglio_widget.getSconti():
            daoSconto = ScontoVenditaDettaglio()
            daoSconto.valore = s["valore"]
            daoSconto.tipo_sconto = s["tipo"]
            sconti_dettaglio.append(daoSconto)

        sconti_ingrosso = []
        self.dao.applicazione_sconti = "scalare"
        for s in self.sconti_ingrosso_widget.getSconti():
            daoSconto = ScontoVenditaIngrosso()
            daoSconto.valore = s["valore"]
            daoSconto.tipo_sconto = s["tipo"]
            sconti_ingrosso.append(daoSconto)
        #TODO :riportarlo alle property , risulta molto più pulito
        self.dao.persist(sconti={"dettaglio":sconti_dettaglio,"ingrosso":sconti_ingrosso})