Changeset 865

Show
Ignore:
Timestamp:
03/09/10 12:53:27 (5 months ago)
Author:
francesco
Message:

aggiunte funzionalità all'inventario

Location:
trunk/core/promogest
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/core/promogest/Environment.py

    r843 r865  
    374374 
    375375 
     376 
    376377class SetTextFactory(PoolListener): 
    377378     def connect(self, dbapi_con, con_record): 
     
    395396                    encoding='utf-8', 
    396397                    convert_unicode=True ) 
     398 
     399if hasattr(conf,'Database2'): 
     400    print "HO LA CONFIGURAZIONE PER IL SECONDO DATABASE" 
     401#    try: 
     402    database2 = conf.Database2.database2 
     403    port2 = conf.Database2.port2 
     404    user2 = conf.Database2.user2 
     405    password2 = conf.Database2.password2 
     406    host2 = conf.Database2.host2 
     407    engine2 = create_engine('postgres:'+'//' 
     408                    +user2+':' 
     409                    + password2+ '@' 
     410                    + host2 + ':' 
     411                    + port2 + '/' 
     412                    + database2, 
     413                    encoding='utf-8', 
     414                    convert_unicode=True ) 
     415    engine2.echo = False 
     416    Session2 = scoped_session(sessionmaker(bind=engine, autoflush=True)) 
     417    session2 = Session2() 
     418    meta2 = MetaData(engine2) 
     419    print "IL SECONDO DB E' A POSTO" 
     420#    except: 
     421#        print "MESSO IN UN TRY IL SECONDO DB" 
     422 
    397423tipo_eng = engine.name 
    398424engine.echo = False 
    399425meta = MetaData(engine) 
    400     #Session = sessionmaker(bind=engine) 
     426#Session = sessionmaker(bind=engine) 
    401427Session = scoped_session(sessionmaker(bind=engine, autoflush=True)) 
    402428 
  • trunk/core/promogest/dao/Inventario.py

    r860 r865  
    8080            dic = {k:inventario.c.anno == v} 
    8181        elif k == 'daDataAggiornamento': 
    82             dic = {k:inventario.c.data_aggiornameno >= v} 
     82            dic = {k:inventario.c.data_aggiornamento >= v} 
    8383        elif k == 'aDataAggiornamento': 
    84             dic = {k:inventario.c.data_aggiornameno >= v} 
     84            dic = {k:inventario.c.data_aggiornamento <= v} 
    8585        elif k == 'qa_zero': 
    8686            dic = {k:inventario.c.quantita == 0} 
  • trunk/core/promogest/modules/Inventario/gui/_inventario_select.glade

    r816 r865  
    227227              <object class="GtkAlignment" id="alignment1"> 
    228228                <property name="visible">True</property> 
    229                 <property name="left_padding">12</property> 
    230229                <child> 
    231230                  <object class="GtkHBox" id="hbox1"> 
     
    264263                      </packing> 
    265264                    </child> 
     265                    <child> 
     266                      <object class="GtkButton" id="azzera_selected_button"> 
     267                        <property name="label" translatable="yes">Azzera selez</property> 
     268                        <property name="visible">True</property> 
     269                        <property name="can_focus">True</property> 
     270                        <property name="can_default">True</property> 
     271                        <property name="receives_default">True</property> 
     272                        <property name="tooltip_text" translatable="yes">Azzera le voci di inventario selezionate</property> 
     273                        <signal name="clicked" handler="on_azzera_selected_button_clicked"/> 
     274                      </object> 
     275                      <packing> 
     276                        <property name="expand">False</property> 
     277                        <property name="fill">False</property> 
     278                        <property name="position">2</property> 
     279                      </packing> 
     280                    </child> 
    266281                  </object> 
    267282                </child> 
     
    289304              <object class="GtkAlignment" id="alignment2"> 
    290305                <property name="visible">True</property> 
    291                 <property name="left_padding">12</property> 
    292306                <child> 
    293307                  <object class="GtkHBox" id="hbox2"> 
     
    346360              <object class="GtkAlignment" id="alignment3"> 
    347361                <property name="visible">True</property> 
    348                 <property name="left_padding">12</property> 
    349362                <child> 
    350363                  <object class="GtkHBox" id="hbox3"> 
     
    368381                    <child> 
    369382                      <object class="GtkButton" id="esporta_button"> 
    370                         <property name="label" translatable="yes">Esporta</property> 
     383                        <property name="label" translatable="yes">Esporta tutto</property> 
    371384                        <property name="visible">True</property> 
    372385                        <property name="can_focus">True</property> 
     
    380393                        <property name="fill">False</property> 
    381394                        <property name="position">1</property> 
     395                      </packing> 
     396                    </child> 
     397                    <child> 
     398                      <object class="GtkButton" id="esporta_buoni_button"> 
     399                        <property name="label" translatable="yes">Esporta &gt;1</property> 
     400                        <property name="visible">True</property> 
     401                        <property name="can_focus">True</property> 
     402                        <property name="can_default">True</property> 
     403                        <property name="receives_default">True</property> 
     404                        <signal name="clicked" handler="on_esporta_buoni_button_clicked"/> 
     405                      </object> 
     406                      <packing> 
     407                        <property name="expand">False</property> 
     408                        <property name="fill">False</property> 
     409                        <property name="position">2</property> 
    382410                      </packing> 
    383411                    </child> 
     
    406434              <object class="GtkAlignment" id="alignment4"> 
    407435                <property name="visible">True</property> 
    408                 <property name="left_padding">12</property> 
    409436                <child> 
    410437                  <object class="GtkHBox" id="hbox4"> 
  • trunk/core/promogest/modules/Inventario/ui/GestioneInventario.py

    r863 r865  
    7676 
    7777        self._modifica.azzera_button.connect('clicked', self.on_azzera_button_clicked) 
     78        self._modifica.azzera_selected_button.connect('clicked', self.on_azzera_selected_button_clicked) 
    7879        self._modifica.ricrea_button.connect('clicked', self.on_ricrea_button_clicked) 
    7980        self._modifica.aggiorna_button.connect('clicked', self.on_aggiorna_button_clicked) 
     
    319320                                               offset=self.filter.offset, 
    320321                                               filterDict=self.filterDict) 
    321  
     322        self.inventariati_filtrati_tutti = Inventario().select(orderBy=self.filter.orderBy, 
     323                                               anno=self.annoScorso, 
     324                                               idMagazzino=self.idMagazzino, 
     325                                               daDataAggiornamento=self.daData, 
     326                                               aDataAggiornamento=self.aData, 
     327                                               qa_zero=self.qa_zero, 
     328                                               qa_negativa=self.qa_negativa, 
     329                                               val_negativo =self.val_negativo, 
     330                                               batchSize =None, 
     331                                               filterDict=self.filterDict) 
    322332        model.clear() 
    323333 
     
    397407    def on_filter_field_changed(self, widget=None, event=None): 
    398408        """ Aggiorna il testo del riepilogo perche' almeno uno dei filtri propri e' cambiato """ 
    399         self.setRiepilogo() 
     409#        self.setRiepilogo() 
     410        return 
    400411 
    401412#    def setRiepilogo(self): 
     
    479490#                treeview.scroll_to_cell(path) 
    480491#                self.on_filter_treeview_cursor_changed(treeview) 
     492 
     493    def on_azzera_selected_button_clicked(self, button): 
     494        msg = """ATTENZIONE!!! 
     495    Stai per cancellare le informazioni 
     496    relative alle voci di inventario filtrate e selezionate. 
     497        Confermi la cancellazione ? 
     498        """ 
     499        dialog = gtk.MessageDialog(self.getTopLevel(), 
     500                                gtk.DIALOG_MODAL 
     501                                | gtk.DIALOG_DESTROY_WITH_PARENT, 
     502                                gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, 
     503                                msg) 
     504 
     505        response = dialog.run() 
     506        dialog.destroy() 
     507        if response == gtk.RESPONSE_YES: 
     508            for i in  self.inventariati_filtrati_tutti: 
     509                i.quantita = 0 
     510                Environment.session.add(i) 
     511            Environment.session.commit() 
     512            self.fineElaborazione() 
     513 
     514 
     515 
     516 
    481517 
    482518    def on_azzera_button_clicked(self, button): 
  • trunk/core/promogest/modules/VenditaDettaglio/ui/GestioneScontrini.py

    r863 r865  
    328328        """ Questa funzione serve a ricalibrare le giacenze di inventario con 
    329329            gli articoli venduti al dettaglio """ 
    330  
    331         if "Inventario" in Environment.modulesList: 
    332             idMagazzinosel = Magazzino().select(denominazione = Environment.conf.VenditaDettaglio.magazzino) 
    333             if Environment.conf.VenditaDettaglio.jolly: 
    334                 idArticoloGenericoSel = Articolo().select(codiceEM = Environment.conf.VenditaDettaglio.jolly) 
    335                 if idArticoloGenericoSel: 
    336                     idArticoloGenerico = idArticoloGenericoSel[0].id 
     330        msg = """ ATTENZIONE!!!! 
     331            QUESTA OPERAZIONE È PERICOLOSSIMA!!!! 
     332            Ú stata aggiunta per corprire una casistica specifica 
     333            di "aggiornamento della tabella inventario 
     334            rispetto al venduto al dettaglio vuoi farlo??""" 
     335        dialog = gtk.MessageDialog(self.getTopLevel(), 
     336                               gtk.DIALOG_MODAL 
     337                               | gtk.DIALOG_DESTROY_WITH_PARENT, 
     338                               gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, 
     339                               msg) 
     340        response = dialog.run() 
     341        dialog.destroy() 
     342        if response ==  gtk.RESPONSE_YES: 
     343            if "Inventario" in Environment.modulesList: 
     344                idMagazzinosel = Magazzino().select(denominazione = Environment.conf.VenditaDettaglio.magazzino) 
     345                if Environment.conf.VenditaDettaglio.jolly: 
     346                    idArticoloGenericoSel = Articolo().select(codiceEM = Environment.conf.VenditaDettaglio.jolly) 
     347                    if idArticoloGenericoSel: 
     348                        idArticoloGenerico = idArticoloGenericoSel[0].id 
     349                    else: 
     350                        idArticoloGenerico = None 
     351                if idMagazzinosel: 
     352                    idMagazzino = idMagazzinosel[0].id 
    337353                else: 
    338                     idArticoloGenerico = None 
    339             if idMagazzinosel: 
    340                 idMagazzino = idMagazzinosel[0].id 
     354                    print "ERRORE NELLA DEFINIZIONE DEL MAGAZZINO" 
     355                    return 
     356                for scontrino in self.scontrini: 
     357                    for riga in scontrino.righe: 
     358    #                    print "RIGAAAAAAAAAAAAAAAA", riga.id_articolo 
     359                        daoInv = Inventario().select(idArticolo=riga.id_articolo, idMagazzino = idMagazzino) 
     360                        if daoInv and idArticoloGenerico!=riga.id_articolo: 
     361                            if daoInv[0].data_aggiornamento is None or scontrino.data_inserimento < daoInv[0].data_aggiornamento: 
     362                                quantitaprecedente = daoInv[0].quantita or 0 
     363                                quantitavenduta = riga.quantita 
     364                                nuovaquantita = quantitaprecedente+quantitavenduta 
     365                                print "OPERAZIONE DA EFFETTUARE", quantitaprecedente,quantitavenduta, nuovaquantita 
     366                                daoInv[0].quantita= nuovaquantita 
     367                                daoInv[0].persist() 
    341368            else: 
    342                 print "ERRORE NELLA DEFINIZIONE DEL MAGAZZINO" 
    343                 return 
    344             for scontrino in self.scontrini: 
    345                 for riga in scontrino.righe: 
    346 #                    print "RIGAAAAAAAAAAAAAAAA", riga.id_articolo 
    347                     daoInv = Inventario().select(idArticolo=riga.id_articolo, idMagazzino = idMagazzino) 
    348                     if daoInv and idArticoloGenerico!=riga.id_articolo: 
    349                         if daoInv[0].data_aggiornamento is None or scontrino.data_inserimento < daoInv[0].data_aggiornamento: 
    350                             quantitaprecedente = daoInv[0].quantita or 0 
    351                             quantitavenduta = riga.quantita 
    352                             nuovaquantita = quantitaprecedente+quantitavenduta 
    353                             print "OPERAZIONE DA EFFETTUARE", quantitaprecedente,quantitavenduta, nuovaquantita 
    354                             daoInv[0].quantita= nuovaquantita 
    355                             daoInv[0].persist() 
    356         else: 
    357             print "IL MODULO INVENTARIO NON e' ATTIVO " 
     369                print "IL MODULO INVENTARIO NON e' ATTIVO " 
     370 
     371    def on_sposta_scontrini_activate(self, item): 
     372        msg = """ ATTENZIONE!!!! 
     373            QUESTA OPERAZIONE È PERICOLOSSIMA!!!! 
     374            Ú stata aggiunta per corprire una casistica specifica 
     375            di "spostamento scontrini da un database ad un altro 
     376            sei sicuro di volerlo fare??""" 
     377        dialog = gtk.MessageDialog(self.getTopLevel(), 
     378                               gtk.DIALOG_MODAL 
     379                               | gtk.DIALOG_DESTROY_WITH_PARENT, 
     380                               gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, 
     381                               msg) 
     382        response = dialog.run() 
     383        dialog.destroy() 
     384        if response ==  gtk.RESPONSE_YES: 
     385            print "ok ok " 
     386            print self.scontrini 
     387            Environment.params["metadata"] = Environment.meta2 
     388            from promogest.modules.VenditaDettaglio.dao.TestataScontrino import TestataScontrino 
     389            test= Environment.session2.query(TestataScontrino.id).all() 
     390            print "TESSSST",test 
     391            Environment.params["metadata"] = Environment.meta 
     392#            dao = TestataScontrino() 
     393#            dao.data_inserimento = datetime.now() 
     394#            dao.totale_scontrino = mN(self.label_totale.get_text()) 
     395#            dao.totale_sconto = mN(self.sconto_totale_entry.get_text()) 
     396#            dao.totale_subtotale = mN(self.label_subtotale.get_text()) 
     397#            dao.tipo_sconto_scontrino = self.tipo_sconto_scontrino 
     398#            dao.id_magazzino = int(self.idMagazzino) 
     399#            if self.idPuntoCassa: 
     400#                dao.id_pos = int(self.idPuntoCassa) 
     401#            dao.id_ccardtype = findIdFromCombobox(self.card_type_combobox) 
     402#            dao.id_user = Environment.params["usernameLoggedList"][0] 
     403 
     404#            #print "TOTALI",totale_scontrino,  totale_sconto, totale_subtotale 
     405 
     406#            if dao.totale_scontrino < 0: 
     407#                msg = 'Attenzione!\n\nIl totale non puo\' essere negativo !' 
     408#                dialog = gtk.MessageDialog(self.getTopLevel(), 
     409#                                           gtk.DIALOG_MODAL 
     410#                                           | gtk.DIALOG_DESTROY_WITH_PARENT, 
     411#                                           gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, 
     412#                                           msg) 
     413#                response = dialog.run() 
     414#                dialog.destroy() 
     415#                return 
     416 
     417#            # Creo dao testata_scontrino 
     418#            scontiSuTotale = [] 
     419#            #res = self.sconti_testata_widget.getSconti() 
     420#            if dao.totale_sconto: 
     421#                daoSconto = ScontoTestataScontrino() 
     422#                daoSconto.valore = dao.totale_sconto 
     423#                daoSconto.tipo_sconto = dao.tipo_sconto_scontrino 
     424#                scontiSuTotale.append(daoSconto) 
     425#            dao.scontiSuTotale = scontiSuTotale 
     426 
     427#            #dao.totale_scontrino = totale_scontrino 
     428#            totale_contanti = 0 
     429#            totale_assegni = 0 
     430#            totale_carta_di_credito = 0 
     431 
     432#            if self.contanti_entry.get_text() != '': 
     433#                totale_contanti = mN(self.contanti_entry.get_text()) 
     434#                resto = totale_contanti - dao.totale_scontrino 
     435#                self.label_resto.set_markup('<b><span foreground="black" size="24000">' + str(resto) +'</span></b>') 
     436#            if self.non_contanti_entry.get_text() != '': 
     437#                if self.assegni_radio_button.get_active(): 
     438#                    totale_assegni = mN(self.non_contanti_entry.get_text()) 
     439#                else: 
     440#                    totale_carta_di_credito = mN(self.non_contanti_entry.get_text()) 
     441 
     442#            dao.totale_contanti = totale_contanti 
     443#            dao.totale_assegni = totale_assegni 
     444#            dao.totale_carta_credito = totale_carta_di_credito 
     445 
     446#            # Creo righe 
     447#            righe = [] 
     448#            model = self.scontrino_treeview.get_model() 
     449#            for row in model: 
     450#                idArticolo = row[0] 
     451#                descrizione = row[4] 
     452#                prezzo = mN(row[5]) 
     453#                valoreSconto = mN(row[6]) 
     454#                tipoSconto = row[7] 
     455#                prezzoScontato = mN(row[8]) 
     456#                quantita = Decimal(row[9]) 
     457 
     458#                # Nuova riga 
     459#                daoRiga = RigaScontrino() 
     460#                daoRiga.id_testata_scontrino = dao.id 
     461#                daoRiga.id_articolo = idArticolo 
     462#                daoRiga.descrizione = descrizione 
     463#                daoRiga.prezzo = prezzo 
     464#                daoRiga.prezzo_scontato = prezzoScontato 
     465#                daoRiga.quantita = quantita 
     466#                listarighesconto = [] 
     467 
     468#                if valoreSconto > 0: 
     469#                    daoScontoRigaScontrino = ScontoRigaScontrino() 
     470#                    daoScontoRigaScontrino.valore = valoreSconto 
     471#                    if tipoSconto == self._simboloPercentuale: 
     472#                        daoScontoRigaScontrino.tipo_sconto = 'percentuale' 
     473#                    else: 
     474#                        daoScontoRigaScontrino.tipo_sconto = 'valore' 
     475#                    listarighesconto.append(daoScontoRigaScontrino) 
     476#                daoRiga.sconti=listarighesconto 
     477#                righe.append(daoRiga) 
     478 
     479#            # Aggiungo righe e salvo dao 
     480#            dao.righe = righe 
     481#            dao.persist() 
     482 
    358483 
    359484    def on_distinta_button_clicked(self, button):