def on_crea_fattura_button_clicked(self, button): """ RIGA DOCUMENTO: id, valore_unitario_netto, valore_unitario_lordo, quantita, moltiplicatore, applicazione_sconti, percentuale_iva, descrizione, id_articolo, id_magazzino, id_multiplo, id_listino, id_iva, id_riga_padre RIGA SCONTRINO: id, prezzo, prezzo_scontato, quantita, descrizione, id_testata_scontrino, id_articolo TODO: Vanno gestiti gli sconti """ if not self.daoTse: messageInfo(msg="Nessuno scontrino selezionato") return if self.daoTse and not self.daoTse.id_cliente_testata_scontrino: if self.id_cliente_emessi_customcombobox.getId(): a = TestataScontrinoCliente() a.id_cliente = self.id_cliente_emessi_customcombobox.getId() a.id_testata_scontrino = self.daoTse.id a.persist() else: messageInfo(msg="Scontrino selezionato, ma nessun cliente assegnato") return if not findStrFromCombobox(self.operazione_combobox,0): obligatoryField(self.getTopLevel(), self.operazione_combobox, msg="SELEZIONA IL TIPO DOCUMENTO") one_day = datetime.timedelta(days=1) proviamo = datetime.datetime(self.daoTse.data_inserimento.year,self.daoTse.data_inserimento.month, self.daoTse.data_inserimento.day) listascontrini = TestataScontrino().select(daData=proviamo, aData=proviamo+one_day, batchSize=None, orderBy="data_inserimento") a = [i for i,x in enumerate(listascontrini) if x == self.daoTse] if a: a = a[0] else: a=0 posizione= a + 1 note = "Rif. Scontrino" + " n. " + str(posizione) + " del " + dateToString(self.daoTse.data_inserimento) newDao = TestataDocumento() newDao.data_documento = datetime.datetime.now() newDao.operazione = findStrFromCombobox(self.operazione_combobox,0) newDao.id_cliente = self.id_cliente_emessi_customcombobox.getId() newDao.note_pie_pagina = note #newDao.applicazione_sconti = self.dao.applicazione_sconti #sconti = [] #sco = self.dao.sconti or [] scontiRigaDocumento=[] scontiSuTotale=[] righeDocumento=[] #for s in sco: #daoSconto = ScontoTestataDocumento() #daoSconto.valore = s.valore #daoSconto.tipo_sconto = s.tipo_sconto #scontiSuTotale.append(daoSconto) newDao.scontiSuTotale = scontiSuTotale #righe = [] rig = self.daoTse.righe for r in rig: daoRiga = RigaDocumento() daoRiga.id_testata_documento = newDao.id daoRiga.id_articolo = r.id_articolo daoRiga.id_magazzino = self.daoTse.id_magazzino daoRiga.descrizione = r.descrizione # Copia il campo iva arto = leggiArticolo(r.id_articolo) daoRiga.id_iva = arto["idAliquotaIva"] #ricalcola prezzi daoRiga.id_listino = self.ricercaListino() imponibile = float(r.prezzo)/(1+float(arto["percentualeAliquotaIva"])/100) imponibile_scontato = float(r.prezzo_scontato)/(1+float(arto["percentualeAliquotaIva"])/100) daoRiga.valore_unitario_lordo = imponibile or 0 daoRiga.valore_unitario_netto = imponibile_scontato daoRiga.percentuale_iva = arto["percentualeAliquotaIva"] #daoRiga.applicazione_sconti = r.applicazione_sconti daoRiga.quantita = r.quantita daoRiga.id_multiplo = None daoRiga.moltiplicatore = 1 #sconti = [] scontiRigaDocumento = [] #sco = r.sconti #for s in sco: #daoSconto = ScontoRigaDocumento() #daoSconto.valore = s.valore #daoSconto.tipo_sconto = s.tipo_sconto #scontiRigaDocumento.append(daoSconto) daoRiga.scontiRigaDocumento = scontiRigaDocumento righeDocumento.append(daoRiga) newDao.righeDocumento = righeDocumento tipoid = findStrFromCombobox(self.operazione_combobox,0) #tipo = Operazione().getRecord(id=tipoid) #if not newDao.numero: valori = numeroRegistroGet(tipo=tipoid, date=self.daoTse.data_inserimento) newDao.numero = valori[0] newDao.registro_numerazione= valori[1] newDao.persist() res = TestataDocumento().getRecord(id=newDao.id) msg = "Documento creato da scontrino !\n\nIl nuovo documento e' il n. " + str(res.numero) + " del " + dateToString(res.data_documento) + " (" + newDao.operazione + ")\n" + "Lo vuoi modificare?" if YesNoDialog(msg=msg, transient=self.getTopLevel()): from promogest.ui.anagDocumenti.AnagraficaDocumenti import AnagraficaDocumenti anag = AnagraficaDocumenti() anagWindow = anag.getTopLevel() anagWindow.show_all() anag.editElement.setVisible(True) anag.editElement.setDao(newDao) anag.editElement.id_persona_giuridica_customcombobox.set_sensitive(True) anag.editElement.setFocus() self.destroy()
def on_importa_json_button_clicked(self, button): a = """{"data":"2013-11-18 17:54:52", "promogest_id":590, "utente":"RUDOLF DISTRIBUZIONE CAGLIARI", "email":"*****@*****.**", "prodotti":{"RUDSYLVIASan4645":{"qty":"5","price":"7.50"}, "RUDSYLVIASan81045":{"qty":"5","price":"7.50"}, "RUDSYLVIASan121445":{"qty":"5","price":"7.50"}, "RUDPAQUITABLO8-1045":{"qty":"3","price":"9.50"}} }""" text_buffer = self.importa_json_textview.get_buffer() note = text_buffer.get_text(text_buffer.get_start_iter(), text_buffer.get_end_iter(), True) print "NOTE", note try: dati = json.JSONDecoder(object_pairs_hook=OrderedDict).decode(note) except: print "ERRORE DATI DELLA TEXTVIEW NON JSON" messageError("ERRORE DATI NELLA TEXTVIEW NON JSON") return print type(dati["prodotti"]), dati["utente"] #data_ordine = dati["data"] # datetime.datetime.now()'Jun 1 2005 1:33PM' data_ordine = datetime.strptime(dati["data"], '%Y-%m-%d %H:%M:%S') daoCliente = Cliente().getRecord(id=int(dati["promogest_id"])) pricelist = Listino().select(id=daoCliente.id_listino) newDao = TestataDocumento() newDao.data_documento = data_ordine newDao.data_inserimento = data_ordine newDao.operazione = "Ordine da cliente" newDao.id_cliente = daoCliente.id newDao.id_fornitore = None if daoCliente.dm: newDao.id_destinazione_merce = daoCliente.dm[0].id else: newDao.id_destinazione_merce = None #if tipoPagamento != "checked": #contrassegno #newDao.id_pagamento = 4 #else: #newDao.id_pagamento = 5 newDao.id_banca = None newDao.id_aliquota_iva_esenzione = None newDao.protocollo = "" newDao.causale_trasporto = "" newDao.aspetto_esteriore_beni = "" newDao.inizio_trasporto = None newDao.fine_trasporto = None newDao.id_vettore = None newDao.incaricato_trasporto = None newDao.totale_colli = None newDao.totale_peso = None newDao.note_interne = "Ordine da WEB" newDao.note_pie_pagina = "" newDao.applicazione_sconti = "scalare" righeDocumento=[] totale = 0 #print " LORO ORDINE", OrderedDict(dati["prodotti"]).items() for k,v in OrderedDict(dati["prodotti"]).items(): #print " ERRREEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE", k,v,int(dati["prodotti"].items().index((k,v)))+1 quantita = int(v["qty"]) prezzo = float(v["price"]) art = Articolo().select(codiceEM=k) if art: idArticolo = art[0].id else: raise "non trovo l'articolo nel db" #prezzo = leggiListino(pricelist[0].id, idArticolo, tiny=True)["prezzoIngrosso"] articolo = leggiArticolo(idArticolo) daoRiga = RigaDocumento() daoRiga.id_testata_documento = newDao.id daoRiga.id_articolo = idArticolo daoRiga.id_magazzino = 3 daoRiga.descrizione = articolo["denominazione"] daoRiga.id_iva = articolo["idAliquotaIva"] daoRiga.id_listino = pricelist[0].id daoRiga.valore_unitario_lordo = prezzo daoRiga.valore_unitario_netto = prezzo daoRiga.percentuale_iva = articolo["percentualeAliquotaIva"] daoRiga.applicazione_sconti = [] daoRiga.quantita = quantita daoRiga.id_multiplo = None daoRiga.moltiplicatore = 1 daoRiga.posizione = int(dati["prodotti"].items().index((k,v)))+1 daoRiga.scontiRigaDocumento = [] righeDocumento.append(daoRiga) parziale = float(quantita) * float(leggiListino(pricelist[0].id, idArticolo, tiny=True)["prezzoDettaglio"]) totale += parziale newDao.righeDocumento = righeDocumento newDao.totale_pagato = None newDao.totale_sospeso = None newDao.documento_saldato = False newDao.id_primo_riferimento = None newDao.id_secondo_riferimento = None tipo = "Ordine da cliente" valori = numeroRegistroGet(tipo=tipo, date=data_ordine) newDao.numero = valori[0] newDao.registro_numerazione= valori[1] if len(righeDocumento) > 0: newDao.persist() messageInfo(msg="ORDINE INSERITO") self.destroy()