예제 #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 sconti_vendita_ingrosso_table(soup=None, op=None, dao=None, row=None, all=False):
    d = None
    if soup and not all:
        record = soup.sconti_vendita_ingrosso.get(loads(row.object))
    else:
        record = row
    if op == "DELETE":
        if all:
            d = ScontoVenditaIngrosso().getRecord(id=row.id)
        else:
            d = ScontoVenditaIngrosso().getRecord(id=loads(row.object))
        if d:
            d.delete()
        return True
    elif op == "INSERT":
        if all:
            d = ScontoVenditaIngrosso()
            d.id = record.id
        else:
            d = ScontoVenditaIngrosso().getRecord(id=loads(row.object))
    elif op == "UPDATE":
        if all:
            d = ScontoVenditaIngrosso().getRecord(id=row.id)
        else:
            d = ScontoVenditaIngrosso().getRecord(id=loads(row.object))
        if not d:
            d = ScontoVenditaIngrosso()
            d.id = record.id
    d.id_listino = record.id_listino
    d.id_articolo = record.id_articolo
    d.data_listino_articolo = record.data_listino_articolo

    d.persist()
    return True