Beispiel #1
0
 def delete(self):
     # se l'articolo e' presente tra le righe di un movimento o documento
     # si esegue la cancellazione logica
     from promogest.dao.ListinoArticolo import ListinoArticolo
     from promogest.dao.Inventario import Inventario
     from Riga import Riga
     res = Riga().select(id_articolo=self.id)
     inv = Inventario().select(idArticolo=self.id)
     sc = None
     if posso("VD"):
         from promogest.modules.VenditaDettaglio.dao.RigaScontrino \
                                                 import RigaScontrino
         sc = RigaScontrino().select(idArticolo=self.id)
     if res or inv:
         daoArticolo = Articolo().getRecord(id=self.id)
         daoArticolo.cancellato = True
         session.add(daoArticolo)
     elif sc:
         daoArticolo = Articolo().getRecord(id=self.id)
         daoArticolo.cancellato = True
         session.add(daoArticolo)
     else:
         if posso("PW") or modulo_sublima_pw:
             atc = ArticoloTagliaColore().getRecord(id=self.id)
             if atc:
                 atc.delete()
         if posso('ADR'):
             if self.APADR:
                 session.delete(self.APADR)
         session.delete(self)
     la = ListinoArticolo().select(idArticolo=self.id)
     if la:
         for l in la:
             l.delete()
     if posso("GN"):
         from promogest.modules.GestioneNoleggio.dao.\
                 ArticoloGestioneNoleggio import ArticoloGestioneNoleggio
         artGN = ArticoloGestioneNoleggio().select(idArticolo=self.id)
         if artGN:
             session.delete(artGN[0])
     session.commit()
     try:
         pg2log.info("DELETE ARTICOLO")
     except:
         pass
Beispiel #2
0
    def persist(self):
        session.add(self)
        self.commit()
        #salvataggio , immagine ....per il momento viene gestita
        #una immagine per articolo ...
        #in seguito sarà l'immagine a comandare non l'articolo
        try:
            if self._url_immagine \
                        and Immagine().getRecord(id=self.id_immagine):
                img = Immagine().getRecord(id=self.id_immagine)
                img.filename = self._url_immagine
                img.id_famiglia = self.id_famiglia_articolo
                self.id_immagine = self.id
                session.add(img)
                self.commit()
                session.add(self)
                self.save_update()
            elif self._url_immagine:
                img = Immagine()
                img.id = self.id
                img.filename = self._url_immagine
                img.id_famiglia = self.id_famiglia_articolo
                self.id_immagine = self.id
                session.add(img)
                self.saveToAppLog(img)
                session.add(self)
                self.saveToAppLog(self)
            elif not self._url_immagine and Immagine().getRecord(id=self.id_immagine):
                img = Immagine().getRecord(id=self.id_immagine)
                self.id_immagine = None
                img.delete()
        except:
            pass
        if posso("GN"):
            if self.divisore_noleggio_value_set and self.id:
                div_nol = ArticoloGestioneNoleggio().getRecord(id=self.id)
                if div_nol:
                        div_nol.divisore_noleggio_value = self.divisore_noleggio_value_set
                        session.add(div_nol)
                else:
                    div_nol = ArticoloGestioneNoleggio()
                    div_nol.id_articolo = self.id
                    div_nol.divisore_noleggio_value = self.divisore_noleggio_value_set
                    session.add(div_nol)

        if posso("PW"):
            try:
                if self.__articoloTagliaColore:
                    isTc = ArticoloTagliaColore().getRecord(id=self.id)
                    if isTc:
                        isTc.delete()
                    self.__articoloTagliaColore.id_articolo = self.id
                    session.add(self.__articoloTagliaColore)
                    self.commit()
                    if self.isArticoloPadre():
                        for var in self.getArticoliTagliaColore():
                            var.id_genere = self.__articoloTagliaColore.id_genere
                            var.id_anno = self.__articoloTagliaColore.id_anno
                            var.id_stagione = self.__articoloTagliaColore.id_stagione
                            var.id_modello = self.__articoloTagliaColore.id_modello
                            session.add(var)
                        #self.saveToAppLog(var)
            except:
                print "ARTICOLO NORMALE SENZA TAGLIE O COLORI"

        if posso("ADR"):
            if self.articolo_adr_dao and self.id:
                self.articolo_adr_dao.id_articolo = self.id
                self.APADR = self.articolo_adr_dao
        if posso("CSA"):
            if hasattr(self, "articolo_csa_dao") and self.articolo_csa_dao and self.id:
                self.articolo_csa_dao.id_articolo = self.id
                self.APCSA = self.articolo_csa_dao
        session.commit()
    def saveDao(self, tipo=None):
        """ Salvataggio del dao con un po' di logica legata alle diverse
            tipologie di articolo :noleggio, su misura, promowear
        """
        if self.codice_entry.get_text() == '':
            obligatoryField(self.dialogTopLevel,
                            self.codice_entry,
                            campo="Codice")
        if self.denominazione_entry.get_text() == '':
            obligatoryField(self.dialogTopLevel,
                            self.denominazione_entry,
                            campo="Denominazione")
        if findIdFromCombobox(self.id_aliquota_iva_customcombobox.combobox) is None:
            obligatoryField(self.dialogTopLevel,
                            self.id_aliquota_iva_customcombobox.combobox,
                            campo="Aliquota Iva")
        if findIdFromCombobox(self.id_famiglia_articolo_customcombobox.combobox) is None:
            obligatoryField(self.dialogTopLevel,
                            self.id_famiglia_articolo_customcombobox.combobox,
                            campo="Famiglia merceologica")
        if findIdFromCombobox(self.id_categoria_articolo_customcombobox.combobox) is None:
            obligatoryField(self.dialogTopLevel,
                            self.id_categoria_articolo_customcombobox.combobox,
                            campo="Categoria articolo")
        if findIdFromCombobox(self.id_unita_base_combobox) is None:
            obligatoryField(self.dialogTopLevel,
                            self.id_unita_base_combobox,
                            campo="Unita' base")
        pbar(self.dialog.pbar,parziale=1, totale=4)
        if posso("PW") and (articleType(self.dao) == "plus" or self.plus_radiobutton.get_active()):
            articoloTagliaColore = ArticoloTagliaColore()
            articoloTagliaColore.id_gruppo_taglia = findIdFromCombobox(
                self.id_gruppo_taglia_customcombobox.combobox)
            articoloTagliaColore.id_taglia = findIdFromCombobox(
                self.id_taglia_customcombobox.combobox)
            articoloTagliaColore.id_colore = findIdFromCombobox(
                self.id_colore_customcombobox.combobox)
            articoloTagliaColore.id_modello = findIdFromCombobox(
                self.id_modello_customcombobox.combobox)
            articoloTagliaColore.id_anno = findIdFromCombobox(
                self.id_anno_combobox)
            articoloTagliaColore.id_stagione = findIdFromCombobox(
                self.id_stagione_combobox)
            articoloTagliaColore.id_genere = findIdFromCombobox(
                self.id_genere_combobox)
            self.dao.articoloTagliaColore = articoloTagliaColore
            articoloTagliaColore = None
            #potrà sembrare una ripetizione ma preferisco gestirlo di fino con altri controlli
        elif posso("PW") and (articleType(self.dao) == "son" and self.con_taglie_colori_radiobutton.get_active()):
            articoloTagliaColore = ArticoloTagliaColore()
            articoloTagliaColore.id_gruppo_taglia = findIdFromCombobox(self.id_gruppo_taglia_customcombobox.combobox)
            articoloTagliaColore.id_taglia = findIdFromCombobox(self.id_taglia_customcombobox.combobox)
            articoloTagliaColore.id_colore = findIdFromCombobox(self.id_colore_customcombobox.combobox)
            articoloTagliaColore.id_modello = findIdFromCombobox(self.id_modello_customcombobox.combobox)
            articoloTagliaColore.id_anno = findIdFromCombobox(self.id_anno_combobox)
            articoloTagliaColore.id_stagione = findIdFromCombobox(self.id_stagione_combobox)
            articoloTagliaColore.id_genere = findIdFromCombobox(self.id_genere_combobox)
            articoloTagliaColore.id_articolo_padre = self.dao.id_articolo_padre
            self.dao.articoloTagliaColore = articoloTagliaColore
            articoloTagliaColore = None
        elif posso("PW") and (articleType(self.dao) == "father" or self.con_taglie_colori_radiobutton.get_active()):
            print "SALVATAGGIO ARTICOLO PADRE"
            if self.dao.denominazione != self.denominazione_entry.get_text():
                msg = """ATTENZIONE La descrizione di un articolo padre è cambiata, vuoi riportare la modifica anche ai suoi figli?"""
                if YesNoDialog(msg=msg, transient=None):
                    if self.dao.articoliVarianti:
                        for ar in self.dao.articoliVarianti:
                            ar.denominazione= self.denominazione_entry.get_text() +" "+ ar.denominazione_breve_taglia + ' ' + ar.denominazione_breve_colore
                            ar.persist()

            if self.dao.produttore != self.produttore_comboboxentry.get_child().get_text():
                msg = """ATTENZIONE Il  produttore di un articolo padre è cambiata, vuoi riportare la modifica anche ai suoi figli?"""
                if YesNoDialog(msg=msg, transient=None):
                    if self.dao.articoliVarianti:
                        for ar in self.dao.articoliVarianti:
                            ar.produttore = self.produttore_comboboxentry.get_child().get_text()
                            ar.persist()

            articoloTagliaColore = ArticoloTagliaColore()
            articoloTagliaColore.id_gruppo_taglia = findIdFromCombobox(self.id_gruppo_taglia_customcombobox.combobox)
            articoloTagliaColore.id_taglia = findIdFromCombobox(self.id_taglia_customcombobox.combobox)
            articoloTagliaColore.id_colore = findIdFromCombobox(self.id_colore_customcombobox.combobox)
            articoloTagliaColore.id_modello = findIdFromCombobox(self.id_modello_customcombobox.combobox)
            if articoloTagliaColore.id_taglia or articoloTagliaColore.id_colore:
                msg =""" ATTENZIONE: Articolo Padre Taglia e Colore NON
    può avere Colore o Taglia propri."""
                messageInfo(msg=msg)
                return
            articoloTagliaColore.id_anno = findIdFromCombobox(self.id_anno_combobox)
            articoloTagliaColore.id_stagione = findIdFromCombobox(self.id_stagione_combobox)
            articoloTagliaColore.id_genere = findIdFromCombobox(self.id_genere_combobox)
            self.dao.articoloTagliaColore = articoloTagliaColore
            articoloTagliaColore = None
        pbar(self.dialog.pbar,parziale=2, totale=4)
        self.dao.codice = str(self.codice_entry.get_text()).strip()
        self.dao.codice = omogeneousCode(section="Articoli", string=self.dao.codice )
        cod=checkCodiceDuplicato(codice=self.dao.codice,id=self.dao.id, tipo="Articolo")
        if not cod:
            raise Exception, 'Operation aborted campo obbligatorio'
        #else:
            #raise Exception, 'Operation aborted codice articolo duplicato'
        self.dao.denominazione = self.denominazione_entry.get_text()
        if posso("GN"):
            self.dao.divisore_noleggio_value_set = self.divisore_noleggio_entry.get_text().strip()
        if posso("ADR"):
            self.dao.articolo_adr_dao = self.adr_page.adrSaveDao()
        if posso("CSA"):
            self.dao.articolo_csa_dao = self.csa_page.csaSaveDao()
        self.dao.id_aliquota_iva = findIdFromCombobox(self.id_aliquota_iva_customcombobox.combobox)
        self.dao.id_famiglia_articolo = findIdFromCombobox(self.id_famiglia_articolo_customcombobox.combobox)
        self.dao.id_categoria_articolo = findIdFromCombobox(self.id_categoria_articolo_customcombobox.combobox)
        self.dao.id_unita_base = findIdFromCombobox(self.id_unita_base_combobox)
        self.dao.id_stato_articolo = findIdFromCombobox(self.id_stato_articolo_combobox)
        self.dao.id_imballaggio = findIdFromCombobox(self.id_imballaggio_customcombobox.combobox)
        self.dao.produttore = self.produttore_comboboxentry.get_child().get_text()
        self.dao.unita_dimensioni = self.unita_dimensioni_comboboxentry.get_child().get_text()
        self.dao.unita_volume = self.unita_volume_comboboxentry.get_child().get_text()
        self.dao.unita_peso = self.unita_peso_comboboxentry.get_child().get_text()
        self.dao.lunghezza = float(self.lunghezza_entry.get_text() or 0)
        self.dao.larghezza = float(self.larghezza_entry.get_text() or 0)
        self.dao.altezza = float(self.altezza_entry.get_text() or 0)
        self.dao.volume = float(self.volume_entry.get_text() or 0)
        self.dao.peso_lordo = float(self.peso_lordo_entry.get_text() or 0)
        self.dao.peso_imballaggio = float(self.peso_imballaggio_entry.get_text() or 0)
        self.dao.quantita_minima = float(self.quantita_minima_entry.get_text() or 0)
        self.dao.stampa_etichetta = self.stampa_etichetta_checkbutton.get_active()
        self.dao.codice_etichetta = self.codice_etichetta_entry.get_text()
        self.dao.descrizione_etichetta = self.descrizione_etichetta_entry.get_text()
        self.dao.stampa_listino = self.stampa_listino_checkbutton.get_active()
        self.dao.descrizione_listino = self.descrizione_listino_entry.get_text()
        textBuffer = self.note_textview.get_buffer()
        self.dao.note = textBuffer.get_text(textBuffer.get_start_iter(),
                                            textBuffer.get_end_iter(),True)
        self.dao.sospeso = self.sospeso_checkbutton.get_active()
        if self.dao.cancellato == None:
            self.dao.cancellato = False
        if self.dao.aggiornamento_listino_auto == None:
            self.dao.aggiornamento_listino_auto = False
        self.dao.url_immagine = self.url_articolo_entry.get_text()
        pbar(self.dialog.pbar,parziale=3, totale=4)
        self.dao.persist()
        pbar(self.dialog.pbar,parziale=4, totale=4)
        pbar(self.dialog.pbar,stop=True)

        if self._duplicatedDaoId is not None:
            self.duplicaListini()
Beispiel #4
0
    def addTagliaColoreData(self, tipo =None, articolo=None, articoloPadre=None):
        """
        modello, genere, colore, gruppo taglia, taglia, stagione, anno
        """
        artTC = None
        if articolo and articolo.id and tipo == "FATHER":
            artTC = ArticoloTagliaColore().select(idArticolo = articolo.id)
        elif articolo and articolo.id and articoloPadre and tipo =="SON":
            artTC = ArticoloTagliaColore().select(idArticolo = articolo.id,
                                            idArticoloPadre=articoloPadre.id)

        if artTC:
            artTC = artTC[0]
        else:
            artTC = ArticoloTagliaColore()
            if tipo =="SON":
                artTC.id_articolo_padre = articoloPadre.id
        #MODELLO
        if self.modello:
            mode = Modello().select(denominazione = self.modello)
            artTC.id_modello = mode[0].id
        elif not self.modello:
            try:
                artTC.id_modello = articoloPadre.id_modello
            except:
                print " questo csv non ha modello"
        #ANNO
        if self.anno:
            anno = AnnoAbbigliamento().select(denominazione = self.anno)
            artTC.id_anno = anno[0].id
        elif not self.anno:
            artTC.id_annno = articoloPadre.id_anno
        #GENERE
        if self.genere:
            genere = GenereAbbigliamento().select(denominazione = self.genere.capitalize())
            artTC.id_genere = genere[0].id
        elif not self.genere:
            artTC.id_genere = articoloPadre.id_genere
        #GRUPPO TAGLIA
        if self.gruppo_taglia:
            gruppo_taglia = GruppoTaglia().select(denominazione = self.gruppo_taglia)[0].id
            artTC.id_gruppo_taglia = gruppo_taglia
        elif not self.gruppo_taglia:
            artTC.id_gruppo_taglia = articoloPadre.id_gruppo_taglia
        #TAGLIA
        if self.taglia:
            taglia = Taglia().select(denominazione = self.taglia)[0].id
            artTC.id_taglia = taglia
        #COLORE
        if self.colore:
            artTC.id_colore = Colore().select(denominazione = self.colore)[0].id
        #STAGIONE
        if self.stagione:
            stagione = StagioneAbbigliamento().select(denominazione = self.stagione)
            if stagione:
                artTC.id_stagione = stagione[0].id
        elif not self.stagione:
            artTC.id_stagione = articoloPadre.id_stagione
        self.daoArticolo.articoloTagliaColore = artTC
        artTC = None
Beispiel #5
0
    def on_ok_button_clicked(self, button):
        for dat in self.datas:
            codici = None
            articoloPadre = dat[0]
            if dat[1].__module__ =="promogest.modules.PromoWear.dao.Taglia":
                daoTaglia = dat[1]
                daoColore = dat[2]
            else:
                daoColore = dat[1]
                daoTaglia = dat[2]
            codiceabarre = dat[3]
            articoloFiglio = dat[4]
            if codiceabarre:
                if articoloFiglio:
                #verifico la correttezza del codice a barre della variante già esistente
                # in precedenza
                    if codiceabarre != articoloFiglio.codice_a_barre:
                        codici = CodiceABarreArticolo().select(codiceEM=codiceabarre,
                                                                offset=None,
                                                                batchSize=None)
                else:
                    codici = CodiceABarreArticolo().select(codiceEM=codiceabarre,
                                                                offset=None,
                                                                batchSize=None)
                if codici:
                        msg = """Attenzione !
Il codice a barre  %s è gia' presente nel Database, ricontrolla!""" % codiceabarre
                        dialog = gtk.MessageDialog(self.getTopLevel(), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
                                                       GTK_DIALOG_MESSAGE_QUESTION, GTK_BUTTON_OK, msg)
                        response = dialog.run()
                        dialog.destroy()
                        return
            if articoloFiglio:
                #aggiorno articoloesistenze può essere cambiato solo il codice a barre
                if codiceabarre and codiceabarre != articoloFiglio.codice_a_barre:
                    codici = CodiceABarreArticolo().select(codiceEM=codiceabarre,
                                                                    offset=None,
                                                                    batchSize=None)
                    if not codici:
                        cba = CodiceABarreArticolo()
                        cba.codice = codiceabarre
                        cba.id_articolo = articoloFiglio.id
                        cba.primario = True
                        cba.persist()
            else:
                #inserisco la nuova variazione articolo ed il relativo codice a barre
                articolo = Articolo()
                articolo.codice = articoloPadre.codice + articoloPadre.denominazione_gruppo_taglia[0:3] + daoTaglia.denominazione_breve + daoColore.denominazione_breve
                articolo.denominazione = articoloPadre.denominazione + ' ' + daoTaglia.denominazione_breve + ' ' + daoColore.denominazione
                articolo.id_aliquota_iva = articoloPadre.id_aliquota_iva
                articolo.id_famiglia_articolo = articoloPadre.id_famiglia_articolo
                articolo.id_categoria_articolo = articoloPadre.id_categoria_articolo
                articolo.id_unita_base = articoloPadre.id_unita_base
                articolo.id_stato_articolo = articoloPadre.id_stato_articolo
                articolo.id_imballaggio = articoloPadre.id_imballaggio
                articolo.produttore = articoloPadre.produttore
                articolo.unita_dimensioni = articoloPadre.unita_dimensioni
                articolo.unita_volume = articoloPadre.unita_volume
                articolo.unita_peso = articoloPadre.unita_peso
                articolo.lunghezza = articoloPadre.lunghezza
                articolo.larghezza = articoloPadre.larghezza
                articolo.altezza = articoloPadre.altezza
                articolo.volume = articoloPadre.volume
                articolo.peso_lordo = articoloPadre.peso_lordo
                articolo.peso_imballaggio = articoloPadre.peso_imballaggio
                articolo.stampa_etichetta = articoloPadre.stampa_etichetta
                articolo.codice_etichetta = articoloPadre.codice_etichetta
                articolo.descrizione_etichetta = articoloPadre.descrizione_etichetta
                articolo.stampa_listino = articoloPadre.stampa_listino
                articolo.descrizione_listino = articoloPadre.descrizione_listino
                articolo.note = articoloPadre.note
                articolo.sospeso = articoloPadre.sospeso
                articolo.cancellato = articoloPadre.cancellato
                articolo.aggiornamento_listino_auto = articoloPadre.aggiornamento_listino_auto
                articolo.persist()

                articoloTagliaColore = ArticoloTagliaColore()
                articoloTagliaColore.id_articolo = articolo.id
                articoloTagliaColore.id_articolo_padre = articoloPadre.id
                articoloTagliaColore.id_gruppo_taglia = articoloPadre.id_gruppo_taglia
                articoloTagliaColore.id_taglia = daoTaglia.id
                articoloTagliaColore.id_colore = daoColore.id
                if articoloPadre.id_anno == "":
                    articoloTagliaColore.id_anno = None
                else:
                    articoloTagliaColore.id_anno = articoloPadre.id_anno
                if articoloPadre.id_stagione == "":
                    articoloTagliaColore.id_stagione = None
                else:
                    articoloTagliaColore.id_stagione = articoloPadre.id_stagione
                if articoloPadre.id_genere == "":
                    articoloTagliaColore.id_genere = None
                else:
                    articoloTagliaColore.id_genere = articoloPadre.id_genere
                articoloTagliaColore.persist()
                if codiceabarre:
                    codici = CodiceABarreArticolo().select(codiceEM=codiceabarre,
                                                                    offset=None,
                                                                    batchSize=None)
                    if not codici:
                        cba = CodiceABarreArticolo()
                        cba.codice = codiceabarre
                        cba.id_articolo = articolo.id
                        cba.primario = True
                        cba.persist()
        self.destroy()