示例#1
0
    def saveDao(self, tipo=None):
        if self.id_articolo_customcombobox.getId() is None:
            obligatoryField(self.dialogTopLevel, self.id_articolo_customcombobox)

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

        if (self.prezzo_lordo_entry.get_text() == ''):
            obligatoryField(self.dialogTopLevel, self.prezzo_lordo_entry)

        if (self.prezzo_netto_label.get_text() == ''):
            obligatoryField(self.dialogTopLevel, self.prezzo_netto_label)

        self.dao.id_articolo = self.id_articolo_customcombobox.getId()
        self.dao.id_fornitore = self.id_fornitore_customcombobox.getId()
        self.dao.data_prezzo = stringToDate(self.data_prezzo_entry.get_text())
        self.dao.data_fornitura = stringToDate(self.data_fornitura_entry.get_text())
        self.dao.codice_articolo_fornitore = self.codice_articolo_fornitore_entry.get_text()
        #self.dao.id_multiplo = findIdFromCombobox(self.id_multiplo_customcombobox.combobox)
        self.dao.prezzo_lordo = float(self.prezzo_lordo_entry.get_text())
        self.dao.prezzo_netto = float(self.prezzo_netto_label.get_text())
        self.dao.scorta_minima = int(self.scorta_minima_entry.get_text() or 1)
        self.dao.tempo_arrivo_merce = int(self.tempo_arrivo_merce_entry.get_text() or 1)
        self.dao.fornitore_preferenziale = self.fornitore_preferenziale_checkbutton.get_active()
        self.dao.percentuale_iva = float(self._percentualeIva)
        self.dao.numero_lotto = self.lotto_entry.get_text()

        sconti = []
        self.dao.applicazione_sconti = self.sconti_widget.getApplicazione()
        for s in self.sconti_widget.getSconti():
            daoSconto = ScontoFornitura()
            daoSconto.id_fornitura = self.dao.id
            daoSconto.valore = s["valore"]
            daoSconto.tipo_sconto = s["tipo"]
            sconti.append(daoSconto)
        self.dao.sconti = sconti
        self.dao.persist()
    def persist(self, cancellaRighe=True):
        """cancellazione righe associate alla testata
            conn.execStoredProcedure('RigheMovimentoDel',(self.id, ))"""
        if not self.numero:
            valori = numeroRegistroGet(tipo="Movimento", date=self.data_movimento)
            self.numero = valori[0]
            self.registro_numerazione= valori[1]
        params["session"].add(self)


        sm = posso("SM")
        if self.righeMovimento:
            if cancellaRighe:
                self.righeMovimentoDel(sm=sm)
            if self.operazione == "Carico da composizione kit":
                #print "DEVO AGGIUNGERE IN NEGATIVO LE RIGHE KIT"
                righeMov = []
                for riga in self.righeMovimento:
                    arto = Articolo().getRecord(id=riga.id_articolo)
                    #print "KIT", arto.articoli_kit
                    for art in arto.articoli_kit():
                        #print art.id_articolo_filler, art.quantita
                        a = leggiArticolo(art.id_articolo_filler)
                        r = RigaMovimento()
                        r.valore_unitario_netto = 0
                        r.valore_unitario_lordo = 0
                        r.quantita = -1*(art.quantita*riga.quantita)
                        r.moltiplicatore = 1
                        r.applicazione_sconti = riga.applicazione_sconti
                        r.sconti = []
                        r.percentuale_iva = a["percentualeAliquotaIva"]
                        r.descrizione  = a["denominazione"]
                        r.id_articolo = art.id_articolo_filler
                        r.id_magazzino = riga.id_magazzino
                        r.id_multiplo = riga.id_multiplo
                        r.id_listino = riga.id_listino
                        r.id_iva = a["idAliquotaIva"]
                        r.id_riga_padre = riga.id_riga_padre
                        r.scontiRigheMovimento = riga.scontiRigheMovimento
                        righeMov.append(r)
                self.righeMovimento = self.righeMovimento+righeMov
            if self.operazione == "Scarico Scomposizione kit":
                #print "DEVO AGGIUNGERE IN NEGATIVO LE RIGHE KIT"
                righeMov = []
                for riga in self.righeMovimento:
                    arto = Articolo().getRecord(id=riga.id_articolo)
                    #print "KIT", arto.articoli_kit
                    for art in arto.articoli_kit():
                        print art.id_articolo_filler, art.quantita
                        a = leggiArticolo(art.id_articolo_filler)
                        r = RigaMovimento()
                        r.valore_unitario_netto = 0
                        r.valore_unitario_lordo = 0
                        r.quantita = art.quantita*riga.quantita
                        r.moltiplicatore = 1
                        r.applicazione_sconti = riga.applicazione_sconti
                        r.sconti = []
                        r.percentuale_iva = a["percentualeAliquotaIva"]
                        r.descrizione  = a["denominazione"] +" $SSK$"
                        r.id_articolo = art.id_articolo_filler
                        r.id_magazzino = riga.id_magazzino
                        r.id_multiplo = riga.id_multiplo
                        r.id_listino = riga.id_listino
                        r.id_iva = a["idAliquotaIva"]
                        r.id_riga_padre = riga.id_riga_padre
                        r.scontiRigheMovimento = riga.scontiRigheMovimento
                        righeMov.append(r)
                    riga.quantita = -1*riga.quantita
                self.righeMovimento = self.righeMovimento+righeMov
            if self.operazione == "Trasferimento merce magazzino" and self.id_to_magazzino:
                righeMov = []
                for riga in self.righeMovimento:
                    r = RigaMovimento()
                    r.valore_unitario_netto = riga.valore_unitario_netto
                    r.valore_unitario_lordo = riga.valore_unitario_lordo
                    r.quantita = riga.quantita
                    r.moltiplicatore = riga.moltiplicatore
                    r.applicazione_sconti = riga.applicazione_sconti
                    r.sconti = riga.sconti
                    r.percentuale_iva = riga.percentuale_iva
                    r.descrizione  = riga.descrizione
                    r.id_articolo = riga.id_articolo
                    r.id_magazzino = self.id_to_magazzino
                    r.id_multiplo = riga.id_multiplo
                    r.id_listino = riga.id_listino
                    r.id_iva = riga.id_iva
                    r.id_riga_padre = riga.id_riga_padre
                    r.scontiRigheMovimento = riga.scontiRigheMovimento
                    righeMov.append(r)
                    riga.quantita = -1*riga.quantita
                self.righeMovimento = self.righeMovimento+righeMov
            #sm = posso("SM")
            lt = setconf("Documenti", "lotto_temp")
            gl = setconf("General", "gestione_lotti")
            for riga in self.righeMovimento:
                if "RigaDocumento" in str(riga.__module__):
                    riga.id_testata_documento = self.id_testata_documento
                    riga.persist(sm=sm)
                else:
                    #se non ho un id salvo il dao e me ne faccio dare uno
                    if not self.id:
                        params["session"].commit()
                    riga.id_testata_movimento = self.id
                    # vado a salvare le righe movimento
                    riga.persist(sm=sm)
                    datta = self.data_movimento
                    if hasattr(riga,"data_prezzo") and riga.data_prezzo is not None:
                        datta = stringToDateTime(riga.data_prezzo)
                    if self.id_fornitore and riga.id_articolo:
                        fors = Fornitura().select(idArticolo=riga.id_articolo,
                                                    idFornitore=self.id_fornitore,
                                                    dataPrezzo =  datta,
                                                    orderBy = 'data_fornitura DESC',
                                                    batchSize = None)
                        if fors:
                            daoFornitura = fors[0]
                        else:
                            daoFornitura = Fornitura()

                        if hasattr(riga,"data_prezzo") and riga.data_prezzo is not None and riga.data_prezzo != "":
                            daoFornitura.data_prezzo = stringToDateTime(riga.data_prezzo)
                        if hasattr(riga, "ordine_minimo") and riga.ordine_minimo is not None and riga.ordine_minimo != "":
                            daoFornitura.scorta_minima = int(riga.ordine_minimo)
                        if hasattr(riga, "tempo_arrivo") and riga.tempo_arrivo is not None and riga.tempo_arrivo != "":
                            daoFornitura.tempo_arrivo_merce = int(riga.tempo_arrivo)
                        if hasattr(riga,"numero_lotto"):
                            daoFornitura.numero_lotto = riga.numero_lotto or ""
                        if hasattr(riga, "data_scadenza"):
                            daoFornitura.data_scadenza = stringToDate(riga.data_scadenza) or None
                        if hasattr(riga, "data_produzione"):
                            daoFornitura.data_produzione = stringToDate(riga.data_produzione) or None

                        daoFornitura.data_fornitura = self.data_movimento
                        daoFornitura.fornitore_preferenziale = True
                        daoFornitura.id_fornitore = self.id_fornitore
                        daoFornitura.id_articolo = riga.id_articolo
                        if not daoFornitura.data_prezzo:
                            daoFornitura.data_prezzo = self.data_movimento
                        if "_RigaMovimento__codiceArticoloFornitore" in riga.__dict__:
                            daoFornitura.codice_articolo_fornitore = riga.__dict__["_RigaMovimento__codiceArticoloFornitore"]
                        daoFornitura.prezzo_lordo = riga.valore_unitario_lordo
                        daoFornitura.prezzo_netto = riga.valore_unitario_netto
                        daoFornitura.percentuale_iva = riga.percentuale_iva
                        daoFornitura.applicazione_sconti = riga.applicazione_sconti
                        sconti = []
                        for s in riga.sconti:
                            daoSconto = ScontoFornitura()
                            daoSconto.id_fornitura = daoFornitura.id
                            daoSconto.valore = s.valore
                            daoSconto.tipo_sconto = s.tipo_sconto
                            sconti.append(daoSconto)

                        daoFornitura.sconti = sconti
                        try:
                            params["session"].add(daoFornitura)
                            params["session"].commit()
                        except:
                            params["session"].rollback()

                        if gl:
                            #cambiata la logica, adesso le righe su rmf sono sempre e solo una
                            #viene gestita invece un'altra tabella di raccordo per le quantità
                            a = RigaMovimentoFornitura()
                            a.id_articolo = riga.id_articolo
                            a.id_riga_movimento_acquisto = riga.id
                            a.id_fornitura = daoFornitura.id
                            params["session"].add(a)
                            #params["session"].commit()

                    elif gl:
                        if hasattr(riga,"righe_movimento_fornitura"):
                            for g in riga.righe_movimento_fornitura:
                                a = RigaMovimentoFornitura()
                                a.id_articolo = riga.id_articolo
                                a.id_riga_movimento_vendita = riga.id
                                a.id_fornitura = g
                                params["session"].add(a)
                            #params["session"].commit()

                        if lt and hasattr(riga,"lotto_temp") and riga.lotto_temp:
                            # Salvare il lotto temporaneo
                            n = NumeroLottoTemp()
                            n.id_riga_movimento_vendita_temp = riga.id
                            n.lotto_temp = riga.lotto_temp
                            params["session"].add(n)
            params["session"].commit()
        self.init_on_load()
示例#3
0
            else:
                daoFornitura = Fornitura()
                v = "nuova"

                daoFornitura.id_fornitore = t.id_fornitore
                daoFornitura.id_articolo = riga.id_articolo
                daoFornitura.data_fornitura = t.data_movimento
                if "_RigaMovimento__codiceArticoloFornitore" in riga.__dict__:
                    daoFornitura.codice_articolo_fornitore = riga.__dict__["_RigaMovimento__codiceArticoloFornitore"]
                daoFornitura.prezzo_lordo = riga.valore_unitario_lordo
                daoFornitura.prezzo_netto = riga.valore_unitario_netto
                daoFornitura.percentuale_iva = riga.percentuale_iva
                daoFornitura.applicazione_sconti = riga.applicazione_sconti
                sconti = []
                for s in riga.sconti:
                    daoSconto = ScontoFornitura()
                    daoSconto.id_fornitura = daoFornitura.id
                    daoSconto.valore = s.valore
                    daoSconto.tipo_sconto = s.tipo_sconto
                    sconti.append(daoSconto)

                daoFornitura.sconti = sconti
                print "FORNITURA", daoFornitura, v

                params["session"].add(daoFornitura)
                params["session"].commit()

            rmf = RigaMovimentoFornitura().select(
                idArticolo=riga.id_articolo,
                idRigaMovimentoAcquisto=riga.id,
                idFornitura=daoFornitura.id,