Changeset 867 for trunk/core/promogest/ui/DuplicazioneDocumento.py
- Timestamp:
- 03/10/10 10:42:23 (6 months ago)
- Files:
-
- 1 modified
-
trunk/core/promogest/ui/DuplicazioneDocumento.py (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/core/promogest/ui/DuplicazioneDocumento.py
r778 r867 6 6 # Author: Francesco Meloni <francesco@promotux.it> 7 7 8 import os 9 import gtk, gobject 8 10 import gtk 9 11 from GladeWidget import GladeWidget … … 11 13 from promogest import Environment 12 14 from promogest.dao.TestataDocumento import TestataDocumento 15 from promogest.dao.Magazzino import Magazzino 16 from promogest.dao.Listino import Listino 17 from promogest.dao.ListinoArticolo import ListinoArticolo 13 18 from promogest.dao.RigaDocumento import RigaDocumento 14 19 from promogest.dao.ScontoRigaDocumento import ScontoRigaDocumento 15 20 from promogest.dao.ScontoTestataDocumento import ScontoTestataDocumento 16 21 from promogest.dao.Operazione import Operazione 22 from promogest.dao.Fornitura import Fornitura 23 from AnagraficaDocumenti import * 17 24 if Environment.conf.hasPagamenti == True: 18 25 import promogest.modules.Pagamenti.dao.TestataDocumentoScadenza … … 21 28 22 29 30 23 31 class DuplicazioneDocumento(GladeWidget): 24 32 25 def __init__(self, daoDocumento ):33 def __init__(self, daoDocumento, anagraficaDocumenti): 26 34 27 35 self.dao = daoDocumento 28 29 GladeWidget.__init__(self, 'duplicazione_documento_window', 30 'duplicazione_documento.glade')36 self.anagrafica_documenti = anagraficaDocumenti 37 38 GladeWidget.__init__(self, 'duplicazione_documento_window', 'duplicazione_documento.glade') 31 39 self.placeWindow(self.getTopLevel()) 32 40 self.draw() 41 33 42 34 43 def draw(self): 35 44 # seleziona i tipi documento compatibili 36 45 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() 46 self.tipoPersonaGiuridica = operazione['tipoPersonaGiuridica'] 47 self.persona_label.set_text(self.tipoPersonaGiuridica.capitalize()) 48 self.id_persona_giuridica_customcombobox.setType(self.tipoPersonaGiuridica) 49 50 res = Environment.params['session'].query(Operazione).filter(Operazione.tipo_persona_giuridica != '').all() 51 44 52 model = gtk.ListStore(object, str, str) 45 53 for o in res: … … 57 65 #self.show_all() 58 66 67 listini = Environment.params['session'].query(Listino) 68 model = gtk.ListStore(object, int, str) 69 model.append((None, 0, '<Invariato>')) 70 model.append((None, 1, '<Azzera>')) 71 model.append((None, 2, '<Prezzo d\'acquisto>')) 72 indice_prezzo = 3; 73 for l in listini: 74 model.append((l, indice_prezzo, (l.denominazione or '')[0:30])) 75 indice_prezzo += 1 76 self.id_prezzo_combobox.clear() 77 renderer = gtk.CellRendererText() 78 self.id_prezzo_combobox.pack_start(renderer, True) 79 self.id_prezzo_combobox.add_attribute(renderer, 'text', 2) 80 self.id_prezzo_combobox.set_model(model) 81 self.id_prezzo_combobox.set_active(0) 82 83 #controlla che nel documento ci sia un solo magazzino 84 nMags = Environment.params['session'].query(Magazzino).count() 85 if nMags > 1: 86 if self.dao.numeroMagazzini == 1: 87 mags = Environment.params['session'].query(Magazzino)#.filter(Magazzino.id != self.dao.righe[0].id_magazzino) 88 model = gtk.ListStore(object, str) 89 for m in mags: 90 model.append((m, (m.denominazione or '')[0:30])) 91 self.id_magazzino_combobox.clear() 92 renderer = gtk.CellRendererText() 93 self.id_magazzino_combobox.pack_start(renderer, True) 94 self.id_magazzino_combobox.add_attribute(renderer, 'text', 1) 95 self.id_magazzino_combobox.set_model(model) 96 else: 97 #disabilito il cambio di magazzino 98 self.id_magazzino_combobox.set_sensitive(False) 99 else: 100 #disabilito il cambio di magazzino 101 self.id_magazzino_combobox.set_sensitive(False) 102 59 103 def on_confirm_button_clicked(self, button=None): 60 104 61 105 if (self.data_documento_entry.get_text() == ''): 62 106 obligatoryField(self.getTopLevel(), self.data_documento_entry) … … 70 114 newDao.data_documento = stringToDate(self.data_documento_entry.get_text()) 71 115 newDao.operazione = findIdFromCombobox(self.id_operazione_combobox) 72 newDao.id_cliente = self.dao.id_cliente 73 newDao.id_fornitore = self.dao.id_fornitore 116 if self.personaGiuridicaCambiata: 117 if (self.id_persona_giuridica_customcombobox.getId() is None): 118 obligatoryField(self.getTopLevel(), self.id_persona_giuridica_customcombobox) 119 if self.id_persona_giuridica_customcombobox.getType() == "cliente": 120 newDao.id_cliente = self.id_persona_giuridica_customcombobox.getId() 121 newDao.id_fornitore = None 122 else: 123 newDao.id_fornitore = self.id_persona_giuridica_customcombobox.getId() 124 newDao.id_cliente = None 125 else: 126 newDao.id_fornitore = self.dao.id_fornitore 127 newDao.id_cliente = self.dao.id_cliente 74 128 newDao.id_destinazione_merce = self.dao.id_destinazione_merce 75 129 newDao.id_pagamento = self.dao.id_pagamento 76 130 newDao.id_banca = self.dao.id_banca 131 newDao.numero = self.dao.numero 77 132 newDao.id_aliquota_iva_esenzione = self.dao.id_aliquota_iva_esenzione 78 133 newDao.protocollo = self.dao.protocollo … … 107 162 daoRiga.id_testata_documento = newDao.id 108 163 daoRiga.id_articolo = r.id_articolo 109 daoRiga.id_magazzino = r.id_magazzino 164 if self.id_magazzino_combobox.get_active() != -1: 165 magazzino_model = self.id_magazzino_combobox.get_model() 166 magazzino_active = self.id_magazzino_combobox.get_active() 167 daoRiga.id_magazzino = magazzino_model[magazzino_active][0].id 168 else: 169 daoRiga.id_magazzino = r.id_magazzino 110 170 daoRiga.descrizione = r.descrizione 111 daoRiga.id_listino = r.id_listino 171 172 #ricalcola prezzi 173 indice_prezzo_combobox = self.id_prezzo_combobox.get_model()[self.id_prezzo_combobox.get_active()][1] 174 if indice_prezzo_combobox == 0: 175 daoRiga.id_listino = r.id_listino 176 daoRiga.valore_unitario_lordo = r.valore_unitario_lordo 177 daoRiga.valore_unitario_netto = r.valore_unitario_netto 178 elif indice_prezzo_combobox == 1: 179 daoRiga.id_listino = r.id_listino 180 daoRiga.valore_unitario_lordo = 0 181 daoRiga.valore_unitario_netto = 0 182 elif indice_prezzo_combobox == 2: 183 fornitura = Environment.params['session'].query(Fornitura).filter(Fornitura.id_articolo == r.id_articolo).order_by(Fornitura.data_prezzo.asc()).all()[0] 184 daoRiga.id_listino = r.id_listino 185 daoRiga.valore_unitario_lordo = fornitura.prezzo_lordo 186 daoRiga.valore_unitario_netto = fornitura.prezzo_netto 187 else: 188 #ricalcola prezzi 189 listino = self.id_prezzo_combobox.get_model()[indice_prezzo_combobox][0] 190 listinoArticolo = Environment.params['session'].query(ListinoArticolo).filter(ListinoArticolo.id_listino == listino.id and r.id_articolo == ListinoArticolo.id_articolo).all() 191 if len(listinoArticolo) > 0: 192 daoRiga.id_listino = listinoArticolo[0].id_listino 193 daoRiga.valore_unitario_lordo = listinoArticolo[0].prezzo_dettaglio 194 daoRiga.valore_unitario_netto = listinoArticolo[0].prezzo_ingrosso 195 else: 196 daoRiga.id_listino = r.id_listino 197 daoRiga.valore_unitario_lordo = r.valore_unitario_lordo 198 daoRiga.valore_unitario_netto = r.valore_unitario_netto 199 112 200 daoRiga.percentuale_iva = r.percentuale_iva 113 daoRiga.applicazione_sconti = r.applicazione_sconti 201 daoRiga.applicazione_sconti = r.applicazione_sconti 114 202 daoRiga.quantita = r.quantita 115 203 daoRiga.id_multiplo = r.id_multiplo 116 204 daoRiga.moltiplicatore = r.moltiplicatore 117 daoRiga.valore_unitario_lordo = r.valore_unitario_lordo118 daoRiga.valore_unitario_netto = r.valore_unitario_netto119 205 #print "RIGA ARTICOLO", r.descrizione, r.id_articolo 120 206 if "SuMisura" in Environment.modulesList: … … 136 222 scontiRigaDocumento = [] 137 223 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) 224 if self.mantieni_sconti_checkbutton.get_active() : 225 for s in sco: 226 daoSconto = ScontoRigaDocumento() 227 daoSconto.valore = s.valore 228 daoSconto.tipo_sconto = s.tipo_sconto 229 scontiRigaDocumento.append(daoSconto) 143 230 daoRiga.scontiRigaDocumento = scontiRigaDocumento 144 231 righeDocumento.append(daoRiga) 232 145 233 newDao.righeDocumento = righeDocumento 146 234 scadenze = [] … … 181 269 tipoid = findIdFromCombobox(self.id_operazione_combobox) 182 270 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]271 #if not newDao.numero: 272 valori = numeroRegistroGet(tipo=tipo.denominazione, date=self.data_documento_entry.get_text()) 273 newDao.numero = valori[0] 274 newDao.registro_numerazione= valori[1] 187 275 188 276 newDao.persist() 189 277 278 #se il segno dell'operazione non Ú cambiato duplico il documento, altrimenti duplico ma apro la finestra di new/modifica documento 279 190 280 res = TestataDocumento().getRecord(id=newDao.id) 191 281 192 msg = "Nuovo documento creato !\n\nIl nuovo documento e' il n. " + str(res.numero) + " del " + dateToString(res.data_documento) + " (" + newDao.operazione + ") "282 msg = "Nuovo documento creato !\n\nIl nuovo documento e' il n. " + str(res.numero) + " del " + dateToString(res.data_documento) + " (" + newDao.operazione + ")\n" + "Lo vuoi modificare?" 193 283 dialog = gtk.MessageDialog(self.getTopLevel(), gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, 194 gtk.MESSAGE_INFO, gtk.BUTTONS_OK, msg)284 gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, msg) 195 285 response = dialog.run() 286 287 if response == gtk.RESPONSE_YES: 288 self.anagrafica_documenti.editElement.setVisible(True) 289 self.anagrafica_documenti.editElement.setDao(newDao) 290 291 self.anagrafica_documenti.editElement.id_persona_giuridica_customcombobox.set_sensitive(True) 292 self.anagrafica_documenti.editElement.setFocus() 293 196 294 dialog.destroy() 197 295 self.destroy() 198 296 297 def on_id_operazione_combobox_changed(self, widget, event=None): 298 tipoPersonaGiuridica = self.id_operazione_combobox.get_model()[self.id_operazione_combobox.get_active()][0].tipo_persona_giuridica 299 300 if self.tipoPersonaGiuridica == tipoPersonaGiuridica: 301 self.personaGiuridicaCambiata = False 302 else: 303 self.personaGiuridicaCambiata = True 304 305 if self.id_persona_giuridica_customcombobox.getType() == "fornitore" and tipoPersonaGiuridica == 'cliente': 306 self.id_persona_giuridica_customcombobox.refresh(clear=True, filter=True) 307 if self.id_persona_giuridica_customcombobox.getType() == "cliente" and tipoPersonaGiuridica == 'fornitore': 308 self.id_persona_giuridica_customcombobox.refresh(clear=True, filter=True) 309 310 self.persona_label.set_text(tipoPersonaGiuridica.capitalize()) 311 self.id_persona_giuridica_customcombobox.setType(tipoPersonaGiuridica) 312 199 313 def on_duplicazione_documento_window_close(self, widget, event=None): 200 314 self.destroy()
