root/trunk/core/promogest/ui/DuplicazioneDocumento.py @ 778

Revision 778, 9.3 KB (checked in by francesco, 9 months ago)

aggiunta duplicazione in movimento della scheda lavorazione stampalux

Line 
1# -*- coding: utf-8 -*-
2# Promogest
3#
4# Copyright (C) 2005-2008 by Promotux Informatica - http://www.promotux.it/
5# Author: Andrea Argiolas <andrea@promotux.it>
6# Author: Francesco Meloni <francesco@promotux.it>
7
8import gtk
9from GladeWidget import GladeWidget
10
11from promogest import Environment
12from promogest.dao.TestataDocumento import TestataDocumento
13from promogest.dao.RigaDocumento import RigaDocumento
14from promogest.dao.ScontoRigaDocumento import ScontoRigaDocumento
15from promogest.dao.ScontoTestataDocumento import ScontoTestataDocumento
16from promogest.dao.Operazione import Operazione
17if Environment.conf.hasPagamenti == True:
18    import promogest.modules.Pagamenti.dao.TestataDocumentoScadenza
19    from promogest.modules.Pagamenti.dao.TestataDocumentoScadenza import TestataDocumentoScadenza
20from utils import *
21
22
23class DuplicazioneDocumento(GladeWidget):
24
25    def __init__(self, daoDocumento):
26
27        self.dao = daoDocumento
28
29        GladeWidget.__init__(self, 'duplicazione_documento_window',
30                                        'duplicazione_documento.glade')
31        self.placeWindow(self.getTopLevel())
32        self.draw()
33
34    def draw(self):
35        # seleziona i tipi documento compatibili
36        operazione = leggiOperazione(self.dao.operazione)
37        res = Environment.params['session']\
38                .query(Operazione)\
39                .filter(and_(or_(Operazione.tipo_operazione==None,
40                    Operazione.tipo_operazione =="documento"),
41                    (Operazione.fonte_valore == operazione["fonteValore"]),
42                    (Operazione.tipo_persona_giuridica == operazione["tipoPersonaGiuridica"])))\
43                .all()
44        model = gtk.ListStore(object, str, str)
45        for o in res:
46            model.append((o, o.denominazione, (o.denominazione or '')[0:30]))
47
48        self.id_operazione_combobox.clear()
49        renderer = gtk.CellRendererText()
50        self.id_operazione_combobox.pack_start(renderer, True)
51        self.id_operazione_combobox.add_attribute(renderer, 'text', 2)
52        self.id_operazione_combobox.set_model(model)
53
54        self.data_documento_entry.set_text(dateToString(datetime.datetime.today()))
55        self.data_documento_entry.grab_focus()
56        #self.getTopLevel().show_all()
57        #self.show_all()
58
59    def on_confirm_button_clicked(self, button=None):
60
61        if (self.data_documento_entry.get_text() == ''):
62            obligatoryField(self.getTopLevel(), self.data_documento_entry)
63
64        if (findIdFromCombobox(self.id_operazione_combobox) is None):
65            obligatoryField(self.getTopLevel(), self.id_operazione_combobox)
66
67        note = "Rif. " + self.dao.operazione + " n. " + str(self.dao.numero) + " del " + dateToString(self.dao.data_documento)
68
69        newDao = TestataDocumento()
70        newDao.data_documento = stringToDate(self.data_documento_entry.get_text())
71        newDao.operazione = findIdFromCombobox(self.id_operazione_combobox)
72        newDao.id_cliente = self.dao.id_cliente
73        newDao.id_fornitore = self.dao.id_fornitore
74        newDao.id_destinazione_merce = self.dao.id_destinazione_merce
75        newDao.id_pagamento = self.dao.id_pagamento
76        newDao.id_banca = self.dao.id_banca
77        newDao.id_aliquota_iva_esenzione = self.dao.id_aliquota_iva_esenzione
78        newDao.protocollo = self.dao.protocollo
79        newDao.causale_trasporto = self.dao.causale_trasporto
80        newDao.aspetto_esteriore_beni = self.dao.aspetto_esteriore_beni
81        newDao.inizio_trasporto = self.dao.inizio_trasporto
82        newDao.fine_trasporto = self.dao.fine_trasporto
83        newDao.id_vettore =self.dao.id_vettore
84        newDao.incaricato_trasporto = self.dao.incaricato_trasporto
85        newDao.totale_colli = self.dao.totale_colli
86        newDao.totale_peso = self.dao.totale_peso
87        newDao.note_interne = self.dao.note_interne
88        newDao.note_pie_pagina = self.dao.note_pie_pagina + " " + note
89        newDao.applicazione_sconti = self.dao.applicazione_sconti
90        newDao.ripartire_importo = self.dao.ripartire_importo
91        newDao.costo_da_ripartire = self.dao.costo_da_ripartire
92        #sconti = []
93        sco = self.dao.sconti or []
94        scontiRigaDocumento=[]
95        scontiSuTotale=[]
96        righeDocumento=[]
97        for s in sco:
98            daoSconto = ScontoTestataDocumento()
99            daoSconto.valore = s.valore
100            daoSconto.tipo_sconto = s.tipo_sconto
101            scontiSuTotale.append(daoSconto)
102        newDao.scontiSuTotale = scontiSuTotale
103        #righe = []
104        rig = self.dao.righe
105        for r in rig:
106            daoRiga = RigaDocumento()
107            daoRiga.id_testata_documento = newDao.id
108            daoRiga.id_articolo = r.id_articolo
109            daoRiga.id_magazzino = r.id_magazzino
110            daoRiga.descrizione = r.descrizione
111            daoRiga.id_listino = r.id_listino
112            daoRiga.percentuale_iva = r.percentuale_iva
113            daoRiga.applicazione_sconti = r.applicazione_sconti
114            daoRiga.quantita = r.quantita
115            daoRiga.id_multiplo = r.id_multiplo
116            daoRiga.moltiplicatore = r.moltiplicatore
117            daoRiga.valore_unitario_lordo = r.valore_unitario_lordo
118            daoRiga.valore_unitario_netto = r.valore_unitario_netto
119            #print "RIGA ARTICOLO", r.descrizione, r.id_articolo
120            if "SuMisura" in Environment.modulesList:
121                from promogest.modules.SuMisura.dao.MisuraPezzo import MisuraPezzo
122                #try:
123                daoMisuraPezzo = MisuraPezzo()
124                if r.misura_pezzo:
125                    daoMisuraPezzo.altezza = r.misura_pezzo[0].altezza
126                    daoMisuraPezzo.larghezza = r.misura_pezzo[0].larghezza
127                    daoMisuraPezzo.moltiplicatore = r.misura_pezzo[0].moltiplicatore
128                else:
129                    daoMisuraPezzo.altezza = 0
130                    daoMisuraPezzo.larghezza = 0
131                    daoMisuraPezzo.moltiplicatore = 0
132                daoRiga.misura_pezzo = [daoMisuraPezzo]
133                #except :
134                    #pass
135            sconti = []
136            scontiRigaDocumento = []
137            sco = r.sconti
138            for s in sco:
139                daoSconto = ScontoRigaDocumento()
140                daoSconto.valore = s.valore
141                daoSconto.tipo_sconto = s.tipo_sconto
142                scontiRigaDocumento.append(daoSconto)
143            daoRiga.scontiRigaDocumento = scontiRigaDocumento
144            righeDocumento.append(daoRiga)
145        newDao.righeDocumento = righeDocumento
146        scadenze = []
147        if Environment.conf.hasPagamenti == True:
148            scad = self.dao.scadenze
149            for s in scad:
150                daoTestataDocumentoScadenza = TestataDocumentoScadenza()
151                daoTestataDocumentoScadenza.id_testata_documento = newDao.id
152                daoTestataDocumentoScadenza.data = s.data
153                daoTestataDocumentoScadenza.importo = s.importo
154                daoTestataDocumentoScadenza.pagamento = s.pagamento
155                daoTestataDocumentoScadenza.data_pagamento= s.data_pagamento
156                daoTestataDocumentoScadenza.numero_scadenza = s.numero_scadenza
157                scadenze.append(daoTestataDocumentoScadenza)
158            newDao.scadenze = scadenze
159            newDao.totale_pagato = self.dao.totale_pagato
160            newDao.totale_sospeso = self.dao.totale_sospeso
161            newDao.documento_saldato = self.dao.documento_saldato
162            newDao.id_primo_riferimento = self.dao.id_primo_riferimento
163            newDao.id_secondo_riferimento = self.dao.id_secondo_riferimento
164        newDao.totale_pagato = self.dao.totale_pagato
165        newDao.totale_sospeso = self.dao.totale_sospeso
166        newDao.documento_saldato = self.dao.documento_saldato
167        newDao.id_primo_riferimento = self.dao.id_primo_riferimento
168        newDao.id_secondo_riferimento = self.dao.id_secondo_riferimento
169        scadenze = []
170        scad = self.dao.scadenze
171        for s in scad:
172            daoTestataDocumentoScadenza = TestataDocumentoScadenza()
173            daoTestataDocumentoScadenza.id_testata_documento = newDao.id
174            daoTestataDocumentoScadenza.data = s.data
175            daoTestataDocumentoScadenza.importo = s.importo
176            daoTestataDocumentoScadenza.pagamento = s.pagamento
177            daoTestataDocumentoScadenza.data_pagamento= s.data_pagamento
178            daoTestataDocumentoScadenza.numero_scadenza = s.numero_scadenza
179            scadenze.append(daoTestataDocumentoScadenza)
180        newDao.scadenze = scadenze
181        tipoid = findIdFromCombobox(self.id_operazione_combobox)
182        tipo = Operazione().getRecord(id=tipoid)
183        if not newDao.numero:
184            valori = numeroRegistroGet(tipo=tipo.denominazione, date=self.data_documento_entry.get_text())
185            newDao.numero = valori[0]
186            newDao.registro_numerazione= valori[1]
187
188        newDao.persist()
189
190        res = TestataDocumento().getRecord(id=newDao.id)
191
192        msg = "Nuovo documento creato !\n\nIl nuovo documento e' il n. " + str(res.numero) + " del " + dateToString(res.data_documento) + " (" + newDao.operazione + ")"
193        dialog = gtk.MessageDialog(self.getTopLevel(), gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
194                                   gtk.MESSAGE_INFO, gtk.BUTTONS_OK, msg)
195        response = dialog.run()
196        dialog.destroy()
197        self.destroy()
198
199    def on_duplicazione_documento_window_close(self, widget, event=None):
200        self.destroy()
201        return None
Note: See TracBrowser for help on using the browser.