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()
def on_confirm_button_clicked(self, button=None): if (self.data_documento_entry.get_text() == ''): obligatoryField(self.getTopLevel(), self.data_documento_entry) if (findIdFromCombobox(self.id_operazione_combobox) is None): obligatoryField(self.getTopLevel(), self.id_operazione_combobox) if self.note_check.get_active(): note = "Rif. " + self.dao.operazione + " n. " + str(self.dao.numero) + " del " + dateToString(self.dao.data_documento) else: note = "" mantieni_pagamenti = self.mantieni_pagamenti_checkbutton.get_active() associa_doc_padre_figlio = self.associa_doc_padre_figlio_checkbutton.get_active() newDao = TestataDocumento() newDao.data_documento = stringToDate(self.data_documento_entry.get_text()) newDao.operazione = findIdFromCombobox(self.id_operazione_combobox) if self.personaGiuridicaCambiata: if not self.id_persona_giuridica_customcombobox.getId(): obligatoryField(self.getTopLevel(), self.id_persona_giuridica_customcombobox) if self.id_persona_giuridica_customcombobox.getType() == "cliente": newDao.id_cliente = self.id_persona_giuridica_customcombobox.getId() newDao.id_fornitore = None else: newDao.id_fornitore = self.id_persona_giuridica_customcombobox.getId() newDao.id_cliente = None else: if not self.id_persona_giuridica_customcombobox.getId(): newDao.id_fornitore = self.dao.id_fornitore newDao.id_cliente = self.dao.id_cliente else: if self.id_persona_giuridica_customcombobox.getType() == "cliente": newDao.id_cliente = self.id_persona_giuridica_customcombobox.getId() newDao.id_fornitore = None else: newDao.id_fornitore = self.id_persona_giuridica_customcombobox.getId() newDao.id_cliente = None newDao.id_destinazione_merce = self.dao.id_destinazione_merce newDao.id_pagamento = self.dao.id_pagamento newDao.id_banca = self.dao.id_banca newDao.numero = self.dao.numero newDao.id_aliquota_iva_esenzione = self.dao.id_aliquota_iva_esenzione newDao.protocollo = self.dao.protocollo newDao.causale_trasporto = self.dao.causale_trasporto newDao.aspetto_esteriore_beni = self.dao.aspetto_esteriore_beni newDao.inizio_trasporto = self.dao.inizio_trasporto newDao.fine_trasporto = self.dao.fine_trasporto newDao.id_vettore =self.dao.id_vettore newDao.incaricato_trasporto = self.dao.incaricato_trasporto newDao.totale_colli = self.dao.totale_colli newDao.totale_peso = self.dao.totale_peso newDao.note_interne = self.dao.note_interne newDao.note_pie_pagina = self.dao.note_pie_pagina + " " + note newDao.applicazione_sconti = self.dao.applicazione_sconti newDao.ripartire_importo = self.dao.ripartire_importo newDao.costo_da_ripartire = self.dao.costo_da_ripartire tipoid = findIdFromCombobox(self.id_operazione_combobox) tipo = Operazione().getRecord(id=tipoid) #if not newDao.numero: valori = numeroRegistroGet(tipo=tipo.denominazione, date=stringToDate(self.data_documento_entry.get_text())) newDao.numero = valori[0] newDao.registro_numerazione= valori[1] #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.dao.righe #operazione = leggiOperazione(tipo) if tipo.segno != '' and tipo.segno is not None: tipoDOC = "MOV" else: tipoDOC = "DOC" scontiRigaMovimento =[] scontiRigaDocumento =[] for r in rig: if (tipoDOC == "MOV" and r.id_articolo == None) or tipoDOC == "DOC": daoRiga = RigaDocumento() sconti = [] sco = r.sconti if self.mantieni_sconti_checkbutton.get_active() : for s in sco: daoSconto = ScontoRigaDocumento() daoSconto.valore = s.valore daoSconto.tipo_sconto = s.tipo_sconto scontiRigaDocumento.append(daoSconto) daoRiga.scontiRigaDocumento = scontiRigaDocumento scontiRigaDocumento =[] else: daoRiga = RigaMovimento() sconti =[] sco = r.sconti if self.mantieni_sconti_checkbutton.get_active() : for s in sco: daoSconto = ScontoRigaMovimento() daoSconto.valore = s.valore daoSconto.tipo_sconto = s.tipo_sconto scontiRigaMovimento.append(daoSconto) daoRiga.scontiRigheMovimento = scontiRigaMovimento scontiRigaMovimento =[] #daoRiga.id_testata_documento = newDao.id daoRiga.id_articolo = r.id_articolo if self.id_magazzino_combobox.get_active() != -1 and r.id_magazzino !=None: iddi = findIdFromCombobox(self.id_magazzino_combobox) daoRiga.id_magazzino = iddi else: daoRiga.id_magazzino = r.id_magazzino daoRiga.descrizione = r.descrizione # Copia il campo iva daoRiga.id_iva = r.id_iva #ricalcola prezzi indice_prezzo_combobox = self.id_prezzo_combobox.get_model()[self.id_prezzo_combobox.get_active()][1] if indice_prezzo_combobox == 0: daoRiga.id_listino = r.id_listino daoRiga.valore_unitario_lordo = r.valore_unitario_lordo or 0 daoRiga.valore_unitario_netto = r.valore_unitario_netto or 0 elif indice_prezzo_combobox == 1: daoRiga.id_listino = r.id_listino daoRiga.valore_unitario_lordo = 0 daoRiga.valore_unitario_netto = 0 elif indice_prezzo_combobox == 2: fornitura = Environment.params['session'].query(Fornitura).filter(Fornitura.id_articolo == r.id_articolo).order_by(Fornitura.data_prezzo.asc()).all() if fornitura: fornitura = fornitura[0] daoRiga.valore_unitario_lordo = fornitura.prezzo_lordo daoRiga.valore_unitario_netto = fornitura.prezzo_netto daoRiga.id_listino = r.id_listino else: #ricalcola prezzi listino = self.id_prezzo_combobox.get_model()[indice_prezzo_combobox][0] listinoArticolo = Environment.params['session'].query(ListinoArticolo).filter(ListinoArticolo.id_listino == listino.id and r.id_articolo == ListinoArticolo.id_articolo).all() if len(listinoArticolo) > 0: daoRiga.id_listino = listinoArticolo[0].id_listino daoRiga.valore_unitario_lordo = listinoArticolo[0].prezzo_dettaglio daoRiga.valore_unitario_netto = listinoArticolo[0].prezzo_ingrosso else: daoRiga.id_listino = r.id_listino daoRiga.valore_unitario_lordo = r.valore_unitario_lordo daoRiga.valore_unitario_netto = r.valore_unitario_netto daoRiga.percentuale_iva = r.percentuale_iva daoRiga.applicazione_sconti = r.applicazione_sconti daoRiga.quantita = r.quantita daoRiga.id_multiplo = r.id_multiplo daoRiga.moltiplicatore = r.moltiplicatore if posso("SM"): from promogest.modules.SuMisura.dao.MisuraPezzo import MisuraPezzo #try: daoMisuraPezzo = MisuraPezzo() if r.misura_pezzo: daoMisuraPezzo.altezza = r.misura_pezzo[0].altezza daoMisuraPezzo.larghezza = r.misura_pezzo[0].larghezza daoMisuraPezzo.moltiplicatore = r.misura_pezzo[0].moltiplicatore else: daoMisuraPezzo.altezza = 0 daoMisuraPezzo.larghezza = 0 daoMisuraPezzo.moltiplicatore = 0 daoRiga.misura_pezzo = [daoMisuraPezzo] #except : #pass righeDocumento.append(daoRiga) #return newDao.righeDocumento = righeDocumento scadenze = [] if mantieni_pagamenti: scad = self.dao.scadenze for s in scad: daoTestataDocumentoScadenza = TestataDocumentoScadenza() daoTestataDocumentoScadenza.id_testata_documento = newDao.id daoTestataDocumentoScadenza.data = s.data daoTestataDocumentoScadenza.importo = s.importo daoTestataDocumentoScadenza.pagamento = s.pagamento daoTestataDocumentoScadenza.id_banca = s.id_banca daoTestataDocumentoScadenza.data_pagamento= s.data_pagamento daoTestataDocumentoScadenza.note_per_primanota = s.note_per_primanota daoTestataDocumentoScadenza.numero_scadenza = s.numero_scadenza scadenze.append(daoTestataDocumentoScadenza) newDao.scadenze = scadenze newDao.totale_pagato = 0 newDao.totale_sospeso = 0 newDao.documento_saldato = False #newDao.id_primo_riferimento = self.dao.id_primo_riferimento #newDao.id_secondo_riferimento = self.dao.id_secondo_riferimento else: newDao.totale_pagato = Decimal(0) newDao.totale_sospeso = self.dao._totaleScontato newDao.documento_saldato = False newDao.persist() if associa_doc_padre_figlio: add_relazione(self.dao.id, newDao.id) if posso("GN"): if self.dao.data_inizio_noleggio or self.dao.data_fine_noleggio: from promogest.modules.GestioneNoleggio.dao.TestataGestioneNoleggio import TestataGestioneNoleggio newTestataGestioneNoleggio = TestataGestioneNoleggio() newTestataGestioneNoleggio.data_inizio_noleggio = self.dao.data_inizio_noleggio newTestataGestioneNoleggio.data_fine_noleggio = self.dao.data_fine_noleggio newTestataGestioneNoleggio.id_testata_documento = newDao.id newTestataGestioneNoleggio.persist() #se il segno dell'operazione non è cambiato duplico il documento, altrimenti duplico ma apro la finestra di new/modifica documento msg = "Nuovo documento creato !\n\nIl nuovo documento e' il n. " + str(newDao.numero) + " del " + dateToString(newDao.data_documento) + " (" + newDao.operazione + ")\n" + "Lo vuoi modificare?" if YesNoDialog(msg=msg, transient=self.getTopLevel()): self.anagrafica_documenti.editElement.setVisible(True) self.anagrafica_documenti.editElement.setDao(newDao) self.anagrafica_documenti.editElement.id_persona_giuridica_customcombobox.set_sensitive(True) self.anagrafica_documenti.editElement.setFocus() self.destroy()
def do_fatt_diff(lista_documenti, data_documento, operazione, no_rif_righe_cumul=False, note=False, data_consegna=False, no_row=False, riga_tratteggiata = False,riga_vuota = False, gui=False): fattura = None logfattdiff = '' nomi = getNames(lista_documenti) #parso tutta la lista dei documenti e prendo le rag sociali, elminando i duplicati lista_documenti = sortDoc(nomi, lista_documenti) for ragsoc in nomi: if gui: pbar(gui.pbar_df_clienti,parziale=nomi.index(ragsoc), totale=len(nomi), text=ragsoc, noeta=False) # in nomi ci sono le ragioni sociali dei clienti # self.listdoc contiene un dizionario che ha come chiave il cliente #e come valore una lista di gtkTreeiter a lui riferiti for ddt in lista_documenti[ragsoc]: esiste, msg = daoGiaPresente(InformazioniFatturazioneDocumento()\ .select(id_fattura=ddt[0].id)) if esiste and operazione in ["Fattura vendita","Fattura differita vendita","Fattura differita vendita ford"]: logfattdiff += msg else: #ok il ddt non è già presente in nessuna fatturato # usiamo i suoi dati per fare una fattura fattura = newSingleDoc(data_documento, operazione, "", ddt[0]) #break if fattura: righe = [] ddt_id = [] for ddt in lista_documenti[ragsoc]: if gui: pbar(gui.pbar_df_documenti,parziale=lista_documenti[ragsoc].index(ddt), totale=len(lista_documenti[ragsoc]), text=str("DDT "+ ddt[2]), noeta=False) esiste, msg = daoGiaPresente(InformazioniFatturazioneDocumento()\ .select(id_ddt=ddt[0].id)) if esiste: logfattdiff += msg else: # Ok, ora posso registrare le righe dei documenti dao_da_fatturare = ddt[0] # Inserisco il riferimento: if no_rif_righe_cumul: righe += dao_da_fatturare.righe[:] else: riga_riferimento = "Rif. " + str(dao_da_fatturare.operazione) + " n. " + str( dao_da_fatturare.numero) + " del " + dateToString( dao_da_fatturare.data_documento ) if data_consegna and dao_da_fatturare.inizio_trasporto: riga_riferimento = riga_riferimento + "\nIn.Tr. il "+ dateToString( dao_da_fatturare.inizio_trasporto) if note and dao_da_fatturare.note_pie_pagina != "": riga_riferimento = riga_riferimento + "\n" + dao_da_fatturare.note_pie_pagina #se no_row è true inseriscei l dettaglio righe if no_row: daoRiga = RigaDocumento() daoRiga.descrizione = riga_riferimento daoRiga.quantita = 0.0 daoRiga.valore_unitario_lordo = 0.0 daoRiga.percentuale_iva = 0.0 daoRiga.moltiplicatore = 0.0 daoRiga.valore_unitario_netto = 0.0 daoRiga.scontiRigaDocumento = [] righe.append(daoRiga) for r in dao_da_fatturare.righe: if gui: pbar(gui.pbar_df_righe,parziale=dao_da_fatturare.righe.index(r), totale=len(dao_da_fatturare.righe), text=r.descrizione, noeta=False) daoRiga = RigaDocumento() daoRiga.id_articolo = r.id_articolo daoRiga.id_magazzino = r.id_magazzino daoRiga.descrizione = ". "+ r.descrizione daoRiga.id_listino = r.id_listino daoRiga.id_iva = r.id_iva daoRiga.percentuale_iva = r.percentuale_iva daoRiga.applicazione_sconti = r.applicazione_sconti daoRiga.quantita = r.quantita daoRiga.id_multiplo = r.id_multiplo daoRiga.moltiplicatore = r.moltiplicatore daoRiga.valore_unitario_lordo = r.valore_unitario_lordo daoRiga.valore_unitario_netto = r.valore_unitario_netto # daoRiga.misura_pezzo = r.misura_pezzo sconti = [] for s in r.sconti: daoSconto = ScontoRigaDocumento() daoSconto.valore = s.valore daoSconto.tipo_sconto = s.tipo_sconto sconti.append(daoSconto) daoRiga.scontiRigaDocumento = sconti righe.append(daoRiga) if riga_tratteggiata: daoRiga = RigaDocumento() daoRiga.descrizione = " -------------------------------------------" daoRiga.quantita = 0 daoRiga.valore_unitario_lordo = 0 daoRiga.percentuale_iva = 0 daoRiga.moltiplicatore = 0 daoRiga.valore_unitario_netto = 0 daoRiga.scontiRigaDocumento = [] righe.append(daoRiga) if riga_vuota: daoRiga = RigaDocumento() daoRiga.descrizione = " " daoRiga.quantita = 0 daoRiga.valore_unitario_lordo = 0 daoRiga.percentuale_iva = 0 daoRiga.moltiplicatore = 0 daoRiga.valore_unitario_netto = 0 daoRiga.scontiRigaDocumento = [] righe.append(daoRiga) else: #percentuale_iva = (dao_da_fatturare._totaleScontato - dao_da_fatturare._totaleImponibileScontato) *100 / dao_da_fatturare._totaleScontato dao_da_fatturare.totali daoRiga = RigaDocumento() daoRiga.descrizione = riga_riferimento daoRiga.quantita = 0 daoRiga.valore_unitario_lordo = 0 daoRiga.percentuale_iva = 0 daoRiga.moltiplicatore = 0 daoRiga.valore_unitario_netto = 0 daoRiga.scontiRigaDocumento = [] righe.append(daoRiga) for t in dao_da_fatturare._castellettoIva: daoRiga = RigaDocumento() daoRiga.descrizione = ". Articoli con aliquota IVA: "+str(mN(t["percentuale"],1))+"%" daoRiga.quantita = 1 daoRiga.valore_unitario_lordo = t["totale"] daoRiga.percentuale_iva = t["percentuale"] daoRiga.moltiplicatore = 0 daoRiga.valore_unitario_netto = t["imponibile"] daoRiga.scontiRigaDocumento = [] righe.append(daoRiga) ddt_id.append(dao_da_fatturare.id) if righe: if no_rif_righe_cumul: righeDict = {} rrighe = [] for r in righe: if r.id_articolo: if r.id_articolo in righeDict: a = righeDict[r.id_articolo] a.append(r) righeDict[r.id_articolo] = a else: righeDict[r.id_articolo] = [r] else: rrighe.append(r) righe = [] for r in rrighe: daoRiga = RigaDocumento() daoRiga.id_articolo = r.id_articolo daoRiga.id_magazzino = r.id_magazzino daoRiga.descrizione = r.descrizione daoRiga.id_listino = r.id_listino daoRiga.percentuale_iva = r.percentuale_iva daoRiga.applicazione_sconti = r.applicazione_sconti daoRiga.quantita = r.quantita daoRiga.id_multiplo = r.id_multiplo daoRiga.moltiplicatore = r.moltiplicatore daoRiga.valore_unitario_lordo = r.valore_unitario_lordo daoRiga.valore_unitario_netto = r.valore_unitario_netto # daoRiga.misura_pezzo = r.misura_pezzo sconti = [] for s in r.sconti: daoSconto = ScontoRigaDocumento() daoSconto.valore = s.valore daoSconto.tipo_sconto = s.tipo_sconto sconti.append(daoSconto) daoRiga.scontiRigaDocumento = sconti righe.insert(0, daoRiga) for k,v in righeDict.iteritems(): if len(v) ==1: r = v[0] daoRiga = RigaDocumento() #daoRiga.id_articolo = r.id_articolo daoRiga.id_magazzino = r.id_magazzino daoRiga.descrizione = r.descrizione daoRiga.id_listino = r.id_listino daoRiga.percentuale_iva = r.percentuale_iva daoRiga.applicazione_sconti = r.applicazione_sconti daoRiga.quantita = r.quantita daoRiga.id_multiplo = r.id_multiplo daoRiga.moltiplicatore = r.moltiplicatore daoRiga.valore_unitario_lordo = r.valore_unitario_lordo daoRiga.valore_unitario_netto = r.valore_unitario_netto # daoRiga.misura_pezzo = r.misura_pezzo sconti = [] for s in r.sconti: daoSconto = ScontoRigaDocumento() daoSconto.valore = s.valore daoSconto.tipo_sconto = s.tipo_sconto sconti.append(daoSconto) daoRiga.scontiRigaDocumento = sconti righe.insert(0, daoRiga) else: # Questa è la situazione di più righe da accorpare quantita = 0 vul = 0 vun = 0 for a in v: if a.sconti: daoRiga = RigaDocumento() daoRiga.id_articolo = a.id_articolo daoRiga.id_magazzino = a.id_magazzino daoRiga.descrizione = a.descrizione daoRiga.id_listino = a.id_listino daoRiga.percentuale_iva = a.percentuale_iva daoRiga.applicazione_sconti = a.applicazione_sconti daoRiga.quantita = a.quantita daoRiga.id_multiplo = a.id_multiplo daoRiga.moltiplicatore = a.moltiplicatore daoRiga.valore_unitario_lordo = a.valore_unitario_lordo daoRiga.valore_unitario_netto = a.valore_unitario_netto # daoRiga.misura_pezzo = r.misura_pezzo sconti = [] for s in a.sconti: daoSconto = ScontoRigaDocumento() daoSconto.valore = s.valore daoSconto.tipo_sconto = s.tipo_sconto sconti.append(daoSconto) daoRiga.scontiRigaDocumento = sconti righe.insert(0, daoRiga) continue else: quantita += a.quantita #vul = a.valore_unitario_lordo #vun = a.valore_unitario_netto daoRiga = RigaDocumento() #daoRiga.id_articolo = a.id_articolo daoRiga.id_magazzino = a.id_magazzino daoRiga.descrizione = a.descrizione daoRiga.id_listino = a.id_listino daoRiga.percentuale_iva = a.percentuale_iva daoRiga.applicazione_sconti = a.applicazione_sconti daoRiga.quantita = quantita daoRiga.id_multiplo = a.id_multiplo daoRiga.moltiplicatore = a.moltiplicatore daoRiga.valore_unitario_lordo = a.valore_unitario_lordo daoRiga.valore_unitario_netto = a.valore_unitario_netto # daoRiga.misura_pezzo = r.misura_pezzo sconti = [] for s in a.sconti: daoSconto = ScontoRigaDocumento() daoSconto.valore = s.valore daoSconto.tipo_sconto = s.tipo_sconto sconti.append(daoSconto) daoRiga.scontiRigaDocumento = sconti righe.insert(0, daoRiga) #return for r in righe: r.posizione = righe.index(r)+1 fattura.righeDocumento = righe if not fattura.numero: valori = numeroRegistroGet(tipo=operazione, date=stringToDate(data_documento)) fattura.numero = valori[0] fattura.registro_numerazione= valori[1] fattura.persist() # calcolo i totali, quindi assegno come importo # dell'unica scadenza, l'importo del documento fattura.totali if posso('PA'): scad = fattura.scadenze if scad: scad[0].importo = fattura._totaleScontato for d in ddt_id: info = InformazioniFatturazioneDocumento() info.id_fattura = fattura.id info.id_ddt = d info.persist() else: messageInfo(msg= "NON CI SONO RIGHE NON CREO NIENTE") if gui: pbar(gui.pbar_df_clienti,stop=True) pbar(gui.pbar_df_documenti,stop=True) pbar(gui.pbar_df_righe,stop=True) if logfattdiff: messageInfo('I seguenti documenti non sono stati elaborati:\n' + logfattdiff) if fattura: messageInfo("Nuovo documento creato!") else: messageInfo("Non è stato creato alcun documento in quanto non sono state trovate righe da inserire.")